@bigbinary/neeto-molecules 5.1.16 → 5.1.18

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 (47) hide show
  1. package/dist/{Columns-gR00LMKF.js → Columns-BFBWAHqh.js} +2 -20
  2. package/dist/Columns-BFBWAHqh.js.map +1 -0
  3. package/dist/DocumentEditor.js +9 -3
  4. package/dist/DocumentEditor.js.map +1 -1
  5. package/dist/cjs/{Columns-Brpr2a_M.js → Columns-CHOsnC9n.js} +3 -21
  6. package/dist/cjs/Columns-CHOsnC9n.js.map +1 -0
  7. package/dist/cjs/DocumentEditor.js +9 -3
  8. package/dist/cjs/DocumentEditor.js.map +1 -1
  9. package/dist/cjs/grip-vertical-7cfWc2sE.js +24 -0
  10. package/dist/cjs/grip-vertical-7cfWc2sE.js.map +1 -0
  11. package/dist/cjs/v2/BrowserPreview.js +51 -0
  12. package/dist/cjs/v2/BrowserPreview.js.map +1 -0
  13. package/dist/cjs/v2/Builder.js +872 -0
  14. package/dist/cjs/v2/Builder.js.map +1 -0
  15. package/dist/cjs/v2/CalendarView.js +2 -1
  16. package/dist/cjs/v2/CalendarView.js.map +1 -1
  17. package/dist/cjs/v2/Codeblock.js +62 -0
  18. package/dist/cjs/v2/Codeblock.js.map +1 -0
  19. package/dist/cjs/v2/Columns.js +2 -1
  20. package/dist/cjs/v2/Columns.js.map +1 -1
  21. package/dist/cjs/v2/Currency.js +920 -0
  22. package/dist/cjs/v2/Currency.js.map +1 -0
  23. package/dist/cjs/v2/SubHeader.js +2 -1
  24. package/dist/cjs/v2/SubHeader.js.map +1 -1
  25. package/dist/grip-vertical-FEAaqOeC.js +22 -0
  26. package/dist/grip-vertical-FEAaqOeC.js.map +1 -0
  27. package/dist/v2/BrowserPreview.js +49 -0
  28. package/dist/v2/BrowserPreview.js.map +1 -0
  29. package/dist/v2/Builder.js +864 -0
  30. package/dist/v2/Builder.js.map +1 -0
  31. package/dist/v2/CalendarView.js +2 -1
  32. package/dist/v2/CalendarView.js.map +1 -1
  33. package/dist/v2/Codeblock.js +60 -0
  34. package/dist/v2/Codeblock.js.map +1 -0
  35. package/dist/v2/Columns.js +2 -1
  36. package/dist/v2/Columns.js.map +1 -1
  37. package/dist/v2/Currency.js +917 -0
  38. package/dist/v2/Currency.js.map +1 -0
  39. package/dist/v2/SubHeader.js +2 -1
  40. package/dist/v2/SubHeader.js.map +1 -1
  41. package/package.json +9 -9
  42. package/types/v2/BrowserPreview.d.ts +9 -0
  43. package/types/v2/Builder.d.ts +71 -0
  44. package/types/v2/Codeblock.d.ts +12 -0
  45. package/types/v2/Currency.d.ts +12 -0
  46. package/dist/Columns-gR00LMKF.js.map +0 -1
  47. package/dist/cjs/Columns-Brpr2a_M.js.map +0 -1
