@wix/patterns-fields 1.111.0 → 1.112.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 (209) hide show
  1. package/dist/cjs/components/address/input/address-input.st.css.js +3 -3
  2. package/dist/cjs/components/address/input/address-input.st.css.js.map +1 -1
  3. package/dist/cjs/components/audio/actions/actions-menu/actions-menu.st.css.js +3 -3
  4. package/dist/cjs/components/audio/actions/actions-menu/actions-menu.st.css.js.map +1 -1
  5. package/dist/cjs/components/audio/audio-field/form-audio-field.st.css.js +4 -4
  6. package/dist/cjs/components/audio/audio-field/form-audio-field.st.css.js.map +1 -1
  7. package/dist/cjs/components/audio/audio-player/audio-player.st.css.js +2 -2
  8. package/dist/cjs/components/audio/audio-player/audio-player.st.css.js.map +1 -1
  9. package/dist/cjs/components/color-view/cell-color-view.st.css.js +3 -3
  10. package/dist/cjs/components/color-view/cell-color-view.st.css.js.map +1 -1
  11. package/dist/cjs/components/color-view/color-view.st.css.js +4 -4
  12. package/dist/cjs/components/color-view/color-view.st.css.js.map +1 -1
  13. package/dist/cjs/components/delete-dialog/delete-dialog.st.css.js +3 -3
  14. package/dist/cjs/components/delete-dialog/delete-dialog.st.css.js.map +1 -1
  15. package/dist/cjs/components/document/form-document-field.st.css.js +7 -7
  16. package/dist/cjs/components/document/form-document-field.st.css.js.map +1 -1
  17. package/dist/cjs/components/exclamation/exclamation.st.css.js +5 -5
  18. package/dist/cjs/components/exclamation/exclamation.st.css.js.map +1 -1
  19. package/dist/cjs/components/field-validation-settings/field-validation-settings-input.js +80 -132
  20. package/dist/cjs/components/field-validation-settings/field-validation-settings-input.js.map +1 -1
  21. package/dist/cjs/components/field-validation-settings/field-validation-settings-input.st.css +10 -0
  22. package/dist/cjs/components/field-validation-settings/field-validation-settings-input.st.css.js +23 -0
  23. package/dist/cjs/components/field-validation-settings/field-validation-settings-input.st.css.js.map +1 -0
  24. package/dist/cjs/components/field-validation-settings/field-validation-settings.uni.driver.js +21 -3
  25. package/dist/cjs/components/field-validation-settings/field-validation-settings.uni.driver.js.map +1 -1
  26. package/dist/cjs/components/highlighted-text/highlighted-text.st.css.js +5 -5
  27. package/dist/cjs/components/highlighted-text/highlighted-text.st.css.js.map +1 -1
  28. package/dist/cjs/components/image/thumbnail-replace-overlay.st.css.js +3 -3
  29. package/dist/cjs/components/image/thumbnail-replace-overlay.st.css.js.map +1 -1
  30. package/dist/cjs/components/media-control/cell-media-edit-shell.st.css.js +2 -2
  31. package/dist/cjs/components/media-control/cell-media-edit-shell.st.css.js.map +1 -1
  32. package/dist/cjs/components/media-control/paste-url-button.st.css.js +4 -4
  33. package/dist/cjs/components/media-control/paste-url-button.st.css.js.map +1 -1
  34. package/dist/cjs/components/media-gallery/form-media-gallery-field.st.css.js +10 -10
  35. package/dist/cjs/components/media-gallery/form-media-gallery-field.st.css.js.map +1 -1
  36. package/dist/cjs/components/media-image/media-image.st.css.js +4 -4
  37. package/dist/cjs/components/media-image/media-image.st.css.js.map +1 -1
  38. package/dist/cjs/components/media-image/overlays/overlay.st.css.js +3 -3
  39. package/dist/cjs/components/media-image/overlays/overlay.st.css.js.map +1 -1
  40. package/dist/cjs/components/media-tag/web-media-tag/media-tag.st.css.js +2 -2
  41. package/dist/cjs/components/media-tag/web-media-tag/media-tag.st.css.js.map +1 -1
  42. package/dist/cjs/components/multi-document/cell-multi-document-edit.st.css.js +3 -3
  43. package/dist/cjs/components/multi-document/cell-multi-document-edit.st.css.js.map +1 -1
  44. package/dist/cjs/components/multi-document/multi-document-input/form-multi-document.st.css.js +5 -5
  45. package/dist/cjs/components/multi-document/multi-document-input/form-multi-document.st.css.js.map +1 -1
  46. package/dist/cjs/components/reference/cell-multi-reference-input.st.css.js +2 -2
  47. package/dist/cjs/components/reference/cell-multi-reference-input.st.css.js.map +1 -1
  48. package/dist/cjs/components/reference/cell-reference-input.st.css.js +3 -3
  49. package/dist/cjs/components/reference/cell-reference-input.st.css.js.map +1 -1
  50. package/dist/cjs/components/rich-content/rich-content-input/default-value-input/rich-content-default-value-input.st.css.js +4 -4
  51. package/dist/cjs/components/rich-content/rich-content-input/default-value-input/rich-content-default-value-input.st.css.js.map +1 -1
  52. package/dist/cjs/components/rich-content/rich-content-input/form-input/rich-content-form-input.st.css.js +3 -3
  53. package/dist/cjs/components/rich-content/rich-content-input/form-input/rich-content-form-input.st.css.js.map +1 -1
  54. package/dist/cjs/components/rich-content/rich-content-input/form-read-only-input/rich-content-form-read-only-input.st.css.js +2 -2
  55. package/dist/cjs/components/rich-content/rich-content-input/form-read-only-input/rich-content-form-read-only-input.st.css.js.map +1 -1
  56. package/dist/cjs/components/rich-content/rich-content-input/rich-content-common/fullscreen-modal/fullscreen-modal.st.css.js +3 -3
  57. package/dist/cjs/components/rich-content/rich-content-input/rich-content-common/fullscreen-modal/fullscreen-modal.st.css.js.map +1 -1
  58. package/dist/cjs/components/rich-content/rich-content-input/rich-content-common/publish-loader/publish-loader.st.css.js +3 -3
  59. package/dist/cjs/components/rich-content/rich-content-input/rich-content-common/publish-loader/publish-loader.st.css.js.map +1 -1
  60. package/dist/cjs/components/rich-content/rich-content-input/rich-content-common/toggle-fullscreen-button/toggle-fullscreen-button.st.css.js +2 -2
  61. package/dist/cjs/components/rich-content/rich-content-input/rich-content-common/toggle-fullscreen-button/toggle-fullscreen-button.st.css.js.map +1 -1
  62. package/dist/cjs/components/rich-content/rich-content-input/rich-content-editor/rich-content-editor.st.css.js +7 -7
  63. package/dist/cjs/components/rich-content/rich-content-input/rich-content-editor/rich-content-editor.st.css.js.map +1 -1
  64. package/dist/cjs/components/rich-content/rich-content-input/rich-content-editor/rich-content-toolbar.st.css.js +5 -5
  65. package/dist/cjs/components/rich-content/rich-content-input/rich-content-editor/rich-content-toolbar.st.css.js.map +1 -1
  66. package/dist/cjs/components/rich-content/rich-content-input/rich-content-viewer/rich-content-viewer.st.css.js +4 -4
  67. package/dist/cjs/components/rich-content/rich-content-input/rich-content-viewer/rich-content-viewer.st.css.js.map +1 -1
  68. package/dist/cjs/components/rich-text/rich-text-input/rich-text-editor/rich-editor.st.css.js +18 -18
  69. package/dist/cjs/components/rich-text/rich-text-input/rich-text-editor/rich-editor.st.css.js.map +1 -1
  70. package/dist/cjs/components/rich-text/rich-text-input/rich-text-editor/rich-text-editor.st.css.js +4 -4
  71. package/dist/cjs/components/rich-text/rich-text-input/rich-text-editor/rich-text-editor.st.css.js.map +1 -1
  72. package/dist/cjs/components/rich-text/rich-text-input/rich-text-editor/toolbar/toolbar.st.css.js +18 -18
  73. package/dist/cjs/components/rich-text/rich-text-input/rich-text-editor/toolbar/toolbar.st.css.js.map +1 -1
  74. package/dist/cjs/components/text/text-view.st.css.js +3 -3
  75. package/dist/cjs/components/text/text-view.st.css.js.map +1 -1
  76. package/dist/cjs/styles.global.css +1 -1
  77. package/dist/cjs/types/validation.js.map +1 -1
  78. package/dist/cjs/validations/field-validation-settings.js +6 -0
  79. package/dist/cjs/validations/field-validation-settings.js.map +1 -1
  80. package/dist/cjs/validations/field-validation-settings.spec.js +16 -1
  81. package/dist/cjs/validations/field-validation-settings.spec.js.map +1 -1
  82. package/dist/esm/components/address/input/address-input.st.css.js +2 -2
  83. package/dist/esm/components/audio/actions/actions-menu/actions-menu.st.css.js +2 -2
  84. package/dist/esm/components/audio/audio-field/form-audio-field.st.css.js +2 -2
  85. package/dist/esm/components/audio/audio-field/form-audio-field.st.css.js.map +1 -1
  86. package/dist/esm/components/audio/audio-player/audio-player.st.css.js +2 -2
  87. package/dist/esm/components/color-view/cell-color-view.st.css.js +2 -2
  88. package/dist/esm/components/color-view/cell-color-view.st.css.js.map +1 -1
  89. package/dist/esm/components/color-view/color-view.st.css.js +2 -2
  90. package/dist/esm/components/color-view/color-view.st.css.js.map +1 -1
  91. package/dist/esm/components/delete-dialog/delete-dialog.st.css.js +2 -2
  92. package/dist/esm/components/document/form-document-field.st.css.js +2 -2
  93. package/dist/esm/components/document/form-document-field.st.css.js.map +1 -1
  94. package/dist/esm/components/exclamation/exclamation.st.css.js +2 -2
  95. package/dist/esm/components/exclamation/exclamation.st.css.js.map +1 -1
  96. package/dist/esm/components/field-validation-settings/field-validation-settings-input.js +45 -37
  97. package/dist/esm/components/field-validation-settings/field-validation-settings-input.js.map +1 -1
  98. package/dist/esm/components/field-validation-settings/field-validation-settings-input.st.css +10 -0
  99. package/dist/esm/components/field-validation-settings/field-validation-settings-input.st.css.js +15 -0
  100. package/dist/esm/components/field-validation-settings/field-validation-settings-input.st.css.js.map +1 -0
  101. package/dist/esm/components/field-validation-settings/field-validation-settings.uni.driver.js +18 -4
  102. package/dist/esm/components/field-validation-settings/field-validation-settings.uni.driver.js.map +1 -1
  103. package/dist/esm/components/highlighted-text/highlighted-text.st.css.js +3 -3
  104. package/dist/esm/components/highlighted-text/highlighted-text.st.css.js.map +1 -1
  105. package/dist/esm/components/image/thumbnail-replace-overlay.st.css.js +2 -2
  106. package/dist/esm/components/media-control/cell-media-edit-shell.st.css.js +2 -2
  107. package/dist/esm/components/media-control/paste-url-button.st.css.js +2 -2
  108. package/dist/esm/components/media-gallery/form-media-gallery-field.st.css.js +2 -2
  109. package/dist/esm/components/media-gallery/form-media-gallery-field.st.css.js.map +1 -1
  110. package/dist/esm/components/media-image/media-image.st.css.js +3 -3
  111. package/dist/esm/components/media-image/overlays/overlay.st.css.js +2 -2
  112. package/dist/esm/components/media-image/overlays/overlay.st.css.js.map +1 -1
  113. package/dist/esm/components/media-tag/web-media-tag/media-tag.st.css.js +2 -2
  114. package/dist/esm/components/multi-document/cell-multi-document-edit.st.css.js +2 -2
  115. package/dist/esm/components/multi-document/cell-multi-document-edit.st.css.js.map +1 -1
  116. package/dist/esm/components/multi-document/multi-document-input/form-multi-document.st.css.js +2 -2
  117. package/dist/esm/components/reference/cell-multi-reference-input.st.css.js +2 -2
  118. package/dist/esm/components/reference/cell-multi-reference-input.st.css.js.map +1 -1
  119. package/dist/esm/components/reference/cell-reference-input.st.css.js +2 -2
  120. package/dist/esm/components/rich-content/rich-content-input/default-value-input/rich-content-default-value-input.st.css.js +2 -2
  121. package/dist/esm/components/rich-content/rich-content-input/form-input/rich-content-form-input.st.css.js +2 -2
  122. package/dist/esm/components/rich-content/rich-content-input/form-read-only-input/rich-content-form-read-only-input.st.css.js +2 -2
  123. package/dist/esm/components/rich-content/rich-content-input/rich-content-common/fullscreen-modal/fullscreen-modal.st.css.js +2 -2
  124. package/dist/esm/components/rich-content/rich-content-input/rich-content-common/publish-loader/publish-loader.st.css.js +2 -2
  125. package/dist/esm/components/rich-content/rich-content-input/rich-content-common/publish-loader/publish-loader.st.css.js.map +1 -1
  126. package/dist/esm/components/rich-content/rich-content-input/rich-content-common/toggle-fullscreen-button/toggle-fullscreen-button.st.css.js +2 -2
  127. package/dist/esm/components/rich-content/rich-content-input/rich-content-editor/rich-content-editor.st.css.js +2 -2
  128. package/dist/esm/components/rich-content/rich-content-input/rich-content-editor/rich-content-toolbar.st.css.js +2 -2
  129. package/dist/esm/components/rich-content/rich-content-input/rich-content-editor/rich-content-toolbar.st.css.js.map +1 -1
  130. package/dist/esm/components/rich-content/rich-content-input/rich-content-viewer/rich-content-viewer.st.css.js +2 -2
  131. package/dist/esm/components/rich-content/rich-content-input/rich-content-viewer/rich-content-viewer.st.css.js.map +1 -1
  132. package/dist/esm/components/rich-text/rich-text-input/rich-text-editor/rich-editor.st.css.js +2 -2
  133. package/dist/esm/components/rich-text/rich-text-input/rich-text-editor/rich-editor.st.css.js.map +1 -1
  134. package/dist/esm/components/rich-text/rich-text-input/rich-text-editor/rich-text-editor.st.css.js +2 -2
  135. package/dist/esm/components/rich-text/rich-text-input/rich-text-editor/rich-text-editor.st.css.js.map +1 -1
  136. package/dist/esm/components/rich-text/rich-text-input/rich-text-editor/toolbar/toolbar.st.css.js +2 -2
  137. package/dist/esm/components/text/text-view.st.css.js +2 -2
  138. package/dist/esm/styles.global.css +1 -1
  139. package/dist/esm/validations/field-validation-settings.js +3 -0
  140. package/dist/esm/validations/field-validation-settings.js.map +1 -1
  141. package/dist/esm/validations/field-validation-settings.spec.js +9 -1
  142. package/dist/esm/validations/field-validation-settings.spec.js.map +1 -1
  143. package/dist/types/components/audio/audio-field/form-audio-field.st.css.d.ts.map +1 -1
  144. package/dist/types/components/color-view/cell-color-view.st.css.d.ts.map +1 -1
  145. package/dist/types/components/color-view/color-view.st.css.d.ts.map +1 -1
  146. package/dist/types/components/document/form-document-field.st.css.d.ts.map +1 -1
  147. package/dist/types/components/exclamation/exclamation.st.css.d.ts.map +1 -1
  148. package/dist/types/components/field-validation-settings/field-validation-settings-input.d.ts.map +1 -1
  149. package/dist/types/components/field-validation-settings/field-validation-settings-input.st.css.d.ts +14 -0
  150. package/dist/types/components/field-validation-settings/field-validation-settings-input.st.css.d.ts.map +1 -0
  151. package/dist/types/components/field-validation-settings/field-validation-settings.uni.driver.d.ts +18 -69
  152. package/dist/types/components/field-validation-settings/field-validation-settings.uni.driver.d.ts.map +1 -1
  153. package/dist/types/components/highlighted-text/highlighted-text.st.css.d.ts.map +1 -1
  154. package/dist/types/components/media-gallery/form-media-gallery-field.st.css.d.ts.map +1 -1
  155. package/dist/types/components/media-image/overlays/overlay.st.css.d.ts.map +1 -1
  156. package/dist/types/components/multi-document/cell-multi-document-edit.st.css.d.ts.map +1 -1
  157. package/dist/types/components/reference/cell-multi-reference-input.st.css.d.ts.map +1 -1
  158. package/dist/types/components/rich-content/rich-content-input/rich-content-common/publish-loader/publish-loader.st.css.d.ts.map +1 -1
  159. package/dist/types/components/rich-content/rich-content-input/rich-content-editor/rich-content-toolbar.st.css.d.ts.map +1 -1
  160. package/dist/types/components/rich-content/rich-content-input/rich-content-viewer/rich-content-viewer.st.css.d.ts.map +1 -1
  161. package/dist/types/components/rich-text/rich-text-input/rich-text-editor/rich-editor.st.css.d.ts.map +1 -1
  162. package/dist/types/components/rich-text/rich-text-input/rich-text-editor/rich-text-editor.st.css.d.ts.map +1 -1
  163. package/dist/types/types/validation.d.ts +14 -4
  164. package/dist/types/types/validation.d.ts.map +1 -1
  165. package/dist/types/validations/field-validation-settings.d.ts.map +1 -1
  166. package/package.json +4 -4
  167. package/src/__tests__/components/field-validation-settings/field-validation-settings-input.spec.tsx +106 -35
  168. package/src/components/address/input/address-input.st.css.ts +2 -2
  169. package/src/components/audio/actions/actions-menu/actions-menu.st.css.ts +2 -2
  170. package/src/components/audio/audio-field/form-audio-field.st.css.ts +2 -2
  171. package/src/components/audio/audio-player/audio-player.st.css.ts +2 -2
  172. package/src/components/color-view/cell-color-view.st.css.ts +2 -2
  173. package/src/components/color-view/color-view.st.css.ts +2 -2
  174. package/src/components/delete-dialog/delete-dialog.st.css.ts +2 -2
  175. package/src/components/document/form-document-field.st.css.ts +2 -2
  176. package/src/components/exclamation/exclamation.st.css.ts +2 -2
  177. package/src/components/field-validation-settings/field-validation-settings-input.st.css +10 -0
  178. package/src/components/field-validation-settings/field-validation-settings-input.st.css.ts +25 -0
  179. package/src/components/field-validation-settings/field-validation-settings-input.tsx +88 -103
  180. package/src/components/field-validation-settings/field-validation-settings.uni.driver.ts +29 -15
  181. package/src/components/highlighted-text/highlighted-text.st.css.ts +3 -3
  182. package/src/components/image/thumbnail-replace-overlay.st.css.ts +2 -2
  183. package/src/components/media-control/cell-media-edit-shell.st.css.ts +2 -2
  184. package/src/components/media-control/paste-url-button.st.css.ts +2 -2
  185. package/src/components/media-gallery/form-media-gallery-field.st.css.ts +2 -2
  186. package/src/components/media-image/media-image.st.css.ts +3 -3
  187. package/src/components/media-image/overlays/overlay.st.css.ts +2 -2
  188. package/src/components/media-tag/web-media-tag/media-tag.st.css.ts +2 -2
  189. package/src/components/multi-document/cell-multi-document-edit.st.css.ts +2 -2
  190. package/src/components/multi-document/multi-document-input/form-multi-document.st.css.ts +2 -2
  191. package/src/components/reference/cell-multi-reference-input.st.css.ts +2 -2
  192. package/src/components/reference/cell-reference-input.st.css.ts +2 -2
  193. package/src/components/rich-content/rich-content-input/default-value-input/rich-content-default-value-input.st.css.ts +2 -2
  194. package/src/components/rich-content/rich-content-input/form-input/rich-content-form-input.st.css.ts +2 -2
  195. package/src/components/rich-content/rich-content-input/form-read-only-input/rich-content-form-read-only-input.st.css.ts +2 -2
  196. package/src/components/rich-content/rich-content-input/rich-content-common/fullscreen-modal/fullscreen-modal.st.css.ts +2 -2
  197. package/src/components/rich-content/rich-content-input/rich-content-common/publish-loader/publish-loader.st.css.ts +2 -2
  198. package/src/components/rich-content/rich-content-input/rich-content-common/toggle-fullscreen-button/toggle-fullscreen-button.st.css.ts +2 -2
  199. package/src/components/rich-content/rich-content-input/rich-content-editor/rich-content-editor.st.css.ts +2 -2
  200. package/src/components/rich-content/rich-content-input/rich-content-editor/rich-content-toolbar.st.css.ts +2 -2
  201. package/src/components/rich-content/rich-content-input/rich-content-viewer/rich-content-viewer.st.css.ts +2 -2
  202. package/src/components/rich-text/rich-text-input/rich-text-editor/rich-editor.st.css.ts +2 -2
  203. package/src/components/rich-text/rich-text-input/rich-text-editor/rich-text-editor.st.css.ts +2 -2
  204. package/src/components/rich-text/rich-text-input/rich-text-editor/toolbar/toolbar.st.css.ts +2 -2
  205. package/src/components/text/text-view.st.css.ts +2 -2
  206. package/src/styles.global.css +1 -1
  207. package/src/types/validation.ts +12 -4
  208. package/src/validations/field-validation-settings.spec.ts +12 -1
  209. package/src/validations/field-validation-settings.ts +4 -0
