@bigbinary/neeto-molecules 5.1.17 → 5.1.19

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 (136) hide show
  1. package/dist/{Columns-gR00LMKF.js → Columns-BFBWAHqh.js} +2 -20
  2. package/dist/Columns-BFBWAHqh.js.map +1 -0
  3. package/dist/EmailForm.js +2 -0
  4. package/dist/EmailForm.js.map +1 -1
  5. package/dist/EmailPreview.js +1 -20
  6. package/dist/EmailPreview.js.map +1 -1
  7. package/dist/GoogleFontPicker.js +1 -449
  8. package/dist/GoogleFontPicker.js.map +1 -1
  9. package/dist/IconPicker.js +6 -914
  10. package/dist/IconPicker.js.map +1 -1
  11. package/dist/SendToFields.js +3 -1943
  12. package/dist/SendToFields.js.map +1 -1
  13. package/dist/ShareViaEmail.js +2 -0
  14. package/dist/ShareViaEmail.js.map +1 -1
  15. package/dist/avatar-placeholder-DEjUhVlU.js +23 -0
  16. package/dist/avatar-placeholder-DEjUhVlU.js.map +1 -0
  17. package/dist/cjs/{Columns-Brpr2a_M.js → Columns-CHOsnC9n.js} +3 -21
  18. package/dist/cjs/Columns-CHOsnC9n.js.map +1 -0
  19. package/dist/cjs/EmailForm.js +2 -0
  20. package/dist/cjs/EmailForm.js.map +1 -1
  21. package/dist/cjs/EmailPreview.js +2 -39
  22. package/dist/cjs/EmailPreview.js.map +1 -1
  23. package/dist/cjs/GoogleFontPicker.js +9 -457
  24. package/dist/cjs/GoogleFontPicker.js.map +1 -1
  25. package/dist/cjs/IconPicker.js +6 -914
  26. package/dist/cjs/IconPicker.js.map +1 -1
  27. package/dist/cjs/SendToFields.js +4 -1944
  28. package/dist/cjs/SendToFields.js.map +1 -1
  29. package/dist/cjs/ShareViaEmail.js +2 -0
  30. package/dist/cjs/ShareViaEmail.js.map +1 -1
  31. package/dist/cjs/avatar-placeholder-CSJpe1V0.js +44 -0
  32. package/dist/cjs/avatar-placeholder-CSJpe1V0.js.map +1 -0
  33. package/dist/cjs/download-B53zeKGa.js +21 -0
  34. package/dist/cjs/download-B53zeKGa.js.map +1 -0
  35. package/dist/cjs/grip-vertical-7cfWc2sE.js +24 -0
  36. package/dist/cjs/grip-vertical-7cfWc2sE.js.map +1 -0
  37. package/dist/cjs/index.es-Bcx0v5Pd.js +454 -0
  38. package/dist/cjs/index.es-Bcx0v5Pd.js.map +1 -0
  39. package/dist/cjs/index.esm-Bb1Vtlp2.js +919 -0
  40. package/dist/cjs/index.esm-Bb1Vtlp2.js.map +1 -0
  41. package/dist/cjs/papaparse-B5u_uWB3.js +1948 -0
  42. package/dist/cjs/papaparse-B5u_uWB3.js.map +1 -0
  43. package/dist/cjs/upload-C5ZnN-d5.js +21 -0
  44. package/dist/cjs/upload-C5ZnN-d5.js.map +1 -0
  45. package/dist/cjs/v2/BrowserPreview.js +51 -0
  46. package/dist/cjs/v2/BrowserPreview.js.map +1 -0
  47. package/dist/cjs/v2/Builder.js +872 -0
  48. package/dist/cjs/v2/Builder.js.map +1 -0
  49. package/dist/cjs/v2/CalendarView.js +3 -1
  50. package/dist/cjs/v2/CalendarView.js.map +1 -1
  51. package/dist/cjs/v2/Codeblock.js +62 -0
  52. package/dist/cjs/v2/Codeblock.js.map +1 -0
  53. package/dist/cjs/v2/Columns.js +2 -1
  54. package/dist/cjs/v2/Columns.js.map +1 -1
  55. package/dist/cjs/v2/Currency.js +920 -0
  56. package/dist/cjs/v2/Currency.js.map +1 -0
  57. package/dist/cjs/v2/DeleteArchiveModal.js +91 -0
  58. package/dist/cjs/v2/DeleteArchiveModal.js.map +1 -0
  59. package/dist/cjs/v2/DownloadMobileAppCallout.js +43 -0
  60. package/dist/cjs/v2/DownloadMobileAppCallout.js.map +1 -0
  61. package/dist/cjs/v2/EmailForm.js +622 -0
  62. package/dist/cjs/v2/EmailForm.js.map +1 -0
  63. package/dist/cjs/v2/EmailPreview.js +138 -0
  64. package/dist/cjs/v2/EmailPreview.js.map +1 -0
  65. package/dist/cjs/v2/EmojiReactions.js +82 -0
  66. package/dist/cjs/v2/EmojiReactions.js.map +1 -0
  67. package/dist/cjs/v2/FileUpload.js +5 -19
  68. package/dist/cjs/v2/FileUpload.js.map +1 -1
  69. package/dist/cjs/v2/GoogleFontPicker.js +130 -0
  70. package/dist/cjs/v2/GoogleFontPicker.js.map +1 -0
  71. package/dist/cjs/v2/IconPicker.js +274 -0
  72. package/dist/cjs/v2/IconPicker.js.map +1 -0
  73. package/dist/cjs/v2/SendToFields.js +313 -0
  74. package/dist/cjs/v2/SendToFields.js.map +1 -0
  75. package/dist/cjs/v2/SubHeader.js +6 -19
  76. package/dist/cjs/v2/SubHeader.js.map +1 -1
  77. package/dist/download-CZ7Q6k7-.js +19 -0
  78. package/dist/download-CZ7Q6k7-.js.map +1 -0
  79. package/dist/grip-vertical-FEAaqOeC.js +22 -0
  80. package/dist/grip-vertical-FEAaqOeC.js.map +1 -0
  81. package/dist/index.es-BQ-dr8y1.js +451 -0
  82. package/dist/index.es-BQ-dr8y1.js.map +1 -0
  83. package/dist/index.esm-DLni3-hz.js +917 -0
  84. package/dist/index.esm-DLni3-hz.js.map +1 -0
  85. package/dist/papaparse-p7fkGgWo.js +1946 -0
  86. package/dist/papaparse-p7fkGgWo.js.map +1 -0
  87. package/dist/upload-BNvlRoRJ.js +19 -0
  88. package/dist/upload-BNvlRoRJ.js.map +1 -0
  89. package/dist/v2/BrowserPreview.js +49 -0
  90. package/dist/v2/BrowserPreview.js.map +1 -0
  91. package/dist/v2/Builder.js +864 -0
  92. package/dist/v2/Builder.js.map +1 -0
  93. package/dist/v2/CalendarView.js +3 -1
  94. package/dist/v2/CalendarView.js.map +1 -1
  95. package/dist/v2/Codeblock.js +60 -0
  96. package/dist/v2/Codeblock.js.map +1 -0
  97. package/dist/v2/Columns.js +2 -1
  98. package/dist/v2/Columns.js.map +1 -1
  99. package/dist/v2/Currency.js +917 -0
  100. package/dist/v2/Currency.js.map +1 -0
  101. package/dist/v2/DeleteArchiveModal.js +89 -0
  102. package/dist/v2/DeleteArchiveModal.js.map +1 -0
  103. package/dist/v2/DownloadMobileAppCallout.js +41 -0
  104. package/dist/v2/DownloadMobileAppCallout.js.map +1 -0
  105. package/dist/v2/EmailForm.js +596 -0
  106. package/dist/v2/EmailForm.js.map +1 -0
  107. package/dist/v2/EmailPreview.js +136 -0
  108. package/dist/v2/EmailPreview.js.map +1 -0
  109. package/dist/v2/EmojiReactions.js +80 -0
  110. package/dist/v2/EmojiReactions.js.map +1 -0
  111. package/dist/v2/FileUpload.js +4 -18
  112. package/dist/v2/FileUpload.js.map +1 -1
  113. package/dist/v2/GoogleFontPicker.js +128 -0
  114. package/dist/v2/GoogleFontPicker.js.map +1 -0
  115. package/dist/v2/IconPicker.js +272 -0
  116. package/dist/v2/IconPicker.js.map +1 -0
  117. package/dist/v2/SendToFields.js +311 -0
  118. package/dist/v2/SendToFields.js.map +1 -0
  119. package/dist/v2/SubHeader.js +5 -18
  120. package/dist/v2/SubHeader.js.map +1 -1
  121. package/package.json +9 -9
  122. package/types/v2/BrowserPreview.d.ts +9 -0
  123. package/types/v2/Builder.d.ts +71 -0
  124. package/types/v2/Codeblock.d.ts +12 -0
  125. package/types/v2/Currency.d.ts +12 -0
  126. package/types/v2/DeleteArchiveModal.d.ts +16 -0
  127. package/types/v2/DownloadMobileAppCallout.d.ts +7 -0
  128. package/types/v2/EmailForm.d.ts +88 -0
  129. package/types/v2/EmailFormProvider.d.ts +29 -0
  130. package/types/v2/EmailPreview.d.ts +16 -0
  131. package/types/v2/EmojiReactions.d.ts +22 -0
  132. package/types/v2/GoogleFontPicker.d.ts +19 -0
  133. package/types/v2/IconPicker.d.ts +11 -0
  134. package/types/v2/SendToFields.d.ts +25 -0
  135. package/dist/Columns-gR00LMKF.js.map +0 -1
  136. package/dist/cjs/Columns-Brpr2a_M.js.map +0 -1
