@firecms/collection_editor 3.0.0-tw4.1 → 3.0.0-tw4.13
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/ConfigControllerProvider.d.ts +1 -0
- package/dist/index.es.js +284 -336
- package/dist/index.es.js.map +1 -1
- package/dist/index.umd.js +283 -335
- package/dist/index.umd.js.map +1 -1
- package/dist/types/collection_editor_controller.d.ts +1 -0
- package/dist/ui/collection_editor/CollectionEditorDialog.d.ts +0 -1
- package/dist/ui/collection_editor/CollectionEditorWelcomeView.d.ts +2 -3
- package/dist/useCollectionEditorPlugin.d.ts +2 -1
- package/package.json +8 -8
- package/src/ConfigControllerProvider.tsx +10 -3
- package/src/types/collection_editor_controller.tsx +2 -0
- package/src/ui/MissingReferenceWidget.tsx +2 -2
- package/src/ui/collection_editor/CollectionEditorDialog.tsx +21 -18
- package/src/ui/collection_editor/CollectionEditorWelcomeView.tsx +12 -40
- package/src/ui/collection_editor/properties/CommonPropertyFields.tsx +2 -2
- package/src/useCollectionEditorPlugin.tsx +5 -1
package/dist/index.umd.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.umd.js","sources":["../src/ui/collection_editor/CollectionYupValidation.tsx","../src/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 text-text-secondary dark:text-text-secondary-dark\">\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 text-text-secondary dark:text-text-secondary-dark\">\n <RuleIcon/>\n <Typography variant={\"subtitle2\"}\n className=\"ml-4\">\n Validation\n </Typography>\n </div>\n }>\n\n {children}\n\n </ExpandablePanel>\n )\n}\n","import React, { useMemo } from \"react\";\nimport { getIn, useFormex } from \"@firecms/formex\";\nimport { EnumValueConfig, resolveEnumValues, useSnackbarController } from \"@firecms/core\";\nimport { Select, SelectItem } from \"@firecms/ui\";\nimport { EnumForm } from \"../EnumForm\";\nimport { StringPropertyValidation } from \"./validation/StringPropertyValidation\";\nimport { ArrayPropertyValidation } from \"./validation/ArrayPropertyValidation\";\nimport { ValidationPanel } from \"./validation/ValidationPanel\";\nimport { PropertyWithId } from \"../PropertyEditView\";\n\nexport function EnumPropertyField({\n multiselect,\n updateIds,\n disabled,\n showErrors,\n allowDataInference,\n getData\n }: {\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 text-text-secondary dark:text-text-secondary-dark\">\n <CloudUploadIcon/>\n <Typography variant={\"subtitle2\"}\n className=\"ml-4\">\n File upload config\n </Typography>\n </div>\n }>\n\n <div className={\"grid grid-cols-12 gap-2 p-4\"}>\n\n <div className={\"col-span-12\"}>\n\n <MultiSelect\n className={\"w-full\"}\n placeholder={\"All file types allowed\"}\n disabled={disabled}\n name={acceptedFiles}\n value={fileTypesValue ?? []}\n onValueChange={handleTypesChange}\n label={allFileTypesSelected ? undefined : \"Allowed file types\"}\n renderValues={(selected) => {\n if (!selected || selected.length === 0) return \"All file types allowed\";\n return selected.map((v: string) => fileTypes[v])\n .filter((v: string) => Boolean(v))\n .join(\", \");\n }}>\n\n {Object.entries(fileTypes).map(([value, label]) => (\n <MultiSelectItem key={value} value={value} className={\"flex items-center gap-2\"}>\n {/*<Checkbox*/}\n {/* checked={allFileTypesSelected || fileTypesValue.indexOf(value) > -1}/>*/}\n <div className={\"flex-grow\"}>\n {label}\n </div>\n <Button size={\"small\"}\n variant={\"text\"}\n onClick={(e) => {\n e.preventDefault();\n e.stopPropagation();\n return setFieldValue(acceptedFiles, [value]);\n }}>\n Only\n </Button>\n </MultiSelectItem>\n ))}\n\n </MultiSelect>\n </div>\n\n <div className={\"col-span-12\"}>\n <Field name={fileName}\n as={DebouncedTextField}\n label={\"File name\"}\n size={\"small\"}\n disabled={hasFilenameCallback || disabled}\n value={hasFilenameCallback ? \"-\" : fileNameValue}\n />\n </div>\n <div className={\"col-span-12\"}>\n <Field name={storagePath}\n as={DebouncedTextField}\n label={\"Storage path\"}\n disabled={hasStoragePathCallback || disabled}\n size={\"small\"}\n value={hasStoragePathCallback ? \"-\" : storagePathValue}\n />\n <Typography variant={\"caption\"} className={\"ml-3.5 mt-1 mb-2\"}>\n <p>You can use the following placeholders in\n the file name\n and storage path values:</p>\n <ul>\n <li>{\"{file} - Full name of the uploaded file\"}</li>\n <li>{\"{file.name} - Name of the uploaded file without extension\"}</li>\n <li>{\"{file.ext} - Extension of the uploaded file\"}</li>\n <li>{\"{entityId} - ID of the entity\"}</li>\n <li>{\"{propertyKey} - ID of this field\"}</li>\n <li>{\"{path} - Path of this entity\"}</li>\n <li>{\"{rand} - Random value used to avoid name collisions\"}</li>\n </ul>\n </Typography>\n\n <Field name={storeUrl}\n type=\"checkbox\">\n {({\n field,\n form\n }: FormexFieldProps) => {\n return <SwitchControl\n label={\"Save URL instead of storage path\"}\n disabled={existing || disabled}\n form={form}\n field={field}/>\n }}\n </Field>\n\n <Typography variant={\"caption\"} className={\"ml-3.5 mt-1 mb-2\"}>\n Turn this setting on, if you prefer to save\n the download\n URL of the uploaded file instead of the\n storage path.\n You can only change this prop upon creation.\n </Typography>\n </div>\n\n <div className={\"col-span-12\"}>\n <DebouncedTextField name={maxSize}\n type={\"number\"}\n label={\"Max size (in bytes)\"}\n size={\"small\"}\n value={maxSizeValue !== undefined && maxSizeValue !== null ? maxSizeValue.toString() : \"\"}\n onChange={(e) => {\n const value = e.target.value;\n if (value === \"\") setFieldValue(maxSize, undefined);\n else setFieldValue(maxSize, parseInt(value));\n }}\n />\n </div>\n\n <div className={\"col-span-12 mt-4\"}>\n <Typography variant={\"subtitle2\"}\n color={\"secondary\"}\n className={\"mb-2 block\"}>\n Image Resize Configuration\n </Typography>\n <Typography variant={\"caption\"} className={\"mb-2 block text-xs\"}>\n Automatically resize and optimize images before upload (JPEG, PNG, WebP only)\n </Typography>\n </div>\n\n <div className={\"col-span-6\"}>\n <DebouncedTextField\n name={imageResizeMaxWidth}\n type={\"number\"}\n label={\"Max width (px)\"}\n size={\"small\"}\n disabled={disabled}\n value={imageResizeMaxWidthValue !== undefined && imageResizeMaxWidthValue !== null ? imageResizeMaxWidthValue.toString() : \"\"}\n onChange={(e) => {\n const value = e.target.value;\n if (value === \"\") setFieldValue(imageResizeMaxWidth, undefined);\n else setFieldValue(imageResizeMaxWidth, parseInt(value));\n }}\n />\n </div>\n\n <div className={\"col-span-6\"}>\n <DebouncedTextField\n name={imageResizeMaxHeight}\n type={\"number\"}\n label={\"Max height (px)\"}\n size={\"small\"}\n disabled={disabled}\n value={imageResizeMaxHeightValue !== undefined && imageResizeMaxHeightValue !== null ? imageResizeMaxHeightValue.toString() : \"\"}\n onChange={(e) => {\n const value = e.target.value;\n if (value === \"\") setFieldValue(imageResizeMaxHeight, undefined);\n else setFieldValue(imageResizeMaxHeight, parseInt(value));\n }}\n />\n </div>\n\n <div className={\"col-span-6\"}>\n <Select\n disabled={disabled}\n name={imageResizeMode}\n fullWidth\n size={\"medium\"}\n value={imageResizeModeValue || \"cover\"}\n onValueChange={(value) => setFieldValue(imageResizeMode, value || \"cover\")}\n label={\"Resize mode\"}\n renderValue={(selected) => {\n if (!selected) return \"Cover\";\n return selected === \"contain\" ? \"Contain (fit within bounds)\" : \"Cover (fill bounds, may crop)\";\n }}>\n <SelectItem value=\"contain\">\n Contain (fit within bounds)\n </SelectItem>\n <SelectItem value=\"cover\">\n Cover (fill bounds, may crop)\n </SelectItem>\n </Select>\n </div>\n\n <div className={\"col-span-6\"}>\n <Select\n disabled={disabled}\n size={\"medium\"}\n fullWidth\n name={imageResizeFormat}\n value={imageResizeFormatValue || \"original\"}\n onValueChange={(value) => setFieldValue(imageResizeFormat, value || \"original\")}\n label={\"Output format\"}\n renderValue={(selected) => {\n if (!selected) return \"Original\";\n return selected.charAt(0).toUpperCase() + selected.slice(1);\n }}>\n <SelectItem value=\"original\">\n Original (keep same format)\n </SelectItem>\n <SelectItem value=\"jpeg\">\n JPEG\n </SelectItem>\n <SelectItem value=\"png\">\n PNG\n </SelectItem>\n <SelectItem value=\"webp\">\n WebP (best compression)\n </SelectItem>\n </Select>\n </div>\n\n <div className={\"col-span-12\"}>\n <DebouncedTextField\n name={imageResizeQuality}\n type={\"number\"}\n label={\"Quality (0-100)\"}\n size={\"small\"}\n disabled={disabled}\n value={imageResizeQualityValue !== undefined && imageResizeQualityValue !== null ? imageResizeQualityValue.toString() : \"\"}\n onChange={(e) => {\n const value = e.target.value;\n if (value === \"\") setFieldValue(imageResizeQuality, undefined);\n else {\n const numValue = parseInt(value);\n if (numValue >= 0 && numValue <= 100) {\n setFieldValue(imageResizeQuality, numValue);\n }\n }\n }}\n />\n <Typography variant={\"caption\"} className={\"ml-3.5 mt-1 mb-2\"}>\n Higher quality = larger file size. Recommended: 80-90 for photos, 90-100 for graphics\n </Typography>\n </div>\n\n </div>\n </ExpandablePanel>\n\n </div>\n\n <div className={\"col-span-12\"}>\n\n <ValidationPanel>\n {!multiple && <div className={\"grid grid-cols-12 gap-2\"}>\n <GeneralPropertyValidation disabled={disabled}/>\n </div>}\n {multiple && <div className={\"col-span-12\"}>\n <ArrayPropertyValidation disabled={disabled}/>\n </div>}\n </ValidationPanel>\n\n </div>\n </>\n );\n}\n","import { isPropertyBuilder, Properties, PropertiesOrBuilders, Property, PropertyOrBuilder } from \"@firecms/core\";\n\nexport function editableProperty(property: PropertyOrBuilder): boolean {\n if (isPropertyBuilder(property)) {\n return false;\n } else {\n if (property.dataType === \"array\" && typeof property.of === \"function\")\n return false;\n else if (property.dataType === \"array\" && Array.isArray(property.of))\n return false;\n return property.editable === undefined ? true : Boolean(property.editable);\n }\n}\n\nexport function removeNonEditableProperties(properties: PropertiesOrBuilders<any>): Properties {\n return Object.entries(properties)\n .filter(([_, property]) => editableProperty(property))\n .map(([key, propertyOrBuilder]) => {\n const property = propertyOrBuilder as Property;\n if (!editableProperty(property)) {\n return undefined;\n } else if (property.dataType === \"map\" && property.properties) {\n return {\n [key]: {\n ...property,\n properties: removeNonEditableProperties(property.properties as PropertiesOrBuilders)\n }\n };\n } else {\n return { [key]: property };\n }\n })\n .filter((e) => Boolean(e))\n .reduce((a, b) => ({ ...a, ...b }), {}) as Properties;\n}\n","import {\n ErrorBoundary,\n getFieldConfig,\n isPropertyBuilder,\n Property,\n PropertyConfigBadge,\n PropertyOrBuilder,\n useCustomizationController,\n} from \"@firecms/core\";\nimport {\n cardClickableMixin,\n cardMixin,\n cardSelectedMixin,\n cls,\n DoNotDisturbOnIcon,\n FunctionsIcon,\n Paper,\n Typography,\n} from \"@firecms/ui\";\n\nimport { editableProperty } from \"../../utils/entities\";\n\nexport function PropertyFieldPreview({\n property,\n onClick,\n hasError,\n includeName,\n includeEditButton,\n selected\n }: {\n property: Property,\n hasError?: boolean,\n selected?: boolean,\n includeName?: boolean,\n includeEditButton?: boolean;\n onClick?: () => void\n}) {\n\n const { propertyConfigs } = useCustomizationController();\n\n const propertyConfig = getFieldConfig(property, propertyConfigs);\n const disabled = !editableProperty(property);\n\n const borderColorClass = hasError\n ? \"border-red-500 dark:border-red-500 border-opacity-100 dark:border-opacity-100 border-red-500/100 dark:border-red-500/100 ring-0 dark:ring-0\"\n : (selected ? \"border-primary\" : \"border-transparent\");\n\n return <ErrorBoundary>\n <div\n onClick={onClick}\n className=\"flex flex-row w-full cursor-pointer\">\n <div className={\"m-4\"}>\n <PropertyConfigBadge propertyConfig={propertyConfig}/>\n </div>\n <Paper\n className={cls(\n \"m-1\",\n \"border\",\n \"pl-2 w-full flex flex-row gap-4 items-center\",\n cardMixin,\n onClick ? cardClickableMixin : \"\",\n selected ? cardSelectedMixin : \"\",\n \"flex-grow p-4 border transition-colors duration-200\",\n borderColorClass\n )}\n >\n\n <div className=\"w-full flex flex-col\">\n\n {includeName &&\n <ErrorBoundary>\n <Typography variant=\"label\"\n component=\"span\"\n className=\"flex-grow pr-2\">\n {property.name\n ? property.name\n : \"\\u00a0\"\n }\n </Typography>\n </ErrorBoundary>}\n\n <div className=\"flex flex-row items-center\">\n <ErrorBoundary>\n <Typography className=\"flex-grow pr-2\"\n variant={includeName ? \"body2\" : \"label\"}\n component=\"span\"\n color=\"secondary\">\n {propertyConfig?.name}\n </Typography>\n </ErrorBoundary>\n <ErrorBoundary>\n <Typography variant=\"body2\"\n component=\"span\"\n color=\"disabled\">\n {property.dataType}\n </Typography>\n </ErrorBoundary>\n\n </div>\n </div>\n\n {includeEditButton && <Typography variant={\"button\"}>\n EDIT\n </Typography>}\n\n </Paper>\n </div>\n </ErrorBoundary>\n}\n\nexport function NonEditablePropertyPreview({\n name,\n selected,\n onClick,\n property\n }: {\n name: string,\n selected: boolean,\n onClick?: () => void,\n property?: PropertyOrBuilder\n}) {\n\n const { propertyConfigs } = useCustomizationController();\n\n const propertyConfig = !isPropertyBuilder(property) && property ? getFieldConfig(property, propertyConfigs) : undefined;\n\n return (\n <div\n onClick={onClick}\n className=\"flex flex-row w-full cursor-pointer\">\n <div className={\"relative m-4\"}>\n {propertyConfig && <PropertyConfigBadge propertyConfig={propertyConfig}/>}\n {!propertyConfig && <div\n className={\"h-8 w-8 flex items-center justify-center rounded-full shadow text-white bg-surface-500\"}>\n <FunctionsIcon color={\"inherit\"} size={\"small\"}/>\n </div>}\n <DoNotDisturbOnIcon color={\"disabled\"} size={\"small\"} className={\"absolute -right-2 -top-2\"}/>\n </div>\n <Paper\n className={cls(\n \"pl-2 w-full flex flex-row gap-4 items-center\",\n cardMixin,\n onClick ? cardClickableMixin : \"\",\n selected ? cardSelectedMixin : \"\",\n \"flex-grow p-4 border transition-colors duration-200\",\n selected ? \"border-primary\" : \"border-transparent\")}\n >\n\n <div className=\"w-full flex flex-col\">\n <Typography variant=\"label\"\n component=\"span\"\n className=\"flex-grow pr-2\">\n {property?.name\n ? property.name\n : name\n }\n </Typography>\n\n <div className=\"flex flex-row items-center\">\n {propertyConfig && <Typography className=\"flex-grow pr-2\"\n variant={\"body2\"}\n component=\"span\"\n color=\"secondary\">\n {propertyConfig?.name}\n </Typography>}\n\n {property && !isPropertyBuilder(property) && <ErrorBoundary>\n <Typography variant=\"body2\"\n component=\"span\"\n color=\"disabled\">\n {property.dataType}\n </Typography>\n </ErrorBoundary>}\n\n {property && isPropertyBuilder(property) && <ErrorBoundary>\n <Typography variant=\"body2\"\n component=\"span\"\n color=\"disabled\">\n This property is defined as a property builder in code\n </Typography>\n </ErrorBoundary>}\n\n {!property && <ErrorBoundary>\n <Typography variant=\"body2\"\n component=\"span\"\n color=\"disabled\">\n This field is defined as an additional field in code\n </Typography>\n </ErrorBoundary>}\n\n </div>\n\n {/*<div className=\"flex flex-row text-xs\">*/}\n {/* <Typography className=\"flex-grow pr-2\"*/}\n {/* variant=\"body2\"*/}\n {/* component=\"span\"*/}\n {/* color=\"secondary\">*/}\n {/* This field can only be edited in code*/}\n {/* </Typography>*/}\n {/*</div>*/}\n </div>\n\n </Paper>\n </div>)\n}\n","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-surface dark:bg-surface-dark\"}>\n <div className={cls(\n \"bg-surface-50 dark:bg-surface-900\",\n \"p-4 md:p-8 pb-20 md:pb-20\",\n \"col-span-12 lg:col-span-5 h-full overflow-auto\",\n !asDialog && \"border-r \" + defaultBorderMixin\n )}>\n\n <div className=\"flex my-2\">\n\n <div className=\"flex-grow mb-4\">\n\n <Field\n name={\"name\"}\n as={DebouncedTextField}\n invisible={true}\n className=\"-ml-1\"\n inputClassName=\"text-2xl font-headers\"\n placeholder={\"Collection name\"}\n size={\"small\"}\n required\n error={Boolean(errors?.name)}/>\n\n {owner &&\n <Typography variant={\"body2\"}\n className={\"ml-2\"}\n color={\"secondary\"}>\n Created by {owner.displayName}\n </Typography>}\n </div>\n\n {extraIcon && <div className=\"ml-4\">\n {extraIcon}\n </div>}\n\n <div className=\"ml-1 mt-2 flex flex-row gap-2\">\n <Tooltip title={\"Get the code for this collection\"}\n asChild={true}>\n <IconButton\n variant={\"filled\"}\n disabled={inferringProperties}\n onClick={() => setCodeDialogOpen(true)}>\n <CodeIcon/>\n </IconButton>\n </Tooltip>\n {inferPropertiesFromData && <Tooltip title={\"Add new properties based on data\"}\n asChild={true}>\n <IconButton\n variant={\"filled\"}\n disabled={inferringProperties}\n onClick={inferPropertiesFromData}>\n {inferringProperties ? <CircularProgress size={\"small\"}/> : <AutorenewIcon/>}\n </IconButton>\n </Tooltip>}\n <Tooltip title={\"Add new property\"}\n asChild={true}>\n <Button\n variant={\"outlined\"}\n color={\"primary\"}\n onClick={() => setNewPropertyDialogOpen(true)}>\n <AddIcon/>\n </Button>\n </Tooltip>\n </div>\n </div>\n\n <ErrorBoundary>\n <PropertyTree\n className={\"pl-8\"}\n inferredPropertyKeys={inferredPropertyKeys}\n selectedPropertyKey={selectedPropertyKey ? getFullId(selectedPropertyKey, selectedPropertyNamespace) : undefined}\n properties={values.properties}\n additionalFields={values.additionalFields}\n propertiesOrder={usedPropertiesOrder}\n onPropertyClick={onPropertyClick}\n onPropertyMove={onPropertyMove}\n onPropertyRemove={isNewCollection ? deleteProperty : undefined}\n collectionEditable={collectionEditable}\n errors={errors}/>\n </ErrorBoundary>\n\n <Button className={\"mt-8 w-full\"}\n color=\"primary\"\n variant={\"outlined\"}\n size={\"large\"}\n onClick={() => setNewPropertyDialogOpen(true)}\n startIcon={<AddIcon/>}>\n Add new property\n </Button>\n </div>\n\n {!asDialog &&\n <div className={\"col-span-12 lg:col-span-7 p-4 md:py-8 md:px-4 h-full overflow-auto pb-20 md:pb-20\"}>\n <div\n className=\"sticky top-8 min-h-full w-full flex flex-col justify-center\">\n\n {selectedPropertyFullId &&\n selectedProperty &&\n !isPropertyBuilder(selectedProperty) &&\n <PropertyForm\n inArray={false}\n key={`edit_view_${selectedPropertyIndex}`}\n existingProperty={!isNewCollection}\n autoUpdateId={false}\n allowDataInference={!isNewCollection}\n autoOpenTypeSelect={false}\n propertyKey={selectedPropertyKey}\n propertyNamespace={selectedPropertyNamespace}\n property={selectedProperty}\n onPropertyChanged={onPropertyChanged}\n onDelete={deleteProperty}\n onError={onPropertyErrorInternal}\n forceShowErrors={showErrors}\n initialErrors={initialErrors}\n getData={getData}\n propertyConfigs={propertyConfigs}\n collectionEditable={collectionEditable}\n />}\n\n {!selectedProperty &&\n <div className={\"w-full flex flex-col items-center justify-center h-full gap-4\"}>\n <Typography variant={\"label\"} className=\"\">\n {emptyCollection\n ? \"Now you can add your first property\"\n : \"Select a property to edit it\"}\n </Typography>\n <Button variant={\"outlined\"}\n color={\"primary\"}\n onClick={() => setNewPropertyDialogOpen(true)}\n >\n <AddIcon/>\n Add new property\n </Button>\n </div>}\n\n {selectedProperty && isPropertyBuilder(selectedProperty) &&\n <Typography variant={\"label\"} className=\"flex items-center justify-center\">\n {\"This property is defined as a property builder in code\"}\n </Typography>}\n </div>\n </div>}\n\n {asDialog && <PropertyFormDialog\n inArray={false}\n open={selectedPropertyIndex !== undefined}\n key={`edit_view_${selectedPropertyIndex}`}\n autoUpdateId={!selectedProperty}\n allowDataInference={!isNewCollection}\n existingProperty={true}\n autoOpenTypeSelect={false}\n propertyKey={selectedPropertyKey}\n propertyNamespace={selectedPropertyNamespace}\n property={selectedProperty}\n onPropertyChanged={onPropertyChanged}\n onDelete={deleteProperty}\n onError={onPropertyErrorInternal}\n forceShowErrors={showErrors}\n initialErrors={initialErrors}\n getData={getData}\n propertyConfigs={propertyConfigs}\n collectionEditable={collectionEditable}\n onCancel={closePropertyDialog}\n onOkClicked={asDialog\n ? closePropertyDialog\n : undefined\n }/>}\n\n </div>);\n\n return (<>\n\n {body}\n\n {/* This is the dialog used for new properties*/}\n <PropertyFormDialog\n inArray={false}\n existingProperty={false}\n autoOpenTypeSelect={true}\n autoUpdateId={true}\n forceShowErrors={showErrors}\n open={newPropertyDialogOpen}\n onCancel={() => setNewPropertyDialogOpen(false)}\n onPropertyChanged={onPropertyCreated}\n getData={getData}\n allowDataInference={!isNewCollection}\n propertyConfigs={propertyConfigs}\n collectionEditable={collectionEditable}\n existingPropertyKeys={values.propertiesOrder as string[]}/>\n\n <ErrorBoundary>\n <GetCodeDialog\n collection={values}\n open={codeDialogOpen}\n onOpenChange={setCodeDialogOpen}/>\n </ErrorBoundary>\n </>\n );\n}\n","import React from \"react\";\nimport { Button, Dialog, DialogActions, DialogContent, DialogTitle, Typography } from \"@firecms/ui\";\n\nexport interface UnsavedChangesDialogProps {\n open: boolean;\n body?: React.ReactNode;\n title?: string;\n handleOk: () => void;\n handleCancel: () => void;\n}\n\nexport function UnsavedChangesDialog({\n open,\n handleOk,\n handleCancel,\n body,\n title\n }: UnsavedChangesDialogProps) {\n\n return (\n <Dialog\n open={open}\n onOpenChange={(open) => open ? handleCancel() : handleOk()}\n aria-labelledby=\"alert-dialog-title\"\n aria-describedby=\"alert-dialog-description\"\n >\n\n <DialogTitle>{title ?? \"Unsaved changes\"}</DialogTitle>\n <DialogContent className={\"mt-4\"}>\n {body && <Typography>\n {body}\n </Typography>}\n <Typography>\n Are you sure?\n </Typography>\n\n </DialogContent>\n\n <DialogActions>\n <Button variant=\"text\"\n color={\"primary\"}\n onClick={handleCancel} autoFocus> Cancel </Button>\n <Button\n color={\"primary\"}\n onClick={handleOk}> Ok </Button>\n </DialogActions>\n </Dialog>\n );\n}\n","import { useCustomizationController } from \"@firecms/core\";\nimport { Button, Dialog, DialogActions, DialogContent, DialogTitle, Typography } from \"@firecms/ui\";\nimport React from \"react\";\n\nexport function EntityCustomViewsSelectDialog({\n open,\n onClose\n }: { open: boolean, onClose: (selectedViewKey?: string) => void }) {\n const {\n entityViews,\n } = useCustomizationController();\n\n return <Dialog\n maxWidth={\"md\"}\n open={open}>\n <DialogTitle>Select custom view</DialogTitle>\n <DialogContent className={\"flex flex-col gap-4\"}>\n {entityViews?.map((view) => {\n return <Button\n key={view.key}\n onClick={() => onClose(view.key)}\n fullWidth\n variant={\"text\"}\n >\n {view.name} ({view.key})\n </Button>;\n })}\n {(entityViews ?? []).length === 0 &&\n <Typography variant={\"body2\"}>\n No custom views defined. Define your custom views in the customization settings, before using this\n dialog.\n </Typography>\n }\n </DialogContent>\n <DialogActions>\n <Button variant={\"outlined\"}\n color={\"primary\"}\n onClick={() => onClose()}>Cancel</Button>\n </DialogActions>\n </Dialog>\n}\n","import React from \"react\";\nimport {\n ConfirmationDialog,\n EntityCollection,\n EntityCustomView,\n resolveEntityView,\n useCustomizationController,\n User\n} from \"@firecms/core\";\nimport {\n AddIcon,\n Alert,\n Button,\n Container,\n DeleteIcon,\n IconButton,\n Paper,\n Table,\n TableBody,\n TableCell,\n TableRow,\n Tooltip,\n Typography,\n} from \"@firecms/ui\";\nimport { CollectionEditorDialog } from \"./CollectionEditorDialog\";\nimport { CollectionsConfigController } from \"../../types/config_controller\";\nimport { PersistedCollection } from \"../../types/persisted_collection\";\nimport { CollectionInference } from \"../../types/collection_inference\";\nimport { EntityCustomViewsSelectDialog } from \"./EntityCustomViewsSelectDialog\";\nimport { useFormex } from \"@firecms/formex\";\n\nexport function SubcollectionsEditTab({\n collection,\n parentCollection,\n configController,\n collectionInference,\n getUser,\n parentCollectionIds\n }: {\n collection: PersistedCollection,\n parentCollection?: EntityCollection,\n configController: CollectionsConfigController;\n collectionInference?: CollectionInference;\n getUser?: (uid: string) => User | null;\n parentCollectionIds?: string[];\n}) {\n\n const { entityViews: contextEntityViews } = useCustomizationController();\n\n const [subcollectionToDelete, setSubcollectionToDelete] = React.useState<string | undefined>();\n const [addEntityViewDialogOpen, setAddEntityViewDialogOpen] = React.useState<boolean>(false);\n const [viewToDelete, setViewToDelete] = React.useState<string | undefined>();\n\n const [currentDialog, setCurrentDialog] = React.useState<{\n isNewCollection: boolean,\n editedCollectionId?: string,\n }>();\n\n const {\n values,\n setFieldValue,\n } = useFormex<EntityCollection>();\n\n const [subcollections, setSubcollections] = React.useState<EntityCollection[]>(collection.subcollections ?? []);\n const resolvedEntityViews = values.entityViews?.filter(e => typeof e === \"string\")\n .map(e => resolveEntityView(e, contextEntityViews))\n .filter(Boolean) as EntityCustomView[] ?? [];\n const hardCodedEntityViews = collection.entityViews?.filter(e => typeof e !== \"string\") as EntityCustomView[] ?? [];\n const totalEntityViews = resolvedEntityViews.length + hardCodedEntityViews.length;\n\n return (\n <div className={\"overflow-auto my-auto\"}>\n <Container maxWidth={\"2xl\"} className={\"flex flex-col gap-4 p-8 m-auto\"}>\n <div className={\"flex flex-col gap-16\"}>\n\n <div className={\"flex-grow flex flex-col gap-4 items-start\"}>\n <Typography variant={\"h5\"}>\n Subcollections of {values.name}\n </Typography>\n\n <Paper className={\"flex flex-col gap-4 p-2 w-full\"}>\n {subcollections && subcollections.length > 0 && <Table>\n <TableBody>\n {subcollections.map((subcollection) => (\n <TableRow key={subcollection.path}\n onClick={() => setCurrentDialog({\n isNewCollection: false,\n editedCollectionId: subcollection.id\n })}>\n <TableCell\n align=\"left\">\n <Typography variant={\"subtitle2\"} className={\"flex-grow\"}>\n {subcollection.name}\n </Typography>\n </TableCell>\n <TableCell\n align=\"right\">\n <Tooltip title={\"Remove\"}\n asChild={true}>\n <IconButton size=\"small\"\n onClick={(e) => {\n e.preventDefault();\n e.stopPropagation();\n setSubcollectionToDelete(subcollection.id);\n }}\n color=\"inherit\">\n <DeleteIcon size={\"small\"}/>\n </IconButton>\n </Tooltip>\n </TableCell>\n </TableRow>\n ))}\n </TableBody>\n </Table>}\n\n <Button\n onClick={() => {\n setCurrentDialog({\n isNewCollection: true\n });\n }}\n variant={\"text\"}\n startIcon={<AddIcon/>}>\n Add subcollection\n </Button>\n\n </Paper>\n\n </div>\n\n <div className={\"flex-grow flex flex-col gap-4 items-start\"}>\n <Typography variant={\"h5\"}>\n Custom views\n </Typography>\n\n {totalEntityViews === 0 &&\n <Alert action={<Button variant=\"text\"\n size={\"small\"}\n href={\"https://firecms.co/docs/cloud/quickstart\"}\n component={\"a\"}\n rel=\"noopener noreferrer\"\n target=\"_blank\">More info</Button>}>\n Define your own custom views by uploading them with the CLI.\n </Alert>\n }\n\n {<>\n <Paper className={\"flex flex-col gap-4 p-2 w-full\"}>\n <Table>\n <TableBody>\n {resolvedEntityViews.map((view) => (\n <TableRow key={view.key}>\n <TableCell\n align=\"left\">\n <Typography variant={\"subtitle2\"} className={\"flex-grow\"}>\n {view.name}\n </Typography>\n </TableCell>\n <TableCell\n align=\"right\">\n <Tooltip title={\"Remove\"}\n asChild={true}>\n <IconButton size=\"small\"\n onClick={(e) => {\n e.preventDefault();\n e.stopPropagation();\n setViewToDelete(view.key);\n }}\n color=\"inherit\">\n <DeleteIcon size={\"small\"}/>\n </IconButton>\n </Tooltip>\n </TableCell>\n </TableRow>\n ))}\n {hardCodedEntityViews.map((view) => (\n <TableRow key={view.key}>\n <TableCell\n align=\"left\">\n <Typography variant={\"subtitle2\"} className={\"flex-grow\"}>\n {view.name}\n </Typography>\n <Typography variant={\"caption\"} className={\"flex-grow\"}>\n This view is defined in code with\n key <code>{view.key}</code>\n </Typography>\n </TableCell>\n </TableRow>\n ))}\n </TableBody>\n </Table>\n\n <Button\n onClick={() => {\n setAddEntityViewDialogOpen(true);\n }}\n variant={\"text\"}\n startIcon={<AddIcon/>}>\n Add custom entity view\n </Button>\n </Paper>\n\n </>}\n\n\n </div>\n\n </div>\n </Container>\n\n <div style={{ height: \"52px\" }}/>\n\n {subcollectionToDelete &&\n <ConfirmationDialog open={Boolean(subcollectionToDelete)}\n onAccept={() => {\n const props = {\n id: subcollectionToDelete,\n parentCollectionIds: [...(parentCollectionIds ?? []), collection.id]\n };\n console.debug(\"Deleting subcollection\", props)\n configController.deleteCollection(props).then(() => {\n setSubcollectionToDelete(undefined);\n setSubcollections(subcollections?.filter(e => e.id !== subcollectionToDelete))\n });\n }}\n onCancel={() => setSubcollectionToDelete(undefined)}\n title={<>Delete this subcollection?</>}\n body={<> This will <b>not\n delete any data</b>, only\n the collection in the CMS</>}/>}\n {viewToDelete &&\n <ConfirmationDialog open={Boolean(viewToDelete)}\n onAccept={() => {\n setFieldValue(\"entityViews\", values.entityViews?.filter(e => e !== viewToDelete));\n setViewToDelete(undefined);\n }}\n onCancel={() => setViewToDelete(undefined)}\n title={<>Remove this view?</>}\n body={<>This will <b>not\n delete any data</b>, only\n the view in the CMS</>}/>}\n\n <CollectionEditorDialog\n open={Boolean(currentDialog)}\n configController={configController}\n parentCollection={collection}\n collectionInference={collectionInference}\n parentCollectionIds={[...parentCollectionIds ?? [], values.id]}\n isNewCollection={false}\n {...currentDialog}\n getUser={getUser}\n handleClose={(updatedCollection) => {\n if (updatedCollection && !subcollections.map(e => e.id).includes(updatedCollection.id)) {\n setSubcollections([...subcollections, updatedCollection]);\n }\n setCurrentDialog(undefined);\n }}/>\n\n <EntityCustomViewsSelectDialog\n open={addEntityViewDialogOpen}\n onClose={(selectedViewKey) => {\n if (selectedViewKey) {\n setFieldValue(\"entityViews\", [...(values.entityViews ?? []), selectedViewKey]);\n }\n setAddEntityViewDialogOpen(false);\n }}/>\n </div>\n );\n}\n","import { EntityCollection, makePropertiesEditable } from \"@firecms/core\";\n\nexport const productsCollectionTemplate: EntityCollection = {\n id: \"products\",\n path: \"products\",\n name: \"Products\",\n singularName: \"Product\",\n icon: \"shopping_cart\",\n description: \"List of the products currently sold in your shop\",\n properties: makePropertiesEditable({\n name: {\n dataType: \"string\",\n name: \"Name\",\n description: \"Name of this product\",\n validation: {\n required: true\n }\n },\n brand: {\n dataType: \"string\",\n name: \"Brand\",\n validation: {\n required: true\n }\n },\n description: {\n dataType: \"string\",\n name: \"Description\",\n description: \"Description of this product, supports markdown\",\n markdown: true\n },\n main_image: {\n dataType: \"string\",\n name: \"Image\",\n storage: {\n storagePath: \"images\",\n acceptedFiles: [\"image/*\"],\n },\n description: \"Upload field for images\"\n },\n available: {\n dataType: \"boolean\",\n name: \"Available\",\n columnWidth: 100,\n description: \"Is this product available in the website\"\n },\n price: {\n dataType: \"number\",\n name: \"Price\",\n validation: {\n requiredMessage: \"You must set a positive price\",\n min: 0\n }\n },\n images: {\n dataType: \"array\",\n name: \"Images\",\n hideFromCollection: true,\n of: {\n dataType: \"string\",\n storage: {\n storagePath: \"images\",\n acceptedFiles: [\"image/*\"]\n }\n }\n },\n related_products: {\n dataType: \"array\",\n name: \"Related products\",\n description: \"Products related to this one\",\n of: {\n dataType: \"reference\",\n path: \"products\"\n }\n },\n metadata: {\n name: \"Metadata\",\n description: \"This is an example of a map property\",\n dataType: \"map\",\n keyValue: true\n },\n added_on: {\n dataType: \"date\",\n name: \"Added on\",\n autoValue: \"on_create\"\n }\n })\n};\n","import { EntityCollection, makePropertiesEditable } from \"@firecms/core\";\n\nexport const blogCollectionTemplate:EntityCollection = {\n id: \"blog\",\n path: \"blog\",\n name: \"Blog\",\n singularName: \"Blog entry\",\n icon: \"article\",\n description: \"A collection of blog entries\",\n defaultSize: \"l\",\n properties: makePropertiesEditable({\n name: {\n name: \"Name\",\n validation: { required: true },\n dataType: \"string\"\n },\n header_image: {\n name: \"Header image\",\n dataType: \"string\",\n storage: {\n storagePath: \"images\",\n acceptedFiles: [\"image/*\"],\n metadata: {\n cacheControl: \"max-age=1000000\"\n }\n }\n },\n content: {\n name: \"Content\",\n description: \"Content blocks for the blog entry\",\n validation: { required: true },\n dataType: \"array\",\n oneOf: {\n typeField: \"type\",\n valueField: \"value\",\n properties: {\n text: {\n dataType: \"string\",\n name: \"Text\",\n markdown: true\n },\n quote: {\n dataType: \"string\",\n name: \"Quote\",\n multiline: true\n },\n images: {\n name: \"Images\",\n dataType: \"array\",\n of: {\n dataType: \"string\",\n storage: {\n storagePath: \"images\",\n acceptedFiles: [\"image/*\"],\n metadata: {\n cacheControl: \"max-age=1000000\"\n }\n }\n },\n description: \"This fields allows uploading multiple images at once and reordering\"\n },\n products: {\n name: \"Products\",\n dataType: \"array\",\n of: {\n dataType: \"reference\",\n path: \"products\",\n previewProperties: [\"name\", \"main_image\"]\n }\n }\n },\n propertiesOrder: [\"text\", \"quote\", \"images\", \"products\"]\n }\n },\n created_on: {\n name: \"Created on\",\n dataType: \"date\",\n autoValue: \"on_create\"\n },\n status: {\n name: \"Status\",\n validation: { required: true },\n dataType: \"string\",\n enumValues: {\n published: {\n id: \"published\",\n label: \"Published\",\n },\n draft: \"Draft\"\n },\n defaultValue: \"draft\"\n },\n publish_date: {\n name: \"Publish date\",\n dataType: \"date\",\n clearable: true\n },\n reviewed: {\n name: \"Reviewed\",\n dataType: \"boolean\"\n },\n tags: {\n name: \"Tags\",\n description: \"Example of generic array\",\n dataType: \"array\",\n of: {\n dataType: \"string\",\n previewAsTag: true\n }\n }\n })\n};\n","import { EntityCollection, makePropertiesEditable } from \"@firecms/core\";\n\nexport const usersCollectionTemplate: EntityCollection = {\n id: \"users\",\n path: \"users\",\n name: \"Users\",\n singularName: \"User\",\n description: \"Registered users in the app/web\",\n icon: \"person\",\n properties: makePropertiesEditable({\n displayName: {\n name: \"Display name\",\n dataType: \"string\"\n },\n email: {\n name: \"Email\",\n dataType: \"string\",\n email: true\n },\n emailVerified: {\n name: \"Email verified\",\n dataType: \"boolean\"\n },\n phone: {\n name: \"Phone\",\n dataType: \"string\"\n },\n favourite_products: {\n name: \"Favourite products\",\n dataType: \"array\",\n of: {\n dataType: \"reference\",\n path: \"products\"\n }\n },\n photoURL: {\n name: \"Photo URL\",\n dataType: \"string\",\n url: \"image\"\n }\n }),\n};\n","import { EntityCollection } from \"@firecms/core\";\n\nexport const pagesCollectionTemplate: EntityCollection = {\n id: \"pages\",\n path: \"pages\",\n name: \"Pages\",\n singularName: \"Page\",\n icon: \"insert_drive_file\",\n description: \"List of website pages that can be edited here\",\n properties: {\n title: {\n dataType: \"string\",\n name: \"Page Title\",\n validation: { required: true }\n },\n slug: {\n dataType: \"string\",\n name: \"URL Slug\",\n validation: {\n required: true,\n unique: true,\n matches: \"^[a-z0-9]+(?:-[a-z0-9]+)*$\",\n matchesMessage: \"Must be lowercase, alphanumeric, and hyphenated\"\n }\n },\n hero_section: {\n dataType: \"map\",\n name: \"Hero Section\",\n properties: {\n headline: {\n dataType: \"string\",\n name: \"Headline\",\n validation: { required: true }\n },\n subhead: {\n dataType: \"string\",\n name: \"Subheadline\"\n },\n background_image: {\n dataType: \"string\",\n name: \"Background Image\",\n storage: {\n storagePath: \"page_hero/images\",\n acceptedFiles: [\"image/*\"],\n }\n },\n call_to_action: {\n dataType: \"string\",\n name: \"Call to Action\"\n },\n call_to_action_link: {\n dataType: \"string\",\n name: \"CTA Link\",\n url: true\n }\n }\n },\n content: {\n dataType: \"array\",\n name: \"Content\",\n oneOf: {\n properties: {\n section: {\n dataType: \"map\",\n name: \"Section\",\n properties: {\n title: {\n dataType: \"string\",\n name: \"Section Title\",\n validation: { required: true }\n },\n content: {\n dataType: \"string\",\n name: \"Section Content\",\n markdown: true\n },\n image: {\n dataType: \"string\",\n name: \"Section Image\",\n storage: {\n storagePath: \"page_sections/images\",\n acceptedFiles: [\"image/*\"]\n }\n },\n link: {\n dataType: \"string\",\n name: \"Section Link\",\n url: true\n }\n }\n },\n image: {\n dataType: \"string\",\n name: \"Image\",\n storage: {\n storagePath: \"page_sections/images\",\n acceptedFiles: [\"image/*\"]\n }\n },\n slider: {\n dataType: \"array\",\n name: \"Slider\",\n of: {\n dataType: \"map\",\n properties: {\n title: {\n dataType: \"string\",\n name: \"Title\",\n validation: { required: true }\n },\n image: {\n dataType: \"string\",\n storage: {\n storagePath: \"page_sections/images\",\n acceptedFiles: [\"image/*\"]\n }\n }\n }\n }\n },\n }\n }\n },\n sidebar: {\n dataType: \"map\",\n name: \"Sidebar\",\n properties: {\n title: {\n dataType: \"string\",\n name: \"Sidebar Title\",\n validation: { required: false }\n },\n content: {\n dataType: \"string\",\n name: \"Sidebar Content\",\n markdown: true\n }\n }\n },\n seo_metadata: {\n dataType: \"map\",\n name: \"SEO Metadata\",\n properties: {\n meta_title: {\n dataType: \"string\",\n name: \"Meta Title\"\n },\n meta_description: {\n dataType: \"string\",\n name: \"Meta Description\"\n },\n focus_keywords: {\n dataType: \"array\",\n name: \"Focus Keywords\",\n of: {\n dataType: \"string\"\n }\n }\n }\n },\n footer_override: {\n dataType: \"string\",\n name: \"Footer Override\",\n markdown: true\n },\n publish_date: {\n dataType: \"date\",\n name: \"Publish Date\",\n validation: { required: true }\n },\n last_updated: {\n dataType: \"date\",\n name: \"Last Updated\",\n autoValue: \"on_update\"\n },\n is_published: {\n dataType: \"boolean\",\n name: \"Is Published\",\n columnWidth: 100,\n description: \"Should this page be live on the site?\"\n }\n }\n};\n","import React, { 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-text-secondary dark:text-text-secondary-dark\",\n \"hover:border-primary-dark hover:text-primary-dark dark:hover:text-primary focus:ring-primary hover:ring-1 hover:ring-primary\",\n \"border-surface-400 dark:border-surface-600 \"\n )}\n >\n {icon}\n <div className={\"flex flex-col items-start\"}>\n\n <Typography variant={\"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 bg-surface-100/40 hover:bg-surface-100 dark:bg-surface-950 dark:bg-opacity-40 dark:bg-surface-950/40 dark:hover:bg-surface-950\"}\n // className={onHover ? \"bg-white dark:bg-surface-950\" : undefined}\n onClick={() => {\n collectionEditorController.editProperty({\n editedCollectionId: collection.id,\n parentCollectionIds,\n currentPropertiesOrder: getDefaultPropertiesOrder(collection),\n collection,\n existingEntities: tableController.data\n });\n }}>\n <AddIcon color={\"inherit\"}/>\n </div>\n </Tooltip>\n )\n}\n","import { AddIcon, Button } from \"@firecms/ui\";\nimport { useCollectionEditorController } from \"../useCollectionEditorController\";\n\nexport function NewCollectionButton() {\n const collectionEditorController = useCollectionEditorController();\n return <div className={\"bg-surface-50 dark:bg-surface-900 min-w-fit rounded\"}>\n <Button className={\"min-w-fit\"}\n 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","Typography","t4","t5","t6","t7","t8","VerticalSplitIcon","jsx","t9","Tooltip","Card","t10","t11","t12","t13","t14","SquareIcon","t15","t16","jsxs","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","IconForView","collectionIcon","filter","group","includes","ref","useAutoComplete","isSubcollection","customIdValue","customId","showErrors","IconButton","Chip","e","target","Boolean","t19","TextField","t20","t21","t22","FieldCaption","t23","t24","t25","t26","t27","Field","DebouncedTextField","t28","t29","t30","t31","t32","openEntityMode","t33","t34","t35","history","t36","v","t37","t38","BooleanSwitchWithLabel","t39","t40","t41","SettingsIcon","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","CloseIcon","t62","t63","t64","t65","t66","t67","t68","t69","description","t70","t71","t72","t73","t74","t75","t76","defaultSize","t77","map","_temp2","t78","Select","_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","SelectItem","t97","_temp3","t98","v_3","t99","collectionGroup","t100","t101","t102","t103","v_4","t104","textSearchEnabled","t105","t106","t107","t108","t109","ExpandablePanel","t110","t111","t112","height","t113","icon","t114","t115","SearchIconsView","t116","Dialog","t117","Container","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","Formex","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","ListIcon","Button","CircularProgress","AutorenewIcon","ArrayContainer","Paper","console","error","EnumEntry","memo","EnumEntryInternal","updateId","autoFocus","onDialogOpen","inferredEntry","shouldUpdateIdRef","idValue","labelValue","currentLabelRef","Badge","Fragment","areEqual","prevProps","nextProps","equal","EnumEntryDialog","open","onClose","idError","open_0","DialogTitle","DialogContent","DialogActions","SwitchControl","field","form","tooltip","size","allowIndeterminate","checked","formControlLabel","GeneralPropertyValidation","validationRequired","validationUnique","field_0","form_0","validationRequiredMessage","StringPropertyValidation","lowercase","matches","max","min","trim","uppercase","matchesError","matchesValue","serializeRegExp","matchesStringValue","validationLowercase","validationUppercase","validationTrim","field_1","form_1","validationLength","validationMin","validationMax","validationMatches","ArrayPropertyValidation","ValidationPanel","RuleIcon","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","CloudUploadIcon","entries","MultiSelectItem","preventDefault","stopPropagation","MultiSelect","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","PropertyConfigBadge","cardClickableMixin","cardSelectedMixin","cardMixin","ErrorBoundary","NonEditablePropertyPreview","FunctionsIcon","DoNotDisturbOnIcon","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","SortableContext","verticalListSortingStrategy","DndContext","closestCenter","PropertyTreeEntry","attributes","listeners","setNodeRef","transform","transition","isDragging","useSortable","CSS","Translate","zIndex","position","style","isPropertyInferred","fullId","fullIdPath","subtree","defaultBorderMixin","left","top","bottom","RemoveIcon","DragHandleIcon","MapPropertyField","propertyDialogOpen","setPropertyDialogOpen","setSelectedPropertyKey","selectedPropertyNamespace","setSelectedPropertyNamespace","currentPropertiesOrder","onPropertyCreated","propertiesPath","propertiesOrderPath","currentPropertiesOrder_0","p","deleteProperty","selectedPropertyFullId","selectedProperty","empty","propertiesOrder_0","namespace_0","AddIcon","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","SelectGroup","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","InfoLabel","hasValue","DeleteIcon","ConfirmationDialog","idRegEx","match","WIDGET_TYPE_MAP","text_field","switch","user_select","select","multi_select","number_input","number_select","multi_number_select","file_upload","multi_file_upload","reference","reference_as_string","multi_references","date_time","key_value","repeat","custom_array","block","WidgetSelectView","initialProperty","onValueChange","onOpenChange","allSupportedFields","concat","displayedWidgets","key_0","propertyConfig_1","baseProperty","baseFieldConfig","computedFieldConfig","fieldBackgroundDisabledMixin","fieldBackgroundHoverMixin","fieldBackgroundMixin","group_0","key_2","propertyConfig_2","groupKey","key_1","propertyConfig_0","WidgetSelectViewItem","shouldWarnChangingDataType","WarningIcon","camelCase","str","toLowerCase","parts","part","substring","GetCodeDialog","snackbarController","code","JSON5","stringify","collectionToCode","Highlight","themes","vsDark","navigator","clipboard","writeText","ContentCopyIcon","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","CodeIcon","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","Table","TableBody","subcollection","TableRow","editedCollectionId","TableCell","Alert","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","Icon","ImportFileUpload","TemplateButton","subtitle","CollectionEditorImportMapping","importConfig","setSelectedProperty","newPropertiesOrder_0","newHeadersMapping","headersMapping","setHeadersMapping","importData","importKey","fullId_0","propertyPath_0","d","inferredNewProperty","buildPropertyFromData","getInferenceType","onPropertyTypeChanged","property_2","importKey_0","isIdColumn","ImportNewPropertyFieldPreview","propertyKey_1","DataNewPropertiesMapping","p_0","PropertySelect","fieldId","newProperty","widget_0","PropertySelectItem","optionDisabled","CollectionEditorImportDataPreview","authController","useAuthController","loading","setLoading","loadEntities","mappedData","convertDataToEntity","idColumn","defaultValues","setEntities","selectionController","useSelectionController","CircularProgressCenter","entities","dataLoading","noMoreToLoad","EntityCollectionTable","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","Tabs","Tab","View","ImportSaveInProgress","importedCollection","removeUndefined","validate","ErrorView","ArrowBackIcon","LoadingButton","CheckIcon","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","Menu","MoreVertIcon","MenuItem","event_0","CollectionViewHeaderAction","onHover","PropertyAddColumnComponent","getDefaultPropertiesOrder","NewCollectionButton","EditorCollectionActionStart","saveDefaultFilterButton","getObjectOrNull","filterValues","sortBy","SaveIcon","clearFilter","setFilterValues","setSortBy","UndoIcon","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.umd.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 text-text-secondary dark:text-text-secondary-dark\">\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 text-text-secondary dark:text-text-secondary-dark\">\n <RuleIcon/>\n <Typography variant={\"subtitle2\"}\n className=\"ml-4\">\n Validation\n </Typography>\n </div>\n }>\n\n {children}\n\n </ExpandablePanel>\n )\n}\n","import React, { useMemo } from \"react\";\nimport { getIn, useFormex } from \"@firecms/formex\";\nimport { EnumValueConfig, resolveEnumValues, useSnackbarController } from \"@firecms/core\";\nimport { Select, SelectItem } from \"@firecms/ui\";\nimport { EnumForm } from \"../EnumForm\";\nimport { StringPropertyValidation } from \"./validation/StringPropertyValidation\";\nimport { ArrayPropertyValidation } from \"./validation/ArrayPropertyValidation\";\nimport { ValidationPanel } from \"./validation/ValidationPanel\";\nimport { PropertyWithId } from \"../PropertyEditView\";\n\nexport function EnumPropertyField({\n multiselect,\n updateIds,\n disabled,\n showErrors,\n allowDataInference,\n getData\n }: {\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 text-text-secondary dark:text-text-secondary-dark\">\n <CloudUploadIcon/>\n <Typography variant={\"subtitle2\"}\n className=\"ml-4\">\n File upload config\n </Typography>\n </div>\n }>\n\n <div className={\"grid grid-cols-12 gap-2 p-4\"}>\n\n <div className={\"col-span-12\"}>\n\n <MultiSelect\n className={\"w-full\"}\n placeholder={\"All file types allowed\"}\n disabled={disabled}\n name={acceptedFiles}\n value={fileTypesValue ?? []}\n onValueChange={handleTypesChange}\n label={allFileTypesSelected ? undefined : \"Allowed file types\"}\n renderValues={(selected) => {\n if (!selected || selected.length === 0) return \"All file types allowed\";\n return selected.map((v: string) => fileTypes[v])\n .filter((v: string) => Boolean(v))\n .join(\", \");\n }}>\n\n {Object.entries(fileTypes).map(([value, label]) => (\n <MultiSelectItem key={value} value={value} className={\"flex items-center gap-2\"}>\n {/*<Checkbox*/}\n {/* checked={allFileTypesSelected || fileTypesValue.indexOf(value) > -1}/>*/}\n <div className={\"flex-grow\"}>\n {label}\n </div>\n <Button size={\"small\"}\n variant={\"text\"}\n onClick={(e) => {\n e.preventDefault();\n e.stopPropagation();\n return setFieldValue(acceptedFiles, [value]);\n }}>\n Only\n </Button>\n </MultiSelectItem>\n ))}\n\n </MultiSelect>\n </div>\n\n <div className={\"col-span-12\"}>\n <Field name={fileName}\n as={DebouncedTextField}\n label={\"File name\"}\n size={\"small\"}\n disabled={hasFilenameCallback || disabled}\n value={hasFilenameCallback ? \"-\" : fileNameValue}\n />\n </div>\n <div className={\"col-span-12\"}>\n <Field name={storagePath}\n as={DebouncedTextField}\n label={\"Storage path\"}\n disabled={hasStoragePathCallback || disabled}\n size={\"small\"}\n value={hasStoragePathCallback ? \"-\" : storagePathValue}\n />\n <Typography variant={\"caption\"} className={\"ml-3.5 mt-1 mb-2\"}>\n <p>You can use the following placeholders in\n the file name\n and storage path values:</p>\n <ul>\n <li>{\"{file} - Full name of the uploaded file\"}</li>\n <li>{\"{file.name} - Name of the uploaded file without extension\"}</li>\n <li>{\"{file.ext} - Extension of the uploaded file\"}</li>\n <li>{\"{entityId} - ID of the entity\"}</li>\n <li>{\"{propertyKey} - ID of this field\"}</li>\n <li>{\"{path} - Path of this entity\"}</li>\n <li>{\"{rand} - Random value used to avoid name collisions\"}</li>\n </ul>\n </Typography>\n\n <Field name={storeUrl}\n type=\"checkbox\">\n {({\n field,\n form\n }: FormexFieldProps) => {\n return <SwitchControl\n label={\"Save URL instead of storage path\"}\n disabled={existing || disabled}\n form={form}\n field={field}/>\n }}\n </Field>\n\n <Typography variant={\"caption\"} className={\"ml-3.5 mt-1 mb-2\"}>\n Turn this setting on, if you prefer to save\n the download\n URL of the uploaded file instead of the\n storage path.\n You can only change this prop upon creation.\n </Typography>\n </div>\n\n <div className={\"col-span-12\"}>\n <DebouncedTextField name={maxSize}\n type={\"number\"}\n label={\"Max size (in bytes)\"}\n size={\"small\"}\n value={maxSizeValue !== undefined && maxSizeValue !== null ? maxSizeValue.toString() : \"\"}\n onChange={(e) => {\n const value = e.target.value;\n if (value === \"\") setFieldValue(maxSize, undefined);\n else setFieldValue(maxSize, parseInt(value));\n }}\n />\n </div>\n\n <div className={\"col-span-12 mt-4\"}>\n <Typography variant={\"subtitle2\"}\n color={\"secondary\"}\n className={\"mb-2 block\"}>\n Image Resize Configuration\n </Typography>\n <Typography variant={\"caption\"} className={\"mb-2 block text-xs\"}>\n Automatically resize and optimize images before upload (JPEG, PNG, WebP only)\n </Typography>\n </div>\n\n <div className={\"col-span-6\"}>\n <DebouncedTextField\n name={imageResizeMaxWidth}\n type={\"number\"}\n label={\"Max width (px)\"}\n size={\"small\"}\n disabled={disabled}\n value={imageResizeMaxWidthValue !== undefined && imageResizeMaxWidthValue !== null ? imageResizeMaxWidthValue.toString() : \"\"}\n onChange={(e) => {\n const value = e.target.value;\n if (value === \"\") setFieldValue(imageResizeMaxWidth, undefined);\n else setFieldValue(imageResizeMaxWidth, parseInt(value));\n }}\n />\n </div>\n\n <div className={\"col-span-6\"}>\n <DebouncedTextField\n name={imageResizeMaxHeight}\n type={\"number\"}\n label={\"Max height (px)\"}\n size={\"small\"}\n disabled={disabled}\n value={imageResizeMaxHeightValue !== undefined && imageResizeMaxHeightValue !== null ? imageResizeMaxHeightValue.toString() : \"\"}\n onChange={(e) => {\n const value = e.target.value;\n if (value === \"\") setFieldValue(imageResizeMaxHeight, undefined);\n else setFieldValue(imageResizeMaxHeight, parseInt(value));\n }}\n />\n </div>\n\n <div className={\"col-span-6\"}>\n <Select\n disabled={disabled}\n name={imageResizeMode}\n fullWidth\n size={\"medium\"}\n value={imageResizeModeValue || \"cover\"}\n onValueChange={(value) => setFieldValue(imageResizeMode, value || \"cover\")}\n label={\"Resize mode\"}\n renderValue={(selected) => {\n if (!selected) return \"Cover\";\n return selected === \"contain\" ? \"Contain (fit within bounds)\" : \"Cover (fill bounds, may crop)\";\n }}>\n <SelectItem value=\"contain\">\n Contain (fit within bounds)\n </SelectItem>\n <SelectItem value=\"cover\">\n Cover (fill bounds, may crop)\n </SelectItem>\n </Select>\n </div>\n\n <div className={\"col-span-6\"}>\n <Select\n disabled={disabled}\n size={\"medium\"}\n fullWidth\n name={imageResizeFormat}\n value={imageResizeFormatValue || \"original\"}\n onValueChange={(value) => setFieldValue(imageResizeFormat, value || \"original\")}\n label={\"Output format\"}\n renderValue={(selected) => {\n if (!selected) return \"Original\";\n return selected.charAt(0).toUpperCase() + selected.slice(1);\n }}>\n <SelectItem value=\"original\">\n Original (keep same format)\n </SelectItem>\n <SelectItem value=\"jpeg\">\n JPEG\n </SelectItem>\n <SelectItem value=\"png\">\n PNG\n </SelectItem>\n <SelectItem value=\"webp\">\n WebP (best compression)\n </SelectItem>\n </Select>\n </div>\n\n <div className={\"col-span-12\"}>\n <DebouncedTextField\n name={imageResizeQuality}\n type={\"number\"}\n label={\"Quality (0-100)\"}\n size={\"small\"}\n disabled={disabled}\n value={imageResizeQualityValue !== undefined && imageResizeQualityValue !== null ? imageResizeQualityValue.toString() : \"\"}\n onChange={(e) => {\n const value = e.target.value;\n if (value === \"\") setFieldValue(imageResizeQuality, undefined);\n else {\n const numValue = parseInt(value);\n if (numValue >= 0 && numValue <= 100) {\n setFieldValue(imageResizeQuality, numValue);\n }\n }\n }}\n />\n <Typography variant={\"caption\"} className={\"ml-3.5 mt-1 mb-2\"}>\n Higher quality = larger file size. Recommended: 80-90 for photos, 90-100 for graphics\n </Typography>\n </div>\n\n </div>\n </ExpandablePanel>\n\n </div>\n\n <div className={\"col-span-12\"}>\n\n <ValidationPanel>\n {!multiple && <div className={\"grid grid-cols-12 gap-2\"}>\n <GeneralPropertyValidation disabled={disabled}/>\n </div>}\n {multiple && <div className={\"col-span-12\"}>\n <ArrayPropertyValidation disabled={disabled}/>\n </div>}\n </ValidationPanel>\n\n </div>\n </>\n );\n}\n","import { isPropertyBuilder, Properties, PropertiesOrBuilders, Property, PropertyOrBuilder } from \"@firecms/core\";\n\nexport function editableProperty(property: PropertyOrBuilder): boolean {\n if (isPropertyBuilder(property)) {\n return false;\n } else {\n if (property.dataType === \"array\" && typeof property.of === \"function\")\n return false;\n else if (property.dataType === \"array\" && Array.isArray(property.of))\n return false;\n return property.editable === undefined ? true : Boolean(property.editable);\n }\n}\n\nexport function removeNonEditableProperties(properties: PropertiesOrBuilders<any>): Properties {\n return Object.entries(properties)\n .filter(([_, property]) => editableProperty(property))\n .map(([key, propertyOrBuilder]) => {\n const property = propertyOrBuilder as Property;\n if (!editableProperty(property)) {\n return undefined;\n } else if (property.dataType === \"map\" && property.properties) {\n return {\n [key]: {\n ...property,\n properties: removeNonEditableProperties(property.properties as PropertiesOrBuilders)\n }\n };\n } else {\n return { [key]: property };\n }\n })\n .filter((e) => Boolean(e))\n .reduce((a, b) => ({ ...a, ...b }), {}) as Properties;\n}\n","import {\n ErrorBoundary,\n getFieldConfig,\n isPropertyBuilder,\n Property,\n PropertyConfigBadge,\n PropertyOrBuilder,\n useCustomizationController,\n} from \"@firecms/core\";\nimport {\n cardClickableMixin,\n cardMixin,\n cardSelectedMixin,\n cls,\n DoNotDisturbOnIcon,\n FunctionsIcon,\n Paper,\n Typography,\n} from \"@firecms/ui\";\n\nimport { editableProperty } from \"../../utils/entities\";\n\nexport function PropertyFieldPreview({\n property,\n onClick,\n hasError,\n includeName,\n includeEditButton,\n selected\n }: {\n property: Property,\n hasError?: boolean,\n selected?: boolean,\n includeName?: boolean,\n includeEditButton?: boolean;\n onClick?: () => void\n}) {\n\n const { propertyConfigs } = useCustomizationController();\n\n const propertyConfig = getFieldConfig(property, propertyConfigs);\n const disabled = !editableProperty(property);\n\n const borderColorClass = hasError\n ? \"border-red-500 dark:border-red-500 border-opacity-100 dark:border-opacity-100 border-red-500/100 dark:border-red-500/100 ring-0 dark:ring-0\"\n : (selected ? \"border-primary\" : \"border-transparent\");\n\n return <ErrorBoundary>\n <div\n onClick={onClick}\n className=\"flex flex-row w-full cursor-pointer\">\n <div className={\"m-4\"}>\n <PropertyConfigBadge propertyConfig={propertyConfig}/>\n </div>\n <Paper\n className={cls(\n \"m-1\",\n \"border\",\n \"pl-2 w-full flex flex-row gap-4 items-center\",\n cardMixin,\n onClick ? cardClickableMixin : \"\",\n selected ? cardSelectedMixin : \"\",\n \"flex-grow p-4 border transition-colors duration-200\",\n borderColorClass\n )}\n >\n\n <div className=\"w-full flex flex-col\">\n\n {includeName &&\n <ErrorBoundary>\n <Typography variant=\"label\"\n component=\"span\"\n className=\"flex-grow pr-2\">\n {property.name\n ? property.name\n : \"\\u00a0\"\n }\n </Typography>\n </ErrorBoundary>}\n\n <div className=\"flex flex-row items-center\">\n <ErrorBoundary>\n <Typography className=\"flex-grow pr-2\"\n variant={includeName ? \"body2\" : \"label\"}\n component=\"span\"\n color=\"secondary\">\n {propertyConfig?.name}\n </Typography>\n </ErrorBoundary>\n <ErrorBoundary>\n <Typography variant=\"body2\"\n component=\"span\"\n color=\"disabled\">\n {property.dataType}\n </Typography>\n </ErrorBoundary>\n\n </div>\n </div>\n\n {includeEditButton && <Typography variant={\"button\"}>\n EDIT\n </Typography>}\n\n </Paper>\n </div>\n </ErrorBoundary>\n}\n\nexport function NonEditablePropertyPreview({\n name,\n selected,\n onClick,\n property\n }: {\n name: string,\n selected: boolean,\n onClick?: () => void,\n property?: PropertyOrBuilder\n}) {\n\n const { propertyConfigs } = useCustomizationController();\n\n const propertyConfig = !isPropertyBuilder(property) && property ? getFieldConfig(property, propertyConfigs) : undefined;\n\n return (\n <div\n onClick={onClick}\n className=\"flex flex-row w-full cursor-pointer\">\n <div className={\"relative m-4\"}>\n {propertyConfig && <PropertyConfigBadge propertyConfig={propertyConfig}/>}\n {!propertyConfig && <div\n className={\"h-8 w-8 flex items-center justify-center rounded-full shadow text-white bg-surface-500\"}>\n <FunctionsIcon color={\"inherit\"} size={\"small\"}/>\n </div>}\n <DoNotDisturbOnIcon color={\"disabled\"} size={\"small\"} className={\"absolute -right-2 -top-2\"}/>\n </div>\n <Paper\n className={cls(\n \"pl-2 w-full flex flex-row gap-4 items-center\",\n cardMixin,\n onClick ? cardClickableMixin : \"\",\n selected ? cardSelectedMixin : \"\",\n \"flex-grow p-4 border transition-colors duration-200\",\n selected ? \"border-primary\" : \"border-transparent\")}\n >\n\n <div className=\"w-full flex flex-col\">\n <Typography variant=\"label\"\n component=\"span\"\n className=\"flex-grow pr-2\">\n {property?.name\n ? property.name\n : name\n }\n </Typography>\n\n <div className=\"flex flex-row items-center\">\n {propertyConfig && <Typography className=\"flex-grow pr-2\"\n variant={\"body2\"}\n component=\"span\"\n color=\"secondary\">\n {propertyConfig?.name}\n </Typography>}\n\n {property && !isPropertyBuilder(property) && <ErrorBoundary>\n <Typography variant=\"body2\"\n component=\"span\"\n color=\"disabled\">\n {property.dataType}\n </Typography>\n </ErrorBoundary>}\n\n {property && isPropertyBuilder(property) && <ErrorBoundary>\n <Typography variant=\"body2\"\n component=\"span\"\n color=\"disabled\">\n This property is defined as a property builder in code\n </Typography>\n </ErrorBoundary>}\n\n {!property && <ErrorBoundary>\n <Typography variant=\"body2\"\n component=\"span\"\n color=\"disabled\">\n This field is defined as an additional field in code\n </Typography>\n </ErrorBoundary>}\n\n </div>\n\n {/*<div className=\"flex flex-row text-xs\">*/}\n {/* <Typography className=\"flex-grow pr-2\"*/}\n {/* variant=\"body2\"*/}\n {/* component=\"span\"*/}\n {/* color=\"secondary\">*/}\n {/* This field can only be edited in code*/}\n {/* </Typography>*/}\n {/*</div>*/}\n </div>\n\n </Paper>\n </div>)\n}\n","import React from \"react\";\nimport equal from \"react-fast-compare\"\n\nimport {\n AdditionalFieldDelegate,\n CMSType,\n isPropertyBuilder,\n PropertiesOrBuilders,\n PropertyOrBuilder\n} from \"@firecms/core\";\nimport { AutorenewIcon, defaultBorderMixin, DragHandleIcon, IconButton, RemoveIcon, Tooltip } from \"@firecms/ui\";\nimport { NonEditablePropertyPreview, PropertyFieldPreview } from \"./PropertyFieldPreview\";\nimport {\n closestCenter,\n DndContext,\n DragEndEvent,\n KeyboardSensor,\n PointerSensor,\n useSensor,\n useSensors\n} from \"@dnd-kit/core\";\nimport {\n SortableContext,\n sortableKeyboardCoordinates,\n useSortable,\n verticalListSortingStrategy\n} from \"@dnd-kit/sortable\";\nimport { restrictToVerticalAxis } from \"@dnd-kit/modifiers\";\n\nimport { CSS } from \"@dnd-kit/utilities\";\nimport { getFullId, getFullIdPath } from \"./util\";\nimport { editableProperty } from \"../../utils/entities\";\n\nexport const PropertyTree = React.memo(\n function PropertyTree<M extends {\n [Key: string]: CMSType\n }>({\n namespace,\n selectedPropertyKey,\n onPropertyClick,\n properties,\n propertiesOrder: propertiesOrderProp,\n additionalFields,\n errors,\n onPropertyMove,\n onPropertyRemove,\n className,\n inferredPropertyKeys,\n collectionEditable\n }: {\n namespace?: string;\n selectedPropertyKey?: string;\n onPropertyClick?: (propertyKey: string, namespace?: string) => void;\n properties: PropertiesOrBuilders<M>;\n propertiesOrder?: string[];\n additionalFields?: AdditionalFieldDelegate<M>[];\n errors: Record<string, any>;\n onPropertyMove?: (propertiesOrder: string[], namespace?: string) => void;\n onPropertyRemove?: (propertyKey: string, namespace?: string) => void;\n className?: string;\n inferredPropertyKeys?: string[];\n collectionEditable: boolean;\n }) {\n\n const propertiesOrder = propertiesOrderProp ?? Object.keys(properties);\n\n const sensors = useSensors(\n useSensor(PointerSensor, {\n activationConstraint: {\n distance: 5,\n }\n }),\n useSensor(KeyboardSensor, {\n coordinateGetter: sortableKeyboardCoordinates,\n })\n );\n\n const handleDragEnd = (event: DragEndEvent) => {\n const {\n active,\n over\n } = event;\n\n if (!over || active.id === over.id) {\n return;\n }\n\n const activeId = String(active.id);\n const overId = String(over.id);\n\n // Extract property keys from the full IDs\n const activeKey = activeId.includes(\".\") ? activeId.split(\".\").pop() : activeId;\n const overKey = overId.includes(\".\") ? overId.split(\".\").pop() : overId;\n\n if (!activeKey || !overKey) return;\n\n const oldIndex = propertiesOrder.indexOf(activeKey);\n const newIndex = propertiesOrder.indexOf(overKey);\n\n if (oldIndex !== -1 && newIndex !== -1) {\n const newPropertiesOrder = [...propertiesOrder];\n const [removed] = newPropertiesOrder.splice(oldIndex, 1);\n newPropertiesOrder.splice(newIndex, 0, removed);\n\n if (onPropertyMove) {\n onPropertyMove(newPropertiesOrder, namespace);\n }\n }\n };\n\n const items = propertiesOrder.map(key => getFullId(key, namespace));\n\n return (\n <DndContext\n sensors={sensors}\n collisionDetection={closestCenter}\n onDragEnd={handleDragEnd}\n modifiers={[restrictToVerticalAxis]}\n >\n <SortableContext\n items={items}\n strategy={verticalListSortingStrategy}\n >\n <div className={className}>\n\n {propertiesOrder && propertiesOrder\n .map((propertyKey: string, index: number) => {\n const property = properties[propertyKey] as PropertyOrBuilder;\n const additionalField = additionalFields?.find(field => field.key === propertyKey);\n\n if (!property && !additionalField) {\n console.warn(`Property ${propertyKey} not found in properties or additionalFields`);\n return null;\n }\n\n const id = getFullId(propertyKey, namespace);\n\n return (\n <PropertyTreeEntry\n key={id}\n id={id}\n propertyKey={propertyKey}\n propertyOrBuilder={property}\n additionalField={additionalField}\n errors={errors}\n namespace={namespace}\n inferredPropertyKeys={inferredPropertyKeys}\n onPropertyMove={onPropertyMove}\n onPropertyRemove={onPropertyRemove}\n onPropertyClick={onPropertyClick}\n selectedPropertyKey={selectedPropertyKey}\n collectionEditable={collectionEditable}\n />\n );\n }).filter(Boolean)}\n </div>\n </SortableContext>\n </DndContext>\n );\n },\n equal\n);\n\nexport function PropertyTreeEntry({\n id,\n propertyKey,\n namespace,\n propertyOrBuilder,\n additionalField,\n selectedPropertyKey,\n errors,\n onPropertyClick,\n onPropertyMove,\n onPropertyRemove,\n inferredPropertyKeys,\n collectionEditable\n }: {\n id: string;\n propertyKey: string;\n namespace?: string;\n propertyOrBuilder: PropertyOrBuilder;\n additionalField?: AdditionalFieldDelegate<any>;\n selectedPropertyKey?: string;\n errors: Record<string, any>;\n onPropertyClick?: (propertyKey: string, namespace?: string) => void;\n onPropertyMove?: (propertiesOrder: string[], namespace?: string) => void;\n onPropertyRemove?: (propertyKey: string, namespace?: string) => void;\n inferredPropertyKeys?: string[];\n collectionEditable: boolean;\n}) {\n\n const {\n attributes,\n listeners,\n setNodeRef,\n transform,\n transition,\n isDragging\n } = useSortable({\n id\n });\n\n const style = {\n // Key change: use Translate instead of Transform to prevent stretching\n transform: CSS.Translate.toString(transform),\n transition,\n zIndex: isDragging ? 10 : undefined,\n position: \"relative\" as const,\n };\n\n const isPropertyInferred = inferredPropertyKeys?.includes(namespace ? `${namespace}.${propertyKey}` : propertyKey);\n const fullId = id;\n const fullIdPath = getFullIdPath(propertyKey, namespace);\n const hasError = fullIdPath in errors;\n\n let subtree;\n if (typeof propertyOrBuilder === \"object\") {\n const property = propertyOrBuilder;\n if (property.dataType === \"map\" && property.properties) {\n subtree = <PropertyTree\n selectedPropertyKey={selectedPropertyKey}\n namespace={fullId}\n properties={property.properties}\n propertiesOrder={property.propertiesOrder}\n errors={errors}\n onPropertyClick={onPropertyClick}\n onPropertyMove={onPropertyMove}\n onPropertyRemove={onPropertyRemove}\n collectionEditable={collectionEditable}\n />\n }\n }\n\n const selected = selectedPropertyKey === fullId;\n const editable = propertyOrBuilder && ((collectionEditable && !isPropertyBuilder(propertyOrBuilder)) || editableProperty(propertyOrBuilder));\n\n return (\n <div\n ref={setNodeRef}\n style={style}\n className=\"relative -ml-8\"\n >\n <div className=\"relative\">\n {subtree && <div\n className={\"absolute border-l \" + defaultBorderMixin}\n style={{\n left: \"32px\",\n top: \"64px\",\n bottom: \"16px\"\n }}/>}\n\n <div>\n {!isPropertyBuilder(propertyOrBuilder) && !additionalField && editable\n ? <PropertyFieldPreview\n property={propertyOrBuilder}\n onClick={onPropertyClick ? () => onPropertyClick(propertyKey, namespace) : undefined}\n includeName={true}\n selected={selected}\n hasError={hasError}/>\n : <NonEditablePropertyPreview name={propertyKey}\n property={propertyOrBuilder}\n onClick={onPropertyClick ? () => onPropertyClick(propertyKey, namespace) : undefined}\n selected={selected}/>}\n </div>\n\n <div className=\"absolute top-2 right-2 flex flex-row\">\n {isPropertyInferred && <Tooltip title={\"Inferred property\"}>\n <AutorenewIcon size=\"small\" className={\"p-2\"}/>\n </Tooltip>}\n\n {onPropertyRemove && !isPropertyInferred && <Tooltip title={\"Remove\"}\n asChild={true}>\n <IconButton size=\"small\"\n color=\"inherit\"\n onClick={() => onPropertyRemove(propertyKey, namespace)}>\n <RemoveIcon size={\"small\"}/>\n </IconButton>\n </Tooltip>}\n\n {onPropertyMove && <Tooltip title={\"Move\"}\n asChild={true}>\n <IconButton\n component={\"span\"}\n size=\"small\"\n {...attributes}\n {...listeners}\n >\n <DragHandleIcon size={\"small\"}/>\n </IconButton>\n </Tooltip>}\n\n </div>\n\n {subtree && <div className={\"ml-16\"}>{subtree}</div>}\n </div>\n </div>\n );\n}\n","import React, { useState } from \"react\";\nimport { FieldCaption, MapProperty, Property, PropertyConfig, } from \"@firecms/core\";\nimport { AddIcon, BooleanSwitchWithLabel, Button, Paper, Typography } from \"@firecms/ui\";\nimport { PropertyFormDialog } from \"../PropertyEditView\";\nimport { getIn, useFormex } from \"@firecms/formex\";\nimport { PropertyTree } from \"../PropertyTree\";\nimport { getFullId, idToPropertiesPath, namespaceToPropertiesOrderPath, namespaceToPropertiesPath } from \"../util\";\n\nexport function MapPropertyField({ disabled, getData, allowDataInference, propertyConfigs, collectionEditable }: {\n disabled: boolean;\n getData?: () => Promise<object[]>;\n allowDataInference: boolean;\n propertyConfigs: Record<string, PropertyConfig>,\n collectionEditable: boolean;\n}) {\n\n const {\n values,\n setFieldValue\n } = useFormex<MapProperty>();\n\n const [propertyDialogOpen, setPropertyDialogOpen] = useState<boolean>(false);\n const [selectedPropertyKey, setSelectedPropertyKey] = useState<string | undefined>();\n const [selectedPropertyNamespace, setSelectedPropertyNamespace] = useState<string | undefined>();\n\n const propertiesOrder = values.propertiesOrder ?? Object.keys(values.properties ?? {});\n const onPropertyCreated = ({\n id,\n property\n }: { id?: string, property: Property }) => {\n if (!id)\n throw Error();\n setFieldValue(\"properties\", {\n ...(values.properties ?? {}),\n [id]: property\n }, false);\n\n const currentPropertiesOrder = values.propertiesOrder ?? Object.keys(values.properties ?? {});\n const newPropertiesOrder = currentPropertiesOrder.includes(id) ? currentPropertiesOrder : [...currentPropertiesOrder, id];\n setFieldValue(\"propertiesOrder\", newPropertiesOrder, false);\n\n setPropertyDialogOpen(false);\n };\n\n const deleteProperty = (propertyKey?: string, namespace?: string) => {\n const fullId = propertyKey ? getFullId(propertyKey, namespace) : undefined;\n if (!fullId)\n throw Error(\"collection editor miss config\");\n\n const propertiesPath = idToPropertiesPath(fullId);\n const propertiesOrderPath = namespaceToPropertiesOrderPath(namespace);\n\n const currentPropertiesOrder: string[] = getIn(values, propertiesOrderPath) ?? Object.keys(getIn(values, namespaceToPropertiesPath(namespace)));\n\n setFieldValue(propertiesPath, undefined, false);\n setFieldValue(propertiesOrderPath, currentPropertiesOrder.filter((p) => p !== propertyKey), false);\n\n setPropertyDialogOpen(false);\n setSelectedPropertyKey(undefined);\n setSelectedPropertyNamespace(undefined);\n };\n\n const selectedPropertyFullId = selectedPropertyKey ? getFullId(selectedPropertyKey, selectedPropertyNamespace) : undefined;\n const selectedProperty = selectedPropertyFullId ? getIn(values.properties, selectedPropertyFullId.replaceAll(\".\", \".properties.\")) : undefined;\n\n const empty = !propertiesOrder || propertiesOrder.length < 1;\n\n const onPropertyMove = (propertiesOrder: string[], namespace?: string) => {\n setFieldValue(namespaceToPropertiesOrderPath(namespace), propertiesOrder, false);\n };\n\n return (\n <>\n <div className={\"col-span-12\"}>\n <div className=\"flex justify-between items-end my-4\">\n <Typography variant={\"subtitle2\"}>Properties in this group</Typography>\n <Button\n color=\"primary\"\n variant={\"outlined\"}\n onClick={() => setPropertyDialogOpen(true)}\n startIcon={<AddIcon/>}\n >\n Add property to {values.name ?? \"this group\"}\n </Button>\n </div>\n <Paper className=\"p-2 pl-8\">\n <PropertyTree\n properties={values.properties ?? {}}\n propertiesOrder={propertiesOrder}\n errors={{}}\n collectionEditable={collectionEditable}\n onPropertyClick={(propertyKey, namespace) => {\n setSelectedPropertyKey(propertyKey);\n setSelectedPropertyNamespace(namespace);\n setPropertyDialogOpen(true);\n }}\n onPropertyMove={onPropertyMove}/>\n\n {empty &&\n <Typography variant={\"label\"}\n className=\"h-full flex items-center justify-center p-4\">\n Add the first property to this group\n </Typography>}\n </Paper>\n </div>\n\n <div className={\"col-span-12\"}>\n <BooleanSwitchWithLabel\n position={\"start\"}\n size={\"medium\"}\n label=\"Spread children as columns\"\n onValueChange={(v) => setFieldValue(\"spreadChildren\", v)}\n value={values.spreadChildren ?? false}\n />\n <FieldCaption>\n Set this flag to true if you want to display the children of this group as individual columns. This\n will only work for top level groups.\n </FieldCaption>\n </div>\n\n <PropertyFormDialog\n inArray={false}\n forceShowErrors={false}\n open={propertyDialogOpen}\n allowDataInference={allowDataInference}\n collectionEditable={collectionEditable}\n onCancel={() => {\n setPropertyDialogOpen(false);\n setSelectedPropertyKey(undefined);\n setSelectedPropertyNamespace(undefined);\n }}\n onOkClicked={() => {\n setPropertyDialogOpen(false);\n setSelectedPropertyKey(undefined);\n setSelectedPropertyNamespace(undefined);\n }}\n getData={getData}\n onDelete={deleteProperty}\n propertyKey={selectedPropertyKey}\n propertyNamespace={selectedPropertyNamespace}\n property={selectedProperty}\n existingProperty={Boolean(selectedPropertyKey)}\n autoUpdateId={!selectedPropertyKey}\n autoOpenTypeSelect={!selectedPropertyKey}\n onPropertyChanged={onPropertyCreated}\n existingPropertyKeys={selectedPropertyKey ? undefined : propertiesOrder}\n propertyConfigs={propertyConfigs}\n />\n\n </>);\n}\n","import React, { useState } from \"react\";\nimport { ArrayProperty, getFieldConfig, Property, PropertyConfig } from \"@firecms/core\";\nimport { Button, Paper, Typography } from \"@firecms/ui\";\nimport { Field, getIn, useFormex } from \"@firecms/formex\";\nimport { PropertyFormDialog } from \"../PropertyEditView\";\nimport { PropertyFieldPreview } from \"../PropertyFieldPreview\";\nimport { ArrayPropertyValidation } from \"./validation/ArrayPropertyValidation\";\nimport { ValidationPanel } from \"./validation/ValidationPanel\";\n\nexport function RepeatPropertyField({\n showErrors,\n existing,\n disabled,\n getData,\n allowDataInference,\n propertyConfigs,\n collectionEditable\n }: {\n showErrors: boolean,\n existing: boolean,\n disabled: boolean,\n getData?: () => Promise<object[]>;\n allowDataInference: boolean;\n propertyConfigs: Record<string, PropertyConfig>,\n collectionEditable: boolean;\n}) {\n\n const {\n values,\n handleChange,\n errors,\n setFieldValue,\n touched\n } = useFormex<ArrayProperty>();\n\n const [propertyDialogOpen, setPropertyDialogOpen] = useState(false);\n const ofProperty = getIn(values, \"of\");\n const ofPropertyError = getIn(touched, \"of\") && getIn(errors, \"of\");\n\n const onPropertyChanged = ({ id, property, namespace }:\n { id?: string, property: Property, namespace?: string }) => {\n setFieldValue(\"of\", property);\n };\n\n const widget = ofProperty && getFieldConfig(ofProperty, propertyConfigs);\n return (\n <>\n <div className={\"col-span-12\"}>\n <Typography variant={\"subtitle2\"}>\n Repeat component\n </Typography>\n <Field\n name={\"of\"}\n value={ofProperty}\n // validate={(property: Property) => {\n // return property?.dataType ? undefined : \"You need to specify a repeat field\";\n // }}\n >\n {({}) => (\n <Paper className=\"p-2 mt-4\">\n\n {ofProperty && <PropertyFieldPreview\n property={ofProperty}\n onClick={disabled ? undefined : () => setPropertyDialogOpen(true)}\n includeName={false}\n includeEditButton={true}\n selected={false}\n hasError={false}/>}\n\n {!disabled && !ofProperty && <Button variant={\"text\"}\n size={\"large\"}\n color={ofPropertyError ? \"error\" : \"primary\"}\n onClick={() => setPropertyDialogOpen(true)}>\n Edit {`${widget ? widget.name : \"repeat component\"}`}\n </Button>}\n\n <PropertyFormDialog\n inArray={true}\n open={propertyDialogOpen}\n existingProperty={existing}\n getData={getData}\n autoUpdateId={!existing}\n autoOpenTypeSelect={!existing}\n onOkClicked={() => setPropertyDialogOpen(false)}\n allowDataInference={allowDataInference}\n property={ofProperty}\n includeIdAndName={false}\n onPropertyChanged={onPropertyChanged}\n forceShowErrors={showErrors}\n propertyConfigs={propertyConfigs}\n collectionEditable={collectionEditable}\n />\n </Paper>\n )}\n </Field>\n\n </div>\n\n <div className={\"col-span-12\"}>\n\n <ValidationPanel>\n <ArrayPropertyValidation disabled={disabled}/>\n </ValidationPanel>\n\n </div>\n </>\n );\n}\n","import { Field, getIn, useFormex } from \"@firecms/formex\";\nimport { DebouncedTextField } from \"@firecms/ui\";\nimport { PropertyWithId } from \"../PropertyEditView\";\nimport React from \"react\";\nimport { FieldCaption, prettifyIdentifier, toSnakeCase } from \"@firecms/core\";\n\ntype CommonPropertyFieldsProps = {\n showErrors: boolean,\n disabledId: boolean,\n disabled: boolean;\n isNewProperty: boolean;\n autoUpdateId: boolean;\n};\n\nexport const CommonPropertyFields = React.forwardRef<HTMLDivElement, CommonPropertyFieldsProps>(\n function CommonPropertyFields({\n showErrors,\n disabledId,\n disabled,\n autoUpdateId,\n isNewProperty\n }, ref) {\n\n const {\n errors,\n values,\n setFieldValue,\n setFieldTouched,\n touched,\n validate\n } = useFormex<PropertyWithId>();\n\n const name = \"name\";\n const nameError = showErrors && getIn(errors, name);\n\n const id = \"id\";\n const idError = showErrors && getIn(errors, id);\n\n const description = \"description\";\n const descriptionError = showErrors && getIn(errors, description);\n\n return (\n <div className={\"flex flex-col gap-2 col-span-12\"}>\n\n <div>\n <Field\n name={name}\n inputRef={ref}\n as={DebouncedTextField}\n value={values[name]}\n onChange={(e: any) => {\n const newNameValue = e.target.value;\n const idTouched = getIn(touched, id);\n if (!idTouched && autoUpdateId) {\n setFieldValue(id, newNameValue ? toSnakeCase(newNameValue) : \"\", false)\n }\n setFieldValue(name, newNameValue, true);\n setFieldTouched(name, true);\n }}\n style={{ fontSize: 20 }}\n placeholder={\"Field name\"}\n required\n disabled={disabled}\n error={Boolean(nameError)}/>\n\n <FieldCaption error={Boolean(nameError)}>\n {nameError}\n </FieldCaption>\n </div>\n\n <div>\n <Field\n name={id}\n as={DebouncedTextField}\n label={\"ID\"}\n value={values[id]}\n onChange={(e: any) => {\n const newIdValue = e.target.value;\n const nameTouched = getIn(touched, name);\n if (!nameTouched && autoUpdateId) {\n setFieldValue(name, newIdValue ? prettifyIdentifier(newIdValue) : \"\")\n }\n setFieldValue(id, newIdValue, true);\n setFieldTouched(id, true);\n }}\n disabled={disabledId || disabled}\n required\n size=\"small\"\n error={Boolean(idError)}/>\n <FieldCaption error={Boolean(idError)}>\n {idError}\n </FieldCaption>\n </div>\n\n <div>\n <Field name={description}\n as={DebouncedTextField}\n label={\"Description\"}\n disabled={disabled}\n error={Boolean(descriptionError)}/>\n <FieldCaption error={Boolean(descriptionError)}>\n {descriptionError}\n </FieldCaption>\n </div>\n\n </div>\n );\n\n }\n);\n","import React from \"react\";\nimport { StringPropertyValidation } from \"./validation/StringPropertyValidation\";\nimport { ValidationPanel } from \"./validation/ValidationPanel\";\nimport { getIn, useFormex } from \"@firecms/formex\";\n\nimport { TextField } from \"@firecms/ui\";\n\nexport function StringPropertyField({\n widgetId,\n disabled,\n showErrors\n }: {\n widgetId: \"text_field\" | \"multiline\" | \"email\" | \"user_select\";\n disabled: boolean;\n showErrors: boolean;\n}) {\n\n const { values, setFieldValue } = useFormex();\n\n return (\n <>\n <div className={\"col-span-12\"}>\n\n <ValidationPanel>\n\n {widgetId === \"text_field\" &&\n <StringPropertyValidation disabled={disabled}\n length={true}\n lowercase={true}\n matches={true}\n max={true}\n min={true}\n trim={true}\n uppercase={true}\n showErrors={showErrors}/>}\n {widgetId === \"user_select\" &&\n <StringPropertyValidation disabled={disabled}\n showErrors={showErrors}/>}\n\n {widgetId === \"multiline\" &&\n <StringPropertyValidation disabled={disabled}\n length={true}\n lowercase={true}\n max={true}\n min={true}\n trim={true}\n uppercase={true}\n showErrors={showErrors}/>}\n\n {widgetId === \"email\" &&\n <StringPropertyValidation disabled={disabled}\n max={true}\n min={true}\n trim={true}\n showErrors={showErrors}/>}\n\n </ValidationPanel>\n\n </div>\n\n <div className={\"col-span-12\"}>\n\n <TextField name={\"defaultValue\"}\n disabled={disabled}\n onChange={(e: any) => {\n setFieldValue(\"defaultValue\", e.target.value === \"\" ? undefined : e.target.value);\n }}\n label={\"Default value\"}\n value={getIn(values, \"defaultValue\") ?? \"\"}/>\n\n </div>\n </>\n );\n}\n","import React from \"react\";\nimport { Field, FormexFieldProps, getIn, useFormex } from \"@firecms/formex\";\n\nimport { GeneralPropertyValidation } from \"./validation/GeneralPropertyValidation\";\nimport { ValidationPanel } from \"./validation/ValidationPanel\";\nimport { SwitchControl } from \"../SwitchControl\";\n\nexport function BooleanPropertyField({ disabled }: {\n disabled: boolean;\n}) {\n const { values } = useFormex();\n const defaultValue = getIn(values, \"defaultValue\");\n\n return (\n <>\n <div className={\"col-span-12\"}>\n\n <ValidationPanel>\n <GeneralPropertyValidation disabled={disabled}/>\n </ValidationPanel>\n\n </div>\n\n <div className={\"col-span-12\"}>\n\n <Field\n name={\"defaultValue\"}>\n {({ field, form }: FormexFieldProps) => {\n return <SwitchControl\n label={defaultValue === null || defaultValue === undefined ? \"Default value not set\" : (\"Default value is \" + defaultValue.toString())}\n disabled={disabled}\n allowIndeterminate={true} field={field}\n form={form}/>\n }}\n </Field>\n\n </div>\n </>\n );\n}\n","import React, { useState } from \"react\";\nimport { AddIcon, Button, Paper, Typography } from \"@firecms/ui\";\nimport { getIn, useFormex } from \"@firecms/formex\";\nimport { OnPropertyChangedParams, PropertyFormDialog } from \"../PropertyEditView\";\nimport {\n getFullId,\n getFullIdPath,\n idToPropertiesPath,\n namespaceToPropertiesOrderPath,\n namespaceToPropertiesPath\n} from \"../util\";\nimport { PropertyTree } from \"../PropertyTree\";\nimport { ArrayProperty, PropertyConfig } from \"@firecms/core\";\n\nexport function BlockPropertyField({\n disabled,\n getData,\n allowDataInference,\n propertyConfigs,\n collectionEditable\n }: {\n disabled: boolean;\n getData?: () => Promise<object[]>;\n allowDataInference: boolean;\n propertyConfigs: Record<string, PropertyConfig>,\n collectionEditable: boolean;\n}) {\n\n const {\n values,\n setFieldValue\n } = useFormex<ArrayProperty>();\n\n const [propertyDialogOpen, setPropertyDialogOpen] = useState<boolean>(false);\n const [selectedPropertyKey, setSelectedPropertyKey] = useState<string | undefined>();\n const [selectedPropertyNamespace, setSelectedPropertyNamespace] = useState<string | undefined>();\n\n const onPropertyChanged = ({\n id,\n namespace,\n property\n }: OnPropertyChangedParams) => {\n if (!id)\n throw Error();\n\n setFieldValue(\"oneOf.\" + getFullIdPath(id, namespace), property, false);\n\n const currentPropertiesOrder = values.oneOf?.propertiesOrder ?? Object.keys(values.oneOf?.properties ?? {});\n const newPropertiesOrder = currentPropertiesOrder.includes(id) ? currentPropertiesOrder : [...currentPropertiesOrder, id];\n setFieldValue(\"oneOf.\" + namespaceToPropertiesOrderPath(namespace), newPropertiesOrder, false);\n setPropertyDialogOpen(false);\n };\n\n const selectedPropertyFullId = selectedPropertyKey ? getFullId(selectedPropertyKey, selectedPropertyNamespace) : undefined;\n const selectedProperty = selectedPropertyFullId ? getIn(values.oneOf?.properties, selectedPropertyFullId.replaceAll(\".\", \".properties.\")) : undefined;\n\n const deleteProperty = (propertyKey?: string, namespace?: string) => {\n const fullId = propertyKey ? getFullId(propertyKey, namespace) : undefined;\n if (!fullId)\n throw Error(\"collection editor miss config\");\n\n setFieldValue(`oneOf.${idToPropertiesPath(fullId)}`, undefined, false);\n const propertiesOrderPath = `oneOf.${namespaceToPropertiesOrderPath(namespace)}`;\n const currentPropertiesOrder: string[] = getIn(values, propertiesOrderPath) ?? Object.keys(getIn(values, namespaceToPropertiesPath(namespace)));\n setFieldValue(propertiesOrderPath, currentPropertiesOrder.filter((p) => p !== propertyKey), false);\n\n setPropertyDialogOpen(false);\n setSelectedPropertyKey(undefined);\n setSelectedPropertyNamespace(undefined);\n };\n\n const addChildButton = <Button\n autoFocus\n color=\"primary\"\n\n onClick={() => setPropertyDialogOpen(true)}\n startIcon={<AddIcon/>}\n >\n Add property to {values.name ?? \"this block\"}\n </Button>;\n\n const onPropertyMove = (propertiesOrder: string[], namespace?: string) => {\n setFieldValue(`oneOf.${namespaceToPropertiesOrderPath(namespace)}`, propertiesOrder, false);\n };\n\n return (\n <>\n <div className={\"col-span-12\"}>\n <div className={\"flex justify-between items-end mt-8 mb-4\"}>\n <Typography variant={\"subtitle2\"}>\n Properties in this block\n </Typography>\n {addChildButton}\n </div>\n <Paper className=\"p-2 pl-8\">\n\n <PropertyTree\n properties={values.oneOf?.properties ?? {}}\n propertiesOrder={values.oneOf?.propertiesOrder}\n errors={{}}\n collectionEditable={collectionEditable}\n onPropertyClick={disabled\n ? undefined\n : (propertyKey, namespace) => {\n setSelectedPropertyKey(propertyKey);\n setSelectedPropertyNamespace(namespace);\n setPropertyDialogOpen(true);\n }}\n onPropertyMove={disabled\n ? undefined\n : onPropertyMove}/>\n\n {!disabled && (values.oneOf?.propertiesOrder?.length === 0)&&\n <div className=\"h-full flex items-center justify-center p-4\">\n Add the first property to this block\n </div>}\n\n </Paper>\n </div>\n\n {!disabled && <PropertyFormDialog\n inArray={false}\n forceShowErrors={false}\n open={propertyDialogOpen}\n getData={getData}\n allowDataInference={allowDataInference}\n onCancel={() => {\n setPropertyDialogOpen(false);\n setSelectedPropertyKey(undefined);\n setSelectedPropertyNamespace(undefined);\n }}\n onOkClicked={() => {\n setPropertyDialogOpen(false);\n setSelectedPropertyKey(undefined);\n setSelectedPropertyNamespace(undefined);\n }}\n collectionEditable={collectionEditable}\n onDelete={deleteProperty}\n propertyKey={selectedPropertyKey}\n propertyNamespace={selectedPropertyNamespace}\n property={selectedProperty}\n existingProperty={Boolean(selectedPropertyKey)}\n autoUpdateId={!selectedPropertyKey}\n autoOpenTypeSelect={!selectedPropertyKey}\n onPropertyChanged={onPropertyChanged}\n existingPropertyKeys={selectedPropertyKey ? undefined : values.oneOf?.propertiesOrder}\n propertyConfigs={propertyConfigs}/>}\n\n </>);\n}\n","import React from \"react\";\n\nimport { Field, FormexFieldProps, getIn, useFormex } from \"@firecms/formex\";\nimport { DebouncedTextField } from \"@firecms/ui\";\nimport { GeneralPropertyValidation } from \"./GeneralPropertyValidation\";\nimport { SwitchControl } from \"../../SwitchControl\";\n\nexport function NumberPropertyValidation({ disabled }: {\n disabled: boolean;\n}) {\n\n const {\n values,\n handleChange\n } = useFormex();\n\n const validationMin = \"validation.min\";\n const validationMax = \"validation.max\";\n const validationLessThan = \"validation.lessThan\";\n const validationMoreThan = \"validation.moreThan\";\n const validationPositive = \"validation.positive\";\n const validationNegative = \"validation.negative\";\n const validationInteger = \"validation.integer\";\n\n return (\n\n <div className={\"grid grid-cols-12 gap-2\"}>\n <GeneralPropertyValidation disabled={disabled}/>\n\n\n <div className={\"col-span-6\"}>\n <DebouncedTextField value={getIn(values, validationMin)}\n label={\"Min value\"}\n name={validationMin}\n type=\"number\"\n size=\"small\"\n disabled={disabled}\n onChange={handleChange}/>\n </div>\n\n <div className={\"col-span-6\"}>\n <DebouncedTextField value={getIn(values, validationMax)}\n label={\"Max value\"}\n name={validationMax}\n type=\"number\"\n size=\"small\"\n\n disabled={disabled}\n onChange={handleChange}/>\n </div>\n\n\n <div className={\"col-span-6\"}>\n <DebouncedTextField\n value={getIn(values, validationLessThan)}\n label={\"Less than\"}\n name={validationLessThan}\n type=\"number\"\n size=\"small\"\n\n disabled={disabled}\n onChange={handleChange}/>\n </div>\n\n <div className={\"col-span-6\"}>\n <DebouncedTextField\n value={getIn(values, validationMoreThan)}\n label={\"More than\"}\n name={validationMoreThan}\n type=\"number\"\n size=\"small\"\n\n disabled={disabled}\n onChange={handleChange}/>\n </div>\n\n <div className={\"col-span-4\"}>\n <Field name={validationPositive}\n type=\"checkbox\">\n {({ field, form }: FormexFieldProps) => {\n return <SwitchControl\n label={\"Positive value\"}\n disabled={disabled}\n form={form}\n field={field}/>\n }}\n </Field>\n </div>\n <div className={\"col-span-4\"}>\n <Field name={validationNegative}\n type=\"checkbox\">\n {({ field, form }: FormexFieldProps) => {\n return <SwitchControl\n label={\"Negative value\"}\n disabled={disabled}\n form={form}\n field={field}/>\n }}\n </Field>\n </div>\n <div className={\"col-span-4\"}>\n <Field name={validationInteger}\n type=\"checkbox\">\n {({ field, form }: FormexFieldProps) => {\n return <SwitchControl\n label={\"Integer value\"}\n disabled={disabled}\n form={form}\n field={field}/>\n }}\n </Field>\n </div>\n </div>\n );\n}\n","import React from \"react\";\nimport { NumberPropertyValidation } from \"./validation/NumberPropertyValidation\";\nimport { ValidationPanel } from \"./validation/ValidationPanel\";\nimport { TextField } from \"@firecms/ui\";\nimport { getIn, useFormex } from \"@firecms/formex\";\n\nexport function NumberPropertyField({ disabled }: {\n disabled: boolean;\n}) {\n\n const { values, setFieldValue } = useFormex();\n\n return (\n <>\n\n <div className={\"col-span-12\"}>\n\n <ValidationPanel>\n <NumberPropertyValidation disabled={disabled}/>\n </ValidationPanel>\n\n </div>\n\n <div className={\"col-span-12\"}>\n\n <TextField name={\"defaultValue\"}\n disabled={disabled}\n type={\"number\"}\n onChange={(e: any) => {\n setFieldValue(\"defaultValue\", e.target.value === \"\" ? undefined : parseFloat(e.target.value));\n }}\n label={\"Default value\"}\n value={getIn(values, \"defaultValue\") ?? \"\"}/>\n\n </div>\n </>\n );\n}\n","import React from \"react\";\nimport { Field, getIn, useFormex } from \"@firecms/formex\";\nimport { FieldCaption, IconForView, NumberProperty, StringProperty, useNavigationController } from \"@firecms/core\";\nimport { CircularProgress, Select, SelectGroup, SelectItem, Typography, } from \"@firecms/ui\";\n\nexport function ReferencePropertyField({\n existing,\n multiple,\n disabled,\n showErrors,\n asString\n }: {\n existing: boolean,\n multiple: boolean,\n disabled: boolean,\n showErrors: boolean,\n asString?: boolean\n}) {\n\n const {\n values,\n handleChange,\n errors,\n } = useFormex<StringProperty | NumberProperty>();\n\n const navigation = useNavigationController();\n\n if (!navigation)\n return <div className={\"col-span-12\"}>\n <CircularProgress/>\n </div>;\n\n const pathPath = asString ? \"reference.path\" : (multiple ? \"of.path\" : \"path\") ;\n const pathValue: string | undefined = getIn(values, pathPath);\n const pathError: string | undefined = showErrors && getIn(errors, pathPath);\n\n return (\n <>\n <div className={\"col-span-12\"}>\n\n <Field name={pathPath}\n pathPath={pathPath}\n type=\"select\"\n disabled={(existing && Boolean(pathValue)) || disabled}\n value={pathValue}\n error={pathError}\n handleChange={handleChange}\n as={CollectionsSelect}/>\n\n </div>\n\n </>\n );\n}\n\nexport function CollectionsSelect({\n disabled,\n pathPath,\n value,\n handleChange,\n error,\n ...props\n }: {\n disabled: boolean,\n pathPath: string,\n value?: string,\n handleChange: (event: any) => void,\n error?: string\n}) {\n\n const navigation = useNavigationController();\n\n if (!navigation)\n return <div className={\"col-span-12\"}>\n <CircularProgress/>\n </div>;\n\n const collections = navigation?.collections ?? [];\n\n const groups: string[] = Array.from(new Set(\n Object.values(collections).map(e => e.group).filter(Boolean) as string[]\n ).values());\n\n const ungroupedCollections = collections.filter((col) => !col.group);\n\n return (\n <>\n <Select\n error={Boolean(error)}\n disabled={disabled}\n value={value ?? \"\"}\n position={\"item-aligned\"}\n name={pathPath}\n size={\"large\"}\n fullWidth={true}\n onChange={handleChange}\n label={\"Target collection\"}\n renderValue={(selected) => {\n const selectedCollection = collections.find(collection => collection.id === selected || collection.path === selected);\n if (!selectedCollection) return null;\n return (\n <div className=\"flex flex-row\">\n <IconForView collectionOrView={selectedCollection}/>\n <Typography\n variant={\"subtitle2\"}\n className=\"font-medium ml-4\">\n {selectedCollection?.name.toUpperCase()}\n </Typography>\n </div>)\n }}\n {...props}>\n\n {groups.flatMap((group) => (\n <SelectGroup label={group || \"Views\"}\n key={`group_${group}`}>\n {\n collections.filter(collection => collection.group === group)\n .map((collection) => {\n return <SelectItem\n key={`${collection.id ?? collection.path}-${group}`}\n value={collection.id ?? collection.path}>\n <div className=\"flex flex-row\">\n <IconForView collectionOrView={collection}/>\n <Typography\n variant={\"subtitle2\"}\n className=\"font-medium ml-4\">\n {collection?.name.toUpperCase()}\n </Typography>\n </div>\n </SelectItem>;\n })\n\n }\n </SelectGroup>\n ))}\n\n {ungroupedCollections && <SelectGroup label={\"Views\"}>\n {ungroupedCollections\n .map((collection) => {\n return <SelectItem key={collection.id ?? collection.path}\n value={collection.id ?? collection.path}>\n <div className=\"flex flex-row\">\n <IconForView collectionOrView={collection}/>\n <Typography\n variant={\"subtitle2\"}\n className=\"font-medium ml-4\">\n {collection?.name.toUpperCase()}\n </Typography>\n </div>\n </SelectItem>;\n })\n\n }\n </SelectGroup>}\n\n </Select>\n\n <FieldCaption>\n You can only edit the reference collection upon field\n creation.\n </FieldCaption>\n </>\n );\n}\n","import React from \"react\";\nimport { getIn, useFormex } from \"@firecms/formex\";\nimport { FieldCaption, NumberProperty, StringProperty } from \"@firecms/core\";\nimport { Select, SelectItem } from \"@firecms/ui\";\nimport { GeneralPropertyValidation } from \"./validation/GeneralPropertyValidation\";\nimport { ValidationPanel } from \"./validation/ValidationPanel\";\n\nexport function DateTimePropertyField({ disabled }: {\n disabled: boolean;\n}) {\n\n const {\n values,\n errors,\n touched,\n setFieldValue\n } = useFormex<StringProperty | NumberProperty>();\n\n const modePath = \"mode\";\n const modeValue: string | undefined = getIn(values, modePath);\n const modeError: string | undefined = getIn(touched, modePath) && getIn(errors, modePath);\n\n const autoValuePath = \"autoValue\";\n const autoValueValue: string | undefined = getIn(values, autoValuePath);\n const autoValueError: string | undefined = getIn(touched, autoValuePath) && getIn(errors, autoValuePath);\n\n return (\n <>\n <div className={\"flex flex-col col-span-12 gap-2\"}>\n <div>\n <Select name={modePath}\n value={modeValue ?? \"date\"}\n error={Boolean(modeError)}\n size={\"large\"}\n onValueChange={(v) => setFieldValue(modePath, v)}\n label={\"Mode\"}\n fullWidth={true}\n renderValue={(v) => {\n switch (v) {\n case \"date_time\":\n return \"Date/Time\";\n case \"date\":\n return \"Date\";\n default:\n return \"\";\n }\n }}\n disabled={disabled}>\n <SelectItem value={\"date_time\"}> Date/Time </SelectItem>\n <SelectItem value={\"date\"}> Date </SelectItem>\n </Select>\n <FieldCaption error={Boolean(modeError)}>\n {modeError}\n </FieldCaption>\n </div>\n <div>\n <Select name={autoValuePath}\n disabled={disabled}\n size={\"large\"}\n fullWidth={true}\n value={autoValueValue ?? \"\"}\n onValueChange={(v) => setFieldValue(autoValuePath, v === \"none\" ? null : v)}\n renderValue={(v) => {\n switch (v) {\n case \"on_create\":\n return \"On create\";\n case \"on_update\":\n return \"On any update\";\n default:\n return \"None\";\n }\n }}\n error={Boolean(autoValueError)}\n label={\"Automatic value\"}>\n <SelectItem value={\"none\"}> None </SelectItem>\n <SelectItem value={\"on_create\"}> On create </SelectItem>\n <SelectItem value={\"on_update\"}> On any update </SelectItem>\n </Select>\n <FieldCaption error={Boolean(autoValueError)}>\n {autoValueError ?? \"Update this field automatically when creating or updating the entity\"}\n </FieldCaption>\n </div>\n\n </div>\n\n <div className={\"col-span-12\"}>\n <ValidationPanel>\n <GeneralPropertyValidation disabled={disabled}/>\n </ValidationPanel>\n </div>\n </>\n );\n}\n","import React from \"react\";\n\nimport { Field, FormexFieldProps } from \"@firecms/formex\";\nimport { SwitchControl } from \"../../SwitchControl\";\n\nexport function AdvancedPropertyValidation({ disabled }: {\n disabled: boolean\n}) {\n\n const columnWidth = \"columnWidth\";\n const hideFromCollection = \"hideFromCollection\";\n const readOnly = \"readOnly\";\n\n return (\n\n <div className={\"grid grid-cols-12 gap-2\"}>\n <div className={\"col-span-12\"}>\n <Field type=\"checkbox\" name={hideFromCollection}>\n {({ field, form }: FormexFieldProps) => {\n return <SwitchControl\n label={\"Hide from collection\"}\n size={\"medium\"}\n disabled={disabled}\n form={form}\n tooltip={\"Hide this field from the collection view. It will still be visible in the form view\"}\n field={field}/>\n }}\n </Field>\n </div>\n\n <div className={\"col-span-12\"}>\n <Field name={readOnly}\n type=\"checkbox\">\n {({ field, form }: FormexFieldProps) => {\n return <SwitchControl\n label={\"Read only\"}\n size={\"medium\"}\n disabled={disabled}\n tooltip={\"Is this a read only field. Display only as a preview\"}\n form={form}\n field={field}/>\n }}\n </Field>\n </div>\n </div>\n );\n}\n","import React from \"react\";\nimport { ValidationPanel } from \"./validation/ValidationPanel\";\nimport { GeneralPropertyValidation } from \"./validation/GeneralPropertyValidation\";\n\nexport function KeyValuePropertyField({ disabled }: {\n disabled: boolean;\n}) {\n\n return (\n <>\n <div className={\"col-span-12\"}>\n\n <ValidationPanel>\n <GeneralPropertyValidation disabled={disabled}/>\n </ValidationPanel>\n\n </div>\n </>\n );\n}\n","import {\n ArrayProperty,\n BooleanProperty,\n DateProperty,\n MapProperty,\n mergeDeep,\n NumberProperty,\n Property,\n PropertyConfig,\n StringProperty\n} from \"@firecms/core\";\n\nexport function updatePropertyFromWidget(propertyData: any,\n selectedWidgetId: string | undefined,\n propertyConfigs: Record<string, PropertyConfig>): Property {\n\n let updatedProperty;\n if (selectedWidgetId === \"text_field\") {\n updatedProperty = mergeDeep(\n propertyData,\n {\n dataType: \"string\",\n propertyConfig: \"text_field\",\n editable: propertyData.editable !== undefined ? propertyData.editable : true,\n storage: undefined,\n multiline: undefined,\n markdown: undefined,\n email: undefined,\n url: undefined,\n enumValues: undefined,\n userSelect: undefined\n } satisfies StringProperty\n );\n } else if (selectedWidgetId === \"user_select\") {\n updatedProperty = mergeDeep(\n propertyData,\n {\n dataType: \"string\",\n propertyConfig: \"user_select\",\n editable: propertyData.editable !== undefined ? propertyData.editable : true,\n storage: undefined,\n multiline: undefined,\n markdown: undefined,\n email: undefined,\n url: undefined,\n enumValues: undefined,\n userSelect: true\n } satisfies StringProperty\n );\n } else if (selectedWidgetId === \"multiline\") {\n updatedProperty = mergeDeep(\n propertyData,\n {\n dataType: \"string\",\n propertyConfig: \"multiline\",\n editable: propertyData.editable !== undefined ? propertyData.editable : true,\n multiline: true,\n storage: undefined,\n markdown: undefined,\n email: undefined,\n url: undefined,\n enumValues: undefined,\n userSelect: undefined\n } satisfies StringProperty\n );\n } else if (selectedWidgetId === \"markdown\") {\n updatedProperty = mergeDeep(\n propertyData,\n {\n dataType: \"string\",\n propertyConfig: \"markdown\",\n editable: propertyData.editable !== undefined ? propertyData.editable : true,\n storage: undefined,\n multiline: undefined,\n markdown: true,\n email: undefined,\n url: undefined,\n userSelect: undefined\n } satisfies StringProperty\n );\n } else if (selectedWidgetId === \"url\") {\n updatedProperty = mergeDeep(\n propertyData,\n {\n dataType: \"string\",\n propertyConfig: \"url\",\n editable: propertyData.editable !== undefined ? propertyData.editable : true,\n storage: undefined,\n multiline: undefined,\n markdown: undefined,\n email: undefined,\n url: true,\n enumValues: undefined,\n userSelect: undefined\n } satisfies StringProperty\n );\n } else if (selectedWidgetId === \"email\") {\n updatedProperty = mergeDeep(\n propertyData,\n {\n dataType: \"string\",\n propertyConfig: \"email\",\n editable: propertyData.editable !== undefined ? propertyData.editable : true,\n storage: undefined,\n multiline: undefined,\n markdown: undefined,\n email: true,\n url: undefined,\n enumValues: undefined,\n userSelect: undefined\n } satisfies StringProperty\n );\n } else if (selectedWidgetId === \"select\") {\n updatedProperty = mergeDeep(\n propertyData,\n {\n dataType: \"string\",\n propertyConfig: \"select\",\n editable: propertyData.editable !== undefined ? propertyData.editable : true,\n storage: undefined,\n multiline: undefined,\n markdown: undefined,\n email: undefined,\n url: undefined,\n enumValues: propertyData.enumValues ?? [],\n userSelect: undefined\n } satisfies StringProperty\n );\n } else if (selectedWidgetId === \"multi_select\") {\n updatedProperty = mergeDeep(\n propertyData,\n {\n dataType: \"array\",\n propertyConfig: \"multi_select\",\n editable: propertyData.editable !== undefined ? propertyData.editable : true,\n of: {\n dataType: \"string\",\n enumValues: propertyData.of?.enumValues ?? []\n }\n } satisfies ArrayProperty\n );\n } else if (selectedWidgetId === \"number_input\") {\n updatedProperty = mergeDeep(\n propertyData,\n {\n dataType: \"number\",\n propertyConfig: \"number_input\",\n editable: propertyData.editable !== undefined ? propertyData.editable : true,\n enumValues: undefined\n } satisfies NumberProperty\n );\n } else if (selectedWidgetId === \"number_select\") {\n updatedProperty = mergeDeep(\n propertyData,\n {\n dataType: \"number\",\n propertyConfig: \"number_select\",\n editable: propertyData.editable !== undefined ? propertyData.editable : true,\n enumValues: propertyData.enumValues ?? []\n } satisfies NumberProperty\n );\n } else if (selectedWidgetId === \"multi_number_select\") {\n updatedProperty = mergeDeep(\n propertyData,\n {\n dataType: \"array\",\n propertyConfig: \"multi_number_select\",\n editable: propertyData.editable !== undefined ? propertyData.editable : true,\n of: {\n dataType: \"number\",\n enumValues: propertyData.of?.enumValues ?? []\n }\n } satisfies ArrayProperty\n );\n } else if (selectedWidgetId === \"file_upload\") {\n updatedProperty = mergeDeep(\n propertyData,\n {\n dataType: \"string\",\n propertyConfig: \"file_upload\",\n editable: propertyData.editable !== undefined ? propertyData.editable : true,\n storage: {\n storagePath: \"/\"\n }\n } satisfies StringProperty\n );\n } else if (selectedWidgetId === \"multi_file_upload\") {\n updatedProperty = mergeDeep(\n propertyData,\n {\n dataType: \"array\",\n propertyConfig: \"multi_file_upload\",\n editable: propertyData.editable !== undefined ? propertyData.editable : true,\n of: {\n dataType: \"string\",\n storage: propertyData.of?.storage ?? {\n storagePath: \"/\"\n }\n }\n } satisfies ArrayProperty\n );\n } else if (selectedWidgetId === \"group\") {\n updatedProperty = mergeDeep(\n propertyData,\n {\n dataType: \"map\",\n propertyConfig: \"group\",\n editable: propertyData.editable !== undefined ? propertyData.editable : true,\n keyValue: false,\n properties: propertyData.properties ?? {}\n } satisfies MapProperty\n );\n } else if (selectedWidgetId === \"key_value\") {\n updatedProperty = mergeDeep(\n propertyData,\n {\n dataType: \"map\",\n propertyConfig: \"key_value\",\n editable: propertyData.editable !== undefined ? propertyData.editable : true,\n keyValue: true,\n properties: undefined\n } satisfies MapProperty\n );\n } else if (selectedWidgetId === \"reference\") {\n updatedProperty = mergeDeep(\n propertyData,\n {\n dataType: \"reference\",\n propertyConfig: \"reference\",\n editable: propertyData.editable !== undefined ? propertyData.editable : true\n } satisfies Property\n );\n } else if (selectedWidgetId === \"reference_as_string\") {\n updatedProperty = mergeDeep(\n propertyData,\n {\n dataType: \"string\",\n propertyConfig: \"reference_as_string\",\n editable: propertyData.editable !== undefined ? propertyData.editable : true\n } satisfies Property\n );\n } else if (selectedWidgetId === \"multi_references\") {\n updatedProperty = mergeDeep(\n propertyData,\n {\n dataType: \"array\",\n propertyConfig: \"multi_references\",\n editable: propertyData.editable !== undefined ? propertyData.editable : true,\n of: {\n dataType: \"reference\"\n }\n } satisfies ArrayProperty\n );\n } else if (selectedWidgetId === \"switch\") {\n updatedProperty = mergeDeep(\n propertyData,\n {\n dataType: \"boolean\",\n propertyConfig: \"switch\",\n editable: propertyData.editable !== undefined ? propertyData.editable : true\n } satisfies BooleanProperty\n );\n } else if (selectedWidgetId === \"date_time\") {\n updatedProperty = mergeDeep(\n propertyData,\n {\n dataType: \"date\",\n propertyConfig: \"date_time\",\n editable: propertyData.editable !== undefined ? propertyData.editable : true,\n mode: \"date_time\"\n } satisfies DateProperty\n );\n } else if (selectedWidgetId === \"repeat\") {\n updatedProperty = mergeDeep(\n propertyData,\n {\n dataType: \"array\",\n propertyConfig: \"repeat\",\n editable: propertyData.editable !== undefined ? propertyData.editable : true\n } satisfies ArrayProperty\n );\n } else if (selectedWidgetId === \"block\") {\n updatedProperty = mergeDeep(\n propertyData,\n {\n dataType: \"array\",\n propertyConfig: \"block\",\n editable: propertyData.editable !== undefined ? propertyData.editable : true,\n oneOf: {\n properties: {}\n }\n } satisfies ArrayProperty\n );\n } else if (selectedWidgetId && propertyConfigs[selectedWidgetId]) {\n updatedProperty = {\n ...propertyConfigs[selectedWidgetId].property,\n propertyConfig: selectedWidgetId\n };\n }\n\n return updatedProperty;\n}\n","import React from \"react\";\nimport { StringPropertyValidation } from \"./validation/StringPropertyValidation\";\nimport { ValidationPanel } from \"./validation/ValidationPanel\";\nimport { getIn, useFormex } from \"@firecms/formex\";\n\nimport { Select, SelectItem, TextField } from \"@firecms/ui\";\n\nexport function UrlPropertyField({\n disabled,\n showErrors\n }: {\n disabled: boolean;\n showErrors: boolean;\n}) {\n\n const { values, setFieldValue } = useFormex();\n\n const urlValue = getIn(values, \"url\");\n\n return (\n <>\n <div className={\"col-span-12\"}>\n\n <Select\n disabled={disabled}\n position={\"item-aligned\"}\n fullWidth={true}\n onValueChange={(value: string) => {\n if (value === \"[NONE]\")\n setFieldValue(\"url\", true);\n else\n setFieldValue(\"url\", value);\n }}\n label={\"Preview type\"}\n renderValue={(value: string) => {\n switch (value) {\n case \"image\":\n return \"Image\";\n case \"video\":\n return \"Video\";\n case \"audio\":\n return \"Audio\";\n default:\n return \"Display URL\";\n }\n }}\n value={urlValue ?? \"[NONE]\"}>\n <SelectItem value={\"[NONE]\"}>\n Display URL\n </SelectItem>\n <SelectItem value={\"image\"}>\n Image\n </SelectItem>\n <SelectItem value={\"video\"}>\n Video\n </SelectItem>\n <SelectItem value={\"audio\"}>\n Audio\n </SelectItem>\n </Select>\n </div>\n\n <div className={\"col-span-12\"}>\n\n <ValidationPanel>\n\n <StringPropertyValidation disabled={disabled}\n max={true}\n min={true}\n trim={true}\n showErrors={showErrors}/>\n\n </ValidationPanel>\n\n </div>\n\n <div className={\"col-span-12\"}>\n\n <TextField name={\"defaultValue\"}\n disabled={disabled}\n onChange={(e: any) => {\n setFieldValue(\"defaultValue\", e.target.value === \"\" ? undefined : e.target.value);\n }}\n label={\"Default value\"}\n value={getIn(values, \"defaultValue\") ?? \"\"}/>\n\n </div>\n </>\n );\n}\n","import { DEFAULT_FIELD_CONFIGS, PropertyConfigId, PropertyConfig } from \"@firecms/core\";\n\nexport const supportedFieldsIds: PropertyConfigId[] = [\n \"text_field\",\n \"multiline\",\n \"markdown\",\n \"url\",\n \"email\",\n \"user_select\",\n \"select\",\n \"multi_select\",\n \"number_input\",\n \"number_select\",\n \"multi_number_select\",\n \"file_upload\",\n \"multi_file_upload\",\n \"reference\",\n \"reference_as_string\",\n \"multi_references\",\n \"switch\",\n \"date_time\",\n \"group\",\n \"key_value\",\n \"repeat\",\n \"block\"\n];\n\nexport const supportedFields: Record<string, PropertyConfig> = Object.entries(DEFAULT_FIELD_CONFIGS)\n .filter(([id]) => supportedFieldsIds.includes(id as PropertyConfigId))\n .map(([id, config]) => ({ [id]: config }))\n .reduce((a, b) => ({ ...a, ...b }), {});\n","import React from \"react\";\nimport { StringPropertyValidation } from \"./validation/StringPropertyValidation\";\nimport { ValidationPanel } from \"./validation/ValidationPanel\";\nimport { Field, getIn, useFormex } from \"@firecms/formex\";\n\nimport { CloudUploadIcon, DebouncedTextField, ExpandablePanel, TextField, Typography } from \"@firecms/ui\";\n\nexport function MarkdownPropertyField({\n disabled,\n showErrors\n }: {\n disabled: boolean;\n showErrors: boolean;\n}) {\n\n const {\n values,\n setFieldValue\n } = useFormex();\n\n const baseStoragePath = \"storage\";\n\n const metadata = `${baseStoragePath}.metadata`;\n const fileName = `${baseStoragePath}.fileName`;\n const maxSize = `${baseStoragePath}.maxSize`;\n const storagePath = `${baseStoragePath}.storagePath`;\n\n const fileNameValue = getIn(values, fileName) ?? \"{rand}_{file}\";\n const storagePathValue = getIn(values, storagePath) ?? \"/\";\n const maxSizeValue = getIn(values, maxSize);\n\n const hasFilenameCallback = typeof fileNameValue === \"function\";\n const hasStoragePathCallback = typeof storagePathValue === \"function\";\n\n return (\n <>\n <div className={\"col-span-12\"}>\n\n <ValidationPanel>\n\n <StringPropertyValidation disabled={disabled}\n length={true}\n lowercase={true}\n max={true}\n min={true}\n trim={true}\n uppercase={true}\n showErrors={showErrors}/>\n\n </ValidationPanel>\n\n </div>\n\n <div className={\"col-span-12\"}>\n <ExpandablePanel\n title={\n <div className=\"flex flex-row text-surface-500\">\n <CloudUploadIcon/>\n <Typography variant={\"subtitle2\"}\n className=\"ml-4\">\n File upload config\n </Typography>\n </div>\n }>\n\n <div className={\"grid grid-cols-12 gap-2 p-4\"}>\n\n\n <div className={\"col-span-12\"}>\n <Field name={fileName}\n as={DebouncedTextField}\n label={\"File name\"}\n size={\"small\"}\n disabled={hasFilenameCallback || disabled}\n value={hasFilenameCallback ? \"-\" : fileNameValue}\n />\n </div>\n <div className={\"col-span-12\"}>\n <Field name={storagePath}\n as={DebouncedTextField}\n label={\"Storage path\"}\n disabled={hasStoragePathCallback || disabled}\n size={\"small\"}\n value={hasStoragePathCallback ? \"-\" : storagePathValue}\n />\n <Typography variant={\"caption\"} className={\"ml-3.5 mt-1 mb-2\"}>\n <p>You can use the following placeholders in\n the file name\n and storage path values:</p>\n <ul>\n <li>{\"{file} - Full name of the uploaded file\"}</li>\n <li>{\"{file.name} - Name of the uploaded file without extension\"}</li>\n <li>{\"{file.ext} - Extension of the uploaded file\"}</li>\n <li>{\"{entityId} - ID of the entity\"}</li>\n <li>{\"{propertyKey} - ID of this field\"}</li>\n <li>{\"{path} - Path of this entity\"}</li>\n <li>{\"{rand} - Random value used to avoid name collisions\"}</li>\n </ul>\n </Typography>\n\n <Typography variant={\"caption\"} className={\"ml-3.5 mt-1 mb-2\"}>\n When using Markdown, the URL of the uploaded files are always saved in the text value\n (not\n the path).\n </Typography>\n </div>\n\n <div className={\"col-span-12\"}>\n <DebouncedTextField name={maxSize}\n type={\"number\"}\n label={\"Max size (in bytes)\"}\n size={\"small\"}\n value={maxSizeValue !== undefined && maxSizeValue !== null ? maxSizeValue.toString() : \"\"}\n onChange={(e) => {\n const value = e.target.value;\n if (value === \"\") setFieldValue(maxSize, undefined);\n else setFieldValue(maxSize, parseInt(value));\n }}\n />\n </div>\n\n </div>\n </ExpandablePanel>\n </div>\n\n <div className={\"col-span-12\"}>\n\n <TextField name={\"defaultValue\"}\n disabled={disabled}\n onChange={(e: any) => {\n setFieldValue(\"defaultValue\", e.target.value === \"\" ? undefined : e.target.value);\n }}\n label={\"Default value\"}\n value={getIn(values, \"defaultValue\") ?? \"\"}/>\n\n </div>\n </>\n );\n}\n","import React, { useDeferredValue, useEffect, useRef, useState } from \"react\";\nimport equal from \"react-fast-compare\"\n\nimport { Formex, FormexController, getIn, useCreateFormex } from \"@firecms/formex\";\nimport {\n ConfirmationDialog,\n DEFAULT_FIELD_CONFIGS,\n getFieldConfig,\n getFieldId,\n isPropertyBuilder,\n isValidRegExp,\n mergeDeep,\n Property,\n PropertyConfig,\n PropertyConfigBadge,\n PropertyConfigId,\n} from \"@firecms/core\";\nimport {\n Button,\n Card,\n cls,\n DeleteIcon,\n Dialog,\n DialogActions,\n DialogContent,\n DialogTitle,\n fieldBackgroundDisabledMixin,\n fieldBackgroundHoverMixin,\n fieldBackgroundMixin,\n IconButton,\n InfoLabel,\n Tooltip,\n Typography,\n WarningIcon\n} from \"@firecms/ui\";\nimport { EnumPropertyField } from \"./properties/EnumPropertyField\";\nimport { StoragePropertyField } from \"./properties/StoragePropertyField\";\nimport { MapPropertyField } from \"./properties/MapPropertyField\";\nimport { RepeatPropertyField } from \"./properties/RepeatPropertyField\";\nimport { CommonPropertyFields } from \"./properties/CommonPropertyFields\";\nimport { StringPropertyField } from \"./properties/StringPropertyField\";\nimport { BooleanPropertyField } from \"./properties/BooleanPropertyField\";\nimport { BlockPropertyField } from \"./properties/BlockPropertyField\";\nimport { NumberPropertyField } from \"./properties/NumberPropertyField\";\nimport { ReferencePropertyField } from \"./properties/ReferencePropertyField\";\nimport { DateTimePropertyField } from \"./properties/DateTimePropertyField\";\nimport { AdvancedPropertyValidation } from \"./properties/advanced/AdvancedPropertyValidation\";\nimport { editableProperty } from \"../../utils/entities\";\nimport { KeyValuePropertyField } from \"./properties/KeyValuePropertyField\";\nimport { updatePropertyFromWidget } from \"./utils/update_property_for_widget\";\nimport { UrlPropertyField } from \"./properties/UrlPropertyField\";\nimport { supportedFields } from \"./utils/supported_fields\";\nimport { MarkdownPropertyField } from \"./properties/MarkdownPropertyField\";\n\nexport type PropertyWithId = Property & {\n id?: string\n};\n\nexport type OnPropertyChangedParams = {\n id?: string,\n property: Property,\n namespace?: string,\n previousId?: string\n};\n\nexport type PropertyFormProps = {\n includeIdAndName?: boolean;\n existingProperty: boolean;\n autoUpdateId?: boolean;\n autoOpenTypeSelect: boolean;\n inArray: boolean;\n propertyKey?: string;\n propertyNamespace?: string;\n property?: Property;\n onPropertyChanged?: (params: OnPropertyChangedParams) => void;\n onPropertyChangedImmediate?: boolean;\n onDismiss?: () => void;\n onDelete?: (id?: string, namespace?: string) => void;\n onError?: (id: string, namespace?: string, error?: Record<string, any>) => void;\n initialErrors?: Record<string, any>;\n existingPropertyKeys?: string[];\n forceShowErrors?: boolean;\n allowDataInference: boolean;\n getData?: () => Promise<object[]>;\n getController?: (formex: FormexController<PropertyWithId>) => void;\n propertyConfigs: Record<string, PropertyConfig>;\n collectionEditable: boolean;\n};\n\nexport const PropertyForm = React.memo(\n function PropertyForm(props: PropertyFormProps) {\n\n const {\n includeIdAndName = true,\n autoOpenTypeSelect,\n existingProperty,\n autoUpdateId,\n inArray,\n propertyKey,\n existingPropertyKeys,\n propertyNamespace,\n property,\n onPropertyChanged,\n onPropertyChangedImmediate = true,\n onDismiss,\n onDelete,\n onError,\n initialErrors,\n forceShowErrors,\n allowDataInference,\n getController,\n getData,\n propertyConfigs,\n collectionEditable\n } = props;\n\n const initialValue: PropertyWithId = {\n id: \"\",\n name: \"\"\n } as PropertyWithId;\n\n const disabled = (Boolean(property && !editableProperty(property)) || !collectionEditable);\n\n const lastSubmittedProperty = useRef<OnPropertyChangedParams | undefined>(property ? {\n id: propertyKey,\n previousId: propertyKey,\n property\n } : undefined);\n\n const doOnPropertyChanged = ({\n id,\n property\n }: OnPropertyChangedParams) => {\n const params = {\n id,\n previousId: lastSubmittedProperty.current?.id,\n property,\n namespace: propertyNamespace\n };\n lastSubmittedProperty.current = params;\n onPropertyChanged?.(params);\n };\n\n const formexController = useCreateFormex<PropertyWithId>({\n debugId: \"PROPERTY_FORM\",\n initialValues: property\n ? { id: propertyKey, ...property } as PropertyWithId\n : initialValue,\n initialErrors,\n validateOnChange: true,\n validateOnInitialRender: true,\n onSubmit: (newPropertyWithId, controller) => {\n const {\n id,\n ...property\n } = newPropertyWithId;\n doOnPropertyChanged({\n id,\n property: {\n ...property,\n editable: property.editable ?? true\n }\n });\n if (!existingProperty)\n controller.resetForm({ values: initialValue });\n },\n validation: (values) => {\n const errors: Record<string, any> = {};\n if (includeIdAndName) {\n if (!values.name) {\n errors.name = \"Required\";\n } else {\n const nameError = validateName(values.name);\n if (nameError)\n errors.name = nameError;\n }\n if (!values.id) {\n errors.id = \"Required\";\n } else {\n const idError = validateId(values.id, existingPropertyKeys);\n if (idError)\n errors.id = idError;\n }\n }\n\n if (values.dataType === \"string\") {\n if (values.validation?.matches && !isValidRegExp(values.validation?.matches.toString())) {\n errors.validation = {\n matches: \"Invalid regular expression\"\n }\n }\n }\n if (values.dataType === \"reference\" && !values.path) {\n errors.path = \"You must specify a target collection for the field\";\n }\n if (values.propertyConfig === \"repeat\") {\n if (!(values as any).of) {\n errors.of = \"You need to specify a repeat field\";\n }\n }\n if (values.propertyConfig === \"block\") {\n if (!(values as any).oneOf) {\n errors.oneOf = \"You need to specify the properties of this block\";\n }\n }\n return errors;\n }\n });\n\n useEffect(() => {\n getController?.(formexController);\n }, [formexController, getController]);\n\n return <Formex value={formexController}>\n <PropertyEditFormFields\n onPropertyChanged={onPropertyChangedImmediate\n ? doOnPropertyChanged\n : undefined}\n onDelete={onDelete}\n includeIdAndTitle={includeIdAndName}\n propertyNamespace={propertyNamespace}\n onError={onError}\n onDismiss={onDismiss}\n showErrors={forceShowErrors || formexController.submitCount > 0}\n existing={existingProperty}\n autoUpdateId={autoUpdateId}\n inArray={inArray}\n autoOpenTypeSelect={autoOpenTypeSelect}\n disabled={disabled}\n getData={getData}\n allowDataInference={allowDataInference}\n propertyConfigs={propertyConfigs}\n collectionEditable={collectionEditable}\n {...formexController}/>\n </Formex>;\n }, (a, b) =>\n a.getData === b.getData &&\n a.propertyKey === b.propertyKey &&\n a.propertyNamespace === b.propertyNamespace &&\n a.includeIdAndName === b.includeIdAndName &&\n a.autoOpenTypeSelect === b.autoOpenTypeSelect &&\n a.autoUpdateId === b.autoUpdateId &&\n a.existingPropertyKeys === b.existingPropertyKeys &&\n a.existingProperty === b.existingProperty\n);\n\nexport function PropertyFormDialog({\n open,\n onCancel,\n onOkClicked,\n onPropertyChanged,\n getData,\n collectionEditable,\n ...formProps\n }: PropertyFormProps & {\n open?: boolean;\n onOkClicked?: () => void;\n onCancel?: () => void;\n}) {\n const formexRef = useRef<FormexController<PropertyWithId>>();\n const getController = (helpers: FormexController<PropertyWithId>) => {\n formexRef.current = helpers;\n };\n\n return <Dialog\n open={open ?? false}\n maxWidth={\"xl\"}\n fullWidth={true}\n >\n <form noValidate={true}\n autoComplete={\"off\"}\n onSubmit={(e) => {\n e.preventDefault();\n e.stopPropagation();\n formexRef.current?.handleSubmit(e)\n }}>\n <DialogTitle hidden>Property edit view</DialogTitle>\n <DialogContent>\n\n <PropertyForm {...formProps}\n onDismiss={onCancel}\n onPropertyChanged={(params) => {\n onPropertyChanged?.(params);\n onOkClicked?.();\n }}\n collectionEditable={collectionEditable}\n onPropertyChangedImmediate={false}\n getController={getController}\n getData={getData}\n />\n </DialogContent>\n\n <DialogActions>\n\n {onCancel && <Button\n variant={\"text\"}\n color={\"primary\"}\n onClick={() => {\n onCancel();\n formexRef.current?.resetForm();\n }}>\n Cancel\n </Button>}\n\n <Button variant=\"outlined\"\n type={\"submit\"}\n color=\"primary\">\n Ok\n </Button>\n </DialogActions>\n </form>\n </Dialog>;\n\n}\n\nfunction PropertyEditFormFields({\n values,\n errors,\n setValues,\n existing,\n autoUpdateId = false,\n autoOpenTypeSelect,\n includeIdAndTitle,\n onPropertyChanged,\n onDelete,\n propertyNamespace,\n onDismiss,\n onError,\n showErrors,\n disabled,\n inArray,\n getData,\n allowDataInference,\n propertyConfigs,\n collectionEditable\n }: {\n includeIdAndTitle?: boolean;\n existing: boolean;\n autoUpdateId?: boolean;\n autoOpenTypeSelect: boolean;\n propertyNamespace?: string;\n onDismiss?: () => void;\n onPropertyChanged?: (params: OnPropertyChangedParams) => void;\n onDelete?: (id?: string, namespace?: string) => void;\n onError?: (id: string, namespace?: string, error?: Record<string, any>) => void;\n showErrors: boolean;\n inArray: boolean;\n disabled: boolean;\n getData?: () => Promise<object[]>;\n allowDataInference: boolean;\n propertyConfigs: Record<string, PropertyConfig>;\n collectionEditable: boolean;\n} & FormexController<PropertyWithId>) {\n\n const [selectOpen, setSelectOpen] = useState(autoOpenTypeSelect);\n const [deleteDialogOpen, setDeleteDialogOpen] = useState(false);\n const [selectedFieldConfigId, setSelectedFieldConfigId] = useState<string | undefined>(values?.dataType ? getFieldId(values) : undefined);\n\n const deferredValues = useDeferredValue(values);\n const nameFieldRef = useRef<HTMLInputElement>(null);\n\n const lastSubmittedProperty = useRef<object>(values);\n\n const selectedWidgetError = showErrors && getIn(errors, \"selectedWidget\");\n\n useEffect(() => {\n if (onPropertyChanged) {\n if ((!includeIdAndTitle || deferredValues.id)) {\n const {\n id,\n ...property\n } = deferredValues;\n if (!equal(deferredValues, lastSubmittedProperty.current)) {\n onPropertyChanged({\n id,\n property,\n namespace: propertyNamespace\n });\n lastSubmittedProperty.current = deferredValues;\n }\n }\n }\n }, [deferredValues, includeIdAndTitle, propertyNamespace]);\n\n useEffect(() => {\n if (values?.id && onError) {\n onError(values?.id, propertyNamespace, errors);\n }\n }, [errors, propertyNamespace, values?.id]);\n\n const onWidgetSelectChanged = (newSelectedWidgetId: PropertyConfigId) => {\n setSelectedFieldConfigId(newSelectedWidgetId);\n setValues(updatePropertyFromWidget(values, newSelectedWidgetId, propertyConfigs));\n // Ugly hack to autofocus the name field\n setTimeout(() => {\n nameFieldRef.current?.focus();\n }, 0);\n };\n\n let childComponent;\n if (selectedFieldConfigId === \"text_field\" ||\n selectedFieldConfigId === \"multiline\" ||\n selectedFieldConfigId === \"user_select\" ||\n selectedFieldConfigId === \"email\") {\n childComponent =\n <StringPropertyField widgetId={selectedFieldConfigId}\n disabled={disabled}\n showErrors={showErrors}/>;\n } else if (selectedFieldConfigId === \"url\") {\n childComponent =\n <UrlPropertyField disabled={disabled}\n showErrors={showErrors}/>;\n } else if (selectedFieldConfigId === \"markdown\") {\n childComponent =\n <MarkdownPropertyField disabled={disabled}\n showErrors={showErrors}/>;\n } else if (selectedFieldConfigId === \"select\" ||\n selectedFieldConfigId === \"number_select\") {\n childComponent = <EnumPropertyField\n multiselect={false}\n allowDataInference={allowDataInference}\n updateIds={!existing}\n disabled={disabled}\n getData={getData}\n showErrors={showErrors}/>;\n } else if (selectedFieldConfigId === \"multi_select\" ||\n selectedFieldConfigId === \"multi_number_select\") {\n childComponent = <EnumPropertyField\n multiselect={true}\n updateIds={!existing}\n disabled={disabled}\n allowDataInference={allowDataInference}\n getData={getData}\n showErrors={showErrors}/>;\n } else if (selectedFieldConfigId === \"file_upload\") {\n childComponent =\n <StoragePropertyField existing={existing}\n multiple={false}\n disabled={disabled}/>;\n } else if (selectedFieldConfigId === \"multi_file_upload\") {\n childComponent =\n <StoragePropertyField existing={existing}\n multiple={true}\n disabled={disabled}/>;\n } else if (selectedFieldConfigId === \"switch\") {\n childComponent = <BooleanPropertyField disabled={disabled}/>;\n } else if (selectedFieldConfigId === \"number_input\") {\n childComponent = <NumberPropertyField disabled={disabled}/>;\n } else if (selectedFieldConfigId === \"group\") {\n childComponent =\n <MapPropertyField disabled={disabled} getData={getData} allowDataInference={allowDataInference}\n collectionEditable={collectionEditable}\n propertyConfigs={propertyConfigs}/>;\n } else if (selectedFieldConfigId === \"block\") {\n childComponent =\n <BlockPropertyField disabled={disabled} getData={getData} allowDataInference={allowDataInference}\n collectionEditable={collectionEditable}\n propertyConfigs={propertyConfigs}/>;\n } else if (selectedFieldConfigId === \"reference\") {\n childComponent =\n <ReferencePropertyField showErrors={showErrors}\n existing={existing}\n multiple={false}\n disabled={disabled}/>;\n } else if (selectedFieldConfigId === \"reference_as_string\") {\n childComponent =\n <ReferencePropertyField showErrors={showErrors}\n existing={existing}\n asString={true}\n multiple={false}\n disabled={disabled}/>;\n } else if (selectedFieldConfigId === \"date_time\") {\n childComponent = <DateTimePropertyField disabled={disabled}/>;\n } else if (selectedFieldConfigId === \"multi_references\") {\n childComponent =\n <ReferencePropertyField showErrors={showErrors}\n existing={existing}\n multiple={true}\n disabled={disabled}/>;\n } else if (selectedFieldConfigId === \"repeat\") {\n childComponent =\n <RepeatPropertyField showErrors={showErrors}\n existing={existing}\n getData={getData}\n allowDataInference={allowDataInference}\n disabled={disabled}\n collectionEditable={collectionEditable}\n propertyConfigs={propertyConfigs}/>;\n } else if (selectedFieldConfigId === \"key_value\") {\n childComponent =\n <KeyValuePropertyField disabled={disabled}/>;\n } else {\n childComponent = null;\n }\n\n return (\n <>\n {disabled && <InfoLabel mode={\"warn\"}>\n <Typography>This property can't be edited</Typography>\n <Typography variant={\"caption\"}>\n You may not have permission to\n edit it or it is defined in code with the <code>editable</code> flag set to <code>false</code>.\n </Typography>\n </InfoLabel>}\n\n <div className=\"flex mt-2 justify-between\">\n <div className={\"w-full flex flex-col gap-2\"}>\n <WidgetSelectView\n initialProperty={values}\n value={selectedFieldConfigId as PropertyConfigId}\n onValueChange={(value) => onWidgetSelectChanged(value as PropertyConfigId)}\n open={selectOpen}\n onOpenChange={(open, hasValue) => {\n if (!hasValue) {\n onDismiss?.();\n }\n setSelectOpen(open);\n }}\n disabled={disabled}\n showError={Boolean(selectedWidgetError)}\n existing={existing}\n propertyConfigs={propertyConfigs}\n inArray={inArray}/>\n\n {selectedWidgetError &&\n <Typography variant=\"caption\"\n className={\"ml-3.5\"}\n color={\"error\"}>Required</Typography>}\n\n {/*<Typography variant=\"caption\" className={\"ml-3.5\"}>Define your own custom properties and*/}\n {/* components</Typography>*/}\n\n </div>\n\n {onDelete && values?.id &&\n <IconButton\n variant={\"ghost\"}\n className=\"m-4\"\n disabled={disabled}\n onClick={() => setDeleteDialogOpen(true)}>\n <DeleteIcon/>\n </IconButton>}\n </div>\n\n <div className={\"grid grid-cols-12 gap-y-12 mt-8 mb-8\"}>\n {includeIdAndTitle &&\n <CommonPropertyFields showErrors={showErrors}\n disabledId={existing}\n isNewProperty={!existing}\n disabled={disabled}\n autoUpdateId={autoUpdateId}\n ref={nameFieldRef}/>}\n\n {childComponent}\n\n <div className={\"col-span-12\"}>\n <AdvancedPropertyValidation disabled={disabled}/>\n </div>\n </div>\n\n {onDelete &&\n <ConfirmationDialog open={deleteDialogOpen}\n onAccept={() => onDelete(values?.id, propertyNamespace)}\n onCancel={() => setDeleteDialogOpen(false)}\n title={<div>Delete this property?</div>}\n body={\n <div> This will <b>not delete any\n data</b>, only modify the\n collection.</div>\n }/>}\n\n </>\n );\n}\n\nconst idRegEx = /^[a-zA-Z_][a-zA-Z0-9_]*$/;\n\nfunction validateId(value?: string, existingPropertyKeys?: string[]) {\n\n let error;\n if (!value) {\n error = \"You must specify an id for the field\";\n }\n if (value && !value.match(idRegEx)) {\n error = \"The id can only contain letters, numbers and underscores (_), and not start with a number\";\n }\n if (value && existingPropertyKeys && existingPropertyKeys.includes(value)) {\n error = \"There is another field with this ID already\";\n }\n return error;\n}\n\nfunction validateName(value: string) {\n let error;\n if (!value) {\n error = \"You must specify a title for the field\";\n }\n return error;\n}\n\nconst WIDGET_TYPE_MAP: Record<PropertyConfigId, string> = {\n text_field: \"Text\",\n multiline: \"Text\",\n markdown: \"Text\",\n url: \"Text\",\n email: \"Text\",\n switch: \"Boolean\",\n user_select: \"Users\",\n select: \"Select\",\n multi_select: \"Select\",\n number_input: \"Number\",\n number_select: \"Select\",\n multi_number_select: \"Select\",\n file_upload: \"File\",\n multi_file_upload: \"File\",\n reference: \"Reference\",\n reference_as_string: \"Text\",\n multi_references: \"Reference\",\n date_time: \"Date\",\n group: \"Group\",\n key_value: \"Group\",\n repeat: \"Array\",\n custom_array: \"Array\",\n block: \"Group\"\n};\n\nfunction WidgetSelectView({\n initialProperty,\n value,\n onValueChange,\n open,\n onOpenChange,\n disabled,\n showError,\n existing,\n propertyConfigs,\n inArray\n }: {\n initialProperty?: PropertyWithId,\n value?: PropertyConfigId,\n onValueChange: (value: string) => void,\n showError: boolean,\n open: boolean,\n onOpenChange: (open: boolean, hasValue: boolean) => void,\n disabled: boolean,\n existing: boolean,\n propertyConfigs: Record<string, PropertyConfig>,\n inArray?: boolean\n}) {\n\n const allSupportedFields = Object.entries(supportedFields).concat(Object.entries(propertyConfigs));\n\n const displayedWidgets = (inArray\n ? allSupportedFields.filter(([_, propertyConfig]) => !isPropertyBuilder(propertyConfig.property) && propertyConfig.property?.dataType !== \"array\")\n : allSupportedFields)\n .map(([key, propertyConfig]) => ({\n [key]: propertyConfig\n }))\n .reduce((a, b) => {\n return {\n ...a,\n ...b\n }\n }, {});\n\n const key = value;\n const propertyConfig = key ? (DEFAULT_FIELD_CONFIGS[key] ?? propertyConfigs[key]) : undefined;\n const baseProperty = propertyConfig?.property;\n const baseFieldConfig = baseProperty && !isPropertyBuilder(baseProperty) ? getFieldConfig(baseProperty, propertyConfigs) : undefined;\n const computedFieldConfig = baseFieldConfig && propertyConfig ? mergeDeep(baseFieldConfig, propertyConfig) : propertyConfig;\n\n const groups: string[] = [...new Set(Object.keys(displayedWidgets).map(key => {\n const group = WIDGET_TYPE_MAP[key as PropertyConfigId];\n if (group) {\n return group;\n }\n return \"Custom/Other\"\n }))];\n\n return <>\n <div\n onClick={() => {\n if (!disabled) {\n onOpenChange(!open, Boolean(value));\n }\n }}\n className={cls(\n \"select-none rounded-md text-sm p-4\",\n fieldBackgroundMixin,\n disabled ? fieldBackgroundDisabledMixin : fieldBackgroundHoverMixin,\n \"relative flex items-center\",\n )}>\n {!value && <em>Select a property widget</em>}\n {value && computedFieldConfig && <div\n className={cls(\n \"flex items-center\")}>\n <div className={\"mr-8\"}>\n <PropertyConfigBadge propertyConfig={computedFieldConfig}/>\n </div>\n <div className={\"flex flex-col items-start text-base text-left\"}>\n <div>{computedFieldConfig.name}</div>\n <Typography variant={\"caption\"}\n color={\"secondary\"}>\n {computedFieldConfig.description}\n </Typography>\n </div>\n </div>}\n </div>\n <Dialog open={open}\n onOpenChange={(open) => onOpenChange(open, Boolean(value))}\n maxWidth={\"4xl\"}>\n <DialogTitle>\n Select a property widget\n </DialogTitle>\n <DialogContent>\n <div>\n {groups.map(group => {\n return <div key={group} className={\"mt-4\"}>\n <Typography variant={\"label\"}>{group}</Typography>\n <div className={\"grid grid-cols-1 md:grid-cols-2 gap-x-4 gap-y-2 mt-4\"}>\n {Object.entries(displayedWidgets).map(([key, propertyConfig]) => {\n const groupKey = WIDGET_TYPE_MAP[key as PropertyConfigId];\n if (groupKey === group) {\n return <WidgetSelectViewItem\n key={key}\n initialProperty={initialProperty}\n onClick={() => {\n onValueChange(key);\n onOpenChange(false, true);\n }}\n propertyConfig={propertyConfig}\n existing={existing}/>;\n }\n return null;\n })}\n </div>\n </div>;\n })}\n {/*{displayedWidgets.map(([key, propertyConfig]) => {*/}\n {/* return <WidgetSelectViewItem*/}\n {/* key={key}*/}\n {/* initialProperty={initialProperty}*/}\n {/* onClick={() => {*/}\n {/* onValueChange(key);*/}\n {/* onOpenChange(false);*/}\n {/* }}*/}\n {/* propertyConfig={propertyConfig}*/}\n {/* existing={existing}/>;*/}\n {/*})}*/}\n </div>\n </DialogContent>\n </Dialog>\n </>;\n}\n\nexport interface PropertySelectItemProps {\n onClick?: () => void;\n initialProperty?: PropertyWithId;\n propertyConfig: PropertyConfig;\n existing: boolean;\n}\n\nexport function WidgetSelectViewItem({\n onClick,\n initialProperty,\n // optionDisabled,\n propertyConfig,\n existing\n }: PropertySelectItemProps) {\n const baseProperty = propertyConfig.property;\n const shouldWarnChangingDataType = existing && !isPropertyBuilder(baseProperty) && baseProperty.dataType !== initialProperty?.dataType;\n\n return <Card\n onClick={onClick}\n className={\"flex flex-row items-center px-4 py-2 m-1\"}>\n <div\n className={cls(\n \"flex flex-row items-center text-base min-h-[48px]\",\n )}>\n <div className={\"mr-8\"}>\n <PropertyConfigBadge propertyConfig={propertyConfig} disabled={shouldWarnChangingDataType}/>\n </div>\n <div>\n <div className={\"flex flex-row gap-2 items-center\"}>\n {shouldWarnChangingDataType && <Tooltip\n title={\"This widget uses a different data type than the initially selected widget. This can cause errors with existing data.\"}>\n <WarningIcon size=\"smallest\" className={\"w-4\"}/>\n </Tooltip>}\n <Typography\n variant={\"label\"}\n color={shouldWarnChangingDataType ? \"secondary\" : undefined}>{propertyConfig.name}</Typography>\n </div>\n\n <Typography variant={\"caption\"}\n color={\"secondary\"}\n className={\"max-w-sm\"}>\n {propertyConfig.description}\n </Typography>\n\n </div>\n </div>\n </Card>\n}\n","export function camelCase(str: string): string {\n if (!str) return \"\";\n if (str.length === 1) return str.toLowerCase();\n\n // Split by hyphens, underscores, or spaces and filter out empty strings\n const parts = str.split(/[-_ ]+/).filter(Boolean);\n\n if (parts.length === 0) return \"\";\n\n // Start with first part in lowercase\n return parts[0].toLowerCase() +\n // Transform remaining parts to have first letter uppercase\n parts.slice(1)\n .map(part => part.charAt(0).toUpperCase() + part.substring(1).toLowerCase())\n .join('');\n}\n","import { EntityCollection, isEmptyObject, useSnackbarController } from \"@firecms/core\";\nimport { Button, ContentCopyIcon, Dialog, DialogActions, DialogContent, DialogTitle, Typography } from \"@firecms/ui\";\nimport React from \"react\";\nimport JSON5 from \"json5\";\nimport { Highlight, themes } from \"prism-react-renderer\"\nimport { camelCase } from \"./utils/strings\";\nimport { clone } from \"@firecms/formex\";\n\nexport function GetCodeDialog({\n collection,\n onOpenChange,\n open\n }: { onOpenChange: (open: boolean) => void, collection: any, open: any }) {\n\n const snackbarController = useSnackbarController();\n\n const code = collection\n ? \"import { EntityCollection } from \\\"@firecms/core\\\";\\n\\nconst \" + (collection?.name ? camelCase(collection.name) : \"my\") + \"Collection:EntityCollection = \" + JSON5.stringify(collectionToCode({ ...collection }), null, \"\\t\")\n : \"No collection selected\";\n return <Dialog open={open}\n onOpenChange={onOpenChange}\n maxWidth={\"4xl\"}>\n <DialogTitle variant={\"h6\"}>Code for {collection.name}</DialogTitle>\n <DialogContent>\n\n <Typography variant={\"body2\"} className={\"my-4 mb-8\"}>\n If you want to customise the collection in code, you can add this collection code to your CMS\n app configuration.\n More info in the <a\n rel=\"noopener noreferrer\"\n href={\"https://firecms.co/docs/cloud/quickstart\"}>docs</a>.\n </Typography>\n <Highlight\n theme={themes.vsDark}\n code={code}\n language=\"typescript\"\n >\n {({\n className,\n style,\n tokens,\n getLineProps,\n getTokenProps\n }) => (\n <pre style={style} className={\"p-4 rounded text-sm\"}>\n {tokens.map((line, i) => (\n <div key={i} {...getLineProps({ line })}>\n {line.map((token, key) => (\n <span key={key} {...getTokenProps({ token })} />\n ))}\n </div>\n ))}\n </pre>\n )}\n </Highlight>\n\n </DialogContent>\n <DialogActions>\n <Button\n variant={\"text\"}\n size={\"small\"}\n color={\"primary\"}\n onClick={(e) => {\n e.stopPropagation();\n e.preventDefault();\n snackbarController.open({\n type: \"success\",\n message: \"Copied\"\n })\n return navigator.clipboard.writeText(code);\n }}>\n <ContentCopyIcon size={\"small\"}/>\n Copy to clipboard\n </Button>\n <Button onClick={() => onOpenChange(false)}>Close</Button>\n </DialogActions>\n </Dialog>;\n}\n\nfunction collectionToCode(collection: EntityCollection): object {\n\n const propertyCleanup = (value: any): any => {\n if (value === undefined || value === null) {\n return value;\n }\n const valueCopy = clone(value);\n if (typeof valueCopy === \"function\") {\n return valueCopy;\n }\n if (Array.isArray(valueCopy)) {\n return valueCopy.map((v: any) => propertyCleanup(v));\n }\n if (typeof valueCopy === \"object\") {\n if (valueCopy === null)\n return valueCopy;\n Object.keys(valueCopy).forEach((key) => {\n if (!isEmptyObject(valueCopy)) {\n const childRes = propertyCleanup(valueCopy[key]);\n if (childRes !== null && childRes !== undefined && childRes !== false && !isEmptyObject(childRes)) {\n valueCopy[key] = childRes;\n } else {\n delete valueCopy[key];\n }\n }\n });\n delete valueCopy.fromBuilder;\n delete valueCopy.resolved;\n delete valueCopy.propertiesOrder;\n delete valueCopy.propertyConfig;\n delete valueCopy.resolvedProperties;\n delete valueCopy.editable;\n\n }\n\n return valueCopy;\n }\n\n return {\n id: collection.id,\n name: collection.name,\n singularName: collection.singularName,\n path: collection.path,\n description: collection.description,\n editable: true,\n collectionGroup: collection.collectionGroup,\n icon: collection.icon,\n group: collection.group,\n customId: collection.customId,\n initialFilter: collection.initialFilter,\n initialSort: collection.initialSort,\n properties: Object.entries({\n ...(collection.properties ?? {})\n })\n .map(([key, value]) => ({\n [key]: propertyCleanup(value)\n }))\n .reduce((a, b) => ({ ...a,\n...b }), {}),\n subcollections: (collection.subcollections ?? []).map(collectionToCode)\n }\n\n}\n","import React, { useEffect, useMemo, useState } from \"react\";\n\nimport { Field, getIn, useFormex } from \"@firecms/formex\";\nimport {\n EntityCollection,\n ErrorBoundary,\n isPropertyBuilder,\n makePropertiesEditable,\n Properties,\n Property,\n PropertyConfig,\n PropertyOrBuilder,\n useLargeLayout,\n User,\n useSnackbarController\n} from \"@firecms/core\";\nimport {\n AddIcon,\n AutorenewIcon,\n Button,\n CircularProgress,\n cls,\n CodeIcon,\n DebouncedTextField,\n defaultBorderMixin,\n IconButton,\n Tooltip,\n Typography,\n} from \"@firecms/ui\";\n\nimport { getFullId, idToPropertiesPath, namespaceToPropertiesOrderPath } from \"./util\";\nimport { OnPropertyChangedParams, PropertyForm, PropertyFormDialog } from \"./PropertyEditView\";\nimport { PropertyTree } from \"./PropertyTree\";\nimport { PersistedCollection } from \"../../types/persisted_collection\";\nimport { GetCodeDialog } from \"./GetCodeDialog\";\n\ntype CollectionEditorFormProps = {\n showErrors: boolean;\n isNewCollection: boolean;\n propertyErrorsRef?: React.MutableRefObject<any>;\n onPropertyError: (propertyKey: string, namespace: string | undefined, error?: Record<string, any>) => void;\n setDirty?: (dirty: boolean) => void;\n reservedGroups?: string[];\n extraIcon: React.ReactNode;\n getUser?: (uid: string) => User | null;\n getData?: () => Promise<object[]>;\n doCollectionInference?: (collection: PersistedCollection) => Promise<Partial<EntityCollection> | null> | undefined;\n propertyConfigs: Record<string, PropertyConfig>;\n collectionEditable: boolean;\n};\n\nexport function CollectionPropertiesEditorForm({\n showErrors,\n isNewCollection,\n propertyErrorsRef,\n onPropertyError,\n setDirty,\n reservedGroups,\n extraIcon,\n getUser,\n getData,\n doCollectionInference,\n propertyConfigs,\n collectionEditable\n }: CollectionEditorFormProps) {\n\n const {\n values,\n setFieldValue,\n setFieldError,\n setFieldTouched,\n errors,\n dirty\n } = useFormex<PersistedCollection>();\n\n const snackbarController = useSnackbarController();\n\n const largeLayout = useLargeLayout();\n const asDialog = !largeLayout\n\n // index of the selected property within the namespace\n const [selectedPropertyIndex, setSelectedPropertyIndex] = useState<number | undefined>();\n const [selectedPropertyKey, setSelectedPropertyKey] = useState<string | undefined>();\n const [selectedPropertyNamespace, setSelectedPropertyNamespace] = useState<string | undefined>();\n\n const selectedPropertyFullId = selectedPropertyKey ? getFullId(selectedPropertyKey, selectedPropertyNamespace) : undefined;\n const selectedProperty = selectedPropertyFullId ? getIn(values.properties, selectedPropertyFullId.replaceAll(\".\", \".properties.\")) : undefined;\n const [codeDialogOpen, setCodeDialogOpen] = useState<boolean>(false);\n\n const [inferringProperties, setInferringProperties] = useState<boolean>(false);\n\n const [newPropertyDialogOpen, setNewPropertyDialogOpen] = useState<boolean>(false);\n const [inferredPropertyKeys, setInferredPropertyKeys] = useState<string[]>([]);\n\n const currentPropertiesOrderRef = React.useRef<{\n [key: string]: string[]\n }>(values.propertiesOrder ? { \"\": values.propertiesOrder } : {});\n\n useEffect(() => {\n if (setDirty)\n setDirty(dirty);\n }, [dirty]);\n\n const inferPropertiesFromData = doCollectionInference\n ? (): void => {\n if (!doCollectionInference)\n return;\n\n setInferringProperties(true);\n\n console.debug(\"CollectionEditor: inferring properties from data\", doCollectionInference, values);\n // @ts-ignore\n doCollectionInference(values)\n .then((newCollection) => {\n\n if (newCollection)\n makePropertiesEditable(newCollection.properties as Properties);\n\n if (!newCollection) {\n snackbarController.open({\n type: \"error\",\n message: \"Could not infer properties from data\"\n });\n return;\n }\n // find properties in the new collection, not present in the current one\n const newPropertyKeys = (newCollection.properties ? Object.keys(newCollection.properties) : [])\n .filter((propertyKey) => !values.properties[propertyKey]);\n if (newPropertyKeys.length === 0) {\n snackbarController.open({\n type: \"info\",\n message: \"No new properties found in existing data\"\n });\n return;\n }\n // add them to the current collection\n const updatedProperties = {\n ...newPropertyKeys.reduce((acc, propertyKey) => {\n acc[propertyKey] = (newCollection.properties ?? {})[propertyKey];\n return acc;\n }, {} as {\n [key: string]: PropertyOrBuilder\n }),\n ...values.properties\n };\n const updatedPropertiesOrder = [\n ...newPropertyKeys,\n ...(values.propertiesOrder ?? [])\n ];\n setFieldValue(\"properties\", updatedProperties, false);\n\n updatePropertiesOrder(updatedPropertiesOrder);\n\n setInferredPropertyKeys(newPropertyKeys);\n })\n .finally(() => {\n setInferringProperties(false);\n })\n }\n : undefined;\n\n const getCurrentPropertiesOrder = (namespace?: string) => {\n if (!namespace) return currentPropertiesOrderRef.current[\"\"] ?? getIn(values, namespaceToPropertiesOrderPath());\n return currentPropertiesOrderRef.current[namespace] ?? getIn(values, namespaceToPropertiesOrderPath(namespace));\n };\n\n const updatePropertiesOrder = (newPropertiesOrder: string[], namespace?: string) => {\n const propertiesOrderPath = namespaceToPropertiesOrderPath(namespace);\n\n setFieldValue(propertiesOrderPath, newPropertiesOrder, false);\n currentPropertiesOrderRef.current[namespace ?? \"\"] = newPropertiesOrder;\n\n };\n\n const deleteProperty = (propertyKey?: string, namespace?: string) => {\n const fullId = propertyKey ? getFullId(propertyKey, namespace) : undefined;\n if (!fullId)\n throw Error(\"collection editor miss config\");\n\n setFieldValue(idToPropertiesPath(fullId), undefined, false);\n\n const currentPropertiesOrder = getCurrentPropertiesOrder(namespace);\n if (currentPropertiesOrder) {\n const newPropertiesOrder = currentPropertiesOrder.filter((p) => p !== propertyKey);\n updatePropertiesOrder(newPropertiesOrder, namespace);\n }\n\n setNewPropertyDialogOpen(false);\n\n setSelectedPropertyIndex(undefined);\n setSelectedPropertyKey(undefined);\n setSelectedPropertyNamespace(undefined);\n };\n\n const onPropertyMove = (propertiesOrder: string[], namespace?: string) => {\n setFieldValue(namespaceToPropertiesOrderPath(namespace), propertiesOrder, false);\n };\n\n const onPropertyCreated = ({\n id,\n property\n }: {\n id?: string,\n property: Property\n }) => {\n if (!id) {\n throw Error(\"Need to include an ID when creating a new property\")\n }\n setFieldValue(\"properties\", {\n ...(values.properties ?? {}),\n [id]: property\n }, false);\n\n const newPropertiesOrder = [...(values.propertiesOrder ?? Object.keys(values.properties)), id];\n updatePropertiesOrder(newPropertiesOrder);\n\n setNewPropertyDialogOpen(false);\n if (largeLayout) {\n setSelectedPropertyIndex(newPropertiesOrder.indexOf(id));\n setSelectedPropertyKey(id);\n }\n setSelectedPropertyNamespace(undefined);\n };\n\n const onPropertyChanged = ({\n id,\n property,\n previousId,\n namespace\n }: OnPropertyChangedParams) => {\n\n const fullId = id ? getFullId(id, namespace) : undefined;\n const propertyPath = fullId ? idToPropertiesPath(fullId) : undefined;\n\n // If the id has changed we need to a little cleanup\n if (previousId && previousId !== id) {\n\n const previousFullId = getFullId(previousId, namespace);\n const previousPropertyPath = idToPropertiesPath(previousFullId);\n\n const currentPropertiesOrder = getCurrentPropertiesOrder(namespace);\n\n // replace previousId with id in propertiesOrder\n const newPropertiesOrder = currentPropertiesOrder\n .map((p) => p === previousId ? id : p)\n .filter((p) => p !== undefined) as string[];\n\n updatePropertiesOrder(newPropertiesOrder, namespace);\n\n if (id) {\n setSelectedPropertyIndex(newPropertiesOrder.indexOf(id));\n setSelectedPropertyKey(id);\n }\n setFieldValue(previousPropertyPath, undefined, false);\n setFieldTouched(previousPropertyPath, false, false);\n }\n\n if (propertyPath) {\n setFieldValue(propertyPath, property, false);\n setFieldTouched(propertyPath, true, false);\n }\n\n };\n\n const onPropertyErrorInternal = (id: string, namespace?: string, error?: Record<string, any>) => {\n const propertyPath = id ? getFullId(id, namespace) : undefined;\n console.debug(\"onPropertyErrorInternal\", {\n id,\n namespace,\n error,\n propertyPath\n });\n if (propertyPath) {\n const hasError = error && Object.keys(error).length > 0;\n onPropertyError(id, namespace, hasError ? error : undefined);\n setFieldError(idToPropertiesPath(propertyPath), hasError ? \"Property error\" : undefined);\n }\n }\n\n const closePropertyDialog = () => {\n setSelectedPropertyIndex(undefined);\n setSelectedPropertyKey(undefined);\n };\n\n const initialErrors = selectedPropertyKey && propertyErrorsRef?.current?.properties ? propertyErrorsRef.current.properties[selectedPropertyKey] : undefined;\n\n const emptyCollection = values?.propertiesOrder === undefined || values.propertiesOrder.length === 0;\n\n const usedPropertiesOrder = (values.propertiesOrder\n ? values.propertiesOrder\n : Object.keys(values.properties)) as string[];\n\n const owner = useMemo(() => values.ownerId && getUser ? getUser(values.ownerId) : null, [getUser, values.ownerId]);\n\n const onPropertyClick = (propertyKey: string, namespace?: string) => {\n console.debug(\"CollectionEditor: onPropertyClick\", {\n propertyKey,\n namespace\n });\n setSelectedPropertyIndex(usedPropertiesOrder.indexOf(propertyKey));\n setSelectedPropertyKey(propertyKey);\n setSelectedPropertyNamespace(namespace);\n };\n\n const body = (\n <div className={\"grid grid-cols-12 gap-2 h-full bg-surface dark:bg-surface-dark\"}>\n <div className={cls(\n \"bg-surface-50 dark:bg-surface-900\",\n \"p-4 md:p-8 pb-20 md:pb-20\",\n \"col-span-12 lg:col-span-5 h-full overflow-auto\",\n !asDialog && \"border-r \" + defaultBorderMixin\n )}>\n\n <div className=\"flex my-2\">\n\n <div className=\"flex-grow mb-4\">\n\n <Field\n name={\"name\"}\n as={DebouncedTextField}\n invisible={true}\n className=\"-ml-1\"\n inputClassName=\"text-2xl font-headers\"\n placeholder={\"Collection name\"}\n size={\"small\"}\n required\n error={Boolean(errors?.name)}/>\n\n {owner &&\n <Typography variant={\"body2\"}\n className={\"ml-2\"}\n color={\"secondary\"}>\n Created by {owner.displayName}\n </Typography>}\n </div>\n\n {extraIcon && <div className=\"ml-4\">\n {extraIcon}\n </div>}\n\n <div className=\"ml-1 mt-2 flex flex-row gap-2\">\n <Tooltip title={\"Get the code for this collection\"}\n asChild={true}>\n <IconButton\n variant={\"filled\"}\n disabled={inferringProperties}\n onClick={() => setCodeDialogOpen(true)}>\n <CodeIcon/>\n </IconButton>\n </Tooltip>\n {inferPropertiesFromData && <Tooltip title={\"Add new properties based on data\"}\n asChild={true}>\n <IconButton\n variant={\"filled\"}\n disabled={inferringProperties}\n onClick={inferPropertiesFromData}>\n {inferringProperties ? <CircularProgress size={\"small\"}/> : <AutorenewIcon/>}\n </IconButton>\n </Tooltip>}\n <Tooltip title={\"Add new property\"}\n asChild={true}>\n <Button\n variant={\"outlined\"}\n color={\"primary\"}\n onClick={() => setNewPropertyDialogOpen(true)}>\n <AddIcon/>\n </Button>\n </Tooltip>\n </div>\n </div>\n\n <ErrorBoundary>\n <PropertyTree\n className={\"pl-8\"}\n inferredPropertyKeys={inferredPropertyKeys}\n selectedPropertyKey={selectedPropertyKey ? getFullId(selectedPropertyKey, selectedPropertyNamespace) : undefined}\n properties={values.properties}\n additionalFields={values.additionalFields}\n propertiesOrder={usedPropertiesOrder}\n onPropertyClick={onPropertyClick}\n onPropertyMove={onPropertyMove}\n onPropertyRemove={isNewCollection ? deleteProperty : undefined}\n collectionEditable={collectionEditable}\n errors={errors}/>\n </ErrorBoundary>\n\n <Button className={\"mt-8 w-full\"}\n color=\"primary\"\n variant={\"outlined\"}\n size={\"large\"}\n onClick={() => setNewPropertyDialogOpen(true)}\n startIcon={<AddIcon/>}>\n Add new property\n </Button>\n </div>\n\n {!asDialog &&\n <div className={\"col-span-12 lg:col-span-7 p-4 md:py-8 md:px-4 h-full overflow-auto pb-20 md:pb-20\"}>\n <div\n className=\"sticky top-8 min-h-full w-full flex flex-col justify-center\">\n\n {selectedPropertyFullId &&\n selectedProperty &&\n !isPropertyBuilder(selectedProperty) &&\n <PropertyForm\n inArray={false}\n key={`edit_view_${selectedPropertyIndex}`}\n existingProperty={!isNewCollection}\n autoUpdateId={false}\n allowDataInference={!isNewCollection}\n autoOpenTypeSelect={false}\n propertyKey={selectedPropertyKey}\n propertyNamespace={selectedPropertyNamespace}\n property={selectedProperty}\n onPropertyChanged={onPropertyChanged}\n onDelete={deleteProperty}\n onError={onPropertyErrorInternal}\n forceShowErrors={showErrors}\n initialErrors={initialErrors}\n getData={getData}\n propertyConfigs={propertyConfigs}\n collectionEditable={collectionEditable}\n />}\n\n {!selectedProperty &&\n <div className={\"w-full flex flex-col items-center justify-center h-full gap-4\"}>\n <Typography variant={\"label\"} className=\"\">\n {emptyCollection\n ? \"Now you can add your first property\"\n : \"Select a property to edit it\"}\n </Typography>\n <Button variant={\"outlined\"}\n color={\"primary\"}\n onClick={() => setNewPropertyDialogOpen(true)}\n >\n <AddIcon/>\n Add new property\n </Button>\n </div>}\n\n {selectedProperty && isPropertyBuilder(selectedProperty) &&\n <Typography variant={\"label\"} className=\"flex items-center justify-center\">\n {\"This property is defined as a property builder in code\"}\n </Typography>}\n </div>\n </div>}\n\n {asDialog && <PropertyFormDialog\n inArray={false}\n open={selectedPropertyIndex !== undefined}\n key={`edit_view_${selectedPropertyIndex}`}\n autoUpdateId={!selectedProperty}\n allowDataInference={!isNewCollection}\n existingProperty={true}\n autoOpenTypeSelect={false}\n propertyKey={selectedPropertyKey}\n propertyNamespace={selectedPropertyNamespace}\n property={selectedProperty}\n onPropertyChanged={onPropertyChanged}\n onDelete={deleteProperty}\n onError={onPropertyErrorInternal}\n forceShowErrors={showErrors}\n initialErrors={initialErrors}\n getData={getData}\n propertyConfigs={propertyConfigs}\n collectionEditable={collectionEditable}\n onCancel={closePropertyDialog}\n onOkClicked={asDialog\n ? closePropertyDialog\n : undefined\n }/>}\n\n </div>);\n\n return (<>\n\n {body}\n\n {/* This is the dialog used for new properties*/}\n <PropertyFormDialog\n inArray={false}\n existingProperty={false}\n autoOpenTypeSelect={true}\n autoUpdateId={true}\n forceShowErrors={showErrors}\n open={newPropertyDialogOpen}\n onCancel={() => setNewPropertyDialogOpen(false)}\n onPropertyChanged={onPropertyCreated}\n getData={getData}\n allowDataInference={!isNewCollection}\n propertyConfigs={propertyConfigs}\n collectionEditable={collectionEditable}\n existingPropertyKeys={values.propertiesOrder as string[]}/>\n\n <ErrorBoundary>\n <GetCodeDialog\n collection={values}\n open={codeDialogOpen}\n onOpenChange={setCodeDialogOpen}/>\n </ErrorBoundary>\n </>\n );\n}\n","import React from \"react\";\nimport { Button, Dialog, DialogActions, DialogContent, DialogTitle, Typography } from \"@firecms/ui\";\n\nexport interface UnsavedChangesDialogProps {\n open: boolean;\n body?: React.ReactNode;\n title?: string;\n handleOk: () => void;\n handleCancel: () => void;\n}\n\nexport function UnsavedChangesDialog({\n open,\n handleOk,\n handleCancel,\n body,\n title\n }: UnsavedChangesDialogProps) {\n\n return (\n <Dialog\n open={open}\n onOpenChange={(open) => open ? handleCancel() : handleOk()}\n aria-labelledby=\"alert-dialog-title\"\n aria-describedby=\"alert-dialog-description\"\n >\n\n <DialogTitle>{title ?? \"Unsaved changes\"}</DialogTitle>\n <DialogContent className={\"mt-4\"}>\n {body && <Typography>\n {body}\n </Typography>}\n <Typography>\n Are you sure?\n </Typography>\n\n </DialogContent>\n\n <DialogActions>\n <Button variant=\"text\"\n color={\"primary\"}\n onClick={handleCancel} autoFocus> Cancel </Button>\n <Button\n color={\"primary\"}\n onClick={handleOk}> Ok </Button>\n </DialogActions>\n </Dialog>\n );\n}\n","import { useCustomizationController } from \"@firecms/core\";\nimport { Button, Dialog, DialogActions, DialogContent, DialogTitle, Typography } from \"@firecms/ui\";\nimport React from \"react\";\n\nexport function EntityCustomViewsSelectDialog({\n open,\n onClose\n }: { open: boolean, onClose: (selectedViewKey?: string) => void }) {\n const {\n entityViews,\n } = useCustomizationController();\n\n return <Dialog\n maxWidth={\"md\"}\n open={open}>\n <DialogTitle>Select custom view</DialogTitle>\n <DialogContent className={\"flex flex-col gap-4\"}>\n {entityViews?.map((view) => {\n return <Button\n key={view.key}\n onClick={() => onClose(view.key)}\n fullWidth\n variant={\"text\"}\n >\n {view.name} ({view.key})\n </Button>;\n })}\n {(entityViews ?? []).length === 0 &&\n <Typography variant={\"body2\"}>\n No custom views defined. Define your custom views in the customization settings, before using this\n dialog.\n </Typography>\n }\n </DialogContent>\n <DialogActions>\n <Button variant={\"outlined\"}\n color={\"primary\"}\n onClick={() => onClose()}>Cancel</Button>\n </DialogActions>\n </Dialog>\n}\n","import React from \"react\";\nimport {\n ConfirmationDialog,\n EntityCollection,\n EntityCustomView,\n resolveEntityView,\n useCustomizationController,\n User\n} from \"@firecms/core\";\nimport {\n AddIcon,\n Alert,\n Button,\n Container,\n DeleteIcon,\n IconButton,\n Paper,\n Table,\n TableBody,\n TableCell,\n TableRow,\n Tooltip,\n Typography,\n} from \"@firecms/ui\";\nimport { CollectionEditorDialog } from \"./CollectionEditorDialog\";\nimport { CollectionsConfigController } from \"../../types/config_controller\";\nimport { PersistedCollection } from \"../../types/persisted_collection\";\nimport { CollectionInference } from \"../../types/collection_inference\";\nimport { EntityCustomViewsSelectDialog } from \"./EntityCustomViewsSelectDialog\";\nimport { useFormex } from \"@firecms/formex\";\n\nexport function SubcollectionsEditTab({\n collection,\n parentCollection,\n configController,\n collectionInference,\n getUser,\n parentCollectionIds\n }: {\n collection: PersistedCollection,\n parentCollection?: EntityCollection,\n configController: CollectionsConfigController;\n collectionInference?: CollectionInference;\n getUser?: (uid: string) => User | null;\n parentCollectionIds?: string[];\n}) {\n\n const { entityViews: contextEntityViews } = useCustomizationController();\n\n const [subcollectionToDelete, setSubcollectionToDelete] = React.useState<string | undefined>();\n const [addEntityViewDialogOpen, setAddEntityViewDialogOpen] = React.useState<boolean>(false);\n const [viewToDelete, setViewToDelete] = React.useState<string | undefined>();\n\n const [currentDialog, setCurrentDialog] = React.useState<{\n isNewCollection: boolean,\n editedCollectionId?: string,\n }>();\n\n const {\n values,\n setFieldValue,\n } = useFormex<EntityCollection>();\n\n const [subcollections, setSubcollections] = React.useState<EntityCollection[]>(collection.subcollections ?? []);\n const resolvedEntityViews = values.entityViews?.filter(e => typeof e === \"string\")\n .map(e => resolveEntityView(e, contextEntityViews))\n .filter(Boolean) as EntityCustomView[] ?? [];\n const hardCodedEntityViews = collection.entityViews?.filter(e => typeof e !== \"string\") as EntityCustomView[] ?? [];\n const totalEntityViews = resolvedEntityViews.length + hardCodedEntityViews.length;\n\n return (\n <div className={\"overflow-auto my-auto\"}>\n <Container maxWidth={\"2xl\"} className={\"flex flex-col gap-4 p-8 m-auto\"}>\n <div className={\"flex flex-col gap-16\"}>\n\n <div className={\"flex-grow flex flex-col gap-4 items-start\"}>\n <Typography variant={\"h5\"}>\n Subcollections of {values.name}\n </Typography>\n\n <Paper className={\"flex flex-col gap-4 p-2 w-full\"}>\n {subcollections && subcollections.length > 0 && <Table>\n <TableBody>\n {subcollections.map((subcollection) => (\n <TableRow key={subcollection.path}\n onClick={() => setCurrentDialog({\n isNewCollection: false,\n editedCollectionId: subcollection.id\n })}>\n <TableCell\n align=\"left\">\n <Typography variant={\"subtitle2\"} className={\"flex-grow\"}>\n {subcollection.name}\n </Typography>\n </TableCell>\n <TableCell\n align=\"right\">\n <Tooltip title={\"Remove\"}\n asChild={true}>\n <IconButton size=\"small\"\n onClick={(e) => {\n e.preventDefault();\n e.stopPropagation();\n setSubcollectionToDelete(subcollection.id);\n }}\n color=\"inherit\">\n <DeleteIcon size={\"small\"}/>\n </IconButton>\n </Tooltip>\n </TableCell>\n </TableRow>\n ))}\n </TableBody>\n </Table>}\n\n <Button\n onClick={() => {\n setCurrentDialog({\n isNewCollection: true\n });\n }}\n variant={\"text\"}\n startIcon={<AddIcon/>}>\n Add subcollection\n </Button>\n\n </Paper>\n\n </div>\n\n <div className={\"flex-grow flex flex-col gap-4 items-start\"}>\n <Typography variant={\"h5\"}>\n Custom views\n </Typography>\n\n {totalEntityViews === 0 &&\n <Alert action={<Button variant=\"text\"\n size={\"small\"}\n href={\"https://firecms.co/docs/cloud/quickstart\"}\n component={\"a\"}\n rel=\"noopener noreferrer\"\n target=\"_blank\">More info</Button>}>\n Define your own custom views by uploading them with the CLI.\n </Alert>\n }\n\n {<>\n <Paper className={\"flex flex-col gap-4 p-2 w-full\"}>\n <Table>\n <TableBody>\n {resolvedEntityViews.map((view) => (\n <TableRow key={view.key}>\n <TableCell\n align=\"left\">\n <Typography variant={\"subtitle2\"} className={\"flex-grow\"}>\n {view.name}\n </Typography>\n </TableCell>\n <TableCell\n align=\"right\">\n <Tooltip title={\"Remove\"}\n asChild={true}>\n <IconButton size=\"small\"\n onClick={(e) => {\n e.preventDefault();\n e.stopPropagation();\n setViewToDelete(view.key);\n }}\n color=\"inherit\">\n <DeleteIcon size={\"small\"}/>\n </IconButton>\n </Tooltip>\n </TableCell>\n </TableRow>\n ))}\n {hardCodedEntityViews.map((view) => (\n <TableRow key={view.key}>\n <TableCell\n align=\"left\">\n <Typography variant={\"subtitle2\"} className={\"flex-grow\"}>\n {view.name}\n </Typography>\n <Typography variant={\"caption\"} className={\"flex-grow\"}>\n This view is defined in code with\n key <code>{view.key}</code>\n </Typography>\n </TableCell>\n </TableRow>\n ))}\n </TableBody>\n </Table>\n\n <Button\n onClick={() => {\n setAddEntityViewDialogOpen(true);\n }}\n variant={\"text\"}\n startIcon={<AddIcon/>}>\n Add custom entity view\n </Button>\n </Paper>\n\n </>}\n\n\n </div>\n\n </div>\n </Container>\n\n <div style={{ height: \"52px\" }}/>\n\n {subcollectionToDelete &&\n <ConfirmationDialog open={Boolean(subcollectionToDelete)}\n onAccept={() => {\n const props = {\n id: subcollectionToDelete,\n parentCollectionIds: [...(parentCollectionIds ?? []), collection.id]\n };\n console.debug(\"Deleting subcollection\", props)\n configController.deleteCollection(props).then(() => {\n setSubcollectionToDelete(undefined);\n setSubcollections(subcollections?.filter(e => e.id !== subcollectionToDelete))\n });\n }}\n onCancel={() => setSubcollectionToDelete(undefined)}\n title={<>Delete this subcollection?</>}\n body={<> This will <b>not\n delete any data</b>, only\n the collection in the CMS</>}/>}\n {viewToDelete &&\n <ConfirmationDialog open={Boolean(viewToDelete)}\n onAccept={() => {\n setFieldValue(\"entityViews\", values.entityViews?.filter(e => e !== viewToDelete));\n setViewToDelete(undefined);\n }}\n onCancel={() => setViewToDelete(undefined)}\n title={<>Remove this view?</>}\n body={<>This will <b>not\n delete any data</b>, only\n the view in the CMS</>}/>}\n\n <CollectionEditorDialog\n open={Boolean(currentDialog)}\n configController={configController}\n parentCollection={collection}\n collectionInference={collectionInference}\n parentCollectionIds={[...parentCollectionIds ?? [], values.id]}\n isNewCollection={false}\n {...currentDialog}\n getUser={getUser}\n handleClose={(updatedCollection) => {\n if (updatedCollection && !subcollections.map(e => e.id).includes(updatedCollection.id)) {\n setSubcollections([...subcollections, updatedCollection]);\n }\n setCurrentDialog(undefined);\n }}/>\n\n <EntityCustomViewsSelectDialog\n open={addEntityViewDialogOpen}\n onClose={(selectedViewKey) => {\n if (selectedViewKey) {\n setFieldValue(\"entityViews\", [...(values.entityViews ?? []), selectedViewKey]);\n }\n setAddEntityViewDialogOpen(false);\n }}/>\n </div>\n );\n}\n","import { EntityCollection, makePropertiesEditable } from \"@firecms/core\";\n\nexport const productsCollectionTemplate: EntityCollection = {\n id: \"products\",\n path: \"products\",\n name: \"Products\",\n singularName: \"Product\",\n icon: \"shopping_cart\",\n description: \"List of the products currently sold in your shop\",\n properties: makePropertiesEditable({\n name: {\n dataType: \"string\",\n name: \"Name\",\n description: \"Name of this product\",\n validation: {\n required: true\n }\n },\n brand: {\n dataType: \"string\",\n name: \"Brand\",\n validation: {\n required: true\n }\n },\n description: {\n dataType: \"string\",\n name: \"Description\",\n description: \"Description of this product, supports markdown\",\n markdown: true\n },\n main_image: {\n dataType: \"string\",\n name: \"Image\",\n storage: {\n storagePath: \"images\",\n acceptedFiles: [\"image/*\"],\n },\n description: \"Upload field for images\"\n },\n available: {\n dataType: \"boolean\",\n name: \"Available\",\n columnWidth: 100,\n description: \"Is this product available in the website\"\n },\n price: {\n dataType: \"number\",\n name: \"Price\",\n validation: {\n requiredMessage: \"You must set a positive price\",\n min: 0\n }\n },\n images: {\n dataType: \"array\",\n name: \"Images\",\n hideFromCollection: true,\n of: {\n dataType: \"string\",\n storage: {\n storagePath: \"images\",\n acceptedFiles: [\"image/*\"]\n }\n }\n },\n related_products: {\n dataType: \"array\",\n name: \"Related products\",\n description: \"Products related to this one\",\n of: {\n dataType: \"reference\",\n path: \"products\"\n }\n },\n metadata: {\n name: \"Metadata\",\n description: \"This is an example of a map property\",\n dataType: \"map\",\n keyValue: true\n },\n added_on: {\n dataType: \"date\",\n name: \"Added on\",\n autoValue: \"on_create\"\n }\n })\n};\n","import { EntityCollection, makePropertiesEditable } from \"@firecms/core\";\n\nexport const blogCollectionTemplate:EntityCollection = {\n id: \"blog\",\n path: \"blog\",\n name: \"Blog\",\n singularName: \"Blog entry\",\n icon: \"article\",\n description: \"A collection of blog entries\",\n defaultSize: \"l\",\n properties: makePropertiesEditable({\n name: {\n name: \"Name\",\n validation: { required: true },\n dataType: \"string\"\n },\n header_image: {\n name: \"Header image\",\n dataType: \"string\",\n storage: {\n storagePath: \"images\",\n acceptedFiles: [\"image/*\"],\n metadata: {\n cacheControl: \"max-age=1000000\"\n }\n }\n },\n content: {\n name: \"Content\",\n description: \"Content blocks for the blog entry\",\n validation: { required: true },\n dataType: \"array\",\n oneOf: {\n typeField: \"type\",\n valueField: \"value\",\n properties: {\n text: {\n dataType: \"string\",\n name: \"Text\",\n markdown: true\n },\n quote: {\n dataType: \"string\",\n name: \"Quote\",\n multiline: true\n },\n images: {\n name: \"Images\",\n dataType: \"array\",\n of: {\n dataType: \"string\",\n storage: {\n storagePath: \"images\",\n acceptedFiles: [\"image/*\"],\n metadata: {\n cacheControl: \"max-age=1000000\"\n }\n }\n },\n description: \"This fields allows uploading multiple images at once and reordering\"\n },\n products: {\n name: \"Products\",\n dataType: \"array\",\n of: {\n dataType: \"reference\",\n path: \"products\",\n previewProperties: [\"name\", \"main_image\"]\n }\n }\n },\n propertiesOrder: [\"text\", \"quote\", \"images\", \"products\"]\n }\n },\n created_on: {\n name: \"Created on\",\n dataType: \"date\",\n autoValue: \"on_create\"\n },\n status: {\n name: \"Status\",\n validation: { required: true },\n dataType: \"string\",\n enumValues: {\n published: {\n id: \"published\",\n label: \"Published\",\n },\n draft: \"Draft\"\n },\n defaultValue: \"draft\"\n },\n publish_date: {\n name: \"Publish date\",\n dataType: \"date\",\n clearable: true\n },\n reviewed: {\n name: \"Reviewed\",\n dataType: \"boolean\"\n },\n tags: {\n name: \"Tags\",\n description: \"Example of generic array\",\n dataType: \"array\",\n of: {\n dataType: \"string\",\n previewAsTag: true\n }\n }\n })\n};\n","import { EntityCollection, makePropertiesEditable } from \"@firecms/core\";\n\nexport const usersCollectionTemplate: EntityCollection = {\n id: \"users\",\n path: \"users\",\n name: \"Users\",\n singularName: \"User\",\n description: \"Registered users in the app/web\",\n icon: \"person\",\n properties: makePropertiesEditable({\n displayName: {\n name: \"Display name\",\n dataType: \"string\"\n },\n email: {\n name: \"Email\",\n dataType: \"string\",\n email: true\n },\n emailVerified: {\n name: \"Email verified\",\n dataType: \"boolean\"\n },\n phone: {\n name: \"Phone\",\n dataType: \"string\"\n },\n favourite_products: {\n name: \"Favourite products\",\n dataType: \"array\",\n of: {\n dataType: \"reference\",\n path: \"products\"\n }\n },\n photoURL: {\n name: \"Photo URL\",\n dataType: \"string\",\n url: \"image\"\n }\n }),\n};\n","import { EntityCollection } from \"@firecms/core\";\n\nexport const pagesCollectionTemplate: EntityCollection = {\n id: \"pages\",\n path: \"pages\",\n name: \"Pages\",\n singularName: \"Page\",\n icon: \"insert_drive_file\",\n description: \"List of website pages that can be edited here\",\n properties: {\n title: {\n dataType: \"string\",\n name: \"Page Title\",\n validation: { required: true }\n },\n slug: {\n dataType: \"string\",\n name: \"URL Slug\",\n validation: {\n required: true,\n unique: true,\n matches: \"^[a-z0-9]+(?:-[a-z0-9]+)*$\",\n matchesMessage: \"Must be lowercase, alphanumeric, and hyphenated\"\n }\n },\n hero_section: {\n dataType: \"map\",\n name: \"Hero Section\",\n properties: {\n headline: {\n dataType: \"string\",\n name: \"Headline\",\n validation: { required: true }\n },\n subhead: {\n dataType: \"string\",\n name: \"Subheadline\"\n },\n background_image: {\n dataType: \"string\",\n name: \"Background Image\",\n storage: {\n storagePath: \"page_hero/images\",\n acceptedFiles: [\"image/*\"],\n }\n },\n call_to_action: {\n dataType: \"string\",\n name: \"Call to Action\"\n },\n call_to_action_link: {\n dataType: \"string\",\n name: \"CTA Link\",\n url: true\n }\n }\n },\n content: {\n dataType: \"array\",\n name: \"Content\",\n oneOf: {\n properties: {\n section: {\n dataType: \"map\",\n name: \"Section\",\n properties: {\n title: {\n dataType: \"string\",\n name: \"Section Title\",\n validation: { required: true }\n },\n content: {\n dataType: \"string\",\n name: \"Section Content\",\n markdown: true\n },\n image: {\n dataType: \"string\",\n name: \"Section Image\",\n storage: {\n storagePath: \"page_sections/images\",\n acceptedFiles: [\"image/*\"]\n }\n },\n link: {\n dataType: \"string\",\n name: \"Section Link\",\n url: true\n }\n }\n },\n image: {\n dataType: \"string\",\n name: \"Image\",\n storage: {\n storagePath: \"page_sections/images\",\n acceptedFiles: [\"image/*\"]\n }\n },\n slider: {\n dataType: \"array\",\n name: \"Slider\",\n of: {\n dataType: \"map\",\n properties: {\n title: {\n dataType: \"string\",\n name: \"Title\",\n validation: { required: true }\n },\n image: {\n dataType: \"string\",\n storage: {\n storagePath: \"page_sections/images\",\n acceptedFiles: [\"image/*\"]\n }\n }\n }\n }\n },\n }\n }\n },\n sidebar: {\n dataType: \"map\",\n name: \"Sidebar\",\n properties: {\n title: {\n dataType: \"string\",\n name: \"Sidebar Title\",\n validation: { required: false }\n },\n content: {\n dataType: \"string\",\n name: \"Sidebar Content\",\n markdown: true\n }\n }\n },\n seo_metadata: {\n dataType: \"map\",\n name: \"SEO Metadata\",\n properties: {\n meta_title: {\n dataType: \"string\",\n name: \"Meta Title\"\n },\n meta_description: {\n dataType: \"string\",\n name: \"Meta Description\"\n },\n focus_keywords: {\n dataType: \"array\",\n name: \"Focus Keywords\",\n of: {\n dataType: \"string\"\n }\n }\n }\n },\n footer_override: {\n dataType: \"string\",\n name: \"Footer Override\",\n markdown: true\n },\n publish_date: {\n dataType: \"date\",\n name: \"Publish Date\",\n validation: { required: true }\n },\n last_updated: {\n dataType: \"date\",\n name: \"Last Updated\",\n autoValue: \"on_update\"\n },\n is_published: {\n dataType: \"boolean\",\n name: \"Is Published\",\n columnWidth: 100,\n description: \"Should this page be live on the site?\"\n }\n }\n};\n","import React from \"react\";\nimport { EntityCollection, prettifyIdentifier, } from \"@firecms/core\";\nimport { Card, Chip, cls, Container, Icon, Tooltip, Typography, } from \"@firecms/ui\";\n\nimport { productsCollectionTemplate } from \"./templates/products_template\";\nimport { blogCollectionTemplate } from \"./templates/blog_template\";\nimport { usersCollectionTemplate } from \"./templates/users_template\";\nimport { ImportFileUpload } from \"@firecms/data_import\";\nimport { pagesCollectionTemplate } from \"./templates/pages_template\";\nimport { useFormex } from \"@firecms/formex\";\nimport { useCollectionEditorController } from \"../../useCollectionEditorController\";\n\nexport function CollectionEditorWelcomeView({\n path,\n parentCollection,\n onContinue,\n existingCollectionPaths\n }: {\n path: string;\n parentCollection?: EntityCollection;\n onContinue: (importData?: object[], propertiesOrder?: string[]) => void;\n existingCollectionPaths?: string[];\n}) {\n\n const { pathSuggestions } = useCollectionEditorController();\n\n const filteredSuggestions = (pathSuggestions ?? []).filter(s => !(existingCollectionPaths ?? []).find(c => c.trim().toLowerCase() === s.trim().toLowerCase()));\n\n const {\n values,\n setFieldValue,\n setValues,\n submitCount\n } = useFormex<EntityCollection>();\n\n return (\n <div className={\"overflow-auto my-auto\"}>\n <Container maxWidth={\"4xl\"} className={\"flex flex-col gap-4 p-8 m-auto\"}>\n\n <div\n className=\"flex flex-row py-2 pt-3 items-center\">\n <Typography variant={\"h4\"} className={\"flex-grow\"}>\n New collection\n </Typography>\n </div>\n\n {parentCollection && <Chip colorScheme={\"tealDarker\"}>\n <Typography variant={\"caption\"}>\n This is a subcollection of <b>{parentCollection.name}</b>\n </Typography>\n </Chip>}\n\n {(filteredSuggestions ?? []).length > 0 && <div className={\"my-2\"}>\n\n <Typography variant={\"caption\"}\n color={\"secondary\"}>\n ● Use one of the existing paths in your database:\n </Typography>\n <div className={\"flex flex-wrap gap-x-2 gap-y-1 items-center my-2 min-h-7\"}>\n\n {filteredSuggestions?.map((suggestion, index) => (\n <Chip key={suggestion}\n colorScheme={\"cyanLighter\"}\n onClick={() => {\n setFieldValue(\"name\", prettifyIdentifier(suggestion));\n setFieldValue(\"id\", suggestion);\n setFieldValue(\"path\", suggestion);\n setFieldValue(\"properties\", undefined);\n onContinue();\n }}\n size=\"small\">\n {suggestion}\n </Chip>\n ))}\n\n </div>\n\n </div>}\n\n <div className={\"my-2\"}>\n <Typography variant={\"caption\"}\n color={\"secondary\"}>\n ● Select a template:\n </Typography>\n\n <div className={\"flex gap-4\"}>\n <TemplateButton title={\"Products\"}\n subtitle={\"A collection of products with images, prices and stock\"}\n icon={<Icon size={\"small\"}\n iconKey={productsCollectionTemplate.icon! as string}/>}\n onClick={() => {\n setValues(productsCollectionTemplate);\n onContinue();\n }}/>\n <TemplateButton title={\"Users\"}\n subtitle={\"A collection of users with emails, names and roles\"}\n icon={<Icon size={\"small\"} iconKey={usersCollectionTemplate.icon! as string}/>}\n onClick={() => {\n setValues(usersCollectionTemplate);\n onContinue();\n }}/>\n <TemplateButton title={\"Blog posts\"}\n subtitle={\"A collection of blog posts with images, authors and complex content\"}\n icon={<Icon size={\"small\"} iconKey={blogCollectionTemplate.icon! as string}/>}\n onClick={() => {\n setValues(blogCollectionTemplate);\n onContinue();\n }}/>\n <TemplateButton title={\"Pages\"}\n subtitle={\"A collection of pages with images, authors and complex content\"}\n icon={<Icon size={\"small\"} iconKey={pagesCollectionTemplate.icon! as string}/>}\n onClick={() => {\n setValues(pagesCollectionTemplate);\n onContinue();\n }}/>\n </div>\n\n </div>\n\n {!parentCollection && <div>\n\n <Typography variant={\"caption\"}\n color={\"secondary\"}\n className={\"mb-2\"}>\n ● Create a collection from a file (csv, json, xls, xslx...)\n </Typography>\n\n <ImportFileUpload onDataAdded={(data, propertiesOrder) => onContinue(data, propertiesOrder)}/>\n\n </div>}\n\n\n {/*<div style={{ height: \"52px\" }}/>*/}\n\n </Container>\n </div>\n );\n}\n\nexport function TemplateButton({\n title,\n subtitle,\n icon,\n onClick\n }: {\n title: string,\n icon: React.ReactNode,\n subtitle: string,\n onClick?: () => void\n}) {\n\n return (\n <Tooltip title={subtitle}\n asChild={true}>\n <Card\n onClick={onClick}\n className={cls(\n \"my-2 rounded-md border mx-0 p-6 px-4 focus:outline-none transition ease-in-out duration-150 flex flex-row gap-4 items-center\",\n \"text-text-secondary dark:text-text-secondary-dark\",\n \"hover:border-primary-dark hover:text-primary-dark dark:hover:text-primary focus:ring-primary hover:ring-1 hover:ring-primary\",\n \"border-surface-400 dark:border-surface-600 \"\n )}\n >\n {icon}\n <div className={\"flex flex-col items-start\"}>\n\n <Typography variant={\"subtitle1\"}>\n {title}\n </Typography>\n\n </div>\n </Card>\n </Tooltip>\n );\n\n}\n","import {\n DataNewPropertiesMapping,\n getInferenceType,\n ImportConfig,\n ImportNewPropertyFieldPreview\n} from \"@firecms/data_import\";\nimport { getIn, useFormex } from \"@firecms/formex\";\n\nimport { getFieldConfig, getFieldId, Properties, Property, PropertyConfig, PropertyConfigBadge, } from \"@firecms/core\";\nimport { cls, Container, Select, SelectItem, Tooltip, Typography } from \"@firecms/ui\";\nimport React, { useState } from \"react\";\nimport { OnPropertyChangedParams, PropertyFormDialog, PropertyWithId } from \"../PropertyEditView\";\nimport { getFullId, idToPropertiesPath, namespaceToPropertiesOrderPath } from \"../util\";\nimport { PersistedCollection } from \"../../../types/persisted_collection\";\nimport { updatePropertyFromWidget } from \"../utils/update_property_for_widget\";\nimport { supportedFields } from \"../utils/supported_fields\";\nimport { buildPropertyFromData } from \"@firecms/schema_inference\";\n\nexport function CollectionEditorImportMapping({\n importConfig,\n propertyConfigs,\n collectionEditable\n }:\n {\n importConfig: ImportConfig,\n propertyConfigs: Record<string, PropertyConfig>,\n collectionEditable: boolean\n }) {\n\n // const {\n // values,\n // setFieldValue,\n // setFieldTouched,\n // setValues,\n // submitCount\n // } = useFormex();\n\n const {\n setFieldValue,\n setFieldTouched,\n values\n } = useFormex<PersistedCollection>();\n const [selectedProperty, setSelectedProperty] = useState<PropertyWithId | undefined>(undefined);\n\n const currentPropertiesOrderRef = React.useRef<{\n [key: string]: string[]\n }>(values.propertiesOrder ? { \"\": values.propertiesOrder } : {});\n\n const propertyKey = selectedProperty ? selectedProperty.id : undefined;\n const property = selectedProperty || undefined;\n\n const onPropertyChanged = ({\n id,\n property,\n previousId,\n namespace\n }: OnPropertyChangedParams) => {\n\n const fullId = id ? getFullId(id, namespace) : undefined;\n const propertyPath = fullId ? idToPropertiesPath(fullId) : undefined;\n\n // setSelectedProperty(property);\n const getCurrentPropertiesOrder = (namespace?: string) => {\n if (!namespace) return currentPropertiesOrderRef.current[\"\"];\n return currentPropertiesOrderRef.current[namespace] ?? getIn(values, namespaceToPropertiesOrderPath(namespace));\n }\n\n const updatePropertiesOrder = (newPropertiesOrder: string[], namespace?: string) => {\n const propertiesOrderPath = namespaceToPropertiesOrderPath(namespace);\n\n setFieldValue(propertiesOrderPath, newPropertiesOrder, false);\n currentPropertiesOrderRef.current[namespace ?? \"\"] = newPropertiesOrder;\n\n };\n\n // If the id has changed we need to a little cleanup\n if (previousId && previousId !== id) {\n const previousFullId = getFullId(previousId, namespace);\n const previousPropertyPath = idToPropertiesPath(previousFullId);\n\n const currentPropertiesOrder = getCurrentPropertiesOrder(namespace);\n\n // replace previousId with id in propertiesOrder\n const newPropertiesOrder = currentPropertiesOrder\n .map((p) => p === previousId ? id : p)\n .filter((p) => p !== undefined) as string[];\n updatePropertiesOrder(newPropertiesOrder, namespace);\n\n // replace previousId with id in headersMapping\n const newHeadersMapping = { ...importConfig.headersMapping };\n Object.keys(newHeadersMapping).forEach((key) => {\n if (newHeadersMapping[key] === previousId) {\n newHeadersMapping[key] = id ?? \"\";\n }\n });\n importConfig.setHeadersMapping(newHeadersMapping);\n\n // if (id) {\n // setSelectedPropertyIndex(newPropertiesOrder.indexOf(id));\n // setSelectedPropertyKey(id);\n // }\n setFieldValue(previousPropertyPath, undefined, false);\n setFieldTouched(previousPropertyPath, false, false);\n }\n\n if (propertyPath) {\n setFieldValue(propertyPath, property, false);\n setFieldTouched(propertyPath, true, false);\n }\n };\n const onPropertyTypeChanged = async ({\n id,\n importKey,\n property,\n namespace\n }: OnPropertyChangedParams & {\n importKey: string\n }) => {\n\n const fullId = id ? getFullId(id, namespace) : undefined;\n const propertyPath = fullId ? idToPropertiesPath(fullId) : undefined;\n\n // we try to infer the rest of the properties of a property, from the type and the data\n const propertyData = importConfig.importData.map((d) => getIn(d, importKey));\n const inferredNewProperty = {\n ...buildPropertyFromData(propertyData, property, getInferenceType),\n editable: true\n };\n\n if (propertyPath) {\n if (inferredNewProperty) {\n setFieldValue(propertyPath, inferredNewProperty, false);\n } else {\n setFieldValue(propertyPath, property, false);\n }\n setFieldTouched(propertyPath, true, false);\n }\n };\n\n return (\n\n <div className={\"overflow-auto my-auto\"}>\n <Container maxWidth={\"6xl\"} className={\"flex flex-col gap-4 p-8 m-auto\"}>\n\n <Typography variant=\"h6\" className={\"my-4 ml-3.5\"}>Data property mapping</Typography>\n\n <DataNewPropertiesMapping importConfig={importConfig}\n destinationProperties={values.properties as Properties}\n buildPropertyView={({\n property,\n propertyKey,\n importKey,\n isIdColumn\n }) => {\n if (isIdColumn) {\n return <Typography> This column will be used as ID</Typography>\n }\n\n return <ImportNewPropertyFieldPreview\n property={property}\n propertyKey={propertyKey}\n onPropertyNameChanged={(propertyKey: string, value: string) => setFieldValue(`properties.${propertyKey}.name`, value, false)}\n onEditClick={() => {\n if (!propertyKey || !property) return;\n setSelectedProperty({\n ...property,\n id: propertyKey,\n editable: true\n });\n }}\n propertyTypeView={<PropertySelect property={property}\n disabled={false}\n onPropertyChanged={(props) => onPropertyTypeChanged({\n ...props,\n importKey\n })}\n propertyKey={propertyKey}\n propertyConfigs={propertyConfigs}/>}\n />;\n }}/>\n </Container>\n\n <PropertyFormDialog\n open={selectedProperty !== undefined}\n propertyKey={propertyKey}\n property={property}\n inArray={false}\n autoUpdateId={false}\n onPropertyChanged={onPropertyChanged}\n allowDataInference={false}\n collectionEditable={collectionEditable}\n onOkClicked={() => {\n setSelectedProperty(undefined);\n }}\n onCancel={() => {\n setSelectedProperty(undefined);\n }}\n autoOpenTypeSelect={false}\n existingProperty={false}\n propertyConfigs={propertyConfigs}/>\n\n <div style={{ height: \"52px\" }}/>\n </div>\n );\n\n}\n\nfunction PropertySelect({\n property,\n onPropertyChanged,\n propertyKey,\n propertyConfigs,\n disabled\n }: {\n property: Property | null,\n propertyKey: string | null,\n onPropertyChanged: ({\n id,\n property,\n previousId,\n namespace\n }: OnPropertyChangedParams) => void,\n propertyConfigs: Record<string, PropertyConfig>,\n disabled?: boolean\n}) {\n\n const fieldId = property ? getFieldId(property) : null;\n const widget = property ? getFieldConfig(property, propertyConfigs) : null;\n\n const [selectOpen, setSelectOpen] = useState(false);\n\n return <Tooltip title={property && widget ? `${widget?.name} - ${property.dataType}` : undefined}\n open={selectOpen ? false : undefined}>\n <Select\n open={selectOpen}\n onOpenChange={setSelectOpen}\n invisible={true}\n size={\"large\"}\n className={\"w-full\"}\n disabled={disabled}\n error={!widget}\n fullWidth={true}\n value={fieldId ?? \"\"}\n placeholder={\"Select a property widget\"}\n position={\"item-aligned\"}\n renderValue={(value) => {\n if (!widget) return null;\n return <PropertyConfigBadge propertyConfig={widget}/>\n }}\n onValueChange={(newSelectedWidgetId) => {\n const newProperty = updatePropertyFromWidget(property, newSelectedWidgetId, propertyConfigs)\n if (!propertyKey) return;\n onPropertyChanged({\n id: propertyKey,\n property: newProperty,\n previousId: propertyKey,\n namespace: undefined\n });\n }}>\n {Object.entries(supportedFields).map(([key, widget]) => {\n return <PropertySelectItem\n key={key}\n value={key}\n optionDisabled={false}\n propertyConfig={widget}\n existing={false}/>;\n })\n }\n </Select>\n </Tooltip>;\n}\n\nexport interface PropertySelectItemProps {\n value: string;\n optionDisabled: boolean;\n propertyConfig: PropertyConfig;\n existing: boolean;\n}\n\nexport function PropertySelectItem({ value, optionDisabled, propertyConfig, existing }: PropertySelectItemProps) {\n return <SelectItem value={value}\n disabled={optionDisabled}\n className={\"flex flex-row items-center\"}>\n <div\n className={cls(\n \"flex flex-row items-center text-base min-h-[48px]\",\n optionDisabled ? \"w-full\" : \"\")}>\n <div className={\"mr-8\"}>\n <PropertyConfigBadge propertyConfig={propertyConfig}/>\n </div>\n <div>\n <div>{propertyConfig.name}</div>\n <Typography variant={\"caption\"}\n color={\"disabled\"}\n className={\"max-w-sm\"}>\n {existing && optionDisabled ? \"You can only switch to widgets that use the same data type\" : propertyConfig.description}\n </Typography>\n </div>\n </div>\n </SelectItem>\n}\n","import { convertDataToEntity, ImportConfig } from \"@firecms/data_import\";\nimport {\n CircularProgressCenter,\n EntityCollectionTable,\n Properties,\n useAuthController,\n useNavigationController,\n useSelectionController\n} from \"@firecms/core\";\nimport { useEffect, useState } from \"react\";\nimport { Typography } from \"@firecms/ui\";\n\nexport function CollectionEditorImportDataPreview({\n importConfig,\n properties,\n propertiesOrder\n }: {\n importConfig: ImportConfig,\n properties: Properties,\n propertiesOrder: string[]\n}) {\n\n const authController = useAuthController();\n const navigation = useNavigationController();\n const [loading, setLoading] = useState<boolean>(false);\n\n async function loadEntities() {\n const mappedData = importConfig.importData.map(d => convertDataToEntity(authController,\n navigation,\n d,\n importConfig.idColumn,\n importConfig.headersMapping,\n properties,\n \"TEMP_PATH\",\n importConfig.defaultValues));\n importConfig.setEntities(mappedData);\n }\n\n useEffect(() => {\n loadEntities().finally(() => setLoading(false));\n }, []);\n\n const selectionController = useSelectionController();\n if (loading)\n return <CircularProgressCenter/>\n\n return <EntityCollectionTable\n title={<div>\n <Typography variant={\"subtitle2\"}>Imported data preview</Typography>\n <Typography variant={\"caption\"}>Entities with the same id will be overwritten</Typography>\n </div>}\n tableController={{\n data: importConfig.entities,\n dataLoading: false,\n noMoreToLoad: false\n }}\n endAdornment={<div className={\"h-12\"}/>}\n filterable={false}\n sortable={false}\n selectionController={selectionController}\n displayedColumnIds={propertiesOrder.map(p => ({\n key: p,\n disabled: false\n }))}\n openEntityMode={\"side_panel\"}\n properties={properties}\n enablePopupIcon={false}/>\n\n}\n","import { Properties, slugify } from \"@firecms/core\";\nimport { ImportConfig } from \"@firecms/data_import\";\n\nexport function cleanPropertiesFromImport(properties: Properties, parentSlug = \"\"): {\n headersMapping: ImportConfig[\"headersMapping\"],\n properties: Properties,\n idColumn?: ImportConfig[\"idColumn\"],\n} {\n\n const result = Object.keys(properties).reduce((acc, key) => {\n const property = properties[key];\n const slug = slugify(key);\n const fullSlug = parentSlug ? `${parentSlug}.${slug}` : slug;\n\n if (property.dataType === \"map\" && property.properties) {\n const slugifiedResult = cleanPropertiesFromImport(property.properties as Properties, fullSlug);\n return {\n headersMapping: { ...acc.headersMapping, [key]: fullSlug },\n properties: {\n ...acc.properties,\n [slug]: {\n ...property,\n properties: slugifiedResult.properties,\n propertiesOrder: Object.keys(slugifiedResult.properties)\n }\n }\n }\n }\n\n const updatedProperties = {\n ...acc.properties,\n [slug]: property\n } as Properties;\n\n const headersMapping = { ...acc.headersMapping, [key]: fullSlug } as Record<string, string>;\n\n return {\n headersMapping,\n properties: updatedProperties,\n }\n }, { headersMapping: {}, properties: {} });\n\n const firstKey = Object.keys(result.headersMapping)?.[0];\n let idColumn: string | undefined;\n if (firstKey?.includes(\"id\") || firstKey?.includes(\"key\")) {\n idColumn = firstKey;\n }\n\n return {\n ...result,\n idColumn\n };\n}\n","import { useCustomizationController } from \"@firecms/core\";\nimport { Button, Dialog, DialogActions, DialogContent, DialogTitle, Typography } from \"@firecms/ui\";\nimport React from \"react\";\n\nexport function EntityActionsSelectDialog({\n open,\n onClose\n }: { open: boolean, onClose: (selectedActionKey?: string) => void }) {\n const {\n entityActions\n } = useCustomizationController();\n\n return <Dialog\n maxWidth={\"md\"}\n open={open}>\n <DialogTitle>Select custom action</DialogTitle>\n <DialogContent className={\"flex flex-col gap-4\"}>\n {entityActions?.map((action) => {\n return <Button\n key={action.key}\n onClick={() => onClose(action.key)}\n fullWidth\n variant={\"text\"}\n >\n {action.name} ({action.key})\n </Button>;\n })}\n {(entityActions ?? []).length === 0 &&\n <Typography variant={\"body2\"}>\n No custom actions defined. Define your custom actions in the customization settings, before using this\n dialog.\n </Typography>\n }\n </DialogContent>\n <DialogActions>\n <Button variant={\"outlined\"}\n color={\"primary\"}\n onClick={() => onClose()}>Cancel</Button>\n </DialogActions>\n </Dialog>\n}\n","import React from \"react\";\nimport {\n ConfirmationDialog,\n EntityAction,\n EntityCollection,\n resolveEntityAction,\n useCustomizationController\n} from \"@firecms/core\";\nimport {\n AddIcon,\n Alert,\n Button,\n Container,\n DeleteIcon,\n IconButton,\n Paper,\n Table,\n TableBody,\n TableCell,\n TableRow,\n Tooltip,\n Typography,\n} from \"@firecms/ui\";\nimport { PersistedCollection } from \"../../types/persisted_collection\";\nimport { useFormex } from \"@firecms/formex\";\nimport { EntityActionsSelectDialog } from \"./EntityActionsSelectDialog\";\n\nexport function EntityActionsEditTab({\n collection,\n }: {\n collection: PersistedCollection,\n}) {\n\n const { entityActions: contextEntityActions } = useCustomizationController();\n\n const [addEntityActionDialogOpen, setAddEntityActionDialogOpen] = React.useState<boolean>(false);\n const [actionToDelete, setActionToDelete] = React.useState<string | undefined>();\n\n const {\n values,\n setFieldValue\n } = useFormex<EntityCollection>();\n\n const resolvedEntityActions = values.entityActions?.filter((e): e is string => typeof e === \"string\")\n .map(e => resolveEntityAction(e, contextEntityActions))\n .filter(Boolean) as EntityAction<any>[] ?? [];\n const hardCodedEntityActions = collection.entityActions?.filter((e): e is EntityAction<any> => typeof e !== \"string\") ?? [];\n const totalEntityActions = resolvedEntityActions.length + hardCodedEntityActions.length;\n\n return (\n <div className={\"overflow-auto my-auto\"}>\n <Container maxWidth={\"2xl\"} className={\"flex flex-col gap-4 p-8 m-auto\"}>\n <div className={\"flex flex-col gap-16\"}>\n <div className={\"flex-grow flex flex-col gap-4 items-start\"}>\n <Typography variant={\"h5\"}>\n Custom actions\n </Typography>\n\n {totalEntityActions === 0 &&\n <Alert action={<Button variant=\"text\"\n size={\"small\"}\n href={\"https://firecms.co/docs/custom_actions\"}\n component={\"a\"}\n rel=\"noopener noreferrer\"\n target=\"_blank\">More info</Button>}>\n Define your own custom actions by uploading them with the CLI.\n </Alert>\n }\n\n {<>\n <Paper className={\"flex flex-col gap-4 p-2 w-full\"}>\n <Table>\n <TableBody>\n {resolvedEntityActions.map((action) => (\n <TableRow key={action.key}>\n <TableCell\n align=\"left\">\n <Typography variant={\"subtitle2\"} className={\"flex-grow\"}>\n {action.name}\n </Typography>\n </TableCell>\n <TableCell\n align=\"right\">\n <Tooltip title={\"Remove\"}\n asChild={true}>\n <IconButton size=\"small\"\n onClick={(e) => {\n e.preventDefault();\n e.stopPropagation();\n setActionToDelete(action.key);\n }}\n color=\"inherit\">\n <DeleteIcon size={\"small\"}/>\n </IconButton>\n </Tooltip>\n </TableCell>\n </TableRow>\n ))}\n {hardCodedEntityActions.map((action) => (\n <TableRow key={action.key}>\n <TableCell\n align=\"left\">\n <Typography variant={\"subtitle2\"} className={\"flex-grow\"}>\n {action.name}\n </Typography>\n <Typography variant={\"caption\"} className={\"flex-grow\"}>\n This action is defined in code with\n key <code>{action.key}</code>\n </Typography>\n </TableCell>\n </TableRow>\n ))}\n </TableBody>\n </Table>\n\n <Button\n onClick={() => {\n setAddEntityActionDialogOpen(true);\n }}\n variant={\"text\"}\n startIcon={<AddIcon/>}>\n Add custom entity action\n </Button>\n </Paper>\n\n </>}\n\n\n </div>\n\n </div>\n </Container>\n\n <div style={{ height: \"52px\" }}/>\n\n {actionToDelete &&\n <ConfirmationDialog open={Boolean(actionToDelete)}\n onAccept={() => {\n setFieldValue(\"entityActions\", values.entityActions?.filter(e => e !== actionToDelete));\n setActionToDelete(undefined);\n }}\n onCancel={() => setActionToDelete(undefined)}\n title={<>Remove this action?</>}\n body={<>This will <b>not\n delete any data</b>, only\n the action in the CMS</>}/>}\n\n <EntityActionsSelectDialog\n open={addEntityActionDialogOpen}\n onClose={(selectedActionKey) => {\n if (selectedActionKey) {\n console.log(\"Selected action key:\", selectedActionKey);\n const value = [...(values.entityActions ?? []), selectedActionKey]\n // only actions that are defined in the registry\n .filter((e): e is string => typeof e === \"string\" && (contextEntityActions ?? []).some(action => action.key === e));\n ;\n setFieldValue(\"entityActions\", value);\n }\n setAddEntityActionDialogOpen(false);\n }}/>\n </div>\n );\n}\n","import * as React from \"react\";\nimport { useEffect, useRef, useState } from \"react\";\nimport {\n CircularProgressCenter,\n ConfirmationDialog,\n Entity,\n EntityCollection,\n ErrorView,\n isPropertyBuilder,\n MapProperty,\n mergeDeep,\n NavigationResult,\n Properties,\n PropertiesOrBuilders,\n Property,\n PropertyConfig,\n PropertyOrBuilder,\n randomString,\n removeInitialAndTrailingSlashes,\n removeUndefined,\n useAuthController,\n useCustomizationController,\n useNavigationController,\n User,\n useSnackbarController\n} from \"@firecms/core\";\nimport {\n ArrowBackIcon,\n Button,\n CheckIcon,\n cls,\n coolIconKeys,\n defaultBorderMixin,\n Dialog,\n DialogActions,\n DialogContent,\n DialogTitle,\n IconButton,\n LoadingButton,\n Tab,\n Tabs,\n Typography\n} from \"@firecms/ui\";\nimport { YupSchema } from \"./CollectionYupValidation\";\nimport { CollectionDetailsForm } from \"./CollectionDetailsForm\";\nimport { CollectionPropertiesEditorForm } from \"./CollectionPropertiesEditorForm\";\nimport { UnsavedChangesDialog } from \"./UnsavedChangesDialog\";\nimport { SubcollectionsEditTab } from \"./SubcollectionsEditTab\";\nimport { CollectionsConfigController } from \"../../types/config_controller\";\nimport { CollectionEditorWelcomeView } from \"./CollectionEditorWelcomeView\";\nimport { CollectionInference } from \"../../types/collection_inference\";\nimport { getInferenceType, ImportSaveInProgress, useImportConfig } from \"@firecms/data_import\";\nimport { buildEntityPropertiesFromData } from \"@firecms/schema_inference\";\nimport { CollectionEditorImportMapping } from \"./import/CollectionEditorImportMapping\";\nimport { CollectionEditorImportDataPreview } from \"./import/CollectionEditorImportDataPreview\";\nimport { cleanPropertiesFromImport } from \"./import/clean_import_data\";\nimport { PersistedCollection } from \"../../types/persisted_collection\";\nimport { Formex, FormexController, useCreateFormex } from \"@firecms/formex\";\nimport { getFullIdPath } from \"./util\";\nimport { EntityActionsEditTab } from \"./EntityActionsEditTab\";\n\nexport interface CollectionEditorDialogProps {\n open: boolean;\n isNewCollection: boolean;\n initialValues?: {\n group?: string,\n path?: string,\n name?: string,\n }\n editedCollectionId?: string;\n fullPath?: string; // full path of this particular collection, like `products/123/locales`\n parentCollectionIds?: string[]; // path ids of the parent collection, like [`products`]\n handleClose: (collection?: EntityCollection) => void;\n configController: CollectionsConfigController;\n reservedGroups?: string[];\n collectionInference?: CollectionInference;\n extraView?: {\n View: React.ComponentType<{\n path: string\n }>,\n icon: React.ReactNode\n };\n getUser?: (uid: string) => User | null;\n getData?: (path: string, parentPaths: string[]) => Promise<object[]>;\n parentCollection?: PersistedCollection;\n existingEntities?: Entity<any>[];\n}\n\nexport function CollectionEditorDialog(props: CollectionEditorDialogProps) {\n\n const open = props.open;\n\n const [formDirty, setFormDirty] = React.useState<boolean>(false);\n const [unsavedChangesDialogOpen, setUnsavedChangesDialogOpen] = React.useState<boolean>(false);\n\n const handleCancel = () => {\n if (!formDirty) {\n props.handleClose(undefined);\n } else {\n setUnsavedChangesDialogOpen(true);\n }\n };\n\n useEffect(() => {\n if (!open) {\n setFormDirty(false);\n setUnsavedChangesDialogOpen(false);\n }\n }, [open]);\n\n return (\n <Dialog\n open={open}\n fullWidth={true}\n fullHeight={true}\n scrollable={false}\n maxWidth={\"7xl\"}\n onOpenChange={(open) => !open ? handleCancel() : undefined}\n >\n <DialogTitle hidden>Collection editor</DialogTitle>\n {open && <CollectionEditor {...props}\n handleCancel={handleCancel}\n setFormDirty={setFormDirty}/>}\n\n <UnsavedChangesDialog\n open={unsavedChangesDialogOpen}\n handleOk={() => props.handleClose(undefined)}\n handleCancel={() => setUnsavedChangesDialogOpen(false)}\n body={\"There are unsaved changes in this collection\"}/>\n\n </Dialog>\n );\n}\n\ntype EditorView = \"welcome\"\n | \"details\"\n | \"import_data_mapping\"\n | \"import_data_preview\"\n | \"import_data_saving\"\n | \"properties\"\n | \"loading\"\n | \"extra_view\"\n | \"subcollections\"\n | \"custom_actions\";\n\nexport function CollectionEditor(props: CollectionEditorDialogProps & {\n handleCancel: () => void,\n setFormDirty: (dirty: boolean) => void\n}) {\n const { propertyConfigs } = useCustomizationController();\n const navigation = useNavigationController();\n const authController = useAuthController();\n\n const {\n topLevelNavigation,\n collections\n } = navigation;\n\n const initialValuesProp = props.initialValues;\n const includeTemplates = !initialValuesProp?.path && (props.parentCollectionIds ?? []).length === 0;\n const collectionsInThisLevel = (props.parentCollection ? props.parentCollection.subcollections : collections) ?? [];\n const existingPaths = collectionsInThisLevel.map(col => col.path.trim().toLowerCase());\n const existingIds = collectionsInThisLevel.map(col => col.id?.trim().toLowerCase()).filter(Boolean) as string[];\n const [collection, setCollection] = React.useState<PersistedCollection<any> | undefined>();\n const [initialLoadingCompleted, setInitialLoadingCompleted] = React.useState(false);\n\n useEffect(() => {\n try {\n if (navigation.initialised) {\n if (props.editedCollectionId) {\n setCollection(navigation.getCollectionFromPaths([...(props.parentCollectionIds ?? []), props.editedCollectionId]));\n } else {\n setCollection(undefined);\n }\n setInitialLoadingCompleted(true);\n }\n } catch (e) {\n console.error(e);\n }\n }, [props.editedCollectionId, props.parentCollectionIds, navigation.initialised, navigation.getCollectionFromPaths]);\n\n if (!topLevelNavigation) {\n throw Error(\"Internal: Navigation not ready in collection editor\");\n }\n\n const {\n groups\n }: NavigationResult = topLevelNavigation;\n\n const initialCollection = collection\n ? {\n ...collection,\n id: collection.id ?? collection.path ?? randomString(16)\n }\n : undefined;\n\n const initialValues: PersistedCollection<any> = initialCollection\n ? applyPropertyConfigs(initialCollection, propertyConfigs)\n : {\n id: initialValuesProp?.path ?? randomString(16),\n path: initialValuesProp?.path ?? \"\",\n name: initialValuesProp?.name ?? \"\",\n group: initialValuesProp?.group ?? \"\",\n properties: {} as PropertiesOrBuilders,\n propertiesOrder: [],\n icon: coolIconKeys[Math.floor(Math.random() * coolIconKeys.length)],\n ownerId: authController.user?.uid ?? \"\"\n };\n\n if (!initialLoadingCompleted) {\n return <CircularProgressCenter/>;\n }\n\n if (!props.isNewCollection && (!navigation.initialised || !initialLoadingCompleted)) {\n return <CircularProgressCenter/>;\n }\n\n return <CollectionEditorInternal\n {...props}\n initialValues={initialValues}\n existingPaths={existingPaths}\n existingIds={existingIds}\n includeTemplates={includeTemplates}\n collection={collection}\n setCollection={setCollection}\n groups={groups}\n propertyConfigs={propertyConfigs}/>\n\n}\n\nfunction CollectionEditorInternal<M extends Record<string, any>>({\n isNewCollection,\n configController,\n editedCollectionId,\n parentCollectionIds,\n fullPath,\n collectionInference,\n handleClose,\n reservedGroups,\n extraView,\n handleCancel,\n setFormDirty,\n getUser,\n parentCollection,\n getData,\n existingPaths,\n existingIds,\n includeTemplates,\n collection,\n setCollection,\n initialValues,\n propertyConfigs,\n groups,\n existingEntities\n }: CollectionEditorDialogProps & {\n handleCancel: () => void,\n setFormDirty: (dirty: boolean) => void,\n initialValues: PersistedCollection<M>,\n existingPaths: string[],\n existingIds: string[],\n includeTemplates: boolean,\n collection: PersistedCollection<M> | undefined,\n setCollection: (collection: PersistedCollection<M>) => void,\n propertyConfigs: Record<string, PropertyConfig<any>>,\n groups: string[],\n }\n) {\n\n const importConfig = useImportConfig();\n const navigation = useNavigationController();\n const snackbarController = useSnackbarController();\n\n // Use this ref to store which properties have errors\n const propertyErrorsRef = useRef({});\n\n const initialView = isNewCollection ? (includeTemplates ? \"welcome\" : \"details\") : \"properties\";\n const [currentView, setCurrentView] = useState<EditorView>(initialView); // this view can edit either the details view or the properties one\n\n const [error, setError] = React.useState<Error | undefined>();\n\n const saveCollection = (updatedCollection: PersistedCollection<M>): Promise<boolean> => {\n const id = updatedCollection.id || updatedCollection.path;\n\n return configController.saveCollection({\n id,\n collectionData: updatedCollection,\n previousId: editedCollectionId,\n parentCollectionIds\n })\n .then(() => {\n setError(undefined);\n return true;\n })\n .catch((e) => {\n setError(e);\n console.error(e);\n snackbarController.open({\n type: \"error\",\n message: \"Error persisting collection: \" + (e.message ?? \"Details in the console\")\n });\n return false;\n });\n };\n\n const setNextMode = () => {\n if (currentView === \"details\") {\n if (importConfig.inUse) {\n setCurrentView(\"import_data_saving\");\n } else if (extraView) {\n setCurrentView(\"extra_view\");\n } else {\n setCurrentView(\"properties\");\n }\n } else if (currentView === \"welcome\") {\n setCurrentView(\"details\");\n } else if (currentView === \"import_data_mapping\") {\n setCurrentView(\"import_data_preview\");\n } else if (currentView === \"import_data_preview\") {\n setCurrentView(\"details\");\n } else if (currentView === \"extra_view\") {\n setCurrentView(\"properties\");\n } else {\n setCurrentView(\"details\");\n }\n\n };\n\n const doCollectionInference = collectionInference ? (collection: PersistedCollection<any>) => {\n if (!collectionInference) return undefined;\n return collectionInference?.(collection.path, collection.collectionGroup ?? false, parentPaths ?? [], collection.databaseId);\n } : undefined;\n\n const inferCollectionFromData = async (newCollection: PersistedCollection<M>) => {\n\n try {\n if (!doCollectionInference) {\n setCollection(newCollection);\n return Promise.resolve(newCollection);\n }\n\n setCurrentView(\"loading\");\n\n const inferredCollection = await doCollectionInference?.(newCollection);\n\n if (!inferredCollection) {\n setCollection(newCollection);\n return Promise.resolve(newCollection);\n }\n const values = {\n ...(newCollection ?? {})\n };\n\n if (Object.keys(inferredCollection.properties ?? {}).length > 0) {\n values.properties = inferredCollection.properties as PropertiesOrBuilders<M>;\n values.propertiesOrder = inferredCollection.propertiesOrder as Extract<keyof M, string>[];\n }\n\n if (!values.propertiesOrder) {\n values.propertiesOrder = Object.keys(values.properties) as Extract<keyof M, string>[];\n return values;\n }\n\n setCollection(values);\n console.debug(\"Inferred collection\", {\n newCollection: newCollection ?? {},\n values\n });\n return values;\n } catch (e: any) {\n console.error(e);\n snackbarController.open({\n type: \"error\",\n message: \"Error inferring collection: \" + (e.message ?? \"Details in the console\")\n });\n return newCollection;\n }\n };\n\n const onSubmit = (newCollectionState: PersistedCollection<M>, formexController: FormexController<PersistedCollection<M>>) => {\n console.debug(\"Submitting collection\", newCollectionState);\n try {\n\n if (!isNewCollection) {\n saveCollection(newCollectionState).then(() => {\n formexController.resetForm();\n handleClose(newCollectionState);\n });\n return;\n }\n\n if (currentView === \"welcome\") {\n setNextMode();\n formexController.resetForm({ values: newCollectionState });\n } else if (currentView === \"details\") {\n if (extraView || importConfig.inUse) {\n formexController.resetForm({ values: newCollectionState });\n setNextMode();\n } else if (isNewCollection) {\n inferCollectionFromData(newCollectionState)\n .then((values) => {\n formexController.resetForm({\n values: values ?? newCollectionState,\n touched: {\n path: true,\n name: true\n }\n });\n }).finally(() => {\n setNextMode();\n });\n } else {\n formexController.resetForm({ values: newCollectionState });\n setNextMode();\n }\n } else if (currentView === \"extra_view\") {\n setNextMode();\n formexController.resetForm({ values: newCollectionState });\n } else if (currentView === \"import_data_mapping\") {\n setNextMode();\n } else if (currentView === \"import_data_preview\") {\n setNextMode();\n } else if (currentView === \"properties\") {\n saveCollection(newCollectionState).then(() => {\n formexController.resetForm({ values: initialValues });\n setNextMode();\n handleClose(newCollectionState);\n });\n } else {\n setNextMode();\n formexController.resetForm({ values: newCollectionState });\n }\n } catch (e: any) {\n snackbarController.open({\n type: \"error\",\n message: \"Error persisting collection: \" + (e.message ?? \"Details in the console\")\n });\n console.error(e);\n formexController.resetForm({ values: newCollectionState });\n }\n };\n\n const validation = (col: PersistedCollection) => {\n\n let errors: Record<string, any> = {};\n const schema = (currentView === \"properties\" || currentView === \"subcollections\" || currentView === \"details\") && YupSchema;\n if (schema) {\n try {\n schema.validateSync(col, { abortEarly: false });\n } catch (e: any) {\n e.inner.forEach((err: any) => {\n errors[err.path] = err.message;\n });\n }\n }\n if (currentView === \"properties\") {\n errors = { ...errors, ...propertyErrorsRef.current };\n }\n if (currentView === \"details\") {\n const pathError = validatePath(col.path, isNewCollection, existingPaths, col.id);\n if (pathError) {\n errors.path = pathError;\n }\n const idError = validateId(col.id, isNewCollection, existingPaths, existingIds);\n if (idError) {\n errors.id = idError;\n }\n }\n return errors;\n };\n\n const formController = useCreateFormex<PersistedCollection<M>>({\n initialValues,\n onSubmit,\n validation,\n debugId: \"COLLECTION_EDITOR\"\n });\n\n const {\n values,\n setFieldValue,\n isSubmitting,\n dirty,\n submitCount\n } = formController;\n\n // TODO: getting data is only working in root collections with this code\n const path = values.path;\n const updatedFullPath = fullPath?.includes(\"/\") ? fullPath?.split(\"/\").slice(0, -1).join(\"/\") + \"/\" + path : path; // TODO: this path is wrong\n const pathError = validatePath(path, isNewCollection, existingPaths, values.id);\n\n const parentPaths = !pathError && parentCollectionIds ? navigation.convertIdsToPaths(parentCollectionIds) : undefined;\n const resolvedPath = !pathError ? navigation.resolveIdsFrom(updatedFullPath) : undefined;\n const getDataWithPath = resolvedPath && getData ? async () => {\n const data = await getData(resolvedPath, parentPaths ?? []);\n if (existingEntities) {\n const existingData = existingEntities.map(e => e.values);\n data.push(...existingData);\n }\n return data;\n } : undefined;\n\n useEffect(() => {\n setFormDirty(dirty);\n }, [dirty]);\n\n function onImportDataSet(data: object[], propertiesOrder?: string[]) {\n importConfig.setInUse(true);\n buildEntityPropertiesFromData(data, getInferenceType)\n .then((properties: Properties) => {\n const res = cleanPropertiesFromImport(properties);\n\n importConfig.setIdColumn(res.idColumn);\n importConfig.setImportData(data);\n importConfig.setHeadersMapping(res.headersMapping);\n const filteredHeadingsOrder = ((propertiesOrder ?? [])\n .filter((key) => res.headersMapping[key]) as string[]) ?? Object.keys(res.properties);\n importConfig.setHeadingsOrder(filteredHeadingsOrder);\n importConfig.setOriginProperties(res.properties);\n\n const mappedHeadings = (propertiesOrder ?? []).map((key) => res.headersMapping[key]).filter(Boolean) as string[] ?? Object.keys(res.properties);\n setFieldValue(\"properties\", res.properties);\n setFieldValue(\"propertiesOrder\", mappedHeadings);\n });\n }\n\n const validValues = Boolean(values.name) && Boolean(values.id);\n\n const onImportMappingComplete = () => {\n const updatedProperties = { ...values.properties };\n if (importConfig.idColumn)\n delete updatedProperties[importConfig.idColumn];\n setFieldValue(\"properties\", updatedProperties);\n // setFieldValue(\"propertiesOrder\", Object.values(importConfig.headersMapping));\n setNextMode();\n };\n\n const editable = collection?.editable === undefined || collection?.editable === true;\n // @ts-ignore\n const isMergedCollection = collection?.merged ?? false;\n const collectionEditable = editable || isNewCollection;\n\n const [deleteRequested, setDeleteRequested] = useState(false);\n\n const deleteCollection = () => {\n if (!collection) return;\n configController?.deleteCollection({ id: collection.id }).then(() => {\n setDeleteRequested(false);\n handleCancel();\n snackbarController.open({\n message: \"Collection deleted\",\n type: \"success\"\n });\n });\n };\n\n const onWelcomeScreenContinue = (importData?: object[], propertiesOrder?: string[]) => {\n if (importData) {\n onImportDataSet(importData, propertiesOrder);\n setCurrentView(\"import_data_mapping\");\n } else {\n setCurrentView(\"details\");\n }\n };\n\n return <DialogContent fullHeight={true}>\n <Formex value={formController}>\n\n <>\n {!isNewCollection && <Tabs value={currentView}\n innerClassName={cls(defaultBorderMixin, \"px-4 h-14 w-full justify-end bg-surface-50 dark:bg-surface-950 border-b\")}\n onValueChange={(v) => setCurrentView(v as EditorView)}>\n <Tab value={\"details\"}>\n Details\n </Tab>\n <Tab value={\"properties\"}>\n Properties\n </Tab>\n <Tab value={\"subcollections\"}>\n Additional views\n </Tab>\n <Tab value={\"custom_actions\"}>\n Custom actions\n </Tab>\n </Tabs>}\n\n <form noValidate\n onSubmit={formController.handleSubmit}\n className={cls(\n isNewCollection ? \"h-full\" : \"h-[calc(100%-48px)]\",\n \"flex-grow flex flex-col relative\")}>\n\n {currentView === \"loading\" &&\n <CircularProgressCenter/>}\n\n {currentView === \"extra_view\" &&\n path &&\n extraView?.View &&\n <extraView.View path={path}/>}\n\n {currentView === \"welcome\" &&\n <CollectionEditorWelcomeView\n path={path}\n onContinue={onWelcomeScreenContinue}\n existingCollectionPaths={existingPaths}\n parentCollection={parentCollection}/>}\n\n {currentView === \"import_data_mapping\" && importConfig &&\n <CollectionEditorImportMapping importConfig={importConfig}\n collectionEditable={collectionEditable}\n propertyConfigs={propertyConfigs}/>}\n\n {currentView === \"import_data_preview\" && importConfig &&\n <CollectionEditorImportDataPreview importConfig={importConfig}\n properties={values.properties as Properties}\n propertiesOrder={values.propertiesOrder as string[]}/>}\n\n {currentView === \"import_data_saving\" && importConfig &&\n <ImportSaveInProgress importConfig={importConfig}\n collection={values}\n path={path}\n onImportSuccess={async (importedCollection) => {\n snackbarController.open({\n type: \"info\",\n message: \"Data imported successfully\"\n });\n await saveCollection(values);\n handleClose(importedCollection);\n }}\n />}\n\n {currentView === \"details\" &&\n <CollectionDetailsForm\n existingPaths={existingPaths}\n existingIds={existingIds}\n groups={groups}\n parentCollectionIds={parentCollectionIds}\n parentCollection={parentCollection}\n isNewCollection={isNewCollection}>\n {!isNewCollection && isMergedCollection && <div className={\"flex flex-col gap-4 mt-8\"}>\n <Typography variant={\"body2\"} color={\"secondary\"}>This collection is defined in code.\n The changes done in this editor will override the properties defined in code.\n You can delete the overridden values to revert to the state defined in code.\n </Typography>\n <Button color={\"neutral\"}\n onClick={() => {\n setDeleteRequested(true);\n }}>Reset to code</Button>\n </div>}\n </CollectionDetailsForm>}\n\n {currentView === \"custom_actions\" && collection &&\n <EntityActionsEditTab collection={collection}/>}\n\n {currentView === \"subcollections\" && collection &&\n <SubcollectionsEditTab\n parentCollection={parentCollection}\n configController={configController}\n getUser={getUser}\n collectionInference={collectionInference}\n parentCollectionIds={parentCollectionIds}\n collection={collection}/>}\n\n {currentView === \"properties\" &&\n <CollectionPropertiesEditorForm\n showErrors={submitCount > 0}\n isNewCollection={isNewCollection}\n reservedGroups={reservedGroups}\n onPropertyError={(propertyKey, namespace, error) => {\n const current = removeUndefined({\n ...propertyErrorsRef.current,\n [getFullIdPath(propertyKey, namespace)]: removeUndefined(error, true)\n }, true);\n propertyErrorsRef.current = current;\n formController.validate();\n }}\n getUser={getUser}\n getData={getDataWithPath}\n doCollectionInference={doCollectionInference}\n propertyConfigs={propertyConfigs}\n collectionEditable={collectionEditable}\n extraIcon={extraView?.icon &&\n <IconButton\n color={\"primary\"}\n onClick={() => setCurrentView(\"extra_view\")}>\n {extraView.icon}\n </IconButton>}/>\n }\n\n <DialogActions\n position={\"absolute\"}>\n {error && <ErrorView error={error}/>}\n\n {isNewCollection && includeTemplates && currentView === \"import_data_mapping\" &&\n <Button variant={\"text\"}\n type=\"button\"\n color={\"primary\"}\n onClick={() => {\n importConfig.setInUse(false);\n return setCurrentView(\"welcome\");\n }}>\n <ArrowBackIcon/>\n Back\n </Button>}\n\n {isNewCollection && includeTemplates && currentView === \"import_data_preview\" &&\n <Button variant={\"text\"}\n type=\"button\"\n color={\"primary\"}\n onClick={() => {\n setCurrentView(\"import_data_mapping\");\n }}>\n <ArrowBackIcon/>\n Back\n </Button>}\n\n {isNewCollection && includeTemplates && currentView === \"details\" &&\n <Button variant={\"text\"}\n color={\"neutral\"}\n type=\"button\"\n onClick={() => setCurrentView(\"welcome\")}>\n <ArrowBackIcon/>\n Back\n </Button>}\n\n {isNewCollection && currentView === \"properties\" && <Button variant={\"text\"}\n type=\"button\"\n color={\"neutral\"}\n onClick={() => setCurrentView(\"details\")}>\n <ArrowBackIcon/>\n Back\n </Button>}\n\n <Button variant={\"text\"}\n color={\"neutral\"}\n onClick={() => {\n handleCancel();\n }}>\n Cancel\n </Button>\n\n {currentView === \"welcome\" &&\n <Button variant={\"text\"} onClick={() => onWelcomeScreenContinue()}>\n Continue from scratch\n </Button>}\n\n {isNewCollection && currentView === \"import_data_mapping\" &&\n <Button\n variant={\"filled\"}\n color=\"primary\"\n onClick={onImportMappingComplete}\n >\n Next\n </Button>}\n\n {isNewCollection && currentView === \"import_data_preview\" &&\n <Button\n variant={\"filled\"}\n color=\"primary\"\n onClick={() => {\n setNextMode();\n }}\n >\n Next\n </Button>}\n\n {isNewCollection && (currentView === \"details\" || currentView === \"properties\") &&\n <LoadingButton\n variant={\"filled\"}\n color=\"primary\"\n type=\"submit\"\n loading={isSubmitting}\n disabled={isSubmitting || (currentView === \"details\" && !validValues)}\n startIcon={currentView === \"properties\"\n ? <CheckIcon/>\n : undefined}\n >\n {currentView === \"details\" && \"Next\"}\n {currentView === \"properties\" && \"Create collection\"}\n </LoadingButton>}\n\n {!isNewCollection && <LoadingButton\n variant=\"filled\"\n color=\"primary\"\n type=\"submit\"\n loading={isSubmitting}\n >\n Update collection\n </LoadingButton>}\n\n </DialogActions>\n </form>\n </>\n\n </Formex>\n\n <ConfirmationDialog\n open={deleteRequested}\n onAccept={deleteCollection}\n onCancel={() => setDeleteRequested(false)}\n title={<>Delete the stored config?</>}\n body={<> This will <b>not\n delete any data</b>, only\n the stored config, and reset to the code state.</>}/>\n\n </DialogContent>\n\n}\n\nfunction applyPropertyConfigs<M extends Record<string, any> = any>(collection: PersistedCollection<M>, propertyConfigs: Record<string, PropertyConfig<any>>): PersistedCollection<M> {\n const {\n properties,\n ...rest\n } = collection;\n const propertiesResult: PropertiesOrBuilders<any> = {};\n if (properties) {\n Object.keys(properties).forEach((key) => {\n propertiesResult[key] = applyPropertiesConfig(properties[key] as PropertyOrBuilder, propertyConfigs);\n });\n }\n\n return {\n ...rest,\n properties: propertiesResult\n };\n}\n\nfunction applyPropertiesConfig(property: PropertyOrBuilder, propertyConfigs: Record<string, PropertyConfig<any>>) {\n let internalProperty = property;\n if (propertyConfigs && typeof internalProperty === \"object\" && internalProperty.propertyConfig) {\n const propertyConfig = propertyConfigs[internalProperty.propertyConfig];\n if (propertyConfig && isPropertyBuilder(propertyConfig.property)) {\n internalProperty = propertyConfig.property;\n } else {\n\n if (propertyConfig) {\n internalProperty = mergeDeep(propertyConfig.property, internalProperty);\n }\n\n if (!isPropertyBuilder(internalProperty) && internalProperty.dataType === \"map\" && internalProperty.properties) {\n const properties: Record<string, PropertyOrBuilder> = {};\n Object.keys(internalProperty.properties).forEach((key) => {\n properties[key] = applyPropertiesConfig(((internalProperty as MapProperty).properties as Properties)[key] as Property, propertyConfigs);\n });\n internalProperty = {\n ...internalProperty,\n properties\n };\n }\n\n }\n }\n return internalProperty;\n\n}\n\nconst validatePath = (value: string, isNewCollection: boolean, existingPaths: string[], idValue?: string) => {\n let error;\n if (!value) {\n error = \"You must specify a path in the database for this collection\";\n }\n // if (isNewCollection && existingIds?.includes(value.trim().toLowerCase()))\n // error = \"There is already a collection which uses this path as an id\";\n if (isNewCollection && existingPaths?.includes(value.trim().toLowerCase()) && !idValue)\n error = \"There is already a collection with the specified path. If you want to have multiple collections referring to the same database path, make sure the have different ids\";\n\n const subpaths = removeInitialAndTrailingSlashes(value).split(\"/\");\n if (subpaths.length % 2 === 0) {\n error = `Collection paths must have an odd number of segments: ${value}`;\n }\n return error;\n};\n\nconst validateId = (value: string, isNewCollection: boolean, existingPaths: string[], existingIds: string[]) => {\n if (!value) return undefined;\n let error;\n if (isNewCollection && existingPaths?.includes(value.trim().toLowerCase()))\n error = \"There is already a collection that uses this value as a path\";\n if (isNewCollection && existingIds?.includes(value.trim().toLowerCase()))\n error = \"There is already a collection which uses this id\";\n // if (error) {\n // setAdvancedPanelExpanded(true);\n // }\n return error;\n};\n","import React, { PropsWithChildren, useCallback } from \"react\";\nimport equal from \"react-fast-compare\"\n\nimport { CollectionsConfigController } from \"./types/config_controller\";\nimport {\n Entity,\n Property,\n useCustomizationController,\n useNavigationController,\n User,\n useSnackbarController\n} from \"@firecms/core\";\nimport { CollectionEditorDialog } from \"./ui/collection_editor/CollectionEditorDialog\";\nimport { useNavigate } from \"react-router\";\nimport { CollectionEditorController } from \"./types/collection_editor_controller\";\nimport { CollectionEditorPermissionsBuilder } from \"./types/config_permissions\";\nimport { CollectionInference } from \"./types/collection_inference\";\nimport { PropertyFormDialog } from \"./ui/collection_editor/PropertyEditView\";\nimport { PersistedCollection } from \"./types/persisted_collection\";\n\nexport const ConfigControllerContext = React.createContext<CollectionsConfigController>({} as any);\nexport const CollectionEditorContext = React.createContext<CollectionEditorController>({} as any);\n\nexport interface ConfigControllerProviderProps {\n /**\n * Controller for managing the collections' config.\n */\n collectionConfigController: CollectionsConfigController;\n\n /**\n * Callback used to infer the schema from the data.\n */\n collectionInference?: CollectionInference;\n\n /**\n * Use this builder to define the permissions for the configuration per user.\n */\n configPermissions?: CollectionEditorPermissionsBuilder;\n\n /**\n * Groups that cannot be used to create new collections.\n */\n reservedGroups?: string[];\n\n extraView?: {\n View: React.ComponentType<{\n path: string\n }>,\n icon: React.ReactNode\n };\n\n pathSuggestions?: string[];\n\n getUser?: (uid: string) => User | null;\n\n getData?: (path: string, parentPaths: string[]) => Promise<object[]>;\n\n onAnalyticsEvent?: (event: string, params?: object) => void;\n\n}\n\nexport const ConfigControllerProvider = React.memo(\n function ConfigControllerProvider({\n children,\n collectionConfigController,\n configPermissions,\n reservedGroups,\n collectionInference,\n extraView,\n getUser,\n getData,\n onAnalyticsEvent,\n pathSuggestions\n }: PropsWithChildren<ConfigControllerProviderProps>) {\n\n const navigation = useNavigationController();\n const navigate = useNavigate();\n const snackbarController = useSnackbarController();\n const { propertyConfigs } = useCustomizationController();\n\n const [currentDialog, setCurrentDialog] = React.useState<{\n isNewCollection: boolean,\n parentCollection?: PersistedCollection,\n editedCollectionId?: string,\n fullPath?: string,\n parentCollectionIds: string[],\n initialValues?: {\n path?: string,\n group?: string,\n name?: string\n },\n redirect: boolean,\n existingEntities?: Entity<any>[],\n pathSuggestions?: string[];\n }>();\n\n const [currentPropertyDialog, setCurrentPropertyDialog] = React.useState<{\n propertyKey?: string,\n property?: Property,\n namespace?: string,\n parentCollection?: PersistedCollection,\n currentPropertiesOrder?: string[],\n editedCollectionId: string,\n fullPath?: string,\n parentCollectionIds: string[],\n collectionEditable: boolean;\n existingEntities?: Entity<any>[]\n }>();\n\n const defaultConfigPermissions: CollectionEditorPermissionsBuilder = useCallback(() => ({\n createCollections: true,\n editCollections: true,\n deleteCollections: true\n }), []);\n\n const editCollection = ({\n id,\n fullPath,\n parentCollectionIds,\n parentCollection,\n existingEntities\n }: {\n id?: string,\n fullPath?: string,\n parentCollectionIds: string[],\n parentCollection?: PersistedCollection,\n existingEntities?: Entity<any>[]\n }) => {\n console.debug(\"Edit collection\", id, fullPath, parentCollectionIds, parentCollection);\n onAnalyticsEvent?.(\"edit_collection\", {\n id,\n fullPath\n });\n setCurrentDialog({\n editedCollectionId: id,\n fullPath,\n parentCollectionIds,\n isNewCollection: false,\n parentCollection,\n redirect: false,\n existingEntities,\n pathSuggestions\n });\n };\n\n const editProperty = ({\n propertyKey,\n property,\n editedCollectionId,\n currentPropertiesOrder,\n parentCollectionIds,\n collection,\n existingEntities\n }: {\n propertyKey?: string,\n property?: Property,\n currentPropertiesOrder?: string[],\n editedCollectionId: string,\n parentCollectionIds: string[],\n collection: PersistedCollection,\n existingEntities?: Entity<any>[]\n }) => {\n console.debug(\"Edit property\", propertyKey, property, editedCollectionId, currentPropertiesOrder, parentCollectionIds, collection);\n onAnalyticsEvent?.(\"edit_property\", {\n propertyKey,\n editedCollectionId\n });\n // namespace is all the path until the last dot\n const namespace = propertyKey && propertyKey.includes(\".\")\n ? propertyKey.substring(0, propertyKey.lastIndexOf(\".\"))\n : undefined;\n const propertyKeyWithoutNamespace = propertyKey && propertyKey.includes(\".\")\n ? propertyKey.substring(propertyKey.lastIndexOf(\".\") + 1)\n : propertyKey;\n setCurrentPropertyDialog({\n propertyKey: propertyKeyWithoutNamespace,\n property,\n namespace,\n currentPropertiesOrder,\n editedCollectionId,\n parentCollectionIds,\n collectionEditable: collection?.editable === undefined || collection?.editable === true,\n existingEntities\n });\n };\n\n const createCollection = ({\n parentCollectionIds,\n parentCollection,\n initialValues,\n redirect,\n sourceClick\n }: {\n parentCollectionIds: string[],\n parentCollection?: PersistedCollection\n initialValues?: {\n group?: string,\n path?: string,\n name?: string\n },\n redirect: boolean,\n sourceClick?: string\n }) => {\n console.debug(\"Create collection\", {\n parentCollectionIds,\n parentCollection,\n initialValues,\n redirect,\n sourceClick\n });\n onAnalyticsEvent?.(\"create_collection\", {\n parentCollectionIds,\n parentCollection,\n initialValues,\n redirect,\n sourceClick\n });\n setCurrentDialog({\n isNewCollection: true,\n parentCollectionIds,\n parentCollection,\n initialValues,\n redirect,\n pathSuggestions\n });\n };\n\n return (\n <ConfigControllerContext.Provider value={collectionConfigController}>\n <CollectionEditorContext.Provider\n value={{\n editCollection,\n createCollection,\n editProperty,\n configPermissions: configPermissions ?? defaultConfigPermissions,\n pathSuggestions\n }}>\n\n {children}\n\n <CollectionEditorDialog\n open={Boolean(currentDialog)}\n configController={collectionConfigController}\n isNewCollection={false}\n collectionInference={collectionInference}\n {...currentDialog}\n getData={getData}\n reservedGroups={reservedGroups}\n extraView={extraView}\n getUser={getUser}\n handleClose={(collection) => {\n if (currentDialog?.redirect) {\n if (collection && currentDialog?.isNewCollection && !currentDialog.parentCollectionIds.length) {\n const url = navigation.buildUrlCollectionPath(collection.id ?? collection.path);\n navigate(url);\n }\n }\n setCurrentDialog(undefined);\n }}/>\n\n {/* Used for editing properties*/}\n <PropertyFormDialog\n open={Boolean(currentPropertyDialog)}\n includeIdAndName={true}\n existingProperty={Boolean(currentPropertyDialog?.propertyKey)}\n autoUpdateId={!currentPropertyDialog ? false : !currentPropertyDialog?.propertyKey}\n autoOpenTypeSelect={!currentPropertyDialog ? false : !currentPropertyDialog?.propertyKey}\n inArray={false}\n collectionEditable={currentPropertyDialog?.collectionEditable ?? false}\n getData={getData && currentPropertyDialog?.editedCollectionId\n ? () => {\n console.debug(\"get data for property\", currentPropertyDialog?.editedCollectionId);\n const resolvedPath = navigation.resolveIdsFrom(currentPropertyDialog.editedCollectionId!)\n return getData(resolvedPath, []);\n }\n : undefined}\n onPropertyChanged={({\n id,\n property\n }) => {\n if (!currentPropertyDialog) return;\n if (!id) return;\n const newProperty = !(currentPropertyDialog.propertyKey);\n return collectionConfigController.saveProperty({\n path: currentPropertyDialog?.editedCollectionId,\n property,\n propertyKey: id,\n newPropertiesOrder: newProperty && currentPropertyDialog.currentPropertiesOrder ? [...currentPropertyDialog.currentPropertiesOrder, id] : undefined,\n namespace: currentPropertyDialog.namespace,\n parentCollectionIds: currentPropertyDialog.parentCollectionIds\n })\n .catch((e) => {\n console.error(e);\n snackbarController.open({\n type: \"error\",\n message: \"Error persisting property: \" + (e.message ?? \"Details in the console\")\n });\n return false;\n });\n }}\n onPropertyChangedImmediate={false}\n onDelete={() => {\n if (!currentPropertyDialog?.propertyKey) return;\n const newPropertiesOrder = currentPropertyDialog?.currentPropertiesOrder?.filter(p => p !== currentPropertyDialog?.propertyKey);\n return collectionConfigController.deleteProperty({\n path: currentPropertyDialog?.editedCollectionId,\n propertyKey: currentPropertyDialog?.propertyKey,\n namespace: currentPropertyDialog?.namespace,\n newPropertiesOrder,\n parentCollectionIds: currentPropertyDialog?.parentCollectionIds\n })\n .then(() => {\n setCurrentPropertyDialog(undefined);\n }).catch((e) => {\n console.error(e);\n snackbarController.open({\n type: \"error\",\n message: \"Error deleting property: \" + (e.message ?? \"Details in the console\")\n });\n return false;\n });\n }}\n onError={() => {\n }}\n onOkClicked={() => {\n setCurrentPropertyDialog(undefined);\n }}\n onCancel={() => {\n setCurrentPropertyDialog(undefined);\n }}\n initialErrors={{}}\n forceShowErrors={false}\n existingPropertyKeys={[]}\n allowDataInference={true}\n propertyConfigs={propertyConfigs}\n property={currentPropertyDialog?.property}\n propertyKey={currentPropertyDialog?.propertyKey}/>\n\n </CollectionEditorContext.Provider>\n\n </ConfigControllerContext.Provider>\n );\n }, equal);\n","import { CollectionActionsProps, useAuthController, useNavigationController } from \"@firecms/core\";\nimport { IconButton, SettingsIcon, Tooltip, } from \"@firecms/ui\";\n\nimport { useCollectionEditorController } from \"../useCollectionEditorController\";\nimport { PersistedCollection } from \"../types/persisted_collection\";\n\nexport function EditorCollectionAction({\n path: fullPath,\n parentCollectionIds,\n collection,\n tableController\n }: CollectionActionsProps) {\n\n const authController = useAuthController();\n const navigationController = useNavigationController();\n const collectionEditorController = useCollectionEditorController();\n\n const parentCollection = navigationController.getCollectionFromIds(parentCollectionIds);\n\n const canEditCollection = collectionEditorController.configPermissions\n ? collectionEditorController.configPermissions({\n user: authController.user,\n collection\n }).editCollections\n : true;\n\n const editorButton = <Tooltip\n asChild={true}\n title={canEditCollection ? \"Edit collection\" : \"You don't have permissions to edit this collection\"}>\n <IconButton\n size={\"small\"}\n color={\"primary\"}\n disabled={!canEditCollection}\n onClick={canEditCollection\n ? () => collectionEditorController?.editCollection({\n id: collection.id,\n fullPath,\n parentCollectionIds,\n parentCollection: parentCollection as PersistedCollection,\n existingEntities: tableController?.data ?? []\n })\n : undefined}>\n <SettingsIcon size={\"small\"}/>\n </IconButton>\n </Tooltip>;\n\n return <>\n {editorButton}\n </>\n\n}\n","import { useContext } from \"react\";\nimport { CollectionsConfigController } from \"./types/config_controller\";\nimport { ConfigControllerContext } from \"./ConfigControllerProvider\";\n\n/**\n * Use this hook to access the configuration controller.\n * You can use it to get the list of collections, and to save/delete collections.\n */\nexport const useCollectionsConfigController = (): CollectionsConfigController => useContext(ConfigControllerContext);\n","import {\n ConfirmationDialog,\n PluginHomePageActionsProps,\n useAuthController,\n useSnackbarController\n} from \"@firecms/core\";\nimport { DeleteIcon, IconButton, Menu, MenuItem, MoreVertIcon, SettingsIcon, } from \"@firecms/ui\";\nimport { useCollectionEditorController } from \"../useCollectionEditorController\";\nimport { useState } from \"react\";\nimport { useCollectionsConfigController } from \"../useCollectionsConfigController\";\n\nexport function HomePageEditorCollectionAction({\n path,\n collection\n }: PluginHomePageActionsProps) {\n\n\n const snackbarController = useSnackbarController();\n const authController = useAuthController();\n const configController = useCollectionsConfigController();\n const collectionEditorController = useCollectionEditorController();\n\n const permissions = collectionEditorController.configPermissions({\n user: authController.user,\n collection\n });\n\n const onEditCollectionClicked = () => {\n collectionEditorController?.editCollection({\n id: collection.id,\n parentCollectionIds: []\n });\n };\n\n const [deleteRequested, setDeleteRequested] = useState(false);\n\n const deleteCollection = () => {\n configController?.deleteCollection({ id: collection.id }).then(() => {\n setDeleteRequested(false);\n snackbarController.open({\n message: \"Collection deleted\",\n type: \"success\"\n });\n });\n };\n\n return <>\n\n <div>\n {permissions.deleteCollections &&\n <Menu\n trigger={<IconButton size={\"small\"}>\n <MoreVertIcon size={\"small\"}/>\n </IconButton>}\n >\n <MenuItem\n dense={true}\n onClick={(event) => {\n event.preventDefault();\n event.stopPropagation();\n setDeleteRequested(true);\n }}>\n <DeleteIcon/>\n Delete\n </MenuItem>\n\n </Menu>\n\n }\n\n {permissions.editCollections &&\n <IconButton\n size={\"small\"}\n onClick={(event) => {\n onEditCollectionClicked();\n }}>\n <SettingsIcon size={\"small\"}/>\n </IconButton>}\n </div>\n\n <ConfirmationDialog\n open={deleteRequested}\n onAccept={deleteCollection}\n onCancel={() => setDeleteRequested(false)}\n title={<>Delete this collection?</>}\n body={<> This will <b>not\n delete any data</b>, only\n the collection in the CMS</>}/>\n </>;\n\n}\n","import { EntityTableController, ResolvedProperty } from \"@firecms/core\";\nimport { IconButton, SettingsIcon, Tooltip } from \"@firecms/ui\";\nimport React from \"react\";\nimport { useCollectionEditorController } from \"../useCollectionEditorController\";\nimport { PersistedCollection } from \"../types/persisted_collection\";\n\nexport function CollectionViewHeaderAction({\n propertyKey,\n onHover,\n property,\n fullPath,\n parentCollectionIds,\n collection,\n tableController\n }: {\n property: ResolvedProperty,\n propertyKey: string,\n onHover: boolean,\n fullPath: string,\n parentCollectionIds: string[],\n collection: PersistedCollection;\n tableController: EntityTableController;\n}) {\n\n const collectionEditorController = useCollectionEditorController();\n\n return (\n <Tooltip\n asChild={true}\n title={\"Edit\"}>\n <IconButton\n className={onHover ? \"bg-white dark:bg-surface-950\" : \"hidden\"}\n onClick={() => {\n collectionEditorController.editProperty({\n propertyKey,\n property,\n editedCollectionId: collection.id,\n parentCollectionIds,\n collection,\n existingEntities: tableController.data ?? []\n });\n }}\n size={\"small\"}>\n <SettingsIcon size={\"small\"}/>\n </IconButton>\n </Tooltip>\n )\n}\n","import { EntityTableController, getDefaultPropertiesOrder, useAuthController } from \"@firecms/core\";\nimport { AddIcon, Tooltip } from \"@firecms/ui\";\nimport { useCollectionEditorController } from \"../useCollectionEditorController\";\nimport { PersistedCollection } from \"../types/persisted_collection\";\n\nexport function PropertyAddColumnComponent({\n fullPath,\n parentCollectionIds,\n collection,\n tableController\n }: {\n fullPath: string,\n parentCollectionIds: string[],\n collection: PersistedCollection;\n tableController: EntityTableController;\n}) {\n\n const authController = useAuthController();\n const collectionEditorController = useCollectionEditorController();\n const canEditCollection = collectionEditorController.configPermissions\n ? collectionEditorController.configPermissions({\n user: authController.user,\n collection\n }).editCollections\n : true;\n\n return (\n <Tooltip\n asChild={true}\n title={canEditCollection ? \"Add new property\" : \"You don't have permission to add new properties\"}>\n <div\n className={\"p-0.5 w-20 h-full flex items-center justify-center cursor-pointer bg-surface-100 bg-opacity-40 bg-surface-100/40 hover:bg-surface-100 dark:bg-surface-950 dark:bg-opacity-40 dark:bg-surface-950/40 dark:hover:bg-surface-950\"}\n // className={onHover ? \"bg-white dark:bg-surface-950\" : undefined}\n onClick={() => {\n collectionEditorController.editProperty({\n editedCollectionId: collection.id,\n parentCollectionIds,\n currentPropertiesOrder: getDefaultPropertiesOrder(collection),\n collection,\n existingEntities: tableController.data\n });\n }}>\n <AddIcon color={\"inherit\"}/>\n </div>\n </Tooltip>\n )\n}\n","import { AddIcon, Button } from \"@firecms/ui\";\nimport { useCollectionEditorController } from \"../useCollectionEditorController\";\n\nexport function NewCollectionButton() {\n const collectionEditorController = useCollectionEditorController();\n return <div className={\"bg-surface-50 dark:bg-surface-900 min-w-fit rounded\"}>\n <Button className={\"min-w-fit\"}\n variant={\"outlined\"}\n onClick={() => collectionEditorController.createCollection({\n parentCollectionIds: [],\n redirect: true,\n sourceClick: \"new_collection_button\"\n })}>\n <AddIcon/>\n New collection\n </Button>\n </div>\n}\n","import equal from \"react-fast-compare\"\n\nimport { CollectionActionsProps, mergeDeep, useAuthController, useSnackbarController } from \"@firecms/core\";\nimport { Button, SaveIcon, Tooltip, UndoIcon, } from \"@firecms/ui\";\n\nimport { useCollectionEditorController } from \"../useCollectionEditorController\";\nimport { useCollectionsConfigController } from \"../useCollectionsConfigController\";\nimport { PersistedCollection } from \"../types/persisted_collection\";\n\nexport function EditorCollectionActionStart({\n path: fullPath,\n parentCollectionIds,\n collection,\n tableController\n }: CollectionActionsProps) {\n\n const authController = useAuthController();\n const collectionEditorController = useCollectionEditorController();\n const configController = useCollectionsConfigController();\n const snackbarController = useSnackbarController();\n\n const canEditCollection = collectionEditorController.configPermissions\n ? collectionEditorController.configPermissions({\n user: authController.user,\n collection\n }).editCollections\n : true;\n\n let saveDefaultFilterButton = null;\n if (!equal(getObjectOrNull(tableController.filterValues), getObjectOrNull(collection.initialFilter)) ||\n !equal(getObjectOrNull(tableController.sortBy), getObjectOrNull(collection.initialSort))) {\n saveDefaultFilterButton = <>\n <Tooltip\n asChild={true}\n title={tableController.sortBy || tableController.filterValues ? \"Save default filter and sort\" : \"Clear default filter and sort\"}>\n <Button\n size={\"small\"}\n variant={\"outlined\"}\n onClick={() => configController\n ?.saveCollection({\n id: collection.id,\n parentCollectionIds,\n collectionData: mergeDeep(collection as PersistedCollection,\n {\n initialFilter: tableController.filterValues ?? null,\n initialSort: tableController.sortBy ?? null\n })\n }).then(() => {\n snackbarController.open({\n type: \"success\",\n message: \"Default config saved\"\n });\n })}>\n <SaveIcon/>\n </Button>\n </Tooltip>\n\n {(collection.initialFilter || collection.initialSort) && <Tooltip\n title={\"Reset to default filter and sort\"}>\n <Button\n color={\"primary\"}\n size={\"small\"}\n variant={\"text\"}\n onClick={() => {\n tableController.clearFilter?.();\n if (collection?.initialFilter)\n tableController.setFilterValues?.(collection?.initialFilter);\n if (collection?.initialSort)\n tableController.setSortBy?.(collection?.initialSort);\n }}>\n <UndoIcon/>\n </Button>\n </Tooltip>}\n </>;\n }\n\n return <>\n {canEditCollection && saveDefaultFilterButton}\n </>\n\n}\n\nfunction getObjectOrNull(o?: object): object | null {\n if (o && Object.keys(o).length === 0)\n return o\n return o ?? null;\n}\n","import { PluginHomePageAdditionalCardsProps, useAuthController } from \"@firecms/core\";\nimport { AddIcon, Card, cls, Typography } from \"@firecms/ui\";\nimport { useCollectionEditorController } from \"../useCollectionEditorController\";\n\nexport function NewCollectionCard({\n group,\n context\n }: PluginHomePageAdditionalCardsProps) {\n\n if (!context.navigation.topLevelNavigation)\n throw Error(\"Navigation not ready in FireCMSHomePage\");\n\n const authController = useAuthController();\n\n const collectionEditorController = useCollectionEditorController();\n const canCreateCollections = collectionEditorController.configPermissions\n ? collectionEditorController.configPermissions({\n user: authController.user,\n }).createCollections\n : true;\n\n return (\n <Card className={cls(\"h-full p-4 min-h-[124px]\")}\n onClick={collectionEditorController && canCreateCollections\n ? () => collectionEditorController.createCollection({\n initialValues: group ? { group } : undefined,\n parentCollectionIds: [],\n redirect: true,\n sourceClick: \"new_collection_card\"\n })\n : undefined}>\n\n <div\n className=\"flex items-center justify-center h-full w-full flex-grow flex-col\">\n <AddIcon color=\"primary\" size={\"large\"}/>\n <Typography color=\"primary\"\n variant={\"caption\"}\n className={\"font-medium\"}>{\"Add new collection\".toUpperCase()}</Typography>\n\n {!canCreateCollections &&\n <Typography variant={\"caption\"}>You don't have permissions to create\n collections</Typography>\n }\n </div>\n\n </Card>\n );\n}\n","import { PluginFormActionProps, useAuthController, useNavigationController } from \"@firecms/core\";\nimport { IconButton, SettingsIcon, Tooltip, } from \"@firecms/ui\";\n\nimport { useCollectionEditorController } from \"../useCollectionEditorController\";\nimport { PersistedCollection } from \"../types/persisted_collection\";\n\nexport function EditorEntityAction({\n path: fullPath,\n parentCollectionIds,\n collection,\n formContext\n }: PluginFormActionProps) {\n\n const authController = useAuthController();\n const navigationController = useNavigationController();\n const collectionEditorController = useCollectionEditorController();\n\n const parentCollection = navigationController.getCollectionFromIds(parentCollectionIds);\n\n const canEditCollection = collectionEditorController.configPermissions\n ? collectionEditorController.configPermissions({\n user: authController.user,\n collection\n }).editCollections\n : true;\n\n const isDirty = formContext?.formex.dirty ?? false;\n\n const editorButton = <Tooltip\n asChild={true}\n title={canEditCollection ? (isDirty ? \"You need to save the document before changing the schema\" : \"Edit schema for this form\") : \"You don't have permissions to edit this collection\"}>\n <IconButton\n color={\"primary\"}\n disabled={!canEditCollection || isDirty}\n onClick={canEditCollection\n ? () => collectionEditorController?.editCollection({\n id: collection.id,\n fullPath,\n parentCollectionIds,\n parentCollection: parentCollection as PersistedCollection,\n })\n : undefined}>\n <SettingsIcon size={\"small\"}/>\n </IconButton>\n </Tooltip>;\n\n return <>\n {editorButton}\n </>\n\n}\n","import React from \"react\";\nimport { FireCMSPlugin, useAuthController, useNavigationController, User } from \"@firecms/core\";\nimport { ConfigControllerProvider } from \"./ConfigControllerProvider\";\nimport { CollectionEditorPermissionsBuilder } from \"./types/config_permissions\";\nimport { EditorCollectionAction } from \"./ui/EditorCollectionAction\";\nimport { HomePageEditorCollectionAction } from \"./ui/HomePageEditorCollectionAction\";\nimport { PersistedCollection } from \"./types/persisted_collection\";\nimport { CollectionInference } from \"./types/collection_inference\";\nimport { CollectionsConfigController } from \"./types/config_controller\";\nimport { CollectionViewHeaderAction } from \"./ui/CollectionViewHeaderAction\";\nimport { PropertyAddColumnComponent } from \"./ui/PropertyAddColumnComponent\";\nimport { NewCollectionButton } from \"./ui/NewCollectionButton\";\nimport { AddIcon, Button, Paper, Typography } from \"@firecms/ui\";\nimport { useCollectionEditorController } from \"./useCollectionEditorController\";\nimport { EditorCollectionActionStart } from \"./ui/EditorCollectionActionStart\";\nimport { NewCollectionCard } from \"./ui/NewCollectionCard\";\nimport { EditorEntityAction } from \"./ui/EditorEntityAction\";\n\nexport interface CollectionConfigControllerProps<EC extends PersistedCollection = PersistedCollection, USER extends User = User> {\n\n /**\n * Firebase app where the configuration is saved.\n */\n collectionConfigController: CollectionsConfigController;\n\n /**\n * Define what actions can be performed on the configuration.\n */\n configPermissions?: CollectionEditorPermissionsBuilder<USER, EC>;\n\n /**\n * The words you define here will not be allowed to be used as group\n * names when creating collections.\n * e.g. [\"admin\"]\n */\n reservedGroups?: string[];\n\n extraView?: {\n View: React.ComponentType<{\n path: string\n }>,\n icon: React.ReactNode\n };\n\n collectionInference?: CollectionInference;\n\n pathSuggestions?: string[];\n\n getData?: (path: string, parentPaths: string[]) => Promise<object[]>;\n\n getUser?: (uid: string) => USER | null;\n\n onAnalyticsEvent?: (event: string, params?: object) => void;\n\n includeIntroView?: boolean;\n\n}\n\n/**\n * Use this hook to initialise the Collection Editor plugin.\n * This is likely the only hook you will need to use.\n * @param firebaseApp Firebase app where your project data lives.\n * @param configPermissions\n * @param reservedGroups\n * @param extraView\n * @param getData\n * @param getUser\n * @param collectionInference\n */\nexport function useCollectionEditorPlugin<EC extends PersistedCollection = PersistedCollection, USER extends User = User>\n({\n collectionConfigController,\n configPermissions,\n reservedGroups,\n extraView,\n getUser,\n collectionInference,\n getData,\n onAnalyticsEvent,\n includeIntroView = true,\n pathSuggestions\n }: CollectionConfigControllerProps<EC, USER>): FireCMSPlugin<any, any, PersistedCollection> {\n\n return {\n key: \"collection_editor\",\n loading: collectionConfigController.loading,\n provider: {\n Component: ConfigControllerProvider,\n props: {\n collectionConfigController,\n configPermissions,\n collectionInference,\n reservedGroups,\n extraView,\n getUser,\n getData,\n onAnalyticsEvent,\n pathSuggestions\n }\n },\n homePage: {\n additionalActions: <NewCollectionButton/>,\n additionalChildrenStart: includeIntroView ? <IntroWidget/> : undefined,\n CollectionActions: HomePageEditorCollectionAction,\n AdditionalCards: NewCollectionCard,\n allowDragAndDrop: true,\n navigationEntries: collectionConfigController.navigationEntries,\n onNavigationEntriesUpdate: collectionConfigController.saveNavigationEntries,\n },\n collectionView: {\n CollectionActionsStart: EditorCollectionActionStart,\n CollectionActions: EditorCollectionAction,\n HeaderAction: CollectionViewHeaderAction,\n AddColumnComponent: PropertyAddColumnComponent\n },\n form: {\n ActionsTop: EditorEntityAction,\n }\n };\n}\n\nexport function IntroWidget() {\n\n const navigation = useNavigationController();\n if (!navigation.topLevelNavigation)\n throw Error(\"Navigation not ready in FireCMSHomePage\");\n\n const authController = useAuthController();\n\n const collectionEditorController = useCollectionEditorController();\n const canCreateCollections = collectionEditorController.configPermissions\n ? collectionEditorController.configPermissions({\n user: authController.user,\n }).createCollections\n : true;\n\n if (!navigation.initialised || (navigation.collections ?? []).length > 0) {\n return null;\n }\n\n return (\n <Paper\n className={\"my-4 px-4 py-6 flex flex-col bg-white dark:bg-surface-accent-800 gap-2\"}>\n <Typography variant={\"subtitle2\"} className={\"uppercase\"}>No collections found</Typography>\n <Typography>\n Start building collections in FireCMS easily. Map them to your existing\n database data, import from files, or use our templates.\n </Typography>\n {canCreateCollections && <Button\n onClick={collectionEditorController && canCreateCollections\n ? () => collectionEditorController.createCollection({\n parentCollectionIds: [],\n redirect: true,\n sourceClick: \"new_collection_card\"\n })\n : undefined}>\n <AddIcon/>Create your first collection\n </Button>}\n <Typography color={\"secondary\"}>\n You can also define collections programmatically.\n </Typography>\n </Paper>\n );\n}\n","import {\n EntityCollection,\n joinCollectionLists,\n makePropertiesEditable,\n ModifyCollectionProps,\n Properties\n} from \"@firecms/core\";\nimport { PersistedCollection } from \"../types/persisted_collection\";\n\n/**\n * Function in charge of merging collections defined in code with those stored in the backend.\n */\nexport const mergeCollections = (baseCollections: EntityCollection[],\n backendCollections: PersistedCollection[] = [],\n modifyCollection?: (props: ModifyCollectionProps) => EntityCollection | void\n) => {\n\n const markAsEditable = (c: PersistedCollection) => {\n makePropertiesEditable(c.properties as Properties);\n c.subcollections?.forEach(markAsEditable);\n };\n\n backendCollections.forEach(markAsEditable);\n\n const result = joinCollectionLists(baseCollections, backendCollections, [], modifyCollection);\n\n // sort the collections so they are in the same order as the base collections\n result.sort((a, b) => {\n const indexA = baseCollections.findIndex(c => c.id === a.id);\n const indexB = baseCollections.findIndex(c => c.id === b.id);\n\n if (indexA === -1 && indexB === -1) {\n return 0; // Keep original order for items not in baseCollections\n }\n if (indexA === -1) {\n return 1; // a is not in base, so it goes to the end\n }\n if (indexB === -1) {\n return -1; // b is not in base, so it goes to the end\n }\n return indexA - indexB;\n });\n\n return result;\n}\n","import { ErrorView, prettifyIdentifier, useNavigationController } from \"@firecms/core\";\nimport { useCollectionEditorController } from \"../useCollectionEditorController\";\nimport { Button } from \"@firecms/ui\";\n\nexport function MissingReferenceWidget({ path: pathProp }: {\n path: string\n}) {\n const navigation = useNavigationController();\n const path = getLastSegment(pathProp);\n const parentCollectionIds = navigation.getParentCollectionIds(pathProp);\n const collectionEditor = useCollectionEditorController();\n return <div className={\"p-1 flex flex-col items-center\"}>\n <ErrorView error={\"No collection for path: \" + path}/>\n <Button className={\"mx-2\"} variant={\"outlined\"}\n size={\"small\"}\n onClick={() => {\n collectionEditor.createCollection({\n initialValues: { path, name: prettifyIdentifier(path) },\n parentCollectionIds,\n redirect: false,\n sourceClick: \"missing_reference\"\n });\n }}>\n Create\n </Button>\n </div>;\n}\n\nfunction getParentPathSegments(path: string): string[] {\n const segments = path.split(\"/\");\n return segments.filter((segment, index) => index % 2 === 0 && index !== segments.length - 1);\n}\n\nfunction getLastSegment(path: string): string {\n const segments = path.split(\"/\");\n return segments[segments.length - 1];\n}\n"],"names":["YupSchema","Yup","object","shape","id","string","required","name","path","useCollectionEditorController","useContext","CollectionEditorContext","LayoutModeSwitch","t0","$","_c","value","onChange","className","t1","cls","t2","t3","Symbol","for","Typography","t4","t5","t6","t7","t8","VerticalSplitIcon","jsx","t9","Tooltip","Card","t10","t11","t12","t13","t14","SquareIcon","t15","t16","jsxs","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","IconForView","collectionIcon","filter","group","includes","ref","useAutoComplete","isSubcollection","customIdValue","customId","showErrors","IconButton","Chip","e","target","Boolean","t19","TextField","t20","t21","t22","FieldCaption","t23","t24","t25","t26","t27","Field","DebouncedTextField","t28","t29","t30","t31","t32","openEntityMode","t33","t34","t35","history","t36","v","t37","t38","BooleanSwitchWithLabel","t39","t40","t41","SettingsIcon","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","CloseIcon","t62","t63","t64","t65","t66","t67","t68","t69","description","t70","t71","t72","t73","t74","t75","t76","defaultSize","t77","map","_temp2","t78","Select","_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","SelectItem","t97","_temp3","t98","v_3","t99","collectionGroup","t100","t101","t102","t103","v_4","t104","textSearchEnabled","t105","t106","t107","t108","t109","ExpandablePanel","t110","t111","t112","height","t113","icon","t114","t115","SearchIconsView","t116","Dialog","t117","Container","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","Formex","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","ListIcon","Button","CircularProgress","AutorenewIcon","ArrayContainer","Paper","console","error","EnumEntry","memo","EnumEntryInternal","updateId","autoFocus","onDialogOpen","inferredEntry","shouldUpdateIdRef","idValue","labelValue","currentLabelRef","Badge","Fragment","areEqual","prevProps","nextProps","equal","EnumEntryDialog","open","onClose","idError","open_0","DialogTitle","DialogContent","DialogActions","SwitchControl","field","form","tooltip","size","allowIndeterminate","checked","formControlLabel","GeneralPropertyValidation","validationRequired","validationUnique","field_0","form_0","validationRequiredMessage","StringPropertyValidation","lowercase","matches","max","min","trim","uppercase","matchesError","matchesValue","serializeRegExp","matchesStringValue","validationLowercase","validationUppercase","validationTrim","field_1","form_1","validationLength","validationMin","validationMax","validationMatches","ArrayPropertyValidation","ValidationPanel","RuleIcon","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","CloudUploadIcon","entries","MultiSelectItem","preventDefault","stopPropagation","MultiSelect","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","PropertyConfigBadge","cardClickableMixin","cardSelectedMixin","cardMixin","ErrorBoundary","NonEditablePropertyPreview","FunctionsIcon","DoNotDisturbOnIcon","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","SortableContext","verticalListSortingStrategy","DndContext","closestCenter","PropertyTreeEntry","attributes","listeners","setNodeRef","transform","transition","isDragging","useSortable","CSS","Translate","zIndex","position","style","isPropertyInferred","fullId","fullIdPath","subtree","defaultBorderMixin","left","top","bottom","RemoveIcon","DragHandleIcon","MapPropertyField","propertyDialogOpen","setPropertyDialogOpen","setSelectedPropertyKey","selectedPropertyNamespace","setSelectedPropertyNamespace","currentPropertiesOrder","onPropertyCreated","propertiesPath","propertiesOrderPath","currentPropertiesOrder_0","p","deleteProperty","selectedPropertyFullId","selectedProperty","empty","propertiesOrder_0","namespace_0","AddIcon","propertyKey_0","namespace_1","spreadChildren","RepeatPropertyField","ofProperty","ofPropertyError","onPropertyChanged","widget","CommonPropertyFields","forwardRef","disabledId","autoUpdateId","nameError","descriptionError","newNameValue","fontSize","newIdValue","nameTouched","prettifyIdentifier","StringPropertyField","widgetId","BooleanPropertyField","BlockPropertyField","oneOf","addChildButton","namespace_2","NumberPropertyValidation","validationLessThan","validationMoreThan","validationPositive","validationNegative","validationInteger","NumberPropertyField","parseFloat","ReferencePropertyField","asString","navigation","useNavigationController","pathPath","pathValue","pathError","CollectionsSelect","props","collections","ungroupedCollections","selectedCollection","collection","flatMap","SelectGroup","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","InfoLabel","hasValue","DeleteIcon","ConfirmationDialog","idRegEx","match","WIDGET_TYPE_MAP","text_field","switch","user_select","select","multi_select","number_input","number_select","multi_number_select","file_upload","multi_file_upload","reference","reference_as_string","multi_references","date_time","key_value","repeat","custom_array","block","WidgetSelectView","initialProperty","onValueChange","onOpenChange","allSupportedFields","concat","displayedWidgets","key_0","propertyConfig_1","baseProperty","baseFieldConfig","computedFieldConfig","fieldBackgroundDisabledMixin","fieldBackgroundHoverMixin","fieldBackgroundMixin","group_0","key_2","propertyConfig_2","groupKey","key_1","propertyConfig_0","WidgetSelectViewItem","shouldWarnChangingDataType","WarningIcon","camelCase","str","toLowerCase","parts","part","substring","GetCodeDialog","snackbarController","code","JSON5","stringify","collectionToCode","Highlight","themes","vsDark","navigator","clipboard","writeText","ContentCopyIcon","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","CodeIcon","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","Table","TableBody","subcollection","TableRow","editedCollectionId","TableCell","Alert","deleteCollection","e_4","e_5","updatedCollection","selectedViewKey","e_6","view_0","productsCollectionTemplate","brand","main_image","available","columnWidth","price","requiredMessage","images","related_products","metadata","added_on","autoValue","blogCollectionTemplate","header_image","cacheControl","content","typeField","valueField","text","quote","products","previewProperties","created_on","status","published","draft","publish_date","clearable","reviewed","tags","previewAsTag","usersCollectionTemplate","emailVerified","phone","favourite_products","photoURL","pagesCollectionTemplate","slug","unique","matchesMessage","hero_section","headline","subhead","background_image","call_to_action","call_to_action_link","section","image","link","slider","sidebar","seo_metadata","meta_title","meta_description","focus_keywords","footer_override","last_updated","is_published","CollectionEditorWelcomeView","onContinue","existingCollectionPaths","pathSuggestions","s","c","filteredSuggestions","suggestion","Icon","ImportFileUpload","TemplateButton","subtitle","CollectionEditorImportMapping","importConfig","setSelectedProperty","newPropertiesOrder_0","newHeadersMapping","headersMapping","setHeadersMapping","importData","importKey","fullId_0","propertyPath_0","d","inferredNewProperty","buildPropertyFromData","getInferenceType","onPropertyTypeChanged","property_2","importKey_0","isIdColumn","ImportNewPropertyFieldPreview","propertyKey_1","DataNewPropertiesMapping","p_0","PropertySelect","fieldId","newProperty","widget_0","PropertySelectItem","optionDisabled","CollectionEditorImportDataPreview","authController","useAuthController","loading","setLoading","loadEntities","mappedData","convertDataToEntity","idColumn","defaultValues","setEntities","selectionController","useSelectionController","CircularProgressCenter","entities","dataLoading","noMoreToLoad","EntityCollectionTable","cleanPropertiesFromImport","parentSlug","result","slugify","fullSlug","slugifiedResult","firstKey","EntityActionsSelectDialog","entityActions","action","EntityActionsEditTab","contextEntityActions","addEntityActionDialogOpen","setAddEntityActionDialogOpen","actionToDelete","setActionToDelete","resolvedEntityActions","resolveEntityAction","hardCodedEntityActions","totalEntityActions","selectedActionKey","log","action_1","action_0","CollectionEditorDialog","formDirty","setFormDirty","unsavedChangesDialogOpen","setUnsavedChangesDialogOpen","handleClose","CollectionEditor","topLevelNavigation","initialValuesProp","includeTemplates","collectionsInThisLevel","existingPaths","existingIds","setCollection","initialLoadingCompleted","setInitialLoadingCompleted","initialised","getCollectionFromPaths","initialCollection","randomString","applyPropertyConfigs","coolIconKeys","Math","floor","random","user","uid","CollectionEditorInternal","fullPath","extraView","existingEntities","useImportConfig","initialView","currentView","setCurrentView","setError","saveCollection","collectionData","setNextMode","inUse","parentPaths","inferCollectionFromData","Promise","resolve","inferredCollection","newCollectionState","schema","validateSync","abortEarly","inner","err","validatePath","formController","isSubmitting","updatedFullPath","convertIdsToPaths","resolvedPath","resolveIdsFrom","getDataWithPath","existingData","push","onImportDataSet","setInUse","buildEntityPropertiesFromData","setIdColumn","setImportData","filteredHeadingsOrder","setHeadingsOrder","setOriginProperties","mappedHeadings","validValues","onImportMappingComplete","isMergedCollection","merged","deleteRequested","setDeleteRequested","onWelcomeScreenContinue","Tabs","Tab","View","ImportSaveInProgress","importedCollection","removeUndefined","validate","ErrorView","ArrowBackIcon","LoadingButton","CheckIcon","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","Menu","MoreVertIcon","MenuItem","event_0","CollectionViewHeaderAction","onHover","PropertyAddColumnComponent","getDefaultPropertiesOrder","NewCollectionButton","EditorCollectionActionStart","saveDefaultFilterButton","getObjectOrNull","filterValues","sortBy","SaveIcon","clearFilter","setFilterValues","setSortBy","UndoIcon","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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"}
|