@bigbinary/neeto-molecules 1.3.9 → 1.3.11

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 (119) hide show
  1. package/dist/NavigationHeader.js +6 -6
  2. package/dist/NavigationHeader.js.map +1 -1
  3. package/dist/PublishBlock.js +1 -1
  4. package/dist/PublishBlock.js.map +1 -1
  5. package/dist/cjs/Breadcrumbs.js +51 -0
  6. package/dist/cjs/Breadcrumbs.js.map +1 -0
  7. package/dist/cjs/BrowserSupport.js +426 -0
  8. package/dist/cjs/BrowserSupport.js.map +1 -0
  9. package/dist/cjs/Builder.js +712 -0
  10. package/dist/cjs/Builder.js.map +1 -0
  11. package/dist/cjs/CalendarView.js +549 -0
  12. package/dist/cjs/CalendarView.js.map +1 -0
  13. package/dist/cjs/Codeblock.js +251 -0
  14. package/dist/cjs/Codeblock.js.map +1 -0
  15. package/dist/cjs/Columns.js +248 -0
  16. package/dist/cjs/Columns.js.map +1 -0
  17. package/dist/cjs/ConfirmationModal.js +120 -0
  18. package/dist/cjs/ConfirmationModal.js.map +1 -0
  19. package/dist/cjs/Container.js +1218 -0
  20. package/dist/cjs/Container.js.map +1 -0
  21. package/dist/cjs/CopyToClipboardButton.js +215 -0
  22. package/dist/cjs/CopyToClipboardButton.js.map +1 -0
  23. package/dist/cjs/CustomDomain.js +743 -0
  24. package/dist/cjs/CustomDomain.js.map +1 -0
  25. package/dist/cjs/CustomDomainDashboard.js +2348 -0
  26. package/dist/cjs/CustomDomainDashboard.js.map +1 -0
  27. package/dist/cjs/DateFormat.js +53 -0
  28. package/dist/cjs/DateFormat.js.map +1 -0
  29. package/dist/cjs/DateRangeFilter.js +236 -0
  30. package/dist/cjs/DateRangeFilter.js.map +1 -0
  31. package/dist/cjs/DocumentEditor.js +283 -0
  32. package/dist/cjs/DocumentEditor.js.map +1 -0
  33. package/dist/cjs/DownloadMobileAppCallout.js +45 -0
  34. package/dist/cjs/DownloadMobileAppCallout.js.map +1 -0
  35. package/dist/cjs/DynamicVariables.js +189 -0
  36. package/dist/cjs/DynamicVariables.js.map +1 -0
  37. package/dist/cjs/EmailForm.js +2057 -0
  38. package/dist/cjs/EmailForm.js.map +1 -0
  39. package/dist/cjs/EmailPreview.js +1319 -0
  40. package/dist/cjs/EmailPreview.js.map +1 -0
  41. package/dist/cjs/ErrorPage.js +188 -0
  42. package/dist/cjs/ErrorPage.js.map +1 -0
  43. package/dist/cjs/Header.js +179 -0
  44. package/dist/cjs/Header.js.map +1 -0
  45. package/dist/cjs/IconPicker.js +324 -0
  46. package/dist/cjs/IconPicker.js.map +1 -0
  47. package/dist/cjs/ImageWithFallback.js +188 -0
  48. package/dist/cjs/ImageWithFallback.js.map +1 -0
  49. package/dist/cjs/InlineInput.js +734 -0
  50. package/dist/cjs/InlineInput.js.map +1 -0
  51. package/dist/cjs/IntegrationCard.js +400 -0
  52. package/dist/cjs/IntegrationCard.js.map +1 -0
  53. package/dist/cjs/IntegrationDisconnectAlert.js +89 -0
  54. package/dist/cjs/IntegrationDisconnectAlert.js.map +1 -0
  55. package/dist/cjs/IntegrationWalkthroughModal.js +50 -0
  56. package/dist/cjs/IntegrationWalkthroughModal.js.map +1 -0
  57. package/dist/cjs/IpRestriction.js +683 -0
  58. package/dist/cjs/IpRestriction.js.map +1 -0
  59. package/dist/cjs/KeyboardShortcuts.js +370 -0
  60. package/dist/cjs/KeyboardShortcuts.js.map +1 -0
  61. package/dist/cjs/LoginPage.js +620 -0
  62. package/dist/cjs/LoginPage.js.map +1 -0
  63. package/dist/cjs/MenuBar.js +1468 -0
  64. package/dist/cjs/MenuBar.js.map +1 -0
  65. package/dist/cjs/Metadata.js +215 -0
  66. package/dist/cjs/Metadata.js.map +1 -0
  67. package/dist/cjs/MoreDropdown.js +210 -0
  68. package/dist/cjs/MoreDropdown.js.map +1 -0
  69. package/dist/cjs/NavigationHeader.js +867 -0
  70. package/dist/cjs/NavigationHeader.js.map +1 -0
  71. package/dist/cjs/NeetoWidget.js +1078 -0
  72. package/dist/cjs/NeetoWidget.js.map +1 -0
  73. package/dist/cjs/PageLoader.js +159 -0
  74. package/dist/cjs/PageLoader.js.map +1 -0
  75. package/dist/cjs/PhoneNumber.js +492 -0
  76. package/dist/cjs/PhoneNumber.js.map +1 -0
  77. package/dist/cjs/PublishBlock.js +165 -0
  78. package/dist/cjs/PublishBlock.js.map +1 -0
  79. package/dist/cjs/PublishYourItem.js +1239 -0
  80. package/dist/cjs/PublishYourItem.js.map +1 -0
  81. package/dist/cjs/Rename.js +625 -0
  82. package/dist/cjs/Rename.js.map +1 -0
  83. package/dist/cjs/ResponsiveDevicePicker.js +200 -0
  84. package/dist/cjs/ResponsiveDevicePicker.js.map +1 -0
  85. package/dist/cjs/Schedule.js +1130 -0
  86. package/dist/cjs/Schedule.js.map +1 -0
  87. package/dist/cjs/Scrollable.js +129 -0
  88. package/dist/cjs/Scrollable.js.map +1 -0
  89. package/dist/cjs/Search.js +217 -0
  90. package/dist/cjs/Search.js.map +1 -0
  91. package/dist/cjs/Security.js +1930 -0
  92. package/dist/cjs/Security.js.map +1 -0
  93. package/dist/cjs/SendToFields.js +353 -0
  94. package/dist/cjs/SendToFields.js.map +1 -0
  95. package/dist/cjs/Settings.js +492 -0
  96. package/dist/cjs/Settings.js.map +1 -0
  97. package/dist/cjs/ShareViaEmail.js +2005 -0
  98. package/dist/cjs/ShareViaEmail.js.map +1 -0
  99. package/dist/cjs/ShareViaLink.js +729 -0
  100. package/dist/cjs/ShareViaLink.js.map +1 -0
  101. package/dist/cjs/Sidebar.js +930 -0
  102. package/dist/cjs/Sidebar.js.map +1 -0
  103. package/dist/cjs/SubHeader.js +224 -0
  104. package/dist/cjs/SubHeader.js.map +1 -0
  105. package/dist/cjs/SuffixedInput.js +216 -0
  106. package/dist/cjs/SuffixedInput.js.map +1 -0
  107. package/dist/cjs/TableWrapper.js +33 -0
  108. package/dist/cjs/TableWrapper.js.map +1 -0
  109. package/dist/cjs/Taxonomy.js +2125 -0
  110. package/dist/cjs/Taxonomy.js.map +1 -0
  111. package/dist/cjs/ThemeSidebar.js +2052 -0
  112. package/dist/cjs/ThemeSidebar.js.map +1 -0
  113. package/dist/cjs/TimeFormat.js +55 -0
  114. package/dist/cjs/TimeFormat.js.map +1 -0
  115. package/dist/cjs/TimezoneMismatchModal.js +176 -0
  116. package/dist/cjs/TimezoneMismatchModal.js.map +1 -0
  117. package/dist/cjs/ToggleFeatureCard.js +330 -0
  118. package/dist/cjs/ToggleFeatureCard.js.map +1 -0
  119. package/package.json +2 -1
