@bigbinary/neeto-message-templates-frontend 1.2.0 → 1.3.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (56) hide show
  1. package/README.md +1 -6
  2. package/app/javascript/src/translations/en.json +4 -2
  3. package/dist/ApiTemplates.js +14 -11
  4. package/dist/ApiTemplates.js.map +1 -1
  5. package/dist/MessageTemplates.js +14 -417
  6. package/dist/MessageTemplates.js.map +1 -1
  7. package/dist/SendMessagePane.js +101 -29
  8. package/dist/SendMessagePane.js.map +1 -1
  9. package/dist/SendToApiPane.js +56 -26
  10. package/dist/SendToApiPane.js.map +1 -1
  11. package/dist/cjs/ApiTemplates.js +48 -63
  12. package/dist/cjs/ApiTemplates.js.map +1 -1
  13. package/dist/cjs/MessageTemplates.js +64 -487
  14. package/dist/cjs/MessageTemplates.js.map +1 -1
  15. package/dist/cjs/SendMessagePane.js +125 -66
  16. package/dist/cjs/SendMessagePane.js.map +1 -1
  17. package/dist/cjs/SendToApiPane.js +66 -45
  18. package/dist/cjs/SendToApiPane.js.map +1 -1
  19. package/dist/cjs/index.js +22 -16
  20. package/dist/cjs/index.js.map +1 -1
  21. package/dist/constants-CqiptWxr.js +49 -0
  22. package/dist/constants-CqiptWxr.js.map +1 -0
  23. package/dist/constants-D4v0xTUu.js +44 -0
  24. package/dist/constants-D4v0xTUu.js.map +1 -0
  25. package/dist/index.js +22 -14
  26. package/dist/index.js.map +1 -1
  27. package/dist/useTemplatesApi-CSsaKyRi.js +110 -0
  28. package/dist/useTemplatesApi-CSsaKyRi.js.map +1 -0
  29. package/dist/useTemplatesApi-D63swqeh.js +105 -0
  30. package/dist/useTemplatesApi-D63swqeh.js.map +1 -0
  31. package/dist/{utils-b93467c8.js → utils-BUob2F8X.js} +1 -1
  32. package/dist/{utils-b93467c8.js.map → utils-BUob2F8X.js.map} +1 -1
  33. package/dist/utils-CdkVjz8p.js +80 -0
  34. package/dist/utils-CdkVjz8p.js.map +1 -0
  35. package/dist/utils-DCNzEjAw.js +83 -0
  36. package/dist/utils-DCNzEjAw.js.map +1 -0
  37. package/dist/{utils-90248b52.js → utils-aj-r79qQ.js} +10 -17
  38. package/dist/{utils-90248b52.js.map → utils-aj-r79qQ.js.map} +1 -1
  39. package/package.json +108 -89
  40. package/types.d.ts +1 -2
  41. package/dist/NoDataPage-00b22095.js +0 -58
  42. package/dist/NoDataPage-00b22095.js.map +0 -1
  43. package/dist/NoDataPage-4ba91a9f.js +0 -51
  44. package/dist/NoDataPage-4ba91a9f.js.map +0 -1
  45. package/dist/slicedToArray-b4278ecd.js +0 -57
  46. package/dist/slicedToArray-b4278ecd.js.map +0 -1
  47. package/dist/slicedToArray-f320d9e7.js +0 -61
  48. package/dist/slicedToArray-f320d9e7.js.map +0 -1
  49. package/dist/toConsumableArray-1cc38429.js +0 -20
  50. package/dist/toConsumableArray-1cc38429.js.map +0 -1
  51. package/dist/toConsumableArray-9abb3858.js +0 -22
  52. package/dist/toConsumableArray-9abb3858.js.map +0 -1
  53. package/dist/useTemplatesApi-45d43d41.js +0 -2240
  54. package/dist/useTemplatesApi-45d43d41.js.map +0 -1
  55. package/dist/useTemplatesApi-943ef380.js +0 -2256
  56. package/dist/useTemplatesApi-943ef380.js.map +0 -1
@@ -1,12 +1,15 @@
1
- import { D as DEFAULT_EDITOR_ROW_COUNT, _ as _defineProperty, M as MESSAGE_TEMPLATES, b as useFetchTemplates, e as MESSAGE_TYPES } from './useTemplatesApi-45d43d41.js';
2
- import { renameKeys, findBy, isNotEmpty, capitalize, nullSafe, noop } from '@bigbinary/neeto-cist';
1
+ import _defineProperty from '@babel/runtime/helpers/defineProperty';
2
+ import { isPresent, renameKeys, findBy, isNotEmpty, capitalize, nullSafe, noop } from '@bigbinary/neeto-cist';
3
3
  import Pane from '@bigbinary/neetoui/Pane';
4
4
  import Spinner from '@bigbinary/neetoui/Spinner';
5
5
  import Typography from '@bigbinary/neetoui/Typography';
6
- import { pick, mergeAll, omit, pluck, isEmpty } from 'ramda';
7
- import { useTranslation } from 'react-i18next';
8
- import { N as NoDataPage } from './NoDataPage-4ba91a9f.js';
9
- import { _ as _slicedToArray } from './slicedToArray-b4278ecd.js';
6
+ import { omit, mergeAll, pluck, isEmpty } from 'ramda';
7
+ import { useTranslation, Trans } from 'react-i18next';
8
+ import Button from '@bigbinary/neetoui/Button';
9
+ import { M as MESSAGE_TEMPLATES, a as MESSAGE_TYPES, b as DEFAULT_EDITOR_ROW_COUNT } from './constants-D4v0xTUu.js';
10
+ import { jsx, jsxs, Fragment } from 'react/jsx-runtime';
11
+ import { b as useFetchTemplates } from './useTemplatesApi-D63swqeh.js';
12
+ import _slicedToArray from '@babel/runtime/helpers/slicedToArray';
10
13
  import { useRef } from 'react';
11
14
  import FormikEditor from '@bigbinary/neeto-editor/FormikEditor';
12
15
  import Select from '@bigbinary/neetoui/Select';
@@ -14,33 +17,87 @@ import ActionBlock from '@bigbinary/neetoui/formik/ActionBlock';
14
17
  import NeetoUIForm from '@bigbinary/neetoui/formik/Form';
15
18
  import Input from '@bigbinary/neetoui/formik/Input';
16
19
  import * as yup from 'yup';
20
+ import { S as SaveAsTemplate, a as areValuesEqual } from './utils-CdkVjz8p.js';
17
21
  import { t } from 'i18next';
18
- import { jsx, jsxs, Fragment } from 'react/jsx-runtime';
19
22
  import Textarea from '@bigbinary/neetoui/Textarea';
20
23
  import Select$1 from '@bigbinary/neetoui/formik/Select';
21
24
  import '@bigbinary/neeto-commons-frontend/constants';
22
25
  import '@tanstack/react-query';
23
26
  import '@bigbinary/neeto-commons-frontend/react-utils';
24
27
  import 'axios';
25
- import 'util';
26
- import '@bigbinary/neetoui/Button';
28
+ import 'qs';
29
+ import 'formik';
30
+ import '@babel/runtime/helpers/objectWithoutProperties';
31
+ import 'classnames';
32
+ import '@bigbinary/neetoui/Label';
33
+ import '@bigbinary/neetoui/formik/Switch';
34
+
35
+ var NoDataPage = function NoDataPage(_ref) {
36
+ var type = _ref.type,
37
+ _ref$helpDocUrl = _ref.helpDocUrl,
38
+ helpDocUrl = _ref$helpDocUrl === void 0 ? "" : _ref$helpDocUrl;
39
+ var _useTranslation = useTranslation(),
40
+ t = _useTranslation.t;
41
+ var label = MESSAGE_TEMPLATES[type].label;
42
+ if (type === MESSAGE_TYPES.whatsapp) {
43
+ return /*#__PURE__*/jsx("div", {
44
+ className: "flex h-full w-full items-center justify-center px-6 text-center",
45
+ children: /*#__PURE__*/jsxs(Typography, {
46
+ children: [t("neetoMessageTemplate.template.emptyState", {
47
+ type: t("neetoMessageTemplate.template.whatsappTemplates")
48
+ }), " ", helpDocUrl && /*#__PURE__*/jsx(Trans, {
49
+ i18nKey: "neetoMessageTemplate.template.whatsapp.helpDocText",
50
+ components: {
51
+ Link: /*#__PURE__*/jsx(Button, {
52
+ href: helpDocUrl,
53
+ size: "large",
54
+ style: "link"
55
+ })
56
+ }
57
+ })]
58
+ })
59
+ });
60
+ }
61
+ return /*#__PURE__*/jsx("div", {
62
+ className: "flex h-full w-full flex-col items-center justify-center",
63
+ children: /*#__PURE__*/jsx(Typography, {
64
+ children: t("neetoMessageTemplate.template.emptyState", {
65
+ type: label
66
+ })
67
+ })
68
+ });
69
+ };
27
70
 
28
71
  var formatEditorContent = function formatEditorContent(value) {
29
72
  return value === null || value === void 0 ? void 0 : value.replaceAll(/<\/?(?!img)\w*\b[^>]*>/gi, "").trim();
30
73
  };
31
74
  var SEND_MESSAGE_INITIAL_VALUES = {
32
75
  subject: "",
33
- body: ""
76
+ body: "",
77
+ shouldSaveAsTemplate: false,
78
+ templateName: ""
34
79
  };
35
80
  var EMAIL_MESSAGE_FORM_SCHEMA = yup.object().shape({
36
81
  subject: yup.string().trim().required(t("neetoMessageTemplate.template.validation.subjectPresence")),
37
82
  body: yup.string().test("body", t("neetoMessageTemplate.template.validation.bodyPresence"), function (value) {
38
83
  return !!formatEditorContent(value);
39
- }).required(t("neetoMessageTemplate.template.validation.bodyPresence"))
84
+ }).required(t("neetoMessageTemplate.template.validation.bodyPresence")),
85
+ templateName: yup.string().when("shouldSaveAsTemplate", {
86
+ is: true,
87
+ then: yup.string().required(t("neetoMessageTemplate.template.validation.requiredEntity", {
88
+ entity: t("neetoMessageTemplate.template.templateName")
89
+ }))
90
+ })
40
91
  });
41
92
  var SMS_MESSAGE_FORM_VALIDATION_SCHEMA = yup.object().shape({
42
93
  body: yup.string().required(t("neetoMessageTemplate.template.validation.bodyPresence")).test("body", t("neetoMessageTemplate.template.validation.bodyPresence"), function (value) {
43
94
  return !!formatEditorContent(value);
95
+ }),
96
+ templateName: yup.string().when("shouldSaveAsTemplate", {
97
+ is: true,
98
+ then: yup.string().required(t("neetoMessageTemplate.template.validation.requiredEntity", {
99
+ entity: t("neetoMessageTemplate.template.templateName")
100
+ }))
44
101
  })
45
102
  });
