@wix/patterns-cms 1.17.0 → 1.18.0

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 (37) hide show
  1. package/dist/cjs/adapter/__tests__/cmsFieldActions.spec.js +59 -27
  2. package/dist/cjs/adapter/__tests__/cmsFieldActions.spec.js.map +1 -1
  3. package/dist/cjs/adapter/__tests__/useCmsSchemaSource.spec.js +34 -2
  4. package/dist/cjs/adapter/__tests__/useCmsSchemaSource.spec.js.map +1 -1
  5. package/dist/cjs/adapter/createCmsFieldActions.js +35 -3
  6. package/dist/cjs/adapter/createCmsFieldActions.js.map +1 -1
  7. package/dist/cjs/adapter/fieldSettings/CmsFieldSettings.js +359 -0
  8. package/dist/cjs/adapter/fieldSettings/CmsFieldSettings.js.map +1 -0
  9. package/dist/cjs/adapter/fieldSettings/CmsFieldSettingsState.js +144 -0
  10. package/dist/cjs/adapter/fieldSettings/CmsFieldSettingsState.js.map +1 -0
  11. package/dist/cjs/adapter/fieldSettings/createCmsFieldSettings.js +29 -0
  12. package/dist/cjs/adapter/fieldSettings/createCmsFieldSettings.js.map +1 -0
  13. package/dist/cjs/adapter/useCmsSchemaSource.js +70 -56
  14. package/dist/cjs/adapter/useCmsSchemaSource.js.map +1 -1
  15. package/dist/esm/adapter/__tests__/cmsFieldActions.spec.js +50 -23
  16. package/dist/esm/adapter/__tests__/cmsFieldActions.spec.js.map +1 -1
  17. package/dist/esm/adapter/__tests__/useCmsSchemaSource.spec.js +24 -2
  18. package/dist/esm/adapter/__tests__/useCmsSchemaSource.spec.js.map +1 -1
  19. package/dist/esm/adapter/createCmsFieldActions.js +28 -3
  20. package/dist/esm/adapter/createCmsFieldActions.js.map +1 -1
  21. package/dist/esm/adapter/fieldSettings/CmsFieldSettings.js +45 -0
  22. package/dist/esm/adapter/fieldSettings/CmsFieldSettings.js.map +1 -0
  23. package/dist/esm/adapter/fieldSettings/CmsFieldSettingsState.js +136 -0
  24. package/dist/esm/adapter/fieldSettings/CmsFieldSettingsState.js.map +1 -0
  25. package/dist/esm/adapter/fieldSettings/createCmsFieldSettings.js +13 -0
  26. package/dist/esm/adapter/fieldSettings/createCmsFieldSettings.js.map +1 -0
  27. package/dist/esm/adapter/useCmsSchemaSource.js +71 -59
  28. package/dist/esm/adapter/useCmsSchemaSource.js.map +1 -1
  29. package/dist/types/adapter/createCmsFieldActions.d.ts.map +1 -1
  30. package/dist/types/adapter/fieldSettings/CmsFieldSettings.d.ts +12 -0
  31. package/dist/types/adapter/fieldSettings/CmsFieldSettings.d.ts.map +1 -0
  32. package/dist/types/adapter/fieldSettings/CmsFieldSettingsState.d.ts +53 -0
  33. package/dist/types/adapter/fieldSettings/CmsFieldSettingsState.d.ts.map +1 -0
  34. package/dist/types/adapter/fieldSettings/createCmsFieldSettings.d.ts +3 -0
  35. package/dist/types/adapter/fieldSettings/createCmsFieldSettings.d.ts.map +1 -0
  36. package/dist/types/adapter/useCmsSchemaSource.d.ts.map +1 -1
  37. package/package.json +9 -4