@@ -0,0 +1,872 @@
1
+ 'use strict';
2
+
3
+ var _slicedToArray = require('@babel/runtime/helpers/slicedToArray');
4
+ var React = require('react');
5
+ var neetoAtoms = require('@bigbinary/neeto-atoms');
6
+ var classnames = require('classnames');
7
+ var neetoCist = require('@bigbinary/neeto-cist');
8
+ var useBreakpoints = require('@bigbinary/neeto-commons-frontend/v2/react-utils/useBreakpoints');
9
+ var _defineProperty = require('@babel/runtime/helpers/defineProperty');
10
+ var general = require('@bigbinary/neeto-commons-frontend/v2/utils/general');
11
+ var ramda = require('ramda');
12
+ var reactI18next = require('react-i18next');
13
+ var dnd = require('@hello-pangea/dnd');
14
+ var reactUtils = require('@bigbinary/neeto-commons-frontend/v2/react-utils');
15
+ var jsxRuntime = require('react/jsx-runtime');
16
+ var gripVertical = require('../grip-vertical-7cfWc2sE.js');
17
+ var x = require('../x-B38UX0_0.js');
18
+ var _objectWithoutProperties = require('@babel/runtime/helpers/objectWithoutProperties');
19
+ var search = require('../search-BBuFYdmG.js');
20
+ var v2_MoreDropdown = require('./MoreDropdown.js');
21
+ var constants = require('@bigbinary/neeto-commons-frontend/v2/constants');
22
+ var plus = require('../plus-MoDFAiKt.js');
23
+ var createLucideIcon = require('../createLucideIcon-DBDhE7kE.js');
24
+ require('../ellipsis-BcfLTtl5.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$2 = [
35
+ ["path", { d: "M12 5v14", key: "s699le" }],
36
+ ["path", { d: "m19 12-7 7-7-7", key: "1idqje" }]
37
+ ];
38
+ const ArrowDown = createLucideIcon.createLucideIcon("arrow-down", __iconNode$2);
39
+
40
+ /**
41
+ * @license lucide-react v1.7.0 - ISC
42
+ *
43
+ * This source code is licensed under the ISC license.
44
+ * See the LICENSE file in the root directory of this source tree.
45
+ */
46
+
47
+
48
+ const __iconNode$1 = [
49
+ ["rect", { width: "18", height: "18", x: "3", y: "3", rx: "2", key: "afitv7" }],
50
+ ["path", { d: "M9 3v18", key: "fh3hqa" }],
51
+ ["path", { d: "m16 15-3-3 3-3", key: "14y99z" }]
52
+ ];
53
+ const PanelLeftClose = createLucideIcon.createLucideIcon("panel-left-close", __iconNode$1);
54
+
55
+ /**
56
+ * @license lucide-react v1.7.0 - ISC
57
+ *
58
+ * This source code is licensed under the ISC license.
59
+ * See the LICENSE file in the root directory of this source tree.
60
+ */
61
+
62
+
63
+ const __iconNode = [
64
+ [
65
+ "path",
66
+ {
67
+ d: "M4 14a1 1 0 0 1-.78-1.63l9.9-10.2a.5.5 0 0 1 .86.46l-1.92 6.02A1 1 0 0 0 13 10h7a1 1 0 0 1 .78 1.63l-9.9 10.2a.5.5 0 0 1-.86-.46l1.92-6.02A1 1 0 0 0 11 14z",
68
+ key: "1xq2db"
69
+ }
70
+ ]
71
+ ];
72
+ const Zap = createLucideIcon.createLucideIcon("zap", __iconNode);
73
+
74
+ var PANEL_TYPES = {
75
+ SUMMARY: "summary",
76
+ ELEMENTS: "elements"
77
+ };
78
+ var SELECTED_ELEMENTS_LIST_DROPPABLE_ID = "droppable-selected-element-container";
79
+ var ELEMENTS_LIST_DROPPABLE_ID = "droppable-element-container";
80
+ var PREVIEW_CONTAINER_DROPPABLE_ID = "droppable-form-preview-container";
81
+ var DROPPABLE_TYPES = {
82
+ ELEMENT: "element",
83
+ SELECTED_ELEMENT: "selected_element"
84
+ };
85
+
86
+ var NoResults$1 = reactUtils.withT(function (_ref) {
87
+ var t = _ref.t;
88
+ return /*#__PURE__*/jsxRuntime.jsx(neetoAtoms.Typography, {
89
+ className: "text-foreground flex h-full items-center justify-center text-base",
90
+ weight: "bold",
91
+ children: t("neetoMolecules.builderSidebar.noElements")
92
+ });
93
+ });
94
+ var NoResults = /*#__PURE__*/React.memo(NoResults$1);
95
+
96
+ var Element = function Element(_ref) {
97
+ var label = _ref.label,
98
+ description = _ref.description,
99
+ tooltip = _ref.tooltip,
100
+ Icon = _ref.icon,
101
+ _ref$isCreatable = _ref.isCreatable,
102
+ isCreatable = _ref$isCreatable === void 0 ? true : _ref$isCreatable,
103
+ onClick = _ref.onClick,
104
+ _ref$isDragDisabled = _ref.isDragDisabled,
105
+ isDragDisabled = _ref$isDragDisabled === void 0 ? false : _ref$isDragDisabled,
106
+ disabledElementTooltip = _ref.disabledElementTooltip,
107
+ isPlaceholder = _ref.isPlaceholder,
108
+ isDraggingOver = _ref.isDraggingOver,
109
+ isAddingNewElement = _ref.isAddingNewElement;
110
+ var handleClick = function handleClick(event) {
111
+ if (!isCreatable || isAddingNewElement) {
112
+ event.preventDefault();
113
+ return;
114
+ }
115
+ onClick(event);
116
+ };
117
+ var tooltipContent = isCreatable ? tooltip : disabledElementTooltip === null || disabledElementTooltip === void 0 ? void 0 : disabledElementTooltip(label);
118
+ return /*#__PURE__*/jsxRuntime.jsx(neetoAtoms.Tooltip, {
119
+ content: tooltipContent,
120
+ disabled: isDraggingOver || !tooltipContent,
121
+ position: "top",
122
+ children: /*#__PURE__*/jsxRuntime.jsxs("div", {
123
+ "data-testid": "add-".concat(general.joinHyphenCase(label), "-element"),
124
+ className: classnames("border-border bg-background hover:bg-muted relative mb-2 flex items-center gap-2 rounded-lg border p-3 transition-all duration-300 ease-in-out", {
125
+ "bg-muted cursor-not-allowed": !isCreatable,
126
+ "cursor-pointer": isCreatable,
127
+ "opacity-50": isPlaceholder,
128
+ "h-10": !description
129
+ }),
130
+ onClick: handleClick,
131
+ children: [!isDragDisabled && /*#__PURE__*/jsxRuntime.jsx("span", {
132
+ className: "absolute end-full top-1/2 me-0.5 flex-shrink-0 -translate-y-1/2 cursor-grab",
133
+ "data-testid": "drag-handle",
134
+ children: /*#__PURE__*/jsxRuntime.jsx(gripVertical.GripVertical, {
135
+ className: "text-muted-foreground hover:text-foreground transition-all duration-300 ease-in-out",
136
+ size: 16
137
+ })
138
+ }), /*#__PURE__*/jsxRuntime.jsxs("div", {
139
+ className: "flex flex-grow items-center gap-2",
140
+ children: [Icon && /*#__PURE__*/jsxRuntime.jsx(Icon, {
141
+ "data-testid": "form-icon"
142
+ }), /*#__PURE__*/jsxRuntime.jsxs("div", {
143
+ className: "flex min-w-0 flex-col",
144
+ children: [/*#__PURE__*/jsxRuntime.jsx(neetoAtoms.Typography, {
145
+ className: "leading-4",
146
+ variant: "body2",
147
+ children: label
148
+ }), description && /*#__PURE__*/jsxRuntime.jsx(neetoAtoms.Typography, {
149
+ className: "text-muted-foreground mt-0.5",
150
+ "data-testid": "element-description",
151
+ variant: "body3",
152
+ children: description
153
+ })]
154
+ })]
155
+ })]
156
+ })
157
+ });
158
+ };
159
+
160
+ 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; }
161
+ 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; }
162
+ var ElementContainer = function ElementContainer(_ref) {
163
+ var index = _ref.index,
164
+ isDragDisabled = _ref.isDragDisabled,
165
+ element = _ref.element,
166
+ disabledElementTooltip = _ref.disabledElementTooltip,
167
+ isCreatable = _ref.isCreatable,
168
+ onSelect = _ref.onSelect,
169
+ isDraggingOver = _ref.isDraggingOver,
170
+ isAddingNewElement = _ref.isAddingNewElement,
171
+ setVisiblePanel = _ref.setVisiblePanel;
172
+ var isCreatableElement = typeof isCreatable === "function" ? isCreatable(element.value) : true;
173
+ if (isDragDisabled) {
174
+ return /*#__PURE__*/jsxRuntime.jsx(Element, _objectSpread$5(_objectSpread$5({}, _objectSpread$5(_objectSpread$5({}, element), {}, {
175
+ disabledElementTooltip: disabledElementTooltip,
176
+ isAddingNewElement: isAddingNewElement,
177
+ isDragDisabled: isDragDisabled,
178
+ setVisiblePanel: setVisiblePanel
179
+ })), {}, {
180
+ isCreatable: isCreatableElement,
181
+ onClick: function onClick() {
182
+ return onSelect(element);
183
+ }
184
+ }));
185
+ }
186
+ return /*#__PURE__*/React.createElement(dnd.Draggable, {
187
+ index: index,
188
+ draggableId: element.value,
189
+ key: element.label,
190
+ isDragDisabled: isDragDisabled || !isCreatableElement || isAddingNewElement
191
+ }, function (provided, snapshot) {
192
+ return /*#__PURE__*/jsxRuntime.jsxs(jsxRuntime.Fragment, {
193
+ children: [/*#__PURE__*/jsxRuntime.jsx("div", _objectSpread$5(_objectSpread$5(_objectSpread$5({
194
+ ref: provided.innerRef
195
+ }, provided.draggableProps), provided.dragHandleProps), {}, {
196
+ style: _objectSpread$5(_objectSpread$5({}, provided.draggableProps.style), !snapshot.isDragging && {
197
+ transform: "none"
198
+ }),
199
+ children: /*#__PURE__*/jsxRuntime.jsx(Element, _objectSpread$5(_objectSpread$5({}, _objectSpread$5(_objectSpread$5({}, element), {}, {
200
+ disabledElementTooltip: disabledElementTooltip,
201
+ isAddingNewElement: isAddingNewElement,
202
+ isDragDisabled: isDragDisabled,
203
+ isDraggingOver: isDraggingOver,
204
+ setVisiblePanel: setVisiblePanel
205
+ })), {}, {
206
+ isCreatable: isCreatableElement,
207
+ onClick: function onClick() {
208
+ return onSelect(element);
209
+ }
210
+ }))
211
+ })), snapshot.isDragging && /*#__PURE__*/jsxRuntime.jsx(Element, _objectSpread$5(_objectSpread$5({
212
+ disabledElementTooltip: null
213
+ }, _objectSpread$5(_objectSpread$5({}, element), {}, {
214
+ isAddingNewElement: isAddingNewElement,
215
+ setVisiblePanel: setVisiblePanel
216
+ })), {}, {
217
+ isCreatable: false,
218
+ onClick: neetoCist.noop
219
+ }))]
220
+ });
221
+ });
222
+ };
223
+
224
+ var Section = function Section(_ref) {
225
+ var title = _ref.title,
226
+ elements = _ref.elements,
227
+ onSelect = _ref.onSelect,
228
+ isCreatable = _ref.isCreatable,
229
+ disabledElementTooltip = _ref.disabledElementTooltip,
230
+ isDragDisabled = _ref.isDragElementsDisabled,
231
+ isDraggingOver = _ref.isDraggingOver,
232
+ isAddingNewElement = _ref.isAddingNewElement,
233
+ setVisiblePanel = _ref.setVisiblePanel;
234
+ if (ramda.isEmpty(elements)) {
235
+ return null;
236
+ }
237
+ return /*#__PURE__*/jsxRuntime.jsxs(jsxRuntime.Fragment, {
238
+ children: [title && /*#__PURE__*/jsxRuntime.jsx(neetoAtoms.Typography, {
239
+ className: "mt-1 mb-3",
240
+ children: title
241
+ }), elements.map(function (element) {
242
+ return /*#__PURE__*/React.createElement(ElementContainer, {
243
+ disabledElementTooltip: disabledElementTooltip,
244
+ element: element,
245
+ isAddingNewElement: isAddingNewElement,
246
+ isCreatable: isCreatable,
247
+ isDragDisabled: isDragDisabled,
248
+ isDraggingOver: isDraggingOver,
249
+ onSelect: onSelect,
250
+ setVisiblePanel: setVisiblePanel,
251
+ index: element.elementIndex,
252
+ key: element.label
253
+ });
254
+ })]
255
+ });
256
+ };
257
+
258
+ 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; }
259
+ 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; }
260
+ var SectionsContainer = function SectionsContainer(_ref) {
261
+ var isDragElementsDisabled = _ref.isDragElementsDisabled,
262
+ filteredSections = _ref.filteredSections,
263
+ isAddingNewElement = _ref.isAddingNewElement,
264
+ onSelect = _ref.onSelect,
265
+ setVisiblePanel = _ref.setVisiblePanel;
266
+ if (ramda.isEmpty(filteredSections)) {
267
+ return /*#__PURE__*/jsxRuntime.jsx(NoResults, {});
268
+ }
269
+ if (isDragElementsDisabled) {
270
+ return /*#__PURE__*/jsxRuntime.jsx(jsxRuntime.Fragment, {
271
+ children: filteredSections.map(function (section) {
272
+ return /*#__PURE__*/React.createElement(Section, _objectSpread$4(_objectSpread$4({}, _objectSpread$4({
273
+ isAddingNewElement: isAddingNewElement,
274
+ isDragElementsDisabled: isDragElementsDisabled,
275
+ onSelect: onSelect,
276
+ setVisiblePanel: setVisiblePanel
277
+ }, section)), {}, {
278
+ key: section.key
279
+ }));
280
+ })
281
+ });
282
+ }
283
+ return /*#__PURE__*/jsxRuntime.jsx(dnd.Droppable, {
284
+ droppableId: ELEMENTS_LIST_DROPPABLE_ID,
285
+ type: DROPPABLE_TYPES.ELEMENT,
286
+ children: function children(provided, snapshot) {
287
+ return /*#__PURE__*/jsxRuntime.jsx("div", {
288
+ ref: provided.innerRef,
289
+ children: filteredSections.map(function (section) {
290
+ return /*#__PURE__*/React.createElement(Section, _objectSpread$4(_objectSpread$4({}, _objectSpread$4({
291
+ isAddingNewElement: isAddingNewElement,
292
+ isDragElementsDisabled: isDragElementsDisabled,
293
+ onSelect: onSelect,
294
+ setVisiblePanel: setVisiblePanel
295
+ }, section)), {}, {
296
+ isDraggingOver: snapshot.isDraggingOver,
297
+ key: section.key
298
+ }));
299
+ })
300
+ });
301
+ }
302
+ });
303
+ };
304
+
305
+ var TitleBar$1 = reactUtils.withT(function (_ref) {
306
+ var t = _ref.t,
307
+ setVisiblePanel = _ref.setVisiblePanel;
308
+ return /*#__PURE__*/jsxRuntime.jsxs("div", {
309
+ className: "flex items-center justify-between p-6 pb-1",
310
+ "data-testid": "elements-panel-title",
311
+ children: [/*#__PURE__*/jsxRuntime.jsx(neetoAtoms.Typography, {
312
+ className: "leading-normal",
313
+ "data-testid": "elements-list-title",
314
+ variant: "h3",
315
+ weight: "semibold",
316
+ children: t("neetoMolecules.builderSidebar.addNewElement")
317
+ }), /*#__PURE__*/jsxRuntime.jsx(neetoAtoms.Button, {
318
+ "data-testid": "cancel-button",
319
+ icon: x.X,
320
+ size: "icon",
321
+ variant: "ghost",
322
+ onClick: function onClick() {
323
+ return setVisiblePanel(PANEL_TYPES.SUMMARY);
324
+ }
325
+ })]
326
+ });
327
+ });
328
+
329
+ var _excluded$1 = ["size"];
330
+ 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; }
331
+ 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; }
332
+ var Body = function Body(_ref) {
333
+ var size = _ref.size,
334
+ props = _objectWithoutProperties(_ref, _excluded$1);
335
+ return /*#__PURE__*/jsxRuntime.jsx("div", _objectSpread$3(_objectSpread$3({}, props), {}, {
336
+ className: classnames("min-h-0 w-full grow overflow-y-auto px-6 pt-0 pb-2", size === "small" ? "h-[calc(100%_-_4.375rem_-_2.5rem)]" : "h-[calc(100%_-_4.375rem)]")
337
+ }));
338
+ };
339
+
340
+ 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; }
341
+ 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; }
342
+ var ElementList = function ElementList(_ref) {
343
+ var setVisiblePanel = _ref.setVisiblePanel,
344
+ _ref$elementSections = _ref.elementSections,
345
+ elementSections = _ref$elementSections === void 0 ? [] : _ref$elementSections,
346
+ onSelect = _ref.onSelect,
347
+ isDragElementsDisabled = _ref.isDragElementsDisabled,
348
+ isAddingNewElement = _ref.isAddingNewElement;
349
+ var _useTranslation = reactI18next.useTranslation(),
350
+ t = _useTranslation.t;
351
+ var _useState = React.useState(""),
352
+ _useState2 = _slicedToArray(_useState, 2),
353
+ searchString = _useState2[0],
354
+ setSearchString = _useState2[1];
355
+ var filteredSections = React.useMemo(function () {
356
+ var elementIndex = 0;
357
+ var query = searchString.toLowerCase();
358
+ var matchesSearch = function matchesSearch(element) {
359
+ var _element$label$toLowe, _element$label, _element$description$, _element$description, _element$aliases;
360
+ if (!query) return true;
361
+ var label = (_element$label$toLowe = (_element$label = element.label) === null || _element$label === void 0 ? void 0 : _element$label.toLowerCase()) !== null && _element$label$toLowe !== void 0 ? _element$label$toLowe : "";
362
+ var description = (_element$description$ = (_element$description = element.description) === null || _element$description === void 0 ? void 0 : _element$description.toLowerCase()) !== null && _element$description$ !== void 0 ? _element$description$ : "";
363
+ var aliases = ((_element$aliases = element.aliases) !== null && _element$aliases !== void 0 ? _element$aliases : []).map(function (alias) {
364
+ return alias.toLowerCase();
365
+ });
366
+ return label.includes(query) || description.includes(query) || aliases.some(function (alias) {
367
+ return alias.includes(query);
368
+ });
369
+ };
370
+ return elementSections.map(function (section) {
371
+ return _objectSpread$2(_objectSpread$2({}, section), {}, {
372
+ elements: section.elements.filter(matchesSearch).map(function (element) {
373
+ return ramda.assoc("elementIndex", elementIndex++, element);
374
+ })
375
+ });
376
+ }).filter(function (section) {
377
+ return neetoCist.isPresent(searchString) ? neetoCist.isNotEmpty(section.elements) : true;
378
+ });
379
+ }, [searchString, elementSections]);
380
+ return /*#__PURE__*/jsxRuntime.jsxs(jsxRuntime.Fragment, {
381
+ children: [/*#__PURE__*/jsxRuntime.jsx(TitleBar$1, {
382
+ setVisiblePanel: setVisiblePanel
383
+ }), /*#__PURE__*/jsxRuntime.jsxs("div", {
384
+ className: "mb-1 px-6",
385
+ children: [/*#__PURE__*/jsxRuntime.jsx(neetoAtoms.Typography, {
386
+ className: "mb-3",
387
+ variant: "body3",
388
+ children: t("neetoMolecules.builderSidebar.addNewElementDescription")
389
+ }), /*#__PURE__*/jsxRuntime.jsx(neetoAtoms.Input, {
390
+ autoFocus: true,
391
+ "data-testid": "elements-panel-search-field",
392
+ placeholder: t("neetoMolecules.builderSidebar.searchElements"),
393
+ prefix: /*#__PURE__*/jsxRuntime.jsx(search.Search, {}),
394
+ type: "search",
395
+ value: searchString,
396
+ onChange: general.withEventTargetValue(setSearchString)
397
+ })]
398
+ }), /*#__PURE__*/jsxRuntime.jsx(Body, {
399
+ "data-testid": "elements-container",
400
+ size: "small",
401
+ children: /*#__PURE__*/jsxRuntime.jsx(SectionsContainer, {
402
+ filteredSections: filteredSections,
403
+ isAddingNewElement: isAddingNewElement,
404
+ isDragElementsDisabled: isDragElementsDisabled,
405
+ onSelect: onSelect,
406
+ setVisiblePanel: setVisiblePanel
407
+ })
408
+ })]
409
+ });
410
+ };
411
+
412
+ var _excluded = ["element", "isActive", "isSelectedElementActionsDisabled", "selectedElementActionsTooltipProps", "handleSelectElement", "isSelectable", "errors", "actions", "isDraggable"];
413
+ 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; }
414
+ 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; }
415
+ var SelectedElement$1 = function SelectedElement(_ref) {
416
+ var element = _ref.element,
417
+ isActive = _ref.isActive,
418
+ isSelectedElementActionsDisabled = _ref.isSelectedElementActionsDisabled,
419
+ selectedElementActionsTooltipProps = _ref.selectedElementActionsTooltipProps,
420
+ handleSelectElement = _ref.handleSelectElement,
421
+ _ref$isSelectable = _ref.isSelectable,
422
+ isSelectable = _ref$isSelectable === void 0 ? true : _ref$isSelectable,
423
+ _ref$errors = _ref.errors,
424
+ errors = _ref$errors === void 0 ? [] : _ref$errors,
425
+ _ref$actions = _ref.actions,
426
+ actions = _ref$actions === void 0 ? [] : _ref$actions,
427
+ _ref$isDraggable = _ref.isDraggable,
428
+ isDraggable = _ref$isDraggable === void 0 ? false : _ref$isDraggable,
429
+ props = _objectWithoutProperties(_ref, _excluded);
430
+ var Icon = element.icon;
431
+ var rootElementRef = React.useRef();
432
+ var onClick = function onClick() {
433
+ return handleSelectElement(element);
434
+ };
435
+ var shouldShowDropdown = neetoCist.isNotEmpty(actions);
436
+ var menuItems = typeof actions === "function" ? actions(element) : actions.map(function (action) {
437
+ return ramda.mergeRight(action, {
438
+ onClick: function onClick() {
439
+ action.onClick(element);
440
+ }
441
+ });
442
+ });
443
+ React.useEffect(function () {
444
+ var rootElement = rootElementRef.current;
445
+ if (!rootElement || !isActive || typeof (rootElement === null || rootElement === void 0 ? void 0 : rootElement.scrollIntoView) !== "function") {
446
+ return;
447
+ }
448
+ rootElement.scrollIntoView({
449
+ behavior: "smooth",
450
+ block: "nearest"
451
+ });
452
+ }, [isActive, rootElementRef]);
453
+ var error = neetoCist.findById(element.id, errors);
454
+ return /*#__PURE__*/jsxRuntime.jsxs("div", {
455
+ "data-testid": props["data-testid"],
456
+ ref: rootElementRef,
457
+ className: classnames("border-border bg-background hover:bg-muted relative mb-2 flex h-10 cursor-pointer items-center gap-2 rounded-lg border py-3 ps-4 pe-3 transition-all duration-300 ease-in-out", {
458
+ "!border-primary ring-primary ring-1": isActive
459
+ }, {
460
+ "bg-destructive/10 hover:bg-destructive/10": error
461
+ }),
462
+ onClick: isSelectable ? onClick : neetoCist.noop,
463
+ children: [isDraggable && /*#__PURE__*/jsxRuntime.jsx("span", {
464
+ className: "absolute end-full top-1/2 me-0.5 flex-shrink-0 -translate-y-1/2 cursor-grab",
465
+ "data-testid": "drag-handle",
466
+ children: /*#__PURE__*/jsxRuntime.jsx(gripVertical.GripVertical, {
467
+ className: "text-muted-foreground hover:text-foreground transition-all duration-300 ease-in-out",
468
+ size: 16
469
+ })
470
+ }), /*#__PURE__*/jsxRuntime.jsxs("div", {
471
+ className: "flex flex-grow items-center gap-2 overflow-hidden",
472
+ "data-testid": "new-element-field",
473
+ children: [Icon && /*#__PURE__*/jsxRuntime.jsx("div", {
474
+ className: "flex-shrink-0",
475
+ children: /*#__PURE__*/jsxRuntime.jsx(Icon, {})
476
+ }), /*#__PURE__*/jsxRuntime.jsx(neetoAtoms.Typography, {
477
+ className: "truncate leading-snug",
478
+ "data-testid": "".concat(neetoCist.hyphenate(element.label, "new-element"), "-label"),
479
+ variant: "body2",
480
+ children: element.label
481
+ })]
482
+ }), shouldShowDropdown && /*#__PURE__*/jsxRuntime.jsx(v2_MoreDropdown, {
483
+ menuItems: menuItems,
484
+ isDisabled: element.isPending || isSelectedElementActionsDisabled,
485
+ dropdownButtonProps: _objectSpread$1({
486
+ onClick: function onClick(e) {
487
+ return e.stopPropagation();
488
+ },
489
+ className: "min-h-0 flex-shrink-0",
490
+ "data-testid": "".concat(neetoCist.hyphenate(element.label), "-more-dropdown"),
491
+ loading: element.isPending
492
+ }, neetoCist.isPresent(selectedElementActionsTooltipProps) && {
493
+ tooltipProps: selectedElementActionsTooltipProps
494
+ })
495
+ })]
496
+ });
497
+ };
498
+ var SelectedElement = /*#__PURE__*/React.memo(SelectedElement$1);
499
+
500
+ var TitleBar = function TitleBar(_ref) {
501
+ var setVisiblePanel = _ref.setVisiblePanel,
502
+ isLoading = _ref.isLoading,
503
+ showElementsFillButton = _ref.showElementsFillButton,
504
+ isAddingAllElements = _ref.isAddingAllElements,
505
+ addAllElements = _ref.addAllElements,
506
+ isAddingNewElement = _ref.isAddingNewElement,
507
+ addNewElement = _ref.addNewElement,
508
+ addNewElementLabel = _ref.addNewElementLabel;
509
+ var _useTranslation = reactI18next.useTranslation(),
510
+ t = _useTranslation.t;
511
+ var handleAddNewElementClick = function handleAddNewElementClick() {
512
+ if (typeof addNewElement === "function") addNewElement();else setVisiblePanel(PANEL_TYPES.ELEMENTS);
513
+ };
514
+ return /*#__PURE__*/jsxRuntime.jsxs("div", {
515
+ className: "flex items-center justify-between p-6 pb-1",
516
+ "data-testid": "selected-elements-title",
517
+ children: [/*#__PURE__*/jsxRuntime.jsx(neetoAtoms.Typography, {
518
+ className: "leading-normal",
519
+ "data-testid": "elements-title",
520
+ variant: "h3",
521
+ weight: "semibold",
522
+ children: t("neetoMolecules.builderSidebar.element", constants.PLURAL)
523
+ }), /*#__PURE__*/jsxRuntime.jsxs("div", {
524
+ className: "flex items-center justify-between gap-x-2",
525
+ children: [/*#__PURE__*/jsxRuntime.jsx(neetoAtoms.Button, {
526
+ "data-testid": "add-element-button",
527
+ disabled: isLoading,
528
+ icon: plus.Plus,
529
+ iconPosition: "left",
530
+ loading: isAddingNewElement,
531
+ size: "sm",
532
+ variant: "link",
533
+ label: addNewElementLabel || t("neetoMolecules.builderSidebar.addNewElement"),
534
+ onClick: handleAddNewElementClick
535
+ }), showElementsFillButton && /*#__PURE__*/jsxRuntime.jsx(neetoAtoms.Button, {
536
+ "data-testid": "add-all-elements-button",
537
+ disabled: isAddingAllElements,
538
+ icon: Zap,
539
+ loading: isAddingAllElements,
540
+ size: "icon-sm",
541
+ variant: "secondary",
542
+ tooltipProps: {
543
+ content: t("neetoMolecules.builderSidebar.addAllElements")
544
+ },
545
+ onClick: addAllElements
546
+ })]
547
+ })]
548
+ });
549
+ };
550
+
551
+ 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; }
552
+ 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; }
553
+ var SelectedElementsList = function SelectedElementsList(_ref) {
554
+ var handleSelectElement = _ref.handleSelectElement,
555
+ isReorderDisabled = _ref.isReorderDisabled,
556
+ isElementVisible = _ref.isElementVisible,
557
+ selectedElementId = _ref.selectedElementId,
558
+ selectedElements = _ref.selectedElements,
559
+ setVisiblePanel = _ref.setVisiblePanel,
560
+ fixedLastElement = _ref.fixedLastElement,
561
+ fixedFirstElement = _ref.fixedFirstElement,
562
+ anchoredElementIds = _ref.anchoredElementIds,
563
+ selectedElementActions = _ref.selectedElementActions,
564
+ addAllElements = _ref.addAllElements,
565
+ isAddingAllElements = _ref.isAddingAllElements,
566
+ showElementsFillButton = _ref.showElementsFillButton,
567
+ isAddingNewElement = _ref.isAddingNewElement,
568
+ addNewElement = _ref.addNewElement,
569
+ addNewElementLabel = _ref.addNewElementLabel,
570
+ isSelectedElementActionsDisabled = _ref.isSelectedElementActionsDisabled,
571
+ selectedElementActionsTooltipProps = _ref.selectedElementActionsTooltipProps,
572
+ renderElementsCount = _ref.renderElementsCount;
573
+ var renderSelectedElement = function renderSelectedElement(element) {
574
+ var index = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0;
575
+ return /*#__PURE__*/React.createElement(SelectedElement, {
576
+ element: element,
577
+ handleSelectElement: handleSelectElement,
578
+ index: index,
579
+ isSelectedElementActionsDisabled: isSelectedElementActionsDisabled,
580
+ selectedElementActionsTooltipProps: selectedElementActionsTooltipProps,
581
+ isSelectable: true,
582
+ actions: element.actions,
583
+ isActive: selectedElementId === element.id,
584
+ key: element.id || index,
585
+ "data-testid": "welcome-element".concat(Array.isArray(fixedFirstElement) ? "-".concat(index + 1) : "")
586
+ });
587
+ };
588
+ var _useTranslation = reactI18next.useTranslation(),
589
+ t = _useTranslation.t;
590
+ var checkIsVisible = function checkIsVisible(element) {
591
+ var _isElementVisible;
592
+ return (_isElementVisible = isElementVisible === null || isElementVisible === void 0 ? void 0 : isElementVisible(element)) !== null && _isElementVisible !== void 0 ? _isElementVisible : true;
593
+ };
594
+ var visibleCount = typeof renderElementsCount === "function" ? (selectedElements !== null && selectedElements !== void 0 ? selectedElements : []).filter(checkIsVisible).length : 0;
595
+ return /*#__PURE__*/jsxRuntime.jsxs(jsxRuntime.Fragment, {
596
+ children: [/*#__PURE__*/jsxRuntime.jsx(TitleBar, {
597
+ addAllElements: addAllElements,
598
+ addNewElement: addNewElement,
599
+ addNewElementLabel: addNewElementLabel,
600
+ isAddingAllElements: isAddingAllElements,
601
+ isAddingNewElement: isAddingNewElement,
602
+ setVisiblePanel: setVisiblePanel,
603
+ showElementsFillButton: showElementsFillButton
604
+ }), /*#__PURE__*/jsxRuntime.jsxs(Body, {
605
+ "data-testid": "selected-elements-container",
606
+ children: [/*#__PURE__*/jsxRuntime.jsx(neetoAtoms.Typography, {
607
+ className: "mb-3",
608
+ variant: "body3",
609
+ children: t("neetoMolecules.builderSidebar.elementsReorderDescription")
610
+ }), typeof renderElementsCount === "function" && renderElementsCount(visibleCount), Array.isArray(fixedFirstElement) ? neetoCist.isNotEmpty(fixedFirstElement) && fixedFirstElement.map(renderSelectedElement) : neetoCist.isPresent(fixedFirstElement) && renderSelectedElement(fixedFirstElement), /*#__PURE__*/jsxRuntime.jsx(dnd.Droppable, {
611
+ droppableId: SELECTED_ELEMENTS_LIST_DROPPABLE_ID,
612
+ type: DROPPABLE_TYPES.SELECTED_ELEMENT,
613
+ children: function children(_ref2) {
614
+ var innerRef = _ref2.innerRef,
615
+ droppableProps = _ref2.droppableProps,
616
+ placeholder = _ref2.placeholder;
617
+ return /*#__PURE__*/jsxRuntime.jsxs("div", _objectSpread(_objectSpread({
618
+ ref: innerRef
619
+ }, droppableProps), {}, {
620
+ "data-testid": "selected-elements-droppable-container",
621
+ children: [selectedElements === null || selectedElements === void 0 ? void 0 : selectedElements.filter(checkIsVisible).map(function (element, index) {
622
+ var _element$id, _element$id2;
623
+ var isAnchoredElement = anchoredElementIds.includes(element.id);
624
+ var isDragDisabled = isReorderDisabled || isAnchoredElement;
625
+ var key = (_element$id = element.id) !== null && _element$id !== void 0 ? _element$id : "element-".concat(general.joinHyphenCase(element.label));
626
+ return /*#__PURE__*/React.createElement(dnd.Draggable, {
627
+ index: index,
628
+ isDragDisabled: isDragDisabled,
629
+ draggableId: (_element$id2 = element.id) !== null && _element$id2 !== void 0 ? _element$id2 : "element-".concat(index),
630
+ key: key
631
+ }, function (_ref3) {
632
+ var _element$id3;
633
+ var innerRef = _ref3.innerRef,
634
+ draggableProps = _ref3.draggableProps,
635
+ dragHandleProps = _ref3.dragHandleProps;
636
+ return /*#__PURE__*/jsxRuntime.jsx("div", _objectSpread(_objectSpread(_objectSpread({
637
+ ref: innerRef
638
+ }, draggableProps), dragHandleProps), {}, {
639
+ children: /*#__PURE__*/React.createElement(SelectedElement, {
640
+ element: element,
641
+ handleSelectElement: handleSelectElement,
642
+ isSelectedElementActionsDisabled: isSelectedElementActionsDisabled,
643
+ selectedElementActionsTooltipProps: selectedElementActionsTooltipProps,
644
+ isSelectable: true,
645
+ actions: selectedElementActions,
646
+ isActive: selectedElementId === element.id,
647
+ isDraggable: !isDragDisabled,
648
+ key: (_element$id3 = element.id) !== null && _element$id3 !== void 0 ? _element$id3 : index
649
+ })
650
+ }));
651
+ });
652
+ }), placeholder]
653
+ }));
654
+ }
655
+ }), neetoCist.isPresent(fixedLastElement) && /*#__PURE__*/jsxRuntime.jsx(SelectedElement, {
656
+ handleSelectElement: handleSelectElement,
657
+ isSelectedElementActionsDisabled: isSelectedElementActionsDisabled,
658
+ selectedElementActionsTooltipProps: selectedElementActionsTooltipProps,
659
+ isSelectable: true,
660
+ actions: fixedLastElement.actions,
661
+ "data-testid": "submit-button-element",
662
+ element: fixedLastElement,
663
+ isActive: selectedElementId === fixedLastElement.id
664
+ })]
665
+ })]
666
+ });
667
+ };
668
+
669
+ var ElementsPanel = function ElementsPanel(_ref) {
670
+ var elementSections = _ref.elementSections,
671
+ _ref$selectedElements = _ref.selectedElements,
672
+ selectedElements = _ref$selectedElements === void 0 ? [] : _ref$selectedElements,
673
+ handleAddElement = _ref.handleAddElement,
674
+ isElementVisible = _ref.isElementVisible,
675
+ fixedFirstElement = _ref.fixedFirstElement,
676
+ fixedLastElement = _ref.fixedLastElement,
677
+ _ref$anchoredElementI = _ref.anchoredElementIds,
678
+ anchoredElementIds = _ref$anchoredElementI === void 0 ? [] : _ref$anchoredElementI,
679
+ _ref$isReorderDisable = _ref.isReorderDisabled,
680
+ isReorderDisabled = _ref$isReorderDisable === void 0 ? true : _ref$isReorderDisable,
681
+ _ref$isDragElementsDi = _ref.isDragElementsDisabled,
682
+ isDragElementsDisabled = _ref$isDragElementsDi === void 0 ? true : _ref$isDragElementsDi,
683
+ handleSelectElement = _ref.handleSelectElement,
684
+ selectedElementId = _ref.selectedElementId,
685
+ selectedElementActions = _ref.selectedElementActions,
686
+ _ref$addAllElements = _ref.addAllElements,
687
+ addAllElements = _ref$addAllElements === void 0 ? neetoCist.noop : _ref$addAllElements,
688
+ _ref$isAddingAllEleme = _ref.isAddingAllElements,
689
+ isAddingAllElements = _ref$isAddingAllEleme === void 0 ? false : _ref$isAddingAllEleme,
690
+ _ref$showElementsFill = _ref.showElementsFillButton,
691
+ showElementsFillButton = _ref$showElementsFill === void 0 ? false : _ref$showElementsFill,
692
+ _ref$isAddingNewEleme = _ref.isAddingNewElement,
693
+ isAddingNewElement = _ref$isAddingNewEleme === void 0 ? false : _ref$isAddingNewEleme,
694
+ addNewElement = _ref.addNewElement,
695
+ addNewElementLabel = _ref.addNewElementLabel,
696
+ _ref$isSelectedElemen = _ref.isSelectedElementActionsDisabled,
697
+ isSelectedElementActionsDisabled = _ref$isSelectedElemen === void 0 ? false : _ref$isSelectedElemen,
698
+ _ref$selectedElementA = _ref.selectedElementActionsTooltipProps,
699
+ selectedElementActionsTooltipProps = _ref$selectedElementA === void 0 ? {} : _ref$selectedElementA,
700
+ renderElementsCount = _ref.renderElementsCount;
701
+ var _useState = React.useState(PANEL_TYPES.SUMMARY),
702
+ _useState2 = _slicedToArray(_useState, 2),
703
+ visiblePanel = _useState2[0],
704
+ setVisiblePanel = _useState2[1];
705
+ var _useBreakpoints = useBreakpoints(),
706
+ isSize = _useBreakpoints.isSize;
707
+ var isLargerScreen = !isSize("mobile");
708
+ var _useState3 = React.useState(!isLargerScreen),
709
+ _useState4 = _slicedToArray(_useState3, 2),
710
+ isElementsPanelCollapsed = _useState4[0],
711
+ setIsElementsPanelCollapsed = _useState4[1];
712
+ React.useEffect(function () {
713
+ setIsElementsPanelCollapsed(!isLargerScreen);
714
+ }, [isLargerScreen]);
715
+ return /*#__PURE__*/jsxRuntime.jsxs(jsxRuntime.Fragment, {
716
+ children: [!isElementsPanelCollapsed && /*#__PURE__*/jsxRuntime.jsx("div", {
717
+ className: "fixed inset-0 z-[101] hidden bg-black/40 max-[767px]:block",
718
+ onClick: function onClick() {
719
+ setIsElementsPanelCollapsed(!isElementsPanelCollapsed);
720
+ }
721
+ }), /*#__PURE__*/jsxRuntime.jsxs("div", {
722
+ className: classnames("relative z-[101] h-full w-[360px] min-w-[360px] transition-all duration-150 motion-reduce:transition-none max-[767px]:fixed max-[767px]:start-0 max-[767px]:top-0 max-[767px]:transition-none max-[576px]:h-full max-[576px]:w-full max-[576px]:max-w-full max-[576px]:min-w-0 min-[768px]:max-[1279px]:w-[288px] min-[768px]:max-[1279px]:min-w-[288px]", {
723
+ "w-0 max-w-0 min-w-0": isElementsPanelCollapsed
724
+ }),
725
+ children: [/*#__PURE__*/jsxRuntime.jsx("div", {
726
+ className: "h-full w-full overflow-hidden",
727
+ children: /*#__PURE__*/jsxRuntime.jsx("div", {
728
+ className: classnames("border-border flex h-full w-[360px] min-w-[360px] flex-col border-e max-[576px]:w-full max-[576px]:min-w-0 max-[576px]:pt-6 min-[768px]:max-[1279px]:w-[288px] min-[768px]:max-[1279px]:min-w-[288px]", visiblePanel === PANEL_TYPES.SUMMARY ? "bg-background" : "bg-muted/40"),
729
+ onClick: function onClick(event) {
730
+ return event.stopPropagation();
731
+ },
732
+ children: visiblePanel === PANEL_TYPES.SUMMARY ? /*#__PURE__*/jsxRuntime.jsx(SelectedElementsList, {
733
+ addAllElements: addAllElements,
734
+ addNewElement: addNewElement,
735
+ addNewElementLabel: addNewElementLabel,
736
+ anchoredElementIds: anchoredElementIds,
737
+ fixedFirstElement: fixedFirstElement,
738
+ fixedLastElement: fixedLastElement,
739
+ handleSelectElement: handleSelectElement,
740
+ isAddingAllElements: isAddingAllElements,
741
+ isAddingNewElement: isAddingNewElement,
742
+ isElementVisible: isElementVisible,
743
+ isReorderDisabled: isReorderDisabled,
744
+ isSelectedElementActionsDisabled: isSelectedElementActionsDisabled,
745
+ renderElementsCount: renderElementsCount,
746
+ selectedElementActions: selectedElementActions,
747
+ selectedElementActionsTooltipProps: selectedElementActionsTooltipProps,
748
+ selectedElementId: selectedElementId,
749
+ selectedElements: selectedElements,
750
+ setVisiblePanel: setVisiblePanel,
751
+ showElementsFillButton: showElementsFillButton
752
+ }) : /*#__PURE__*/jsxRuntime.jsx(ElementList, {
753
+ elementSections: elementSections,
754
+ isAddingNewElement: isAddingNewElement,
755
+ isDragElementsDisabled: isDragElementsDisabled,
756
+ setVisiblePanel: setVisiblePanel,
757
+ onSelect: handleAddElement
758
+ })
759
+ })
760
+ }), /*#__PURE__*/jsxRuntime.jsx(neetoAtoms.Button, {
761
+ icon: PanelLeftClose,
762
+ size: "icon",
763
+ variant: "secondary",
764
+ className: classnames("absolute start-[calc(100%_+_8px)] top-2 shrink-0 transition-[color] duration-300 motion-reduce:transition-none max-[576px]:start-auto max-[576px]:end-6 min-[1024px]:pointer-events-none min-[1024px]:opacity-0", isElementsPanelCollapsed ? "-scale-x-100 max-[767px]:top-[109px] max-[576px]:start-2 max-[576px]:end-auto rtl:scale-x-100" : "rtl:-scale-x-100"),
765
+ onClick: function onClick() {
766
+ setIsElementsPanelCollapsed(!isElementsPanelCollapsed);
767
+ }
768
+ })]
769
+ })]
770
+ });
771
+ };
772
+
773
+ var EmptyProperty = reactUtils.withT(function (_ref) {
774
+ var t = _ref.t;
775
+ return /*#__PURE__*/jsxRuntime.jsxs("div", {
776
+ className: "flex flex-col gap-y-4",
777
+ children: [/*#__PURE__*/jsxRuntime.jsx("div", {
778
+ className: "bg-muted text-muted-foreground flex w-full flex-col items-center justify-center gap-y-2 rounded-lg px-16 py-8",
779
+ children: /*#__PURE__*/jsxRuntime.jsx(neetoAtoms.Typography, {
780
+ className: "text-center leading-normal",
781
+ "data-testid": "build-page-text-label",
782
+ variant: "body2",
783
+ children: t("neetoMolecules.builderSidebar.noQuestionProperties")
784
+ })
785
+ }), /*#__PURE__*/jsxRuntime.jsx("div", {
786
+ className: "bg-muted h-40 w-full rounded-lg"
787
+ }), /*#__PURE__*/jsxRuntime.jsx("div", {
788
+ className: "bg-muted h-72 w-full rounded-lg"
789
+ })]
790
+ });
791
+ });
792
+
793
+ var Skeleton = reactUtils.withT(function (_ref) {
794
+ var t = _ref.t;
795
+ return /*#__PURE__*/jsxRuntime.jsxs("div", {
796
+ className: "flex flex-col gap-y-4",
797
+ children: [/*#__PURE__*/jsxRuntime.jsx("div", {
798
+ className: "bg-muted h-12 w-full rounded-lg"
799
+ }), /*#__PURE__*/jsxRuntime.jsxs("div", {
800
+ className: "bg-muted text-muted-foreground flex w-full flex-col items-center justify-center gap-y-2 rounded-lg px-16 py-8",
801
+ children: [/*#__PURE__*/jsxRuntime.jsx(neetoAtoms.Typography, {
802
+ className: "text-center leading-normal",
803
+ "data-testid": "build-page-text-label",
804
+ variant: "body2",
805
+ children: t("neetoMolecules.builderSidebar.emptyQuestionProperties")
806
+ }), /*#__PURE__*/jsxRuntime.jsx(ArrowDown, {})]
807
+ }), /*#__PURE__*/jsxRuntime.jsx("div", {
808
+ className: "bg-muted h-40 w-full rounded-lg"
809
+ }), /*#__PURE__*/jsxRuntime.jsx("div", {
810
+ className: "bg-muted h-72 w-full rounded-lg"
811
+ })]
812
+ });
813
+ });
814
+
815
+ var PropertiesPanel = function PropertiesPanel(_ref) {
816
+ var id = _ref.id,
817
+ children = _ref.children,
818
+ onClose = _ref.onClose;
819
+ var _useBreakpoints = useBreakpoints(function (window) {
820
+ return {
821
+ largeDesktop: window.innerWidth >= 1280
822
+ };
823
+ }),
824
+ isSize = _useBreakpoints.isSize;
825
+ var isLargerScreen = isSize("largeDesktop");
826
+ var _useState = React.useState(!isLargerScreen),
827
+ _useState2 = _slicedToArray(_useState, 2),
828
+ isPropertiesPanelCollapsed = _useState2[0],
829
+ setIsPropertiesPanelCollapsed = _useState2[1];
830
+ React.useEffect(function () {
831
+ setIsPropertiesPanelCollapsed(!isLargerScreen);
832
+ }, [isLargerScreen]);
833
+ React.useEffect(function () {
834
+ if (!id) return;
835
+ setIsPropertiesPanelCollapsed(false);
836
+ }, [id]);
837
+ var handleCollapsePanel = function handleCollapsePanel() {
838
+ setIsPropertiesPanelCollapsed(!isPropertiesPanelCollapsed);
839
+ onClose === null || onClose === void 0 || onClose(id);
840
+ };
841
+ return /*#__PURE__*/jsxRuntime.jsxs(jsxRuntime.Fragment, {
842
+ children: [!isPropertiesPanelCollapsed && /*#__PURE__*/jsxRuntime.jsx("div", {
843
+ className: "fixed inset-0 z-[101] hidden bg-black/40 max-[1279px]:block",
844
+ onClick: handleCollapsePanel
845
+ }), /*#__PURE__*/jsxRuntime.jsxs("div", {
846
+ className: classnames("border-border relative z-[101] h-full w-[420px] min-w-[420px] border-s transition-all duration-150 motion-reduce:transition-none max-[1279px]:fixed max-[1279px]:end-0 max-[1279px]:top-0 max-[1279px]:transition-none max-[576px]:h-full max-[576px]:w-full max-[576px]:max-w-full max-[576px]:min-w-0", {
847
+ "w-0 max-w-0 min-w-0": isPropertiesPanelCollapsed
848
+ }),
849
+ children: [/*#__PURE__*/jsxRuntime.jsx("div", {
850
+ className: "bg-background flex h-full w-full min-w-0 flex-col overflow-y-auto p-6 max-[1279px]:pt-12",
851
+ "data-testid": "properties-panel",
852
+ children: children !== null && children !== void 0 ? children : /*#__PURE__*/jsxRuntime.jsx(Skeleton, {})
853
+ }), !isPropertiesPanelCollapsed && /*#__PURE__*/jsxRuntime.jsx(neetoAtoms.Button, {
854
+ className: "pointer-events-none absolute end-2 top-2 opacity-0 max-[1279px]:pointer-events-auto max-[1279px]:opacity-100",
855
+ icon: x.X,
856
+ size: "icon",
857
+ variant: "secondary",
858
+ onClick: handleCollapsePanel
859
+ })]
860
+ })]
861
+ });
862
+ };
863
+ PropertiesPanel.EmptyProperty = EmptyProperty;
864
+
865
+ exports.DROPPABLE_TYPES = DROPPABLE_TYPES;
866
+ exports.ELEMENTS_LIST_DROPPABLE_ID = ELEMENTS_LIST_DROPPABLE_ID;
867
+ exports.ElementsPanel = ElementsPanel;
868
+ exports.PANEL_TYPES = PANEL_TYPES;
869
+ exports.PREVIEW_CONTAINER_DROPPABLE_ID = PREVIEW_CONTAINER_DROPPABLE_ID;
870
+ exports.PropertiesPanel = PropertiesPanel;
871
+ exports.SELECTED_ELEMENTS_LIST_DROPPABLE_ID = SELECTED_ELEMENTS_LIST_DROPPABLE_ID;
872
+ //# sourceMappingURL=Builder.js.map