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" ? (