@firecms/collection_editor 3.0.0-rc.1 → 3.0.0-rc.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/index.es.js +837 -509
- package/dist/index.es.js.map +1 -1
- package/dist/index.umd.js +837 -509
- package/dist/index.umd.js.map +1 -1
- package/dist/types/collection_inference.d.ts +1 -1
- package/dist/ui/collection_editor/properties/StringPropertyField.d.ts +1 -1
- package/dist/utils/entities.d.ts +1 -1
- package/package.json +8 -8
- package/src/ConfigControllerProvider.tsx +2 -2
- package/src/types/collection_inference.ts +1 -1
- package/src/ui/collection_editor/CollectionDetailsForm.tsx +13 -0
- package/src/ui/collection_editor/CollectionEditorDialog.tsx +1 -1
- package/src/ui/collection_editor/CollectionPropertiesEditorForm.tsx +0 -8
- package/src/ui/collection_editor/PropertyEditView.tsx +5 -3
- package/src/ui/collection_editor/PropertyFieldPreview.tsx +5 -5
- package/src/ui/collection_editor/UnsavedChangesDialog.tsx +1 -1
- package/src/ui/collection_editor/import/CollectionEditorImportDataPreview.tsx +10 -2
- package/src/ui/collection_editor/properties/MarkdownPropertyField.tsx +1 -1
- package/src/ui/collection_editor/properties/StoragePropertyField.tsx +135 -5
- package/src/ui/collection_editor/properties/StringPropertyField.tsx +5 -1
- package/src/ui/collection_editor/properties/validation/ValidationPanel.tsx +1 -1
- package/src/ui/collection_editor/utils/supported_fields.tsx +1 -0
- package/src/ui/collection_editor/utils/update_property_for_widget.ts +28 -6
- package/src/utils/collections.ts +0 -1
- package/src/utils/entities.ts +6 -9
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 <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-2\">\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 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 const fileNameValue = getIn(values, fileName) ?? \"{rand}_{file}\";\n const storagePathValue = getIn(values, storagePath) ?? \"/\";\n const maxSizeValue = getIn(values, maxSize);\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 if (value.includes(\"all\")) setFieldValue(acceptedFiles, undefined);\n // else if (value.length >= Object.keys(fileTypes).length) setFieldValue(acceptedFiles, undefined);\n // else if (allFileTypesSelected)\n // setFieldValue(acceptedFiles, Object.keys(fileTypes).filter((v) => !value.includes(v)));\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-2\">\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>\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 | PropertyOrBuilder): boolean {\n if (isPropertyBuilder(property))\n return false;\n if (isPropertyBuilder(property as PropertyOrBuilder))\n return false;\n else {\n const eProperty = property as Property;\n if (eProperty.dataType === \"array\" && typeof eProperty.of === \"function\")\n return false;\n else if (eProperty.dataType === \"array\" && Array.isArray(eProperty.of))\n return false;\n return Boolean(eProperty.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=\"body1\"\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\" : \"subtitle1\"}\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 p-1 rounded-full shadow text-white bg-surface-500\"}>\n <FunctionsIcon color={\"inherit\"} size={\"medium\"}/>\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=\"body1\"\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, toSnakeCase, unslugify } 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 ? unslugify(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\";\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 === \"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 } 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 } 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 } 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 } 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 } 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 } 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 \"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-2\">\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 console.debug(\"onSubmit\", newPropertyWithId);\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 === \"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 no <code>editable</code> flag\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 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 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 console.debug(\"onPropertyChanged\", {\n id,\n property,\n previousId,\n namespace,\n propertyPath\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>\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 initialFilter: {\n status: [\"==\", \"published\"]\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, { useEffect, useState } from \"react\";\nimport { EntityCollection, unslugify, } from \"@firecms/core\";\nimport { Button, Card, Chip, CircularProgress, 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\";\n\nexport function CollectionEditorWelcomeView({\n path,\n pathSuggestions,\n parentCollection,\n onContinue,\n existingCollectionPaths\n }: {\n path: string;\n pathSuggestions?: (path: string) => Promise<string[]>;\n parentCollection?: EntityCollection;\n onContinue: (importData?: object[], propertiesOrder?: string[]) => void;\n existingCollectionPaths?: string[];\n}) {\n\n const [loadingPathSuggestions, setLoadingPathSuggestions] = useState(false);\n const [filteredPathSuggestions, setFilteredPathSuggestions] = useState<string[] | undefined>();\n useEffect(() => {\n if (pathSuggestions && existingCollectionPaths) {\n setLoadingPathSuggestions(true);\n pathSuggestions(path)\n .then(suggestions => {\n const filteredSuggestions = suggestions.filter(s => !(existingCollectionPaths ?? []).find(c => c.trim().toLowerCase() === s.trim().toLowerCase()));\n setFilteredPathSuggestions(filteredSuggestions);\n })\n .finally(() => setLoadingPathSuggestions(false));\n }\n }, [existingCollectionPaths, path, pathSuggestions]);\n\n const {\n values,\n setFieldValue,\n setValues,\n submitCount\n } = useFormex<EntityCollection>();\n\n const noSuggestions = !loadingPathSuggestions && (filteredPathSuggestions ?? [])?.length === 0;\n if (!noSuggestions) {\n return null;\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 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 <div className={\"my-2\"}>\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 {loadingPathSuggestions && !filteredPathSuggestions && <CircularProgress size={\"small\"}/>}\n\n {filteredPathSuggestions?.map((suggestion, index) => (\n <Chip key={suggestion}\n colorScheme={\"cyanLighter\"}\n onClick={() => {\n setFieldValue(\"name\", unslugify(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 {(filteredPathSuggestions ?? []).length === 0 && !loadingPathSuggestions && <Typography\n variant={\"caption\"}\n color={\"secondary\"}>\n No existing paths found\n </Typography>}\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 <div>\n\n <Button variant={\"text\"} onClick={() => onContinue()} className={\"my-2\"}>\n Continue from scratch\n </Button>\n </div>\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 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 [loading, setLoading] = useState<boolean>(false);\n\n async function loadEntities() {\n // const propertiesMapping = getPropertiesMapping(importConfig.originProperties, properties, importConfig.headersMapping);\n const mappedData = importConfig.importData.map(d => convertDataToEntity(authController, d, importConfig.idColumn, importConfig.headersMapping, properties, \"TEMP_PATH\", 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 pathSuggestions?: (path?: string) => Promise<string[]>;\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 pathSuggestions,\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 ?? []);\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 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={(importData, propertiesOrder) => {\n // console.log(\"Import data\", importData, propertiesOrder)\n if (importData) {\n onImportDataSet(importData, propertiesOrder);\n setCurrentView(\"import_data_mapping\");\n } else {\n setCurrentView(\"details\");\n }\n }}\n existingCollectionPaths={existingPaths}\n parentCollection={parentCollection}\n pathSuggestions={pathSuggestions}/>}\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 {currentView !== \"welcome\" && <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={\"primary\"}\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={\"primary\"}\n onClick={() => setCurrentView(\"details\")}>\n <ArrowBackIcon/>\n Back\n </Button>}\n\n <Button variant={\"text\"}\n color={\"primary\"}\n onClick={() => {\n handleCancel();\n }}>\n Cancel\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 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 }: 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 }>();\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 });\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 ?? false,\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 });\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 }}>\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 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 }: 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 }\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 EntityCallbacks,\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, unslugify, 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: unslugify(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","t86","v_1","Error","t87","t88","t89","t90","t91","_temp3","t92","v_2","t93","collectionGroup","t94","t95","t96","t97","v_3","t98","textSearchEnabled","t99","t100","t101","t102","t103","t104","t105","t106","height","t107","icon","t108","t109","t110","t111","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","fileNameValue","storagePathValue","T0","T1","maxSizeValue","storedValue","fileTypesValue","isArray","allFileTypesSelected","handleTypesChange","hasFilenameCallback","hasStoragePathCallback","ExpandablePanel","entries","preventDefault","stopPropagation","parseInt","selected","join","editableProperty","property","isPropertyBuilder","eProperty","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","unslugify","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","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","debug","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","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","_temp4","fieldBackgroundDisabledMixin","fieldBackgroundHoverMixin","fieldBackgroundMixin","Dialog","DialogContent","group_0","key_2","propertyConfig_2","groupKey","key_1","propertyConfig_0","WidgetSelectViewItem","shouldWarnChangingDataType","camelCase","str","toLowerCase","parts","slice","part","charAt","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","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","e_2","Paper","Table","TableBody","e_3","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","pathSuggestions","onContinue","existingCollectionPaths","loadingPathSuggestions","setLoadingPathSuggestions","filteredPathSuggestions","setFilteredPathSuggestions","suggestions","filteredSuggestions","s","c","noSuggestions","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","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/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, toSnakeCase, unslugify } 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 ? unslugify(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 initialFilter: {\n status: [\"==\", \"published\"]\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, { useEffect, useState } from \"react\";\nimport { EntityCollection, unslugify, } from \"@firecms/core\";\nimport { Button, Card, Chip, CircularProgress, 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\";\n\nexport function CollectionEditorWelcomeView({\n path,\n pathSuggestions,\n parentCollection,\n onContinue,\n existingCollectionPaths\n }: {\n path: string;\n pathSuggestions?: (path: string) => Promise<string[]>;\n parentCollection?: EntityCollection;\n onContinue: (importData?: object[], propertiesOrder?: string[]) => void;\n existingCollectionPaths?: string[];\n}) {\n\n const [loadingPathSuggestions, setLoadingPathSuggestions] = useState(false);\n const [filteredPathSuggestions, setFilteredPathSuggestions] = useState<string[] | undefined>();\n useEffect(() => {\n if (pathSuggestions && existingCollectionPaths) {\n setLoadingPathSuggestions(true);\n pathSuggestions(path)\n .then(suggestions => {\n const filteredSuggestions = suggestions.filter(s => !(existingCollectionPaths ?? []).find(c => c.trim().toLowerCase() === s.trim().toLowerCase()));\n setFilteredPathSuggestions(filteredSuggestions);\n })\n .finally(() => setLoadingPathSuggestions(false));\n }\n }, [existingCollectionPaths, path, pathSuggestions]);\n\n const {\n values,\n setFieldValue,\n setValues,\n submitCount\n } = useFormex<EntityCollection>();\n\n const noSuggestions = !loadingPathSuggestions && (filteredPathSuggestions ?? [])?.length === 0;\n if (!noSuggestions) {\n return null;\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 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 <div className={\"my-2\"}>\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 {loadingPathSuggestions && !filteredPathSuggestions && <CircularProgress size={\"small\"}/>}\n\n {filteredPathSuggestions?.map((suggestion, index) => (\n <Chip key={suggestion}\n colorScheme={\"cyanLighter\"}\n onClick={() => {\n setFieldValue(\"name\", unslugify(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 {(filteredPathSuggestions ?? []).length === 0 && !loadingPathSuggestions && <Typography\n variant={\"caption\"}\n color={\"secondary\"}>\n No existing paths found\n </Typography>}\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 <div>\n\n <Button variant={\"text\"} onClick={() => onContinue()} className={\"my-2\"}>\n Continue from scratch\n </Button>\n </div>\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 pathSuggestions?: (path?: string) => Promise<string[]>;\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 pathSuggestions,\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 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={(importData, propertiesOrder) => {\n // console.log(\"Import data\", importData, propertiesOrder)\n if (importData) {\n onImportDataSet(importData, propertiesOrder);\n setCurrentView(\"import_data_mapping\");\n } else {\n setCurrentView(\"details\");\n }\n }}\n existingCollectionPaths={existingPaths}\n parentCollection={parentCollection}\n pathSuggestions={pathSuggestions}/>}\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 {currentView !== \"welcome\" && <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={\"primary\"}\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={\"primary\"}\n onClick={() => setCurrentView(\"details\")}>\n <ArrowBackIcon/>\n Back\n </Button>}\n\n <Button variant={\"text\"}\n color={\"primary\"}\n onClick={() => {\n handleCancel();\n }}>\n Cancel\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 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 }: 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 }>();\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 });\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 });\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 }}>\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 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 }: 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 }\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, unslugify, 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: unslugify(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","unslugify","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","pathSuggestions","onContinue","existingCollectionPaths","loadingPathSuggestions","setLoadingPathSuggestions","filteredPathSuggestions","setFilteredPathSuggestions","suggestions","filteredSuggestions","s","c","noSuggestions","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","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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"}
|