@bigbinary/neeto-rules-frontend 2.3.1 → 2.4.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 (38) hide show
  1. package/README.md +342 -151
  2. package/app/javascript/src/translations/en.json +15 -2
  3. package/dist/CannedResponsesPane.js +391 -0
  4. package/dist/CannedResponsesPane.js.map +1 -0
  5. package/dist/NeetoRules.js +106 -9161
  6. package/dist/NeetoRules.js.map +1 -1
  7. package/dist/NeetoRulesForm.js +86 -559
  8. package/dist/NeetoRulesForm.js.map +1 -1
  9. package/dist/RulePreview.js +31 -7
  10. package/dist/RulePreview.js.map +1 -1
  11. package/dist/cjs/CannedResponsesPane.js +408 -0
  12. package/dist/cjs/CannedResponsesPane.js.map +1 -0
  13. package/dist/cjs/NeetoRules.js +154 -9225
  14. package/dist/cjs/NeetoRules.js.map +1 -1
  15. package/dist/cjs/NeetoRulesForm.js +336 -800
  16. package/dist/cjs/NeetoRulesForm.js.map +1 -1
  17. package/dist/cjs/RulePreview.js +42 -15
  18. package/dist/cjs/RulePreview.js.map +1 -1
  19. package/dist/cjs/index.js +26 -15
  20. package/dist/cjs/index.js.map +1 -1
  21. package/dist/index.js +25 -15
  22. package/dist/index.js.map +1 -1
  23. package/dist/useUtilityStore-e4b36ba2.js.map +1 -1
  24. package/dist/useUtilityStore-ee4f96f8.js.map +1 -1
  25. package/dist/utils-866e8e3b.js +23 -0
  26. package/dist/utils-866e8e3b.js.map +1 -0
  27. package/dist/utils-cd8f199f.js +26 -0
  28. package/dist/utils-cd8f199f.js.map +1 -0
  29. package/package.json +104 -84
  30. package/types.d.ts +39 -0
  31. package/dist/toConsumableArray-71e2b184.js +0 -58
  32. package/dist/toConsumableArray-71e2b184.js.map +0 -1
  33. package/dist/toConsumableArray-ee25f277.js +0 -53
  34. package/dist/toConsumableArray-ee25f277.js.map +0 -1
  35. package/dist/utils-249a1c9a.js +0 -119
  36. package/dist/utils-249a1c9a.js.map +0 -1
  37. package/dist/utils-ca50bfc9.js +0 -129
  38. package/dist/utils-ca50bfc9.js.map +0 -1
@@ -37,7 +37,11 @@
37
37
  "phoneNumbers": "Phone numbers",
38
38
  "data": "Data",
39
39
  "reorder": "Reorder",
40
- "at": "at"
40
+ "at": "at",
41
+ "apply": "Apply"
42
+ },
43
+ "cannedResponses": {
44
+ "title": "Canned responses"
41
45
  },
42
46
  "form": {
43
47
  "noEvents": "A rule without events will run hourly.",
@@ -147,7 +151,16 @@
147
151
  "key": "Key",
148
152
  "value": "Value",
149
153
  "addKeyValuePair": "Add new key value pair",
150
- "additionalData": "Additional data"
154
+ "additionalData": "Additional data",
155
+ "remove_tags": "Remove tags",
156
+ "add_tags": "Add tags",
157
+ "change_status": "Change status",
158
+ "add_note": "Add note",
159
+ "add_reply": "Add reply",
160
+ "assign_group": "Assign {{taxonomies.group.singular}}",
161
+ "assign_agent": "Assign {{taxonomies.agent.singular}}",
162
+ "change_priority": "Change priority",
163
+ "selectCannedResponse": "Select a canned response"
151
164
  },
