@wix/patterns-cms 1.38.0 → 1.40.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 (25) hide show
  1. package/dist/cjs/adapter/fieldSettings/CmsFieldSettings.js +56 -185
  2. package/dist/cjs/adapter/fieldSettings/CmsFieldSettings.js.map +1 -1
  3. package/dist/cjs/adapter/fieldSettings/CmsFieldSettings.spec.js +70 -0
  4. package/dist/cjs/adapter/fieldSettings/CmsFieldSettings.spec.js.map +1 -0
  5. package/dist/cjs/adapter/fieldSettings/CmsFieldSettingsState.js +35 -44
  6. package/dist/cjs/adapter/fieldSettings/CmsFieldSettingsState.js.map +1 -1
  7. package/dist/cjs/adapter/fieldSettings/CmsFieldSettingsState.spec.js +94 -0
  8. package/dist/cjs/adapter/fieldSettings/CmsFieldSettingsState.spec.js.map +1 -0
  9. package/dist/esm/adapter/fieldSettings/CmsFieldSettings.js +28 -20
  10. package/dist/esm/adapter/fieldSettings/CmsFieldSettings.js.map +1 -1
  11. package/dist/esm/adapter/fieldSettings/CmsFieldSettings.spec.js +58 -0
  12. package/dist/esm/adapter/fieldSettings/CmsFieldSettings.spec.js.map +1 -0
  13. package/dist/esm/adapter/fieldSettings/CmsFieldSettingsState.js +32 -45
  14. package/dist/esm/adapter/fieldSettings/CmsFieldSettingsState.js.map +1 -1
  15. package/dist/esm/adapter/fieldSettings/CmsFieldSettingsState.spec.js +64 -0
  16. package/dist/esm/adapter/fieldSettings/CmsFieldSettingsState.spec.js.map +1 -0
  17. package/dist/types/adapter/fieldSettings/CmsFieldSettings.d.ts +0 -1
  18. package/dist/types/adapter/fieldSettings/CmsFieldSettings.d.ts.map +1 -1
  19. package/dist/types/adapter/fieldSettings/CmsFieldSettings.spec.d.ts +2 -0
  20. package/dist/types/adapter/fieldSettings/CmsFieldSettings.spec.d.ts.map +1 -0
  21. package/dist/types/adapter/fieldSettings/CmsFieldSettingsState.d.ts +6 -12
  22. package/dist/types/adapter/fieldSettings/CmsFieldSettingsState.d.ts.map +1 -1
  23. package/dist/types/adapter/fieldSettings/CmsFieldSettingsState.spec.d.ts +2 -0
  24. package/dist/types/adapter/fieldSettings/CmsFieldSettingsState.spec.d.ts.map +1 -0
  25. package/package.json +6 -5
@@ -2,21 +2,15 @@
2
2
 
3
3
  var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
4
  exports.__esModule = true;
5
- exports.showsValueRange = exports.showsRequired = exports.showsCharactersLimit = exports.MAX_CHARACTERS_FLOOR = exports.CmsFieldSettingsState = exports.CHARACTERS_CEILING = void 0;
5
+ exports.showsValueRange = exports.showsRequired = exports.showsCharactersLimit = exports.getCmsFieldValidationRules = exports.CmsFieldSettingsState = void 0;
6
6
  var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
7
7
  var _mobx = require("mobx");
8
+ var _patternsFields = require("@wix/patterns-fields");
8
9
  /**
9
10
  * What the CMS settings section hands back to `createCmsFieldActions`. Cairo
10
11
  * carries it as an opaque value, so this shape is ours alone.
11
12
  */
12
13
 
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
14
  /** Only text fields carry a character limit — the only type `@wix/data` stores a
21
15
  * `stringLengthRange` for. */
22
16
  const CHARACTERS_LIMIT_TYPES = ['SHORT_TEXT'];
@@ -29,11 +23,21 @@ const showsCharactersLimit = fieldType => CHARACTERS_LIMIT_TYPES.some(type => ty
29
23
  exports.showsCharactersLimit = showsCharactersLimit;
30
24
  const showsValueRange = fieldType => VALUE_RANGE_TYPES.some(type => type === fieldType);
31
25
  exports.showsValueRange = showsValueRange;
32
- const clamp = (value, min, max) => value == null ? undefined : Math.min(Math.max(value, min), max);
26
+ const getCmsFieldValidationRules = fieldType => {
27
+ const rules = [];
28
+ if (showsRequired(fieldType)) {
29
+ rules.push('required');
30
+ }
31
+ if (showsCharactersLimit(fieldType)) {
32
+ rules.push('charactersLimit');
33
+ }
34
+ return rules;
35
+ };
36
+ exports.getCmsFieldValidationRules = getCmsFieldValidationRules;
33
37
  const maxBelowMin = (min, max) => min == null || max == null || min <= max ? undefined : 'Max has to be higher than min.';
34
38
  class CmsFieldSettingsState {
35
39
  constructor() {
36
- (0, _defineProperty2.default)(this, "required", false);
40
+ (0, _defineProperty2.default)(this, "required", undefined);
37
41
  (0, _defineProperty2.default)(this, "charactersLimit", false);
38
42
  (0, _defineProperty2.default)(this, "minCharacters", undefined);
39
43
  (0, _defineProperty2.default)(this, "maxCharacters", undefined);
@@ -50,43 +54,36 @@ class CmsFieldSettingsState {
50
54
  minValue: _mobx.observable.ref,
51
55
  maxValue: _mobx.observable.ref,
52
56
  helpText: _mobx.observable.ref,
53
- minCharactersFloor: _mobx.computed,
54
- rangeError: _mobx.computed,
57
+ validationSettings: _mobx.computed,
55
58
  valueRangeError: _mobx.computed,
56
- setRequired: _mobx.action.bound,
57
- setCharactersLimit: _mobx.action.bound,
58
- setMinCharacters: _mobx.action.bound,
59
- setMaxCharacters: _mobx.action.bound,
59
+ setValidationSettings: _mobx.action.bound,
60
60
  setValueRange: _mobx.action.bound,
61
61
  setMinValue: _mobx.action.bound,
62
62
  setMaxValue: _mobx.action.bound,
63
63
  setHelpText: _mobx.action.bound,
64
- normalizeMinCharacters: _mobx.action.bound,
65
- normalizeMaxCharacters: _mobx.action.bound,
66
64
  setValues: _mobx.action.bound
67
65
  });
68
66
  }
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);
67
+ get validationSettings() {
68
+ return {
69
+ required: this.required,
70
+ ...(this.charactersLimit && {
71
+ charactersLimit: {
72
+ min: this.minCharacters,
73
+ max: this.maxCharacters
74
+ }
75
+ })
76
+ };
74
77
  }
75
78
  get valueRangeError() {
76
79
  return maxBelowMin(this.minValue, this.maxValue);
77
80
  }
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;
81
+ setValidationSettings(value) {
82
+ var _value$charactersLimi, _value$charactersLimi2;
83
+ this.required = value.required;
84
+ this.charactersLimit = value.charactersLimit !== undefined;
85
+ this.minCharacters = (_value$charactersLimi = value.charactersLimit) == null ? void 0 : _value$charactersLimi.min;
86
+ this.maxCharacters = (_value$charactersLimi2 = value.charactersLimit) == null ? void 0 : _value$charactersLimi2.max;
90
87
  }