46
103
  var WHATSAPP_MESSAGE_FORM_VALIDATIONS_SCHEMA = yup.object().shape({
@@ -60,18 +117,32 @@ var EmailAndSms = function EmailAndSms(_ref) {
60
117
  customFieldsInitialValues = _ref.customFieldsInitialValues,
61
118
  customFieldsValidationSchema = _ref.customFieldsValidationSchema,
62
119
  type = _ref.type,
63
- handleSubmit = _ref.handleSubmit;
120
+ handleSubmit = _ref.handleSubmit,
121
+ isSaveAsTemplateEnabled = _ref.isSaveAsTemplateEnabled;
64
122
  var editorRef = useRef(null);
65
123
  var _useTranslation = useTranslation(),
66
124
  t = _useTranslation.t;
67
125
  var isEmailTemplate = type === "email";
68
- var _ref2 = isEmailTemplate ? [SEND_MESSAGE_INITIAL_VALUES, EMAIL_MESSAGE_FORM_SCHEMA] : [pick(["body"], SEND_MESSAGE_INITIAL_VALUES), SMS_MESSAGE_FORM_VALIDATION_SCHEMA],
126
+ var _ref2 = isEmailTemplate ? [SEND_MESSAGE_INITIAL_VALUES, EMAIL_MESSAGE_FORM_SCHEMA] : [omit(["subject"], SEND_MESSAGE_INITIAL_VALUES), SMS_MESSAGE_FORM_VALIDATION_SCHEMA],
69
127
  _ref3 = _slicedToArray(_ref2, 2),
70
128
  INITIAL_VALUES = _ref3[0],
71
129
  SEND_MESSAGE_FORM_SCHEMA = _ref3[1];
72
130
  var updatedInitialValues = mergeAll([INITIAL_VALUES, customFieldsInitialValues]);
73
131
  var updatedValidationSchema = yup.object().shape(_objectSpread$2(_objectSpread$2({}, SEND_MESSAGE_FORM_SCHEMA === null || SEND_MESSAGE_FORM_SCHEMA === void 0 ? void 0 : SEND_MESSAGE_FORM_SCHEMA.fields), customFieldsValidationSchema === null || customFieldsValidationSchema === void 0 ? void 0 : customFieldsValidationSchema.fields));
74
- var initialValueKeys = Object.keys(INITIAL_VALUES);
132
+ var shouldShowSaveAsTemplate = function shouldShowSaveAsTemplate() {
133
+ var _ref4 = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {},
134
+ id = _ref4.id,
135
+ subject = _ref4.subject,
136
+ body = _ref4.body;
137
+ if (!isSaveAsTemplateEnabled) return false;
138
+ var template = findBy({
139
+ id: id
140
+ }, templates);
141
+ var hasContent = isPresent(subject) || isPresent(body);
142
+ var isContentDifferentFromTemplate = !(areValuesEqual(template === null || template === void 0 ? void 0 : template.subject, subject) && (template === null || template === void 0 ? void 0 : template.body) === body);
143
+ return hasContent && isContentDifferentFromTemplate;
144
+ };
145
+ var isTemplateSelectionEnabled = isPresent(templates);
75
146
  return /*#__PURE__*/jsx(NeetoUIForm, {
76
147
  formProps: {
77
148
  noValidate: true,
@@ -82,21 +153,20 @@ var EmailAndSms = function EmailAndSms(_ref) {
82
153
  validationSchema: updatedValidationSchema,
83
154
  onSubmit: handleSubmit
84
155
  },
85
- children: function children(_ref4) {
86
- var setValues = _ref4.setValues,
87
- values = _ref4.values;
156
+ children: function children(_ref5) {
157
+ var setValues = _ref5.setValues,
158
+ values = _ref5.values;
88
159
  var handleTemplateChange = function handleTemplateChange(value) {
89
- var _editorRef$current;
160
+ var _editorRef$current, _editorRef$current$ed, _editorRef$current$ed2;
90
161
  if (!value) return;
91
- var customFieldValues = omit(initialValueKeys, values);
92
162
  var template = findBy({
93
163
  id: value === null || value === void 0 ? void 0 : value.value
94
164
  }, templates);
95
- setValues(_objectSpread$2(_objectSpread$2({}, template), customFieldValues));
96
- (_editorRef$current = editorRef.current) === null || _editorRef$current === void 0 || (_editorRef$current = _editorRef$current.editor) === null || _editorRef$current === void 0 || (_editorRef$current = _editorRef$current.commands) === null || _editorRef$current === void 0 || _editorRef$current.setContent(template.body);
165
+ setValues(_objectSpread$2(_objectSpread$2({}, values), template));
166
+ (_editorRef$current = editorRef.current) === null || _editorRef$current === void 0 ? void 0 : (_editorRef$current$ed = _editorRef$current.editor) === null || _editorRef$current$ed === void 0 ? void 0 : (_editorRef$current$ed2 = _editorRef$current$ed.commands) === null || _editorRef$current$ed2 === void 0 ? void 0 : _editorRef$current$ed2.setContent(template.body);
97
167
  };
98
168
  return /*#__PURE__*/jsxs(Fragment, {
99
- children: [/*#__PURE__*/jsx(Select, {
169
+ children: [isTemplateSelectionEnabled && /*#__PURE__*/jsx(Select, {
100
170
  isClearable: true,
101
171
  isSearchable: true,
102
172
  innerRef: setFocusField,
@@ -110,10 +180,12 @@ var EmailAndSms = function EmailAndSms(_ref) {
110
180
  }), customFields, isEmailTemplate && /*#__PURE__*/jsx(Input, {
111
181
  required: true,
112
182
  label: t("neetoMessageTemplate.template.subject"),
113
- name: "subject"
183
+ name: "subject",
184
+ ref: isTemplateSelectionEnabled ? null : setFocusField
114
185
  }), /*#__PURE__*/jsx(FormikEditor, {
115
186
  hideSlashCommands: true,
116
187
  required: true,
188
+ autoFocus: !(isTemplateSelectionEnabled || isEmailTemplate),
117
189
  contentClassName: "max-h-40",
118
190
  defaults: isEmailTemplate ? undefined : [],
119
191
  label: t("neetoMessageTemplate.template.body"),
@@ -121,7 +193,7 @@ var EmailAndSms = function EmailAndSms(_ref) {
121
193
  ref: editorRef,
122
194
  rows: DEFAULT_EDITOR_ROW_COUNT,
123
195
  variables: templateVariables
124
- }), /*#__PURE__*/jsx(Pane.Footer, {
196
+ }), shouldShowSaveAsTemplate(values) && /*#__PURE__*/jsx(SaveAsTemplate, {}), /*#__PURE__*/jsx(Pane.Footer, {
125
197
  className: "absolute bottom-0 left-0",
126
198
  children: /*#__PURE__*/jsx(ActionBlock, {
127
199
  cancelButtonProps: {
@@ -153,7 +225,7 @@ var Whatsapp = function Whatsapp(_ref) {
153
225
  t = _useTranslation.t;
154
226
  var getInitialVariableComponents = function getInitialVariableComponents(variables) {
155
227
  var initialComponents = {};
156
- variables === null || variables === void 0 || variables.forEach(function (_ref2) {
228
+ variables === null || variables === void 0 ? void 0 : variables.forEach(function (_ref2) {
157
229
  var type = _ref2.type,
158
230
  count = _ref2.count;
159
231
  initialComponents[type] = Array(count).fill("");
@@ -291,8 +363,8 @@ var SendMessageForm = function SendMessageForm(_ref) {
291
363
  ownerId = _ref$ownerId === void 0 ? "" : _ref$ownerId,
292
364
  _ref$helpDocUrl = _ref.helpDocUrl,
293
365
  helpDocUrl = _ref$helpDocUrl === void 0 ? "" : _ref$helpDocUrl,
294
- _ref$addNewTemplateRo = _ref.addNewTemplateRoute,
295
- addNewTemplateRoute = _ref$addNewTemplateRo === void 0 ? "" : _ref$addNewTemplateRo,
366
+ _ref$isSaveAsTemplate = _ref.isSaveAsTemplateEnabled,
367
+ isSaveAsTemplateEnabled = _ref$isSaveAsTemplate === void 0 ? true : _ref$isSaveAsTemplate,
296
368
  setFocusField = _ref.paneProps.setFocusField;
297
369
  var _useTranslation = useTranslation(),
298
370
  t = _useTranslation.t;
@@ -315,9 +387,8 @@ var SendMessageForm = function SendMessageForm(_ref) {
315
387
  children: /*#__PURE__*/jsx(Spinner, {})
316
388
  });
317
389
  }
318
- if (isEmpty(templates)) {
390
+ if (isWhatsappTemplate && isEmpty(templates)) {
319
391
  return /*#__PURE__*/jsx(NoDataPage, {
320
- addNewTemplateRoute: addNewTemplateRoute,
321
392
  helpDocUrl: helpDocUrl,
322
393
  type: type
323
394
  });
@@ -342,6 +413,7 @@ var SendMessageForm = function SendMessageForm(_ref) {
342
413
  customFieldsInitialValues: customFieldsInitialValues,
343
414
  customFieldsValidationSchema: customFieldsValidationSchema,
344
415
  handleSubmit: handleSubmit,
416
+ isSaveAsTemplateEnabled: isSaveAsTemplateEnabled,
345
417
  onClose: onClose,
346
418
  setFocusField: setFocusField,
347
419
  templateVariables: templateVariables,
@@ -1 +1 @@
1
- {"version":3,"file":"SendMessagePane.js","sources":["../app/javascript/src/components/SendMessagePane/constants.js","../app/javascript/src/components/SendMessagePane/Form/EmailAndSms.jsx","../app/javascript/src/components/SendMessagePane/Form/Whatsapp.jsx","../app/javascript/src/components/SendMessagePane/index.jsx"],"sourcesContent":["import { t } from \"i18next\";\nimport * as yup from \"yup\";\n\nconst formatEditorContent = value =>\n value?.replaceAll(/<\\/?(?!img)\\w*\\b[^>]*>/gi, \"\").trim();\n\nexport const SEND_MESSAGE_INITIAL_VALUES = { subject: \"\", body: \"\" };\n\nexport const EMAIL_MESSAGE_FORM_SCHEMA = yup.object().shape({\n subject: yup\n .string()\n .trim()\n .required(t(\"neetoMessageTemplate.template.validation.subjectPresence\")),\n body: yup\n .string()\n .test(\n \"body\",\n t(\"neetoMessageTemplate.template.validation.bodyPresence\"),\n value => !!formatEditorContent(value)\n )\n .required(t(\"neetoMessageTemplate.template.validation.bodyPresence\")),\n});\n\nexport const SMS_MESSAGE_FORM_VALIDATION_SCHEMA = yup.object().shape({\n body: yup\n .string()\n .required(t(\"neetoMessageTemplate.template.validation.bodyPresence\"))\n .test(\n \"body\",\n t(\"neetoMessageTemplate.template.validation.bodyPresence\"),\n value => !!formatEditorContent(value)\n ),\n});\n\nexport const WHATSAPP_MESSAGE_FORM_VALIDATIONS_SCHEMA = yup.object().shape({\n variableContents: yup.object().shape({\n body: yup\n .array()\n .of(\n yup\n .string()\n .required(\n t(\"neetoMessageTemplate.template.validation.variablePresence\")\n )\n ),\n }),\n});\n","import { useRef } from \"react\";\n\nimport { findBy, renameKeys } from \"neetocist\";\nimport { FormikEditor } from \"neetoeditor\";\nimport { Pane, Select } from \"neetoui\";\nimport { ActionBlock, Form, Input } from \"neetoui/formik\";\nimport { mergeAll, omit, pick } from \"ramda\";\nimport { useTranslation } from \"react-i18next\";\nimport * as yup from \"yup\";\n\nimport { DEFAULT_EDITOR_ROW_COUNT } from \"components/constants\";\n\nimport {\n EMAIL_MESSAGE_FORM_SCHEMA,\n SEND_MESSAGE_INITIAL_VALUES,\n SMS_MESSAGE_FORM_VALIDATION_SCHEMA,\n} from \"../constants\";\n\nconst EmailAndSms = ({\n onClose,\n templates,\n setFocusField,\n templateVariables,\n customFields,\n customFieldsInitialValues,\n customFieldsValidationSchema,\n type,\n handleSubmit,\n}) => {\n const editorRef = useRef(null);\n const { t } = useTranslation();\n\n const isEmailTemplate = type === \"email\";\n const [INITIAL_VALUES, SEND_MESSAGE_FORM_SCHEMA] = isEmailTemplate\n ? [SEND_MESSAGE_INITIAL_VALUES, EMAIL_MESSAGE_FORM_SCHEMA]\n : [\n pick([\"body\"], SEND_MESSAGE_INITIAL_VALUES),\n SMS_MESSAGE_FORM_VALIDATION_SCHEMA,\n ];\n\n const updatedInitialValues = mergeAll([\n INITIAL_VALUES,\n customFieldsInitialValues,\n ]);\n\n const updatedValidationSchema = yup.object().shape({\n ...SEND_MESSAGE_FORM_SCHEMA?.fields,\n ...customFieldsValidationSchema?.fields,\n });\n const initialValueKeys = Object.keys(INITIAL_VALUES);\n\n return (\n <Form\n formProps={{\n noValidate: true,\n className: \"flex w-full flex-col gap-y-4 pb-6\",\n }}\n formikProps={{\n initialValues: updatedInitialValues,\n validationSchema: updatedValidationSchema,\n onSubmit: handleSubmit,\n }}\n >\n {({ setValues, values }) => {\n const handleTemplateChange = value => {\n if (!value) return;\n const customFieldValues = omit(initialValueKeys, values);\n const template = findBy({ id: value?.value }, templates);\n setValues({ ...template, ...customFieldValues });\n editorRef.current?.editor?.commands?.setContent(template.body);\n };\n\n return (\n <>\n <Select\n isClearable\n isSearchable\n innerRef={setFocusField}\n label={t(\"neetoMessageTemplate.template.title\")}\n options={renameKeys({ name: \"label\", id: \"value\" }, templates)}\n placeholder={t(\"neetoMessageTemplate.sendMessage.selectTemplate\")}\n onChange={handleTemplateChange}\n />\n {customFields}\n {isEmailTemplate && (\n <Input\n required\n label={t(\"neetoMessageTemplate.template.subject\")}\n name=\"subject\"\n />\n )}\n <FormikEditor\n hideSlashCommands\n required\n contentClassName=\"max-h-40\"\n defaults={isEmailTemplate ? undefined : []}\n label={t(\"neetoMessageTemplate.template.body\")}\n name=\"body\"\n ref={editorRef}\n rows={DEFAULT_EDITOR_ROW_COUNT}\n variables={templateVariables}\n />\n <Pane.Footer className=\"absolute bottom-0 left-0\">\n <ActionBlock\n cancelButtonProps={{\n \"data-cy\": \"message-template-cancel-button\",\n onClick: onClose,\n }}\n submitButtonProps={{\n \"data-cy\": \"message-template-send-button\",\n label: t(\"neetoMessageTemplate.template.send\"),\n }}\n />\n </Pane.Footer>\n </>\n );\n }}\n </Form>\n );\n};\nexport default EmailAndSms;\n","import {\n capitalize,\n nullSafe,\n findBy,\n isNotEmpty,\n renameKeys,\n} from \"neetocist\";\nimport { Pane, Textarea, Typography } from \"neetoui\";\nimport { Select, Form, Input, ActionBlock } from \"neetoui/formik\";\nimport { mergeAll, omit, pluck } from \"ramda\";\nimport { useTranslation } from \"react-i18next\";\nimport * as yup from \"yup\";\n\nimport { WHATSAPP_MESSAGE_FORM_VALIDATIONS_SCHEMA } from \"../constants\";\n\nconst Whatsapp = ({\n templates,\n onClose,\n handleSubmit,\n customFields,\n customFieldsInitialValues,\n customFieldsValidationSchema,\n}) => {\n const { t } = useTranslation();\n\n const getInitialVariableComponents = variables => {\n const initialComponents = {};\n\n variables?.forEach(({ type, count }) => {\n initialComponents[type] = Array(count).fill(\"\");\n });\n\n return initialComponents;\n };\n\n const getTemplateMessage = components =>\n nullSafe(pluck)(\"text\", components)?.join(\"\\n\");\n\n const initialFormValues = {\n selectedTemplate: { label: templates[0]?.name, value: templates[0]?.id },\n templateMessage: getTemplateMessage(templates[0]?.components),\n variableContents: getInitialVariableComponents(templates[0]?.variableCount),\n };\n\n const updatedInitialValues = mergeAll([\n initialFormValues,\n customFieldsInitialValues,\n ]);\n\n const updatedValidationSchema = yup.object().shape({\n ...WHATSAPP_MESSAGE_FORM_VALIDATIONS_SCHEMA?.fields,\n ...customFieldsValidationSchema?.fields,\n });\n\n const initialValueKeys = Object.keys(initialFormValues);\n\n return (\n <Form\n formProps={{\n noValidate: true,\n className: \"flex w-full flex-col gap-y-4 pb-6\",\n }}\n formikProps={{\n initialValues: updatedInitialValues,\n validationSchema: updatedValidationSchema,\n onSubmit: handleSubmit,\n }}\n >\n {({ values, setValues }) => {\n const handleTemplateChange = value => {\n if (!value) return;\n\n const template = findBy({ id: value?.value }, templates);\n const customFieldValues = omit(initialValueKeys, values);\n setValues({\n selectedTemplate: { label: template.name, value: template.id },\n templateMessage: getTemplateMessage(template.components),\n variableContents: getInitialVariableComponents(\n template.variableCount\n ),\n ...customFieldValues,\n });\n };\n\n return (\n <>\n <Select\n required\n defaultValue={initialFormValues.selectedTemplate}\n label={t(\"neetoMessageTemplate.template.title\")}\n name=\"selectedTemplate\"\n options={renameKeys({ name: \"label\", id: \"value\" }, templates)}\n onChange={handleTemplateChange}\n />\n {customFields}\n <Textarea\n disabled\n nakedTextarea\n label={t(\"neetoMessageTemplate.template.preview\")}\n value={values.templateMessage}\n />\n {isNotEmpty(values.variableContents) && (\n <>\n {Object.keys(values.variableContents).map(group => (\n <div className=\"flex flex-col gap-y-2\" key={group}>\n <Typography style=\"h4\">\n {t(\"neetoMessageTemplate.template.resolveVariable\", {\n type: capitalize(group),\n })}\n </Typography>\n {values.variableContents[group].map((_, index) => (\n <div key={`${group}-${index}`}>\n <Input\n required\n key={`${group}-${index}`}\n label={`{{${index + 1}}}`}\n name={`variableContents.${group}.${index}`}\n />\n </div>\n ))}\n </div>\n ))}\n </>\n )}\n <Pane.Footer className=\"absolute bottom-0 left-0\">\n <ActionBlock\n cancelButtonProps={{\n \"data-cy\": \"message-template-cancel-button\",\n onClick: onClose,\n }}\n submitButtonProps={{\n \"data-cy\": \"message-template-send-button\",\n label: t(\"neetoMessageTemplate.template.send\"),\n }}\n />\n </Pane.Footer>\n </>\n );\n }}\n </Form>\n );\n};\n\nexport default Whatsapp;\n","import { noop } from \"neetocist\";\nimport { Pane, Spinner, Typography } from \"neetoui\";\nimport { isEmpty } from \"ramda\";\nimport { useTranslation } from \"react-i18next\";\n\nimport NoDataPage from \"components/commons/NoDataPage\";\nimport { MESSAGE_TEMPLATES, MESSAGE_TYPES } from \"components/constants\";\nimport { useFetchTemplates } from \"hooks/reactQuery/useTemplatesApi\";\n\nimport EmailAndSms from \"./Form/EmailAndSms\";\nimport WhatsappForm from \"./Form/Whatsapp\";\n\nconst SendMessagePane = props => {\n const { isOpen, onClose } = props;\n\n return (\n <Pane {...{ isOpen, onClose }}>\n {paneProps => <SendMessageForm {...{ ...props, paneProps }} />}\n </Pane>\n );\n};\n\nconst SendMessageForm = ({\n type = \"\",\n handleSubmit = noop,\n onClose = noop,\n customFields = null,\n customFieldsInitialValues = {},\n customFieldsValidationSchema = {},\n templateVariables = {},\n ownerId = \"\", // Optional by default. Required in case if the owner of message-templates is not the Organization\n helpDocUrl = \"\",\n addNewTemplateRoute = \"\",\n paneProps: { setFocusField },\n}) => {\n const { t } = useTranslation();\n\n const { value } = MESSAGE_TEMPLATES[type];\n const isWhatsappTemplate = type === \"whatsapp\";\n const templateParams = {\n status: \"active\",\n templateType: value,\n ownerId,\n };\n\n const { data: { templates = [] } = {}, isLoading } =\n useFetchTemplates(templateParams);\n\n if (isLoading) {\n return (\n <div className=\"flex h-full w-full items-center justify-center\">\n <Spinner />\n </div>\n );\n }\n\n if (isEmpty(templates)) {\n return <NoDataPage {...{ addNewTemplateRoute, helpDocUrl, type }} />;\n }\n\n return (\n <>\n <Pane.Header>\n <Typography style=\"h2\" weight=\"semibold\">\n {t(\"neetoMessageTemplate.common.send\")} {MESSAGE_TYPES[type]}\n </Typography>\n </Pane.Header>\n <Pane.Body>\n {isWhatsappTemplate ? (\n <WhatsappForm\n {...{\n customFields,\n customFieldsInitialValues,\n customFieldsValidationSchema,\n handleSubmit,\n onClose,\n templates,\n }}\n />\n ) : (\n <EmailAndSms\n {...{\n customFields,\n customFieldsInitialValues,\n customFieldsValidationSchema,\n handleSubmit,\n onClose,\n setFocusField,\n templateVariables,\n templates,\n type,\n }}\n />\n )}\n </Pane.Body>\n </>\n );\n};\n\nexport default SendMessagePane;\n"],"names":["formatEditorContent","value","replaceAll","trim","SEND_MESSAGE_INITIAL_VALUES","subject","body","EMAIL_MESSAGE_FORM_SCHEMA","yup","object","shape","string","required","t","test","SMS_MESSAGE_FORM_VALIDATION_SCHEMA","WHATSAPP_MESSAGE_FORM_VALIDATIONS_SCHEMA","variableContents","array","of","EmailAndSms","_ref","onClose","templates","setFocusField","templateVariables","customFields","customFieldsInitialValues","customFieldsValidationSchema","type","handleSubmit","editorRef","useRef","_useTranslation","useTranslation","isEmailTemplate","_ref2","pick","_ref3","_slicedToArray","INITIAL_VALUES","SEND_MESSAGE_FORM_SCHEMA","updatedInitialValues","mergeAll","updatedValidationSchema","_objectSpread","fields","initialValueKeys","Object","keys","_jsx","Form","formProps","noValidate","className","formikProps","initialValues","validationSchema","onSubmit","children","_ref4","setValues","values","handleTemplateChange","_editorRef$current","customFieldValues","omit","template","findBy","id","current","editor","commands","setContent","_jsxs","_Fragment","Select","isClearable","isSearchable","innerRef","label","options","renameKeys","name","placeholder","onChange","Input","FormikEditor","hideSlashCommands","contentClassName","defaults","undefined","ref","rows","DEFAULT_EDITOR_ROW_COUNT","variables","Pane","Footer","ActionBlock","cancelButtonProps","onClick","submitButtonProps","Whatsapp","_templates$","_templates$2","_templates$3","_templates$4","getInitialVariableComponents","initialComponents","forEach","count","Array","fill","getTemplateMessage","components","_nullSafe","nullSafe","pluck","join","initialFormValues","selectedTemplate","templateMessage","variableCount","defaultValue","Textarea","disabled","nakedTextarea","isNotEmpty","map","group","Typography","style","capitalize","_","index","concat","SendMessagePane","props","isOpen","paneProps","SendMessageForm","_ref$type","_ref$handleSubmit","noop","_ref$onClose","_ref$customFields","_ref$customFieldsInit","_ref$customFieldsVali","_ref$templateVariable","_ref$ownerId","ownerId","_ref$helpDocUrl","helpDocUrl","_ref$addNewTemplateRo","addNewTemplateRoute","MESSAGE_TEMPLATES","isWhatsappTemplate","templateParams","status","templateType","_useFetchTemplates","useFetchTemplates","_useFetchTemplates$da","data","_useFetchTemplates$da2","_useFetchTemplates$da3","isLoading","Spinner","isEmpty","NoDataPage","Header","weight","MESSAGE_TYPES","Body","WhatsappForm"],"mappings":"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"}
1
+ {"version":3,"file":"SendMessagePane.js","sources":["../app/javascript/src/components/commons/NoDataPage.jsx","../app/javascript/src/components/SendMessagePane/constants.js","../app/javascript/src/components/SendMessagePane/Form/EmailAndSms.jsx","../app/javascript/src/components/SendMessagePane/Form/Whatsapp.jsx","../app/javascript/src/components/SendMessagePane/index.jsx"],"sourcesContent":["import { Button, Typography } from \"neetoui\";\nimport { Trans, useTranslation } from \"react-i18next\";\n\nimport { MESSAGE_TEMPLATES, MESSAGE_TYPES } from \"components/constants\";\n\nconst NoDataPage = ({ type, helpDocUrl = \"\" }) => {\n const { t } = useTranslation();\n\n const { label } = MESSAGE_TEMPLATES[type];\n\n if (type === MESSAGE_TYPES.whatsapp) {\n return (\n <div className=\"flex h-full w-full items-center justify-center px-6 text-center\">\n <Typography>\n {t(\"neetoMessageTemplate.template.emptyState\", {\n type: t(\"neetoMessageTemplate.template.whatsappTemplates\"),\n })}{\" \"}\n {helpDocUrl && (\n <Trans\n i18nKey=\"neetoMessageTemplate.template.whatsapp.helpDocText\"\n components={{\n Link: <Button href={helpDocUrl} size=\"large\" style=\"link\" />,\n }}\n />\n )}\n </Typography>\n </div>\n );\n }\n\n return (\n <div className=\"flex h-full w-full flex-col items-center justify-center\">\n <Typography>\n {t(\"neetoMessageTemplate.template.emptyState\", {\n type: label,\n })}\n </Typography>\n </div>\n );\n};\n\nexport default NoDataPage;\n","import { t } from \"i18next\";\nimport * as yup from \"yup\";\n\nconst formatEditorContent = value =>\n value?.replaceAll(/<\\/?(?!img)\\w*\\b[^>]*>/gi, \"\").trim();\n\nexport const SEND_MESSAGE_INITIAL_VALUES = {\n subject: \"\",\n body: \"\",\n shouldSaveAsTemplate: false,\n templateName: \"\",\n};\n\nexport const EMAIL_MESSAGE_FORM_SCHEMA = yup.object().shape({\n subject: yup\n .string()\n .trim()\n .required(t(\"neetoMessageTemplate.template.validation.subjectPresence\")),\n body: yup\n .string()\n .test(\n \"body\",\n t(\"neetoMessageTemplate.template.validation.bodyPresence\"),\n value => !!formatEditorContent(value)\n )\n .required(t(\"neetoMessageTemplate.template.validation.bodyPresence\")),\n templateName: yup.string().when(\"shouldSaveAsTemplate\", {\n is: true,\n then: yup.string().required(\n t(\"neetoMessageTemplate.template.validation.requiredEntity\", {\n entity: t(\"neetoMessageTemplate.template.templateName\"),\n })\n ),\n }),\n});\n\nexport const SMS_MESSAGE_FORM_VALIDATION_SCHEMA = yup.object().shape({\n body: yup\n .string()\n .required(t(\"neetoMessageTemplate.template.validation.bodyPresence\"))\n .test(\n \"body\",\n t(\"neetoMessageTemplate.template.validation.bodyPresence\"),\n value => !!formatEditorContent(value)\n ),\n templateName: yup.string().when(\"shouldSaveAsTemplate\", {\n is: true,\n then: yup.string().required(\n t(\"neetoMessageTemplate.template.validation.requiredEntity\", {\n entity: t(\"neetoMessageTemplate.template.templateName\"),\n })\n ),\n }),\n});\n\nexport const WHATSAPP_MESSAGE_FORM_VALIDATIONS_SCHEMA = yup.object().shape({\n variableContents: yup.object().shape({\n body: yup\n .array()\n .of(\n yup\n .string()\n .required(\n t(\"neetoMessageTemplate.template.validation.variablePresence\")\n )\n ),\n }),\n});\n","import { useRef } from \"react\";\n\nimport { findBy, isPresent, renameKeys } from \"neetocist\";\nimport { FormikEditor } from \"neetoeditor\";\nimport { Pane, Select } from \"neetoui\";\nimport { ActionBlock, Form, Input } from \"neetoui/formik\";\nimport { mergeAll, omit } from \"ramda\";\nimport { useTranslation } from \"react-i18next\";\nimport * as yup from \"yup\";\n\nimport SaveAsTemplate from \"components/commons/SaveAsTemplate\";\nimport { DEFAULT_EDITOR_ROW_COUNT } from \"components/constants\";\nimport { areValuesEqual } from \"components/utils\";\n\nimport {\n EMAIL_MESSAGE_FORM_SCHEMA,\n SEND_MESSAGE_INITIAL_VALUES,\n SMS_MESSAGE_FORM_VALIDATION_SCHEMA,\n} from \"../constants\";\n\nconst EmailAndSms = ({\n onClose,\n templates,\n setFocusField,\n templateVariables,\n customFields,\n customFieldsInitialValues,\n customFieldsValidationSchema,\n type,\n handleSubmit,\n isSaveAsTemplateEnabled,\n}) => {\n const editorRef = useRef(null);\n const { t } = useTranslation();\n\n const isEmailTemplate = type === \"email\";\n const [INITIAL_VALUES, SEND_MESSAGE_FORM_SCHEMA] = isEmailTemplate\n ? [SEND_MESSAGE_INITIAL_VALUES, EMAIL_MESSAGE_FORM_SCHEMA]\n : [\n omit([\"subject\"], SEND_MESSAGE_INITIAL_VALUES),\n SMS_MESSAGE_FORM_VALIDATION_SCHEMA,\n ];\n\n const updatedInitialValues = mergeAll([\n INITIAL_VALUES,\n customFieldsInitialValues,\n ]);\n\n const updatedValidationSchema = yup.object().shape({\n ...SEND_MESSAGE_FORM_SCHEMA?.fields,\n ...customFieldsValidationSchema?.fields,\n });\n\n const shouldShowSaveAsTemplate = ({ id, subject, body } = {}) => {\n if (!isSaveAsTemplateEnabled) return false;\n\n const template = findBy({ id }, templates);\n const hasContent = isPresent(subject) || isPresent(body);\n const isContentDifferentFromTemplate = !(\n areValuesEqual(template?.subject, subject) && template?.body === body\n );\n\n return hasContent && isContentDifferentFromTemplate;\n };\n\n const isTemplateSelectionEnabled = isPresent(templates);\n\n return (\n <Form\n formProps={{\n noValidate: true,\n className: \"flex w-full flex-col gap-y-4 pb-6\",\n }}\n formikProps={{\n initialValues: updatedInitialValues,\n validationSchema: updatedValidationSchema,\n onSubmit: handleSubmit,\n }}\n >\n {({ setValues, values }) => {\n const handleTemplateChange = value => {\n if (!value) return;\n\n const template = findBy({ id: value?.value }, templates);\n setValues({ ...values, ...template });\n editorRef.current?.editor?.commands?.setContent(template.body);\n };\n\n return (\n <>\n {isTemplateSelectionEnabled && (\n <Select\n isClearable\n isSearchable\n innerRef={setFocusField}\n label={t(\"neetoMessageTemplate.template.title\")}\n options={renameKeys({ name: \"label\", id: \"value\" }, templates)}\n placeholder={t(\n \"neetoMessageTemplate.sendMessage.selectTemplate\"\n )}\n onChange={handleTemplateChange}\n />\n )}\n {customFields}\n {isEmailTemplate && (\n <Input\n required\n label={t(\"neetoMessageTemplate.template.subject\")}\n name=\"subject\"\n ref={isTemplateSelectionEnabled ? null : setFocusField}\n />\n )}\n <FormikEditor\n hideSlashCommands\n required\n autoFocus={!(isTemplateSelectionEnabled || isEmailTemplate)}\n contentClassName=\"max-h-40\"\n defaults={isEmailTemplate ? undefined : []}\n label={t(\"neetoMessageTemplate.template.body\")}\n name=\"body\"\n ref={editorRef}\n rows={DEFAULT_EDITOR_ROW_COUNT}\n variables={templateVariables}\n />\n {shouldShowSaveAsTemplate(values) && <SaveAsTemplate />}\n <Pane.Footer className=\"absolute bottom-0 left-0\">\n <ActionBlock\n cancelButtonProps={{\n \"data-cy\": \"message-template-cancel-button\",\n onClick: onClose,\n }}\n submitButtonProps={{\n \"data-cy\": \"message-template-send-button\",\n label: t(\"neetoMessageTemplate.template.send\"),\n }}\n />\n </Pane.Footer>\n </>\n );\n }}\n </Form>\n );\n};\nexport default EmailAndSms;\n","import {\n capitalize,\n nullSafe,\n findBy,\n isNotEmpty,\n renameKeys,\n} from \"neetocist\";\nimport { Pane, Textarea, Typography } from \"neetoui\";\nimport { Select, Form, Input, ActionBlock } from \"neetoui/formik\";\nimport { mergeAll, omit, pluck } from \"ramda\";\nimport { useTranslation } from \"react-i18next\";\nimport * as yup from \"yup\";\n\nimport { WHATSAPP_MESSAGE_FORM_VALIDATIONS_SCHEMA } from \"../constants\";\n\nconst Whatsapp = ({\n templates,\n onClose,\n handleSubmit,\n customFields,\n customFieldsInitialValues,\n customFieldsValidationSchema,\n}) => {\n const { t } = useTranslation();\n\n const getInitialVariableComponents = variables => {\n const initialComponents = {};\n\n variables?.forEach(({ type, count }) => {\n initialComponents[type] = Array(count).fill(\"\");\n });\n\n return initialComponents;\n };\n\n const getTemplateMessage = components =>\n nullSafe(pluck)(\"text\", components)?.join(\"\\n\");\n\n const initialFormValues = {\n selectedTemplate: { label: templates[0]?.name, value: templates[0]?.id },\n templateMessage: getTemplateMessage(templates[0]?.components),\n variableContents: getInitialVariableComponents(templates[0]?.variableCount),\n };\n\n const updatedInitialValues = mergeAll([\n initialFormValues,\n customFieldsInitialValues,\n ]);\n\n const updatedValidationSchema = yup.object().shape({\n ...WHATSAPP_MESSAGE_FORM_VALIDATIONS_SCHEMA?.fields,\n ...customFieldsValidationSchema?.fields,\n });\n\n const initialValueKeys = Object.keys(initialFormValues);\n\n return (\n <Form\n formProps={{\n noValidate: true,\n className: \"flex w-full flex-col gap-y-4 pb-6\",\n }}\n formikProps={{\n initialValues: updatedInitialValues,\n validationSchema: updatedValidationSchema,\n onSubmit: handleSubmit,\n }}\n >\n {({ values, setValues }) => {\n const handleTemplateChange = value => {\n if (!value) return;\n\n const template = findBy({ id: value?.value }, templates);\n const customFieldValues = omit(initialValueKeys, values);\n setValues({\n selectedTemplate: { label: template.name, value: template.id },\n templateMessage: getTemplateMessage(template.components),\n variableContents: getInitialVariableComponents(\n template.variableCount\n ),\n ...customFieldValues,\n });\n };\n\n return (\n <>\n <Select\n required\n defaultValue={initialFormValues.selectedTemplate}\n label={t(\"neetoMessageTemplate.template.title\")}\n name=\"selectedTemplate\"\n options={renameKeys({ name: \"label\", id: \"value\" }, templates)}\n onChange={handleTemplateChange}\n />\n {customFields}\n <Textarea\n disabled\n nakedTextarea\n label={t(\"neetoMessageTemplate.template.preview\")}\n value={values.templateMessage}\n />\n {isNotEmpty(values.variableContents) && (\n <>\n {Object.keys(values.variableContents).map(group => (\n <div className=\"flex flex-col gap-y-2\" key={group}>\n <Typography style=\"h4\">\n {t(\"neetoMessageTemplate.template.resolveVariable\", {\n type: capitalize(group),\n })}\n </Typography>\n {values.variableContents[group].map((_, index) => (\n <div key={`${group}-${index}`}>\n <Input\n required\n key={`${group}-${index}`}\n label={`{{${index + 1}}}`}\n name={`variableContents.${group}.${index}`}\n />\n </div>\n ))}\n </div>\n ))}\n </>\n )}\n <Pane.Footer className=\"absolute bottom-0 left-0\">\n <ActionBlock\n cancelButtonProps={{\n \"data-cy\": \"message-template-cancel-button\",\n onClick: onClose,\n }}\n submitButtonProps={{\n \"data-cy\": \"message-template-send-button\",\n label: t(\"neetoMessageTemplate.template.send\"),\n }}\n />\n </Pane.Footer>\n </>\n );\n }}\n </Form>\n );\n};\n\nexport default Whatsapp;\n","import { noop } from \"neetocist\";\nimport { Pane, Spinner, Typography } from \"neetoui\";\nimport { isEmpty } from \"ramda\";\nimport { useTranslation } from \"react-i18next\";\n\nimport NoDataPage from \"components/commons/NoDataPage\";\nimport { MESSAGE_TEMPLATES, MESSAGE_TYPES } from \"components/constants\";\nimport { useFetchTemplates } from \"hooks/reactQuery/useTemplatesApi\";\n\nimport EmailAndSms from \"./Form/EmailAndSms\";\nimport WhatsappForm from \"./Form/Whatsapp\";\n\nconst SendMessagePane = props => {\n const { isOpen, onClose } = props;\n\n return (\n <Pane {...{ isOpen, onClose }}>\n {paneProps => <SendMessageForm {...{ ...props, paneProps }} />}\n </Pane>\n );\n};\n\nconst SendMessageForm = ({\n type = \"\",\n handleSubmit = noop,\n onClose = noop,\n customFields = null,\n customFieldsInitialValues = {},\n customFieldsValidationSchema = {},\n templateVariables = {},\n ownerId = \"\", // Optional by default. Required in case if the owner of message-templates is not the Organization\n helpDocUrl = \"\",\n isSaveAsTemplateEnabled = true,\n paneProps: { setFocusField },\n}) => {\n const { t } = useTranslation();\n\n const { value } = MESSAGE_TEMPLATES[type];\n const isWhatsappTemplate = type === \"whatsapp\";\n const templateParams = {\n status: \"active\",\n templateType: value,\n ownerId,\n };\n\n const { data: { templates = [] } = {}, isLoading } =\n useFetchTemplates(templateParams);\n\n if (isLoading) {\n return (\n <div className=\"flex h-full w-full items-center justify-center\">\n <Spinner />\n </div>\n );\n }\n\n if (isWhatsappTemplate && isEmpty(templates)) {\n return <NoDataPage {...{ helpDocUrl, type }} />;\n }\n\n return (\n <>\n <Pane.Header>\n <Typography style=\"h2\" weight=\"semibold\">\n {t(\"neetoMessageTemplate.common.send\")} {MESSAGE_TYPES[type]}\n </Typography>\n </Pane.Header>\n <Pane.Body>\n {isWhatsappTemplate ? (\n <WhatsappForm\n {...{\n customFields,\n customFieldsInitialValues,\n customFieldsValidationSchema,\n handleSubmit,\n onClose,\n templates,\n }}\n />\n ) : (\n <EmailAndSms\n {...{\n customFields,\n customFieldsInitialValues,\n customFieldsValidationSchema,\n handleSubmit,\n isSaveAsTemplateEnabled,\n onClose,\n setFocusField,\n templateVariables,\n templates,\n type,\n }}\n />\n )}\n </Pane.Body>\n </>\n );\n};\n\nexport default SendMessagePane;\n"],"names":["NoDataPage","_ref","type","_ref$helpDocUrl","helpDocUrl","_useTranslation","useTranslation","t","label","MESSAGE_TEMPLATES","MESSAGE_TYPES","whatsapp","_jsx","className","children","_jsxs","Typography","Trans","i18nKey","components","Link","Button","href","size","style","formatEditorContent","value","replaceAll","trim","SEND_MESSAGE_INITIAL_VALUES","subject","body","shouldSaveAsTemplate","templateName","EMAIL_MESSAGE_FORM_SCHEMA","yup","object","shape","string","required","test","when","is","then","entity","SMS_MESSAGE_FORM_VALIDATION_SCHEMA","WHATSAPP_MESSAGE_FORM_VALIDATIONS_SCHEMA","variableContents","array","of","EmailAndSms","onClose","templates","setFocusField","templateVariables","customFields","customFieldsInitialValues","customFieldsValidationSchema","handleSubmit","isSaveAsTemplateEnabled","editorRef","useRef","isEmailTemplate","_ref2","omit","_ref3","_slicedToArray","INITIAL_VALUES","SEND_MESSAGE_FORM_SCHEMA","updatedInitialValues","mergeAll","updatedValidationSchema","_objectSpread","fields","shouldShowSaveAsTemplate","_ref4","arguments","length","undefined","id","template","findBy","hasContent","isPresent","isContentDifferentFromTemplate","areValuesEqual","isTemplateSelectionEnabled","Form","formProps","noValidate","formikProps","initialValues","validationSchema","onSubmit","_ref5","setValues","values","handleTemplateChange","_editorRef$current","_editorRef$current$ed","_editorRef$current$ed2","current","editor","commands","setContent","_Fragment","Select","isClearable","isSearchable","innerRef","options","renameKeys","name","placeholder","onChange","Input","ref","FormikEditor","hideSlashCommands","autoFocus","contentClassName","defaults","rows","DEFAULT_EDITOR_ROW_COUNT","variables","SaveAsTemplate","Pane","Footer","ActionBlock","cancelButtonProps","onClick","submitButtonProps","Whatsapp","_templates$","_templates$2","_templates$3","_templates$4","getInitialVariableComponents","initialComponents","forEach","count","Array","fill","getTemplateMessage","_nullSafe","nullSafe","pluck","join","initialFormValues","selectedTemplate","templateMessage","variableCount","initialValueKeys","Object","keys","customFieldValues","defaultValue","Textarea","disabled","nakedTextarea","isNotEmpty","map","group","capitalize","_","index","concat","SendMessagePane","props","isOpen","paneProps","SendMessageForm","_ref$type","_ref$handleSubmit","noop","_ref$onClose","_ref$customFields","_ref$customFieldsInit","_ref$customFieldsVali","_ref$templateVariable","_ref$ownerId","ownerId","_ref$isSaveAsTemplate","isWhatsappTemplate","templateParams","status","templateType","_useFetchTemplates","useFetchTemplates","_useFetchTemplates$da","data","_useFetchTemplates$da2","_useFetchTemplates$da3","isLoading","Spinner","isEmpty","Header","weight","Body","WhatsappForm"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAKA,IAAMA,UAAU,GAAG,SAAbA,UAAUA,CAAAC,IAAA,EAAkC;AAAA,EAAA,IAA5BC,IAAI,GAAAD,IAAA,CAAJC,IAAI;IAAAC,eAAA,GAAAF,IAAA,CAAEG,UAAU;AAAVA,IAAAA,UAAU,GAAAD,eAAA,KAAG,KAAA,CAAA,GAAA,EAAE,GAAAA,eAAA,CAAA;AACzC,EAAA,IAAAE,eAAA,GAAcC,cAAc,EAAE;IAAtBC,CAAC,GAAAF,eAAA,CAADE,CAAC,CAAA;AAET,EAAA,IAAQC,KAAK,GAAKC,iBAAiB,CAACP,IAAI,CAAC,CAAjCM,KAAK,CAAA;AAEb,EAAA,IAAIN,IAAI,KAAKQ,aAAa,CAACC,QAAQ,EAAE;AACnC,IAAA,oBACEC,GAAA,CAAA,KAAA,EAAA;AAAKC,MAAAA,SAAS,EAAC,iEAAiE;MAAAC,QAAA,eAC9EC,IAAA,CAACC,UAAU,EAAA;AAAAF,QAAAA,QAAA,EACRP,CAAAA,CAAC,CAAC,0CAA0C,EAAE;UAC7CL,IAAI,EAAEK,CAAC,CAAC,iDAAiD,CAAA;SAC1D,CAAC,EAAE,GAAG,EACNH,UAAU,iBACTQ,GAAA,CAACK,KAAK,EAAA;AACJC,UAAAA,OAAO,EAAC,oDAAoD;AAC5DC,UAAAA,UAAU,EAAE;YACVC,IAAI,eAAER,GAAA,CAACS,MAAM,EAAA;AAACC,cAAAA,IAAI,EAAElB,UAAW;AAACmB,cAAAA,IAAI,EAAC,OAAO;AAACC,cAAAA,KAAK,EAAC,MAAA;aAAQ,CAAA;AAC7D,WAAA;AAAE,SACH,CACF,CAAA;OACS,CAAA;AAAC,KACV,CAAC,CAAA;AAEV,GAAA;AAEA,EAAA,oBACEZ,GAAA,CAAA,KAAA,EAAA;AAAKC,IAAAA,SAAS,EAAC,yDAAyD;IAAAC,QAAA,eACtEF,GAAA,CAACI,UAAU,EAAA;AAAAF,MAAAA,QAAA,EACRP,CAAC,CAAC,0CAA0C,EAAE;AAC7CL,QAAAA,IAAI,EAAEM,KAAAA;OACP,CAAA;KACS,CAAA;AAAC,GACV,CAAC,CAAA;AAEV,CAAC;;ACpCD,IAAMiB,mBAAmB,GAAG,SAAtBA,mBAAmBA,CAAGC,KAAK,EAAA;AAAA,EAAA,OAC/BA,KAAK,KAAA,IAAA,IAALA,KAAK,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAALA,KAAK,CAAEC,UAAU,CAAC,0BAA0B,EAAE,EAAE,CAAC,CAACC,IAAI,EAAE,CAAA;AAAA,CAAA,CAAA;AAEnD,IAAMC,2BAA2B,GAAG;AACzCC,EAAAA,OAAO,EAAE,EAAE;AACXC,EAAAA,IAAI,EAAE,EAAE;AACRC,EAAAA,oBAAoB,EAAE,KAAK;AAC3BC,EAAAA,YAAY,EAAE,EAAA;AAChB,CAAC,CAAA;AAEM,IAAMC,yBAAyB,GAAGC,GAAG,CAACC,MAAM,EAAE,CAACC,KAAK,CAAC;AAC1DP,EAAAA,OAAO,EAAEK,GAAG,CACTG,MAAM,EAAE,CACRV,IAAI,EAAE,CACNW,QAAQ,CAAChC,CAAC,CAAC,0DAA0D,CAAC,CAAC;AAC1EwB,EAAAA,IAAI,EAAEI,GAAG,CACNG,MAAM,EAAE,CACRE,IAAI,CACH,MAAM,EACNjC,CAAC,CAAC,uDAAuD,CAAC,EAC1D,UAAAmB,KAAK,EAAA;AAAA,IAAA,OAAI,CAAC,CAACD,mBAAmB,CAACC,KAAK,CAAC,CAAA;GACvC,CAAC,CACAa,QAAQ,CAAChC,CAAC,CAAC,uDAAuD,CAAC,CAAC;EACvE0B,YAAY,EAAEE,GAAG,CAACG,MAAM,EAAE,CAACG,IAAI,CAAC,sBAAsB,EAAE;AACtDC,IAAAA,EAAE,EAAE,IAAI;AACRC,IAAAA,IAAI,EAAER,GAAG,CAACG,MAAM,EAAE,CAACC,QAAQ,CACzBhC,CAAC,CAAC,yDAAyD,EAAE;MAC3DqC,MAAM,EAAErC,CAAC,CAAC,4CAA4C,CAAA;AACxD,KAAC,CACH,CAAA;GACD,CAAA;AACH,CAAC,CAAC,CAAA;AAEK,IAAMsC,kCAAkC,GAAGV,GAAG,CAACC,MAAM,EAAE,CAACC,KAAK,CAAC;EACnEN,IAAI,EAAEI,GAAG,CACNG,MAAM,EAAE,CACRC,QAAQ,CAAChC,CAAC,CAAC,uDAAuD,CAAC,CAAC,CACpEiC,IAAI,CACH,MAAM,EACNjC,CAAC,CAAC,uDAAuD,CAAC,EAC1D,UAAAmB,KAAK,EAAA;AAAA,IAAA,OAAI,CAAC,CAACD,mBAAmB,CAACC,KAAK,CAAC,CAAA;AAAA,GACvC,CAAC;EACHO,YAAY,EAAEE,GAAG,CAACG,MAAM,EAAE,CAACG,IAAI,CAAC,sBAAsB,EAAE;AACtDC,IAAAA,EAAE,EAAE,IAAI;AACRC,IAAAA,IAAI,EAAER,GAAG,CAACG,MAAM,EAAE,CAACC,QAAQ,CACzBhC,CAAC,CAAC,yDAAyD,EAAE;MAC3DqC,MAAM,EAAErC,CAAC,CAAC,4CAA4C,CAAA;AACxD,KAAC,CACH,CAAA;GACD,CAAA;AACH,CAAC,CAAC,CAAA;AAEK,IAAMuC,wCAAwC,GAAGX,GAAG,CAACC,MAAM,EAAE,CAACC,KAAK,CAAC;EACzEU,gBAAgB,EAAEZ,GAAG,CAACC,MAAM,EAAE,CAACC,KAAK,CAAC;IACnCN,IAAI,EAAEI,GAAG,CACNa,KAAK,EAAE,CACPC,EAAE,CACDd,GAAG,CACAG,MAAM,EAAE,CACRC,QAAQ,CACPhC,CAAC,CAAC,2DAA2D,CAC/D,CACJ,CAAA;GACH,CAAA;AACH,CAAC,CAAC;;;;AC/CF,IAAM2C,WAAW,GAAG,SAAdA,WAAWA,CAAAjD,IAAA,EAWX;AAAA,EAAA,IAVJkD,OAAO,GAAAlD,IAAA,CAAPkD,OAAO;IACPC,SAAS,GAAAnD,IAAA,CAATmD,SAAS;IACTC,aAAa,GAAApD,IAAA,CAAboD,aAAa;IACbC,iBAAiB,GAAArD,IAAA,CAAjBqD,iBAAiB;IACjBC,YAAY,GAAAtD,IAAA,CAAZsD,YAAY;IACZC,yBAAyB,GAAAvD,IAAA,CAAzBuD,yBAAyB;IACzBC,4BAA4B,GAAAxD,IAAA,CAA5BwD,4BAA4B;IAC5BvD,IAAI,GAAAD,IAAA,CAAJC,IAAI;IACJwD,YAAY,GAAAzD,IAAA,CAAZyD,YAAY;IACZC,uBAAuB,GAAA1D,IAAA,CAAvB0D,uBAAuB,CAAA;AAEvB,EAAA,IAAMC,SAAS,GAAGC,MAAM,CAAC,IAAI,CAAC,CAAA;AAC9B,EAAA,IAAAxD,eAAA,GAAcC,cAAc,EAAE;IAAtBC,CAAC,GAAAF,eAAA,CAADE,CAAC,CAAA;AAET,EAAA,IAAMuD,eAAe,GAAG5D,IAAI,KAAK,OAAO,CAAA;EACxC,IAAA6D,KAAA,GAAmDD,eAAe,GAC9D,CAACjC,2BAA2B,EAAEK,yBAAyB,CAAC,GACxD,CACE8B,IAAI,CAAC,CAAC,SAAS,CAAC,EAAEnC,2BAA2B,CAAC,EAC9CgB,kCAAkC,CACnC;IAAAoB,KAAA,GAAAC,cAAA,CAAAH,KAAA,EAAA,CAAA,CAAA;AALEI,IAAAA,cAAc,GAAAF,KAAA,CAAA,CAAA,CAAA;AAAEG,IAAAA,wBAAwB,GAAAH,KAAA,CAAA,CAAA,CAAA,CAAA;EAO/C,IAAMI,oBAAoB,GAAGC,QAAQ,CAAC,CACpCH,cAAc,EACdX,yBAAyB,CAC1B,CAAC,CAAA;AAEF,EAAA,IAAMe,uBAAuB,GAAGpC,GAAG,CAACC,MAAM,EAAE,CAACC,KAAK,CAAAmC,eAAA,CAAAA,eAAA,CAC7CJ,EAAAA,EAAAA,wBAAwB,KAAxBA,IAAAA,IAAAA,wBAAwB,KAAxBA,KAAAA,CAAAA,GAAAA,KAAAA,CAAAA,GAAAA,wBAAwB,CAAEK,MAAM,CAChChB,EAAAA,4BAA4B,KAA5BA,IAAAA,IAAAA,4BAA4B,KAA5BA,KAAAA,CAAAA,GAAAA,KAAAA,CAAAA,GAAAA,4BAA4B,CAAEgB,MAAM,CACxC,CAAC,CAAA;AAEF,EAAA,IAAMC,wBAAwB,GAAG,SAA3BA,wBAAwBA,GAAmC;AAAA,IAAA,IAAAC,KAAA,GAAAC,SAAA,CAAAC,MAAA,GAAA,CAAA,IAAAD,SAAA,CAAA,CAAA,CAAA,KAAAE,SAAA,GAAAF,SAAA,CAAA,CAAA,CAAA,GAAP,EAAE;MAAxBG,EAAE,GAAAJ,KAAA,CAAFI,EAAE;MAAEjD,OAAO,GAAA6C,KAAA,CAAP7C,OAAO;MAAEC,IAAI,GAAA4C,KAAA,CAAJ5C,IAAI,CAAA;AACnD,IAAA,IAAI,CAAC4B,uBAAuB,EAAE,OAAO,KAAK,CAAA;IAE1C,IAAMqB,QAAQ,GAAGC,MAAM,CAAC;AAAEF,MAAAA,EAAE,EAAFA,EAAAA;KAAI,EAAE3B,SAAS,CAAC,CAAA;IAC1C,IAAM8B,UAAU,GAAGC,SAAS,CAACrD,OAAO,CAAC,IAAIqD,SAAS,CAACpD,IAAI,CAAC,CAAA;IACxD,IAAMqD,8BAA8B,GAAG,EACrCC,cAAc,CAACL,QAAQ,KAAA,IAAA,IAARA,QAAQ,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAARA,QAAQ,CAAElD,OAAO,EAAEA,OAAO,CAAC,IAAI,CAAAkD,QAAQ,KAARA,IAAAA,IAAAA,QAAQ,KAARA,KAAAA,CAAAA,GAAAA,KAAAA,CAAAA,GAAAA,QAAQ,CAAEjD,IAAI,MAAKA,IAAI,CACtE,CAAA;IAED,OAAOmD,UAAU,IAAIE,8BAA8B,CAAA;GACpD,CAAA;AAED,EAAA,IAAME,0BAA0B,GAAGH,SAAS,CAAC/B,SAAS,CAAC,CAAA;EAEvD,oBACExC,GAAA,CAAC2E,WAAI,EAAA;AACHC,IAAAA,SAAS,EAAE;AACTC,MAAAA,UAAU,EAAE,IAAI;AAChB5E,MAAAA,SAAS,EAAE,mCAAA;KACX;AACF6E,IAAAA,WAAW,EAAE;AACXC,MAAAA,aAAa,EAAEtB,oBAAoB;AACnCuB,MAAAA,gBAAgB,EAAErB,uBAAuB;AACzCsB,MAAAA,QAAQ,EAAEnC,YAAAA;KACV;AAAA5C,IAAAA,QAAA,EAED,SAAAA,QAAAgF,CAAAA,KAAA,EAA2B;AAAA,MAAA,IAAxBC,SAAS,GAAAD,KAAA,CAATC,SAAS;QAAEC,MAAM,GAAAF,KAAA,CAANE,MAAM,CAAA;AACnB,MAAA,IAAMC,oBAAoB,GAAG,SAAvBA,oBAAoBA,CAAGvE,KAAK,EAAI;AAAA,QAAA,IAAAwE,kBAAA,EAAAC,qBAAA,EAAAC,sBAAA,CAAA;QACpC,IAAI,CAAC1E,KAAK,EAAE,OAAA;QAEZ,IAAMsD,QAAQ,GAAGC,MAAM,CAAC;AAAEF,UAAAA,EAAE,EAAErD,KAAK,KAAA,IAAA,IAALA,KAAK,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAALA,KAAK,CAAEA,KAAAA;SAAO,EAAE0B,SAAS,CAAC,CAAA;QACxD2C,SAAS,CAAAvB,eAAA,CAAAA,eAAA,KAAMwB,MAAM,CAAA,EAAKhB,QAAQ,CAAE,CAAC,CAAA;AACrC,QAAA,CAAAkB,kBAAA,GAAAtC,SAAS,CAACyC,OAAO,MAAA,IAAA,IAAAH,kBAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,CAAAC,qBAAA,GAAjBD,kBAAA,CAAmBI,MAAM,MAAAH,IAAAA,IAAAA,qBAAA,KAAAC,KAAAA,CAAAA,GAAAA,KAAAA,CAAAA,GAAAA,CAAAA,sBAAA,GAAzBD,qBAAA,CAA2BI,QAAQ,cAAAH,sBAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAnCA,sBAAA,CAAqCI,UAAU,CAACxB,QAAQ,CAACjD,IAAI,CAAC,CAAA;OAC/D,CAAA;MAED,oBACEhB,IAAA,CAAA0F,QAAA,EAAA;AAAA3F,QAAAA,QAAA,EACGwE,CAAAA,0BAA0B,iBACzB1E,GAAA,CAAC8F,MAAM,EAAA;UACLC,WAAW,EAAA,IAAA;UACXC,YAAY,EAAA,IAAA;AACZC,UAAAA,QAAQ,EAAExD,aAAc;AACxB7C,UAAAA,KAAK,EAAED,CAAC,CAAC,qCAAqC,CAAE;UAChDuG,OAAO,EAAEC,UAAU,CAAC;AAAEC,YAAAA,IAAI,EAAE,OAAO;AAAEjC,YAAAA,EAAE,EAAE,OAAA;WAAS,EAAE3B,SAAS,CAAE;AAC/D6D,UAAAA,WAAW,EAAE1G,CAAC,CACZ,iDACF,CAAE;AACF2G,UAAAA,QAAQ,EAAEjB,oBAAAA;SACX,CACF,EACA1C,YAAY,EACZO,eAAe,iBACdlD,GAAA,CAACuG,KAAK,EAAA;UACJ5E,QAAQ,EAAA,IAAA;AACR/B,UAAAA,KAAK,EAAED,CAAC,CAAC,uCAAuC,CAAE;AAClDyG,UAAAA,IAAI,EAAC,SAAS;AACdI,UAAAA,GAAG,EAAE9B,0BAA0B,GAAG,IAAI,GAAGjC,aAAAA;AAAc,SACxD,CACF,eACDzC,GAAA,CAACyG,YAAY,EAAA;UACXC,iBAAiB,EAAA,IAAA;UACjB/E,QAAQ,EAAA,IAAA;AACRgF,UAAAA,SAAS,EAAE,EAAEjC,0BAA0B,IAAIxB,eAAe,CAAE;AAC5D0D,UAAAA,gBAAgB,EAAC,UAAU;AAC3BC,UAAAA,QAAQ,EAAE3D,eAAe,GAAGgB,SAAS,GAAG,EAAG;AAC3CtE,UAAAA,KAAK,EAAED,CAAC,CAAC,oCAAoC,CAAE;AAC/CyG,UAAAA,IAAI,EAAC,MAAM;AACXI,UAAAA,GAAG,EAAExD,SAAU;AACf8D,UAAAA,IAAI,EAAEC,wBAAyB;AAC/BC,UAAAA,SAAS,EAAEtE,iBAAAA;AAAkB,SAC9B,CAAC,EACDoB,wBAAwB,CAACsB,MAAM,CAAC,iBAAIpF,GAAA,CAACiH,cAAc,IAAE,CAAC,eACvDjH,GAAA,CAACkH,IAAI,CAACC,MAAM,EAAA;AAAClH,UAAAA,SAAS,EAAC,0BAA0B;UAAAC,QAAA,eAC/CF,GAAA,CAACoH,WAAW,EAAA;AACVC,YAAAA,iBAAiB,EAAE;AACjB,cAAA,SAAS,EAAE,gCAAgC;AAC3CC,cAAAA,OAAO,EAAE/E,OAAAA;aACT;AACFgF,YAAAA,iBAAiB,EAAE;AACjB,cAAA,SAAS,EAAE,8BAA8B;cACzC3H,KAAK,EAAED,CAAC,CAAC,oCAAoC,CAAA;AAC/C,aAAA;WACD,CAAA;AAAC,SACS,CAAC,CAAA;AAAA,OACd,CAAC,CAAA;AAEP,KAAA;AAAC,GACG,CAAC,CAAA;AAEX,CAAC;;;;AC/HD,IAAM6H,QAAQ,GAAG,SAAXA,QAAQA,CAAAnI,IAAA,EAOR;AAAA,EAAA,IAAAoI,WAAA,EAAAC,YAAA,EAAAC,YAAA,EAAAC,YAAA,CAAA;AAAA,EAAA,IANJpF,SAAS,GAAAnD,IAAA,CAATmD,SAAS;IACTD,OAAO,GAAAlD,IAAA,CAAPkD,OAAO;IACPO,YAAY,GAAAzD,IAAA,CAAZyD,YAAY;IACZH,YAAY,GAAAtD,IAAA,CAAZsD,YAAY;IACZC,yBAAyB,GAAAvD,IAAA,CAAzBuD,yBAAyB;IACzBC,4BAA4B,GAAAxD,IAAA,CAA5BwD,4BAA4B,CAAA;AAE5B,EAAA,IAAApD,eAAA,GAAcC,cAAc,EAAE;IAAtBC,CAAC,GAAAF,eAAA,CAADE,CAAC,CAAA;AAET,EAAA,IAAMkI,4BAA4B,GAAG,SAA/BA,4BAA4BA,CAAGb,SAAS,EAAI;IAChD,IAAMc,iBAAiB,GAAG,EAAE,CAAA;IAE5Bd,SAAS,KAAA,IAAA,IAATA,SAAS,KAATA,KAAAA,CAAAA,GAAAA,KAAAA,CAAAA,GAAAA,SAAS,CAAEe,OAAO,CAAC,UAAA5E,KAAA,EAAqB;AAAA,MAAA,IAAlB7D,IAAI,GAAA6D,KAAA,CAAJ7D,IAAI;QAAE0I,KAAK,GAAA7E,KAAA,CAAL6E,KAAK,CAAA;AAC/BF,MAAAA,iBAAiB,CAACxI,IAAI,CAAC,GAAG2I,KAAK,CAACD,KAAK,CAAC,CAACE,IAAI,CAAC,EAAE,CAAC,CAAA;AACjD,KAAC,CAAC,CAAA;AAEF,IAAA,OAAOJ,iBAAiB,CAAA;GACzB,CAAA;AAED,EAAA,IAAMK,kBAAkB,GAAG,SAArBA,kBAAkBA,CAAG5H,UAAU,EAAA;AAAA,IAAA,IAAA6H,SAAA,CAAA;AAAA,IAAA,OAAA,CAAAA,SAAA,GACnCC,QAAQ,CAACC,KAAK,CAAC,CAAC,MAAM,EAAE/H,UAAU,CAAC,MAAA,IAAA,IAAA6H,SAAA,KAAnCA,KAAAA,CAAAA,GAAAA,KAAAA,CAAAA,GAAAA,SAAA,CAAqCG,IAAI,CAAC,IAAI,CAAC,CAAA;AAAA,GAAA,CAAA;AAEjD,EAAA,IAAMC,iBAAiB,GAAG;AACxBC,IAAAA,gBAAgB,EAAE;AAAE7I,MAAAA,KAAK,EAAA6H,CAAAA,WAAA,GAAEjF,SAAS,CAAC,CAAC,CAAC,MAAA,IAAA,IAAAiF,WAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAZA,WAAA,CAAcrB,IAAI;MAAEtF,KAAK,EAAA,CAAA4G,YAAA,GAAElF,SAAS,CAAC,CAAC,CAAC,MAAAkF,IAAAA,IAAAA,YAAA,KAAZA,KAAAA,CAAAA,GAAAA,KAAAA,CAAAA,GAAAA,YAAA,CAAcvD,EAAAA;KAAI;AACxEuE,IAAAA,eAAe,EAAEP,kBAAkB,CAAAR,CAAAA,YAAA,GAACnF,SAAS,CAAC,CAAC,CAAC,cAAAmF,YAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAZA,YAAA,CAAcpH,UAAU,CAAC;AAC7D4B,IAAAA,gBAAgB,EAAE0F,4BAA4B,CAAAD,CAAAA,YAAA,GAACpF,SAAS,CAAC,CAAC,CAAC,MAAAoF,IAAAA,IAAAA,YAAA,KAAZA,KAAAA,CAAAA,GAAAA,KAAAA,CAAAA,GAAAA,YAAA,CAAce,aAAa,CAAA;GAC3E,CAAA;EAED,IAAMlF,oBAAoB,GAAGC,QAAQ,CAAC,CACpC8E,iBAAiB,EACjB5F,yBAAyB,CAC1B,CAAC,CAAA;AAEF,EAAA,IAAMe,uBAAuB,GAAGpC,GAAG,CAACC,MAAM,EAAE,CAACC,KAAK,CAAAmC,eAAA,CAAAA,eAAA,CAC7C1B,EAAAA,EAAAA,wCAAwC,KAAxCA,IAAAA,IAAAA,wCAAwC,KAAxCA,KAAAA,CAAAA,GAAAA,KAAAA,CAAAA,GAAAA,wCAAwC,CAAE2B,MAAM,CAChDhB,EAAAA,4BAA4B,KAA5BA,IAAAA,IAAAA,4BAA4B,KAA5BA,KAAAA,CAAAA,GAAAA,KAAAA,CAAAA,GAAAA,4BAA4B,CAAEgB,MAAM,CACxC,CAAC,CAAA;AAEF,EAAA,IAAM+E,gBAAgB,GAAGC,MAAM,CAACC,IAAI,CAACN,iBAAiB,CAAC,CAAA;EAEvD,oBACExI,GAAA,CAAC2E,WAAI,EAAA;AACHC,IAAAA,SAAS,EAAE;AACTC,MAAAA,UAAU,EAAE,IAAI;AAChB5E,MAAAA,SAAS,EAAE,mCAAA;KACX;AACF6E,IAAAA,WAAW,EAAE;AACXC,MAAAA,aAAa,EAAEtB,oBAAoB;AACnCuB,MAAAA,gBAAgB,EAAErB,uBAAuB;AACzCsB,MAAAA,QAAQ,EAAEnC,YAAAA;KACV;AAAA5C,IAAAA,QAAA,EAED,SAAAA,QAAAmD,CAAAA,KAAA,EAA2B;AAAA,MAAA,IAAxB+B,MAAM,GAAA/B,KAAA,CAAN+B,MAAM;QAAED,SAAS,GAAA9B,KAAA,CAAT8B,SAAS,CAAA;AACnB,MAAA,IAAME,oBAAoB,GAAG,SAAvBA,oBAAoBA,CAAGvE,KAAK,EAAI;QACpC,IAAI,CAACA,KAAK,EAAE,OAAA;QAEZ,IAAMsD,QAAQ,GAAGC,MAAM,CAAC;AAAEF,UAAAA,EAAE,EAAErD,KAAK,KAAA,IAAA,IAALA,KAAK,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAALA,KAAK,CAAEA,KAAAA;SAAO,EAAE0B,SAAS,CAAC,CAAA;AACxD,QAAA,IAAMuG,iBAAiB,GAAG3F,IAAI,CAACwF,gBAAgB,EAAExD,MAAM,CAAC,CAAA;AACxDD,QAAAA,SAAS,CAAAvB,eAAA,CAAA;AACP6E,UAAAA,gBAAgB,EAAE;YAAE7I,KAAK,EAAEwE,QAAQ,CAACgC,IAAI;YAAEtF,KAAK,EAAEsD,QAAQ,CAACD,EAAAA;WAAI;AAC9DuE,UAAAA,eAAe,EAAEP,kBAAkB,CAAC/D,QAAQ,CAAC7D,UAAU,CAAC;AACxD4B,UAAAA,gBAAgB,EAAE0F,4BAA4B,CAC5CzD,QAAQ,CAACuE,aACX,CAAA;SACGI,EAAAA,iBAAiB,CACrB,CAAC,CAAA;OACH,CAAA;MAED,oBACE5I,IAAA,CAAA0F,QAAA,EAAA;QAAA3F,QAAA,EAAA,cACEF,GAAA,CAAC8F,QAAM,EAAA;UACLnE,QAAQ,EAAA,IAAA;UACRqH,YAAY,EAAER,iBAAiB,CAACC,gBAAiB;AACjD7I,UAAAA,KAAK,EAAED,CAAC,CAAC,qCAAqC,CAAE;AAChDyG,UAAAA,IAAI,EAAC,kBAAkB;UACvBF,OAAO,EAAEC,UAAU,CAAC;AAAEC,YAAAA,IAAI,EAAE,OAAO;AAAEjC,YAAAA,EAAE,EAAE,OAAA;WAAS,EAAE3B,SAAS,CAAE;AAC/D8D,UAAAA,QAAQ,EAAEjB,oBAAAA;AAAqB,SAChC,CAAC,EACD1C,YAAY,eACb3C,GAAA,CAACiJ,QAAQ,EAAA;UACPC,QAAQ,EAAA,IAAA;UACRC,aAAa,EAAA,IAAA;AACbvJ,UAAAA,KAAK,EAAED,CAAC,CAAC,uCAAuC,CAAE;UAClDmB,KAAK,EAAEsE,MAAM,CAACsD,eAAAA;SACf,CAAC,EACDU,UAAU,CAAChE,MAAM,CAACjD,gBAAgB,CAAC,iBAClCnC,GAAA,CAAA6F,QAAA,EAAA;AAAA3F,UAAAA,QAAA,EACG2I,MAAM,CAACC,IAAI,CAAC1D,MAAM,CAACjD,gBAAgB,CAAC,CAACkH,GAAG,CAAC,UAAAC,KAAK,EAAA;AAAA,YAAA,oBAC7CnJ,IAAA,CAAA,KAAA,EAAA;AAAKF,cAAAA,SAAS,EAAC,uBAAuB;cAAAC,QAAA,EAAA,cACpCF,GAAA,CAACI,UAAU,EAAA;AAACQ,gBAAAA,KAAK,EAAC,IAAI;AAAAV,gBAAAA,QAAA,EACnBP,CAAC,CAAC,+CAA+C,EAAE;kBAClDL,IAAI,EAAEiK,UAAU,CAACD,KAAK,CAAA;iBACvB,CAAA;AAAC,eACQ,CAAC,EACZlE,MAAM,CAACjD,gBAAgB,CAACmH,KAAK,CAAC,CAACD,GAAG,CAAC,UAACG,CAAC,EAAEC,KAAK,EAAA;AAAA,gBAAA,oBAC3CzJ,GAAA,CAAA,KAAA,EAAA;kBAAAE,QAAA,eACEF,GAAA,CAACuG,KAAK,EAAA;oBACJ5E,QAAQ,EAAA,IAAA;AAER/B,oBAAAA,KAAK,OAAA8J,MAAA,CAAOD,KAAK,GAAG,CAAC,EAAK,IAAA,CAAA;AAC1BrD,oBAAAA,IAAI,sBAAAsD,MAAA,CAAsBJ,KAAK,EAAAI,GAAAA,CAAAA,CAAAA,MAAA,CAAID,KAAK,CAAA;AAAG,mBAAA,EAAA,EAAA,CAAAC,MAAA,CAFnCJ,KAAK,OAAAI,MAAA,CAAID,KAAK,CAGvB,CAAA;iBAACC,EAAAA,EAAAA,CAAAA,MAAA,CANSJ,KAAK,EAAA,GAAA,CAAA,CAAAI,MAAA,CAAID,KAAK,CAOtB,CAAC,CAAA;AAAA,eACP,CAAC,CAAA;AAAA,aAAA,EAfwCH,KAgBvC,CAAC,CAAA;WACP,CAAA;AAAC,SACF,CACH,eACDtJ,GAAA,CAACkH,IAAI,CAACC,MAAM,EAAA;AAAClH,UAAAA,SAAS,EAAC,0BAA0B;UAAAC,QAAA,eAC/CF,GAAA,CAACoH,WAAW,EAAA;AACVC,YAAAA,iBAAiB,EAAE;AACjB,cAAA,SAAS,EAAE,gCAAgC;AAC3CC,cAAAA,OAAO,EAAE/E,OAAAA;aACT;AACFgF,YAAAA,iBAAiB,EAAE;AACjB,cAAA,SAAS,EAAE,8BAA8B;cACzC3H,KAAK,EAAED,CAAC,CAAC,oCAAoC,CAAA;AAC/C,aAAA;WACD,CAAA;AAAC,SACS,CAAC,CAAA;AAAA,OACd,CAAC,CAAA;AAEP,KAAA;AAAC,GACG,CAAC,CAAA;AAEX,CAAC;;;;ACjID,IAAMgK,eAAe,GAAG,SAAlBA,eAAeA,CAAGC,KAAK,EAAI;AAC/B,EAAA,IAAQC,MAAM,GAAcD,KAAK,CAAzBC,MAAM;IAAEtH,OAAO,GAAKqH,KAAK,CAAjBrH,OAAO,CAAA;EAEvB,oBACEvC,GAAA,CAACkH,IAAI,EAAA;AAAO2C,IAAAA,MAAM,EAANA,MAAM;AAAEtH,IAAAA,OAAO,EAAPA,OAAO;IAAArC,QAAA,EACxB,SAAAA,QAAAA,CAAA4J,SAAS,EAAA;MAAA,oBAAI9J,GAAA,CAAC+J,eAAe,EAAAnG,aAAA,KAAAA,aAAA,CAAAA,aAAA,CAAA,EAAA,EAAUgG,KAAK,CAAA,EAAA,EAAA,EAAA;AAAEE,QAAAA,SAAS,EAATA,SAAAA;AAAS,OAAA,CAAA,CAAK,CAAC,CAAA;AAAA,KAAA;AAAA,GAC1D,CAAC,CAAA;AAEX,EAAC;AAED,IAAMC,eAAe,GAAG,SAAlBA,eAAeA,CAAA1K,IAAA,EAYf;AAAA,EAAA,IAAA2K,SAAA,GAAA3K,IAAA,CAXJC,IAAI;AAAJA,IAAAA,IAAI,GAAA0K,SAAA,KAAG,KAAA,CAAA,GAAA,EAAE,GAAAA,SAAA;IAAAC,iBAAA,GAAA5K,IAAA,CACTyD,YAAY;AAAZA,IAAAA,YAAY,GAAAmH,iBAAA,KAAGC,KAAAA,CAAAA,GAAAA,IAAI,GAAAD,iBAAA;IAAAE,YAAA,GAAA9K,IAAA,CACnBkD,OAAO;AAAPA,IAAAA,OAAO,GAAA4H,YAAA,KAAGD,KAAAA,CAAAA,GAAAA,IAAI,GAAAC,YAAA;IAAAC,iBAAA,GAAA/K,IAAA,CACdsD,YAAY;AAAZA,IAAAA,YAAY,GAAAyH,iBAAA,KAAG,KAAA,CAAA,GAAA,IAAI,GAAAA,iBAAA;IAAAC,qBAAA,GAAAhL,IAAA,CACnBuD,yBAAyB;AAAzBA,IAAAA,yBAAyB,GAAAyH,qBAAA,KAAA,KAAA,CAAA,GAAG,EAAE,GAAAA,qBAAA;IAAAC,qBAAA,GAAAjL,IAAA,CAC9BwD,4BAA4B;AAA5BA,IAAAA,4BAA4B,GAAAyH,qBAAA,KAAA,KAAA,CAAA,GAAG,EAAE,GAAAA,qBAAA;IAAAC,qBAAA,GAAAlL,IAAA,CACjCqD,iBAAiB;AAAjBA,IAAAA,iBAAiB,GAAA6H,qBAAA,KAAA,KAAA,CAAA,GAAG,EAAE,GAAAA,qBAAA;IAAAC,YAAA,GAAAnL,IAAA,CACtBoL,OAAO;AAAPA,IAAAA,OAAO,GAAAD,YAAA,KAAG,KAAA,CAAA,GAAA,EAAE,GAAAA,YAAA;IAAAjL,eAAA,GAAAF,IAAA,CACZG,UAAU;AAAVA,IAAAA,UAAU,GAAAD,eAAA,KAAG,KAAA,CAAA,GAAA,EAAE,GAAAA,eAAA;IAAAmL,qBAAA,GAAArL,IAAA,CACf0D,uBAAuB;AAAvBA,IAAAA,uBAAuB,GAAA2H,qBAAA,KAAG,KAAA,CAAA,GAAA,IAAI,GAAAA,qBAAA;AACjBjI,IAAAA,aAAa,GAAApD,IAAA,CAA1ByK,SAAS,CAAIrH,aAAa,CAAA;AAE1B,EAAA,IAAAhD,eAAA,GAAcC,cAAc,EAAE;IAAtBC,CAAC,GAAAF,eAAA,CAADE,CAAC,CAAA;AAET,EAAA,IAAQmB,KAAK,GAAKjB,iBAAiB,CAACP,IAAI,CAAC,CAAjCwB,KAAK,CAAA;AACb,EAAA,IAAM6J,kBAAkB,GAAGrL,IAAI,KAAK,UAAU,CAAA;AAC9C,EAAA,IAAMsL,cAAc,GAAG;AACrBC,IAAAA,MAAM,EAAE,QAAQ;AAChBC,IAAAA,YAAY,EAAEhK,KAAK;AACnB2J,IAAAA,OAAO,EAAPA,OAAAA;GACD,CAAA;AAED,EAAA,IAAAM,kBAAA,GACEC,iBAAiB,CAACJ,cAAc,CAAC;IAAAK,qBAAA,GAAAF,kBAAA,CAD3BG,IAAI;AAAAC,IAAAA,sBAAA,GAAAF,qBAAA,KAAA,KAAA,CAAA,GAAuB,EAAE,GAAAA,qBAAA;IAAAG,sBAAA,GAAAD,sBAAA,CAArB3I,SAAS;AAATA,IAAAA,SAAS,GAAA4I,sBAAA,KAAG,KAAA,CAAA,GAAA,EAAE,GAAAA,sBAAA;IAASC,SAAS,GAAAN,kBAAA,CAATM,SAAS,CAAA;AAGhD,EAAA,IAAIA,SAAS,EAAE;AACb,IAAA,oBACErL,GAAA,CAAA,KAAA,EAAA;AAAKC,MAAAA,SAAS,EAAC,gDAAgD;AAAAC,MAAAA,QAAA,eAC7DF,GAAA,CAACsL,OAAO,EAAE,EAAA,CAAA;AAAC,KACR,CAAC,CAAA;AAEV,GAAA;AAEA,EAAA,IAAIX,kBAAkB,IAAIY,OAAO,CAAC/I,SAAS,CAAC,EAAE;IAC5C,oBAAOxC,GAAA,CAACZ,UAAU,EAAA;AAAOI,MAAAA,UAAU,EAAVA,UAAU;AAAEF,MAAAA,IAAI,EAAJA,IAAAA;AAAI,KAAK,CAAC,CAAA;AACjD,GAAA;EAEA,oBACEa,IAAA,CAAA0F,QAAA,EAAA;AAAA3F,IAAAA,QAAA,EACEF,cAAAA,GAAA,CAACkH,IAAI,CAACsE,MAAM,EAAA;MAAAtL,QAAA,eACVC,IAAA,CAACC,UAAU,EAAA;AAACQ,QAAAA,KAAK,EAAC,IAAI;AAAC6K,QAAAA,MAAM,EAAC,UAAU;QAAAvL,QAAA,EAAA,CACrCP,CAAC,CAAC,kCAAkC,CAAC,EAAC,GAAC,EAACG,aAAa,CAACR,IAAI,CAAC,CAAA;OAClD,CAAA;AAAC,KACF,CAAC,eACdU,GAAA,CAACkH,IAAI,CAACwE,IAAI,EAAA;AAAAxL,MAAAA,QAAA,EACPyK,kBAAkB,gBACjB3K,GAAA,CAAC2L,QAAY,EAAA;AAEThJ,QAAAA,YAAY,EAAZA,YAAY;AACZC,QAAAA,yBAAyB,EAAzBA,yBAAyB;AACzBC,QAAAA,4BAA4B,EAA5BA,4BAA4B;AAC5BC,QAAAA,YAAY,EAAZA,YAAY;AACZP,QAAAA,OAAO,EAAPA,OAAO;AACPC,QAAAA,SAAS,EAATA,SAAAA;AAAS,OAEZ,CAAC,gBAEFxC,GAAA,CAACsC,WAAW,EAAA;AAERK,QAAAA,YAAY,EAAZA,YAAY;AACZC,QAAAA,yBAAyB,EAAzBA,yBAAyB;AACzBC,QAAAA,4BAA4B,EAA5BA,4BAA4B;AAC5BC,QAAAA,YAAY,EAAZA,YAAY;AACZC,QAAAA,uBAAuB,EAAvBA,uBAAuB;AACvBR,QAAAA,OAAO,EAAPA,OAAO;AACPE,QAAAA,aAAa,EAAbA,aAAa;AACbC,QAAAA,iBAAiB,EAAjBA,iBAAiB;AACjBF,QAAAA,SAAS,EAATA,SAAS;AACTlD,QAAAA,IAAI,EAAJA,IAAAA;OAEH,CAAA;AACF,KACQ,CAAC,CAAA;AAAA,GACZ,CAAC,CAAA;AAEP,CAAC;;;;"}
@@ -1,38 +1,51 @@
1
- import { b as useFetchTemplates, _ as _defineProperty } from './useTemplatesApi-45d43d41.js';
2
- import { isPresent, renameKeys } from '@bigbinary/neeto-cist';
1
+ import _defineProperty from '@babel/runtime/helpers/defineProperty';
2
+ import { isPresent, renameKeys, findBy } from '@bigbinary/neeto-cist';
3
3
  import Pane from '@bigbinary/neetoui/Pane';
4
4
  import Select from '@bigbinary/neetoui/Select';
5
+ import Spinner from '@bigbinary/neetoui/Spinner';
5
6
  import Typography from '@bigbinary/neetoui/Typography';
6
7
  import ActionBlock from '@bigbinary/neetoui/formik/ActionBlock';
7
8
  import Input from '@bigbinary/neetoui/formik/Input';
8
9
  import NeetoUIForm from '@bigbinary/neetoui/formik/Form';
9
- import { isEmpty, modify } from 'ramda';
10
+ import { modify, equals } from 'ramda';
10
11
  import { useTranslation } from 'react-i18next';
11
- import { V as VALID_URL_REGEX, a as ADDITIONAL_DATA_INITIAL_VALUE, S as SAMPLE_URL, K as KeyValuePairs, r as rejectEmptyKeyValuePairs, b as API_TEMPLATE_TYPE } from './utils-b93467c8.js';
12
- import { N as NoDataPage } from './NoDataPage-4ba91a9f.js';
12
+ import { V as VALID_URL_REGEX, a as ADDITIONAL_DATA_INITIAL_VALUE, S as SAMPLE_URL, K as KeyValuePairs, r as rejectEmptyKeyValuePairs, b as API_TEMPLATE_TYPE } from './utils-BUob2F8X.js';
13
+ import { S as SaveAsTemplate, a as areValuesEqual } from './utils-CdkVjz8p.js';
14
+ import { b as useFetchTemplates } from './useTemplatesApi-D63swqeh.js';
13
15
  import { t } from 'i18next';
14
16
  import * as yup from 'yup';
15
17
  import { jsx, jsxs, Fragment } from 'react/jsx-runtime';
16
- import '@bigbinary/neeto-commons-frontend/constants';
17
- import '@tanstack/react-query';
18
- import '@bigbinary/neeto-commons-frontend/react-utils';
19
- import 'axios';
20
- import 'util';
21
18
  import 'formik';
19
+ import '@bigbinary/neeto-commons-frontend/react-utils';
22
20
  import '@bigbinary/neeto-icons/Delete';
23
21
  import '@bigbinary/neetoui/Button';
24
22
  import '@bigbinary/neetoui/Label';
23
+ import 'react';
24
+ import '@babel/runtime/helpers/objectWithoutProperties';
25
+ import 'classnames';
26
+ import '@bigbinary/neetoui/formik/Switch';
27
+ import '@tanstack/react-query';
28
+ import 'axios';
29
+ import 'qs';
25
30
 
26
31
  var SEND_TO_API_FORM_INITIAL_VALUES = {
27
32
  endpoint: "",
28
- additionalData: [ADDITIONAL_DATA_INITIAL_VALUE]
33
+ additionalData: [ADDITIONAL_DATA_INITIAL_VALUE],
34
+ shouldSaveAsTemplate: false,
35
+ templateName: ""
29
36
  };
30
37
  var SEND_TO_API_FORM_VALIDATION_SCHEMA = yup.object({
31
38
  endpoint: yup.string().required(t("neetoMessageTemplate.api.validation.endpointPresence")).matches(VALID_URL_REGEX, t("neetoMessageTemplate.api.validation.validEndpoint")),
32
39
  additionalData: yup.array().of(yup.object({
33
40
  key: yup.string(),
34
41
  value: yup.string()
35
- }))
42
+ })),
43
+ templateName: yup.string().when("shouldSaveAsTemplate", {
44
+ is: true,
45
+ then: yup.string().required(t("neetoMessageTemplate.template.validation.requiredEntity", {
46
+ entity: t("neetoMessageTemplate.template.templateName")
47
+ }))
48
+ })
36
49
  });
37
50
 
38
51
  var formatAdditionalData = function formatAdditionalData(additionalData) {
@@ -59,7 +72,6 @@ var SendToApiForm = function SendToApiForm(_ref) {
59
72
  onClose = _ref.onClose,
60
73
  onSubmit = _ref.onSubmit,
61
74
  isSubmitting = _ref.isSubmitting,
62
- addNewTemplateRoute = _ref.addNewTemplateRoute,
63
75
  setFocusField = _ref.paneProps.setFocusField;
64
76
  var _useTranslation = useTranslation(),
65
77
  t = _useTranslation.t;
@@ -73,18 +85,34 @@ var SendToApiForm = function SendToApiForm(_ref) {
73
85
  _useFetchTemplates$da3 = _useFetchTemplates$da2.templates,
74
86
  templates = _useFetchTemplates$da3 === void 0 ? [] : _useFetchTemplates$da3,
75
87
  isLoadingTemplates = _useFetchTemplates.isLoading;
76
- var handleTemplateChange = function handleTemplateChange(setFieldValue, template) {
77
- setFieldValue("endpoint", template.endpoint);
78
- setFieldValue("additionalData", formatAdditionalData(template.additionalData));
88
+ var handleTemplateChange = function handleTemplateChange(setValues, values, option) {
89
+ if (!option) return;
90
+ var template = findBy({
91
+ id: option.value
92
+ }, templates);
93
+ setValues(_objectSpread(_objectSpread({}, values), modify("additionalData", formatAdditionalData, template)));
79
94
  };
80
95
  var handleSubmit = function handleSubmit(formValues) {
81
96
  var additionalDataModifiedFormValues = modify("additionalData", rejectEmptyKeyValuePairs, formValues);
82
97
  onSubmit(additionalDataModifiedFormValues);
83
98
  };
84
- if (isEmpty(templates)) {
85
- return /*#__PURE__*/jsx(NoDataPage, {
86
- addNewTemplateRoute: addNewTemplateRoute,
87
- type: "api"
99
+ var shouldShowSaveAsTemplate = function shouldShowSaveAsTemplate() {
100
+ var _ref2 = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {},
101
+ id = _ref2.id,
102
+ endpoint = _ref2.endpoint,
103
+ additionalData = _ref2.additionalData;
104
+ var template = findBy({
105
+ id: id
106
+ }, templates);
107
+ var hasContent = isPresent(endpoint) || isPresent(rejectEmptyKeyValuePairs(additionalData));
108
+ var isContentDifferentFromTemplate = !(areValuesEqual(template === null || template === void 0 ? void 0 : template.endpoint, endpoint) && equals(template === null || template === void 0 ? void 0 : template.additionalData, additionalData));
109
+ return hasContent && isContentDifferentFromTemplate;
110
+ };
111
+ var isTemplateSelectionEnabled = isPresent(templates);
112
+ if (isLoadingTemplates) {
113
+ return /*#__PURE__*/jsx("div", {
114
+ className: "flex h-full w-full items-center justify-center",
115
+ children: /*#__PURE__*/jsx(Spinner, {})
88
116
  });
89
117
  }
90
118
  return /*#__PURE__*/jsxs(Fragment, {
@@ -100,13 +128,14 @@ var SendToApiForm = function SendToApiForm(_ref) {
100
128
  validationSchema: SEND_TO_API_FORM_VALIDATION_SCHEMA,
101
129
  onSubmit: handleSubmit
102
130
  },
103
- children: function children(_ref2) {
104
- var setFieldValue = _ref2.setFieldValue;
131
+ children: function children(_ref3) {
132
+ var values = _ref3.values,
133
+ setValues = _ref3.setValues;
105
134
  return /*#__PURE__*/jsxs(Fragment, {
106
135
  children: [/*#__PURE__*/jsx(Pane.Body, {
107
136
  children: /*#__PURE__*/jsxs("div", {
108
137
  className: "w-full space-y-5",
109
- children: [/*#__PURE__*/jsx(Select, {
138
+ children: [isTemplateSelectionEnabled && /*#__PURE__*/jsx(Select, {
110
139
  innerRef: setFocusField,
111
140
  isLoading: isLoadingTemplates,
112
141
  label: t("neetoMessageTemplate.template.title"),
@@ -116,17 +145,18 @@ var SendToApiForm = function SendToApiForm(_ref) {
116
145
  }, templates),
117
146
  placeholder: t("neetoMessageTemplate.sendMessage.selectTemplate"),
118
147
  onChange: function onChange(template) {
119
- return handleTemplateChange(setFieldValue, template);
148
+ return handleTemplateChange(setValues, values, template);
120
149
  }
121
150
  }), /*#__PURE__*/jsx(Input, {
122
151
  required: true,
123
152
  label: t("neetoMessageTemplate.api.endpoint"),
124
153
  name: "endpoint",
125
- placeholder: SAMPLE_URL
154
+ placeholder: SAMPLE_URL,
155
+ ref: isTemplateSelectionEnabled ? null : setFocusField
126
156
  }), /*#__PURE__*/jsx(KeyValuePairs, {
127
157
  label: t("neetoMessageTemplate.api.additionalData"),
128
158
  name: "additionalData"
129
- })]
159
+ }), shouldShowSaveAsTemplate(values) && /*#__PURE__*/jsx(SaveAsTemplate, {})]
130
160
  })
131
161
  }), /*#__PURE__*/jsx(Pane.Footer, {
132
162
  children: /*#__PURE__*/jsx(ActionBlock, {
@@ -1 +1 @@
1
- {"version":3,"file":"SendToApiPane.js","sources":["../app/javascript/src/components/Api/SendToApiPane/constants.js","../app/javascript/src/components/Api/SendToApiPane/utils.js","../app/javascript/src/components/Api/SendToApiPane/index.jsx"],"sourcesContent":["import { t } from \"i18next\";\nimport * as yup from \"yup\";\n\nimport { ADDITIONAL_DATA_INITIAL_VALUE, VALID_URL_REGEX } from \"../constants\";\n\nexport const SEND_TO_API_FORM_INITIAL_VALUES = {\n endpoint: \"\",\n additionalData: [ADDITIONAL_DATA_INITIAL_VALUE],\n};\n\nexport const SEND_TO_API_FORM_VALIDATION_SCHEMA = yup.object({\n endpoint: yup\n .string()\n .required(t(\"neetoMessageTemplate.api.validation.endpointPresence\"))\n .matches(\n VALID_URL_REGEX,\n t(\"neetoMessageTemplate.api.validation.validEndpoint\")\n ),\n additionalData: yup\n .array()\n .of(yup.object({ key: yup.string(), value: yup.string() })),\n});\n","import { isPresent } from \"neetocist\";\n\nimport { ADDITIONAL_DATA_INITIAL_VALUE } from \"../constants\";\n\nexport const formatAdditionalData = additionalData =>\n isPresent(additionalData) ? additionalData : [ADDITIONAL_DATA_INITIAL_VALUE];\n","import { renameKeys } from \"neetocist\";\nimport { Pane, Select, Typography } from \"neetoui\";\nimport { ActionBlock, Input, Form as NeetoUIForm } from \"neetoui/formik\";\nimport { isEmpty, modify } from \"ramda\";\nimport { useTranslation } from \"react-i18next\";\n\nimport { SAMPLE_URL } from \"components/Api/ApiTemplates/constants\";\nimport { API_TEMPLATE_TYPE } from \"components/Api/constants\";\nimport { rejectEmptyKeyValuePairs } from \"components/Api/utils\";\nimport KeyValuePairs from \"components/commons/KeyValuePairs\";\nimport NoDataPage from \"components/commons/NoDataPage\";\nimport { useFetchTemplates } from \"hooks/reactQuery/useTemplatesApi\";\n\nimport {\n SEND_TO_API_FORM_INITIAL_VALUES,\n SEND_TO_API_FORM_VALIDATION_SCHEMA,\n} from \"./constants\";\nimport { formatAdditionalData } from \"./utils\";\n\nconst SendToApiPane = props => {\n const { isOpen, onClose } = props;\n\n return (\n <Pane {...{ isOpen, onClose }}>\n {paneProps => <SendToApiForm {...{ ...props, paneProps }} />}\n </Pane>\n );\n};\n\nconst SendToApiForm = ({\n ownerId,\n onClose,\n onSubmit,\n isSubmitting,\n addNewTemplateRoute,\n paneProps: { setFocusField },\n}) => {\n const { t } = useTranslation();\n\n const { data: { templates = [] } = {}, isLoading: isLoadingTemplates } =\n useFetchTemplates({\n status: \"active\",\n templateType: API_TEMPLATE_TYPE,\n ownerId,\n });\n\n const handleTemplateChange = (setFieldValue, template) => {\n setFieldValue(\"endpoint\", template.endpoint);\n setFieldValue(\n \"additionalData\",\n formatAdditionalData(template.additionalData)\n );\n };\n\n const handleSubmit = formValues => {\n const additionalDataModifiedFormValues = modify(\n \"additionalData\",\n rejectEmptyKeyValuePairs,\n formValues\n );\n\n onSubmit(additionalDataModifiedFormValues);\n };\n\n if (isEmpty(templates)) {\n return <NoDataPage {...{ addNewTemplateRoute }} type=\"api\" />;\n }\n\n return (\n <>\n <Pane.Header>\n <Typography style=\"h2\" weight=\"semibold\">\n {t(\"neetoMessageTemplate.api.sendToApi\")}\n </Typography>\n </Pane.Header>\n <NeetoUIForm\n formikProps={{\n initialValues: SEND_TO_API_FORM_INITIAL_VALUES,\n validationSchema: SEND_TO_API_FORM_VALIDATION_SCHEMA,\n onSubmit: handleSubmit,\n }}\n >\n {({ setFieldValue }) => (\n <>\n <Pane.Body>\n <div className=\"w-full space-y-5\">\n <Select\n innerRef={setFocusField}\n isLoading={isLoadingTemplates}\n label={t(\"neetoMessageTemplate.template.title\")}\n options={renameKeys(\n { name: \"label\", id: \"value\" },\n templates\n )}\n placeholder={t(\n \"neetoMessageTemplate.sendMessage.selectTemplate\"\n )}\n onChange={template =>\n handleTemplateChange(setFieldValue, template)\n }\n />\n <Input\n required\n label={t(\"neetoMessageTemplate.api.endpoint\")}\n name=\"endpoint\"\n placeholder={SAMPLE_URL}\n />\n <KeyValuePairs\n label={t(\"neetoMessageTemplate.api.additionalData\")}\n name=\"additionalData\"\n />\n </div>\n </Pane.Body>\n <Pane.Footer>\n <ActionBlock\n {...{ isSubmitting }}\n cancelButtonProps={{\n onClick: onClose,\n \"data-cy\": \"api-template-cancel-button\",\n }}\n submitButtonProps={{\n label: t(\"neetoMessageTemplate.template.send\"),\n \"data-cy\": \"api-template-send-button\",\n }}\n />\n </Pane.Footer>\n </>\n )}\n </NeetoUIForm>\n </>\n );\n};\n\nexport default SendToApiPane;\n"],"names":["SEND_TO_API_FORM_INITIAL_VALUES","endpoint","additionalData","ADDITIONAL_DATA_INITIAL_VALUE","SEND_TO_API_FORM_VALIDATION_SCHEMA","yup","object","string","required","t","matches","VALID_URL_REGEX","array","of","key","value","formatAdditionalData","isPresent","SendToApiPane","props","isOpen","onClose","_jsx","Pane","children","paneProps","SendToApiForm","_objectSpread","_ref","ownerId","onSubmit","isSubmitting","addNewTemplateRoute","setFocusField","_useTranslation","useTranslation","_useFetchTemplates","useFetchTemplates","status","templateType","API_TEMPLATE_TYPE","_useFetchTemplates$da","data","_useFetchTemplates$da2","_useFetchTemplates$da3","templates","isLoadingTemplates","isLoading","handleTemplateChange","setFieldValue","template","handleSubmit","formValues","additionalDataModifiedFormValues","modify","rejectEmptyKeyValuePairs","isEmpty","NoDataPage","type","_jsxs","_Fragment","Header","Typography","style","weight","NeetoUIForm","formikProps","initialValues","validationSchema","_ref2","Body","className","Select","innerRef","label","options","renameKeys","name","id","placeholder","onChange","Input","SAMPLE_URL","KeyValuePairs","Footer","ActionBlock","cancelButtonProps","onClick","submitButtonProps"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;AAKO,IAAMA,+BAA+B,GAAG;AAC7CC,EAAAA,QAAQ,EAAE,EAAE;EACZC,cAAc,EAAE,CAACC,6BAA6B,CAAA;AAChD,CAAC,CAAA;AAEM,IAAMC,kCAAkC,GAAGC,GAAG,CAACC,MAAM,CAAC;EAC3DL,QAAQ,EAAEI,GAAG,CACVE,MAAM,EAAE,CACRC,QAAQ,CAACC,CAAC,CAAC,sDAAsD,CAAC,CAAC,CACnEC,OAAO,CACNC,eAAe,EACfF,CAAC,CAAC,mDAAmD,CACvD,CAAC;AACHP,EAAAA,cAAc,EAAEG,GAAG,CAChBO,KAAK,EAAE,CACPC,EAAE,CAACR,GAAG,CAACC,MAAM,CAAC;AAAEQ,IAAAA,GAAG,EAAET,GAAG,CAACE,MAAM,EAAE;AAAEQ,IAAAA,KAAK,EAAEV,GAAG,CAACE,MAAM,EAAC;AAAE,GAAC,CAAC,CAAA;AAC9D,CAAC,CAAC;;ACjBK,IAAMS,oBAAoB,GAAG,SAAvBA,oBAAoBA,CAAGd,cAAc,EAAA;EAAA,OAChDe,SAAS,CAACf,cAAc,CAAC,GAAGA,cAAc,GAAG,CAACC,6BAA6B,CAAC,CAAA;AAAA,CAAA;;;;ACc9E,IAAMe,aAAa,GAAG,SAAhBA,aAAaA,CAAGC,KAAK,EAAI;AAC7B,EAAA,IAAQC,MAAM,GAAcD,KAAK,CAAzBC,MAAM;IAAEC,OAAO,GAAKF,KAAK,CAAjBE,OAAO,CAAA;EAEvB,oBACEC,GAAA,CAACC,IAAI,EAAA;AAAOH,IAAAA,MAAM,EAANA,MAAM;AAAEC,IAAAA,OAAO,EAAPA,OAAO;IAAAG,QAAA,EACxB,SAAAA,QAAAA,CAAAC,SAAS,EAAA;MAAA,oBAAIH,GAAA,CAACI,aAAa,EAAAC,aAAA,KAAAA,aAAA,CAAAA,aAAA,CAAA,EAAA,EAAUR,KAAK,CAAA,EAAA,EAAA,EAAA;AAAEM,QAAAA,SAAS,EAATA,SAAAA;AAAS,OAAA,CAAA,CAAK,CAAC,CAAA;AAAA,KAAA;AAAA,GACxD,CAAC,CAAA;AAEX,EAAC;AAED,IAAMC,aAAa,GAAG,SAAhBA,aAAaA,CAAAE,IAAA,EAOb;AAAA,EAAA,IANJC,OAAO,GAAAD,IAAA,CAAPC,OAAO;IACPR,OAAO,GAAAO,IAAA,CAAPP,OAAO;IACPS,QAAQ,GAAAF,IAAA,CAARE,QAAQ;IACRC,YAAY,GAAAH,IAAA,CAAZG,YAAY;IACZC,mBAAmB,GAAAJ,IAAA,CAAnBI,mBAAmB;AACNC,IAAAA,aAAa,GAAAL,IAAA,CAA1BH,SAAS,CAAIQ,aAAa,CAAA;AAE1B,EAAA,IAAAC,eAAA,GAAcC,cAAc,EAAE;IAAtB1B,CAAC,GAAAyB,eAAA,CAADzB,CAAC,CAAA;EAET,IAAA2B,kBAAA,GACEC,iBAAiB,CAAC;AAChBC,MAAAA,MAAM,EAAE,QAAQ;AAChBC,MAAAA,YAAY,EAAEC,iBAAiB;AAC/BX,MAAAA,OAAO,EAAPA,OAAAA;AACF,KAAC,CAAC;IAAAY,qBAAA,GAAAL,kBAAA,CALIM,IAAI;AAAAC,IAAAA,sBAAA,GAAAF,qBAAA,KAAA,KAAA,CAAA,GAAuB,EAAE,GAAAA,qBAAA;IAAAG,sBAAA,GAAAD,sBAAA,CAArBE,SAAS;AAATA,IAAAA,SAAS,GAAAD,sBAAA,KAAG,KAAA,CAAA,GAAA,EAAE,GAAAA,sBAAA;IAAoBE,kBAAkB,GAAAV,kBAAA,CAA7BW,SAAS,CAAA;EAOhD,IAAMC,oBAAoB,GAAG,SAAvBA,oBAAoBA,CAAIC,aAAa,EAAEC,QAAQ,EAAK;AACxDD,IAAAA,aAAa,CAAC,UAAU,EAAEC,QAAQ,CAACjD,QAAQ,CAAC,CAAA;IAC5CgD,aAAa,CACX,gBAAgB,EAChBjC,oBAAoB,CAACkC,QAAQ,CAAChD,cAAc,CAC9C,CAAC,CAAA;GACF,CAAA;AAED,EAAA,IAAMiD,YAAY,GAAG,SAAfA,YAAYA,CAAGC,UAAU,EAAI;IACjC,IAAMC,gCAAgC,GAAGC,MAAM,CAC7C,gBAAgB,EAChBC,wBAAwB,EACxBH,UACF,CAAC,CAAA;IAEDtB,QAAQ,CAACuB,gCAAgC,CAAC,CAAA;GAC3C,CAAA;AAED,EAAA,IAAIG,OAAO,CAACX,SAAS,CAAC,EAAE;IACtB,oBAAOvB,GAAA,CAACmC,UAAU,EAAA;AAAOzB,MAAAA,mBAAmB,EAAnBA,mBAAmB;AAAI0B,MAAAA,IAAI,EAAC,KAAA;AAAK,KAAE,CAAC,CAAA;AAC/D,GAAA;EAEA,oBACEC,IAAA,CAAAC,QAAA,EAAA;AAAApC,IAAAA,QAAA,EACEF,cAAAA,GAAA,CAACC,IAAI,CAACsC,MAAM,EAAA;MAAArC,QAAA,eACVF,GAAA,CAACwC,UAAU,EAAA;AAACC,QAAAA,KAAK,EAAC,IAAI;AAACC,QAAAA,MAAM,EAAC,UAAU;QAAAxC,QAAA,EACrCf,CAAC,CAAC,oCAAoC,CAAA;OAC7B,CAAA;AAAC,KACF,CAAC,eACda,GAAA,CAAC2C,WAAW,EAAA;AACVC,MAAAA,WAAW,EAAE;AACXC,QAAAA,aAAa,EAAEnE,+BAA+B;AAC9CoE,QAAAA,gBAAgB,EAAEhE,kCAAkC;AACpD0B,QAAAA,QAAQ,EAAEqB,YAAAA;OACV;MAAA3B,QAAA,EAED,SAAAA,QAAAA,CAAA6C,KAAA,EAAA;AAAA,QAAA,IAAGpB,aAAa,GAAAoB,KAAA,CAAbpB,aAAa,CAAA;QAAA,oBACfU,IAAA,CAAAC,QAAA,EAAA;AAAApC,UAAAA,QAAA,EACEF,cAAAA,GAAA,CAACC,IAAI,CAAC+C,IAAI,EAAA;AAAA9C,YAAAA,QAAA,eACRmC,IAAA,CAAA,KAAA,EAAA;AAAKY,cAAAA,SAAS,EAAC,kBAAkB;cAAA/C,QAAA,EAAA,cAC/BF,GAAA,CAACkD,MAAM,EAAA;AACLC,gBAAAA,QAAQ,EAAExC,aAAc;AACxBc,gBAAAA,SAAS,EAAED,kBAAmB;AAC9B4B,gBAAAA,KAAK,EAAEjE,CAAC,CAAC,qCAAqC,CAAE;gBAChDkE,OAAO,EAAEC,UAAU,CACjB;AAAEC,kBAAAA,IAAI,EAAE,OAAO;AAAEC,kBAAAA,EAAE,EAAE,OAAA;iBAAS,EAC9BjC,SACF,CAAE;AACFkC,gBAAAA,WAAW,EAAEtE,CAAC,CACZ,iDACF,CAAE;gBACFuE,QAAQ,EAAE,SAAAA,QAAAA,CAAA9B,QAAQ,EAAA;AAAA,kBAAA,OAChBF,oBAAoB,CAACC,aAAa,EAAEC,QAAQ,CAAC,CAAA;AAAA,iBAAA;AAC9C,eACF,CAAC,eACF5B,GAAA,CAAC2D,KAAK,EAAA;gBACJzE,QAAQ,EAAA,IAAA;AACRkE,gBAAAA,KAAK,EAAEjE,CAAC,CAAC,mCAAmC,CAAE;AAC9CoE,gBAAAA,IAAI,EAAC,UAAU;AACfE,gBAAAA,WAAW,EAAEG,UAAAA;AAAW,eACzB,CAAC,eACF5D,GAAA,CAAC6D,aAAa,EAAA;AACZT,gBAAAA,KAAK,EAAEjE,CAAC,CAAC,yCAAyC,CAAE;AACpDoE,gBAAAA,IAAI,EAAC,gBAAA;AAAgB,eACtB,CAAC,CAAA;aACC,CAAA;AAAC,WACG,CAAC,eACZvD,GAAA,CAACC,IAAI,CAAC6D,MAAM,EAAA;YAAA5D,QAAA,eACVF,GAAA,CAAC+D,WAAW,EAAA;AACJtD,cAAAA,YAAY,EAAZA,YAAY;AAClBuD,cAAAA,iBAAiB,EAAE;AACjBC,gBAAAA,OAAO,EAAElE,OAAO;AAChB,gBAAA,SAAS,EAAE,4BAAA;eACX;AACFmE,cAAAA,iBAAiB,EAAE;AACjBd,gBAAAA,KAAK,EAAEjE,CAAC,CAAC,oCAAoC,CAAC;AAC9C,gBAAA,SAAS,EAAE,0BAAA;AACb,eAAA;aACD,CAAA;AAAC,WACS,CAAC,CAAA;AAAA,SACd,CAAC,CAAA;AAAA,OAAA;AACJ,KACU,CAAC,CAAA;AAAA,GACd,CAAC,CAAA;AAEP,CAAC;;;;"}
1
+ {"version":3,"file":"SendToApiPane.js","sources":["../app/javascript/src/components/Api/SendToApiPane/constants.js","../app/javascript/src/components/Api/SendToApiPane/utils.js","../app/javascript/src/components/Api/SendToApiPane/index.jsx"],"sourcesContent":["import { t } from \"i18next\";\nimport * as yup from \"yup\";\n\nimport { ADDITIONAL_DATA_INITIAL_VALUE, VALID_URL_REGEX } from \"../constants\";\n\nexport const SEND_TO_API_FORM_INITIAL_VALUES = {\n endpoint: \"\",\n additionalData: [ADDITIONAL_DATA_INITIAL_VALUE],\n shouldSaveAsTemplate: false,\n templateName: \"\",\n};\n\nexport const SEND_TO_API_FORM_VALIDATION_SCHEMA = yup.object({\n endpoint: yup\n .string()\n .required(t(\"neetoMessageTemplate.api.validation.endpointPresence\"))\n .matches(\n VALID_URL_REGEX,\n t(\"neetoMessageTemplate.api.validation.validEndpoint\")\n ),\n additionalData: yup\n .array()\n .of(yup.object({ key: yup.string(), value: yup.string() })),\n templateName: yup.string().when(\"shouldSaveAsTemplate\", {\n is: true,\n then: yup.string().required(\n t(\"neetoMessageTemplate.template.validation.requiredEntity\", {\n entity: t(\"neetoMessageTemplate.template.templateName\"),\n })\n ),\n }),\n});\n","import { isPresent } from \"neetocist\";\n\nimport { ADDITIONAL_DATA_INITIAL_VALUE } from \"../constants\";\n\nexport const formatAdditionalData = additionalData =>\n isPresent(additionalData) ? additionalData : [ADDITIONAL_DATA_INITIAL_VALUE];\n","import { findBy, isPresent, renameKeys } from \"neetocist\";\nimport { Pane, Select, Spinner, Typography } from \"neetoui\";\nimport { ActionBlock, Input, Form as NeetoUIForm } from \"neetoui/formik\";\nimport { equals, modify } from \"ramda\";\nimport { useTranslation } from \"react-i18next\";\n\nimport { SAMPLE_URL } from \"components/Api/ApiTemplates/constants\";\nimport { API_TEMPLATE_TYPE } from \"components/Api/constants\";\nimport { rejectEmptyKeyValuePairs } from \"components/Api/utils\";\nimport KeyValuePairs from \"components/commons/KeyValuePairs\";\nimport SaveAsTemplate from \"components/commons/SaveAsTemplate\";\nimport { areValuesEqual } from \"components/utils\";\nimport { useFetchTemplates } from \"hooks/reactQuery/useTemplatesApi\";\n\nimport {\n SEND_TO_API_FORM_INITIAL_VALUES,\n SEND_TO_API_FORM_VALIDATION_SCHEMA,\n} from \"./constants\";\nimport { formatAdditionalData } from \"./utils\";\n\nconst SendToApiPane = props => {\n const { isOpen, onClose } = props;\n\n return (\n <Pane {...{ isOpen, onClose }}>\n {paneProps => <SendToApiForm {...{ ...props, paneProps }} />}\n </Pane>\n );\n};\n\nconst SendToApiForm = ({\n ownerId,\n onClose,\n onSubmit,\n isSubmitting,\n paneProps: { setFocusField },\n}) => {\n const { t } = useTranslation();\n\n const { data: { templates = [] } = {}, isLoading: isLoadingTemplates } =\n useFetchTemplates({\n status: \"active\",\n templateType: API_TEMPLATE_TYPE,\n ownerId,\n });\n\n const handleTemplateChange = (setValues, values, option) => {\n if (!option) return;\n\n const template = findBy({ id: option.value }, templates);\n\n setValues({\n ...values,\n ...modify(\"additionalData\", formatAdditionalData, template),\n });\n };\n\n const handleSubmit = formValues => {\n const additionalDataModifiedFormValues = modify(\n \"additionalData\",\n rejectEmptyKeyValuePairs,\n formValues\n );\n\n onSubmit(additionalDataModifiedFormValues);\n };\n\n const shouldShowSaveAsTemplate = ({ id, endpoint, additionalData } = {}) => {\n const template = findBy({ id }, templates);\n const hasContent =\n isPresent(endpoint) ||\n isPresent(rejectEmptyKeyValuePairs(additionalData));\n\n const isContentDifferentFromTemplate = !(\n areValuesEqual(template?.endpoint, endpoint) &&\n equals(template?.additionalData, additionalData)\n );\n\n return hasContent && isContentDifferentFromTemplate;\n };\n\n const isTemplateSelectionEnabled = isPresent(templates);\n\n if (isLoadingTemplates) {\n return (\n <div className=\"flex h-full w-full items-center justify-center\">\n <Spinner />\n </div>\n );\n }\n\n return (\n <>\n <Pane.Header>\n <Typography style=\"h2\" weight=\"semibold\">\n {t(\"neetoMessageTemplate.api.sendToApi\")}\n </Typography>\n </Pane.Header>\n <NeetoUIForm\n formikProps={{\n initialValues: SEND_TO_API_FORM_INITIAL_VALUES,\n validationSchema: SEND_TO_API_FORM_VALIDATION_SCHEMA,\n onSubmit: handleSubmit,\n }}\n >\n {({ values, setValues }) => (\n <>\n <Pane.Body>\n <div className=\"w-full space-y-5\">\n {isTemplateSelectionEnabled && (\n <Select\n innerRef={setFocusField}\n isLoading={isLoadingTemplates}\n label={t(\"neetoMessageTemplate.template.title\")}\n options={renameKeys(\n { name: \"label\", id: \"value\" },\n templates\n )}\n placeholder={t(\n \"neetoMessageTemplate.sendMessage.selectTemplate\"\n )}\n onChange={template =>\n handleTemplateChange(setValues, values, template)\n }\n />\n )}\n <Input\n required\n label={t(\"neetoMessageTemplate.api.endpoint\")}\n name=\"endpoint\"\n placeholder={SAMPLE_URL}\n ref={isTemplateSelectionEnabled ? null : setFocusField}\n />\n <KeyValuePairs\n label={t(\"neetoMessageTemplate.api.additionalData\")}\n name=\"additionalData\"\n />\n {shouldShowSaveAsTemplate(values) && <SaveAsTemplate />}\n </div>\n </Pane.Body>\n <Pane.Footer>\n <ActionBlock\n {...{ isSubmitting }}\n cancelButtonProps={{\n onClick: onClose,\n \"data-cy\": \"api-template-cancel-button\",\n }}\n submitButtonProps={{\n label: t(\"neetoMessageTemplate.template.send\"),\n \"data-cy\": \"api-template-send-button\",\n }}\n />\n </Pane.Footer>\n </>\n )}\n </NeetoUIForm>\n </>\n );\n};\n\nexport default SendToApiPane;\n"],"names":["SEND_TO_API_FORM_INITIAL_VALUES","endpoint","additionalData","ADDITIONAL_DATA_INITIAL_VALUE","shouldSaveAsTemplate","templateName","SEND_TO_API_FORM_VALIDATION_SCHEMA","yup","object","string","required","t","matches","VALID_URL_REGEX","array","of","key","value","when","is","then","entity","formatAdditionalData","isPresent","SendToApiPane","props","isOpen","onClose","_jsx","Pane","children","paneProps","SendToApiForm","_objectSpread","_ref","ownerId","onSubmit","isSubmitting","setFocusField","_useTranslation","useTranslation","_useFetchTemplates","useFetchTemplates","status","templateType","API_TEMPLATE_TYPE","_useFetchTemplates$da","data","_useFetchTemplates$da2","_useFetchTemplates$da3","templates","isLoadingTemplates","isLoading","handleTemplateChange","setValues","values","option","template","findBy","id","modify","handleSubmit","formValues","additionalDataModifiedFormValues","rejectEmptyKeyValuePairs","shouldShowSaveAsTemplate","_ref2","arguments","length","undefined","hasContent","isContentDifferentFromTemplate","areValuesEqual","equals","isTemplateSelectionEnabled","className","Spinner","_jsxs","_Fragment","Header","Typography","style","weight","NeetoUIForm","formikProps","initialValues","validationSchema","_ref3","Body","Select","innerRef","label","options","renameKeys","name","placeholder","onChange","Input","SAMPLE_URL","ref","KeyValuePairs","SaveAsTemplate","Footer","ActionBlock","cancelButtonProps","onClick","submitButtonProps"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAKO,IAAMA,+BAA+B,GAAG;AAC7CC,EAAAA,QAAQ,EAAE,EAAE;EACZC,cAAc,EAAE,CAACC,6BAA6B,CAAC;AAC/CC,EAAAA,oBAAoB,EAAE,KAAK;AAC3BC,EAAAA,YAAY,EAAE,EAAA;AAChB,CAAC,CAAA;AAEM,IAAMC,kCAAkC,GAAGC,GAAG,CAACC,MAAM,CAAC;EAC3DP,QAAQ,EAAEM,GAAG,CACVE,MAAM,EAAE,CACRC,QAAQ,CAACC,CAAC,CAAC,sDAAsD,CAAC,CAAC,CACnEC,OAAO,CACNC,eAAe,EACfF,CAAC,CAAC,mDAAmD,CACvD,CAAC;AACHT,EAAAA,cAAc,EAAEK,GAAG,CAChBO,KAAK,EAAE,CACPC,EAAE,CAACR,GAAG,CAACC,MAAM,CAAC;AAAEQ,IAAAA,GAAG,EAAET,GAAG,CAACE,MAAM,EAAE;AAAEQ,IAAAA,KAAK,EAAEV,GAAG,CAACE,MAAM,EAAC;AAAE,GAAC,CAAC,CAAC;EAC7DJ,YAAY,EAAEE,GAAG,CAACE,MAAM,EAAE,CAACS,IAAI,CAAC,sBAAsB,EAAE;AACtDC,IAAAA,EAAE,EAAE,IAAI;AACRC,IAAAA,IAAI,EAAEb,GAAG,CAACE,MAAM,EAAE,CAACC,QAAQ,CACzBC,CAAC,CAAC,yDAAyD,EAAE;MAC3DU,MAAM,EAAEV,CAAC,CAAC,4CAA4C,CAAA;AACxD,KAAC,CACH,CAAA;GACD,CAAA;AACH,CAAC,CAAC;;AC3BK,IAAMW,oBAAoB,GAAG,SAAvBA,oBAAoBA,CAAGpB,cAAc,EAAA;EAAA,OAChDqB,SAAS,CAACrB,cAAc,CAAC,GAAGA,cAAc,GAAG,CAACC,6BAA6B,CAAC,CAAA;AAAA,CAAA;;;;ACe9E,IAAMqB,aAAa,GAAG,SAAhBA,aAAaA,CAAGC,KAAK,EAAI;AAC7B,EAAA,IAAQC,MAAM,GAAcD,KAAK,CAAzBC,MAAM;IAAEC,OAAO,GAAKF,KAAK,CAAjBE,OAAO,CAAA;EAEvB,oBACEC,GAAA,CAACC,IAAI,EAAA;AAAOH,IAAAA,MAAM,EAANA,MAAM;AAAEC,IAAAA,OAAO,EAAPA,OAAO;IAAAG,QAAA,EACxB,SAAAA,QAAAA,CAAAC,SAAS,EAAA;MAAA,oBAAIH,GAAA,CAACI,aAAa,EAAAC,aAAA,KAAAA,aAAA,CAAAA,aAAA,CAAA,EAAA,EAAUR,KAAK,CAAA,EAAA,EAAA,EAAA;AAAEM,QAAAA,SAAS,EAATA,SAAAA;AAAS,OAAA,CAAA,CAAK,CAAC,CAAA;AAAA,KAAA;AAAA,GACxD,CAAC,CAAA;AAEX,EAAC;AAED,IAAMC,aAAa,GAAG,SAAhBA,aAAaA,CAAAE,IAAA,EAMb;AAAA,EAAA,IALJC,OAAO,GAAAD,IAAA,CAAPC,OAAO;IACPR,OAAO,GAAAO,IAAA,CAAPP,OAAO;IACPS,QAAQ,GAAAF,IAAA,CAARE,QAAQ;IACRC,YAAY,GAAAH,IAAA,CAAZG,YAAY;AACCC,IAAAA,aAAa,GAAAJ,IAAA,CAA1BH,SAAS,CAAIO,aAAa,CAAA;AAE1B,EAAA,IAAAC,eAAA,GAAcC,cAAc,EAAE;IAAtB7B,CAAC,GAAA4B,eAAA,CAAD5B,CAAC,CAAA;EAET,IAAA8B,kBAAA,GACEC,iBAAiB,CAAC;AAChBC,MAAAA,MAAM,EAAE,QAAQ;AAChBC,MAAAA,YAAY,EAAEC,iBAAiB;AAC/BV,MAAAA,OAAO,EAAPA,OAAAA;AACF,KAAC,CAAC;IAAAW,qBAAA,GAAAL,kBAAA,CALIM,IAAI;AAAAC,IAAAA,sBAAA,GAAAF,qBAAA,KAAA,KAAA,CAAA,GAAuB,EAAE,GAAAA,qBAAA;IAAAG,sBAAA,GAAAD,sBAAA,CAArBE,SAAS;AAATA,IAAAA,SAAS,GAAAD,sBAAA,KAAG,KAAA,CAAA,GAAA,EAAE,GAAAA,sBAAA;IAAoBE,kBAAkB,GAAAV,kBAAA,CAA7BW,SAAS,CAAA;EAOhD,IAAMC,oBAAoB,GAAG,SAAvBA,oBAAoBA,CAAIC,SAAS,EAAEC,MAAM,EAAEC,MAAM,EAAK;IAC1D,IAAI,CAACA,MAAM,EAAE,OAAA;IAEb,IAAMC,QAAQ,GAAGC,MAAM,CAAC;MAAEC,EAAE,EAAEH,MAAM,CAACvC,KAAAA;KAAO,EAAEiC,SAAS,CAAC,CAAA;AAExDI,IAAAA,SAAS,CAAArB,aAAA,CAAAA,aAAA,CAAA,EAAA,EACJsB,MAAM,CACNK,EAAAA,MAAM,CAAC,gBAAgB,EAAEtC,oBAAoB,EAAEmC,QAAQ,CAAC,CAC5D,CAAC,CAAA;GACH,CAAA;AAED,EAAA,IAAMI,YAAY,GAAG,SAAfA,YAAYA,CAAGC,UAAU,EAAI;IACjC,IAAMC,gCAAgC,GAAGH,MAAM,CAC7C,gBAAgB,EAChBI,wBAAwB,EACxBF,UACF,CAAC,CAAA;IAED1B,QAAQ,CAAC2B,gCAAgC,CAAC,CAAA;GAC3C,CAAA;AAED,EAAA,IAAME,wBAAwB,GAAG,SAA3BA,wBAAwBA,GAA8C;AAAA,IAAA,IAAAC,KAAA,GAAAC,SAAA,CAAAC,MAAA,GAAA,CAAA,IAAAD,SAAA,CAAA,CAAA,CAAA,KAAAE,SAAA,GAAAF,SAAA,CAAA,CAAA,CAAA,GAAP,EAAE;MAAnCR,EAAE,GAAAO,KAAA,CAAFP,EAAE;MAAE1D,QAAQ,GAAAiE,KAAA,CAARjE,QAAQ;MAAEC,cAAc,GAAAgE,KAAA,CAAdhE,cAAc,CAAA;IAC9D,IAAMuD,QAAQ,GAAGC,MAAM,CAAC;AAAEC,MAAAA,EAAE,EAAFA,EAAAA;KAAI,EAAET,SAAS,CAAC,CAAA;AAC1C,IAAA,IAAMoB,UAAU,GACd/C,SAAS,CAACtB,QAAQ,CAAC,IACnBsB,SAAS,CAACyC,wBAAwB,CAAC9D,cAAc,CAAC,CAAC,CAAA;AAErD,IAAA,IAAMqE,8BAA8B,GAAG,EACrCC,cAAc,CAACf,QAAQ,KAARA,IAAAA,IAAAA,QAAQ,KAARA,KAAAA,CAAAA,GAAAA,KAAAA,CAAAA,GAAAA,QAAQ,CAAExD,QAAQ,EAAEA,QAAQ,CAAC,IAC5CwE,MAAM,CAAChB,QAAQ,KAAA,IAAA,IAARA,QAAQ,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAARA,QAAQ,CAAEvD,cAAc,EAAEA,cAAc,CAAC,CACjD,CAAA;IAED,OAAOoE,UAAU,IAAIC,8BAA8B,CAAA;GACpD,CAAA;AAED,EAAA,IAAMG,0BAA0B,GAAGnD,SAAS,CAAC2B,SAAS,CAAC,CAAA;AAEvD,EAAA,IAAIC,kBAAkB,EAAE;AACtB,IAAA,oBACEvB,GAAA,CAAA,KAAA,EAAA;AAAK+C,MAAAA,SAAS,EAAC,gDAAgD;AAAA7C,MAAAA,QAAA,eAC7DF,GAAA,CAACgD,OAAO,EAAE,EAAA,CAAA;AAAC,KACR,CAAC,CAAA;AAEV,GAAA;EAEA,oBACEC,IAAA,CAAAC,QAAA,EAAA;AAAAhD,IAAAA,QAAA,EACEF,cAAAA,GAAA,CAACC,IAAI,CAACkD,MAAM,EAAA;MAAAjD,QAAA,eACVF,GAAA,CAACoD,UAAU,EAAA;AAACC,QAAAA,KAAK,EAAC,IAAI;AAACC,QAAAA,MAAM,EAAC,UAAU;QAAApD,QAAA,EACrCnB,CAAC,CAAC,oCAAoC,CAAA;OAC7B,CAAA;AAAC,KACF,CAAC,eACdiB,GAAA,CAACuD,WAAW,EAAA;AACVC,MAAAA,WAAW,EAAE;AACXC,QAAAA,aAAa,EAAErF,+BAA+B;AAC9CsF,QAAAA,gBAAgB,EAAEhF,kCAAkC;AACpD8B,QAAAA,QAAQ,EAAEyB,YAAAA;OACV;MAAA/B,QAAA,EAED,SAAAA,QAAAA,CAAAyD,KAAA,EAAA;AAAA,QAAA,IAAGhC,MAAM,GAAAgC,KAAA,CAANhC,MAAM;UAAED,SAAS,GAAAiC,KAAA,CAATjC,SAAS,CAAA;QAAA,oBACnBuB,IAAA,CAAAC,QAAA,EAAA;AAAAhD,UAAAA,QAAA,EACEF,cAAAA,GAAA,CAACC,IAAI,CAAC2D,IAAI,EAAA;AAAA1D,YAAAA,QAAA,eACR+C,IAAA,CAAA,KAAA,EAAA;AAAKF,cAAAA,SAAS,EAAC,kBAAkB;AAAA7C,cAAAA,QAAA,EAC9B4C,CAAAA,0BAA0B,iBACzB9C,GAAA,CAAC6D,MAAM,EAAA;AACLC,gBAAAA,QAAQ,EAAEpD,aAAc;AACxBc,gBAAAA,SAAS,EAAED,kBAAmB;AAC9BwC,gBAAAA,KAAK,EAAEhF,CAAC,CAAC,qCAAqC,CAAE;gBAChDiF,OAAO,EAAEC,UAAU,CACjB;AAAEC,kBAAAA,IAAI,EAAE,OAAO;AAAEnC,kBAAAA,EAAE,EAAE,OAAA;iBAAS,EAC9BT,SACF,CAAE;AACF6C,gBAAAA,WAAW,EAAEpF,CAAC,CACZ,iDACF,CAAE;AACFqF,gBAAAA,QAAQ,EAAE,SAAVA,QAAQA,CAAEvC,QAAQ,EAAA;AAAA,kBAAA,OAChBJ,oBAAoB,CAACC,SAAS,EAAEC,MAAM,EAAEE,QAAQ,CAAC,CAAA;AAAA,iBAAA;AAClD,eACF,CACF,eACD7B,GAAA,CAACqE,KAAK,EAAA;gBACJvF,QAAQ,EAAA,IAAA;AACRiF,gBAAAA,KAAK,EAAEhF,CAAC,CAAC,mCAAmC,CAAE;AAC9CmF,gBAAAA,IAAI,EAAC,UAAU;AACfC,gBAAAA,WAAW,EAAEG,UAAW;AACxBC,gBAAAA,GAAG,EAAEzB,0BAA0B,GAAG,IAAI,GAAGpC,aAAAA;AAAc,eACxD,CAAC,eACFV,GAAA,CAACwE,aAAa,EAAA;AACZT,gBAAAA,KAAK,EAAEhF,CAAC,CAAC,yCAAyC,CAAE;AACpDmF,gBAAAA,IAAI,EAAC,gBAAA;eACN,CAAC,EACD7B,wBAAwB,CAACV,MAAM,CAAC,iBAAI3B,GAAA,CAACyE,cAAc,EAAA,EAAE,CAAC,CAAA;aACpD,CAAA;AAAC,WACG,CAAC,eACZzE,GAAA,CAACC,IAAI,CAACyE,MAAM,EAAA;YAAAxE,QAAA,eACVF,GAAA,CAAC2E,WAAW,EAAA;AACJlE,cAAAA,YAAY,EAAZA,YAAY;AAClBmE,cAAAA,iBAAiB,EAAE;AACjBC,gBAAAA,OAAO,EAAE9E,OAAO;AAChB,gBAAA,SAAS,EAAE,4BAAA;eACX;AACF+E,cAAAA,iBAAiB,EAAE;AACjBf,gBAAAA,KAAK,EAAEhF,CAAC,CAAC,oCAAoC,CAAC;AAC9C,gBAAA,SAAS,EAAE,0BAAA;AACb,eAAA;aACD,CAAA;AAAC,WACS,CAAC,CAAA;AAAA,SACd,CAAC,CAAA;AAAA,OAAA;AACJ,KACU,CAAC,CAAA;AAAA,GACd,CAAC,CAAA;AAEP,CAAC;;;;"}