@firecms/collection_editor 3.0.0-beta.14 → 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.
Files changed (32) hide show
  1. package/dist/index.es.js +1345 -870
  2. package/dist/index.es.js.map +1 -1
  3. package/dist/index.umd.js +1343 -868
  4. package/dist/index.umd.js.map +1 -1
  5. package/dist/types/collection_inference.d.ts +3 -0
  6. package/dist/types/config_controller.d.ts +3 -1
  7. package/dist/ui/EditorEntityAction.d.ts +2 -0
  8. package/dist/ui/collection_editor/CollectionPropertiesEditorForm.d.ts +1 -1
  9. package/dist/ui/collection_editor/EntityActionsEditTab.d.ts +4 -0
  10. package/dist/ui/collection_editor/EntityActionsSelectDialog.d.ts +4 -0
  11. package/dist/ui/collection_editor/properties/ReferencePropertyField.d.ts +2 -1
  12. package/package.json +8 -8
  13. package/src/types/collection_inference.ts +3 -0
  14. package/src/types/config_controller.tsx +4 -1
  15. package/src/ui/EditorCollectionAction.tsx +2 -7
  16. package/src/ui/EditorEntityAction.tsx +51 -0
  17. package/src/ui/collection_editor/CollectionDetailsForm.tsx +36 -38
  18. package/src/ui/collection_editor/CollectionEditorDialog.tsx +18 -5
  19. package/src/ui/collection_editor/CollectionEditorWelcomeView.tsx +10 -4
  20. package/src/ui/collection_editor/CollectionPropertiesEditorForm.tsx +3 -2
  21. package/src/ui/collection_editor/EntityActionsEditTab.tsx +163 -0
  22. package/src/ui/collection_editor/EntityActionsSelectDialog.tsx +41 -0
  23. package/src/ui/collection_editor/EntityCustomViewsSelectDialog.tsx +5 -2
  24. package/src/ui/collection_editor/GetCodeDialog.tsx +5 -3
  25. package/src/ui/collection_editor/PropertyEditView.tsx +10 -1
  26. package/src/ui/collection_editor/PropertyFieldPreview.tsx +1 -0
  27. package/src/ui/collection_editor/UnsavedChangesDialog.tsx +6 -2
  28. package/src/ui/collection_editor/properties/ReferencePropertyField.tsx +5 -3
  29. package/src/ui/collection_editor/utils/supported_fields.tsx +1 -0
  30. package/src/ui/collection_editor/utils/update_property_for_widget.ts +9 -0
  31. package/src/useCollectionEditorPlugin.tsx +7 -1
  32. package/src/utils/collections.ts +14 -5
