@bigbinary/neeto-molecules 1.19.10 → 1.19.12

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 (266) hide show
  1. package/README.md +0 -2
  2. package/dist/Breadcrumbs.js +1 -1
  3. package/dist/Builder.js +5 -1
  4. package/dist/Builder.js.map +1 -1
  5. package/dist/CalendarView.js +8 -2
  6. package/dist/CalendarView.js.map +1 -1
  7. package/dist/{Chevron-c639aa31.js → Chevron-fe44fbdd.js} +2 -2
  8. package/dist/{Chevron-c639aa31.js.map → Chevron-fe44fbdd.js.map} +1 -1
  9. package/dist/Codeblock.js +1 -1
  10. package/dist/Columns.js +6 -2
  11. package/dist/Columns.js.map +1 -1
  12. package/dist/ConfigurePageSidebar.js +3 -2
  13. package/dist/ConfigurePageSidebar.js.map +1 -1
  14. package/dist/ConfirmationModal.js +5 -2
  15. package/dist/ConfirmationModal.js.map +1 -1
  16. package/dist/CopyToClipboardButton.js +1 -1
  17. package/dist/Currency.js +2 -2
  18. package/dist/CustomDomain.js +13 -3
  19. package/dist/CustomDomain.js.map +1 -1
  20. package/dist/CustomDomainDashboard.js +16 -4
  21. package/dist/CustomDomainDashboard.js.map +1 -1
  22. package/dist/DateFormat.js +2 -1
  23. package/dist/DateFormat.js.map +1 -1
  24. package/dist/DateRangeFilter.js +2 -1
  25. package/dist/DateRangeFilter.js.map +1 -1
  26. package/dist/DeleteArchiveModal.js +4 -1
  27. package/dist/DeleteArchiveModal.js.map +1 -1
  28. package/dist/DocumentEditor.js +2 -2
  29. package/dist/DownloadMobileAppCallout.js +1 -1
  30. package/dist/DynamicVariables.js +2 -1
  31. package/dist/DynamicVariables.js.map +1 -1
  32. package/dist/EmailForm.js +16 -4
  33. package/dist/EmailForm.js.map +1 -1
  34. package/dist/EmailPreview.js +11 -8
  35. package/dist/EmailPreview.js.map +1 -1
  36. package/dist/EmojiPicker.js +1 -1
  37. package/dist/EmojiReactions.js +2 -1
  38. package/dist/EmojiReactions.js.map +1 -1
  39. package/dist/ErrorPage.js +2 -1
  40. package/dist/ErrorPage.js.map +1 -1
  41. package/dist/FloatingActionMenu.js +8 -1
  42. package/dist/FloatingActionMenu.js.map +1 -1
  43. package/dist/Header.js +5 -1
  44. package/dist/Header.js.map +1 -1
  45. package/dist/HelpPopover.js +3 -1
  46. package/dist/HelpPopover.js.map +1 -1
  47. package/dist/IconPicker.js +6 -1
  48. package/dist/IconPicker.js.map +1 -1
  49. package/dist/InlineInput.js +2 -1
  50. package/dist/InlineInput.js.map +1 -1
  51. package/dist/Insights.js +6 -1
  52. package/dist/Insights.js.map +1 -1
  53. package/dist/IntegrationCard.js +6 -1
  54. package/dist/IntegrationCard.js.map +1 -1
  55. package/dist/IntegrationDisconnectAlert.js +1 -1
  56. package/dist/IntegrationWalkthroughModal.js +3 -1
  57. package/dist/IntegrationWalkthroughModal.js.map +1 -1
  58. package/dist/IpRestriction.js +10 -2
  59. package/dist/IpRestriction.js.map +1 -1
  60. package/dist/KeyboardShortcuts.js +3 -1
  61. package/dist/KeyboardShortcuts.js.map +1 -1
  62. package/dist/LoginPage.js +5 -2
  63. package/dist/LoginPage.js.map +1 -1
  64. package/dist/MadeWith.js +2 -2
  65. package/dist/MadeWith.js.map +1 -1
  66. package/dist/MenuBar.js +3 -1
  67. package/dist/MenuBar.js.map +1 -1
  68. package/dist/Metadata.js +2 -1
  69. package/dist/Metadata.js.map +1 -1
  70. package/dist/MoreDropdown.js +3 -1
  71. package/dist/MoreDropdown.js.map +1 -1
  72. package/dist/NavigationHeader.js +6 -1
  73. package/dist/NavigationHeader.js.map +1 -1
  74. package/dist/NeetoWidget.js +11 -2
  75. package/dist/NeetoWidget.js.map +1 -1
  76. package/dist/Onboarding.js +3 -1
  77. package/dist/Onboarding.js.map +1 -1
  78. package/dist/OptionFields.js +5 -1
  79. package/dist/OptionFields.js.map +1 -1
  80. package/dist/PageLoader.js +1 -1
  81. package/dist/PhoneNumber.js +4 -1
  82. package/dist/PhoneNumber.js.map +1 -1
  83. package/dist/ProductEmbed.js +11 -1
  84. package/dist/ProductEmbed.js.map +1 -1
  85. package/dist/PublishBlock.js +3 -1
  86. package/dist/PublishBlock.js.map +1 -1
  87. package/dist/PublishYourItem.js +1 -1
  88. package/dist/Rename.js +5 -1
  89. package/dist/Rename.js.map +1 -1
  90. package/dist/ResponsiveDevicePicker.js +1 -1
  91. package/dist/Schedule.js +8 -2
  92. package/dist/Schedule.js.map +1 -1
  93. package/dist/Search.js +1 -1
  94. package/dist/SendToFields.js +6 -2
  95. package/dist/SendToFields.js.map +1 -1
  96. package/dist/Settings.js +7 -1
  97. package/dist/Settings.js.map +1 -1
  98. package/dist/ShareRecordingPane.js +7 -1
  99. package/dist/ShareRecordingPane.js.map +1 -1
  100. package/dist/ShareViaEmail.js +14 -2
  101. package/dist/ShareViaEmail.js.map +1 -1
  102. package/dist/ShareViaLink.js +9 -2
  103. package/dist/ShareViaLink.js.map +1 -1
  104. package/dist/Sidebar.js +3 -2
  105. package/dist/Sidebar.js.map +1 -1
  106. package/dist/StickyRibbonsContainer.js +1 -1
  107. package/dist/SubHeader.js +7 -2
  108. package/dist/SubHeader.js.map +1 -1
  109. package/dist/SuffixedInput.js +2 -2
  110. package/dist/Taxonomy.js +16 -3
  111. package/dist/Taxonomy.js.map +1 -1
  112. package/dist/TimeFormat.js +2 -1
  113. package/dist/TimeFormat.js.map +1 -1
  114. package/dist/TimezoneMismatchModal.js +3 -1
  115. package/dist/TimezoneMismatchModal.js.map +1 -1
  116. package/dist/ToggleFeatureCard.js +6 -2
  117. package/dist/ToggleFeatureCard.js.map +1 -1
  118. package/dist/cjs/Breadcrumbs.js +3 -2
  119. package/dist/cjs/Breadcrumbs.js.map +1 -1
  120. package/dist/cjs/Builder.js +21 -14
  121. package/dist/cjs/Builder.js.map +1 -1
  122. package/dist/cjs/CalendarView.js +22 -12
  123. package/dist/cjs/CalendarView.js.map +1 -1
  124. package/dist/cjs/{Chevron-5fe59f57.js → Chevron-37ef38ee.js} +6 -5
  125. package/dist/cjs/{Chevron-5fe59f57.js.map → Chevron-37ef38ee.js.map} +1 -1
  126. package/dist/cjs/Codeblock.js +1 -1
  127. package/dist/cjs/Columns.js +6 -2
  128. package/dist/cjs/Columns.js.map +1 -1
  129. package/dist/cjs/ConfigurePageSidebar.js +5 -3
  130. package/dist/cjs/ConfigurePageSidebar.js.map +1 -1
  131. package/dist/cjs/ConfirmationModal.js +17 -9
  132. package/dist/cjs/ConfirmationModal.js.map +1 -1
  133. package/dist/cjs/CopyToClipboardButton.js +3 -2
  134. package/dist/cjs/CopyToClipboardButton.js.map +1 -1
  135. package/dist/cjs/Currency.js +6 -4
  136. package/dist/cjs/Currency.js.map +1 -1
  137. package/dist/cjs/CustomDomain.js +19 -6
  138. package/dist/cjs/CustomDomain.js.map +1 -1
  139. package/dist/cjs/CustomDomainDashboard.js +25 -9
  140. package/dist/cjs/CustomDomainDashboard.js.map +1 -1
  141. package/dist/cjs/DateFormat.js +6 -3
  142. package/dist/cjs/DateFormat.js.map +1 -1
  143. package/dist/cjs/DateRangeFilter.js +6 -3
  144. package/dist/cjs/DateRangeFilter.js.map +1 -1
  145. package/dist/cjs/DeleteArchiveModal.js +15 -8
  146. package/dist/cjs/DeleteArchiveModal.js.map +1 -1
  147. package/dist/cjs/DocumentEditor.js +6 -4
  148. package/dist/cjs/DocumentEditor.js.map +1 -1
  149. package/dist/cjs/DownloadMobileAppCallout.js +3 -2
  150. package/dist/cjs/DownloadMobileAppCallout.js.map +1 -1
  151. package/dist/cjs/DynamicVariables.js +7 -4
  152. package/dist/cjs/DynamicVariables.js.map +1 -1
  153. package/dist/cjs/EmailForm.js +32 -13
  154. package/dist/cjs/EmailForm.js.map +1 -1
  155. package/dist/cjs/EmailPreview.js +20 -15
  156. package/dist/cjs/EmailPreview.js.map +1 -1
  157. package/dist/cjs/EmojiPicker.js +3 -2
  158. package/dist/cjs/EmojiPicker.js.map +1 -1
  159. package/dist/cjs/EmojiReactions.js +6 -3
  160. package/dist/cjs/EmojiReactions.js.map +1 -1
  161. package/dist/cjs/ErrorPage.js +8 -5
  162. package/dist/cjs/ErrorPage.js.map +1 -1
  163. package/dist/cjs/FloatingActionMenu.js +40 -27
  164. package/dist/cjs/FloatingActionMenu.js.map +1 -1
  165. package/dist/cjs/Header.js +7 -2
  166. package/dist/cjs/Header.js.map +1 -1
  167. package/dist/cjs/HelpPopover.js +11 -6
  168. package/dist/cjs/HelpPopover.js.map +1 -1
  169. package/dist/cjs/IconPicker.js +20 -9
  170. package/dist/cjs/IconPicker.js.map +1 -1
  171. package/dist/cjs/InlineInput.js +7 -4
  172. package/dist/cjs/InlineInput.js.map +1 -1
  173. package/dist/cjs/Insights.js +18 -11
  174. package/dist/cjs/Insights.js.map +1 -1
  175. package/dist/cjs/IntegrationCard.js +18 -8
  176. package/dist/cjs/IntegrationCard.js.map +1 -1
  177. package/dist/cjs/IntegrationDisconnectAlert.js +3 -2
  178. package/dist/cjs/IntegrationDisconnectAlert.js.map +1 -1
  179. package/dist/cjs/IntegrationWalkthroughModal.js +10 -5
  180. package/dist/cjs/IntegrationWalkthroughModal.js.map +1 -1
  181. package/dist/cjs/IpRestriction.js +43 -25
  182. package/dist/cjs/IpRestriction.js.map +1 -1
  183. package/dist/cjs/KeyboardShortcuts.js +13 -8
  184. package/dist/cjs/KeyboardShortcuts.js.map +1 -1
  185. package/dist/cjs/LoginPage.js +21 -13
  186. package/dist/cjs/LoginPage.js.map +1 -1
  187. package/dist/cjs/MadeWith.js +2 -2
  188. package/dist/cjs/MadeWith.js.map +1 -1
  189. package/dist/cjs/MenuBar.js +15 -10
  190. package/dist/cjs/MenuBar.js.map +1 -1
  191. package/dist/cjs/Metadata.js +10 -7
  192. package/dist/cjs/Metadata.js.map +1 -1
  193. package/dist/cjs/MoreDropdown.js +14 -9
  194. package/dist/cjs/MoreDropdown.js.map +1 -1
  195. package/dist/cjs/NavigationHeader.js +10 -3
  196. package/dist/cjs/NavigationHeader.js.map +1 -1
  197. package/dist/cjs/NeetoWidget.js +52 -32
  198. package/dist/cjs/NeetoWidget.js.map +1 -1
  199. package/dist/cjs/Onboarding.js +16 -11
  200. package/dist/cjs/Onboarding.js.map +1 -1
  201. package/dist/cjs/OptionFields.js +25 -16
  202. package/dist/cjs/OptionFields.js.map +1 -1
  203. package/dist/cjs/PageLoader.js +3 -2
  204. package/dist/cjs/PageLoader.js.map +1 -1
  205. package/dist/cjs/PhoneNumber.js +13 -6
  206. package/dist/cjs/PhoneNumber.js.map +1 -1
  207. package/dist/cjs/ProductEmbed.js +53 -32
  208. package/dist/cjs/ProductEmbed.js.map +1 -1
  209. package/dist/cjs/PublishBlock.js +12 -7
  210. package/dist/cjs/PublishBlock.js.map +1 -1
  211. package/dist/cjs/PublishYourItem.js +4 -3
  212. package/dist/cjs/PublishYourItem.js.map +1 -1
  213. package/dist/cjs/Rename.js +12 -5
  214. package/dist/cjs/Rename.js.map +1 -1
  215. package/dist/cjs/ResponsiveDevicePicker.js +3 -2
  216. package/dist/cjs/ResponsiveDevicePicker.js.map +1 -1
  217. package/dist/cjs/Schedule.js +37 -23
  218. package/dist/cjs/Schedule.js.map +1 -1
  219. package/dist/cjs/Search.js +3 -2
  220. package/dist/cjs/Search.js.map +1 -1
  221. package/dist/cjs/SendToFields.js +30 -20
  222. package/dist/cjs/SendToFields.js.map +1 -1
  223. package/dist/cjs/Settings.js +15 -6
  224. package/dist/cjs/Settings.js.map +1 -1
  225. package/dist/cjs/ShareRecordingPane.js +21 -9
  226. package/dist/cjs/ShareRecordingPane.js.map +1 -1
  227. package/dist/cjs/ShareViaEmail.js +35 -15
  228. package/dist/cjs/ShareViaEmail.js.map +1 -1
  229. package/dist/cjs/ShareViaLink.js +37 -23
  230. package/dist/cjs/ShareViaLink.js.map +1 -1
  231. package/dist/cjs/Sidebar.js +7 -4
  232. package/dist/cjs/Sidebar.js.map +1 -1
  233. package/dist/cjs/StickyRibbonsContainer.js +3 -2
  234. package/dist/cjs/StickyRibbonsContainer.js.map +1 -1
  235. package/dist/cjs/SubHeader.js +11 -5
  236. package/dist/cjs/SubHeader.js.map +1 -1
  237. package/dist/cjs/SuffixedInput.js +4 -3
  238. package/dist/cjs/SuffixedInput.js.map +1 -1
  239. package/dist/cjs/Taxonomy.js +44 -21
  240. package/dist/cjs/Taxonomy.js.map +1 -1
  241. package/dist/cjs/TimeFormat.js +2 -1
  242. package/dist/cjs/TimeFormat.js.map +1 -1
  243. package/dist/cjs/TimezoneMismatchModal.js +15 -10
  244. package/dist/cjs/TimezoneMismatchModal.js.map +1 -1
  245. package/dist/cjs/ToggleFeatureCard.js +22 -12
  246. package/dist/cjs/ToggleFeatureCard.js.map +1 -1
  247. package/dist/cjs/{index-9b0c3047.js → index-5189db17.js} +36 -20
  248. package/dist/cjs/{index-9b0c3047.js.map → index-5189db17.js.map} +1 -1
  249. package/dist/cjs/{useColumns-9978cf70.js → useColumns-5660bfea.js} +19 -10
  250. package/dist/cjs/{useColumns-9978cf70.js.map → useColumns-5660bfea.js.map} +1 -1
  251. package/dist/{index-8fd0cad5.js → index-e29acf27.js} +10 -3
  252. package/dist/{index-8fd0cad5.js.map → index-e29acf27.js.map} +1 -1
  253. package/dist/{useColumns-751e9192.js → useColumns-cec6e827.js} +6 -2
  254. package/dist/{useColumns-751e9192.js.map → useColumns-cec6e827.js.map} +1 -1
  255. package/package.json +24 -3
  256. package/src/translations/en.json +0 -84
  257. package/dist/Security.js +0 -341
  258. package/dist/Security.js.map +0 -1
  259. package/dist/ThemeSidebar.js +0 -1410
  260. package/dist/ThemeSidebar.js.map +0 -1
  261. package/dist/cjs/Security.js +0 -372
  262. package/dist/cjs/Security.js.map +0 -1
  263. package/dist/cjs/ThemeSidebar.js +0 -1443
  264. package/dist/cjs/ThemeSidebar.js.map +0 -1
  265. package/types/Security.d.ts +0 -35
  266. package/types/themeSidebar.d.ts +0 -80
