@bigbinary/neeto-molecules 5.3.24 → 5.3.26

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.
@@ -33,6 +33,8 @@ const __iconNode = [
33
33
  ];
34
34
  const Braces = createLucideIcon.createLucideIcon("braces", __iconNode);
35
35
 
36
+ var MAX_LABEL_LENGTH = 100;
37
+
36
38
  var parseVariables = function parseVariables() {
37
39
  var variableArr = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : [];
38
40
  var uncategorized = [];
@@ -140,14 +142,21 @@ var DynamicVariables = function DynamicVariables(_ref) {
140
142
  className: "flex flex-wrap items-center gap-2",
141
143
  "data-testid": general.joinHyphenCase("dynamic-variables-list", label),
142
144
  children: variables.map(function (item) {
143
- return /*#__PURE__*/jsxRuntime.jsx(neetoAtoms.DropdownMenu.MenuItem, {
144
- className: "border-border text-foreground hover:border-primary hover:text-primary focus-visible:border-primary focus-visible:text-primary cursor-pointer rounded-md border px-1.5 py-1 text-start text-sm leading-tight transition-colors select-none focus:outline-none",
145
- "data-testid": general.joinHyphenCase("dynamic-variables-list-item", item.label),
146
- onClick: function onClick() {
147
- return onVariableClick(item);
148
- },
149
- children: item.label
150
- }, item.label);
145
+ var _item$label;
146
+ return /*#__PURE__*/jsxRuntime.jsxs("div", {
147
+ className: "group relative max-w-full",
148
+ children: [/*#__PURE__*/jsxRuntime.jsx(neetoAtoms.DropdownMenu.MenuItem, {
149
+ className: "border-border text-foreground hover:border-primary hover:text-primary focus-visible:border-primary focus-visible:text-primary max-w-full cursor-pointer rounded-md border px-1.5 py-1 text-start text-sm leading-tight transition-colors select-none focus:outline-none [&>span]:[overflow-wrap:anywhere] [&>span]:whitespace-normal",
150
+ "data-testid": general.joinHyphenCase("dynamic-variables-list-item", item.label),
151
+ onClick: function onClick() {
152
+ return onVariableClick(item);
153
+ },
154
+ children: neetoCist._truncate(item.label, MAX_LABEL_LENGTH)
155
+ }), ((_item$label = item.label) === null || _item$label === void 0 ? void 0 : _item$label.length) > MAX_LABEL_LENGTH && /*#__PURE__*/jsxRuntime.jsx("span", {
156
+ className: "bg-popover text-popover-foreground border-border pointer-events-none absolute end-0 bottom-full z-50 mb-1 hidden w-80 rounded-md border p-2 text-xs shadow-md group-focus-within:block group-hover:block",
157
+ children: item.label
158
+ })]
159
+ }, item.key);
151
160
  })
152
161
  })]
153
162
  }, label);
@@ -1 +1 @@
1
- {"version":3,"file":"DynamicVariables.js","sources":["../../../node_modules/lucide-react/dist/esm/icons/braces.mjs","../../../src/v2/components/DynamicVariables/utils.js","../../../src/v2/components/DynamicVariables/index.jsx"],"sourcesContent":["/**\n * @license lucide-react v1.24.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createLucideIcon from '../createLucideIcon.mjs';\n\nconst __iconNode = [\n [\n \"path\",\n { d: \"M8 3H7a2 2 0 0 0-2 2v5a2 2 0 0 1-2 2 2 2 0 0 1 2 2v5c0 1.1.9 2 2 2h1\", key: \"ezmyqa\" }\n ],\n [\n \"path\",\n {\n d: \"M16 21h1a2 2 0 0 0 2-2v-5c0-1.1.9-2 2-2a2 2 0 0 1-2-2V5a2 2 0 0 0-2-2h-1\",\n key: \"e1hn23\"\n }\n ]\n];\nconst Braces = createLucideIcon(\"braces\", __iconNode);\n\nexport { __iconNode, Braces as default };\n//# sourceMappingURL=braces.mjs.map\n","import { findBy } from \"neetocist\";\nimport { prop, isEmpty, uniqBy, mergeLeft } from \"ramda\";\n\nexport const parseVariables = (variableArr = []) => {\n const uncategorized = [];\n const groupedVariables = [];\n const categorySet = new Set();\n\n variableArr.forEach(variable => {\n const { category, label, variables } = variable;\n if (category && variables) {\n const parsedVariables = variables.map(\n mergeLeft({ category, categoryLabel: label })\n );\n\n if (!categorySet.has(category)) {\n categorySet.add(category);\n groupedVariables.push({ label, variables: parsedVariables });\n } else {\n const existingGroup = findBy({ label }, groupedVariables);\n\n existingGroup.variables = uniqBy(\n prop(\"key\"),\n existingGroup.variables.concat(parsedVariables)\n );\n }\n } else {\n uncategorized.push(variable);\n }\n });\n\n if (!isEmpty(uncategorized)) {\n groupedVariables.push({\n label: !isEmpty(groupedVariables) ? \"Others\" : null,\n variables: uncategorized,\n });\n }\n\n return groupedVariables;\n};\n","import { Button, cn, DropdownMenu, Typography } from \"@bigbinary/neeto-atoms\";\nimport { Braces } from \"lucide-react\";\nimport { noop } from \"neetocist\";\nimport { joinHyphenCase } from \"neetocommons/v2/utils/general\";\nimport PropTypes from \"prop-types\";\nimport { isEmpty } from \"ramda\";\n\nimport { parseVariables } from \"./utils\";\n\nconst DynamicVariables = ({\n onVariableClick = noop,\n variables = [],\n buttonProps,\n ...dropdownProps\n}) => {\n if (isEmpty(variables)) return null;\n\n const parsedVariables = parseVariables(variables);\n\n return (\n // End-aligned with collision padding: the trigger usually sits at the\n // content's right edge (e.g. the editor's variables button), so a\n // start-aligned panel would hang past the viewport and get clipped.\n <DropdownMenu\n position=\"bottom-end\"\n customTarget={\n // The inline-flex wrapper keeps the popper anchor button-sized;\n // otherwise the trigger element can stretch with its container and\n // end-align the panel far past the visible button.\n <div className=\"inline-flex\">\n <Button\n data-testid=\"dynamic-variables-button\"\n icon={Braces}\n size=\"icon\"\n variant=\"outline\"\n {...buttonProps}\n />\n </div>\n }\n {...dropdownProps}\n dropdownProps={{\n collisionPadding: 8,\n ...dropdownProps?.dropdownProps,\n // w-max frees the popup from the content wrapper's default\n // trigger-width lock (which clips the chip grid via its\n // overflow-x-hidden). Merge it last so a consumer's className\n // (e.g. SubjectField's overflow-y-auto) augments rather than\n // clobbers the width.\n className: cn(\"w-max\", dropdownProps?.dropdownProps?.className),\n }}\n >\n {/* Groups own their label-to-chips gap; the outer column spaces the\n groups themselves (the editor's old h6-based margin rule no longer\n matches now that the label is a caption span). */}\n <div\n className=\"flex max-w-[22.5rem] min-w-64 flex-col gap-3 p-3\"\n data-testid=\"dynamic-variables-list\"\n >\n {parsedVariables.map(({ label, variables }) => (\n <div className=\"flex flex-col gap-1.5\" key={label}>\n {label && (\n <div className=\"flex flex-row items-center gap-x-2\">\n {/* Group label, not a heading: caption keeps the v1 12px;\n medium weight so the uppercase run still reads muted. */}\n <Typography\n className=\"uppercase\"\n color=\"muted\"\n variant=\"caption\"\n weight=\"medium\"\n >\n {label}\n </Typography>\n <hr className=\"border-border flex flex-grow\" />\n </div>\n )}\n <div\n className=\"flex flex-wrap items-center gap-2\"\n data-testid={joinHyphenCase(\"dynamic-variables-list\", label)}\n >\n {variables.map(item => (\n <DropdownMenu.MenuItem\n className=\"border-border text-foreground hover:border-primary hover:text-primary focus-visible:border-primary focus-visible:text-primary cursor-pointer rounded-md border px-1.5 py-1 text-start text-sm leading-tight transition-colors select-none focus:outline-none\"\n key={item.label}\n data-testid={joinHyphenCase(\n \"dynamic-variables-list-item\",\n item.label\n )}\n onClick={() => onVariableClick(item)}\n >\n {item.label}\n </DropdownMenu.MenuItem>\n ))}\n </div>\n </div>\n ))}\n </div>\n </DropdownMenu>\n );\n};\n\nDynamicVariables.propTypes = {\n onVariableClick: PropTypes.func,\n variables: PropTypes.arrayOf(\n PropTypes.shape({ label: PropTypes.string, key: PropTypes.string })\n ),\n};\n\nexport default DynamicVariables;\n"],"names":["createLucideIcon","parseVariables","variableArr","arguments","length","undefined","uncategorized","groupedVariables","categorySet","Set","forEach","variable","category","label","variables","parsedVariables","map","mergeLeft","categoryLabel","has","add","push","existingGroup","findBy","uniqBy","prop","concat","isEmpty","DynamicVariables","_ref","_dropdownProps$dropdo","_ref$onVariableClick","onVariableClick","noop","_ref$variables","buttonProps","dropdownProps","_objectWithoutProperties","_excluded","_jsx","DropdownMenu","_objectSpread","position","customTarget","className","children","Button","icon","Braces","size","variant","collisionPadding","cn","_ref2","_jsxs","Typography","color","weight","joinHyphenCase","item","MenuItem","onClick"],"mappings":"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","x_google_ignoreList":[0]}
1
+ {"version":3,"file":"DynamicVariables.js","sources":["../../../node_modules/lucide-react/dist/esm/icons/braces.mjs","../../../src/v2/components/DynamicVariables/constants.js","../../../src/v2/components/DynamicVariables/utils.js","../../../src/v2/components/DynamicVariables/index.jsx"],"sourcesContent":["/**\n * @license lucide-react v1.24.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createLucideIcon from '../createLucideIcon.mjs';\n\nconst __iconNode = [\n [\n \"path\",\n { d: \"M8 3H7a2 2 0 0 0-2 2v5a2 2 0 0 1-2 2 2 2 0 0 1 2 2v5c0 1.1.9 2 2 2h1\", key: \"ezmyqa\" }\n ],\n [\n \"path\",\n {\n d: \"M16 21h1a2 2 0 0 0 2-2v-5c0-1.1.9-2 2-2a2 2 0 0 1-2-2V5a2 2 0 0 0-2-2h-1\",\n key: \"e1hn23\"\n }\n ]\n];\nconst Braces = createLucideIcon(\"braces\", __iconNode);\n\nexport { __iconNode, Braces as default };\n//# sourceMappingURL=braces.mjs.map\n","export const MAX_LABEL_LENGTH = 100;\n","import { findBy } from \"neetocist\";\nimport { prop, isEmpty, uniqBy, mergeLeft } from \"ramda\";\n\nexport const parseVariables = (variableArr = []) => {\n const uncategorized = [];\n const groupedVariables = [];\n const categorySet = new Set();\n\n variableArr.forEach(variable => {\n const { category, label, variables } = variable;\n if (category && variables) {\n const parsedVariables = variables.map(\n mergeLeft({ category, categoryLabel: label })\n );\n\n if (!categorySet.has(category)) {\n categorySet.add(category);\n groupedVariables.push({ label, variables: parsedVariables });\n } else {\n const existingGroup = findBy({ label }, groupedVariables);\n\n existingGroup.variables = uniqBy(\n prop(\"key\"),\n existingGroup.variables.concat(parsedVariables)\n );\n }\n } else {\n uncategorized.push(variable);\n }\n });\n\n if (!isEmpty(uncategorized)) {\n groupedVariables.push({\n label: !isEmpty(groupedVariables) ? \"Others\" : null,\n variables: uncategorized,\n });\n }\n\n return groupedVariables;\n};\n","import { Button, cn, DropdownMenu, Typography } from \"@bigbinary/neeto-atoms\";\nimport { Braces } from \"lucide-react\";\nimport { noop, _truncate } from \"neetocist\";\nimport { joinHyphenCase } from \"neetocommons/v2/utils/general\";\nimport PropTypes from \"prop-types\";\nimport { isEmpty } from \"ramda\";\n\nimport { MAX_LABEL_LENGTH } from \"./constants\";\nimport { parseVariables } from \"./utils\";\n\nconst DynamicVariables = ({\n onVariableClick = noop,\n variables = [],\n buttonProps,\n ...dropdownProps\n}) => {\n if (isEmpty(variables)) return null;\n\n const parsedVariables = parseVariables(variables);\n\n return (\n // End-aligned with collision padding: the trigger usually sits at the\n // content's right edge (e.g. the editor's variables button), so a\n // start-aligned panel would hang past the viewport and get clipped.\n <DropdownMenu\n position=\"bottom-end\"\n customTarget={\n // The inline-flex wrapper keeps the popper anchor button-sized;\n // otherwise the trigger element can stretch with its container and\n // end-align the panel far past the visible button.\n <div className=\"inline-flex\">\n <Button\n data-testid=\"dynamic-variables-button\"\n icon={Braces}\n size=\"icon\"\n variant=\"outline\"\n {...buttonProps}\n />\n </div>\n }\n {...dropdownProps}\n dropdownProps={{\n collisionPadding: 8,\n ...dropdownProps?.dropdownProps,\n // w-max frees the popup from the content wrapper's default\n // trigger-width lock (which clips the chip grid via its\n // overflow-x-hidden). Merge it last so a consumer's className\n // (e.g. SubjectField's overflow-y-auto) augments rather than\n // clobbers the width.\n className: cn(\"w-max\", dropdownProps?.dropdownProps?.className),\n }}\n >\n {/* Groups own their label-to-chips gap; the outer column spaces the\n groups themselves (the editor's old h6-based margin rule no longer\n matches now that the label is a caption span). */}\n <div\n className=\"flex max-w-[22.5rem] min-w-64 flex-col gap-3 p-3\"\n data-testid=\"dynamic-variables-list\"\n >\n {parsedVariables.map(({ label, variables }) => (\n <div className=\"flex flex-col gap-1.5\" key={label}>\n {label && (\n <div className=\"flex flex-row items-center gap-x-2\">\n {/* Group label, not a heading: caption keeps the v1 12px;\n medium weight so the uppercase run still reads muted. */}\n <Typography\n className=\"uppercase\"\n color=\"muted\"\n variant=\"caption\"\n weight=\"medium\"\n >\n {label}\n </Typography>\n <hr className=\"border-border flex flex-grow\" />\n </div>\n )}\n <div\n className=\"flex flex-wrap items-center gap-2\"\n data-testid={joinHyphenCase(\"dynamic-variables-list\", label)}\n >\n {variables.map(item => (\n <div className=\"group relative max-w-full\" key={item.key}>\n <DropdownMenu.MenuItem\n className=\"border-border text-foreground hover:border-primary hover:text-primary focus-visible:border-primary focus-visible:text-primary max-w-full cursor-pointer rounded-md border px-1.5 py-1 text-start text-sm leading-tight transition-colors select-none focus:outline-none [&>span]:[overflow-wrap:anywhere] [&>span]:whitespace-normal\"\n data-testid={joinHyphenCase(\n \"dynamic-variables-list-item\",\n item.label\n )}\n onClick={() => onVariableClick(item)}\n >\n {_truncate(item.label, MAX_LABEL_LENGTH)}\n </DropdownMenu.MenuItem>\n {item.label?.length > MAX_LABEL_LENGTH && (\n <span className=\"bg-popover text-popover-foreground border-border pointer-events-none absolute end-0 bottom-full z-50 mb-1 hidden w-80 rounded-md border p-2 text-xs shadow-md group-focus-within:block group-hover:block\">\n {item.label}\n </span>\n )}\n </div>\n ))}\n </div>\n </div>\n ))}\n </div>\n </DropdownMenu>\n );\n};\n\nDynamicVariables.propTypes = {\n onVariableClick: PropTypes.func,\n variables: PropTypes.arrayOf(\n PropTypes.shape({ label: PropTypes.string, key: PropTypes.string })\n ),\n};\n\nexport default DynamicVariables;\n"],"names":["createLucideIcon","MAX_LABEL_LENGTH","parseVariables","variableArr","arguments","length","undefined","uncategorized","groupedVariables","categorySet","Set","forEach","variable","category","label","variables","parsedVariables","map","mergeLeft","categoryLabel","has","add","push","existingGroup","findBy","uniqBy","prop","concat","isEmpty","DynamicVariables","_ref","_dropdownProps$dropdo","_ref$onVariableClick","onVariableClick","noop","_ref$variables","buttonProps","dropdownProps","_objectWithoutProperties","_excluded","_jsx","DropdownMenu","_objectSpread","position","customTarget","className","children","Button","icon","Braces","size","variant","collisionPadding","cn","_ref2","_jsxs","Typography","color","weight","joinHyphenCase","item","_item$label","MenuItem","onClick","_truncate","key"],"mappings":"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","x_google_ignoreList":[0]}
@@ -19,6 +19,8 @@ var _typeof = require('@babel/runtime/helpers/typeof');
19
19
  var jsxRuntime = require('react/jsx-runtime');
20
20
  var v2_SendToFields = require('./SendToFields.js');
21
21
  var _slicedToArray = require('@babel/runtime/helpers/slicedToArray');
22
+ var primitives = require('@bigbinary/neeto-atoms/primitives');
23
+ var mail = require('../mail-Di35Ay-Z.js');
22
24
  var general = require('@bigbinary/neeto-commons-frontend/v2/utils/general');
23
25
  var v2_DynamicVariables = require('./DynamicVariables.js');
24
26
  var v2_Header = require('./Header.js');
@@ -35,7 +37,6 @@ require('../_commonjsHelpers-BJu3ubxk.js');
35
37
  require('stream');
36
38
  require('@babel/runtime/helpers/objectWithoutProperties');
37
39
  require('./Breadcrumbs.js');
38
- require('@bigbinary/neeto-atoms/primitives');
39
40
  require('react-router-dom');
40
41
  require('./HelpPopover.js');
41
42
  require('../circle-question-mark-BijjM_4y.js');