@@ -1 +1 @@
1
- {"version":3,"file":"index.umd.js","sources":["../src/ui/collection_editor/CollectionYupValidation.tsx","../src/useCollectionEditorController.tsx","../src/ui/collection_editor/LayoutModeSwitch.tsx","../src/ui/collection_editor/CollectionDetailsForm.tsx","../src/ui/collection_editor/util.ts","../src/ui/collection_editor/EnumForm.tsx","../src/ui/collection_editor/SwitchControl.tsx","../src/ui/collection_editor/properties/validation/GeneralPropertyValidation.tsx","../src/ui/collection_editor/properties/validation/StringPropertyValidation.tsx","../src/ui/collection_editor/properties/validation/ArrayPropertyValidation.tsx","../src/ui/collection_editor/properties/validation/ValidationPanel.tsx","../src/ui/collection_editor/properties/EnumPropertyField.tsx","../src/ui/collection_editor/properties/StoragePropertyField.tsx","../src/utils/entities.ts","../src/ui/collection_editor/PropertyFieldPreview.tsx","../src/ui/collection_editor/PropertyTree.tsx","../src/ui/collection_editor/properties/MapPropertyField.tsx","../src/ui/collection_editor/properties/RepeatPropertyField.tsx","../src/ui/collection_editor/properties/CommonPropertyFields.tsx","../src/ui/collection_editor/properties/StringPropertyField.tsx","../src/ui/collection_editor/properties/BooleanPropertyField.tsx","../src/ui/collection_editor/properties/BlockPropertyField.tsx","../src/ui/collection_editor/properties/validation/NumberPropertyValidation.tsx","../src/ui/collection_editor/properties/NumberPropertyField.tsx","../src/ui/collection_editor/properties/ReferencePropertyField.tsx","../src/ui/collection_editor/properties/DateTimePropertyField.tsx","../src/ui/collection_editor/properties/advanced/AdvancedPropertyValidation.tsx","../src/ui/collection_editor/properties/KeyValuePropertyField.tsx","../src/ui/collection_editor/utils/update_property_for_widget.ts","../src/ui/collection_editor/properties/UrlPropertyField.tsx","../src/ui/collection_editor/utils/supported_fields.tsx","../src/ui/collection_editor/properties/MarkdownPropertyField.tsx","../src/ui/collection_editor/PropertyEditView.tsx","../src/ui/collection_editor/utils/strings.ts","../src/ui/collection_editor/GetCodeDialog.tsx","../src/ui/collection_editor/CollectionPropertiesEditorForm.tsx","../src/ui/collection_editor/UnsavedChangesDialog.tsx","../src/ui/collection_editor/EntityCustomViewsSelectDialog.tsx","../src/ui/collection_editor/SubcollectionsEditTab.tsx","../src/ui/collection_editor/templates/products_template.ts","../src/ui/collection_editor/templates/blog_template.ts","../src/ui/collection_editor/templates/users_template.ts","../src/ui/collection_editor/templates/pages_template.ts","../src/ui/collection_editor/CollectionEditorWelcomeView.tsx","../src/ui/collection_editor/import/CollectionEditorImportMapping.tsx","../src/ui/collection_editor/import/CollectionEditorImportDataPreview.tsx","../src/ui/collection_editor/import/clean_import_data.ts","../src/ui/collection_editor/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 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={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 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 }: {\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 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 === \"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 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) {\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&apos;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-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\" 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 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\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\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 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 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 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&apos;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 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 // 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 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) => 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","Typography","t4","t5","t6","t7","t8","VerticalSplitIcon","jsx","t9","Tooltip","Card","t10","t11","t12","t13","t14","SquareIcon","t15","t16","jsxs","t17","t18","CollectionDetailsForm","isNewCollection","reservedGroups","groups","parentCollection","children","groupRef","React","useRef","values","setFieldValue","handleChange","touched","errors","setFieldTouched","isSubmitting","submitCount","useFormex","iconDialogOpen","setIconDialogOpen","useState","advancedPanelExpanded","setAdvancedPanelExpanded","databaseId","undefined","updateDatabaseId","pathTouched","getIn","toSnakeCase","idTouched","singularNameTouched","singular","updateName","useEffect","IconForView","collectionIcon","groupOptions","filter","group","includes","ref","autoCompleteOpen","setAutoCompleteOpen","useAutoComplete","isSubcollection","customIdValue","customId","showErrors","T0","Container","IconButton","Chip","t19","t20","t21","e","target","t22","Boolean","t23","TextField","t24","t25","t26","FieldCaption","t27","t28","t29","t30","t31","t32","Field","DebouncedTextField","t33","t34","t35","t36","t37","event","Autocomplete","length","map","group_0","index","AutocompleteItem","t38","openEntityMode","t39","t40","t41","history","t42","v","t43","t44","BooleanSwitchWithLabel","t45","t46","t47","SettingsIcon","t48","t49","t50","t51","t52","t53","t54","t55","singularName","t56","e_0","t57","t58","t59","t60","t61","t62","t63","sideDialogWidth","t64","e_1","value_0","isNaN","Number","t65","t66","t67","CloseIcon","t68","t69","t70","t71","t72","t73","t74","t75","description","t76","t77","t78","t79","t80","t81","t82","defaultSize","t83","_temp2","t84","Select","_temp","t85","includeJsonView","t86","v_0","t87","t88","t89","t90","t91","t92","v_1","Error","t93","t94","t95","t96","SelectItem","t97","_temp3","t98","v_2","t99","collectionGroup","t100","t101","t102","t103","v_3","t104","textSearchEnabled","t105","t106","t107","t108","t109","ExpandablePanel","t110","t111","t112","height","t113","icon","t114","SearchIconsView","t115","Dialog","t116","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","Formex","EnumFormFields","enumValuesPath","shouldUpdateId","lastInternalIdAdded","setLastInternalIdAdded","editDialogIndex","setEditDialogIndex","inferring","setInferring","Set","inferredValuesRef","inferredValues","current","internalId","justAdded","entryError","has","buildEntry","then","data","flatData","flat","fieldData","Array","from","currentEnumValues","foundEnumValues","extractEnumFromValues","newEnumValues","some","enumValue_0","add","catch","finally","inferValues","ListIcon","Button","CircularProgress","AutorenewIcon","ArrayContainer","Paper","console","error","EnumEntry","memo","EnumEntryInternal","updateId","autoFocus","onDialogOpen","inferredEntry","shouldUpdateIdRef","idValue","labelValue","currentLabelRef","Badge","areEqual","prevProps","nextProps","equal","EnumEntryDialog","open","onClose","idError","open_0","DialogTitle","DialogContent","DialogActions","SwitchControl","field","form","tooltip","size","allowIndeterminate","checked","formControlLabel","GeneralPropertyValidation","validationRequired","validationUnique","field_0","form_0","validationRequiredMessage","StringPropertyValidation","lowercase","matches","max","min","trim","uppercase","matchesError","matchesValue","serializeRegExp","matchesStringValue","validationLowercase","validationUppercase","validationTrim","field_1","form_1","validationLength","validationMin","validationMax","validationMatches","ArrayPropertyValidation","ValidationPanel","RuleIcon","EnumPropertyField","multiselect","setFieldError","snackbarContext","useSnackbarController","defaultValue","valuesEnumValues","useMemo","resolveEnumValues","enumIds","type","message","Fragment","res","entry","toString","fileTypes","StoragePropertyField","multiple","existing","baseStoragePath","acceptedFiles","fileName","maxSize","storagePath","storeUrl","fileNameValue","storagePathValue","T1","maxSizeValue","storedValue","fileTypesValue","isArray","allFileTypesSelected","handleTypesChange","hasFilenameCallback","hasStoragePathCallback","CloudUploadIcon","entries","MultiSelectItem","preventDefault","stopPropagation","MultiSelect","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","PropertyConfigBadge","cardClickableMixin","cardSelectedMixin","cardMixin","ErrorBoundary","NonEditablePropertyPreview","FunctionsIcon","DoNotDisturbOnIcon","PropertyTree","selectedPropertyKey","onPropertyClick","propertiesOrder","propertiesOrderProp","additionalFields","onPropertyMove","onPropertyRemove","inferredPropertyKeys","collectionEditable","activationConstraint","distance","coordinateGetter","sortableKeyboardCoordinates","sensors","useSensors","useSensor","PointerSensor","KeyboardSensor","active","over","activeId","String","overId","activeKey","split","pop","overKey","oldIndex","indexOf","newIndex","newPropertiesOrder","removed","splice","handleDragEnd","items","restrictToVerticalAxis","additionalField","find","warn","SortableContext","verticalListSortingStrategy","DndContext","closestCenter","PropertyTreeEntry","attributes","listeners","setNodeRef","transform","transition","isDragging","useSortable","CSS","Translate","zIndex","position","style","isPropertyInferred","fullId","fullIdPath","subtree","defaultBorderMixin","left","top","bottom","RemoveIcon","DragHandleIcon","MapPropertyField","propertyDialogOpen","setPropertyDialogOpen","setSelectedPropertyKey","selectedPropertyNamespace","setSelectedPropertyNamespace","currentPropertiesOrder","onPropertyCreated","propertiesPath","propertiesOrderPath","currentPropertiesOrder_0","p","deleteProperty","selectedPropertyFullId","selectedProperty","empty","propertiesOrder_0","namespace_0","AddIcon","propertyKey_0","namespace_1","spreadChildren","RepeatPropertyField","ofProperty","ofPropertyError","onPropertyChanged","widget","CommonPropertyFields","forwardRef","disabledId","autoUpdateId","nameError","descriptionError","newNameValue","fontSize","newIdValue","nameTouched","unslugify","StringPropertyField","widgetId","BooleanPropertyField","BlockPropertyField","oneOf","addChildButton","namespace_2","NumberPropertyValidation","validationLessThan","validationMoreThan","validationPositive","validationNegative","validationInteger","NumberPropertyField","parseFloat","ReferencePropertyField","navigation","useNavigationController","pathPath","pathValue","pathError","CollectionsSelect","props","collections","ungroupedCollections","selectedCollection","collection","SelectGroup","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","InfoLabel","hasValue","DeleteIcon","ConfirmationDialog","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","key_2","propertyConfig_2","groupKey","key_1","propertyConfig_0","WidgetSelectViewItem","shouldWarnChangingDataType","WarningIcon","camelCase","str","toLowerCase","parts","slice","part","charAt","substring","GetCodeDialog","snackbarController","code","JSON5","stringify","collectionToCode","Highlight","themes","vsDark","navigator","clipboard","writeText","ContentCopyIcon","tokens","getLineProps","getTokenProps","line","i","token","propertyCleanup","valueCopy","clone","isEmptyObject","childRes","fromBuilder","resolved","resolvedProperties","initialFilter","initialSort","subcollections","CollectionPropertiesEditorForm","propertyErrorsRef","onPropertyError","setDirty","extraIcon","getUser","doCollectionInference","dirty","largeLayout","useLargeLayout","asDialog","selectedPropertyIndex","setSelectedPropertyIndex","codeDialogOpen","setCodeDialogOpen","inferringProperties","setInferringProperties","newPropertyDialogOpen","setNewPropertyDialogOpen","setInferredPropertyKeys","currentPropertiesOrderRef","inferPropertiesFromData","newCollection","newPropertyKeys","updatedProperties","acc","updatedPropertiesOrder","updatePropertiesOrder","getCurrentPropertiesOrder","propertyPath","previousFullId","previousPropertyPath","onPropertyErrorInternal","closePropertyDialog","emptyCollection","usedPropertiesOrder","owner","ownerId","body","displayName","CodeIcon","UnsavedChangesDialog","handleOk","handleCancel","title","EntityCustomViewsSelectDialog","entityViews","view","SubcollectionsEditTab","configController","collectionInference","parentCollectionIds","contextEntityViews","subcollectionToDelete","setSubcollectionToDelete","addEntityViewDialogOpen","setAddEntityViewDialogOpen","viewToDelete","setViewToDelete","currentDialog","setCurrentDialog","setSubcollections","T2","T3","resolvedEntityViews","resolveEntityView","hardCodedEntityViews","totalEntityViews","Table","TableBody","subcollection","TableRow","editedCollectionId","TableCell","e_2","Alert","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","Icon","ImportFileUpload","TemplateButton","subtitle","CollectionEditorImportMapping","importConfig","setSelectedProperty","newPropertiesOrder_0","newHeadersMapping","headersMapping","setHeadersMapping","importData","importKey","fullId_0","propertyPath_0","d","inferredNewProperty","buildPropertyFromData","getInferenceType","onPropertyTypeChanged","property_2","importKey_0","isIdColumn","ImportNewPropertyFieldPreview","propertyKey_1","DataNewPropertiesMapping","p_0","PropertySelect","fieldId","newProperty","widget_0","PropertySelectItem","optionDisabled","CollectionEditorImportDataPreview","authController","useAuthController","loading","setLoading","loadEntities","mappedData","convertDataToEntity","idColumn","defaultValues","setEntities","selectionController","useSelectionController","CircularProgressCenter","entities","dataLoading","noMoreToLoad","EntityCollectionTable","cleanPropertiesFromImport","parentSlug","result","slugify","fullSlug","slugifiedResult","firstKey","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","Tabs","Tab","View","ImportSaveInProgress","importedCollection","removeUndefined","validate","ErrorView","ArrowBackIcon","LoadingButton","CheckIcon","rest","propertiesResult","applyPropertiesConfig","internalProperty","subpaths","removeInitialAndTrailingSlashes","ConfigControllerContext","createContext","ConfigControllerProvider","collectionConfigController","configPermissions","onAnalyticsEvent","navigate","useNavigate","currentPropertyDialog","setCurrentPropertyDialog","defaultConfigPermissions","redirect","editCollection","parentCollectionIds_0","existingEntities_0","lastIndexOf","propertyKeyWithoutNamespace","editProperty","parentCollectionIds_1","parentCollection_0","sourceClick","createCollection","buildUrlCollectionPath","saveProperty","createCollections","editCollections","deleteCollections","EditorCollectionAction","tableController","navigationController","collectionEditorController","getCollectionFromIds","canEditCollection","editorButton","useCollectionsConfigController","HomePageEditorCollectionAction","permissions","onEditCollectionClicked","Menu","MoreVertIcon","MenuItem","event_0","CollectionViewHeaderAction","onHover","PropertyAddColumnComponent","getDefaultPropertiesOrder","NewCollectionButton","EditorCollectionActionStart","saveDefaultFilterButton","getObjectOrNull","filterValues","sortBy","SaveIcon","clearFilter","setFilterValues","setSortBy","UndoIcon","o","NewCollectionCard","context","canCreateCollections","useCollectionEditorPlugin","includeIntroView","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.umd.js","sources":["../src/ui/collection_editor/CollectionYupValidation.tsx","../src/useCollectionEditorController.tsx","../src/ui/collection_editor/LayoutModeSwitch.tsx","../src/ui/collection_editor/CollectionDetailsForm.tsx","../src/ui/collection_editor/util.ts","../src/ui/collection_editor/EnumForm.tsx","../src/ui/collection_editor/SwitchControl.tsx","../src/ui/collection_editor/properties/validation/GeneralPropertyValidation.tsx","../src/ui/collection_editor/properties/validation/StringPropertyValidation.tsx","../src/ui/collection_editor/properties/validation/ArrayPropertyValidation.tsx","../src/ui/collection_editor/properties/validation/ValidationPanel.tsx","../src/ui/collection_editor/properties/EnumPropertyField.tsx","../src/ui/collection_editor/properties/StoragePropertyField.tsx","../src/utils/entities.ts","../src/ui/collection_editor/PropertyFieldPreview.tsx","../src/ui/collection_editor/PropertyTree.tsx","../src/ui/collection_editor/properties/MapPropertyField.tsx","../src/ui/collection_editor/properties/RepeatPropertyField.tsx","../src/ui/collection_editor/properties/CommonPropertyFields.tsx","../src/ui/collection_editor/properties/StringPropertyField.tsx","../src/ui/collection_editor/properties/BooleanPropertyField.tsx","../src/ui/collection_editor/properties/BlockPropertyField.tsx","../src/ui/collection_editor/properties/validation/NumberPropertyValidation.tsx","../src/ui/collection_editor/properties/NumberPropertyField.tsx","../src/ui/collection_editor/properties/ReferencePropertyField.tsx","../src/ui/collection_editor/properties/DateTimePropertyField.tsx","../src/ui/collection_editor/properties/advanced/AdvancedPropertyValidation.tsx","../src/ui/collection_editor/properties/KeyValuePropertyField.tsx","../src/ui/collection_editor/utils/update_property_for_widget.ts","../src/ui/collection_editor/properties/UrlPropertyField.tsx","../src/ui/collection_editor/utils/supported_fields.tsx","../src/ui/collection_editor/properties/MarkdownPropertyField.tsx","../src/ui/collection_editor/PropertyEditView.tsx","../src/ui/collection_editor/utils/strings.ts","../src/ui/collection_editor/GetCodeDialog.tsx","../src/ui/collection_editor/CollectionPropertiesEditorForm.tsx","../src/ui/collection_editor/UnsavedChangesDialog.tsx","../src/ui/collection_editor/EntityCustomViewsSelectDialog.tsx","../src/ui/collection_editor/SubcollectionsEditTab.tsx","../src/ui/collection_editor/templates/products_template.ts","../src/ui/collection_editor/templates/blog_template.ts","../src/ui/collection_editor/templates/users_template.ts","../src/ui/collection_editor/templates/pages_template.ts","../src/ui/collection_editor/CollectionEditorWelcomeView.tsx","../src/ui/collection_editor/import/CollectionEditorImportMapping.tsx","../src/ui/collection_editor/import/CollectionEditorImportDataPreview.tsx","../src/ui/collection_editor/import/clean_import_data.ts","../src/ui/collection_editor/EntityActionsSelectDialog.tsx","../src/ui/collection_editor/EntityActionsEditTab.tsx","../src/ui/collection_editor/CollectionEditorDialog.tsx","../src/ConfigControllerProvider.tsx","../src/ui/EditorCollectionAction.tsx","../src/useCollectionsConfigController.tsx","../src/ui/HomePageEditorCollectionAction.tsx","../src/ui/CollectionViewHeaderAction.tsx","../src/ui/PropertyAddColumnComponent.tsx","../src/ui/NewCollectionButton.tsx","../src/ui/EditorCollectionActionStart.tsx","../src/ui/NewCollectionCard.tsx","../src/ui/EditorEntityAction.tsx","../src/useCollectionEditorPlugin.tsx","../src/utils/collections.ts","../src/ui/MissingReferenceWidget.tsx"],"sourcesContent":["import * as Yup from \"yup\";\n\nexport const YupSchema = Yup.object().shape({\n id: Yup.string().required(\"Required\"),\n name: Yup.string().required(\"Required\"),\n path: Yup.string().required(\"Required\")\n});\n","import { useContext } from \"react\";\nimport { CollectionEditorController } from \"./types/collection_editor_controller\";\nimport { CollectionEditorContext } from \"./ConfigControllerProvider\";\n\n/**\n * Hook to access the collection editor controller.\n * The methods in this controller can be used to open the collection editor dialog.\n */\nexport const useCollectionEditorController = (): CollectionEditorController => useContext(CollectionEditorContext);\n","import { Card, cls, SquareIcon, Tooltip, Typography, VerticalSplitIcon } from \"@firecms/ui\";\n\nexport function LayoutModeSwitch({\n value,\n onChange,\n className\n }: {\n value: \"side_panel\" | \"full_screen\";\n onChange: (value: \"side_panel\" | \"full_screen\") => void;\n className?: string;\n}) {\n\n return <div className={cls(className)}>\n <Typography variant={\"label\"} color={\"secondary\"} className={\"ml-3.5\"}>Document view</Typography>\n <div className={cls(\"flex flex-row gap-4\")}>\n\n <Tooltip title={\"Documents are open in a side panel\"}>\n <Card\n onClick={() => onChange(\"side_panel\")}\n className={cls(\n \"my-2 rounded-md mx-0 p-4 focus:outline-none transition ease-in-out duration-150 flex flex-row gap-4 items-center\",\n \"text-surface-700 dark:text-surface-accent-300\",\n \"hover:text-primary-dark dark:hover:text-primary focus:ring-primary hover:ring-1 hover:ring-primary\",\n value === \"side_panel\" ? \"border-primary dark:border-primary\" : \"border-surface-400 dark:border-surface-600\",\n )}\n >\n <VerticalSplitIcon/>\n <Typography variant={\"label\"}>\n Side panel\n </Typography>\n </Card>\n </Tooltip>\n\n <Tooltip title={\"Documents are open full-screen\"}>\n <Card\n onClick={() => onChange(\"full_screen\")}\n className={cls(\n \"my-2 rounded-md mx-0 p-4 focus:outline-none transition ease-in-out duration-150 flex flex-row gap-4 items-center\",\n \"text-surface-700 dark:text-surface-accent-300\",\n \"hover:text-primary-dark dark:hover:text-primary focus:ring-primary hover:ring-1 hover:ring-primary\",\n value === \"full_screen\" ? \"border-primary dark:border-primary\" : \"border-surface-400 dark:border-surface-600\",\n )}\n >\n <SquareIcon/>\n <Typography variant={\"label\"}>\n Full screen\n </Typography>\n </Card>\n </Tooltip>\n\n </div>\n <Typography variant={\"caption\"} color={\"secondary\"} className={\"ml-3.5\"}>Should documents be opened full screen or in an inline side dialog</Typography>\n </div>\n}\n","import React, { useEffect, useState } from \"react\";\nimport { EntityCollection, FieldCaption, IconForView, SearchIconsView, singular, toSnakeCase, } from \"@firecms/core\";\nimport {\n BooleanSwitchWithLabel,\n Chip,\n CloseIcon,\n cls,\n Container,\n DebouncedTextField,\n Dialog,\n ExpandablePanel,\n IconButton,\n Select,\n SelectItem,\n SettingsIcon,\n TextField,\n Tooltip,\n Typography,\n useAutoComplete\n} from \"@firecms/ui\";\n\nimport { Field, getIn, useFormex } from \"@firecms/formex\";\nimport { useCollectionEditorController } from \"../../useCollectionEditorController\";\nimport { LayoutModeSwitch } from \"./LayoutModeSwitch\";\n\nexport function CollectionDetailsForm({\n isNewCollection,\n reservedGroups,\n existingPaths,\n existingIds,\n groups,\n parentCollection,\n children\n }: {\n isNewCollection: boolean,\n reservedGroups?: string[];\n existingPaths?: string[];\n existingIds?: string[];\n groups: string[] | null;\n parentCollection?: EntityCollection;\n parentCollectionIds?: string[];\n children?: React.ReactNode;\n}) {\n\n const groupRef = React.useRef<HTMLInputElement>(null);\n const {\n values,\n setFieldValue,\n handleChange,\n touched,\n errors,\n setFieldTouched,\n isSubmitting,\n submitCount\n } = useFormex<EntityCollection>();\n\n const collectionEditor = useCollectionEditorController();\n\n const [iconDialogOpen, setIconDialogOpen] = useState(false);\n const [advancedPanelExpanded, setAdvancedPanelExpanded] = useState(false);\n\n const updateDatabaseId = (databaseId: string) => {\n setFieldValue(\"databaseId\", databaseId ?? undefined);\n }\n\n const updateName = (name: string) => {\n setFieldValue(\"name\", name);\n\n const pathTouched = getIn(touched, \"path\");\n if (!pathTouched && isNewCollection && name) {\n setFieldValue(\"path\", toSnakeCase(name));\n }\n\n const idTouched = getIn(touched, \"id\");\n if (!idTouched && isNewCollection && name) {\n setFieldValue(\"id\", toSnakeCase(name));\n }\n\n const singularNameTouched = getIn(touched, \"singularName\");\n if (!singularNameTouched && isNewCollection && name) {\n setFieldValue(\"singularName\", singular(name));\n }\n\n };\n\n useEffect(() => {\n if (errors.id) {\n setAdvancedPanelExpanded(true);\n }\n }, [errors.id]);\n\n const collectionIcon = <IconForView collectionOrView={values}/>;\n\n const groupOptions = groups?.filter((group) => !reservedGroups?.includes(group));\n\n const {\n inputFocused,\n autoCompleteOpen,\n setAutoCompleteOpen\n } = useAutoComplete({\n ref: groupRef\n });\n\n const isSubcollection = !!parentCollection;\n\n let customIdValue: \"true\" | \"false\" | \"optional\" | \"code_defined\" | undefined;\n if (typeof values.customId === \"object\") {\n customIdValue = \"code_defined\";\n } else if (values.customId === true) {\n customIdValue = \"true\";\n } else if (values.customId === false) {\n customIdValue = \"false\";\n } else if (values.customId === \"optional\") {\n customIdValue = \"optional\";\n }\n\n const showErrors = submitCount > 0;\n\n return (\n <div className={\"overflow-auto my-auto\"}>\n <Container maxWidth={\"4xl\"} className={\"flex flex-col gap-4 p-8 m-auto\"}>\n\n <div>\n <div\n className=\"flex flex-row gap-2 py-2 pt-3 items-center\">\n <Typography variant={!isNewCollection ? \"h5\" : \"h4\"} className={\"flex-grow\"}>\n {isNewCollection ? \"New collection\" : `${values?.name} collection`}\n </Typography>\n <DefaultDatabaseField databaseId={values.databaseId}\n onDatabaseIdUpdate={updateDatabaseId}/>\n\n <Tooltip title={\"Change icon\"}\n asChild={true}>\n <IconButton\n shape={\"square\"}\n onClick={() => setIconDialogOpen(true)}>\n {collectionIcon}\n </IconButton>\n </Tooltip>\n </div>\n\n {parentCollection && <Chip colorScheme={\"tealDarker\"}>\n <Typography variant={\"caption\"}>\n This is a subcollection of <b>{parentCollection.name}</b>\n </Typography>\n </Chip>}\n\n </div>\n <div className={\"grid grid-cols-12 gap-4\"}>\n\n <div className={\"col-span-12\"}>\n <TextField\n value={values.name ?? \"\"}\n onChange={(e: any) => updateName(e.target.value)}\n label={\"Name\"}\n autoFocus={true}\n required\n error={showErrors && Boolean(errors.name)}/>\n <FieldCaption error={touched.name && Boolean(errors.name)}>\n {touched.name && Boolean(errors.name) ? errors.name : \"Name of this collection, usually a plural name (e.g. Products)\"}\n </FieldCaption>\n </div>\n\n <div className={cls(\"col-span-12 \")}>\n <Field name={\"path\"}\n as={DebouncedTextField}\n label={\"Path\"}\n disabled={!isNewCollection}\n required\n error={showErrors && Boolean(errors.path)}/>\n\n <FieldCaption error={touched.path && Boolean(errors.path)}>\n {touched.path && Boolean(errors.path)\n ? errors.path\n : isSubcollection ? \"Relative path to the parent (no need to include the parent path)\" : \"Path that this collection is stored in, in the database\"}\n </FieldCaption>\n\n </div>\n\n {/*{!isSubcollection && <div className={\"col-span-12 sm:col-span-4 relative\"}>*/}\n\n {/* <TextField error={showErrors && Boolean(errors.group)}*/}\n {/* disabled={isSubmitting}*/}\n {/* value={values.group ?? \"\"}*/}\n {/* autoComplete=\"off\"*/}\n {/* onChange={(event) => setFieldValue(\"group\", event.target.value)}*/}\n {/* name={\"group\"}*/}\n {/* inputRef={groupRef}*/}\n {/* label=\"Group\"/>*/}\n {/* <Autocomplete*/}\n {/* open={autoCompleteOpen && (groupOptions ?? []).length > 0}*/}\n {/* setOpen={setAutoCompleteOpen}>*/}\n {/* {groupOptions?.map((group, index) => {*/}\n {/* return <AutocompleteItem*/}\n {/* key={index + \"_\" + group}*/}\n {/* className={\"pr-6 pl-14\"}*/}\n {/* onClick={() => {*/}\n {/* setAutoCompleteOpen(false);*/}\n {/* setFieldValue(\"group\", group ?? null);*/}\n {/* }}*/}\n {/* >*/}\n {/* <div className={\"flex-grow\"}>*/}\n {/* {group}*/}\n {/* </div>*/}\n {/* </AutocompleteItem>;*/}\n {/* })}*/}\n {/* </Autocomplete>*/}\n {/* <FieldCaption>*/}\n {/* {showErrors && Boolean(errors.group) ? errors.group : \"Group in the home page\"}*/}\n {/* </FieldCaption>*/}\n\n\n {/*</div>}*/}\n\n <LayoutModeSwitch\n className={\"col-span-12\"}\n value={values.openEntityMode ?? \"side_panel\"}\n onChange={(value) => setFieldValue(\"openEntityMode\", value)}/>\n\n <div className={\"col-span-12\"}>\n <BooleanSwitchWithLabel\n position={\"start\"}\n size={\"large\"}\n allowIndeterminate={true}\n label={values.history === null || values.history === undefined ? \"Document history revisions enabled if enabled globally\" : (\n values.history ? \"Document history revisions ENABLED\" : \"Document history revisions NOT enabled\"\n )}\n onValueChange={(v) => setFieldValue(\"history\", v)}\n value={values.history === undefined ? null : values.history}\n />\n <FieldCaption>\n When enabled, each document in this collection will have a history of changes.\n This is useful for auditing purposes. The data is stored in a subcollection of the document\n in your database, called <b>__history</b>.\n </FieldCaption>\n </div>\n\n\n <div className={\"col-span-12 mt-8\"}>\n <ExpandablePanel\n expanded={advancedPanelExpanded}\n onExpandedChange={setAdvancedPanelExpanded}\n title={\n <div className=\"flex flex-row text-surface-500\">\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&apos;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&apos;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","Typography","t4","t5","t6","t7","t8","VerticalSplitIcon","jsx","t9","Tooltip","Card","t10","t11","t12","t13","t14","SquareIcon","t15","t16","jsxs","t17","t18","CollectionDetailsForm","isNewCollection","reservedGroups","groups","parentCollection","children","groupRef","React","useRef","values","setFieldValue","handleChange","touched","errors","setFieldTouched","submitCount","useFormex","iconDialogOpen","setIconDialogOpen","useState","advancedPanelExpanded","setAdvancedPanelExpanded","databaseId","undefined","updateDatabaseId","pathTouched","getIn","toSnakeCase","idTouched","singularNameTouched","singular","updateName","useEffect","IconForView","collectionIcon","filter","group","includes","ref","useAutoComplete","isSubcollection","customIdValue","customId","showErrors","IconButton","Chip","e","target","Boolean","t19","TextField","t20","t21","t22","FieldCaption","t23","t24","t25","t26","t27","Field","DebouncedTextField","t28","t29","t30","t31","t32","openEntityMode","t33","t34","t35","history","t36","v","t37","t38","BooleanSwitchWithLabel","t39","t40","t41","SettingsIcon","t42","t43","t44","t45","t46","t47","t48","t49","singularName","t50","e_0","t51","t52","t53","t54","t55","t56","t57","sideDialogWidth","t58","e_1","value_0","isNaN","Number","t59","t60","t61","CloseIcon","t62","t63","t64","t65","t66","t67","t68","t69","description","t70","t71","t72","t73","t74","t75","t76","defaultSize","t77","map","_temp2","t78","Select","_temp","t79","includeJsonView","t80","v_0","t81","t82","t83","t84","t85","t86","v_1","Error","t87","t88","t89","t90","SelectItem","t91","_temp3","t92","v_2","t93","collectionGroup","t94","t95","t96","t97","v_3","t98","textSearchEnabled","t99","t100","t101","t102","t103","ExpandablePanel","t104","t105","t106","height","t107","icon","t108","t109","SearchIconsView","t110","Dialog","t111","Container","value_3","value_2","toUpperCase","value_1","DefaultDatabaseField","onDatabaseIdUpdate","idToPropertiesPath","replaceAll","namespaceToPropertiesPath","namespace","namespaceToPropertiesOrderPath","getFullId","propertyKey","propertyNamespace","getFullIdPath","keyWithNamespace","EnumForm","enumValues","onValuesChanged","onError","updateIds","disabled","allowDataInference","getData","forEach","enumValue","index","label","hasError","Object","keys","length","initialValues","validateOnChange","validation","formex","useCreateFormex","values_0","errors_0","Formex","EnumFormFields","enumValuesPath","shouldUpdateId","lastInternalIdAdded","setLastInternalIdAdded","editDialogIndex","setEditDialogIndex","inferring","setInferring","Set","inferredValuesRef","inferredValues","current","internalId","justAdded","entryError","has","buildEntry","then","data","flatData","flat","fieldData","Array","from","currentEnumValues","foundEnumValues","extractEnumFromValues","newEnumValues","some","enumValue_0","add","catch","finally","inferValues","ListIcon","Button","CircularProgress","AutorenewIcon","ArrayContainer","Paper","console","error","EnumEntry","memo","EnumEntryInternal","updateId","autoFocus","onDialogOpen","inferredEntry","shouldUpdateIdRef","idValue","labelValue","currentLabelRef","Badge","areEqual","prevProps","nextProps","equal","EnumEntryDialog","open","onClose","idError","open_0","DialogTitle","DialogContent","DialogActions","SwitchControl","field","form","tooltip","size","allowIndeterminate","checked","formControlLabel","GeneralPropertyValidation","validationRequired","validationUnique","field_0","form_0","validationRequiredMessage","StringPropertyValidation","lowercase","matches","max","min","trim","uppercase","matchesError","matchesValue","serializeRegExp","matchesStringValue","validationLowercase","validationUppercase","validationTrim","field_1","form_1","validationLength","validationMin","validationMax","validationMatches","ArrayPropertyValidation","ValidationPanel","RuleIcon","EnumPropertyField","multiselect","setFieldError","snackbarContext","useSnackbarController","defaultValue","valuesEnumValues","useMemo","resolveEnumValues","enumIds","type","message","Fragment","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","CloudUploadIcon","entries","MultiSelectItem","preventDefault","stopPropagation","MultiSelect","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","PropertyConfigBadge","cardClickableMixin","cardSelectedMixin","cardMixin","ErrorBoundary","NonEditablePropertyPreview","FunctionsIcon","DoNotDisturbOnIcon","PropertyTree","selectedPropertyKey","onPropertyClick","propertiesOrder","propertiesOrderProp","additionalFields","onPropertyMove","onPropertyRemove","inferredPropertyKeys","collectionEditable","activationConstraint","distance","coordinateGetter","sortableKeyboardCoordinates","sensors","useSensors","useSensor","PointerSensor","KeyboardSensor","event","active","over","activeId","String","overId","activeKey","split","pop","overKey","oldIndex","indexOf","newIndex","newPropertiesOrder","removed","splice","handleDragEnd","items","restrictToVerticalAxis","additionalField","find","warn","SortableContext","verticalListSortingStrategy","DndContext","closestCenter","PropertyTreeEntry","attributes","listeners","setNodeRef","transform","transition","isDragging","useSortable","CSS","Translate","zIndex","position","style","isPropertyInferred","fullId","fullIdPath","subtree","defaultBorderMixin","left","top","bottom","RemoveIcon","DragHandleIcon","MapPropertyField","propertyDialogOpen","setPropertyDialogOpen","setSelectedPropertyKey","selectedPropertyNamespace","setSelectedPropertyNamespace","currentPropertiesOrder","onPropertyCreated","propertiesPath","propertiesOrderPath","currentPropertiesOrder_0","p","deleteProperty","selectedPropertyFullId","selectedProperty","empty","propertiesOrder_0","namespace_0","AddIcon","propertyKey_0","namespace_1","spreadChildren","RepeatPropertyField","ofProperty","ofPropertyError","onPropertyChanged","widget","CommonPropertyFields","forwardRef","disabledId","autoUpdateId","nameError","descriptionError","newNameValue","fontSize","newIdValue","nameTouched","unslugify","StringPropertyField","widgetId","BooleanPropertyField","BlockPropertyField","oneOf","addChildButton","namespace_2","NumberPropertyValidation","validationLessThan","validationMoreThan","validationPositive","validationNegative","validationInteger","NumberPropertyField","parseFloat","ReferencePropertyField","asString","navigation","useNavigationController","pathPath","pathValue","pathError","CollectionsSelect","props","collections","ungroupedCollections","selectedCollection","collection","SelectGroup","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","InfoLabel","hasValue","DeleteIcon","ConfirmationDialog","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","group_0","key_2","propertyConfig_2","groupKey","key_1","propertyConfig_0","WidgetSelectViewItem","shouldWarnChangingDataType","WarningIcon","camelCase","str","toLowerCase","parts","slice","part","charAt","substring","GetCodeDialog","snackbarController","code","JSON5","stringify","collectionToCode","Highlight","themes","vsDark","navigator","clipboard","writeText","ContentCopyIcon","tokens","getLineProps","getTokenProps","line","i","token","propertyCleanup","valueCopy","clone","isEmptyObject","childRes","fromBuilder","resolved","resolvedProperties","initialFilter","initialSort","subcollections","CollectionPropertiesEditorForm","propertyErrorsRef","onPropertyError","setDirty","extraIcon","getUser","doCollectionInference","dirty","largeLayout","useLargeLayout","asDialog","selectedPropertyIndex","setSelectedPropertyIndex","codeDialogOpen","setCodeDialogOpen","inferringProperties","setInferringProperties","newPropertyDialogOpen","setNewPropertyDialogOpen","setInferredPropertyKeys","currentPropertiesOrderRef","inferPropertiesFromData","newCollection","newPropertyKeys","updatedProperties","acc","updatedPropertiesOrder","updatePropertiesOrder","getCurrentPropertiesOrder","propertyPath","previousFullId","previousPropertyPath","onPropertyErrorInternal","closePropertyDialog","emptyCollection","usedPropertiesOrder","owner","ownerId","body","displayName","CodeIcon","UnsavedChangesDialog","handleOk","handleCancel","title","EntityCustomViewsSelectDialog","entityViews","view","SubcollectionsEditTab","configController","collectionInference","parentCollectionIds","contextEntityViews","subcollectionToDelete","setSubcollectionToDelete","addEntityViewDialogOpen","setAddEntityViewDialogOpen","viewToDelete","setViewToDelete","currentDialog","setCurrentDialog","setSubcollections","T2","T3","resolvedEntityViews","resolveEntityView","hardCodedEntityViews","totalEntityViews","Table","TableBody","subcollection","TableRow","editedCollectionId","TableCell","e_2","Alert","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","Icon","ImportFileUpload","TemplateButton","subtitle","CollectionEditorImportMapping","importConfig","setSelectedProperty","newPropertiesOrder_0","newHeadersMapping","headersMapping","setHeadersMapping","importData","importKey","fullId_0","propertyPath_0","d","inferredNewProperty","buildPropertyFromData","getInferenceType","onPropertyTypeChanged","property_2","importKey_0","isIdColumn","ImportNewPropertyFieldPreview","propertyKey_1","DataNewPropertiesMapping","p_0","PropertySelect","fieldId","newProperty","widget_0","PropertySelectItem","optionDisabled","CollectionEditorImportDataPreview","authController","useAuthController","loading","setLoading","loadEntities","mappedData","convertDataToEntity","idColumn","defaultValues","setEntities","selectionController","useSelectionController","CircularProgressCenter","entities","dataLoading","noMoreToLoad","EntityCollectionTable","cleanPropertiesFromImport","parentSlug","result","slugify","fullSlug","slugifiedResult","firstKey","EntityActionsSelectDialog","entityActions","action","EntityActionsEditTab","contextEntityActions","addEntityActionDialogOpen","setAddEntityActionDialogOpen","actionToDelete","setActionToDelete","resolvedEntityActions","resolveEntityAction","hardCodedEntityActions","totalEntityActions","selectedActionKey","log","action_1","action_0","CollectionEditorDialog","formDirty","setFormDirty","unsavedChangesDialogOpen","setUnsavedChangesDialogOpen","handleClose","CollectionEditor","topLevelNavigation","initialValuesProp","includeTemplates","collectionsInThisLevel","existingPaths","existingIds","setCollection","initialLoadingCompleted","setInitialLoadingCompleted","initialised","getCollectionFromPaths","initialCollection","randomString","applyPropertyConfigs","coolIconKeys","Math","floor","random","user","uid","CollectionEditorInternal","fullPath","extraView","existingEntities","useImportConfig","initialView","currentView","setCurrentView","setError","saveCollection","collectionData","setNextMode","inUse","parentPaths","inferCollectionFromData","Promise","resolve","inferredCollection","newCollectionState","schema","validateSync","abortEarly","inner","err","validatePath","formController","isSubmitting","updatedFullPath","convertIdsToPaths","resolvedPath","resolveIdsFrom","getDataWithPath","existingData","push","onImportDataSet","setInUse","buildEntityPropertiesFromData","setIdColumn","setImportData","filteredHeadingsOrder","setHeadingsOrder","setOriginProperties","mappedHeadings","validValues","onImportMappingComplete","isMergedCollection","merged","deleteRequested","setDeleteRequested","Tabs","Tab","View","ImportSaveInProgress","importedCollection","removeUndefined","validate","ErrorView","ArrowBackIcon","LoadingButton","CheckIcon","rest","propertiesResult","applyPropertiesConfig","internalProperty","subpaths","removeInitialAndTrailingSlashes","ConfigControllerContext","createContext","ConfigControllerProvider","collectionConfigController","configPermissions","onAnalyticsEvent","navigate","useNavigate","currentPropertyDialog","setCurrentPropertyDialog","defaultConfigPermissions","redirect","editCollection","parentCollectionIds_0","existingEntities_0","lastIndexOf","propertyKeyWithoutNamespace","editProperty","parentCollectionIds_1","parentCollection_0","sourceClick","createCollection","buildUrlCollectionPath","saveProperty","createCollections","editCollections","deleteCollections","EditorCollectionAction","tableController","navigationController","collectionEditorController","getCollectionFromIds","canEditCollection","editorButton","useCollectionsConfigController","HomePageEditorCollectionAction","permissions","onEditCollectionClicked","Menu","MoreVertIcon","MenuItem","event_0","CollectionViewHeaderAction","onHover","PropertyAddColumnComponent","getDefaultPropertiesOrder","NewCollectionButton","EditorCollectionActionStart","saveDefaultFilterButton","getObjectOrNull","filterValues","sortBy","SaveIcon","clearFilter","setFilterValues","setSortBy","UndoIcon","o","NewCollectionCard","context","canCreateCollections","EditorEntityAction","formContext","isDirty","useCollectionEditorPlugin","includeIntroView","Component","navigationEntries","saveNavigationEntries","additionalActions","additionalChildrenStart","CollectionActions","AdditionalCards","allowDragAndDrop","onNavigationEntriesUpdate","CollectionActionsStart","HeaderAction","AddColumnComponent","ActionsTop","provider","homePage","collectionView","IntroWidget","mergeCollections","baseCollections","backendCollections","modifyCollection","markAsEditable","joinCollectionLists","sort","indexA","findIndex","indexB","MissingReferenceWidget","pathProp","getLastSegment","getParentCollectionIds","collectionEditor","segments"],"mappings":"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"}