152
165
  "placeholders": {
153
166
  "if": "If",
@@ -0,0 +1,391 @@
1
+ import _asyncToGenerator from '@babel/runtime/helpers/asyncToGenerator';
2
+ import _slicedToArray from '@babel/runtime/helpers/slicedToArray';
3
+ import _regeneratorRuntime from '@babel/runtime/regenerator';
4
+ import { createElement, useState, useRef } from 'react';
5
+ import { Formik, Form } from 'formik';
6
+ import { findBy, toLabelAndValue } from '@bigbinary/neeto-cist';
7
+ import { PLURAL } from '@bigbinary/neeto-commons-frontend/constants';
8
+ import Pane from '@bigbinary/neetoui/Pane';
9
+ import Spinner from '@bigbinary/neetoui/Spinner';
10
+ import Typography from '@bigbinary/neetoui/Typography';
11
+ import ActionBlock from '@bigbinary/neetoui/formik/ActionBlock';
12
+ import Select from '@bigbinary/neetoui/formik/Select';
13
+ import { join, not, values } from 'ramda';
14
+ import { useTranslation } from 'react-i18next';
15
+ import _defineProperty from '@babel/runtime/helpers/defineProperty';
16
+ import _toConsumableArray from '@babel/runtime/helpers/toConsumableArray';
17
+ import { t } from 'i18next';
18
+ import { sanitize } from 'dompurify';
19
+ import Input from '@bigbinary/neetoui/Input';
20
+ import Label from '@bigbinary/neetoui/Label';
21
+ import { jsxs, jsx, Fragment } from 'react/jsx-runtime';
22
+
23
+ var Action = function Action(_ref) {
24
+ var id = _ref.id,
25
+ label = _ref.label,
26
+ value = _ref.value,
27
+ _ref$richText = _ref.richText,
28
+ richText = _ref$richText === void 0 ? false : _ref$richText;
29
+ if (richText) {
30
+ return /*#__PURE__*/jsxs("div", {
31
+ className: "mb-4 space-y-2",
32
+ children: [/*#__PURE__*/jsx(Label, {
33
+ children: label
34
+ }), /*#__PURE__*/jsx("div", {
35
+ className: "border-radius trix-content neeto-ui-bg-gray-100 cursor-not-allowed whitespace-pre-wrap border p-3",
36
+ dangerouslySetInnerHTML: {
37
+ __html: sanitize(value.replace(/\n/g, ""))
38
+ }
39
+ })]
40
+ }, id);
41
+ }
42
+ return /*#__PURE__*/createElement(Input, {
43
+ label: label,
44
+ disabled: true,
45
+ className: "mb-4",
46
+ key: id,
47
+ value: value.replace(/_/g, " ")
48
+ });
49
+ };
50
+
51
+ function ownKeys$2(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
52
+ function _objectSpread$2(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys$2(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys$2(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
53
+ var CANNED_RESPONSE_INPUT_ACTION_NAMES = ["assign_agent", "assign_group", "remove_tags", "add_tags", "change_priority", "change_status"];
54
+ var CANNED_RESPONSE_RICH_TEXT_ACTION_NAME = ["add_note", "add_reply"];
55
+ var CANNED_RESPONSE_ACTION_LABELS = [].concat(CANNED_RESPONSE_INPUT_ACTION_NAMES, CANNED_RESPONSE_RICH_TEXT_ACTION_NAME).reduce(function (labelObject, actionName) {
56
+ return _objectSpread$2(_objectSpread$2({}, labelObject), {}, _defineProperty({}, actionName, "neetoRules.labels.".concat(actionName)));
57
+ }, {});
58
+ var ACTION_OPTIONS = {
59
+ addNote: "add_note",
60
+ addCommentOrReply: "add_reply",
61
+ addTags: "add_tags",
62
+ removeTags: "remove_tags",
63
+ changePriority: "change_priority",
64
+ changeStatus: "change_status",
65
+ assignAgent: "assign_agent",
66
+ assignGroup: "assign_group",
67
+ assignTicketFieldValue: "assign_field_value"
68
+ };
69
+ var ACTION_TYPES_MAP = {
70
+ single_option: "dropdown",
71
+ multi_option: "multiSelect",
72
+ checkbox: "dropdown",
73
+ integer: "number"
74
+ };
75
+ var DEFAULT_CHECKBOX_OPTIONS = [{
76
+ label: t("neetoRules.labels.checked"),
77
+ value: true
78
+ }, {
79
+ label: t("neetoRules.labels.unchecked"),
80
+ value: false
81
+ }];
82
+
83
+ function ownKeys$1(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
84
+ function _objectSpread$1(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys$1(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys$1(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
85
+ var renderActionValue = function renderActionValue(_ref) {
86
+ var actionType = _ref.actionType,
87
+ displayValue = _ref.displayValue;
88
+ if (actionType === "multiSelect") {
89
+ return join(", ", displayValue);
90
+ }
91
+ return displayValue;
92
+ };
93
+ var renderDefaultAction = function renderDefaultAction(_ref2) {
94
+ var id = _ref2.id,
95
+ name = _ref2.name,
96
+ displayValue = _ref2.displayValue,
97
+ trixBody = _ref2.trixBody;
98
+ var label = t(CANNED_RESPONSE_ACTION_LABELS[name]);
99
+ if (CANNED_RESPONSE_RICH_TEXT_ACTION_NAME.includes(name)) {
100
+ return /*#__PURE__*/jsx(Action, {
101
+ id: id,
102
+ label: label,
103
+ richText: true,
104
+ value: trixBody
105
+ });
106
+ }
107
+ return /*#__PURE__*/jsx(Action, {
108
+ id: id,
109
+ label: label,
110
+ value: displayValue
111
+ });
112
+ };
113
+ var renderCustomAction = function renderCustomAction(_ref3) {
114
+ var id = _ref3.id,
115
+ actionableId = _ref3.actionableId,
116
+ displayValue = _ref3.displayValue,
117
+ actionOptions = _ref3.actionOptions;
118
+ var actionName = "ticket_field_".concat(actionableId);
119
+ var actionOption = findBy({
120
+ value: actionName
121
+ }, actionOptions);
122
+ var label = actionOption === null || actionOption === void 0 ? void 0 : actionOption.label;
123
+ var actionType = actionOption === null || actionOption === void 0 ? void 0 : actionOption.type;
124
+ var actionValue = renderActionValue({
125
+ actionType: actionType,
126
+ displayValue: displayValue
127
+ });
128
+ var isRichText = actionType === "textarea";
129
+ return /*#__PURE__*/jsx(Action, {
130
+ id: id,
131
+ label: label,
132
+ richText: isRichText,
133
+ value: actionValue
134
+ });
135
+ };
136
+ var getActionDropdown = function getActionDropdown(_ref4) {
137
+ var status = _ref4.status,
138
+ teams = _ref4.teams,
139
+ members = _ref4.members,
140
+ tags = _ref4.tags;
141
+ return {
142
+ change_status: status || [],
143
+ assign_group: teams || [],
144
+ assign_agent: members || [],
145
+ add_tags: tags || [],
146
+ remove_tags: tags || []
147
+ };
148
+ };
149
+ var getActionType = function getActionType(kind) {
150
+ return ACTION_TYPES_MAP[kind] || kind;
151
+ };
152
+ var getDropdownOptions = function getDropdownOptions(kind, optionsAttribute) {
153
+ if (["single_option", "multi_option"].includes(kind)) {
154
+ return optionsAttribute.map(function (_ref5) {
155
+ var id = _ref5.id,
156
+ label = _ref5.label;
157
+ return {
158
+ label: label,
159
+ value: id
160
+ };
161
+ });
162
+ } else if (kind === "checkbox") {
163
+ return _toConsumableArray(DEFAULT_CHECKBOX_OPTIONS);
164
+ }
165
+ return [];
166
+ };
167
+ var renderAction = function renderAction(_ref6) {
168
+ var name = _ref6.name,
169
+ id = _ref6.id,
170
+ actionableId = _ref6.actionableId,
171
+ displayValue = _ref6.displayValue,
172
+ _ref6$actionOptions = _ref6.actionOptions,
173
+ actionOptions = _ref6$actionOptions === void 0 ? [] : _ref6$actionOptions,
174
+ _ref6$trixBody = _ref6.trixBody,
175
+ trixBody = _ref6$trixBody === void 0 ? "" : _ref6$trixBody;
176
+ var isCustomAction = name === ACTION_OPTIONS.assignTicketFieldValue;
177
+ return isCustomAction ? renderCustomAction({
178
+ id: id,
179
+ actionableId: actionableId,
180
+ displayValue: displayValue,
181
+ actionOptions: actionOptions
182
+ }) : renderDefaultAction({
183
+ id: id,
184
+ name: name,
185
+ displayValue: displayValue,
186
+ trixBody: trixBody
187
+ });
188
+ };
189
+ var buildActionOptions = function buildActionOptions(_ref7) {
190
+ var dropdownOptions = _ref7.dropdownOptions,
191
+ actionNameOptions = _ref7.actionNameOptions,
192
+ variables = _ref7.variables;
193
+ var actionDropdown = getActionDropdown(dropdownOptions);
194
+ var options = actionNameOptions.map(function (option) {
195
+ var dropdownOptions = actionDropdown[option.value];
196
+ return dropdownOptions ? _objectSpread$1(_objectSpread$1({}, option), {}, {
197
+ dropdownOptions: dropdownOptions
198
+ }) : option;
199
+ });
200
+ var fields = (dropdownOptions.fields || []).filter(function (field) {
201
+ return !field.kind.startsWith("system_");
202
+ }) || [];
203
+ var fieldOptions = fields.map(function (_ref8) {
204
+ var id = _ref8.id,
205
+ name = _ref8.name,
206
+ kind = _ref8.kind,
207
+ attributeOptions = _ref8.data;
208
+ return {
209
+ label: t("neetoRules.common.assign", {
210
+ what: name
211
+ }),
212
+ value: "ticket_field_".concat(id),
213
+ type: getActionType(kind),
214
+ variables: variables,
215
+ defaultData: {
216
+ actionable_id: id,
217
+ actionable_type: "Field"
218
+ },
219
+ dropdownOptions: getDropdownOptions(kind, attributeOptions)
220
+ };
221
+ });
222
+ return [].concat(_toConsumableArray(options), _toConsumableArray(fieldOptions));
223
+ };
224
+
225
+ function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
226
+ function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
227
+ var Body = function Body(_ref) {
228
+ var _cannedResponse$actio;
229
+ var actionNameOptions = _ref.actionNameOptions,
230
+ cannedResponse = _ref.cannedResponse,
231
+ dropdownList = _ref.dropdownList,
232
+ isLoading = _ref.isLoading,
233
+ variables = _ref.variables;
234
+ var _useTranslation = useTranslation(),
235
+ t = _useTranslation.t;
236
+ var actionOptions = buildActionOptions({
237
+ dropdownOptions: dropdownList,
238
+ actionNameOptions: actionNameOptions,
239
+ variables: variables
240
+ });
241
+ if (isLoading) {
242
+ return /*#__PURE__*/jsx("div", {
243
+ className: "flex h-full w-full items-center justify-center",
244
+ children: /*#__PURE__*/jsx(Spinner, {})
245
+ });
246
+ }
247
+ return /*#__PURE__*/jsx("div", {
248
+ className: "overflow-y-auto p-4",
249
+ children: not(cannedResponse) ? t("neetoRules.common.preview") : (_cannedResponse$actio = cannedResponse.actions) === null || _cannedResponse$actio === void 0 ? void 0 : _cannedResponse$actio.map(function (action) {
250
+ return renderAction(_objectSpread(_objectSpread({}, action), {}, {
251
+ actionOptions: actionOptions
252
+ }));
253
+ })
254
+ });
255
+ };
256
+
257
+ var CannedResponsesPane = function CannedResponsesPane(_ref) {
258
+ var actionNameOptions = _ref.actionNameOptions,
259
+ areDropdownListsLoading = _ref.areDropdownListsLoading,
260
+ dropdownList = _ref.dropdownList,
261
+ isCannedResponsePaneOpen = _ref.isCannedResponsePaneOpen,
262
+ isLoadingPreview = _ref.isLoadingPreview,
263
+ macros = _ref.macros,
264
+ onApply = _ref.onApply,
265
+ onCancel = _ref.onCancel,
266
+ previewCannedResponses = _ref.previewCannedResponses,
267
+ previewParams = _ref.previewParams,
268
+ _ref$variables = _ref.variables,
269
+ variables = _ref$variables === void 0 ? [] : _ref$variables;
270
+ var _useState = useState(null),
271
+ _useState2 = _slicedToArray(_useState, 2),
272
+ cannedResponse = _useState2[0],
273
+ setCannedResponse = _useState2[1];
274
+ var initialFocusRef = useRef();
275
+ var _useTranslation = useTranslation(),
276
+ t = _useTranslation.t;
277
+ var options = macros === null || macros === void 0 ? void 0 : macros.map(function (_ref2) {
278
+ var name = _ref2.name,
279
+ id = _ref2.id;
280
+ return {
281
+ label: name,
282
+ value: id
283
+ };
284
+ });
285
+ var handleSelect = /*#__PURE__*/function () {
286
+ var _ref4 = _asyncToGenerator(/*#__PURE__*/_regeneratorRuntime.mark(function _callee(_ref3) {
287
+ var value;
288
+ return _regeneratorRuntime.wrap(function _callee$(_context) {
289
+ while (1) switch (_context.prev = _context.next) {
290
+ case 0:
291
+ value = _ref3.value;
292
+ _context.next = 3;
293
+ return previewCannedResponses({
294
+ id: value,
295
+ payload: previewParams
296
+ }, {
297
+ onSuccess: function onSuccess(response) {
298
+ return setCannedResponse(values(response || {})[0]);
299
+ }
300
+ });
301
+ case 3:
302
+ case "end":
303
+ return _context.stop();
304
+ }
305
+ }, _callee);
306
+ }));
307
+ return function handleSelect(_x) {
308
+ return _ref4.apply(this, arguments);
309
+ };
310
+ }();
311
+ var handleSubmit = function handleSubmit() {
312
+ return onApply({
313
+ cannedResponse: cannedResponse,
314
+ setCannedResponse: setCannedResponse,
315
+ onSettled: onCancel
316
+ });
317
+ };
318
+ var handleCancel = function handleCancel() {
319
+ onCancel();
320
+ setCannedResponse(null);
321
+ };
322
+ return /*#__PURE__*/jsxs(Pane, {
323
+ initialFocusRef: initialFocusRef,
324
+ isOpen: isCannedResponsePaneOpen,
325
+ onClose: handleCancel,
326
+ children: [/*#__PURE__*/jsx(Pane.Header, {
327
+ children: /*#__PURE__*/jsx(Typography, {
328
+ style: "h2",
329
+ weight: "semibold",
330
+ children: t("neetoRules.cannedResponses.title", PLURAL)
331
+ })
332
+ }), /*#__PURE__*/jsx(Formik, {
333
+ initialValues: {
334
+ cannedResponse: toLabelAndValue(null)
335
+ },
336
+ onSubmit: handleSubmit,
337
+ children: function children(_ref5) {
338
+ var setFieldValue = _ref5.setFieldValue,
339
+ isSubmitting = _ref5.isSubmitting;
340
+ return /*#__PURE__*/jsxs(Form, {
341
+ children: [/*#__PURE__*/jsx(Pane.Body, {
342
+ children: /*#__PURE__*/jsx("div", {
343
+ className: "flex w-full flex-grow flex-col space-y-4",
344
+ children: areDropdownListsLoading ? /*#__PURE__*/jsx("div", {
345
+ className: "flex h-full w-full items-center justify-center",
346
+ children: /*#__PURE__*/jsx(Spinner, {})
347
+ }) : /*#__PURE__*/jsxs(Fragment, {
348
+ children: [/*#__PURE__*/jsxs("div", {
349
+ className: "space-y-4",
350
+ children: [/*#__PURE__*/jsx(Select, {
351
+ options: options,
352
+ isSearchable: true,
353
+ label: t("neetoRules.labels.selectCannedResponse"),
354
+ name: "cannedResponse",
355
+ ref: initialFocusRef,
356
+ onChange: function onChange(value) {
357
+ setFieldValue("cannedResponse", value);
358
+ handleSelect(value);
359
+ }
360
+ }), /*#__PURE__*/jsx(Typography, {
361
+ style: "body2",
362
+ children: t("neetoRules.common.preview")
363
+ })]
364
+ }), /*#__PURE__*/jsx(Body, {
365
+ actionNameOptions: actionNameOptions,
366
+ cannedResponse: cannedResponse,
367
+ dropdownList: dropdownList,
368
+ variables: variables,
369
+ isLoading: isLoadingPreview
370
+ })]
371
+ })
372
+ })
373
+ }), /*#__PURE__*/jsx(Pane.Footer, {
374
+ children: /*#__PURE__*/jsx(ActionBlock, {
375
+ cancelButtonProps: {
376
+ onClick: handleCancel
377
+ },
378
+ isSubmitting: isSubmitting || isLoadingPreview,
379
+ submitButtonProps: {
380
+ label: t("neetoRules.common.apply")
381
+ }
382
+ })
383
+ })]
384
+ });
385
+ }
386
+ })]
387
+ });
388
+ };
389
+
390
+ export { CannedResponsesPane as default };
391
+ //# sourceMappingURL=CannedResponsesPane.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"CannedResponsesPane.js","sources":["../app/javascript/src/components/CannedResponsesPane/Action.jsx","../app/javascript/src/components/CannedResponsesPane/constants.js","../app/javascript/src/components/CannedResponsesPane/utils.jsx","../app/javascript/src/components/CannedResponsesPane/Body.jsx","../app/javascript/src/components/CannedResponsesPane/index.jsx"],"sourcesContent":["import { sanitize } from \"dompurify\";\nimport { Input, Label } from \"neetoui\";\n\nconst Action = ({ id, label, value, richText = false }) => {\n if (richText) {\n return (\n <div className=\"mb-4 space-y-2\" key={id}>\n <Label>{label}</Label>\n <div\n className=\"border-radius trix-content neeto-ui-bg-gray-100 cursor-not-allowed whitespace-pre-wrap border p-3\"\n dangerouslySetInnerHTML={{\n __html: sanitize(value.replace(/\\n/g, \"\")),\n }}\n />\n </div>\n );\n }\n\n return (\n <Input\n {...{ label }}\n disabled\n className=\"mb-4\"\n key={id}\n value={value.replace(/_/g, \" \")}\n />\n );\n};\n\nexport default Action;\n","import { t } from \"i18next\";\n\nconst CANNED_RESPONSE_INPUT_ACTION_NAMES = [\n \"assign_agent\",\n \"assign_group\",\n \"remove_tags\",\n \"add_tags\",\n \"change_priority\",\n \"change_status\",\n];\n\nexport const CANNED_RESPONSE_RICH_TEXT_ACTION_NAME = [\"add_note\", \"add_reply\"];\n\nexport const CANNED_RESPONSE_ACTION_LABELS = [\n ...CANNED_RESPONSE_INPUT_ACTION_NAMES,\n ...CANNED_RESPONSE_RICH_TEXT_ACTION_NAME,\n].reduce(\n (labelObject, actionName) => ({\n ...labelObject,\n [actionName]: `neetoRules.labels.${actionName}`,\n }),\n {}\n);\n\nexport const ACTION_OPTIONS = {\n addNote: \"add_note\",\n addCommentOrReply: \"add_reply\",\n addTags: \"add_tags\",\n removeTags: \"remove_tags\",\n changePriority: \"change_priority\",\n changeStatus: \"change_status\",\n assignAgent: \"assign_agent\",\n assignGroup: \"assign_group\",\n assignTicketFieldValue: \"assign_field_value\",\n};\n\nexport const ACTION_TYPES_MAP = {\n single_option: \"dropdown\",\n multi_option: \"multiSelect\",\n checkbox: \"dropdown\",\n integer: \"number\",\n};\n\nexport const DEFAULT_CHECKBOX_OPTIONS = [\n { label: t(\"neetoRules.labels.checked\"), value: true },\n { label: t(\"neetoRules.labels.unchecked\"), value: false },\n];\n","import { t } from \"i18next\";\nimport { findBy } from \"neetocist\";\nimport { join } from \"ramda\";\n\nimport Action from \"./Action\";\nimport {\n ACTION_OPTIONS,\n ACTION_TYPES_MAP,\n CANNED_RESPONSE_ACTION_LABELS,\n CANNED_RESPONSE_RICH_TEXT_ACTION_NAME,\n DEFAULT_CHECKBOX_OPTIONS,\n} from \"./constants\";\n\nconst renderActionValue = ({ actionType, displayValue }) => {\n if (actionType === \"multiSelect\") {\n return join(\", \", displayValue);\n }\n\n return displayValue;\n};\n\nconst renderDefaultAction = ({ id, name, displayValue, trixBody }) => {\n const label = t(CANNED_RESPONSE_ACTION_LABELS[name]);\n\n if (CANNED_RESPONSE_RICH_TEXT_ACTION_NAME.includes(name)) {\n return <Action {...{ id, label }} richText value={trixBody} />;\n }\n\n return <Action {...{ id, label }} value={displayValue} />;\n};\n\nconst renderCustomAction = ({\n id,\n actionableId,\n displayValue,\n actionOptions,\n}) => {\n const actionName = `ticket_field_${actionableId}`;\n const actionOption = findBy({ value: actionName }, actionOptions);\n const label = actionOption?.label;\n const actionType = actionOption?.type;\n const actionValue = renderActionValue({ actionType, displayValue });\n const isRichText = actionType === \"textarea\";\n\n return (\n <Action {...{ id, label }} richText={isRichText} value={actionValue} />\n );\n};\n\nconst getActionDropdown = ({ status, teams, members, tags }) => ({\n change_status: status || [],\n assign_group: teams || [],\n assign_agent: members || [],\n add_tags: tags || [],\n remove_tags: tags || [],\n});\n\nconst getActionType = kind => ACTION_TYPES_MAP[kind] || kind;\n\nconst getDropdownOptions = (kind, optionsAttribute) => {\n if ([\"single_option\", \"multi_option\"].includes(kind)) {\n return optionsAttribute.map(({ id, label }) => ({\n label,\n value: id,\n }));\n } else if (kind === \"checkbox\") {\n return [...DEFAULT_CHECKBOX_OPTIONS];\n }\n\n return [];\n};\n\nexport const renderAction = ({\n name,\n id,\n actionableId,\n displayValue,\n actionOptions = [],\n trixBody = \"\",\n}) => {\n const isCustomAction = name === ACTION_OPTIONS.assignTicketFieldValue;\n\n return isCustomAction\n ? renderCustomAction({\n id,\n actionableId,\n displayValue,\n actionOptions,\n })\n : renderDefaultAction({ id, name, displayValue, trixBody });\n};\n\nexport const buildActionOptions = ({\n dropdownOptions,\n actionNameOptions,\n variables,\n}) => {\n const actionDropdown = getActionDropdown(dropdownOptions);\n const options = actionNameOptions.map(option => {\n const dropdownOptions = actionDropdown[option.value];\n\n return dropdownOptions ? { ...option, dropdownOptions } : option;\n });\n\n const fields =\n (dropdownOptions.fields || []).filter(\n field => !field.kind.startsWith(\"system_\")\n ) || [];\n\n const fieldOptions = fields.map(\n ({ id, name, kind, data: attributeOptions }) => ({\n label: t(\"neetoRules.common.assign\", { what: name }),\n value: `ticket_field_${id}`,\n type: getActionType(kind),\n variables,\n defaultData: { actionable_id: id, actionable_type: \"Field\" },\n dropdownOptions: getDropdownOptions(kind, attributeOptions),\n })\n );\n\n return [...options, ...fieldOptions];\n};\n","import { Spinner } from \"neetoui\";\nimport { not } from \"ramda\";\nimport { useTranslation } from \"react-i18next\";\n\nimport { buildActionOptions, renderAction } from \"./utils\";\n\nconst Body = ({\n actionNameOptions,\n cannedResponse,\n dropdownList,\n isLoading,\n variables,\n}) => {\n const { t } = useTranslation();\n\n const actionOptions = buildActionOptions({\n dropdownOptions: dropdownList,\n actionNameOptions,\n variables,\n });\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 return (\n <div className=\"overflow-y-auto p-4\">\n {not(cannedResponse)\n ? t(\"neetoRules.common.preview\")\n : cannedResponse.actions?.map(action =>\n renderAction({ ...action, actionOptions })\n )}\n </div>\n );\n};\nexport default Body;\n","import { useRef, useState } from \"react\";\n\nimport { Form, Formik } from \"formik\";\nimport { toLabelAndValue } from \"neetocist\";\nimport { PLURAL } from \"neetocommons/constants\";\nimport { Pane, Spinner, Typography } from \"neetoui\";\nimport { ActionBlock, Select } from \"neetoui/formik\";\nimport { values } from \"ramda\";\nimport { useTranslation } from \"react-i18next\";\n\nimport Body from \"./Body\";\n\nconst CannedResponsesPane = ({\n actionNameOptions,\n areDropdownListsLoading,\n dropdownList,\n isCannedResponsePaneOpen,\n isLoadingPreview,\n macros,\n onApply,\n onCancel,\n previewCannedResponses,\n previewParams,\n variables = [],\n}) => {\n const [cannedResponse, setCannedResponse] = useState(null);\n\n const initialFocusRef = useRef();\n\n const { t } = useTranslation();\n\n const options = macros?.map(({ name, id }) => ({ label: name, value: id }));\n\n const handleSelect = async ({ value }) => {\n await previewCannedResponses(\n { id: value, payload: previewParams },\n { onSuccess: response => setCannedResponse(values(response || {})[0]) }\n );\n };\n\n const handleSubmit = () =>\n onApply({ cannedResponse, setCannedResponse, onSettled: onCancel });\n\n const handleCancel = () => {\n onCancel();\n setCannedResponse(null);\n };\n\n return (\n <Pane\n {...{ initialFocusRef }}\n isOpen={isCannedResponsePaneOpen}\n onClose={handleCancel}\n >\n <Pane.Header>\n <Typography style=\"h2\" weight=\"semibold\">\n {t(\"neetoRules.cannedResponses.title\", PLURAL)}\n </Typography>\n </Pane.Header>\n <Formik\n initialValues={{ cannedResponse: toLabelAndValue(null) }}\n onSubmit={handleSubmit}\n >\n {({ setFieldValue, isSubmitting }) => (\n <Form>\n <Pane.Body>\n <div className=\"flex w-full flex-grow flex-col space-y-4\">\n {areDropdownListsLoading ? (\n <div className=\"flex h-full w-full items-center justify-center\">\n <Spinner />\n </div>\n ) : (\n <>\n <div className=\"space-y-4\">\n <Select\n {...{ options }}\n isSearchable\n label={t(\"neetoRules.labels.selectCannedResponse\")}\n name=\"cannedResponse\"\n ref={initialFocusRef}\n onChange={value => {\n setFieldValue(\"cannedResponse\", value);\n handleSelect(value);\n }}\n />\n <Typography style=\"body2\">\n {t(\"neetoRules.common.preview\")}\n </Typography>\n </div>\n <Body\n {...{\n actionNameOptions,\n cannedResponse,\n dropdownList,\n variables,\n }}\n isLoading={isLoadingPreview}\n />\n </>\n )}\n </div>\n </Pane.Body>\n <Pane.Footer>\n <ActionBlock\n cancelButtonProps={{ onClick: handleCancel }}\n isSubmitting={isSubmitting || isLoadingPreview}\n submitButtonProps={{ label: t(\"neetoRules.common.apply\") }}\n />\n </Pane.Footer>\n </Form>\n )}\n </Formik>\n </Pane>\n );\n};\n\nexport default CannedResponsesPane;\n"],"names":["Action","_ref","id","label","value","_ref$richText","richText","_jsxs","className","children","_jsx","Label","dangerouslySetInnerHTML","__html","sanitize","replace","_createElement","Input","disabled","key","CANNED_RESPONSE_INPUT_ACTION_NAMES","CANNED_RESPONSE_RICH_TEXT_ACTION_NAME","CANNED_RESPONSE_ACTION_LABELS","concat","reduce","labelObject","actionName","_objectSpread","_defineProperty","ACTION_OPTIONS","addNote","addCommentOrReply","addTags","removeTags","changePriority","changeStatus","assignAgent","assignGroup","assignTicketFieldValue","ACTION_TYPES_MAP","single_option","multi_option","checkbox","integer","DEFAULT_CHECKBOX_OPTIONS","t","renderActionValue","actionType","displayValue","join","renderDefaultAction","_ref2","name","trixBody","includes","renderCustomAction","_ref3","actionableId","actionOptions","actionOption","findBy","type","actionValue","isRichText","getActionDropdown","_ref4","status","teams","members","tags","change_status","assign_group","assign_agent","add_tags","remove_tags","getActionType","kind","getDropdownOptions","optionsAttribute","map","_ref5","_toConsumableArray","renderAction","_ref6","_ref6$actionOptions","_ref6$trixBody","isCustomAction","buildActionOptions","_ref7","dropdownOptions","actionNameOptions","variables","actionDropdown","options","option","fields","filter","field","startsWith","fieldOptions","_ref8","attributeOptions","data","what","defaultData","actionable_id","actionable_type","Body","_cannedResponse$actio","cannedResponse","dropdownList","isLoading","_useTranslation","useTranslation","Spinner","not","actions","action","CannedResponsesPane","areDropdownListsLoading","isCannedResponsePaneOpen","isLoadingPreview","macros","onApply","onCancel","previewCannedResponses","previewParams","_ref$variables","_useState","useState","_useState2","_slicedToArray","setCannedResponse","initialFocusRef","useRef","handleSelect","_asyncToGenerator","_regeneratorRuntime","mark","_callee","wrap","_callee$","_context","prev","next","payload","onSuccess","response","values","stop","_x","apply","arguments","handleSubmit","onSettled","handleCancel","Pane","isOpen","onClose","Header","Typography","style","weight","PLURAL","Formik","initialValues","toLabelAndValue","onSubmit","setFieldValue","isSubmitting","Form","_Fragment","Select","isSearchable","ref","onChange","Footer","ActionBlock","cancelButtonProps","onClick","submitButtonProps"],"mappings":"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"}