@firecms/collection_editor 3.0.0-beta.13 → 3.0.0-beta.15
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/README.md +165 -1
- package/dist/ConfigControllerProvider.d.ts +0 -1
- package/dist/index.es.js +1620 -948
- package/dist/index.es.js.map +1 -1
- package/dist/index.umd.js +1616 -947
- package/dist/index.umd.js.map +1 -1
- package/dist/types/collection_editor_controller.d.ts +0 -1
- package/dist/types/collection_inference.d.ts +3 -0
- package/dist/types/config_controller.d.ts +3 -1
- package/dist/ui/EditorEntityAction.d.ts +2 -0
- package/dist/ui/collection_editor/CollectionEditorWelcomeView.d.ts +1 -1
- package/dist/ui/collection_editor/CollectionPropertiesEditorForm.d.ts +1 -1
- package/dist/ui/collection_editor/EntityActionsEditTab.d.ts +4 -0
- package/dist/ui/collection_editor/EntityActionsSelectDialog.d.ts +4 -0
- package/dist/ui/collection_editor/PropertyTree.d.ts +2 -3
- package/dist/ui/collection_editor/properties/ReferencePropertyField.d.ts +2 -1
- package/dist/useCollectionEditorPlugin.d.ts +3 -3
- package/package.json +8 -9
- package/src/ConfigControllerProvider.tsx +0 -5
- package/src/types/collection_editor_controller.tsx +0 -2
- package/src/types/collection_inference.ts +3 -0
- package/src/types/config_controller.tsx +4 -1
- package/src/ui/EditorCollectionAction.tsx +2 -7
- package/src/ui/EditorEntityAction.tsx +51 -0
- package/src/ui/HomePageEditorCollectionAction.tsx +2 -1
- package/src/ui/collection_editor/CollectionDetailsForm.tsx +69 -37
- package/src/ui/collection_editor/CollectionEditorDialog.tsx +18 -5
- package/src/ui/collection_editor/CollectionEditorWelcomeView.tsx +15 -25
- package/src/ui/collection_editor/CollectionPropertiesEditorForm.tsx +8 -6
- package/src/ui/collection_editor/EntityActionsEditTab.tsx +163 -0
- package/src/ui/collection_editor/EntityActionsSelectDialog.tsx +41 -0
- package/src/ui/collection_editor/EntityCustomViewsSelectDialog.tsx +5 -2
- package/src/ui/collection_editor/GetCodeDialog.tsx +5 -3
- package/src/ui/collection_editor/PropertyEditView.tsx +11 -3
- package/src/ui/collection_editor/PropertyFieldPreview.tsx +1 -0
- package/src/ui/collection_editor/PropertyTree.tsx +183 -139
- package/src/ui/collection_editor/UnsavedChangesDialog.tsx +6 -2
- package/src/ui/collection_editor/properties/MapPropertyField.tsx +1 -1
- package/src/ui/collection_editor/properties/ReferencePropertyField.tsx +5 -3
- package/src/ui/collection_editor/properties/advanced/AdvancedPropertyValidation.tsx +2 -0
- package/src/ui/collection_editor/utils/supported_fields.tsx +1 -0
- package/src/ui/collection_editor/utils/update_property_for_widget.ts +9 -0
- package/src/useCollectionEditorPlugin.tsx +12 -7
- package/src/utils/collections.ts +15 -5
package/dist/index.es.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.es.js","sources":["../src/ui/collection_editor/CollectionYupValidation.tsx","../src/useCollectionEditorController.tsx","../src/ui/collection_editor/LayoutModeSwitch.tsx","../src/ui/collection_editor/CollectionDetailsForm.tsx","../src/ui/collection_editor/util.ts","../src/ui/collection_editor/EnumForm.tsx","../src/ui/collection_editor/SwitchControl.tsx","../src/ui/collection_editor/properties/validation/GeneralPropertyValidation.tsx","../src/ui/collection_editor/properties/validation/StringPropertyValidation.tsx","../src/ui/collection_editor/properties/validation/ArrayPropertyValidation.tsx","../src/ui/collection_editor/properties/validation/ValidationPanel.tsx","../src/ui/collection_editor/properties/EnumPropertyField.tsx","../src/ui/collection_editor/properties/StoragePropertyField.tsx","../src/utils/entities.ts","../src/ui/collection_editor/PropertyFieldPreview.tsx","../src/ui/collection_editor/PropertyTree.tsx","../src/ui/collection_editor/properties/MapPropertyField.tsx","../src/ui/collection_editor/properties/RepeatPropertyField.tsx","../src/ui/collection_editor/properties/CommonPropertyFields.tsx","../src/ui/collection_editor/properties/StringPropertyField.tsx","../src/ui/collection_editor/properties/BooleanPropertyField.tsx","../src/ui/collection_editor/properties/BlockPropertyField.tsx","../src/ui/collection_editor/properties/validation/NumberPropertyValidation.tsx","../src/ui/collection_editor/properties/NumberPropertyField.tsx","../src/ui/collection_editor/properties/ReferencePropertyField.tsx","../src/ui/collection_editor/properties/DateTimePropertyField.tsx","../src/ui/collection_editor/properties/advanced/AdvancedPropertyValidation.tsx","../src/ui/collection_editor/properties/KeyValuePropertyField.tsx","../src/ui/collection_editor/utils/update_property_for_widget.ts","../src/ui/collection_editor/properties/UrlPropertyField.tsx","../src/ui/collection_editor/utils/supported_fields.tsx","../src/ui/collection_editor/properties/MarkdownPropertyField.tsx","../src/ui/collection_editor/PropertyEditView.tsx","../src/ui/collection_editor/utils/strings.ts","../src/ui/collection_editor/GetCodeDialog.tsx","../src/ui/collection_editor/CollectionPropertiesEditorForm.tsx","../src/ui/collection_editor/UnsavedChangesDialog.tsx","../src/ui/collection_editor/EntityCustomViewsSelectDialog.tsx","../src/ui/collection_editor/SubcollectionsEditTab.tsx","../src/ui/collection_editor/templates/products_template.ts","../src/ui/collection_editor/templates/blog_template.ts","../src/ui/collection_editor/templates/users_template.ts","../src/ui/collection_editor/templates/pages_template.ts","../src/ui/collection_editor/CollectionEditorWelcomeView.tsx","../src/ui/collection_editor/import/CollectionEditorImportMapping.tsx","../src/ui/collection_editor/import/CollectionEditorImportDataPreview.tsx","../src/ui/collection_editor/import/clean_import_data.ts","../src/ui/collection_editor/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/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 Autocomplete,\n AutocompleteItem,\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 \", isSubcollection ? \"\" : \"sm:col-span-8\")}>\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 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 mt-8\"}>\n <ExpandablePanel\n expanded={advancedPanelExpanded}\n onExpandedChange={setAdvancedPanelExpanded}\n title={\n <div className=\"flex flex-row text-surface-500\">\n <SettingsIcon/>\n <Typography variant={\"subtitle2\"}\n className=\"ml-2\">\n Advanced\n </Typography>\n </div>}\n initiallyExpanded={false}>\n <div className={\"grid grid-cols-12 gap-4 p-4\"}>\n\n <div className={\"col-span-12\"}>\n <Field name={\"id\"}\n as={DebouncedTextField}\n disabled={!isNewCollection}\n label={\"Collection id\"}\n error={showErrors && Boolean(errors.id)}/>\n <FieldCaption error={touched.id && Boolean(errors.id)}>\n {touched.id && Boolean(errors.id) ? errors.id : \"This id identifies this collection. Typically the same as the path.\"}\n </FieldCaption>\n </div>\n\n <div className={\"col-span-12\"}>\n <TextField\n error={showErrors && Boolean(errors.singularName)}\n name={\"singularName\"}\n aria-describedby={\"singularName-helper\"}\n onChange={(e) => {\n setFieldTouched(\"singularName\", true);\n return handleChange(e);\n }}\n value={values.singularName ?? \"\"}\n label={\"Singular name\"}/>\n <FieldCaption error={showErrors && Boolean(errors.singularName)}>\n {showErrors && Boolean(errors.singularName) ? errors.singularName : \"Optionally define a singular name for your entities\"}\n </FieldCaption>\n </div>\n <div className={\"col-span-12\"}>\n <TextField\n error={showErrors && Boolean(errors.sideDialogWidth)}\n name={\"sideDialogWidth\"}\n type={\"number\"}\n aria-describedby={\"sideDialogWidth-helper\"}\n onChange={(e) => {\n setFieldTouched(\"sideDialogWidth\", true);\n const value = e.target.value;\n if (!value) {\n setFieldValue(\"sideDialogWidth\", null);\n } else if (!isNaN(Number(value))) {\n setFieldValue(\"sideDialogWidth\", Number(value));\n }\n }}\n endAdornment={<IconButton\n size={\"small\"}\n onClick={() => {\n setFieldValue(\"sideDialogWidth\", null);\n }}\n disabled={!values.sideDialogWidth}>\n <CloseIcon size={\"small\"}/>\n </IconButton>}\n value={values.sideDialogWidth ?? \"\"}\n label={\"Side dialog width\"}/>\n <FieldCaption error={showErrors && Boolean(errors.singularName)}>\n {showErrors && Boolean(errors.singularName) ? errors.singularName : \"Optionally define the width (in pixels) of entities side dialog. Default is 768px\"}\n </FieldCaption>\n </div>\n <div className={\"col-span-12\"}>\n <TextField\n error={showErrors && Boolean(errors.description)}\n name=\"description\"\n value={values.description ?? \"\"}\n onChange={handleChange}\n multiline\n minRows={2}\n aria-describedby=\"description-helper-text\"\n label=\"Description\"\n />\n <FieldCaption error={showErrors && Boolean(errors.description)}>\n {showErrors && Boolean(errors.description) ? errors.description : \"Description of the collection, you can use markdown\"}\n </FieldCaption>\n </div>\n\n <div className={\"col-span-12\"}>\n <Select\n name=\"defaultSize\"\n size={\"large\"}\n fullWidth={true}\n label=\"Default row size\"\n position={\"item-aligned\"}\n onChange={handleChange}\n value={values.defaultSize ?? \"\"}\n renderValue={(value: any) => value.toUpperCase()}\n >\n {[\"xs\", \"s\", \"m\", \"l\", \"xl\"].map((value) => (\n <SelectItem\n key={`size-select-${value}`}\n value={value}>\n {value.toUpperCase()}\n </SelectItem>\n ))}\n </Select>\n </div>\n <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={values.icon}\n onIconSelected={(icon: string) => {\n setIconDialogOpen(false);\n setFieldValue(\"icon\", icon);\n }}/>\n </div>\n\n </Dialog>\n\n </Container>\n </div>\n );\n}\n\nfunction DefaultDatabaseField({\n databaseId,\n onDatabaseIdUpdate\n }: { databaseId?: string, onDatabaseIdUpdate: (databaseId: string) => void }) {\n\n return <Tooltip title={\"Database ID\"}\n side={\"top\"}\n align={\"start\"}>\n <TextField size={\"small\"}\n invisible={true}\n inputClassName={\"text-end\"}\n value={databaseId ?? \"\"}\n onChange={(e: any) => onDatabaseIdUpdate(e.target.value)}\n placeholder={\"(default)\"}></TextField>\n </Tooltip>\n}\n","export function idToPropertiesPath(id: string): string {\n return \"properties.\" + id.replaceAll(\".\", \".properties.\");\n}\n\nexport function namespaceToPropertiesPath(namespace?: string): string {\n return namespace\n ? \"properties.\" + namespace.replaceAll(\".\", \".properties.\") + \".properties\"\n : \"properties\";\n}\n\nexport function namespaceToPropertiesOrderPath(namespace?: string): string {\n return namespace\n ? \"properties.\" + namespace.replaceAll(\".\", \".properties.\") + \".propertiesOrder\"\n : \"propertiesOrder\";\n}\n\nexport function getFullId(propertyKey: string, propertyNamespace?: string): string {\n return propertyNamespace\n ? `${propertyNamespace}.${propertyKey}`\n : propertyKey;\n}\n\nexport function getFullIdPath(propertyKey: string, propertyNamespace?: string): string {\n const keyWithNamespace = propertyNamespace\n ? `${propertyNamespace}.${propertyKey}`\n : propertyKey;\n return idToPropertiesPath(keyWithNamespace);\n}\n","import React, { useEffect } from \"react\";\nimport equal from \"react-fast-compare\"\n\nimport { ArrayContainer, ArrayEntryParams, EnumValueConfig, EnumValues, FieldCaption, } from \"@firecms/core\";\nimport {\n AutorenewIcon,\n Badge,\n Button,\n CircularProgress,\n DebouncedTextField,\n Dialog,\n DialogActions,\n DialogContent,\n DialogTitle,\n IconButton,\n ListIcon,\n Paper,\n SettingsIcon,\n Typography\n} from \"@firecms/ui\";\nimport { extractEnumFromValues } from \"@firecms/schema_inference\";\nimport { Field, Formex, getIn, useCreateFormex, useFormex } from \"@firecms/formex\";\n\ntype EnumFormProps = {\n enumValues: EnumValueConfig[];\n onValuesChanged?: (enumValues: EnumValueConfig[]) => void;\n onError?: (error: boolean) => void;\n updateIds: boolean;\n disabled: boolean;\n allowDataInference?: boolean;\n getData?: () => Promise<string[]>;\n};\n\nexport function EnumForm({\n enumValues,\n onValuesChanged,\n onError,\n updateIds,\n disabled,\n allowDataInference,\n getData\n }: EnumFormProps) {\n\n const formex = useCreateFormex<{\n enumValues: EnumValueConfig[]\n }>({\n initialValues: { enumValues },\n validateOnChange: true,\n validation: (values) => {\n const errors: any = {};\n if (values.enumValues) {\n values.enumValues.forEach((enumValue, index) => {\n if (!enumValue?.label) {\n errors.enumValues = errors.enumValues ?? [];\n errors.enumValues[index] = errors.enumValues[index] ?? {};\n errors.enumValues[index].label = \"You must specify a label for this enum value entry\";\n }\n if (!enumValue?.id) {\n errors.enumValues = errors.enumValues ?? [];\n errors.enumValues[index] = errors.enumValues[index] ?? {};\n errors.enumValues[index].id = \"You must specify an ID for this enum value entry\";\n }\n });\n }\n const hasError = Boolean(errors?.enumValues && Object.keys(errors?.enumValues).length > 0);\n onError?.(hasError);\n return errors;\n }\n });\n\n const { values, errors } = formex;\n\n useEffect(() => {\n if (onValuesChanged) {\n onValuesChanged(values.enumValues);\n }\n }, [values.enumValues]);\n\n return <Formex value={formex}>\n <EnumFormFields enumValuesPath={\"enumValues\"}\n values={values}\n errors={errors}\n shouldUpdateId={updateIds}\n disabled={disabled}\n allowDataInference={allowDataInference}\n getData={getData}/>\n </Formex>\n\n}\n\ntype EnumFormFieldsProps = {\n values: {\n enumValues: EnumValueConfig[]\n };\n errors: any;\n enumValuesPath: string;\n shouldUpdateId: boolean;\n disabled: boolean;\n getData?: () => Promise<string[]>;\n allowDataInference?: boolean;\n};\n\n// const EnumFormFields = React.memo(\nfunction EnumFormFields({\n values,\n errors,\n disabled,\n enumValuesPath,\n shouldUpdateId,\n allowDataInference,\n getData,\n }: EnumFormFieldsProps) {\n\n const {\n setFieldValue\n } = useFormex();\n\n const [lastInternalIdAdded, setLastInternalIdAdded] = React.useState<number | undefined>();\n const [editDialogIndex, setEditDialogIndex] = React.useState<number | undefined>();\n const [inferring, setInferring] = React.useState(false);\n\n const inferredValuesRef = React.useRef(new Set());\n const inferredValues = inferredValuesRef.current;\n\n const buildEntry = ({\n index,\n internalId\n }:ArrayEntryParams) => {\n const justAdded = lastInternalIdAdded === internalId;\n const entryError = errors?.enumValues && errors?.enumValues[index];\n return <EnumEntry index={index}\n disabled={disabled}\n enumValuesPath={enumValuesPath}\n autoFocus={justAdded}\n entryError={entryError}\n shouldUpdateId={shouldUpdateId || justAdded}\n onDialogOpen={() => setEditDialogIndex(index)}\n inferredEntry={inferredValues.has(values.enumValues[index]?.id as string)}\n key={`${internalId}`}/>;\n };\n\n const inferValues = async () => {\n if (!getData)\n return;\n setInferring(true);\n getData?.().then((data) => {\n if (!data)\n return;\n\n const flatData = data.flat();\n\n const fieldData = Array.from(new Set(flatData));\n\n const currentEnumValues = values.enumValues;\n const foundEnumValues = extractEnumFromValues(fieldData);\n\n // add only new enum values\n const newEnumValues = foundEnumValues.filter((enumValue) => {\n return !currentEnumValues?.some((v: any) => v.id === enumValue.id);\n });\n\n newEnumValues.forEach((enumValue) => {\n inferredValues.add(enumValue.id);\n });\n setFieldValue(enumValuesPath, [...newEnumValues, ...currentEnumValues], true);\n }).catch(e => {\n console.error(e);\n })\n .finally(() => setInferring(false));\n }\n\n return (\n <div className={\"col-span-12\"}>\n <div className=\"ml-3.5 flex flex-row items-center\">\n <ListIcon/>\n <Typography variant={\"subtitle2\"}\n className=\"ml-2 grow\">\n Values\n </Typography>\n {allowDataInference &&\n <Button loading={inferring}\n disabled={disabled || inferring}\n variant={\"text\"}\n size={\"small\"}\n onClick={inferValues}>\n {inferring ? <CircularProgress size={\"smallest\"}/> : <AutorenewIcon/>}\n Infer values from data\n </Button>}\n </div>\n\n <Paper className=\"p-4 m-1\">\n\n <ArrayContainer droppableId={enumValuesPath}\n addLabel={\"Add enum value\"}\n value={values.enumValues}\n disabled={disabled}\n size={\"small\"}\n buildEntry={buildEntry}\n onInternalIdAdded={setLastInternalIdAdded}\n canAddElements={true}\n onValueChange={(value) => setFieldValue(enumValuesPath, value)}\n newDefaultEntry={{ id: \"\", label: \"\" }}/>\n\n <EnumEntryDialog index={editDialogIndex}\n open={editDialogIndex !== undefined}\n enumValuesPath={enumValuesPath}\n onClose={() => setEditDialogIndex(undefined)}/>\n </Paper>\n </div>\n );\n}\n\ntype EnumEntryProps = {\n index: number,\n enumValuesPath: string,\n shouldUpdateId: boolean,\n autoFocus: boolean,\n onDialogOpen: () => void;\n disabled: boolean;\n inferredEntry?: boolean;\n entryError?: { label?: string, id?: string }\n};\n\nconst EnumEntry = React.memo(\n function EnumEntryInternal({\n index,\n shouldUpdateId: updateId,\n enumValuesPath,\n autoFocus,\n onDialogOpen,\n disabled,\n inferredEntry,\n entryError\n }: EnumEntryProps) {\n\n const {\n values,\n handleChange,\n errors,\n setFieldValue,\n touched\n } = useFormex<EnumValues>();\n\n const shouldUpdateIdRef = React.useRef(!getIn(values, `${enumValuesPath}[${index}].id`));\n const shouldUpdateId = updateId || shouldUpdateIdRef.current;\n\n const idValue = getIn(values, `${enumValuesPath}[${index}].id`);\n const labelValue = getIn(values, `${enumValuesPath}[${index}].label`);\n\n const currentLabelRef = React.useRef(labelValue);\n\n React.useEffect(() => {\n if ((currentLabelRef.current === idValue || !idValue) && shouldUpdateId) {\n setFieldValue(`${enumValuesPath}[${index}].id`, labelValue);\n }\n currentLabelRef.current = labelValue;\n }, [labelValue]);\n\n return (\n <>\n <div className={\"flex w-full align-center justify-center\"}>\n <Field name={`${enumValuesPath}[${index}].label`}\n as={DebouncedTextField}\n className={\"flex-grow\"}\n required\n disabled={disabled}\n size=\"small\"\n autoFocus={autoFocus}\n autoComplete=\"off\"\n endAdornment={inferredEntry && <AutorenewIcon size={\"small\"}/>}\n error={Boolean(entryError?.label)}/>\n\n {!disabled &&\n <Badge color={\"error\"} invisible={!entryError?.id}>\n <IconButton\n size=\"small\"\n aria-label=\"edit\"\n className={\"m-1\"}\n onClick={() => onDialogOpen()}>\n <SettingsIcon size={\"small\"}/>\n </IconButton>\n </Badge>}\n\n </div>\n\n {entryError?.label && <Typography variant={\"caption\"}\n className={\"ml-3.5 text-red-500 dark:text-red-500\"}>\n {entryError?.label}\n </Typography>}\n\n {entryError?.id && <Typography variant={\"caption\"}\n className={\"ml-3.5 text-red-500 dark:text-red-500\"}>\n {entryError?.id}\n </Typography>}\n\n </>);\n },\n function areEqual(prevProps: EnumEntryProps, nextProps: EnumEntryProps) {\n return prevProps.index === nextProps.index &&\n prevProps.enumValuesPath === nextProps.enumValuesPath &&\n prevProps.shouldUpdateId === nextProps.shouldUpdateId &&\n prevProps.inferredEntry === nextProps.inferredEntry &&\n equal(prevProps.entryError, nextProps.entryError) &&\n prevProps.autoFocus === nextProps.autoFocus;\n }\n);\n\nfunction EnumEntryDialog({\n index,\n open,\n onClose,\n enumValuesPath\n }: {\n index?: number;\n open: boolean;\n enumValuesPath: string;\n onClose: () => void;\n}) {\n\n const {\n errors,\n } = useFormex<EnumValues>();\n\n const idError = index !== undefined ? getIn(errors, `${enumValuesPath}[${index}].id`) : undefined;\n return <Dialog\n maxWidth=\"md\"\n aria-labelledby=\"enum-edit-dialog\"\n open={open}\n onOpenChange={(open) => !open ? onClose() : undefined}\n >\n <DialogTitle hidden>Enum form dialog</DialogTitle>\n <DialogContent>\n {index !== undefined &&\n <div>\n <Field name={`${enumValuesPath}[${index}].id`}\n as={DebouncedTextField}\n required\n label={\"ID\"}\n size=\"small\"\n autoComplete=\"off\"\n error={Boolean(idError)}/>\n\n <FieldCaption error={Boolean(idError)}>\n {idError ?? \"Value saved in the data source\"}\n </FieldCaption>\n </div>}\n </DialogContent>\n\n <DialogActions>\n <Button\n autoFocus\n variant=\"outlined\"\n onClick={onClose}\n color=\"primary\">\n Ok\n </Button>\n </DialogActions>\n\n </Dialog>\n}\n\n","import React from \"react\";\n\nimport { BooleanSwitchWithLabel, Tooltip } from \"@firecms/ui\";\nimport { FormexFieldProps } from \"@firecms/formex\";\n\nexport function SwitchControl({\n field,\n form,\n label,\n tooltip,\n disabled,\n size = \"small\",\n allowIndeterminate\n }: FormexFieldProps & {\n label: string,\n tooltip?: string,\n disabled?: boolean,\n size?: \"small\" | \"medium\",\n allowIndeterminate?: boolean\n}) {\n\n const formControlLabel = <BooleanSwitchWithLabel\n label={label}\n size={size}\n position={\"start\"}\n value={field.value}\n disabled={disabled}\n allowIndeterminate={allowIndeterminate}\n onValueChange={(checked:boolean | null) => form.setFieldValue(field.name, checked)}/>;\n\n if (tooltip)\n return (\n <Tooltip\n title={tooltip}>\n {formControlLabel}\n </Tooltip>\n );\n return formControlLabel;\n}\n","import React from \"react\";\n\nimport { Field, FormexFieldProps, getIn, useFormex } from \"@firecms/formex\";\nimport { DebouncedTextField } from \"@firecms/ui\";\nimport { SwitchControl } from \"../../SwitchControl\";\n\nexport function GeneralPropertyValidation({ disabled }: {\n required?: boolean;\n disabled: boolean;\n}) {\n\n const { values, handleChange } = useFormex();\n\n const validationRequired = \"validation.required\";\n const validationRequiredMessage = \"validation.requiredMessage\";\n const validationUnique = \"validation.unique\";\n const validationUniqueInArray = \"validation.uniqueInArray\";\n\n return (\n <>\n <div className={\"col-span-6\"}>\n <Field name={validationRequired}\n type=\"checkbox\">\n {({ field, form }: FormexFieldProps) => {\n return <SwitchControl\n disabled={disabled}\n label={\"Required\"}\n tooltip={\"You won't be able to save this entity if this value is not set\"}\n form={form}\n field={field}/>\n }}\n </Field>\n </div>\n\n <div className={\"col-span-6\"}>\n\n <Field name={validationUnique}\n type=\"checkbox\">\n {({ field, form }: FormexFieldProps) => {\n return <SwitchControl\n disabled={disabled}\n label={\"Unique\"}\n tooltip={\"There cannot be multiple entities with the same value\"}\n form={form}\n field={field}/>\n }}\n </Field>\n </div>\n\n {getIn(values, validationRequired) && <div className={\"col-span-12\"}>\n <DebouncedTextField\n disabled={disabled}\n value={getIn(values, validationRequiredMessage)}\n label={\"Required message\"}\n name={validationRequiredMessage}\n size=\"small\"\n onChange={handleChange}/>\n </div>}\n </>\n );\n}\n","import React from \"react\";\n\nimport { Field, FormexFieldProps, getIn, useFormex } from \"@firecms/formex\";\nimport { FieldCaption, serializeRegExp } from \"@firecms/core\";\nimport { DebouncedTextField, } from \"@firecms/ui\";\nimport { GeneralPropertyValidation } from \"./GeneralPropertyValidation\";\nimport { SwitchControl } from \"../../SwitchControl\";\n\nexport function StringPropertyValidation({\n length,\n lowercase,\n matches,\n max,\n min,\n trim,\n uppercase,\n disabled,\n showErrors\n }: {\n length?: boolean;\n min?: boolean;\n max?: boolean;\n trim?: boolean;\n matches?: boolean;\n lowercase?: boolean;\n uppercase?: boolean;\n disabled: boolean;\n showErrors: boolean;\n}) {\n\n const {\n values,\n handleChange,\n errors\n } = useFormex();\n\n const validationLength = \"validation.length\";\n const validationMin = \"validation.min\";\n const validationMax = \"validation.max\";\n const validationTrim = \"validation.trim\";\n const validationMatches = \"validation.matches\";\n const validationLowercase = \"validation.lowercase\";\n const validationUppercase = \"validation.uppercase\";\n\n const matchesError = getIn(errors, validationMatches);\n\n const matchesValue = getIn(values, validationMatches);\n const matchesStringValue = typeof matchesValue === \"string\" ? matchesValue : serializeRegExp(matchesValue);\n return (\n <div className={\"grid grid-cols-12 gap-2\"}>\n\n <GeneralPropertyValidation disabled={disabled}/>\n\n <div className={\"grid grid-cols-12 gap-2 col-span-12\"}>\n\n {lowercase && <div className={\"col-span-4\"}>\n <Field name={validationLowercase}\n type=\"checkbox\">\n {({ field, form }: FormexFieldProps) => {\n return <SwitchControl\n label={\"Lowercase\"}\n disabled={disabled}\n form={form}\n field={field}/>\n }}\n </Field>\n </div>}\n\n {uppercase && <div className={\"col-span-4\"}>\n <Field name={validationUppercase}\n type=\"checkbox\">\n {({ field, form }: FormexFieldProps) => {\n return <SwitchControl\n label={\"Uppercase\"}\n disabled={disabled}\n form={form}\n field={field}/>\n }}\n </Field>\n </div>}\n\n {trim && <div className={\"col-span-4\"}>\n <Field name={validationTrim}\n type=\"checkbox\">\n {({ field, form }: FormexFieldProps) => {\n return <SwitchControl\n label={\"Trim\"}\n disabled={disabled}\n form={form}\n field={field}/>\n }}\n </Field>\n </div>}\n\n </div>\n\n <div className={\"grid grid-cols-12 gap-2 col-span-12\"}>\n {length && <div className={\"col-span-4\"}>\n <DebouncedTextField\n value={getIn(values, validationLength)}\n label={\"Exact length\"}\n name={validationLength}\n type=\"number\"\n size=\"small\"\n\n disabled={disabled}\n onChange={handleChange}/>\n </div>}\n\n {min && <div className={\"col-span-4\"}>\n <DebouncedTextField value={getIn(values, validationMin)}\n label={\"Min length\"}\n name={validationMin}\n type=\"number\"\n size=\"small\"\n\n disabled={disabled}\n onChange={handleChange}/>\n </div>}\n\n {max && <div className={\"col-span-4\"}>\n <DebouncedTextField value={getIn(values, validationMax)}\n label={\"Max length\"}\n name={validationMax}\n type=\"number\"\n size=\"small\"\n\n disabled={disabled}\n onChange={handleChange}/>\n </div>}\n\n </div>\n\n {matches && <div className={\"col-span-12\"}>\n <Field name={validationMatches}\n as={DebouncedTextField}\n label={\"Matches regex\"}\n size=\"small\"\n disabled={disabled}\n value={matchesStringValue}\n error={Boolean(matchesError)}/>\n <FieldCaption error={Boolean(matchesError)}>\n {matchesError ? \"Not a valid regexp\" : \"e.g. /^\\\\d+$/ for digits only\"}\n </FieldCaption>\n </div>}\n\n </div>\n );\n\n}\n","import React from \"react\";\n\nimport { getIn, useFormex } from \"@firecms/formex\";\nimport { DebouncedTextField } from \"@firecms/ui\";\nimport { GeneralPropertyValidation } from \"./GeneralPropertyValidation\";\n\nexport function ArrayPropertyValidation({\n max = true,\n min = true,\n disabled\n }: {\n min?: boolean;\n max?: boolean;\n disabled: boolean;\n}) {\n\n const {\n values,\n handleChange\n } = useFormex();\n\n const validationMin = \"validation.min\";\n const validationMax = \"validation.max\";\n\n return (\n <div className={\"grid grid-cols-12 gap-2\"}>\n\n <GeneralPropertyValidation disabled={disabled}/>\n\n {min && <div className={\"col-span-6\"}>\n <DebouncedTextField value={getIn(values, validationMin)}\n disabled={disabled}\n label={\"Min length\"}\n name={validationMin}\n type=\"number\"\n size=\"small\"\n onChange={handleChange}/>\n </div>}\n {max && <div className={\"col-span-6\"}>\n <DebouncedTextField value={getIn(values, validationMax)}\n disabled={disabled}\n label={\"Max length\"}\n name={validationMax}\n type=\"number\"\n size=\"small\"\n onChange={handleChange}/>\n </div>}\n </div>\n );\n}\n","import { PropsWithChildren } from \"react\";\n\nimport { ExpandablePanel, RuleIcon, Typography } from \"@firecms/ui\";\n\nexport function ValidationPanel({\n children\n }: PropsWithChildren<{}>) {\n\n return (\n <ExpandablePanel\n initiallyExpanded={false}\n asField={true}\n innerClassName=\"p-4\"\n title={\n <div className=\"flex flex-row text-surface-500\">\n <RuleIcon/>\n <Typography variant={\"subtitle2\"}\n className=\"ml-2\">\n Validation\n </Typography>\n </div>\n }>\n\n {children}\n\n </ExpandablePanel>\n )\n}\n","import React, { useMemo } from \"react\";\nimport { getIn, useFormex } from \"@firecms/formex\";\nimport { EnumValueConfig, resolveEnumValues, useSnackbarController } from \"@firecms/core\";\nimport { Select, SelectItem } from \"@firecms/ui\";\nimport { EnumForm } from \"../EnumForm\";\nimport { StringPropertyValidation } from \"./validation/StringPropertyValidation\";\nimport { ArrayPropertyValidation } from \"./validation/ArrayPropertyValidation\";\nimport { ValidationPanel } from \"./validation/ValidationPanel\";\nimport { PropertyWithId } from \"../PropertyEditView\";\n\nexport function EnumPropertyField({\n multiselect,\n updateIds,\n disabled,\n showErrors,\n allowDataInference,\n getData\n }: {\n multiselect: boolean;\n updateIds: boolean;\n disabled: boolean;\n showErrors: boolean;\n allowDataInference?: boolean;\n getData?: () => Promise<object[]>;\n}) {\n\n const {\n values,\n setFieldError,\n setFieldValue\n } = useFormex<PropertyWithId>();\n\n const snackbarContext = useSnackbarController();\n\n const enumValuesPath = multiselect ? \"of.enumValues\" : \"enumValues\";\n\n const defaultValue = getIn(values, \"defaultValue\");\n\n const valuesEnumValues = getIn(values, enumValuesPath);\n const enumValues: EnumValueConfig[] = useMemo(() => {\n if (!valuesEnumValues || typeof valuesEnumValues === \"boolean\")\n return [] as EnumValueConfig[];\n return resolveEnumValues(valuesEnumValues) ?? [] as EnumValueConfig[];\n }, [valuesEnumValues]);\n\n const onValuesChanged = (value: EnumValueConfig[]) => {\n if (!values)\n return;\n setFieldValue(enumValuesPath, value);\n if (!multiselect) {\n const enumIds = value.filter(v => Boolean(v?.id)).map((v: any) => v.id);\n if (defaultValue && !enumIds.includes(defaultValue)) {\n setFieldValue(\"defaultValue\", undefined);\n snackbarContext.open({\n type: \"warning\",\n message: \"Default value was cleared\"\n })\n }\n }\n };\n\n return (\n <>\n <div className={\"col-span-12\"}>\n <EnumForm enumValues={enumValues}\n updateIds={updateIds}\n disabled={disabled}\n allowDataInference={allowDataInference}\n onError={(hasError) => {\n setFieldError(enumValuesPath, hasError ? \"This enum property is missing some values\" : undefined);\n }}\n getData={getData\n ? () => getData()\n .then(res => res.map(entry => values.id && getIn(entry, values.id)).filter(Boolean))\n : undefined}\n onValuesChanged={onValuesChanged}/>\n </div>\n\n <div className={\"col-span-12\"}>\n\n <ValidationPanel>\n {!multiselect &&\n <StringPropertyValidation disabled={disabled}\n showErrors={showErrors}/>}\n {multiselect &&\n <ArrayPropertyValidation disabled={disabled}/>}\n </ValidationPanel>\n\n </div>\n\n {!multiselect && <div className={\"col-span-12\"}>\n\n <Select\n disabled={disabled}\n position={\"item-aligned\"}\n fullWidth={true}\n onValueChange={(value: string) => {\n setFieldValue(\"defaultValue\", value);\n }}\n size={\"large\"}\n label={\"Default value\"}\n value={defaultValue ?? \"\"}>\n {enumValues\n .filter((enumValue) => Boolean(enumValue?.id))\n .map((enumValue) => (\n <SelectItem key={enumValue.id}\n value={enumValue.id?.toString()}>\n {enumValue.label}\n </SelectItem>\n ))}\n </Select>\n\n </div>}\n </>\n );\n}\n","import React from \"react\";\nimport {\n Button,\n CloudUploadIcon,\n DebouncedTextField,\n ExpandablePanel,\n MultiSelect,\n MultiSelectItem,\n Typography\n} from \"@firecms/ui\";\n\nimport { Field, FormexFieldProps, getIn, useFormex } from \"@firecms/formex\";\nimport { GeneralPropertyValidation } from \"./validation/GeneralPropertyValidation\";\nimport { ArrayPropertyValidation } from \"./validation/ArrayPropertyValidation\";\nimport { ValidationPanel } from \"./validation/ValidationPanel\";\nimport { SwitchControl } from \"../SwitchControl\";\n\nconst fileTypes: Record<string, string> = {\n \"image/*\": \"Images\",\n \"video/*\": \"Videos\",\n \"audio/*\": \"Audio files\",\n \"application/*\": \"Files (pdf, zip, csv, excel...)\",\n \"text/*\": \"Text files\"\n}\n\nexport function StoragePropertyField({\n multiple,\n existing,\n disabled\n }: {\n multiple: boolean;\n existing: boolean;\n disabled: boolean;\n}) {\n\n const {\n values,\n setFieldValue\n } = useFormex();\n\n const baseStoragePath = multiple ? \"of.storage\" : \"storage\";\n const acceptedFiles = `${baseStoragePath}.acceptedFiles`;\n\n const metadata = `${baseStoragePath}.metadata`;\n const fileName = `${baseStoragePath}.fileName`;\n const maxSize = `${baseStoragePath}.maxSize`;\n const storagePath = `${baseStoragePath}.storagePath`;\n const storeUrl = `${baseStoragePath}.storeUrl`;\n\n const fileNameValue = getIn(values, fileName) ?? \"{rand}_{file}\";\n const storagePathValue = getIn(values, storagePath) ?? \"/\";\n const maxSizeValue = getIn(values, maxSize);\n\n const storedValue = getIn(values, acceptedFiles);\n const fileTypesValue: string[] | undefined = Array.isArray(storedValue) ? storedValue : undefined;\n const allFileTypesSelected = !fileTypesValue || fileTypesValue.length === 0;\n\n const handleTypesChange = (value: string[]) => {\n if (!value) setFieldValue(acceptedFiles, undefined);\n // else if (value.includes(\"all\")) setFieldValue(acceptedFiles, undefined);\n // else if (value.length >= Object.keys(fileTypes).length) setFieldValue(acceptedFiles, undefined);\n // else if (allFileTypesSelected)\n // setFieldValue(acceptedFiles, Object.keys(fileTypes).filter((v) => !value.includes(v)));\n else setFieldValue(acceptedFiles, value);\n };\n\n const hasFilenameCallback = typeof fileNameValue === \"function\";\n const hasStoragePathCallback = typeof storagePathValue === \"function\";\n\n return (\n <>\n\n <div className={\"col-span-12\"}>\n\n <ExpandablePanel\n title={\n <div className=\"flex flex-row text-surface-500\">\n <CloudUploadIcon/>\n <Typography variant={\"subtitle2\"}\n className=\"ml-2\">\n File upload config\n </Typography>\n </div>\n }>\n\n <div className={\"grid grid-cols-12 gap-2 p-4\"}>\n\n <div className={\"col-span-12\"}>\n\n <MultiSelect\n className={\"w-full\"}\n placeholder={\"All file types allowed\"}\n disabled={disabled}\n name={acceptedFiles}\n value={fileTypesValue ?? []}\n onValueChange={handleTypesChange}\n label={allFileTypesSelected ? undefined : \"Allowed file types\"}\n renderValues={(selected) => {\n if (!selected || selected.length === 0) return \"All file types allowed\";\n return selected.map((v: string) => fileTypes[v])\n .filter((v: string) => Boolean(v))\n .join(\", \");\n }}>\n\n {Object.entries(fileTypes).map(([value, label]) => (\n <MultiSelectItem key={value} value={value} className={\"flex items-center gap-2\"}>\n {/*<Checkbox*/}\n {/* checked={allFileTypesSelected || fileTypesValue.indexOf(value) > -1}/>*/}\n <div className={\"flex-grow\"}>\n {label}\n </div>\n <Button size={\"small\"}\n variant={\"text\"}\n onClick={(e) => {\n e.preventDefault();\n e.stopPropagation();\n return setFieldValue(acceptedFiles, [value]);\n }}>\n Only\n </Button>\n </MultiSelectItem>\n ))}\n\n </MultiSelect>\n </div>\n\n <div className={\"col-span-12\"}>\n <Field name={fileName}\n as={DebouncedTextField}\n label={\"File name\"}\n size={\"small\"}\n disabled={hasFilenameCallback || disabled}\n value={hasFilenameCallback ? \"-\" : fileNameValue}\n />\n </div>\n <div className={\"col-span-12\"}>\n <Field name={storagePath}\n as={DebouncedTextField}\n label={\"Storage path\"}\n disabled={hasStoragePathCallback || disabled}\n size={\"small\"}\n value={hasStoragePathCallback ? \"-\" : storagePathValue}\n />\n <Typography variant={\"caption\"} className={\"ml-3.5 mt-1 mb-2\"}>\n <p>You can use the following placeholders in\n the file name\n and storage path values:</p>\n <ul>\n <li>{\"{file} - Full name of the uploaded file\"}</li>\n <li>{\"{file.name} - Name of the uploaded file without extension\"}</li>\n <li>{\"{file.ext} - Extension of the uploaded file\"}</li>\n <li>{\"{entityId} - ID of the entity\"}</li>\n <li>{\"{propertyKey} - ID of this field\"}</li>\n <li>{\"{path} - Path of this entity\"}</li>\n <li>{\"{rand} - Random value used to avoid name collisions\"}</li>\n </ul>\n </Typography>\n\n <Field name={storeUrl}\n type=\"checkbox\">\n {({\n field,\n form\n }: FormexFieldProps) => {\n return <SwitchControl\n label={\"Save URL instead of storage path\"}\n disabled={existing || disabled}\n form={form}\n field={field}/>\n }}\n </Field>\n\n <Typography variant={\"caption\"} className={\"ml-3.5 mt-1 mb-2\"}>\n Turn this setting on, if you prefer to save\n the download\n URL of the uploaded file instead of the\n storage path.\n You can only change this prop upon creation.\n </Typography>\n </div>\n\n <div className={\"col-span-12\"}>\n <DebouncedTextField name={maxSize}\n type={\"number\"}\n label={\"Max size (in bytes)\"}\n size={\"small\"}\n value={maxSizeValue !== undefined && maxSizeValue !== null ? maxSizeValue.toString() : \"\"}\n onChange={(e) => {\n const value = e.target.value;\n if (value === \"\") setFieldValue(maxSize, undefined);\n else setFieldValue(maxSize, parseInt(value));\n }}\n />\n </div>\n\n </div>\n </ExpandablePanel>\n\n </div>\n\n <div className={\"col-span-12\"}>\n\n <ValidationPanel>\n {!multiple && <div className={\"grid grid-cols-12 gap-2\"}>\n <GeneralPropertyValidation disabled={disabled}/>\n </div>}\n {multiple && <div className={\"col-span-12\"}>\n <ArrayPropertyValidation disabled={disabled}/>\n </div>}\n </ValidationPanel>\n\n </div>\n </>\n );\n}\n","import { isPropertyBuilder, Properties, PropertiesOrBuilders, Property, PropertyOrBuilder } from \"@firecms/core\";\n\nexport function editableProperty(property: PropertyOrBuilder | PropertyOrBuilder): boolean {\n if (isPropertyBuilder(property))\n return false;\n if (isPropertyBuilder(property as PropertyOrBuilder))\n return false;\n else {\n const eProperty = property as Property;\n if (eProperty.dataType === \"array\" && typeof eProperty.of === \"function\")\n return false;\n else if (eProperty.dataType === \"array\" && Array.isArray(eProperty.of))\n return false;\n return Boolean(eProperty.editable);\n }\n}\n\nexport function removeNonEditableProperties(properties: PropertiesOrBuilders<any>): Properties {\n return Object.entries(properties)\n .filter(([_, property]) => editableProperty(property))\n .map(([key, propertyOrBuilder]) => {\n const property = propertyOrBuilder as Property;\n if (!editableProperty(property)) {\n return undefined;\n } else if (property.dataType === \"map\" && property.properties) {\n return {\n [key]: {\n ...property,\n properties: removeNonEditableProperties(property.properties as PropertiesOrBuilders)\n }\n };\n } else {\n return { [key]: property };\n }\n })\n .filter((e) => Boolean(e))\n .reduce((a, b) => ({ ...a, ...b }), {}) as Properties;\n}\n","import {\n ErrorBoundary,\n getFieldConfig,\n isPropertyBuilder,\n Property,\n PropertyConfigBadge,\n PropertyOrBuilder,\n useCustomizationController,\n} from \"@firecms/core\";\nimport {\n cardClickableMixin,\n cardMixin,\n cardSelectedMixin,\n cls,\n DoNotDisturbOnIcon,\n FunctionsIcon,\n Paper,\n Typography,\n} from \"@firecms/ui\";\n\nimport { editableProperty } from \"../../utils/entities\";\n\nexport function PropertyFieldPreview({\n property,\n onClick,\n hasError,\n includeName,\n includeEditButton,\n selected\n }: {\n property: Property,\n hasError?: boolean,\n selected?: boolean,\n includeName?: boolean,\n includeEditButton?: boolean;\n onClick?: () => void\n}) {\n\n const { propertyConfigs } = useCustomizationController();\n\n const propertyConfig = getFieldConfig(property, propertyConfigs);\n const disabled = !editableProperty(property);\n\n const borderColorClass = hasError\n ? \"border-red-500 dark:border-red-500 border-opacity-100 dark:border-opacity-100 ring-0 dark:ring-0\"\n : (selected ? \"border-primary\" : \"border-transparent\");\n\n return <ErrorBoundary>\n <div\n onClick={onClick}\n className=\"flex flex-row w-full cursor-pointer\">\n <div className={\"m-4\"}>\n <PropertyConfigBadge propertyConfig={propertyConfig}/>\n </div>\n <Paper\n className={cls(\n \"border\",\n \"pl-2 w-full flex flex-row gap-4 items-center\",\n cardMixin,\n onClick ? cardClickableMixin : \"\",\n selected ? cardSelectedMixin : \"\",\n \"flex-grow p-4 border transition-colors duration-200\",\n borderColorClass\n )}\n >\n\n <div className=\"w-full flex flex-col\">\n\n {includeName &&\n <ErrorBoundary>\n <Typography variant=\"body1\"\n component=\"span\"\n className=\"flex-grow pr-2\">\n {property.name\n ? property.name\n : \"\\u00a0\"\n }\n </Typography>\n </ErrorBoundary>}\n\n <div className=\"flex flex-row items-center\">\n <ErrorBoundary>\n <Typography className=\"flex-grow pr-2\"\n variant={includeName ? \"body2\" : \"subtitle1\"}\n component=\"span\"\n color=\"secondary\">\n {propertyConfig?.name}\n </Typography>\n </ErrorBoundary>\n <ErrorBoundary>\n <Typography variant=\"body2\"\n component=\"span\"\n color=\"disabled\">\n {property.dataType}\n </Typography>\n </ErrorBoundary>\n\n </div>\n </div>\n\n {includeEditButton && <Typography variant={\"button\"}>\n EDIT\n </Typography>}\n\n </Paper>\n </div>\n </ErrorBoundary>\n}\n\nexport function NonEditablePropertyPreview({\n name,\n selected,\n onClick,\n property\n }: {\n name: string,\n selected: boolean,\n onClick?: () => void,\n property?: PropertyOrBuilder\n}) {\n\n const { propertyConfigs } = useCustomizationController();\n\n const propertyConfig = !isPropertyBuilder(property) && property ? getFieldConfig(property, propertyConfigs) : undefined;\n\n return (\n <div\n onClick={onClick}\n className=\"flex flex-row w-full cursor-pointer\">\n <div className={\"relative m-4\"}>\n {propertyConfig && <PropertyConfigBadge propertyConfig={propertyConfig}/>}\n {!propertyConfig && <div\n className={\"h-8 w-8 p-1 rounded-full shadow text-white bg-surface-500\"}>\n <FunctionsIcon color={\"inherit\"} size={\"medium\"}/>\n </div>}\n <DoNotDisturbOnIcon color={\"disabled\"} size={\"small\"} className={\"absolute -right-2 -top-2\"}/>\n </div>\n <Paper\n className={cls(\n \"pl-2 w-full flex flex-row gap-4 items-center\",\n cardMixin,\n onClick ? cardClickableMixin : \"\",\n selected ? cardSelectedMixin : \"\",\n \"flex-grow p-4 border transition-colors duration-200\",\n selected ? \"border-primary\" : \"border-transparent\")}\n >\n\n <div className=\"w-full flex flex-col\">\n <Typography variant=\"body1\"\n component=\"span\"\n className=\"flex-grow pr-2\">\n {property?.name\n ? property.name\n : name\n }\n </Typography>\n\n <div className=\"flex flex-row items-center\">\n {propertyConfig && <Typography className=\"flex-grow pr-2\"\n variant={\"body2\"}\n component=\"span\"\n color=\"secondary\">\n {propertyConfig?.name}\n </Typography>}\n\n {property && !isPropertyBuilder(property) && <ErrorBoundary>\n <Typography variant=\"body2\"\n component=\"span\"\n color=\"disabled\">\n {property.dataType}\n </Typography>\n </ErrorBoundary>}\n\n {property && isPropertyBuilder(property) && <ErrorBoundary>\n <Typography variant=\"body2\"\n component=\"span\"\n color=\"disabled\">\n This property is defined as a property builder in code\n </Typography>\n </ErrorBoundary>}\n\n {!property && <ErrorBoundary>\n <Typography variant=\"body2\"\n component=\"span\"\n color=\"disabled\">\n This field is defined as an additional field in code\n </Typography>\n </ErrorBoundary>}\n\n </div>\n\n {/*<div className=\"flex flex-row text-xs\">*/}\n {/* <Typography className=\"flex-grow pr-2\"*/}\n {/* variant=\"body2\"*/}\n {/* component=\"span\"*/}\n {/* color=\"secondary\">*/}\n {/* This field can only be edited in code*/}\n {/* </Typography>*/}\n {/*</div>*/}\n </div>\n\n </Paper>\n </div>)\n}\n","import React from \"react\";\nimport equal from \"react-fast-compare\"\n\nimport {\n AdditionalFieldDelegate,\n CMSType,\n ErrorBoundary,\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 { DragDropContext, Draggable, DraggableProvided, Droppable } from \"@hello-pangea/dnd\";\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 onDragEnd = (result: any) => {\n // dropped outside the list\n if (!result.destination) {\n return;\n }\n const startIndex = result.source.index;\n const endIndex = result.destination.index;\n\n const newPropertiesOrder = Array.from(propertiesOrder);\n const [removed] = newPropertiesOrder.splice(startIndex, 1);\n newPropertiesOrder.splice(endIndex, 0, removed);\n if (onPropertyMove)\n onPropertyMove(newPropertiesOrder, namespace);\n }\n\n return (\n <>\n\n <DragDropContext onDragEnd={onDragEnd}>\n <Droppable droppableId={`droppable_${namespace}`}>\n {(droppableProvided, droppableSnapshot) => (\n <div\n {...droppableProvided.droppableProps}\n ref={droppableProvided.innerRef}\n className={className}>\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 return (\n <Draggable\n key={`array_field_${namespace}_${propertyKey}}`}\n draggableId={`array_field_${namespace}_${propertyKey}}`}\n index={index}>\n {(provided, snapshot) => {\n return (\n <ErrorBoundary>\n <PropertyTreeEntry\n propertyKey={propertyKey as string}\n propertyOrBuilder={property}\n additionalField={additionalField}\n provided={provided}\n errors={errors}\n namespace={namespace}\n inferredPropertyKeys={inferredPropertyKeys}\n onPropertyMove={onPropertyMove}\n onPropertyRemove={onPropertyRemove}\n onPropertyClick={snapshot.isDragging ? undefined : onPropertyClick}\n selectedPropertyKey={selectedPropertyKey}\n collectionEditable={collectionEditable}\n />\n </ErrorBoundary>\n );\n }}\n </Draggable>);\n }).filter(Boolean)}\n\n {droppableProvided.placeholder}\n\n </div>\n )}\n </Droppable>\n </DragDropContext>\n\n </>\n );\n },\n (prevProps, nextProps) => {\n\n const isSelected = nextProps.selectedPropertyKey?.startsWith(nextProps.namespace ?? \"\");\n const wasSelected = prevProps.selectedPropertyKey?.startsWith(prevProps.namespace ?? \"\");\n if (isSelected || wasSelected)\n return false;\n\n return equal(prevProps.properties, nextProps.properties) &&\n prevProps.propertiesOrder === nextProps.propertiesOrder &&\n equal(prevProps.additionalFields, nextProps.additionalFields) &&\n equal(prevProps.errors, nextProps.errors) &&\n equal(prevProps.onPropertyClick, nextProps.onPropertyClick) &&\n // equal(prevProps.onPropertyMove, nextProps.onPropertyMove) &&\n // equal(prevProps.onPropertyRemove, nextProps.onPropertyRemove) &&\n prevProps.namespace === nextProps.namespace &&\n prevProps.collectionEditable === nextProps.collectionEditable;\n }\n);\n\nexport function PropertyTreeEntry({\n propertyKey,\n namespace,\n propertyOrBuilder,\n additionalField,\n provided,\n selectedPropertyKey,\n errors,\n onPropertyClick,\n onPropertyMove,\n onPropertyRemove,\n inferredPropertyKeys,\n collectionEditable\n }: {\n propertyKey: string;\n namespace?: string;\n propertyOrBuilder: PropertyOrBuilder;\n additionalField?: AdditionalFieldDelegate<any>;\n selectedPropertyKey?: string;\n provided: DraggableProvided;\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 isPropertyInferred = inferredPropertyKeys?.includes(namespace ? `${namespace}.${propertyKey}` : propertyKey);\n const fullId = getFullId(propertyKey, namespace);\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 hasError = fullId ? getIn(errors, idToPropertiesPath(fullId)) : false;\n const selected = selectedPropertyKey === fullId;\n const editable = propertyOrBuilder && ((collectionEditable && !isPropertyBuilder(propertyOrBuilder)) || editableProperty(propertyOrBuilder));\n\n return (\n <div\n ref={provided.innerRef}\n {...provided.draggableProps}\n {...provided.dragHandleProps}\n className=\"relative -ml-8\"\n >\n {subtree && <div\n className={\"absolute border-l \" + defaultBorderMixin}\n style={{\n left: \"32px\",\n top: \"64px\",\n bottom: \"16px\"\n }}/>}\n\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\n <div className=\"absolute top-2 right-2 flex flex-row \">\n\n {isPropertyInferred && <Tooltip title={\"Inferred property\"}>\n <AutorenewIcon size=\"small\" className={\"p-2\"}/>\n </Tooltip>}\n\n {onPropertyRemove && <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 >\n <DragHandleIcon size={\"small\"}/>\n </IconButton>\n </Tooltip>}\n </div>\n\n {subtree && <div className={\"ml-16\"}>{subtree}</div>}\n </div>\n );\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={\"small\"}\n label=\"Spread children as columns\"\n onValueChange={(v) => setFieldValue(\"spreadChildren\", v)}\n value={values.spreadChildren ?? false}\n />\n <FieldCaption>\n Set this flag to true if you want to display the children of this group as individual columns. This\n will only work for top level groups.\n </FieldCaption>\n </div>\n\n <PropertyFormDialog\n inArray={false}\n forceShowErrors={false}\n open={propertyDialogOpen}\n allowDataInference={allowDataInference}\n collectionEditable={collectionEditable}\n onCancel={() => {\n setPropertyDialogOpen(false);\n setSelectedPropertyKey(undefined);\n setSelectedPropertyNamespace(undefined);\n }}\n onOkClicked={() => {\n setPropertyDialogOpen(false);\n setSelectedPropertyKey(undefined);\n setSelectedPropertyNamespace(undefined);\n }}\n getData={getData}\n onDelete={deleteProperty}\n propertyKey={selectedPropertyKey}\n propertyNamespace={selectedPropertyNamespace}\n property={selectedProperty}\n existingProperty={Boolean(selectedPropertyKey)}\n autoUpdateId={!selectedPropertyKey}\n autoOpenTypeSelect={!selectedPropertyKey}\n onPropertyChanged={onPropertyCreated}\n existingPropertyKeys={selectedPropertyKey ? undefined : propertiesOrder}\n propertyConfigs={propertyConfigs}\n />\n\n </>);\n}\n","import React, { useState } from \"react\";\nimport { ArrayProperty, getFieldConfig, Property, PropertyConfig } from \"@firecms/core\";\nimport { Button, Paper, Typography } from \"@firecms/ui\";\nimport { Field, getIn, useFormex } from \"@firecms/formex\";\nimport { PropertyFormDialog } from \"../PropertyEditView\";\nimport { PropertyFieldPreview } from \"../PropertyFieldPreview\";\nimport { ArrayPropertyValidation } from \"./validation/ArrayPropertyValidation\";\nimport { ValidationPanel } from \"./validation/ValidationPanel\";\n\nexport function RepeatPropertyField({\n showErrors,\n existing,\n disabled,\n getData,\n allowDataInference,\n propertyConfigs,\n collectionEditable\n }: {\n showErrors: boolean,\n existing: boolean,\n disabled: boolean,\n getData?: () => Promise<object[]>;\n allowDataInference: boolean;\n propertyConfigs: Record<string, PropertyConfig>,\n collectionEditable: boolean;\n}) {\n\n const {\n values,\n handleChange,\n errors,\n setFieldValue,\n touched\n } = useFormex<ArrayProperty>();\n\n const [propertyDialogOpen, setPropertyDialogOpen] = useState(false);\n const ofProperty = getIn(values, \"of\");\n const ofPropertyError = getIn(touched, \"of\") && getIn(errors, \"of\");\n\n const onPropertyChanged = ({ id, property, namespace }:\n { id?: string, property: Property, namespace?: string }) => {\n setFieldValue(\"of\", property);\n };\n\n const widget = ofProperty && getFieldConfig(ofProperty, propertyConfigs);\n return (\n <>\n <div className={\"col-span-12\"}>\n <Typography variant={\"subtitle2\"}>\n Repeat component\n </Typography>\n <Field\n name={\"of\"}\n value={ofProperty}\n // validate={(property: Property) => {\n // return property?.dataType ? undefined : \"You need to specify a repeat field\";\n // }}\n >\n {({}) => (\n <Paper className=\"p-2 mt-4\">\n\n {ofProperty && <PropertyFieldPreview\n property={ofProperty}\n onClick={disabled ? undefined : () => setPropertyDialogOpen(true)}\n includeName={false}\n includeEditButton={true}\n selected={false}\n hasError={false}/>}\n\n {!disabled && !ofProperty && <Button variant={\"text\"}\n size={\"large\"}\n color={ofPropertyError ? \"error\" : \"primary\"}\n onClick={() => setPropertyDialogOpen(true)}>\n Edit {`${widget ? widget.name : \"repeat component\"}`}\n </Button>}\n\n <PropertyFormDialog\n inArray={true}\n open={propertyDialogOpen}\n existingProperty={existing}\n getData={getData}\n autoUpdateId={!existing}\n autoOpenTypeSelect={!existing}\n onOkClicked={() => setPropertyDialogOpen(false)}\n allowDataInference={allowDataInference}\n property={ofProperty}\n includeIdAndName={false}\n onPropertyChanged={onPropertyChanged}\n forceShowErrors={showErrors}\n propertyConfigs={propertyConfigs}\n collectionEditable={collectionEditable}\n />\n </Paper>\n )}\n </Field>\n\n </div>\n\n <div className={\"col-span-12\"}>\n\n <ValidationPanel>\n <ArrayPropertyValidation disabled={disabled}/>\n </ValidationPanel>\n\n </div>\n </>\n );\n}\n","import { Field, getIn, useFormex } from \"@firecms/formex\";\nimport { DebouncedTextField } from \"@firecms/ui\";\nimport { PropertyWithId } from \"../PropertyEditView\";\nimport React from \"react\";\nimport { FieldCaption, toSnakeCase, unslugify } from \"@firecms/core\";\n\ntype CommonPropertyFieldsProps = {\n showErrors: boolean,\n disabledId: boolean,\n disabled: boolean;\n isNewProperty: boolean;\n autoUpdateId: boolean;\n};\n\nexport const CommonPropertyFields = React.forwardRef<HTMLDivElement, CommonPropertyFieldsProps>(\n function CommonPropertyFields({\n showErrors,\n disabledId,\n disabled,\n autoUpdateId,\n isNewProperty\n }, ref) {\n\n const {\n errors,\n values,\n setFieldValue,\n setFieldTouched,\n touched,\n validate\n } = useFormex<PropertyWithId>();\n\n const name = \"name\";\n const nameError = showErrors && getIn(errors, name);\n\n const id = \"id\";\n const idError = showErrors && getIn(errors, id);\n\n const description = \"description\";\n const descriptionError = showErrors && getIn(errors, description);\n\n return (\n <div className={\"flex flex-col gap-2 col-span-12\"}>\n\n <div>\n <Field\n name={name}\n inputRef={ref}\n as={DebouncedTextField}\n value={values[name]}\n onChange={(e: any) => {\n const newNameValue = e.target.value;\n const idTouched = getIn(touched, id);\n if (!idTouched && autoUpdateId) {\n setFieldValue(id, newNameValue ? toSnakeCase(newNameValue) : \"\", false)\n }\n setFieldValue(name, newNameValue, true);\n setFieldTouched(name, true);\n }}\n style={{ fontSize: 20 }}\n placeholder={\"Field name\"}\n required\n disabled={disabled}\n error={Boolean(nameError)}/>\n\n <FieldCaption error={Boolean(nameError)}>\n {nameError}\n </FieldCaption>\n </div>\n\n <div>\n <Field\n name={id}\n as={DebouncedTextField}\n label={\"ID\"}\n value={values[id]}\n onChange={(e: any) => {\n const newIdValue = e.target.value;\n const nameTouched = getIn(touched, name);\n if (!nameTouched && autoUpdateId) {\n setFieldValue(name, newIdValue ? unslugify(newIdValue) : \"\")\n }\n setFieldValue(id, newIdValue, true);\n setFieldTouched(id, true);\n }}\n disabled={disabledId || disabled}\n required\n size=\"small\"\n error={Boolean(idError)}/>\n <FieldCaption error={Boolean(idError)}>\n {idError}\n </FieldCaption>\n </div>\n\n <div>\n <Field name={description}\n as={DebouncedTextField}\n label={\"Description\"}\n disabled={disabled}\n error={Boolean(descriptionError)}/>\n <FieldCaption error={Boolean(descriptionError)}>\n {descriptionError}\n </FieldCaption>\n </div>\n\n </div>\n );\n\n }\n);\n","import React from \"react\";\nimport { StringPropertyValidation } from \"./validation/StringPropertyValidation\";\nimport { ValidationPanel } from \"./validation/ValidationPanel\";\nimport { getIn, useFormex } from \"@firecms/formex\";\n\nimport { TextField } from \"@firecms/ui\";\n\nexport function StringPropertyField({\n widgetId,\n disabled,\n showErrors\n }: {\n widgetId: \"text_field\" | \"multiline\" | \"email\";\n disabled: boolean;\n showErrors: boolean;\n}) {\n\n const { values, setFieldValue } = useFormex();\n\n return (\n <>\n <div className={\"col-span-12\"}>\n\n <ValidationPanel>\n\n {widgetId === \"text_field\" &&\n <StringPropertyValidation disabled={disabled}\n length={true}\n lowercase={true}\n matches={true}\n max={true}\n min={true}\n trim={true}\n uppercase={true}\n showErrors={showErrors}/>}\n {widgetId === \"multiline\" &&\n <StringPropertyValidation disabled={disabled}\n length={true}\n lowercase={true}\n max={true}\n min={true}\n trim={true}\n uppercase={true}\n showErrors={showErrors}/>}\n\n {widgetId === \"email\" &&\n <StringPropertyValidation disabled={disabled}\n max={true}\n min={true}\n trim={true}\n showErrors={showErrors}/>}\n\n </ValidationPanel>\n\n </div>\n\n <div className={\"col-span-12\"}>\n\n <TextField name={\"defaultValue\"}\n disabled={disabled}\n onChange={(e: any) => {\n setFieldValue(\"defaultValue\", e.target.value === \"\" ? undefined : e.target.value);\n }}\n label={\"Default value\"}\n value={getIn(values, \"defaultValue\") ?? \"\"}/>\n\n </div>\n </>\n );\n}\n","import React from \"react\";\nimport { Field, FormexFieldProps, getIn, useFormex } from \"@firecms/formex\";\n\nimport { GeneralPropertyValidation } from \"./validation/GeneralPropertyValidation\";\nimport { ValidationPanel } from \"./validation/ValidationPanel\";\nimport { SwitchControl } from \"../SwitchControl\";\n\nexport function BooleanPropertyField({ disabled }: {\n disabled: boolean;\n}) {\n const { values } = useFormex();\n const defaultValue = getIn(values, \"defaultValue\");\n\n return (\n <>\n <div className={\"col-span-12\"}>\n\n <ValidationPanel>\n <GeneralPropertyValidation disabled={disabled}/>\n </ValidationPanel>\n\n </div>\n\n <div className={\"col-span-12\"}>\n\n <Field\n name={\"defaultValue\"}>\n {({ field, form }: FormexFieldProps) => {\n return <SwitchControl\n label={defaultValue === null || defaultValue === undefined ? \"Default value not set\" : (\"Default value is \" + defaultValue.toString())}\n disabled={disabled}\n allowIndeterminate={true} field={field}\n form={form}/>\n }}\n </Field>\n\n </div>\n </>\n );\n}\n","import React, { useState } from \"react\";\nimport { AddIcon, Button, Paper, Typography } from \"@firecms/ui\";\nimport { getIn, useFormex } from \"@firecms/formex\";\nimport { OnPropertyChangedParams, PropertyFormDialog } from \"../PropertyEditView\";\nimport {\n getFullId,\n getFullIdPath,\n idToPropertiesPath,\n namespaceToPropertiesOrderPath,\n namespaceToPropertiesPath\n} from \"../util\";\nimport { PropertyTree } from \"../PropertyTree\";\nimport { ArrayProperty, PropertyConfig } from \"@firecms/core\";\n\nexport function BlockPropertyField({\n disabled,\n getData,\n allowDataInference,\n propertyConfigs,\n collectionEditable\n }: {\n disabled: boolean;\n getData?: () => Promise<object[]>;\n allowDataInference: boolean;\n propertyConfigs: Record<string, PropertyConfig>,\n collectionEditable: boolean;\n}) {\n\n const {\n values,\n setFieldValue\n } = useFormex<ArrayProperty>();\n\n const [propertyDialogOpen, setPropertyDialogOpen] = useState<boolean>(false);\n const [selectedPropertyKey, setSelectedPropertyKey] = useState<string | undefined>();\n const [selectedPropertyNamespace, setSelectedPropertyNamespace] = useState<string | undefined>();\n\n const onPropertyChanged = ({\n id,\n namespace,\n property\n }: OnPropertyChangedParams) => {\n if (!id)\n throw Error();\n\n setFieldValue(\"oneOf.\" + getFullIdPath(id, namespace), property, false);\n\n const currentPropertiesOrder = values.oneOf?.propertiesOrder ?? Object.keys(values.oneOf?.properties ?? {});\n const newPropertiesOrder = currentPropertiesOrder.includes(id) ? currentPropertiesOrder : [...currentPropertiesOrder, id];\n setFieldValue(\"oneOf.\" + namespaceToPropertiesOrderPath(namespace), newPropertiesOrder, false);\n setPropertyDialogOpen(false);\n };\n\n const selectedPropertyFullId = selectedPropertyKey ? getFullId(selectedPropertyKey, selectedPropertyNamespace) : undefined;\n const selectedProperty = selectedPropertyFullId ? getIn(values.oneOf?.properties, selectedPropertyFullId.replaceAll(\".\", \".properties.\")) : undefined;\n\n const deleteProperty = (propertyKey?: string, namespace?: string) => {\n const fullId = propertyKey ? getFullId(propertyKey, namespace) : undefined;\n if (!fullId)\n throw Error(\"collection editor miss config\");\n\n setFieldValue(`oneOf.${idToPropertiesPath(fullId)}`, undefined, false);\n const propertiesOrderPath = `oneOf.${namespaceToPropertiesOrderPath(namespace)}`;\n const currentPropertiesOrder: string[] = getIn(values, propertiesOrderPath) ?? Object.keys(getIn(values, namespaceToPropertiesPath(namespace)));\n setFieldValue(propertiesOrderPath, currentPropertiesOrder.filter((p) => p !== propertyKey), false);\n\n setPropertyDialogOpen(false);\n setSelectedPropertyKey(undefined);\n setSelectedPropertyNamespace(undefined);\n };\n\n const addChildButton = <Button\n autoFocus\n color=\"primary\"\n\n onClick={() => setPropertyDialogOpen(true)}\n startIcon={<AddIcon/>}\n >\n Add property to {values.name ?? \"this block\"}\n </Button>;\n\n const onPropertyMove = (propertiesOrder: string[], namespace?: string) => {\n setFieldValue(`oneOf.${namespaceToPropertiesOrderPath(namespace)}`, propertiesOrder, false);\n };\n\n return (\n <>\n <div className={\"col-span-12\"}>\n <div className={\"flex justify-between items-end mt-8 mb-4\"}>\n <Typography variant={\"subtitle2\"}>\n Properties in this block\n </Typography>\n {addChildButton}\n </div>\n <Paper className=\"p-2 pl-8\">\n\n <PropertyTree\n properties={values.oneOf?.properties ?? {}}\n propertiesOrder={values.oneOf?.propertiesOrder}\n errors={{}}\n collectionEditable={collectionEditable}\n onPropertyClick={disabled\n ? undefined\n : (propertyKey, namespace) => {\n setSelectedPropertyKey(propertyKey);\n setSelectedPropertyNamespace(namespace);\n setPropertyDialogOpen(true);\n }}\n onPropertyMove={disabled\n ? undefined\n : onPropertyMove}/>\n\n {!disabled && (values.oneOf?.propertiesOrder?.length === 0)&&\n <div className=\"h-full flex items-center justify-center p-4\">\n Add the first property to this block\n </div>}\n\n </Paper>\n </div>\n\n {!disabled && <PropertyFormDialog\n inArray={false}\n forceShowErrors={false}\n open={propertyDialogOpen}\n getData={getData}\n allowDataInference={allowDataInference}\n onCancel={() => {\n setPropertyDialogOpen(false);\n setSelectedPropertyKey(undefined);\n setSelectedPropertyNamespace(undefined);\n }}\n onOkClicked={() => {\n setPropertyDialogOpen(false);\n setSelectedPropertyKey(undefined);\n setSelectedPropertyNamespace(undefined);\n }}\n collectionEditable={collectionEditable}\n onDelete={deleteProperty}\n propertyKey={selectedPropertyKey}\n propertyNamespace={selectedPropertyNamespace}\n property={selectedProperty}\n existingProperty={Boolean(selectedPropertyKey)}\n autoUpdateId={!selectedPropertyKey}\n autoOpenTypeSelect={!selectedPropertyKey}\n onPropertyChanged={onPropertyChanged}\n existingPropertyKeys={selectedPropertyKey ? undefined : values.oneOf?.propertiesOrder}\n propertyConfigs={propertyConfigs}/>}\n\n </>);\n}\n","import React from \"react\";\n\nimport { Field, FormexFieldProps, getIn, useFormex } from \"@firecms/formex\";\nimport { DebouncedTextField } from \"@firecms/ui\";\nimport { GeneralPropertyValidation } from \"./GeneralPropertyValidation\";\nimport { SwitchControl } from \"../../SwitchControl\";\n\nexport function NumberPropertyValidation({ disabled }: {\n disabled: boolean;\n}) {\n\n const {\n values,\n handleChange\n } = useFormex();\n\n const validationMin = \"validation.min\";\n const validationMax = \"validation.max\";\n const validationLessThan = \"validation.lessThan\";\n const validationMoreThan = \"validation.moreThan\";\n const validationPositive = \"validation.positive\";\n const validationNegative = \"validation.negative\";\n const validationInteger = \"validation.integer\";\n\n return (\n\n <div className={\"grid grid-cols-12 gap-2\"}>\n <GeneralPropertyValidation disabled={disabled}/>\n\n\n <div className={\"col-span-6\"}>\n <DebouncedTextField value={getIn(values, validationMin)}\n label={\"Min value\"}\n name={validationMin}\n type=\"number\"\n size=\"small\"\n disabled={disabled}\n onChange={handleChange}/>\n </div>\n\n <div className={\"col-span-6\"}>\n <DebouncedTextField value={getIn(values, validationMax)}\n label={\"Max value\"}\n name={validationMax}\n type=\"number\"\n size=\"small\"\n\n disabled={disabled}\n onChange={handleChange}/>\n </div>\n\n\n <div className={\"col-span-6\"}>\n <DebouncedTextField\n value={getIn(values, validationLessThan)}\n label={\"Less than\"}\n name={validationLessThan}\n type=\"number\"\n size=\"small\"\n\n disabled={disabled}\n onChange={handleChange}/>\n </div>\n\n <div className={\"col-span-6\"}>\n <DebouncedTextField\n value={getIn(values, validationMoreThan)}\n label={\"More than\"}\n name={validationMoreThan}\n type=\"number\"\n size=\"small\"\n\n disabled={disabled}\n onChange={handleChange}/>\n </div>\n\n <div className={\"col-span-4\"}>\n <Field name={validationPositive}\n type=\"checkbox\">\n {({ field, form }: FormexFieldProps) => {\n return <SwitchControl\n label={\"Positive value\"}\n disabled={disabled}\n form={form}\n field={field}/>\n }}\n </Field>\n </div>\n <div className={\"col-span-4\"}>\n <Field name={validationNegative}\n type=\"checkbox\">\n {({ field, form }: FormexFieldProps) => {\n return <SwitchControl\n label={\"Negative value\"}\n disabled={disabled}\n form={form}\n field={field}/>\n }}\n </Field>\n </div>\n <div className={\"col-span-4\"}>\n <Field name={validationInteger}\n type=\"checkbox\">\n {({ field, form }: FormexFieldProps) => {\n return <SwitchControl\n label={\"Integer value\"}\n disabled={disabled}\n form={form}\n field={field}/>\n }}\n </Field>\n </div>\n </div>\n );\n}\n","import React from \"react\";\nimport { NumberPropertyValidation } from \"./validation/NumberPropertyValidation\";\nimport { ValidationPanel } from \"./validation/ValidationPanel\";\nimport { TextField } from \"@firecms/ui\";\nimport { getIn, useFormex } from \"@firecms/formex\";\n\nexport function NumberPropertyField({ disabled }: {\n disabled: boolean;\n}) {\n\n const { values, setFieldValue } = useFormex();\n\n return (\n <>\n\n <div className={\"col-span-12\"}>\n\n <ValidationPanel>\n <NumberPropertyValidation disabled={disabled}/>\n </ValidationPanel>\n\n </div>\n\n <div className={\"col-span-12\"}>\n\n <TextField name={\"defaultValue\"}\n disabled={disabled}\n type={\"number\"}\n onChange={(e: any) => {\n setFieldValue(\"defaultValue\", e.target.value === \"\" ? undefined : parseFloat(e.target.value));\n }}\n label={\"Default value\"}\n value={getIn(values, \"defaultValue\") ?? \"\"}/>\n\n </div>\n </>\n );\n}\n","import React from \"react\";\nimport { Field, getIn, useFormex } from \"@firecms/formex\";\nimport { FieldCaption, IconForView, NumberProperty, StringProperty, useNavigationController } from \"@firecms/core\";\nimport { CircularProgress, Select, SelectGroup, SelectItem, Typography, } from \"@firecms/ui\";\n\nexport function ReferencePropertyField({\n existing,\n multiple,\n disabled,\n showErrors\n }: {\n existing: boolean,\n multiple: boolean,\n disabled: boolean,\n showErrors: 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 = 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 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 disabled={disabled}\n tooltip={\"Is this a read only field. Display only as a preview\"}\n form={form}\n field={field}/>\n }}\n </Field>\n </div>\n </div>\n );\n}\n","import React from \"react\";\nimport { ValidationPanel } from \"./validation/ValidationPanel\";\nimport { GeneralPropertyValidation } from \"./validation/GeneralPropertyValidation\";\n\nexport function KeyValuePropertyField({ disabled }: {\n disabled: boolean;\n}) {\n\n return (\n <>\n <div className={\"col-span-12\"}>\n\n <ValidationPanel>\n <GeneralPropertyValidation disabled={disabled}/>\n </ValidationPanel>\n\n </div>\n </>\n );\n}\n","import {\n ArrayProperty,\n BooleanProperty,\n DateProperty,\n MapProperty,\n mergeDeep,\n NumberProperty,\n Property,\n PropertyConfig,\n StringProperty\n} from \"@firecms/core\";\n\nexport function updatePropertyFromWidget(propertyData: any,\n selectedWidgetId: string | undefined,\n propertyConfigs: Record<string, PropertyConfig>): Property {\n\n let updatedProperty;\n if (selectedWidgetId === \"text_field\") {\n updatedProperty = mergeDeep(\n propertyData,\n {\n dataType: \"string\",\n propertyConfig: \"text_field\",\n editable: propertyData.editable !== undefined ? propertyData.editable : true,\n storage: undefined,\n multiline: undefined,\n markdown: undefined,\n email: undefined,\n url: undefined,\n enumValues: undefined\n } satisfies StringProperty\n );\n } else if (selectedWidgetId === \"multiline\") {\n updatedProperty = mergeDeep(\n propertyData,\n {\n dataType: \"string\",\n propertyConfig: \"multiline\",\n editable: propertyData.editable !== undefined ? propertyData.editable : true,\n multiline: true,\n storage: undefined,\n markdown: undefined,\n email: undefined,\n url: undefined,\n enumValues: undefined\n } satisfies StringProperty\n );\n } else if (selectedWidgetId === \"markdown\") {\n updatedProperty = mergeDeep(\n propertyData,\n {\n dataType: \"string\",\n propertyConfig: \"markdown\",\n editable: propertyData.editable !== undefined ? propertyData.editable : true,\n storage: undefined,\n multiline: undefined,\n markdown: true,\n email: undefined,\n url: undefined\n } satisfies StringProperty\n );\n } else if (selectedWidgetId === \"url\") {\n updatedProperty = mergeDeep(\n propertyData,\n {\n dataType: \"string\",\n propertyConfig: \"url\",\n editable: propertyData.editable !== undefined ? propertyData.editable : true,\n storage: undefined,\n multiline: undefined,\n markdown: undefined,\n email: undefined,\n url: true,\n enumValues: undefined\n } satisfies StringProperty\n );\n } else if (selectedWidgetId === \"email\") {\n updatedProperty = mergeDeep(\n propertyData,\n {\n dataType: \"string\",\n propertyConfig: \"email\",\n editable: propertyData.editable !== undefined ? propertyData.editable : true,\n storage: undefined,\n multiline: undefined,\n markdown: undefined,\n email: true,\n url: undefined,\n enumValues: undefined\n } satisfies StringProperty\n );\n } else if (selectedWidgetId === \"select\") {\n updatedProperty = mergeDeep(\n propertyData,\n {\n dataType: \"string\",\n propertyConfig: \"select\",\n editable: propertyData.editable !== undefined ? propertyData.editable : true,\n storage: undefined,\n multiline: undefined,\n markdown: undefined,\n email: undefined,\n url: undefined,\n enumValues: propertyData.enumValues ?? []\n } satisfies StringProperty\n );\n } else if (selectedWidgetId === \"multi_select\") {\n updatedProperty = mergeDeep(\n propertyData,\n {\n dataType: \"array\",\n propertyConfig: \"multi_select\",\n editable: propertyData.editable !== undefined ? propertyData.editable : true,\n of: {\n dataType: \"string\",\n enumValues: propertyData.of?.enumValues ?? []\n }\n } satisfies ArrayProperty\n );\n } else if (selectedWidgetId === \"number_input\") {\n updatedProperty = mergeDeep(\n propertyData,\n {\n dataType: \"number\",\n propertyConfig: \"number_input\",\n editable: propertyData.editable !== undefined ? propertyData.editable : true,\n enumValues: undefined\n } satisfies NumberProperty\n );\n } else if (selectedWidgetId === \"number_select\") {\n updatedProperty = mergeDeep(\n propertyData,\n {\n dataType: \"number\",\n propertyConfig: \"number_select\",\n editable: propertyData.editable !== undefined ? propertyData.editable : true,\n enumValues: propertyData.enumValues ?? []\n } satisfies NumberProperty\n );\n } else if (selectedWidgetId === \"multi_number_select\") {\n updatedProperty = mergeDeep(\n propertyData,\n {\n dataType: \"array\",\n propertyConfig: \"multi_number_select\",\n editable: propertyData.editable !== undefined ? propertyData.editable : true,\n of: {\n dataType: \"number\",\n enumValues: propertyData.of?.enumValues ?? []\n }\n } satisfies ArrayProperty\n );\n } else if (selectedWidgetId === \"file_upload\") {\n updatedProperty = mergeDeep(\n propertyData,\n {\n dataType: \"string\",\n propertyConfig: \"file_upload\",\n editable: propertyData.editable !== undefined ? propertyData.editable : true,\n storage: {\n storagePath: \"/\"\n }\n } satisfies StringProperty\n );\n } else if (selectedWidgetId === \"multi_file_upload\") {\n updatedProperty = mergeDeep(\n propertyData,\n {\n dataType: \"array\",\n propertyConfig: \"multi_file_upload\",\n editable: propertyData.editable !== undefined ? propertyData.editable : true,\n of: {\n dataType: \"string\",\n storage: propertyData.of?.storage ?? {\n storagePath: \"/\"\n }\n }\n } satisfies ArrayProperty\n );\n } else if (selectedWidgetId === \"group\") {\n updatedProperty = mergeDeep(\n propertyData,\n {\n dataType: \"map\",\n propertyConfig: \"group\",\n editable: propertyData.editable !== undefined ? propertyData.editable : true,\n keyValue: false,\n properties: propertyData.properties ?? {}\n } satisfies MapProperty\n );\n } else if (selectedWidgetId === \"key_value\") {\n updatedProperty = mergeDeep(\n propertyData,\n {\n dataType: \"map\",\n propertyConfig: \"key_value\",\n editable: propertyData.editable !== undefined ? propertyData.editable : true,\n keyValue: true,\n properties: undefined\n } satisfies MapProperty\n );\n } else if (selectedWidgetId === \"reference\") {\n updatedProperty = mergeDeep(\n propertyData,\n {\n dataType: \"reference\",\n propertyConfig: \"reference\",\n editable: propertyData.editable !== undefined ? propertyData.editable : true\n } satisfies Property\n );\n } else if (selectedWidgetId === \"multi_references\") {\n updatedProperty = mergeDeep(\n propertyData,\n {\n dataType: \"array\",\n propertyConfig: \"multi_references\",\n editable: propertyData.editable !== undefined ? propertyData.editable : true,\n of: {\n dataType: \"reference\"\n }\n } satisfies ArrayProperty\n );\n } else if (selectedWidgetId === \"switch\") {\n updatedProperty = mergeDeep(\n propertyData,\n {\n dataType: \"boolean\",\n propertyConfig: \"switch\",\n editable: propertyData.editable !== undefined ? propertyData.editable : true\n } satisfies BooleanProperty\n );\n } else if (selectedWidgetId === \"date_time\") {\n updatedProperty = mergeDeep(\n propertyData,\n {\n dataType: \"date\",\n propertyConfig: \"date_time\",\n editable: propertyData.editable !== undefined ? propertyData.editable : true,\n mode: \"date_time\"\n } satisfies DateProperty\n );\n } else if (selectedWidgetId === \"repeat\") {\n updatedProperty = mergeDeep(\n propertyData,\n {\n dataType: \"array\",\n propertyConfig: \"repeat\",\n editable: propertyData.editable !== undefined ? propertyData.editable : true\n } satisfies ArrayProperty\n );\n } else if (selectedWidgetId === \"block\") {\n updatedProperty = mergeDeep(\n propertyData,\n {\n dataType: \"array\",\n propertyConfig: \"block\",\n editable: propertyData.editable !== undefined ? propertyData.editable : true,\n oneOf: {\n properties: {}\n }\n } satisfies ArrayProperty\n );\n } else if (selectedWidgetId && propertyConfigs[selectedWidgetId]) {\n updatedProperty = {\n ...propertyConfigs[selectedWidgetId].property,\n propertyConfig: selectedWidgetId\n };\n }\n\n return updatedProperty;\n}\n","import React from \"react\";\nimport { StringPropertyValidation } from \"./validation/StringPropertyValidation\";\nimport { ValidationPanel } from \"./validation/ValidationPanel\";\nimport { getIn, useFormex } from \"@firecms/formex\";\n\nimport { Select, SelectItem, TextField } from \"@firecms/ui\";\n\nexport function UrlPropertyField({\n disabled,\n showErrors\n }: {\n disabled: boolean;\n showErrors: boolean;\n}) {\n\n const { values, setFieldValue } = useFormex();\n\n const urlValue = getIn(values, \"url\");\n\n return (\n <>\n <div className={\"col-span-12\"}>\n\n <Select\n disabled={disabled}\n position={\"item-aligned\"}\n fullWidth={true}\n onValueChange={(value: string) => {\n if (value === \"[NONE]\")\n setFieldValue(\"url\", true);\n else\n setFieldValue(\"url\", value);\n }}\n label={\"Preview type\"}\n renderValue={(value: string) => {\n switch (value) {\n case \"image\":\n return \"Image\";\n case \"video\":\n return \"Video\";\n case \"audio\":\n return \"Audio\";\n default:\n return \"Display URL\";\n }\n }}\n value={urlValue ?? \"[NONE]\"}>\n <SelectItem value={\"[NONE]\"}>\n Display URL\n </SelectItem>\n <SelectItem value={\"image\"}>\n Image\n </SelectItem>\n <SelectItem value={\"video\"}>\n Video\n </SelectItem>\n <SelectItem value={\"audio\"}>\n Audio\n </SelectItem>\n </Select>\n </div>\n\n <div className={\"col-span-12\"}>\n\n <ValidationPanel>\n\n <StringPropertyValidation disabled={disabled}\n max={true}\n min={true}\n trim={true}\n showErrors={showErrors}/>\n\n </ValidationPanel>\n\n </div>\n\n <div className={\"col-span-12\"}>\n\n <TextField name={\"defaultValue\"}\n disabled={disabled}\n onChange={(e: any) => {\n setFieldValue(\"defaultValue\", e.target.value === \"\" ? undefined : e.target.value);\n }}\n label={\"Default value\"}\n value={getIn(values, \"defaultValue\") ?? \"\"}/>\n\n </div>\n </>\n );\n}\n","import { DEFAULT_FIELD_CONFIGS, PropertyConfigId, PropertyConfig } from \"@firecms/core\";\n\nexport const supportedFieldsIds: PropertyConfigId[] = [\n \"text_field\",\n \"multiline\",\n \"markdown\",\n \"url\",\n \"email\",\n \"select\",\n \"multi_select\",\n \"number_input\",\n \"number_select\",\n \"multi_number_select\",\n \"file_upload\",\n \"multi_file_upload\",\n \"reference\",\n \"multi_references\",\n \"switch\",\n \"date_time\",\n \"group\",\n \"key_value\",\n \"repeat\",\n \"block\"\n];\n\nexport const supportedFields: Record<string, PropertyConfig> = Object.entries(DEFAULT_FIELD_CONFIGS)\n .filter(([id]) => supportedFieldsIds.includes(id as PropertyConfigId))\n .map(([id, config]) => ({ [id]: config }))\n .reduce((a, b) => ({ ...a, ...b }), {});\n","import React from \"react\";\nimport { StringPropertyValidation } from \"./validation/StringPropertyValidation\";\nimport { ValidationPanel } from \"./validation/ValidationPanel\";\nimport { Field, getIn, useFormex } from \"@firecms/formex\";\n\nimport { CloudUploadIcon, DebouncedTextField, ExpandablePanel, TextField, Typography } from \"@firecms/ui\";\n\nexport function MarkdownPropertyField({\n disabled,\n showErrors\n }: {\n disabled: boolean;\n showErrors: boolean;\n}) {\n\n const {\n values,\n setFieldValue\n } = useFormex();\n\n const baseStoragePath = \"storage\";\n\n const metadata = `${baseStoragePath}.metadata`;\n const fileName = `${baseStoragePath}.fileName`;\n const maxSize = `${baseStoragePath}.maxSize`;\n const storagePath = `${baseStoragePath}.storagePath`;\n\n const fileNameValue = getIn(values, fileName) ?? \"{rand}_{file}\";\n const storagePathValue = getIn(values, storagePath) ?? \"/\";\n const maxSizeValue = getIn(values, maxSize);\n\n const hasFilenameCallback = typeof fileNameValue === \"function\";\n const hasStoragePathCallback = typeof storagePathValue === \"function\";\n\n return (\n <>\n <div className={\"col-span-12\"}>\n\n <ValidationPanel>\n\n <StringPropertyValidation disabled={disabled}\n length={true}\n lowercase={true}\n max={true}\n min={true}\n trim={true}\n uppercase={true}\n showErrors={showErrors}/>\n\n </ValidationPanel>\n\n </div>\n\n <div className={\"col-span-12\"}>\n <ExpandablePanel\n title={\n <div className=\"flex flex-row text-surface-500\">\n <CloudUploadIcon/>\n <Typography variant={\"subtitle2\"}\n className=\"ml-2\">\n File upload config\n </Typography>\n </div>\n }>\n\n <div className={\"grid grid-cols-12 gap-2 p-4\"}>\n\n\n <div className={\"col-span-12\"}>\n <Field name={fileName}\n as={DebouncedTextField}\n label={\"File name\"}\n size={\"small\"}\n disabled={hasFilenameCallback || disabled}\n value={hasFilenameCallback ? \"-\" : fileNameValue}\n />\n </div>\n <div className={\"col-span-12\"}>\n <Field name={storagePath}\n as={DebouncedTextField}\n label={\"Storage path\"}\n disabled={hasStoragePathCallback || disabled}\n size={\"small\"}\n value={hasStoragePathCallback ? \"-\" : storagePathValue}\n />\n <Typography variant={\"caption\"} className={\"ml-3.5 mt-1 mb-2\"}>\n <p>You can use the following placeholders in\n the file name\n and storage path values:</p>\n <ul>\n <li>{\"{file} - Full name of the uploaded file\"}</li>\n <li>{\"{file.name} - Name of the uploaded file without extension\"}</li>\n <li>{\"{file.ext} - Extension of the uploaded file\"}</li>\n <li>{\"{entityId} - ID of the entity\"}</li>\n <li>{\"{propertyKey} - ID of this field\"}</li>\n <li>{\"{path} - Path of this entity\"}</li>\n <li>{\"{rand} - Random value used to avoid name collisions\"}</li>\n </ul>\n </Typography>\n\n <Typography variant={\"caption\"} className={\"ml-3.5 mt-1 mb-2\"}>\n When using Markdown, the URL of the uploaded files are always saved in the text value\n (not\n the path).\n </Typography>\n </div>\n\n <div className={\"col-span-12\"}>\n <DebouncedTextField name={maxSize}\n type={\"number\"}\n label={\"Max size (in bytes)\"}\n size={\"small\"}\n value={maxSizeValue !== undefined && maxSizeValue !== null ? maxSizeValue.toString() : \"\"}\n onChange={(e) => {\n const value = e.target.value;\n if (value === \"\") setFieldValue(maxSize, undefined);\n else setFieldValue(maxSize, parseInt(value));\n }}\n />\n </div>\n\n </div>\n </ExpandablePanel>\n </div>\n\n <div className={\"col-span-12\"}>\n\n <TextField name={\"defaultValue\"}\n disabled={disabled}\n onChange={(e: any) => {\n setFieldValue(\"defaultValue\", e.target.value === \"\" ? undefined : e.target.value);\n }}\n label={\"Default value\"}\n value={getIn(values, \"defaultValue\") ?? \"\"}/>\n\n </div>\n </>\n );\n}\n","import React, { useDeferredValue, useEffect, useRef, useState } from \"react\";\nimport equal from \"react-fast-compare\"\n\nimport { Formex, FormexController, getIn, useCreateFormex } from \"@firecms/formex\";\nimport {\n ConfirmationDialog,\n DEFAULT_FIELD_CONFIGS,\n getFieldConfig,\n getFieldId,\n isEmptyObject,\n isPropertyBuilder,\n isValidRegExp,\n mergeDeep,\n Property,\n PropertyConfig,\n PropertyConfigBadge,\n PropertyConfigId,\n} from \"@firecms/core\";\nimport {\n Button,\n Card,\n cls,\n DeleteIcon,\n Dialog,\n DialogActions,\n DialogContent,\n DialogTitle,\n fieldBackgroundDisabledMixin,\n fieldBackgroundHoverMixin,\n fieldBackgroundMixin,\n IconButton,\n InfoLabel,\n Tooltip,\n Typography,\n WarningIcon\n} from \"@firecms/ui\";\nimport { EnumPropertyField } from \"./properties/EnumPropertyField\";\nimport { StoragePropertyField } from \"./properties/StoragePropertyField\";\nimport { MapPropertyField } from \"./properties/MapPropertyField\";\nimport { RepeatPropertyField } from \"./properties/RepeatPropertyField\";\nimport { CommonPropertyFields } from \"./properties/CommonPropertyFields\";\nimport { StringPropertyField } from \"./properties/StringPropertyField\";\nimport { BooleanPropertyField } from \"./properties/BooleanPropertyField\";\nimport { BlockPropertyField } from \"./properties/BlockPropertyField\";\nimport { NumberPropertyField } from \"./properties/NumberPropertyField\";\nimport { ReferencePropertyField } from \"./properties/ReferencePropertyField\";\nimport { DateTimePropertyField } from \"./properties/DateTimePropertyField\";\nimport { AdvancedPropertyValidation } from \"./properties/advanced/AdvancedPropertyValidation\";\nimport { editableProperty } from \"../../utils/entities\";\nimport { KeyValuePropertyField } from \"./properties/KeyValuePropertyField\";\nimport { updatePropertyFromWidget } from \"./utils/update_property_for_widget\";\nimport { UrlPropertyField } from \"./properties/UrlPropertyField\";\nimport { supportedFields } from \"./utils/supported_fields\";\nimport { MarkdownPropertyField } from \"./properties/MarkdownPropertyField\";\n\nexport type PropertyWithId = Property & {\n id?: string\n};\n\nexport type OnPropertyChangedParams = {\n id?: string,\n property: Property,\n namespace?: string,\n previousId?: string\n};\n\nexport type PropertyFormProps = {\n includeIdAndName?: boolean;\n existingProperty: boolean;\n autoUpdateId?: boolean;\n autoOpenTypeSelect: boolean;\n inArray: boolean;\n propertyKey?: string;\n propertyNamespace?: string;\n property?: Property;\n onPropertyChanged?: (params: OnPropertyChangedParams) => void;\n onPropertyChangedImmediate?: boolean;\n onDismiss?: () => void;\n onDelete?: (id?: string, namespace?: string) => void;\n onError?: (id: string, namespace?: string, error?: Record<string, any>) => void;\n initialErrors?: Record<string, any>;\n existingPropertyKeys?: string[];\n forceShowErrors?: boolean;\n allowDataInference: boolean;\n getData?: () => Promise<object[]>;\n getController?: (formex: FormexController<PropertyWithId>) => void;\n propertyConfigs: Record<string, PropertyConfig>;\n collectionEditable: boolean;\n};\n\nexport const PropertyForm = React.memo(\n function PropertyForm(props: PropertyFormProps) {\n\n const {\n includeIdAndName = true,\n autoOpenTypeSelect,\n existingProperty,\n autoUpdateId,\n inArray,\n propertyKey,\n existingPropertyKeys,\n propertyNamespace,\n property,\n onPropertyChanged,\n onPropertyChangedImmediate = true,\n onDismiss,\n onDelete,\n onError,\n initialErrors,\n forceShowErrors,\n allowDataInference,\n getController,\n getData,\n propertyConfigs,\n collectionEditable\n } = props;\n\n const initialValue: PropertyWithId = {\n id: \"\",\n name: \"\"\n } as PropertyWithId;\n\n const disabled = (Boolean(property && !editableProperty(property)) && !collectionEditable);\n\n const lastSubmittedProperty = useRef<OnPropertyChangedParams | undefined>(property ? {\n id: propertyKey,\n previousId: propertyKey,\n property\n } : undefined);\n\n const doOnPropertyChanged = ({\n id,\n property\n }: OnPropertyChangedParams) => {\n const params = {\n id,\n previousId: lastSubmittedProperty.current?.id,\n property,\n namespace: propertyNamespace\n };\n lastSubmittedProperty.current = params;\n onPropertyChanged?.(params);\n };\n\n const formexController = useCreateFormex<PropertyWithId>({\n debugId: \"PROPERTY_FORM\",\n initialValues: property\n ? { id: propertyKey, ...property } as PropertyWithId\n : initialValue,\n initialErrors,\n validateOnChange: true,\n validateOnInitialRender: true,\n onSubmit: (newPropertyWithId, controller) => {\n console.debug(\"onSubmit\", newPropertyWithId);\n const {\n id,\n ...property\n } = newPropertyWithId;\n doOnPropertyChanged({\n id,\n property: {\n ...property,\n editable: property.editable ?? true\n }\n });\n if (!existingProperty)\n controller.resetForm({ values: initialValue });\n },\n validation: (values) => {\n const errors: Record<string, any> = {};\n if (includeIdAndName) {\n if (!values.name) {\n errors.name = \"Required\";\n } else {\n const nameError = validateName(values.name);\n if (nameError)\n errors.name = nameError;\n }\n if (!values.id) {\n errors.id = \"Required\";\n } else {\n const idError = validateId(values.id, existingPropertyKeys);\n if (idError)\n errors.id = idError;\n }\n }\n\n if (values.dataType === \"string\") {\n if (values.validation?.matches && !isValidRegExp(values.validation?.matches.toString())) {\n errors.validation = {\n matches: \"Invalid regular expression\"\n }\n }\n }\n if (values.dataType === \"reference\" && !values.path) {\n errors.path = \"You must specify a target collection for the field\";\n }\n if (values.propertyConfig === \"repeat\") {\n if (!(values as any).of) {\n errors.of = \"You need to specify a repeat field\";\n }\n }\n if (values.propertyConfig === \"block\") {\n if (!(values as any).oneOf) {\n errors.oneOf = \"You need to specify the properties of this block\";\n }\n }\n return errors;\n }\n });\n\n useEffect(() => {\n getController?.(formexController);\n }, [formexController, getController]);\n\n return <Formex value={formexController}>\n <PropertyEditFormFields\n onPropertyChanged={onPropertyChangedImmediate\n ? doOnPropertyChanged\n : undefined}\n onDelete={onDelete}\n includeIdAndTitle={includeIdAndName}\n propertyNamespace={propertyNamespace}\n onError={onError}\n onDismiss={onDismiss}\n showErrors={forceShowErrors || formexController.submitCount > 0}\n existing={existingProperty}\n autoUpdateId={autoUpdateId}\n inArray={inArray}\n autoOpenTypeSelect={autoOpenTypeSelect}\n disabled={disabled}\n getData={getData}\n allowDataInference={allowDataInference}\n propertyConfigs={propertyConfigs}\n collectionEditable={collectionEditable}\n {...formexController}/>\n </Formex>;\n }, (a, b) =>\n a.getData === b.getData &&\n a.propertyKey === b.propertyKey &&\n a.propertyNamespace === b.propertyNamespace &&\n a.includeIdAndName === b.includeIdAndName &&\n a.autoOpenTypeSelect === b.autoOpenTypeSelect &&\n a.autoUpdateId === b.autoUpdateId &&\n a.existingPropertyKeys === b.existingPropertyKeys &&\n a.existingProperty === b.existingProperty\n);\n\nexport function PropertyFormDialog({\n open,\n onCancel,\n onOkClicked,\n onPropertyChanged,\n getData,\n collectionEditable,\n ...formProps\n }: PropertyFormProps & {\n open?: boolean;\n onOkClicked?: () => void;\n onCancel?: () => void;\n}) {\n const formexRef = useRef<FormexController<PropertyWithId>>();\n const getController = (helpers: FormexController<PropertyWithId>) => {\n formexRef.current = helpers;\n };\n\n return <Dialog\n open={open ?? false}\n maxWidth={\"xl\"}\n fullWidth={true}\n >\n <form noValidate={true}\n autoComplete={\"off\"}\n onSubmit={(e) => {\n e.preventDefault();\n e.stopPropagation();\n formexRef.current?.handleSubmit(e)\n }}>\n <DialogTitle hidden>Property edit view</DialogTitle>\n <DialogContent>\n\n <PropertyForm {...formProps}\n onDismiss={onCancel}\n onPropertyChanged={(params) => {\n onPropertyChanged?.(params);\n onOkClicked?.();\n }}\n collectionEditable={collectionEditable}\n onPropertyChangedImmediate={false}\n getController={getController}\n getData={getData}\n />\n </DialogContent>\n\n <DialogActions>\n\n {onCancel && <Button\n variant={\"text\"}\n 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 && !isEmptyObject(errors)) {\n onError(values?.id, propertyNamespace, errors);\n }\n }, [errors, propertyNamespace, values?.id]);\n\n const onWidgetSelectChanged = (newSelectedWidgetId: PropertyConfigId) => {\n setSelectedFieldConfigId(newSelectedWidgetId);\n setValues(updatePropertyFromWidget(values, newSelectedWidgetId, propertyConfigs));\n // Ugly hack to autofocus the name field\n setTimeout(() => {\n nameFieldRef.current?.focus();\n }, 0);\n };\n\n let childComponent;\n if (selectedFieldConfigId === \"text_field\" ||\n selectedFieldConfigId === \"multiline\" ||\n selectedFieldConfigId === \"email\") {\n childComponent =\n <StringPropertyField widgetId={selectedFieldConfigId}\n disabled={disabled}\n showErrors={showErrors}/>;\n } else if (selectedFieldConfigId === \"url\") {\n childComponent =\n <UrlPropertyField disabled={disabled}\n showErrors={showErrors}/>;\n } else if (selectedFieldConfigId === \"markdown\") {\n childComponent =\n <MarkdownPropertyField disabled={disabled}\n showErrors={showErrors}/>;\n } else if (selectedFieldConfigId === \"select\" ||\n selectedFieldConfigId === \"number_select\") {\n childComponent = <EnumPropertyField\n multiselect={false}\n allowDataInference={allowDataInference}\n updateIds={!existing}\n disabled={disabled}\n getData={getData}\n showErrors={showErrors}/>;\n } else if (selectedFieldConfigId === \"multi_select\" ||\n selectedFieldConfigId === \"multi_number_select\") {\n childComponent = <EnumPropertyField\n multiselect={true}\n updateIds={!existing}\n disabled={disabled}\n allowDataInference={allowDataInference}\n getData={getData}\n showErrors={showErrors}/>;\n } else if (selectedFieldConfigId === \"file_upload\") {\n childComponent =\n <StoragePropertyField existing={existing}\n multiple={false}\n disabled={disabled}/>;\n } else if (selectedFieldConfigId === \"multi_file_upload\") {\n childComponent =\n <StoragePropertyField existing={existing}\n multiple={true}\n disabled={disabled}/>;\n } else if (selectedFieldConfigId === \"switch\") {\n childComponent = <BooleanPropertyField disabled={disabled}/>;\n } else if (selectedFieldConfigId === \"number_input\") {\n childComponent = <NumberPropertyField disabled={disabled}/>;\n } else if (selectedFieldConfigId === \"group\") {\n childComponent =\n <MapPropertyField disabled={disabled} getData={getData} allowDataInference={allowDataInference}\n collectionEditable={collectionEditable}\n propertyConfigs={propertyConfigs}/>;\n } else if (selectedFieldConfigId === \"block\") {\n childComponent =\n <BlockPropertyField disabled={disabled} getData={getData} allowDataInference={allowDataInference}\n collectionEditable={collectionEditable}\n propertyConfigs={propertyConfigs}/>;\n } else if (selectedFieldConfigId === \"reference\") {\n childComponent =\n <ReferencePropertyField showErrors={showErrors}\n existing={existing}\n multiple={false}\n disabled={disabled}/>;\n } else if (selectedFieldConfigId === \"date_time\") {\n childComponent = <DateTimePropertyField disabled={disabled}/>;\n } else if (selectedFieldConfigId === \"multi_references\") {\n childComponent =\n <ReferencePropertyField showErrors={showErrors}\n existing={existing}\n multiple={true}\n disabled={disabled}/>;\n } else if (selectedFieldConfigId === \"repeat\") {\n childComponent =\n <RepeatPropertyField showErrors={showErrors}\n existing={existing}\n getData={getData}\n allowDataInference={allowDataInference}\n disabled={disabled}\n collectionEditable={collectionEditable}\n propertyConfigs={propertyConfigs}/>;\n } else if (selectedFieldConfigId === \"key_value\") {\n childComponent =\n <KeyValuePropertyField disabled={disabled}/>;\n } else {\n childComponent = null;\n }\n\n return (\n <>\n {disabled && <InfoLabel mode={\"warn\"}>\n <Typography>This property can't be edited</Typography>\n <Typography variant={\"caption\"}>\n You may not have permission to\n edit it or it is defined in code with no <code>editable</code> flag\n </Typography>\n </InfoLabel>}\n\n <div className=\"flex mt-2 justify-between\">\n <div className={\"w-full flex flex-col gap-2\"}>\n <WidgetSelectView\n initialProperty={values}\n value={selectedFieldConfigId as PropertyConfigId}\n onValueChange={(value) => onWidgetSelectChanged(value as PropertyConfigId)}\n open={selectOpen}\n onOpenChange={(open, hasValue) => {\n if (!hasValue) {\n onDismiss?.();\n }\n setSelectOpen(open);\n }}\n disabled={disabled}\n showError={Boolean(selectedWidgetError)}\n existing={existing}\n propertyConfigs={propertyConfigs}\n inArray={inArray}/>\n\n {selectedWidgetError &&\n <Typography variant=\"caption\"\n className={\"ml-3.5\"}\n color={\"error\"}>Required</Typography>}\n\n {/*<Typography variant=\"caption\" className={\"ml-3.5\"}>Define your own custom properties and*/}\n {/* components</Typography>*/}\n\n </div>\n\n {onDelete && values?.id &&\n <IconButton\n variant={\"ghost\"}\n className=\"m-4\"\n disabled={disabled}\n onClick={() => setDeleteDialogOpen(true)}>\n <DeleteIcon/>\n </IconButton>}\n </div>\n\n <div className={\"grid grid-cols-12 gap-y-12 mt-8 mb-8\"}>\n {includeIdAndTitle &&\n <CommonPropertyFields showErrors={showErrors}\n disabledId={existing}\n isNewProperty={!existing}\n disabled={disabled}\n autoUpdateId={autoUpdateId}\n ref={nameFieldRef}/>}\n\n {childComponent}\n\n <div className={\"col-span-12\"}>\n <AdvancedPropertyValidation disabled={disabled}/>\n </div>\n </div>\n\n {onDelete &&\n <ConfirmationDialog open={deleteDialogOpen}\n onAccept={() => onDelete(values?.id, propertyNamespace)}\n onCancel={() => setDeleteDialogOpen(false)}\n title={<div>Delete this property?</div>}\n body={\n <div> This will <b>not delete any\n data</b>, only modify the\n collection.</div>\n }/>}\n\n </>\n );\n}\n\nconst idRegEx = /^[a-zA-Z_][a-zA-Z0-9_]*$/;\n\nfunction validateId(value?: string, existingPropertyKeys?: string[]) {\n\n let error;\n if (!value) {\n error = \"You must specify an id for the field\";\n }\n if (value && !value.match(idRegEx)) {\n error = \"The id can only contain letters, numbers and underscores (_), and not start with a number\";\n }\n if (value && existingPropertyKeys && existingPropertyKeys.includes(value)) {\n error = \"There is another field with this ID already\";\n }\n return error;\n}\n\nfunction validateName(value: string) {\n let error;\n if (!value) {\n error = \"You must specify a title for the field\";\n }\n return error;\n}\n\nconst WIDGET_TYPE_MAP: Record<PropertyConfigId, string> = {\n text_field: \"Text\",\n multiline: \"Text\",\n markdown: \"Text\",\n url: \"Text\",\n email: \"Text\",\n switch: \"Boolean\",\n select: \"Select\",\n multi_select: \"Select\",\n number_input: \"Number\",\n number_select: \"Select\",\n multi_number_select: \"Select\",\n file_upload: \"File\",\n multi_file_upload: \"File\",\n reference: \"Reference\",\n 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\"}>\n <div\n className={cls(\n \"flex flex-row items-center text-base min-h-[48px]\",\n )}>\n <div className={\"mr-8\"}>\n <PropertyConfigBadge propertyConfig={propertyConfig} disabled={shouldWarnChangingDataType}/>\n </div>\n <div>\n <div className={\"flex flex-row gap-2 items-center\"}>\n {shouldWarnChangingDataType && <Tooltip\n title={\"This widget uses a different data type than the initially selected widget. This can cause errors with existing data.\"}>\n <WarningIcon size=\"smallest\" className={\"w-4\"}/>\n </Tooltip>}\n <Typography\n color={shouldWarnChangingDataType ? \"secondary\" : undefined}>{propertyConfig.name}</Typography>\n </div>\n\n <Typography variant={\"caption\"}\n color={\"secondary\"}\n className={\"max-w-sm\"}>\n {propertyConfig.description}\n </Typography>\n\n </div>\n </div>\n </Card>\n}\n","export function camelCase(str: string): string {\n if (!str) return \"\";\n if (str.length === 1) return str.toLowerCase();\n\n // Split by hyphens, underscores, or spaces and filter out empty strings\n const parts = str.split(/[-_ ]+/).filter(Boolean);\n\n if (parts.length === 0) return \"\";\n\n // Start with first part in lowercase\n return parts[0].toLowerCase() +\n // Transform remaining parts to have first letter uppercase\n parts.slice(1)\n .map(part => part.charAt(0).toUpperCase() + part.substring(1).toLowerCase())\n .join('');\n}\n","import { EntityCollection, isEmptyObject, useSnackbarController } from \"@firecms/core\";\nimport { Button, ContentCopyIcon, Dialog, DialogActions, DialogContent, DialogTitle, Typography, } from \"@firecms/ui\";\nimport React from \"react\";\nimport JSON5 from \"json5\";\nimport { Highlight, themes } from \"prism-react-renderer\"\nimport { camelCase } from \"./utils/strings\";\nimport { clone } from \"@firecms/formex\";\n\nexport function GetCodeDialog({\n collection,\n onOpenChange,\n open\n }: { onOpenChange: (open: boolean) => void, collection: any, open: any }) {\n\n const snackbarController = useSnackbarController();\n\n const code = collection\n ? \"import { EntityCollection } from \\\"@firecms/core\\\";\\n\\nconst \" + (collection?.name ? camelCase(collection.name) : \"my\") + \"Collection:EntityCollection = \" + JSON5.stringify(collectionToCode({ ...collection }), null, \"\\t\")\n : \"No collection selected\";\n return <Dialog open={open}\n onOpenChange={onOpenChange}\n maxWidth={\"4xl\"}>\n <DialogTitle variant={\"h6\"}>Code for {collection.name}</DialogTitle>\n <DialogContent>\n\n <Typography variant={\"body2\"} className={\"my-4 mb-8\"}>\n If you want to customise the collection in code, you can add this collection code to your CMS\n app configuration.\n More info in the <a\n rel=\"noopener noreferrer\"\n href={\"https://firecms.co/docs/cloud/quickstart\"}>docs</a>.\n </Typography>\n <Highlight\n theme={themes.vsDark}\n code={code}\n language=\"typescript\"\n >\n {({\n className,\n style,\n tokens,\n getLineProps,\n getTokenProps\n }) => (\n <pre style={style} className={\"p-4 rounded text-sm\"}>\n {tokens.map((line, i) => (\n <div key={i} {...getLineProps({ line })}>\n {line.map((token, key) => (\n <span key={key} {...getTokenProps({ token })} />\n ))}\n </div>\n ))}\n </pre>\n )}\n </Highlight>\n\n </DialogContent>\n <DialogActions>\n <Button\n variant={\"text\"}\n size={\"small\"}\n 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, ...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 Paper,\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 // @ts-ignore\n doCollectionInference(values)\n .then((newCollection) => {\n\n if (newCollection)\n makePropertiesEditable(newCollection.properties as Properties);\n\n if (!newCollection) {\n snackbarController.open({\n type: \"error\",\n message: \"Could not infer properties from data\"\n });\n return;\n }\n // find properties in the new collection, not present in the current one\n const newPropertyKeys = (newCollection.properties ? Object.keys(newCollection.properties) : [])\n .filter((propertyKey) => !values.properties[propertyKey]);\n if (newPropertyKeys.length === 0) {\n snackbarController.open({\n type: \"info\",\n message: \"No new properties found in existing data\"\n });\n return;\n }\n // add them to the current collection\n const updatedProperties = {\n ...newPropertyKeys.reduce((acc, propertyKey) => {\n acc[propertyKey] = (newCollection.properties ?? {})[propertyKey];\n return acc;\n }, {} as {\n [key: string]: PropertyOrBuilder\n }),\n ...values.properties\n };\n const updatedPropertiesOrder = [\n ...newPropertyKeys,\n ...(values.propertiesOrder ?? [])\n ];\n setFieldValue(\"properties\", updatedProperties, false);\n\n updatePropertiesOrder(updatedPropertiesOrder);\n\n setInferredPropertyKeys(newPropertyKeys);\n })\n .finally(() => {\n setInferringProperties(false);\n })\n }\n : undefined;\n\n const getCurrentPropertiesOrder = (namespace?: string) => {\n if (!namespace) return currentPropertiesOrderRef.current[\"\"] ?? getIn(values, namespaceToPropertiesOrderPath());\n return currentPropertiesOrderRef.current[namespace] ?? getIn(values, namespaceToPropertiesOrderPath(namespace));\n };\n\n const updatePropertiesOrder = (newPropertiesOrder: string[], namespace?: string) => {\n const propertiesOrderPath = namespaceToPropertiesOrderPath(namespace);\n\n setFieldValue(propertiesOrderPath, newPropertiesOrder, false);\n currentPropertiesOrderRef.current[namespace ?? \"\"] = newPropertiesOrder;\n\n };\n\n const deleteProperty = (propertyKey?: string, namespace?: string) => {\n const fullId = propertyKey ? getFullId(propertyKey, namespace) : undefined;\n if (!fullId)\n throw Error(\"collection editor miss config\");\n\n setFieldValue(idToPropertiesPath(fullId), undefined, false);\n\n const currentPropertiesOrder = getCurrentPropertiesOrder(namespace);\n if (currentPropertiesOrder) {\n const newPropertiesOrder = currentPropertiesOrder.filter((p) => p !== propertyKey);\n updatePropertiesOrder(newPropertiesOrder, namespace);\n }\n\n setNewPropertyDialogOpen(false);\n\n setSelectedPropertyIndex(undefined);\n setSelectedPropertyKey(undefined);\n setSelectedPropertyNamespace(undefined);\n };\n\n const onPropertyMove = (propertiesOrder: string[], namespace?: string) => {\n setFieldValue(namespaceToPropertiesOrderPath(namespace), propertiesOrder, false);\n };\n\n const onPropertyCreated = ({\n id,\n property\n }: {\n id?: string,\n property: Property\n }) => {\n if (!id) {\n throw Error(\"Need to include an ID when creating a new property\")\n }\n setFieldValue(\"properties\", {\n ...(values.properties ?? {}),\n [id]: property\n }, false);\n\n const newPropertiesOrder = [...(values.propertiesOrder ?? Object.keys(values.properties)), id];\n updatePropertiesOrder(newPropertiesOrder);\n\n setNewPropertyDialogOpen(false);\n if (largeLayout) {\n setSelectedPropertyIndex(newPropertiesOrder.indexOf(id));\n setSelectedPropertyKey(id);\n }\n setSelectedPropertyNamespace(undefined);\n };\n\n const onPropertyChanged = ({\n id,\n property,\n previousId,\n namespace\n }: OnPropertyChangedParams) => {\n\n const fullId = id ? getFullId(id, namespace) : undefined;\n const propertyPath = fullId ? idToPropertiesPath(fullId) : undefined;\n\n // If the id has changed we need to a little cleanup\n if (previousId && previousId !== id) {\n\n const previousFullId = getFullId(previousId, namespace);\n const previousPropertyPath = idToPropertiesPath(previousFullId);\n\n const currentPropertiesOrder = getCurrentPropertiesOrder(namespace);\n\n // replace previousId with id in propertiesOrder\n const newPropertiesOrder = currentPropertiesOrder\n .map((p) => p === previousId ? id : p)\n .filter((p) => p !== undefined) as string[];\n\n updatePropertiesOrder(newPropertiesOrder, namespace);\n\n if (id) {\n setSelectedPropertyIndex(newPropertiesOrder.indexOf(id));\n setSelectedPropertyKey(id);\n }\n setFieldValue(previousPropertyPath, undefined, false);\n setFieldTouched(previousPropertyPath, false, false);\n }\n\n console.debug(\"onPropertyChanged\", {\n id,\n property,\n previousId,\n namespace,\n propertyPath\n })\n\n if (propertyPath) {\n setFieldValue(propertyPath, property, false);\n setFieldTouched(propertyPath, true, false);\n }\n\n };\n\n const onPropertyErrorInternal = (id: string, namespace?: string, error?: Record<string, any>) => {\n const propertyPath = id ? getFullId(id, namespace) : undefined;\n console.debug(\"onPropertyErrorInternal\", {\n id,\n namespace,\n error,\n propertyPath\n });\n if (propertyPath) {\n const hasError = error && Object.keys(error).length > 0;\n onPropertyError(id, namespace, hasError ? error : undefined);\n setFieldError(idToPropertiesPath(propertyPath), hasError ? \"Property error\" : undefined);\n }\n }\n\n const closePropertyDialog = () => {\n setSelectedPropertyIndex(undefined);\n setSelectedPropertyKey(undefined);\n };\n\n const initialErrors = selectedPropertyKey && propertyErrorsRef?.current?.properties ? propertyErrorsRef.current.properties[selectedPropertyKey] : undefined;\n\n const emptyCollection = values?.propertiesOrder === undefined || values.propertiesOrder.length === 0;\n\n const usedPropertiesOrder = (values.propertiesOrder\n ? values.propertiesOrder\n : Object.keys(values.properties)) as string[];\n\n const owner = useMemo(() => values.ownerId && getUser ? getUser(values.ownerId) : null, [getUser, values.ownerId]);\n\n const onPropertyClick = (propertyKey: string, namespace?: string) => {\n console.debug(\"CollectionEditor: onPropertyClick\", {\n propertyKey,\n namespace\n });\n setSelectedPropertyIndex(usedPropertiesOrder.indexOf(propertyKey));\n setSelectedPropertyKey(propertyKey);\n setSelectedPropertyNamespace(namespace);\n };\n\n const body = (\n <div className={\"grid grid-cols-12 gap-2 h-full bg-surface-50 dark:bg-surface-900\"}>\n <div className={cls(\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 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 <Paper\n className=\"sticky top-8 p-4 min-h-full border border-transparent 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 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 </Paper>\n </div>}\n\n {asDialog && <PropertyFormDialog\n inArray={false}\n open={selectedPropertyIndex !== undefined}\n key={`edit_view_${selectedPropertyIndex}`}\n autoUpdateId={!selectedProperty}\n allowDataInference={!isNewCollection}\n existingProperty={true}\n autoOpenTypeSelect={false}\n propertyKey={selectedPropertyKey}\n propertyNamespace={selectedPropertyNamespace}\n property={selectedProperty}\n onPropertyChanged={onPropertyChanged}\n onDelete={deleteProperty}\n onError={onPropertyErrorInternal}\n forceShowErrors={showErrors}\n initialErrors={initialErrors}\n getData={getData}\n propertyConfigs={propertyConfigs}\n collectionEditable={collectionEditable}\n onCancel={closePropertyDialog}\n onOkClicked={asDialog\n ? closePropertyDialog\n : undefined\n }/>}\n\n </div>);\n\n return (<>\n\n {body}\n\n {/* This is the dialog used for new properties*/}\n <PropertyFormDialog\n inArray={false}\n existingProperty={false}\n autoOpenTypeSelect={true}\n autoUpdateId={true}\n forceShowErrors={showErrors}\n open={newPropertyDialogOpen}\n onCancel={() => setNewPropertyDialogOpen(false)}\n onPropertyChanged={onPropertyCreated}\n getData={getData}\n allowDataInference={!isNewCollection}\n propertyConfigs={propertyConfigs}\n collectionEditable={collectionEditable}\n existingPropertyKeys={values.propertiesOrder as string[]}/>\n\n <ErrorBoundary>\n <GetCodeDialog\n collection={values}\n open={codeDialogOpen}\n onOpenChange={setCodeDialogOpen}/>\n </ErrorBoundary>\n </>\n );\n}\n","import React from \"react\";\nimport { Button, Dialog, DialogActions, DialogContent, DialogTitle, Typography } from \"@firecms/ui\";\n\nexport interface UnsavedChangesDialogProps {\n open: boolean;\n body?: React.ReactNode;\n title?: string;\n handleOk: () => void;\n handleCancel: () => void;\n}\n\nexport function UnsavedChangesDialog({\n open,\n handleOk,\n handleCancel,\n body,\n title\n }: UnsavedChangesDialogProps) {\n\n return (\n <Dialog\n open={open}\n onOpenChange={(open) => open ? handleCancel() : handleOk()}\n aria-labelledby=\"alert-dialog-title\"\n aria-describedby=\"alert-dialog-description\"\n >\n\n <DialogTitle>{title ?? \"Unsaved changes\"}</DialogTitle>\n <DialogContent>\n {body && <Typography>\n {body}\n </Typography>}\n <Typography>\n Are you sure?\n </Typography>\n\n </DialogContent>\n\n <DialogActions>\n <Button variant=\"text\" onClick={handleCancel} autoFocus> Cancel </Button>\n <Button 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\n </Typography>\n }\n </DialogContent>\n <DialogActions>\n <Button variant={\"outlined\"} onClick={() => onClose()}>Cancel</Button>\n </DialogActions>\n </Dialog>\n}\n","import React from \"react\";\nimport {\n ConfirmationDialog,\n EntityCollection,\n EntityCustomView,\n resolveEntityView,\n useCustomizationController,\n User\n} from \"@firecms/core\";\nimport {\n AddIcon,\n Alert,\n Button,\n Container,\n DeleteIcon,\n IconButton,\n Paper,\n Table,\n TableBody,\n TableCell,\n TableRow,\n Tooltip,\n Typography,\n} from \"@firecms/ui\";\nimport { CollectionEditorDialog } from \"./CollectionEditorDialog\";\nimport { CollectionsConfigController } from \"../../types/config_controller\";\nimport { PersistedCollection } from \"../../types/persisted_collection\";\nimport { CollectionInference } from \"../../types/collection_inference\";\nimport { EntityCustomViewsSelectDialog } from \"./EntityCustomViewsSelectDialog\";\nimport { useFormex } from \"@firecms/formex\";\n\nexport function SubcollectionsEditTab({\n collection,\n parentCollection,\n configController,\n collectionInference,\n getUser,\n parentCollectionIds\n }: {\n collection: PersistedCollection,\n parentCollection?: EntityCollection,\n configController: CollectionsConfigController;\n collectionInference?: CollectionInference;\n getUser?: (uid: string) => User | null;\n parentCollectionIds?: string[];\n}) {\n\n const { entityViews: contextEntityViews } = useCustomizationController();\n\n const [subcollectionToDelete, setSubcollectionToDelete] = React.useState<string | undefined>();\n const [addEntityViewDialogOpen, setAddEntityViewDialogOpen] = React.useState<boolean>(false);\n const [viewToDelete, setViewToDelete] = React.useState<string | undefined>();\n\n const [currentDialog, setCurrentDialog] = React.useState<{\n isNewCollection: boolean,\n editedCollectionId?: string,\n }>();\n\n const {\n values,\n setFieldValue,\n } = useFormex<EntityCollection>();\n\n const [subcollections, setSubcollections] = React.useState<EntityCollection[]>(collection.subcollections ?? []);\n const resolvedEntityViews = values.entityViews?.filter(e => typeof e === \"string\")\n .map(e => resolveEntityView(e, contextEntityViews))\n .filter(Boolean) as EntityCustomView[] ?? [];\n const hardCodedEntityViews = collection.entityViews?.filter(e => typeof e !== \"string\") as EntityCustomView[] ?? [];\n const totalEntityViews = resolvedEntityViews.length + hardCodedEntityViews.length;\n\n return (\n <div className={\"overflow-auto my-auto\"}>\n <Container maxWidth={\"2xl\"} className={\"flex flex-col gap-4 p-8 m-auto\"}>\n <div className={\"flex flex-col gap-16\"}>\n\n <div className={\"flex-grow flex flex-col gap-4 items-start\"}>\n <Typography variant={\"h5\"}>\n Subcollections of {values.name}\n </Typography>\n\n <Paper className={\"flex flex-col gap-4 p-2 w-full\"}>\n {subcollections && subcollections.length > 0 && <Table>\n <TableBody>\n {subcollections.map((subcollection) => (\n <TableRow key={subcollection.path}\n onClick={() => setCurrentDialog({\n isNewCollection: false,\n editedCollectionId: subcollection.id\n })}>\n <TableCell\n align=\"left\">\n <Typography variant={\"subtitle2\"} className={\"flex-grow\"}>\n {subcollection.name}\n </Typography>\n </TableCell>\n <TableCell\n align=\"right\">\n <Tooltip title={\"Remove\"}\n asChild={true}>\n <IconButton size=\"small\"\n onClick={(e) => {\n e.preventDefault();\n e.stopPropagation();\n setSubcollectionToDelete(subcollection.id);\n }}\n color=\"inherit\">\n <DeleteIcon size={\"small\"}/>\n </IconButton>\n </Tooltip>\n </TableCell>\n </TableRow>\n ))}\n </TableBody>\n </Table>}\n\n <Button\n onClick={() => {\n setCurrentDialog({\n isNewCollection: true\n });\n }}\n variant={\"text\"}\n startIcon={<AddIcon/>}>\n Add subcollection\n </Button>\n\n </Paper>\n\n </div>\n\n <div className={\"flex-grow flex flex-col gap-4 items-start\"}>\n <Typography variant={\"h5\"}>\n Custom views\n </Typography>\n\n {totalEntityViews === 0 &&\n <Alert action={<Button variant=\"text\"\n size={\"small\"}\n href={\"https://firecms.co/docs/cloud/quickstart\"}\n component={\"a\"}\n rel=\"noopener noreferrer\"\n target=\"_blank\">More info</Button>}>\n Define your own custom views by uploading them with the CLI.\n </Alert>\n }\n\n {<>\n <Paper className={\"flex flex-col gap-4 p-2 w-full\"}>\n <Table>\n <TableBody>\n {resolvedEntityViews.map((view) => (\n <TableRow key={view.key}>\n <TableCell\n align=\"left\">\n <Typography variant={\"subtitle2\"} className={\"flex-grow\"}>\n {view.name}\n </Typography>\n </TableCell>\n <TableCell\n align=\"right\">\n <Tooltip title={\"Remove\"}\n asChild={true}>\n <IconButton size=\"small\"\n onClick={(e) => {\n e.preventDefault();\n e.stopPropagation();\n setViewToDelete(view.key);\n }}\n color=\"inherit\">\n <DeleteIcon size={\"small\"}/>\n </IconButton>\n </Tooltip>\n </TableCell>\n </TableRow>\n ))}\n {hardCodedEntityViews.map((view) => (\n <TableRow key={view.key}>\n <TableCell\n align=\"left\">\n <Typography variant={\"subtitle2\"} className={\"flex-grow\"}>\n {view.name}\n </Typography>\n <Typography variant={\"caption\"} className={\"flex-grow\"}>\n This view is defined in code with\n key <code>{view.key}</code>\n </Typography>\n </TableCell>\n </TableRow>\n ))}\n </TableBody>\n </Table>\n\n <Button\n onClick={() => {\n setAddEntityViewDialogOpen(true);\n }}\n variant={\"text\"}\n startIcon={<AddIcon/>}>\n Add custom entity view\n </Button>\n </Paper>\n\n </>}\n\n\n </div>\n\n </div>\n </Container>\n\n <div style={{ height: \"52px\" }}/>\n\n {subcollectionToDelete &&\n <ConfirmationDialog open={Boolean(subcollectionToDelete)}\n onAccept={() => {\n const props = {\n id: subcollectionToDelete,\n parentCollectionIds: [...(parentCollectionIds ?? []), collection.id]\n };\n console.debug(\"Deleting subcollection\", props)\n configController.deleteCollection(props).then(() => {\n setSubcollectionToDelete(undefined);\n setSubcollections(subcollections?.filter(e => e.id !== subcollectionToDelete))\n });\n }}\n onCancel={() => setSubcollectionToDelete(undefined)}\n title={<>Delete this subcollection?</>}\n body={<> This will <b>not\n delete any data</b>, only\n the collection in the CMS</>}/>}\n {viewToDelete &&\n <ConfirmationDialog open={Boolean(viewToDelete)}\n onAccept={() => {\n setFieldValue(\"entityViews\", values.entityViews?.filter(e => e !== viewToDelete));\n setViewToDelete(undefined);\n }}\n onCancel={() => setViewToDelete(undefined)}\n title={<>Remove this view?</>}\n body={<>This will <b>not\n delete any data</b>, only\n the view in the CMS</>}/>}\n\n <CollectionEditorDialog\n open={Boolean(currentDialog)}\n configController={configController}\n parentCollection={collection}\n collectionInference={collectionInference}\n parentCollectionIds={[...parentCollectionIds ?? [], values.id]}\n isNewCollection={false}\n {...currentDialog}\n getUser={getUser}\n handleClose={(updatedCollection) => {\n if (updatedCollection && !subcollections.map(e => e.id).includes(updatedCollection.id)) {\n setSubcollections([...subcollections, updatedCollection]);\n }\n setCurrentDialog(undefined);\n }}/>\n\n <EntityCustomViewsSelectDialog\n open={addEntityViewDialogOpen}\n onClose={(selectedViewKey) => {\n if (selectedViewKey) {\n setFieldValue(\"entityViews\", [...(values.entityViews ?? []), selectedViewKey]);\n }\n setAddEntityViewDialogOpen(false);\n }}/>\n </div>\n );\n}\n","import { EntityCollection, makePropertiesEditable } from \"@firecms/core\";\n\nexport const productsCollectionTemplate: EntityCollection = {\n id: \"products\",\n path: \"products\",\n name: \"Products\",\n singularName: \"Product\",\n icon: \"shopping_cart\",\n description: \"List of the products currently sold in your shop\",\n properties: makePropertiesEditable({\n name: {\n dataType: \"string\",\n name: \"Name\",\n description: \"Name of this product\",\n validation: {\n required: true\n }\n },\n brand: {\n dataType: \"string\",\n name: \"Brand\",\n validation: {\n required: true\n }\n },\n description: {\n dataType: \"string\",\n name: \"Description\",\n description: \"Description of this product, supports markdown\",\n markdown: true\n },\n main_image: {\n dataType: \"string\",\n name: \"Image\",\n storage: {\n storagePath: \"images\",\n acceptedFiles: [\"image/*\"],\n },\n description: \"Upload field for images\"\n },\n available: {\n dataType: \"boolean\",\n name: \"Available\",\n columnWidth: 100,\n description: \"Is this product available in the website\"\n },\n price: {\n dataType: \"number\",\n name: \"Price\",\n validation: {\n requiredMessage: \"You must set a positive price\",\n min: 0\n }\n },\n images: {\n dataType: \"array\",\n name: \"Images\",\n hideFromCollection: true,\n of: {\n dataType: \"string\",\n storage: {\n storagePath: \"images\",\n acceptedFiles: [\"image/*\"]\n }\n }\n },\n related_products: {\n dataType: \"array\",\n name: \"Related products\",\n description: \"Products related to this one\",\n of: {\n dataType: \"reference\",\n path: \"products\"\n }\n },\n metadata: {\n name: \"Metadata\",\n description: \"This is an example of a map property\",\n dataType: \"map\",\n keyValue: true\n },\n added_on: {\n dataType: \"date\",\n name: \"Added on\",\n autoValue: \"on_create\"\n }\n })\n};\n","import { EntityCollection, makePropertiesEditable } from \"@firecms/core\";\n\nexport const blogCollectionTemplate:EntityCollection = {\n id: \"blog\",\n path: \"blog\",\n name: \"Blog\",\n singularName: \"Blog entry\",\n icon: \"article\",\n description: \"A collection of blog entries\",\n defaultSize: \"l\",\n properties: makePropertiesEditable({\n name: {\n name: \"Name\",\n validation: { required: true },\n dataType: \"string\"\n },\n header_image: {\n name: \"Header image\",\n dataType: \"string\",\n storage: {\n storagePath: \"images\",\n acceptedFiles: [\"image/*\"],\n metadata: {\n cacheControl: \"max-age=1000000\"\n }\n }\n },\n content: {\n name: \"Content\",\n description: \"Content blocks for the blog entry\",\n validation: { required: true },\n dataType: \"array\",\n oneOf: {\n typeField: \"type\",\n valueField: \"value\",\n properties: {\n text: {\n dataType: \"string\",\n name: \"Text\",\n markdown: true\n },\n quote: {\n dataType: \"string\",\n name: \"Quote\",\n multiline: true\n },\n images: {\n name: \"Images\",\n dataType: \"array\",\n of: {\n dataType: \"string\",\n storage: {\n storagePath: \"images\",\n acceptedFiles: [\"image/*\"],\n metadata: {\n cacheControl: \"max-age=1000000\"\n }\n }\n },\n description: \"This fields allows uploading multiple images at once and reordering\"\n },\n products: {\n name: \"Products\",\n dataType: \"array\",\n of: {\n dataType: \"reference\",\n path: \"products\",\n previewProperties: [\"name\", \"main_image\"]\n }\n }\n },\n propertiesOrder: [\"text\", \"quote\", \"images\", \"products\"]\n }\n },\n created_on: {\n name: \"Created on\",\n dataType: \"date\",\n autoValue: \"on_create\"\n },\n status: {\n name: \"Status\",\n validation: { required: true },\n dataType: \"string\",\n enumValues: {\n published: {\n id: \"published\",\n label: \"Published\",\n },\n draft: \"Draft\"\n },\n defaultValue: \"draft\"\n },\n publish_date: {\n name: \"Publish date\",\n dataType: \"date\",\n clearable: true\n },\n reviewed: {\n name: \"Reviewed\",\n dataType: \"boolean\"\n },\n tags: {\n name: \"Tags\",\n description: \"Example of generic array\",\n dataType: \"array\",\n of: {\n dataType: \"string\",\n previewAsTag: true\n }\n }\n }),\n initialFilter: {\n status: [\"==\", \"published\"]\n }\n};\n","import { EntityCollection, makePropertiesEditable } from \"@firecms/core\";\n\nexport const usersCollectionTemplate: EntityCollection = {\n id: \"users\",\n path: \"users\",\n name: \"Users\",\n singularName: \"User\",\n description: \"Registered users in the app/web\",\n icon: \"person\",\n properties: makePropertiesEditable({\n displayName: {\n name: \"Display name\",\n dataType: \"string\"\n },\n email: {\n name: \"Email\",\n dataType: \"string\",\n email: true\n },\n emailVerified: {\n name: \"Email verified\",\n dataType: \"boolean\"\n },\n phone: {\n name: \"Phone\",\n dataType: \"string\"\n },\n favourite_products: {\n name: \"Favourite products\",\n dataType: \"array\",\n of: {\n dataType: \"reference\",\n path: \"products\"\n }\n },\n photoURL: {\n name: \"Photo URL\",\n dataType: \"string\",\n url: \"image\"\n }\n }),\n};\n","import { EntityCollection } from \"@firecms/core\";\n\nexport const pagesCollectionTemplate: EntityCollection = {\n id: \"pages\",\n path: \"pages\",\n name: \"Pages\",\n singularName: \"Page\",\n icon: \"insert_drive_file\",\n description: \"List of website pages that can be edited here\",\n properties: {\n title: {\n dataType: \"string\",\n name: \"Page Title\",\n validation: { required: true }\n },\n slug: {\n dataType: \"string\",\n name: \"URL Slug\",\n validation: {\n required: true,\n unique: true,\n matches: \"^[a-z0-9]+(?:-[a-z0-9]+)*$\",\n matchesMessage: \"Must be lowercase, alphanumeric, and hyphenated\"\n }\n },\n hero_section: {\n dataType: \"map\",\n name: \"Hero Section\",\n properties: {\n headline: {\n dataType: \"string\",\n name: \"Headline\",\n validation: { required: true }\n },\n subhead: {\n dataType: \"string\",\n name: \"Subheadline\"\n },\n background_image: {\n dataType: \"string\",\n name: \"Background Image\",\n storage: {\n storagePath: \"page_hero/images\",\n acceptedFiles: [\"image/*\"],\n }\n },\n call_to_action: {\n dataType: \"string\",\n name: \"Call to Action\"\n },\n call_to_action_link: {\n dataType: \"string\",\n name: \"CTA Link\",\n url: true\n }\n }\n },\n content: {\n dataType: \"array\",\n name: \"Content\",\n oneOf: {\n properties: {\n section: {\n dataType: \"map\",\n name: \"Section\",\n properties: {\n title: {\n dataType: \"string\",\n name: \"Section Title\",\n validation: { required: true }\n },\n content: {\n dataType: \"string\",\n name: \"Section Content\",\n markdown: true\n },\n image: {\n dataType: \"string\",\n name: \"Section Image\",\n storage: {\n storagePath: \"page_sections/images\",\n acceptedFiles: [\"image/*\"]\n }\n },\n link: {\n dataType: \"string\",\n name: \"Section Link\",\n url: true\n }\n }\n },\n image: {\n dataType: \"string\",\n name: \"Image\",\n storage: {\n storagePath: \"page_sections/images\",\n acceptedFiles: [\"image/*\"]\n }\n },\n slider: {\n dataType: \"array\",\n name: \"Slider\",\n of: {\n dataType: \"map\",\n properties: {\n title: {\n dataType: \"string\",\n name: \"Title\",\n validation: { required: true }\n },\n image: {\n dataType: \"string\",\n storage: {\n storagePath: \"page_sections/images\",\n acceptedFiles: [\"image/*\"]\n }\n }\n }\n }\n },\n }\n }\n },\n sidebar: {\n dataType: \"map\",\n name: \"Sidebar\",\n properties: {\n title: {\n dataType: \"string\",\n name: \"Sidebar Title\",\n validation: { required: false }\n },\n content: {\n dataType: \"string\",\n name: \"Sidebar Content\",\n markdown: true\n }\n }\n },\n seo_metadata: {\n dataType: \"map\",\n name: \"SEO Metadata\",\n properties: {\n meta_title: {\n dataType: \"string\",\n name: \"Meta Title\"\n },\n meta_description: {\n dataType: \"string\",\n name: \"Meta Description\"\n },\n focus_keywords: {\n dataType: \"array\",\n name: \"Focus Keywords\",\n of: {\n dataType: \"string\"\n }\n }\n }\n },\n footer_override: {\n dataType: \"string\",\n name: \"Footer Override\",\n markdown: true\n },\n publish_date: {\n dataType: \"date\",\n name: \"Publish Date\",\n validation: { required: true }\n },\n last_updated: {\n dataType: \"date\",\n name: \"Last Updated\",\n autoValue: \"on_update\"\n },\n is_published: {\n dataType: \"boolean\",\n name: \"Is Published\",\n columnWidth: 100,\n description: \"Should this page be live on the site?\"\n }\n }\n};\n","import React, { useEffect, useState } from \"react\";\nimport { EntityCollection, unslugify, } from \"@firecms/core\";\nimport { Button, Card, Chip, CircularProgress, cls, Container, Icon, Tooltip, Typography, } from \"@firecms/ui\";\n\nimport { productsCollectionTemplate } from \"./templates/products_template\";\nimport { blogCollectionTemplate } from \"./templates/blog_template\";\nimport { usersCollectionTemplate } from \"./templates/users_template\";\nimport { ImportFileUpload } from \"@firecms/data_import_export\";\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 // handleChange,\n // touched,\n // errors,\n // setFieldTouched,\n // isSubmitting,\n // submitCount\n // } = useFormex<EntityCollection>();\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 <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\n {!loadingPathSuggestions && (filteredPathSuggestions ?? [])?.length === 0 &&\n <Typography variant={\"caption\"}>\n No suggestions\n </Typography>\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\"} iconKey={productsCollectionTemplate.icon!}/>}\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!}/>}\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!}/>}\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!}/>}\n onClick={() => {\n setValues(pagesCollectionTemplate);\n onContinue();\n }}/>\n </div>\n\n </div>\n\n {!parentCollection && <div>\n\n <Typography variant={\"caption\"}\n color={\"secondary\"}\n className={\"mb-2\"}>\n ● Create a collection from a file (csv, json, xls, xslx...)\n </Typography>\n\n <ImportFileUpload onDataAdded={(data, propertiesOrder) => onContinue(data, propertiesOrder)}/>\n\n </div>}\n\n <div>\n\n <Button variant={\"text\"} onClick={() => onContinue()} className={\"my-2\"}>\n Continue from scratch\n </Button>\n </div>\n\n {/*<div style={{ height: \"52px\" }}/>*/}\n\n </Container>\n </div>\n );\n}\n\nexport function TemplateButton({\n title,\n subtitle,\n icon,\n onClick\n }: {\n title: string,\n icon: React.ReactNode,\n subtitle: string,\n onClick?: () => void\n}) {\n\n return (\n <Tooltip title={subtitle}\n asChild={true}>\n <Card\n onClick={onClick}\n className={cls(\n \"my-2 rounded-md border mx-0 p-6 px-4 focus:outline-none transition ease-in-out duration-150 flex flex-row gap-4 items-center\",\n \"text-surface-700 dark:text-surface-accent-300\",\n \"hover:border-primary-dark hover:text-primary-dark dark:hover:text-primary focus:ring-primary hover:ring-1 hover:ring-primary\",\n \"border-surface-400 dark:border-surface-600 \"\n )}\n >\n {icon}\n <div className={\"flex flex-col items-start\"}>\n\n <Typography variant={\"subtitle1\"}>\n {title}\n </Typography>\n {/*<Typography>*/}\n {/* {subtitle}*/}\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_export\";\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_export\";\nimport {\n CircularProgressCenter,\n EntityCollectionTable,\n Properties,\n useAuthController,\n useSelectionController\n} from \"@firecms/core\";\nimport { useEffect, useState } from \"react\";\nimport { Typography } from \"@firecms/ui\";\n\nexport function CollectionEditorImportDataPreview({\n importConfig,\n properties,\n propertiesOrder\n }: {\n importConfig: ImportConfig,\n properties: Properties,\n propertiesOrder: string[]\n}) {\n\n const authController = useAuthController();\n const [loading, setLoading] = useState<boolean>(false);\n\n async function loadEntities() {\n // const propertiesMapping = getPropertiesMapping(importConfig.originProperties, properties, importConfig.headersMapping);\n const mappedData = importConfig.importData.map(d => convertDataToEntity(authController, d, importConfig.idColumn, importConfig.headersMapping, properties, \"TEMP_PATH\", importConfig.defaultValues));\n importConfig.setEntities(mappedData);\n }\n\n useEffect(() => {\n loadEntities().finally(() => setLoading(false));\n }, []);\n\n const selectionController = useSelectionController();\n if (loading)\n return <CircularProgressCenter/>\n\n return <EntityCollectionTable\n title={<div>\n <Typography variant={\"subtitle2\"}>Imported data preview</Typography>\n <Typography variant={\"caption\"}>Entities with the same id will be overwritten</Typography>\n </div>}\n tableController={{\n data: importConfig.entities,\n dataLoading: false,\n noMoreToLoad: false\n }}\n endAdornment={<div className={\"h-12\"}/>}\n filterable={false}\n sortable={false}\n selectionController={selectionController}\n displayedColumnIds={propertiesOrder.map(p => ({\n key: p,\n disabled: false\n }))}\n openEntityMode={\"side_panel\"}\n properties={properties}\n enablePopupIcon={false}/>\n\n}\n","import { Properties, slugify } from \"@firecms/core\";\nimport { ImportConfig } from \"@firecms/data_import_export\";\n\nexport function cleanPropertiesFromImport(properties: Properties, parentSlug = \"\"): {\n headersMapping: ImportConfig[\"headersMapping\"],\n properties: Properties,\n idColumn?: ImportConfig[\"idColumn\"],\n} {\n\n const result = Object.keys(properties).reduce((acc, key) => {\n const property = properties[key];\n const slug = slugify(key);\n const fullSlug = parentSlug ? `${parentSlug}.${slug}` : slug;\n\n if (property.dataType === \"map\" && property.properties) {\n const slugifiedResult = cleanPropertiesFromImport(property.properties as Properties, fullSlug);\n return {\n headersMapping: { ...acc.headersMapping, [key]: fullSlug },\n properties: {\n ...acc.properties,\n [slug]: {\n ...property,\n properties: slugifiedResult.properties,\n propertiesOrder: Object.keys(slugifiedResult.properties)\n }\n }\n }\n }\n\n const updatedProperties = {\n ...acc.properties,\n [slug]: property\n } as Properties;\n\n const headersMapping = { ...acc.headersMapping, [key]: fullSlug } as Record<string, string>;\n\n return {\n headersMapping,\n properties: updatedProperties,\n }\n }, { headersMapping: {}, properties: {} });\n\n const firstKey = Object.keys(result.headersMapping)?.[0];\n let idColumn: string | undefined;\n if (firstKey?.includes(\"id\") || firstKey?.includes(\"key\")) {\n idColumn = firstKey;\n }\n\n return {\n ...result,\n idColumn\n };\n}\n","import * as React from \"react\";\nimport { useEffect, useRef, useState } from \"react\";\nimport {\n CircularProgressCenter,\n ConfirmationDialog,\n Entity,\n EntityCollection,\n ErrorView,\n isPropertyBuilder,\n MapProperty,\n mergeDeep,\n Properties,\n PropertiesOrBuilders,\n Property,\n PropertyConfig,\n PropertyOrBuilder,\n randomString,\n removeInitialAndTrailingSlashes,\n removeUndefined,\n TopNavigationResult,\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_export\";\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\";\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\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 }: TopNavigationResult = 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 = (collection: PersistedCollection<any>) => {\n if (!collectionInference) return undefined;\n return collectionInference?.(collection.path, collection.collectionGroup ?? false, parentPaths ?? []);\n };\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) => {\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 </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 === \"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 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 onClick={() => {\n setCurrentView(\"import_data_mapping\");\n }}>\n <ArrowBackIcon/>\n Back\n </Button>}\n\n {isNewCollection && includeTemplates && currentView === \"details\" &&\n <Button variant={\"text\"}\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 onClick={() => setCurrentView(\"details\")}>\n <ArrowBackIcon/>\n Back\n </Button>}\n\n <Button variant={\"text\"}\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 getPathSuggestions?: (path?: string) => Promise<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 getPathSuggestions,\n getUser,\n getData,\n onAnalyticsEvent,\n }: PropsWithChildren<ConfigControllerProviderProps>) {\n\n const navigation = useNavigationController();\n const navigate = useNavigate();\n const snackbarController = useSnackbarController();\n const { propertyConfigs } = useCustomizationController();\n\n const [currentDialog, setCurrentDialog] = React.useState<{\n isNewCollection: boolean,\n parentCollection?: PersistedCollection,\n editedCollectionId?: string,\n fullPath?: string,\n parentCollectionIds: string[],\n initialValues?: {\n path?: string,\n group?: string,\n name?: string\n },\n redirect: boolean,\n existingEntities?: Entity<any>[]\n }>();\n\n const [currentPropertyDialog, setCurrentPropertyDialog] = React.useState<{\n propertyKey?: string,\n property?: Property,\n namespace?: string,\n parentCollection?: PersistedCollection,\n currentPropertiesOrder?: string[],\n editedCollectionId: string,\n fullPath?: string,\n parentCollectionIds: string[],\n collectionEditable: boolean;\n existingEntities?: Entity<any>[]\n }>();\n\n const defaultConfigPermissions: CollectionEditorPermissionsBuilder = useCallback(() => ({\n createCollections: true,\n editCollections: true,\n deleteCollections: true\n }), []);\n\n const editCollection = ({\n id,\n fullPath,\n parentCollectionIds,\n parentCollection,\n existingEntities\n }: {\n id?: string,\n fullPath?: string,\n parentCollectionIds: string[],\n parentCollection?: PersistedCollection,\n existingEntities?: Entity<any>[]\n }) => {\n console.debug(\"Edit collection\", id, fullPath, parentCollectionIds, parentCollection);\n onAnalyticsEvent?.(\"edit_collection\", {\n id,\n fullPath\n });\n setCurrentDialog({\n editedCollectionId: id,\n fullPath,\n parentCollectionIds,\n isNewCollection: false,\n parentCollection,\n redirect: false,\n existingEntities\n });\n };\n\n const editProperty = ({\n propertyKey,\n property,\n editedCollectionId,\n currentPropertiesOrder,\n parentCollectionIds,\n collection,\n existingEntities\n }: {\n propertyKey?: string,\n property?: Property,\n currentPropertiesOrder?: string[],\n editedCollectionId: string,\n parentCollectionIds: string[],\n collection: PersistedCollection,\n existingEntities?: Entity<any>[]\n }) => {\n console.debug(\"Edit property\", propertyKey, property, editedCollectionId, currentPropertiesOrder, parentCollectionIds, collection);\n onAnalyticsEvent?.(\"edit_property\", {\n propertyKey,\n editedCollectionId\n });\n // namespace is all the path until the last dot\n const namespace = propertyKey && propertyKey.includes(\".\")\n ? propertyKey.substring(0, propertyKey.lastIndexOf(\".\"))\n : undefined;\n const propertyKeyWithoutNamespace = propertyKey && propertyKey.includes(\".\")\n ? propertyKey.substring(propertyKey.lastIndexOf(\".\") + 1)\n : propertyKey;\n setCurrentPropertyDialog({\n propertyKey: propertyKeyWithoutNamespace,\n property,\n namespace,\n currentPropertiesOrder,\n editedCollectionId,\n parentCollectionIds,\n collectionEditable: collection?.editable ?? false,\n existingEntities\n });\n };\n\n const createCollection = ({\n parentCollectionIds,\n parentCollection,\n initialValues,\n redirect,\n sourceClick\n }: {\n parentCollectionIds: string[],\n parentCollection?: PersistedCollection\n initialValues?: {\n group?: string,\n path?: string,\n name?: string\n },\n redirect: boolean,\n sourceClick?: string\n }) => {\n console.debug(\"Create collection\", {\n parentCollectionIds,\n parentCollection,\n initialValues,\n redirect,\n sourceClick\n });\n onAnalyticsEvent?.(\"create_collection\", {\n parentCollectionIds,\n parentCollection,\n initialValues,\n redirect,\n sourceClick\n });\n setCurrentDialog({\n isNewCollection: true,\n parentCollectionIds,\n parentCollection,\n initialValues,\n redirect\n });\n };\n\n return (\n <ConfigControllerContext.Provider value={collectionConfigController}>\n <CollectionEditorContext.Provider\n value={{\n editCollection,\n createCollection,\n editProperty,\n configPermissions: configPermissions ?? defaultConfigPermissions,\n getPathSuggestions,\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 pathSuggestions={getPathSuggestions}\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 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/>\n </IconButton>\n </Tooltip>;\n\n return <>\n {editorButton}\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 { 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>\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 onClick={(event) => {\n onEditCollectionClicked();\n }}>\n <SettingsIcon size={\"small\"}/>\n </IconButton>}\n </div>\n\n <ConfirmationDialog\n open={deleteRequested}\n onAccept={deleteCollection}\n onCancel={() => setDeleteRequested(false)}\n title={<>Delete this collection?</>}\n body={<> This will <b>not\n delete any data</b>, only\n the collection in the CMS</>}/>\n </>;\n\n}\n","import { EntityTableController, ResolvedProperty } from \"@firecms/core\";\nimport { IconButton, SettingsIcon, Tooltip } from \"@firecms/ui\";\nimport React from \"react\";\nimport { useCollectionEditorController } from \"../useCollectionEditorController\";\nimport { PersistedCollection } from \"../types/persisted_collection\";\n\nexport function CollectionViewHeaderAction({\n propertyKey,\n onHover,\n property,\n fullPath,\n parentCollectionIds,\n collection,\n tableController\n }: {\n property: ResolvedProperty,\n propertyKey: string,\n onHover: boolean,\n fullPath: string,\n parentCollectionIds: string[],\n collection: PersistedCollection;\n tableController: EntityTableController;\n}) {\n\n const collectionEditorController = useCollectionEditorController();\n\n return (\n <Tooltip\n asChild={true}\n title={\"Edit\"}>\n <IconButton\n className={onHover ? \"bg-white dark:bg-surface-950\" : \"hidden\"}\n onClick={() => {\n collectionEditorController.editProperty({\n propertyKey,\n property,\n editedCollectionId: collection.id,\n parentCollectionIds,\n collection,\n existingEntities: tableController.data ?? []\n });\n }}\n size={\"small\"}>\n <SettingsIcon size={\"small\"}/>\n </IconButton>\n </Tooltip>\n )\n}\n","import { EntityTableController, getDefaultPropertiesOrder, useAuthController } from \"@firecms/core\";\nimport { AddIcon, Tooltip } from \"@firecms/ui\";\nimport { useCollectionEditorController } from \"../useCollectionEditorController\";\nimport { PersistedCollection } from \"../types/persisted_collection\";\n\nexport function PropertyAddColumnComponent({\n fullPath,\n parentCollectionIds,\n collection,\n tableController\n }: {\n fullPath: string,\n parentCollectionIds: string[],\n collection: PersistedCollection;\n tableController: EntityTableController;\n}) {\n\n const authController = useAuthController();\n const collectionEditorController = useCollectionEditorController();\n const canEditCollection = collectionEditorController.configPermissions\n ? collectionEditorController.configPermissions({\n user: authController.user,\n collection\n }).editCollections\n : true;\n\n return (\n <Tooltip\n asChild={true}\n title={canEditCollection ? \"Add new property\" : \"You don't have permission to add new properties\"}>\n <div\n className={\"p-0.5 w-20 h-full flex items-center justify-center cursor-pointer bg-surface-100 bg-opacity-40 hover:bg-surface-100 dark:bg-surface-950 dark:bg-opacity-40 dark:hover:bg-surface-950\"}\n // className={onHover ? \"bg-white dark:bg-surface-950\" : undefined}\n onClick={() => {\n collectionEditorController.editProperty({\n editedCollectionId: collection.id,\n parentCollectionIds,\n currentPropertiesOrder: getDefaultPropertiesOrder(collection),\n collection,\n existingEntities: tableController.data\n });\n }}>\n <AddIcon color={\"inherit\"}/>\n </div>\n </Tooltip>\n )\n}\n","import { AddIcon, Button } from \"@firecms/ui\";\nimport { useCollectionEditorController } from \"../useCollectionEditorController\";\n\nexport function NewCollectionButton() {\n const collectionEditorController = useCollectionEditorController();\n return <div className={\"bg-surface-50 dark:bg-surface-900 min-w-fit rounded\"}>\n <Button className={\"min-w-fit\"}\n variant={\"outlined\"}\n onClick={() => collectionEditorController.createCollection({\n parentCollectionIds: [],\n redirect: true,\n sourceClick: \"new_collection_button\"\n })}>\n <AddIcon/>\n New collection\n </Button>\n </div>\n}\n","import equal from \"react-fast-compare\"\n\nimport { CollectionActionsProps, mergeDeep, useAuthController, useSnackbarController } from \"@firecms/core\";\nimport { Button, SaveIcon, Tooltip, UndoIcon, } from \"@firecms/ui\";\n\nimport { useCollectionEditorController } from \"../useCollectionEditorController\";\nimport { useCollectionsConfigController } from \"../useCollectionsConfigController\";\nimport { PersistedCollection } from \"../types/persisted_collection\";\n\nexport function EditorCollectionActionStart({\n path: fullPath,\n parentCollectionIds,\n collection,\n tableController\n }: CollectionActionsProps) {\n\n const authController = useAuthController();\n const collectionEditorController = useCollectionEditorController();\n const configController = useCollectionsConfigController();\n const snackbarController = useSnackbarController();\n\n const canEditCollection = collectionEditorController.configPermissions\n ? collectionEditorController.configPermissions({\n user: authController.user,\n collection\n }).editCollections\n : true;\n\n let saveDefaultFilterButton = null;\n if (!equal(getObjectOrNull(tableController.filterValues), getObjectOrNull(collection.initialFilter)) ||\n !equal(getObjectOrNull(tableController.sortBy), getObjectOrNull(collection.initialSort))) {\n saveDefaultFilterButton = <>\n <Tooltip\n asChild={true}\n title={tableController.sortBy || tableController.filterValues ? \"Save default filter and sort\" : \"Clear default filter and sort\"}>\n <Button\n color={\"primary\"}\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 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\";\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 getPathSuggestions?: (path?: string) => Promise<string[]>;\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}\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 getPathSuggestions,\n getUser,\n collectionInference,\n getData,\n onAnalyticsEvent,\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 getPathSuggestions,\n getUser,\n getData,\n onAnalyticsEvent,\n }\n },\n homePage: {\n additionalActions: <NewCollectionButton/>,\n additionalChildrenStart: <IntroWidget/>,\n // additionalChildrenEnd: <RootCollectionSuggestions introMode={introMode}/>,\n CollectionActions: HomePageEditorCollectionAction,\n AdditionalCards: NewCollectionCard,\n },\n collectionView: {\n CollectionActionsStart: EditorCollectionActionStart,\n CollectionActions: EditorCollectionAction,\n HeaderAction: CollectionViewHeaderAction,\n AddColumnComponent: PropertyAddColumnComponent\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) => baseCollections.findIndex(c => c.id === a.id) - baseCollections.findIndex(c => c.id === b.id));\n console.debug(\"Collections result\", {\n baseCollections,\n backendCollections,\n result\n });\n\n return result;\n}\n","import { ErrorView, unslugify, useNavigationController } from \"@firecms/core\";\nimport { useCollectionEditorController } from \"../useCollectionEditorController\";\nimport { Button } from \"@firecms/ui\";\n\nexport function MissingReferenceWidget({ path: pathProp }: {\n path: string\n}) {\n const navigation = useNavigationController();\n const path = getLastSegment(pathProp);\n const parentCollectionIds = navigation.getParentCollectionIds(pathProp);\n const collectionEditor = useCollectionEditorController();\n return <div className={\"p-1 flex flex-col items-center\"}>\n <ErrorView error={\"No collection for path: \" + path}/>\n <Button className={\"mx-2\"} variant={\"outlined\"}\n size={\"small\"}\n onClick={() => {\n collectionEditor.createCollection({\n initialValues: { path, name: unslugify(path) },\n parentCollectionIds,\n redirect: false,\n sourceClick: \"missing_reference\"\n });\n }}>\n Create\n </Button>\n </div>;\n}\n\nfunction getParentPathSegments(path: string): string[] {\n const segments = path.split(\"/\");\n return segments.filter((segment, index) => index % 2 === 0 && index !== segments.length - 1);\n}\n\nfunction getLastSegment(path: string): string {\n const segments = path.split(\"/\");\n return segments[segments.length - 1];\n}\n"],"names":["YupSchema","Yup","object","shape","id","string","required","name","path","useCollectionEditorController","useContext","CollectionEditorContext","LayoutModeSwitch","t0","$","_c","value","onChange","className","t1","cls","t2","t3","Symbol","for","t4","t5","t6","t7","t8","t9","t10","t11","t12","t13","t14","t15","t16","t17","t18","CollectionDetailsForm","isNewCollection","reservedGroups","groups","parentCollection","children","groupRef","React","useRef","values","setFieldValue","handleChange","touched","errors","setFieldTouched","isSubmitting","submitCount","useFormex","iconDialogOpen","setIconDialogOpen","useState","advancedPanelExpanded","setAdvancedPanelExpanded","databaseId","undefined","updateDatabaseId","pathTouched","getIn","toSnakeCase","idTouched","singularNameTouched","singular","updateName","useEffect","collectionIcon","groupOptions","filter","group","includes","ref","autoCompleteOpen","setAutoCompleteOpen","useAutoComplete","isSubcollection","customIdValue","customId","showErrors","T0","Container","t19","t20","t21","e","target","t22","Boolean","t23","t24","t25","t26","t27","t28","t29","t30","t31","t32","DebouncedTextField","t33","t34","t35","t36","t37","event","length","map","group_0","index","t38","openEntityMode","t39","t40","t41","t42","t43","t44","t45","t46","t47","t48","t49","singularName","t50","e_0","t51","t52","t53","t54","t55","t56","t57","sideDialogWidth","t58","e_1","value_0","isNaN","Number","t59","t60","t61","t62","t63","t64","t65","t66","t67","t68","t69","description","t70","t71","t72","t73","t74","t75","t76","defaultSize","t77","_temp2","t78","_temp","t79","t80","v","Error","t81","t82","t83","t84","t85","_temp3","t86","v_0","t87","collectionGroup","t88","t89","t90","t91","v_1","t92","textSearchEnabled","t93","t94","t95","t96","t97","t98","t99","t100","height","t101","icon","t102","t103","t104","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","label","hasError","Object","keys","initialValues","validateOnChange","validation","formex","useCreateFormex","values_0","errors_0","EnumFormFields","enumValuesPath","shouldUpdateId","lastInternalIdAdded","setLastInternalIdAdded","editDialogIndex","setEditDialogIndex","inferring","setInferring","Set","inferredValuesRef","inferredValues","current","internalId","justAdded","entryError","has","buildEntry","then","data","flatData","flat","fieldData","Array","from","currentEnumValues","foundEnumValues","extractEnumFromValues","newEnumValues","some","enumValue_0","add","catch","finally","inferValues","console","error","EnumEntry","memo","EnumEntryInternal","updateId","autoFocus","onDialogOpen","inferredEntry","shouldUpdateIdRef","idValue","labelValue","currentLabelRef","areEqual","prevProps","nextProps","equal","EnumEntryDialog","open","onClose","idError","open_0","SwitchControl","field","form","tooltip","size","allowIndeterminate","checked","formControlLabel","GeneralPropertyValidation","validationRequired","validationUnique","field_0","form_0","validationRequiredMessage","StringPropertyValidation","lowercase","matches","max","min","trim","uppercase","matchesError","matchesValue","serializeRegExp","matchesStringValue","validationLowercase","validationUppercase","validationTrim","field_1","form_1","validationLength","validationMin","validationMax","validationMatches","ArrayPropertyValidation","ValidationPanel","EnumPropertyField","multiselect","setFieldError","snackbarContext","useSnackbarController","defaultValue","valuesEnumValues","useMemo","resolveEnumValues","enumIds","type","message","res","entry","toString","fileTypes","StoragePropertyField","multiple","existing","baseStoragePath","acceptedFiles","fileName","maxSize","storagePath","storeUrl","fileNameValue","storagePathValue","T1","maxSizeValue","storedValue","fileTypesValue","isArray","allFileTypesSelected","handleTypesChange","hasFilenameCallback","hasStoragePathCallback","ExpandablePanel","entries","preventDefault","stopPropagation","parseInt","selected","join","editableProperty","property","isPropertyBuilder","eProperty","dataType","of","editable","removeNonEditableProperties","properties","_","key","propertyOrBuilder","reduce","a","b","PropertyFieldPreview","onClick","includeName","includeEditButton","propertyConfigs","useCustomizationController","getFieldConfig","propertyConfig","borderColorClass","cardClickableMixin","cardSelectedMixin","cardMixin","NonEditablePropertyPreview","PropertyTree","selectedPropertyKey","onPropertyClick","propertiesOrder","propertiesOrderProp","additionalFields","onPropertyMove","onPropertyRemove","inferredPropertyKeys","collectionEditable","result","destination","startIndex","source","endIndex","newPropertiesOrder","removed","splice","onDragEnd","droppableProvided","droppableSnapshot","droppableProps","innerRef","additionalField","find","warn","provided","snapshot","isDragging","placeholder","isSelected","startsWith","wasSelected","PropertyTreeEntry","isPropertyInferred","fullId","fullIdPath","subtree","defaultBorderMixin","left","top","bottom","dragHandleProps","draggableProps","MapPropertyField","propertyDialogOpen","setPropertyDialogOpen","setSelectedPropertyKey","selectedPropertyNamespace","setSelectedPropertyNamespace","currentPropertiesOrder","onPropertyCreated","propertiesPath","propertiesOrderPath","currentPropertiesOrder_0","p","deleteProperty","selectedPropertyFullId","selectedProperty","empty","propertiesOrder_0","namespace_0","propertyKey_0","namespace_1","spreadChildren","RepeatPropertyField","ofProperty","ofPropertyError","onPropertyChanged","widget","CommonPropertyFields","forwardRef","disabledId","autoUpdateId","nameError","descriptionError","newNameValue","fontSize","newIdValue","nameTouched","unslugify","StringPropertyField","widgetId","BooleanPropertyField","BlockPropertyField","oneOf","addChildButton","namespace_2","NumberPropertyValidation","validationLessThan","validationMoreThan","validationPositive","validationNegative","validationInteger","NumberPropertyField","parseFloat","ReferencePropertyField","navigation","useNavigationController","pathPath","pathValue","pathError","CollectionsSelect","props","collections","ungroupedCollections","selectedCollection","collection","collection_0","collection_1","flatMap","collection_2","col","DateTimePropertyField","modeValue","modeError","autoValueValue","autoValueError","modePath","autoValuePath","v_2","AdvancedPropertyValidation","hideFromCollection","readOnly","KeyValuePropertyField","updatePropertyFromWidget","propertyData","selectedWidgetId","updatedProperty","mergeDeep","storage","multiline","markdown","email","url","keyValue","mode","UrlPropertyField","urlValue","supportedFieldsIds","supportedFields","DEFAULT_FIELD_CONFIGS","config","MarkdownPropertyField","PropertyForm","includeIdAndName","autoOpenTypeSelect","existingProperty","inArray","existingPropertyKeys","onPropertyChangedImmediate","onDismiss","onDelete","initialErrors","forceShowErrors","getController","initialValue","previousId","lastSubmittedProperty","property_0","params","doOnPropertyChanged","newPropertyWithId","controller","debug","id_0","property_1","resetForm","validateName","validateId","isValidRegExp","debugId","validateOnInitialRender","onSubmit","formexController","PropertyFormDialog","formProps","onCancel","onOkClicked","formexRef","helpers","handleSubmit","PropertyEditFormFields","setValues","includeIdAndTitle","selectOpen","setSelectOpen","deleteDialogOpen","setDeleteDialogOpen","getFieldId","selectedFieldConfigId","setSelectedFieldConfigId","deferredValues","useDeferredValue","nameFieldRef","selectedWidgetError","isEmptyObject","newSelectedWidgetId","setTimeout","focus","onWidgetSelectChanged","childComponent","hasValue","idRegEx","match","WIDGET_TYPE_MAP","text_field","switch","select","multi_select","number_input","number_select","multi_number_select","file_upload","multi_file_upload","reference","multi_references","date_time","key_value","repeat","custom_array","block","WidgetSelectView","initialProperty","onValueChange","onOpenChange","allSupportedFields","concat","displayedWidgets","key_0","propertyConfig_1","baseProperty","baseFieldConfig","computedFieldConfig","_temp4","fieldBackgroundDisabledMixin","fieldBackgroundHoverMixin","fieldBackgroundMixin","Dialog","DialogContent","key_2","propertyConfig_2","groupKey","key_1","propertyConfig_0","WidgetSelectViewItem","shouldWarnChangingDataType","camelCase","str","toLowerCase","parts","split","slice","part","charAt","substring","GetCodeDialog","snackbarController","code","JSON5","stringify","collectionToCode","themes","vsDark","navigator","clipboard","writeText","style","tokens","getLineProps","getTokenProps","line","i","token","propertyCleanup","valueCopy","clone","childRes","fromBuilder","resolved","resolvedProperties","initialFilter","initialSort","subcollections","CollectionPropertiesEditorForm","propertyErrorsRef","onPropertyError","setDirty","extraIcon","getUser","doCollectionInference","dirty","largeLayout","useLargeLayout","asDialog","selectedPropertyIndex","setSelectedPropertyIndex","codeDialogOpen","setCodeDialogOpen","inferringProperties","setInferringProperties","newPropertyDialogOpen","setNewPropertyDialogOpen","setInferredPropertyKeys","currentPropertiesOrderRef","inferPropertiesFromData","newCollection","newPropertyKeys","updatedProperties","acc","updatedPropertiesOrder","updatePropertiesOrder","getCurrentPropertiesOrder","indexOf","propertyPath","previousFullId","previousPropertyPath","onPropertyErrorInternal","closePropertyDialog","emptyCollection","usedPropertiesOrder","owner","ownerId","body","displayName","UnsavedChangesDialog","handleOk","handleCancel","title","EntityCustomViewsSelectDialog","entityViews","view","SubcollectionsEditTab","configController","collectionInference","parentCollectionIds","contextEntityViews","subcollectionToDelete","setSubcollectionToDelete","addEntityViewDialogOpen","setAddEntityViewDialogOpen","viewToDelete","setViewToDelete","currentDialog","setCurrentDialog","setSubcollections","T2","T3","resolvedEntityViews","resolveEntityView","hardCodedEntityViews","totalEntityViews","subcollection","editedCollectionId","e_2","Paper","Table","TableBody","e_3","deleteCollection","e_4","e_5","updatedCollection","selectedViewKey","e_6","view_0","productsCollectionTemplate","makePropertiesEditable","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","suggestion","TemplateButton","subtitle","CollectionEditorImportMapping","importConfig","setSelectedProperty","newPropertiesOrder_0","newHeadersMapping","headersMapping","setHeadersMapping","importData","importKey","fullId_0","propertyPath_0","d","inferredNewProperty","buildPropertyFromData","getInferenceType","onPropertyTypeChanged","property_2","importKey_0","isIdColumn","propertyKey_1","p_0","PropertySelect","fieldId","newProperty","widget_0","PropertySelectItem","optionDisabled","CollectionEditorImportDataPreview","authController","useAuthController","loading","setLoading","loadEntities","mappedData","convertDataToEntity","idColumn","defaultValues","setEntities","selectionController","useSelectionController","entities","dataLoading","noMoreToLoad","cleanPropertiesFromImport","parentSlug","slugify","fullSlug","slugifiedResult","firstKey","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","updatedFullPath","convertIdsToPaths","resolvedPath","resolveIdsFrom","getDataWithPath","existingData","push","onImportDataSet","setInUse","buildEntityPropertiesFromData","setIdColumn","setImportData","filteredHeadingsOrder","setHeadingsOrder","setOriginProperties","mappedHeadings","validValues","onImportMappingComplete","isMergedCollection","merged","deleteRequested","setDeleteRequested","View","importedCollection","removeUndefined","validate","rest","propertiesResult","applyPropertiesConfig","internalProperty","subpaths","removeInitialAndTrailingSlashes","ConfigControllerContext","createContext","ConfigControllerProvider","collectionConfigController","configPermissions","getPathSuggestions","onAnalyticsEvent","navigate","useNavigate","currentPropertyDialog","setCurrentPropertyDialog","defaultConfigPermissions","redirect","editCollection","parentCollectionIds_0","existingEntities_0","lastIndexOf","propertyKeyWithoutNamespace","editProperty","parentCollectionIds_1","parentCollection_0","sourceClick","createCollection","buildUrlCollectionPath","saveProperty","createCollections","editCollections","deleteCollections","EditorCollectionAction","tableController","navigationController","collectionEditorController","getCollectionFromIds","canEditCollection","editorButton","useCollectionsConfigController","HomePageEditorCollectionAction","permissions","onEditCollectionClicked","event_0","CollectionViewHeaderAction","onHover","PropertyAddColumnComponent","getDefaultPropertiesOrder","NewCollectionButton","EditorCollectionActionStart","saveDefaultFilterButton","getObjectOrNull","filterValues","sortBy","clearFilter","setFilterValues","setSortBy","o","NewCollectionCard","context","canCreateCollections","useCollectionEditorPlugin","Component","additionalActions","additionalChildrenStart","CollectionActions","AdditionalCards","CollectionActionsStart","HeaderAction","AddColumnComponent","provider","homePage","collectionView","IntroWidget","mergeCollections","baseCollections","backendCollections","modifyCollection","markAsEditable","joinCollectionLists","sort","findIndex","MissingReferenceWidget","pathProp","getLastSegment","getParentCollectionIds","collectionEditor","segments"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.es.js","sources":["../src/ui/collection_editor/CollectionYupValidation.tsx","../src/useCollectionEditorController.tsx","../src/ui/collection_editor/LayoutModeSwitch.tsx","../src/ui/collection_editor/CollectionDetailsForm.tsx","../src/ui/collection_editor/util.ts","../src/ui/collection_editor/EnumForm.tsx","../src/ui/collection_editor/SwitchControl.tsx","../src/ui/collection_editor/properties/validation/GeneralPropertyValidation.tsx","../src/ui/collection_editor/properties/validation/StringPropertyValidation.tsx","../src/ui/collection_editor/properties/validation/ArrayPropertyValidation.tsx","../src/ui/collection_editor/properties/validation/ValidationPanel.tsx","../src/ui/collection_editor/properties/EnumPropertyField.tsx","../src/ui/collection_editor/properties/StoragePropertyField.tsx","../src/utils/entities.ts","../src/ui/collection_editor/PropertyFieldPreview.tsx","../src/ui/collection_editor/PropertyTree.tsx","../src/ui/collection_editor/properties/MapPropertyField.tsx","../src/ui/collection_editor/properties/RepeatPropertyField.tsx","../src/ui/collection_editor/properties/CommonPropertyFields.tsx","../src/ui/collection_editor/properties/StringPropertyField.tsx","../src/ui/collection_editor/properties/BooleanPropertyField.tsx","../src/ui/collection_editor/properties/BlockPropertyField.tsx","../src/ui/collection_editor/properties/validation/NumberPropertyValidation.tsx","../src/ui/collection_editor/properties/NumberPropertyField.tsx","../src/ui/collection_editor/properties/ReferencePropertyField.tsx","../src/ui/collection_editor/properties/DateTimePropertyField.tsx","../src/ui/collection_editor/properties/advanced/AdvancedPropertyValidation.tsx","../src/ui/collection_editor/properties/KeyValuePropertyField.tsx","../src/ui/collection_editor/utils/update_property_for_widget.ts","../src/ui/collection_editor/properties/UrlPropertyField.tsx","../src/ui/collection_editor/utils/supported_fields.tsx","../src/ui/collection_editor/properties/MarkdownPropertyField.tsx","../src/ui/collection_editor/PropertyEditView.tsx","../src/ui/collection_editor/utils/strings.ts","../src/ui/collection_editor/GetCodeDialog.tsx","../src/ui/collection_editor/CollectionPropertiesEditorForm.tsx","../src/ui/collection_editor/UnsavedChangesDialog.tsx","../src/ui/collection_editor/EntityCustomViewsSelectDialog.tsx","../src/ui/collection_editor/SubcollectionsEditTab.tsx","../src/ui/collection_editor/templates/products_template.ts","../src/ui/collection_editor/templates/blog_template.ts","../src/ui/collection_editor/templates/users_template.ts","../src/ui/collection_editor/templates/pages_template.ts","../src/ui/collection_editor/CollectionEditorWelcomeView.tsx","../src/ui/collection_editor/import/CollectionEditorImportMapping.tsx","../src/ui/collection_editor/import/CollectionEditorImportDataPreview.tsx","../src/ui/collection_editor/import/clean_import_data.ts","../src/ui/collection_editor/EntityActionsSelectDialog.tsx","../src/ui/collection_editor/EntityActionsEditTab.tsx","../src/ui/collection_editor/CollectionEditorDialog.tsx","../src/ConfigControllerProvider.tsx","../src/ui/EditorCollectionAction.tsx","../src/useCollectionsConfigController.tsx","../src/ui/HomePageEditorCollectionAction.tsx","../src/ui/CollectionViewHeaderAction.tsx","../src/ui/PropertyAddColumnComponent.tsx","../src/ui/NewCollectionButton.tsx","../src/ui/EditorCollectionActionStart.tsx","../src/ui/NewCollectionCard.tsx","../src/ui/EditorEntityAction.tsx","../src/useCollectionEditorPlugin.tsx","../src/utils/collections.ts","../src/ui/MissingReferenceWidget.tsx"],"sourcesContent":["import * as Yup from \"yup\";\n\nexport const YupSchema = Yup.object().shape({\n id: Yup.string().required(\"Required\"),\n name: Yup.string().required(\"Required\"),\n path: Yup.string().required(\"Required\")\n});\n","import { useContext } from \"react\";\nimport { CollectionEditorController } from \"./types/collection_editor_controller\";\nimport { CollectionEditorContext } from \"./ConfigControllerProvider\";\n\n/**\n * Hook to access the collection editor controller.\n * The methods in this controller can be used to open the collection editor dialog.\n */\nexport const useCollectionEditorController = (): CollectionEditorController => useContext(CollectionEditorContext);\n","import { Card, cls, SquareIcon, Tooltip, Typography, VerticalSplitIcon } from \"@firecms/ui\";\n\nexport function LayoutModeSwitch({\n value,\n onChange,\n className\n }: {\n value: \"side_panel\" | \"full_screen\";\n onChange: (value: \"side_panel\" | \"full_screen\") => void;\n className?: string;\n}) {\n\n return <div className={cls(className)}>\n <Typography variant={\"label\"} color={\"secondary\"} className={\"ml-3.5\"}>Document view</Typography>\n <div className={cls(\"flex flex-row gap-4\")}>\n\n <Tooltip title={\"Documents are open in a side panel\"}>\n <Card\n onClick={() => onChange(\"side_panel\")}\n className={cls(\n \"my-2 rounded-md mx-0 p-4 focus:outline-none transition ease-in-out duration-150 flex flex-row gap-4 items-center\",\n \"text-surface-700 dark:text-surface-accent-300\",\n \"hover:text-primary-dark dark:hover:text-primary focus:ring-primary hover:ring-1 hover:ring-primary\",\n value === \"side_panel\" ? \"border-primary dark:border-primary\" : \"border-surface-400 dark:border-surface-600\",\n )}\n >\n <VerticalSplitIcon/>\n <Typography variant={\"label\"}>\n Side panel\n </Typography>\n </Card>\n </Tooltip>\n\n <Tooltip title={\"Documents are open full-screen\"}>\n <Card\n onClick={() => onChange(\"full_screen\")}\n className={cls(\n \"my-2 rounded-md mx-0 p-4 focus:outline-none transition ease-in-out duration-150 flex flex-row gap-4 items-center\",\n \"text-surface-700 dark:text-surface-accent-300\",\n \"hover:text-primary-dark dark:hover:text-primary focus:ring-primary hover:ring-1 hover:ring-primary\",\n value === \"full_screen\" ? \"border-primary dark:border-primary\" : \"border-surface-400 dark:border-surface-600\",\n )}\n >\n <SquareIcon/>\n <Typography variant={\"label\"}>\n Full screen\n </Typography>\n </Card>\n </Tooltip>\n\n </div>\n <Typography variant={\"caption\"} color={\"secondary\"} className={\"ml-3.5\"}>Should documents be opened full screen or in an inline side dialog</Typography>\n </div>\n}\n","import React, { useEffect, useState } from \"react\";\nimport { EntityCollection, FieldCaption, IconForView, SearchIconsView, singular, toSnakeCase, } from \"@firecms/core\";\nimport {\n BooleanSwitchWithLabel,\n Chip,\n CloseIcon,\n cls,\n Container,\n DebouncedTextField,\n Dialog,\n ExpandablePanel,\n IconButton,\n Select,\n SelectItem,\n SettingsIcon,\n TextField,\n Tooltip,\n Typography,\n useAutoComplete\n} from \"@firecms/ui\";\n\nimport { Field, getIn, useFormex } from \"@firecms/formex\";\nimport { useCollectionEditorController } from \"../../useCollectionEditorController\";\nimport { LayoutModeSwitch } from \"./LayoutModeSwitch\";\n\nexport function CollectionDetailsForm({\n isNewCollection,\n reservedGroups,\n existingPaths,\n existingIds,\n groups,\n parentCollection,\n children\n }: {\n isNewCollection: boolean,\n reservedGroups?: string[];\n existingPaths?: string[];\n existingIds?: string[];\n groups: string[] | null;\n parentCollection?: EntityCollection;\n parentCollectionIds?: string[];\n children?: React.ReactNode;\n}) {\n\n const groupRef = React.useRef<HTMLInputElement>(null);\n const {\n values,\n setFieldValue,\n handleChange,\n touched,\n errors,\n setFieldTouched,\n isSubmitting,\n submitCount\n } = useFormex<EntityCollection>();\n\n const collectionEditor = useCollectionEditorController();\n\n const [iconDialogOpen, setIconDialogOpen] = useState(false);\n const [advancedPanelExpanded, setAdvancedPanelExpanded] = useState(false);\n\n const updateDatabaseId = (databaseId: string) => {\n setFieldValue(\"databaseId\", databaseId ?? undefined);\n }\n\n const updateName = (name: string) => {\n setFieldValue(\"name\", name);\n\n const pathTouched = getIn(touched, \"path\");\n if (!pathTouched && isNewCollection && name) {\n setFieldValue(\"path\", toSnakeCase(name));\n }\n\n const idTouched = getIn(touched, \"id\");\n if (!idTouched && isNewCollection && name) {\n setFieldValue(\"id\", toSnakeCase(name));\n }\n\n const singularNameTouched = getIn(touched, \"singularName\");\n if (!singularNameTouched && isNewCollection && name) {\n setFieldValue(\"singularName\", singular(name));\n }\n\n };\n\n useEffect(() => {\n if (errors.id) {\n setAdvancedPanelExpanded(true);\n }\n }, [errors.id]);\n\n const collectionIcon = <IconForView collectionOrView={values}/>;\n\n const groupOptions = groups?.filter((group) => !reservedGroups?.includes(group));\n\n const {\n inputFocused,\n autoCompleteOpen,\n setAutoCompleteOpen\n } = useAutoComplete({\n ref: groupRef\n });\n\n const isSubcollection = !!parentCollection;\n\n let customIdValue: \"true\" | \"false\" | \"optional\" | \"code_defined\" | undefined;\n if (typeof values.customId === \"object\") {\n customIdValue = \"code_defined\";\n } else if (values.customId === true) {\n customIdValue = \"true\";\n } else if (values.customId === false) {\n customIdValue = \"false\";\n } else if (values.customId === \"optional\") {\n customIdValue = \"optional\";\n }\n\n const showErrors = submitCount > 0;\n\n return (\n <div className={\"overflow-auto my-auto\"}>\n <Container maxWidth={\"4xl\"} className={\"flex flex-col gap-4 p-8 m-auto\"}>\n\n <div>\n <div\n className=\"flex flex-row gap-2 py-2 pt-3 items-center\">\n <Typography variant={!isNewCollection ? \"h5\" : \"h4\"} className={\"flex-grow\"}>\n {isNewCollection ? \"New collection\" : `${values?.name} collection`}\n </Typography>\n <DefaultDatabaseField databaseId={values.databaseId}\n onDatabaseIdUpdate={updateDatabaseId}/>\n\n <Tooltip title={\"Change icon\"}\n asChild={true}>\n <IconButton\n shape={\"square\"}\n onClick={() => setIconDialogOpen(true)}>\n {collectionIcon}\n </IconButton>\n </Tooltip>\n </div>\n\n {parentCollection && <Chip colorScheme={\"tealDarker\"}>\n <Typography variant={\"caption\"}>\n This is a subcollection of <b>{parentCollection.name}</b>\n </Typography>\n </Chip>}\n\n </div>\n <div className={\"grid grid-cols-12 gap-4\"}>\n\n <div className={\"col-span-12\"}>\n <TextField\n value={values.name ?? \"\"}\n onChange={(e: any) => updateName(e.target.value)}\n label={\"Name\"}\n autoFocus={true}\n required\n error={showErrors && Boolean(errors.name)}/>\n <FieldCaption error={touched.name && Boolean(errors.name)}>\n {touched.name && Boolean(errors.name) ? errors.name : \"Name of this collection, usually a plural name (e.g. Products)\"}\n </FieldCaption>\n </div>\n\n <div className={cls(\"col-span-12 \")}>\n <Field name={\"path\"}\n as={DebouncedTextField}\n label={\"Path\"}\n disabled={!isNewCollection}\n required\n error={showErrors && Boolean(errors.path)}/>\n\n <FieldCaption error={touched.path && Boolean(errors.path)}>\n {touched.path && Boolean(errors.path)\n ? errors.path\n : isSubcollection ? \"Relative path to the parent (no need to include the parent path)\" : \"Path that this collection is stored in, in the database\"}\n </FieldCaption>\n\n </div>\n\n {/*{!isSubcollection && <div className={\"col-span-12 sm:col-span-4 relative\"}>*/}\n\n {/* <TextField error={showErrors && Boolean(errors.group)}*/}\n {/* disabled={isSubmitting}*/}\n {/* value={values.group ?? \"\"}*/}\n {/* autoComplete=\"off\"*/}\n {/* onChange={(event) => setFieldValue(\"group\", event.target.value)}*/}\n {/* name={\"group\"}*/}\n {/* inputRef={groupRef}*/}\n {/* label=\"Group\"/>*/}\n {/* <Autocomplete*/}\n {/* open={autoCompleteOpen && (groupOptions ?? []).length > 0}*/}\n {/* setOpen={setAutoCompleteOpen}>*/}\n {/* {groupOptions?.map((group, index) => {*/}\n {/* return <AutocompleteItem*/}\n {/* key={index + \"_\" + group}*/}\n {/* className={\"pr-6 pl-14\"}*/}\n {/* onClick={() => {*/}\n {/* setAutoCompleteOpen(false);*/}\n {/* setFieldValue(\"group\", group ?? null);*/}\n {/* }}*/}\n {/* >*/}\n {/* <div className={\"flex-grow\"}>*/}\n {/* {group}*/}\n {/* </div>*/}\n {/* </AutocompleteItem>;*/}\n {/* })}*/}\n {/* </Autocomplete>*/}\n {/* <FieldCaption>*/}\n {/* {showErrors && Boolean(errors.group) ? errors.group : \"Group in the home page\"}*/}\n {/* </FieldCaption>*/}\n\n\n {/*</div>}*/}\n\n <LayoutModeSwitch\n className={\"col-span-12\"}\n value={values.openEntityMode ?? \"side_panel\"}\n onChange={(value) => setFieldValue(\"openEntityMode\", value)}/>\n\n <div className={\"col-span-12\"}>\n <BooleanSwitchWithLabel\n position={\"start\"}\n size={\"large\"}\n allowIndeterminate={true}\n label={values.history === null || values.history === undefined ? \"Document history revisions enabled if enabled globally\" : (\n values.history ? \"Document history revisions ENABLED\" : \"Document history revisions NOT enabled\"\n )}\n onValueChange={(v) => setFieldValue(\"history\", v)}\n value={values.history === undefined ? null : values.history}\n />\n <FieldCaption>\n When enabled, each document in this collection will have a history of changes.\n This is useful for auditing purposes. The data is stored in a subcollection of the document\n in your database, called <b>__history</b>.\n </FieldCaption>\n </div>\n\n\n <div className={\"col-span-12 mt-8\"}>\n <ExpandablePanel\n expanded={advancedPanelExpanded}\n onExpandedChange={setAdvancedPanelExpanded}\n title={\n <div className=\"flex flex-row text-surface-500\">\n <SettingsIcon/>\n <Typography variant={\"subtitle2\"}\n className=\"ml-2\">\n Advanced\n </Typography>\n </div>}\n initiallyExpanded={false}>\n <div className={\"grid grid-cols-12 gap-4 p-4\"}>\n\n <div className={\"col-span-12\"}>\n <Field name={\"id\"}\n as={DebouncedTextField}\n disabled={!isNewCollection}\n label={\"Collection id\"}\n error={showErrors && Boolean(errors.id)}/>\n <FieldCaption error={touched.id && Boolean(errors.id)}>\n {touched.id && Boolean(errors.id) ? errors.id : \"This id identifies this collection. Typically the same as the path.\"}\n </FieldCaption>\n </div>\n\n <div className={\"col-span-12\"}>\n <TextField\n error={showErrors && Boolean(errors.singularName)}\n name={\"singularName\"}\n aria-describedby={\"singularName-helper\"}\n onChange={(e) => {\n setFieldTouched(\"singularName\", true);\n return handleChange(e);\n }}\n value={values.singularName ?? \"\"}\n label={\"Singular name\"}/>\n <FieldCaption error={showErrors && Boolean(errors.singularName)}>\n {showErrors && Boolean(errors.singularName) ? errors.singularName : \"Optionally define a singular name for your entities\"}\n </FieldCaption>\n </div>\n <div className={\"col-span-12\"}>\n <TextField\n error={showErrors && Boolean(errors.sideDialogWidth)}\n name={\"sideDialogWidth\"}\n type={\"number\"}\n aria-describedby={\"sideDialogWidth-helper\"}\n onChange={(e) => {\n setFieldTouched(\"sideDialogWidth\", true);\n const value = e.target.value;\n if (!value) {\n setFieldValue(\"sideDialogWidth\", null);\n } else if (!isNaN(Number(value))) {\n setFieldValue(\"sideDialogWidth\", Number(value));\n }\n }}\n endAdornment={<IconButton\n size={\"small\"}\n onClick={() => {\n setFieldValue(\"sideDialogWidth\", null);\n }}\n disabled={!values.sideDialogWidth}>\n <CloseIcon size={\"small\"}/>\n </IconButton>}\n value={values.sideDialogWidth ?? \"\"}\n label={\"Side dialog width\"}/>\n <FieldCaption error={showErrors && Boolean(errors.singularName)}>\n {showErrors && Boolean(errors.singularName) ? errors.singularName : \"Optionally define the width (in pixels) of entities side dialog. Default is 768px\"}\n </FieldCaption>\n </div>\n <div className={\"col-span-12\"}>\n <TextField\n error={showErrors && Boolean(errors.description)}\n name=\"description\"\n value={values.description ?? \"\"}\n onChange={handleChange}\n multiline\n minRows={2}\n aria-describedby=\"description-helper-text\"\n label=\"Description\"\n />\n <FieldCaption error={showErrors && Boolean(errors.description)}>\n {showErrors && Boolean(errors.description) ? errors.description : \"Description of the collection, you can use markdown\"}\n </FieldCaption>\n </div>\n\n <div className={\"col-span-12\"}>\n <Select\n name=\"defaultSize\"\n size={\"large\"}\n fullWidth={true}\n label=\"Default row size\"\n position={\"item-aligned\"}\n onChange={handleChange}\n value={values.defaultSize ?? \"\"}\n renderValue={(value: any) => value.toUpperCase()}\n >\n {[\"xs\", \"s\", \"m\", \"l\", \"xl\"].map((value) => (\n <SelectItem\n key={`size-select-${value}`}\n value={value}>\n {value.toUpperCase()}\n </SelectItem>\n ))}\n </Select>\n </div>\n\n <div className={\"col-span-12\"}>\n <BooleanSwitchWithLabel\n position={\"start\"}\n size={\"large\"}\n label={values.includeJsonView === undefined || values.includeJsonView ? \"Include JSON view\" : \"Do not include JSON view\"}\n onValueChange={(v) => setFieldValue(\"includeJsonView\", v)}\n value={values.includeJsonView === undefined ? true : values.includeJsonView}\n />\n <FieldCaption>\n Include the JSON representation of the document.\n </FieldCaption>\n </div>\n\n <div className={\"col-span-12\"}>\n <Select\n name=\"customId\"\n label=\"Document IDs generation\"\n position={\"item-aligned\"}\n size={\"large\"}\n fullWidth={true}\n disabled={customIdValue === \"code_defined\"}\n onValueChange={(v) => {\n if (v === \"code_defined\")\n throw new Error(\"This should not happen\");\n setFieldValue(\"customId\", v);\n }}\n value={customIdValue ?? \"\"}\n renderValue={(value: any) => {\n if (value === \"code_defined\")\n return \"Code defined\";\n else if (value === \"true\")\n return \"Users must define an ID\";\n else if (value === \"optional\")\n return \"Users can define an ID, but it is not required\";\n else\n return \"Document ID is generated automatically\";\n }}\n >\n <SelectItem value={\"false\"}>\n Document ID is generated automatically\n </SelectItem>\n <SelectItem value={\"true\"}>\n Users must define an ID\n </SelectItem>\n <SelectItem value={\"optional\"}>\n Users can define an ID, but it is not required\n </SelectItem>\n </Select>\n </div>\n <div className={\"col-span-12 mt-4\"}>\n <BooleanSwitchWithLabel\n position={\"start\"}\n size={\"large\"}\n label=\"Collection group\"\n onValueChange={(v) => setFieldValue(\"collectionGroup\", v)}\n value={values.collectionGroup ?? false}\n />\n <FieldCaption>\n A collection group consists of all collections with the same path. This allows\n you\n to query over multiple collections at once.\n </FieldCaption>\n </div>\n <div className={\"col-span-12\"}>\n <BooleanSwitchWithLabel\n position={\"start\"}\n size={\"large\"}\n label=\"Enable text search for this collection\"\n onValueChange={(v) => setFieldValue(\"textSearchEnabled\", v)}\n value={values.textSearchEnabled ?? false}\n />\n <FieldCaption>\n Allow text search for this collection. If you have not specified a text search\n delegate, this will use the built-in local text search. This is not recommended\n for large collections, as it may incur in performance and cost issues.\n </FieldCaption>\n </div>\n\n\n </div>\n </ExpandablePanel>\n\n {children}\n\n </div>\n\n </div>\n\n <div style={{ height: \"52px\" }}/>\n\n <Dialog\n open={iconDialogOpen}\n onOpenChange={setIconDialogOpen}\n maxWidth={\"xl\"}\n fullWidth\n >\n <div className={\"p-4 overflow-auto min-h-[200px]\"}>\n <SearchIconsView selectedIcon={typeof values.icon === \"string\" ? values.icon : undefined}\n onIconSelected={(icon: string) => {\n setIconDialogOpen(false);\n setFieldValue(\"icon\", icon);\n }}/>\n </div>\n\n </Dialog>\n\n </Container>\n </div>\n );\n}\n\nfunction DefaultDatabaseField({\n databaseId,\n onDatabaseIdUpdate\n }: { databaseId?: string, onDatabaseIdUpdate: (databaseId: string) => void }) {\n\n return <Tooltip title={\"Database ID\"}\n side={\"top\"}\n align={\"start\"}>\n <TextField size={\"small\"}\n invisible={true}\n inputClassName={\"text-end\"}\n value={databaseId ?? \"\"}\n onChange={(e: any) => onDatabaseIdUpdate(e.target.value)}\n placeholder={\"(default)\"}></TextField>\n </Tooltip>\n}\n","export function idToPropertiesPath(id: string): string {\n return \"properties.\" + id.replaceAll(\".\", \".properties.\");\n}\n\nexport function namespaceToPropertiesPath(namespace?: string): string {\n return namespace\n ? \"properties.\" + namespace.replaceAll(\".\", \".properties.\") + \".properties\"\n : \"properties\";\n}\n\nexport function namespaceToPropertiesOrderPath(namespace?: string): string {\n return namespace\n ? \"properties.\" + namespace.replaceAll(\".\", \".properties.\") + \".propertiesOrder\"\n : \"propertiesOrder\";\n}\n\nexport function getFullId(propertyKey: string, propertyNamespace?: string): string {\n return propertyNamespace\n ? `${propertyNamespace}.${propertyKey}`\n : propertyKey;\n}\n\nexport function getFullIdPath(propertyKey: string, propertyNamespace?: string): string {\n const keyWithNamespace = propertyNamespace\n ? `${propertyNamespace}.${propertyKey}`\n : propertyKey;\n return idToPropertiesPath(keyWithNamespace);\n}\n","import React, { useEffect } from \"react\";\nimport equal from \"react-fast-compare\"\n\nimport { ArrayContainer, ArrayEntryParams, EnumValueConfig, EnumValues, FieldCaption, } from \"@firecms/core\";\nimport {\n AutorenewIcon,\n Badge,\n Button,\n CircularProgress,\n DebouncedTextField,\n Dialog,\n DialogActions,\n DialogContent,\n DialogTitle,\n IconButton,\n ListIcon,\n Paper,\n SettingsIcon,\n Typography\n} from \"@firecms/ui\";\nimport { extractEnumFromValues } from \"@firecms/schema_inference\";\nimport { Field, Formex, getIn, useCreateFormex, useFormex } from \"@firecms/formex\";\n\ntype EnumFormProps = {\n enumValues: EnumValueConfig[];\n onValuesChanged?: (enumValues: EnumValueConfig[]) => void;\n onError?: (error: boolean) => void;\n updateIds: boolean;\n disabled: boolean;\n allowDataInference?: boolean;\n getData?: () => Promise<string[]>;\n};\n\nexport function EnumForm({\n enumValues,\n onValuesChanged,\n onError,\n updateIds,\n disabled,\n allowDataInference,\n getData\n }: EnumFormProps) {\n\n const formex = useCreateFormex<{\n enumValues: EnumValueConfig[]\n }>({\n initialValues: { enumValues },\n validateOnChange: true,\n validation: (values) => {\n const errors: any = {};\n if (values.enumValues) {\n values.enumValues.forEach((enumValue, index) => {\n if (!enumValue?.label) {\n errors.enumValues = errors.enumValues ?? [];\n errors.enumValues[index] = errors.enumValues[index] ?? {};\n errors.enumValues[index].label = \"You must specify a label for this enum value entry\";\n }\n if (!enumValue?.id) {\n errors.enumValues = errors.enumValues ?? [];\n errors.enumValues[index] = errors.enumValues[index] ?? {};\n errors.enumValues[index].id = \"You must specify an ID for this enum value entry\";\n }\n });\n }\n const hasError = Boolean(errors?.enumValues && Object.keys(errors?.enumValues).length > 0);\n onError?.(hasError);\n return errors;\n }\n });\n\n const { values, errors } = formex;\n\n useEffect(() => {\n if (onValuesChanged) {\n onValuesChanged(values.enumValues);\n }\n }, [values.enumValues]);\n\n return <Formex value={formex}>\n <EnumFormFields enumValuesPath={\"enumValues\"}\n values={values}\n errors={errors}\n shouldUpdateId={updateIds}\n disabled={disabled}\n allowDataInference={allowDataInference}\n getData={getData}/>\n </Formex>\n\n}\n\ntype EnumFormFieldsProps = {\n values: {\n enumValues: EnumValueConfig[]\n };\n errors: any;\n enumValuesPath: string;\n shouldUpdateId: boolean;\n disabled: boolean;\n getData?: () => Promise<string[]>;\n allowDataInference?: boolean;\n};\n\n// const EnumFormFields = React.memo(\nfunction EnumFormFields({\n values,\n errors,\n disabled,\n enumValuesPath,\n shouldUpdateId,\n allowDataInference,\n getData,\n }: EnumFormFieldsProps) {\n\n const {\n setFieldValue\n } = useFormex();\n\n const [lastInternalIdAdded, setLastInternalIdAdded] = React.useState<number | undefined>();\n const [editDialogIndex, setEditDialogIndex] = React.useState<number | undefined>();\n const [inferring, setInferring] = React.useState(false);\n\n const inferredValuesRef = React.useRef(new Set());\n const inferredValues = inferredValuesRef.current;\n\n const buildEntry = ({\n index,\n internalId\n }:ArrayEntryParams) => {\n const justAdded = lastInternalIdAdded === internalId;\n const entryError = errors?.enumValues && errors?.enumValues[index];\n return <EnumEntry index={index}\n disabled={disabled}\n enumValuesPath={enumValuesPath}\n autoFocus={justAdded}\n entryError={entryError}\n shouldUpdateId={shouldUpdateId || justAdded}\n onDialogOpen={() => setEditDialogIndex(index)}\n inferredEntry={inferredValues.has(values.enumValues[index]?.id as string)}\n key={`${internalId}`}/>;\n };\n\n const inferValues = async () => {\n if (!getData)\n return;\n setInferring(true);\n getData?.().then((data) => {\n if (!data)\n return;\n\n const flatData = data.flat();\n\n const fieldData = Array.from(new Set(flatData));\n\n const currentEnumValues = values.enumValues;\n const foundEnumValues = extractEnumFromValues(fieldData);\n\n // add only new enum values\n const newEnumValues = foundEnumValues.filter((enumValue) => {\n return !currentEnumValues?.some((v: any) => v.id === enumValue.id);\n });\n\n newEnumValues.forEach((enumValue) => {\n inferredValues.add(enumValue.id);\n });\n setFieldValue(enumValuesPath, [...newEnumValues, ...currentEnumValues], true);\n }).catch(e => {\n console.error(e);\n })\n .finally(() => setInferring(false));\n }\n\n return (\n <div className={\"col-span-12\"}>\n <div className=\"ml-3.5 flex flex-row items-center\">\n <ListIcon/>\n <Typography variant={\"subtitle2\"}\n className=\"ml-2 grow\">\n Values\n </Typography>\n {allowDataInference &&\n <Button loading={inferring}\n disabled={disabled || inferring}\n variant={\"text\"}\n size={\"small\"}\n onClick={inferValues}>\n {inferring ? <CircularProgress size={\"smallest\"}/> : <AutorenewIcon/>}\n Infer values from data\n </Button>}\n </div>\n\n <Paper className=\"p-4 m-1\">\n\n <ArrayContainer droppableId={enumValuesPath}\n addLabel={\"Add enum value\"}\n value={values.enumValues}\n disabled={disabled}\n size={\"small\"}\n buildEntry={buildEntry}\n onInternalIdAdded={setLastInternalIdAdded}\n canAddElements={true}\n onValueChange={(value) => setFieldValue(enumValuesPath, value)}\n newDefaultEntry={{ id: \"\", label: \"\" }}/>\n\n <EnumEntryDialog index={editDialogIndex}\n open={editDialogIndex !== undefined}\n enumValuesPath={enumValuesPath}\n onClose={() => setEditDialogIndex(undefined)}/>\n </Paper>\n </div>\n );\n}\n\ntype EnumEntryProps = {\n index: number,\n enumValuesPath: string,\n shouldUpdateId: boolean,\n autoFocus: boolean,\n onDialogOpen: () => void;\n disabled: boolean;\n inferredEntry?: boolean;\n entryError?: { label?: string, id?: string }\n};\n\nconst EnumEntry = React.memo(\n function EnumEntryInternal({\n index,\n shouldUpdateId: updateId,\n enumValuesPath,\n autoFocus,\n onDialogOpen,\n disabled,\n inferredEntry,\n entryError\n }: EnumEntryProps) {\n\n const {\n values,\n handleChange,\n errors,\n setFieldValue,\n touched\n } = useFormex<EnumValues>();\n\n const shouldUpdateIdRef = React.useRef(!getIn(values, `${enumValuesPath}[${index}].id`));\n const shouldUpdateId = updateId || shouldUpdateIdRef.current;\n\n const idValue = getIn(values, `${enumValuesPath}[${index}].id`);\n const labelValue = getIn(values, `${enumValuesPath}[${index}].label`);\n\n const currentLabelRef = React.useRef(labelValue);\n\n React.useEffect(() => {\n if ((currentLabelRef.current === idValue || !idValue) && shouldUpdateId) {\n setFieldValue(`${enumValuesPath}[${index}].id`, labelValue);\n }\n currentLabelRef.current = labelValue;\n }, [labelValue]);\n\n return (\n <>\n <div className={\"flex w-full align-center justify-center\"}>\n <Field name={`${enumValuesPath}[${index}].label`}\n as={DebouncedTextField}\n className={\"flex-grow\"}\n required\n disabled={disabled}\n size=\"small\"\n autoFocus={autoFocus}\n autoComplete=\"off\"\n endAdornment={inferredEntry && <AutorenewIcon size={\"small\"}/>}\n error={Boolean(entryError?.label)}/>\n\n {!disabled &&\n <Badge color={\"error\"} invisible={!entryError?.id}>\n <IconButton\n size=\"small\"\n aria-label=\"edit\"\n className={\"m-1\"}\n onClick={() => onDialogOpen()}>\n <SettingsIcon size={\"small\"}/>\n </IconButton>\n </Badge>}\n\n </div>\n\n {entryError?.label && <Typography variant={\"caption\"}\n className={\"ml-3.5 text-red-500 dark:text-red-500\"}>\n {entryError?.label}\n </Typography>}\n\n {entryError?.id && <Typography variant={\"caption\"}\n className={\"ml-3.5 text-red-500 dark:text-red-500\"}>\n {entryError?.id}\n </Typography>}\n\n </>);\n },\n function areEqual(prevProps: EnumEntryProps, nextProps: EnumEntryProps) {\n return prevProps.index === nextProps.index &&\n prevProps.enumValuesPath === nextProps.enumValuesPath &&\n prevProps.shouldUpdateId === nextProps.shouldUpdateId &&\n prevProps.inferredEntry === nextProps.inferredEntry &&\n equal(prevProps.entryError, nextProps.entryError) &&\n prevProps.autoFocus === nextProps.autoFocus;\n }\n);\n\nfunction EnumEntryDialog({\n index,\n open,\n onClose,\n enumValuesPath\n }: {\n index?: number;\n open: boolean;\n enumValuesPath: string;\n onClose: () => void;\n}) {\n\n const {\n errors,\n } = useFormex<EnumValues>();\n\n const idError = index !== undefined ? getIn(errors, `${enumValuesPath}[${index}].id`) : undefined;\n return <Dialog\n maxWidth=\"md\"\n aria-labelledby=\"enum-edit-dialog\"\n open={open}\n onOpenChange={(open) => !open ? onClose() : undefined}\n >\n <DialogTitle hidden>Enum form dialog</DialogTitle>\n <DialogContent>\n {index !== undefined &&\n <div>\n <Field name={`${enumValuesPath}[${index}].id`}\n as={DebouncedTextField}\n required\n label={\"ID\"}\n size=\"small\"\n autoComplete=\"off\"\n error={Boolean(idError)}/>\n\n <FieldCaption error={Boolean(idError)}>\n {idError ?? \"Value saved in the data source\"}\n </FieldCaption>\n </div>}\n </DialogContent>\n\n <DialogActions>\n <Button\n autoFocus\n variant=\"outlined\"\n onClick={onClose}\n color=\"primary\">\n Ok\n </Button>\n </DialogActions>\n\n </Dialog>\n}\n\n","import React from \"react\";\n\nimport { BooleanSwitchWithLabel, Tooltip } from \"@firecms/ui\";\nimport { FormexFieldProps } from \"@firecms/formex\";\n\nexport function SwitchControl({\n field,\n form,\n label,\n tooltip,\n disabled,\n size = \"small\",\n allowIndeterminate\n }: FormexFieldProps & {\n label: string,\n tooltip?: string,\n disabled?: boolean,\n size?: \"small\" | \"medium\",\n allowIndeterminate?: boolean\n}) {\n\n const formControlLabel = <BooleanSwitchWithLabel\n label={label}\n size={size}\n position={\"start\"}\n value={field.value}\n disabled={disabled}\n allowIndeterminate={allowIndeterminate}\n onValueChange={(checked:boolean | null) => form.setFieldValue(field.name, checked)}/>;\n\n if (tooltip)\n return (\n <Tooltip\n title={tooltip}>\n {formControlLabel}\n </Tooltip>\n );\n return formControlLabel;\n}\n","import React from \"react\";\n\nimport { Field, FormexFieldProps, getIn, useFormex } from \"@firecms/formex\";\nimport { DebouncedTextField } from \"@firecms/ui\";\nimport { SwitchControl } from \"../../SwitchControl\";\n\nexport function GeneralPropertyValidation({ disabled }: {\n required?: boolean;\n disabled: boolean;\n}) {\n\n const { values, handleChange } = useFormex();\n\n const validationRequired = \"validation.required\";\n const validationRequiredMessage = \"validation.requiredMessage\";\n const validationUnique = \"validation.unique\";\n const validationUniqueInArray = \"validation.uniqueInArray\";\n\n return (\n <>\n <div className={\"col-span-6\"}>\n <Field name={validationRequired}\n type=\"checkbox\">\n {({ field, form }: FormexFieldProps) => {\n return <SwitchControl\n disabled={disabled}\n label={\"Required\"}\n tooltip={\"You won't be able to save this entity if this value is not set\"}\n form={form}\n field={field}/>\n }}\n </Field>\n </div>\n\n <div className={\"col-span-6\"}>\n\n <Field name={validationUnique}\n type=\"checkbox\">\n {({ field, form }: FormexFieldProps) => {\n return <SwitchControl\n disabled={disabled}\n label={\"Unique\"}\n tooltip={\"There cannot be multiple entities with the same value\"}\n form={form}\n field={field}/>\n }}\n </Field>\n </div>\n\n {getIn(values, validationRequired) && <div className={\"col-span-12\"}>\n <DebouncedTextField\n disabled={disabled}\n value={getIn(values, validationRequiredMessage)}\n label={\"Required message\"}\n name={validationRequiredMessage}\n size=\"small\"\n onChange={handleChange}/>\n </div>}\n </>\n );\n}\n","import React from \"react\";\n\nimport { Field, FormexFieldProps, getIn, useFormex } from \"@firecms/formex\";\nimport { FieldCaption, serializeRegExp } from \"@firecms/core\";\nimport { DebouncedTextField, } from \"@firecms/ui\";\nimport { GeneralPropertyValidation } from \"./GeneralPropertyValidation\";\nimport { SwitchControl } from \"../../SwitchControl\";\n\nexport function StringPropertyValidation({\n length,\n lowercase,\n matches,\n max,\n min,\n trim,\n uppercase,\n disabled,\n showErrors\n }: {\n length?: boolean;\n min?: boolean;\n max?: boolean;\n trim?: boolean;\n matches?: boolean;\n lowercase?: boolean;\n uppercase?: boolean;\n disabled: boolean;\n showErrors: boolean;\n}) {\n\n const {\n values,\n handleChange,\n errors\n } = useFormex();\n\n const validationLength = \"validation.length\";\n const validationMin = \"validation.min\";\n const validationMax = \"validation.max\";\n const validationTrim = \"validation.trim\";\n const validationMatches = \"validation.matches\";\n const validationLowercase = \"validation.lowercase\";\n const validationUppercase = \"validation.uppercase\";\n\n const matchesError = getIn(errors, validationMatches);\n\n const matchesValue = getIn(values, validationMatches);\n const matchesStringValue = typeof matchesValue === \"string\" ? matchesValue : serializeRegExp(matchesValue);\n return (\n <div className={\"grid grid-cols-12 gap-2\"}>\n\n <GeneralPropertyValidation disabled={disabled}/>\n\n <div className={\"grid grid-cols-12 gap-2 col-span-12\"}>\n\n {lowercase && <div className={\"col-span-4\"}>\n <Field name={validationLowercase}\n type=\"checkbox\">\n {({ field, form }: FormexFieldProps) => {\n return <SwitchControl\n label={\"Lowercase\"}\n disabled={disabled}\n form={form}\n field={field}/>\n }}\n </Field>\n </div>}\n\n {uppercase && <div className={\"col-span-4\"}>\n <Field name={validationUppercase}\n type=\"checkbox\">\n {({ field, form }: FormexFieldProps) => {\n return <SwitchControl\n label={\"Uppercase\"}\n disabled={disabled}\n form={form}\n field={field}/>\n }}\n </Field>\n </div>}\n\n {trim && <div className={\"col-span-4\"}>\n <Field name={validationTrim}\n type=\"checkbox\">\n {({ field, form }: FormexFieldProps) => {\n return <SwitchControl\n label={\"Trim\"}\n disabled={disabled}\n form={form}\n field={field}/>\n }}\n </Field>\n </div>}\n\n </div>\n\n <div className={\"grid grid-cols-12 gap-2 col-span-12\"}>\n {length && <div className={\"col-span-4\"}>\n <DebouncedTextField\n value={getIn(values, validationLength)}\n label={\"Exact length\"}\n name={validationLength}\n type=\"number\"\n size=\"small\"\n\n disabled={disabled}\n onChange={handleChange}/>\n </div>}\n\n {min && <div className={\"col-span-4\"}>\n <DebouncedTextField value={getIn(values, validationMin)}\n label={\"Min length\"}\n name={validationMin}\n type=\"number\"\n size=\"small\"\n\n disabled={disabled}\n onChange={handleChange}/>\n </div>}\n\n {max && <div className={\"col-span-4\"}>\n <DebouncedTextField value={getIn(values, validationMax)}\n label={\"Max length\"}\n name={validationMax}\n type=\"number\"\n size=\"small\"\n\n disabled={disabled}\n onChange={handleChange}/>\n </div>}\n\n </div>\n\n {matches && <div className={\"col-span-12\"}>\n <Field name={validationMatches}\n as={DebouncedTextField}\n label={\"Matches regex\"}\n size=\"small\"\n disabled={disabled}\n value={matchesStringValue}\n error={Boolean(matchesError)}/>\n <FieldCaption error={Boolean(matchesError)}>\n {matchesError ? \"Not a valid regexp\" : \"e.g. /^\\\\d+$/ for digits only\"}\n </FieldCaption>\n </div>}\n\n </div>\n );\n\n}\n","import React from \"react\";\n\nimport { getIn, useFormex } from \"@firecms/formex\";\nimport { DebouncedTextField } from \"@firecms/ui\";\nimport { GeneralPropertyValidation } from \"./GeneralPropertyValidation\";\n\nexport function ArrayPropertyValidation({\n max = true,\n min = true,\n disabled\n }: {\n min?: boolean;\n max?: boolean;\n disabled: boolean;\n}) {\n\n const {\n values,\n handleChange\n } = useFormex();\n\n const validationMin = \"validation.min\";\n const validationMax = \"validation.max\";\n\n return (\n <div className={\"grid grid-cols-12 gap-2\"}>\n\n <GeneralPropertyValidation disabled={disabled}/>\n\n {min && <div className={\"col-span-6\"}>\n <DebouncedTextField value={getIn(values, validationMin)}\n disabled={disabled}\n label={\"Min length\"}\n name={validationMin}\n type=\"number\"\n size=\"small\"\n onChange={handleChange}/>\n </div>}\n {max && <div className={\"col-span-6\"}>\n <DebouncedTextField value={getIn(values, validationMax)}\n disabled={disabled}\n label={\"Max length\"}\n name={validationMax}\n type=\"number\"\n size=\"small\"\n onChange={handleChange}/>\n </div>}\n </div>\n );\n}\n","import { PropsWithChildren } from \"react\";\n\nimport { ExpandablePanel, RuleIcon, Typography } from \"@firecms/ui\";\n\nexport function ValidationPanel({\n children\n }: PropsWithChildren<{}>) {\n\n return (\n <ExpandablePanel\n initiallyExpanded={false}\n asField={true}\n innerClassName=\"p-4\"\n title={\n <div className=\"flex flex-row text-surface-500\">\n <RuleIcon/>\n <Typography variant={\"subtitle2\"}\n className=\"ml-2\">\n Validation\n </Typography>\n </div>\n }>\n\n {children}\n\n </ExpandablePanel>\n )\n}\n","import React, { useMemo } from \"react\";\nimport { getIn, useFormex } from \"@firecms/formex\";\nimport { EnumValueConfig, resolveEnumValues, useSnackbarController } from \"@firecms/core\";\nimport { Select, SelectItem } from \"@firecms/ui\";\nimport { EnumForm } from \"../EnumForm\";\nimport { StringPropertyValidation } from \"./validation/StringPropertyValidation\";\nimport { ArrayPropertyValidation } from \"./validation/ArrayPropertyValidation\";\nimport { ValidationPanel } from \"./validation/ValidationPanel\";\nimport { PropertyWithId } from \"../PropertyEditView\";\n\nexport function EnumPropertyField({\n multiselect,\n updateIds,\n disabled,\n showErrors,\n allowDataInference,\n getData\n }: {\n multiselect: boolean;\n updateIds: boolean;\n disabled: boolean;\n showErrors: boolean;\n allowDataInference?: boolean;\n getData?: () => Promise<object[]>;\n}) {\n\n const {\n values,\n setFieldError,\n setFieldValue\n } = useFormex<PropertyWithId>();\n\n const snackbarContext = useSnackbarController();\n\n const enumValuesPath = multiselect ? \"of.enumValues\" : \"enumValues\";\n\n const defaultValue = getIn(values, \"defaultValue\");\n\n const valuesEnumValues = getIn(values, enumValuesPath);\n const enumValues: EnumValueConfig[] = useMemo(() => {\n if (!valuesEnumValues || typeof valuesEnumValues === \"boolean\")\n return [] as EnumValueConfig[];\n return resolveEnumValues(valuesEnumValues) ?? [] as EnumValueConfig[];\n }, [valuesEnumValues]);\n\n const onValuesChanged = (value: EnumValueConfig[]) => {\n if (!values)\n return;\n setFieldValue(enumValuesPath, value);\n if (!multiselect) {\n const enumIds = value.filter(v => Boolean(v?.id)).map((v: any) => v.id);\n if (defaultValue && !enumIds.includes(defaultValue)) {\n setFieldValue(\"defaultValue\", undefined);\n snackbarContext.open({\n type: \"warning\",\n message: \"Default value was cleared\"\n })\n }\n }\n };\n\n return (\n <>\n <div className={\"col-span-12\"}>\n <EnumForm enumValues={enumValues}\n updateIds={updateIds}\n disabled={disabled}\n allowDataInference={allowDataInference}\n onError={(hasError) => {\n setFieldError(enumValuesPath, hasError ? \"This enum property is missing some values\" : undefined);\n }}\n getData={getData\n ? () => getData()\n .then(res => res.map(entry => values.id && getIn(entry, values.id)).filter(Boolean))\n : undefined}\n onValuesChanged={onValuesChanged}/>\n </div>\n\n <div className={\"col-span-12\"}>\n\n <ValidationPanel>\n {!multiselect &&\n <StringPropertyValidation disabled={disabled}\n showErrors={showErrors}/>}\n {multiselect &&\n <ArrayPropertyValidation disabled={disabled}/>}\n </ValidationPanel>\n\n </div>\n\n {!multiselect && <div className={\"col-span-12\"}>\n\n <Select\n disabled={disabled}\n position={\"item-aligned\"}\n fullWidth={true}\n onValueChange={(value: string) => {\n setFieldValue(\"defaultValue\", value);\n }}\n size={\"large\"}\n label={\"Default value\"}\n value={defaultValue ?? \"\"}>\n {enumValues\n .filter((enumValue) => Boolean(enumValue?.id))\n .map((enumValue) => (\n <SelectItem key={enumValue.id}\n value={enumValue.id?.toString()}>\n {enumValue.label}\n </SelectItem>\n ))}\n </Select>\n\n </div>}\n </>\n );\n}\n","import React from \"react\";\nimport {\n Button,\n CloudUploadIcon,\n DebouncedTextField,\n ExpandablePanel,\n MultiSelect,\n MultiSelectItem,\n Typography\n} from \"@firecms/ui\";\n\nimport { Field, FormexFieldProps, getIn, useFormex } from \"@firecms/formex\";\nimport { GeneralPropertyValidation } from \"./validation/GeneralPropertyValidation\";\nimport { ArrayPropertyValidation } from \"./validation/ArrayPropertyValidation\";\nimport { ValidationPanel } from \"./validation/ValidationPanel\";\nimport { SwitchControl } from \"../SwitchControl\";\n\nconst fileTypes: Record<string, string> = {\n \"image/*\": \"Images\",\n \"video/*\": \"Videos\",\n \"audio/*\": \"Audio files\",\n \"application/*\": \"Files (pdf, zip, csv, excel...)\",\n \"text/*\": \"Text files\"\n}\n\nexport function StoragePropertyField({\n multiple,\n existing,\n disabled\n }: {\n multiple: boolean;\n existing: boolean;\n disabled: boolean;\n}) {\n\n const {\n values,\n setFieldValue\n } = useFormex();\n\n const baseStoragePath = multiple ? \"of.storage\" : \"storage\";\n const acceptedFiles = `${baseStoragePath}.acceptedFiles`;\n\n const metadata = `${baseStoragePath}.metadata`;\n const fileName = `${baseStoragePath}.fileName`;\n const maxSize = `${baseStoragePath}.maxSize`;\n const storagePath = `${baseStoragePath}.storagePath`;\n const storeUrl = `${baseStoragePath}.storeUrl`;\n\n const fileNameValue = getIn(values, fileName) ?? \"{rand}_{file}\";\n const storagePathValue = getIn(values, storagePath) ?? \"/\";\n const maxSizeValue = getIn(values, maxSize);\n\n const storedValue = getIn(values, acceptedFiles);\n const fileTypesValue: string[] | undefined = Array.isArray(storedValue) ? storedValue : undefined;\n const allFileTypesSelected = !fileTypesValue || fileTypesValue.length === 0;\n\n const handleTypesChange = (value: string[]) => {\n if (!value) setFieldValue(acceptedFiles, undefined);\n // else if (value.includes(\"all\")) setFieldValue(acceptedFiles, undefined);\n // else if (value.length >= Object.keys(fileTypes).length) setFieldValue(acceptedFiles, undefined);\n // else if (allFileTypesSelected)\n // setFieldValue(acceptedFiles, Object.keys(fileTypes).filter((v) => !value.includes(v)));\n else setFieldValue(acceptedFiles, value);\n };\n\n const hasFilenameCallback = typeof fileNameValue === \"function\";\n const hasStoragePathCallback = typeof storagePathValue === \"function\";\n\n return (\n <>\n\n <div className={\"col-span-12\"}>\n\n <ExpandablePanel\n title={\n <div className=\"flex flex-row text-surface-500\">\n <CloudUploadIcon/>\n <Typography variant={\"subtitle2\"}\n className=\"ml-2\">\n File upload config\n </Typography>\n </div>\n }>\n\n <div className={\"grid grid-cols-12 gap-2 p-4\"}>\n\n <div className={\"col-span-12\"}>\n\n <MultiSelect\n className={\"w-full\"}\n placeholder={\"All file types allowed\"}\n disabled={disabled}\n name={acceptedFiles}\n value={fileTypesValue ?? []}\n onValueChange={handleTypesChange}\n label={allFileTypesSelected ? undefined : \"Allowed file types\"}\n renderValues={(selected) => {\n if (!selected || selected.length === 0) return \"All file types allowed\";\n return selected.map((v: string) => fileTypes[v])\n .filter((v: string) => Boolean(v))\n .join(\", \");\n }}>\n\n {Object.entries(fileTypes).map(([value, label]) => (\n <MultiSelectItem key={value} value={value} className={\"flex items-center gap-2\"}>\n {/*<Checkbox*/}\n {/* checked={allFileTypesSelected || fileTypesValue.indexOf(value) > -1}/>*/}\n <div className={\"flex-grow\"}>\n {label}\n </div>\n <Button size={\"small\"}\n variant={\"text\"}\n onClick={(e) => {\n e.preventDefault();\n e.stopPropagation();\n return setFieldValue(acceptedFiles, [value]);\n }}>\n Only\n </Button>\n </MultiSelectItem>\n ))}\n\n </MultiSelect>\n </div>\n\n <div className={\"col-span-12\"}>\n <Field name={fileName}\n as={DebouncedTextField}\n label={\"File name\"}\n size={\"small\"}\n disabled={hasFilenameCallback || disabled}\n value={hasFilenameCallback ? \"-\" : fileNameValue}\n />\n </div>\n <div className={\"col-span-12\"}>\n <Field name={storagePath}\n as={DebouncedTextField}\n label={\"Storage path\"}\n disabled={hasStoragePathCallback || disabled}\n size={\"small\"}\n value={hasStoragePathCallback ? \"-\" : storagePathValue}\n />\n <Typography variant={\"caption\"} className={\"ml-3.5 mt-1 mb-2\"}>\n <p>You can use the following placeholders in\n the file name\n and storage path values:</p>\n <ul>\n <li>{\"{file} - Full name of the uploaded file\"}</li>\n <li>{\"{file.name} - Name of the uploaded file without extension\"}</li>\n <li>{\"{file.ext} - Extension of the uploaded file\"}</li>\n <li>{\"{entityId} - ID of the entity\"}</li>\n <li>{\"{propertyKey} - ID of this field\"}</li>\n <li>{\"{path} - Path of this entity\"}</li>\n <li>{\"{rand} - Random value used to avoid name collisions\"}</li>\n </ul>\n </Typography>\n\n <Field name={storeUrl}\n type=\"checkbox\">\n {({\n field,\n form\n }: FormexFieldProps) => {\n return <SwitchControl\n label={\"Save URL instead of storage path\"}\n disabled={existing || disabled}\n form={form}\n field={field}/>\n }}\n </Field>\n\n <Typography variant={\"caption\"} className={\"ml-3.5 mt-1 mb-2\"}>\n Turn this setting on, if you prefer to save\n the download\n URL of the uploaded file instead of the\n storage path.\n You can only change this prop upon creation.\n </Typography>\n </div>\n\n <div className={\"col-span-12\"}>\n <DebouncedTextField name={maxSize}\n type={\"number\"}\n label={\"Max size (in bytes)\"}\n size={\"small\"}\n value={maxSizeValue !== undefined && maxSizeValue !== null ? maxSizeValue.toString() : \"\"}\n onChange={(e) => {\n const value = e.target.value;\n if (value === \"\") setFieldValue(maxSize, undefined);\n else setFieldValue(maxSize, parseInt(value));\n }}\n />\n </div>\n\n </div>\n </ExpandablePanel>\n\n </div>\n\n <div className={\"col-span-12\"}>\n\n <ValidationPanel>\n {!multiple && <div className={\"grid grid-cols-12 gap-2\"}>\n <GeneralPropertyValidation disabled={disabled}/>\n </div>}\n {multiple && <div className={\"col-span-12\"}>\n <ArrayPropertyValidation disabled={disabled}/>\n </div>}\n </ValidationPanel>\n\n </div>\n </>\n );\n}\n","import { isPropertyBuilder, Properties, PropertiesOrBuilders, Property, PropertyOrBuilder } from \"@firecms/core\";\n\nexport function editableProperty(property: PropertyOrBuilder | PropertyOrBuilder): boolean {\n if (isPropertyBuilder(property))\n return false;\n if (isPropertyBuilder(property as PropertyOrBuilder))\n return false;\n else {\n const eProperty = property as Property;\n if (eProperty.dataType === \"array\" && typeof eProperty.of === \"function\")\n return false;\n else if (eProperty.dataType === \"array\" && Array.isArray(eProperty.of))\n return false;\n return Boolean(eProperty.editable);\n }\n}\n\nexport function removeNonEditableProperties(properties: PropertiesOrBuilders<any>): Properties {\n return Object.entries(properties)\n .filter(([_, property]) => editableProperty(property))\n .map(([key, propertyOrBuilder]) => {\n const property = propertyOrBuilder as Property;\n if (!editableProperty(property)) {\n return undefined;\n } else if (property.dataType === \"map\" && property.properties) {\n return {\n [key]: {\n ...property,\n properties: removeNonEditableProperties(property.properties as PropertiesOrBuilders)\n }\n };\n } else {\n return { [key]: property };\n }\n })\n .filter((e) => Boolean(e))\n .reduce((a, b) => ({ ...a, ...b }), {}) as Properties;\n}\n","import {\n ErrorBoundary,\n getFieldConfig,\n isPropertyBuilder,\n Property,\n PropertyConfigBadge,\n PropertyOrBuilder,\n useCustomizationController,\n} from \"@firecms/core\";\nimport {\n cardClickableMixin,\n cardMixin,\n cardSelectedMixin,\n cls,\n DoNotDisturbOnIcon,\n FunctionsIcon,\n Paper,\n Typography,\n} from \"@firecms/ui\";\n\nimport { editableProperty } from \"../../utils/entities\";\n\nexport function PropertyFieldPreview({\n property,\n onClick,\n hasError,\n includeName,\n includeEditButton,\n selected\n }: {\n property: Property,\n hasError?: boolean,\n selected?: boolean,\n includeName?: boolean,\n includeEditButton?: boolean;\n onClick?: () => void\n}) {\n\n const { propertyConfigs } = useCustomizationController();\n\n const propertyConfig = getFieldConfig(property, propertyConfigs);\n const disabled = !editableProperty(property);\n\n const borderColorClass = hasError\n ? \"border-red-500 dark:border-red-500 border-opacity-100 dark:border-opacity-100 ring-0 dark:ring-0\"\n : (selected ? \"border-primary\" : \"border-transparent\");\n\n return <ErrorBoundary>\n <div\n onClick={onClick}\n className=\"flex flex-row w-full cursor-pointer\">\n <div className={\"m-4\"}>\n <PropertyConfigBadge propertyConfig={propertyConfig}/>\n </div>\n <Paper\n className={cls(\n \"m-1\",\n \"border\",\n \"pl-2 w-full flex flex-row gap-4 items-center\",\n cardMixin,\n onClick ? cardClickableMixin : \"\",\n selected ? cardSelectedMixin : \"\",\n \"flex-grow p-4 border transition-colors duration-200\",\n borderColorClass\n )}\n >\n\n <div className=\"w-full flex flex-col\">\n\n {includeName &&\n <ErrorBoundary>\n <Typography variant=\"body1\"\n component=\"span\"\n className=\"flex-grow pr-2\">\n {property.name\n ? property.name\n : \"\\u00a0\"\n }\n </Typography>\n </ErrorBoundary>}\n\n <div className=\"flex flex-row items-center\">\n <ErrorBoundary>\n <Typography className=\"flex-grow pr-2\"\n variant={includeName ? \"body2\" : \"subtitle1\"}\n component=\"span\"\n color=\"secondary\">\n {propertyConfig?.name}\n </Typography>\n </ErrorBoundary>\n <ErrorBoundary>\n <Typography variant=\"body2\"\n component=\"span\"\n color=\"disabled\">\n {property.dataType}\n </Typography>\n </ErrorBoundary>\n\n </div>\n </div>\n\n {includeEditButton && <Typography variant={\"button\"}>\n EDIT\n </Typography>}\n\n </Paper>\n </div>\n </ErrorBoundary>\n}\n\nexport function NonEditablePropertyPreview({\n name,\n selected,\n onClick,\n property\n }: {\n name: string,\n selected: boolean,\n onClick?: () => void,\n property?: PropertyOrBuilder\n}) {\n\n const { propertyConfigs } = useCustomizationController();\n\n const propertyConfig = !isPropertyBuilder(property) && property ? getFieldConfig(property, propertyConfigs) : undefined;\n\n return (\n <div\n onClick={onClick}\n className=\"flex flex-row w-full cursor-pointer\">\n <div className={\"relative m-4\"}>\n {propertyConfig && <PropertyConfigBadge propertyConfig={propertyConfig}/>}\n {!propertyConfig && <div\n className={\"h-8 w-8 p-1 rounded-full shadow text-white bg-surface-500\"}>\n <FunctionsIcon color={\"inherit\"} size={\"medium\"}/>\n </div>}\n <DoNotDisturbOnIcon color={\"disabled\"} size={\"small\"} className={\"absolute -right-2 -top-2\"}/>\n </div>\n <Paper\n className={cls(\n \"pl-2 w-full flex flex-row gap-4 items-center\",\n cardMixin,\n onClick ? cardClickableMixin : \"\",\n selected ? cardSelectedMixin : \"\",\n \"flex-grow p-4 border transition-colors duration-200\",\n selected ? \"border-primary\" : \"border-transparent\")}\n >\n\n <div className=\"w-full flex flex-col\">\n <Typography variant=\"body1\"\n component=\"span\"\n className=\"flex-grow pr-2\">\n {property?.name\n ? property.name\n : name\n }\n </Typography>\n\n <div className=\"flex flex-row items-center\">\n {propertyConfig && <Typography className=\"flex-grow pr-2\"\n variant={\"body2\"}\n component=\"span\"\n color=\"secondary\">\n {propertyConfig?.name}\n </Typography>}\n\n {property && !isPropertyBuilder(property) && <ErrorBoundary>\n <Typography variant=\"body2\"\n component=\"span\"\n color=\"disabled\">\n {property.dataType}\n </Typography>\n </ErrorBoundary>}\n\n {property && isPropertyBuilder(property) && <ErrorBoundary>\n <Typography variant=\"body2\"\n component=\"span\"\n color=\"disabled\">\n This property is defined as a property builder in code\n </Typography>\n </ErrorBoundary>}\n\n {!property && <ErrorBoundary>\n <Typography variant=\"body2\"\n component=\"span\"\n color=\"disabled\">\n This field is defined as an additional field in code\n </Typography>\n </ErrorBoundary>}\n\n </div>\n\n {/*<div className=\"flex flex-row text-xs\">*/}\n {/* <Typography className=\"flex-grow pr-2\"*/}\n {/* variant=\"body2\"*/}\n {/* component=\"span\"*/}\n {/* color=\"secondary\">*/}\n {/* This field can only be edited in code*/}\n {/* </Typography>*/}\n {/*</div>*/}\n </div>\n\n </Paper>\n </div>)\n}\n","import React from \"react\";\nimport equal from \"react-fast-compare\"\n\nimport {\n AdditionalFieldDelegate,\n CMSType,\n isPropertyBuilder,\n PropertiesOrBuilders,\n PropertyOrBuilder\n} from \"@firecms/core\";\nimport { AutorenewIcon, defaultBorderMixin, DragHandleIcon, IconButton, RemoveIcon, Tooltip } from \"@firecms/ui\";\nimport { NonEditablePropertyPreview, PropertyFieldPreview } from \"./PropertyFieldPreview\";\nimport {\n closestCenter,\n DndContext,\n DragEndEvent,\n KeyboardSensor,\n PointerSensor,\n useSensor,\n useSensors\n} from \"@dnd-kit/core\";\nimport {\n SortableContext,\n sortableKeyboardCoordinates,\n useSortable,\n verticalListSortingStrategy\n} from \"@dnd-kit/sortable\";\nimport { restrictToVerticalAxis } from \"@dnd-kit/modifiers\";\n\nimport { CSS } from \"@dnd-kit/utilities\";\nimport { getFullId, getFullIdPath } from \"./util\";\nimport { editableProperty } from \"../../utils/entities\";\n\nexport const PropertyTree = React.memo(\n function PropertyTree<M extends {\n [Key: string]: CMSType\n }>({\n namespace,\n selectedPropertyKey,\n onPropertyClick,\n properties,\n propertiesOrder: propertiesOrderProp,\n additionalFields,\n errors,\n onPropertyMove,\n onPropertyRemove,\n className,\n inferredPropertyKeys,\n collectionEditable\n }: {\n namespace?: string;\n selectedPropertyKey?: string;\n onPropertyClick?: (propertyKey: string, namespace?: string) => void;\n properties: PropertiesOrBuilders<M>;\n propertiesOrder?: string[];\n additionalFields?: AdditionalFieldDelegate<M>[];\n errors: Record<string, any>;\n onPropertyMove?: (propertiesOrder: string[], namespace?: string) => void;\n onPropertyRemove?: (propertyKey: string, namespace?: string) => void;\n className?: string;\n inferredPropertyKeys?: string[];\n collectionEditable: boolean;\n }) {\n\n const propertiesOrder = propertiesOrderProp ?? Object.keys(properties);\n\n const sensors = useSensors(\n useSensor(PointerSensor, {\n activationConstraint: {\n distance: 5,\n }\n }),\n useSensor(KeyboardSensor, {\n coordinateGetter: sortableKeyboardCoordinates,\n })\n );\n\n const handleDragEnd = (event: DragEndEvent) => {\n const {\n active,\n over\n } = event;\n\n if (!over || active.id === over.id) {\n return;\n }\n\n const activeId = String(active.id);\n const overId = String(over.id);\n\n // Extract property keys from the full IDs\n const activeKey = activeId.includes(\".\") ? activeId.split(\".\").pop() : activeId;\n const overKey = overId.includes(\".\") ? overId.split(\".\").pop() : overId;\n\n if (!activeKey || !overKey) return;\n\n const oldIndex = propertiesOrder.indexOf(activeKey);\n const newIndex = propertiesOrder.indexOf(overKey);\n\n if (oldIndex !== -1 && newIndex !== -1) {\n const newPropertiesOrder = [...propertiesOrder];\n const [removed] = newPropertiesOrder.splice(oldIndex, 1);\n newPropertiesOrder.splice(newIndex, 0, removed);\n\n if (onPropertyMove) {\n onPropertyMove(newPropertiesOrder, namespace);\n }\n }\n };\n\n const items = propertiesOrder.map(key => getFullId(key, namespace));\n\n return (\n <DndContext\n sensors={sensors}\n collisionDetection={closestCenter}\n onDragEnd={handleDragEnd}\n modifiers={[restrictToVerticalAxis]}\n >\n <SortableContext\n items={items}\n strategy={verticalListSortingStrategy}\n >\n <div className={className}>\n\n {propertiesOrder && propertiesOrder\n .map((propertyKey: string, index: number) => {\n const property = properties[propertyKey] as PropertyOrBuilder;\n const additionalField = additionalFields?.find(field => field.key === propertyKey);\n\n if (!property && !additionalField) {\n console.warn(`Property ${propertyKey} not found in properties or additionalFields`);\n return null;\n }\n\n const id = getFullId(propertyKey, namespace);\n\n return (\n <PropertyTreeEntry\n key={id}\n id={id}\n propertyKey={propertyKey}\n propertyOrBuilder={property}\n additionalField={additionalField}\n errors={errors}\n namespace={namespace}\n inferredPropertyKeys={inferredPropertyKeys}\n onPropertyMove={onPropertyMove}\n onPropertyRemove={onPropertyRemove}\n onPropertyClick={onPropertyClick}\n selectedPropertyKey={selectedPropertyKey}\n collectionEditable={collectionEditable}\n />\n );\n }).filter(Boolean)}\n </div>\n </SortableContext>\n </DndContext>\n );\n },\n equal\n);\n\nexport function PropertyTreeEntry({\n id,\n propertyKey,\n namespace,\n propertyOrBuilder,\n additionalField,\n selectedPropertyKey,\n errors,\n onPropertyClick,\n onPropertyMove,\n onPropertyRemove,\n inferredPropertyKeys,\n collectionEditable\n }: {\n id: string;\n propertyKey: string;\n namespace?: string;\n propertyOrBuilder: PropertyOrBuilder;\n additionalField?: AdditionalFieldDelegate<any>;\n selectedPropertyKey?: string;\n errors: Record<string, any>;\n onPropertyClick?: (propertyKey: string, namespace?: string) => void;\n onPropertyMove?: (propertiesOrder: string[], namespace?: string) => void;\n onPropertyRemove?: (propertyKey: string, namespace?: string) => void;\n inferredPropertyKeys?: string[];\n collectionEditable: boolean;\n}) {\n\n const {\n attributes,\n listeners,\n setNodeRef,\n transform,\n transition,\n isDragging\n } = useSortable({\n id\n });\n\n const style = {\n // Key change: use Translate instead of Transform to prevent stretching\n transform: CSS.Translate.toString(transform),\n transition,\n zIndex: isDragging ? 10 : undefined,\n position: \"relative\" as const,\n };\n\n const isPropertyInferred = inferredPropertyKeys?.includes(namespace ? `${namespace}.${propertyKey}` : propertyKey);\n const fullId = id;\n const fullIdPath = getFullIdPath(propertyKey, namespace);\n const hasError = fullIdPath in errors;\n\n let subtree;\n if (typeof propertyOrBuilder === \"object\") {\n const property = propertyOrBuilder;\n if (property.dataType === \"map\" && property.properties) {\n subtree = <PropertyTree\n selectedPropertyKey={selectedPropertyKey}\n namespace={fullId}\n properties={property.properties}\n propertiesOrder={property.propertiesOrder}\n errors={errors}\n onPropertyClick={onPropertyClick}\n onPropertyMove={onPropertyMove}\n onPropertyRemove={onPropertyRemove}\n collectionEditable={collectionEditable}\n />\n }\n }\n\n const selected = selectedPropertyKey === fullId;\n const editable = propertyOrBuilder && ((collectionEditable && !isPropertyBuilder(propertyOrBuilder)) || editableProperty(propertyOrBuilder));\n\n return (\n <div\n ref={setNodeRef}\n style={style}\n className=\"relative -ml-8\"\n >\n <div className=\"relative\">\n {subtree && <div\n className={\"absolute border-l \" + defaultBorderMixin}\n style={{\n left: \"32px\",\n top: \"64px\",\n bottom: \"16px\"\n }}/>}\n\n <div>\n {!isPropertyBuilder(propertyOrBuilder) && !additionalField && editable\n ? <PropertyFieldPreview\n property={propertyOrBuilder}\n onClick={onPropertyClick ? () => onPropertyClick(propertyKey, namespace) : undefined}\n includeName={true}\n selected={selected}\n hasError={hasError}/>\n : <NonEditablePropertyPreview name={propertyKey}\n property={propertyOrBuilder}\n onClick={onPropertyClick ? () => onPropertyClick(propertyKey, namespace) : undefined}\n selected={selected}/>}\n </div>\n\n <div className=\"absolute top-2 right-2 flex flex-row\">\n {isPropertyInferred && <Tooltip title={\"Inferred property\"}>\n <AutorenewIcon size=\"small\" className={\"p-2\"}/>\n </Tooltip>}\n\n {onPropertyRemove && !isPropertyInferred && <Tooltip title={\"Remove\"}\n asChild={true}>\n <IconButton size=\"small\"\n color=\"inherit\"\n onClick={() => onPropertyRemove(propertyKey, namespace)}>\n <RemoveIcon size={\"small\"}/>\n </IconButton>\n </Tooltip>}\n\n {onPropertyMove && <Tooltip title={\"Move\"}\n asChild={true}>\n <IconButton\n component={\"span\"}\n size=\"small\"\n {...attributes}\n {...listeners}\n >\n <DragHandleIcon size={\"small\"}/>\n </IconButton>\n </Tooltip>}\n\n </div>\n\n {subtree && <div className={\"ml-16\"}>{subtree}</div>}\n </div>\n </div>\n );\n}\n","import React, { useState } from \"react\";\nimport { FieldCaption, MapProperty, Property, PropertyConfig, } from \"@firecms/core\";\nimport { AddIcon, BooleanSwitchWithLabel, Button, Paper, Typography } from \"@firecms/ui\";\nimport { PropertyFormDialog } from \"../PropertyEditView\";\nimport { getIn, useFormex } from \"@firecms/formex\";\nimport { PropertyTree } from \"../PropertyTree\";\nimport { getFullId, idToPropertiesPath, namespaceToPropertiesOrderPath, namespaceToPropertiesPath } from \"../util\";\n\nexport function MapPropertyField({ disabled, getData, allowDataInference, propertyConfigs, collectionEditable }: {\n disabled: boolean;\n getData?: () => Promise<object[]>;\n allowDataInference: boolean;\n propertyConfigs: Record<string, PropertyConfig>,\n collectionEditable: boolean;\n}) {\n\n const {\n values,\n setFieldValue\n } = useFormex<MapProperty>();\n\n const [propertyDialogOpen, setPropertyDialogOpen] = useState<boolean>(false);\n const [selectedPropertyKey, setSelectedPropertyKey] = useState<string | undefined>();\n const [selectedPropertyNamespace, setSelectedPropertyNamespace] = useState<string | undefined>();\n\n const propertiesOrder = values.propertiesOrder ?? Object.keys(values.properties ?? {});\n const onPropertyCreated = ({\n id,\n property\n }: { id?: string, property: Property }) => {\n if (!id)\n throw Error();\n setFieldValue(\"properties\", {\n ...(values.properties ?? {}),\n [id]: property\n }, false);\n\n const currentPropertiesOrder = values.propertiesOrder ?? Object.keys(values.properties ?? {});\n const newPropertiesOrder = currentPropertiesOrder.includes(id) ? currentPropertiesOrder : [...currentPropertiesOrder, id];\n setFieldValue(\"propertiesOrder\", newPropertiesOrder, false);\n\n setPropertyDialogOpen(false);\n };\n\n const deleteProperty = (propertyKey?: string, namespace?: string) => {\n const fullId = propertyKey ? getFullId(propertyKey, namespace) : undefined;\n if (!fullId)\n throw Error(\"collection editor miss config\");\n\n const propertiesPath = idToPropertiesPath(fullId);\n const propertiesOrderPath = namespaceToPropertiesOrderPath(namespace);\n\n const currentPropertiesOrder: string[] = getIn(values, propertiesOrderPath) ?? Object.keys(getIn(values, namespaceToPropertiesPath(namespace)));\n\n setFieldValue(propertiesPath, undefined, false);\n setFieldValue(propertiesOrderPath, currentPropertiesOrder.filter((p) => p !== propertyKey), false);\n\n setPropertyDialogOpen(false);\n setSelectedPropertyKey(undefined);\n setSelectedPropertyNamespace(undefined);\n };\n\n const selectedPropertyFullId = selectedPropertyKey ? getFullId(selectedPropertyKey, selectedPropertyNamespace) : undefined;\n const selectedProperty = selectedPropertyFullId ? getIn(values.properties, selectedPropertyFullId.replaceAll(\".\", \".properties.\")) : undefined;\n\n const empty = !propertiesOrder || propertiesOrder.length < 1;\n\n const onPropertyMove = (propertiesOrder: string[], namespace?: string) => {\n setFieldValue(namespaceToPropertiesOrderPath(namespace), propertiesOrder, false);\n };\n\n return (\n <>\n <div className={\"col-span-12\"}>\n <div className=\"flex justify-between items-end my-4\">\n <Typography variant={\"subtitle2\"}>Properties in this group</Typography>\n <Button\n color=\"primary\"\n variant={\"outlined\"}\n onClick={() => setPropertyDialogOpen(true)}\n startIcon={<AddIcon/>}\n >\n Add property to {values.name ?? \"this group\"}\n </Button>\n </div>\n <Paper className=\"p-2 pl-8\">\n <PropertyTree\n properties={values.properties ?? {}}\n propertiesOrder={propertiesOrder}\n errors={{}}\n collectionEditable={collectionEditable}\n onPropertyClick={(propertyKey, namespace) => {\n setSelectedPropertyKey(propertyKey);\n setSelectedPropertyNamespace(namespace);\n setPropertyDialogOpen(true);\n }}\n onPropertyMove={onPropertyMove}/>\n\n {empty &&\n <Typography variant={\"label\"}\n className=\"h-full flex items-center justify-center p-4\">\n Add the first property to this group\n </Typography>}\n </Paper>\n </div>\n\n <div className={\"col-span-12\"}>\n <BooleanSwitchWithLabel\n position={\"start\"}\n size={\"medium\"}\n label=\"Spread children as columns\"\n onValueChange={(v) => setFieldValue(\"spreadChildren\", v)}\n value={values.spreadChildren ?? false}\n />\n <FieldCaption>\n Set this flag to true if you want to display the children of this group as individual columns. This\n will only work for top level groups.\n </FieldCaption>\n </div>\n\n <PropertyFormDialog\n inArray={false}\n forceShowErrors={false}\n open={propertyDialogOpen}\n allowDataInference={allowDataInference}\n collectionEditable={collectionEditable}\n onCancel={() => {\n setPropertyDialogOpen(false);\n setSelectedPropertyKey(undefined);\n setSelectedPropertyNamespace(undefined);\n }}\n onOkClicked={() => {\n setPropertyDialogOpen(false);\n setSelectedPropertyKey(undefined);\n setSelectedPropertyNamespace(undefined);\n }}\n getData={getData}\n onDelete={deleteProperty}\n propertyKey={selectedPropertyKey}\n propertyNamespace={selectedPropertyNamespace}\n property={selectedProperty}\n existingProperty={Boolean(selectedPropertyKey)}\n autoUpdateId={!selectedPropertyKey}\n autoOpenTypeSelect={!selectedPropertyKey}\n onPropertyChanged={onPropertyCreated}\n existingPropertyKeys={selectedPropertyKey ? undefined : propertiesOrder}\n propertyConfigs={propertyConfigs}\n />\n\n </>);\n}\n","import React, { useState } from \"react\";\nimport { ArrayProperty, getFieldConfig, Property, PropertyConfig } from \"@firecms/core\";\nimport { Button, Paper, Typography } from \"@firecms/ui\";\nimport { Field, getIn, useFormex } from \"@firecms/formex\";\nimport { PropertyFormDialog } from \"../PropertyEditView\";\nimport { PropertyFieldPreview } from \"../PropertyFieldPreview\";\nimport { ArrayPropertyValidation } from \"./validation/ArrayPropertyValidation\";\nimport { ValidationPanel } from \"./validation/ValidationPanel\";\n\nexport function RepeatPropertyField({\n showErrors,\n existing,\n disabled,\n getData,\n allowDataInference,\n propertyConfigs,\n collectionEditable\n }: {\n showErrors: boolean,\n existing: boolean,\n disabled: boolean,\n getData?: () => Promise<object[]>;\n allowDataInference: boolean;\n propertyConfigs: Record<string, PropertyConfig>,\n collectionEditable: boolean;\n}) {\n\n const {\n values,\n handleChange,\n errors,\n setFieldValue,\n touched\n } = useFormex<ArrayProperty>();\n\n const [propertyDialogOpen, setPropertyDialogOpen] = useState(false);\n const ofProperty = getIn(values, \"of\");\n const ofPropertyError = getIn(touched, \"of\") && getIn(errors, \"of\");\n\n const onPropertyChanged = ({ id, property, namespace }:\n { id?: string, property: Property, namespace?: string }) => {\n setFieldValue(\"of\", property);\n };\n\n const widget = ofProperty && getFieldConfig(ofProperty, propertyConfigs);\n return (\n <>\n <div className={\"col-span-12\"}>\n <Typography variant={\"subtitle2\"}>\n Repeat component\n </Typography>\n <Field\n name={\"of\"}\n value={ofProperty}\n // validate={(property: Property) => {\n // return property?.dataType ? undefined : \"You need to specify a repeat field\";\n // }}\n >\n {({}) => (\n <Paper className=\"p-2 mt-4\">\n\n {ofProperty && <PropertyFieldPreview\n property={ofProperty}\n onClick={disabled ? undefined : () => setPropertyDialogOpen(true)}\n includeName={false}\n includeEditButton={true}\n selected={false}\n hasError={false}/>}\n\n {!disabled && !ofProperty && <Button variant={\"text\"}\n size={\"large\"}\n color={ofPropertyError ? \"error\" : \"primary\"}\n onClick={() => setPropertyDialogOpen(true)}>\n Edit {`${widget ? widget.name : \"repeat component\"}`}\n </Button>}\n\n <PropertyFormDialog\n inArray={true}\n open={propertyDialogOpen}\n existingProperty={existing}\n getData={getData}\n autoUpdateId={!existing}\n autoOpenTypeSelect={!existing}\n onOkClicked={() => setPropertyDialogOpen(false)}\n allowDataInference={allowDataInference}\n property={ofProperty}\n includeIdAndName={false}\n onPropertyChanged={onPropertyChanged}\n forceShowErrors={showErrors}\n propertyConfigs={propertyConfigs}\n collectionEditable={collectionEditable}\n />\n </Paper>\n )}\n </Field>\n\n </div>\n\n <div className={\"col-span-12\"}>\n\n <ValidationPanel>\n <ArrayPropertyValidation disabled={disabled}/>\n </ValidationPanel>\n\n </div>\n </>\n );\n}\n","import { Field, getIn, useFormex } from \"@firecms/formex\";\nimport { DebouncedTextField } from \"@firecms/ui\";\nimport { PropertyWithId } from \"../PropertyEditView\";\nimport React from \"react\";\nimport { FieldCaption, toSnakeCase, unslugify } from \"@firecms/core\";\n\ntype CommonPropertyFieldsProps = {\n showErrors: boolean,\n disabledId: boolean,\n disabled: boolean;\n isNewProperty: boolean;\n autoUpdateId: boolean;\n};\n\nexport const CommonPropertyFields = React.forwardRef<HTMLDivElement, CommonPropertyFieldsProps>(\n function CommonPropertyFields({\n showErrors,\n disabledId,\n disabled,\n autoUpdateId,\n isNewProperty\n }, ref) {\n\n const {\n errors,\n values,\n setFieldValue,\n setFieldTouched,\n touched,\n validate\n } = useFormex<PropertyWithId>();\n\n const name = \"name\";\n const nameError = showErrors && getIn(errors, name);\n\n const id = \"id\";\n const idError = showErrors && getIn(errors, id);\n\n const description = \"description\";\n const descriptionError = showErrors && getIn(errors, description);\n\n return (\n <div className={\"flex flex-col gap-2 col-span-12\"}>\n\n <div>\n <Field\n name={name}\n inputRef={ref}\n as={DebouncedTextField}\n value={values[name]}\n onChange={(e: any) => {\n const newNameValue = e.target.value;\n const idTouched = getIn(touched, id);\n if (!idTouched && autoUpdateId) {\n setFieldValue(id, newNameValue ? toSnakeCase(newNameValue) : \"\", false)\n }\n setFieldValue(name, newNameValue, true);\n setFieldTouched(name, true);\n }}\n style={{ fontSize: 20 }}\n placeholder={\"Field name\"}\n required\n disabled={disabled}\n error={Boolean(nameError)}/>\n\n <FieldCaption error={Boolean(nameError)}>\n {nameError}\n </FieldCaption>\n </div>\n\n <div>\n <Field\n name={id}\n as={DebouncedTextField}\n label={\"ID\"}\n value={values[id]}\n onChange={(e: any) => {\n const newIdValue = e.target.value;\n const nameTouched = getIn(touched, name);\n if (!nameTouched && autoUpdateId) {\n setFieldValue(name, newIdValue ? unslugify(newIdValue) : \"\")\n }\n setFieldValue(id, newIdValue, true);\n setFieldTouched(id, true);\n }}\n disabled={disabledId || disabled}\n required\n size=\"small\"\n error={Boolean(idError)}/>\n <FieldCaption error={Boolean(idError)}>\n {idError}\n </FieldCaption>\n </div>\n\n <div>\n <Field name={description}\n as={DebouncedTextField}\n label={\"Description\"}\n disabled={disabled}\n error={Boolean(descriptionError)}/>\n <FieldCaption error={Boolean(descriptionError)}>\n {descriptionError}\n </FieldCaption>\n </div>\n\n </div>\n );\n\n }\n);\n","import React from \"react\";\nimport { StringPropertyValidation } from \"./validation/StringPropertyValidation\";\nimport { ValidationPanel } from \"./validation/ValidationPanel\";\nimport { getIn, useFormex } from \"@firecms/formex\";\n\nimport { TextField } from \"@firecms/ui\";\n\nexport function StringPropertyField({\n widgetId,\n disabled,\n showErrors\n }: {\n widgetId: \"text_field\" | \"multiline\" | \"email\";\n disabled: boolean;\n showErrors: boolean;\n}) {\n\n const { values, setFieldValue } = useFormex();\n\n return (\n <>\n <div className={\"col-span-12\"}>\n\n <ValidationPanel>\n\n {widgetId === \"text_field\" &&\n <StringPropertyValidation disabled={disabled}\n length={true}\n lowercase={true}\n matches={true}\n max={true}\n min={true}\n trim={true}\n uppercase={true}\n showErrors={showErrors}/>}\n {widgetId === \"multiline\" &&\n <StringPropertyValidation disabled={disabled}\n length={true}\n lowercase={true}\n max={true}\n min={true}\n trim={true}\n uppercase={true}\n showErrors={showErrors}/>}\n\n {widgetId === \"email\" &&\n <StringPropertyValidation disabled={disabled}\n max={true}\n min={true}\n trim={true}\n showErrors={showErrors}/>}\n\n </ValidationPanel>\n\n </div>\n\n <div className={\"col-span-12\"}>\n\n <TextField name={\"defaultValue\"}\n disabled={disabled}\n onChange={(e: any) => {\n setFieldValue(\"defaultValue\", e.target.value === \"\" ? undefined : e.target.value);\n }}\n label={\"Default value\"}\n value={getIn(values, \"defaultValue\") ?? \"\"}/>\n\n </div>\n </>\n );\n}\n","import React from \"react\";\nimport { Field, FormexFieldProps, getIn, useFormex } from \"@firecms/formex\";\n\nimport { GeneralPropertyValidation } from \"./validation/GeneralPropertyValidation\";\nimport { ValidationPanel } from \"./validation/ValidationPanel\";\nimport { SwitchControl } from \"../SwitchControl\";\n\nexport function BooleanPropertyField({ disabled }: {\n disabled: boolean;\n}) {\n const { values } = useFormex();\n const defaultValue = getIn(values, \"defaultValue\");\n\n return (\n <>\n <div className={\"col-span-12\"}>\n\n <ValidationPanel>\n <GeneralPropertyValidation disabled={disabled}/>\n </ValidationPanel>\n\n </div>\n\n <div className={\"col-span-12\"}>\n\n <Field\n name={\"defaultValue\"}>\n {({ field, form }: FormexFieldProps) => {\n return <SwitchControl\n label={defaultValue === null || defaultValue === undefined ? \"Default value not set\" : (\"Default value is \" + defaultValue.toString())}\n disabled={disabled}\n allowIndeterminate={true} field={field}\n form={form}/>\n }}\n </Field>\n\n </div>\n </>\n );\n}\n","import React, { useState } from \"react\";\nimport { AddIcon, Button, Paper, Typography } from \"@firecms/ui\";\nimport { getIn, useFormex } from \"@firecms/formex\";\nimport { OnPropertyChangedParams, PropertyFormDialog } from \"../PropertyEditView\";\nimport {\n getFullId,\n getFullIdPath,\n idToPropertiesPath,\n namespaceToPropertiesOrderPath,\n namespaceToPropertiesPath\n} from \"../util\";\nimport { PropertyTree } from \"../PropertyTree\";\nimport { ArrayProperty, PropertyConfig } from \"@firecms/core\";\n\nexport function BlockPropertyField({\n disabled,\n getData,\n allowDataInference,\n propertyConfigs,\n collectionEditable\n }: {\n disabled: boolean;\n getData?: () => Promise<object[]>;\n allowDataInference: boolean;\n propertyConfigs: Record<string, PropertyConfig>,\n collectionEditable: boolean;\n}) {\n\n const {\n values,\n setFieldValue\n } = useFormex<ArrayProperty>();\n\n const [propertyDialogOpen, setPropertyDialogOpen] = useState<boolean>(false);\n const [selectedPropertyKey, setSelectedPropertyKey] = useState<string | undefined>();\n const [selectedPropertyNamespace, setSelectedPropertyNamespace] = useState<string | undefined>();\n\n const onPropertyChanged = ({\n id,\n namespace,\n property\n }: OnPropertyChangedParams) => {\n if (!id)\n throw Error();\n\n setFieldValue(\"oneOf.\" + getFullIdPath(id, namespace), property, false);\n\n const currentPropertiesOrder = values.oneOf?.propertiesOrder ?? Object.keys(values.oneOf?.properties ?? {});\n const newPropertiesOrder = currentPropertiesOrder.includes(id) ? currentPropertiesOrder : [...currentPropertiesOrder, id];\n setFieldValue(\"oneOf.\" + namespaceToPropertiesOrderPath(namespace), newPropertiesOrder, false);\n setPropertyDialogOpen(false);\n };\n\n const selectedPropertyFullId = selectedPropertyKey ? getFullId(selectedPropertyKey, selectedPropertyNamespace) : undefined;\n const selectedProperty = selectedPropertyFullId ? getIn(values.oneOf?.properties, selectedPropertyFullId.replaceAll(\".\", \".properties.\")) : undefined;\n\n const deleteProperty = (propertyKey?: string, namespace?: string) => {\n const fullId = propertyKey ? getFullId(propertyKey, namespace) : undefined;\n if (!fullId)\n throw Error(\"collection editor miss config\");\n\n setFieldValue(`oneOf.${idToPropertiesPath(fullId)}`, undefined, false);\n const propertiesOrderPath = `oneOf.${namespaceToPropertiesOrderPath(namespace)}`;\n const currentPropertiesOrder: string[] = getIn(values, propertiesOrderPath) ?? Object.keys(getIn(values, namespaceToPropertiesPath(namespace)));\n setFieldValue(propertiesOrderPath, currentPropertiesOrder.filter((p) => p !== propertyKey), false);\n\n setPropertyDialogOpen(false);\n setSelectedPropertyKey(undefined);\n setSelectedPropertyNamespace(undefined);\n };\n\n const addChildButton = <Button\n autoFocus\n color=\"primary\"\n\n onClick={() => setPropertyDialogOpen(true)}\n startIcon={<AddIcon/>}\n >\n Add property to {values.name ?? \"this block\"}\n </Button>;\n\n const onPropertyMove = (propertiesOrder: string[], namespace?: string) => {\n setFieldValue(`oneOf.${namespaceToPropertiesOrderPath(namespace)}`, propertiesOrder, false);\n };\n\n return (\n <>\n <div className={\"col-span-12\"}>\n <div className={\"flex justify-between items-end mt-8 mb-4\"}>\n <Typography variant={\"subtitle2\"}>\n Properties in this block\n </Typography>\n {addChildButton}\n </div>\n <Paper className=\"p-2 pl-8\">\n\n <PropertyTree\n properties={values.oneOf?.properties ?? {}}\n propertiesOrder={values.oneOf?.propertiesOrder}\n errors={{}}\n collectionEditable={collectionEditable}\n onPropertyClick={disabled\n ? undefined\n : (propertyKey, namespace) => {\n setSelectedPropertyKey(propertyKey);\n setSelectedPropertyNamespace(namespace);\n setPropertyDialogOpen(true);\n }}\n onPropertyMove={disabled\n ? undefined\n : onPropertyMove}/>\n\n {!disabled && (values.oneOf?.propertiesOrder?.length === 0)&&\n <div className=\"h-full flex items-center justify-center p-4\">\n Add the first property to this block\n </div>}\n\n </Paper>\n </div>\n\n {!disabled && <PropertyFormDialog\n inArray={false}\n forceShowErrors={false}\n open={propertyDialogOpen}\n getData={getData}\n allowDataInference={allowDataInference}\n onCancel={() => {\n setPropertyDialogOpen(false);\n setSelectedPropertyKey(undefined);\n setSelectedPropertyNamespace(undefined);\n }}\n onOkClicked={() => {\n setPropertyDialogOpen(false);\n setSelectedPropertyKey(undefined);\n setSelectedPropertyNamespace(undefined);\n }}\n collectionEditable={collectionEditable}\n onDelete={deleteProperty}\n propertyKey={selectedPropertyKey}\n propertyNamespace={selectedPropertyNamespace}\n property={selectedProperty}\n existingProperty={Boolean(selectedPropertyKey)}\n autoUpdateId={!selectedPropertyKey}\n autoOpenTypeSelect={!selectedPropertyKey}\n onPropertyChanged={onPropertyChanged}\n existingPropertyKeys={selectedPropertyKey ? undefined : values.oneOf?.propertiesOrder}\n propertyConfigs={propertyConfigs}/>}\n\n </>);\n}\n","import React from \"react\";\n\nimport { Field, FormexFieldProps, getIn, useFormex } from \"@firecms/formex\";\nimport { DebouncedTextField } from \"@firecms/ui\";\nimport { GeneralPropertyValidation } from \"./GeneralPropertyValidation\";\nimport { SwitchControl } from \"../../SwitchControl\";\n\nexport function NumberPropertyValidation({ disabled }: {\n disabled: boolean;\n}) {\n\n const {\n values,\n handleChange\n } = useFormex();\n\n const validationMin = \"validation.min\";\n const validationMax = \"validation.max\";\n const validationLessThan = \"validation.lessThan\";\n const validationMoreThan = \"validation.moreThan\";\n const validationPositive = \"validation.positive\";\n const validationNegative = \"validation.negative\";\n const validationInteger = \"validation.integer\";\n\n return (\n\n <div className={\"grid grid-cols-12 gap-2\"}>\n <GeneralPropertyValidation disabled={disabled}/>\n\n\n <div className={\"col-span-6\"}>\n <DebouncedTextField value={getIn(values, validationMin)}\n label={\"Min value\"}\n name={validationMin}\n type=\"number\"\n size=\"small\"\n disabled={disabled}\n onChange={handleChange}/>\n </div>\n\n <div className={\"col-span-6\"}>\n <DebouncedTextField value={getIn(values, validationMax)}\n label={\"Max value\"}\n name={validationMax}\n type=\"number\"\n size=\"small\"\n\n disabled={disabled}\n onChange={handleChange}/>\n </div>\n\n\n <div className={\"col-span-6\"}>\n <DebouncedTextField\n value={getIn(values, validationLessThan)}\n label={\"Less than\"}\n name={validationLessThan}\n type=\"number\"\n size=\"small\"\n\n disabled={disabled}\n onChange={handleChange}/>\n </div>\n\n <div className={\"col-span-6\"}>\n <DebouncedTextField\n value={getIn(values, validationMoreThan)}\n label={\"More than\"}\n name={validationMoreThan}\n type=\"number\"\n size=\"small\"\n\n disabled={disabled}\n onChange={handleChange}/>\n </div>\n\n <div className={\"col-span-4\"}>\n <Field name={validationPositive}\n type=\"checkbox\">\n {({ field, form }: FormexFieldProps) => {\n return <SwitchControl\n label={\"Positive value\"}\n disabled={disabled}\n form={form}\n field={field}/>\n }}\n </Field>\n </div>\n <div className={\"col-span-4\"}>\n <Field name={validationNegative}\n type=\"checkbox\">\n {({ field, form }: FormexFieldProps) => {\n return <SwitchControl\n label={\"Negative value\"}\n disabled={disabled}\n form={form}\n field={field}/>\n }}\n </Field>\n </div>\n <div className={\"col-span-4\"}>\n <Field name={validationInteger}\n type=\"checkbox\">\n {({ field, form }: FormexFieldProps) => {\n return <SwitchControl\n label={\"Integer value\"}\n disabled={disabled}\n form={form}\n field={field}/>\n }}\n </Field>\n </div>\n </div>\n );\n}\n","import React from \"react\";\nimport { NumberPropertyValidation } from \"./validation/NumberPropertyValidation\";\nimport { ValidationPanel } from \"./validation/ValidationPanel\";\nimport { TextField } from \"@firecms/ui\";\nimport { getIn, useFormex } from \"@firecms/formex\";\n\nexport function NumberPropertyField({ disabled }: {\n disabled: boolean;\n}) {\n\n const { values, setFieldValue } = useFormex();\n\n return (\n <>\n\n <div className={\"col-span-12\"}>\n\n <ValidationPanel>\n <NumberPropertyValidation disabled={disabled}/>\n </ValidationPanel>\n\n </div>\n\n <div className={\"col-span-12\"}>\n\n <TextField name={\"defaultValue\"}\n disabled={disabled}\n type={\"number\"}\n onChange={(e: any) => {\n setFieldValue(\"defaultValue\", e.target.value === \"\" ? undefined : parseFloat(e.target.value));\n }}\n label={\"Default value\"}\n value={getIn(values, \"defaultValue\") ?? \"\"}/>\n\n </div>\n </>\n );\n}\n","import React from \"react\";\nimport { Field, getIn, useFormex } from \"@firecms/formex\";\nimport { FieldCaption, IconForView, NumberProperty, StringProperty, useNavigationController } from \"@firecms/core\";\nimport { CircularProgress, Select, SelectGroup, SelectItem, Typography, } from \"@firecms/ui\";\n\nexport function ReferencePropertyField({\n existing,\n multiple,\n disabled,\n showErrors,\n asString\n }: {\n existing: boolean,\n multiple: boolean,\n disabled: boolean,\n showErrors: boolean,\n asString?: boolean\n}) {\n\n const {\n values,\n handleChange,\n errors,\n } = useFormex<StringProperty | NumberProperty>();\n\n const navigation = useNavigationController();\n\n if (!navigation)\n return <div className={\"col-span-12\"}>\n <CircularProgress/>\n </div>;\n\n const pathPath = asString ? \"reference.path\" : (multiple ? \"of.path\" : \"path\") ;\n const pathValue: string | undefined = getIn(values, pathPath);\n const pathError: string | undefined = showErrors && getIn(errors, pathPath);\n\n return (\n <>\n <div className={\"col-span-12\"}>\n\n <Field name={pathPath}\n pathPath={pathPath}\n type=\"select\"\n disabled={(existing && Boolean(pathValue)) || disabled}\n value={pathValue}\n error={pathError}\n handleChange={handleChange}\n as={CollectionsSelect}/>\n\n </div>\n\n </>\n );\n}\n\nexport function CollectionsSelect({\n disabled,\n pathPath,\n value,\n handleChange,\n error,\n ...props\n }: {\n disabled: boolean,\n pathPath: string,\n value?: string,\n handleChange: (event: any) => void,\n error?: string\n}) {\n\n const navigation = useNavigationController();\n\n if (!navigation)\n return <div className={\"col-span-12\"}>\n <CircularProgress/>\n </div>;\n\n const collections = navigation?.collections ?? [];\n\n const groups: string[] = Array.from(new Set(\n Object.values(collections).map(e => e.group).filter(Boolean) as string[]\n ).values());\n\n const ungroupedCollections = collections.filter((col) => !col.group);\n\n return (\n <>\n <Select\n error={Boolean(error)}\n disabled={disabled}\n value={value ?? \"\"}\n position={\"item-aligned\"}\n name={pathPath}\n size={\"large\"}\n fullWidth={true}\n onChange={handleChange}\n label={\"Target collection\"}\n renderValue={(selected) => {\n const selectedCollection = collections.find(collection => collection.id === selected || collection.path === selected);\n if (!selectedCollection) return null;\n return (\n <div className=\"flex flex-row\">\n <IconForView collectionOrView={selectedCollection}/>\n <Typography\n variant={\"subtitle2\"}\n className=\"font-medium ml-4\">\n {selectedCollection?.name.toUpperCase()}\n </Typography>\n </div>)\n }}\n {...props}>\n\n {groups.flatMap((group) => (\n <SelectGroup label={group || \"Views\"}\n key={`group_${group}`}>\n {\n collections.filter(collection => collection.group === group)\n .map((collection) => {\n return <SelectItem\n key={`${collection.id ?? collection.path}-${group}`}\n value={collection.id ?? collection.path}>\n <div className=\"flex flex-row\">\n <IconForView collectionOrView={collection}/>\n <Typography\n variant={\"subtitle2\"}\n className=\"font-medium ml-4\">\n {collection?.name.toUpperCase()}\n </Typography>\n </div>\n </SelectItem>;\n })\n\n }\n </SelectGroup>\n ))}\n\n {ungroupedCollections && <SelectGroup label={\"Views\"}>\n {ungroupedCollections\n .map((collection) => {\n return <SelectItem key={collection.id ?? collection.path}\n value={collection.id ?? collection.path}>\n <div className=\"flex flex-row\">\n <IconForView collectionOrView={collection}/>\n <Typography\n variant={\"subtitle2\"}\n className=\"font-medium ml-4\">\n {collection?.name.toUpperCase()}\n </Typography>\n </div>\n </SelectItem>;\n })\n\n }\n </SelectGroup>}\n\n </Select>\n\n <FieldCaption>\n You can only edit the reference collection upon field\n creation.\n </FieldCaption>\n </>\n );\n}\n","import React from \"react\";\nimport { getIn, useFormex } from \"@firecms/formex\";\nimport { FieldCaption, NumberProperty, StringProperty } from \"@firecms/core\";\nimport { Select, SelectItem } from \"@firecms/ui\";\nimport { GeneralPropertyValidation } from \"./validation/GeneralPropertyValidation\";\nimport { ValidationPanel } from \"./validation/ValidationPanel\";\n\nexport function DateTimePropertyField({ disabled }: {\n disabled: boolean;\n}) {\n\n const {\n values,\n errors,\n touched,\n setFieldValue\n } = useFormex<StringProperty | NumberProperty>();\n\n const modePath = \"mode\";\n const modeValue: string | undefined = getIn(values, modePath);\n const modeError: string | undefined = getIn(touched, modePath) && getIn(errors, modePath);\n\n const autoValuePath = \"autoValue\";\n const autoValueValue: string | undefined = getIn(values, autoValuePath);\n const autoValueError: string | undefined = getIn(touched, autoValuePath) && getIn(errors, autoValuePath);\n\n return (\n <>\n <div className={\"flex flex-col col-span-12 gap-2\"}>\n <div>\n <Select name={modePath}\n value={modeValue ?? \"date\"}\n error={Boolean(modeError)}\n size={\"large\"}\n onValueChange={(v) => setFieldValue(modePath, v)}\n label={\"Mode\"}\n fullWidth={true}\n renderValue={(v) => {\n switch (v) {\n case \"date_time\":\n return \"Date/Time\";\n case \"date\":\n return \"Date\";\n default:\n return \"\";\n }\n }}\n disabled={disabled}>\n <SelectItem value={\"date_time\"}> Date/Time </SelectItem>\n <SelectItem value={\"date\"}> Date </SelectItem>\n </Select>\n <FieldCaption error={Boolean(modeError)}>\n {modeError}\n </FieldCaption>\n </div>\n <div>\n <Select name={autoValuePath}\n disabled={disabled}\n size={\"large\"}\n fullWidth={true}\n value={autoValueValue ?? \"\"}\n onValueChange={(v) => setFieldValue(autoValuePath, v === \"none\" ? null : v)}\n renderValue={(v) => {\n switch (v) {\n case \"on_create\":\n return \"On create\";\n case \"on_update\":\n return \"On any update\";\n default:\n return \"None\";\n }\n }}\n error={Boolean(autoValueError)}\n label={\"Automatic value\"}>\n <SelectItem value={\"none\"}> None </SelectItem>\n <SelectItem value={\"on_create\"}> On create </SelectItem>\n <SelectItem value={\"on_update\"}> On any update </SelectItem>\n </Select>\n <FieldCaption error={Boolean(autoValueError)}>\n {autoValueError ?? \"Update this field automatically when creating or updating the entity\"}\n </FieldCaption>\n </div>\n\n </div>\n\n <div className={\"col-span-12\"}>\n <ValidationPanel>\n <GeneralPropertyValidation disabled={disabled}/>\n </ValidationPanel>\n </div>\n </>\n );\n}\n","import React from \"react\";\n\nimport { Field, FormexFieldProps } from \"@firecms/formex\";\nimport { SwitchControl } from \"../../SwitchControl\";\n\nexport function AdvancedPropertyValidation({ disabled }: {\n disabled: boolean\n}) {\n\n const columnWidth = \"columnWidth\";\n const hideFromCollection = \"hideFromCollection\";\n const readOnly = \"readOnly\";\n\n return (\n\n <div className={\"grid grid-cols-12 gap-2\"}>\n <div className={\"col-span-12\"}>\n <Field type=\"checkbox\" name={hideFromCollection}>\n {({ field, form }: FormexFieldProps) => {\n return <SwitchControl\n label={\"Hide from collection\"}\n size={\"medium\"}\n disabled={disabled}\n form={form}\n tooltip={\"Hide this field from the collection view. It will still be visible in the form view\"}\n field={field}/>\n }}\n </Field>\n </div>\n\n <div className={\"col-span-12\"}>\n <Field name={readOnly}\n type=\"checkbox\">\n {({ field, form }: FormexFieldProps) => {\n return <SwitchControl\n label={\"Read only\"}\n size={\"medium\"}\n disabled={disabled}\n tooltip={\"Is this a read only field. Display only as a preview\"}\n form={form}\n field={field}/>\n }}\n </Field>\n </div>\n </div>\n );\n}\n","import React from \"react\";\nimport { ValidationPanel } from \"./validation/ValidationPanel\";\nimport { GeneralPropertyValidation } from \"./validation/GeneralPropertyValidation\";\n\nexport function KeyValuePropertyField({ disabled }: {\n disabled: boolean;\n}) {\n\n return (\n <>\n <div className={\"col-span-12\"}>\n\n <ValidationPanel>\n <GeneralPropertyValidation disabled={disabled}/>\n </ValidationPanel>\n\n </div>\n </>\n );\n}\n","import {\n ArrayProperty,\n BooleanProperty,\n DateProperty,\n MapProperty,\n mergeDeep,\n NumberProperty,\n Property,\n PropertyConfig,\n StringProperty\n} from \"@firecms/core\";\n\nexport function updatePropertyFromWidget(propertyData: any,\n selectedWidgetId: string | undefined,\n propertyConfigs: Record<string, PropertyConfig>): Property {\n\n let updatedProperty;\n if (selectedWidgetId === \"text_field\") {\n updatedProperty = mergeDeep(\n propertyData,\n {\n dataType: \"string\",\n propertyConfig: \"text_field\",\n editable: propertyData.editable !== undefined ? propertyData.editable : true,\n storage: undefined,\n multiline: undefined,\n markdown: undefined,\n email: undefined,\n url: undefined,\n enumValues: undefined\n } satisfies StringProperty\n );\n } else if (selectedWidgetId === \"multiline\") {\n updatedProperty = mergeDeep(\n propertyData,\n {\n dataType: \"string\",\n propertyConfig: \"multiline\",\n editable: propertyData.editable !== undefined ? propertyData.editable : true,\n multiline: true,\n storage: undefined,\n markdown: undefined,\n email: undefined,\n url: undefined,\n enumValues: undefined\n } satisfies StringProperty\n );\n } else if (selectedWidgetId === \"markdown\") {\n updatedProperty = mergeDeep(\n propertyData,\n {\n dataType: \"string\",\n propertyConfig: \"markdown\",\n editable: propertyData.editable !== undefined ? propertyData.editable : true,\n storage: undefined,\n multiline: undefined,\n markdown: true,\n email: undefined,\n url: undefined\n } satisfies StringProperty\n );\n } else if (selectedWidgetId === \"url\") {\n updatedProperty = mergeDeep(\n propertyData,\n {\n dataType: \"string\",\n propertyConfig: \"url\",\n editable: propertyData.editable !== undefined ? propertyData.editable : true,\n storage: undefined,\n multiline: undefined,\n markdown: undefined,\n email: undefined,\n url: true,\n enumValues: undefined\n } satisfies StringProperty\n );\n } else if (selectedWidgetId === \"email\") {\n updatedProperty = mergeDeep(\n propertyData,\n {\n dataType: \"string\",\n propertyConfig: \"email\",\n editable: propertyData.editable !== undefined ? propertyData.editable : true,\n storage: undefined,\n multiline: undefined,\n markdown: undefined,\n email: true,\n url: undefined,\n enumValues: undefined\n } satisfies StringProperty\n );\n } else if (selectedWidgetId === \"select\") {\n updatedProperty = mergeDeep(\n propertyData,\n {\n dataType: \"string\",\n propertyConfig: \"select\",\n editable: propertyData.editable !== undefined ? propertyData.editable : true,\n storage: undefined,\n multiline: undefined,\n markdown: undefined,\n email: undefined,\n url: undefined,\n enumValues: propertyData.enumValues ?? []\n } satisfies StringProperty\n );\n } else if (selectedWidgetId === \"multi_select\") {\n updatedProperty = mergeDeep(\n propertyData,\n {\n dataType: \"array\",\n propertyConfig: \"multi_select\",\n editable: propertyData.editable !== undefined ? propertyData.editable : true,\n of: {\n dataType: \"string\",\n enumValues: propertyData.of?.enumValues ?? []\n }\n } satisfies ArrayProperty\n );\n } else if (selectedWidgetId === \"number_input\") {\n updatedProperty = mergeDeep(\n propertyData,\n {\n dataType: \"number\",\n propertyConfig: \"number_input\",\n editable: propertyData.editable !== undefined ? propertyData.editable : true,\n enumValues: undefined\n } satisfies NumberProperty\n );\n } else if (selectedWidgetId === \"number_select\") {\n updatedProperty = mergeDeep(\n propertyData,\n {\n dataType: \"number\",\n propertyConfig: \"number_select\",\n editable: propertyData.editable !== undefined ? propertyData.editable : true,\n enumValues: propertyData.enumValues ?? []\n } satisfies NumberProperty\n );\n } else if (selectedWidgetId === \"multi_number_select\") {\n updatedProperty = mergeDeep(\n propertyData,\n {\n dataType: \"array\",\n propertyConfig: \"multi_number_select\",\n editable: propertyData.editable !== undefined ? propertyData.editable : true,\n of: {\n dataType: \"number\",\n enumValues: propertyData.of?.enumValues ?? []\n }\n } satisfies ArrayProperty\n );\n } else if (selectedWidgetId === \"file_upload\") {\n updatedProperty = mergeDeep(\n propertyData,\n {\n dataType: \"string\",\n propertyConfig: \"file_upload\",\n editable: propertyData.editable !== undefined ? propertyData.editable : true,\n storage: {\n storagePath: \"/\"\n }\n } satisfies StringProperty\n );\n } else if (selectedWidgetId === \"multi_file_upload\") {\n updatedProperty = mergeDeep(\n propertyData,\n {\n dataType: \"array\",\n propertyConfig: \"multi_file_upload\",\n editable: propertyData.editable !== undefined ? propertyData.editable : true,\n of: {\n dataType: \"string\",\n storage: propertyData.of?.storage ?? {\n storagePath: \"/\"\n }\n }\n } satisfies ArrayProperty\n );\n } else if (selectedWidgetId === \"group\") {\n updatedProperty = mergeDeep(\n propertyData,\n {\n dataType: \"map\",\n propertyConfig: \"group\",\n editable: propertyData.editable !== undefined ? propertyData.editable : true,\n keyValue: false,\n properties: propertyData.properties ?? {}\n } satisfies MapProperty\n );\n } else if (selectedWidgetId === \"key_value\") {\n updatedProperty = mergeDeep(\n propertyData,\n {\n dataType: \"map\",\n propertyConfig: \"key_value\",\n editable: propertyData.editable !== undefined ? propertyData.editable : true,\n keyValue: true,\n properties: undefined\n } satisfies MapProperty\n );\n } else if (selectedWidgetId === \"reference\") {\n updatedProperty = mergeDeep(\n propertyData,\n {\n dataType: \"reference\",\n propertyConfig: \"reference\",\n editable: propertyData.editable !== undefined ? propertyData.editable : true\n } satisfies Property\n );\n } else if (selectedWidgetId === \"reference_as_string\") {\n updatedProperty = mergeDeep(\n propertyData,\n {\n dataType: \"string\",\n propertyConfig: \"reference_as_string\",\n editable: propertyData.editable !== undefined ? propertyData.editable : true\n } satisfies Property\n );\n } else if (selectedWidgetId === \"multi_references\") {\n updatedProperty = mergeDeep(\n propertyData,\n {\n dataType: \"array\",\n propertyConfig: \"multi_references\",\n editable: propertyData.editable !== undefined ? propertyData.editable : true,\n of: {\n dataType: \"reference\"\n }\n } satisfies ArrayProperty\n );\n } else if (selectedWidgetId === \"switch\") {\n updatedProperty = mergeDeep(\n propertyData,\n {\n dataType: \"boolean\",\n propertyConfig: \"switch\",\n editable: propertyData.editable !== undefined ? propertyData.editable : true\n } satisfies BooleanProperty\n );\n } else if (selectedWidgetId === \"date_time\") {\n updatedProperty = mergeDeep(\n propertyData,\n {\n dataType: \"date\",\n propertyConfig: \"date_time\",\n editable: propertyData.editable !== undefined ? propertyData.editable : true,\n mode: \"date_time\"\n } satisfies DateProperty\n );\n } else if (selectedWidgetId === \"repeat\") {\n updatedProperty = mergeDeep(\n propertyData,\n {\n dataType: \"array\",\n propertyConfig: \"repeat\",\n editable: propertyData.editable !== undefined ? propertyData.editable : true\n } satisfies ArrayProperty\n );\n } else if (selectedWidgetId === \"block\") {\n updatedProperty = mergeDeep(\n propertyData,\n {\n dataType: \"array\",\n propertyConfig: \"block\",\n editable: propertyData.editable !== undefined ? propertyData.editable : true,\n oneOf: {\n properties: {}\n }\n } satisfies ArrayProperty\n );\n } else if (selectedWidgetId && propertyConfigs[selectedWidgetId]) {\n updatedProperty = {\n ...propertyConfigs[selectedWidgetId].property,\n propertyConfig: selectedWidgetId\n };\n }\n\n return updatedProperty;\n}\n","import React from \"react\";\nimport { StringPropertyValidation } from \"./validation/StringPropertyValidation\";\nimport { ValidationPanel } from \"./validation/ValidationPanel\";\nimport { getIn, useFormex } from \"@firecms/formex\";\n\nimport { Select, SelectItem, TextField } from \"@firecms/ui\";\n\nexport function UrlPropertyField({\n disabled,\n showErrors\n }: {\n disabled: boolean;\n showErrors: boolean;\n}) {\n\n const { values, setFieldValue } = useFormex();\n\n const urlValue = getIn(values, \"url\");\n\n return (\n <>\n <div className={\"col-span-12\"}>\n\n <Select\n disabled={disabled}\n position={\"item-aligned\"}\n fullWidth={true}\n onValueChange={(value: string) => {\n if (value === \"[NONE]\")\n setFieldValue(\"url\", true);\n else\n setFieldValue(\"url\", value);\n }}\n label={\"Preview type\"}\n renderValue={(value: string) => {\n switch (value) {\n case \"image\":\n return \"Image\";\n case \"video\":\n return \"Video\";\n case \"audio\":\n return \"Audio\";\n default:\n return \"Display URL\";\n }\n }}\n value={urlValue ?? \"[NONE]\"}>\n <SelectItem value={\"[NONE]\"}>\n Display URL\n </SelectItem>\n <SelectItem value={\"image\"}>\n Image\n </SelectItem>\n <SelectItem value={\"video\"}>\n Video\n </SelectItem>\n <SelectItem value={\"audio\"}>\n Audio\n </SelectItem>\n </Select>\n </div>\n\n <div className={\"col-span-12\"}>\n\n <ValidationPanel>\n\n <StringPropertyValidation disabled={disabled}\n max={true}\n min={true}\n trim={true}\n showErrors={showErrors}/>\n\n </ValidationPanel>\n\n </div>\n\n <div className={\"col-span-12\"}>\n\n <TextField name={\"defaultValue\"}\n disabled={disabled}\n onChange={(e: any) => {\n setFieldValue(\"defaultValue\", e.target.value === \"\" ? undefined : e.target.value);\n }}\n label={\"Default value\"}\n value={getIn(values, \"defaultValue\") ?? \"\"}/>\n\n </div>\n </>\n );\n}\n","import { DEFAULT_FIELD_CONFIGS, PropertyConfigId, PropertyConfig } from \"@firecms/core\";\n\nexport const supportedFieldsIds: PropertyConfigId[] = [\n \"text_field\",\n \"multiline\",\n \"markdown\",\n \"url\",\n \"email\",\n \"select\",\n \"multi_select\",\n \"number_input\",\n \"number_select\",\n \"multi_number_select\",\n \"file_upload\",\n \"multi_file_upload\",\n \"reference\",\n \"reference_as_string\",\n \"multi_references\",\n \"switch\",\n \"date_time\",\n \"group\",\n \"key_value\",\n \"repeat\",\n \"block\"\n];\n\nexport const supportedFields: Record<string, PropertyConfig> = Object.entries(DEFAULT_FIELD_CONFIGS)\n .filter(([id]) => supportedFieldsIds.includes(id as PropertyConfigId))\n .map(([id, config]) => ({ [id]: config }))\n .reduce((a, b) => ({ ...a, ...b }), {});\n","import React from \"react\";\nimport { StringPropertyValidation } from \"./validation/StringPropertyValidation\";\nimport { ValidationPanel } from \"./validation/ValidationPanel\";\nimport { Field, getIn, useFormex } from \"@firecms/formex\";\n\nimport { CloudUploadIcon, DebouncedTextField, ExpandablePanel, TextField, Typography } from \"@firecms/ui\";\n\nexport function MarkdownPropertyField({\n disabled,\n showErrors\n }: {\n disabled: boolean;\n showErrors: boolean;\n}) {\n\n const {\n values,\n setFieldValue\n } = useFormex();\n\n const baseStoragePath = \"storage\";\n\n const metadata = `${baseStoragePath}.metadata`;\n const fileName = `${baseStoragePath}.fileName`;\n const maxSize = `${baseStoragePath}.maxSize`;\n const storagePath = `${baseStoragePath}.storagePath`;\n\n const fileNameValue = getIn(values, fileName) ?? \"{rand}_{file}\";\n const storagePathValue = getIn(values, storagePath) ?? \"/\";\n const maxSizeValue = getIn(values, maxSize);\n\n const hasFilenameCallback = typeof fileNameValue === \"function\";\n const hasStoragePathCallback = typeof storagePathValue === \"function\";\n\n return (\n <>\n <div className={\"col-span-12\"}>\n\n <ValidationPanel>\n\n <StringPropertyValidation disabled={disabled}\n length={true}\n lowercase={true}\n max={true}\n min={true}\n trim={true}\n uppercase={true}\n showErrors={showErrors}/>\n\n </ValidationPanel>\n\n </div>\n\n <div className={\"col-span-12\"}>\n <ExpandablePanel\n title={\n <div className=\"flex flex-row text-surface-500\">\n <CloudUploadIcon/>\n <Typography variant={\"subtitle2\"}\n className=\"ml-2\">\n File upload config\n </Typography>\n </div>\n }>\n\n <div className={\"grid grid-cols-12 gap-2 p-4\"}>\n\n\n <div className={\"col-span-12\"}>\n <Field name={fileName}\n as={DebouncedTextField}\n label={\"File name\"}\n size={\"small\"}\n disabled={hasFilenameCallback || disabled}\n value={hasFilenameCallback ? \"-\" : fileNameValue}\n />\n </div>\n <div className={\"col-span-12\"}>\n <Field name={storagePath}\n as={DebouncedTextField}\n label={\"Storage path\"}\n disabled={hasStoragePathCallback || disabled}\n size={\"small\"}\n value={hasStoragePathCallback ? \"-\" : storagePathValue}\n />\n <Typography variant={\"caption\"} className={\"ml-3.5 mt-1 mb-2\"}>\n <p>You can use the following placeholders in\n the file name\n and storage path values:</p>\n <ul>\n <li>{\"{file} - Full name of the uploaded file\"}</li>\n <li>{\"{file.name} - Name of the uploaded file without extension\"}</li>\n <li>{\"{file.ext} - Extension of the uploaded file\"}</li>\n <li>{\"{entityId} - ID of the entity\"}</li>\n <li>{\"{propertyKey} - ID of this field\"}</li>\n <li>{\"{path} - Path of this entity\"}</li>\n <li>{\"{rand} - Random value used to avoid name collisions\"}</li>\n </ul>\n </Typography>\n\n <Typography variant={\"caption\"} className={\"ml-3.5 mt-1 mb-2\"}>\n When using Markdown, the URL of the uploaded files are always saved in the text value\n (not\n the path).\n </Typography>\n </div>\n\n <div className={\"col-span-12\"}>\n <DebouncedTextField name={maxSize}\n type={\"number\"}\n label={\"Max size (in bytes)\"}\n size={\"small\"}\n value={maxSizeValue !== undefined && maxSizeValue !== null ? maxSizeValue.toString() : \"\"}\n onChange={(e) => {\n const value = e.target.value;\n if (value === \"\") setFieldValue(maxSize, undefined);\n else setFieldValue(maxSize, parseInt(value));\n }}\n />\n </div>\n\n </div>\n </ExpandablePanel>\n </div>\n\n <div className={\"col-span-12\"}>\n\n <TextField name={\"defaultValue\"}\n disabled={disabled}\n onChange={(e: any) => {\n setFieldValue(\"defaultValue\", e.target.value === \"\" ? undefined : e.target.value);\n }}\n label={\"Default value\"}\n value={getIn(values, \"defaultValue\") ?? \"\"}/>\n\n </div>\n </>\n );\n}\n","import React, { useDeferredValue, useEffect, useRef, useState } from \"react\";\nimport equal from \"react-fast-compare\"\n\nimport { Formex, FormexController, getIn, useCreateFormex } from \"@firecms/formex\";\nimport {\n ConfirmationDialog,\n DEFAULT_FIELD_CONFIGS,\n getFieldConfig,\n getFieldId,\n isPropertyBuilder,\n isValidRegExp,\n mergeDeep,\n Property,\n PropertyConfig,\n PropertyConfigBadge,\n PropertyConfigId,\n} from \"@firecms/core\";\nimport {\n Button,\n Card,\n cls,\n DeleteIcon,\n Dialog,\n DialogActions,\n DialogContent,\n DialogTitle,\n fieldBackgroundDisabledMixin,\n fieldBackgroundHoverMixin,\n fieldBackgroundMixin,\n IconButton,\n InfoLabel,\n Tooltip,\n Typography,\n WarningIcon\n} from \"@firecms/ui\";\nimport { EnumPropertyField } from \"./properties/EnumPropertyField\";\nimport { StoragePropertyField } from \"./properties/StoragePropertyField\";\nimport { MapPropertyField } from \"./properties/MapPropertyField\";\nimport { RepeatPropertyField } from \"./properties/RepeatPropertyField\";\nimport { CommonPropertyFields } from \"./properties/CommonPropertyFields\";\nimport { StringPropertyField } from \"./properties/StringPropertyField\";\nimport { BooleanPropertyField } from \"./properties/BooleanPropertyField\";\nimport { BlockPropertyField } from \"./properties/BlockPropertyField\";\nimport { NumberPropertyField } from \"./properties/NumberPropertyField\";\nimport { ReferencePropertyField } from \"./properties/ReferencePropertyField\";\nimport { DateTimePropertyField } from \"./properties/DateTimePropertyField\";\nimport { AdvancedPropertyValidation } from \"./properties/advanced/AdvancedPropertyValidation\";\nimport { editableProperty } from \"../../utils/entities\";\nimport { KeyValuePropertyField } from \"./properties/KeyValuePropertyField\";\nimport { updatePropertyFromWidget } from \"./utils/update_property_for_widget\";\nimport { UrlPropertyField } from \"./properties/UrlPropertyField\";\nimport { supportedFields } from \"./utils/supported_fields\";\nimport { MarkdownPropertyField } from \"./properties/MarkdownPropertyField\";\n\nexport type PropertyWithId = Property & {\n id?: string\n};\n\nexport type OnPropertyChangedParams = {\n id?: string,\n property: Property,\n namespace?: string,\n previousId?: string\n};\n\nexport type PropertyFormProps = {\n includeIdAndName?: boolean;\n existingProperty: boolean;\n autoUpdateId?: boolean;\n autoOpenTypeSelect: boolean;\n inArray: boolean;\n propertyKey?: string;\n propertyNamespace?: string;\n property?: Property;\n onPropertyChanged?: (params: OnPropertyChangedParams) => void;\n onPropertyChangedImmediate?: boolean;\n onDismiss?: () => void;\n onDelete?: (id?: string, namespace?: string) => void;\n onError?: (id: string, namespace?: string, error?: Record<string, any>) => void;\n initialErrors?: Record<string, any>;\n existingPropertyKeys?: string[];\n forceShowErrors?: boolean;\n allowDataInference: boolean;\n getData?: () => Promise<object[]>;\n getController?: (formex: FormexController<PropertyWithId>) => void;\n propertyConfigs: Record<string, PropertyConfig>;\n collectionEditable: boolean;\n};\n\nexport const PropertyForm = React.memo(\n function PropertyForm(props: PropertyFormProps) {\n\n const {\n includeIdAndName = true,\n autoOpenTypeSelect,\n existingProperty,\n autoUpdateId,\n inArray,\n propertyKey,\n existingPropertyKeys,\n propertyNamespace,\n property,\n onPropertyChanged,\n onPropertyChangedImmediate = true,\n onDismiss,\n onDelete,\n onError,\n initialErrors,\n forceShowErrors,\n allowDataInference,\n getController,\n getData,\n propertyConfigs,\n collectionEditable\n } = props;\n\n const initialValue: PropertyWithId = {\n id: \"\",\n name: \"\"\n } as PropertyWithId;\n\n const disabled = (Boolean(property && !editableProperty(property)) && !collectionEditable);\n\n const lastSubmittedProperty = useRef<OnPropertyChangedParams | undefined>(property ? {\n id: propertyKey,\n previousId: propertyKey,\n property\n } : undefined);\n\n const doOnPropertyChanged = ({\n id,\n property\n }: OnPropertyChangedParams) => {\n const params = {\n id,\n previousId: lastSubmittedProperty.current?.id,\n property,\n namespace: propertyNamespace\n };\n lastSubmittedProperty.current = params;\n onPropertyChanged?.(params);\n };\n\n const formexController = useCreateFormex<PropertyWithId>({\n debugId: \"PROPERTY_FORM\",\n initialValues: property\n ? { id: propertyKey, ...property } as PropertyWithId\n : initialValue,\n initialErrors,\n validateOnChange: true,\n validateOnInitialRender: true,\n onSubmit: (newPropertyWithId, controller) => {\n console.debug(\"onSubmit\", newPropertyWithId);\n const {\n id,\n ...property\n } = newPropertyWithId;\n doOnPropertyChanged({\n id,\n property: {\n ...property,\n editable: property.editable ?? true\n }\n });\n if (!existingProperty)\n controller.resetForm({ values: initialValue });\n },\n validation: (values) => {\n const errors: Record<string, any> = {};\n if (includeIdAndName) {\n if (!values.name) {\n errors.name = \"Required\";\n } else {\n const nameError = validateName(values.name);\n if (nameError)\n errors.name = nameError;\n }\n if (!values.id) {\n errors.id = \"Required\";\n } else {\n const idError = validateId(values.id, existingPropertyKeys);\n if (idError)\n errors.id = idError;\n }\n }\n\n if (values.dataType === \"string\") {\n if (values.validation?.matches && !isValidRegExp(values.validation?.matches.toString())) {\n errors.validation = {\n matches: \"Invalid regular expression\"\n }\n }\n }\n if (values.dataType === \"reference\" && !values.path) {\n errors.path = \"You must specify a target collection for the field\";\n }\n if (values.propertyConfig === \"repeat\") {\n if (!(values as any).of) {\n errors.of = \"You need to specify a repeat field\";\n }\n }\n if (values.propertyConfig === \"block\") {\n if (!(values as any).oneOf) {\n errors.oneOf = \"You need to specify the properties of this block\";\n }\n }\n return errors;\n }\n });\n\n useEffect(() => {\n getController?.(formexController);\n }, [formexController, getController]);\n\n return <Formex value={formexController}>\n <PropertyEditFormFields\n onPropertyChanged={onPropertyChangedImmediate\n ? doOnPropertyChanged\n : undefined}\n onDelete={onDelete}\n includeIdAndTitle={includeIdAndName}\n propertyNamespace={propertyNamespace}\n onError={onError}\n onDismiss={onDismiss}\n showErrors={forceShowErrors || formexController.submitCount > 0}\n existing={existingProperty}\n autoUpdateId={autoUpdateId}\n inArray={inArray}\n autoOpenTypeSelect={autoOpenTypeSelect}\n disabled={disabled}\n getData={getData}\n allowDataInference={allowDataInference}\n propertyConfigs={propertyConfigs}\n collectionEditable={collectionEditable}\n {...formexController}/>\n </Formex>;\n }, (a, b) =>\n a.getData === b.getData &&\n a.propertyKey === b.propertyKey &&\n a.propertyNamespace === b.propertyNamespace &&\n a.includeIdAndName === b.includeIdAndName &&\n a.autoOpenTypeSelect === b.autoOpenTypeSelect &&\n a.autoUpdateId === b.autoUpdateId &&\n a.existingPropertyKeys === b.existingPropertyKeys &&\n a.existingProperty === b.existingProperty\n);\n\nexport function PropertyFormDialog({\n open,\n onCancel,\n onOkClicked,\n onPropertyChanged,\n getData,\n collectionEditable,\n ...formProps\n }: PropertyFormProps & {\n open?: boolean;\n onOkClicked?: () => void;\n onCancel?: () => void;\n}) {\n const formexRef = useRef<FormexController<PropertyWithId>>();\n const getController = (helpers: FormexController<PropertyWithId>) => {\n formexRef.current = helpers;\n };\n\n return <Dialog\n open={open ?? false}\n maxWidth={\"xl\"}\n fullWidth={true}\n >\n <form noValidate={true}\n autoComplete={\"off\"}\n onSubmit={(e) => {\n e.preventDefault();\n e.stopPropagation();\n formexRef.current?.handleSubmit(e)\n }}>\n <DialogTitle hidden>Property edit view</DialogTitle>\n <DialogContent>\n\n <PropertyForm {...formProps}\n onDismiss={onCancel}\n onPropertyChanged={(params) => {\n onPropertyChanged?.(params);\n onOkClicked?.();\n }}\n collectionEditable={collectionEditable}\n onPropertyChangedImmediate={false}\n getController={getController}\n getData={getData}\n />\n </DialogContent>\n\n <DialogActions>\n\n {onCancel && <Button\n variant={\"text\"}\n color={\"primary\"}\n onClick={() => {\n onCancel();\n formexRef.current?.resetForm();\n }}>\n Cancel\n </Button>}\n\n <Button variant=\"outlined\"\n type={\"submit\"}\n color=\"primary\">\n Ok\n </Button>\n </DialogActions>\n </form>\n </Dialog>;\n\n}\n\nfunction PropertyEditFormFields({\n values,\n errors,\n setValues,\n existing,\n autoUpdateId = false,\n autoOpenTypeSelect,\n includeIdAndTitle,\n onPropertyChanged,\n onDelete,\n propertyNamespace,\n onDismiss,\n onError,\n showErrors,\n disabled,\n inArray,\n getData,\n allowDataInference,\n propertyConfigs,\n collectionEditable\n }: {\n includeIdAndTitle?: boolean;\n existing: boolean;\n autoUpdateId?: boolean;\n autoOpenTypeSelect: boolean;\n propertyNamespace?: string;\n onDismiss?: () => void;\n onPropertyChanged?: (params: OnPropertyChangedParams) => void;\n onDelete?: (id?: string, namespace?: string) => void;\n onError?: (id: string, namespace?: string, error?: Record<string, any>) => void;\n showErrors: boolean;\n inArray: boolean;\n disabled: boolean;\n getData?: () => Promise<object[]>;\n allowDataInference: boolean;\n propertyConfigs: Record<string, PropertyConfig>;\n collectionEditable: boolean;\n} & FormexController<PropertyWithId>) {\n\n const [selectOpen, setSelectOpen] = useState(autoOpenTypeSelect);\n const [deleteDialogOpen, setDeleteDialogOpen] = useState(false);\n const [selectedFieldConfigId, setSelectedFieldConfigId] = useState<string | undefined>(values?.dataType ? getFieldId(values) : undefined);\n\n const deferredValues = useDeferredValue(values);\n const nameFieldRef = useRef<HTMLInputElement>(null);\n\n const lastSubmittedProperty = useRef<object>(values);\n\n const selectedWidgetError = showErrors && getIn(errors, \"selectedWidget\");\n\n useEffect(() => {\n if (onPropertyChanged) {\n if ((!includeIdAndTitle || deferredValues.id)) {\n const {\n id,\n ...property\n } = deferredValues;\n if (!equal(deferredValues, lastSubmittedProperty.current)) {\n onPropertyChanged({\n id,\n property,\n namespace: propertyNamespace\n });\n lastSubmittedProperty.current = deferredValues;\n }\n }\n }\n }, [deferredValues, includeIdAndTitle, propertyNamespace]);\n\n useEffect(() => {\n if (values?.id && onError) {\n onError(values?.id, propertyNamespace, errors);\n }\n }, [errors, propertyNamespace, values?.id]);\n\n const onWidgetSelectChanged = (newSelectedWidgetId: PropertyConfigId) => {\n setSelectedFieldConfigId(newSelectedWidgetId);\n setValues(updatePropertyFromWidget(values, newSelectedWidgetId, propertyConfigs));\n // Ugly hack to autofocus the name field\n setTimeout(() => {\n nameFieldRef.current?.focus();\n }, 0);\n };\n\n let childComponent;\n if (selectedFieldConfigId === \"text_field\" ||\n selectedFieldConfigId === \"multiline\" ||\n selectedFieldConfigId === \"email\") {\n childComponent =\n <StringPropertyField widgetId={selectedFieldConfigId}\n disabled={disabled}\n showErrors={showErrors}/>;\n } else if (selectedFieldConfigId === \"url\") {\n childComponent =\n <UrlPropertyField disabled={disabled}\n showErrors={showErrors}/>;\n } else if (selectedFieldConfigId === \"markdown\") {\n childComponent =\n <MarkdownPropertyField disabled={disabled}\n showErrors={showErrors}/>;\n } else if (selectedFieldConfigId === \"select\" ||\n selectedFieldConfigId === \"number_select\") {\n childComponent = <EnumPropertyField\n multiselect={false}\n allowDataInference={allowDataInference}\n updateIds={!existing}\n disabled={disabled}\n getData={getData}\n showErrors={showErrors}/>;\n } else if (selectedFieldConfigId === \"multi_select\" ||\n selectedFieldConfigId === \"multi_number_select\") {\n childComponent = <EnumPropertyField\n multiselect={true}\n updateIds={!existing}\n disabled={disabled}\n allowDataInference={allowDataInference}\n getData={getData}\n showErrors={showErrors}/>;\n } else if (selectedFieldConfigId === \"file_upload\") {\n childComponent =\n <StoragePropertyField existing={existing}\n multiple={false}\n disabled={disabled}/>;\n } else if (selectedFieldConfigId === \"multi_file_upload\") {\n childComponent =\n <StoragePropertyField existing={existing}\n multiple={true}\n disabled={disabled}/>;\n } else if (selectedFieldConfigId === \"switch\") {\n childComponent = <BooleanPropertyField disabled={disabled}/>;\n } else if (selectedFieldConfigId === \"number_input\") {\n childComponent = <NumberPropertyField disabled={disabled}/>;\n } else if (selectedFieldConfigId === \"group\") {\n childComponent =\n <MapPropertyField disabled={disabled} getData={getData} allowDataInference={allowDataInference}\n collectionEditable={collectionEditable}\n propertyConfigs={propertyConfigs}/>;\n } else if (selectedFieldConfigId === \"block\") {\n childComponent =\n <BlockPropertyField disabled={disabled} getData={getData} allowDataInference={allowDataInference}\n collectionEditable={collectionEditable}\n propertyConfigs={propertyConfigs}/>;\n } else if (selectedFieldConfigId === \"reference\") {\n childComponent =\n <ReferencePropertyField showErrors={showErrors}\n existing={existing}\n multiple={false}\n disabled={disabled}/>;\n } else if (selectedFieldConfigId === \"reference_as_string\") {\n childComponent =\n <ReferencePropertyField showErrors={showErrors}\n existing={existing}\n asString={true}\n multiple={false}\n disabled={disabled}/>;\n } else if (selectedFieldConfigId === \"date_time\") {\n childComponent = <DateTimePropertyField disabled={disabled}/>;\n } else if (selectedFieldConfigId === \"multi_references\") {\n childComponent =\n <ReferencePropertyField showErrors={showErrors}\n existing={existing}\n multiple={true}\n disabled={disabled}/>;\n } else if (selectedFieldConfigId === \"repeat\") {\n childComponent =\n <RepeatPropertyField showErrors={showErrors}\n existing={existing}\n getData={getData}\n allowDataInference={allowDataInference}\n disabled={disabled}\n collectionEditable={collectionEditable}\n propertyConfigs={propertyConfigs}/>;\n } else if (selectedFieldConfigId === \"key_value\") {\n childComponent =\n <KeyValuePropertyField disabled={disabled}/>;\n } else {\n childComponent = null;\n }\n\n return (\n <>\n {disabled && <InfoLabel mode={\"warn\"}>\n <Typography>This property can't be edited</Typography>\n <Typography variant={\"caption\"}>\n You may not have permission to\n edit it or it is defined in code with no <code>editable</code> flag\n </Typography>\n </InfoLabel>}\n\n <div className=\"flex mt-2 justify-between\">\n <div className={\"w-full flex flex-col gap-2\"}>\n <WidgetSelectView\n initialProperty={values}\n value={selectedFieldConfigId as PropertyConfigId}\n onValueChange={(value) => onWidgetSelectChanged(value as PropertyConfigId)}\n open={selectOpen}\n onOpenChange={(open, hasValue) => {\n if (!hasValue) {\n onDismiss?.();\n }\n setSelectOpen(open);\n }}\n disabled={disabled}\n showError={Boolean(selectedWidgetError)}\n existing={existing}\n propertyConfigs={propertyConfigs}\n inArray={inArray}/>\n\n {selectedWidgetError &&\n <Typography variant=\"caption\"\n className={\"ml-3.5\"}\n color={\"error\"}>Required</Typography>}\n\n {/*<Typography variant=\"caption\" className={\"ml-3.5\"}>Define your own custom properties and*/}\n {/* components</Typography>*/}\n\n </div>\n\n {onDelete && values?.id &&\n <IconButton\n variant={\"ghost\"}\n className=\"m-4\"\n disabled={disabled}\n onClick={() => setDeleteDialogOpen(true)}>\n <DeleteIcon/>\n </IconButton>}\n </div>\n\n <div className={\"grid grid-cols-12 gap-y-12 mt-8 mb-8\"}>\n {includeIdAndTitle &&\n <CommonPropertyFields showErrors={showErrors}\n disabledId={existing}\n isNewProperty={!existing}\n disabled={disabled}\n autoUpdateId={autoUpdateId}\n ref={nameFieldRef}/>}\n\n {childComponent}\n\n <div className={\"col-span-12\"}>\n <AdvancedPropertyValidation disabled={disabled}/>\n </div>\n </div>\n\n {onDelete &&\n <ConfirmationDialog open={deleteDialogOpen}\n onAccept={() => onDelete(values?.id, propertyNamespace)}\n onCancel={() => setDeleteDialogOpen(false)}\n title={<div>Delete this property?</div>}\n body={\n <div> This will <b>not delete any\n data</b>, only modify the\n collection.</div>\n }/>}\n\n </>\n );\n}\n\nconst idRegEx = /^[a-zA-Z_][a-zA-Z0-9_]*$/;\n\nfunction validateId(value?: string, existingPropertyKeys?: string[]) {\n\n let error;\n if (!value) {\n error = \"You must specify an id for the field\";\n }\n if (value && !value.match(idRegEx)) {\n error = \"The id can only contain letters, numbers and underscores (_), and not start with a number\";\n }\n if (value && existingPropertyKeys && existingPropertyKeys.includes(value)) {\n error = \"There is another field with this ID already\";\n }\n return error;\n}\n\nfunction validateName(value: string) {\n let error;\n if (!value) {\n error = \"You must specify a title for the field\";\n }\n return error;\n}\n\nconst WIDGET_TYPE_MAP: Record<PropertyConfigId, string> = {\n text_field: \"Text\",\n multiline: \"Text\",\n markdown: \"Text\",\n url: \"Text\",\n email: \"Text\",\n switch: \"Boolean\",\n select: \"Select\",\n multi_select: \"Select\",\n number_input: \"Number\",\n number_select: \"Select\",\n multi_number_select: \"Select\",\n file_upload: \"File\",\n multi_file_upload: \"File\",\n reference: \"Reference\",\n reference_as_string: \"Text\",\n multi_references: \"Reference\",\n date_time: \"Date\",\n group: \"Group\",\n key_value: \"Group\",\n repeat: \"Array\",\n custom_array: \"Array\",\n block: \"Group\"\n};\n\nfunction WidgetSelectView({\n initialProperty,\n value,\n onValueChange,\n open,\n onOpenChange,\n disabled,\n showError,\n existing,\n propertyConfigs,\n inArray\n }: {\n initialProperty?: PropertyWithId,\n value?: PropertyConfigId,\n onValueChange: (value: string) => void,\n showError: boolean,\n open: boolean,\n onOpenChange: (open: boolean, hasValue: boolean) => void,\n disabled: boolean,\n existing: boolean,\n propertyConfigs: Record<string, PropertyConfig>,\n inArray?: boolean\n}) {\n\n const allSupportedFields = Object.entries(supportedFields).concat(Object.entries(propertyConfigs));\n\n const displayedWidgets = (inArray\n ? allSupportedFields.filter(([_, propertyConfig]) => !isPropertyBuilder(propertyConfig.property) && propertyConfig.property?.dataType !== \"array\")\n : allSupportedFields)\n .map(([key, propertyConfig]) => ({\n [key]: propertyConfig\n }))\n .reduce((a, b) => {\n return {\n ...a,\n ...b\n }\n }, {});\n\n const key = value;\n const propertyConfig = key ? (DEFAULT_FIELD_CONFIGS[key] ?? propertyConfigs[key]) : undefined;\n const baseProperty = propertyConfig?.property;\n const baseFieldConfig = baseProperty && !isPropertyBuilder(baseProperty) ? getFieldConfig(baseProperty, propertyConfigs) : undefined;\n const computedFieldConfig = baseFieldConfig && propertyConfig ? mergeDeep(baseFieldConfig, propertyConfig) : propertyConfig;\n\n const groups: string[] = [...new Set(Object.keys(displayedWidgets).map(key => {\n const group = WIDGET_TYPE_MAP[key as PropertyConfigId];\n if (group) {\n return group;\n }\n return \"Custom/Other\"\n }))];\n\n return <>\n <div\n onClick={() => {\n if (!disabled) {\n onOpenChange(!open, Boolean(value));\n }\n }}\n className={cls(\n \"select-none rounded-md text-sm p-4\",\n fieldBackgroundMixin,\n disabled ? fieldBackgroundDisabledMixin : fieldBackgroundHoverMixin,\n \"relative flex items-center\",\n )}>\n {!value && <em>Select a property widget</em>}\n {value && computedFieldConfig && <div\n className={cls(\n \"flex items-center\")}>\n <div className={\"mr-8\"}>\n <PropertyConfigBadge propertyConfig={computedFieldConfig}/>\n </div>\n <div className={\"flex flex-col items-start text-base text-left\"}>\n <div>{computedFieldConfig.name}</div>\n <Typography variant={\"caption\"}\n color={\"secondary\"}>\n {computedFieldConfig.description}\n </Typography>\n </div>\n </div>}\n </div>\n <Dialog open={open}\n onOpenChange={(open) => onOpenChange(open, Boolean(value))}\n maxWidth={\"4xl\"}>\n <DialogTitle>\n Select a property widget\n </DialogTitle>\n <DialogContent>\n <div>\n {groups.map(group => {\n return <div key={group} className={\"mt-4\"}>\n <Typography variant={\"label\"}>{group}</Typography>\n <div className={\"grid grid-cols-1 md:grid-cols-2 gap-x-4 gap-y-2 mt-4\"}>\n {Object.entries(displayedWidgets).map(([key, propertyConfig]) => {\n const groupKey = WIDGET_TYPE_MAP[key as PropertyConfigId];\n if (groupKey === group) {\n return <WidgetSelectViewItem\n key={key}\n initialProperty={initialProperty}\n onClick={() => {\n onValueChange(key);\n onOpenChange(false, true);\n }}\n propertyConfig={propertyConfig}\n existing={existing}/>;\n }\n return null;\n })}\n </div>\n </div>;\n })}\n {/*{displayedWidgets.map(([key, propertyConfig]) => {*/}\n {/* return <WidgetSelectViewItem*/}\n {/* key={key}*/}\n {/* initialProperty={initialProperty}*/}\n {/* onClick={() => {*/}\n {/* onValueChange(key);*/}\n {/* onOpenChange(false);*/}\n {/* }}*/}\n {/* propertyConfig={propertyConfig}*/}\n {/* existing={existing}/>;*/}\n {/*})}*/}\n </div>\n </DialogContent>\n </Dialog>\n </>;\n}\n\nexport interface PropertySelectItemProps {\n onClick?: () => void;\n initialProperty?: PropertyWithId;\n propertyConfig: PropertyConfig;\n existing: boolean;\n}\n\nexport function WidgetSelectViewItem({\n onClick,\n initialProperty,\n // optionDisabled,\n propertyConfig,\n existing\n }: PropertySelectItemProps) {\n const baseProperty = propertyConfig.property;\n const shouldWarnChangingDataType = existing && !isPropertyBuilder(baseProperty) && baseProperty.dataType !== initialProperty?.dataType;\n\n return <Card\n onClick={onClick}\n className={\"flex flex-row items-center px-4 py-2 m-1\"}>\n <div\n className={cls(\n \"flex flex-row items-center text-base min-h-[48px]\",\n )}>\n <div className={\"mr-8\"}>\n <PropertyConfigBadge propertyConfig={propertyConfig} disabled={shouldWarnChangingDataType}/>\n </div>\n <div>\n <div className={\"flex flex-row gap-2 items-center\"}>\n {shouldWarnChangingDataType && <Tooltip\n title={\"This widget uses a different data type than the initially selected widget. This can cause errors with existing data.\"}>\n <WarningIcon size=\"smallest\" className={\"w-4\"}/>\n </Tooltip>}\n <Typography\n color={shouldWarnChangingDataType ? \"secondary\" : undefined}>{propertyConfig.name}</Typography>\n </div>\n\n <Typography variant={\"caption\"}\n color={\"secondary\"}\n className={\"max-w-sm\"}>\n {propertyConfig.description}\n </Typography>\n\n </div>\n </div>\n </Card>\n}\n","export function camelCase(str: string): string {\n if (!str) return \"\";\n if (str.length === 1) return str.toLowerCase();\n\n // Split by hyphens, underscores, or spaces and filter out empty strings\n const parts = str.split(/[-_ ]+/).filter(Boolean);\n\n if (parts.length === 0) return \"\";\n\n // Start with first part in lowercase\n return parts[0].toLowerCase() +\n // Transform remaining parts to have first letter uppercase\n parts.slice(1)\n .map(part => part.charAt(0).toUpperCase() + part.substring(1).toLowerCase())\n .join('');\n}\n","import { EntityCollection, isEmptyObject, useSnackbarController } from \"@firecms/core\";\nimport { Button, ContentCopyIcon, Dialog, DialogActions, DialogContent, DialogTitle, Typography } from \"@firecms/ui\";\nimport React from \"react\";\nimport JSON5 from \"json5\";\nimport { Highlight, themes } from \"prism-react-renderer\"\nimport { camelCase } from \"./utils/strings\";\nimport { clone } from \"@firecms/formex\";\n\nexport function GetCodeDialog({\n collection,\n onOpenChange,\n open\n }: { onOpenChange: (open: boolean) => void, collection: any, open: any }) {\n\n const snackbarController = useSnackbarController();\n\n const code = collection\n ? \"import { EntityCollection } from \\\"@firecms/core\\\";\\n\\nconst \" + (collection?.name ? camelCase(collection.name) : \"my\") + \"Collection:EntityCollection = \" + JSON5.stringify(collectionToCode({ ...collection }), null, \"\\t\")\n : \"No collection selected\";\n return <Dialog open={open}\n onOpenChange={onOpenChange}\n maxWidth={\"4xl\"}>\n <DialogTitle variant={\"h6\"}>Code for {collection.name}</DialogTitle>\n <DialogContent>\n\n <Typography variant={\"body2\"} className={\"my-4 mb-8\"}>\n If you want to customise the collection in code, you can add this collection code to your CMS\n app configuration.\n More info in the <a\n rel=\"noopener noreferrer\"\n href={\"https://firecms.co/docs/cloud/quickstart\"}>docs</a>.\n </Typography>\n <Highlight\n theme={themes.vsDark}\n code={code}\n language=\"typescript\"\n >\n {({\n className,\n style,\n tokens,\n getLineProps,\n getTokenProps\n }) => (\n <pre style={style} className={\"p-4 rounded text-sm\"}>\n {tokens.map((line, i) => (\n <div key={i} {...getLineProps({ line })}>\n {line.map((token, key) => (\n <span key={key} {...getTokenProps({ token })} />\n ))}\n </div>\n ))}\n </pre>\n )}\n </Highlight>\n\n </DialogContent>\n <DialogActions>\n <Button\n variant={\"text\"}\n size={\"small\"}\n color={\"primary\"}\n onClick={(e) => {\n e.stopPropagation();\n e.preventDefault();\n snackbarController.open({\n type: \"success\",\n message: \"Copied\"\n })\n return navigator.clipboard.writeText(code);\n }}>\n <ContentCopyIcon size={\"small\"}/>\n Copy to clipboard\n </Button>\n <Button onClick={() => onOpenChange(false)}>Close</Button>\n </DialogActions>\n </Dialog>;\n}\n\nfunction collectionToCode(collection: EntityCollection): object {\n\n const propertyCleanup = (value: any): any => {\n if (value === undefined || value === null) {\n return value;\n }\n const valueCopy = clone(value);\n if (typeof valueCopy === \"function\") {\n return valueCopy;\n }\n if (Array.isArray(valueCopy)) {\n return valueCopy.map((v: any) => propertyCleanup(v));\n }\n if (typeof valueCopy === \"object\") {\n if (valueCopy === null)\n return valueCopy;\n Object.keys(valueCopy).forEach((key) => {\n if (!isEmptyObject(valueCopy)) {\n const childRes = propertyCleanup(valueCopy[key]);\n if (childRes !== null && childRes !== undefined && childRes !== false && !isEmptyObject(childRes)) {\n valueCopy[key] = childRes;\n } else {\n delete valueCopy[key];\n }\n }\n });\n delete valueCopy.fromBuilder;\n delete valueCopy.resolved;\n delete valueCopy.propertiesOrder;\n delete valueCopy.propertyConfig;\n delete valueCopy.resolvedProperties;\n delete valueCopy.editable;\n\n }\n\n return valueCopy;\n }\n\n return {\n id: collection.id,\n name: collection.name,\n singularName: collection.singularName,\n path: collection.path,\n description: collection.description,\n editable: true,\n collectionGroup: collection.collectionGroup,\n icon: collection.icon,\n group: collection.group,\n customId: collection.customId,\n initialFilter: collection.initialFilter,\n initialSort: collection.initialSort,\n properties: Object.entries({\n ...(collection.properties ?? {})\n })\n .map(([key, value]) => ({\n [key]: propertyCleanup(value)\n }))\n .reduce((a, b) => ({ ...a,\n...b }), {}),\n subcollections: (collection.subcollections ?? []).map(collectionToCode)\n }\n\n}\n","import React, { useEffect, useMemo, useState } from \"react\";\n\nimport { Field, getIn, useFormex } from \"@firecms/formex\";\nimport {\n EntityCollection,\n ErrorBoundary,\n isPropertyBuilder,\n makePropertiesEditable,\n Properties,\n Property,\n PropertyConfig,\n PropertyOrBuilder,\n useLargeLayout,\n User,\n useSnackbarController\n} from \"@firecms/core\";\nimport {\n AddIcon,\n AutorenewIcon,\n Button,\n CircularProgress,\n cls,\n CodeIcon,\n DebouncedTextField,\n defaultBorderMixin,\n IconButton,\n Tooltip,\n Typography,\n} from \"@firecms/ui\";\n\nimport { getFullId, idToPropertiesPath, namespaceToPropertiesOrderPath } from \"./util\";\nimport { OnPropertyChangedParams, PropertyForm, PropertyFormDialog } from \"./PropertyEditView\";\nimport { PropertyTree } from \"./PropertyTree\";\nimport { PersistedCollection } from \"../../types/persisted_collection\";\nimport { GetCodeDialog } from \"./GetCodeDialog\";\n\ntype CollectionEditorFormProps = {\n showErrors: boolean;\n isNewCollection: boolean;\n propertyErrorsRef?: React.MutableRefObject<any>;\n onPropertyError: (propertyKey: string, namespace: string | undefined, error?: Record<string, any>) => void;\n setDirty?: (dirty: boolean) => void;\n reservedGroups?: string[];\n extraIcon: React.ReactNode;\n getUser?: (uid: string) => User | null;\n getData?: () => Promise<object[]>;\n doCollectionInference?: (collection: PersistedCollection) => Promise<Partial<EntityCollection> | null> | undefined;\n propertyConfigs: Record<string, PropertyConfig>;\n collectionEditable: boolean;\n};\n\nexport function CollectionPropertiesEditorForm({\n showErrors,\n isNewCollection,\n propertyErrorsRef,\n onPropertyError,\n setDirty,\n reservedGroups,\n extraIcon,\n getUser,\n getData,\n doCollectionInference,\n propertyConfigs,\n collectionEditable\n }: CollectionEditorFormProps) {\n\n const {\n values,\n setFieldValue,\n setFieldError,\n setFieldTouched,\n errors,\n dirty\n } = useFormex<PersistedCollection>();\n\n const snackbarController = useSnackbarController();\n\n const largeLayout = useLargeLayout();\n const asDialog = !largeLayout\n\n // index of the selected property within the namespace\n const [selectedPropertyIndex, setSelectedPropertyIndex] = useState<number | undefined>();\n const [selectedPropertyKey, setSelectedPropertyKey] = useState<string | undefined>();\n const [selectedPropertyNamespace, setSelectedPropertyNamespace] = useState<string | undefined>();\n\n const selectedPropertyFullId = selectedPropertyKey ? getFullId(selectedPropertyKey, selectedPropertyNamespace) : undefined;\n const selectedProperty = selectedPropertyFullId ? getIn(values.properties, selectedPropertyFullId.replaceAll(\".\", \".properties.\")) : undefined;\n const [codeDialogOpen, setCodeDialogOpen] = useState<boolean>(false);\n\n const [inferringProperties, setInferringProperties] = useState<boolean>(false);\n\n const [newPropertyDialogOpen, setNewPropertyDialogOpen] = useState<boolean>(false);\n const [inferredPropertyKeys, setInferredPropertyKeys] = useState<string[]>([]);\n\n const currentPropertiesOrderRef = React.useRef<{\n [key: string]: string[]\n }>(values.propertiesOrder ? { \"\": values.propertiesOrder } : {});\n\n useEffect(() => {\n if (setDirty)\n setDirty(dirty);\n }, [dirty]);\n\n const inferPropertiesFromData = doCollectionInference\n ? (): void => {\n if (!doCollectionInference)\n return;\n\n setInferringProperties(true);\n\n console.debug(\"CollectionEditor: inferring properties from data\", doCollectionInference, values);\n // @ts-ignore\n doCollectionInference(values)\n .then((newCollection) => {\n\n if (newCollection)\n makePropertiesEditable(newCollection.properties as Properties);\n\n if (!newCollection) {\n snackbarController.open({\n type: \"error\",\n message: \"Could not infer properties from data\"\n });\n return;\n }\n // find properties in the new collection, not present in the current one\n const newPropertyKeys = (newCollection.properties ? Object.keys(newCollection.properties) : [])\n .filter((propertyKey) => !values.properties[propertyKey]);\n if (newPropertyKeys.length === 0) {\n snackbarController.open({\n type: \"info\",\n message: \"No new properties found in existing data\"\n });\n return;\n }\n // add them to the current collection\n const updatedProperties = {\n ...newPropertyKeys.reduce((acc, propertyKey) => {\n acc[propertyKey] = (newCollection.properties ?? {})[propertyKey];\n return acc;\n }, {} as {\n [key: string]: PropertyOrBuilder\n }),\n ...values.properties\n };\n const updatedPropertiesOrder = [\n ...newPropertyKeys,\n ...(values.propertiesOrder ?? [])\n ];\n setFieldValue(\"properties\", updatedProperties, false);\n\n updatePropertiesOrder(updatedPropertiesOrder);\n\n setInferredPropertyKeys(newPropertyKeys);\n })\n .finally(() => {\n setInferringProperties(false);\n })\n }\n : undefined;\n\n const getCurrentPropertiesOrder = (namespace?: string) => {\n if (!namespace) return currentPropertiesOrderRef.current[\"\"] ?? getIn(values, namespaceToPropertiesOrderPath());\n return currentPropertiesOrderRef.current[namespace] ?? getIn(values, namespaceToPropertiesOrderPath(namespace));\n };\n\n const updatePropertiesOrder = (newPropertiesOrder: string[], namespace?: string) => {\n const propertiesOrderPath = namespaceToPropertiesOrderPath(namespace);\n\n setFieldValue(propertiesOrderPath, newPropertiesOrder, false);\n currentPropertiesOrderRef.current[namespace ?? \"\"] = newPropertiesOrder;\n\n };\n\n const deleteProperty = (propertyKey?: string, namespace?: string) => {\n const fullId = propertyKey ? getFullId(propertyKey, namespace) : undefined;\n if (!fullId)\n throw Error(\"collection editor miss config\");\n\n setFieldValue(idToPropertiesPath(fullId), undefined, false);\n\n const currentPropertiesOrder = getCurrentPropertiesOrder(namespace);\n if (currentPropertiesOrder) {\n const newPropertiesOrder = currentPropertiesOrder.filter((p) => p !== propertyKey);\n updatePropertiesOrder(newPropertiesOrder, namespace);\n }\n\n setNewPropertyDialogOpen(false);\n\n setSelectedPropertyIndex(undefined);\n setSelectedPropertyKey(undefined);\n setSelectedPropertyNamespace(undefined);\n };\n\n const onPropertyMove = (propertiesOrder: string[], namespace?: string) => {\n setFieldValue(namespaceToPropertiesOrderPath(namespace), propertiesOrder, false);\n };\n\n const onPropertyCreated = ({\n id,\n property\n }: {\n id?: string,\n property: Property\n }) => {\n if (!id) {\n throw Error(\"Need to include an ID when creating a new property\")\n }\n setFieldValue(\"properties\", {\n ...(values.properties ?? {}),\n [id]: property\n }, false);\n\n const newPropertiesOrder = [...(values.propertiesOrder ?? Object.keys(values.properties)), id];\n updatePropertiesOrder(newPropertiesOrder);\n\n setNewPropertyDialogOpen(false);\n if (largeLayout) {\n setSelectedPropertyIndex(newPropertiesOrder.indexOf(id));\n setSelectedPropertyKey(id);\n }\n setSelectedPropertyNamespace(undefined);\n };\n\n const onPropertyChanged = ({\n id,\n property,\n previousId,\n namespace\n }: OnPropertyChangedParams) => {\n\n const fullId = id ? getFullId(id, namespace) : undefined;\n const propertyPath = fullId ? idToPropertiesPath(fullId) : undefined;\n\n // If the id has changed we need to a little cleanup\n if (previousId && previousId !== id) {\n\n const previousFullId = getFullId(previousId, namespace);\n const previousPropertyPath = idToPropertiesPath(previousFullId);\n\n const currentPropertiesOrder = getCurrentPropertiesOrder(namespace);\n\n // replace previousId with id in propertiesOrder\n const newPropertiesOrder = currentPropertiesOrder\n .map((p) => p === previousId ? id : p)\n .filter((p) => p !== undefined) as string[];\n\n updatePropertiesOrder(newPropertiesOrder, namespace);\n\n if (id) {\n setSelectedPropertyIndex(newPropertiesOrder.indexOf(id));\n setSelectedPropertyKey(id);\n }\n setFieldValue(previousPropertyPath, undefined, false);\n setFieldTouched(previousPropertyPath, false, false);\n }\n\n console.debug(\"onPropertyChanged\", {\n id,\n property,\n previousId,\n namespace,\n propertyPath\n })\n\n if (propertyPath) {\n setFieldValue(propertyPath, property, false);\n setFieldTouched(propertyPath, true, false);\n }\n\n };\n\n const onPropertyErrorInternal = (id: string, namespace?: string, error?: Record<string, any>) => {\n const propertyPath = id ? getFullId(id, namespace) : undefined;\n console.debug(\"onPropertyErrorInternal\", {\n id,\n namespace,\n error,\n propertyPath\n });\n if (propertyPath) {\n const hasError = error && Object.keys(error).length > 0;\n onPropertyError(id, namespace, hasError ? error : undefined);\n setFieldError(idToPropertiesPath(propertyPath), hasError ? \"Property error\" : undefined);\n }\n }\n\n const closePropertyDialog = () => {\n setSelectedPropertyIndex(undefined);\n setSelectedPropertyKey(undefined);\n };\n\n const initialErrors = selectedPropertyKey && propertyErrorsRef?.current?.properties ? propertyErrorsRef.current.properties[selectedPropertyKey] : undefined;\n\n const emptyCollection = values?.propertiesOrder === undefined || values.propertiesOrder.length === 0;\n\n const usedPropertiesOrder = (values.propertiesOrder\n ? values.propertiesOrder\n : Object.keys(values.properties)) as string[];\n\n const owner = useMemo(() => values.ownerId && getUser ? getUser(values.ownerId) : null, [getUser, values.ownerId]);\n\n const onPropertyClick = (propertyKey: string, namespace?: string) => {\n console.debug(\"CollectionEditor: onPropertyClick\", {\n propertyKey,\n namespace\n });\n setSelectedPropertyIndex(usedPropertiesOrder.indexOf(propertyKey));\n setSelectedPropertyKey(propertyKey);\n setSelectedPropertyNamespace(namespace);\n };\n\n const body = (\n <div className={\"grid grid-cols-12 gap-2 h-full bg-white dark:bg-surface-950\"}>\n <div className={cls(\n \"bg-surface-50 dark:bg-surface-900\",\n \"p-4 md:p-8 pb-20 md:pb-20\",\n \"col-span-12 lg:col-span-5 h-full overflow-auto\",\n !asDialog && \"border-r \" + defaultBorderMixin\n )}>\n\n <div className=\"flex my-2\">\n\n <div className=\"flex-grow mb-4\">\n\n <Field\n name={\"name\"}\n as={DebouncedTextField}\n invisible={true}\n className=\"-ml-1\"\n inputClassName=\"text-2xl font-headers\"\n placeholder={\"Collection name\"}\n size={\"small\"}\n required\n error={Boolean(errors?.name)}/>\n\n {owner &&\n <Typography variant={\"body2\"}\n className={\"ml-2\"}\n color={\"secondary\"}>\n Created by {owner.displayName}\n </Typography>}\n </div>\n\n {extraIcon && <div className=\"ml-4\">\n {extraIcon}\n </div>}\n\n <div className=\"ml-1 mt-2 flex flex-row gap-2\">\n <Tooltip title={\"Get the code for this collection\"}\n asChild={true}>\n <IconButton\n variant={\"filled\"}\n disabled={inferringProperties}\n onClick={() => setCodeDialogOpen(true)}>\n <CodeIcon/>\n </IconButton>\n </Tooltip>\n {inferPropertiesFromData && <Tooltip title={\"Add new properties based on data\"}\n asChild={true}>\n <IconButton\n variant={\"filled\"}\n disabled={inferringProperties}\n onClick={inferPropertiesFromData}>\n {inferringProperties ? <CircularProgress size={\"small\"}/> : <AutorenewIcon/>}\n </IconButton>\n </Tooltip>}\n <Tooltip title={\"Add new property\"}\n asChild={true}>\n <Button\n variant={\"outlined\"}\n 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 onClick={() => setNewPropertyDialogOpen(true)}\n >\n <AddIcon/>\n Add new property\n </Button>\n </div>}\n\n {selectedProperty && isPropertyBuilder(selectedProperty) &&\n <Typography variant={\"label\"} className=\"flex items-center justify-center\">\n {\"This property is defined as a property builder in code\"}\n </Typography>}\n </div>\n </div>}\n\n {asDialog && <PropertyFormDialog\n inArray={false}\n open={selectedPropertyIndex !== undefined}\n key={`edit_view_${selectedPropertyIndex}`}\n autoUpdateId={!selectedProperty}\n allowDataInference={!isNewCollection}\n existingProperty={true}\n autoOpenTypeSelect={false}\n propertyKey={selectedPropertyKey}\n propertyNamespace={selectedPropertyNamespace}\n property={selectedProperty}\n onPropertyChanged={onPropertyChanged}\n onDelete={deleteProperty}\n onError={onPropertyErrorInternal}\n forceShowErrors={showErrors}\n initialErrors={initialErrors}\n getData={getData}\n propertyConfigs={propertyConfigs}\n collectionEditable={collectionEditable}\n onCancel={closePropertyDialog}\n onOkClicked={asDialog\n ? closePropertyDialog\n : undefined\n }/>}\n\n </div>);\n\n return (<>\n\n {body}\n\n {/* This is the dialog used for new properties*/}\n <PropertyFormDialog\n inArray={false}\n existingProperty={false}\n autoOpenTypeSelect={true}\n autoUpdateId={true}\n forceShowErrors={showErrors}\n open={newPropertyDialogOpen}\n onCancel={() => setNewPropertyDialogOpen(false)}\n onPropertyChanged={onPropertyCreated}\n getData={getData}\n allowDataInference={!isNewCollection}\n propertyConfigs={propertyConfigs}\n collectionEditable={collectionEditable}\n existingPropertyKeys={values.propertiesOrder as string[]}/>\n\n <ErrorBoundary>\n <GetCodeDialog\n collection={values}\n open={codeDialogOpen}\n onOpenChange={setCodeDialogOpen}/>\n </ErrorBoundary>\n </>\n );\n}\n","import React from \"react\";\nimport { Button, Dialog, DialogActions, DialogContent, DialogTitle, Typography } from \"@firecms/ui\";\n\nexport interface UnsavedChangesDialogProps {\n open: boolean;\n body?: React.ReactNode;\n title?: string;\n handleOk: () => void;\n handleCancel: () => void;\n}\n\nexport function UnsavedChangesDialog({\n open,\n handleOk,\n handleCancel,\n body,\n title\n }: UnsavedChangesDialogProps) {\n\n return (\n <Dialog\n open={open}\n onOpenChange={(open) => open ? handleCancel() : handleOk()}\n aria-labelledby=\"alert-dialog-title\"\n aria-describedby=\"alert-dialog-description\"\n >\n\n <DialogTitle>{title ?? \"Unsaved changes\"}</DialogTitle>\n <DialogContent>\n {body && <Typography>\n {body}\n </Typography>}\n <Typography>\n Are you sure?\n </Typography>\n\n </DialogContent>\n\n <DialogActions>\n <Button variant=\"text\"\n color={\"primary\"}\n onClick={handleCancel} autoFocus> Cancel </Button>\n <Button\n color={\"primary\"}\n onClick={handleOk}> Ok </Button>\n </DialogActions>\n </Dialog>\n );\n}\n","import { useCustomizationController } from \"@firecms/core\";\nimport { Button, Dialog, DialogActions, DialogContent, DialogTitle, Typography } from \"@firecms/ui\";\nimport React from \"react\";\n\nexport function EntityCustomViewsSelectDialog({\n open,\n onClose\n }: { open: boolean, onClose: (selectedViewKey?: string) => void }) {\n const {\n entityViews,\n } = useCustomizationController();\n\n return <Dialog\n maxWidth={\"md\"}\n open={open}>\n <DialogTitle>Select custom view</DialogTitle>\n <DialogContent className={\"flex flex-col gap-4\"}>\n {entityViews?.map((view) => {\n return <Button\n key={view.key}\n onClick={() => onClose(view.key)}\n fullWidth\n variant={\"text\"}\n >\n {view.name} ({view.key})\n </Button>;\n })}\n {(entityViews ?? []).length === 0 &&\n <Typography variant={\"body2\"}>\n No custom views defined. Define your custom views in the customization settings, before using this\n dialog.\n </Typography>\n }\n </DialogContent>\n <DialogActions>\n <Button variant={\"outlined\"}\n color={\"primary\"}\n onClick={() => onClose()}>Cancel</Button>\n </DialogActions>\n </Dialog>\n}\n","import React from \"react\";\nimport {\n ConfirmationDialog,\n EntityCollection,\n EntityCustomView,\n resolveEntityView,\n useCustomizationController,\n User\n} from \"@firecms/core\";\nimport {\n AddIcon,\n Alert,\n Button,\n Container,\n DeleteIcon,\n IconButton,\n Paper,\n Table,\n TableBody,\n TableCell,\n TableRow,\n Tooltip,\n Typography,\n} from \"@firecms/ui\";\nimport { CollectionEditorDialog } from \"./CollectionEditorDialog\";\nimport { CollectionsConfigController } from \"../../types/config_controller\";\nimport { PersistedCollection } from \"../../types/persisted_collection\";\nimport { CollectionInference } from \"../../types/collection_inference\";\nimport { EntityCustomViewsSelectDialog } from \"./EntityCustomViewsSelectDialog\";\nimport { useFormex } from \"@firecms/formex\";\n\nexport function SubcollectionsEditTab({\n collection,\n parentCollection,\n configController,\n collectionInference,\n getUser,\n parentCollectionIds\n }: {\n collection: PersistedCollection,\n parentCollection?: EntityCollection,\n configController: CollectionsConfigController;\n collectionInference?: CollectionInference;\n getUser?: (uid: string) => User | null;\n parentCollectionIds?: string[];\n}) {\n\n const { entityViews: contextEntityViews } = useCustomizationController();\n\n const [subcollectionToDelete, setSubcollectionToDelete] = React.useState<string | undefined>();\n const [addEntityViewDialogOpen, setAddEntityViewDialogOpen] = React.useState<boolean>(false);\n const [viewToDelete, setViewToDelete] = React.useState<string | undefined>();\n\n const [currentDialog, setCurrentDialog] = React.useState<{\n isNewCollection: boolean,\n editedCollectionId?: string,\n }>();\n\n const {\n values,\n setFieldValue,\n } = useFormex<EntityCollection>();\n\n const [subcollections, setSubcollections] = React.useState<EntityCollection[]>(collection.subcollections ?? []);\n const resolvedEntityViews = values.entityViews?.filter(e => typeof e === \"string\")\n .map(e => resolveEntityView(e, contextEntityViews))\n .filter(Boolean) as EntityCustomView[] ?? [];\n const hardCodedEntityViews = collection.entityViews?.filter(e => typeof e !== \"string\") as EntityCustomView[] ?? [];\n const totalEntityViews = resolvedEntityViews.length + hardCodedEntityViews.length;\n\n return (\n <div className={\"overflow-auto my-auto\"}>\n <Container maxWidth={\"2xl\"} className={\"flex flex-col gap-4 p-8 m-auto\"}>\n <div className={\"flex flex-col gap-16\"}>\n\n <div className={\"flex-grow flex flex-col gap-4 items-start\"}>\n <Typography variant={\"h5\"}>\n Subcollections of {values.name}\n </Typography>\n\n <Paper className={\"flex flex-col gap-4 p-2 w-full\"}>\n {subcollections && subcollections.length > 0 && <Table>\n <TableBody>\n {subcollections.map((subcollection) => (\n <TableRow key={subcollection.path}\n onClick={() => setCurrentDialog({\n isNewCollection: false,\n editedCollectionId: subcollection.id\n })}>\n <TableCell\n align=\"left\">\n <Typography variant={\"subtitle2\"} className={\"flex-grow\"}>\n {subcollection.name}\n </Typography>\n </TableCell>\n <TableCell\n align=\"right\">\n <Tooltip title={\"Remove\"}\n asChild={true}>\n <IconButton size=\"small\"\n onClick={(e) => {\n e.preventDefault();\n e.stopPropagation();\n setSubcollectionToDelete(subcollection.id);\n }}\n color=\"inherit\">\n <DeleteIcon size={\"small\"}/>\n </IconButton>\n </Tooltip>\n </TableCell>\n </TableRow>\n ))}\n </TableBody>\n </Table>}\n\n <Button\n onClick={() => {\n setCurrentDialog({\n isNewCollection: true\n });\n }}\n variant={\"text\"}\n startIcon={<AddIcon/>}>\n Add subcollection\n </Button>\n\n </Paper>\n\n </div>\n\n <div className={\"flex-grow flex flex-col gap-4 items-start\"}>\n <Typography variant={\"h5\"}>\n Custom views\n </Typography>\n\n {totalEntityViews === 0 &&\n <Alert action={<Button variant=\"text\"\n size={\"small\"}\n href={\"https://firecms.co/docs/cloud/quickstart\"}\n component={\"a\"}\n rel=\"noopener noreferrer\"\n target=\"_blank\">More info</Button>}>\n Define your own custom views by uploading them with the CLI.\n </Alert>\n }\n\n {<>\n <Paper className={\"flex flex-col gap-4 p-2 w-full\"}>\n <Table>\n <TableBody>\n {resolvedEntityViews.map((view) => (\n <TableRow key={view.key}>\n <TableCell\n align=\"left\">\n <Typography variant={\"subtitle2\"} className={\"flex-grow\"}>\n {view.name}\n </Typography>\n </TableCell>\n <TableCell\n align=\"right\">\n <Tooltip title={\"Remove\"}\n asChild={true}>\n <IconButton size=\"small\"\n onClick={(e) => {\n e.preventDefault();\n e.stopPropagation();\n setViewToDelete(view.key);\n }}\n color=\"inherit\">\n <DeleteIcon size={\"small\"}/>\n </IconButton>\n </Tooltip>\n </TableCell>\n </TableRow>\n ))}\n {hardCodedEntityViews.map((view) => (\n <TableRow key={view.key}>\n <TableCell\n align=\"left\">\n <Typography variant={\"subtitle2\"} className={\"flex-grow\"}>\n {view.name}\n </Typography>\n <Typography variant={\"caption\"} className={\"flex-grow\"}>\n This view is defined in code with\n key <code>{view.key}</code>\n </Typography>\n </TableCell>\n </TableRow>\n ))}\n </TableBody>\n </Table>\n\n <Button\n onClick={() => {\n setAddEntityViewDialogOpen(true);\n }}\n variant={\"text\"}\n startIcon={<AddIcon/>}>\n Add custom entity view\n </Button>\n </Paper>\n\n </>}\n\n\n </div>\n\n </div>\n </Container>\n\n <div style={{ height: \"52px\" }}/>\n\n {subcollectionToDelete &&\n <ConfirmationDialog open={Boolean(subcollectionToDelete)}\n onAccept={() => {\n const props = {\n id: subcollectionToDelete,\n parentCollectionIds: [...(parentCollectionIds ?? []), collection.id]\n };\n console.debug(\"Deleting subcollection\", props)\n configController.deleteCollection(props).then(() => {\n setSubcollectionToDelete(undefined);\n setSubcollections(subcollections?.filter(e => e.id !== subcollectionToDelete))\n });\n }}\n onCancel={() => setSubcollectionToDelete(undefined)}\n title={<>Delete this subcollection?</>}\n body={<> This will <b>not\n delete any data</b>, only\n the collection in the CMS</>}/>}\n {viewToDelete &&\n <ConfirmationDialog open={Boolean(viewToDelete)}\n onAccept={() => {\n setFieldValue(\"entityViews\", values.entityViews?.filter(e => e !== viewToDelete));\n setViewToDelete(undefined);\n }}\n onCancel={() => setViewToDelete(undefined)}\n title={<>Remove this view?</>}\n body={<>This will <b>not\n delete any data</b>, only\n the view in the CMS</>}/>}\n\n <CollectionEditorDialog\n open={Boolean(currentDialog)}\n configController={configController}\n parentCollection={collection}\n collectionInference={collectionInference}\n parentCollectionIds={[...parentCollectionIds ?? [], values.id]}\n isNewCollection={false}\n {...currentDialog}\n getUser={getUser}\n handleClose={(updatedCollection) => {\n if (updatedCollection && !subcollections.map(e => e.id).includes(updatedCollection.id)) {\n setSubcollections([...subcollections, updatedCollection]);\n }\n setCurrentDialog(undefined);\n }}/>\n\n <EntityCustomViewsSelectDialog\n open={addEntityViewDialogOpen}\n onClose={(selectedViewKey) => {\n if (selectedViewKey) {\n setFieldValue(\"entityViews\", [...(values.entityViews ?? []), selectedViewKey]);\n }\n setAddEntityViewDialogOpen(false);\n }}/>\n </div>\n );\n}\n","import { EntityCollection, makePropertiesEditable } from \"@firecms/core\";\n\nexport const productsCollectionTemplate: EntityCollection = {\n id: \"products\",\n path: \"products\",\n name: \"Products\",\n singularName: \"Product\",\n icon: \"shopping_cart\",\n description: \"List of the products currently sold in your shop\",\n properties: makePropertiesEditable({\n name: {\n dataType: \"string\",\n name: \"Name\",\n description: \"Name of this product\",\n validation: {\n required: true\n }\n },\n brand: {\n dataType: \"string\",\n name: \"Brand\",\n validation: {\n required: true\n }\n },\n description: {\n dataType: \"string\",\n name: \"Description\",\n description: \"Description of this product, supports markdown\",\n markdown: true\n },\n main_image: {\n dataType: \"string\",\n name: \"Image\",\n storage: {\n storagePath: \"images\",\n acceptedFiles: [\"image/*\"],\n },\n description: \"Upload field for images\"\n },\n available: {\n dataType: \"boolean\",\n name: \"Available\",\n columnWidth: 100,\n description: \"Is this product available in the website\"\n },\n price: {\n dataType: \"number\",\n name: \"Price\",\n validation: {\n requiredMessage: \"You must set a positive price\",\n min: 0\n }\n },\n images: {\n dataType: \"array\",\n name: \"Images\",\n hideFromCollection: true,\n of: {\n dataType: \"string\",\n storage: {\n storagePath: \"images\",\n acceptedFiles: [\"image/*\"]\n }\n }\n },\n related_products: {\n dataType: \"array\",\n name: \"Related products\",\n description: \"Products related to this one\",\n of: {\n dataType: \"reference\",\n path: \"products\"\n }\n },\n metadata: {\n name: \"Metadata\",\n description: \"This is an example of a map property\",\n dataType: \"map\",\n keyValue: true\n },\n added_on: {\n dataType: \"date\",\n name: \"Added on\",\n autoValue: \"on_create\"\n }\n })\n};\n","import { EntityCollection, makePropertiesEditable } from \"@firecms/core\";\n\nexport const blogCollectionTemplate:EntityCollection = {\n id: \"blog\",\n path: \"blog\",\n name: \"Blog\",\n singularName: \"Blog entry\",\n icon: \"article\",\n description: \"A collection of blog entries\",\n defaultSize: \"l\",\n properties: makePropertiesEditable({\n name: {\n name: \"Name\",\n validation: { required: true },\n dataType: \"string\"\n },\n header_image: {\n name: \"Header image\",\n dataType: \"string\",\n storage: {\n storagePath: \"images\",\n acceptedFiles: [\"image/*\"],\n metadata: {\n cacheControl: \"max-age=1000000\"\n }\n }\n },\n content: {\n name: \"Content\",\n description: \"Content blocks for the blog entry\",\n validation: { required: true },\n dataType: \"array\",\n oneOf: {\n typeField: \"type\",\n valueField: \"value\",\n properties: {\n text: {\n dataType: \"string\",\n name: \"Text\",\n markdown: true\n },\n quote: {\n dataType: \"string\",\n name: \"Quote\",\n multiline: true\n },\n images: {\n name: \"Images\",\n dataType: \"array\",\n of: {\n dataType: \"string\",\n storage: {\n storagePath: \"images\",\n acceptedFiles: [\"image/*\"],\n metadata: {\n cacheControl: \"max-age=1000000\"\n }\n }\n },\n description: \"This fields allows uploading multiple images at once and reordering\"\n },\n products: {\n name: \"Products\",\n dataType: \"array\",\n of: {\n dataType: \"reference\",\n path: \"products\",\n previewProperties: [\"name\", \"main_image\"]\n }\n }\n },\n propertiesOrder: [\"text\", \"quote\", \"images\", \"products\"]\n }\n },\n created_on: {\n name: \"Created on\",\n dataType: \"date\",\n autoValue: \"on_create\"\n },\n status: {\n name: \"Status\",\n validation: { required: true },\n dataType: \"string\",\n enumValues: {\n published: {\n id: \"published\",\n label: \"Published\",\n },\n draft: \"Draft\"\n },\n defaultValue: \"draft\"\n },\n publish_date: {\n name: \"Publish date\",\n dataType: \"date\",\n clearable: true\n },\n reviewed: {\n name: \"Reviewed\",\n dataType: \"boolean\"\n },\n tags: {\n name: \"Tags\",\n description: \"Example of generic array\",\n dataType: \"array\",\n of: {\n dataType: \"string\",\n previewAsTag: true\n }\n }\n }),\n initialFilter: {\n status: [\"==\", \"published\"]\n }\n};\n","import { EntityCollection, makePropertiesEditable } from \"@firecms/core\";\n\nexport const usersCollectionTemplate: EntityCollection = {\n id: \"users\",\n path: \"users\",\n name: \"Users\",\n singularName: \"User\",\n description: \"Registered users in the app/web\",\n icon: \"person\",\n properties: makePropertiesEditable({\n displayName: {\n name: \"Display name\",\n dataType: \"string\"\n },\n email: {\n name: \"Email\",\n dataType: \"string\",\n email: true\n },\n emailVerified: {\n name: \"Email verified\",\n dataType: \"boolean\"\n },\n phone: {\n name: \"Phone\",\n dataType: \"string\"\n },\n favourite_products: {\n name: \"Favourite products\",\n dataType: \"array\",\n of: {\n dataType: \"reference\",\n path: \"products\"\n }\n },\n photoURL: {\n name: \"Photo URL\",\n dataType: \"string\",\n url: \"image\"\n }\n }),\n};\n","import { EntityCollection } from \"@firecms/core\";\n\nexport const pagesCollectionTemplate: EntityCollection = {\n id: \"pages\",\n path: \"pages\",\n name: \"Pages\",\n singularName: \"Page\",\n icon: \"insert_drive_file\",\n description: \"List of website pages that can be edited here\",\n properties: {\n title: {\n dataType: \"string\",\n name: \"Page Title\",\n validation: { required: true }\n },\n slug: {\n dataType: \"string\",\n name: \"URL Slug\",\n validation: {\n required: true,\n unique: true,\n matches: \"^[a-z0-9]+(?:-[a-z0-9]+)*$\",\n matchesMessage: \"Must be lowercase, alphanumeric, and hyphenated\"\n }\n },\n hero_section: {\n dataType: \"map\",\n name: \"Hero Section\",\n properties: {\n headline: {\n dataType: \"string\",\n name: \"Headline\",\n validation: { required: true }\n },\n subhead: {\n dataType: \"string\",\n name: \"Subheadline\"\n },\n background_image: {\n dataType: \"string\",\n name: \"Background Image\",\n storage: {\n storagePath: \"page_hero/images\",\n acceptedFiles: [\"image/*\"],\n }\n },\n call_to_action: {\n dataType: \"string\",\n name: \"Call to Action\"\n },\n call_to_action_link: {\n dataType: \"string\",\n name: \"CTA Link\",\n url: true\n }\n }\n },\n content: {\n dataType: \"array\",\n name: \"Content\",\n oneOf: {\n properties: {\n section: {\n dataType: \"map\",\n name: \"Section\",\n properties: {\n title: {\n dataType: \"string\",\n name: \"Section Title\",\n validation: { required: true }\n },\n content: {\n dataType: \"string\",\n name: \"Section Content\",\n markdown: true\n },\n image: {\n dataType: \"string\",\n name: \"Section Image\",\n storage: {\n storagePath: \"page_sections/images\",\n acceptedFiles: [\"image/*\"]\n }\n },\n link: {\n dataType: \"string\",\n name: \"Section Link\",\n url: true\n }\n }\n },\n image: {\n dataType: \"string\",\n name: \"Image\",\n storage: {\n storagePath: \"page_sections/images\",\n acceptedFiles: [\"image/*\"]\n }\n },\n slider: {\n dataType: \"array\",\n name: \"Slider\",\n of: {\n dataType: \"map\",\n properties: {\n title: {\n dataType: \"string\",\n name: \"Title\",\n validation: { required: true }\n },\n image: {\n dataType: \"string\",\n storage: {\n storagePath: \"page_sections/images\",\n acceptedFiles: [\"image/*\"]\n }\n }\n }\n }\n },\n }\n }\n },\n sidebar: {\n dataType: \"map\",\n name: \"Sidebar\",\n properties: {\n title: {\n dataType: \"string\",\n name: \"Sidebar Title\",\n validation: { required: false }\n },\n content: {\n dataType: \"string\",\n name: \"Sidebar Content\",\n markdown: true\n }\n }\n },\n seo_metadata: {\n dataType: \"map\",\n name: \"SEO Metadata\",\n properties: {\n meta_title: {\n dataType: \"string\",\n name: \"Meta Title\"\n },\n meta_description: {\n dataType: \"string\",\n name: \"Meta Description\"\n },\n focus_keywords: {\n dataType: \"array\",\n name: \"Focus Keywords\",\n of: {\n dataType: \"string\"\n }\n }\n }\n },\n footer_override: {\n dataType: \"string\",\n name: \"Footer Override\",\n markdown: true\n },\n publish_date: {\n dataType: \"date\",\n name: \"Publish Date\",\n validation: { required: true }\n },\n last_updated: {\n dataType: \"date\",\n name: \"Last Updated\",\n autoValue: \"on_update\"\n },\n is_published: {\n dataType: \"boolean\",\n name: \"Is Published\",\n columnWidth: 100,\n description: \"Should this page be live on the site?\"\n }\n }\n};\n","import React, { useEffect, useState } from \"react\";\nimport { EntityCollection, unslugify, } from \"@firecms/core\";\nimport { Button, Card, Chip, CircularProgress, cls, Container, Icon, Tooltip, Typography, } from \"@firecms/ui\";\n\nimport { productsCollectionTemplate } from \"./templates/products_template\";\nimport { blogCollectionTemplate } from \"./templates/blog_template\";\nimport { usersCollectionTemplate } from \"./templates/users_template\";\nimport { ImportFileUpload } from \"@firecms/data_import_export\";\nimport { pagesCollectionTemplate } from \"./templates/pages_template\";\nimport { useFormex } from \"@firecms/formex\";\n\nexport function CollectionEditorWelcomeView({\n path,\n pathSuggestions,\n parentCollection,\n onContinue,\n existingCollectionPaths\n }: {\n path: string;\n pathSuggestions?: (path: string) => Promise<string[]>;\n parentCollection?: EntityCollection;\n onContinue: (importData?: object[], propertiesOrder?: string[]) => void;\n existingCollectionPaths?: string[];\n}) {\n\n const [loadingPathSuggestions, setLoadingPathSuggestions] = useState(false);\n const [filteredPathSuggestions, setFilteredPathSuggestions] = useState<string[] | undefined>();\n useEffect(() => {\n if (pathSuggestions && existingCollectionPaths) {\n setLoadingPathSuggestions(true);\n pathSuggestions(path)\n .then(suggestions => {\n const filteredSuggestions = suggestions.filter(s => !(existingCollectionPaths ?? []).find(c => c.trim().toLowerCase() === s.trim().toLowerCase()));\n setFilteredPathSuggestions(filteredSuggestions);\n })\n .finally(() => setLoadingPathSuggestions(false));\n }\n }, [existingCollectionPaths, path, pathSuggestions]);\n\n const {\n values,\n setFieldValue,\n setValues,\n submitCount\n } = useFormex<EntityCollection>();\n\n const noSuggestions = !loadingPathSuggestions && (filteredPathSuggestions ?? [])?.length === 0;\n if (!noSuggestions) {\n return null;\n }\n\n return (\n <div className={\"overflow-auto my-auto\"}>\n <Container maxWidth={\"4xl\"} className={\"flex flex-col gap-4 p-8 m-auto\"}>\n\n <div\n className=\"flex flex-row py-2 pt-3 items-center\">\n <Typography variant={\"h4\"} className={\"flex-grow\"}>\n New collection\n </Typography>\n </div>\n\n {parentCollection && <Chip colorScheme={\"tealDarker\"}>\n <Typography variant={\"caption\"}>\n This is a subcollection of <b>{parentCollection.name}</b>\n </Typography>\n </Chip>}\n\n <div className={\"my-2\"}>\n <Typography variant={\"caption\"}\n color={\"secondary\"}>\n ● Use one of the existing paths in your database:\n </Typography>\n <div className={\"flex flex-wrap gap-x-2 gap-y-1 items-center my-2 min-h-7\"}>\n\n {loadingPathSuggestions && !filteredPathSuggestions && <CircularProgress size={\"small\"}/>}\n\n {filteredPathSuggestions?.map((suggestion, index) => (\n <Chip key={suggestion}\n colorScheme={\"cyanLighter\"}\n onClick={() => {\n setFieldValue(\"name\", unslugify(suggestion));\n setFieldValue(\"id\", suggestion);\n setFieldValue(\"path\", suggestion);\n setFieldValue(\"properties\", undefined);\n onContinue();\n }}\n size=\"small\">\n {suggestion}\n </Chip>\n ))}\n {(filteredPathSuggestions ?? []).length === 0 && !loadingPathSuggestions && <Typography\n variant={\"caption\"}\n color={\"secondary\"}>\n No existing paths found\n </Typography>}\n\n </div>\n\n </div>\n\n <div className={\"my-2\"}>\n <Typography variant={\"caption\"}\n color={\"secondary\"}>\n ● Select a template:\n </Typography>\n\n <div className={\"flex gap-4\"}>\n <TemplateButton title={\"Products\"}\n subtitle={\"A collection of products with images, prices and stock\"}\n icon={<Icon size={\"small\"}\n iconKey={productsCollectionTemplate.icon! as string}/>}\n onClick={() => {\n setValues(productsCollectionTemplate);\n onContinue();\n }}/>\n <TemplateButton title={\"Users\"}\n subtitle={\"A collection of users with emails, names and roles\"}\n icon={<Icon size={\"small\"} iconKey={usersCollectionTemplate.icon! as string}/>}\n onClick={() => {\n setValues(usersCollectionTemplate);\n onContinue();\n }}/>\n <TemplateButton title={\"Blog posts\"}\n subtitle={\"A collection of blog posts with images, authors and complex content\"}\n icon={<Icon size={\"small\"} iconKey={blogCollectionTemplate.icon! as string}/>}\n onClick={() => {\n setValues(blogCollectionTemplate);\n onContinue();\n }}/>\n <TemplateButton title={\"Pages\"}\n subtitle={\"A collection of pages with images, authors and complex content\"}\n icon={<Icon size={\"small\"} iconKey={pagesCollectionTemplate.icon! as string}/>}\n onClick={() => {\n setValues(pagesCollectionTemplate);\n onContinue();\n }}/>\n </div>\n\n </div>\n\n {!parentCollection && <div>\n\n <Typography variant={\"caption\"}\n color={\"secondary\"}\n className={\"mb-2\"}>\n ● Create a collection from a file (csv, json, xls, xslx...)\n </Typography>\n\n <ImportFileUpload onDataAdded={(data, propertiesOrder) => onContinue(data, propertiesOrder)}/>\n\n </div>}\n\n <div>\n\n <Button variant={\"text\"} onClick={() => onContinue()} className={\"my-2\"}>\n Continue from scratch\n </Button>\n </div>\n\n {/*<div style={{ height: \"52px\" }}/>*/}\n\n </Container>\n </div>\n );\n}\n\nexport function TemplateButton({\n title,\n subtitle,\n icon,\n onClick\n }: {\n title: string,\n icon: React.ReactNode,\n subtitle: string,\n onClick?: () => void\n}) {\n\n return (\n <Tooltip title={subtitle}\n asChild={true}>\n <Card\n onClick={onClick}\n className={cls(\n \"my-2 rounded-md border mx-0 p-6 px-4 focus:outline-none transition ease-in-out duration-150 flex flex-row gap-4 items-center\",\n \"text-surface-700 dark:text-surface-accent-300\",\n \"hover:border-primary-dark hover:text-primary-dark dark:hover:text-primary focus:ring-primary hover:ring-1 hover:ring-primary\",\n \"border-surface-400 dark:border-surface-600 \"\n )}\n >\n {icon}\n <div className={\"flex flex-col items-start\"}>\n\n <Typography variant={\"subtitle1\"}>\n {title}\n </Typography>\n\n </div>\n </Card>\n </Tooltip>\n );\n\n}\n","import {\n DataNewPropertiesMapping,\n getInferenceType,\n ImportConfig,\n ImportNewPropertyFieldPreview\n} from \"@firecms/data_import_export\";\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_export\";\nimport {\n CircularProgressCenter,\n EntityCollectionTable,\n Properties,\n useAuthController,\n useSelectionController\n} from \"@firecms/core\";\nimport { useEffect, useState } from \"react\";\nimport { Typography } from \"@firecms/ui\";\n\nexport function CollectionEditorImportDataPreview({\n importConfig,\n properties,\n propertiesOrder\n }: {\n importConfig: ImportConfig,\n properties: Properties,\n propertiesOrder: string[]\n}) {\n\n const authController = useAuthController();\n const [loading, setLoading] = useState<boolean>(false);\n\n async function loadEntities() {\n // const propertiesMapping = getPropertiesMapping(importConfig.originProperties, properties, importConfig.headersMapping);\n const mappedData = importConfig.importData.map(d => convertDataToEntity(authController, d, importConfig.idColumn, importConfig.headersMapping, properties, \"TEMP_PATH\", importConfig.defaultValues));\n importConfig.setEntities(mappedData);\n }\n\n useEffect(() => {\n loadEntities().finally(() => setLoading(false));\n }, []);\n\n const selectionController = useSelectionController();\n if (loading)\n return <CircularProgressCenter/>\n\n return <EntityCollectionTable\n title={<div>\n <Typography variant={\"subtitle2\"}>Imported data preview</Typography>\n <Typography variant={\"caption\"}>Entities with the same id will be overwritten</Typography>\n </div>}\n tableController={{\n data: importConfig.entities,\n dataLoading: false,\n noMoreToLoad: false\n }}\n endAdornment={<div className={\"h-12\"}/>}\n filterable={false}\n sortable={false}\n selectionController={selectionController}\n displayedColumnIds={propertiesOrder.map(p => ({\n key: p,\n disabled: false\n }))}\n openEntityMode={\"side_panel\"}\n properties={properties}\n enablePopupIcon={false}/>\n\n}\n","import { Properties, slugify } from \"@firecms/core\";\nimport { ImportConfig } from \"@firecms/data_import_export\";\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_export\";\nimport { buildEntityPropertiesFromData } from \"@firecms/schema_inference\";\nimport { CollectionEditorImportMapping } from \"./import/CollectionEditorImportMapping\";\nimport { CollectionEditorImportDataPreview } from \"./import/CollectionEditorImportDataPreview\";\nimport { cleanPropertiesFromImport } from \"./import/clean_import_data\";\nimport { PersistedCollection } from \"../../types/persisted_collection\";\nimport { Formex, FormexController, useCreateFormex } from \"@firecms/formex\";\nimport { getFullIdPath } from \"./util\";\nimport { EntityActionsEditTab } from \"./EntityActionsEditTab\";\n\nexport interface CollectionEditorDialogProps {\n open: boolean;\n isNewCollection: boolean;\n initialValues?: {\n group?: string,\n path?: string,\n name?: string,\n }\n editedCollectionId?: string;\n fullPath?: string; // full path of this particular collection, like `products/123/locales`\n parentCollectionIds?: string[]; // path ids of the parent collection, like [`products`]\n handleClose: (collection?: EntityCollection) => void;\n configController: CollectionsConfigController;\n reservedGroups?: string[];\n collectionInference?: CollectionInference;\n extraView?: {\n View: React.ComponentType<{\n path: string\n }>,\n icon: React.ReactNode\n };\n pathSuggestions?: (path?: string) => Promise<string[]>;\n getUser?: (uid: string) => User | null;\n getData?: (path: string, parentPaths: string[]) => Promise<object[]>;\n parentCollection?: PersistedCollection;\n existingEntities?: Entity<any>[];\n}\n\nexport function CollectionEditorDialog(props: CollectionEditorDialogProps) {\n\n const open = props.open;\n\n const [formDirty, setFormDirty] = React.useState<boolean>(false);\n const [unsavedChangesDialogOpen, setUnsavedChangesDialogOpen] = React.useState<boolean>(false);\n\n const handleCancel = () => {\n if (!formDirty) {\n props.handleClose(undefined);\n } else {\n setUnsavedChangesDialogOpen(true);\n }\n };\n\n useEffect(() => {\n if (!open) {\n setFormDirty(false);\n setUnsavedChangesDialogOpen(false);\n }\n }, [open]);\n\n return (\n <Dialog\n open={open}\n fullWidth={true}\n fullHeight={true}\n scrollable={false}\n maxWidth={\"7xl\"}\n onOpenChange={(open) => !open ? handleCancel() : undefined}\n >\n <DialogTitle hidden>Collection editor</DialogTitle>\n {open && <CollectionEditor {...props}\n handleCancel={handleCancel}\n setFormDirty={setFormDirty}/>}\n\n <UnsavedChangesDialog\n open={unsavedChangesDialogOpen}\n handleOk={() => props.handleClose(undefined)}\n handleCancel={() => setUnsavedChangesDialogOpen(false)}\n body={\"There are unsaved changes in this collection\"}/>\n\n </Dialog>\n );\n}\n\ntype EditorView = \"welcome\"\n | \"details\"\n | \"import_data_mapping\"\n | \"import_data_preview\"\n | \"import_data_saving\"\n | \"properties\"\n | \"loading\"\n | \"extra_view\"\n | \"subcollections\"\n | \"custom_actions\";\n\nexport function CollectionEditor(props: CollectionEditorDialogProps & {\n handleCancel: () => void,\n setFormDirty: (dirty: boolean) => void\n}) {\n const { propertyConfigs } = useCustomizationController();\n const navigation = useNavigationController();\n const authController = useAuthController();\n\n const {\n topLevelNavigation,\n collections\n } = navigation;\n\n const initialValuesProp = props.initialValues;\n const includeTemplates = !initialValuesProp?.path && (props.parentCollectionIds ?? []).length === 0;\n const collectionsInThisLevel = (props.parentCollection ? props.parentCollection.subcollections : collections) ?? [];\n const existingPaths = collectionsInThisLevel.map(col => col.path.trim().toLowerCase());\n const existingIds = collectionsInThisLevel.map(col => col.id?.trim().toLowerCase()).filter(Boolean) as string[];\n const [collection, setCollection] = React.useState<PersistedCollection<any> | undefined>();\n const [initialLoadingCompleted, setInitialLoadingCompleted] = React.useState(false);\n\n useEffect(() => {\n try {\n if (navigation.initialised) {\n if (props.editedCollectionId) {\n setCollection(navigation.getCollectionFromPaths([...(props.parentCollectionIds ?? []), props.editedCollectionId]));\n } else {\n setCollection(undefined);\n }\n setInitialLoadingCompleted(true);\n }\n } catch (e) {\n console.error(e);\n }\n }, [props.editedCollectionId, props.parentCollectionIds, navigation.initialised, navigation.getCollectionFromPaths]);\n\n if (!topLevelNavigation) {\n throw Error(\"Internal: Navigation not ready in collection editor\");\n }\n\n const {\n groups\n }: NavigationResult = topLevelNavigation;\n\n const initialCollection = collection\n ? {\n ...collection,\n id: collection.id ?? collection.path ?? randomString(16)\n }\n : undefined;\n\n const initialValues: PersistedCollection<any> = initialCollection\n ? applyPropertyConfigs(initialCollection, propertyConfigs)\n : {\n id: initialValuesProp?.path ?? randomString(16),\n path: initialValuesProp?.path ?? \"\",\n name: initialValuesProp?.name ?? \"\",\n group: initialValuesProp?.group ?? \"\",\n properties: {} as PropertiesOrBuilders,\n propertiesOrder: [],\n icon: coolIconKeys[Math.floor(Math.random() * coolIconKeys.length)],\n ownerId: authController.user?.uid ?? \"\"\n };\n\n if (!initialLoadingCompleted) {\n return <CircularProgressCenter/>;\n }\n\n if (!props.isNewCollection && (!navigation.initialised || !initialLoadingCompleted)) {\n return <CircularProgressCenter/>;\n }\n\n return <CollectionEditorInternal\n {...props}\n initialValues={initialValues}\n existingPaths={existingPaths}\n existingIds={existingIds}\n includeTemplates={includeTemplates}\n collection={collection}\n setCollection={setCollection}\n groups={groups}\n propertyConfigs={propertyConfigs}/>\n\n}\n\nfunction CollectionEditorInternal<M extends Record<string, any>>({\n isNewCollection,\n configController,\n editedCollectionId,\n parentCollectionIds,\n fullPath,\n collectionInference,\n handleClose,\n reservedGroups,\n extraView,\n handleCancel,\n setFormDirty,\n pathSuggestions,\n getUser,\n parentCollection,\n getData,\n existingPaths,\n existingIds,\n includeTemplates,\n collection,\n setCollection,\n initialValues,\n propertyConfigs,\n groups,\n existingEntities\n }: CollectionEditorDialogProps & {\n handleCancel: () => void,\n setFormDirty: (dirty: boolean) => void,\n initialValues: PersistedCollection<M>,\n existingPaths: string[],\n existingIds: string[],\n includeTemplates: boolean,\n collection: PersistedCollection<M> | undefined,\n setCollection: (collection: PersistedCollection<M>) => void,\n propertyConfigs: Record<string, PropertyConfig<any>>,\n groups: string[],\n }\n) {\n\n const importConfig = useImportConfig();\n const navigation = useNavigationController();\n const snackbarController = useSnackbarController();\n\n // Use this ref to store which properties have errors\n const propertyErrorsRef = useRef({});\n\n const initialView = isNewCollection ? (includeTemplates ? \"welcome\" : \"details\") : \"properties\";\n const [currentView, setCurrentView] = useState<EditorView>(initialView); // this view can edit either the details view or the properties one\n\n const [error, setError] = React.useState<Error | undefined>();\n\n const saveCollection = (updatedCollection: PersistedCollection<M>): Promise<boolean> => {\n const id = updatedCollection.id || updatedCollection.path;\n\n return configController.saveCollection({\n id,\n collectionData: updatedCollection,\n previousId: editedCollectionId,\n parentCollectionIds\n })\n .then(() => {\n setError(undefined);\n return true;\n })\n .catch((e) => {\n setError(e);\n console.error(e);\n snackbarController.open({\n type: \"error\",\n message: \"Error persisting collection: \" + (e.message ?? \"Details in the console\")\n });\n return false;\n });\n };\n\n const setNextMode = () => {\n if (currentView === \"details\") {\n if (importConfig.inUse) {\n setCurrentView(\"import_data_saving\");\n } else if (extraView) {\n setCurrentView(\"extra_view\");\n } else {\n setCurrentView(\"properties\");\n }\n } else if (currentView === \"welcome\") {\n setCurrentView(\"details\");\n } else if (currentView === \"import_data_mapping\") {\n setCurrentView(\"import_data_preview\");\n } else if (currentView === \"import_data_preview\") {\n setCurrentView(\"details\");\n } else if (currentView === \"extra_view\") {\n setCurrentView(\"properties\");\n } else {\n setCurrentView(\"details\");\n }\n\n };\n\n const doCollectionInference = collectionInference ? (collection: PersistedCollection<any>) => {\n if (!collectionInference) return undefined;\n return collectionInference?.(collection.path, collection.collectionGroup ?? false, parentPaths ?? []);\n } : undefined;\n\n const inferCollectionFromData = async (newCollection: PersistedCollection<M>) => {\n\n try {\n if (!doCollectionInference) {\n setCollection(newCollection);\n return Promise.resolve(newCollection);\n }\n\n setCurrentView(\"loading\");\n\n const inferredCollection = await doCollectionInference?.(newCollection);\n\n if (!inferredCollection) {\n setCollection(newCollection);\n return Promise.resolve(newCollection);\n }\n const values = {\n ...(newCollection ?? {})\n };\n\n if (Object.keys(inferredCollection.properties ?? {}).length > 0) {\n values.properties = inferredCollection.properties as PropertiesOrBuilders<M>;\n values.propertiesOrder = inferredCollection.propertiesOrder as Extract<keyof M, string>[];\n }\n\n if (!values.propertiesOrder) {\n values.propertiesOrder = Object.keys(values.properties) as Extract<keyof M, string>[];\n return values;\n }\n\n setCollection(values);\n console.debug(\"Inferred collection\", {\n newCollection: newCollection ?? {},\n values\n });\n return values;\n } catch (e: any) {\n console.error(e);\n snackbarController.open({\n type: \"error\",\n message: \"Error inferring collection: \" + (e.message ?? \"Details in the console\")\n });\n return newCollection;\n }\n };\n\n const onSubmit = (newCollectionState: PersistedCollection<M>, formexController: FormexController<PersistedCollection<M>>) => {\n console.debug(\"Submitting collection\", newCollectionState);\n try {\n\n if (!isNewCollection) {\n saveCollection(newCollectionState).then(() => {\n formexController.resetForm();\n handleClose(newCollectionState);\n });\n return;\n }\n\n if (currentView === \"welcome\") {\n setNextMode();\n formexController.resetForm({ values: newCollectionState });\n } else if (currentView === \"details\") {\n if (extraView || importConfig.inUse) {\n formexController.resetForm({ values: newCollectionState });\n setNextMode();\n } else if (isNewCollection) {\n inferCollectionFromData(newCollectionState)\n .then((values) => {\n formexController.resetForm({\n values: values ?? newCollectionState,\n touched: {\n path: true,\n name: true\n }\n });\n }).finally(() => {\n setNextMode();\n });\n } else {\n formexController.resetForm({ values: newCollectionState });\n setNextMode();\n }\n } else if (currentView === \"extra_view\") {\n setNextMode();\n formexController.resetForm({ values: newCollectionState });\n } else if (currentView === \"import_data_mapping\") {\n setNextMode();\n } else if (currentView === \"import_data_preview\") {\n setNextMode();\n } else if (currentView === \"properties\") {\n saveCollection(newCollectionState).then(() => {\n formexController.resetForm({ values: initialValues });\n setNextMode();\n handleClose(newCollectionState);\n });\n } else {\n setNextMode();\n formexController.resetForm({ values: newCollectionState });\n }\n } catch (e: any) {\n snackbarController.open({\n type: \"error\",\n message: \"Error persisting collection: \" + (e.message ?? \"Details in the console\")\n });\n console.error(e);\n formexController.resetForm({ values: newCollectionState });\n }\n };\n\n const validation = (col: PersistedCollection) => {\n\n let errors: Record<string, any> = {};\n const schema = (currentView === \"properties\" || currentView === \"subcollections\" || currentView === \"details\") && YupSchema;\n if (schema) {\n try {\n schema.validateSync(col, { abortEarly: false });\n } catch (e: any) {\n e.inner.forEach((err: any) => {\n errors[err.path] = err.message;\n });\n }\n }\n if (currentView === \"properties\") {\n errors = { ...errors, ...propertyErrorsRef.current };\n }\n if (currentView === \"details\") {\n const pathError = validatePath(col.path, isNewCollection, existingPaths, col.id);\n if (pathError) {\n errors.path = pathError;\n }\n const idError = validateId(col.id, isNewCollection, existingPaths, existingIds);\n if (idError) {\n errors.id = idError;\n }\n }\n return errors;\n };\n\n const formController = useCreateFormex<PersistedCollection<M>>({\n initialValues,\n onSubmit,\n validation,\n debugId: \"COLLECTION_EDITOR\"\n });\n\n const {\n values,\n setFieldValue,\n isSubmitting,\n dirty,\n submitCount\n } = formController;\n\n // TODO: getting data is only working in root collections with this code\n const path = values.path;\n const updatedFullPath = fullPath?.includes(\"/\") ? fullPath?.split(\"/\").slice(0, -1).join(\"/\") + \"/\" + path : path; // TODO: this path is wrong\n const pathError = validatePath(path, isNewCollection, existingPaths, values.id);\n\n const parentPaths = !pathError && parentCollectionIds ? navigation.convertIdsToPaths(parentCollectionIds) : undefined;\n const resolvedPath = !pathError ? navigation.resolveIdsFrom(updatedFullPath) : undefined;\n const getDataWithPath = resolvedPath && getData ? async () => {\n const data = await getData(resolvedPath, parentPaths ?? []);\n if (existingEntities) {\n const existingData = existingEntities.map(e => e.values);\n data.push(...existingData);\n }\n return data;\n } : undefined;\n\n useEffect(() => {\n setFormDirty(dirty);\n }, [dirty]);\n\n function onImportDataSet(data: object[], propertiesOrder?: string[]) {\n importConfig.setInUse(true);\n buildEntityPropertiesFromData(data, getInferenceType)\n .then((properties) => {\n const res = cleanPropertiesFromImport(properties);\n\n importConfig.setIdColumn(res.idColumn);\n importConfig.setImportData(data);\n importConfig.setHeadersMapping(res.headersMapping);\n const filteredHeadingsOrder = ((propertiesOrder ?? [])\n .filter((key) => res.headersMapping[key]) as string[]) ?? Object.keys(res.properties);\n importConfig.setHeadingsOrder(filteredHeadingsOrder);\n importConfig.setOriginProperties(res.properties);\n\n const mappedHeadings = (propertiesOrder ?? []).map((key) => res.headersMapping[key]).filter(Boolean) as string[] ?? Object.keys(res.properties);\n setFieldValue(\"properties\", res.properties);\n setFieldValue(\"propertiesOrder\", mappedHeadings);\n });\n }\n\n const validValues = Boolean(values.name) && Boolean(values.id);\n\n const onImportMappingComplete = () => {\n const updatedProperties = { ...values.properties };\n if (importConfig.idColumn)\n delete updatedProperties[importConfig.idColumn];\n setFieldValue(\"properties\", updatedProperties);\n // setFieldValue(\"propertiesOrder\", Object.values(importConfig.headersMapping));\n setNextMode();\n };\n\n const editable = collection?.editable === undefined || collection?.editable === true;\n // @ts-ignore\n const isMergedCollection = collection?.merged ?? false;\n const collectionEditable = editable || isNewCollection;\n\n const [deleteRequested, setDeleteRequested] = useState(false);\n\n const deleteCollection = () => {\n if (!collection) return;\n configController?.deleteCollection({ id: collection.id }).then(() => {\n setDeleteRequested(false);\n handleCancel();\n snackbarController.open({\n message: \"Collection deleted\",\n type: \"success\"\n });\n });\n };\n\n return <DialogContent fullHeight={true}>\n <Formex value={formController}>\n\n <>\n {!isNewCollection && <Tabs value={currentView}\n innerClassName={cls(defaultBorderMixin, \"px-4 h-14 w-full justify-end bg-surface-50 dark:bg-surface-950 border-b\")}\n onValueChange={(v) => setCurrentView(v as EditorView)}>\n <Tab value={\"details\"}>\n Details\n </Tab>\n <Tab value={\"properties\"}>\n Properties\n </Tab>\n <Tab value={\"subcollections\"}>\n Additional views\n </Tab>\n <Tab value={\"custom_actions\"}>\n Custom actions\n </Tab>\n </Tabs>}\n\n <form noValidate\n onSubmit={formController.handleSubmit}\n className={cls(\n isNewCollection ? \"h-full\" : \"h-[calc(100%-48px)]\",\n \"flex-grow flex flex-col relative\")}>\n\n {currentView === \"loading\" &&\n <CircularProgressCenter/>}\n\n {currentView === \"extra_view\" &&\n path &&\n extraView?.View &&\n <extraView.View path={path}/>}\n\n {currentView === \"welcome\" &&\n <CollectionEditorWelcomeView\n path={path}\n onContinue={(importData, propertiesOrder) => {\n // console.log(\"Import data\", importData, propertiesOrder)\n if (importData) {\n onImportDataSet(importData, propertiesOrder);\n setCurrentView(\"import_data_mapping\");\n } else {\n setCurrentView(\"details\");\n }\n }}\n existingCollectionPaths={existingPaths}\n parentCollection={parentCollection}\n pathSuggestions={pathSuggestions}/>}\n\n {currentView === \"import_data_mapping\" && importConfig &&\n <CollectionEditorImportMapping importConfig={importConfig}\n collectionEditable={collectionEditable}\n propertyConfigs={propertyConfigs}/>}\n\n {currentView === \"import_data_preview\" && importConfig &&\n <CollectionEditorImportDataPreview importConfig={importConfig}\n properties={values.properties as Properties}\n propertiesOrder={values.propertiesOrder as string[]}/>}\n\n {currentView === \"import_data_saving\" && importConfig &&\n <ImportSaveInProgress importConfig={importConfig}\n collection={values}\n path={path}\n onImportSuccess={async (importedCollection) => {\n snackbarController.open({\n type: \"info\",\n message: \"Data imported successfully\"\n });\n await saveCollection(values);\n handleClose(importedCollection);\n }}\n />}\n\n {currentView === \"details\" &&\n <CollectionDetailsForm\n existingPaths={existingPaths}\n existingIds={existingIds}\n groups={groups}\n parentCollectionIds={parentCollectionIds}\n parentCollection={parentCollection}\n isNewCollection={isNewCollection}>\n {!isNewCollection && isMergedCollection && <div className={\"flex flex-col gap-4 mt-8\"}>\n <Typography variant={\"body2\"} color={\"secondary\"}>This collection is defined in code.\n The changes done in this editor will override the properties defined in code.\n You can delete the overridden values to revert to the state defined in code.\n </Typography>\n <Button color={\"neutral\"}\n onClick={() => {\n setDeleteRequested(true);\n }}>Reset to code</Button>\n </div>}\n </CollectionDetailsForm>}\n\n {currentView === \"custom_actions\" && collection &&\n <EntityActionsEditTab collection={collection}/>}\n\n {currentView === \"subcollections\" && collection &&\n <SubcollectionsEditTab\n parentCollection={parentCollection}\n configController={configController}\n getUser={getUser}\n collectionInference={collectionInference}\n parentCollectionIds={parentCollectionIds}\n collection={collection}/>}\n\n {currentView === \"properties\" &&\n <CollectionPropertiesEditorForm\n showErrors={submitCount > 0}\n isNewCollection={isNewCollection}\n reservedGroups={reservedGroups}\n onPropertyError={(propertyKey, namespace, error) => {\n const current = removeUndefined({\n ...propertyErrorsRef.current,\n [getFullIdPath(propertyKey, namespace)]: removeUndefined(error, true)\n }, true);\n propertyErrorsRef.current = current;\n formController.validate();\n }}\n getUser={getUser}\n getData={getDataWithPath}\n doCollectionInference={doCollectionInference}\n propertyConfigs={propertyConfigs}\n collectionEditable={collectionEditable}\n extraIcon={extraView?.icon &&\n <IconButton\n color={\"primary\"}\n onClick={() => setCurrentView(\"extra_view\")}>\n {extraView.icon}\n </IconButton>}/>\n }\n\n {currentView !== \"welcome\" && <DialogActions\n position={\"absolute\"}>\n {error && <ErrorView error={error}/>}\n\n {isNewCollection && includeTemplates && currentView === \"import_data_mapping\" &&\n <Button variant={\"text\"}\n type=\"button\"\n color={\"primary\"}\n onClick={() => {\n importConfig.setInUse(false);\n return setCurrentView(\"welcome\");\n }}>\n <ArrowBackIcon/>\n Back\n </Button>}\n\n {isNewCollection && includeTemplates && currentView === \"import_data_preview\" &&\n <Button variant={\"text\"}\n type=\"button\"\n color={\"primary\"}\n onClick={() => {\n setCurrentView(\"import_data_mapping\");\n }}>\n <ArrowBackIcon/>\n Back\n </Button>}\n\n {isNewCollection && includeTemplates && currentView === \"details\" &&\n <Button variant={\"text\"}\n color={\"primary\"}\n type=\"button\"\n onClick={() => setCurrentView(\"welcome\")}>\n <ArrowBackIcon/>\n Back\n </Button>}\n\n {isNewCollection && currentView === \"properties\" && <Button variant={\"text\"}\n type=\"button\"\n color={\"primary\"}\n onClick={() => setCurrentView(\"details\")}>\n <ArrowBackIcon/>\n Back\n </Button>}\n\n <Button variant={\"text\"}\n color={\"primary\"}\n onClick={() => {\n handleCancel();\n }}>\n Cancel\n </Button>\n\n {isNewCollection && currentView === \"import_data_mapping\" &&\n <Button\n variant={\"filled\"}\n color=\"primary\"\n onClick={onImportMappingComplete}\n >\n Next\n </Button>}\n\n {isNewCollection && currentView === \"import_data_preview\" &&\n <Button\n variant={\"filled\"}\n color=\"primary\"\n onClick={() => {\n setNextMode();\n }}\n >\n Next\n </Button>}\n\n {isNewCollection && (currentView === \"details\" || currentView === \"properties\") &&\n <LoadingButton\n variant={\"filled\"}\n color=\"primary\"\n type=\"submit\"\n loading={isSubmitting}\n disabled={isSubmitting || (currentView === \"details\" && !validValues)}\n startIcon={currentView === \"properties\"\n ? <CheckIcon/>\n : undefined}\n >\n {currentView === \"details\" && \"Next\"}\n {currentView === \"properties\" && \"Create collection\"}\n </LoadingButton>}\n\n {!isNewCollection && <LoadingButton\n variant=\"filled\"\n color=\"primary\"\n type=\"submit\"\n loading={isSubmitting}\n >\n Update collection\n </LoadingButton>}\n\n </DialogActions>}\n </form>\n </>\n\n </Formex>\n\n <ConfirmationDialog\n open={deleteRequested}\n onAccept={deleteCollection}\n onCancel={() => setDeleteRequested(false)}\n title={<>Delete the stored config?</>}\n body={<> This will <b>not\n delete any data</b>, only\n the stored config, and reset to the code state.</>}/>\n\n </DialogContent>\n\n}\n\nfunction applyPropertyConfigs<M extends Record<string, any> = any>(collection: PersistedCollection<M>, propertyConfigs: Record<string, PropertyConfig<any>>): PersistedCollection<M> {\n const {\n properties,\n ...rest\n } = collection;\n const propertiesResult: PropertiesOrBuilders<any> = {};\n if (properties) {\n Object.keys(properties).forEach((key) => {\n propertiesResult[key] = applyPropertiesConfig(properties[key] as PropertyOrBuilder, propertyConfigs);\n });\n }\n\n return {\n ...rest,\n properties: propertiesResult\n };\n}\n\nfunction applyPropertiesConfig(property: PropertyOrBuilder, propertyConfigs: Record<string, PropertyConfig<any>>) {\n let internalProperty = property;\n if (propertyConfigs && typeof internalProperty === \"object\" && internalProperty.propertyConfig) {\n const propertyConfig = propertyConfigs[internalProperty.propertyConfig];\n if (propertyConfig && isPropertyBuilder(propertyConfig.property)) {\n internalProperty = propertyConfig.property;\n } else {\n\n if (propertyConfig) {\n internalProperty = mergeDeep(propertyConfig.property, internalProperty);\n }\n\n if (!isPropertyBuilder(internalProperty) && internalProperty.dataType === \"map\" && internalProperty.properties) {\n const properties: Record<string, PropertyOrBuilder> = {};\n Object.keys(internalProperty.properties).forEach((key) => {\n properties[key] = applyPropertiesConfig(((internalProperty as MapProperty).properties as Properties)[key] as Property, propertyConfigs);\n });\n internalProperty = {\n ...internalProperty,\n properties\n };\n }\n\n }\n }\n return internalProperty;\n\n}\n\nconst validatePath = (value: string, isNewCollection: boolean, existingPaths: string[], idValue?: string) => {\n let error;\n if (!value) {\n error = \"You must specify a path in the database for this collection\";\n }\n // if (isNewCollection && existingIds?.includes(value.trim().toLowerCase()))\n // error = \"There is already a collection which uses this path as an id\";\n if (isNewCollection && existingPaths?.includes(value.trim().toLowerCase()) && !idValue)\n error = \"There is already a collection with the specified path. If you want to have multiple collections referring to the same database path, make sure the have different ids\";\n\n const subpaths = removeInitialAndTrailingSlashes(value).split(\"/\");\n if (subpaths.length % 2 === 0) {\n error = `Collection paths must have an odd number of segments: ${value}`;\n }\n return error;\n};\n\nconst validateId = (value: string, isNewCollection: boolean, existingPaths: string[], existingIds: string[]) => {\n if (!value) return undefined;\n let error;\n if (isNewCollection && existingPaths?.includes(value.trim().toLowerCase()))\n error = \"There is already a collection that uses this value as a path\";\n if (isNewCollection && existingIds?.includes(value.trim().toLowerCase()))\n error = \"There is already a collection which uses this id\";\n // if (error) {\n // setAdvancedPanelExpanded(true);\n // }\n return error;\n};\n","import React, { PropsWithChildren, useCallback } from \"react\";\nimport equal from \"react-fast-compare\"\n\nimport { CollectionsConfigController } from \"./types/config_controller\";\nimport {\n Entity,\n Property,\n useCustomizationController,\n useNavigationController,\n User,\n useSnackbarController\n} from \"@firecms/core\";\nimport { CollectionEditorDialog } from \"./ui/collection_editor/CollectionEditorDialog\";\nimport { useNavigate } from \"react-router\";\nimport { CollectionEditorController } from \"./types/collection_editor_controller\";\nimport { CollectionEditorPermissionsBuilder } from \"./types/config_permissions\";\nimport { CollectionInference } from \"./types/collection_inference\";\nimport { PropertyFormDialog } from \"./ui/collection_editor/PropertyEditView\";\nimport { PersistedCollection } from \"./types/persisted_collection\";\n\nexport const ConfigControllerContext = React.createContext<CollectionsConfigController>({} as any);\nexport const CollectionEditorContext = React.createContext<CollectionEditorController>({} as any);\n\nexport interface ConfigControllerProviderProps {\n /**\n * Controller for managing the collections' config.\n */\n collectionConfigController: CollectionsConfigController;\n\n /**\n * Callback used to infer the schema from the data.\n */\n collectionInference?: CollectionInference;\n\n /**\n * Use this builder to define the permissions for the configuration per user.\n */\n configPermissions?: CollectionEditorPermissionsBuilder;\n\n /**\n * Groups that cannot be used to create new collections.\n */\n reservedGroups?: string[];\n\n extraView?: {\n View: React.ComponentType<{\n path: string\n }>,\n icon: React.ReactNode\n };\n\n getUser?: (uid: string) => User | null\n\n getData?: (path: string, parentPaths: string[]) => Promise<object[]>;\n\n onAnalyticsEvent?: (event: string, params?: object) => void;\n\n}\n\nexport const ConfigControllerProvider = React.memo(\n function ConfigControllerProvider({\n children,\n collectionConfigController,\n configPermissions,\n reservedGroups,\n collectionInference,\n extraView,\n getUser,\n getData,\n onAnalyticsEvent,\n }: PropsWithChildren<ConfigControllerProviderProps>) {\n\n const navigation = useNavigationController();\n const navigate = useNavigate();\n const snackbarController = useSnackbarController();\n const { propertyConfigs } = useCustomizationController();\n\n const [currentDialog, setCurrentDialog] = React.useState<{\n isNewCollection: boolean,\n parentCollection?: PersistedCollection,\n editedCollectionId?: string,\n fullPath?: string,\n parentCollectionIds: string[],\n initialValues?: {\n path?: string,\n group?: string,\n name?: string\n },\n redirect: boolean,\n existingEntities?: Entity<any>[]\n }>();\n\n const [currentPropertyDialog, setCurrentPropertyDialog] = React.useState<{\n propertyKey?: string,\n property?: Property,\n namespace?: string,\n parentCollection?: PersistedCollection,\n currentPropertiesOrder?: string[],\n editedCollectionId: string,\n fullPath?: string,\n parentCollectionIds: string[],\n collectionEditable: boolean;\n existingEntities?: Entity<any>[]\n }>();\n\n const defaultConfigPermissions: CollectionEditorPermissionsBuilder = useCallback(() => ({\n createCollections: true,\n editCollections: true,\n deleteCollections: true\n }), []);\n\n const editCollection = ({\n id,\n fullPath,\n parentCollectionIds,\n parentCollection,\n existingEntities\n }: {\n id?: string,\n fullPath?: string,\n parentCollectionIds: string[],\n parentCollection?: PersistedCollection,\n existingEntities?: Entity<any>[]\n }) => {\n console.debug(\"Edit collection\", id, fullPath, parentCollectionIds, parentCollection);\n onAnalyticsEvent?.(\"edit_collection\", {\n id,\n fullPath\n });\n setCurrentDialog({\n editedCollectionId: id,\n fullPath,\n parentCollectionIds,\n isNewCollection: false,\n parentCollection,\n redirect: false,\n existingEntities\n });\n };\n\n const editProperty = ({\n propertyKey,\n property,\n editedCollectionId,\n currentPropertiesOrder,\n parentCollectionIds,\n collection,\n existingEntities\n }: {\n propertyKey?: string,\n property?: Property,\n currentPropertiesOrder?: string[],\n editedCollectionId: string,\n parentCollectionIds: string[],\n collection: PersistedCollection,\n existingEntities?: Entity<any>[]\n }) => {\n console.debug(\"Edit property\", propertyKey, property, editedCollectionId, currentPropertiesOrder, parentCollectionIds, collection);\n onAnalyticsEvent?.(\"edit_property\", {\n propertyKey,\n editedCollectionId\n });\n // namespace is all the path until the last dot\n const namespace = propertyKey && propertyKey.includes(\".\")\n ? propertyKey.substring(0, propertyKey.lastIndexOf(\".\"))\n : undefined;\n const propertyKeyWithoutNamespace = propertyKey && propertyKey.includes(\".\")\n ? propertyKey.substring(propertyKey.lastIndexOf(\".\") + 1)\n : propertyKey;\n setCurrentPropertyDialog({\n propertyKey: propertyKeyWithoutNamespace,\n property,\n namespace,\n currentPropertiesOrder,\n editedCollectionId,\n parentCollectionIds,\n collectionEditable: collection?.editable ?? false,\n existingEntities\n });\n };\n\n const createCollection = ({\n parentCollectionIds,\n parentCollection,\n initialValues,\n redirect,\n sourceClick\n }: {\n parentCollectionIds: string[],\n parentCollection?: PersistedCollection\n initialValues?: {\n group?: string,\n path?: string,\n name?: string\n },\n redirect: boolean,\n sourceClick?: string\n }) => {\n console.debug(\"Create collection\", {\n parentCollectionIds,\n parentCollection,\n initialValues,\n redirect,\n sourceClick\n });\n onAnalyticsEvent?.(\"create_collection\", {\n parentCollectionIds,\n parentCollection,\n initialValues,\n redirect,\n sourceClick\n });\n setCurrentDialog({\n isNewCollection: true,\n parentCollectionIds,\n parentCollection,\n initialValues,\n redirect\n });\n };\n\n return (\n <ConfigControllerContext.Provider value={collectionConfigController}>\n <CollectionEditorContext.Provider\n value={{\n editCollection,\n createCollection,\n editProperty,\n configPermissions: configPermissions ?? defaultConfigPermissions,\n }}>\n\n {children}\n\n <CollectionEditorDialog\n open={Boolean(currentDialog)}\n configController={collectionConfigController}\n isNewCollection={false}\n collectionInference={collectionInference}\n {...currentDialog}\n getData={getData}\n reservedGroups={reservedGroups}\n extraView={extraView}\n getUser={getUser}\n handleClose={(collection) => {\n if (currentDialog?.redirect) {\n if (collection && currentDialog?.isNewCollection && !currentDialog.parentCollectionIds.length) {\n const url = navigation.buildUrlCollectionPath(collection.id ?? collection.path);\n navigate(url);\n }\n }\n setCurrentDialog(undefined);\n }}/>\n\n {/* Used for editing properties*/}\n <PropertyFormDialog\n open={Boolean(currentPropertyDialog)}\n includeIdAndName={true}\n existingProperty={Boolean(currentPropertyDialog?.propertyKey)}\n autoUpdateId={!currentPropertyDialog ? false : !currentPropertyDialog?.propertyKey}\n autoOpenTypeSelect={!currentPropertyDialog ? false : !currentPropertyDialog?.propertyKey}\n inArray={false}\n collectionEditable={currentPropertyDialog?.collectionEditable ?? false}\n getData={getData && currentPropertyDialog?.editedCollectionId\n ? () => {\n console.debug(\"get data for property\", currentPropertyDialog?.editedCollectionId);\n const resolvedPath = navigation.resolveIdsFrom(currentPropertyDialog.editedCollectionId!)\n return getData(resolvedPath, []);\n }\n : undefined}\n onPropertyChanged={({\n id,\n property\n }) => {\n if (!currentPropertyDialog) return;\n if (!id) return;\n const newProperty = !(currentPropertyDialog.propertyKey);\n return collectionConfigController.saveProperty({\n path: currentPropertyDialog?.editedCollectionId,\n property,\n propertyKey: id,\n newPropertiesOrder: newProperty && currentPropertyDialog.currentPropertiesOrder ? [...currentPropertyDialog.currentPropertiesOrder, id] : undefined,\n namespace: currentPropertyDialog.namespace,\n parentCollectionIds: currentPropertyDialog.parentCollectionIds\n })\n .catch((e) => {\n console.error(e);\n snackbarController.open({\n type: \"error\",\n message: \"Error persisting property: \" + (e.message ?? \"Details in the console\")\n });\n return false;\n });\n }}\n onPropertyChangedImmediate={false}\n onDelete={() => {\n if (!currentPropertyDialog?.propertyKey) return;\n const newPropertiesOrder = currentPropertyDialog?.currentPropertiesOrder?.filter(p => p !== currentPropertyDialog?.propertyKey);\n return collectionConfigController.deleteProperty({\n path: currentPropertyDialog?.editedCollectionId,\n propertyKey: currentPropertyDialog?.propertyKey,\n namespace: currentPropertyDialog?.namespace,\n newPropertiesOrder,\n parentCollectionIds: currentPropertyDialog?.parentCollectionIds\n })\n .then(() => {\n setCurrentPropertyDialog(undefined);\n }).catch((e) => {\n console.error(e);\n snackbarController.open({\n type: \"error\",\n message: \"Error deleting property: \" + (e.message ?? \"Details in the console\")\n });\n return false;\n });\n }}\n onError={() => {\n }}\n onOkClicked={() => {\n setCurrentPropertyDialog(undefined);\n }}\n onCancel={() => {\n setCurrentPropertyDialog(undefined);\n }}\n initialErrors={{}}\n forceShowErrors={false}\n existingPropertyKeys={[]}\n allowDataInference={true}\n propertyConfigs={propertyConfigs}\n property={currentPropertyDialog?.property}\n propertyKey={currentPropertyDialog?.propertyKey}/>\n\n </CollectionEditorContext.Provider>\n\n </ConfigControllerContext.Provider>\n );\n }, equal);\n","import { CollectionActionsProps, useAuthController, useNavigationController } from \"@firecms/core\";\nimport { IconButton, SettingsIcon, Tooltip, } from \"@firecms/ui\";\n\nimport { useCollectionEditorController } from \"../useCollectionEditorController\";\nimport { PersistedCollection } from \"../types/persisted_collection\";\n\nexport function EditorCollectionAction({\n path: fullPath,\n parentCollectionIds,\n collection,\n tableController\n }: CollectionActionsProps) {\n\n const authController = useAuthController();\n const navigationController = useNavigationController();\n const collectionEditorController = useCollectionEditorController();\n\n const parentCollection = navigationController.getCollectionFromIds(parentCollectionIds);\n\n const canEditCollection = collectionEditorController.configPermissions\n ? collectionEditorController.configPermissions({\n user: authController.user,\n collection\n }).editCollections\n : true;\n\n const editorButton = <Tooltip\n asChild={true}\n title={canEditCollection ? \"Edit collection\" : \"You don't have permissions to edit this collection\"}>\n <IconButton\n size={\"small\"}\n color={\"primary\"}\n disabled={!canEditCollection}\n onClick={canEditCollection\n ? () => collectionEditorController?.editCollection({\n id: collection.id,\n fullPath,\n parentCollectionIds,\n parentCollection: parentCollection as PersistedCollection,\n existingEntities: tableController?.data ?? []\n })\n : undefined}>\n <SettingsIcon size={\"small\"}/>\n </IconButton>\n </Tooltip>;\n\n return <>\n {editorButton}\n </>\n\n}\n","import { useContext } from \"react\";\nimport { CollectionsConfigController } from \"./types/config_controller\";\nimport { ConfigControllerContext } from \"./ConfigControllerProvider\";\n\n/**\n * Use this hook to access the configuration controller.\n * You can use it to get the list of collections, and to save/delete collections.\n */\nexport const useCollectionsConfigController = (): CollectionsConfigController => useContext(ConfigControllerContext);\n","import {\n ConfirmationDialog,\n PluginHomePageActionsProps,\n useAuthController,\n useSnackbarController\n} from \"@firecms/core\";\nimport { DeleteIcon, IconButton, Menu, MenuItem, MoreVertIcon, SettingsIcon, } from \"@firecms/ui\";\nimport { useCollectionEditorController } from \"../useCollectionEditorController\";\nimport { useState } from \"react\";\nimport { useCollectionsConfigController } from \"../useCollectionsConfigController\";\n\nexport function HomePageEditorCollectionAction({\n path,\n collection\n }: PluginHomePageActionsProps) {\n\n\n const snackbarController = useSnackbarController();\n const authController = useAuthController();\n const configController = useCollectionsConfigController();\n const collectionEditorController = useCollectionEditorController();\n\n const permissions = collectionEditorController.configPermissions({\n user: authController.user,\n collection\n });\n\n const onEditCollectionClicked = () => {\n collectionEditorController?.editCollection({\n id: collection.id,\n parentCollectionIds: []\n });\n };\n\n const [deleteRequested, setDeleteRequested] = useState(false);\n\n const deleteCollection = () => {\n configController?.deleteCollection({ id: collection.id }).then(() => {\n setDeleteRequested(false);\n snackbarController.open({\n message: \"Collection deleted\",\n type: \"success\"\n });\n });\n };\n\n return <>\n\n <div>\n {permissions.deleteCollections &&\n <Menu\n trigger={<IconButton size={\"small\"}>\n <MoreVertIcon size={\"small\"}/>\n </IconButton>}\n >\n <MenuItem\n dense={true}\n onClick={(event) => {\n event.preventDefault();\n event.stopPropagation();\n setDeleteRequested(true);\n }}>\n <DeleteIcon/>\n Delete\n </MenuItem>\n\n </Menu>\n\n }\n\n {permissions.editCollections &&\n <IconButton\n size={\"small\"}\n onClick={(event) => {\n onEditCollectionClicked();\n }}>\n <SettingsIcon size={\"small\"}/>\n </IconButton>}\n </div>\n\n <ConfirmationDialog\n open={deleteRequested}\n onAccept={deleteCollection}\n onCancel={() => setDeleteRequested(false)}\n title={<>Delete this collection?</>}\n body={<> This will <b>not\n delete any data</b>, only\n the collection in the CMS</>}/>\n </>;\n\n}\n","import { EntityTableController, ResolvedProperty } from \"@firecms/core\";\nimport { IconButton, SettingsIcon, Tooltip } from \"@firecms/ui\";\nimport React from \"react\";\nimport { useCollectionEditorController } from \"../useCollectionEditorController\";\nimport { PersistedCollection } from \"../types/persisted_collection\";\n\nexport function CollectionViewHeaderAction({\n propertyKey,\n onHover,\n property,\n fullPath,\n parentCollectionIds,\n collection,\n tableController\n }: {\n property: ResolvedProperty,\n propertyKey: string,\n onHover: boolean,\n fullPath: string,\n parentCollectionIds: string[],\n collection: PersistedCollection;\n tableController: EntityTableController;\n}) {\n\n const collectionEditorController = useCollectionEditorController();\n\n return (\n <Tooltip\n asChild={true}\n title={\"Edit\"}>\n <IconButton\n className={onHover ? \"bg-white dark:bg-surface-950\" : \"hidden\"}\n onClick={() => {\n collectionEditorController.editProperty({\n propertyKey,\n property,\n editedCollectionId: collection.id,\n parentCollectionIds,\n collection,\n existingEntities: tableController.data ?? []\n });\n }}\n size={\"small\"}>\n <SettingsIcon size={\"small\"}/>\n </IconButton>\n </Tooltip>\n )\n}\n","import { EntityTableController, getDefaultPropertiesOrder, useAuthController } from \"@firecms/core\";\nimport { AddIcon, Tooltip } from \"@firecms/ui\";\nimport { useCollectionEditorController } from \"../useCollectionEditorController\";\nimport { PersistedCollection } from \"../types/persisted_collection\";\n\nexport function PropertyAddColumnComponent({\n fullPath,\n parentCollectionIds,\n collection,\n tableController\n }: {\n fullPath: string,\n parentCollectionIds: string[],\n collection: PersistedCollection;\n tableController: EntityTableController;\n}) {\n\n const authController = useAuthController();\n const collectionEditorController = useCollectionEditorController();\n const canEditCollection = collectionEditorController.configPermissions\n ? collectionEditorController.configPermissions({\n user: authController.user,\n collection\n }).editCollections\n : true;\n\n return (\n <Tooltip\n asChild={true}\n title={canEditCollection ? \"Add new property\" : \"You don't have permission to add new properties\"}>\n <div\n className={\"p-0.5 w-20 h-full flex items-center justify-center cursor-pointer bg-surface-100 bg-opacity-40 hover:bg-surface-100 dark:bg-surface-950 dark:bg-opacity-40 dark:hover:bg-surface-950\"}\n // className={onHover ? \"bg-white dark:bg-surface-950\" : undefined}\n onClick={() => {\n collectionEditorController.editProperty({\n editedCollectionId: collection.id,\n parentCollectionIds,\n currentPropertiesOrder: getDefaultPropertiesOrder(collection),\n collection,\n existingEntities: tableController.data\n });\n }}>\n <AddIcon color={\"inherit\"}/>\n </div>\n </Tooltip>\n )\n}\n","import { AddIcon, Button } from \"@firecms/ui\";\nimport { useCollectionEditorController } from \"../useCollectionEditorController\";\n\nexport function NewCollectionButton() {\n const collectionEditorController = useCollectionEditorController();\n return <div className={\"bg-surface-50 dark:bg-surface-900 min-w-fit rounded\"}>\n <Button className={\"min-w-fit\"}\n variant={\"outlined\"}\n onClick={() => collectionEditorController.createCollection({\n parentCollectionIds: [],\n redirect: true,\n sourceClick: \"new_collection_button\"\n })}>\n <AddIcon/>\n New collection\n </Button>\n </div>\n}\n","import equal from \"react-fast-compare\"\n\nimport { CollectionActionsProps, mergeDeep, useAuthController, useSnackbarController } from \"@firecms/core\";\nimport { Button, SaveIcon, Tooltip, UndoIcon, } from \"@firecms/ui\";\n\nimport { useCollectionEditorController } from \"../useCollectionEditorController\";\nimport { useCollectionsConfigController } from \"../useCollectionsConfigController\";\nimport { PersistedCollection } from \"../types/persisted_collection\";\n\nexport function EditorCollectionActionStart({\n path: fullPath,\n parentCollectionIds,\n collection,\n tableController\n }: CollectionActionsProps) {\n\n const authController = useAuthController();\n const collectionEditorController = useCollectionEditorController();\n const configController = useCollectionsConfigController();\n const snackbarController = useSnackbarController();\n\n const canEditCollection = collectionEditorController.configPermissions\n ? collectionEditorController.configPermissions({\n user: authController.user,\n collection\n }).editCollections\n : true;\n\n let saveDefaultFilterButton = null;\n if (!equal(getObjectOrNull(tableController.filterValues), getObjectOrNull(collection.initialFilter)) ||\n !equal(getObjectOrNull(tableController.sortBy), getObjectOrNull(collection.initialSort))) {\n saveDefaultFilterButton = <>\n <Tooltip\n asChild={true}\n title={tableController.sortBy || tableController.filterValues ? \"Save default filter and sort\" : \"Clear default filter and sort\"}>\n <Button\n color={\"primary\"}\n size={\"small\"}\n variant={\"outlined\"}\n onClick={() => configController\n ?.saveCollection({\n id: collection.id,\n parentCollectionIds,\n collectionData: mergeDeep(collection as PersistedCollection,\n {\n initialFilter: tableController.filterValues ?? null,\n initialSort: tableController.sortBy ?? null\n })\n }).then(() => {\n snackbarController.open({\n type: \"success\",\n message: \"Default config saved\"\n });\n })}>\n <SaveIcon/>\n </Button>\n </Tooltip>\n\n {(collection.initialFilter || collection.initialSort) && <Tooltip\n title={\"Reset to default filter and sort\"}>\n <Button\n color={\"primary\"}\n size={\"small\"}\n variant={\"text\"}\n onClick={() => {\n tableController.clearFilter?.();\n if (collection?.initialFilter)\n tableController.setFilterValues?.(collection?.initialFilter);\n if (collection?.initialSort)\n tableController.setSortBy?.(collection?.initialSort);\n }}>\n <UndoIcon/>\n </Button>\n </Tooltip>}\n </>;\n }\n\n return <>\n {canEditCollection && saveDefaultFilterButton}\n </>\n\n}\n\nfunction getObjectOrNull(o?: object): object | null {\n if (o && Object.keys(o).length === 0)\n return o\n return o ?? null;\n}\n","import { PluginHomePageAdditionalCardsProps, useAuthController } from \"@firecms/core\";\nimport { AddIcon, Card, cls, Typography } from \"@firecms/ui\";\nimport { useCollectionEditorController } from \"../useCollectionEditorController\";\n\nexport function NewCollectionCard({\n group,\n context\n }: PluginHomePageAdditionalCardsProps) {\n\n if (!context.navigation.topLevelNavigation)\n throw Error(\"Navigation not ready in FireCMSHomePage\");\n\n const authController = useAuthController();\n\n const collectionEditorController = useCollectionEditorController();\n const canCreateCollections = collectionEditorController.configPermissions\n ? collectionEditorController.configPermissions({\n user: authController.user,\n }).createCollections\n : true;\n\n return (\n <Card className={cls(\"h-full p-4 min-h-[124px]\")}\n onClick={collectionEditorController && canCreateCollections\n ? () => collectionEditorController.createCollection({\n initialValues: group ? { group } : undefined,\n parentCollectionIds: [],\n redirect: true,\n sourceClick: \"new_collection_card\"\n })\n : undefined}>\n\n <div\n className=\"flex items-center justify-center h-full w-full flex-grow flex-col\">\n <AddIcon color=\"primary\" size={\"large\"}/>\n <Typography color=\"primary\"\n variant={\"caption\"}\n className={\"font-medium\"}>{\"Add new collection\".toUpperCase()}</Typography>\n\n {!canCreateCollections &&\n <Typography variant={\"caption\"}>You don't have permissions to create\n collections</Typography>\n }\n </div>\n\n </Card>\n );\n}\n","import { PluginFormActionProps, useAuthController, useNavigationController } from \"@firecms/core\";\nimport { IconButton, SettingsIcon, Tooltip, } from \"@firecms/ui\";\n\nimport { useCollectionEditorController } from \"../useCollectionEditorController\";\nimport { PersistedCollection } from \"../types/persisted_collection\";\n\nexport function EditorEntityAction({\n path: fullPath,\n parentCollectionIds,\n collection,\n formContext\n }: PluginFormActionProps) {\n\n const authController = useAuthController();\n const navigationController = useNavigationController();\n const collectionEditorController = useCollectionEditorController();\n\n const parentCollection = navigationController.getCollectionFromIds(parentCollectionIds);\n\n const canEditCollection = collectionEditorController.configPermissions\n ? collectionEditorController.configPermissions({\n user: authController.user,\n collection\n }).editCollections\n : true;\n\n const isDirty = formContext?.formex.dirty ?? false;\n\n const editorButton = <Tooltip\n asChild={true}\n title={canEditCollection ? (isDirty ? \"You need to save the document before changing the schema\" : \"Edit schema for this form\") : \"You don't have permissions to edit this collection\"}>\n <IconButton\n color={\"primary\"}\n disabled={!canEditCollection || isDirty}\n onClick={canEditCollection\n ? () => collectionEditorController?.editCollection({\n id: collection.id,\n fullPath,\n parentCollectionIds,\n parentCollection: parentCollection as PersistedCollection,\n })\n : undefined}>\n <SettingsIcon size={\"small\"}/>\n </IconButton>\n </Tooltip>;\n\n return <>\n {editorButton}\n </>\n\n}\n","import React from \"react\";\nimport { FireCMSPlugin, useAuthController, useNavigationController, User } from \"@firecms/core\";\nimport { ConfigControllerProvider } from \"./ConfigControllerProvider\";\nimport { CollectionEditorPermissionsBuilder } from \"./types/config_permissions\";\nimport { EditorCollectionAction } from \"./ui/EditorCollectionAction\";\nimport { HomePageEditorCollectionAction } from \"./ui/HomePageEditorCollectionAction\";\nimport { PersistedCollection } from \"./types/persisted_collection\";\nimport { CollectionInference } from \"./types/collection_inference\";\nimport { CollectionsConfigController } from \"./types/config_controller\";\nimport { CollectionViewHeaderAction } from \"./ui/CollectionViewHeaderAction\";\nimport { PropertyAddColumnComponent } from \"./ui/PropertyAddColumnComponent\";\nimport { NewCollectionButton } from \"./ui/NewCollectionButton\";\nimport { AddIcon, Button, Paper, Typography } from \"@firecms/ui\";\nimport { useCollectionEditorController } from \"./useCollectionEditorController\";\nimport { EditorCollectionActionStart } from \"./ui/EditorCollectionActionStart\";\nimport { NewCollectionCard } from \"./ui/NewCollectionCard\";\nimport { EditorEntityAction } from \"./ui/EditorEntityAction\";\n\nexport interface CollectionConfigControllerProps<EC extends PersistedCollection = PersistedCollection, USER extends User = User> {\n\n /**\n * Firebase app where the configuration is saved.\n */\n collectionConfigController: CollectionsConfigController;\n\n /**\n * Define what actions can be performed on the configuration.\n */\n configPermissions?: CollectionEditorPermissionsBuilder<USER, EC>;\n\n /**\n * The words you define here will not be allowed to be used as group\n * names when creating collections.\n * e.g. [\"admin\"]\n */\n reservedGroups?: string[];\n\n extraView?: {\n View: React.ComponentType<{\n path: string\n }>,\n icon: React.ReactNode\n };\n\n collectionInference?: CollectionInference;\n\n getData?: (path: string, parentPaths: string[]) => Promise<object[]>;\n\n getUser?: (uid: string) => USER | null;\n\n onAnalyticsEvent?: (event: string, params?: object) => void;\n\n includeIntroView?: boolean;\n\n}\n\n/**\n * Use this hook to initialise the Collection Editor plugin.\n * This is likely the only hook you will need to use.\n * @param firebaseApp Firebase app where your project data lives.\n * @param configPermissions\n * @param reservedGroups\n * @param extraView\n * @param getData\n * @param getUser\n * @param collectionInference\n */\nexport function useCollectionEditorPlugin<EC extends PersistedCollection = PersistedCollection, USER extends User = User>\n({\n collectionConfigController,\n configPermissions,\n reservedGroups,\n extraView,\n getUser,\n collectionInference,\n getData,\n onAnalyticsEvent,\n includeIntroView = true\n }: CollectionConfigControllerProps<EC, USER>): FireCMSPlugin<any, any, PersistedCollection> {\n\n return {\n key: \"collection_editor\",\n loading: collectionConfigController.loading,\n provider: {\n Component: ConfigControllerProvider,\n props: {\n collectionConfigController,\n configPermissions,\n collectionInference,\n reservedGroups,\n extraView,\n getUser,\n getData,\n onAnalyticsEvent,\n }\n },\n homePage: {\n additionalActions: <NewCollectionButton/>,\n additionalChildrenStart: includeIntroView ? <IntroWidget/> : undefined,\n CollectionActions: HomePageEditorCollectionAction,\n AdditionalCards: NewCollectionCard,\n allowDragAndDrop: true,\n navigationEntries: collectionConfigController.navigationEntries,\n onNavigationEntriesUpdate: collectionConfigController.saveNavigationEntries,\n },\n collectionView: {\n CollectionActionsStart: EditorCollectionActionStart,\n CollectionActions: EditorCollectionAction,\n HeaderAction: CollectionViewHeaderAction,\n AddColumnComponent: PropertyAddColumnComponent\n },\n form: {\n ActionsTop: EditorEntityAction,\n }\n };\n}\n\nexport function IntroWidget() {\n\n const navigation = useNavigationController();\n if (!navigation.topLevelNavigation)\n throw Error(\"Navigation not ready in FireCMSHomePage\");\n\n const authController = useAuthController();\n\n const collectionEditorController = useCollectionEditorController();\n const canCreateCollections = collectionEditorController.configPermissions\n ? collectionEditorController.configPermissions({\n user: authController.user,\n }).createCollections\n : true;\n\n if (!navigation.initialised || (navigation.collections ?? []).length > 0) {\n return null;\n }\n\n return (\n <Paper\n className={\"my-4 px-4 py-6 flex flex-col bg-white dark:bg-surface-accent-800 gap-2\"}>\n <Typography variant={\"subtitle2\"} className={\"uppercase\"}>No collections found</Typography>\n <Typography>\n Start building collections in FireCMS easily. Map them to your existing\n database data, import from files, or use our templates.\n </Typography>\n {canCreateCollections && <Button\n onClick={collectionEditorController && canCreateCollections\n ? () => collectionEditorController.createCollection({\n parentCollectionIds: [],\n redirect: true,\n sourceClick: \"new_collection_card\"\n })\n : undefined}>\n <AddIcon/>Create your first collection\n </Button>}\n <Typography color={\"secondary\"}>\n You can also define collections programmatically.\n </Typography>\n </Paper>\n );\n}\n","import {\n EntityCallbacks,\n EntityCollection,\n joinCollectionLists,\n makePropertiesEditable,\n ModifyCollectionProps,\n Properties\n} from \"@firecms/core\";\nimport { PersistedCollection } from \"../types/persisted_collection\";\n\n/**\n * Function in charge of merging collections defined in code with those stored in the backend.\n */\nexport const mergeCollections = (baseCollections: EntityCollection[],\n backendCollections: PersistedCollection[] = [],\n modifyCollection?: (props: ModifyCollectionProps) => EntityCollection | void\n) => {\n\n const markAsEditable = (c: PersistedCollection) => {\n makePropertiesEditable(c.properties as Properties);\n c.subcollections?.forEach(markAsEditable);\n };\n\n backendCollections.forEach(markAsEditable);\n\n const result = joinCollectionLists(baseCollections, backendCollections, [], modifyCollection);\n\n // sort the collections so they are in the same order as the base collections\n result.sort((a, b) => {\n const indexA = baseCollections.findIndex(c => c.id === a.id);\n const indexB = baseCollections.findIndex(c => c.id === b.id);\n\n if (indexA === -1 && indexB === -1) {\n return 0; // Keep original order for items not in baseCollections\n }\n if (indexA === -1) {\n return 1; // a is not in base, so it goes to the end\n }\n if (indexB === -1) {\n return -1; // b is not in base, so it goes to the end\n }\n return indexA - indexB;\n });\n\n return result;\n}\n","import { ErrorView, unslugify, useNavigationController } from \"@firecms/core\";\nimport { useCollectionEditorController } from \"../useCollectionEditorController\";\nimport { Button } from \"@firecms/ui\";\n\nexport function MissingReferenceWidget({ path: pathProp }: {\n path: string\n}) {\n const navigation = useNavigationController();\n const path = getLastSegment(pathProp);\n const parentCollectionIds = navigation.getParentCollectionIds(pathProp);\n const collectionEditor = useCollectionEditorController();\n return <div className={\"p-1 flex flex-col items-center\"}>\n <ErrorView error={\"No collection for path: \" + path}/>\n <Button className={\"mx-2\"} variant={\"outlined\"}\n size={\"small\"}\n onClick={() => {\n collectionEditor.createCollection({\n initialValues: { path, name: unslugify(path) },\n parentCollectionIds,\n redirect: false,\n sourceClick: \"missing_reference\"\n });\n }}>\n Create\n </Button>\n </div>;\n}\n\nfunction getParentPathSegments(path: string): string[] {\n const segments = path.split(\"/\");\n return segments.filter((segment, index) => index % 2 === 0 && index !== segments.length - 1);\n}\n\nfunction getLastSegment(path: string): string {\n const segments = path.split(\"/\");\n return segments[segments.length - 1];\n}\n"],"names":["YupSchema","Yup","object","shape","id","string","required","name","path","useCollectionEditorController","useContext","CollectionEditorContext","LayoutModeSwitch","t0","$","_c","value","onChange","className","t1","cls","t2","t3","Symbol","for","t4","t5","t6","t7","t8","t9","t10","t11","t12","t13","t14","t15","t16","t17","t18","CollectionDetailsForm","isNewCollection","reservedGroups","groups","parentCollection","children","groupRef","React","useRef","values","setFieldValue","handleChange","touched","errors","setFieldTouched","submitCount","useFormex","iconDialogOpen","setIconDialogOpen","useState","advancedPanelExpanded","setAdvancedPanelExpanded","databaseId","undefined","updateDatabaseId","pathTouched","getIn","toSnakeCase","idTouched","singularNameTouched","singular","updateName","useEffect","collectionIcon","filter","group","includes","ref","useAutoComplete","isSubcollection","customIdValue","customId","showErrors","e","target","Boolean","t19","t20","t21","t22","t23","t24","t25","t26","t27","DebouncedTextField","t28","t29","t30","t31","t32","openEntityMode","t33","t34","t35","history","t36","v","t37","t38","t39","t40","t41","t42","t43","t44","t45","t46","t47","t48","t49","singularName","t50","e_0","t51","t52","t53","t54","t55","t56","t57","sideDialogWidth","t58","e_1","value_0","isNaN","Number","t59","t60","t61","t62","t63","t64","t65","t66","t67","t68","t69","description","t70","t71","t72","t73","t74","t75","t76","defaultSize","t77","map","_temp2","t78","_temp","t79","includeJsonView","t80","v_0","t81","t82","t83","t84","t85","t86","v_1","Error","t87","t88","t89","t90","t91","_temp3","t92","v_2","t93","collectionGroup","t94","t95","t96","t97","v_3","t98","textSearchEnabled","t99","t100","t101","t102","t103","t104","t105","t106","height","t107","icon","t108","t109","t110","t111","value_3","value_2","toUpperCase","value_1","DefaultDatabaseField","onDatabaseIdUpdate","idToPropertiesPath","replaceAll","namespaceToPropertiesPath","namespace","namespaceToPropertiesOrderPath","getFullId","propertyKey","propertyNamespace","getFullIdPath","keyWithNamespace","EnumForm","enumValues","onValuesChanged","onError","updateIds","disabled","allowDataInference","getData","forEach","enumValue","index","label","hasError","Object","keys","length","initialValues","validateOnChange","validation","formex","useCreateFormex","values_0","errors_0","EnumFormFields","enumValuesPath","shouldUpdateId","lastInternalIdAdded","setLastInternalIdAdded","editDialogIndex","setEditDialogIndex","inferring","setInferring","Set","inferredValuesRef","inferredValues","current","internalId","justAdded","entryError","has","buildEntry","then","data","flatData","flat","fieldData","Array","from","currentEnumValues","foundEnumValues","extractEnumFromValues","newEnumValues","some","enumValue_0","add","catch","finally","inferValues","console","error","EnumEntry","memo","EnumEntryInternal","updateId","autoFocus","onDialogOpen","inferredEntry","shouldUpdateIdRef","idValue","labelValue","currentLabelRef","areEqual","prevProps","nextProps","equal","EnumEntryDialog","open","onClose","idError","open_0","SwitchControl","field","form","tooltip","size","allowIndeterminate","checked","formControlLabel","GeneralPropertyValidation","validationRequired","validationUnique","field_0","form_0","validationRequiredMessage","StringPropertyValidation","lowercase","matches","max","min","trim","uppercase","matchesError","matchesValue","serializeRegExp","matchesStringValue","validationLowercase","validationUppercase","validationTrim","field_1","form_1","validationLength","validationMin","validationMax","validationMatches","ArrayPropertyValidation","ValidationPanel","EnumPropertyField","multiselect","setFieldError","snackbarContext","useSnackbarController","defaultValue","valuesEnumValues","useMemo","resolveEnumValues","enumIds","type","message","res","entry","toString","fileTypes","StoragePropertyField","multiple","existing","baseStoragePath","acceptedFiles","fileName","maxSize","storagePath","storeUrl","fileNameValue","storagePathValue","T0","T1","maxSizeValue","storedValue","fileTypesValue","isArray","allFileTypesSelected","handleTypesChange","hasFilenameCallback","hasStoragePathCallback","ExpandablePanel","entries","preventDefault","stopPropagation","parseInt","selected","join","editableProperty","property","isPropertyBuilder","eProperty","dataType","of","editable","removeNonEditableProperties","properties","_","key","propertyOrBuilder","reduce","a","b","PropertyFieldPreview","onClick","includeName","includeEditButton","propertyConfigs","useCustomizationController","getFieldConfig","propertyConfig","borderColorClass","cardClickableMixin","cardSelectedMixin","cardMixin","NonEditablePropertyPreview","PropertyTree","selectedPropertyKey","onPropertyClick","propertiesOrder","propertiesOrderProp","additionalFields","onPropertyMove","onPropertyRemove","inferredPropertyKeys","collectionEditable","activationConstraint","distance","coordinateGetter","sortableKeyboardCoordinates","sensors","useSensors","useSensor","PointerSensor","KeyboardSensor","event","active","over","activeId","String","overId","activeKey","split","pop","overKey","oldIndex","indexOf","newIndex","newPropertiesOrder","removed","splice","handleDragEnd","items","restrictToVerticalAxis","additionalField","find","warn","verticalListSortingStrategy","closestCenter","PropertyTreeEntry","attributes","listeners","setNodeRef","transform","transition","isDragging","useSortable","CSS","Translate","zIndex","position","style","isPropertyInferred","fullId","fullIdPath","subtree","defaultBorderMixin","left","top","bottom","MapPropertyField","propertyDialogOpen","setPropertyDialogOpen","setSelectedPropertyKey","selectedPropertyNamespace","setSelectedPropertyNamespace","currentPropertiesOrder","onPropertyCreated","propertiesPath","propertiesOrderPath","currentPropertiesOrder_0","p","deleteProperty","selectedPropertyFullId","selectedProperty","empty","propertiesOrder_0","namespace_0","propertyKey_0","namespace_1","spreadChildren","RepeatPropertyField","ofProperty","ofPropertyError","onPropertyChanged","widget","CommonPropertyFields","forwardRef","disabledId","autoUpdateId","nameError","descriptionError","newNameValue","fontSize","newIdValue","nameTouched","unslugify","StringPropertyField","widgetId","BooleanPropertyField","BlockPropertyField","oneOf","addChildButton","namespace_2","NumberPropertyValidation","validationLessThan","validationMoreThan","validationPositive","validationNegative","validationInteger","NumberPropertyField","parseFloat","ReferencePropertyField","asString","navigation","useNavigationController","pathPath","pathValue","pathError","CollectionsSelect","props","collections","ungroupedCollections","selectedCollection","collection","collection_0","collection_1","flatMap","collection_2","col","DateTimePropertyField","modeValue","modeError","autoValueValue","autoValueError","modePath","autoValuePath","AdvancedPropertyValidation","hideFromCollection","readOnly","KeyValuePropertyField","updatePropertyFromWidget","propertyData","selectedWidgetId","updatedProperty","mergeDeep","storage","multiline","markdown","email","url","keyValue","mode","UrlPropertyField","urlValue","supportedFieldsIds","supportedFields","DEFAULT_FIELD_CONFIGS","config","MarkdownPropertyField","PropertyForm","includeIdAndName","autoOpenTypeSelect","existingProperty","inArray","existingPropertyKeys","onPropertyChangedImmediate","onDismiss","onDelete","initialErrors","forceShowErrors","getController","initialValue","previousId","lastSubmittedProperty","property_0","params","doOnPropertyChanged","newPropertyWithId","controller","debug","id_0","property_1","resetForm","validateName","validateId","isValidRegExp","debugId","validateOnInitialRender","onSubmit","formexController","PropertyFormDialog","formProps","onCancel","onOkClicked","formexRef","helpers","handleSubmit","PropertyEditFormFields","setValues","includeIdAndTitle","selectOpen","setSelectOpen","deleteDialogOpen","setDeleteDialogOpen","getFieldId","selectedFieldConfigId","setSelectedFieldConfigId","deferredValues","useDeferredValue","nameFieldRef","selectedWidgetError","newSelectedWidgetId","setTimeout","focus","onWidgetSelectChanged","childComponent","hasValue","idRegEx","match","WIDGET_TYPE_MAP","text_field","switch","select","multi_select","number_input","number_select","multi_number_select","file_upload","multi_file_upload","reference","reference_as_string","multi_references","date_time","key_value","repeat","custom_array","block","WidgetSelectView","initialProperty","onValueChange","onOpenChange","allSupportedFields","concat","displayedWidgets","key_0","propertyConfig_1","baseProperty","baseFieldConfig","computedFieldConfig","_temp4","fieldBackgroundDisabledMixin","fieldBackgroundHoverMixin","fieldBackgroundMixin","Dialog","DialogContent","group_0","key_2","propertyConfig_2","groupKey","key_1","propertyConfig_0","WidgetSelectViewItem","shouldWarnChangingDataType","camelCase","str","toLowerCase","parts","slice","part","charAt","substring","GetCodeDialog","snackbarController","code","JSON5","stringify","collectionToCode","themes","vsDark","navigator","clipboard","writeText","tokens","getLineProps","getTokenProps","line","i","token","propertyCleanup","valueCopy","clone","isEmptyObject","childRes","fromBuilder","resolved","resolvedProperties","initialFilter","initialSort","subcollections","CollectionPropertiesEditorForm","propertyErrorsRef","onPropertyError","setDirty","extraIcon","getUser","doCollectionInference","dirty","largeLayout","useLargeLayout","asDialog","selectedPropertyIndex","setSelectedPropertyIndex","codeDialogOpen","setCodeDialogOpen","inferringProperties","setInferringProperties","newPropertyDialogOpen","setNewPropertyDialogOpen","setInferredPropertyKeys","currentPropertiesOrderRef","inferPropertiesFromData","newCollection","newPropertyKeys","updatedProperties","acc","updatedPropertiesOrder","updatePropertiesOrder","getCurrentPropertiesOrder","propertyPath","previousFullId","previousPropertyPath","onPropertyErrorInternal","closePropertyDialog","emptyCollection","usedPropertiesOrder","owner","ownerId","body","displayName","UnsavedChangesDialog","handleOk","handleCancel","title","EntityCustomViewsSelectDialog","entityViews","view","SubcollectionsEditTab","configController","collectionInference","parentCollectionIds","contextEntityViews","subcollectionToDelete","setSubcollectionToDelete","addEntityViewDialogOpen","setAddEntityViewDialogOpen","viewToDelete","setViewToDelete","currentDialog","setCurrentDialog","setSubcollections","T2","T3","resolvedEntityViews","resolveEntityView","hardCodedEntityViews","totalEntityViews","Container","subcollection","editedCollectionId","e_2","Paper","Table","TableBody","e_3","deleteCollection","e_4","e_5","updatedCollection","selectedViewKey","e_6","view_0","productsCollectionTemplate","makePropertiesEditable","brand","main_image","available","columnWidth","price","requiredMessage","images","related_products","metadata","added_on","autoValue","blogCollectionTemplate","header_image","cacheControl","content","typeField","valueField","text","quote","products","previewProperties","created_on","status","published","draft","publish_date","clearable","reviewed","tags","previewAsTag","usersCollectionTemplate","emailVerified","phone","favourite_products","photoURL","pagesCollectionTemplate","slug","unique","matchesMessage","hero_section","headline","subhead","background_image","call_to_action","call_to_action_link","section","image","link","slider","sidebar","seo_metadata","meta_title","meta_description","focus_keywords","footer_override","last_updated","is_published","CollectionEditorWelcomeView","pathSuggestions","onContinue","existingCollectionPaths","loadingPathSuggestions","setLoadingPathSuggestions","filteredPathSuggestions","setFilteredPathSuggestions","suggestions","filteredSuggestions","s","c","noSuggestions","suggestion","TemplateButton","subtitle","CollectionEditorImportMapping","importConfig","setSelectedProperty","newPropertiesOrder_0","newHeadersMapping","headersMapping","setHeadersMapping","importData","importKey","fullId_0","propertyPath_0","d","inferredNewProperty","buildPropertyFromData","getInferenceType","onPropertyTypeChanged","property_2","importKey_0","isIdColumn","propertyKey_1","p_0","PropertySelect","fieldId","newProperty","widget_0","PropertySelectItem","optionDisabled","CollectionEditorImportDataPreview","authController","useAuthController","loading","setLoading","loadEntities","mappedData","convertDataToEntity","idColumn","defaultValues","setEntities","selectionController","useSelectionController","entities","dataLoading","noMoreToLoad","cleanPropertiesFromImport","parentSlug","result","slugify","fullSlug","slugifiedResult","firstKey","EntityActionsSelectDialog","entityActions","action","EntityActionsEditTab","contextEntityActions","addEntityActionDialogOpen","setAddEntityActionDialogOpen","actionToDelete","setActionToDelete","resolvedEntityActions","resolveEntityAction","hardCodedEntityActions","totalEntityActions","selectedActionKey","log","action_1","action_0","CollectionEditorDialog","formDirty","setFormDirty","unsavedChangesDialogOpen","setUnsavedChangesDialogOpen","handleClose","CollectionEditor","topLevelNavigation","initialValuesProp","includeTemplates","collectionsInThisLevel","existingPaths","existingIds","setCollection","initialLoadingCompleted","setInitialLoadingCompleted","initialised","getCollectionFromPaths","initialCollection","randomString","applyPropertyConfigs","coolIconKeys","Math","floor","random","user","uid","CollectionEditorInternal","fullPath","extraView","existingEntities","useImportConfig","initialView","currentView","setCurrentView","setError","saveCollection","collectionData","setNextMode","inUse","parentPaths","inferCollectionFromData","Promise","resolve","inferredCollection","newCollectionState","schema","validateSync","abortEarly","inner","err","validatePath","formController","isSubmitting","updatedFullPath","convertIdsToPaths","resolvedPath","resolveIdsFrom","getDataWithPath","existingData","push","onImportDataSet","setInUse","buildEntityPropertiesFromData","setIdColumn","setImportData","filteredHeadingsOrder","setHeadingsOrder","setOriginProperties","mappedHeadings","validValues","onImportMappingComplete","isMergedCollection","merged","deleteRequested","setDeleteRequested","View","importedCollection","removeUndefined","validate","rest","propertiesResult","applyPropertiesConfig","internalProperty","subpaths","removeInitialAndTrailingSlashes","ConfigControllerContext","createContext","ConfigControllerProvider","collectionConfigController","configPermissions","onAnalyticsEvent","navigate","useNavigate","currentPropertyDialog","setCurrentPropertyDialog","defaultConfigPermissions","redirect","editCollection","parentCollectionIds_0","existingEntities_0","lastIndexOf","propertyKeyWithoutNamespace","editProperty","parentCollectionIds_1","parentCollection_0","sourceClick","createCollection","buildUrlCollectionPath","saveProperty","createCollections","editCollections","deleteCollections","EditorCollectionAction","tableController","navigationController","collectionEditorController","getCollectionFromIds","canEditCollection","editorButton","useCollectionsConfigController","HomePageEditorCollectionAction","permissions","onEditCollectionClicked","event_0","CollectionViewHeaderAction","onHover","PropertyAddColumnComponent","getDefaultPropertiesOrder","NewCollectionButton","EditorCollectionActionStart","saveDefaultFilterButton","getObjectOrNull","filterValues","sortBy","clearFilter","setFilterValues","setSortBy","o","NewCollectionCard","context","canCreateCollections","EditorEntityAction","formContext","isDirty","useCollectionEditorPlugin","includeIntroView","Component","navigationEntries","saveNavigationEntries","additionalActions","additionalChildrenStart","CollectionActions","AdditionalCards","allowDragAndDrop","onNavigationEntriesUpdate","CollectionActionsStart","HeaderAction","AddColumnComponent","ActionsTop","provider","homePage","collectionView","IntroWidget","mergeCollections","baseCollections","backendCollections","modifyCollection","markAsEditable","joinCollectionLists","sort","indexA","findIndex","indexB","MissingReferenceWidget","pathProp","getLastSegment","getParentCollectionIds","collectionEditor","segments"],"mappings":"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"}
|