import { type ReactNode } from "react";
import { Box, Text } from "../../../../ui";
import { Button, Checkbox } from "../../../../components/ui";
import { SelectField } from "../../../../components/ui/select-field";
import { colors } from "../../../../theme/colors";
import type {
SeriesEditorActionModel,
SeriesEditorFieldId,
SeriesEditorFieldModel,
} from "./model";
function DesktopEditorField({
label,
children,
width = "calc(50% - 6px)",
}: {
label: string;
children: ReactNode;
width?: string;
}) {
return (
{label}
{children}
);
}
const SECURITY_FIELD_ORDER: SeriesEditorFieldId[] = [
"style",
"transform",
"axis",
"period",
"timing",
"panel",
"scale",
"visibility",
];
const NON_SECURITY_FIELD_ORDER: SeriesEditorFieldId[] = [
"style",
"transform",
"axis",
"visibility",
"panel",
"scale",
];
export function DesktopSeriesEditorFields({ fields }: { fields: SeriesEditorFieldModel[] }) {
const fieldById = new Map(fields.map((field) => [field.id, field]));
const isSecurity = fieldById.has("period");
const orderedFields = (isSecurity ? SECURITY_FIELD_ORDER : NON_SECURITY_FIELD_ORDER)
.map((id) => fieldById.get(id))
.filter((field): field is SeriesEditorFieldModel => !!field);
return (
{orderedFields.map((field) => (
{field.kind === "visibility" ? (
field.onChange(checked ? "shown" : "hidden")}
/>
) : field.kind === "panel" ? (
) : (
)}
))}
);
}
export function DesktopSeriesEditorActions({ actions }: { actions: SeriesEditorActionModel[] }) {
const seriesActions = actions.filter((action) => action.group === "series");
const confirmActions = actions.filter((action) => action.group === "confirm");
return (
{seriesActions.map((action) => (
))}
{confirmActions.map((action) => (
))}
);
}