@@ -120,22 +121,24 @@ var EDITOR_ADDONS = ["highlight", "emoji", "code-block", "block-quote", "image-u
120
121
  var EmailFormContext = /*#__PURE__*/React.createContext({
121
122
  showSendToField: false,
122
123
  showSendToAsRadio: false,
124
+ showSendToAsSelect: false,
123
125
  showReplyToField: false,
124
126
  showCcField: false,
125
127
  showBccField: false
126
128
  });
127
129
 
128
- 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; }
129
- 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; }
130
+ function ownKeys$4(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
131
+ function _objectSpread$4(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys$4(Object(t), true).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys$4(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
130
132
  var getValidationSchema = function getValidationSchema(_ref) {
131
133
  var showSendToField = _ref.showSendToField,
132
134
  showReplyToField = _ref.showReplyToField,
133
135
  showSendToAsRadio = _ref.showSendToAsRadio,
136
+ showSendToAsSelect = _ref.showSendToAsSelect,
134
137
  customValidations = _ref.customValidations,
135
138
  maxEmails = _ref.maxEmails;
136
139
  var schema = EMAIL_FORM_VALIDATION_SCHEMA.clone();
137
140
  if (showSendToField) {
138
- schema = schema.concat(showSendToAsRadio ? SEND_TO_ID_FIELD_VALIDATION : sendToFieldValidation(maxEmails));
141
+ schema = schema.concat(showSendToAsRadio || showSendToAsSelect ? SEND_TO_ID_FIELD_VALIDATION : sendToFieldValidation(maxEmails));
139
142
  }
140
143
  if (showReplyToField) schema = schema.concat(REPLY_TO_FIELD_VALIDATION);
141
144
  var isYupObject = customValidations.type === "object";
@@ -150,10 +153,10 @@ var getValidationSchema = function getValidationSchema(_ref) {
150
153
  var getReplyToFieldLabelProps = function getReplyToFieldLabelProps(_ref2) {
151
154
  var popoverProps = _ref2.popoverProps;
152
155
  return {
153
- helpIconProps: _objectSpread$3({
156
+ helpIconProps: _objectSpread$4({
154
157
  className: "reply-to-help-icon"
155
158
  }, neetoCist.isPresent(popoverProps) ? {
156
- popoverProps: _objectSpread$3(_objectSpread$3({}, popoverProps), {}, {
159
+ popoverProps: _objectSpread$4(_objectSpread$4({}, popoverProps), {}, {
157
160
  description: popoverProps.description || i18next.t("neetoMolecules.emailForm.tooltips.replyTo")
158
161
  })
159
162
  } : {
@@ -251,6 +254,77 @@ var SendToField = function SendToField(_ref) {
251
254
  });
252
255
  };
253
256
 
257
+ 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; }
258
+ 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; }
259
+ var renderOptionLabel = function renderOptionLabel(_ref) {
260
+ var label = _ref.label;
261
+ return /*#__PURE__*/jsxRuntime.jsxs("span", {
262
+ className: "flex min-w-0 items-center gap-2",
263
+ children: [/*#__PURE__*/jsxRuntime.jsx(mail.Mail, {
264
+ "aria-hidden": true,
265
+ className: "text-muted-foreground size-4 shrink-0"
266
+ }), /*#__PURE__*/jsxRuntime.jsx("span", {
267
+ className: "truncate",
268
+ title: label,
269
+ children: label
270
+ })]
271
+ });
272
+ };
273
+ var SendToQuestionField = function SendToQuestionField(_ref2) {
274
+ var options = _ref2.options;
275
+ var _useTranslation = reactI18next.useTranslation(),
276
+ t = _useTranslation.t;
277
+ var _useField = formik.useField("sendToId"),
278
+ _useField2 = _slicedToArray(_useField, 3),
279
+ field = _useField2[0],
280
+ meta = _useField2[1],
281
+ setValue = _useField2[2].setValue;
282
+ var singleOptionValue = options.length === 1 ? options[0].value : undefined;
283
+ var selectedOption = neetoCist.findBy({
284
+ value: field.value
285
+ }, options);
286
+ React.useEffect(function () {
287
+ if (singleOptionValue !== undefined && field.value !== singleOptionValue) {
288
+ setValue(singleOptionValue);
289
+ }
290
+ }, [field.value, setValue, singleOptionValue]);
291
+ var fieldProps = {
292
+ required: true,
293
+ label: t("neetoMolecules.emailForm.labels.getEmailAddressFrom"),
294
+ labelProps: {
295
+ className: "text-muted-foreground font-normal [&>.text-destructive]:hidden"
296
+ },
297
+ className: "grid items-center gap-3 sm:grid-cols-[auto_minmax(0,1fr)]",
298
+ size: "large"
299
+ };
300
+ return /*#__PURE__*/jsxRuntime.jsxs(primitives.FieldSet, {
301
+ className: "w-full gap-3 p-0",
302
+ "data-testid": "send-to-id",
303
+ children: [/*#__PURE__*/jsxRuntime.jsxs(primitives.FieldLegend, {
304
+ className: "flex items-center gap-2",
305
+ variant: "label",
306
+ children: [t("neetoMolecules.emailForm.labels.sendTo"), /*#__PURE__*/jsxRuntime.jsx("span", {
307
+ "aria-hidden": true,
308
+ className: "text-destructive",
309
+ children: "*"
310
+ })]
311
+ }), options.length === 1 ? /*#__PURE__*/jsxRuntime.jsx(neetoAtoms.Input, _objectSpread$3(_objectSpread$3({}, fieldProps), {}, {
312
+ readOnly: true,
313
+ error: meta.touched ? meta.error : undefined,
314
+ prefix: /*#__PURE__*/jsxRuntime.jsx(mail.Mail, {
315
+ "aria-hidden": true
316
+ }),
317
+ value: (selectedOption === null || selectedOption === void 0 ? void 0 : selectedOption.label) || ""
318
+ })) : /*#__PURE__*/jsxRuntime.jsx(formik$1.Select, _objectSpread$3(_objectSpread$3({}, _objectSpread$3(_objectSpread$3({}, fieldProps), {}, {
319
+ options: options
320
+ })), {}, {
321
+ formatOptionLabel: renderOptionLabel,
322
+ isSearchable: false,
323
+ name: "sendToId"
324
+ }))]
325
+ });
326
+ };
327
+
254
328
  var SubjectField = function SubjectField(_ref) {
255
329
  var name = _ref.name,
256
330
  text = _ref.text,
@@ -340,6 +414,7 @@ var EmailForm = function EmailForm(_ref) {
340
414
  var _useContext = React.useContext(EmailFormContext),
341
415
  showSendToField = _useContext.showSendToField,
342
416
  showSendToAsRadio = _useContext.showSendToAsRadio,
417
+ showSendToAsSelect = _useContext.showSendToAsSelect,
343
418
  showReplyToField = _useContext.showReplyToField,
344
419
  showCcField = _useContext.showCcField,
345
420
  showBccField = _useContext.showBccField;
@@ -355,8 +430,9 @@ var EmailForm = function EmailForm(_ref) {
355
430
  });
356
431
  var disabled = ramda.equals(normalizedValues, normalizedDefaultValues);
357
432
  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;
433
+ var showSendToSelectField = showSendToField && showSendToAsSelect;
434
+ var showSendToRadioField = showSendToField && showSendToAsRadio && !showSendToSelectField && neetoCist.isNotEmpty(sendToFieldOptions);
435
+ var showSendToTextField = showSendToField && !showSendToSelectField && !showSendToRadioField;
360
436
  return /*#__PURE__*/jsxRuntime.jsxs("div", {
361
437
  "data-testid": "email-form",
362
438
  className: classnames("flex flex-1 flex-col items-start gap-2 !pb-0", _defineProperty({}, className, className)),
@@ -364,7 +440,9 @@ var EmailForm = function EmailForm(_ref) {
364
440
  className: "w-full grow",
365
441
  children: showFields && /*#__PURE__*/jsxRuntime.jsxs("div", {
366
442
  className: "flex w-full flex-col items-start justify-start gap-5",
367
- children: [showSendToRadioField && /*#__PURE__*/jsxRuntime.jsx(formik$1.RadioGroup, {
443
+ children: [showSendToSelectField && /*#__PURE__*/jsxRuntime.jsx(SendToQuestionField, {
444
+ options: sendToFieldOptions
445
+ }), showSendToRadioField && /*#__PURE__*/jsxRuntime.jsx(formik$1.RadioGroup, {
368
446
  className: "pb-2",
369
447
  "data-testid": "send-to-id",
370
448
  label: t("neetoMolecules.emailForm.labels.sendTo"),
@@ -474,6 +552,8 @@ var EmailFormComponent = function EmailFormComponent(_ref) {
474
552
  showReplyToField = _ref$showReplyToField === void 0 ? false : _ref$showReplyToField,
475
553
  _ref$showSendToAsRadi = _ref.showSendToAsRadio,
476
554
  showSendToAsRadio = _ref$showSendToAsRadi === void 0 ? false : _ref$showSendToAsRadi,
555
+ _ref$showSendToAsSele = _ref.showSendToAsSelect,
556
+ showSendToAsSelect = _ref$showSendToAsSele === void 0 ? false : _ref$showSendToAsSele,
477
557
  _ref$blockNavigation = _ref.blockNavigation,
478
558
  blockNavigation = _ref$blockNavigation === void 0 ? true : _ref$blockNavigation,
479
559
  _ref$showCcField = _ref.showCcField,
@@ -512,6 +592,7 @@ var EmailFormComponent = function EmailFormComponent(_ref) {
512
592
  showCcField: showCcField,
513
593
  showReplyToField: showReplyToField,
514
594
  showSendToAsRadio: showSendToAsRadio,
595
+ showSendToAsSelect: showSendToAsSelect,
515
596
  showSendToField: showSendToField,
516
597
  validationSchema: validationSchema,
517
598
  children: function children(_ref2) {
@@ -577,6 +658,8 @@ var EmailFormProvider = function EmailFormProvider(_ref) {
577
658
  showReplyToField = _ref$showReplyToField === void 0 ? false : _ref$showReplyToField,
578
659
  _ref$showSendToAsRadi = _ref.showSendToAsRadio,
579
660
  showSendToAsRadio = _ref$showSendToAsRadi === void 0 ? false : _ref$showSendToAsRadi,
661
+ _ref$showSendToAsSele = _ref.showSendToAsSelect,
662
+ showSendToAsSelect = _ref$showSendToAsSele === void 0 ? false : _ref$showSendToAsSele,
580
663
  _ref$showCcField = _ref.showCcField,
581
664
  showCcField = _ref$showCcField === void 0 ? false : _ref$showCcField,
582
665
  _ref$showBccField = _ref.showBccField,
@@ -589,6 +672,7 @@ var EmailFormProvider = function EmailFormProvider(_ref) {
589
672
  value: {
590
673
  showSendToField: showSendToField,
591
674
  showSendToAsRadio: showSendToAsRadio,
675
+ showSendToAsSelect: showSendToAsSelect,
592
676
  showReplyToField: showReplyToField,
593
677
  showCcField: showCcField,
594
678
  showBccField: showBccField
@@ -600,6 +684,7 @@ var EmailFormProvider = function EmailFormProvider(_ref) {
600
684
  showSendToField: showSendToField,
601
685
  showReplyToField: showReplyToField,
602
686
  showSendToAsRadio: showSendToAsRadio,
687
+ showSendToAsSelect: showSendToAsSelect,
603
688
  customValidations: customValidations,
604
689
  maxEmails: maxEmails
605
690
  }),
@@ -1 +1 @@
1
- {"version":3,"file":"EmailForm.js","sources":["../../../src/v2/components/EmailForm/constants.js","../../../src/v2/components/EmailForm/contexts/EmailForm.js","../../../src/v2/components/EmailForm/utils.js","../../../src/v2/components/EmailForm/ReplyToField.jsx","../../../src/v2/components/EmailForm/SendToField.jsx","../../../src/v2/components/EmailForm/SubjectField.jsx","../../../src/v2/components/EmailForm/EmailForm.jsx","../../../src/v2/components/EmailForm/EmailFormComponent/index.jsx","../../../src/v2/components/EmailForm/EmailFormProvider.jsx"],"sourcesContent":["import { t } from \"i18next\";\nimport { isEditorEmpty } from \"neetoeditor/v2\";\nimport { prop } from \"ramda\";\nimport * as yup from \"yup\";\n\nexport const INITIAL_FORM_VALUES = {\n sendTo: [],\n sendToId: \"\",\n sendToCc: [],\n sendToBcc: [],\n replyTo: \"\",\n showCopyEmails: false,\n subject: \"\",\n message: \"\",\n isEnabled: false,\n};\n\nexport const EMAIL_FORM_VALIDATION_SCHEMA = yup.object({\n subject: yup\n .string()\n .required(t(\"neetoMolecules.emailForm.errors.subjectRequired\")),\n message: yup\n .string()\n .test(\n \"message\",\n t(\"neetoMolecules.emailForm.errors.messageRequired\"),\n value => !isEditorEmpty(value)\n ),\n});\n\nexport const sendToFieldValidation = maxEmails => {\n const validation = yup\n .array()\n .test(\n \"all-emails-valid\",\n t(\"neetoMolecules.emailForm.errors.invalidEmailAddress\"),\n emails => emails?.every(prop(\"valid\"))\n )\n .test(\n \"max-email-count\",\n t(\"neetoMolecules.emailForm.errors.maxEmails\", { count: maxEmails }),\n emails => emails?.length <= maxEmails\n );\n\n return yup.object({\n sendTo: validation\n .min(\n 1,\n t(\"neetoMolecules.emailForm.errors.required\", {\n entity: t(\"neetoMolecules.emailForm.fields.sendToEmailAddress\"),\n })\n )\n .nullable(),\n sendToCc: validation,\n sendToBcc: validation,\n });\n};\n\nexport const SEND_TO_ID_FIELD_VALIDATION = yup.object({\n sendToId: yup.string().required(\n t(\"neetoMolecules.emailForm.errors.required\", {\n entity: t(\"neetoMolecules.emailForm.labels.sendTo\"),\n })\n ),\n});\n\nexport const REPLY_TO_FIELD_VALIDATION = yup.object({\n replyTo: yup\n .string()\n .nullable()\n .email(t(\"neetoMolecules.emailForm.errors.invalidEmailAddress\"))\n .required(\n t(\"neetoMolecules.emailForm.errors.required\", {\n entity: t(\"neetoMolecules.emailForm.fields.replyToEmailAddress\"),\n })\n ),\n});\n\nexport const EDITOR_ADDONS = [\n \"highlight\",\n \"emoji\",\n \"code-block\",\n \"block-quote\",\n \"image-upload\",\n \"divider\",\n \"video-embed\",\n];\n\nexport const ALLOWED_FILE_PICKER_TYPES = [\".csv\"];\n","/* eslint-disable @bigbinary/neeto/use-zustand-for-global-state-management */\nimport { createContext } from \"react\";\n\nconst EmailFormContext = createContext({\n showSendToField: false,\n showSendToAsRadio: false,\n showReplyToField: false,\n showCcField: false,\n showBccField: false,\n});\n\nexport { EmailFormContext };\n","import { t } from \"i18next\";\nimport { isPresent } from \"neetocist\";\n\nimport {\n EMAIL_FORM_VALIDATION_SCHEMA,\n REPLY_TO_FIELD_VALIDATION,\n sendToFieldValidation,\n SEND_TO_ID_FIELD_VALIDATION,\n} from \"./constants\";\n\nexport const getValidationSchema = ({\n showSendToField,\n showReplyToField,\n showSendToAsRadio,\n customValidations,\n maxEmails,\n}) => {\n let schema = EMAIL_FORM_VALIDATION_SCHEMA.clone();\n\n if (showSendToField) {\n schema = schema.concat(\n showSendToAsRadio\n ? SEND_TO_ID_FIELD_VALIDATION\n : sendToFieldValidation(maxEmails)\n );\n }\n\n if (showReplyToField) schema = schema.concat(REPLY_TO_FIELD_VALIDATION);\n\n const isYupObject = customValidations.type === \"object\";\n\n if (isYupObject) {\n const customFields = customValidations.fields || {};\n schema = schema.shape(customFields);\n } else if (typeof customValidations === \"object\") {\n schema = schema.shape(customValidations);\n }\n\n return schema;\n};\n\nexport const getReplyToFieldLabelProps = ({ popoverProps }) => ({\n helpIconProps: {\n className: \"reply-to-help-icon\",\n ...(isPresent(popoverProps)\n ? {\n popoverProps: {\n ...popoverProps,\n description:\n popoverProps.description ||\n t(\"neetoMolecules.emailForm.tooltips.replyTo\"),\n },\n }\n : {\n tooltipProps: {\n content: t(\"neetoMolecules.emailForm.tooltips.replyTo\"),\n },\n }),\n },\n});\n\nexport const resolveContent = (content, func, variable) => {\n if (typeof func === \"function\") {\n return func(content, variable);\n }\n\n return content;\n};\n\nexport const normalizeHtmlString = str => {\n if (typeof str !== \"string\") return str;\n\n return str\n .replace(/\\uFEFF/g, \"\")\n .replace(/\\r\\n|\\r/g, \"\\n\")\n .replace(/&nbsp;/g, \" \")\n .replace(/[\\t ]+/g, \" \")\n .replace(/\\s*\\n\\s*/g, \"\\n\")\n .replace(/\\n+/g, \"\\n\")\n .replace(/>\\s+</g, \"><\")\n .trim();\n};\n","import { Input, Select } from \"@bigbinary/neeto-atoms/formik\";\nimport { useFormikContext } from \"formik\";\nimport { isNotEmpty } from \"neetocist\";\nimport { useTranslation } from \"react-i18next\";\n\nimport { getReplyToFieldLabelProps } from \"./utils\";\n\nconst ReplyToField = ({ options = [], popoverProps = {} }) => {\n const { t } = useTranslation();\n const { setFieldValue } = useFormikContext();\n\n const isDropdownField = isNotEmpty(options);\n const labelProps = getReplyToFieldLabelProps({ popoverProps });\n\n if (isDropdownField) {\n return (\n <Select\n {...{ labelProps, options }}\n isClearable\n className=\"w-full\"\n data-testid=\"reply-to-select-field\"\n label={t(\"neetoMolecules.emailForm.labels.replyTo\")}\n name=\"replyTo\"\n size=\"large\"\n onChange={value => setFieldValue(\"replyTo\", value ?? \"\")}\n />\n );\n }\n\n return (\n <Input\n {...{ labelProps }}\n autoFocus\n required\n className=\"w-full\"\n data-testid=\"reply-to-input-field\"\n label={t(\"neetoMolecules.emailForm.labels.replyTo\")}\n name=\"replyTo\"\n placeholder={t(\"neetoMolecules.emailForm.placeholders.emailPlaceholder\")}\n size=\"large\"\n onChange={event =>\n setFieldValue(\"replyTo\", event.target.value?.toLowerCase())\n }\n />\n );\n};\n\nexport default ReplyToField;\n","import { useTranslation } from \"react-i18next\";\n\nimport SendToFields from \"../SendToFields\";\n\nconst SendToField = ({ showBccField, showCcField, showSendToTextField }) => {\n const { t } = useTranslation();\n\n if (!showSendToTextField && !showBccField && !showCcField) return null;\n\n return (\n <SendToFields\n showCcBccButton\n showBccField={showSendToTextField ? false : showBccField}\n showCcField={showSendToTextField ? false : showCcField}\n showSendToField={showSendToTextField}\n bccInputProps={{\n label: t(\"neetoMolecules.emailForm.labels.bCc\"),\n name: \"sendToBcc\",\n placeholder: t(\n \"neetoMolecules.emailForm.placeholders.commaSeparatedEmails\"\n ),\n }}\n ccInputProps={{\n label: t(\"neetoMolecules.emailForm.labels.cc\"),\n name: \"sendToCc\",\n placeholder: t(\n \"neetoMolecules.emailForm.placeholders.commaSeparatedEmails\"\n ),\n }}\n emailInputProps={{\n id: \"sendTo\",\n name: \"sendTo\",\n label: t(\"neetoMolecules.emailForm.labels.sendTo\"),\n placeholder: t(\n \"neetoMolecules.emailForm.placeholders.commaSeparatedEmails\"\n ),\n required: true,\n }}\n />\n );\n};\n\nexport default SendToField;\n","import { useState } from \"react\";\n\nimport { Input } from \"@bigbinary/neeto-atoms\";\nimport { withEventTargetValue } from \"neetocommons/v2/utils/general\";\nimport { useTranslation } from \"react-i18next\";\n\nimport DynamicVariables from \"../DynamicVariables\";\n\nconst SubjectField = ({\n name,\n text,\n updateText,\n subjectVariables = [],\n error,\n required = false,\n onBlur,\n}) => {\n const [isFieldFocusedOnce, setIsFieldFocusedOnce] = useState(false);\n\n const { t } = useTranslation();\n\n const tagClickHandler = ({ key: slug, category }) => {\n const inputElement = document.querySelector(`[name=${name}]`);\n const splitIndex =\n isFieldFocusedOnce && inputElement\n ? inputElement.selectionEnd\n : text.length;\n\n const variable = category ? `${category}.${slug}` : slug;\n const updatedSubject = [\n text.slice(0, splitIndex),\n ` {{${variable}}}`,\n text.slice(splitIndex),\n ].join(\"\");\n updateText(updatedSubject);\n };\n\n return (\n <Input\n {...{ error, name, onBlur, required }}\n label={t(\"neetoMolecules.emailForm.labels.subject\")}\n placeholder={t(\"neetoMolecules.emailForm.placeholders.subject\")}\n size=\"large\"\n value={text}\n suffix={\n <div className=\"me-2 inline-flex\">\n <DynamicVariables\n buttonProps={{ className: \"self-center\" }}\n dropdownProps={{ className: \"overflow-y-auto\" }}\n variables={subjectVariables}\n onVariableClick={tagClickHandler}\n />\n </div>\n }\n onChange={withEventTargetValue(updateText)}\n onFocus={() => setIsFieldFocusedOnce(true)}\n />\n );\n};\n\nexport default SubjectField;\n","import { useContext } from \"react\";\n\nimport { Button } from \"@bigbinary/neeto-atoms\";\nimport { ActionBlock, RadioGroup } from \"@bigbinary/neeto-atoms/formik\";\nimport classnames from \"classnames\";\nimport { Field, useFormikContext } from \"formik\";\nimport { notEqualsDeep, isNotEmpty } from \"neetocist\";\nimport { FormikEditor } from \"neetoeditor/v2\";\nimport PropTypes from \"prop-types\";\nimport { equals } from \"ramda\";\nimport { useTranslation } from \"react-i18next\";\n\nimport { EDITOR_ADDONS } from \"./constants\";\nimport { EmailFormContext } from \"./contexts/EmailForm\";\nimport ReplyToField from \"./ReplyToField\";\nimport SendToField from \"./SendToField\";\nimport SubjectField from \"./SubjectField\";\nimport { normalizeHtmlString } from \"./utils\";\n\nconst EmailForm = ({\n messageVariables = [],\n subjectVariables = [],\n handleCancel,\n handleResetToDefault,\n isLoading,\n replyToFieldProps,\n sendToFieldProps,\n replyToOptions,\n sendToOptions = [],\n isUpdating = false,\n isResetting = false,\n showFields = true,\n className = \"\",\n editorAddons = EDITOR_ADDONS,\n showResetToDefaultButton,\n editorRef = null,\n defaultValues = {},\n}) => {\n const { t } = useTranslation();\n\n const {\n showSendToField,\n showSendToAsRadio,\n showReplyToField,\n showCcField,\n showBccField,\n } = useContext(EmailFormContext);\n\n const { setFieldValue, values, resetForm } = useFormikContext();\n\n const normalizedValues = {\n ...values,\n message: normalizeHtmlString(values.message),\n };\n\n const normalizedDefaultValues = {\n ...defaultValues,\n message: normalizeHtmlString(defaultValues?.message),\n };\n\n const disabled = equals(normalizedValues, normalizedDefaultValues);\n\n const sendToFieldOptions = sendToFieldProps?.options || sendToOptions;\n const showSendToRadioField =\n showSendToField && showSendToAsRadio && isNotEmpty(sendToFieldOptions);\n\n const showSendToTextField = showSendToField && !showSendToRadioField;\n\n return (\n <div\n data-testid=\"email-form\"\n className={classnames(\"flex flex-1 flex-col items-start gap-2 !pb-0\", {\n [className]: className,\n })}\n >\n <div className=\"w-full grow\">\n {showFields && (\n <div className=\"flex w-full flex-col items-start justify-start gap-5\">\n {showSendToRadioField && (\n <RadioGroup\n className=\"pb-2\"\n data-testid=\"send-to-id\"\n label={t(\"neetoMolecules.emailForm.labels.sendTo\")}\n labelProps={{ required: true }}\n name=\"sendToId\"\n >\n {sendToFieldOptions.map(({ label, value }) => (\n <RadioGroup.Item {...{ label, value }} key={value} />\n ))}\n </RadioGroup>\n )}\n <SendToField\n {...{ showBccField, showCcField, showSendToTextField }}\n />\n {showReplyToField && (\n <div className=\"w-full\">\n <ReplyToField options={replyToOptions} {...replyToFieldProps} />\n </div>\n )}\n <Field name=\"subject\">\n {({ field: { value, onBlur }, meta: { error, touched } }) => (\n <div className=\"w-full\">\n <SubjectField\n {...{ onBlur, subjectVariables }}\n required\n error={touched && error ? t(error) : undefined}\n name=\"subject\"\n text={value}\n updateText={text => setFieldValue(\"subject\", text)}\n />\n </div>\n )}\n </Field>\n <div className=\"w-full\" data-testid=\"message-input-container\">\n <FormikEditor\n required\n addons={editorAddons}\n data-testid=\"message-input-field\"\n hideSlashCommands={false}\n id=\"form_message\"\n menuType=\"fixed\"\n name=\"message\"\n placeholder={t(\"neetoMolecules.emailForm.placeholders.message\")}\n ref={editorRef}\n variables={messageVariables}\n shouldUpdate={(nextProps, prevProps) =>\n notEqualsDeep(nextProps.variables, prevProps.variables)\n }\n />\n </div>\n </div>\n )}\n </div>\n <div className=\"bg-background z-10 flex w-full justify-between py-6 lg:sticky lg:bottom-0\">\n <ActionBlock\n cancelButtonProps={{ onClick: handleCancel }}\n isSubmitting={isLoading || isUpdating}\n />\n {showResetToDefaultButton && (\n <div>\n <Button\n {...{ disabled }}\n data-testid=\"reset-to-default-button\"\n label={t(\"neetoMolecules.emailForm.labels.resetToDefault\")}\n loading={isResetting}\n variant=\"secondary\"\n onClick={() => {\n resetForm();\n handleResetToDefault();\n }}\n />\n </div>\n )}\n </div>\n </div>\n );\n};\n\nEmailForm.propTypes = {\n /**\n * This is an array of objects used for templating within the message field. Each object in the array has a **label** and a **key**.\n */\n messageVariables: PropTypes.array,\n /**\n * This is an array of objects used for templating within the subject field. Each object in the array has a **label** and a **key**.\n */\n subjectVariables: PropTypes.array,\n /**\n * This function that gets triggered when the 'Cancel' button is clicked.\n */\n handleCancel: PropTypes.func,\n /**\n * This function that gets triggered when the 'Reset to default' button is clicked.\n */\n handleResetToDefault: PropTypes.func,\n /**\n * This Boolean value, when set to true, triggers the display of a loading indicator on the 'Save changes' button.\"\n */\n isLoading: PropTypes.bool,\n /**\n * This Boolean value, when set to true, triggers the display of a loading indicator on the 'Reset to default' button.\n */\n isResetting: PropTypes.bool,\n /**\n * An array of objects, with each object having **label** and **value** properties. This prop transforms the 'Reply To' field into a dropdown menu with given options. Without this prop, 'Reply To' will be a text input field.\n */\n replyToOptions: PropTypes.array,\n /**\n * An array of objects, with each object having **label** and **value** properties. This prop transforms the 'Send To' field into a radio group with given options. Without this prop, 'Send To' will be a multi email input field.\n */\n sendToOptions: PropTypes.array,\n /**\n * A Boolean flag indicating whether an update operation is currently in progress. When set to `true`, the 'Save changes' button is disabled.\n */\n isUpdating: PropTypes.bool,\n /**\n * To provide additional classnames to the button.\n */\n className: PropTypes.string,\n /**\n * To provide props to the replyToField. Supports options that will\n * be rendered as the reply to options and popover props.\n */\n replyToFieldProps: PropTypes.object,\n /**\n * To provide props to the sendToField. Supports sendTo options.\n */\n sendToFieldProps: PropTypes.object,\n /**\n * This Boolean value, when set to true, shows reset to default button.\n */\n showResetToDefaultButton: PropTypes.bool,\n /**\n * A reference to the editor.\n */\n editorRef: PropTypes.any,\n /**\n * To override the default editor addons\n */\n editorAddons: PropTypes.array,\n /**\n * The default values for the email form.\n */\n defaultValues: PropTypes.object,\n};\n\nexport default EmailForm;\n","import { Tooltip } from \"@bigbinary/neeto-atoms\";\nimport { BlockNavigation, Switch } from \"@bigbinary/neeto-atoms/formik\";\nimport { noop, isNotEmpty } from \"neetocist\";\nimport PropTypes from \"prop-types\";\nimport { isEmpty, pluck } from \"ramda\";\n\nimport { EmailFormProvider, EmailForm, EmailPreview } from \"..\";\nimport Header from \"../../Header\";\nimport MobilePreviewHeader from \"../../MobilePreviewHeader\";\nimport { INITIAL_FORM_VALUES } from \"../constants\";\nimport { resolveContent } from \"../utils\";\n\nconst EmailFormComponent = ({\n onSubmit = noop,\n initialValues = INITIAL_FORM_VALUES,\n children,\n formikProps,\n validationSchema,\n showSendToField = false,\n showReplyToField = false,\n showSendToAsRadio = false,\n blockNavigation = true,\n showCcField = false,\n showBccField = false,\n isLoading = false,\n maxEmails = 10,\n emailFormProps = {},\n emailPreviewProps = {},\n headerProps = {},\n tooltipProps = {},\n switchProps = {},\n mobilePreviewProps = {},\n}) => {\n const { formatBody, formatSubject, bodyVariables, subjectVariables } =\n emailPreviewProps;\n\n const shouldShowFields = values => isEmpty(switchProps) || values.isEnabled;\n\n return (\n <EmailFormProvider\n {...{\n formikProps,\n initialValues,\n maxEmails,\n onSubmit,\n showBccField,\n showCcField,\n showReplyToField,\n showSendToAsRadio,\n showSendToField,\n validationSchema,\n }}\n >\n {({ values, isSubmitting }) => (\n <div className=\"flex h-[calc(100dvh-64px)] flex-grow flex-col overflow-y-auto lg:flex-row\">\n <div className=\"flex w-full flex-col px-5 md:px-10 lg:h-full lg:w-1/2 lg:overflow-y-auto\">\n {blockNavigation && <BlockNavigation />}\n {isNotEmpty(headerProps) && (\n <Header className=\"px-0\" size=\"small\" {...headerProps} />\n )}\n {isNotEmpty(switchProps) && (\n <div className=\"flex items-center justify-between gap-y-0.5 pb-6\">\n <Tooltip\n disabled={!switchProps?.disabled}\n position=\"top\"\n {...tooltipProps}\n >\n <div className=\"flex items-center gap-2\">\n <Switch\n data-testid=\"switch\"\n name=\"isEnabled\"\n {...switchProps}\n />\n </div>\n </Tooltip>\n </div>\n )}\n {shouldShowFields(values) && children}\n <EmailForm\n isLoading={isSubmitting || isLoading}\n isUpdating={isSubmitting || isLoading}\n showFields={shouldShowFields(values)}\n {...emailFormProps}\n />\n </div>\n {shouldShowFields(values) && (\n <MobilePreviewHeader\n className=\"lg:hidden\"\n {...mobilePreviewProps}\n />\n )}\n {shouldShowFields(values) && (\n <div className=\"bg-muted w-full px-6 py-10 lg:w-1/2 lg:overflow-y-auto\">\n <EmailPreview\n body={resolveContent(values.message, formatBody, bodyVariables)}\n from={values.sendFrom}\n to={pluck(\"value\", values?.sendTo ?? [])}\n subject={resolveContent(\n values.subject,\n formatSubject,\n subjectVariables\n )}\n {...emailPreviewProps}\n />\n </div>\n )}\n </div>\n )}\n </EmailFormProvider>\n );\n};\n\nEmailFormComponent.propTypes = {\n /**\n * A function that will be triggered with input values when the 'Save changes' button is clicked.\n */\n onSubmit: PropTypes.func,\n /**\n * These are the predefined values that populate the form fields when the form is first rendered.\n */\n initialValues: PropTypes.shape({\n sendTo: PropTypes.array,\n sendToId: PropTypes.string,\n sendToCc: PropTypes.array,\n sendToBcc: PropTypes.array,\n replyTo: PropTypes.string,\n showCopyEmails: PropTypes.bool,\n subject: PropTypes.string,\n message: PropTypes.string,\n isEnabled: PropTypes.bool,\n }),\n /**\n * A prop that can be used to override the default Formik properties that are set within the component, providing customization flexibility.\n */\n formikProps: PropTypes.object,\n /**\n * A Yup object defining custom form validation rules, which will be merged with the default rules using the concat method.\n */\n validationSchema: PropTypes.object,\n /**\n * A prop used for rendering either standard React element or a render prop function.\n */\n children: PropTypes.oneOfType([PropTypes.func, PropTypes.node]),\n /**\n * A Boolean value that determines whether the '**sendTo**' field should be displayed or not.\n */\n showSendToField: PropTypes.bool,\n /**\n * A Boolean value that determines whether the '**replyTo**' field should be displayed or not.\n */\n showReplyToField: PropTypes.bool,\n /**\n * A Boolean value that determines whether the '**sendTo**' field should be radio type or not.\n */\n showSendToAsRadio: PropTypes.bool,\n /**\n * A Boolean value that determines whether the '**Cc**' field should be displayed or not when showSendToField is false.\n * This prop has no effect when showSendToField is true.\n */\n showCcField: PropTypes.bool,\n /**\n * A Boolean value that determines whether the '**Bcc**' field should be displayed or not when showSendToField is false.\n * This prop has no effect when showSendToField is true.\n */\n showBccField: PropTypes.bool,\n /**\n * This Boolean value, when set to true, triggers the display of a loading indicator on the 'Save changes' button.\"\n */\n isLoading: PropTypes.bool,\n /**\n * A prop to limit number of send to emails\n */\n maxEmails: PropTypes.number,\n /**\n * These are the values that will be passed to EmailForm Component\n */\n emailFormProps: PropTypes.shape({\n messageVariables: PropTypes.array,\n subjectVariables: PropTypes.array,\n handleCancel: PropTypes.func,\n handleResetToDefault: PropTypes.func,\n isLoading: PropTypes.bool,\n replyToFieldProps: PropTypes.object,\n sendToFieldProps: PropTypes.object,\n replyToOptions: PropTypes.array,\n sendToOptions: PropTypes.array,\n isUpdating: PropTypes.bool,\n showFields: PropTypes.bool,\n className: PropTypes.string,\n showResetToDefaultButton: PropTypes.bool,\n editorRef: PropTypes.any,\n editorAddons: PropTypes.array,\n }),\n /**\n * These are the values that will be passed to EmailPreview Component\n */\n emailPreviewProps: PropTypes.shape({\n to: PropTypes.array,\n from: PropTypes.string,\n subject: PropTypes.string,\n body: PropTypes.string,\n actionButtonText: PropTypes.string,\n logo: PropTypes.string,\n customContent: PropTypes.string,\n className: PropTypes.string,\n formatBody: PropTypes.func,\n formatSubject: PropTypes.func,\n bodyVariables: PropTypes.object,\n subjectVariables: PropTypes.object,\n }),\n /**\n * These are the values that will be passed to Header Component\n */\n headerProps: PropTypes.object,\n /**\n * These are the values that will be passed to Tooltip Component\n */\n tooltipProps: PropTypes.object,\n /**\n * These are the values that will be passed to Switch Component\n */\n switchProps: PropTypes.object,\n /**\n * These are the values that will be passed to MobilePreviewHeader Component\n */\n mobilePreviewProps: PropTypes.object,\n};\n\nexport default EmailFormComponent;\n","import { Form } from \"@bigbinary/neeto-atoms/formik\";\nimport { noop } from \"neetocist\";\nimport PropTypes from \"prop-types\";\n\nimport { INITIAL_FORM_VALUES } from \"./constants\";\nimport { EmailFormContext } from \"./contexts/EmailForm\";\nimport { getValidationSchema } from \"./utils\";\n\nconst EmailFormProvider = ({\n onSubmit = noop,\n initialValues = INITIAL_FORM_VALUES,\n children,\n formikProps,\n validationSchema: customValidations = {},\n showSendToField = false,\n showReplyToField = false,\n showSendToAsRadio = false,\n showCcField = false,\n showBccField = false,\n maxEmails = 10,\n}) => (\n <div data-testid=\"email-form-provider\">\n <EmailFormContext.Provider\n value={{\n showSendToField,\n showSendToAsRadio,\n showReplyToField,\n showCcField,\n showBccField,\n }}\n >\n <Form\n formikProps={{\n enableReinitialize: true,\n validationSchema: getValidationSchema({\n showSendToField,\n showReplyToField,\n showSendToAsRadio,\n customValidations,\n maxEmails,\n }),\n initialValues,\n onSubmit,\n ...formikProps,\n }}\n >\n {children}\n </Form>\n </EmailFormContext.Provider>\n </div>\n);\n\nEmailFormProvider.propTypes = {\n /**\n * A Boolean value that determines whether the '**sendTo**' field should be displayed or not.\n */\n showSendToField: PropTypes.bool,\n /**\n * A Boolean value that determines whether the '**replyTo**' field should be displayed or not.\n */\n showReplyToField: PropTypes.bool,\n /**\n * A Boolean value that determines whether the '**sendTo**' field should be radio type or not.\n */\n showSendToAsRadio: PropTypes.bool,\n /**\n * A function that will be triggered with input values when the 'Save changes' button is clicked.\n */\n onSubmit: PropTypes.func,\n /**\n * These are the predefined values that populate the form fields when the form is first rendered.\n */\n initialValues: PropTypes.shape({\n sendTo: PropTypes.array,\n sendToId: PropTypes.string,\n sendToCc: PropTypes.array,\n sendToBcc: PropTypes.array,\n replyTo: PropTypes.string,\n showCopyEmails: PropTypes.bool,\n subject: PropTypes.string,\n message: PropTypes.string,\n }),\n /**\n * A prop used for rendering either standard React element or a render prop function.\n */\n children: PropTypes.oneOfType([PropTypes.func, PropTypes.node]),\n /**\n * A prop that can be used to override the default Formik properties that are set within the component, providing customization flexibility.\n */\n formikProps: PropTypes.object,\n /**\n * A Yup object defining custom form validation rules, which will be merged with the default rules using the concat method.\n */\n validationSchema: PropTypes.object,\n /**\n * A prop to limit number of send to emails\n */\n maxEmails: PropTypes.number,\n /**\n * A Boolean value that determines whether the '**Cc**' field should be displayed or not when showSendToField is false.\n * This prop has no effect when showSendToField is true.\n */\n showCcField: PropTypes.bool,\n /**\n * A Boolean value that determines whether the '**Bcc**' field should be displayed or not when showSendToField is false.\n * This prop has no effect when showSendToField is true.\n */\n showBccField: PropTypes.bool,\n};\n\nexport default EmailFormProvider;\n"],"names":["INITIAL_FORM_VALUES","sendTo","sendToId","sendToCc","sendToBcc","replyTo","showCopyEmails","subject","message","isEnabled","EMAIL_FORM_VALIDATION_SCHEMA","yup","object","string","required","t","test","value","isEditorEmpty","sendToFieldValidation","maxEmails","validation","array","emails","every","prop","count","length","min","entity","nullable","SEND_TO_ID_FIELD_VALIDATION","REPLY_TO_FIELD_VALIDATION","email","EDITOR_ADDONS","EmailFormContext","createContext","showSendToField","showSendToAsRadio","showReplyToField","showCcField","showBccField","getValidationSchema","_ref","customValidations","schema","clone","concat","isYupObject","type","customFields","fields","shape","_typeof","getReplyToFieldLabelProps","_ref2","popoverProps","helpIconProps","_objectSpread","className","isPresent","description","tooltipProps","content","resolveContent","func","variable","normalizeHtmlString","str","replace","trim","ReplyToField","_ref$options","options","_ref$popoverProps","_useTranslation","useTranslation","_useFormikContext","useFormikContext","setFieldValue","isDropdownField","isNotEmpty","labelProps","_jsx","Select","isClearable","label","name","size","onChange","Input","autoFocus","placeholder","event","_event$target$value","target","toLowerCase","SendToField","showSendToTextField","SendToFields","showCcBccButton","bccInputProps","ccInputProps","emailInputProps","id","SubjectField","text","updateText","_ref$subjectVariables","subjectVariables","error","_ref$required","onBlur","_useState","useState","_useState2","_slicedToArray","isFieldFocusedOnce","setIsFieldFocusedOnce","tagClickHandler","slug","key","category","inputElement","document","querySelector","splitIndex","selectionEnd","updatedSubject","slice","join","suffix","children","DynamicVariables","buttonProps","dropdownProps","variables","onVariableClick","withEventTargetValue","onFocus","EmailForm","_ref$messageVariables","messageVariables","handleCancel","handleResetToDefault","isLoading","replyToFieldProps","sendToFieldProps","replyToOptions","_ref$sendToOptions","sendToOptions","_ref$isUpdating","isUpdating","_ref$isResetting","isResetting","_ref$showFields","showFields","_ref$className","_ref$editorAddons","editorAddons","showResetToDefaultButton","_ref$editorRef","editorRef","_ref$defaultValues","defaultValues","_useContext","useContext","values","resetForm","normalizedValues","normalizedDefaultValues","disabled","equals","sendToFieldOptions","showSendToRadioField","_jsxs","classnames","_defineProperty","RadioGroup","map","_createElement","Item","Field","_ref3","_ref3$field","field","_ref3$meta","meta","touched","undefined","FormikEditor","addons","hideSlashCommands","menuType","ref","shouldUpdate","nextProps","prevProps","notEqualsDeep","ActionBlock","cancelButtonProps","onClick","isSubmitting","Button","loading","variant","EmailFormComponent","_ref$onSubmit","onSubmit","noop","_ref$initialValues","initialValues","formikProps","validationSchema","_ref$showSendToField","_ref$showReplyToField","_ref$showSendToAsRadi","_ref$blockNavigation","blockNavigation","_ref$showCcField","_ref$showBccField","_ref$isLoading","_ref$maxEmails","_ref$emailFormProps","emailFormProps","_ref$emailPreviewProp","emailPreviewProps","_ref$headerProps","headerProps","_ref$tooltipProps","_ref$switchProps","switchProps","_ref$mobilePreviewPro","mobilePreviewProps","formatBody","formatSubject","bodyVariables","shouldShowFields","isEmpty","EmailFormProvider","_values$sendTo","BlockNavigation","Header","Tooltip","position","Switch","MobilePreviewHeader","EmailPreview","body","from","sendFrom","to","pluck","_ref$validationSchema","Provider","Form","enableReinitialize"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAKO,IAAMA,mBAAmB,GAAG;AACjCC,EAAAA,MAAM,EAAE,EAAE;AACVC,EAAAA,QAAQ,EAAE,EAAE;AACZC,EAAAA,QAAQ,EAAE,EAAE;AACZC,EAAAA,SAAS,EAAE,EAAE;AACbC,EAAAA,OAAO,EAAE,EAAE;AACXC,EAAAA,cAAc,EAAE,KAAK;AACrBC,EAAAA,OAAO,EAAE,EAAE;AACXC,EAAAA,OAAO,EAAE,EAAE;AACXC,EAAAA,SAAS,EAAE;AACb,CAAC;AAEM,IAAMC,4BAA4B,GAAGC,cAAG,CAACC,MAAM,CAAC;AACrDL,EAAAA,OAAO,EAAEI,cAAG,CACTE,MAAM,EAAE,CACRC,QAAQ,CAACC,SAAC,CAAC,iDAAiD,CAAC,CAAC;AACjEP,EAAAA,OAAO,EAAEG,cAAG,CACTE,MAAM,EAAE,CACRG,IAAI,CACH,SAAS,EACTD,SAAC,CAAC,iDAAiD,CAAC,EACpD,UAAAE,KAAK,EAAA;AAAA,IAAA,OAAI,CAACC,mBAAa,CAACD,KAAK,CAAC;EAAA,CAChC;AACJ,CAAC,CAAC;AAEK,IAAME,qBAAqB,GAAG,SAAxBA,qBAAqBA,CAAGC,SAAS,EAAI;AAChD,EAAA,IAAMC,UAAU,GAAGV,cAAG,CACnBW,KAAK,EAAE,CACPN,IAAI,CACH,kBAAkB,EAClBD,SAAC,CAAC,qDAAqD,CAAC,EACxD,UAAAQ,MAAM,EAAA;AAAA,IAAA,OAAIA,MAAM,KAAA,IAAA,IAANA,MAAM,KAAA,MAAA,GAAA,MAAA,GAANA,MAAM,CAAEC,KAAK,CAACC,UAAI,CAAC,OAAO,CAAC,CAAC;EAAA,CACxC,CAAC,CACAT,IAAI,CACH,iBAAiB,EACjBD,SAAC,CAAC,2CAA2C,EAAE;AAAEW,IAAAA,KAAK,EAAEN;GAAW,CAAC,EACpE,UAAAG,MAAM,EAAA;IAAA,OAAI,CAAAA,MAAM,KAAA,IAAA,IAANA,MAAM,uBAANA,MAAM,CAAEI,MAAM,KAAIP,SAAS;AAAA,EAAA,CACvC,CAAC;EAEH,OAAOT,cAAG,CAACC,MAAM,CAAC;IAChBX,MAAM,EAAEoB,UAAU,CACfO,GAAG,CACF,CAAC,EACDb,SAAC,CAAC,0CAA0C,EAAE;MAC5Cc,MAAM,EAAEd,SAAC,CAAC,oDAAoD;AAChE,KAAC,CACH,CAAC,CACAe,QAAQ,EAAE;AACb3B,IAAAA,QAAQ,EAAEkB,UAAU;AACpBjB,IAAAA,SAAS,EAAEiB;AACb,GAAC,CAAC;AACJ,CAAC;AAEM,IAAMU,2BAA2B,GAAGpB,cAAG,CAACC,MAAM,CAAC;AACpDV,EAAAA,QAAQ,EAAES,cAAG,CAACE,MAAM,EAAE,CAACC,QAAQ,CAC7BC,SAAC,CAAC,0CAA0C,EAAE;IAC5Cc,MAAM,EAAEd,SAAC,CAAC,wCAAwC;AACpD,GAAC,CACH;AACF,CAAC,CAAC;AAEK,IAAMiB,yBAAyB,GAAGrB,cAAG,CAACC,MAAM,CAAC;EAClDP,OAAO,EAAEM,cAAG,CACTE,MAAM,EAAE,CACRiB,QAAQ,EAAE,CACVG,KAAK,CAAClB,SAAC,CAAC,qDAAqD,CAAC,CAAC,CAC/DD,QAAQ,CACPC,SAAC,CAAC,0CAA0C,EAAE;IAC5Cc,MAAM,EAAEd,SAAC,CAAC,qDAAqD;AACjE,GAAC,CACH;AACJ,CAAC,CAAC;AAEK,IAAMmB,aAAa,GAAG,CAC3B,WAAW,EACX,OAAO,EACP,YAAY,EACZ,aAAa,EACb,cAAc,EACd,SAAS,EACT,aAAa,CACd;;ACtFD;AAGA,IAAMC,gBAAgB,gBAAGC,mBAAa,CAAC;AACrCC,EAAAA,eAAe,EAAE,KAAK;AACtBC,EAAAA,iBAAiB,EAAE,KAAK;AACxBC,EAAAA,gBAAgB,EAAE,KAAK;AACvBC,EAAAA,WAAW,EAAE,KAAK;AAClBC,EAAAA,YAAY,EAAE;AAChB,CAAC,CAAC;;;;ACCK,IAAMC,mBAAmB,GAAG,SAAtBA,mBAAmBA,CAAAC,IAAA,EAM1B;AAAA,EAAA,IALJN,eAAe,GAAAM,IAAA,CAAfN,eAAe;IACfE,gBAAgB,GAAAI,IAAA,CAAhBJ,gBAAgB;IAChBD,iBAAiB,GAAAK,IAAA,CAAjBL,iBAAiB;IACjBM,iBAAiB,GAAAD,IAAA,CAAjBC,iBAAiB;IACjBxB,SAAS,GAAAuB,IAAA,CAATvB,SAAS;AAET,EAAA,IAAIyB,MAAM,GAAGnC,4BAA4B,CAACoC,KAAK,EAAE;AAEjD,EAAA,IAAIT,eAAe,EAAE;AACnBQ,IAAAA,MAAM,GAAGA,MAAM,CAACE,MAAM,CACpBT,iBAAiB,GACbP,2BAA2B,GAC3BZ,qBAAqB,CAACC,SAAS,CACrC,CAAC;AACH,EAAA;EAEA,IAAImB,gBAAgB,EAAEM,MAAM,GAAGA,MAAM,CAACE,MAAM,CAACf,yBAAyB,CAAC;AAEvE,EAAA,IAAMgB,WAAW,GAAGJ,iBAAiB,CAACK,IAAI,KAAK,QAAQ;AAEvD,EAAA,IAAID,WAAW,EAAE;AACf,IAAA,IAAME,YAAY,GAAGN,iBAAiB,CAACO,MAAM,IAAI,EAAE;AACnDN,IAAAA,MAAM,GAAGA,MAAM,CAACO,KAAK,CAACF,YAAY,CAAC;AACrC,EAAA,CAAC,MAAM,IAAIG,OAAA,CAAOT,iBAAiB,CAAA,KAAK,QAAQ,EAAE;AAChDC,IAAAA,MAAM,GAAGA,MAAM,CAACO,KAAK,CAACR,iBAAiB,CAAC;AAC1C,EAAA;AAEA,EAAA,OAAOC,MAAM;AACf,CAAC;AAEM,IAAMS,yBAAyB,GAAG,SAA5BA,yBAAyBA,CAAAC,KAAA,EAAA;AAAA,EAAA,IAAMC,YAAY,GAAAD,KAAA,CAAZC,YAAY;EAAA,OAAQ;AAC9DC,IAAAA,aAAa,EAAAC,eAAA,CAAA;AACXC,MAAAA,SAAS,EAAE;AAAoB,KAAA,EAC3BC,mBAAS,CAACJ,YAAY,CAAC,GACvB;AACEA,MAAAA,YAAY,EAAAE,eAAA,CAAAA,eAAA,KACPF,YAAY,CAAA,EAAA,EAAA,EAAA;AACfK,QAAAA,WAAW,EACTL,YAAY,CAACK,WAAW,IACxB9C,SAAC,CAAC,2CAA2C;AAAC,OAAA;AAEpD,KAAC,GACD;AACE+C,MAAAA,YAAY,EAAE;QACZC,OAAO,EAAEhD,SAAC,CAAC,2CAA2C;AACxD;KACD;GAER;AAAA,CAAC;AAEK,IAAMiD,cAAc,GAAG,SAAjBA,cAAcA,CAAID,OAAO,EAAEE,IAAI,EAAEC,QAAQ,EAAK;AACzD,EAAA,IAAI,OAAOD,IAAI,KAAK,UAAU,EAAE;AAC9B,IAAA,OAAOA,IAAI,CAACF,OAAO,EAAEG,QAAQ,CAAC;AAChC,EAAA;AAEA,EAAA,OAAOH,OAAO;AAChB,CAAC;AAEM,IAAMI,mBAAmB,GAAG,SAAtBA,mBAAmBA,CAAGC,GAAG,EAAI;AACxC,EAAA,IAAI,OAAOA,GAAG,KAAK,QAAQ,EAAE,OAAOA,GAAG;EAEvC,OAAOA,GAAG,CACPC,OAAO,CAAC,SAAS,EAAE,EAAE,CAAC,CACtBA,OAAO,CAAC,UAAU,EAAE,IAAI,CAAC,CACzBA,OAAO,CAAC,SAAS,EAAE,GAAG,CAAC,CACvBA,OAAO,CAAC,SAAS,EAAE,GAAG,CAAC,CACvBA,OAAO,CAAC,WAAW,EAAE,IAAI,CAAC,CAC1BA,OAAO,CAAC,MAAM,EAAE,IAAI,CAAC,CACrBA,OAAO,CAAC,QAAQ,EAAE,IAAI,CAAC,CACvBC,IAAI,EAAE;AACX,CAAC;;AC1ED,IAAMC,YAAY,GAAG,SAAfA,YAAYA,CAAA5B,IAAA,EAA4C;AAAA,EAAA,IAAA6B,YAAA,GAAA7B,IAAA,CAAtC8B,OAAO;AAAPA,IAAAA,OAAO,GAAAD,YAAA,KAAA,MAAA,GAAG,EAAE,GAAAA,YAAA;IAAAE,iBAAA,GAAA/B,IAAA,CAAEa,YAAY;AAAZA,IAAAA,YAAY,GAAAkB,iBAAA,KAAA,MAAA,GAAG,EAAE,GAAAA,iBAAA;AACrD,EAAA,IAAAC,eAAA,GAAcC,2BAAc,EAAE;IAAtB7D,CAAC,GAAA4D,eAAA,CAAD5D,CAAC;AACT,EAAA,IAAA8D,iBAAA,GAA0BC,uBAAgB,EAAE;IAApCC,aAAa,GAAAF,iBAAA,CAAbE,aAAa;AAErB,EAAA,IAAMC,eAAe,GAAGC,oBAAU,CAACR,OAAO,CAAC;EAC3C,IAAMS,UAAU,GAAG5B,yBAAyB,CAAC;AAAEE,IAAAA,YAAY,EAAZA;AAAa,GAAC,CAAC;AAE9D,EAAA,IAAIwB,eAAe,EAAE;IACnB,oBACEG,cAAA,CAACC,eAAM,EAAA;AACCF,MAAAA,UAAU,EAAVA,UAAU;AAAET,MAAAA,OAAO,EAAPA,OAAO;MACzBY,WAAW,EAAA,IAAA;AACX1B,MAAAA,SAAS,EAAC,QAAQ;AAClB,MAAA,aAAA,EAAY,uBAAuB;AACnC2B,MAAAA,KAAK,EAAEvE,CAAC,CAAC,yCAAyC,CAAE;AACpDwE,MAAAA,IAAI,EAAC,SAAS;AACdC,MAAAA,IAAI,EAAC,OAAO;AACZC,MAAAA,QAAQ,EAAE,SAAVA,QAAQA,CAAExE,KAAK,EAAA;QAAA,OAAI8D,aAAa,CAAC,SAAS,EAAE9D,KAAK,KAAA,IAAA,IAALA,KAAK,KAAA,MAAA,GAALA,KAAK,GAAI,EAAE,CAAC;AAAA,MAAA;AAAC,KAC1D,CAAC;AAEN,EAAA;EAEA,oBACEkE,cAAA,CAACO,cAAK,EAAA;AACER,IAAAA,UAAU,EAAVA,UAAU;IAChBS,SAAS,EAAA,IAAA;IACT7E,QAAQ,EAAA,IAAA;AACR6C,IAAAA,SAAS,EAAC,QAAQ;AAClB,IAAA,aAAA,EAAY,sBAAsB;AAClC2B,IAAAA,KAAK,EAAEvE,CAAC,CAAC,yCAAyC,CAAE;AACpDwE,IAAAA,IAAI,EAAC,SAAS;AACdK,IAAAA,WAAW,EAAE7E,CAAC,CAAC,wDAAwD,CAAE;AACzEyE,IAAAA,IAAI,EAAC,OAAO;AACZC,IAAAA,QAAQ,EAAE,SAAVA,QAAQA,CAAEI,KAAK,EAAA;AAAA,MAAA,IAAAC,mBAAA;AAAA,MAAA,OACbf,aAAa,CAAC,SAAS,GAAAe,mBAAA,GAAED,KAAK,CAACE,MAAM,CAAC9E,KAAK,MAAA,IAAA,IAAA6E,mBAAA,KAAA,MAAA,GAAA,MAAA,GAAlBA,mBAAA,CAAoBE,WAAW,EAAE,CAAC;AAAA,IAAA;AAC5D,GACF,CAAC;AAEN,CAAC;;ACzCD,IAAMC,WAAW,GAAG,SAAdA,WAAWA,CAAAtD,IAAA,EAA2D;AAAA,EAAA,IAArDF,YAAY,GAAAE,IAAA,CAAZF,YAAY;IAAED,WAAW,GAAAG,IAAA,CAAXH,WAAW;IAAE0D,mBAAmB,GAAAvD,IAAA,CAAnBuD,mBAAmB;AACnE,EAAA,IAAAvB,eAAA,GAAcC,2BAAc,EAAE;IAAtB7D,CAAC,GAAA4D,eAAA,CAAD5D,CAAC;EAET,IAAI,CAACmF,mBAAmB,IAAI,CAACzD,YAAY,IAAI,CAACD,WAAW,EAAE,OAAO,IAAI;EAEtE,oBACE2C,cAAA,CAACgB,eAAY,EAAA;IACXC,eAAe,EAAA,IAAA;AACf3D,IAAAA,YAAY,EAAEyD,mBAAmB,GAAG,KAAK,GAAGzD,YAAa;AACzDD,IAAAA,WAAW,EAAE0D,mBAAmB,GAAG,KAAK,GAAG1D,WAAY;AACvDH,IAAAA,eAAe,EAAE6D,mBAAoB;AACrCG,IAAAA,aAAa,EAAE;AACbf,MAAAA,KAAK,EAAEvE,CAAC,CAAC,qCAAqC,CAAC;AAC/CwE,MAAAA,IAAI,EAAE,WAAW;MACjBK,WAAW,EAAE7E,CAAC,CACZ,4DACF;KACA;AACFuF,IAAAA,YAAY,EAAE;AACZhB,MAAAA,KAAK,EAAEvE,CAAC,CAAC,oCAAoC,CAAC;AAC9CwE,MAAAA,IAAI,EAAE,UAAU;MAChBK,WAAW,EAAE7E,CAAC,CACZ,4DACF;KACA;AACFwF,IAAAA,eAAe,EAAE;AACfC,MAAAA,EAAE,EAAE,QAAQ;AACZjB,MAAAA,IAAI,EAAE,QAAQ;AACdD,MAAAA,KAAK,EAAEvE,CAAC,CAAC,wCAAwC,CAAC;AAClD6E,MAAAA,WAAW,EAAE7E,CAAC,CACZ,4DACF,CAAC;AACDD,MAAAA,QAAQ,EAAE;AACZ;AAAE,GACH,CAAC;AAEN,CAAC;;AChCD,IAAM2F,YAAY,GAAG,SAAfA,YAAYA,CAAA9D,IAAA,EAQZ;AAAA,EAAA,IAPJ4C,IAAI,GAAA5C,IAAA,CAAJ4C,IAAI;IACJmB,IAAI,GAAA/D,IAAA,CAAJ+D,IAAI;IACJC,UAAU,GAAAhE,IAAA,CAAVgE,UAAU;IAAAC,qBAAA,GAAAjE,IAAA,CACVkE,gBAAgB;AAAhBA,IAAAA,gBAAgB,GAAAD,qBAAA,KAAA,MAAA,GAAG,EAAE,GAAAA,qBAAA;IACrBE,KAAK,GAAAnE,IAAA,CAALmE,KAAK;IAAAC,aAAA,GAAApE,IAAA,CACL7B,QAAQ;AAARA,IAAAA,QAAQ,GAAAiG,aAAA,KAAA,MAAA,GAAG,KAAK,GAAAA,aAAA;IAChBC,MAAM,GAAArE,IAAA,CAANqE,MAAM;AAEN,EAAA,IAAAC,SAAA,GAAoDC,cAAQ,CAAC,KAAK,CAAC;IAAAC,UAAA,GAAAC,cAAA,CAAAH,SAAA,EAAA,CAAA,CAAA;AAA5DI,IAAAA,kBAAkB,GAAAF,UAAA,CAAA,CAAA,CAAA;AAAEG,IAAAA,qBAAqB,GAAAH,UAAA,CAAA,CAAA,CAAA;AAEhD,EAAA,IAAAxC,eAAA,GAAcC,2BAAc,EAAE;IAAtB7D,CAAC,GAAA4D,eAAA,CAAD5D,CAAC;AAET,EAAA,IAAMwG,eAAe,GAAG,SAAlBA,eAAeA,CAAAhE,KAAA,EAAgC;AAAA,IAAA,IAArBiE,IAAI,GAAAjE,KAAA,CAATkE,GAAG;MAAQC,QAAQ,GAAAnE,KAAA,CAARmE,QAAQ;IAC5C,IAAMC,YAAY,GAAGC,QAAQ,CAACC,aAAa,UAAA9E,MAAA,CAAUwC,IAAI,EAAA,GAAA,CAAG,CAAC;AAC7D,IAAA,IAAMuC,UAAU,GACdT,kBAAkB,IAAIM,YAAY,GAC9BA,YAAY,CAACI,YAAY,GACzBrB,IAAI,CAAC/E,MAAM;AAEjB,IAAA,IAAMuC,QAAQ,GAAGwD,QAAQ,GAAA,EAAA,CAAA3E,MAAA,CAAM2E,QAAQ,EAAA,GAAA,CAAA,CAAA3E,MAAA,CAAIyE,IAAI,CAAA,GAAKA,IAAI;IACxD,IAAMQ,cAAc,GAAG,CACrBtB,IAAI,CAACuB,KAAK,CAAC,CAAC,EAAEH,UAAU,CAAC,EAAA,KAAA,CAAA/E,MAAA,CACnBmB,QAAQ,EAAA,IAAA,CAAA,EACdwC,IAAI,CAACuB,KAAK,CAACH,UAAU,CAAC,CACvB,CAACI,IAAI,CAAC,EAAE,CAAC;IACVvB,UAAU,CAACqB,cAAc,CAAC;EAC5B,CAAC;EAED,oBACE7C,cAAA,CAACO,gBAAK,EAAA;AACEoB,IAAAA,KAAK,EAALA,KAAK;AAAEvB,IAAAA,IAAI,EAAJA,IAAI;AAAEyB,IAAAA,MAAM,EAANA,MAAM;AAAElG,IAAAA,QAAQ,EAARA,QAAQ;AACnCwE,IAAAA,KAAK,EAAEvE,CAAC,CAAC,yCAAyC,CAAE;AACpD6E,IAAAA,WAAW,EAAE7E,CAAC,CAAC,+CAA+C,CAAE;AAChEyE,IAAAA,IAAI,EAAC,OAAO;AACZvE,IAAAA,KAAK,EAAEyF,IAAK;AACZyB,IAAAA,MAAM,eACJhD,cAAA,CAAA,KAAA,EAAA;AAAKxB,MAAAA,SAAS,EAAC,kBAAkB;MAAAyE,QAAA,eAC/BjD,cAAA,CAACkD,mBAAgB,EAAA;AACfC,QAAAA,WAAW,EAAE;AAAE3E,UAAAA,SAAS,EAAE;SAAgB;AAC1C4E,QAAAA,aAAa,EAAE;AAAE5E,UAAAA,SAAS,EAAE;SAAoB;AAChD6E,QAAAA,SAAS,EAAE3B,gBAAiB;AAC5B4B,QAAAA,eAAe,EAAElB;OAClB;AAAC,KACC,CACN;AACD9B,IAAAA,QAAQ,EAAEiD,4BAAoB,CAAC/B,UAAU,CAAE;IAC3CgC,OAAO,EAAE,SAATA,OAAOA,GAAA;MAAA,OAAQrB,qBAAqB,CAAC,IAAI,CAAC;AAAA,IAAA;AAAC,GAC5C,CAAC;AAEN,CAAC;;;;ACvCD,IAAMsB,SAAS,GAAG,SAAZA,SAASA,CAAAjG,IAAA,EAkBT;AAAA,EAAA,IAAAkG,qBAAA,GAAAlG,IAAA,CAjBJmG,gBAAgB;AAAhBA,IAAAA,gBAAgB,GAAAD,qBAAA,KAAA,MAAA,GAAG,EAAE,GAAAA,qBAAA;IAAAjC,qBAAA,GAAAjE,IAAA,CACrBkE,gBAAgB;AAAhBA,IAAAA,gBAAgB,GAAAD,qBAAA,KAAA,MAAA,GAAG,EAAE,GAAAA,qBAAA;IACrBmC,YAAY,GAAApG,IAAA,CAAZoG,YAAY;IACZC,oBAAoB,GAAArG,IAAA,CAApBqG,oBAAoB;IACpBC,SAAS,GAAAtG,IAAA,CAATsG,SAAS;IACTC,iBAAiB,GAAAvG,IAAA,CAAjBuG,iBAAiB;IACjBC,gBAAgB,GAAAxG,IAAA,CAAhBwG,gBAAgB;IAChBC,cAAc,GAAAzG,IAAA,CAAdyG,cAAc;IAAAC,kBAAA,GAAA1G,IAAA,CACd2G,aAAa;AAAbA,IAAAA,aAAa,GAAAD,kBAAA,KAAA,MAAA,GAAG,EAAE,GAAAA,kBAAA;IAAAE,eAAA,GAAA5G,IAAA,CAClB6G,UAAU;AAAVA,IAAAA,UAAU,GAAAD,eAAA,KAAA,MAAA,GAAG,KAAK,GAAAA,eAAA;IAAAE,gBAAA,GAAA9G,IAAA,CAClB+G,WAAW;AAAXA,IAAAA,WAAW,GAAAD,gBAAA,KAAA,MAAA,GAAG,KAAK,GAAAA,gBAAA;IAAAE,eAAA,GAAAhH,IAAA,CACnBiH,UAAU;AAAVA,IAAAA,UAAU,GAAAD,eAAA,KAAA,MAAA,GAAG,IAAI,GAAAA,eAAA;IAAAE,cAAA,GAAAlH,IAAA,CACjBgB,SAAS;AAATA,IAAAA,SAAS,GAAAkG,cAAA,KAAA,MAAA,GAAG,EAAE,GAAAA,cAAA;IAAAC,iBAAA,GAAAnH,IAAA,CACdoH,YAAY;AAAZA,IAAAA,YAAY,GAAAD,iBAAA,KAAA,MAAA,GAAG5H,aAAa,GAAA4H,iBAAA;IAC5BE,wBAAwB,GAAArH,IAAA,CAAxBqH,wBAAwB;IAAAC,cAAA,GAAAtH,IAAA,CACxBuH,SAAS;AAATA,IAAAA,SAAS,GAAAD,cAAA,KAAA,MAAA,GAAG,IAAI,GAAAA,cAAA;IAAAE,kBAAA,GAAAxH,IAAA,CAChByH,aAAa;AAAbA,IAAAA,aAAa,GAAAD,kBAAA,KAAA,MAAA,GAAG,EAAE,GAAAA,kBAAA;AAElB,EAAA,IAAAxF,eAAA,GAAcC,2BAAc,EAAE;IAAtB7D,CAAC,GAAA4D,eAAA,CAAD5D,CAAC;AAET,EAAA,IAAAsJ,WAAA,GAMIC,gBAAU,CAACnI,gBAAgB,CAAC;IAL9BE,eAAe,GAAAgI,WAAA,CAAfhI,eAAe;IACfC,iBAAiB,GAAA+H,WAAA,CAAjB/H,iBAAiB;IACjBC,gBAAgB,GAAA8H,WAAA,CAAhB9H,gBAAgB;IAChBC,WAAW,GAAA6H,WAAA,CAAX7H,WAAW;IACXC,YAAY,GAAA4H,WAAA,CAAZ5H,YAAY;AAGd,EAAA,IAAAoC,iBAAA,GAA6CC,uBAAgB,EAAE;IAAvDC,aAAa,GAAAF,iBAAA,CAAbE,aAAa;IAAEwF,MAAM,GAAA1F,iBAAA,CAAN0F,MAAM;IAAEC,SAAS,GAAA3F,iBAAA,CAAT2F,SAAS;AAExC,EAAA,IAAMC,gBAAgB,GAAA/G,eAAA,CAAAA,eAAA,KACjB6G,MAAM,CAAA,EAAA,EAAA,EAAA;AACT/J,IAAAA,OAAO,EAAE2D,mBAAmB,CAACoG,MAAM,CAAC/J,OAAO;GAAC,CAC7C;AAED,EAAA,IAAMkK,uBAAuB,GAAAhH,eAAA,CAAAA,eAAA,KACxB0G,aAAa,CAAA,EAAA,EAAA,EAAA;IAChB5J,OAAO,EAAE2D,mBAAmB,CAACiG,aAAa,aAAbA,aAAa,KAAA,MAAA,GAAA,MAAA,GAAbA,aAAa,CAAE5J,OAAO;GAAC,CACrD;AAED,EAAA,IAAMmK,QAAQ,GAAGC,YAAM,CAACH,gBAAgB,EAAEC,uBAAuB,CAAC;EAElE,IAAMG,kBAAkB,GAAG,CAAA1B,gBAAgB,KAAA,IAAA,IAAhBA,gBAAgB,KAAA,MAAA,GAAA,MAAA,GAAhBA,gBAAgB,CAAE1E,OAAO,KAAI6E,aAAa;EACrE,IAAMwB,oBAAoB,GACxBzI,eAAe,IAAIC,iBAAiB,IAAI2C,oBAAU,CAAC4F,kBAAkB,CAAC;AAExE,EAAA,IAAM3E,mBAAmB,GAAG7D,eAAe,IAAI,CAACyI,oBAAoB;AAEpE,EAAA,oBACEC,eAAA,CAAA,KAAA,EAAA;AACE,IAAA,aAAA,EAAY,YAAY;IACxBpH,SAAS,EAAEqH,UAAU,CAAC,8CAA8C,EAAAC,eAAA,CAAA,EAAA,EACjEtH,SAAS,EAAGA,SAAS,CACvB,CAAE;AAAAyE,IAAAA,QAAA,gBAEHjD,cAAA,CAAA,KAAA,EAAA;AAAKxB,MAAAA,SAAS,EAAC,aAAa;MAAAyE,QAAA,EACzBwB,UAAU,iBACTmB,eAAA,CAAA,KAAA,EAAA;AAAKpH,QAAAA,SAAS,EAAC,sDAAsD;AAAAyE,QAAAA,QAAA,EAAA,CAClE0C,oBAAoB,iBACnB3F,cAAA,CAAC+F,mBAAU,EAAA;AACTvH,UAAAA,SAAS,EAAC,MAAM;AAChB,UAAA,aAAA,EAAY,YAAY;AACxB2B,UAAAA,KAAK,EAAEvE,CAAC,CAAC,wCAAwC,CAAE;AACnDmE,UAAAA,UAAU,EAAE;AAAEpE,YAAAA,QAAQ,EAAE;WAAO;AAC/ByE,UAAAA,IAAI,EAAC,UAAU;AAAA6C,UAAAA,QAAA,EAEdyC,kBAAkB,CAACM,GAAG,CAAC,UAAA5H,KAAA,EAAA;AAAA,YAAA,IAAG+B,KAAK,GAAA/B,KAAA,CAAL+B,KAAK;cAAErE,KAAK,GAAAsC,KAAA,CAALtC,KAAK;AAAA,YAAA,oBACrCmK,mBAAA,CAACF,mBAAU,CAACG,IAAI,EAAA;AAAO/F,cAAAA,KAAK,EAALA,KAAK;AAAErE,cAAAA,KAAK,EAALA,KAAK;AAAIwG,cAAAA,GAAG,EAAExG;AAAM,aAAE,CAAC;UAAA,CACtD;AAAC,SACQ,CACb,eACDkE,cAAA,CAACc,WAAW,EAAA;AACJxD,UAAAA,YAAY,EAAZA,YAAY;AAAED,UAAAA,WAAW,EAAXA,WAAW;AAAE0D,UAAAA,mBAAmB,EAAnBA;AAAmB,SACrD,CAAC,EACD3D,gBAAgB,iBACf4C,cAAA,CAAA,KAAA,EAAA;AAAKxB,UAAAA,SAAS,EAAC,QAAQ;AAAAyE,UAAAA,QAAA,eACrBjD,cAAA,CAACZ,YAAY,EAAAb,eAAA,CAAA;AAACe,YAAAA,OAAO,EAAE2E;AAAe,WAAA,EAAKF,iBAAiB,CAAG;AAAC,SAC7D,CACN,eACD/D,cAAA,CAACmG,YAAK,EAAA;AAAC/F,UAAAA,IAAI,EAAC,SAAS;UAAA6C,QAAA,EAClB,SAAAA,QAAAA,CAAAmD,KAAA,EAAA;AAAA,YAAA,IAAAC,WAAA,GAAAD,KAAA,CAAGE,KAAK;cAAIxK,KAAK,GAAAuK,WAAA,CAALvK,KAAK;cAAE+F,MAAM,GAAAwE,WAAA,CAANxE,MAAM;cAAA0E,UAAA,GAAAH,KAAA,CAAII,IAAI;cAAI7E,KAAK,GAAA4E,UAAA,CAAL5E,KAAK;cAAE8E,OAAO,GAAAF,UAAA,CAAPE,OAAO;AAAA,YAAA,oBAClDzG,cAAA,CAAA,KAAA,EAAA;AAAKxB,cAAAA,SAAS,EAAC,QAAQ;cAAAyE,QAAA,eACrBjD,cAAA,CAACsB,YAAY,EAAA;AACLO,gBAAAA,MAAM,EAANA,MAAM;AAAEH,gBAAAA,gBAAgB,EAAhBA,gBAAgB;gBAC9B/F,QAAQ,EAAA,IAAA;gBACRgG,KAAK,EAAE8E,OAAO,IAAI9E,KAAK,GAAG/F,CAAC,CAAC+F,KAAK,CAAC,GAAG+E,SAAU;AAC/CtG,gBAAAA,IAAI,EAAC,SAAS;AACdmB,gBAAAA,IAAI,EAAEzF,KAAM;AACZ0F,gBAAAA,UAAU,EAAE,SAAZA,UAAUA,CAAED,IAAI,EAAA;AAAA,kBAAA,OAAI3B,aAAa,CAAC,SAAS,EAAE2B,IAAI,CAAC;AAAA,gBAAA;eACnD;AAAC,aACC,CAAC;AAAA,UAAA;SAEH,CAAC,eACRvB,cAAA,CAAA,KAAA,EAAA;AAAKxB,UAAAA,SAAS,EAAC,QAAQ;AAAC,UAAA,aAAA,EAAY,yBAAyB;UAAAyE,QAAA,eAC3DjD,cAAA,CAAC2G,YAAY,EAAA;YACXhL,QAAQ,EAAA,IAAA;AACRiL,YAAAA,MAAM,EAAEhC,YAAa;AACrB,YAAA,aAAA,EAAY,qBAAqB;AACjCiC,YAAAA,iBAAiB,EAAE,KAAM;AACzBxF,YAAAA,EAAE,EAAC,cAAc;AACjByF,YAAAA,QAAQ,EAAC,OAAO;AAChB1G,YAAAA,IAAI,EAAC,SAAS;AACdK,YAAAA,WAAW,EAAE7E,CAAC,CAAC,+CAA+C,CAAE;AAChEmL,YAAAA,GAAG,EAAEhC,SAAU;AACf1B,YAAAA,SAAS,EAAEM,gBAAiB;AAC5BqD,YAAAA,YAAY,EAAE,SAAdA,YAAYA,CAAGC,SAAS,EAAEC,SAAS,EAAA;cAAA,OACjCC,uBAAa,CAACF,SAAS,CAAC5D,SAAS,EAAE6D,SAAS,CAAC7D,SAAS,CAAC;AAAA,YAAA;WAE1D;AAAC,SACC,CAAC;OACH;KAEJ,CAAC,eACNuC,eAAA,CAAA,KAAA,EAAA;AAAKpH,MAAAA,SAAS,EAAC,2EAA2E;MAAAyE,QAAA,EAAA,cACxFjD,cAAA,CAACoH,oBAAW,EAAA;AACVC,QAAAA,iBAAiB,EAAE;AAAEC,UAAAA,OAAO,EAAE1D;SAAe;QAC7C2D,YAAY,EAAEzD,SAAS,IAAIO;AAAW,OACvC,CAAC,EACDQ,wBAAwB,iBACvB7E,cAAA,CAAA,KAAA,EAAA;QAAAiD,QAAA,eACEjD,cAAA,CAACwH,iBAAM,EAAA;AACChC,UAAAA,QAAQ,EAARA,QAAQ;AACd,UAAA,aAAA,EAAY,yBAAyB;AACrCrF,UAAAA,KAAK,EAAEvE,CAAC,CAAC,gDAAgD,CAAE;AAC3D6L,UAAAA,OAAO,EAAElD,WAAY;AACrBmD,UAAAA,OAAO,EAAC,WAAW;AACnBJ,UAAAA,OAAO,EAAE,SAATA,OAAOA,GAAQ;AACbjC,YAAAA,SAAS,EAAE;AACXxB,YAAAA,oBAAoB,EAAE;AACxB,UAAA;SACD;AAAC,OACC,CACN;AAAA,KACE,CAAC;AAAA,GACH,CAAC;AAEV;;;;AChJA,IAAM8D,kBAAkB,GAAG,SAArBA,kBAAkBA,CAAAnK,IAAA,EAoBlB;AAAA,EAAA,IAAAoK,aAAA,GAAApK,IAAA,CAnBJqK,QAAQ;AAARA,IAAAA,QAAQ,GAAAD,aAAA,KAAA,MAAA,GAAGE,cAAI,GAAAF,aAAA;IAAAG,kBAAA,GAAAvK,IAAA,CACfwK,aAAa;AAAbA,IAAAA,aAAa,GAAAD,kBAAA,KAAA,MAAA,GAAGlN,mBAAmB,GAAAkN,kBAAA;IACnC9E,SAAQ,GAAAzF,IAAA,CAARyF,QAAQ;IACRgF,WAAW,GAAAzK,IAAA,CAAXyK,WAAW;IACXC,gBAAgB,GAAA1K,IAAA,CAAhB0K,gBAAgB;IAAAC,oBAAA,GAAA3K,IAAA,CAChBN,eAAe;AAAfA,IAAAA,eAAe,GAAAiL,oBAAA,KAAA,MAAA,GAAG,KAAK,GAAAA,oBAAA;IAAAC,qBAAA,GAAA5K,IAAA,CACvBJ,gBAAgB;AAAhBA,IAAAA,gBAAgB,GAAAgL,qBAAA,KAAA,MAAA,GAAG,KAAK,GAAAA,qBAAA;IAAAC,qBAAA,GAAA7K,IAAA,CACxBL,iBAAiB;AAAjBA,IAAAA,iBAAiB,GAAAkL,qBAAA,KAAA,MAAA,GAAG,KAAK,GAAAA,qBAAA;IAAAC,oBAAA,GAAA9K,IAAA,CACzB+K,eAAe;AAAfA,IAAAA,eAAe,GAAAD,oBAAA,KAAA,MAAA,GAAG,IAAI,GAAAA,oBAAA;IAAAE,gBAAA,GAAAhL,IAAA,CACtBH,WAAW;AAAXA,IAAAA,WAAW,GAAAmL,gBAAA,KAAA,MAAA,GAAG,KAAK,GAAAA,gBAAA;IAAAC,iBAAA,GAAAjL,IAAA,CACnBF,YAAY;AAAZA,IAAAA,YAAY,GAAAmL,iBAAA,KAAA,MAAA,GAAG,KAAK,GAAAA,iBAAA;IAAAC,cAAA,GAAAlL,IAAA,CACpBsG,SAAS;AAATA,IAAAA,SAAS,GAAA4E,cAAA,KAAA,MAAA,GAAG,KAAK,GAAAA,cAAA;IAAAC,cAAA,GAAAnL,IAAA,CACjBvB,SAAS;AAATA,IAAAA,SAAS,GAAA0M,cAAA,KAAA,MAAA,GAAG,EAAE,GAAAA,cAAA;IAAAC,mBAAA,GAAApL,IAAA,CACdqL,cAAc;AAAdA,IAAAA,cAAc,GAAAD,mBAAA,KAAA,MAAA,GAAG,EAAE,GAAAA,mBAAA;IAAAE,qBAAA,GAAAtL,IAAA,CACnBuL,iBAAiB;AAAjBA,IAAAA,iBAAiB,GAAAD,qBAAA,KAAA,MAAA,GAAG,EAAE,GAAAA,qBAAA;IAAAE,gBAAA,GAAAxL,IAAA,CACtByL,WAAW;AAAXA,IAAAA,WAAW,GAAAD,gBAAA,KAAA,MAAA,GAAG,EAAE,GAAAA,gBAAA;IAAAE,iBAAA,GAAA1L,IAAA,CAChBmB,YAAY;AAAZA,IAAAA,YAAY,GAAAuK,iBAAA,KAAA,MAAA,GAAG,EAAE,GAAAA,iBAAA;IAAAC,gBAAA,GAAA3L,IAAA,CACjB4L,WAAW;AAAXA,IAAAA,WAAW,GAAAD,gBAAA,KAAA,MAAA,GAAG,EAAE,GAAAA,gBAAA;IAAAE,qBAAA,GAAA7L,IAAA,CAChB8L,kBAAkB;AAAlBA,IAAAA,kBAAkB,GAAAD,qBAAA,KAAA,MAAA,GAAG,EAAE,GAAAA,qBAAA;AAEvB,EAAA,IAAQE,UAAU,GAChBR,iBAAiB,CADXQ,UAAU;IAAEC,aAAa,GAC/BT,iBAAiB,CADCS,aAAa;IAAEC,aAAa,GAC9CV,iBAAiB,CADgBU,aAAa;IAAE/H,gBAAgB,GAChEqH,iBAAiB,CAD+BrH,gBAAgB;AAGlE,EAAA,IAAMgI,gBAAgB,GAAG,SAAnBA,gBAAgBA,CAAGtE,MAAM,EAAA;AAAA,IAAA,OAAIuE,aAAO,CAACP,WAAW,CAAC,IAAIhE,MAAM,CAAC9J,SAAS;AAAA,EAAA,CAAA;EAE3E,oBACE0E,cAAA,CAAC4J,iBAAiB,EAAA;AAEd3B,IAAAA,WAAW,EAAXA,WAAW;AACXD,IAAAA,aAAa,EAAbA,aAAa;AACb/L,IAAAA,SAAS,EAATA,SAAS;AACT4L,IAAAA,QAAQ,EAARA,QAAQ;AACRvK,IAAAA,YAAY,EAAZA,YAAY;AACZD,IAAAA,WAAW,EAAXA,WAAW;AACXD,IAAAA,gBAAgB,EAAhBA,gBAAgB;AAChBD,IAAAA,iBAAiB,EAAjBA,iBAAiB;AACjBD,IAAAA,eAAe,EAAfA,eAAe;AACfgL,IAAAA,gBAAgB,EAAhBA,gBAAgB;IAAAjF,QAAA,EAGjB,SAAAA,QAAAA,CAAA7E,KAAA,EAAA;AAAA,MAAA,IAAAyL,cAAA;AAAA,MAAA,IAAGzE,MAAM,GAAAhH,KAAA,CAANgH,MAAM;QAAEmC,YAAY,GAAAnJ,KAAA,CAAZmJ,YAAY;AAAA,MAAA,oBACtB3B,eAAA,CAAA,KAAA,EAAA;AAAKpH,QAAAA,SAAS,EAAC,2EAA2E;AAAAyE,QAAAA,QAAA,gBACxF2C,eAAA,CAAA,KAAA,EAAA;AAAKpH,UAAAA,SAAS,EAAC,0EAA0E;AAAAyE,UAAAA,QAAA,GACtFsF,eAAe,iBAAIvI,cAAA,CAAC8J,wBAAe,IAAE,CAAC,EACtChK,oBAAU,CAACmJ,WAAW,CAAC,iBACtBjJ,cAAA,CAAC+J,SAAM,EAAAxL,eAAA,CAAA;AAACC,YAAAA,SAAS,EAAC,MAAM;AAAC6B,YAAAA,IAAI,EAAC;WAAO,EAAK4I,WAAW,CAAG,CACzD,EACAnJ,oBAAU,CAACsJ,WAAW,CAAC,iBACtBpJ,cAAA,CAAA,KAAA,EAAA;AAAKxB,YAAAA,SAAS,EAAC,kDAAkD;AAAAyE,YAAAA,QAAA,eAC/DjD,cAAA,CAACgK,kBAAO,EAAAzL,eAAA,CAAAA,eAAA,CAAA;cACNiH,QAAQ,EAAE,EAAC4D,WAAW,KAAA,IAAA,IAAXA,WAAW,KAAA,MAAA,IAAXA,WAAW,CAAE5D,QAAQ,CAAC;AACjCyE,cAAAA,QAAQ,EAAC;AAAK,aAAA,EACVtL,YAAY,CAAA,EAAA,EAAA,EAAA;AAAAsE,cAAAA,QAAA,eAEhBjD,cAAA,CAAA,KAAA,EAAA;AAAKxB,gBAAAA,SAAS,EAAC,yBAAyB;AAAAyE,gBAAAA,QAAA,eACtCjD,cAAA,CAACkK,eAAM,EAAA3L,eAAA,CAAA;AACL,kBAAA,aAAA,EAAY,QAAQ;AACpB6B,kBAAAA,IAAI,EAAC;AAAW,iBAAA,EACZgJ,WAAW,CAChB;eACE;aAAC,CACC;AAAC,WACP,CACN,EACAM,gBAAgB,CAACtE,MAAM,CAAC,IAAInC,SAAQ,eACrCjD,cAAA,CAACyD,SAAS,EAAAlF,eAAA,CAAA;YACRuF,SAAS,EAAEyD,YAAY,IAAIzD,SAAU;YACrCO,UAAU,EAAEkD,YAAY,IAAIzD,SAAU;YACtCW,UAAU,EAAEiF,gBAAgB,CAACtE,MAAM;WAAE,EACjCyD,cAAc,CACnB,CAAC;SACC,CAAC,EACLa,gBAAgB,CAACtE,MAAM,CAAC,iBACvBpF,cAAA,CAACmK,sBAAmB,EAAA5L,eAAA,CAAA;AAClBC,UAAAA,SAAS,EAAC;SAAW,EACjB8K,kBAAkB,CACvB,CACF,EACAI,gBAAgB,CAACtE,MAAM,CAAC,iBACvBpF,cAAA,CAAA,KAAA,EAAA;AAAKxB,UAAAA,SAAS,EAAC,wDAAwD;AAAAyE,UAAAA,QAAA,eACrEjD,cAAA,CAACoK,eAAY,EAAA7L,eAAA,CAAA;YACX8L,IAAI,EAAExL,cAAc,CAACuG,MAAM,CAAC/J,OAAO,EAAEkO,UAAU,EAAEE,aAAa,CAAE;YAChEa,IAAI,EAAElF,MAAM,CAACmF,QAAS;YACtBC,EAAE,EAAEC,WAAK,CAAC,OAAO,GAAAZ,cAAA,GAAEzE,MAAM,KAAA,IAAA,IAANA,MAAM,uBAANA,MAAM,CAAEtK,MAAM,MAAA,IAAA,IAAA+O,cAAA,cAAAA,cAAA,GAAI,EAAE,CAAE;YACzCzO,OAAO,EAAEyD,cAAc,CACrBuG,MAAM,CAAChK,OAAO,EACdoO,aAAa,EACb9H,gBACF;AAAE,WAAA,EACEqH,iBAAiB,CACtB;AAAC,SACC,CACN;AAAA,OACE,CAAC;AAAA,IAAA;AACP,GACgB,CAAC;AAExB;;;;ACtGA,IAAMa,iBAAiB,GAAG,SAApBA,iBAAiBA,CAAApM,IAAA,EAAA;AAAA,EAAA,IAAAoK,aAAA,GAAApK,IAAA,CACrBqK,QAAQ;AAARA,IAAAA,QAAQ,GAAAD,aAAA,KAAA,MAAA,GAAGE,cAAI,GAAAF,aAAA;IAAAG,kBAAA,GAAAvK,IAAA,CACfwK,aAAa;AAAbA,IAAAA,aAAa,GAAAD,kBAAA,KAAA,MAAA,GAAGlN,mBAAmB,GAAAkN,kBAAA;IACnC9E,QAAQ,GAAAzF,IAAA,CAARyF,QAAQ;IACRgF,WAAW,GAAAzK,IAAA,CAAXyK,WAAW;IAAAyC,qBAAA,GAAAlN,IAAA,CACX0K,gBAAgB;AAAEzK,IAAAA,iBAAiB,GAAAiN,qBAAA,KAAA,MAAA,GAAG,EAAE,GAAAA,qBAAA;IAAAvC,oBAAA,GAAA3K,IAAA,CACxCN,eAAe;AAAfA,IAAAA,eAAe,GAAAiL,oBAAA,KAAA,MAAA,GAAG,KAAK,GAAAA,oBAAA;IAAAC,qBAAA,GAAA5K,IAAA,CACvBJ,gBAAgB;AAAhBA,IAAAA,gBAAgB,GAAAgL,qBAAA,KAAA,MAAA,GAAG,KAAK,GAAAA,qBAAA;IAAAC,qBAAA,GAAA7K,IAAA,CACxBL,iBAAiB;AAAjBA,IAAAA,iBAAiB,GAAAkL,qBAAA,KAAA,MAAA,GAAG,KAAK,GAAAA,qBAAA;IAAAG,gBAAA,GAAAhL,IAAA,CACzBH,WAAW;AAAXA,IAAAA,WAAW,GAAAmL,gBAAA,KAAA,MAAA,GAAG,KAAK,GAAAA,gBAAA;IAAAC,iBAAA,GAAAjL,IAAA,CACnBF,YAAY;AAAZA,IAAAA,YAAY,GAAAmL,iBAAA,KAAA,MAAA,GAAG,KAAK,GAAAA,iBAAA;IAAAE,cAAA,GAAAnL,IAAA,CACpBvB,SAAS;AAATA,IAAAA,SAAS,GAAA0M,cAAA,KAAA,MAAA,GAAG,EAAE,GAAAA,cAAA;AAAA,EAAA,oBAEd3I,cAAA,CAAA,KAAA,EAAA;AAAK,IAAA,aAAA,EAAY,qBAAqB;AAAAiD,IAAAA,QAAA,eACpCjD,cAAA,CAAChD,gBAAgB,CAAC2N,QAAQ,EAAA;AACxB7O,MAAAA,KAAK,EAAE;AACLoB,QAAAA,eAAe,EAAfA,eAAe;AACfC,QAAAA,iBAAiB,EAAjBA,iBAAiB;AACjBC,QAAAA,gBAAgB,EAAhBA,gBAAgB;AAChBC,QAAAA,WAAW,EAAXA,WAAW;AACXC,QAAAA,YAAY,EAAZA;OACA;MAAA2F,QAAA,eAEFjD,cAAA,CAAC4K,aAAI,EAAA;AACH3C,QAAAA,WAAW,EAAA1J,aAAA,CAAA;AACTsM,UAAAA,kBAAkB,EAAE,IAAI;UACxB3C,gBAAgB,EAAE3K,mBAAmB,CAAC;AACpCL,YAAAA,eAAe,EAAfA,eAAe;AACfE,YAAAA,gBAAgB,EAAhBA,gBAAgB;AAChBD,YAAAA,iBAAiB,EAAjBA,iBAAiB;AACjBM,YAAAA,iBAAiB,EAAjBA,iBAAiB;AACjBxB,YAAAA,SAAS,EAATA;AACF,WAAC,CAAC;AACF+L,UAAAA,aAAa,EAAbA,aAAa;AACbH,UAAAA,QAAQ,EAARA;AAAQ,SAAA,EACLI,WAAW,CACd;AAAAhF,QAAAA,QAAA,EAEDA;OACG;KACmB;AAAC,GACzB,CAAC;AAAA;;;;;;;"}
1
+ {"version":3,"file":"EmailForm.js","sources":["../../../src/v2/components/EmailForm/constants.js","../../../src/v2/components/EmailForm/contexts/EmailForm.js","../../../src/v2/components/EmailForm/utils.js","../../../src/v2/components/EmailForm/ReplyToField.jsx","../../../src/v2/components/EmailForm/SendToField.jsx","../../../src/v2/components/EmailForm/SendToQuestionField.jsx","../../../src/v2/components/EmailForm/SubjectField.jsx","../../../src/v2/components/EmailForm/EmailForm.jsx","../../../src/v2/components/EmailForm/EmailFormComponent/index.jsx","../../../src/v2/components/EmailForm/EmailFormProvider.jsx"],"sourcesContent":["import { t } from \"i18next\";\nimport { isEditorEmpty } from \"neetoeditor/v2\";\nimport { prop } from \"ramda\";\nimport * as yup from \"yup\";\n\nexport const INITIAL_FORM_VALUES = {\n sendTo: [],\n sendToId: \"\",\n sendToCc: [],\n sendToBcc: [],\n replyTo: \"\",\n showCopyEmails: false,\n subject: \"\",\n message: \"\",\n isEnabled: false,\n};\n\nexport const EMAIL_FORM_VALIDATION_SCHEMA = yup.object({\n subject: yup\n .string()\n .required(t(\"neetoMolecules.emailForm.errors.subjectRequired\")),\n message: yup\n .string()\n .test(\n \"message\",\n t(\"neetoMolecules.emailForm.errors.messageRequired\"),\n value => !isEditorEmpty(value)\n ),\n});\n\nexport const sendToFieldValidation = maxEmails => {\n const validation = yup\n .array()\n .test(\n \"all-emails-valid\",\n t(\"neetoMolecules.emailForm.errors.invalidEmailAddress\"),\n emails => emails?.every(prop(\"valid\"))\n )\n .test(\n \"max-email-count\",\n t(\"neetoMolecules.emailForm.errors.maxEmails\", { count: maxEmails }),\n emails => emails?.length <= maxEmails\n );\n\n return yup.object({\n sendTo: validation\n .min(\n 1,\n t(\"neetoMolecules.emailForm.errors.required\", {\n entity: t(\"neetoMolecules.emailForm.fields.sendToEmailAddress\"),\n })\n )\n .nullable(),\n sendToCc: validation,\n sendToBcc: validation,\n });\n};\n\nexport const SEND_TO_ID_FIELD_VALIDATION = yup.object({\n sendToId: yup.string().required(\n t(\"neetoMolecules.emailForm.errors.required\", {\n entity: t(\"neetoMolecules.emailForm.labels.sendTo\"),\n })\n ),\n});\n\nexport const REPLY_TO_FIELD_VALIDATION = yup.object({\n replyTo: yup\n .string()\n .nullable()\n .email(t(\"neetoMolecules.emailForm.errors.invalidEmailAddress\"))\n .required(\n t(\"neetoMolecules.emailForm.errors.required\", {\n entity: t(\"neetoMolecules.emailForm.fields.replyToEmailAddress\"),\n })\n ),\n});\n\nexport const EDITOR_ADDONS = [\n \"highlight\",\n \"emoji\",\n \"code-block\",\n \"block-quote\",\n \"image-upload\",\n \"divider\",\n \"video-embed\",\n];\n\nexport const ALLOWED_FILE_PICKER_TYPES = [\".csv\"];\n","/* eslint-disable @bigbinary/neeto/use-zustand-for-global-state-management */\nimport { createContext } from \"react\";\n\nconst EmailFormContext = createContext({\n showSendToField: false,\n showSendToAsRadio: false,\n showSendToAsSelect: false,\n showReplyToField: false,\n showCcField: false,\n showBccField: false,\n});\n\nexport { EmailFormContext };\n","import { t } from \"i18next\";\nimport { isPresent } from \"neetocist\";\n\nimport {\n EMAIL_FORM_VALIDATION_SCHEMA,\n REPLY_TO_FIELD_VALIDATION,\n sendToFieldValidation,\n SEND_TO_ID_FIELD_VALIDATION,\n} from \"./constants\";\n\nexport const getValidationSchema = ({\n showSendToField,\n showReplyToField,\n showSendToAsRadio,\n showSendToAsSelect,\n customValidations,\n maxEmails,\n}) => {\n let schema = EMAIL_FORM_VALIDATION_SCHEMA.clone();\n\n if (showSendToField) {\n schema = schema.concat(\n showSendToAsRadio || showSendToAsSelect\n ? SEND_TO_ID_FIELD_VALIDATION\n : sendToFieldValidation(maxEmails)\n );\n }\n\n if (showReplyToField) schema = schema.concat(REPLY_TO_FIELD_VALIDATION);\n\n const isYupObject = customValidations.type === \"object\";\n\n if (isYupObject) {\n const customFields = customValidations.fields || {};\n schema = schema.shape(customFields);\n } else if (typeof customValidations === \"object\") {\n schema = schema.shape(customValidations);\n }\n\n return schema;\n};\n\nexport const getReplyToFieldLabelProps = ({ popoverProps }) => ({\n helpIconProps: {\n className: \"reply-to-help-icon\",\n ...(isPresent(popoverProps)\n ? {\n popoverProps: {\n ...popoverProps,\n description:\n popoverProps.description ||\n t(\"neetoMolecules.emailForm.tooltips.replyTo\"),\n },\n }\n : {\n tooltipProps: {\n content: t(\"neetoMolecules.emailForm.tooltips.replyTo\"),\n },\n }),\n },\n});\n\nexport const resolveContent = (content, func, variable) => {\n if (typeof func === \"function\") {\n return func(content, variable);\n }\n\n return content;\n};\n\nexport const normalizeHtmlString = str => {\n if (typeof str !== \"string\") return str;\n\n return str\n .replace(/\\uFEFF/g, \"\")\n .replace(/\\r\\n|\\r/g, \"\\n\")\n .replace(/&nbsp;/g, \" \")\n .replace(/[\\t ]+/g, \" \")\n .replace(/\\s*\\n\\s*/g, \"\\n\")\n .replace(/\\n+/g, \"\\n\")\n .replace(/>\\s+</g, \"><\")\n .trim();\n};\n","import { Input, Select } from \"@bigbinary/neeto-atoms/formik\";\nimport { useFormikContext } from \"formik\";\nimport { isNotEmpty } from \"neetocist\";\nimport { useTranslation } from \"react-i18next\";\n\nimport { getReplyToFieldLabelProps } from \"./utils\";\n\nconst ReplyToField = ({ options = [], popoverProps = {} }) => {\n const { t } = useTranslation();\n const { setFieldValue } = useFormikContext();\n\n const isDropdownField = isNotEmpty(options);\n const labelProps = getReplyToFieldLabelProps({ popoverProps });\n\n if (isDropdownField) {\n return (\n <Select\n {...{ labelProps, options }}\n isClearable\n className=\"w-full\"\n data-testid=\"reply-to-select-field\"\n label={t(\"neetoMolecules.emailForm.labels.replyTo\")}\n name=\"replyTo\"\n size=\"large\"\n onChange={value => setFieldValue(\"replyTo\", value ?? \"\")}\n />\n );\n }\n\n return (\n <Input\n {...{ labelProps }}\n autoFocus\n required\n className=\"w-full\"\n data-testid=\"reply-to-input-field\"\n label={t(\"neetoMolecules.emailForm.labels.replyTo\")}\n name=\"replyTo\"\n placeholder={t(\"neetoMolecules.emailForm.placeholders.emailPlaceholder\")}\n size=\"large\"\n onChange={event =>\n setFieldValue(\"replyTo\", event.target.value?.toLowerCase())\n }\n />\n );\n};\n\nexport default ReplyToField;\n","import { useTranslation } from \"react-i18next\";\n\nimport SendToFields from \"../SendToFields\";\n\nconst SendToField = ({ showBccField, showCcField, showSendToTextField }) => {\n const { t } = useTranslation();\n\n if (!showSendToTextField && !showBccField && !showCcField) return null;\n\n return (\n <SendToFields\n showCcBccButton\n showBccField={showSendToTextField ? false : showBccField}\n showCcField={showSendToTextField ? false : showCcField}\n showSendToField={showSendToTextField}\n bccInputProps={{\n label: t(\"neetoMolecules.emailForm.labels.bCc\"),\n name: \"sendToBcc\",\n placeholder: t(\n \"neetoMolecules.emailForm.placeholders.commaSeparatedEmails\"\n ),\n }}\n ccInputProps={{\n label: t(\"neetoMolecules.emailForm.labels.cc\"),\n name: \"sendToCc\",\n placeholder: t(\n \"neetoMolecules.emailForm.placeholders.commaSeparatedEmails\"\n ),\n }}\n emailInputProps={{\n id: \"sendTo\",\n name: \"sendTo\",\n label: t(\"neetoMolecules.emailForm.labels.sendTo\"),\n placeholder: t(\n \"neetoMolecules.emailForm.placeholders.commaSeparatedEmails\"\n ),\n required: true,\n }}\n />\n );\n};\n\nexport default SendToField;\n","import { useEffect } from \"react\";\n\nimport { Input } from \"@bigbinary/neeto-atoms\";\nimport { Select } from \"@bigbinary/neeto-atoms/formik\";\nimport { FieldLegend, FieldSet } from \"@bigbinary/neeto-atoms/primitives\";\nimport { useField } from \"formik\";\nimport { Mail } from \"lucide-react\";\nimport { findBy } from \"neetocist\";\nimport { useTranslation } from \"react-i18next\";\n\nconst renderOptionLabel = ({ label }) => (\n <span className=\"flex min-w-0 items-center gap-2\">\n <Mail aria-hidden className=\"text-muted-foreground size-4 shrink-0\" />\n <span className=\"truncate\" title={label}>\n {label}\n </span>\n </span>\n);\n\nconst SendToQuestionField = ({ options }) => {\n const { t } = useTranslation();\n const [field, meta, { setValue }] = useField(\"sendToId\");\n const singleOptionValue = options.length === 1 ? options[0].value : undefined;\n const selectedOption = findBy({ value: field.value }, options);\n\n useEffect(() => {\n if (singleOptionValue !== undefined && field.value !== singleOptionValue) {\n setValue(singleOptionValue);\n }\n }, [field.value, setValue, singleOptionValue]);\n\n const fieldProps = {\n required: true,\n label: t(\"neetoMolecules.emailForm.labels.getEmailAddressFrom\"),\n labelProps: {\n className:\n \"text-muted-foreground font-normal [&>.text-destructive]:hidden\",\n },\n className: \"grid items-center gap-3 sm:grid-cols-[auto_minmax(0,1fr)]\",\n size: \"large\",\n };\n\n return (\n <FieldSet className=\"w-full gap-3 p-0\" data-testid=\"send-to-id\">\n <FieldLegend className=\"flex items-center gap-2\" variant=\"label\">\n {t(\"neetoMolecules.emailForm.labels.sendTo\")}\n <span aria-hidden className=\"text-destructive\">\n *\n </span>\n </FieldLegend>\n {options.length === 1 ? (\n <Input\n {...fieldProps}\n readOnly\n error={meta.touched ? meta.error : undefined}\n prefix={<Mail aria-hidden />}\n value={selectedOption?.label || \"\"}\n />\n ) : (\n <Select\n {...{ ...fieldProps, options }}\n formatOptionLabel={renderOptionLabel}\n isSearchable={false}\n name=\"sendToId\"\n />\n )}\n </FieldSet>\n );\n};\n\nexport default SendToQuestionField;\n","import { useState } from \"react\";\n\nimport { Input } from \"@bigbinary/neeto-atoms\";\nimport { withEventTargetValue } from \"neetocommons/v2/utils/general\";\nimport { useTranslation } from \"react-i18next\";\n\nimport DynamicVariables from \"../DynamicVariables\";\n\nconst SubjectField = ({\n name,\n text,\n updateText,\n subjectVariables = [],\n error,\n required = false,\n onBlur,\n}) => {\n const [isFieldFocusedOnce, setIsFieldFocusedOnce] = useState(false);\n\n const { t } = useTranslation();\n\n const tagClickHandler = ({ key: slug, category }) => {\n const inputElement = document.querySelector(`[name=${name}]`);\n const splitIndex =\n isFieldFocusedOnce && inputElement\n ? inputElement.selectionEnd\n : text.length;\n\n const variable = category ? `${category}.${slug}` : slug;\n const updatedSubject = [\n text.slice(0, splitIndex),\n ` {{${variable}}}`,\n text.slice(splitIndex),\n ].join(\"\");\n updateText(updatedSubject);\n };\n\n return (\n <Input\n {...{ error, name, onBlur, required }}\n label={t(\"neetoMolecules.emailForm.labels.subject\")}\n placeholder={t(\"neetoMolecules.emailForm.placeholders.subject\")}\n size=\"large\"\n value={text}\n suffix={\n <div className=\"me-2 inline-flex\">\n <DynamicVariables\n buttonProps={{ className: \"self-center\" }}\n dropdownProps={{ className: \"overflow-y-auto\" }}\n variables={subjectVariables}\n onVariableClick={tagClickHandler}\n />\n </div>\n }\n onChange={withEventTargetValue(updateText)}\n onFocus={() => setIsFieldFocusedOnce(true)}\n />\n );\n};\n\nexport default SubjectField;\n","import { useContext } from \"react\";\n\nimport { Button } from \"@bigbinary/neeto-atoms\";\nimport { ActionBlock, RadioGroup } from \"@bigbinary/neeto-atoms/formik\";\nimport classnames from \"classnames\";\nimport { Field, useFormikContext } from \"formik\";\nimport { isNotEmpty, notEqualsDeep } from \"neetocist\";\nimport { FormikEditor } from \"neetoeditor/v2\";\nimport PropTypes from \"prop-types\";\nimport { equals } from \"ramda\";\nimport { useTranslation } from \"react-i18next\";\n\nimport { EDITOR_ADDONS } from \"./constants\";\nimport { EmailFormContext } from \"./contexts/EmailForm\";\nimport ReplyToField from \"./ReplyToField\";\nimport SendToField from \"./SendToField\";\nimport SendToQuestionField from \"./SendToQuestionField\";\nimport SubjectField from \"./SubjectField\";\nimport { normalizeHtmlString } from \"./utils\";\n\nconst EmailForm = ({\n messageVariables = [],\n subjectVariables = [],\n handleCancel,\n handleResetToDefault,\n isLoading,\n replyToFieldProps,\n sendToFieldProps,\n replyToOptions,\n sendToOptions = [],\n isUpdating = false,\n isResetting = false,\n showFields = true,\n className = \"\",\n editorAddons = EDITOR_ADDONS,\n showResetToDefaultButton,\n editorRef = null,\n defaultValues = {},\n}) => {\n const { t } = useTranslation();\n\n const {\n showSendToField,\n showSendToAsRadio,\n showSendToAsSelect,\n showReplyToField,\n showCcField,\n showBccField,\n } = useContext(EmailFormContext);\n\n const { setFieldValue, values, resetForm } = useFormikContext();\n\n const normalizedValues = {\n ...values,\n message: normalizeHtmlString(values.message),\n };\n\n const normalizedDefaultValues = {\n ...defaultValues,\n message: normalizeHtmlString(defaultValues?.message),\n };\n\n const disabled = equals(normalizedValues, normalizedDefaultValues);\n\n const sendToFieldOptions = sendToFieldProps?.options || sendToOptions;\n const showSendToSelectField = showSendToField && showSendToAsSelect;\n const showSendToRadioField =\n showSendToField &&\n showSendToAsRadio &&\n !showSendToSelectField &&\n isNotEmpty(sendToFieldOptions);\n\n const showSendToTextField =\n showSendToField && !showSendToSelectField && !showSendToRadioField;\n\n return (\n <div\n data-testid=\"email-form\"\n className={classnames(\"flex flex-1 flex-col items-start gap-2 !pb-0\", {\n [className]: className,\n })}\n >\n <div className=\"w-full grow\">\n {showFields && (\n <div className=\"flex w-full flex-col items-start justify-start gap-5\">\n {showSendToSelectField && (\n <SendToQuestionField options={sendToFieldOptions} />\n )}\n {showSendToRadioField && (\n <RadioGroup\n className=\"pb-2\"\n data-testid=\"send-to-id\"\n label={t(\"neetoMolecules.emailForm.labels.sendTo\")}\n labelProps={{ required: true }}\n name=\"sendToId\"\n >\n {sendToFieldOptions.map(({ label, value }) => (\n <RadioGroup.Item {...{ label, value }} key={value} />\n ))}\n </RadioGroup>\n )}\n <SendToField\n {...{ showBccField, showCcField, showSendToTextField }}\n />\n {showReplyToField && (\n <div className=\"w-full\">\n <ReplyToField options={replyToOptions} {...replyToFieldProps} />\n </div>\n )}\n <Field name=\"subject\">\n {({ field: { value, onBlur }, meta: { error, touched } }) => (\n <div className=\"w-full\">\n <SubjectField\n {...{ onBlur, subjectVariables }}\n required\n error={touched && error ? t(error) : undefined}\n name=\"subject\"\n text={value}\n updateText={text => setFieldValue(\"subject\", text)}\n />\n </div>\n )}\n </Field>\n <div className=\"w-full\" data-testid=\"message-input-container\">\n <FormikEditor\n required\n addons={editorAddons}\n data-testid=\"message-input-field\"\n hideSlashCommands={false}\n id=\"form_message\"\n menuType=\"fixed\"\n name=\"message\"\n placeholder={t(\"neetoMolecules.emailForm.placeholders.message\")}\n ref={editorRef}\n variables={messageVariables}\n shouldUpdate={(nextProps, prevProps) =>\n notEqualsDeep(nextProps.variables, prevProps.variables)\n }\n />\n </div>\n </div>\n )}\n </div>\n <div className=\"bg-background z-10 flex w-full justify-between py-6 lg:sticky lg:bottom-0\">\n <ActionBlock\n cancelButtonProps={{ onClick: handleCancel }}\n isSubmitting={isLoading || isUpdating}\n />\n {showResetToDefaultButton && (\n <div>\n <Button\n {...{ disabled }}\n data-testid=\"reset-to-default-button\"\n label={t(\"neetoMolecules.emailForm.labels.resetToDefault\")}\n loading={isResetting}\n variant=\"secondary\"\n onClick={() => {\n resetForm();\n handleResetToDefault();\n }}\n />\n </div>\n )}\n </div>\n </div>\n );\n};\n\nEmailForm.propTypes = {\n /**\n * This is an array of objects used for templating within the message field. Each object in the array has a **label** and a **key**.\n */\n messageVariables: PropTypes.array,\n /**\n * This is an array of objects used for templating within the subject field. Each object in the array has a **label** and a **key**.\n */\n subjectVariables: PropTypes.array,\n /**\n * This function that gets triggered when the 'Cancel' button is clicked.\n */\n handleCancel: PropTypes.func,\n /**\n * This function that gets triggered when the 'Reset to default' button is clicked.\n */\n handleResetToDefault: PropTypes.func,\n /**\n * This Boolean value, when set to true, triggers the display of a loading indicator on the 'Save changes' button.\"\n */\n isLoading: PropTypes.bool,\n /**\n * This Boolean value, when set to true, triggers the display of a loading indicator on the 'Reset to default' button.\n */\n isResetting: PropTypes.bool,\n /**\n * An array of objects, with each object having **label** and **value** properties. This prop transforms the 'Reply To' field into a dropdown menu with given options. Without this prop, 'Reply To' will be a text input field.\n */\n replyToOptions: PropTypes.array,\n /**\n * An array of objects, with each object having **label** and **value** properties. This prop transforms the 'Send To' field into a question selector with given options. Without this prop, 'Send To' will be a multi email input field.\n */\n sendToOptions: PropTypes.array,\n /**\n * A Boolean flag indicating whether an update operation is currently in progress. When set to `true`, the 'Save changes' button is disabled.\n */\n isUpdating: PropTypes.bool,\n /**\n * To provide additional classnames to the button.\n */\n className: PropTypes.string,\n /**\n * To provide props to the replyToField. Supports options that will\n * be rendered as the reply to options and popover props.\n */\n replyToFieldProps: PropTypes.object,\n /**\n * To provide props to the sendToField. Supports sendTo options.\n */\n sendToFieldProps: PropTypes.object,\n /**\n * This Boolean value, when set to true, shows reset to default button.\n */\n showResetToDefaultButton: PropTypes.bool,\n /**\n * A reference to the editor.\n */\n editorRef: PropTypes.any,\n /**\n * To override the default editor addons\n */\n editorAddons: PropTypes.array,\n /**\n * The default values for the email form.\n */\n defaultValues: PropTypes.object,\n};\n\nexport default EmailForm;\n","import { Tooltip } from \"@bigbinary/neeto-atoms\";\nimport { BlockNavigation, Switch } from \"@bigbinary/neeto-atoms/formik\";\nimport { noop, isNotEmpty } from \"neetocist\";\nimport PropTypes from \"prop-types\";\nimport { isEmpty, pluck } from \"ramda\";\n\nimport { EmailFormProvider, EmailForm, EmailPreview } from \"..\";\nimport Header from \"../../Header\";\nimport MobilePreviewHeader from \"../../MobilePreviewHeader\";\nimport { INITIAL_FORM_VALUES } from \"../constants\";\nimport { resolveContent } from \"../utils\";\n\nconst EmailFormComponent = ({\n onSubmit = noop,\n initialValues = INITIAL_FORM_VALUES,\n children,\n formikProps,\n validationSchema,\n showSendToField = false,\n showReplyToField = false,\n showSendToAsRadio = false,\n showSendToAsSelect = false,\n blockNavigation = true,\n showCcField = false,\n showBccField = false,\n isLoading = false,\n maxEmails = 10,\n emailFormProps = {},\n emailPreviewProps = {},\n headerProps = {},\n tooltipProps = {},\n switchProps = {},\n mobilePreviewProps = {},\n}) => {\n const { formatBody, formatSubject, bodyVariables, subjectVariables } =\n emailPreviewProps;\n\n const shouldShowFields = values => isEmpty(switchProps) || values.isEnabled;\n\n return (\n <EmailFormProvider\n {...{\n formikProps,\n initialValues,\n maxEmails,\n onSubmit,\n showBccField,\n showCcField,\n showReplyToField,\n showSendToAsRadio,\n showSendToAsSelect,\n showSendToField,\n validationSchema,\n }}\n >\n {({ values, isSubmitting }) => (\n <div className=\"flex h-[calc(100dvh-64px)] flex-grow flex-col overflow-y-auto lg:flex-row\">\n <div className=\"flex w-full flex-col px-5 md:px-10 lg:h-full lg:w-1/2 lg:overflow-y-auto\">\n {blockNavigation && <BlockNavigation />}\n {isNotEmpty(headerProps) && (\n <Header className=\"px-0\" size=\"small\" {...headerProps} />\n )}\n {isNotEmpty(switchProps) && (\n <div className=\"flex items-center justify-between gap-y-0.5 pb-6\">\n <Tooltip\n disabled={!switchProps?.disabled}\n position=\"top\"\n {...tooltipProps}\n >\n <div className=\"flex items-center gap-2\">\n <Switch\n data-testid=\"switch\"\n name=\"isEnabled\"\n {...switchProps}\n />\n </div>\n </Tooltip>\n </div>\n )}\n {shouldShowFields(values) && children}\n <EmailForm\n isLoading={isSubmitting || isLoading}\n isUpdating={isSubmitting || isLoading}\n showFields={shouldShowFields(values)}\n {...emailFormProps}\n />\n </div>\n {shouldShowFields(values) && (\n <MobilePreviewHeader\n className=\"lg:hidden\"\n {...mobilePreviewProps}\n />\n )}\n {shouldShowFields(values) && (\n <div className=\"bg-muted w-full px-6 py-10 lg:w-1/2 lg:overflow-y-auto\">\n <EmailPreview\n body={resolveContent(values.message, formatBody, bodyVariables)}\n from={values.sendFrom}\n to={pluck(\"value\", values?.sendTo ?? [])}\n subject={resolveContent(\n values.subject,\n formatSubject,\n subjectVariables\n )}\n {...emailPreviewProps}\n />\n </div>\n )}\n </div>\n )}\n </EmailFormProvider>\n );\n};\n\nEmailFormComponent.propTypes = {\n /**\n * A function that will be triggered with input values when the 'Save changes' button is clicked.\n */\n onSubmit: PropTypes.func,\n /**\n * These are the predefined values that populate the form fields when the form is first rendered.\n */\n initialValues: PropTypes.shape({\n sendTo: PropTypes.array,\n sendToId: PropTypes.string,\n sendToCc: PropTypes.array,\n sendToBcc: PropTypes.array,\n replyTo: PropTypes.string,\n showCopyEmails: PropTypes.bool,\n subject: PropTypes.string,\n message: PropTypes.string,\n isEnabled: PropTypes.bool,\n }),\n /**\n * A prop that can be used to override the default Formik properties that are set within the component, providing customization flexibility.\n */\n formikProps: PropTypes.object,\n /**\n * A Yup object defining custom form validation rules, which will be merged with the default rules using the concat method.\n */\n validationSchema: PropTypes.object,\n /**\n * A prop used for rendering either standard React element or a render prop function.\n */\n children: PropTypes.oneOfType([PropTypes.func, PropTypes.node]),\n /**\n * A Boolean value that determines whether the '**sendTo**' field should be displayed or not.\n */\n showSendToField: PropTypes.bool,\n /**\n * A Boolean value that determines whether the '**replyTo**' field should be displayed or not.\n */\n showReplyToField: PropTypes.bool,\n /**\n * A Boolean value that determines whether the '**sendTo**' field should be a radio group or not.\n */\n showSendToAsRadio: PropTypes.bool,\n /**\n * A Boolean value that determines whether the '**sendTo**' field should be a question selector or not.\n */\n showSendToAsSelect: PropTypes.bool,\n /**\n * A Boolean value that determines whether the '**Cc**' field should be displayed or not when showSendToField is false.\n * This prop has no effect when showSendToField is true.\n */\n showCcField: PropTypes.bool,\n /**\n * A Boolean value that determines whether the '**Bcc**' field should be displayed or not when showSendToField is false.\n * This prop has no effect when showSendToField is true.\n */\n showBccField: PropTypes.bool,\n /**\n * This Boolean value, when set to true, triggers the display of a loading indicator on the 'Save changes' button.\"\n */\n isLoading: PropTypes.bool,\n /**\n * A prop to limit number of send to emails\n */\n maxEmails: PropTypes.number,\n /**\n * These are the values that will be passed to EmailForm Component\n */\n emailFormProps: PropTypes.shape({\n messageVariables: PropTypes.array,\n subjectVariables: PropTypes.array,\n handleCancel: PropTypes.func,\n handleResetToDefault: PropTypes.func,\n isLoading: PropTypes.bool,\n replyToFieldProps: PropTypes.object,\n sendToFieldProps: PropTypes.object,\n replyToOptions: PropTypes.array,\n sendToOptions: PropTypes.array,\n isUpdating: PropTypes.bool,\n showFields: PropTypes.bool,\n className: PropTypes.string,\n showResetToDefaultButton: PropTypes.bool,\n editorRef: PropTypes.any,\n editorAddons: PropTypes.array,\n }),\n /**\n * These are the values that will be passed to EmailPreview Component\n */\n emailPreviewProps: PropTypes.shape({\n to: PropTypes.array,\n from: PropTypes.string,\n subject: PropTypes.string,\n body: PropTypes.string,\n actionButtonText: PropTypes.string,\n logo: PropTypes.string,\n customContent: PropTypes.string,\n className: PropTypes.string,\n formatBody: PropTypes.func,\n formatSubject: PropTypes.func,\n bodyVariables: PropTypes.object,\n subjectVariables: PropTypes.object,\n }),\n /**\n * These are the values that will be passed to Header Component\n */\n headerProps: PropTypes.object,\n /**\n * These are the values that will be passed to Tooltip Component\n */\n tooltipProps: PropTypes.object,\n /**\n * These are the values that will be passed to Switch Component\n */\n switchProps: PropTypes.object,\n /**\n * These are the values that will be passed to MobilePreviewHeader Component\n */\n mobilePreviewProps: PropTypes.object,\n};\n\nexport default EmailFormComponent;\n","import { Form } from \"@bigbinary/neeto-atoms/formik\";\nimport { noop } from \"neetocist\";\nimport PropTypes from \"prop-types\";\n\nimport { INITIAL_FORM_VALUES } from \"./constants\";\nimport { EmailFormContext } from \"./contexts/EmailForm\";\nimport { getValidationSchema } from \"./utils\";\n\nconst EmailFormProvider = ({\n onSubmit = noop,\n initialValues = INITIAL_FORM_VALUES,\n children,\n formikProps,\n validationSchema: customValidations = {},\n showSendToField = false,\n showReplyToField = false,\n showSendToAsRadio = false,\n showSendToAsSelect = false,\n showCcField = false,\n showBccField = false,\n maxEmails = 10,\n}) => (\n <div data-testid=\"email-form-provider\">\n <EmailFormContext.Provider\n value={{\n showSendToField,\n showSendToAsRadio,\n showSendToAsSelect,\n showReplyToField,\n showCcField,\n showBccField,\n }}\n >\n <Form\n formikProps={{\n enableReinitialize: true,\n validationSchema: getValidationSchema({\n showSendToField,\n showReplyToField,\n showSendToAsRadio,\n showSendToAsSelect,\n customValidations,\n maxEmails,\n }),\n initialValues,\n onSubmit,\n ...formikProps,\n }}\n >\n {children}\n </Form>\n </EmailFormContext.Provider>\n </div>\n);\n\nEmailFormProvider.propTypes = {\n /**\n * A Boolean value that determines whether the '**sendTo**' field should be displayed or not.\n */\n showSendToField: PropTypes.bool,\n /**\n * A Boolean value that determines whether the '**replyTo**' field should be displayed or not.\n */\n showReplyToField: PropTypes.bool,\n /**\n * A Boolean value that determines whether the '**sendTo**' field should be a radio group or not.\n */\n showSendToAsRadio: PropTypes.bool,\n /**\n * A Boolean value that determines whether the '**sendTo**' field should be a question selector or not.\n */\n showSendToAsSelect: PropTypes.bool,\n /**\n * A function that will be triggered with input values when the 'Save changes' button is clicked.\n */\n onSubmit: PropTypes.func,\n /**\n * These are the predefined values that populate the form fields when the form is first rendered.\n */\n initialValues: PropTypes.shape({\n sendTo: PropTypes.array,\n sendToId: PropTypes.string,\n sendToCc: PropTypes.array,\n sendToBcc: PropTypes.array,\n replyTo: PropTypes.string,\n showCopyEmails: PropTypes.bool,\n subject: PropTypes.string,\n message: PropTypes.string,\n }),\n /**\n * A prop used for rendering either standard React element or a render prop function.\n */\n children: PropTypes.oneOfType([PropTypes.func, PropTypes.node]),\n /**\n * A prop that can be used to override the default Formik properties that are set within the component, providing customization flexibility.\n */\n formikProps: PropTypes.object,\n /**\n * A Yup object defining custom form validation rules, which will be merged with the default rules using the concat method.\n */\n validationSchema: PropTypes.object,\n /**\n * A prop to limit number of send to emails\n */\n maxEmails: PropTypes.number,\n /**\n * A Boolean value that determines whether the '**Cc**' field should be displayed or not when showSendToField is false.\n * This prop has no effect when showSendToField is true.\n */\n showCcField: PropTypes.bool,\n /**\n * A Boolean value that determines whether the '**Bcc**' field should be displayed or not when showSendToField is false.\n * This prop has no effect when showSendToField is true.\n */\n showBccField: PropTypes.bool,\n};\n\nexport default EmailFormProvider;\n"],"names":["INITIAL_FORM_VALUES","sendTo","sendToId","sendToCc","sendToBcc","replyTo","showCopyEmails","subject","message","isEnabled","EMAIL_FORM_VALIDATION_SCHEMA","yup","object","string","required","t","test","value","isEditorEmpty","sendToFieldValidation","maxEmails","validation","array","emails","every","prop","count","length","min","entity","nullable","SEND_TO_ID_FIELD_VALIDATION","REPLY_TO_FIELD_VALIDATION","email","EDITOR_ADDONS","EmailFormContext","createContext","showSendToField","showSendToAsRadio","showSendToAsSelect","showReplyToField","showCcField","showBccField","getValidationSchema","_ref","customValidations","schema","clone","concat","isYupObject","type","customFields","fields","shape","_typeof","getReplyToFieldLabelProps","_ref2","popoverProps","helpIconProps","_objectSpread","className","isPresent","description","tooltipProps","content","resolveContent","func","variable","normalizeHtmlString","str","replace","trim","ReplyToField","_ref$options","options","_ref$popoverProps","_useTranslation","useTranslation","_useFormikContext","useFormikContext","setFieldValue","isDropdownField","isNotEmpty","labelProps","_jsx","Select","isClearable","label","name","size","onChange","Input","autoFocus","placeholder","event","_event$target$value","target","toLowerCase","SendToField","showSendToTextField","SendToFields","showCcBccButton","bccInputProps","ccInputProps","emailInputProps","id","renderOptionLabel","_jsxs","children","Mail","title","SendToQuestionField","_useField","useField","_useField2","_slicedToArray","field","meta","setValue","singleOptionValue","undefined","selectedOption","findBy","useEffect","fieldProps","FieldSet","FieldLegend","variant","readOnly","error","touched","prefix","formatOptionLabel","isSearchable","SubjectField","text","updateText","_ref$subjectVariables","subjectVariables","_ref$required","onBlur","_useState","useState","_useState2","isFieldFocusedOnce","setIsFieldFocusedOnce","tagClickHandler","slug","key","category","inputElement","document","querySelector","splitIndex","selectionEnd","updatedSubject","slice","join","suffix","DynamicVariables","buttonProps","dropdownProps","variables","onVariableClick","withEventTargetValue","onFocus","EmailForm","_ref$messageVariables","messageVariables","handleCancel","handleResetToDefault","isLoading","replyToFieldProps","sendToFieldProps","replyToOptions","_ref$sendToOptions","sendToOptions","_ref$isUpdating","isUpdating","_ref$isResetting","isResetting","_ref$showFields","showFields","_ref$className","_ref$editorAddons","editorAddons","showResetToDefaultButton","_ref$editorRef","editorRef","_ref$defaultValues","defaultValues","_useContext","useContext","values","resetForm","normalizedValues","normalizedDefaultValues","disabled","equals","sendToFieldOptions","showSendToSelectField","showSendToRadioField","classnames","_defineProperty","RadioGroup","map","_createElement","Item","Field","_ref3","_ref3$field","_ref3$meta","FormikEditor","addons","hideSlashCommands","menuType","ref","shouldUpdate","nextProps","prevProps","notEqualsDeep","ActionBlock","cancelButtonProps","onClick","isSubmitting","Button","loading","EmailFormComponent","_ref$onSubmit","onSubmit","noop","_ref$initialValues","initialValues","formikProps","validationSchema","_ref$showSendToField","_ref$showReplyToField","_ref$showSendToAsRadi","_ref$showSendToAsSele","_ref$blockNavigation","blockNavigation","_ref$showCcField","_ref$showBccField","_ref$isLoading","_ref$maxEmails","_ref$emailFormProps","emailFormProps","_ref$emailPreviewProp","emailPreviewProps","_ref$headerProps","headerProps","_ref$tooltipProps","_ref$switchProps","switchProps","_ref$mobilePreviewPro","mobilePreviewProps","formatBody","formatSubject","bodyVariables","shouldShowFields","isEmpty","EmailFormProvider","_values$sendTo","BlockNavigation","Header","Tooltip","position","Switch","MobilePreviewHeader","EmailPreview","body","from","sendFrom","to","pluck","_ref$validationSchema","Provider","Form","enableReinitialize"],"mappings":"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"}