@firecms/collection_editor 3.0.0 → 3.1.0-canary.02232f4
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/ConfigControllerProvider.d.ts +6 -0
- package/dist/api/generateCollectionApi.d.ts +71 -0
- package/dist/api/index.d.ts +1 -0
- package/dist/index.d.ts +5 -1
- package/dist/index.es.js +15234 -8138
- package/dist/index.es.js.map +1 -1
- package/dist/index.umd.js +15199 -8103
- package/dist/index.umd.js.map +1 -1
- package/dist/locales/de.d.ts +120 -0
- package/dist/locales/en.d.ts +120 -0
- package/dist/locales/es.d.ts +120 -0
- package/dist/locales/fr.d.ts +120 -0
- package/dist/locales/hi.d.ts +120 -0
- package/dist/locales/it.d.ts +120 -0
- package/dist/locales/pt.d.ts +120 -0
- package/dist/types/collection_editor_controller.d.ts +14 -0
- package/dist/types/collection_inference.d.ts +8 -2
- package/dist/types/config_controller.d.ts +31 -1
- package/dist/ui/AddKanbanColumnAction.d.ts +11 -0
- package/dist/ui/KanbanSetupAction.d.ts +10 -0
- package/dist/ui/collection_editor/AICollectionGeneratorPopover.d.ts +37 -0
- package/dist/ui/collection_editor/AIModifiedPathsContext.d.ts +20 -0
- package/dist/ui/collection_editor/CollectionDetailsForm.d.ts +2 -3
- package/dist/ui/collection_editor/CollectionEditorDialog.d.ts +24 -0
- package/dist/ui/collection_editor/CollectionEditorWelcomeView.d.ts +4 -1
- package/dist/ui/collection_editor/CollectionJsonImportDialog.d.ts +7 -0
- package/dist/ui/collection_editor/CollectionYupValidation.d.ts +9 -13
- package/dist/ui/collection_editor/DisplaySettingsForm.d.ts +3 -0
- package/dist/ui/collection_editor/EntityActionsEditTab.d.ts +2 -1
- package/dist/ui/collection_editor/ExtendSettingsForm.d.ts +14 -0
- package/dist/ui/collection_editor/GeneralSettingsForm.d.ts +7 -0
- package/dist/ui/collection_editor/KanbanConfigSection.d.ts +4 -0
- package/dist/ui/collection_editor/PropertyEditView.d.ts +6 -1
- package/dist/ui/collection_editor/PropertyTree.d.ts +2 -1
- package/dist/ui/collection_editor/SubcollectionsEditTab.d.ts +2 -1
- package/dist/ui/collection_editor/ViewModeSwitch.d.ts +6 -0
- package/dist/ui/collection_editor/properties/EnumPropertyField.d.ts +2 -1
- package/dist/ui/collection_editor/properties/conditions/ConditionsEditor.d.ts +10 -0
- package/dist/ui/collection_editor/properties/conditions/ConditionsPanel.d.ts +2 -0
- package/dist/ui/collection_editor/properties/conditions/EnumConditionsEditor.d.ts +6 -0
- package/dist/ui/collection_editor/properties/conditions/index.d.ts +6 -0
- package/dist/ui/collection_editor/properties/conditions/property_paths.d.ts +19 -0
- package/dist/useCollectionEditorPlugin.d.ts +7 -1
- package/dist/utils/validateCollectionJson.d.ts +22 -0
- package/package.json +15 -15
- package/src/ConfigControllerProvider.tsx +82 -47
- package/src/api/generateCollectionApi.ts +119 -0
- package/src/api/index.ts +1 -0
- package/src/index.ts +28 -1
- package/src/locales/de.ts +125 -0
- package/src/locales/en.ts +145 -0
- package/src/locales/es.ts +125 -0
- package/src/locales/fr.ts +125 -0
- package/src/locales/hi.ts +125 -0
- package/src/locales/it.ts +125 -0
- package/src/locales/pt.ts +125 -0
- package/src/types/collection_editor_controller.tsx +16 -3
- package/src/types/collection_inference.ts +15 -2
- package/src/types/config_controller.tsx +37 -1
- package/src/ui/AddKanbanColumnAction.tsx +203 -0
- package/src/ui/EditorCollectionAction.tsx +3 -3
- package/src/ui/EditorCollectionActionStart.tsx +1 -2
- package/src/ui/EditorEntityAction.tsx +3 -2
- package/src/ui/HomePageEditorCollectionAction.tsx +41 -13
- package/src/ui/KanbanSetupAction.tsx +38 -0
- package/src/ui/MissingReferenceWidget.tsx +1 -1
- package/src/ui/NewCollectionButton.tsx +4 -2
- package/src/ui/NewCollectionCard.tsx +7 -4
- package/src/ui/PropertyAddColumnComponent.tsx +4 -3
- package/src/ui/collection_editor/AICollectionGeneratorPopover.tsx +243 -0
- package/src/ui/collection_editor/AIModifiedPathsContext.tsx +88 -0
- package/src/ui/collection_editor/CollectionDetailsForm.tsx +222 -268
- package/src/ui/collection_editor/CollectionEditorDialog.tsx +270 -204
- package/src/ui/collection_editor/CollectionEditorWelcomeView.tsx +138 -71
- package/src/ui/collection_editor/CollectionJsonImportDialog.tsx +171 -0
- package/src/ui/collection_editor/CollectionPropertiesEditorForm.tsx +202 -101
- package/src/ui/collection_editor/DisplaySettingsForm.tsx +335 -0
- package/src/ui/collection_editor/EntityActionsEditTab.tsx +106 -97
- package/src/ui/collection_editor/EntityActionsSelectDialog.tsx +8 -10
- package/src/ui/collection_editor/EntityCustomViewsSelectDialog.tsx +5 -7
- package/src/ui/collection_editor/EnumForm.tsx +153 -102
- package/src/ui/collection_editor/ExtendSettingsForm.tsx +94 -0
- package/src/ui/collection_editor/GeneralSettingsForm.tsx +335 -0
- package/src/ui/collection_editor/GetCodeDialog.tsx +63 -41
- package/src/ui/collection_editor/KanbanConfigSection.tsx +209 -0
- package/src/ui/collection_editor/LayoutModeSwitch.tsx +27 -43
- package/src/ui/collection_editor/PropertyEditView.tsx +272 -199
- package/src/ui/collection_editor/PropertyFieldPreview.tsx +1 -1
- package/src/ui/collection_editor/PropertyTree.tsx +130 -58
- package/src/ui/collection_editor/SubcollectionsEditTab.tsx +169 -163
- package/src/ui/collection_editor/UnsavedChangesDialog.tsx +0 -2
- package/src/ui/collection_editor/ViewModeSwitch.tsx +43 -0
- package/src/ui/collection_editor/import/CollectionEditorImportDataPreview.tsx +6 -3
- package/src/ui/collection_editor/import/CollectionEditorImportMapping.tsx +5 -2
- package/src/ui/collection_editor/properties/BlockPropertyField.tsx +0 -2
- package/src/ui/collection_editor/properties/BooleanPropertyField.tsx +4 -1
- package/src/ui/collection_editor/properties/CommonPropertyFields.tsx +6 -4
- package/src/ui/collection_editor/properties/DateTimePropertyField.tsx +126 -42
- package/src/ui/collection_editor/properties/EnumPropertyField.tsx +32 -24
- package/src/ui/collection_editor/properties/MapPropertyField.tsx +8 -9
- package/src/ui/collection_editor/properties/MarkdownPropertyField.tsx +128 -53
- package/src/ui/collection_editor/properties/NumberPropertyField.tsx +3 -1
- package/src/ui/collection_editor/properties/ReferencePropertyField.tsx +6 -9
- package/src/ui/collection_editor/properties/StoragePropertyField.tsx +65 -49
- package/src/ui/collection_editor/properties/StringPropertyField.tsx +3 -1
- package/src/ui/collection_editor/properties/UrlPropertyField.tsx +12 -10
- package/src/ui/collection_editor/properties/advanced/AdvancedPropertyValidation.tsx +23 -4
- package/src/ui/collection_editor/properties/conditions/ConditionsEditor.tsx +866 -0
- package/src/ui/collection_editor/properties/conditions/ConditionsPanel.tsx +28 -0
- package/src/ui/collection_editor/properties/conditions/EnumConditionsEditor.tsx +599 -0
- package/src/ui/collection_editor/properties/conditions/index.ts +6 -0
- package/src/ui/collection_editor/properties/conditions/property_paths.ts +92 -0
- package/src/ui/collection_editor/properties/validation/ArrayPropertyValidation.tsx +5 -2
- package/src/ui/collection_editor/properties/validation/GeneralPropertyValidation.tsx +7 -5
- package/src/ui/collection_editor/properties/validation/NumberPropertyValidation.tsx +10 -7
- package/src/ui/collection_editor/properties/validation/StringPropertyValidation.tsx +11 -9
- package/src/ui/collection_editor/properties/validation/ValidationPanel.tsx +5 -2
- package/src/useCollectionEditorPlugin.tsx +53 -22
- package/src/utils/validateCollectionJson.ts +380 -0
package/dist/index.es.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.es.js","sources":["../src/ui/collection_editor/CollectionYupValidation.tsx","../src/useCollectionEditorController.tsx","../src/ui/collection_editor/LayoutModeSwitch.tsx","../src/ui/collection_editor/CollectionDetailsForm.tsx","../src/ui/collection_editor/util.ts","../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/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/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/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/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/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/EntityActionsSelectDialog.tsx","../src/ui/collection_editor/EntityActionsEditTab.tsx","../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/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 { 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 { Card, cls, SquareIcon, Tooltip, 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={cls(\"flex flex-row gap-4\")}>\n\n <Tooltip title={\"Documents are open in a side panel\"}>\n <Card\n onClick={() => onChange(\"side_panel\")}\n className={cls(\n \"my-2 rounded-md mx-0 p-4 focus:outline-none transition ease-in-out duration-150 flex flex-row gap-4 items-center\",\n \"text-surface-700 dark:text-surface-accent-300\",\n \"hover:text-primary-dark dark:hover:text-primary focus:ring-primary hover:ring-1 hover:ring-primary\",\n value === \"side_panel\" ? \"border-primary dark:border-primary\" : \"border-surface-400 dark:border-surface-600\",\n )}\n >\n <VerticalSplitIcon/>\n <Typography variant={\"label\"}>\n Side panel\n </Typography>\n </Card>\n </Tooltip>\n\n <Tooltip title={\"Documents are open full-screen\"}>\n <Card\n onClick={() => onChange(\"full_screen\")}\n className={cls(\n \"my-2 rounded-md mx-0 p-4 focus:outline-none transition ease-in-out duration-150 flex flex-row gap-4 items-center\",\n \"text-surface-700 dark:text-surface-accent-300\",\n \"hover:text-primary-dark dark:hover:text-primary focus:ring-primary hover:ring-1 hover:ring-primary\",\n value === \"full_screen\" ? \"border-primary dark:border-primary\" : \"border-surface-400 dark:border-surface-600\",\n )}\n >\n <SquareIcon/>\n <Typography variant={\"label\"}>\n Full screen\n </Typography>\n </Card>\n </Tooltip>\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 React, { useEffect, useState } from \"react\";\nimport { EntityCollection, FieldCaption, IconForView, SearchIconsView, singular, toSnakeCase, } from \"@firecms/core\";\nimport {\n BooleanSwitchWithLabel,\n Chip,\n CloseIcon,\n cls,\n Container,\n DebouncedTextField,\n Dialog,\n ExpandablePanel,\n IconButton,\n Select,\n SelectItem,\n SettingsIcon,\n TextField,\n Tooltip,\n Typography,\n useAutoComplete\n} from \"@firecms/ui\";\n\nimport { Field, getIn, useFormex } from \"@firecms/formex\";\nimport { useCollectionEditorController } from \"../../useCollectionEditorController\";\nimport { LayoutModeSwitch } from \"./LayoutModeSwitch\";\n\nexport function CollectionDetailsForm({\n isNewCollection,\n reservedGroups,\n existingPaths,\n existingIds,\n groups,\n parentCollection,\n children\n }: {\n isNewCollection: boolean,\n reservedGroups?: string[];\n existingPaths?: string[];\n existingIds?: string[];\n groups: string[] | null;\n parentCollection?: EntityCollection;\n parentCollectionIds?: string[];\n children?: React.ReactNode;\n}) {\n\n const groupRef = React.useRef<HTMLInputElement>(null);\n const {\n values,\n setFieldValue,\n handleChange,\n touched,\n errors,\n setFieldTouched,\n isSubmitting,\n submitCount\n } = useFormex<EntityCollection>();\n\n const collectionEditor = useCollectionEditorController();\n\n const [iconDialogOpen, setIconDialogOpen] = useState(false);\n const [advancedPanelExpanded, setAdvancedPanelExpanded] = useState(false);\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\n useEffect(() => {\n if (errors.id) {\n setAdvancedPanelExpanded(true);\n }\n }, [errors.id]);\n\n const collectionIcon = <IconForView collectionOrView={values}/>;\n\n const groupOptions = groups?.filter((group) => !reservedGroups?.includes(group));\n\n const {\n inputFocused,\n autoCompleteOpen,\n setAutoCompleteOpen\n } = useAutoComplete({\n ref: groupRef\n });\n\n const isSubcollection = !!parentCollection;\n\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 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\n 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 <div className={\"grid grid-cols-12 gap-4\"}>\n\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 <div className={cls(\"col-span-12 \")}>\n <Field name={\"path\"}\n as={DebouncedTextField}\n label={\"Path\"}\n disabled={!isNewCollection}\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\n </div>\n\n {/*{!isSubcollection && <div className={\"col-span-12 sm:col-span-4 relative\"}>*/}\n\n {/* <TextField error={showErrors && Boolean(errors.group)}*/}\n {/* disabled={isSubmitting}*/}\n {/* value={values.group ?? \"\"}*/}\n {/* autoComplete=\"off\"*/}\n {/* onChange={(event) => setFieldValue(\"group\", event.target.value)}*/}\n {/* name={\"group\"}*/}\n {/* inputRef={groupRef}*/}\n {/* label=\"Group\"/>*/}\n {/* <Autocomplete*/}\n {/* open={autoCompleteOpen && (groupOptions ?? []).length > 0}*/}\n {/* setOpen={setAutoCompleteOpen}>*/}\n {/* {groupOptions?.map((group, index) => {*/}\n {/* return <AutocompleteItem*/}\n {/* key={index + \"_\" + group}*/}\n {/* className={\"pr-6 pl-14\"}*/}\n {/* onClick={() => {*/}\n {/* setAutoCompleteOpen(false);*/}\n {/* setFieldValue(\"group\", group ?? null);*/}\n {/* }}*/}\n {/* >*/}\n {/* <div className={\"flex-grow\"}>*/}\n {/* {group}*/}\n {/* </div>*/}\n {/* </AutocompleteItem>;*/}\n {/* })}*/}\n {/* </Autocomplete>*/}\n {/* <FieldCaption>*/}\n {/* {showErrors && Boolean(errors.group) ? errors.group : \"Group in the home page\"}*/}\n {/* </FieldCaption>*/}\n\n\n {/*</div>}*/}\n\n <LayoutModeSwitch\n className={\"col-span-12\"}\n value={values.openEntityMode ?? \"side_panel\"}\n onChange={(value) => setFieldValue(\"openEntityMode\", value)}/>\n\n <div className={\"col-span-12\"}>\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\n <div className={\"col-span-12 mt-8\"}>\n <ExpandablePanel\n expanded={advancedPanelExpanded}\n onExpandedChange={setAdvancedPanelExpanded}\n title={\n <div className=\"flex flex-row text-surface-500\">\n <SettingsIcon/>\n <Typography variant={\"subtitle2\"}\n className=\"ml-2\">\n Advanced\n </Typography>\n </div>}\n initiallyExpanded={false}>\n <div className={\"grid grid-cols-12 gap-4 p-4\"}>\n\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 <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 <div className={\"col-span-12\"}>\n <TextField\n error={showErrors && Boolean(errors.sideDialogWidth)}\n name={\"sideDialogWidth\"}\n type={\"number\"}\n aria-describedby={\"sideDialogWidth-helper\"}\n onChange={(e) => {\n setFieldTouched(\"sideDialogWidth\", true);\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 error={showErrors && Boolean(errors.singularName)}>\n {showErrors && Boolean(errors.singularName) ? errors.singularName : \"Optionally define the width (in pixels) of entities side dialog. Default is 768px\"}\n </FieldCaption>\n </div>\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 <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 <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 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 <div className={\"col-span-12\"}>\n <Select\n name=\"customId\"\n label=\"Document IDs generation\"\n position={\"item-aligned\"}\n size={\"large\"}\n fullWidth={true}\n disabled={customIdValue === \"code_defined\"}\n onValueChange={(v) => {\n if (v === \"code_defined\")\n throw new Error(\"This should not happen\");\n setFieldValue(\"customId\", v);\n }}\n value={customIdValue ?? \"\"}\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 </div>\n <div className={\"col-span-12 mt-4\"}>\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\n to query over multiple collections at once.\n </FieldCaption>\n </div>\n <div className={\"col-span-12\"}>\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\n\n </div>\n </ExpandablePanel>\n\n {children}\n\n </div>\n\n </div>\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\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","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, { useEffect } from \"react\";\nimport equal from \"react-fast-compare\"\n\nimport { ArrayContainer, ArrayEntryParams, EnumValueConfig, EnumValues, FieldCaption, } from \"@firecms/core\";\nimport {\n AutorenewIcon,\n Badge,\n Button,\n CircularProgress,\n DebouncedTextField,\n Dialog,\n DialogActions,\n DialogContent,\n DialogTitle,\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 { values, errors } = 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 return;\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 loading={inferring}\n disabled={disabled || inferring}\n variant={\"text\"}\n size={\"small\"}\n onClick={inferValues}>\n {inferring ? <CircularProgress size={\"smallest\"}/> : <AutorenewIcon/>}\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={{ id: \"\", label: \"\" }}/>\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 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 && <AutorenewIcon size={\"small\"}/>}\n error={Boolean(entryError?.label)}/>\n\n {!disabled &&\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 </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 } = useFormex<EnumValues>();\n\n const idError = index !== undefined ? getIn(errors, `${enumValuesPath}[${index}].id`) : undefined;\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>\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 </DialogContent>\n\n <DialogActions>\n <Button\n autoFocus\n variant=\"outlined\"\n onClick={onClose}\n color=\"primary\">\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\">\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 }: {\n multiselect: boolean;\n updateIds: boolean;\n disabled: boolean;\n showErrors: boolean;\n allowDataInference?: boolean;\n getData?: () => Promise<object[]>;\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 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\n ? () => getData()\n .then(res => res.map(entry => values.id && getIn(entry, values.id)).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\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\">\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={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 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","import React from \"react\";\nimport equal from \"react-fast-compare\"\n\nimport {\n AdditionalFieldDelegate,\n CMSType,\n isPropertyBuilder,\n PropertiesOrBuilders,\n PropertyOrBuilder\n} from \"@firecms/core\";\nimport { AutorenewIcon, defaultBorderMixin, DragHandleIcon, IconButton, RemoveIcon, Tooltip } 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\";\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 const propertiesOrder = propertiesOrderProp ?? Object.keys(properties);\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 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 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 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 collectionEditable={collectionEditable}\n />\n }\n }\n\n const selected = selectedPropertyKey === fullId;\n const editable = propertyOrBuilder && ((collectionEditable && !isPropertyBuilder(propertyOrBuilder)) || editableProperty(propertyOrBuilder));\n\n return (\n <div\n ref={setNodeRef}\n style={style}\n className=\"relative -ml-8\"\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-2 right-2 flex flex-row\">\n {isPropertyInferred && <Tooltip title={\"Inferred property\"}>\n <AutorenewIcon size=\"small\" className={\"p-2\"}/>\n </Tooltip>}\n\n {onPropertyRemove && !isPropertyInferred && <Tooltip title={\"Remove\"}\n asChild={true}>\n <IconButton size=\"small\"\n color=\"inherit\"\n onClick={() => onPropertyRemove(propertyKey, namespace)}>\n <RemoveIcon size={\"small\"}/>\n </IconButton>\n </Tooltip>}\n\n {onPropertyMove && <Tooltip title={\"Move\"}\n asChild={true}>\n <IconButton\n component={\"span\"}\n size=\"small\"\n {...attributes}\n {...listeners}\n >\n <DragHandleIcon size={\"small\"}/>\n </IconButton>\n </Tooltip>}\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 color=\"primary\"\n variant={\"outlined\"}\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 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 color=\"primary\"\n\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={(existing && Boolean(pathValue)) || 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 <FieldCaption>\n You can only edit the reference collection upon field\n creation.\n </FieldCaption>\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\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 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\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 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 from \"react\";\nimport { StringPropertyValidation } from \"./validation/StringPropertyValidation\";\nimport { ValidationPanel } from \"./validation/ValidationPanel\";\nimport { Field, getIn, useFormex } from \"@firecms/formex\";\n\nimport { CloudUploadIcon, DebouncedTextField, ExpandablePanel, TextField, Typography } 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\n const metadata = `${baseStoragePath}.metadata`;\n const fileName = `${baseStoragePath}.fileName`;\n const maxSize = `${baseStoragePath}.maxSize`;\n const storagePath = `${baseStoragePath}.storagePath`;\n\n const fileNameValue = getIn(values, fileName) ?? \"{rand}_{file}\";\n const storagePathValue = getIn(values, storagePath) ?? \"/\";\n const maxSizeValue = getIn(values, maxSize);\n\n const hasFilenameCallback = typeof fileNameValue === \"function\";\n const hasStoragePathCallback = typeof storagePathValue === \"function\";\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 <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 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 { 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\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 getController,\n getData,\n propertyConfigs,\n collectionEditable\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 const idError = validateId(values.id, existingPropertyKeys);\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 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 {...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);\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 color={\"primary\"}\n onClick={() => {\n onCancel();\n formexRef.current?.resetForm();\n }}>\n Cancel\n </Button>}\n\n <Button variant=\"outlined\"\n type={\"submit\"}\n color=\"primary\">\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 }: {\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} & 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 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 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 && 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 </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","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, Typography } from \"@firecms/ui\";\nimport React 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\n const code = collection\n ? \"import { EntityCollection } from \\\"@firecms/core\\\";\\n\\nconst \" + (collection?.name ? camelCase(collection.name) : \"my\") + \"Collection:EntityCollection = \" + JSON5.stringify(collectionToCode({ ...collection }), null, \"\\t\")\n : \"No collection selected\";\n return <Dialog open={open}\n onOpenChange={onOpenChange}\n maxWidth={\"4xl\"}>\n <DialogTitle variant={\"h6\"}>Code for {collection.name}</DialogTitle>\n <DialogContent>\n\n <Typography variant={\"body2\"} className={\"my-4 mb-8\"}>\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 </Typography>\n <Highlight\n theme={themes.vsDark}\n code={code}\n language=\"typescript\"\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 color={\"primary\"}\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) => ({ ...a,\n...b }), {}),\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 Properties,\n Property,\n PropertyConfig,\n PropertyOrBuilder,\n useLargeLayout,\n User,\n useSnackbarController\n} from \"@firecms/core\";\nimport {\n AddIcon,\n AutorenewIcon,\n Button,\n CircularProgress,\n cls,\n CodeIcon,\n DebouncedTextField,\n defaultBorderMixin,\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\";\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\", doCollectionInference, 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 // find properties in the new collection, not present in the current one\n const newPropertyKeys = (newCollection.properties ? Object.keys(newCollection.properties) : [])\n .filter((propertyKey) => !values.properties[propertyKey]);\n if (newPropertyKeys.length === 0) {\n snackbarController.open({\n type: \"info\",\n message: \"No new properties found in existing data\"\n });\n return;\n }\n // add them to the current collection\n const updatedProperties = {\n ...newPropertyKeys.reduce((acc, propertyKey) => {\n acc[propertyKey] = (newCollection.properties ?? {})[propertyKey];\n return acc;\n }, {} as {\n [key: string]: PropertyOrBuilder\n }),\n ...values.properties\n };\n const updatedPropertiesOrder = [\n ...newPropertyKeys,\n ...(values.propertiesOrder ?? [])\n ];\n setFieldValue(\"properties\", updatedProperties, false);\n\n updatePropertiesOrder(updatedPropertiesOrder);\n\n setInferredPropertyKeys(newPropertyKeys);\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 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-white dark:bg-surface-950\"}>\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\"}/> : <AutorenewIcon/>}\n </IconButton>\n </Tooltip>}\n <Tooltip title={\"Add new property\"}\n asChild={true}>\n <Button\n variant={\"outlined\"}\n color={\"primary\"}\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 ? deleteProperty : undefined}\n collectionEditable={collectionEditable}\n errors={errors}/>\n </ErrorBoundary>\n\n <Button className={\"mt-8 w-full\"}\n color=\"primary\"\n variant={\"outlined\"}\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}`}\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 />}\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 variant={\"outlined\"}\n color={\"primary\"}\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}`}\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 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 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 color={\"primary\"}\n onClick={handleCancel} autoFocus> Cancel </Button>\n <Button\n color={\"primary\"}\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 variant={\"outlined\"}\n color={\"primary\"}\n 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 }: {\n collection: PersistedCollection,\n parentCollection?: EntityCollection,\n configController: CollectionsConfigController;\n collectionInference?: CollectionInference;\n getUser?: (uid: string) => User | null;\n parentCollectionIds?: string[];\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 return (\n <div className={\"overflow-auto my-auto\"}>\n <Container maxWidth={\"2xl\"} className={\"flex flex-col gap-4 p-8 m-auto\"}>\n <div className={\"flex flex-col gap-16\"}>\n\n <div className={\"flex-grow flex flex-col gap-4 items-start\"}>\n <Typography variant={\"h5\"}>\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 variant={\"text\"}\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={\"h5\"}>\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 variant={\"text\"}\n startIcon={<AddIcon/>}>\n Add custom entity view\n </Button>\n </Paper>\n\n </>}\n\n\n </div>\n\n </div>\n </Container>\n\n <div style={{ height: \"52px\" }}/>\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 </div>\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 React from \"react\";\nimport { EntityCollection, prettifyIdentifier, } from \"@firecms/core\";\nimport { Card, Chip, cls, Container, Icon, Tooltip, Typography, } from \"@firecms/ui\";\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\";\n\nexport function CollectionEditorWelcomeView({\n path,\n parentCollection,\n onContinue,\n existingCollectionPaths\n }: {\n path: string;\n parentCollection?: EntityCollection;\n onContinue: (importData?: object[], propertiesOrder?: string[]) => void;\n existingCollectionPaths?: string[];\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 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\n <div className={\"my-2\"}>\n <Typography variant={\"caption\"}\n color={\"secondary\"}>\n ● Select a template:\n </Typography>\n\n <div className={\"flex gap-4\"}>\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 {!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\n {/*<div style={{ height: \"52px\" }}/>*/}\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 mx-0 p-6 px-4 focus:outline-none transition ease-in-out duration-150 flex flex-row gap-4 items-center\",\n \"text-surface-700 dark:text-surface-accent-300\",\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={\"subtitle1\"}>\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 { 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 this\n dialog.\n </Typography>\n }\n </DialogContent>\n <DialogActions>\n <Button variant={\"outlined\"}\n color={\"primary\"}\n 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 }: {\n collection: PersistedCollection,\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 return (\n <div className={\"overflow-auto my-auto\"}>\n <Container maxWidth={\"2xl\"} className={\"flex flex-col gap-4 p-8 m-auto\"}>\n <div className={\"flex flex-col gap-16\"}>\n <div className={\"flex-grow flex flex-col gap-4 items-start\"}>\n <Typography variant={\"h5\"}>\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 variant={\"text\"}\n startIcon={<AddIcon/>}>\n Add custom entity action\n </Button>\n </Paper>\n\n </>}\n\n\n </div>\n\n </div>\n </Container>\n\n <div style={{ height: \"52px\" }}/>\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 </div>\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 { CollectionDetailsForm } from \"./CollectionDetailsForm\";\nimport { CollectionPropertiesEditorForm } from \"./CollectionPropertiesEditorForm\";\nimport { UnsavedChangesDialog } from \"./UnsavedChangesDialog\";\nimport { SubcollectionsEditTab } from \"./SubcollectionsEditTab\";\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 { EntityActionsEditTab } from \"./EntityActionsEditTab\";\n\nexport interface CollectionEditorDialogProps {\n open: boolean;\n isNewCollection: boolean;\n initialValues?: {\n group?: string,\n path?: string,\n name?: string,\n }\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\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 {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\n </Dialog>\n );\n}\n\ntype EditorView = \"welcome\"\n | \"details\"\n | \"import_data_mapping\"\n | \"import_data_preview\"\n | \"import_data_saving\"\n | \"properties\"\n | \"loading\"\n | \"extra_view\"\n | \"subcollections\"\n | \"custom_actions\";\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 includeTemplates = !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 const initialValues: PersistedCollection<any> = initialCollection\n ? applyPropertyConfigs(initialCollection, propertyConfigs)\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 }: 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 ? (includeTemplates ? \"welcome\" : \"details\") : \"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 === \"details\") {\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(\"details\");\n } else if (currentView === \"import_data_mapping\") {\n setCurrentView(\"import_data_preview\");\n } else if (currentView === \"import_data_preview\") {\n setCurrentView(\"details\");\n } else if (currentView === \"extra_view\") {\n setCurrentView(\"properties\");\n } else {\n setCurrentView(\"details\");\n }\n\n };\n\n const doCollectionInference = collectionInference ? (collection: PersistedCollection<any>) => {\n if (!collectionInference) return undefined;\n return collectionInference?.(collection.path, collection.collectionGroup ?? false, parentPaths ?? [], collection.databaseId);\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 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 === \"details\") {\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 === \"subcollections\" || currentView === \"details\") && 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 === \"details\") {\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 // TODO: getting data is only working in root collections with this code\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 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(\"details\");\n }\n };\n\n return <DialogContent fullHeight={true}>\n <Formex value={formController}>\n\n <>\n {!isNewCollection && <Tabs value={currentView}\n innerClassName={cls(defaultBorderMixin, \"px-4 h-14 w-full justify-end bg-surface-50 dark:bg-surface-950 border-b\")}\n onValueChange={(v) => setCurrentView(v as EditorView)}>\n <Tab value={\"details\"}>\n Details\n </Tab>\n <Tab value={\"properties\"}>\n Properties\n </Tab>\n <Tab value={\"subcollections\"}>\n Additional views\n </Tab>\n <Tab value={\"custom_actions\"}>\n Custom actions\n </Tab>\n </Tabs>}\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\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 === \"details\" &&\n <CollectionDetailsForm\n existingPaths={existingPaths}\n existingIds={existingIds}\n groups={groups}\n parentCollectionIds={parentCollectionIds}\n parentCollection={parentCollection}\n isNewCollection={isNewCollection}>\n {!isNewCollection && isMergedCollection && <div className={\"flex flex-col gap-4 mt-8\"}>\n <Typography variant={\"body2\"} color={\"secondary\"}>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\"}\n onClick={() => {\n setDeleteRequested(true);\n }}>Reset to code</Button>\n </div>}\n </CollectionDetailsForm>}\n\n {currentView === \"custom_actions\" && collection &&\n <EntityActionsEditTab collection={collection}/>}\n\n {currentView === \"subcollections\" && collection &&\n <SubcollectionsEditTab\n parentCollection={parentCollection}\n configController={configController}\n getUser={getUser}\n collectionInference={collectionInference}\n parentCollectionIds={parentCollectionIds}\n collection={collection}/>}\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 color={\"primary\"}\n onClick={() => {\n importConfig.setInUse(false);\n return setCurrentView(\"welcome\");\n }}>\n <ArrowBackIcon/>\n Back\n </Button>}\n\n {isNewCollection && includeTemplates && currentView === \"import_data_preview\" &&\n <Button variant={\"text\"}\n type=\"button\"\n color={\"primary\"}\n onClick={() => {\n setCurrentView(\"import_data_mapping\");\n }}>\n <ArrowBackIcon/>\n Back\n </Button>}\n\n {isNewCollection && includeTemplates && currentView === \"details\" &&\n <Button variant={\"text\"}\n color={\"neutral\"}\n type=\"button\"\n onClick={() => setCurrentView(\"welcome\")}>\n <ArrowBackIcon/>\n Back\n </Button>}\n\n {isNewCollection && currentView === \"properties\" && <Button variant={\"text\"}\n type=\"button\"\n color={\"neutral\"}\n onClick={() => setCurrentView(\"details\")}>\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 === \"details\" || currentView === \"properties\") &&\n <LoadingButton\n variant={\"filled\"}\n color=\"primary\"\n type=\"submit\"\n loading={isSubmitting}\n disabled={isSubmitting || (currentView === \"details\" && !validValues)}\n startIcon={currentView === \"properties\"\n ? <CheckIcon/>\n : undefined}\n >\n {currentView === \"details\" && \"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\";\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\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 }: 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 redirect: boolean,\n existingEntities?: Entity<any>[],\n pathSuggestions?: string[];\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 }>();\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 }: {\n id?: string,\n fullPath?: string,\n parentCollectionIds: string[],\n parentCollection?: PersistedCollection,\n existingEntities?: Entity<any>[]\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 });\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 });\n };\n\n const createCollection = ({\n parentCollectionIds,\n parentCollection,\n initialValues,\n redirect,\n sourceClick\n }: {\n parentCollectionIds: string[],\n parentCollection?: PersistedCollection\n initialValues?: {\n group?: string,\n path?: string,\n name?: string\n },\n redirect: boolean,\n sourceClick?: string\n }) => {\n console.debug(\"Create collection\", {\n parentCollectionIds,\n parentCollection,\n initialValues,\n redirect,\n sourceClick\n });\n onAnalyticsEvent?.(\"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 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 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={getData && currentPropertyDialog?.editedCollectionId\n ? () => {\n console.debug(\"get data for property\", currentPropertyDialog?.editedCollectionId);\n const resolvedPath = navigation.resolveIdsFrom(currentPropertyDialog.editedCollectionId!)\n return getData(resolvedPath, []);\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={[]}\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 { 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\n const snackbarController = useSnackbarController();\n const authController = useAuthController();\n const configController = useCollectionsConfigController();\n const collectionEditorController = useCollectionEditorController();\n\n const permissions = collectionEditorController.configPermissions({\n user: authController.user,\n collection\n });\n\n const onEditCollectionClicked = () => {\n collectionEditorController?.editCollection({\n id: collection.id,\n parentCollectionIds: []\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 <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 hover:bg-surface-100 dark:bg-surface-950 dark:bg-opacity-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 variant={\"outlined\"}\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={\"outlined\"}\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 color={\"primary\"}\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 { 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 { 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\";\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\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 }: 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 }\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 },\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\"} variant={\"outlined\"}\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","useCollectionEditorController","useContext","CollectionEditorContext","LayoutModeSwitch","t0","$","_c","value","onChange","className","t1","cls","t2","t3","Symbol","for","t4","t5","t6","t7","t8","t9","t10","t11","t12","t13","t14","t15","t16","t17","t18","CollectionDetailsForm","isNewCollection","reservedGroups","groups","parentCollection","children","groupRef","React","useRef","values","setFieldValue","handleChange","touched","errors","setFieldTouched","submitCount","useFormex","iconDialogOpen","setIconDialogOpen","useState","advancedPanelExpanded","setAdvancedPanelExpanded","databaseId","undefined","updateDatabaseId","pathTouched","getIn","toSnakeCase","idTouched","singularNameTouched","singular","updateName","useEffect","collectionIcon","filter","group","includes","ref","useAutoComplete","isSubcollection","customIdValue","customId","showErrors","e","target","Boolean","t19","t20","t21","t22","t23","t24","t25","t26","t27","DebouncedTextField","t28","t29","t30","t31","t32","openEntityMode","t33","t34","t35","history","t36","v","t37","t38","t39","t40","t41","t42","t43","t44","t45","t46","t47","t48","t49","singularName","t50","e_0","t51","t52","t53","t54","t55","t56","t57","sideDialogWidth","t58","e_1","value_0","isNaN","Number","t59","t60","t61","t62","t63","t64","t65","t66","t67","t68","t69","description","t70","t71","t72","t73","t74","t75","t76","defaultSize","t77","map","_temp2","t78","_temp","t79","includeJsonView","t80","v_0","t81","t82","t83","t84","t85","inlineEditing","t86","v_1","t87","t88","t89","t90","t91","t92","v_2","Error","t93","t94","t95","t96","t97","_temp3","t98","v_3","t99","collectionGroup","t100","t101","t102","t103","v_4","t104","textSearchEnabled","t105","t106","t107","t108","t109","t110","t111","t112","height","t113","icon","t114","t115","t116","t117","value_3","value_2","toUpperCase","value_1","DefaultDatabaseField","onDatabaseIdUpdate","idToPropertiesPath","replaceAll","namespaceToPropertiesPath","namespace","namespaceToPropertiesOrderPath","getFullId","propertyKey","propertyNamespace","getFullIdPath","keyWithNamespace","EnumForm","enumValues","onValuesChanged","onError","updateIds","disabled","allowDataInference","getData","forEach","enumValue","index","label","hasError","Object","keys","length","initialValues","validateOnChange","validation","formex","useCreateFormex","values_0","errors_0","EnumFormFields","enumValuesPath","shouldUpdateId","lastInternalIdAdded","setLastInternalIdAdded","editDialogIndex","setEditDialogIndex","inferring","setInferring","Set","inferredValuesRef","inferredValues","current","internalId","justAdded","entryError","has","buildEntry","then","data","flatData","flat","fieldData","Array","from","currentEnumValues","foundEnumValues","extractEnumFromValues","newEnumValues","some","enumValue_0","add","catch","finally","inferValues","console","error","EnumEntry","memo","EnumEntryInternal","updateId","autoFocus","onDialogOpen","inferredEntry","shouldUpdateIdRef","idValue","labelValue","currentLabelRef","areEqual","prevProps","nextProps","equal","EnumEntryDialog","open","onClose","idError","open_0","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","EnumPropertyField","multiselect","setFieldError","snackbarContext","useSnackbarController","defaultValue","valuesEnumValues","useMemo","resolveEnumValues","enumIds","type","message","res","entry","toString","fileTypes","StoragePropertyField","multiple","existing","baseStoragePath","acceptedFiles","fileName","maxSize","storagePath","storeUrl","imageResize","imageResizeMaxWidth","imageResizeMaxHeight","imageResizeMode","imageResizeFormat","imageResizeQuality","fileNameValue","storagePathValue","T0","T1","maxSizeValue","imageResizeMaxWidthValue","imageResizeMaxHeightValue","imageResizeModeValue","imageResizeFormatValue","imageResizeQualityValue","storedValue","fileTypesValue","isArray","allFileTypesSelected","handleTypesChange","hasFilenameCallback","hasStoragePathCallback","ExpandablePanel","entries","preventDefault","stopPropagation","parseInt","e_2","value_4","_temp4","value_5","_temp5","e_3","value_6","numValue","selected_1","selected","charAt","slice","selected_0","join","editableProperty","property","isPropertyBuilder","dataType","of","editable","removeNonEditableProperties","properties","_","key","propertyOrBuilder","reduce","a","b","PropertyFieldPreview","onClick","includeName","includeEditButton","propertyConfigs","useCustomizationController","getFieldConfig","propertyConfig","borderColorClass","cardClickableMixin","cardSelectedMixin","cardMixin","NonEditablePropertyPreview","PropertyTree","selectedPropertyKey","onPropertyClick","propertiesOrder","propertiesOrderProp","additionalFields","onPropertyMove","onPropertyRemove","inferredPropertyKeys","collectionEditable","activationConstraint","distance","coordinateGetter","sortableKeyboardCoordinates","sensors","useSensors","useSensor","PointerSensor","KeyboardSensor","event","active","over","activeId","String","overId","activeKey","split","pop","overKey","oldIndex","indexOf","newIndex","newPropertiesOrder","removed","splice","handleDragEnd","items","restrictToVerticalAxis","additionalField","find","warn","verticalListSortingStrategy","closestCenter","PropertyTreeEntry","attributes","listeners","setNodeRef","transform","transition","isDragging","useSortable","CSS","Translate","zIndex","position","style","isPropertyInferred","fullId","fullIdPath","subtree","defaultBorderMixin","left","top","bottom","MapPropertyField","propertyDialogOpen","setPropertyDialogOpen","setSelectedPropertyKey","selectedPropertyNamespace","setSelectedPropertyNamespace","currentPropertiesOrder","onPropertyCreated","propertiesPath","propertiesOrderPath","currentPropertiesOrder_0","p","deleteProperty","selectedPropertyFullId","selectedProperty","empty","propertiesOrder_0","namespace_0","propertyKey_0","namespace_1","spreadChildren","RepeatPropertyField","ofProperty","ofPropertyError","onPropertyChanged","widget","CommonPropertyFields","forwardRef","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","ungroupedCollections","selectedCollection","collection","flatMap","collection_0","collection_1","collection_2","col","DateTimePropertyField","modeValue","modeError","autoValueValue","autoValueError","modePath","autoValuePath","AdvancedPropertyValidation","hideFromCollection","readOnly","KeyValuePropertyField","updatePropertyFromWidget","propertyData","selectedWidgetId","updatedProperty","mergeDeep","storage","multiline","markdown","email","url","userSelect","keyValue","mode","UrlPropertyField","urlValue","supportedFieldsIds","supportedFields","DEFAULT_FIELD_CONFIGS","config","MarkdownPropertyField","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","validateId","isValidRegExp","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","hasValue","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","key_0","propertyConfig_1","baseProperty","baseFieldConfig","computedFieldConfig","fieldBackgroundDisabledMixin","fieldBackgroundHoverMixin","fieldBackgroundMixin","Dialog","DialogContent","group_0","key_2","propertyConfig_2","groupKey","key_1","propertyConfig_0","WidgetSelectViewItem","shouldWarnChangingDataType","camelCase","str","toLowerCase","parts","part","substring","GetCodeDialog","snackbarController","code","JSON5","stringify","collectionToCode","themes","vsDark","navigator","clipboard","writeText","tokens","getLineProps","getTokenProps","line","i","token","propertyCleanup","valueCopy","clone","isEmptyObject","childRes","fromBuilder","resolved","resolvedProperties","initialFilter","initialSort","subcollections","CollectionPropertiesEditorForm","propertyErrorsRef","onPropertyError","setDirty","extraIcon","getUser","doCollectionInference","dirty","largeLayout","useLargeLayout","asDialog","selectedPropertyIndex","setSelectedPropertyIndex","codeDialogOpen","setCodeDialogOpen","inferringProperties","setInferringProperties","newPropertyDialogOpen","setNewPropertyDialogOpen","setInferredPropertyKeys","currentPropertiesOrderRef","inferPropertiesFromData","debug","newCollection","makePropertiesEditable","newPropertyKeys","updatedProperties","acc","updatedPropertiesOrder","updatePropertiesOrder","getCurrentPropertiesOrder","propertyPath","previousFullId","previousPropertyPath","onPropertyErrorInternal","closePropertyDialog","emptyCollection","usedPropertiesOrder","owner","ownerId","body","displayName","UnsavedChangesDialog","handleOk","handleCancel","title","EntityCustomViewsSelectDialog","entityViews","view","SubcollectionsEditTab","configController","collectionInference","parentCollectionIds","contextEntityViews","subcollectionToDelete","setSubcollectionToDelete","addEntityViewDialogOpen","setAddEntityViewDialogOpen","viewToDelete","setViewToDelete","currentDialog","setCurrentDialog","setSubcollections","T2","T3","resolvedEntityViews","resolveEntityView","hardCodedEntityViews","totalEntityViews","Container","subcollection","editedCollectionId","Paper","Table","TableBody","deleteCollection","e_4","e_5","updatedCollection","selectedViewKey","e_6","view_0","productsCollectionTemplate","brand","main_image","available","columnWidth","price","requiredMessage","images","related_products","metadata","added_on","autoValue","blogCollectionTemplate","header_image","cacheControl","content","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","CollectionEditorWelcomeView","onContinue","existingCollectionPaths","pathSuggestions","s","c","filteredSuggestions","suggestion","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","propertyKey_1","p_0","PropertySelect","fieldId","newProperty","widget_0","PropertySelectItem","optionDisabled","CollectionEditorImportDataPreview","authController","useAuthController","loading","setLoading","loadEntities","mappedData","convertDataToEntity","idColumn","defaultValues","setEntities","selectionController","useSelectionController","entities","dataLoading","noMoreToLoad","cleanPropertiesFromImport","parentSlug","result","slugify","fullSlug","slugifiedResult","firstKey","EntityActionsSelectDialog","entityActions","action","EntityActionsEditTab","contextEntityActions","addEntityActionDialogOpen","setAddEntityActionDialogOpen","actionToDelete","setActionToDelete","resolvedEntityActions","resolveEntityAction","hardCodedEntityActions","totalEntityActions","selectedActionKey","log","action_1","action_0","CollectionEditorDialog","formDirty","setFormDirty","unsavedChangesDialogOpen","setUnsavedChangesDialogOpen","handleClose","CollectionEditor","topLevelNavigation","initialValuesProp","includeTemplates","collectionsInThisLevel","existingPaths","existingIds","setCollection","initialLoadingCompleted","setInitialLoadingCompleted","initialised","getCollectionFromPaths","initialCollection","randomString","applyPropertyConfigs","coolIconKeys","Math","floor","random","user","uid","CollectionEditorInternal","fullPath","extraView","existingEntities","useImportConfig","initialView","currentView","setCurrentView","setError","saveCollection","collectionData","setNextMode","inUse","parentPaths","inferCollectionFromData","Promise","resolve","inferredCollection","newCollectionState","schema","validateSync","abortEarly","inner","err","validatePath","formController","isSubmitting","updatedFullPath","convertIdsToPaths","resolvedPath","resolveIdsFrom","getDataWithPath","existingData","push","onImportDataSet","setInUse","buildEntityPropertiesFromData","setIdColumn","setImportData","filteredHeadingsOrder","setHeadingsOrder","setOriginProperties","mappedHeadings","validValues","onImportMappingComplete","isMergedCollection","merged","deleteRequested","setDeleteRequested","onWelcomeScreenContinue","View","importedCollection","removeUndefined","validate","rest","propertiesResult","applyPropertiesConfig","internalProperty","subpaths","removeInitialAndTrailingSlashes","ConfigControllerContext","createContext","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","saveProperty","createCollections","editCollections","deleteCollections","EditorCollectionAction","tableController","navigationController","collectionEditorController","getCollectionFromIds","canEditCollection","editorButton","useCollectionsConfigController","HomePageEditorCollectionAction","permissions","onEditCollectionClicked","event_0","CollectionViewHeaderAction","onHover","PropertyAddColumnComponent","getDefaultPropertiesOrder","NewCollectionButton","EditorCollectionActionStart","saveDefaultFilterButton","getObjectOrNull","filterValues","sortBy","clearFilter","setFilterValues","setSortBy","o","NewCollectionCard","context","canCreateCollections","EditorEntityAction","formContext","isDirty","useCollectionEditorPlugin","includeIntroView","Component","navigationEntries","saveNavigationEntries","additionalActions","additionalChildrenStart","CollectionActions","AdditionalCards","allowDragAndDrop","onNavigationEntriesUpdate","CollectionActionsStart","HeaderAction","AddColumnComponent","ActionsTop","provider","homePage","collectionView","IntroWidget","mergeCollections","baseCollections","backendCollections","modifyCollection","markAsEditable","joinCollectionLists","sort","indexA","findIndex","indexB","MissingReferenceWidget","pathProp","getLastSegment","getParentCollectionIds","collectionEditor","segments"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.es.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/locales/en.ts","../src/locales/es.ts","../src/locales/de.ts","../src/locales/fr.ts","../src/locales/it.ts","../src/locales/hi.ts","../src/locales/pt.ts","../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 useTranslation\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 const { t } = useTranslation();\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 ? t(\"new_collection\") : t(\"collection_with_name\", { name: values?.name })}\n </Typography>\n <DefaultDatabaseField databaseId={values.databaseId}\n onDatabaseIdUpdate={updateDatabaseId} />\n\n <Tooltip title={t(\"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 {t(\"is_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={t(\"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 : t(\"collection_name_description\")}\n </FieldCaption>\n </div>\n\n {/* Path */}\n <div className={cls(\"col-span-12\")}>\n <Field name={\"path\"}\n as={DebouncedTextField}\n label={t(\"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 ? t(\"relative_path_to_parent\") : t(\"path_in_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={t(\"singular_name\")} />\n <FieldCaption error={showErrors && Boolean(errors.singularName)}>\n {showErrors && Boolean(errors.singularName) ? errors.singularName : t(\"singular_name_description\")}\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={t(\"description\")}\n />\n <FieldCaption error={showErrors && Boolean(errors.description)}>\n {showErrors && Boolean(errors.description) ? errors.description : t(\"description_of_collection\")}\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={t(\"collection_id\")}\n error={showErrors && Boolean(errors.id)} />\n <FieldCaption error={touched.id && Boolean(errors.id)}>\n {touched.id && Boolean(errors.id) ? errors.id : t(\"collection_id_description\")}\n </FieldCaption>\n </div>\n\n {/* Collection Group */}\n <div className={\"col-span-12\"}>\n <BooleanSwitchWithLabel\n position={\"start\"}\n size={\"large\"}\n label={t(\"collection_group\")}\n onValueChange={(v) => setFieldValue(\"collectionGroup\", v)}\n value={values.collectionGroup ?? false}\n />\n <FieldCaption>\n {t(\"collection_group_description\")}\n </FieldCaption>\n </div>\n\n </div>\n\n {/* Advanced Settings */}\n <ExpandablePanel\n title={<Typography variant=\"subtitle2\">{t(\"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 ? t(\"doc_history_global\") : (\n values.history ? t(\"doc_history_enabled\") : t(\"doc_history_not_enabled\")\n )}</span>}\n onValueChange={(v) => setFieldValue(\"history\", v)}\n value={values.history === undefined ? null : values.history}\n />\n <FieldCaption>\n {t(\"doc_history_description\")}\n </FieldCaption>\n </div>\n\n {/* Document ID generation */}\n <div>\n <Select\n name=\"customId\"\n label={t(\"document_id_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 t(\"code_defined\");\n else if (value === \"true\")\n return t(\"users_must_define_id\");\n else if (value === \"optional\")\n return t(\"users_can_define_id\");\n else\n return t(\"doc_id_auto_generated\");\n }}\n >\n <SelectItem value={\"false\"}>\n {t(\"doc_id_auto_generated\")}\n </SelectItem>\n <SelectItem value={\"true\"}>\n {t(\"users_must_define_id\")}\n </SelectItem>\n <SelectItem value={\"optional\"}>\n {t(\"users_can_define_id\")}\n </SelectItem>\n </Select>\n <FieldCaption>\n {t(\"config_doc_id_generation\")}\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\"} />{t(\"enable_text_search\")}</span>}\n onValueChange={(v) => setFieldValue(\"textSearchEnabled\", v)}\n value={values.textSearchEnabled ?? false}\n />\n <FieldCaption>\n {t(\"text_search_description\")}\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 const { t } = useTranslation();\n\n return <Tooltip title={t(\"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={t(\"default_text\")}></TextField>\n </Tooltip>\n}\n","import { cls, SquareIcon, ToggleButtonGroup, Typography, VerticalSplitIcon } from \"@firecms/ui\";\nimport { useTranslation } from \"@firecms/core\";\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 const { t } = useTranslation();\n\n return <div className={cls(className)}>\n <Typography variant={\"label\"} color={\"secondary\"} className={\"ml-3.5\"}>{t(\"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: t(\"side_panel\"),\n icon: <VerticalSplitIcon />\n },\n {\n value: \"full_screen\",\n label: t(\"full_screen\"),\n icon: <SquareIcon />\n }\n ]}\n />\n </div>\n <Typography variant={\"caption\"} color={\"secondary\"} className={\"ml-3.5\"}>{t(\"should_documents_opened_full_screen\")}</Typography>\n </div>\n}\n","import { ViewMode, useTranslation } 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 const { t } = useTranslation();\n\n return <div className={cls(className)}>\n <Typography variant={\"label\"} color={\"secondary\"} className={\"ml-3.5\"}>{t(\"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: t(\"table_view\"),\n icon: <ListIcon />\n },\n {\n value: \"cards\",\n label: t(\"cards_view\"),\n icon: <AppsIcon />\n },\n {\n value: \"kanban\",\n label: t(\"kanban_view\"),\n icon: <ViewKanbanIcon />\n }\n ]}\n />\n </div>\n <Typography variant={\"caption\"} color={\"secondary\"} className={\"ml-3.5\"}>{t(\"choose_how_entities_displayed_default\")}</Typography>\n </div>\n}\n","import React, { useEffect } from \"react\";\nimport equal from \"react-fast-compare\"\n\nimport { ArrayContainer, ArrayEntryParams, EnumValueConfig, EnumValues, FieldCaption, useTranslation\n} 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 const { t } = useTranslation();\n\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 const { t } = useTranslation();\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>{t(\"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\";\nimport { useTranslation } from \"@firecms/core\";\n\nexport function GeneralPropertyValidation({ disabled }: {\n required?: boolean;\n disabled: boolean;\n}) {\n\n const { values, handleChange } = useFormex();\n const { t } = useTranslation();\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={t(\"required\")}\n tooltip={t(\"required_tooltip\")}\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={t(\"unique\")}\n tooltip={t(\"unique_tooltip\")}\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={t(\"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, useTranslation } 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 { t } = useTranslation();\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={t(\"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={t(\"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={t(\"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={t(\"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={t(\"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={t(\"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={t(\"matches_regex\")}\n size=\"small\"\n disabled={disabled}\n value={matchesStringValue}\n error={Boolean(matchesError)}/>\n <FieldCaption error={Boolean(matchesError)}>\n {matchesError ? t(\"not_valid_regexp\") : t(\"regex_helper\")}\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\";\nimport { useTranslation } from \"@firecms/core\";\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 { t } = useTranslation();\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={t(\"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={t(\"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\";\nimport { useTranslation } from \"@firecms/core\";\n\nexport function ValidationPanel({\n children\n }: PropsWithChildren<{}>) {\n\n const { t } = useTranslation();\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 {t(\"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, useTranslation } 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 { t } = useTranslation();\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: t(\"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 ? t(\"enum_missing_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={t(\"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\";\nimport { useTranslation } from \"@firecms/core\";\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 { t } = useTranslation();\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 fileTypes: Record<string, string> = {\n \"image/*\": t(\"file_type_images\"),\n \"video/*\": t(\"file_type_videos\"),\n \"audio/*\": t(\"file_type_audio\"),\n \"application/*\": t(\"file_type_applications\"),\n \"text/*\": t(\"file_type_text\")\n };\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 {t(\"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={t(\"all_file_types_allowed\")}\n disabled={disabled}\n name={acceptedFiles}\n value={fileTypesValue ?? []}\n onValueChange={handleTypesChange}\n label={allFileTypesSelected ? undefined : t(\"allowed_file_types\")}\n renderValues={(selected) => {\n if (!selected || selected.length === 0) return t(\"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 {t(\"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={t(\"file_name_label\")}\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={t(\"storage_path_label\")}\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>{t(\"storage_placeholders_description\")}</p>\n <ul>\n <li>{t(\"storage_placeholder_file\")}</li>\n <li>{t(\"storage_placeholder_file_name\")}</li>\n <li>{t(\"storage_placeholder_file_ext\")}</li>\n <li>{t(\"storage_placeholder_entity_id\")}</li>\n <li>{t(\"storage_placeholder_property_key\")}</li>\n <li>{t(\"storage_placeholder_path\")}</li>\n <li>{t(\"storage_placeholder_rand\")}</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={t(\"include_bucket_url\")}\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 {t(\"include_bucket_url_description\")}\n </Typography>\n\n <Field name={storeUrl}\n type=\"checkbox\">\n {({\n field,\n form\n }: FormexFieldProps) => {\n return <SwitchControl\n label={t(\"save_url_instead_of_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 {t(\"save_url_description\")}\n </Typography>\n </div>\n\n <div className={\"col-span-12\"}>\n <DebouncedTextField name={maxSize}\n type={\"number\"}\n label={t(\"max_size_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 {t(\"image_resize_configuration\")}\n </Typography>\n <Typography variant={\"caption\"} className={\"mb-2 block text-xs\"}>\n {t(\"image_resize_description\")}\n </Typography>\n </div>\n\n <div className={\"col-span-6\"}>\n <DebouncedTextField\n name={imageResizeMaxWidth}\n type={\"number\"}\n label={t(\"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={t(\"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={t(\"resize_mode\")}\n renderValue={(selected) => {\n if (!selected) return t(\"resize_cover\");\n return selected === \"contain\" ? t(\"resize_contain_description\") : t(\"resize_cover_description\");\n }}>\n <SelectItem value=\"contain\">\n {t(\"resize_contain_description\")}\n </SelectItem>\n <SelectItem value=\"cover\">\n {t(\"resize_cover_description\")}\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={t(\"output_format\")}\n renderValue={(selected) => {\n if (!selected) return t(\"format_original\");\n return selected.charAt(0).toUpperCase() + selected.slice(1);\n }}>\n <SelectItem value=\"original\">\n {t(\"format_original_description\")}\n </SelectItem>\n <SelectItem value=\"jpeg\">\n JPEG\n </SelectItem>\n <SelectItem value=\"png\">\n PNG\n </SelectItem>\n <SelectItem value=\"webp\">\n {t(\"format_webp_description\")}\n </SelectItem>\n </Select>\n </div>\n\n <div className={\"col-span-12\"}>\n <DebouncedTextField\n name={imageResizeQuality}\n type={\"number\"}\n label={t(\"quality_label\")}\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 {t(\"quality_hint\")}\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, useTranslation\n} 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 const { t } = useTranslation();\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\"}>{t(\"properties_in_this_group\")}</Typography>\n <Button\n onClick={() => setPropertyDialogOpen(true)}\n startIcon={<AddIcon/>}\n >\n {t(\"add_property_to\", { name: values.name ?? t(\"properties_in_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 {t(\"add_first_property_to_group\")}\n </Typography>}\n </Paper>\n </div>\n\n <div className={\"col-span-12\"}>\n <BooleanSwitchWithLabel\n position={\"start\"}\n size={\"medium\"}\n label={t(\"spread_children_as_columns\")}\n onValueChange={(v) => setFieldValue(\"spreadChildren\", v)}\n value={values.spreadChildren ?? false}\n />\n <FieldCaption>\n {t(\"spread_children_description\")}\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, useTranslation } 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 { t } = useTranslation();\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={t(\"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={t(\"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={t(\"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\";\nimport { useTranslation } from \"@firecms/core\";\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 const { t } = useTranslation();\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={t(\"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\";\nimport { useTranslation } from \"@firecms/core\";\n\nexport function BooleanPropertyField({ disabled }: {\n disabled: boolean;\n}) {\n const { values } = useFormex();\n const { t } = useTranslation();\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 ? t(\"default_value_not_set\") : t(\"default_value_is\", { value: 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\";\nimport { useTranslation } from \"@firecms/core\";\n\nexport function NumberPropertyValidation({ disabled }: {\n disabled: boolean;\n}) {\n\n const {\n values,\n handleChange\n } = useFormex();\n\n const { t } = useTranslation();\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={t(\"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={t(\"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={t(\"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={t(\"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={t(\"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={t(\"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={t(\"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\";\nimport { useTranslation } from \"@firecms/core\";\n\nexport function NumberPropertyField({ disabled }: {\n disabled: boolean;\n}) {\n\n const { values, setFieldValue } = useFormex();\n const { t } = useTranslation();\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={t(\"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, useTranslation } 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 const { t } = useTranslation();\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={t(\"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 || t(\"views_group\")}\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={t(\"views_group\")}>\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, useTranslation } 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 { t } = useTranslation();\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={t(\"mode_label\")}\n fullWidth={true}\n renderValue={(v) => {\n switch (v) {\n case \"date_time\":\n return t(\"date_time_mode\");\n case \"date\":\n return t(\"date_mode\");\n default:\n return \"\";\n }\n }}\n disabled={disabled}>\n <SelectItem value={\"date_time\"}> {t(\"date_time_mode\")} </SelectItem>\n <SelectItem value={\"date\"}> {t(\"date_mode\")} </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 t(\"auto_on_create\");\n case \"on_update\":\n return t(\"auto_on_update\");\n default:\n return t(\"auto_none\");\n }\n }}\n error={Boolean(autoValueError)}\n label={t(\"automatic_value\")}>\n <SelectItem value={\"none\"}> {t(\"auto_none\")} </SelectItem>\n <SelectItem value={\"on_create\"}> {t(\"auto_on_create\")} </SelectItem>\n <SelectItem value={\"on_update\"}> {t(\"auto_on_update\")} </SelectItem>\n </Select>\n <FieldCaption error={Boolean(autoValueError)}>\n {autoValueError ?? t(\"auto_value_description\")}\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 t(\"local_timezone\");\n const tz = TIMEZONES.find(t => t.value === v);\n return tz?.label ?? v;\n }}\n error={Boolean(timezoneError)}\n label={t(\"timezone_label\")}>\n <SelectItem value={\"__local__\"}> {t(\"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 ?? t(\"timezone_description\")}\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\";\nimport { useTranslation } from \"@firecms/core\";\n\nexport function AdvancedPropertyValidation({ disabled }: {\n disabled: boolean\n}) {\n\n const { t } = useTranslation();\n\n const columnWidth = \"columnWidth\";\n const hideFromCollection = \"hideFromCollection\";\n const readOnly = \"readOnly\";\n const nullable = \"nullable\";\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={t(\"hide_from_collection\")}\n size={\"medium\"}\n disabled={disabled}\n form={form}\n tooltip={t(\"hide_from_collection_tooltip\")}\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={t(\"read_only\")}\n size={\"medium\"}\n disabled={disabled}\n tooltip={t(\"read_only_tooltip\")}\n form={form}\n field={field}/>\n }}\n </Field>\n </div>\n\n <div className={\"col-span-12\"}>\n <Field name={nullable}\n type=\"checkbox\">\n {({ field, form }: FormexFieldProps) => {\n return <SwitchControl\n label={t(\"nullable\")}\n size={\"medium\"}\n disabled={disabled}\n tooltip={t(\"nullable_tooltip\")}\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 useTranslation\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 { t } = useTranslation();\n\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\">{t(\"all_of_these\")}</SelectItem>\n <SelectItem value=\"or\">{t(\"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 { t } = useTranslation();\n\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\";\nimport { useTranslation } from \"@firecms/core\";\n\nexport function UrlPropertyField({\n disabled,\n showErrors\n }: {\n disabled: boolean;\n showErrors: boolean;\n}) {\n\n const { values, setFieldValue } = useFormex();\n const { t } = useTranslation();\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={t(\"preview_type\")}\n renderValue={(value: string) => {\n switch (value) {\n case \"image\":\n return t(\"preview_image\");\n case \"video\":\n return t(\"preview_video\");\n case \"audio\":\n return t(\"preview_audio\");\n default:\n return t(\"display_url\");\n }\n }}\n value={urlValue ?? \"[NONE]\"}>\n <SelectItem value={\"[NONE]\"}>\n {t(\"display_url\")}\n </SelectItem>\n <SelectItem value={\"image\"}>\n {t(\"preview_image\")}\n </SelectItem>\n <SelectItem value={\"video\"}>\n {t(\"preview_video\")}\n </SelectItem>\n <SelectItem value={\"audio\"}>\n {t(\"preview_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={t(\"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\";\nimport { useTranslation } from \"@firecms/core\";\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 { t } = useTranslation();\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 {t(\"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={t(\"strip_html_on_paste\")}\n />\n <Typography variant={\"caption\"} className={\"ml-3.5 mt-1 mb-2\"}>\n {t(\"strip_html_description\")}\n </Typography>\n\n <BooleanSwitchWithLabel\n size={\"small\"}\n disabled={disabled}\n value={transformPastedTextValue}\n onValueChange={(value) => updateMarkdownConfig(\"transformPastedText\", value)}\n label={t(\"convert_pasted_to_markdown\")}\n />\n <Typography variant={\"caption\"} className={\"ml-3.5 mt-1 mb-2\"}>\n {t(\"convert_pasted_description\")}\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 {t(\"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={t(\"file_name_label\")}\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={t(\"storage_path_label\")}\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>{t(\"storage_placeholders_description\")}</p>\n <ul>\n <li>{t(\"storage_placeholder_file\")}</li>\n <li>{t(\"storage_placeholder_file_name\")}</li>\n <li>{t(\"storage_placeholder_file_ext\")}</li>\n <li>{t(\"storage_placeholder_entity_id\")}</li>\n <li>{t(\"storage_placeholder_property_key\")}</li>\n <li>{t(\"storage_placeholder_path\")}</li>\n <li>{t(\"storage_placeholder_rand\")}</li>\n </ul>\n </Typography>\n\n <Typography variant={\"caption\"} className={\"ml-3.5 mt-1 mb-2\"}>\n {t(\"markdown_url_note\")}\n </Typography>\n </div>\n\n <div className={\"col-span-12\"}>\n <DebouncedTextField name={maxSize}\n type={\"number\"}\n label={t(\"max_size_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={t(\"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 useTranslation,\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 { t } = useTranslation();\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 = t(\"required\");\n } else {\n const nameError = validateName(values.name, t);\n if (nameError)\n errors.name = nameError;\n }\n if (!values.id) {\n errors.id = t(\"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, t);\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: t(\"invalid_regular_expression\")\n }\n }\n }\n if (values.dataType === \"reference\" && !values.path) {\n errors.path = t(\"must_specify_target_collection\");\n }\n if (values.propertyConfig === \"repeat\") {\n if (!(values as any).of) {\n errors.of = t(\"need_specify_repeat_field\");\n }\n }\n if (values.propertyConfig === \"block\") {\n if (!(values as any).oneOf) {\n errors.oneOf = t(\"need_specify_block_properties\");\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] = t(\"incomplete_condition\");\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] = t(\"incomplete_condition\");\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 { t } = useTranslation();\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>{t(\"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 { t } = useTranslation();\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\"}>{t(\"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>{t(\"delete_this_property\")}</div>}\n body={\n <div>{t(\"delete_property_warning\")}</div>\n } />}\n\n </>\n );\n}\n\nconst idRegEx = /^[a-zA-Z_][a-zA-Z0-9_]*$/;\n\nfunction validateId(value: string | undefined, existingPropertyKeys: string[] | undefined, t: any) {\n\n let error;\n if (!value) {\n error = t(\"error_must_specify_id\");\n }\n if (value && !value.match(idRegEx)) {\n error = t(\"error_id_format\");\n }\n if (value && existingPropertyKeys && existingPropertyKeys.includes(value)) {\n error = t(\"error_id_already_exists\");\n }\n return error;\n}\n\nfunction validateName(value: string, t: any) {\n let error;\n if (!value) {\n error = t(\"error_must_specify_title\");\n }\n return error;\n}\n\nconst WIDGET_TYPE_MAP: Record<PropertyConfigId, string> = {\n text_field: \"widget_group_text\",\n multiline: \"widget_group_text\",\n markdown: \"widget_group_text\",\n url: \"widget_group_text\",\n email: \"widget_group_text\",\n switch: \"widget_group_boolean\",\n user_select: \"widget_group_users\",\n select: \"widget_group_select\",\n multi_select: \"widget_group_select\",\n number_input: \"widget_group_number\",\n number_select: \"widget_group_select\",\n multi_number_select: \"widget_group_select\",\n file_upload: \"widget_group_file\",\n multi_file_upload: \"widget_group_file\",\n reference: \"widget_group_reference\",\n reference_as_string: \"widget_group_text\",\n multi_references: \"widget_group_reference\",\n date_time: \"widget_group_date\",\n group: \"widget_group_group\",\n key_value: \"widget_group_group\",\n repeat: \"widget_group_array\",\n custom_array: \"widget_group_array\",\n block: \"widget_group_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 { t } = useTranslation();\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 groupKey = WIDGET_TYPE_MAP[key as PropertyConfigId];\n if (groupKey) {\n return t(groupKey as any);\n }\n return t(\"custom_or_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>{t(\"select_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 {t(\"select_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 const translatedGroup = groupKey ? t(groupKey as any) : t(\"custom_or_other\");\n if (translatedGroup === 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 { t } = useTranslation();\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={t(\"error_changing_data_type\")}>\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 useTranslation\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 { t } = useTranslation();\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 <Typography variant={\"label\"} color={\"secondary\"} className={\"ml-3.5\"}>{t(\"kanban_column_property\")}</Typography>\n <Select\n key={`column-select-${enumStringProperties.length}`}\n name=\"kanban.columnProperty\"\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} ({t(\"not_found_suffix\")})</span>;\n }\n const prop = enumStringProperties.find(p => p.key === value);\n if (!prop) return t(\"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 ? t(\"kanban_property_not_found\", { property: kanbanConfig?.columnProperty ?? \"\" })\n : enumStringProperties.length === 0\n ? t(\"no_enum_string_properties\")\n : t(\"kanban_column_description\")\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 {t(\"create_property\", { property: dialogPropertyKey })}\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 useTranslation\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 const { t } = useTranslation();\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 {t(\"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 <Typography variant={\"label\"} color={\"secondary\"} className={\"ml-3.5\"}>{t(\"order_property\")}</Typography>\n <Select\n key={`order-select-${numberProperties.length}`}\n name=\"orderProperty\"\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} ({t(\"not_found_suffix\")})</span>;\n }\n const prop = numberProperties.find(p => p.key === value);\n if (!prop) return t(\"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 || t(\"number\")}\n </Typography>\n </div>\n </div>\n </SelectItem>\n );\n })}\n </Select>\n <FieldCaption error={orderPropertyMissing}>\n {orderPropertyMissing\n ? t(\"order_property_not_found\", { property: values.orderProperty ?? \"\" })\n : numberProperties.length === 0\n ? t(\"no_number_properties\")\n : t(\"order_property_description\")\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 {t(\"create_property\", { property: dialogPropertyKey })}\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={t(\"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={t(\"side_dialog_width\")} />\n <FieldCaption>\n {t(\"side_dialog_width_description\")}\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 ? t(\"inline_editing_enabled\") : t(\"inline_editing_disabled\")}\n onValueChange={(v) => setFieldValue(\"inlineEditing\", v)}\n value={values.inlineEditing === undefined ? true : values.inlineEditing}\n />\n <FieldCaption>\n {t(\"inline_editing_description\")}\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 ? t(\"include_json_view\") : t(\"no_json_view\")}\n onValueChange={(v) => setFieldValue(\"includeJsonView\", v)}\n value={values.includeJsonView === undefined ? true : values.includeJsonView}\n />\n <FieldCaption>\n {t(\"json_view_description\")}\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, useTranslation } 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 { t } = useTranslation();\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 : t(\"no_collection_selected\");\n\n const jsonCode = collection\n ? JSON.stringify(collectionData, null, 2)\n : t(\"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\"}>{t(\"code_for_collection\")} {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 ? t(\"use_config_define_json\")\n : <>\n {t(\"customise_collection_code\")}\n <br/>\n <a\n rel=\"noopener noreferrer\"\n href={\"https://firecms.co/docs/cloud/quickstart\"}>{t(\"more_info\")}</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: t(\"copied\")\n })\n return navigator.clipboard.writeText(code);\n }}>\n <ContentCopyIcon size={\"small\"} />\n {t(\"copy\")}\n </Button>\n <Button onClick={() => onOpenChange(false)}>{t(\"cancel\")}</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 useTranslation\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 const { t } = useTranslation();\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 {t(\"created_by\", { name: 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={t(\"get_code_for_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={t(\"add_properties_from_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={t(\"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 {t(\"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 ? t(\"add_first_property\")\n : t(\"select_property_to_edit\")}\n </Typography>\n <Button\n onClick={() => setNewPropertyDialogOpen(true)}\n >\n <AddIcon />\n {t(\"add_new_property\")}\n </Button>\n </div>}\n\n {selectedProperty && isPropertyBuilder(selectedProperty) &&\n <Typography variant={\"label\"} className=\"flex items-center justify-center\">\n {t(\"property_defined_as_builder\")}\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, useTranslation } 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 const { t } = useTranslation();\n\n return <Dialog\n maxWidth={\"md\"}\n open={open}>\n <DialogTitle>{t(\"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 {t(\"no_custom_views_defined\")}\n </Typography>\n }\n </DialogContent>\n <DialogActions>\n <Button onClick={() => onClose()}>{t(\"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 useTranslation\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 const { t } = useTranslation();\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 {t(\"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={t(\"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 {t(\"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 {t(\"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\">{t(\"more_info\")}</Button>}>\n {t(\"define_custom_views_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={t(\"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 {t(\"view_defined_in_code\")} <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 {t(\"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={<>{t(\"delete_this_subcollection\")}</>}\n body={<>{t(\"remove_collection_warning\")}</>} />}\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={<>{t(\"remove_this_view\")}</>}\n body={<>{t(\"remove_view_warning\")}</>} />}\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, useTranslation } 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 const { t } = useTranslation();\n\n return <Dialog\n maxWidth={\"md\"}\n open={open}>\n <DialogTitle>{t(\"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 {t(\"no_custom_actions_defined\")}\n </Typography>\n }\n </DialogContent>\n <DialogActions>\n <Button onClick={() => onClose()}>{t(\"cancel\")}</Button>\n </DialogActions>\n </Dialog>\n}\n","import React from \"react\";\nimport {\n ConfirmationDialog,\n EntityAction,\n EntityCollection,\n resolveEntityAction,\n useCustomizationController,\n useTranslation\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 const { t } = useTranslation();\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 {t(\"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\">{t(\"more_info\")}</Button>}>\n {t(\"define_custom_actions_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={t(\"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 {t(\"action_defined_in_code\")} <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 {t(\"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={<>{t(\"remove_this_action\")}</>}\n body={<>{t(\"remove_action_warning\")}</>} />}\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 useTranslation\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 const { t } = useTranslation();\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 {t(\"extend_title\")}\n </Typography>\n <Typography variant={\"body2\"} color={\"secondary\"}>\n {t(\"extend_description\")}\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 {t(\"collection_defined_in_code\")}\n </Typography>\n <Button color={\"neutral\"} onClick={onResetToCode}>\n {t(\"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, useTranslation } 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 { t } = useTranslation();\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 {t(\"ai_assist\")}\n </Button>\n ) : (\n <IconButton\n size={size}\n disabled={loading}\n aria-label={t(\"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 ? t(\"modify_collection_with_ai\") : t(\"generate_collection_with_ai\")}\n </Typography>\n </div>\n\n <Typography variant=\"caption\" color=\"secondary\">\n {existingCollection\n ? t(\"describe_changes_to_make\")\n : t(\"describe_collection_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 ? t(\"ai_placeholder_modify\")\n : t(\"ai_placeholder_create\")\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 {t(\"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 ? t(\"generating\") : t(\"generate_with_ai\")}\n </Button>\n </div>\n </div>\n </Menu>\n );\n}\n","import React, { useState } from \"react\";\nimport { AIIcon, EntityCollection, prettifyIdentifier, useTranslation } 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 const { t } = useTranslation();\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 {t(\"new_collection\")}\n </Typography>\n </div>\n\n {parentCollection && <Chip colorScheme={\"tealDarker\"}>\n <Typography variant={\"caption\"}>\n {t(\"this_is_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 ● {t(\"use_existing_paths_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 ● {t(\"describe_collection_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 {t(\"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 ● {t(\"create_from_json_config\")}\n </Typography>\n\n <Button\n variant={\"outlined\"}\n onClick={() => setJsonImportOpen(true)}\n startIcon={<CodeIcon size=\"small\" />}\n >\n {t(\"paste_json_config\")}\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 ● {t(\"create_collection_from_file_formats\")}\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 ● {t(\"select_template\")}\n </Typography>\n\n <div className={\"flex gap-2\"}>\n <TemplateButton title={t(\"products\")}\n subtitle={t(\"collection_products_subtitle\")}\n icon={<Icon size={\"small\"}\n iconKey={productsCollectionTemplate.icon! as string} />}\n onClick={() => {\n setValues(productsCollectionTemplate);\n onContinue();\n }} />\n <TemplateButton title={t(\"users\")}\n subtitle={t(\"collection_users_subtitle\")}\n icon={<Icon size={\"small\"} iconKey={usersCollectionTemplate.icon! as string} />}\n onClick={() => {\n setValues(usersCollectionTemplate);\n onContinue();\n }} />\n <TemplateButton title={t(\"blog_posts\")}\n subtitle={t(\"collection_blog_posts_subtitle\")}\n icon={<Icon size={\"small\"} iconKey={blogCollectionTemplate.icon! as string} />}\n onClick={() => {\n setValues(blogCollectionTemplate);\n onContinue();\n }} />\n <TemplateButton title={t(\"pages\")}\n subtitle={t(\"collection_pages_subtitle\")}\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, useTranslation\n} 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 const { t } = useTranslation();\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\"}>{t(\"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 useTranslation\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 const { t } = useTranslation();\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\"}>{t(\"imported_data_preview\")}</Typography>\n <Typography variant={\"caption\"}>{t(\"entities_with_same_id_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 useTranslation,\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 const { t } = useTranslation();\n\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>{t(\"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={t(\"unsaved_changes_in_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 | null)[],\n}\n) {\n\n const { t } = useTranslation();\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: t(\"error_persisting_collection\", { error: e.message ?? t(\"details_in_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: t(\"error_inferring_collection\", { error: e.message ?? t(\"details_in_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: t(\"error_persisting_collection\", { error: e.message ?? t(\"details_in_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(t, col.path, isNewCollection, existingPaths, col.id);\n if (pathError) {\n errors.path = pathError;\n }\n const idError = validateId(t, 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(t, 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: t(\"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 {t(\"tab_general\")}\n </Tab>\n <Tab value={\"display\"}>\n {t(\"tab_display\")}\n </Tab>\n <Tab value={\"properties\"}>\n {t(\"tab_properties\")}\n </Tab>\n <Tab value={\"extend\"}>\n {t(\"tab_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: t(\"data_imported_successfully_msg\")\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 {t(\"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 {t(\"back\")}\n </Button>}\n\n {isNewCollection && includeTemplates && currentView === \"general\" &&\n <Button variant={\"text\"}\n type=\"button\"\n onClick={() => setCurrentView(\"welcome\")}>\n {t(\"back\")}\n </Button>}\n\n {isNewCollection && currentView === \"properties\" && <Button variant={\"text\"}\n type=\"button\"\n color={\"neutral\"}\n onClick={() => setCurrentView(\"general\")}>\n <ArrowBackIcon />\n {t(\"back\")}\n </Button>}\n\n <Button variant={\"text\"}\n color={\"neutral\"}\n onClick={() => {\n handleCancel();\n }}>\n {t(\"cancel\")}\n </Button>\n\n {currentView === \"welcome\" &&\n <Button variant={\"text\"} onClick={() => onWelcomeScreenContinue()}>\n {t(\"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 {t(\"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 {t(\"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\" && t(\"next\")}\n {currentView === \"properties\" && t(\"create_collection\")}\n </LoadingButton>}\n\n {!isNewCollection && <LoadingButton\n variant=\"filled\"\n color=\"primary\"\n type=\"submit\"\n loading={isSubmitting}\n >\n {t(\"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={<>{t(\"delete_stored_config\")}</>}\n body={<>{t(\"delete_stored_config_body\")}</>} />\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\ntype TranslateFn = (key: string, params?: Record<string, string>) => string;\n\nconst validatePath = (t: TranslateFn, value: string, isNewCollection: boolean, existingPaths: string[], idValue?: string) => {\n let error;\n if (!value) {\n error = t(\"must_specify_path\");\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 = t(\"collection_path_already_exists\");\n\n const subpaths = removeInitialAndTrailingSlashes(value).split(\"/\");\n if (subpaths.length % 2 === 0) {\n error = t(\"collection_path_odd_segments\", { path: value });\n }\n return error;\n};\n\nconst validateId = (t: TranslateFn, 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 = t(\"collection_uses_path_as_id\");\n if (isNewCollection && existingIds?.includes(value.trim().toLowerCase()))\n error = t(\"collection_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, useTranslation } 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 const { t } = useTranslation();\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 ? t(\"edit_collection\") : t(\"no_permissions_edit_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, useTranslation } 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 { t } = useTranslation();\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 ? t(\"add_new_property\") : t(\"no_permission_add_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 { useTranslation } from \"@firecms/core\";\nimport { useCollectionEditorController } from \"../useCollectionEditorController\";\n\nexport function NewCollectionButton() {\n const { t } = useTranslation();\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 {t(\"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, useTranslation } 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 { t } = useTranslation();\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\"}>{t(\"add_new_collection\").toUpperCase()}</Typography>\n\n {!canCreateCollections &&\n <Typography variant={\"caption\"}>\n {t(\"no_permissions_create_collection\")}\n </Typography>\n }\n </div>\n\n </Card>\n );\n}\n","import { PluginFormActionProps, useAuthController, useNavigationController, useTranslation } 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 const { t } = useTranslation();\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 ? t(\"save_before_changing_schema\") : t(\"edit_schema_for_this_form\")) : t(\"no_permissions_to_edit_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","export const collectionEditorTranslationsEn = {\n // Storage & File Upload\n file_upload_config: \"File upload config\",\n file_type_images: \"Images\",\n file_type_videos: \"Videos\",\n file_type_audio: \"Audio files\",\n file_type_applications: \"Files (pdf, zip, csv, excel...)\",\n file_type_text: \"Text files\",\n only: \"Only\",\n all_file_types_allowed: \"All file types allowed\",\n allowed_file_types: \"Allowed file types\",\n file_name_label: \"File name\",\n storage_path_label: \"Storage path\",\n storage_placeholders_description: \"You can use the following placeholders in the file name and storage path values:\",\n storage_placeholder_file: \"{file} - Full name of the uploaded file\",\n storage_placeholder_file_name: \"{file.name} - Name of the uploaded file without extension\",\n storage_placeholder_file_ext: \"{file.ext} - Extension of the uploaded file\",\n storage_placeholder_entity_id: \"{entityId} - ID of the entity\",\n storage_placeholder_property_key: \"{propertyKey} - ID of this field\",\n storage_placeholder_path: \"{path} - Path of this entity\",\n storage_placeholder_rand: \"{rand} - Random value used to avoid name collisions\",\n include_bucket_url: \"Include bucket URL (gs://...) in saved value\",\n include_bucket_url_description: \"Turn this setting on if you want to save a fully-qualified storage URL (e.g. gs://my-bucket/path/to/file) instead of just the storage path. You can only change this prop upon creation.\",\n save_url_instead_of_path: \"Save URL instead of storage path\",\n save_url_description: \"Turn this setting on, if you prefer to save the download URL of the uploaded file instead of the storage path. You can only change this prop upon creation.\",\n max_size_bytes: \"Max size (in bytes)\",\n image_resize_configuration: \"Image Resize Configuration\",\n image_resize_description: \"Automatically resize and optimize images before upload (JPEG, PNG, WebP only)\",\n max_width_px: \"Max width (px)\",\n max_height_px: \"Max height (px)\",\n resize_mode: \"Resize mode\",\n resize_contain: \"Contain\",\n resize_contain_description: \"Contain (fit within bounds)\",\n resize_cover: \"Cover\",\n resize_cover_description: \"Cover (fill bounds, may crop)\",\n output_format: \"Output format\",\n format_original: \"Original\",\n format_original_description: \"Original (keep same format)\",\n format_webp_description: \"WebP (best compression)\",\n quality_label: \"Quality (0-100)\",\n quality_hint: \"Higher quality = larger file size. Recommended: 80-90 for photos, 90-100 for graphics\",\n\n // URL Property\n preview_type: \"Preview type\",\n preview_image: \"Image\",\n preview_video: \"Video\",\n preview_audio: \"Audio\",\n display_url: \"Display URL\",\n\n // Boolean Property\n default_value_not_set: \"Default value not set\",\n default_value_is: \"Default value is {{value}}\",\n\n // Enum Property\n default_value_was_cleared: \"Default value was cleared\",\n enum_missing_values: \"This enum property is missing some values\",\n\n // DateTime Property\n mode_label: \"Mode\",\n date_time_mode: \"Date/Time\",\n date_mode: \"Date\",\n automatic_value: \"Automatic value\",\n auto_on_create: \"On create\",\n auto_on_update: \"On any update\",\n auto_none: \"None\",\n auto_value_description: \"Update this field automatically when creating or updating the entity\",\n timezone_label: \"Timezone\",\n local_timezone: \"Local timezone\",\n timezone_description: \"Timezone for displaying and inputting dates. Values are always stored in UTC.\",\n\n // Reference Property\n target_collection: \"Target collection\",\n views_group: \"Views\",\n\n // Map Property\n add_property_to: \"Add property to {{name}}\",\n add_first_property_to_group: \"Add the first property to this group\",\n spread_children_as_columns: \"Spread children as columns\",\n spread_children_description: \"Set this flag to true if you want to display the children of this group as individual columns. This will only work for top level groups.\",\n\n // Markdown Property\n paste_behavior: \"Paste behavior\",\n strip_html_on_paste: \"Strip HTML on paste\",\n strip_html_description: \"Remove HTML tags and inline styles when pasting content from external sources\",\n convert_pasted_to_markdown: \"Convert pasted text to markdown\",\n convert_pasted_description: \"Convert rich text (from Google Docs, Word, etc.) to clean markdown format\",\n markdown_url_note: \"When using Markdown, the URL of the uploaded files are always saved in the text value (not the path).\",\n\n // Advanced Property\n hide_from_collection: \"Hide from collection\",\n hide_from_collection_tooltip: \"Hide this field from the collection view. It will still be visible in the form view\",\n read_only: \"Read only\",\n read_only_tooltip: \"Is this a read only field. Display only as a preview\",\n nullable: \"Nullable\",\n nullable_tooltip: \"Allow this field to be explicitly set to null. A clear button will be shown to the user\",\n\n // Dialog & Tabs\n tab_general: \"General\",\n tab_display: \"Display\",\n tab_properties: \"Properties\",\n tab_extend: \"Extend\",\n unsaved_changes_in_collection: \"There are unsaved changes in this collection\",\n error_persisting_collection: \"Error persisting collection: {{error}}\",\n details_in_console: \"Details in the console\",\n error_inferring_collection: \"Error inferring collection: {{error}}\",\n collection_deleted: \"Collection deleted\",\n data_imported_successfully_msg: \"Data imported successfully\",\n must_specify_path: \"You must specify a path in the database for this collection\",\n collection_path_already_exists: \"There is already a collection with the specified path. If you want to have multiple collections referring to the same database path, make sure they have different ids\",\n collection_path_odd_segments: \"Collection paths must have an odd number of segments: {{path}}\",\n collection_uses_path_as_id: \"There is already a collection that uses this value as a path\",\n collection_uses_this_id: \"There is already a collection which uses this id\",\n delete_stored_config: \"Delete the stored config?\",\n delete_stored_config_body: \"This will not delete any data, only the stored config, and reset to the code state.\",\n order_label: \"Order\",\n\n // Collection Properties Editor\n select_property_to_edit: \"Select a property to edit it\",\n add_first_property: \"Now you can add your first property\",\n add_new_property: \"Add new property\",\n no_permission_add_properties: \"You don't have permission to add new properties\",\n get_code_for_collection: \"Get the code for this collection\",\n add_properties_from_data: \"Add new properties based on data\",\n collection_name_placeholder: \"Collection name\",\n created_by: \"Created by {{name}}\",\n property_defined_as_builder: \"This property is defined as a property builder in code\",\n\n // Extend Settings\n extend_title: \"Extend\",\n extend_description: \"Add subcollections, custom views, and entity actions to this collection.\",\n collection_defined_in_code: \"This collection is defined in code. The changes done in this editor will override the properties defined in code. You can delete the overridden values to revert to the state defined in code.\",\n reset_to_code: \"Reset to code\",\n\n // Widget Type Groups\n widget_group_text: \"Text\",\n widget_group_boolean: \"Boolean\",\n widget_group_users: \"Users\",\n widget_group_select: \"Select\",\n widget_group_number: \"Number\",\n widget_group_file: \"File\",\n widget_group_reference: \"Reference\",\n widget_group_date: \"Date\",\n widget_group_group: \"Group\",\n widget_group_array: \"Array\"\n};\n","export const collectionEditorTranslationsEs = {\n file_upload_config: \"Configuración de subida de archivos\",\n file_type_images: \"Imágenes\",\n file_type_videos: \"Videos\",\n file_type_audio: \"Archivos de audio\",\n file_type_applications: \"Archivos (pdf, zip, csv, excel...)\",\n file_type_text: \"Archivos de texto\",\n only: \"Solo\",\n all_file_types_allowed: \"Todos los tipos de archivo permitidos\",\n allowed_file_types: \"Tipos de archivo permitidos\",\n file_name_label: \"Nombre del archivo\",\n storage_path_label: \"Ruta de almacenamiento\",\n storage_placeholders_description: \"Puedes usar los siguientes marcadores en los valores del nombre de archivo y la ruta de almacenamiento:\",\n storage_placeholder_file: \"{file} - Nombre completo del archivo subido\",\n storage_placeholder_file_name: \"{file.name} - Nombre del archivo subido sin extensión\",\n storage_placeholder_file_ext: \"{file.ext} - Extensión del archivo subido\",\n storage_placeholder_entity_id: \"{entityId} - ID de la entidad\",\n storage_placeholder_property_key: \"{propertyKey} - ID de este campo\",\n storage_placeholder_path: \"{path} - Ruta de esta entidad\",\n storage_placeholder_rand: \"{rand} - Valor aleatorio para evitar colisiones de nombres\",\n include_bucket_url: \"Incluir URL del bucket (gs://...) en el valor guardado\",\n include_bucket_url_description: \"Activa esta opción si deseas guardar una URL de almacenamiento completa (ej. gs://mi-bucket/ruta/al/archivo) en lugar de solo la ruta de almacenamiento. Solo puedes cambiar esta opción al crear.\",\n save_url_instead_of_path: \"Guardar URL en lugar de ruta de almacenamiento\",\n save_url_description: \"Activa esta opción si prefieres guardar la URL de descarga del archivo subido en lugar de la ruta de almacenamiento. Solo puedes cambiar esta opción al crear.\",\n max_size_bytes: \"Tamaño máximo (en bytes)\",\n image_resize_configuration: \"Configuración de redimensionamiento de imagen\",\n image_resize_description: \"Redimensionar y optimizar imágenes automáticamente antes de subirlas (solo JPEG, PNG, WebP)\",\n max_width_px: \"Ancho máximo (px)\",\n max_height_px: \"Alto máximo (px)\",\n resize_mode: \"Modo de redimensionamiento\",\n resize_contain: \"Contener\",\n resize_contain_description: \"Contener (ajustar dentro de los límites)\",\n resize_cover: \"Cubrir\",\n resize_cover_description: \"Cubrir (rellenar límites, puede recortar)\",\n output_format: \"Formato de salida\",\n format_original: \"Original\",\n format_original_description: \"Original (mantener mismo formato)\",\n format_webp_description: \"WebP (mejor compresión)\",\n quality_label: \"Calidad (0–100)\",\n quality_hint: \"Mayor calidad = archivo más grande. Recomendado: 80–90 para fotos, 90–100 para gráficos\",\n preview_type: \"Tipo de vista previa\",\n preview_image: \"Imagen\",\n preview_video: \"Video\",\n preview_audio: \"Audio\",\n display_url: \"Mostrar URL\",\n default_value_not_set: \"Valor predeterminado no establecido\",\n default_value_is: \"El valor predeterminado es {{value}}\",\n default_value_was_cleared: \"El valor predeterminado fue eliminado\",\n enum_missing_values: \"A esta propiedad enum le faltan algunos valores\",\n mode_label: \"Modo\",\n date_time_mode: \"Fecha/Hora\",\n date_mode: \"Fecha\",\n automatic_value: \"Valor automático\",\n auto_on_create: \"Al crear\",\n auto_on_update: \"En cada actualización\",\n auto_none: \"Ninguno\",\n auto_value_description: \"Actualizar este campo automáticamente al crear o actualizar la entidad\",\n timezone_label: \"Zona horaria\",\n local_timezone: \"Zona horaria local\",\n timezone_description: \"Zona horaria para mostrar e ingresar fechas. Los valores se almacenan siempre en UTC.\",\n target_collection: \"Colección de destino\",\n views_group: \"Vistas\",\n add_property_to: \"Añadir propiedad a {{name}}\",\n add_first_property_to_group: \"Añade la primera propiedad a este grupo\",\n spread_children_as_columns: \"Distribuir hijos como columnas\",\n spread_children_description: \"Activa esta opción si deseas mostrar los hijos de este grupo como columnas individuales. Solo funciona para grupos de nivel superior.\",\n paste_behavior: \"Comportamiento al pegar\",\n strip_html_on_paste: \"Eliminar HTML al pegar\",\n strip_html_description: \"Eliminar etiquetas HTML y estilos en línea al pegar contenido de fuentes externas\",\n convert_pasted_to_markdown: \"Convertir texto pegado a markdown\",\n convert_pasted_description: \"Convertir texto enriquecido (de Google Docs, Word, etc.) a formato markdown limpio\",\n markdown_url_note: \"Al usar Markdown, las URLs de los archivos subidos siempre se guardan en el valor de texto (no la ruta).\",\n hide_from_collection: \"Ocultar de la colección\",\n hide_from_collection_tooltip: \"Ocultar este campo de la vista de colección. Seguirá visible en la vista de formulario\",\n read_only: \"Solo lectura\",\n read_only_tooltip: \"Es un campo de solo lectura. Mostrar solo como vista previa\",\n nullable: \"Nullable\",\n nullable_tooltip: \"Permitir que este campo se establezca explícitamente como null. Se mostrará un botón de borrar al usuario\",\n tab_general: \"General\",\n tab_display: \"Visualización\",\n tab_properties: \"Propiedades\",\n tab_extend: \"Extender\",\n unsaved_changes_in_collection: \"Hay cambios sin guardar en esta colección\",\n error_persisting_collection: \"Error al guardar la colección: {{error}}\",\n details_in_console: \"Detalles en la consola\",\n error_inferring_collection: \"Error al inferir la colección: {{error}}\",\n collection_deleted: \"Colección eliminada\",\n data_imported_successfully_msg: \"Datos importados correctamente\",\n must_specify_path: \"Debes especificar una ruta en la base de datos para esta colección\",\n collection_path_already_exists: \"Ya existe una colección con la ruta especificada. Si deseas tener múltiples colecciones con la misma ruta de base de datos, asegúrate de que tengan IDs diferentes\",\n collection_path_odd_segments: \"Las rutas de colección deben tener un número impar de segmentos: {{path}}\",\n collection_uses_path_as_id: \"Ya existe una colección que usa este valor como ruta\",\n collection_uses_this_id: \"Ya existe una colección que usa este ID\",\n delete_stored_config: \"¿Eliminar la configuración almacenada?\",\n delete_stored_config_body: \"Esto no eliminará ningún dato, solo la configuración almacenada, y se restaurará al estado del código.\",\n order_label: \"Orden\",\n\n // Collection Properties Editor\n select_property_to_edit: \"Selecciona una propiedad para editarla\",\n add_first_property: \"Ahora puedes añadir tu primera propiedad\",\n add_new_property: \"Añadir nueva propiedad\",\n no_permission_add_properties: \"No tienes permiso para añadir nuevas propiedades\",\n get_code_for_collection: \"Obtener el código de esta colección\",\n add_properties_from_data: \"Añadir nuevas propiedades basadas en datos\",\n collection_name_placeholder: \"Nombre de la colección\",\n created_by: \"Creado por {{name}}\",\n property_defined_as_builder: \"Esta propiedad está definida como un property builder en código\",\n\n // Extend Settings\n extend_title: \"Extender\",\n extend_description: \"Añade subcolecciones, vistas personalizadas y acciones de entidad a esta colección.\",\n collection_defined_in_code: \"Esta colección está definida en código. Los cambios realizados en este editor sobreescribirán las propiedades definidas en código. Puedes eliminar los valores sobreescritos para volver al estado definido en código.\",\n reset_to_code: \"Restablecer al código\",\n\n widget_group_text: \"Texto\",\n widget_group_boolean: \"Booleano\",\n widget_group_users: \"Usuarios\",\n widget_group_select: \"Selección\",\n widget_group_number: \"Número\",\n widget_group_file: \"Archivo\",\n widget_group_reference: \"Referencia\",\n widget_group_date: \"Fecha\",\n widget_group_group: \"Grupo\",\n widget_group_array: \"Lista\"\n};\n","export const collectionEditorTranslationsDe = {\n file_upload_config: \"Dateiupload-Konfiguration\",\n file_type_images: \"Bilder\",\n file_type_videos: \"Videos\",\n file_type_audio: \"Audiodateien\",\n file_type_applications: \"Dateien (pdf, zip, csv, excel...)\",\n file_type_text: \"Textdateien\",\n only: \"Nur\",\n all_file_types_allowed: \"Alle Dateitypen erlaubt\",\n allowed_file_types: \"Erlaubte Dateitypen\",\n file_name_label: \"Dateiname\",\n storage_path_label: \"Speicherpfad\",\n storage_placeholders_description: \"Sie können die folgenden Platzhalter in den Werten für Dateiname und Speicherpfad verwenden:\",\n storage_placeholder_file: \"{file} - Vollständiger Name der hochgeladenen Datei\",\n storage_placeholder_file_name: \"{file.name} - Name der hochgeladenen Datei ohne Erweiterung\",\n storage_placeholder_file_ext: \"{file.ext} - Erweiterung der hochgeladenen Datei\",\n storage_placeholder_entity_id: \"{entityId} - ID der Entität\",\n storage_placeholder_property_key: \"{propertyKey} - ID dieses Feldes\",\n storage_placeholder_path: \"{path} - Pfad dieser Entität\",\n storage_placeholder_rand: \"{rand} - Zufallswert zur Vermeidung von Namenskollisionen\",\n include_bucket_url: \"Bucket-URL (gs://...) im gespeicherten Wert einschließen\",\n include_bucket_url_description: \"Aktivieren Sie diese Einstellung, wenn Sie eine vollqualifizierte Speicher-URL (z. B. gs://mein-bucket/pfad/zur/datei) statt nur des Speicherpfads speichern möchten. Diese Einstellung kann nur bei der Erstellung geändert werden.\",\n save_url_instead_of_path: \"URL statt Speicherpfad speichern\",\n save_url_description: \"Aktivieren Sie diese Einstellung, wenn Sie bevorzugen, die Download-URL der hochgeladenen Datei statt des Speicherpfads zu speichern. Diese Einstellung kann nur bei der Erstellung geändert werden.\",\n max_size_bytes: \"Maximale Größe (in Bytes)\",\n image_resize_configuration: \"Bildgrößenanpassungs-Konfiguration\",\n image_resize_description: \"Bilder vor dem Hochladen automatisch anpassen und optimieren (nur JPEG, PNG, WebP)\",\n max_width_px: \"Maximale Breite (px)\",\n max_height_px: \"Maximale Höhe (px)\",\n resize_mode: \"Anpassungsmodus\",\n resize_contain: \"Einpassen\",\n resize_contain_description: \"Einpassen (innerhalb der Grenzen)\",\n resize_cover: \"Abdecken\",\n resize_cover_description: \"Abdecken (Grenzen füllen, kann zuschneiden)\",\n output_format: \"Ausgabeformat\",\n format_original: \"Original\",\n format_original_description: \"Original (gleiches Format beibehalten)\",\n format_webp_description: \"WebP (beste Komprimierung)\",\n quality_label: \"Qualität (0–100)\",\n quality_hint: \"Höhere Qualität = größere Datei. Empfohlen: 80–90 für Fotos, 90–100 für Grafiken\",\n preview_type: \"Vorschautyp\",\n preview_image: \"Bild\",\n preview_video: \"Video\",\n preview_audio: \"Audio\",\n display_url: \"URL anzeigen\",\n default_value_not_set: \"Standardwert nicht gesetzt\",\n default_value_is: \"Standardwert ist {{value}}\",\n default_value_was_cleared: \"Standardwert wurde gelöscht\",\n enum_missing_values: \"Dieser Enum-Eigenschaft fehlen einige Werte\",\n mode_label: \"Modus\",\n date_time_mode: \"Datum/Uhrzeit\",\n date_mode: \"Datum\",\n automatic_value: \"Automatischer Wert\",\n auto_on_create: \"Bei Erstellung\",\n auto_on_update: \"Bei jeder Aktualisierung\",\n auto_none: \"Keiner\",\n auto_value_description: \"Dieses Feld automatisch beim Erstellen oder Aktualisieren der Entität aktualisieren\",\n timezone_label: \"Zeitzone\",\n local_timezone: \"Lokale Zeitzone\",\n timezone_description: \"Zeitzone für die Anzeige und Eingabe von Daten. Werte werden immer in UTC gespeichert.\",\n target_collection: \"Zielsammlung\",\n views_group: \"Ansichten\",\n add_property_to: \"Eigenschaft zu {{name}} hinzufügen\",\n add_first_property_to_group: \"Erste Eigenschaft zu dieser Gruppe hinzufügen\",\n spread_children_as_columns: \"Kinder als Spalten verteilen\",\n spread_children_description: \"Setzen Sie dieses Flag auf true, wenn Sie die Kinder dieser Gruppe als einzelne Spalten anzeigen möchten. Dies funktioniert nur für Gruppen auf der obersten Ebene.\",\n paste_behavior: \"Einfügeverhalten\",\n strip_html_on_paste: \"HTML beim Einfügen entfernen\",\n strip_html_description: \"HTML-Tags und Inline-Stile beim Einfügen von Inhalten aus externen Quellen entfernen\",\n convert_pasted_to_markdown: \"Eingefügten Text in Markdown konvertieren\",\n convert_pasted_description: \"Rich Text (von Google Docs, Word usw.) in sauberes Markdown-Format konvertieren\",\n markdown_url_note: \"Bei Verwendung von Markdown werden die URLs der hochgeladenen Dateien immer im Textwert gespeichert (nicht der Pfad).\",\n hide_from_collection: \"Aus Sammlung ausblenden\",\n hide_from_collection_tooltip: \"Dieses Feld aus der Sammlungsansicht ausblenden. Es wird weiterhin in der Formularansicht sichtbar sein\",\n read_only: \"Nur lesen\",\n read_only_tooltip: \"Ist dieses Feld schreibgeschützt. Nur als Vorschau anzeigen\",\n nullable: \"Nullable\",\n nullable_tooltip: \"Erlaubt es, dieses Feld explizit auf null zu setzen. Dem Benutzer wird eine Löschen-Schaltfläche angezeigt\",\n tab_general: \"Allgemein\",\n tab_display: \"Anzeige\",\n tab_properties: \"Eigenschaften\",\n tab_extend: \"Erweitern\",\n unsaved_changes_in_collection: \"Es gibt ungespeicherte Änderungen in dieser Sammlung\",\n error_persisting_collection: \"Fehler beim Speichern der Sammlung: {{error}}\",\n details_in_console: \"Details in der Konsole\",\n error_inferring_collection: \"Fehler beim Ableiten der Sammlung: {{error}}\",\n collection_deleted: \"Sammlung gelöscht\",\n data_imported_successfully_msg: \"Daten erfolgreich importiert\",\n must_specify_path: \"Sie müssen einen Pfad in der Datenbank für diese Sammlung angeben\",\n collection_path_already_exists: \"Es gibt bereits eine Sammlung mit dem angegebenen Pfad. Wenn Sie mehrere Sammlungen mit demselben Datenbankpfad haben möchten, stellen Sie sicher, dass sie unterschiedliche IDs haben\",\n collection_path_odd_segments: \"Sammlungspfade müssen eine ungerade Anzahl von Segmenten haben: {{path}}\",\n collection_uses_path_as_id: \"Es gibt bereits eine Sammlung, die diesen Wert als Pfad verwendet\",\n collection_uses_this_id: \"Es gibt bereits eine Sammlung, die diese ID verwendet\",\n delete_stored_config: \"Gespeicherte Konfiguration löschen?\",\n delete_stored_config_body: \"Dadurch werden keine Daten gelöscht, nur die gespeicherte Konfiguration, und der Code-Zustand wird wiederhergestellt.\",\n order_label: \"Reihenfolge\",\n\n // Collection Properties Editor\n select_property_to_edit: \"Wähle eine Eigenschaft aus, um sie zu bearbeiten\",\n add_first_property: \"Jetzt kannst du deine erste Eigenschaft hinzufügen\",\n add_new_property: \"Neue Eigenschaft hinzufügen\",\n no_permission_add_properties: \"Du hast keine Berechtigung, neue Eigenschaften hinzuzufügen\",\n get_code_for_collection: \"Code für diese Sammlung abrufen\",\n add_properties_from_data: \"Neue Eigenschaften basierend auf Daten hinzufügen\",\n collection_name_placeholder: \"Sammlungsname\",\n created_by: \"Erstellt von {{name}}\",\n property_defined_as_builder: \"Diese Eigenschaft ist als Property Builder im Code definiert\",\n\n // Extend Settings\n extend_title: \"Erweitern\",\n extend_description: \"Füge Untersammlungen, benutzerdefinierte Ansichten und Entitätsaktionen zu dieser Sammlung hinzu.\",\n collection_defined_in_code: \"Diese Sammlung ist im Code definiert. Die in diesem Editor vorgenommenen Änderungen überschreiben die im Code definierten Eigenschaften. Du kannst die überschriebenen Werte löschen, um zum im Code definierten Zustand zurückzukehren.\",\n reset_to_code: \"Auf Code zurücksetzen\",\n\n widget_group_text: \"Text\",\n widget_group_boolean: \"Boolean\",\n widget_group_users: \"Benutzer\",\n widget_group_select: \"Auswahl\",\n widget_group_number: \"Zahl\",\n widget_group_file: \"Datei\",\n widget_group_reference: \"Referenz\",\n widget_group_date: \"Datum\",\n widget_group_group: \"Gruppe\",\n widget_group_array: \"Array\"\n};\n","export const collectionEditorTranslationsFr = {\n file_upload_config: \"Configuration du téléchargement de fichiers\",\n file_type_images: \"Images\",\n file_type_videos: \"Vidéos\",\n file_type_audio: \"Fichiers audio\",\n file_type_applications: \"Fichiers (pdf, zip, csv, excel...)\",\n file_type_text: \"Fichiers texte\",\n only: \"Uniquement\",\n all_file_types_allowed: \"Tous les types de fichiers autorisés\",\n allowed_file_types: \"Types de fichiers autorisés\",\n file_name_label: \"Nom du fichier\",\n storage_path_label: \"Chemin de stockage\",\n storage_placeholders_description: \"Vous pouvez utiliser les espaces réservés suivants dans les valeurs du nom de fichier et du chemin de stockage :\",\n storage_placeholder_file: \"{file} - Nom complet du fichier téléchargé\",\n storage_placeholder_file_name: \"{file.name} - Nom du fichier téléchargé sans extension\",\n storage_placeholder_file_ext: \"{file.ext} - Extension du fichier téléchargé\",\n storage_placeholder_entity_id: \"{entityId} - ID de l'entité\",\n storage_placeholder_property_key: \"{propertyKey} - ID de ce champ\",\n storage_placeholder_path: \"{path} - Chemin de cette entité\",\n storage_placeholder_rand: \"{rand} - Valeur aléatoire pour éviter les conflits de noms\",\n include_bucket_url: \"Inclure l'URL du bucket (gs://...) dans la valeur enregistrée\",\n include_bucket_url_description: \"Activez ce paramètre si vous souhaitez enregistrer une URL de stockage complète (ex. gs://mon-bucket/chemin/vers/fichier) au lieu du simple chemin de stockage. Vous ne pouvez modifier ce paramètre qu'à la création.\",\n save_url_instead_of_path: \"Enregistrer l'URL au lieu du chemin de stockage\",\n save_url_description: \"Activez ce paramètre si vous préférez enregistrer l'URL de téléchargement du fichier plutôt que le chemin de stockage. Vous ne pouvez modifier ce paramètre qu'à la création.\",\n max_size_bytes: \"Taille maximale (en octets)\",\n image_resize_configuration: \"Configuration du redimensionnement d'image\",\n image_resize_description: \"Redimensionner et optimiser automatiquement les images avant le téléchargement (JPEG, PNG, WebP uniquement)\",\n max_width_px: \"Largeur max (px)\",\n max_height_px: \"Hauteur max (px)\",\n resize_mode: \"Mode de redimensionnement\",\n resize_contain: \"Contenir\",\n resize_contain_description: \"Contenir (ajuster aux limites)\",\n resize_cover: \"Couvrir\",\n resize_cover_description: \"Couvrir (remplir les limites, peut rogner)\",\n output_format: \"Format de sortie\",\n format_original: \"Original\",\n format_original_description: \"Original (conserver le même format)\",\n format_webp_description: \"WebP (meilleure compression)\",\n quality_label: \"Qualité (0–100)\",\n quality_hint: \"Qualité plus élevée = fichier plus volumineux. Recommandé : 80–90 pour les photos, 90–100 pour les graphiques\",\n preview_type: \"Type d'aperçu\",\n preview_image: \"Image\",\n preview_video: \"Vidéo\",\n preview_audio: \"Audio\",\n display_url: \"Afficher l'URL\",\n default_value_not_set: \"Valeur par défaut non définie\",\n default_value_is: \"La valeur par défaut est {{value}}\",\n default_value_was_cleared: \"La valeur par défaut a été supprimée\",\n enum_missing_values: \"Cette propriété enum est incomplète\",\n mode_label: \"Mode\",\n date_time_mode: \"Date/Heure\",\n date_mode: \"Date\",\n automatic_value: \"Valeur automatique\",\n auto_on_create: \"À la création\",\n auto_on_update: \"À chaque mise à jour\",\n auto_none: \"Aucune\",\n auto_value_description: \"Mettre à jour ce champ automatiquement lors de la création ou de la mise à jour de l'entité\",\n timezone_label: \"Fuseau horaire\",\n local_timezone: \"Fuseau horaire local\",\n timezone_description: \"Fuseau horaire pour l'affichage et la saisie des dates. Les valeurs sont toujours stockées en UTC.\",\n target_collection: \"Collection cible\",\n views_group: \"Vues\",\n add_property_to: \"Ajouter une propriété à {{name}}\",\n add_first_property_to_group: \"Ajoutez la première propriété à ce groupe\",\n spread_children_as_columns: \"Étendre les enfants en colonnes\",\n spread_children_description: \"Activez cette option si vous souhaitez afficher les enfants de ce groupe en colonnes individuelles. Cela ne fonctionne que pour les groupes de premier niveau.\",\n paste_behavior: \"Comportement du collage\",\n strip_html_on_paste: \"Supprimer le HTML au collage\",\n strip_html_description: \"Supprimer les balises HTML et les styles en ligne lors du collage de contenu provenant de sources externes\",\n convert_pasted_to_markdown: \"Convertir le texte collé en markdown\",\n convert_pasted_description: \"Convertir le texte enrichi (de Google Docs, Word, etc.) en format markdown propre\",\n markdown_url_note: \"Avec Markdown, les URL des fichiers téléchargés sont toujours enregistrées dans la valeur texte (pas le chemin).\",\n hide_from_collection: \"Masquer de la collection\",\n hide_from_collection_tooltip: \"Masquer ce champ de la vue collection. Il restera visible dans la vue formulaire\",\n read_only: \"Lecture seule\",\n read_only_tooltip: \"Ce champ est en lecture seule. Affichage en aperçu uniquement\",\n nullable: \"Nullable\",\n nullable_tooltip: \"Permettre de définir explicitement ce champ comme null. Un bouton d'effacement sera affiché à l'utilisateur\",\n tab_general: \"Général\",\n tab_display: \"Affichage\",\n tab_properties: \"Propriétés\",\n tab_extend: \"Extension\",\n unsaved_changes_in_collection: \"Il y a des modifications non enregistrées dans cette collection\",\n error_persisting_collection: \"Erreur lors de la sauvegarde de la collection : {{error}}\",\n details_in_console: \"Détails dans la console\",\n error_inferring_collection: \"Erreur lors de l'inférence de la collection : {{error}}\",\n collection_deleted: \"Collection supprimée\",\n data_imported_successfully_msg: \"Données importées avec succès\",\n must_specify_path: \"Vous devez spécifier un chemin dans la base de données pour cette collection\",\n collection_path_already_exists: \"Il existe déjà une collection avec le chemin spécifié. Si vous souhaitez avoir plusieurs collections avec le même chemin, assurez-vous qu'elles ont des ID différents\",\n collection_path_odd_segments: \"Les chemins de collection doivent avoir un nombre impair de segments : {{path}}\",\n collection_uses_path_as_id: \"Il existe déjà une collection qui utilise cette valeur comme chemin\",\n collection_uses_this_id: \"Il existe déjà une collection qui utilise cet ID\",\n delete_stored_config: \"Supprimer la configuration enregistrée ?\",\n delete_stored_config_body: \"Cela ne supprimera aucune donnée, uniquement la configuration enregistrée, et restaurera l'état du code.\",\n order_label: \"Ordre\",\n\n // Collection Properties Editor\n select_property_to_edit: \"Sélectionnez une propriété pour la modifier\",\n add_first_property: \"Vous pouvez maintenant ajouter votre première propriété\",\n add_new_property: \"Ajouter une nouvelle propriété\",\n no_permission_add_properties: \"Vous n'avez pas la permission d'ajouter de nouvelles propriétés\",\n get_code_for_collection: \"Obtenir le code de cette collection\",\n add_properties_from_data: \"Ajouter de nouvelles propriétés basées sur les données\",\n collection_name_placeholder: \"Nom de la collection\",\n created_by: \"Créé par {{name}}\",\n property_defined_as_builder: \"Cette propriété est définie comme un property builder dans le code\",\n\n // Extend Settings\n extend_title: \"Extension\",\n extend_description: \"Ajoutez des sous-collections, des vues personnalisées et des actions d’entité à cette collection.\",\n collection_defined_in_code: \"Cette collection est définie dans le code. Les modifications effectuées dans cet éditeur remplaceront les propriétés définies dans le code. Vous pouvez supprimer les valeurs remplacées pour revenir à l'état défini dans le code.\",\n reset_to_code: \"Réinitialiser au code\",\n\n widget_group_text: \"Texte\",\n widget_group_boolean: \"Booléen\",\n widget_group_users: \"Utilisateurs\",\n widget_group_select: \"Sélection\",\n widget_group_number: \"Nombre\",\n widget_group_file: \"Fichier\",\n widget_group_reference: \"Référence\",\n widget_group_date: \"Date\",\n widget_group_group: \"Groupe\",\n widget_group_array: \"Liste\"\n};\n","export const collectionEditorTranslationsIt = {\n file_upload_config: \"Configurazione caricamento file\",\n file_type_images: \"Immagini\",\n file_type_videos: \"Video\",\n file_type_audio: \"File audio\",\n file_type_applications: \"File (pdf, zip, csv, excel...)\",\n file_type_text: \"File di testo\",\n only: \"Solo\",\n all_file_types_allowed: \"Tutti i tipi di file consentiti\",\n allowed_file_types: \"Tipi di file consentiti\",\n file_name_label: \"Nome del file\",\n storage_path_label: \"Percorso di archiviazione\",\n storage_placeholders_description: \"Puoi utilizzare i seguenti segnaposto nei valori del nome file e del percorso di archiviazione:\",\n storage_placeholder_file: \"{file} - Nome completo del file caricato\",\n storage_placeholder_file_name: \"{file.name} - Nome del file caricato senza estensione\",\n storage_placeholder_file_ext: \"{file.ext} - Estensione del file caricato\",\n storage_placeholder_entity_id: \"{entityId} - ID dell'entità\",\n storage_placeholder_property_key: \"{propertyKey} - ID di questo campo\",\n storage_placeholder_path: \"{path} - Percorso di questa entità\",\n storage_placeholder_rand: \"{rand} - Valore casuale per evitare conflitti di nomi\",\n include_bucket_url: \"Includi URL del bucket (gs://...) nel valore salvato\",\n include_bucket_url_description: \"Attiva questa impostazione se desideri salvare un URL di archiviazione completo (es. gs://mio-bucket/percorso/al/file) invece del solo percorso di archiviazione. Puoi modificare questa impostazione solo alla creazione.\",\n save_url_instead_of_path: \"Salva URL invece del percorso di archiviazione\",\n save_url_description: \"Attiva questa impostazione se preferisci salvare l'URL di download del file caricato invece del percorso di archiviazione. Puoi modificare questa impostazione solo alla creazione.\",\n max_size_bytes: \"Dimensione massima (in byte)\",\n image_resize_configuration: \"Configurazione ridimensionamento immagine\",\n image_resize_description: \"Ridimensiona e ottimizza automaticamente le immagini prima del caricamento (solo JPEG, PNG, WebP)\",\n max_width_px: \"Larghezza max (px)\",\n max_height_px: \"Altezza max (px)\",\n resize_mode: \"Modalità ridimensionamento\",\n resize_contain: \"Contenere\",\n resize_contain_description: \"Contenere (adatta ai limiti)\",\n resize_cover: \"Coprire\",\n resize_cover_description: \"Coprire (riempi i limiti, può ritagliare)\",\n output_format: \"Formato di output\",\n format_original: \"Originale\",\n format_original_description: \"Originale (mantieni lo stesso formato)\",\n format_webp_description: \"WebP (migliore compressione)\",\n quality_label: \"Qualità (0–100)\",\n quality_hint: \"Qualità superiore = file più grande. Consigliato: 80–90 per foto, 90–100 per grafica\",\n preview_type: \"Tipo anteprima\",\n preview_image: \"Immagine\",\n preview_video: \"Video\",\n preview_audio: \"Audio\",\n display_url: \"Mostra URL\",\n default_value_not_set: \"Valore predefinito non impostato\",\n default_value_is: \"Il valore predefinito è {{value}}\",\n default_value_was_cleared: \"Il valore predefinito è stato rimosso\",\n enum_missing_values: \"Questa proprietà enum è incompleta\",\n mode_label: \"Modalità\",\n date_time_mode: \"Data/Ora\",\n date_mode: \"Data\",\n automatic_value: \"Valore automatico\",\n auto_on_create: \"Alla creazione\",\n auto_on_update: \"Ad ogni aggiornamento\",\n auto_none: \"Nessuno\",\n auto_value_description: \"Aggiorna questo campo automaticamente alla creazione o aggiornamento dell'entità\",\n timezone_label: \"Fuso orario\",\n local_timezone: \"Fuso orario locale\",\n timezone_description: \"Fuso orario per la visualizzazione e l'inserimento delle date. I valori sono sempre memorizzati in UTC.\",\n target_collection: \"Collezione di destinazione\",\n views_group: \"Viste\",\n add_property_to: \"Aggiungi proprietà a {{name}}\",\n add_first_property_to_group: \"Aggiungi la prima proprietà a questo gruppo\",\n spread_children_as_columns: \"Espandi figli come colonne\",\n spread_children_description: \"Attiva questa opzione se desideri visualizzare i figli di questo gruppo come colonne individuali. Funziona solo per i gruppi di primo livello.\",\n paste_behavior: \"Comportamento incolla\",\n strip_html_on_paste: \"Rimuovi HTML all'incolla\",\n strip_html_description: \"Rimuovi tag HTML e stili inline quando incolli contenuti da fonti esterne\",\n convert_pasted_to_markdown: \"Converti testo incollato in markdown\",\n convert_pasted_description: \"Converti testo formattato (da Google Docs, Word, ecc.) in formato markdown pulito\",\n markdown_url_note: \"Quando si utilizza Markdown, gli URL dei file caricati vengono sempre salvati nel valore testo (non il percorso).\",\n hide_from_collection: \"Nascondi dalla collezione\",\n hide_from_collection_tooltip: \"Nascondi questo campo dalla vista collezione. Sarà comunque visibile nella vista modulo\",\n read_only: \"Sola lettura\",\n read_only_tooltip: \"Questo è un campo di sola lettura. Visualizza solo come anteprima\",\n nullable: \"Nullable\",\n nullable_tooltip: \"Consenti di impostare esplicitamente questo campo su null. All'utente verrà mostrato un pulsante di cancellazione\",\n tab_general: \"Generale\",\n tab_display: \"Visualizzazione\",\n tab_properties: \"Proprietà\",\n tab_extend: \"Estendi\",\n unsaved_changes_in_collection: \"Ci sono modifiche non salvate in questa collezione\",\n error_persisting_collection: \"Errore nel salvataggio della collezione: {{error}}\",\n details_in_console: \"Dettagli nella console\",\n error_inferring_collection: \"Errore nell'inferenza della collezione: {{error}}\",\n collection_deleted: \"Collezione eliminata\",\n data_imported_successfully_msg: \"Dati importati con successo\",\n must_specify_path: \"Devi specificare un percorso nel database per questa collezione\",\n collection_path_already_exists: \"Esiste già una collezione con il percorso specificato. Se desideri avere più collezioni con lo stesso percorso, assicurati che abbiano ID diversi\",\n collection_path_odd_segments: \"I percorsi delle collezioni devono avere un numero dispari di segmenti: {{path}}\",\n collection_uses_path_as_id: \"Esiste già una collezione che utilizza questo valore come percorso\",\n collection_uses_this_id: \"Esiste già una collezione che utilizza questo ID\",\n delete_stored_config: \"Eliminare la configurazione salvata?\",\n delete_stored_config_body: \"Questo non eliminerà alcun dato, solo la configurazione salvata, e ripristinerà lo stato del codice.\",\n order_label: \"Ordine\",\n\n // Collection Properties Editor\n select_property_to_edit: \"Seleziona una proprietà per modificarla\",\n add_first_property: \"Ora puoi aggiungere la tua prima proprietà\",\n add_new_property: \"Aggiungi nuova proprietà\",\n no_permission_add_properties: \"Non hai i permessi per aggiungere nuove proprietà\",\n get_code_for_collection: \"Ottieni il codice di questa collezione\",\n add_properties_from_data: \"Aggiungi nuove proprietà basate sui dati\",\n collection_name_placeholder: \"Nome della collezione\",\n created_by: \"Creato da {{name}}\",\n property_defined_as_builder: \"Questa proprietà è definita come property builder nel codice\",\n\n // Extend Settings\n extend_title: \"Estendi\",\n extend_description: \"Aggiungi sotto-collezioni, viste personalizzate e azioni entità a questa collezione.\",\n collection_defined_in_code: \"Questa collezione è definita nel codice. Le modifiche effettuate in questo editor sovrascriveranno le proprietà definite nel codice. Puoi eliminare i valori sovrascritti per tornare allo stato definito nel codice.\",\n reset_to_code: \"Ripristina al codice\",\n\n widget_group_text: \"Testo\",\n widget_group_boolean: \"Booleano\",\n widget_group_users: \"Utenti\",\n widget_group_select: \"Selezione\",\n widget_group_number: \"Numero\",\n widget_group_file: \"File\",\n widget_group_reference: \"Riferimento\",\n widget_group_date: \"Data\",\n widget_group_group: \"Gruppo\",\n widget_group_array: \"Lista\"\n};\n","export const collectionEditorTranslationsHi = {\n file_upload_config: \"फ़ाइल अपलोड कॉन्फ़िगरेशन\",\n file_type_images: \"चित्र\",\n file_type_videos: \"वीडियो\",\n file_type_audio: \"ऑडियो फ़ाइलें\",\n file_type_applications: \"फ़ाइलें (pdf, zip, csv, excel...)\",\n file_type_text: \"टेक्स्ट फ़ाइलें\",\n only: \"केवल\",\n all_file_types_allowed: \"सभी फ़ाइल प्रकार अनुमत\",\n allowed_file_types: \"अनुमत फ़ाइल प्रकार\",\n file_name_label: \"फ़ाइल का नाम\",\n storage_path_label: \"स्टोरेज पथ\",\n storage_placeholders_description: \"आप फ़ाइल नाम और स्टोरेज पथ मानों में निम्नलिखित प्लेसहोल्डर्स का उपयोग कर सकते हैं:\",\n storage_placeholder_file: \"{file} - अपलोड की गई फ़ाइल का पूरा नाम\",\n storage_placeholder_file_name: \"{file.name} - एक्सटेंशन के बिना अपलोड की गई फ़ाइल का नाम\",\n storage_placeholder_file_ext: \"{file.ext} - अपलोड की गई फ़ाइल का एक्सटेंशन\",\n storage_placeholder_entity_id: \"{entityId} - इकाई की ID\",\n storage_placeholder_property_key: \"{propertyKey} - इस फ़ील्ड की ID\",\n storage_placeholder_path: \"{path} - इस इकाई का पथ\",\n storage_placeholder_rand: \"{rand} - नाम टकराव से बचने के लिए यादृच्छिक मूल्य\",\n include_bucket_url: \"सहेजे गए मान में बकेट URL (gs://...) शामिल करें\",\n include_bucket_url_description: \"यदि आप केवल स्टोरेज पथ के बजाय पूरी तरह से योग्य स्टोरेज URL (जैसे gs://my-bucket/path/to/file) सहेजना चाहते हैं तो इस सेटिंग को चालू करें। आप इसे केवल निर्माण के समय बदल सकते हैं।\",\n save_url_instead_of_path: \"स्टोरेज पथ के बजाय URL सहेजें\",\n save_url_description: \"यदि आप स्टोरेज पथ के बजाय अपलोड की गई फ़ाइल का डाउनलोड URL सहेजना पसंद करते हैं तो इस सेटिंग को चालू करें। आप इसे केवल निर्माण के समय बदल सकते हैं।\",\n max_size_bytes: \"अधिकतम आकार (बाइट में)\",\n image_resize_configuration: \"छवि आकार बदलने का कॉन्फ़िगरेशन\",\n image_resize_description: \"अपलोड से पहले स्वचालित रूप से छवियों का आकार बदलें और अनुकूलित करें (केवल JPEG, PNG, WebP)\",\n max_width_px: \"अधिकतम चौड़ाई (px)\",\n max_height_px: \"अधिकतम ऊंचाई (px)\",\n resize_mode: \"आकार बदलने का मोड\",\n resize_contain: \"समाहित करें\",\n resize_contain_description: \"समाहित करें (सीमाओं के भीतर फ़िट करें)\",\n resize_cover: \"कवर\",\n resize_cover_description: \"कवर (सीमाएँ भरें, काट सकता है)\",\n output_format: \"आउटपुट प्रारूप\",\n format_original: \"मूल\",\n format_original_description: \"मूल (समान प्रारूप रखें)\",\n format_webp_description: \"WebP (सर्वोत्तम संपीड़न)\",\n quality_label: \"गुणवत्ता (0–100)\",\n quality_hint: \"उच्च गुणवत्ता = बड़ा फ़ाइल आकार। अनुशंसित: फ़ोटो के लिए 80–90, ग्राफ़िक्स के लिए 90–100\",\n preview_type: \"पूर्वावलोकन प्रकार\",\n preview_image: \"छवि\",\n preview_video: \"वीडियो\",\n preview_audio: \"ऑडियो\",\n display_url: \"URL दिखाएँ\",\n default_value_not_set: \"डिफ़ॉल्ट मान सेट नहीं है\",\n default_value_is: \"डिफ़ॉल्ट मान {{value}} है\",\n default_value_was_cleared: \"डिफ़ॉल्ट मान हटा दिया गया\",\n enum_missing_values: \"इस enum प्रॉपर्टी में कुछ मान अनुपस्थित हैं\",\n mode_label: \"मोड\",\n date_time_mode: \"दिनांक/समय\",\n date_mode: \"दिनांक\",\n automatic_value: \"स्वचालित मान\",\n auto_on_create: \"निर्माण पर\",\n auto_on_update: \"किसी भी अपडेट पर\",\n auto_none: \"कोई नहीं\",\n auto_value_description: \"इकाई बनाते या अपडेट करते समय इस फ़ील्ड को स्वचालित रूप से अपडेट करें\",\n timezone_label: \"समय क्षेत्र\",\n local_timezone: \"स्थानीय समय क्षेत्र\",\n timezone_description: \"तारीखों को प्रदर्शित और इनपुट करने के लिए समय क्षेत्र। मान हमेशा UTC में संग्रहीत होते हैं।\",\n target_collection: \"लक्ष्य संग्रह\",\n views_group: \"दृश्य\",\n add_property_to: \"{{name}} में प्रॉपर्टी जोड़ें\",\n add_first_property_to_group: \"इस समूह में पहली प्रॉपर्टी जोड़ें\",\n spread_children_as_columns: \"बच्चों को कॉलम के रूप में फैलाएँ\",\n spread_children_description: \"यदि आप इस समूह के बच्चों को व्यक्तिगत कॉलम के रूप में प्रदर्शित करना चाहते हैं तो इसे चालू करें। यह केवल शीर्ष स्तर के समूहों के लिए काम करता है।\",\n paste_behavior: \"पेस्ट व्यवहार\",\n strip_html_on_paste: \"पेस्ट करते समय HTML हटाएँ\",\n strip_html_description: \"बाहरी स्रोतों से सामग्री पेस्ट करते समय HTML टैग और इनलाइन स्टाइल हटाएँ\",\n convert_pasted_to_markdown: \"पेस्ट किए गए टेक्स्ट को markdown में बदलें\",\n convert_pasted_description: \"रिच टेक्स्ट (Google Docs, Word, आदि से) को साफ़ markdown प्रारूप में बदलें\",\n markdown_url_note: \"Markdown का उपयोग करते समय, अपलोड की गई फ़ाइलों का URL हमेशा टेक्स्ट मान में सहेजा जाता है (पथ नहीं)।\",\n hide_from_collection: \"संग्रह से छिपाएँ\",\n hide_from_collection_tooltip: \"इस फ़ील्ड को संग्रह दृश्य से छिपाएँ। यह फ़ॉर्म दृश्य में अभी भी दिखाई देगा\",\n read_only: \"केवल पढ़ने के लिए\",\n read_only_tooltip: \"क्या यह फ़ील्ड केवल पढ़ने के लिए है। केवल पूर्वावलोकन के रूप में प्रदर्शित करें\",\n nullable: \"Nullable\",\n nullable_tooltip: \"इस फ़ील्ड को स्पष्ट रूप से null पर सेट करने की अनुमति दें। उपयोगकर्ता को एक क्लियर बटन दिखाया जाएगा\",\n tab_general: \"सामान्य\",\n tab_display: \"प्रदर्शन\",\n tab_properties: \"प्रॉपर्टीज़\",\n tab_extend: \"विस्तार\",\n unsaved_changes_in_collection: \"इस संग्रह में असहेजे परिवर्तन हैं\",\n error_persisting_collection: \"संग्रह सहेजने में त्रुटि: {{error}}\",\n details_in_console: \"कंसोल में विवरण\",\n error_inferring_collection: \"संग्रह अनुमान में त्रुटि: {{error}}\",\n collection_deleted: \"संग्रह हटाया गया\",\n data_imported_successfully_msg: \"डेटा सफलतापूर्वक आयातित\",\n must_specify_path: \"आपको इस संग्रह के लिए डेटाबेस में एक पथ निर्दिष्ट करना होगा\",\n collection_path_already_exists: \"निर्दिष्ट पथ के साथ पहले से ही एक संग्रह है। यदि आप एक ही डेटाबेस पथ के साथ कई संग्रह चाहते हैं, तो सुनिश्चित करें कि उनकी अलग-अलग ID हों\",\n collection_path_odd_segments: \"संग्रह पथों में विषम संख्या में खंड होने चाहिए: {{path}}\",\n collection_uses_path_as_id: \"पहले से ही एक संग्रह है जो इस मान को पथ के रूप में उपयोग करता है\",\n collection_uses_this_id: \"पहले से ही एक संग्रह है जो इस ID का उपयोग करता है\",\n delete_stored_config: \"सहेजा गया कॉन्फ़िगरेशन हटाएँ?\",\n delete_stored_config_body: \"यह कोई डेटा नहीं हटाएगा, केवल सहेजा गया कॉन्फ़िगरेशन, और कोड स्थिति में रीसेट करेगा।\",\n order_label: \"क्रम\",\n\n // Collection Properties Editor\n select_property_to_edit: \"संपादित करने के लिए एक प्रॉपर्टी चुनें\",\n add_first_property: \"अब आप अपनी पहली प्रॉपर्टी जोड़ सकते हैं\",\n add_new_property: \"नई प्रॉपर्टी जोड़ें\",\n no_permission_add_properties: \"आपको नई प्रॉपर्टीज़ जोड़ने की अनुमति नहीं है\",\n get_code_for_collection: \"इस संग्रह का कोड प्राप्त करें\",\n add_properties_from_data: \"डेटा के आधार पर नई प्रॉपर्टीज़ जोड़ें\",\n collection_name_placeholder: \"संग्रह का नाम\",\n created_by: \"{{name}} द्वारा बनाया गया\",\n property_defined_as_builder: \"यह प्रॉपर्टी कोड में property builder के रूप में परिभाषित है\",\n\n // Extend Settings\n extend_title: \"विस्तार\",\n extend_description: \"इस संग्रह में उप-संग्रह, कस्टम दृश्य और इकाई क्रियाएँ जोड़ें।\",\n collection_defined_in_code: \"यह संग्रह कोड में परिभाषित है। इस संपादक में किए गए परिवर्तन कोड में परिभाषित प्रॉपर्टीज़ को ओवरराइड करेंगे। आप ओवरराइड किए गए मानों को हटाकर कोड में परिभाषित स्थिति पर वापस जा सकते हैं।\",\n reset_to_code: \"कोड पर रीसेट करें\",\n\n widget_group_text: \"टेक्स्ट\",\n widget_group_boolean: \"बूलियन\",\n widget_group_users: \"उपयोगकर्ता\",\n widget_group_select: \"चयन\",\n widget_group_number: \"संख्या\",\n widget_group_file: \"फ़ाइल\",\n widget_group_reference: \"संदर्भ\",\n widget_group_date: \"दिनांक\",\n widget_group_group: \"समूह\",\n widget_group_array: \"सूची\"\n};\n","export const collectionEditorTranslationsPt = {\n file_upload_config: \"Configuração de upload de arquivo\",\n file_type_images: \"Imagens\",\n file_type_videos: \"Vídeos\",\n file_type_audio: \"Arquivos de áudio\",\n file_type_applications: \"Arquivos (pdf, zip, csv, excel...)\",\n file_type_text: \"Arquivos de texto\",\n only: \"Apenas\",\n all_file_types_allowed: \"Todos os tipos de arquivo permitidos\",\n allowed_file_types: \"Tipos de arquivo permitidos\",\n file_name_label: \"Nome do arquivo\",\n storage_path_label: \"Caminho de armazenamento\",\n storage_placeholders_description: \"Você pode usar os seguintes marcadores nos valores do nome do arquivo e do caminho de armazenamento:\",\n storage_placeholder_file: \"{file} - Nome completo do arquivo enviado\",\n storage_placeholder_file_name: \"{file.name} - Nome do arquivo enviado sem extensão\",\n storage_placeholder_file_ext: \"{file.ext} - Extensão do arquivo enviado\",\n storage_placeholder_entity_id: \"{entityId} - ID da entidade\",\n storage_placeholder_property_key: \"{propertyKey} - ID deste campo\",\n storage_placeholder_path: \"{path} - Caminho desta entidade\",\n storage_placeholder_rand: \"{rand} - Valor aleatório para evitar colisões de nomes\",\n include_bucket_url: \"Incluir URL do bucket (gs://...) no valor salvo\",\n include_bucket_url_description: \"Ative esta configuração se deseja salvar uma URL de armazenamento completa (ex. gs://meu-bucket/caminho/para/arquivo) em vez de apenas o caminho de armazenamento. Você só pode alterar esta configuração na criação.\",\n save_url_instead_of_path: \"Salvar URL em vez do caminho de armazenamento\",\n save_url_description: \"Ative esta configuração se preferir salvar a URL de download do arquivo enviado em vez do caminho de armazenamento. Você só pode alterar esta configuração na criação.\",\n max_size_bytes: \"Tamanho máximo (em bytes)\",\n image_resize_configuration: \"Configuração de redimensionamento de imagem\",\n image_resize_description: \"Redimensionar e otimizar imagens automaticamente antes do upload (apenas JPEG, PNG, WebP)\",\n max_width_px: \"Largura máx (px)\",\n max_height_px: \"Altura máx (px)\",\n resize_mode: \"Modo de redimensionamento\",\n resize_contain: \"Conter\",\n resize_contain_description: \"Conter (ajustar dentro dos limites)\",\n resize_cover: \"Cobrir\",\n resize_cover_description: \"Cobrir (preencher limites, pode cortar)\",\n output_format: \"Formato de saída\",\n format_original: \"Original\",\n format_original_description: \"Original (manter mesmo formato)\",\n format_webp_description: \"WebP (melhor compressão)\",\n quality_label: \"Qualidade (0–100)\",\n quality_hint: \"Maior qualidade = arquivo maior. Recomendado: 80–90 para fotos, 90–100 para gráficos\",\n preview_type: \"Tipo de pré-visualização\",\n preview_image: \"Imagem\",\n preview_video: \"Vídeo\",\n preview_audio: \"Áudio\",\n display_url: \"Exibir URL\",\n default_value_not_set: \"Valor padrão não definido\",\n default_value_is: \"O valor padrão é {{value}}\",\n default_value_was_cleared: \"O valor padrão foi removido\",\n enum_missing_values: \"Esta propriedade enum está com valores faltando\",\n mode_label: \"Modo\",\n date_time_mode: \"Data/Hora\",\n date_mode: \"Data\",\n automatic_value: \"Valor automático\",\n auto_on_create: \"Na criação\",\n auto_on_update: \"Em qualquer atualização\",\n auto_none: \"Nenhum\",\n auto_value_description: \"Atualizar este campo automaticamente ao criar ou atualizar a entidade\",\n timezone_label: \"Fuso horário\",\n local_timezone: \"Fuso horário local\",\n timezone_description: \"Fuso horário para exibir e inserir datas. Os valores são sempre armazenados em UTC.\",\n target_collection: \"Coleção alvo\",\n views_group: \"Visualizações\",\n add_property_to: \"Adicionar propriedade a {{name}}\",\n add_first_property_to_group: \"Adicione a primeira propriedade a este grupo\",\n spread_children_as_columns: \"Expandir filhos como colunas\",\n spread_children_description: \"Ative esta opção se deseja exibir os filhos deste grupo como colunas individuais. Isso só funciona para grupos de nível superior.\",\n paste_behavior: \"Comportamento ao colar\",\n strip_html_on_paste: \"Remover HTML ao colar\",\n strip_html_description: \"Remover tags HTML e estilos inline ao colar conteúdo de fontes externas\",\n convert_pasted_to_markdown: \"Converter texto colado em markdown\",\n convert_pasted_description: \"Converter texto rico (do Google Docs, Word, etc.) em formato markdown limpo\",\n markdown_url_note: \"Ao usar Markdown, as URLs dos arquivos enviados são sempre salvas no valor de texto (não o caminho).\",\n hide_from_collection: \"Ocultar da coleção\",\n hide_from_collection_tooltip: \"Ocultar este campo da visualização da coleção. Ele ainda estará visível na visualização do formulário\",\n read_only: \"Somente leitura\",\n read_only_tooltip: \"Este é um campo somente leitura. Exibir apenas como pré-visualização\",\n nullable: \"Nullable\",\n nullable_tooltip: \"Permitir que este campo seja explicitamente definido como null. Um botão de limpar será exibido ao usuário\",\n tab_general: \"Geral\",\n tab_display: \"Exibição\",\n tab_properties: \"Propriedades\",\n tab_extend: \"Estender\",\n unsaved_changes_in_collection: \"Existem alterações não salvas nesta coleção\",\n error_persisting_collection: \"Erro ao salvar a coleção: {{error}}\",\n details_in_console: \"Detalhes no console\",\n error_inferring_collection: \"Erro ao inferir a coleção: {{error}}\",\n collection_deleted: \"Coleção excluída\",\n data_imported_successfully_msg: \"Dados importados com sucesso\",\n must_specify_path: \"Você deve especificar um caminho no banco de dados para esta coleção\",\n collection_path_already_exists: \"Já existe uma coleção com o caminho especificado. Se deseja ter múltiplas coleções com o mesmo caminho de banco de dados, certifique-se de que tenham IDs diferentes\",\n collection_path_odd_segments: \"Os caminhos de coleção devem ter um número ímpar de segmentos: {{path}}\",\n collection_uses_path_as_id: \"Já existe uma coleção que usa este valor como caminho\",\n collection_uses_this_id: \"Já existe uma coleção que usa este ID\",\n delete_stored_config: \"Excluir a configuração salva?\",\n delete_stored_config_body: \"Isso não excluirá nenhum dado, apenas a configuração salva, e restaurará ao estado do código.\",\n order_label: \"Ordem\",\n\n // Collection Properties Editor\n select_property_to_edit: \"Selecione uma propriedade para editá-la\",\n add_first_property: \"Agora você pode adicionar sua primeira propriedade\",\n add_new_property: \"Adicionar nova propriedade\",\n no_permission_add_properties: \"Você não tem permissão para adicionar novas propriedades\",\n get_code_for_collection: \"Obter o código desta coleção\",\n add_properties_from_data: \"Adicionar novas propriedades com base nos dados\",\n collection_name_placeholder: \"Nome da coleção\",\n created_by: \"Criado por {{name}}\",\n property_defined_as_builder: \"Esta propriedade está definida como um property builder no código\",\n\n // Extend Settings\n extend_title: \"Estender\",\n extend_description: \"Adicione subcoleções, visualizações personalizadas e ações de entidade a esta coleção.\",\n collection_defined_in_code: \"Esta coleção está definida no código. As alterações feitas neste editor substituirão as propriedades definidas no código. Você pode excluir os valores substituídos para voltar ao estado definido no código.\",\n reset_to_code: \"Restaurar ao código\",\n\n widget_group_text: \"Texto\",\n widget_group_boolean: \"Booleano\",\n widget_group_users: \"Usuários\",\n widget_group_select: \"Seleção\",\n widget_group_number: \"Número\",\n widget_group_file: \"Arquivo\",\n widget_group_reference: \"Referência\",\n widget_group_date: \"Data\",\n widget_group_group: \"Grupo\",\n widget_group_array: \"Lista\"\n};\n","import React from \"react\";\nimport { FireCMSPlugin, useAuthController, useNavigationController, User, useTranslation } 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\";\nimport { collectionEditorTranslationsEn } from \"./locales/en\";\nimport { collectionEditorTranslationsEs } from \"./locales/es\";\nimport { collectionEditorTranslationsDe } from \"./locales/de\";\nimport { collectionEditorTranslationsFr } from \"./locales/fr\";\nimport { collectionEditorTranslationsIt } from \"./locales/it\";\nimport { collectionEditorTranslationsHi } from \"./locales/hi\";\nimport { collectionEditorTranslationsPt } from \"./locales/pt\";\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 i18n: {\n en: collectionEditorTranslationsEn,\n es: collectionEditorTranslationsEs,\n de: collectionEditorTranslationsDe,\n fr: collectionEditorTranslationsFr,\n it: collectionEditorTranslationsIt,\n hi: collectionEditorTranslationsHi,\n pt: collectionEditorTranslationsPt\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 const { t } = useTranslation();\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\"}>{t(\"no_collections_found\")}</Typography>\n <Typography>\n {t(\"start_building_collections\")}\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 />{t(\"create_first_collection\")}\n </Button>}\n <Typography color={\"secondary\"}>\n {t(\"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","t","useTranslation","t1","databaseId","undefined","updateDatabaseId","t2","pathTouched","getIn","toSnakeCase","idTouched","singularNameTouched","singular","updateName","t3","collectionIcon","isSubcollection","showErrors","t4","t5","t6","t7","t8","t9","Symbol","for","t10","t11","t12","t13","t14","t15","t16","e","target","value","t17","t18","Boolean","t19","t20","t21","t22","t23","t24","cls","t25","t26","t27","DebouncedTextField","t28","t29","t30","t31","t32","singularName","t33","e_0","t34","t35","t36","t37","t38","t39","t40","t41","description","t42","t43","t44","t45","t46","t47","t48","t49","t50","t51","t52","t53","t54","t55","t56","t57","t58","v","t59","collectionGroup","t60","t61","t62","t63","t64","t65","t66","t67","t68","history","t69","t70","v_0","t71","t72","t73","t74","t75","t76","t77","customId","t78","v_1","Error","t79","t80","t81","t82","t83","t84","t85","t86","t87","t88","t89","t90","t91","t92","t93","t94","v_2","t95","textSearchEnabled","t96","t97","t98","t99","t100","t101","height","t102","icon","t103","t104","t105","t106","DefaultDatabaseField","onDatabaseIdUpdate","LayoutModeSwitch","onChange","className","label","ViewModeSwitch","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","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","_temp","finally","inferValues","error","EnumEntry","memo","EnumEntryInternal","updateId","autoFocus","onDialogOpen","inferredEntry","shouldUpdateIdRef","idValue","labelValue","currentLabelRef","colorValue","getColorSchemeForKey","getColorSchemeForSeed","String","colorScheme","color","backgroundColor","areEqual","prevProps","nextProps","equal","EnumEntryDialog","open","onClose","idError","open_0","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","EnumPropertyField","multiselect","propertyNamespace","setFieldError","snackbarContext","useSnackbarController","defaultValue","valuesEnumValues","useMemo","resolveEnumValues","enumIds","map","includes","type","message","fullPropertyPath","res","entry","toString","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","T2","hasFilenameCallback","hasStoragePathCallback","fileTypes","handleTypesChange","ExpandablePanel","MultiSelect","selected","join","value_0","preventDefault","stopPropagation","entries","value_1","parseInt","e_1","value_2","e_2","value_3","value_4","selected_0","value_5","selected_1","charAt","toUpperCase","slice","e_3","value_6","numValue","editableProperty","property","isPropertyBuilder","dataType","of","editable","removeNonEditableProperties","properties","_","key","propertyOrBuilder","reduce","a","b","PropertyFieldPreview","onClick","includeName","includeEditButton","propertyConfigs","getFieldConfig","propertyConfig","borderColorClass","cardClickableMixin","cardSelectedMixin","cardMixin","NonEditablePropertyPreview","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","currentIndex","newOrder","k","unshift","currentIndex_0","newOrder_0","k_0","push","MapPropertyField","propertyDialogOpen","setPropertyDialogOpen","setSelectedPropertyKey","selectedPropertyNamespace","setSelectedPropertyNamespace","currentPropertiesOrder","onPropertyCreated","propertiesPath","propertiesOrderPath","currentPropertiesOrder_0","deleteProperty","selectedPropertyFullId","selectedProperty","empty","propertiesOrder_0","namespace_0","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","_temp2","selectedCollection","collection","flatMap","group","collection_0","collection_1","_temp3","collection_2","col","TIMEZONES","DateTimePropertyField","modeValue","modeError","autoValueValue","autoValueError","timezoneValue","timezoneError","modePath","autoValuePath","v_3","v_4","tz","t_0","timezonePath","tz_0","AdvancedPropertyValidation","hideFromCollection","readOnly","nullable","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","Select","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","_temp4","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","_temp5","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","hasValue","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","groupKey","fieldBackgroundDisabledMixin","fieldBackgroundHoverMixin","fieldBackgroundMixin","Dialog","DialogContent","key_2","propertyConfig_2","groupKey_0","translatedGroup","propertyConfig_0","WidgetSelectViewItem","shouldWarnChangingDataType","KanbanConfigSection","forceExpanded","authController","customizationController","panelRef","columnPropertyDialogOpen","setColumnPropertyDialogOpen","resolvedCollection","resolveCollection","enumStringProperties","kanbanConfig","kanban","columnPropertyMissing","columnProperty","scrollIntoView","behavior","showCreateButton","dialogPropertyKey","dialogPropertyName","unslugify","fieldConfig","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","themes","vsDark","navigator","clipboard","writeText","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","UnsavedChangesDialog","handleOk","handleCancel","title","EntityCustomViewsSelectDialog","entityViews","view","SubcollectionsEditTab","configController","collectionInference","parentCollectionIds","embedded","contextEntityViews","subcollectionToDelete","setSubcollectionToDelete","addEntityViewDialogOpen","setAddEntityViewDialogOpen","viewToDelete","setViewToDelete","currentDialog","setCurrentDialog","setSubcollections","resolvedEntityViews","resolveEntityView","hardCodedEntityViews","totalEntityViews","subcollection","editedCollectionId","Paper","Table","TableBody","view_0","content","deleteCollection","e_4","e_5","updatedCollection","selectedViewKey","e_6","EntityActionsSelectDialog","entityActions","action","EntityActionsEditTab","contextEntityActions","addEntityActionDialogOpen","setAddEntityActionDialogOpen","actionToDelete","setActionToDelete","resolvedEntityActions","resolveEntityAction","hardCodedEntityActions","totalEntityActions","action_0","selectedActionKey","action_1","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","CollectionEditorWelcomeView","onContinue","existingCollectionPaths","pathSuggestions","filteredSuggestions","jsonImportOpen","setJsonImportOpen","Container","suggestion","generatedCollection","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","propertyKey_1","PropertySelect","fieldId","newProperty","widget_0","PropertySelectItem","optionDisabled","CollectionEditorImportDataPreview","loadEntities","mappedData","convertDataToEntity","idColumn","defaultValues","setEntities","selectionController","useSelectionController","entities","dataLoading","noMoreToLoad","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","importedCollection","removeUndefined","validate","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","clearFilter","setFilterValues","setSortBy","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","collectionEditorTranslationsEn","file_upload_config","file_type_images","file_type_videos","file_type_audio","file_type_applications","file_type_text","only","all_file_types_allowed","allowed_file_types","file_name_label","storage_path_label","storage_placeholders_description","storage_placeholder_file","storage_placeholder_file_name","storage_placeholder_file_ext","storage_placeholder_entity_id","storage_placeholder_property_key","storage_placeholder_path","storage_placeholder_rand","include_bucket_url","include_bucket_url_description","save_url_instead_of_path","save_url_description","max_size_bytes","image_resize_configuration","image_resize_description","max_width_px","max_height_px","resize_mode","resize_contain","resize_contain_description","resize_cover","resize_cover_description","output_format","format_original","format_original_description","format_webp_description","quality_label","quality_hint","preview_type","preview_image","preview_video","preview_audio","display_url","default_value_not_set","default_value_is","default_value_was_cleared","enum_missing_values","mode_label","date_time_mode","date_mode","automatic_value","auto_on_create","auto_on_update","auto_none","auto_value_description","timezone_label","local_timezone","timezone_description","target_collection","views_group","add_property_to","add_first_property_to_group","spread_children_as_columns","spread_children_description","paste_behavior","strip_html_on_paste","strip_html_description","convert_pasted_to_markdown","convert_pasted_description","markdown_url_note","hide_from_collection","hide_from_collection_tooltip","read_only","read_only_tooltip","nullable_tooltip","tab_general","tab_display","tab_properties","tab_extend","unsaved_changes_in_collection","error_persisting_collection","details_in_console","error_inferring_collection","collection_deleted","data_imported_successfully_msg","must_specify_path","collection_path_already_exists","collection_path_odd_segments","collection_uses_path_as_id","collection_uses_this_id","delete_stored_config","delete_stored_config_body","order_label","select_property_to_edit","add_first_property","add_new_property","no_permission_add_properties","get_code_for_collection","add_properties_from_data","collection_name_placeholder","created_by","property_defined_as_builder","extend_title","extend_description","collection_defined_in_code","reset_to_code","widget_group_text","widget_group_boolean","widget_group_users","widget_group_select","widget_group_number","widget_group_file","widget_group_reference","widget_group_date","widget_group_group","widget_group_array","collectionEditorTranslationsEs","collectionEditorTranslationsDe","collectionEditorTranslationsFr","collectionEditorTranslationsIt","collectionEditorTranslationsHi","collectionEditorTranslationsPt","useCollectionEditorPlugin","includeIntroView","Component","navigationEntries","saveNavigationEntries","additionalActions","additionalChildrenStart","CollectionActions","AdditionalCards","allowDragAndDrop","onNavigationEntriesUpdate","updateKanbanColumnsOrder","CollectionActionsStart","HeaderAction","AddColumnComponent","onColumnsReorder","onKanbanColumnsReorder","KanbanSetupComponent","AddKanbanColumnComponent","ActionsTop","en","es","de","fr","it","hi","pt","provider","homePage","collectionView","i18n","IntroWidget","mergeCollections","baseCollections","backendCollections","modifyCollection","markAsEditable","joinCollectionLists","indexA","findIndex","indexB","MissingReferenceWidget","pathProp","getLastSegment","getParentCollectionIds","collectionEditor","segments"],"mappings":"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"}
|