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