@@ -1,1410 +0,0 @@
1
- import _defineProperty from '@babel/runtime/helpers/defineProperty';
2
- import _slicedToArray from '@babel/runtime/helpers/slicedToArray';
3
- import React__default, { useState, useEffect, useRef } from 'react';
4
- import { Typography, Toastr, Button, Select, ColorPicker, Tag, Input as Input$1, Spinner } from '@bigbinary/neetoui';
5
- import { useTranslation, Trans } from 'react-i18next';
6
- import * as yup from 'yup';
7
- import { Switch, Input, Form } from '@bigbinary/neetoui/formik';
8
- import { isNotEmpty, findBy, noop, isPresent, capitalize } from '@bigbinary/neeto-cist';
9
- import withT from '@bigbinary/neeto-commons-frontend/react-utils/withT';
10
- import { isEmpty, mergeLeft, path } from 'ramda';
11
- import _extends from '@babel/runtime/helpers/extends';
12
- import classnames from 'classnames';
13
- import { ImageUpload, LeftAlign, CenterAlign, Search, LeftArrow, Plus } from '@bigbinary/neeto-icons';
14
- import { motion } from 'framer-motion';
15
- import _asyncToGenerator from '@babel/runtime/helpers/asyncToGenerator';
16
- import _regeneratorRuntime from '@babel/runtime/regenerator';
17
- import { DirectUpload } from '@rails/activestorage';
18
- import { useDropzone } from 'react-dropzone';
19
- import { Field } from 'formik';
20
- import { Slider } from 'antd';
21
- import { n } from './inject-css-c86de496.js';
22
- import _objectWithoutProperties from '@babel/runtime/helpers/objectWithoutProperties';
23
- import MoreDropdown from './MoreDropdown.js';
24
-
25
- var DIRECT_UPLOAD_URL = "/api/direct_uploads";
26
- var DESIGN_SCREENS = {
27
- THEMES: "Themes",
28
- CUSTOMIZE: "Customize",
29
- LOADING: "Loading"
30
- };
31
- var INITIAL_STATE = {
32
- name: "",
33
- backgroundColor: "#ffffff",
34
- backgroundOverlayColor: "#000000",
35
- backgroundOverlayOpacity: 0,
36
- isDominantBackgroundColorEnabled: false,
37
- questionColor: "#000000",
38
- buttonBackgroundColor: "#2D36D4",
39
- buttonTextColor: "#ffffff",
40
- answerColor: "#2D36D4",
41
- answerTextColor: "#ffffff",
42
- logo: {},
43
- buttonBorderRadius: 10,
44
- isContentBackgroundEnabled: false,
45
- welcomeTextAlignment: "left",
46
- thankYouTextAlignment: "center",
47
- questionsTextAlignment: "left",
48
- fontFamily: '-apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Helvetica, Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol"'
49
- };
50
- var THEME_VALIDATION_SCHEMA = yup.object().shape({
51
- name: yup.string().required("Name is required")
52
- });
53
- var FIVE_MEGABYTES = 5242880;
54
- var POSITION_OPTIONS = [{
55
- label: "Left",
56
- value: "left"
57
- }, {
58
- label: "Right",
59
- value: "right"
60
- }];
61
- var BACKGROUND_POSITION_OPTIONS = [{
62
- label: "Center",
63
- value: "center"
64
- }, {
65
- label: "Top left",
66
- value: "top left"
67
- }, {
68
- label: "Top center",
69
- value: "top center"
70
- }, {
71
- label: "Top right",
72
- value: "top right"
73
- }, {
74
- label: "Center left",
75
- value: "center left"
76
- }, {
77
- label: "Center right",
78
- value: "center right"
79
- }, {
80
- label: "Bottom left",
81
- value: "bottom left"
82
- }, {
83
- label: "Bottom right",
84
- value: "bottom right"
85
- }, {
86
- label: "Bottom center",
87
- value: "bottom center"
88
- }];
89
- var FONT_OPTIONS = [{
90
- label: "System UI",
91
- value: '-apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Helvetica, Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol"'
92
- }, {
93
- label: "Cedarville Cursive",
94
- value: "'Cedarville Cursive', cursive"
95
- }, {
96
- label: "Poppins",
97
- value: "Poppins, sans-serif"
98
- }, {
99
- label: "Roboto",
100
- value: "Roboto, sans-serif"
101
- }, {
102
- label: "Open Sans",
103
- value: "Open Sans, sans-serif"
104
- }, {
105
- label: "Montserrat",
106
- value: "Montserrat, sans-serif"
107
- }, {
108
- label: "Raleway",
109
- value: "Raleway, sans-serif"
110
- }, {
111
- label: "Quicksand",
112
- value: "Quicksand, sans-serif"
113
- }, {
114
- label: "Inter",
115
- value: "Inter, sans-serif"
116
- }, {
117
- label: "Satoshi",
118
- value: "Satoshi, sans-serif"
119
- }, {
120
- label: "Chillax",
121
- value: "Chillax, sans-serif"
122
- }, {
123
- label: "Clash Display",
124
- value: "Clash Display, sans-serif"
125
- }, {
126
- label: "General Sans",
127
- value: "General Sans, sans-serif"
128
- }, {
129
- label: "Cabinet Grotesk",
130
- value: "Cabinet Grotesk, sans-serif"
131
- }, {
132
- label: "Lora",
133
- value: "Lora, serif"
134
- }, {
135
- label: "Merriweather",
136
- value: "Merriweather, serif"
137
- }, {
138
- label: "Boska",
139
- value: "Boska, serif"
140
- }, {
141
- label: "Playfair Display",
142
- value: "Playfair Display, serif"
143
- }, {
144
- label: "Roboto Slab",
145
- value: "Roboto Slab, serif"
146
- }, {
147
- label: "Dancing Script",
148
- value: "Dancing Script, cursive"
149
- }];
150
-
151
- var Card = function Card(_ref) {
152
- var title = _ref.title,
153
- children = _ref.children;
154
- return /*#__PURE__*/React__default.createElement("div", {
155
- className: "neeto-ui-border-gray-300 neeto-ui-rounded-lg neeto-ui-bg-white space-y-3 border p-4"
156
- }, title && /*#__PURE__*/React__default.createElement("div", {
157
- className: "flex items-center justify-between"
158
- }, /*#__PURE__*/React__default.createElement(Typography, {
159
- "data-cy": "edit-theme-properties",
160
- lineHeight: "normal",
161
- style: "h4",
162
- weight: "semibold"
163
- }, title)), children && /*#__PURE__*/React__default.createElement("div", {
164
- className: "space-y-4"
165
- }, children));
166
- };
167
-
168
- var ProgressBar = function ProgressBar(_ref) {
169
- var progressPercentage = _ref.progressPercentage,
170
- progressValue = _ref.progressValue;
171
- return /*#__PURE__*/React__default.createElement("div", {
172
- className: "neeto-ui-bg-gray-200 neeto-ui-rounded-full w-full overflow-hidden"
173
- }, /*#__PURE__*/React__default.createElement(motion.div, {
174
- animate: {
175
- width: "".concat(progressPercentage, "%")
176
- },
177
- 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",
178
- initial: {
179
- width: 0
180
- },
181
- transition: {
182
- duration: 0.5,
183
- ease: "easeInOut"
184
- }
185
- }, progressValue));
186
- };
187
-
188
- 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; }
189
- 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; }
190
- var readFile = function readFile(file) {
191
- return new Promise(function (resolve) {
192
- var reader = new FileReader();
193
- reader.onload = function () {
194
- resolve(reader.result);
195
- };
196
- reader.readAsDataURL(file);
197
- });
198
- };
199
- var getImage = /*#__PURE__*/function () {
200
- var _ref = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee(file) {
201
- var image;
202
- return _regeneratorRuntime.wrap(function _callee$(_context) {
203
- while (1) switch (_context.prev = _context.next) {
204
- case 0:
205
- image = new Image();
206
- _context.next = 3;
207
- return readFile(file);
208
- case 3:
209
- image.src = _context.sent;
210
- return _context.abrupt("return", new Promise(function (resolve) {
211
- image.onload = function () {
212
- resolve(image);
213
- };
214
- }));
215
- case 5:
216
- case "end":
217
- return _context.stop();
218
- }
219
- }, _callee);
220
- }));
221
- return function getImage(_x) {
222
- return _ref.apply(this, arguments);
223
- };
224
- }();
225
- var transformTheme = function transformTheme(values) {
226
- return {
227
- name: values.name,
228
- colorScheme: {
229
- backgroundColor: values.backgroundColor,
230
- questionColor: values.questionColor,
231
- buttonBackgroundColor: values.buttonBackgroundColor,
232
- buttonTextColor: values.buttonTextColor,
233
- answerColor: values.answerColor,
234
- answerTextColor: values.answerTextColor
235
- },
236
- backgroundImage: _objectSpread$2(_objectSpread$2({}, values.backgroundImage), {}, {
237
- backgroundColor: values.backgroundColor,
238
- backgroundOverlayOpacity: values.backgroundOverlayOpacity,
239
- isDominantBackgroundColorEnabled: values.isDominantBackgroundColorEnabled,
240
- backgroundPosition: values.backgroundImage.backgroundPosition
241
- }),
242
- fontOptions: {
243
- fontFamily: values.fontFamily
244
- },
245
- buttonOptions: {
246
- buttonBorderRadius: values.buttonBorderRadius
247
- },
248
- layout: {
249
- isContentBackgroundEnabled: values.isContentBackgroundEnabled,
250
- contentBackgroundColor: values.contentBackgroundColor,
251
- welcomeTextAlignment: values.welcomeTextAlignment,
252
- thankYouTextAlignment: values.thankYouTextAlignment,
253
- questionsTextAlignment: values.questionsTextAlignment,
254
- logo: values.logo
255
- }
256
- };
257
- };
258
- var parseTheme = function parseTheme(theme) {
259
- var _theme$layout$logo;
260
- return {
261
- name: theme.name,
262
- backgroundColor: theme.colorScheme.backgroundColor,
263
- questionColor: theme.colorScheme.questionColor,
264
- buttonBackgroundColor: theme.colorScheme.buttonBackgroundColor,
265
- buttonTextColor: theme.colorScheme.buttonTextColor,
266
- answerColor: theme.colorScheme.answerColor,
267
- answerTextColor: theme.colorScheme.answerTextColor,
268
- backgroundImage: theme.backgroundImage,
269
- backgroundOverlayOpacity: theme.backgroundImage.backgroundOverlayOpacity,
270
- fontFamily: theme.fontOptions.fontFamily,
271
- buttonBorderRadius: theme.buttonOptions.buttonBorderRadius,
272
- isDominantBackgroundColorEnabled: theme.backgroundImage.isDominantBackgroundColorEnabled,
273
- isContentBackgroundEnabled: theme.layout.isContentBackgroundEnabled,
274
- contentBackgroundColor: theme.layout.contentBackgroundColor,
275
- welcomeTextAlignment: theme.layout.welcomeTextAlignment,
276
- thankYouTextAlignment: theme.layout.thankYouTextAlignment,
277
- questionsTextAlignment: theme.layout.questionsTextAlignment,
278
- logo: (_theme$layout$logo = theme.layout.logo) !== null && _theme$layout$logo !== void 0 ? _theme$layout$logo : {}
279
- };
280
- };
281
- var getContrast = function getContrast(hexcolor) {
282
- // If a leading # is provided, remove it
283
- if (hexcolor.slice(0, 1) === "#") {
284
- hexcolor = hexcolor.slice(1);
285
- }
286
-
287
- // If a three-character hexcode, make six-character
288
- if (hexcolor.length === 3) {
289
- hexcolor = hexcolor.split("").map(function (hex) {
290
- return hex + hex;
291
- }).join("");
292
- }
293
-
294
- // Convert to RGB value
295
- var r = parseInt(hexcolor.substr(0, 2), 16);
296
- var g = parseInt(hexcolor.substr(2, 2), 16);
297
- var b = parseInt(hexcolor.substr(4, 2), 16);
298
-
299
- // Get YIQ ratio
300
- var yiq = (r * 299 + g * 587 + b * 114) / 1000;
301
-
302
- // Check contrast
303
- return yiq >= 128 ? "#000000" : "#ffffff";
304
- };
305
- var hexToRgb = function hexToRgb(hex) {
306
- var result = /^#?([a-f\d]{2})([a-f\d]{2})([a-f\d]{2})$/i.exec(hex.padEnd(7, "0"));
307
- return result ? "".concat(parseInt(result[1], 16), ", ").concat(parseInt(result[2], 16), ", ").concat(parseInt(result[3], 16)) : null;
308
- };
309
- var getDominantColor = /*#__PURE__*/function () {
310
- var _ref2 = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee2(file) {
311
- var image, context, c, hex;
312
- return _regeneratorRuntime.wrap(function _callee2$(_context2) {
313
- while (1) switch (_context2.prev = _context2.next) {
314
- case 0:
315
- _context2.next = 2;
316
- return getImage(file);
317
- case 2:
318
- image = _context2.sent;
319
- context = document.createElement("canvas").getContext("2d");
320
- context === null || context === void 0 ? void 0 : context.drawImage(image, 0, 0, 1, 1);
321
- c = context === null || context === void 0 ? void 0 : context.getImageData(0, 0, 1, 1).data;
322
- if (!c) {
323
- _context2.next = 9;
324
- break;
325
- }
326
- hex = "#".concat(((1 << 24) + (c[0] << 16) + (c[1] << 8) + c[2]).toString(16).slice(1));
327
- return _context2.abrupt("return", hex);
328
- case 9:
329
- return _context2.abrupt("return", null);
330
- case 10:
331
- case "end":
332
- return _context2.stop();
333
- }
334
- }, _callee2);
335
- }));
336
- return function getDominantColor(_x2) {
337
- return _ref2.apply(this, arguments);
338
- };
339
- }();
340
- var bytesToSize = function bytesToSize(bytes) {
341
- var sizes = ["Bytes", "KB", "MB", "GB", "TB"];
342
- if (bytes === 0) return "n/a";
343
- var i = parseInt(Math.floor(Math.log(bytes) / Math.log(1024)), 10);
344
- if (i === 0) return "".concat(bytes, " ").concat(sizes[i], ")");
345
- return "".concat((bytes / Math.pow(1024, i)).toFixed(1), " ").concat(sizes[i]);
346
- };
347
- var scrollElementIntoView = function scrollElementIntoView(elementId) {
348
- var _elementToScroll$scro;
349
- var elementToScroll = document.getElementById(elementId);
350
- elementToScroll === null || elementToScroll === void 0 ? void 0 : (_elementToScroll$scro = elementToScroll.scrollIntoView) === null || _elementToScroll$scro === void 0 ? void 0 : _elementToScroll$scro.call(elementToScroll, {
351
- behavior: "smooth"
352
- });
353
- };
354
-
355
- var useDropzoneWithValidation = function useDropzoneWithValidation(_ref) {
356
- var maxSize = _ref.maxSize,
357
- acceptedTypes = _ref.acceptedTypes,
358
- handleAcceptedFile = _ref.handleAcceptedFile,
359
- _ref$isDominantColorE = _ref.isDominantColorEnabled,
360
- isDominantColorEnabled = _ref$isDominantColorE === void 0 ? false : _ref$isDominantColorE;
361
- var _useState = useState([]),
362
- _useState2 = _slicedToArray(_useState, 2),
363
- files = _useState2[0],
364
- setFiles = _useState2[1];
365
- var _useState3 = useState(false),
366
- _useState4 = _slicedToArray(_useState3, 2),
367
- error = _useState4[0],
368
- setError = _useState4[1];
369
- var _useState5 = useState(0),
370
- _useState6 = _slicedToArray(_useState5, 2),
371
- uploadProgress = _useState6[0],
372
- setUploadProgress = _useState6[1];
373
- var maxSizeInReadableUnits = bytesToSize(maxSize);
374
- var _useTranslation = useTranslation(),
375
- t = _useTranslation.t;
376
- var fileErrors = {
377
- "file-invalid-type": t("neetoMolecules.themeSidebar.error.fileTypeError", {
378
- acceptedTypes: acceptedTypes
379
- }),
380
- "file-too-large": t("neetoMolecules.themeSidebar.error.fileSizeLimitExceeded", {
381
- maxSizeInReadableUnits: maxSizeInReadableUnits
382
- })
383
- };
384
- var _useDropzone = useDropzone({
385
- accept: acceptedTypes,
386
- onDrop: function () {
387
- var _onDrop = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee2(acceptedFiles) {
388
- var newFiles;
389
- return _regeneratorRuntime.wrap(function _callee2$(_context2) {
390
- while (1) switch (_context2.prev = _context2.next) {
391
- case 0:
392
- _context2.next = 2;
393
- return new Promise(function (resolve) {
394
- var files = [];
395
- acceptedFiles.forEach(function (file) {
396
- var upload = new DirectUpload(file, DIRECT_UPLOAD_URL, {
397
- directUploadWillStoreFileWithXHR: function directUploadWillStoreFileWithXHR(xhr) {
398
- xhr.upload.addEventListener("progress", function (event) {
399
- var percentComplete = Math.round(event.loaded / event.total * 100);
400
- setUploadProgress(percentComplete);
401
- });
402
- }
403
- });
404
- upload.create( /*#__PURE__*/function () {
405
- var _ref2 = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee(error, blob) {
406
- var resolvedFile, dominantColor;
407
- return _regeneratorRuntime.wrap(function _callee$(_context) {
408
- while (1) switch (_context.prev = _context.next) {
409
- case 0:
410
- if (!error) {
411
- _context.next = 2;
412
- break;
413
- }
414
- return _context.abrupt("return", Toastr.error(error));
415
- case 2:
416
- resolvedFile = {
417
- url: blob.blob_url,
418
- name: blob.filename,
419
- signed_id: blob.signed_id,
420
- type: blob.content_type,
421
- size: blob.byte_size
422
- };
423
- if (!isDominantColorEnabled) {
424
- _context.next = 8;
425
- break;
426
- }
427
- _context.next = 6;
428
- return getDominantColor(file);
429
- case 6:
430
- dominantColor = _context.sent;
431
- resolvedFile.dominantColor = dominantColor;
432
- case 8:
433
- files.push(resolvedFile);
434
- return _context.abrupt("return", resolve(files));
435
- case 10:
436
- case "end":
437
- return _context.stop();
438
- }
439
- }, _callee);
440
- }));
441
- return function (_x2, _x3) {
442
- return _ref2.apply(this, arguments);
443
- };
444
- }());
445
- });
446
- return files;
447
- });
448
- case 2:
449
- newFiles = _context2.sent;
450
- setFiles(newFiles.map(function (file) {
451
- return handleAcceptedFile(file);
452
- }));
453
- case 4:
454
- case "end":
455
- return _context2.stop();
456
- }
457
- }, _callee2);
458
- }));
459
- function onDrop(_x) {
460
- return _onDrop.apply(this, arguments);
461
- }
462
- return onDrop;
463
- }(),
464
- maxSize: maxSize,
465
- onDropRejected: function onDropRejected(fileRejections) {
466
- fileRejections.map(function (_ref3) {
467
- var errors = _ref3.errors;
468
- return errors.map(function (_ref4) {
469
- var code = _ref4.code;
470
- return Toastr.error(fileErrors[code] || t("neetoMolecules.common.somethingWentWrong"));
471
- });
472
- });
473
- }
474
- }),
475
- getRootProps = _useDropzone.getRootProps,
476
- getInputProps = _useDropzone.getInputProps,
477
- isDragActive = _useDropzone.isDragActive,
478
- fileRejections = _useDropzone.fileRejections;
479
- useEffect(function () {
480
- setError(isNotEmpty(fileRejections));
481
- }, [fileRejections]);
482
- return {
483
- files: files,
484
- getRootProps: getRootProps,
485
- getInputProps: getInputProps,
486
- isDragActive: isDragActive,
487
- fileRejections: fileRejections,
488
- error: error,
489
- uploadProgress: uploadProgress
490
- };
491
- };
492
-
493
- var ImageUploader = function ImageUploader(_ref) {
494
- var onChange = _ref.onChange,
495
- name = _ref.name,
496
- _ref$isDominantColorE = _ref.isDominantColorEnabled,
497
- isDominantColorEnabled = _ref$isDominantColorE === void 0 ? false : _ref$isDominantColorE;
498
- var _useTranslation = useTranslation(),
499
- t = _useTranslation.t;
500
- var _useDropzoneWithValid = useDropzoneWithValidation({
501
- maxSize: FIVE_MEGABYTES,
502
- acceptedTypes: "image/*",
503
- handleAcceptedFile: onChange,
504
- isDominantColorEnabled: isDominantColorEnabled
505
- }),
506
- getInputProps = _useDropzoneWithValid.getInputProps,
507
- getRootProps = _useDropzoneWithValid.getRootProps,
508
- isDragActive = _useDropzoneWithValid.isDragActive,
509
- uploadProgress = _useDropzoneWithValid.uploadProgress;
510
- var shouldShowProgress = !!(uploadProgress && uploadProgress !== 1);
511
- return /*#__PURE__*/React__default.createElement("div", {
512
- className: "space-y-2"
513
- }, /*#__PURE__*/React__default.createElement("div", _extends({}, getRootProps(), {
514
- "data-cy": "image-browse-button",
515
- className: classnames("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", {
516
- "neeto-ui-border-gray-300": !isDragActive,
517
- "neeto-ui-border-gray-700": isDragActive
518
- })
519
- }), shouldShowProgress ? /*#__PURE__*/React__default.createElement("div", {
520
- className: "flex h-24 w-full items-center"
521
- }, /*#__PURE__*/React__default.createElement(ProgressBar, {
522
- progressPercentage: uploadProgress * 100,
523
- progressValue: "".concat(uploadProgress, "%")
524
- })) : /*#__PURE__*/React__default.createElement(React__default.Fragment, null, /*#__PURE__*/React__default.createElement(ImageUpload, {
525
- className: "neeto-ui-text-primary-500",
526
- size: 24
527
- }), /*#__PURE__*/React__default.createElement("div", {
528
- className: "flex flex-col space-y-1"
529
- }, /*#__PURE__*/React__default.createElement(Typography, {
530
- className: "neeto-ui-text-gray-800 text-center leading-4",
531
- style: "body2"
532
- }, /*#__PURE__*/React__default.createElement(Trans, {
533
- i18nKey: "neetoMolecules.themeSidebar.editTheme.imageUpload",
534
- components: {
535
- span: /*#__PURE__*/React__default.createElement("span", {
536
- className: "neeto-ui-text-primary-500"
537
- })
538
- }
539
- })), /*#__PURE__*/React__default.createElement("input", _extends({}, getInputProps(), {
540
- name: name
541
- })), /*#__PURE__*/React__default.createElement(Typography, {
542
- className: "neeto-ui-text-gray-700 text-center",
543
- "data-cy": "supported-files-text",
544
- lineHeight: "snug",
545
- style: "nano"
546
- }, t("neetoMolecules.themeSidebar.fileRequirements", {
547
- maxSize: FIVE_MEGABYTES
548
- }))))));
549
- };
550
-
551
- var ImageBlock = function ImageBlock(_ref) {
552
- var label = _ref.label,
553
- name = _ref.name,
554
- _ref$imageData = _ref.imageData,
555
- imageData = _ref$imageData === void 0 ? {} : _ref$imageData,
556
- _onChange = _ref.onChange;
557
- var url = imageData.url,
558
- size = imageData.size;
559
- var fileName = imageData.name;
560
- if (url && !fileName) {
561
- var urlParts = url.split("/");
562
- fileName = urlParts[urlParts.length - 1];
563
- }
564
- return /*#__PURE__*/React__default.createElement("div", {
565
- className: "space-y-3 py-3 first:pt-0 last:pb-0"
566
- }, label && /*#__PURE__*/React__default.createElement("div", {
567
- className: "flex items-center justify-between"
568
- }, /*#__PURE__*/React__default.createElement(Typography, {
569
- "data-cy": "style-fields-labels",
570
- style: "body2"
571
- }, label)), url ? /*#__PURE__*/React__default.createElement("div", {
572
- className: "flex items-center justify-between gap-2"
573
- }, /*#__PURE__*/React__default.createElement("div", {
574
- className: "flex min-w-0 flex-grow items-center gap-2"
575
- }, /*#__PURE__*/React__default.createElement("img", {
576
- className: "h-10 w-10 object-cover",
577
- src: url
578
- }), /*#__PURE__*/React__default.createElement("div", {
579
- className: "flex min-w-0 flex-grow flex-col gap-1"
580
- }, /*#__PURE__*/React__default.createElement(Typography, {
581
- className: "neeto-ui-text-gray-700 break-words",
582
- style: "nano"
583
- }, fileName), size ? /*#__PURE__*/React__default.createElement(Typography, {
584
- className: "neeto-ui-text-gray-500",
585
- style: "nano"
586
- }, size / 1000, "KB") : null)), /*#__PURE__*/React__default.createElement("div", {
587
- className: "flex items-center gap-1"
588
- }, /*#__PURE__*/React__default.createElement(Button, {
589
- label: "Remove",
590
- size: "small",
591
- style: "danger-text",
592
- onClick: function onClick() {
593
- return _onChange(name, {}, "");
594
- }
595
- }))) : /*#__PURE__*/React__default.createElement(ImageUploader, {
596
- isDominantColorEnabled: true,
597
- onChange: function onChange(value) {
598
- return _onChange(name, value, "url(".concat(value.url, ")"));
599
- }
600
- }));
601
- };
602
-
603
- var SelectBlock = function SelectBlock(_ref) {
604
- var label = _ref.label,
605
- _ref$placeholder = _ref.placeholder,
606
- placeholder = _ref$placeholder === void 0 ? "" : _ref$placeholder,
607
- value = _ref.value,
608
- options = _ref.options,
609
- onChange = _ref.onChange;
610
- return /*#__PURE__*/React__default.createElement("div", {
611
- className: "flex items-center justify-between py-3 first:pt-0 last:pb-0"
612
- }, /*#__PURE__*/React__default.createElement(Typography, {
613
- "data-cy": "logo-field-labels",
614
- style: "body2"
615
- }, label), /*#__PURE__*/React__default.createElement("div", {
616
- className: "w-40"
617
- }, /*#__PURE__*/React__default.createElement(Select, {
618
- options: options,
619
- placeholder: placeholder,
620
- value: value,
621
- onChange: onChange
622
- })));
623
- };
624
-
625
- var Logo = withT(function (_ref) {
626
- var t = _ref.t,
627
- logo = _ref.logo,
628
- _onChange = _ref.onChange;
629
- return /*#__PURE__*/React__default.createElement(Card, {
630
- title: t("neetoMolecules.themeSidebar.logo")
631
- }, /*#__PURE__*/React__default.createElement("div", {
632
- className: "divide-y divide-gray-200"
633
- }, /*#__PURE__*/React__default.createElement(ImageBlock, {
634
- imageData: logo,
635
- name: "logo",
636
- onChange: function onChange(name, value) {
637
- return _onChange(name, isEmpty(value) ? {
638
- position: logo.position
639
- } : mergeLeft(value, logo));
640
- }
641
- }), logo.url && /*#__PURE__*/React__default.createElement(SelectBlock, {
642
- label: t("neetoMolecules.themeSidebar.logoPosition"),
643
- options: POSITION_OPTIONS,
644
- placeholder: t("neetoMolecules.themeSidebar.left"),
645
- value: findBy({
646
- value: logo.position || "left"
647
- }, POSITION_OPTIONS),
648
- onChange: function onChange(_ref2) {
649
- var value = _ref2.value;
650
- return _onChange("logo.position", value);
651
- }
652
- })));
653
- });
654
- var Logo$1 = /*#__PURE__*/React__default.memo(Logo);
655
-
656
- var AlignmentBlock = function AlignmentBlock(_ref) {
657
- var label = _ref.label,
658
- name = _ref.name;
659
- var _useTranslation = useTranslation(),
660
- t = _useTranslation.t;
661
- return /*#__PURE__*/React__default.createElement("div", {
662
- className: "flex items-center justify-between gap-2 py-3 first:pt-0 last:pb-0"
663
- }, /*#__PURE__*/React__default.createElement(Typography, {
664
- "data-cy": "style-fields-labels",
665
- style: "body2"
666
- }, label), /*#__PURE__*/React__default.createElement(Field, {
667
- name: name
668
- }, function (_ref2) {
669
- var value = _ref2.field.value,
670
- setFieldValue = _ref2.form.setFieldValue;
671
- return /*#__PURE__*/React__default.createElement("div", {
672
- className: "flex items-center gap-3"
673
- }, /*#__PURE__*/React__default.createElement(Button, {
674
- "data-cy": "alignment-left",
675
- icon: LeftAlign,
676
- size: "large",
677
- style: value === "left" ? "primary" : "text",
678
- tooltipProps: {
679
- content: t("neetoMolecules.themeSidebar.alignmentOptions.left"),
680
- position: "bottom"
681
- },
682
- onClick: function onClick() {
683
- return setFieldValue(name, "left");
684
- }
685
- }), /*#__PURE__*/React__default.createElement(Button, {
686
- "data-cy": "alignment-center",
687
- icon: CenterAlign,
688
- size: "large",
689
- style: value === "center" ? "primary" : "text",
690
- tooltipProps: {
691
- content: t("neetoMolecules.themeSidebar.alignmentOptions.center"),
692
- position: "bottom"
693
- },
694
- onClick: function onClick() {
695
- return setFieldValue(name, "center");
696
- }
697
- }));
698
- }));
699
- };
700
-
701
- var ColorBlock = function ColorBlock(_ref) {
702
- var label = _ref.label,
703
- _ref$color = _ref.color,
704
- color = _ref$color === void 0 ? "#FFFFFF" : _ref$color,
705
- onChange = _ref.onChange;
706
- return /*#__PURE__*/React__default.createElement("div", {
707
- className: "flex items-center justify-between py-3 first:pt-0 last:pb-0"
708
- }, /*#__PURE__*/React__default.createElement(Typography, {
709
- "data-cy": "style-fields-labels",
710
- style: "body2"
711
- }, label), /*#__PURE__*/React__default.createElement(ColorPicker, {
712
- showEyeDropper: true,
713
- color: color,
714
- onChange: onChange
715
- }));
716
- };
717
-
718
- 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; }
719
- 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; }
720
- var FontPickerBlock = function FontPickerBlock(_ref) {
721
- var label = _ref.label,
722
- _ref$placeholder = _ref.placeholder,
723
- placeholder = _ref$placeholder === void 0 ? "" : _ref$placeholder,
724
- value = _ref.value,
725
- options = _ref.options,
726
- onChange = _ref.onChange;
727
- return /*#__PURE__*/React__default.createElement("div", {
728
- className: "flex items-center justify-between py-3 first:pt-0 last:pb-0"
729
- }, /*#__PURE__*/React__default.createElement(Typography, {
730
- "data-cy": "style-fields-labels",
731
- style: "body2"
732
- }, label), /*#__PURE__*/React__default.createElement("div", {
733
- className: "w-40"
734
- }, /*#__PURE__*/React__default.createElement(Select, {
735
- options: options,
736
- placeholder: placeholder,
737
- value: value,
738
- styles: {
739
- option: function option(styles, _ref2) {
740
- var data = _ref2.data;
741
- return _objectSpread$1(_objectSpread$1({}, styles), {}, {
742
- fontFamily: data.value
743
- });
744
- }
745
- },
746
- onChange: onChange
747
- })));
748
- };
749
-
750
- 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}";
751
- n(css$1,{});
752
-
753
- var SliderBlock = function SliderBlock(_ref) {
754
- var label = _ref.label,
755
- onChange = _ref.onChange,
756
- defaultValue = _ref.defaultValue,
757
- min = _ref.min,
758
- max = _ref.max,
759
- marks = _ref.marks;
760
- return /*#__PURE__*/React__default.createElement("div", {
761
- className: "flex items-center justify-between gap-3 py-3 first:pt-0 last:pb-0"
762
- }, /*#__PURE__*/React__default.createElement(Typography, {
763
- "data-cy": "style-fields-labels",
764
- style: "body2"
765
- }, label), /*#__PURE__*/React__default.createElement(Slider, {
766
- className: "my-2 w-20",
767
- defaultValue: defaultValue,
768
- marks: marks,
769
- max: max,
770
- min: min,
771
- onChange: onChange,
772
- tooltip: {
773
- formatter: noop
774
- }
775
- }));
776
- };
777
-
778
- var SwitchBlock = function SwitchBlock(_ref) {
779
- var label = _ref.label,
780
- name = _ref.name;
781
- return /*#__PURE__*/React__default.createElement("div", {
782
- className: "flex items-center justify-between py-3 first:pt-0 last:pb-0"
783
- }, /*#__PURE__*/React__default.createElement(Typography, {
784
- "data-cy": "style-fields-labels",
785
- style: "body2"
786
- }, label), /*#__PURE__*/React__default.createElement(Switch, {
787
- "data-cy": "enable-background-color-toggle",
788
- name: name
789
- }));
790
- };
791
-
792
- var Properties = function Properties(_ref) {
793
- var handleChange = _ref.handleChange,
794
- values = _ref.values;
795
- var _useTranslation = useTranslation(),
796
- t = _useTranslation.t;
797
- var backgroundColor = values.backgroundColor,
798
- questionColor = values.questionColor,
799
- buttonBackgroundColor = values.buttonBackgroundColor,
800
- buttonTextColor = values.buttonTextColor,
801
- answerColor = values.answerColor,
802
- backgroundImage = values.backgroundImage,
803
- isContentBackgroundEnabled = values.isContentBackgroundEnabled,
804
- contentBackgroundColor = values.contentBackgroundColor,
805
- isDominantBackgroundColorEnabled = values.isDominantBackgroundColorEnabled,
806
- backgroundOverlayOpacity = values.backgroundOverlayOpacity,
807
- buttonBorderRadius = values.buttonBorderRadius;
808
- var handleOverlayChange = function handleOverlayChange(value) {
809
- handleChange("backgroundOverlayOpacity", value, Math.abs(value / 100));
810
- if (value < 0) {
811
- handleChange("backgroundOverlayColor", "#000000");
812
- } else if (value > 0) {
813
- handleChange("backgroundOverlayColor", "#ffffff");
814
- }
815
- };
816
- useEffect(function () {
817
- if (isContentBackgroundEnabled) {
818
- var color = contentBackgroundColor || backgroundColor;
819
- handleChange("contentBackgroundColor", color);
820
- } else {
821
- handleChange("contentBackgroundColor", contentBackgroundColor);
822
- }
823
- }, [isContentBackgroundEnabled]);
824
- useEffect(function () {
825
- if (isDominantBackgroundColorEnabled && backgroundImage !== null && backgroundImage !== void 0 && backgroundImage.dominantColor) {
826
- handleChange("backgroundColor", backgroundImage.dominantColor, backgroundImage.dominantColor ? hexToRgb(backgroundImage.dominantColor) : "initial");
827
- }
828
- }, [isDominantBackgroundColorEnabled, backgroundImage === null || backgroundImage === void 0 ? void 0 : backgroundImage.dominantColor]);
829
- var handleColorChange = function handleColorChange(name) {
830
- return function (_ref2) {
831
- var hex = _ref2.hex,
832
- rgb = _ref2.rgb;
833
- handleChange(name, hex, "".concat(rgb.r, ", ").concat(rgb.g, ", ").concat(rgb.b));
834
- };
835
- };
836
- var handleAnswerColorChange = function handleAnswerColorChange(_ref3) {
837
- var hex = _ref3.hex,
838
- rgb = _ref3.rgb;
839
- handleColorChange("answerColor")({
840
- hex: hex,
841
- rgb: rgb
842
- });
843
- var contrastColor = getContrast(hex);
844
- handleColorChange("answerTextColor")({
845
- hex: contrastColor,
846
- rgb: hexToRgb(contrastColor)
847
- });
848
- };
849
- return /*#__PURE__*/React__default.createElement(Card, {
850
- title: t("neetoMolecules.themeSidebar.style")
851
- }, /*#__PURE__*/React__default.createElement("div", {
852
- className: "divide-y divide-gray-200"
853
- }, /*#__PURE__*/React__default.createElement(FontPickerBlock, {
854
- label: t("neetoMolecules.themeSidebar.font"),
855
- options: FONT_OPTIONS,
856
- value: findBy({
857
- value: values.fontFamily
858
- }, FONT_OPTIONS) || null,
859
- onChange: function onChange(_ref4) {
860
- var value = _ref4.value;
861
- return handleChange("fontFamily", value);
862
- }
863
- }), /*#__PURE__*/React__default.createElement(ColorBlock, {
864
- color: questionColor,
865
- label: t("neetoMolecules.themeSidebar.questions"),
866
- onChange: handleColorChange("questionColor")
867
- }), /*#__PURE__*/React__default.createElement(ColorBlock, {
868
- color: answerColor,
869
- label: t("neetoMolecules.themeSidebar.answerColor"),
870
- onChange: handleAnswerColorChange
871
- }), /*#__PURE__*/React__default.createElement(ColorBlock, {
872
- color: buttonBackgroundColor,
873
- label: t("neetoMolecules.themeSidebar.buttons"),
874
- onChange: handleColorChange("buttonBackgroundColor")
875
- }), /*#__PURE__*/React__default.createElement(ColorBlock, {
876
- color: buttonTextColor,
877
- label: t("neetoMolecules.themeSidebar.buttonText"),
878
- onChange: handleColorChange("buttonTextColor")
879
- }), /*#__PURE__*/React__default.createElement(SliderBlock, {
880
- defaultValue: buttonBorderRadius,
881
- label: t("neetoMolecules.themeSidebar.buttonBorderRadius"),
882
- max: 50,
883
- min: 0,
884
- onChange: function onChange(borderRadius) {
885
- return handleChange("buttonBorderRadius", borderRadius, "".concat(borderRadius, "px"));
886
- }
887
- }), /*#__PURE__*/React__default.createElement(ColorBlock, {
888
- color: backgroundColor,
889
- label: t("neetoMolecules.themeSidebar.backgroundColor"),
890
- onChange: function onChange(_ref5) {
891
- var hex = _ref5.hex,
892
- rgb = _ref5.rgb;
893
- handleColorChange("backgroundColor")({
894
- hex: hex,
895
- rgb: rgb
896
- });
897
- handleChange("isDominantBackgroundColorEnabled", false);
898
- }
899
- }), /*#__PURE__*/React__default.createElement(SwitchBlock, {
900
- label: t("neetoMolecules.themeSidebar.enableContentBackground"),
901
- name: "isContentBackgroundEnabled"
902
- }), isContentBackgroundEnabled && /*#__PURE__*/React__default.createElement(ColorBlock, {
903
- color: contentBackgroundColor,
904
- label: t("neetoMolecules.themeSidebar.formBackgroundColor"),
905
- onChange: handleColorChange("contentBackgroundColor")
906
- }), /*#__PURE__*/React__default.createElement(ImageBlock, {
907
- imageData: backgroundImage,
908
- label: t("neetoMolecules.themeSidebar.backgroundImage"),
909
- name: "backgroundImage",
910
- onChange: function onChange(name, value, variableValue) {
911
- handleChange(name, value, variableValue);
912
- handleChange("backgroundOverlayOpacity", 0);
913
- }
914
- }), (backgroundImage === null || backgroundImage === void 0 ? void 0 : backgroundImage.url) && /*#__PURE__*/React__default.createElement(React__default.Fragment, null, /*#__PURE__*/React__default.createElement(SliderBlock, {
915
- defaultValue: backgroundOverlayOpacity,
916
- label: t("neetoMolecules.themeSidebar.backgroundOverlay"),
917
- marks: {
918
- 0: " "
919
- },
920
- max: 100,
921
- min: -100,
922
- onChange: handleOverlayChange
923
- }), /*#__PURE__*/React__default.createElement(SwitchBlock, {
924
- name: "isDominantBackgroundColorEnabled",
925
- label: t("neetoMolecules.themeSidebar.enableDominantBackgroundColor")
926
- }), /*#__PURE__*/React__default.createElement(SelectBlock, {
927
- label: t("neetoMolecules.themeSidebar.backgroundPosition"),
928
- options: BACKGROUND_POSITION_OPTIONS,
929
- placeholder: t("neetoMolecules.themeSidebar.left"),
930
- value: findBy({
931
- value: backgroundImage.backgroundPosition || "center"
932
- }, BACKGROUND_POSITION_OPTIONS),
933
- onChange: function onChange(_ref6) {
934
- var value = _ref6.value;
935
- return handleChange("backgroundImage.backgroundPosition", value);
936
- }
937
- })), /*#__PURE__*/React__default.createElement(AlignmentBlock, {
938
- label: t("neetoMolecules.themeSidebar.thankYouTextAlignment"),
939
- name: "thankYouTextAlignment"
940
- }), /*#__PURE__*/React__default.createElement(AlignmentBlock, {
941
- label: t("neetoMolecules.themeSidebar.welcomeTextAlignment"),
942
- name: "welcomeTextAlignment"
943
- }), /*#__PURE__*/React__default.createElement(AlignmentBlock, {
944
- label: t("neetoMolecules.themeSidebar.questionsTextAlignment"),
945
- name: "questionsTextAlignment"
946
- })));
947
- };
948
-
949
- var TextBlock = function TextBlock(_ref) {
950
- var name = _ref.name,
951
- _ref$autoFocus = _ref.autoFocus,
952
- autoFocus = _ref$autoFocus === void 0 ? false : _ref$autoFocus;
953
- return /*#__PURE__*/React__default.createElement(Input, {
954
- autoFocus: autoFocus,
955
- "data-cy": "text-block-input",
956
- name: name
957
- });
958
- };
959
-
960
- var Customize = function Customize(_ref) {
961
- var theme = _ref.theme,
962
- handleFormSubmit = _ref.handleFormSubmit;
963
- var _useTranslation = useTranslation(),
964
- t = _useTranslation.t;
965
- var getInitialValues = function getInitialValues() {
966
- return theme ? parseTheme(theme) : INITIAL_STATE;
967
- };
968
- return /*#__PURE__*/React__default.createElement(Form, {
969
- formikProps: {
970
- enableReinitialize: true,
971
- initialValues: getInitialValues(),
972
- onSubmit: handleFormSubmit,
973
- validationSchema: THEME_VALIDATION_SCHEMA,
974
- validateOnBlur: true,
975
- validateOnChange: true
976
- }
977
- }, function (_ref2) {
978
- var values = _ref2.values,
979
- dirty = _ref2.dirty,
980
- isSubmitting = _ref2.isSubmitting,
981
- setFieldValue = _ref2.setFieldValue;
982
- return /*#__PURE__*/React__default.createElement("div", {
983
- className: "neeto-molecules-theme-design-sidebar__scroll"
984
- }, /*#__PURE__*/React__default.createElement("div", {
985
- className: "flex flex-col gap-6 p-4"
986
- }, /*#__PURE__*/React__default.createElement(Card, {
987
- title: t("neetoMolecules.themeSidebar.name")
988
- }, /*#__PURE__*/React__default.createElement(TextBlock, {
989
- autoFocus: true,
990
- name: "name"
991
- })), /*#__PURE__*/React__default.createElement(Properties, {
992
- handleChange: setFieldValue,
993
- values: values
994
- }), /*#__PURE__*/React__default.createElement(Logo$1, {
995
- logo: values.logo,
996
- onChange: setFieldValue
997
- })), /*#__PURE__*/React__default.createElement("div", {
998
- className: "neeto-ui-bg-white neeto-ui-shadow-s sticky bottom-0 left-0 right-0 py-6 px-4"
999
- }, /*#__PURE__*/React__default.createElement(Button, {
1000
- "data-cy": "save-changes-button",
1001
- disabled: !dirty && theme.id,
1002
- label: t("neetoMolecules.common.actions.save"),
1003
- loading: isSubmitting,
1004
- type: "submit"
1005
- }), /*#__PURE__*/React__default.createElement(Button, {
1006
- className: "ml-2",
1007
- "data-cy": "reset-button",
1008
- disabled: !dirty,
1009
- label: t("neetoMolecules.common.actions.reset"),
1010
- style: "text",
1011
- type: "reset"
1012
- })));
1013
- });
1014
- };
1015
-
1016
- var _excluded = ["name"];
1017
- var ThemeCard = function ThemeCard(_ref) {
1018
- var _ref$active = _ref.active,
1019
- active = _ref$active === void 0 ? false : _ref$active,
1020
- isPreviewing = _ref.isPreviewing,
1021
- onSetPreviewTheme = _ref.onSetPreviewTheme,
1022
- onDeleteTheme = _ref.onDeleteTheme,
1023
- onEditTheme = _ref.onEditTheme,
1024
- onApplyTheme = _ref.onApplyTheme,
1025
- onCloneTheme = _ref.onCloneTheme,
1026
- theme = _ref.theme,
1027
- isHighLightedTheme = _ref.isHighLightedTheme,
1028
- isApplyingTheme = _ref.isApplyingTheme;
1029
- var _useTranslation = useTranslation(),
1030
- t = _useTranslation.t;
1031
- var name = theme.name,
1032
- styles = _objectWithoutProperties(theme, _excluded);
1033
- var handleApplyTheme = function handleApplyTheme() {
1034
- if (isApplyingTheme) return;
1035
- onApplyTheme(theme);
1036
- };
1037
- var moreMenuItems = [{
1038
- "data-cy": "theme-edit-button",
1039
- key: "theme-edit-button",
1040
- onClick: function onClick() {
1041
- return onEditTheme(theme);
1042
- },
1043
- label: t("neetoMolecules.common.actions.edit"),
1044
- isVisible: isPresent(onEditTheme)
1045
- }, {
1046
- isVisible: isPresent(onCloneTheme),
1047
- "data-cy": "theme-clone-button",
1048
- key: "theme-clone-button",
1049
- onClick: function onClick() {
1050
- return onCloneTheme(theme);
1051
- },
1052
- label: t("neetoMolecules.themeSidebar.themeOptions.clone")
1053
- }, {
1054
- isVisible: isPresent(onDeleteTheme),
1055
- type: "divider",
1056
- key: "divider"
1057
- }, {
1058
- isVisible: isPresent(onDeleteTheme),
1059
- "data-cy": "theme-delete-button",
1060
- key: "theme-delete-button",
1061
- onClick: function onClick() {
1062
- return onDeleteTheme(theme);
1063
- },
1064
- label: t("neetoMolecules.themeSidebar.themeOptions.delete")
1065
- }];
1066
- return /*#__PURE__*/React__default.createElement("div", {
1067
- className: "group space-y-2",
1068
- "data-cy": active ? "active-theme-card" : "theme-card",
1069
- id: theme.id
1070
- }, /*#__PURE__*/React__default.createElement("div", {
1071
- className: classnames("neeto-molecules-theme-thumbnail neeto-ui-rounded-lg border transition-all duration-300 ease-in-out", {
1072
- "neeto-ui-border-gray-400": !active,
1073
- "neeto-ui-border-gray-800 neeto-molecules-theme-thumbnail--active": active,
1074
- "neeto-molecules-theme-thumbnail--preview-active": isPreviewing,
1075
- "neeto-molecules-theme-thumbnail--highlight-active": isHighLightedTheme
1076
- }),
1077
- style: {
1078
- backgroundColor: path(["colorScheme", "backgroundColor"], styles),
1079
- backgroundImage: path(["backgroundImage", "url"], styles) ? "url(".concat(path(["backgroundImage", "url"], styles), ")") : "initial",
1080
- backgroundSize: "cover"
1081
- },
1082
- onClick: function onClick() {
1083
- return onSetPreviewTheme(theme);
1084
- }
1085
- }, /*#__PURE__*/React__default.createElement("div", {
1086
- className: "group-hover:opacity-85 neeto-ui-rounded-lg cursor-pointer p-6 transition-all duration-300 ease-in-out"
1087
- }, /*#__PURE__*/React__default.createElement("div", {
1088
- className: "mb-3"
1089
- }, /*#__PURE__*/React__default.createElement(Typography, {
1090
- style: "h3",
1091
- weight: "semibold"
1092
- }, /*#__PURE__*/React__default.createElement("span", {
1093
- style: {
1094
- color: path(["colorScheme", "questionColor"], styles)
1095
- }
1096
- }, t("neetoMolecules.themeSidebar.themeCard.question"))), /*#__PURE__*/React__default.createElement(Typography, {
1097
- className: "neeto-ui-text-gray-600",
1098
- style: "body2"
1099
- }, /*#__PURE__*/React__default.createElement("span", {
1100
- style: {
1101
- color: path(["colorScheme", "answerColor"], styles)
1102
- }
1103
- }, t("neetoMolecules.themeSidebar.themeCard.answer")))), /*#__PURE__*/React__default.createElement("div", {
1104
- className: "neeto-ui-rounded-lg h-5 w-12",
1105
- style: {
1106
- backgroundColor: path(["colorScheme", "buttonBackgroundColor"], styles)
1107
- }
1108
- }))), /*#__PURE__*/React__default.createElement("div", {
1109
- className: "flex items-start justify-between gap-1"
1110
- }, /*#__PURE__*/React__default.createElement(Typography, {
1111
- className: "min-w-0 flex-grow break-words pt-1 line-clamp-2",
1112
- "data-cy": "theme-name",
1113
- lineHeight: "snug",
1114
- style: "body2"
1115
- }, name), /*#__PURE__*/React__default.createElement("div", {
1116
- className: "flex items-center gap-2"
1117
- }, active ? /*#__PURE__*/React__default.createElement(Tag, {
1118
- className: "flex-shrink-0",
1119
- "data-cy": "active-theme-label",
1120
- label: t("neetoMolecules.themeSidebar.active"),
1121
- style: "success"
1122
- }) : /*#__PURE__*/React__default.createElement(Button, {
1123
- className: "flex-shrink-0",
1124
- "data-cy": "apply-theme-button",
1125
- disabled: isApplyingTheme,
1126
- label: t("neetoMolecules.common.actions.apply"),
1127
- loading: isApplyingTheme,
1128
- size: "small",
1129
- style: "link",
1130
- onClick: handleApplyTheme
1131
- }), /*#__PURE__*/React__default.createElement(MoreDropdown, {
1132
- buttonProps: {
1133
- buttonSize: "small"
1134
- },
1135
- menuItems: moreMenuItems,
1136
- dropdownButtonProps: {
1137
- "data-cy": "theme-card-options",
1138
- strategy: "fixed"
1139
- }
1140
- }))));
1141
- };
1142
-
1143
- var Themes = function Themes(_ref) {
1144
- var currentTheme = _ref.currentTheme,
1145
- onCloneTheme = _ref.onCloneTheme,
1146
- _ref$customThemes = _ref.customThemes,
1147
- customThemes = _ref$customThemes === void 0 ? [] : _ref$customThemes,
1148
- _ref$defaultThemes = _ref.defaultThemes,
1149
- defaultThemes = _ref$defaultThemes === void 0 ? [] : _ref$defaultThemes,
1150
- onDeleteTheme = _ref.onDeleteTheme,
1151
- onEditTheme = _ref.onEditTheme,
1152
- onApplyTheme = _ref.onApplyTheme,
1153
- previewingTheme = _ref.previewingTheme,
1154
- setPreviewingTheme = _ref.setPreviewingTheme,
1155
- themeToHighlight = _ref.themeToHighlight,
1156
- didScrollActiveThemeIntoView = _ref.didScrollActiveThemeIntoView,
1157
- applyingThemeId = _ref.applyingThemeId;
1158
- var _useTranslation = useTranslation(),
1159
- t = _useTranslation.t;
1160
- var _useState = useState(""),
1161
- _useState2 = _slicedToArray(_useState, 2),
1162
- searchQuery = _useState2[0],
1163
- setSearchQuery = _useState2[1];
1164
- var filteredDefaultThemes = defaultThemes.filter(function (theme) {
1165
- return theme.name.toLowerCase().includes(searchQuery.toLowerCase());
1166
- });
1167
- var filteredThemes = customThemes.filter(function (theme) {
1168
- return theme.name.toLowerCase().includes(searchQuery.toLowerCase());
1169
- });
1170
- var isSearchFieldVisible = (customThemes === null || customThemes === void 0 ? void 0 : customThemes.length) + (defaultThemes === null || defaultThemes === void 0 ? void 0 : defaultThemes.length) > 10;
1171
- useEffect(function () {
1172
- if (didScrollActiveThemeIntoView.current || !(currentTheme !== null && currentTheme !== void 0 && currentTheme.id)) return;
1173
- didScrollActiveThemeIntoView.current = true;
1174
- setTimeout(function () {
1175
- scrollElementIntoView(currentTheme.id);
1176
- }, 200);
1177
- }, [didScrollActiveThemeIntoView, currentTheme === null || currentTheme === void 0 ? void 0 : currentTheme.id]);
1178
- return /*#__PURE__*/React__default.createElement("div", {
1179
- className: "neeto-molecules-theme-design-sidebar__scroll"
1180
- }, /*#__PURE__*/React__default.createElement("div", {
1181
- className: "mb-6 space-y-3"
1182
- }, isSearchFieldVisible && /*#__PURE__*/React__default.createElement(Input$1, {
1183
- autoFocus: true,
1184
- autoComplete: "off",
1185
- className: "mt-1 mb-4 px-6",
1186
- placeholder: t("neetoMolecules.themeSidebar.searchThemes"),
1187
- prefix: /*#__PURE__*/React__default.createElement(Search, null),
1188
- type: "search",
1189
- value: searchQuery,
1190
- onChange: function onChange(e) {
1191
- return setSearchQuery(e.target.value);
1192
- }
1193
- }), isEmpty(filteredThemes) && isEmpty(filteredDefaultThemes) && /*#__PURE__*/React__default.createElement(Typography, {
1194
- className: "text-center",
1195
- style: "body2"
1196
- }, t("neetoMolecules.common.notFound.title", {
1197
- entity: t("neetoMolecules.themeSidebar.theme", {
1198
- count: 2
1199
- })
1200
- })), isNotEmpty(filteredDefaultThemes) && /*#__PURE__*/React__default.createElement(React__default.Fragment, null, /*#__PURE__*/React__default.createElement(Typography, {
1201
- className: "my-4 px-4 uppercase md:px-5 lg:px-6",
1202
- "data-cy": "system-themes-header",
1203
- style: "h6",
1204
- weight: "semibold"
1205
- }, t("neetoMolecules.themeSidebar.systemThemes")), /*#__PURE__*/React__default.createElement("div", {
1206
- className: "flex flex-col gap-4 px-4 md:px-5 lg:px-6"
1207
- }, filteredDefaultThemes.map(function (theme) {
1208
- return /*#__PURE__*/React__default.createElement(ThemeCard, {
1209
- onApplyTheme: onApplyTheme,
1210
- onCloneTheme: onCloneTheme,
1211
- theme: theme,
1212
- active: (currentTheme === null || currentTheme === void 0 ? void 0 : currentTheme.id) === theme.id,
1213
- isApplyingTheme: applyingThemeId === theme.id,
1214
- isPreviewing: (previewingTheme === null || previewingTheme === void 0 ? void 0 : previewingTheme.id) === theme.id,
1215
- key: theme.id,
1216
- onSetPreviewTheme: setPreviewingTheme
1217
- });
1218
- })))), isNotEmpty(filteredThemes) && /*#__PURE__*/React__default.createElement("div", {
1219
- className: "mb-6 space-y-3"
1220
- }, /*#__PURE__*/React__default.createElement(Typography, {
1221
- className: "my-4 px-4 uppercase md:px-5 lg:px-6",
1222
- "data-cy": "custom-themes-header",
1223
- style: "h6",
1224
- weight: "semibold"
1225
- }, t("neetoMolecules.themeSidebar.customThemes")), /*#__PURE__*/React__default.createElement("div", {
1226
- className: "flex flex-col gap-4 px-4 md:px-5 lg:px-6"
1227
- }, filteredThemes.map(function (theme) {
1228
- var isActive = (currentTheme === null || currentTheme === void 0 ? void 0 : currentTheme.id) === theme.id;
1229
- return /*#__PURE__*/React__default.createElement(ThemeCard, {
1230
- onApplyTheme: onApplyTheme,
1231
- onCloneTheme: onCloneTheme,
1232
- onEditTheme: onEditTheme,
1233
- theme: theme,
1234
- active: isActive,
1235
- isHighLightedTheme: theme.id === themeToHighlight,
1236
- isPreviewing: (previewingTheme === null || previewingTheme === void 0 ? void 0 : previewingTheme.id) === theme.id,
1237
- key: theme.id,
1238
- onDeleteTheme: !isActive ? onDeleteTheme : null,
1239
- onSetPreviewTheme: setPreviewingTheme
1240
- });
1241
- }))));
1242
- };
1243
-
1244
- 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}@media screen and (max-width:1024px){.neeto-molecules-theme-design-sidebar{width:280px}}@media screen and (max-width:768px){.neeto-molecules-theme-design-sidebar{width:240px}}.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}";
1245
- n(css,{});
1246
-
1247
- var TitleBar = function TitleBar(_ref) {
1248
- var currentScreen = _ref.currentScreen,
1249
- handleBackPress = _ref.handleBackPress,
1250
- handleCreateNewTheme = _ref.handleCreateNewTheme,
1251
- isNewTheme = _ref.isNewTheme;
1252
- var _useTranslation = useTranslation(),
1253
- t = _useTranslation.t;
1254
- if (currentScreen === DESIGN_SCREENS.CUSTOMIZE) {
1255
- return /*#__PURE__*/React__default.createElement("div", {
1256
- className: classnames("neeto-molecules-theme-design-sidebar__header px-4")
1257
- }, /*#__PURE__*/React__default.createElement("div", {
1258
- className: "flex items-center justify-start space-x-2"
1259
- }, /*#__PURE__*/React__default.createElement(Button, {
1260
- "data-cy": "customise-themes-back-button",
1261
- icon: LeftArrow,
1262
- iconPosition: "left",
1263
- style: "text",
1264
- tooltipProps: {
1265
- content: t("neetoMolecules.themeSidebar.backToThemes"),
1266
- position: "top"
1267
- },
1268
- onClick: handleBackPress
1269
- }), /*#__PURE__*/React__default.createElement(Typography, {
1270
- "data-cy": "themes-header",
1271
- lineHeight: "normal",
1272
- style: "h3",
1273
- weight: "semibold"
1274
- }, isNewTheme ? t("neetoMolecules.themeSidebar.createTheme.title") : t("neetoMolecules.themeSidebar.editTheme.title"))));
1275
- }
1276
- return /*#__PURE__*/React__default.createElement("div", {
1277
- className: classnames("neeto-molecules-theme-design-sidebar__header px-4 md:px-5 lg:px-6")
1278
- }, /*#__PURE__*/React__default.createElement("div", {
1279
- className: "flex items-center justify-between space-x-2"
1280
- }, /*#__PURE__*/React__default.createElement(Typography, {
1281
- "data-cy": "themes-header",
1282
- lineHeight: "normal",
1283
- style: "h3",
1284
- weight: "semibold"
1285
- }, capitalize(t("neetoMolecules.themeSidebar.theme", {
1286
- count: 2
1287
- }))), /*#__PURE__*/React__default.createElement("div", {
1288
- className: "self-end"
1289
- }, /*#__PURE__*/React__default.createElement(Button, {
1290
- "data-cy": "customise-themes-add-theme-button",
1291
- icon: Plus,
1292
- iconPosition: "left",
1293
- style: "text",
1294
- tooltipProps: {
1295
- content: t("neetoMolecules.themeSidebar.addNewTheme"),
1296
- position: "top"
1297
- },
1298
- onClick: handleCreateNewTheme
1299
- }))));
1300
- };
1301
-
1302
- 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; }
1303
- 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; }
1304
- var ThemeSidebar = function ThemeSidebar(_ref) {
1305
- var defaultThemes = _ref.defaultThemes,
1306
- customThemes = _ref.customThemes,
1307
- createTheme = _ref.createTheme,
1308
- deleteTheme = _ref.deleteTheme,
1309
- editTheme = _ref.editTheme,
1310
- applyTheme = _ref.applyTheme,
1311
- currentTheme = _ref.currentTheme,
1312
- isLoadingThemes = _ref.isLoadingThemes,
1313
- applyingThemeId = _ref.applyingThemeId;
1314
- var _useTranslation = useTranslation(),
1315
- t = _useTranslation.t;
1316
- var _useState = useState(DESIGN_SCREENS.THEMES),
1317
- _useState2 = _slicedToArray(_useState, 2),
1318
- currentScreen = _useState2[0],
1319
- setCurrentScreen = _useState2[1];
1320
- var _useState3 = useState(null),
1321
- _useState4 = _slicedToArray(_useState3, 2),
1322
- previewingTheme = _useState4[0],
1323
- setPreviewingTheme = _useState4[1];
1324
- var _useState5 = useState(null),
1325
- _useState6 = _slicedToArray(_useState5, 2),
1326
- themeToHighlight = _useState6[0],
1327
- setThemeToHighlight = _useState6[1];
1328
- var didScrollActiveThemeIntoView = useRef(null);
1329
- useEffect(function () {
1330
- isLoadingThemes && setCurrentScreen(DESIGN_SCREENS.LOADING);
1331
- }, [isLoadingThemes]);
1332
- useEffect(function () {
1333
- !previewingTheme && setCurrentScreen(DESIGN_SCREENS.THEMES);
1334
- }, [previewingTheme]);
1335
- var handleEditTheme = function handleEditTheme(theme) {
1336
- setPreviewingTheme(theme);
1337
- setCurrentScreen(DESIGN_SCREENS.CUSTOMIZE);
1338
- };
1339
- var handleBackPress = function handleBackPress() {
1340
- setCurrentScreen(DESIGN_SCREENS.THEMES);
1341
- setPreviewingTheme(null);
1342
- };
1343
- var handleCreateNewTheme = function handleCreateNewTheme() {
1344
- setPreviewingTheme(_objectSpread(_objectSpread({}, defaultThemes[0]), {}, {
1345
- id: null,
1346
- name: t("neetoMolecules.themeSidebar.defaultThemeName")
1347
- }));
1348
- setCurrentScreen(DESIGN_SCREENS.CUSTOMIZE);
1349
- };
1350
- var highlightTheme = function highlightTheme(themeToHighlight) {
1351
- setTimeout(function () {
1352
- scrollElementIntoView(themeToHighlight.id);
1353
- }, 1500);
1354
- setTimeout(function () {
1355
- setThemeToHighlight(null);
1356
- }, 4000);
1357
- setThemeToHighlight(themeToHighlight.id);
1358
- };
1359
- var createThemeCallback = function createThemeCallback(createdTheme) {
1360
- setCurrentScreen(DESIGN_SCREENS.THEMES);
1361
- setPreviewingTheme(createdTheme.id);
1362
- highlightTheme(createdTheme);
1363
- };
1364
- var handleCloneTheme = function handleCloneTheme(data) {
1365
- var themeToClone = _objectSpread(_objectSpread({}, data), {}, {
1366
- name: "".concat(data.name, " - clone")
1367
- });
1368
- createTheme(themeToClone, createThemeCallback);
1369
- };
1370
- var handleFormSubmit = function handleFormSubmit(values) {
1371
- var formattedValues = transformTheme(values);
1372
- if (!(previewingTheme !== null && previewingTheme !== void 0 && previewingTheme.id)) {
1373
- createTheme(formattedValues, createThemeCallback);
1374
- } else {
1375
- editTheme(_objectSpread(_objectSpread({}, formattedValues), {}, {
1376
- id: previewingTheme.id
1377
- }));
1378
- }
1379
- };
1380
- return /*#__PURE__*/React__default.createElement("div", {
1381
- className: "neeto-molecules-theme-design-sidebar neeto-ui-border-gray-200 border-r"
1382
- }, /*#__PURE__*/React__default.createElement(TitleBar, {
1383
- currentScreen: currentScreen,
1384
- handleBackPress: handleBackPress,
1385
- handleCreateNewTheme: handleCreateNewTheme,
1386
- isNewTheme: !(previewingTheme !== null && previewingTheme !== void 0 && previewingTheme.id)
1387
- }), currentScreen === DESIGN_SCREENS.LOADING && /*#__PURE__*/React__default.createElement("div", {
1388
- className: "flex h-full w-full items-center justify-center"
1389
- }, /*#__PURE__*/React__default.createElement(Spinner, null)), currentScreen === DESIGN_SCREENS.THEMES && /*#__PURE__*/React__default.createElement(Themes, {
1390
- applyingThemeId: applyingThemeId,
1391
- currentTheme: currentTheme,
1392
- customThemes: customThemes,
1393
- defaultThemes: defaultThemes,
1394
- didScrollActiveThemeIntoView: didScrollActiveThemeIntoView,
1395
- highlightTheme: highlightTheme,
1396
- previewingTheme: previewingTheme,
1397
- setPreviewingTheme: setPreviewingTheme,
1398
- themeToHighlight: themeToHighlight,
1399
- onApplyTheme: applyTheme,
1400
- onCloneTheme: handleCloneTheme,
1401
- onDeleteTheme: deleteTheme,
1402
- onEditTheme: handleEditTheme
1403
- }), currentScreen === DESIGN_SCREENS.CUSTOMIZE && /*#__PURE__*/React__default.createElement(Customize, {
1404
- handleFormSubmit: handleFormSubmit,
1405
- theme: previewingTheme
1406
- }));
1407
- };
1408
-
1409
- export { ThemeSidebar as default };
1410
- //# sourceMappingURL=ThemeSidebar.js.map