@@ -0,0 +1,2052 @@
1
+ 'use strict';
2
+
3
+ var React = require('react');
4
+ var neetoui = require('@bigbinary/neetoui');
5
+ var reactI18next = require('react-i18next');
6
+ var yup = require('yup');
7
+ var formik$1 = require('@bigbinary/neetoui/formik');
8
+ var neetoCist = require('@bigbinary/neeto-cist');
9
+ var reactUtils = require('@bigbinary/neeto-commons-frontend/react-utils');
10
+ var ramda = require('ramda');
11
+ var classnames = require('classnames');
12
+ var neetoIcons = require('@bigbinary/neeto-icons');
13
+ var framerMotion = require('framer-motion');
14
+ var activestorage = require('@rails/activestorage');
15
+ var reactDropzone = require('react-dropzone');
16
+ var formik = require('formik');
17
+ var antd = require('antd');
18
+
19
+ function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }
20
+
21
+ function _interopNamespace(e) {
22
+ if (e && e.__esModule) return e;
23
+ var n = Object.create(null);
24
+ if (e) {
25
+ Object.keys(e).forEach(function (k) {
26
+ if (k !== 'default') {
27
+ var d = Object.getOwnPropertyDescriptor(e, k);
28
+ Object.defineProperty(n, k, d.get ? d : {
29
+ enumerable: true,
30
+ get: function () { return e[k]; }
31
+ });
32
+ }
33
+ });
34
+ }
35
+ n["default"] = e;
36
+ return Object.freeze(n);
37
+ }
38
+
39
+ var React__default = /*#__PURE__*/_interopDefaultLegacy(React);
40
+ var yup__namespace = /*#__PURE__*/_interopNamespace(yup);
41
+ var classnames__default = /*#__PURE__*/_interopDefaultLegacy(classnames);
42
+
43
+ function _typeof$1(o) {
44
+ "@babel/helpers - typeof";
45
+
46
+ return _typeof$1 = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (o) {
47
+ return typeof o;
48
+ } : function (o) {
49
+ return o && "function" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o;
50
+ }, _typeof$1(o);
51
+ }
52
+
53
+ function _toPrimitive(input, hint) {
54
+ if (_typeof$1(input) !== "object" || input === null) return input;
55
+ var prim = input[Symbol.toPrimitive];
56
+ if (prim !== undefined) {
57
+ var res = prim.call(input, hint || "default");
58
+ if (_typeof$1(res) !== "object") return res;
59
+ throw new TypeError("@@toPrimitive must return a primitive value.");
60
+ }
61
+ return (hint === "string" ? String : Number)(input);
62
+ }
63
+
64
+ function _toPropertyKey(arg) {
65
+ var key = _toPrimitive(arg, "string");
66
+ return _typeof$1(key) === "symbol" ? key : String(key);
67
+ }
68
+
69
+ function _defineProperty(obj, key, value) {
70
+ key = _toPropertyKey(key);
71
+ if (key in obj) {
72
+ Object.defineProperty(obj, key, {
73
+ value: value,
74
+ enumerable: true,
75
+ configurable: true,
76
+ writable: true
77
+ });
78
+ } else {
79
+ obj[key] = value;
80
+ }
81
+ return obj;
82
+ }
83
+
84
+ function _arrayWithHoles(arr) {
85
+ if (Array.isArray(arr)) return arr;
86
+ }
87
+
88
+ function _iterableToArrayLimit(r, l) {
89
+ var t = null == r ? null : "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"];
90
+ if (null != t) {
91
+ var e,
92
+ n,
93
+ i,
94
+ u,
95
+ a = [],
96
+ f = !0,
97
+ o = !1;
98
+ try {
99
+ if (i = (t = t.call(r)).next, 0 === l) {
100
+ if (Object(t) !== t) return;
101
+ f = !1;
102
+ } else for (; !(f = (e = i.call(t)).done) && (a.push(e.value), a.length !== l); f = !0);
103
+ } catch (r) {
104
+ o = !0, n = r;
105
+ } finally {
106
+ try {
107
+ if (!f && null != t["return"] && (u = t["return"](), Object(u) !== u)) return;
108
+ } finally {
109
+ if (o) throw n;
110
+ }
111
+ }
112
+ return a;
113
+ }
114
+ }
115
+
116
+ function _arrayLikeToArray(arr, len) {
117
+ if (len == null || len > arr.length) len = arr.length;
118
+ for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i];
119
+ return arr2;
120
+ }
121
+
122
+ function _unsupportedIterableToArray(o, minLen) {
123
+ if (!o) return;
124
+ if (typeof o === "string") return _arrayLikeToArray(o, minLen);
125
+ var n = Object.prototype.toString.call(o).slice(8, -1);
126
+ if (n === "Object" && o.constructor) n = o.constructor.name;
127
+ if (n === "Map" || n === "Set") return Array.from(o);
128
+ if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen);
129
+ }
130
+
131
+ function _nonIterableRest() {
132
+ throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.");
133
+ }
134
+
135
+ function _slicedToArray(arr, i) {
136
+ return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest();
137
+ }
138
+
139
+ var DIRECT_UPLOAD_URL = "/api/direct_uploads";
140
+ var DESIGN_SCREENS = {
141
+ THEMES: "Themes",
142
+ CUSTOMIZE: "Customize",
143
+ LOADING: "Loading"
144
+ };
145
+ var INITIAL_STATE = {
146
+ name: "",
147
+ backgroundColor: "#ffffff",
148
+ backgroundOverlayColor: "#000000",
149
+ backgroundOverlayOpacity: 0,
150
+ isDominantBackgroundColorEnabled: false,
151
+ questionColor: "#000000",
152
+ buttonBackgroundColor: "#2D36D4",
153
+ buttonTextColor: "#ffffff",
154
+ answerColor: "#2D36D4",
155
+ answerTextColor: "#ffffff",
156
+ logo: {},
157
+ buttonBorderRadius: 10,
158
+ isContentBackgroundEnabled: false,
159
+ welcomeTextAlignment: "left",
160
+ thankYouTextAlignment: "center",
161
+ questionsTextAlignment: "left",
162
+ fontFamily: '-apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Helvetica, Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol"'
163
+ };
164
+ var THEME_VALIDATION_SCHEMA = yup__namespace.object().shape({
165
+ name: yup__namespace.string().required("Name is required")
166
+ });
167
+ var FIVE_MEGABYTES = 5242880;
168
+ var POSITION_OPTIONS = [{
169
+ label: "Left",
170
+ value: "left"
171
+ }, {
172
+ label: "Right",
173
+ value: "right"
174
+ }];
175
+ var BACKGROUND_POSITION_OPTIONS = [{
176
+ label: "Center",
177
+ value: "center"
178
+ }, {
179
+ label: "Top left",
180
+ value: "top left"
181
+ }, {
182
+ label: "Top center",
183
+ value: "top center"
184
+ }, {
185
+ label: "Top right",
186
+ value: "top right"
187
+ }, {
188
+ label: "Center left",
189
+ value: "center left"
190
+ }, {
191
+ label: "Center right",
192
+ value: "center right"
193
+ }, {
194
+ label: "Bottom left",
195
+ value: "bottom left"
196
+ }, {
197
+ label: "Bottom right",
198
+ value: "bottom right"
199
+ }, {
200
+ label: "Bottom center",
201
+ value: "bottom center"
202
+ }];
203
+ var FONT_OPTIONS = [{
204
+ label: "System UI",
205
+ value: '-apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Helvetica, Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol"'
206
+ }, {
207
+ label: "Cedarville Cursive",
208
+ value: "'Cedarville Cursive', cursive"
209
+ }, {
210
+ label: "Poppins",
211
+ value: "Poppins, sans-serif"
212
+ }, {
213
+ label: "Roboto",
214
+ value: "Roboto, sans-serif"
215
+ }, {
216
+ label: "Open Sans",
217
+ value: "Open Sans, sans-serif"
218
+ }, {
219
+ label: "Montserrat",
220
+ value: "Montserrat, sans-serif"
221
+ }, {
222
+ label: "Raleway",
223
+ value: "Raleway, sans-serif"
224
+ }, {
225
+ label: "Quicksand",
226
+ value: "Quicksand, sans-serif"
227
+ }, {
228
+ label: "Inter",
229
+ value: "Inter, sans-serif"
230
+ }, {
231
+ label: "Satoshi",
232
+ value: "Satoshi, sans-serif"
233
+ }, {
234
+ label: "Chillax",
235
+ value: "Chillax, sans-serif"
236
+ }, {
237
+ label: "Clash Display",
238
+ value: "Clash Display, sans-serif"
239
+ }, {
240
+ label: "General Sans",
241
+ value: "General Sans, sans-serif"
242
+ }, {
243
+ label: "Cabinet Grotesk",
244
+ value: "Cabinet Grotesk, sans-serif"
245
+ }, {
246
+ label: "Lora",
247
+ value: "Lora, serif"
248
+ }, {
249
+ label: "Merriweather",
250
+ value: "Merriweather, serif"
251
+ }, {
252
+ label: "Boska",
253
+ value: "Boska, serif"
254
+ }, {
255
+ label: "Playfair Display",
256
+ value: "Playfair Display, serif"
257
+ }, {
258
+ label: "Roboto Slab",
259
+ value: "Roboto Slab, serif"
260
+ }, {
261
+ label: "Dancing Script",
262
+ value: "Dancing Script, cursive"
263
+ }];
264
+
265
+ var Card = function Card(_ref) {
266
+ var title = _ref.title,
267
+ children = _ref.children;
268
+ return /*#__PURE__*/React__default["default"].createElement("div", {
269
+ className: "neeto-ui-border-gray-300 neeto-ui-rounded-lg neeto-ui-bg-white space-y-3 border p-4"
270
+ }, title && /*#__PURE__*/React__default["default"].createElement("div", {
271
+ className: "flex items-center justify-between"
272
+ }, /*#__PURE__*/React__default["default"].createElement(neetoui.Typography, {
273
+ "data-cy": "edit-theme-properties",
274
+ lineHeight: "normal",
275
+ style: "h4",
276
+ weight: "semibold"
277
+ }, title)), children && /*#__PURE__*/React__default["default"].createElement("div", {
278
+ className: "space-y-4"
279
+ }, children));
280
+ };
281
+
282
+ function _extends() {
283
+ _extends = Object.assign ? Object.assign.bind() : function (target) {
284
+ for (var i = 1; i < arguments.length; i++) {
285
+ var source = arguments[i];
286
+ for (var key in source) {
287
+ if (Object.prototype.hasOwnProperty.call(source, key)) {
288
+ target[key] = source[key];
289
+ }
290
+ }
291
+ }
292
+ return target;
293
+ };
294
+ return _extends.apply(this, arguments);
295
+ }
296
+
297
+ var ProgressBar = function ProgressBar(_ref) {
298
+ var progressPercentage = _ref.progressPercentage,
299
+ progressValue = _ref.progressValue;
300
+ return /*#__PURE__*/React__default["default"].createElement("div", {
301
+ className: "neeto-ui-bg-gray-200 neeto-ui-rounded-full w-full overflow-hidden"
302
+ }, /*#__PURE__*/React__default["default"].createElement(framerMotion.motion.div, {
303
+ animate: {
304
+ width: "".concat(progressPercentage, "%")
305
+ },
306
+ className: "neeto-ui-bg-primary-600 neeto-ui-text-primary-100 text-2xs neeto-ui-rounded-full flex h-3 animate-pulse items-center justify-center font-medium leading-none",
307
+ initial: {
308
+ width: 0
309
+ },
310
+ transition: {
311
+ duration: 0.5,
312
+ ease: "easeInOut"
313
+ }
314
+ }, progressValue));
315
+ };
316
+
317
+ function asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) {
318
+ try {
319
+ var info = gen[key](arg);
320
+ var value = info.value;
321
+ } catch (error) {
322
+ reject(error);
323
+ return;
324
+ }
325
+ if (info.done) {
326
+ resolve(value);
327
+ } else {
328
+ Promise.resolve(value).then(_next, _throw);
329
+ }
330
+ }
331
+ function _asyncToGenerator(fn) {
332
+ return function () {
333
+ var self = this,
334
+ args = arguments;
335
+ return new Promise(function (resolve, reject) {
336
+ var gen = fn.apply(self, args);
337
+ function _next(value) {
338
+ asyncGeneratorStep(gen, resolve, reject, _next, _throw, "next", value);
339
+ }
340
+ function _throw(err) {
341
+ asyncGeneratorStep(gen, resolve, reject, _next, _throw, "throw", err);
342
+ }
343
+ _next(undefined);
344
+ });
345
+ };
346
+ }
347
+
348
+ var regeneratorRuntime$1 = {exports: {}};
349
+
350
+ var _typeof = {exports: {}};
351
+
352
+ (function (module) {
353
+ function _typeof(o) {
354
+ "@babel/helpers - typeof";
355
+
356
+ return (module.exports = _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (o) {
357
+ return typeof o;
358
+ } : function (o) {
359
+ return o && "function" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o;
360
+ }, module.exports.__esModule = true, module.exports["default"] = module.exports), _typeof(o);
361
+ }
362
+ module.exports = _typeof, module.exports.__esModule = true, module.exports["default"] = module.exports;
363
+ } (_typeof));
364
+
365
+ (function (module) {
366
+ var _typeof$1 = _typeof.exports["default"];
367
+ function _regeneratorRuntime() {
368
+ module.exports = _regeneratorRuntime = function _regeneratorRuntime() {
369
+ return e;
370
+ }, module.exports.__esModule = true, module.exports["default"] = module.exports;
371
+ var t,
372
+ e = {},
373
+ r = Object.prototype,
374
+ n = r.hasOwnProperty,
375
+ o = Object.defineProperty || function (t, e, r) {
376
+ t[e] = r.value;
377
+ },
378
+ i = "function" == typeof Symbol ? Symbol : {},
379
+ a = i.iterator || "@@iterator",
380
+ c = i.asyncIterator || "@@asyncIterator",
381
+ u = i.toStringTag || "@@toStringTag";
382
+ function define(t, e, r) {
383
+ return Object.defineProperty(t, e, {
384
+ value: r,
385
+ enumerable: !0,
386
+ configurable: !0,
387
+ writable: !0
388
+ }), t[e];
389
+ }
390
+ try {
391
+ define({}, "");
392
+ } catch (t) {
393
+ define = function define(t, e, r) {
394
+ return t[e] = r;
395
+ };
396
+ }
397
+ function wrap(t, e, r, n) {
398
+ var i = e && e.prototype instanceof Generator ? e : Generator,
399
+ a = Object.create(i.prototype),
400
+ c = new Context(n || []);
401
+ return o(a, "_invoke", {
402
+ value: makeInvokeMethod(t, r, c)
403
+ }), a;
404
+ }
405
+ function tryCatch(t, e, r) {
406
+ try {
407
+ return {
408
+ type: "normal",
409
+ arg: t.call(e, r)
410
+ };
411
+ } catch (t) {
412
+ return {
413
+ type: "throw",
414
+ arg: t
415
+ };
416
+ }
417
+ }
418
+ e.wrap = wrap;
419
+ var h = "suspendedStart",
420
+ l = "suspendedYield",
421
+ f = "executing",
422
+ s = "completed",
423
+ y = {};
424
+ function Generator() {}
425
+ function GeneratorFunction() {}
426
+ function GeneratorFunctionPrototype() {}
427
+ var p = {};
428
+ define(p, a, function () {
429
+ return this;
430
+ });
431
+ var d = Object.getPrototypeOf,
432
+ v = d && d(d(values([])));
433
+ v && v !== r && n.call(v, a) && (p = v);
434
+ var g = GeneratorFunctionPrototype.prototype = Generator.prototype = Object.create(p);
435
+ function defineIteratorMethods(t) {
436
+ ["next", "throw", "return"].forEach(function (e) {
437
+ define(t, e, function (t) {
438
+ return this._invoke(e, t);
439
+ });
440
+ });
441
+ }
442
+ function AsyncIterator(t, e) {
443
+ function invoke(r, o, i, a) {
444
+ var c = tryCatch(t[r], t, o);
445
+ if ("throw" !== c.type) {
446
+ var u = c.arg,
447
+ h = u.value;
448
+ return h && "object" == _typeof$1(h) && n.call(h, "__await") ? e.resolve(h.__await).then(function (t) {
449
+ invoke("next", t, i, a);
450
+ }, function (t) {
451
+ invoke("throw", t, i, a);
452
+ }) : e.resolve(h).then(function (t) {
453
+ u.value = t, i(u);
454
+ }, function (t) {
455
+ return invoke("throw", t, i, a);
456
+ });
457
+ }
458
+ a(c.arg);
459
+ }
460
+ var r;
461
+ o(this, "_invoke", {
462
+ value: function value(t, n) {
463
+ function callInvokeWithMethodAndArg() {
464
+ return new e(function (e, r) {
465
+ invoke(t, n, e, r);
466
+ });
467
+ }
468
+ return r = r ? r.then(callInvokeWithMethodAndArg, callInvokeWithMethodAndArg) : callInvokeWithMethodAndArg();
469
+ }
470
+ });
471
+ }
472
+ function makeInvokeMethod(e, r, n) {
473
+ var o = h;
474
+ return function (i, a) {
475
+ if (o === f) throw new Error("Generator is already running");
476
+ if (o === s) {
477
+ if ("throw" === i) throw a;
478
+ return {
479
+ value: t,
480
+ done: !0
481
+ };
482
+ }
483
+ for (n.method = i, n.arg = a;;) {
484
+ var c = n.delegate;
485
+ if (c) {
486
+ var u = maybeInvokeDelegate(c, n);
487
+ if (u) {
488
+ if (u === y) continue;
489
+ return u;
490
+ }
491
+ }
492
+ if ("next" === n.method) n.sent = n._sent = n.arg;else if ("throw" === n.method) {
493
+ if (o === h) throw o = s, n.arg;
494
+ n.dispatchException(n.arg);
495
+ } else "return" === n.method && n.abrupt("return", n.arg);
496
+ o = f;
497
+ var p = tryCatch(e, r, n);
498
+ if ("normal" === p.type) {
499
+ if (o = n.done ? s : l, p.arg === y) continue;
500
+ return {
501
+ value: p.arg,
502
+ done: n.done
503
+ };
504
+ }
505
+ "throw" === p.type && (o = s, n.method = "throw", n.arg = p.arg);
506
+ }
507
+ };
508
+ }
509
+ function maybeInvokeDelegate(e, r) {
510
+ var n = r.method,
511
+ o = e.iterator[n];
512
+ if (o === t) return r.delegate = null, "throw" === n && e.iterator["return"] && (r.method = "return", r.arg = t, maybeInvokeDelegate(e, r), "throw" === r.method) || "return" !== n && (r.method = "throw", r.arg = new TypeError("The iterator does not provide a '" + n + "' method")), y;
513
+ var i = tryCatch(o, e.iterator, r.arg);
514
+ if ("throw" === i.type) return r.method = "throw", r.arg = i.arg, r.delegate = null, y;
515
+ var a = i.arg;
516
+ return a ? a.done ? (r[e.resultName] = a.value, r.next = e.nextLoc, "return" !== r.method && (r.method = "next", r.arg = t), r.delegate = null, y) : a : (r.method = "throw", r.arg = new TypeError("iterator result is not an object"), r.delegate = null, y);
517
+ }
518
+ function pushTryEntry(t) {
519
+ var e = {
520
+ tryLoc: t[0]
521
+ };
522
+ 1 in t && (e.catchLoc = t[1]), 2 in t && (e.finallyLoc = t[2], e.afterLoc = t[3]), this.tryEntries.push(e);
523
+ }
524
+ function resetTryEntry(t) {
525
+ var e = t.completion || {};
526
+ e.type = "normal", delete e.arg, t.completion = e;
527
+ }
528
+ function Context(t) {
529
+ this.tryEntries = [{
530
+ tryLoc: "root"
531
+ }], t.forEach(pushTryEntry, this), this.reset(!0);
532
+ }
533
+ function values(e) {
534
+ if (e || "" === e) {
535
+ var r = e[a];
536
+ if (r) return r.call(e);
537
+ if ("function" == typeof e.next) return e;
538
+ if (!isNaN(e.length)) {
539
+ var o = -1,
540
+ i = function next() {
541
+ for (; ++o < e.length;) if (n.call(e, o)) return next.value = e[o], next.done = !1, next;
542
+ return next.value = t, next.done = !0, next;
543
+ };
544
+ return i.next = i;
545
+ }
546
+ }
547
+ throw new TypeError(_typeof$1(e) + " is not iterable");
548
+ }
549
+ return GeneratorFunction.prototype = GeneratorFunctionPrototype, o(g, "constructor", {
550
+ value: GeneratorFunctionPrototype,
551
+ configurable: !0
552
+ }), o(GeneratorFunctionPrototype, "constructor", {
553
+ value: GeneratorFunction,
554
+ configurable: !0
555
+ }), GeneratorFunction.displayName = define(GeneratorFunctionPrototype, u, "GeneratorFunction"), e.isGeneratorFunction = function (t) {
556
+ var e = "function" == typeof t && t.constructor;
557
+ return !!e && (e === GeneratorFunction || "GeneratorFunction" === (e.displayName || e.name));
558
+ }, e.mark = function (t) {
559
+ return Object.setPrototypeOf ? Object.setPrototypeOf(t, GeneratorFunctionPrototype) : (t.__proto__ = GeneratorFunctionPrototype, define(t, u, "GeneratorFunction")), t.prototype = Object.create(g), t;
560
+ }, e.awrap = function (t) {
561
+ return {
562
+ __await: t
563
+ };
564
+ }, defineIteratorMethods(AsyncIterator.prototype), define(AsyncIterator.prototype, c, function () {
565
+ return this;
566
+ }), e.AsyncIterator = AsyncIterator, e.async = function (t, r, n, o, i) {
567
+ void 0 === i && (i = Promise);
568
+ var a = new AsyncIterator(wrap(t, r, n, o), i);
569
+ return e.isGeneratorFunction(r) ? a : a.next().then(function (t) {
570
+ return t.done ? t.value : a.next();
571
+ });
572
+ }, defineIteratorMethods(g), define(g, u, "Generator"), define(g, a, function () {
573
+ return this;
574
+ }), define(g, "toString", function () {
575
+ return "[object Generator]";
576
+ }), e.keys = function (t) {
577
+ var e = Object(t),
578
+ r = [];
579
+ for (var n in e) r.push(n);
580
+ return r.reverse(), function next() {
581
+ for (; r.length;) {
582
+ var t = r.pop();
583
+ if (t in e) return next.value = t, next.done = !1, next;
584
+ }
585
+ return next.done = !0, next;
586
+ };
587
+ }, e.values = values, Context.prototype = {
588
+ constructor: Context,
589
+ reset: function reset(e) {
590
+ if (this.prev = 0, this.next = 0, this.sent = this._sent = t, this.done = !1, this.delegate = null, this.method = "next", this.arg = t, this.tryEntries.forEach(resetTryEntry), !e) for (var r in this) "t" === r.charAt(0) && n.call(this, r) && !isNaN(+r.slice(1)) && (this[r] = t);
591
+ },
592
+ stop: function stop() {
593
+ this.done = !0;
594
+ var t = this.tryEntries[0].completion;
595
+ if ("throw" === t.type) throw t.arg;
596
+ return this.rval;
597
+ },
598
+ dispatchException: function dispatchException(e) {
599
+ if (this.done) throw e;
600
+ var r = this;
601
+ function handle(n, o) {
602
+ return a.type = "throw", a.arg = e, r.next = n, o && (r.method = "next", r.arg = t), !!o;
603
+ }
604
+ for (var o = this.tryEntries.length - 1; o >= 0; --o) {
605
+ var i = this.tryEntries[o],
606
+ a = i.completion;
607
+ if ("root" === i.tryLoc) return handle("end");
608
+ if (i.tryLoc <= this.prev) {
609
+ var c = n.call(i, "catchLoc"),
610
+ u = n.call(i, "finallyLoc");
611
+ if (c && u) {
612
+ if (this.prev < i.catchLoc) return handle(i.catchLoc, !0);
613
+ if (this.prev < i.finallyLoc) return handle(i.finallyLoc);
614
+ } else if (c) {
615
+ if (this.prev < i.catchLoc) return handle(i.catchLoc, !0);
616
+ } else {
617
+ if (!u) throw new Error("try statement without catch or finally");
618
+ if (this.prev < i.finallyLoc) return handle(i.finallyLoc);
619
+ }
620
+ }
621
+ }
622
+ },
623
+ abrupt: function abrupt(t, e) {
624
+ for (var r = this.tryEntries.length - 1; r >= 0; --r) {
625
+ var o = this.tryEntries[r];
626
+ if (o.tryLoc <= this.prev && n.call(o, "finallyLoc") && this.prev < o.finallyLoc) {
627
+ var i = o;
628
+ break;
629
+ }
630
+ }
631
+ i && ("break" === t || "continue" === t) && i.tryLoc <= e && e <= i.finallyLoc && (i = null);
632
+ var a = i ? i.completion : {};
633
+ return a.type = t, a.arg = e, i ? (this.method = "next", this.next = i.finallyLoc, y) : this.complete(a);
634
+ },
635
+ complete: function complete(t, e) {
636
+ if ("throw" === t.type) throw t.arg;
637
+ return "break" === t.type || "continue" === t.type ? this.next = t.arg : "return" === t.type ? (this.rval = this.arg = t.arg, this.method = "return", this.next = "end") : "normal" === t.type && e && (this.next = e), y;
638
+ },
639
+ finish: function finish(t) {
640
+ for (var e = this.tryEntries.length - 1; e >= 0; --e) {
641
+ var r = this.tryEntries[e];
642
+ if (r.finallyLoc === t) return this.complete(r.completion, r.afterLoc), resetTryEntry(r), y;
643
+ }
644
+ },
645
+ "catch": function _catch(t) {
646
+ for (var e = this.tryEntries.length - 1; e >= 0; --e) {
647
+ var r = this.tryEntries[e];
648
+ if (r.tryLoc === t) {
649
+ var n = r.completion;
650
+ if ("throw" === n.type) {
651
+ var o = n.arg;
652
+ resetTryEntry(r);
653
+ }
654
+ return o;
655
+ }
656
+ }
657
+ throw new Error("illegal catch attempt");
658
+ },
659
+ delegateYield: function delegateYield(e, r, n) {
660
+ return this.delegate = {
661
+ iterator: values(e),
662
+ resultName: r,
663
+ nextLoc: n
664
+ }, "next" === this.method && (this.arg = t), y;
665
+ }
666
+ }, e;
667
+ }
668
+ module.exports = _regeneratorRuntime, module.exports.__esModule = true, module.exports["default"] = module.exports;
669
+ } (regeneratorRuntime$1));
670
+
671
+ // TODO(Babel 8): Remove this file.
672
+
673
+ var runtime = regeneratorRuntime$1.exports();
674
+ var regenerator = runtime;
675
+
676
+ // Copied from https://github.com/facebook/regenerator/blob/main/packages/runtime/runtime.js#L736=
677
+ try {
678
+ regeneratorRuntime = runtime;
679
+ } catch (accidentalStrictMode) {
680
+ if (typeof globalThis === "object") {
681
+ globalThis.regeneratorRuntime = runtime;
682
+ } else {
683
+ Function("r", "regeneratorRuntime = r")(runtime);
684
+ }
685
+ }
686
+
687
+ 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; }
688
+ 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), !0).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; }
689
+ var readFile = function readFile(file) {
690
+ return new Promise(function (resolve) {
691
+ var reader = new FileReader();
692
+ reader.onload = function () {
693
+ resolve(reader.result);
694
+ };
695
+ reader.readAsDataURL(file);
696
+ });
697
+ };
698
+ var getImage = /*#__PURE__*/function () {
699
+ var _ref = _asyncToGenerator( /*#__PURE__*/regenerator.mark(function _callee(file) {
700
+ var image;
701
+ return regenerator.wrap(function _callee$(_context) {
702
+ while (1) switch (_context.prev = _context.next) {
703
+ case 0:
704
+ image = new Image();
705
+ _context.next = 3;
706
+ return readFile(file);
707
+ case 3:
708
+ image.src = _context.sent;
709
+ return _context.abrupt("return", new Promise(function (resolve) {
710
+ image.onload = function () {
711
+ resolve(image);
712
+ };
713
+ }));
714
+ case 5:
715
+ case "end":
716
+ return _context.stop();
717
+ }
718
+ }, _callee);
719
+ }));
720
+ return function getImage(_x) {
721
+ return _ref.apply(this, arguments);
722
+ };
723
+ }();
724
+ var transformTheme = function transformTheme(values) {
725
+ return {
726
+ name: values.name,
727
+ colorScheme: {
728
+ backgroundColor: values.backgroundColor,
729
+ questionColor: values.questionColor,
730
+ buttonBackgroundColor: values.buttonBackgroundColor,
731
+ buttonTextColor: values.buttonTextColor,
732
+ answerColor: values.answerColor,
733
+ answerTextColor: values.answerTextColor
734
+ },
735
+ backgroundImage: _objectSpread$4(_objectSpread$4({}, values.backgroundImage), {}, {
736
+ backgroundColor: values.backgroundColor,
737
+ backgroundOverlayOpacity: values.backgroundOverlayOpacity,
738
+ isDominantBackgroundColorEnabled: values.isDominantBackgroundColorEnabled,
739
+ backgroundPosition: values.backgroundImage.backgroundPosition
740
+ }),
741
+ fontOptions: {
742
+ fontFamily: values.fontFamily
743
+ },
744
+ buttonOptions: {
745
+ buttonBorderRadius: values.buttonBorderRadius
746
+ },
747
+ layout: {
748
+ isContentBackgroundEnabled: values.isContentBackgroundEnabled,
749
+ contentBackgroundColor: values.contentBackgroundColor,
750
+ welcomeTextAlignment: values.welcomeTextAlignment,
751
+ thankYouTextAlignment: values.thankYouTextAlignment,
752
+ questionsTextAlignment: values.questionsTextAlignment,
753
+ logo: values.logo
754
+ }
755
+ };
756
+ };
757
+ var parseTheme = function parseTheme(theme) {
758
+ var _theme$layout$logo;
759
+ return {
760
+ name: theme.name,
761
+ backgroundColor: theme.colorScheme.backgroundColor,
762
+ questionColor: theme.colorScheme.questionColor,
763
+ buttonBackgroundColor: theme.colorScheme.buttonBackgroundColor,
764
+ buttonTextColor: theme.colorScheme.buttonTextColor,
765
+ answerColor: theme.colorScheme.answerColor,
766
+ answerTextColor: theme.colorScheme.answerTextColor,
767
+ backgroundImage: theme.backgroundImage,
768
+ backgroundOverlayOpacity: theme.backgroundImage.backgroundOverlayOpacity,
769
+ fontFamily: theme.fontOptions.fontFamily,
770
+ buttonBorderRadius: theme.buttonOptions.buttonBorderRadius,
771
+ isDominantBackgroundColorEnabled: theme.backgroundImage.isDominantBackgroundColorEnabled,
772
+ isContentBackgroundEnabled: theme.layout.isContentBackgroundEnabled,
773
+ contentBackgroundColor: theme.layout.contentBackgroundColor,
774
+ welcomeTextAlignment: theme.layout.welcomeTextAlignment,
775
+ thankYouTextAlignment: theme.layout.thankYouTextAlignment,
776
+ questionsTextAlignment: theme.layout.questionsTextAlignment,
777
+ logo: (_theme$layout$logo = theme.layout.logo) !== null && _theme$layout$logo !== void 0 ? _theme$layout$logo : {}
778
+ };
779
+ };
780
+ var getContrast = function getContrast(hexcolor) {
781
+ // If a leading # is provided, remove it
782
+ if (hexcolor.slice(0, 1) === "#") {
783
+ hexcolor = hexcolor.slice(1);
784
+ }
785
+
786
+ // If a three-character hexcode, make six-character
787
+ if (hexcolor.length === 3) {
788
+ hexcolor = hexcolor.split("").map(function (hex) {
789
+ return hex + hex;
790
+ }).join("");
791
+ }
792
+
793
+ // Convert to RGB value
794
+ var r = parseInt(hexcolor.substr(0, 2), 16);
795
+ var g = parseInt(hexcolor.substr(2, 2), 16);
796
+ var b = parseInt(hexcolor.substr(4, 2), 16);
797
+
798
+ // Get YIQ ratio
799
+ var yiq = (r * 299 + g * 587 + b * 114) / 1000;
800
+
801
+ // Check contrast
802
+ return yiq >= 128 ? "#000000" : "#ffffff";
803
+ };
804
+ var hexToRgb = function hexToRgb(hex) {
805
+ var result = /^#?([a-f\d]{2})([a-f\d]{2})([a-f\d]{2})$/i.exec(hex.padEnd(7, "0"));
806
+ return result ? "".concat(parseInt(result[1], 16), ", ").concat(parseInt(result[2], 16), ", ").concat(parseInt(result[3], 16)) : null;
807
+ };
808
+ var getDominantColor = /*#__PURE__*/function () {
809
+ var _ref2 = _asyncToGenerator( /*#__PURE__*/regenerator.mark(function _callee2(file) {
810
+ var image, context, c, hex;
811
+ return regenerator.wrap(function _callee2$(_context2) {
812
+ while (1) switch (_context2.prev = _context2.next) {
813
+ case 0:
814
+ _context2.next = 2;
815
+ return getImage(file);
816
+ case 2:
817
+ image = _context2.sent;
818
+ context = document.createElement("canvas").getContext("2d");
819
+ context === null || context === void 0 ? void 0 : context.drawImage(image, 0, 0, 1, 1);
820
+ c = context === null || context === void 0 ? void 0 : context.getImageData(0, 0, 1, 1).data;
821
+ if (!c) {
822
+ _context2.next = 9;
823
+ break;
824
+ }
825
+ hex = "#".concat(((1 << 24) + (c[0] << 16) + (c[1] << 8) + c[2]).toString(16).slice(1));
826
+ return _context2.abrupt("return", hex);
827
+ case 9:
828
+ return _context2.abrupt("return", null);
829
+ case 10:
830
+ case "end":
831
+ return _context2.stop();
832
+ }
833
+ }, _callee2);
834
+ }));
835
+ return function getDominantColor(_x2) {
836
+ return _ref2.apply(this, arguments);
837
+ };
838
+ }();
839
+ var bytesToSize = function bytesToSize(bytes) {
840
+ var sizes = ["Bytes", "KB", "MB", "GB", "TB"];
841
+ if (bytes === 0) return "n/a";
842
+ var i = parseInt(Math.floor(Math.log(bytes) / Math.log(1024)), 10);
843
+ if (i === 0) return "".concat(bytes, " ").concat(sizes[i], ")");
844
+ return "".concat((bytes / Math.pow(1024, i)).toFixed(1), " ").concat(sizes[i]);
845
+ };
846
+ var scrollElementIntoView = function scrollElementIntoView(elementId) {
847
+ var _elementToScroll$scro;
848
+ var elementToScroll = document.getElementById(elementId);
849
+ elementToScroll === null || elementToScroll === void 0 ? void 0 : (_elementToScroll$scro = elementToScroll.scrollIntoView) === null || _elementToScroll$scro === void 0 ? void 0 : _elementToScroll$scro.call(elementToScroll, {
850
+ behavior: "smooth"
851
+ });
852
+ };
853
+
854
+ var useDropzoneWithValidation = function useDropzoneWithValidation(_ref) {
855
+ var maxSize = _ref.maxSize,
856
+ acceptedTypes = _ref.acceptedTypes,
857
+ handleAcceptedFile = _ref.handleAcceptedFile,
858
+ _ref$isDominantColorE = _ref.isDominantColorEnabled,
859
+ isDominantColorEnabled = _ref$isDominantColorE === void 0 ? false : _ref$isDominantColorE;
860
+ var _useState = React.useState([]),
861
+ _useState2 = _slicedToArray(_useState, 2),
862
+ files = _useState2[0],
863
+ setFiles = _useState2[1];
864
+ var _useState3 = React.useState(false),
865
+ _useState4 = _slicedToArray(_useState3, 2),
866
+ error = _useState4[0],
867
+ setError = _useState4[1];
868
+ var _useState5 = React.useState(0),
869
+ _useState6 = _slicedToArray(_useState5, 2),
870
+ uploadProgress = _useState6[0],
871
+ setUploadProgress = _useState6[1];
872
+ var maxSizeInReadableUnits = bytesToSize(maxSize);
873
+ var _useTranslation = reactI18next.useTranslation(),
874
+ t = _useTranslation.t;
875
+ var fileErrors = {
876
+ "file-invalid-type": t("neetoMolecules.themeSidebar.error.fileTypeError", {
877
+ acceptedTypes: acceptedTypes
878
+ }),
879
+ "file-too-large": t("neetoMolecules.themeSidebar.error.fileSizeLimitExceeded", {
880
+ maxSizeInReadableUnits: maxSizeInReadableUnits
881
+ })
882
+ };
883
+ var _useDropzone = reactDropzone.useDropzone({
884
+ accept: acceptedTypes,
885
+ onDrop: function () {
886
+ var _onDrop = _asyncToGenerator( /*#__PURE__*/regenerator.mark(function _callee2(acceptedFiles) {
887
+ var newFiles;
888
+ return regenerator.wrap(function _callee2$(_context2) {
889
+ while (1) switch (_context2.prev = _context2.next) {
890
+ case 0:
891
+ _context2.next = 2;
892
+ return new Promise(function (resolve) {
893
+ var files = [];
894
+ acceptedFiles.forEach(function (file) {
895
+ var upload = new activestorage.DirectUpload(file, DIRECT_UPLOAD_URL, {
896
+ directUploadWillStoreFileWithXHR: function directUploadWillStoreFileWithXHR(xhr) {
897
+ xhr.upload.addEventListener("progress", function (event) {
898
+ var percentComplete = Math.round(event.loaded / event.total * 100);
899
+ setUploadProgress(percentComplete);
900
+ });
901
+ }
902
+ });
903
+ upload.create( /*#__PURE__*/function () {
904
+ var _ref2 = _asyncToGenerator( /*#__PURE__*/regenerator.mark(function _callee(error, blob) {
905
+ var resolvedFile, dominantColor;
906
+ return regenerator.wrap(function _callee$(_context) {
907
+ while (1) switch (_context.prev = _context.next) {
908
+ case 0:
909
+ if (!error) {
910
+ _context.next = 2;
911
+ break;
912
+ }
913
+ return _context.abrupt("return", neetoui.Toastr.error(error));
914
+ case 2:
915
+ resolvedFile = {
916
+ url: blob.blob_url,
917
+ name: blob.filename,
918
+ signed_id: blob.signed_id,
919
+ type: blob.content_type,
920
+ size: blob.byte_size
921
+ };
922
+ if (!isDominantColorEnabled) {
923
+ _context.next = 8;
924
+ break;
925
+ }
926
+ _context.next = 6;
927
+ return getDominantColor(file);
928
+ case 6:
929
+ dominantColor = _context.sent;
930
+ resolvedFile.dominantColor = dominantColor;
931
+ case 8:
932
+ files.push(resolvedFile);
933
+ return _context.abrupt("return", resolve(files));
934
+ case 10:
935
+ case "end":
936
+ return _context.stop();
937
+ }
938
+ }, _callee);
939
+ }));
940
+ return function (_x2, _x3) {
941
+ return _ref2.apply(this, arguments);
942
+ };
943
+ }());
944
+ });
945
+ return files;
946
+ });
947
+ case 2:
948
+ newFiles = _context2.sent;
949
+ setFiles(newFiles.map(function (file) {
950
+ return handleAcceptedFile(file);
951
+ }));
952
+ case 4:
953
+ case "end":
954
+ return _context2.stop();
955
+ }
956
+ }, _callee2);
957
+ }));
958
+ function onDrop(_x) {
959
+ return _onDrop.apply(this, arguments);
960
+ }
961
+ return onDrop;
962
+ }(),
963
+ maxSize: maxSize,
964
+ onDropRejected: function onDropRejected(fileRejections) {
965
+ fileRejections.map(function (_ref3) {
966
+ var errors = _ref3.errors;
967
+ return errors.map(function (_ref4) {
968
+ var code = _ref4.code;
969
+ return neetoui.Toastr.error(fileErrors[code] || t("neetoMolecules.common.somethingWentWrong"));
970
+ });
971
+ });
972
+ }
973
+ }),
974
+ getRootProps = _useDropzone.getRootProps,
975
+ getInputProps = _useDropzone.getInputProps,
976
+ isDragActive = _useDropzone.isDragActive,
977
+ fileRejections = _useDropzone.fileRejections;
978
+ React.useEffect(function () {
979
+ setError(neetoCist.isNotEmpty(fileRejections));
980
+ }, [fileRejections]);
981
+ return {
982
+ files: files,
983
+ getRootProps: getRootProps,
984
+ getInputProps: getInputProps,
985
+ isDragActive: isDragActive,
986
+ fileRejections: fileRejections,
987
+ error: error,
988
+ uploadProgress: uploadProgress
989
+ };
990
+ };
991
+
992
+ var ImageUploader = function ImageUploader(_ref) {
993
+ var onChange = _ref.onChange,
994
+ name = _ref.name,
995
+ _ref$isDominantColorE = _ref.isDominantColorEnabled,
996
+ isDominantColorEnabled = _ref$isDominantColorE === void 0 ? false : _ref$isDominantColorE;
997
+ var _useTranslation = reactI18next.useTranslation(),
998
+ t = _useTranslation.t;
999
+ var _useDropzoneWithValid = useDropzoneWithValidation({
1000
+ maxSize: FIVE_MEGABYTES,
1001
+ acceptedTypes: "image/*",
1002
+ handleAcceptedFile: onChange,
1003
+ isDominantColorEnabled: isDominantColorEnabled
1004
+ }),
1005
+ getInputProps = _useDropzoneWithValid.getInputProps,
1006
+ getRootProps = _useDropzoneWithValid.getRootProps,
1007
+ isDragActive = _useDropzoneWithValid.isDragActive,
1008
+ uploadProgress = _useDropzoneWithValid.uploadProgress;
1009
+ var shouldShowProgress = !!(uploadProgress && uploadProgress !== 1);
1010
+ return /*#__PURE__*/React__default["default"].createElement("div", {
1011
+ className: "space-y-2"
1012
+ }, /*#__PURE__*/React__default["default"].createElement("div", _extends({}, getRootProps(), {
1013
+ "data-cy": "image-browse-button",
1014
+ className: classnames__default["default"]("neeto-ui-border-primary-600 hover:neeto-ui-bg-gray-100 neeto-ui-rounded-lg flex cursor-pointer flex-col items-center justify-center gap-3 border border-dashed p-5 px-4 transition-all duration-300 ease-in-out", {
1015
+ "neeto-ui-border-gray-300": !isDragActive,
1016
+ "neeto-ui-border-gray-700": isDragActive
1017
+ })
1018
+ }), shouldShowProgress ? /*#__PURE__*/React__default["default"].createElement("div", {
1019
+ className: "flex h-24 w-full items-center"
1020
+ }, /*#__PURE__*/React__default["default"].createElement(ProgressBar, {
1021
+ progressPercentage: uploadProgress * 100,
1022
+ progressValue: "".concat(uploadProgress, "%")
1023
+ })) : /*#__PURE__*/React__default["default"].createElement(React__default["default"].Fragment, null, /*#__PURE__*/React__default["default"].createElement(neetoIcons.ImageUpload, {
1024
+ className: "neeto-ui-text-primary-500",
1025
+ size: 24
1026
+ }), /*#__PURE__*/React__default["default"].createElement("div", {
1027
+ className: "flex flex-col space-y-1"
1028
+ }, /*#__PURE__*/React__default["default"].createElement(neetoui.Typography, {
1029
+ className: "neeto-ui-text-gray-800 text-center leading-4",
1030
+ style: "body2"
1031
+ }, /*#__PURE__*/React__default["default"].createElement(reactI18next.Trans, {
1032
+ i18nKey: "neetoMolecules.themeSidebar.editTheme.imageUpload",
1033
+ components: {
1034
+ span: /*#__PURE__*/React__default["default"].createElement("span", {
1035
+ className: "neeto-ui-text-primary-500"
1036
+ })
1037
+ }
1038
+ })), /*#__PURE__*/React__default["default"].createElement("input", _extends({}, getInputProps(), {
1039
+ name: name
1040
+ })), /*#__PURE__*/React__default["default"].createElement(neetoui.Typography, {
1041
+ className: "neeto-ui-text-gray-700 text-center",
1042
+ "data-cy": "supported-files-text",
1043
+ lineHeight: "snug",
1044
+ style: "nano"
1045
+ }, t("neetoMolecules.themeSidebar.fileRequirements", {
1046
+ maxSize: FIVE_MEGABYTES
1047
+ }))))));
1048
+ };
1049
+
1050
+ var ImageBlock = function ImageBlock(_ref) {
1051
+ var label = _ref.label,
1052
+ name = _ref.name,
1053
+ _ref$imageData = _ref.imageData,
1054
+ imageData = _ref$imageData === void 0 ? {} : _ref$imageData,
1055
+ _onChange = _ref.onChange;
1056
+ var url = imageData.url,
1057
+ size = imageData.size;
1058
+ var fileName = imageData.name;
1059
+ if (url && !fileName) {
1060
+ var urlParts = url.split("/");
1061
+ fileName = urlParts[urlParts.length - 1];
1062
+ }
1063
+ return /*#__PURE__*/React__default["default"].createElement("div", {
1064
+ className: "space-y-3 py-3 first:pt-0 last:pb-0"
1065
+ }, label && /*#__PURE__*/React__default["default"].createElement("div", {
1066
+ className: "flex items-center justify-between"
1067
+ }, /*#__PURE__*/React__default["default"].createElement(neetoui.Typography, {
1068
+ "data-cy": "style-fields-labels",
1069
+ style: "body2"
1070
+ }, label)), url ? /*#__PURE__*/React__default["default"].createElement("div", {
1071
+ className: "flex items-center justify-between gap-2"
1072
+ }, /*#__PURE__*/React__default["default"].createElement("div", {
1073
+ className: "flex min-w-0 flex-grow items-center gap-2"
1074
+ }, /*#__PURE__*/React__default["default"].createElement("img", {
1075
+ className: "h-10 w-10 object-cover",
1076
+ src: url
1077
+ }), /*#__PURE__*/React__default["default"].createElement("div", {
1078
+ className: "flex min-w-0 flex-grow flex-col gap-1"
1079
+ }, /*#__PURE__*/React__default["default"].createElement(neetoui.Typography, {
1080
+ className: "neeto-ui-text-gray-700 break-words",
1081
+ style: "nano"
1082
+ }, fileName), size ? /*#__PURE__*/React__default["default"].createElement(neetoui.Typography, {
1083
+ className: "neeto-ui-text-gray-500",
1084
+ style: "nano"
1085
+ }, size / 1000, "KB") : null)), /*#__PURE__*/React__default["default"].createElement("div", {
1086
+ className: "flex items-center gap-1"
1087
+ }, /*#__PURE__*/React__default["default"].createElement(neetoui.Button, {
1088
+ label: "Remove",
1089
+ size: "small",
1090
+ style: "danger-text",
1091
+ onClick: function onClick() {
1092
+ return _onChange(name, {}, "");
1093
+ }
1094
+ }))) : /*#__PURE__*/React__default["default"].createElement(ImageUploader, {
1095
+ isDominantColorEnabled: true,
1096
+ onChange: function onChange(value) {
1097
+ return _onChange(name, value, "url(".concat(value.url, ")"));
1098
+ }
1099
+ }));
1100
+ };
1101
+
1102
+ var SelectBlock = function SelectBlock(_ref) {
1103
+ var label = _ref.label,
1104
+ _ref$placeholder = _ref.placeholder,
1105
+ placeholder = _ref$placeholder === void 0 ? "" : _ref$placeholder,
1106
+ value = _ref.value,
1107
+ options = _ref.options,
1108
+ onChange = _ref.onChange;
1109
+ return /*#__PURE__*/React__default["default"].createElement("div", {
1110
+ className: "flex items-center justify-between py-3 first:pt-0 last:pb-0"
1111
+ }, /*#__PURE__*/React__default["default"].createElement(neetoui.Typography, {
1112
+ "data-cy": "logo-field-labels",
1113
+ style: "body2"
1114
+ }, label), /*#__PURE__*/React__default["default"].createElement("div", {
1115
+ className: "w-40"
1116
+ }, /*#__PURE__*/React__default["default"].createElement(neetoui.Select, {
1117
+ options: options,
1118
+ placeholder: placeholder,
1119
+ value: value,
1120
+ onChange: onChange
1121
+ })));
1122
+ };
1123
+
1124
+ var Logo = reactUtils.withT(function (_ref) {
1125
+ var t = _ref.t,
1126
+ logo = _ref.logo,
1127
+ _onChange = _ref.onChange;
1128
+ return /*#__PURE__*/React__default["default"].createElement(Card, {
1129
+ title: t("neetoMolecules.themeSidebar.logo")
1130
+ }, /*#__PURE__*/React__default["default"].createElement("div", {
1131
+ className: "divide-y divide-gray-200"
1132
+ }, /*#__PURE__*/React__default["default"].createElement(ImageBlock, {
1133
+ imageData: logo,
1134
+ name: "logo",
1135
+ onChange: function onChange(name, value) {
1136
+ return _onChange(name, ramda.isEmpty(value) ? {
1137
+ position: logo.position
1138
+ } : ramda.mergeLeft(value, logo));
1139
+ }
1140
+ }), logo.url && /*#__PURE__*/React__default["default"].createElement(SelectBlock, {
1141
+ label: t("neetoMolecules.themeSidebar.logoPosition"),
1142
+ options: POSITION_OPTIONS,
1143
+ placeholder: t("neetoMolecules.themeSidebar.left"),
1144
+ value: neetoCist.findBy({
1145
+ value: logo.position || "left"
1146
+ }, POSITION_OPTIONS),
1147
+ onChange: function onChange(_ref2) {
1148
+ var value = _ref2.value;
1149
+ return _onChange("logo.position", value);
1150
+ }
1151
+ })));
1152
+ });
1153
+ var Logo$1 = /*#__PURE__*/React__default["default"].memo(Logo);
1154
+
1155
+ var AlignmentBlock = function AlignmentBlock(_ref) {
1156
+ var label = _ref.label,
1157
+ name = _ref.name;
1158
+ var _useTranslation = reactI18next.useTranslation(),
1159
+ t = _useTranslation.t;
1160
+ return /*#__PURE__*/React__default["default"].createElement("div", {
1161
+ className: "flex items-center justify-between gap-2 py-3 first:pt-0 last:pb-0"
1162
+ }, /*#__PURE__*/React__default["default"].createElement(neetoui.Typography, {
1163
+ "data-cy": "style-fields-labels",
1164
+ style: "body2"
1165
+ }, label), /*#__PURE__*/React__default["default"].createElement(formik.Field, {
1166
+ name: name
1167
+ }, function (_ref2) {
1168
+ var value = _ref2.field.value,
1169
+ setFieldValue = _ref2.form.setFieldValue;
1170
+ return /*#__PURE__*/React__default["default"].createElement("div", {
1171
+ className: "flex items-center gap-3"
1172
+ }, /*#__PURE__*/React__default["default"].createElement(neetoui.Button, {
1173
+ "data-cy": "alignment-left",
1174
+ icon: neetoIcons.LeftAlign,
1175
+ size: "large",
1176
+ style: value === "left" ? "primary" : "text",
1177
+ tooltipProps: {
1178
+ content: t("neetoMolecules.themeSidebar.alignmentOptions.left"),
1179
+ position: "bottom"
1180
+ },
1181
+ onClick: function onClick() {
1182
+ return setFieldValue(name, "left");
1183
+ }
1184
+ }), /*#__PURE__*/React__default["default"].createElement(neetoui.Button, {
1185
+ "data-cy": "alignment-center",
1186
+ icon: neetoIcons.CenterAlign,
1187
+ size: "large",
1188
+ style: value === "center" ? "primary" : "text",
1189
+ tooltipProps: {
1190
+ content: t("neetoMolecules.themeSidebar.alignmentOptions.center"),
1191
+ position: "bottom"
1192
+ },
1193
+ onClick: function onClick() {
1194
+ return setFieldValue(name, "center");
1195
+ }
1196
+ }));
1197
+ }));
1198
+ };
1199
+
1200
+ var ColorBlock = function ColorBlock(_ref) {
1201
+ var label = _ref.label,
1202
+ _ref$color = _ref.color,
1203
+ color = _ref$color === void 0 ? "#FFFFFF" : _ref$color,
1204
+ onChange = _ref.onChange;
1205
+ return /*#__PURE__*/React__default["default"].createElement("div", {
1206
+ className: "flex items-center justify-between py-3 first:pt-0 last:pb-0"
1207
+ }, /*#__PURE__*/React__default["default"].createElement(neetoui.Typography, {
1208
+ "data-cy": "style-fields-labels",
1209
+ style: "body2"
1210
+ }, label), /*#__PURE__*/React__default["default"].createElement(neetoui.ColorPicker, {
1211
+ showEyeDropper: true,
1212
+ color: color,
1213
+ onChange: onChange
1214
+ }));
1215
+ };
1216
+
1217
+ 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; }
1218
+ 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), !0).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; }
1219
+ var FontPickerBlock = function FontPickerBlock(_ref) {
1220
+ var label = _ref.label,
1221
+ _ref$placeholder = _ref.placeholder,
1222
+ placeholder = _ref$placeholder === void 0 ? "" : _ref$placeholder,
1223
+ value = _ref.value,
1224
+ options = _ref.options,
1225
+ onChange = _ref.onChange;
1226
+ return /*#__PURE__*/React__default["default"].createElement("div", {
1227
+ className: "flex items-center justify-between py-3 first:pt-0 last:pb-0"
1228
+ }, /*#__PURE__*/React__default["default"].createElement(neetoui.Typography, {
1229
+ "data-cy": "style-fields-labels",
1230
+ style: "body2"
1231
+ }, label), /*#__PURE__*/React__default["default"].createElement("div", {
1232
+ className: "w-40"
1233
+ }, /*#__PURE__*/React__default["default"].createElement(neetoui.Select, {
1234
+ options: options,
1235
+ placeholder: placeholder,
1236
+ value: value,
1237
+ styles: {
1238
+ option: function option(styles, _ref2) {
1239
+ var data = _ref2.data;
1240
+ return _objectSpread$3(_objectSpread$3({}, styles), {}, {
1241
+ fontFamily: data.value
1242
+ });
1243
+ }
1244
+ },
1245
+ onChange: onChange
1246
+ })));
1247
+ };
1248
+
1249
+ var e=[],t=[];function n(n,r){if(n&&"undefined"!=typeof document){var a,s=!0===r.prepend?"prepend":"append",d=!0===r.singleTag,i="string"==typeof r.container?document.querySelector(r.container):document.getElementsByTagName("head")[0];if(d){var u=e.indexOf(i);-1===u&&(u=e.push(i)-1,t[u]={}),a=t[u]&&t[u][s]?t[u][s]:t[u][s]=c();}else a=c();65279===n.charCodeAt(0)&&(n=n.substring(1)),a.styleSheet?a.styleSheet.cssText+=n:a.appendChild(document.createTextNode(n));}function c(){var e=document.createElement("style");if(e.setAttribute("type","text/css"),r.attributes)for(var t=Object.keys(r.attributes),n=0;n<t.length;n++)e.setAttribute(t[n],r.attributes[t[n]]);var a="prepend"===s?"afterbegin":"beforeend";return i.insertAdjacentElement(a,e),e}}
1250
+
1251
+ var css$1 = ".ant-slider{font-feature-settings:\"tnum\";box-sizing:border-box;color:rgba(0,0,0,.85);cursor:pointer;font-size:14px;font-variant:tabular-nums;height:12px;line-height:1.5715;list-style:none;margin:10px 6px;padding:4px 0;position:relative;touch-action:none}.ant-slider-vertical{height:100%;margin:6px 10px;padding:0 4px;width:12px}.ant-slider-vertical .ant-slider-rail{height:100%;width:4px}.ant-slider-vertical .ant-slider-track{width:4px}.ant-slider-vertical .ant-slider-handle{margin-left:-5px;margin-top:-6px}.ant-slider-vertical .ant-slider-mark{height:100%;left:12px;top:0;width:18px}.ant-slider-vertical .ant-slider-mark-text{left:4px;white-space:nowrap}.ant-slider-vertical .ant-slider-step{height:100%;width:4px}.ant-slider-vertical .ant-slider-dot{margin-left:-2px;top:auto}.ant-slider-tooltip .ant-tooltip-inner{min-width:0;min-width:auto}.ant-slider-rtl.ant-slider-vertical .ant-slider-handle{margin-left:0;margin-right:-5px}.ant-slider-rtl.ant-slider-vertical .ant-slider-mark{left:auto;right:12px}.ant-slider-rtl.ant-slider-vertical .ant-slider-mark-text{left:auto;right:4px}.ant-slider-rtl.ant-slider-vertical .ant-slider-dot{left:auto;right:2px}.ant-slider-with-marks{margin-bottom:28px}.ant-slider-rail{background-color:#f5f5f5;width:100%}.ant-slider-rail,.ant-slider-track{border-radius:2px;height:4px;position:absolute;transition:background-color .3s}.ant-slider-track{background-color:#91d5ff}.ant-slider-handle{background-color:#fff;border:2px solid #91d5ff;border-radius:50%;box-shadow:0;cursor:pointer;height:14px;margin-top:-5px;position:absolute;transition:border-color .3s,box-shadow .6s,transform .3s cubic-bezier(.18,.89,.32,1.28);width:14px}.ant-slider-handle-dragging{z-index:1}.ant-slider-handle:focus{border-color:#46a6ff;box-shadow:0 0 0 5px rgba(24,144,255,.12);outline:none}.ant-slider-handle.ant-tooltip-open{border-color:#1890ff}.ant-slider-handle:after{bottom:-6px;content:\"\";left:-6px;position:absolute;right:-6px;top:-6px}.ant-slider:hover .ant-slider-rail{background-color:#e1e1e1}.ant-slider:hover .ant-slider-track{background-color:#69c0ff}.ant-slider:hover .ant-slider-handle:not(.ant-tooltip-open){border-color:#69c0ff}.ant-slider-mark{font-size:14px;left:0;position:absolute;top:14px;width:100%}.ant-slider-mark-text{color:rgba(0,0,0,.45);cursor:pointer;display:inline-block;position:absolute;text-align:center;-webkit-user-select:none;-moz-user-select:none;user-select:none;word-break:keep-all}.ant-slider-mark-text-active{color:rgba(0,0,0,.85)}.ant-slider-step{background:transparent;height:4px;pointer-events:none;position:absolute;width:100%}.ant-slider-dot{background-color:#fff;border:2px solid #f0f0f0;border-radius:50%;cursor:pointer;height:8px;position:absolute;top:-2px;width:8px}.ant-slider-dot-active{border-color:#8cc8ff}.ant-slider-disabled{cursor:not-allowed}.ant-slider-disabled .ant-slider-rail{background-color:#f5f5f5!important}.ant-slider-disabled .ant-slider-track{background-color:rgba(0,0,0,.25)!important}.ant-slider-disabled .ant-slider-dot,.ant-slider-disabled .ant-slider-handle{background-color:#fff;border-color:rgba(0,0,0,.25)!important;box-shadow:none;cursor:not-allowed}.ant-slider-disabled .ant-slider-dot,.ant-slider-disabled .ant-slider-mark-text{cursor:not-allowed!important}.ant-slider-rtl{direction:rtl}.ant-slider-rtl .ant-slider-mark{left:auto;right:0}";
1252
+ n(css$1,{});
1253
+
1254
+ var SliderBlock = function SliderBlock(_ref) {
1255
+ var label = _ref.label,
1256
+ onChange = _ref.onChange,
1257
+ defaultValue = _ref.defaultValue,
1258
+ min = _ref.min,
1259
+ max = _ref.max,
1260
+ marks = _ref.marks;
1261
+ return /*#__PURE__*/React__default["default"].createElement("div", {
1262
+ className: "flex items-center justify-between gap-3 py-3 first:pt-0 last:pb-0"
1263
+ }, /*#__PURE__*/React__default["default"].createElement(neetoui.Typography, {
1264
+ "data-cy": "style-fields-labels",
1265
+ style: "body2"
1266
+ }, label), /*#__PURE__*/React__default["default"].createElement(antd.Slider, {
1267
+ className: "my-2 w-20",
1268
+ defaultValue: defaultValue,
1269
+ marks: marks,
1270
+ max: max,
1271
+ min: min,
1272
+ onChange: onChange,
1273
+ tooltip: {
1274
+ formatter: neetoCist.noop
1275
+ }
1276
+ }));
1277
+ };
1278
+
1279
+ var SwitchBlock = function SwitchBlock(_ref) {
1280
+ var label = _ref.label,
1281
+ name = _ref.name;
1282
+ return /*#__PURE__*/React__default["default"].createElement("div", {
1283
+ className: "flex items-center justify-between py-3 first:pt-0 last:pb-0"
1284
+ }, /*#__PURE__*/React__default["default"].createElement(neetoui.Typography, {
1285
+ "data-cy": "style-fields-labels",
1286
+ style: "body2"
1287
+ }, label), /*#__PURE__*/React__default["default"].createElement(formik$1.Switch, {
1288
+ "data-cy": "enable-background-color-toggle",
1289
+ name: name
1290
+ }));
1291
+ };
1292
+
1293
+ var Properties = function Properties(_ref) {
1294
+ var handleChange = _ref.handleChange,
1295
+ values = _ref.values;
1296
+ var _useTranslation = reactI18next.useTranslation(),
1297
+ t = _useTranslation.t;
1298
+ var backgroundColor = values.backgroundColor,
1299
+ questionColor = values.questionColor,
1300
+ buttonBackgroundColor = values.buttonBackgroundColor,
1301
+ buttonTextColor = values.buttonTextColor,
1302
+ answerColor = values.answerColor,
1303
+ backgroundImage = values.backgroundImage,
1304
+ isContentBackgroundEnabled = values.isContentBackgroundEnabled,
1305
+ contentBackgroundColor = values.contentBackgroundColor,
1306
+ isDominantBackgroundColorEnabled = values.isDominantBackgroundColorEnabled,
1307
+ backgroundOverlayOpacity = values.backgroundOverlayOpacity,
1308
+ buttonBorderRadius = values.buttonBorderRadius;
1309
+ var handleOverlayChange = function handleOverlayChange(value) {
1310
+ handleChange("backgroundOverlayOpacity", value, Math.abs(value / 100));
1311
+ if (value < 0) {
1312
+ handleChange("backgroundOverlayColor", "#000000");
1313
+ } else if (value > 0) {
1314
+ handleChange("backgroundOverlayColor", "#ffffff");
1315
+ }
1316
+ };
1317
+ React.useEffect(function () {
1318
+ if (isContentBackgroundEnabled) {
1319
+ var color = contentBackgroundColor || backgroundColor;
1320
+ handleChange("contentBackgroundColor", color);
1321
+ } else {
1322
+ handleChange("contentBackgroundColor", contentBackgroundColor);
1323
+ }
1324
+ }, [isContentBackgroundEnabled]);
1325
+ React.useEffect(function () {
1326
+ if (isDominantBackgroundColorEnabled && backgroundImage !== null && backgroundImage !== void 0 && backgroundImage.dominantColor) {
1327
+ handleChange("backgroundColor", backgroundImage.dominantColor, backgroundImage.dominantColor ? hexToRgb(backgroundImage.dominantColor) : "initial");
1328
+ }
1329
+ }, [isDominantBackgroundColorEnabled, backgroundImage === null || backgroundImage === void 0 ? void 0 : backgroundImage.dominantColor]);
1330
+ var handleColorChange = function handleColorChange(name) {
1331
+ return function (_ref2) {
1332
+ var hex = _ref2.hex,
1333
+ rgb = _ref2.rgb;
1334
+ handleChange(name, hex, "".concat(rgb.r, ", ").concat(rgb.g, ", ").concat(rgb.b));
1335
+ };
1336
+ };
1337
+ var handleAnswerColorChange = function handleAnswerColorChange(_ref3) {
1338
+ var hex = _ref3.hex,
1339
+ rgb = _ref3.rgb;
1340
+ handleColorChange("answerColor")({
1341
+ hex: hex,
1342
+ rgb: rgb
1343
+ });
1344
+ var contrastColor = getContrast(hex);
1345
+ handleColorChange("answerTextColor")({
1346
+ hex: contrastColor,
1347
+ rgb: hexToRgb(contrastColor)
1348
+ });
1349
+ };
1350
+ return /*#__PURE__*/React__default["default"].createElement(Card, {
1351
+ title: t("neetoMolecules.themeSidebar.style")
1352
+ }, /*#__PURE__*/React__default["default"].createElement("div", {
1353
+ className: "divide-y divide-gray-200"
1354
+ }, /*#__PURE__*/React__default["default"].createElement(FontPickerBlock, {
1355
+ label: t("neetoMolecules.themeSidebar.font"),
1356
+ options: FONT_OPTIONS,
1357
+ value: neetoCist.findBy({
1358
+ value: values.fontFamily
1359
+ }, FONT_OPTIONS) || null,
1360
+ onChange: function onChange(_ref4) {
1361
+ var value = _ref4.value;
1362
+ return handleChange("fontFamily", value);
1363
+ }
1364
+ }), /*#__PURE__*/React__default["default"].createElement(ColorBlock, {
1365
+ color: questionColor,
1366
+ label: t("neetoMolecules.themeSidebar.questions"),
1367
+ onChange: handleColorChange("questionColor")
1368
+ }), /*#__PURE__*/React__default["default"].createElement(ColorBlock, {
1369
+ color: answerColor,
1370
+ label: t("neetoMolecules.themeSidebar.answerColor"),
1371
+ onChange: handleAnswerColorChange
1372
+ }), /*#__PURE__*/React__default["default"].createElement(ColorBlock, {
1373
+ color: buttonBackgroundColor,
1374
+ label: t("neetoMolecules.themeSidebar.buttons"),
1375
+ onChange: handleColorChange("buttonBackgroundColor")
1376
+ }), /*#__PURE__*/React__default["default"].createElement(ColorBlock, {
1377
+ color: buttonTextColor,
1378
+ label: t("neetoMolecules.themeSidebar.buttonText"),
1379
+ onChange: handleColorChange("buttonTextColor")
1380
+ }), /*#__PURE__*/React__default["default"].createElement(SliderBlock, {
1381
+ defaultValue: buttonBorderRadius,
1382
+ label: t("neetoMolecules.themeSidebar.buttonBorderRadius"),
1383
+ max: 50,
1384
+ min: 0,
1385
+ onChange: function onChange(borderRadius) {
1386
+ return handleChange("buttonBorderRadius", borderRadius, "".concat(borderRadius, "px"));
1387
+ }
1388
+ }), /*#__PURE__*/React__default["default"].createElement(ColorBlock, {
1389
+ color: backgroundColor,
1390
+ label: t("neetoMolecules.themeSidebar.backgroundColor"),
1391
+ onChange: function onChange(_ref5) {
1392
+ var hex = _ref5.hex,
1393
+ rgb = _ref5.rgb;
1394
+ handleColorChange("backgroundColor")({
1395
+ hex: hex,
1396
+ rgb: rgb
1397
+ });
1398
+ handleChange("isDominantBackgroundColorEnabled", false);
1399
+ }
1400
+ }), /*#__PURE__*/React__default["default"].createElement(SwitchBlock, {
1401
+ label: t("neetoMolecules.themeSidebar.enableContentBackground"),
1402
+ name: "isContentBackgroundEnabled"
1403
+ }), isContentBackgroundEnabled && /*#__PURE__*/React__default["default"].createElement(ColorBlock, {
1404
+ color: contentBackgroundColor,
1405
+ label: t("neetoMolecules.themeSidebar.formBackgroundColor"),
1406
+ onChange: handleColorChange("contentBackgroundColor")
1407
+ }), /*#__PURE__*/React__default["default"].createElement(ImageBlock, {
1408
+ imageData: backgroundImage,
1409
+ label: t("neetoMolecules.themeSidebar.backgroundImage"),
1410
+ name: "backgroundImage",
1411
+ onChange: function onChange(name, value, variableValue) {
1412
+ handleChange(name, value, variableValue);
1413
+ handleChange("backgroundOverlayOpacity", 0);
1414
+ }
1415
+ }), (backgroundImage === null || backgroundImage === void 0 ? void 0 : backgroundImage.url) && /*#__PURE__*/React__default["default"].createElement(React__default["default"].Fragment, null, /*#__PURE__*/React__default["default"].createElement(SliderBlock, {
1416
+ defaultValue: backgroundOverlayOpacity,
1417
+ label: t("neetoMolecules.themeSidebar.backgroundOverlay"),
1418
+ marks: {
1419
+ 0: " "
1420
+ },
1421
+ max: 100,
1422
+ min: -100,
1423
+ onChange: handleOverlayChange
1424
+ }), /*#__PURE__*/React__default["default"].createElement(SwitchBlock, {
1425
+ name: "isDominantBackgroundColorEnabled",
1426
+ label: t("neetoMolecules.themeSidebar.enableDominantBackgroundColor")
1427
+ }), /*#__PURE__*/React__default["default"].createElement(SelectBlock, {
1428
+ label: t("neetoMolecules.themeSidebar.backgroundPosition"),
1429
+ options: BACKGROUND_POSITION_OPTIONS,
1430
+ placeholder: t("neetoMolecules.themeSidebar.left"),
1431
+ value: neetoCist.findBy({
1432
+ value: backgroundImage.backgroundPosition || "center"
1433
+ }, BACKGROUND_POSITION_OPTIONS),
1434
+ onChange: function onChange(_ref6) {
1435
+ var value = _ref6.value;
1436
+ return handleChange("backgroundImage.backgroundPosition", value);
1437
+ }
1438
+ })), /*#__PURE__*/React__default["default"].createElement(AlignmentBlock, {
1439
+ label: t("neetoMolecules.themeSidebar.thankYouTextAlignment"),
1440
+ name: "thankYouTextAlignment"
1441
+ }), /*#__PURE__*/React__default["default"].createElement(AlignmentBlock, {
1442
+ label: t("neetoMolecules.themeSidebar.welcomeTextAlignment"),
1443
+ name: "welcomeTextAlignment"
1444
+ }), /*#__PURE__*/React__default["default"].createElement(AlignmentBlock, {
1445
+ label: t("neetoMolecules.themeSidebar.questionsTextAlignment"),
1446
+ name: "questionsTextAlignment"
1447
+ })));
1448
+ };
1449
+
1450
+ var TextBlock = function TextBlock(_ref) {
1451
+ var name = _ref.name,
1452
+ _ref$autoFocus = _ref.autoFocus,
1453
+ autoFocus = _ref$autoFocus === void 0 ? false : _ref$autoFocus;
1454
+ return /*#__PURE__*/React__default["default"].createElement(formik$1.Input, {
1455
+ autoFocus: autoFocus,
1456
+ "data-cy": "text-block-input",
1457
+ name: name
1458
+ });
1459
+ };
1460
+
1461
+ var Customize = function Customize(_ref) {
1462
+ var theme = _ref.theme,
1463
+ handleFormSubmit = _ref.handleFormSubmit;
1464
+ var _useTranslation = reactI18next.useTranslation(),
1465
+ t = _useTranslation.t;
1466
+ var getInitialValues = function getInitialValues() {
1467
+ return theme ? parseTheme(theme) : INITIAL_STATE;
1468
+ };
1469
+ return /*#__PURE__*/React__default["default"].createElement(formik$1.Form, {
1470
+ formikProps: {
1471
+ enableReinitialize: true,
1472
+ initialValues: getInitialValues(),
1473
+ onSubmit: handleFormSubmit,
1474
+ validationSchema: THEME_VALIDATION_SCHEMA,
1475
+ validateOnBlur: true,
1476
+ validateOnChange: true
1477
+ }
1478
+ }, function (_ref2) {
1479
+ var values = _ref2.values,
1480
+ dirty = _ref2.dirty,
1481
+ isSubmitting = _ref2.isSubmitting,
1482
+ setFieldValue = _ref2.setFieldValue;
1483
+ return /*#__PURE__*/React__default["default"].createElement("div", {
1484
+ className: "neeto-molecules-theme-design-sidebar__scroll"
1485
+ }, /*#__PURE__*/React__default["default"].createElement("div", {
1486
+ className: "flex flex-col gap-6 p-4"
1487
+ }, /*#__PURE__*/React__default["default"].createElement(Card, {
1488
+ title: t("neetoMolecules.themeSidebar.name")
1489
+ }, /*#__PURE__*/React__default["default"].createElement(TextBlock, {
1490
+ autoFocus: true,
1491
+ name: "name"
1492
+ })), /*#__PURE__*/React__default["default"].createElement(Properties, {
1493
+ handleChange: setFieldValue,
1494
+ values: values
1495
+ }), /*#__PURE__*/React__default["default"].createElement(Logo$1, {
1496
+ logo: values.logo,
1497
+ onChange: setFieldValue
1498
+ })), /*#__PURE__*/React__default["default"].createElement("div", {
1499
+ className: "neeto-ui-bg-white neeto-ui-shadow-s sticky bottom-0 left-0 right-0 py-6 px-4"
1500
+ }, /*#__PURE__*/React__default["default"].createElement(neetoui.Button, {
1501
+ "data-cy": "save-changes-button",
1502
+ disabled: !dirty && theme.id,
1503
+ label: t("neetoMolecules.common.actions.save"),
1504
+ loading: isSubmitting,
1505
+ type: "submit"
1506
+ }), /*#__PURE__*/React__default["default"].createElement(neetoui.Button, {
1507
+ className: "ml-2",
1508
+ "data-cy": "reset-button",
1509
+ disabled: !dirty,
1510
+ label: t("neetoMolecules.common.actions.reset"),
1511
+ style: "text",
1512
+ type: "reset"
1513
+ })));
1514
+ });
1515
+ };
1516
+
1517
+ function _objectWithoutPropertiesLoose(source, excluded) {
1518
+ if (source == null) return {};
1519
+ var target = {};
1520
+ var sourceKeys = Object.keys(source);
1521
+ var key, i;
1522
+ for (i = 0; i < sourceKeys.length; i++) {
1523
+ key = sourceKeys[i];
1524
+ if (excluded.indexOf(key) >= 0) continue;
1525
+ target[key] = source[key];
1526
+ }
1527
+ return target;
1528
+ }
1529
+
1530
+ function _objectWithoutProperties(source, excluded) {
1531
+ if (source == null) return {};
1532
+ var target = _objectWithoutPropertiesLoose(source, excluded);
1533
+ var key, i;
1534
+ if (Object.getOwnPropertySymbols) {
1535
+ var sourceSymbolKeys = Object.getOwnPropertySymbols(source);
1536
+ for (i = 0; i < sourceSymbolKeys.length; i++) {
1537
+ key = sourceSymbolKeys[i];
1538
+ if (excluded.indexOf(key) >= 0) continue;
1539
+ if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue;
1540
+ target[key] = source[key];
1541
+ }
1542
+ }
1543
+ return target;
1544
+ }
1545
+
1546
+ var MENU_ITEM_TYPES = {
1547
+ menuItem: "menuItem",
1548
+ divider: "divider"
1549
+ };
1550
+ var DEFAULT_TOOLTIP_PROPS = {
1551
+ disabled: true,
1552
+ position: "bottom"
1553
+ };
1554
+
1555
+ var _excluded$3 = ["label", "key"],
1556
+ _excluded2 = ["isVisible", "key"];
1557
+ var MenuItem$1 = neetoui.Dropdown.MenuItem,
1558
+ Menu$1 = neetoui.Dropdown.Menu;
1559
+ var Submenu = function Submenu(_ref) {
1560
+ var label = _ref.label,
1561
+ key = _ref.key,
1562
+ menuItemProps = _objectWithoutProperties(_ref, _excluded$3);
1563
+ return /*#__PURE__*/React__default["default"].createElement(neetoui.Dropdown, _extends({
1564
+ customTarget: /*#__PURE__*/React__default["default"].createElement(MenuItem$1.Button, null, label),
1565
+ key: key,
1566
+ position: "left",
1567
+ trigger: "hover"
1568
+ }, menuItemProps.dropdownProps), /*#__PURE__*/React__default["default"].createElement(Menu$1, null, menuItemProps.menuItems.map(function (_ref2) {
1569
+ var _ref2$isVisible = _ref2.isVisible,
1570
+ isVisible = _ref2$isVisible === void 0 ? true : _ref2$isVisible,
1571
+ key = _ref2.key,
1572
+ menuItemProps = _objectWithoutProperties(_ref2, _excluded2);
1573
+ if (!isVisible) return null;
1574
+ return /*#__PURE__*/React__default["default"].createElement(MoreDropdownMenuItem, _extends({
1575
+ key: key
1576
+ }, menuItemProps));
1577
+ })));
1578
+ };
1579
+
1580
+ var _excluded$2 = ["onClick", "label", "type", "hasSubItems"];
1581
+ 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; }
1582
+ 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), !0).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; }
1583
+ var MenuItem = neetoui.Dropdown.MenuItem,
1584
+ Divider = neetoui.Dropdown.Divider;
1585
+ var MoreDropdownMenuItem = function MoreDropdownMenuItem(_ref) {
1586
+ var onClick = _ref.onClick,
1587
+ label = _ref.label,
1588
+ _ref$type = _ref.type,
1589
+ type = _ref$type === void 0 ? MENU_ITEM_TYPES.menuItem : _ref$type,
1590
+ _ref$hasSubItems = _ref.hasSubItems,
1591
+ hasSubItems = _ref$hasSubItems === void 0 ? false : _ref$hasSubItems,
1592
+ menuItemProps = _objectWithoutProperties(_ref, _excluded$2);
1593
+ if (type === MENU_ITEM_TYPES.divider) {
1594
+ return /*#__PURE__*/React__default["default"].createElement(Divider, null);
1595
+ }
1596
+ if (hasSubItems) {
1597
+ return /*#__PURE__*/React__default["default"].createElement(Submenu, _objectSpread$2({
1598
+ label: label
1599
+ }, menuItemProps));
1600
+ }
1601
+ return /*#__PURE__*/React__default["default"].createElement(MenuItem.Button, _objectSpread$2({
1602
+ onClick: onClick
1603
+ }, menuItemProps), label);
1604
+ };
1605
+
1606
+ var _excluded$1 = ["isVisible", "key"];
1607
+ 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; }
1608
+ 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), !0).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; }
1609
+ var Menu = neetoui.Dropdown.Menu;
1610
+ var MoreDropdown = function MoreDropdown(_ref) {
1611
+ var _ref$dropdownButtonPr = _ref.dropdownButtonProps,
1612
+ dropdownButtonProps = _ref$dropdownButtonPr === void 0 ? {} : _ref$dropdownButtonPr,
1613
+ _ref$isVertical = _ref.isVertical,
1614
+ isVertical = _ref$isVertical === void 0 ? false : _ref$isVertical,
1615
+ _ref$isDisabled = _ref.isDisabled,
1616
+ isDisabled = _ref$isDisabled === void 0 ? false : _ref$isDisabled,
1617
+ _ref$dropdownProps = _ref.dropdownProps,
1618
+ dropdownProps = _ref$dropdownProps === void 0 ? {} : _ref$dropdownProps,
1619
+ menuTopChildren = _ref.menuTopChildren,
1620
+ menuBottomChildren = _ref.menuBottomChildren,
1621
+ _ref$menuItems = _ref.menuItems,
1622
+ menuItems = _ref$menuItems === void 0 ? [] : _ref$menuItems;
1623
+ var tooltipProps = ramda.mergeRight(DEFAULT_TOOLTIP_PROPS, dropdownButtonProps.tooltipProps);
1624
+ var targetIcon = isVertical ? neetoIcons.MenuVertical : neetoIcons.MenuHorizontal;
1625
+ var isDropdownDisabled = isDisabled || dropdownProps.disabled;
1626
+ if (isDropdownDisabled && !tooltipProps.disabled) {
1627
+ return /*#__PURE__*/React__default["default"].createElement(neetoui.Tooltip, tooltipProps, /*#__PURE__*/React__default["default"].createElement("span", null, /*#__PURE__*/React__default["default"].createElement(neetoui.Button, _extends({
1628
+ disabled: true,
1629
+ "data-cy": "more-dropdown-button",
1630
+ "data-testid": "nui-dropdown-button",
1631
+ icon: targetIcon,
1632
+ iconPosition: "right",
1633
+ size: "medium",
1634
+ style: "text"
1635
+ }, dropdownButtonProps))));
1636
+ }
1637
+ return /*#__PURE__*/React__default["default"].createElement(neetoui.Dropdown, _extends({
1638
+ autoWidth: true,
1639
+ className: "flex",
1640
+ disabled: isDisabled,
1641
+ icon: targetIcon,
1642
+ buttonProps: _objectSpread$1({
1643
+ className: "min-h-0 flex-shrink-0",
1644
+ style: "text"
1645
+ }, dropdownButtonProps)
1646
+ }, dropdownProps), /*#__PURE__*/React__default["default"].createElement(Menu, null, menuTopChildren, menuItems.map(function (_ref2) {
1647
+ var _ref2$isVisible = _ref2.isVisible,
1648
+ isVisible = _ref2$isVisible === void 0 ? true : _ref2$isVisible,
1649
+ key = _ref2.key,
1650
+ menuItemProps = _objectWithoutProperties(_ref2, _excluded$1);
1651
+ if (!isVisible) return null;
1652
+ return /*#__PURE__*/React__default["default"].createElement(MoreDropdownMenuItem, _extends({
1653
+ key: key
1654
+ }, menuItemProps));
1655
+ }), menuBottomChildren));
1656
+ };
1657
+
1658
+ var _excluded = ["name"];
1659
+ var ThemeCard = function ThemeCard(_ref) {
1660
+ var _ref$active = _ref.active,
1661
+ active = _ref$active === void 0 ? false : _ref$active,
1662
+ isPreviewing = _ref.isPreviewing,
1663
+ onSetPreviewTheme = _ref.onSetPreviewTheme,
1664
+ onDeleteTheme = _ref.onDeleteTheme,
1665
+ onEditTheme = _ref.onEditTheme,
1666
+ onApplyTheme = _ref.onApplyTheme,
1667
+ onCloneTheme = _ref.onCloneTheme,
1668
+ theme = _ref.theme,
1669
+ isHighLightedTheme = _ref.isHighLightedTheme,
1670
+ isApplyingTheme = _ref.isApplyingTheme;
1671
+ var _useTranslation = reactI18next.useTranslation(),
1672
+ t = _useTranslation.t;
1673
+ var name = theme.name,
1674
+ styles = _objectWithoutProperties(theme, _excluded);
1675
+ var handleApplyTheme = function handleApplyTheme() {
1676
+ if (isApplyingTheme) return;
1677
+ onApplyTheme(theme);
1678
+ };
1679
+ var moreMenuItems = [{
1680
+ "data-cy": "theme-edit-button",
1681
+ key: "theme-edit-button",
1682
+ onClick: function onClick() {
1683
+ return onEditTheme(theme);
1684
+ },
1685
+ label: t("neetoMolecules.common.actions.edit"),
1686
+ isVisible: neetoCist.isPresent(onEditTheme)
1687
+ }, {
1688
+ isVisible: neetoCist.isPresent(onCloneTheme),
1689
+ "data-cy": "theme-clone-button",
1690
+ key: "theme-clone-button",
1691
+ onClick: function onClick() {
1692
+ return onCloneTheme(theme);
1693
+ },
1694
+ label: t("neetoMolecules.themeSidebar.themeOptions.clone")
1695
+ }, {
1696
+ isVisible: neetoCist.isPresent(onDeleteTheme),
1697
+ type: "divider",
1698
+ key: "divider"
1699
+ }, {
1700
+ isVisible: neetoCist.isPresent(onDeleteTheme),
1701
+ "data-cy": "theme-delete-button",
1702
+ key: "theme-delete-button",
1703
+ onClick: function onClick() {
1704
+ return onDeleteTheme(theme);
1705
+ },
1706
+ label: t("neetoMolecules.themeSidebar.themeOptions.delete")
1707
+ }];
1708
+ return /*#__PURE__*/React__default["default"].createElement("div", {
1709
+ className: "group space-y-2",
1710
+ "data-cy": active ? "active-theme-card" : "theme-card",
1711
+ id: theme.id
1712
+ }, /*#__PURE__*/React__default["default"].createElement("div", {
1713
+ className: classnames__default["default"]("neeto-molecules-theme-thumbnail neeto-ui-rounded-lg border transition-all duration-300 ease-in-out", {
1714
+ "neeto-ui-border-gray-400": !active,
1715
+ "neeto-ui-border-gray-800 neeto-molecules-theme-thumbnail--active": active,
1716
+ "neeto-molecules-theme-thumbnail--preview-active": isPreviewing,
1717
+ "neeto-molecules-theme-thumbnail--highlight-active": isHighLightedTheme
1718
+ }),
1719
+ style: {
1720
+ backgroundColor: ramda.path(["colorScheme", "backgroundColor"], styles),
1721
+ backgroundImage: ramda.path(["backgroundImage", "url"], styles) ? "url(".concat(ramda.path(["backgroundImage", "url"], styles), ")") : "initial",
1722
+ backgroundSize: "cover"
1723
+ },
1724
+ onClick: function onClick() {
1725
+ return onSetPreviewTheme(theme);
1726
+ }
1727
+ }, /*#__PURE__*/React__default["default"].createElement("div", {
1728
+ className: "group-hover:opacity-85 neeto-ui-rounded-lg cursor-pointer p-6 transition-all duration-300 ease-in-out"
1729
+ }, /*#__PURE__*/React__default["default"].createElement("div", {
1730
+ className: "mb-3"
1731
+ }, /*#__PURE__*/React__default["default"].createElement(neetoui.Typography, {
1732
+ style: "h3",
1733
+ weight: "semibold"
1734
+ }, /*#__PURE__*/React__default["default"].createElement("span", {
1735
+ style: {
1736
+ color: ramda.path(["colorScheme", "questionColor"], styles)
1737
+ }
1738
+ }, t("neetoMolecules.themeSidebar.themeCard.question"))), /*#__PURE__*/React__default["default"].createElement(neetoui.Typography, {
1739
+ className: "neeto-ui-text-gray-600",
1740
+ style: "body2"
1741
+ }, /*#__PURE__*/React__default["default"].createElement("span", {
1742
+ style: {
1743
+ color: ramda.path(["colorScheme", "answerColor"], styles)
1744
+ }
1745
+ }, t("neetoMolecules.themeSidebar.themeCard.answer")))), /*#__PURE__*/React__default["default"].createElement("div", {
1746
+ className: "neeto-ui-rounded-lg h-5 w-12",
1747
+ style: {
1748
+ backgroundColor: ramda.path(["colorScheme", "buttonBackgroundColor"], styles)
1749
+ }
1750
+ }))), /*#__PURE__*/React__default["default"].createElement("div", {
1751
+ className: "flex items-start justify-between gap-1"
1752
+ }, /*#__PURE__*/React__default["default"].createElement(neetoui.Typography, {
1753
+ className: "min-w-0 flex-grow break-words pt-1 line-clamp-2",
1754
+ "data-cy": "theme-name",
1755
+ lineHeight: "snug",
1756
+ style: "body2"
1757
+ }, name), /*#__PURE__*/React__default["default"].createElement("div", {
1758
+ className: "flex items-center gap-2"
1759
+ }, active ? /*#__PURE__*/React__default["default"].createElement(neetoui.Tag, {
1760
+ className: "flex-shrink-0",
1761
+ "data-cy": "active-theme-label",
1762
+ label: t("neetoMolecules.themeSidebar.active"),
1763
+ style: "success"
1764
+ }) : /*#__PURE__*/React__default["default"].createElement(neetoui.Button, {
1765
+ className: "flex-shrink-0",
1766
+ "data-cy": "apply-theme-button",
1767
+ disabled: isApplyingTheme,
1768
+ label: t("neetoMolecules.common.actions.apply"),
1769
+ loading: isApplyingTheme,
1770
+ size: "small",
1771
+ style: "link",
1772
+ onClick: handleApplyTheme
1773
+ }), /*#__PURE__*/React__default["default"].createElement(MoreDropdown, {
1774
+ buttonProps: {
1775
+ buttonSize: "small"
1776
+ },
1777
+ menuItems: moreMenuItems,
1778
+ dropdownButtonProps: {
1779
+ "data-cy": "theme-card-options",
1780
+ strategy: "fixed"
1781
+ }
1782
+ }))));
1783
+ };
1784
+
1785
+ var Themes = function Themes(_ref) {
1786
+ var currentTheme = _ref.currentTheme,
1787
+ onCloneTheme = _ref.onCloneTheme,
1788
+ _ref$customThemes = _ref.customThemes,
1789
+ customThemes = _ref$customThemes === void 0 ? [] : _ref$customThemes,
1790
+ _ref$defaultThemes = _ref.defaultThemes,
1791
+ defaultThemes = _ref$defaultThemes === void 0 ? [] : _ref$defaultThemes,
1792
+ onDeleteTheme = _ref.onDeleteTheme,
1793
+ onEditTheme = _ref.onEditTheme,
1794
+ onApplyTheme = _ref.onApplyTheme,
1795
+ previewingTheme = _ref.previewingTheme,
1796
+ setPreviewingTheme = _ref.setPreviewingTheme,
1797
+ themeToHighlight = _ref.themeToHighlight,
1798
+ didScrollActiveThemeIntoView = _ref.didScrollActiveThemeIntoView,
1799
+ applyingThemeId = _ref.applyingThemeId;
1800
+ var _useTranslation = reactI18next.useTranslation(),
1801
+ t = _useTranslation.t;
1802
+ var _useState = React.useState(""),
1803
+ _useState2 = _slicedToArray(_useState, 2),
1804
+ searchQuery = _useState2[0],
1805
+ setSearchQuery = _useState2[1];
1806
+ var filteredDefaultThemes = defaultThemes.filter(function (theme) {
1807
+ return theme.name.toLowerCase().includes(searchQuery.toLowerCase());
1808
+ });
1809
+ var filteredThemes = customThemes.filter(function (theme) {
1810
+ return theme.name.toLowerCase().includes(searchQuery.toLowerCase());
1811
+ });
1812
+ var isSearchFieldVisible = (customThemes === null || customThemes === void 0 ? void 0 : customThemes.length) + (defaultThemes === null || defaultThemes === void 0 ? void 0 : defaultThemes.length) > 10;
1813
+ React.useEffect(function () {
1814
+ if (didScrollActiveThemeIntoView.current || !(currentTheme !== null && currentTheme !== void 0 && currentTheme.id)) return;
1815
+ didScrollActiveThemeIntoView.current = true;
1816
+ setTimeout(function () {
1817
+ scrollElementIntoView(currentTheme.id);
1818
+ }, 200);
1819
+ }, [didScrollActiveThemeIntoView, currentTheme === null || currentTheme === void 0 ? void 0 : currentTheme.id]);
1820
+ return /*#__PURE__*/React__default["default"].createElement("div", {
1821
+ className: "neeto-molecules-theme-design-sidebar__scroll"
1822
+ }, /*#__PURE__*/React__default["default"].createElement("div", {
1823
+ className: "mb-6 space-y-3"
1824
+ }, isSearchFieldVisible && /*#__PURE__*/React__default["default"].createElement(neetoui.Input, {
1825
+ autoFocus: true,
1826
+ autoComplete: "off",
1827
+ className: "mb-4 mt-1 px-6",
1828
+ placeholder: t("neetoMolecules.themeSidebar.searchThemes"),
1829
+ prefix: /*#__PURE__*/React__default["default"].createElement(neetoIcons.Search, null),
1830
+ type: "search",
1831
+ value: searchQuery,
1832
+ onChange: function onChange(e) {
1833
+ return setSearchQuery(e.target.value);
1834
+ }
1835
+ }), ramda.isEmpty(filteredThemes) && ramda.isEmpty(filteredDefaultThemes) && /*#__PURE__*/React__default["default"].createElement(neetoui.Typography, {
1836
+ className: "text-center",
1837
+ style: "body2"
1838
+ }, t("neetoMolecules.common.notFound.title", {
1839
+ entity: t("neetoMolecules.themeSidebar.theme", {
1840
+ count: 2
1841
+ })
1842
+ })), neetoCist.isNotEmpty(filteredDefaultThemes) && /*#__PURE__*/React__default["default"].createElement(React__default["default"].Fragment, null, /*#__PURE__*/React__default["default"].createElement(neetoui.Typography, {
1843
+ className: "my-4 px-6 uppercase",
1844
+ "data-cy": "system-themes-header",
1845
+ style: "h6",
1846
+ weight: "semibold"
1847
+ }, t("neetoMolecules.themeSidebar.systemThemes")), /*#__PURE__*/React__default["default"].createElement("div", {
1848
+ className: "flex flex-col gap-4 px-6"
1849
+ }, filteredDefaultThemes.map(function (theme) {
1850
+ return /*#__PURE__*/React__default["default"].createElement(ThemeCard, {
1851
+ active: (currentTheme === null || currentTheme === void 0 ? void 0 : currentTheme.id) === theme.id,
1852
+ isApplyingTheme: applyingThemeId === theme.id,
1853
+ isPreviewing: (previewingTheme === null || previewingTheme === void 0 ? void 0 : previewingTheme.id) === theme.id,
1854
+ key: theme.id,
1855
+ onApplyTheme: onApplyTheme,
1856
+ onCloneTheme: onCloneTheme,
1857
+ theme: theme,
1858
+ onSetPreviewTheme: setPreviewingTheme
1859
+ });
1860
+ })))), neetoCist.isNotEmpty(filteredThemes) && /*#__PURE__*/React__default["default"].createElement("div", {
1861
+ className: "mb-6 space-y-3"
1862
+ }, /*#__PURE__*/React__default["default"].createElement(neetoui.Typography, {
1863
+ className: "my-4 px-6 uppercase",
1864
+ "data-cy": "custom-themes-header",
1865
+ style: "h6",
1866
+ weight: "semibold"
1867
+ }, t("neetoMolecules.themeSidebar.customThemes")), /*#__PURE__*/React__default["default"].createElement("div", {
1868
+ className: "flex flex-col gap-4 px-6"
1869
+ }, filteredThemes.map(function (theme) {
1870
+ var isActive = (currentTheme === null || currentTheme === void 0 ? void 0 : currentTheme.id) === theme.id;
1871
+ return /*#__PURE__*/React__default["default"].createElement(ThemeCard, {
1872
+ active: isActive,
1873
+ isHighLightedTheme: theme.id === themeToHighlight,
1874
+ isPreviewing: (previewingTheme === null || previewingTheme === void 0 ? void 0 : previewingTheme.id) === theme.id,
1875
+ key: theme.id,
1876
+ onApplyTheme: onApplyTheme,
1877
+ onCloneTheme: onCloneTheme,
1878
+ onEditTheme: onEditTheme,
1879
+ theme: theme,
1880
+ onDeleteTheme: !isActive ? onDeleteTheme : null,
1881
+ onSetPreviewTheme: setPreviewingTheme
1882
+ });
1883
+ }))));
1884
+ };
1885
+
1886
+ var css = ".neeto-molecules-theme-design-sidebar{background-color:rgb(var(--neeto-ui-white));box-shadow:var(--neeto-ui-shadow-s);height:100%;width:320px}.neeto-molecules-theme-design-sidebar .neeto-molecules-theme-design-sidebar__header{padding-bottom:8px;padding-top:16px}.neeto-molecules-theme-design-sidebar .neeto-molecules-theme-design-sidebar__scroll{height:94%;overflow-y:auto}.neeto-molecules-theme-design-sidebar .neeto-molecules-theme-design-sidebar__scroll .neeto-ui-colorpicker__target .neeto-ui-colorpicker-target__code{display:none}.neeto-molecules-theme-design-preview__wrapper{background-color:rgb(var(--neeto-ui-gray-100));flex-grow:1;height:100%;position:relative}.neeto-molecules-theme-thumbnail--active{border-color:rgb(var(--neeto-ui-primary-500))!important;box-shadow:0 0 0 1px rgb(var(--neeto-ui-primary-500))!important}.neeto-molecules-theme-thumbnail--preview-active{border-color:rgb(var(--neeto-ui-gray-700));box-shadow:0 0 0 1px rgb(var(--neeto-ui-gray-700))}.neeto-molecules-theme-thumbnail--highlight-active{border-color:rgb(var(--neeto-ui-success-500));box-shadow:0 0 0 1px rgb(var(--neeto-ui-success-500));transition:border-color box-shadow .1s .1s}";
1887
+ n(css,{});
1888
+
1889
+ var TitleBar = function TitleBar(_ref) {
1890
+ var currentScreen = _ref.currentScreen,
1891
+ handleBackPress = _ref.handleBackPress,
1892
+ handleCreateNewTheme = _ref.handleCreateNewTheme,
1893
+ isNewTheme = _ref.isNewTheme;
1894
+ var _useTranslation = reactI18next.useTranslation(),
1895
+ t = _useTranslation.t;
1896
+ if (currentScreen === DESIGN_SCREENS.CUSTOMIZE) {
1897
+ return /*#__PURE__*/React__default["default"].createElement("div", {
1898
+ className: classnames__default["default"]("neeto-molecules-theme-design-sidebar__header px-4")
1899
+ }, /*#__PURE__*/React__default["default"].createElement("div", {
1900
+ className: "flex items-center justify-start space-x-2"
1901
+ }, /*#__PURE__*/React__default["default"].createElement(neetoui.Button, {
1902
+ "data-cy": "customise-themes-back-button",
1903
+ icon: neetoIcons.LeftArrow,
1904
+ iconPosition: "left",
1905
+ style: "text",
1906
+ tooltipProps: {
1907
+ content: t("neetoMolecules.themeSidebar.backToThemes"),
1908
+ position: "top"
1909
+ },
1910
+ onClick: handleBackPress
1911
+ }), /*#__PURE__*/React__default["default"].createElement(neetoui.Typography, {
1912
+ "data-cy": "themes-header",
1913
+ lineHeight: "normal",
1914
+ style: "h3",
1915
+ weight: "semibold"
1916
+ }, isNewTheme ? t("neetoMolecules.themeSidebar.createTheme.title") : t("neetoMolecules.themeSidebar.editTheme.title"))));
1917
+ }
1918
+ return /*#__PURE__*/React__default["default"].createElement("div", {
1919
+ className: classnames__default["default"]("neeto-molecules-theme-design-sidebar__header px-6")
1920
+ }, /*#__PURE__*/React__default["default"].createElement("div", {
1921
+ className: "flex items-center justify-between space-x-2"
1922
+ }, /*#__PURE__*/React__default["default"].createElement(neetoui.Typography, {
1923
+ "data-cy": "themes-header",
1924
+ lineHeight: "normal",
1925
+ style: "h3",
1926
+ weight: "semibold"
1927
+ }, neetoCist.capitalize(t("neetoMolecules.themeSidebar.theme", {
1928
+ count: 2
1929
+ }))), /*#__PURE__*/React__default["default"].createElement("div", {
1930
+ className: "self-end"
1931
+ }, /*#__PURE__*/React__default["default"].createElement(neetoui.Button, {
1932
+ "data-cy": "customise-themes-add-theme-button",
1933
+ icon: neetoIcons.Plus,
1934
+ iconPosition: "left",
1935
+ style: "text",
1936
+ tooltipProps: {
1937
+ content: t("neetoMolecules.themeSidebar.addNewTheme"),
1938
+ position: "top"
1939
+ },
1940
+ onClick: handleCreateNewTheme
1941
+ }))));
1942
+ };
1943
+
1944
+ 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; }
1945
+ function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).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; }
1946
+ var ThemeSidebar = function ThemeSidebar(_ref) {
1947
+ var defaultThemes = _ref.defaultThemes,
1948
+ customThemes = _ref.customThemes,
1949
+ createTheme = _ref.createTheme,
1950
+ deleteTheme = _ref.deleteTheme,
1951
+ editTheme = _ref.editTheme,
1952
+ applyTheme = _ref.applyTheme,
1953
+ currentTheme = _ref.currentTheme,
1954
+ isLoadingThemes = _ref.isLoadingThemes,
1955
+ applyingThemeId = _ref.applyingThemeId;
1956
+ var _useTranslation = reactI18next.useTranslation(),
1957
+ t = _useTranslation.t;
1958
+ var _useState = React.useState(DESIGN_SCREENS.THEMES),
1959
+ _useState2 = _slicedToArray(_useState, 2),
1960
+ currentScreen = _useState2[0],
1961
+ setCurrentScreen = _useState2[1];
1962
+ var _useState3 = React.useState(null),
1963
+ _useState4 = _slicedToArray(_useState3, 2),
1964
+ previewingTheme = _useState4[0],
1965
+ setPreviewingTheme = _useState4[1];
1966
+ var _useState5 = React.useState(null),
1967
+ _useState6 = _slicedToArray(_useState5, 2),
1968
+ themeToHighlight = _useState6[0],
1969
+ setThemeToHighlight = _useState6[1];
1970
+ var didScrollActiveThemeIntoView = React.useRef(null);
1971
+ React.useEffect(function () {
1972
+ isLoadingThemes && setCurrentScreen(DESIGN_SCREENS.LOADING);
1973
+ }, [isLoadingThemes]);
1974
+ React.useEffect(function () {
1975
+ !previewingTheme && setCurrentScreen(DESIGN_SCREENS.THEMES);
1976
+ }, [previewingTheme]);
1977
+ var handleEditTheme = function handleEditTheme(theme) {
1978
+ setPreviewingTheme(theme);
1979
+ setCurrentScreen(DESIGN_SCREENS.CUSTOMIZE);
1980
+ };
1981
+ var handleBackPress = function handleBackPress() {
1982
+ setCurrentScreen(DESIGN_SCREENS.THEMES);
1983
+ setPreviewingTheme(null);
1984
+ };
1985
+ var handleCreateNewTheme = function handleCreateNewTheme() {
1986
+ setPreviewingTheme(_objectSpread(_objectSpread({}, defaultThemes[0]), {}, {
1987
+ id: null,
1988
+ name: t("neetoMolecules.themeSidebar.defaultThemeName")
1989
+ }));
1990
+ setCurrentScreen(DESIGN_SCREENS.CUSTOMIZE);
1991
+ };
1992
+ var highlightTheme = function highlightTheme(themeToHighlight) {
1993
+ setTimeout(function () {
1994
+ scrollElementIntoView(themeToHighlight.id);
1995
+ }, 1500);
1996
+ setTimeout(function () {
1997
+ setThemeToHighlight(null);
1998
+ }, 4000);
1999
+ setThemeToHighlight(themeToHighlight.id);
2000
+ };
2001
+ var createThemeCallback = function createThemeCallback(createdTheme) {
2002
+ setCurrentScreen(DESIGN_SCREENS.THEMES);
2003
+ setPreviewingTheme(createdTheme.id);
2004
+ highlightTheme(createdTheme);
2005
+ };
2006
+ var handleCloneTheme = function handleCloneTheme(data) {
2007
+ var themeToClone = _objectSpread(_objectSpread({}, data), {}, {
2008
+ name: "".concat(data.name, " - clone")
2009
+ });
2010
+ createTheme(themeToClone, createThemeCallback);
2011
+ };
2012
+ var handleFormSubmit = function handleFormSubmit(values) {
2013
+ var formattedValues = transformTheme(values);
2014
+ if (!(previewingTheme !== null && previewingTheme !== void 0 && previewingTheme.id)) {
2015
+ createTheme(formattedValues, createThemeCallback);
2016
+ } else {
2017
+ editTheme(_objectSpread(_objectSpread({}, formattedValues), {}, {
2018
+ id: previewingTheme.id
2019
+ }));
2020
+ }
2021
+ };
2022
+ return /*#__PURE__*/React__default["default"].createElement("div", {
2023
+ className: "neeto-molecules-theme-design-sidebar neeto-ui-border-gray-200 border-r"
2024
+ }, /*#__PURE__*/React__default["default"].createElement(TitleBar, {
2025
+ currentScreen: currentScreen,
2026
+ handleBackPress: handleBackPress,
2027
+ handleCreateNewTheme: handleCreateNewTheme,
2028
+ isNewTheme: !(previewingTheme !== null && previewingTheme !== void 0 && previewingTheme.id)
2029
+ }), currentScreen === DESIGN_SCREENS.LOADING && /*#__PURE__*/React__default["default"].createElement("div", {
2030
+ className: "flex h-full w-full items-center justify-center"
2031
+ }, /*#__PURE__*/React__default["default"].createElement(neetoui.Spinner, null)), currentScreen === DESIGN_SCREENS.THEMES && /*#__PURE__*/React__default["default"].createElement(Themes, {
2032
+ applyingThemeId: applyingThemeId,
2033
+ currentTheme: currentTheme,
2034
+ customThemes: customThemes,
2035
+ defaultThemes: defaultThemes,
2036
+ didScrollActiveThemeIntoView: didScrollActiveThemeIntoView,
2037
+ highlightTheme: highlightTheme,
2038
+ previewingTheme: previewingTheme,
2039
+ setPreviewingTheme: setPreviewingTheme,
2040
+ themeToHighlight: themeToHighlight,
2041
+ onApplyTheme: applyTheme,
2042
+ onCloneTheme: handleCloneTheme,
2043
+ onDeleteTheme: deleteTheme,
2044
+ onEditTheme: handleEditTheme
2045
+ }), currentScreen === DESIGN_SCREENS.CUSTOMIZE && /*#__PURE__*/React__default["default"].createElement(Customize, {
2046
+ handleFormSubmit: handleFormSubmit,
2047
+ theme: previewingTheme
2048
+ }));
2049
+ };
2050
+
2051
+ module.exports = ThemeSidebar;
2052
+ //# sourceMappingURL=ThemeSidebar.js.map