91
88
  setValueRange(value) {
92
89
  this.valueRange = value;
@@ -100,14 +97,8 @@ class CmsFieldSettingsState {
100
97
  setHelpText(value) {
101
98
  this.helpText = value;
102
99
  }
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
100
  hasError(fieldType) {
110
- return showsCharactersLimit(fieldType) && this.charactersLimit && Boolean(this.rangeError) || showsValueRange(fieldType) && this.valueRange && Boolean(this.valueRangeError);
101
+ return showsCharactersLimit(fieldType) && (0, _patternsFields.hasFieldValidationSettingsError)(this.validationSettings, getCmsFieldValidationRules(fieldType)) || showsValueRange(fieldType) && this.valueRange && Boolean(this.valueRangeError);
111
102
  }
112
103
  getValues(fieldType) {
113
104
  // A toggle can be on with both inputs empty — that's still no limit.
@@ -115,7 +106,7 @@ class CmsFieldSettingsState {
115
106
  const range = showsValueRange(fieldType) && this.valueRange && (this.minValue !== undefined || this.maxValue !== undefined);
116
107
  return {
117
108
  helpText: this.helpText,
118
- required: showsRequired(fieldType) ? this.required : false,
109
+ required: showsRequired(fieldType) ? this.required ?? false : false,
119
110
  characters: limit ? {
120
111
  minLength: this.minCharacters,
121
112
  maxLength: this.maxCharacters
@@ -131,7 +122,7 @@ class CmsFieldSettingsState {
131
122
  const characters = field == null || (_field$validation = field.validation) == null ? void 0 : _field$validation.stringLengthRange;
132
123
  const values = field == null || (_field$validation2 = field.validation) == null ? void 0 : _field$validation2.numberRange;
133
124
  this.helpText = (field == null ? void 0 : field.helpText) ?? '';
134
- this.required = (field == null || (_field$validation3 = field.validation) == null ? void 0 : _field$validation3.required) ?? false;
125
+ this.required = field == null || (_field$validation3 = field.validation) == null ? void 0 : _field$validation3.required;
135
126
  this.minCharacters = characters == null ? void 0 : characters.minLength;
136
127
  this.maxCharacters = characters == null ? void 0 : characters.maxLength;
137
128
  this.charactersLimit = (characters == null ? void 0 : characters.minLength) != null || (characters == null ? void 0 : characters.maxLength) != null;
@@ -1 +1 @@
1
- {"version":3,"names":["_mobx","require","CHARACTERS_CEILING","exports","MAX_CHARACTERS_FLOOR","MIN_CHARACTERS_FLOOR","MIN_CHARACTERS_FLOOR_WHEN_REQUIRED","CHARACTERS_LIMIT_TYPES","VALUE_RANGE_TYPES","showsRequired","fieldType","Boolean","showsCharactersLimit","some","type","showsValueRange","clamp","value","min","max","undefined","Math","maxBelowMin","CmsFieldSettingsState","constructor","_defineProperty2","default","makeObservable","required","observable","ref","charactersLimit","minCharacters","maxCharacters","valueRange","minValue","maxValue","helpText","minCharactersFloor","computed","rangeError","valueRangeError","setRequired","action","bound","setCharactersLimit","setMinCharacters","setMaxCharacters","setValueRange","setMinValue","setMaxValue","setHelpText","normalizeMinCharacters","normalizeMaxCharacters","setValues","hasError","getValues","limit","range","characters","minLength","maxLength","values","field","_field$validation","_field$validation2","_field$validation3","validation","stringLengthRange","numberRange"],"sources":["../../../../src/adapter/fieldSettings/CmsFieldSettingsState.ts"],"sourcesContent":["import { action, computed, makeObservable, observable } from 'mobx';\nimport type { Field, PatternsFieldType } from '@wix/patterns';\n\n/**\n * What the CMS settings section hands back to `createCmsFieldActions`. Cairo\n * carries it as an opaque value, so this shape is ours alone.\n */\nexport interface CmsFieldSettings {\n helpText: string;\n required: boolean;\n /** Absent ⇒ no character limit, or a type that can't have one. */\n characters?: { minLength?: number; maxLength?: number };\n /** Absent ⇒ no value range, or a type that can't have one. */\n values?: { min?: number; max?: number };\n}\n\n/** @wix/data rejects a character limit above this. */\nexport const CHARACTERS_CEILING = 256_000;\nexport const MAX_CHARACTERS_FLOOR = 1;\nconst MIN_CHARACTERS_FLOOR = 0;\n/** A required field has to hold at least one character. */\nconst MIN_CHARACTERS_FLOOR_WHEN_REQUIRED = 1;\n\n/** Only text fields carry a character limit — the only type `@wix/data` stores a\n * `stringLengthRange` for. */\nconst CHARACTERS_LIMIT_TYPES: PatternsFieldType[] = ['SHORT_TEXT'];\n\n/** Only number fields carry a value range — `@wix/data`'s `numberRange`. */\nconst VALUE_RANGE_TYPES: PatternsFieldType[] = ['NUMBER'];\n\nexport const showsRequired = (fieldType?: string) => Boolean(fieldType);\n\nexport const showsCharactersLimit = (fieldType?: string) =>\n CHARACTERS_LIMIT_TYPES.some((type) => type === fieldType);\n\nexport const showsValueRange = (fieldType?: string) =>\n VALUE_RANGE_TYPES.some((type) => type === fieldType);\n\nconst clamp = (value: number | undefined, min: number, max: number) =>\n value == null ? undefined : Math.min(Math.max(value, min), max);\n\nconst maxBelowMin = (min?: number, max?: number) =>\n min == null || max == null || min <= max\n ? undefined\n : 'Max has to be higher than min.';\n\nexport class CmsFieldSettingsState {\n required = false;\n charactersLimit = false;\n minCharacters: number | undefined = undefined;\n maxCharacters: number | undefined = undefined;\n valueRange = false;\n minValue: number | undefined = undefined;\n maxValue: number | undefined = undefined;\n helpText = '';\n\n constructor() {\n makeObservable(this, {\n required: observable.ref,\n charactersLimit: observable.ref,\n minCharacters: observable.ref,\n maxCharacters: observable.ref,\n valueRange: observable.ref,\n minValue: observable.ref,\n maxValue: observable.ref,\n helpText: observable.ref,\n minCharactersFloor: computed,\n rangeError: computed,\n valueRangeError: computed,\n setRequired: action.bound,\n setCharactersLimit: action.bound,\n setMinCharacters: action.bound,\n setMaxCharacters: action.bound,\n setValueRange: action.bound,\n setMinValue: action.bound,\n setMaxValue: action.bound,\n setHelpText: action.bound,\n normalizeMinCharacters: action.bound,\n normalizeMaxCharacters: action.bound,\n setValues: action.bound,\n });\n }\n\n get minCharactersFloor() {\n return this.required\n ? MIN_CHARACTERS_FLOOR_WHEN_REQUIRED\n : MIN_CHARACTERS_FLOOR;\n }\n\n get rangeError() {\n return maxBelowMin(this.minCharacters, this.maxCharacters);\n }\n\n get valueRangeError() {\n return maxBelowMin(this.minValue, this.maxValue);\n }\n\n setRequired(value: boolean) {\n this.required = value;\n this.normalizeMinCharacters();\n }\n\n setCharactersLimit(value: boolean) {\n this.charactersLimit = value;\n }\n\n setMinCharacters(value: number | undefined) {\n this.minCharacters = value;\n }\n\n setMaxCharacters(value: number | undefined) {\n this.maxCharacters = value;\n }\n\n setValueRange(value: boolean) {\n this.valueRange = value;\n }\n\n setMinValue(value: number | undefined) {\n this.minValue = value;\n }\n\n setMaxValue(value: number | undefined) {\n this.maxValue = value;\n }\n\n setHelpText(value: string) {\n this.helpText = value;\n }\n\n normalizeMinCharacters() {\n this.minCharacters = clamp(\n this.minCharacters,\n this.minCharactersFloor,\n CHARACTERS_CEILING,\n );\n }\n\n normalizeMaxCharacters() {\n this.maxCharacters = clamp(\n this.maxCharacters,\n MAX_CHARACTERS_FLOOR,\n CHARACTERS_CEILING,\n );\n }\n\n hasError(fieldType?: string) {\n return (\n (showsCharactersLimit(fieldType) &&\n this.charactersLimit &&\n Boolean(this.rangeError)) ||\n (showsValueRange(fieldType) &&\n this.valueRange &&\n Boolean(this.valueRangeError))\n );\n }\n\n getValues(fieldType?: string): CmsFieldSettings {\n // A toggle can be on with both inputs empty — that's still no limit.\n const limit =\n showsCharactersLimit(fieldType) &&\n this.charactersLimit &&\n (this.minCharacters !== undefined || this.maxCharacters !== undefined);\n const range =\n showsValueRange(fieldType) &&\n this.valueRange &&\n (this.minValue !== undefined || this.maxValue !== undefined);\n return {\n helpText: this.helpText,\n required: showsRequired(fieldType) ? this.required : false,\n characters: limit\n ? { minLength: this.minCharacters, maxLength: this.maxCharacters }\n : undefined,\n values: range ? { min: this.minValue, max: this.maxValue } : undefined,\n };\n }\n\n setValues(field?: Field) {\n const characters = field?.validation?.stringLengthRange;\n const values = field?.validation?.numberRange;\n this.helpText = field?.helpText ?? '';\n this.required = field?.validation?.required ?? false;\n this.minCharacters = characters?.minLength;\n this.maxCharacters = characters?.maxLength;\n this.charactersLimit =\n characters?.minLength != null || characters?.maxLength != null;\n this.minValue = values?.min;\n this.maxValue = values?.max;\n this.valueRange = values?.min != null || values?.max != null;\n }\n}\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["_mobx","require","_patternsFields","CHARACTERS_LIMIT_TYPES","VALUE_RANGE_TYPES","showsRequired","fieldType","Boolean","exports","showsCharactersLimit","some","type","showsValueRange","getCmsFieldValidationRules","rules","push","maxBelowMin","min","max","undefined","CmsFieldSettingsState","constructor","_defineProperty2","default","makeObservable","required","observable","ref","charactersLimit","minCharacters","maxCharacters","valueRange","minValue","maxValue","helpText","validationSettings","computed","valueRangeError","setValidationSettings","action","bound","setValueRange","setMinValue","setMaxValue","setHelpText","setValues","value","_value$charactersLimi","_value$charactersLimi2","hasError","hasFieldValidationSettingsError","getValues","limit","range","characters","minLength","maxLength","values","field","_field$validation","_field$validation2","_field$validation3","validation","stringLengthRange","numberRange"],"sources":["../../../../src/adapter/fieldSettings/CmsFieldSettingsState.ts"],"sourcesContent":["import { action, computed, makeObservable, observable } from 'mobx';\nimport type { Field, PatternsFieldType } from '@wix/patterns';\nimport {\n hasFieldValidationSettingsError,\n type FieldValidationRule,\n type FieldValidationSettingsValue,\n} from '@wix/patterns-fields';\n\n/**\n * What the CMS settings section hands back to `createCmsFieldActions`. Cairo\n * carries it as an opaque value, so this shape is ours alone.\n */\nexport interface CmsFieldSettings {\n helpText: string;\n required: boolean;\n /** Absent ⇒ no character limit, or a type that can't have one. */\n characters?: { minLength?: number; maxLength?: number };\n /** Absent ⇒ no value range, or a type that can't have one. */\n values?: { min?: number; max?: number };\n}\n\n/** Only text fields carry a character limit — the only type `@wix/data` stores a\n * `stringLengthRange` for. */\nconst CHARACTERS_LIMIT_TYPES: PatternsFieldType[] = ['SHORT_TEXT'];\n\n/** Only number fields carry a value range — `@wix/data`'s `numberRange`. */\nconst VALUE_RANGE_TYPES: PatternsFieldType[] = ['NUMBER'];\n\nexport const showsRequired = (fieldType?: string) => Boolean(fieldType);\n\nexport const showsCharactersLimit = (fieldType?: string) =>\n CHARACTERS_LIMIT_TYPES.some((type) => type === fieldType);\n\nexport const showsValueRange = (fieldType?: string) =>\n VALUE_RANGE_TYPES.some((type) => type === fieldType);\n\nexport type CmsFieldValidationRule = Extract<\n FieldValidationRule,\n 'required' | 'charactersLimit'\n>;\n\nexport const getCmsFieldValidationRules = (\n fieldType?: string,\n): CmsFieldValidationRule[] => {\n const rules: CmsFieldValidationRule[] = [];\n\n if (showsRequired(fieldType)) {\n rules.push('required');\n }\n if (showsCharactersLimit(fieldType)) {\n rules.push('charactersLimit');\n }\n\n return rules;\n};\n\nconst maxBelowMin = (min?: number, max?: number) =>\n min == null || max == null || min <= max\n ? undefined\n : 'Max has to be higher than min.';\n\nexport class CmsFieldSettingsState {\n required: boolean | undefined = undefined;\n charactersLimit = false;\n minCharacters: number | undefined = undefined;\n maxCharacters: number | undefined = undefined;\n valueRange = false;\n minValue: number | undefined = undefined;\n maxValue: number | undefined = undefined;\n helpText = '';\n\n constructor() {\n makeObservable(this, {\n required: observable.ref,\n charactersLimit: observable.ref,\n minCharacters: observable.ref,\n maxCharacters: observable.ref,\n valueRange: observable.ref,\n minValue: observable.ref,\n maxValue: observable.ref,\n helpText: observable.ref,\n validationSettings: computed,\n valueRangeError: computed,\n setValidationSettings: action.bound,\n setValueRange: action.bound,\n setMinValue: action.bound,\n setMaxValue: action.bound,\n setHelpText: action.bound,\n setValues: action.bound,\n });\n }\n\n get validationSettings(): FieldValidationSettingsValue {\n return {\n required: this.required,\n ...(this.charactersLimit && {\n charactersLimit: {\n min: this.minCharacters,\n max: this.maxCharacters,\n },\n }),\n };\n }\n\n get valueRangeError() {\n return maxBelowMin(this.minValue, this.maxValue);\n }\n\n setValidationSettings(value: FieldValidationSettingsValue) {\n this.required = value.required;\n this.charactersLimit = value.charactersLimit !== undefined;\n this.minCharacters = value.charactersLimit?.min;\n this.maxCharacters = value.charactersLimit?.max;\n }\n\n setValueRange(value: boolean) {\n this.valueRange = value;\n }\n\n setMinValue(value: number | undefined) {\n this.minValue = value;\n }\n\n setMaxValue(value: number | undefined) {\n this.maxValue = value;\n }\n\n setHelpText(value: string) {\n this.helpText = value;\n }\n\n hasError(fieldType?: string) {\n return (\n (showsCharactersLimit(fieldType) &&\n hasFieldValidationSettingsError(\n this.validationSettings,\n getCmsFieldValidationRules(fieldType),\n )) ||\n (showsValueRange(fieldType) &&\n this.valueRange &&\n Boolean(this.valueRangeError))\n );\n }\n\n getValues(fieldType?: string): CmsFieldSettings {\n // A toggle can be on with both inputs empty — that's still no limit.\n const limit =\n showsCharactersLimit(fieldType) &&\n this.charactersLimit &&\n (this.minCharacters !== undefined || this.maxCharacters !== undefined);\n const range =\n showsValueRange(fieldType) &&\n this.valueRange &&\n (this.minValue !== undefined || this.maxValue !== undefined);\n return {\n helpText: this.helpText,\n required: showsRequired(fieldType) ? this.required ?? false : false,\n characters: limit\n ? { minLength: this.minCharacters, maxLength: this.maxCharacters }\n : undefined,\n values: range ? { min: this.minValue, max: this.maxValue } : undefined,\n };\n }\n\n setValues(field?: Field) {\n const characters = field?.validation?.stringLengthRange;\n const values = field?.validation?.numberRange;\n this.helpText = field?.helpText ?? '';\n this.required = field?.validation?.required;\n this.minCharacters = characters?.minLength;\n this.maxCharacters = characters?.maxLength;\n this.charactersLimit =\n characters?.minLength != null || characters?.maxLength != null;\n this.minValue = values?.min;\n this.maxValue = values?.max;\n this.valueRange = values?.min != null || values?.max != null;\n }\n}\n"],"mappings":"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","ignoreList":[]}
@@ -0,0 +1,94 @@
1
+ "use strict";
2
+
3
+ var _CmsFieldSettingsState = require("./CmsFieldSettingsState");
4
+ describe('CmsFieldSettingsState validation settings', () => {
5
+ it('defines required before character limits for short text', () => {
6
+ expect((0, _CmsFieldSettingsState.getCmsFieldValidationRules)('SHORT_TEXT')).toEqual(['required', 'charactersLimit']);
7
+ expect((0, _CmsFieldSettingsState.getCmsFieldValidationRules)('NUMBER')).toEqual(['required']);
8
+ expect((0, _CmsFieldSettingsState.getCmsFieldValidationRules)()).toEqual([]);
9
+ });
10
+ it('round trips required and character limits through the controlled value', () => {
11
+ const state = new _CmsFieldSettingsState.CmsFieldSettingsState();
12
+ state.setValidationSettings({
13
+ required: true,
14
+ charactersLimit: {
15
+ min: 2,
16
+ max: 20
17
+ }
18
+ });
19
+ expect(state.validationSettings).toEqual({
20
+ required: true,
21
+ charactersLimit: {
22
+ min: 2,
23
+ max: 20
24
+ }
25
+ });
26
+ expect(state.getValues('SHORT_TEXT')).toEqual({
27
+ helpText: '',
28
+ required: true,
29
+ characters: {
30
+ minLength: 2,
31
+ maxLength: 20
32
+ },
33
+ values: undefined
34
+ });
35
+ });
36
+ it('preserves absent required while editing character limits', () => {
37
+ const state = new _CmsFieldSettingsState.CmsFieldSettingsState();
38
+ state.setValidationSettings({
39
+ charactersLimit: {
40
+ min: 2,
41
+ max: 20
42
+ }
43
+ });
44
+ expect(state.validationSettings).toEqual({
45
+ required: undefined,
46
+ charactersLimit: {
47
+ min: 2,
48
+ max: 20
49
+ }
50
+ });
51
+ expect(state.getValues('SHORT_TEXT').required).toBe(false);
52
+ });
53
+ it('reports character violations before the section renders', () => {
54
+ const state = new _CmsFieldSettingsState.CmsFieldSettingsState();
55
+ state.setValidationSettings({
56
+ charactersLimit: {
57
+ min: 20,
58
+ max: 2
59
+ }
60
+ });
61
+ expect(state.hasError('SHORT_TEXT')).toBe(true);
62
+ expect(state.hasError('NUMBER')).toBe(false);
63
+ });
64
+ it('preserves invalid character drafts instead of normalizing them', () => {
65
+ const state = new _CmsFieldSettingsState.CmsFieldSettingsState();
66
+ state.setValidationSettings({
67
+ required: true,
68
+ charactersLimit: {
69
+ min: 0,
70
+ max: 256_001
71
+ }
72
+ });
73
+ expect(state.validationSettings).toEqual({
74
+ required: true,
75
+ charactersLimit: {
76
+ min: 0,
77
+ max: 256_001
78
+ }
79
+ });
80
+ expect(state.hasError('SHORT_TEXT')).toBe(true);
81
+ });
82
+ it('keeps the number-only value range separate', () => {
83
+ const state = new _CmsFieldSettingsState.CmsFieldSettingsState();
84
+ state.setValueRange(true);
85
+ state.setMinValue(10);
86
+ state.setMaxValue(5);
87
+ expect(state.hasError('NUMBER')).toBe(true);
88
+ expect(state.getValues('NUMBER').values).toEqual({
89
+ min: 10,
90
+ max: 5
91
+ });
92
+ });
93
+ });
94
+ //# sourceMappingURL=CmsFieldSettingsState.spec.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["_CmsFieldSettingsState","require","describe","it","expect","getCmsFieldValidationRules","toEqual","state","CmsFieldSettingsState","setValidationSettings","required","charactersLimit","min","max","validationSettings","getValues","helpText","characters","minLength","maxLength","values","undefined","toBe","hasError","setValueRange","setMinValue","setMaxValue"],"sources":["../../../../src/adapter/fieldSettings/CmsFieldSettingsState.spec.ts"],"sourcesContent":["import {\n CmsFieldSettingsState,\n getCmsFieldValidationRules,\n} from './CmsFieldSettingsState';\n\ndescribe('CmsFieldSettingsState validation settings', () => {\n it('defines required before character limits for short text', () => {\n expect(getCmsFieldValidationRules('SHORT_TEXT')).toEqual([\n 'required',\n 'charactersLimit',\n ]);\n expect(getCmsFieldValidationRules('NUMBER')).toEqual(['required']);\n expect(getCmsFieldValidationRules()).toEqual([]);\n });\n\n it('round trips required and character limits through the controlled value', () => {\n const state = new CmsFieldSettingsState();\n\n state.setValidationSettings({\n required: true,\n charactersLimit: { min: 2, max: 20 },\n });\n\n expect(state.validationSettings).toEqual({\n required: true,\n charactersLimit: { min: 2, max: 20 },\n });\n expect(state.getValues('SHORT_TEXT')).toEqual({\n helpText: '',\n required: true,\n characters: { minLength: 2, maxLength: 20 },\n values: undefined,\n });\n });\n\n it('preserves absent required while editing character limits', () => {\n const state = new CmsFieldSettingsState();\n\n state.setValidationSettings({ charactersLimit: { min: 2, max: 20 } });\n\n expect(state.validationSettings).toEqual({\n required: undefined,\n charactersLimit: { min: 2, max: 20 },\n });\n expect(state.getValues('SHORT_TEXT').required).toBe(false);\n });\n\n it('reports character violations before the section renders', () => {\n const state = new CmsFieldSettingsState();\n state.setValidationSettings({ charactersLimit: { min: 20, max: 2 } });\n\n expect(state.hasError('SHORT_TEXT')).toBe(true);\n expect(state.hasError('NUMBER')).toBe(false);\n });\n\n it('preserves invalid character drafts instead of normalizing them', () => {\n const state = new CmsFieldSettingsState();\n state.setValidationSettings({\n required: true,\n charactersLimit: { min: 0, max: 256_001 },\n });\n\n expect(state.validationSettings).toEqual({\n required: true,\n charactersLimit: { min: 0, max: 256_001 },\n });\n expect(state.hasError('SHORT_TEXT')).toBe(true);\n });\n\n it('keeps the number-only value range separate', () => {\n const state = new CmsFieldSettingsState();\n state.setValueRange(true);\n state.setMinValue(10);\n state.setMaxValue(5);\n\n expect(state.hasError('NUMBER')).toBe(true);\n expect(state.getValues('NUMBER').values).toEqual({ min: 10, max: 5 });\n });\n});\n"],"mappings":"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","ignoreList":[]}
@@ -1,33 +1,41 @@
1
1
  import React from 'react';
2
2
  import { observer } from 'mobx-react-lite';
3
3
  import { Box, FormField, InfoIcon, Input, NumberInput, Text, ToggleSwitch, } from '@wix/design-system';
4
- import { CHARACTERS_CEILING, MAX_CHARACTERS_FLOOR, showsCharactersLimit, showsRequired, showsValueRange, } from './CmsFieldSettingsState';
5
- /** Plain strings until this package gets its own translations. */
4
+ import { FieldValidationSettingsInput, } from '@wix/patterns-fields';
5
+ import { useWixPatternsContainer } from '@wix/patterns';
6
+ import { getCmsFieldValidationRules, showsValueRange, } from './CmsFieldSettingsState';
6
7
  export const _CmsFieldSettings = (props) => {
7
8
  const { state, fieldType } = props;
8
- const { rangeError, valueRangeError } = state;
9
+ const { translate } = useWixPatternsContainer();
10
+ const { valueRangeError } = state;
11
+ const validationRules = getCmsFieldValidationRules(fieldType).map((rule) => {
12
+ switch (rule) {
13
+ case 'required':
14
+ return {
15
+ type: rule,
16
+ label: translate('cairo.fieldValidation.required.label'),
17
+ tooltip: translate('cairo.fieldValidation.required.tooltip'),
18
+ };
19
+ case 'charactersLimit':
20
+ return {
21
+ type: rule,
22
+ label: translate('cairo.fieldValidation.charactersLimit.label'),
23
+ tooltip: translate('cairo.fieldValidation.charactersLimit.tooltip'),
24
+ minLabel: translate('cairo.fieldValidation.charactersLimit.minimum.label'),
25
+ maxLabel: translate('cairo.fieldValidation.charactersLimit.maximum.label'),
26
+ separator: translate('cairo.fieldValidation.charactersLimit.separator'),
27
+ outOfBoundsError: (min, max) => translate('cairo.fieldValidation.charactersLimit.outOfBounds.error', { min, max }),
28
+ maxBelowMinError: translate('cairo.fieldValidation.charactersLimit.maxBelowMin.error'),
29
+ };
30
+ }
31
+ return rule;
32
+ });
9
33
  return (React.createElement(Box, { direction: "vertical", gap: "SP4" },
10
34
  React.createElement(FormField, { dataHook: "cms-field-settings-help-text", label: "Help text", infoContent: "Shown under the field when someone adds content to this collection." },
11
35
  React.createElement(Input, { dataHook: "cms-field-settings-help-text-input", value: state.helpText, maxLength: 200, placeholder: "Add a short explanation", onChange: (e) => state.setHelpText(e.target.value) })),
12
36
  React.createElement(Box, { direction: "vertical", gap: "SP2" },
13
37
  React.createElement(Text, { size: "small", secondary: true }, "Validation"),
14
- showsRequired(fieldType) && (React.createElement(Box, { dataHook: "cms-field-settings-required", verticalAlign: "middle", gap: "9px" },
15
- React.createElement(ToggleSwitch, { dataHook: "cms-field-settings-required-toggle", size: "medium", checked: state.required, onChange: (e) => state.setRequired(e.target.checked) }),
16
- React.createElement(Box, { verticalAlign: "middle", gap: "3px" },
17
- React.createElement(Text, { size: "small" }, "Make this a required field"),
18
- React.createElement(InfoIcon, { size: "small", content: "Make this a required field when adding content to this collection." })))),
19
- showsCharactersLimit(fieldType) && (React.createElement(Box, { direction: "vertical", gap: "SP2" },
20
- React.createElement(Box, { dataHook: "cms-field-settings-characters-limit", verticalAlign: "middle", gap: "9px" },
21
- React.createElement(ToggleSwitch, { dataHook: "cms-field-settings-characters-limit-toggle", size: "medium", checked: state.charactersLimit, onChange: (e) => state.setCharactersLimit(e.target.checked) }),
22
- React.createElement(Box, { verticalAlign: "middle", gap: "3px" },
23
- React.createElement(Text, { size: "small" }, "Limit character count"),
24
- React.createElement(InfoIcon, { size: "small", content: "Limit the number of characters in this field for any newly added items." }))),
25
- state.charactersLimit && (React.createElement(Box, { verticalAlign: "middle", gap: "SP2" },
26
- React.createElement(Box, { width: "112px" },
27
- React.createElement(NumberInput, { dataHook: "cms-field-settings-min-characters", size: "small", placeholder: "min", min: state.minCharactersFloor, max: CHARACTERS_CEILING, value: state.minCharacters, onChange: (value) => state.setMinCharacters(value ?? undefined), onBlur: state.normalizeMinCharacters })),
28
- React.createElement(Text, { size: "small", secondary: true }, "and"),
29
- React.createElement(Box, { width: "112px" },
30
- React.createElement(NumberInput, { dataHook: "cms-field-settings-max-characters", size: "small", placeholder: "max", min: MAX_CHARACTERS_FLOOR, max: CHARACTERS_CEILING, value: state.maxCharacters, status: rangeError ? 'error' : undefined, statusMessage: rangeError, onChange: (value) => state.setMaxCharacters(value ?? undefined), onBlur: state.normalizeMaxCharacters })))))),
38
+ React.createElement(FieldValidationSettingsInput, { dataHook: "cms-field-settings-validation", data: state.validationSettings, rules: validationRules, invalid: state.hasError(fieldType), onChange: state.setValidationSettings }),
31
39
  showsValueRange(fieldType) && (React.createElement(Box, { direction: "vertical", gap: "SP2" },
32
40
  React.createElement(Box, { dataHook: "cms-field-settings-value-range", verticalAlign: "middle", gap: "9px" },
33
41
  React.createElement(ToggleSwitch, { dataHook: "cms-field-settings-value-range-toggle", size: "medium", checked: state.valueRange, onChange: (e) => state.setValueRange(e.target.checked) }),
@@ -1 +1 @@
1
- {"version":3,"file":"CmsFieldSettings.js","sourceRoot":"","sources":["../../../../src/adapter/fieldSettings/CmsFieldSettings.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"CmsFieldSettings.js","sourceRoot":"","sources":["../../../../src/adapter/fieldSettings/CmsFieldSettings.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,58 @@
1
+ import React from 'react';
2
+ import { _CmsFieldSettings, } from './CmsFieldSettings';
3
+ import { CmsFieldSettingsState } from './CmsFieldSettingsState';
4
+ const mockFieldValidationSettingsInput = jest.fn(() => null);
5
+ jest.mock('@wix/patterns-fields', () => ({
6
+ ...jest.requireActual('@wix/patterns-fields'),
7
+ FieldValidationSettingsInput: (props) => mockFieldValidationSettingsInput(props),
8
+ }));
9
+ jest.mock('@wix/patterns', () => ({
10
+ useWixPatternsContainer: () => ({
11
+ translate: (key, params) => params ? `${key}:${params.min}-${params.max}` : key,
12
+ }),
13
+ }), { virtual: true });
14
+ const findValidationSettingsInput = (node) => {
15
+ if (!React.isValidElement(node)) {
16
+ return undefined;
17
+ }
18
+ if (node.props.dataHook === 'cms-field-settings-validation') {
19
+ return node;
20
+ }
21
+ return React.Children.toArray(node.props.children)
22
+ .map(findValidationSettingsInput)
23
+ .find(Boolean);
24
+ };
25
+ describe('CmsFieldSettings', () => {
26
+ it('passes ordered translated rules and controlled validation state', () => {
27
+ const state = new CmsFieldSettingsState();
28
+ state.setValidationSettings({
29
+ required: true,
30
+ charactersLimit: { min: 20, max: 2 },
31
+ });
32
+ const tree = _CmsFieldSettings({
33
+ state,
34
+ fieldType: 'SHORT_TEXT',
35
+ });
36
+ const input = findValidationSettingsInput(tree);
37
+ if (!input) {
38
+ throw new Error('FieldValidationSettingsInput was not rendered');
39
+ }
40
+ const props = input.props;
41
+ expect(props.rules.map(({ type }) => type)).toEqual([
42
+ 'required',
43
+ 'charactersLimit',
44
+ ]);
45
+ expect(props.rules[1]).toMatchObject({
46
+ label: 'cairo.fieldValidation.charactersLimit.label',
47
+ maxBelowMinError: 'cairo.fieldValidation.charactersLimit.maxBelowMin.error',
48
+ });
49
+ expect(props.data).toEqual({
50
+ required: true,
51
+ charactersLimit: { min: 20, max: 2 },
52
+ });
53
+ expect(props.invalid).toBe(true);
54
+ props.onChange({ required: false });
55
+ expect(state.validationSettings).toEqual({ required: false });
56
+ });
57
+ });
58
+ //# sourceMappingURL=CmsFieldSettings.spec.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"CmsFieldSettings.spec.js","sourceRoot":"","sources":["../../../../src/adapter/fieldSettings/CmsFieldSettings.spec.tsx"],"names":[],"mappings":"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"}
@@ -1,10 +1,5 @@
1
1
  import { action, computed, makeObservable, observable } from 'mobx';
2
- /** @wix/data rejects a character limit above this. */
3
- export const CHARACTERS_CEILING = 256_000;
4
- export const MAX_CHARACTERS_FLOOR = 1;
5
- const MIN_CHARACTERS_FLOOR = 0;
6
- /** A required field has to hold at least one character. */
7
- const MIN_CHARACTERS_FLOOR_WHEN_REQUIRED = 1;
2
+ import { hasFieldValidationSettingsError, } from '@wix/patterns-fields';
8
3
  /** Only text fields carry a character limit — the only type `@wix/data` stores a
9
4
  * `stringLengthRange` for. */
10
5
  const CHARACTERS_LIMIT_TYPES = ['SHORT_TEXT'];
@@ -13,13 +8,22 @@ const VALUE_RANGE_TYPES = ['NUMBER'];
13
8
  export const showsRequired = (fieldType) => Boolean(fieldType);
14
9
  export const showsCharactersLimit = (fieldType) => CHARACTERS_LIMIT_TYPES.some((type) => type === fieldType);
15
10
  export const showsValueRange = (fieldType) => VALUE_RANGE_TYPES.some((type) => type === fieldType);
16
- const clamp = (value, min, max) => value == null ? undefined : Math.min(Math.max(value, min), max);
11
+ export const getCmsFieldValidationRules = (fieldType) => {
12
+ const rules = [];
13
+ if (showsRequired(fieldType)) {
14
+ rules.push('required');
15
+ }
16
+ if (showsCharactersLimit(fieldType)) {
17
+ rules.push('charactersLimit');
18
+ }
19
+ return rules;
20
+ };
17
21
  const maxBelowMin = (min, max) => min == null || max == null || min <= max
18
22
  ? undefined
19
23
  : 'Max has to be higher than min.';
20
24
  export class CmsFieldSettingsState {
21
25
  constructor() {
22
- this.required = false;
26
+ this.required = undefined;
23
27
  this.charactersLimit = false;
24
28
  this.minCharacters = undefined;
25
29
  this.maxCharacters = undefined;
@@ -36,45 +40,35 @@ export class CmsFieldSettingsState {
36
40
  minValue: observable.ref,
37
41
  maxValue: observable.ref,
38
42
  helpText: observable.ref,
39
- minCharactersFloor: computed,
40
- rangeError: computed,
43
+ validationSettings: computed,
41
44
  valueRangeError: computed,
42
- setRequired: action.bound,
43
- setCharactersLimit: action.bound,
44
- setMinCharacters: action.bound,
45
- setMaxCharacters: action.bound,
45
+ setValidationSettings: action.bound,
46
46
  setValueRange: action.bound,
47
47
  setMinValue: action.bound,
48
48
  setMaxValue: action.bound,
49
49
  setHelpText: action.bound,
50
- normalizeMinCharacters: action.bound,
51
- normalizeMaxCharacters: action.bound,
52
50
  setValues: action.bound,
53
51
  });
54
52
  }
55
- get minCharactersFloor() {
56
- return this.required
57
- ? MIN_CHARACTERS_FLOOR_WHEN_REQUIRED
58
- : MIN_CHARACTERS_FLOOR;
59
- }
60
- get rangeError() {
61
- return maxBelowMin(this.minCharacters, this.maxCharacters);
53
+ get validationSettings() {
54
+ return {
55
+ required: this.required,
56
+ ...(this.charactersLimit && {
57
+ charactersLimit: {
58
+ min: this.minCharacters,
59
+ max: this.maxCharacters,
60
+ },
61
+ }),
62
+ };
62
63
  }
63
64
  get valueRangeError() {
64
65
  return maxBelowMin(this.minValue, this.maxValue);
65
66
  }
66
- setRequired(value) {
67
- this.required = value;
68
- this.normalizeMinCharacters();
69
- }
70
- setCharactersLimit(value) {
71
- this.charactersLimit = value;
72
- }
73
- setMinCharacters(value) {
74
- this.minCharacters = value;
75
- }
76
- setMaxCharacters(value) {
77
- this.maxCharacters = value;
67
+ setValidationSettings(value) {
68
+ this.required = value.required;
69
+ this.charactersLimit = value.charactersLimit !== undefined;
70
+ this.minCharacters = value.charactersLimit?.min;
71
+ this.maxCharacters = value.charactersLimit?.max;
78
72
  }
79
73
  setValueRange(value) {
80
74
  this.valueRange = value;
@@ -88,16 +82,9 @@ export class CmsFieldSettingsState {
88
82
  setHelpText(value) {
89
83
  this.helpText = value;
90
84
  }
91
- normalizeMinCharacters() {
92
- this.minCharacters = clamp(this.minCharacters, this.minCharactersFloor, CHARACTERS_CEILING);
93
- }
94
- normalizeMaxCharacters() {
95
- this.maxCharacters = clamp(this.maxCharacters, MAX_CHARACTERS_FLOOR, CHARACTERS_CEILING);
96
- }
97
85
  hasError(fieldType) {
98
86
  return ((showsCharactersLimit(fieldType) &&
99
- this.charactersLimit &&
100
- Boolean(this.rangeError)) ||
87
+ hasFieldValidationSettingsError(this.validationSettings, getCmsFieldValidationRules(fieldType))) ||
101
88
  (showsValueRange(fieldType) &&
102
89
  this.valueRange &&
103
90
  Boolean(this.valueRangeError)));
@@ -112,7 +99,7 @@ export class CmsFieldSettingsState {
112
99
  (this.minValue !== undefined || this.maxValue !== undefined);
113
100
  return {
114
101
  helpText: this.helpText,
115
- required: showsRequired(fieldType) ? this.required : false,
102
+ required: showsRequired(fieldType) ? this.required ?? false : false,
116
103
  characters: limit
117
104
  ? { minLength: this.minCharacters, maxLength: this.maxCharacters }
118
105
  : undefined,
@@ -123,7 +110,7 @@ export class CmsFieldSettingsState {
123
110
  const characters = field?.validation?.stringLengthRange;
124
111
  const values = field?.validation?.numberRange;
125
112
  this.helpText = field?.helpText ?? '';
126
- this.required = field?.validation?.required ?? false;
113
+ this.required = field?.validation?.required;
127
114
  this.minCharacters = characters?.minLength;
128
115
  this.maxCharacters = characters?.maxLength;
129
116
  this.charactersLimit =
@@ -1 +1 @@
1
- {"version":3,"file":"CmsFieldSettingsState.js","sourceRoot":"","sources":["../../../../src/adapter/fieldSettings/CmsFieldSettingsState.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,cAAc,EAAE,UAAU,EAAE,MAAM,MAAM,CAAC;AAgBpE,sDAAsD;AACtD,MAAM,CAAC,MAAM,kBAAkB,GAAG,OAAO,CAAC;AAC1C,MAAM,CAAC,MAAM,oBAAoB,GAAG,CAAC,CAAC;AACtC,MAAM,oBAAoB,GAAG,CAAC,CAAC;AAC/B,2DAA2D;AAC3D,MAAM,kCAAkC,GAAG,CAAC,CAAC;AAE7C;+BAC+B;AAC/B,MAAM,sBAAsB,GAAwB,CAAC,YAAY,CAAC,CAAC;AAEnE,4EAA4E;AAC5E,MAAM,iBAAiB,GAAwB,CAAC,QAAQ,CAAC,CAAC;AAE1D,MAAM,CAAC,MAAM,aAAa,GAAG,CAAC,SAAkB,EAAE,EAAE,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;AAExE,MAAM,CAAC,MAAM,oBAAoB,GAAG,CAAC,SAAkB,EAAE,EAAE,CACzD,sBAAsB,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,KAAK,SAAS,CAAC,CAAC;AAE5D,MAAM,CAAC,MAAM,eAAe,GAAG,CAAC,SAAkB,EAAE,EAAE,CACpD,iBAAiB,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,KAAK,SAAS,CAAC,CAAC;AAEvD,MAAM,KAAK,GAAG,CAAC,KAAyB,EAAE,GAAW,EAAE,GAAW,EAAE,EAAE,CACpE,KAAK,IAAI,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE,GAAG,CAAC,EAAE,GAAG,CAAC,CAAC;AAElE,MAAM,WAAW,GAAG,CAAC,GAAY,EAAE,GAAY,EAAE,EAAE,CACjD,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG;IACtC,CAAC,CAAC,SAAS;IACX,CAAC,CAAC,gCAAgC,CAAC;AAEvC,MAAM,OAAO,qBAAqB;IAUhC;QATA,aAAQ,GAAG,KAAK,CAAC;QACjB,oBAAe,GAAG,KAAK,CAAC;QACxB,kBAAa,GAAuB,SAAS,CAAC;QAC9C,kBAAa,GAAuB,SAAS,CAAC;QAC9C,eAAU,GAAG,KAAK,CAAC;QACnB,aAAQ,GAAuB,SAAS,CAAC;QACzC,aAAQ,GAAuB,SAAS,CAAC;QACzC,aAAQ,GAAG,EAAE,CAAC;QAGZ,cAAc,CAAC,IAAI,EAAE;YACnB,QAAQ,EAAE,UAAU,CAAC,GAAG;YACxB,eAAe,EAAE,UAAU,CAAC,GAAG;YAC/B,aAAa,EAAE,UAAU,CAAC,GAAG;YAC7B,aAAa,EAAE,UAAU,CAAC,GAAG;YAC7B,UAAU,EAAE,UAAU,CAAC,GAAG;YAC1B,QAAQ,EAAE,UAAU,CAAC,GAAG;YACxB,QAAQ,EAAE,UAAU,CAAC,GAAG;YACxB,QAAQ,EAAE,UAAU,CAAC,GAAG;YACxB,kBAAkB,EAAE,QAAQ;YAC5B,UAAU,EAAE,QAAQ;YACpB,eAAe,EAAE,QAAQ;YACzB,WAAW,EAAE,MAAM,CAAC,KAAK;YACzB,kBAAkB,EAAE,MAAM,CAAC,KAAK;YAChC,gBAAgB,EAAE,MAAM,CAAC,KAAK;YAC9B,gBAAgB,EAAE,MAAM,CAAC,KAAK;YAC9B,aAAa,EAAE,MAAM,CAAC,KAAK;YAC3B,WAAW,EAAE,MAAM,CAAC,KAAK;YACzB,WAAW,EAAE,MAAM,CAAC,KAAK;YACzB,WAAW,EAAE,MAAM,CAAC,KAAK;YACzB,sBAAsB,EAAE,MAAM,CAAC,KAAK;YACpC,sBAAsB,EAAE,MAAM,CAAC,KAAK;YACpC,SAAS,EAAE,MAAM,CAAC,KAAK;SACxB,CAAC,CAAC;IACL,CAAC;IAED,IAAI,kBAAkB;QACpB,OAAO,IAAI,CAAC,QAAQ;YAClB,CAAC,CAAC,kCAAkC;YACpC,CAAC,CAAC,oBAAoB,CAAC;IAC3B,CAAC;IAED,IAAI,UAAU;QACZ,OAAO,WAAW,CAAC,IAAI,CAAC,aAAa,EAAE,IAAI,CAAC,aAAa,CAAC,CAAC;IAC7D,CAAC;IAED,IAAI,eAAe;QACjB,OAAO,WAAW,CAAC,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC;IACnD,CAAC;IAED,WAAW,CAAC,KAAc;QACxB,IAAI,CAAC,QAAQ,GAAG,KAAK,CAAC;QACtB,IAAI,CAAC,sBAAsB,EAAE,CAAC;IAChC,CAAC;IAED,kBAAkB,CAAC,KAAc;QAC/B,IAAI,CAAC,eAAe,GAAG,KAAK,CAAC;IAC/B,CAAC;IAED,gBAAgB,CAAC,KAAyB;QACxC,IAAI,CAAC,aAAa,GAAG,KAAK,CAAC;IAC7B,CAAC;IAED,gBAAgB,CAAC,KAAyB;QACxC,IAAI,CAAC,aAAa,GAAG,KAAK,CAAC;IAC7B,CAAC;IAED,aAAa,CAAC,KAAc;QAC1B,IAAI,CAAC,UAAU,GAAG,KAAK,CAAC;IAC1B,CAAC;IAED,WAAW,CAAC,KAAyB;QACnC,IAAI,CAAC,QAAQ,GAAG,KAAK,CAAC;IACxB,CAAC;IAED,WAAW,CAAC,KAAyB;QACnC,IAAI,CAAC,QAAQ,GAAG,KAAK,CAAC;IACxB,CAAC;IAED,WAAW,CAAC,KAAa;QACvB,IAAI,CAAC,QAAQ,GAAG,KAAK,CAAC;IACxB,CAAC;IAED,sBAAsB;QACpB,IAAI,CAAC,aAAa,GAAG,KAAK,CACxB,IAAI,CAAC,aAAa,EAClB,IAAI,CAAC,kBAAkB,EACvB,kBAAkB,CACnB,CAAC;IACJ,CAAC;IAED,sBAAsB;QACpB,IAAI,CAAC,aAAa,GAAG,KAAK,CACxB,IAAI,CAAC,aAAa,EAClB,oBAAoB,EACpB,kBAAkB,CACnB,CAAC;IACJ,CAAC;IAED,QAAQ,CAAC,SAAkB;QACzB,OAAO,CACL,CAAC,oBAAoB,CAAC,SAAS,CAAC;YAC9B,IAAI,CAAC,eAAe;YACpB,OAAO,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;YAC3B,CAAC,eAAe,CAAC,SAAS,CAAC;gBACzB,IAAI,CAAC,UAAU;gBACf,OAAO,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC,CACjC,CAAC;IACJ,CAAC;IAED,SAAS,CAAC,SAAkB;QAC1B,qEAAqE;QACrE,MAAM,KAAK,GACT,oBAAoB,CAAC,SAAS,CAAC;YAC/B,IAAI,CAAC,eAAe;YACpB,CAAC,IAAI,CAAC,aAAa,KAAK,SAAS,IAAI,IAAI,CAAC,aAAa,KAAK,SAAS,CAAC,CAAC;QACzE,MAAM,KAAK,GACT,eAAe,CAAC,SAAS,CAAC;YAC1B,IAAI,CAAC,UAAU;YACf,CAAC,IAAI,CAAC,QAAQ,KAAK,SAAS,IAAI,IAAI,CAAC,QAAQ,KAAK,SAAS,CAAC,CAAC;QAC/D,OAAO;YACL,QAAQ,EAAE,IAAI,CAAC,QAAQ;YACvB,QAAQ,EAAE,aAAa,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK;YAC1D,UAAU,EAAE,KAAK;gBACf,CAAC,CAAC,EAAE,SAAS,EAAE,IAAI,CAAC,aAAa,EAAE,SAAS,EAAE,IAAI,CAAC,aAAa,EAAE;gBAClE,CAAC,CAAC,SAAS;YACb,MAAM,EAAE,KAAK,CAAC,CAAC,CAAC,EAAE,GAAG,EAAE,IAAI,CAAC,QAAQ,EAAE,GAAG,EAAE,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,SAAS;SACvE,CAAC;IACJ,CAAC;IAED,SAAS,CAAC,KAAa;QACrB,MAAM,UAAU,GAAG,KAAK,EAAE,UAAU,EAAE,iBAAiB,CAAC;QACxD,MAAM,MAAM,GAAG,KAAK,EAAE,UAAU,EAAE,WAAW,CAAC;QAC9C,IAAI,CAAC,QAAQ,GAAG,KAAK,EAAE,QAAQ,IAAI,EAAE,CAAC;QACtC,IAAI,CAAC,QAAQ,GAAG,KAAK,EAAE,UAAU,EAAE,QAAQ,IAAI,KAAK,CAAC;QACrD,IAAI,CAAC,aAAa,GAAG,UAAU,EAAE,SAAS,CAAC;QAC3C,IAAI,CAAC,aAAa,GAAG,UAAU,EAAE,SAAS,CAAC;QAC3C,IAAI,CAAC,eAAe;YAClB,UAAU,EAAE,SAAS,IAAI,IAAI,IAAI,UAAU,EAAE,SAAS,IAAI,IAAI,CAAC;QACjE,IAAI,CAAC,QAAQ,GAAG,MAAM,EAAE,GAAG,CAAC;QAC5B,IAAI,CAAC,QAAQ,GAAG,MAAM,EAAE,GAAG,CAAC;QAC5B,IAAI,CAAC,UAAU,GAAG,MAAM,EAAE,GAAG,IAAI,IAAI,IAAI,MAAM,EAAE,GAAG,IAAI,IAAI,CAAC;IAC/D,CAAC;CACF"}
1
+ {"version":3,"file":"CmsFieldSettingsState.js","sourceRoot":"","sources":["../../../../src/adapter/fieldSettings/CmsFieldSettingsState.ts"],"names":[],"mappings":"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"}