@firecms/collection_editor 3.1.0-canary.1df3b2c → 3.1.0-canary.24c8270
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/index.es.js +372 -325
- package/dist/index.es.js.map +1 -1
- package/dist/index.umd.js +371 -324
- package/dist/index.umd.js.map +1 -1
- package/dist/ui/collection_editor/AICollectionGeneratorPopover.d.ts +5 -1
- package/dist/ui/collection_editor/CollectionEditorDialog.d.ts +4 -0
- package/dist/ui/collection_editor/CollectionEditorWelcomeView.d.ts +2 -1
- package/package.json +12 -12
- package/src/ConfigControllerProvider.tsx +1 -0
- package/src/ui/collection_editor/AICollectionGeneratorPopover.tsx +18 -1
- package/src/ui/collection_editor/CollectionDetailsForm.tsx +3 -2
- package/src/ui/collection_editor/CollectionEditorDialog.tsx +13 -4
- package/src/ui/collection_editor/CollectionEditorWelcomeView.tsx +4 -1
- package/src/ui/collection_editor/GeneralSettingsForm.tsx +9 -7
- package/src/ui/collection_editor/PropertyEditView.tsx +1 -1
package/dist/index.umd.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.umd.js","sources":["../src/ui/collection_editor/CollectionYupValidation.tsx","../src/ui/collection_editor/GeneralSettingsForm.tsx","../src/ui/collection_editor/LayoutModeSwitch.tsx","../src/ui/collection_editor/ViewModeSwitch.tsx","../src/ui/collection_editor/EnumForm.tsx","../src/ui/collection_editor/SwitchControl.tsx","../src/ui/collection_editor/properties/validation/GeneralPropertyValidation.tsx","../src/ui/collection_editor/properties/validation/StringPropertyValidation.tsx","../src/ui/collection_editor/properties/validation/ArrayPropertyValidation.tsx","../src/ui/collection_editor/properties/validation/ValidationPanel.tsx","../src/ui/collection_editor/properties/EnumPropertyField.tsx","../src/ui/collection_editor/properties/StoragePropertyField.tsx","../src/utils/entities.ts","../src/ui/collection_editor/PropertyFieldPreview.tsx","../src/ui/collection_editor/util.ts","../src/ui/collection_editor/AIModifiedPathsContext.tsx","../src/ui/collection_editor/PropertyTree.tsx","../src/ui/collection_editor/properties/MapPropertyField.tsx","../src/ui/collection_editor/properties/RepeatPropertyField.tsx","../src/ui/collection_editor/properties/CommonPropertyFields.tsx","../src/ui/collection_editor/properties/StringPropertyField.tsx","../src/ui/collection_editor/properties/BooleanPropertyField.tsx","../src/ui/collection_editor/properties/BlockPropertyField.tsx","../src/ui/collection_editor/properties/validation/NumberPropertyValidation.tsx","../src/ui/collection_editor/properties/NumberPropertyField.tsx","../src/ui/collection_editor/properties/ReferencePropertyField.tsx","../src/ui/collection_editor/properties/DateTimePropertyField.tsx","../src/ui/collection_editor/properties/advanced/AdvancedPropertyValidation.tsx","../src/ui/collection_editor/properties/conditions/ConditionsPanel.tsx","../src/ui/collection_editor/properties/conditions/property_paths.ts","../src/ui/collection_editor/properties/conditions/ConditionsEditor.tsx","../src/ui/collection_editor/properties/conditions/EnumConditionsEditor.tsx","../src/ui/collection_editor/properties/KeyValuePropertyField.tsx","../src/ui/collection_editor/utils/update_property_for_widget.ts","../src/ui/collection_editor/properties/UrlPropertyField.tsx","../src/ui/collection_editor/utils/supported_fields.tsx","../src/ui/collection_editor/properties/MarkdownPropertyField.tsx","../src/ui/collection_editor/PropertyEditView.tsx","../src/ui/collection_editor/KanbanConfigSection.tsx","../src/ui/collection_editor/DisplaySettingsForm.tsx","../src/ui/collection_editor/utils/strings.ts","../src/ui/collection_editor/GetCodeDialog.tsx","../src/ui/collection_editor/CollectionPropertiesEditorForm.tsx","../src/ui/collection_editor/UnsavedChangesDialog.tsx","../src/ui/collection_editor/EntityCustomViewsSelectDialog.tsx","../src/ui/collection_editor/SubcollectionsEditTab.tsx","../src/ui/collection_editor/EntityActionsSelectDialog.tsx","../src/ui/collection_editor/EntityActionsEditTab.tsx","../src/ui/collection_editor/ExtendSettingsForm.tsx","../src/utils/validateCollectionJson.ts","../src/ui/collection_editor/CollectionJsonImportDialog.tsx","../src/ui/collection_editor/templates/products_template.ts","../src/ui/collection_editor/templates/blog_template.ts","../src/ui/collection_editor/templates/users_template.ts","../src/ui/collection_editor/templates/pages_template.ts","../src/useCollectionEditorController.tsx","../src/api/generateCollectionApi.ts","../src/ui/collection_editor/AICollectionGeneratorPopover.tsx","../src/ui/collection_editor/CollectionEditorWelcomeView.tsx","../src/ui/collection_editor/import/CollectionEditorImportMapping.tsx","../src/ui/collection_editor/import/CollectionEditorImportDataPreview.tsx","../src/ui/collection_editor/import/clean_import_data.ts","../src/ui/collection_editor/CollectionEditorDialog.tsx","../src/ConfigControllerProvider.tsx","../src/ui/EditorCollectionAction.tsx","../src/useCollectionsConfigController.tsx","../src/ui/HomePageEditorCollectionAction.tsx","../src/ui/CollectionViewHeaderAction.tsx","../src/ui/PropertyAddColumnComponent.tsx","../src/ui/NewCollectionButton.tsx","../src/ui/EditorCollectionActionStart.tsx","../src/ui/NewCollectionCard.tsx","../src/ui/EditorEntityAction.tsx","../src/ui/KanbanSetupAction.tsx","../src/ui/AddKanbanColumnAction.tsx","../src/useCollectionEditorPlugin.tsx","../src/utils/collections.ts","../src/ui/MissingReferenceWidget.tsx"],"sourcesContent":["import * as Yup from \"yup\";\n\nexport const YupSchema = Yup.object().shape({\n id: Yup.string().required(\"Required\"),\n name: Yup.string().required(\"Required\"),\n path: Yup.string().required(\"Required\")\n});\n","import React, { useState } from \"react\";\nimport {\n EntityCollection,\n FieldCaption,\n IconForView,\n SearchIconsView,\n singular,\n toSnakeCase,\n useAuthController,\n useCustomizationController\n} from \"@firecms/core\";\nimport {\n BooleanSwitchWithLabel,\n Chip,\n cls,\n Container,\n DebouncedTextField,\n Dialog,\n ExpandablePanel,\n IconButton,\n Select,\n SelectItem,\n TextField,\n Tooltip,\n Typography\n} from \"@firecms/ui\";\n\nimport { Field, getIn, useFormex } from \"@firecms/formex\";\n\nexport function GeneralSettingsForm({\n isNewCollection,\n existingPaths,\n existingIds,\n parentCollection\n}: {\n isNewCollection: boolean;\n existingPaths?: string[];\n existingIds?: string[];\n parentCollection?: EntityCollection;\n}) {\n\n const {\n values,\n setFieldValue,\n handleChange,\n touched,\n errors,\n setFieldTouched,\n submitCount\n } = useFormex<EntityCollection>();\n\n const [iconDialogOpen, setIconDialogOpen] = useState(false);\n\n const authController = useAuthController();\n const customizationController = useCustomizationController();\n\n const updateDatabaseId = (databaseId: string) => {\n setFieldValue(\"databaseId\", databaseId ?? undefined);\n }\n\n const updateName = (name: string) => {\n setFieldValue(\"name\", name);\n\n const pathTouched = getIn(touched, \"path\");\n if (!pathTouched && isNewCollection && name) {\n setFieldValue(\"path\", toSnakeCase(name));\n }\n\n const idTouched = getIn(touched, \"id\");\n if (!idTouched && isNewCollection && name) {\n setFieldValue(\"id\", toSnakeCase(name));\n }\n\n const singularNameTouched = getIn(touched, \"singularName\");\n if (!singularNameTouched && isNewCollection && name) {\n setFieldValue(\"singularName\", singular(name));\n }\n };\n\n const collectionIcon = <IconForView collectionOrView={values} />;\n const isSubcollection = !!parentCollection;\n const showErrors = submitCount > 0;\n\n return (\n <div className={\"overflow-auto my-auto\"}>\n <Container maxWidth={\"4xl\"} className={\"flex flex-col gap-4 p-8 m-auto\"}>\n\n <div>\n <div className=\"flex flex-row gap-2 py-2 pt-3 items-center\">\n <Typography variant={!isNewCollection ? \"h5\" : \"h4\"} className={\"flex-grow\"}>\n {isNewCollection ? \"New collection\" : `${values?.name} collection`}\n </Typography>\n <DefaultDatabaseField databaseId={values.databaseId}\n onDatabaseIdUpdate={updateDatabaseId} />\n\n <Tooltip title={\"Change icon\"}\n asChild={true}>\n <IconButton\n shape={\"square\"}\n onClick={() => setIconDialogOpen(true)}>\n {collectionIcon}\n </IconButton>\n </Tooltip>\n </div>\n\n {parentCollection && <Chip colorScheme={\"tealDarker\"}>\n <Typography variant={\"caption\"}>\n This is a subcollection of <b>{parentCollection.name}</b>\n </Typography>\n </Chip>}\n\n </div>\n\n <div className={\"grid grid-cols-12 gap-4\"}>\n\n {/* Name */}\n <div className={\"col-span-12\"}>\n <TextField\n value={values.name ?? \"\"}\n onChange={(e: any) => updateName(e.target.value)}\n label={\"Name\"}\n autoFocus={true}\n required\n error={showErrors && Boolean(errors.name)} />\n <FieldCaption error={touched.name && Boolean(errors.name)}>\n {touched.name && Boolean(errors.name) ? errors.name : \"Name of this collection, usually a plural name (e.g. Products)\"}\n </FieldCaption>\n </div>\n\n {/* Path */}\n <div className={cls(\"col-span-12\")}>\n <Field name={\"path\"}\n as={DebouncedTextField}\n label={\"Path\"}\n required\n error={showErrors && Boolean(errors.path)} />\n\n <FieldCaption error={touched.path && Boolean(errors.path)}>\n {touched.path && Boolean(errors.path)\n ? errors.path\n : isSubcollection ? \"Relative path to the parent (no need to include the parent path)\" : \"Path that this collection is stored in, in the database\"}\n </FieldCaption>\n </div>\n\n {/* Singular Name */}\n <div className={\"col-span-12\"}>\n <TextField\n error={showErrors && Boolean(errors.singularName)}\n name={\"singularName\"}\n aria-describedby={\"singularName-helper\"}\n onChange={(e) => {\n setFieldTouched(\"singularName\", true);\n return handleChange(e);\n }}\n value={values.singularName ?? \"\"}\n label={\"Singular name\"} />\n <FieldCaption error={showErrors && Boolean(errors.singularName)}>\n {showErrors && Boolean(errors.singularName) ? errors.singularName : \"Optionally define a singular name for your entities\"}\n </FieldCaption>\n </div>\n\n {/* Description */}\n <div className={\"col-span-12\"}>\n <TextField\n error={showErrors && Boolean(errors.description)}\n name=\"description\"\n value={values.description ?? \"\"}\n onChange={handleChange}\n multiline\n minRows={2}\n aria-describedby=\"description-helper-text\"\n label=\"Description\"\n />\n <FieldCaption error={showErrors && Boolean(errors.description)}>\n {showErrors && Boolean(errors.description) ? errors.description : \"Description of the collection, you can use markdown\"}\n </FieldCaption>\n </div>\n\n {/* Collection ID */}\n <div className={\"col-span-12\"}>\n <Field name={\"id\"}\n as={DebouncedTextField}\n disabled={!isNewCollection}\n label={\"Collection ID\"}\n error={showErrors && Boolean(errors.id)} />\n <FieldCaption error={touched.id && Boolean(errors.id)}>\n {touched.id && Boolean(errors.id) ? errors.id : \"This ID identifies this collection. Typically the same as the path.\"}\n </FieldCaption>\n </div>\n\n {/* Collection Group */}\n <div className={\"col-span-12\"}>\n <BooleanSwitchWithLabel\n position={\"start\"}\n size={\"large\"}\n label=\"Collection group\"\n onValueChange={(v) => setFieldValue(\"collectionGroup\", v)}\n value={values.collectionGroup ?? false}\n />\n <FieldCaption>\n A collection group consists of all collections with the same path. This allows\n you to query over multiple collections at once.\n </FieldCaption>\n </div>\n\n </div>\n\n {/* Advanced Settings */}\n <ExpandablePanel\n title={<Typography variant=\"subtitle2\">Advanced settings</Typography>}\n initiallyExpanded={false}\n className=\"mt-4\"\n innerClassName=\"p-4 flex flex-col gap-4\"\n >\n {/* History revisions */}\n <div>\n <BooleanSwitchWithLabel\n position={\"start\"}\n size={\"large\"}\n allowIndeterminate={true}\n label={values.history === null || values.history === undefined ? \"Document history revisions enabled if enabled globally\" : (\n values.history ? \"Document history revisions ENABLED\" : \"Document history revisions NOT enabled\"\n )}\n onValueChange={(v) => setFieldValue(\"history\", v)}\n value={values.history === undefined ? null : values.history}\n />\n <FieldCaption>\n When enabled, each document in this collection will have a history of changes.\n This is useful for auditing purposes. The data is stored in a subcollection of the document\n in your database, called <b>__history</b>.\n </FieldCaption>\n </div>\n\n {/* Document ID generation */}\n <div>\n <Select\n name=\"customId\"\n label=\"Document IDs generation\"\n position={\"item-aligned\"}\n size={\"large\"}\n fullWidth={true}\n disabled={typeof values.customId === \"object\"}\n onValueChange={(v) => {\n if (v === \"code_defined\")\n throw new Error(\"This should not happen\");\n if (v === \"false\") setFieldValue(\"customId\", false);\n else if (v === \"true\") setFieldValue(\"customId\", true);\n else if (v === \"optional\") setFieldValue(\"customId\", \"optional\");\n }}\n value={\n typeof values.customId === \"object\" ? \"code_defined\" :\n values.customId === true ? \"true\" :\n values.customId === \"optional\" ? \"optional\" : \"false\"\n }\n renderValue={(value: any) => {\n if (value === \"code_defined\")\n return \"Code defined\";\n else if (value === \"true\")\n return \"Users must define an ID\";\n else if (value === \"optional\")\n return \"Users can define an ID, but it is not required\";\n else\n return \"Document ID is generated automatically\";\n }}\n >\n <SelectItem value={\"false\"}>\n Document ID is generated automatically\n </SelectItem>\n <SelectItem value={\"true\"}>\n Users must define an ID\n </SelectItem>\n <SelectItem value={\"optional\"}>\n Users can define an ID, but it is not required\n </SelectItem>\n </Select>\n <FieldCaption>\n Configure how document IDs are generated when creating new entities.\n </FieldCaption>\n </div>\n\n {/* Text search */}\n <div>\n <BooleanSwitchWithLabel\n position={\"start\"}\n size={\"large\"}\n label=\"Enable text search for this collection\"\n onValueChange={(v) => setFieldValue(\"textSearchEnabled\", v)}\n value={values.textSearchEnabled ?? false}\n />\n <FieldCaption>\n Allow text search for this collection. If you have not specified a text search\n delegate, this will use the built-in local text search. This is not recommended\n for large collections, as it may incur in performance and cost issues.\n </FieldCaption>\n </div>\n </ExpandablePanel>\n\n <div style={{ height: \"52px\" }} />\n\n <Dialog\n open={iconDialogOpen}\n onOpenChange={setIconDialogOpen}\n maxWidth={\"xl\"}\n fullWidth\n >\n <div className={\"p-4 overflow-auto min-h-[200px]\"}>\n <SearchIconsView selectedIcon={typeof values.icon === \"string\" ? values.icon : undefined}\n onIconSelected={(icon: string) => {\n setIconDialogOpen(false);\n setFieldValue(\"icon\", icon);\n }} />\n </div>\n </Dialog>\n\n </Container>\n </div>\n );\n}\n\nfunction DefaultDatabaseField({\n databaseId,\n onDatabaseIdUpdate\n}: { databaseId?: string, onDatabaseIdUpdate: (databaseId: string) => void }) {\n\n return <Tooltip title={\"Database ID\"}\n side={\"top\"}\n align={\"start\"}>\n <TextField size={\"small\"}\n invisible={true}\n inputClassName={\"text-end\"}\n value={databaseId ?? \"\"}\n onChange={(e: any) => onDatabaseIdUpdate(e.target.value)}\n placeholder={\"(default)\"}></TextField>\n </Tooltip>\n}\n","import { cls, SquareIcon, ToggleButtonGroup, Typography, VerticalSplitIcon } from \"@firecms/ui\";\n\nexport function LayoutModeSwitch({\n value,\n onChange,\n className\n}: {\n value: \"side_panel\" | \"full_screen\";\n onChange: (value: \"side_panel\" | \"full_screen\") => void;\n className?: string;\n}) {\n\n return <div className={cls(className)}>\n <Typography variant={\"label\"} color={\"secondary\"} className={\"ml-3.5\"}>Document view</Typography>\n <div className={\"my-2\"}>\n <ToggleButtonGroup\n value={value}\n onValueChange={onChange}\n options={[\n {\n value: \"side_panel\",\n label: \"Side panel\",\n icon: <VerticalSplitIcon />\n },\n {\n value: \"full_screen\",\n label: \"Full screen\",\n icon: <SquareIcon />\n }\n ]}\n />\n </div>\n <Typography variant={\"caption\"} color={\"secondary\"} className={\"ml-3.5\"}>Should documents be opened full screen or in an inline side dialog</Typography>\n </div>\n}\n","import { ViewMode } from \"@firecms/core\";\nimport { AppsIcon, cls, ListIcon, ToggleButtonGroup, Typography, ViewKanbanIcon } from \"@firecms/ui\";\n\nexport function ViewModeSwitch({\n value,\n onChange,\n className\n}: {\n value: ViewMode;\n onChange: (value: ViewMode) => void;\n className?: string;\n}) {\n\n return <div className={cls(className)}>\n <Typography variant={\"label\"} color={\"secondary\"} className={\"ml-3.5\"}>Default collection view</Typography>\n <div className={\"my-2\"}>\n <ToggleButtonGroup\n value={value}\n onValueChange={onChange}\n options={[\n {\n value: \"table\",\n label: \"Table\",\n icon: <ListIcon />\n },\n {\n value: \"cards\",\n label: \"Cards\",\n icon: <AppsIcon />\n },\n {\n value: \"kanban\",\n label: \"Kanban\",\n icon: <ViewKanbanIcon />\n }\n ]}\n />\n </div>\n <Typography variant={\"caption\"} color={\"secondary\"} className={\"ml-3.5\"}>Choose how entities should be displayed by default</Typography>\n </div>\n}\n","import React, { useEffect } from \"react\";\nimport equal from \"react-fast-compare\"\n\nimport { ArrayContainer, ArrayEntryParams, EnumValueConfig, EnumValues, FieldCaption, } from \"@firecms/core\";\nimport {\n FindInPageIcon,\n Badge,\n Button,\n ChipColorKey,\n CircularProgress,\n ColorPicker,\n DebouncedTextField,\n Dialog,\n DialogActions,\n DialogContent,\n DialogTitle,\n getColorSchemeForKey,\n getColorSchemeForSeed,\n IconButton,\n ListIcon,\n Paper,\n SettingsIcon,\n Typography\n} from \"@firecms/ui\";\nimport { extractEnumFromValues } from \"@firecms/schema_inference\";\nimport { Field, Formex, getIn, useCreateFormex, useFormex } from \"@firecms/formex\";\n\ntype EnumFormProps = {\n enumValues: EnumValueConfig[];\n onValuesChanged?: (enumValues: EnumValueConfig[]) => void;\n onError?: (error: boolean) => void;\n updateIds: boolean;\n disabled: boolean;\n allowDataInference?: boolean;\n getData?: () => Promise<string[]>;\n};\n\nexport function EnumForm({\n enumValues,\n onValuesChanged,\n onError,\n updateIds,\n disabled,\n allowDataInference,\n getData\n}: EnumFormProps) {\n\n const formex = useCreateFormex<{\n enumValues: EnumValueConfig[]\n }>({\n initialValues: { enumValues },\n validateOnChange: true,\n validation: (values) => {\n const errors: any = {};\n if (values.enumValues) {\n values.enumValues.forEach((enumValue, index) => {\n if (!enumValue?.label) {\n errors.enumValues = errors.enumValues ?? [];\n errors.enumValues[index] = errors.enumValues[index] ?? {};\n errors.enumValues[index].label = \"You must specify a label for this enum value entry\";\n }\n if (!enumValue?.id) {\n errors.enumValues = errors.enumValues ?? [];\n errors.enumValues[index] = errors.enumValues[index] ?? {};\n errors.enumValues[index].id = \"You must specify an ID for this enum value entry\";\n }\n });\n }\n const hasError = Boolean(errors?.enumValues && Object.keys(errors?.enumValues).length > 0);\n onError?.(hasError);\n return errors;\n }\n });\n\n const {\n values,\n errors\n } = formex;\n\n useEffect(() => {\n if (onValuesChanged) {\n onValuesChanged(values.enumValues);\n }\n }, [values.enumValues]);\n\n return <Formex value={formex}>\n <EnumFormFields enumValuesPath={\"enumValues\"}\n values={values}\n errors={errors}\n shouldUpdateId={updateIds}\n disabled={disabled}\n allowDataInference={allowDataInference}\n getData={getData} />\n </Formex>\n\n}\n\ntype EnumFormFieldsProps = {\n values: {\n enumValues: EnumValueConfig[]\n };\n errors: any;\n enumValuesPath: string;\n shouldUpdateId: boolean;\n disabled: boolean;\n getData?: () => Promise<string[]>;\n allowDataInference?: boolean;\n};\n\n// const EnumFormFields = React.memo(\nfunction EnumFormFields({\n values,\n errors,\n disabled,\n enumValuesPath,\n shouldUpdateId,\n allowDataInference,\n getData,\n}: EnumFormFieldsProps) {\n\n const {\n setFieldValue\n } = useFormex();\n\n const [lastInternalIdAdded, setLastInternalIdAdded] = React.useState<number | undefined>();\n const [editDialogIndex, setEditDialogIndex] = React.useState<number | undefined>();\n const [inferring, setInferring] = React.useState(false);\n\n const inferredValuesRef = React.useRef(new Set());\n const inferredValues = inferredValuesRef.current;\n\n const buildEntry = ({\n index,\n internalId\n }: ArrayEntryParams) => {\n const justAdded = lastInternalIdAdded === internalId;\n const entryError = errors?.enumValues && errors?.enumValues[index];\n return <EnumEntry index={index}\n disabled={disabled}\n enumValuesPath={enumValuesPath}\n autoFocus={justAdded}\n entryError={entryError}\n shouldUpdateId={shouldUpdateId || justAdded}\n onDialogOpen={() => setEditDialogIndex(index)}\n inferredEntry={inferredValues.has(values.enumValues[index]?.id as string)}\n key={`${internalId}`} />;\n };\n\n const inferValues = async () => {\n if (!getData) {\n console.warn(\"INTERNAL: No getData function provided for data inference\");\n return;\n }\n setInferring(true);\n getData?.().then((data) => {\n if (!data)\n return;\n\n const flatData = data.flat();\n\n const fieldData = Array.from(new Set(flatData));\n\n const currentEnumValues = values.enumValues;\n const foundEnumValues = extractEnumFromValues(fieldData);\n\n // add only new enum values\n const newEnumValues = foundEnumValues.filter((enumValue) => {\n return !currentEnumValues?.some((v: any) => v.id === enumValue.id);\n });\n\n newEnumValues.forEach((enumValue) => {\n inferredValues.add(enumValue.id);\n });\n setFieldValue(enumValuesPath, [...newEnumValues, ...currentEnumValues], true);\n }).catch(e => {\n console.error(e);\n })\n .finally(() => setInferring(false));\n }\n\n return (\n <div className={\"col-span-12\"}>\n <div className=\"ml-3.5 flex flex-row items-center\">\n <ListIcon />\n <Typography variant={\"subtitle2\"}\n className=\"ml-2 grow\">\n Values\n </Typography>\n {allowDataInference &&\n <Button \n disabled={disabled || inferring}\n variant={\"text\"}\n size={\"small\"}\n onClick={inferValues}>\n {inferring ? <CircularProgress size={\"smallest\"} /> : <FindInPageIcon />}\n Infer values from data\n </Button>}\n </div>\n\n <Paper className=\"p-4 m-1\">\n\n <ArrayContainer droppableId={enumValuesPath}\n addLabel={\"Add enum value\"}\n value={values.enumValues}\n disabled={disabled}\n size={\"small\"}\n buildEntry={buildEntry}\n onInternalIdAdded={setLastInternalIdAdded}\n canAddElements={true}\n onValueChange={(value) => setFieldValue(enumValuesPath, value)}\n newDefaultEntry={{\n id: \"\",\n label: \"\"\n }} />\n\n <EnumEntryDialog index={editDialogIndex}\n open={editDialogIndex !== undefined}\n enumValuesPath={enumValuesPath}\n onClose={() => setEditDialogIndex(undefined)} />\n </Paper>\n </div>\n );\n}\n\ntype EnumEntryProps = {\n index: number,\n enumValuesPath: string,\n shouldUpdateId: boolean,\n autoFocus: boolean,\n onDialogOpen: () => void;\n disabled: boolean;\n inferredEntry?: boolean;\n entryError?: { label?: string, id?: string }\n};\n\nconst EnumEntry = React.memo(\n function EnumEntryInternal({\n index,\n shouldUpdateId: updateId,\n enumValuesPath,\n autoFocus,\n onDialogOpen,\n disabled,\n inferredEntry,\n entryError\n }: EnumEntryProps) {\n\n const {\n values,\n handleChange,\n errors,\n setFieldValue,\n touched\n } = useFormex<EnumValues>();\n\n const shouldUpdateIdRef = React.useRef(!getIn(values, `${enumValuesPath}[${index}].id`));\n const shouldUpdateId = updateId || shouldUpdateIdRef.current;\n\n const idValue = getIn(values, `${enumValuesPath}[${index}].id`);\n const labelValue = getIn(values, `${enumValuesPath}[${index}].label`);\n\n const currentLabelRef = React.useRef(labelValue);\n\n React.useEffect(() => {\n if ((currentLabelRef.current === idValue || !idValue) && shouldUpdateId) {\n setFieldValue(`${enumValuesPath}[${index}].id`, labelValue);\n }\n currentLabelRef.current = labelValue;\n }, [labelValue]);\n\n const colorValue = getIn(values, `${enumValuesPath}[${index}].color`) as ChipColorKey | undefined;\n const colorScheme = colorValue\n ? getColorSchemeForKey(colorValue)\n : idValue\n ? getColorSchemeForSeed(String(idValue))\n : undefined;\n\n return (\n <>\n <div className={\"flex w-full align-center justify-center\"}>\n <Field name={`${enumValuesPath}[${index}].label`}\n as={DebouncedTextField}\n className={\"flex-grow\"}\n required\n disabled={disabled}\n size=\"small\"\n autoFocus={autoFocus}\n autoComplete=\"off\"\n endAdornment={inferredEntry && <FindInPageIcon size={\"small\"} />}\n error={Boolean(entryError?.label)} />\n\n {!disabled && <>\n {/* Color indicator - clickable to open settings */}\n <button\n type=\"button\"\n onClick={() => onDialogOpen()}\n className=\"w-5 h-5 rounded-full flex-shrink-0 self-center border border-surface-accent-200 dark:border-surface-accent-700 hover:scale-110 transition-transform cursor-pointer ml-3\"\n style={{\n backgroundColor: colorScheme?.color ?? \"#ccc\"\n }}\n title={colorValue ? `Color: ${colorValue}` : \"Auto color - Click to change\"}\n aria-label=\"Edit enum color\"\n />\n <Badge color={\"error\"} invisible={!entryError?.id}>\n <IconButton\n size=\"small\"\n aria-label=\"edit\"\n className={\"m-1\"}\n onClick={() => onDialogOpen()}>\n <SettingsIcon size={\"small\"} />\n </IconButton>\n </Badge>\n </>}\n\n </div>\n\n {entryError?.label && <Typography variant={\"caption\"}\n className={\"ml-3.5 text-red-500 dark:text-red-500\"}>\n {entryError?.label}\n </Typography>}\n\n {entryError?.id && <Typography variant={\"caption\"}\n className={\"ml-3.5 text-red-500 dark:text-red-500\"}>\n {entryError?.id}\n </Typography>}\n\n </>);\n },\n function areEqual(prevProps: EnumEntryProps, nextProps: EnumEntryProps) {\n return prevProps.index === nextProps.index &&\n prevProps.enumValuesPath === nextProps.enumValuesPath &&\n prevProps.shouldUpdateId === nextProps.shouldUpdateId &&\n prevProps.inferredEntry === nextProps.inferredEntry &&\n equal(prevProps.entryError, nextProps.entryError) &&\n prevProps.autoFocus === nextProps.autoFocus;\n }\n);\n\nfunction EnumEntryDialog({\n index,\n open,\n onClose,\n enumValuesPath\n}: {\n index?: number;\n open: boolean;\n enumValuesPath: string;\n onClose: () => void;\n}) {\n\n const {\n errors,\n values,\n setFieldValue\n } = useFormex<EnumValues>();\n\n const idError = index !== undefined ? getIn(errors, `${enumValuesPath}[${index}].id`) : undefined;\n const colorValue = index !== undefined ? getIn(values, `${enumValuesPath}[${index}].color`) as ChipColorKey | undefined : undefined;\n\n return <Dialog\n maxWidth=\"md\"\n aria-labelledby=\"enum-edit-dialog\"\n open={open}\n onOpenChange={(open) => !open ? onClose() : undefined}\n >\n <DialogTitle hidden>Enum form dialog</DialogTitle>\n <DialogContent>\n {index !== undefined &&\n <div className=\"flex flex-col gap-4\">\n <div>\n <Field name={`${enumValuesPath}[${index}].id`}\n as={DebouncedTextField}\n required\n label={\"ID\"}\n size=\"small\"\n autoComplete=\"off\"\n error={Boolean(idError)} />\n\n <FieldCaption error={Boolean(idError)}>\n {idError ?? \"Value saved in the data source\"}\n </FieldCaption>\n </div>\n\n <div>\n <Typography variant=\"body2\" className=\"font-medium mb-2\">\n Chip color\n </Typography>\n <ColorPicker\n value={colorValue}\n onChange={(color) => setFieldValue(`${enumValuesPath}[${index}].color`, color)}\n size=\"small\"\n allowClear={true}\n />\n </div>\n </div>}\n </DialogContent>\n\n <DialogActions>\n <Button\n autoFocus\n onClick={onClose}>\n Ok\n </Button>\n </DialogActions>\n\n </Dialog>\n}\n\n","import React from \"react\";\n\nimport { BooleanSwitchWithLabel, Tooltip } from \"@firecms/ui\";\nimport { FormexFieldProps } from \"@firecms/formex\";\n\nexport function SwitchControl({\n field,\n form,\n label,\n tooltip,\n disabled,\n size = \"small\",\n allowIndeterminate\n }: FormexFieldProps & {\n label: string,\n tooltip?: string,\n disabled?: boolean,\n size?: \"small\" | \"medium\",\n allowIndeterminate?: boolean\n}) {\n\n const formControlLabel = <BooleanSwitchWithLabel\n label={label}\n size={size}\n position={\"start\"}\n value={field.value}\n disabled={disabled}\n allowIndeterminate={allowIndeterminate}\n onValueChange={(checked:boolean | null) => form.setFieldValue(field.name, checked)}/>;\n\n if (tooltip)\n return (\n <Tooltip\n title={tooltip}>\n {formControlLabel}\n </Tooltip>\n );\n return formControlLabel;\n}\n","import React from \"react\";\n\nimport { Field, FormexFieldProps, getIn, useFormex } from \"@firecms/formex\";\nimport { DebouncedTextField } from \"@firecms/ui\";\nimport { SwitchControl } from \"../../SwitchControl\";\n\nexport function GeneralPropertyValidation({ disabled }: {\n required?: boolean;\n disabled: boolean;\n}) {\n\n const { values, handleChange } = useFormex();\n\n const validationRequired = \"validation.required\";\n const validationRequiredMessage = \"validation.requiredMessage\";\n const validationUnique = \"validation.unique\";\n const validationUniqueInArray = \"validation.uniqueInArray\";\n\n return (\n <>\n <div className={\"col-span-6\"}>\n <Field name={validationRequired}\n type=\"checkbox\">\n {({ field, form }: FormexFieldProps) => {\n return <SwitchControl\n disabled={disabled}\n label={\"Required\"}\n tooltip={\"You won't be able to save this entity if this value is not set\"}\n form={form}\n field={field}/>\n }}\n </Field>\n </div>\n\n <div className={\"col-span-6\"}>\n\n <Field name={validationUnique}\n type=\"checkbox\">\n {({ field, form }: FormexFieldProps) => {\n return <SwitchControl\n disabled={disabled}\n label={\"Unique\"}\n tooltip={\"There cannot be multiple entities with the same value\"}\n form={form}\n field={field}/>\n }}\n </Field>\n </div>\n\n {getIn(values, validationRequired) && <div className={\"col-span-12\"}>\n <DebouncedTextField\n disabled={disabled}\n value={getIn(values, validationRequiredMessage)}\n label={\"Required message\"}\n name={validationRequiredMessage}\n size=\"small\"\n onChange={handleChange}/>\n </div>}\n </>\n );\n}\n","import React from \"react\";\n\nimport { Field, FormexFieldProps, getIn, useFormex } from \"@firecms/formex\";\nimport { FieldCaption, serializeRegExp } from \"@firecms/core\";\nimport { DebouncedTextField, } from \"@firecms/ui\";\nimport { GeneralPropertyValidation } from \"./GeneralPropertyValidation\";\nimport { SwitchControl } from \"../../SwitchControl\";\n\nexport function StringPropertyValidation({\n length,\n lowercase,\n matches,\n max,\n min,\n trim,\n uppercase,\n disabled,\n showErrors\n }: {\n length?: boolean;\n min?: boolean;\n max?: boolean;\n trim?: boolean;\n matches?: boolean;\n lowercase?: boolean;\n uppercase?: boolean;\n disabled: boolean;\n showErrors: boolean;\n}) {\n\n const {\n values,\n handleChange,\n errors\n } = useFormex();\n\n const validationLength = \"validation.length\";\n const validationMin = \"validation.min\";\n const validationMax = \"validation.max\";\n const validationTrim = \"validation.trim\";\n const validationMatches = \"validation.matches\";\n const validationLowercase = \"validation.lowercase\";\n const validationUppercase = \"validation.uppercase\";\n\n const matchesError = getIn(errors, validationMatches);\n\n const matchesValue = getIn(values, validationMatches);\n const matchesStringValue = typeof matchesValue === \"string\" ? matchesValue : serializeRegExp(matchesValue);\n return (\n <div className={\"grid grid-cols-12 gap-2\"}>\n\n <GeneralPropertyValidation disabled={disabled}/>\n\n <div className={\"grid grid-cols-12 gap-2 col-span-12\"}>\n\n {lowercase && <div className={\"col-span-4\"}>\n <Field name={validationLowercase}\n type=\"checkbox\">\n {({ field, form }: FormexFieldProps) => {\n return <SwitchControl\n label={\"Lowercase\"}\n disabled={disabled}\n form={form}\n field={field}/>\n }}\n </Field>\n </div>}\n\n {uppercase && <div className={\"col-span-4\"}>\n <Field name={validationUppercase}\n type=\"checkbox\">\n {({ field, form }: FormexFieldProps) => {\n return <SwitchControl\n label={\"Uppercase\"}\n disabled={disabled}\n form={form}\n field={field}/>\n }}\n </Field>\n </div>}\n\n {trim && <div className={\"col-span-4\"}>\n <Field name={validationTrim}\n type=\"checkbox\">\n {({ field, form }: FormexFieldProps) => {\n return <SwitchControl\n label={\"Trim\"}\n disabled={disabled}\n form={form}\n field={field}/>\n }}\n </Field>\n </div>}\n\n </div>\n\n <div className={\"grid grid-cols-12 gap-2 col-span-12\"}>\n {length && <div className={\"col-span-4\"}>\n <DebouncedTextField\n value={getIn(values, validationLength)}\n label={\"Exact length\"}\n name={validationLength}\n type=\"number\"\n size=\"small\"\n\n disabled={disabled}\n onChange={handleChange}/>\n </div>}\n\n {min && <div className={\"col-span-4\"}>\n <DebouncedTextField value={getIn(values, validationMin)}\n label={\"Min length\"}\n name={validationMin}\n type=\"number\"\n size=\"small\"\n\n disabled={disabled}\n onChange={handleChange}/>\n </div>}\n\n {max && <div className={\"col-span-4\"}>\n <DebouncedTextField value={getIn(values, validationMax)}\n label={\"Max length\"}\n name={validationMax}\n type=\"number\"\n size=\"small\"\n\n disabled={disabled}\n onChange={handleChange}/>\n </div>}\n\n </div>\n\n {matches && <div className={\"col-span-12\"}>\n <Field name={validationMatches}\n as={DebouncedTextField}\n label={\"Matches regex\"}\n size=\"small\"\n disabled={disabled}\n value={matchesStringValue}\n error={Boolean(matchesError)}/>\n <FieldCaption error={Boolean(matchesError)}>\n {matchesError ? \"Not a valid regexp\" : \"e.g. /^\\\\d+$/ for digits only\"}\n </FieldCaption>\n </div>}\n\n </div>\n );\n\n}\n","import React from \"react\";\n\nimport { getIn, useFormex } from \"@firecms/formex\";\nimport { DebouncedTextField } from \"@firecms/ui\";\nimport { GeneralPropertyValidation } from \"./GeneralPropertyValidation\";\n\nexport function ArrayPropertyValidation({\n max = true,\n min = true,\n disabled\n }: {\n min?: boolean;\n max?: boolean;\n disabled: boolean;\n}) {\n\n const {\n values,\n handleChange\n } = useFormex();\n\n const validationMin = \"validation.min\";\n const validationMax = \"validation.max\";\n\n return (\n <div className={\"grid grid-cols-12 gap-2\"}>\n\n <GeneralPropertyValidation disabled={disabled}/>\n\n {min && <div className={\"col-span-6\"}>\n <DebouncedTextField value={getIn(values, validationMin)}\n disabled={disabled}\n label={\"Min length\"}\n name={validationMin}\n type=\"number\"\n size=\"small\"\n onChange={handleChange}/>\n </div>}\n {max && <div className={\"col-span-6\"}>\n <DebouncedTextField value={getIn(values, validationMax)}\n disabled={disabled}\n label={\"Max length\"}\n name={validationMax}\n type=\"number\"\n size=\"small\"\n onChange={handleChange}/>\n </div>}\n </div>\n );\n}\n","import { PropsWithChildren } from \"react\";\n\nimport { ExpandablePanel, RuleIcon, Typography } from \"@firecms/ui\";\n\nexport function ValidationPanel({\n children\n }: PropsWithChildren<{}>) {\n\n return (\n <ExpandablePanel\n initiallyExpanded={false}\n asField={true}\n innerClassName=\"p-4\"\n title={\n <div className=\"flex flex-row text-surface-500 text-text-secondary dark:text-text-secondary-dark\">\n <RuleIcon/>\n <Typography variant={\"subtitle2\"}\n className=\"ml-4\">\n Validation\n </Typography>\n </div>\n }>\n\n {children}\n\n </ExpandablePanel>\n )\n}\n","import React, { useMemo } from \"react\";\nimport { getIn, useFormex } from \"@firecms/formex\";\nimport { EnumValueConfig, resolveEnumValues, useSnackbarController } from \"@firecms/core\";\nimport { Select, SelectItem } from \"@firecms/ui\";\nimport { EnumForm } from \"../EnumForm\";\nimport { StringPropertyValidation } from \"./validation/StringPropertyValidation\";\nimport { ArrayPropertyValidation } from \"./validation/ArrayPropertyValidation\";\nimport { ValidationPanel } from \"./validation/ValidationPanel\";\nimport { PropertyWithId } from \"../PropertyEditView\";\n\nexport function EnumPropertyField({\n multiselect,\n updateIds,\n disabled,\n showErrors,\n allowDataInference,\n getData,\n propertyNamespace\n}: {\n multiselect: boolean;\n updateIds: boolean;\n disabled: boolean;\n showErrors: boolean;\n allowDataInference?: boolean;\n getData?: () => Promise<object[]>;\n propertyNamespace?: string;\n}) {\n\n const {\n values,\n setFieldError,\n setFieldValue\n } = useFormex<PropertyWithId>();\n\n const snackbarContext = useSnackbarController();\n\n const enumValuesPath = multiselect ? \"of.enumValues\" : \"enumValues\";\n\n const defaultValue = getIn(values, \"defaultValue\");\n\n const valuesEnumValues = getIn(values, enumValuesPath);\n const enumValues: EnumValueConfig[] = useMemo(() => {\n if (!valuesEnumValues || typeof valuesEnumValues === \"boolean\")\n return [] as EnumValueConfig[];\n return resolveEnumValues(valuesEnumValues) ?? [] as EnumValueConfig[];\n }, [valuesEnumValues]);\n\n const onValuesChanged = (value: EnumValueConfig[]) => {\n if (!values)\n return;\n setFieldValue(enumValuesPath, value);\n if (!multiselect) {\n const enumIds = value.filter(v => Boolean(v?.id)).map((v: any) => v.id);\n if (defaultValue && !enumIds.includes(defaultValue)) {\n setFieldValue(\"defaultValue\", undefined);\n snackbarContext.open({\n type: \"warning\",\n message: \"Default value was cleared\"\n })\n }\n }\n };\n\n // Build full path including namespace for nested properties (e.g., \"address.status\")\n const fullPropertyPath = values.id\n ? (propertyNamespace ? `${propertyNamespace}.${values.id}` : values.id)\n : undefined;\n\n return (\n <>\n <div className={\"col-span-12\"}>\n <EnumForm enumValues={enumValues}\n updateIds={updateIds}\n disabled={disabled}\n allowDataInference={allowDataInference}\n onError={(hasError) => {\n setFieldError(enumValuesPath, hasError ? \"This enum property is missing some values\" : undefined);\n }}\n getData={getData && fullPropertyPath\n ? () => getData()\n .then(res => res.map(entry => getIn(entry, fullPropertyPath)).filter(Boolean))\n : undefined}\n onValuesChanged={onValuesChanged} />\n </div>\n\n <div className={\"col-span-12\"}>\n\n <ValidationPanel>\n {!multiselect &&\n <StringPropertyValidation disabled={disabled}\n showErrors={showErrors} />}\n {multiselect &&\n <ArrayPropertyValidation disabled={disabled} />}\n </ValidationPanel>\n\n </div>\n\n {!multiselect && <div className={\"col-span-12\"}>\n\n <Select\n disabled={disabled}\n position={\"item-aligned\"}\n fullWidth={true}\n onValueChange={(value: string) => {\n setFieldValue(\"defaultValue\", value);\n }}\n size={\"large\"}\n label={\"Default value\"}\n value={defaultValue ?? \"\"}>\n {enumValues\n .filter((enumValue) => Boolean(enumValue?.id))\n .map((enumValue) => (\n <SelectItem key={enumValue.id}\n value={enumValue.id?.toString()}>\n {enumValue.label}\n </SelectItem>\n ))}\n </Select>\n\n </div>}\n </>\n );\n}\n","import React from \"react\";\nimport {\n Button,\n CloudUploadIcon,\n DebouncedTextField,\n ExpandablePanel,\n MultiSelect,\n MultiSelectItem,\n Select,\n SelectItem,\n Typography\n} from \"@firecms/ui\";\n\nimport { Field, FormexFieldProps, getIn, useFormex } from \"@firecms/formex\";\nimport { GeneralPropertyValidation } from \"./validation/GeneralPropertyValidation\";\nimport { ArrayPropertyValidation } from \"./validation/ArrayPropertyValidation\";\nimport { ValidationPanel } from \"./validation/ValidationPanel\";\nimport { SwitchControl } from \"../SwitchControl\";\n\nconst fileTypes: Record<string, string> = {\n \"image/*\": \"Images\",\n \"video/*\": \"Videos\",\n \"audio/*\": \"Audio files\",\n \"application/*\": \"Files (pdf, zip, csv, excel...)\",\n \"text/*\": \"Text files\"\n}\n\nexport function StoragePropertyField({\n multiple,\n existing,\n disabled\n }: {\n multiple: boolean;\n existing: boolean;\n disabled: boolean;\n}) {\n\n const {\n values,\n setFieldValue\n } = useFormex();\n\n const baseStoragePath = multiple ? \"of.storage\" : \"storage\";\n const acceptedFiles = `${baseStoragePath}.acceptedFiles`;\n\n const metadata = `${baseStoragePath}.metadata`;\n const fileName = `${baseStoragePath}.fileName`;\n const maxSize = `${baseStoragePath}.maxSize`;\n const storagePath = `${baseStoragePath}.storagePath`;\n const storeUrl = `${baseStoragePath}.storeUrl`;\n const includeBucketUrl = `${baseStoragePath}.includeBucketUrl`;\n\n // Image resize config paths\n const imageResize = `${baseStoragePath}.imageResize`;\n const imageResizeMaxWidth = `${imageResize}.maxWidth`;\n const imageResizeMaxHeight = `${imageResize}.maxHeight`;\n const imageResizeMode = `${imageResize}.mode`;\n const imageResizeFormat = `${imageResize}.format`;\n const imageResizeQuality = `${imageResize}.quality`;\n\n const fileNameValue = getIn(values, fileName) ?? \"{rand}_{file}\";\n const storagePathValue = getIn(values, storagePath) ?? \"/\";\n const maxSizeValue = getIn(values, maxSize);\n\n // Image resize values\n const imageResizeMaxWidthValue = getIn(values, imageResizeMaxWidth);\n const imageResizeMaxHeightValue = getIn(values, imageResizeMaxHeight);\n const imageResizeModeValue = getIn(values, imageResizeMode) ?? \"cover\";\n const imageResizeFormatValue = getIn(values, imageResizeFormat) ?? \"original\";\n const imageResizeQualityValue = getIn(values, imageResizeQuality);\n\n const storedValue = getIn(values, acceptedFiles);\n const fileTypesValue: string[] | undefined = Array.isArray(storedValue) ? storedValue : undefined;\n const allFileTypesSelected = !fileTypesValue || fileTypesValue.length === 0;\n\n const handleTypesChange = (value: string[]) => {\n if (!value) setFieldValue(acceptedFiles, undefined);\n else setFieldValue(acceptedFiles, value);\n };\n\n const hasFilenameCallback = typeof fileNameValue === \"function\";\n const hasStoragePathCallback = typeof storagePathValue === \"function\";\n\n return (\n <>\n\n <div className={\"col-span-12\"}>\n\n <ExpandablePanel\n title={\n <div className=\"flex flex-row text-surface-500 text-text-secondary dark:text-text-secondary-dark\">\n <CloudUploadIcon/>\n <Typography variant={\"subtitle2\"}\n className=\"ml-4\">\n File upload config\n </Typography>\n </div>\n }>\n\n <div className={\"grid grid-cols-12 gap-2 p-4\"}>\n\n <div className={\"col-span-12\"}>\n\n <MultiSelect\n className={\"w-full\"}\n placeholder={\"All file types allowed\"}\n disabled={disabled}\n name={acceptedFiles}\n value={fileTypesValue ?? []}\n onValueChange={handleTypesChange}\n label={allFileTypesSelected ? undefined : \"Allowed file types\"}\n renderValues={(selected) => {\n if (!selected || selected.length === 0) return \"All file types allowed\";\n return selected.map((v: string) => fileTypes[v])\n .filter((v: string) => Boolean(v))\n .join(\", \");\n }}>\n\n {Object.entries(fileTypes).map(([value, label]) => (\n <MultiSelectItem key={value} value={value} className={\"flex items-center gap-2\"}>\n {/*<Checkbox*/}\n {/* checked={allFileTypesSelected || fileTypesValue.indexOf(value) > -1}/>*/}\n <div className={\"flex-grow\"}>\n {label}\n </div>\n <Button size={\"small\"}\n variant={\"text\"}\n onClick={(e) => {\n e.preventDefault();\n e.stopPropagation();\n return setFieldValue(acceptedFiles, [value]);\n }}>\n Only\n </Button>\n </MultiSelectItem>\n ))}\n\n </MultiSelect>\n </div>\n\n <div className={\"col-span-12\"}>\n <Field name={fileName}\n as={DebouncedTextField}\n label={\"File name\"}\n size={\"small\"}\n disabled={hasFilenameCallback || disabled}\n value={hasFilenameCallback ? \"-\" : fileNameValue}\n />\n </div>\n <div className={\"col-span-12\"}>\n <Field name={storagePath}\n as={DebouncedTextField}\n label={\"Storage path\"}\n disabled={hasStoragePathCallback || disabled}\n size={\"small\"}\n value={hasStoragePathCallback ? \"-\" : storagePathValue}\n />\n <Typography variant={\"caption\"} className={\"ml-3.5 mt-1 mb-2\"}>\n <p>You can use the following placeholders in\n the file name\n and storage path values:</p>\n <ul>\n <li>{\"{file} - Full name of the uploaded file\"}</li>\n <li>{\"{file.name} - Name of the uploaded file without extension\"}</li>\n <li>{\"{file.ext} - Extension of the uploaded file\"}</li>\n <li>{\"{entityId} - ID of the entity\"}</li>\n <li>{\"{propertyKey} - ID of this field\"}</li>\n <li>{\"{path} - Path of this entity\"}</li>\n <li>{\"{rand} - Random value used to avoid name collisions\"}</li>\n </ul>\n </Typography>\n\n <Field name={includeBucketUrl}\n type=\"checkbox\">\n {({\n field,\n form\n }: FormexFieldProps) => {\n return <SwitchControl\n label={\"Include bucket URL (gs://...) in saved value\"}\n disabled={existing || disabled}\n form={form}\n field={field}/>;\n }}\n </Field>\n\n <Typography variant={\"caption\"} className={\"ml-3.5 mt-1 mb-2\"}>\n Turn this setting on if you want to save a fully-qualified storage URL\n (e.g. <code>gs://my-bucket/path/to/file</code>) instead of just the storage path.\n You can only change this prop upon creation.\n </Typography>\n\n <Field name={storeUrl}\n type=\"checkbox\">\n {({\n field,\n form\n }: FormexFieldProps) => {\n return <SwitchControl\n label={\"Save URL instead of storage path\"}\n disabled={existing || disabled}\n form={form}\n field={field}/>;\n }}\n </Field>\n\n <Typography variant={\"caption\"} className={\"ml-3.5 mt-1 mb-2\"}>\n Turn this setting on, if you prefer to save\n the download\n URL of the uploaded file instead of the\n storage path.\n You can only change this prop upon creation.\n </Typography>\n </div>\n\n <div className={\"col-span-12\"}>\n <DebouncedTextField name={maxSize}\n type={\"number\"}\n label={\"Max size (in bytes)\"}\n size={\"small\"}\n value={maxSizeValue !== undefined && maxSizeValue !== null ? maxSizeValue.toString() : \"\"}\n onChange={(e) => {\n const value = e.target.value;\n if (value === \"\") setFieldValue(maxSize, undefined);\n else setFieldValue(maxSize, parseInt(value));\n }}\n />\n </div>\n\n <div className={\"col-span-12 mt-4\"}>\n <Typography variant={\"subtitle2\"}\n color={\"secondary\"}\n className={\"mb-2 block\"}>\n Image Resize Configuration\n </Typography>\n <Typography variant={\"caption\"} className={\"mb-2 block text-xs\"}>\n Automatically resize and optimize images before upload (JPEG, PNG, WebP only)\n </Typography>\n </div>\n\n <div className={\"col-span-6\"}>\n <DebouncedTextField\n name={imageResizeMaxWidth}\n type={\"number\"}\n label={\"Max width (px)\"}\n size={\"small\"}\n disabled={disabled}\n value={imageResizeMaxWidthValue !== undefined && imageResizeMaxWidthValue !== null ? imageResizeMaxWidthValue.toString() : \"\"}\n onChange={(e) => {\n const value = e.target.value;\n if (value === \"\") setFieldValue(imageResizeMaxWidth, undefined);\n else setFieldValue(imageResizeMaxWidth, parseInt(value));\n }}\n />\n </div>\n\n <div className={\"col-span-6\"}>\n <DebouncedTextField\n name={imageResizeMaxHeight}\n type={\"number\"}\n label={\"Max height (px)\"}\n size={\"small\"}\n disabled={disabled}\n value={imageResizeMaxHeightValue !== undefined && imageResizeMaxHeightValue !== null ? imageResizeMaxHeightValue.toString() : \"\"}\n onChange={(e) => {\n const value = e.target.value;\n if (value === \"\") setFieldValue(imageResizeMaxHeight, undefined);\n else setFieldValue(imageResizeMaxHeight, parseInt(value));\n }}\n />\n </div>\n\n <div className={\"col-span-6\"}>\n <Select\n disabled={disabled}\n name={imageResizeMode}\n fullWidth\n size={\"medium\"}\n value={imageResizeModeValue || \"cover\"}\n onValueChange={(value) => setFieldValue(imageResizeMode, value || \"cover\")}\n label={\"Resize mode\"}\n renderValue={(selected) => {\n if (!selected) return \"Cover\";\n return selected === \"contain\" ? \"Contain (fit within bounds)\" : \"Cover (fill bounds, may crop)\";\n }}>\n <SelectItem value=\"contain\">\n Contain (fit within bounds)\n </SelectItem>\n <SelectItem value=\"cover\">\n Cover (fill bounds, may crop)\n </SelectItem>\n </Select>\n </div>\n\n <div className={\"col-span-6\"}>\n <Select\n disabled={disabled}\n size={\"medium\"}\n fullWidth\n name={imageResizeFormat}\n value={imageResizeFormatValue || \"original\"}\n onValueChange={(value) => setFieldValue(imageResizeFormat, value || \"original\")}\n label={\"Output format\"}\n renderValue={(selected) => {\n if (!selected) return \"Original\";\n return selected.charAt(0).toUpperCase() + selected.slice(1);\n }}>\n <SelectItem value=\"original\">\n Original (keep same format)\n </SelectItem>\n <SelectItem value=\"jpeg\">\n JPEG\n </SelectItem>\n <SelectItem value=\"png\">\n PNG\n </SelectItem>\n <SelectItem value=\"webp\">\n WebP (best compression)\n </SelectItem>\n </Select>\n </div>\n\n <div className={\"col-span-12\"}>\n <DebouncedTextField\n name={imageResizeQuality}\n type={\"number\"}\n label={\"Quality (0-100)\"}\n size={\"small\"}\n disabled={disabled}\n value={imageResizeQualityValue !== undefined && imageResizeQualityValue !== null ? imageResizeQualityValue.toString() : \"\"}\n onChange={(e) => {\n const value = e.target.value;\n if (value === \"\") setFieldValue(imageResizeQuality, undefined);\n else {\n const numValue = parseInt(value);\n if (numValue >= 0 && numValue <= 100) {\n setFieldValue(imageResizeQuality, numValue);\n }\n }\n }}\n />\n <Typography variant={\"caption\"} className={\"ml-3.5 mt-1 mb-2\"}>\n Higher quality = larger file size. Recommended: 80-90 for photos, 90-100 for graphics\n </Typography>\n </div>\n\n </div>\n </ExpandablePanel>\n\n </div>\n\n <div className={\"col-span-12\"}>\n\n <ValidationPanel>\n {!multiple && <div className={\"grid grid-cols-12 gap-2\"}>\n <GeneralPropertyValidation disabled={disabled}/>\n </div>}\n {multiple && <div className={\"col-span-12\"}>\n <ArrayPropertyValidation disabled={disabled}/>\n </div>}\n </ValidationPanel>\n\n </div>\n </>\n );\n}\n","import { isPropertyBuilder, Properties, PropertiesOrBuilders, Property, PropertyOrBuilder } from \"@firecms/core\";\n\nexport function editableProperty(property: PropertyOrBuilder): boolean {\n if (isPropertyBuilder(property)) {\n return false;\n } else {\n if (property.dataType === \"array\" && typeof property.of === \"function\")\n return false;\n else if (property.dataType === \"array\" && Array.isArray(property.of))\n return false;\n return property.editable === undefined ? true : Boolean(property.editable);\n }\n}\n\nexport function removeNonEditableProperties(properties: PropertiesOrBuilders<any>): Properties {\n return Object.entries(properties)\n .filter(([_, property]) => editableProperty(property))\n .map(([key, propertyOrBuilder]) => {\n const property = propertyOrBuilder as Property;\n if (!editableProperty(property)) {\n return undefined;\n } else if (property.dataType === \"map\" && property.properties) {\n return {\n [key]: {\n ...property,\n properties: removeNonEditableProperties(property.properties as PropertiesOrBuilders)\n }\n };\n } else {\n return { [key]: property };\n }\n })\n .filter((e) => Boolean(e))\n .reduce((a, b) => ({ ...a, ...b }), {}) as Properties;\n}\n","import {\n ErrorBoundary,\n getFieldConfig,\n isPropertyBuilder,\n Property,\n PropertyConfigBadge,\n PropertyOrBuilder,\n useCustomizationController,\n} from \"@firecms/core\";\nimport {\n cardClickableMixin,\n cardMixin,\n cardSelectedMixin,\n cls,\n DoNotDisturbOnIcon,\n FunctionsIcon,\n Paper,\n Typography,\n} from \"@firecms/ui\";\n\nimport { editableProperty } from \"../../utils/entities\";\n\nexport function PropertyFieldPreview({\n property,\n onClick,\n hasError,\n includeName,\n includeEditButton,\n selected\n }: {\n property: Property,\n hasError?: boolean,\n selected?: boolean,\n includeName?: boolean,\n includeEditButton?: boolean;\n onClick?: () => void\n}) {\n\n const { propertyConfigs } = useCustomizationController();\n\n const propertyConfig = getFieldConfig(property, propertyConfigs);\n const disabled = !editableProperty(property);\n\n const borderColorClass = hasError\n ? \"border-red-500 dark:border-red-500 border-opacity-100 dark:border-opacity-100 border-red-500/100 dark:border-red-500/100 ring-0 dark:ring-0\"\n : (selected ? \"border-primary\" : \"border-transparent\");\n\n return <ErrorBoundary>\n <div\n onClick={onClick}\n className=\"flex flex-row w-full cursor-pointer\">\n <div className={\"m-4\"}>\n <PropertyConfigBadge propertyConfig={propertyConfig}/>\n </div>\n <Paper\n className={cls(\n \"m-1\",\n \"border\",\n \"pl-2 w-full flex flex-row gap-4 items-center\",\n cardMixin,\n onClick ? cardClickableMixin : \"\",\n selected ? cardSelectedMixin : \"\",\n \"flex-grow p-4 border transition-colors duration-200\",\n borderColorClass\n )}\n >\n\n <div className=\"w-full flex flex-col\">\n\n {includeName &&\n <ErrorBoundary>\n <Typography variant=\"label\"\n component=\"span\"\n className=\"flex-grow pr-2\">\n {property.name\n ? property.name\n : \"\\u00a0\"\n }\n </Typography>\n </ErrorBoundary>}\n\n <div className=\"flex flex-row items-center\">\n <ErrorBoundary>\n <Typography className=\"flex-grow pr-2\"\n variant={includeName ? \"body2\" : \"label\"}\n component=\"span\"\n color=\"secondary\">\n {propertyConfig?.name}\n </Typography>\n </ErrorBoundary>\n <ErrorBoundary>\n <Typography variant=\"body2\"\n component=\"span\"\n color=\"disabled\">\n {property.dataType}\n </Typography>\n </ErrorBoundary>\n\n </div>\n </div>\n\n {includeEditButton && <Typography variant={\"button\"}>\n EDIT\n </Typography>}\n\n </Paper>\n </div>\n </ErrorBoundary>\n}\n\nexport function NonEditablePropertyPreview({\n name,\n selected,\n onClick,\n property\n }: {\n name: string,\n selected: boolean,\n onClick?: () => void,\n property?: PropertyOrBuilder\n}) {\n\n const { propertyConfigs } = useCustomizationController();\n\n const propertyConfig = !isPropertyBuilder(property) && property ? getFieldConfig(property, propertyConfigs) : undefined;\n\n return (\n <div\n onClick={onClick}\n className=\"flex flex-row w-full cursor-pointer\">\n <div className={\"relative m-4\"}>\n {propertyConfig && <PropertyConfigBadge propertyConfig={propertyConfig}/>}\n {!propertyConfig && <div\n className={\"h-8 w-8 flex items-center justify-center rounded-full shadow text-white bg-surface-500\"}>\n <FunctionsIcon color={\"inherit\"} size={\"small\"}/>\n </div>}\n <DoNotDisturbOnIcon color={\"disabled\"} size={\"small\"} className={\"absolute -right-2 -top-2\"}/>\n </div>\n <Paper\n className={cls(\n \"pl-2 w-full flex flex-row gap-4 items-center\",\n cardMixin,\n onClick ? cardClickableMixin : \"\",\n selected ? cardSelectedMixin : \"\",\n \"flex-grow p-4 border transition-colors duration-200\",\n selected ? \"border-primary\" : \"border-transparent\")}\n >\n\n <div className=\"w-full flex flex-col\">\n <Typography variant=\"label\"\n component=\"span\"\n className=\"flex-grow pr-2\">\n {property?.name\n ? property.name\n : name\n }\n </Typography>\n\n <div className=\"flex flex-row items-center\">\n {propertyConfig && <Typography className=\"flex-grow pr-2\"\n variant={\"body2\"}\n component=\"span\"\n color=\"secondary\">\n {propertyConfig?.name}\n </Typography>}\n\n {property && !isPropertyBuilder(property) && <ErrorBoundary>\n <Typography variant=\"body2\"\n component=\"span\"\n color=\"disabled\">\n {property.dataType}\n </Typography>\n </ErrorBoundary>}\n\n {property && isPropertyBuilder(property) && <ErrorBoundary>\n <Typography variant=\"body2\"\n component=\"span\"\n color=\"disabled\">\n This property is defined as a property builder in code\n </Typography>\n </ErrorBoundary>}\n\n {!property && <ErrorBoundary>\n <Typography variant=\"body2\"\n component=\"span\"\n color=\"disabled\">\n This field is defined as an additional field in code\n </Typography>\n </ErrorBoundary>}\n\n </div>\n\n {/*<div className=\"flex flex-row text-xs\">*/}\n {/* <Typography className=\"flex-grow pr-2\"*/}\n {/* variant=\"body2\"*/}\n {/* component=\"span\"*/}\n {/* color=\"secondary\">*/}\n {/* This field can only be edited in code*/}\n {/* </Typography>*/}\n {/*</div>*/}\n </div>\n\n </Paper>\n </div>)\n}\n","export function idToPropertiesPath(id: string): string {\n return \"properties.\" + id.replaceAll(\".\", \".properties.\");\n}\n\nexport function namespaceToPropertiesPath(namespace?: string): string {\n return namespace\n ? \"properties.\" + namespace.replaceAll(\".\", \".properties.\") + \".properties\"\n : \"properties\";\n}\n\nexport function namespaceToPropertiesOrderPath(namespace?: string): string {\n return namespace\n ? \"properties.\" + namespace.replaceAll(\".\", \".properties.\") + \".propertiesOrder\"\n : \"propertiesOrder\";\n}\n\nexport function getFullId(propertyKey: string, propertyNamespace?: string): string {\n return propertyNamespace\n ? `${propertyNamespace}.${propertyKey}`\n : propertyKey;\n}\n\nexport function getFullIdPath(propertyKey: string, propertyNamespace?: string): string {\n const keyWithNamespace = propertyNamespace\n ? `${propertyNamespace}.${propertyKey}`\n : propertyKey;\n return idToPropertiesPath(keyWithNamespace);\n}\n","import React, { createContext, useCallback, useContext, useState } from \"react\";\nimport { CollectionOperation } from \"../../api/generateCollectionApi\";\n\nexport interface AIModifiedPathsContextType {\n /** Set of paths that were modified by AI */\n modifiedPaths: Set<string>;\n /** Counter that increments each time AI modifies the collection - use in keys to force remount */\n generationCounter: number;\n /** Add paths from operations */\n addModifiedPaths: (operations: CollectionOperation[]) => void;\n /** Clear a specific path (when user edits that field) */\n clearPath: (path: string) => void;\n /** Clear all paths (on save or cancel) */\n clearAllPaths: () => void;\n /** Check if a path is modified */\n isPathModified: (path: string) => boolean;\n}\n\nconst AIModifiedPathsContext = createContext<AIModifiedPathsContextType | null>(null);\n\nexport function AIModifiedPathsProvider({ children }: { children: React.ReactNode }) {\n const [modifiedPaths, setModifiedPaths] = useState<Set<string>>(new Set());\n const [generationCounter, setGenerationCounter] = useState(0);\n\n const addModifiedPaths = useCallback((operations: CollectionOperation[]) => {\n setModifiedPaths(prev => {\n const newSet = new Set(prev);\n operations.forEach(op => {\n // Add the path and all parent paths for nested modifications\n newSet.add(op.path);\n // For properties modifications, also mark the property itself\n // e.g., \"properties.email.description\" -> also adds \"properties.email\"\n const parts = op.path.split(\".\");\n if (parts[0] === \"properties\" && parts.length >= 2) {\n newSet.add(`properties.${parts[1]}`);\n }\n });\n return newSet;\n });\n // Increment counter to force property form remount\n setGenerationCounter(prev => prev + 1);\n }, []);\n\n const clearPath = useCallback((path: string) => {\n setModifiedPaths(prev => {\n const newSet = new Set(prev);\n // Remove exact path and any child paths\n for (const p of newSet) {\n if (p === path || p.startsWith(path + \".\")) {\n newSet.delete(p);\n }\n }\n return newSet;\n });\n }, []);\n\n const clearAllPaths = useCallback(() => {\n setModifiedPaths(new Set());\n }, []);\n\n const isPathModified = useCallback((path: string): boolean => {\n // Check if this exact path or any parent path is modified\n if (modifiedPaths.has(path)) return true;\n // Check if any child paths are modified\n for (const p of modifiedPaths) {\n if (p.startsWith(path + \".\")) return true;\n }\n return false;\n }, [modifiedPaths]);\n\n return (\n <AIModifiedPathsContext.Provider value={{\n modifiedPaths,\n generationCounter,\n addModifiedPaths,\n clearPath,\n clearAllPaths,\n isPathModified\n }}>\n {children}\n </AIModifiedPathsContext.Provider>\n );\n}\n\nexport function useAIModifiedPaths(): AIModifiedPathsContextType | null {\n return useContext(AIModifiedPathsContext);\n}\n\n","import React from \"react\";\nimport equal from \"react-fast-compare\"\n\nimport {\n AdditionalFieldDelegate,\n AIModifiedIndicator,\n CMSType,\n isPropertyBuilder,\n PropertiesOrBuilders,\n PropertyOrBuilder\n} from \"@firecms/core\";\nimport {\n FindInPageIcon,\n defaultBorderMixin,\n DeleteIcon,\n IconButton,\n Menu,\n MenuItem,\n MoreVertIcon,\n Tooltip,\n VerticalAlignBottomIcon,\n VerticalAlignTopIcon\n} from \"@firecms/ui\";\nimport { NonEditablePropertyPreview, PropertyFieldPreview } from \"./PropertyFieldPreview\";\nimport {\n closestCenter,\n DndContext,\n DragEndEvent,\n KeyboardSensor,\n PointerSensor,\n useSensor,\n useSensors\n} from \"@dnd-kit/core\";\nimport {\n SortableContext,\n sortableKeyboardCoordinates,\n useSortable,\n verticalListSortingStrategy\n} from \"@dnd-kit/sortable\";\nimport { restrictToVerticalAxis } from \"@dnd-kit/modifiers\";\n\nimport { CSS } from \"@dnd-kit/utilities\";\nimport { getFullId, getFullIdPath } from \"./util\";\nimport { editableProperty } from \"../../utils/entities\";\nimport { useAIModifiedPaths } from \"./AIModifiedPathsContext\";\n\nexport const PropertyTree = React.memo(\n function PropertyTree<M extends {\n [Key: string]: CMSType\n }>({\n namespace,\n selectedPropertyKey,\n onPropertyClick,\n properties,\n propertiesOrder: propertiesOrderProp,\n additionalFields,\n errors,\n onPropertyMove,\n onPropertyRemove,\n className,\n inferredPropertyKeys,\n collectionEditable\n }: {\n namespace?: string;\n selectedPropertyKey?: string;\n onPropertyClick?: (propertyKey: string, namespace?: string) => void;\n properties: PropertiesOrBuilders<M>;\n propertiesOrder?: string[];\n additionalFields?: AdditionalFieldDelegate<M>[];\n errors: Record<string, any>;\n onPropertyMove?: (propertiesOrder: string[], namespace?: string) => void;\n onPropertyRemove?: (propertyKey: string, namespace?: string) => void;\n className?: string;\n inferredPropertyKeys?: string[];\n collectionEditable: boolean;\n }) {\n\n // Filter propertiesOrder to only include top-level keys (no dots) that exist in properties\n // Nested keys like \"data.mode\" are for column ordering in the table, not for the property editor\n const propertyKeys = Object.keys(properties);\n const filteredOrder = (propertiesOrderProp ?? propertyKeys)\n .filter(key => !key.includes(\".\") && properties[key as keyof typeof properties]);\n\n // Ensure all properties are included (append any missing ones)\n const missingKeys = propertyKeys.filter(key => !filteredOrder.includes(key));\n const propertiesOrder = [...filteredOrder, ...missingKeys];\n\n const sensors = useSensors(\n useSensor(PointerSensor, {\n activationConstraint: {\n distance: 5,\n }\n }),\n useSensor(KeyboardSensor, {\n coordinateGetter: sortableKeyboardCoordinates,\n })\n );\n\n const handleDragEnd = (event: DragEndEvent) => {\n const {\n active,\n over\n } = event;\n\n if (!over || active.id === over.id) {\n return;\n }\n\n const activeId = String(active.id);\n const overId = String(over.id);\n\n // Extract property keys from the full IDs\n const activeKey = activeId.includes(\".\") ? activeId.split(\".\").pop() : activeId;\n const overKey = overId.includes(\".\") ? overId.split(\".\").pop() : overId;\n\n if (!activeKey || !overKey) return;\n\n const oldIndex = propertiesOrder.indexOf(activeKey);\n const newIndex = propertiesOrder.indexOf(overKey);\n\n if (oldIndex !== -1 && newIndex !== -1) {\n const newPropertiesOrder = [...propertiesOrder];\n const [removed] = newPropertiesOrder.splice(oldIndex, 1);\n newPropertiesOrder.splice(newIndex, 0, removed);\n\n if (onPropertyMove) {\n onPropertyMove(newPropertiesOrder, namespace);\n }\n }\n };\n\n const items = propertiesOrder.map(key => getFullId(key, namespace));\n\n return (\n <DndContext\n sensors={sensors}\n collisionDetection={closestCenter}\n onDragEnd={handleDragEnd}\n modifiers={[restrictToVerticalAxis]}\n >\n <SortableContext\n items={items}\n strategy={verticalListSortingStrategy}\n >\n <div className={className}>\n\n {propertiesOrder && propertiesOrder\n .map((propertyKey: string, index: number) => {\n const property = properties[propertyKey] as PropertyOrBuilder;\n const additionalField = additionalFields?.find(field => field.key === propertyKey);\n\n if (!property && !additionalField) {\n console.warn(`Property ${propertyKey} not found in properties or additionalFields`);\n return null;\n }\n\n const id = getFullId(propertyKey, namespace);\n\n return (\n <PropertyTreeEntry\n key={id}\n id={id}\n propertyKey={propertyKey}\n propertyOrBuilder={property}\n additionalField={additionalField}\n errors={errors}\n namespace={namespace}\n propertiesOrder={propertiesOrder}\n inferredPropertyKeys={inferredPropertyKeys}\n onPropertyMove={onPropertyMove}\n onPropertyRemove={onPropertyRemove}\n onPropertyClick={onPropertyClick}\n selectedPropertyKey={selectedPropertyKey}\n collectionEditable={collectionEditable}\n />\n );\n }).filter(Boolean)}\n </div>\n </SortableContext>\n </DndContext>\n );\n },\n equal\n);\n\nexport function PropertyTreeEntry({\n id,\n propertyKey,\n namespace,\n propertyOrBuilder,\n additionalField,\n selectedPropertyKey,\n errors,\n propertiesOrder,\n onPropertyClick,\n onPropertyMove,\n onPropertyRemove,\n inferredPropertyKeys,\n collectionEditable\n}: {\n id: string;\n propertyKey: string;\n namespace?: string;\n propertyOrBuilder: PropertyOrBuilder;\n additionalField?: AdditionalFieldDelegate<any>;\n selectedPropertyKey?: string;\n errors: Record<string, any>;\n propertiesOrder: string[];\n onPropertyClick?: (propertyKey: string, namespace?: string) => void;\n onPropertyMove?: (propertiesOrder: string[], namespace?: string) => void;\n onPropertyRemove?: (propertyKey: string, namespace?: string) => void;\n inferredPropertyKeys?: string[];\n collectionEditable: boolean;\n}) {\n\n const {\n attributes,\n listeners,\n setNodeRef,\n transform,\n transition,\n isDragging\n } = useSortable({\n id\n });\n\n const style = {\n // Key change: use Translate instead of Transform to prevent stretching\n transform: CSS.Translate.toString(transform),\n transition,\n zIndex: isDragging ? 10 : undefined,\n position: \"relative\" as const,\n };\n\n const isPropertyInferred = inferredPropertyKeys?.includes(namespace ? `${namespace}.${propertyKey}` : propertyKey);\n const fullId = id;\n const fullIdPath = getFullIdPath(propertyKey, namespace);\n const hasError = fullIdPath in errors;\n\n let subtree;\n if (typeof propertyOrBuilder === \"object\") {\n const property = propertyOrBuilder;\n if (property.dataType === \"map\" && property.properties) {\n subtree = <PropertyTree\n selectedPropertyKey={selectedPropertyKey}\n namespace={fullId}\n properties={property.properties}\n propertiesOrder={property.propertiesOrder}\n errors={errors}\n onPropertyClick={onPropertyClick}\n onPropertyMove={onPropertyMove}\n onPropertyRemove={onPropertyRemove}\n inferredPropertyKeys={inferredPropertyKeys}\n collectionEditable={collectionEditable}\n />\n }\n }\n\n const selected = selectedPropertyKey === fullId;\n const editable = propertyOrBuilder && ((collectionEditable && !isPropertyBuilder(propertyOrBuilder)) || editableProperty(propertyOrBuilder));\n\n // Check if this property was AI-modified\n const aiModifiedPaths = useAIModifiedPaths();\n const isAIModified = aiModifiedPaths?.isPathModified(`properties.${propertyKey}`) ?? false;\n\n return (\n <div\n ref={setNodeRef}\n style={style}\n className=\"relative -ml-8 cursor-grab\"\n {...attributes}\n {...listeners}\n >\n <div className=\"relative\">\n {subtree && <div\n className={\"absolute border-l \" + defaultBorderMixin}\n style={{\n left: \"32px\",\n top: \"64px\",\n bottom: \"16px\"\n }} />}\n\n <div>\n {!isPropertyBuilder(propertyOrBuilder) && !additionalField && editable\n ? <PropertyFieldPreview\n property={propertyOrBuilder}\n onClick={onPropertyClick ? () => onPropertyClick(propertyKey, namespace) : undefined}\n includeName={true}\n selected={selected}\n hasError={hasError} />\n : <NonEditablePropertyPreview name={propertyKey}\n property={propertyOrBuilder}\n onClick={onPropertyClick ? () => onPropertyClick(propertyKey, namespace) : undefined}\n selected={selected} />}\n </div>\n\n <div className=\"absolute top-3 right-3 flex flex-row items-center gap-1\">\n {isAIModified && <AIModifiedIndicator />}\n {isPropertyInferred && <>\n <Tooltip title={\"Inferred property\"} asChild={true}>\n <IconButton size=\"smallest\" disabled>\n <FindInPageIcon size=\"smallest\" />\n </IconButton>\n </Tooltip>\n {onPropertyRemove && <Tooltip title={\"Remove inferred property\"}\n asChild={true}>\n <IconButton size=\"smallest\"\n color=\"inherit\"\n onClick={(e) => {\n e.stopPropagation();\n onPropertyRemove(propertyKey, namespace);\n }}>\n <DeleteIcon size={\"smallest\"} />\n </IconButton>\n </Tooltip>}\n </>}\n\n <Menu\n trigger={\n <IconButton\n size=\"smallest\"\n >\n <MoreVertIcon size={\"smallest\"} />\n </IconButton>\n }\n >\n <MenuItem\n dense\n onClick={() => {\n const currentIndex = propertiesOrder.indexOf(propertyKey);\n if (currentIndex > 0) {\n const newOrder = propertiesOrder.filter(k => k !== propertyKey);\n newOrder.unshift(propertyKey);\n onPropertyMove?.(newOrder, namespace);\n }\n }}\n >\n <VerticalAlignTopIcon size=\"smallest\" />\n Move to top\n </MenuItem>\n <MenuItem\n dense\n onClick={() => {\n const currentIndex = propertiesOrder.indexOf(propertyKey);\n if (currentIndex < propertiesOrder.length - 1) {\n const newOrder = propertiesOrder.filter(k => k !== propertyKey);\n newOrder.push(propertyKey);\n onPropertyMove?.(newOrder, namespace);\n }\n }}\n >\n <VerticalAlignBottomIcon size=\"smallest\" />\n Move to bottom\n </MenuItem>\n <MenuItem\n dense\n onClick={() => onPropertyRemove?.(propertyKey, namespace)}\n >\n <DeleteIcon size=\"smallest\" />\n Delete\n </MenuItem>\n </Menu>\n\n </div>\n\n {subtree && <div className={\"ml-16\"}>{subtree}</div>}\n </div>\n </div>\n );\n}\n","import React, { useState } from \"react\";\nimport { FieldCaption, MapProperty, Property, PropertyConfig, } from \"@firecms/core\";\nimport { AddIcon, BooleanSwitchWithLabel, Button, Paper, Typography } from \"@firecms/ui\";\nimport { PropertyFormDialog } from \"../PropertyEditView\";\nimport { getIn, useFormex } from \"@firecms/formex\";\nimport { PropertyTree } from \"../PropertyTree\";\nimport { getFullId, idToPropertiesPath, namespaceToPropertiesOrderPath, namespaceToPropertiesPath } from \"../util\";\n\nexport function MapPropertyField({ disabled, getData, allowDataInference, propertyConfigs, collectionEditable }: {\n disabled: boolean;\n getData?: () => Promise<object[]>;\n allowDataInference: boolean;\n propertyConfigs: Record<string, PropertyConfig>,\n collectionEditable: boolean;\n}) {\n\n const {\n values,\n setFieldValue\n } = useFormex<MapProperty>();\n\n const [propertyDialogOpen, setPropertyDialogOpen] = useState<boolean>(false);\n const [selectedPropertyKey, setSelectedPropertyKey] = useState<string | undefined>();\n const [selectedPropertyNamespace, setSelectedPropertyNamespace] = useState<string | undefined>();\n\n const propertiesOrder = values.propertiesOrder ?? Object.keys(values.properties ?? {});\n const onPropertyCreated = ({\n id,\n property\n }: { id?: string, property: Property }) => {\n if (!id)\n throw Error();\n setFieldValue(\"properties\", {\n ...(values.properties ?? {}),\n [id]: property\n }, false);\n\n const currentPropertiesOrder = values.propertiesOrder ?? Object.keys(values.properties ?? {});\n const newPropertiesOrder = currentPropertiesOrder.includes(id) ? currentPropertiesOrder : [...currentPropertiesOrder, id];\n setFieldValue(\"propertiesOrder\", newPropertiesOrder, false);\n\n setPropertyDialogOpen(false);\n };\n\n const deleteProperty = (propertyKey?: string, namespace?: string) => {\n const fullId = propertyKey ? getFullId(propertyKey, namespace) : undefined;\n if (!fullId)\n throw Error(\"collection editor miss config\");\n\n const propertiesPath = idToPropertiesPath(fullId);\n const propertiesOrderPath = namespaceToPropertiesOrderPath(namespace);\n\n const currentPropertiesOrder: string[] = getIn(values, propertiesOrderPath) ?? Object.keys(getIn(values, namespaceToPropertiesPath(namespace)));\n\n setFieldValue(propertiesPath, undefined, false);\n setFieldValue(propertiesOrderPath, currentPropertiesOrder.filter((p) => p !== propertyKey), false);\n\n setPropertyDialogOpen(false);\n setSelectedPropertyKey(undefined);\n setSelectedPropertyNamespace(undefined);\n };\n\n const selectedPropertyFullId = selectedPropertyKey ? getFullId(selectedPropertyKey, selectedPropertyNamespace) : undefined;\n const selectedProperty = selectedPropertyFullId ? getIn(values.properties, selectedPropertyFullId.replaceAll(\".\", \".properties.\")) : undefined;\n\n const empty = !propertiesOrder || propertiesOrder.length < 1;\n\n const onPropertyMove = (propertiesOrder: string[], namespace?: string) => {\n setFieldValue(namespaceToPropertiesOrderPath(namespace), propertiesOrder, false);\n };\n\n return (\n <>\n <div className={\"col-span-12\"}>\n <div className=\"flex justify-between items-end my-4\">\n <Typography variant={\"subtitle2\"}>Properties in this group</Typography>\n <Button\n onClick={() => setPropertyDialogOpen(true)}\n startIcon={<AddIcon/>}\n >\n Add property to {values.name ?? \"this group\"}\n </Button>\n </div>\n <Paper className=\"p-2 pl-8\">\n <PropertyTree\n properties={values.properties ?? {}}\n propertiesOrder={propertiesOrder}\n errors={{}}\n collectionEditable={collectionEditable}\n onPropertyClick={(propertyKey, namespace) => {\n setSelectedPropertyKey(propertyKey);\n setSelectedPropertyNamespace(namespace);\n setPropertyDialogOpen(true);\n }}\n onPropertyMove={onPropertyMove}/>\n\n {empty &&\n <Typography variant={\"label\"}\n className=\"h-full flex items-center justify-center p-4\">\n Add the first property to this group\n </Typography>}\n </Paper>\n </div>\n\n <div className={\"col-span-12\"}>\n <BooleanSwitchWithLabel\n position={\"start\"}\n size={\"medium\"}\n label=\"Spread children as columns\"\n onValueChange={(v) => setFieldValue(\"spreadChildren\", v)}\n value={values.spreadChildren ?? false}\n />\n <FieldCaption>\n Set this flag to true if you want to display the children of this group as individual columns. This\n will only work for top level groups.\n </FieldCaption>\n </div>\n\n <PropertyFormDialog\n inArray={false}\n forceShowErrors={false}\n open={propertyDialogOpen}\n allowDataInference={allowDataInference}\n collectionEditable={collectionEditable}\n onCancel={() => {\n setPropertyDialogOpen(false);\n setSelectedPropertyKey(undefined);\n setSelectedPropertyNamespace(undefined);\n }}\n onOkClicked={() => {\n setPropertyDialogOpen(false);\n setSelectedPropertyKey(undefined);\n setSelectedPropertyNamespace(undefined);\n }}\n getData={getData}\n onDelete={deleteProperty}\n propertyKey={selectedPropertyKey}\n propertyNamespace={selectedPropertyNamespace}\n property={selectedProperty}\n existingProperty={Boolean(selectedPropertyKey)}\n autoUpdateId={!selectedPropertyKey}\n autoOpenTypeSelect={!selectedPropertyKey}\n onPropertyChanged={onPropertyCreated}\n existingPropertyKeys={selectedPropertyKey ? undefined : propertiesOrder}\n propertyConfigs={propertyConfigs}\n />\n\n </>);\n}\n","import React, { useState } from \"react\";\nimport { ArrayProperty, getFieldConfig, Property, PropertyConfig } from \"@firecms/core\";\nimport { Button, Paper, Typography } from \"@firecms/ui\";\nimport { Field, getIn, useFormex } from \"@firecms/formex\";\nimport { PropertyFormDialog } from \"../PropertyEditView\";\nimport { PropertyFieldPreview } from \"../PropertyFieldPreview\";\nimport { ArrayPropertyValidation } from \"./validation/ArrayPropertyValidation\";\nimport { ValidationPanel } from \"./validation/ValidationPanel\";\n\nexport function RepeatPropertyField({\n showErrors,\n existing,\n disabled,\n getData,\n allowDataInference,\n propertyConfigs,\n collectionEditable\n }: {\n showErrors: boolean,\n existing: boolean,\n disabled: boolean,\n getData?: () => Promise<object[]>;\n allowDataInference: boolean;\n propertyConfigs: Record<string, PropertyConfig>,\n collectionEditable: boolean;\n}) {\n\n const {\n values,\n handleChange,\n errors,\n setFieldValue,\n touched\n } = useFormex<ArrayProperty>();\n\n const [propertyDialogOpen, setPropertyDialogOpen] = useState(false);\n const ofProperty = getIn(values, \"of\");\n const ofPropertyError = getIn(touched, \"of\") && getIn(errors, \"of\");\n\n const onPropertyChanged = ({ id, property, namespace }:\n { id?: string, property: Property, namespace?: string }) => {\n setFieldValue(\"of\", property);\n };\n\n const widget = ofProperty && getFieldConfig(ofProperty, propertyConfigs);\n return (\n <>\n <div className={\"col-span-12\"}>\n <Typography variant={\"subtitle2\"}>\n Repeat component\n </Typography>\n <Field\n name={\"of\"}\n value={ofProperty}\n // validate={(property: Property) => {\n // return property?.dataType ? undefined : \"You need to specify a repeat field\";\n // }}\n >\n {({}) => (\n <Paper className=\"p-2 mt-4\">\n\n {ofProperty && <PropertyFieldPreview\n property={ofProperty}\n onClick={disabled ? undefined : () => setPropertyDialogOpen(true)}\n includeName={false}\n includeEditButton={true}\n selected={false}\n hasError={false}/>}\n\n {!disabled && !ofProperty && <Button variant={\"text\"}\n size={\"large\"}\n color={ofPropertyError ? \"error\" : \"primary\"}\n onClick={() => setPropertyDialogOpen(true)}>\n Edit {`${widget ? widget.name : \"repeat component\"}`}\n </Button>}\n\n <PropertyFormDialog\n inArray={true}\n open={propertyDialogOpen}\n existingProperty={existing}\n getData={getData}\n autoUpdateId={!existing}\n autoOpenTypeSelect={!existing}\n onOkClicked={() => setPropertyDialogOpen(false)}\n allowDataInference={allowDataInference}\n property={ofProperty}\n includeIdAndName={false}\n onPropertyChanged={onPropertyChanged}\n forceShowErrors={showErrors}\n propertyConfigs={propertyConfigs}\n collectionEditable={collectionEditable}\n />\n </Paper>\n )}\n </Field>\n\n </div>\n\n <div className={\"col-span-12\"}>\n\n <ValidationPanel>\n <ArrayPropertyValidation disabled={disabled}/>\n </ValidationPanel>\n\n </div>\n </>\n );\n}\n","import { Field, getIn, useFormex } from \"@firecms/formex\";\nimport { DebouncedTextField } from \"@firecms/ui\";\nimport { PropertyWithId } from \"../PropertyEditView\";\nimport React from \"react\";\nimport { FieldCaption, prettifyIdentifier, toSnakeCase } from \"@firecms/core\";\n\ntype CommonPropertyFieldsProps = {\n showErrors: boolean,\n disabledId: boolean,\n disabled: boolean;\n isNewProperty: boolean;\n autoUpdateId: boolean;\n};\n\nexport const CommonPropertyFields = React.forwardRef<HTMLDivElement, CommonPropertyFieldsProps>(\n function CommonPropertyFields({\n showErrors,\n disabledId,\n disabled,\n autoUpdateId,\n isNewProperty\n }, ref) {\n\n const {\n errors,\n values,\n setFieldValue,\n setFieldTouched,\n touched,\n validate\n } = useFormex<PropertyWithId>();\n\n const name = \"name\";\n const nameError = showErrors && getIn(errors, name);\n\n const id = \"id\";\n const idError = showErrors && getIn(errors, id);\n\n const description = \"description\";\n const descriptionError = showErrors && getIn(errors, description);\n\n return (\n <div className={\"flex flex-col gap-2 col-span-12\"}>\n\n <div>\n <Field\n name={name}\n inputRef={ref}\n as={DebouncedTextField}\n value={values[name]}\n onChange={(e: any) => {\n const newNameValue = e.target.value;\n const idTouched = getIn(touched, id);\n if (!idTouched && autoUpdateId) {\n setFieldValue(id, newNameValue ? toSnakeCase(newNameValue) : \"\", false)\n }\n setFieldValue(name, newNameValue, true);\n setFieldTouched(name, true);\n }}\n style={{ fontSize: 20 }}\n placeholder={\"Field name\"}\n required\n disabled={disabled}\n error={Boolean(nameError)}/>\n\n <FieldCaption error={Boolean(nameError)}>\n {nameError}\n </FieldCaption>\n </div>\n\n <div>\n <Field\n name={id}\n as={DebouncedTextField}\n label={\"ID\"}\n value={values[id]}\n onChange={(e: any) => {\n const newIdValue = e.target.value;\n const nameTouched = getIn(touched, name);\n if (!nameTouched && autoUpdateId) {\n setFieldValue(name, newIdValue ? prettifyIdentifier(newIdValue) : \"\")\n }\n setFieldValue(id, newIdValue, true);\n setFieldTouched(id, true);\n }}\n disabled={disabledId || disabled}\n required\n size=\"small\"\n error={Boolean(idError)}/>\n <FieldCaption error={Boolean(idError)}>\n {idError}\n </FieldCaption>\n </div>\n\n <div>\n <Field name={description}\n as={DebouncedTextField}\n label={\"Description\"}\n disabled={disabled}\n error={Boolean(descriptionError)}/>\n <FieldCaption error={Boolean(descriptionError)}>\n {descriptionError}\n </FieldCaption>\n </div>\n\n </div>\n );\n\n }\n);\n","import React from \"react\";\nimport { StringPropertyValidation } from \"./validation/StringPropertyValidation\";\nimport { ValidationPanel } from \"./validation/ValidationPanel\";\nimport { getIn, useFormex } from \"@firecms/formex\";\n\nimport { TextField } from \"@firecms/ui\";\n\nexport function StringPropertyField({\n widgetId,\n disabled,\n showErrors\n }: {\n widgetId: \"text_field\" | \"multiline\" | \"email\" | \"user_select\";\n disabled: boolean;\n showErrors: boolean;\n}) {\n\n const { values, setFieldValue } = useFormex();\n\n return (\n <>\n <div className={\"col-span-12\"}>\n\n <ValidationPanel>\n\n {widgetId === \"text_field\" &&\n <StringPropertyValidation disabled={disabled}\n length={true}\n lowercase={true}\n matches={true}\n max={true}\n min={true}\n trim={true}\n uppercase={true}\n showErrors={showErrors}/>}\n {widgetId === \"user_select\" &&\n <StringPropertyValidation disabled={disabled}\n showErrors={showErrors}/>}\n\n {widgetId === \"multiline\" &&\n <StringPropertyValidation disabled={disabled}\n length={true}\n lowercase={true}\n max={true}\n min={true}\n trim={true}\n uppercase={true}\n showErrors={showErrors}/>}\n\n {widgetId === \"email\" &&\n <StringPropertyValidation disabled={disabled}\n max={true}\n min={true}\n trim={true}\n showErrors={showErrors}/>}\n\n </ValidationPanel>\n\n </div>\n\n <div className={\"col-span-12\"}>\n\n <TextField name={\"defaultValue\"}\n disabled={disabled}\n onChange={(e: any) => {\n setFieldValue(\"defaultValue\", e.target.value === \"\" ? undefined : e.target.value);\n }}\n label={\"Default value\"}\n value={getIn(values, \"defaultValue\") ?? \"\"}/>\n\n </div>\n </>\n );\n}\n","import React from \"react\";\nimport { Field, FormexFieldProps, getIn, useFormex } from \"@firecms/formex\";\n\nimport { GeneralPropertyValidation } from \"./validation/GeneralPropertyValidation\";\nimport { ValidationPanel } from \"./validation/ValidationPanel\";\nimport { SwitchControl } from \"../SwitchControl\";\n\nexport function BooleanPropertyField({ disabled }: {\n disabled: boolean;\n}) {\n const { values } = useFormex();\n const defaultValue = getIn(values, \"defaultValue\");\n\n return (\n <>\n <div className={\"col-span-12\"}>\n\n <ValidationPanel>\n <GeneralPropertyValidation disabled={disabled}/>\n </ValidationPanel>\n\n </div>\n\n <div className={\"col-span-12\"}>\n\n <Field\n name={\"defaultValue\"}>\n {({ field, form }: FormexFieldProps) => {\n return <SwitchControl\n size={\"medium\"}\n label={defaultValue === null || defaultValue === undefined ? \"Default value not set\" : (\"Default value is \" + defaultValue.toString())}\n disabled={disabled}\n allowIndeterminate={true} field={field}\n form={form}/>\n }}\n </Field>\n\n </div>\n </>\n );\n}\n","import React, { useState } from \"react\";\nimport { AddIcon, Button, Paper, Typography } from \"@firecms/ui\";\nimport { getIn, useFormex } from \"@firecms/formex\";\nimport { OnPropertyChangedParams, PropertyFormDialog } from \"../PropertyEditView\";\nimport {\n getFullId,\n getFullIdPath,\n idToPropertiesPath,\n namespaceToPropertiesOrderPath,\n namespaceToPropertiesPath\n} from \"../util\";\nimport { PropertyTree } from \"../PropertyTree\";\nimport { ArrayProperty, PropertyConfig } from \"@firecms/core\";\n\nexport function BlockPropertyField({\n disabled,\n getData,\n allowDataInference,\n propertyConfigs,\n collectionEditable\n }: {\n disabled: boolean;\n getData?: () => Promise<object[]>;\n allowDataInference: boolean;\n propertyConfigs: Record<string, PropertyConfig>,\n collectionEditable: boolean;\n}) {\n\n const {\n values,\n setFieldValue\n } = useFormex<ArrayProperty>();\n\n const [propertyDialogOpen, setPropertyDialogOpen] = useState<boolean>(false);\n const [selectedPropertyKey, setSelectedPropertyKey] = useState<string | undefined>();\n const [selectedPropertyNamespace, setSelectedPropertyNamespace] = useState<string | undefined>();\n\n const onPropertyChanged = ({\n id,\n namespace,\n property\n }: OnPropertyChangedParams) => {\n if (!id)\n throw Error();\n\n setFieldValue(\"oneOf.\" + getFullIdPath(id, namespace), property, false);\n\n const currentPropertiesOrder = values.oneOf?.propertiesOrder ?? Object.keys(values.oneOf?.properties ?? {});\n const newPropertiesOrder = currentPropertiesOrder.includes(id) ? currentPropertiesOrder : [...currentPropertiesOrder, id];\n setFieldValue(\"oneOf.\" + namespaceToPropertiesOrderPath(namespace), newPropertiesOrder, false);\n setPropertyDialogOpen(false);\n };\n\n const selectedPropertyFullId = selectedPropertyKey ? getFullId(selectedPropertyKey, selectedPropertyNamespace) : undefined;\n const selectedProperty = selectedPropertyFullId ? getIn(values.oneOf?.properties, selectedPropertyFullId.replaceAll(\".\", \".properties.\")) : undefined;\n\n const deleteProperty = (propertyKey?: string, namespace?: string) => {\n const fullId = propertyKey ? getFullId(propertyKey, namespace) : undefined;\n if (!fullId)\n throw Error(\"collection editor miss config\");\n\n setFieldValue(`oneOf.${idToPropertiesPath(fullId)}`, undefined, false);\n const propertiesOrderPath = `oneOf.${namespaceToPropertiesOrderPath(namespace)}`;\n const currentPropertiesOrder: string[] = getIn(values, propertiesOrderPath) ?? Object.keys(getIn(values, namespaceToPropertiesPath(namespace)));\n setFieldValue(propertiesOrderPath, currentPropertiesOrder.filter((p) => p !== propertyKey), false);\n\n setPropertyDialogOpen(false);\n setSelectedPropertyKey(undefined);\n setSelectedPropertyNamespace(undefined);\n };\n\n const addChildButton = <Button\n autoFocus\n onClick={() => setPropertyDialogOpen(true)}\n startIcon={<AddIcon/>}\n >\n Add property to {values.name ?? \"this block\"}\n </Button>;\n\n const onPropertyMove = (propertiesOrder: string[], namespace?: string) => {\n setFieldValue(`oneOf.${namespaceToPropertiesOrderPath(namespace)}`, propertiesOrder, false);\n };\n\n return (\n <>\n <div className={\"col-span-12\"}>\n <div className={\"flex justify-between items-end mt-8 mb-4\"}>\n <Typography variant={\"subtitle2\"}>\n Properties in this block\n </Typography>\n {addChildButton}\n </div>\n <Paper className=\"p-2 pl-8\">\n\n <PropertyTree\n properties={values.oneOf?.properties ?? {}}\n propertiesOrder={values.oneOf?.propertiesOrder}\n errors={{}}\n collectionEditable={collectionEditable}\n onPropertyClick={disabled\n ? undefined\n : (propertyKey, namespace) => {\n setSelectedPropertyKey(propertyKey);\n setSelectedPropertyNamespace(namespace);\n setPropertyDialogOpen(true);\n }}\n onPropertyMove={disabled\n ? undefined\n : onPropertyMove}/>\n\n {!disabled && (values.oneOf?.propertiesOrder?.length === 0)&&\n <div className=\"h-full flex items-center justify-center p-4\">\n Add the first property to this block\n </div>}\n\n </Paper>\n </div>\n\n {!disabled && <PropertyFormDialog\n inArray={false}\n forceShowErrors={false}\n open={propertyDialogOpen}\n getData={getData}\n allowDataInference={allowDataInference}\n onCancel={() => {\n setPropertyDialogOpen(false);\n setSelectedPropertyKey(undefined);\n setSelectedPropertyNamespace(undefined);\n }}\n onOkClicked={() => {\n setPropertyDialogOpen(false);\n setSelectedPropertyKey(undefined);\n setSelectedPropertyNamespace(undefined);\n }}\n collectionEditable={collectionEditable}\n onDelete={deleteProperty}\n propertyKey={selectedPropertyKey}\n propertyNamespace={selectedPropertyNamespace}\n property={selectedProperty}\n existingProperty={Boolean(selectedPropertyKey)}\n autoUpdateId={!selectedPropertyKey}\n autoOpenTypeSelect={!selectedPropertyKey}\n onPropertyChanged={onPropertyChanged}\n existingPropertyKeys={selectedPropertyKey ? undefined : values.oneOf?.propertiesOrder}\n propertyConfigs={propertyConfigs}/>}\n\n </>);\n}\n","import React from \"react\";\n\nimport { Field, FormexFieldProps, getIn, useFormex } from \"@firecms/formex\";\nimport { DebouncedTextField } from \"@firecms/ui\";\nimport { GeneralPropertyValidation } from \"./GeneralPropertyValidation\";\nimport { SwitchControl } from \"../../SwitchControl\";\n\nexport function NumberPropertyValidation({ disabled }: {\n disabled: boolean;\n}) {\n\n const {\n values,\n handleChange\n } = useFormex();\n\n const validationMin = \"validation.min\";\n const validationMax = \"validation.max\";\n const validationLessThan = \"validation.lessThan\";\n const validationMoreThan = \"validation.moreThan\";\n const validationPositive = \"validation.positive\";\n const validationNegative = \"validation.negative\";\n const validationInteger = \"validation.integer\";\n\n return (\n\n <div className={\"grid grid-cols-12 gap-2\"}>\n <GeneralPropertyValidation disabled={disabled}/>\n\n\n <div className={\"col-span-6\"}>\n <DebouncedTextField value={getIn(values, validationMin)}\n label={\"Min value\"}\n name={validationMin}\n type=\"number\"\n size=\"small\"\n disabled={disabled}\n onChange={handleChange}/>\n </div>\n\n <div className={\"col-span-6\"}>\n <DebouncedTextField value={getIn(values, validationMax)}\n label={\"Max value\"}\n name={validationMax}\n type=\"number\"\n size=\"small\"\n\n disabled={disabled}\n onChange={handleChange}/>\n </div>\n\n\n <div className={\"col-span-6\"}>\n <DebouncedTextField\n value={getIn(values, validationLessThan)}\n label={\"Less than\"}\n name={validationLessThan}\n type=\"number\"\n size=\"small\"\n\n disabled={disabled}\n onChange={handleChange}/>\n </div>\n\n <div className={\"col-span-6\"}>\n <DebouncedTextField\n value={getIn(values, validationMoreThan)}\n label={\"More than\"}\n name={validationMoreThan}\n type=\"number\"\n size=\"small\"\n\n disabled={disabled}\n onChange={handleChange}/>\n </div>\n\n <div className={\"col-span-4\"}>\n <Field name={validationPositive}\n type=\"checkbox\">\n {({ field, form }: FormexFieldProps) => {\n return <SwitchControl\n label={\"Positive value\"}\n disabled={disabled}\n form={form}\n field={field}/>\n }}\n </Field>\n </div>\n <div className={\"col-span-4\"}>\n <Field name={validationNegative}\n type=\"checkbox\">\n {({ field, form }: FormexFieldProps) => {\n return <SwitchControl\n label={\"Negative value\"}\n disabled={disabled}\n form={form}\n field={field}/>\n }}\n </Field>\n </div>\n <div className={\"col-span-4\"}>\n <Field name={validationInteger}\n type=\"checkbox\">\n {({ field, form }: FormexFieldProps) => {\n return <SwitchControl\n label={\"Integer value\"}\n disabled={disabled}\n form={form}\n field={field}/>\n }}\n </Field>\n </div>\n </div>\n );\n}\n","import React from \"react\";\nimport { NumberPropertyValidation } from \"./validation/NumberPropertyValidation\";\nimport { ValidationPanel } from \"./validation/ValidationPanel\";\nimport { TextField } from \"@firecms/ui\";\nimport { getIn, useFormex } from \"@firecms/formex\";\n\nexport function NumberPropertyField({ disabled }: {\n disabled: boolean;\n}) {\n\n const { values, setFieldValue } = useFormex();\n\n return (\n <>\n\n <div className={\"col-span-12\"}>\n\n <ValidationPanel>\n <NumberPropertyValidation disabled={disabled}/>\n </ValidationPanel>\n\n </div>\n\n <div className={\"col-span-12\"}>\n\n <TextField name={\"defaultValue\"}\n disabled={disabled}\n type={\"number\"}\n onChange={(e: any) => {\n setFieldValue(\"defaultValue\", e.target.value === \"\" ? undefined : parseFloat(e.target.value));\n }}\n label={\"Default value\"}\n value={getIn(values, \"defaultValue\") ?? \"\"}/>\n\n </div>\n </>\n );\n}\n","import React from \"react\";\nimport { Field, getIn, useFormex } from \"@firecms/formex\";\nimport { FieldCaption, IconForView, NumberProperty, StringProperty, useNavigationController } from \"@firecms/core\";\nimport { CircularProgress, Select, SelectGroup, SelectItem, Typography, } from \"@firecms/ui\";\n\nexport function ReferencePropertyField({\n existing,\n multiple,\n disabled,\n showErrors,\n asString\n }: {\n existing: boolean,\n multiple: boolean,\n disabled: boolean,\n showErrors: boolean,\n asString?: boolean\n}) {\n\n const {\n values,\n handleChange,\n errors,\n } = useFormex<StringProperty | NumberProperty>();\n\n const navigation = useNavigationController();\n\n if (!navigation)\n return <div className={\"col-span-12\"}>\n <CircularProgress/>\n </div>;\n\n const pathPath = asString ? \"reference.path\" : (multiple ? \"of.path\" : \"path\") ;\n const pathValue: string | undefined = getIn(values, pathPath);\n const pathError: string | undefined = showErrors && getIn(errors, pathPath);\n\n return (\n <>\n <div className={\"col-span-12\"}>\n\n <Field name={pathPath}\n pathPath={pathPath}\n type=\"select\"\n disabled={disabled}\n value={pathValue}\n error={pathError}\n handleChange={handleChange}\n as={CollectionsSelect}/>\n\n </div>\n\n </>\n );\n}\n\nexport function CollectionsSelect({\n disabled,\n pathPath,\n value,\n handleChange,\n error,\n ...props\n }: {\n disabled: boolean,\n pathPath: string,\n value?: string,\n handleChange: (event: any) => void,\n error?: string\n}) {\n\n const navigation = useNavigationController();\n\n if (!navigation)\n return <div className={\"col-span-12\"}>\n <CircularProgress/>\n </div>;\n\n const collections = navigation?.collections ?? [];\n\n const groups: string[] = Array.from(new Set(\n Object.values(collections).map(e => e.group).filter(Boolean) as string[]\n ).values());\n\n const ungroupedCollections = collections.filter((col) => !col.group);\n\n return (\n <>\n <Select\n error={Boolean(error)}\n disabled={disabled}\n value={value ?? \"\"}\n position={\"item-aligned\"}\n name={pathPath}\n size={\"large\"}\n fullWidth={true}\n onChange={handleChange}\n label={\"Target collection\"}\n renderValue={(selected) => {\n const selectedCollection = collections.find(collection => collection.id === selected || collection.path === selected);\n if (!selectedCollection) return null;\n return (\n <div className=\"flex flex-row\">\n <IconForView collectionOrView={selectedCollection}/>\n <Typography\n variant={\"subtitle2\"}\n className=\"font-medium ml-4\">\n {selectedCollection?.name.toUpperCase()}\n </Typography>\n </div>)\n }}\n {...props}>\n\n {groups.flatMap((group) => (\n <SelectGroup label={group || \"Views\"}\n key={`group_${group}`}>\n {\n collections.filter(collection => collection.group === group)\n .map((collection) => {\n return <SelectItem\n key={`${collection.id ?? collection.path}-${group}`}\n value={collection.id ?? collection.path}>\n <div className=\"flex flex-row\">\n <IconForView collectionOrView={collection}/>\n <Typography\n variant={\"subtitle2\"}\n className=\"font-medium ml-4\">\n {collection?.name.toUpperCase()}\n </Typography>\n </div>\n </SelectItem>;\n })\n\n }\n </SelectGroup>\n ))}\n\n {ungroupedCollections && <SelectGroup label={\"Views\"}>\n {ungroupedCollections\n .map((collection) => {\n return <SelectItem key={collection.id ?? collection.path}\n value={collection.id ?? collection.path}>\n <div className=\"flex flex-row\">\n <IconForView collectionOrView={collection}/>\n <Typography\n variant={\"subtitle2\"}\n className=\"font-medium ml-4\">\n {collection?.name.toUpperCase()}\n </Typography>\n </div>\n </SelectItem>;\n })\n\n }\n </SelectGroup>}\n\n </Select>\n\n </>\n );\n}\n","import React from \"react\";\nimport { getIn, useFormex } from \"@firecms/formex\";\nimport { FieldCaption, NumberProperty, StringProperty } from \"@firecms/core\";\nimport { Select, SelectItem } from \"@firecms/ui\";\nimport { GeneralPropertyValidation } from \"./validation/GeneralPropertyValidation\";\nimport { ValidationPanel } from \"./validation/ValidationPanel\";\n\n// Common IANA timezones with human-readable labels\nconst TIMEZONES = [\n // UTC\n { value: \"UTC\", label: \"UTC (Coordinated Universal Time)\" },\n // Americas\n { value: \"America/New_York\", label: \"New York (US Eastern)\" },\n { value: \"America/Chicago\", label: \"Chicago (US Central)\" },\n { value: \"America/Denver\", label: \"Denver (US Mountain)\" },\n { value: \"America/Los_Angeles\", label: \"Los Angeles (US Pacific)\" },\n { value: \"America/Anchorage\", label: \"Anchorage (Alaska)\" },\n { value: \"America/Toronto\", label: \"Toronto (Canada Eastern)\" },\n { value: \"America/Vancouver\", label: \"Vancouver (Canada Pacific)\" },\n { value: \"America/Mexico_City\", label: \"Mexico City\" },\n { value: \"America/Sao_Paulo\", label: \"São Paulo (Brazil)\" },\n { value: \"America/Buenos_Aires\", label: \"Buenos Aires (Argentina)\" },\n // Europe\n { value: \"Europe/London\", label: \"London (UK)\" },\n { value: \"Europe/Paris\", label: \"Paris (France)\" },\n { value: \"Europe/Berlin\", label: \"Berlin (Germany)\" },\n { value: \"Europe/Madrid\", label: \"Madrid (Spain)\" },\n { value: \"Europe/Rome\", label: \"Rome (Italy)\" },\n { value: \"Europe/Amsterdam\", label: \"Amsterdam (Netherlands)\" },\n { value: \"Europe/Brussels\", label: \"Brussels (Belgium)\" },\n { value: \"Europe/Zurich\", label: \"Zurich (Switzerland)\" },\n { value: \"Europe/Stockholm\", label: \"Stockholm (Sweden)\" },\n { value: \"Europe/Vienna\", label: \"Vienna (Austria)\" },\n { value: \"Europe/Warsaw\", label: \"Warsaw (Poland)\" },\n { value: \"Europe/Prague\", label: \"Prague (Czech Republic)\" },\n { value: \"Europe/Athens\", label: \"Athens (Greece)\" },\n { value: \"Europe/Moscow\", label: \"Moscow (Russia)\" },\n { value: \"Europe/Istanbul\", label: \"Istanbul (Turkey)\" },\n // Asia\n { value: \"Asia/Dubai\", label: \"Dubai (UAE)\" },\n { value: \"Asia/Kolkata\", label: \"Mumbai / Delhi (India)\" },\n { value: \"Asia/Bangkok\", label: \"Bangkok (Thailand)\" },\n { value: \"Asia/Singapore\", label: \"Singapore\" },\n { value: \"Asia/Hong_Kong\", label: \"Hong Kong\" },\n { value: \"Asia/Shanghai\", label: \"Shanghai (China)\" },\n { value: \"Asia/Tokyo\", label: \"Tokyo (Japan)\" },\n { value: \"Asia/Seoul\", label: \"Seoul (South Korea)\" },\n { value: \"Asia/Jakarta\", label: \"Jakarta (Indonesia)\" },\n // Oceania\n { value: \"Australia/Sydney\", label: \"Sydney (Australia Eastern)\" },\n { value: \"Australia/Melbourne\", label: \"Melbourne (Australia)\" },\n { value: \"Australia/Brisbane\", label: \"Brisbane (Australia)\" },\n { value: \"Australia/Perth\", label: \"Perth (Australia Western)\" },\n { value: \"Pacific/Auckland\", label: \"Auckland (New Zealand)\" },\n // Africa\n { value: \"Africa/Cairo\", label: \"Cairo (Egypt)\" },\n { value: \"Africa/Johannesburg\", label: \"Johannesburg (South Africa)\" },\n { value: \"Africa/Lagos\", label: \"Lagos (Nigeria)\" },\n];\n\nexport function DateTimePropertyField({ disabled }: {\n disabled: boolean;\n}) {\n\n const {\n values,\n errors,\n touched,\n setFieldValue\n } = useFormex<StringProperty | NumberProperty>();\n\n const modePath = \"mode\";\n const modeValue: string | undefined = getIn(values, modePath);\n const modeError: string | undefined = getIn(touched, modePath) && getIn(errors, modePath);\n\n const autoValuePath = \"autoValue\";\n const autoValueValue: string | undefined = getIn(values, autoValuePath);\n const autoValueError: string | undefined = getIn(touched, autoValuePath) && getIn(errors, autoValuePath);\n\n const timezonePath = \"timezone\";\n const timezoneValue: string | undefined = getIn(values, timezonePath);\n const timezoneError: string | undefined = getIn(touched, timezonePath) && getIn(errors, timezonePath);\n\n return (\n <>\n <div className={\"flex flex-col col-span-12 gap-2\"}>\n <div>\n <Select name={modePath}\n value={modeValue ?? \"date\"}\n error={Boolean(modeError)}\n size={\"large\"}\n onValueChange={(v) => setFieldValue(modePath, v)}\n label={\"Mode\"}\n fullWidth={true}\n renderValue={(v) => {\n switch (v) {\n case \"date_time\":\n return \"Date/Time\";\n case \"date\":\n return \"Date\";\n default:\n return \"\";\n }\n }}\n disabled={disabled}>\n <SelectItem value={\"date_time\"}> Date/Time </SelectItem>\n <SelectItem value={\"date\"}> Date </SelectItem>\n </Select>\n <FieldCaption error={Boolean(modeError)}>\n {modeError}\n </FieldCaption>\n </div>\n <div>\n <Select name={autoValuePath}\n disabled={disabled}\n size={\"large\"}\n fullWidth={true}\n value={autoValueValue ?? \"\"}\n onValueChange={(v) => setFieldValue(autoValuePath, v === \"none\" ? null : v)}\n renderValue={(v) => {\n switch (v) {\n case \"on_create\":\n return \"On create\";\n case \"on_update\":\n return \"On any update\";\n default:\n return \"None\";\n }\n }}\n error={Boolean(autoValueError)}\n label={\"Automatic value\"}>\n <SelectItem value={\"none\"}> None </SelectItem>\n <SelectItem value={\"on_create\"}> On create </SelectItem>\n <SelectItem value={\"on_update\"}> On any update </SelectItem>\n </Select>\n <FieldCaption error={Boolean(autoValueError)}>\n {autoValueError ?? \"Update this field automatically when creating or updating the entity\"}\n </FieldCaption>\n </div>\n <div>\n <Select name={timezonePath}\n disabled={disabled}\n size={\"large\"}\n fullWidth={true}\n value={timezoneValue ?? \"__local__\"}\n onValueChange={(v) => setFieldValue(timezonePath, v === \"__local__\" ? undefined : v)}\n renderValue={(v) => {\n if (!v || v === \"__local__\") return \"Local timezone\";\n const tz = TIMEZONES.find(t => t.value === v);\n return tz?.label ?? v;\n }}\n error={Boolean(timezoneError)}\n label={\"Timezone\"}>\n <SelectItem value={\"__local__\"}> Local timezone </SelectItem>\n {TIMEZONES.map((tz) => (\n <SelectItem key={tz.value} value={tz.value}>\n {tz.label}\n </SelectItem>\n ))}\n </Select>\n <FieldCaption error={Boolean(timezoneError)}>\n {timezoneError ?? \"Timezone for displaying and inputting dates. Values are always stored in UTC.\"}\n </FieldCaption>\n </div>\n\n </div>\n\n <div className={\"col-span-12\"}>\n <ValidationPanel>\n <GeneralPropertyValidation disabled={disabled} />\n </ValidationPanel>\n </div>\n </>\n );\n}\n","import React from \"react\";\n\nimport { Field, FormexFieldProps } from \"@firecms/formex\";\nimport { SwitchControl } from \"../../SwitchControl\";\n\nexport function AdvancedPropertyValidation({ disabled }: {\n disabled: boolean\n}) {\n\n const columnWidth = \"columnWidth\";\n const hideFromCollection = \"hideFromCollection\";\n const readOnly = \"readOnly\";\n\n return (\n\n <div className={\"grid grid-cols-12 gap-2\"}>\n <div className={\"col-span-12\"}>\n <Field type=\"checkbox\" name={hideFromCollection}>\n {({ field, form }: FormexFieldProps) => {\n return <SwitchControl\n label={\"Hide from collection\"}\n size={\"medium\"}\n disabled={disabled}\n form={form}\n tooltip={\"Hide this field from the collection view. It will still be visible in the form view\"}\n field={field}/>\n }}\n </Field>\n </div>\n\n <div className={\"col-span-12\"}>\n <Field name={readOnly}\n type=\"checkbox\">\n {({ field, form }: FormexFieldProps) => {\n return <SwitchControl\n label={\"Read only\"}\n size={\"medium\"}\n disabled={disabled}\n tooltip={\"Is this a read only field. Display only as a preview\"}\n form={form}\n field={field}/>\n }}\n </Field>\n </div>\n </div>\n );\n}\n","import { PropsWithChildren } from \"react\";\n\nimport { ExpandablePanel, SettingsIcon, Typography } from \"@firecms/ui\";\n\nexport function ConditionsPanel({\n children\n}: PropsWithChildren<{}>) {\n\n return (\n <ExpandablePanel\n initiallyExpanded={true}\n asField={true}\n innerClassName=\"p-4\"\n title={\n <div className=\"flex flex-row text-surface-500 text-text-secondary dark:text-text-secondary-dark\">\n <SettingsIcon />\n <Typography variant={\"subtitle2\"}\n className=\"ml-4\">\n Conditions\n </Typography>\n </div>\n }>\n\n {children}\n\n </ExpandablePanel>\n )\n}\n","import { Properties, Property, PropertyOrBuilder, isPropertyBuilder } from \"@firecms/core\";\n\n/**\n * Recursively extract all property paths from a Properties object.\n * For nested map properties, creates dot-notation paths like \"address.city\".\n * Skips PropertyBuilder functions (callbacks) as they cannot be statically analyzed.\n * \n * @param properties - The properties object to extract paths from\n * @param prefix - Optional prefix for nested paths (used in recursion)\n * @returns Array of property path strings\n */\nexport function getPropertyPaths(\n properties: Properties | undefined,\n prefix: string = \"\"\n): string[] {\n if (!properties) return [];\n\n const paths: string[] = [];\n\n for (const [key, propertyOrBuilder] of Object.entries(properties)) {\n if (!propertyOrBuilder) continue;\n\n // Skip PropertyBuilder functions - they require runtime values to resolve\n if (isPropertyBuilder(propertyOrBuilder)) continue;\n\n const property = propertyOrBuilder as Property;\n const fullPath = prefix ? `${prefix}.${key}` : key;\n paths.push(fullPath);\n\n // Recursively add nested map properties\n if (property.dataType === \"map\" && property.properties) {\n const nestedPaths = getPropertyPaths(\n property.properties as Properties,\n fullPath\n );\n paths.push(...nestedPaths);\n }\n\n // For arrays with object items, add the nested paths too\n if (property.dataType === \"array\" && property.of) {\n const ofPropertyOrBuilder = property.of as PropertyOrBuilder;\n // Skip if the array's 'of' is a PropertyBuilder\n if (!isPropertyBuilder(ofPropertyOrBuilder)) {\n const ofProperty = ofPropertyOrBuilder as Property;\n if (ofProperty.dataType === \"map\" && ofProperty.properties) {\n const nestedPaths = getPropertyPaths(\n ofProperty.properties as Properties,\n `${fullPath}[]`\n );\n paths.push(...nestedPaths);\n }\n }\n }\n }\n\n return paths;\n}\n\n/**\n * Get property paths grouped by top-level property for UI display.\n * Skips PropertyBuilder functions.\n * \n * @param properties - The properties object\n * @returns Object with top-level keys mapping to their nested paths\n */\nexport function getGroupedPropertyPaths(\n properties: Properties | undefined\n): Record<string, string[]> {\n if (!properties) return {};\n\n const grouped: Record<string, string[]> = {};\n\n for (const [key, propertyOrBuilder] of Object.entries(properties)) {\n if (!propertyOrBuilder) continue;\n\n // Skip PropertyBuilder functions\n if (isPropertyBuilder(propertyOrBuilder)) continue;\n\n const property = propertyOrBuilder as Property;\n grouped[key] = [key];\n\n if (property.dataType === \"map\" && property.properties) {\n const nestedPaths = getPropertyPaths(\n property.properties as Properties,\n key\n );\n grouped[key].push(...nestedPaths);\n }\n }\n\n return grouped;\n}\n","import React from \"react\";\nimport { useFormex } from \"@firecms/formex\";\nimport {\n DeleteIcon,\n IconButton,\n Select,\n SelectItem,\n DebouncedTextField,\n Typography,\n Chip,\n BooleanSwitchWithLabel,\n TextField,\n cls,\n defaultBorderMixin\n} from \"@firecms/ui\";\nimport {\n Properties,\n Property,\n PropertyOrBuilder,\n getFieldConfig,\n DEFAULT_FIELD_CONFIGS,\n getIconForWidget,\n EnumValueConfig,\n isPropertyBuilder\n} from \"@firecms/core\";\nimport { PropertyWithId } from \"../../PropertyEditView\";\nimport { getPropertyPaths } from \"./property_paths\";\n\n/**\n * Condition types that can be configured\n */\nconst CONDITION_TYPES = [\n { id: \"disabled\", label: \"Disabled\", description: \"Disable this field when condition is true\" },\n { id: \"hidden\", label: \"Hidden\", description: \"Hide this field when condition is true\" },\n { id: \"required\", label: \"Required\", description: \"Make this field required when condition is true\" },\n { id: \"readOnly\", label: \"Read Only\", description: \"Make this field read-only when condition is true\" }\n] as const;\n\ntype ConditionType = typeof CONDITION_TYPES[number][\"id\"];\n\n/**\n * Operators for building conditions with their applicable data types\n */\nconst OPERATORS = [\n { id: \"==\", label: \"equals\", valueType: \"any\", applicableTo: [\"string\", \"number\", \"boolean\", \"date\"] },\n { id: \"!=\", label: \"not equals\", valueType: \"any\", applicableTo: [\"string\", \"number\", \"boolean\", \"date\"] },\n { id: \">\", label: \"greater than\", valueType: \"number\", applicableTo: [\"number\", \"date\"] },\n { id: \"<\", label: \"less than\", valueType: \"number\", applicableTo: [\"number\", \"date\"] },\n { id: \">=\", label: \"greater or equal\", valueType: \"number\", applicableTo: [\"number\", \"date\"] },\n { id: \"<=\", label: \"less or equal\", valueType: \"number\", applicableTo: [\"number\", \"date\"] },\n { id: \"in\", label: \"contains\", valueType: \"any\", applicableTo: [\"array\"] },\n { id: \"!in\", label: \"not contains\", valueType: \"any\", applicableTo: [\"array\"] },\n { id: \"!!\", label: \"has a value\", valueType: \"none\", applicableTo: [\"string\", \"number\", \"boolean\", \"array\", \"map\", \"date\"] },\n { id: \"!\", label: \"is empty\", valueType: \"none\", applicableTo: [\"string\", \"number\", \"boolean\", \"array\", \"map\", \"date\"] },\n { id: \"isPast\", label: \"is in the past\", valueType: \"none\", applicableTo: [\"date\"] },\n { id: \"isFuture\", label: \"is in the future\", valueType: \"none\", applicableTo: [\"date\"] }\n] as const;\n\ntype OperatorId = typeof OPERATORS[number][\"id\"];\n\n// Context fields with their types\nconst CONTEXT_FIELDS = [\n { id: \"isNew\", label: \"Is New Entity\", dataType: \"boolean\", color: \"#9c27b0\" },\n { id: \"entityId\", label: \"Entity ID\", dataType: \"string\", color: \"#2196f3\" },\n { id: \"user.roles\", label: \"User Roles\", dataType: \"array\", color: \"#ff9800\" }\n] as const;\n\ninterface SimpleRule {\n field: string;\n operator: OperatorId;\n value: string;\n}\n\ntype LogicOperator = \"and\" | \"or\";\n\n/**\n * A condition group can contain rules and/or nested groups\n */\ninterface ConditionGroup {\n logic: LogicOperator;\n rules: SimpleRule[];\n groups?: ConditionGroup[]; // Nested groups for complex logic\n}\n\n/**\n * Get the property at a given path.\n * Returns undefined if the path contains a PropertyBuilder (callback).\n */\nfunction getPropertyAtPath(\n fieldPath: string,\n collectionProperties?: Properties\n): Property | undefined {\n if (!collectionProperties) return undefined;\n\n const parts = fieldPath.split(\".\");\n let current: Properties | undefined = collectionProperties;\n let property: Property | undefined;\n\n for (const part of parts) {\n if (!current) return undefined;\n const propertyOrBuilder = current[part] as PropertyOrBuilder | undefined;\n if (!propertyOrBuilder) return undefined;\n\n // Skip PropertyBuilder functions - they require runtime values\n if (isPropertyBuilder(propertyOrBuilder)) return undefined;\n\n property = propertyOrBuilder as Property;\n\n if (property.dataType === \"map\" && property.properties) {\n current = property.properties as Properties;\n } else {\n current = undefined;\n }\n }\n\n return property;\n}\n\n/**\n * Get the data type for a field path\n */\nfunction getFieldDataType(\n fieldPath: string,\n collectionProperties?: Properties\n): string {\n // Check context fields first\n const contextField = CONTEXT_FIELDS.find(f => f.id === fieldPath);\n if (contextField) return contextField.dataType;\n\n const property = getPropertyAtPath(fieldPath, collectionProperties);\n return property?.dataType ?? \"string\";\n}\n\n/**\n * Get enum values for a property if it has them\n */\nfunction getEnumValues(property: Property | undefined): EnumValueConfig[] | undefined {\n if (!property) return undefined;\n if (property.dataType === \"string\" && property.enumValues) {\n // Normalize to array format\n if (Array.isArray(property.enumValues)) {\n return property.enumValues;\n }\n // Handle object format { key: label }\n return Object.entries(property.enumValues).map(([id, label]) => ({\n id,\n label: typeof label === \"string\" ? label : (label as EnumValueConfig).label\n }));\n }\n return undefined;\n}\n\n/**\n * Get operators applicable for a given data type\n */\nfunction getOperatorsForDataType(dataType: string) {\n return OPERATORS.filter(op => {\n const applicable = op.applicableTo as readonly string[];\n return applicable.includes(dataType) ||\n (applicable.includes(\"string\") && ![\"number\", \"date\", \"array\"].includes(dataType));\n });\n}\n\n/**\n * Props for a single rule row (used inside a group)\n */\ninterface RuleRowProps {\n rule: SimpleRule;\n onRuleChange: (rule: SimpleRule) => void;\n onRemove: () => void;\n disabled: boolean;\n availableFields: string[];\n collectionProperties?: Properties;\n showErrors: boolean;\n showRemoveButton: boolean;\n}\n\n/**\n * Props for a condition group (with AND/OR logic)\n */\ninterface ConditionGroupRowProps {\n conditionType: ConditionType;\n group: ConditionGroup;\n onGroupChange: (group: ConditionGroup) => void;\n onRemove: () => void;\n disabled: boolean;\n availableFields: string[];\n collectionProperties?: Properties;\n showErrors: boolean;\n}\n\n/**\n * Dynamic value input based on field data type and enum values\n */\nfunction ConditionValueInput({\n value,\n onChange,\n dataType,\n enumValues,\n disabled,\n operator\n}: {\n value: string;\n onChange: (value: string) => void;\n dataType: string;\n enumValues?: EnumValueConfig[];\n disabled: boolean;\n operator: OperatorId;\n}) {\n // For truthy/falsy operators, no value needed\n if (operator === \"!!\" || operator === \"!\") {\n return null;\n }\n\n // Boolean - use switch\n if (dataType === \"boolean\") {\n return (\n <BooleanSwitchWithLabel\n value={value === \"true\"}\n size=\"small\"\n position=\"start\"\n disabled={disabled}\n onValueChange={(newValue) => onChange(newValue ? \"true\" : \"false\")}\n />\n );\n }\n\n // Enum/string with enumValues - use select\n if (enumValues && enumValues.length > 0) {\n return (\n <Select\n value={value}\n onValueChange={onChange}\n disabled={disabled}\n size=\"small\"\n className=\"min-w-[120px]\"\n placeholder=\"Select value\">\n {enumValues.map(ev => (\n <SelectItem key={ev.id} value={String(ev.id)}>\n {ev.label}\n </SelectItem>\n ))}\n </Select>\n );\n }\n\n // Number - use number input\n if (dataType === \"number\") {\n return (\n <TextField\n value={value}\n type=\"number\"\n size=\"small\"\n disabled={disabled}\n placeholder=\"Value\"\n className=\"flex-1 min-w-[80px]\"\n onChange={(e) => onChange(e.target.value)}\n />\n );\n }\n\n // Array - comma separated values\n if (dataType === \"array\") {\n return (\n <DebouncedTextField\n value={value}\n onChange={(e) => onChange(e.target.value)}\n disabled={disabled}\n size=\"small\"\n placeholder=\"value1, value2\"\n className=\"flex-1 min-w-[120px]\"\n />\n );\n }\n\n // Default - text input\n return (\n <DebouncedTextField\n value={value}\n onChange={(e) => onChange(e.target.value)}\n disabled={disabled}\n size=\"small\"\n placeholder=\"Value\"\n className=\"flex-1 min-w-[100px]\"\n inputClassName=\"min-w-[100px]\"\n />\n );\n}\n\nfunction ConditionRow({\n rule,\n onRuleChange,\n onRemove,\n disabled,\n availableFields,\n collectionProperties,\n showErrors,\n showRemoveButton = true\n}: RuleRowProps & { showRemoveButton?: boolean }) {\n const fieldDataType = getFieldDataType(rule.field, collectionProperties);\n const applicableOperators = getOperatorsForDataType(fieldDataType);\n const property = getPropertyAtPath(rule.field, collectionProperties);\n const enumValues = getEnumValues(property);\n const operator = OPERATORS.find(op => op.id === rule.operator);\n const showValueField = operator?.valueType !== \"none\";\n\n // Validation: check for incomplete condition (only show after submission attempt)\n const isFieldMissing = !rule.field;\n const isValueMissing = showValueField && !rule.value && rule.value !== \"0\";\n const hasError = showErrors && (isFieldMissing || isValueMissing);\n\n // Get color for the field\n const getFieldColor = (fieldPath: string): string => {\n const contextField = CONTEXT_FIELDS.find(f => f.id === fieldPath);\n if (contextField) return contextField.color;\n\n if (!collectionProperties) return \"#888\";\n\n const prop = getPropertyAtPath(fieldPath, collectionProperties);\n if (!prop) return \"#888\";\n const config = getFieldConfig(prop, DEFAULT_FIELD_CONFIGS);\n return config?.color ?? \"#888\";\n };\n\n return (\n <div className={cls(\n \"flex items-center gap-2 p-2 rounded-md\",\n hasError ? \"bg-red-50 dark:bg-red-900/20\" : \"bg-surface-100 dark:bg-surface-800\"\n )}>\n {/* Field selector with colored badge */}\n <Select\n value={rule.field}\n onValueChange={(value) => {\n const newDataType = getFieldDataType(value, collectionProperties);\n const newApplicableOps = getOperatorsForDataType(newDataType);\n // Reset operator if current one isn't applicable\n const newOperator = newApplicableOps.find(op => op.id === rule.operator)\n ? rule.operator\n : newApplicableOps[0]?.id ?? \"==\";\n // Reset value when changing field\n onRuleChange({ ...rule, field: value, operator: newOperator as OperatorId, value: \"\" });\n }}\n disabled={disabled}\n size=\"small\"\n inputClassName=\"min-w-[180px]\"\n renderValue={(value) => (\n <div className=\"flex items-center gap-2\">\n <div\n className=\"w-2 h-2 rounded-full shrink-0\"\n style={{ backgroundColor: getFieldColor(value) }}\n />\n <span className=\"truncate\">{value}</span>\n </div>\n )}\n placeholder=\"Select field\">\n {/* Context fields */}\n {CONTEXT_FIELDS.map(field => (\n <SelectItem key={field.id} value={field.id}>\n <div className=\"flex items-center gap-2\">\n <div\n className=\"w-3 h-3 rounded-full shrink-0\"\n style={{ backgroundColor: field.color }}\n />\n <span>{field.label}</span>\n <Chip size=\"small\" colorScheme=\"grayLight\" className=\"ml-auto\">\n {field.dataType}\n </Chip>\n </div>\n </SelectItem>\n ))}\n\n {/* Separator */}\n {availableFields.length > 0 && (\n <SelectItem value=\"_divider\" disabled>\n <span className=\"text-xs text-surface-500\">─ Entity Fields ─</span>\n </SelectItem>\n )}\n\n {/* Property fields */}\n {availableFields.map(field => {\n const color = getFieldColor(field);\n const dataType = getFieldDataType(field, collectionProperties);\n const prop = getPropertyAtPath(field, collectionProperties);\n const hasEnum = !!getEnumValues(prop);\n return (\n <SelectItem key={field} value={field}>\n <div className=\"flex items-center gap-2\">\n <div\n className=\"w-3 h-3 rounded-full shrink-0\"\n style={{ backgroundColor: color }}\n />\n <span>{field}</span>\n <Chip size=\"small\" colorScheme=\"grayLight\" className=\"ml-auto\">\n {hasEnum ? \"enum\" : dataType}\n </Chip>\n </div>\n </SelectItem>\n );\n })}\n </Select>\n\n {/* Operator - filtered by field type */}\n <Select\n value={rule.operator}\n onValueChange={(value) => onRuleChange({ ...rule, operator: value as OperatorId })}\n disabled={disabled}\n size=\"small\"\n inputClassName=\"min-w-[120px]\">\n {applicableOperators.map(op => (\n <SelectItem key={op.id} value={op.id}>\n {op.label}\n </SelectItem>\n ))}\n </Select>\n\n {/* Dynamic Value input */}\n {showValueField && (\n <ConditionValueInput\n value={rule.value}\n onChange={(newValue) => onRuleChange({ ...rule, value: newValue })}\n dataType={fieldDataType}\n enumValues={enumValues}\n disabled={disabled}\n operator={rule.operator}\n />\n )}\n\n {/* Remove button */}\n {showRemoveButton && (\n <IconButton onClick={onRemove} disabled={disabled} size=\"small\" variant=\"ghost\">\n <DeleteIcon size=\"smallest\" />\n </IconButton>\n )}\n </div>\n );\n}\n\n/**\n * A condition group row with AND/OR logic selector and multiple rules\n */\nfunction ConditionGroupRow({\n conditionType,\n group,\n onGroupChange,\n onRemove,\n disabled,\n availableFields,\n collectionProperties,\n showErrors\n}: ConditionGroupRowProps) {\n const handleLogicChange = (logic: LogicOperator) => {\n onGroupChange({ ...group, logic });\n };\n\n const handleRuleChange = (index: number, rule: SimpleRule) => {\n const newRules = [...group.rules];\n newRules[index] = rule;\n onGroupChange({ ...group, rules: newRules });\n };\n\n const handleRemoveRule = (index: number) => {\n const newRules = group.rules.filter((_, i) => i !== index);\n if (newRules.length === 0) {\n onRemove();\n } else {\n onGroupChange({ ...group, rules: newRules });\n }\n };\n\n const handleAddRule = () => {\n const defaultRule: SimpleRule = {\n field: availableFields[0] ?? \"isNew\",\n operator: \"==\",\n value: \"\"\n };\n onGroupChange({ ...group, rules: [...group.rules, defaultRule] });\n };\n\n return (\n <div className={cls(\"p-3 bg-surface-50 dark:bg-surface-900 rounded-lg border\", defaultBorderMixin)}>\n <div className=\"flex items-center justify-between mb-3\">\n <div className=\"flex items-center gap-2\">\n <Typography variant=\"label\" className=\"font-medium text-primary\">\n {CONDITION_TYPES.find(ct => ct.id === conditionType)?.label} when\n </Typography>\n {group.rules.length > 1 && (\n <Select\n value={group.logic}\n onValueChange={(value) => handleLogicChange(value as LogicOperator)}\n disabled={disabled}\n size=\"small\"\n inputClassName=\"min-w-[100px]\">\n <SelectItem value=\"and\">All of these</SelectItem>\n <SelectItem value=\"or\">Any of these</SelectItem>\n </Select>\n )}\n </div>\n <IconButton onClick={onRemove} disabled={disabled} size=\"small\" variant=\"ghost\">\n <DeleteIcon size=\"smallest\" />\n </IconButton>\n </div>\n\n <div className=\"flex flex-col gap-2\">\n {group.rules.map((rule, index) => (\n <React.Fragment key={index}>\n {index > 0 && (\n <Typography variant=\"caption\" className=\"text-center text-secondary font-medium uppercase\">\n {group.logic === \"and\" ? \"AND\" : \"OR\"}\n </Typography>\n )}\n <ConditionRow\n rule={rule}\n onRuleChange={(newRule: SimpleRule) => handleRuleChange(index, newRule)}\n onRemove={() => handleRemoveRule(index)}\n disabled={disabled}\n availableFields={availableFields}\n collectionProperties={collectionProperties}\n showErrors={showErrors}\n showRemoveButton={group.rules.length > 1}\n />\n </React.Fragment>\n ))}\n </div>\n\n <button\n onClick={handleAddRule}\n disabled={disabled}\n type=\"button\"\n className={cls(\n \"mt-3 w-full py-2 px-3 rounded-md text-sm\",\n \"border border-dashed text-secondary\",\n \"hover:bg-surface-100 dark:hover:bg-surface-800\",\n \"transition-colors\",\n defaultBorderMixin\n )}\n >\n + Add condition\n </button>\n </div>\n );\n}\n\n/**\n * Convert a simple rule to JSON-Logic format\n */\nfunction simpleRuleToJsonLogic(rule: SimpleRule): Record<string, any> {\n // Guard against empty field or operator which creates invalid Firestore keys\n if (!rule.field || !rule.operator) {\n // Return a valid default rule instead of creating invalid data\n return { \"!!\": { var: \"values._placeholder\" } };\n }\n\n const varRef = { var: `values.${rule.field}` };\n\n // Handle special fields that don't need the \"values.\" prefix\n const fieldVar = rule.field.startsWith(\"user.\") || rule.field === \"isNew\" || rule.field === \"entityId\"\n ? { var: rule.field }\n : varRef;\n\n if (rule.operator === \"!!\") {\n return { \"!!\": fieldVar };\n }\n if (rule.operator === \"!\") {\n return { \"!\": fieldVar };\n }\n if (rule.operator === \"isPast\") {\n return { \"isPast\": fieldVar };\n }\n if (rule.operator === \"isFuture\") {\n return { \"isFuture\": fieldVar };\n }\n\n // Parse value - try to convert to appropriate type\n let parsedValue: any = rule.value;\n if (rule.value === \"true\") parsedValue = true;\n else if (rule.value === \"false\") parsedValue = false;\n else if (rule.value === \"null\") parsedValue = null;\n else if (!isNaN(Number(rule.value)) && rule.value !== \"\") parsedValue = Number(rule.value);\n\n // Handle array values for \"in\" and \"!in\" operators\n if ((rule.operator === \"in\" || rule.operator === \"!in\") && typeof parsedValue === \"string\") {\n parsedValue = parsedValue.split(\",\").map(s => s.trim());\n }\n\n // Handle \"!in\" (not contains) - wrap \"in\" with negation\n if (rule.operator === \"!in\") {\n return { \"!\": { \"in\": [fieldVar, parsedValue] } };\n }\n\n return { [rule.operator]: [fieldVar, parsedValue] };\n}\n\n/**\n * Try to parse JSON-Logic back to a simple rule\n */\nfunction jsonLogicToSimpleRule(jsonLogic: Record<string, any>): SimpleRule | null {\n try {\n const operator = Object.keys(jsonLogic)[0] as OperatorId;\n const args = jsonLogic[operator];\n\n // Handle \"!\" operator - could be negation of a value or negation of \"in\" (not contains)\n if (operator === \"!\") {\n // Check if it's a negated \"in\" operation: {\"!\": {\"in\": [...]}}\n if (typeof args === \"object\" && args !== null && \"in\" in args) {\n const inArgs = args.in;\n if (Array.isArray(inArgs) && inArgs.length === 2) {\n const [left, right] = inArgs;\n if (left?.var) {\n const field = left.var.replace(/^values\\./, \"\");\n const value = Array.isArray(right)\n ? right.join(\", \")\n : String(right ?? \"\");\n return { field, operator: \"!in\", value };\n }\n }\n }\n // Otherwise it's a simple negation (is falsy)\n if (args?.var) {\n const field = args.var.replace(/^values\\./, \"\");\n return { field, operator: \"!\", value: \"\" };\n }\n }\n\n if (operator === \"!!\") {\n const varObj = args;\n if (varObj?.var) {\n const field = varObj.var.replace(/^values\\./, \"\");\n return { field, operator, value: \"\" };\n }\n }\n\n // Handle isPast and isFuture operators\n if (operator === \"isPast\" || operator === \"isFuture\") {\n const varObj = args;\n if (varObj?.var) {\n const field = varObj.var.replace(/^values\\./, \"\");\n return { field, operator, value: \"\" };\n }\n }\n\n if (Array.isArray(args) && args.length === 2) {\n const [left, right] = args;\n if (left?.var) {\n const field = left.var.replace(/^values\\./, \"\");\n const value = Array.isArray(right)\n ? right.join(\", \")\n : String(right ?? \"\");\n return { field, operator, value };\n }\n }\n } catch {\n // Fall through\n }\n return null;\n}\n\n/**\n * Convert a condition group to JSON-Logic format\n */\nfunction groupToJsonLogic(group: ConditionGroup): Record<string, any> {\n const ruleLogics = group.rules\n .filter(rule => rule.field && rule.operator) // Filter out incomplete rules\n .map(rule => simpleRuleToJsonLogic(rule));\n\n const groupLogics = (group.groups || [])\n .map(g => groupToJsonLogic(g));\n\n const allLogics = [...ruleLogics, ...groupLogics];\n\n // If only one condition, don't wrap in and/or\n if (allLogics.length === 1) {\n return allLogics[0];\n }\n\n // If no conditions, return a default true condition\n if (allLogics.length === 0) {\n return { \"!!\": { var: \"values._placeholder\" } };\n }\n\n return { [group.logic]: allLogics };\n}\n\n/**\n * Try to parse JSON-Logic back to a condition group\n */\nfunction jsonLogicToGroup(jsonLogic: Record<string, any>): ConditionGroup | null {\n try {\n const operator = Object.keys(jsonLogic)[0];\n\n // Check if it's an AND or OR group\n if (operator === \"and\" || operator === \"or\") {\n const args = jsonLogic[operator];\n if (Array.isArray(args)) {\n const rules: SimpleRule[] = [];\n const groups: ConditionGroup[] = [];\n\n for (const arg of args) {\n // Check if this is a nested group\n const nestedOperator = Object.keys(arg)[0];\n if (nestedOperator === \"and\" || nestedOperator === \"or\") {\n const nestedGroup = jsonLogicToGroup(arg);\n if (nestedGroup) {\n groups.push(nestedGroup);\n }\n } else {\n // It's a simple rule\n const rule = jsonLogicToSimpleRule(arg);\n if (rule) {\n rules.push(rule);\n }\n }\n }\n\n return {\n logic: operator,\n rules,\n groups: groups.length > 0 ? groups : undefined\n };\n }\n }\n\n // It's a single rule - wrap in an AND group\n const rule = jsonLogicToSimpleRule(jsonLogic);\n if (rule) {\n return {\n logic: \"and\",\n rules: [rule]\n };\n }\n } catch {\n // Fall through\n }\n return null;\n}\n\nexport interface ConditionsEditorProps {\n disabled: boolean;\n /**\n * Optional collection properties for populating the field selector.\n * If not provided, a basic set of common fields is used.\n */\n collectionProperties?: Properties;\n}\n\nexport function ConditionsEditor({ disabled, collectionProperties }: ConditionsEditorProps) {\n const { values, setFieldValue, submitCount } = useFormex<PropertyWithId>();\n\n // Get property paths from collection properties (includes nested maps)\n const availableFields: string[] = collectionProperties\n ? getPropertyPaths(collectionProperties)\n : [];\n\n // Get current conditions from form values\n const conditions = (values as any).conditions ?? {};\n\n // DEBUG: Log conditions to see what's being loaded\n console.log(\"[ConditionsEditor] Loaded conditions:\", conditions);\n\n const activeConditions: { type: ConditionType; group: ConditionGroup }[] = [];\n\n for (const type of CONDITION_TYPES) {\n const jsonLogic = conditions[type.id as keyof typeof conditions];\n if (jsonLogic) {\n console.log(`[ConditionsEditor] Parsing ${type.id}:`, jsonLogic);\n const group = jsonLogicToGroup(jsonLogic as Record<string, any>);\n console.log(`[ConditionsEditor] Parsed group:`, group);\n if (group) {\n activeConditions.push({ type: type.id, group });\n }\n }\n }\n\n const handleAddCondition = (conditionType: ConditionType) => {\n const defaultRule: SimpleRule = {\n field: availableFields[0] ?? \"isNew\",\n operator: \"==\",\n value: \"\"\n };\n\n const defaultGroup: ConditionGroup = {\n logic: \"and\",\n rules: [defaultRule]\n };\n\n const jsonLogic = groupToJsonLogic(defaultGroup);\n setFieldValue(`conditions.${conditionType}`, jsonLogic);\n };\n\n const handleGroupChange = (type: ConditionType, group: ConditionGroup) => {\n const jsonLogic = groupToJsonLogic(group);\n setFieldValue(`conditions.${type}`, jsonLogic);\n };\n\n const handleRemoveCondition = (type: ConditionType) => {\n const newConditions = { ...conditions };\n delete (newConditions as any)[type];\n if (Object.keys(newConditions).length === 0) {\n setFieldValue(\"conditions\", undefined);\n } else {\n setFieldValue(\"conditions\", newConditions);\n }\n };\n\n // Condition types that aren't already used\n const availableConditionTypes = CONDITION_TYPES.filter(\n ct => !conditions[ct.id as keyof typeof conditions]\n );\n\n return (\n <div className=\"flex flex-col gap-4\">\n <Typography variant=\"caption\" color=\"secondary\">\n Add conditions to dynamically control this field based on other field values or user context.\n </Typography>\n\n {/* Active conditions */}\n {activeConditions.length > 0 && (\n <div className=\"flex flex-col gap-3\">\n {activeConditions.map(({ type, group }) => (\n <ConditionGroupRow\n key={type}\n conditionType={type}\n group={group}\n onGroupChange={(newGroup) => handleGroupChange(type, newGroup)}\n onRemove={() => handleRemoveCondition(type)}\n disabled={disabled}\n availableFields={availableFields}\n collectionProperties={collectionProperties}\n showErrors={submitCount > 0}\n />\n ))}\n </div>\n )}\n\n {/* Add new condition - click to add directly */}\n {availableConditionTypes.length > 0 && (\n <Select\n value=\"\"\n onValueChange={(value) => handleAddCondition(value as ConditionType)}\n disabled={disabled}\n size=\"small\"\n placeholder=\"+ Add condition...\"\n className=\"w-full max-w-xs\">\n {availableConditionTypes.map(ct => (\n <SelectItem key={ct.id} value={ct.id}>\n <div className=\"flex flex-col\">\n <span className=\"font-medium\">{ct.label}</span>\n <span className=\"text-xs text-surface-500\">{ct.description}</span>\n </div>\n </SelectItem>\n ))}\n </Select>\n )}\n\n {activeConditions.length === 0 && availableConditionTypes.length === 0 && (\n <Typography variant=\"caption\" color=\"disabled\" className=\"text-center py-4\">\n All condition types are configured.\n </Typography>\n )}\n </div>\n );\n}\n","import React from \"react\";\nimport { useFormex } from \"@firecms/formex\";\nimport {\n DeleteIcon,\n IconButton,\n Select,\n SelectItem,\n Typography,\n MultiSelect,\n MultiSelectItem,\n cls,\n defaultBorderMixin,\n DebouncedTextField,\n BooleanSwitchWithLabel\n} from \"@firecms/ui\";\nimport {\n Properties,\n Property,\n PropertyOrBuilder,\n getFieldConfig,\n DEFAULT_FIELD_CONFIGS,\n EnumValueConfig,\n isPropertyBuilder\n} from \"@firecms/core\";\nimport { PropertyWithId } from \"../../PropertyEditView\";\nimport { getPropertyPaths } from \"./property_paths\";\n\n/**\n * Enum condition types - maps to PropertyConditions structure:\n * - \"filter\" → conditions.allowedEnumValues (JSON Logic returning allowed IDs)\n * - \"exclude\" → conditions.excludedEnumValues (JSON Logic returning excluded IDs)\n */\nconst ENUM_CONDITION_TYPES = [\n { id: \"allowedEnumValues\", label: \"Filter Options\", description: \"Only show selected enum values when condition is true\" },\n { id: \"excludedEnumValues\", label: \"Exclude Options\", description: \"Hide selected enum values when condition is true\" }\n] as const;\n\ntype EnumConditionType = typeof ENUM_CONDITION_TYPES[number][\"id\"];\n\n/**\n * Operators for conditions\n */\nconst OPERATORS = [\n { id: \"==\", label: \"equals\", valueType: \"any\" },\n { id: \"!=\", label: \"not equals\", valueType: \"any\" },\n { id: \"in\", label: \"contains\", valueType: \"array\" },\n { id: \"!!\", label: \"has a value\", valueType: \"none\" },\n { id: \"!\", label: \"is empty\", valueType: \"none\" }\n] as const;\n\ntype OperatorId = typeof OPERATORS[number][\"id\"];\n\n// Context fields\nconst CONTEXT_FIELDS = [\n { id: \"isNew\", label: \"Is New Entity\", dataType: \"boolean\", color: \"#9c27b0\" },\n { id: \"entityId\", label: \"Entity ID\", dataType: \"string\", color: \"#2196f3\" },\n { id: \"user.roles\", label: \"User Roles\", dataType: \"array\", color: \"#ff9800\" }\n] as const;\n\ninterface EnumConditionConfig {\n field: string;\n operator: OperatorId;\n value: string;\n selectedEnumIds: string[];\n}\n\n/**\n * Get the property at a given path.\n * Returns undefined if the path contains a PropertyBuilder (callback).\n */\nfunction getPropertyAtPath(\n fieldPath: string,\n collectionProperties?: Properties\n): Property | undefined {\n if (!collectionProperties) return undefined;\n\n const parts = fieldPath.split(\".\");\n let current: Properties | undefined = collectionProperties;\n let property: Property | undefined;\n\n for (const part of parts) {\n if (!current) return undefined;\n const propertyOrBuilder = current[part] as PropertyOrBuilder | undefined;\n if (!propertyOrBuilder) return undefined;\n\n if (isPropertyBuilder(propertyOrBuilder)) return undefined;\n\n property = propertyOrBuilder as Property;\n\n if (property.dataType === \"map\" && property.properties) {\n current = property.properties as Properties;\n } else {\n current = undefined;\n }\n }\n\n return property;\n}\n\n/**\n * Get enum values from the current property being edited\n */\nfunction getCurrentPropertyEnumValues(values: PropertyWithId): EnumValueConfig[] {\n if (values.dataType === \"string\" && values.enumValues) {\n if (Array.isArray(values.enumValues)) {\n return values.enumValues;\n }\n return Object.entries(values.enumValues).map(([id, label]) => ({\n id,\n label: typeof label === \"string\" ? label : (label as EnumValueConfig).label\n }));\n }\n return [];\n}\n\n/**\n * Get color for a field\n */\nfunction getFieldColor(fieldPath: string, collectionProperties?: Properties): string {\n const contextField = CONTEXT_FIELDS.find(f => f.id === fieldPath);\n if (contextField) return contextField.color;\n\n if (!collectionProperties) return \"#888\";\n\n const prop = getPropertyAtPath(fieldPath, collectionProperties);\n if (!prop) return \"#888\";\n const config = getFieldConfig(prop, DEFAULT_FIELD_CONFIGS);\n return config?.color ?? \"#888\";\n}\n\n/**\n * Get enum values from a property (for the selected condition field)\n */\nfunction getFieldEnumValues(property: Property | undefined): EnumValueConfig[] {\n if (!property) return [];\n if (property.dataType === \"string\" && property.enumValues) {\n if (Array.isArray(property.enumValues)) {\n return property.enumValues;\n }\n return Object.entries(property.enumValues).map(([id, label]) => ({\n id,\n label: typeof label === \"string\" ? label : (label as EnumValueConfig).label\n }));\n }\n return [];\n}\n\n/**\n * Convert an array to an object with numeric keys for Firestore storage.\n * Firestore doesn't allow nested arrays, so we store as {\"0\": \"a\", \"1\": \"b\"}\n * The runtime will convert back via objectToArray().\n */\nfunction arrayToObject(arr: string[]): Record<string, string> {\n const result: Record<string, string> = {};\n arr.forEach((v, i) => {\n result[String(i)] = v;\n });\n return result;\n}\n\n/**\n * Build JSON Logic rule: { \"if\": [ condition, thenValue, elseValue ] }\n * When condition is true, return the selected enum IDs.\n * When false, return all enum IDs or empty (depending on type).\n * \n * IMPORTANT: We store arrays as objects with numeric keys to avoid\n * Firestore's \"Nested arrays are not supported\" error.\n */\nfunction buildEnumFilterRule(\n config: EnumConditionConfig,\n conditionType: EnumConditionType,\n allEnumIds: string[]\n): Record<string, unknown> {\n // Guard against empty field or operator which creates invalid Firestore keys\n if (!config.field || !config.operator) {\n // Return a valid default rule\n return {\n \"if\": [\n { \"!!\": { var: \"values._placeholder\" } },\n {},\n arrayToObject(allEnumIds)\n ]\n };\n }\n\n const fieldVar = config.field.startsWith(\"user.\") || config.field === \"isNew\" || config.field === \"entityId\"\n ? { var: config.field }\n : { var: `values.${config.field}` };\n\n // Build the condition\n let condition: Record<string, unknown>;\n if (config.operator === \"!!\") {\n condition = { \"!!\": fieldVar };\n } else if (config.operator === \"!\") {\n condition = { \"!\": fieldVar };\n } else {\n let parsedValue: unknown = config.value;\n if (config.value === \"true\") parsedValue = true;\n else if (config.value === \"false\") parsedValue = false;\n else if (!isNaN(Number(config.value)) && config.value !== \"\") parsedValue = Number(config.value);\n\n if (config.operator === \"in\" && typeof parsedValue === \"string\") {\n parsedValue = parsedValue.split(\",\").map(s => s.trim());\n }\n\n condition = { [config.operator]: [fieldVar, parsedValue] };\n }\n\n // For allowedEnumValues: when condition true, show selected; when false, show all\n // For excludedEnumValues: when condition true, exclude selected; when false, exclude nothing\n // Convert arrays to objects to avoid Firestore nested array error\n if (conditionType === \"allowedEnumValues\") {\n return {\n \"if\": [\n condition,\n arrayToObject(config.selectedEnumIds), // When true: only these\n arrayToObject(allEnumIds) // When false: all\n ]\n };\n } else {\n // excludedEnumValues\n return {\n \"if\": [\n condition,\n arrayToObject(config.selectedEnumIds), // When true: exclude these\n {} // When false: exclude nothing\n ]\n };\n }\n}\n\n/**\n * Convert an object with numeric keys (Firestore serialization) back to an array.\n * {\"0\": \"a\", \"1\": \"b\"} -> [\"a\", \"b\"]\n */\nfunction objectToArray(obj: unknown): string[] {\n if (Array.isArray(obj)) return obj.map(String);\n if (obj && typeof obj === \"object\") {\n const keys = Object.keys(obj);\n // Check if all keys are numeric\n if (keys.length > 0 && keys.every(k => !isNaN(Number(k)))) {\n return keys\n .sort((a, b) => Number(a) - Number(b))\n .map(k => String((obj as Record<string, unknown>)[k]));\n }\n }\n return [];\n}\n\n/**\n * Parse JSON Logic back to EnumConditionConfig\n */\nfunction parseEnumFilterRule(rule: Record<string, unknown>): EnumConditionConfig | null {\n try {\n // Expected: { \"if\": [ condition, selectedIds, fallbackIds ] }\n const ifRule = rule[\"if\"];\n if (!Array.isArray(ifRule) || ifRule.length < 2) return null;\n\n const [condition, selectedEnumIdsRaw] = ifRule;\n\n // Handle both array format and Firestore's object-with-numeric-keys format\n const selectedEnumIds = objectToArray(selectedEnumIdsRaw);\n if (selectedEnumIds.length === 0 && selectedEnumIdsRaw) {\n // If it was truthy but we got no values, parsing failed\n console.log(\"[EnumConditionsEditor] Warning: Could not parse selectedEnumIds:\", selectedEnumIdsRaw);\n }\n\n // Parse the condition\n const conditionObj = condition as Record<string, unknown>;\n const operator = Object.keys(conditionObj)[0] as OperatorId;\n const args = conditionObj[operator] as unknown;\n\n let field = \"\";\n let value = \"\";\n\n if (operator === \"!!\" || operator === \"!\") {\n const varObj = args as Record<string, string> | null;\n if (varObj?.var) {\n field = varObj.var.replace(/^values\\./, \"\");\n }\n } else if (Array.isArray(args) && args.length === 2) {\n const [left, right] = args as [Record<string, string>, unknown];\n if (left?.var) {\n field = left.var.replace(/^values\\./, \"\");\n value = Array.isArray(right) ? right.join(\", \") : String(right ?? \"\");\n }\n }\n\n return {\n field,\n operator,\n value,\n selectedEnumIds\n };\n } catch (e) {\n console.error(\"[EnumConditionsEditor] Error parsing rule:\", e);\n return null;\n }\n}\n\ninterface EnumConditionRowProps {\n conditionType: EnumConditionType;\n config: EnumConditionConfig;\n onConfigChange: (config: EnumConditionConfig) => void;\n onRemove: () => void;\n disabled: boolean;\n availableFields: string[];\n collectionProperties?: Properties;\n propertyEnumValues: EnumValueConfig[];\n showErrors: boolean;\n}\n\nfunction EnumConditionRow({\n conditionType,\n config,\n onConfigChange,\n onRemove,\n disabled,\n availableFields,\n collectionProperties,\n propertyEnumValues,\n showErrors\n}: EnumConditionRowProps) {\n const operator = OPERATORS.find(op => op.id === config.operator);\n const showValueField = operator?.valueType !== \"none\";\n\n // Get the property for the selected field\n const selectedFieldProperty = getPropertyAtPath(config.field, collectionProperties);\n const isBoolean = config.field === \"isNew\" || selectedFieldProperty?.dataType === \"boolean\";\n\n // Check if the selected field has enum values\n const fieldEnumValues = getFieldEnumValues(selectedFieldProperty);\n\n // Validation: check for incomplete condition (only show after submission attempt)\n const isFieldMissing = !config.field;\n const isValueMissing = showValueField && !config.value && config.value !== \"0\";\n const isEnumSelectionMissing = config.selectedEnumIds.length === 0;\n const hasError = showErrors && (isFieldMissing || isValueMissing || isEnumSelectionMissing);\n\n return (\n <div className={cls(\n \"p-3 bg-surface-50 dark:bg-surface-900 rounded-lg border\",\n hasError ? \"border-red-300 dark:border-red-700\" : defaultBorderMixin\n )}>\n {/* Title line */}\n <div className=\"flex items-center justify-between mb-2\">\n <Typography variant=\"label\" className=\"font-medium text-primary\">\n {ENUM_CONDITION_TYPES.find(ct => ct.id === conditionType)?.label} when\n </Typography>\n <IconButton\n onClick={onRemove}\n disabled={disabled}\n size=\"small\"\n variant=\"ghost\">\n <DeleteIcon size=\"smallest\" />\n </IconButton>\n </div>\n\n {/* Condition row: Field, Operator, Value */}\n <div className=\"flex items-center gap-2 mb-3\">\n {/* Field selector */}\n <Select\n value={config.field}\n onValueChange={(value) => onConfigChange({ ...config, field: value, value: \"\" })}\n disabled={disabled}\n size=\"small\"\n inputClassName=\"min-w-[140px]\"\n placeholder=\"Field\">\n {CONTEXT_FIELDS.map(field => (\n <SelectItem key={field.id} value={field.id}>\n <div className=\"flex items-center gap-2\">\n <div\n className=\"w-2 h-2 rounded-full\"\n style={{ backgroundColor: field.color }}\n />\n <span>{field.label}</span>\n </div>\n </SelectItem>\n ))}\n {availableFields.length > 0 && (\n <SelectItem value=\"_divider\" disabled>\n <span className=\"text-xs text-surface-500\">─ Fields ─</span>\n </SelectItem>\n )}\n {availableFields.map(field => (\n <SelectItem key={field} value={field}>\n <div className=\"flex items-center gap-2\">\n <div\n className=\"w-2 h-2 rounded-full\"\n style={{ backgroundColor: getFieldColor(field, collectionProperties) }}\n />\n <span>{field}</span>\n </div>\n </SelectItem>\n ))}\n </Select>\n\n {/* Operator */}\n <Select\n value={config.operator}\n onValueChange={(value) => onConfigChange({ ...config, operator: value as OperatorId })}\n disabled={disabled}\n size=\"small\"\n inputClassName=\"min-w-[100px]\">\n {OPERATORS.map(op => (\n <SelectItem key={op.id} value={op.id}>{op.label}</SelectItem>\n ))}\n </Select>\n\n {/* Value - dynamic based on field type */}\n {showValueField && (\n isBoolean ? (\n <BooleanSwitchWithLabel\n value={config.value === \"true\"}\n size=\"small\"\n position=\"start\"\n disabled={disabled}\n onValueChange={(v) => onConfigChange({ ...config, value: v ? \"true\" : \"false\" })}\n />\n ) : fieldEnumValues.length > 0 ? (\n // Show Select for enum fields\n <Select\n value={config.value}\n onValueChange={(value) => onConfigChange({ ...config, value })}\n disabled={disabled}\n size=\"small\"\n placeholder=\"Select value...\"\n className=\"min-w-[120px]\">\n {fieldEnumValues.map(ev => (\n <SelectItem key={String(ev.id)} value={String(ev.id)}>\n {ev.label}\n </SelectItem>\n ))}\n </Select>\n ) : (\n <DebouncedTextField\n value={config.value}\n onChange={(e) => onConfigChange({ ...config, value: e.target.value })}\n disabled={disabled}\n size=\"small\"\n placeholder=\"Value\"\n className=\"flex-1 min-w-[80px]\"\n />\n )\n )}\n </div>\n\n {/* Enum selection */}\n <div>\n <Typography variant=\"caption\" color=\"secondary\" className=\"block mb-2\">\n {conditionType === \"allowedEnumValues\" ? \"Show only:\" : \"Hide:\"}\n </Typography>\n <MultiSelect\n value={config.selectedEnumIds}\n onValueChange={(values) => onConfigChange({ ...config, selectedEnumIds: values })}\n disabled={disabled}\n size=\"small\"\n placeholder=\"Select values...\"\n useChips={true}>\n {propertyEnumValues.map(ev => (\n <MultiSelectItem key={String(ev.id)} value={String(ev.id)}>\n {ev.label}\n </MultiSelectItem>\n ))}\n </MultiSelect>\n </div>\n\n {/* Validation error message */}\n {hasError && (\n <Typography variant=\"caption\" className=\"mt-2 text-red-500 dark:text-red-400\">\n {isFieldMissing\n ? \"Please select a field for this condition\"\n : isValueMissing\n ? \"Please enter a value for this condition\"\n : \"Please select at least one value to filter\"\n }\n </Typography>\n )}\n </div>\n );\n}\n\nexport interface EnumConditionsEditorProps {\n disabled: boolean;\n collectionProperties?: Properties;\n}\n\nexport function EnumConditionsEditor({ disabled, collectionProperties }: EnumConditionsEditorProps) {\n const { values, setFieldValue, submitCount } = useFormex<PropertyWithId>();\n\n const availableFields: string[] = collectionProperties\n ? getPropertyPaths(collectionProperties)\n : [];\n\n const propertyEnumValues = getCurrentPropertyEnumValues(values);\n\n // Only show for enum properties\n if (propertyEnumValues.length === 0) {\n return null;\n }\n\n const allEnumIds = propertyEnumValues.map(ev => String(ev.id));\n\n // Get conditions from the correct path: values.conditions\n const conditions = (values as PropertyWithId & { conditions?: Record<string, unknown> }).conditions ?? {};\n\n // Parse existing enum conditions\n const activeConditions: { type: EnumConditionType; config: EnumConditionConfig }[] = [];\n\n for (const type of ENUM_CONDITION_TYPES) {\n const rule = conditions[type.id] as Record<string, unknown> | undefined;\n if (rule) {\n const config = parseEnumFilterRule(rule);\n if (config) {\n activeConditions.push({ type: type.id, config });\n }\n }\n }\n\n const handleAddCondition = (conditionType: EnumConditionType) => {\n const defaultConfig: EnumConditionConfig = {\n field: availableFields[0] ?? \"isNew\",\n operator: \"==\",\n value: \"\",\n selectedEnumIds: []\n };\n\n const rule = buildEnumFilterRule(defaultConfig, conditionType, allEnumIds);\n setFieldValue(`conditions.${conditionType}`, rule);\n };\n\n const handleConfigChange = (type: EnumConditionType, config: EnumConditionConfig) => {\n const rule = buildEnumFilterRule(config, type, allEnumIds);\n setFieldValue(`conditions.${type}`, rule);\n };\n\n const handleRemoveCondition = (type: EnumConditionType) => {\n const newConditions = { ...conditions };\n delete newConditions[type];\n if (Object.keys(newConditions).length === 0) {\n setFieldValue(\"conditions\", undefined);\n } else {\n setFieldValue(\"conditions\", newConditions);\n }\n };\n\n const availableConditionTypes = ENUM_CONDITION_TYPES.filter(\n ct => !conditions[ct.id]\n );\n\n return (\n <div className={cls(\"flex flex-col gap-4 mt-4 pt-4 border-t\", defaultBorderMixin)}>\n <Typography variant=\"label\" className=\"font-medium\">\n Enum Value Conditions\n </Typography>\n <Typography variant=\"caption\" color=\"secondary\">\n Dynamically filter which options are available.\n </Typography>\n\n {activeConditions.length > 0 && (\n <div className=\"flex flex-col gap-3\">\n {activeConditions.map(({ type, config }) => (\n <EnumConditionRow\n key={type}\n conditionType={type}\n config={config}\n onConfigChange={(newConfig) => handleConfigChange(type, newConfig)}\n onRemove={() => handleRemoveCondition(type)}\n disabled={disabled}\n availableFields={availableFields}\n collectionProperties={collectionProperties}\n propertyEnumValues={propertyEnumValues}\n showErrors={submitCount > 0}\n />\n ))}\n </div>\n )}\n\n {availableConditionTypes.length > 0 && (\n <Select\n value=\"\"\n onValueChange={(value) => handleAddCondition(value as EnumConditionType)}\n disabled={disabled}\n size=\"small\"\n placeholder=\"+ Add enum condition...\"\n className=\"w-full max-w-xs\">\n {availableConditionTypes.map(ct => (\n <SelectItem key={ct.id} value={ct.id}>\n <div className=\"flex flex-col\">\n <span className=\"font-medium\">{ct.label}</span>\n <span className=\"text-xs text-surface-500\">{ct.description}</span>\n </div>\n </SelectItem>\n ))}\n </Select>\n )}\n </div>\n );\n}\n","import React from \"react\";\nimport { ValidationPanel } from \"./validation/ValidationPanel\";\nimport { GeneralPropertyValidation } from \"./validation/GeneralPropertyValidation\";\n\nexport function KeyValuePropertyField({ disabled }: {\n disabled: boolean;\n}) {\n\n return (\n <>\n <div className={\"col-span-12\"}>\n\n <ValidationPanel>\n <GeneralPropertyValidation disabled={disabled}/>\n </ValidationPanel>\n\n </div>\n </>\n );\n}\n","import {\n ArrayProperty,\n BooleanProperty,\n DateProperty,\n MapProperty,\n mergeDeep,\n NumberProperty,\n Property,\n PropertyConfig,\n StringProperty\n} from \"@firecms/core\";\n\nexport function updatePropertyFromWidget(propertyData: any,\n selectedWidgetId: string | undefined,\n propertyConfigs: Record<string, PropertyConfig>): Property {\n\n let updatedProperty;\n if (selectedWidgetId === \"text_field\") {\n updatedProperty = mergeDeep(\n propertyData,\n {\n dataType: \"string\",\n propertyConfig: \"text_field\",\n editable: propertyData.editable !== undefined ? propertyData.editable : true,\n storage: undefined,\n multiline: undefined,\n markdown: undefined,\n email: undefined,\n url: undefined,\n enumValues: undefined,\n userSelect: undefined\n } satisfies StringProperty\n );\n } else if (selectedWidgetId === \"user_select\") {\n updatedProperty = mergeDeep(\n propertyData,\n {\n dataType: \"string\",\n propertyConfig: \"user_select\",\n editable: propertyData.editable !== undefined ? propertyData.editable : true,\n storage: undefined,\n multiline: undefined,\n markdown: undefined,\n email: undefined,\n url: undefined,\n enumValues: undefined,\n userSelect: true\n } satisfies StringProperty\n );\n } else if (selectedWidgetId === \"multiline\") {\n updatedProperty = mergeDeep(\n propertyData,\n {\n dataType: \"string\",\n propertyConfig: \"multiline\",\n editable: propertyData.editable !== undefined ? propertyData.editable : true,\n multiline: true,\n storage: undefined,\n markdown: undefined,\n email: undefined,\n url: undefined,\n enumValues: undefined,\n userSelect: undefined\n } satisfies StringProperty\n );\n } else if (selectedWidgetId === \"markdown\") {\n updatedProperty = mergeDeep(\n propertyData,\n {\n dataType: \"string\",\n propertyConfig: \"markdown\",\n editable: propertyData.editable !== undefined ? propertyData.editable : true,\n storage: undefined,\n multiline: undefined,\n markdown: true,\n email: undefined,\n url: undefined,\n userSelect: undefined\n } satisfies StringProperty\n );\n } else if (selectedWidgetId === \"url\") {\n updatedProperty = mergeDeep(\n propertyData,\n {\n dataType: \"string\",\n propertyConfig: \"url\",\n editable: propertyData.editable !== undefined ? propertyData.editable : true,\n storage: undefined,\n multiline: undefined,\n markdown: undefined,\n email: undefined,\n url: true,\n enumValues: undefined,\n userSelect: undefined\n } satisfies StringProperty\n );\n } else if (selectedWidgetId === \"email\") {\n updatedProperty = mergeDeep(\n propertyData,\n {\n dataType: \"string\",\n propertyConfig: \"email\",\n editable: propertyData.editable !== undefined ? propertyData.editable : true,\n storage: undefined,\n multiline: undefined,\n markdown: undefined,\n email: true,\n url: undefined,\n enumValues: undefined,\n userSelect: undefined\n } satisfies StringProperty\n );\n } else if (selectedWidgetId === \"select\") {\n updatedProperty = mergeDeep(\n propertyData,\n {\n dataType: \"string\",\n propertyConfig: \"select\",\n editable: propertyData.editable !== undefined ? propertyData.editable : true,\n storage: undefined,\n multiline: undefined,\n markdown: undefined,\n email: undefined,\n url: undefined,\n enumValues: propertyData.enumValues ?? [],\n userSelect: undefined\n } satisfies StringProperty\n );\n } else if (selectedWidgetId === \"multi_select\") {\n updatedProperty = mergeDeep(\n propertyData,\n {\n dataType: \"array\",\n propertyConfig: \"multi_select\",\n editable: propertyData.editable !== undefined ? propertyData.editable : true,\n of: {\n dataType: \"string\",\n enumValues: propertyData.of?.enumValues ?? []\n }\n } satisfies ArrayProperty\n );\n } else if (selectedWidgetId === \"number_input\") {\n updatedProperty = mergeDeep(\n propertyData,\n {\n dataType: \"number\",\n propertyConfig: \"number_input\",\n editable: propertyData.editable !== undefined ? propertyData.editable : true,\n enumValues: undefined\n } satisfies NumberProperty\n );\n } else if (selectedWidgetId === \"number_select\") {\n updatedProperty = mergeDeep(\n propertyData,\n {\n dataType: \"number\",\n propertyConfig: \"number_select\",\n editable: propertyData.editable !== undefined ? propertyData.editable : true,\n enumValues: propertyData.enumValues ?? []\n } satisfies NumberProperty\n );\n } else if (selectedWidgetId === \"multi_number_select\") {\n updatedProperty = mergeDeep(\n propertyData,\n {\n dataType: \"array\",\n propertyConfig: \"multi_number_select\",\n editable: propertyData.editable !== undefined ? propertyData.editable : true,\n of: {\n dataType: \"number\",\n enumValues: propertyData.of?.enumValues ?? []\n }\n } satisfies ArrayProperty\n );\n } else if (selectedWidgetId === \"file_upload\") {\n updatedProperty = mergeDeep(\n propertyData,\n {\n dataType: \"string\",\n propertyConfig: \"file_upload\",\n editable: propertyData.editable !== undefined ? propertyData.editable : true,\n storage: {\n storagePath: \"/\"\n }\n } satisfies StringProperty\n );\n } else if (selectedWidgetId === \"multi_file_upload\") {\n updatedProperty = mergeDeep(\n propertyData,\n {\n dataType: \"array\",\n propertyConfig: \"multi_file_upload\",\n editable: propertyData.editable !== undefined ? propertyData.editable : true,\n of: {\n dataType: \"string\",\n storage: propertyData.of?.storage ?? {\n storagePath: \"/\"\n }\n }\n } satisfies ArrayProperty\n );\n } else if (selectedWidgetId === \"group\") {\n updatedProperty = mergeDeep(\n propertyData,\n {\n dataType: \"map\",\n propertyConfig: \"group\",\n editable: propertyData.editable !== undefined ? propertyData.editable : true,\n keyValue: false,\n properties: propertyData.properties ?? {}\n } satisfies MapProperty\n );\n } else if (selectedWidgetId === \"key_value\") {\n updatedProperty = mergeDeep(\n propertyData,\n {\n dataType: \"map\",\n propertyConfig: \"key_value\",\n editable: propertyData.editable !== undefined ? propertyData.editable : true,\n keyValue: true,\n properties: undefined\n } satisfies MapProperty\n );\n } else if (selectedWidgetId === \"reference\") {\n updatedProperty = mergeDeep(\n propertyData,\n {\n dataType: \"reference\",\n propertyConfig: \"reference\",\n editable: propertyData.editable !== undefined ? propertyData.editable : true\n } satisfies Property\n );\n } else if (selectedWidgetId === \"reference_as_string\") {\n updatedProperty = mergeDeep(\n propertyData,\n {\n dataType: \"string\",\n propertyConfig: \"reference_as_string\",\n editable: propertyData.editable !== undefined ? propertyData.editable : true\n } satisfies Property\n );\n } else if (selectedWidgetId === \"multi_references\") {\n updatedProperty = mergeDeep(\n propertyData,\n {\n dataType: \"array\",\n propertyConfig: \"multi_references\",\n editable: propertyData.editable !== undefined ? propertyData.editable : true,\n of: {\n dataType: \"reference\"\n }\n } satisfies ArrayProperty\n );\n } else if (selectedWidgetId === \"switch\") {\n updatedProperty = mergeDeep(\n propertyData,\n {\n dataType: \"boolean\",\n propertyConfig: \"switch\",\n editable: propertyData.editable !== undefined ? propertyData.editable : true\n } satisfies BooleanProperty\n );\n } else if (selectedWidgetId === \"date_time\") {\n updatedProperty = mergeDeep(\n propertyData,\n {\n dataType: \"date\",\n propertyConfig: \"date_time\",\n editable: propertyData.editable !== undefined ? propertyData.editable : true,\n mode: \"date_time\"\n } satisfies DateProperty\n );\n } else if (selectedWidgetId === \"repeat\") {\n updatedProperty = mergeDeep(\n propertyData,\n {\n dataType: \"array\",\n propertyConfig: \"repeat\",\n editable: propertyData.editable !== undefined ? propertyData.editable : true\n } satisfies ArrayProperty\n );\n } else if (selectedWidgetId === \"block\") {\n updatedProperty = mergeDeep(\n propertyData,\n {\n dataType: \"array\",\n propertyConfig: \"block\",\n editable: propertyData.editable !== undefined ? propertyData.editable : true,\n oneOf: {\n properties: {}\n }\n } satisfies ArrayProperty\n );\n } else if (selectedWidgetId && propertyConfigs[selectedWidgetId]) {\n updatedProperty = {\n ...propertyConfigs[selectedWidgetId].property,\n propertyConfig: selectedWidgetId\n };\n }\n\n return updatedProperty;\n}\n","import React from \"react\";\nimport { StringPropertyValidation } from \"./validation/StringPropertyValidation\";\nimport { ValidationPanel } from \"./validation/ValidationPanel\";\nimport { getIn, useFormex } from \"@firecms/formex\";\n\nimport { Select, SelectItem, TextField } from \"@firecms/ui\";\n\nexport function UrlPropertyField({\n disabled,\n showErrors\n }: {\n disabled: boolean;\n showErrors: boolean;\n}) {\n\n const { values, setFieldValue } = useFormex();\n\n const urlValue = getIn(values, \"url\");\n\n return (\n <>\n <div className={\"col-span-12\"}>\n\n <Select\n disabled={disabled}\n position={\"item-aligned\"}\n fullWidth={true}\n onValueChange={(value: string) => {\n if (value === \"[NONE]\")\n setFieldValue(\"url\", true);\n else\n setFieldValue(\"url\", value);\n }}\n label={\"Preview type\"}\n renderValue={(value: string) => {\n switch (value) {\n case \"image\":\n return \"Image\";\n case \"video\":\n return \"Video\";\n case \"audio\":\n return \"Audio\";\n default:\n return \"Display URL\";\n }\n }}\n value={urlValue ?? \"[NONE]\"}>\n <SelectItem value={\"[NONE]\"}>\n Display URL\n </SelectItem>\n <SelectItem value={\"image\"}>\n Image\n </SelectItem>\n <SelectItem value={\"video\"}>\n Video\n </SelectItem>\n <SelectItem value={\"audio\"}>\n Audio\n </SelectItem>\n </Select>\n </div>\n\n <div className={\"col-span-12\"}>\n\n <ValidationPanel>\n\n <StringPropertyValidation disabled={disabled}\n max={true}\n min={true}\n trim={true}\n showErrors={showErrors}/>\n\n </ValidationPanel>\n\n </div>\n\n <div className={\"col-span-12\"}>\n\n <TextField name={\"defaultValue\"}\n disabled={disabled}\n onChange={(e: any) => {\n setFieldValue(\"defaultValue\", e.target.value === \"\" ? undefined : e.target.value);\n }}\n label={\"Default value\"}\n value={getIn(values, \"defaultValue\") ?? \"\"}/>\n\n </div>\n </>\n );\n}\n","import { DEFAULT_FIELD_CONFIGS, PropertyConfigId, PropertyConfig } from \"@firecms/core\";\n\nexport const supportedFieldsIds: PropertyConfigId[] = [\n \"text_field\",\n \"multiline\",\n \"markdown\",\n \"url\",\n \"email\",\n \"user_select\",\n \"select\",\n \"multi_select\",\n \"number_input\",\n \"number_select\",\n \"multi_number_select\",\n \"file_upload\",\n \"multi_file_upload\",\n \"reference\",\n \"reference_as_string\",\n \"multi_references\",\n \"switch\",\n \"date_time\",\n \"group\",\n \"key_value\",\n \"repeat\",\n \"block\"\n];\n\nexport const supportedFields: Record<string, PropertyConfig> = Object.entries(DEFAULT_FIELD_CONFIGS)\n .filter(([id]) => supportedFieldsIds.includes(id as PropertyConfigId))\n .map(([id, config]) => ({ [id]: config }))\n .reduce((a, b) => ({ ...a, ...b }), {});\n","import React, { useCallback } from \"react\";\nimport { StringPropertyValidation } from \"./validation/StringPropertyValidation\";\nimport { ValidationPanel } from \"./validation/ValidationPanel\";\nimport { Field, getIn, useFormex } from \"@firecms/formex\";\n\nimport {\n BooleanSwitchWithLabel,\n CloudUploadIcon,\n DebouncedTextField,\n ExpandablePanel,\n SettingsIcon,\n TextField,\n Typography\n} from \"@firecms/ui\";\n\nexport function MarkdownPropertyField({\n disabled,\n showErrors\n}: {\n disabled: boolean;\n showErrors: boolean;\n}) {\n\n const {\n values,\n setFieldValue\n } = useFormex();\n\n const baseStoragePath = \"storage\";\n const baseMarkdownPath = \"markdown\";\n\n const metadata = `${baseStoragePath}.metadata`;\n const fileName = `${baseStoragePath}.fileName`;\n const maxSize = `${baseStoragePath}.maxSize`;\n const storagePath = `${baseStoragePath}.storagePath`;\n\n // Markdown config paths\n const htmlPath = `${baseMarkdownPath}.html`;\n const transformPastedTextPath = `${baseMarkdownPath}.transformPastedText`;\n\n const fileNameValue = getIn(values, fileName) ?? \"{rand}_{file}\";\n const storagePathValue = getIn(values, storagePath) ?? \"/\";\n const maxSizeValue = getIn(values, maxSize);\n\n // Markdown config values - check if markdown is an object or boolean\n const markdownValue = getIn(values, \"markdown\");\n const isMarkdownObject = typeof markdownValue === \"object\" && markdownValue !== null;\n const htmlValue = isMarkdownObject ? (markdownValue.html ?? true) : true;\n const transformPastedTextValue = isMarkdownObject ? (markdownValue.transformPastedText ?? false) : false;\n\n const hasFilenameCallback = typeof fileNameValue === \"function\";\n const hasStoragePathCallback = typeof storagePathValue === \"function\";\n\n // Handler to update markdown config - converts from boolean to object if needed\n const updateMarkdownConfig = useCallback((key: \"html\" | \"transformPastedText\", value: boolean) => {\n const currentMarkdown = getIn(values, \"markdown\");\n if (typeof currentMarkdown === \"object\" && currentMarkdown !== null) {\n // Already an object, update the key\n setFieldValue(`markdown.${key}`, value);\n } else {\n // Convert from boolean to object\n const defaultConfig = {\n html: true,\n transformPastedText: false\n };\n setFieldValue(\"markdown\", {\n ...defaultConfig,\n [key]: value\n });\n }\n }, [values, setFieldValue]);\n\n return (\n <>\n <div className={\"col-span-12\"}>\n\n <ValidationPanel>\n\n <StringPropertyValidation disabled={disabled}\n length={true}\n lowercase={true}\n max={true}\n min={true}\n trim={true}\n uppercase={true}\n showErrors={showErrors} />\n\n </ValidationPanel>\n\n </div>\n\n <div className={\"col-span-12\"}>\n <ExpandablePanel\n title={\n <div className=\"flex flex-row text-surface-500\">\n <SettingsIcon />\n <Typography variant={\"subtitle2\"}\n className=\"ml-4\">\n Paste behavior\n </Typography>\n </div>\n }>\n\n <div className={\"flex flex-col gap-2 p-4\"}>\n <BooleanSwitchWithLabel\n size={\"small\"}\n disabled={disabled}\n value={!htmlValue}\n onValueChange={(value) => updateMarkdownConfig(\"html\", !value)}\n label={\"Strip HTML on paste\"}\n />\n <Typography variant={\"caption\"} className={\"ml-3.5 mt-1 mb-2\"}>\n Remove HTML tags and inline styles when pasting content from external sources\n </Typography>\n\n <BooleanSwitchWithLabel\n size={\"small\"}\n disabled={disabled}\n value={transformPastedTextValue}\n onValueChange={(value) => updateMarkdownConfig(\"transformPastedText\", value)}\n label={\"Convert pasted text to markdown\"}\n />\n <Typography variant={\"caption\"} className={\"ml-3.5 mt-1 mb-2\"}>\n Convert rich text (from Google Docs, Word, etc.) to clean markdown format\n </Typography>\n </div>\n </ExpandablePanel>\n </div>\n\n <div className={\"col-span-12\"}>\n <ExpandablePanel\n title={\n <div className=\"flex flex-row text-surface-500\">\n <CloudUploadIcon />\n <Typography variant={\"subtitle2\"}\n className=\"ml-4\">\n File upload config\n </Typography>\n </div>\n }>\n\n <div className={\"grid grid-cols-12 gap-2 p-4\"}>\n\n\n <div className={\"col-span-12\"}>\n <Field name={fileName}\n as={DebouncedTextField}\n label={\"File name\"}\n size={\"small\"}\n disabled={hasFilenameCallback || disabled}\n value={hasFilenameCallback ? \"-\" : fileNameValue}\n />\n </div>\n <div className={\"col-span-12\"}>\n <Field name={storagePath}\n as={DebouncedTextField}\n label={\"Storage path\"}\n disabled={hasStoragePathCallback || disabled}\n size={\"small\"}\n value={hasStoragePathCallback ? \"-\" : storagePathValue}\n />\n <Typography variant={\"caption\"} className={\"ml-3.5 mt-1 mb-2\"}>\n <p>You can use the following placeholders in\n the file name\n and storage path values:</p>\n <ul>\n <li>{\"{file} - Full name of the uploaded file\"}</li>\n <li>{\"{file.name} - Name of the uploaded file without extension\"}</li>\n <li>{\"{file.ext} - Extension of the uploaded file\"}</li>\n <li>{\"{entityId} - ID of the entity\"}</li>\n <li>{\"{propertyKey} - ID of this field\"}</li>\n <li>{\"{path} - Path of this entity\"}</li>\n <li>{\"{rand} - Random value used to avoid name collisions\"}</li>\n </ul>\n </Typography>\n\n <Typography variant={\"caption\"} className={\"ml-3.5 mt-1 mb-2\"}>\n When using Markdown, the URL of the uploaded files are always saved in the text value\n (not\n the path).\n </Typography>\n </div>\n\n <div className={\"col-span-12\"}>\n <DebouncedTextField name={maxSize}\n type={\"number\"}\n label={\"Max size (in bytes)\"}\n size={\"small\"}\n value={maxSizeValue !== undefined && maxSizeValue !== null ? maxSizeValue.toString() : \"\"}\n onChange={(e) => {\n const value = e.target.value;\n if (value === \"\") setFieldValue(maxSize, undefined);\n else setFieldValue(maxSize, parseInt(value));\n }}\n />\n </div>\n\n </div>\n </ExpandablePanel>\n </div>\n\n <div className={\"col-span-12\"}>\n\n <TextField name={\"defaultValue\"}\n disabled={disabled}\n onChange={(e: any) => {\n setFieldValue(\"defaultValue\", e.target.value === \"\" ? undefined : e.target.value);\n }}\n label={\"Default value\"}\n value={getIn(values, \"defaultValue\") ?? \"\"} />\n\n </div>\n </>\n );\n}\n","import React, { useDeferredValue, useEffect, useRef, useState } from \"react\";\nimport equal from \"react-fast-compare\"\n\nimport { Formex, FormexController, getIn, useCreateFormex } from \"@firecms/formex\";\nimport {\n ConfirmationDialog,\n DEFAULT_FIELD_CONFIGS,\n getFieldConfig,\n getFieldId,\n isPropertyBuilder,\n isValidRegExp,\n mergeDeep,\n Properties,\n Property,\n PropertyConfig,\n PropertyConfigBadge,\n PropertyConfigId,\n} from \"@firecms/core\";\nimport {\n Button,\n Card,\n cls,\n DeleteIcon,\n Dialog,\n DialogActions,\n DialogContent,\n DialogTitle,\n fieldBackgroundDisabledMixin,\n fieldBackgroundHoverMixin,\n fieldBackgroundMixin,\n IconButton,\n InfoLabel,\n Tooltip,\n Typography,\n WarningIcon\n} from \"@firecms/ui\";\nimport { EnumPropertyField } from \"./properties/EnumPropertyField\";\nimport { StoragePropertyField } from \"./properties/StoragePropertyField\";\nimport { MapPropertyField } from \"./properties/MapPropertyField\";\nimport { RepeatPropertyField } from \"./properties/RepeatPropertyField\";\nimport { CommonPropertyFields } from \"./properties/CommonPropertyFields\";\nimport { StringPropertyField } from \"./properties/StringPropertyField\";\nimport { BooleanPropertyField } from \"./properties/BooleanPropertyField\";\nimport { BlockPropertyField } from \"./properties/BlockPropertyField\";\nimport { NumberPropertyField } from \"./properties/NumberPropertyField\";\nimport { ReferencePropertyField } from \"./properties/ReferencePropertyField\";\nimport { DateTimePropertyField } from \"./properties/DateTimePropertyField\";\nimport { AdvancedPropertyValidation } from \"./properties/advanced/AdvancedPropertyValidation\";\nimport { ConditionsPanel, ConditionsEditor, EnumConditionsEditor } from \"./properties/conditions\";\nimport { editableProperty } from \"../../utils/entities\";\nimport { KeyValuePropertyField } from \"./properties/KeyValuePropertyField\";\nimport { updatePropertyFromWidget } from \"./utils/update_property_for_widget\";\nimport { UrlPropertyField } from \"./properties/UrlPropertyField\";\nimport { supportedFields } from \"./utils/supported_fields\";\nimport { MarkdownPropertyField } from \"./properties/MarkdownPropertyField\";\n\nexport type PropertyWithId = Property & {\n id?: string\n};\n\nexport type OnPropertyChangedParams = {\n id?: string,\n property: Property,\n namespace?: string,\n previousId?: string\n};\n\nexport type PropertyFormProps = {\n includeIdAndName?: boolean;\n existingProperty: boolean;\n autoUpdateId?: boolean;\n autoOpenTypeSelect: boolean;\n inArray: boolean;\n propertyKey?: string;\n propertyNamespace?: string;\n property?: Property;\n onPropertyChanged?: (params: OnPropertyChangedParams) => void;\n onPropertyChangedImmediate?: boolean;\n onDismiss?: () => void;\n onDelete?: (id?: string, namespace?: string) => void;\n onError?: (id: string, namespace?: string, error?: Record<string, any>) => void;\n initialErrors?: Record<string, any>;\n existingPropertyKeys?: string[];\n forceShowErrors?: boolean;\n allowDataInference: boolean;\n getData?: () => Promise<object[]>;\n getController?: (formex: FormexController<PropertyWithId>) => void;\n propertyConfigs: Record<string, PropertyConfig>;\n collectionEditable: boolean;\n /**\n * Collection properties for populating the conditions field selector.\n * Includes nested map properties.\n */\n collectionProperties?: Properties;\n};\n\nexport const PropertyForm = React.memo(\n function PropertyForm(props: PropertyFormProps) {\n\n const {\n includeIdAndName = true,\n autoOpenTypeSelect,\n existingProperty,\n autoUpdateId,\n inArray,\n propertyKey,\n existingPropertyKeys,\n propertyNamespace,\n property,\n onPropertyChanged,\n onPropertyChangedImmediate = true,\n onDismiss,\n onDelete,\n onError,\n initialErrors,\n forceShowErrors,\n allowDataInference,\n getData,\n getController,\n propertyConfigs,\n collectionEditable,\n collectionProperties\n } = props;\n\n const initialValue: PropertyWithId = {\n id: \"\",\n name: \"\"\n } as PropertyWithId;\n\n const disabled = (Boolean(property && !editableProperty(property)) || !collectionEditable);\n\n const lastSubmittedProperty = useRef<OnPropertyChangedParams | undefined>(property ? {\n id: propertyKey,\n previousId: propertyKey,\n property\n } : undefined);\n\n const doOnPropertyChanged = ({\n id,\n property\n }: OnPropertyChangedParams) => {\n const params = {\n id,\n previousId: lastSubmittedProperty.current?.id,\n property,\n namespace: propertyNamespace\n };\n lastSubmittedProperty.current = params;\n onPropertyChanged?.(params);\n };\n\n const formexController = useCreateFormex<PropertyWithId>({\n debugId: \"PROPERTY_FORM\",\n initialValues: property\n ? { id: propertyKey, ...property } as PropertyWithId\n : initialValue,\n initialErrors,\n validateOnChange: true,\n validateOnInitialRender: true,\n onSubmit: (newPropertyWithId, controller) => {\n const {\n id,\n ...property\n } = newPropertyWithId;\n doOnPropertyChanged({\n id,\n property: {\n ...property,\n editable: property.editable ?? true\n }\n });\n if (!existingProperty)\n controller.resetForm({ values: initialValue });\n },\n validation: (values) => {\n const errors: Record<string, any> = {};\n if (includeIdAndName) {\n if (!values.name) {\n errors.name = \"Required\";\n } else {\n const nameError = validateName(values.name);\n if (nameError)\n errors.name = nameError;\n }\n if (!values.id) {\n errors.id = \"Required\";\n } else {\n // Exclude the current property key when editing to avoid false duplicate error\n const keysToCheck = existingPropertyKeys?.filter(key => key !== propertyKey);\n const idError = validateId(values.id, keysToCheck);\n if (idError)\n errors.id = idError;\n }\n }\n\n if (values.dataType === \"string\") {\n if (values.validation?.matches && !isValidRegExp(values.validation?.matches.toString())) {\n errors.validation = {\n matches: \"Invalid regular expression\"\n }\n }\n }\n if (values.dataType === \"reference\" && !values.path) {\n errors.path = \"You must specify a target collection for the field\";\n }\n if (values.propertyConfig === \"repeat\") {\n if (!(values as any).of) {\n errors.of = \"You need to specify a repeat field\";\n }\n }\n if (values.propertyConfig === \"block\") {\n if (!(values as any).oneOf) {\n errors.oneOf = \"You need to specify the properties of this block\";\n }\n }\n\n // Validate conditions - check for incomplete condition rules\n const conditions = (values as any).conditions;\n if (conditions) {\n const conditionErrors: Record<string, string> = {};\n const conditionTypes = [\"disabled\", \"hidden\", \"required\", \"readOnly\"];\n\n // Helper to check if a JSON Logic rule is incomplete (placeholder or empty keys)\n const isIncompleteRule = (rule: any): boolean => {\n if (!rule || typeof rule !== \"object\") return false;\n const ruleStr = JSON.stringify(rule);\n // Check for placeholder pattern used when field is not selected\n if (ruleStr.includes(\"values._placeholder\")) return true;\n // Check for empty string keys (invalid operators)\n if (Object.keys(rule).some(k => k === \"\")) return true;\n // Recursively check nested objects\n for (const key of Object.keys(rule)) {\n if (typeof rule[key] === \"object\" && isIncompleteRule(rule[key])) return true;\n }\n return false;\n };\n\n for (const type of conditionTypes) {\n const rule = conditions[type];\n if (rule && isIncompleteRule(rule)) {\n conditionErrors[type] = \"Incomplete condition - please select a field\";\n }\n }\n\n // Validate enum conditions (allowedEnumValues, excludedEnumValues)\n for (const enumType of [\"allowedEnumValues\", \"excludedEnumValues\"]) {\n const rule = conditions[enumType];\n if (rule && typeof rule === \"object\" && rule.if) {\n if (isIncompleteRule(rule)) {\n conditionErrors[enumType] = \"Incomplete condition - please select a field\";\n }\n }\n }\n\n if (Object.keys(conditionErrors).length > 0) {\n errors.conditions = conditionErrors;\n }\n }\n\n return errors;\n }\n });\n\n useEffect(() => {\n getController?.(formexController);\n }, [formexController, getController]);\n\n return <Formex value={formexController}>\n <PropertyEditFormFields\n onPropertyChanged={onPropertyChangedImmediate\n ? doOnPropertyChanged\n : undefined}\n onDelete={onDelete}\n includeIdAndTitle={includeIdAndName}\n propertyNamespace={propertyNamespace}\n onError={onError}\n onDismiss={onDismiss}\n showErrors={forceShowErrors || formexController.submitCount > 0}\n existing={existingProperty}\n autoUpdateId={autoUpdateId}\n inArray={inArray}\n autoOpenTypeSelect={autoOpenTypeSelect}\n disabled={disabled}\n getData={getData}\n allowDataInference={allowDataInference}\n propertyConfigs={propertyConfigs}\n collectionEditable={collectionEditable}\n collectionProperties={collectionProperties}\n {...formexController} />\n </Formex>;\n }, (a, b) =>\n a.getData === b.getData &&\n a.propertyKey === b.propertyKey &&\n a.propertyNamespace === b.propertyNamespace &&\n a.includeIdAndName === b.includeIdAndName &&\n a.autoOpenTypeSelect === b.autoOpenTypeSelect &&\n a.autoUpdateId === b.autoUpdateId &&\n a.existingPropertyKeys === b.existingPropertyKeys &&\n a.existingProperty === b.existingProperty &&\n equal(a.property, b.property)\n);\n\nexport function PropertyFormDialog({\n open,\n onCancel,\n onOkClicked,\n onPropertyChanged,\n getData,\n collectionEditable,\n ...formProps\n}: PropertyFormProps & {\n open?: boolean;\n onOkClicked?: () => void;\n onCancel?: () => void;\n}) {\n const formexRef = useRef<FormexController<PropertyWithId>>();\n const getController = (helpers: FormexController<PropertyWithId>) => {\n formexRef.current = helpers;\n };\n\n return <Dialog\n open={open ?? false}\n maxWidth={\"xl\"}\n fullWidth={true}\n >\n <form noValidate={true}\n autoComplete={\"off\"}\n onSubmit={(e) => {\n e.preventDefault();\n e.stopPropagation();\n formexRef.current?.handleSubmit(e)\n }}>\n <DialogTitle hidden>Property edit view</DialogTitle>\n <DialogContent>\n\n <PropertyForm {...formProps}\n onDismiss={onCancel}\n onPropertyChanged={(params) => {\n onPropertyChanged?.(params);\n onOkClicked?.();\n }}\n collectionEditable={collectionEditable}\n onPropertyChangedImmediate={false}\n getController={getController}\n getData={getData}\n />\n </DialogContent>\n\n <DialogActions>\n\n {onCancel && <Button\n variant={\"text\"}\n onClick={() => {\n onCancel();\n formexRef.current?.resetForm();\n }}>\n Cancel\n </Button>}\n\n <Button type={\"submit\"}>\n Ok\n </Button>\n </DialogActions>\n </form>\n </Dialog>;\n\n}\n\nfunction PropertyEditFormFields({\n values,\n errors,\n setValues,\n existing,\n autoUpdateId = false,\n autoOpenTypeSelect,\n includeIdAndTitle,\n onPropertyChanged,\n onDelete,\n propertyNamespace,\n onDismiss,\n onError,\n showErrors,\n disabled,\n inArray,\n getData,\n allowDataInference,\n propertyConfigs,\n collectionEditable,\n collectionProperties\n}: {\n includeIdAndTitle?: boolean;\n existing: boolean;\n autoUpdateId?: boolean;\n autoOpenTypeSelect: boolean;\n propertyNamespace?: string;\n onDismiss?: () => void;\n onPropertyChanged?: (params: OnPropertyChangedParams) => void;\n onDelete?: (id?: string, namespace?: string) => void;\n onError?: (id: string, namespace?: string, error?: Record<string, any>) => void;\n showErrors: boolean;\n inArray: boolean;\n disabled: boolean;\n getData?: () => Promise<object[]>;\n allowDataInference: boolean;\n propertyConfigs: Record<string, PropertyConfig>;\n collectionEditable: boolean;\n collectionProperties?: Properties;\n} & FormexController<PropertyWithId>) {\n\n const [selectOpen, setSelectOpen] = useState(autoOpenTypeSelect);\n const [deleteDialogOpen, setDeleteDialogOpen] = useState(false);\n const [selectedFieldConfigId, setSelectedFieldConfigId] = useState<string | undefined>(values?.dataType ? getFieldId(values) : undefined);\n\n const deferredValues = useDeferredValue(values);\n const nameFieldRef = useRef<HTMLInputElement>(null);\n\n const lastSubmittedProperty = useRef<object>(values);\n\n const selectedWidgetError = showErrors && getIn(errors, \"selectedWidget\");\n\n useEffect(() => {\n if (onPropertyChanged) {\n if ((!includeIdAndTitle || deferredValues.id)) {\n const {\n id,\n ...property\n } = deferredValues;\n if (!equal(deferredValues, lastSubmittedProperty.current)) {\n onPropertyChanged({\n id,\n property,\n namespace: propertyNamespace\n });\n lastSubmittedProperty.current = deferredValues;\n }\n }\n }\n }, [deferredValues, includeIdAndTitle, propertyNamespace]);\n\n useEffect(() => {\n if (values?.id && onError) {\n onError(values?.id, propertyNamespace, errors);\n }\n }, [errors, propertyNamespace, values?.id]);\n\n const onWidgetSelectChanged = (newSelectedWidgetId: PropertyConfigId) => {\n setSelectedFieldConfigId(newSelectedWidgetId);\n setValues(updatePropertyFromWidget(values, newSelectedWidgetId, propertyConfigs));\n // Ugly hack to autofocus the name field\n setTimeout(() => {\n nameFieldRef.current?.focus();\n }, 0);\n };\n\n let childComponent;\n if (selectedFieldConfigId === \"text_field\" ||\n selectedFieldConfigId === \"multiline\" ||\n selectedFieldConfigId === \"user_select\" ||\n selectedFieldConfigId === \"email\") {\n childComponent =\n <StringPropertyField widgetId={selectedFieldConfigId}\n disabled={disabled}\n showErrors={showErrors} />;\n } else if (selectedFieldConfigId === \"url\") {\n childComponent =\n <UrlPropertyField disabled={disabled}\n showErrors={showErrors} />;\n } else if (selectedFieldConfigId === \"markdown\") {\n childComponent =\n <MarkdownPropertyField disabled={disabled}\n showErrors={showErrors} />;\n } else if (selectedFieldConfigId === \"select\" ||\n selectedFieldConfigId === \"number_select\") {\n childComponent = <EnumPropertyField\n multiselect={false}\n allowDataInference={allowDataInference}\n updateIds={!existing}\n disabled={disabled}\n getData={getData}\n propertyNamespace={propertyNamespace}\n showErrors={showErrors} />;\n } else if (selectedFieldConfigId === \"multi_select\" ||\n selectedFieldConfigId === \"multi_number_select\") {\n childComponent = <EnumPropertyField\n multiselect={true}\n updateIds={!existing}\n disabled={disabled}\n allowDataInference={allowDataInference}\n getData={getData}\n propertyNamespace={propertyNamespace}\n showErrors={showErrors} />;\n } else if (selectedFieldConfigId === \"file_upload\") {\n childComponent =\n <StoragePropertyField existing={existing}\n multiple={false}\n disabled={disabled} />;\n } else if (selectedFieldConfigId === \"multi_file_upload\") {\n childComponent =\n <StoragePropertyField existing={existing}\n multiple={true}\n disabled={disabled} />;\n } else if (selectedFieldConfigId === \"switch\") {\n childComponent = <BooleanPropertyField disabled={disabled} />;\n } else if (selectedFieldConfigId === \"number_input\") {\n childComponent = <NumberPropertyField disabled={disabled} />;\n } else if (selectedFieldConfigId === \"group\") {\n childComponent =\n <MapPropertyField disabled={disabled} getData={getData} allowDataInference={allowDataInference}\n collectionEditable={collectionEditable}\n propertyConfigs={propertyConfigs} />;\n } else if (selectedFieldConfigId === \"block\") {\n childComponent =\n <BlockPropertyField disabled={disabled} getData={getData} allowDataInference={allowDataInference}\n collectionEditable={collectionEditable}\n propertyConfigs={propertyConfigs} />;\n } else if (selectedFieldConfigId === \"reference\") {\n childComponent =\n <ReferencePropertyField showErrors={showErrors}\n existing={existing}\n multiple={false}\n disabled={disabled} />;\n } else if (selectedFieldConfigId === \"reference_as_string\") {\n childComponent =\n <ReferencePropertyField showErrors={showErrors}\n existing={existing}\n asString={true}\n multiple={false}\n disabled={disabled} />;\n } else if (selectedFieldConfigId === \"date_time\") {\n childComponent = <DateTimePropertyField disabled={disabled} />;\n } else if (selectedFieldConfigId === \"multi_references\") {\n childComponent =\n <ReferencePropertyField showErrors={showErrors}\n existing={existing}\n multiple={true}\n disabled={disabled} />;\n } else if (selectedFieldConfigId === \"repeat\") {\n childComponent =\n <RepeatPropertyField showErrors={showErrors}\n existing={existing}\n getData={getData}\n allowDataInference={allowDataInference}\n disabled={disabled}\n collectionEditable={collectionEditable}\n propertyConfigs={propertyConfigs} />;\n } else if (selectedFieldConfigId === \"key_value\") {\n childComponent =\n <KeyValuePropertyField disabled={disabled} />;\n } else {\n childComponent = null;\n }\n\n return (\n <>\n {disabled && <InfoLabel mode={\"warn\"}>\n <Typography>This property can't be edited</Typography>\n <Typography variant={\"caption\"}>\n You may not have permission to\n edit it or it is defined in code with the <code>editable</code> flag set to <code>false</code>.\n </Typography>\n </InfoLabel>}\n\n <div className=\"flex mt-2 justify-between\">\n <div className={\"w-full flex flex-col gap-2\"}>\n <WidgetSelectView\n initialProperty={values}\n value={selectedFieldConfigId as PropertyConfigId}\n onValueChange={(value) => onWidgetSelectChanged(value as PropertyConfigId)}\n open={selectOpen}\n onOpenChange={(open, hasValue) => {\n if (!hasValue) {\n onDismiss?.();\n }\n setSelectOpen(open);\n }}\n disabled={disabled}\n showError={Boolean(selectedWidgetError)}\n existing={existing}\n propertyConfigs={propertyConfigs}\n inArray={inArray} />\n\n {selectedWidgetError &&\n <Typography variant=\"caption\"\n className={\"ml-3.5\"}\n color={\"error\"}>Required</Typography>}\n\n {/*<Typography variant=\"caption\" className={\"ml-3.5\"}>Define your own custom properties and*/}\n {/* components</Typography>*/}\n\n </div>\n\n {onDelete && existing && values?.id &&\n <IconButton\n variant={\"ghost\"}\n className=\"m-4\"\n disabled={disabled}\n onClick={() => setDeleteDialogOpen(true)}>\n <DeleteIcon />\n </IconButton>}\n </div>\n\n <div className={\"grid grid-cols-12 gap-y-12 mt-8 mb-8\"}>\n {includeIdAndTitle &&\n <CommonPropertyFields showErrors={showErrors}\n disabledId={existing}\n isNewProperty={!existing}\n disabled={disabled}\n autoUpdateId={autoUpdateId}\n ref={nameFieldRef} />}\n\n {childComponent}\n\n <div className={\"col-span-12\"}>\n <AdvancedPropertyValidation disabled={disabled} />\n </div>\n\n <div className={\"col-span-12\"}>\n <ConditionsPanel>\n <ConditionsEditor disabled={disabled} collectionProperties={collectionProperties} />\n <EnumConditionsEditor disabled={disabled} collectionProperties={collectionProperties} />\n </ConditionsPanel>\n </div>\n </div>\n\n {onDelete &&\n <ConfirmationDialog open={deleteDialogOpen}\n onAccept={() => onDelete(values?.id, propertyNamespace)}\n onCancel={() => setDeleteDialogOpen(false)}\n title={<div>Delete this property?</div>}\n body={\n <div> This will <b>not delete any\n data</b>, only modify the\n collection.</div>\n } />}\n\n </>\n );\n}\n\nconst idRegEx = /^[a-zA-Z_][a-zA-Z0-9_]*$/;\n\nfunction validateId(value?: string, existingPropertyKeys?: string[]) {\n\n let error;\n if (!value) {\n error = \"You must specify an id for the field\";\n }\n if (value && !value.match(idRegEx)) {\n error = \"The id can only contain letters, numbers and underscores (_), and not start with a number\";\n }\n if (value && existingPropertyKeys && existingPropertyKeys.includes(value)) {\n error = \"There is another field with this ID already\";\n }\n return error;\n}\n\nfunction validateName(value: string) {\n let error;\n if (!value) {\n error = \"You must specify a title for the field\";\n }\n return error;\n}\n\nconst WIDGET_TYPE_MAP: Record<PropertyConfigId, string> = {\n text_field: \"Text\",\n multiline: \"Text\",\n markdown: \"Text\",\n url: \"Text\",\n email: \"Text\",\n switch: \"Boolean\",\n user_select: \"Users\",\n select: \"Select\",\n multi_select: \"Select\",\n number_input: \"Number\",\n number_select: \"Select\",\n multi_number_select: \"Select\",\n file_upload: \"File\",\n multi_file_upload: \"File\",\n reference: \"Reference\",\n reference_as_string: \"Text\",\n multi_references: \"Reference\",\n date_time: \"Date\",\n group: \"Group\",\n key_value: \"Group\",\n repeat: \"Array\",\n custom_array: \"Array\",\n block: \"Group\"\n};\n\nfunction WidgetSelectView({\n initialProperty,\n value,\n onValueChange,\n open,\n onOpenChange,\n disabled,\n showError,\n existing,\n propertyConfigs,\n inArray\n}: {\n initialProperty?: PropertyWithId,\n value?: PropertyConfigId,\n onValueChange: (value: string) => void,\n showError: boolean,\n open: boolean,\n onOpenChange: (open: boolean, hasValue: boolean) => void,\n disabled: boolean,\n existing: boolean,\n propertyConfigs: Record<string, PropertyConfig>,\n inArray?: boolean\n}) {\n\n const allSupportedFields = Object.entries(supportedFields).concat(Object.entries(propertyConfigs));\n\n const displayedWidgets = (inArray\n ? allSupportedFields.filter(([_, propertyConfig]) => !isPropertyBuilder(propertyConfig.property) && propertyConfig.property?.dataType !== \"array\")\n : allSupportedFields)\n .map(([key, propertyConfig]) => ({\n [key]: propertyConfig\n }))\n .reduce((a, b) => {\n return {\n ...a,\n ...b\n }\n }, {});\n\n const key = value;\n const propertyConfig = key ? (DEFAULT_FIELD_CONFIGS[key] ?? propertyConfigs[key]) : undefined;\n const baseProperty = propertyConfig?.property;\n const baseFieldConfig = baseProperty && !isPropertyBuilder(baseProperty) ? getFieldConfig(baseProperty, propertyConfigs) : undefined;\n const computedFieldConfig = baseFieldConfig && propertyConfig ? mergeDeep(baseFieldConfig, propertyConfig) : propertyConfig;\n\n const groups: string[] = [...new Set(Object.keys(displayedWidgets).map(key => {\n const group = WIDGET_TYPE_MAP[key as PropertyConfigId];\n if (group) {\n return group;\n }\n return \"Custom/Other\"\n }))];\n\n return <>\n <div\n onClick={() => {\n if (!disabled) {\n onOpenChange(!open, Boolean(value));\n }\n }}\n className={cls(\n \"select-none rounded-md text-sm p-4\",\n fieldBackgroundMixin,\n disabled ? fieldBackgroundDisabledMixin : fieldBackgroundHoverMixin,\n \"relative flex items-center\",\n )}>\n {!value && <em>Select a property widget</em>}\n {value && computedFieldConfig && <div\n className={cls(\n \"flex items-center\")}>\n <div className={\"mr-8\"}>\n <PropertyConfigBadge propertyConfig={computedFieldConfig} />\n </div>\n <div className={\"flex flex-col items-start text-base text-left\"}>\n <div>{computedFieldConfig.name}</div>\n <Typography variant={\"caption\"}\n color={\"secondary\"}>\n {computedFieldConfig.description}\n </Typography>\n </div>\n </div>}\n </div>\n <Dialog open={open}\n onOpenChange={(open) => onOpenChange(open, Boolean(value))}\n maxWidth={\"4xl\"}>\n <DialogTitle>\n Select a property widget\n </DialogTitle>\n <DialogContent>\n <div>\n {groups.map(group => {\n return <div key={group} className={\"mt-4\"}>\n <Typography variant={\"label\"}>{group}</Typography>\n <div className={\"grid grid-cols-1 md:grid-cols-2 gap-x-4 gap-y-2 mt-4\"}>\n {Object.entries(displayedWidgets).map(([key, propertyConfig]) => {\n const groupKey = WIDGET_TYPE_MAP[key as PropertyConfigId];\n if (groupKey === group) {\n return <WidgetSelectViewItem\n key={key}\n initialProperty={initialProperty}\n onClick={() => {\n onValueChange(key);\n onOpenChange(false, true);\n }}\n propertyConfig={propertyConfig}\n existing={existing} />;\n }\n return null;\n })}\n </div>\n </div>;\n })}\n {/*{displayedWidgets.map(([key, propertyConfig]) => {*/}\n {/* return <WidgetSelectViewItem*/}\n {/* key={key}*/}\n {/* initialProperty={initialProperty}*/}\n {/* onClick={() => {*/}\n {/* onValueChange(key);*/}\n {/* onOpenChange(false);*/}\n {/* }}*/}\n {/* propertyConfig={propertyConfig}*/}\n {/* existing={existing}/>;*/}\n {/*})}*/}\n </div>\n </DialogContent>\n </Dialog>\n </>;\n}\n\nexport interface PropertySelectItemProps {\n onClick?: () => void;\n initialProperty?: PropertyWithId;\n propertyConfig: PropertyConfig;\n existing: boolean;\n}\n\nexport function WidgetSelectViewItem({\n onClick,\n initialProperty,\n // optionDisabled,\n propertyConfig,\n existing\n}: PropertySelectItemProps) {\n const baseProperty = propertyConfig.property;\n const shouldWarnChangingDataType = existing && !isPropertyBuilder(baseProperty) && baseProperty.dataType !== initialProperty?.dataType;\n\n return <Card\n onClick={onClick}\n className={\"flex flex-row items-center px-4 py-2 m-1\"}>\n <div\n className={cls(\n \"flex flex-row items-center text-base min-h-[48px]\",\n )}>\n <div className={\"mr-8\"}>\n <PropertyConfigBadge propertyConfig={propertyConfig} disabled={shouldWarnChangingDataType} />\n </div>\n <div>\n <div className={\"flex flex-row gap-2 items-center\"}>\n {shouldWarnChangingDataType && <Tooltip\n title={\"This widget uses a different data type than the initially selected widget. This can cause errors with existing data.\"}>\n <WarningIcon size=\"smallest\" className={\"w-4\"} />\n </Tooltip>}\n <Typography\n variant={\"label\"}\n color={shouldWarnChangingDataType ? \"secondary\" : undefined}>{propertyConfig.name}</Typography>\n </div>\n\n <Typography variant={\"caption\"}\n color={\"secondary\"}\n className={\"max-w-sm\"}>\n {propertyConfig.description}\n </Typography>\n\n </div>\n </div>\n </Card>\n}\n","import React, { useMemo, useRef, useState } from \"react\";\nimport {\n EntityCollection,\n FieldCaption,\n getFieldConfig,\n Property,\n PropertyConfigBadge,\n resolveCollection,\n unslugify,\n useAuthController,\n useCustomizationController\n} from \"@firecms/core\";\nimport {\n CloseIcon,\n IconButton,\n Select,\n SelectItem,\n Typography\n} from \"@firecms/ui\";\nimport { useFormex } from \"@firecms/formex\";\nimport { PropertyFormDialog } from \"./PropertyEditView\";\n\nexport function KanbanConfigSection({\n className,\n forceExpanded\n}: {\n className?: string;\n forceExpanded?: boolean;\n}) {\n const authController = useAuthController();\n const customizationController = useCustomizationController();\n const { values, setFieldValue } = useFormex<EntityCollection>();\n const panelRef = useRef<HTMLDivElement>(null);\n const [columnPropertyDialogOpen, setColumnPropertyDialogOpen] = useState(false);\n\n // Resolve collection to get properties\n const resolvedCollection = useMemo(() => resolveCollection({\n collection: values,\n path: values.path,\n propertyConfigs: customizationController.propertyConfigs,\n authController\n }), [values, customizationController.propertyConfigs, authController]);\n\n // Get enum string properties (for columnProperty)\n const enumStringProperties = useMemo(() => {\n const result: { key: string; label: string; property: Property }[] = [];\n if (!resolvedCollection.properties) return result;\n\n Object.entries(resolvedCollection.properties).forEach(([key, prop]) => {\n if (prop && 'dataType' in prop && prop.dataType === 'string' && prop.enumValues) {\n result.push({\n key,\n label: (prop as Property).name || key,\n property: prop as Property\n });\n }\n });\n return result;\n }, [resolvedCollection.properties]);\n\n const kanbanConfig = values.kanban;\n\n // Check if columnProperty references a non-existent property\n const columnPropertyMissing = Boolean(kanbanConfig?.columnProperty) &&\n !enumStringProperties.some(p => p.key === kanbanConfig?.columnProperty);\n\n // Scroll to section when forceExpanded\n React.useEffect(() => {\n if (forceExpanded && panelRef.current) {\n setTimeout(() => {\n panelRef.current?.scrollIntoView({ behavior: \"smooth\", block: \"center\" });\n }, 100);\n }\n }, [forceExpanded]);\n\n const showCreateButton = !kanbanConfig?.columnProperty || columnPropertyMissing;\n const dialogPropertyKey = columnPropertyMissing && kanbanConfig?.columnProperty\n ? kanbanConfig.columnProperty\n : \"status\";\n const dialogPropertyName = columnPropertyMissing && kanbanConfig?.columnProperty\n ? unslugify(kanbanConfig.columnProperty)\n : \"Status\";\n\n return (\n <div className={className} ref={panelRef}>\n <Select\n key={`column-select-${enumStringProperties.length}`}\n name=\"kanban.columnProperty\"\n label=\"Kanban Column Property\"\n size={\"large\"}\n fullWidth={true}\n position={\"item-aligned\"}\n disabled={enumStringProperties.length === 0}\n error={columnPropertyMissing}\n value={kanbanConfig?.columnProperty ?? \"\"}\n onValueChange={(v) => {\n if (v) {\n setFieldValue(\"kanban\", {\n ...kanbanConfig,\n columnProperty: v\n });\n } else {\n setFieldValue(\"kanban\", undefined);\n }\n }}\n renderValue={(value) => {\n if (columnPropertyMissing) {\n return <span className=\"text-red-500\">{value} (not found)</span>;\n }\n const prop = enumStringProperties.find(p => p.key === value);\n if (!prop) return \"Select a property\";\n const fieldConfig = getFieldConfig(prop.property, customizationController.propertyConfigs);\n return (\n <div className=\"flex items-center gap-2\">\n <PropertyConfigBadge propertyConfig={fieldConfig} />\n <span>{prop.label}</span>\n </div>\n );\n }}\n endAdornment={kanbanConfig?.columnProperty ? (\n <IconButton\n size=\"small\"\n onClick={(e) => {\n e.stopPropagation();\n setFieldValue(\"kanban\", undefined);\n }}\n >\n <CloseIcon size=\"small\" />\n </IconButton>\n ) : undefined}\n >\n {enumStringProperties.map((prop) => {\n const fieldConfig = getFieldConfig(prop.property, customizationController.propertyConfigs);\n return (\n <SelectItem key={prop.key} value={prop.key}>\n <div className=\"flex items-center gap-3\">\n <PropertyConfigBadge propertyConfig={fieldConfig} />\n <div>\n <div>{prop.label}</div>\n <Typography variant=\"caption\" color=\"secondary\">\n {fieldConfig?.name || \"Enum\"}\n </Typography>\n </div>\n </div>\n </SelectItem>\n );\n })}\n </Select>\n <FieldCaption error={columnPropertyMissing}>\n {columnPropertyMissing\n ? `Property \"${kanbanConfig?.columnProperty}\" does not exist or is not an enum string property. Please select a valid property or clear the selection.`\n : enumStringProperties.length === 0\n ? \"No enum string properties found. Add a string property with enumValues to use Kanban view.\"\n : \"Select a string property with enum values to group entities into columns\"\n }\n </FieldCaption>\n\n {showCreateButton && (\n <>\n <button\n type=\"button\"\n className=\"ml-3.5 text-sm text-primary hover:text-primary-dark mt-2\"\n onClick={() => setColumnPropertyDialogOpen(true)}\n >\n + Create \"{dialogPropertyKey}\" property\n </button>\n <PropertyFormDialog\n open={columnPropertyDialogOpen}\n onCancel={() => setColumnPropertyDialogOpen(false)}\n property={{\n dataType: \"string\",\n name: dialogPropertyName,\n enumValues: [\n { id: \"todo\", label: \"To Do\" },\n { id: \"in_progress\", label: \"In Progress\" },\n { id: \"done\", label: \"Done\" }\n ]\n }}\n propertyKey={dialogPropertyKey}\n existingProperty={false}\n autoOpenTypeSelect={false}\n autoUpdateId={false}\n inArray={false}\n allowDataInference={false}\n propertyConfigs={customizationController.propertyConfigs}\n collectionEditable={true}\n existingPropertyKeys={Object.keys(values.properties ?? {})}\n onPropertyChanged={({ id, property }) => {\n const newProperties = {\n ...values.properties,\n [id!]: property\n };\n const newPropertiesOrder = [...(values.propertiesOrder ?? Object.keys(values.properties ?? {})), id];\n setFieldValue(\"properties\", newProperties);\n setFieldValue(\"propertiesOrder\", newPropertiesOrder);\n setFieldValue(\"kanban\", {\n ...kanbanConfig,\n columnProperty: id\n });\n setColumnPropertyDialogOpen(false);\n }}\n />\n </>\n )}\n </div>\n );\n}\n","import React, { useMemo, useState } from \"react\";\nimport {\n EntityCollection,\n FieldCaption,\n getFieldConfig,\n Property,\n PropertyConfigBadge,\n resolveCollection,\n unslugify,\n useAuthController,\n useCustomizationController\n} from \"@firecms/core\";\nimport {\n BooleanSwitchWithLabel,\n CloseIcon,\n Container,\n IconButton,\n Select,\n SelectItem,\n TextField,\n Typography\n} from \"@firecms/ui\";\n\nimport { useFormex } from \"@firecms/formex\";\nimport { LayoutModeSwitch } from \"./LayoutModeSwitch\";\nimport { ViewModeSwitch } from \"./ViewModeSwitch\";\nimport { KanbanConfigSection } from \"./KanbanConfigSection\";\nimport { PropertyFormDialog } from \"./PropertyEditView\";\n\nexport function DisplaySettingsForm({\n expandKanban\n}: {\n expandKanban?: boolean;\n}) {\n\n const {\n values,\n setFieldValue,\n handleChange,\n submitCount\n } = useFormex<EntityCollection>();\n\n const [orderPropertyDialogOpen, setOrderPropertyDialogOpen] = useState(false);\n\n const authController = useAuthController();\n const customizationController = useCustomizationController();\n\n // Resolve collection to get properties for order property select\n const resolvedCollection = useMemo(() => resolveCollection({\n collection: values,\n path: values.path,\n propertyConfigs: customizationController.propertyConfigs,\n authController\n }), [values, customizationController.propertyConfigs, authController]);\n\n // Get number properties (for orderProperty)\n const numberProperties = useMemo(() => {\n const result: { key: string; label: string; property: Property; }[] = [];\n if (!resolvedCollection.properties) return result;\n\n Object.entries(resolvedCollection.properties).forEach(([key, prop]) => {\n if (prop && 'dataType' in prop && prop.dataType === 'number') {\n result.push({\n key,\n label: (prop as Property).name || key,\n property: prop as Property\n });\n }\n });\n return result;\n }, [resolvedCollection.properties]);\n\n const showErrors = submitCount > 0;\n\n // Document ID generation value\n let customIdValue: \"true\" | \"false\" | \"optional\" | \"code_defined\" | undefined;\n if (typeof values.customId === \"object\") {\n customIdValue = \"code_defined\";\n } else if (values.customId === true) {\n customIdValue = \"true\";\n } else if (values.customId === false) {\n customIdValue = \"false\";\n } else if (values.customId === \"optional\") {\n customIdValue = \"optional\";\n }\n\n return (\n <div className={\"overflow-auto my-auto\"}>\n <Container maxWidth={\"4xl\"} className={\"flex flex-col gap-4 p-8 m-auto\"}>\n\n <div>\n <Typography variant={\"h5\"} className={\"flex-grow\"}>\n Display settings\n </Typography>\n </div>\n\n <div className={\"grid grid-cols-12 gap-4\"}>\n\n {/* Layout Mode (Side dialog vs Full screen) */}\n <LayoutModeSwitch\n className={\"col-span-12\"}\n value={values.openEntityMode ?? \"side_panel\"}\n onChange={(value) => setFieldValue(\"openEntityMode\", value)} />\n\n {/* View Mode (Table/Cards/Kanban) */}\n <ViewModeSwitch\n className={\"col-span-12\"}\n value={values.defaultViewMode ?? \"table\"}\n onChange={(value) => setFieldValue(\"defaultViewMode\", value)} />\n\n {/* Kanban Column Property */}\n <KanbanConfigSection className={\"col-span-12\"} forceExpanded={expandKanban} />\n\n {/* Order Property */}\n <div className={\"col-span-12 mt-4\"}>\n {(() => {\n const orderPropertyMissing = Boolean(values.orderProperty) &&\n !numberProperties.some(p => p.key === values.orderProperty);\n\n return (\n <>\n <Select\n key={`order-select-${numberProperties.length}`}\n name=\"orderProperty\"\n label=\"Order Property\"\n size={\"large\"}\n fullWidth={true}\n position={\"item-aligned\"}\n disabled={numberProperties.length === 0}\n error={orderPropertyMissing}\n value={values.orderProperty ?? \"\"}\n onValueChange={(v) => {\n setFieldValue(\"orderProperty\", v || undefined);\n }}\n renderValue={(value) => {\n if (orderPropertyMissing) {\n return <span className=\"text-red-500\">{value} (not found)</span>;\n }\n const prop = numberProperties.find(p => p.key === value);\n if (!prop) return \"Select a property\";\n const fieldConfig = getFieldConfig(prop.property, customizationController.propertyConfigs);\n return (\n <div className=\"flex items-center gap-2\">\n <PropertyConfigBadge propertyConfig={fieldConfig} />\n <span>{prop.label}</span>\n </div>\n );\n }}\n endAdornment={values.orderProperty ? (\n <IconButton\n size=\"small\"\n onClick={(e) => {\n e.stopPropagation();\n setFieldValue(\"orderProperty\", undefined);\n }}\n >\n <CloseIcon size=\"small\" />\n </IconButton>\n ) : undefined}\n >\n {numberProperties.map((prop) => {\n const fieldConfig = getFieldConfig(prop.property, customizationController.propertyConfigs);\n return (\n <SelectItem key={prop.key} value={prop.key}>\n <div className=\"flex items-center gap-3\">\n <PropertyConfigBadge propertyConfig={fieldConfig} />\n <div>\n <div>{prop.label}</div>\n <Typography variant=\"caption\" color=\"secondary\">\n {fieldConfig?.name || \"Number\"}\n </Typography>\n </div>\n </div>\n </SelectItem>\n );\n })}\n </Select>\n <FieldCaption error={orderPropertyMissing}>\n {orderPropertyMissing\n ? `Property \"${values.orderProperty}\" does not exist or is not a number property. Please select a valid property or clear the selection.`\n : numberProperties.length === 0\n ? \"No number properties found. Add a number property to enable ordering.\"\n : \"Select a number property to persist the order of items\"\n }\n </FieldCaption>\n </>\n );\n })()}\n {(() => {\n const orderPropertyMissing = Boolean(values.orderProperty) &&\n !numberProperties.some(p => p.key === values.orderProperty);\n const showCreateButton = !values.orderProperty || orderPropertyMissing;\n\n const dialogPropertyKey = orderPropertyMissing && values.orderProperty\n ? values.orderProperty\n : \"__order\";\n const dialogPropertyName = orderPropertyMissing && values.orderProperty\n ? unslugify(values.orderProperty)\n : \"Order\";\n\n if (!showCreateButton) return null;\n\n return (\n <>\n <button\n type=\"button\"\n className=\"ml-3.5 text-sm text-primary hover:text-primary-dark mt-2\"\n onClick={() => setOrderPropertyDialogOpen(true)}\n >\n + Create \"{dialogPropertyKey}\" property\n </button>\n <PropertyFormDialog\n open={orderPropertyDialogOpen}\n onCancel={() => setOrderPropertyDialogOpen(false)}\n property={{\n dataType: \"number\",\n name: dialogPropertyName,\n disabled: true,\n hideFromCollection: true\n }}\n propertyKey={dialogPropertyKey}\n existingProperty={false}\n autoOpenTypeSelect={false}\n autoUpdateId={false}\n inArray={false}\n allowDataInference={false}\n propertyConfigs={customizationController.propertyConfigs}\n collectionEditable={true}\n existingPropertyKeys={Object.keys(values.properties ?? {})}\n onPropertyChanged={({ id, property }) => {\n const newProperties = {\n ...values.properties,\n [id!]: property\n };\n const newPropertiesOrder = [...(values.propertiesOrder ?? Object.keys(values.properties ?? {})), id];\n setFieldValue(\"properties\", newProperties);\n setFieldValue(\"propertiesOrder\", newPropertiesOrder);\n setFieldValue(\"orderProperty\", id);\n setOrderPropertyDialogOpen(false);\n }}\n />\n </>\n );\n })()}\n </div>\n\n {/* Default row size */}\n <div className={\"col-span-12\"}>\n <Select\n name=\"defaultSize\"\n size={\"large\"}\n fullWidth={true}\n label=\"Default row size\"\n position={\"item-aligned\"}\n onChange={handleChange}\n value={values.defaultSize ?? \"\"}\n renderValue={(value: any) => value.toUpperCase()}\n >\n {[\"xs\", \"s\", \"m\", \"l\", \"xl\"].map((value) => (\n <SelectItem\n key={`size-select-${value}`}\n value={value}>\n {value.toUpperCase()}\n </SelectItem>\n ))}\n </Select>\n </div>\n\n {/* Side dialog width */}\n <div className={\"col-span-12\"}>\n <TextField\n name={\"sideDialogWidth\"}\n type={\"number\"}\n aria-describedby={\"sideDialogWidth-helper\"}\n onChange={(e) => {\n const value = e.target.value;\n if (!value) {\n setFieldValue(\"sideDialogWidth\", null);\n } else if (!isNaN(Number(value))) {\n setFieldValue(\"sideDialogWidth\", Number(value));\n }\n }}\n endAdornment={<IconButton\n size={\"small\"}\n onClick={() => {\n setFieldValue(\"sideDialogWidth\", null);\n }}\n disabled={!values.sideDialogWidth}>\n <CloseIcon size={\"small\"} />\n </IconButton>}\n value={values.sideDialogWidth ?? \"\"}\n label={\"Side dialog width\"} />\n <FieldCaption>\n Optionally define the width (in pixels) of entities side dialog. Default is 768px\n </FieldCaption>\n </div>\n\n {/* Inline editing */}\n <div className={\"col-span-12\"}>\n <BooleanSwitchWithLabel\n position={\"start\"}\n size={\"large\"}\n label={values.inlineEditing === undefined || values.inlineEditing ? \"Data can be edited directly in the table view\" : \"Data can be edited only in the form view\"}\n onValueChange={(v) => setFieldValue(\"inlineEditing\", v)}\n value={values.inlineEditing === undefined ? true : values.inlineEditing}\n />\n <FieldCaption>\n Allow editing data directly in the table view, without opening the form view.\n </FieldCaption>\n </div>\n\n {/* Include JSON view */}\n <div className={\"col-span-12\"}>\n <BooleanSwitchWithLabel\n position={\"start\"}\n size={\"large\"}\n label={values.includeJsonView === undefined || values.includeJsonView ? \"Include JSON view\" : \"Do not include JSON view\"}\n onValueChange={(v) => setFieldValue(\"includeJsonView\", v)}\n value={values.includeJsonView === undefined ? true : values.includeJsonView}\n />\n <FieldCaption>\n Include the JSON representation of the document.\n </FieldCaption>\n </div>\n\n </div>\n\n <div style={{ height: \"52px\" }} />\n\n </Container>\n </div>\n );\n}\n","export function camelCase(str: string): string {\n if (!str) return \"\";\n if (str.length === 1) return str.toLowerCase();\n\n // Split by hyphens, underscores, or spaces and filter out empty strings\n const parts = str.split(/[-_ ]+/).filter(Boolean);\n\n if (parts.length === 0) return \"\";\n\n // Start with first part in lowercase\n return parts[0].toLowerCase() +\n // Transform remaining parts to have first letter uppercase\n parts.slice(1)\n .map(part => part.charAt(0).toUpperCase() + part.substring(1).toLowerCase())\n .join('');\n}\n","import { EntityCollection, isEmptyObject, useSnackbarController } from \"@firecms/core\";\nimport { Button, ContentCopyIcon, Dialog, DialogActions, DialogContent, DialogTitle, Tab, Tabs, Typography } from \"@firecms/ui\";\nimport React, { useState } from \"react\";\nimport JSON5 from \"json5\";\nimport { Highlight, themes } from \"prism-react-renderer\"\nimport { camelCase } from \"./utils/strings\";\nimport { clone } from \"@firecms/formex\";\n\nexport function GetCodeDialog({\n collection,\n onOpenChange,\n open\n}: { onOpenChange: (open: boolean) => void, collection: any, open: any }) {\n\n const snackbarController = useSnackbarController();\n const [format, setFormat] = useState<\"ts\" | \"json\">(\"json\");\n\n const collectionData = collectionToCode({ ...collection });\n\n const tsCode = collection\n ? \"import { EntityCollection } from \\\"@firecms/core\\\";\\n\\nconst \" + (collection?.name ? camelCase(collection.name) : \"my\") + \"Collection:EntityCollection = \" + JSON5.stringify(collectionData, null, \"\\t\")\n : \"No collection selected\";\n\n const jsonCode = collection\n ? JSON.stringify(collectionData, null, 2)\n : \"No collection selected\";\n\n const code = format === \"ts\" ? tsCode : jsonCode;\n\n return <Dialog open={open}\n onOpenChange={onOpenChange}\n maxWidth={\"4xl\"}>\n <div className=\"flex items-center justify-between pr-6\">\n <DialogTitle variant={\"h6\"}>Code for {collection.name}</DialogTitle>\n <Tabs value={format} onValueChange={(v) => setFormat(v as \"ts\" | \"json\")}>\n <Tab value=\"ts\">TypeScript</Tab>\n <Tab value=\"json\">JSON</Tab>\n </Tabs>\n </div>\n <DialogContent>\n\n <Typography variant={\"body2\"} className={\"mb-4\"}>\n {format === \"json\"\n ? \"Use this config to define the collection in JSON format.\"\n : <>\n If you want to customise the collection in code, you can add this collection code to your CMS\n app configuration.\n More info in the <a\n rel=\"noopener noreferrer\"\n href={\"https://firecms.co/docs/cloud/quickstart\"}>docs</a>.\n </>}\n </Typography>\n <Highlight\n theme={themes.vsDark}\n code={code}\n language={format === \"ts\" ? \"typescript\" : \"json\"}\n >\n {({\n className,\n style,\n tokens,\n getLineProps,\n getTokenProps\n }) => (\n <pre style={style} className={\"p-4 rounded text-sm\"}>\n {tokens.map((line, i) => (\n <div key={i} {...getLineProps({ line })}>\n {line.map((token, key) => (\n <span key={key} {...getTokenProps({ token })} />\n ))}\n </div>\n ))}\n </pre>\n )}\n </Highlight>\n\n </DialogContent>\n <DialogActions>\n <Button\n variant={\"text\"}\n size={\"small\"}\n onClick={(e) => {\n e.stopPropagation();\n e.preventDefault();\n snackbarController.open({\n type: \"success\",\n message: \"Copied\"\n })\n return navigator.clipboard.writeText(code);\n }}>\n <ContentCopyIcon size={\"small\"} />\n Copy to clipboard\n </Button>\n <Button onClick={() => onOpenChange(false)}>Close</Button>\n </DialogActions>\n </Dialog>;\n}\n\nfunction collectionToCode(collection: EntityCollection): object {\n\n const propertyCleanup = (value: any): any => {\n if (value === undefined || value === null) {\n return value;\n }\n const valueCopy = clone(value);\n if (typeof valueCopy === \"function\") {\n return valueCopy;\n }\n if (Array.isArray(valueCopy)) {\n return valueCopy.map((v: any) => propertyCleanup(v));\n }\n if (typeof valueCopy === \"object\") {\n if (valueCopy === null)\n return valueCopy;\n Object.keys(valueCopy).forEach((key) => {\n if (!isEmptyObject(valueCopy)) {\n const childRes = propertyCleanup(valueCopy[key]);\n if (childRes !== null && childRes !== undefined && childRes !== false && !isEmptyObject(childRes)) {\n valueCopy[key] = childRes;\n } else {\n delete valueCopy[key];\n }\n }\n });\n delete valueCopy.fromBuilder;\n delete valueCopy.resolved;\n delete valueCopy.propertiesOrder;\n delete valueCopy.propertyConfig;\n delete valueCopy.resolvedProperties;\n delete valueCopy.editable;\n\n }\n\n return valueCopy;\n }\n\n return {\n id: collection.id,\n name: collection.name,\n singularName: collection.singularName,\n path: collection.path,\n description: collection.description,\n editable: true,\n collectionGroup: collection.collectionGroup,\n icon: collection.icon,\n group: collection.group,\n customId: collection.customId,\n initialFilter: collection.initialFilter,\n initialSort: collection.initialSort,\n properties: Object.entries({\n ...(collection.properties ?? {})\n })\n .map(([key, value]) => ({\n [key]: propertyCleanup(value)\n }))\n .reduce((a, b) => ({\n ...a,\n ...b\n }), {}),\n subcollections: (collection.subcollections ?? []).map(collectionToCode)\n }\n\n}\n","import React, { useEffect, useMemo, useState } from \"react\";\n\nimport { Field, getIn, useFormex } from \"@firecms/formex\";\nimport {\n EntityCollection,\n ErrorBoundary,\n isPropertyBuilder,\n makePropertiesEditable,\n MapProperty,\n Properties,\n Property,\n PropertyConfig,\n PropertyOrBuilder,\n useLargeLayout,\n User,\n useSnackbarController\n} from \"@firecms/core\";\nimport {\n AddIcon,\n Button,\n CircularProgress,\n cls,\n CodeIcon,\n DebouncedTextField,\n defaultBorderMixin,\n FindInPageIcon,\n IconButton,\n Tooltip,\n Typography,\n} from \"@firecms/ui\";\n\nimport { getFullId, idToPropertiesPath, namespaceToPropertiesOrderPath } from \"./util\";\nimport { OnPropertyChangedParams, PropertyForm, PropertyFormDialog } from \"./PropertyEditView\";\nimport { PropertyTree } from \"./PropertyTree\";\nimport { PersistedCollection } from \"../../types/persisted_collection\";\nimport { GetCodeDialog } from \"./GetCodeDialog\";\nimport { useAIModifiedPaths } from \"./AIModifiedPathsContext\";\n\ntype CollectionEditorFormProps = {\n showErrors: boolean;\n isNewCollection: boolean;\n propertyErrorsRef?: React.MutableRefObject<any>;\n onPropertyError: (propertyKey: string, namespace: string | undefined, error?: Record<string, any>) => void;\n setDirty?: (dirty: boolean) => void;\n reservedGroups?: string[];\n extraIcon: React.ReactNode;\n getUser?: (uid: string) => User | null;\n getData?: () => Promise<object[]>;\n doCollectionInference?: (collection: PersistedCollection) => Promise<Partial<EntityCollection> | null> | undefined;\n propertyConfigs: Record<string, PropertyConfig>;\n collectionEditable: boolean;\n};\n\nexport function CollectionPropertiesEditorForm({\n showErrors,\n isNewCollection,\n propertyErrorsRef,\n onPropertyError,\n setDirty,\n reservedGroups,\n extraIcon,\n getUser,\n getData,\n doCollectionInference,\n propertyConfigs,\n collectionEditable\n}: CollectionEditorFormProps) {\n\n const {\n values,\n setFieldValue,\n setFieldError,\n setFieldTouched,\n errors,\n dirty\n } = useFormex<PersistedCollection>();\n\n const snackbarController = useSnackbarController();\n\n const largeLayout = useLargeLayout();\n const asDialog = !largeLayout\n\n // index of the selected property within the namespace\n const [selectedPropertyIndex, setSelectedPropertyIndex] = useState<number | undefined>();\n const [selectedPropertyKey, setSelectedPropertyKey] = useState<string | undefined>();\n const [selectedPropertyNamespace, setSelectedPropertyNamespace] = useState<string | undefined>();\n\n const selectedPropertyFullId = selectedPropertyKey ? getFullId(selectedPropertyKey, selectedPropertyNamespace) : undefined;\n const selectedProperty = selectedPropertyFullId ? getIn(values.properties, selectedPropertyFullId.replaceAll(\".\", \".properties.\")) : undefined;\n const [codeDialogOpen, setCodeDialogOpen] = useState<boolean>(false);\n\n const [inferringProperties, setInferringProperties] = useState<boolean>(false);\n\n const [newPropertyDialogOpen, setNewPropertyDialogOpen] = useState<boolean>(false);\n const [inferredPropertyKeys, setInferredPropertyKeys] = useState<string[]>([]);\n\n const currentPropertiesOrderRef = React.useRef<{\n [key: string]: string[]\n }>(values.propertiesOrder ? { \"\": values.propertiesOrder } : {});\n\n useEffect(() => {\n if (setDirty)\n setDirty(dirty);\n }, [dirty]);\n\n const inferPropertiesFromData = doCollectionInference\n ? (): void => {\n if (!doCollectionInference)\n return;\n\n setInferringProperties(true);\n\n console.debug(\"CollectionEditor: inferring properties from data\", values);\n // @ts-ignore\n doCollectionInference(values)\n .then((newCollection) => {\n\n if (newCollection)\n makePropertiesEditable(newCollection.properties as Properties);\n\n if (!newCollection) {\n snackbarController.open({\n type: \"error\",\n message: \"Could not infer properties from data\"\n });\n return;\n }\n\n // Helper function to find all new property keys including nested ones\n const findNewPropertyKeys = (\n existingProps: Record<string, PropertyOrBuilder> | undefined,\n newProps: Record<string, PropertyOrBuilder> | undefined,\n namespace?: string\n ): string[] => {\n if (!newProps) return [];\n const keys: string[] = [];\n\n for (const key of Object.keys(newProps)) {\n const fullKey = namespace ? `${namespace}.${key}` : key;\n const existingProp = existingProps?.[key];\n const newProp = newProps[key];\n\n if (!existingProp) {\n // This is a completely new property\n keys.push(fullKey);\n } else if (\n typeof newProp === \"object\" &&\n \"dataType\" in newProp &&\n newProp.dataType === \"map\" &&\n newProp.properties\n ) {\n // This is a map property, check for new nested properties\n const existingMapProps = typeof existingProp === \"object\" &&\n \"dataType\" in existingProp &&\n existingProp.dataType === \"map\"\n ? (existingProp as any).properties\n : undefined;\n keys.push(...findNewPropertyKeys(existingMapProps, newProp.properties as Record<string, PropertyOrBuilder>, fullKey));\n }\n }\n return keys;\n };\n\n // Helper function to add only new properties without overwriting existing ones\n // This preserves existing property configurations while adding missing nested properties\n const addNewPropertiesOnly = (\n existingProps: Record<string, PropertyOrBuilder> | undefined,\n newProps: Record<string, PropertyOrBuilder> | undefined\n ): Record<string, PropertyOrBuilder> => {\n if (!newProps) return existingProps ?? {};\n if (!existingProps) return newProps;\n\n const result = { ...existingProps };\n\n for (const key of Object.keys(newProps)) {\n const existingProp = existingProps[key];\n const newProp = newProps[key];\n\n if (!existingProp) {\n // This property doesn't exist, add it\n result[key] = newProp;\n } else if (\n typeof existingProp === \"object\" &&\n \"dataType\" in existingProp &&\n existingProp.dataType === \"map\" &&\n typeof newProp === \"object\" &&\n \"dataType\" in newProp &&\n newProp.dataType === \"map\" &&\n newProp.properties\n ) {\n // Both are map properties, recursively add new nested properties\n // Only if the existing map has properties, merge them; otherwise keep existing as-is\n const existingMapProps = (existingProp as MapProperty).properties as Record<string, PropertyOrBuilder> | undefined;\n if (existingMapProps) {\n result[key] = {\n ...existingProp,\n properties: addNewPropertiesOnly(\n existingMapProps,\n newProp.properties as Record<string, PropertyOrBuilder>\n )\n };\n }\n // If existingProp doesn't have properties, keep it as-is (don't overwrite with inferred)\n }\n // Otherwise, keep the existing property as-is (don't overwrite)\n }\n\n return result;\n };\n\n // Add only new properties from inferred collection without replacing existing ones\n const updatedProperties = addNewPropertiesOnly(\n values.properties ?? {},\n newCollection.properties as Record<string, PropertyOrBuilder>\n ) as { [key: string]: PropertyOrBuilder };\n\n // Find all new property keys including nested ones\n const allNewPropertyKeys = findNewPropertyKeys(\n values.properties,\n newCollection.properties as Record<string, PropertyOrBuilder>\n );\n\n // Find new top-level property keys for the properties order\n const newTopLevelPropertyKeys = (newCollection.properties ? Object.keys(newCollection.properties) : [])\n .filter((propertyKey) => !values.properties[propertyKey]);\n\n // Check if there are any changes (new properties or modified nested properties)\n if (allNewPropertyKeys.length === 0) {\n snackbarController.open({\n type: \"info\",\n message: \"No new properties found in existing data\"\n });\n return;\n }\n\n // Update properties order: keep existing order and append new keys at the beginning\n // Use Object.keys from updatedProperties to ensure all properties are included\n const allExistingKeys = values.propertiesOrder ?? Object.keys(values.properties ?? {});\n const updatedPropertiesOrder = [\n ...newTopLevelPropertyKeys,\n ...allExistingKeys.filter(key => !newTopLevelPropertyKeys.includes(key))\n ];\n\n setFieldValue(\"properties\", updatedProperties, false);\n updatePropertiesOrder(updatedPropertiesOrder);\n setInferredPropertyKeys(allNewPropertyKeys);\n\n snackbarController.open({\n type: \"success\",\n message: `Added ${allNewPropertyKeys.length} new ${allNewPropertyKeys.length === 1 ? \"property\" : \"properties\"}`\n });\n })\n .finally(() => {\n setInferringProperties(false);\n })\n }\n : undefined;\n\n const getCurrentPropertiesOrder = (namespace?: string) => {\n if (!namespace) return currentPropertiesOrderRef.current[\"\"] ?? getIn(values, namespaceToPropertiesOrderPath());\n return currentPropertiesOrderRef.current[namespace] ?? getIn(values, namespaceToPropertiesOrderPath(namespace));\n };\n\n const updatePropertiesOrder = (newPropertiesOrder: string[], namespace?: string) => {\n const propertiesOrderPath = namespaceToPropertiesOrderPath(namespace);\n\n setFieldValue(propertiesOrderPath, newPropertiesOrder, false);\n currentPropertiesOrderRef.current[namespace ?? \"\"] = newPropertiesOrder;\n\n };\n\n const deleteProperty = (propertyKey?: string, namespace?: string) => {\n const fullId = propertyKey ? getFullId(propertyKey, namespace) : undefined;\n if (!fullId)\n throw Error(\"collection editor miss config\");\n\n setFieldValue(idToPropertiesPath(fullId), undefined, false);\n\n const currentPropertiesOrder = getCurrentPropertiesOrder(namespace);\n if (currentPropertiesOrder) {\n const newPropertiesOrder = currentPropertiesOrder.filter((p) => p !== propertyKey);\n updatePropertiesOrder(newPropertiesOrder, namespace);\n }\n\n setNewPropertyDialogOpen(false);\n\n setSelectedPropertyIndex(undefined);\n setSelectedPropertyKey(undefined);\n setSelectedPropertyNamespace(undefined);\n };\n\n const onPropertyMove = (propertiesOrder: string[], namespace?: string) => {\n setFieldValue(namespaceToPropertiesOrderPath(namespace), propertiesOrder, false);\n };\n\n const onPropertyCreated = ({\n id,\n property\n }: {\n id?: string,\n property: Property\n }) => {\n if (!id) {\n throw Error(\"Need to include an ID when creating a new property\")\n }\n setFieldValue(\"properties\", {\n ...(values.properties ?? {}),\n [id]: property\n }, false);\n\n const newPropertiesOrder = [...(values.propertiesOrder ?? Object.keys(values.properties)), id];\n updatePropertiesOrder(newPropertiesOrder);\n\n setNewPropertyDialogOpen(false);\n if (largeLayout) {\n setSelectedPropertyIndex(newPropertiesOrder.indexOf(id));\n setSelectedPropertyKey(id);\n }\n setSelectedPropertyNamespace(undefined);\n };\n\n const onPropertyChanged = ({\n id,\n property,\n previousId,\n namespace\n }: OnPropertyChangedParams) => {\n\n const fullId = id ? getFullId(id, namespace) : undefined;\n const propertyPath = fullId ? idToPropertiesPath(fullId) : undefined;\n\n // If the id has changed we need to a little cleanup\n if (previousId && previousId !== id) {\n\n const previousFullId = getFullId(previousId, namespace);\n const previousPropertyPath = idToPropertiesPath(previousFullId);\n\n const currentPropertiesOrder = getCurrentPropertiesOrder(namespace);\n\n // replace previousId with id in propertiesOrder\n const newPropertiesOrder = currentPropertiesOrder\n .map((p) => p === previousId ? id : p)\n .filter((p) => p !== undefined) as string[];\n\n updatePropertiesOrder(newPropertiesOrder, namespace);\n\n if (id) {\n setSelectedPropertyIndex(newPropertiesOrder.indexOf(id));\n setSelectedPropertyKey(id);\n }\n setFieldValue(previousPropertyPath, undefined, false);\n setFieldTouched(previousPropertyPath, false, false);\n }\n\n if (propertyPath) {\n setFieldValue(propertyPath, property, false);\n setFieldTouched(propertyPath, true, false);\n }\n\n };\n\n const onPropertyErrorInternal = (id: string, namespace?: string, error?: Record<string, any>) => {\n const propertyPath = id ? getFullId(id, namespace) : undefined;\n console.debug(\"onPropertyErrorInternal\", {\n id,\n namespace,\n error,\n propertyPath\n });\n if (propertyPath) {\n const hasError = error && Object.keys(error).length > 0;\n onPropertyError(id, namespace, hasError ? error : undefined);\n setFieldError(idToPropertiesPath(propertyPath), hasError ? \"Property error\" : undefined);\n }\n }\n\n const closePropertyDialog = () => {\n setSelectedPropertyIndex(undefined);\n setSelectedPropertyKey(undefined);\n };\n\n const initialErrors = selectedPropertyKey && propertyErrorsRef?.current?.properties ? propertyErrorsRef.current.properties[selectedPropertyKey] : undefined;\n\n const emptyCollection = values?.propertiesOrder === undefined || values.propertiesOrder.length === 0;\n\n const usedPropertiesOrder = (values.propertiesOrder\n ? values.propertiesOrder\n : Object.keys(values.properties)) as string[];\n\n const owner = useMemo(() => values.ownerId && getUser ? getUser(values.ownerId) : null, [getUser, values.ownerId]);\n\n // Get AI generation counter for key to force remount on AI changes\n const aiModifiedPaths = useAIModifiedPaths();\n const generationCounter = aiModifiedPaths?.generationCounter ?? 0;\n\n const onPropertyClick = (propertyKey: string, namespace?: string) => {\n console.debug(\"CollectionEditor: onPropertyClick\", {\n propertyKey,\n namespace\n });\n setSelectedPropertyIndex(usedPropertiesOrder.indexOf(propertyKey));\n setSelectedPropertyKey(propertyKey);\n setSelectedPropertyNamespace(namespace);\n };\n\n const body = (\n <div className={\"grid grid-cols-12 gap-2 h-full bg-surface dark:bg-surface-dark\"}>\n <div className={cls(\n \"bg-surface-50 dark:bg-surface-900\",\n \"p-4 md:p-8 pb-20 md:pb-20\",\n \"col-span-12 lg:col-span-5 h-full overflow-auto\",\n !asDialog && \"border-r \" + defaultBorderMixin\n )}>\n\n <div className=\"flex my-2\">\n\n <div className=\"flex-grow mb-4\">\n\n <Field\n name={\"name\"}\n as={DebouncedTextField}\n invisible={true}\n className=\"-ml-1\"\n inputClassName=\"text-2xl font-headers\"\n placeholder={\"Collection name\"}\n size={\"small\"}\n required\n error={Boolean(errors?.name)} />\n\n {owner &&\n <Typography variant={\"body2\"}\n className={\"ml-2\"}\n color={\"secondary\"}>\n Created by {owner.displayName}\n </Typography>}\n </div>\n\n {extraIcon && <div className=\"ml-4\">\n {extraIcon}\n </div>}\n\n <div className=\"ml-1 mt-2 flex flex-row gap-2\">\n <Tooltip title={\"Get the code for this collection\"}\n asChild={true}>\n <IconButton\n variant={\"filled\"}\n disabled={inferringProperties}\n onClick={() => setCodeDialogOpen(true)}>\n <CodeIcon />\n </IconButton>\n </Tooltip>\n {inferPropertiesFromData && <Tooltip title={\"Add new properties based on data\"}\n asChild={true}>\n <IconButton\n variant={\"filled\"}\n disabled={inferringProperties}\n onClick={inferPropertiesFromData}>\n {inferringProperties ? <CircularProgress size={\"small\"} /> : <FindInPageIcon />}\n </IconButton>\n </Tooltip>}\n <Tooltip title={\"Add new property\"}\n asChild={true}>\n <Button\n onClick={() => setNewPropertyDialogOpen(true)}>\n <AddIcon />\n </Button>\n </Tooltip>\n </div>\n </div>\n\n <ErrorBoundary>\n <PropertyTree\n className={\"pl-8\"}\n inferredPropertyKeys={inferredPropertyKeys}\n selectedPropertyKey={selectedPropertyKey ? getFullId(selectedPropertyKey, selectedPropertyNamespace) : undefined}\n properties={values.properties}\n additionalFields={values.additionalFields}\n propertiesOrder={usedPropertiesOrder}\n onPropertyClick={onPropertyClick}\n onPropertyMove={onPropertyMove}\n onPropertyRemove={(isNewCollection || (inferredPropertyKeys && inferredPropertyKeys.length > 0)) ? deleteProperty : undefined}\n collectionEditable={collectionEditable}\n errors={errors} />\n </ErrorBoundary>\n\n <Button className={\"mt-8 w-full\"}\n size={\"large\"}\n onClick={() => setNewPropertyDialogOpen(true)}\n startIcon={<AddIcon />}>\n Add new property\n </Button>\n </div>\n\n {!asDialog &&\n <div className={\"col-span-12 lg:col-span-7 p-4 md:py-8 md:px-4 h-full overflow-auto pb-20 md:pb-20\"}>\n <div\n className=\"sticky top-8 min-h-full w-full flex flex-col justify-center\">\n\n {selectedPropertyFullId &&\n selectedProperty &&\n !isPropertyBuilder(selectedProperty) &&\n <PropertyForm\n inArray={false}\n key={`edit_view_${selectedPropertyIndex}_${generationCounter}`}\n existingProperty={!isNewCollection}\n autoUpdateId={false}\n allowDataInference={!isNewCollection}\n autoOpenTypeSelect={false}\n propertyKey={selectedPropertyKey}\n propertyNamespace={selectedPropertyNamespace}\n property={selectedProperty}\n onPropertyChanged={onPropertyChanged}\n onDelete={deleteProperty}\n onError={onPropertyErrorInternal}\n forceShowErrors={showErrors}\n initialErrors={initialErrors}\n getData={getData}\n propertyConfigs={propertyConfigs}\n collectionEditable={collectionEditable}\n collectionProperties={values.properties as Properties}\n />}\n\n {!selectedProperty &&\n <div className={\"w-full flex flex-col items-center justify-center h-full gap-4\"}>\n <Typography variant={\"label\"} className=\"\">\n {emptyCollection\n ? \"Now you can add your first property\"\n : \"Select a property to edit it\"}\n </Typography>\n <Button\n onClick={() => setNewPropertyDialogOpen(true)}\n >\n <AddIcon />\n Add new property\n </Button>\n </div>}\n\n {selectedProperty && isPropertyBuilder(selectedProperty) &&\n <Typography variant={\"label\"} className=\"flex items-center justify-center\">\n {\"This property is defined as a property builder in code\"}\n </Typography>}\n </div>\n </div>}\n\n {asDialog && <PropertyFormDialog\n inArray={false}\n open={selectedPropertyIndex !== undefined}\n key={`edit_view_${selectedPropertyIndex}_${generationCounter}`}\n autoUpdateId={!selectedProperty}\n allowDataInference={!isNewCollection}\n existingProperty={true}\n autoOpenTypeSelect={false}\n propertyKey={selectedPropertyKey}\n propertyNamespace={selectedPropertyNamespace}\n property={selectedProperty}\n onPropertyChanged={onPropertyChanged}\n onDelete={deleteProperty}\n onError={onPropertyErrorInternal}\n forceShowErrors={showErrors}\n initialErrors={initialErrors}\n getData={getData}\n propertyConfigs={propertyConfigs}\n collectionEditable={collectionEditable}\n collectionProperties={values.properties as Properties}\n onCancel={closePropertyDialog}\n onOkClicked={asDialog\n ? closePropertyDialog\n : undefined\n } />}\n\n </div>);\n\n return (<>\n\n {body}\n\n {/* This is the dialog used for new properties*/}\n <PropertyFormDialog\n inArray={false}\n existingProperty={false}\n autoOpenTypeSelect={true}\n autoUpdateId={true}\n forceShowErrors={showErrors}\n open={newPropertyDialogOpen}\n onCancel={() => setNewPropertyDialogOpen(false)}\n onPropertyChanged={onPropertyCreated}\n getData={getData}\n allowDataInference={!isNewCollection}\n propertyConfigs={propertyConfigs}\n collectionEditable={collectionEditable}\n collectionProperties={values.properties as Properties}\n existingPropertyKeys={values.propertiesOrder as string[]} />\n\n <ErrorBoundary>\n <GetCodeDialog\n collection={values}\n open={codeDialogOpen}\n onOpenChange={setCodeDialogOpen} />\n </ErrorBoundary>\n </>\n );\n}\n","import React from \"react\";\nimport { Button, Dialog, DialogActions, DialogContent, DialogTitle, Typography } from \"@firecms/ui\";\n\nexport interface UnsavedChangesDialogProps {\n open: boolean;\n body?: React.ReactNode;\n title?: string;\n handleOk: () => void;\n handleCancel: () => void;\n}\n\nexport function UnsavedChangesDialog({\n open,\n handleOk,\n handleCancel,\n body,\n title\n }: UnsavedChangesDialogProps) {\n\n return (\n <Dialog\n open={open}\n onOpenChange={(open) => open ? handleCancel() : handleOk()}\n aria-labelledby=\"alert-dialog-title\"\n aria-describedby=\"alert-dialog-description\"\n >\n\n <DialogTitle>{title ?? \"Unsaved changes\"}</DialogTitle>\n <DialogContent className={\"mt-4\"}>\n {body && <Typography>\n {body}\n </Typography>}\n <Typography>\n Are you sure?\n </Typography>\n\n </DialogContent>\n\n <DialogActions>\n <Button variant=\"text\"\n onClick={handleCancel} autoFocus> Cancel </Button>\n <Button\n onClick={handleOk}> Ok </Button>\n </DialogActions>\n </Dialog>\n );\n}\n","import { useCustomizationController } from \"@firecms/core\";\nimport { Button, Dialog, DialogActions, DialogContent, DialogTitle, Typography } from \"@firecms/ui\";\nimport React from \"react\";\n\nexport function EntityCustomViewsSelectDialog({\n open,\n onClose\n }: { open: boolean, onClose: (selectedViewKey?: string) => void }) {\n const {\n entityViews,\n } = useCustomizationController();\n\n return <Dialog\n maxWidth={\"md\"}\n open={open}>\n <DialogTitle>Select custom view</DialogTitle>\n <DialogContent className={\"flex flex-col gap-4\"}>\n {entityViews?.map((view) => {\n return <Button\n key={view.key}\n onClick={() => onClose(view.key)}\n fullWidth\n variant={\"text\"}\n >\n {view.name} ({view.key})\n </Button>;\n })}\n {(entityViews ?? []).length === 0 &&\n <Typography variant={\"body2\"}>\n No custom views defined. Define your custom views in the customization settings, before using this\n dialog.\n </Typography>\n }\n </DialogContent>\n <DialogActions>\n <Button onClick={() => onClose()}>Cancel</Button>\n </DialogActions>\n </Dialog>\n}\n","import React from \"react\";\nimport {\n ConfirmationDialog,\n EntityCollection,\n EntityCustomView,\n resolveEntityView,\n useCustomizationController,\n User\n} from \"@firecms/core\";\nimport {\n AddIcon,\n Alert,\n Button,\n Container,\n DeleteIcon,\n IconButton,\n Paper,\n Table,\n TableBody,\n TableCell,\n TableRow,\n Tooltip,\n Typography,\n} from \"@firecms/ui\";\nimport { CollectionEditorDialog } from \"./CollectionEditorDialog\";\nimport { CollectionsConfigController } from \"../../types/config_controller\";\nimport { PersistedCollection } from \"../../types/persisted_collection\";\nimport { CollectionInference } from \"../../types/collection_inference\";\nimport { EntityCustomViewsSelectDialog } from \"./EntityCustomViewsSelectDialog\";\nimport { useFormex } from \"@firecms/formex\";\n\nexport function SubcollectionsEditTab({\n collection,\n parentCollection,\n configController,\n collectionInference,\n getUser,\n parentCollectionIds,\n embedded = false\n}: {\n collection: PersistedCollection,\n parentCollection?: EntityCollection,\n configController: CollectionsConfigController;\n collectionInference?: CollectionInference;\n getUser?: (uid: string) => User | null;\n parentCollectionIds?: string[];\n embedded?: boolean;\n}) {\n\n const { entityViews: contextEntityViews } = useCustomizationController();\n\n const [subcollectionToDelete, setSubcollectionToDelete] = React.useState<string | undefined>();\n const [addEntityViewDialogOpen, setAddEntityViewDialogOpen] = React.useState<boolean>(false);\n const [viewToDelete, setViewToDelete] = React.useState<string | undefined>();\n\n const [currentDialog, setCurrentDialog] = React.useState<{\n isNewCollection: boolean,\n editedCollectionId?: string,\n }>();\n\n const {\n values,\n setFieldValue,\n } = useFormex<EntityCollection>();\n\n const [subcollections, setSubcollections] = React.useState<EntityCollection[]>(collection.subcollections ?? []);\n const resolvedEntityViews = values.entityViews?.filter(e => typeof e === \"string\")\n .map(e => resolveEntityView(e, contextEntityViews))\n .filter(Boolean) as EntityCustomView[] ?? [];\n const hardCodedEntityViews = collection.entityViews?.filter(e => typeof e !== \"string\") as EntityCustomView[] ?? [];\n const totalEntityViews = resolvedEntityViews.length + hardCodedEntityViews.length;\n\n const content = (\n <div className={\"flex flex-col gap-16\"}>\n\n <div className={\"flex-grow flex flex-col gap-4 items-start\"}>\n <Typography variant={\"h6\"}>\n Subcollections of {values.name}\n </Typography>\n\n <Paper className={\"flex flex-col gap-4 p-2 w-full\"}>\n {subcollections && subcollections.length > 0 && <Table>\n <TableBody>\n {subcollections.map((subcollection) => (\n <TableRow key={subcollection.path}\n onClick={() => setCurrentDialog({\n isNewCollection: false,\n editedCollectionId: subcollection.id\n })}>\n <TableCell\n align=\"left\">\n <Typography variant={\"subtitle2\"} className={\"flex-grow\"}>\n {subcollection.name}\n </Typography>\n </TableCell>\n <TableCell\n align=\"right\">\n <Tooltip title={\"Remove\"}\n asChild={true}>\n <IconButton size=\"small\"\n onClick={(e) => {\n e.preventDefault();\n e.stopPropagation();\n setSubcollectionToDelete(subcollection.id);\n }}\n color=\"inherit\">\n <DeleteIcon size={\"small\"} />\n </IconButton>\n </Tooltip>\n </TableCell>\n </TableRow>\n ))}\n </TableBody>\n </Table>}\n\n <Button\n onClick={() => {\n setCurrentDialog({\n isNewCollection: true\n });\n }}\n startIcon={<AddIcon />}>\n Add subcollection\n </Button>\n\n </Paper>\n\n </div>\n\n <div className={\"flex-grow flex flex-col gap-4 items-start\"}>\n <Typography variant={\"h6\"}>\n Custom views\n </Typography>\n\n {totalEntityViews === 0 &&\n <Alert action={<Button variant=\"text\"\n size={\"small\"}\n href={\"https://firecms.co/docs/cloud/quickstart\"}\n component={\"a\"}\n rel=\"noopener noreferrer\"\n target=\"_blank\">More info</Button>}>\n Define your own custom views by uploading them with the CLI.\n </Alert>\n }\n\n {<>\n <Paper className={\"flex flex-col gap-4 p-2 w-full\"}>\n <Table>\n <TableBody>\n {resolvedEntityViews.map((view) => (\n <TableRow key={view.key}>\n <TableCell\n align=\"left\">\n <Typography variant={\"subtitle2\"} className={\"flex-grow\"}>\n {view.name}\n </Typography>\n </TableCell>\n <TableCell\n align=\"right\">\n <Tooltip title={\"Remove\"}\n asChild={true}>\n <IconButton size=\"small\"\n onClick={(e) => {\n e.preventDefault();\n e.stopPropagation();\n setViewToDelete(view.key);\n }}\n color=\"inherit\">\n <DeleteIcon size={\"small\"} />\n </IconButton>\n </Tooltip>\n </TableCell>\n </TableRow>\n ))}\n {hardCodedEntityViews.map((view) => (\n <TableRow key={view.key}>\n <TableCell\n align=\"left\">\n <Typography variant={\"subtitle2\"} className={\"flex-grow\"}>\n {view.name}\n </Typography>\n <Typography variant={\"caption\"} className={\"flex-grow\"}>\n This view is defined in code with\n key <code>{view.key}</code>\n </Typography>\n </TableCell>\n </TableRow>\n ))}\n </TableBody>\n </Table>\n\n <Button\n onClick={() => {\n setAddEntityViewDialogOpen(true);\n }}\n startIcon={<AddIcon />}>\n Add custom entity view\n </Button>\n </Paper>\n\n </>}\n\n\n </div>\n\n </div>\n );\n\n return (\n <>\n {embedded ? (\n content\n ) : (\n <div className={\"overflow-auto my-auto\"}>\n <Container maxWidth={\"2xl\"} className={\"flex flex-col gap-4 p-8 m-auto\"}>\n {content}\n </Container>\n <div style={{ height: \"52px\" }} />\n </div>\n )}\n\n {subcollectionToDelete &&\n <ConfirmationDialog open={Boolean(subcollectionToDelete)}\n onAccept={() => {\n const props = {\n id: subcollectionToDelete,\n parentCollectionIds: [...(parentCollectionIds ?? []), collection.id]\n };\n console.debug(\"Deleting subcollection\", props)\n configController.deleteCollection(props).then(() => {\n setSubcollectionToDelete(undefined);\n setSubcollections(subcollections?.filter(e => e.id !== subcollectionToDelete))\n });\n }}\n onCancel={() => setSubcollectionToDelete(undefined)}\n title={<>Delete this subcollection?</>}\n body={<> This will <b>not\n delete any data</b>, only\n the collection in the CMS</>} />}\n {viewToDelete &&\n <ConfirmationDialog open={Boolean(viewToDelete)}\n onAccept={() => {\n setFieldValue(\"entityViews\", values.entityViews?.filter(e => e !== viewToDelete));\n setViewToDelete(undefined);\n }}\n onCancel={() => setViewToDelete(undefined)}\n title={<>Remove this view?</>}\n body={<>This will <b>not\n delete any data</b>, only\n the view in the CMS</>} />}\n\n <CollectionEditorDialog\n open={Boolean(currentDialog)}\n configController={configController}\n parentCollection={collection}\n collectionInference={collectionInference}\n parentCollectionIds={[...parentCollectionIds ?? [], values.id]}\n isNewCollection={false}\n {...currentDialog}\n getUser={getUser}\n handleClose={(updatedCollection) => {\n if (updatedCollection && !subcollections.map(e => e.id).includes(updatedCollection.id)) {\n setSubcollections([...subcollections, updatedCollection]);\n }\n setCurrentDialog(undefined);\n }} />\n\n <EntityCustomViewsSelectDialog\n open={addEntityViewDialogOpen}\n onClose={(selectedViewKey) => {\n if (selectedViewKey) {\n setFieldValue(\"entityViews\", [...(values.entityViews ?? []), selectedViewKey]);\n }\n setAddEntityViewDialogOpen(false);\n }} />\n </>\n );\n}\n","import { useCustomizationController } from \"@firecms/core\";\nimport { Button, Dialog, DialogActions, DialogContent, DialogTitle, Typography } from \"@firecms/ui\";\nimport React from \"react\";\n\nexport function EntityActionsSelectDialog({\n open,\n onClose\n }: { open: boolean, onClose: (selectedActionKey?: string) => void }) {\n const {\n entityActions\n } = useCustomizationController();\n\n return <Dialog\n maxWidth={\"md\"}\n open={open}>\n <DialogTitle>Select custom action</DialogTitle>\n <DialogContent className={\"flex flex-col gap-4\"}>\n {entityActions?.map((action) => {\n return <Button\n key={action.key}\n onClick={() => onClose(action.key)}\n fullWidth\n variant={\"text\"}\n >\n {action.name} ({action.key})\n </Button>;\n })}\n {(entityActions ?? []).length === 0 &&\n <Typography variant={\"body2\"}>\n No custom actions defined. Define your custom actions in the customization settings, before using\n this\n dialog.\n </Typography>\n }\n </DialogContent>\n <DialogActions>\n <Button onClick={() => onClose()}>Cancel</Button>\n </DialogActions>\n </Dialog>\n}\n","import React from \"react\";\nimport {\n ConfirmationDialog,\n EntityAction,\n EntityCollection,\n resolveEntityAction,\n useCustomizationController\n} from \"@firecms/core\";\nimport {\n AddIcon,\n Alert,\n Button,\n Container,\n DeleteIcon,\n IconButton,\n Paper,\n Table,\n TableBody,\n TableCell,\n TableRow,\n Tooltip,\n Typography,\n} from \"@firecms/ui\";\nimport { PersistedCollection } from \"../../types/persisted_collection\";\nimport { useFormex } from \"@firecms/formex\";\nimport { EntityActionsSelectDialog } from \"./EntityActionsSelectDialog\";\n\nexport function EntityActionsEditTab({\n collection,\n embedded = false\n}: {\n collection: PersistedCollection,\n embedded?: boolean;\n}) {\n\n const { entityActions: contextEntityActions } = useCustomizationController();\n\n const [addEntityActionDialogOpen, setAddEntityActionDialogOpen] = React.useState<boolean>(false);\n const [actionToDelete, setActionToDelete] = React.useState<string | undefined>();\n\n const {\n values,\n setFieldValue\n } = useFormex<EntityCollection>();\n\n const resolvedEntityActions = values.entityActions?.filter((e): e is string => typeof e === \"string\")\n .map(e => resolveEntityAction(e, contextEntityActions))\n .filter(Boolean) as EntityAction<any>[] ?? [];\n const hardCodedEntityActions = collection.entityActions?.filter((e): e is EntityAction<any> => typeof e !== \"string\") ?? [];\n const totalEntityActions = resolvedEntityActions.length + hardCodedEntityActions.length;\n\n const content = (\n <div className={\"flex flex-col gap-16\"}>\n <div className={\"flex-grow flex flex-col gap-4 items-start\"}>\n <Typography variant={\"h6\"}>\n Custom actions\n </Typography>\n\n {totalEntityActions === 0 &&\n <Alert action={<Button variant=\"text\"\n size={\"small\"}\n href={\"https://firecms.co/docs/custom_actions\"}\n component={\"a\"}\n rel=\"noopener noreferrer\"\n target=\"_blank\">More info</Button>}>\n Define your own custom actions by uploading them with the CLI.\n </Alert>\n }\n\n {<>\n <Paper className={\"flex flex-col gap-4 p-2 w-full\"}>\n <Table>\n <TableBody>\n {resolvedEntityActions.map((action) => (\n <TableRow key={action.key}>\n <TableCell\n align=\"left\">\n <Typography variant={\"subtitle2\"} className={\"flex-grow\"}>\n {action.name}\n </Typography>\n </TableCell>\n <TableCell\n align=\"right\">\n <Tooltip title={\"Remove\"}\n asChild={true}>\n <IconButton size=\"small\"\n onClick={(e) => {\n e.preventDefault();\n e.stopPropagation();\n setActionToDelete(action.key);\n }}\n color=\"inherit\">\n <DeleteIcon size={\"small\"} />\n </IconButton>\n </Tooltip>\n </TableCell>\n </TableRow>\n ))}\n {hardCodedEntityActions.map((action) => (\n <TableRow key={action.key}>\n <TableCell\n align=\"left\">\n <Typography variant={\"subtitle2\"} className={\"flex-grow\"}>\n {action.name}\n </Typography>\n <Typography variant={\"caption\"} className={\"flex-grow\"}>\n This action is defined in code with\n key <code>{action.key}</code>\n </Typography>\n </TableCell>\n </TableRow>\n ))}\n </TableBody>\n </Table>\n\n <Button\n onClick={() => {\n setAddEntityActionDialogOpen(true);\n }}\n startIcon={<AddIcon />}>\n Add custom entity action\n </Button>\n </Paper>\n\n </>}\n\n\n </div>\n\n </div>\n );\n\n return (\n <>\n {embedded ? (\n content\n ) : (\n <div className={\"overflow-auto my-auto\"}>\n <Container maxWidth={\"2xl\"} className={\"flex flex-col gap-4 p-8 m-auto\"}>\n {content}\n </Container>\n <div style={{ height: \"52px\" }} />\n </div>\n )}\n\n {actionToDelete &&\n <ConfirmationDialog open={Boolean(actionToDelete)}\n onAccept={() => {\n setFieldValue(\"entityActions\", values.entityActions?.filter(e => e !== actionToDelete));\n setActionToDelete(undefined);\n }}\n onCancel={() => setActionToDelete(undefined)}\n title={<>Remove this action?</>}\n body={<>This will <b>not\n delete any data</b>, only\n the action in the CMS</>} />}\n\n <EntityActionsSelectDialog\n open={addEntityActionDialogOpen}\n onClose={(selectedActionKey) => {\n if (selectedActionKey) {\n console.log(\"Selected action key:\", selectedActionKey);\n const value = [...(values.entityActions ?? []), selectedActionKey]\n // only actions that are defined in the registry\n .filter((e): e is string => typeof e === \"string\" && (contextEntityActions ?? []).some(action => action.key === e));\n ;\n setFieldValue(\"entityActions\", value);\n }\n setAddEntityActionDialogOpen(false);\n }} />\n </>\n );\n}\n","import React from \"react\";\nimport {\n EntityCollection,\n User\n} from \"@firecms/core\";\nimport {\n Button,\n cls,\n Container,\n defaultBorderMixin,\n Typography\n} from \"@firecms/ui\";\n\nimport { useFormex } from \"@firecms/formex\";\nimport { CollectionsConfigController } from \"../../types/config_controller\";\nimport { CollectionInference } from \"../../types/collection_inference\";\nimport { SubcollectionsEditTab } from \"./SubcollectionsEditTab\";\nimport { EntityActionsEditTab } from \"./EntityActionsEditTab\";\nimport { PersistedCollection } from \"../../types/persisted_collection\";\n\nexport function ExtendSettingsForm({\n collection,\n parentCollection,\n configController,\n collectionInference,\n getUser,\n parentCollectionIds,\n isMergedCollection,\n onResetToCode\n}: {\n collection: PersistedCollection;\n parentCollection?: EntityCollection;\n configController: CollectionsConfigController;\n collectionInference?: CollectionInference;\n getUser?: (uid: string) => User | null;\n parentCollectionIds?: string[];\n isMergedCollection?: boolean;\n onResetToCode?: () => void;\n}) {\n\n const {\n values,\n setFieldValue,\n submitCount\n } = useFormex<EntityCollection>();\n\n return (\n <div className={\"overflow-auto my-auto\"}>\n <Container maxWidth={\"4xl\"} className={\"flex flex-col gap-8 p-8 m-auto\"}>\n\n <div>\n <Typography variant={\"h5\"} className={\"flex-grow\"}>\n Extend\n </Typography>\n <Typography variant={\"body2\"} color={\"secondary\"}>\n Add subcollections, custom views, and entity actions to this collection.\n </Typography>\n </div>\n\n {/* Subcollections Section */}\n <SubcollectionsEditTab\n collection={collection}\n parentCollection={parentCollection}\n configController={configController}\n collectionInference={collectionInference}\n getUser={getUser}\n parentCollectionIds={parentCollectionIds}\n embedded={true}\n />\n\n {/* Entity Actions Section */}\n <EntityActionsEditTab collection={collection} embedded={true} />\n\n {/* Reset to code (for merged collections) */}\n {isMergedCollection && onResetToCode && (\n <div className={cls(\"flex flex-col gap-4 mt-8 border-t pt-8\", defaultBorderMixin)}>\n <Typography variant={\"body2\"} color={\"secondary\"}>\n This collection is defined in code.\n The changes done in this editor will override the properties defined in code.\n You can delete the overridden values to revert to the state defined in code.\n </Typography>\n <Button color={\"neutral\"} onClick={onResetToCode}>\n Reset to code\n </Button>\n </div>\n )}\n\n <div style={{ height: \"52px\" }} />\n\n </Container>\n </div>\n );\n}\n","import { EntityCollection } from \"@firecms/core\";\n\n/**\n * Valid dataType values for properties\n */\nconst VALID_DATA_TYPES = [\n \"string\",\n \"number\",\n \"boolean\",\n \"date\",\n \"geopoint\",\n \"reference\",\n \"array\",\n \"map\"\n] as const;\n\ntype DataType = typeof VALID_DATA_TYPES[number];\n\n/**\n * Validation error with path and message\n */\nexport interface CollectionValidationError {\n path: string;\n message: string;\n}\n\n/**\n * Result of collection JSON validation\n */\nexport interface CollectionValidationResult {\n valid: boolean;\n errors: CollectionValidationError[];\n collection?: EntityCollection;\n}\n\n/**\n * Validates a property object recursively\n */\nfunction validateProperty(\n property: any,\n path: string,\n errors: CollectionValidationError[]\n): void {\n if (typeof property !== \"object\" || property === null) {\n errors.push({\n path,\n message: \"Property must be an object\"\n });\n return;\n }\n\n // Check dataType\n if (!property.dataType) {\n errors.push({\n path: `${path}.dataType`,\n message: \"Required field is missing\"\n });\n } else if (!VALID_DATA_TYPES.includes(property.dataType)) {\n errors.push({\n path: `${path}.dataType`,\n message: `Invalid value \"${property.dataType}\", expected one of: ${VALID_DATA_TYPES.join(\", \")}`\n });\n }\n\n // Validate name if present\n if (property.name !== undefined && typeof property.name !== \"string\") {\n errors.push({\n path: `${path}.name`,\n message: \"Must be a string\"\n });\n }\n\n // Validate array \"of\" property\n if (property.dataType === \"array\") {\n if (property.of) {\n if (Array.isArray(property.of)) {\n property.of.forEach((ofProp: any, index: number) => {\n validateProperty(ofProp, `${path}.of[${index}]`, errors);\n });\n } else {\n validateProperty(property.of, `${path}.of`, errors);\n }\n }\n // oneOf validation\n if (property.oneOf) {\n if (typeof property.oneOf !== \"object\") {\n errors.push({\n path: `${path}.oneOf`,\n message: \"Must be an object\"\n });\n } else if (property.oneOf.properties) {\n validateProperties(property.oneOf.properties, `${path}.oneOf.properties`, errors);\n }\n }\n }\n\n // Validate map properties\n if (property.dataType === \"map\" && property.properties) {\n validateProperties(property.properties, `${path}.properties`, errors);\n }\n\n // Validate reference path\n if (property.dataType === \"reference\") {\n if (property.path !== undefined && typeof property.path !== \"string\") {\n errors.push({\n path: `${path}.path`,\n message: \"Must be a string\"\n });\n }\n }\n\n // Validate storage config for string\n if (property.dataType === \"string\" && property.storage) {\n if (typeof property.storage !== \"object\") {\n errors.push({\n path: `${path}.storage`,\n message: \"Must be an object\"\n });\n }\n }\n\n // Validate enumValues if present\n if (property.enumValues !== undefined) {\n if (!Array.isArray(property.enumValues) && typeof property.enumValues !== \"object\") {\n errors.push({\n path: `${path}.enumValues`,\n message: \"Must be an array or object\"\n });\n }\n }\n}\n\n/**\n * Validates a properties object (collection of property definitions)\n */\nfunction validateProperties(\n properties: any,\n path: string,\n errors: CollectionValidationError[]\n): void {\n if (typeof properties !== \"object\" || properties === null) {\n errors.push({\n path,\n message: \"Must be an object\"\n });\n return;\n }\n\n for (const [key, property] of Object.entries(properties)) {\n validateProperty(property, `${path}.${key}`, errors);\n }\n}\n\n/**\n * Validates optional collection fields\n */\nfunction validateOptionalFields(\n collection: any,\n errors: CollectionValidationError[]\n): void {\n // String fields\n const stringFields = [\n \"singularName\",\n \"description\",\n \"group\",\n \"databaseId\"\n ];\n for (const field of stringFields) {\n if (collection[field] !== undefined && typeof collection[field] !== \"string\") {\n errors.push({\n path: field,\n message: \"Must be a string\"\n });\n }\n }\n\n // Boolean fields\n const booleanFields = [\n \"collectionGroup\",\n \"textSearchEnabled\",\n \"selectionEnabled\",\n \"inlineEditing\",\n \"hideFromNavigation\",\n \"hideIdFromForm\",\n \"hideIdFromCollection\",\n \"formAutoSave\",\n \"editable\",\n \"alwaysApplyDefaultValues\",\n \"includeJsonView\",\n \"history\"\n ];\n for (const field of booleanFields) {\n if (collection[field] !== undefined && typeof collection[field] !== \"boolean\") {\n errors.push({\n path: field,\n message: \"Must be a boolean\"\n });\n }\n }\n\n // Icon can be string or object (React node)\n if (collection.icon !== undefined &&\n typeof collection.icon !== \"string\" &&\n typeof collection.icon !== \"object\") {\n errors.push({\n path: \"icon\",\n message: \"Must be a string (icon key) or object\"\n });\n }\n\n // propertiesOrder must be array of strings\n if (collection.propertiesOrder !== undefined) {\n if (!Array.isArray(collection.propertiesOrder)) {\n errors.push({\n path: \"propertiesOrder\",\n message: \"Must be an array of strings\"\n });\n } else if (!collection.propertiesOrder.every((item: any) => typeof item === \"string\")) {\n errors.push({\n path: \"propertiesOrder\",\n message: \"All items must be strings\"\n });\n }\n }\n\n // subcollections must be array\n if (collection.subcollections !== undefined) {\n if (!Array.isArray(collection.subcollections)) {\n errors.push({\n path: \"subcollections\",\n message: \"Must be an array\"\n });\n } else {\n collection.subcollections.forEach((sub: any, index: number) => {\n const subErrors: CollectionValidationError[] = [];\n validateCollectionObject(sub, subErrors);\n subErrors.forEach(err => {\n errors.push({\n path: `subcollections[${index}].${err.path}`,\n message: err.message\n });\n });\n });\n }\n }\n\n // defaultViewMode validation\n const validViewModes = [\"table\", \"cards\", \"kanban\"];\n if (collection.defaultViewMode !== undefined) {\n if (!validViewModes.includes(collection.defaultViewMode)) {\n errors.push({\n path: \"defaultViewMode\",\n message: `Invalid value, expected one of: ${validViewModes.join(\", \")}`\n });\n }\n }\n\n // kanban config validation\n if (collection.kanban !== undefined) {\n if (typeof collection.kanban !== \"object\" || collection.kanban === null) {\n errors.push({\n path: \"kanban\",\n message: \"Must be an object\"\n });\n } else if (collection.kanban.columnProperty !== undefined &&\n typeof collection.kanban.columnProperty !== \"string\") {\n errors.push({\n path: \"kanban.columnProperty\",\n message: \"Must be a string\"\n });\n }\n }\n}\n\n/**\n * Validates a collection object\n */\nfunction validateCollectionObject(\n collection: any,\n errors: CollectionValidationError[]\n): void {\n // Required fields\n if (!collection.id) {\n errors.push({\n path: \"id\",\n message: \"Required field is missing\"\n });\n } else if (typeof collection.id !== \"string\") {\n errors.push({\n path: \"id\",\n message: \"Must be a string\"\n });\n }\n\n if (!collection.name) {\n errors.push({\n path: \"name\",\n message: \"Required field is missing\"\n });\n } else if (typeof collection.name !== \"string\") {\n errors.push({\n path: \"name\",\n message: \"Must be a string\"\n });\n }\n\n if (!collection.path) {\n errors.push({\n path: \"path\",\n message: \"Required field is missing\"\n });\n } else if (typeof collection.path !== \"string\") {\n errors.push({\n path: \"path\",\n message: \"Must be a string\"\n });\n }\n\n // Properties validation\n if (collection.properties !== undefined) {\n validateProperties(collection.properties, \"properties\", errors);\n }\n\n // Optional fields\n validateOptionalFields(collection, errors);\n}\n\n/**\n * Validates a JSON string representing a collection configuration.\n * Returns detailed validation errors if the JSON is invalid or doesn't match\n * the expected collection schema.\n */\nexport function validateCollectionJson(jsonString: string): CollectionValidationResult {\n const errors: CollectionValidationError[] = [];\n\n // Try to parse JSON\n let parsed: any;\n try {\n parsed = JSON.parse(jsonString);\n } catch (e: any) {\n // Try to extract line/column info from the error\n const match = e.message.match(/position (\\d+)/);\n let message = \"Invalid JSON syntax\";\n if (match) {\n const position = parseInt(match[1], 10);\n const lines = jsonString.substring(0, position).split(\"\\n\");\n const line = lines.length;\n const column = lines[lines.length - 1].length + 1;\n message = `Invalid JSON syntax at line ${line}, column ${column}: ${e.message}`;\n } else {\n message = `Invalid JSON syntax: ${e.message}`;\n }\n return {\n valid: false,\n errors: [{\n path: \"\",\n message\n }]\n };\n }\n\n // Validate collection structure\n if (typeof parsed !== \"object\" || parsed === null || Array.isArray(parsed)) {\n return {\n valid: false,\n errors: [{\n path: \"\",\n message: \"Collection must be an object\"\n }]\n };\n }\n\n validateCollectionObject(parsed, errors);\n\n return {\n valid: errors.length === 0,\n errors,\n collection: errors.length === 0 ? parsed as EntityCollection : undefined\n };\n}\n","import React, { useCallback, useState } from \"react\";\nimport {\n Button,\n cls,\n CodeIcon,\n Dialog,\n DialogActions,\n DialogContent,\n DialogTitle,\n Typography\n} from \"@firecms/ui\";\nimport { EntityCollection } from \"@firecms/core\";\nimport { validateCollectionJson, CollectionValidationError } from \"../../utils/validateCollectionJson\";\n\nconst EXAMPLE_JSON = `{\n \"id\": \"products\",\n \"name\": \"Products\",\n \"path\": \"products\",\n \"icon\": \"shopping_cart\",\n \"properties\": {\n \"name\": {\n \"dataType\": \"string\",\n \"name\": \"Name\",\n \"validation\": { \"required\": true }\n },\n \"price\": {\n \"dataType\": \"number\",\n \"name\": \"Price\"\n },\n \"available\": {\n \"dataType\": \"boolean\",\n \"name\": \"Available\"\n }\n }\n}`;\n\nexport interface CollectionJsonImportDialogProps {\n open: boolean;\n onClose: () => void;\n onImport: (collection: EntityCollection) => void;\n}\n\nexport function CollectionJsonImportDialog({\n open,\n onClose,\n onImport\n}: CollectionJsonImportDialogProps) {\n const [jsonValue, setJsonValue] = useState<string>(\"\");\n const [errors, setErrors] = useState<CollectionValidationError[]>([]);\n const [touched, setTouched] = useState(false);\n\n const handleJsonChange = useCallback((e: React.ChangeEvent<HTMLTextAreaElement>) => {\n const value = e.target.value;\n setJsonValue(value);\n setTouched(true);\n\n if (!value.trim()) {\n setErrors([]);\n return;\n }\n\n const result = validateCollectionJson(value);\n setErrors(result.errors);\n }, []);\n\n const handleImport = useCallback(() => {\n const result = validateCollectionJson(jsonValue);\n if (result.valid && result.collection) {\n onImport(result.collection);\n setJsonValue(\"\");\n setErrors([]);\n setTouched(false);\n onClose();\n }\n }, [jsonValue, onImport, onClose]);\n\n const handleClose = useCallback(() => {\n setJsonValue(\"\");\n setErrors([]);\n setTouched(false);\n onClose();\n }, [onClose]);\n\n const isValid = touched && jsonValue.trim() && errors.length === 0;\n\n return (\n <Dialog\n open={open}\n onOpenChange={(open) => !open && handleClose()}\n maxWidth=\"2xl\"\n >\n <DialogTitle className=\"flex items-center gap-2\">\n <CodeIcon size=\"small\" />\n Import Collection from JSON\n </DialogTitle>\n <DialogContent className=\"flex flex-col gap-4\">\n <Typography variant=\"body2\" color=\"secondary\">\n Paste a JSON object representing your collection configuration.\n The JSON must include <code className=\"bg-surface-200 dark:bg-surface-700 px-1 rounded\">id</code>,\n <code className=\"bg-surface-200 dark:bg-surface-700 px-1 rounded\">name</code>,\n <code className=\"bg-surface-200 dark:bg-surface-700 px-1 rounded\">path</code>, and\n <code className=\"bg-surface-200 dark:bg-surface-700 px-1 rounded\">properties</code>.\n </Typography>\n\n <textarea\n value={jsonValue}\n onChange={handleJsonChange}\n placeholder={EXAMPLE_JSON}\n rows={12}\n className={cls(\n \"w-full p-3 font-mono text-sm rounded-md border resize-none overflow-y-auto\",\n \"bg-surface-50 dark:bg-surface-900\",\n \"focus:outline-none focus:ring-2 focus:ring-primary\",\n \"h-[300px]\",\n errors.length > 0 && touched\n ? \"border-red-500 dark:border-red-400\"\n : \"border-surface-300 dark:border-surface-600\"\n )}\n />\n\n {errors.length > 0 && touched && (\n <div className=\"p-3 bg-red-50 dark:bg-red-900/20 rounded-md border border-red-200 dark:border-red-800\">\n <Typography variant=\"body2\" className=\"font-medium text-red-700 dark:text-red-400 mb-2\">\n Validation errors:\n </Typography>\n <ul className=\"list-disc list-inside space-y-1\">\n {errors.map((error, index) => (\n <li key={index} className=\"text-sm text-red-600 dark:text-red-400\">\n {error.path ? (\n <>\n <code className=\"bg-red-100 dark:bg-red-900/40 px-1 rounded\">\n {error.path}\n </code>\n : {error.message}\n </>\n ) : (\n error.message\n )}\n </li>\n ))}\n </ul>\n </div>\n )}\n\n {isValid && (\n <div className=\"p-3 bg-green-50 dark:bg-green-900/20 rounded-md border border-green-200 dark:border-green-800\">\n <Typography variant=\"body2\" className=\"text-green-700 dark:text-green-400\">\n ✓ JSON is valid and ready to import\n </Typography>\n </div>\n )}\n </DialogContent>\n <DialogActions>\n <Button\n variant=\"text\"\n onClick={handleClose}\n >\n Cancel\n </Button>\n <Button\n variant=\"filled\"\n color=\"primary\"\n onClick={handleImport}\n disabled={!isValid}\n >\n Import Collection\n </Button>\n </DialogActions>\n </Dialog>\n );\n}\n","import { EntityCollection, makePropertiesEditable } from \"@firecms/core\";\n\nexport const productsCollectionTemplate: EntityCollection = {\n id: \"products\",\n path: \"products\",\n name: \"Products\",\n singularName: \"Product\",\n icon: \"shopping_cart\",\n description: \"List of the products currently sold in your shop\",\n properties: makePropertiesEditable({\n name: {\n dataType: \"string\",\n name: \"Name\",\n description: \"Name of this product\",\n validation: {\n required: true\n }\n },\n brand: {\n dataType: \"string\",\n name: \"Brand\",\n validation: {\n required: true\n }\n },\n description: {\n dataType: \"string\",\n name: \"Description\",\n description: \"Description of this product, supports markdown\",\n markdown: true\n },\n main_image: {\n dataType: \"string\",\n name: \"Image\",\n storage: {\n storagePath: \"images\",\n acceptedFiles: [\"image/*\"],\n },\n description: \"Upload field for images\"\n },\n available: {\n dataType: \"boolean\",\n name: \"Available\",\n columnWidth: 100,\n description: \"Is this product available in the website\"\n },\n price: {\n dataType: \"number\",\n name: \"Price\",\n validation: {\n requiredMessage: \"You must set a positive price\",\n min: 0\n }\n },\n images: {\n dataType: \"array\",\n name: \"Images\",\n hideFromCollection: true,\n of: {\n dataType: \"string\",\n storage: {\n storagePath: \"images\",\n acceptedFiles: [\"image/*\"]\n }\n }\n },\n related_products: {\n dataType: \"array\",\n name: \"Related products\",\n description: \"Products related to this one\",\n of: {\n dataType: \"reference\",\n path: \"products\"\n }\n },\n metadata: {\n name: \"Metadata\",\n description: \"This is an example of a map property\",\n dataType: \"map\",\n keyValue: true\n },\n added_on: {\n dataType: \"date\",\n name: \"Added on\",\n autoValue: \"on_create\"\n }\n })\n};\n","import { EntityCollection, makePropertiesEditable } from \"@firecms/core\";\n\nexport const blogCollectionTemplate:EntityCollection = {\n id: \"blog\",\n path: \"blog\",\n name: \"Blog\",\n singularName: \"Blog entry\",\n icon: \"article\",\n description: \"A collection of blog entries\",\n defaultSize: \"l\",\n properties: makePropertiesEditable({\n name: {\n name: \"Name\",\n validation: { required: true },\n dataType: \"string\"\n },\n header_image: {\n name: \"Header image\",\n dataType: \"string\",\n storage: {\n storagePath: \"images\",\n acceptedFiles: [\"image/*\"],\n metadata: {\n cacheControl: \"max-age=1000000\"\n }\n }\n },\n content: {\n name: \"Content\",\n description: \"Content blocks for the blog entry\",\n validation: { required: true },\n dataType: \"array\",\n oneOf: {\n typeField: \"type\",\n valueField: \"value\",\n properties: {\n text: {\n dataType: \"string\",\n name: \"Text\",\n markdown: true\n },\n quote: {\n dataType: \"string\",\n name: \"Quote\",\n multiline: true\n },\n images: {\n name: \"Images\",\n dataType: \"array\",\n of: {\n dataType: \"string\",\n storage: {\n storagePath: \"images\",\n acceptedFiles: [\"image/*\"],\n metadata: {\n cacheControl: \"max-age=1000000\"\n }\n }\n },\n description: \"This fields allows uploading multiple images at once and reordering\"\n },\n products: {\n name: \"Products\",\n dataType: \"array\",\n of: {\n dataType: \"reference\",\n path: \"products\",\n previewProperties: [\"name\", \"main_image\"]\n }\n }\n },\n propertiesOrder: [\"text\", \"quote\", \"images\", \"products\"]\n }\n },\n created_on: {\n name: \"Created on\",\n dataType: \"date\",\n autoValue: \"on_create\"\n },\n status: {\n name: \"Status\",\n validation: { required: true },\n dataType: \"string\",\n enumValues: {\n published: {\n id: \"published\",\n label: \"Published\",\n },\n draft: \"Draft\"\n },\n defaultValue: \"draft\"\n },\n publish_date: {\n name: \"Publish date\",\n dataType: \"date\",\n clearable: true\n },\n reviewed: {\n name: \"Reviewed\",\n dataType: \"boolean\"\n },\n tags: {\n name: \"Tags\",\n description: \"Example of generic array\",\n dataType: \"array\",\n of: {\n dataType: \"string\",\n previewAsTag: true\n }\n }\n })\n};\n","import { EntityCollection, makePropertiesEditable } from \"@firecms/core\";\n\nexport const usersCollectionTemplate: EntityCollection = {\n id: \"users\",\n path: \"users\",\n name: \"Users\",\n singularName: \"User\",\n description: \"Registered users in the app/web\",\n icon: \"person\",\n properties: makePropertiesEditable({\n displayName: {\n name: \"Display name\",\n dataType: \"string\"\n },\n email: {\n name: \"Email\",\n dataType: \"string\",\n email: true\n },\n emailVerified: {\n name: \"Email verified\",\n dataType: \"boolean\"\n },\n phone: {\n name: \"Phone\",\n dataType: \"string\"\n },\n favourite_products: {\n name: \"Favourite products\",\n dataType: \"array\",\n of: {\n dataType: \"reference\",\n path: \"products\"\n }\n },\n photoURL: {\n name: \"Photo URL\",\n dataType: \"string\",\n url: \"image\"\n }\n }),\n};\n","import { EntityCollection } from \"@firecms/core\";\n\nexport const pagesCollectionTemplate: EntityCollection = {\n id: \"pages\",\n path: \"pages\",\n name: \"Pages\",\n singularName: \"Page\",\n icon: \"insert_drive_file\",\n description: \"List of website pages that can be edited here\",\n properties: {\n title: {\n dataType: \"string\",\n name: \"Page Title\",\n validation: { required: true }\n },\n slug: {\n dataType: \"string\",\n name: \"URL Slug\",\n validation: {\n required: true,\n unique: true,\n matches: \"^[a-z0-9]+(?:-[a-z0-9]+)*$\",\n matchesMessage: \"Must be lowercase, alphanumeric, and hyphenated\"\n }\n },\n hero_section: {\n dataType: \"map\",\n name: \"Hero Section\",\n properties: {\n headline: {\n dataType: \"string\",\n name: \"Headline\",\n validation: { required: true }\n },\n subhead: {\n dataType: \"string\",\n name: \"Subheadline\"\n },\n background_image: {\n dataType: \"string\",\n name: \"Background Image\",\n storage: {\n storagePath: \"page_hero/images\",\n acceptedFiles: [\"image/*\"],\n }\n },\n call_to_action: {\n dataType: \"string\",\n name: \"Call to Action\"\n },\n call_to_action_link: {\n dataType: \"string\",\n name: \"CTA Link\",\n url: true\n }\n }\n },\n content: {\n dataType: \"array\",\n name: \"Content\",\n oneOf: {\n properties: {\n section: {\n dataType: \"map\",\n name: \"Section\",\n properties: {\n title: {\n dataType: \"string\",\n name: \"Section Title\",\n validation: { required: true }\n },\n content: {\n dataType: \"string\",\n name: \"Section Content\",\n markdown: true\n },\n image: {\n dataType: \"string\",\n name: \"Section Image\",\n storage: {\n storagePath: \"page_sections/images\",\n acceptedFiles: [\"image/*\"]\n }\n },\n link: {\n dataType: \"string\",\n name: \"Section Link\",\n url: true\n }\n }\n },\n image: {\n dataType: \"string\",\n name: \"Image\",\n storage: {\n storagePath: \"page_sections/images\",\n acceptedFiles: [\"image/*\"]\n }\n },\n slider: {\n dataType: \"array\",\n name: \"Slider\",\n of: {\n dataType: \"map\",\n properties: {\n title: {\n dataType: \"string\",\n name: \"Title\",\n validation: { required: true }\n },\n image: {\n dataType: \"string\",\n storage: {\n storagePath: \"page_sections/images\",\n acceptedFiles: [\"image/*\"]\n }\n }\n }\n }\n },\n }\n }\n },\n sidebar: {\n dataType: \"map\",\n name: \"Sidebar\",\n properties: {\n title: {\n dataType: \"string\",\n name: \"Sidebar Title\",\n validation: { required: false }\n },\n content: {\n dataType: \"string\",\n name: \"Sidebar Content\",\n markdown: true\n }\n }\n },\n seo_metadata: {\n dataType: \"map\",\n name: \"SEO Metadata\",\n properties: {\n meta_title: {\n dataType: \"string\",\n name: \"Meta Title\"\n },\n meta_description: {\n dataType: \"string\",\n name: \"Meta Description\"\n },\n focus_keywords: {\n dataType: \"array\",\n name: \"Focus Keywords\",\n of: {\n dataType: \"string\"\n }\n }\n }\n },\n footer_override: {\n dataType: \"string\",\n name: \"Footer Override\",\n markdown: true\n },\n publish_date: {\n dataType: \"date\",\n name: \"Publish Date\",\n validation: { required: true }\n },\n last_updated: {\n dataType: \"date\",\n name: \"Last Updated\",\n autoValue: \"on_update\"\n },\n is_published: {\n dataType: \"boolean\",\n name: \"Is Published\",\n columnWidth: 100,\n description: \"Should this page be live on the site?\"\n }\n }\n};\n","import { useContext } from \"react\";\nimport { CollectionEditorController } from \"./types/collection_editor_controller\";\nimport { CollectionEditorContext } from \"./ConfigControllerProvider\";\n\n/**\n * Hook to access the collection editor controller.\n * The methods in this controller can be used to open the collection editor dialog.\n */\nexport const useCollectionEditorController = (): CollectionEditorController => useContext(CollectionEditorContext);\n","import { EntityCollection } from \"@firecms/core\";\n\nexport interface GenerateCollectionRequest {\n /** User's natural language description of what they want */\n prompt: string;\n\n /** Other collections in the project (for context/relationships). Limit to 30. */\n existingCollections: Partial<EntityCollection>[];\n\n /** Optional for generate, required for modifications. If provided, modifies this collection */\n existingCollection?: Partial<EntityCollection>;\n}\n\n/** Operation types for modifying a collection */\nexport type CollectionOperationType = \"add\" | \"modify\" | \"delete\";\n\n/** A single operation describing what changed */\nexport interface CollectionOperation {\n op: CollectionOperationType;\n path: string;\n value?: any;\n}\n\n/** Result from collection generation, including optional delta operations */\nexport interface GenerateCollectionResult {\n collection: EntityCollection;\n operations?: CollectionOperation[];\n}\n\n/**\n * Callback type for generating or modifying a collection.\n * The plugin is API-agnostic - consumers implement the actual API call.\n */\nexport type CollectionGenerationCallback = (\n request: GenerateCollectionRequest\n) => Promise<GenerateCollectionResult>;\n\nexport class CollectionGenerationApiError extends Error {\n public code?: string;\n\n constructor(message: string, code?: string) {\n super(message);\n this.code = code;\n this.name = \"CollectionGenerationApiError\";\n }\n}\n\n/**\n * Default endpoint for AI collection generation\n */\nexport const DEFAULT_COLLECTION_GENERATION_ENDPOINT = \"https://api.firecms.co/collections/generate\";\n\n/**\n * Props for building a collection generation callback\n */\nexport interface BuildCollectionGenerationCallbackProps {\n /**\n * Function to get the auth token (e.g., from Firebase Auth)\n * This is typically `authController.getAuthToken` from `@firecms/firebase`\n */\n getAuthToken: () => Promise<string>;\n\n /**\n * Optional custom API endpoint for collection generation.\n * Defaults to the FireCMS SaaS API endpoint.\n */\n apiEndpoint?: string;\n}\n\n/**\n * Build a callback for AI collection generation.\n * This helper allows self-hosted FireCMS users to enable the AI collection\n * generation feature.\n *\n * @example\n * ```typescript\n * import { useCollectionEditorPlugin, buildCollectionGenerationCallback } from \"@firecms/collection_editor\";\n * import { useFirebaseAuthController } from \"@firecms/firebase\";\n *\n * const authController = useFirebaseAuthController({ firebaseApp });\n *\n * const collectionEditorPlugin = useCollectionEditorPlugin({\n * // ... other props\n * generateCollection: buildCollectionGenerationCallback({\n * getAuthToken: authController.getAuthToken\n * })\n * });\n * ```\n */\nexport function buildCollectionGenerationCallback({\n getAuthToken,\n apiEndpoint = DEFAULT_COLLECTION_GENERATION_ENDPOINT\n}: BuildCollectionGenerationCallbackProps): CollectionGenerationCallback {\n return async (request) => {\n const token = await getAuthToken();\n const response = await fetch(apiEndpoint, {\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n Authorization: `Bearer ${token}`\n },\n body: JSON.stringify(request)\n });\n\n if (!response.ok) {\n const errorData = await response.json().catch(() => ({}));\n throw new CollectionGenerationApiError(\n errorData.error || \"Failed to generate collection\",\n errorData.code\n );\n }\n\n const data = await response.json();\n return {\n collection: data.data.collection,\n operations: data.data.operations\n };\n };\n}\n","import React, { useState } from \"react\";\nimport { EntityCollection, useNavigationController, useSnackbarController, AIIcon } from \"@firecms/core\";\nimport {\n Button,\n CircularProgress,\n IconButton,\n Menu,\n SendIcon,\n TextField,\n Typography\n} from \"@firecms/ui\";\nimport {\n CollectionGenerationCallback,\n CollectionGenerationApiError,\n CollectionOperation\n} from \"../../api/generateCollectionApi\";\nimport { PersistedCollection } from \"../../types/persisted_collection\";\n\nexport interface AICollectionGeneratorPopoverProps {\n /**\n * Current collection being edited (if modifying an existing collection)\n */\n existingCollection?: PersistedCollection;\n\n /**\n * Callback when a collection is generated or modified.\n * Includes the collection and optionally the operations that were applied.\n */\n onGenerated: (collection: EntityCollection, operations?: CollectionOperation[]) => void;\n\n /**\n * Callback function for generating/modifying collections.\n * The plugin is API-agnostic - the consumer provides the implementation.\n */\n generateCollection: CollectionGenerationCallback;\n\n /**\n * Optional custom trigger button. If not provided, a default AI button is used.\n */\n trigger?: React.ReactNode;\n\n /**\n * Size of the button\n */\n size?: \"small\" | \"medium\" | \"large\";\n\n /**\n * Whether to show the label text\n */\n showLabel?: boolean;\n}\n\nexport function AICollectionGeneratorPopover({\n existingCollection,\n onGenerated,\n generateCollection,\n trigger,\n size = \"small\",\n showLabel = true\n}: AICollectionGeneratorPopoverProps) {\n const [menuOpen, setMenuOpen] = useState(false);\n const [prompt, setPrompt] = useState(\"\");\n const [loading, setLoading] = useState(false);\n const [error, setError] = useState<string | null>(null);\n\n const navigation = useNavigationController();\n const snackbarController = useSnackbarController();\n\n const existingCollections = navigation.collections ?? [];\n\n const handleGenerate = async () => {\n if (!prompt.trim()) return;\n\n setLoading(true);\n setError(null);\n\n try {\n const collectionsContext = existingCollections.map(c => ({\n path: c.path,\n id: c.id,\n name: c.name,\n properties: c.properties,\n propertiesOrder: c.propertiesOrder\n }));\n\n const result = await generateCollection({\n prompt: prompt.trim(),\n existingCollections: collectionsContext.slice(0, 30),\n ...(existingCollection && {\n existingCollection: {\n path: existingCollection.path,\n id: existingCollection.id,\n name: existingCollection.name,\n properties: existingCollection.properties,\n propertiesOrder: existingCollection.propertiesOrder\n }\n })\n });\n\n onGenerated(result.collection, result.operations);\n setMenuOpen(false);\n setPrompt(\"\");\n snackbarController.open({\n type: \"success\",\n message: existingCollection\n ? \"Collection updated with AI suggestions\"\n : \"Collection generated successfully\"\n });\n } catch (e) {\n console.error(\"Error generating collection:\", e);\n const errorMessage = e instanceof CollectionGenerationApiError\n ? e.message\n : \"Failed to generate collection. Please try again.\";\n setError(errorMessage);\n snackbarController.open({\n type: \"error\",\n message: errorMessage\n });\n } finally {\n setLoading(false);\n }\n };\n\n const handleKeyDown = (e: React.KeyboardEvent) => {\n if (e.key === \"Enter\" && !e.shiftKey) {\n e.preventDefault();\n handleGenerate();\n }\n };\n\n const defaultTrigger = showLabel ? (\n <Button\n variant=\"text\"\n size={size}\n disabled={loading}\n startIcon={loading\n ? <CircularProgress size=\"smallest\" />\n : <AIIcon size=\"small\" />\n }\n >\n AI Assist\n </Button>\n ) : (\n <IconButton\n size={size}\n disabled={loading}\n aria-label=\"AI Assist\"\n >\n {loading\n ? <CircularProgress size=\"smallest\" />\n : <AIIcon size=\"small\" />\n }\n </IconButton>\n );\n\n return (\n <Menu\n open={menuOpen}\n onOpenChange={(open) => {\n setMenuOpen(open);\n if (!open) {\n setError(null);\n }\n }}\n trigger={trigger ?? defaultTrigger}\n >\n <div className=\"p-4 flex flex-col gap-3 min-w-[360px] max-w-[480px]\">\n <div className=\"flex items-center gap-2\">\n <AIIcon size=\"small\" />\n <Typography variant=\"subtitle2\">\n {existingCollection ? \"Modify Collection with AI\" : \"Generate Collection with AI\"}\n </Typography>\n </div>\n\n <Typography variant=\"caption\" color=\"secondary\">\n {existingCollection\n ? \"Describe the changes you want to make to this collection.\"\n : \"Describe the collection you want to create.\"\n }\n </Typography>\n\n <TextField\n size=\"small\"\n multiline\n autoFocus\n className=\"w-full text-text-primary dark:text-text-primary-dark\"\n value={prompt}\n onChange={(e) => setPrompt(e.target.value)}\n onKeyDown={handleKeyDown}\n placeholder={existingCollection\n ? \"e.g., Add a thumbnail image field with storage, make price required...\"\n : \"e.g., Create a products collection with name, price, description, and category...\"\n }\n disabled={loading}\n />\n\n {error && (\n <Typography variant=\"caption\" className=\"text-red-500\">\n {error}\n </Typography>\n )}\n\n <div className=\"flex justify-end gap-2\">\n <Button\n variant=\"text\"\n size=\"small\"\n onClick={() => setMenuOpen(false)}\n disabled={loading}\n >\n Cancel\n </Button>\n <Button\n variant=\"filled\"\n size=\"small\"\n onClick={handleGenerate}\n disabled={!prompt.trim() || loading}\n startIcon={loading ? <CircularProgress size=\"smallest\" /> : undefined}\n >\n {loading ? \"Generating...\" : \"Generate\"}\n </Button>\n </div>\n </div>\n </Menu>\n );\n}\n","import React, { useState } from \"react\";\nimport { AIIcon, EntityCollection, prettifyIdentifier, } from \"@firecms/core\";\nimport { Button, Card, Chip, cls, CodeIcon, Container, Icon, Tooltip, Typography, } from \"@firecms/ui\";\nimport { CollectionJsonImportDialog } from \"./CollectionJsonImportDialog\";\n\nimport { productsCollectionTemplate } from \"./templates/products_template\";\nimport { blogCollectionTemplate } from \"./templates/blog_template\";\nimport { usersCollectionTemplate } from \"./templates/users_template\";\nimport { ImportFileUpload } from \"@firecms/data_import\";\nimport { pagesCollectionTemplate } from \"./templates/pages_template\";\nimport { useFormex } from \"@firecms/formex\";\nimport { useCollectionEditorController } from \"../../useCollectionEditorController\";\nimport { AICollectionGeneratorPopover } from \"./AICollectionGeneratorPopover\";\nimport { CollectionGenerationCallback } from \"../../api/generateCollectionApi\";\n\nexport function CollectionEditorWelcomeView({\n path,\n parentCollection,\n onContinue,\n existingCollectionPaths,\n generateCollection\n}: {\n path: string;\n parentCollection?: EntityCollection;\n onContinue: (importData?: object[], propertiesOrder?: string[]) => void;\n existingCollectionPaths?: string[];\n generateCollection?: CollectionGenerationCallback;\n}) {\n\n const { pathSuggestions } = useCollectionEditorController();\n\n const filteredSuggestions = (pathSuggestions ?? []).filter(s => !(existingCollectionPaths ?? []).find(c => c.trim().toLowerCase() === s.trim().toLowerCase()));\n\n const {\n values,\n setFieldValue,\n setValues,\n submitCount\n } = useFormex<EntityCollection>();\n\n const [jsonImportOpen, setJsonImportOpen] = useState(false);\n\n return (\n <div className={\"overflow-auto my-auto\"}>\n <Container maxWidth={\"4xl\"} className={\"flex flex-col gap-4 p-8 m-auto\"}>\n\n <div\n className=\"flex flex-row py-2 pt-3 items-center\">\n <Typography variant={\"h4\"} className={\"flex-grow\"}>\n New collection\n </Typography>\n </div>\n\n {parentCollection && <Chip colorScheme={\"tealDarker\"}>\n <Typography variant={\"caption\"}>\n This is a subcollection of <b>{parentCollection.name}</b>\n </Typography>\n </Chip>}\n\n {(filteredSuggestions ?? []).length > 0 && <div className={\"my-2\"}>\n\n <Typography variant={\"caption\"}\n color={\"secondary\"}>\n ● Use one of the existing paths in your database:\n </Typography>\n <div className={\"flex flex-wrap gap-x-2 gap-y-1 items-center my-2 min-h-7\"}>\n\n {filteredSuggestions?.map((suggestion, index) => (\n <Chip key={suggestion}\n colorScheme={\"cyanLighter\"}\n onClick={() => {\n setFieldValue(\"name\", prettifyIdentifier(suggestion));\n setFieldValue(\"id\", suggestion);\n setFieldValue(\"path\", suggestion);\n setFieldValue(\"properties\", undefined);\n onContinue();\n }}\n size=\"small\">\n {suggestion}\n </Chip>\n ))}\n\n </div>\n\n </div>}\n <div className=\"flex flex-row gap-8\">\n\n {generateCollection && (\n <div className={\"my-2\"}>\n <Typography variant={\"caption\"}\n color={\"secondary\"}\n className={\"mb-2\"}>\n ● Describe your collection to AI:\n </Typography>\n\n <AICollectionGeneratorPopover\n onGenerated={(generatedCollection) => {\n setValues(generatedCollection);\n onContinue();\n }}\n generateCollection={generateCollection}\n trigger={\n <Button\n variant=\"outlined\"\n startIcon={<AIIcon size=\"small\" />}\n >\n Generate with AI\n </Button>\n }\n />\n </div>\n )}\n\n <div className={\"my-2\"}>\n <Typography variant={\"caption\"}\n color={\"secondary\"}\n className={\"mb-2\"}>\n ● Create from JSON configuration:\n </Typography>\n\n <Button\n variant={\"outlined\"}\n onClick={() => setJsonImportOpen(true)}\n startIcon={<CodeIcon size=\"small\" />}\n >\n Paste JSON Configuration\n </Button>\n\n <CollectionJsonImportDialog\n open={jsonImportOpen}\n onClose={() => setJsonImportOpen(false)}\n onImport={(collection) => {\n setValues(collection);\n onContinue();\n }}\n />\n </div>\n\n\n\n </div>\n\n\n {!parentCollection && <div>\n\n <Typography variant={\"caption\"}\n color={\"secondary\"}\n className={\"mb-2\"}>\n ● Create a collection from a file (csv, json, xls, xslx...)\n </Typography>\n\n <ImportFileUpload onDataAdded={(data, propertiesOrder) => onContinue(data, propertiesOrder)} />\n\n </div>}\n\n <div className={\"my-2\"}>\n <Typography variant={\"caption\"}\n color={\"secondary\"}>\n ● Select a template:\n </Typography>\n\n <div className={\"flex gap-2\"}>\n <TemplateButton title={\"Products\"}\n subtitle={\"A collection of products with images, prices and stock\"}\n icon={<Icon size={\"small\"}\n iconKey={productsCollectionTemplate.icon! as string} />}\n onClick={() => {\n setValues(productsCollectionTemplate);\n onContinue();\n }} />\n <TemplateButton title={\"Users\"}\n subtitle={\"A collection of users with emails, names and roles\"}\n icon={<Icon size={\"small\"} iconKey={usersCollectionTemplate.icon! as string} />}\n onClick={() => {\n setValues(usersCollectionTemplate);\n onContinue();\n }} />\n <TemplateButton title={\"Blog posts\"}\n subtitle={\"A collection of blog posts with images, authors and complex content\"}\n icon={<Icon size={\"small\"} iconKey={blogCollectionTemplate.icon! as string} />}\n onClick={() => {\n setValues(blogCollectionTemplate);\n onContinue();\n }} />\n <TemplateButton title={\"Pages\"}\n subtitle={\"A collection of pages with images, authors and complex content\"}\n icon={<Icon size={\"small\"} iconKey={pagesCollectionTemplate.icon! as string} />}\n onClick={() => {\n setValues(pagesCollectionTemplate);\n onContinue();\n }} />\n </div>\n\n </div>\n\n\n\n </Container>\n </div>\n );\n}\n\nexport function TemplateButton({\n title,\n subtitle,\n icon,\n onClick\n}: {\n title: string,\n icon: React.ReactNode,\n subtitle: string,\n onClick?: () => void\n}) {\n\n return (\n <Tooltip title={subtitle}\n asChild={true}>\n <Card\n onClick={onClick}\n className={cls(\n \"my-2 rounded-md border px-4 py-3 focus:outline-none transition ease-in-out duration-150 flex flex-row gap-4 items-center\",\n \"text-text-secondary dark:text-text-secondary-dark\",\n \"hover:border-primary-dark hover:text-primary-dark dark:hover:text-primary focus:ring-primary hover:ring-1 hover:ring-primary\",\n \"border-surface-400 dark:border-surface-600 \"\n )}\n >\n {icon}\n <div className={\"flex flex-col items-start\"}>\n\n <Typography variant={\"subtitle2\"}>\n {title}\n </Typography>\n\n </div>\n </Card>\n </Tooltip>\n );\n\n}\n","import {\n DataNewPropertiesMapping,\n getInferenceType,\n ImportConfig,\n ImportNewPropertyFieldPreview\n} from \"@firecms/data_import\";\nimport { getIn, useFormex } from \"@firecms/formex\";\n\nimport { getFieldConfig, getFieldId, Properties, Property, PropertyConfig, PropertyConfigBadge, } from \"@firecms/core\";\nimport { cls, Container, Select, SelectItem, Tooltip, Typography } from \"@firecms/ui\";\nimport React, { useState } from \"react\";\nimport { OnPropertyChangedParams, PropertyFormDialog, PropertyWithId } from \"../PropertyEditView\";\nimport { getFullId, idToPropertiesPath, namespaceToPropertiesOrderPath } from \"../util\";\nimport { PersistedCollection } from \"../../../types/persisted_collection\";\nimport { updatePropertyFromWidget } from \"../utils/update_property_for_widget\";\nimport { supportedFields } from \"../utils/supported_fields\";\nimport { buildPropertyFromData } from \"@firecms/schema_inference\";\n\nexport function CollectionEditorImportMapping({\n importConfig,\n propertyConfigs,\n collectionEditable\n }:\n {\n importConfig: ImportConfig,\n propertyConfigs: Record<string, PropertyConfig>,\n collectionEditable: boolean\n }) {\n\n // const {\n // values,\n // setFieldValue,\n // setFieldTouched,\n // setValues,\n // submitCount\n // } = useFormex();\n\n const {\n setFieldValue,\n setFieldTouched,\n values\n } = useFormex<PersistedCollection>();\n const [selectedProperty, setSelectedProperty] = useState<PropertyWithId | undefined>(undefined);\n\n const currentPropertiesOrderRef = React.useRef<{\n [key: string]: string[]\n }>(values.propertiesOrder ? { \"\": values.propertiesOrder } : {});\n\n const propertyKey = selectedProperty ? selectedProperty.id : undefined;\n const property = selectedProperty || undefined;\n\n const onPropertyChanged = ({\n id,\n property,\n previousId,\n namespace\n }: OnPropertyChangedParams) => {\n\n const fullId = id ? getFullId(id, namespace) : undefined;\n const propertyPath = fullId ? idToPropertiesPath(fullId) : undefined;\n\n // setSelectedProperty(property);\n const getCurrentPropertiesOrder = (namespace?: string) => {\n if (!namespace) return currentPropertiesOrderRef.current[\"\"];\n return currentPropertiesOrderRef.current[namespace] ?? getIn(values, namespaceToPropertiesOrderPath(namespace));\n }\n\n const updatePropertiesOrder = (newPropertiesOrder: string[], namespace?: string) => {\n const propertiesOrderPath = namespaceToPropertiesOrderPath(namespace);\n\n setFieldValue(propertiesOrderPath, newPropertiesOrder, false);\n currentPropertiesOrderRef.current[namespace ?? \"\"] = newPropertiesOrder;\n\n };\n\n // If the id has changed we need to a little cleanup\n if (previousId && previousId !== id) {\n const previousFullId = getFullId(previousId, namespace);\n const previousPropertyPath = idToPropertiesPath(previousFullId);\n\n const currentPropertiesOrder = getCurrentPropertiesOrder(namespace);\n\n // replace previousId with id in propertiesOrder\n const newPropertiesOrder = currentPropertiesOrder\n .map((p) => p === previousId ? id : p)\n .filter((p) => p !== undefined) as string[];\n updatePropertiesOrder(newPropertiesOrder, namespace);\n\n // replace previousId with id in headersMapping\n const newHeadersMapping = { ...importConfig.headersMapping };\n Object.keys(newHeadersMapping).forEach((key) => {\n if (newHeadersMapping[key] === previousId) {\n newHeadersMapping[key] = id ?? \"\";\n }\n });\n importConfig.setHeadersMapping(newHeadersMapping);\n\n // if (id) {\n // setSelectedPropertyIndex(newPropertiesOrder.indexOf(id));\n // setSelectedPropertyKey(id);\n // }\n setFieldValue(previousPropertyPath, undefined, false);\n setFieldTouched(previousPropertyPath, false, false);\n }\n\n if (propertyPath) {\n setFieldValue(propertyPath, property, false);\n setFieldTouched(propertyPath, true, false);\n }\n };\n const onPropertyTypeChanged = async ({\n id,\n importKey,\n property,\n namespace\n }: OnPropertyChangedParams & {\n importKey: string\n }) => {\n\n const fullId = id ? getFullId(id, namespace) : undefined;\n const propertyPath = fullId ? idToPropertiesPath(fullId) : undefined;\n\n // we try to infer the rest of the properties of a property, from the type and the data\n const propertyData = importConfig.importData.map((d) => getIn(d, importKey));\n const inferredNewProperty = {\n ...buildPropertyFromData(propertyData, property, getInferenceType),\n editable: true\n };\n\n if (propertyPath) {\n if (inferredNewProperty) {\n setFieldValue(propertyPath, inferredNewProperty, false);\n } else {\n setFieldValue(propertyPath, property, false);\n }\n setFieldTouched(propertyPath, true, false);\n }\n };\n\n return (\n\n <div className={\"overflow-auto my-auto\"}>\n <Container maxWidth={\"6xl\"} className={\"flex flex-col gap-4 p-8 m-auto\"}>\n\n <Typography variant=\"h6\" className={\"my-4 ml-3.5\"}>Data property mapping</Typography>\n\n <DataNewPropertiesMapping importConfig={importConfig}\n destinationProperties={values.properties as Properties}\n buildPropertyView={({\n property,\n propertyKey,\n importKey,\n isIdColumn\n }) => {\n if (isIdColumn) {\n return <Typography> This column will be used as ID</Typography>\n }\n\n return <ImportNewPropertyFieldPreview\n property={property}\n propertyKey={propertyKey}\n onPropertyNameChanged={(propertyKey: string, value: string) => setFieldValue(`properties.${propertyKey}.name`, value, false)}\n onEditClick={() => {\n if (!propertyKey || !property) return;\n setSelectedProperty({\n ...property,\n id: propertyKey,\n editable: true\n });\n }}\n propertyTypeView={<PropertySelect property={property}\n disabled={false}\n onPropertyChanged={(props) => onPropertyTypeChanged({\n ...props,\n importKey\n })}\n propertyKey={propertyKey}\n propertyConfigs={propertyConfigs}/>}\n />;\n }}/>\n </Container>\n\n <PropertyFormDialog\n open={selectedProperty !== undefined}\n propertyKey={propertyKey}\n property={property}\n inArray={false}\n autoUpdateId={false}\n onPropertyChanged={onPropertyChanged}\n allowDataInference={false}\n collectionEditable={collectionEditable}\n onOkClicked={() => {\n setSelectedProperty(undefined);\n }}\n onCancel={() => {\n setSelectedProperty(undefined);\n }}\n autoOpenTypeSelect={false}\n existingProperty={false}\n propertyConfigs={propertyConfigs}/>\n\n <div style={{ height: \"52px\" }}/>\n </div>\n );\n\n}\n\nfunction PropertySelect({\n property,\n onPropertyChanged,\n propertyKey,\n propertyConfigs,\n disabled\n }: {\n property: Property | null,\n propertyKey: string | null,\n onPropertyChanged: ({\n id,\n property,\n previousId,\n namespace\n }: OnPropertyChangedParams) => void,\n propertyConfigs: Record<string, PropertyConfig>,\n disabled?: boolean\n}) {\n\n const fieldId = property ? getFieldId(property) : null;\n const widget = property ? getFieldConfig(property, propertyConfigs) : null;\n\n const [selectOpen, setSelectOpen] = useState(false);\n\n return <Tooltip title={property && widget ? `${widget?.name} - ${property.dataType}` : undefined}\n open={selectOpen ? false : undefined}>\n <Select\n open={selectOpen}\n onOpenChange={setSelectOpen}\n invisible={true}\n size={\"large\"}\n className={\"w-full\"}\n disabled={disabled}\n error={!widget}\n fullWidth={true}\n value={fieldId ?? \"\"}\n placeholder={\"Select a property widget\"}\n position={\"item-aligned\"}\n renderValue={(value) => {\n if (!widget) return null;\n return <PropertyConfigBadge propertyConfig={widget}/>\n }}\n onValueChange={(newSelectedWidgetId) => {\n const newProperty = updatePropertyFromWidget(property, newSelectedWidgetId, propertyConfigs)\n if (!propertyKey) return;\n onPropertyChanged({\n id: propertyKey,\n property: newProperty,\n previousId: propertyKey,\n namespace: undefined\n });\n }}>\n {Object.entries(supportedFields).map(([key, widget]) => {\n return <PropertySelectItem\n key={key}\n value={key}\n optionDisabled={false}\n propertyConfig={widget}\n existing={false}/>;\n })\n }\n </Select>\n </Tooltip>;\n}\n\nexport interface PropertySelectItemProps {\n value: string;\n optionDisabled: boolean;\n propertyConfig: PropertyConfig;\n existing: boolean;\n}\n\nexport function PropertySelectItem({ value, optionDisabled, propertyConfig, existing }: PropertySelectItemProps) {\n return <SelectItem value={value}\n disabled={optionDisabled}\n className={\"flex flex-row items-center\"}>\n <div\n className={cls(\n \"flex flex-row items-center text-base min-h-[48px]\",\n optionDisabled ? \"w-full\" : \"\")}>\n <div className={\"mr-8\"}>\n <PropertyConfigBadge propertyConfig={propertyConfig}/>\n </div>\n <div>\n <div>{propertyConfig.name}</div>\n <Typography variant={\"caption\"}\n color={\"disabled\"}\n className={\"max-w-sm\"}>\n {existing && optionDisabled ? \"You can only switch to widgets that use the same data type\" : propertyConfig.description}\n </Typography>\n </div>\n </div>\n </SelectItem>\n}\n","import { convertDataToEntity, ImportConfig } from \"@firecms/data_import\";\nimport {\n CircularProgressCenter,\n EntityCollectionTable,\n Properties,\n useAuthController,\n useNavigationController,\n useSelectionController\n} from \"@firecms/core\";\nimport { useEffect, useState } from \"react\";\nimport { Typography } from \"@firecms/ui\";\n\nexport function CollectionEditorImportDataPreview({\n importConfig,\n properties,\n propertiesOrder\n }: {\n importConfig: ImportConfig,\n properties: Properties,\n propertiesOrder: string[]\n}) {\n\n const authController = useAuthController();\n const navigation = useNavigationController();\n const [loading, setLoading] = useState<boolean>(false);\n\n async function loadEntities() {\n const mappedData = importConfig.importData.map(d => convertDataToEntity(authController,\n navigation,\n d,\n importConfig.idColumn,\n importConfig.headersMapping,\n properties,\n \"TEMP_PATH\",\n importConfig.defaultValues));\n importConfig.setEntities(mappedData);\n }\n\n useEffect(() => {\n loadEntities().finally(() => setLoading(false));\n }, []);\n\n const selectionController = useSelectionController();\n if (loading)\n return <CircularProgressCenter/>\n\n return <EntityCollectionTable\n title={<div>\n <Typography variant={\"subtitle2\"}>Imported data preview</Typography>\n <Typography variant={\"caption\"}>Entities with the same id will be overwritten</Typography>\n </div>}\n tableController={{\n data: importConfig.entities,\n dataLoading: false,\n noMoreToLoad: false\n }}\n endAdornment={<div className={\"h-12\"}/>}\n filterable={false}\n sortable={false}\n selectionController={selectionController}\n displayedColumnIds={propertiesOrder.map(p => ({\n key: p,\n disabled: false\n }))}\n openEntityMode={\"side_panel\"}\n properties={properties}\n enablePopupIcon={false}/>\n\n}\n","import { Properties, slugify } from \"@firecms/core\";\nimport { ImportConfig } from \"@firecms/data_import\";\n\nexport function cleanPropertiesFromImport(properties: Properties, parentSlug = \"\"): {\n headersMapping: ImportConfig[\"headersMapping\"],\n properties: Properties,\n idColumn?: ImportConfig[\"idColumn\"],\n} {\n\n const result = Object.keys(properties).reduce((acc, key) => {\n const property = properties[key];\n const slug = slugify(key);\n const fullSlug = parentSlug ? `${parentSlug}.${slug}` : slug;\n\n if (property.dataType === \"map\" && property.properties) {\n const slugifiedResult = cleanPropertiesFromImport(property.properties as Properties, fullSlug);\n return {\n headersMapping: { ...acc.headersMapping, [key]: fullSlug },\n properties: {\n ...acc.properties,\n [slug]: {\n ...property,\n properties: slugifiedResult.properties,\n propertiesOrder: Object.keys(slugifiedResult.properties)\n }\n }\n }\n }\n\n const updatedProperties = {\n ...acc.properties,\n [slug]: property\n } as Properties;\n\n const headersMapping = { ...acc.headersMapping, [key]: fullSlug } as Record<string, string>;\n\n return {\n headersMapping,\n properties: updatedProperties,\n }\n }, { headersMapping: {}, properties: {} });\n\n const firstKey = Object.keys(result.headersMapping)?.[0];\n let idColumn: string | undefined;\n if (firstKey?.includes(\"id\") || firstKey?.includes(\"key\")) {\n idColumn = firstKey;\n }\n\n return {\n ...result,\n idColumn\n };\n}\n","import * as React from \"react\";\nimport { useEffect, useRef, useState } from \"react\";\nimport {\n CircularProgressCenter,\n ConfirmationDialog,\n Entity,\n EntityCollection,\n ErrorView,\n isPropertyBuilder,\n MapProperty,\n mergeDeep,\n NavigationResult,\n Properties,\n PropertiesOrBuilders,\n Property,\n PropertyConfig,\n PropertyOrBuilder,\n randomString,\n removeInitialAndTrailingSlashes,\n removeUndefined,\n useAuthController,\n useCustomizationController,\n useNavigationController,\n User,\n useSnackbarController\n} from \"@firecms/core\";\nimport {\n ArrowBackIcon,\n Button,\n CheckIcon,\n cls,\n coolIconKeys,\n defaultBorderMixin,\n Dialog,\n DialogActions,\n DialogContent,\n DialogTitle,\n IconButton,\n LoadingButton,\n Tab,\n Tabs,\n Typography\n} from \"@firecms/ui\";\nimport { YupSchema } from \"./CollectionYupValidation\";\nimport { GeneralSettingsForm } from \"./GeneralSettingsForm\";\nimport { DisplaySettingsForm } from \"./DisplaySettingsForm\";\nimport { CollectionPropertiesEditorForm } from \"./CollectionPropertiesEditorForm\";\nimport { UnsavedChangesDialog } from \"./UnsavedChangesDialog\";\nimport { ExtendSettingsForm } from \"./ExtendSettingsForm\";\nimport { CollectionsConfigController } from \"../../types/config_controller\";\nimport { CollectionEditorWelcomeView } from \"./CollectionEditorWelcomeView\";\nimport { CollectionInference } from \"../../types/collection_inference\";\nimport { getInferenceType, ImportSaveInProgress, useImportConfig } from \"@firecms/data_import\";\nimport { buildEntityPropertiesFromData } from \"@firecms/schema_inference\";\nimport { CollectionEditorImportMapping } from \"./import/CollectionEditorImportMapping\";\nimport { CollectionEditorImportDataPreview } from \"./import/CollectionEditorImportDataPreview\";\nimport { cleanPropertiesFromImport } from \"./import/clean_import_data\";\nimport { PersistedCollection } from \"../../types/persisted_collection\";\nimport { Formex, FormexController, useCreateFormex } from \"@firecms/formex\";\nimport { getFullIdPath } from \"./util\";\nimport { AICollectionGeneratorPopover } from \"./AICollectionGeneratorPopover\";\nimport { AIModifiedPathsProvider, useAIModifiedPaths } from \"./AIModifiedPathsContext\";\nimport { CollectionOperation, CollectionGenerationCallback } from \"../../api/generateCollectionApi\";\n\nexport interface CollectionEditorDialogProps {\n open: boolean;\n isNewCollection: boolean;\n initialValues?: {\n group?: string,\n path?: string,\n name?: string,\n }\n /**\n * A collection to duplicate from. If provided, the new collection will be\n * pre-populated with the same properties (but with empty name, path, and id).\n */\n copyFrom?: PersistedCollection;\n editedCollectionId?: string;\n fullPath?: string; // full path of this particular collection, like `products/123/locales`\n parentCollectionIds?: string[]; // path ids of the parent collection, like [`products`]\n handleClose: (collection?: EntityCollection) => void;\n configController: CollectionsConfigController;\n reservedGroups?: string[];\n collectionInference?: CollectionInference;\n extraView?: {\n View: React.ComponentType<{\n path: string\n }>,\n icon: React.ReactNode\n };\n getUser?: (uid: string) => User | null;\n getData?: (path: string, parentPaths: string[]) => Promise<object[]>;\n parentCollection?: PersistedCollection;\n existingEntities?: Entity<any>[];\n /**\n * Initial view to open when editing: \"general\", \"display\", or \"properties\".\n * For new collections, this is ignored.\n */\n initialView?: \"general\" | \"display\" | \"properties\";\n /**\n * If true, auto-expand the Kanban configuration section.\n */\n expandKanban?: boolean;\n /**\n * Callback function for generating/modifying collections.\n * The plugin is API-agnostic - the consumer provides the implementation.\n */\n generateCollection?: CollectionGenerationCallback;\n}\n\nexport function CollectionEditorDialog(props: CollectionEditorDialogProps) {\n\n const open = props.open;\n\n const [formDirty, setFormDirty] = React.useState<boolean>(false);\n const [unsavedChangesDialogOpen, setUnsavedChangesDialogOpen] = React.useState<boolean>(false);\n\n const handleCancel = () => {\n if (!formDirty) {\n props.handleClose(undefined);\n } else {\n setUnsavedChangesDialogOpen(true);\n }\n };\n\n useEffect(() => {\n if (!open) {\n setFormDirty(false);\n setUnsavedChangesDialogOpen(false);\n }\n }, [open]);\n\n return (\n <Dialog\n open={open}\n fullWidth={true}\n fullHeight={true}\n scrollable={false}\n maxWidth={\"7xl\"}\n onOpenChange={(open) => !open ? handleCancel() : undefined}\n >\n <DialogTitle hidden>Collection editor</DialogTitle>\n <AIModifiedPathsProvider>\n {open && <CollectionEditor {...props}\n handleCancel={handleCancel}\n setFormDirty={setFormDirty} />}\n\n <UnsavedChangesDialog\n open={unsavedChangesDialogOpen}\n handleOk={() => props.handleClose(undefined)}\n handleCancel={() => setUnsavedChangesDialogOpen(false)}\n body={\"There are unsaved changes in this collection\"} />\n </AIModifiedPathsProvider>\n </Dialog>\n );\n}\n\ntype EditorView = \"welcome\"\n | \"general\"\n | \"display\"\n | \"import_data_mapping\"\n | \"import_data_preview\"\n | \"import_data_saving\"\n | \"properties\"\n | \"loading\"\n | \"extra_view\"\n | \"extend\";\n\nexport function CollectionEditor(props: CollectionEditorDialogProps & {\n handleCancel: () => void,\n setFormDirty: (dirty: boolean) => void\n}) {\n const { propertyConfigs } = useCustomizationController();\n const navigation = useNavigationController();\n const authController = useAuthController();\n\n const {\n topLevelNavigation,\n collections\n } = navigation;\n\n const initialValuesProp = props.initialValues;\n const copyFromProp = props.copyFrom;\n // Skip templates when duplicating (copyFrom is provided)\n const includeTemplates = !copyFromProp && !initialValuesProp?.path && (props.parentCollectionIds ?? []).length === 0;\n const collectionsInThisLevel = (props.parentCollection ? props.parentCollection.subcollections : collections) ?? [];\n const existingPaths = collectionsInThisLevel.map(col => col.path.trim().toLowerCase());\n const existingIds = collectionsInThisLevel.map(col => col.id?.trim().toLowerCase()).filter(Boolean) as string[];\n const [collection, setCollection] = React.useState<PersistedCollection<any> | undefined>();\n const [initialLoadingCompleted, setInitialLoadingCompleted] = React.useState(false);\n\n useEffect(() => {\n try {\n if (navigation.initialised) {\n if (props.editedCollectionId) {\n setCollection(navigation.getCollectionFromPaths([...(props.parentCollectionIds ?? []), props.editedCollectionId]));\n } else {\n setCollection(undefined);\n }\n setInitialLoadingCompleted(true);\n }\n } catch (e) {\n console.error(e);\n }\n }, [props.editedCollectionId, props.parentCollectionIds, navigation.initialised, navigation.getCollectionFromPaths]);\n\n if (!topLevelNavigation) {\n throw Error(\"Internal: Navigation not ready in collection editor\");\n }\n\n const {\n groups\n }: NavigationResult = topLevelNavigation;\n\n const initialCollection = collection\n ? {\n ...collection,\n id: collection.id ?? collection.path ?? randomString(16)\n }\n : undefined;\n\n // Build initial values - handle copyFrom for duplication\n const initialValues: PersistedCollection<any> = initialCollection\n ? applyPropertyConfigs(initialCollection, propertyConfigs)\n : copyFromProp\n ? {\n // When duplicating, copy all properties but clear identifiers\n ...copyFromProp,\n id: randomString(16),\n path: \"\",\n name: \"\",\n subcollections: undefined, // Don't copy subcollections\n ownerId: authController.user?.uid ?? \"\"\n }\n : {\n id: initialValuesProp?.path ?? randomString(16),\n path: initialValuesProp?.path ?? \"\",\n name: initialValuesProp?.name ?? \"\",\n group: initialValuesProp?.group ?? \"\",\n properties: {} as PropertiesOrBuilders,\n propertiesOrder: [],\n icon: coolIconKeys[Math.floor(Math.random() * coolIconKeys.length)],\n ownerId: authController.user?.uid ?? \"\"\n };\n\n if (!initialLoadingCompleted) {\n return <CircularProgressCenter />;\n }\n\n if (!props.isNewCollection && (!navigation.initialised || !initialLoadingCompleted)) {\n return <CircularProgressCenter />;\n }\n\n return <CollectionEditorInternal\n {...props}\n initialValues={initialValues}\n existingPaths={existingPaths}\n existingIds={existingIds}\n includeTemplates={includeTemplates}\n collection={collection}\n setCollection={setCollection}\n groups={groups}\n propertyConfigs={propertyConfigs} />\n\n}\n\nfunction CollectionEditorInternal<M extends Record<string, any>>({\n isNewCollection,\n configController,\n editedCollectionId,\n parentCollectionIds,\n fullPath,\n collectionInference,\n handleClose,\n reservedGroups,\n extraView,\n handleCancel,\n setFormDirty,\n getUser,\n parentCollection,\n getData,\n existingPaths,\n existingIds,\n includeTemplates,\n collection,\n setCollection,\n initialValues,\n propertyConfigs,\n groups,\n existingEntities,\n initialView: initialViewProp,\n expandKanban,\n generateCollection\n}: CollectionEditorDialogProps & {\n handleCancel: () => void,\n setFormDirty: (dirty: boolean) => void,\n initialValues: PersistedCollection<M>,\n existingPaths: string[],\n existingIds: string[],\n includeTemplates: boolean,\n collection: PersistedCollection<M> | undefined,\n setCollection: (collection: PersistedCollection<M>) => void,\n propertyConfigs: Record<string, PropertyConfig<any>>,\n groups: string[],\n}\n) {\n\n const importConfig = useImportConfig();\n const navigation = useNavigationController();\n const snackbarController = useSnackbarController();\n\n // Use this ref to store which properties have errors\n const propertyErrorsRef = useRef({});\n\n const initialView = isNewCollection\n ? (includeTemplates ? \"welcome\" : \"general\")\n : (initialViewProp ?? \"properties\");\n const [currentView, setCurrentView] = useState<EditorView>(initialView); // this view can edit either the details view or the properties one\n\n const [error, setError] = React.useState<Error | undefined>();\n\n const saveCollection = (updatedCollection: PersistedCollection<M>): Promise<boolean> => {\n const id = updatedCollection.id || updatedCollection.path;\n\n return configController.saveCollection({\n id,\n collectionData: updatedCollection,\n previousId: editedCollectionId,\n parentCollectionIds\n })\n .then(() => {\n setError(undefined);\n return true;\n })\n .catch((e) => {\n setError(e);\n console.error(e);\n snackbarController.open({\n type: \"error\",\n message: \"Error persisting collection: \" + (e.message ?? \"Details in the console\")\n });\n return false;\n });\n };\n\n const setNextMode = () => {\n if (currentView === \"general\") {\n if (importConfig.inUse) {\n setCurrentView(\"import_data_saving\");\n } else if (extraView) {\n setCurrentView(\"extra_view\");\n } else {\n setCurrentView(\"properties\");\n }\n } else if (currentView === \"welcome\") {\n setCurrentView(\"general\");\n } else if (currentView === \"import_data_mapping\") {\n setCurrentView(\"import_data_preview\");\n } else if (currentView === \"import_data_preview\") {\n setCurrentView(\"general\");\n } else if (currentView === \"extra_view\") {\n setCurrentView(\"properties\");\n } else {\n setCurrentView(\"general\");\n }\n\n };\n\n const doCollectionInference = collectionInference ? (collection: PersistedCollection<any>) => {\n if (!collectionInference) return undefined;\n return collectionInference?.(\n collection.path,\n collection.collectionGroup ?? false,\n parentPaths ?? [],\n collection.databaseId,\n collection.initialFilter,\n collection.initialSort\n );\n } : undefined;\n\n const inferCollectionFromData = async (newCollection: PersistedCollection<M>) => {\n\n try {\n if (!doCollectionInference) {\n setCollection(newCollection);\n return Promise.resolve(newCollection);\n }\n\n setCurrentView(\"loading\");\n\n const inferredCollection = await doCollectionInference?.(newCollection);\n\n if (!inferredCollection) {\n setCollection(newCollection);\n return Promise.resolve(newCollection);\n }\n const values = {\n ...(newCollection ?? {})\n };\n\n if (Object.keys(inferredCollection.properties ?? {}).length > 0) {\n values.properties = inferredCollection.properties as PropertiesOrBuilders<M>;\n values.propertiesOrder = inferredCollection.propertiesOrder as Extract<keyof M, string>[];\n }\n\n if (!values.propertiesOrder) {\n values.propertiesOrder = Object.keys(values.properties) as Extract<keyof M, string>[];\n return values;\n }\n\n setCollection(values);\n console.debug(\"Inferred collection\", {\n newCollection: newCollection ?? {},\n values\n });\n return values;\n } catch (e: any) {\n console.error(e);\n snackbarController.open({\n type: \"error\",\n message: \"Error inferring collection: \" + (e.message ?? \"Details in the console\")\n });\n return newCollection;\n }\n };\n\n const onSubmit = (newCollectionState: PersistedCollection<M>, formexController: FormexController<PersistedCollection<M>>) => {\n console.debug(\"Submitting collection\", newCollectionState);\n try {\n\n if (!isNewCollection) {\n saveCollection(newCollectionState).then(() => {\n aiModifiedPaths?.clearAllPaths();\n formexController.resetForm();\n handleClose(newCollectionState);\n });\n return;\n }\n\n if (currentView === \"welcome\") {\n setNextMode();\n formexController.resetForm({ values: newCollectionState });\n } else if (currentView === \"general\") {\n if (extraView || importConfig.inUse) {\n formexController.resetForm({ values: newCollectionState });\n setNextMode();\n } else if (isNewCollection) {\n inferCollectionFromData(newCollectionState)\n .then((values) => {\n formexController.resetForm({\n values: values ?? newCollectionState,\n touched: {\n path: true,\n name: true\n }\n });\n }).finally(() => {\n setNextMode();\n });\n } else {\n formexController.resetForm({ values: newCollectionState });\n setNextMode();\n }\n } else if (currentView === \"extra_view\") {\n setNextMode();\n formexController.resetForm({ values: newCollectionState });\n } else if (currentView === \"import_data_mapping\") {\n setNextMode();\n } else if (currentView === \"import_data_preview\") {\n setNextMode();\n } else if (currentView === \"properties\") {\n saveCollection(newCollectionState).then(() => {\n formexController.resetForm({ values: initialValues });\n setNextMode();\n handleClose(newCollectionState);\n });\n } else {\n setNextMode();\n formexController.resetForm({ values: newCollectionState });\n }\n } catch (e: any) {\n snackbarController.open({\n type: \"error\",\n message: \"Error persisting collection: \" + (e.message ?? \"Details in the console\")\n });\n console.error(e);\n formexController.resetForm({ values: newCollectionState });\n }\n };\n\n const validation = (col: PersistedCollection) => {\n\n let errors: Record<string, any> = {};\n const schema = (currentView === \"properties\" || currentView === \"extend\" || currentView === \"general\") && YupSchema;\n if (schema) {\n try {\n schema.validateSync(col, { abortEarly: false });\n } catch (e: any) {\n e.inner.forEach((err: any) => {\n errors[err.path] = err.message;\n });\n }\n }\n if (currentView === \"properties\") {\n errors = { ...errors, ...propertyErrorsRef.current };\n }\n if (currentView === \"general\") {\n const pathError = validatePath(col.path, isNewCollection, existingPaths, col.id);\n if (pathError) {\n errors.path = pathError;\n }\n const idError = validateId(col.id, isNewCollection, existingPaths, existingIds);\n if (idError) {\n errors.id = idError;\n }\n }\n return errors;\n };\n\n const formController = useCreateFormex<PersistedCollection<M>>({\n initialValues,\n onSubmit,\n validation,\n debugId: \"COLLECTION_EDITOR\"\n });\n\n const {\n values,\n setFieldValue,\n isSubmitting,\n dirty,\n submitCount\n } = formController;\n\n const path = values.path;\n const updatedFullPath = fullPath?.includes(\"/\") ? fullPath?.split(\"/\").slice(0, -1).join(\"/\") + \"/\" + path : path; // TODO: this path is wrong\n const pathError = validatePath(path, isNewCollection, existingPaths, values.id);\n\n const parentPaths = !pathError && parentCollectionIds ? navigation.convertIdsToPaths(parentCollectionIds) : undefined;\n const resolvedPath = !pathError ? navigation.resolveIdsFrom(updatedFullPath) : undefined;\n\n const getDataWithPath = resolvedPath && getData ? async () => {\n const data = await getData!(resolvedPath, parentPaths ?? []);\n if (existingEntities) {\n const existingData = existingEntities.map(e => e.values);\n data.push(...existingData);\n }\n return data;\n } : undefined;\n\n useEffect(() => {\n setFormDirty(dirty);\n }, [dirty]);\n\n function onImportDataSet(data: object[], propertiesOrder?: string[]) {\n importConfig.setInUse(true);\n buildEntityPropertiesFromData(data, getInferenceType)\n .then((properties: Properties) => {\n const res = cleanPropertiesFromImport(properties);\n\n importConfig.setIdColumn(res.idColumn);\n importConfig.setImportData(data);\n importConfig.setHeadersMapping(res.headersMapping);\n const filteredHeadingsOrder = ((propertiesOrder ?? [])\n .filter((key) => res.headersMapping[key]) as string[]) ?? Object.keys(res.properties);\n importConfig.setHeadingsOrder(filteredHeadingsOrder);\n importConfig.setOriginProperties(res.properties);\n\n const mappedHeadings = (propertiesOrder ?? []).map((key) => res.headersMapping[key]).filter(Boolean) as string[] ?? Object.keys(res.properties);\n setFieldValue(\"properties\", res.properties);\n setFieldValue(\"propertiesOrder\", mappedHeadings);\n });\n }\n\n const validValues = Boolean(values.name) && Boolean(values.id);\n\n const onImportMappingComplete = () => {\n const updatedProperties = { ...values.properties };\n if (importConfig.idColumn)\n delete updatedProperties[importConfig.idColumn];\n setFieldValue(\"properties\", updatedProperties);\n // setFieldValue(\"propertiesOrder\", Object.values(importConfig.headersMapping));\n setNextMode();\n };\n\n const editable = collection?.editable === undefined || collection?.editable === true;\n // @ts-ignore\n const isMergedCollection = collection?.merged ?? false;\n const collectionEditable = editable || isNewCollection;\n\n const [deleteRequested, setDeleteRequested] = useState(false);\n\n const deleteCollection = () => {\n if (!collection) return;\n configController?.deleteCollection({ id: collection.id }).then(() => {\n setDeleteRequested(false);\n handleCancel();\n snackbarController.open({\n message: \"Collection deleted\",\n type: \"success\"\n });\n });\n };\n\n const onWelcomeScreenContinue = (importData?: object[], propertiesOrder?: string[]) => {\n if (importData) {\n onImportDataSet(importData, propertiesOrder);\n setCurrentView(\"import_data_mapping\");\n } else {\n setCurrentView(\"general\");\n }\n };\n\n const aiModifiedPaths = useAIModifiedPaths();\n\n const handleAIGenerated = (generatedCollection: EntityCollection, operations?: CollectionOperation[]) => {\n formController.setValues(generatedCollection as PersistedCollection<M>);\n if (operations && aiModifiedPaths) {\n aiModifiedPaths.addModifiedPaths(operations);\n }\n };\n\n return <DialogContent fullHeight={true}>\n <Formex value={formController}>\n\n <>\n {!isNewCollection && <div className={cls(\"px-4 py-2 w-full flex items-center justify-end gap-2 bg-surface-50 dark:bg-surface-950 border-b\", defaultBorderMixin)}>\n {generateCollection && (\n <AICollectionGeneratorPopover\n existingCollection={values}\n onGenerated={handleAIGenerated}\n generateCollection={generateCollection}\n />\n )}\n <Tabs value={currentView}\n onValueChange={(v) => setCurrentView(v as EditorView)}>\n <Tab value={\"general\"}>\n General\n </Tab>\n <Tab value={\"display\"}>\n Display\n </Tab>\n <Tab value={\"properties\"}>\n Properties\n </Tab>\n <Tab value={\"extend\"}>\n Extend\n </Tab>\n </Tabs>\n </div>}\n\n <form noValidate\n onSubmit={formController.handleSubmit}\n className={cls(\n isNewCollection ? \"h-full\" : \"h-[calc(100%-48px)]\",\n \"flex-grow flex flex-col relative\")}>\n\n {currentView === \"loading\" &&\n <CircularProgressCenter />}\n\n {currentView === \"extra_view\" &&\n path &&\n extraView?.View &&\n <extraView.View path={path} />}\n\n {currentView === \"welcome\" &&\n <CollectionEditorWelcomeView\n path={path}\n onContinue={onWelcomeScreenContinue}\n existingCollectionPaths={existingPaths}\n parentCollection={parentCollection}\n generateCollection={generateCollection} />}\n\n {currentView === \"import_data_mapping\" && importConfig &&\n <CollectionEditorImportMapping importConfig={importConfig}\n collectionEditable={collectionEditable}\n propertyConfigs={propertyConfigs} />}\n\n {currentView === \"import_data_preview\" && importConfig &&\n <CollectionEditorImportDataPreview importConfig={importConfig}\n properties={values.properties as Properties}\n propertiesOrder={values.propertiesOrder as string[]} />}\n\n {currentView === \"import_data_saving\" && importConfig &&\n <ImportSaveInProgress importConfig={importConfig}\n collection={values}\n path={path}\n onImportSuccess={async (importedCollection) => {\n snackbarController.open({\n type: \"info\",\n message: \"Data imported successfully\"\n });\n await saveCollection(values);\n handleClose(importedCollection);\n }}\n />}\n\n {currentView === \"general\" &&\n <GeneralSettingsForm\n existingPaths={existingPaths}\n existingIds={existingIds}\n parentCollection={parentCollection}\n isNewCollection={isNewCollection} />\n }\n\n {currentView === \"display\" &&\n <DisplaySettingsForm expandKanban={expandKanban} />\n }\n\n {currentView === \"extend\" && collection &&\n <ExtendSettingsForm\n collection={collection}\n parentCollection={parentCollection}\n configController={configController}\n collectionInference={collectionInference}\n getUser={getUser}\n parentCollectionIds={parentCollectionIds}\n isMergedCollection={!isNewCollection && isMergedCollection}\n onResetToCode={() => setDeleteRequested(true)} />\n }\n\n {currentView === \"properties\" &&\n <CollectionPropertiesEditorForm\n showErrors={submitCount > 0}\n isNewCollection={isNewCollection}\n reservedGroups={reservedGroups}\n onPropertyError={(propertyKey, namespace, error) => {\n const current = removeUndefined({\n ...propertyErrorsRef.current,\n [getFullIdPath(propertyKey, namespace)]: removeUndefined(error, true)\n }, true);\n propertyErrorsRef.current = current;\n formController.validate();\n }}\n getUser={getUser}\n getData={getDataWithPath}\n doCollectionInference={doCollectionInference}\n propertyConfigs={propertyConfigs}\n collectionEditable={collectionEditable}\n extraIcon={extraView?.icon &&\n <IconButton\n color={\"primary\"}\n onClick={() => setCurrentView(\"extra_view\")}>\n {extraView.icon}\n </IconButton>} />\n }\n\n <DialogActions\n position={\"absolute\"}>\n {error && <ErrorView error={error} />}\n\n {isNewCollection && includeTemplates && currentView === \"import_data_mapping\" &&\n <Button variant={\"text\"}\n type=\"button\"\n onClick={() => {\n importConfig.setInUse(false);\n return setCurrentView(\"welcome\");\n }}>\n Back\n </Button>}\n\n {isNewCollection && includeTemplates && currentView === \"import_data_preview\" &&\n <Button variant={\"text\"}\n type=\"button\"\n onClick={() => {\n setCurrentView(\"import_data_mapping\");\n }}>\n Back\n </Button>}\n\n {isNewCollection && includeTemplates && currentView === \"general\" &&\n <Button variant={\"text\"}\n type=\"button\"\n onClick={() => setCurrentView(\"welcome\")}>\n Back\n </Button>}\n\n {isNewCollection && currentView === \"properties\" && <Button variant={\"text\"}\n type=\"button\"\n color={\"neutral\"}\n onClick={() => setCurrentView(\"general\")}>\n <ArrowBackIcon />\n Back\n </Button>}\n\n <Button variant={\"text\"}\n color={\"neutral\"}\n onClick={() => {\n handleCancel();\n }}>\n Cancel\n </Button>\n\n {currentView === \"welcome\" &&\n <Button variant={\"text\"} onClick={() => onWelcomeScreenContinue()}>\n Continue from scratch\n </Button>}\n\n {isNewCollection && currentView === \"import_data_mapping\" &&\n <Button\n variant={\"filled\"}\n color=\"primary\"\n onClick={onImportMappingComplete}\n >\n Next\n </Button>}\n\n {isNewCollection && currentView === \"import_data_preview\" &&\n <Button\n variant={\"filled\"}\n color=\"primary\"\n onClick={() => {\n setNextMode();\n }}\n >\n Next\n </Button>}\n\n {isNewCollection && (currentView === \"general\" || currentView === \"properties\") &&\n <LoadingButton\n variant={\"filled\"}\n color=\"primary\"\n type=\"submit\"\n loading={isSubmitting}\n disabled={isSubmitting || (currentView === \"general\" && !validValues)}\n startIcon={currentView === \"properties\"\n ? <CheckIcon />\n : undefined}\n >\n {currentView === \"general\" && \"Next\"}\n {currentView === \"properties\" && \"Create collection\"}\n </LoadingButton>}\n\n {!isNewCollection && <LoadingButton\n variant=\"filled\"\n color=\"primary\"\n type=\"submit\"\n loading={isSubmitting}\n >\n Update collection\n </LoadingButton>}\n\n </DialogActions>\n </form>\n </>\n\n </Formex>\n\n <ConfirmationDialog\n open={deleteRequested}\n onAccept={deleteCollection}\n onCancel={() => setDeleteRequested(false)}\n title={<>Delete the stored config?</>}\n body={<> This will <b>not\n delete any data</b>, only\n the stored config, and reset to the code state.</>} />\n\n </DialogContent>\n\n}\n\nfunction applyPropertyConfigs<M extends Record<string, any> = any>(collection: PersistedCollection<M>, propertyConfigs: Record<string, PropertyConfig<any>>): PersistedCollection<M> {\n const {\n properties,\n ...rest\n } = collection;\n const propertiesResult: PropertiesOrBuilders<any> = {};\n if (properties) {\n Object.keys(properties).forEach((key) => {\n propertiesResult[key] = applyPropertiesConfig(properties[key] as PropertyOrBuilder, propertyConfigs);\n });\n }\n\n return {\n ...rest,\n properties: propertiesResult\n };\n}\n\nfunction applyPropertiesConfig(property: PropertyOrBuilder, propertyConfigs: Record<string, PropertyConfig<any>>) {\n let internalProperty = property;\n if (propertyConfigs && typeof internalProperty === \"object\" && internalProperty.propertyConfig) {\n const propertyConfig = propertyConfigs[internalProperty.propertyConfig];\n if (propertyConfig && isPropertyBuilder(propertyConfig.property)) {\n internalProperty = propertyConfig.property;\n } else {\n\n if (propertyConfig) {\n internalProperty = mergeDeep(propertyConfig.property, internalProperty);\n }\n\n if (!isPropertyBuilder(internalProperty) && internalProperty.dataType === \"map\" && internalProperty.properties) {\n const properties: Record<string, PropertyOrBuilder> = {};\n Object.keys(internalProperty.properties).forEach((key) => {\n properties[key] = applyPropertiesConfig(((internalProperty as MapProperty).properties as Properties)[key] as Property, propertyConfigs);\n });\n internalProperty = {\n ...internalProperty,\n properties\n };\n }\n\n }\n }\n return internalProperty;\n\n}\n\nconst validatePath = (value: string, isNewCollection: boolean, existingPaths: string[], idValue?: string) => {\n let error;\n if (!value) {\n error = \"You must specify a path in the database for this collection\";\n }\n // if (isNewCollection && existingIds?.includes(value.trim().toLowerCase()))\n // error = \"There is already a collection which uses this path as an id\";\n if (isNewCollection && existingPaths?.includes(value.trim().toLowerCase()) && !idValue)\n error = \"There is already a collection with the specified path. If you want to have multiple collections referring to the same database path, make sure the have different ids\";\n\n const subpaths = removeInitialAndTrailingSlashes(value).split(\"/\");\n if (subpaths.length % 2 === 0) {\n error = `Collection paths must have an odd number of segments: ${value}`;\n }\n return error;\n};\n\nconst validateId = (value: string, isNewCollection: boolean, existingPaths: string[], existingIds: string[]) => {\n if (!value) return undefined;\n let error;\n if (isNewCollection && existingPaths?.includes(value.trim().toLowerCase()))\n error = \"There is already a collection that uses this value as a path\";\n if (isNewCollection && existingIds?.includes(value.trim().toLowerCase()))\n error = \"There is already a collection which uses this id\";\n // if (error) {\n // setAdvancedPanelExpanded(true);\n // }\n return error;\n};\n","import React, { PropsWithChildren, useCallback } from \"react\";\nimport equal from \"react-fast-compare\"\n\nimport { CollectionsConfigController } from \"./types/config_controller\";\nimport {\n Entity,\n Property,\n useCustomizationController,\n useNavigationController,\n User,\n useSnackbarController\n} from \"@firecms/core\";\nimport { CollectionEditorDialog } from \"./ui/collection_editor/CollectionEditorDialog\";\nimport { useNavigate } from \"react-router\";\nimport { CollectionEditorController } from \"./types/collection_editor_controller\";\nimport { CollectionEditorPermissionsBuilder } from \"./types/config_permissions\";\nimport { CollectionInference } from \"./types/collection_inference\";\nimport { PropertyFormDialog } from \"./ui/collection_editor/PropertyEditView\";\nimport { PersistedCollection } from \"./types/persisted_collection\";\nimport { CollectionGenerationCallback } from \"./api/generateCollectionApi\";\n\nexport const ConfigControllerContext = React.createContext<CollectionsConfigController>({} as any);\nexport const CollectionEditorContext = React.createContext<CollectionEditorController>({} as any);\n\nexport interface ConfigControllerProviderProps {\n /**\n * Controller for managing the collections' config.\n */\n collectionConfigController: CollectionsConfigController;\n\n /**\n * Callback used to infer the schema from the data.\n */\n collectionInference?: CollectionInference;\n\n /**\n * Use this builder to define the permissions for the configuration per user.\n */\n configPermissions?: CollectionEditorPermissionsBuilder;\n\n /**\n * Groups that cannot be used to create new collections.\n */\n reservedGroups?: string[];\n\n extraView?: {\n View: React.ComponentType<{\n path: string\n }>,\n icon: React.ReactNode\n };\n\n pathSuggestions?: string[];\n\n getUser?: (uid: string) => User | null;\n\n getData?: (path: string, parentPaths: string[]) => Promise<object[]>;\n\n onAnalyticsEvent?: (event: string, params?: object) => void;\n\n /**\n * Callback function for generating/modifying collections.\n * The plugin is API-agnostic - the consumer provides the implementation.\n */\n generateCollection?: CollectionGenerationCallback;\n\n}\n\nexport const ConfigControllerProvider = React.memo(\n function ConfigControllerProvider({\n children,\n collectionConfigController,\n configPermissions,\n reservedGroups,\n collectionInference,\n extraView,\n getUser,\n getData,\n onAnalyticsEvent,\n pathSuggestions,\n generateCollection\n }: PropsWithChildren<ConfigControllerProviderProps>) {\n\n const navigation = useNavigationController();\n const navigate = useNavigate();\n const snackbarController = useSnackbarController();\n const { propertyConfigs } = useCustomizationController();\n\n const [currentDialog, setCurrentDialog] = React.useState<{\n isNewCollection: boolean,\n parentCollection?: PersistedCollection,\n editedCollectionId?: string,\n fullPath?: string,\n parentCollectionIds: string[],\n initialValues?: {\n path?: string,\n group?: string,\n name?: string\n },\n copyFrom?: PersistedCollection,\n redirect: boolean,\n existingEntities?: Entity<any>[],\n pathSuggestions?: string[];\n initialView?: \"general\" | \"display\" | \"properties\";\n expandKanban?: boolean;\n }>();\n\n const [currentPropertyDialog, setCurrentPropertyDialog] = React.useState<{\n propertyKey?: string,\n property?: Property,\n namespace?: string,\n parentCollection?: PersistedCollection,\n currentPropertiesOrder?: string[],\n editedCollectionId: string,\n fullPath?: string,\n parentCollectionIds: string[],\n collectionEditable: boolean;\n existingEntities?: Entity<any>[];\n collection?: PersistedCollection;\n }>();\n\n const defaultConfigPermissions: CollectionEditorPermissionsBuilder = useCallback(() => ({\n createCollections: true,\n editCollections: true,\n deleteCollections: true\n }), []);\n\n const editCollection = ({\n id,\n fullPath,\n parentCollectionIds,\n parentCollection,\n existingEntities,\n initialView,\n expandKanban\n }: {\n id?: string,\n fullPath?: string,\n parentCollectionIds: string[],\n parentCollection?: PersistedCollection,\n existingEntities?: Entity<any>[],\n initialView?: \"general\" | \"display\" | \"properties\",\n expandKanban?: boolean\n }) => {\n console.debug(\"Edit collection\", id, fullPath, parentCollectionIds, parentCollection);\n onAnalyticsEvent?.(\"edit_collection\", {\n id,\n fullPath\n });\n setCurrentDialog({\n editedCollectionId: id,\n fullPath,\n parentCollectionIds,\n isNewCollection: false,\n parentCollection,\n redirect: false,\n existingEntities,\n pathSuggestions,\n initialView,\n expandKanban\n });\n };\n\n const editProperty = ({\n propertyKey,\n property,\n editedCollectionId,\n currentPropertiesOrder,\n parentCollectionIds,\n collection,\n existingEntities\n }: {\n propertyKey?: string,\n property?: Property,\n currentPropertiesOrder?: string[],\n editedCollectionId: string,\n parentCollectionIds: string[],\n collection: PersistedCollection,\n existingEntities?: Entity<any>[]\n }) => {\n console.debug(\"Edit property\", propertyKey, property, editedCollectionId, currentPropertiesOrder, parentCollectionIds, collection);\n onAnalyticsEvent?.(\"edit_property\", {\n propertyKey,\n editedCollectionId\n });\n // namespace is all the path until the last dot\n const namespace = propertyKey && propertyKey.includes(\".\")\n ? propertyKey.substring(0, propertyKey.lastIndexOf(\".\"))\n : undefined;\n const propertyKeyWithoutNamespace = propertyKey && propertyKey.includes(\".\")\n ? propertyKey.substring(propertyKey.lastIndexOf(\".\") + 1)\n : propertyKey;\n setCurrentPropertyDialog({\n propertyKey: propertyKeyWithoutNamespace,\n property,\n namespace,\n currentPropertiesOrder,\n editedCollectionId,\n parentCollectionIds,\n collectionEditable: collection?.editable === undefined || collection?.editable === true,\n existingEntities,\n collection\n });\n };\n\n const createCollection = ({\n parentCollectionIds,\n parentCollection,\n initialValues,\n copyFrom,\n redirect,\n sourceClick\n }: {\n parentCollectionIds: string[],\n parentCollection?: PersistedCollection\n initialValues?: {\n group?: string,\n path?: string,\n name?: string\n },\n copyFrom?: PersistedCollection,\n redirect: boolean,\n sourceClick?: string\n }) => {\n console.debug(\"Create collection\", {\n parentCollectionIds,\n parentCollection,\n initialValues,\n copyFrom,\n redirect,\n sourceClick\n });\n onAnalyticsEvent?.(copyFrom ? \"duplicate_collection\" : \"create_collection\", {\n parentCollectionIds,\n parentCollection,\n initialValues,\n redirect,\n sourceClick\n });\n setCurrentDialog({\n isNewCollection: true,\n parentCollectionIds,\n parentCollection,\n initialValues,\n copyFrom,\n redirect,\n pathSuggestions\n });\n };\n\n return (\n <ConfigControllerContext.Provider value={collectionConfigController}>\n <CollectionEditorContext.Provider\n value={{\n editCollection,\n createCollection,\n editProperty,\n configPermissions: configPermissions ?? defaultConfigPermissions,\n pathSuggestions\n }}>\n\n {children}\n\n <CollectionEditorDialog\n open={Boolean(currentDialog)}\n configController={collectionConfigController}\n isNewCollection={false}\n collectionInference={collectionInference}\n {...currentDialog}\n getData={getData}\n reservedGroups={reservedGroups}\n extraView={extraView}\n getUser={getUser}\n generateCollection={generateCollection}\n handleClose={(collection) => {\n if (currentDialog?.redirect) {\n if (collection && currentDialog?.isNewCollection && !currentDialog.parentCollectionIds.length) {\n const url = navigation.buildUrlCollectionPath(collection.id ?? collection.path);\n navigate(url);\n }\n }\n setCurrentDialog(undefined);\n }} />\n\n {/* Used for editing properties*/}\n <PropertyFormDialog\n open={Boolean(currentPropertyDialog)}\n includeIdAndName={true}\n existingProperty={Boolean(currentPropertyDialog?.propertyKey)}\n autoUpdateId={!currentPropertyDialog ? false : !currentPropertyDialog?.propertyKey}\n autoOpenTypeSelect={!currentPropertyDialog ? false : !currentPropertyDialog?.propertyKey}\n inArray={false}\n collectionEditable={currentPropertyDialog?.collectionEditable ?? false}\n getData={currentPropertyDialog?.existingEntities || (getData && currentPropertyDialog?.editedCollectionId)\n ? async () => {\n let data: object[] = [];\n // First, use existing entities if available (already loaded in table)\n if (currentPropertyDialog?.existingEntities) {\n data = currentPropertyDialog.existingEntities.map(e => e.values);\n }\n // If getData is available and we have a path, also fetch from database\n if (getData && currentPropertyDialog?.editedCollectionId) {\n console.debug(\"Get data for property, path:\", currentPropertyDialog?.editedCollectionId);\n const resolvedPath = navigation.resolveIdsFrom(currentPropertyDialog.editedCollectionId!);\n const fetchedData = await getData(resolvedPath, []);\n data.push(...fetchedData);\n }\n return data;\n }\n : undefined}\n onPropertyChanged={({\n id,\n property\n }) => {\n if (!currentPropertyDialog) return;\n if (!id) return;\n const newProperty = !(currentPropertyDialog.propertyKey);\n return collectionConfigController.saveProperty({\n path: currentPropertyDialog?.editedCollectionId,\n property,\n propertyKey: id,\n newPropertiesOrder: newProperty && currentPropertyDialog.currentPropertiesOrder ? [...currentPropertyDialog.currentPropertiesOrder, id] : undefined,\n namespace: currentPropertyDialog.namespace,\n parentCollectionIds: currentPropertyDialog.parentCollectionIds\n })\n .catch((e) => {\n console.error(e);\n snackbarController.open({\n type: \"error\",\n message: \"Error persisting property: \" + (e.message ?? \"Details in the console\")\n });\n return false;\n });\n }}\n onPropertyChangedImmediate={false}\n onDelete={() => {\n if (!currentPropertyDialog?.propertyKey) return;\n const newPropertiesOrder = currentPropertyDialog?.currentPropertiesOrder?.filter(p => p !== currentPropertyDialog?.propertyKey);\n return collectionConfigController.deleteProperty({\n path: currentPropertyDialog?.editedCollectionId,\n propertyKey: currentPropertyDialog?.propertyKey,\n namespace: currentPropertyDialog?.namespace,\n newPropertiesOrder,\n parentCollectionIds: currentPropertyDialog?.parentCollectionIds\n })\n .then(() => {\n setCurrentPropertyDialog(undefined);\n }).catch((e) => {\n console.error(e);\n snackbarController.open({\n type: \"error\",\n message: \"Error deleting property: \" + (e.message ?? \"Details in the console\")\n });\n return false;\n });\n }}\n onError={() => {\n }}\n onOkClicked={() => {\n setCurrentPropertyDialog(undefined);\n }}\n onCancel={() => {\n setCurrentPropertyDialog(undefined);\n }}\n initialErrors={{}}\n forceShowErrors={false}\n existingPropertyKeys={currentPropertyDialog?.collection?.properties ? Object.keys(currentPropertyDialog.collection.properties) : []}\n allowDataInference={true}\n propertyConfigs={propertyConfigs}\n property={currentPropertyDialog?.property}\n propertyKey={currentPropertyDialog?.propertyKey} />\n\n </CollectionEditorContext.Provider>\n\n </ConfigControllerContext.Provider>\n );\n }, equal);\n","import { CollectionActionsProps, useAuthController, useNavigationController } from \"@firecms/core\";\nimport { IconButton, SettingsIcon, Tooltip, } from \"@firecms/ui\";\n\nimport { useCollectionEditorController } from \"../useCollectionEditorController\";\nimport { PersistedCollection } from \"../types/persisted_collection\";\n\nexport function EditorCollectionAction({\n path: fullPath,\n parentCollectionIds,\n collection,\n tableController\n }: CollectionActionsProps) {\n\n const authController = useAuthController();\n const navigationController = useNavigationController();\n const collectionEditorController = useCollectionEditorController();\n\n const parentCollection = navigationController.getCollectionFromIds(parentCollectionIds);\n\n const canEditCollection = collectionEditorController.configPermissions\n ? collectionEditorController.configPermissions({\n user: authController.user,\n collection\n }).editCollections\n : true;\n\n const editorButton = <Tooltip\n asChild={true}\n title={canEditCollection ? \"Edit collection\" : \"You don't have permissions to edit this collection\"}>\n <IconButton\n size={\"small\"}\n color={\"primary\"}\n disabled={!canEditCollection}\n onClick={canEditCollection\n ? () => collectionEditorController?.editCollection({\n id: collection.id,\n fullPath,\n parentCollectionIds,\n parentCollection: parentCollection as PersistedCollection,\n existingEntities: tableController?.data ?? []\n })\n : undefined}>\n <SettingsIcon size={\"small\"}/>\n </IconButton>\n </Tooltip>;\n\n return <>\n {editorButton}\n </>\n\n}\n","import { useContext } from \"react\";\nimport { CollectionsConfigController } from \"./types/config_controller\";\nimport { ConfigControllerContext } from \"./ConfigControllerProvider\";\n\n/**\n * Use this hook to access the configuration controller.\n * You can use it to get the list of collections, and to save/delete collections.\n */\nexport const useCollectionsConfigController = (): CollectionsConfigController => useContext(ConfigControllerContext);\n","import {\n ConfirmationDialog,\n PluginHomePageActionsProps,\n useAuthController,\n useSnackbarController\n} from \"@firecms/core\";\nimport { ContentCopyIcon, DeleteIcon, IconButton, Menu, MenuItem, MoreVertIcon, SettingsIcon, } from \"@firecms/ui\";\nimport { useCollectionEditorController } from \"../useCollectionEditorController\";\nimport { useState } from \"react\";\nimport { useCollectionsConfigController } from \"../useCollectionsConfigController\";\n\nexport function HomePageEditorCollectionAction({\n path,\n collection\n}: PluginHomePageActionsProps) {\n\n const snackbarController = useSnackbarController();\n const authController = useAuthController();\n const configController = useCollectionsConfigController();\n const collectionEditorController = useCollectionEditorController();\n\n const permissions = collectionEditorController?.configPermissions\n ? collectionEditorController.configPermissions({\n user: authController.user,\n collection\n })\n : {\n createCollections: false,\n editCollections: false,\n deleteCollections: false\n };\n\n const onEditCollectionClicked = () => {\n collectionEditorController?.editCollection({\n id: collection.id,\n parentCollectionIds: []\n });\n };\n\n const onDuplicateCollectionClicked = () => {\n // Use copyFrom to duplicate the collection with all properties\n // The editor will handle clearing name, path, and id\n collectionEditorController?.createCollection({\n copyFrom: collection,\n parentCollectionIds: [],\n redirect: true,\n sourceClick: \"home_page_duplicate\"\n });\n };\n\n const [deleteRequested, setDeleteRequested] = useState(false);\n\n const deleteCollection = () => {\n configController?.deleteCollection({ id: collection.id }).then(() => {\n setDeleteRequested(false);\n snackbarController.open({\n message: \"Collection deleted\",\n type: \"success\"\n });\n });\n };\n\n return <>\n\n <div>\n {permissions.deleteCollections &&\n <Menu\n trigger={<IconButton size={\"small\"}>\n <MoreVertIcon size={\"small\"} />\n </IconButton>}\n >\n {permissions.createCollections &&\n <MenuItem\n dense={true}\n onClick={(event) => {\n event.preventDefault();\n event.stopPropagation();\n onDuplicateCollectionClicked();\n }}>\n <ContentCopyIcon />\n Duplicate\n </MenuItem>\n }\n <MenuItem\n dense={true}\n onClick={(event) => {\n event.preventDefault();\n event.stopPropagation();\n setDeleteRequested(true);\n }}>\n <DeleteIcon />\n Delete\n </MenuItem>\n\n </Menu>\n\n }\n\n {permissions.editCollections &&\n <IconButton\n size={\"small\"}\n onClick={(event) => {\n onEditCollectionClicked();\n }}>\n <SettingsIcon size={\"small\"} />\n </IconButton>}\n </div>\n\n <ConfirmationDialog\n open={deleteRequested}\n onAccept={deleteCollection}\n onCancel={() => setDeleteRequested(false)}\n title={<>Delete this collection?</>}\n body={<> This will <b>not\n delete any data</b>, only\n the collection in the CMS</>} />\n </>;\n\n}\n","import { EntityTableController, ResolvedProperty } from \"@firecms/core\";\nimport { IconButton, SettingsIcon, Tooltip } from \"@firecms/ui\";\nimport React from \"react\";\nimport { useCollectionEditorController } from \"../useCollectionEditorController\";\nimport { PersistedCollection } from \"../types/persisted_collection\";\n\nexport function CollectionViewHeaderAction({\n propertyKey,\n onHover,\n property,\n fullPath,\n parentCollectionIds,\n collection,\n tableController\n }: {\n property: ResolvedProperty,\n propertyKey: string,\n onHover: boolean,\n fullPath: string,\n parentCollectionIds: string[],\n collection: PersistedCollection;\n tableController: EntityTableController;\n}) {\n\n const collectionEditorController = useCollectionEditorController();\n\n return (\n <Tooltip\n asChild={true}\n title={\"Edit\"}>\n <IconButton\n className={onHover ? \"bg-white dark:bg-surface-950\" : \"hidden\"}\n onClick={() => {\n collectionEditorController.editProperty({\n propertyKey,\n property,\n editedCollectionId: collection.id,\n parentCollectionIds,\n collection,\n existingEntities: tableController.data ?? []\n });\n }}\n size={\"small\"}>\n <SettingsIcon size={\"small\"}/>\n </IconButton>\n </Tooltip>\n )\n}\n","import { EntityTableController, getDefaultPropertiesOrder, useAuthController } from \"@firecms/core\";\nimport { AddIcon, Tooltip } from \"@firecms/ui\";\nimport { useCollectionEditorController } from \"../useCollectionEditorController\";\nimport { PersistedCollection } from \"../types/persisted_collection\";\n\nexport function PropertyAddColumnComponent({\n fullPath,\n parentCollectionIds,\n collection,\n tableController\n }: {\n fullPath: string,\n parentCollectionIds: string[],\n collection: PersistedCollection;\n tableController: EntityTableController;\n}) {\n\n const authController = useAuthController();\n const collectionEditorController = useCollectionEditorController();\n const canEditCollection = collectionEditorController.configPermissions\n ? collectionEditorController.configPermissions({\n user: authController.user,\n collection\n }).editCollections\n : true;\n\n return (\n <Tooltip\n asChild={true}\n title={canEditCollection ? \"Add new property\" : \"You don't have permission to add new properties\"}>\n <div\n className={\"p-0.5 w-20 h-full flex items-center justify-center cursor-pointer bg-surface-100 bg-opacity-40 bg-surface-100/40 hover:bg-surface-100 dark:bg-surface-950 dark:bg-opacity-40 dark:bg-surface-950/40 dark:hover:bg-surface-950\"}\n // className={onHover ? \"bg-white dark:bg-surface-950\" : undefined}\n onClick={() => {\n collectionEditorController.editProperty({\n editedCollectionId: collection.id,\n parentCollectionIds,\n currentPropertiesOrder: getDefaultPropertiesOrder(collection),\n collection,\n existingEntities: tableController.data\n });\n }}>\n <AddIcon color={\"inherit\"}/>\n </div>\n </Tooltip>\n )\n}\n","import { AddIcon, Button } from \"@firecms/ui\";\nimport { useCollectionEditorController } from \"../useCollectionEditorController\";\n\nexport function NewCollectionButton() {\n const collectionEditorController = useCollectionEditorController();\n return <div className={\"bg-surface-50 dark:bg-surface-900 min-w-fit rounded\"}>\n <Button className={\"min-w-fit\"}\n\n onClick={() => collectionEditorController.createCollection({\n parentCollectionIds: [],\n redirect: true,\n sourceClick: \"new_collection_button\"\n })}>\n <AddIcon/>\n New collection\n </Button>\n </div>\n}\n","import equal from \"react-fast-compare\"\n\nimport { CollectionActionsProps, mergeDeep, useAuthController, useSnackbarController } from \"@firecms/core\";\nimport { Button, SaveIcon, Tooltip, UndoIcon, } from \"@firecms/ui\";\n\nimport { useCollectionEditorController } from \"../useCollectionEditorController\";\nimport { useCollectionsConfigController } from \"../useCollectionsConfigController\";\nimport { PersistedCollection } from \"../types/persisted_collection\";\n\nexport function EditorCollectionActionStart({\n path: fullPath,\n parentCollectionIds,\n collection,\n tableController\n }: CollectionActionsProps) {\n\n const authController = useAuthController();\n const collectionEditorController = useCollectionEditorController();\n const configController = useCollectionsConfigController();\n const snackbarController = useSnackbarController();\n\n const canEditCollection = collectionEditorController.configPermissions\n ? collectionEditorController.configPermissions({\n user: authController.user,\n collection\n }).editCollections\n : true;\n\n let saveDefaultFilterButton = null;\n if (!equal(getObjectOrNull(tableController.filterValues), getObjectOrNull(collection.initialFilter)) ||\n !equal(getObjectOrNull(tableController.sortBy), getObjectOrNull(collection.initialSort))) {\n saveDefaultFilterButton = <>\n <Tooltip\n asChild={true}\n title={tableController.sortBy || tableController.filterValues ? \"Save default filter and sort\" : \"Clear default filter and sort\"}>\n <Button\n size={\"small\"}\n variant={\"text\"}\n onClick={() => configController\n ?.saveCollection({\n id: collection.id,\n parentCollectionIds,\n collectionData: mergeDeep(collection as PersistedCollection,\n {\n initialFilter: tableController.filterValues ?? null,\n initialSort: tableController.sortBy ?? null\n })\n }).then(() => {\n snackbarController.open({\n type: \"success\",\n message: \"Default config saved\"\n });\n })}>\n <SaveIcon/>\n </Button>\n </Tooltip>\n\n {(collection.initialFilter || collection.initialSort) && <Tooltip\n title={\"Reset to default filter and sort\"}>\n <Button\n size={\"small\"}\n variant={\"text\"}\n onClick={() => {\n tableController.clearFilter?.();\n if (collection?.initialFilter)\n tableController.setFilterValues?.(collection?.initialFilter);\n if (collection?.initialSort)\n tableController.setSortBy?.(collection?.initialSort);\n }}>\n <UndoIcon/>\n </Button>\n </Tooltip>}\n </>;\n }\n\n return <>\n {canEditCollection && saveDefaultFilterButton}\n </>\n\n}\n\nfunction getObjectOrNull(o?: object): object | null {\n if (o && Object.keys(o).length === 0)\n return o\n return o ?? null;\n}\n","import { PluginHomePageAdditionalCardsProps, useAuthController } from \"@firecms/core\";\nimport { AddIcon, Card, cls, Typography } from \"@firecms/ui\";\nimport { useCollectionEditorController } from \"../useCollectionEditorController\";\n\nexport function NewCollectionCard({\n group,\n context\n }: PluginHomePageAdditionalCardsProps) {\n\n if (!context.navigation.topLevelNavigation)\n throw Error(\"Navigation not ready in FireCMSHomePage\");\n\n const authController = useAuthController();\n\n const collectionEditorController = useCollectionEditorController();\n const canCreateCollections = collectionEditorController.configPermissions\n ? collectionEditorController.configPermissions({\n user: authController.user,\n }).createCollections\n : true;\n\n return (\n <Card className={cls(\"h-full p-4 min-h-[124px]\")}\n onClick={collectionEditorController && canCreateCollections\n ? () => collectionEditorController.createCollection({\n initialValues: group ? { group } : undefined,\n parentCollectionIds: [],\n redirect: true,\n sourceClick: \"new_collection_card\"\n })\n : undefined}>\n\n <div\n className=\"flex items-center justify-center h-full w-full flex-grow flex-col\">\n <AddIcon color=\"primary\" size={\"large\"}/>\n <Typography color=\"primary\"\n variant={\"caption\"}\n className={\"font-medium\"}>{\"Add new collection\".toUpperCase()}</Typography>\n\n {!canCreateCollections &&\n <Typography variant={\"caption\"}>You don't have permissions to create\n collections</Typography>\n }\n </div>\n\n </Card>\n );\n}\n","import { PluginFormActionProps, useAuthController, useNavigationController } from \"@firecms/core\";\nimport { IconButton, SettingsIcon, Tooltip, } from \"@firecms/ui\";\n\nimport { useCollectionEditorController } from \"../useCollectionEditorController\";\nimport { PersistedCollection } from \"../types/persisted_collection\";\n\nexport function EditorEntityAction({\n path: fullPath,\n parentCollectionIds,\n collection,\n formContext\n }: PluginFormActionProps) {\n\n const authController = useAuthController();\n const navigationController = useNavigationController();\n const collectionEditorController = useCollectionEditorController();\n\n const parentCollection = navigationController.getCollectionFromIds(parentCollectionIds);\n\n const canEditCollection = collectionEditorController.configPermissions\n ? collectionEditorController.configPermissions({\n user: authController.user,\n collection\n }).editCollections\n : true;\n\n const isDirty = formContext?.formex.dirty ?? false;\n\n const editorButton = <Tooltip\n asChild={true}\n title={canEditCollection ? (isDirty ? \"You need to save the document before changing the schema\" : \"Edit schema for this form\") : \"You don't have permissions to edit this collection\"}>\n <IconButton\n color={\"primary\"}\n disabled={!canEditCollection || isDirty}\n onClick={canEditCollection\n ? () => collectionEditorController?.editCollection({\n id: collection.id,\n fullPath,\n parentCollectionIds,\n parentCollection: parentCollection as PersistedCollection,\n })\n : undefined}>\n <SettingsIcon size={\"small\"}/>\n </IconButton>\n </Tooltip>;\n\n return <>\n {editorButton}\n </>\n\n}\n","import React from \"react\";\nimport { EntityCollection, useNavigationController } from \"@firecms/core\";\nimport { Button } from \"@firecms/ui\";\nimport { useCollectionEditorController } from \"../useCollectionEditorController\";\n\n/**\n * Component rendered when Kanban view is missing orderProperty configuration.\n * Provides a CTA button to open the collection editor to configure Kanban.\n */\nexport function KanbanSetupAction({\n collection,\n fullPath,\n parentCollectionIds\n}: {\n collection: EntityCollection;\n fullPath: string;\n parentCollectionIds: string[];\n}) {\n const collectionEditorController = useCollectionEditorController();\n\n const handleConfigureClick = () => {\n collectionEditorController.editCollection({\n id: collection.id,\n parentCollectionIds,\n initialView: \"display\",\n expandKanban: true\n });\n };\n\n return (\n <Button\n variant=\"outlined\"\n onClick={handleConfigureClick}\n >\n Configure Kanban\n </Button>\n );\n}\n","import React, { useCallback, useMemo, useState } from \"react\";\nimport {\n EntityCollection,\n getPropertyInPath,\n ResolvedStringProperty,\n resolveCollection,\n resolveEnumValues,\n toSnakeCase,\n useAuthController,\n useCustomizationController\n} from \"@firecms/core\";\nimport {\n AddIcon,\n Button,\n cls,\n defaultBorderMixin,\n Dialog,\n DialogActions,\n DialogContent,\n IconButton,\n TextField,\n Typography\n} from \"@firecms/ui\";\nimport { useCollectionsConfigController } from \"../useCollectionsConfigController\";\n\n/**\n * Component rendered at the end of the Kanban board to add new columns (enum values).\n * Opens a dialog to input a new enum value for the column property.\n */\nexport function AddKanbanColumnAction({\n collection,\n fullPath,\n parentCollectionIds,\n columnProperty\n}: {\n collection: EntityCollection;\n fullPath: string;\n parentCollectionIds: string[];\n columnProperty: string;\n}) {\n const [dialogOpen, setDialogOpen] = useState(false);\n const [newValueLabel, setNewValueLabel] = useState(\"\");\n const [saving, setSaving] = useState(false);\n\n const configController = useCollectionsConfigController();\n const authController = useAuthController();\n const customizationController = useCustomizationController();\n\n const resolvedCollection = useMemo(() => resolveCollection({\n collection,\n path: fullPath,\n propertyConfigs: customizationController.propertyConfigs,\n authController\n }), [collection, fullPath, customizationController.propertyConfigs, authController]);\n\n // Get current enum values\n const currentEnumValues = useMemo(() => {\n const property = getPropertyInPath(resolvedCollection.properties, columnProperty);\n if (!property || !('dataType' in property) || property.dataType !== \"string\") {\n return [];\n }\n const stringProperty = property as ResolvedStringProperty;\n if (!stringProperty.enumValues) {\n return [];\n }\n return resolveEnumValues(stringProperty.enumValues) ?? [];\n }, [resolvedCollection, columnProperty]);\n\n const handleAddColumn = useCallback(async () => {\n if (!newValueLabel.trim() || !configController) return;\n\n setSaving(true);\n try {\n // Check for property in persisted collection first, then resolved collection\n // This handles code-defined properties that aren't in the persisted config\n let property = collection?.properties?.[columnProperty];\n let isCodeDefinedProperty = false;\n\n if (!property || typeof property === 'function') {\n // Property not in persisted config - check resolved collection\n property = resolvedCollection.properties?.[columnProperty];\n isCodeDefinedProperty = true;\n }\n\n // Type guard: property must be an object with dataType === \"string\"\n if (!property || typeof property === 'function' || !('dataType' in property) || property.dataType !== \"string\") {\n console.error(\"Column property not found or not a string. Property:\", property);\n setSaving(false);\n return;\n }\n\n // Now we know property is a StringProperty\n const stringProperty = property as { dataType: \"string\"; enumValues?: any; name?: string };\n\n // Create new enum value\n const newId = toSnakeCase(newValueLabel.trim());\n const newEnumValue = {\n id: newId,\n label: newValueLabel.trim()\n };\n\n // Get existing enum values from the resolved property (current runtime values)\n // Use currentEnumValues which is already computed from resolvedCollection\n const existingEnumValues = currentEnumValues.map(ev => ({\n id: ev.id,\n label: ev.label\n }));\n\n // Add new enum value\n const updatedEnumValues = [...existingEnumValues, newEnumValue];\n\n // Build the property to save\n // If it's code-defined, we create a minimal override with just enumValues\n const updatedProperty = isCodeDefinedProperty\n ? {\n dataType: \"string\" as const,\n name: stringProperty.name || columnProperty,\n enumValues: updatedEnumValues\n }\n : {\n ...property,\n enumValues: updatedEnumValues\n };\n\n // Save the updated property\n await configController.saveProperty({\n path: fullPath,\n propertyKey: columnProperty,\n property: updatedProperty as any,\n parentCollectionIds\n });\n\n setNewValueLabel(\"\");\n setDialogOpen(false);\n } catch (error) {\n console.error(\"Error adding new column:\", error);\n } finally {\n setSaving(false);\n }\n }, [newValueLabel, configController, collection, columnProperty, fullPath, parentCollectionIds]);\n\n const handleKeyDown = (e: React.KeyboardEvent) => {\n if (e.key === \"Enter\" && newValueLabel.trim()) {\n handleAddColumn();\n }\n };\n\n return (\n <>\n <div\n className={cls(\n \"border h-full w-80 min-w-80 mx-2 flex flex-col items-center justify-center rounded-md\",\n \"bg-surface-50 dark:bg-surface-950 hover:bg-surface-100 dark:hover:bg-surface-900\",\n \"cursor-pointer transition-colors duration-200 ease-in-out\",\n defaultBorderMixin\n )}\n onClick={() => setDialogOpen(true)}\n >\n <IconButton size=\"large\" className=\"opacity-60 hover:opacity-100\">\n <AddIcon size=\"large\" />\n </IconButton>\n <Typography variant=\"caption\" color=\"secondary\" className=\"mt-2\">\n Add Column\n </Typography>\n </div>\n\n <Dialog open={dialogOpen} onOpenChange={setDialogOpen}>\n <DialogContent className=\"max-w-md\">\n <Typography variant=\"h6\" className=\"mb-4\">\n Add New Column\n </Typography>\n <Typography variant=\"body2\" color=\"secondary\" className=\"mb-4\">\n Add a new option to the \"{columnProperty}\" property.\n This will create a new column in the Kanban board.\n </Typography>\n <TextField\n label=\"Column Name\"\n value={newValueLabel}\n onChange={(e) => setNewValueLabel(e.target.value)}\n onKeyDown={handleKeyDown}\n autoFocus\n disabled={saving}\n />\n </DialogContent>\n <DialogActions>\n <Button\n variant=\"text\"\n onClick={() => setDialogOpen(false)}\n disabled={saving}\n >\n Cancel\n </Button>\n <Button\n onClick={handleAddColumn}\n disabled={saving || !newValueLabel.trim()}\n >\n {saving ? \"Adding...\" : \"Add Column\"}\n </Button>\n </DialogActions>\n </Dialog>\n </>\n );\n}\n","import React from \"react\";\nimport { FireCMSPlugin, useAuthController, useNavigationController, User } from \"@firecms/core\";\nimport { ConfigControllerProvider } from \"./ConfigControllerProvider\";\nimport { CollectionEditorPermissionsBuilder } from \"./types/config_permissions\";\nimport { EditorCollectionAction } from \"./ui/EditorCollectionAction\";\nimport { HomePageEditorCollectionAction } from \"./ui/HomePageEditorCollectionAction\";\nimport { PersistedCollection } from \"./types/persisted_collection\";\nimport { CollectionInference } from \"./types/collection_inference\";\nimport { CollectionsConfigController } from \"./types/config_controller\";\nimport { CollectionGenerationCallback } from \"./api/generateCollectionApi\";\nimport { CollectionViewHeaderAction } from \"./ui/CollectionViewHeaderAction\";\nimport { PropertyAddColumnComponent } from \"./ui/PropertyAddColumnComponent\";\nimport { NewCollectionButton } from \"./ui/NewCollectionButton\";\nimport { AddIcon, Button, Paper, Typography } from \"@firecms/ui\";\nimport { useCollectionEditorController } from \"./useCollectionEditorController\";\nimport { EditorCollectionActionStart } from \"./ui/EditorCollectionActionStart\";\nimport { NewCollectionCard } from \"./ui/NewCollectionCard\";\nimport { EditorEntityAction } from \"./ui/EditorEntityAction\";\nimport { KanbanSetupAction } from \"./ui/KanbanSetupAction\";\nimport { AddKanbanColumnAction } from \"./ui/AddKanbanColumnAction\";\n\nexport interface CollectionConfigControllerProps<EC extends PersistedCollection = PersistedCollection, USER extends User = User> {\n\n /**\n * Firebase app where the configuration is saved.\n */\n collectionConfigController: CollectionsConfigController;\n\n /**\n * Define what actions can be performed on the configuration.\n */\n configPermissions?: CollectionEditorPermissionsBuilder<USER, EC>;\n\n /**\n * The words you define here will not be allowed to be used as group\n * names when creating collections.\n * e.g. [\"admin\"]\n */\n reservedGroups?: string[];\n\n extraView?: {\n View: React.ComponentType<{\n path: string\n }>,\n icon: React.ReactNode\n };\n\n collectionInference?: CollectionInference;\n\n pathSuggestions?: string[];\n\n getData?: (path: string, parentPaths: string[]) => Promise<object[]>;\n\n getUser?: (uid: string) => USER | null;\n\n onAnalyticsEvent?: (event: string, params?: object) => void;\n\n includeIntroView?: boolean;\n\n /**\n * Callback function for generating/modifying collections.\n * The plugin is API-agnostic - the consumer provides the implementation.\n */\n generateCollection?: CollectionGenerationCallback;\n\n}\n\n/**\n * Use this hook to initialise the Collection Editor plugin.\n * This is likely the only hook you will need to use.\n * @param firebaseApp Firebase app where your project data lives.\n * @param configPermissions\n * @param reservedGroups\n * @param extraView\n * @param getData\n * @param getUser\n * @param collectionInference\n */\nexport function useCollectionEditorPlugin<EC extends PersistedCollection = PersistedCollection, USER extends User = User>\n ({\n collectionConfigController,\n configPermissions,\n reservedGroups,\n extraView,\n getUser,\n collectionInference,\n getData,\n onAnalyticsEvent,\n includeIntroView = true,\n pathSuggestions,\n generateCollection\n }: CollectionConfigControllerProps<EC, USER>): FireCMSPlugin<any, any, PersistedCollection> {\n\n return {\n key: \"collection_editor\",\n loading: collectionConfigController.loading,\n provider: {\n Component: ConfigControllerProvider,\n props: {\n collectionConfigController,\n configPermissions,\n collectionInference,\n reservedGroups,\n extraView,\n getUser,\n getData,\n onAnalyticsEvent,\n pathSuggestions,\n generateCollection\n }\n },\n homePage: {\n additionalActions: <NewCollectionButton />,\n additionalChildrenStart: includeIntroView ? <IntroWidget /> : undefined,\n CollectionActions: HomePageEditorCollectionAction,\n AdditionalCards: NewCollectionCard,\n allowDragAndDrop: true,\n navigationEntries: collectionConfigController.navigationEntries,\n onNavigationEntriesUpdate: collectionConfigController.saveNavigationEntries,\n },\n collectionView: {\n CollectionActionsStart: EditorCollectionActionStart,\n CollectionActions: EditorCollectionAction,\n HeaderAction: CollectionViewHeaderAction,\n AddColumnComponent: PropertyAddColumnComponent,\n onColumnsReorder: collectionConfigController.updatePropertiesOrder,\n onKanbanColumnsReorder: collectionConfigController.updateKanbanColumnsOrder,\n KanbanSetupComponent: KanbanSetupAction,\n AddKanbanColumnComponent: AddKanbanColumnAction\n },\n form: {\n ActionsTop: EditorEntityAction,\n }\n };\n}\n\nexport function IntroWidget() {\n\n const navigation = useNavigationController();\n if (!navigation.topLevelNavigation)\n throw Error(\"Navigation not ready in FireCMSHomePage\");\n\n const authController = useAuthController();\n\n const collectionEditorController = useCollectionEditorController();\n const canCreateCollections = collectionEditorController.configPermissions\n ? collectionEditorController.configPermissions({\n user: authController.user,\n }).createCollections\n : true;\n\n if (!navigation.initialised || (navigation.collections ?? []).length > 0) {\n return null;\n }\n\n return (\n <Paper\n className={\"my-4 px-4 py-6 flex flex-col bg-white dark:bg-surface-accent-800 gap-2\"}>\n <Typography variant={\"subtitle2\"} className={\"uppercase\"}>No collections found</Typography>\n <Typography>\n Start building collections in FireCMS easily. Map them to your existing\n database data, import from files, or use our templates.\n </Typography>\n {canCreateCollections && <Button\n onClick={collectionEditorController && canCreateCollections\n ? () => collectionEditorController.createCollection({\n parentCollectionIds: [],\n redirect: true,\n sourceClick: \"new_collection_card\"\n })\n : undefined}>\n <AddIcon />Create your first collection\n </Button>}\n <Typography color={\"secondary\"}>\n You can also define collections programmatically.\n </Typography>\n </Paper>\n );\n}\n","import {\n EntityCollection,\n joinCollectionLists,\n makePropertiesEditable,\n ModifyCollectionProps,\n Properties\n} from \"@firecms/core\";\nimport { PersistedCollection } from \"../types/persisted_collection\";\n\n/**\n * Function in charge of merging collections defined in code with those stored in the backend.\n */\nexport const mergeCollections = (baseCollections: EntityCollection[],\n backendCollections: PersistedCollection[] = [],\n modifyCollection?: (props: ModifyCollectionProps) => EntityCollection | void\n) => {\n\n const markAsEditable = (c: PersistedCollection) => {\n makePropertiesEditable(c.properties as Properties);\n c.subcollections?.forEach(markAsEditable);\n };\n\n backendCollections.forEach(markAsEditable);\n\n const result = joinCollectionLists(baseCollections, backendCollections, [], modifyCollection);\n\n // sort the collections so they are in the same order as the base collections\n result.sort((a, b) => {\n const indexA = baseCollections.findIndex(c => c.id === a.id);\n const indexB = baseCollections.findIndex(c => c.id === b.id);\n\n if (indexA === -1 && indexB === -1) {\n return 0; // Keep original order for items not in baseCollections\n }\n if (indexA === -1) {\n return 1; // a is not in base, so it goes to the end\n }\n if (indexB === -1) {\n return -1; // b is not in base, so it goes to the end\n }\n return indexA - indexB;\n });\n\n return result;\n}\n","import { ErrorView, prettifyIdentifier, useNavigationController } from \"@firecms/core\";\nimport { useCollectionEditorController } from \"../useCollectionEditorController\";\nimport { Button } from \"@firecms/ui\";\n\nexport function MissingReferenceWidget({ path: pathProp }: {\n path: string\n}) {\n const navigation = useNavigationController();\n const path = getLastSegment(pathProp);\n const parentCollectionIds = navigation.getParentCollectionIds(pathProp);\n const collectionEditor = useCollectionEditorController();\n return <div className={\"p-1 flex flex-col items-center\"}>\n <ErrorView error={\"No collection for path: \" + path}/>\n <Button className={\"mx-2\"}\n size={\"small\"}\n onClick={() => {\n collectionEditor.createCollection({\n initialValues: { path, name: prettifyIdentifier(path) },\n parentCollectionIds,\n redirect: false,\n sourceClick: \"missing_reference\"\n });\n }}>\n Create\n </Button>\n </div>;\n}\n\nfunction getParentPathSegments(path: string): string[] {\n const segments = path.split(\"/\");\n return segments.filter((segment, index) => index % 2 === 0 && index !== segments.length - 1);\n}\n\nfunction getLastSegment(path: string): string {\n const segments = path.split(\"/\");\n return segments[segments.length - 1];\n}\n"],"names":["YupSchema","Yup","object","shape","id","string","required","name","path","GeneralSettingsForm","t0","$","_c","isNewCollection","parentCollection","values","setFieldValue","handleChange","touched","errors","setFieldTouched","submitCount","useFormex","iconDialogOpen","setIconDialogOpen","useState","useAuthController","useCustomizationController","t1","databaseId","undefined","updateDatabaseId","t2","pathTouched","getIn","toSnakeCase","idTouched","singularNameTouched","singular","updateName","t3","IconForView","collectionIcon","isSubcollection","showErrors","t4","t5","t6","Typography","t7","t8","Symbol","for","t9","jsx","Tooltip","IconButton","t10","t11","Chip","jsxs","t12","t13","t14","e","target","value","t15","Boolean","t16","TextField","t17","t18","t19","FieldCaption","t20","t21","cls","t22","t23","Field","DebouncedTextField","t24","t25","t26","t27","t28","singularName","t29","e_0","t30","t31","t32","t33","t34","t35","t36","description","t37","t38","t39","t40","t41","t42","t43","t44","t45","t46","t47","t48","t49","t50","v","t51","collectionGroup","t52","BooleanSwitchWithLabel","t53","t54","t55","t56","t57","history","t58","v_0","t59","t60","t61","t62","t63","customId","t64","v_1","Error","t65","t66","t67","t68","SelectItem","t69","Select","_temp","t70","t71","t72","v_2","t73","textSearchEnabled","t74","t75","t76","t77","ExpandablePanel","t78","height","t79","icon","t80","t81","SearchIconsView","t82","Dialog","t83","Container","DefaultDatabaseField","onDatabaseIdUpdate","LayoutModeSwitch","onChange","className","label","VerticalSplitIcon","SquareIcon","ToggleButtonGroup","ViewModeSwitch","ListIcon","AppsIcon","ViewKanbanIcon","EnumForm","enumValues","onValuesChanged","onError","updateIds","disabled","allowDataInference","getData","forEach","enumValue","index","hasError","Object","keys","length","initialValues","validateOnChange","validation","formex","useCreateFormex","values_0","errors_0","useEffect","Formex","EnumFormFields","enumValuesPath","shouldUpdateId","lastInternalIdAdded","setLastInternalIdAdded","React","editDialogIndex","setEditDialogIndex","inferring","setInferring","Set","inferredValuesRef","useRef","inferredValues","current","internalId","justAdded","entryError","has","buildEntry","console","warn","then","data","flatData","flat","fieldData","Array","from","currentEnumValues","foundEnumValues","extractEnumFromValues","newEnumValues","filter","some","enumValue_0","add","catch","finally","inferValues","Button","CircularProgress","FindInPageIcon","ArrayContainer","Paper","error","EnumEntry","memo","EnumEntryInternal","updateId","autoFocus","onDialogOpen","inferredEntry","shouldUpdateIdRef","idValue","labelValue","currentLabelRef","colorValue","getColorSchemeForKey","getColorSchemeForSeed","String","colorScheme","color","Fragment","backgroundColor","Badge","SettingsIcon","areEqual","prevProps","nextProps","equal","EnumEntryDialog","open","onClose","idError","open_0","DialogTitle","ColorPicker","DialogContent","DialogActions","SwitchControl","field","form","tooltip","size","allowIndeterminate","checked","formControlLabel","GeneralPropertyValidation","validationRequired","validationUnique","field_0","form_0","validationRequiredMessage","StringPropertyValidation","lowercase","matches","max","min","trim","uppercase","matchesError","matchesValue","serializeRegExp","matchesStringValue","validationLowercase","validationUppercase","validationTrim","field_1","form_1","validationLength","validationMin","validationMax","validationMatches","ArrayPropertyValidation","ValidationPanel","children","RuleIcon","EnumPropertyField","multiselect","propertyNamespace","setFieldError","snackbarContext","useSnackbarController","defaultValue","valuesEnumValues","useMemo","resolveEnumValues","enumIds","map","includes","type","message","fullPropertyPath","res","entry","toString","fileTypes","StoragePropertyField","multiple","existing","baseStoragePath","acceptedFiles","fileName","maxSize","storagePath","storeUrl","includeBucketUrl","imageResize","imageResizeMaxWidth","imageResizeMaxHeight","imageResizeMode","imageResizeFormat","imageResizeQuality","fileNameValue","storagePathValue","T0","T1","maxSizeValue","imageResizeMaxWidthValue","imageResizeMaxHeightValue","imageResizeModeValue","imageResizeFormatValue","imageResizeQualityValue","storedValue","fileTypesValue","isArray","allFileTypesSelected","handleTypesChange","hasFilenameCallback","hasStoragePathCallback","CloudUploadIcon","entries","value_0","MultiSelectItem","preventDefault","stopPropagation","MultiSelect","_temp3","value_1","parseInt","e_1","value_2","e_2","value_3","value_4","_temp4","value_5","_temp5","e_3","value_6","numValue","selected_1","selected","charAt","toUpperCase","slice","selected_0","_temp2","join","editableProperty","property","isPropertyBuilder","dataType","of","editable","removeNonEditableProperties","properties","_","key","propertyOrBuilder","reduce","a","b","PropertyFieldPreview","onClick","includeName","includeEditButton","propertyConfigs","getFieldConfig","propertyConfig","borderColorClass","PropertyConfigBadge","cardClickableMixin","cardSelectedMixin","cardMixin","ErrorBoundary","NonEditablePropertyPreview","FunctionsIcon","DoNotDisturbOnIcon","idToPropertiesPath","replaceAll","namespaceToPropertiesPath","namespace","namespaceToPropertiesOrderPath","getFullId","propertyKey","getFullIdPath","keyWithNamespace","AIModifiedPathsContext","createContext","AIModifiedPathsProvider","modifiedPaths","setModifiedPaths","generationCounter","setGenerationCounter","operations","prev","newSet","op","parts","split","addModifiedPaths","prev_1","newSet_0","p","startsWith","delete","clearPath","clearAllPaths","path_0","p_0","isPathModified","prev_0","useAIModifiedPaths","useContext","PropertyTree","selectedPropertyKey","onPropertyClick","propertiesOrder","propertiesOrderProp","additionalFields","onPropertyMove","onPropertyRemove","inferredPropertyKeys","collectionEditable","propertyKeys","filteredOrder","missingKeys","key_0","activationConstraint","distance","coordinateGetter","sortableKeyboardCoordinates","sensors","useSensors","useSensor","PointerSensor","KeyboardSensor","handleDragEnd","event","active","over","activeId","overId","activeKey","pop","overKey","oldIndex","indexOf","newIndex","newPropertiesOrder","removed","splice","items","key_1","DndContext","closestCenter","restrictToVerticalAxis","SortableContext","verticalListSortingStrategy","additionalField","find","PropertyTreeEntry","attributes","listeners","setNodeRef","transform","transition","isDragging","useSortable","CSS","Translate","zIndex","position","style","isPropertyInferred","fullId","fullIdPath","subtree","aiModifiedPaths","isAIModified","defaultBorderMixin","left","top","bottom","AIModifiedIndicator","DeleteIcon","MoreVertIcon","currentIndex","newOrder","k","unshift","VerticalAlignTopIcon","MenuItem","currentIndex_0","newOrder_0","k_0","push","VerticalAlignBottomIcon","Menu","MapPropertyField","propertyDialogOpen","setPropertyDialogOpen","setSelectedPropertyKey","selectedPropertyNamespace","setSelectedPropertyNamespace","currentPropertiesOrder","onPropertyCreated","propertiesPath","propertiesOrderPath","currentPropertiesOrder_0","deleteProperty","selectedPropertyFullId","selectedProperty","empty","propertiesOrder_0","namespace_0","AddIcon","propertyKey_0","namespace_1","spreadChildren","RepeatPropertyField","ofProperty","ofPropertyError","onPropertyChanged","widget","CommonPropertyFields","forwardRef","ref","disabledId","autoUpdateId","nameError","descriptionError","newNameValue","fontSize","newIdValue","nameTouched","prettifyIdentifier","StringPropertyField","widgetId","BooleanPropertyField","BlockPropertyField","oneOf","addChildButton","namespace_2","NumberPropertyValidation","validationLessThan","validationMoreThan","validationPositive","validationNegative","validationInteger","NumberPropertyField","parseFloat","ReferencePropertyField","asString","navigation","useNavigationController","pathPath","pathValue","pathError","CollectionsSelect","props","collections","groups","ungroupedCollections","selectedCollection","collection","flatMap","group","SelectGroup","collection_0","collection_1","collection_2","col","TIMEZONES","DateTimePropertyField","modeValue","modeError","autoValueValue","autoValueError","timezoneValue","timezoneError","modePath","autoValuePath","v_3","timezonePath","tz_0","tz","v_4","t","AdvancedPropertyValidation","hideFromCollection","readOnly","ConditionsPanel","getPropertyPaths","prefix","paths","fullPath","nestedPaths","ofPropertyOrBuilder","CONDITION_TYPES","OPERATORS","valueType","applicableTo","CONTEXT_FIELDS","getPropertyAtPath","fieldPath","collectionProperties","part","getFieldDataType","contextField","f","getEnumValues","getOperatorsForDataType","applicable","ConditionValueInput","operator","newValue","ev","ConditionRow","rule","onRuleChange","onRemove","availableFields","showRemoveButton","fieldDataType","showValueField","applicableOperators","isFieldMissing","isValueMissing","prop","config","DEFAULT_FIELD_CONFIGS","getFieldColor","newDataType","newApplicableOps","newOperator","op_0","prop_0","hasEnum","op_1","ConditionGroupRow","conditionType","onGroupChange","logic","handleLogicChange","newRules","rules","handleRuleChange","index_0","newRules_0","i","handleRemoveRule","defaultRule","handleAddRule","ct","rule_0","index_1","newRule","simpleRuleToJsonLogic","var","varRef","fieldVar","parsedValue","isNaN","Number","s","jsonLogicToSimpleRule","jsonLogic","args","inArgs","in","right","replace","varObj","groupToJsonLogic","ruleLogics","groupLogics","g","allLogics","jsonLogicToGroup","arg","nestedOperator","nestedGroup","ConditionsEditor","conditions","log","activeConditions","defaultGroup","jsonLogic_0","handleAddCondition","type_0","group_0","jsonLogic_1","handleGroupChange","type_1","newConditions","handleRemoveCondition","availableConditionTypes","type_2","group_1","newGroup","ct_0","ENUM_CONDITION_TYPES","getCurrentPropertyEnumValues","getFieldEnumValues","arrayToObject","arr","result","buildEnumFilterRule","allEnumIds","condition","selectedEnumIds","objectToArray","obj","every","sort","parseEnumFilterRule","ifRule","selectedEnumIdsRaw","conditionObj","EnumConditionRow","onConfigChange","propertyEnumValues","selectedFieldProperty","isBoolean","fieldEnumValues","isEnumSelectionMissing","ev_0","EnumConditionsEditor","bb0","defaultConfig","config_0","rule_1","handleConfigChange","config_1","newConfig","_temp6","KeyValuePropertyField","updatePropertyFromWidget","propertyData","selectedWidgetId","updatedProperty","mergeDeep","storage","multiline","markdown","email","url","userSelect","keyValue","mode","UrlPropertyField","urlValue","supportedFieldsIds","supportedFields","MarkdownPropertyField","markdownValue","isMarkdownObject","htmlValue","html","transformPastedTextValue","transformPastedText","currentMarkdown","updateMarkdownConfig","PropertyForm","includeIdAndName","autoOpenTypeSelect","existingProperty","inArray","existingPropertyKeys","onPropertyChangedImmediate","onDismiss","onDelete","initialErrors","forceShowErrors","getController","initialValue","previousId","lastSubmittedProperty","property_0","params","doOnPropertyChanged","newPropertyWithId","controller","id_0","property_1","resetForm","validateName","keysToCheck","validateId","isValidRegExp","conditionErrors","conditionTypes","isIncompleteRule","ruleStr","JSON","stringify","enumType","if","debugId","validateOnInitialRender","onSubmit","formexController","PropertyFormDialog","formProps","onCancel","onOkClicked","formexRef","helpers","handleSubmit","PropertyEditFormFields","setValues","includeIdAndTitle","selectOpen","setSelectOpen","deleteDialogOpen","setDeleteDialogOpen","getFieldId","selectedFieldConfigId","setSelectedFieldConfigId","deferredValues","useDeferredValue","nameFieldRef","selectedWidgetError","newSelectedWidgetId","setTimeout","focus","onWidgetSelectChanged","childComponent","InfoLabel","hasValue","ConfirmationDialog","idRegEx","match","WIDGET_TYPE_MAP","text_field","switch","user_select","select","multi_select","number_input","number_select","multi_number_select","file_upload","multi_file_upload","reference","reference_as_string","multi_references","date_time","key_value","repeat","custom_array","block","WidgetSelectView","initialProperty","onValueChange","onOpenChange","allSupportedFields","concat","displayedWidgets","propertyConfig_1","baseProperty","baseFieldConfig","computedFieldConfig","fieldBackgroundDisabledMixin","fieldBackgroundHoverMixin","fieldBackgroundMixin","key_2","propertyConfig_2","groupKey","propertyConfig_0","WidgetSelectViewItem","shouldWarnChangingDataType","WarningIcon","Card","KanbanConfigSection","forceExpanded","authController","customizationController","panelRef","columnPropertyDialogOpen","setColumnPropertyDialogOpen","resolvedCollection","resolveCollection","enumStringProperties","kanbanConfig","kanban","columnPropertyMissing","columnProperty","scrollIntoView","behavior","showCreateButton","dialogPropertyKey","dialogPropertyName","unslugify","fieldConfig","CloseIcon","newProperties","DisplaySettingsForm","expandKanban","orderPropertyDialogOpen","setOrderPropertyDialogOpen","numberProperties","openEntityMode","defaultViewMode","orderPropertyMissing","orderProperty","defaultSize","sideDialogWidth","inlineEditing","includeJsonView","camelCase","str","toLowerCase","substring","GetCodeDialog","snackbarController","format","setFormat","tsCode","collectionData","collectionToCode","JSON5","jsonCode","code","Tab","Tabs","Highlight","themes","vsDark","navigator","clipboard","writeText","ContentCopyIcon","tokens","getLineProps","getTokenProps","line","token","propertyCleanup","valueCopy","clone","isEmptyObject","childRes","fromBuilder","resolved","resolvedProperties","initialFilter","initialSort","subcollections","CollectionPropertiesEditorForm","propertyErrorsRef","onPropertyError","setDirty","reservedGroups","extraIcon","getUser","doCollectionInference","dirty","largeLayout","useLargeLayout","asDialog","selectedPropertyIndex","setSelectedPropertyIndex","codeDialogOpen","setCodeDialogOpen","inferringProperties","setInferringProperties","newPropertyDialogOpen","setNewPropertyDialogOpen","setInferredPropertyKeys","currentPropertiesOrderRef","inferPropertiesFromData","debug","newCollection","makePropertiesEditable","findNewPropertyKeys","existingProps","newProps","fullKey","existingProp","newProp","existingMapProps","addNewPropertiesOnly","updatedProperties","allNewPropertyKeys","newTopLevelPropertyKeys","allExistingKeys","updatedPropertiesOrder","updatePropertiesOrder","getCurrentPropertiesOrder","propertyPath","previousFullId","previousPropertyPath","onPropertyErrorInternal","closePropertyDialog","emptyCollection","usedPropertiesOrder","owner","ownerId","body","displayName","CodeIcon","UnsavedChangesDialog","handleOk","handleCancel","title","EntityCustomViewsSelectDialog","entityViews","view","SubcollectionsEditTab","configController","collectionInference","parentCollectionIds","embedded","contextEntityViews","subcollectionToDelete","setSubcollectionToDelete","addEntityViewDialogOpen","setAddEntityViewDialogOpen","viewToDelete","setViewToDelete","currentDialog","setCurrentDialog","setSubcollections","T2","resolvedEntityViews","resolveEntityView","hardCodedEntityViews","totalEntityViews","Table","TableBody","subcollection","TableRow","editedCollectionId","TableCell","Alert","content","deleteCollection","e_4","e_5","updatedCollection","selectedViewKey","e_6","view_0","EntityActionsSelectDialog","entityActions","action","EntityActionsEditTab","contextEntityActions","addEntityActionDialogOpen","setAddEntityActionDialogOpen","actionToDelete","setActionToDelete","resolvedEntityActions","resolveEntityAction","hardCodedEntityActions","totalEntityActions","selectedActionKey","action_1","action_0","ExtendSettingsForm","isMergedCollection","onResetToCode","VALID_DATA_TYPES","validateProperty","ofProp","validateProperties","validateOptionalFields","stringFields","booleanFields","item","sub","subErrors","validateCollectionObject","err","validViewModes","validateCollectionJson","jsonString","parsed","parse","lines","column","valid","EXAMPLE_JSON","CollectionJsonImportDialog","onImport","jsonValue","setJsonValue","setErrors","setTouched","handleJsonChange","result_0","handleImport","handleClose","isValid","productsCollectionTemplate","brand","main_image","available","columnWidth","price","requiredMessage","images","related_products","metadata","added_on","autoValue","blogCollectionTemplate","header_image","cacheControl","typeField","valueField","text","quote","products","previewProperties","created_on","status","published","draft","publish_date","clearable","reviewed","tags","previewAsTag","usersCollectionTemplate","emailVerified","phone","favourite_products","photoURL","pagesCollectionTemplate","slug","unique","matchesMessage","hero_section","headline","subhead","background_image","call_to_action","call_to_action_link","section","image","link","slider","sidebar","seo_metadata","meta_title","meta_description","focus_keywords","footer_override","last_updated","is_published","useCollectionEditorController","CollectionEditorContext","CollectionGenerationApiError","constructor","DEFAULT_COLLECTION_GENERATION_ENDPOINT","buildCollectionGenerationCallback","getAuthToken","apiEndpoint","request","response","fetch","method","headers","Authorization","ok","errorData","json","AICollectionGeneratorPopover","existingCollection","onGenerated","generateCollection","trigger","showLabel","menuOpen","setMenuOpen","prompt","setPrompt","loading","setLoading","setError","existingCollections","handleGenerate","collectionsContext","c","errorMessage","handleKeyDown","shiftKey","defaultTrigger","AIIcon","CollectionEditorWelcomeView","onContinue","existingCollectionPaths","pathSuggestions","filteredSuggestions","jsonImportOpen","setJsonImportOpen","suggestion","generatedCollection","ImportFileUpload","Icon","TemplateButton","subtitle","CollectionEditorImportMapping","importConfig","setSelectedProperty","newPropertiesOrder_0","newHeadersMapping","headersMapping","setHeadersMapping","importData","importKey","fullId_0","propertyPath_0","d","inferredNewProperty","buildPropertyFromData","getInferenceType","onPropertyTypeChanged","property_2","importKey_0","isIdColumn","ImportNewPropertyFieldPreview","propertyKey_1","DataNewPropertiesMapping","PropertySelect","fieldId","newProperty","widget_0","PropertySelectItem","optionDisabled","CollectionEditorImportDataPreview","loadEntities","mappedData","convertDataToEntity","idColumn","defaultValues","setEntities","selectionController","useSelectionController","CircularProgressCenter","entities","dataLoading","noMoreToLoad","EntityCollectionTable","cleanPropertiesFromImport","parentSlug","acc","slugify","fullSlug","slugifiedResult","firstKey","CollectionEditorDialog","formDirty","setFormDirty","unsavedChangesDialogOpen","setUnsavedChangesDialogOpen","CollectionEditor","topLevelNavigation","initialValuesProp","copyFromProp","copyFrom","includeTemplates","collectionsInThisLevel","existingPaths","existingIds","setCollection","initialLoadingCompleted","setInitialLoadingCompleted","initialised","getCollectionFromPaths","initialCollection","randomString","applyPropertyConfigs","user","uid","coolIconKeys","Math","floor","random","CollectionEditorInternal","extraView","existingEntities","initialView","initialViewProp","useImportConfig","currentView","setCurrentView","saveCollection","setNextMode","inUse","parentPaths","inferCollectionFromData","Promise","resolve","inferredCollection","newCollectionState","schema","validateSync","abortEarly","inner","validatePath","formController","isSubmitting","updatedFullPath","convertIdsToPaths","resolvedPath","resolveIdsFrom","getDataWithPath","existingData","onImportDataSet","setInUse","buildEntityPropertiesFromData","setIdColumn","setImportData","filteredHeadingsOrder","setHeadingsOrder","setOriginProperties","mappedHeadings","validValues","onImportMappingComplete","merged","deleteRequested","setDeleteRequested","onWelcomeScreenContinue","handleAIGenerated","View","ImportSaveInProgress","importedCollection","removeUndefined","validate","ErrorView","ArrowBackIcon","LoadingButton","CheckIcon","rest","propertiesResult","applyPropertiesConfig","internalProperty","subpaths","removeInitialAndTrailingSlashes","ConfigControllerContext","ConfigControllerProvider","collectionConfigController","configPermissions","onAnalyticsEvent","navigate","useNavigate","currentPropertyDialog","setCurrentPropertyDialog","defaultConfigPermissions","redirect","editCollection","parentCollectionIds_0","existingEntities_0","lastIndexOf","propertyKeyWithoutNamespace","editProperty","parentCollectionIds_1","parentCollection_0","sourceClick","createCollection","buildUrlCollectionPath","fetchedData","saveProperty","createCollections","editCollections","deleteCollections","EditorCollectionAction","tableController","navigationController","collectionEditorController","getCollectionFromIds","canEditCollection","editorButton","useCollectionsConfigController","HomePageEditorCollectionAction","permissions","onEditCollectionClicked","onDuplicateCollectionClicked","event_0","event_1","CollectionViewHeaderAction","onHover","PropertyAddColumnComponent","getDefaultPropertiesOrder","NewCollectionButton","EditorCollectionActionStart","saveDefaultFilterButton","getObjectOrNull","filterValues","sortBy","SaveIcon","clearFilter","setFilterValues","setSortBy","UndoIcon","o","NewCollectionCard","context","canCreateCollections","EditorEntityAction","formContext","isDirty","KanbanSetupAction","handleConfigureClick","AddKanbanColumnAction","dialogOpen","setDialogOpen","newValueLabel","setNewValueLabel","saving","setSaving","getPropertyInPath","stringProperty","handleAddColumn","useCallback","isCodeDefinedProperty","newId","newEnumValue","existingEnumValues","updatedEnumValues","useCollectionEditorPlugin","includeIntroView","Component","navigationEntries","saveNavigationEntries","additionalActions","additionalChildrenStart","CollectionActions","AdditionalCards","allowDragAndDrop","onNavigationEntriesUpdate","updateKanbanColumnsOrder","CollectionActionsStart","HeaderAction","AddColumnComponent","onColumnsReorder","onKanbanColumnsReorder","KanbanSetupComponent","AddKanbanColumnComponent","ActionsTop","provider","homePage","collectionView","IntroWidget","mergeCollections","baseCollections","backendCollections","modifyCollection","markAsEditable","joinCollectionLists","indexA","findIndex","indexB","MissingReferenceWidget","pathProp","getLastSegment","getParentCollectionIds","collectionEditor","segments"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.umd.js","sources":["../src/ui/collection_editor/CollectionYupValidation.tsx","../src/ui/collection_editor/GeneralSettingsForm.tsx","../src/ui/collection_editor/LayoutModeSwitch.tsx","../src/ui/collection_editor/ViewModeSwitch.tsx","../src/ui/collection_editor/EnumForm.tsx","../src/ui/collection_editor/SwitchControl.tsx","../src/ui/collection_editor/properties/validation/GeneralPropertyValidation.tsx","../src/ui/collection_editor/properties/validation/StringPropertyValidation.tsx","../src/ui/collection_editor/properties/validation/ArrayPropertyValidation.tsx","../src/ui/collection_editor/properties/validation/ValidationPanel.tsx","../src/ui/collection_editor/properties/EnumPropertyField.tsx","../src/ui/collection_editor/properties/StoragePropertyField.tsx","../src/utils/entities.ts","../src/ui/collection_editor/PropertyFieldPreview.tsx","../src/ui/collection_editor/util.ts","../src/ui/collection_editor/AIModifiedPathsContext.tsx","../src/ui/collection_editor/PropertyTree.tsx","../src/ui/collection_editor/properties/MapPropertyField.tsx","../src/ui/collection_editor/properties/RepeatPropertyField.tsx","../src/ui/collection_editor/properties/CommonPropertyFields.tsx","../src/ui/collection_editor/properties/StringPropertyField.tsx","../src/ui/collection_editor/properties/BooleanPropertyField.tsx","../src/ui/collection_editor/properties/BlockPropertyField.tsx","../src/ui/collection_editor/properties/validation/NumberPropertyValidation.tsx","../src/ui/collection_editor/properties/NumberPropertyField.tsx","../src/ui/collection_editor/properties/ReferencePropertyField.tsx","../src/ui/collection_editor/properties/DateTimePropertyField.tsx","../src/ui/collection_editor/properties/advanced/AdvancedPropertyValidation.tsx","../src/ui/collection_editor/properties/conditions/ConditionsPanel.tsx","../src/ui/collection_editor/properties/conditions/property_paths.ts","../src/ui/collection_editor/properties/conditions/ConditionsEditor.tsx","../src/ui/collection_editor/properties/conditions/EnumConditionsEditor.tsx","../src/ui/collection_editor/properties/KeyValuePropertyField.tsx","../src/ui/collection_editor/utils/update_property_for_widget.ts","../src/ui/collection_editor/properties/UrlPropertyField.tsx","../src/ui/collection_editor/utils/supported_fields.tsx","../src/ui/collection_editor/properties/MarkdownPropertyField.tsx","../src/ui/collection_editor/PropertyEditView.tsx","../src/ui/collection_editor/KanbanConfigSection.tsx","../src/ui/collection_editor/DisplaySettingsForm.tsx","../src/ui/collection_editor/utils/strings.ts","../src/ui/collection_editor/GetCodeDialog.tsx","../src/ui/collection_editor/CollectionPropertiesEditorForm.tsx","../src/ui/collection_editor/UnsavedChangesDialog.tsx","../src/ui/collection_editor/EntityCustomViewsSelectDialog.tsx","../src/ui/collection_editor/SubcollectionsEditTab.tsx","../src/ui/collection_editor/EntityActionsSelectDialog.tsx","../src/ui/collection_editor/EntityActionsEditTab.tsx","../src/ui/collection_editor/ExtendSettingsForm.tsx","../src/utils/validateCollectionJson.ts","../src/ui/collection_editor/CollectionJsonImportDialog.tsx","../src/ui/collection_editor/templates/products_template.ts","../src/ui/collection_editor/templates/blog_template.ts","../src/ui/collection_editor/templates/users_template.ts","../src/ui/collection_editor/templates/pages_template.ts","../src/useCollectionEditorController.tsx","../src/api/generateCollectionApi.ts","../src/ui/collection_editor/AICollectionGeneratorPopover.tsx","../src/ui/collection_editor/CollectionEditorWelcomeView.tsx","../src/ui/collection_editor/import/CollectionEditorImportMapping.tsx","../src/ui/collection_editor/import/CollectionEditorImportDataPreview.tsx","../src/ui/collection_editor/import/clean_import_data.ts","../src/ui/collection_editor/CollectionEditorDialog.tsx","../src/ConfigControllerProvider.tsx","../src/ui/EditorCollectionAction.tsx","../src/useCollectionsConfigController.tsx","../src/ui/HomePageEditorCollectionAction.tsx","../src/ui/CollectionViewHeaderAction.tsx","../src/ui/PropertyAddColumnComponent.tsx","../src/ui/NewCollectionButton.tsx","../src/ui/EditorCollectionActionStart.tsx","../src/ui/NewCollectionCard.tsx","../src/ui/EditorEntityAction.tsx","../src/ui/KanbanSetupAction.tsx","../src/ui/AddKanbanColumnAction.tsx","../src/useCollectionEditorPlugin.tsx","../src/utils/collections.ts","../src/ui/MissingReferenceWidget.tsx"],"sourcesContent":["import * as Yup from \"yup\";\n\nexport const YupSchema = Yup.object().shape({\n id: Yup.string().required(\"Required\"),\n name: Yup.string().required(\"Required\"),\n path: Yup.string().required(\"Required\")\n});\n","import React, { useState } from \"react\";\nimport {\n EntityCollection,\n FieldCaption,\n IconForView,\n SearchIconsView,\n singular,\n toSnakeCase,\n useAuthController,\n useCustomizationController\n} from \"@firecms/core\";\nimport {\n BooleanSwitchWithLabel,\n Chip,\n cls,\n Container,\n DebouncedTextField,\n Dialog,\n ExpandablePanel,\n HistoryIcon,\n IconButton,\n SearchIcon,\n Select,\n SelectItem,\n TextField,\n Tooltip,\n Typography\n} from \"@firecms/ui\";\n\nimport { Field, getIn, useFormex } from \"@firecms/formex\";\n\nexport function GeneralSettingsForm({\n isNewCollection,\n existingPaths,\n existingIds,\n parentCollection\n}: {\n isNewCollection: boolean;\n existingPaths?: string[];\n existingIds?: string[];\n parentCollection?: EntityCollection;\n}) {\n\n const {\n values,\n setFieldValue,\n handleChange,\n touched,\n errors,\n setFieldTouched,\n submitCount\n } = useFormex<EntityCollection>();\n\n const [iconDialogOpen, setIconDialogOpen] = useState(false);\n\n const authController = useAuthController();\n const customizationController = useCustomizationController();\n\n const updateDatabaseId = (databaseId: string) => {\n setFieldValue(\"databaseId\", databaseId ?? undefined);\n }\n\n const updateName = (name: string) => {\n setFieldValue(\"name\", name);\n\n const pathTouched = getIn(touched, \"path\");\n if (!pathTouched && isNewCollection && name) {\n setFieldValue(\"path\", toSnakeCase(name));\n }\n\n const idTouched = getIn(touched, \"id\");\n if (!idTouched && isNewCollection && name) {\n setFieldValue(\"id\", toSnakeCase(name));\n }\n\n const singularNameTouched = getIn(touched, \"singularName\");\n if (!singularNameTouched && isNewCollection && name) {\n setFieldValue(\"singularName\", singular(name));\n }\n };\n\n const collectionIcon = <IconForView collectionOrView={values} />;\n const isSubcollection = !!parentCollection;\n const showErrors = submitCount > 0;\n\n return (\n <div className={\"overflow-auto my-auto\"}>\n <Container maxWidth={\"4xl\"} className={\"flex flex-col gap-4 p-8 m-auto\"}>\n\n <div>\n <div className=\"flex flex-row gap-2 py-2 pt-3 items-center\">\n <Typography variant={!isNewCollection ? \"h5\" : \"h4\"} className={\"flex-grow\"}>\n {isNewCollection ? \"New collection\" : `${values?.name} collection`}\n </Typography>\n <DefaultDatabaseField databaseId={values.databaseId}\n onDatabaseIdUpdate={updateDatabaseId} />\n\n <Tooltip title={\"Change icon\"}\n asChild={true}>\n <IconButton\n shape={\"square\"}\n onClick={() => setIconDialogOpen(true)}>\n {collectionIcon}\n </IconButton>\n </Tooltip>\n </div>\n\n {parentCollection && <Chip colorScheme={\"tealDarker\"}>\n <Typography variant={\"caption\"}>\n This is a subcollection of <b>{parentCollection.name}</b>\n </Typography>\n </Chip>}\n\n </div>\n\n <div className={\"grid grid-cols-12 gap-4\"}>\n\n {/* Name */}\n <div className={\"col-span-12\"}>\n <TextField\n value={values.name ?? \"\"}\n onChange={(e: any) => updateName(e.target.value)}\n label={\"Name\"}\n autoFocus={true}\n required\n error={showErrors && Boolean(errors.name)} />\n <FieldCaption error={touched.name && Boolean(errors.name)}>\n {touched.name && Boolean(errors.name) ? errors.name : \"Name of this collection, usually a plural name (e.g. Products)\"}\n </FieldCaption>\n </div>\n\n {/* Path */}\n <div className={cls(\"col-span-12\")}>\n <Field name={\"path\"}\n as={DebouncedTextField}\n label={\"Path\"}\n required\n error={showErrors && Boolean(errors.path)} />\n\n <FieldCaption error={touched.path && Boolean(errors.path)}>\n {touched.path && Boolean(errors.path)\n ? errors.path\n : isSubcollection ? \"Relative path to the parent (no need to include the parent path)\" : \"Path that this collection is stored in, in the database\"}\n </FieldCaption>\n </div>\n\n {/* Singular Name */}\n <div className={\"col-span-12\"}>\n <TextField\n error={showErrors && Boolean(errors.singularName)}\n name={\"singularName\"}\n aria-describedby={\"singularName-helper\"}\n onChange={(e) => {\n setFieldTouched(\"singularName\", true);\n return handleChange(e);\n }}\n value={values.singularName ?? \"\"}\n label={\"Singular name\"} />\n <FieldCaption error={showErrors && Boolean(errors.singularName)}>\n {showErrors && Boolean(errors.singularName) ? errors.singularName : \"Optionally define a singular name for your entities\"}\n </FieldCaption>\n </div>\n\n {/* Description */}\n <div className={\"col-span-12\"}>\n <TextField\n error={showErrors && Boolean(errors.description)}\n name=\"description\"\n value={values.description ?? \"\"}\n onChange={handleChange}\n multiline\n minRows={2}\n aria-describedby=\"description-helper-text\"\n label=\"Description\"\n />\n <FieldCaption error={showErrors && Boolean(errors.description)}>\n {showErrors && Boolean(errors.description) ? errors.description : \"Description of the collection, you can use markdown\"}\n </FieldCaption>\n </div>\n\n {/* Collection ID */}\n <div className={\"col-span-12\"}>\n <Field name={\"id\"}\n as={DebouncedTextField}\n disabled={!isNewCollection}\n label={\"Collection ID\"}\n error={showErrors && Boolean(errors.id)} />\n <FieldCaption error={touched.id && Boolean(errors.id)}>\n {touched.id && Boolean(errors.id) ? errors.id : \"This ID identifies this collection. Typically the same as the path.\"}\n </FieldCaption>\n </div>\n\n {/* Collection Group */}\n <div className={\"col-span-12\"}>\n <BooleanSwitchWithLabel\n position={\"start\"}\n size={\"large\"}\n label=\"Collection group\"\n onValueChange={(v) => setFieldValue(\"collectionGroup\", v)}\n value={values.collectionGroup ?? false}\n />\n <FieldCaption>\n A collection group consists of all collections with the same path. This allows\n you to query over multiple collections at once.\n </FieldCaption>\n </div>\n\n </div>\n\n {/* Advanced Settings */}\n <ExpandablePanel\n title={<Typography variant=\"subtitle2\">Advanced settings</Typography>}\n initiallyExpanded={false}\n className=\"mt-4\"\n innerClassName=\"p-4 flex flex-col gap-4\"\n >\n {/* History revisions */}\n <div>\n <BooleanSwitchWithLabel\n position={\"start\"}\n size={\"large\"}\n allowIndeterminate={true}\n label={<span className=\"flex items-center gap-2\"><HistoryIcon size={\"smallest\"} />{values.history === null || values.history === undefined ? \"Document history revisions enabled if enabled globally\" : (\n values.history ? \"Document history revisions ENABLED\" : \"Document history revisions NOT enabled\"\n )}</span>}\n onValueChange={(v) => setFieldValue(\"history\", v)}\n value={values.history === undefined ? null : values.history}\n />\n <FieldCaption>\n When enabled, each document in this collection will have a history of changes.\n This is useful for auditing purposes. The data is stored in a subcollection of the document\n in your database, called <b>__history</b>.\n </FieldCaption>\n </div>\n\n {/* Document ID generation */}\n <div>\n <Select\n name=\"customId\"\n label=\"Document IDs generation\"\n position={\"item-aligned\"}\n size={\"large\"}\n fullWidth={true}\n disabled={typeof values.customId === \"object\"}\n onValueChange={(v) => {\n if (v === \"code_defined\")\n throw new Error(\"This should not happen\");\n if (v === \"false\") setFieldValue(\"customId\", false);\n else if (v === \"true\") setFieldValue(\"customId\", true);\n else if (v === \"optional\") setFieldValue(\"customId\", \"optional\");\n }}\n value={\n typeof values.customId === \"object\" ? \"code_defined\" :\n values.customId === true ? \"true\" :\n values.customId === \"optional\" ? \"optional\" : \"false\"\n }\n renderValue={(value: any) => {\n if (value === \"code_defined\")\n return \"Code defined\";\n else if (value === \"true\")\n return \"Users must define an ID\";\n else if (value === \"optional\")\n return \"Users can define an ID, but it is not required\";\n else\n return \"Document ID is generated automatically\";\n }}\n >\n <SelectItem value={\"false\"}>\n Document ID is generated automatically\n </SelectItem>\n <SelectItem value={\"true\"}>\n Users must define an ID\n </SelectItem>\n <SelectItem value={\"optional\"}>\n Users can define an ID, but it is not required\n </SelectItem>\n </Select>\n <FieldCaption>\n Configure how document IDs are generated when creating new entities.\n </FieldCaption>\n </div>\n\n {/* Text search */}\n <div>\n <BooleanSwitchWithLabel\n position={\"start\"}\n size={\"large\"}\n label={<span className=\"flex items-center gap-2\"><SearchIcon size={\"smallest\"} />Enable text search for this collection</span>}\n onValueChange={(v) => setFieldValue(\"textSearchEnabled\", v)}\n value={values.textSearchEnabled ?? false}\n />\n <FieldCaption>\n Allow text search for this collection. If you have not specified a text search\n delegate, this will use the built-in local text search. This is not recommended\n for large collections, as it may incur in performance and cost issues.\n </FieldCaption>\n </div>\n </ExpandablePanel>\n\n <div style={{ height: \"52px\" }} />\n\n <Dialog\n open={iconDialogOpen}\n onOpenChange={setIconDialogOpen}\n maxWidth={\"xl\"}\n fullWidth\n >\n <div className={\"p-4 overflow-auto min-h-[200px]\"}>\n <SearchIconsView selectedIcon={typeof values.icon === \"string\" ? values.icon : undefined}\n onIconSelected={(icon: string) => {\n setIconDialogOpen(false);\n setFieldValue(\"icon\", icon);\n }} />\n </div>\n </Dialog>\n\n </Container>\n </div>\n );\n}\n\nfunction DefaultDatabaseField({\n databaseId,\n onDatabaseIdUpdate\n}: { databaseId?: string, onDatabaseIdUpdate: (databaseId: string) => void }) {\n\n return <Tooltip title={\"Database ID\"}\n side={\"top\"}\n align={\"start\"}>\n <TextField size={\"small\"}\n invisible={true}\n inputClassName={\"text-end\"}\n value={databaseId ?? \"\"}\n onChange={(e: any) => onDatabaseIdUpdate(e.target.value)}\n placeholder={\"(default)\"}></TextField>\n </Tooltip>\n}\n","import { cls, SquareIcon, ToggleButtonGroup, Typography, VerticalSplitIcon } from \"@firecms/ui\";\n\nexport function LayoutModeSwitch({\n value,\n onChange,\n className\n}: {\n value: \"side_panel\" | \"full_screen\";\n onChange: (value: \"side_panel\" | \"full_screen\") => void;\n className?: string;\n}) {\n\n return <div className={cls(className)}>\n <Typography variant={\"label\"} color={\"secondary\"} className={\"ml-3.5\"}>Document view</Typography>\n <div className={\"my-2\"}>\n <ToggleButtonGroup\n value={value}\n onValueChange={onChange}\n options={[\n {\n value: \"side_panel\",\n label: \"Side panel\",\n icon: <VerticalSplitIcon />\n },\n {\n value: \"full_screen\",\n label: \"Full screen\",\n icon: <SquareIcon />\n }\n ]}\n />\n </div>\n <Typography variant={\"caption\"} color={\"secondary\"} className={\"ml-3.5\"}>Should documents be opened full screen or in an inline side dialog</Typography>\n </div>\n}\n","import { ViewMode } from \"@firecms/core\";\nimport { AppsIcon, cls, ListIcon, ToggleButtonGroup, Typography, ViewKanbanIcon } from \"@firecms/ui\";\n\nexport function ViewModeSwitch({\n value,\n onChange,\n className\n}: {\n value: ViewMode;\n onChange: (value: ViewMode) => void;\n className?: string;\n}) {\n\n return <div className={cls(className)}>\n <Typography variant={\"label\"} color={\"secondary\"} className={\"ml-3.5\"}>Default collection view</Typography>\n <div className={\"my-2\"}>\n <ToggleButtonGroup\n value={value}\n onValueChange={onChange}\n options={[\n {\n value: \"table\",\n label: \"Table\",\n icon: <ListIcon />\n },\n {\n value: \"cards\",\n label: \"Cards\",\n icon: <AppsIcon />\n },\n {\n value: \"kanban\",\n label: \"Kanban\",\n icon: <ViewKanbanIcon />\n }\n ]}\n />\n </div>\n <Typography variant={\"caption\"} color={\"secondary\"} className={\"ml-3.5\"}>Choose how entities should be displayed by default</Typography>\n </div>\n}\n","import React, { useEffect } from \"react\";\nimport equal from \"react-fast-compare\"\n\nimport { ArrayContainer, ArrayEntryParams, EnumValueConfig, EnumValues, FieldCaption, } from \"@firecms/core\";\nimport {\n FindInPageIcon,\n Badge,\n Button,\n ChipColorKey,\n CircularProgress,\n ColorPicker,\n DebouncedTextField,\n Dialog,\n DialogActions,\n DialogContent,\n DialogTitle,\n getColorSchemeForKey,\n getColorSchemeForSeed,\n IconButton,\n ListIcon,\n Paper,\n SettingsIcon,\n Typography\n} from \"@firecms/ui\";\nimport { extractEnumFromValues } from \"@firecms/schema_inference\";\nimport { Field, Formex, getIn, useCreateFormex, useFormex } from \"@firecms/formex\";\n\ntype EnumFormProps = {\n enumValues: EnumValueConfig[];\n onValuesChanged?: (enumValues: EnumValueConfig[]) => void;\n onError?: (error: boolean) => void;\n updateIds: boolean;\n disabled: boolean;\n allowDataInference?: boolean;\n getData?: () => Promise<string[]>;\n};\n\nexport function EnumForm({\n enumValues,\n onValuesChanged,\n onError,\n updateIds,\n disabled,\n allowDataInference,\n getData\n}: EnumFormProps) {\n\n const formex = useCreateFormex<{\n enumValues: EnumValueConfig[]\n }>({\n initialValues: { enumValues },\n validateOnChange: true,\n validation: (values) => {\n const errors: any = {};\n if (values.enumValues) {\n values.enumValues.forEach((enumValue, index) => {\n if (!enumValue?.label) {\n errors.enumValues = errors.enumValues ?? [];\n errors.enumValues[index] = errors.enumValues[index] ?? {};\n errors.enumValues[index].label = \"You must specify a label for this enum value entry\";\n }\n if (!enumValue?.id) {\n errors.enumValues = errors.enumValues ?? [];\n errors.enumValues[index] = errors.enumValues[index] ?? {};\n errors.enumValues[index].id = \"You must specify an ID for this enum value entry\";\n }\n });\n }\n const hasError = Boolean(errors?.enumValues && Object.keys(errors?.enumValues).length > 0);\n onError?.(hasError);\n return errors;\n }\n });\n\n const {\n values,\n errors\n } = formex;\n\n useEffect(() => {\n if (onValuesChanged) {\n onValuesChanged(values.enumValues);\n }\n }, [values.enumValues]);\n\n return <Formex value={formex}>\n <EnumFormFields enumValuesPath={\"enumValues\"}\n values={values}\n errors={errors}\n shouldUpdateId={updateIds}\n disabled={disabled}\n allowDataInference={allowDataInference}\n getData={getData} />\n </Formex>\n\n}\n\ntype EnumFormFieldsProps = {\n values: {\n enumValues: EnumValueConfig[]\n };\n errors: any;\n enumValuesPath: string;\n shouldUpdateId: boolean;\n disabled: boolean;\n getData?: () => Promise<string[]>;\n allowDataInference?: boolean;\n};\n\n// const EnumFormFields = React.memo(\nfunction EnumFormFields({\n values,\n errors,\n disabled,\n enumValuesPath,\n shouldUpdateId,\n allowDataInference,\n getData,\n}: EnumFormFieldsProps) {\n\n const {\n setFieldValue\n } = useFormex();\n\n const [lastInternalIdAdded, setLastInternalIdAdded] = React.useState<number | undefined>();\n const [editDialogIndex, setEditDialogIndex] = React.useState<number | undefined>();\n const [inferring, setInferring] = React.useState(false);\n\n const inferredValuesRef = React.useRef(new Set());\n const inferredValues = inferredValuesRef.current;\n\n const buildEntry = ({\n index,\n internalId\n }: ArrayEntryParams) => {\n const justAdded = lastInternalIdAdded === internalId;\n const entryError = errors?.enumValues && errors?.enumValues[index];\n return <EnumEntry index={index}\n disabled={disabled}\n enumValuesPath={enumValuesPath}\n autoFocus={justAdded}\n entryError={entryError}\n shouldUpdateId={shouldUpdateId || justAdded}\n onDialogOpen={() => setEditDialogIndex(index)}\n inferredEntry={inferredValues.has(values.enumValues[index]?.id as string)}\n key={`${internalId}`} />;\n };\n\n const inferValues = async () => {\n if (!getData) {\n console.warn(\"INTERNAL: No getData function provided for data inference\");\n return;\n }\n setInferring(true);\n getData?.().then((data) => {\n if (!data)\n return;\n\n const flatData = data.flat();\n\n const fieldData = Array.from(new Set(flatData));\n\n const currentEnumValues = values.enumValues;\n const foundEnumValues = extractEnumFromValues(fieldData);\n\n // add only new enum values\n const newEnumValues = foundEnumValues.filter((enumValue) => {\n return !currentEnumValues?.some((v: any) => v.id === enumValue.id);\n });\n\n newEnumValues.forEach((enumValue) => {\n inferredValues.add(enumValue.id);\n });\n setFieldValue(enumValuesPath, [...newEnumValues, ...currentEnumValues], true);\n }).catch(e => {\n console.error(e);\n })\n .finally(() => setInferring(false));\n }\n\n return (\n <div className={\"col-span-12\"}>\n <div className=\"ml-3.5 flex flex-row items-center\">\n <ListIcon />\n <Typography variant={\"subtitle2\"}\n className=\"ml-2 grow\">\n Values\n </Typography>\n {allowDataInference &&\n <Button \n disabled={disabled || inferring}\n variant={\"text\"}\n size={\"small\"}\n onClick={inferValues}>\n {inferring ? <CircularProgress size={\"smallest\"} /> : <FindInPageIcon />}\n Infer values from data\n </Button>}\n </div>\n\n <Paper className=\"p-4 m-1\">\n\n <ArrayContainer droppableId={enumValuesPath}\n addLabel={\"Add enum value\"}\n value={values.enumValues}\n disabled={disabled}\n size={\"small\"}\n buildEntry={buildEntry}\n onInternalIdAdded={setLastInternalIdAdded}\n canAddElements={true}\n onValueChange={(value) => setFieldValue(enumValuesPath, value)}\n newDefaultEntry={{\n id: \"\",\n label: \"\"\n }} />\n\n <EnumEntryDialog index={editDialogIndex}\n open={editDialogIndex !== undefined}\n enumValuesPath={enumValuesPath}\n onClose={() => setEditDialogIndex(undefined)} />\n </Paper>\n </div>\n );\n}\n\ntype EnumEntryProps = {\n index: number,\n enumValuesPath: string,\n shouldUpdateId: boolean,\n autoFocus: boolean,\n onDialogOpen: () => void;\n disabled: boolean;\n inferredEntry?: boolean;\n entryError?: { label?: string, id?: string }\n};\n\nconst EnumEntry = React.memo(\n function EnumEntryInternal({\n index,\n shouldUpdateId: updateId,\n enumValuesPath,\n autoFocus,\n onDialogOpen,\n disabled,\n inferredEntry,\n entryError\n }: EnumEntryProps) {\n\n const {\n values,\n handleChange,\n errors,\n setFieldValue,\n touched\n } = useFormex<EnumValues>();\n\n const shouldUpdateIdRef = React.useRef(!getIn(values, `${enumValuesPath}[${index}].id`));\n const shouldUpdateId = updateId || shouldUpdateIdRef.current;\n\n const idValue = getIn(values, `${enumValuesPath}[${index}].id`);\n const labelValue = getIn(values, `${enumValuesPath}[${index}].label`);\n\n const currentLabelRef = React.useRef(labelValue);\n\n React.useEffect(() => {\n if ((currentLabelRef.current === idValue || !idValue) && shouldUpdateId) {\n setFieldValue(`${enumValuesPath}[${index}].id`, labelValue);\n }\n currentLabelRef.current = labelValue;\n }, [labelValue]);\n\n const colorValue = getIn(values, `${enumValuesPath}[${index}].color`) as ChipColorKey | undefined;\n const colorScheme = colorValue\n ? getColorSchemeForKey(colorValue)\n : idValue\n ? getColorSchemeForSeed(String(idValue))\n : undefined;\n\n return (\n <>\n <div className={\"flex w-full align-center justify-center\"}>\n <Field name={`${enumValuesPath}[${index}].label`}\n as={DebouncedTextField}\n className={\"flex-grow\"}\n required\n disabled={disabled}\n size=\"small\"\n autoFocus={autoFocus}\n autoComplete=\"off\"\n endAdornment={inferredEntry && <FindInPageIcon size={\"small\"} />}\n error={Boolean(entryError?.label)} />\n\n {!disabled && <>\n {/* Color indicator - clickable to open settings */}\n <button\n type=\"button\"\n onClick={() => onDialogOpen()}\n className=\"w-5 h-5 rounded-full flex-shrink-0 self-center border border-surface-accent-200 dark:border-surface-accent-700 hover:scale-110 transition-transform cursor-pointer ml-3\"\n style={{\n backgroundColor: colorScheme?.color ?? \"#ccc\"\n }}\n title={colorValue ? `Color: ${colorValue}` : \"Auto color - Click to change\"}\n aria-label=\"Edit enum color\"\n />\n <Badge color={\"error\"} invisible={!entryError?.id}>\n <IconButton\n size=\"small\"\n aria-label=\"edit\"\n className={\"m-1\"}\n onClick={() => onDialogOpen()}>\n <SettingsIcon size={\"small\"} />\n </IconButton>\n </Badge>\n </>}\n\n </div>\n\n {entryError?.label && <Typography variant={\"caption\"}\n className={\"ml-3.5 text-red-500 dark:text-red-500\"}>\n {entryError?.label}\n </Typography>}\n\n {entryError?.id && <Typography variant={\"caption\"}\n className={\"ml-3.5 text-red-500 dark:text-red-500\"}>\n {entryError?.id}\n </Typography>}\n\n </>);\n },\n function areEqual(prevProps: EnumEntryProps, nextProps: EnumEntryProps) {\n return prevProps.index === nextProps.index &&\n prevProps.enumValuesPath === nextProps.enumValuesPath &&\n prevProps.shouldUpdateId === nextProps.shouldUpdateId &&\n prevProps.inferredEntry === nextProps.inferredEntry &&\n equal(prevProps.entryError, nextProps.entryError) &&\n prevProps.autoFocus === nextProps.autoFocus;\n }\n);\n\nfunction EnumEntryDialog({\n index,\n open,\n onClose,\n enumValuesPath\n}: {\n index?: number;\n open: boolean;\n enumValuesPath: string;\n onClose: () => void;\n}) {\n\n const {\n errors,\n values,\n setFieldValue\n } = useFormex<EnumValues>();\n\n const idError = index !== undefined ? getIn(errors, `${enumValuesPath}[${index}].id`) : undefined;\n const colorValue = index !== undefined ? getIn(values, `${enumValuesPath}[${index}].color`) as ChipColorKey | undefined : undefined;\n\n return <Dialog\n maxWidth=\"md\"\n aria-labelledby=\"enum-edit-dialog\"\n open={open}\n onOpenChange={(open) => !open ? onClose() : undefined}\n >\n <DialogTitle hidden>Enum form dialog</DialogTitle>\n <DialogContent>\n {index !== undefined &&\n <div className=\"flex flex-col gap-4\">\n <div>\n <Field name={`${enumValuesPath}[${index}].id`}\n as={DebouncedTextField}\n required\n label={\"ID\"}\n size=\"small\"\n autoComplete=\"off\"\n error={Boolean(idError)} />\n\n <FieldCaption error={Boolean(idError)}>\n {idError ?? \"Value saved in the data source\"}\n </FieldCaption>\n </div>\n\n <div>\n <Typography variant=\"body2\" className=\"font-medium mb-2\">\n Chip color\n </Typography>\n <ColorPicker\n value={colorValue}\n onChange={(color) => setFieldValue(`${enumValuesPath}[${index}].color`, color)}\n size=\"small\"\n allowClear={true}\n />\n </div>\n </div>}\n </DialogContent>\n\n <DialogActions>\n <Button\n autoFocus\n onClick={onClose}>\n Ok\n </Button>\n </DialogActions>\n\n </Dialog>\n}\n\n","import React from \"react\";\n\nimport { BooleanSwitchWithLabel, Tooltip } from \"@firecms/ui\";\nimport { FormexFieldProps } from \"@firecms/formex\";\n\nexport function SwitchControl({\n field,\n form,\n label,\n tooltip,\n disabled,\n size = \"small\",\n allowIndeterminate\n }: FormexFieldProps & {\n label: string,\n tooltip?: string,\n disabled?: boolean,\n size?: \"small\" | \"medium\",\n allowIndeterminate?: boolean\n}) {\n\n const formControlLabel = <BooleanSwitchWithLabel\n label={label}\n size={size}\n position={\"start\"}\n value={field.value}\n disabled={disabled}\n allowIndeterminate={allowIndeterminate}\n onValueChange={(checked:boolean | null) => form.setFieldValue(field.name, checked)}/>;\n\n if (tooltip)\n return (\n <Tooltip\n title={tooltip}>\n {formControlLabel}\n </Tooltip>\n );\n return formControlLabel;\n}\n","import React from \"react\";\n\nimport { Field, FormexFieldProps, getIn, useFormex } from \"@firecms/formex\";\nimport { DebouncedTextField } from \"@firecms/ui\";\nimport { SwitchControl } from \"../../SwitchControl\";\n\nexport function GeneralPropertyValidation({ disabled }: {\n required?: boolean;\n disabled: boolean;\n}) {\n\n const { values, handleChange } = useFormex();\n\n const validationRequired = \"validation.required\";\n const validationRequiredMessage = \"validation.requiredMessage\";\n const validationUnique = \"validation.unique\";\n const validationUniqueInArray = \"validation.uniqueInArray\";\n\n return (\n <>\n <div className={\"col-span-6\"}>\n <Field name={validationRequired}\n type=\"checkbox\">\n {({ field, form }: FormexFieldProps) => {\n return <SwitchControl\n disabled={disabled}\n label={\"Required\"}\n tooltip={\"You won't be able to save this entity if this value is not set\"}\n form={form}\n field={field}/>\n }}\n </Field>\n </div>\n\n <div className={\"col-span-6\"}>\n\n <Field name={validationUnique}\n type=\"checkbox\">\n {({ field, form }: FormexFieldProps) => {\n return <SwitchControl\n disabled={disabled}\n label={\"Unique\"}\n tooltip={\"There cannot be multiple entities with the same value\"}\n form={form}\n field={field}/>\n }}\n </Field>\n </div>\n\n {getIn(values, validationRequired) && <div className={\"col-span-12\"}>\n <DebouncedTextField\n disabled={disabled}\n value={getIn(values, validationRequiredMessage)}\n label={\"Required message\"}\n name={validationRequiredMessage}\n size=\"small\"\n onChange={handleChange}/>\n </div>}\n </>\n );\n}\n","import React from \"react\";\n\nimport { Field, FormexFieldProps, getIn, useFormex } from \"@firecms/formex\";\nimport { FieldCaption, serializeRegExp } from \"@firecms/core\";\nimport { DebouncedTextField, } from \"@firecms/ui\";\nimport { GeneralPropertyValidation } from \"./GeneralPropertyValidation\";\nimport { SwitchControl } from \"../../SwitchControl\";\n\nexport function StringPropertyValidation({\n length,\n lowercase,\n matches,\n max,\n min,\n trim,\n uppercase,\n disabled,\n showErrors\n }: {\n length?: boolean;\n min?: boolean;\n max?: boolean;\n trim?: boolean;\n matches?: boolean;\n lowercase?: boolean;\n uppercase?: boolean;\n disabled: boolean;\n showErrors: boolean;\n}) {\n\n const {\n values,\n handleChange,\n errors\n } = useFormex();\n\n const validationLength = \"validation.length\";\n const validationMin = \"validation.min\";\n const validationMax = \"validation.max\";\n const validationTrim = \"validation.trim\";\n const validationMatches = \"validation.matches\";\n const validationLowercase = \"validation.lowercase\";\n const validationUppercase = \"validation.uppercase\";\n\n const matchesError = getIn(errors, validationMatches);\n\n const matchesValue = getIn(values, validationMatches);\n const matchesStringValue = typeof matchesValue === \"string\" ? matchesValue : serializeRegExp(matchesValue);\n return (\n <div className={\"grid grid-cols-12 gap-2\"}>\n\n <GeneralPropertyValidation disabled={disabled}/>\n\n <div className={\"grid grid-cols-12 gap-2 col-span-12\"}>\n\n {lowercase && <div className={\"col-span-4\"}>\n <Field name={validationLowercase}\n type=\"checkbox\">\n {({ field, form }: FormexFieldProps) => {\n return <SwitchControl\n label={\"Lowercase\"}\n disabled={disabled}\n form={form}\n field={field}/>\n }}\n </Field>\n </div>}\n\n {uppercase && <div className={\"col-span-4\"}>\n <Field name={validationUppercase}\n type=\"checkbox\">\n {({ field, form }: FormexFieldProps) => {\n return <SwitchControl\n label={\"Uppercase\"}\n disabled={disabled}\n form={form}\n field={field}/>\n }}\n </Field>\n </div>}\n\n {trim && <div className={\"col-span-4\"}>\n <Field name={validationTrim}\n type=\"checkbox\">\n {({ field, form }: FormexFieldProps) => {\n return <SwitchControl\n label={\"Trim\"}\n disabled={disabled}\n form={form}\n field={field}/>\n }}\n </Field>\n </div>}\n\n </div>\n\n <div className={\"grid grid-cols-12 gap-2 col-span-12\"}>\n {length && <div className={\"col-span-4\"}>\n <DebouncedTextField\n value={getIn(values, validationLength)}\n label={\"Exact length\"}\n name={validationLength}\n type=\"number\"\n size=\"small\"\n\n disabled={disabled}\n onChange={handleChange}/>\n </div>}\n\n {min && <div className={\"col-span-4\"}>\n <DebouncedTextField value={getIn(values, validationMin)}\n label={\"Min length\"}\n name={validationMin}\n type=\"number\"\n size=\"small\"\n\n disabled={disabled}\n onChange={handleChange}/>\n </div>}\n\n {max && <div className={\"col-span-4\"}>\n <DebouncedTextField value={getIn(values, validationMax)}\n label={\"Max length\"}\n name={validationMax}\n type=\"number\"\n size=\"small\"\n\n disabled={disabled}\n onChange={handleChange}/>\n </div>}\n\n </div>\n\n {matches && <div className={\"col-span-12\"}>\n <Field name={validationMatches}\n as={DebouncedTextField}\n label={\"Matches regex\"}\n size=\"small\"\n disabled={disabled}\n value={matchesStringValue}\n error={Boolean(matchesError)}/>\n <FieldCaption error={Boolean(matchesError)}>\n {matchesError ? \"Not a valid regexp\" : \"e.g. /^\\\\d+$/ for digits only\"}\n </FieldCaption>\n </div>}\n\n </div>\n );\n\n}\n","import React from \"react\";\n\nimport { getIn, useFormex } from \"@firecms/formex\";\nimport { DebouncedTextField } from \"@firecms/ui\";\nimport { GeneralPropertyValidation } from \"./GeneralPropertyValidation\";\n\nexport function ArrayPropertyValidation({\n max = true,\n min = true,\n disabled\n }: {\n min?: boolean;\n max?: boolean;\n disabled: boolean;\n}) {\n\n const {\n values,\n handleChange\n } = useFormex();\n\n const validationMin = \"validation.min\";\n const validationMax = \"validation.max\";\n\n return (\n <div className={\"grid grid-cols-12 gap-2\"}>\n\n <GeneralPropertyValidation disabled={disabled}/>\n\n {min && <div className={\"col-span-6\"}>\n <DebouncedTextField value={getIn(values, validationMin)}\n disabled={disabled}\n label={\"Min length\"}\n name={validationMin}\n type=\"number\"\n size=\"small\"\n onChange={handleChange}/>\n </div>}\n {max && <div className={\"col-span-6\"}>\n <DebouncedTextField value={getIn(values, validationMax)}\n disabled={disabled}\n label={\"Max length\"}\n name={validationMax}\n type=\"number\"\n size=\"small\"\n onChange={handleChange}/>\n </div>}\n </div>\n );\n}\n","import { PropsWithChildren } from \"react\";\n\nimport { ExpandablePanel, RuleIcon, Typography } from \"@firecms/ui\";\n\nexport function ValidationPanel({\n children\n }: PropsWithChildren<{}>) {\n\n return (\n <ExpandablePanel\n initiallyExpanded={false}\n asField={true}\n innerClassName=\"p-4\"\n title={\n <div className=\"flex flex-row text-surface-500 text-text-secondary dark:text-text-secondary-dark\">\n <RuleIcon/>\n <Typography variant={\"subtitle2\"}\n className=\"ml-4\">\n Validation\n </Typography>\n </div>\n }>\n\n {children}\n\n </ExpandablePanel>\n )\n}\n","import React, { useMemo } from \"react\";\nimport { getIn, useFormex } from \"@firecms/formex\";\nimport { EnumValueConfig, resolveEnumValues, useSnackbarController } from \"@firecms/core\";\nimport { Select, SelectItem } from \"@firecms/ui\";\nimport { EnumForm } from \"../EnumForm\";\nimport { StringPropertyValidation } from \"./validation/StringPropertyValidation\";\nimport { ArrayPropertyValidation } from \"./validation/ArrayPropertyValidation\";\nimport { ValidationPanel } from \"./validation/ValidationPanel\";\nimport { PropertyWithId } from \"../PropertyEditView\";\n\nexport function EnumPropertyField({\n multiselect,\n updateIds,\n disabled,\n showErrors,\n allowDataInference,\n getData,\n propertyNamespace\n}: {\n multiselect: boolean;\n updateIds: boolean;\n disabled: boolean;\n showErrors: boolean;\n allowDataInference?: boolean;\n getData?: () => Promise<object[]>;\n propertyNamespace?: string;\n}) {\n\n const {\n values,\n setFieldError,\n setFieldValue\n } = useFormex<PropertyWithId>();\n\n const snackbarContext = useSnackbarController();\n\n const enumValuesPath = multiselect ? \"of.enumValues\" : \"enumValues\";\n\n const defaultValue = getIn(values, \"defaultValue\");\n\n const valuesEnumValues = getIn(values, enumValuesPath);\n const enumValues: EnumValueConfig[] = useMemo(() => {\n if (!valuesEnumValues || typeof valuesEnumValues === \"boolean\")\n return [] as EnumValueConfig[];\n return resolveEnumValues(valuesEnumValues) ?? [] as EnumValueConfig[];\n }, [valuesEnumValues]);\n\n const onValuesChanged = (value: EnumValueConfig[]) => {\n if (!values)\n return;\n setFieldValue(enumValuesPath, value);\n if (!multiselect) {\n const enumIds = value.filter(v => Boolean(v?.id)).map((v: any) => v.id);\n if (defaultValue && !enumIds.includes(defaultValue)) {\n setFieldValue(\"defaultValue\", undefined);\n snackbarContext.open({\n type: \"warning\",\n message: \"Default value was cleared\"\n })\n }\n }\n };\n\n // Build full path including namespace for nested properties (e.g., \"address.status\")\n const fullPropertyPath = values.id\n ? (propertyNamespace ? `${propertyNamespace}.${values.id}` : values.id)\n : undefined;\n\n return (\n <>\n <div className={\"col-span-12\"}>\n <EnumForm enumValues={enumValues}\n updateIds={updateIds}\n disabled={disabled}\n allowDataInference={allowDataInference}\n onError={(hasError) => {\n setFieldError(enumValuesPath, hasError ? \"This enum property is missing some values\" : undefined);\n }}\n getData={getData && fullPropertyPath\n ? () => getData()\n .then(res => res.map(entry => getIn(entry, fullPropertyPath)).filter(Boolean))\n : undefined}\n onValuesChanged={onValuesChanged} />\n </div>\n\n <div className={\"col-span-12\"}>\n\n <ValidationPanel>\n {!multiselect &&\n <StringPropertyValidation disabled={disabled}\n showErrors={showErrors} />}\n {multiselect &&\n <ArrayPropertyValidation disabled={disabled} />}\n </ValidationPanel>\n\n </div>\n\n {!multiselect && <div className={\"col-span-12\"}>\n\n <Select\n disabled={disabled}\n position={\"item-aligned\"}\n fullWidth={true}\n onValueChange={(value: string) => {\n setFieldValue(\"defaultValue\", value);\n }}\n size={\"large\"}\n label={\"Default value\"}\n value={defaultValue ?? \"\"}>\n {enumValues\n .filter((enumValue) => Boolean(enumValue?.id))\n .map((enumValue) => (\n <SelectItem key={enumValue.id}\n value={enumValue.id?.toString()}>\n {enumValue.label}\n </SelectItem>\n ))}\n </Select>\n\n </div>}\n </>\n );\n}\n","import React from \"react\";\nimport {\n Button,\n CloudUploadIcon,\n DebouncedTextField,\n ExpandablePanel,\n MultiSelect,\n MultiSelectItem,\n Select,\n SelectItem,\n Typography\n} from \"@firecms/ui\";\n\nimport { Field, FormexFieldProps, getIn, useFormex } from \"@firecms/formex\";\nimport { GeneralPropertyValidation } from \"./validation/GeneralPropertyValidation\";\nimport { ArrayPropertyValidation } from \"./validation/ArrayPropertyValidation\";\nimport { ValidationPanel } from \"./validation/ValidationPanel\";\nimport { SwitchControl } from \"../SwitchControl\";\n\nconst fileTypes: Record<string, string> = {\n \"image/*\": \"Images\",\n \"video/*\": \"Videos\",\n \"audio/*\": \"Audio files\",\n \"application/*\": \"Files (pdf, zip, csv, excel...)\",\n \"text/*\": \"Text files\"\n}\n\nexport function StoragePropertyField({\n multiple,\n existing,\n disabled\n }: {\n multiple: boolean;\n existing: boolean;\n disabled: boolean;\n}) {\n\n const {\n values,\n setFieldValue\n } = useFormex();\n\n const baseStoragePath = multiple ? \"of.storage\" : \"storage\";\n const acceptedFiles = `${baseStoragePath}.acceptedFiles`;\n\n const metadata = `${baseStoragePath}.metadata`;\n const fileName = `${baseStoragePath}.fileName`;\n const maxSize = `${baseStoragePath}.maxSize`;\n const storagePath = `${baseStoragePath}.storagePath`;\n const storeUrl = `${baseStoragePath}.storeUrl`;\n const includeBucketUrl = `${baseStoragePath}.includeBucketUrl`;\n\n // Image resize config paths\n const imageResize = `${baseStoragePath}.imageResize`;\n const imageResizeMaxWidth = `${imageResize}.maxWidth`;\n const imageResizeMaxHeight = `${imageResize}.maxHeight`;\n const imageResizeMode = `${imageResize}.mode`;\n const imageResizeFormat = `${imageResize}.format`;\n const imageResizeQuality = `${imageResize}.quality`;\n\n const fileNameValue = getIn(values, fileName) ?? \"{rand}_{file}\";\n const storagePathValue = getIn(values, storagePath) ?? \"/\";\n const maxSizeValue = getIn(values, maxSize);\n\n // Image resize values\n const imageResizeMaxWidthValue = getIn(values, imageResizeMaxWidth);\n const imageResizeMaxHeightValue = getIn(values, imageResizeMaxHeight);\n const imageResizeModeValue = getIn(values, imageResizeMode) ?? \"cover\";\n const imageResizeFormatValue = getIn(values, imageResizeFormat) ?? \"original\";\n const imageResizeQualityValue = getIn(values, imageResizeQuality);\n\n const storedValue = getIn(values, acceptedFiles);\n const fileTypesValue: string[] | undefined = Array.isArray(storedValue) ? storedValue : undefined;\n const allFileTypesSelected = !fileTypesValue || fileTypesValue.length === 0;\n\n const handleTypesChange = (value: string[]) => {\n if (!value) setFieldValue(acceptedFiles, undefined);\n else setFieldValue(acceptedFiles, value);\n };\n\n const hasFilenameCallback = typeof fileNameValue === \"function\";\n const hasStoragePathCallback = typeof storagePathValue === \"function\";\n\n return (\n <>\n\n <div className={\"col-span-12\"}>\n\n <ExpandablePanel\n title={\n <div className=\"flex flex-row text-surface-500 text-text-secondary dark:text-text-secondary-dark\">\n <CloudUploadIcon/>\n <Typography variant={\"subtitle2\"}\n className=\"ml-4\">\n File upload config\n </Typography>\n </div>\n }>\n\n <div className={\"grid grid-cols-12 gap-2 p-4\"}>\n\n <div className={\"col-span-12\"}>\n\n <MultiSelect\n className={\"w-full\"}\n placeholder={\"All file types allowed\"}\n disabled={disabled}\n name={acceptedFiles}\n value={fileTypesValue ?? []}\n onValueChange={handleTypesChange}\n label={allFileTypesSelected ? undefined : \"Allowed file types\"}\n renderValues={(selected) => {\n if (!selected || selected.length === 0) return \"All file types allowed\";\n return selected.map((v: string) => fileTypes[v])\n .filter((v: string) => Boolean(v))\n .join(\", \");\n }}>\n\n {Object.entries(fileTypes).map(([value, label]) => (\n <MultiSelectItem key={value} value={value} className={\"flex items-center gap-2\"}>\n {/*<Checkbox*/}\n {/* checked={allFileTypesSelected || fileTypesValue.indexOf(value) > -1}/>*/}\n <div className={\"flex-grow\"}>\n {label}\n </div>\n <Button size={\"small\"}\n variant={\"text\"}\n onClick={(e) => {\n e.preventDefault();\n e.stopPropagation();\n return setFieldValue(acceptedFiles, [value]);\n }}>\n Only\n </Button>\n </MultiSelectItem>\n ))}\n\n </MultiSelect>\n </div>\n\n <div className={\"col-span-12\"}>\n <Field name={fileName}\n as={DebouncedTextField}\n label={\"File name\"}\n size={\"small\"}\n disabled={hasFilenameCallback || disabled}\n value={hasFilenameCallback ? \"-\" : fileNameValue}\n />\n </div>\n <div className={\"col-span-12\"}>\n <Field name={storagePath}\n as={DebouncedTextField}\n label={\"Storage path\"}\n disabled={hasStoragePathCallback || disabled}\n size={\"small\"}\n value={hasStoragePathCallback ? \"-\" : storagePathValue}\n />\n <Typography variant={\"caption\"} className={\"ml-3.5 mt-1 mb-2\"}>\n <p>You can use the following placeholders in\n the file name\n and storage path values:</p>\n <ul>\n <li>{\"{file} - Full name of the uploaded file\"}</li>\n <li>{\"{file.name} - Name of the uploaded file without extension\"}</li>\n <li>{\"{file.ext} - Extension of the uploaded file\"}</li>\n <li>{\"{entityId} - ID of the entity\"}</li>\n <li>{\"{propertyKey} - ID of this field\"}</li>\n <li>{\"{path} - Path of this entity\"}</li>\n <li>{\"{rand} - Random value used to avoid name collisions\"}</li>\n </ul>\n </Typography>\n\n <Field name={includeBucketUrl}\n type=\"checkbox\">\n {({\n field,\n form\n }: FormexFieldProps) => {\n return <SwitchControl\n label={\"Include bucket URL (gs://...) in saved value\"}\n disabled={existing || disabled}\n form={form}\n field={field}/>;\n }}\n </Field>\n\n <Typography variant={\"caption\"} className={\"ml-3.5 mt-1 mb-2\"}>\n Turn this setting on if you want to save a fully-qualified storage URL\n (e.g. <code>gs://my-bucket/path/to/file</code>) instead of just the storage path.\n You can only change this prop upon creation.\n </Typography>\n\n <Field name={storeUrl}\n type=\"checkbox\">\n {({\n field,\n form\n }: FormexFieldProps) => {\n return <SwitchControl\n label={\"Save URL instead of storage path\"}\n disabled={existing || disabled}\n form={form}\n field={field}/>;\n }}\n </Field>\n\n <Typography variant={\"caption\"} className={\"ml-3.5 mt-1 mb-2\"}>\n Turn this setting on, if you prefer to save\n the download\n URL of the uploaded file instead of the\n storage path.\n You can only change this prop upon creation.\n </Typography>\n </div>\n\n <div className={\"col-span-12\"}>\n <DebouncedTextField name={maxSize}\n type={\"number\"}\n label={\"Max size (in bytes)\"}\n size={\"small\"}\n value={maxSizeValue !== undefined && maxSizeValue !== null ? maxSizeValue.toString() : \"\"}\n onChange={(e) => {\n const value = e.target.value;\n if (value === \"\") setFieldValue(maxSize, undefined);\n else setFieldValue(maxSize, parseInt(value));\n }}\n />\n </div>\n\n <div className={\"col-span-12 mt-4\"}>\n <Typography variant={\"subtitle2\"}\n color={\"secondary\"}\n className={\"mb-2 block\"}>\n Image Resize Configuration\n </Typography>\n <Typography variant={\"caption\"} className={\"mb-2 block text-xs\"}>\n Automatically resize and optimize images before upload (JPEG, PNG, WebP only)\n </Typography>\n </div>\n\n <div className={\"col-span-6\"}>\n <DebouncedTextField\n name={imageResizeMaxWidth}\n type={\"number\"}\n label={\"Max width (px)\"}\n size={\"small\"}\n disabled={disabled}\n value={imageResizeMaxWidthValue !== undefined && imageResizeMaxWidthValue !== null ? imageResizeMaxWidthValue.toString() : \"\"}\n onChange={(e) => {\n const value = e.target.value;\n if (value === \"\") setFieldValue(imageResizeMaxWidth, undefined);\n else setFieldValue(imageResizeMaxWidth, parseInt(value));\n }}\n />\n </div>\n\n <div className={\"col-span-6\"}>\n <DebouncedTextField\n name={imageResizeMaxHeight}\n type={\"number\"}\n label={\"Max height (px)\"}\n size={\"small\"}\n disabled={disabled}\n value={imageResizeMaxHeightValue !== undefined && imageResizeMaxHeightValue !== null ? imageResizeMaxHeightValue.toString() : \"\"}\n onChange={(e) => {\n const value = e.target.value;\n if (value === \"\") setFieldValue(imageResizeMaxHeight, undefined);\n else setFieldValue(imageResizeMaxHeight, parseInt(value));\n }}\n />\n </div>\n\n <div className={\"col-span-6\"}>\n <Select\n disabled={disabled}\n name={imageResizeMode}\n fullWidth\n size={\"medium\"}\n value={imageResizeModeValue || \"cover\"}\n onValueChange={(value) => setFieldValue(imageResizeMode, value || \"cover\")}\n label={\"Resize mode\"}\n renderValue={(selected) => {\n if (!selected) return \"Cover\";\n return selected === \"contain\" ? \"Contain (fit within bounds)\" : \"Cover (fill bounds, may crop)\";\n }}>\n <SelectItem value=\"contain\">\n Contain (fit within bounds)\n </SelectItem>\n <SelectItem value=\"cover\">\n Cover (fill bounds, may crop)\n </SelectItem>\n </Select>\n </div>\n\n <div className={\"col-span-6\"}>\n <Select\n disabled={disabled}\n size={\"medium\"}\n fullWidth\n name={imageResizeFormat}\n value={imageResizeFormatValue || \"original\"}\n onValueChange={(value) => setFieldValue(imageResizeFormat, value || \"original\")}\n label={\"Output format\"}\n renderValue={(selected) => {\n if (!selected) return \"Original\";\n return selected.charAt(0).toUpperCase() + selected.slice(1);\n }}>\n <SelectItem value=\"original\">\n Original (keep same format)\n </SelectItem>\n <SelectItem value=\"jpeg\">\n JPEG\n </SelectItem>\n <SelectItem value=\"png\">\n PNG\n </SelectItem>\n <SelectItem value=\"webp\">\n WebP (best compression)\n </SelectItem>\n </Select>\n </div>\n\n <div className={\"col-span-12\"}>\n <DebouncedTextField\n name={imageResizeQuality}\n type={\"number\"}\n label={\"Quality (0-100)\"}\n size={\"small\"}\n disabled={disabled}\n value={imageResizeQualityValue !== undefined && imageResizeQualityValue !== null ? imageResizeQualityValue.toString() : \"\"}\n onChange={(e) => {\n const value = e.target.value;\n if (value === \"\") setFieldValue(imageResizeQuality, undefined);\n else {\n const numValue = parseInt(value);\n if (numValue >= 0 && numValue <= 100) {\n setFieldValue(imageResizeQuality, numValue);\n }\n }\n }}\n />\n <Typography variant={\"caption\"} className={\"ml-3.5 mt-1 mb-2\"}>\n Higher quality = larger file size. Recommended: 80-90 for photos, 90-100 for graphics\n </Typography>\n </div>\n\n </div>\n </ExpandablePanel>\n\n </div>\n\n <div className={\"col-span-12\"}>\n\n <ValidationPanel>\n {!multiple && <div className={\"grid grid-cols-12 gap-2\"}>\n <GeneralPropertyValidation disabled={disabled}/>\n </div>}\n {multiple && <div className={\"col-span-12\"}>\n <ArrayPropertyValidation disabled={disabled}/>\n </div>}\n </ValidationPanel>\n\n </div>\n </>\n );\n}\n","import { isPropertyBuilder, Properties, PropertiesOrBuilders, Property, PropertyOrBuilder } from \"@firecms/core\";\n\nexport function editableProperty(property: PropertyOrBuilder): boolean {\n if (isPropertyBuilder(property)) {\n return false;\n } else {\n if (property.dataType === \"array\" && typeof property.of === \"function\")\n return false;\n else if (property.dataType === \"array\" && Array.isArray(property.of))\n return false;\n return property.editable === undefined ? true : Boolean(property.editable);\n }\n}\n\nexport function removeNonEditableProperties(properties: PropertiesOrBuilders<any>): Properties {\n return Object.entries(properties)\n .filter(([_, property]) => editableProperty(property))\n .map(([key, propertyOrBuilder]) => {\n const property = propertyOrBuilder as Property;\n if (!editableProperty(property)) {\n return undefined;\n } else if (property.dataType === \"map\" && property.properties) {\n return {\n [key]: {\n ...property,\n properties: removeNonEditableProperties(property.properties as PropertiesOrBuilders)\n }\n };\n } else {\n return { [key]: property };\n }\n })\n .filter((e) => Boolean(e))\n .reduce((a, b) => ({ ...a, ...b }), {}) as Properties;\n}\n","import {\n ErrorBoundary,\n getFieldConfig,\n isPropertyBuilder,\n Property,\n PropertyConfigBadge,\n PropertyOrBuilder,\n useCustomizationController,\n} from \"@firecms/core\";\nimport {\n cardClickableMixin,\n cardMixin,\n cardSelectedMixin,\n cls,\n DoNotDisturbOnIcon,\n FunctionsIcon,\n Paper,\n Typography,\n} from \"@firecms/ui\";\n\nimport { editableProperty } from \"../../utils/entities\";\n\nexport function PropertyFieldPreview({\n property,\n onClick,\n hasError,\n includeName,\n includeEditButton,\n selected\n }: {\n property: Property,\n hasError?: boolean,\n selected?: boolean,\n includeName?: boolean,\n includeEditButton?: boolean;\n onClick?: () => void\n}) {\n\n const { propertyConfigs } = useCustomizationController();\n\n const propertyConfig = getFieldConfig(property, propertyConfigs);\n const disabled = !editableProperty(property);\n\n const borderColorClass = hasError\n ? \"border-red-500 dark:border-red-500 border-opacity-100 dark:border-opacity-100 border-red-500/100 dark:border-red-500/100 ring-0 dark:ring-0\"\n : (selected ? \"border-primary\" : \"border-transparent\");\n\n return <ErrorBoundary>\n <div\n onClick={onClick}\n className=\"flex flex-row w-full cursor-pointer\">\n <div className={\"m-4\"}>\n <PropertyConfigBadge propertyConfig={propertyConfig}/>\n </div>\n <Paper\n className={cls(\n \"m-1\",\n \"border\",\n \"pl-2 w-full flex flex-row gap-4 items-center\",\n cardMixin,\n onClick ? cardClickableMixin : \"\",\n selected ? cardSelectedMixin : \"\",\n \"flex-grow p-4 border transition-colors duration-200\",\n borderColorClass\n )}\n >\n\n <div className=\"w-full flex flex-col\">\n\n {includeName &&\n <ErrorBoundary>\n <Typography variant=\"label\"\n component=\"span\"\n className=\"flex-grow pr-2\">\n {property.name\n ? property.name\n : \"\\u00a0\"\n }\n </Typography>\n </ErrorBoundary>}\n\n <div className=\"flex flex-row items-center\">\n <ErrorBoundary>\n <Typography className=\"flex-grow pr-2\"\n variant={includeName ? \"body2\" : \"label\"}\n component=\"span\"\n color=\"secondary\">\n {propertyConfig?.name}\n </Typography>\n </ErrorBoundary>\n <ErrorBoundary>\n <Typography variant=\"body2\"\n component=\"span\"\n color=\"disabled\">\n {property.dataType}\n </Typography>\n </ErrorBoundary>\n\n </div>\n </div>\n\n {includeEditButton && <Typography variant={\"button\"}>\n EDIT\n </Typography>}\n\n </Paper>\n </div>\n </ErrorBoundary>\n}\n\nexport function NonEditablePropertyPreview({\n name,\n selected,\n onClick,\n property\n }: {\n name: string,\n selected: boolean,\n onClick?: () => void,\n property?: PropertyOrBuilder\n}) {\n\n const { propertyConfigs } = useCustomizationController();\n\n const propertyConfig = !isPropertyBuilder(property) && property ? getFieldConfig(property, propertyConfigs) : undefined;\n\n return (\n <div\n onClick={onClick}\n className=\"flex flex-row w-full cursor-pointer\">\n <div className={\"relative m-4\"}>\n {propertyConfig && <PropertyConfigBadge propertyConfig={propertyConfig}/>}\n {!propertyConfig && <div\n className={\"h-8 w-8 flex items-center justify-center rounded-full shadow text-white bg-surface-500\"}>\n <FunctionsIcon color={\"inherit\"} size={\"small\"}/>\n </div>}\n <DoNotDisturbOnIcon color={\"disabled\"} size={\"small\"} className={\"absolute -right-2 -top-2\"}/>\n </div>\n <Paper\n className={cls(\n \"pl-2 w-full flex flex-row gap-4 items-center\",\n cardMixin,\n onClick ? cardClickableMixin : \"\",\n selected ? cardSelectedMixin : \"\",\n \"flex-grow p-4 border transition-colors duration-200\",\n selected ? \"border-primary\" : \"border-transparent\")}\n >\n\n <div className=\"w-full flex flex-col\">\n <Typography variant=\"label\"\n component=\"span\"\n className=\"flex-grow pr-2\">\n {property?.name\n ? property.name\n : name\n }\n </Typography>\n\n <div className=\"flex flex-row items-center\">\n {propertyConfig && <Typography className=\"flex-grow pr-2\"\n variant={\"body2\"}\n component=\"span\"\n color=\"secondary\">\n {propertyConfig?.name}\n </Typography>}\n\n {property && !isPropertyBuilder(property) && <ErrorBoundary>\n <Typography variant=\"body2\"\n component=\"span\"\n color=\"disabled\">\n {property.dataType}\n </Typography>\n </ErrorBoundary>}\n\n {property && isPropertyBuilder(property) && <ErrorBoundary>\n <Typography variant=\"body2\"\n component=\"span\"\n color=\"disabled\">\n This property is defined as a property builder in code\n </Typography>\n </ErrorBoundary>}\n\n {!property && <ErrorBoundary>\n <Typography variant=\"body2\"\n component=\"span\"\n color=\"disabled\">\n This field is defined as an additional field in code\n </Typography>\n </ErrorBoundary>}\n\n </div>\n\n {/*<div className=\"flex flex-row text-xs\">*/}\n {/* <Typography className=\"flex-grow pr-2\"*/}\n {/* variant=\"body2\"*/}\n {/* component=\"span\"*/}\n {/* color=\"secondary\">*/}\n {/* This field can only be edited in code*/}\n {/* </Typography>*/}\n {/*</div>*/}\n </div>\n\n </Paper>\n </div>)\n}\n","export function idToPropertiesPath(id: string): string {\n return \"properties.\" + id.replaceAll(\".\", \".properties.\");\n}\n\nexport function namespaceToPropertiesPath(namespace?: string): string {\n return namespace\n ? \"properties.\" + namespace.replaceAll(\".\", \".properties.\") + \".properties\"\n : \"properties\";\n}\n\nexport function namespaceToPropertiesOrderPath(namespace?: string): string {\n return namespace\n ? \"properties.\" + namespace.replaceAll(\".\", \".properties.\") + \".propertiesOrder\"\n : \"propertiesOrder\";\n}\n\nexport function getFullId(propertyKey: string, propertyNamespace?: string): string {\n return propertyNamespace\n ? `${propertyNamespace}.${propertyKey}`\n : propertyKey;\n}\n\nexport function getFullIdPath(propertyKey: string, propertyNamespace?: string): string {\n const keyWithNamespace = propertyNamespace\n ? `${propertyNamespace}.${propertyKey}`\n : propertyKey;\n return idToPropertiesPath(keyWithNamespace);\n}\n","import React, { createContext, useCallback, useContext, useState } from \"react\";\nimport { CollectionOperation } from \"../../api/generateCollectionApi\";\n\nexport interface AIModifiedPathsContextType {\n /** Set of paths that were modified by AI */\n modifiedPaths: Set<string>;\n /** Counter that increments each time AI modifies the collection - use in keys to force remount */\n generationCounter: number;\n /** Add paths from operations */\n addModifiedPaths: (operations: CollectionOperation[]) => void;\n /** Clear a specific path (when user edits that field) */\n clearPath: (path: string) => void;\n /** Clear all paths (on save or cancel) */\n clearAllPaths: () => void;\n /** Check if a path is modified */\n isPathModified: (path: string) => boolean;\n}\n\nconst AIModifiedPathsContext = createContext<AIModifiedPathsContextType | null>(null);\n\nexport function AIModifiedPathsProvider({ children }: { children: React.ReactNode }) {\n const [modifiedPaths, setModifiedPaths] = useState<Set<string>>(new Set());\n const [generationCounter, setGenerationCounter] = useState(0);\n\n const addModifiedPaths = useCallback((operations: CollectionOperation[]) => {\n setModifiedPaths(prev => {\n const newSet = new Set(prev);\n operations.forEach(op => {\n // Add the path and all parent paths for nested modifications\n newSet.add(op.path);\n // For properties modifications, also mark the property itself\n // e.g., \"properties.email.description\" -> also adds \"properties.email\"\n const parts = op.path.split(\".\");\n if (parts[0] === \"properties\" && parts.length >= 2) {\n newSet.add(`properties.${parts[1]}`);\n }\n });\n return newSet;\n });\n // Increment counter to force property form remount\n setGenerationCounter(prev => prev + 1);\n }, []);\n\n const clearPath = useCallback((path: string) => {\n setModifiedPaths(prev => {\n const newSet = new Set(prev);\n // Remove exact path and any child paths\n for (const p of newSet) {\n if (p === path || p.startsWith(path + \".\")) {\n newSet.delete(p);\n }\n }\n return newSet;\n });\n }, []);\n\n const clearAllPaths = useCallback(() => {\n setModifiedPaths(new Set());\n }, []);\n\n const isPathModified = useCallback((path: string): boolean => {\n // Check if this exact path or any parent path is modified\n if (modifiedPaths.has(path)) return true;\n // Check if any child paths are modified\n for (const p of modifiedPaths) {\n if (p.startsWith(path + \".\")) return true;\n }\n return false;\n }, [modifiedPaths]);\n\n return (\n <AIModifiedPathsContext.Provider value={{\n modifiedPaths,\n generationCounter,\n addModifiedPaths,\n clearPath,\n clearAllPaths,\n isPathModified\n }}>\n {children}\n </AIModifiedPathsContext.Provider>\n );\n}\n\nexport function useAIModifiedPaths(): AIModifiedPathsContextType | null {\n return useContext(AIModifiedPathsContext);\n}\n\n","import React from \"react\";\nimport equal from \"react-fast-compare\"\n\nimport {\n AdditionalFieldDelegate,\n AIModifiedIndicator,\n CMSType,\n isPropertyBuilder,\n PropertiesOrBuilders,\n PropertyOrBuilder\n} from \"@firecms/core\";\nimport {\n FindInPageIcon,\n defaultBorderMixin,\n DeleteIcon,\n IconButton,\n Menu,\n MenuItem,\n MoreVertIcon,\n Tooltip,\n VerticalAlignBottomIcon,\n VerticalAlignTopIcon\n} from \"@firecms/ui\";\nimport { NonEditablePropertyPreview, PropertyFieldPreview } from \"./PropertyFieldPreview\";\nimport {\n closestCenter,\n DndContext,\n DragEndEvent,\n KeyboardSensor,\n PointerSensor,\n useSensor,\n useSensors\n} from \"@dnd-kit/core\";\nimport {\n SortableContext,\n sortableKeyboardCoordinates,\n useSortable,\n verticalListSortingStrategy\n} from \"@dnd-kit/sortable\";\nimport { restrictToVerticalAxis } from \"@dnd-kit/modifiers\";\n\nimport { CSS } from \"@dnd-kit/utilities\";\nimport { getFullId, getFullIdPath } from \"./util\";\nimport { editableProperty } from \"../../utils/entities\";\nimport { useAIModifiedPaths } from \"./AIModifiedPathsContext\";\n\nexport const PropertyTree = React.memo(\n function PropertyTree<M extends {\n [Key: string]: CMSType\n }>({\n namespace,\n selectedPropertyKey,\n onPropertyClick,\n properties,\n propertiesOrder: propertiesOrderProp,\n additionalFields,\n errors,\n onPropertyMove,\n onPropertyRemove,\n className,\n inferredPropertyKeys,\n collectionEditable\n }: {\n namespace?: string;\n selectedPropertyKey?: string;\n onPropertyClick?: (propertyKey: string, namespace?: string) => void;\n properties: PropertiesOrBuilders<M>;\n propertiesOrder?: string[];\n additionalFields?: AdditionalFieldDelegate<M>[];\n errors: Record<string, any>;\n onPropertyMove?: (propertiesOrder: string[], namespace?: string) => void;\n onPropertyRemove?: (propertyKey: string, namespace?: string) => void;\n className?: string;\n inferredPropertyKeys?: string[];\n collectionEditable: boolean;\n }) {\n\n // Filter propertiesOrder to only include top-level keys (no dots) that exist in properties\n // Nested keys like \"data.mode\" are for column ordering in the table, not for the property editor\n const propertyKeys = Object.keys(properties);\n const filteredOrder = (propertiesOrderProp ?? propertyKeys)\n .filter(key => !key.includes(\".\") && properties[key as keyof typeof properties]);\n\n // Ensure all properties are included (append any missing ones)\n const missingKeys = propertyKeys.filter(key => !filteredOrder.includes(key));\n const propertiesOrder = [...filteredOrder, ...missingKeys];\n\n const sensors = useSensors(\n useSensor(PointerSensor, {\n activationConstraint: {\n distance: 5,\n }\n }),\n useSensor(KeyboardSensor, {\n coordinateGetter: sortableKeyboardCoordinates,\n })\n );\n\n const handleDragEnd = (event: DragEndEvent) => {\n const {\n active,\n over\n } = event;\n\n if (!over || active.id === over.id) {\n return;\n }\n\n const activeId = String(active.id);\n const overId = String(over.id);\n\n // Extract property keys from the full IDs\n const activeKey = activeId.includes(\".\") ? activeId.split(\".\").pop() : activeId;\n const overKey = overId.includes(\".\") ? overId.split(\".\").pop() : overId;\n\n if (!activeKey || !overKey) return;\n\n const oldIndex = propertiesOrder.indexOf(activeKey);\n const newIndex = propertiesOrder.indexOf(overKey);\n\n if (oldIndex !== -1 && newIndex !== -1) {\n const newPropertiesOrder = [...propertiesOrder];\n const [removed] = newPropertiesOrder.splice(oldIndex, 1);\n newPropertiesOrder.splice(newIndex, 0, removed);\n\n if (onPropertyMove) {\n onPropertyMove(newPropertiesOrder, namespace);\n }\n }\n };\n\n const items = propertiesOrder.map(key => getFullId(key, namespace));\n\n return (\n <DndContext\n sensors={sensors}\n collisionDetection={closestCenter}\n onDragEnd={handleDragEnd}\n modifiers={[restrictToVerticalAxis]}\n >\n <SortableContext\n items={items}\n strategy={verticalListSortingStrategy}\n >\n <div className={className}>\n\n {propertiesOrder && propertiesOrder\n .map((propertyKey: string, index: number) => {\n const property = properties[propertyKey] as PropertyOrBuilder;\n const additionalField = additionalFields?.find(field => field.key === propertyKey);\n\n if (!property && !additionalField) {\n console.warn(`Property ${propertyKey} not found in properties or additionalFields`);\n return null;\n }\n\n const id = getFullId(propertyKey, namespace);\n\n return (\n <PropertyTreeEntry\n key={id}\n id={id}\n propertyKey={propertyKey}\n propertyOrBuilder={property}\n additionalField={additionalField}\n errors={errors}\n namespace={namespace}\n propertiesOrder={propertiesOrder}\n inferredPropertyKeys={inferredPropertyKeys}\n onPropertyMove={onPropertyMove}\n onPropertyRemove={onPropertyRemove}\n onPropertyClick={onPropertyClick}\n selectedPropertyKey={selectedPropertyKey}\n collectionEditable={collectionEditable}\n />\n );\n }).filter(Boolean)}\n </div>\n </SortableContext>\n </DndContext>\n );\n },\n equal\n);\n\nexport function PropertyTreeEntry({\n id,\n propertyKey,\n namespace,\n propertyOrBuilder,\n additionalField,\n selectedPropertyKey,\n errors,\n propertiesOrder,\n onPropertyClick,\n onPropertyMove,\n onPropertyRemove,\n inferredPropertyKeys,\n collectionEditable\n}: {\n id: string;\n propertyKey: string;\n namespace?: string;\n propertyOrBuilder: PropertyOrBuilder;\n additionalField?: AdditionalFieldDelegate<any>;\n selectedPropertyKey?: string;\n errors: Record<string, any>;\n propertiesOrder: string[];\n onPropertyClick?: (propertyKey: string, namespace?: string) => void;\n onPropertyMove?: (propertiesOrder: string[], namespace?: string) => void;\n onPropertyRemove?: (propertyKey: string, namespace?: string) => void;\n inferredPropertyKeys?: string[];\n collectionEditable: boolean;\n}) {\n\n const {\n attributes,\n listeners,\n setNodeRef,\n transform,\n transition,\n isDragging\n } = useSortable({\n id\n });\n\n const style = {\n // Key change: use Translate instead of Transform to prevent stretching\n transform: CSS.Translate.toString(transform),\n transition,\n zIndex: isDragging ? 10 : undefined,\n position: \"relative\" as const,\n };\n\n const isPropertyInferred = inferredPropertyKeys?.includes(namespace ? `${namespace}.${propertyKey}` : propertyKey);\n const fullId = id;\n const fullIdPath = getFullIdPath(propertyKey, namespace);\n const hasError = fullIdPath in errors;\n\n let subtree;\n if (typeof propertyOrBuilder === \"object\") {\n const property = propertyOrBuilder;\n if (property.dataType === \"map\" && property.properties) {\n subtree = <PropertyTree\n selectedPropertyKey={selectedPropertyKey}\n namespace={fullId}\n properties={property.properties}\n propertiesOrder={property.propertiesOrder}\n errors={errors}\n onPropertyClick={onPropertyClick}\n onPropertyMove={onPropertyMove}\n onPropertyRemove={onPropertyRemove}\n inferredPropertyKeys={inferredPropertyKeys}\n collectionEditable={collectionEditable}\n />\n }\n }\n\n const selected = selectedPropertyKey === fullId;\n const editable = propertyOrBuilder && ((collectionEditable && !isPropertyBuilder(propertyOrBuilder)) || editableProperty(propertyOrBuilder));\n\n // Check if this property was AI-modified\n const aiModifiedPaths = useAIModifiedPaths();\n const isAIModified = aiModifiedPaths?.isPathModified(`properties.${propertyKey}`) ?? false;\n\n return (\n <div\n ref={setNodeRef}\n style={style}\n className=\"relative -ml-8 cursor-grab\"\n {...attributes}\n {...listeners}\n >\n <div className=\"relative\">\n {subtree && <div\n className={\"absolute border-l \" + defaultBorderMixin}\n style={{\n left: \"32px\",\n top: \"64px\",\n bottom: \"16px\"\n }} />}\n\n <div>\n {!isPropertyBuilder(propertyOrBuilder) && !additionalField && editable\n ? <PropertyFieldPreview\n property={propertyOrBuilder}\n onClick={onPropertyClick ? () => onPropertyClick(propertyKey, namespace) : undefined}\n includeName={true}\n selected={selected}\n hasError={hasError} />\n : <NonEditablePropertyPreview name={propertyKey}\n property={propertyOrBuilder}\n onClick={onPropertyClick ? () => onPropertyClick(propertyKey, namespace) : undefined}\n selected={selected} />}\n </div>\n\n <div className=\"absolute top-3 right-3 flex flex-row items-center gap-1\">\n {isAIModified && <AIModifiedIndicator />}\n {isPropertyInferred && <>\n <Tooltip title={\"Inferred property\"} asChild={true}>\n <IconButton size=\"smallest\" disabled>\n <FindInPageIcon size=\"smallest\" />\n </IconButton>\n </Tooltip>\n {onPropertyRemove && <Tooltip title={\"Remove inferred property\"}\n asChild={true}>\n <IconButton size=\"smallest\"\n color=\"inherit\"\n onClick={(e) => {\n e.stopPropagation();\n onPropertyRemove(propertyKey, namespace);\n }}>\n <DeleteIcon size={\"smallest\"} />\n </IconButton>\n </Tooltip>}\n </>}\n\n <Menu\n trigger={\n <IconButton\n size=\"smallest\"\n >\n <MoreVertIcon size={\"smallest\"} />\n </IconButton>\n }\n >\n <MenuItem\n dense\n onClick={() => {\n const currentIndex = propertiesOrder.indexOf(propertyKey);\n if (currentIndex > 0) {\n const newOrder = propertiesOrder.filter(k => k !== propertyKey);\n newOrder.unshift(propertyKey);\n onPropertyMove?.(newOrder, namespace);\n }\n }}\n >\n <VerticalAlignTopIcon size=\"smallest\" />\n Move to top\n </MenuItem>\n <MenuItem\n dense\n onClick={() => {\n const currentIndex = propertiesOrder.indexOf(propertyKey);\n if (currentIndex < propertiesOrder.length - 1) {\n const newOrder = propertiesOrder.filter(k => k !== propertyKey);\n newOrder.push(propertyKey);\n onPropertyMove?.(newOrder, namespace);\n }\n }}\n >\n <VerticalAlignBottomIcon size=\"smallest\" />\n Move to bottom\n </MenuItem>\n <MenuItem\n dense\n onClick={() => onPropertyRemove?.(propertyKey, namespace)}\n >\n <DeleteIcon size=\"smallest\" />\n Delete\n </MenuItem>\n </Menu>\n\n </div>\n\n {subtree && <div className={\"ml-16\"}>{subtree}</div>}\n </div>\n </div>\n );\n}\n","import React, { useState } from \"react\";\nimport { FieldCaption, MapProperty, Property, PropertyConfig, } from \"@firecms/core\";\nimport { AddIcon, BooleanSwitchWithLabel, Button, Paper, Typography } from \"@firecms/ui\";\nimport { PropertyFormDialog } from \"../PropertyEditView\";\nimport { getIn, useFormex } from \"@firecms/formex\";\nimport { PropertyTree } from \"../PropertyTree\";\nimport { getFullId, idToPropertiesPath, namespaceToPropertiesOrderPath, namespaceToPropertiesPath } from \"../util\";\n\nexport function MapPropertyField({ disabled, getData, allowDataInference, propertyConfigs, collectionEditable }: {\n disabled: boolean;\n getData?: () => Promise<object[]>;\n allowDataInference: boolean;\n propertyConfigs: Record<string, PropertyConfig>,\n collectionEditable: boolean;\n}) {\n\n const {\n values,\n setFieldValue\n } = useFormex<MapProperty>();\n\n const [propertyDialogOpen, setPropertyDialogOpen] = useState<boolean>(false);\n const [selectedPropertyKey, setSelectedPropertyKey] = useState<string | undefined>();\n const [selectedPropertyNamespace, setSelectedPropertyNamespace] = useState<string | undefined>();\n\n const propertiesOrder = values.propertiesOrder ?? Object.keys(values.properties ?? {});\n const onPropertyCreated = ({\n id,\n property\n }: { id?: string, property: Property }) => {\n if (!id)\n throw Error();\n setFieldValue(\"properties\", {\n ...(values.properties ?? {}),\n [id]: property\n }, false);\n\n const currentPropertiesOrder = values.propertiesOrder ?? Object.keys(values.properties ?? {});\n const newPropertiesOrder = currentPropertiesOrder.includes(id) ? currentPropertiesOrder : [...currentPropertiesOrder, id];\n setFieldValue(\"propertiesOrder\", newPropertiesOrder, false);\n\n setPropertyDialogOpen(false);\n };\n\n const deleteProperty = (propertyKey?: string, namespace?: string) => {\n const fullId = propertyKey ? getFullId(propertyKey, namespace) : undefined;\n if (!fullId)\n throw Error(\"collection editor miss config\");\n\n const propertiesPath = idToPropertiesPath(fullId);\n const propertiesOrderPath = namespaceToPropertiesOrderPath(namespace);\n\n const currentPropertiesOrder: string[] = getIn(values, propertiesOrderPath) ?? Object.keys(getIn(values, namespaceToPropertiesPath(namespace)));\n\n setFieldValue(propertiesPath, undefined, false);\n setFieldValue(propertiesOrderPath, currentPropertiesOrder.filter((p) => p !== propertyKey), false);\n\n setPropertyDialogOpen(false);\n setSelectedPropertyKey(undefined);\n setSelectedPropertyNamespace(undefined);\n };\n\n const selectedPropertyFullId = selectedPropertyKey ? getFullId(selectedPropertyKey, selectedPropertyNamespace) : undefined;\n const selectedProperty = selectedPropertyFullId ? getIn(values.properties, selectedPropertyFullId.replaceAll(\".\", \".properties.\")) : undefined;\n\n const empty = !propertiesOrder || propertiesOrder.length < 1;\n\n const onPropertyMove = (propertiesOrder: string[], namespace?: string) => {\n setFieldValue(namespaceToPropertiesOrderPath(namespace), propertiesOrder, false);\n };\n\n return (\n <>\n <div className={\"col-span-12\"}>\n <div className=\"flex justify-between items-end my-4\">\n <Typography variant={\"subtitle2\"}>Properties in this group</Typography>\n <Button\n onClick={() => setPropertyDialogOpen(true)}\n startIcon={<AddIcon/>}\n >\n Add property to {values.name ?? \"this group\"}\n </Button>\n </div>\n <Paper className=\"p-2 pl-8\">\n <PropertyTree\n properties={values.properties ?? {}}\n propertiesOrder={propertiesOrder}\n errors={{}}\n collectionEditable={collectionEditable}\n onPropertyClick={(propertyKey, namespace) => {\n setSelectedPropertyKey(propertyKey);\n setSelectedPropertyNamespace(namespace);\n setPropertyDialogOpen(true);\n }}\n onPropertyMove={onPropertyMove}/>\n\n {empty &&\n <Typography variant={\"label\"}\n className=\"h-full flex items-center justify-center p-4\">\n Add the first property to this group\n </Typography>}\n </Paper>\n </div>\n\n <div className={\"col-span-12\"}>\n <BooleanSwitchWithLabel\n position={\"start\"}\n size={\"medium\"}\n label=\"Spread children as columns\"\n onValueChange={(v) => setFieldValue(\"spreadChildren\", v)}\n value={values.spreadChildren ?? false}\n />\n <FieldCaption>\n Set this flag to true if you want to display the children of this group as individual columns. This\n will only work for top level groups.\n </FieldCaption>\n </div>\n\n <PropertyFormDialog\n inArray={false}\n forceShowErrors={false}\n open={propertyDialogOpen}\n allowDataInference={allowDataInference}\n collectionEditable={collectionEditable}\n onCancel={() => {\n setPropertyDialogOpen(false);\n setSelectedPropertyKey(undefined);\n setSelectedPropertyNamespace(undefined);\n }}\n onOkClicked={() => {\n setPropertyDialogOpen(false);\n setSelectedPropertyKey(undefined);\n setSelectedPropertyNamespace(undefined);\n }}\n getData={getData}\n onDelete={deleteProperty}\n propertyKey={selectedPropertyKey}\n propertyNamespace={selectedPropertyNamespace}\n property={selectedProperty}\n existingProperty={Boolean(selectedPropertyKey)}\n autoUpdateId={!selectedPropertyKey}\n autoOpenTypeSelect={!selectedPropertyKey}\n onPropertyChanged={onPropertyCreated}\n existingPropertyKeys={selectedPropertyKey ? undefined : propertiesOrder}\n propertyConfigs={propertyConfigs}\n />\n\n </>);\n}\n","import React, { useState } from \"react\";\nimport { ArrayProperty, getFieldConfig, Property, PropertyConfig } from \"@firecms/core\";\nimport { Button, Paper, Typography } from \"@firecms/ui\";\nimport { Field, getIn, useFormex } from \"@firecms/formex\";\nimport { PropertyFormDialog } from \"../PropertyEditView\";\nimport { PropertyFieldPreview } from \"../PropertyFieldPreview\";\nimport { ArrayPropertyValidation } from \"./validation/ArrayPropertyValidation\";\nimport { ValidationPanel } from \"./validation/ValidationPanel\";\n\nexport function RepeatPropertyField({\n showErrors,\n existing,\n disabled,\n getData,\n allowDataInference,\n propertyConfigs,\n collectionEditable\n }: {\n showErrors: boolean,\n existing: boolean,\n disabled: boolean,\n getData?: () => Promise<object[]>;\n allowDataInference: boolean;\n propertyConfigs: Record<string, PropertyConfig>,\n collectionEditable: boolean;\n}) {\n\n const {\n values,\n handleChange,\n errors,\n setFieldValue,\n touched\n } = useFormex<ArrayProperty>();\n\n const [propertyDialogOpen, setPropertyDialogOpen] = useState(false);\n const ofProperty = getIn(values, \"of\");\n const ofPropertyError = getIn(touched, \"of\") && getIn(errors, \"of\");\n\n const onPropertyChanged = ({ id, property, namespace }:\n { id?: string, property: Property, namespace?: string }) => {\n setFieldValue(\"of\", property);\n };\n\n const widget = ofProperty && getFieldConfig(ofProperty, propertyConfigs);\n return (\n <>\n <div className={\"col-span-12\"}>\n <Typography variant={\"subtitle2\"}>\n Repeat component\n </Typography>\n <Field\n name={\"of\"}\n value={ofProperty}\n // validate={(property: Property) => {\n // return property?.dataType ? undefined : \"You need to specify a repeat field\";\n // }}\n >\n {({}) => (\n <Paper className=\"p-2 mt-4\">\n\n {ofProperty && <PropertyFieldPreview\n property={ofProperty}\n onClick={disabled ? undefined : () => setPropertyDialogOpen(true)}\n includeName={false}\n includeEditButton={true}\n selected={false}\n hasError={false}/>}\n\n {!disabled && !ofProperty && <Button variant={\"text\"}\n size={\"large\"}\n color={ofPropertyError ? \"error\" : \"primary\"}\n onClick={() => setPropertyDialogOpen(true)}>\n Edit {`${widget ? widget.name : \"repeat component\"}`}\n </Button>}\n\n <PropertyFormDialog\n inArray={true}\n open={propertyDialogOpen}\n existingProperty={existing}\n getData={getData}\n autoUpdateId={!existing}\n autoOpenTypeSelect={!existing}\n onOkClicked={() => setPropertyDialogOpen(false)}\n allowDataInference={allowDataInference}\n property={ofProperty}\n includeIdAndName={false}\n onPropertyChanged={onPropertyChanged}\n forceShowErrors={showErrors}\n propertyConfigs={propertyConfigs}\n collectionEditable={collectionEditable}\n />\n </Paper>\n )}\n </Field>\n\n </div>\n\n <div className={\"col-span-12\"}>\n\n <ValidationPanel>\n <ArrayPropertyValidation disabled={disabled}/>\n </ValidationPanel>\n\n </div>\n </>\n );\n}\n","import { Field, getIn, useFormex } from \"@firecms/formex\";\nimport { DebouncedTextField } from \"@firecms/ui\";\nimport { PropertyWithId } from \"../PropertyEditView\";\nimport React from \"react\";\nimport { FieldCaption, prettifyIdentifier, toSnakeCase } from \"@firecms/core\";\n\ntype CommonPropertyFieldsProps = {\n showErrors: boolean,\n disabledId: boolean,\n disabled: boolean;\n isNewProperty: boolean;\n autoUpdateId: boolean;\n};\n\nexport const CommonPropertyFields = React.forwardRef<HTMLDivElement, CommonPropertyFieldsProps>(\n function CommonPropertyFields({\n showErrors,\n disabledId,\n disabled,\n autoUpdateId,\n isNewProperty\n }, ref) {\n\n const {\n errors,\n values,\n setFieldValue,\n setFieldTouched,\n touched,\n validate\n } = useFormex<PropertyWithId>();\n\n const name = \"name\";\n const nameError = showErrors && getIn(errors, name);\n\n const id = \"id\";\n const idError = showErrors && getIn(errors, id);\n\n const description = \"description\";\n const descriptionError = showErrors && getIn(errors, description);\n\n return (\n <div className={\"flex flex-col gap-2 col-span-12\"}>\n\n <div>\n <Field\n name={name}\n inputRef={ref}\n as={DebouncedTextField}\n value={values[name]}\n onChange={(e: any) => {\n const newNameValue = e.target.value;\n const idTouched = getIn(touched, id);\n if (!idTouched && autoUpdateId) {\n setFieldValue(id, newNameValue ? toSnakeCase(newNameValue) : \"\", false)\n }\n setFieldValue(name, newNameValue, true);\n setFieldTouched(name, true);\n }}\n style={{ fontSize: 20 }}\n placeholder={\"Field name\"}\n required\n disabled={disabled}\n error={Boolean(nameError)}/>\n\n <FieldCaption error={Boolean(nameError)}>\n {nameError}\n </FieldCaption>\n </div>\n\n <div>\n <Field\n name={id}\n as={DebouncedTextField}\n label={\"ID\"}\n value={values[id]}\n onChange={(e: any) => {\n const newIdValue = e.target.value;\n const nameTouched = getIn(touched, name);\n if (!nameTouched && autoUpdateId) {\n setFieldValue(name, newIdValue ? prettifyIdentifier(newIdValue) : \"\")\n }\n setFieldValue(id, newIdValue, true);\n setFieldTouched(id, true);\n }}\n disabled={disabledId || disabled}\n required\n size=\"small\"\n error={Boolean(idError)}/>\n <FieldCaption error={Boolean(idError)}>\n {idError}\n </FieldCaption>\n </div>\n\n <div>\n <Field name={description}\n as={DebouncedTextField}\n label={\"Description\"}\n disabled={disabled}\n error={Boolean(descriptionError)}/>\n <FieldCaption error={Boolean(descriptionError)}>\n {descriptionError}\n </FieldCaption>\n </div>\n\n </div>\n );\n\n }\n);\n","import React from \"react\";\nimport { StringPropertyValidation } from \"./validation/StringPropertyValidation\";\nimport { ValidationPanel } from \"./validation/ValidationPanel\";\nimport { getIn, useFormex } from \"@firecms/formex\";\n\nimport { TextField } from \"@firecms/ui\";\n\nexport function StringPropertyField({\n widgetId,\n disabled,\n showErrors\n }: {\n widgetId: \"text_field\" | \"multiline\" | \"email\" | \"user_select\";\n disabled: boolean;\n showErrors: boolean;\n}) {\n\n const { values, setFieldValue } = useFormex();\n\n return (\n <>\n <div className={\"col-span-12\"}>\n\n <ValidationPanel>\n\n {widgetId === \"text_field\" &&\n <StringPropertyValidation disabled={disabled}\n length={true}\n lowercase={true}\n matches={true}\n max={true}\n min={true}\n trim={true}\n uppercase={true}\n showErrors={showErrors}/>}\n {widgetId === \"user_select\" &&\n <StringPropertyValidation disabled={disabled}\n showErrors={showErrors}/>}\n\n {widgetId === \"multiline\" &&\n <StringPropertyValidation disabled={disabled}\n length={true}\n lowercase={true}\n max={true}\n min={true}\n trim={true}\n uppercase={true}\n showErrors={showErrors}/>}\n\n {widgetId === \"email\" &&\n <StringPropertyValidation disabled={disabled}\n max={true}\n min={true}\n trim={true}\n showErrors={showErrors}/>}\n\n </ValidationPanel>\n\n </div>\n\n <div className={\"col-span-12\"}>\n\n <TextField name={\"defaultValue\"}\n disabled={disabled}\n onChange={(e: any) => {\n setFieldValue(\"defaultValue\", e.target.value === \"\" ? undefined : e.target.value);\n }}\n label={\"Default value\"}\n value={getIn(values, \"defaultValue\") ?? \"\"}/>\n\n </div>\n </>\n );\n}\n","import React from \"react\";\nimport { Field, FormexFieldProps, getIn, useFormex } from \"@firecms/formex\";\n\nimport { GeneralPropertyValidation } from \"./validation/GeneralPropertyValidation\";\nimport { ValidationPanel } from \"./validation/ValidationPanel\";\nimport { SwitchControl } from \"../SwitchControl\";\n\nexport function BooleanPropertyField({ disabled }: {\n disabled: boolean;\n}) {\n const { values } = useFormex();\n const defaultValue = getIn(values, \"defaultValue\");\n\n return (\n <>\n <div className={\"col-span-12\"}>\n\n <ValidationPanel>\n <GeneralPropertyValidation disabled={disabled}/>\n </ValidationPanel>\n\n </div>\n\n <div className={\"col-span-12\"}>\n\n <Field\n name={\"defaultValue\"}>\n {({ field, form }: FormexFieldProps) => {\n return <SwitchControl\n size={\"medium\"}\n label={defaultValue === null || defaultValue === undefined ? \"Default value not set\" : (\"Default value is \" + defaultValue.toString())}\n disabled={disabled}\n allowIndeterminate={true} field={field}\n form={form}/>\n }}\n </Field>\n\n </div>\n </>\n );\n}\n","import React, { useState } from \"react\";\nimport { AddIcon, Button, Paper, Typography } from \"@firecms/ui\";\nimport { getIn, useFormex } from \"@firecms/formex\";\nimport { OnPropertyChangedParams, PropertyFormDialog } from \"../PropertyEditView\";\nimport {\n getFullId,\n getFullIdPath,\n idToPropertiesPath,\n namespaceToPropertiesOrderPath,\n namespaceToPropertiesPath\n} from \"../util\";\nimport { PropertyTree } from \"../PropertyTree\";\nimport { ArrayProperty, PropertyConfig } from \"@firecms/core\";\n\nexport function BlockPropertyField({\n disabled,\n getData,\n allowDataInference,\n propertyConfigs,\n collectionEditable\n }: {\n disabled: boolean;\n getData?: () => Promise<object[]>;\n allowDataInference: boolean;\n propertyConfigs: Record<string, PropertyConfig>,\n collectionEditable: boolean;\n}) {\n\n const {\n values,\n setFieldValue\n } = useFormex<ArrayProperty>();\n\n const [propertyDialogOpen, setPropertyDialogOpen] = useState<boolean>(false);\n const [selectedPropertyKey, setSelectedPropertyKey] = useState<string | undefined>();\n const [selectedPropertyNamespace, setSelectedPropertyNamespace] = useState<string | undefined>();\n\n const onPropertyChanged = ({\n id,\n namespace,\n property\n }: OnPropertyChangedParams) => {\n if (!id)\n throw Error();\n\n setFieldValue(\"oneOf.\" + getFullIdPath(id, namespace), property, false);\n\n const currentPropertiesOrder = values.oneOf?.propertiesOrder ?? Object.keys(values.oneOf?.properties ?? {});\n const newPropertiesOrder = currentPropertiesOrder.includes(id) ? currentPropertiesOrder : [...currentPropertiesOrder, id];\n setFieldValue(\"oneOf.\" + namespaceToPropertiesOrderPath(namespace), newPropertiesOrder, false);\n setPropertyDialogOpen(false);\n };\n\n const selectedPropertyFullId = selectedPropertyKey ? getFullId(selectedPropertyKey, selectedPropertyNamespace) : undefined;\n const selectedProperty = selectedPropertyFullId ? getIn(values.oneOf?.properties, selectedPropertyFullId.replaceAll(\".\", \".properties.\")) : undefined;\n\n const deleteProperty = (propertyKey?: string, namespace?: string) => {\n const fullId = propertyKey ? getFullId(propertyKey, namespace) : undefined;\n if (!fullId)\n throw Error(\"collection editor miss config\");\n\n setFieldValue(`oneOf.${idToPropertiesPath(fullId)}`, undefined, false);\n const propertiesOrderPath = `oneOf.${namespaceToPropertiesOrderPath(namespace)}`;\n const currentPropertiesOrder: string[] = getIn(values, propertiesOrderPath) ?? Object.keys(getIn(values, namespaceToPropertiesPath(namespace)));\n setFieldValue(propertiesOrderPath, currentPropertiesOrder.filter((p) => p !== propertyKey), false);\n\n setPropertyDialogOpen(false);\n setSelectedPropertyKey(undefined);\n setSelectedPropertyNamespace(undefined);\n };\n\n const addChildButton = <Button\n autoFocus\n onClick={() => setPropertyDialogOpen(true)}\n startIcon={<AddIcon/>}\n >\n Add property to {values.name ?? \"this block\"}\n </Button>;\n\n const onPropertyMove = (propertiesOrder: string[], namespace?: string) => {\n setFieldValue(`oneOf.${namespaceToPropertiesOrderPath(namespace)}`, propertiesOrder, false);\n };\n\n return (\n <>\n <div className={\"col-span-12\"}>\n <div className={\"flex justify-between items-end mt-8 mb-4\"}>\n <Typography variant={\"subtitle2\"}>\n Properties in this block\n </Typography>\n {addChildButton}\n </div>\n <Paper className=\"p-2 pl-8\">\n\n <PropertyTree\n properties={values.oneOf?.properties ?? {}}\n propertiesOrder={values.oneOf?.propertiesOrder}\n errors={{}}\n collectionEditable={collectionEditable}\n onPropertyClick={disabled\n ? undefined\n : (propertyKey, namespace) => {\n setSelectedPropertyKey(propertyKey);\n setSelectedPropertyNamespace(namespace);\n setPropertyDialogOpen(true);\n }}\n onPropertyMove={disabled\n ? undefined\n : onPropertyMove}/>\n\n {!disabled && (values.oneOf?.propertiesOrder?.length === 0)&&\n <div className=\"h-full flex items-center justify-center p-4\">\n Add the first property to this block\n </div>}\n\n </Paper>\n </div>\n\n {!disabled && <PropertyFormDialog\n inArray={false}\n forceShowErrors={false}\n open={propertyDialogOpen}\n getData={getData}\n allowDataInference={allowDataInference}\n onCancel={() => {\n setPropertyDialogOpen(false);\n setSelectedPropertyKey(undefined);\n setSelectedPropertyNamespace(undefined);\n }}\n onOkClicked={() => {\n setPropertyDialogOpen(false);\n setSelectedPropertyKey(undefined);\n setSelectedPropertyNamespace(undefined);\n }}\n collectionEditable={collectionEditable}\n onDelete={deleteProperty}\n propertyKey={selectedPropertyKey}\n propertyNamespace={selectedPropertyNamespace}\n property={selectedProperty}\n existingProperty={Boolean(selectedPropertyKey)}\n autoUpdateId={!selectedPropertyKey}\n autoOpenTypeSelect={!selectedPropertyKey}\n onPropertyChanged={onPropertyChanged}\n existingPropertyKeys={selectedPropertyKey ? undefined : values.oneOf?.propertiesOrder}\n propertyConfigs={propertyConfigs}/>}\n\n </>);\n}\n","import React from \"react\";\n\nimport { Field, FormexFieldProps, getIn, useFormex } from \"@firecms/formex\";\nimport { DebouncedTextField } from \"@firecms/ui\";\nimport { GeneralPropertyValidation } from \"./GeneralPropertyValidation\";\nimport { SwitchControl } from \"../../SwitchControl\";\n\nexport function NumberPropertyValidation({ disabled }: {\n disabled: boolean;\n}) {\n\n const {\n values,\n handleChange\n } = useFormex();\n\n const validationMin = \"validation.min\";\n const validationMax = \"validation.max\";\n const validationLessThan = \"validation.lessThan\";\n const validationMoreThan = \"validation.moreThan\";\n const validationPositive = \"validation.positive\";\n const validationNegative = \"validation.negative\";\n const validationInteger = \"validation.integer\";\n\n return (\n\n <div className={\"grid grid-cols-12 gap-2\"}>\n <GeneralPropertyValidation disabled={disabled}/>\n\n\n <div className={\"col-span-6\"}>\n <DebouncedTextField value={getIn(values, validationMin)}\n label={\"Min value\"}\n name={validationMin}\n type=\"number\"\n size=\"small\"\n disabled={disabled}\n onChange={handleChange}/>\n </div>\n\n <div className={\"col-span-6\"}>\n <DebouncedTextField value={getIn(values, validationMax)}\n label={\"Max value\"}\n name={validationMax}\n type=\"number\"\n size=\"small\"\n\n disabled={disabled}\n onChange={handleChange}/>\n </div>\n\n\n <div className={\"col-span-6\"}>\n <DebouncedTextField\n value={getIn(values, validationLessThan)}\n label={\"Less than\"}\n name={validationLessThan}\n type=\"number\"\n size=\"small\"\n\n disabled={disabled}\n onChange={handleChange}/>\n </div>\n\n <div className={\"col-span-6\"}>\n <DebouncedTextField\n value={getIn(values, validationMoreThan)}\n label={\"More than\"}\n name={validationMoreThan}\n type=\"number\"\n size=\"small\"\n\n disabled={disabled}\n onChange={handleChange}/>\n </div>\n\n <div className={\"col-span-4\"}>\n <Field name={validationPositive}\n type=\"checkbox\">\n {({ field, form }: FormexFieldProps) => {\n return <SwitchControl\n label={\"Positive value\"}\n disabled={disabled}\n form={form}\n field={field}/>\n }}\n </Field>\n </div>\n <div className={\"col-span-4\"}>\n <Field name={validationNegative}\n type=\"checkbox\">\n {({ field, form }: FormexFieldProps) => {\n return <SwitchControl\n label={\"Negative value\"}\n disabled={disabled}\n form={form}\n field={field}/>\n }}\n </Field>\n </div>\n <div className={\"col-span-4\"}>\n <Field name={validationInteger}\n type=\"checkbox\">\n {({ field, form }: FormexFieldProps) => {\n return <SwitchControl\n label={\"Integer value\"}\n disabled={disabled}\n form={form}\n field={field}/>\n }}\n </Field>\n </div>\n </div>\n );\n}\n","import React from \"react\";\nimport { NumberPropertyValidation } from \"./validation/NumberPropertyValidation\";\nimport { ValidationPanel } from \"./validation/ValidationPanel\";\nimport { TextField } from \"@firecms/ui\";\nimport { getIn, useFormex } from \"@firecms/formex\";\n\nexport function NumberPropertyField({ disabled }: {\n disabled: boolean;\n}) {\n\n const { values, setFieldValue } = useFormex();\n\n return (\n <>\n\n <div className={\"col-span-12\"}>\n\n <ValidationPanel>\n <NumberPropertyValidation disabled={disabled}/>\n </ValidationPanel>\n\n </div>\n\n <div className={\"col-span-12\"}>\n\n <TextField name={\"defaultValue\"}\n disabled={disabled}\n type={\"number\"}\n onChange={(e: any) => {\n setFieldValue(\"defaultValue\", e.target.value === \"\" ? undefined : parseFloat(e.target.value));\n }}\n label={\"Default value\"}\n value={getIn(values, \"defaultValue\") ?? \"\"}/>\n\n </div>\n </>\n );\n}\n","import React from \"react\";\nimport { Field, getIn, useFormex } from \"@firecms/formex\";\nimport { FieldCaption, IconForView, NumberProperty, StringProperty, useNavigationController } from \"@firecms/core\";\nimport { CircularProgress, Select, SelectGroup, SelectItem, Typography, } from \"@firecms/ui\";\n\nexport function ReferencePropertyField({\n existing,\n multiple,\n disabled,\n showErrors,\n asString\n }: {\n existing: boolean,\n multiple: boolean,\n disabled: boolean,\n showErrors: boolean,\n asString?: boolean\n}) {\n\n const {\n values,\n handleChange,\n errors,\n } = useFormex<StringProperty | NumberProperty>();\n\n const navigation = useNavigationController();\n\n if (!navigation)\n return <div className={\"col-span-12\"}>\n <CircularProgress/>\n </div>;\n\n const pathPath = asString ? \"reference.path\" : (multiple ? \"of.path\" : \"path\") ;\n const pathValue: string | undefined = getIn(values, pathPath);\n const pathError: string | undefined = showErrors && getIn(errors, pathPath);\n\n return (\n <>\n <div className={\"col-span-12\"}>\n\n <Field name={pathPath}\n pathPath={pathPath}\n type=\"select\"\n disabled={disabled}\n value={pathValue}\n error={pathError}\n handleChange={handleChange}\n as={CollectionsSelect}/>\n\n </div>\n\n </>\n );\n}\n\nexport function CollectionsSelect({\n disabled,\n pathPath,\n value,\n handleChange,\n error,\n ...props\n }: {\n disabled: boolean,\n pathPath: string,\n value?: string,\n handleChange: (event: any) => void,\n error?: string\n}) {\n\n const navigation = useNavigationController();\n\n if (!navigation)\n return <div className={\"col-span-12\"}>\n <CircularProgress/>\n </div>;\n\n const collections = navigation?.collections ?? [];\n\n const groups: string[] = Array.from(new Set(\n Object.values(collections).map(e => e.group).filter(Boolean) as string[]\n ).values());\n\n const ungroupedCollections = collections.filter((col) => !col.group);\n\n return (\n <>\n <Select\n error={Boolean(error)}\n disabled={disabled}\n value={value ?? \"\"}\n position={\"item-aligned\"}\n name={pathPath}\n size={\"large\"}\n fullWidth={true}\n onChange={handleChange}\n label={\"Target collection\"}\n renderValue={(selected) => {\n const selectedCollection = collections.find(collection => collection.id === selected || collection.path === selected);\n if (!selectedCollection) return null;\n return (\n <div className=\"flex flex-row\">\n <IconForView collectionOrView={selectedCollection}/>\n <Typography\n variant={\"subtitle2\"}\n className=\"font-medium ml-4\">\n {selectedCollection?.name.toUpperCase()}\n </Typography>\n </div>)\n }}\n {...props}>\n\n {groups.flatMap((group) => (\n <SelectGroup label={group || \"Views\"}\n key={`group_${group}`}>\n {\n collections.filter(collection => collection.group === group)\n .map((collection) => {\n return <SelectItem\n key={`${collection.id ?? collection.path}-${group}`}\n value={collection.id ?? collection.path}>\n <div className=\"flex flex-row\">\n <IconForView collectionOrView={collection}/>\n <Typography\n variant={\"subtitle2\"}\n className=\"font-medium ml-4\">\n {collection?.name.toUpperCase()}\n </Typography>\n </div>\n </SelectItem>;\n })\n\n }\n </SelectGroup>\n ))}\n\n {ungroupedCollections && <SelectGroup label={\"Views\"}>\n {ungroupedCollections\n .map((collection) => {\n return <SelectItem key={collection.id ?? collection.path}\n value={collection.id ?? collection.path}>\n <div className=\"flex flex-row\">\n <IconForView collectionOrView={collection}/>\n <Typography\n variant={\"subtitle2\"}\n className=\"font-medium ml-4\">\n {collection?.name.toUpperCase()}\n </Typography>\n </div>\n </SelectItem>;\n })\n\n }\n </SelectGroup>}\n\n </Select>\n\n </>\n );\n}\n","import React from \"react\";\nimport { getIn, useFormex } from \"@firecms/formex\";\nimport { FieldCaption, NumberProperty, StringProperty } from \"@firecms/core\";\nimport { Select, SelectItem } from \"@firecms/ui\";\nimport { GeneralPropertyValidation } from \"./validation/GeneralPropertyValidation\";\nimport { ValidationPanel } from \"./validation/ValidationPanel\";\n\n// Common IANA timezones with human-readable labels\nconst TIMEZONES = [\n // UTC\n { value: \"UTC\", label: \"UTC (Coordinated Universal Time)\" },\n // Americas\n { value: \"America/New_York\", label: \"New York (US Eastern)\" },\n { value: \"America/Chicago\", label: \"Chicago (US Central)\" },\n { value: \"America/Denver\", label: \"Denver (US Mountain)\" },\n { value: \"America/Los_Angeles\", label: \"Los Angeles (US Pacific)\" },\n { value: \"America/Anchorage\", label: \"Anchorage (Alaska)\" },\n { value: \"America/Toronto\", label: \"Toronto (Canada Eastern)\" },\n { value: \"America/Vancouver\", label: \"Vancouver (Canada Pacific)\" },\n { value: \"America/Mexico_City\", label: \"Mexico City\" },\n { value: \"America/Sao_Paulo\", label: \"São Paulo (Brazil)\" },\n { value: \"America/Buenos_Aires\", label: \"Buenos Aires (Argentina)\" },\n // Europe\n { value: \"Europe/London\", label: \"London (UK)\" },\n { value: \"Europe/Paris\", label: \"Paris (France)\" },\n { value: \"Europe/Berlin\", label: \"Berlin (Germany)\" },\n { value: \"Europe/Madrid\", label: \"Madrid (Spain)\" },\n { value: \"Europe/Rome\", label: \"Rome (Italy)\" },\n { value: \"Europe/Amsterdam\", label: \"Amsterdam (Netherlands)\" },\n { value: \"Europe/Brussels\", label: \"Brussels (Belgium)\" },\n { value: \"Europe/Zurich\", label: \"Zurich (Switzerland)\" },\n { value: \"Europe/Stockholm\", label: \"Stockholm (Sweden)\" },\n { value: \"Europe/Vienna\", label: \"Vienna (Austria)\" },\n { value: \"Europe/Warsaw\", label: \"Warsaw (Poland)\" },\n { value: \"Europe/Prague\", label: \"Prague (Czech Republic)\" },\n { value: \"Europe/Athens\", label: \"Athens (Greece)\" },\n { value: \"Europe/Moscow\", label: \"Moscow (Russia)\" },\n { value: \"Europe/Istanbul\", label: \"Istanbul (Turkey)\" },\n // Asia\n { value: \"Asia/Dubai\", label: \"Dubai (UAE)\" },\n { value: \"Asia/Kolkata\", label: \"Mumbai / Delhi (India)\" },\n { value: \"Asia/Bangkok\", label: \"Bangkok (Thailand)\" },\n { value: \"Asia/Singapore\", label: \"Singapore\" },\n { value: \"Asia/Hong_Kong\", label: \"Hong Kong\" },\n { value: \"Asia/Shanghai\", label: \"Shanghai (China)\" },\n { value: \"Asia/Tokyo\", label: \"Tokyo (Japan)\" },\n { value: \"Asia/Seoul\", label: \"Seoul (South Korea)\" },\n { value: \"Asia/Jakarta\", label: \"Jakarta (Indonesia)\" },\n // Oceania\n { value: \"Australia/Sydney\", label: \"Sydney (Australia Eastern)\" },\n { value: \"Australia/Melbourne\", label: \"Melbourne (Australia)\" },\n { value: \"Australia/Brisbane\", label: \"Brisbane (Australia)\" },\n { value: \"Australia/Perth\", label: \"Perth (Australia Western)\" },\n { value: \"Pacific/Auckland\", label: \"Auckland (New Zealand)\" },\n // Africa\n { value: \"Africa/Cairo\", label: \"Cairo (Egypt)\" },\n { value: \"Africa/Johannesburg\", label: \"Johannesburg (South Africa)\" },\n { value: \"Africa/Lagos\", label: \"Lagos (Nigeria)\" },\n];\n\nexport function DateTimePropertyField({ disabled }: {\n disabled: boolean;\n}) {\n\n const {\n values,\n errors,\n touched,\n setFieldValue\n } = useFormex<StringProperty | NumberProperty>();\n\n const modePath = \"mode\";\n const modeValue: string | undefined = getIn(values, modePath);\n const modeError: string | undefined = getIn(touched, modePath) && getIn(errors, modePath);\n\n const autoValuePath = \"autoValue\";\n const autoValueValue: string | undefined = getIn(values, autoValuePath);\n const autoValueError: string | undefined = getIn(touched, autoValuePath) && getIn(errors, autoValuePath);\n\n const timezonePath = \"timezone\";\n const timezoneValue: string | undefined = getIn(values, timezonePath);\n const timezoneError: string | undefined = getIn(touched, timezonePath) && getIn(errors, timezonePath);\n\n return (\n <>\n <div className={\"flex flex-col col-span-12 gap-2\"}>\n <div>\n <Select name={modePath}\n value={modeValue ?? \"date\"}\n error={Boolean(modeError)}\n size={\"large\"}\n onValueChange={(v) => setFieldValue(modePath, v)}\n label={\"Mode\"}\n fullWidth={true}\n renderValue={(v) => {\n switch (v) {\n case \"date_time\":\n return \"Date/Time\";\n case \"date\":\n return \"Date\";\n default:\n return \"\";\n }\n }}\n disabled={disabled}>\n <SelectItem value={\"date_time\"}> Date/Time </SelectItem>\n <SelectItem value={\"date\"}> Date </SelectItem>\n </Select>\n <FieldCaption error={Boolean(modeError)}>\n {modeError}\n </FieldCaption>\n </div>\n <div>\n <Select name={autoValuePath}\n disabled={disabled}\n size={\"large\"}\n fullWidth={true}\n value={autoValueValue ?? \"\"}\n onValueChange={(v) => setFieldValue(autoValuePath, v === \"none\" ? null : v)}\n renderValue={(v) => {\n switch (v) {\n case \"on_create\":\n return \"On create\";\n case \"on_update\":\n return \"On any update\";\n default:\n return \"None\";\n }\n }}\n error={Boolean(autoValueError)}\n label={\"Automatic value\"}>\n <SelectItem value={\"none\"}> None </SelectItem>\n <SelectItem value={\"on_create\"}> On create </SelectItem>\n <SelectItem value={\"on_update\"}> On any update </SelectItem>\n </Select>\n <FieldCaption error={Boolean(autoValueError)}>\n {autoValueError ?? \"Update this field automatically when creating or updating the entity\"}\n </FieldCaption>\n </div>\n <div>\n <Select name={timezonePath}\n disabled={disabled}\n size={\"large\"}\n fullWidth={true}\n value={timezoneValue ?? \"__local__\"}\n onValueChange={(v) => setFieldValue(timezonePath, v === \"__local__\" ? undefined : v)}\n renderValue={(v) => {\n if (!v || v === \"__local__\") return \"Local timezone\";\n const tz = TIMEZONES.find(t => t.value === v);\n return tz?.label ?? v;\n }}\n error={Boolean(timezoneError)}\n label={\"Timezone\"}>\n <SelectItem value={\"__local__\"}> Local timezone </SelectItem>\n {TIMEZONES.map((tz) => (\n <SelectItem key={tz.value} value={tz.value}>\n {tz.label}\n </SelectItem>\n ))}\n </Select>\n <FieldCaption error={Boolean(timezoneError)}>\n {timezoneError ?? \"Timezone for displaying and inputting dates. Values are always stored in UTC.\"}\n </FieldCaption>\n </div>\n\n </div>\n\n <div className={\"col-span-12\"}>\n <ValidationPanel>\n <GeneralPropertyValidation disabled={disabled} />\n </ValidationPanel>\n </div>\n </>\n );\n}\n","import React from \"react\";\n\nimport { Field, FormexFieldProps } from \"@firecms/formex\";\nimport { SwitchControl } from \"../../SwitchControl\";\n\nexport function AdvancedPropertyValidation({ disabled }: {\n disabled: boolean\n}) {\n\n const columnWidth = \"columnWidth\";\n const hideFromCollection = \"hideFromCollection\";\n const readOnly = \"readOnly\";\n\n return (\n\n <div className={\"grid grid-cols-12 gap-2\"}>\n <div className={\"col-span-12\"}>\n <Field type=\"checkbox\" name={hideFromCollection}>\n {({ field, form }: FormexFieldProps) => {\n return <SwitchControl\n label={\"Hide from collection\"}\n size={\"medium\"}\n disabled={disabled}\n form={form}\n tooltip={\"Hide this field from the collection view. It will still be visible in the form view\"}\n field={field}/>\n }}\n </Field>\n </div>\n\n <div className={\"col-span-12\"}>\n <Field name={readOnly}\n type=\"checkbox\">\n {({ field, form }: FormexFieldProps) => {\n return <SwitchControl\n label={\"Read only\"}\n size={\"medium\"}\n disabled={disabled}\n tooltip={\"Is this a read only field. Display only as a preview\"}\n form={form}\n field={field}/>\n }}\n </Field>\n </div>\n </div>\n );\n}\n","import { PropsWithChildren } from \"react\";\n\nimport { ExpandablePanel, SettingsIcon, Typography } from \"@firecms/ui\";\n\nexport function ConditionsPanel({\n children\n}: PropsWithChildren<{}>) {\n\n return (\n <ExpandablePanel\n initiallyExpanded={true}\n asField={true}\n innerClassName=\"p-4\"\n title={\n <div className=\"flex flex-row text-surface-500 text-text-secondary dark:text-text-secondary-dark\">\n <SettingsIcon />\n <Typography variant={\"subtitle2\"}\n className=\"ml-4\">\n Conditions\n </Typography>\n </div>\n }>\n\n {children}\n\n </ExpandablePanel>\n )\n}\n","import { Properties, Property, PropertyOrBuilder, isPropertyBuilder } from \"@firecms/core\";\n\n/**\n * Recursively extract all property paths from a Properties object.\n * For nested map properties, creates dot-notation paths like \"address.city\".\n * Skips PropertyBuilder functions (callbacks) as they cannot be statically analyzed.\n * \n * @param properties - The properties object to extract paths from\n * @param prefix - Optional prefix for nested paths (used in recursion)\n * @returns Array of property path strings\n */\nexport function getPropertyPaths(\n properties: Properties | undefined,\n prefix: string = \"\"\n): string[] {\n if (!properties) return [];\n\n const paths: string[] = [];\n\n for (const [key, propertyOrBuilder] of Object.entries(properties)) {\n if (!propertyOrBuilder) continue;\n\n // Skip PropertyBuilder functions - they require runtime values to resolve\n if (isPropertyBuilder(propertyOrBuilder)) continue;\n\n const property = propertyOrBuilder as Property;\n const fullPath = prefix ? `${prefix}.${key}` : key;\n paths.push(fullPath);\n\n // Recursively add nested map properties\n if (property.dataType === \"map\" && property.properties) {\n const nestedPaths = getPropertyPaths(\n property.properties as Properties,\n fullPath\n );\n paths.push(...nestedPaths);\n }\n\n // For arrays with object items, add the nested paths too\n if (property.dataType === \"array\" && property.of) {\n const ofPropertyOrBuilder = property.of as PropertyOrBuilder;\n // Skip if the array's 'of' is a PropertyBuilder\n if (!isPropertyBuilder(ofPropertyOrBuilder)) {\n const ofProperty = ofPropertyOrBuilder as Property;\n if (ofProperty.dataType === \"map\" && ofProperty.properties) {\n const nestedPaths = getPropertyPaths(\n ofProperty.properties as Properties,\n `${fullPath}[]`\n );\n paths.push(...nestedPaths);\n }\n }\n }\n }\n\n return paths;\n}\n\n/**\n * Get property paths grouped by top-level property for UI display.\n * Skips PropertyBuilder functions.\n * \n * @param properties - The properties object\n * @returns Object with top-level keys mapping to their nested paths\n */\nexport function getGroupedPropertyPaths(\n properties: Properties | undefined\n): Record<string, string[]> {\n if (!properties) return {};\n\n const grouped: Record<string, string[]> = {};\n\n for (const [key, propertyOrBuilder] of Object.entries(properties)) {\n if (!propertyOrBuilder) continue;\n\n // Skip PropertyBuilder functions\n if (isPropertyBuilder(propertyOrBuilder)) continue;\n\n const property = propertyOrBuilder as Property;\n grouped[key] = [key];\n\n if (property.dataType === \"map\" && property.properties) {\n const nestedPaths = getPropertyPaths(\n property.properties as Properties,\n key\n );\n grouped[key].push(...nestedPaths);\n }\n }\n\n return grouped;\n}\n","import React from \"react\";\nimport { useFormex } from \"@firecms/formex\";\nimport {\n DeleteIcon,\n IconButton,\n Select,\n SelectItem,\n DebouncedTextField,\n Typography,\n Chip,\n BooleanSwitchWithLabel,\n TextField,\n cls,\n defaultBorderMixin\n} from \"@firecms/ui\";\nimport {\n Properties,\n Property,\n PropertyOrBuilder,\n getFieldConfig,\n DEFAULT_FIELD_CONFIGS,\n getIconForWidget,\n EnumValueConfig,\n isPropertyBuilder\n} from \"@firecms/core\";\nimport { PropertyWithId } from \"../../PropertyEditView\";\nimport { getPropertyPaths } from \"./property_paths\";\n\n/**\n * Condition types that can be configured\n */\nconst CONDITION_TYPES = [\n { id: \"disabled\", label: \"Disabled\", description: \"Disable this field when condition is true\" },\n { id: \"hidden\", label: \"Hidden\", description: \"Hide this field when condition is true\" },\n { id: \"required\", label: \"Required\", description: \"Make this field required when condition is true\" },\n { id: \"readOnly\", label: \"Read Only\", description: \"Make this field read-only when condition is true\" }\n] as const;\n\ntype ConditionType = typeof CONDITION_TYPES[number][\"id\"];\n\n/**\n * Operators for building conditions with their applicable data types\n */\nconst OPERATORS = [\n { id: \"==\", label: \"equals\", valueType: \"any\", applicableTo: [\"string\", \"number\", \"boolean\", \"date\"] },\n { id: \"!=\", label: \"not equals\", valueType: \"any\", applicableTo: [\"string\", \"number\", \"boolean\", \"date\"] },\n { id: \">\", label: \"greater than\", valueType: \"number\", applicableTo: [\"number\", \"date\"] },\n { id: \"<\", label: \"less than\", valueType: \"number\", applicableTo: [\"number\", \"date\"] },\n { id: \">=\", label: \"greater or equal\", valueType: \"number\", applicableTo: [\"number\", \"date\"] },\n { id: \"<=\", label: \"less or equal\", valueType: \"number\", applicableTo: [\"number\", \"date\"] },\n { id: \"in\", label: \"contains\", valueType: \"any\", applicableTo: [\"array\"] },\n { id: \"!in\", label: \"not contains\", valueType: \"any\", applicableTo: [\"array\"] },\n { id: \"!!\", label: \"has a value\", valueType: \"none\", applicableTo: [\"string\", \"number\", \"boolean\", \"array\", \"map\", \"date\"] },\n { id: \"!\", label: \"is empty\", valueType: \"none\", applicableTo: [\"string\", \"number\", \"boolean\", \"array\", \"map\", \"date\"] },\n { id: \"isPast\", label: \"is in the past\", valueType: \"none\", applicableTo: [\"date\"] },\n { id: \"isFuture\", label: \"is in the future\", valueType: \"none\", applicableTo: [\"date\"] }\n] as const;\n\ntype OperatorId = typeof OPERATORS[number][\"id\"];\n\n// Context fields with their types\nconst CONTEXT_FIELDS = [\n { id: \"isNew\", label: \"Is New Entity\", dataType: \"boolean\", color: \"#9c27b0\" },\n { id: \"entityId\", label: \"Entity ID\", dataType: \"string\", color: \"#2196f3\" },\n { id: \"user.roles\", label: \"User Roles\", dataType: \"array\", color: \"#ff9800\" }\n] as const;\n\ninterface SimpleRule {\n field: string;\n operator: OperatorId;\n value: string;\n}\n\ntype LogicOperator = \"and\" | \"or\";\n\n/**\n * A condition group can contain rules and/or nested groups\n */\ninterface ConditionGroup {\n logic: LogicOperator;\n rules: SimpleRule[];\n groups?: ConditionGroup[]; // Nested groups for complex logic\n}\n\n/**\n * Get the property at a given path.\n * Returns undefined if the path contains a PropertyBuilder (callback).\n */\nfunction getPropertyAtPath(\n fieldPath: string,\n collectionProperties?: Properties\n): Property | undefined {\n if (!collectionProperties) return undefined;\n\n const parts = fieldPath.split(\".\");\n let current: Properties | undefined = collectionProperties;\n let property: Property | undefined;\n\n for (const part of parts) {\n if (!current) return undefined;\n const propertyOrBuilder = current[part] as PropertyOrBuilder | undefined;\n if (!propertyOrBuilder) return undefined;\n\n // Skip PropertyBuilder functions - they require runtime values\n if (isPropertyBuilder(propertyOrBuilder)) return undefined;\n\n property = propertyOrBuilder as Property;\n\n if (property.dataType === \"map\" && property.properties) {\n current = property.properties as Properties;\n } else {\n current = undefined;\n }\n }\n\n return property;\n}\n\n/**\n * Get the data type for a field path\n */\nfunction getFieldDataType(\n fieldPath: string,\n collectionProperties?: Properties\n): string {\n // Check context fields first\n const contextField = CONTEXT_FIELDS.find(f => f.id === fieldPath);\n if (contextField) return contextField.dataType;\n\n const property = getPropertyAtPath(fieldPath, collectionProperties);\n return property?.dataType ?? \"string\";\n}\n\n/**\n * Get enum values for a property if it has them\n */\nfunction getEnumValues(property: Property | undefined): EnumValueConfig[] | undefined {\n if (!property) return undefined;\n if (property.dataType === \"string\" && property.enumValues) {\n // Normalize to array format\n if (Array.isArray(property.enumValues)) {\n return property.enumValues;\n }\n // Handle object format { key: label }\n return Object.entries(property.enumValues).map(([id, label]) => ({\n id,\n label: typeof label === \"string\" ? label : (label as EnumValueConfig).label\n }));\n }\n return undefined;\n}\n\n/**\n * Get operators applicable for a given data type\n */\nfunction getOperatorsForDataType(dataType: string) {\n return OPERATORS.filter(op => {\n const applicable = op.applicableTo as readonly string[];\n return applicable.includes(dataType) ||\n (applicable.includes(\"string\") && ![\"number\", \"date\", \"array\"].includes(dataType));\n });\n}\n\n/**\n * Props for a single rule row (used inside a group)\n */\ninterface RuleRowProps {\n rule: SimpleRule;\n onRuleChange: (rule: SimpleRule) => void;\n onRemove: () => void;\n disabled: boolean;\n availableFields: string[];\n collectionProperties?: Properties;\n showErrors: boolean;\n showRemoveButton: boolean;\n}\n\n/**\n * Props for a condition group (with AND/OR logic)\n */\ninterface ConditionGroupRowProps {\n conditionType: ConditionType;\n group: ConditionGroup;\n onGroupChange: (group: ConditionGroup) => void;\n onRemove: () => void;\n disabled: boolean;\n availableFields: string[];\n collectionProperties?: Properties;\n showErrors: boolean;\n}\n\n/**\n * Dynamic value input based on field data type and enum values\n */\nfunction ConditionValueInput({\n value,\n onChange,\n dataType,\n enumValues,\n disabled,\n operator\n}: {\n value: string;\n onChange: (value: string) => void;\n dataType: string;\n enumValues?: EnumValueConfig[];\n disabled: boolean;\n operator: OperatorId;\n}) {\n // For truthy/falsy operators, no value needed\n if (operator === \"!!\" || operator === \"!\") {\n return null;\n }\n\n // Boolean - use switch\n if (dataType === \"boolean\") {\n return (\n <BooleanSwitchWithLabel\n value={value === \"true\"}\n size=\"small\"\n position=\"start\"\n disabled={disabled}\n onValueChange={(newValue) => onChange(newValue ? \"true\" : \"false\")}\n />\n );\n }\n\n // Enum/string with enumValues - use select\n if (enumValues && enumValues.length > 0) {\n return (\n <Select\n value={value}\n onValueChange={onChange}\n disabled={disabled}\n size=\"small\"\n className=\"min-w-[120px]\"\n placeholder=\"Select value\">\n {enumValues.map(ev => (\n <SelectItem key={ev.id} value={String(ev.id)}>\n {ev.label}\n </SelectItem>\n ))}\n </Select>\n );\n }\n\n // Number - use number input\n if (dataType === \"number\") {\n return (\n <TextField\n value={value}\n type=\"number\"\n size=\"small\"\n disabled={disabled}\n placeholder=\"Value\"\n className=\"flex-1 min-w-[80px]\"\n onChange={(e) => onChange(e.target.value)}\n />\n );\n }\n\n // Array - comma separated values\n if (dataType === \"array\") {\n return (\n <DebouncedTextField\n value={value}\n onChange={(e) => onChange(e.target.value)}\n disabled={disabled}\n size=\"small\"\n placeholder=\"value1, value2\"\n className=\"flex-1 min-w-[120px]\"\n />\n );\n }\n\n // Default - text input\n return (\n <DebouncedTextField\n value={value}\n onChange={(e) => onChange(e.target.value)}\n disabled={disabled}\n size=\"small\"\n placeholder=\"Value\"\n className=\"flex-1 min-w-[100px]\"\n inputClassName=\"min-w-[100px]\"\n />\n );\n}\n\nfunction ConditionRow({\n rule,\n onRuleChange,\n onRemove,\n disabled,\n availableFields,\n collectionProperties,\n showErrors,\n showRemoveButton = true\n}: RuleRowProps & { showRemoveButton?: boolean }) {\n const fieldDataType = getFieldDataType(rule.field, collectionProperties);\n const applicableOperators = getOperatorsForDataType(fieldDataType);\n const property = getPropertyAtPath(rule.field, collectionProperties);\n const enumValues = getEnumValues(property);\n const operator = OPERATORS.find(op => op.id === rule.operator);\n const showValueField = operator?.valueType !== \"none\";\n\n // Validation: check for incomplete condition (only show after submission attempt)\n const isFieldMissing = !rule.field;\n const isValueMissing = showValueField && !rule.value && rule.value !== \"0\";\n const hasError = showErrors && (isFieldMissing || isValueMissing);\n\n // Get color for the field\n const getFieldColor = (fieldPath: string): string => {\n const contextField = CONTEXT_FIELDS.find(f => f.id === fieldPath);\n if (contextField) return contextField.color;\n\n if (!collectionProperties) return \"#888\";\n\n const prop = getPropertyAtPath(fieldPath, collectionProperties);\n if (!prop) return \"#888\";\n const config = getFieldConfig(prop, DEFAULT_FIELD_CONFIGS);\n return config?.color ?? \"#888\";\n };\n\n return (\n <div className={cls(\n \"flex items-center gap-2 p-2 rounded-md\",\n hasError ? \"bg-red-50 dark:bg-red-900/20\" : \"bg-surface-100 dark:bg-surface-800\"\n )}>\n {/* Field selector with colored badge */}\n <Select\n value={rule.field}\n onValueChange={(value) => {\n const newDataType = getFieldDataType(value, collectionProperties);\n const newApplicableOps = getOperatorsForDataType(newDataType);\n // Reset operator if current one isn't applicable\n const newOperator = newApplicableOps.find(op => op.id === rule.operator)\n ? rule.operator\n : newApplicableOps[0]?.id ?? \"==\";\n // Reset value when changing field\n onRuleChange({ ...rule, field: value, operator: newOperator as OperatorId, value: \"\" });\n }}\n disabled={disabled}\n size=\"small\"\n inputClassName=\"min-w-[180px]\"\n renderValue={(value) => (\n <div className=\"flex items-center gap-2\">\n <div\n className=\"w-2 h-2 rounded-full shrink-0\"\n style={{ backgroundColor: getFieldColor(value) }}\n />\n <span className=\"truncate\">{value}</span>\n </div>\n )}\n placeholder=\"Select field\">\n {/* Context fields */}\n {CONTEXT_FIELDS.map(field => (\n <SelectItem key={field.id} value={field.id}>\n <div className=\"flex items-center gap-2\">\n <div\n className=\"w-3 h-3 rounded-full shrink-0\"\n style={{ backgroundColor: field.color }}\n />\n <span>{field.label}</span>\n <Chip size=\"small\" colorScheme=\"grayLight\" className=\"ml-auto\">\n {field.dataType}\n </Chip>\n </div>\n </SelectItem>\n ))}\n\n {/* Separator */}\n {availableFields.length > 0 && (\n <SelectItem value=\"_divider\" disabled>\n <span className=\"text-xs text-surface-500\">─ Entity Fields ─</span>\n </SelectItem>\n )}\n\n {/* Property fields */}\n {availableFields.map(field => {\n const color = getFieldColor(field);\n const dataType = getFieldDataType(field, collectionProperties);\n const prop = getPropertyAtPath(field, collectionProperties);\n const hasEnum = !!getEnumValues(prop);\n return (\n <SelectItem key={field} value={field}>\n <div className=\"flex items-center gap-2\">\n <div\n className=\"w-3 h-3 rounded-full shrink-0\"\n style={{ backgroundColor: color }}\n />\n <span>{field}</span>\n <Chip size=\"small\" colorScheme=\"grayLight\" className=\"ml-auto\">\n {hasEnum ? \"enum\" : dataType}\n </Chip>\n </div>\n </SelectItem>\n );\n })}\n </Select>\n\n {/* Operator - filtered by field type */}\n <Select\n value={rule.operator}\n onValueChange={(value) => onRuleChange({ ...rule, operator: value as OperatorId })}\n disabled={disabled}\n size=\"small\"\n inputClassName=\"min-w-[120px]\">\n {applicableOperators.map(op => (\n <SelectItem key={op.id} value={op.id}>\n {op.label}\n </SelectItem>\n ))}\n </Select>\n\n {/* Dynamic Value input */}\n {showValueField && (\n <ConditionValueInput\n value={rule.value}\n onChange={(newValue) => onRuleChange({ ...rule, value: newValue })}\n dataType={fieldDataType}\n enumValues={enumValues}\n disabled={disabled}\n operator={rule.operator}\n />\n )}\n\n {/* Remove button */}\n {showRemoveButton && (\n <IconButton onClick={onRemove} disabled={disabled} size=\"small\" variant=\"ghost\">\n <DeleteIcon size=\"smallest\" />\n </IconButton>\n )}\n </div>\n );\n}\n\n/**\n * A condition group row with AND/OR logic selector and multiple rules\n */\nfunction ConditionGroupRow({\n conditionType,\n group,\n onGroupChange,\n onRemove,\n disabled,\n availableFields,\n collectionProperties,\n showErrors\n}: ConditionGroupRowProps) {\n const handleLogicChange = (logic: LogicOperator) => {\n onGroupChange({ ...group, logic });\n };\n\n const handleRuleChange = (index: number, rule: SimpleRule) => {\n const newRules = [...group.rules];\n newRules[index] = rule;\n onGroupChange({ ...group, rules: newRules });\n };\n\n const handleRemoveRule = (index: number) => {\n const newRules = group.rules.filter((_, i) => i !== index);\n if (newRules.length === 0) {\n onRemove();\n } else {\n onGroupChange({ ...group, rules: newRules });\n }\n };\n\n const handleAddRule = () => {\n const defaultRule: SimpleRule = {\n field: availableFields[0] ?? \"isNew\",\n operator: \"==\",\n value: \"\"\n };\n onGroupChange({ ...group, rules: [...group.rules, defaultRule] });\n };\n\n return (\n <div className={cls(\"p-3 bg-surface-50 dark:bg-surface-900 rounded-lg border\", defaultBorderMixin)}>\n <div className=\"flex items-center justify-between mb-3\">\n <div className=\"flex items-center gap-2\">\n <Typography variant=\"label\" className=\"font-medium text-primary\">\n {CONDITION_TYPES.find(ct => ct.id === conditionType)?.label} when\n </Typography>\n {group.rules.length > 1 && (\n <Select\n value={group.logic}\n onValueChange={(value) => handleLogicChange(value as LogicOperator)}\n disabled={disabled}\n size=\"small\"\n inputClassName=\"min-w-[100px]\">\n <SelectItem value=\"and\">All of these</SelectItem>\n <SelectItem value=\"or\">Any of these</SelectItem>\n </Select>\n )}\n </div>\n <IconButton onClick={onRemove} disabled={disabled} size=\"small\" variant=\"ghost\">\n <DeleteIcon size=\"smallest\" />\n </IconButton>\n </div>\n\n <div className=\"flex flex-col gap-2\">\n {group.rules.map((rule, index) => (\n <React.Fragment key={index}>\n {index > 0 && (\n <Typography variant=\"caption\" className=\"text-center text-secondary font-medium uppercase\">\n {group.logic === \"and\" ? \"AND\" : \"OR\"}\n </Typography>\n )}\n <ConditionRow\n rule={rule}\n onRuleChange={(newRule: SimpleRule) => handleRuleChange(index, newRule)}\n onRemove={() => handleRemoveRule(index)}\n disabled={disabled}\n availableFields={availableFields}\n collectionProperties={collectionProperties}\n showErrors={showErrors}\n showRemoveButton={group.rules.length > 1}\n />\n </React.Fragment>\n ))}\n </div>\n\n <button\n onClick={handleAddRule}\n disabled={disabled}\n type=\"button\"\n className={cls(\n \"mt-3 w-full py-2 px-3 rounded-md text-sm\",\n \"border border-dashed text-secondary\",\n \"hover:bg-surface-100 dark:hover:bg-surface-800\",\n \"transition-colors\",\n defaultBorderMixin\n )}\n >\n + Add condition\n </button>\n </div>\n );\n}\n\n/**\n * Convert a simple rule to JSON-Logic format\n */\nfunction simpleRuleToJsonLogic(rule: SimpleRule): Record<string, any> {\n // Guard against empty field or operator which creates invalid Firestore keys\n if (!rule.field || !rule.operator) {\n // Return a valid default rule instead of creating invalid data\n return { \"!!\": { var: \"values._placeholder\" } };\n }\n\n const varRef = { var: `values.${rule.field}` };\n\n // Handle special fields that don't need the \"values.\" prefix\n const fieldVar = rule.field.startsWith(\"user.\") || rule.field === \"isNew\" || rule.field === \"entityId\"\n ? { var: rule.field }\n : varRef;\n\n if (rule.operator === \"!!\") {\n return { \"!!\": fieldVar };\n }\n if (rule.operator === \"!\") {\n return { \"!\": fieldVar };\n }\n if (rule.operator === \"isPast\") {\n return { \"isPast\": fieldVar };\n }\n if (rule.operator === \"isFuture\") {\n return { \"isFuture\": fieldVar };\n }\n\n // Parse value - try to convert to appropriate type\n let parsedValue: any = rule.value;\n if (rule.value === \"true\") parsedValue = true;\n else if (rule.value === \"false\") parsedValue = false;\n else if (rule.value === \"null\") parsedValue = null;\n else if (!isNaN(Number(rule.value)) && rule.value !== \"\") parsedValue = Number(rule.value);\n\n // Handle array values for \"in\" and \"!in\" operators\n if ((rule.operator === \"in\" || rule.operator === \"!in\") && typeof parsedValue === \"string\") {\n parsedValue = parsedValue.split(\",\").map(s => s.trim());\n }\n\n // Handle \"!in\" (not contains) - wrap \"in\" with negation\n if (rule.operator === \"!in\") {\n return { \"!\": { \"in\": [fieldVar, parsedValue] } };\n }\n\n return { [rule.operator]: [fieldVar, parsedValue] };\n}\n\n/**\n * Try to parse JSON-Logic back to a simple rule\n */\nfunction jsonLogicToSimpleRule(jsonLogic: Record<string, any>): SimpleRule | null {\n try {\n const operator = Object.keys(jsonLogic)[0] as OperatorId;\n const args = jsonLogic[operator];\n\n // Handle \"!\" operator - could be negation of a value or negation of \"in\" (not contains)\n if (operator === \"!\") {\n // Check if it's a negated \"in\" operation: {\"!\": {\"in\": [...]}}\n if (typeof args === \"object\" && args !== null && \"in\" in args) {\n const inArgs = args.in;\n if (Array.isArray(inArgs) && inArgs.length === 2) {\n const [left, right] = inArgs;\n if (left?.var) {\n const field = left.var.replace(/^values\\./, \"\");\n const value = Array.isArray(right)\n ? right.join(\", \")\n : String(right ?? \"\");\n return { field, operator: \"!in\", value };\n }\n }\n }\n // Otherwise it's a simple negation (is falsy)\n if (args?.var) {\n const field = args.var.replace(/^values\\./, \"\");\n return { field, operator: \"!\", value: \"\" };\n }\n }\n\n if (operator === \"!!\") {\n const varObj = args;\n if (varObj?.var) {\n const field = varObj.var.replace(/^values\\./, \"\");\n return { field, operator, value: \"\" };\n }\n }\n\n // Handle isPast and isFuture operators\n if (operator === \"isPast\" || operator === \"isFuture\") {\n const varObj = args;\n if (varObj?.var) {\n const field = varObj.var.replace(/^values\\./, \"\");\n return { field, operator, value: \"\" };\n }\n }\n\n if (Array.isArray(args) && args.length === 2) {\n const [left, right] = args;\n if (left?.var) {\n const field = left.var.replace(/^values\\./, \"\");\n const value = Array.isArray(right)\n ? right.join(\", \")\n : String(right ?? \"\");\n return { field, operator, value };\n }\n }\n } catch {\n // Fall through\n }\n return null;\n}\n\n/**\n * Convert a condition group to JSON-Logic format\n */\nfunction groupToJsonLogic(group: ConditionGroup): Record<string, any> {\n const ruleLogics = group.rules\n .filter(rule => rule.field && rule.operator) // Filter out incomplete rules\n .map(rule => simpleRuleToJsonLogic(rule));\n\n const groupLogics = (group.groups || [])\n .map(g => groupToJsonLogic(g));\n\n const allLogics = [...ruleLogics, ...groupLogics];\n\n // If only one condition, don't wrap in and/or\n if (allLogics.length === 1) {\n return allLogics[0];\n }\n\n // If no conditions, return a default true condition\n if (allLogics.length === 0) {\n return { \"!!\": { var: \"values._placeholder\" } };\n }\n\n return { [group.logic]: allLogics };\n}\n\n/**\n * Try to parse JSON-Logic back to a condition group\n */\nfunction jsonLogicToGroup(jsonLogic: Record<string, any>): ConditionGroup | null {\n try {\n const operator = Object.keys(jsonLogic)[0];\n\n // Check if it's an AND or OR group\n if (operator === \"and\" || operator === \"or\") {\n const args = jsonLogic[operator];\n if (Array.isArray(args)) {\n const rules: SimpleRule[] = [];\n const groups: ConditionGroup[] = [];\n\n for (const arg of args) {\n // Check if this is a nested group\n const nestedOperator = Object.keys(arg)[0];\n if (nestedOperator === \"and\" || nestedOperator === \"or\") {\n const nestedGroup = jsonLogicToGroup(arg);\n if (nestedGroup) {\n groups.push(nestedGroup);\n }\n } else {\n // It's a simple rule\n const rule = jsonLogicToSimpleRule(arg);\n if (rule) {\n rules.push(rule);\n }\n }\n }\n\n return {\n logic: operator,\n rules,\n groups: groups.length > 0 ? groups : undefined\n };\n }\n }\n\n // It's a single rule - wrap in an AND group\n const rule = jsonLogicToSimpleRule(jsonLogic);\n if (rule) {\n return {\n logic: \"and\",\n rules: [rule]\n };\n }\n } catch {\n // Fall through\n }\n return null;\n}\n\nexport interface ConditionsEditorProps {\n disabled: boolean;\n /**\n * Optional collection properties for populating the field selector.\n * If not provided, a basic set of common fields is used.\n */\n collectionProperties?: Properties;\n}\n\nexport function ConditionsEditor({ disabled, collectionProperties }: ConditionsEditorProps) {\n const { values, setFieldValue, submitCount } = useFormex<PropertyWithId>();\n\n // Get property paths from collection properties (includes nested maps)\n const availableFields: string[] = collectionProperties\n ? getPropertyPaths(collectionProperties)\n : [];\n\n // Get current conditions from form values\n const conditions = (values as any).conditions ?? {};\n\n // DEBUG: Log conditions to see what's being loaded\n console.log(\"[ConditionsEditor] Loaded conditions:\", conditions);\n\n const activeConditions: { type: ConditionType; group: ConditionGroup }[] = [];\n\n for (const type of CONDITION_TYPES) {\n const jsonLogic = conditions[type.id as keyof typeof conditions];\n if (jsonLogic) {\n console.log(`[ConditionsEditor] Parsing ${type.id}:`, jsonLogic);\n const group = jsonLogicToGroup(jsonLogic as Record<string, any>);\n console.log(`[ConditionsEditor] Parsed group:`, group);\n if (group) {\n activeConditions.push({ type: type.id, group });\n }\n }\n }\n\n const handleAddCondition = (conditionType: ConditionType) => {\n const defaultRule: SimpleRule = {\n field: availableFields[0] ?? \"isNew\",\n operator: \"==\",\n value: \"\"\n };\n\n const defaultGroup: ConditionGroup = {\n logic: \"and\",\n rules: [defaultRule]\n };\n\n const jsonLogic = groupToJsonLogic(defaultGroup);\n setFieldValue(`conditions.${conditionType}`, jsonLogic);\n };\n\n const handleGroupChange = (type: ConditionType, group: ConditionGroup) => {\n const jsonLogic = groupToJsonLogic(group);\n setFieldValue(`conditions.${type}`, jsonLogic);\n };\n\n const handleRemoveCondition = (type: ConditionType) => {\n const newConditions = { ...conditions };\n delete (newConditions as any)[type];\n if (Object.keys(newConditions).length === 0) {\n setFieldValue(\"conditions\", undefined);\n } else {\n setFieldValue(\"conditions\", newConditions);\n }\n };\n\n // Condition types that aren't already used\n const availableConditionTypes = CONDITION_TYPES.filter(\n ct => !conditions[ct.id as keyof typeof conditions]\n );\n\n return (\n <div className=\"flex flex-col gap-4\">\n <Typography variant=\"caption\" color=\"secondary\">\n Add conditions to dynamically control this field based on other field values or user context.\n </Typography>\n\n {/* Active conditions */}\n {activeConditions.length > 0 && (\n <div className=\"flex flex-col gap-3\">\n {activeConditions.map(({ type, group }) => (\n <ConditionGroupRow\n key={type}\n conditionType={type}\n group={group}\n onGroupChange={(newGroup) => handleGroupChange(type, newGroup)}\n onRemove={() => handleRemoveCondition(type)}\n disabled={disabled}\n availableFields={availableFields}\n collectionProperties={collectionProperties}\n showErrors={submitCount > 0}\n />\n ))}\n </div>\n )}\n\n {/* Add new condition - click to add directly */}\n {availableConditionTypes.length > 0 && (\n <Select\n value=\"\"\n onValueChange={(value) => handleAddCondition(value as ConditionType)}\n disabled={disabled}\n size=\"small\"\n placeholder=\"+ Add condition...\"\n className=\"w-full max-w-xs\">\n {availableConditionTypes.map(ct => (\n <SelectItem key={ct.id} value={ct.id}>\n <div className=\"flex flex-col\">\n <span className=\"font-medium\">{ct.label}</span>\n <span className=\"text-xs text-surface-500\">{ct.description}</span>\n </div>\n </SelectItem>\n ))}\n </Select>\n )}\n\n {activeConditions.length === 0 && availableConditionTypes.length === 0 && (\n <Typography variant=\"caption\" color=\"disabled\" className=\"text-center py-4\">\n All condition types are configured.\n </Typography>\n )}\n </div>\n );\n}\n","import React from \"react\";\nimport { useFormex } from \"@firecms/formex\";\nimport {\n DeleteIcon,\n IconButton,\n Select,\n SelectItem,\n Typography,\n MultiSelect,\n MultiSelectItem,\n cls,\n defaultBorderMixin,\n DebouncedTextField,\n BooleanSwitchWithLabel\n} from \"@firecms/ui\";\nimport {\n Properties,\n Property,\n PropertyOrBuilder,\n getFieldConfig,\n DEFAULT_FIELD_CONFIGS,\n EnumValueConfig,\n isPropertyBuilder\n} from \"@firecms/core\";\nimport { PropertyWithId } from \"../../PropertyEditView\";\nimport { getPropertyPaths } from \"./property_paths\";\n\n/**\n * Enum condition types - maps to PropertyConditions structure:\n * - \"filter\" → conditions.allowedEnumValues (JSON Logic returning allowed IDs)\n * - \"exclude\" → conditions.excludedEnumValues (JSON Logic returning excluded IDs)\n */\nconst ENUM_CONDITION_TYPES = [\n { id: \"allowedEnumValues\", label: \"Filter Options\", description: \"Only show selected enum values when condition is true\" },\n { id: \"excludedEnumValues\", label: \"Exclude Options\", description: \"Hide selected enum values when condition is true\" }\n] as const;\n\ntype EnumConditionType = typeof ENUM_CONDITION_TYPES[number][\"id\"];\n\n/**\n * Operators for conditions\n */\nconst OPERATORS = [\n { id: \"==\", label: \"equals\", valueType: \"any\" },\n { id: \"!=\", label: \"not equals\", valueType: \"any\" },\n { id: \"in\", label: \"contains\", valueType: \"array\" },\n { id: \"!!\", label: \"has a value\", valueType: \"none\" },\n { id: \"!\", label: \"is empty\", valueType: \"none\" }\n] as const;\n\ntype OperatorId = typeof OPERATORS[number][\"id\"];\n\n// Context fields\nconst CONTEXT_FIELDS = [\n { id: \"isNew\", label: \"Is New Entity\", dataType: \"boolean\", color: \"#9c27b0\" },\n { id: \"entityId\", label: \"Entity ID\", dataType: \"string\", color: \"#2196f3\" },\n { id: \"user.roles\", label: \"User Roles\", dataType: \"array\", color: \"#ff9800\" }\n] as const;\n\ninterface EnumConditionConfig {\n field: string;\n operator: OperatorId;\n value: string;\n selectedEnumIds: string[];\n}\n\n/**\n * Get the property at a given path.\n * Returns undefined if the path contains a PropertyBuilder (callback).\n */\nfunction getPropertyAtPath(\n fieldPath: string,\n collectionProperties?: Properties\n): Property | undefined {\n if (!collectionProperties) return undefined;\n\n const parts = fieldPath.split(\".\");\n let current: Properties | undefined = collectionProperties;\n let property: Property | undefined;\n\n for (const part of parts) {\n if (!current) return undefined;\n const propertyOrBuilder = current[part] as PropertyOrBuilder | undefined;\n if (!propertyOrBuilder) return undefined;\n\n if (isPropertyBuilder(propertyOrBuilder)) return undefined;\n\n property = propertyOrBuilder as Property;\n\n if (property.dataType === \"map\" && property.properties) {\n current = property.properties as Properties;\n } else {\n current = undefined;\n }\n }\n\n return property;\n}\n\n/**\n * Get enum values from the current property being edited\n */\nfunction getCurrentPropertyEnumValues(values: PropertyWithId): EnumValueConfig[] {\n if (values.dataType === \"string\" && values.enumValues) {\n if (Array.isArray(values.enumValues)) {\n return values.enumValues;\n }\n return Object.entries(values.enumValues).map(([id, label]) => ({\n id,\n label: typeof label === \"string\" ? label : (label as EnumValueConfig).label\n }));\n }\n return [];\n}\n\n/**\n * Get color for a field\n */\nfunction getFieldColor(fieldPath: string, collectionProperties?: Properties): string {\n const contextField = CONTEXT_FIELDS.find(f => f.id === fieldPath);\n if (contextField) return contextField.color;\n\n if (!collectionProperties) return \"#888\";\n\n const prop = getPropertyAtPath(fieldPath, collectionProperties);\n if (!prop) return \"#888\";\n const config = getFieldConfig(prop, DEFAULT_FIELD_CONFIGS);\n return config?.color ?? \"#888\";\n}\n\n/**\n * Get enum values from a property (for the selected condition field)\n */\nfunction getFieldEnumValues(property: Property | undefined): EnumValueConfig[] {\n if (!property) return [];\n if (property.dataType === \"string\" && property.enumValues) {\n if (Array.isArray(property.enumValues)) {\n return property.enumValues;\n }\n return Object.entries(property.enumValues).map(([id, label]) => ({\n id,\n label: typeof label === \"string\" ? label : (label as EnumValueConfig).label\n }));\n }\n return [];\n}\n\n/**\n * Convert an array to an object with numeric keys for Firestore storage.\n * Firestore doesn't allow nested arrays, so we store as {\"0\": \"a\", \"1\": \"b\"}\n * The runtime will convert back via objectToArray().\n */\nfunction arrayToObject(arr: string[]): Record<string, string> {\n const result: Record<string, string> = {};\n arr.forEach((v, i) => {\n result[String(i)] = v;\n });\n return result;\n}\n\n/**\n * Build JSON Logic rule: { \"if\": [ condition, thenValue, elseValue ] }\n * When condition is true, return the selected enum IDs.\n * When false, return all enum IDs or empty (depending on type).\n * \n * IMPORTANT: We store arrays as objects with numeric keys to avoid\n * Firestore's \"Nested arrays are not supported\" error.\n */\nfunction buildEnumFilterRule(\n config: EnumConditionConfig,\n conditionType: EnumConditionType,\n allEnumIds: string[]\n): Record<string, unknown> {\n // Guard against empty field or operator which creates invalid Firestore keys\n if (!config.field || !config.operator) {\n // Return a valid default rule\n return {\n \"if\": [\n { \"!!\": { var: \"values._placeholder\" } },\n {},\n arrayToObject(allEnumIds)\n ]\n };\n }\n\n const fieldVar = config.field.startsWith(\"user.\") || config.field === \"isNew\" || config.field === \"entityId\"\n ? { var: config.field }\n : { var: `values.${config.field}` };\n\n // Build the condition\n let condition: Record<string, unknown>;\n if (config.operator === \"!!\") {\n condition = { \"!!\": fieldVar };\n } else if (config.operator === \"!\") {\n condition = { \"!\": fieldVar };\n } else {\n let parsedValue: unknown = config.value;\n if (config.value === \"true\") parsedValue = true;\n else if (config.value === \"false\") parsedValue = false;\n else if (!isNaN(Number(config.value)) && config.value !== \"\") parsedValue = Number(config.value);\n\n if (config.operator === \"in\" && typeof parsedValue === \"string\") {\n parsedValue = parsedValue.split(\",\").map(s => s.trim());\n }\n\n condition = { [config.operator]: [fieldVar, parsedValue] };\n }\n\n // For allowedEnumValues: when condition true, show selected; when false, show all\n // For excludedEnumValues: when condition true, exclude selected; when false, exclude nothing\n // Convert arrays to objects to avoid Firestore nested array error\n if (conditionType === \"allowedEnumValues\") {\n return {\n \"if\": [\n condition,\n arrayToObject(config.selectedEnumIds), // When true: only these\n arrayToObject(allEnumIds) // When false: all\n ]\n };\n } else {\n // excludedEnumValues\n return {\n \"if\": [\n condition,\n arrayToObject(config.selectedEnumIds), // When true: exclude these\n {} // When false: exclude nothing\n ]\n };\n }\n}\n\n/**\n * Convert an object with numeric keys (Firestore serialization) back to an array.\n * {\"0\": \"a\", \"1\": \"b\"} -> [\"a\", \"b\"]\n */\nfunction objectToArray(obj: unknown): string[] {\n if (Array.isArray(obj)) return obj.map(String);\n if (obj && typeof obj === \"object\") {\n const keys = Object.keys(obj);\n // Check if all keys are numeric\n if (keys.length > 0 && keys.every(k => !isNaN(Number(k)))) {\n return keys\n .sort((a, b) => Number(a) - Number(b))\n .map(k => String((obj as Record<string, unknown>)[k]));\n }\n }\n return [];\n}\n\n/**\n * Parse JSON Logic back to EnumConditionConfig\n */\nfunction parseEnumFilterRule(rule: Record<string, unknown>): EnumConditionConfig | null {\n try {\n // Expected: { \"if\": [ condition, selectedIds, fallbackIds ] }\n const ifRule = rule[\"if\"];\n if (!Array.isArray(ifRule) || ifRule.length < 2) return null;\n\n const [condition, selectedEnumIdsRaw] = ifRule;\n\n // Handle both array format and Firestore's object-with-numeric-keys format\n const selectedEnumIds = objectToArray(selectedEnumIdsRaw);\n if (selectedEnumIds.length === 0 && selectedEnumIdsRaw) {\n // If it was truthy but we got no values, parsing failed\n console.log(\"[EnumConditionsEditor] Warning: Could not parse selectedEnumIds:\", selectedEnumIdsRaw);\n }\n\n // Parse the condition\n const conditionObj = condition as Record<string, unknown>;\n const operator = Object.keys(conditionObj)[0] as OperatorId;\n const args = conditionObj[operator] as unknown;\n\n let field = \"\";\n let value = \"\";\n\n if (operator === \"!!\" || operator === \"!\") {\n const varObj = args as Record<string, string> | null;\n if (varObj?.var) {\n field = varObj.var.replace(/^values\\./, \"\");\n }\n } else if (Array.isArray(args) && args.length === 2) {\n const [left, right] = args as [Record<string, string>, unknown];\n if (left?.var) {\n field = left.var.replace(/^values\\./, \"\");\n value = Array.isArray(right) ? right.join(\", \") : String(right ?? \"\");\n }\n }\n\n return {\n field,\n operator,\n value,\n selectedEnumIds\n };\n } catch (e) {\n console.error(\"[EnumConditionsEditor] Error parsing rule:\", e);\n return null;\n }\n}\n\ninterface EnumConditionRowProps {\n conditionType: EnumConditionType;\n config: EnumConditionConfig;\n onConfigChange: (config: EnumConditionConfig) => void;\n onRemove: () => void;\n disabled: boolean;\n availableFields: string[];\n collectionProperties?: Properties;\n propertyEnumValues: EnumValueConfig[];\n showErrors: boolean;\n}\n\nfunction EnumConditionRow({\n conditionType,\n config,\n onConfigChange,\n onRemove,\n disabled,\n availableFields,\n collectionProperties,\n propertyEnumValues,\n showErrors\n}: EnumConditionRowProps) {\n const operator = OPERATORS.find(op => op.id === config.operator);\n const showValueField = operator?.valueType !== \"none\";\n\n // Get the property for the selected field\n const selectedFieldProperty = getPropertyAtPath(config.field, collectionProperties);\n const isBoolean = config.field === \"isNew\" || selectedFieldProperty?.dataType === \"boolean\";\n\n // Check if the selected field has enum values\n const fieldEnumValues = getFieldEnumValues(selectedFieldProperty);\n\n // Validation: check for incomplete condition (only show after submission attempt)\n const isFieldMissing = !config.field;\n const isValueMissing = showValueField && !config.value && config.value !== \"0\";\n const isEnumSelectionMissing = config.selectedEnumIds.length === 0;\n const hasError = showErrors && (isFieldMissing || isValueMissing || isEnumSelectionMissing);\n\n return (\n <div className={cls(\n \"p-3 bg-surface-50 dark:bg-surface-900 rounded-lg border\",\n hasError ? \"border-red-300 dark:border-red-700\" : defaultBorderMixin\n )}>\n {/* Title line */}\n <div className=\"flex items-center justify-between mb-2\">\n <Typography variant=\"label\" className=\"font-medium text-primary\">\n {ENUM_CONDITION_TYPES.find(ct => ct.id === conditionType)?.label} when\n </Typography>\n <IconButton\n onClick={onRemove}\n disabled={disabled}\n size=\"small\"\n variant=\"ghost\">\n <DeleteIcon size=\"smallest\" />\n </IconButton>\n </div>\n\n {/* Condition row: Field, Operator, Value */}\n <div className=\"flex items-center gap-2 mb-3\">\n {/* Field selector */}\n <Select\n value={config.field}\n onValueChange={(value) => onConfigChange({ ...config, field: value, value: \"\" })}\n disabled={disabled}\n size=\"small\"\n inputClassName=\"min-w-[140px]\"\n placeholder=\"Field\">\n {CONTEXT_FIELDS.map(field => (\n <SelectItem key={field.id} value={field.id}>\n <div className=\"flex items-center gap-2\">\n <div\n className=\"w-2 h-2 rounded-full\"\n style={{ backgroundColor: field.color }}\n />\n <span>{field.label}</span>\n </div>\n </SelectItem>\n ))}\n {availableFields.length > 0 && (\n <SelectItem value=\"_divider\" disabled>\n <span className=\"text-xs text-surface-500\">─ Fields ─</span>\n </SelectItem>\n )}\n {availableFields.map(field => (\n <SelectItem key={field} value={field}>\n <div className=\"flex items-center gap-2\">\n <div\n className=\"w-2 h-2 rounded-full\"\n style={{ backgroundColor: getFieldColor(field, collectionProperties) }}\n />\n <span>{field}</span>\n </div>\n </SelectItem>\n ))}\n </Select>\n\n {/* Operator */}\n <Select\n value={config.operator}\n onValueChange={(value) => onConfigChange({ ...config, operator: value as OperatorId })}\n disabled={disabled}\n size=\"small\"\n inputClassName=\"min-w-[100px]\">\n {OPERATORS.map(op => (\n <SelectItem key={op.id} value={op.id}>{op.label}</SelectItem>\n ))}\n </Select>\n\n {/* Value - dynamic based on field type */}\n {showValueField && (\n isBoolean ? (\n <BooleanSwitchWithLabel\n value={config.value === \"true\"}\n size=\"small\"\n position=\"start\"\n disabled={disabled}\n onValueChange={(v) => onConfigChange({ ...config, value: v ? \"true\" : \"false\" })}\n />\n ) : fieldEnumValues.length > 0 ? (\n // Show Select for enum fields\n <Select\n value={config.value}\n onValueChange={(value) => onConfigChange({ ...config, value })}\n disabled={disabled}\n size=\"small\"\n placeholder=\"Select value...\"\n className=\"min-w-[120px]\">\n {fieldEnumValues.map(ev => (\n <SelectItem key={String(ev.id)} value={String(ev.id)}>\n {ev.label}\n </SelectItem>\n ))}\n </Select>\n ) : (\n <DebouncedTextField\n value={config.value}\n onChange={(e) => onConfigChange({ ...config, value: e.target.value })}\n disabled={disabled}\n size=\"small\"\n placeholder=\"Value\"\n className=\"flex-1 min-w-[80px]\"\n />\n )\n )}\n </div>\n\n {/* Enum selection */}\n <div>\n <Typography variant=\"caption\" color=\"secondary\" className=\"block mb-2\">\n {conditionType === \"allowedEnumValues\" ? \"Show only:\" : \"Hide:\"}\n </Typography>\n <MultiSelect\n value={config.selectedEnumIds}\n onValueChange={(values) => onConfigChange({ ...config, selectedEnumIds: values })}\n disabled={disabled}\n size=\"small\"\n placeholder=\"Select values...\"\n useChips={true}>\n {propertyEnumValues.map(ev => (\n <MultiSelectItem key={String(ev.id)} value={String(ev.id)}>\n {ev.label}\n </MultiSelectItem>\n ))}\n </MultiSelect>\n </div>\n\n {/* Validation error message */}\n {hasError && (\n <Typography variant=\"caption\" className=\"mt-2 text-red-500 dark:text-red-400\">\n {isFieldMissing\n ? \"Please select a field for this condition\"\n : isValueMissing\n ? \"Please enter a value for this condition\"\n : \"Please select at least one value to filter\"\n }\n </Typography>\n )}\n </div>\n );\n}\n\nexport interface EnumConditionsEditorProps {\n disabled: boolean;\n collectionProperties?: Properties;\n}\n\nexport function EnumConditionsEditor({ disabled, collectionProperties }: EnumConditionsEditorProps) {\n const { values, setFieldValue, submitCount } = useFormex<PropertyWithId>();\n\n const availableFields: string[] = collectionProperties\n ? getPropertyPaths(collectionProperties)\n : [];\n\n const propertyEnumValues = getCurrentPropertyEnumValues(values);\n\n // Only show for enum properties\n if (propertyEnumValues.length === 0) {\n return null;\n }\n\n const allEnumIds = propertyEnumValues.map(ev => String(ev.id));\n\n // Get conditions from the correct path: values.conditions\n const conditions = (values as PropertyWithId & { conditions?: Record<string, unknown> }).conditions ?? {};\n\n // Parse existing enum conditions\n const activeConditions: { type: EnumConditionType; config: EnumConditionConfig }[] = [];\n\n for (const type of ENUM_CONDITION_TYPES) {\n const rule = conditions[type.id] as Record<string, unknown> | undefined;\n if (rule) {\n const config = parseEnumFilterRule(rule);\n if (config) {\n activeConditions.push({ type: type.id, config });\n }\n }\n }\n\n const handleAddCondition = (conditionType: EnumConditionType) => {\n const defaultConfig: EnumConditionConfig = {\n field: availableFields[0] ?? \"isNew\",\n operator: \"==\",\n value: \"\",\n selectedEnumIds: []\n };\n\n const rule = buildEnumFilterRule(defaultConfig, conditionType, allEnumIds);\n setFieldValue(`conditions.${conditionType}`, rule);\n };\n\n const handleConfigChange = (type: EnumConditionType, config: EnumConditionConfig) => {\n const rule = buildEnumFilterRule(config, type, allEnumIds);\n setFieldValue(`conditions.${type}`, rule);\n };\n\n const handleRemoveCondition = (type: EnumConditionType) => {\n const newConditions = { ...conditions };\n delete newConditions[type];\n if (Object.keys(newConditions).length === 0) {\n setFieldValue(\"conditions\", undefined);\n } else {\n setFieldValue(\"conditions\", newConditions);\n }\n };\n\n const availableConditionTypes = ENUM_CONDITION_TYPES.filter(\n ct => !conditions[ct.id]\n );\n\n return (\n <div className={cls(\"flex flex-col gap-4 mt-4 pt-4 border-t\", defaultBorderMixin)}>\n <Typography variant=\"label\" className=\"font-medium\">\n Enum Value Conditions\n </Typography>\n <Typography variant=\"caption\" color=\"secondary\">\n Dynamically filter which options are available.\n </Typography>\n\n {activeConditions.length > 0 && (\n <div className=\"flex flex-col gap-3\">\n {activeConditions.map(({ type, config }) => (\n <EnumConditionRow\n key={type}\n conditionType={type}\n config={config}\n onConfigChange={(newConfig) => handleConfigChange(type, newConfig)}\n onRemove={() => handleRemoveCondition(type)}\n disabled={disabled}\n availableFields={availableFields}\n collectionProperties={collectionProperties}\n propertyEnumValues={propertyEnumValues}\n showErrors={submitCount > 0}\n />\n ))}\n </div>\n )}\n\n {availableConditionTypes.length > 0 && (\n <Select\n value=\"\"\n onValueChange={(value) => handleAddCondition(value as EnumConditionType)}\n disabled={disabled}\n size=\"small\"\n placeholder=\"+ Add enum condition...\"\n className=\"w-full max-w-xs\">\n {availableConditionTypes.map(ct => (\n <SelectItem key={ct.id} value={ct.id}>\n <div className=\"flex flex-col\">\n <span className=\"font-medium\">{ct.label}</span>\n <span className=\"text-xs text-surface-500\">{ct.description}</span>\n </div>\n </SelectItem>\n ))}\n </Select>\n )}\n </div>\n );\n}\n","import React from \"react\";\nimport { ValidationPanel } from \"./validation/ValidationPanel\";\nimport { GeneralPropertyValidation } from \"./validation/GeneralPropertyValidation\";\n\nexport function KeyValuePropertyField({ disabled }: {\n disabled: boolean;\n}) {\n\n return (\n <>\n <div className={\"col-span-12\"}>\n\n <ValidationPanel>\n <GeneralPropertyValidation disabled={disabled}/>\n </ValidationPanel>\n\n </div>\n </>\n );\n}\n","import {\n ArrayProperty,\n BooleanProperty,\n DateProperty,\n MapProperty,\n mergeDeep,\n NumberProperty,\n Property,\n PropertyConfig,\n StringProperty\n} from \"@firecms/core\";\n\nexport function updatePropertyFromWidget(propertyData: any,\n selectedWidgetId: string | undefined,\n propertyConfigs: Record<string, PropertyConfig>): Property {\n\n let updatedProperty;\n if (selectedWidgetId === \"text_field\") {\n updatedProperty = mergeDeep(\n propertyData,\n {\n dataType: \"string\",\n propertyConfig: \"text_field\",\n editable: propertyData.editable !== undefined ? propertyData.editable : true,\n storage: undefined,\n multiline: undefined,\n markdown: undefined,\n email: undefined,\n url: undefined,\n enumValues: undefined,\n userSelect: undefined\n } satisfies StringProperty\n );\n } else if (selectedWidgetId === \"user_select\") {\n updatedProperty = mergeDeep(\n propertyData,\n {\n dataType: \"string\",\n propertyConfig: \"user_select\",\n editable: propertyData.editable !== undefined ? propertyData.editable : true,\n storage: undefined,\n multiline: undefined,\n markdown: undefined,\n email: undefined,\n url: undefined,\n enumValues: undefined,\n userSelect: true\n } satisfies StringProperty\n );\n } else if (selectedWidgetId === \"multiline\") {\n updatedProperty = mergeDeep(\n propertyData,\n {\n dataType: \"string\",\n propertyConfig: \"multiline\",\n editable: propertyData.editable !== undefined ? propertyData.editable : true,\n multiline: true,\n storage: undefined,\n markdown: undefined,\n email: undefined,\n url: undefined,\n enumValues: undefined,\n userSelect: undefined\n } satisfies StringProperty\n );\n } else if (selectedWidgetId === \"markdown\") {\n updatedProperty = mergeDeep(\n propertyData,\n {\n dataType: \"string\",\n propertyConfig: \"markdown\",\n editable: propertyData.editable !== undefined ? propertyData.editable : true,\n storage: undefined,\n multiline: undefined,\n markdown: true,\n email: undefined,\n url: undefined,\n userSelect: undefined\n } satisfies StringProperty\n );\n } else if (selectedWidgetId === \"url\") {\n updatedProperty = mergeDeep(\n propertyData,\n {\n dataType: \"string\",\n propertyConfig: \"url\",\n editable: propertyData.editable !== undefined ? propertyData.editable : true,\n storage: undefined,\n multiline: undefined,\n markdown: undefined,\n email: undefined,\n url: true,\n enumValues: undefined,\n userSelect: undefined\n } satisfies StringProperty\n );\n } else if (selectedWidgetId === \"email\") {\n updatedProperty = mergeDeep(\n propertyData,\n {\n dataType: \"string\",\n propertyConfig: \"email\",\n editable: propertyData.editable !== undefined ? propertyData.editable : true,\n storage: undefined,\n multiline: undefined,\n markdown: undefined,\n email: true,\n url: undefined,\n enumValues: undefined,\n userSelect: undefined\n } satisfies StringProperty\n );\n } else if (selectedWidgetId === \"select\") {\n updatedProperty = mergeDeep(\n propertyData,\n {\n dataType: \"string\",\n propertyConfig: \"select\",\n editable: propertyData.editable !== undefined ? propertyData.editable : true,\n storage: undefined,\n multiline: undefined,\n markdown: undefined,\n email: undefined,\n url: undefined,\n enumValues: propertyData.enumValues ?? [],\n userSelect: undefined\n } satisfies StringProperty\n );\n } else if (selectedWidgetId === \"multi_select\") {\n updatedProperty = mergeDeep(\n propertyData,\n {\n dataType: \"array\",\n propertyConfig: \"multi_select\",\n editable: propertyData.editable !== undefined ? propertyData.editable : true,\n of: {\n dataType: \"string\",\n enumValues: propertyData.of?.enumValues ?? []\n }\n } satisfies ArrayProperty\n );\n } else if (selectedWidgetId === \"number_input\") {\n updatedProperty = mergeDeep(\n propertyData,\n {\n dataType: \"number\",\n propertyConfig: \"number_input\",\n editable: propertyData.editable !== undefined ? propertyData.editable : true,\n enumValues: undefined\n } satisfies NumberProperty\n );\n } else if (selectedWidgetId === \"number_select\") {\n updatedProperty = mergeDeep(\n propertyData,\n {\n dataType: \"number\",\n propertyConfig: \"number_select\",\n editable: propertyData.editable !== undefined ? propertyData.editable : true,\n enumValues: propertyData.enumValues ?? []\n } satisfies NumberProperty\n );\n } else if (selectedWidgetId === \"multi_number_select\") {\n updatedProperty = mergeDeep(\n propertyData,\n {\n dataType: \"array\",\n propertyConfig: \"multi_number_select\",\n editable: propertyData.editable !== undefined ? propertyData.editable : true,\n of: {\n dataType: \"number\",\n enumValues: propertyData.of?.enumValues ?? []\n }\n } satisfies ArrayProperty\n );\n } else if (selectedWidgetId === \"file_upload\") {\n updatedProperty = mergeDeep(\n propertyData,\n {\n dataType: \"string\",\n propertyConfig: \"file_upload\",\n editable: propertyData.editable !== undefined ? propertyData.editable : true,\n storage: {\n storagePath: \"/\"\n }\n } satisfies StringProperty\n );\n } else if (selectedWidgetId === \"multi_file_upload\") {\n updatedProperty = mergeDeep(\n propertyData,\n {\n dataType: \"array\",\n propertyConfig: \"multi_file_upload\",\n editable: propertyData.editable !== undefined ? propertyData.editable : true,\n of: {\n dataType: \"string\",\n storage: propertyData.of?.storage ?? {\n storagePath: \"/\"\n }\n }\n } satisfies ArrayProperty\n );\n } else if (selectedWidgetId === \"group\") {\n updatedProperty = mergeDeep(\n propertyData,\n {\n dataType: \"map\",\n propertyConfig: \"group\",\n editable: propertyData.editable !== undefined ? propertyData.editable : true,\n keyValue: false,\n properties: propertyData.properties ?? {}\n } satisfies MapProperty\n );\n } else if (selectedWidgetId === \"key_value\") {\n updatedProperty = mergeDeep(\n propertyData,\n {\n dataType: \"map\",\n propertyConfig: \"key_value\",\n editable: propertyData.editable !== undefined ? propertyData.editable : true,\n keyValue: true,\n properties: undefined\n } satisfies MapProperty\n );\n } else if (selectedWidgetId === \"reference\") {\n updatedProperty = mergeDeep(\n propertyData,\n {\n dataType: \"reference\",\n propertyConfig: \"reference\",\n editable: propertyData.editable !== undefined ? propertyData.editable : true\n } satisfies Property\n );\n } else if (selectedWidgetId === \"reference_as_string\") {\n updatedProperty = mergeDeep(\n propertyData,\n {\n dataType: \"string\",\n propertyConfig: \"reference_as_string\",\n editable: propertyData.editable !== undefined ? propertyData.editable : true\n } satisfies Property\n );\n } else if (selectedWidgetId === \"multi_references\") {\n updatedProperty = mergeDeep(\n propertyData,\n {\n dataType: \"array\",\n propertyConfig: \"multi_references\",\n editable: propertyData.editable !== undefined ? propertyData.editable : true,\n of: {\n dataType: \"reference\"\n }\n } satisfies ArrayProperty\n );\n } else if (selectedWidgetId === \"switch\") {\n updatedProperty = mergeDeep(\n propertyData,\n {\n dataType: \"boolean\",\n propertyConfig: \"switch\",\n editable: propertyData.editable !== undefined ? propertyData.editable : true\n } satisfies BooleanProperty\n );\n } else if (selectedWidgetId === \"date_time\") {\n updatedProperty = mergeDeep(\n propertyData,\n {\n dataType: \"date\",\n propertyConfig: \"date_time\",\n editable: propertyData.editable !== undefined ? propertyData.editable : true,\n mode: \"date_time\"\n } satisfies DateProperty\n );\n } else if (selectedWidgetId === \"repeat\") {\n updatedProperty = mergeDeep(\n propertyData,\n {\n dataType: \"array\",\n propertyConfig: \"repeat\",\n editable: propertyData.editable !== undefined ? propertyData.editable : true\n } satisfies ArrayProperty\n );\n } else if (selectedWidgetId === \"block\") {\n updatedProperty = mergeDeep(\n propertyData,\n {\n dataType: \"array\",\n propertyConfig: \"block\",\n editable: propertyData.editable !== undefined ? propertyData.editable : true,\n oneOf: {\n properties: {}\n }\n } satisfies ArrayProperty\n );\n } else if (selectedWidgetId && propertyConfigs[selectedWidgetId]) {\n updatedProperty = {\n ...propertyConfigs[selectedWidgetId].property,\n propertyConfig: selectedWidgetId\n };\n }\n\n return updatedProperty;\n}\n","import React from \"react\";\nimport { StringPropertyValidation } from \"./validation/StringPropertyValidation\";\nimport { ValidationPanel } from \"./validation/ValidationPanel\";\nimport { getIn, useFormex } from \"@firecms/formex\";\n\nimport { Select, SelectItem, TextField } from \"@firecms/ui\";\n\nexport function UrlPropertyField({\n disabled,\n showErrors\n }: {\n disabled: boolean;\n showErrors: boolean;\n}) {\n\n const { values, setFieldValue } = useFormex();\n\n const urlValue = getIn(values, \"url\");\n\n return (\n <>\n <div className={\"col-span-12\"}>\n\n <Select\n disabled={disabled}\n position={\"item-aligned\"}\n fullWidth={true}\n onValueChange={(value: string) => {\n if (value === \"[NONE]\")\n setFieldValue(\"url\", true);\n else\n setFieldValue(\"url\", value);\n }}\n label={\"Preview type\"}\n renderValue={(value: string) => {\n switch (value) {\n case \"image\":\n return \"Image\";\n case \"video\":\n return \"Video\";\n case \"audio\":\n return \"Audio\";\n default:\n return \"Display URL\";\n }\n }}\n value={urlValue ?? \"[NONE]\"}>\n <SelectItem value={\"[NONE]\"}>\n Display URL\n </SelectItem>\n <SelectItem value={\"image\"}>\n Image\n </SelectItem>\n <SelectItem value={\"video\"}>\n Video\n </SelectItem>\n <SelectItem value={\"audio\"}>\n Audio\n </SelectItem>\n </Select>\n </div>\n\n <div className={\"col-span-12\"}>\n\n <ValidationPanel>\n\n <StringPropertyValidation disabled={disabled}\n max={true}\n min={true}\n trim={true}\n showErrors={showErrors}/>\n\n </ValidationPanel>\n\n </div>\n\n <div className={\"col-span-12\"}>\n\n <TextField name={\"defaultValue\"}\n disabled={disabled}\n onChange={(e: any) => {\n setFieldValue(\"defaultValue\", e.target.value === \"\" ? undefined : e.target.value);\n }}\n label={\"Default value\"}\n value={getIn(values, \"defaultValue\") ?? \"\"}/>\n\n </div>\n </>\n );\n}\n","import { DEFAULT_FIELD_CONFIGS, PropertyConfigId, PropertyConfig } from \"@firecms/core\";\n\nexport const supportedFieldsIds: PropertyConfigId[] = [\n \"text_field\",\n \"multiline\",\n \"markdown\",\n \"url\",\n \"email\",\n \"user_select\",\n \"select\",\n \"multi_select\",\n \"number_input\",\n \"number_select\",\n \"multi_number_select\",\n \"file_upload\",\n \"multi_file_upload\",\n \"reference\",\n \"reference_as_string\",\n \"multi_references\",\n \"switch\",\n \"date_time\",\n \"group\",\n \"key_value\",\n \"repeat\",\n \"block\"\n];\n\nexport const supportedFields: Record<string, PropertyConfig> = Object.entries(DEFAULT_FIELD_CONFIGS)\n .filter(([id]) => supportedFieldsIds.includes(id as PropertyConfigId))\n .map(([id, config]) => ({ [id]: config }))\n .reduce((a, b) => ({ ...a, ...b }), {});\n","import React, { useCallback } from \"react\";\nimport { StringPropertyValidation } from \"./validation/StringPropertyValidation\";\nimport { ValidationPanel } from \"./validation/ValidationPanel\";\nimport { Field, getIn, useFormex } from \"@firecms/formex\";\n\nimport {\n BooleanSwitchWithLabel,\n CloudUploadIcon,\n DebouncedTextField,\n ExpandablePanel,\n SettingsIcon,\n TextField,\n Typography\n} from \"@firecms/ui\";\n\nexport function MarkdownPropertyField({\n disabled,\n showErrors\n}: {\n disabled: boolean;\n showErrors: boolean;\n}) {\n\n const {\n values,\n setFieldValue\n } = useFormex();\n\n const baseStoragePath = \"storage\";\n const baseMarkdownPath = \"markdown\";\n\n const metadata = `${baseStoragePath}.metadata`;\n const fileName = `${baseStoragePath}.fileName`;\n const maxSize = `${baseStoragePath}.maxSize`;\n const storagePath = `${baseStoragePath}.storagePath`;\n\n // Markdown config paths\n const htmlPath = `${baseMarkdownPath}.html`;\n const transformPastedTextPath = `${baseMarkdownPath}.transformPastedText`;\n\n const fileNameValue = getIn(values, fileName) ?? \"{rand}_{file}\";\n const storagePathValue = getIn(values, storagePath) ?? \"/\";\n const maxSizeValue = getIn(values, maxSize);\n\n // Markdown config values - check if markdown is an object or boolean\n const markdownValue = getIn(values, \"markdown\");\n const isMarkdownObject = typeof markdownValue === \"object\" && markdownValue !== null;\n const htmlValue = isMarkdownObject ? (markdownValue.html ?? true) : true;\n const transformPastedTextValue = isMarkdownObject ? (markdownValue.transformPastedText ?? false) : false;\n\n const hasFilenameCallback = typeof fileNameValue === \"function\";\n const hasStoragePathCallback = typeof storagePathValue === \"function\";\n\n // Handler to update markdown config - converts from boolean to object if needed\n const updateMarkdownConfig = useCallback((key: \"html\" | \"transformPastedText\", value: boolean) => {\n const currentMarkdown = getIn(values, \"markdown\");\n if (typeof currentMarkdown === \"object\" && currentMarkdown !== null) {\n // Already an object, update the key\n setFieldValue(`markdown.${key}`, value);\n } else {\n // Convert from boolean to object\n const defaultConfig = {\n html: true,\n transformPastedText: false\n };\n setFieldValue(\"markdown\", {\n ...defaultConfig,\n [key]: value\n });\n }\n }, [values, setFieldValue]);\n\n return (\n <>\n <div className={\"col-span-12\"}>\n\n <ValidationPanel>\n\n <StringPropertyValidation disabled={disabled}\n length={true}\n lowercase={true}\n max={true}\n min={true}\n trim={true}\n uppercase={true}\n showErrors={showErrors} />\n\n </ValidationPanel>\n\n </div>\n\n <div className={\"col-span-12\"}>\n <ExpandablePanel\n title={\n <div className=\"flex flex-row text-surface-500\">\n <SettingsIcon />\n <Typography variant={\"subtitle2\"}\n className=\"ml-4\">\n Paste behavior\n </Typography>\n </div>\n }>\n\n <div className={\"flex flex-col gap-2 p-4\"}>\n <BooleanSwitchWithLabel\n size={\"small\"}\n disabled={disabled}\n value={!htmlValue}\n onValueChange={(value) => updateMarkdownConfig(\"html\", !value)}\n label={\"Strip HTML on paste\"}\n />\n <Typography variant={\"caption\"} className={\"ml-3.5 mt-1 mb-2\"}>\n Remove HTML tags and inline styles when pasting content from external sources\n </Typography>\n\n <BooleanSwitchWithLabel\n size={\"small\"}\n disabled={disabled}\n value={transformPastedTextValue}\n onValueChange={(value) => updateMarkdownConfig(\"transformPastedText\", value)}\n label={\"Convert pasted text to markdown\"}\n />\n <Typography variant={\"caption\"} className={\"ml-3.5 mt-1 mb-2\"}>\n Convert rich text (from Google Docs, Word, etc.) to clean markdown format\n </Typography>\n </div>\n </ExpandablePanel>\n </div>\n\n <div className={\"col-span-12\"}>\n <ExpandablePanel\n title={\n <div className=\"flex flex-row text-surface-500\">\n <CloudUploadIcon />\n <Typography variant={\"subtitle2\"}\n className=\"ml-4\">\n File upload config\n </Typography>\n </div>\n }>\n\n <div className={\"grid grid-cols-12 gap-2 p-4\"}>\n\n\n <div className={\"col-span-12\"}>\n <Field name={fileName}\n as={DebouncedTextField}\n label={\"File name\"}\n size={\"small\"}\n disabled={hasFilenameCallback || disabled}\n value={hasFilenameCallback ? \"-\" : fileNameValue}\n />\n </div>\n <div className={\"col-span-12\"}>\n <Field name={storagePath}\n as={DebouncedTextField}\n label={\"Storage path\"}\n disabled={hasStoragePathCallback || disabled}\n size={\"small\"}\n value={hasStoragePathCallback ? \"-\" : storagePathValue}\n />\n <Typography variant={\"caption\"} className={\"ml-3.5 mt-1 mb-2\"}>\n <p>You can use the following placeholders in\n the file name\n and storage path values:</p>\n <ul>\n <li>{\"{file} - Full name of the uploaded file\"}</li>\n <li>{\"{file.name} - Name of the uploaded file without extension\"}</li>\n <li>{\"{file.ext} - Extension of the uploaded file\"}</li>\n <li>{\"{entityId} - ID of the entity\"}</li>\n <li>{\"{propertyKey} - ID of this field\"}</li>\n <li>{\"{path} - Path of this entity\"}</li>\n <li>{\"{rand} - Random value used to avoid name collisions\"}</li>\n </ul>\n </Typography>\n\n <Typography variant={\"caption\"} className={\"ml-3.5 mt-1 mb-2\"}>\n When using Markdown, the URL of the uploaded files are always saved in the text value\n (not\n the path).\n </Typography>\n </div>\n\n <div className={\"col-span-12\"}>\n <DebouncedTextField name={maxSize}\n type={\"number\"}\n label={\"Max size (in bytes)\"}\n size={\"small\"}\n value={maxSizeValue !== undefined && maxSizeValue !== null ? maxSizeValue.toString() : \"\"}\n onChange={(e) => {\n const value = e.target.value;\n if (value === \"\") setFieldValue(maxSize, undefined);\n else setFieldValue(maxSize, parseInt(value));\n }}\n />\n </div>\n\n </div>\n </ExpandablePanel>\n </div>\n\n <div className={\"col-span-12\"}>\n\n <TextField name={\"defaultValue\"}\n disabled={disabled}\n onChange={(e: any) => {\n setFieldValue(\"defaultValue\", e.target.value === \"\" ? undefined : e.target.value);\n }}\n label={\"Default value\"}\n value={getIn(values, \"defaultValue\") ?? \"\"} />\n\n </div>\n </>\n );\n}\n","import React, { useDeferredValue, useEffect, useRef, useState } from \"react\";\nimport equal from \"react-fast-compare\"\n\nimport { Formex, FormexController, getIn, useCreateFormex } from \"@firecms/formex\";\nimport {\n ConfirmationDialog,\n DEFAULT_FIELD_CONFIGS,\n getFieldConfig,\n getFieldId,\n isPropertyBuilder,\n isValidRegExp,\n mergeDeep,\n Properties,\n Property,\n PropertyConfig,\n PropertyConfigBadge,\n PropertyConfigId,\n} from \"@firecms/core\";\nimport {\n Button,\n Card,\n cls,\n DeleteIcon,\n Dialog,\n DialogActions,\n DialogContent,\n DialogTitle,\n fieldBackgroundDisabledMixin,\n fieldBackgroundHoverMixin,\n fieldBackgroundMixin,\n IconButton,\n InfoLabel,\n Tooltip,\n Typography,\n WarningIcon\n} from \"@firecms/ui\";\nimport { EnumPropertyField } from \"./properties/EnumPropertyField\";\nimport { StoragePropertyField } from \"./properties/StoragePropertyField\";\nimport { MapPropertyField } from \"./properties/MapPropertyField\";\nimport { RepeatPropertyField } from \"./properties/RepeatPropertyField\";\nimport { CommonPropertyFields } from \"./properties/CommonPropertyFields\";\nimport { StringPropertyField } from \"./properties/StringPropertyField\";\nimport { BooleanPropertyField } from \"./properties/BooleanPropertyField\";\nimport { BlockPropertyField } from \"./properties/BlockPropertyField\";\nimport { NumberPropertyField } from \"./properties/NumberPropertyField\";\nimport { ReferencePropertyField } from \"./properties/ReferencePropertyField\";\nimport { DateTimePropertyField } from \"./properties/DateTimePropertyField\";\nimport { AdvancedPropertyValidation } from \"./properties/advanced/AdvancedPropertyValidation\";\nimport { ConditionsPanel, ConditionsEditor, EnumConditionsEditor } from \"./properties/conditions\";\nimport { editableProperty } from \"../../utils/entities\";\nimport { KeyValuePropertyField } from \"./properties/KeyValuePropertyField\";\nimport { updatePropertyFromWidget } from \"./utils/update_property_for_widget\";\nimport { UrlPropertyField } from \"./properties/UrlPropertyField\";\nimport { supportedFields } from \"./utils/supported_fields\";\nimport { MarkdownPropertyField } from \"./properties/MarkdownPropertyField\";\n\nexport type PropertyWithId = Property & {\n id?: string\n};\n\nexport type OnPropertyChangedParams = {\n id?: string,\n property: Property,\n namespace?: string,\n previousId?: string\n};\n\nexport type PropertyFormProps = {\n includeIdAndName?: boolean;\n existingProperty: boolean;\n autoUpdateId?: boolean;\n autoOpenTypeSelect: boolean;\n inArray: boolean;\n propertyKey?: string;\n propertyNamespace?: string;\n property?: Property;\n onPropertyChanged?: (params: OnPropertyChangedParams) => void;\n onPropertyChangedImmediate?: boolean;\n onDismiss?: () => void;\n onDelete?: (id?: string, namespace?: string) => void;\n onError?: (id: string, namespace?: string, error?: Record<string, any>) => void;\n initialErrors?: Record<string, any>;\n existingPropertyKeys?: string[];\n forceShowErrors?: boolean;\n allowDataInference: boolean;\n getData?: () => Promise<object[]>;\n getController?: (formex: FormexController<PropertyWithId>) => void;\n propertyConfigs: Record<string, PropertyConfig>;\n collectionEditable: boolean;\n /**\n * Collection properties for populating the conditions field selector.\n * Includes nested map properties.\n */\n collectionProperties?: Properties;\n};\n\nexport const PropertyForm = React.memo(\n function PropertyForm(props: PropertyFormProps) {\n\n const {\n includeIdAndName = true,\n autoOpenTypeSelect,\n existingProperty,\n autoUpdateId,\n inArray,\n propertyKey,\n existingPropertyKeys,\n propertyNamespace,\n property,\n onPropertyChanged,\n onPropertyChangedImmediate = true,\n onDismiss,\n onDelete,\n onError,\n initialErrors,\n forceShowErrors,\n allowDataInference,\n getData,\n getController,\n propertyConfigs,\n collectionEditable,\n collectionProperties\n } = props;\n\n const initialValue: PropertyWithId = {\n id: \"\",\n name: \"\"\n } as PropertyWithId;\n\n const disabled = (Boolean(property && !editableProperty(property)) || !collectionEditable);\n\n const lastSubmittedProperty = useRef<OnPropertyChangedParams | undefined>(property ? {\n id: propertyKey,\n previousId: propertyKey,\n property\n } : undefined);\n\n const doOnPropertyChanged = ({\n id,\n property\n }: OnPropertyChangedParams) => {\n const params = {\n id,\n previousId: lastSubmittedProperty.current?.id,\n property,\n namespace: propertyNamespace\n };\n lastSubmittedProperty.current = params;\n onPropertyChanged?.(params);\n };\n\n const formexController = useCreateFormex<PropertyWithId>({\n debugId: \"PROPERTY_FORM\",\n initialValues: property\n ? { id: propertyKey, ...property } as PropertyWithId\n : initialValue,\n initialErrors,\n validateOnChange: true,\n validateOnInitialRender: true,\n onSubmit: (newPropertyWithId, controller) => {\n const {\n id,\n ...property\n } = newPropertyWithId;\n doOnPropertyChanged({\n id,\n property: {\n ...property,\n editable: property.editable ?? true\n }\n });\n if (!existingProperty)\n controller.resetForm({ values: initialValue });\n },\n validation: (values) => {\n const errors: Record<string, any> = {};\n if (includeIdAndName) {\n if (!values.name) {\n errors.name = \"Required\";\n } else {\n const nameError = validateName(values.name);\n if (nameError)\n errors.name = nameError;\n }\n if (!values.id) {\n errors.id = \"Required\";\n } else {\n // Exclude the current property key when editing to avoid false duplicate error\n const keysToCheck = existingPropertyKeys?.filter(key => key !== propertyKey);\n const idError = validateId(values.id, keysToCheck);\n if (idError)\n errors.id = idError;\n }\n }\n\n if (values.dataType === \"string\") {\n if (values.validation?.matches && !isValidRegExp(values.validation?.matches.toString())) {\n errors.validation = {\n matches: \"Invalid regular expression\"\n }\n }\n }\n if (values.dataType === \"reference\" && !values.path) {\n errors.path = \"You must specify a target collection for the field\";\n }\n if (values.propertyConfig === \"repeat\") {\n if (!(values as any).of) {\n errors.of = \"You need to specify a repeat field\";\n }\n }\n if (values.propertyConfig === \"block\") {\n if (!(values as any).oneOf) {\n errors.oneOf = \"You need to specify the properties of this block\";\n }\n }\n\n // Validate conditions - check for incomplete condition rules\n const conditions = (values as any).conditions;\n if (conditions) {\n const conditionErrors: Record<string, string> = {};\n const conditionTypes = [\"disabled\", \"hidden\", \"required\", \"readOnly\"];\n\n // Helper to check if a JSON Logic rule is incomplete (placeholder or empty keys)\n const isIncompleteRule = (rule: any): boolean => {\n if (!rule || typeof rule !== \"object\") return false;\n const ruleStr = JSON.stringify(rule);\n // Check for placeholder pattern used when field is not selected\n if (ruleStr.includes(\"values._placeholder\")) return true;\n // Check for empty string keys (invalid operators)\n if (Object.keys(rule).some(k => k === \"\")) return true;\n // Recursively check nested objects\n for (const key of Object.keys(rule)) {\n if (typeof rule[key] === \"object\" && isIncompleteRule(rule[key])) return true;\n }\n return false;\n };\n\n for (const type of conditionTypes) {\n const rule = conditions[type];\n if (rule && isIncompleteRule(rule)) {\n conditionErrors[type] = \"Incomplete condition - please select a field\";\n }\n }\n\n // Validate enum conditions (allowedEnumValues, excludedEnumValues)\n for (const enumType of [\"allowedEnumValues\", \"excludedEnumValues\"]) {\n const rule = conditions[enumType];\n if (rule && typeof rule === \"object\" && rule.if) {\n if (isIncompleteRule(rule)) {\n conditionErrors[enumType] = \"Incomplete condition - please select a field\";\n }\n }\n }\n\n if (Object.keys(conditionErrors).length > 0) {\n errors.conditions = conditionErrors;\n }\n }\n\n return errors;\n }\n });\n\n useEffect(() => {\n getController?.(formexController);\n }, [formexController, getController]);\n\n return <Formex value={formexController}>\n <PropertyEditFormFields\n onPropertyChanged={onPropertyChangedImmediate\n ? doOnPropertyChanged\n : undefined}\n onDelete={onDelete}\n includeIdAndTitle={includeIdAndName}\n propertyNamespace={propertyNamespace}\n onError={onError}\n onDismiss={onDismiss}\n showErrors={forceShowErrors || formexController.submitCount > 0}\n existing={existingProperty}\n autoUpdateId={autoUpdateId}\n inArray={inArray}\n autoOpenTypeSelect={autoOpenTypeSelect}\n disabled={disabled}\n getData={getData}\n allowDataInference={allowDataInference}\n propertyConfigs={propertyConfigs}\n collectionEditable={collectionEditable}\n collectionProperties={collectionProperties}\n {...formexController} />\n </Formex>;\n }, (a, b) =>\n a.getData === b.getData &&\n a.propertyKey === b.propertyKey &&\n a.propertyNamespace === b.propertyNamespace &&\n a.includeIdAndName === b.includeIdAndName &&\n a.autoOpenTypeSelect === b.autoOpenTypeSelect &&\n a.autoUpdateId === b.autoUpdateId &&\n a.existingPropertyKeys === b.existingPropertyKeys &&\n a.existingProperty === b.existingProperty &&\n equal(a.property, b.property)\n);\n\nexport function PropertyFormDialog({\n open,\n onCancel,\n onOkClicked,\n onPropertyChanged,\n getData,\n collectionEditable,\n ...formProps\n}: PropertyFormProps & {\n open?: boolean;\n onOkClicked?: () => void;\n onCancel?: () => void;\n}) {\n const formexRef = useRef<FormexController<PropertyWithId>>(undefined);\n const getController = (helpers: FormexController<PropertyWithId>) => {\n formexRef.current = helpers;\n };\n\n return <Dialog\n open={open ?? false}\n maxWidth={\"xl\"}\n fullWidth={true}\n >\n <form noValidate={true}\n autoComplete={\"off\"}\n onSubmit={(e) => {\n e.preventDefault();\n e.stopPropagation();\n formexRef.current?.handleSubmit(e)\n }}>\n <DialogTitle hidden>Property edit view</DialogTitle>\n <DialogContent>\n\n <PropertyForm {...formProps}\n onDismiss={onCancel}\n onPropertyChanged={(params) => {\n onPropertyChanged?.(params);\n onOkClicked?.();\n }}\n collectionEditable={collectionEditable}\n onPropertyChangedImmediate={false}\n getController={getController}\n getData={getData}\n />\n </DialogContent>\n\n <DialogActions>\n\n {onCancel && <Button\n variant={\"text\"}\n onClick={() => {\n onCancel();\n formexRef.current?.resetForm();\n }}>\n Cancel\n </Button>}\n\n <Button type={\"submit\"}>\n Ok\n </Button>\n </DialogActions>\n </form>\n </Dialog>;\n\n}\n\nfunction PropertyEditFormFields({\n values,\n errors,\n setValues,\n existing,\n autoUpdateId = false,\n autoOpenTypeSelect,\n includeIdAndTitle,\n onPropertyChanged,\n onDelete,\n propertyNamespace,\n onDismiss,\n onError,\n showErrors,\n disabled,\n inArray,\n getData,\n allowDataInference,\n propertyConfigs,\n collectionEditable,\n collectionProperties\n}: {\n includeIdAndTitle?: boolean;\n existing: boolean;\n autoUpdateId?: boolean;\n autoOpenTypeSelect: boolean;\n propertyNamespace?: string;\n onDismiss?: () => void;\n onPropertyChanged?: (params: OnPropertyChangedParams) => void;\n onDelete?: (id?: string, namespace?: string) => void;\n onError?: (id: string, namespace?: string, error?: Record<string, any>) => void;\n showErrors: boolean;\n inArray: boolean;\n disabled: boolean;\n getData?: () => Promise<object[]>;\n allowDataInference: boolean;\n propertyConfigs: Record<string, PropertyConfig>;\n collectionEditable: boolean;\n collectionProperties?: Properties;\n} & FormexController<PropertyWithId>) {\n\n const [selectOpen, setSelectOpen] = useState(autoOpenTypeSelect);\n const [deleteDialogOpen, setDeleteDialogOpen] = useState(false);\n const [selectedFieldConfigId, setSelectedFieldConfigId] = useState<string | undefined>(values?.dataType ? getFieldId(values) : undefined);\n\n const deferredValues = useDeferredValue(values);\n const nameFieldRef = useRef<HTMLInputElement>(null);\n\n const lastSubmittedProperty = useRef<object>(values);\n\n const selectedWidgetError = showErrors && getIn(errors, \"selectedWidget\");\n\n useEffect(() => {\n if (onPropertyChanged) {\n if ((!includeIdAndTitle || deferredValues.id)) {\n const {\n id,\n ...property\n } = deferredValues;\n if (!equal(deferredValues, lastSubmittedProperty.current)) {\n onPropertyChanged({\n id,\n property,\n namespace: propertyNamespace\n });\n lastSubmittedProperty.current = deferredValues;\n }\n }\n }\n }, [deferredValues, includeIdAndTitle, propertyNamespace]);\n\n useEffect(() => {\n if (values?.id && onError) {\n onError(values?.id, propertyNamespace, errors);\n }\n }, [errors, propertyNamespace, values?.id]);\n\n const onWidgetSelectChanged = (newSelectedWidgetId: PropertyConfigId) => {\n setSelectedFieldConfigId(newSelectedWidgetId);\n setValues(updatePropertyFromWidget(values, newSelectedWidgetId, propertyConfigs));\n // Ugly hack to autofocus the name field\n setTimeout(() => {\n nameFieldRef.current?.focus();\n }, 0);\n };\n\n let childComponent;\n if (selectedFieldConfigId === \"text_field\" ||\n selectedFieldConfigId === \"multiline\" ||\n selectedFieldConfigId === \"user_select\" ||\n selectedFieldConfigId === \"email\") {\n childComponent =\n <StringPropertyField widgetId={selectedFieldConfigId}\n disabled={disabled}\n showErrors={showErrors} />;\n } else if (selectedFieldConfigId === \"url\") {\n childComponent =\n <UrlPropertyField disabled={disabled}\n showErrors={showErrors} />;\n } else if (selectedFieldConfigId === \"markdown\") {\n childComponent =\n <MarkdownPropertyField disabled={disabled}\n showErrors={showErrors} />;\n } else if (selectedFieldConfigId === \"select\" ||\n selectedFieldConfigId === \"number_select\") {\n childComponent = <EnumPropertyField\n multiselect={false}\n allowDataInference={allowDataInference}\n updateIds={!existing}\n disabled={disabled}\n getData={getData}\n propertyNamespace={propertyNamespace}\n showErrors={showErrors} />;\n } else if (selectedFieldConfigId === \"multi_select\" ||\n selectedFieldConfigId === \"multi_number_select\") {\n childComponent = <EnumPropertyField\n multiselect={true}\n updateIds={!existing}\n disabled={disabled}\n allowDataInference={allowDataInference}\n getData={getData}\n propertyNamespace={propertyNamespace}\n showErrors={showErrors} />;\n } else if (selectedFieldConfigId === \"file_upload\") {\n childComponent =\n <StoragePropertyField existing={existing}\n multiple={false}\n disabled={disabled} />;\n } else if (selectedFieldConfigId === \"multi_file_upload\") {\n childComponent =\n <StoragePropertyField existing={existing}\n multiple={true}\n disabled={disabled} />;\n } else if (selectedFieldConfigId === \"switch\") {\n childComponent = <BooleanPropertyField disabled={disabled} />;\n } else if (selectedFieldConfigId === \"number_input\") {\n childComponent = <NumberPropertyField disabled={disabled} />;\n } else if (selectedFieldConfigId === \"group\") {\n childComponent =\n <MapPropertyField disabled={disabled} getData={getData} allowDataInference={allowDataInference}\n collectionEditable={collectionEditable}\n propertyConfigs={propertyConfigs} />;\n } else if (selectedFieldConfigId === \"block\") {\n childComponent =\n <BlockPropertyField disabled={disabled} getData={getData} allowDataInference={allowDataInference}\n collectionEditable={collectionEditable}\n propertyConfigs={propertyConfigs} />;\n } else if (selectedFieldConfigId === \"reference\") {\n childComponent =\n <ReferencePropertyField showErrors={showErrors}\n existing={existing}\n multiple={false}\n disabled={disabled} />;\n } else if (selectedFieldConfigId === \"reference_as_string\") {\n childComponent =\n <ReferencePropertyField showErrors={showErrors}\n existing={existing}\n asString={true}\n multiple={false}\n disabled={disabled} />;\n } else if (selectedFieldConfigId === \"date_time\") {\n childComponent = <DateTimePropertyField disabled={disabled} />;\n } else if (selectedFieldConfigId === \"multi_references\") {\n childComponent =\n <ReferencePropertyField showErrors={showErrors}\n existing={existing}\n multiple={true}\n disabled={disabled} />;\n } else if (selectedFieldConfigId === \"repeat\") {\n childComponent =\n <RepeatPropertyField showErrors={showErrors}\n existing={existing}\n getData={getData}\n allowDataInference={allowDataInference}\n disabled={disabled}\n collectionEditable={collectionEditable}\n propertyConfigs={propertyConfigs} />;\n } else if (selectedFieldConfigId === \"key_value\") {\n childComponent =\n <KeyValuePropertyField disabled={disabled} />;\n } else {\n childComponent = null;\n }\n\n return (\n <>\n {disabled && <InfoLabel mode={\"warn\"}>\n <Typography>This property can't be edited</Typography>\n <Typography variant={\"caption\"}>\n You may not have permission to\n edit it or it is defined in code with the <code>editable</code> flag set to <code>false</code>.\n </Typography>\n </InfoLabel>}\n\n <div className=\"flex mt-2 justify-between\">\n <div className={\"w-full flex flex-col gap-2\"}>\n <WidgetSelectView\n initialProperty={values}\n value={selectedFieldConfigId as PropertyConfigId}\n onValueChange={(value) => onWidgetSelectChanged(value as PropertyConfigId)}\n open={selectOpen}\n onOpenChange={(open, hasValue) => {\n if (!hasValue) {\n onDismiss?.();\n }\n setSelectOpen(open);\n }}\n disabled={disabled}\n showError={Boolean(selectedWidgetError)}\n existing={existing}\n propertyConfigs={propertyConfigs}\n inArray={inArray} />\n\n {selectedWidgetError &&\n <Typography variant=\"caption\"\n className={\"ml-3.5\"}\n color={\"error\"}>Required</Typography>}\n\n {/*<Typography variant=\"caption\" className={\"ml-3.5\"}>Define your own custom properties and*/}\n {/* components</Typography>*/}\n\n </div>\n\n {onDelete && existing && values?.id &&\n <IconButton\n variant={\"ghost\"}\n className=\"m-4\"\n disabled={disabled}\n onClick={() => setDeleteDialogOpen(true)}>\n <DeleteIcon />\n </IconButton>}\n </div>\n\n <div className={\"grid grid-cols-12 gap-y-12 mt-8 mb-8\"}>\n {includeIdAndTitle &&\n <CommonPropertyFields showErrors={showErrors}\n disabledId={existing}\n isNewProperty={!existing}\n disabled={disabled}\n autoUpdateId={autoUpdateId}\n ref={nameFieldRef} />}\n\n {childComponent}\n\n <div className={\"col-span-12\"}>\n <AdvancedPropertyValidation disabled={disabled} />\n </div>\n\n <div className={\"col-span-12\"}>\n <ConditionsPanel>\n <ConditionsEditor disabled={disabled} collectionProperties={collectionProperties} />\n <EnumConditionsEditor disabled={disabled} collectionProperties={collectionProperties} />\n </ConditionsPanel>\n </div>\n </div>\n\n {onDelete &&\n <ConfirmationDialog open={deleteDialogOpen}\n onAccept={() => onDelete(values?.id, propertyNamespace)}\n onCancel={() => setDeleteDialogOpen(false)}\n title={<div>Delete this property?</div>}\n body={\n <div> This will <b>not delete any\n data</b>, only modify the\n collection.</div>\n } />}\n\n </>\n );\n}\n\nconst idRegEx = /^[a-zA-Z_][a-zA-Z0-9_]*$/;\n\nfunction validateId(value?: string, existingPropertyKeys?: string[]) {\n\n let error;\n if (!value) {\n error = \"You must specify an id for the field\";\n }\n if (value && !value.match(idRegEx)) {\n error = \"The id can only contain letters, numbers and underscores (_), and not start with a number\";\n }\n if (value && existingPropertyKeys && existingPropertyKeys.includes(value)) {\n error = \"There is another field with this ID already\";\n }\n return error;\n}\n\nfunction validateName(value: string) {\n let error;\n if (!value) {\n error = \"You must specify a title for the field\";\n }\n return error;\n}\n\nconst WIDGET_TYPE_MAP: Record<PropertyConfigId, string> = {\n text_field: \"Text\",\n multiline: \"Text\",\n markdown: \"Text\",\n url: \"Text\",\n email: \"Text\",\n switch: \"Boolean\",\n user_select: \"Users\",\n select: \"Select\",\n multi_select: \"Select\",\n number_input: \"Number\",\n number_select: \"Select\",\n multi_number_select: \"Select\",\n file_upload: \"File\",\n multi_file_upload: \"File\",\n reference: \"Reference\",\n reference_as_string: \"Text\",\n multi_references: \"Reference\",\n date_time: \"Date\",\n group: \"Group\",\n key_value: \"Group\",\n repeat: \"Array\",\n custom_array: \"Array\",\n block: \"Group\"\n};\n\nfunction WidgetSelectView({\n initialProperty,\n value,\n onValueChange,\n open,\n onOpenChange,\n disabled,\n showError,\n existing,\n propertyConfigs,\n inArray\n}: {\n initialProperty?: PropertyWithId,\n value?: PropertyConfigId,\n onValueChange: (value: string) => void,\n showError: boolean,\n open: boolean,\n onOpenChange: (open: boolean, hasValue: boolean) => void,\n disabled: boolean,\n existing: boolean,\n propertyConfigs: Record<string, PropertyConfig>,\n inArray?: boolean\n}) {\n\n const allSupportedFields = Object.entries(supportedFields).concat(Object.entries(propertyConfigs));\n\n const displayedWidgets = (inArray\n ? allSupportedFields.filter(([_, propertyConfig]) => !isPropertyBuilder(propertyConfig.property) && propertyConfig.property?.dataType !== \"array\")\n : allSupportedFields)\n .map(([key, propertyConfig]) => ({\n [key]: propertyConfig\n }))\n .reduce((a, b) => {\n return {\n ...a,\n ...b\n }\n }, {});\n\n const key = value;\n const propertyConfig = key ? (DEFAULT_FIELD_CONFIGS[key] ?? propertyConfigs[key]) : undefined;\n const baseProperty = propertyConfig?.property;\n const baseFieldConfig = baseProperty && !isPropertyBuilder(baseProperty) ? getFieldConfig(baseProperty, propertyConfigs) : undefined;\n const computedFieldConfig = baseFieldConfig && propertyConfig ? mergeDeep(baseFieldConfig, propertyConfig) : propertyConfig;\n\n const groups: string[] = [...new Set(Object.keys(displayedWidgets).map(key => {\n const group = WIDGET_TYPE_MAP[key as PropertyConfigId];\n if (group) {\n return group;\n }\n return \"Custom/Other\"\n }))];\n\n return <>\n <div\n onClick={() => {\n if (!disabled) {\n onOpenChange(!open, Boolean(value));\n }\n }}\n className={cls(\n \"select-none rounded-md text-sm p-4\",\n fieldBackgroundMixin,\n disabled ? fieldBackgroundDisabledMixin : fieldBackgroundHoverMixin,\n \"relative flex items-center\",\n )}>\n {!value && <em>Select a property widget</em>}\n {value && computedFieldConfig && <div\n className={cls(\n \"flex items-center\")}>\n <div className={\"mr-8\"}>\n <PropertyConfigBadge propertyConfig={computedFieldConfig} />\n </div>\n <div className={\"flex flex-col items-start text-base text-left\"}>\n <div>{computedFieldConfig.name}</div>\n <Typography variant={\"caption\"}\n color={\"secondary\"}>\n {computedFieldConfig.description}\n </Typography>\n </div>\n </div>}\n </div>\n <Dialog open={open}\n onOpenChange={(open) => onOpenChange(open, Boolean(value))}\n maxWidth={\"4xl\"}>\n <DialogTitle>\n Select a property widget\n </DialogTitle>\n <DialogContent>\n <div>\n {groups.map(group => {\n return <div key={group} className={\"mt-4\"}>\n <Typography variant={\"label\"}>{group}</Typography>\n <div className={\"grid grid-cols-1 md:grid-cols-2 gap-x-4 gap-y-2 mt-4\"}>\n {Object.entries(displayedWidgets).map(([key, propertyConfig]) => {\n const groupKey = WIDGET_TYPE_MAP[key as PropertyConfigId];\n if (groupKey === group) {\n return <WidgetSelectViewItem\n key={key}\n initialProperty={initialProperty}\n onClick={() => {\n onValueChange(key);\n onOpenChange(false, true);\n }}\n propertyConfig={propertyConfig}\n existing={existing} />;\n }\n return null;\n })}\n </div>\n </div>;\n })}\n {/*{displayedWidgets.map(([key, propertyConfig]) => {*/}\n {/* return <WidgetSelectViewItem*/}\n {/* key={key}*/}\n {/* initialProperty={initialProperty}*/}\n {/* onClick={() => {*/}\n {/* onValueChange(key);*/}\n {/* onOpenChange(false);*/}\n {/* }}*/}\n {/* propertyConfig={propertyConfig}*/}\n {/* existing={existing}/>;*/}\n {/*})}*/}\n </div>\n </DialogContent>\n </Dialog>\n </>;\n}\n\nexport interface PropertySelectItemProps {\n onClick?: () => void;\n initialProperty?: PropertyWithId;\n propertyConfig: PropertyConfig;\n existing: boolean;\n}\n\nexport function WidgetSelectViewItem({\n onClick,\n initialProperty,\n // optionDisabled,\n propertyConfig,\n existing\n}: PropertySelectItemProps) {\n const baseProperty = propertyConfig.property;\n const shouldWarnChangingDataType = existing && !isPropertyBuilder(baseProperty) && baseProperty.dataType !== initialProperty?.dataType;\n\n return <Card\n onClick={onClick}\n className={\"flex flex-row items-center px-4 py-2 m-1\"}>\n <div\n className={cls(\n \"flex flex-row items-center text-base min-h-[48px]\",\n )}>\n <div className={\"mr-8\"}>\n <PropertyConfigBadge propertyConfig={propertyConfig} disabled={shouldWarnChangingDataType} />\n </div>\n <div>\n <div className={\"flex flex-row gap-2 items-center\"}>\n {shouldWarnChangingDataType && <Tooltip\n title={\"This widget uses a different data type than the initially selected widget. This can cause errors with existing data.\"}>\n <WarningIcon size=\"smallest\" className={\"w-4\"} />\n </Tooltip>}\n <Typography\n variant={\"label\"}\n color={shouldWarnChangingDataType ? \"secondary\" : undefined}>{propertyConfig.name}</Typography>\n </div>\n\n <Typography variant={\"caption\"}\n color={\"secondary\"}\n className={\"max-w-sm\"}>\n {propertyConfig.description}\n </Typography>\n\n </div>\n </div>\n </Card>\n}\n","import React, { useMemo, useRef, useState } from \"react\";\nimport {\n EntityCollection,\n FieldCaption,\n getFieldConfig,\n Property,\n PropertyConfigBadge,\n resolveCollection,\n unslugify,\n useAuthController,\n useCustomizationController\n} from \"@firecms/core\";\nimport {\n CloseIcon,\n IconButton,\n Select,\n SelectItem,\n Typography\n} from \"@firecms/ui\";\nimport { useFormex } from \"@firecms/formex\";\nimport { PropertyFormDialog } from \"./PropertyEditView\";\n\nexport function KanbanConfigSection({\n className,\n forceExpanded\n}: {\n className?: string;\n forceExpanded?: boolean;\n}) {\n const authController = useAuthController();\n const customizationController = useCustomizationController();\n const { values, setFieldValue } = useFormex<EntityCollection>();\n const panelRef = useRef<HTMLDivElement>(null);\n const [columnPropertyDialogOpen, setColumnPropertyDialogOpen] = useState(false);\n\n // Resolve collection to get properties\n const resolvedCollection = useMemo(() => resolveCollection({\n collection: values,\n path: values.path,\n propertyConfigs: customizationController.propertyConfigs,\n authController\n }), [values, customizationController.propertyConfigs, authController]);\n\n // Get enum string properties (for columnProperty)\n const enumStringProperties = useMemo(() => {\n const result: { key: string; label: string; property: Property }[] = [];\n if (!resolvedCollection.properties) return result;\n\n Object.entries(resolvedCollection.properties).forEach(([key, prop]) => {\n if (prop && 'dataType' in prop && prop.dataType === 'string' && prop.enumValues) {\n result.push({\n key,\n label: (prop as Property).name || key,\n property: prop as Property\n });\n }\n });\n return result;\n }, [resolvedCollection.properties]);\n\n const kanbanConfig = values.kanban;\n\n // Check if columnProperty references a non-existent property\n const columnPropertyMissing = Boolean(kanbanConfig?.columnProperty) &&\n !enumStringProperties.some(p => p.key === kanbanConfig?.columnProperty);\n\n // Scroll to section when forceExpanded\n React.useEffect(() => {\n if (forceExpanded && panelRef.current) {\n setTimeout(() => {\n panelRef.current?.scrollIntoView({ behavior: \"smooth\", block: \"center\" });\n }, 100);\n }\n }, [forceExpanded]);\n\n const showCreateButton = !kanbanConfig?.columnProperty || columnPropertyMissing;\n const dialogPropertyKey = columnPropertyMissing && kanbanConfig?.columnProperty\n ? kanbanConfig.columnProperty\n : \"status\";\n const dialogPropertyName = columnPropertyMissing && kanbanConfig?.columnProperty\n ? unslugify(kanbanConfig.columnProperty)\n : \"Status\";\n\n return (\n <div className={className} ref={panelRef}>\n <Select\n key={`column-select-${enumStringProperties.length}`}\n name=\"kanban.columnProperty\"\n label=\"Kanban Column Property\"\n size={\"large\"}\n fullWidth={true}\n position={\"item-aligned\"}\n disabled={enumStringProperties.length === 0}\n error={columnPropertyMissing}\n value={kanbanConfig?.columnProperty ?? \"\"}\n onValueChange={(v) => {\n if (v) {\n setFieldValue(\"kanban\", {\n ...kanbanConfig,\n columnProperty: v\n });\n } else {\n setFieldValue(\"kanban\", undefined);\n }\n }}\n renderValue={(value) => {\n if (columnPropertyMissing) {\n return <span className=\"text-red-500\">{value} (not found)</span>;\n }\n const prop = enumStringProperties.find(p => p.key === value);\n if (!prop) return \"Select a property\";\n const fieldConfig = getFieldConfig(prop.property, customizationController.propertyConfigs);\n return (\n <div className=\"flex items-center gap-2\">\n <PropertyConfigBadge propertyConfig={fieldConfig} />\n <span>{prop.label}</span>\n </div>\n );\n }}\n endAdornment={kanbanConfig?.columnProperty ? (\n <IconButton\n size=\"small\"\n onClick={(e) => {\n e.stopPropagation();\n setFieldValue(\"kanban\", undefined);\n }}\n >\n <CloseIcon size=\"small\" />\n </IconButton>\n ) : undefined}\n >\n {enumStringProperties.map((prop) => {\n const fieldConfig = getFieldConfig(prop.property, customizationController.propertyConfigs);\n return (\n <SelectItem key={prop.key} value={prop.key}>\n <div className=\"flex items-center gap-3\">\n <PropertyConfigBadge propertyConfig={fieldConfig} />\n <div>\n <div>{prop.label}</div>\n <Typography variant=\"caption\" color=\"secondary\">\n {fieldConfig?.name || \"Enum\"}\n </Typography>\n </div>\n </div>\n </SelectItem>\n );\n })}\n </Select>\n <FieldCaption error={columnPropertyMissing}>\n {columnPropertyMissing\n ? `Property \"${kanbanConfig?.columnProperty}\" does not exist or is not an enum string property. Please select a valid property or clear the selection.`\n : enumStringProperties.length === 0\n ? \"No enum string properties found. Add a string property with enumValues to use Kanban view.\"\n : \"Select a string property with enum values to group entities into columns\"\n }\n </FieldCaption>\n\n {showCreateButton && (\n <>\n <button\n type=\"button\"\n className=\"ml-3.5 text-sm text-primary hover:text-primary-dark mt-2\"\n onClick={() => setColumnPropertyDialogOpen(true)}\n >\n + Create \"{dialogPropertyKey}\" property\n </button>\n <PropertyFormDialog\n open={columnPropertyDialogOpen}\n onCancel={() => setColumnPropertyDialogOpen(false)}\n property={{\n dataType: \"string\",\n name: dialogPropertyName,\n enumValues: [\n { id: \"todo\", label: \"To Do\" },\n { id: \"in_progress\", label: \"In Progress\" },\n { id: \"done\", label: \"Done\" }\n ]\n }}\n propertyKey={dialogPropertyKey}\n existingProperty={false}\n autoOpenTypeSelect={false}\n autoUpdateId={false}\n inArray={false}\n allowDataInference={false}\n propertyConfigs={customizationController.propertyConfigs}\n collectionEditable={true}\n existingPropertyKeys={Object.keys(values.properties ?? {})}\n onPropertyChanged={({ id, property }) => {\n const newProperties = {\n ...values.properties,\n [id!]: property\n };\n const newPropertiesOrder = [...(values.propertiesOrder ?? Object.keys(values.properties ?? {})), id];\n setFieldValue(\"properties\", newProperties);\n setFieldValue(\"propertiesOrder\", newPropertiesOrder);\n setFieldValue(\"kanban\", {\n ...kanbanConfig,\n columnProperty: id\n });\n setColumnPropertyDialogOpen(false);\n }}\n />\n </>\n )}\n </div>\n );\n}\n","import React, { useMemo, useState } from \"react\";\nimport {\n EntityCollection,\n FieldCaption,\n getFieldConfig,\n Property,\n PropertyConfigBadge,\n resolveCollection,\n unslugify,\n useAuthController,\n useCustomizationController\n} from \"@firecms/core\";\nimport {\n BooleanSwitchWithLabel,\n CloseIcon,\n Container,\n IconButton,\n Select,\n SelectItem,\n TextField,\n Typography\n} from \"@firecms/ui\";\n\nimport { useFormex } from \"@firecms/formex\";\nimport { LayoutModeSwitch } from \"./LayoutModeSwitch\";\nimport { ViewModeSwitch } from \"./ViewModeSwitch\";\nimport { KanbanConfigSection } from \"./KanbanConfigSection\";\nimport { PropertyFormDialog } from \"./PropertyEditView\";\n\nexport function DisplaySettingsForm({\n expandKanban\n}: {\n expandKanban?: boolean;\n}) {\n\n const {\n values,\n setFieldValue,\n handleChange,\n submitCount\n } = useFormex<EntityCollection>();\n\n const [orderPropertyDialogOpen, setOrderPropertyDialogOpen] = useState(false);\n\n const authController = useAuthController();\n const customizationController = useCustomizationController();\n\n // Resolve collection to get properties for order property select\n const resolvedCollection = useMemo(() => resolveCollection({\n collection: values,\n path: values.path,\n propertyConfigs: customizationController.propertyConfigs,\n authController\n }), [values, customizationController.propertyConfigs, authController]);\n\n // Get number properties (for orderProperty)\n const numberProperties = useMemo(() => {\n const result: { key: string; label: string; property: Property; }[] = [];\n if (!resolvedCollection.properties) return result;\n\n Object.entries(resolvedCollection.properties).forEach(([key, prop]) => {\n if (prop && 'dataType' in prop && prop.dataType === 'number') {\n result.push({\n key,\n label: (prop as Property).name || key,\n property: prop as Property\n });\n }\n });\n return result;\n }, [resolvedCollection.properties]);\n\n const showErrors = submitCount > 0;\n\n // Document ID generation value\n let customIdValue: \"true\" | \"false\" | \"optional\" | \"code_defined\" | undefined;\n if (typeof values.customId === \"object\") {\n customIdValue = \"code_defined\";\n } else if (values.customId === true) {\n customIdValue = \"true\";\n } else if (values.customId === false) {\n customIdValue = \"false\";\n } else if (values.customId === \"optional\") {\n customIdValue = \"optional\";\n }\n\n return (\n <div className={\"overflow-auto my-auto\"}>\n <Container maxWidth={\"4xl\"} className={\"flex flex-col gap-4 p-8 m-auto\"}>\n\n <div>\n <Typography variant={\"h5\"} className={\"flex-grow\"}>\n Display settings\n </Typography>\n </div>\n\n <div className={\"grid grid-cols-12 gap-4\"}>\n\n {/* Layout Mode (Side dialog vs Full screen) */}\n <LayoutModeSwitch\n className={\"col-span-12\"}\n value={values.openEntityMode ?? \"side_panel\"}\n onChange={(value) => setFieldValue(\"openEntityMode\", value)} />\n\n {/* View Mode (Table/Cards/Kanban) */}\n <ViewModeSwitch\n className={\"col-span-12\"}\n value={values.defaultViewMode ?? \"table\"}\n onChange={(value) => setFieldValue(\"defaultViewMode\", value)} />\n\n {/* Kanban Column Property */}\n <KanbanConfigSection className={\"col-span-12\"} forceExpanded={expandKanban} />\n\n {/* Order Property */}\n <div className={\"col-span-12 mt-4\"}>\n {(() => {\n const orderPropertyMissing = Boolean(values.orderProperty) &&\n !numberProperties.some(p => p.key === values.orderProperty);\n\n return (\n <>\n <Select\n key={`order-select-${numberProperties.length}`}\n name=\"orderProperty\"\n label=\"Order Property\"\n size={\"large\"}\n fullWidth={true}\n position={\"item-aligned\"}\n disabled={numberProperties.length === 0}\n error={orderPropertyMissing}\n value={values.orderProperty ?? \"\"}\n onValueChange={(v) => {\n setFieldValue(\"orderProperty\", v || undefined);\n }}\n renderValue={(value) => {\n if (orderPropertyMissing) {\n return <span className=\"text-red-500\">{value} (not found)</span>;\n }\n const prop = numberProperties.find(p => p.key === value);\n if (!prop) return \"Select a property\";\n const fieldConfig = getFieldConfig(prop.property, customizationController.propertyConfigs);\n return (\n <div className=\"flex items-center gap-2\">\n <PropertyConfigBadge propertyConfig={fieldConfig} />\n <span>{prop.label}</span>\n </div>\n );\n }}\n endAdornment={values.orderProperty ? (\n <IconButton\n size=\"small\"\n onClick={(e) => {\n e.stopPropagation();\n setFieldValue(\"orderProperty\", undefined);\n }}\n >\n <CloseIcon size=\"small\" />\n </IconButton>\n ) : undefined}\n >\n {numberProperties.map((prop) => {\n const fieldConfig = getFieldConfig(prop.property, customizationController.propertyConfigs);\n return (\n <SelectItem key={prop.key} value={prop.key}>\n <div className=\"flex items-center gap-3\">\n <PropertyConfigBadge propertyConfig={fieldConfig} />\n <div>\n <div>{prop.label}</div>\n <Typography variant=\"caption\" color=\"secondary\">\n {fieldConfig?.name || \"Number\"}\n </Typography>\n </div>\n </div>\n </SelectItem>\n );\n })}\n </Select>\n <FieldCaption error={orderPropertyMissing}>\n {orderPropertyMissing\n ? `Property \"${values.orderProperty}\" does not exist or is not a number property. Please select a valid property or clear the selection.`\n : numberProperties.length === 0\n ? \"No number properties found. Add a number property to enable ordering.\"\n : \"Select a number property to persist the order of items\"\n }\n </FieldCaption>\n </>\n );\n })()}\n {(() => {\n const orderPropertyMissing = Boolean(values.orderProperty) &&\n !numberProperties.some(p => p.key === values.orderProperty);\n const showCreateButton = !values.orderProperty || orderPropertyMissing;\n\n const dialogPropertyKey = orderPropertyMissing && values.orderProperty\n ? values.orderProperty\n : \"__order\";\n const dialogPropertyName = orderPropertyMissing && values.orderProperty\n ? unslugify(values.orderProperty)\n : \"Order\";\n\n if (!showCreateButton) return null;\n\n return (\n <>\n <button\n type=\"button\"\n className=\"ml-3.5 text-sm text-primary hover:text-primary-dark mt-2\"\n onClick={() => setOrderPropertyDialogOpen(true)}\n >\n + Create \"{dialogPropertyKey}\" property\n </button>\n <PropertyFormDialog\n open={orderPropertyDialogOpen}\n onCancel={() => setOrderPropertyDialogOpen(false)}\n property={{\n dataType: \"number\",\n name: dialogPropertyName,\n disabled: true,\n hideFromCollection: true\n }}\n propertyKey={dialogPropertyKey}\n existingProperty={false}\n autoOpenTypeSelect={false}\n autoUpdateId={false}\n inArray={false}\n allowDataInference={false}\n propertyConfigs={customizationController.propertyConfigs}\n collectionEditable={true}\n existingPropertyKeys={Object.keys(values.properties ?? {})}\n onPropertyChanged={({ id, property }) => {\n const newProperties = {\n ...values.properties,\n [id!]: property\n };\n const newPropertiesOrder = [...(values.propertiesOrder ?? Object.keys(values.properties ?? {})), id];\n setFieldValue(\"properties\", newProperties);\n setFieldValue(\"propertiesOrder\", newPropertiesOrder);\n setFieldValue(\"orderProperty\", id);\n setOrderPropertyDialogOpen(false);\n }}\n />\n </>\n );\n })()}\n </div>\n\n {/* Default row size */}\n <div className={\"col-span-12\"}>\n <Select\n name=\"defaultSize\"\n size={\"large\"}\n fullWidth={true}\n label=\"Default row size\"\n position={\"item-aligned\"}\n onChange={handleChange}\n value={values.defaultSize ?? \"\"}\n renderValue={(value: any) => value.toUpperCase()}\n >\n {[\"xs\", \"s\", \"m\", \"l\", \"xl\"].map((value) => (\n <SelectItem\n key={`size-select-${value}`}\n value={value}>\n {value.toUpperCase()}\n </SelectItem>\n ))}\n </Select>\n </div>\n\n {/* Side dialog width */}\n <div className={\"col-span-12\"}>\n <TextField\n name={\"sideDialogWidth\"}\n type={\"number\"}\n aria-describedby={\"sideDialogWidth-helper\"}\n onChange={(e) => {\n const value = e.target.value;\n if (!value) {\n setFieldValue(\"sideDialogWidth\", null);\n } else if (!isNaN(Number(value))) {\n setFieldValue(\"sideDialogWidth\", Number(value));\n }\n }}\n endAdornment={<IconButton\n size={\"small\"}\n onClick={() => {\n setFieldValue(\"sideDialogWidth\", null);\n }}\n disabled={!values.sideDialogWidth}>\n <CloseIcon size={\"small\"} />\n </IconButton>}\n value={values.sideDialogWidth ?? \"\"}\n label={\"Side dialog width\"} />\n <FieldCaption>\n Optionally define the width (in pixels) of entities side dialog. Default is 768px\n </FieldCaption>\n </div>\n\n {/* Inline editing */}\n <div className={\"col-span-12\"}>\n <BooleanSwitchWithLabel\n position={\"start\"}\n size={\"large\"}\n label={values.inlineEditing === undefined || values.inlineEditing ? \"Data can be edited directly in the table view\" : \"Data can be edited only in the form view\"}\n onValueChange={(v) => setFieldValue(\"inlineEditing\", v)}\n value={values.inlineEditing === undefined ? true : values.inlineEditing}\n />\n <FieldCaption>\n Allow editing data directly in the table view, without opening the form view.\n </FieldCaption>\n </div>\n\n {/* Include JSON view */}\n <div className={\"col-span-12\"}>\n <BooleanSwitchWithLabel\n position={\"start\"}\n size={\"large\"}\n label={values.includeJsonView === undefined || values.includeJsonView ? \"Include JSON view\" : \"Do not include JSON view\"}\n onValueChange={(v) => setFieldValue(\"includeJsonView\", v)}\n value={values.includeJsonView === undefined ? true : values.includeJsonView}\n />\n <FieldCaption>\n Include the JSON representation of the document.\n </FieldCaption>\n </div>\n\n </div>\n\n <div style={{ height: \"52px\" }} />\n\n </Container>\n </div>\n );\n}\n","export function camelCase(str: string): string {\n if (!str) return \"\";\n if (str.length === 1) return str.toLowerCase();\n\n // Split by hyphens, underscores, or spaces and filter out empty strings\n const parts = str.split(/[-_ ]+/).filter(Boolean);\n\n if (parts.length === 0) return \"\";\n\n // Start with first part in lowercase\n return parts[0].toLowerCase() +\n // Transform remaining parts to have first letter uppercase\n parts.slice(1)\n .map(part => part.charAt(0).toUpperCase() + part.substring(1).toLowerCase())\n .join('');\n}\n","import { EntityCollection, isEmptyObject, useSnackbarController } from \"@firecms/core\";\nimport { Button, ContentCopyIcon, Dialog, DialogActions, DialogContent, DialogTitle, Tab, Tabs, Typography } from \"@firecms/ui\";\nimport React, { useState } from \"react\";\nimport JSON5 from \"json5\";\nimport { Highlight, themes } from \"prism-react-renderer\"\nimport { camelCase } from \"./utils/strings\";\nimport { clone } from \"@firecms/formex\";\n\nexport function GetCodeDialog({\n collection,\n onOpenChange,\n open\n}: { onOpenChange: (open: boolean) => void, collection: any, open: any }) {\n\n const snackbarController = useSnackbarController();\n const [format, setFormat] = useState<\"ts\" | \"json\">(\"json\");\n\n const collectionData = collectionToCode({ ...collection });\n\n const tsCode = collection\n ? \"import { EntityCollection } from \\\"@firecms/core\\\";\\n\\nconst \" + (collection?.name ? camelCase(collection.name) : \"my\") + \"Collection:EntityCollection = \" + JSON5.stringify(collectionData, null, \"\\t\")\n : \"No collection selected\";\n\n const jsonCode = collection\n ? JSON.stringify(collectionData, null, 2)\n : \"No collection selected\";\n\n const code = format === \"ts\" ? tsCode : jsonCode;\n\n return <Dialog open={open}\n onOpenChange={onOpenChange}\n maxWidth={\"4xl\"}>\n <div className=\"flex items-center justify-between pr-6\">\n <DialogTitle variant={\"h6\"}>Code for {collection.name}</DialogTitle>\n <Tabs value={format} onValueChange={(v) => setFormat(v as \"ts\" | \"json\")}>\n <Tab value=\"ts\">TypeScript</Tab>\n <Tab value=\"json\">JSON</Tab>\n </Tabs>\n </div>\n <DialogContent>\n\n <Typography variant={\"body2\"} className={\"mb-4\"}>\n {format === \"json\"\n ? \"Use this config to define the collection in JSON format.\"\n : <>\n If you want to customise the collection in code, you can add this collection code to your CMS\n app configuration.\n More info in the <a\n rel=\"noopener noreferrer\"\n href={\"https://firecms.co/docs/cloud/quickstart\"}>docs</a>.\n </>}\n </Typography>\n <Highlight\n theme={themes.vsDark}\n code={code}\n language={format === \"ts\" ? \"typescript\" : \"json\"}\n >\n {({\n className,\n style,\n tokens,\n getLineProps,\n getTokenProps\n }) => (\n <pre style={style} className={\"p-4 rounded text-sm\"}>\n {tokens.map((line, i) => (\n <div key={i} {...getLineProps({ line })}>\n {line.map((token, key) => (\n <span key={key} {...getTokenProps({ token })} />\n ))}\n </div>\n ))}\n </pre>\n )}\n </Highlight>\n\n </DialogContent>\n <DialogActions>\n <Button\n variant={\"text\"}\n size={\"small\"}\n onClick={(e) => {\n e.stopPropagation();\n e.preventDefault();\n snackbarController.open({\n type: \"success\",\n message: \"Copied\"\n })\n return navigator.clipboard.writeText(code);\n }}>\n <ContentCopyIcon size={\"small\"} />\n Copy to clipboard\n </Button>\n <Button onClick={() => onOpenChange(false)}>Close</Button>\n </DialogActions>\n </Dialog>;\n}\n\nfunction collectionToCode(collection: EntityCollection): object {\n\n const propertyCleanup = (value: any): any => {\n if (value === undefined || value === null) {\n return value;\n }\n const valueCopy = clone(value);\n if (typeof valueCopy === \"function\") {\n return valueCopy;\n }\n if (Array.isArray(valueCopy)) {\n return valueCopy.map((v: any) => propertyCleanup(v));\n }\n if (typeof valueCopy === \"object\") {\n if (valueCopy === null)\n return valueCopy;\n Object.keys(valueCopy).forEach((key) => {\n if (!isEmptyObject(valueCopy)) {\n const childRes = propertyCleanup(valueCopy[key]);\n if (childRes !== null && childRes !== undefined && childRes !== false && !isEmptyObject(childRes)) {\n valueCopy[key] = childRes;\n } else {\n delete valueCopy[key];\n }\n }\n });\n delete valueCopy.fromBuilder;\n delete valueCopy.resolved;\n delete valueCopy.propertiesOrder;\n delete valueCopy.propertyConfig;\n delete valueCopy.resolvedProperties;\n delete valueCopy.editable;\n\n }\n\n return valueCopy;\n }\n\n return {\n id: collection.id,\n name: collection.name,\n singularName: collection.singularName,\n path: collection.path,\n description: collection.description,\n editable: true,\n collectionGroup: collection.collectionGroup,\n icon: collection.icon,\n group: collection.group,\n customId: collection.customId,\n initialFilter: collection.initialFilter,\n initialSort: collection.initialSort,\n properties: Object.entries({\n ...(collection.properties ?? {})\n })\n .map(([key, value]) => ({\n [key]: propertyCleanup(value)\n }))\n .reduce((a, b) => ({\n ...a,\n ...b\n }), {}),\n subcollections: (collection.subcollections ?? []).map(collectionToCode)\n }\n\n}\n","import React, { useEffect, useMemo, useState } from \"react\";\n\nimport { Field, getIn, useFormex } from \"@firecms/formex\";\nimport {\n EntityCollection,\n ErrorBoundary,\n isPropertyBuilder,\n makePropertiesEditable,\n MapProperty,\n Properties,\n Property,\n PropertyConfig,\n PropertyOrBuilder,\n useLargeLayout,\n User,\n useSnackbarController\n} from \"@firecms/core\";\nimport {\n AddIcon,\n Button,\n CircularProgress,\n cls,\n CodeIcon,\n DebouncedTextField,\n defaultBorderMixin,\n FindInPageIcon,\n IconButton,\n Tooltip,\n Typography,\n} from \"@firecms/ui\";\n\nimport { getFullId, idToPropertiesPath, namespaceToPropertiesOrderPath } from \"./util\";\nimport { OnPropertyChangedParams, PropertyForm, PropertyFormDialog } from \"./PropertyEditView\";\nimport { PropertyTree } from \"./PropertyTree\";\nimport { PersistedCollection } from \"../../types/persisted_collection\";\nimport { GetCodeDialog } from \"./GetCodeDialog\";\nimport { useAIModifiedPaths } from \"./AIModifiedPathsContext\";\n\ntype CollectionEditorFormProps = {\n showErrors: boolean;\n isNewCollection: boolean;\n propertyErrorsRef?: React.MutableRefObject<any>;\n onPropertyError: (propertyKey: string, namespace: string | undefined, error?: Record<string, any>) => void;\n setDirty?: (dirty: boolean) => void;\n reservedGroups?: string[];\n extraIcon: React.ReactNode;\n getUser?: (uid: string) => User | null;\n getData?: () => Promise<object[]>;\n doCollectionInference?: (collection: PersistedCollection) => Promise<Partial<EntityCollection> | null> | undefined;\n propertyConfigs: Record<string, PropertyConfig>;\n collectionEditable: boolean;\n};\n\nexport function CollectionPropertiesEditorForm({\n showErrors,\n isNewCollection,\n propertyErrorsRef,\n onPropertyError,\n setDirty,\n reservedGroups,\n extraIcon,\n getUser,\n getData,\n doCollectionInference,\n propertyConfigs,\n collectionEditable\n}: CollectionEditorFormProps) {\n\n const {\n values,\n setFieldValue,\n setFieldError,\n setFieldTouched,\n errors,\n dirty\n } = useFormex<PersistedCollection>();\n\n const snackbarController = useSnackbarController();\n\n const largeLayout = useLargeLayout();\n const asDialog = !largeLayout\n\n // index of the selected property within the namespace\n const [selectedPropertyIndex, setSelectedPropertyIndex] = useState<number | undefined>();\n const [selectedPropertyKey, setSelectedPropertyKey] = useState<string | undefined>();\n const [selectedPropertyNamespace, setSelectedPropertyNamespace] = useState<string | undefined>();\n\n const selectedPropertyFullId = selectedPropertyKey ? getFullId(selectedPropertyKey, selectedPropertyNamespace) : undefined;\n const selectedProperty = selectedPropertyFullId ? getIn(values.properties, selectedPropertyFullId.replaceAll(\".\", \".properties.\")) : undefined;\n const [codeDialogOpen, setCodeDialogOpen] = useState<boolean>(false);\n\n const [inferringProperties, setInferringProperties] = useState<boolean>(false);\n\n const [newPropertyDialogOpen, setNewPropertyDialogOpen] = useState<boolean>(false);\n const [inferredPropertyKeys, setInferredPropertyKeys] = useState<string[]>([]);\n\n const currentPropertiesOrderRef = React.useRef<{\n [key: string]: string[]\n }>(values.propertiesOrder ? { \"\": values.propertiesOrder } : {});\n\n useEffect(() => {\n if (setDirty)\n setDirty(dirty);\n }, [dirty]);\n\n const inferPropertiesFromData = doCollectionInference\n ? (): void => {\n if (!doCollectionInference)\n return;\n\n setInferringProperties(true);\n\n console.debug(\"CollectionEditor: inferring properties from data\", values);\n // @ts-ignore\n doCollectionInference(values)\n .then((newCollection) => {\n\n if (newCollection)\n makePropertiesEditable(newCollection.properties as Properties);\n\n if (!newCollection) {\n snackbarController.open({\n type: \"error\",\n message: \"Could not infer properties from data\"\n });\n return;\n }\n\n // Helper function to find all new property keys including nested ones\n const findNewPropertyKeys = (\n existingProps: Record<string, PropertyOrBuilder> | undefined,\n newProps: Record<string, PropertyOrBuilder> | undefined,\n namespace?: string\n ): string[] => {\n if (!newProps) return [];\n const keys: string[] = [];\n\n for (const key of Object.keys(newProps)) {\n const fullKey = namespace ? `${namespace}.${key}` : key;\n const existingProp = existingProps?.[key];\n const newProp = newProps[key];\n\n if (!existingProp) {\n // This is a completely new property\n keys.push(fullKey);\n } else if (\n typeof newProp === \"object\" &&\n \"dataType\" in newProp &&\n newProp.dataType === \"map\" &&\n newProp.properties\n ) {\n // This is a map property, check for new nested properties\n const existingMapProps = typeof existingProp === \"object\" &&\n \"dataType\" in existingProp &&\n existingProp.dataType === \"map\"\n ? (existingProp as any).properties\n : undefined;\n keys.push(...findNewPropertyKeys(existingMapProps, newProp.properties as Record<string, PropertyOrBuilder>, fullKey));\n }\n }\n return keys;\n };\n\n // Helper function to add only new properties without overwriting existing ones\n // This preserves existing property configurations while adding missing nested properties\n const addNewPropertiesOnly = (\n existingProps: Record<string, PropertyOrBuilder> | undefined,\n newProps: Record<string, PropertyOrBuilder> | undefined\n ): Record<string, PropertyOrBuilder> => {\n if (!newProps) return existingProps ?? {};\n if (!existingProps) return newProps;\n\n const result = { ...existingProps };\n\n for (const key of Object.keys(newProps)) {\n const existingProp = existingProps[key];\n const newProp = newProps[key];\n\n if (!existingProp) {\n // This property doesn't exist, add it\n result[key] = newProp;\n } else if (\n typeof existingProp === \"object\" &&\n \"dataType\" in existingProp &&\n existingProp.dataType === \"map\" &&\n typeof newProp === \"object\" &&\n \"dataType\" in newProp &&\n newProp.dataType === \"map\" &&\n newProp.properties\n ) {\n // Both are map properties, recursively add new nested properties\n // Only if the existing map has properties, merge them; otherwise keep existing as-is\n const existingMapProps = (existingProp as MapProperty).properties as Record<string, PropertyOrBuilder> | undefined;\n if (existingMapProps) {\n result[key] = {\n ...existingProp,\n properties: addNewPropertiesOnly(\n existingMapProps,\n newProp.properties as Record<string, PropertyOrBuilder>\n )\n };\n }\n // If existingProp doesn't have properties, keep it as-is (don't overwrite with inferred)\n }\n // Otherwise, keep the existing property as-is (don't overwrite)\n }\n\n return result;\n };\n\n // Add only new properties from inferred collection without replacing existing ones\n const updatedProperties = addNewPropertiesOnly(\n values.properties ?? {},\n newCollection.properties as Record<string, PropertyOrBuilder>\n ) as { [key: string]: PropertyOrBuilder };\n\n // Find all new property keys including nested ones\n const allNewPropertyKeys = findNewPropertyKeys(\n values.properties,\n newCollection.properties as Record<string, PropertyOrBuilder>\n );\n\n // Find new top-level property keys for the properties order\n const newTopLevelPropertyKeys = (newCollection.properties ? Object.keys(newCollection.properties) : [])\n .filter((propertyKey) => !values.properties[propertyKey]);\n\n // Check if there are any changes (new properties or modified nested properties)\n if (allNewPropertyKeys.length === 0) {\n snackbarController.open({\n type: \"info\",\n message: \"No new properties found in existing data\"\n });\n return;\n }\n\n // Update properties order: keep existing order and append new keys at the beginning\n // Use Object.keys from updatedProperties to ensure all properties are included\n const allExistingKeys = values.propertiesOrder ?? Object.keys(values.properties ?? {});\n const updatedPropertiesOrder = [\n ...newTopLevelPropertyKeys,\n ...allExistingKeys.filter(key => !newTopLevelPropertyKeys.includes(key))\n ];\n\n setFieldValue(\"properties\", updatedProperties, false);\n updatePropertiesOrder(updatedPropertiesOrder);\n setInferredPropertyKeys(allNewPropertyKeys);\n\n snackbarController.open({\n type: \"success\",\n message: `Added ${allNewPropertyKeys.length} new ${allNewPropertyKeys.length === 1 ? \"property\" : \"properties\"}`\n });\n })\n .finally(() => {\n setInferringProperties(false);\n })\n }\n : undefined;\n\n const getCurrentPropertiesOrder = (namespace?: string) => {\n if (!namespace) return currentPropertiesOrderRef.current[\"\"] ?? getIn(values, namespaceToPropertiesOrderPath());\n return currentPropertiesOrderRef.current[namespace] ?? getIn(values, namespaceToPropertiesOrderPath(namespace));\n };\n\n const updatePropertiesOrder = (newPropertiesOrder: string[], namespace?: string) => {\n const propertiesOrderPath = namespaceToPropertiesOrderPath(namespace);\n\n setFieldValue(propertiesOrderPath, newPropertiesOrder, false);\n currentPropertiesOrderRef.current[namespace ?? \"\"] = newPropertiesOrder;\n\n };\n\n const deleteProperty = (propertyKey?: string, namespace?: string) => {\n const fullId = propertyKey ? getFullId(propertyKey, namespace) : undefined;\n if (!fullId)\n throw Error(\"collection editor miss config\");\n\n setFieldValue(idToPropertiesPath(fullId), undefined, false);\n\n const currentPropertiesOrder = getCurrentPropertiesOrder(namespace);\n if (currentPropertiesOrder) {\n const newPropertiesOrder = currentPropertiesOrder.filter((p) => p !== propertyKey);\n updatePropertiesOrder(newPropertiesOrder, namespace);\n }\n\n setNewPropertyDialogOpen(false);\n\n setSelectedPropertyIndex(undefined);\n setSelectedPropertyKey(undefined);\n setSelectedPropertyNamespace(undefined);\n };\n\n const onPropertyMove = (propertiesOrder: string[], namespace?: string) => {\n setFieldValue(namespaceToPropertiesOrderPath(namespace), propertiesOrder, false);\n };\n\n const onPropertyCreated = ({\n id,\n property\n }: {\n id?: string,\n property: Property\n }) => {\n if (!id) {\n throw Error(\"Need to include an ID when creating a new property\")\n }\n setFieldValue(\"properties\", {\n ...(values.properties ?? {}),\n [id]: property\n }, false);\n\n const newPropertiesOrder = [...(values.propertiesOrder ?? Object.keys(values.properties)), id];\n updatePropertiesOrder(newPropertiesOrder);\n\n setNewPropertyDialogOpen(false);\n if (largeLayout) {\n setSelectedPropertyIndex(newPropertiesOrder.indexOf(id));\n setSelectedPropertyKey(id);\n }\n setSelectedPropertyNamespace(undefined);\n };\n\n const onPropertyChanged = ({\n id,\n property,\n previousId,\n namespace\n }: OnPropertyChangedParams) => {\n\n const fullId = id ? getFullId(id, namespace) : undefined;\n const propertyPath = fullId ? idToPropertiesPath(fullId) : undefined;\n\n // If the id has changed we need to a little cleanup\n if (previousId && previousId !== id) {\n\n const previousFullId = getFullId(previousId, namespace);\n const previousPropertyPath = idToPropertiesPath(previousFullId);\n\n const currentPropertiesOrder = getCurrentPropertiesOrder(namespace);\n\n // replace previousId with id in propertiesOrder\n const newPropertiesOrder = currentPropertiesOrder\n .map((p) => p === previousId ? id : p)\n .filter((p) => p !== undefined) as string[];\n\n updatePropertiesOrder(newPropertiesOrder, namespace);\n\n if (id) {\n setSelectedPropertyIndex(newPropertiesOrder.indexOf(id));\n setSelectedPropertyKey(id);\n }\n setFieldValue(previousPropertyPath, undefined, false);\n setFieldTouched(previousPropertyPath, false, false);\n }\n\n if (propertyPath) {\n setFieldValue(propertyPath, property, false);\n setFieldTouched(propertyPath, true, false);\n }\n\n };\n\n const onPropertyErrorInternal = (id: string, namespace?: string, error?: Record<string, any>) => {\n const propertyPath = id ? getFullId(id, namespace) : undefined;\n console.debug(\"onPropertyErrorInternal\", {\n id,\n namespace,\n error,\n propertyPath\n });\n if (propertyPath) {\n const hasError = error && Object.keys(error).length > 0;\n onPropertyError(id, namespace, hasError ? error : undefined);\n setFieldError(idToPropertiesPath(propertyPath), hasError ? \"Property error\" : undefined);\n }\n }\n\n const closePropertyDialog = () => {\n setSelectedPropertyIndex(undefined);\n setSelectedPropertyKey(undefined);\n };\n\n const initialErrors = selectedPropertyKey && propertyErrorsRef?.current?.properties ? propertyErrorsRef.current.properties[selectedPropertyKey] : undefined;\n\n const emptyCollection = values?.propertiesOrder === undefined || values.propertiesOrder.length === 0;\n\n const usedPropertiesOrder = (values.propertiesOrder\n ? values.propertiesOrder\n : Object.keys(values.properties)) as string[];\n\n const owner = useMemo(() => values.ownerId && getUser ? getUser(values.ownerId) : null, [getUser, values.ownerId]);\n\n // Get AI generation counter for key to force remount on AI changes\n const aiModifiedPaths = useAIModifiedPaths();\n const generationCounter = aiModifiedPaths?.generationCounter ?? 0;\n\n const onPropertyClick = (propertyKey: string, namespace?: string) => {\n console.debug(\"CollectionEditor: onPropertyClick\", {\n propertyKey,\n namespace\n });\n setSelectedPropertyIndex(usedPropertiesOrder.indexOf(propertyKey));\n setSelectedPropertyKey(propertyKey);\n setSelectedPropertyNamespace(namespace);\n };\n\n const body = (\n <div className={\"grid grid-cols-12 gap-2 h-full bg-surface dark:bg-surface-dark\"}>\n <div className={cls(\n \"bg-surface-50 dark:bg-surface-900\",\n \"p-4 md:p-8 pb-20 md:pb-20\",\n \"col-span-12 lg:col-span-5 h-full overflow-auto\",\n !asDialog && \"border-r \" + defaultBorderMixin\n )}>\n\n <div className=\"flex my-2\">\n\n <div className=\"flex-grow mb-4\">\n\n <Field\n name={\"name\"}\n as={DebouncedTextField}\n invisible={true}\n className=\"-ml-1\"\n inputClassName=\"text-2xl font-headers\"\n placeholder={\"Collection name\"}\n size={\"small\"}\n required\n error={Boolean(errors?.name)} />\n\n {owner &&\n <Typography variant={\"body2\"}\n className={\"ml-2\"}\n color={\"secondary\"}>\n Created by {owner.displayName}\n </Typography>}\n </div>\n\n {extraIcon && <div className=\"ml-4\">\n {extraIcon}\n </div>}\n\n <div className=\"ml-1 mt-2 flex flex-row gap-2\">\n <Tooltip title={\"Get the code for this collection\"}\n asChild={true}>\n <IconButton\n variant={\"filled\"}\n disabled={inferringProperties}\n onClick={() => setCodeDialogOpen(true)}>\n <CodeIcon />\n </IconButton>\n </Tooltip>\n {inferPropertiesFromData && <Tooltip title={\"Add new properties based on data\"}\n asChild={true}>\n <IconButton\n variant={\"filled\"}\n disabled={inferringProperties}\n onClick={inferPropertiesFromData}>\n {inferringProperties ? <CircularProgress size={\"small\"} /> : <FindInPageIcon />}\n </IconButton>\n </Tooltip>}\n <Tooltip title={\"Add new property\"}\n asChild={true}>\n <Button\n onClick={() => setNewPropertyDialogOpen(true)}>\n <AddIcon />\n </Button>\n </Tooltip>\n </div>\n </div>\n\n <ErrorBoundary>\n <PropertyTree\n className={\"pl-8\"}\n inferredPropertyKeys={inferredPropertyKeys}\n selectedPropertyKey={selectedPropertyKey ? getFullId(selectedPropertyKey, selectedPropertyNamespace) : undefined}\n properties={values.properties}\n additionalFields={values.additionalFields}\n propertiesOrder={usedPropertiesOrder}\n onPropertyClick={onPropertyClick}\n onPropertyMove={onPropertyMove}\n onPropertyRemove={(isNewCollection || (inferredPropertyKeys && inferredPropertyKeys.length > 0)) ? deleteProperty : undefined}\n collectionEditable={collectionEditable}\n errors={errors} />\n </ErrorBoundary>\n\n <Button className={\"mt-8 w-full\"}\n size={\"large\"}\n onClick={() => setNewPropertyDialogOpen(true)}\n startIcon={<AddIcon />}>\n Add new property\n </Button>\n </div>\n\n {!asDialog &&\n <div className={\"col-span-12 lg:col-span-7 p-4 md:py-8 md:px-4 h-full overflow-auto pb-20 md:pb-20\"}>\n <div\n className=\"sticky top-8 min-h-full w-full flex flex-col justify-center\">\n\n {selectedPropertyFullId &&\n selectedProperty &&\n !isPropertyBuilder(selectedProperty) &&\n <PropertyForm\n inArray={false}\n key={`edit_view_${selectedPropertyIndex}_${generationCounter}`}\n existingProperty={!isNewCollection}\n autoUpdateId={false}\n allowDataInference={!isNewCollection}\n autoOpenTypeSelect={false}\n propertyKey={selectedPropertyKey}\n propertyNamespace={selectedPropertyNamespace}\n property={selectedProperty}\n onPropertyChanged={onPropertyChanged}\n onDelete={deleteProperty}\n onError={onPropertyErrorInternal}\n forceShowErrors={showErrors}\n initialErrors={initialErrors}\n getData={getData}\n propertyConfigs={propertyConfigs}\n collectionEditable={collectionEditable}\n collectionProperties={values.properties as Properties}\n />}\n\n {!selectedProperty &&\n <div className={\"w-full flex flex-col items-center justify-center h-full gap-4\"}>\n <Typography variant={\"label\"} className=\"\">\n {emptyCollection\n ? \"Now you can add your first property\"\n : \"Select a property to edit it\"}\n </Typography>\n <Button\n onClick={() => setNewPropertyDialogOpen(true)}\n >\n <AddIcon />\n Add new property\n </Button>\n </div>}\n\n {selectedProperty && isPropertyBuilder(selectedProperty) &&\n <Typography variant={\"label\"} className=\"flex items-center justify-center\">\n {\"This property is defined as a property builder in code\"}\n </Typography>}\n </div>\n </div>}\n\n {asDialog && <PropertyFormDialog\n inArray={false}\n open={selectedPropertyIndex !== undefined}\n key={`edit_view_${selectedPropertyIndex}_${generationCounter}`}\n autoUpdateId={!selectedProperty}\n allowDataInference={!isNewCollection}\n existingProperty={true}\n autoOpenTypeSelect={false}\n propertyKey={selectedPropertyKey}\n propertyNamespace={selectedPropertyNamespace}\n property={selectedProperty}\n onPropertyChanged={onPropertyChanged}\n onDelete={deleteProperty}\n onError={onPropertyErrorInternal}\n forceShowErrors={showErrors}\n initialErrors={initialErrors}\n getData={getData}\n propertyConfigs={propertyConfigs}\n collectionEditable={collectionEditable}\n collectionProperties={values.properties as Properties}\n onCancel={closePropertyDialog}\n onOkClicked={asDialog\n ? closePropertyDialog\n : undefined\n } />}\n\n </div>);\n\n return (<>\n\n {body}\n\n {/* This is the dialog used for new properties*/}\n <PropertyFormDialog\n inArray={false}\n existingProperty={false}\n autoOpenTypeSelect={true}\n autoUpdateId={true}\n forceShowErrors={showErrors}\n open={newPropertyDialogOpen}\n onCancel={() => setNewPropertyDialogOpen(false)}\n onPropertyChanged={onPropertyCreated}\n getData={getData}\n allowDataInference={!isNewCollection}\n propertyConfigs={propertyConfigs}\n collectionEditable={collectionEditable}\n collectionProperties={values.properties as Properties}\n existingPropertyKeys={values.propertiesOrder as string[]} />\n\n <ErrorBoundary>\n <GetCodeDialog\n collection={values}\n open={codeDialogOpen}\n onOpenChange={setCodeDialogOpen} />\n </ErrorBoundary>\n </>\n );\n}\n","import React from \"react\";\nimport { Button, Dialog, DialogActions, DialogContent, DialogTitle, Typography } from \"@firecms/ui\";\n\nexport interface UnsavedChangesDialogProps {\n open: boolean;\n body?: React.ReactNode;\n title?: string;\n handleOk: () => void;\n handleCancel: () => void;\n}\n\nexport function UnsavedChangesDialog({\n open,\n handleOk,\n handleCancel,\n body,\n title\n }: UnsavedChangesDialogProps) {\n\n return (\n <Dialog\n open={open}\n onOpenChange={(open) => open ? handleCancel() : handleOk()}\n aria-labelledby=\"alert-dialog-title\"\n aria-describedby=\"alert-dialog-description\"\n >\n\n <DialogTitle>{title ?? \"Unsaved changes\"}</DialogTitle>\n <DialogContent className={\"mt-4\"}>\n {body && <Typography>\n {body}\n </Typography>}\n <Typography>\n Are you sure?\n </Typography>\n\n </DialogContent>\n\n <DialogActions>\n <Button variant=\"text\"\n onClick={handleCancel} autoFocus> Cancel </Button>\n <Button\n onClick={handleOk}> Ok </Button>\n </DialogActions>\n </Dialog>\n );\n}\n","import { useCustomizationController } from \"@firecms/core\";\nimport { Button, Dialog, DialogActions, DialogContent, DialogTitle, Typography } from \"@firecms/ui\";\nimport React from \"react\";\n\nexport function EntityCustomViewsSelectDialog({\n open,\n onClose\n }: { open: boolean, onClose: (selectedViewKey?: string) => void }) {\n const {\n entityViews,\n } = useCustomizationController();\n\n return <Dialog\n maxWidth={\"md\"}\n open={open}>\n <DialogTitle>Select custom view</DialogTitle>\n <DialogContent className={\"flex flex-col gap-4\"}>\n {entityViews?.map((view) => {\n return <Button\n key={view.key}\n onClick={() => onClose(view.key)}\n fullWidth\n variant={\"text\"}\n >\n {view.name} ({view.key})\n </Button>;\n })}\n {(entityViews ?? []).length === 0 &&\n <Typography variant={\"body2\"}>\n No custom views defined. Define your custom views in the customization settings, before using this\n dialog.\n </Typography>\n }\n </DialogContent>\n <DialogActions>\n <Button onClick={() => onClose()}>Cancel</Button>\n </DialogActions>\n </Dialog>\n}\n","import React from \"react\";\nimport {\n ConfirmationDialog,\n EntityCollection,\n EntityCustomView,\n resolveEntityView,\n useCustomizationController,\n User\n} from \"@firecms/core\";\nimport {\n AddIcon,\n Alert,\n Button,\n Container,\n DeleteIcon,\n IconButton,\n Paper,\n Table,\n TableBody,\n TableCell,\n TableRow,\n Tooltip,\n Typography,\n} from \"@firecms/ui\";\nimport { CollectionEditorDialog } from \"./CollectionEditorDialog\";\nimport { CollectionsConfigController } from \"../../types/config_controller\";\nimport { PersistedCollection } from \"../../types/persisted_collection\";\nimport { CollectionInference } from \"../../types/collection_inference\";\nimport { EntityCustomViewsSelectDialog } from \"./EntityCustomViewsSelectDialog\";\nimport { useFormex } from \"@firecms/formex\";\n\nexport function SubcollectionsEditTab({\n collection,\n parentCollection,\n configController,\n collectionInference,\n getUser,\n parentCollectionIds,\n embedded = false\n}: {\n collection: PersistedCollection,\n parentCollection?: EntityCollection,\n configController: CollectionsConfigController;\n collectionInference?: CollectionInference;\n getUser?: (uid: string) => User | null;\n parentCollectionIds?: string[];\n embedded?: boolean;\n}) {\n\n const { entityViews: contextEntityViews } = useCustomizationController();\n\n const [subcollectionToDelete, setSubcollectionToDelete] = React.useState<string | undefined>();\n const [addEntityViewDialogOpen, setAddEntityViewDialogOpen] = React.useState<boolean>(false);\n const [viewToDelete, setViewToDelete] = React.useState<string | undefined>();\n\n const [currentDialog, setCurrentDialog] = React.useState<{\n isNewCollection: boolean,\n editedCollectionId?: string,\n }>();\n\n const {\n values,\n setFieldValue,\n } = useFormex<EntityCollection>();\n\n const [subcollections, setSubcollections] = React.useState<EntityCollection[]>(collection.subcollections ?? []);\n const resolvedEntityViews = values.entityViews?.filter(e => typeof e === \"string\")\n .map(e => resolveEntityView(e, contextEntityViews))\n .filter(Boolean) as EntityCustomView[] ?? [];\n const hardCodedEntityViews = collection.entityViews?.filter(e => typeof e !== \"string\") as EntityCustomView[] ?? [];\n const totalEntityViews = resolvedEntityViews.length + hardCodedEntityViews.length;\n\n const content = (\n <div className={\"flex flex-col gap-16\"}>\n\n <div className={\"flex-grow flex flex-col gap-4 items-start\"}>\n <Typography variant={\"h6\"}>\n Subcollections of {values.name}\n </Typography>\n\n <Paper className={\"flex flex-col gap-4 p-2 w-full\"}>\n {subcollections && subcollections.length > 0 && <Table>\n <TableBody>\n {subcollections.map((subcollection) => (\n <TableRow key={subcollection.path}\n onClick={() => setCurrentDialog({\n isNewCollection: false,\n editedCollectionId: subcollection.id\n })}>\n <TableCell\n align=\"left\">\n <Typography variant={\"subtitle2\"} className={\"flex-grow\"}>\n {subcollection.name}\n </Typography>\n </TableCell>\n <TableCell\n align=\"right\">\n <Tooltip title={\"Remove\"}\n asChild={true}>\n <IconButton size=\"small\"\n onClick={(e) => {\n e.preventDefault();\n e.stopPropagation();\n setSubcollectionToDelete(subcollection.id);\n }}\n color=\"inherit\">\n <DeleteIcon size={\"small\"} />\n </IconButton>\n </Tooltip>\n </TableCell>\n </TableRow>\n ))}\n </TableBody>\n </Table>}\n\n <Button\n onClick={() => {\n setCurrentDialog({\n isNewCollection: true\n });\n }}\n startIcon={<AddIcon />}>\n Add subcollection\n </Button>\n\n </Paper>\n\n </div>\n\n <div className={\"flex-grow flex flex-col gap-4 items-start\"}>\n <Typography variant={\"h6\"}>\n Custom views\n </Typography>\n\n {totalEntityViews === 0 &&\n <Alert action={<Button variant=\"text\"\n size={\"small\"}\n href={\"https://firecms.co/docs/cloud/quickstart\"}\n component={\"a\"}\n rel=\"noopener noreferrer\"\n target=\"_blank\">More info</Button>}>\n Define your own custom views by uploading them with the CLI.\n </Alert>\n }\n\n {<>\n <Paper className={\"flex flex-col gap-4 p-2 w-full\"}>\n <Table>\n <TableBody>\n {resolvedEntityViews.map((view) => (\n <TableRow key={view.key}>\n <TableCell\n align=\"left\">\n <Typography variant={\"subtitle2\"} className={\"flex-grow\"}>\n {view.name}\n </Typography>\n </TableCell>\n <TableCell\n align=\"right\">\n <Tooltip title={\"Remove\"}\n asChild={true}>\n <IconButton size=\"small\"\n onClick={(e) => {\n e.preventDefault();\n e.stopPropagation();\n setViewToDelete(view.key);\n }}\n color=\"inherit\">\n <DeleteIcon size={\"small\"} />\n </IconButton>\n </Tooltip>\n </TableCell>\n </TableRow>\n ))}\n {hardCodedEntityViews.map((view) => (\n <TableRow key={view.key}>\n <TableCell\n align=\"left\">\n <Typography variant={\"subtitle2\"} className={\"flex-grow\"}>\n {view.name}\n </Typography>\n <Typography variant={\"caption\"} className={\"flex-grow\"}>\n This view is defined in code with\n key <code>{view.key}</code>\n </Typography>\n </TableCell>\n </TableRow>\n ))}\n </TableBody>\n </Table>\n\n <Button\n onClick={() => {\n setAddEntityViewDialogOpen(true);\n }}\n startIcon={<AddIcon />}>\n Add custom entity view\n </Button>\n </Paper>\n\n </>}\n\n\n </div>\n\n </div>\n );\n\n return (\n <>\n {embedded ? (\n content\n ) : (\n <div className={\"overflow-auto my-auto\"}>\n <Container maxWidth={\"2xl\"} className={\"flex flex-col gap-4 p-8 m-auto\"}>\n {content}\n </Container>\n <div style={{ height: \"52px\" }} />\n </div>\n )}\n\n {subcollectionToDelete &&\n <ConfirmationDialog open={Boolean(subcollectionToDelete)}\n onAccept={() => {\n const props = {\n id: subcollectionToDelete,\n parentCollectionIds: [...(parentCollectionIds ?? []), collection.id]\n };\n console.debug(\"Deleting subcollection\", props)\n configController.deleteCollection(props).then(() => {\n setSubcollectionToDelete(undefined);\n setSubcollections(subcollections?.filter(e => e.id !== subcollectionToDelete))\n });\n }}\n onCancel={() => setSubcollectionToDelete(undefined)}\n title={<>Delete this subcollection?</>}\n body={<> This will <b>not\n delete any data</b>, only\n the collection in the CMS</>} />}\n {viewToDelete &&\n <ConfirmationDialog open={Boolean(viewToDelete)}\n onAccept={() => {\n setFieldValue(\"entityViews\", values.entityViews?.filter(e => e !== viewToDelete));\n setViewToDelete(undefined);\n }}\n onCancel={() => setViewToDelete(undefined)}\n title={<>Remove this view?</>}\n body={<>This will <b>not\n delete any data</b>, only\n the view in the CMS</>} />}\n\n <CollectionEditorDialog\n open={Boolean(currentDialog)}\n configController={configController}\n parentCollection={collection}\n collectionInference={collectionInference}\n parentCollectionIds={[...parentCollectionIds ?? [], values.id]}\n isNewCollection={false}\n {...currentDialog}\n getUser={getUser}\n handleClose={(updatedCollection) => {\n if (updatedCollection && !subcollections.map(e => e.id).includes(updatedCollection.id)) {\n setSubcollections([...subcollections, updatedCollection]);\n }\n setCurrentDialog(undefined);\n }} />\n\n <EntityCustomViewsSelectDialog\n open={addEntityViewDialogOpen}\n onClose={(selectedViewKey) => {\n if (selectedViewKey) {\n setFieldValue(\"entityViews\", [...(values.entityViews ?? []), selectedViewKey]);\n }\n setAddEntityViewDialogOpen(false);\n }} />\n </>\n );\n}\n","import { useCustomizationController } from \"@firecms/core\";\nimport { Button, Dialog, DialogActions, DialogContent, DialogTitle, Typography } from \"@firecms/ui\";\nimport React from \"react\";\n\nexport function EntityActionsSelectDialog({\n open,\n onClose\n }: { open: boolean, onClose: (selectedActionKey?: string) => void }) {\n const {\n entityActions\n } = useCustomizationController();\n\n return <Dialog\n maxWidth={\"md\"}\n open={open}>\n <DialogTitle>Select custom action</DialogTitle>\n <DialogContent className={\"flex flex-col gap-4\"}>\n {entityActions?.map((action) => {\n return <Button\n key={action.key}\n onClick={() => onClose(action.key)}\n fullWidth\n variant={\"text\"}\n >\n {action.name} ({action.key})\n </Button>;\n })}\n {(entityActions ?? []).length === 0 &&\n <Typography variant={\"body2\"}>\n No custom actions defined. Define your custom actions in the customization settings, before using\n this\n dialog.\n </Typography>\n }\n </DialogContent>\n <DialogActions>\n <Button onClick={() => onClose()}>Cancel</Button>\n </DialogActions>\n </Dialog>\n}\n","import React from \"react\";\nimport {\n ConfirmationDialog,\n EntityAction,\n EntityCollection,\n resolveEntityAction,\n useCustomizationController\n} from \"@firecms/core\";\nimport {\n AddIcon,\n Alert,\n Button,\n Container,\n DeleteIcon,\n IconButton,\n Paper,\n Table,\n TableBody,\n TableCell,\n TableRow,\n Tooltip,\n Typography,\n} from \"@firecms/ui\";\nimport { PersistedCollection } from \"../../types/persisted_collection\";\nimport { useFormex } from \"@firecms/formex\";\nimport { EntityActionsSelectDialog } from \"./EntityActionsSelectDialog\";\n\nexport function EntityActionsEditTab({\n collection,\n embedded = false\n}: {\n collection: PersistedCollection,\n embedded?: boolean;\n}) {\n\n const { entityActions: contextEntityActions } = useCustomizationController();\n\n const [addEntityActionDialogOpen, setAddEntityActionDialogOpen] = React.useState<boolean>(false);\n const [actionToDelete, setActionToDelete] = React.useState<string | undefined>();\n\n const {\n values,\n setFieldValue\n } = useFormex<EntityCollection>();\n\n const resolvedEntityActions = values.entityActions?.filter((e): e is string => typeof e === \"string\")\n .map(e => resolveEntityAction(e, contextEntityActions))\n .filter(Boolean) as EntityAction<any>[] ?? [];\n const hardCodedEntityActions = collection.entityActions?.filter((e): e is EntityAction<any> => typeof e !== \"string\") ?? [];\n const totalEntityActions = resolvedEntityActions.length + hardCodedEntityActions.length;\n\n const content = (\n <div className={\"flex flex-col gap-16\"}>\n <div className={\"flex-grow flex flex-col gap-4 items-start\"}>\n <Typography variant={\"h6\"}>\n Custom actions\n </Typography>\n\n {totalEntityActions === 0 &&\n <Alert action={<Button variant=\"text\"\n size={\"small\"}\n href={\"https://firecms.co/docs/custom_actions\"}\n component={\"a\"}\n rel=\"noopener noreferrer\"\n target=\"_blank\">More info</Button>}>\n Define your own custom actions by uploading them with the CLI.\n </Alert>\n }\n\n {<>\n <Paper className={\"flex flex-col gap-4 p-2 w-full\"}>\n <Table>\n <TableBody>\n {resolvedEntityActions.map((action) => (\n <TableRow key={action.key}>\n <TableCell\n align=\"left\">\n <Typography variant={\"subtitle2\"} className={\"flex-grow\"}>\n {action.name}\n </Typography>\n </TableCell>\n <TableCell\n align=\"right\">\n <Tooltip title={\"Remove\"}\n asChild={true}>\n <IconButton size=\"small\"\n onClick={(e) => {\n e.preventDefault();\n e.stopPropagation();\n setActionToDelete(action.key);\n }}\n color=\"inherit\">\n <DeleteIcon size={\"small\"} />\n </IconButton>\n </Tooltip>\n </TableCell>\n </TableRow>\n ))}\n {hardCodedEntityActions.map((action) => (\n <TableRow key={action.key}>\n <TableCell\n align=\"left\">\n <Typography variant={\"subtitle2\"} className={\"flex-grow\"}>\n {action.name}\n </Typography>\n <Typography variant={\"caption\"} className={\"flex-grow\"}>\n This action is defined in code with\n key <code>{action.key}</code>\n </Typography>\n </TableCell>\n </TableRow>\n ))}\n </TableBody>\n </Table>\n\n <Button\n onClick={() => {\n setAddEntityActionDialogOpen(true);\n }}\n startIcon={<AddIcon />}>\n Add custom entity action\n </Button>\n </Paper>\n\n </>}\n\n\n </div>\n\n </div>\n );\n\n return (\n <>\n {embedded ? (\n content\n ) : (\n <div className={\"overflow-auto my-auto\"}>\n <Container maxWidth={\"2xl\"} className={\"flex flex-col gap-4 p-8 m-auto\"}>\n {content}\n </Container>\n <div style={{ height: \"52px\" }} />\n </div>\n )}\n\n {actionToDelete &&\n <ConfirmationDialog open={Boolean(actionToDelete)}\n onAccept={() => {\n setFieldValue(\"entityActions\", values.entityActions?.filter(e => e !== actionToDelete));\n setActionToDelete(undefined);\n }}\n onCancel={() => setActionToDelete(undefined)}\n title={<>Remove this action?</>}\n body={<>This will <b>not\n delete any data</b>, only\n the action in the CMS</>} />}\n\n <EntityActionsSelectDialog\n open={addEntityActionDialogOpen}\n onClose={(selectedActionKey) => {\n if (selectedActionKey) {\n console.log(\"Selected action key:\", selectedActionKey);\n const value = [...(values.entityActions ?? []), selectedActionKey]\n // only actions that are defined in the registry\n .filter((e): e is string => typeof e === \"string\" && (contextEntityActions ?? []).some(action => action.key === e));\n ;\n setFieldValue(\"entityActions\", value);\n }\n setAddEntityActionDialogOpen(false);\n }} />\n </>\n );\n}\n","import React from \"react\";\nimport {\n EntityCollection,\n User\n} from \"@firecms/core\";\nimport {\n Button,\n cls,\n Container,\n defaultBorderMixin,\n Typography\n} from \"@firecms/ui\";\n\nimport { useFormex } from \"@firecms/formex\";\nimport { CollectionsConfigController } from \"../../types/config_controller\";\nimport { CollectionInference } from \"../../types/collection_inference\";\nimport { SubcollectionsEditTab } from \"./SubcollectionsEditTab\";\nimport { EntityActionsEditTab } from \"./EntityActionsEditTab\";\nimport { PersistedCollection } from \"../../types/persisted_collection\";\n\nexport function ExtendSettingsForm({\n collection,\n parentCollection,\n configController,\n collectionInference,\n getUser,\n parentCollectionIds,\n isMergedCollection,\n onResetToCode\n}: {\n collection: PersistedCollection;\n parentCollection?: EntityCollection;\n configController: CollectionsConfigController;\n collectionInference?: CollectionInference;\n getUser?: (uid: string) => User | null;\n parentCollectionIds?: string[];\n isMergedCollection?: boolean;\n onResetToCode?: () => void;\n}) {\n\n const {\n values,\n setFieldValue,\n submitCount\n } = useFormex<EntityCollection>();\n\n return (\n <div className={\"overflow-auto my-auto\"}>\n <Container maxWidth={\"4xl\"} className={\"flex flex-col gap-8 p-8 m-auto\"}>\n\n <div>\n <Typography variant={\"h5\"} className={\"flex-grow\"}>\n Extend\n </Typography>\n <Typography variant={\"body2\"} color={\"secondary\"}>\n Add subcollections, custom views, and entity actions to this collection.\n </Typography>\n </div>\n\n {/* Subcollections Section */}\n <SubcollectionsEditTab\n collection={collection}\n parentCollection={parentCollection}\n configController={configController}\n collectionInference={collectionInference}\n getUser={getUser}\n parentCollectionIds={parentCollectionIds}\n embedded={true}\n />\n\n {/* Entity Actions Section */}\n <EntityActionsEditTab collection={collection} embedded={true} />\n\n {/* Reset to code (for merged collections) */}\n {isMergedCollection && onResetToCode && (\n <div className={cls(\"flex flex-col gap-4 mt-8 border-t pt-8\", defaultBorderMixin)}>\n <Typography variant={\"body2\"} color={\"secondary\"}>\n This collection is defined in code.\n The changes done in this editor will override the properties defined in code.\n You can delete the overridden values to revert to the state defined in code.\n </Typography>\n <Button color={\"neutral\"} onClick={onResetToCode}>\n Reset to code\n </Button>\n </div>\n )}\n\n <div style={{ height: \"52px\" }} />\n\n </Container>\n </div>\n );\n}\n","import { EntityCollection } from \"@firecms/core\";\n\n/**\n * Valid dataType values for properties\n */\nconst VALID_DATA_TYPES = [\n \"string\",\n \"number\",\n \"boolean\",\n \"date\",\n \"geopoint\",\n \"reference\",\n \"array\",\n \"map\"\n] as const;\n\ntype DataType = typeof VALID_DATA_TYPES[number];\n\n/**\n * Validation error with path and message\n */\nexport interface CollectionValidationError {\n path: string;\n message: string;\n}\n\n/**\n * Result of collection JSON validation\n */\nexport interface CollectionValidationResult {\n valid: boolean;\n errors: CollectionValidationError[];\n collection?: EntityCollection;\n}\n\n/**\n * Validates a property object recursively\n */\nfunction validateProperty(\n property: any,\n path: string,\n errors: CollectionValidationError[]\n): void {\n if (typeof property !== \"object\" || property === null) {\n errors.push({\n path,\n message: \"Property must be an object\"\n });\n return;\n }\n\n // Check dataType\n if (!property.dataType) {\n errors.push({\n path: `${path}.dataType`,\n message: \"Required field is missing\"\n });\n } else if (!VALID_DATA_TYPES.includes(property.dataType)) {\n errors.push({\n path: `${path}.dataType`,\n message: `Invalid value \"${property.dataType}\", expected one of: ${VALID_DATA_TYPES.join(\", \")}`\n });\n }\n\n // Validate name if present\n if (property.name !== undefined && typeof property.name !== \"string\") {\n errors.push({\n path: `${path}.name`,\n message: \"Must be a string\"\n });\n }\n\n // Validate array \"of\" property\n if (property.dataType === \"array\") {\n if (property.of) {\n if (Array.isArray(property.of)) {\n property.of.forEach((ofProp: any, index: number) => {\n validateProperty(ofProp, `${path}.of[${index}]`, errors);\n });\n } else {\n validateProperty(property.of, `${path}.of`, errors);\n }\n }\n // oneOf validation\n if (property.oneOf) {\n if (typeof property.oneOf !== \"object\") {\n errors.push({\n path: `${path}.oneOf`,\n message: \"Must be an object\"\n });\n } else if (property.oneOf.properties) {\n validateProperties(property.oneOf.properties, `${path}.oneOf.properties`, errors);\n }\n }\n }\n\n // Validate map properties\n if (property.dataType === \"map\" && property.properties) {\n validateProperties(property.properties, `${path}.properties`, errors);\n }\n\n // Validate reference path\n if (property.dataType === \"reference\") {\n if (property.path !== undefined && typeof property.path !== \"string\") {\n errors.push({\n path: `${path}.path`,\n message: \"Must be a string\"\n });\n }\n }\n\n // Validate storage config for string\n if (property.dataType === \"string\" && property.storage) {\n if (typeof property.storage !== \"object\") {\n errors.push({\n path: `${path}.storage`,\n message: \"Must be an object\"\n });\n }\n }\n\n // Validate enumValues if present\n if (property.enumValues !== undefined) {\n if (!Array.isArray(property.enumValues) && typeof property.enumValues !== \"object\") {\n errors.push({\n path: `${path}.enumValues`,\n message: \"Must be an array or object\"\n });\n }\n }\n}\n\n/**\n * Validates a properties object (collection of property definitions)\n */\nfunction validateProperties(\n properties: any,\n path: string,\n errors: CollectionValidationError[]\n): void {\n if (typeof properties !== \"object\" || properties === null) {\n errors.push({\n path,\n message: \"Must be an object\"\n });\n return;\n }\n\n for (const [key, property] of Object.entries(properties)) {\n validateProperty(property, `${path}.${key}`, errors);\n }\n}\n\n/**\n * Validates optional collection fields\n */\nfunction validateOptionalFields(\n collection: any,\n errors: CollectionValidationError[]\n): void {\n // String fields\n const stringFields = [\n \"singularName\",\n \"description\",\n \"group\",\n \"databaseId\"\n ];\n for (const field of stringFields) {\n if (collection[field] !== undefined && typeof collection[field] !== \"string\") {\n errors.push({\n path: field,\n message: \"Must be a string\"\n });\n }\n }\n\n // Boolean fields\n const booleanFields = [\n \"collectionGroup\",\n \"textSearchEnabled\",\n \"selectionEnabled\",\n \"inlineEditing\",\n \"hideFromNavigation\",\n \"hideIdFromForm\",\n \"hideIdFromCollection\",\n \"formAutoSave\",\n \"editable\",\n \"alwaysApplyDefaultValues\",\n \"includeJsonView\",\n \"history\"\n ];\n for (const field of booleanFields) {\n if (collection[field] !== undefined && typeof collection[field] !== \"boolean\") {\n errors.push({\n path: field,\n message: \"Must be a boolean\"\n });\n }\n }\n\n // Icon can be string or object (React node)\n if (collection.icon !== undefined &&\n typeof collection.icon !== \"string\" &&\n typeof collection.icon !== \"object\") {\n errors.push({\n path: \"icon\",\n message: \"Must be a string (icon key) or object\"\n });\n }\n\n // propertiesOrder must be array of strings\n if (collection.propertiesOrder !== undefined) {\n if (!Array.isArray(collection.propertiesOrder)) {\n errors.push({\n path: \"propertiesOrder\",\n message: \"Must be an array of strings\"\n });\n } else if (!collection.propertiesOrder.every((item: any) => typeof item === \"string\")) {\n errors.push({\n path: \"propertiesOrder\",\n message: \"All items must be strings\"\n });\n }\n }\n\n // subcollections must be array\n if (collection.subcollections !== undefined) {\n if (!Array.isArray(collection.subcollections)) {\n errors.push({\n path: \"subcollections\",\n message: \"Must be an array\"\n });\n } else {\n collection.subcollections.forEach((sub: any, index: number) => {\n const subErrors: CollectionValidationError[] = [];\n validateCollectionObject(sub, subErrors);\n subErrors.forEach(err => {\n errors.push({\n path: `subcollections[${index}].${err.path}`,\n message: err.message\n });\n });\n });\n }\n }\n\n // defaultViewMode validation\n const validViewModes = [\"table\", \"cards\", \"kanban\"];\n if (collection.defaultViewMode !== undefined) {\n if (!validViewModes.includes(collection.defaultViewMode)) {\n errors.push({\n path: \"defaultViewMode\",\n message: `Invalid value, expected one of: ${validViewModes.join(\", \")}`\n });\n }\n }\n\n // kanban config validation\n if (collection.kanban !== undefined) {\n if (typeof collection.kanban !== \"object\" || collection.kanban === null) {\n errors.push({\n path: \"kanban\",\n message: \"Must be an object\"\n });\n } else if (collection.kanban.columnProperty !== undefined &&\n typeof collection.kanban.columnProperty !== \"string\") {\n errors.push({\n path: \"kanban.columnProperty\",\n message: \"Must be a string\"\n });\n }\n }\n}\n\n/**\n * Validates a collection object\n */\nfunction validateCollectionObject(\n collection: any,\n errors: CollectionValidationError[]\n): void {\n // Required fields\n if (!collection.id) {\n errors.push({\n path: \"id\",\n message: \"Required field is missing\"\n });\n } else if (typeof collection.id !== \"string\") {\n errors.push({\n path: \"id\",\n message: \"Must be a string\"\n });\n }\n\n if (!collection.name) {\n errors.push({\n path: \"name\",\n message: \"Required field is missing\"\n });\n } else if (typeof collection.name !== \"string\") {\n errors.push({\n path: \"name\",\n message: \"Must be a string\"\n });\n }\n\n if (!collection.path) {\n errors.push({\n path: \"path\",\n message: \"Required field is missing\"\n });\n } else if (typeof collection.path !== \"string\") {\n errors.push({\n path: \"path\",\n message: \"Must be a string\"\n });\n }\n\n // Properties validation\n if (collection.properties !== undefined) {\n validateProperties(collection.properties, \"properties\", errors);\n }\n\n // Optional fields\n validateOptionalFields(collection, errors);\n}\n\n/**\n * Validates a JSON string representing a collection configuration.\n * Returns detailed validation errors if the JSON is invalid or doesn't match\n * the expected collection schema.\n */\nexport function validateCollectionJson(jsonString: string): CollectionValidationResult {\n const errors: CollectionValidationError[] = [];\n\n // Try to parse JSON\n let parsed: any;\n try {\n parsed = JSON.parse(jsonString);\n } catch (e: any) {\n // Try to extract line/column info from the error\n const match = e.message.match(/position (\\d+)/);\n let message = \"Invalid JSON syntax\";\n if (match) {\n const position = parseInt(match[1], 10);\n const lines = jsonString.substring(0, position).split(\"\\n\");\n const line = lines.length;\n const column = lines[lines.length - 1].length + 1;\n message = `Invalid JSON syntax at line ${line}, column ${column}: ${e.message}`;\n } else {\n message = `Invalid JSON syntax: ${e.message}`;\n }\n return {\n valid: false,\n errors: [{\n path: \"\",\n message\n }]\n };\n }\n\n // Validate collection structure\n if (typeof parsed !== \"object\" || parsed === null || Array.isArray(parsed)) {\n return {\n valid: false,\n errors: [{\n path: \"\",\n message: \"Collection must be an object\"\n }]\n };\n }\n\n validateCollectionObject(parsed, errors);\n\n return {\n valid: errors.length === 0,\n errors,\n collection: errors.length === 0 ? parsed as EntityCollection : undefined\n };\n}\n","import React, { useCallback, useState } from \"react\";\nimport {\n Button,\n cls,\n CodeIcon,\n Dialog,\n DialogActions,\n DialogContent,\n DialogTitle,\n Typography\n} from \"@firecms/ui\";\nimport { EntityCollection } from \"@firecms/core\";\nimport { validateCollectionJson, CollectionValidationError } from \"../../utils/validateCollectionJson\";\n\nconst EXAMPLE_JSON = `{\n \"id\": \"products\",\n \"name\": \"Products\",\n \"path\": \"products\",\n \"icon\": \"shopping_cart\",\n \"properties\": {\n \"name\": {\n \"dataType\": \"string\",\n \"name\": \"Name\",\n \"validation\": { \"required\": true }\n },\n \"price\": {\n \"dataType\": \"number\",\n \"name\": \"Price\"\n },\n \"available\": {\n \"dataType\": \"boolean\",\n \"name\": \"Available\"\n }\n }\n}`;\n\nexport interface CollectionJsonImportDialogProps {\n open: boolean;\n onClose: () => void;\n onImport: (collection: EntityCollection) => void;\n}\n\nexport function CollectionJsonImportDialog({\n open,\n onClose,\n onImport\n}: CollectionJsonImportDialogProps) {\n const [jsonValue, setJsonValue] = useState<string>(\"\");\n const [errors, setErrors] = useState<CollectionValidationError[]>([]);\n const [touched, setTouched] = useState(false);\n\n const handleJsonChange = useCallback((e: React.ChangeEvent<HTMLTextAreaElement>) => {\n const value = e.target.value;\n setJsonValue(value);\n setTouched(true);\n\n if (!value.trim()) {\n setErrors([]);\n return;\n }\n\n const result = validateCollectionJson(value);\n setErrors(result.errors);\n }, []);\n\n const handleImport = useCallback(() => {\n const result = validateCollectionJson(jsonValue);\n if (result.valid && result.collection) {\n onImport(result.collection);\n setJsonValue(\"\");\n setErrors([]);\n setTouched(false);\n onClose();\n }\n }, [jsonValue, onImport, onClose]);\n\n const handleClose = useCallback(() => {\n setJsonValue(\"\");\n setErrors([]);\n setTouched(false);\n onClose();\n }, [onClose]);\n\n const isValid = touched && jsonValue.trim() && errors.length === 0;\n\n return (\n <Dialog\n open={open}\n onOpenChange={(open) => !open && handleClose()}\n maxWidth=\"2xl\"\n >\n <DialogTitle className=\"flex items-center gap-2\">\n <CodeIcon size=\"small\" />\n Import Collection from JSON\n </DialogTitle>\n <DialogContent className=\"flex flex-col gap-4\">\n <Typography variant=\"body2\" color=\"secondary\">\n Paste a JSON object representing your collection configuration.\n The JSON must include <code className=\"bg-surface-200 dark:bg-surface-700 px-1 rounded\">id</code>,\n <code className=\"bg-surface-200 dark:bg-surface-700 px-1 rounded\">name</code>,\n <code className=\"bg-surface-200 dark:bg-surface-700 px-1 rounded\">path</code>, and\n <code className=\"bg-surface-200 dark:bg-surface-700 px-1 rounded\">properties</code>.\n </Typography>\n\n <textarea\n value={jsonValue}\n onChange={handleJsonChange}\n placeholder={EXAMPLE_JSON}\n rows={12}\n className={cls(\n \"w-full p-3 font-mono text-sm rounded-md border resize-none overflow-y-auto\",\n \"bg-surface-50 dark:bg-surface-900\",\n \"focus:outline-none focus:ring-2 focus:ring-primary\",\n \"h-[300px]\",\n errors.length > 0 && touched\n ? \"border-red-500 dark:border-red-400\"\n : \"border-surface-300 dark:border-surface-600\"\n )}\n />\n\n {errors.length > 0 && touched && (\n <div className=\"p-3 bg-red-50 dark:bg-red-900/20 rounded-md border border-red-200 dark:border-red-800\">\n <Typography variant=\"body2\" className=\"font-medium text-red-700 dark:text-red-400 mb-2\">\n Validation errors:\n </Typography>\n <ul className=\"list-disc list-inside space-y-1\">\n {errors.map((error, index) => (\n <li key={index} className=\"text-sm text-red-600 dark:text-red-400\">\n {error.path ? (\n <>\n <code className=\"bg-red-100 dark:bg-red-900/40 px-1 rounded\">\n {error.path}\n </code>\n : {error.message}\n </>\n ) : (\n error.message\n )}\n </li>\n ))}\n </ul>\n </div>\n )}\n\n {isValid && (\n <div className=\"p-3 bg-green-50 dark:bg-green-900/20 rounded-md border border-green-200 dark:border-green-800\">\n <Typography variant=\"body2\" className=\"text-green-700 dark:text-green-400\">\n ✓ JSON is valid and ready to import\n </Typography>\n </div>\n )}\n </DialogContent>\n <DialogActions>\n <Button\n variant=\"text\"\n onClick={handleClose}\n >\n Cancel\n </Button>\n <Button\n variant=\"filled\"\n color=\"primary\"\n onClick={handleImport}\n disabled={!isValid}\n >\n Import Collection\n </Button>\n </DialogActions>\n </Dialog>\n );\n}\n","import { EntityCollection, makePropertiesEditable } from \"@firecms/core\";\n\nexport const productsCollectionTemplate: EntityCollection = {\n id: \"products\",\n path: \"products\",\n name: \"Products\",\n singularName: \"Product\",\n icon: \"shopping_cart\",\n description: \"List of the products currently sold in your shop\",\n properties: makePropertiesEditable({\n name: {\n dataType: \"string\",\n name: \"Name\",\n description: \"Name of this product\",\n validation: {\n required: true\n }\n },\n brand: {\n dataType: \"string\",\n name: \"Brand\",\n validation: {\n required: true\n }\n },\n description: {\n dataType: \"string\",\n name: \"Description\",\n description: \"Description of this product, supports markdown\",\n markdown: true\n },\n main_image: {\n dataType: \"string\",\n name: \"Image\",\n storage: {\n storagePath: \"images\",\n acceptedFiles: [\"image/*\"],\n },\n description: \"Upload field for images\"\n },\n available: {\n dataType: \"boolean\",\n name: \"Available\",\n columnWidth: 100,\n description: \"Is this product available in the website\"\n },\n price: {\n dataType: \"number\",\n name: \"Price\",\n validation: {\n requiredMessage: \"You must set a positive price\",\n min: 0\n }\n },\n images: {\n dataType: \"array\",\n name: \"Images\",\n hideFromCollection: true,\n of: {\n dataType: \"string\",\n storage: {\n storagePath: \"images\",\n acceptedFiles: [\"image/*\"]\n }\n }\n },\n related_products: {\n dataType: \"array\",\n name: \"Related products\",\n description: \"Products related to this one\",\n of: {\n dataType: \"reference\",\n path: \"products\"\n }\n },\n metadata: {\n name: \"Metadata\",\n description: \"This is an example of a map property\",\n dataType: \"map\",\n keyValue: true\n },\n added_on: {\n dataType: \"date\",\n name: \"Added on\",\n autoValue: \"on_create\"\n }\n })\n};\n","import { EntityCollection, makePropertiesEditable } from \"@firecms/core\";\n\nexport const blogCollectionTemplate:EntityCollection = {\n id: \"blog\",\n path: \"blog\",\n name: \"Blog\",\n singularName: \"Blog entry\",\n icon: \"article\",\n description: \"A collection of blog entries\",\n defaultSize: \"l\",\n properties: makePropertiesEditable({\n name: {\n name: \"Name\",\n validation: { required: true },\n dataType: \"string\"\n },\n header_image: {\n name: \"Header image\",\n dataType: \"string\",\n storage: {\n storagePath: \"images\",\n acceptedFiles: [\"image/*\"],\n metadata: {\n cacheControl: \"max-age=1000000\"\n }\n }\n },\n content: {\n name: \"Content\",\n description: \"Content blocks for the blog entry\",\n validation: { required: true },\n dataType: \"array\",\n oneOf: {\n typeField: \"type\",\n valueField: \"value\",\n properties: {\n text: {\n dataType: \"string\",\n name: \"Text\",\n markdown: true\n },\n quote: {\n dataType: \"string\",\n name: \"Quote\",\n multiline: true\n },\n images: {\n name: \"Images\",\n dataType: \"array\",\n of: {\n dataType: \"string\",\n storage: {\n storagePath: \"images\",\n acceptedFiles: [\"image/*\"],\n metadata: {\n cacheControl: \"max-age=1000000\"\n }\n }\n },\n description: \"This fields allows uploading multiple images at once and reordering\"\n },\n products: {\n name: \"Products\",\n dataType: \"array\",\n of: {\n dataType: \"reference\",\n path: \"products\",\n previewProperties: [\"name\", \"main_image\"]\n }\n }\n },\n propertiesOrder: [\"text\", \"quote\", \"images\", \"products\"]\n }\n },\n created_on: {\n name: \"Created on\",\n dataType: \"date\",\n autoValue: \"on_create\"\n },\n status: {\n name: \"Status\",\n validation: { required: true },\n dataType: \"string\",\n enumValues: {\n published: {\n id: \"published\",\n label: \"Published\",\n },\n draft: \"Draft\"\n },\n defaultValue: \"draft\"\n },\n publish_date: {\n name: \"Publish date\",\n dataType: \"date\",\n clearable: true\n },\n reviewed: {\n name: \"Reviewed\",\n dataType: \"boolean\"\n },\n tags: {\n name: \"Tags\",\n description: \"Example of generic array\",\n dataType: \"array\",\n of: {\n dataType: \"string\",\n previewAsTag: true\n }\n }\n })\n};\n","import { EntityCollection, makePropertiesEditable } from \"@firecms/core\";\n\nexport const usersCollectionTemplate: EntityCollection = {\n id: \"users\",\n path: \"users\",\n name: \"Users\",\n singularName: \"User\",\n description: \"Registered users in the app/web\",\n icon: \"person\",\n properties: makePropertiesEditable({\n displayName: {\n name: \"Display name\",\n dataType: \"string\"\n },\n email: {\n name: \"Email\",\n dataType: \"string\",\n email: true\n },\n emailVerified: {\n name: \"Email verified\",\n dataType: \"boolean\"\n },\n phone: {\n name: \"Phone\",\n dataType: \"string\"\n },\n favourite_products: {\n name: \"Favourite products\",\n dataType: \"array\",\n of: {\n dataType: \"reference\",\n path: \"products\"\n }\n },\n photoURL: {\n name: \"Photo URL\",\n dataType: \"string\",\n url: \"image\"\n }\n }),\n};\n","import { EntityCollection } from \"@firecms/core\";\n\nexport const pagesCollectionTemplate: EntityCollection = {\n id: \"pages\",\n path: \"pages\",\n name: \"Pages\",\n singularName: \"Page\",\n icon: \"insert_drive_file\",\n description: \"List of website pages that can be edited here\",\n properties: {\n title: {\n dataType: \"string\",\n name: \"Page Title\",\n validation: { required: true }\n },\n slug: {\n dataType: \"string\",\n name: \"URL Slug\",\n validation: {\n required: true,\n unique: true,\n matches: \"^[a-z0-9]+(?:-[a-z0-9]+)*$\",\n matchesMessage: \"Must be lowercase, alphanumeric, and hyphenated\"\n }\n },\n hero_section: {\n dataType: \"map\",\n name: \"Hero Section\",\n properties: {\n headline: {\n dataType: \"string\",\n name: \"Headline\",\n validation: { required: true }\n },\n subhead: {\n dataType: \"string\",\n name: \"Subheadline\"\n },\n background_image: {\n dataType: \"string\",\n name: \"Background Image\",\n storage: {\n storagePath: \"page_hero/images\",\n acceptedFiles: [\"image/*\"],\n }\n },\n call_to_action: {\n dataType: \"string\",\n name: \"Call to Action\"\n },\n call_to_action_link: {\n dataType: \"string\",\n name: \"CTA Link\",\n url: true\n }\n }\n },\n content: {\n dataType: \"array\",\n name: \"Content\",\n oneOf: {\n properties: {\n section: {\n dataType: \"map\",\n name: \"Section\",\n properties: {\n title: {\n dataType: \"string\",\n name: \"Section Title\",\n validation: { required: true }\n },\n content: {\n dataType: \"string\",\n name: \"Section Content\",\n markdown: true\n },\n image: {\n dataType: \"string\",\n name: \"Section Image\",\n storage: {\n storagePath: \"page_sections/images\",\n acceptedFiles: [\"image/*\"]\n }\n },\n link: {\n dataType: \"string\",\n name: \"Section Link\",\n url: true\n }\n }\n },\n image: {\n dataType: \"string\",\n name: \"Image\",\n storage: {\n storagePath: \"page_sections/images\",\n acceptedFiles: [\"image/*\"]\n }\n },\n slider: {\n dataType: \"array\",\n name: \"Slider\",\n of: {\n dataType: \"map\",\n properties: {\n title: {\n dataType: \"string\",\n name: \"Title\",\n validation: { required: true }\n },\n image: {\n dataType: \"string\",\n storage: {\n storagePath: \"page_sections/images\",\n acceptedFiles: [\"image/*\"]\n }\n }\n }\n }\n },\n }\n }\n },\n sidebar: {\n dataType: \"map\",\n name: \"Sidebar\",\n properties: {\n title: {\n dataType: \"string\",\n name: \"Sidebar Title\",\n validation: { required: false }\n },\n content: {\n dataType: \"string\",\n name: \"Sidebar Content\",\n markdown: true\n }\n }\n },\n seo_metadata: {\n dataType: \"map\",\n name: \"SEO Metadata\",\n properties: {\n meta_title: {\n dataType: \"string\",\n name: \"Meta Title\"\n },\n meta_description: {\n dataType: \"string\",\n name: \"Meta Description\"\n },\n focus_keywords: {\n dataType: \"array\",\n name: \"Focus Keywords\",\n of: {\n dataType: \"string\"\n }\n }\n }\n },\n footer_override: {\n dataType: \"string\",\n name: \"Footer Override\",\n markdown: true\n },\n publish_date: {\n dataType: \"date\",\n name: \"Publish Date\",\n validation: { required: true }\n },\n last_updated: {\n dataType: \"date\",\n name: \"Last Updated\",\n autoValue: \"on_update\"\n },\n is_published: {\n dataType: \"boolean\",\n name: \"Is Published\",\n columnWidth: 100,\n description: \"Should this page be live on the site?\"\n }\n }\n};\n","import { useContext } from \"react\";\nimport { CollectionEditorController } from \"./types/collection_editor_controller\";\nimport { CollectionEditorContext } from \"./ConfigControllerProvider\";\n\n/**\n * Hook to access the collection editor controller.\n * The methods in this controller can be used to open the collection editor dialog.\n */\nexport const useCollectionEditorController = (): CollectionEditorController => useContext(CollectionEditorContext);\n","import { EntityCollection } from \"@firecms/core\";\n\nexport interface GenerateCollectionRequest {\n /** User's natural language description of what they want */\n prompt: string;\n\n /** Other collections in the project (for context/relationships). Limit to 30. */\n existingCollections: Partial<EntityCollection>[];\n\n /** Optional for generate, required for modifications. If provided, modifies this collection */\n existingCollection?: Partial<EntityCollection>;\n}\n\n/** Operation types for modifying a collection */\nexport type CollectionOperationType = \"add\" | \"modify\" | \"delete\";\n\n/** A single operation describing what changed */\nexport interface CollectionOperation {\n op: CollectionOperationType;\n path: string;\n value?: any;\n}\n\n/** Result from collection generation, including optional delta operations */\nexport interface GenerateCollectionResult {\n collection: EntityCollection;\n operations?: CollectionOperation[];\n}\n\n/**\n * Callback type for generating or modifying a collection.\n * The plugin is API-agnostic - consumers implement the actual API call.\n */\nexport type CollectionGenerationCallback = (\n request: GenerateCollectionRequest\n) => Promise<GenerateCollectionResult>;\n\nexport class CollectionGenerationApiError extends Error {\n public code?: string;\n\n constructor(message: string, code?: string) {\n super(message);\n this.code = code;\n this.name = \"CollectionGenerationApiError\";\n }\n}\n\n/**\n * Default endpoint for AI collection generation\n */\nexport const DEFAULT_COLLECTION_GENERATION_ENDPOINT = \"https://api.firecms.co/collections/generate\";\n\n/**\n * Props for building a collection generation callback\n */\nexport interface BuildCollectionGenerationCallbackProps {\n /**\n * Function to get the auth token (e.g., from Firebase Auth)\n * This is typically `authController.getAuthToken` from `@firecms/firebase`\n */\n getAuthToken: () => Promise<string>;\n\n /**\n * Optional custom API endpoint for collection generation.\n * Defaults to the FireCMS SaaS API endpoint.\n */\n apiEndpoint?: string;\n}\n\n/**\n * Build a callback for AI collection generation.\n * This helper allows self-hosted FireCMS users to enable the AI collection\n * generation feature.\n *\n * @example\n * ```typescript\n * import { useCollectionEditorPlugin, buildCollectionGenerationCallback } from \"@firecms/collection_editor\";\n * import { useFirebaseAuthController } from \"@firecms/firebase\";\n *\n * const authController = useFirebaseAuthController({ firebaseApp });\n *\n * const collectionEditorPlugin = useCollectionEditorPlugin({\n * // ... other props\n * generateCollection: buildCollectionGenerationCallback({\n * getAuthToken: authController.getAuthToken\n * })\n * });\n * ```\n */\nexport function buildCollectionGenerationCallback({\n getAuthToken,\n apiEndpoint = DEFAULT_COLLECTION_GENERATION_ENDPOINT\n}: BuildCollectionGenerationCallbackProps): CollectionGenerationCallback {\n return async (request) => {\n const token = await getAuthToken();\n const response = await fetch(apiEndpoint, {\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n Authorization: `Bearer ${token}`\n },\n body: JSON.stringify(request)\n });\n\n if (!response.ok) {\n const errorData = await response.json().catch(() => ({}));\n throw new CollectionGenerationApiError(\n errorData.error || \"Failed to generate collection\",\n errorData.code\n );\n }\n\n const data = await response.json();\n return {\n collection: data.data.collection,\n operations: data.data.operations\n };\n };\n}\n","import React, { useState } from \"react\";\nimport { EntityCollection, useNavigationController, useSnackbarController, AIIcon } from \"@firecms/core\";\nimport {\n Button,\n CircularProgress,\n IconButton,\n Menu,\n SendIcon,\n TextField,\n Typography\n} from \"@firecms/ui\";\nimport {\n CollectionGenerationCallback,\n CollectionGenerationApiError,\n CollectionOperation\n} from \"../../api/generateCollectionApi\";\nimport { PersistedCollection } from \"../../types/persisted_collection\";\n\nexport interface AICollectionGeneratorPopoverProps {\n /**\n * Current collection being edited (if modifying an existing collection)\n */\n existingCollection?: PersistedCollection;\n\n /**\n * Callback when a collection is generated or modified.\n * Includes the collection and optionally the operations that were applied.\n */\n onGenerated: (collection: EntityCollection, operations?: CollectionOperation[]) => void;\n\n /**\n * Callback function for generating/modifying collections.\n * The plugin is API-agnostic - the consumer provides the implementation.\n */\n generateCollection: CollectionGenerationCallback;\n\n /**\n * Optional custom trigger button. If not provided, a default AI button is used.\n */\n trigger?: React.ReactNode;\n\n /**\n * Size of the button\n */\n size?: \"small\" | \"medium\" | \"large\";\n\n /**\n * Whether to show the label text\n */\n showLabel?: boolean;\n\n /**\n * Optional analytics callback\n */\n onAnalyticsEvent?: (event: string, params?: object) => void;\n}\n\nexport function AICollectionGeneratorPopover({\n existingCollection,\n onGenerated,\n generateCollection,\n trigger,\n size = \"small\",\n showLabel = true,\n onAnalyticsEvent\n}: AICollectionGeneratorPopoverProps) {\n const [menuOpen, setMenuOpen] = useState(false);\n const [prompt, setPrompt] = useState(\"\");\n const [loading, setLoading] = useState(false);\n const [error, setError] = useState<string | null>(null);\n\n const navigation = useNavigationController();\n const snackbarController = useSnackbarController();\n\n const existingCollections = navigation.collections ?? [];\n\n const handleGenerate = async () => {\n if (!prompt.trim()) return;\n\n setLoading(true);\n setError(null);\n\n const mode = existingCollection ? \"modify\" : \"create\";\n onAnalyticsEvent?.(\"ai_collection_generate_start\", { mode });\n\n try {\n const collectionsContext = existingCollections.map(c => ({\n path: c.path,\n id: c.id,\n name: c.name,\n properties: c.properties,\n propertiesOrder: c.propertiesOrder\n }));\n\n const result = await generateCollection({\n prompt: prompt.trim(),\n existingCollections: collectionsContext.slice(0, 30),\n ...(existingCollection && {\n existingCollection: {\n path: existingCollection.path,\n id: existingCollection.id,\n name: existingCollection.name,\n properties: existingCollection.properties,\n propertiesOrder: existingCollection.propertiesOrder\n }\n })\n });\n\n onGenerated(result.collection, result.operations);\n setMenuOpen(false);\n setPrompt(\"\");\n onAnalyticsEvent?.(\"ai_collection_generate_success\", {\n mode,\n operationsCount: result.operations?.length\n });\n snackbarController.open({\n type: \"success\",\n message: existingCollection\n ? \"Collection updated with AI suggestions\"\n : \"Collection generated successfully\"\n });\n } catch (e) {\n console.error(\"Error generating collection:\", e);\n const errorMessage = e instanceof CollectionGenerationApiError\n ? e.message\n : \"Failed to generate collection. Please try again.\";\n setError(errorMessage);\n onAnalyticsEvent?.(\"ai_collection_generate_error\", {\n mode,\n error: errorMessage\n });\n snackbarController.open({\n type: \"error\",\n message: errorMessage\n });\n } finally {\n setLoading(false);\n }\n };\n\n const handleKeyDown = (e: React.KeyboardEvent) => {\n if (e.key === \"Enter\" && !e.shiftKey) {\n e.preventDefault();\n handleGenerate();\n }\n };\n\n const defaultTrigger = showLabel ? (\n <Button\n variant=\"text\"\n size={size}\n disabled={loading}\n startIcon={loading\n ? <CircularProgress size=\"smallest\" />\n : <AIIcon size=\"small\" />\n }\n >\n AI Assist\n </Button>\n ) : (\n <IconButton\n size={size}\n disabled={loading}\n aria-label=\"AI Assist\"\n >\n {loading\n ? <CircularProgress size=\"smallest\" />\n : <AIIcon size=\"small\" />\n }\n </IconButton>\n );\n\n return (\n <Menu\n open={menuOpen}\n onOpenChange={(open) => {\n setMenuOpen(open);\n if (!open) {\n setError(null);\n }\n }}\n trigger={trigger ?? defaultTrigger}\n >\n <div className=\"p-4 flex flex-col gap-3 min-w-[360px] max-w-[480px]\">\n <div className=\"flex items-center gap-2\">\n <AIIcon size=\"small\" />\n <Typography variant=\"subtitle2\">\n {existingCollection ? \"Modify Collection with AI\" : \"Generate Collection with AI\"}\n </Typography>\n </div>\n\n <Typography variant=\"caption\" color=\"secondary\">\n {existingCollection\n ? \"Describe the changes you want to make to this collection.\"\n : \"Describe the collection you want to create.\"\n }\n </Typography>\n\n <TextField\n size=\"small\"\n multiline\n autoFocus\n className=\"w-full text-text-primary dark:text-text-primary-dark\"\n value={prompt}\n onChange={(e) => setPrompt(e.target.value)}\n onKeyDown={handleKeyDown}\n placeholder={existingCollection\n ? \"e.g., Add a thumbnail image field with storage, make price required...\"\n : \"e.g., Create a products collection with name, price, description, and category...\"\n }\n disabled={loading}\n />\n\n {error && (\n <Typography variant=\"caption\" className=\"text-red-500\">\n {error}\n </Typography>\n )}\n\n <div className=\"flex justify-end gap-2\">\n <Button\n variant=\"text\"\n size=\"small\"\n onClick={() => setMenuOpen(false)}\n disabled={loading}\n >\n Cancel\n </Button>\n <Button\n variant=\"filled\"\n size=\"small\"\n onClick={handleGenerate}\n disabled={!prompt.trim() || loading}\n startIcon={loading ? <CircularProgress size=\"smallest\" /> : undefined}\n >\n {loading ? \"Generating...\" : \"Generate\"}\n </Button>\n </div>\n </div>\n </Menu>\n );\n}\n","import React, { useState } from \"react\";\nimport { AIIcon, EntityCollection, prettifyIdentifier, } from \"@firecms/core\";\nimport { Button, Card, Chip, cls, CodeIcon, Container, Icon, Tooltip, Typography, } from \"@firecms/ui\";\nimport { CollectionJsonImportDialog } from \"./CollectionJsonImportDialog\";\n\nimport { productsCollectionTemplate } from \"./templates/products_template\";\nimport { blogCollectionTemplate } from \"./templates/blog_template\";\nimport { usersCollectionTemplate } from \"./templates/users_template\";\nimport { ImportFileUpload } from \"@firecms/data_import\";\nimport { pagesCollectionTemplate } from \"./templates/pages_template\";\nimport { useFormex } from \"@firecms/formex\";\nimport { useCollectionEditorController } from \"../../useCollectionEditorController\";\nimport { AICollectionGeneratorPopover } from \"./AICollectionGeneratorPopover\";\nimport { CollectionGenerationCallback } from \"../../api/generateCollectionApi\";\n\nexport function CollectionEditorWelcomeView({\n path,\n parentCollection,\n onContinue,\n existingCollectionPaths,\n generateCollection,\n onAnalyticsEvent\n}: {\n path: string;\n parentCollection?: EntityCollection;\n onContinue: (importData?: object[], propertiesOrder?: string[]) => void;\n existingCollectionPaths?: string[];\n generateCollection?: CollectionGenerationCallback;\n onAnalyticsEvent?: (event: string, params?: object) => void;\n}) {\n\n const { pathSuggestions } = useCollectionEditorController();\n\n const filteredSuggestions = (pathSuggestions ?? []).filter(s => !(existingCollectionPaths ?? []).find(c => c.trim().toLowerCase() === s.trim().toLowerCase()));\n\n const {\n values,\n setFieldValue,\n setValues,\n submitCount\n } = useFormex<EntityCollection>();\n\n const [jsonImportOpen, setJsonImportOpen] = useState(false);\n\n return (\n <div className={\"overflow-auto my-auto\"}>\n <Container maxWidth={\"4xl\"} className={\"flex flex-col gap-4 p-8 m-auto\"}>\n\n <div\n className=\"flex flex-row py-2 pt-3 items-center\">\n <Typography variant={\"h4\"} className={\"flex-grow\"}>\n New collection\n </Typography>\n </div>\n\n {parentCollection && <Chip colorScheme={\"tealDarker\"}>\n <Typography variant={\"caption\"}>\n This is a subcollection of <b>{parentCollection.name}</b>\n </Typography>\n </Chip>}\n\n {(filteredSuggestions ?? []).length > 0 && <div className={\"my-2\"}>\n\n <Typography variant={\"caption\"}\n color={\"secondary\"}>\n ● Use one of the existing paths in your database:\n </Typography>\n <div className={\"flex flex-wrap gap-x-2 gap-y-1 items-center my-2 min-h-7\"}>\n\n {filteredSuggestions?.map((suggestion, index) => (\n <Chip key={suggestion}\n colorScheme={\"cyanLighter\"}\n onClick={() => {\n setFieldValue(\"name\", prettifyIdentifier(suggestion));\n setFieldValue(\"id\", suggestion);\n setFieldValue(\"path\", suggestion);\n setFieldValue(\"properties\", undefined);\n onContinue();\n }}\n size=\"small\">\n {suggestion}\n </Chip>\n ))}\n\n </div>\n\n </div>}\n <div className=\"flex flex-row gap-8\">\n\n {generateCollection && (\n <div className={\"my-2\"}>\n <Typography variant={\"caption\"}\n color={\"secondary\"}\n className={\"mb-2\"}>\n ● Describe your collection to AI:\n </Typography>\n\n <AICollectionGeneratorPopover\n onGenerated={(generatedCollection) => {\n setValues(generatedCollection);\n onContinue();\n }}\n generateCollection={generateCollection}\n onAnalyticsEvent={onAnalyticsEvent}\n trigger={\n <Button\n variant=\"outlined\"\n startIcon={<AIIcon size=\"small\" />}\n >\n Generate with AI\n </Button>\n }\n />\n </div>\n )}\n\n <div className={\"my-2\"}>\n <Typography variant={\"caption\"}\n color={\"secondary\"}\n className={\"mb-2\"}>\n ● Create from JSON configuration:\n </Typography>\n\n <Button\n variant={\"outlined\"}\n onClick={() => setJsonImportOpen(true)}\n startIcon={<CodeIcon size=\"small\" />}\n >\n Paste JSON Configuration\n </Button>\n\n <CollectionJsonImportDialog\n open={jsonImportOpen}\n onClose={() => setJsonImportOpen(false)}\n onImport={(collection) => {\n setValues(collection);\n onContinue();\n }}\n />\n </div>\n\n\n\n </div>\n\n\n {!parentCollection && <div>\n\n <Typography variant={\"caption\"}\n color={\"secondary\"}\n className={\"mb-2\"}>\n ● Create a collection from a file (csv, json, xls, xslx...)\n </Typography>\n\n <ImportFileUpload onDataAdded={(data, propertiesOrder) => onContinue(data, propertiesOrder)} />\n\n </div>}\n\n <div className={\"my-2\"}>\n <Typography variant={\"caption\"}\n color={\"secondary\"}>\n ● Select a template:\n </Typography>\n\n <div className={\"flex gap-2\"}>\n <TemplateButton title={\"Products\"}\n subtitle={\"A collection of products with images, prices and stock\"}\n icon={<Icon size={\"small\"}\n iconKey={productsCollectionTemplate.icon! as string} />}\n onClick={() => {\n setValues(productsCollectionTemplate);\n onContinue();\n }} />\n <TemplateButton title={\"Users\"}\n subtitle={\"A collection of users with emails, names and roles\"}\n icon={<Icon size={\"small\"} iconKey={usersCollectionTemplate.icon! as string} />}\n onClick={() => {\n setValues(usersCollectionTemplate);\n onContinue();\n }} />\n <TemplateButton title={\"Blog posts\"}\n subtitle={\"A collection of blog posts with images, authors and complex content\"}\n icon={<Icon size={\"small\"} iconKey={blogCollectionTemplate.icon! as string} />}\n onClick={() => {\n setValues(blogCollectionTemplate);\n onContinue();\n }} />\n <TemplateButton title={\"Pages\"}\n subtitle={\"A collection of pages with images, authors and complex content\"}\n icon={<Icon size={\"small\"} iconKey={pagesCollectionTemplate.icon! as string} />}\n onClick={() => {\n setValues(pagesCollectionTemplate);\n onContinue();\n }} />\n </div>\n\n </div>\n\n\n\n </Container>\n </div>\n );\n}\n\nexport function TemplateButton({\n title,\n subtitle,\n icon,\n onClick\n}: {\n title: string,\n icon: React.ReactNode,\n subtitle: string,\n onClick?: () => void\n}) {\n\n return (\n <Tooltip title={subtitle}\n asChild={true}>\n <Card\n onClick={onClick}\n className={cls(\n \"my-2 rounded-md border px-4 py-3 focus:outline-none transition ease-in-out duration-150 flex flex-row gap-4 items-center\",\n \"text-text-secondary dark:text-text-secondary-dark\",\n \"hover:border-primary-dark hover:text-primary-dark dark:hover:text-primary focus:ring-primary hover:ring-1 hover:ring-primary\",\n \"border-surface-400 dark:border-surface-600 \"\n )}\n >\n {icon}\n <div className={\"flex flex-col items-start\"}>\n\n <Typography variant={\"subtitle2\"}>\n {title}\n </Typography>\n\n </div>\n </Card>\n </Tooltip>\n );\n\n}\n","import {\n DataNewPropertiesMapping,\n getInferenceType,\n ImportConfig,\n ImportNewPropertyFieldPreview\n} from \"@firecms/data_import\";\nimport { getIn, useFormex } from \"@firecms/formex\";\n\nimport { getFieldConfig, getFieldId, Properties, Property, PropertyConfig, PropertyConfigBadge, } from \"@firecms/core\";\nimport { cls, Container, Select, SelectItem, Tooltip, Typography } from \"@firecms/ui\";\nimport React, { useState } from \"react\";\nimport { OnPropertyChangedParams, PropertyFormDialog, PropertyWithId } from \"../PropertyEditView\";\nimport { getFullId, idToPropertiesPath, namespaceToPropertiesOrderPath } from \"../util\";\nimport { PersistedCollection } from \"../../../types/persisted_collection\";\nimport { updatePropertyFromWidget } from \"../utils/update_property_for_widget\";\nimport { supportedFields } from \"../utils/supported_fields\";\nimport { buildPropertyFromData } from \"@firecms/schema_inference\";\n\nexport function CollectionEditorImportMapping({\n importConfig,\n propertyConfigs,\n collectionEditable\n }:\n {\n importConfig: ImportConfig,\n propertyConfigs: Record<string, PropertyConfig>,\n collectionEditable: boolean\n }) {\n\n // const {\n // values,\n // setFieldValue,\n // setFieldTouched,\n // setValues,\n // submitCount\n // } = useFormex();\n\n const {\n setFieldValue,\n setFieldTouched,\n values\n } = useFormex<PersistedCollection>();\n const [selectedProperty, setSelectedProperty] = useState<PropertyWithId | undefined>(undefined);\n\n const currentPropertiesOrderRef = React.useRef<{\n [key: string]: string[]\n }>(values.propertiesOrder ? { \"\": values.propertiesOrder } : {});\n\n const propertyKey = selectedProperty ? selectedProperty.id : undefined;\n const property = selectedProperty || undefined;\n\n const onPropertyChanged = ({\n id,\n property,\n previousId,\n namespace\n }: OnPropertyChangedParams) => {\n\n const fullId = id ? getFullId(id, namespace) : undefined;\n const propertyPath = fullId ? idToPropertiesPath(fullId) : undefined;\n\n // setSelectedProperty(property);\n const getCurrentPropertiesOrder = (namespace?: string) => {\n if (!namespace) return currentPropertiesOrderRef.current[\"\"];\n return currentPropertiesOrderRef.current[namespace] ?? getIn(values, namespaceToPropertiesOrderPath(namespace));\n }\n\n const updatePropertiesOrder = (newPropertiesOrder: string[], namespace?: string) => {\n const propertiesOrderPath = namespaceToPropertiesOrderPath(namespace);\n\n setFieldValue(propertiesOrderPath, newPropertiesOrder, false);\n currentPropertiesOrderRef.current[namespace ?? \"\"] = newPropertiesOrder;\n\n };\n\n // If the id has changed we need to a little cleanup\n if (previousId && previousId !== id) {\n const previousFullId = getFullId(previousId, namespace);\n const previousPropertyPath = idToPropertiesPath(previousFullId);\n\n const currentPropertiesOrder = getCurrentPropertiesOrder(namespace);\n\n // replace previousId with id in propertiesOrder\n const newPropertiesOrder = currentPropertiesOrder\n .map((p) => p === previousId ? id : p)\n .filter((p) => p !== undefined) as string[];\n updatePropertiesOrder(newPropertiesOrder, namespace);\n\n // replace previousId with id in headersMapping\n const newHeadersMapping = { ...importConfig.headersMapping };\n Object.keys(newHeadersMapping).forEach((key) => {\n if (newHeadersMapping[key] === previousId) {\n newHeadersMapping[key] = id ?? \"\";\n }\n });\n importConfig.setHeadersMapping(newHeadersMapping);\n\n // if (id) {\n // setSelectedPropertyIndex(newPropertiesOrder.indexOf(id));\n // setSelectedPropertyKey(id);\n // }\n setFieldValue(previousPropertyPath, undefined, false);\n setFieldTouched(previousPropertyPath, false, false);\n }\n\n if (propertyPath) {\n setFieldValue(propertyPath, property, false);\n setFieldTouched(propertyPath, true, false);\n }\n };\n const onPropertyTypeChanged = async ({\n id,\n importKey,\n property,\n namespace\n }: OnPropertyChangedParams & {\n importKey: string\n }) => {\n\n const fullId = id ? getFullId(id, namespace) : undefined;\n const propertyPath = fullId ? idToPropertiesPath(fullId) : undefined;\n\n // we try to infer the rest of the properties of a property, from the type and the data\n const propertyData = importConfig.importData.map((d) => getIn(d, importKey));\n const inferredNewProperty = {\n ...buildPropertyFromData(propertyData, property, getInferenceType),\n editable: true\n };\n\n if (propertyPath) {\n if (inferredNewProperty) {\n setFieldValue(propertyPath, inferredNewProperty, false);\n } else {\n setFieldValue(propertyPath, property, false);\n }\n setFieldTouched(propertyPath, true, false);\n }\n };\n\n return (\n\n <div className={\"overflow-auto my-auto\"}>\n <Container maxWidth={\"6xl\"} className={\"flex flex-col gap-4 p-8 m-auto\"}>\n\n <Typography variant=\"h6\" className={\"my-4 ml-3.5\"}>Data property mapping</Typography>\n\n <DataNewPropertiesMapping importConfig={importConfig}\n destinationProperties={values.properties as Properties}\n buildPropertyView={({\n property,\n propertyKey,\n importKey,\n isIdColumn\n }) => {\n if (isIdColumn) {\n return <Typography> This column will be used as ID</Typography>\n }\n\n return <ImportNewPropertyFieldPreview\n property={property}\n propertyKey={propertyKey}\n onPropertyNameChanged={(propertyKey: string, value: string) => setFieldValue(`properties.${propertyKey}.name`, value, false)}\n onEditClick={() => {\n if (!propertyKey || !property) return;\n setSelectedProperty({\n ...property,\n id: propertyKey,\n editable: true\n });\n }}\n propertyTypeView={<PropertySelect property={property}\n disabled={false}\n onPropertyChanged={(props) => onPropertyTypeChanged({\n ...props,\n importKey\n })}\n propertyKey={propertyKey}\n propertyConfigs={propertyConfigs}/>}\n />;\n }}/>\n </Container>\n\n <PropertyFormDialog\n open={selectedProperty !== undefined}\n propertyKey={propertyKey}\n property={property}\n inArray={false}\n autoUpdateId={false}\n onPropertyChanged={onPropertyChanged}\n allowDataInference={false}\n collectionEditable={collectionEditable}\n onOkClicked={() => {\n setSelectedProperty(undefined);\n }}\n onCancel={() => {\n setSelectedProperty(undefined);\n }}\n autoOpenTypeSelect={false}\n existingProperty={false}\n propertyConfigs={propertyConfigs}/>\n\n <div style={{ height: \"52px\" }}/>\n </div>\n );\n\n}\n\nfunction PropertySelect({\n property,\n onPropertyChanged,\n propertyKey,\n propertyConfigs,\n disabled\n }: {\n property: Property | null,\n propertyKey: string | null,\n onPropertyChanged: ({\n id,\n property,\n previousId,\n namespace\n }: OnPropertyChangedParams) => void,\n propertyConfigs: Record<string, PropertyConfig>,\n disabled?: boolean\n}) {\n\n const fieldId = property ? getFieldId(property) : null;\n const widget = property ? getFieldConfig(property, propertyConfigs) : null;\n\n const [selectOpen, setSelectOpen] = useState(false);\n\n return <Tooltip title={property && widget ? `${widget?.name} - ${property.dataType}` : undefined}\n open={selectOpen ? false : undefined}>\n <Select\n open={selectOpen}\n onOpenChange={setSelectOpen}\n invisible={true}\n size={\"large\"}\n className={\"w-full\"}\n disabled={disabled}\n error={!widget}\n fullWidth={true}\n value={fieldId ?? \"\"}\n placeholder={\"Select a property widget\"}\n position={\"item-aligned\"}\n renderValue={(value) => {\n if (!widget) return null;\n return <PropertyConfigBadge propertyConfig={widget}/>\n }}\n onValueChange={(newSelectedWidgetId) => {\n const newProperty = updatePropertyFromWidget(property, newSelectedWidgetId, propertyConfigs)\n if (!propertyKey) return;\n onPropertyChanged({\n id: propertyKey,\n property: newProperty,\n previousId: propertyKey,\n namespace: undefined\n });\n }}>\n {Object.entries(supportedFields).map(([key, widget]) => {\n return <PropertySelectItem\n key={key}\n value={key}\n optionDisabled={false}\n propertyConfig={widget}\n existing={false}/>;\n })\n }\n </Select>\n </Tooltip>;\n}\n\nexport interface PropertySelectItemProps {\n value: string;\n optionDisabled: boolean;\n propertyConfig: PropertyConfig;\n existing: boolean;\n}\n\nexport function PropertySelectItem({ value, optionDisabled, propertyConfig, existing }: PropertySelectItemProps) {\n return <SelectItem value={value}\n disabled={optionDisabled}\n className={\"flex flex-row items-center\"}>\n <div\n className={cls(\n \"flex flex-row items-center text-base min-h-[48px]\",\n optionDisabled ? \"w-full\" : \"\")}>\n <div className={\"mr-8\"}>\n <PropertyConfigBadge propertyConfig={propertyConfig}/>\n </div>\n <div>\n <div>{propertyConfig.name}</div>\n <Typography variant={\"caption\"}\n color={\"disabled\"}\n className={\"max-w-sm\"}>\n {existing && optionDisabled ? \"You can only switch to widgets that use the same data type\" : propertyConfig.description}\n </Typography>\n </div>\n </div>\n </SelectItem>\n}\n","import { convertDataToEntity, ImportConfig } from \"@firecms/data_import\";\nimport {\n CircularProgressCenter,\n EntityCollectionTable,\n Properties,\n useAuthController,\n useNavigationController,\n useSelectionController\n} from \"@firecms/core\";\nimport { useEffect, useState } from \"react\";\nimport { Typography } from \"@firecms/ui\";\n\nexport function CollectionEditorImportDataPreview({\n importConfig,\n properties,\n propertiesOrder\n }: {\n importConfig: ImportConfig,\n properties: Properties,\n propertiesOrder: string[]\n}) {\n\n const authController = useAuthController();\n const navigation = useNavigationController();\n const [loading, setLoading] = useState<boolean>(false);\n\n async function loadEntities() {\n const mappedData = importConfig.importData.map(d => convertDataToEntity(authController,\n navigation,\n d,\n importConfig.idColumn,\n importConfig.headersMapping,\n properties,\n \"TEMP_PATH\",\n importConfig.defaultValues));\n importConfig.setEntities(mappedData);\n }\n\n useEffect(() => {\n loadEntities().finally(() => setLoading(false));\n }, []);\n\n const selectionController = useSelectionController();\n if (loading)\n return <CircularProgressCenter/>\n\n return <EntityCollectionTable\n title={<div>\n <Typography variant={\"subtitle2\"}>Imported data preview</Typography>\n <Typography variant={\"caption\"}>Entities with the same id will be overwritten</Typography>\n </div>}\n tableController={{\n data: importConfig.entities,\n dataLoading: false,\n noMoreToLoad: false\n }}\n endAdornment={<div className={\"h-12\"}/>}\n filterable={false}\n sortable={false}\n selectionController={selectionController}\n displayedColumnIds={propertiesOrder.map(p => ({\n key: p,\n disabled: false\n }))}\n openEntityMode={\"side_panel\"}\n properties={properties}\n enablePopupIcon={false}/>\n\n}\n","import { Properties, slugify } from \"@firecms/core\";\nimport { ImportConfig } from \"@firecms/data_import\";\n\nexport function cleanPropertiesFromImport(properties: Properties, parentSlug = \"\"): {\n headersMapping: ImportConfig[\"headersMapping\"],\n properties: Properties,\n idColumn?: ImportConfig[\"idColumn\"],\n} {\n\n const result = Object.keys(properties).reduce((acc, key) => {\n const property = properties[key];\n const slug = slugify(key);\n const fullSlug = parentSlug ? `${parentSlug}.${slug}` : slug;\n\n if (property.dataType === \"map\" && property.properties) {\n const slugifiedResult = cleanPropertiesFromImport(property.properties as Properties, fullSlug);\n return {\n headersMapping: { ...acc.headersMapping, [key]: fullSlug },\n properties: {\n ...acc.properties,\n [slug]: {\n ...property,\n properties: slugifiedResult.properties,\n propertiesOrder: Object.keys(slugifiedResult.properties)\n }\n }\n }\n }\n\n const updatedProperties = {\n ...acc.properties,\n [slug]: property\n } as Properties;\n\n const headersMapping = { ...acc.headersMapping, [key]: fullSlug } as Record<string, string>;\n\n return {\n headersMapping,\n properties: updatedProperties,\n }\n }, { headersMapping: {}, properties: {} });\n\n const firstKey = Object.keys(result.headersMapping)?.[0];\n let idColumn: string | undefined;\n if (firstKey?.includes(\"id\") || firstKey?.includes(\"key\")) {\n idColumn = firstKey;\n }\n\n return {\n ...result,\n idColumn\n };\n}\n","import * as React from \"react\";\nimport { useEffect, useRef, useState } from \"react\";\nimport {\n CircularProgressCenter,\n ConfirmationDialog,\n Entity,\n EntityCollection,\n ErrorView,\n isPropertyBuilder,\n MapProperty,\n mergeDeep,\n NavigationResult,\n Properties,\n PropertiesOrBuilders,\n Property,\n PropertyConfig,\n PropertyOrBuilder,\n randomString,\n removeInitialAndTrailingSlashes,\n removeUndefined,\n useAuthController,\n useCustomizationController,\n useNavigationController,\n User,\n useSnackbarController\n} from \"@firecms/core\";\nimport {\n ArrowBackIcon,\n Button,\n CheckIcon,\n cls,\n coolIconKeys,\n defaultBorderMixin,\n Dialog,\n DialogActions,\n DialogContent,\n DialogTitle,\n IconButton,\n LoadingButton,\n Tab,\n Tabs,\n Typography\n} from \"@firecms/ui\";\nimport { YupSchema } from \"./CollectionYupValidation\";\nimport { GeneralSettingsForm } from \"./GeneralSettingsForm\";\nimport { DisplaySettingsForm } from \"./DisplaySettingsForm\";\nimport { CollectionPropertiesEditorForm } from \"./CollectionPropertiesEditorForm\";\nimport { UnsavedChangesDialog } from \"./UnsavedChangesDialog\";\nimport { ExtendSettingsForm } from \"./ExtendSettingsForm\";\nimport { CollectionsConfigController } from \"../../types/config_controller\";\nimport { CollectionEditorWelcomeView } from \"./CollectionEditorWelcomeView\";\nimport { CollectionInference } from \"../../types/collection_inference\";\nimport { getInferenceType, ImportSaveInProgress, useImportConfig } from \"@firecms/data_import\";\nimport { buildEntityPropertiesFromData } from \"@firecms/schema_inference\";\nimport { CollectionEditorImportMapping } from \"./import/CollectionEditorImportMapping\";\nimport { CollectionEditorImportDataPreview } from \"./import/CollectionEditorImportDataPreview\";\nimport { cleanPropertiesFromImport } from \"./import/clean_import_data\";\nimport { PersistedCollection } from \"../../types/persisted_collection\";\nimport { Formex, FormexController, useCreateFormex } from \"@firecms/formex\";\nimport { getFullIdPath } from \"./util\";\nimport { AICollectionGeneratorPopover } from \"./AICollectionGeneratorPopover\";\nimport { AIModifiedPathsProvider, useAIModifiedPaths } from \"./AIModifiedPathsContext\";\nimport { CollectionOperation, CollectionGenerationCallback } from \"../../api/generateCollectionApi\";\n\nexport interface CollectionEditorDialogProps {\n open: boolean;\n isNewCollection: boolean;\n initialValues?: {\n group?: string,\n path?: string,\n name?: string,\n }\n /**\n * A collection to duplicate from. If provided, the new collection will be\n * pre-populated with the same properties (but with empty name, path, and id).\n */\n copyFrom?: PersistedCollection;\n editedCollectionId?: string;\n fullPath?: string; // full path of this particular collection, like `products/123/locales`\n parentCollectionIds?: string[]; // path ids of the parent collection, like [`products`]\n handleClose: (collection?: EntityCollection) => void;\n configController: CollectionsConfigController;\n reservedGroups?: string[];\n collectionInference?: CollectionInference;\n extraView?: {\n View: React.ComponentType<{\n path: string\n }>,\n icon: React.ReactNode\n };\n getUser?: (uid: string) => User | null;\n getData?: (path: string, parentPaths: string[]) => Promise<object[]>;\n parentCollection?: PersistedCollection;\n existingEntities?: Entity<any>[];\n /**\n * Initial view to open when editing: \"general\", \"display\", or \"properties\".\n * For new collections, this is ignored.\n */\n initialView?: \"general\" | \"display\" | \"properties\";\n /**\n * If true, auto-expand the Kanban configuration section.\n */\n expandKanban?: boolean;\n /**\n * Callback function for generating/modifying collections.\n * The plugin is API-agnostic - the consumer provides the implementation.\n */\n generateCollection?: CollectionGenerationCallback;\n /**\n * Optional analytics callback\n */\n onAnalyticsEvent?: (event: string, params?: object) => void;\n}\n\nexport function CollectionEditorDialog(props: CollectionEditorDialogProps) {\n\n const open = props.open;\n\n const [formDirty, setFormDirty] = React.useState<boolean>(false);\n const [unsavedChangesDialogOpen, setUnsavedChangesDialogOpen] = React.useState<boolean>(false);\n\n const handleCancel = () => {\n if (!formDirty) {\n props.handleClose(undefined);\n } else {\n setUnsavedChangesDialogOpen(true);\n }\n };\n\n useEffect(() => {\n if (!open) {\n setFormDirty(false);\n setUnsavedChangesDialogOpen(false);\n }\n }, [open]);\n\n return (\n <Dialog\n open={open}\n fullWidth={true}\n fullHeight={true}\n scrollable={false}\n maxWidth={\"7xl\"}\n onOpenChange={(open) => !open ? handleCancel() : undefined}\n >\n <DialogTitle hidden>Collection editor</DialogTitle>\n <AIModifiedPathsProvider>\n {open && <CollectionEditor {...props}\n handleCancel={handleCancel}\n setFormDirty={setFormDirty} />}\n\n <UnsavedChangesDialog\n open={unsavedChangesDialogOpen}\n handleOk={() => props.handleClose(undefined)}\n handleCancel={() => setUnsavedChangesDialogOpen(false)}\n body={\"There are unsaved changes in this collection\"} />\n </AIModifiedPathsProvider>\n </Dialog>\n );\n}\n\ntype EditorView = \"welcome\"\n | \"general\"\n | \"display\"\n | \"import_data_mapping\"\n | \"import_data_preview\"\n | \"import_data_saving\"\n | \"properties\"\n | \"loading\"\n | \"extra_view\"\n | \"extend\";\n\nexport function CollectionEditor(props: CollectionEditorDialogProps & {\n handleCancel: () => void,\n setFormDirty: (dirty: boolean) => void\n}) {\n const { propertyConfigs } = useCustomizationController();\n const navigation = useNavigationController();\n const authController = useAuthController();\n\n const {\n topLevelNavigation,\n collections\n } = navigation;\n\n const initialValuesProp = props.initialValues;\n const copyFromProp = props.copyFrom;\n // Skip templates when duplicating (copyFrom is provided)\n const includeTemplates = !copyFromProp && !initialValuesProp?.path && (props.parentCollectionIds ?? []).length === 0;\n const collectionsInThisLevel = (props.parentCollection ? props.parentCollection.subcollections : collections) ?? [];\n const existingPaths = collectionsInThisLevel.map(col => col.path.trim().toLowerCase());\n const existingIds = collectionsInThisLevel.map(col => col.id?.trim().toLowerCase()).filter(Boolean) as string[];\n const [collection, setCollection] = React.useState<PersistedCollection<any> | undefined>();\n const [initialLoadingCompleted, setInitialLoadingCompleted] = React.useState(false);\n\n useEffect(() => {\n try {\n if (navigation.initialised) {\n if (props.editedCollectionId) {\n setCollection(navigation.getCollectionFromPaths([...(props.parentCollectionIds ?? []), props.editedCollectionId]));\n } else {\n setCollection(undefined);\n }\n setInitialLoadingCompleted(true);\n }\n } catch (e) {\n console.error(e);\n }\n }, [props.editedCollectionId, props.parentCollectionIds, navigation.initialised, navigation.getCollectionFromPaths]);\n\n if (!topLevelNavigation) {\n throw Error(\"Internal: Navigation not ready in collection editor\");\n }\n\n const {\n groups\n }: NavigationResult = topLevelNavigation;\n\n const initialCollection = collection\n ? {\n ...collection,\n id: collection.id ?? collection.path ?? randomString(16)\n }\n : undefined;\n\n // Build initial values - handle copyFrom for duplication\n const initialValues: PersistedCollection<any> = initialCollection\n ? applyPropertyConfigs(initialCollection, propertyConfigs)\n : copyFromProp\n ? {\n // When duplicating, copy all properties but clear identifiers\n ...copyFromProp,\n id: randomString(16),\n path: \"\",\n name: \"\",\n subcollections: undefined, // Don't copy subcollections\n ownerId: authController.user?.uid ?? \"\"\n }\n : {\n id: initialValuesProp?.path ?? randomString(16),\n path: initialValuesProp?.path ?? \"\",\n name: initialValuesProp?.name ?? \"\",\n group: initialValuesProp?.group ?? \"\",\n properties: {} as PropertiesOrBuilders,\n propertiesOrder: [],\n icon: coolIconKeys[Math.floor(Math.random() * coolIconKeys.length)],\n ownerId: authController.user?.uid ?? \"\"\n };\n\n if (!initialLoadingCompleted) {\n return <CircularProgressCenter />;\n }\n\n if (!props.isNewCollection && (!navigation.initialised || !initialLoadingCompleted)) {\n return <CircularProgressCenter />;\n }\n\n return <CollectionEditorInternal\n {...props}\n initialValues={initialValues}\n existingPaths={existingPaths}\n existingIds={existingIds}\n includeTemplates={includeTemplates}\n collection={collection}\n setCollection={setCollection}\n groups={groups}\n propertyConfigs={propertyConfigs} />\n\n}\n\nfunction CollectionEditorInternal<M extends Record<string, any>>({\n isNewCollection,\n configController,\n editedCollectionId,\n parentCollectionIds,\n fullPath,\n collectionInference,\n handleClose,\n reservedGroups,\n extraView,\n handleCancel,\n setFormDirty,\n getUser,\n parentCollection,\n getData,\n existingPaths,\n existingIds,\n includeTemplates,\n collection,\n setCollection,\n initialValues,\n propertyConfigs,\n groups,\n existingEntities,\n initialView: initialViewProp,\n expandKanban,\n generateCollection,\n onAnalyticsEvent\n}: CollectionEditorDialogProps & {\n handleCancel: () => void,\n setFormDirty: (dirty: boolean) => void,\n initialValues: PersistedCollection<M>,\n existingPaths: string[],\n existingIds: string[],\n includeTemplates: boolean,\n collection: PersistedCollection<M> | undefined,\n setCollection: (collection: PersistedCollection<M>) => void,\n propertyConfigs: Record<string, PropertyConfig<any>>,\n groups: string[],\n}\n) {\n\n const importConfig = useImportConfig();\n const navigation = useNavigationController();\n const snackbarController = useSnackbarController();\n\n // Use this ref to store which properties have errors\n const propertyErrorsRef = useRef({});\n\n const initialView = isNewCollection\n ? (includeTemplates ? \"welcome\" : \"general\")\n : (initialViewProp ?? \"properties\");\n const [currentView, setCurrentView] = useState<EditorView>(initialView); // this view can edit either the details view or the properties one\n\n const [error, setError] = React.useState<Error | undefined>();\n\n const saveCollection = (updatedCollection: PersistedCollection<M>): Promise<boolean> => {\n const id = updatedCollection.id || updatedCollection.path;\n\n return configController.saveCollection({\n id,\n collectionData: updatedCollection,\n previousId: editedCollectionId,\n parentCollectionIds\n })\n .then(() => {\n setError(undefined);\n return true;\n })\n .catch((e) => {\n setError(e);\n console.error(e);\n snackbarController.open({\n type: \"error\",\n message: \"Error persisting collection: \" + (e.message ?? \"Details in the console\")\n });\n return false;\n });\n };\n\n const setNextMode = () => {\n if (currentView === \"general\") {\n if (importConfig.inUse) {\n setCurrentView(\"import_data_saving\");\n } else if (extraView) {\n setCurrentView(\"extra_view\");\n } else {\n setCurrentView(\"properties\");\n }\n } else if (currentView === \"welcome\") {\n setCurrentView(\"general\");\n } else if (currentView === \"import_data_mapping\") {\n setCurrentView(\"import_data_preview\");\n } else if (currentView === \"import_data_preview\") {\n setCurrentView(\"general\");\n } else if (currentView === \"extra_view\") {\n setCurrentView(\"properties\");\n } else {\n setCurrentView(\"general\");\n }\n\n };\n\n const doCollectionInference = collectionInference ? (collection: PersistedCollection<any>) => {\n if (!collectionInference) return undefined;\n return collectionInference?.(\n collection.path,\n collection.collectionGroup ?? false,\n parentPaths ?? [],\n collection.databaseId,\n collection.initialFilter,\n collection.initialSort\n );\n } : undefined;\n\n const inferCollectionFromData = async (newCollection: PersistedCollection<M>) => {\n\n try {\n if (!doCollectionInference) {\n setCollection(newCollection);\n return Promise.resolve(newCollection);\n }\n\n setCurrentView(\"loading\");\n\n const inferredCollection = await doCollectionInference?.(newCollection);\n\n if (!inferredCollection) {\n setCollection(newCollection);\n return Promise.resolve(newCollection);\n }\n const values = {\n ...(newCollection ?? {})\n };\n\n if (Object.keys(inferredCollection.properties ?? {}).length > 0) {\n values.properties = inferredCollection.properties as PropertiesOrBuilders<M>;\n values.propertiesOrder = inferredCollection.propertiesOrder as Extract<keyof M, string>[];\n }\n\n if (!values.propertiesOrder) {\n values.propertiesOrder = Object.keys(values.properties) as Extract<keyof M, string>[];\n return values;\n }\n\n setCollection(values);\n console.debug(\"Inferred collection\", {\n newCollection: newCollection ?? {},\n values\n });\n return values;\n } catch (e: any) {\n console.error(e);\n snackbarController.open({\n type: \"error\",\n message: \"Error inferring collection: \" + (e.message ?? \"Details in the console\")\n });\n return newCollection;\n }\n };\n\n const onSubmit = (newCollectionState: PersistedCollection<M>, formexController: FormexController<PersistedCollection<M>>) => {\n console.debug(\"Submitting collection\", newCollectionState);\n try {\n\n if (!isNewCollection) {\n saveCollection(newCollectionState).then(() => {\n aiModifiedPaths?.clearAllPaths();\n formexController.resetForm();\n handleClose(newCollectionState);\n });\n return;\n }\n\n if (currentView === \"welcome\") {\n setNextMode();\n formexController.resetForm({ values: newCollectionState });\n } else if (currentView === \"general\") {\n if (extraView || importConfig.inUse) {\n formexController.resetForm({ values: newCollectionState });\n setNextMode();\n } else if (isNewCollection) {\n inferCollectionFromData(newCollectionState)\n .then((values) => {\n formexController.resetForm({\n values: values ?? newCollectionState,\n touched: {\n path: true,\n name: true\n }\n });\n }).finally(() => {\n setNextMode();\n });\n } else {\n formexController.resetForm({ values: newCollectionState });\n setNextMode();\n }\n } else if (currentView === \"extra_view\") {\n setNextMode();\n formexController.resetForm({ values: newCollectionState });\n } else if (currentView === \"import_data_mapping\") {\n setNextMode();\n } else if (currentView === \"import_data_preview\") {\n setNextMode();\n } else if (currentView === \"properties\") {\n saveCollection(newCollectionState).then(() => {\n formexController.resetForm({ values: initialValues });\n setNextMode();\n handleClose(newCollectionState);\n });\n } else {\n setNextMode();\n formexController.resetForm({ values: newCollectionState });\n }\n } catch (e: any) {\n snackbarController.open({\n type: \"error\",\n message: \"Error persisting collection: \" + (e.message ?? \"Details in the console\")\n });\n console.error(e);\n formexController.resetForm({ values: newCollectionState });\n }\n };\n\n const validation = (col: PersistedCollection) => {\n\n let errors: Record<string, any> = {};\n const schema = (currentView === \"properties\" || currentView === \"extend\" || currentView === \"general\") && YupSchema;\n if (schema) {\n try {\n schema.validateSync(col, { abortEarly: false });\n } catch (e: any) {\n e.inner.forEach((err: any) => {\n errors[err.path] = err.message;\n });\n }\n }\n if (currentView === \"properties\") {\n errors = { ...errors, ...propertyErrorsRef.current };\n }\n if (currentView === \"general\") {\n const pathError = validatePath(col.path, isNewCollection, existingPaths, col.id);\n if (pathError) {\n errors.path = pathError;\n }\n const idError = validateId(col.id, isNewCollection, existingPaths, existingIds);\n if (idError) {\n errors.id = idError;\n }\n }\n return errors;\n };\n\n const formController = useCreateFormex<PersistedCollection<M>>({\n initialValues,\n onSubmit,\n validation,\n debugId: \"COLLECTION_EDITOR\"\n });\n\n const {\n values,\n setFieldValue,\n isSubmitting,\n dirty,\n submitCount\n } = formController;\n\n const path = values.path;\n const updatedFullPath = fullPath?.includes(\"/\") ? fullPath?.split(\"/\").slice(0, -1).join(\"/\") + \"/\" + path : path; // TODO: this path is wrong\n const pathError = validatePath(path, isNewCollection, existingPaths, values.id);\n\n const parentPaths = !pathError && parentCollectionIds ? navigation.convertIdsToPaths(parentCollectionIds) : undefined;\n const resolvedPath = !pathError ? navigation.resolveIdsFrom(updatedFullPath) : undefined;\n\n const getDataWithPath = resolvedPath && getData ? async () => {\n const data = await getData!(resolvedPath, parentPaths ?? []);\n if (existingEntities) {\n const existingData = existingEntities.map(e => e.values);\n data.push(...existingData);\n }\n return data;\n } : undefined;\n\n useEffect(() => {\n setFormDirty(dirty);\n }, [dirty]);\n\n function onImportDataSet(data: object[], propertiesOrder?: string[]) {\n importConfig.setInUse(true);\n buildEntityPropertiesFromData(data, getInferenceType)\n .then((properties: Properties) => {\n const res = cleanPropertiesFromImport(properties);\n\n importConfig.setIdColumn(res.idColumn);\n importConfig.setImportData(data);\n importConfig.setHeadersMapping(res.headersMapping);\n const filteredHeadingsOrder = ((propertiesOrder ?? [])\n .filter((key) => res.headersMapping[key]) as string[]) ?? Object.keys(res.properties);\n importConfig.setHeadingsOrder(filteredHeadingsOrder);\n importConfig.setOriginProperties(res.properties);\n\n const mappedHeadings = (propertiesOrder ?? []).map((key) => res.headersMapping[key]).filter(Boolean) as string[] ?? Object.keys(res.properties);\n setFieldValue(\"properties\", res.properties);\n setFieldValue(\"propertiesOrder\", mappedHeadings);\n });\n }\n\n const validValues = Boolean(values.name) && Boolean(values.id);\n\n const onImportMappingComplete = () => {\n const updatedProperties = { ...values.properties };\n if (importConfig.idColumn)\n delete updatedProperties[importConfig.idColumn];\n setFieldValue(\"properties\", updatedProperties);\n // setFieldValue(\"propertiesOrder\", Object.values(importConfig.headersMapping));\n setNextMode();\n };\n\n const editable = collection?.editable === undefined || collection?.editable === true;\n // @ts-ignore\n const isMergedCollection = collection?.merged ?? false;\n const collectionEditable = editable || isNewCollection;\n\n const [deleteRequested, setDeleteRequested] = useState(false);\n\n const deleteCollection = () => {\n if (!collection) return;\n configController?.deleteCollection({ id: collection.id }).then(() => {\n setDeleteRequested(false);\n handleCancel();\n snackbarController.open({\n message: \"Collection deleted\",\n type: \"success\"\n });\n });\n };\n\n const onWelcomeScreenContinue = (importData?: object[], propertiesOrder?: string[]) => {\n if (importData) {\n onImportDataSet(importData, propertiesOrder);\n setCurrentView(\"import_data_mapping\");\n } else {\n setCurrentView(\"general\");\n }\n };\n\n const aiModifiedPaths = useAIModifiedPaths();\n\n const handleAIGenerated = (generatedCollection: EntityCollection, operations?: CollectionOperation[]) => {\n formController.setValues(generatedCollection as PersistedCollection<M>);\n if (operations && aiModifiedPaths) {\n aiModifiedPaths.addModifiedPaths(operations);\n }\n };\n\n return <DialogContent fullHeight={true}>\n <Formex value={formController}>\n\n <>\n {!isNewCollection && <div className={cls(\"px-4 py-2 w-full flex items-center justify-end gap-2 bg-surface-50 dark:bg-surface-950 border-b\", defaultBorderMixin)}>\n {generateCollection && (\n <AICollectionGeneratorPopover\n existingCollection={values}\n onGenerated={handleAIGenerated}\n generateCollection={generateCollection}\n onAnalyticsEvent={onAnalyticsEvent}\n />\n )}\n <Tabs value={currentView}\n onValueChange={(v) => setCurrentView(v as EditorView)}>\n <Tab value={\"general\"}>\n General\n </Tab>\n <Tab value={\"display\"}>\n Display\n </Tab>\n <Tab value={\"properties\"}>\n Properties\n </Tab>\n <Tab value={\"extend\"}>\n Extend\n </Tab>\n </Tabs>\n </div>}\n\n <form noValidate\n onSubmit={formController.handleSubmit}\n className={cls(\n isNewCollection ? \"h-full\" : \"h-[calc(100%-48px)]\",\n \"flex-grow flex flex-col relative\")}>\n\n {currentView === \"loading\" &&\n <CircularProgressCenter />}\n\n {currentView === \"extra_view\" &&\n path &&\n extraView?.View &&\n <extraView.View path={path} />}\n\n {currentView === \"welcome\" &&\n <CollectionEditorWelcomeView\n path={path}\n onContinue={onWelcomeScreenContinue}\n existingCollectionPaths={existingPaths}\n parentCollection={parentCollection}\n generateCollection={generateCollection}\n onAnalyticsEvent={onAnalyticsEvent} />}\n\n {currentView === \"import_data_mapping\" && importConfig &&\n <CollectionEditorImportMapping importConfig={importConfig}\n collectionEditable={collectionEditable}\n propertyConfigs={propertyConfigs} />}\n\n {currentView === \"import_data_preview\" && importConfig &&\n <CollectionEditorImportDataPreview importConfig={importConfig}\n properties={values.properties as Properties}\n propertiesOrder={values.propertiesOrder as string[]} />}\n\n {currentView === \"import_data_saving\" && importConfig &&\n <ImportSaveInProgress importConfig={importConfig}\n collection={values}\n path={path}\n onImportSuccess={async (importedCollection) => {\n snackbarController.open({\n type: \"info\",\n message: \"Data imported successfully\"\n });\n await saveCollection(values);\n handleClose(importedCollection);\n }}\n />}\n\n {currentView === \"general\" &&\n <GeneralSettingsForm\n existingPaths={existingPaths}\n existingIds={existingIds}\n parentCollection={parentCollection}\n isNewCollection={isNewCollection} />\n }\n\n {currentView === \"display\" &&\n <DisplaySettingsForm expandKanban={expandKanban} />\n }\n\n {currentView === \"extend\" && collection &&\n <ExtendSettingsForm\n collection={collection}\n parentCollection={parentCollection}\n configController={configController}\n collectionInference={collectionInference}\n getUser={getUser}\n parentCollectionIds={parentCollectionIds}\n isMergedCollection={!isNewCollection && isMergedCollection}\n onResetToCode={() => setDeleteRequested(true)} />\n }\n\n {currentView === \"properties\" &&\n <CollectionPropertiesEditorForm\n showErrors={submitCount > 0}\n isNewCollection={isNewCollection}\n reservedGroups={reservedGroups}\n onPropertyError={(propertyKey, namespace, error) => {\n const current = removeUndefined({\n ...propertyErrorsRef.current,\n [getFullIdPath(propertyKey, namespace)]: removeUndefined(error, true)\n }, true);\n propertyErrorsRef.current = current;\n formController.validate();\n }}\n getUser={getUser}\n getData={getDataWithPath}\n doCollectionInference={doCollectionInference}\n propertyConfigs={propertyConfigs}\n collectionEditable={collectionEditable}\n extraIcon={extraView?.icon &&\n <IconButton\n color={\"primary\"}\n onClick={() => setCurrentView(\"extra_view\")}>\n {extraView.icon}\n </IconButton>} />\n }\n\n <DialogActions\n position={\"absolute\"}>\n {error && <ErrorView error={error} />}\n\n {isNewCollection && includeTemplates && currentView === \"import_data_mapping\" &&\n <Button variant={\"text\"}\n type=\"button\"\n onClick={() => {\n importConfig.setInUse(false);\n return setCurrentView(\"welcome\");\n }}>\n Back\n </Button>}\n\n {isNewCollection && includeTemplates && currentView === \"import_data_preview\" &&\n <Button variant={\"text\"}\n type=\"button\"\n onClick={() => {\n setCurrentView(\"import_data_mapping\");\n }}>\n Back\n </Button>}\n\n {isNewCollection && includeTemplates && currentView === \"general\" &&\n <Button variant={\"text\"}\n type=\"button\"\n onClick={() => setCurrentView(\"welcome\")}>\n Back\n </Button>}\n\n {isNewCollection && currentView === \"properties\" && <Button variant={\"text\"}\n type=\"button\"\n color={\"neutral\"}\n onClick={() => setCurrentView(\"general\")}>\n <ArrowBackIcon />\n Back\n </Button>}\n\n <Button variant={\"text\"}\n color={\"neutral\"}\n onClick={() => {\n handleCancel();\n }}>\n Cancel\n </Button>\n\n {currentView === \"welcome\" &&\n <Button variant={\"text\"} onClick={() => onWelcomeScreenContinue()}>\n Continue from scratch\n </Button>}\n\n {isNewCollection && currentView === \"import_data_mapping\" &&\n <Button\n variant={\"filled\"}\n color=\"primary\"\n onClick={onImportMappingComplete}\n >\n Next\n </Button>}\n\n {isNewCollection && currentView === \"import_data_preview\" &&\n <Button\n variant={\"filled\"}\n color=\"primary\"\n onClick={() => {\n setNextMode();\n }}\n >\n Next\n </Button>}\n\n {isNewCollection && (currentView === \"general\" || currentView === \"properties\") &&\n <LoadingButton\n variant={\"filled\"}\n color=\"primary\"\n type=\"submit\"\n loading={isSubmitting}\n disabled={isSubmitting || (currentView === \"general\" && !validValues)}\n startIcon={currentView === \"properties\"\n ? <CheckIcon />\n : undefined}\n >\n {currentView === \"general\" && \"Next\"}\n {currentView === \"properties\" && \"Create collection\"}\n </LoadingButton>}\n\n {!isNewCollection && <LoadingButton\n variant=\"filled\"\n color=\"primary\"\n type=\"submit\"\n loading={isSubmitting}\n >\n Update collection\n </LoadingButton>}\n\n </DialogActions>\n </form>\n </>\n\n </Formex>\n\n <ConfirmationDialog\n open={deleteRequested}\n onAccept={deleteCollection}\n onCancel={() => setDeleteRequested(false)}\n title={<>Delete the stored config?</>}\n body={<> This will <b>not\n delete any data</b>, only\n the stored config, and reset to the code state.</>} />\n\n </DialogContent>\n\n}\n\nfunction applyPropertyConfigs<M extends Record<string, any> = any>(collection: PersistedCollection<M>, propertyConfigs: Record<string, PropertyConfig<any>>): PersistedCollection<M> {\n const {\n properties,\n ...rest\n } = collection;\n const propertiesResult: PropertiesOrBuilders<any> = {};\n if (properties) {\n Object.keys(properties).forEach((key) => {\n const prop = properties[key];\n if (prop == null) return;\n propertiesResult[key] = applyPropertiesConfig(prop as PropertyOrBuilder, propertyConfigs);\n });\n }\n\n return {\n ...rest,\n properties: propertiesResult\n };\n}\n\nfunction applyPropertiesConfig(property: PropertyOrBuilder, propertyConfigs: Record<string, PropertyConfig<any>>) {\n let internalProperty = property;\n if (propertyConfigs && internalProperty && typeof internalProperty === \"object\" && internalProperty.propertyConfig) {\n const propertyConfig = propertyConfigs[internalProperty.propertyConfig];\n if (propertyConfig && isPropertyBuilder(propertyConfig.property)) {\n internalProperty = propertyConfig.property;\n } else {\n\n if (propertyConfig) {\n internalProperty = mergeDeep(propertyConfig.property, internalProperty);\n }\n\n if (!isPropertyBuilder(internalProperty) && internalProperty.dataType === \"map\" && internalProperty.properties) {\n const properties: Record<string, PropertyOrBuilder> = {};\n Object.keys(internalProperty.properties).forEach((key) => {\n properties[key] = applyPropertiesConfig(((internalProperty as MapProperty).properties as Properties)[key] as Property, propertyConfigs);\n });\n internalProperty = {\n ...internalProperty,\n properties\n };\n }\n\n }\n }\n return internalProperty;\n\n}\n\nconst validatePath = (value: string, isNewCollection: boolean, existingPaths: string[], idValue?: string) => {\n let error;\n if (!value) {\n error = \"You must specify a path in the database for this collection\";\n }\n // if (isNewCollection && existingIds?.includes(value.trim().toLowerCase()))\n // error = \"There is already a collection which uses this path as an id\";\n if (isNewCollection && existingPaths?.includes(value.trim().toLowerCase()) && !idValue)\n error = \"There is already a collection with the specified path. If you want to have multiple collections referring to the same database path, make sure the have different ids\";\n\n const subpaths = removeInitialAndTrailingSlashes(value).split(\"/\");\n if (subpaths.length % 2 === 0) {\n error = `Collection paths must have an odd number of segments: ${value}`;\n }\n return error;\n};\n\nconst validateId = (value: string, isNewCollection: boolean, existingPaths: string[], existingIds: string[]) => {\n if (!value) return undefined;\n let error;\n if (isNewCollection && existingPaths?.includes(value.trim().toLowerCase()))\n error = \"There is already a collection that uses this value as a path\";\n if (isNewCollection && existingIds?.includes(value.trim().toLowerCase()))\n error = \"There is already a collection which uses this id\";\n // if (error) {\n // setAdvancedPanelExpanded(true);\n // }\n return error;\n};\n","import React, { PropsWithChildren, useCallback } from \"react\";\nimport equal from \"react-fast-compare\"\n\nimport { CollectionsConfigController } from \"./types/config_controller\";\nimport {\n Entity,\n Property,\n useCustomizationController,\n useNavigationController,\n User,\n useSnackbarController\n} from \"@firecms/core\";\nimport { CollectionEditorDialog } from \"./ui/collection_editor/CollectionEditorDialog\";\nimport { useNavigate } from \"react-router\";\nimport { CollectionEditorController } from \"./types/collection_editor_controller\";\nimport { CollectionEditorPermissionsBuilder } from \"./types/config_permissions\";\nimport { CollectionInference } from \"./types/collection_inference\";\nimport { PropertyFormDialog } from \"./ui/collection_editor/PropertyEditView\";\nimport { PersistedCollection } from \"./types/persisted_collection\";\nimport { CollectionGenerationCallback } from \"./api/generateCollectionApi\";\n\nexport const ConfigControllerContext = React.createContext<CollectionsConfigController>({} as any);\nexport const CollectionEditorContext = React.createContext<CollectionEditorController>({} as any);\n\nexport interface ConfigControllerProviderProps {\n /**\n * Controller for managing the collections' config.\n */\n collectionConfigController: CollectionsConfigController;\n\n /**\n * Callback used to infer the schema from the data.\n */\n collectionInference?: CollectionInference;\n\n /**\n * Use this builder to define the permissions for the configuration per user.\n */\n configPermissions?: CollectionEditorPermissionsBuilder;\n\n /**\n * Groups that cannot be used to create new collections.\n */\n reservedGroups?: string[];\n\n extraView?: {\n View: React.ComponentType<{\n path: string\n }>,\n icon: React.ReactNode\n };\n\n pathSuggestions?: string[];\n\n getUser?: (uid: string) => User | null;\n\n getData?: (path: string, parentPaths: string[]) => Promise<object[]>;\n\n onAnalyticsEvent?: (event: string, params?: object) => void;\n\n /**\n * Callback function for generating/modifying collections.\n * The plugin is API-agnostic - the consumer provides the implementation.\n */\n generateCollection?: CollectionGenerationCallback;\n\n}\n\nexport const ConfigControllerProvider = React.memo(\n function ConfigControllerProvider({\n children,\n collectionConfigController,\n configPermissions,\n reservedGroups,\n collectionInference,\n extraView,\n getUser,\n getData,\n onAnalyticsEvent,\n pathSuggestions,\n generateCollection\n }: PropsWithChildren<ConfigControllerProviderProps>) {\n\n const navigation = useNavigationController();\n const navigate = useNavigate();\n const snackbarController = useSnackbarController();\n const { propertyConfigs } = useCustomizationController();\n\n const [currentDialog, setCurrentDialog] = React.useState<{\n isNewCollection: boolean,\n parentCollection?: PersistedCollection,\n editedCollectionId?: string,\n fullPath?: string,\n parentCollectionIds: string[],\n initialValues?: {\n path?: string,\n group?: string,\n name?: string\n },\n copyFrom?: PersistedCollection,\n redirect: boolean,\n existingEntities?: Entity<any>[],\n pathSuggestions?: string[];\n initialView?: \"general\" | \"display\" | \"properties\";\n expandKanban?: boolean;\n }>();\n\n const [currentPropertyDialog, setCurrentPropertyDialog] = React.useState<{\n propertyKey?: string,\n property?: Property,\n namespace?: string,\n parentCollection?: PersistedCollection,\n currentPropertiesOrder?: string[],\n editedCollectionId: string,\n fullPath?: string,\n parentCollectionIds: string[],\n collectionEditable: boolean;\n existingEntities?: Entity<any>[];\n collection?: PersistedCollection;\n }>();\n\n const defaultConfigPermissions: CollectionEditorPermissionsBuilder = useCallback(() => ({\n createCollections: true,\n editCollections: true,\n deleteCollections: true\n }), []);\n\n const editCollection = ({\n id,\n fullPath,\n parentCollectionIds,\n parentCollection,\n existingEntities,\n initialView,\n expandKanban\n }: {\n id?: string,\n fullPath?: string,\n parentCollectionIds: string[],\n parentCollection?: PersistedCollection,\n existingEntities?: Entity<any>[],\n initialView?: \"general\" | \"display\" | \"properties\",\n expandKanban?: boolean\n }) => {\n console.debug(\"Edit collection\", id, fullPath, parentCollectionIds, parentCollection);\n onAnalyticsEvent?.(\"edit_collection\", {\n id,\n fullPath\n });\n setCurrentDialog({\n editedCollectionId: id,\n fullPath,\n parentCollectionIds,\n isNewCollection: false,\n parentCollection,\n redirect: false,\n existingEntities,\n pathSuggestions,\n initialView,\n expandKanban\n });\n };\n\n const editProperty = ({\n propertyKey,\n property,\n editedCollectionId,\n currentPropertiesOrder,\n parentCollectionIds,\n collection,\n existingEntities\n }: {\n propertyKey?: string,\n property?: Property,\n currentPropertiesOrder?: string[],\n editedCollectionId: string,\n parentCollectionIds: string[],\n collection: PersistedCollection,\n existingEntities?: Entity<any>[]\n }) => {\n console.debug(\"Edit property\", propertyKey, property, editedCollectionId, currentPropertiesOrder, parentCollectionIds, collection);\n onAnalyticsEvent?.(\"edit_property\", {\n propertyKey,\n editedCollectionId\n });\n // namespace is all the path until the last dot\n const namespace = propertyKey && propertyKey.includes(\".\")\n ? propertyKey.substring(0, propertyKey.lastIndexOf(\".\"))\n : undefined;\n const propertyKeyWithoutNamespace = propertyKey && propertyKey.includes(\".\")\n ? propertyKey.substring(propertyKey.lastIndexOf(\".\") + 1)\n : propertyKey;\n setCurrentPropertyDialog({\n propertyKey: propertyKeyWithoutNamespace,\n property,\n namespace,\n currentPropertiesOrder,\n editedCollectionId,\n parentCollectionIds,\n collectionEditable: collection?.editable === undefined || collection?.editable === true,\n existingEntities,\n collection\n });\n };\n\n const createCollection = ({\n parentCollectionIds,\n parentCollection,\n initialValues,\n copyFrom,\n redirect,\n sourceClick\n }: {\n parentCollectionIds: string[],\n parentCollection?: PersistedCollection\n initialValues?: {\n group?: string,\n path?: string,\n name?: string\n },\n copyFrom?: PersistedCollection,\n redirect: boolean,\n sourceClick?: string\n }) => {\n console.debug(\"Create collection\", {\n parentCollectionIds,\n parentCollection,\n initialValues,\n copyFrom,\n redirect,\n sourceClick\n });\n onAnalyticsEvent?.(copyFrom ? \"duplicate_collection\" : \"create_collection\", {\n parentCollectionIds,\n parentCollection,\n initialValues,\n redirect,\n sourceClick\n });\n setCurrentDialog({\n isNewCollection: true,\n parentCollectionIds,\n parentCollection,\n initialValues,\n copyFrom,\n redirect,\n pathSuggestions\n });\n };\n\n return (\n <ConfigControllerContext.Provider value={collectionConfigController}>\n <CollectionEditorContext.Provider\n value={{\n editCollection,\n createCollection,\n editProperty,\n configPermissions: configPermissions ?? defaultConfigPermissions,\n pathSuggestions\n }}>\n\n {children}\n\n <CollectionEditorDialog\n open={Boolean(currentDialog)}\n configController={collectionConfigController}\n isNewCollection={false}\n collectionInference={collectionInference}\n {...currentDialog}\n getData={getData}\n reservedGroups={reservedGroups}\n extraView={extraView}\n getUser={getUser}\n generateCollection={generateCollection}\n onAnalyticsEvent={onAnalyticsEvent}\n handleClose={(collection) => {\n if (currentDialog?.redirect) {\n if (collection && currentDialog?.isNewCollection && !currentDialog.parentCollectionIds.length) {\n const url = navigation.buildUrlCollectionPath(collection.id ?? collection.path);\n navigate(url);\n }\n }\n setCurrentDialog(undefined);\n }} />\n\n {/* Used for editing properties*/}\n <PropertyFormDialog\n open={Boolean(currentPropertyDialog)}\n includeIdAndName={true}\n existingProperty={Boolean(currentPropertyDialog?.propertyKey)}\n autoUpdateId={!currentPropertyDialog ? false : !currentPropertyDialog?.propertyKey}\n autoOpenTypeSelect={!currentPropertyDialog ? false : !currentPropertyDialog?.propertyKey}\n inArray={false}\n collectionEditable={currentPropertyDialog?.collectionEditable ?? false}\n getData={currentPropertyDialog?.existingEntities || (getData && currentPropertyDialog?.editedCollectionId)\n ? async () => {\n let data: object[] = [];\n // First, use existing entities if available (already loaded in table)\n if (currentPropertyDialog?.existingEntities) {\n data = currentPropertyDialog.existingEntities.map(e => e.values);\n }\n // If getData is available and we have a path, also fetch from database\n if (getData && currentPropertyDialog?.editedCollectionId) {\n console.debug(\"Get data for property, path:\", currentPropertyDialog?.editedCollectionId);\n const resolvedPath = navigation.resolveIdsFrom(currentPropertyDialog.editedCollectionId!);\n const fetchedData = await getData(resolvedPath, []);\n data.push(...fetchedData);\n }\n return data;\n }\n : undefined}\n onPropertyChanged={({\n id,\n property\n }) => {\n if (!currentPropertyDialog) return;\n if (!id) return;\n const newProperty = !(currentPropertyDialog.propertyKey);\n return collectionConfigController.saveProperty({\n path: currentPropertyDialog?.editedCollectionId,\n property,\n propertyKey: id,\n newPropertiesOrder: newProperty && currentPropertyDialog.currentPropertiesOrder ? [...currentPropertyDialog.currentPropertiesOrder, id] : undefined,\n namespace: currentPropertyDialog.namespace,\n parentCollectionIds: currentPropertyDialog.parentCollectionIds\n })\n .catch((e) => {\n console.error(e);\n snackbarController.open({\n type: \"error\",\n message: \"Error persisting property: \" + (e.message ?? \"Details in the console\")\n });\n return false;\n });\n }}\n onPropertyChangedImmediate={false}\n onDelete={() => {\n if (!currentPropertyDialog?.propertyKey) return;\n const newPropertiesOrder = currentPropertyDialog?.currentPropertiesOrder?.filter(p => p !== currentPropertyDialog?.propertyKey);\n return collectionConfigController.deleteProperty({\n path: currentPropertyDialog?.editedCollectionId,\n propertyKey: currentPropertyDialog?.propertyKey,\n namespace: currentPropertyDialog?.namespace,\n newPropertiesOrder,\n parentCollectionIds: currentPropertyDialog?.parentCollectionIds\n })\n .then(() => {\n setCurrentPropertyDialog(undefined);\n }).catch((e) => {\n console.error(e);\n snackbarController.open({\n type: \"error\",\n message: \"Error deleting property: \" + (e.message ?? \"Details in the console\")\n });\n return false;\n });\n }}\n onError={() => {\n }}\n onOkClicked={() => {\n setCurrentPropertyDialog(undefined);\n }}\n onCancel={() => {\n setCurrentPropertyDialog(undefined);\n }}\n initialErrors={{}}\n forceShowErrors={false}\n existingPropertyKeys={currentPropertyDialog?.collection?.properties ? Object.keys(currentPropertyDialog.collection.properties) : []}\n allowDataInference={true}\n propertyConfigs={propertyConfigs}\n property={currentPropertyDialog?.property}\n propertyKey={currentPropertyDialog?.propertyKey} />\n\n </CollectionEditorContext.Provider>\n\n </ConfigControllerContext.Provider>\n );\n }, equal);\n","import { CollectionActionsProps, useAuthController, useNavigationController } from \"@firecms/core\";\nimport { IconButton, SettingsIcon, Tooltip, } from \"@firecms/ui\";\n\nimport { useCollectionEditorController } from \"../useCollectionEditorController\";\nimport { PersistedCollection } from \"../types/persisted_collection\";\n\nexport function EditorCollectionAction({\n path: fullPath,\n parentCollectionIds,\n collection,\n tableController\n }: CollectionActionsProps) {\n\n const authController = useAuthController();\n const navigationController = useNavigationController();\n const collectionEditorController = useCollectionEditorController();\n\n const parentCollection = navigationController.getCollectionFromIds(parentCollectionIds);\n\n const canEditCollection = collectionEditorController.configPermissions\n ? collectionEditorController.configPermissions({\n user: authController.user,\n collection\n }).editCollections\n : true;\n\n const editorButton = <Tooltip\n asChild={true}\n title={canEditCollection ? \"Edit collection\" : \"You don't have permissions to edit this collection\"}>\n <IconButton\n size={\"small\"}\n color={\"primary\"}\n disabled={!canEditCollection}\n onClick={canEditCollection\n ? () => collectionEditorController?.editCollection({\n id: collection.id,\n fullPath,\n parentCollectionIds,\n parentCollection: parentCollection as PersistedCollection,\n existingEntities: tableController?.data ?? []\n })\n : undefined}>\n <SettingsIcon size={\"small\"}/>\n </IconButton>\n </Tooltip>;\n\n return <>\n {editorButton}\n </>\n\n}\n","import { useContext } from \"react\";\nimport { CollectionsConfigController } from \"./types/config_controller\";\nimport { ConfigControllerContext } from \"./ConfigControllerProvider\";\n\n/**\n * Use this hook to access the configuration controller.\n * You can use it to get the list of collections, and to save/delete collections.\n */\nexport const useCollectionsConfigController = (): CollectionsConfigController => useContext(ConfigControllerContext);\n","import {\n ConfirmationDialog,\n PluginHomePageActionsProps,\n useAuthController,\n useSnackbarController\n} from \"@firecms/core\";\nimport { ContentCopyIcon, DeleteIcon, IconButton, Menu, MenuItem, MoreVertIcon, SettingsIcon, } from \"@firecms/ui\";\nimport { useCollectionEditorController } from \"../useCollectionEditorController\";\nimport { useState } from \"react\";\nimport { useCollectionsConfigController } from \"../useCollectionsConfigController\";\n\nexport function HomePageEditorCollectionAction({\n path,\n collection\n}: PluginHomePageActionsProps) {\n\n const snackbarController = useSnackbarController();\n const authController = useAuthController();\n const configController = useCollectionsConfigController();\n const collectionEditorController = useCollectionEditorController();\n\n const permissions = collectionEditorController?.configPermissions\n ? collectionEditorController.configPermissions({\n user: authController.user,\n collection\n })\n : {\n createCollections: false,\n editCollections: false,\n deleteCollections: false\n };\n\n const onEditCollectionClicked = () => {\n collectionEditorController?.editCollection({\n id: collection.id,\n parentCollectionIds: []\n });\n };\n\n const onDuplicateCollectionClicked = () => {\n // Use copyFrom to duplicate the collection with all properties\n // The editor will handle clearing name, path, and id\n collectionEditorController?.createCollection({\n copyFrom: collection,\n parentCollectionIds: [],\n redirect: true,\n sourceClick: \"home_page_duplicate\"\n });\n };\n\n const [deleteRequested, setDeleteRequested] = useState(false);\n\n const deleteCollection = () => {\n configController?.deleteCollection({ id: collection.id }).then(() => {\n setDeleteRequested(false);\n snackbarController.open({\n message: \"Collection deleted\",\n type: \"success\"\n });\n });\n };\n\n return <>\n\n <div>\n {permissions.deleteCollections &&\n <Menu\n trigger={<IconButton size={\"small\"}>\n <MoreVertIcon size={\"small\"} />\n </IconButton>}\n >\n {permissions.createCollections &&\n <MenuItem\n dense={true}\n onClick={(event) => {\n event.preventDefault();\n event.stopPropagation();\n onDuplicateCollectionClicked();\n }}>\n <ContentCopyIcon />\n Duplicate\n </MenuItem>\n }\n <MenuItem\n dense={true}\n onClick={(event) => {\n event.preventDefault();\n event.stopPropagation();\n setDeleteRequested(true);\n }}>\n <DeleteIcon />\n Delete\n </MenuItem>\n\n </Menu>\n\n }\n\n {permissions.editCollections &&\n <IconButton\n size={\"small\"}\n onClick={(event) => {\n onEditCollectionClicked();\n }}>\n <SettingsIcon size={\"small\"} />\n </IconButton>}\n </div>\n\n <ConfirmationDialog\n open={deleteRequested}\n onAccept={deleteCollection}\n onCancel={() => setDeleteRequested(false)}\n title={<>Delete this collection?</>}\n body={<> This will <b>not\n delete any data</b>, only\n the collection in the CMS</>} />\n </>;\n\n}\n","import { EntityTableController, ResolvedProperty } from \"@firecms/core\";\nimport { IconButton, SettingsIcon, Tooltip } from \"@firecms/ui\";\nimport React from \"react\";\nimport { useCollectionEditorController } from \"../useCollectionEditorController\";\nimport { PersistedCollection } from \"../types/persisted_collection\";\n\nexport function CollectionViewHeaderAction({\n propertyKey,\n onHover,\n property,\n fullPath,\n parentCollectionIds,\n collection,\n tableController\n }: {\n property: ResolvedProperty,\n propertyKey: string,\n onHover: boolean,\n fullPath: string,\n parentCollectionIds: string[],\n collection: PersistedCollection;\n tableController: EntityTableController;\n}) {\n\n const collectionEditorController = useCollectionEditorController();\n\n return (\n <Tooltip\n asChild={true}\n title={\"Edit\"}>\n <IconButton\n className={onHover ? \"bg-white dark:bg-surface-950\" : \"hidden\"}\n onClick={() => {\n collectionEditorController.editProperty({\n propertyKey,\n property,\n editedCollectionId: collection.id,\n parentCollectionIds,\n collection,\n existingEntities: tableController.data ?? []\n });\n }}\n size={\"small\"}>\n <SettingsIcon size={\"small\"}/>\n </IconButton>\n </Tooltip>\n )\n}\n","import { EntityTableController, getDefaultPropertiesOrder, useAuthController } from \"@firecms/core\";\nimport { AddIcon, Tooltip } from \"@firecms/ui\";\nimport { useCollectionEditorController } from \"../useCollectionEditorController\";\nimport { PersistedCollection } from \"../types/persisted_collection\";\n\nexport function PropertyAddColumnComponent({\n fullPath,\n parentCollectionIds,\n collection,\n tableController\n }: {\n fullPath: string,\n parentCollectionIds: string[],\n collection: PersistedCollection;\n tableController: EntityTableController;\n}) {\n\n const authController = useAuthController();\n const collectionEditorController = useCollectionEditorController();\n const canEditCollection = collectionEditorController.configPermissions\n ? collectionEditorController.configPermissions({\n user: authController.user,\n collection\n }).editCollections\n : true;\n\n return (\n <Tooltip\n asChild={true}\n title={canEditCollection ? \"Add new property\" : \"You don't have permission to add new properties\"}>\n <div\n className={\"p-0.5 w-20 h-full flex items-center justify-center cursor-pointer bg-surface-100 bg-opacity-40 bg-surface-100/40 hover:bg-surface-100 dark:bg-surface-950 dark:bg-opacity-40 dark:bg-surface-950/40 dark:hover:bg-surface-950\"}\n // className={onHover ? \"bg-white dark:bg-surface-950\" : undefined}\n onClick={() => {\n collectionEditorController.editProperty({\n editedCollectionId: collection.id,\n parentCollectionIds,\n currentPropertiesOrder: getDefaultPropertiesOrder(collection),\n collection,\n existingEntities: tableController.data\n });\n }}>\n <AddIcon color={\"inherit\"}/>\n </div>\n </Tooltip>\n )\n}\n","import { AddIcon, Button } from \"@firecms/ui\";\nimport { useCollectionEditorController } from \"../useCollectionEditorController\";\n\nexport function NewCollectionButton() {\n const collectionEditorController = useCollectionEditorController();\n return <div className={\"bg-surface-50 dark:bg-surface-900 min-w-fit rounded\"}>\n <Button className={\"min-w-fit\"}\n\n onClick={() => collectionEditorController.createCollection({\n parentCollectionIds: [],\n redirect: true,\n sourceClick: \"new_collection_button\"\n })}>\n <AddIcon/>\n New collection\n </Button>\n </div>\n}\n","import equal from \"react-fast-compare\"\n\nimport { CollectionActionsProps, mergeDeep, useAuthController, useSnackbarController } from \"@firecms/core\";\nimport { Button, SaveIcon, Tooltip, UndoIcon, } from \"@firecms/ui\";\n\nimport { useCollectionEditorController } from \"../useCollectionEditorController\";\nimport { useCollectionsConfigController } from \"../useCollectionsConfigController\";\nimport { PersistedCollection } from \"../types/persisted_collection\";\n\nexport function EditorCollectionActionStart({\n path: fullPath,\n parentCollectionIds,\n collection,\n tableController\n }: CollectionActionsProps) {\n\n const authController = useAuthController();\n const collectionEditorController = useCollectionEditorController();\n const configController = useCollectionsConfigController();\n const snackbarController = useSnackbarController();\n\n const canEditCollection = collectionEditorController.configPermissions\n ? collectionEditorController.configPermissions({\n user: authController.user,\n collection\n }).editCollections\n : true;\n\n let saveDefaultFilterButton = null;\n if (!equal(getObjectOrNull(tableController.filterValues), getObjectOrNull(collection.initialFilter)) ||\n !equal(getObjectOrNull(tableController.sortBy), getObjectOrNull(collection.initialSort))) {\n saveDefaultFilterButton = <>\n <Tooltip\n asChild={true}\n title={tableController.sortBy || tableController.filterValues ? \"Save default filter and sort\" : \"Clear default filter and sort\"}>\n <Button\n size={\"small\"}\n variant={\"text\"}\n onClick={() => configController\n ?.saveCollection({\n id: collection.id,\n parentCollectionIds,\n collectionData: mergeDeep(collection as PersistedCollection,\n {\n initialFilter: tableController.filterValues ?? null,\n initialSort: tableController.sortBy ?? null\n })\n }).then(() => {\n snackbarController.open({\n type: \"success\",\n message: \"Default config saved\"\n });\n })}>\n <SaveIcon/>\n </Button>\n </Tooltip>\n\n {(collection.initialFilter || collection.initialSort) && <Tooltip\n title={\"Reset to default filter and sort\"}>\n <Button\n size={\"small\"}\n variant={\"text\"}\n onClick={() => {\n tableController.clearFilter?.();\n if (collection?.initialFilter)\n tableController.setFilterValues?.(collection?.initialFilter);\n if (collection?.initialSort)\n tableController.setSortBy?.(collection?.initialSort);\n }}>\n <UndoIcon/>\n </Button>\n </Tooltip>}\n </>;\n }\n\n return <>\n {canEditCollection && saveDefaultFilterButton}\n </>\n\n}\n\nfunction getObjectOrNull(o?: object): object | null {\n if (o && Object.keys(o).length === 0)\n return o\n return o ?? null;\n}\n","import { PluginHomePageAdditionalCardsProps, useAuthController } from \"@firecms/core\";\nimport { AddIcon, Card, cls, Typography } from \"@firecms/ui\";\nimport { useCollectionEditorController } from \"../useCollectionEditorController\";\n\nexport function NewCollectionCard({\n group,\n context\n }: PluginHomePageAdditionalCardsProps) {\n\n if (!context.navigation.topLevelNavigation)\n throw Error(\"Navigation not ready in FireCMSHomePage\");\n\n const authController = useAuthController();\n\n const collectionEditorController = useCollectionEditorController();\n const canCreateCollections = collectionEditorController.configPermissions\n ? collectionEditorController.configPermissions({\n user: authController.user,\n }).createCollections\n : true;\n\n return (\n <Card className={cls(\"h-full p-4 min-h-[124px]\")}\n onClick={collectionEditorController && canCreateCollections\n ? () => collectionEditorController.createCollection({\n initialValues: group ? { group } : undefined,\n parentCollectionIds: [],\n redirect: true,\n sourceClick: \"new_collection_card\"\n })\n : undefined}>\n\n <div\n className=\"flex items-center justify-center h-full w-full flex-grow flex-col\">\n <AddIcon color=\"primary\" size={\"large\"}/>\n <Typography color=\"primary\"\n variant={\"caption\"}\n className={\"font-medium\"}>{\"Add new collection\".toUpperCase()}</Typography>\n\n {!canCreateCollections &&\n <Typography variant={\"caption\"}>You don't have permissions to create\n collections</Typography>\n }\n </div>\n\n </Card>\n );\n}\n","import { PluginFormActionProps, useAuthController, useNavigationController } from \"@firecms/core\";\nimport { IconButton, SettingsIcon, Tooltip, } from \"@firecms/ui\";\n\nimport { useCollectionEditorController } from \"../useCollectionEditorController\";\nimport { PersistedCollection } from \"../types/persisted_collection\";\n\nexport function EditorEntityAction({\n path: fullPath,\n parentCollectionIds,\n collection,\n formContext\n }: PluginFormActionProps) {\n\n const authController = useAuthController();\n const navigationController = useNavigationController();\n const collectionEditorController = useCollectionEditorController();\n\n const parentCollection = navigationController.getCollectionFromIds(parentCollectionIds);\n\n const canEditCollection = collectionEditorController.configPermissions\n ? collectionEditorController.configPermissions({\n user: authController.user,\n collection\n }).editCollections\n : true;\n\n const isDirty = formContext?.formex.dirty ?? false;\n\n const editorButton = <Tooltip\n asChild={true}\n title={canEditCollection ? (isDirty ? \"You need to save the document before changing the schema\" : \"Edit schema for this form\") : \"You don't have permissions to edit this collection\"}>\n <IconButton\n color={\"primary\"}\n disabled={!canEditCollection || isDirty}\n onClick={canEditCollection\n ? () => collectionEditorController?.editCollection({\n id: collection.id,\n fullPath,\n parentCollectionIds,\n parentCollection: parentCollection as PersistedCollection,\n })\n : undefined}>\n <SettingsIcon size={\"small\"}/>\n </IconButton>\n </Tooltip>;\n\n return <>\n {editorButton}\n </>\n\n}\n","import React from \"react\";\nimport { EntityCollection, useNavigationController } from \"@firecms/core\";\nimport { Button } from \"@firecms/ui\";\nimport { useCollectionEditorController } from \"../useCollectionEditorController\";\n\n/**\n * Component rendered when Kanban view is missing orderProperty configuration.\n * Provides a CTA button to open the collection editor to configure Kanban.\n */\nexport function KanbanSetupAction({\n collection,\n fullPath,\n parentCollectionIds\n}: {\n collection: EntityCollection;\n fullPath: string;\n parentCollectionIds: string[];\n}) {\n const collectionEditorController = useCollectionEditorController();\n\n const handleConfigureClick = () => {\n collectionEditorController.editCollection({\n id: collection.id,\n parentCollectionIds,\n initialView: \"display\",\n expandKanban: true\n });\n };\n\n return (\n <Button\n variant=\"outlined\"\n onClick={handleConfigureClick}\n >\n Configure Kanban\n </Button>\n );\n}\n","import React, { useCallback, useMemo, useState } from \"react\";\nimport {\n EntityCollection,\n getPropertyInPath,\n ResolvedStringProperty,\n resolveCollection,\n resolveEnumValues,\n toSnakeCase,\n useAuthController,\n useCustomizationController\n} from \"@firecms/core\";\nimport {\n AddIcon,\n Button,\n cls,\n defaultBorderMixin,\n Dialog,\n DialogActions,\n DialogContent,\n IconButton,\n TextField,\n Typography\n} from \"@firecms/ui\";\nimport { useCollectionsConfigController } from \"../useCollectionsConfigController\";\n\n/**\n * Component rendered at the end of the Kanban board to add new columns (enum values).\n * Opens a dialog to input a new enum value for the column property.\n */\nexport function AddKanbanColumnAction({\n collection,\n fullPath,\n parentCollectionIds,\n columnProperty\n}: {\n collection: EntityCollection;\n fullPath: string;\n parentCollectionIds: string[];\n columnProperty: string;\n}) {\n const [dialogOpen, setDialogOpen] = useState(false);\n const [newValueLabel, setNewValueLabel] = useState(\"\");\n const [saving, setSaving] = useState(false);\n\n const configController = useCollectionsConfigController();\n const authController = useAuthController();\n const customizationController = useCustomizationController();\n\n const resolvedCollection = useMemo(() => resolveCollection({\n collection,\n path: fullPath,\n propertyConfigs: customizationController.propertyConfigs,\n authController\n }), [collection, fullPath, customizationController.propertyConfigs, authController]);\n\n // Get current enum values\n const currentEnumValues = useMemo(() => {\n const property = getPropertyInPath(resolvedCollection.properties, columnProperty);\n if (!property || !('dataType' in property) || property.dataType !== \"string\") {\n return [];\n }\n const stringProperty = property as ResolvedStringProperty;\n if (!stringProperty.enumValues) {\n return [];\n }\n return resolveEnumValues(stringProperty.enumValues) ?? [];\n }, [resolvedCollection, columnProperty]);\n\n const handleAddColumn = useCallback(async () => {\n if (!newValueLabel.trim() || !configController) return;\n\n setSaving(true);\n try {\n // Check for property in persisted collection first, then resolved collection\n // This handles code-defined properties that aren't in the persisted config\n let property = collection?.properties?.[columnProperty];\n let isCodeDefinedProperty = false;\n\n if (!property || typeof property === 'function') {\n // Property not in persisted config - check resolved collection\n property = resolvedCollection.properties?.[columnProperty];\n isCodeDefinedProperty = true;\n }\n\n // Type guard: property must be an object with dataType === \"string\"\n if (!property || typeof property === 'function' || !('dataType' in property) || property.dataType !== \"string\") {\n console.error(\"Column property not found or not a string. Property:\", property);\n setSaving(false);\n return;\n }\n\n // Now we know property is a StringProperty\n const stringProperty = property as { dataType: \"string\"; enumValues?: any; name?: string };\n\n // Create new enum value\n const newId = toSnakeCase(newValueLabel.trim());\n const newEnumValue = {\n id: newId,\n label: newValueLabel.trim()\n };\n\n // Get existing enum values from the resolved property (current runtime values)\n // Use currentEnumValues which is already computed from resolvedCollection\n const existingEnumValues = currentEnumValues.map(ev => ({\n id: ev.id,\n label: ev.label\n }));\n\n // Add new enum value\n const updatedEnumValues = [...existingEnumValues, newEnumValue];\n\n // Build the property to save\n // If it's code-defined, we create a minimal override with just enumValues\n const updatedProperty = isCodeDefinedProperty\n ? {\n dataType: \"string\" as const,\n name: stringProperty.name || columnProperty,\n enumValues: updatedEnumValues\n }\n : {\n ...property,\n enumValues: updatedEnumValues\n };\n\n // Save the updated property\n await configController.saveProperty({\n path: fullPath,\n propertyKey: columnProperty,\n property: updatedProperty as any,\n parentCollectionIds\n });\n\n setNewValueLabel(\"\");\n setDialogOpen(false);\n } catch (error) {\n console.error(\"Error adding new column:\", error);\n } finally {\n setSaving(false);\n }\n }, [newValueLabel, configController, collection, columnProperty, fullPath, parentCollectionIds]);\n\n const handleKeyDown = (e: React.KeyboardEvent) => {\n if (e.key === \"Enter\" && newValueLabel.trim()) {\n handleAddColumn();\n }\n };\n\n return (\n <>\n <div\n className={cls(\n \"border h-full w-80 min-w-80 mx-2 flex flex-col items-center justify-center rounded-md\",\n \"bg-surface-50 dark:bg-surface-950 hover:bg-surface-100 dark:hover:bg-surface-900\",\n \"cursor-pointer transition-colors duration-200 ease-in-out\",\n defaultBorderMixin\n )}\n onClick={() => setDialogOpen(true)}\n >\n <IconButton size=\"large\" className=\"opacity-60 hover:opacity-100\">\n <AddIcon size=\"large\" />\n </IconButton>\n <Typography variant=\"caption\" color=\"secondary\" className=\"mt-2\">\n Add Column\n </Typography>\n </div>\n\n <Dialog open={dialogOpen} onOpenChange={setDialogOpen}>\n <DialogContent className=\"max-w-md\">\n <Typography variant=\"h6\" className=\"mb-4\">\n Add New Column\n </Typography>\n <Typography variant=\"body2\" color=\"secondary\" className=\"mb-4\">\n Add a new option to the \"{columnProperty}\" property.\n This will create a new column in the Kanban board.\n </Typography>\n <TextField\n label=\"Column Name\"\n value={newValueLabel}\n onChange={(e) => setNewValueLabel(e.target.value)}\n onKeyDown={handleKeyDown}\n autoFocus\n disabled={saving}\n />\n </DialogContent>\n <DialogActions>\n <Button\n variant=\"text\"\n onClick={() => setDialogOpen(false)}\n disabled={saving}\n >\n Cancel\n </Button>\n <Button\n onClick={handleAddColumn}\n disabled={saving || !newValueLabel.trim()}\n >\n {saving ? \"Adding...\" : \"Add Column\"}\n </Button>\n </DialogActions>\n </Dialog>\n </>\n );\n}\n","import React from \"react\";\nimport { FireCMSPlugin, useAuthController, useNavigationController, User } from \"@firecms/core\";\nimport { ConfigControllerProvider } from \"./ConfigControllerProvider\";\nimport { CollectionEditorPermissionsBuilder } from \"./types/config_permissions\";\nimport { EditorCollectionAction } from \"./ui/EditorCollectionAction\";\nimport { HomePageEditorCollectionAction } from \"./ui/HomePageEditorCollectionAction\";\nimport { PersistedCollection } from \"./types/persisted_collection\";\nimport { CollectionInference } from \"./types/collection_inference\";\nimport { CollectionsConfigController } from \"./types/config_controller\";\nimport { CollectionGenerationCallback } from \"./api/generateCollectionApi\";\nimport { CollectionViewHeaderAction } from \"./ui/CollectionViewHeaderAction\";\nimport { PropertyAddColumnComponent } from \"./ui/PropertyAddColumnComponent\";\nimport { NewCollectionButton } from \"./ui/NewCollectionButton\";\nimport { AddIcon, Button, Paper, Typography } from \"@firecms/ui\";\nimport { useCollectionEditorController } from \"./useCollectionEditorController\";\nimport { EditorCollectionActionStart } from \"./ui/EditorCollectionActionStart\";\nimport { NewCollectionCard } from \"./ui/NewCollectionCard\";\nimport { EditorEntityAction } from \"./ui/EditorEntityAction\";\nimport { KanbanSetupAction } from \"./ui/KanbanSetupAction\";\nimport { AddKanbanColumnAction } from \"./ui/AddKanbanColumnAction\";\n\nexport interface CollectionConfigControllerProps<EC extends PersistedCollection = PersistedCollection, USER extends User = User> {\n\n /**\n * Firebase app where the configuration is saved.\n */\n collectionConfigController: CollectionsConfigController;\n\n /**\n * Define what actions can be performed on the configuration.\n */\n configPermissions?: CollectionEditorPermissionsBuilder<USER, EC>;\n\n /**\n * The words you define here will not be allowed to be used as group\n * names when creating collections.\n * e.g. [\"admin\"]\n */\n reservedGroups?: string[];\n\n extraView?: {\n View: React.ComponentType<{\n path: string\n }>,\n icon: React.ReactNode\n };\n\n collectionInference?: CollectionInference;\n\n pathSuggestions?: string[];\n\n getData?: (path: string, parentPaths: string[]) => Promise<object[]>;\n\n getUser?: (uid: string) => USER | null;\n\n onAnalyticsEvent?: (event: string, params?: object) => void;\n\n includeIntroView?: boolean;\n\n /**\n * Callback function for generating/modifying collections.\n * The plugin is API-agnostic - the consumer provides the implementation.\n */\n generateCollection?: CollectionGenerationCallback;\n\n}\n\n/**\n * Use this hook to initialise the Collection Editor plugin.\n * This is likely the only hook you will need to use.\n * @param firebaseApp Firebase app where your project data lives.\n * @param configPermissions\n * @param reservedGroups\n * @param extraView\n * @param getData\n * @param getUser\n * @param collectionInference\n */\nexport function useCollectionEditorPlugin<EC extends PersistedCollection = PersistedCollection, USER extends User = User>\n ({\n collectionConfigController,\n configPermissions,\n reservedGroups,\n extraView,\n getUser,\n collectionInference,\n getData,\n onAnalyticsEvent,\n includeIntroView = true,\n pathSuggestions,\n generateCollection\n }: CollectionConfigControllerProps<EC, USER>): FireCMSPlugin<any, any, PersistedCollection> {\n\n return {\n key: \"collection_editor\",\n loading: collectionConfigController.loading,\n provider: {\n Component: ConfigControllerProvider,\n props: {\n collectionConfigController,\n configPermissions,\n collectionInference,\n reservedGroups,\n extraView,\n getUser,\n getData,\n onAnalyticsEvent,\n pathSuggestions,\n generateCollection\n }\n },\n homePage: {\n additionalActions: <NewCollectionButton />,\n additionalChildrenStart: includeIntroView ? <IntroWidget /> : undefined,\n CollectionActions: HomePageEditorCollectionAction,\n AdditionalCards: NewCollectionCard,\n allowDragAndDrop: true,\n navigationEntries: collectionConfigController.navigationEntries,\n onNavigationEntriesUpdate: collectionConfigController.saveNavigationEntries,\n },\n collectionView: {\n CollectionActionsStart: EditorCollectionActionStart,\n CollectionActions: EditorCollectionAction,\n HeaderAction: CollectionViewHeaderAction,\n AddColumnComponent: PropertyAddColumnComponent,\n onColumnsReorder: collectionConfigController.updatePropertiesOrder,\n onKanbanColumnsReorder: collectionConfigController.updateKanbanColumnsOrder,\n KanbanSetupComponent: KanbanSetupAction,\n AddKanbanColumnComponent: AddKanbanColumnAction\n },\n form: {\n ActionsTop: EditorEntityAction,\n }\n };\n}\n\nexport function IntroWidget() {\n\n const navigation = useNavigationController();\n if (!navigation.topLevelNavigation)\n throw Error(\"Navigation not ready in FireCMSHomePage\");\n\n const authController = useAuthController();\n\n const collectionEditorController = useCollectionEditorController();\n const canCreateCollections = collectionEditorController.configPermissions\n ? collectionEditorController.configPermissions({\n user: authController.user,\n }).createCollections\n : true;\n\n if (!navigation.initialised || (navigation.collections ?? []).length > 0) {\n return null;\n }\n\n return (\n <Paper\n className={\"my-4 px-4 py-6 flex flex-col bg-white dark:bg-surface-accent-800 gap-2\"}>\n <Typography variant={\"subtitle2\"} className={\"uppercase\"}>No collections found</Typography>\n <Typography>\n Start building collections in FireCMS easily. Map them to your existing\n database data, import from files, or use our templates.\n </Typography>\n {canCreateCollections && <Button\n onClick={collectionEditorController && canCreateCollections\n ? () => collectionEditorController.createCollection({\n parentCollectionIds: [],\n redirect: true,\n sourceClick: \"new_collection_card\"\n })\n : undefined}>\n <AddIcon />Create your first collection\n </Button>}\n <Typography color={\"secondary\"}>\n You can also define collections programmatically.\n </Typography>\n </Paper>\n );\n}\n","import {\n EntityCollection,\n joinCollectionLists,\n makePropertiesEditable,\n ModifyCollectionProps,\n Properties\n} from \"@firecms/core\";\nimport { PersistedCollection } from \"../types/persisted_collection\";\n\n/**\n * Function in charge of merging collections defined in code with those stored in the backend.\n */\nexport const mergeCollections = (baseCollections: EntityCollection[],\n backendCollections: PersistedCollection[] = [],\n modifyCollection?: (props: ModifyCollectionProps) => EntityCollection | void\n) => {\n\n const markAsEditable = (c: PersistedCollection) => {\n makePropertiesEditable(c.properties as Properties);\n c.subcollections?.forEach(markAsEditable);\n };\n\n backendCollections.forEach(markAsEditable);\n\n const result = joinCollectionLists(baseCollections, backendCollections, [], modifyCollection);\n\n // sort the collections so they are in the same order as the base collections\n result.sort((a, b) => {\n const indexA = baseCollections.findIndex(c => c.id === a.id);\n const indexB = baseCollections.findIndex(c => c.id === b.id);\n\n if (indexA === -1 && indexB === -1) {\n return 0; // Keep original order for items not in baseCollections\n }\n if (indexA === -1) {\n return 1; // a is not in base, so it goes to the end\n }\n if (indexB === -1) {\n return -1; // b is not in base, so it goes to the end\n }\n return indexA - indexB;\n });\n\n return result;\n}\n","import { ErrorView, prettifyIdentifier, useNavigationController } from \"@firecms/core\";\nimport { useCollectionEditorController } from \"../useCollectionEditorController\";\nimport { Button } from \"@firecms/ui\";\n\nexport function MissingReferenceWidget({ path: pathProp }: {\n path: string\n}) {\n const navigation = useNavigationController();\n const path = getLastSegment(pathProp);\n const parentCollectionIds = navigation.getParentCollectionIds(pathProp);\n const collectionEditor = useCollectionEditorController();\n return <div className={\"p-1 flex flex-col items-center\"}>\n <ErrorView error={\"No collection for path: \" + path}/>\n <Button className={\"mx-2\"}\n size={\"small\"}\n onClick={() => {\n collectionEditor.createCollection({\n initialValues: { path, name: prettifyIdentifier(path) },\n parentCollectionIds,\n redirect: false,\n sourceClick: \"missing_reference\"\n });\n }}>\n Create\n </Button>\n </div>;\n}\n\nfunction getParentPathSegments(path: string): string[] {\n const segments = path.split(\"/\");\n return segments.filter((segment, index) => index % 2 === 0 && index !== segments.length - 1);\n}\n\nfunction getLastSegment(path: string): string {\n const segments = path.split(\"/\");\n return segments[segments.length - 1];\n}\n"],"names":["YupSchema","Yup","object","shape","id","string","required","name","path","GeneralSettingsForm","t0","$","_c","isNewCollection","parentCollection","values","setFieldValue","handleChange","touched","errors","setFieldTouched","submitCount","useFormex","iconDialogOpen","setIconDialogOpen","useState","useAuthController","useCustomizationController","t1","databaseId","undefined","updateDatabaseId","t2","pathTouched","getIn","toSnakeCase","idTouched","singularNameTouched","singular","updateName","t3","IconForView","collectionIcon","isSubcollection","showErrors","t4","t5","t6","Typography","t7","t8","Symbol","for","t9","jsx","Tooltip","IconButton","t10","t11","Chip","jsxs","t12","t13","t14","e","target","value","t15","Boolean","t16","TextField","t17","t18","t19","FieldCaption","t20","t21","cls","t22","t23","Field","DebouncedTextField","t24","t25","t26","t27","t28","singularName","t29","e_0","t30","t31","t32","t33","t34","t35","t36","description","t37","t38","t39","t40","t41","t42","t43","t44","t45","t46","t47","t48","t49","t50","v","t51","collectionGroup","t52","BooleanSwitchWithLabel","t53","t54","t55","t56","t57","HistoryIcon","t58","history","t59","t60","v_0","t61","t62","t63","t64","t65","customId","t66","v_1","Error","t67","t68","t69","t70","SelectItem","t71","Select","_temp","t72","t73","t74","SearchIcon","t75","v_2","t76","textSearchEnabled","t77","t78","t79","t80","ExpandablePanel","t81","height","t82","icon","t83","t84","SearchIconsView","t85","Dialog","t86","Container","DefaultDatabaseField","onDatabaseIdUpdate","LayoutModeSwitch","onChange","className","label","VerticalSplitIcon","SquareIcon","ToggleButtonGroup","ViewModeSwitch","ListIcon","AppsIcon","ViewKanbanIcon","EnumForm","enumValues","onValuesChanged","onError","updateIds","disabled","allowDataInference","getData","forEach","enumValue","index","hasError","Object","keys","length","initialValues","validateOnChange","validation","formex","useCreateFormex","values_0","errors_0","useEffect","Formex","EnumFormFields","enumValuesPath","shouldUpdateId","lastInternalIdAdded","setLastInternalIdAdded","React","editDialogIndex","setEditDialogIndex","inferring","setInferring","Set","inferredValuesRef","useRef","inferredValues","current","internalId","justAdded","entryError","has","buildEntry","console","warn","then","data","flatData","flat","fieldData","Array","from","currentEnumValues","foundEnumValues","extractEnumFromValues","newEnumValues","filter","some","enumValue_0","add","catch","finally","inferValues","Button","CircularProgress","FindInPageIcon","ArrayContainer","Paper","error","EnumEntry","memo","EnumEntryInternal","updateId","autoFocus","onDialogOpen","inferredEntry","shouldUpdateIdRef","idValue","labelValue","currentLabelRef","colorValue","getColorSchemeForKey","getColorSchemeForSeed","String","colorScheme","color","Fragment","backgroundColor","Badge","SettingsIcon","areEqual","prevProps","nextProps","equal","EnumEntryDialog","open","onClose","idError","open_0","DialogTitle","ColorPicker","DialogContent","DialogActions","SwitchControl","field","form","tooltip","size","allowIndeterminate","checked","formControlLabel","GeneralPropertyValidation","validationRequired","validationUnique","field_0","form_0","validationRequiredMessage","StringPropertyValidation","lowercase","matches","max","min","trim","uppercase","matchesError","matchesValue","serializeRegExp","matchesStringValue","validationLowercase","validationUppercase","validationTrim","field_1","form_1","validationLength","validationMin","validationMax","validationMatches","ArrayPropertyValidation","ValidationPanel","children","RuleIcon","EnumPropertyField","multiselect","propertyNamespace","setFieldError","snackbarContext","useSnackbarController","defaultValue","valuesEnumValues","useMemo","resolveEnumValues","enumIds","map","includes","type","message","fullPropertyPath","res","entry","toString","fileTypes","StoragePropertyField","multiple","existing","baseStoragePath","acceptedFiles","fileName","maxSize","storagePath","storeUrl","includeBucketUrl","imageResize","imageResizeMaxWidth","imageResizeMaxHeight","imageResizeMode","imageResizeFormat","imageResizeQuality","fileNameValue","storagePathValue","T0","T1","maxSizeValue","imageResizeMaxWidthValue","imageResizeMaxHeightValue","imageResizeModeValue","imageResizeFormatValue","imageResizeQualityValue","storedValue","fileTypesValue","isArray","allFileTypesSelected","handleTypesChange","hasFilenameCallback","hasStoragePathCallback","CloudUploadIcon","entries","value_0","MultiSelectItem","preventDefault","stopPropagation","MultiSelect","_temp3","value_1","parseInt","e_1","value_2","e_2","value_3","value_4","_temp4","value_5","_temp5","e_3","value_6","numValue","selected_1","selected","charAt","toUpperCase","slice","selected_0","_temp2","join","editableProperty","property","isPropertyBuilder","dataType","of","editable","removeNonEditableProperties","properties","_","key","propertyOrBuilder","reduce","a","b","PropertyFieldPreview","onClick","includeName","includeEditButton","propertyConfigs","getFieldConfig","propertyConfig","borderColorClass","PropertyConfigBadge","cardClickableMixin","cardSelectedMixin","cardMixin","ErrorBoundary","NonEditablePropertyPreview","FunctionsIcon","DoNotDisturbOnIcon","idToPropertiesPath","replaceAll","namespaceToPropertiesPath","namespace","namespaceToPropertiesOrderPath","getFullId","propertyKey","getFullIdPath","keyWithNamespace","AIModifiedPathsContext","createContext","AIModifiedPathsProvider","modifiedPaths","setModifiedPaths","generationCounter","setGenerationCounter","operations","prev","newSet","op","parts","split","addModifiedPaths","prev_1","newSet_0","p","startsWith","delete","clearPath","clearAllPaths","path_0","p_0","isPathModified","prev_0","useAIModifiedPaths","useContext","PropertyTree","selectedPropertyKey","onPropertyClick","propertiesOrder","propertiesOrderProp","additionalFields","onPropertyMove","onPropertyRemove","inferredPropertyKeys","collectionEditable","propertyKeys","filteredOrder","missingKeys","key_0","activationConstraint","distance","coordinateGetter","sortableKeyboardCoordinates","sensors","useSensors","useSensor","PointerSensor","KeyboardSensor","handleDragEnd","event","active","over","activeId","overId","activeKey","pop","overKey","oldIndex","indexOf","newIndex","newPropertiesOrder","removed","splice","items","key_1","DndContext","closestCenter","restrictToVerticalAxis","SortableContext","verticalListSortingStrategy","additionalField","find","PropertyTreeEntry","attributes","listeners","setNodeRef","transform","transition","isDragging","useSortable","CSS","Translate","zIndex","position","style","isPropertyInferred","fullId","fullIdPath","subtree","aiModifiedPaths","isAIModified","defaultBorderMixin","left","top","bottom","AIModifiedIndicator","DeleteIcon","MoreVertIcon","currentIndex","newOrder","k","unshift","VerticalAlignTopIcon","MenuItem","currentIndex_0","newOrder_0","k_0","push","VerticalAlignBottomIcon","Menu","MapPropertyField","propertyDialogOpen","setPropertyDialogOpen","setSelectedPropertyKey","selectedPropertyNamespace","setSelectedPropertyNamespace","currentPropertiesOrder","onPropertyCreated","propertiesPath","propertiesOrderPath","currentPropertiesOrder_0","deleteProperty","selectedPropertyFullId","selectedProperty","empty","propertiesOrder_0","namespace_0","AddIcon","propertyKey_0","namespace_1","spreadChildren","RepeatPropertyField","ofProperty","ofPropertyError","onPropertyChanged","widget","CommonPropertyFields","forwardRef","ref","disabledId","autoUpdateId","nameError","descriptionError","newNameValue","fontSize","newIdValue","nameTouched","prettifyIdentifier","StringPropertyField","widgetId","BooleanPropertyField","BlockPropertyField","oneOf","addChildButton","namespace_2","NumberPropertyValidation","validationLessThan","validationMoreThan","validationPositive","validationNegative","validationInteger","NumberPropertyField","parseFloat","ReferencePropertyField","asString","navigation","useNavigationController","pathPath","pathValue","pathError","CollectionsSelect","props","collections","groups","ungroupedCollections","selectedCollection","collection","flatMap","group","SelectGroup","collection_0","collection_1","collection_2","col","TIMEZONES","DateTimePropertyField","modeValue","modeError","autoValueValue","autoValueError","timezoneValue","timezoneError","modePath","autoValuePath","v_3","timezonePath","tz_0","tz","v_4","t","AdvancedPropertyValidation","hideFromCollection","readOnly","ConditionsPanel","getPropertyPaths","prefix","paths","fullPath","nestedPaths","ofPropertyOrBuilder","CONDITION_TYPES","OPERATORS","valueType","applicableTo","CONTEXT_FIELDS","getPropertyAtPath","fieldPath","collectionProperties","part","getFieldDataType","contextField","f","getEnumValues","getOperatorsForDataType","applicable","ConditionValueInput","operator","newValue","ev","ConditionRow","rule","onRuleChange","onRemove","availableFields","showRemoveButton","fieldDataType","showValueField","applicableOperators","isFieldMissing","isValueMissing","prop","config","DEFAULT_FIELD_CONFIGS","getFieldColor","newDataType","newApplicableOps","newOperator","op_0","prop_0","hasEnum","op_1","ConditionGroupRow","conditionType","onGroupChange","logic","handleLogicChange","newRules","rules","handleRuleChange","index_0","newRules_0","i","handleRemoveRule","defaultRule","handleAddRule","ct","rule_0","index_1","newRule","simpleRuleToJsonLogic","var","varRef","fieldVar","parsedValue","isNaN","Number","s","jsonLogicToSimpleRule","jsonLogic","args","inArgs","in","right","replace","varObj","groupToJsonLogic","ruleLogics","groupLogics","g","allLogics","jsonLogicToGroup","arg","nestedOperator","nestedGroup","ConditionsEditor","conditions","log","activeConditions","defaultGroup","jsonLogic_0","handleAddCondition","type_0","group_0","jsonLogic_1","handleGroupChange","type_1","newConditions","handleRemoveCondition","availableConditionTypes","type_2","group_1","newGroup","ct_0","ENUM_CONDITION_TYPES","getCurrentPropertyEnumValues","getFieldEnumValues","arrayToObject","arr","result","buildEnumFilterRule","allEnumIds","condition","selectedEnumIds","objectToArray","obj","every","sort","parseEnumFilterRule","ifRule","selectedEnumIdsRaw","conditionObj","EnumConditionRow","onConfigChange","propertyEnumValues","selectedFieldProperty","isBoolean","fieldEnumValues","isEnumSelectionMissing","ev_0","EnumConditionsEditor","bb0","defaultConfig","config_0","rule_1","handleConfigChange","config_1","newConfig","_temp6","KeyValuePropertyField","updatePropertyFromWidget","propertyData","selectedWidgetId","updatedProperty","mergeDeep","storage","multiline","markdown","email","url","userSelect","keyValue","mode","UrlPropertyField","urlValue","supportedFieldsIds","supportedFields","MarkdownPropertyField","markdownValue","isMarkdownObject","htmlValue","html","transformPastedTextValue","transformPastedText","currentMarkdown","updateMarkdownConfig","PropertyForm","includeIdAndName","autoOpenTypeSelect","existingProperty","inArray","existingPropertyKeys","onPropertyChangedImmediate","onDismiss","onDelete","initialErrors","forceShowErrors","getController","initialValue","previousId","lastSubmittedProperty","property_0","params","doOnPropertyChanged","newPropertyWithId","controller","id_0","property_1","resetForm","validateName","keysToCheck","validateId","isValidRegExp","conditionErrors","conditionTypes","isIncompleteRule","ruleStr","JSON","stringify","enumType","if","debugId","validateOnInitialRender","onSubmit","formexController","PropertyFormDialog","formProps","onCancel","onOkClicked","formexRef","helpers","handleSubmit","PropertyEditFormFields","setValues","includeIdAndTitle","selectOpen","setSelectOpen","deleteDialogOpen","setDeleteDialogOpen","getFieldId","selectedFieldConfigId","setSelectedFieldConfigId","deferredValues","useDeferredValue","nameFieldRef","selectedWidgetError","newSelectedWidgetId","setTimeout","focus","onWidgetSelectChanged","childComponent","InfoLabel","hasValue","ConfirmationDialog","idRegEx","match","WIDGET_TYPE_MAP","text_field","switch","user_select","select","multi_select","number_input","number_select","multi_number_select","file_upload","multi_file_upload","reference","reference_as_string","multi_references","date_time","key_value","repeat","custom_array","block","WidgetSelectView","initialProperty","onValueChange","onOpenChange","allSupportedFields","concat","displayedWidgets","propertyConfig_1","baseProperty","baseFieldConfig","computedFieldConfig","fieldBackgroundDisabledMixin","fieldBackgroundHoverMixin","fieldBackgroundMixin","key_2","propertyConfig_2","groupKey","propertyConfig_0","WidgetSelectViewItem","shouldWarnChangingDataType","WarningIcon","Card","KanbanConfigSection","forceExpanded","authController","customizationController","panelRef","columnPropertyDialogOpen","setColumnPropertyDialogOpen","resolvedCollection","resolveCollection","enumStringProperties","kanbanConfig","kanban","columnPropertyMissing","columnProperty","scrollIntoView","behavior","showCreateButton","dialogPropertyKey","dialogPropertyName","unslugify","fieldConfig","CloseIcon","newProperties","DisplaySettingsForm","expandKanban","orderPropertyDialogOpen","setOrderPropertyDialogOpen","numberProperties","openEntityMode","defaultViewMode","orderPropertyMissing","orderProperty","defaultSize","sideDialogWidth","inlineEditing","includeJsonView","camelCase","str","toLowerCase","substring","GetCodeDialog","snackbarController","format","setFormat","tsCode","collectionData","collectionToCode","JSON5","jsonCode","code","Tab","Tabs","Highlight","themes","vsDark","navigator","clipboard","writeText","ContentCopyIcon","tokens","getLineProps","getTokenProps","line","token","propertyCleanup","valueCopy","clone","isEmptyObject","childRes","fromBuilder","resolved","resolvedProperties","initialFilter","initialSort","subcollections","CollectionPropertiesEditorForm","propertyErrorsRef","onPropertyError","setDirty","reservedGroups","extraIcon","getUser","doCollectionInference","dirty","largeLayout","useLargeLayout","asDialog","selectedPropertyIndex","setSelectedPropertyIndex","codeDialogOpen","setCodeDialogOpen","inferringProperties","setInferringProperties","newPropertyDialogOpen","setNewPropertyDialogOpen","setInferredPropertyKeys","currentPropertiesOrderRef","inferPropertiesFromData","debug","newCollection","makePropertiesEditable","findNewPropertyKeys","existingProps","newProps","fullKey","existingProp","newProp","existingMapProps","addNewPropertiesOnly","updatedProperties","allNewPropertyKeys","newTopLevelPropertyKeys","allExistingKeys","updatedPropertiesOrder","updatePropertiesOrder","getCurrentPropertiesOrder","propertyPath","previousFullId","previousPropertyPath","onPropertyErrorInternal","closePropertyDialog","emptyCollection","usedPropertiesOrder","owner","ownerId","body","displayName","CodeIcon","UnsavedChangesDialog","handleOk","handleCancel","title","EntityCustomViewsSelectDialog","entityViews","view","SubcollectionsEditTab","configController","collectionInference","parentCollectionIds","embedded","contextEntityViews","subcollectionToDelete","setSubcollectionToDelete","addEntityViewDialogOpen","setAddEntityViewDialogOpen","viewToDelete","setViewToDelete","currentDialog","setCurrentDialog","setSubcollections","T2","resolvedEntityViews","resolveEntityView","hardCodedEntityViews","totalEntityViews","Table","TableBody","subcollection","TableRow","editedCollectionId","TableCell","Alert","content","deleteCollection","e_4","e_5","updatedCollection","selectedViewKey","e_6","view_0","EntityActionsSelectDialog","entityActions","action","EntityActionsEditTab","contextEntityActions","addEntityActionDialogOpen","setAddEntityActionDialogOpen","actionToDelete","setActionToDelete","resolvedEntityActions","resolveEntityAction","hardCodedEntityActions","totalEntityActions","selectedActionKey","action_1","action_0","ExtendSettingsForm","isMergedCollection","onResetToCode","VALID_DATA_TYPES","validateProperty","ofProp","validateProperties","validateOptionalFields","stringFields","booleanFields","item","sub","subErrors","validateCollectionObject","err","validViewModes","validateCollectionJson","jsonString","parsed","parse","lines","column","valid","EXAMPLE_JSON","CollectionJsonImportDialog","onImport","jsonValue","setJsonValue","setErrors","setTouched","handleJsonChange","result_0","handleImport","handleClose","isValid","productsCollectionTemplate","brand","main_image","available","columnWidth","price","requiredMessage","images","related_products","metadata","added_on","autoValue","blogCollectionTemplate","header_image","cacheControl","typeField","valueField","text","quote","products","previewProperties","created_on","status","published","draft","publish_date","clearable","reviewed","tags","previewAsTag","usersCollectionTemplate","emailVerified","phone","favourite_products","photoURL","pagesCollectionTemplate","slug","unique","matchesMessage","hero_section","headline","subhead","background_image","call_to_action","call_to_action_link","section","image","link","slider","sidebar","seo_metadata","meta_title","meta_description","focus_keywords","footer_override","last_updated","is_published","useCollectionEditorController","CollectionEditorContext","CollectionGenerationApiError","constructor","DEFAULT_COLLECTION_GENERATION_ENDPOINT","buildCollectionGenerationCallback","getAuthToken","apiEndpoint","request","response","fetch","method","headers","Authorization","ok","errorData","json","AICollectionGeneratorPopover","existingCollection","onGenerated","generateCollection","trigger","showLabel","onAnalyticsEvent","menuOpen","setMenuOpen","prompt","setPrompt","loading","setLoading","setError","existingCollections","handleGenerate","collectionsContext","c","operationsCount","errorMessage","handleKeyDown","shiftKey","defaultTrigger","AIIcon","CollectionEditorWelcomeView","onContinue","existingCollectionPaths","pathSuggestions","filteredSuggestions","jsonImportOpen","setJsonImportOpen","suggestion","generatedCollection","ImportFileUpload","Icon","TemplateButton","subtitle","CollectionEditorImportMapping","importConfig","setSelectedProperty","newPropertiesOrder_0","newHeadersMapping","headersMapping","setHeadersMapping","importData","importKey","fullId_0","propertyPath_0","d","inferredNewProperty","buildPropertyFromData","getInferenceType","onPropertyTypeChanged","property_2","importKey_0","isIdColumn","ImportNewPropertyFieldPreview","propertyKey_1","DataNewPropertiesMapping","PropertySelect","fieldId","newProperty","widget_0","PropertySelectItem","optionDisabled","CollectionEditorImportDataPreview","loadEntities","mappedData","convertDataToEntity","idColumn","defaultValues","setEntities","selectionController","useSelectionController","CircularProgressCenter","entities","dataLoading","noMoreToLoad","EntityCollectionTable","cleanPropertiesFromImport","parentSlug","acc","slugify","fullSlug","slugifiedResult","firstKey","CollectionEditorDialog","formDirty","setFormDirty","unsavedChangesDialogOpen","setUnsavedChangesDialogOpen","CollectionEditor","topLevelNavigation","initialValuesProp","copyFromProp","copyFrom","includeTemplates","collectionsInThisLevel","existingPaths","existingIds","setCollection","initialLoadingCompleted","setInitialLoadingCompleted","initialised","getCollectionFromPaths","initialCollection","randomString","applyPropertyConfigs","user","uid","coolIconKeys","Math","floor","random","CollectionEditorInternal","extraView","existingEntities","initialView","initialViewProp","useImportConfig","currentView","setCurrentView","saveCollection","setNextMode","inUse","parentPaths","inferCollectionFromData","Promise","resolve","inferredCollection","newCollectionState","schema","validateSync","abortEarly","inner","validatePath","formController","isSubmitting","updatedFullPath","convertIdsToPaths","resolvedPath","resolveIdsFrom","getDataWithPath","existingData","onImportDataSet","setInUse","buildEntityPropertiesFromData","setIdColumn","setImportData","filteredHeadingsOrder","setHeadingsOrder","setOriginProperties","mappedHeadings","validValues","onImportMappingComplete","merged","deleteRequested","setDeleteRequested","onWelcomeScreenContinue","handleAIGenerated","View","ImportSaveInProgress","importedCollection","removeUndefined","validate","ErrorView","ArrowBackIcon","LoadingButton","CheckIcon","rest","propertiesResult","applyPropertiesConfig","internalProperty","subpaths","removeInitialAndTrailingSlashes","ConfigControllerContext","ConfigControllerProvider","collectionConfigController","configPermissions","navigate","useNavigate","currentPropertyDialog","setCurrentPropertyDialog","defaultConfigPermissions","redirect","editCollection","parentCollectionIds_0","existingEntities_0","lastIndexOf","propertyKeyWithoutNamespace","editProperty","parentCollectionIds_1","parentCollection_0","sourceClick","createCollection","buildUrlCollectionPath","fetchedData","saveProperty","createCollections","editCollections","deleteCollections","EditorCollectionAction","tableController","navigationController","collectionEditorController","getCollectionFromIds","canEditCollection","editorButton","useCollectionsConfigController","HomePageEditorCollectionAction","permissions","onEditCollectionClicked","onDuplicateCollectionClicked","event_0","event_1","CollectionViewHeaderAction","onHover","PropertyAddColumnComponent","getDefaultPropertiesOrder","NewCollectionButton","EditorCollectionActionStart","saveDefaultFilterButton","getObjectOrNull","filterValues","sortBy","SaveIcon","clearFilter","setFilterValues","setSortBy","UndoIcon","o","NewCollectionCard","context","canCreateCollections","EditorEntityAction","formContext","isDirty","KanbanSetupAction","handleConfigureClick","AddKanbanColumnAction","dialogOpen","setDialogOpen","newValueLabel","setNewValueLabel","saving","setSaving","getPropertyInPath","stringProperty","handleAddColumn","useCallback","isCodeDefinedProperty","newId","newEnumValue","existingEnumValues","updatedEnumValues","useCollectionEditorPlugin","includeIntroView","Component","navigationEntries","saveNavigationEntries","additionalActions","additionalChildrenStart","CollectionActions","AdditionalCards","allowDragAndDrop","onNavigationEntriesUpdate","updateKanbanColumnsOrder","CollectionActionsStart","HeaderAction","AddColumnComponent","onColumnsReorder","onKanbanColumnsReorder","KanbanSetupComponent","AddKanbanColumnComponent","ActionsTop","provider","homePage","collectionView","IntroWidget","mergeCollections","baseCollections","backendCollections","modifyCollection","markAsEditable","joinCollectionLists","indexA","findIndex","indexB","MissingReferenceWidget","pathProp","getLastSegment","getParentCollectionIds","collectionEditor","segments"],"mappings":"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"}
|