@@ -5,9 +5,9 @@ exports.__esModule = true;
5
5
  exports.FieldValidationSettingsInput = void 0;
6
6
  var _react = _interopRequireDefault(require("react"));
7
7
  var _designSystem = require("@wix/design-system");
8
- var _lazy = require("@wix/wix-ui-icons-common/lazy");
9
8
  var _uuid = require("uuid");
10
9
  var _fieldValidationSettings = require("../../validations/field-validation-settings");
10
+ var _fieldValidationSettingsInputStCss = require("./field-validation-settings-input.st.css.js");
11
11
  var _jsxFileName = "/home/builduser/work/843658b9f44192f0/packages/fields/dist/cjs/components/field-validation-settings/field-validation-settings-input.tsx";
12
12
  const RuleToggle = ({
13
13
  dataHook,
@@ -26,7 +26,7 @@ const RuleToggle = ({
26
26
  __self: void 0,
27
27
  __source: {
28
28
  fileName: _jsxFileName,
29
- lineNumber: 60,
29
+ lineNumber: 58,
30
30
  columnNumber: 3
31
31
  }
32
32
  }, /*#__PURE__*/_react.default.createElement(_designSystem.ToggleSwitch, {
@@ -38,7 +38,7 @@ const RuleToggle = ({
38
38
  __self: void 0,
39
39
  __source: {
40
40
  fileName: _jsxFileName,
41
- lineNumber: 68,
41
+ lineNumber: 66,
42
42
  columnNumber: 5
43
43
  }
44
44
  }));
@@ -123,7 +123,7 @@ const FieldValidationSettingsInput = ({
123
123
  __self: void 0,
124
124
  __source: {
125
125
  fileName: _jsxFileName,
126
- lineNumber: 171,
126
+ lineNumber: 169,
127
127
  columnNumber: 7
128
128
  }
129
129
  }, text);
@@ -145,7 +145,7 @@ const FieldValidationSettingsInput = ({
145
145
  __self: void 0,
146
146
  __source: {
147
147
  fileName: _jsxFileName,
148
- lineNumber: 181,
148
+ lineNumber: 179,
149
149
  columnNumber: 5
150
150
  }
151
151
  });
@@ -162,7 +162,7 @@ const FieldValidationSettingsInput = ({
162
162
  __self: void 0,
163
163
  __source: {
164
164
  fileName: _jsxFileName,
165
- lineNumber: 217,
165
+ lineNumber: 215,
166
166
  columnNumber: 7
167
167
  }
168
168
  }, /*#__PURE__*/_react.default.createElement(RuleToggle, {
@@ -177,7 +177,7 @@ const FieldValidationSettingsInput = ({
177
177
  __self: void 0,
178
178
  __source: {
179
179
  fileName: _jsxFileName,
180
- lineNumber: 218,
180
+ lineNumber: 216,
181
181
  columnNumber: 9
182
182
  }
183
183
  }), hasCharactersLimit && /*#__PURE__*/_react.default.createElement(_designSystem.Box, {
@@ -186,7 +186,7 @@ const FieldValidationSettingsInput = ({
186
186
  __self: void 0,
187
187
  __source: {
188
188
  fileName: _jsxFileName,
189
- lineNumber: 232,
189
+ lineNumber: 230,
190
190
  columnNumber: 11
191
191
  }
192
192
  }, /*#__PURE__*/_react.default.createElement(_designSystem.Box, {
@@ -194,7 +194,7 @@ const FieldValidationSettingsInput = ({
194
194
  __self: void 0,
195
195
  __source: {
196
196
  fileName: _jsxFileName,
197
- lineNumber: 233,
197
+ lineNumber: 231,
198
198
  columnNumber: 13
199
199
  }
200
200
  }, /*#__PURE__*/_react.default.createElement(_designSystem.FormField, {
@@ -203,7 +203,7 @@ const FieldValidationSettingsInput = ({
203
203
  __self: void 0,
204
204
  __source: {
205
205
  fileName: _jsxFileName,
206
- lineNumber: 234,
206
+ lineNumber: 232,
207
207
  columnNumber: 15
208
208
  }
209
209
  }, /*#__PURE__*/_react.default.createElement(_designSystem.NumberInput, {
@@ -222,7 +222,7 @@ const FieldValidationSettingsInput = ({
222
222
  __self: void 0,
223
223
  __source: {
224
224
  fileName: _jsxFileName,
225
- lineNumber: 235,
225
+ lineNumber: 233,
226
226
  columnNumber: 17
227
227
  }
228
228
  }))), /*#__PURE__*/_react.default.createElement(_designSystem.Box, {
@@ -231,7 +231,7 @@ const FieldValidationSettingsInput = ({
231
231
  __self: void 0,
232
232
  __source: {
233
233
  fileName: _jsxFileName,
234
- lineNumber: 264,
234
+ lineNumber: 262,
235
235
  columnNumber: 13
236
236
  }
237
237
  }, /*#__PURE__*/_react.default.createElement(_designSystem.Text, {
@@ -240,7 +240,7 @@ const FieldValidationSettingsInput = ({
240
240
  __self: void 0,
241
241
  __source: {
242
242
  fileName: _jsxFileName,
243
- lineNumber: 265,
243
+ lineNumber: 263,
244
244
  columnNumber: 15
245
245
  }
246
246
  }, rule.separator)), /*#__PURE__*/_react.default.createElement(_designSystem.Box, {
@@ -248,7 +248,7 @@ const FieldValidationSettingsInput = ({
248
248
  __self: void 0,
249
249
  __source: {
250
250
  fileName: _jsxFileName,
251
- lineNumber: 269,
251
+ lineNumber: 267,
252
252
  columnNumber: 13
253
253
  }
254
254
  }, /*#__PURE__*/_react.default.createElement(_designSystem.FormField, {
@@ -257,7 +257,7 @@ const FieldValidationSettingsInput = ({
257
257
  __self: void 0,
258
258
  __source: {
259
259
  fileName: _jsxFileName,
260
- lineNumber: 270,
260
+ lineNumber: 268,
261
261
  columnNumber: 15
262
262
  }
263
263
  }, /*#__PURE__*/_react.default.createElement(_designSystem.NumberInput, {
@@ -276,13 +276,43 @@ const FieldValidationSettingsInput = ({
276
276
  __self: void 0,
277
277
  __source: {
278
278
  fileName: _jsxFileName,
279
- lineNumber: 271,
279
+ lineNumber: 269,
280
280
  columnNumber: 17
281
281
  }
282
282
  })))), renderExclusiveRulesExplanation('charactersLimit', 'field-validation-characters-limit', rule.exclusiveRulesExplanation));
283
283
  };
284
284
  const renderSpecificValues = rule => {
285
- var _data$specificValues;
285
+ const valuesViolation = errorViolations.find(violation => violation.rule === 'specificValues' && violation.type !== 'exclusiveRules');
286
+ const hasValuesError = Boolean(valuesViolation || hasUnattributedInvalidState);
287
+ let valuesError;
288
+ if ((valuesViolation == null ? void 0 : valuesViolation.type) === 'empty') {
289
+ valuesError = rule.emptyError;
290
+ } else if ((valuesViolation == null ? void 0 : valuesViolation.type) === 'blank') {
291
+ valuesError = rule.blankError;
292
+ } else if ((valuesViolation == null ? void 0 : valuesViolation.type) === 'duplicate') {
293
+ valuesError = rule.duplicateError;
294
+ }
295
+ const specificValues = data.specificValues ?? [];
296
+ const addValues = inputValues => {
297
+ const knownValues = new Set(specificValues.map(({
298
+ value
299
+ }) => value.trim()));
300
+ const addedValues = inputValues.map(value => value.trim()).filter(value => {
301
+ if (!value || knownValues.has(value)) {
302
+ return false;
303
+ }
304
+ knownValues.add(value);
305
+ return true;
306
+ }).map(value => ({
307
+ id: (0, _uuid.v4)(),
308
+ value
309
+ }));
310
+ if (addedValues.length > 0) {
311
+ update({
312
+ specificValues: [...specificValues, ...addedValues]
313
+ });
314
+ }
315
+ };
286
316
  return /*#__PURE__*/_react.default.createElement(_designSystem.Box, {
287
317
  key: "specificValues",
288
318
  direction: "vertical",
@@ -290,8 +320,8 @@ const FieldValidationSettingsInput = ({
290
320
  __self: void 0,
291
321
  __source: {
292
322
  fileName: _jsxFileName,
293
- lineNumber: 318,
294
- columnNumber: 5
323
+ lineNumber: 355,
324
+ columnNumber: 7
295
325
  }
296
326
  }, /*#__PURE__*/_react.default.createElement(RuleToggle, {
297
327
  dataHook: "field-validation-specific-values",
@@ -305,128 +335,46 @@ const FieldValidationSettingsInput = ({
305
335
  __self: void 0,
306
336
  __source: {
307
337
  fileName: _jsxFileName,
308
- lineNumber: 319,
309
- columnNumber: 7
310
- }
311
- }), hasSpecificValues && /*#__PURE__*/_react.default.createElement(_designSystem.Box, {
312
- direction: "vertical",
313
- gap: "SP2",
314
- __self: void 0,
315
- __source: {
316
- fileName: _jsxFileName,
317
- lineNumber: 333,
338
+ lineNumber: 356,
318
339
  columnNumber: 9
319
340
  }
320
- }, (_data$specificValues = data.specificValues) == null ? void 0 : _data$specificValues.map((option, index) => {
321
- const optionViolation = errorViolations.find(violation => violation.rule === 'specificValues' && 'optionId' in violation && violation.optionId === option.id);
322
- return /*#__PURE__*/_react.default.createElement(_designSystem.Box, {
323
- key: option.id,
324
- verticalAlign: "middle",
325
- gap: "SP1",
326
- __self: void 0,
327
- __source: {
328
- fileName: _jsxFileName,
329
- lineNumber: 342,
330
- columnNumber: 15
331
- }
332
- }, /*#__PURE__*/_react.default.createElement(_designSystem.Box, {
333
- width: "100%",
334
- __self: void 0,
335
- __source: {
336
- fileName: _jsxFileName,
337
- lineNumber: 343,
338
- columnNumber: 17
339
- }
340
- }, /*#__PURE__*/_react.default.createElement(_designSystem.Input, {
341
- dataHook: `field-validation-specific-value-${index}`,
342
- size: "small",
343
- value: option.value,
344
- disabled: isRuleDisabled('specificValues'),
345
- status: optionViolation || hasUnattributedInvalidState ? 'error' : undefined,
346
- statusMessage: (optionViolation == null ? void 0 : optionViolation.type) === 'blank' ? rule.blankError : (optionViolation == null ? void 0 : optionViolation.type) === 'duplicate' ? rule.duplicateError : undefined,
347
- onChange: event => {
348
- var _data$specificValues2;
349
- return update({
350
- specificValues: (_data$specificValues2 = data.specificValues) == null ? void 0 : _data$specificValues2.map(item => item.id === option.id ? {
351
- ...item,
352
- value: event.target.value
353
- } : item)
354
- });
355
- },
356
- __self: void 0,
357
- __source: {
358
- fileName: _jsxFileName,
359
- lineNumber: 344,
360
- columnNumber: 19
361
- }
362
- })), /*#__PURE__*/_react.default.createElement(_designSystem.Tooltip, {
363
- content: rule.removeButton,
364
- __self: void 0,
365
- __source: {
366
- fileName: _jsxFileName,
367
- lineNumber: 372,
368
- columnNumber: 17
369
- }
370
- }, /*#__PURE__*/_react.default.createElement(_designSystem.IconButton, {
371
- dataHook: `field-validation-specific-value-remove-${index}`,
372
- size: "tiny",
373
- priority: "secondary",
374
- disabled: isRuleDisabled('specificValues'),
375
- ariaLabel: rule.removeButton,
376
- onClick: () => {
377
- var _data$specificValues3;
378
- return update({
379
- specificValues: (_data$specificValues3 = data.specificValues) == null ? void 0 : _data$specificValues3.filter(({
380
- id
381
- }) => id !== option.id)
382
- });
383
- },
384
- __self: void 0,
385
- __source: {
386
- fileName: _jsxFileName,
387
- lineNumber: 373,
388
- columnNumber: 19
389
- }
390
- }, /*#__PURE__*/_react.default.createElement(_lazy.DeleteSmall, {
391
- __self: void 0,
392
- __source: {
393
- fileName: _jsxFileName,
394
- lineNumber: 387,
395
- columnNumber: 21
396
- }
397
- }))));
398
- }), /*#__PURE__*/_react.default.createElement(_designSystem.Box, {
341
+ }), hasSpecificValues && /*#__PURE__*/_react.default.createElement(_designSystem.FormField, {
342
+ dataHook: "field-validation-specific-values-field",
343
+ label: rule.optionsLabel,
344
+ labelSize: "small",
345
+ stretchContent: true,
346
+ status: hasValuesError ? 'error' : undefined,
347
+ statusMessage: hasValuesError ? valuesError : rule.optionsHint,
399
348
  __self: void 0,
400
349
  __source: {
401
350
  fileName: _jsxFileName,
402
- lineNumber: 393,
351
+ lineNumber: 370,
403
352
  columnNumber: 11
404
353
  }
405
- }, /*#__PURE__*/_react.default.createElement(_designSystem.TextButton, {
406
- dataHook: "field-validation-specific-value-add",
407
- size: "small",
408
- prefixIcon: /*#__PURE__*/_react.default.createElement(_lazy.AddSmall, {
409
- __self: void 0,
410
- __source: {
411
- fileName: _jsxFileName,
412
- lineNumber: 397,
413
- columnNumber: 27
414
- }
415
- }),
354
+ }, /*#__PURE__*/_react.default.createElement(_designSystem.MultiSelect, {
355
+ dataHook: "field-validation-specific-values-input",
356
+ className: _fieldValidationSettingsInputStCss.classes.specificValuesInput,
357
+ tags: specificValues.map(({
358
+ id,
359
+ value
360
+ }) => ({
361
+ id,
362
+ label: value
363
+ })),
416
364
  disabled: isRuleDisabled('specificValues'),
417
- onClick: () => update({
418
- specificValues: [...(data.specificValues ?? []), {
419
- id: (0, _uuid.v4)(),
420
- value: ''
421
- }]
365
+ onManuallyInput: addValues,
366
+ onRemoveTag: tagId => update({
367
+ specificValues: specificValues.filter(({
368
+ id
369
+ }) => id !== tagId)
422
370
  }),
423
371
  __self: void 0,
424
372
  __source: {
425
373
  fileName: _jsxFileName,
426
- lineNumber: 394,
374
+ lineNumber: 378,
427
375
  columnNumber: 13
428
376
  }
429
- }, rule.addButton))), renderExclusiveRulesExplanation('specificValues', 'field-validation-specific-values', rule.exclusiveRulesExplanation));
377
+ })), renderExclusiveRulesExplanation('specificValues', 'field-validation-specific-values', rule.exclusiveRulesExplanation));
430
378
  };
431
379
  const renderPattern = rule => {
432
380
  const patternViolation = errorViolations.find(violation => violation.rule === 'pattern' && (violation.type === 'invalidPattern' || violation.type === 'unsafePattern'));
@@ -438,7 +386,7 @@ const FieldValidationSettingsInput = ({
438
386
  __self: void 0,
439
387
  __source: {
440
388
  fileName: _jsxFileName,
441
- lineNumber: 434,
389
+ lineNumber: 419,
442
390
  columnNumber: 7
443
391
  }
444
392
  }, /*#__PURE__*/_react.default.createElement(RuleToggle, {
@@ -453,7 +401,7 @@ const FieldValidationSettingsInput = ({
453
401
  __self: void 0,
454
402
  __source: {
455
403
  fileName: _jsxFileName,
456
- lineNumber: 435,
404
+ lineNumber: 420,
457
405
  columnNumber: 9
458
406
  }
459
407
  }), hasPattern && /*#__PURE__*/_react.default.createElement(_designSystem.FormField, {
@@ -462,7 +410,7 @@ const FieldValidationSettingsInput = ({
462
410
  __self: void 0,
463
411
  __source: {
464
412
  fileName: _jsxFileName,
465
- lineNumber: 446,
413
+ lineNumber: 431,
466
414
  columnNumber: 11
467
415
  }
468
416
  }, /*#__PURE__*/_react.default.createElement(_designSystem.Input, {
@@ -478,7 +426,7 @@ const FieldValidationSettingsInput = ({
478
426
  __self: void 0,
479
427
  __source: {
480
428
  fileName: _jsxFileName,
481
- lineNumber: 447,
429
+ lineNumber: 432,
482
430
  columnNumber: 13
483
431
  }
484
432
  })), renderExclusiveRulesExplanation('pattern', 'field-validation-pattern', rule.exclusiveRulesExplanation));
@@ -502,7 +450,7 @@ const FieldValidationSettingsInput = ({
502
450
  __self: void 0,
503
451
  __source: {
504
452
  fileName: _jsxFileName,
505
- lineNumber: 487,
453
+ lineNumber: 472,
506
454
  columnNumber: 5
507
455
  }
508
456
  }, rules.map(renderRule));
@@ -1 +1 @@
1
- {"version":3,"names":["_react","_interopRequireDefault","require","_designSystem","_lazy","_uuid","_fieldValidationSettings","_jsxFileName","RuleToggle","dataHook","checked","disabled","label","infoContent","onChange","default","createElement","FormField","labelPlacement","labelSize","stretchContent","__self","__source","fileName","lineNumber","columnNumber","ToggleSwitch","size","FieldValidationSettingsInput","data","readOnly","invalid","rules","disabledRules","exclusiveSpecificValues","showValidationErrors","_rules$find","isRuleDisabled","rule","Boolean","includes","supportedRules","map","type","violations","getFieldValidationSettingsViolations","errorViolations","supportsSpecificValues","some","supportsCharactersLimit","supportsPattern","hasSpecificValues","specificValues","undefined","hasCharactersLimit","charactersLimit","hasPattern","pattern","hasUnattributedInvalidState","every","isBlockedByExclusivity","isInExclusiveConflict","violation","specificValuesExplanation","find","exclusiveRulesExplanation","hasRenderedSharedExplanation","renderExclusiveRulesExplanation","hook","explanation","text","Text","secondary","update","next","renderRequired","key","required","tooltip","renderCharactersLimit","_data$charactersLimit","_data$charactersLimit2","minViolation","bound","maxOutOfBoundsViolation","maxBelowMinViolation","isInputDisabled","Box","direction","gap","verticalAlign","width","minLabel","NumberInput","value","min","status","statusMessage","outOfBoundsError","max","height","separator","maxLabel","maxBelowMinError","renderSpecificValues","_data$specificValues","option","index","optionViolation","optionId","id","Input","blankError","duplicateError","event","_data$specificValues2","item","target","Tooltip","content","removeButton","IconButton","priority","ariaLabel","onClick","_data$specificValues3","filter","DeleteSmall","TextButton","prefixIcon","AddSmall","uuid","addButton","renderPattern","patternViolation","patternError","unsafeError","invalidError","inputLabel","renderRule","exports"],"sources":["../../../../src/components/field-validation-settings/field-validation-settings-input.tsx"],"sourcesContent":["import React from 'react';\nimport {\n Box,\n FormField,\n IconButton,\n Input,\n NumberInput,\n Text,\n TextButton,\n ToggleSwitch,\n Tooltip,\n} from '@wix/design-system';\nimport { AddSmall, DeleteSmall } from '@wix/wix-ui-icons-common/lazy';\nimport { v4 as uuid } from 'uuid';\nimport type { ControlledInputProps } from '../../types/controlled-input';\nimport type {\n CharactersLimitFieldValidationRuleConfig,\n FieldValidationRule,\n FieldValidationRuleConfig,\n FieldValidationSettingsValue,\n PatternFieldValidationRuleConfig,\n RequiredFieldValidationRuleConfig,\n SpecificValuesFieldValidationRuleConfig,\n} from '../../types/validation';\nimport { getFieldValidationSettingsViolations } from '../../validations/field-validation-settings';\n\nexport interface FieldValidationSettingsInputProps\n extends Omit<\n ControlledInputProps<FieldValidationSettingsValue>,\n 'autoFocus' | 'onBlur'\n > {\n rules: readonly FieldValidationRuleConfig[];\n /** Show error styling/messages, including caller-supplied `invalid` state.\n * Defaults to true. Does not alter validity or rule availability. */\n showValidationErrors?: boolean;\n /** Rules the caller has fixed and the user can't toggle, independent of `readOnly`. */\n disabledRules?: readonly FieldValidationRule[];\n /** Whether `specificValues` rejects `charactersLimit`/`pattern` on the same\n * field. Pass `false` for callers that let a field carry both. */\n exclusiveSpecificValues?: boolean;\n}\n\ninterface RuleToggleProps {\n dataHook: string;\n checked: boolean;\n disabled?: boolean;\n label: string;\n infoContent: string;\n onChange(): void;\n}\n\nconst RuleToggle = ({\n dataHook,\n checked,\n disabled,\n label,\n infoContent,\n onChange,\n}: RuleToggleProps) => (\n <FormField\n dataHook={dataHook}\n label={label}\n labelPlacement=\"right\"\n labelSize=\"small\"\n stretchContent={false}\n infoContent={infoContent}\n >\n <ToggleSwitch\n dataHook={`${dataHook}-toggle`}\n size=\"medium\"\n checked={checked}\n disabled={disabled}\n onChange={onChange}\n />\n </FormField>\n);\n\nexport const FieldValidationSettingsInput = ({\n data,\n onChange,\n readOnly,\n invalid,\n dataHook = 'field-validation-settings',\n rules,\n disabledRules,\n exclusiveSpecificValues = true,\n showValidationErrors = true,\n}: FieldValidationSettingsInputProps) => {\n const isRuleDisabled = (rule: FieldValidationRule) =>\n Boolean(readOnly) || Boolean(disabledRules?.includes(rule));\n const supportedRules = rules.map(({ type }) => type);\n const violations = getFieldValidationSettingsViolations(\n data,\n supportedRules,\n {\n exclusiveSpecificValues,\n },\n );\n const errorViolations = showValidationErrors ? violations : [];\n const supportsSpecificValues = rules.some(\n ({ type }) => type === 'specificValues',\n );\n const supportsCharactersLimit = rules.some(\n ({ type }) => type === 'charactersLimit',\n );\n const supportsPattern = rules.some(({ type }) => type === 'pattern');\n const hasSpecificValues =\n supportsSpecificValues && data.specificValues !== undefined;\n const hasCharactersLimit =\n supportsCharactersLimit && data.charactersLimit !== undefined;\n const hasPattern = supportsPattern && data.pattern !== undefined;\n // Other violations put an error on a control; `exclusiveRules` renders only as\n // text under the rule, so it leaves `invalid` unattributed.\n const hasUnattributedInvalidState =\n showValidationErrors &&\n Boolean(invalid) &&\n violations.every(({ type }) => type === 'exclusiveRules');\n const isBlockedByExclusivity = (rule: FieldValidationRule) => {\n if (!exclusiveSpecificValues) {\n return false;\n }\n switch (rule) {\n case 'charactersLimit':\n return hasSpecificValues && !hasCharactersLimit;\n case 'pattern':\n return hasSpecificValues && !hasPattern;\n case 'specificValues':\n return (hasCharactersLimit || hasPattern) && !hasSpecificValues;\n default:\n return false;\n }\n };\n // Widening `isBlockedByExclusivity` to cover the both-on state instead would\n // disable both toggles at once, leaving no way to switch either rule off.\n const isInExclusiveConflict = (rule: FieldValidationRule) =>\n violations.some(\n (violation) =>\n violation.rule === rule && violation.type === 'exclusiveRules',\n );\n const specificValuesExplanation = rules.find(\n (rule): rule is SpecificValuesFieldValidationRuleConfig =>\n rule.type === 'specificValues',\n )?.exclusiveRulesExplanation;\n // Callers written before the note moved under the blocked rule put a single\n // explanation on `specificValues`. Show it once rather than dropping it —\n // `specificValues` renders that same copy as its own, so both paths count.\n let hasRenderedSharedExplanation = false;\n const renderExclusiveRulesExplanation = (\n rule: FieldValidationRule,\n hook: string,\n explanation?: string,\n ) => {\n if (!isBlockedByExclusivity(rule) && !isInExclusiveConflict(rule)) {\n return null;\n }\n\n const text = explanation ?? specificValuesExplanation;\n\n if (!text) {\n return null;\n }\n\n if (text === specificValuesExplanation) {\n if (hasRenderedSharedExplanation) {\n return null;\n }\n hasRenderedSharedExplanation = true;\n }\n\n return (\n <Text size=\"tiny\" secondary dataHook={`${hook}-exclusive-help`}>\n {text}\n </Text>\n );\n };\n\n const update = (next: Partial<FieldValidationSettingsValue>) =>\n onChange({ ...data, ...next });\n\n const renderRequired = (rule: RequiredFieldValidationRuleConfig) => (\n <RuleToggle\n key=\"required\"\n dataHook=\"field-validation-required\"\n checked={Boolean(data.required)}\n disabled={isRuleDisabled('required')}\n label={rule.label}\n infoContent={rule.tooltip}\n onChange={() => update({ required: !data.required })}\n />\n );\n\n const renderCharactersLimit = (\n rule: CharactersLimitFieldValidationRuleConfig,\n ) => {\n const minViolation = errorViolations.find(\n (violation) =>\n violation.rule === 'charactersLimit' &&\n violation.type === 'outOfBounds' &&\n violation.bound === 'min',\n );\n const maxOutOfBoundsViolation = errorViolations.find(\n (violation) =>\n violation.rule === 'charactersLimit' &&\n violation.type === 'outOfBounds' &&\n violation.bound === 'max',\n );\n const maxBelowMinViolation = errorViolations.find(\n (violation) =>\n violation.rule === 'charactersLimit' &&\n violation.type === 'maxBelowMin',\n );\n const isInputDisabled =\n isRuleDisabled('charactersLimit') ||\n isInExclusiveConflict('charactersLimit');\n\n return (\n <Box key=\"charactersLimit\" direction=\"vertical\" gap=\"SP2\">\n <RuleToggle\n dataHook=\"field-validation-characters-limit\"\n checked={hasCharactersLimit}\n disabled={\n isRuleDisabled('charactersLimit') ||\n isBlockedByExclusivity('charactersLimit')\n }\n label={rule.label}\n infoContent={rule.tooltip}\n onChange={() =>\n update({ charactersLimit: hasCharactersLimit ? undefined : {} })\n }\n />\n {hasCharactersLimit && (\n <Box verticalAlign=\"bottom\" gap=\"SP2\">\n <Box width=\"100px\">\n <FormField stretchContent label={rule.minLabel}>\n <NumberInput\n dataHook=\"field-validation-min-characters\"\n size=\"medium\"\n value={data.charactersLimit?.min}\n disabled={isInputDisabled}\n status={\n hasUnattributedInvalidState || minViolation\n ? 'error'\n : undefined\n }\n statusMessage={\n minViolation?.type === 'outOfBounds'\n ? rule.outOfBoundsError(\n minViolation.min,\n minViolation.max,\n )\n : undefined\n }\n onChange={(value) =>\n update({\n charactersLimit: {\n ...data.charactersLimit,\n min: value ?? undefined,\n },\n })\n }\n />\n </FormField>\n </Box>\n <Box height=\"36px\" verticalAlign=\"middle\">\n <Text size=\"small\" secondary>\n {rule.separator}\n </Text>\n </Box>\n <Box width=\"100px\">\n <FormField stretchContent label={rule.maxLabel}>\n <NumberInput\n dataHook=\"field-validation-max-characters\"\n size=\"medium\"\n value={data.charactersLimit?.max}\n disabled={isInputDisabled}\n status={\n hasUnattributedInvalidState ||\n maxOutOfBoundsViolation ||\n maxBelowMinViolation\n ? 'error'\n : undefined\n }\n statusMessage={\n maxOutOfBoundsViolation?.type === 'outOfBounds'\n ? rule.outOfBoundsError(\n maxOutOfBoundsViolation.min,\n maxOutOfBoundsViolation.max,\n )\n : maxBelowMinViolation\n ? rule.maxBelowMinError\n : undefined\n }\n onChange={(value) =>\n update({\n charactersLimit: {\n ...data.charactersLimit,\n max: value ?? undefined,\n },\n })\n }\n />\n </FormField>\n </Box>\n </Box>\n )}\n {renderExclusiveRulesExplanation(\n 'charactersLimit',\n 'field-validation-characters-limit',\n rule.exclusiveRulesExplanation,\n )}\n </Box>\n );\n };\n\n const renderSpecificValues = (\n rule: SpecificValuesFieldValidationRuleConfig,\n ) => (\n <Box key=\"specificValues\" direction=\"vertical\" gap=\"SP2\">\n <RuleToggle\n dataHook=\"field-validation-specific-values\"\n checked={hasSpecificValues}\n disabled={\n isRuleDisabled('specificValues') ||\n isBlockedByExclusivity('specificValues')\n }\n label={rule.label}\n infoContent={rule.tooltip}\n onChange={() =>\n update({ specificValues: hasSpecificValues ? undefined : [] })\n }\n />\n {hasSpecificValues && (\n <Box direction=\"vertical\" gap=\"SP2\">\n {data.specificValues?.map((option, index) => {\n const optionViolation = errorViolations.find(\n (violation) =>\n violation.rule === 'specificValues' &&\n 'optionId' in violation &&\n violation.optionId === option.id,\n );\n return (\n <Box key={option.id} verticalAlign=\"middle\" gap=\"SP1\">\n <Box width=\"100%\">\n <Input\n dataHook={`field-validation-specific-value-${index}`}\n size=\"small\"\n value={option.value}\n disabled={isRuleDisabled('specificValues')}\n status={\n optionViolation || hasUnattributedInvalidState\n ? 'error'\n : undefined\n }\n statusMessage={\n optionViolation?.type === 'blank'\n ? rule.blankError\n : optionViolation?.type === 'duplicate'\n ? rule.duplicateError\n : undefined\n }\n onChange={(event) =>\n update({\n specificValues: data.specificValues?.map((item) =>\n item.id === option.id\n ? { ...item, value: event.target.value }\n : item,\n ),\n })\n }\n />\n </Box>\n <Tooltip content={rule.removeButton}>\n <IconButton\n dataHook={`field-validation-specific-value-remove-${index}`}\n size=\"tiny\"\n priority=\"secondary\"\n disabled={isRuleDisabled('specificValues')}\n ariaLabel={rule.removeButton}\n onClick={() =>\n update({\n specificValues: data.specificValues?.filter(\n ({ id }) => id !== option.id,\n ),\n })\n }\n >\n <DeleteSmall />\n </IconButton>\n </Tooltip>\n </Box>\n );\n })}\n <Box>\n <TextButton\n dataHook=\"field-validation-specific-value-add\"\n size=\"small\"\n prefixIcon={<AddSmall />}\n disabled={isRuleDisabled('specificValues')}\n onClick={() =>\n update({\n specificValues: [\n ...(data.specificValues ?? []),\n { id: uuid(), value: '' },\n ],\n })\n }\n >\n {rule.addButton}\n </TextButton>\n </Box>\n </Box>\n )}\n {renderExclusiveRulesExplanation(\n 'specificValues',\n 'field-validation-specific-values',\n rule.exclusiveRulesExplanation,\n )}\n </Box>\n );\n\n const renderPattern = (rule: PatternFieldValidationRuleConfig) => {\n const patternViolation = errorViolations.find(\n (violation) =>\n violation.rule === 'pattern' &&\n (violation.type === 'invalidPattern' ||\n violation.type === 'unsafePattern'),\n );\n const patternError =\n patternViolation?.type === 'unsafePattern'\n ? rule.unsafeError ?? rule.invalidError\n : rule.invalidError;\n\n return (\n <Box key=\"pattern\" direction=\"vertical\" gap=\"SP2\">\n <RuleToggle\n dataHook=\"field-validation-pattern\"\n checked={hasPattern}\n disabled={\n isRuleDisabled('pattern') || isBlockedByExclusivity('pattern')\n }\n label={rule.label}\n infoContent={rule.tooltip}\n onChange={() => update({ pattern: hasPattern ? undefined : '' })}\n />\n {hasPattern && (\n <FormField stretchContent label={rule.inputLabel}>\n <Input\n dataHook=\"field-validation-pattern-input\"\n size=\"small\"\n value={data.pattern}\n disabled={\n isRuleDisabled('pattern') || isInExclusiveConflict('pattern')\n }\n status={\n hasUnattributedInvalidState || patternViolation\n ? 'error'\n : undefined\n }\n statusMessage={patternViolation ? patternError : undefined}\n onChange={(event) => update({ pattern: event.target.value })}\n />\n </FormField>\n )}\n {renderExclusiveRulesExplanation(\n 'pattern',\n 'field-validation-pattern',\n rule.exclusiveRulesExplanation,\n )}\n </Box>\n );\n };\n\n const renderRule = (rule: FieldValidationRuleConfig) => {\n switch (rule.type) {\n case 'required':\n return renderRequired(rule);\n case 'charactersLimit':\n return renderCharactersLimit(rule);\n case 'specificValues':\n return renderSpecificValues(rule);\n case 'pattern':\n return renderPattern(rule);\n }\n };\n\n return (\n <Box dataHook={dataHook} direction=\"vertical\" gap=\"SP3\">\n {rules.map(renderRule)}\n </Box>\n );\n};\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["_react","_interopRequireDefault","require","_designSystem","_uuid","_fieldValidationSettings","_fieldValidationSettingsInputStCss","_jsxFileName","RuleToggle","dataHook","checked","disabled","label","infoContent","onChange","default","createElement","FormField","labelPlacement","labelSize","stretchContent","__self","__source","fileName","lineNumber","columnNumber","ToggleSwitch","size","FieldValidationSettingsInput","data","readOnly","invalid","rules","disabledRules","exclusiveSpecificValues","showValidationErrors","_rules$find","isRuleDisabled","rule","Boolean","includes","supportedRules","map","type","violations","getFieldValidationSettingsViolations","errorViolations","supportsSpecificValues","some","supportsCharactersLimit","supportsPattern","hasSpecificValues","specificValues","undefined","hasCharactersLimit","charactersLimit","hasPattern","pattern","hasUnattributedInvalidState","every","isBlockedByExclusivity","isInExclusiveConflict","violation","specificValuesExplanation","find","exclusiveRulesExplanation","hasRenderedSharedExplanation","renderExclusiveRulesExplanation","hook","explanation","text","Text","secondary","update","next","renderRequired","key","required","tooltip","renderCharactersLimit","_data$charactersLimit","_data$charactersLimit2","minViolation","bound","maxOutOfBoundsViolation","maxBelowMinViolation","isInputDisabled","Box","direction","gap","verticalAlign","width","minLabel","NumberInput","value","min","status","statusMessage","outOfBoundsError","max","height","separator","maxLabel","maxBelowMinError","renderSpecificValues","valuesViolation","hasValuesError","valuesError","emptyError","blankError","duplicateError","addValues","inputValues","knownValues","Set","trim","addedValues","filter","has","add","id","uuid","length","optionsLabel","optionsHint","MultiSelect","className","classes","specificValuesInput","tags","onManuallyInput","onRemoveTag","tagId","renderPattern","patternViolation","patternError","unsafeError","invalidError","inputLabel","Input","event","target","renderRule","exports"],"sources":["../../../../src/components/field-validation-settings/field-validation-settings-input.tsx"],"sourcesContent":["import React from 'react';\nimport {\n Box,\n FormField,\n Input,\n MultiSelect,\n NumberInput,\n Text,\n ToggleSwitch,\n} from '@wix/design-system';\nimport { v4 as uuid } from 'uuid';\nimport type { ControlledInputProps } from '../../types/controlled-input';\nimport type {\n CharactersLimitFieldValidationRuleConfig,\n FieldValidationRule,\n FieldValidationRuleConfig,\n FieldValidationSettingsValue,\n PatternFieldValidationRuleConfig,\n RequiredFieldValidationRuleConfig,\n SpecificValuesFieldValidationRuleConfig,\n} from '../../types/validation';\nimport { getFieldValidationSettingsViolations } from '../../validations/field-validation-settings';\nimport { classes } from './field-validation-settings-input.st.css.js';\n\nexport interface FieldValidationSettingsInputProps\n extends Omit<\n ControlledInputProps<FieldValidationSettingsValue>,\n 'autoFocus' | 'onBlur'\n > {\n rules: readonly FieldValidationRuleConfig[];\n /** Show error styling/messages, including caller-supplied `invalid` state.\n * Defaults to true. Does not alter validity or rule availability. */\n showValidationErrors?: boolean;\n /** Rules the caller has fixed and the user can't toggle, independent of `readOnly`. */\n disabledRules?: readonly FieldValidationRule[];\n /** Whether `specificValues` rejects `charactersLimit`/`pattern` on the same\n * field. Pass `false` for callers that let a field carry both. */\n exclusiveSpecificValues?: boolean;\n}\n\ninterface RuleToggleProps {\n dataHook: string;\n checked: boolean;\n disabled?: boolean;\n label: string;\n infoContent: string;\n onChange(): void;\n}\n\nconst RuleToggle = ({\n dataHook,\n checked,\n disabled,\n label,\n infoContent,\n onChange,\n}: RuleToggleProps) => (\n <FormField\n dataHook={dataHook}\n label={label}\n labelPlacement=\"right\"\n labelSize=\"small\"\n stretchContent={false}\n infoContent={infoContent}\n >\n <ToggleSwitch\n dataHook={`${dataHook}-toggle`}\n size=\"medium\"\n checked={checked}\n disabled={disabled}\n onChange={onChange}\n />\n </FormField>\n);\n\nexport const FieldValidationSettingsInput = ({\n data,\n onChange,\n readOnly,\n invalid,\n dataHook = 'field-validation-settings',\n rules,\n disabledRules,\n exclusiveSpecificValues = true,\n showValidationErrors = true,\n}: FieldValidationSettingsInputProps) => {\n const isRuleDisabled = (rule: FieldValidationRule) =>\n Boolean(readOnly) || Boolean(disabledRules?.includes(rule));\n const supportedRules = rules.map(({ type }) => type);\n const violations = getFieldValidationSettingsViolations(\n data,\n supportedRules,\n {\n exclusiveSpecificValues,\n },\n );\n const errorViolations = showValidationErrors ? violations : [];\n const supportsSpecificValues = rules.some(\n ({ type }) => type === 'specificValues',\n );\n const supportsCharactersLimit = rules.some(\n ({ type }) => type === 'charactersLimit',\n );\n const supportsPattern = rules.some(({ type }) => type === 'pattern');\n const hasSpecificValues =\n supportsSpecificValues && data.specificValues !== undefined;\n const hasCharactersLimit =\n supportsCharactersLimit && data.charactersLimit !== undefined;\n const hasPattern = supportsPattern && data.pattern !== undefined;\n // Other violations put an error on a control; `exclusiveRules` renders only as\n // text under the rule, so it leaves `invalid` unattributed.\n const hasUnattributedInvalidState =\n showValidationErrors &&\n Boolean(invalid) &&\n violations.every(({ type }) => type === 'exclusiveRules');\n const isBlockedByExclusivity = (rule: FieldValidationRule) => {\n if (!exclusiveSpecificValues) {\n return false;\n }\n switch (rule) {\n case 'charactersLimit':\n return hasSpecificValues && !hasCharactersLimit;\n case 'pattern':\n return hasSpecificValues && !hasPattern;\n case 'specificValues':\n return (hasCharactersLimit || hasPattern) && !hasSpecificValues;\n default:\n return false;\n }\n };\n // Widening `isBlockedByExclusivity` to cover the both-on state instead would\n // disable both toggles at once, leaving no way to switch either rule off.\n const isInExclusiveConflict = (rule: FieldValidationRule) =>\n violations.some(\n (violation) =>\n violation.rule === rule && violation.type === 'exclusiveRules',\n );\n const specificValuesExplanation = rules.find(\n (rule): rule is SpecificValuesFieldValidationRuleConfig =>\n rule.type === 'specificValues',\n )?.exclusiveRulesExplanation;\n // Callers written before the note moved under the blocked rule put a single\n // explanation on `specificValues`. Show it once rather than dropping it —\n // `specificValues` renders that same copy as its own, so both paths count.\n let hasRenderedSharedExplanation = false;\n const renderExclusiveRulesExplanation = (\n rule: FieldValidationRule,\n hook: string,\n explanation?: string,\n ) => {\n if (!isBlockedByExclusivity(rule) && !isInExclusiveConflict(rule)) {\n return null;\n }\n\n const text = explanation ?? specificValuesExplanation;\n\n if (!text) {\n return null;\n }\n\n if (text === specificValuesExplanation) {\n if (hasRenderedSharedExplanation) {\n return null;\n }\n hasRenderedSharedExplanation = true;\n }\n\n return (\n <Text size=\"tiny\" secondary dataHook={`${hook}-exclusive-help`}>\n {text}\n </Text>\n );\n };\n\n const update = (next: Partial<FieldValidationSettingsValue>) =>\n onChange({ ...data, ...next });\n\n const renderRequired = (rule: RequiredFieldValidationRuleConfig) => (\n <RuleToggle\n key=\"required\"\n dataHook=\"field-validation-required\"\n checked={Boolean(data.required)}\n disabled={isRuleDisabled('required')}\n label={rule.label}\n infoContent={rule.tooltip}\n onChange={() => update({ required: !data.required })}\n />\n );\n\n const renderCharactersLimit = (\n rule: CharactersLimitFieldValidationRuleConfig,\n ) => {\n const minViolation = errorViolations.find(\n (violation) =>\n violation.rule === 'charactersLimit' &&\n violation.type === 'outOfBounds' &&\n violation.bound === 'min',\n );\n const maxOutOfBoundsViolation = errorViolations.find(\n (violation) =>\n violation.rule === 'charactersLimit' &&\n violation.type === 'outOfBounds' &&\n violation.bound === 'max',\n );\n const maxBelowMinViolation = errorViolations.find(\n (violation) =>\n violation.rule === 'charactersLimit' &&\n violation.type === 'maxBelowMin',\n );\n const isInputDisabled =\n isRuleDisabled('charactersLimit') ||\n isInExclusiveConflict('charactersLimit');\n\n return (\n <Box key=\"charactersLimit\" direction=\"vertical\" gap=\"SP2\">\n <RuleToggle\n dataHook=\"field-validation-characters-limit\"\n checked={hasCharactersLimit}\n disabled={\n isRuleDisabled('charactersLimit') ||\n isBlockedByExclusivity('charactersLimit')\n }\n label={rule.label}\n infoContent={rule.tooltip}\n onChange={() =>\n update({ charactersLimit: hasCharactersLimit ? undefined : {} })\n }\n />\n {hasCharactersLimit && (\n <Box verticalAlign=\"bottom\" gap=\"SP2\">\n <Box width=\"100px\">\n <FormField stretchContent label={rule.minLabel}>\n <NumberInput\n dataHook=\"field-validation-min-characters\"\n size=\"medium\"\n value={data.charactersLimit?.min}\n disabled={isInputDisabled}\n status={\n hasUnattributedInvalidState || minViolation\n ? 'error'\n : undefined\n }\n statusMessage={\n minViolation?.type === 'outOfBounds'\n ? rule.outOfBoundsError(\n minViolation.min,\n minViolation.max,\n )\n : undefined\n }\n onChange={(value) =>\n update({\n charactersLimit: {\n ...data.charactersLimit,\n min: value ?? undefined,\n },\n })\n }\n />\n </FormField>\n </Box>\n <Box height=\"36px\" verticalAlign=\"middle\">\n <Text size=\"small\" secondary>\n {rule.separator}\n </Text>\n </Box>\n <Box width=\"100px\">\n <FormField stretchContent label={rule.maxLabel}>\n <NumberInput\n dataHook=\"field-validation-max-characters\"\n size=\"medium\"\n value={data.charactersLimit?.max}\n disabled={isInputDisabled}\n status={\n hasUnattributedInvalidState ||\n maxOutOfBoundsViolation ||\n maxBelowMinViolation\n ? 'error'\n : undefined\n }\n statusMessage={\n maxOutOfBoundsViolation?.type === 'outOfBounds'\n ? rule.outOfBoundsError(\n maxOutOfBoundsViolation.min,\n maxOutOfBoundsViolation.max,\n )\n : maxBelowMinViolation\n ? rule.maxBelowMinError\n : undefined\n }\n onChange={(value) =>\n update({\n charactersLimit: {\n ...data.charactersLimit,\n max: value ?? undefined,\n },\n })\n }\n />\n </FormField>\n </Box>\n </Box>\n )}\n {renderExclusiveRulesExplanation(\n 'charactersLimit',\n 'field-validation-characters-limit',\n rule.exclusiveRulesExplanation,\n )}\n </Box>\n );\n };\n\n const renderSpecificValues = (\n rule: SpecificValuesFieldValidationRuleConfig,\n ) => {\n const valuesViolation = errorViolations.find(\n (violation) =>\n violation.rule === 'specificValues' &&\n violation.type !== 'exclusiveRules',\n );\n const hasValuesError = Boolean(\n valuesViolation || hasUnattributedInvalidState,\n );\n let valuesError: string | undefined;\n if (valuesViolation?.type === 'empty') {\n valuesError = rule.emptyError;\n } else if (valuesViolation?.type === 'blank') {\n valuesError = rule.blankError;\n } else if (valuesViolation?.type === 'duplicate') {\n valuesError = rule.duplicateError;\n }\n const specificValues = data.specificValues ?? [];\n\n const addValues = (inputValues: string[]) => {\n const knownValues = new Set(\n specificValues.map(({ value }) => value.trim()),\n );\n const addedValues = inputValues\n .map((value) => value.trim())\n .filter((value) => {\n if (!value || knownValues.has(value)) {\n return false;\n }\n knownValues.add(value);\n return true;\n })\n .map((value) => ({ id: uuid(), value }));\n\n if (addedValues.length > 0) {\n update({ specificValues: [...specificValues, ...addedValues] });\n }\n };\n\n return (\n <Box key=\"specificValues\" direction=\"vertical\" gap=\"SP2\">\n <RuleToggle\n dataHook=\"field-validation-specific-values\"\n checked={hasSpecificValues}\n disabled={\n isRuleDisabled('specificValues') ||\n isBlockedByExclusivity('specificValues')\n }\n label={rule.label}\n infoContent={rule.tooltip}\n onChange={() =>\n update({ specificValues: hasSpecificValues ? undefined : [] })\n }\n />\n {hasSpecificValues && (\n <FormField\n dataHook=\"field-validation-specific-values-field\"\n label={rule.optionsLabel}\n labelSize=\"small\"\n stretchContent\n status={hasValuesError ? 'error' : undefined}\n statusMessage={hasValuesError ? valuesError : rule.optionsHint}\n >\n <MultiSelect\n dataHook=\"field-validation-specific-values-input\"\n className={classes.specificValuesInput}\n tags={specificValues.map(({ id, value }) => ({\n id,\n label: value,\n }))}\n disabled={isRuleDisabled('specificValues')}\n onManuallyInput={addValues}\n onRemoveTag={(tagId) =>\n update({\n specificValues: specificValues.filter(\n ({ id }) => id !== tagId,\n ),\n })\n }\n />\n </FormField>\n )}\n {renderExclusiveRulesExplanation(\n 'specificValues',\n 'field-validation-specific-values',\n rule.exclusiveRulesExplanation,\n )}\n </Box>\n );\n };\n\n const renderPattern = (rule: PatternFieldValidationRuleConfig) => {\n const patternViolation = errorViolations.find(\n (violation) =>\n violation.rule === 'pattern' &&\n (violation.type === 'invalidPattern' ||\n violation.type === 'unsafePattern'),\n );\n const patternError =\n patternViolation?.type === 'unsafePattern'\n ? rule.unsafeError ?? rule.invalidError\n : rule.invalidError;\n\n return (\n <Box key=\"pattern\" direction=\"vertical\" gap=\"SP2\">\n <RuleToggle\n dataHook=\"field-validation-pattern\"\n checked={hasPattern}\n disabled={\n isRuleDisabled('pattern') || isBlockedByExclusivity('pattern')\n }\n label={rule.label}\n infoContent={rule.tooltip}\n onChange={() => update({ pattern: hasPattern ? undefined : '' })}\n />\n {hasPattern && (\n <FormField stretchContent label={rule.inputLabel}>\n <Input\n dataHook=\"field-validation-pattern-input\"\n size=\"small\"\n value={data.pattern}\n disabled={\n isRuleDisabled('pattern') || isInExclusiveConflict('pattern')\n }\n status={\n hasUnattributedInvalidState || patternViolation\n ? 'error'\n : undefined\n }\n statusMessage={patternViolation ? patternError : undefined}\n onChange={(event) => update({ pattern: event.target.value })}\n />\n </FormField>\n )}\n {renderExclusiveRulesExplanation(\n 'pattern',\n 'field-validation-pattern',\n rule.exclusiveRulesExplanation,\n )}\n </Box>\n );\n };\n\n const renderRule = (rule: FieldValidationRuleConfig) => {\n switch (rule.type) {\n case 'required':\n return renderRequired(rule);\n case 'charactersLimit':\n return renderCharactersLimit(rule);\n case 'specificValues':\n return renderSpecificValues(rule);\n case 'pattern':\n return renderPattern(rule);\n }\n };\n\n return (\n <Box dataHook={dataHook} direction=\"vertical\" gap=\"SP3\">\n {rules.map(renderRule)}\n </Box>\n );\n};\n"],"mappings":";;;;;AAAA,IAAAA,MAAA,GAAAC,sBAAA,CAAAC,OAAA;AACA,IAAAC,aAAA,GAAAD,OAAA;AASA,IAAAE,KAAA,GAAAF,OAAA;AAWA,IAAAG,wBAAA,GAAAH,OAAA;AACA,IAAAI,kCAAA,GAAAJ,OAAA;AAAsE,IAAAK,YAAA;AA2BtE,MAAMC,UAAU,GAAGA,CAAC;EAClBC,QAAQ;EACRC,OAAO;EACPC,QAAQ;EACRC,KAAK;EACLC,WAAW;EACXC;AACe,CAAC,kBAChBd,MAAA,CAAAe,OAAA,CAAAC,aAAA,CAACb,aAAA,CAAAc,SAAS;EACRR,QAAQ,EAAEA,QAAS;EACnBG,KAAK,EAAEA,KAAM;EACbM,cAAc,EAAC,OAAO;EACtBC,SAAS,EAAC,OAAO;EACjBC,cAAc,EAAE,KAAM;EACtBP,WAAW,EAAEA,WAAY;EAAAQ,MAAA;EAAAC,QAAA;IAAAC,QAAA,EAAAhB,YAAA;IAAAiB,UAAA;IAAAC,YAAA;EAAA;AAAA,gBAEzBzB,MAAA,CAAAe,OAAA,CAAAC,aAAA,CAACb,aAAA,CAAAuB,YAAY;EACXjB,QAAQ,EAAE,GAAGA,QAAQ,SAAU;EAC/BkB,IAAI,EAAC,QAAQ;EACbjB,OAAO,EAAEA,OAAQ;EACjBC,QAAQ,EAAEA,QAAS;EACnBG,QAAQ,EAAEA,QAAS;EAAAO,MAAA;EAAAC,QAAA;IAAAC,QAAA,EAAAhB,YAAA;IAAAiB,UAAA;IAAAC,YAAA;EAAA;AAAA,CACpB,CACQ,CACZ;AAEM,MAAMG,4BAA4B,GAAGA,CAAC;EAC3CC,IAAI;EACJf,QAAQ;EACRgB,QAAQ;EACRC,OAAO;EACPtB,QAAQ,GAAG,2BAA2B;EACtCuB,KAAK;EACLC,aAAa;EACbC,uBAAuB,GAAG,IAAI;EAC9BC,oBAAoB,GAAG;AACU,CAAC,KAAK;EAAA,IAAAC,WAAA;EACvC,MAAMC,cAAc,GAAIC,IAAyB,IAC/CC,OAAO,CAACT,QAAQ,CAAC,IAAIS,OAAO,CAACN,aAAa,oBAAbA,aAAa,CAAEO,QAAQ,CAACF,IAAI,CAAC,CAAC;EAC7D,MAAMG,cAAc,GAAGT,KAAK,CAACU,GAAG,CAAC,CAAC;IAAEC;EAAK,CAAC,KAAKA,IAAI,CAAC;EACpD,MAAMC,UAAU,GAAG,IAAAC,6DAAoC,EACrDhB,IAAI,EACJY,cAAc,EACd;IACEP;EACF,CACF,CAAC;EACD,MAAMY,eAAe,GAAGX,oBAAoB,GAAGS,UAAU,GAAG,EAAE;EAC9D,MAAMG,sBAAsB,GAAGf,KAAK,CAACgB,IAAI,CACvC,CAAC;IAAEL;EAAK,CAAC,KAAKA,IAAI,KAAK,gBACzB,CAAC;EACD,MAAMM,uBAAuB,GAAGjB,KAAK,CAACgB,IAAI,CACxC,CAAC;IAAEL;EAAK,CAAC,KAAKA,IAAI,KAAK,iBACzB,CAAC;EACD,MAAMO,eAAe,GAAGlB,KAAK,CAACgB,IAAI,CAAC,CAAC;IAAEL;EAAK,CAAC,KAAKA,IAAI,KAAK,SAAS,CAAC;EACpE,MAAMQ,iBAAiB,GACrBJ,sBAAsB,IAAIlB,IAAI,CAACuB,cAAc,KAAKC,SAAS;EAC7D,MAAMC,kBAAkB,GACtBL,uBAAuB,IAAIpB,IAAI,CAAC0B,eAAe,KAAKF,SAAS;EAC/D,MAAMG,UAAU,GAAGN,eAAe,IAAIrB,IAAI,CAAC4B,OAAO,KAAKJ,SAAS;EAChE;EACA;EACA,MAAMK,2BAA2B,GAC/BvB,oBAAoB,IACpBI,OAAO,CAACR,OAAO,CAAC,IAChBa,UAAU,CAACe,KAAK,CAAC,CAAC;IAAEhB;EAAK,CAAC,KAAKA,IAAI,KAAK,gBAAgB,CAAC;EAC3D,MAAMiB,sBAAsB,GAAItB,IAAyB,IAAK;IAC5D,IAAI,CAACJ,uBAAuB,EAAE;MAC5B,OAAO,KAAK;IACd;IACA,QAAQI,IAAI;MACV,KAAK,iBAAiB;QACpB,OAAOa,iBAAiB,IAAI,CAACG,kBAAkB;MACjD,KAAK,SAAS;QACZ,OAAOH,iBAAiB,IAAI,CAACK,UAAU;MACzC,KAAK,gBAAgB;QACnB,OAAO,CAACF,kBAAkB,IAAIE,UAAU,KAAK,CAACL,iBAAiB;MACjE;QACE,OAAO,KAAK;IAChB;EACF,CAAC;EACD;EACA;EACA,MAAMU,qBAAqB,GAAIvB,IAAyB,IACtDM,UAAU,CAACI,IAAI,CACZc,SAAS,IACRA,SAAS,CAACxB,IAAI,KAAKA,IAAI,IAAIwB,SAAS,CAACnB,IAAI,KAAK,gBAClD,CAAC;EACH,MAAMoB,yBAAyB,IAAA3B,WAAA,GAAGJ,KAAK,CAACgC,IAAI,CACzC1B,IAAI,IACHA,IAAI,CAACK,IAAI,KAAK,gBAClB,CAAC,qBAHiCP,WAAA,CAG/B6B,yBAAyB;EAC5B;EACA;EACA;EACA,IAAIC,4BAA4B,GAAG,KAAK;EACxC,MAAMC,+BAA+B,GAAGA,CACtC7B,IAAyB,EACzB8B,IAAY,EACZC,WAAoB,KACjB;IACH,IAAI,CAACT,sBAAsB,CAACtB,IAAI,CAAC,IAAI,CAACuB,qBAAqB,CAACvB,IAAI,CAAC,EAAE;MACjE,OAAO,IAAI;IACb;IAEA,MAAMgC,IAAI,GAAGD,WAAW,IAAIN,yBAAyB;IAErD,IAAI,CAACO,IAAI,EAAE;MACT,OAAO,IAAI;IACb;IAEA,IAAIA,IAAI,KAAKP,yBAAyB,EAAE;MACtC,IAAIG,4BAA4B,EAAE;QAChC,OAAO,IAAI;MACb;MACAA,4BAA4B,GAAG,IAAI;IACrC;IAEA,oBACElE,MAAA,CAAAe,OAAA,CAAAC,aAAA,CAACb,aAAA,CAAAoE,IAAI;MAAC5C,IAAI,EAAC,MAAM;MAAC6C,SAAS;MAAC/D,QAAQ,EAAE,GAAG2D,IAAI,iBAAkB;MAAA/C,MAAA;MAAAC,QAAA;QAAAC,QAAA,EAAAhB,YAAA;QAAAiB,UAAA;QAAAC,YAAA;MAAA;IAAA,GAC5D6C,IACG,CAAC;EAEX,CAAC;EAED,MAAMG,MAAM,GAAIC,IAA2C,IACzD5D,QAAQ,CAAC;IAAE,GAAGe,IAAI;IAAE,GAAG6C;EAAK,CAAC,CAAC;EAEhC,MAAMC,cAAc,GAAIrC,IAAuC,iBAC7DtC,MAAA,CAAAe,OAAA,CAAAC,aAAA,CAACR,UAAU;IACToE,GAAG,EAAC,UAAU;IACdnE,QAAQ,EAAC,2BAA2B;IACpCC,OAAO,EAAE6B,OAAO,CAACV,IAAI,CAACgD,QAAQ,CAAE;IAChClE,QAAQ,EAAE0B,cAAc,CAAC,UAAU,CAAE;IACrCzB,KAAK,EAAE0B,IAAI,CAAC1B,KAAM;IAClBC,WAAW,EAAEyB,IAAI,CAACwC,OAAQ;IAC1BhE,QAAQ,EAAEA,CAAA,KAAM2D,MAAM,CAAC;MAAEI,QAAQ,EAAE,CAAChD,IAAI,CAACgD;IAAS,CAAC,CAAE;IAAAxD,MAAA;IAAAC,QAAA;MAAAC,QAAA,EAAAhB,YAAA;MAAAiB,UAAA;MAAAC,YAAA;IAAA;EAAA,CACtD,CACF;EAED,MAAMsD,qBAAqB,GACzBzC,IAA8C,IAC3C;IAAA,IAAA0C,qBAAA,EAAAC,sBAAA;IACH,MAAMC,YAAY,GAAGpC,eAAe,CAACkB,IAAI,CACtCF,SAAS,IACRA,SAAS,CAACxB,IAAI,KAAK,iBAAiB,IACpCwB,SAAS,CAACnB,IAAI,KAAK,aAAa,IAChCmB,SAAS,CAACqB,KAAK,KAAK,KACxB,CAAC;IACD,MAAMC,uBAAuB,GAAGtC,eAAe,CAACkB,IAAI,CACjDF,SAAS,IACRA,SAAS,CAACxB,IAAI,KAAK,iBAAiB,IACpCwB,SAAS,CAACnB,IAAI,KAAK,aAAa,IAChCmB,SAAS,CAACqB,KAAK,KAAK,KACxB,CAAC;IACD,MAAME,oBAAoB,GAAGvC,eAAe,CAACkB,IAAI,CAC9CF,SAAS,IACRA,SAAS,CAACxB,IAAI,KAAK,iBAAiB,IACpCwB,SAAS,CAACnB,IAAI,KAAK,aACvB,CAAC;IACD,MAAM2C,eAAe,GACnBjD,cAAc,CAAC,iBAAiB,CAAC,IACjCwB,qBAAqB,CAAC,iBAAiB,CAAC;IAE1C,oBACE7D,MAAA,CAAAe,OAAA,CAAAC,aAAA,CAACb,aAAA,CAAAoF,GAAG;MAACX,GAAG,EAAC,iBAAiB;MAACY,SAAS,EAAC,UAAU;MAACC,GAAG,EAAC,KAAK;MAAApE,MAAA;MAAAC,QAAA;QAAAC,QAAA,EAAAhB,YAAA;QAAAiB,UAAA;QAAAC,YAAA;MAAA;IAAA,gBACvDzB,MAAA,CAAAe,OAAA,CAAAC,aAAA,CAACR,UAAU;MACTC,QAAQ,EAAC,mCAAmC;MAC5CC,OAAO,EAAE4C,kBAAmB;MAC5B3C,QAAQ,EACN0B,cAAc,CAAC,iBAAiB,CAAC,IACjCuB,sBAAsB,CAAC,iBAAiB,CACzC;MACDhD,KAAK,EAAE0B,IAAI,CAAC1B,KAAM;MAClBC,WAAW,EAAEyB,IAAI,CAACwC,OAAQ;MAC1BhE,QAAQ,EAAEA,CAAA,KACR2D,MAAM,CAAC;QAAElB,eAAe,EAAED,kBAAkB,GAAGD,SAAS,GAAG,CAAC;MAAE,CAAC,CAChE;MAAAhC,MAAA;MAAAC,QAAA;QAAAC,QAAA,EAAAhB,YAAA;QAAAiB,UAAA;QAAAC,YAAA;MAAA;IAAA,CACF,CAAC,EACD6B,kBAAkB,iBACjBtD,MAAA,CAAAe,OAAA,CAAAC,aAAA,CAACb,aAAA,CAAAoF,GAAG;MAACG,aAAa,EAAC,QAAQ;MAACD,GAAG,EAAC,KAAK;MAAApE,MAAA;MAAAC,QAAA;QAAAC,QAAA,EAAAhB,YAAA;QAAAiB,UAAA;QAAAC,YAAA;MAAA;IAAA,gBACnCzB,MAAA,CAAAe,OAAA,CAAAC,aAAA,CAACb,aAAA,CAAAoF,GAAG;MAACI,KAAK,EAAC,OAAO;MAAAtE,MAAA;MAAAC,QAAA;QAAAC,QAAA,EAAAhB,YAAA;QAAAiB,UAAA;QAAAC,YAAA;MAAA;IAAA,gBAChBzB,MAAA,CAAAe,OAAA,CAAAC,aAAA,CAACb,aAAA,CAAAc,SAAS;MAACG,cAAc;MAACR,KAAK,EAAE0B,IAAI,CAACsD,QAAS;MAAAvE,MAAA;MAAAC,QAAA;QAAAC,QAAA,EAAAhB,YAAA;QAAAiB,UAAA;QAAAC,YAAA;MAAA;IAAA,gBAC7CzB,MAAA,CAAAe,OAAA,CAAAC,aAAA,CAACb,aAAA,CAAA0F,WAAW;MACVpF,QAAQ,EAAC,iCAAiC;MAC1CkB,IAAI,EAAC,QAAQ;MACbmE,KAAK,GAAAd,qBAAA,GAAEnD,IAAI,CAAC0B,eAAe,qBAApByB,qBAAA,CAAsBe,GAAI;MACjCpF,QAAQ,EAAE2E,eAAgB;MAC1BU,MAAM,EACJtC,2BAA2B,IAAIwB,YAAY,GACvC,OAAO,GACP7B,SACL;MACD4C,aAAa,EACX,CAAAf,YAAY,oBAAZA,YAAY,CAAEvC,IAAI,MAAK,aAAa,GAChCL,IAAI,CAAC4D,gBAAgB,CACnBhB,YAAY,CAACa,GAAG,EAChBb,YAAY,CAACiB,GACf,CAAC,GACD9C,SACL;MACDvC,QAAQ,EAAGgF,KAAK,IACdrB,MAAM,CAAC;QACLlB,eAAe,EAAE;UACf,GAAG1B,IAAI,CAAC0B,eAAe;UACvBwC,GAAG,EAAED,KAAK,IAAIzC;QAChB;MACF,CAAC,CACF;MAAAhC,MAAA;MAAAC,QAAA;QAAAC,QAAA,EAAAhB,YAAA;QAAAiB,UAAA;QAAAC,YAAA;MAAA;IAAA,CACF,CACQ,CACR,CAAC,eACNzB,MAAA,CAAAe,OAAA,CAAAC,aAAA,CAACb,aAAA,CAAAoF,GAAG;MAACa,MAAM,EAAC,MAAM;MAACV,aAAa,EAAC,QAAQ;MAAArE,MAAA;MAAAC,QAAA;QAAAC,QAAA,EAAAhB,YAAA;QAAAiB,UAAA;QAAAC,YAAA;MAAA;IAAA,gBACvCzB,MAAA,CAAAe,OAAA,CAAAC,aAAA,CAACb,aAAA,CAAAoE,IAAI;MAAC5C,IAAI,EAAC,OAAO;MAAC6C,SAAS;MAAAnD,MAAA;MAAAC,QAAA;QAAAC,QAAA,EAAAhB,YAAA;QAAAiB,UAAA;QAAAC,YAAA;MAAA;IAAA,GACzBa,IAAI,CAAC+D,SACF,CACH,CAAC,eACNrG,MAAA,CAAAe,OAAA,CAAAC,aAAA,CAACb,aAAA,CAAAoF,GAAG;MAACI,KAAK,EAAC,OAAO;MAAAtE,MAAA;MAAAC,QAAA;QAAAC,QAAA,EAAAhB,YAAA;QAAAiB,UAAA;QAAAC,YAAA;MAAA;IAAA,gBAChBzB,MAAA,CAAAe,OAAA,CAAAC,aAAA,CAACb,aAAA,CAAAc,SAAS;MAACG,cAAc;MAACR,KAAK,EAAE0B,IAAI,CAACgE,QAAS;MAAAjF,MAAA;MAAAC,QAAA;QAAAC,QAAA,EAAAhB,YAAA;QAAAiB,UAAA;QAAAC,YAAA;MAAA;IAAA,gBAC7CzB,MAAA,CAAAe,OAAA,CAAAC,aAAA,CAACb,aAAA,CAAA0F,WAAW;MACVpF,QAAQ,EAAC,iCAAiC;MAC1CkB,IAAI,EAAC,QAAQ;MACbmE,KAAK,GAAAb,sBAAA,GAAEpD,IAAI,CAAC0B,eAAe,qBAApB0B,sBAAA,CAAsBkB,GAAI;MACjCxF,QAAQ,EAAE2E,eAAgB;MAC1BU,MAAM,EACJtC,2BAA2B,IAC3B0B,uBAAuB,IACvBC,oBAAoB,GAChB,OAAO,GACPhC,SACL;MACD4C,aAAa,EACX,CAAAb,uBAAuB,oBAAvBA,uBAAuB,CAAEzC,IAAI,MAAK,aAAa,GAC3CL,IAAI,CAAC4D,gBAAgB,CACnBd,uBAAuB,CAACW,GAAG,EAC3BX,uBAAuB,CAACe,GAC1B,CAAC,GACDd,oBAAoB,GACpB/C,IAAI,CAACiE,gBAAgB,GACrBlD,SACL;MACDvC,QAAQ,EAAGgF,KAAK,IACdrB,MAAM,CAAC;QACLlB,eAAe,EAAE;UACf,GAAG1B,IAAI,CAAC0B,eAAe;UACvB4C,GAAG,EAAEL,KAAK,IAAIzC;QAChB;MACF,CAAC,CACF;MAAAhC,MAAA;MAAAC,QAAA;QAAAC,QAAA,EAAAhB,YAAA;QAAAiB,UAAA;QAAAC,YAAA;MAAA;IAAA,CACF,CACQ,CACR,CACF,CACN,EACA0C,+BAA+B,CAC9B,iBAAiB,EACjB,mCAAmC,EACnC7B,IAAI,CAAC2B,yBACP,CACG,CAAC;EAEV,CAAC;EAED,MAAMuC,oBAAoB,GACxBlE,IAA6C,IAC1C;IACH,MAAMmE,eAAe,GAAG3D,eAAe,CAACkB,IAAI,CACzCF,SAAS,IACRA,SAAS,CAACxB,IAAI,KAAK,gBAAgB,IACnCwB,SAAS,CAACnB,IAAI,KAAK,gBACvB,CAAC;IACD,MAAM+D,cAAc,GAAGnE,OAAO,CAC5BkE,eAAe,IAAI/C,2BACrB,CAAC;IACD,IAAIiD,WAA+B;IACnC,IAAI,CAAAF,eAAe,oBAAfA,eAAe,CAAE9D,IAAI,MAAK,OAAO,EAAE;MACrCgE,WAAW,GAAGrE,IAAI,CAACsE,UAAU;IAC/B,CAAC,MAAM,IAAI,CAAAH,eAAe,oBAAfA,eAAe,CAAE9D,IAAI,MAAK,OAAO,EAAE;MAC5CgE,WAAW,GAAGrE,IAAI,CAACuE,UAAU;IAC/B,CAAC,MAAM,IAAI,CAAAJ,eAAe,oBAAfA,eAAe,CAAE9D,IAAI,MAAK,WAAW,EAAE;MAChDgE,WAAW,GAAGrE,IAAI,CAACwE,cAAc;IACnC;IACA,MAAM1D,cAAc,GAAGvB,IAAI,CAACuB,cAAc,IAAI,EAAE;IAEhD,MAAM2D,SAAS,GAAIC,WAAqB,IAAK;MAC3C,MAAMC,WAAW,GAAG,IAAIC,GAAG,CACzB9D,cAAc,CAACV,GAAG,CAAC,CAAC;QAAEoD;MAAM,CAAC,KAAKA,KAAK,CAACqB,IAAI,CAAC,CAAC,CAChD,CAAC;MACD,MAAMC,WAAW,GAAGJ,WAAW,CAC5BtE,GAAG,CAAEoD,KAAK,IAAKA,KAAK,CAACqB,IAAI,CAAC,CAAC,CAAC,CAC5BE,MAAM,CAAEvB,KAAK,IAAK;QACjB,IAAI,CAACA,KAAK,IAAImB,WAAW,CAACK,GAAG,CAACxB,KAAK,CAAC,EAAE;UACpC,OAAO,KAAK;QACd;QACAmB,WAAW,CAACM,GAAG,CAACzB,KAAK,CAAC;QACtB,OAAO,IAAI;MACb,CAAC,CAAC,CACDpD,GAAG,CAAEoD,KAAK,KAAM;QAAE0B,EAAE,EAAE,IAAAC,QAAI,EAAC,CAAC;QAAE3B;MAAM,CAAC,CAAC,CAAC;MAE1C,IAAIsB,WAAW,CAACM,MAAM,GAAG,CAAC,EAAE;QAC1BjD,MAAM,CAAC;UAAErB,cAAc,EAAE,CAAC,GAAGA,cAAc,EAAE,GAAGgE,WAAW;QAAE,CAAC,CAAC;MACjE;IACF,CAAC;IAED,oBACEpH,MAAA,CAAAe,OAAA,CAAAC,aAAA,CAACb,aAAA,CAAAoF,GAAG;MAACX,GAAG,EAAC,gBAAgB;MAACY,SAAS,EAAC,UAAU;MAACC,GAAG,EAAC,KAAK;MAAApE,MAAA;MAAAC,QAAA;QAAAC,QAAA,EAAAhB,YAAA;QAAAiB,UAAA;QAAAC,YAAA;MAAA;IAAA,gBACtDzB,MAAA,CAAAe,OAAA,CAAAC,aAAA,CAACR,UAAU;MACTC,QAAQ,EAAC,kCAAkC;MAC3CC,OAAO,EAAEyC,iBAAkB;MAC3BxC,QAAQ,EACN0B,cAAc,CAAC,gBAAgB,CAAC,IAChCuB,sBAAsB,CAAC,gBAAgB,CACxC;MACDhD,KAAK,EAAE0B,IAAI,CAAC1B,KAAM;MAClBC,WAAW,EAAEyB,IAAI,CAACwC,OAAQ;MAC1BhE,QAAQ,EAAEA,CAAA,KACR2D,MAAM,CAAC;QAAErB,cAAc,EAAED,iBAAiB,GAAGE,SAAS,GAAG;MAAG,CAAC,CAC9D;MAAAhC,MAAA;MAAAC,QAAA;QAAAC,QAAA,EAAAhB,YAAA;QAAAiB,UAAA;QAAAC,YAAA;MAAA;IAAA,CACF,CAAC,EACD0B,iBAAiB,iBAChBnD,MAAA,CAAAe,OAAA,CAAAC,aAAA,CAACb,aAAA,CAAAc,SAAS;MACRR,QAAQ,EAAC,wCAAwC;MACjDG,KAAK,EAAE0B,IAAI,CAACqF,YAAa;MACzBxG,SAAS,EAAC,OAAO;MACjBC,cAAc;MACd4E,MAAM,EAAEU,cAAc,GAAG,OAAO,GAAGrD,SAAU;MAC7C4C,aAAa,EAAES,cAAc,GAAGC,WAAW,GAAGrE,IAAI,CAACsF,WAAY;MAAAvG,MAAA;MAAAC,QAAA;QAAAC,QAAA,EAAAhB,YAAA;QAAAiB,UAAA;QAAAC,YAAA;MAAA;IAAA,gBAE/DzB,MAAA,CAAAe,OAAA,CAAAC,aAAA,CAACb,aAAA,CAAA0H,WAAW;MACVpH,QAAQ,EAAC,wCAAwC;MACjDqH,SAAS,EAAEC,0CAAO,CAACC,mBAAoB;MACvCC,IAAI,EAAE7E,cAAc,CAACV,GAAG,CAAC,CAAC;QAAE8E,EAAE;QAAE1B;MAAM,CAAC,MAAM;QAC3C0B,EAAE;QACF5G,KAAK,EAAEkF;MACT,CAAC,CAAC,CAAE;MACJnF,QAAQ,EAAE0B,cAAc,CAAC,gBAAgB,CAAE;MAC3C6F,eAAe,EAAEnB,SAAU;MAC3BoB,WAAW,EAAGC,KAAK,IACjB3D,MAAM,CAAC;QACLrB,cAAc,EAAEA,cAAc,CAACiE,MAAM,CACnC,CAAC;UAAEG;QAAG,CAAC,KAAKA,EAAE,KAAKY,KACrB;MACF,CAAC,CACF;MAAA/G,MAAA;MAAAC,QAAA;QAAAC,QAAA,EAAAhB,YAAA;QAAAiB,UAAA;QAAAC,YAAA;MAAA;IAAA,CACF,CACQ,CACZ,EACA0C,+BAA+B,CAC9B,gBAAgB,EAChB,kCAAkC,EAClC7B,IAAI,CAAC2B,yBACP,CACG,CAAC;EAEV,CAAC;EAED,MAAMoE,aAAa,GAAI/F,IAAsC,IAAK;IAChE,MAAMgG,gBAAgB,GAAGxF,eAAe,CAACkB,IAAI,CAC1CF,SAAS,IACRA,SAAS,CAACxB,IAAI,KAAK,SAAS,KAC3BwB,SAAS,CAACnB,IAAI,KAAK,gBAAgB,IAClCmB,SAAS,CAACnB,IAAI,KAAK,eAAe,CACxC,CAAC;IACD,MAAM4F,YAAY,GAChB,CAAAD,gBAAgB,oBAAhBA,gBAAgB,CAAE3F,IAAI,MAAK,eAAe,GACtCL,IAAI,CAACkG,WAAW,IAAIlG,IAAI,CAACmG,YAAY,GACrCnG,IAAI,CAACmG,YAAY;IAEvB,oBACEzI,MAAA,CAAAe,OAAA,CAAAC,aAAA,CAACb,aAAA,CAAAoF,GAAG;MAACX,GAAG,EAAC,SAAS;MAACY,SAAS,EAAC,UAAU;MAACC,GAAG,EAAC,KAAK;MAAApE,MAAA;MAAAC,QAAA;QAAAC,QAAA,EAAAhB,YAAA;QAAAiB,UAAA;QAAAC,YAAA;MAAA;IAAA,gBAC/CzB,MAAA,CAAAe,OAAA,CAAAC,aAAA,CAACR,UAAU;MACTC,QAAQ,EAAC,0BAA0B;MACnCC,OAAO,EAAE8C,UAAW;MACpB7C,QAAQ,EACN0B,cAAc,CAAC,SAAS,CAAC,IAAIuB,sBAAsB,CAAC,SAAS,CAC9D;MACDhD,KAAK,EAAE0B,IAAI,CAAC1B,KAAM;MAClBC,WAAW,EAAEyB,IAAI,CAACwC,OAAQ;MAC1BhE,QAAQ,EAAEA,CAAA,KAAM2D,MAAM,CAAC;QAAEhB,OAAO,EAAED,UAAU,GAAGH,SAAS,GAAG;MAAG,CAAC,CAAE;MAAAhC,MAAA;MAAAC,QAAA;QAAAC,QAAA,EAAAhB,YAAA;QAAAiB,UAAA;QAAAC,YAAA;MAAA;IAAA,CAClE,CAAC,EACD+B,UAAU,iBACTxD,MAAA,CAAAe,OAAA,CAAAC,aAAA,CAACb,aAAA,CAAAc,SAAS;MAACG,cAAc;MAACR,KAAK,EAAE0B,IAAI,CAACoG,UAAW;MAAArH,MAAA;MAAAC,QAAA;QAAAC,QAAA,EAAAhB,YAAA;QAAAiB,UAAA;QAAAC,YAAA;MAAA;IAAA,gBAC/CzB,MAAA,CAAAe,OAAA,CAAAC,aAAA,CAACb,aAAA,CAAAwI,KAAK;MACJlI,QAAQ,EAAC,gCAAgC;MACzCkB,IAAI,EAAC,OAAO;MACZmE,KAAK,EAAEjE,IAAI,CAAC4B,OAAQ;MACpB9C,QAAQ,EACN0B,cAAc,CAAC,SAAS,CAAC,IAAIwB,qBAAqB,CAAC,SAAS,CAC7D;MACDmC,MAAM,EACJtC,2BAA2B,IAAI4E,gBAAgB,GAC3C,OAAO,GACPjF,SACL;MACD4C,aAAa,EAAEqC,gBAAgB,GAAGC,YAAY,GAAGlF,SAAU;MAC3DvC,QAAQ,EAAG8H,KAAK,IAAKnE,MAAM,CAAC;QAAEhB,OAAO,EAAEmF,KAAK,CAACC,MAAM,CAAC/C;MAAM,CAAC,CAAE;MAAAzE,MAAA;MAAAC,QAAA;QAAAC,QAAA,EAAAhB,YAAA;QAAAiB,UAAA;QAAAC,YAAA;MAAA;IAAA,CAC9D,CACQ,CACZ,EACA0C,+BAA+B,CAC9B,SAAS,EACT,0BAA0B,EAC1B7B,IAAI,CAAC2B,yBACP,CACG,CAAC;EAEV,CAAC;EAED,MAAM6E,UAAU,GAAIxG,IAA+B,IAAK;IACtD,QAAQA,IAAI,CAACK,IAAI;MACf,KAAK,UAAU;QACb,OAAOgC,cAAc,CAACrC,IAAI,CAAC;MAC7B,KAAK,iBAAiB;QACpB,OAAOyC,qBAAqB,CAACzC,IAAI,CAAC;MACpC,KAAK,gBAAgB;QACnB,OAAOkE,oBAAoB,CAAClE,IAAI,CAAC;MACnC,KAAK,SAAS;QACZ,OAAO+F,aAAa,CAAC/F,IAAI,CAAC;IAC9B;EACF,CAAC;EAED,oBACEtC,MAAA,CAAAe,OAAA,CAAAC,aAAA,CAACb,aAAA,CAAAoF,GAAG;IAAC9E,QAAQ,EAAEA,QAAS;IAAC+E,SAAS,EAAC,UAAU;IAACC,GAAG,EAAC,KAAK;IAAApE,MAAA;IAAAC,QAAA;MAAAC,QAAA,EAAAhB,YAAA;MAAAiB,UAAA;MAAAC,YAAA;IAAA;EAAA,GACpDO,KAAK,CAACU,GAAG,CAACoG,UAAU,CAClB,CAAC;AAEV,CAAC;AAACC,OAAA,CAAAnH,4BAAA,GAAAA,4BAAA","ignoreList":[]}
@@ -0,0 +1,10 @@
1
+ /* These invisible WDS elements overflow the tags box and give it a horizontal scrollbar. */
2
+ /* The border layer sticks out 1px. */
3
+ .specificValuesInput :global(.wds-input-with-tags__input)::after {
4
+ inset: 0;
5
+ }
6
+
7
+ /* The width sizer keeps the last typed text after it becomes tags, so a long comma list stays one unbreakable line. */
8
+ .specificValuesInput :global(.wds-input-with-tags__hidden-div) {
9
+ overflow: hidden;
10
+ }
@@ -0,0 +1,23 @@
1
+ "use strict";
2
+
3
+ exports.__esModule = true;
4
+ exports.vars = exports.style = exports.stVars = exports.st = exports.namespace = exports.layers = exports.keyframes = exports.cssStates = exports.containers = exports.classes = void 0;
5
+ var _stylableEsmRuntime = require("../../stylable-esm-runtime.js");
6
+ // @ts-nocheck
7
+
8
+ var _namespace_ = "fieldvalidationsettingsinput2294766599";
9
+ var _style_ = _stylableEsmRuntime.classesRuntime.bind(null, _namespace_);
10
+ var cssStates = exports.cssStates = _stylableEsmRuntime.statesRuntime.bind(null, _namespace_);
11
+ var style = exports.style = _style_;
12
+ var st = exports.st = _style_;
13
+ var namespace = exports.namespace = _namespace_;
14
+ var classes = exports.classes = {
15
+ "root": "fieldvalidationsettingsinput2294766599__root",
16
+ "specificValuesInput": "fieldvalidationsettingsinput2294766599__specificValuesInput"
17
+ };
18
+ var keyframes = exports.keyframes = {};
19
+ var layers = exports.layers = {};
20
+ var containers = exports.containers = {};
21
+ var stVars = exports.stVars = {};
22
+ var vars = exports.vars = {};
23
+ //# sourceMappingURL=field-validation-settings-input.st.css.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["_stylableEsmRuntime","require","_namespace_","_style_","classesRuntime","bind","cssStates","exports","statesRuntime","style","st","namespace","classes","keyframes","layers","containers","stVars","vars"],"sources":["../../../../src/components/field-validation-settings/field-validation-settings-input.st.css.ts"],"sourcesContent":["// @ts-nocheck\n\n\nimport { classesRuntime, statesRuntime } from \"../../stylable-esm-runtime.js\";\n\n\n\nvar _namespace_ = \"fieldvalidationsettingsinput2294766599\";\nvar _style_ = classesRuntime.bind(null, _namespace_);\n\nexport var cssStates = statesRuntime.bind(null, _namespace_);\nexport var style: import(\"@stylable/runtime\").STFunction = _style_;\nexport var st: import(\"@stylable/runtime\").STFunction = _style_;\n\nexport var namespace = _namespace_;\nexport var classes = {\"root\":\"fieldvalidationsettingsinput2294766599__root\",\"specificValuesInput\":\"fieldvalidationsettingsinput2294766599__specificValuesInput\"};\nexport var keyframes = {}; \nexport var layers = {};\nexport var containers = {};\nexport var stVars = {}; \nexport var vars = {}; \n\n\n\n\n"],"mappings":";;;;AAGA,IAAAA,mBAAA,GAAAC,OAAA;AAHA;;AAOA,IAAIC,WAAW,GAAG,wCAAwC;AAC1D,IAAIC,OAAO,GAAGC,kCAAc,CAACC,IAAI,CAAC,IAAI,EAAEH,WAAW,CAAC;AAE7C,IAAII,SAAS,GAAAC,OAAA,CAAAD,SAAA,GAAGE,iCAAa,CAACH,IAAI,CAAC,IAAI,EAAEH,WAAW,CAAC;AACrD,IAAIO,KAA6C,GAAAF,OAAA,CAAAE,KAAA,GAAGN,OAAO;AAC3D,IAAIO,EAA0C,GAAAH,OAAA,CAAAG,EAAA,GAAGP,OAAO;AAExD,IAAIQ,SAAS,GAAAJ,OAAA,CAAAI,SAAA,GAAGT,WAAW;AAC3B,IAAIU,OAAO,GAAAL,OAAA,CAAAK,OAAA,GAAG;EAAC,MAAM,EAAC,8CAA8C;EAAC,qBAAqB,EAAC;AAA6D,CAAC;AACzJ,IAAIC,SAAS,GAAAN,OAAA,CAAAM,SAAA,GAAG,CAAC,CAAC;AAClB,IAAIC,MAAM,GAAAP,OAAA,CAAAO,MAAA,GAAG,CAAC,CAAC;AACf,IAAIC,UAAU,GAAAR,OAAA,CAAAQ,UAAA,GAAG,CAAC,CAAC;AACnB,IAAIC,MAAM,GAAAT,OAAA,CAAAS,MAAA,GAAG,CAAC,CAAC;AACf,IAAIC,IAAI,GAAAV,OAAA,CAAAU,IAAA,GAAG,CAAC,CAAC","ignoreList":[]}
@@ -6,6 +6,7 @@ var _unidriver = require("@wix/design-system/dist/testkit/unidriver");
6
6
  var _baseDriver = require("../../testkit/base-driver");
7
7
  function FieldValidationSettingsUniDriver(base, body) {
8
8
  const getToggle = rule => (0, _unidriver.ToggleSwitchUniDriver)(base.$(`[data-hook="field-validation-${rule}-toggle"]`), body);
9
+ const getSpecificValuesInput = () => (0, _unidriver.MultiSelectUniDriver)(base.$('[data-hook="field-validation-specific-values-input"]'), body);
9
10
  return {
10
11
  ...(0, _baseDriver.baseUniDriverFactory)(base),
11
12
  getRequiredToggle: () => getToggle('required'),
@@ -14,9 +15,26 @@ function FieldValidationSettingsUniDriver(base, body) {
14
15
  getPatternToggle: () => getToggle('pattern'),
15
16
  getMinCharactersInput: () => (0, _unidriver.NumberInputUniDriver)(base.$('[data-hook="field-validation-min-characters"]'), body),
16
17
  getMaxCharactersInput: () => (0, _unidriver.NumberInputUniDriver)(base.$('[data-hook="field-validation-max-characters"]'), body),
17
- getSpecificValueInput: index => (0, _unidriver.InputUniDriver)(base.$(`[data-hook="field-validation-specific-value-${index}"]`), body),
18
- getAddSpecificValueButton: () => (0, _unidriver.TextButtonUniDriver)(base.$('[data-hook="field-validation-specific-value-add"]'), body),
19
- getRemoveSpecificValueButton: index => (0, _unidriver.IconButtonUniDriver)(base.$(`[data-hook="field-validation-specific-value-remove-${index}"]`), body),
18
+ getSpecificValuesField: () => (0, _unidriver.FormFieldUniDriver)(base.$('[data-hook="field-validation-specific-values-field"]'), body),
19
+ getSpecificValuesInput,
20
+ addSpecificValues: async text => {
21
+ const input = getSpecificValuesInput();
22
+ await input.inputDriver.enterText(text);
23
+ await input.driver.pressKey('Enter');
24
+ },
25
+ getSpecificValueLabels: async () => {
26
+ const {
27
+ driver
28
+ } = getSpecificValuesInput();
29
+ const count = await driver.numberOfTags();
30
+ return Promise.all(Array.from({
31
+ length: count
32
+ }, (_tag, index) => driver.getTagLabelAt(index)));
33
+ },
34
+ removeSpecificValue: async id => {
35
+ const tag = await getSpecificValuesInput().driver.getTagDriverByTagId(id);
36
+ await tag.removeTag();
37
+ },
20
38
  getPatternInput: () => (0, _unidriver.InputUniDriver)(base.$('[data-hook="field-validation-pattern-input"]'), body),
21
39
  getExclusiveRulesExplanation: rule => base.$(`[data-hook="field-validation-${rule}-exclusive-help"]`),
22
40
  hasExclusiveRulesExplanation: () => base.$('[data-hook$="exclusive-help"]').exists()