29 lines
1.1 KiB
TypeScript
29 lines
1.1 KiB
TypeScript
import { IconTransform } from "@tabler/icons-react";
|
|
import { z } from "zod/v4";
|
|
|
|
import { capitalize } from "@homarr/common";
|
|
import { getIntegrationKindsByCategory } from "@homarr/definitions";
|
|
|
|
import { createWidgetDefinition, matchesWidgetRuntimeQuery } from "../definition";
|
|
import { optionsBuilder } from "../options";
|
|
|
|
export const views = ["workers", "queue", "statistics"] as const;
|
|
|
|
export const { componentLoader, definition } = createWidgetDefinition("mediaTranscoding", {
|
|
icon: IconTransform,
|
|
queryKey: [["widget", "mediaTranscoding", "getDataAsync"]],
|
|
queryMatcher: matchesWidgetRuntimeQuery,
|
|
maxIntegrations: 1,
|
|
refetchInterval: null,
|
|
createOptions() {
|
|
return optionsBuilder.from((factory) => ({
|
|
defaultView: factory.select({
|
|
defaultValue: "statistics",
|
|
options: views.map((view) => ({ label: capitalize(view), value: view })),
|
|
}),
|
|
queuePageSize: factory.number({ defaultValue: 10, validate: z.number().min(1).max(30) }),
|
|
}));
|
|
},
|
|
supportedIntegrations: getIntegrationKindsByCategory("mediaTranscoding"),
|
|
}).withDynamicImport(() => import("./component"));
|