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