@bigbinary/neeto-molecules 5.1.19 → 5.1.21

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 (166) hide show
  1. package/dist/FinderModal.js +56 -9
  2. package/dist/FinderModal.js.map +1 -1
  3. package/dist/IpRestriction.js +2 -3175
  4. package/dist/IpRestriction.js.map +1 -1
  5. package/dist/MadeWith.js +3 -74
  6. package/dist/MadeWith.js.map +1 -1
  7. package/dist/NeetoWidget.js +3 -1958
  8. package/dist/NeetoWidget.js.map +1 -1
  9. package/dist/Onboarding.js +3 -400
  10. package/dist/Onboarding.js.map +1 -1
  11. package/dist/chevron-up-B2_LTx_h.js +15 -0
  12. package/dist/chevron-up-B2_LTx_h.js.map +1 -0
  13. package/dist/cjs/FinderModal.js +54 -7
  14. package/dist/cjs/FinderModal.js.map +1 -1
  15. package/dist/cjs/IpRestriction.js +21 -3194
  16. package/dist/cjs/IpRestriction.js.map +1 -1
  17. package/dist/cjs/MadeWith.js +17 -88
  18. package/dist/cjs/MadeWith.js.map +1 -1
  19. package/dist/cjs/NeetoWidget.js +4 -1959
  20. package/dist/cjs/NeetoWidget.js.map +1 -1
  21. package/dist/cjs/Onboarding.js +3 -400
  22. package/dist/cjs/Onboarding.js.map +1 -1
  23. package/dist/cjs/chevron-up-CpzhFWzM.js +17 -0
  24. package/dist/cjs/chevron-up-CpzhFWzM.js.map +1 -0
  25. package/dist/cjs/copy-CerjTcLL.js +20 -0
  26. package/dist/cjs/copy-CerjTcLL.js.map +1 -0
  27. package/dist/cjs/globe-DawgK2Dx.js +21 -0
  28. package/dist/cjs/globe-DawgK2Dx.js.map +1 -0
  29. package/dist/cjs/index-ARGXqXxG.js +78 -0
  30. package/dist/cjs/index-ARGXqXxG.js.map +1 -0
  31. package/dist/cjs/index-BeqE2JWC.js +3180 -0
  32. package/dist/cjs/index-BeqE2JWC.js.map +1 -0
  33. package/dist/cjs/panel-left-close-CLoRPBWH.js +21 -0
  34. package/dist/cjs/panel-left-close-CLoRPBWH.js.map +1 -0
  35. package/dist/cjs/phone-number-Bza7WGZm.js +315 -0
  36. package/dist/cjs/phone-number-Bza7WGZm.js.map +1 -0
  37. package/dist/cjs/prism-tomorrow-BMFuJ5o1.js +1963 -0
  38. package/dist/cjs/prism-tomorrow-BMFuJ5o1.js.map +1 -0
  39. package/dist/cjs/react-confetti-DdGoyZ0y.js +405 -0
  40. package/dist/cjs/react-confetti-DdGoyZ0y.js.map +1 -0
  41. package/dist/cjs/smartphone-ChvEvl-o.js +36 -0
  42. package/dist/cjs/smartphone-ChvEvl-o.js.map +1 -0
  43. package/dist/cjs/trash-2-CotPjU5n.js +23 -0
  44. package/dist/cjs/trash-2-CotPjU5n.js.map +1 -0
  45. package/dist/cjs/triangle-alert-De-qkUXK.js +27 -0
  46. package/dist/cjs/triangle-alert-De-qkUXK.js.map +1 -0
  47. package/dist/cjs/v2/AuditLogs.js +4 -18
  48. package/dist/cjs/v2/AuditLogs.js.map +1 -1
  49. package/dist/cjs/v2/Builder.js +4 -18
  50. package/dist/cjs/v2/Builder.js.map +1 -1
  51. package/dist/cjs/v2/Codeblock.js +1 -0
  52. package/dist/cjs/v2/Codeblock.js.map +1 -1
  53. package/dist/cjs/v2/CopyToClipboardButton.js +3 -16
  54. package/dist/cjs/v2/CopyToClipboardButton.js.map +1 -1
  55. package/dist/cjs/v2/FinderModal.js +48 -14
  56. package/dist/cjs/v2/FinderModal.js.map +1 -1
  57. package/dist/cjs/v2/FloatingActionMenu.js +1 -0
  58. package/dist/cjs/v2/FloatingActionMenu.js.map +1 -1
  59. package/dist/cjs/v2/Insights.js +344 -0
  60. package/dist/cjs/v2/Insights.js.map +1 -0
  61. package/dist/cjs/v2/IntegrationCard.js +222 -0
  62. package/dist/cjs/v2/IntegrationCard.js.map +1 -0
  63. package/dist/cjs/v2/IpRestriction.js +525 -0
  64. package/dist/cjs/v2/IpRestriction.js.map +1 -0
  65. package/dist/cjs/v2/MadeWith.js +73 -0
  66. package/dist/cjs/v2/MadeWith.js.map +1 -0
  67. package/dist/cjs/v2/Metadata.js +215 -0
  68. package/dist/cjs/v2/Metadata.js.map +1 -0
  69. package/dist/cjs/v2/NavigationHeader.js +1 -0
  70. package/dist/cjs/v2/NavigationHeader.js.map +1 -1
  71. package/dist/cjs/v2/NeetoWidget.js +855 -0
  72. package/dist/cjs/v2/NeetoWidget.js.map +1 -0
  73. package/dist/cjs/v2/Onboarding.js +323 -0
  74. package/dist/cjs/v2/Onboarding.js.map +1 -0
  75. package/dist/cjs/v2/OptionFields.js +1291 -0
  76. package/dist/cjs/v2/OptionFields.js.map +1 -0
  77. package/dist/cjs/v2/PhoneNumber.js +20 -307
  78. package/dist/cjs/v2/PhoneNumber.js.map +1 -1
  79. package/dist/cjs/v2/ProductEmbed.js +1870 -0
  80. package/dist/cjs/v2/ProductEmbed.js.map +1 -0
  81. package/dist/cjs/v2/PublishBlock.js +6 -22
  82. package/dist/cjs/v2/PublishBlock.js.map +1 -1
  83. package/dist/cjs/v2/PublishYourItem.js +60 -0
  84. package/dist/cjs/v2/PublishYourItem.js.map +1 -0
  85. package/dist/cjs/v2/ResponsiveDevicePicker.js +88 -0
  86. package/dist/cjs/v2/ResponsiveDevicePicker.js.map +1 -0
  87. package/dist/cjs/v2/SessionEnvironment.js +479 -0
  88. package/dist/cjs/v2/SessionEnvironment.js.map +1 -0
  89. package/dist/copy-DhbOoOav.js +18 -0
  90. package/dist/copy-DhbOoOav.js.map +1 -0
  91. package/dist/globe-rBiI1CjO.js +19 -0
  92. package/dist/globe-rBiI1CjO.js.map +1 -0
  93. package/dist/index-0jnA7dx6.js +3178 -0
  94. package/dist/index-0jnA7dx6.js.map +1 -0
  95. package/dist/index-DF5MKxql.js +76 -0
  96. package/dist/index-DF5MKxql.js.map +1 -0
  97. package/dist/panel-left-close-37jik3GB.js +19 -0
  98. package/dist/panel-left-close-37jik3GB.js.map +1 -0
  99. package/dist/phone-number-CGZtDB_n.js +291 -0
  100. package/dist/phone-number-CGZtDB_n.js.map +1 -0
  101. package/dist/prism-tomorrow-ZUb2Ikm9.js +1961 -0
  102. package/dist/prism-tomorrow-ZUb2Ikm9.js.map +1 -0
  103. package/dist/react-confetti-BnGq_LBE.js +403 -0
  104. package/dist/react-confetti-BnGq_LBE.js.map +1 -0
  105. package/dist/smartphone-B-jv1y8j.js +33 -0
  106. package/dist/smartphone-B-jv1y8j.js.map +1 -0
  107. package/dist/trash-2-N0F6K63L.js +21 -0
  108. package/dist/trash-2-N0F6K63L.js.map +1 -0
  109. package/dist/triangle-alert-Pkh6pc42.js +25 -0
  110. package/dist/triangle-alert-Pkh6pc42.js.map +1 -0
  111. package/dist/v2/AuditLogs.js +3 -17
  112. package/dist/v2/AuditLogs.js.map +1 -1
  113. package/dist/v2/Builder.js +3 -17
  114. package/dist/v2/Builder.js.map +1 -1
  115. package/dist/v2/Codeblock.js +1 -0
  116. package/dist/v2/Codeblock.js.map +1 -1
  117. package/dist/v2/CopyToClipboardButton.js +2 -15
  118. package/dist/v2/CopyToClipboardButton.js.map +1 -1
  119. package/dist/v2/FinderModal.js +49 -15
  120. package/dist/v2/FinderModal.js.map +1 -1
  121. package/dist/v2/FloatingActionMenu.js +1 -0
  122. package/dist/v2/FloatingActionMenu.js.map +1 -1
  123. package/dist/v2/Insights.js +342 -0
  124. package/dist/v2/Insights.js.map +1 -0
  125. package/dist/v2/IntegrationCard.js +220 -0
  126. package/dist/v2/IntegrationCard.js.map +1 -0
  127. package/dist/v2/IpRestriction.js +504 -0
  128. package/dist/v2/IpRestriction.js.map +1 -0
  129. package/dist/v2/MadeWith.js +52 -0
  130. package/dist/v2/MadeWith.js.map +1 -0
  131. package/dist/v2/Metadata.js +213 -0
  132. package/dist/v2/Metadata.js.map +1 -0
  133. package/dist/v2/NavigationHeader.js +1 -0
  134. package/dist/v2/NavigationHeader.js.map +1 -1
  135. package/dist/v2/NeetoWidget.js +834 -0
  136. package/dist/v2/NeetoWidget.js.map +1 -0
  137. package/dist/v2/Onboarding.js +321 -0
  138. package/dist/v2/Onboarding.js.map +1 -0
  139. package/dist/v2/OptionFields.js +1289 -0
  140. package/dist/v2/OptionFields.js.map +1 -0
  141. package/dist/v2/PhoneNumber.js +20 -287
  142. package/dist/v2/PhoneNumber.js.map +1 -1
  143. package/dist/v2/ProductEmbed.js +1868 -0
  144. package/dist/v2/ProductEmbed.js.map +1 -0
  145. package/dist/v2/PublishBlock.js +5 -21
  146. package/dist/v2/PublishBlock.js.map +1 -1
  147. package/dist/v2/PublishYourItem.js +58 -0
  148. package/dist/v2/PublishYourItem.js.map +1 -0
  149. package/dist/v2/ResponsiveDevicePicker.js +86 -0
  150. package/dist/v2/ResponsiveDevicePicker.js.map +1 -0
  151. package/dist/v2/SessionEnvironment.js +477 -0
  152. package/dist/v2/SessionEnvironment.js.map +1 -0
  153. package/package.json +3 -3
  154. package/types/v2/Insights.d.ts +69 -0
  155. package/types/v2/IntegrationCard.d.ts +30 -0
  156. package/types/v2/IpRestriction.d.ts +5 -0
  157. package/types/v2/MadeWith.d.ts +8 -0
  158. package/types/v2/Metadata.d.ts +26 -0
  159. package/types/v2/MobilePreviewHeader.d.ts +8 -0
  160. package/types/v2/NeetoWidget.d.ts +19 -0
  161. package/types/v2/Onboarding.d.ts +22 -0
  162. package/types/v2/OptionFields.d.ts +55 -0
  163. package/types/v2/ProductEmbed.d.ts +90 -0
  164. package/types/v2/PublishYourItem.d.ts +8 -0
  165. package/types/v2/ResponsiveDevicePicker.d.ts +11 -0
  166. package/types/v2/SessionEnvironment.d.ts +34 -0