@@ -0,0 +1,622 @@
1
+ 'use strict';
2
+
3
+ Object.defineProperty(exports, '__esModule', { value: true });
4
+
5
+ var _defineProperty = require('@babel/runtime/helpers/defineProperty');
6
+ var React = require('react');
7
+ var neetoAtoms = require('@bigbinary/neeto-atoms');
8
+ var formik$1 = require('@bigbinary/neeto-atoms/formik');
9
+ var classnames = require('classnames');
10
+ var formik = require('formik');
11
+ var neetoCist = require('@bigbinary/neeto-cist');
12
+ var initializers = require('@bigbinary/neeto-commons-frontend/v2/initializers');
13
+ var FormikEditor = require('@bigbinary/neeto-editor/v2/FormikEditor');
14
+ var ramda = require('ramda');
15
+ var reactI18next = require('react-i18next');
16
+ var i18next = require('i18next');
17
+ var utils = require('@bigbinary/neeto-editor/utils');
18
+ var yup = require('yup');
19
+ var _typeof = require('@babel/runtime/helpers/typeof');
20
+ var jsxRuntime = require('react/jsx-runtime');
21
+ var v2_SendToFields = require('./SendToFields.js');
22
+ var _slicedToArray = require('@babel/runtime/helpers/slicedToArray');
23
+ var general = require('@bigbinary/neeto-commons-frontend/v2/utils/general');
24
+ var v2_DynamicVariables = require('./DynamicVariables.js');
25
+ var v2_Header = require('./Header.js');
26
+ var v2_MobilePreviewHeader = require('./MobilePreviewHeader.js');
27
+ var v2_EmailPreview = require('./EmailPreview.js');
28
+ require('@babel/runtime/helpers/toConsumableArray');
29
+ require('react-dropzone');
30
+ require('@bigbinary/neeto-commons-frontend/v2/react-utils');
31
+ require('../download-B53zeKGa.js');
32
+ require('../createLucideIcon-DBDhE7kE.js');
33
+ require('../upload-C5ZnN-d5.js');
34
+ require('../papaparse-B5u_uWB3.js');
35
+ require('../_commonjsHelpers-BJu3ubxk.js');
36
+ require('stream');
37
+ require('@babel/runtime/helpers/objectWithoutProperties');
38
+ require('./Breadcrumbs.js');
39
+ require('@bigbinary/neeto-atoms/primitives');
40
+ require('react-router-dom');
41
+ require('./HelpPopover.js');
42
+ require('../circle-question-mark-kxBMPyWQ.js');
43
+ require('./MoreDropdown.js');
44
+ require('../ellipsis-BcfLTtl5.js');
45
+ require('./Search.js');
46
+ require('@bigbinary/neeto-commons-frontend/v2/react-utils/useFuncDebounce');
47
+ require('@bigbinary/neeto-commons-frontend/v2/react-utils/useQueryParams');
48
+ require('@bigbinary/neeto-commons-frontend/v2/react-utils/useUpdateEffect');
49
+ require('@bigbinary/neeto-commons-frontend/v2/utils');
50
+ require('../search-BBuFYdmG.js');
51
+ require('@bigbinary/neeto-commons-frontend/react-utils');
52
+ require('../index-JY2zVpnv.js');
53
+ require('@bigbinary/neeto-editor/EditorContent');
54
+ require('../avatar-placeholder-CSJpe1V0.js');
55
+
56
+ function _interopNamespaceDefault(e) {
57
+ var n = Object.create(null);
58
+ if (e) {
59
+ Object.keys(e).forEach(function (k) {
60
+ if (k !== 'default') {
61
+ var d = Object.getOwnPropertyDescriptor(e, k);
62
+ Object.defineProperty(n, k, d.get ? d : {
63
+ enumerable: true,
64
+ get: function () { return e[k]; }
65
+ });
66
+ }
67
+ });
68
+ }
69
+ n.default = e;
70
+ return Object.freeze(n);
71
+ }
72
+
73
+ var yup__namespace = /*#__PURE__*/_interopNamespaceDefault(yup);
74
+
75
+ var INITIAL_FORM_VALUES = {
76
+ sendTo: [],
77
+ sendToId: "",
78
+ sendToCc: [],
79
+ sendToBcc: [],
80
+ replyTo: "",
81
+ showCopyEmails: false,
82
+ subject: "",
83
+ message: "",
84
+ isEnabled: false
85
+ };
86
+ var EMAIL_FORM_VALIDATION_SCHEMA = yup__namespace.object({
87
+ subject: yup__namespace.string().required(i18next.t("neetoMolecules.emailForm.errors.subjectRequired")),
88
+ message: yup__namespace.string().test("message", i18next.t("neetoMolecules.emailForm.errors.messageRequired"), function (value) {
89
+ return !utils.isEditorEmpty(value);
90
+ })
91
+ });
92
+ var sendToFieldValidation = function sendToFieldValidation(maxEmails) {
93
+ var validation = yup__namespace.array().test("all-emails-valid", i18next.t("neetoMolecules.emailForm.errors.invalidEmailAddress"), function (emails) {
94
+ return emails === null || emails === void 0 ? void 0 : emails.every(ramda.prop("valid"));
95
+ }).test("max-email-count", i18next.t("neetoMolecules.emailForm.errors.maxEmails", {
96
+ count: maxEmails
97
+ }), function (emails) {
98
+ return (emails === null || emails === void 0 ? void 0 : emails.length) <= maxEmails;
99
+ });
100
+ return yup__namespace.object({
101
+ sendTo: validation.min(1, i18next.t("neetoMolecules.emailForm.errors.required", {
102
+ entity: i18next.t("neetoMolecules.emailForm.fields.sendToEmailAddress")
103
+ })).nullable(),
104
+ sendToCc: validation,
105
+ sendToBcc: validation
106
+ });
107
+ };
108
+ var SEND_TO_ID_FIELD_VALIDATION = yup__namespace.object({
109
+ sendToId: yup__namespace.string().required(i18next.t("neetoMolecules.emailForm.errors.required", {
110
+ entity: i18next.t("neetoMolecules.emailForm.labels.sendTo")
111
+ }))
112
+ });
113
+ var REPLY_TO_FIELD_VALIDATION = yup__namespace.object({
114
+ replyTo: yup__namespace.string().nullable().email(i18next.t("neetoMolecules.emailForm.errors.invalidEmailAddress")).required(i18next.t("neetoMolecules.emailForm.errors.required", {
115
+ entity: i18next.t("neetoMolecules.emailForm.fields.replyToEmailAddress")
116
+ }))
117
+ });
118
+ var EDITOR_ADDONS = ["highlight", "emoji", "code-block", "block-quote", "image-upload", "divider", "video-embed"];
119
+
120
+ /* eslint-disable @bigbinary/neeto/use-zustand-for-global-state-management */
121
+ var EmailFormContext = /*#__PURE__*/React.createContext({
122
+ showSendToField: false,
123
+ showSendToAsRadio: false,
124
+ showReplyToField: false,
125
+ showCcField: false,
126
+ showBccField: false
127
+ });
128
+
129
+ 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; }
130
+ function _objectSpread$3(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys$3(Object(t), true).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys$3(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
131
+ var getValidationSchema = function getValidationSchema(_ref) {
132
+ var showSendToField = _ref.showSendToField,
133
+ showReplyToField = _ref.showReplyToField,
134
+ showSendToAsRadio = _ref.showSendToAsRadio,
135
+ customValidations = _ref.customValidations,
136
+ maxEmails = _ref.maxEmails;
137
+ var schema = EMAIL_FORM_VALIDATION_SCHEMA.clone();
138
+ if (showSendToField) {
139
+ schema = schema.concat(showSendToAsRadio ? SEND_TO_ID_FIELD_VALIDATION : sendToFieldValidation(maxEmails));
140
+ }
141
+ if (showReplyToField) schema = schema.concat(REPLY_TO_FIELD_VALIDATION);
142
+ var isYupObject = customValidations.type === "object";
143
+ if (isYupObject) {
144
+ var customFields = customValidations.fields || {};
145
+ schema = schema.shape(customFields);
146
+ } else if (_typeof(customValidations) === "object") {
147
+ schema = schema.shape(customValidations);
148
+ }
149
+ return schema;
150
+ };
151
+ var getReplyToFieldLabelProps = function getReplyToFieldLabelProps(_ref2) {
152
+ var popoverProps = _ref2.popoverProps;
153
+ return {
154
+ helpIconProps: _objectSpread$3({
155
+ className: "reply-to-help-icon"
156
+ }, neetoCist.isPresent(popoverProps) ? {
157
+ popoverProps: _objectSpread$3(_objectSpread$3({}, popoverProps), {}, {
158
+ description: popoverProps.description || i18next.t("neetoMolecules.emailForm.tooltips.replyTo")
159
+ })
160
+ } : {
161
+ tooltipProps: {
162
+ content: i18next.t("neetoMolecules.emailForm.tooltips.replyTo")
163
+ }
164
+ })
165
+ };
166
+ };
167
+ var resolveContent = function resolveContent(content, func, variable) {
168
+ if (typeof func === "function") {
169
+ return func(content, variable);
170
+ }
171
+ return content;
172
+ };
173
+ var normalizeHtmlString = function normalizeHtmlString(str) {
174
+ if (typeof str !== "string") return str;
175
+ return str.replace(/\uFEFF/g, "").replace(/\r\n|\r/g, "\n").replace(/&nbsp;/g, " ").replace(/[\t ]+/g, " ").replace(/\s*\n\s*/g, "\n").replace(/\n+/g, "\n").replace(/>\s+</g, "><").trim();
176
+ };
177
+
178
+ var ReplyToField = function ReplyToField(_ref) {
179
+ var _ref$options = _ref.options,
180
+ options = _ref$options === void 0 ? [] : _ref$options,
181
+ _ref$popoverProps = _ref.popoverProps,
182
+ popoverProps = _ref$popoverProps === void 0 ? {} : _ref$popoverProps;
183
+ var _useTranslation = reactI18next.useTranslation(),
184
+ t = _useTranslation.t;
185
+ var _useFormikContext = formik.useFormikContext(),
186
+ setFieldValue = _useFormikContext.setFieldValue;
187
+ var isDropdownField = neetoCist.isNotEmpty(options);
188
+ var labelProps = getReplyToFieldLabelProps({
189
+ popoverProps: popoverProps
190
+ });
191
+ if (isDropdownField) {
192
+ return /*#__PURE__*/jsxRuntime.jsx(formik$1.Select, {
193
+ labelProps: labelProps,
194
+ options: options,
195
+ isClearable: true,
196
+ className: "w-full",
197
+ "data-testid": "reply-to-select-field",
198
+ label: t("neetoMolecules.emailForm.labels.replyTo"),
199
+ name: "replyTo",
200
+ onChange: function onChange(value) {
201
+ return setFieldValue("replyTo", value !== null && value !== void 0 ? value : "");
202
+ }
203
+ });
204
+ }
205
+ return /*#__PURE__*/jsxRuntime.jsx(formik$1.Input, {
206
+ labelProps: labelProps,
207
+ autoFocus: true,
208
+ nakedInput: true,
209
+ required: true,
210
+ className: "w-full",
211
+ "data-testid": "reply-to-input-field",
212
+ label: t("neetoMolecules.emailForm.labels.replyTo"),
213
+ name: "replyTo",
214
+ placeholder: t("neetoMolecules.emailForm.placeholders.emailPlaceholder"),
215
+ size: "large",
216
+ onChange: function onChange(event) {
217
+ var _event$target$value;
218
+ return setFieldValue("replyTo", (_event$target$value = event.target.value) === null || _event$target$value === void 0 ? void 0 : _event$target$value.toLowerCase());
219
+ }
220
+ });
221
+ };
222
+
223
+ var SendToField = function SendToField(_ref) {
224
+ var showBccField = _ref.showBccField,
225
+ showCcField = _ref.showCcField,
226
+ showSendToTextField = _ref.showSendToTextField;
227
+ var _useTranslation = reactI18next.useTranslation(),
228
+ t = _useTranslation.t;
229
+ if (!showSendToTextField && !showBccField && !showCcField) return null;
230
+ return /*#__PURE__*/jsxRuntime.jsx(v2_SendToFields, {
231
+ showCcBccButton: true,
232
+ showBccField: showSendToTextField ? false : showBccField,
233
+ showCcField: showSendToTextField ? false : showCcField,
234
+ showSendToField: showSendToTextField,
235
+ bccInputProps: {
236
+ label: t("neetoMolecules.emailForm.labels.bCc"),
237
+ name: "sendToBcc",
238
+ placeholder: t("neetoMolecules.emailForm.placeholders.commaSeparatedEmails")
239
+ },
240
+ ccInputProps: {
241
+ label: t("neetoMolecules.emailForm.labels.cc"),
242
+ name: "sendToCc",
243
+ placeholder: t("neetoMolecules.emailForm.placeholders.commaSeparatedEmails")
244
+ },
245
+ emailInputProps: {
246
+ id: "sendTo",
247
+ name: "sendTo",
248
+ label: t("neetoMolecules.emailForm.labels.sendTo"),
249
+ placeholder: t("neetoMolecules.emailForm.placeholders.commaSeparatedEmails"),
250
+ required: true
251
+ }
252
+ });
253
+ };
254
+
255
+ var SubjectField = function SubjectField(_ref) {
256
+ var name = _ref.name,
257
+ text = _ref.text,
258
+ updateText = _ref.updateText,
259
+ _ref$subjectVariables = _ref.subjectVariables,
260
+ subjectVariables = _ref$subjectVariables === void 0 ? [] : _ref$subjectVariables,
261
+ error = _ref.error,
262
+ _ref$required = _ref.required,
263
+ required = _ref$required === void 0 ? false : _ref$required,
264
+ onBlur = _ref.onBlur;
265
+ var _useState = React.useState(false),
266
+ _useState2 = _slicedToArray(_useState, 2),
267
+ isFieldFocusedOnce = _useState2[0],
268
+ setIsFieldFocusedOnce = _useState2[1];
269
+ var _useTranslation = reactI18next.useTranslation(),
270
+ t = _useTranslation.t;
271
+ var tagClickHandler = function tagClickHandler(_ref2) {
272
+ var slug = _ref2.key,
273
+ category = _ref2.category;
274
+ var textAreaElement = document.querySelector("textarea[name=".concat(name, "]"));
275
+ var splitIndex = isFieldFocusedOnce && textAreaElement ? textAreaElement.selectionEnd : text.length;
276
+ var variable = category ? "".concat(category, ".").concat(slug) : slug;
277
+ var updatedSubject = [text.slice(0, splitIndex), " {{".concat(variable, "}}"), text.slice(splitIndex)].join("");
278
+ updateText(updatedSubject);
279
+ };
280
+ return /*#__PURE__*/jsxRuntime.jsx(neetoAtoms.Input, {
281
+ error: error,
282
+ name: name,
283
+ onBlur: onBlur,
284
+ required: required,
285
+ nakedInput: true,
286
+ label: t("neetoMolecules.emailForm.labels.subject"),
287
+ placeholder: t("neetoMolecules.emailForm.placeholders.subject"),
288
+ value: text,
289
+ suffix: /*#__PURE__*/jsxRuntime.jsx(v2_DynamicVariables, {
290
+ buttonProps: {
291
+ className: "m-1"
292
+ },
293
+ dropdownProps: {
294
+ className: "overflow-y-auto"
295
+ },
296
+ variables: subjectVariables,
297
+ onVariableClick: tagClickHandler
298
+ }),
299
+ onChange: general.withEventTargetValue(updateText),
300
+ onFocus: function onFocus() {
301
+ return setIsFieldFocusedOnce(true);
302
+ }
303
+ });
304
+ };
305
+
306
+ 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; }
307
+ function _objectSpread$2(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys$2(Object(t), true).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys$2(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
308
+ var EmailForm = function EmailForm(_ref) {
309
+ var _globalProps$user;
310
+ var _ref$messageVariables = _ref.messageVariables,
311
+ messageVariables = _ref$messageVariables === void 0 ? [] : _ref$messageVariables,
312
+ _ref$subjectVariables = _ref.subjectVariables,
313
+ subjectVariables = _ref$subjectVariables === void 0 ? [] : _ref$subjectVariables,
314
+ handleCancel = _ref.handleCancel,
315
+ handleResetToDefault = _ref.handleResetToDefault,
316
+ isLoading = _ref.isLoading,
317
+ replyToFieldProps = _ref.replyToFieldProps,
318
+ sendToFieldProps = _ref.sendToFieldProps,
319
+ replyToOptions = _ref.replyToOptions,
320
+ _ref$sendToOptions = _ref.sendToOptions,
321
+ sendToOptions = _ref$sendToOptions === void 0 ? [] : _ref$sendToOptions,
322
+ _ref$isUpdating = _ref.isUpdating,
323
+ isUpdating = _ref$isUpdating === void 0 ? false : _ref$isUpdating,
324
+ _ref$isResetting = _ref.isResetting,
325
+ isResetting = _ref$isResetting === void 0 ? false : _ref$isResetting,
326
+ _ref$showFields = _ref.showFields,
327
+ showFields = _ref$showFields === void 0 ? true : _ref$showFields,
328
+ _ref$className = _ref.className,
329
+ className = _ref$className === void 0 ? "" : _ref$className,
330
+ _ref$editorAddons = _ref.editorAddons,
331
+ editorAddons = _ref$editorAddons === void 0 ? EDITOR_ADDONS : _ref$editorAddons,
332
+ showResetToDefaultButton = _ref.showResetToDefaultButton,
333
+ _ref$editorRef = _ref.editorRef,
334
+ editorRef = _ref$editorRef === void 0 ? null : _ref$editorRef,
335
+ _ref$defaultValues = _ref.defaultValues,
336
+ defaultValues = _ref$defaultValues === void 0 ? {} : _ref$defaultValues;
337
+ var _useTranslation = reactI18next.useTranslation(),
338
+ t = _useTranslation.t;
339
+ var _useContext = React.useContext(EmailFormContext),
340
+ showSendToField = _useContext.showSendToField,
341
+ showSendToAsRadio = _useContext.showSendToAsRadio,
342
+ showReplyToField = _useContext.showReplyToField,
343
+ showCcField = _useContext.showCcField,
344
+ showBccField = _useContext.showBccField;
345
+ var _useFormikContext = formik.useFormikContext(),
346
+ setFieldValue = _useFormikContext.setFieldValue,
347
+ values = _useFormikContext.values,
348
+ resetForm = _useFormikContext.resetForm;
349
+ var normalizedValues = _objectSpread$2(_objectSpread$2({}, values), {}, {
350
+ message: normalizeHtmlString(values.message)
351
+ });
352
+ var normalizedDefaultValues = _objectSpread$2(_objectSpread$2({}, defaultValues), {}, {
353
+ message: normalizeHtmlString(defaultValues === null || defaultValues === void 0 ? void 0 : defaultValues.message)
354
+ });
355
+ normalizedDefaultValues.replyTo || (normalizedDefaultValues.replyTo = (_globalProps$user = initializers.globalProps.user) === null || _globalProps$user === void 0 ? void 0 : _globalProps$user.email);
356
+ var disabled = ramda.equals(normalizedValues, normalizedDefaultValues);
357
+ var sendToFieldOptions = (sendToFieldProps === null || sendToFieldProps === void 0 ? void 0 : sendToFieldProps.options) || sendToOptions;
358
+ var showSendToRadioField = showSendToField && showSendToAsRadio && neetoCist.isNotEmpty(sendToFieldOptions);
359
+ var showSendToTextField = showSendToField && !showSendToRadioField;
360
+ return /*#__PURE__*/jsxRuntime.jsxs("div", {
361
+ "data-testid": "email-form",
362
+ className: classnames("flex flex-1 flex-col items-start gap-2 !pb-0", _defineProperty({}, className, className)),
363
+ children: [/*#__PURE__*/jsxRuntime.jsx("div", {
364
+ className: "w-full grow",
365
+ children: showFields && /*#__PURE__*/jsxRuntime.jsxs("div", {
366
+ className: "flex w-full flex-col items-start justify-start gap-5",
367
+ children: [showSendToRadioField && /*#__PURE__*/jsxRuntime.jsx(formik$1.RadioGroup, {
368
+ className: "pb-2",
369
+ "data-testid": "send-to-id",
370
+ label: t("neetoMolecules.emailForm.labels.sendTo"),
371
+ labelProps: {
372
+ required: true
373
+ },
374
+ name: "sendToId",
375
+ children: sendToFieldOptions.map(function (_ref2) {
376
+ var label = _ref2.label,
377
+ value = _ref2.value;
378
+ return /*#__PURE__*/React.createElement(formik$1.RadioGroup.Item, {
379
+ label: label,
380
+ value: value,
381
+ key: value
382
+ });
383
+ })
384
+ }), /*#__PURE__*/jsxRuntime.jsx(SendToField, {
385
+ showBccField: showBccField,
386
+ showCcField: showCcField,
387
+ showSendToTextField: showSendToTextField
388
+ }), showReplyToField && /*#__PURE__*/jsxRuntime.jsx("div", {
389
+ className: "border-border w-full border-b pb-1",
390
+ children: /*#__PURE__*/jsxRuntime.jsx(ReplyToField, _objectSpread$2({
391
+ options: replyToOptions
392
+ }, replyToFieldProps))
393
+ }), /*#__PURE__*/jsxRuntime.jsx(formik.Field, {
394
+ name: "subject",
395
+ children: function children(_ref3) {
396
+ var _ref3$field = _ref3.field,
397
+ value = _ref3$field.value,
398
+ onBlur = _ref3$field.onBlur,
399
+ _ref3$meta = _ref3.meta,
400
+ error = _ref3$meta.error,
401
+ touched = _ref3$meta.touched;
402
+ return /*#__PURE__*/jsxRuntime.jsx("div", {
403
+ className: "border-border w-full border-b pb-1",
404
+ children: /*#__PURE__*/jsxRuntime.jsx(SubjectField, {
405
+ onBlur: onBlur,
406
+ subjectVariables: subjectVariables,
407
+ required: true,
408
+ error: touched && error ? t(error) : undefined,
409
+ name: "subject",
410
+ text: value,
411
+ updateText: function updateText(text) {
412
+ return setFieldValue("subject", text);
413
+ }
414
+ })
415
+ });
416
+ }
417
+ }), /*#__PURE__*/jsxRuntime.jsx("div", {
418
+ className: "w-full",
419
+ "data-testid": "message-input-container",
420
+ children: /*#__PURE__*/jsxRuntime.jsx(FormikEditor, {
421
+ required: true,
422
+ addons: editorAddons,
423
+ "data-testid": "message-input-field",
424
+ hideSlashCommands: false,
425
+ id: "form_message",
426
+ menuType: "fixed",
427
+ name: "message",
428
+ placeholder: t("neetoMolecules.emailForm.placeholders.message"),
429
+ ref: editorRef,
430
+ variables: messageVariables,
431
+ shouldUpdate: function shouldUpdate(nextProps, prevProps) {
432
+ return neetoCist.notEqualsDeep(nextProps.variables, prevProps.variables);
433
+ }
434
+ })
435
+ })]
436
+ })
437
+ }), /*#__PURE__*/jsxRuntime.jsxs("div", {
438
+ className: "bg-background z-10 flex w-full justify-between py-6 lg:sticky lg:bottom-0",
439
+ children: [/*#__PURE__*/jsxRuntime.jsx(formik$1.ActionBlock, {
440
+ cancelButtonProps: {
441
+ onClick: handleCancel
442
+ },
443
+ isSubmitting: isLoading || isUpdating
444
+ }), showResetToDefaultButton && /*#__PURE__*/jsxRuntime.jsx("div", {
445
+ children: /*#__PURE__*/jsxRuntime.jsx(neetoAtoms.Button, {
446
+ disabled: disabled,
447
+ "data-testid": "reset-to-default-button",
448
+ label: t("neetoMolecules.emailForm.labels.resetToDefault"),
449
+ loading: isResetting,
450
+ variant: "secondary",
451
+ onClick: function onClick() {
452
+ resetForm();
453
+ handleResetToDefault();
454
+ }
455
+ })
456
+ })]
457
+ })]
458
+ });
459
+ };
460
+
461
+ 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; }
462
+ function _objectSpread$1(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys$1(Object(t), true).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys$1(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
463
+ var EmailFormComponent = function EmailFormComponent(_ref) {
464
+ var _ref$onSubmit = _ref.onSubmit,
465
+ onSubmit = _ref$onSubmit === void 0 ? neetoCist.noop : _ref$onSubmit,
466
+ _ref$initialValues = _ref.initialValues,
467
+ initialValues = _ref$initialValues === void 0 ? INITIAL_FORM_VALUES : _ref$initialValues,
468
+ _children = _ref.children,
469
+ formikProps = _ref.formikProps,
470
+ validationSchema = _ref.validationSchema,
471
+ _ref$showSendToField = _ref.showSendToField,
472
+ showSendToField = _ref$showSendToField === void 0 ? false : _ref$showSendToField,
473
+ _ref$showReplyToField = _ref.showReplyToField,
474
+ showReplyToField = _ref$showReplyToField === void 0 ? false : _ref$showReplyToField,
475
+ _ref$showSendToAsRadi = _ref.showSendToAsRadio,
476
+ showSendToAsRadio = _ref$showSendToAsRadi === void 0 ? false : _ref$showSendToAsRadi,
477
+ _ref$blockNavigation = _ref.blockNavigation,
478
+ blockNavigation = _ref$blockNavigation === void 0 ? true : _ref$blockNavigation,
479
+ _ref$showCcField = _ref.showCcField,
480
+ showCcField = _ref$showCcField === void 0 ? false : _ref$showCcField,
481
+ _ref$showBccField = _ref.showBccField,
482
+ showBccField = _ref$showBccField === void 0 ? false : _ref$showBccField,
483
+ _ref$isLoading = _ref.isLoading,
484
+ isLoading = _ref$isLoading === void 0 ? false : _ref$isLoading,
485
+ _ref$maxEmails = _ref.maxEmails,
486
+ maxEmails = _ref$maxEmails === void 0 ? 10 : _ref$maxEmails,
487
+ _ref$emailFormProps = _ref.emailFormProps,
488
+ emailFormProps = _ref$emailFormProps === void 0 ? {} : _ref$emailFormProps,
489
+ _ref$emailPreviewProp = _ref.emailPreviewProps,
490
+ emailPreviewProps = _ref$emailPreviewProp === void 0 ? {} : _ref$emailPreviewProp,
491
+ _ref$headerProps = _ref.headerProps,
492
+ headerProps = _ref$headerProps === void 0 ? {} : _ref$headerProps,
493
+ _ref$tooltipProps = _ref.tooltipProps,
494
+ tooltipProps = _ref$tooltipProps === void 0 ? {} : _ref$tooltipProps,
495
+ _ref$switchProps = _ref.switchProps,
496
+ switchProps = _ref$switchProps === void 0 ? {} : _ref$switchProps,
497
+ _ref$mobilePreviewPro = _ref.mobilePreviewProps,
498
+ mobilePreviewProps = _ref$mobilePreviewPro === void 0 ? {} : _ref$mobilePreviewPro;
499
+ var formatBody = emailPreviewProps.formatBody,
500
+ formatSubject = emailPreviewProps.formatSubject,
501
+ bodyVariables = emailPreviewProps.bodyVariables,
502
+ subjectVariables = emailPreviewProps.subjectVariables;
503
+ var shouldShowFields = function shouldShowFields(values) {
504
+ return ramda.isEmpty(switchProps) || values.isEnabled;
505
+ };
506
+ return /*#__PURE__*/jsxRuntime.jsx(EmailFormProvider, {
507
+ formikProps: formikProps,
508
+ initialValues: initialValues,
509
+ maxEmails: maxEmails,
510
+ onSubmit: onSubmit,
511
+ showBccField: showBccField,
512
+ showCcField: showCcField,
513
+ showReplyToField: showReplyToField,
514
+ showSendToAsRadio: showSendToAsRadio,
515
+ showSendToField: showSendToField,
516
+ validationSchema: validationSchema,
517
+ children: function children(_ref2) {
518
+ var _values$sendTo;
519
+ var values = _ref2.values,
520
+ isSubmitting = _ref2.isSubmitting;
521
+ return /*#__PURE__*/jsxRuntime.jsxs("div", {
522
+ className: "flex h-[calc(100dvh-64px)] flex-grow flex-col overflow-y-auto lg:flex-row",
523
+ children: [/*#__PURE__*/jsxRuntime.jsxs("div", {
524
+ className: "flex w-full flex-col px-5 md:px-10 lg:h-full lg:w-1/2 lg:overflow-y-auto",
525
+ children: [blockNavigation && /*#__PURE__*/jsxRuntime.jsx(formik$1.BlockNavigation, {}), neetoCist.isNotEmpty(headerProps) && /*#__PURE__*/jsxRuntime.jsx(v2_Header, _objectSpread$1({
526
+ className: "px-0",
527
+ size: "small"
528
+ }, headerProps)), neetoCist.isNotEmpty(switchProps) && /*#__PURE__*/jsxRuntime.jsx("div", {
529
+ className: "flex items-center justify-between gap-y-0.5 pb-6",
530
+ children: /*#__PURE__*/jsxRuntime.jsx(neetoAtoms.Tooltip, _objectSpread$1(_objectSpread$1({
531
+ disabled: !(switchProps !== null && switchProps !== void 0 && switchProps.disabled),
532
+ position: "top"
533
+ }, tooltipProps), {}, {
534
+ children: /*#__PURE__*/jsxRuntime.jsx("div", {
535
+ className: "flex items-center gap-2",
536
+ children: /*#__PURE__*/jsxRuntime.jsx(formik$1.Switch, _objectSpread$1({
537
+ "data-testid": "switch",
538
+ name: "isEnabled"
539
+ }, switchProps))
540
+ })
541
+ }))
542
+ }), shouldShowFields(values) && _children, /*#__PURE__*/jsxRuntime.jsx(EmailForm, _objectSpread$1({
543
+ isLoading: isSubmitting || isLoading,
544
+ isUpdating: isSubmitting || isLoading,
545
+ showFields: shouldShowFields(values)
546
+ }, emailFormProps))]
547
+ }), shouldShowFields(values) && /*#__PURE__*/jsxRuntime.jsx(v2_MobilePreviewHeader, _objectSpread$1({
548
+ className: "lg:hidden"
549
+ }, mobilePreviewProps)), shouldShowFields(values) && /*#__PURE__*/jsxRuntime.jsx("div", {
550
+ className: "bg-muted w-full px-6 py-10 lg:w-1/2 lg:overflow-y-auto",
551
+ children: /*#__PURE__*/jsxRuntime.jsx(v2_EmailPreview, _objectSpread$1({
552
+ body: resolveContent(values.message, formatBody, bodyVariables),
553
+ from: values.sendFrom,
554
+ to: ramda.pluck("value", (_values$sendTo = values === null || values === void 0 ? void 0 : values.sendTo) !== null && _values$sendTo !== void 0 ? _values$sendTo : []),
555
+ subject: resolveContent(values.subject, formatSubject, subjectVariables)
556
+ }, emailPreviewProps))
557
+ })]
558
+ });
559
+ }
560
+ });
561
+ };
562
+
563
+ 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; }
564
+ function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), true).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
565
+ var EmailFormProvider = function EmailFormProvider(_ref) {
566
+ var _globalProps$user;
567
+ var _ref$onSubmit = _ref.onSubmit,
568
+ onSubmit = _ref$onSubmit === void 0 ? neetoCist.noop : _ref$onSubmit,
569
+ _ref$initialValues = _ref.initialValues,
570
+ initialValues = _ref$initialValues === void 0 ? INITIAL_FORM_VALUES : _ref$initialValues,
571
+ children = _ref.children,
572
+ formikProps = _ref.formikProps,
573
+ _ref$validationSchema = _ref.validationSchema,
574
+ customValidations = _ref$validationSchema === void 0 ? {} : _ref$validationSchema,
575
+ _ref$showSendToField = _ref.showSendToField,
576
+ showSendToField = _ref$showSendToField === void 0 ? false : _ref$showSendToField,
577
+ _ref$showReplyToField = _ref.showReplyToField,
578
+ showReplyToField = _ref$showReplyToField === void 0 ? false : _ref$showReplyToField,
579
+ _ref$showSendToAsRadi = _ref.showSendToAsRadio,
580
+ showSendToAsRadio = _ref$showSendToAsRadi === void 0 ? false : _ref$showSendToAsRadi,
581
+ _ref$showCcField = _ref.showCcField,
582
+ showCcField = _ref$showCcField === void 0 ? false : _ref$showCcField,
583
+ _ref$showBccField = _ref.showBccField,
584
+ showBccField = _ref$showBccField === void 0 ? false : _ref$showBccField,
585
+ _ref$maxEmails = _ref.maxEmails,
586
+ maxEmails = _ref$maxEmails === void 0 ? 10 : _ref$maxEmails;
587
+ return /*#__PURE__*/jsxRuntime.jsx("div", {
588
+ "data-testid": "email-form-provider",
589
+ children: /*#__PURE__*/jsxRuntime.jsx(EmailFormContext.Provider, {
590
+ value: {
591
+ showSendToField: showSendToField,
592
+ showSendToAsRadio: showSendToAsRadio,
593
+ showReplyToField: showReplyToField,
594
+ showCcField: showCcField,
595
+ showBccField: showBccField
596
+ },
597
+ children: /*#__PURE__*/jsxRuntime.jsx(formik$1.Form, {
598
+ formikProps: _objectSpread({
599
+ enableReinitialize: true,
600
+ validationSchema: getValidationSchema({
601
+ showSendToField: showSendToField,
602
+ showReplyToField: showReplyToField,
603
+ showSendToAsRadio: showSendToAsRadio,
604
+ customValidations: customValidations,
605
+ maxEmails: maxEmails
606
+ }),
607
+ initialValues: _objectSpread(_objectSpread({}, initialValues), {}, {
608
+ replyTo: initialValues.replyTo || ((_globalProps$user = initializers.globalProps.user) === null || _globalProps$user === void 0 ? void 0 : _globalProps$user.email)
609
+ }),
610
+ onSubmit: onSubmit
611
+ }, formikProps),
612
+ children: children
613
+ })
614
+ })
615
+ });
616
+ };
617
+
618
+ exports.EmailPreview = v2_EmailPreview;
619
+ exports.EmailForm = EmailForm;
620
+ exports.EmailFormProvider = EmailFormProvider;
621
+ exports.default = EmailFormComponent;
622
+ //# sourceMappingURL=EmailForm.js.map