@@ -1 +1 @@
1
- {"version":3,"names":["_data","require","_cmsFieldTypeMap","_transformCmsSchema","_getFieldKey","_pollUntilReady","COPY_TASK_POLL_INTERVAL_MS","COPY_TASK_MAX_ATTEMPTS","waitForCopyTask","taskId","pollUntilReady","task","tasks","getTask","status","_task$failures","failure","failures","Error","code","description","filter","Boolean","join","interval","maxAttempts","err","message","createCmsFieldActions","collectionId","getCollection","existingFieldKeys","_getCollection","fields","flatMap","f","key","findCmsField","fieldKey","_getCollection2","find","fieldsAfterMutation","dataCollection","transformCmsSchema","toCmsField","field","_field$validation","_field$validation2","_field$validation3","cmsType","PatternsFieldTypeToCmsFieldType","type","cmsField","displayName","required","validation","isPii","encrypted","helpText","numberRange","stringLengthRange","buildFieldPatch","fieldId","updates","_findCmsField","_updates$validation","_updates$validation2","_updates$validation3","sourceCmsType","patch","undefined","cloneFieldDefinition","source","newKey","newDisplayName","_cloned$typeMetadata","systemField","capabilities","rest","cloned","typeMetadata","multiReference","referencingFieldKey","addField","getFieldKey","collections","createDataCollectionField","addFields","collection","cmsFields","map","id","updateDataCollection","editField","patchDataCollectionField","deleteField","deleteDataCollectionField","renameField","newName","makePrimary","patchDataCollection","displayField","duplicateField","sourceField","duplicateFieldWithContent","createdTask","createTask","copyFieldDataOptions","dataCollectionId","sourceFieldKey","targetFieldKey","_id"],"sources":["../../../src/adapter/createCmsFieldActions.ts"],"sourcesContent":["import { collections, tasks } from '@wix/data';\nimport type { Field } from '@wix/patterns';\nimport type { FieldActions, Schema } from '@wix/patterns/schema';\nimport { PatternsFieldTypeToCmsFieldType } from './cmsFieldTypeMap';\nimport { transformCmsSchema } from './transformCmsSchema';\nimport { getFieldKey } from './getFieldKey';\nimport { pollUntilReady } from './pollUntilReady';\n\nconst COPY_TASK_POLL_INTERVAL_MS = 1000;\nconst COPY_TASK_MAX_ATTEMPTS = 300;\n\n/** Polls a COPY_FIELD_DATA task to completion, mapping the generic poll-timeout error. */\nconst waitForCopyTask = async (taskId: string): Promise<void> => {\n try {\n await pollUntilReady(\n async () => {\n const task = await tasks.getTask(taskId);\n if (task.status === 'FAILED') {\n const failure = task.failures?.[0];\n throw new Error(\n [failure?.code, failure?.description].filter(Boolean).join(': ') ||\n 'Copy field data task failed',\n );\n }\n return task.status === 'COMPLETED';\n },\n {\n interval: COPY_TASK_POLL_INTERVAL_MS,\n maxAttempts: COPY_TASK_MAX_ATTEMPTS,\n },\n );\n } catch (err) {\n if (err instanceof Error && err.message === 'Backup polling timed out') {\n throw new Error('Copy field data task timed out');\n }\n throw err;\n }\n};\n\n/**\n * Builds the `FieldActions` for a CMS collection over `@wix/data`. `getCollection`\n * returns the current raw collection snapshot (for existing keys + source field types).\n */\nexport function createCmsFieldActions(\n collectionId: string,\n getCollection: () => collections.DataCollection | null,\n): FieldActions {\n const existingFieldKeys = (): string[] =>\n getCollection()?.fields?.flatMap((f) => (f.key ? [f.key] : [])) ?? [];\n\n const findCmsField = (fieldKey: string): collections.Field | undefined =>\n getCollection()?.fields?.find((f) => f.key === fieldKey);\n\n // A field mutation returns the updated collection; turn it into the new fields\n // map. The SDK guarantees `dataCollection` on a successful mutation, so there is\n // no missing-collection case to handle here.\n const fieldsAfterMutation = (\n dataCollection: collections.DataCollection,\n ): Schema['fields'] => transformCmsSchema(dataCollection).fields;\n\n // Maps a source-neutral `Field` to a CMS field under the given `key`. Throws\n // for a type with no CMS mapping before any SDK call. Shared by addField (key\n // derived from the display name) and addFields (key = the caller's field.id).\n const toCmsField = (field: Field, key: string): collections.Field => {\n const cmsType = PatternsFieldTypeToCmsFieldType[field.type];\n if (!cmsType) {\n throw new Error(`Field type ${field.type} not supported yet`);\n }\n\n const cmsField: collections.Field = {\n key,\n displayName: field.displayName,\n type: cmsType,\n required: field.validation?.required ?? false,\n };\n\n if (field.isPii) {\n cmsField.encrypted = true;\n }\n if (field.helpText) {\n cmsField.description = field.helpText;\n }\n if (field.type === 'NUMBER' && field.validation?.numberRange) {\n cmsField.numberRange = field.validation.numberRange;\n }\n if (field.type === 'SHORT_TEXT' && field.validation?.stringLengthRange) {\n cmsField.stringLengthRange = field.validation.stringLengthRange;\n }\n\n return cmsField;\n };\n\n const buildFieldPatch = (\n fieldId: string,\n updates: Partial<Field>,\n ): collections.Field => {\n const sourceCmsType = findCmsField(fieldId)?.type;\n const patch: collections.Field = { key: fieldId };\n if (updates.displayName !== undefined) {\n patch.displayName = updates.displayName;\n }\n if (updates.isPii !== undefined) {\n patch.encrypted = updates.isPii;\n }\n if (updates.helpText !== undefined) {\n patch.description = updates.helpText;\n }\n if (updates.validation?.required !== undefined) {\n patch.required = updates.validation.required;\n }\n if (updates.validation?.numberRange && sourceCmsType === 'NUMBER') {\n patch.numberRange = updates.validation.numberRange;\n }\n if (updates.validation?.stringLengthRange && sourceCmsType === 'TEXT') {\n patch.stringLengthRange = updates.validation.stringLengthRange;\n }\n return patch;\n };\n\n /**\n * Clones a CMS field for duplication: drops `systemField`/`capabilities` and clears\n * `referencingFieldKey` so the duplicate gets its own backing reference field.\n */\n const cloneFieldDefinition = (\n source: collections.Field,\n newKey: string,\n newDisplayName: string,\n ): collections.Field => {\n const { systemField, capabilities, ...rest } = source;\n const cloned: collections.Field = {\n ...rest,\n key: newKey,\n displayName: newDisplayName,\n };\n if (cloned.typeMetadata?.multiReference?.referencingFieldKey) {\n cloned.typeMetadata = {\n ...cloned.typeMetadata,\n multiReference: {\n ...cloned.typeMetadata.multiReference,\n referencingFieldKey: undefined,\n },\n };\n }\n return cloned;\n };\n\n return {\n addField: async (field: Field) => {\n const cmsField = toCmsField(\n field,\n getFieldKey(existingFieldKeys(), field.displayName),\n );\n const { dataCollection } = await collections.createDataCollectionField(\n collectionId,\n { field: cmsField },\n );\n return fieldsAfterMutation(dataCollection!);\n },\n\n addFields: async (fields: Field[]) => {\n const collection = getCollection();\n if (!collection) {\n throw new Error(`Collection ${collectionId} not found`);\n }\n\n // Callers decide the keys up front (import uploads values under them), so\n // key each new field by its `id` — mapped before any SDK call so an\n // unsupported type throws without a partial write.\n const cmsFields = fields.map((field) => toCmsField(field, field.id));\n\n // One mutation for all new fields: append them to the existing\n // definition. Unlike the field mutations, `updateDataCollection` resolves\n // with the updated collection directly (not wrapped in `{ dataCollection }`).\n const dataCollection = await collections.updateDataCollection({\n ...collection,\n fields: [...(collection.fields ?? []), ...cmsFields],\n });\n return fieldsAfterMutation(dataCollection);\n },\n\n editField: async (fieldId, updates) => {\n const { dataCollection } = await collections.patchDataCollectionField(\n collectionId,\n buildFieldPatch(fieldId, updates),\n );\n return fieldsAfterMutation(dataCollection!);\n },\n\n deleteField: async (fieldId) => {\n const { dataCollection } = await collections.deleteDataCollectionField(\n collectionId,\n { fieldKey: fieldId },\n );\n return fieldsAfterMutation(dataCollection!);\n },\n\n renameField: async (fieldId, newName) => {\n await collections.patchDataCollectionField(\n collectionId,\n buildFieldPatch(fieldId, { displayName: newName }),\n );\n },\n\n makePrimary: async (fieldId) => {\n const { dataCollection } = await collections.patchDataCollection(\n collectionId,\n { displayField: fieldId },\n );\n return fieldsAfterMutation(dataCollection!);\n },\n\n duplicateField: async (fieldId) => {\n const sourceField = findCmsField(fieldId);\n if (!sourceField || !sourceField.type) {\n throw new Error(`Field ${fieldId} not found`);\n }\n const newDisplayName = `${sourceField.displayName ?? fieldId} (Copy)`;\n const newKey = getFieldKey(existingFieldKeys(), newDisplayName);\n const { dataCollection } = await collections.createDataCollectionField(\n collectionId,\n { field: cloneFieldDefinition(sourceField, newKey, newDisplayName) },\n );\n return fieldsAfterMutation(dataCollection!);\n },\n\n duplicateFieldWithContent: async (fieldId) => {\n const sourceField = findCmsField(fieldId);\n if (!sourceField || !sourceField.type) {\n throw new Error(`Field ${fieldId} not found`);\n }\n const newDisplayName = `${sourceField.displayName ?? fieldId} (Copy)`;\n const newKey = getFieldKey(existingFieldKeys(), newDisplayName);\n const { dataCollection } = await collections.createDataCollectionField(\n collectionId,\n { field: cloneFieldDefinition(sourceField, newKey, newDisplayName) },\n );\n const createdTask = await tasks.createTask({\n type: 'COPY_FIELD_DATA',\n copyFieldDataOptions: {\n dataCollectionId: collectionId,\n sourceFieldKey: fieldId,\n targetFieldKey: newKey,\n },\n });\n await waitForCopyTask(createdTask._id!);\n return fieldsAfterMutation(dataCollection!);\n },\n };\n}\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["_data","require","_cmsFieldTypeMap","_transformCmsSchema","_getFieldKey","_pollUntilReady","COPY_TASK_POLL_INTERVAL_MS","COPY_TASK_MAX_ATTEMPTS","waitForCopyTask","taskId","pollUntilReady","task","tasks","getTask","status","_task$failures","failure","failures","Error","code","description","filter","Boolean","join","interval","maxAttempts","err","message","applyCmsFieldSettings","cmsField","settings","helpText","undefined","required","stringLengthRange","characters","numberRange","values","createCmsFieldActions","collectionId","getCollection","existingFieldKeys","_getCollection","fields","flatMap","f","key","findCmsField","fieldKey","_getCollection2","find","fieldsAfterMutation","dataCollection","transformCmsSchema","toCmsField","field","_field$validation","_field$validation2","_field$validation3","cmsType","PatternsFieldTypeToCmsFieldType","type","displayName","validation","isPii","encrypted","buildFieldPatch","fieldId","updates","_findCmsField","_updates$validation","_updates$validation2","_updates$validation3","sourceCmsType","patch","writableFieldProps","source","systemField","capabilities","condition","writable","cloneFieldDefinition","newKey","newDisplayName","_cloned$typeMetadata","rest","cloned","typeMetadata","multiReference","referencingFieldKey","addField","getFieldKey","collections","createDataCollectionField","addFields","collection","cmsFields","map","id","updateDataCollection","editField","existingField","updateDataCollectionField","deleteField","deleteDataCollectionField","renameField","newName","patchDataCollectionField","makePrimary","patchDataCollection","displayField","duplicateField","sourceField","duplicateFieldWithContent","createdTask","createTask","copyFieldDataOptions","dataCollectionId","sourceFieldKey","targetFieldKey","_id"],"sources":["../../../src/adapter/createCmsFieldActions.ts"],"sourcesContent":["import { collections, tasks } from '@wix/data';\nimport type { Field } from '@wix/patterns';\nimport type { FieldActions, Schema } from '@wix/patterns/schema';\nimport { PatternsFieldTypeToCmsFieldType } from './cmsFieldTypeMap';\nimport { transformCmsSchema } from './transformCmsSchema';\nimport { getFieldKey } from './getFieldKey';\nimport { pollUntilReady } from './pollUntilReady';\nimport type { CmsFieldSettings } from './fieldSettings/CmsFieldSettingsState';\n\nconst COPY_TASK_POLL_INTERVAL_MS = 1000;\nconst COPY_TASK_MAX_ATTEMPTS = 300;\n\n/** Polls a COPY_FIELD_DATA task to completion, mapping the generic poll-timeout error. */\nconst waitForCopyTask = async (taskId: string): Promise<void> => {\n try {\n await pollUntilReady(\n async () => {\n const task = await tasks.getTask(taskId);\n if (task.status === 'FAILED') {\n const failure = task.failures?.[0];\n throw new Error(\n [failure?.code, failure?.description].filter(Boolean).join(': ') ||\n 'Copy field data task failed',\n );\n }\n return task.status === 'COMPLETED';\n },\n {\n interval: COPY_TASK_POLL_INTERVAL_MS,\n maxAttempts: COPY_TASK_MAX_ATTEMPTS,\n },\n );\n } catch (err) {\n if (err instanceof Error && err.message === 'Backup polling timed out') {\n throw new Error('Copy field data task timed out');\n }\n throw err;\n }\n};\n\nconst applyCmsFieldSettings = (\n cmsField: collections.Field,\n settings?: CmsFieldSettings,\n) => {\n if (!settings) {\n return;\n }\n cmsField.description = settings.helpText || undefined;\n cmsField.required = settings.required;\n cmsField.stringLengthRange = settings.characters;\n cmsField.numberRange = settings.values;\n};\n\n/**\n * Builds the `FieldActions` for a CMS collection over `@wix/data`. `getCollection`\n * returns the current raw collection snapshot (for existing keys + source field types).\n */\nexport function createCmsFieldActions(\n collectionId: string,\n getCollection: () => collections.DataCollection | null,\n): FieldActions {\n const existingFieldKeys = (): string[] =>\n getCollection()?.fields?.flatMap((f) => (f.key ? [f.key] : [])) ?? [];\n\n const findCmsField = (fieldKey: string): collections.Field | undefined =>\n getCollection()?.fields?.find((f) => f.key === fieldKey);\n\n // A field mutation returns the updated collection; turn it into the new fields\n // map. The SDK guarantees `dataCollection` on a successful mutation, so there is\n // no missing-collection case to handle here.\n const fieldsAfterMutation = (\n dataCollection: collections.DataCollection,\n ): Schema['fields'] => transformCmsSchema(dataCollection).fields;\n\n // Maps a source-neutral `Field` to a CMS field under the given `key`. Throws\n // for a type with no CMS mapping before any SDK call. Shared by addField (key\n // derived from the display name) and addFields (key = the caller's field.id).\n const toCmsField = (field: Field, key: string): collections.Field => {\n const cmsType = PatternsFieldTypeToCmsFieldType[field.type];\n if (!cmsType) {\n throw new Error(`Field type ${field.type} not supported yet`);\n }\n\n const cmsField: collections.Field = {\n key,\n displayName: field.displayName,\n type: cmsType,\n required: field.validation?.required ?? false,\n };\n\n if (field.isPii) {\n cmsField.encrypted = true;\n }\n if (field.helpText) {\n cmsField.description = field.helpText;\n }\n if (field.type === 'NUMBER' && field.validation?.numberRange) {\n cmsField.numberRange = field.validation.numberRange;\n }\n if (field.type === 'SHORT_TEXT' && field.validation?.stringLengthRange) {\n cmsField.stringLengthRange = field.validation.stringLengthRange;\n }\n\n return cmsField;\n };\n\n const buildFieldPatch = (\n fieldId: string,\n updates: Partial<Field>,\n ): collections.Field => {\n const sourceCmsType = findCmsField(fieldId)?.type;\n const patch: collections.Field = { key: fieldId };\n if (updates.displayName !== undefined) {\n patch.displayName = updates.displayName;\n }\n if (updates.isPii !== undefined) {\n patch.encrypted = updates.isPii;\n }\n if (updates.helpText !== undefined) {\n patch.description = updates.helpText;\n }\n if (updates.validation?.required !== undefined) {\n patch.required = updates.validation.required;\n }\n if (updates.validation?.numberRange && sourceCmsType === 'NUMBER') {\n patch.numberRange = updates.validation.numberRange;\n }\n if (updates.validation?.stringLengthRange && sourceCmsType === 'TEXT') {\n patch.stringLengthRange = updates.validation.stringLengthRange;\n }\n return patch;\n };\n\n const writableFieldProps = (source: collections.Field) => {\n const { systemField, capabilities, condition, ...writable } = source;\n return writable;\n };\n\n /**\n * Clones a CMS field for duplication: drops `systemField`/`capabilities` and clears\n * `referencingFieldKey` so the duplicate gets its own backing reference field.\n */\n const cloneFieldDefinition = (\n source: collections.Field,\n newKey: string,\n newDisplayName: string,\n ): collections.Field => {\n const { systemField, capabilities, ...rest } = source;\n const cloned: collections.Field = {\n ...rest,\n key: newKey,\n displayName: newDisplayName,\n };\n if (cloned.typeMetadata?.multiReference?.referencingFieldKey) {\n cloned.typeMetadata = {\n ...cloned.typeMetadata,\n multiReference: {\n ...cloned.typeMetadata.multiReference,\n referencingFieldKey: undefined,\n },\n };\n }\n return cloned;\n };\n\n return {\n addField: async (field: Field, settings?: CmsFieldSettings) => {\n const cmsField = toCmsField(\n field,\n getFieldKey(existingFieldKeys(), field.displayName),\n );\n\n applyCmsFieldSettings(cmsField, settings);\n const { dataCollection } = await collections.createDataCollectionField(\n collectionId,\n { field: cmsField },\n );\n return fieldsAfterMutation(dataCollection!);\n },\n\n addFields: async (fields: Field[]) => {\n const collection = getCollection();\n if (!collection) {\n throw new Error(`Collection ${collectionId} not found`);\n }\n\n // Callers decide the keys up front (import uploads values under them), so\n // key each new field by its `id` — mapped before any SDK call so an\n // unsupported type throws without a partial write.\n const cmsFields = fields.map((field) => toCmsField(field, field.id));\n\n // One mutation for all new fields: append them to the existing\n // definition. Unlike the field mutations, `updateDataCollection` resolves\n // with the updated collection directly (not wrapped in `{ dataCollection }`).\n const dataCollection = await collections.updateDataCollection({\n ...collection,\n fields: [...(collection.fields ?? []), ...cmsFields],\n });\n return fieldsAfterMutation(dataCollection);\n },\n\n editField: async (fieldId, updates, settings?: CmsFieldSettings) => {\n const existingField = findCmsField(fieldId);\n if (!existingField?.type) {\n throw new Error(`Field ${fieldId} not found`);\n }\n const field = {\n ...writableFieldProps(existingField),\n ...buildFieldPatch(fieldId, updates),\n key: fieldId,\n type: existingField.type,\n };\n applyCmsFieldSettings(field, settings);\n const { dataCollection } = await collections.updateDataCollectionField(\n collectionId,\n { field },\n );\n return fieldsAfterMutation(dataCollection!);\n },\n\n deleteField: async (fieldId) => {\n const { dataCollection } = await collections.deleteDataCollectionField(\n collectionId,\n { fieldKey: fieldId },\n );\n return fieldsAfterMutation(dataCollection!);\n },\n\n renameField: async (fieldId, newName) => {\n await collections.patchDataCollectionField(\n collectionId,\n buildFieldPatch(fieldId, { displayName: newName }),\n );\n },\n\n makePrimary: async (fieldId) => {\n const { dataCollection } = await collections.patchDataCollection(\n collectionId,\n { displayField: fieldId },\n );\n return fieldsAfterMutation(dataCollection!);\n },\n\n duplicateField: async (fieldId) => {\n const sourceField = findCmsField(fieldId);\n if (!sourceField || !sourceField.type) {\n throw new Error(`Field ${fieldId} not found`);\n }\n const newDisplayName = `${sourceField.displayName ?? fieldId} (Copy)`;\n const newKey = getFieldKey(existingFieldKeys(), newDisplayName);\n const { dataCollection } = await collections.createDataCollectionField(\n collectionId,\n { field: cloneFieldDefinition(sourceField, newKey, newDisplayName) },\n );\n return fieldsAfterMutation(dataCollection!);\n },\n\n duplicateFieldWithContent: async (fieldId) => {\n const sourceField = findCmsField(fieldId);\n if (!sourceField || !sourceField.type) {\n throw new Error(`Field ${fieldId} not found`);\n }\n const newDisplayName = `${sourceField.displayName ?? fieldId} (Copy)`;\n const newKey = getFieldKey(existingFieldKeys(), newDisplayName);\n const { dataCollection } = await collections.createDataCollectionField(\n collectionId,\n { field: cloneFieldDefinition(sourceField, newKey, newDisplayName) },\n );\n const createdTask = await tasks.createTask({\n type: 'COPY_FIELD_DATA',\n copyFieldDataOptions: {\n dataCollectionId: collectionId,\n sourceFieldKey: fieldId,\n targetFieldKey: newKey,\n },\n });\n await waitForCopyTask(createdTask._id!);\n return fieldsAfterMutation(dataCollection!);\n },\n };\n}\n"],"mappings":"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","ignoreList":[]}
@@ -0,0 +1,359 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+ exports.__esModule = true;
5
+ exports._CmsFieldSettings = exports.CmsFieldSettings = void 0;
6
+ var _react = _interopRequireDefault(require("react"));
7
+ var _mobxReactLite = require("mobx-react-lite");
8
+ var _designSystem = require("@wix/design-system");
9
+ var _CmsFieldSettingsState = require("./CmsFieldSettingsState");
10
+ var _jsxFileName = "/home/builduser/work/843658b9f44192f0/packages/patterns-cms/dist/cjs/adapter/fieldSettings/CmsFieldSettings.tsx";
11
+ /** Plain strings until this package gets its own translations. */
12
+ const _CmsFieldSettings = props => {
13
+ const {
14
+ state,
15
+ fieldType
16
+ } = props;
17
+ const {
18
+ rangeError,
19
+ valueRangeError
20
+ } = state;
21
+ return /*#__PURE__*/_react.default.createElement(_designSystem.Box, {
22
+ direction: "vertical",
23
+ gap: "SP4",
24
+ __self: void 0,
25
+ __source: {
26
+ fileName: _jsxFileName,
27
+ lineNumber: 32,
28
+ columnNumber: 5
29
+ }
30
+ }, /*#__PURE__*/_react.default.createElement(_designSystem.FormField, {
31
+ dataHook: "cms-field-settings-help-text",
32
+ label: "Help text",
33
+ infoContent: "Shown under the field when someone adds content to this collection.",
34
+ __self: void 0,
35
+ __source: {
36
+ fileName: _jsxFileName,
37
+ lineNumber: 33,
38
+ columnNumber: 7
39
+ }
40
+ }, /*#__PURE__*/_react.default.createElement(_designSystem.Input, {
41
+ dataHook: "cms-field-settings-help-text-input",
42
+ value: state.helpText,
43
+ maxLength: 200,
44
+ placeholder: "Add a short explanation",
45
+ onChange: e => state.setHelpText(e.target.value),
46
+ __self: void 0,
47
+ __source: {
48
+ fileName: _jsxFileName,
49
+ lineNumber: 38,
50
+ columnNumber: 9
51
+ }
52
+ })), /*#__PURE__*/_react.default.createElement(_designSystem.Box, {
53
+ direction: "vertical",
54
+ gap: "SP2",
55
+ __self: void 0,
56
+ __source: {
57
+ fileName: _jsxFileName,
58
+ lineNumber: 46,
59
+ columnNumber: 7
60
+ }
61
+ }, /*#__PURE__*/_react.default.createElement(_designSystem.Text, {
62
+ size: "small",
63
+ secondary: true,
64
+ __self: void 0,
65
+ __source: {
66
+ fileName: _jsxFileName,
67
+ lineNumber: 47,
68
+ columnNumber: 9
69
+ }
70
+ }, "Validation"), (0, _CmsFieldSettingsState.showsRequired)(fieldType) && /*#__PURE__*/_react.default.createElement(_designSystem.Box, {
71
+ dataHook: "cms-field-settings-required",
72
+ verticalAlign: "middle",
73
+ gap: "9px",
74
+ __self: void 0,
75
+ __source: {
76
+ fileName: _jsxFileName,
77
+ lineNumber: 51,
78
+ columnNumber: 11
79
+ }
80
+ }, /*#__PURE__*/_react.default.createElement(_designSystem.ToggleSwitch, {
81
+ dataHook: "cms-field-settings-required-toggle",
82
+ size: "medium",
83
+ checked: state.required,
84
+ onChange: e => state.setRequired(e.target.checked),
85
+ __self: void 0,
86
+ __source: {
87
+ fileName: _jsxFileName,
88
+ lineNumber: 56,
89
+ columnNumber: 13
90
+ }
91
+ }), /*#__PURE__*/_react.default.createElement(_designSystem.Box, {
92
+ verticalAlign: "middle",
93
+ gap: "3px",
94
+ __self: void 0,
95
+ __source: {
96
+ fileName: _jsxFileName,
97
+ lineNumber: 62,
98
+ columnNumber: 13
99
+ }
100
+ }, /*#__PURE__*/_react.default.createElement(_designSystem.Text, {
101
+ size: "small",
102
+ __self: void 0,
103
+ __source: {
104
+ fileName: _jsxFileName,
105
+ lineNumber: 63,
106
+ columnNumber: 15
107
+ }
108
+ }, "Make this a required field"), /*#__PURE__*/_react.default.createElement(_designSystem.InfoIcon, {
109
+ size: "small",
110
+ content: "Make this a required field when adding content to this collection.",
111
+ __self: void 0,
112
+ __source: {
113
+ fileName: _jsxFileName,
114
+ lineNumber: 64,
115
+ columnNumber: 15
116
+ }
117
+ }))), (0, _CmsFieldSettingsState.showsCharactersLimit)(fieldType) && /*#__PURE__*/_react.default.createElement(_designSystem.Box, {
118
+ direction: "vertical",
119
+ gap: "SP2",
120
+ __self: void 0,
121
+ __source: {
122
+ fileName: _jsxFileName,
123
+ lineNumber: 72,
124
+ columnNumber: 11
125
+ }
126
+ }, /*#__PURE__*/_react.default.createElement(_designSystem.Box, {
127
+ dataHook: "cms-field-settings-characters-limit",
128
+ verticalAlign: "middle",
129
+ gap: "9px",
130
+ __self: void 0,
131
+ __source: {
132
+ fileName: _jsxFileName,
133
+ lineNumber: 73,
134
+ columnNumber: 13
135
+ }
136
+ }, /*#__PURE__*/_react.default.createElement(_designSystem.ToggleSwitch, {
137
+ dataHook: "cms-field-settings-characters-limit-toggle",
138
+ size: "medium",
139
+ checked: state.charactersLimit,
140
+ onChange: e => state.setCharactersLimit(e.target.checked),
141
+ __self: void 0,
142
+ __source: {
143
+ fileName: _jsxFileName,
144
+ lineNumber: 78,
145
+ columnNumber: 15
146
+ }
147
+ }), /*#__PURE__*/_react.default.createElement(_designSystem.Box, {
148
+ verticalAlign: "middle",
149
+ gap: "3px",
150
+ __self: void 0,
151
+ __source: {
152
+ fileName: _jsxFileName,
153
+ lineNumber: 84,
154
+ columnNumber: 15
155
+ }
156
+ }, /*#__PURE__*/_react.default.createElement(_designSystem.Text, {
157
+ size: "small",
158
+ __self: void 0,
159
+ __source: {
160
+ fileName: _jsxFileName,
161
+ lineNumber: 85,
162
+ columnNumber: 17
163
+ }
164
+ }, "Limit character count"), /*#__PURE__*/_react.default.createElement(_designSystem.InfoIcon, {
165
+ size: "small",
166
+ content: "Limit the number of characters in this field for any newly added items.",
167
+ __self: void 0,
168
+ __source: {
169
+ fileName: _jsxFileName,
170
+ lineNumber: 86,
171
+ columnNumber: 17
172
+ }
173
+ }))), state.charactersLimit && /*#__PURE__*/_react.default.createElement(_designSystem.Box, {
174
+ verticalAlign: "middle",
175
+ gap: "SP2",
176
+ __self: void 0,
177
+ __source: {
178
+ fileName: _jsxFileName,
179
+ lineNumber: 93,
180
+ columnNumber: 15
181
+ }
182
+ }, /*#__PURE__*/_react.default.createElement(_designSystem.Box, {
183
+ width: "112px",
184
+ __self: void 0,
185
+ __source: {
186
+ fileName: _jsxFileName,
187
+ lineNumber: 94,
188
+ columnNumber: 17
189
+ }
190
+ }, /*#__PURE__*/_react.default.createElement(_designSystem.NumberInput, {
191
+ dataHook: "cms-field-settings-min-characters",
192
+ size: "small",
193
+ placeholder: "min",
194
+ min: state.minCharactersFloor,
195
+ max: _CmsFieldSettingsState.CHARACTERS_CEILING,
196
+ value: state.minCharacters,
197
+ onChange: value => state.setMinCharacters(value ?? undefined),
198
+ onBlur: state.normalizeMinCharacters,
199
+ __self: void 0,
200
+ __source: {
201
+ fileName: _jsxFileName,
202
+ lineNumber: 95,
203
+ columnNumber: 19
204
+ }
205
+ })), /*#__PURE__*/_react.default.createElement(_designSystem.Text, {
206
+ size: "small",
207
+ secondary: true,
208
+ __self: void 0,
209
+ __source: {
210
+ fileName: _jsxFileName,
211
+ lineNumber: 108,
212
+ columnNumber: 17
213
+ }
214
+ }, "and"), /*#__PURE__*/_react.default.createElement(_designSystem.Box, {
215
+ width: "112px",
216
+ __self: void 0,
217
+ __source: {
218
+ fileName: _jsxFileName,
219
+ lineNumber: 111,
220
+ columnNumber: 17
221
+ }
222
+ }, /*#__PURE__*/_react.default.createElement(_designSystem.NumberInput, {
223
+ dataHook: "cms-field-settings-max-characters",
224
+ size: "small",
225
+ placeholder: "max",
226
+ min: _CmsFieldSettingsState.MAX_CHARACTERS_FLOOR,
227
+ max: _CmsFieldSettingsState.CHARACTERS_CEILING,
228
+ value: state.maxCharacters,
229
+ status: rangeError ? 'error' : undefined,
230
+ statusMessage: rangeError,
231
+ onChange: value => state.setMaxCharacters(value ?? undefined),
232
+ onBlur: state.normalizeMaxCharacters,
233
+ __self: void 0,
234
+ __source: {
235
+ fileName: _jsxFileName,
236
+ lineNumber: 112,
237
+ columnNumber: 19
238
+ }
239
+ })))), (0, _CmsFieldSettingsState.showsValueRange)(fieldType) && /*#__PURE__*/_react.default.createElement(_designSystem.Box, {
240
+ direction: "vertical",
241
+ gap: "SP2",
242
+ __self: void 0,
243
+ __source: {
244
+ fileName: _jsxFileName,
245
+ lineNumber: 132,
246
+ columnNumber: 11
247
+ }
248
+ }, /*#__PURE__*/_react.default.createElement(_designSystem.Box, {
249
+ dataHook: "cms-field-settings-value-range",
250
+ verticalAlign: "middle",
251
+ gap: "9px",
252
+ __self: void 0,
253
+ __source: {
254
+ fileName: _jsxFileName,
255
+ lineNumber: 133,
256
+ columnNumber: 13
257
+ }
258
+ }, /*#__PURE__*/_react.default.createElement(_designSystem.ToggleSwitch, {
259
+ dataHook: "cms-field-settings-value-range-toggle",
260
+ size: "medium",
261
+ checked: state.valueRange,
262
+ onChange: e => state.setValueRange(e.target.checked),
263
+ __self: void 0,
264
+ __source: {
265
+ fileName: _jsxFileName,
266
+ lineNumber: 138,
267
+ columnNumber: 15
268
+ }
269
+ }), /*#__PURE__*/_react.default.createElement(_designSystem.Box, {
270
+ verticalAlign: "middle",
271
+ gap: "3px",
272
+ __self: void 0,
273
+ __source: {
274
+ fileName: _jsxFileName,
275
+ lineNumber: 144,
276
+ columnNumber: 15
277
+ }
278
+ }, /*#__PURE__*/_react.default.createElement(_designSystem.Text, {
279
+ size: "small",
280
+ __self: void 0,
281
+ __source: {
282
+ fileName: _jsxFileName,
283
+ lineNumber: 145,
284
+ columnNumber: 17
285
+ }
286
+ }, "Limit value range"), /*#__PURE__*/_react.default.createElement(_designSystem.InfoIcon, {
287
+ size: "small",
288
+ content: "Limit the values this field accepts for any newly added items.",
289
+ __self: void 0,
290
+ __source: {
291
+ fileName: _jsxFileName,
292
+ lineNumber: 146,
293
+ columnNumber: 17
294
+ }
295
+ }))), state.valueRange && /*#__PURE__*/_react.default.createElement(_designSystem.Box, {
296
+ verticalAlign: "middle",
297
+ gap: "SP2",
298
+ __self: void 0,
299
+ __source: {
300
+ fileName: _jsxFileName,
301
+ lineNumber: 153,
302
+ columnNumber: 15
303
+ }
304
+ }, /*#__PURE__*/_react.default.createElement(_designSystem.Box, {
305
+ width: "112px",
306
+ __self: void 0,
307
+ __source: {
308
+ fileName: _jsxFileName,
309
+ lineNumber: 154,
310
+ columnNumber: 17
311
+ }
312
+ }, /*#__PURE__*/_react.default.createElement(_designSystem.NumberInput, {
313
+ dataHook: "cms-field-settings-min-value",
314
+ size: "small",
315
+ placeholder: "min",
316
+ value: state.minValue,
317
+ onChange: value => state.setMinValue(value ?? undefined),
318
+ __self: void 0,
319
+ __source: {
320
+ fileName: _jsxFileName,
321
+ lineNumber: 155,
322
+ columnNumber: 19
323
+ }
324
+ })), /*#__PURE__*/_react.default.createElement(_designSystem.Text, {
325
+ size: "small",
326
+ secondary: true,
327
+ __self: void 0,
328
+ __source: {
329
+ fileName: _jsxFileName,
330
+ lineNumber: 163,
331
+ columnNumber: 17
332
+ }
333
+ }, "and"), /*#__PURE__*/_react.default.createElement(_designSystem.Box, {
334
+ width: "112px",
335
+ __self: void 0,
336
+ __source: {
337
+ fileName: _jsxFileName,
338
+ lineNumber: 166,
339
+ columnNumber: 17
340
+ }
341
+ }, /*#__PURE__*/_react.default.createElement(_designSystem.NumberInput, {
342
+ dataHook: "cms-field-settings-max-value",
343
+ size: "small",
344
+ placeholder: "max",
345
+ value: state.maxValue,
346
+ status: valueRangeError ? 'error' : undefined,
347
+ statusMessage: valueRangeError,
348
+ onChange: value => state.setMaxValue(value ?? undefined),
349
+ __self: void 0,
350
+ __source: {
351
+ fileName: _jsxFileName,
352
+ lineNumber: 167,
353
+ columnNumber: 19
354
+ }
355
+ }))))));
356
+ };
357
+ exports._CmsFieldSettings = _CmsFieldSettings;
358
+ const CmsFieldSettings = exports.CmsFieldSettings = (0, _mobxReactLite.observer)(_CmsFieldSettings);
359
+ //# sourceMappingURL=CmsFieldSettings.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["_react","_interopRequireDefault","require","_mobxReactLite","_designSystem","_CmsFieldSettingsState","_jsxFileName","_CmsFieldSettings","props","state","fieldType","rangeError","valueRangeError","default","createElement","Box","direction","gap","__self","__source","fileName","lineNumber","columnNumber","FormField","dataHook","label","infoContent","Input","value","helpText","maxLength","placeholder","onChange","e","setHelpText","target","Text","size","secondary","showsRequired","verticalAlign","ToggleSwitch","checked","required","setRequired","InfoIcon","content","showsCharactersLimit","charactersLimit","setCharactersLimit","width","NumberInput","min","minCharactersFloor","max","CHARACTERS_CEILING","minCharacters","setMinCharacters","undefined","onBlur","normalizeMinCharacters","MAX_CHARACTERS_FLOOR","maxCharacters","status","statusMessage","setMaxCharacters","normalizeMaxCharacters","showsValueRange","valueRange","setValueRange","minValue","setMinValue","maxValue","setMaxValue","exports","CmsFieldSettings","observer"],"sources":["../../../../src/adapter/fieldSettings/CmsFieldSettings.tsx"],"sourcesContent":["import React from 'react';\nimport { observer } from 'mobx-react-lite';\nimport {\n Box,\n FormField,\n InfoIcon,\n Input,\n NumberInput,\n Text,\n ToggleSwitch,\n} from '@wix/design-system';\nimport type { FieldSettingsProps } from '@wix/patterns/schema';\nimport {\n CHARACTERS_CEILING,\n CmsFieldSettingsState,\n MAX_CHARACTERS_FLOOR,\n showsCharactersLimit,\n showsRequired,\n showsValueRange,\n} from './CmsFieldSettingsState';\n\nexport interface CmsFieldSettingsProps extends FieldSettingsProps {\n state: CmsFieldSettingsState;\n}\n\n/** Plain strings until this package gets its own translations. */\nexport const _CmsFieldSettings = (props: CmsFieldSettingsProps) => {\n const { state, fieldType } = props;\n const { rangeError, valueRangeError } = state;\n\n return (\n <Box direction=\"vertical\" gap=\"SP4\">\n <FormField\n dataHook=\"cms-field-settings-help-text\"\n label=\"Help text\"\n infoContent=\"Shown under the field when someone adds content to this collection.\"\n >\n <Input\n dataHook=\"cms-field-settings-help-text-input\"\n value={state.helpText}\n maxLength={200}\n placeholder=\"Add a short explanation\"\n onChange={(e) => state.setHelpText(e.target.value)}\n />\n </FormField>\n <Box direction=\"vertical\" gap=\"SP2\">\n <Text size=\"small\" secondary>\n Validation\n </Text>\n {showsRequired(fieldType) && (\n <Box\n dataHook=\"cms-field-settings-required\"\n verticalAlign=\"middle\"\n gap=\"9px\"\n >\n <ToggleSwitch\n dataHook=\"cms-field-settings-required-toggle\"\n size=\"medium\"\n checked={state.required}\n onChange={(e) => state.setRequired(e.target.checked)}\n />\n <Box verticalAlign=\"middle\" gap=\"3px\">\n <Text size=\"small\">Make this a required field</Text>\n <InfoIcon\n size=\"small\"\n content=\"Make this a required field when adding content to this collection.\"\n />\n </Box>\n </Box>\n )}\n {showsCharactersLimit(fieldType) && (\n <Box direction=\"vertical\" gap=\"SP2\">\n <Box\n dataHook=\"cms-field-settings-characters-limit\"\n verticalAlign=\"middle\"\n gap=\"9px\"\n >\n <ToggleSwitch\n dataHook=\"cms-field-settings-characters-limit-toggle\"\n size=\"medium\"\n checked={state.charactersLimit}\n onChange={(e) => state.setCharactersLimit(e.target.checked)}\n />\n <Box verticalAlign=\"middle\" gap=\"3px\">\n <Text size=\"small\">Limit character count</Text>\n <InfoIcon\n size=\"small\"\n content=\"Limit the number of characters in this field for any newly added items.\"\n />\n </Box>\n </Box>\n {state.charactersLimit && (\n <Box verticalAlign=\"middle\" gap=\"SP2\">\n <Box width=\"112px\">\n <NumberInput\n dataHook=\"cms-field-settings-min-characters\"\n size=\"small\"\n placeholder=\"min\"\n min={state.minCharactersFloor}\n max={CHARACTERS_CEILING}\n value={state.minCharacters}\n onChange={(value) =>\n state.setMinCharacters(value ?? undefined)\n }\n onBlur={state.normalizeMinCharacters}\n />\n </Box>\n <Text size=\"small\" secondary>\n and\n </Text>\n <Box width=\"112px\">\n <NumberInput\n dataHook=\"cms-field-settings-max-characters\"\n size=\"small\"\n placeholder=\"max\"\n min={MAX_CHARACTERS_FLOOR}\n max={CHARACTERS_CEILING}\n value={state.maxCharacters}\n status={rangeError ? 'error' : undefined}\n statusMessage={rangeError}\n onChange={(value) =>\n state.setMaxCharacters(value ?? undefined)\n }\n onBlur={state.normalizeMaxCharacters}\n />\n </Box>\n </Box>\n )}\n </Box>\n )}\n {showsValueRange(fieldType) && (\n <Box direction=\"vertical\" gap=\"SP2\">\n <Box\n dataHook=\"cms-field-settings-value-range\"\n verticalAlign=\"middle\"\n gap=\"9px\"\n >\n <ToggleSwitch\n dataHook=\"cms-field-settings-value-range-toggle\"\n size=\"medium\"\n checked={state.valueRange}\n onChange={(e) => state.setValueRange(e.target.checked)}\n />\n <Box verticalAlign=\"middle\" gap=\"3px\">\n <Text size=\"small\">Limit value range</Text>\n <InfoIcon\n size=\"small\"\n content=\"Limit the values this field accepts for any newly added items.\"\n />\n </Box>\n </Box>\n {state.valueRange && (\n <Box verticalAlign=\"middle\" gap=\"SP2\">\n <Box width=\"112px\">\n <NumberInput\n dataHook=\"cms-field-settings-min-value\"\n size=\"small\"\n placeholder=\"min\"\n value={state.minValue}\n onChange={(value) => state.setMinValue(value ?? undefined)}\n />\n </Box>\n <Text size=\"small\" secondary>\n and\n </Text>\n <Box width=\"112px\">\n <NumberInput\n dataHook=\"cms-field-settings-max-value\"\n size=\"small\"\n placeholder=\"max\"\n value={state.maxValue}\n status={valueRangeError ? 'error' : undefined}\n statusMessage={valueRangeError}\n onChange={(value) => state.setMaxValue(value ?? undefined)}\n />\n </Box>\n </Box>\n )}\n </Box>\n )}\n </Box>\n </Box>\n );\n};\n\nexport const CmsFieldSettings = observer(_CmsFieldSettings);\n"],"mappings":"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","ignoreList":[]}
@@ -0,0 +1,144 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+ exports.__esModule = true;
5
+ exports.showsValueRange = exports.showsRequired = exports.showsCharactersLimit = exports.MAX_CHARACTERS_FLOOR = exports.CmsFieldSettingsState = exports.CHARACTERS_CEILING = void 0;
6
+ var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
7
+ var _mobx = require("mobx");
8
+ /**
9
+ * What the CMS settings section hands back to `createCmsFieldActions`. Cairo
10
+ * carries it as an opaque value, so this shape is ours alone.
11
+ */
12
+
13
+ /** @wix/data rejects a character limit above this. */
14
+ const CHARACTERS_CEILING = exports.CHARACTERS_CEILING = 256_000;
15
+ const MAX_CHARACTERS_FLOOR = exports.MAX_CHARACTERS_FLOOR = 1;
16
+ const MIN_CHARACTERS_FLOOR = 0;
17
+ /** A required field has to hold at least one character. */
18
+ const MIN_CHARACTERS_FLOOR_WHEN_REQUIRED = 1;
19
+
20
+ /** Only text fields carry a character limit — the only type `@wix/data` stores a
21
+ * `stringLengthRange` for. */
22
+ const CHARACTERS_LIMIT_TYPES = ['SHORT_TEXT'];
23
+
24
+ /** Only number fields carry a value range — `@wix/data`'s `numberRange`. */
25
+ const VALUE_RANGE_TYPES = ['NUMBER'];
26
+ const showsRequired = fieldType => Boolean(fieldType);
27
+ exports.showsRequired = showsRequired;
28
+ const showsCharactersLimit = fieldType => CHARACTERS_LIMIT_TYPES.some(type => type === fieldType);
29
+ exports.showsCharactersLimit = showsCharactersLimit;
30
+ const showsValueRange = fieldType => VALUE_RANGE_TYPES.some(type => type === fieldType);
31
+ exports.showsValueRange = showsValueRange;
32
+ const clamp = (value, min, max) => value == null ? undefined : Math.min(Math.max(value, min), max);
33
+ const maxBelowMin = (min, max) => min == null || max == null || min <= max ? undefined : 'Max has to be higher than min.';
34
+ class CmsFieldSettingsState {
35
+ constructor() {
36
+ (0, _defineProperty2.default)(this, "required", false);
37
+ (0, _defineProperty2.default)(this, "charactersLimit", false);
38
+ (0, _defineProperty2.default)(this, "minCharacters", undefined);
39
+ (0, _defineProperty2.default)(this, "maxCharacters", undefined);
40
+ (0, _defineProperty2.default)(this, "valueRange", false);
41
+ (0, _defineProperty2.default)(this, "minValue", undefined);
42
+ (0, _defineProperty2.default)(this, "maxValue", undefined);
43
+ (0, _defineProperty2.default)(this, "helpText", '');
44
+ (0, _mobx.makeObservable)(this, {
45
+ required: _mobx.observable.ref,
46
+ charactersLimit: _mobx.observable.ref,
47
+ minCharacters: _mobx.observable.ref,
48
+ maxCharacters: _mobx.observable.ref,
49
+ valueRange: _mobx.observable.ref,
50
+ minValue: _mobx.observable.ref,
51
+ maxValue: _mobx.observable.ref,
52
+ helpText: _mobx.observable.ref,
53
+ minCharactersFloor: _mobx.computed,
54
+ rangeError: _mobx.computed,
55
+ valueRangeError: _mobx.computed,
56
+ setRequired: _mobx.action.bound,
57
+ setCharactersLimit: _mobx.action.bound,
58
+ setMinCharacters: _mobx.action.bound,
59
+ setMaxCharacters: _mobx.action.bound,
60
+ setValueRange: _mobx.action.bound,
61
+ setMinValue: _mobx.action.bound,
62
+ setMaxValue: _mobx.action.bound,
63
+ setHelpText: _mobx.action.bound,
64
+ normalizeMinCharacters: _mobx.action.bound,
65
+ normalizeMaxCharacters: _mobx.action.bound,
66
+ setValues: _mobx.action.bound
67
+ });
68
+ }
69
+ get minCharactersFloor() {
70
+ return this.required ? MIN_CHARACTERS_FLOOR_WHEN_REQUIRED : MIN_CHARACTERS_FLOOR;
71
+ }
72
+ get rangeError() {
73
+ return maxBelowMin(this.minCharacters, this.maxCharacters);
74
+ }
75
+ get valueRangeError() {
76
+ return maxBelowMin(this.minValue, this.maxValue);
77
+ }
78
+ setRequired(value) {
79
+ this.required = value;
80
+ this.normalizeMinCharacters();
81
+ }
82
+ setCharactersLimit(value) {
83
+ this.charactersLimit = value;
84
+ }
85
+ setMinCharacters(value) {
86
+ this.minCharacters = value;
87
+ }
88
+ setMaxCharacters(value) {
89
+ this.maxCharacters = value;
90
+ }
91
+ setValueRange(value) {
92
+ this.valueRange = value;
93
+ }
94
+ setMinValue(value) {
95
+ this.minValue = value;
96
+ }
97
+ setMaxValue(value) {
98
+ this.maxValue = value;
99
+ }
100
+ setHelpText(value) {
101
+ this.helpText = value;
102
+ }
103
+ normalizeMinCharacters() {
104
+ this.minCharacters = clamp(this.minCharacters, this.minCharactersFloor, CHARACTERS_CEILING);
105
+ }
106
+ normalizeMaxCharacters() {
107
+ this.maxCharacters = clamp(this.maxCharacters, MAX_CHARACTERS_FLOOR, CHARACTERS_CEILING);
108
+ }
109
+ hasError(fieldType) {
110
+ return showsCharactersLimit(fieldType) && this.charactersLimit && Boolean(this.rangeError) || showsValueRange(fieldType) && this.valueRange && Boolean(this.valueRangeError);
111
+ }
112
+ getValues(fieldType) {
113
+ // A toggle can be on with both inputs empty — that's still no limit.
114
+ const limit = showsCharactersLimit(fieldType) && this.charactersLimit && (this.minCharacters !== undefined || this.maxCharacters !== undefined);
115
+ const range = showsValueRange(fieldType) && this.valueRange && (this.minValue !== undefined || this.maxValue !== undefined);
116
+ return {
117
+ helpText: this.helpText,
118
+ required: showsRequired(fieldType) ? this.required : false,
119
+ characters: limit ? {
120
+ minLength: this.minCharacters,
121
+ maxLength: this.maxCharacters
122
+ } : undefined,
123
+ values: range ? {
124
+ min: this.minValue,
125
+ max: this.maxValue
126
+ } : undefined
127
+ };
128
+ }
129
+ setValues(field) {
130
+ var _field$validation, _field$validation2, _field$validation3;
131
+ const characters = field == null || (_field$validation = field.validation) == null ? void 0 : _field$validation.stringLengthRange;
132
+ const values = field == null || (_field$validation2 = field.validation) == null ? void 0 : _field$validation2.numberRange;
133
+ this.helpText = (field == null ? void 0 : field.helpText) ?? '';
134
+ this.required = (field == null || (_field$validation3 = field.validation) == null ? void 0 : _field$validation3.required) ?? false;
135
+ this.minCharacters = characters == null ? void 0 : characters.minLength;
136
+ this.maxCharacters = characters == null ? void 0 : characters.maxLength;
137
+ this.charactersLimit = (characters == null ? void 0 : characters.minLength) != null || (characters == null ? void 0 : characters.maxLength) != null;
138
+ this.minValue = values == null ? void 0 : values.min;
139
+ this.maxValue = values == null ? void 0 : values.max;
140
+ this.valueRange = (values == null ? void 0 : values.min) != null || (values == null ? void 0 : values.max) != null;
141
+ }
142
+ }
143
+ exports.CmsFieldSettingsState = CmsFieldSettingsState;
144
+ //# sourceMappingURL=CmsFieldSettingsState.js.map