@@ -0,0 +1,1289 @@
1
+ import _defineProperty from '@babel/runtime/helpers/defineProperty';
2
+ import _slicedToArray from '@babel/runtime/helpers/slicedToArray';
3
+ import { useState, useRef } from 'react';
4
+ import { Dialog, Textarea, Button, Checkbox as Checkbox$1, Typography } from '@bigbinary/neeto-atoms';
5
+ import { DragDropContext, Droppable, Draggable } from '@hello-pangea/dnd';
6
+ import { useField, FieldArray } from 'formik';
7
+ import { slugify, isNotPresent, findIndexById, isNotEmpty, noop } from '@bigbinary/neeto-cist';
8
+ import { isEmpty, identity, reject, prop, pluck, clone, insert, move, assocPath, remove, append } from 'ramda';
9
+ import { useTranslation, Trans } from 'react-i18next';
10
+ import { jsxs, jsx } from 'react/jsx-runtime';
11
+ import i18next, { t } from 'i18next';
12
+ import Editor from '@bigbinary/neeto-editor/Editor';
13
+ import { G as GripVertical } from '../grip-vertical-FEAaqOeC.js';
14
+ import { withT } from '@bigbinary/neeto-commons-frontend/v2/react-utils';
15
+ import { C as Copy } from '../copy-DhbOoOav.js';
16
+ import { T as Trash2 } from '../trash-2-N0F6K63L.js';
17
+ import { Input, Textarea as Textarea$1 } from '@bigbinary/neeto-atoms/formik';
18
+ import classnames from 'classnames';
19
+ import ImageUploader from '@bigbinary/neeto-image-uploader-frontend/ImageUploader';
20
+ import _toConsumableArray from '@babel/runtime/helpers/toConsumableArray';
21
+ import { c as createLucideIcon } from '../createLucideIcon-mNMhCCpf.js';
22
+ import { P as Plus } from '../plus-clM1IC_E.js';
23
+
24
+ /**
25
+ * @license lucide-react v1.7.0 - ISC
26
+ *
27
+ * This source code is licensed under the ISC license.
28
+ * See the LICENSE file in the root directory of this source tree.
29
+ */
30
+
31
+
32
+ const __iconNode = [
33
+ [
34
+ "path",
35
+ {
36
+ d: "M21.174 6.812a1 1 0 0 0-3.986-3.987L3.842 16.174a2 2 0 0 0-.5.83l-1.321 4.352a.5.5 0 0 0 .623.622l4.353-1.32a2 2 0 0 0 .83-.497z",
37
+ key: "1a8usu"
38
+ }
39
+ ],
40
+ ["path", { d: "m15 5 4 4", key: "1mk7zo" }]
41
+ ];
42
+ const Pencil = createLucideIcon("pencil", __iconNode);
43
+
44
+ var BulkOptionModal = function BulkOptionModal(_ref) {
45
+ var isOpen = _ref.isOpen,
46
+ onClose = _ref.onClose,
47
+ handleBulkAdd = _ref.handleBulkAdd,
48
+ bulkAddHelpDocUrl = _ref.bulkAddHelpDocUrl;
49
+ var _useTranslation = useTranslation(),
50
+ t = _useTranslation.t;
51
+ var _useState = useState(""),
52
+ _useState2 = _slicedToArray(_useState, 2),
53
+ optionsString = _useState2[0],
54
+ setOptionsString = _useState2[1];
55
+ var handleSave = function handleSave() {
56
+ handleBulkAdd(optionsString);
57
+ handleClose();
58
+ };
59
+ var handleClose = function handleClose() {
60
+ setOptionsString("");
61
+ onClose();
62
+ };
63
+ return /*#__PURE__*/jsxs(Dialog, {
64
+ isOpen: isOpen,
65
+ "aria-describedby": undefined,
66
+ onClose: handleClose,
67
+ children: [/*#__PURE__*/jsx(Dialog.Header, {
68
+ children: /*#__PURE__*/jsx(Dialog.Title, {
69
+ children: t("neetoMolecules.optionFields.bulkOption.title")
70
+ })
71
+ }), /*#__PURE__*/jsx(Dialog.Body, {
72
+ children: /*#__PURE__*/jsx(Textarea, {
73
+ className: "my-2",
74
+ "data-testid": "bulk-add-options-textarea",
75
+ label: t("neetoMolecules.optionFields.bulkOption.label"),
76
+ placeholder: t("neetoMolecules.optionFields.bulkOption.label"),
77
+ rows: 8,
78
+ value: optionsString,
79
+ helpText: /*#__PURE__*/jsx(Trans, {
80
+ i18nKey: "neetoMolecules.optionFields.bulkOption.helpText",
81
+ components: {
82
+ Link: /*#__PURE__*/jsx(Button, {
83
+ className: "text-xs",
84
+ href: bulkAddHelpDocUrl,
85
+ target: "_blank",
86
+ variant: "link"
87
+ })
88
+ }
89
+ }),
90
+ onChange: function onChange(e) {
91
+ return setOptionsString(e.target.value);
92
+ }
93
+ })
94
+ }), /*#__PURE__*/jsxs(Dialog.Footer, {
95
+ className: "flex items-center gap-x-2",
96
+ children: [/*#__PURE__*/jsx(Button, {
97
+ "data-testid": "bulk-add-options-done-button",
98
+ label: t("neetoMolecules.common.actions.submit"),
99
+ onClick: handleSave
100
+ }), /*#__PURE__*/jsx(Button, {
101
+ "data-testid": "bulk-add-options-cancel-button",
102
+ label: t("neetoMolecules.common.actions.cancel"),
103
+ variant: "ghost",
104
+ onClick: handleClose
105
+ })]
106
+ })]
107
+ });
108
+ };
109
+
110
+ var Checkbox = function Checkbox(_ref) {
111
+ var name = _ref.name,
112
+ optionIndex = _ref.optionIndex;
113
+ var checkboxName = name.replace(".label", ".selected");
114
+ var _useField = useField(checkboxName),
115
+ _useField2 = _slicedToArray(_useField, 3),
116
+ value = _useField2[0].value;
117
+ _useField2[1];
118
+ var setValue = _useField2[2].setValue;
119
+ return /*#__PURE__*/jsx("div", {
120
+ className: "flex h-8 flex-shrink-0 items-center",
121
+ children: /*#__PURE__*/jsx(Checkbox$1, {
122
+ checked: value || false,
123
+ "data-testid": "checkbox-option-".concat(optionIndex),
124
+ onCheckedChange: function onCheckedChange(checked) {
125
+ return setValue(checked);
126
+ }
127
+ })
128
+ });
129
+ };
130
+
131
+ function ownKeys$8(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
132
+ function _objectSpread$8(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys$8(Object(t), true).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys$8(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
133
+ var DragHandle = function DragHandle(props) {
134
+ return /*#__PURE__*/jsx("div", _objectSpread$8(_objectSpread$8({
135
+ className: "text-muted-foreground flex h-8 flex-shrink-0 cursor-grab items-center",
136
+ "data-testid": "drag-handle"
137
+ }, props), {}, {
138
+ children: /*#__PURE__*/jsx(GripVertical, {
139
+ className: "text-muted-foreground/70 hover:text-muted-foreground transition-all duration-300 ease-in-out",
140
+ size: 16
141
+ })
142
+ }));
143
+ };
144
+
145
+ var OptionActions = withT(function (_ref) {
146
+ var t = _ref.t,
147
+ disabled = _ref.disabled,
148
+ _ref$hideCloneOption = _ref.hideCloneOption,
149
+ hideCloneOption = _ref$hideCloneOption === void 0 ? false : _ref$hideCloneOption,
150
+ _ref$hideDeleteOption = _ref.hideDeleteOption,
151
+ hideDeleteOption = _ref$hideDeleteOption === void 0 ? false : _ref$hideDeleteOption,
152
+ optionIndex = _ref.optionIndex,
153
+ id = _ref.id,
154
+ arrayHelpers = _ref.arrayHelpers,
155
+ onClone = _ref.onClone,
156
+ onDelete = _ref.onDelete,
157
+ _ref$className = _ref.className,
158
+ className = _ref$className === void 0 ? "" : _ref$className;
159
+ return /*#__PURE__*/jsxs("div", {
160
+ className: "flex items-center gap-1 ".concat(className),
161
+ children: [!hideCloneOption && /*#__PURE__*/jsx(Button, {
162
+ disabled: disabled,
163
+ className: "p-0.5",
164
+ "data-testid": "clone-option-button-".concat(optionIndex),
165
+ icon: Copy,
166
+ size: "sm",
167
+ variant: "ghost",
168
+ tooltipProps: {
169
+ content: t("neetoMolecules.common.actions.clone"),
170
+ position: "top"
171
+ },
172
+ onClick: function onClick() {
173
+ return onClone(id);
174
+ }
175
+ }), !hideDeleteOption && /*#__PURE__*/jsx(Button, {
176
+ disabled: disabled,
177
+ className: "p-0.5",
178
+ "data-testid": "delete-option-button-".concat(optionIndex),
179
+ icon: Trash2,
180
+ size: "sm",
181
+ variant: "ghost",
182
+ tooltipProps: {
183
+ content: t("neetoMolecules.common.actions.delete"),
184
+ position: "top"
185
+ },
186
+ onClick: function onClick() {
187
+ return onDelete(id, arrayHelpers);
188
+ }
189
+ })]
190
+ });
191
+ });
192
+
193
+ function ownKeys$7(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
194
+ function _objectSpread$7(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys$7(Object(t), true).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys$7(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
195
+ var EditorOption = function EditorOption(_ref) {
196
+ var innerRef = _ref.innerRef,
197
+ draggableProps = _ref.draggableProps,
198
+ dragHandleProps = _ref.dragHandleProps,
199
+ isDraggable = _ref.isDraggable,
200
+ optionIndex = _ref.optionIndex,
201
+ isCheckboxEnabled = _ref.isCheckboxEnabled,
202
+ name = _ref.name,
203
+ disabled = _ref.disabled,
204
+ placeholder = _ref.placeholder,
205
+ shouldFocus = _ref.shouldFocus,
206
+ _onChange = _ref.onChange,
207
+ _onBlur = _ref.onBlur,
208
+ id = _ref.id,
209
+ arrayHelpers = _ref.arrayHelpers,
210
+ hideCloneOption = _ref.hideCloneOption,
211
+ hideDeleteOption = _ref.hideDeleteOption,
212
+ onClone = _ref.onClone,
213
+ onDelete = _ref.onDelete;
214
+ var _useField = useField(name),
215
+ _useField2 = _slicedToArray(_useField, 1),
216
+ field = _useField2[0];
217
+ return /*#__PURE__*/jsx("div", _objectSpread$7(_objectSpread$7({
218
+ ref: innerRef
219
+ }, _objectSpread$7(_objectSpread$7({}, draggableProps), dragHandleProps)), {}, {
220
+ "data-testid": "form-block-options",
221
+ children: /*#__PURE__*/jsxs("div", {
222
+ className: "nf-input-options group relative mb-2 flex items-start gap-1",
223
+ children: [isDraggable && /*#__PURE__*/jsx(DragHandle, _objectSpread$7(_objectSpread$7({}, dragHandleProps), {}, {
224
+ "data-testid": "drag-handle-".concat(optionIndex)
225
+ })), isCheckboxEnabled && /*#__PURE__*/jsx(Checkbox, {
226
+ name: name,
227
+ optionIndex: optionIndex
228
+ }), /*#__PURE__*/jsxs("div", {
229
+ className: "flex w-full items-start gap-2",
230
+ children: [/*#__PURE__*/jsx(Editor, {
231
+ disabled: disabled,
232
+ name: name,
233
+ placeholder: placeholder,
234
+ autoFocus: shouldFocus,
235
+ className: "flex-1",
236
+ "data-testid": "editor-option-".concat(optionIndex),
237
+ initialValue: field.value,
238
+ onChange: function onChange(value) {
239
+ return _onChange({
240
+ id: id,
241
+ value: value
242
+ });
243
+ },
244
+ onBlur: function onBlur(value) {
245
+ _onChange({
246
+ id: id,
247
+ value: value,
248
+ isOnBlur: true
249
+ });
250
+ _onBlur === null || _onBlur === void 0 || _onBlur(id, value);
251
+ }
252
+ }), /*#__PURE__*/jsx("div", {
253
+ className: "absolute end-2 top-2",
254
+ children: /*#__PURE__*/jsx(OptionActions, {
255
+ arrayHelpers: arrayHelpers,
256
+ disabled: disabled,
257
+ hideCloneOption: hideCloneOption,
258
+ hideDeleteOption: hideDeleteOption,
259
+ id: id,
260
+ onClone: onClone,
261
+ onDelete: onDelete,
262
+ optionIndex: optionIndex
263
+ })
264
+ })]
265
+ })]
266
+ })
267
+ }));
268
+ };
269
+
270
+ function ownKeys$6(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
271
+ function _objectSpread$6(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys$6(Object(t), true).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys$6(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
272
+ var ImageOption = function ImageOption(_ref) {
273
+ var id = _ref.id,
274
+ name = _ref.name,
275
+ optionIndex = _ref.optionIndex,
276
+ disabled = _ref.disabled,
277
+ placeholder = _ref.placeholder,
278
+ shouldFocus = _ref.shouldFocus,
279
+ onKeyDown = _ref.onKeyDown,
280
+ _onChange = _ref.onChange,
281
+ _onBlur = _ref.onBlur,
282
+ onDelete = _ref.onDelete,
283
+ onClone = _ref.onClone,
284
+ arrayHelpers = _ref.arrayHelpers,
285
+ _ref$hideDeleteOption = _ref.hideDeleteOption,
286
+ hideDeleteOption = _ref$hideDeleteOption === void 0 ? false : _ref$hideDeleteOption,
287
+ _ref$hideCloneOption = _ref.hideCloneOption,
288
+ hideCloneOption = _ref$hideCloneOption === void 0 ? false : _ref$hideCloneOption,
289
+ innerRef = _ref.innerRef,
290
+ draggableProps = _ref.draggableProps,
291
+ dragHandleProps = _ref.dragHandleProps,
292
+ isDraggable = _ref.isDraggable,
293
+ isCheckboxEnabled = _ref.isCheckboxEnabled,
294
+ isEditor = _ref.isEditor;
295
+ var imageFieldName = name.replace(".label", ".image");
296
+ var _useField = useField(name),
297
+ _useField2 = _slicedToArray(_useField, 1),
298
+ field = _useField2[0];
299
+ var _useField3 = useField(imageFieldName),
300
+ _useField4 = _slicedToArray(_useField3, 3);
301
+ _useField4[0];
302
+ var image = _useField4[1].value,
303
+ setValue = _useField4[2].setValue;
304
+ var handleImageChange = function handleImageChange(changedImage) {
305
+ var imageValue = isEmpty(changedImage === null || changedImage === void 0 ? void 0 : changedImage.url) ? null : changedImage;
306
+ setValue(imageValue, false);
307
+ _onChange({
308
+ id: id,
309
+ value: imageValue,
310
+ isOnBlur: false,
311
+ fieldType: "image"
312
+ });
313
+ };
314
+ return /*#__PURE__*/jsx("div", _objectSpread$6(_objectSpread$6({
315
+ ref: innerRef
316
+ }, _objectSpread$6(_objectSpread$6({}, draggableProps), dragHandleProps)), {}, {
317
+ "data-testid": "form-block-options",
318
+ children: /*#__PURE__*/jsxs("div", {
319
+ className: "nf-input-options group relative mb-2 flex items-start gap-1",
320
+ children: [isDraggable && /*#__PURE__*/jsx(DragHandle, _objectSpread$6(_objectSpread$6({}, dragHandleProps), {}, {
321
+ "data-testid": "drag-handle-".concat(optionIndex)
322
+ })), isCheckboxEnabled && /*#__PURE__*/jsx(Checkbox, {
323
+ name: name,
324
+ optionIndex: optionIndex
325
+ }), /*#__PURE__*/jsx("div", {
326
+ className: classnames("flex w-full items-center justify-center", {
327
+ "pointer-events-none opacity-80": disabled
328
+ }),
329
+ children: /*#__PURE__*/jsxs("div", {
330
+ className: "border-border bg-background group relative flex w-full flex-col gap-2 rounded-lg border p-2 pe-8",
331
+ children: [/*#__PURE__*/jsx("div", {
332
+ className: "flex-shrink-0",
333
+ "data-testid": "picture-choice-option-".concat(optionIndex),
334
+ children: /*#__PURE__*/jsx(ImageUploader, {
335
+ className: "w-full [&_img]:max-h-[100px]",
336
+ isOptionsDisabled: disabled,
337
+ src: image === null || image === void 0 ? void 0 : image.url,
338
+ uploadConfig: IMAGE_UPLOAD_CONFIG,
339
+ onUploadComplete: handleImageChange
340
+ }, image === null || image === void 0 ? void 0 : image.url)
341
+ }), /*#__PURE__*/jsx("div", {
342
+ className: "w-full",
343
+ children: isEditor ? /*#__PURE__*/jsx(Editor, {
344
+ disabled: disabled,
345
+ name: name,
346
+ placeholder: placeholder,
347
+ autoFocus: shouldFocus,
348
+ className: "flex-1",
349
+ "data-testid": "editor-option-".concat(optionIndex),
350
+ initialValue: field.value,
351
+ onChange: function onChange(value) {
352
+ return _onChange({
353
+ id: id,
354
+ value: value
355
+ });
356
+ },
357
+ onBlur: function onBlur(value) {
358
+ _onChange({
359
+ id: id,
360
+ value: value,
361
+ isOnBlur: true
362
+ });
363
+ _onBlur === null || _onBlur === void 0 || _onBlur(id, value);
364
+ }
365
+ }) : /*#__PURE__*/jsx(Input, _defineProperty(_defineProperty({
366
+ disabled: disabled,
367
+ name: name,
368
+ onBlur: _onBlur,
369
+ onKeyDown: onKeyDown,
370
+ placeholder: placeholder,
371
+ autoFocus: shouldFocus,
372
+ "data-testid": "option-input-".concat(optionIndex),
373
+ onFocus: function onFocus(_ref2) {
374
+ var target = _ref2.target;
375
+ return target.select();
376
+ }
377
+ }, "onBlur", function onBlur(event) {
378
+ _onChange({
379
+ id: id,
380
+ value: event.target.value,
381
+ isOnBlur: true
382
+ });
383
+ _onBlur === null || _onBlur === void 0 || _onBlur(id, event.target.value);
384
+ for (var _len = arguments.length, args = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {
385
+ args[_key - 1] = arguments[_key];
386
+ }
387
+ field.onBlur.apply(field, [event].concat(args));
388
+ }), "onChange", function onChange(_ref3) {
389
+ var target = _ref3.target;
390
+ return _onChange({
391
+ id: id,
392
+ value: target.value
393
+ });
394
+ }))
395
+ }), /*#__PURE__*/jsx("div", {
396
+ className: "absolute end-2 top-2",
397
+ children: /*#__PURE__*/jsx(OptionActions, {
398
+ arrayHelpers: arrayHelpers,
399
+ disabled: disabled,
400
+ hideCloneOption: hideCloneOption,
401
+ hideDeleteOption: hideDeleteOption,
402
+ id: id,
403
+ onClone: onClone,
404
+ onDelete: onDelete,
405
+ optionIndex: optionIndex
406
+ })
407
+ })]
408
+ })
409
+ })]
410
+ })
411
+ }));
412
+ };
413
+
414
+ function ownKeys$5(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
415
+ function _objectSpread$5(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys$5(Object(t), true).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys$5(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
416
+ var InputOption = function InputOption(_ref) {
417
+ var shouldFocus = _ref.shouldFocus,
418
+ _ref$hideDeleteOption = _ref.hideDeleteOption,
419
+ hideDeleteOption = _ref$hideDeleteOption === void 0 ? false : _ref$hideDeleteOption,
420
+ _ref$hideCloneOption = _ref.hideCloneOption,
421
+ hideCloneOption = _ref$hideCloneOption === void 0 ? false : _ref$hideCloneOption,
422
+ innerRef = _ref.innerRef,
423
+ draggableProps = _ref.draggableProps,
424
+ dragHandleProps = _ref.dragHandleProps,
425
+ onKeyDown = _ref.onKeyDown,
426
+ onDelete = _ref.onDelete,
427
+ onClone = _ref.onClone,
428
+ _onChange = _ref.onChange,
429
+ optionIndex = _ref.optionIndex,
430
+ disabled = _ref.disabled,
431
+ isTextArea = _ref.isTextArea,
432
+ id = _ref.id,
433
+ isDraggable = _ref.isDraggable,
434
+ name = _ref.name,
435
+ placeholder = _ref.placeholder,
436
+ _onBlur = _ref.onBlur,
437
+ arrayHelpers = _ref.arrayHelpers,
438
+ _ref$isCheckboxEnable = _ref.isCheckboxEnabled,
439
+ isCheckboxEnabled = _ref$isCheckboxEnable === void 0 ? false : _ref$isCheckboxEnable;
440
+ var Component = isTextArea ? Textarea$1 : Input;
441
+ var _useField = useField(name),
442
+ _useField2 = _slicedToArray(_useField, 1),
443
+ field = _useField2[0];
444
+ return /*#__PURE__*/jsx("div", _objectSpread$5(_objectSpread$5({
445
+ ref: innerRef
446
+ }, _objectSpread$5(_objectSpread$5({}, draggableProps), dragHandleProps)), {}, {
447
+ "data-testid": "form-block-options",
448
+ children: /*#__PURE__*/jsxs("div", {
449
+ className: "nf-input-options group relative mb-2 flex items-start gap-1",
450
+ children: [isDraggable && /*#__PURE__*/jsx(DragHandle, _objectSpread$5(_objectSpread$5({}, dragHandleProps), {}, {
451
+ "data-testid": "drag-handle-".concat(optionIndex)
452
+ })), isCheckboxEnabled && /*#__PURE__*/jsx(Checkbox, {
453
+ name: name,
454
+ optionIndex: optionIndex
455
+ }), /*#__PURE__*/jsx("div", {
456
+ className: "flex w-full items-start gap-2",
457
+ children: /*#__PURE__*/jsx(Component, {
458
+ disabled: disabled,
459
+ name: name,
460
+ onKeyDown: onKeyDown,
461
+ placeholder: placeholder,
462
+ autoFocus: shouldFocus,
463
+ className: "flex-1",
464
+ "data-testid": "".concat(isTextArea ? "option-textarea" : "option-input", "-").concat(optionIndex),
465
+ suffix: /*#__PURE__*/jsx(OptionActions, {
466
+ arrayHelpers: arrayHelpers,
467
+ disabled: disabled,
468
+ hideCloneOption: hideCloneOption,
469
+ hideDeleteOption: hideDeleteOption,
470
+ id: id,
471
+ onClone: onClone,
472
+ onDelete: onDelete,
473
+ optionIndex: optionIndex
474
+ }),
475
+ onChange: function onChange(_ref2) {
476
+ var target = _ref2.target;
477
+ return _onChange({
478
+ id: id,
479
+ value: target.value
480
+ });
481
+ },
482
+ onFocus: function onFocus(_ref3) {
483
+ var target = _ref3.target;
484
+ return target.select();
485
+ },
486
+ onBlur: function onBlur(event) {
487
+ _onChange({
488
+ id: id,
489
+ value: event.target.value,
490
+ isOnBlur: true
491
+ });
492
+ _onBlur === null || _onBlur === void 0 || _onBlur(id, event.target.value);
493
+ for (var _len = arguments.length, args = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {
494
+ args[_key - 1] = arguments[_key];
495
+ }
496
+ field.onBlur.apply(field, [event].concat(args));
497
+ }
498
+ })
499
+ })]
500
+ })
501
+ }));
502
+ };
503
+
504
+ var getOrderedOptions = function getOrderedOptions() {
505
+ var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : [];
506
+ return options.sort(function (a, b) {
507
+ return a.position - b.position;
508
+ });
509
+ };
510
+ var filterDeletedRecords = function filterDeletedRecords(options, destroyFlagName) {
511
+ return reject(prop(destroyFlagName), options);
512
+ };
513
+ var randomId = function randomId() {
514
+ return Math.random().toString(36).substring(2, 13);
515
+ };
516
+ var getUniqueOptionId = function getUniqueOptionId(option) {
517
+ var _option$id, _option$position, _option$label;
518
+ return option.altId || ((_option$id = option.id) === null || _option$id === void 0 ? void 0 : _option$id.toString()) || ((_option$position = option.position) === null || _option$position === void 0 ? void 0 : _option$position.toString()) || slugify((_option$label = option.label) !== null && _option$label !== void 0 ? _option$label : "");
519
+ };
520
+ var generatePlaceholder = function generatePlaceholder(itemLabel, count) {
521
+ return "".concat(itemLabel, " ").concat(count + 1);
522
+ };
523
+ var _generateLabel = function generateLabel(itemLabel, options, count) {
524
+ var labelCount = count || options.length + 1;
525
+ var tempLabel = "".concat(itemLabel, " ").concat(labelCount);
526
+ var isDuplicateLabel = pluck("label", options).includes(tempLabel);
527
+ return isDuplicateLabel ? _generateLabel(itemLabel, options, labelCount + 1) : tempLabel;
528
+ };
529
+ var resolveFormikValue = function resolveFormikValue(path, values) {
530
+ if (!path || typeof path !== "string") {
531
+ return [];
532
+ }
533
+ return path.replace(/\[|\]/g, ".").split(".").filter(Boolean).reduce(function (acc, key) {
534
+ return acc && acc[key] !== undefined ? acc[key] : undefined;
535
+ }, values);
536
+ };
537
+ var handleNumberKeyDown = function handleNumberKeyDown(event, onKeyDown) {
538
+ var allowedKeys = ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", ".", "-"];
539
+ var controlKeys = ["Backspace", "Delete", "ArrowUp", "ArrowDown", "ArrowLeft", "ArrowRight", "Tab", "Enter"];
540
+ if ((event.ctrlKey || event.metaKey) && ["a", "c", "v", "x", "z"].includes(event.key.toLowerCase())) {
541
+ return;
542
+ }
543
+ if (![].concat(allowedKeys, controlKeys).includes(event.key)) {
544
+ event.preventDefault();
545
+ }
546
+ onKeyDown === null || onKeyDown === void 0 || onKeyDown(event);
547
+ };
548
+ var handleInputBlur = function handleInputBlur(event, _ref) {
549
+ var id = _ref.id,
550
+ inputIndex = _ref.inputIndex,
551
+ onChange = _ref.onChange,
552
+ onBlur = _ref.onBlur,
553
+ field = _ref.field,
554
+ config = _ref.config;
555
+ var value = event.target.value;
556
+ var finalValue = !value && config !== null && config !== void 0 && config.defaultValue ? config.defaultValue : value;
557
+ onChange({
558
+ id: id,
559
+ value: finalValue,
560
+ inputIndex: inputIndex,
561
+ isOnBlur: true
562
+ });
563
+ onBlur === null || onBlur === void 0 || onBlur(id, finalValue, inputIndex);
564
+ field.onBlur(event);
565
+ };
566
+ var getMultiInputError = function getMultiInputError(isMultiInput, meta) {
567
+ if (!isMultiInput || !meta.error) return null;
568
+ if (Array.isArray(meta.error)) {
569
+ var hasValuesError = meta.error.some(function (optionError) {
570
+ return Array.isArray(optionError.values) && optionError.values.some(identity);
571
+ });
572
+ if (hasValuesError) {
573
+ return t("neetoMolecules.optionFields.allFieldsRequired");
574
+ }
575
+ }
576
+ return null;
577
+ };
578
+
579
+ function ownKeys$4(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
580
+ function _objectSpread$4(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys$4(Object(t), true).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys$4(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
581
+ var MultiInputOption = withT(function (_ref) {
582
+ var shouldFocus = _ref.shouldFocus,
583
+ _ref$hideDeleteOption = _ref.hideDeleteOption,
584
+ hideDeleteOption = _ref$hideDeleteOption === void 0 ? false : _ref$hideDeleteOption,
585
+ _ref$hideCloneOption = _ref.hideCloneOption,
586
+ hideCloneOption = _ref$hideCloneOption === void 0 ? false : _ref$hideCloneOption,
587
+ innerRef = _ref.innerRef,
588
+ draggableProps = _ref.draggableProps,
589
+ dragHandleProps = _ref.dragHandleProps,
590
+ _onKeyDown = _ref.onKeyDown,
591
+ onDelete = _ref.onDelete,
592
+ onClone = _ref.onClone,
593
+ _onChange = _ref.onChange,
594
+ optionIndex = _ref.optionIndex,
595
+ disabled = _ref.disabled,
596
+ id = _ref.id,
597
+ isDraggable = _ref.isDraggable,
598
+ name = _ref.name,
599
+ placeholder = _ref.placeholder,
600
+ _onBlur = _ref.onBlur,
601
+ arrayHelpers = _ref.arrayHelpers,
602
+ _ref$inputConfig = _ref.inputConfig,
603
+ inputConfig = _ref$inputConfig === void 0 ? [] : _ref$inputConfig,
604
+ isCheckboxEnabled = _ref.isCheckboxEnabled;
605
+ return /*#__PURE__*/jsx("div", _objectSpread$4(_objectSpread$4({
606
+ ref: innerRef
607
+ }, _objectSpread$4(_objectSpread$4({}, draggableProps), dragHandleProps)), {}, {
608
+ "data-testid": "form-block-multi-options",
609
+ children: /*#__PURE__*/jsxs("div", {
610
+ className: "nf-multi-input-options group relative mb-2 flex items-center gap-1",
611
+ children: [isDraggable && /*#__PURE__*/jsx(DragHandle, _objectSpread$4(_objectSpread$4({}, dragHandleProps), {}, {
612
+ "data-testid": "drag-handle-".concat(optionIndex)
613
+ })), isCheckboxEnabled && /*#__PURE__*/jsx(Checkbox, {
614
+ name: name,
615
+ optionIndex: optionIndex
616
+ }), /*#__PURE__*/jsx("div", {
617
+ className: "flex flex-1 flex-col gap-2",
618
+ children: /*#__PURE__*/jsx("div", {
619
+ className: "flex gap-2",
620
+ children: inputConfig.map(function (config, inputIndex) {
621
+ var _field$value;
622
+ var inputName = "".concat(name.replace(".label", ""), ".values.").concat(inputIndex);
623
+ var inputType = config.type || INPUT_TYPES.TEXT;
624
+ var isNumberType = inputType === INPUT_TYPES.NUMBER;
625
+ var _useField = useField(inputName),
626
+ _useField2 = _slicedToArray(_useField, 1),
627
+ field = _useField2[0];
628
+ return /*#__PURE__*/jsx("div", {
629
+ className: "flex-1",
630
+ children: /*#__PURE__*/jsx(Input, _objectSpread$4(_objectSpread$4({
631
+ disabled: disabled,
632
+ autoFocus: shouldFocus && inputIndex === 0,
633
+ "data-testid": "multi-option-input-".concat(optionIndex, "-").concat(inputIndex)
634
+ }, isNumberType && {
635
+ min: config.min,
636
+ max: config.max
637
+ }), {}, {
638
+ name: inputName,
639
+ type: inputType,
640
+ value: (_field$value = field.value) !== null && _field$value !== void 0 ? _field$value : config.defaultValue,
641
+ placeholder: config.placeholder || "".concat(placeholder, " ").concat(inputIndex + 1),
642
+ onFocus: function onFocus(_ref2) {
643
+ var target = _ref2.target;
644
+ return target.select();
645
+ },
646
+ onBlur: function onBlur(event) {
647
+ return handleInputBlur(event, {
648
+ id: id,
649
+ inputIndex: inputIndex,
650
+ onChange: _onChange,
651
+ onBlur: _onBlur,
652
+ field: field,
653
+ config: config
654
+ });
655
+ },
656
+ onChange: function onChange(_ref3) {
657
+ var target = _ref3.target;
658
+ return _onChange({
659
+ id: id,
660
+ value: target.value,
661
+ inputIndex: inputIndex
662
+ });
663
+ },
664
+ onKeyDown: function onKeyDown(event) {
665
+ return isNumberType ? handleNumberKeyDown(event, _onKeyDown) : _onKeyDown === null || _onKeyDown === void 0 ? void 0 : _onKeyDown(event);
666
+ }
667
+ }))
668
+ }, inputIndex);
669
+ })
670
+ })
671
+ }), /*#__PURE__*/jsx(OptionActions, {
672
+ arrayHelpers: arrayHelpers,
673
+ disabled: disabled,
674
+ hideCloneOption: hideCloneOption,
675
+ hideDeleteOption: hideDeleteOption,
676
+ id: id,
677
+ onClone: onClone,
678
+ onDelete: onDelete,
679
+ optionIndex: optionIndex
680
+ })]
681
+ })
682
+ }));
683
+ });
684
+
685
+ var DEFAULT_OPTION_LABEL = i18next.t("neetoMolecules.optionFields.defaultOption");
686
+ var IMAGE_UPLOAD_CONFIG = {
687
+ maxImageSize: 1,
688
+ allowedImageTypes: {
689
+ "image/jpg": [".jpg", ".jpeg"],
690
+ "image/png": [".png"],
691
+ "image/svg": [".svg"]
692
+ }
693
+ };
694
+ var INPUT_TYPES = {
695
+ TEXT: "text",
696
+ NUMBER: "number"
697
+ };
698
+ var OPTION_ACTIONS = {
699
+ UPDATE_IMAGE: "update_image",
700
+ UPDATE_VALUES: "update_values",
701
+ UPDATE_LABEL: "update_label",
702
+ DELETE: "delete",
703
+ REORDER: "reorder",
704
+ ADD: "add",
705
+ BULK_ADD: "bulk_add",
706
+ CLONE: "clone"
707
+ };
708
+ var OPTION_MAP = {
709
+ multiInput: MultiInputOption,
710
+ pictureChoice: ImageOption,
711
+ editor: EditorOption,
712
+ input: InputOption
713
+ };
714
+
715
+ var FormError = function FormError(_ref) {
716
+ var error = _ref.error;
717
+ if (isNotPresent(error) || typeof error !== "string") return null;
718
+ return /*#__PURE__*/jsx(Typography, {
719
+ className: "text-destructive mt-1",
720
+ "data-testid": "validation-error-container",
721
+ variant: "body3",
722
+ children: error
723
+ });
724
+ };
725
+
726
+ function ownKeys$3(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
727
+ function _objectSpread$3(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys$3(Object(t), true).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys$3(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
728
+ var attachPosition = function attachPosition(options) {
729
+ return options.map(function (option, index) {
730
+ return _objectSpread$3(_objectSpread$3({}, option), {}, {
731
+ position: index
732
+ });
733
+ });
734
+ };
735
+ var useOptionFields = function useOptionFields(_ref) {
736
+ var options = _ref.options,
737
+ onChange = _ref.onChange,
738
+ shouldDestroy = _ref.shouldDestroy,
739
+ itemLabel = _ref.itemLabel,
740
+ shouldResetEmptyOptionOnBlur = _ref.shouldResetEmptyOptionOnBlur,
741
+ name = _ref.name,
742
+ destroyFlagName = _ref.destroyFlagName,
743
+ isNewItemsPrefilled = _ref.isNewItemsPrefilled,
744
+ isAddOptionEnabled = _ref.isAddOptionEnabled,
745
+ isPictureChoice = _ref.isPictureChoice,
746
+ isMultiInput = _ref.isMultiInput,
747
+ inputConfig = _ref.inputConfig;
748
+ var _useTranslation = useTranslation(),
749
+ t = _useTranslation.t;
750
+ var _useState = useState(false),
751
+ _useState2 = _slicedToArray(_useState, 2),
752
+ shouldFocus = _useState2[0],
753
+ setShouldFocus = _useState2[1];
754
+ var editingOptionDetailsRef = useRef({
755
+ id: "",
756
+ value: ""
757
+ });
758
+ var _useField = useField(name),
759
+ _useField2 = _slicedToArray(_useField, 3);
760
+ _useField2[0];
761
+ _useField2[1];
762
+ var helpers = _useField2[2];
763
+ var setValue = helpers.setValue;
764
+ var handleChange = function handleChange(_ref2) {
765
+ var id = _ref2.id,
766
+ value = _ref2.value,
767
+ _ref2$inputIndex = _ref2.inputIndex,
768
+ inputIndex = _ref2$inputIndex === void 0 ? 0 : _ref2$inputIndex,
769
+ _ref2$isOnBlur = _ref2.isOnBlur,
770
+ isOnBlur = _ref2$isOnBlur === void 0 ? false : _ref2$isOnBlur,
771
+ _ref2$fieldType = _ref2.fieldType,
772
+ fieldType = _ref2$fieldType === void 0 ? "label" : _ref2$fieldType;
773
+ var index = findIndexById(id, options);
774
+ var currentOption = options[index];
775
+
776
+ // Handle image updates for picture choice (no blur/reset logic needed)
777
+ if (isPictureChoice && fieldType === "image") {
778
+ var _nextOptions = assocPath([index, "image"], value, options);
779
+ setValue(_nextOptions);
780
+ onChange === null || onChange === void 0 || onChange(_nextOptions, OPTION_ACTIONS.UPDATE_IMAGE, index);
781
+ return;
782
+ }
783
+
784
+ // Handle multi-input changes
785
+ if (isMultiInput && typeof inputIndex === "number") {
786
+ var currentValues = currentOption.values || [];
787
+ var newValues = clone(currentValues);
788
+ newValues[inputIndex] = value;
789
+ var _nextOptions2 = assocPath([index, "values"], newValues, options);
790
+ setValue(_nextOptions2);
791
+ onChange === null || onChange === void 0 || onChange(_nextOptions2, OPTION_ACTIONS.UPDATE_VALUES, index);
792
+ return;
793
+ }
794
+
795
+ // Common blur event handling - ignores onBlur if value is not cleared
796
+ // The value will be reset to initial value if user clicks outside after clearing
797
+ if (isOnBlur && (isNotEmpty(value) || !shouldResetEmptyOptionOnBlur)) {
798
+ return;
799
+ }
800
+ if (editingOptionDetailsRef.current.id !== id) {
801
+ editingOptionDetailsRef.current = {
802
+ id: id,
803
+ value: currentOption.label
804
+ };
805
+ }
806
+ var valueToUpdate = isOnBlur ? editingOptionDetailsRef.current.value : value;
807
+
808
+ // Update options with the determined value (always updating label field)
809
+ var nextOptions = assocPath([index, "label"], valueToUpdate, options);
810
+ setValue(nextOptions);
811
+ onChange === null || onChange === void 0 || onChange(nextOptions, OPTION_ACTIONS.UPDATE_LABEL, index);
812
+ };
813
+ var handleDelete = function handleDelete(id, arrayHelpers) {
814
+ var nextOptions;
815
+ var indexToDelete = findIndexById(id, options);
816
+ if (shouldDestroy) {
817
+ nextOptions = assocPath([indexToDelete, destroyFlagName], true, options);
818
+ setValue(nextOptions);
819
+ } else {
820
+ arrayHelpers.remove(indexToDelete);
821
+ nextOptions = attachPosition(remove(indexToDelete, 1, options));
822
+ }
823
+ onChange === null || onChange === void 0 || onChange(nextOptions, OPTION_ACTIONS.DELETE, indexToDelete);
824
+ };
825
+ var handleDragEnd = function handleDragEnd(_ref3) {
826
+ var source = _ref3.source,
827
+ destination = _ref3.destination;
828
+ // When dragged outside of draggable
829
+ if (destination === null) return;
830
+ var deletedOptions = options.filter(prop(destroyFlagName));
831
+ var filteredOptions = filterDeletedRecords(options, destroyFlagName);
832
+ var nextOptions = move(source.index, destination.index, filteredOptions);
833
+ var finalOptions = attachPosition(nextOptions);
834
+ setValue([].concat(_toConsumableArray(deletedOptions), _toConsumableArray(finalOptions)));
835
+ onChange === null || onChange === void 0 || onChange([].concat(_toConsumableArray(deletedOptions), _toConsumableArray(finalOptions)), OPTION_ACTIONS.REORDER);
836
+ };
837
+ var handleAddOption = function handleAddOption() {
838
+ var id = randomId();
839
+ var position = options.length;
840
+ var newOption = _objectSpread$3(_objectSpread$3({
841
+ id: "draft-".concat(id),
842
+ altId: "alt-".concat(id),
843
+ label: isNewItemsPrefilled ? _generateLabel(itemLabel, options) : "",
844
+ position: position
845
+ }, isPictureChoice && {
846
+ image: null
847
+ }), isMultiInput && {
848
+ values: inputConfig.map(function (config) {
849
+ return config.defaultValue || "";
850
+ })
851
+ });
852
+ setShouldFocus(true);
853
+ var nextOptions = append(newOption, options);
854
+ setValue(nextOptions);
855
+ onChange === null || onChange === void 0 || onChange(nextOptions, OPTION_ACTIONS.ADD, position);
856
+ };
857
+ var handleBulkAddOption = function handleBulkAddOption(optionsString) {
858
+ setShouldFocus(true);
859
+ var position = options.length;
860
+ var newOptions = optionsString.trim().split(/\r?\n|,/).filter(isNotEmpty).map(function (option, index) {
861
+ return {
862
+ id: "draft-".concat(randomId()),
863
+ altId: "alt-".concat(randomId()),
864
+ label: option.trim(),
865
+ position: position + index
866
+ };
867
+ });
868
+ var nextOptions = [].concat(_toConsumableArray(options), _toConsumableArray(newOptions));
869
+ setValue(nextOptions);
870
+ onChange === null || onChange === void 0 || onChange(nextOptions, OPTION_ACTIONS.BULK_ADD, position);
871
+ };
872
+ var handleClone = function handleClone(id) {
873
+ var index = findIndexById(id, options);
874
+ var optionToClone = options[index];
875
+ if (!optionToClone) return;
876
+ var newId = randomId();
877
+ var clonedOption = _objectSpread$3(_objectSpread$3({}, optionToClone), {}, {
878
+ id: "draft-".concat(newId),
879
+ altId: "alt-".concat(newId),
880
+ label: isMultiInput ? optionToClone.label : t("neetoMolecules.optionFields.clonedOption", {
881
+ originalLabel: optionToClone.label
882
+ })
883
+ }, isMultiInput && optionToClone.values && {
884
+ values: clone(optionToClone.values)
885
+ });
886
+ setShouldFocus(true);
887
+ var nextOptions = insert(index + 1, clonedOption, options);
888
+ var optionsWithUpdatedPositions = attachPosition(nextOptions);
889
+ setValue(optionsWithUpdatedPositions);
890
+ onChange === null || onChange === void 0 || onChange(optionsWithUpdatedPositions, OPTION_ACTIONS.CLONE, index + 1);
891
+ };
892
+ var handleKeyDown = function handleKeyDown(event) {
893
+ if (event.key !== "Enter") return;
894
+ var form = event.target.form;
895
+ var inputs = Array.from(form.querySelectorAll("input"));
896
+ var currentInput = inputs.indexOf(event.target);
897
+ if (currentInput >= inputs.length - 1) {
898
+ isAddOptionEnabled && handleAddOption();
899
+ } else {
900
+ var _inputs;
901
+ (_inputs = inputs[currentInput + 1]) === null || _inputs === void 0 || _inputs.focus();
902
+ event.preventDefault();
903
+ }
904
+ event.stopPropagation();
905
+ };
906
+ return {
907
+ shouldFocus: shouldFocus,
908
+ handleAddOption: handleAddOption,
909
+ handleBulkAddOption: handleBulkAddOption,
910
+ handleChange: handleChange,
911
+ handleKeyDown: handleKeyDown,
912
+ handleDelete: handleDelete,
913
+ handleDragEnd: handleDragEnd,
914
+ handleClone: handleClone
915
+ };
916
+ };
917
+
918
+ function ownKeys$2(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
919
+ function _objectSpread$2(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys$2(Object(t), true).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys$2(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
920
+ var BlockOption = withT(function (_ref) {
921
+ var t = _ref.t,
922
+ innerRef = _ref.innerRef,
923
+ _ref$hideDeleteOption = _ref.hideDeleteOption,
924
+ hideDeleteOption = _ref$hideDeleteOption === void 0 ? false : _ref$hideDeleteOption,
925
+ _ref$hideCloneOption = _ref.hideCloneOption,
926
+ hideCloneOption = _ref$hideCloneOption === void 0 ? false : _ref$hideCloneOption,
927
+ draggableProps = _ref.draggableProps,
928
+ dragHandleProps = _ref.dragHandleProps,
929
+ label = _ref.label,
930
+ onEdit = _ref.onEdit,
931
+ onClone = _ref.onClone,
932
+ handleDeleteClick = _ref.handleDeleteClick,
933
+ id = _ref.id,
934
+ isDraggable = _ref.isDraggable,
935
+ optionIndex = _ref.optionIndex,
936
+ arrayHelpers = _ref.arrayHelpers,
937
+ isCheckboxEnabled = _ref.isCheckboxEnabled,
938
+ name = _ref.name,
939
+ placeholder = _ref.placeholder;
940
+ return /*#__PURE__*/jsx("div", _objectSpread$2(_objectSpread$2(_objectSpread$2({
941
+ ref: innerRef
942
+ }, draggableProps), dragHandleProps), {}, {
943
+ children: /*#__PURE__*/jsxs("div", {
944
+ className: "border-border hover:bg-muted group relative mb-2 ml-3 flex h-10 cursor-pointer items-center gap-2 rounded border p-3 shadow-xs transition-colors duration-300 ease-in-out",
945
+ "data-testid": "address-field-block",
946
+ children: [isDraggable && /*#__PURE__*/jsx(DragHandle, _objectSpread$2(_objectSpread$2({}, dragHandleProps), {}, {
947
+ className: "absolute top-1/2 -left-0.5 -translate-x-full -translate-y-1/2",
948
+ "data-testid": "drag-handle-".concat(optionIndex)
949
+ })), isCheckboxEnabled && /*#__PURE__*/jsx(Checkbox, {
950
+ name: name,
951
+ optionIndex: optionIndex
952
+ }), /*#__PURE__*/jsx(Typography, {
953
+ "data-testid": "address-text-field",
954
+ variant: "body2",
955
+ className: classnames("flex-grow truncate leading-4", {
956
+ "text-muted-foreground": isNotPresent(label)
957
+ }),
958
+ children: label || placeholder
959
+ }), /*#__PURE__*/jsxs("div", {
960
+ className: "flex items-center justify-end gap-2 opacity-0 group-hover:opacity-100",
961
+ children: [/*#__PURE__*/jsx(Button, {
962
+ className: "hover:bg-muted rounded p-1",
963
+ "data-testid": "address-field-edit-button",
964
+ icon: Pencil,
965
+ size: "sm",
966
+ variant: "ghost",
967
+ tooltipProps: {
968
+ content: t("neetoMolecules.common.actions.edit"),
969
+ position: "top"
970
+ },
971
+ onClick: function onClick() {
972
+ return onEdit(id);
973
+ }
974
+ }), /*#__PURE__*/jsx(OptionActions, {
975
+ arrayHelpers: arrayHelpers,
976
+ hideCloneOption: hideCloneOption,
977
+ hideDeleteOption: hideDeleteOption,
978
+ id: id,
979
+ onClone: onClone,
980
+ optionIndex: optionIndex,
981
+ className: "flex items-center gap-2",
982
+ onDelete: handleDeleteClick
983
+ })]
984
+ })]
985
+ })
986
+ }));
987
+ });
988
+
989
+ function ownKeys$1(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
990
+ function _objectSpread$1(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys$1(Object(t), true).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys$1(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
991
+ var OptionField = function OptionField(_ref) {
992
+ var option = _ref.option,
993
+ editable = _ref.editable,
994
+ dragHandleProps = _ref.dragHandleProps,
995
+ draggableProps = _ref.draggableProps,
996
+ handleDeleteClick = _ref.handleDeleteClick,
997
+ handleCloneClick = _ref.handleCloneClick,
998
+ hideDeleteOption = _ref.hideDeleteOption,
999
+ hideCloneOption = _ref.hideCloneOption,
1000
+ innerRef = _ref.innerRef,
1001
+ onEdit = _ref.onEdit,
1002
+ draggable = _ref.draggable,
1003
+ disabled = _ref.disabled,
1004
+ isCheckboxEnabled = _ref.isCheckboxEnabled,
1005
+ isPictureChoice = _ref.isPictureChoice,
1006
+ isTextArea = _ref.isTextArea,
1007
+ isMultiInput = _ref.isMultiInput,
1008
+ isEditor = _ref.isEditor,
1009
+ inputConfig = _ref.inputConfig,
1010
+ shouldFocus = _ref.shouldFocus,
1011
+ isEditable = _ref.isEditable,
1012
+ itemLabel = _ref.itemLabel,
1013
+ handleChange = _ref.handleChange,
1014
+ handleKeyDown = _ref.handleKeyDown,
1015
+ name = _ref.name,
1016
+ optionIndex = _ref.optionIndex,
1017
+ onBlur = _ref.onBlur,
1018
+ arrayHelpers = _ref.arrayHelpers;
1019
+ var commonProps = {
1020
+ id: option.id,
1021
+ arrayHelpers: arrayHelpers,
1022
+ dragHandleProps: dragHandleProps,
1023
+ draggableProps: draggableProps,
1024
+ hideCloneOption: hideCloneOption,
1025
+ hideDeleteOption: hideDeleteOption,
1026
+ innerRef: innerRef,
1027
+ isCheckboxEnabled: isCheckboxEnabled,
1028
+ name: name,
1029
+ optionIndex: optionIndex,
1030
+ isDraggable: draggable && !disabled,
1031
+ onClone: handleCloneClick
1032
+ };
1033
+ var Component = isMultiInput && OPTION_MAP.multiInput || isPictureChoice && OPTION_MAP.pictureChoice || isEditor && OPTION_MAP.editor || OPTION_MAP.input;
1034
+ var placeholder = generatePlaceholder(itemLabel, optionIndex);
1035
+ return editable ? /*#__PURE__*/jsx(Component, _objectSpread$1(_objectSpread$1({}, _objectSpread$1(_objectSpread$1({}, commonProps), {}, {
1036
+ inputConfig: inputConfig,
1037
+ isEditor: isEditor,
1038
+ isTextArea: isTextArea,
1039
+ onBlur: onBlur,
1040
+ option: option,
1041
+ placeholder: placeholder,
1042
+ shouldFocus: shouldFocus
1043
+ })), {}, {
1044
+ disabled: !isEditable || disabled,
1045
+ onChange: handleChange,
1046
+ onDelete: handleDeleteClick,
1047
+ onKeyDown: handleKeyDown
1048
+ })) : /*#__PURE__*/jsx(BlockOption, _objectSpread$1(_objectSpread$1({}, _objectSpread$1(_objectSpread$1({}, commonProps), {}, {
1049
+ handleDeleteClick: handleDeleteClick,
1050
+ onEdit: onEdit,
1051
+ placeholder: placeholder
1052
+ })), {}, {
1053
+ label: option.label
1054
+ }));
1055
+ };
1056
+
1057
+ function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
1058
+ function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), true).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
1059
+ var OptionFields = function OptionFields(_ref) {
1060
+ var _field$value;
1061
+ var name = _ref.name,
1062
+ error = _ref.error,
1063
+ onDelete = _ref.onDelete,
1064
+ onClone = _ref.onClone,
1065
+ onChange = _ref.onChange,
1066
+ onBlur = _ref.onBlur,
1067
+ _ref$onEdit = _ref.onEdit,
1068
+ onEdit = _ref$onEdit === void 0 ? noop : _ref$onEdit,
1069
+ _ref$buttonProps = _ref.buttonProps,
1070
+ buttonProps = _ref$buttonProps === void 0 ? {} : _ref$buttonProps,
1071
+ _ref$minOptions = _ref.minOptions,
1072
+ minOptions = _ref$minOptions === void 0 ? 0 : _ref$minOptions,
1073
+ _ref$draggable = _ref.draggable,
1074
+ draggable = _ref$draggable === void 0 ? false : _ref$draggable,
1075
+ _ref$editable = _ref.editable,
1076
+ editable = _ref$editable === void 0 ? true : _ref$editable,
1077
+ _ref$disabled = _ref.disabled,
1078
+ disabled = _ref$disabled === void 0 ? false : _ref$disabled,
1079
+ _ref$isAddOptionEnabl = _ref.isAddOptionEnabled,
1080
+ isAddOptionEnabled = _ref$isAddOptionEnabl === void 0 ? true : _ref$isAddOptionEnabl,
1081
+ _ref$isDeleteOptionEn = _ref.isDeleteOptionEnabled,
1082
+ isDeleteOptionEnabled = _ref$isDeleteOptionEn === void 0 ? true : _ref$isDeleteOptionEn,
1083
+ _ref$isCloneOptionEna = _ref.isCloneOptionEnabled,
1084
+ isCloneOptionEnabled = _ref$isCloneOptionEna === void 0 ? false : _ref$isCloneOptionEna,
1085
+ _ref$isCheckboxEnable = _ref.isCheckboxEnabled,
1086
+ isCheckboxEnabled = _ref$isCheckboxEnable === void 0 ? false : _ref$isCheckboxEnable,
1087
+ _ref$isPictureChoice = _ref.isPictureChoice,
1088
+ isPictureChoice = _ref$isPictureChoice === void 0 ? false : _ref$isPictureChoice,
1089
+ _ref$isTextArea = _ref.isTextArea,
1090
+ isTextArea = _ref$isTextArea === void 0 ? false : _ref$isTextArea,
1091
+ _ref$isMultiInput = _ref.isMultiInput,
1092
+ isMultiInput = _ref$isMultiInput === void 0 ? false : _ref$isMultiInput,
1093
+ _ref$isEditor = _ref.isEditor,
1094
+ isEditor = _ref$isEditor === void 0 ? false : _ref$isEditor,
1095
+ _ref$inputConfig = _ref.inputConfig,
1096
+ inputConfig = _ref$inputConfig === void 0 ? [] : _ref$inputConfig,
1097
+ _ref$shouldDestroy = _ref.shouldDestroy,
1098
+ shouldDestroy = _ref$shouldDestroy === void 0 ? false : _ref$shouldDestroy,
1099
+ _ref$destroyFlagName = _ref.destroyFlagName,
1100
+ destroyFlagName = _ref$destroyFlagName === void 0 ? "deleted" : _ref$destroyFlagName,
1101
+ _ref$shouldResetEmpty = _ref.shouldResetEmptyOptionOnBlur,
1102
+ shouldResetEmptyOptionOnBlur = _ref$shouldResetEmpty === void 0 ? true : _ref$shouldResetEmpty,
1103
+ _ref$isNewItemsPrefil = _ref.isNewItemsPrefilled,
1104
+ isNewItemsPrefilled = _ref$isNewItemsPrefil === void 0 ? true : _ref$isNewItemsPrefil,
1105
+ _ref$itemLabel = _ref.itemLabel,
1106
+ itemLabel = _ref$itemLabel === void 0 ? DEFAULT_OPTION_LABEL : _ref$itemLabel,
1107
+ _ref$bulkActionProps = _ref.bulkActionProps,
1108
+ bulkActionProps = _ref$bulkActionProps === void 0 ? {
1109
+ enabled: false,
1110
+ bulkAddHelpDocUrl: ""
1111
+ } : _ref$bulkActionProps;
1112
+ var _useTranslation = useTranslation(),
1113
+ t = _useTranslation.t;
1114
+ var _useState = useState(false),
1115
+ _useState2 = _slicedToArray(_useState, 2),
1116
+ isBulkOptionModalOpen = _useState2[0],
1117
+ setIsBulkOptionModalOpen = _useState2[1];
1118
+ var _useField = useField(name),
1119
+ _useField2 = _slicedToArray(_useField, 2),
1120
+ field = _useField2[0],
1121
+ meta = _useField2[1];
1122
+ var fieldError = meta.touched ? meta.error : null;
1123
+ var multiInputError = getMultiInputError(isMultiInput, meta);
1124
+ var options = (_field$value = field.value) !== null && _field$value !== void 0 ? _field$value : [];
1125
+ var _useOptionFields = useOptionFields({
1126
+ options: options,
1127
+ onChange: onChange,
1128
+ shouldDestroy: shouldDestroy,
1129
+ itemLabel: itemLabel,
1130
+ shouldResetEmptyOptionOnBlur: shouldResetEmptyOptionOnBlur,
1131
+ destroyFlagName: destroyFlagName,
1132
+ name: name,
1133
+ isNewItemsPrefilled: isNewItemsPrefilled,
1134
+ isAddOptionEnabled: isAddOptionEnabled,
1135
+ isPictureChoice: isPictureChoice,
1136
+ isMultiInput: isMultiInput,
1137
+ inputConfig: inputConfig
1138
+ }),
1139
+ shouldFocus = _useOptionFields.shouldFocus,
1140
+ handleAddOption = _useOptionFields.handleAddOption,
1141
+ handleBulkAddOption = _useOptionFields.handleBulkAddOption,
1142
+ handleChange = _useOptionFields.handleChange,
1143
+ handleKeyDown = _useOptionFields.handleKeyDown,
1144
+ handleDelete = _useOptionFields.handleDelete,
1145
+ handleDragEnd = _useOptionFields.handleDragEnd,
1146
+ handleClone = _useOptionFields.handleClone;
1147
+
1148
+ // Temporarily disables the modifications to options when changed are getting saved to server
1149
+ // This condition only needed for server id generated types
1150
+ var isEditable = true;
1151
+ if (shouldDestroy) isEditable = options.every(prop("id") || error);
1152
+ var orderedOptions = getOrderedOptions(options);
1153
+ var filteredOptions = orderedOptions.filter(function (_ref2) {
1154
+ var deleted = _ref2[destroyFlagName];
1155
+ return !deleted;
1156
+ });
1157
+ var hideDeleteOption = filteredOptions.length <= minOptions || disabled || !isDeleteOptionEnabled;
1158
+ var hideCloneOption = disabled || !isCloneOptionEnabled;
1159
+ var optionFieldProps = {
1160
+ disabled: disabled,
1161
+ draggable: draggable,
1162
+ editable: editable,
1163
+ handleChange: handleChange,
1164
+ handleDeleteClick: onDelete !== null && onDelete !== void 0 ? onDelete : handleDelete,
1165
+ handleCloneClick: onClone !== null && onClone !== void 0 ? onClone : handleClone,
1166
+ handleKeyDown: handleKeyDown,
1167
+ hideDeleteOption: hideDeleteOption,
1168
+ hideCloneOption: hideCloneOption,
1169
+ inputConfig: inputConfig,
1170
+ isEditable: isEditable,
1171
+ isMultiInput: isMultiInput,
1172
+ isPictureChoice: isPictureChoice,
1173
+ isTextArea: isTextArea,
1174
+ itemLabel: itemLabel,
1175
+ onEdit: onEdit,
1176
+ onBlur: onBlur,
1177
+ shouldFocus: shouldFocus,
1178
+ isCheckboxEnabled: isCheckboxEnabled,
1179
+ isEditor: isEditor
1180
+ };
1181
+
1182
+ // To fix the element positioned incorrectly while dragging when in a pane or modal.
1183
+ // https://github.com/hello-pangea/dnd/issues/560#issuecomment-1679201455
1184
+ var renderDragClone = function renderDragClone(provided, _, rubric) {
1185
+ var draggingIndex = rubric["source"].index;
1186
+ var option = filteredOptions[draggingIndex];
1187
+ var formikIndex = findIndexById(option.id, options);
1188
+ return /*#__PURE__*/jsx(OptionField, _objectSpread(_objectSpread({}, _objectSpread(_objectSpread({}, optionFieldProps), {}, {
1189
+ option: option
1190
+ })), {}, {
1191
+ dragHandleProps: provided.dragHandleProps,
1192
+ innerRef: null,
1193
+ name: "".concat(name, ".").concat(formikIndex, ".label"),
1194
+ optionIndex: draggingIndex,
1195
+ draggableProps: _objectSpread(_objectSpread({}, provided.draggableProps), {}, {
1196
+ style: _objectSpread(_objectSpread({}, provided.draggableProps.style), {}, {
1197
+ zIndex: 999999
1198
+ })
1199
+ })
1200
+ }));
1201
+ };
1202
+ return /*#__PURE__*/jsxs("form", {
1203
+ onSubmit: function onSubmit(e) {
1204
+ return e.preventDefault();
1205
+ },
1206
+ children: [/*#__PURE__*/jsxs(DragDropContext, {
1207
+ onDragEnd: handleDragEnd,
1208
+ children: [/*#__PURE__*/jsx(Droppable, {
1209
+ droppableId: "neeto-molecules-option-fields-".concat(name),
1210
+ isDropDisabled: !draggable || disabled,
1211
+ renderClone: renderDragClone,
1212
+ children: function children(_ref3) {
1213
+ var _ref5;
1214
+ var innerRef = _ref3.innerRef,
1215
+ droppableProps = _ref3.droppableProps,
1216
+ placeholder = _ref3.placeholder;
1217
+ return /*#__PURE__*/jsxs("div", _objectSpread(_objectSpread({
1218
+ ref: innerRef
1219
+ }, droppableProps), {}, {
1220
+ children: [/*#__PURE__*/jsx(FieldArray, {
1221
+ name: name,
1222
+ children: function children(arrayHelpers) {
1223
+ var options = resolveFormikValue(name, arrayHelpers.form.values);
1224
+ return options === null || options === void 0 ? void 0 : options.map(function (option, index) {
1225
+ if (option !== null && option !== void 0 && option[destroyFlagName]) return null;
1226
+ var optionIndex = findIndexById(option.id, filteredOptions);
1227
+ return /*#__PURE__*/jsx(Draggable, {
1228
+ dataKey: getUniqueOptionId(option),
1229
+ draggableId: getUniqueOptionId(option),
1230
+ index: optionIndex,
1231
+ isDragDisabled: !draggable || disabled,
1232
+ children: function children(_ref4) {
1233
+ var innerRef = _ref4.innerRef,
1234
+ draggableProps = _ref4.draggableProps,
1235
+ dragHandleProps = _ref4.dragHandleProps;
1236
+ return /*#__PURE__*/jsx(OptionField, _objectSpread(_objectSpread({}, _objectSpread(_objectSpread({}, optionFieldProps), {}, {
1237
+ arrayHelpers: arrayHelpers,
1238
+ dragHandleProps: dragHandleProps,
1239
+ draggableProps: draggableProps,
1240
+ innerRef: innerRef,
1241
+ option: option,
1242
+ optionIndex: optionIndex
1243
+ })), {}, {
1244
+ name: "".concat(name, ".").concat(index, ".label")
1245
+ }));
1246
+ }
1247
+ }, getUniqueOptionId(option));
1248
+ });
1249
+ }
1250
+ }), placeholder, /*#__PURE__*/jsx(FormError, {
1251
+ error: (_ref5 = error !== null && error !== void 0 ? error : multiInputError) !== null && _ref5 !== void 0 ? _ref5 : fieldError
1252
+ })]
1253
+ }));
1254
+ }
1255
+ }), /*#__PURE__*/jsxs("div", {
1256
+ className: "mt-4 flex items-center justify-between",
1257
+ children: [isAddOptionEnabled && /*#__PURE__*/jsx(Button, _objectSpread({
1258
+ "data-testid": "add-option-link",
1259
+ disabled: !isEditable,
1260
+ icon: Plus,
1261
+ iconPosition: "left",
1262
+ label: t("neetoMolecules.optionFields.addOption"),
1263
+ size: "sm",
1264
+ variant: "link",
1265
+ onClick: handleAddOption
1266
+ }, buttonProps)), bulkActionProps.enabled && !isPictureChoice && !isMultiInput && /*#__PURE__*/jsx(Button, {
1267
+ "data-testid": "add-bulk-option-link",
1268
+ disabled: !isEditable,
1269
+ label: t("neetoMolecules.optionFields.addBulk"),
1270
+ size: "sm",
1271
+ variant: "ghost",
1272
+ onClick: function onClick() {
1273
+ return setIsBulkOptionModalOpen(true);
1274
+ }
1275
+ })]
1276
+ })]
1277
+ }), /*#__PURE__*/jsx(BulkOptionModal, {
1278
+ bulkAddHelpDocUrl: bulkActionProps.bulkAddHelpDocUrl,
1279
+ handleBulkAdd: handleBulkAddOption,
1280
+ isOpen: isBulkOptionModalOpen,
1281
+ onClose: function onClose() {
1282
+ return setIsBulkOptionModalOpen(false);
1283
+ }
1284
+ })]
1285
+ });
1286
+ };
1287
+
1288
+ export { OptionFields as default };
1289
+ //# sourceMappingURL=OptionFields.js.map