@bigbinary/neeto-templates-frontend 1.1.2 → 1.1.3

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.
package/dist/index.js CHANGED
@@ -1,25 +1,35 @@
1
- import React, { useState, useRef, useCallback, useEffect } from 'react';
2
- import { noop } from '@bigbinary/neeto-cist';
3
- import { Typography, Dropdown, Input, Spinner, Button, Modal } from '@bigbinary/neetoui';
4
- import { useDebounce } from '@bigbinary/neeto-commons-frontend/react-utils';
5
- import { MenuHorizontal, Search, LeftArrow } from '@bigbinary/neeto-icons';
1
+ import * as React from 'react';
2
+ import React__default, { useState, useRef, useCallback, useEffect, useMemo, memo } from 'react';
3
+ import { noop, removeBy, renameKeys } from '@bigbinary/neeto-cist';
4
+ import { Typography, Dropdown, Input, Spinner, Button, Modal, Toastr, Tag, Select, Label } from '@bigbinary/neetoui';
5
+ import { useDebounce, withT } from '@bigbinary/neeto-commons-frontend/react-utils';
6
+ import { MenuHorizontal, Search, LeftArrow, Plus, Check, Settings, Delete } from '@bigbinary/neeto-icons';
6
7
  import PageLoader from '@bigbinary/neeto-molecules/PageLoader';
7
8
  import Scrollable from '@bigbinary/neeto-molecules/Scrollable';
8
- import { useTranslation } from 'react-i18next';
9
- import { prop } from 'ramda';
10
- import { QueryClient, useInfiniteQuery, useMutation } from 'react-query';
9
+ import { useTranslation, Trans } from 'react-i18next';
10
+ import { prop, pluck, not } from 'ramda';
11
+ import { QueryClient, useQuery, useMutation, useInfiniteQuery, QueryCache, useQueryClient } from 'react-query';
11
12
  import axios from 'axios';
12
13
  import require$$0 from 'util';
13
- import { DEFAULT_STALE_TIME } from '@bigbinary/neeto-commons-frontend/constants';
14
- import CustomSVG from 'images/dashboard/custom';
14
+ import { DEFAULT_STALE_TIME, SINGULAR, PLURAL } from '@bigbinary/neeto-commons-frontend/constants';
15
15
  import classnames from 'classnames';
16
16
  import { joinHyphenCase, buildUrl } from '@bigbinary/neeto-commons-frontend/utils';
17
-
18
- function _arrayWithHoles(arr) {
17
+ import { Form } from '@bigbinary/neetoui/formik';
18
+ import { useParams } from 'react-router-dom';
19
+ import { isNotEmpty } from '@bigbinary/neeto-commons-frontend/pure';
20
+ import '@bigbinary/neeto-molecules/Container';
21
+ import '@bigbinary/neeto-molecules/SubHeader';
22
+ import '@bigbinary/neeto-molecules/TableWrapper';
23
+ import { t as t$1 } from 'i18next';
24
+ import * as yup from 'yup';
25
+ import NeetoHeader from '@bigbinary/neeto-molecules/Header';
26
+ import 'react-query/devtools';
27
+
28
+ function _arrayWithHoles$1(arr) {
19
29
  if (Array.isArray(arr)) return arr;
20
30
  }
21
31
 
22
- function _iterableToArrayLimit(arr, i) {
32
+ function _iterableToArrayLimit$1(arr, i) {
23
33
  var _i = null == arr ? null : "undefined" != typeof Symbol && arr[Symbol.iterator] || arr["@@iterator"];
24
34
  if (null != _i) {
25
35
  var _s,
@@ -47,27 +57,27 @@ function _iterableToArrayLimit(arr, i) {
47
57
  }
48
58
  }
49
59
 
50
- function _arrayLikeToArray(arr, len) {
60
+ function _arrayLikeToArray$1(arr, len) {
51
61
  if (len == null || len > arr.length) len = arr.length;
52
62
  for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i];
53
63
  return arr2;
54
64
  }
55
65
 
56
- function _unsupportedIterableToArray(o, minLen) {
66
+ function _unsupportedIterableToArray$1(o, minLen) {
57
67
  if (!o) return;
58
- if (typeof o === "string") return _arrayLikeToArray(o, minLen);
68
+ if (typeof o === "string") return _arrayLikeToArray$1(o, minLen);
59
69
  var n = Object.prototype.toString.call(o).slice(8, -1);
60
70
  if (n === "Object" && o.constructor) n = o.constructor.name;
61
71
  if (n === "Map" || n === "Set") return Array.from(o);
62
- if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen);
72
+ if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray$1(o, minLen);
63
73
  }
64
74
 
65
- function _nonIterableRest() {
75
+ function _nonIterableRest$1() {
66
76
  throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.");
67
77
  }
68
78
 
69
- function _slicedToArray(arr, i) {
70
- return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest();
79
+ function _slicedToArray$1(arr, i) {
80
+ return _arrayWithHoles$1(arr) || _iterableToArrayLimit$1(arr, i) || _unsupportedIterableToArray$1(arr, i) || _nonIterableRest$1();
71
81
  }
72
82
 
73
83
  var TEMPLATE_SCREENS = {
@@ -123,7 +133,7 @@ function _defineProperty(obj, key, value) {
123
133
  }
124
134
 
125
135
  function _arrayWithoutHoles(arr) {
126
- if (Array.isArray(arr)) return _arrayLikeToArray(arr);
136
+ if (Array.isArray(arr)) return _arrayLikeToArray$1(arr);
127
137
  }
128
138
 
129
139
  function _iterableToArray(iter) {
@@ -135,7 +145,7 @@ function _nonIterableSpread() {
135
145
  }
136
146
 
137
147
  function _toConsumableArray(arr) {
138
- return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread();
148
+ return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray$1(arr) || _nonIterableSpread();
139
149
  }
140
150
 
141
151
  function createObserverCache() {
@@ -266,8 +276,8 @@ function useIntersectionObserver(args) {
266
276
  }];
267
277
  }
268
278
 
269
- function _extends() {
270
- _extends = Object.assign || function (target) {
279
+ function _extends$2() {
280
+ _extends$2 = Object.assign || function (target) {
271
281
  for (var i = 1; i < arguments.length; i++) {
272
282
  var source = arguments[i];
273
283
 
@@ -281,7 +291,7 @@ function _extends() {
281
291
  return target;
282
292
  };
283
293
 
284
- return _extends.apply(this, arguments);
294
+ return _extends$2.apply(this, arguments);
285
295
  }
286
296
 
287
297
  function useTrackVisibility(args) {
@@ -301,7 +311,7 @@ function useTrackVisibility(args) {
301
311
  setWasEverVisible(true);
302
312
  }
303
313
 
304
- return [ref, _extends({}, result, {
314
+ return [ref, _extends$2({}, result, {
305
315
  isVisible: isVisible,
306
316
  wasEverVisible: wasEverVisible
307
317
  })];
@@ -349,6 +359,27 @@ function useInfiniteScroll(_ref) {
349
359
  }];
350
360
  }
351
361
 
362
+ var _rect, _path;
363
+ function _extends$1() { _extends$1 = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends$1.apply(this, arguments); }
364
+ const SvgCustom = props => /*#__PURE__*/React.createElement("svg", _extends$1({
365
+ xmlns: "http://www.w3.org/2000/svg",
366
+ width: 46,
367
+ height: 46,
368
+ fill: "none"
369
+ }, props), _rect || (_rect = /*#__PURE__*/React.createElement("rect", {
370
+ width: 40,
371
+ height: 40,
372
+ x: 3,
373
+ y: 2,
374
+ fill: "#4558F9",
375
+ rx: 2
376
+ })), _path || (_path = /*#__PURE__*/React.createElement("path", {
377
+ fill: "#fff",
378
+ fillRule: "evenodd",
379
+ d: "M23.75 16a.75.75 0 0 0-1.5 0v5.25H17a.75.75 0 0 0 0 1.5h5.25V28a.75.75 0 0 0 1.5 0v-5.25H29a.75.75 0 0 0 0-1.5h-5.25V16Z",
380
+ clipRule: "evenodd"
381
+ })));
382
+
352
383
  function _objectWithoutPropertiesLoose(source, excluded) {
353
384
  if (source == null) return {};
354
385
  var target = {};
@@ -2431,17 +2462,8 @@ var lib = {
2431
2462
  stringify: stringify
2432
2463
  };
2433
2464
 
2434
- var generatePath = function generatePath(path, params) {
2435
- return Object.entries(params).reduce(function (acc, _ref) {
2436
- var _ref2 = _slicedToArray(_ref, 2),
2437
- name = _ref2[0],
2438
- value = _ref2[1];
2439
- return acc.replace(":".concat(name), value);
2440
- }, path);
2441
- };
2442
-
2443
2465
  var _excluded = ["url"];
2444
- var list = function list(_ref) {
2466
+ var list$1 = function list(_ref) {
2445
2467
  var url = _ref.url,
2446
2468
  params = _objectWithoutProperties(_ref, _excluded);
2447
2469
  return axios.get(url, {
@@ -2453,31 +2475,33 @@ var list = function list(_ref) {
2453
2475
  }
2454
2476
  });
2455
2477
  };
2456
- var create = function create(_ref2) {
2478
+ var create$1 = function create(_ref2) {
2457
2479
  var id = _ref2.id,
2458
2480
  url = _ref2.url;
2459
2481
  return axios.post(url, {
2460
- createTemplate: {
2482
+ template: {
2461
2483
  id: id
2462
2484
  }
2485
+ }, {
2486
+ showToastr: false
2463
2487
  });
2464
2488
  };
2465
- var fetch = function fetch(resourceId, url) {
2466
- return axios.get(generatePath(url, {
2467
- resourceId: resourceId
2468
- }));
2469
- };
2470
- var update = function update(_ref3) {
2471
- var resourceId = _ref3.resourceId,
2472
- payload = _ref3.payload,
2489
+ var fetch = function fetch(_ref3) {
2490
+ var templateId = _ref3.templateId,
2473
2491
  url = _ref3.url;
2474
- return axios.put(generatePath(url, {
2475
- resourceId: resourceId
2476
- }), payload);
2492
+ return axios.get("".concat(url, "/").concat(templateId), {
2493
+ showToastr: false
2494
+ });
2495
+ };
2496
+ var update = function update(_ref4) {
2497
+ var resourceId = _ref4.resourceId,
2498
+ payload = _ref4.payload,
2499
+ url = _ref4.url;
2500
+ return axios.put("".concat(url, "/").concat(resourceId), payload);
2477
2501
  };
2478
2502
  var templatesApi = {
2479
- list: list,
2480
- create: create,
2503
+ list: list$1,
2504
+ create: create$1,
2481
2505
  update: update,
2482
2506
  fetch: fetch
2483
2507
  };
@@ -2487,7 +2511,7 @@ var QUERY_KEYS = {
2487
2511
  TEMPLATE_TAGS: "template-tags"
2488
2512
  };
2489
2513
 
2490
- var queryClient = new QueryClient({
2514
+ var queryClient$1 = new QueryClient({
2491
2515
  defaultOptions: {
2492
2516
  queries: {
2493
2517
  staleTime: DEFAULT_STALE_TIME
@@ -2495,8 +2519,8 @@ var queryClient = new QueryClient({
2495
2519
  }
2496
2520
  });
2497
2521
 
2498
- function ownKeys$1(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
2499
- function _objectSpread$1(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys$1(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys$1(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
2522
+ function ownKeys$3(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
2523
+ function _objectSpread$3(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys$3(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys$3(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
2500
2524
  var useFetchTemplates = function useFetchTemplates(_ref) {
2501
2525
  var url = _ref.url,
2502
2526
  searchTerm = _ref.searchTerm,
@@ -2529,9 +2553,9 @@ var useFetchTemplates = function useFetchTemplates(_ref) {
2529
2553
  };
2530
2554
  var useCreateTemplate = function useCreateTemplate(_ref3, options) {
2531
2555
  var resourceQueryKey = _ref3.resourceQueryKey;
2532
- return useMutation(templatesApi.create, _objectSpread$1(_objectSpread$1({}, options), {}, {
2556
+ return useMutation(templatesApi.create, _objectSpread$3(_objectSpread$3({}, options), {}, {
2533
2557
  onSuccess: function onSuccess() {
2534
- queryClient.invalidateQueries([resourceQueryKey]);
2558
+ queryClient$1.invalidateQueries([resourceQueryKey]);
2535
2559
  for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
2536
2560
  args[_key] = arguments[_key];
2537
2561
  }
@@ -2539,6 +2563,34 @@ var useCreateTemplate = function useCreateTemplate(_ref3, options) {
2539
2563
  }
2540
2564
  }));
2541
2565
  };
2566
+ var useFetchTemplate = function useFetchTemplate(_ref4, options) {
2567
+ var resourceId = _ref4.resourceId,
2568
+ url = _ref4.url;
2569
+ return useQuery([QUERY_KEYS.TEMPLATES, resourceId], function () {
2570
+ return templatesApi.fetch({
2571
+ templateId: resourceId,
2572
+ url: url
2573
+ });
2574
+ }, options);
2575
+ };
2576
+ var useUpdateTemplate = function useUpdateTemplate(_ref5) {
2577
+ var resourceId = _ref5.resourceId,
2578
+ url = _ref5.url;
2579
+ return useMutation(function (_ref6) {
2580
+ var template = _ref6.template;
2581
+ return templatesApi.update({
2582
+ resourceId: resourceId,
2583
+ url: url,
2584
+ payload: {
2585
+ template: template
2586
+ }
2587
+ });
2588
+ }, {
2589
+ onSuccess: function onSuccess() {
2590
+ queryClient$1.invalidateQueries([QUERY_KEYS.TEMPLATES]);
2591
+ }
2592
+ });
2593
+ };
2542
2594
 
2543
2595
  var BlankCard = function BlankCard(_ref) {
2544
2596
  var Icon = _ref.icon,
@@ -2548,21 +2600,21 @@ var BlankCard = function BlankCard(_ref) {
2548
2600
  onClick = _ref$onClick === void 0 ? noop : _ref$onClick,
2549
2601
  _ref$disabled = _ref.disabled,
2550
2602
  disabled = _ref$disabled === void 0 ? false : _ref$disabled;
2551
- return /*#__PURE__*/React.createElement("div", {
2603
+ return /*#__PURE__*/React__default.createElement("div", {
2552
2604
  className: "neeto-ui-rounded-lg neeto-ui-bg-white hover:neeto-ui-bg-white neeto-ui-border-primary-500 outline-none flex cursor-pointer flex-col items-center justify-center border border-dashed p-6 transition-all duration-300 ease-in-out hover:border-solid focus:border-solid",
2553
2605
  "data-cy": "start-from-scratch-button",
2554
2606
  tabIndex: 0,
2555
2607
  onClick: !disabled ? onClick : noop
2556
- }, /*#__PURE__*/React.createElement("div", {
2608
+ }, /*#__PURE__*/React__default.createElement("div", {
2557
2609
  className: "neeto-ui-text-primary-500 mb-4"
2558
- }, /*#__PURE__*/React.createElement(Icon, {
2610
+ }, /*#__PURE__*/React__default.createElement(Icon, {
2559
2611
  size: 40
2560
- })), /*#__PURE__*/React.createElement(Typography, {
2612
+ })), /*#__PURE__*/React__default.createElement(Typography, {
2561
2613
  className: "text-center",
2562
2614
  lineHeight: "normal",
2563
2615
  style: "h5",
2564
2616
  weight: "semibold"
2565
- }, title), /*#__PURE__*/React.createElement(Typography, {
2617
+ }, title), /*#__PURE__*/React__default.createElement(Typography, {
2566
2618
  className: "neeto-ui-text-gray-600 text-center",
2567
2619
  lineHeight: "leading-4",
2568
2620
  style: "body3"
@@ -2570,18 +2622,18 @@ var BlankCard = function BlankCard(_ref) {
2570
2622
  };
2571
2623
 
2572
2624
  var ButtonLoader = function ButtonLoader() {
2573
- return /*#__PURE__*/React.createElement("div", {
2625
+ return /*#__PURE__*/React__default.createElement("div", {
2574
2626
  role: "status"
2575
- }, /*#__PURE__*/React.createElement("svg", {
2627
+ }, /*#__PURE__*/React__default.createElement("svg", {
2576
2628
  "aria-hidden": "true",
2577
2629
  className: "neeto-ui-text-gray-400 inline h-5 w-5 animate-spin",
2578
2630
  fill: "none",
2579
2631
  viewBox: "0 0 100 101",
2580
2632
  xmlns: "http://www.w3.org/2000/svg"
2581
- }, /*#__PURE__*/React.createElement("path", {
2633
+ }, /*#__PURE__*/React__default.createElement("path", {
2582
2634
  d: "M100 50.59c0 27.615-22.386 50.001-50 50.001s-50-22.386-50-50 22.386-50 50-50 50 22.386 50 50zm-90.919 0c0 22.6 18.32 40.92 40.919 40.92 22.599 0 40.919-18.32 40.919-40.92 0-22.598-18.32-40.918-40.919-40.918-22.599 0-40.919 18.32-40.919 40.919z",
2583
2635
  fill: "currentColor"
2584
- }), /*#__PURE__*/React.createElement("path", {
2636
+ }), /*#__PURE__*/React__default.createElement("path", {
2585
2637
  d: "M93.968 39.04c2.425-.636 3.894-3.128 3.04-5.486A50 50 0 0041.735 1.279c-2.474.414-3.922 2.919-3.285 5.344.637 2.426 3.12 3.849 5.6 3.484a40.916 40.916 0 0144.131 25.769c.902 2.34 3.361 3.802 5.787 3.165z",
2586
2638
  fill: "#3642df"
2587
2639
  })));
@@ -2613,25 +2665,25 @@ var Card = function Card(_ref) {
2613
2665
  }
2614
2666
  });
2615
2667
  };
2616
- return /*#__PURE__*/React.createElement("div", {
2668
+ return /*#__PURE__*/React__default.createElement("div", {
2617
2669
  className: "neeto-template neeto-ui-bg-white outline-none neeto-ui-shadow-sm hover:neeto-ui-border-gray-400 focus:neeto-ui-border-gray-500 neeto-ui-rounded-lg flex cursor-pointer flex-col overflow-hidden border transition-colors duration-300 ease-in-out",
2618
2670
  "data-cy": "template-card",
2619
2671
  tabIndex: 0,
2620
2672
  onClick: onClick
2621
- }, /*#__PURE__*/React.createElement("div", {
2673
+ }, /*#__PURE__*/React__default.createElement("div", {
2622
2674
  className: "neeto-template__header"
2623
- }, /*#__PURE__*/React.createElement("img", {
2675
+ }, /*#__PURE__*/React__default.createElement("img", {
2624
2676
  className: "neeto-template__image",
2625
2677
  "data-cy": "template-thumbnail-image",
2626
2678
  src: template.imageUrl || "https://d2v7kzglnr2dnh.cloudfront.net/images/neetoForm/default-form-template.svg"
2627
- })), /*#__PURE__*/React.createElement("div", {
2679
+ })), /*#__PURE__*/React__default.createElement("div", {
2628
2680
  className: "neeto-template__description neeto-ui-bg-white flex items-center justify-between gap-2 rounded-b-lg p-2 py-1.5"
2629
- }, /*#__PURE__*/React.createElement(Typography, {
2681
+ }, /*#__PURE__*/React__default.createElement(Typography, {
2630
2682
  className: "neeto-ui-text-gray-800 line-clamp-2",
2631
2683
  "data-cy": "template-card-title",
2632
2684
  lineHeight: "normal",
2633
2685
  style: "body2"
2634
- }, template.title), /*#__PURE__*/React.createElement(Dropdown, {
2686
+ }, template.title), /*#__PURE__*/React__default.createElement(Dropdown, {
2635
2687
  buttonProps: {
2636
2688
  className: "flex-shrink-0",
2637
2689
  size: "small"
@@ -2641,12 +2693,12 @@ var Card = function Card(_ref) {
2641
2693
  onClick: function onClick(e) {
2642
2694
  return e.stopPropagation();
2643
2695
  }
2644
- }, /*#__PURE__*/React.createElement(Menu, null, /*#__PURE__*/React.createElement(MenuItem.Button, {
2696
+ }, /*#__PURE__*/React__default.createElement(Menu, null, /*#__PURE__*/React__default.createElement(MenuItem.Button, {
2645
2697
  "data-cy": "use-this-template-button",
2646
2698
  onClick: function onClick(e) {
2647
2699
  return handleCreateTemplate(e, template.id);
2648
2700
  }
2649
- }, t("neetoTemplate.templates.editTemplate"), isCreating && /*#__PURE__*/React.createElement(ButtonLoader, null)), /*#__PURE__*/React.createElement(MenuItem.Button, {
2701
+ }, t("neetoTemplate.templates.editTemplate"), isCreating && /*#__PURE__*/React__default.createElement(ButtonLoader, null)), /*#__PURE__*/React__default.createElement(MenuItem.Button, {
2650
2702
  "data-cy": "template-preview-button"
2651
2703
  }, t("neetoTemplate.templates.preview"))))));
2652
2704
  };
@@ -2656,7 +2708,7 @@ var CategoryItem = function CategoryItem(_ref) {
2656
2708
  count = _ref.count,
2657
2709
  isActive = _ref.isActive,
2658
2710
  setCurrentCategory = _ref.setCurrentCategory;
2659
- return /*#__PURE__*/React.createElement("button", {
2711
+ return /*#__PURE__*/React__default.createElement("button", {
2660
2712
  "data-cy": "category-".concat(joinHyphenCase(label)),
2661
2713
  tabIndex: 0,
2662
2714
  className: classnames("neeto-ui-rounded-lg outline-none flex w-full items-center justify-between gap-2 border border-solid px-3 py-2 text-sm font-medium leading-4 transition-all duration-300 ease-in-out", {
@@ -2664,11 +2716,11 @@ var CategoryItem = function CategoryItem(_ref) {
2664
2716
  "neeto-ui-text-gray-800 neeto-ui-bg-white neeto-ui-border-gray-300 focus:neeto-ui-border-gray-500": isActive
2665
2717
  }),
2666
2718
  onClick: setCurrentCategory
2667
- }, /*#__PURE__*/React.createElement("span", null, label), /*#__PURE__*/React.createElement("span", null, count));
2719
+ }, /*#__PURE__*/React__default.createElement("span", null, label), /*#__PURE__*/React__default.createElement("span", null, count));
2668
2720
  };
2669
2721
 
2670
- function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
2671
- function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
2722
+ function ownKeys$2(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
2723
+ function _objectSpread$2(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys$2(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys$2(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
2672
2724
  var List = function List(_ref) {
2673
2725
  var setCurrentScreen = _ref.setCurrentScreen,
2674
2726
  setSelectedTemplate = _ref.setSelectedTemplate,
@@ -2681,11 +2733,11 @@ var List = function List(_ref) {
2681
2733
  var _useTranslation = useTranslation(),
2682
2734
  t = _useTranslation.t;
2683
2735
  var _useState = useState(DEFAULT_CATEGORY),
2684
- _useState2 = _slicedToArray(_useState, 2),
2736
+ _useState2 = _slicedToArray$1(_useState, 2),
2685
2737
  currentCategory = _useState2[0],
2686
2738
  _setCurrentCategory = _useState2[1];
2687
2739
  var _useState3 = useState(""),
2688
- _useState4 = _slicedToArray(_useState3, 2),
2740
+ _useState4 = _slicedToArray$1(_useState3, 2),
2689
2741
  searchTerm = _useState4[0],
2690
2742
  setSearchTerm = _useState4[1];
2691
2743
  var debouncedSearch = useDebounce(searchTerm).trim();
@@ -2706,7 +2758,7 @@ var List = function List(_ref) {
2706
2758
  rootMargin: "0px 0px 700px 0px",
2707
2759
  delayInMs: INFINITE_SCROLL_DELAY
2708
2760
  }),
2709
- _useInfiniteScroll2 = _slicedToArray(_useInfiniteScroll, 2),
2761
+ _useInfiniteScroll2 = _slicedToArray$1(_useInfiniteScroll, 2),
2710
2762
  sentryRef = _useInfiniteScroll2[0],
2711
2763
  rootRef = _useInfiniteScroll2[1].rootRef;
2712
2764
  var handleCardClick = function handleCardClick(template) {
@@ -2714,53 +2766,53 @@ var List = function List(_ref) {
2714
2766
  setSelectedTemplate(template);
2715
2767
  };
2716
2768
  if (isTemplatesLoading) {
2717
- return /*#__PURE__*/React.createElement(PageLoader, null);
2769
+ return /*#__PURE__*/React__default.createElement(PageLoader, null);
2718
2770
  }
2719
2771
  var tags = data.tags,
2720
2772
  templates = data.templates,
2721
2773
  templatesCount = data.templatesCount;
2722
- var categories = [_objectSpread(_objectSpread({}, DEFAULT_CATEGORY), {}, {
2774
+ var categories = [_objectSpread$2(_objectSpread$2({}, DEFAULT_CATEGORY), {}, {
2723
2775
  count: templatesCount
2724
2776
  })].concat(_toConsumableArray(tags));
2725
- return /*#__PURE__*/React.createElement("div", {
2777
+ return /*#__PURE__*/React__default.createElement("div", {
2726
2778
  className: "neeto-ui-bg-gray-100 gap-18 relative flex min-h-full items-start p-16"
2727
- }, /*#__PURE__*/React.createElement("div", {
2779
+ }, /*#__PURE__*/React__default.createElement("div", {
2728
2780
  className: "top-18 sticky left-0 w-80 flex-shrink-0 space-y-8"
2729
- }, /*#__PURE__*/React.createElement("div", {
2781
+ }, /*#__PURE__*/React__default.createElement("div", {
2730
2782
  className: "space-y-4"
2731
- }, /*#__PURE__*/React.createElement("div", {
2783
+ }, /*#__PURE__*/React__default.createElement("div", {
2732
2784
  className: "space-y-1"
2733
- }, /*#__PURE__*/React.createElement(Typography, {
2785
+ }, /*#__PURE__*/React__default.createElement(Typography, {
2734
2786
  "data-cy": "create-new-form-title",
2735
2787
  style: "h2",
2736
2788
  weight: "semibold"
2737
2789
  }, t("neetoTemplate.templates.createNewEntity", {
2738
2790
  entity: entity
2739
- })), /*#__PURE__*/React.createElement(Typography, {
2791
+ })), /*#__PURE__*/React__default.createElement(Typography, {
2740
2792
  lineHeight: "normal",
2741
2793
  style: "body2"
2742
- }, t("neetoTemplate.templates.description"))), /*#__PURE__*/React.createElement(Input, {
2794
+ }, t("neetoTemplate.templates.description"))), /*#__PURE__*/React__default.createElement(Input, {
2743
2795
  placeholder: t("neetoTemplate.templates.search"),
2744
- prefix: /*#__PURE__*/React.createElement(Search, null),
2796
+ prefix: /*#__PURE__*/React__default.createElement(Search, null),
2745
2797
  type: "search",
2746
2798
  value: searchTerm,
2747
2799
  onChange: function onChange(_ref2) {
2748
2800
  var value = _ref2.target.value;
2749
2801
  return setSearchTerm(value);
2750
2802
  }
2751
- })), /*#__PURE__*/React.createElement("div", {
2803
+ })), /*#__PURE__*/React__default.createElement("div", {
2752
2804
  className: "space-y-3"
2753
- }, /*#__PURE__*/React.createElement(Typography, {
2805
+ }, /*#__PURE__*/React__default.createElement(Typography, {
2754
2806
  className: "uppercase",
2755
2807
  "data-cy": "template-categories-label",
2756
2808
  style: "h6"
2757
- }, t("neetoTemplate.templates.categories")), /*#__PURE__*/React.createElement("div", {
2809
+ }, t("neetoTemplate.templates.categories")), /*#__PURE__*/React__default.createElement("div", {
2758
2810
  className: "space-y-2"
2759
2811
  }, categories.map(function (_ref3) {
2760
2812
  var id = _ref3.id,
2761
2813
  name = _ref3.name,
2762
2814
  count = _ref3.count;
2763
- return /*#__PURE__*/React.createElement(CategoryItem, {
2815
+ return /*#__PURE__*/React__default.createElement(CategoryItem, {
2764
2816
  count: count,
2765
2817
  isActive: currentCategory.id === id,
2766
2818
  key: id,
@@ -2772,20 +2824,20 @@ var List = function List(_ref) {
2772
2824
  });
2773
2825
  }
2774
2826
  });
2775
- })))), /*#__PURE__*/React.createElement(Scrollable, {
2827
+ })))), /*#__PURE__*/React__default.createElement(Scrollable, {
2776
2828
  ref: rootRef
2777
- }, /*#__PURE__*/React.createElement("div", {
2829
+ }, /*#__PURE__*/React__default.createElement("div", {
2778
2830
  className: "flex-grow space-y-6"
2779
- }, /*#__PURE__*/React.createElement("div", {
2831
+ }, /*#__PURE__*/React__default.createElement("div", {
2780
2832
  className: "grid grid-cols-2 gap-6 md:grid-cols-3 2xl:grid-cols-4"
2781
- }, /*#__PURE__*/React.createElement(BlankCard, {
2833
+ }, /*#__PURE__*/React__default.createElement(BlankCard, {
2782
2834
  description: t("neetoTemplate.templates.blankCard.description"),
2783
2835
  disabled: isCreating,
2784
- icon: isCreating ? Spinner : CustomSVG,
2836
+ icon: isCreating ? Spinner : SvgCustom,
2785
2837
  title: t("neetoTemplate.templates.blankCard.title"),
2786
2838
  onClick: onCreate
2787
2839
  }), templates === null || templates === void 0 ? void 0 : templates.map(function (template, index) {
2788
- return /*#__PURE__*/React.createElement(Card, {
2840
+ return /*#__PURE__*/React__default.createElement(Card, {
2789
2841
  key: index,
2790
2842
  template: template,
2791
2843
  afterCreate: afterCreate,
@@ -2795,13 +2847,13 @@ var List = function List(_ref) {
2795
2847
  return handleCardClick(template);
2796
2848
  }
2797
2849
  });
2798
- })), hasNextPage && /*#__PURE__*/React.createElement("div", {
2850
+ })), hasNextPage && /*#__PURE__*/React__default.createElement("div", {
2799
2851
  className: "my-10 text-center",
2800
2852
  ref: sentryRef
2801
- }, /*#__PURE__*/React.createElement(Spinner, null)))));
2853
+ }, /*#__PURE__*/React__default.createElement(Spinner, null)))));
2802
2854
  };
2803
2855
 
2804
- var Preview = function Preview(_ref) {
2856
+ var Preview$1 = function Preview(_ref) {
2805
2857
  var selectedTemplate = _ref.selectedTemplate,
2806
2858
  setCurrentScreen = _ref.setCurrentScreen,
2807
2859
  afterCreate = _ref.afterCreate,
@@ -2826,32 +2878,32 @@ var Preview = function Preview(_ref) {
2826
2878
  };
2827
2879
  var title = selectedTemplate.title,
2828
2880
  publicLinkId = selectedTemplate.publicLinkId;
2829
- return /*#__PURE__*/React.createElement("div", {
2881
+ return /*#__PURE__*/React__default.createElement("div", {
2830
2882
  className: "m-auto flex h-full w-full max-w-5xl flex-col space-y-8 py-20"
2831
- }, /*#__PURE__*/React.createElement("div", {
2883
+ }, /*#__PURE__*/React__default.createElement("div", {
2832
2884
  className: "flex items-center justify-between gap-6"
2833
- }, /*#__PURE__*/React.createElement("div", {
2885
+ }, /*#__PURE__*/React__default.createElement("div", {
2834
2886
  className: "flex items-center gap-2"
2835
- }, /*#__PURE__*/React.createElement(Button, {
2887
+ }, /*#__PURE__*/React__default.createElement(Button, {
2836
2888
  "data-cy": "preview-template-back-button",
2837
2889
  icon: LeftArrow,
2838
2890
  style: "text",
2839
2891
  onClick: function onClick() {
2840
2892
  return setCurrentScreen(TEMPLATE_SCREENS.LIST);
2841
2893
  }
2842
- }), /*#__PURE__*/React.createElement(Typography, {
2894
+ }), /*#__PURE__*/React__default.createElement(Typography, {
2843
2895
  className: "leading-none",
2844
2896
  "data-cy": "preview-template-title",
2845
2897
  style: "h2",
2846
2898
  weight: "semibold"
2847
- }, title)), /*#__PURE__*/React.createElement(Button, {
2899
+ }, title)), /*#__PURE__*/React__default.createElement(Button, {
2848
2900
  "data-cy": "preview-use-template-button",
2849
- label: t("neetoTemplate.v2.form.templates.editTemplate"),
2901
+ label: t("neetoTemplate.templates.editTemplate"),
2850
2902
  loading: isCreating,
2851
2903
  onClick: handleCreateTemplate
2852
- })), /*#__PURE__*/React.createElement("div", {
2853
- className: "nf-share-preview neeto-ui-rounded-sm sticky top-10"
2854
- }, /*#__PURE__*/React.createElement("iframe", {
2904
+ })), /*#__PURE__*/React__default.createElement("div", {
2905
+ className: "neeto-templates-share-preview neeto-ui-rounded-sm sticky top-10"
2906
+ }, /*#__PURE__*/React__default.createElement("iframe", {
2855
2907
  className: "w-full flex-1 shadow-inner",
2856
2908
  "data-cy": "iframe-id",
2857
2909
  src: buildUrl(PREVIEW_URL, {
@@ -2873,11 +2925,11 @@ var CreateTemplateModal = function CreateTemplateModal(_ref) {
2873
2925
  _ref$url = _ref.url,
2874
2926
  url = _ref$url === void 0 ? "" : _ref$url;
2875
2927
  var _useState = useState(TEMPLATE_SCREENS.LIST),
2876
- _useState2 = _slicedToArray(_useState, 2),
2928
+ _useState2 = _slicedToArray$1(_useState, 2),
2877
2929
  currentScreen = _useState2[0],
2878
2930
  setCurrentScreen = _useState2[1];
2879
2931
  var _useState3 = useState({}),
2880
- _useState4 = _slicedToArray(_useState3, 2),
2932
+ _useState4 = _slicedToArray$1(_useState3, 2),
2881
2933
  selectedTemplate = _useState4[0],
2882
2934
  setSelectedTemplate = _useState4[1];
2883
2935
  var onModalClose = function onModalClose() {
@@ -2887,12 +2939,12 @@ var CreateTemplateModal = function CreateTemplateModal(_ref) {
2887
2939
  }, 300); //To accommodate the animation duration.
2888
2940
  };
2889
2941
 
2890
- return /*#__PURE__*/React.createElement(Modal, {
2942
+ return /*#__PURE__*/React__default.createElement(Modal, {
2891
2943
  className: "h-screen w-screen overflow-y-auto",
2892
2944
  isOpen: isOpen,
2893
2945
  size: "fullScreen",
2894
2946
  onClose: onModalClose
2895
- }, currentScreen === TEMPLATE_SCREENS.LIST ? /*#__PURE__*/React.createElement(List, {
2947
+ }, currentScreen === TEMPLATE_SCREENS.LIST ? /*#__PURE__*/React__default.createElement(List, {
2896
2948
  setCurrentScreen: setCurrentScreen,
2897
2949
  setSelectedTemplate: setSelectedTemplate,
2898
2950
  isCreating: isCreating,
@@ -2901,7 +2953,7 @@ var CreateTemplateModal = function CreateTemplateModal(_ref) {
2901
2953
  entity: entity,
2902
2954
  resourceQueryKey: resourceQueryKey,
2903
2955
  url: url
2904
- }) : /*#__PURE__*/React.createElement(Preview, {
2956
+ }) : /*#__PURE__*/React__default.createElement(Preview$1, {
2905
2957
  selectedTemplate: selectedTemplate,
2906
2958
  setCurrentScreen: setCurrentScreen,
2907
2959
  afterCreate: afterCreate,
@@ -2910,5 +2962,1145 @@ var CreateTemplateModal = function CreateTemplateModal(_ref) {
2910
2962
  }));
2911
2963
  };
2912
2964
 
2913
- export { CreateTemplateModal as Templates };
2965
+ function _extends() {
2966
+ _extends = Object.assign ? Object.assign.bind() : function (target) {
2967
+ for (var i = 1; i < arguments.length; i++) {
2968
+ var source = arguments[i];
2969
+ for (var key in source) {
2970
+ if (Object.prototype.hasOwnProperty.call(source, key)) {
2971
+ target[key] = source[key];
2972
+ }
2973
+ }
2974
+ }
2975
+ return target;
2976
+ };
2977
+ return _extends.apply(this, arguments);
2978
+ }
2979
+
2980
+ function _arrayWithHoles(arr) {
2981
+ if (Array.isArray(arr)) return arr;
2982
+ }
2983
+
2984
+ function _iterableToArrayLimit(arr, i) {
2985
+ var _i = null == arr ? null : "undefined" != typeof Symbol && arr[Symbol.iterator] || arr["@@iterator"];
2986
+ if (null != _i) {
2987
+ var _s,
2988
+ _e,
2989
+ _x,
2990
+ _r,
2991
+ _arr = [],
2992
+ _n = !0,
2993
+ _d = !1;
2994
+ try {
2995
+ if (_x = (_i = _i.call(arr)).next, 0 === i) {
2996
+ if (Object(_i) !== _i) return;
2997
+ _n = !1;
2998
+ } else for (; !(_n = (_s = _x.call(_i)).done) && (_arr.push(_s.value), _arr.length !== i); _n = !0);
2999
+ } catch (err) {
3000
+ _d = !0, _e = err;
3001
+ } finally {
3002
+ try {
3003
+ if (!_n && null != _i["return"] && (_r = _i["return"](), Object(_r) !== _r)) return;
3004
+ } finally {
3005
+ if (_d) throw _e;
3006
+ }
3007
+ }
3008
+ return _arr;
3009
+ }
3010
+ }
3011
+
3012
+ function _arrayLikeToArray(arr, len) {
3013
+ if (len == null || len > arr.length) len = arr.length;
3014
+ for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i];
3015
+ return arr2;
3016
+ }
3017
+
3018
+ function _unsupportedIterableToArray(o, minLen) {
3019
+ if (!o) return;
3020
+ if (typeof o === "string") return _arrayLikeToArray(o, minLen);
3021
+ var n = Object.prototype.toString.call(o).slice(8, -1);
3022
+ if (n === "Object" && o.constructor) n = o.constructor.name;
3023
+ if (n === "Map" || n === "Set") return Array.from(o);
3024
+ if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen);
3025
+ }
3026
+
3027
+ function _nonIterableRest() {
3028
+ throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.");
3029
+ }
3030
+
3031
+ function _slicedToArray(arr, i) {
3032
+ return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest();
3033
+ }
3034
+
3035
+ var e=[],t=[];function n(n,r){if(n&&"undefined"!=typeof document){var a,s=!0===r.prepend?"prepend":"append",d=!0===r.singleTag,i="string"==typeof r.container?document.querySelector(r.container):document.getElementsByTagName("head")[0];if(d){var u=e.indexOf(i);-1===u&&(u=e.push(i)-1,t[u]={}),a=t[u]&&t[u][s]?t[u][s]:t[u][s]=c();}else a=c();65279===n.charCodeAt(0)&&(n=n.substring(1)),a.styleSheet?a.styleSheet.cssText+=n:a.appendChild(document.createTextNode(n));}function c(){var e=document.createElement("style");if(e.setAttribute("type","text/css"),r.attributes)for(var t=Object.keys(r.attributes),n=0;n<t.length;n++)e.setAttribute(t[n],r.attributes[t[n]]);var a="prepend"===s?"afterbegin":"beforeend";return i.insertAdjacentElement(a,e),e}}
3036
+
3037
+ var css$1 = ".neeto-chat__metadata-card__spinner{scale:.6}";
3038
+ n(css$1,{});
3039
+
3040
+ var Title = function Title(_ref) {
3041
+ var _ref$titleProps = _ref.titleProps,
3042
+ titleProps = _ref$titleProps === void 0 ? {} : _ref$titleProps,
3043
+ title = _ref.title,
3044
+ isUpdating = _ref.isUpdating,
3045
+ setIsTagsDropdownVisible = _ref.setIsTagsDropdownVisible,
3046
+ showAddTagsOnTitle = _ref.showAddTagsOnTitle;
3047
+ var _useTranslation = useTranslation(),
3048
+ t = _useTranslation.t;
3049
+ var tagsTitle = title || t("neetoTags.common.tag", PLURAL);
3050
+ var _useState = useState(false),
3051
+ _useState2 = _slicedToArray(_useState, 2),
3052
+ didStartUpdate = _useState2[0],
3053
+ setDidStartUpdate = _useState2[1];
3054
+ var _useState3 = useState(false),
3055
+ _useState4 = _slicedToArray(_useState3, 2),
3056
+ isCheckIconVisible = _useState4[0],
3057
+ setIsCheckIconVisible = _useState4[1];
3058
+ useEffect(function () {
3059
+ if (!isUpdating) return;
3060
+ setDidStartUpdate(true);
3061
+ }, [isUpdating]);
3062
+ useEffect(function () {
3063
+ if (isUpdating || !didStartUpdate) return;
3064
+ setIsCheckIconVisible(true);
3065
+ setDidStartUpdate(false);
3066
+ setTimeout(function () {
3067
+ setIsCheckIconVisible(false);
3068
+ }, 5000);
3069
+ }, [didStartUpdate, isUpdating]);
3070
+ return /*#__PURE__*/React__default.createElement("div", {
3071
+ className: "mb-2 flex w-full items-center justify-between gap-2"
3072
+ }, /*#__PURE__*/React__default.createElement("div", {
3073
+ className: "flex items-center gap-2"
3074
+ }, /*#__PURE__*/React__default.createElement(Typography, _extends({
3075
+ className: "neeto-ui-text-gray-700",
3076
+ style: "h5",
3077
+ weight: "bold"
3078
+ }, titleProps), tagsTitle), /*#__PURE__*/React__default.createElement("div", {
3079
+ className: "inline-flex h-6 items-center"
3080
+ }, isUpdating && /*#__PURE__*/React__default.createElement(Spinner, {
3081
+ className: "neeto-chat__metadata-card__spinner"
3082
+ }), !isUpdating && isCheckIconVisible && /*#__PURE__*/React__default.createElement(Check, {
3083
+ className: "neeto-ui-text-success-500",
3084
+ size: 20
3085
+ }))), showAddTagsOnTitle && /*#__PURE__*/React__default.createElement(Button, {
3086
+ icon: Settings,
3087
+ size: "15",
3088
+ style: "icon",
3089
+ onClick: function onClick() {
3090
+ return setIsTagsDropdownVisible(function (addTag) {
3091
+ return not(addTag);
3092
+ });
3093
+ }
3094
+ }));
3095
+ };
3096
+
3097
+ /**
3098
+ * A component that helps to manage tags.
3099
+ * Renders selected tags, has dropdown to list down available tags
3100
+ * and allows user to remove tags from the list.
3101
+ */
3102
+ var Tags$2 = function Tags(_ref) {
3103
+ var _ref$title = _ref.title,
3104
+ title = _ref$title === void 0 ? "" : _ref$title,
3105
+ allTags = _ref.allTags,
3106
+ selectedTags = _ref.selectedTags,
3107
+ onTagSelect = _ref.onTagSelect,
3108
+ onTagCreate = _ref.onTagCreate,
3109
+ onTagDelete = _ref.onTagDelete,
3110
+ tagProps = _ref.tagProps,
3111
+ selectProps = _ref.selectProps,
3112
+ buttonProps = _ref.buttonProps,
3113
+ _ref$showSuccessToast = _ref.showSuccessToastr,
3114
+ showSuccessToastr = _ref$showSuccessToast === void 0 ? false : _ref$showSuccessToast,
3115
+ titleProps = _ref.titleProps,
3116
+ _ref$containerProps = _ref.containerProps,
3117
+ containerProps = _ref$containerProps === void 0 ? {} : _ref$containerProps,
3118
+ _ref$isUpdating = _ref.isUpdating,
3119
+ isUpdating = _ref$isUpdating === void 0 ? false : _ref$isUpdating,
3120
+ _ref$showAddTagsOnTit = _ref.showAddTagsOnTitle,
3121
+ showAddTagsOnTitle = _ref$showAddTagsOnTit === void 0 ? true : _ref$showAddTagsOnTit,
3122
+ _ref$showTitleBar = _ref.showTitleBar,
3123
+ showTitleBar = _ref$showTitleBar === void 0 ? true : _ref$showTitleBar,
3124
+ _ref$bodyProps = _ref.bodyProps,
3125
+ bodyProps = _ref$bodyProps === void 0 ? {} : _ref$bodyProps;
3126
+ var _useTranslation = useTranslation(),
3127
+ t = _useTranslation.t;
3128
+ var _useState = useState(false),
3129
+ _useState2 = _slicedToArray(_useState, 2),
3130
+ isTagsDropdownVisible = _useState2[0],
3131
+ setIsTagsDropdownVisible = _useState2[1];
3132
+ var tags = useMemo(function () {
3133
+ if (!allTags) return [];
3134
+ if (!selectedTags) return allTags;
3135
+ var selectedTagValues = pluck("value", selectedTags);
3136
+ return allTags.filter(function (_ref2) {
3137
+ var value = _ref2.value;
3138
+ return !selectedTagValues.includes(value);
3139
+ });
3140
+ }, [allTags, selectedTags]);
3141
+ var handleAddExistingTag = function handleAddExistingTag(event) {
3142
+ setIsTagsDropdownVisible(false);
3143
+ onTagSelect(event);
3144
+ // @ts-ignore
3145
+ showSuccessToastr && Toastr.success("", {
3146
+ icon: "👍",
3147
+ className: "w-20"
3148
+ });
3149
+ };
3150
+ var handleDeleteTag = function handleDeleteTag(tag) {
3151
+ onTagDelete(tag);
3152
+ // @ts-ignore
3153
+ showSuccessToastr && Toastr.success("", {
3154
+ icon: "👍",
3155
+ className: "w-20"
3156
+ });
3157
+ };
3158
+ var isAddTagsButtonVisible = !showAddTagsOnTitle && !isTagsDropdownVisible;
3159
+ var isTagsBodyVisible = isNotEmpty(selectedTags) || isTagsDropdownVisible || isAddTagsButtonVisible;
3160
+ return /*#__PURE__*/React__default.createElement("div", _extends({
3161
+ className: "neeto-ui-tags-wrapper flex w-full flex-col items-start"
3162
+ }, containerProps), showTitleBar && /*#__PURE__*/React__default.createElement(Title, {
3163
+ isUpdating: isUpdating,
3164
+ setIsTagsDropdownVisible: setIsTagsDropdownVisible,
3165
+ showAddTagsOnTitle: showAddTagsOnTitle,
3166
+ title: title,
3167
+ titleProps: titleProps
3168
+ }), isTagsBodyVisible && /*#__PURE__*/React__default.createElement("div", _extends({
3169
+ className: "neeto-ui-bg-white neeto-ui-border-gray-300 neeto-ui-rounded-lg w-full border p-4"
3170
+ }, bodyProps), isNotEmpty(selectedTags) && /*#__PURE__*/React__default.createElement("div", {
3171
+ className: "neeto-ui-flex neeto-ui-flex-row neeto-ui-flex-wrap neeto-ui-items-start neeto-ui-justify-start gap-2 break-all"
3172
+ }, selectedTags === null || selectedTags === void 0 ? void 0 : selectedTags.map(function (tag, index) {
3173
+ return /*#__PURE__*/React__default.createElement(Tag, _extends({
3174
+ key: "".concat(index, "-").concat(tag.label),
3175
+ label: tag.label,
3176
+ style: "primary",
3177
+ onClose: function onClose() {
3178
+ return handleDeleteTag(tag);
3179
+ }
3180
+ }, tagProps));
3181
+ })), isTagsDropdownVisible && /*#__PURE__*/React__default.createElement(Select, _extends({
3182
+ autoFocus: true,
3183
+ isCreateable: true,
3184
+ className: "neeto-ui-mt-4",
3185
+ maxLength: 50,
3186
+ options: tags,
3187
+ placeholder: t("neetoTags.placeholder.selectOrCreateTag"),
3188
+ onChange: function onChange(event) {
3189
+ return handleAddExistingTag(event);
3190
+ },
3191
+ onCreateOption: function onCreateOption(event) {
3192
+ setIsTagsDropdownVisible(false);
3193
+ onTagCreate(event);
3194
+ }
3195
+ }, selectProps)), isAddTagsButtonVisible && /*#__PURE__*/React__default.createElement(Button, _extends({
3196
+ icon: Plus,
3197
+ label: t("neetoTags.button.addTag", SINGULAR),
3198
+ size: "small",
3199
+ style: "link",
3200
+ onClick: function onClick() {
3201
+ return setIsTagsDropdownVisible(true);
3202
+ }
3203
+ }, buttonProps))));
3204
+ };
3205
+
3206
+ var queryClient = new QueryClient({
3207
+ queryCache: new QueryCache({
3208
+ onError: function onError(error) {
3209
+ return Toastr.error(error);
3210
+ }
3211
+ })
3212
+ });
3213
+
3214
+ var TAG_KEY = "tag-key";
3215
+ var refetchTags = function refetchTags() {
3216
+ return queryClient.invalidateQueries([TAG_KEY]);
3217
+ };
3218
+
3219
+ ({
3220
+ "data-cy": "add-new-tag-button",
3221
+ label: t$1("neetoTags.common.addNewTag", SINGULAR)
3222
+ });
3223
+ var TAG_NAME_MAX_LENGTH = 50;
3224
+ var TAG_DESCRIPTION_MAX_LENGTH = 255;
3225
+ yup.object().shape({
3226
+ name: yup.string().typeError(t$1("neetoTags.validation.nameMustBeString")).required(t$1("neetoTags.validation.nameRequired")).max(TAG_NAME_MAX_LENGTH, t$1("neetoTags.validation.nameMaxLength", {
3227
+ length: TAG_NAME_MAX_LENGTH
3228
+ })),
3229
+ description: yup.string().typeError(t$1("neetoTags.validation.descriptionMustBeString")).nullable().max(TAG_DESCRIPTION_MAX_LENGTH, t$1("neetoTags.validation.descriptionMaxLength", {
3230
+ length: TAG_DESCRIPTION_MAX_LENGTH
3231
+ }))
3232
+ });
3233
+
3234
+ Dropdown.Menu;
3235
+ Dropdown.MenuItem;
3236
+
3237
+ ({
3238
+ "data-cy": "neeto-tags-go-back-button",
3239
+ size: "small",
3240
+ label: t$1("neetoTags.button.goBack")
3241
+ });
3242
+
3243
+ var commonjsGlobal = typeof globalThis !== 'undefined' ? globalThis : typeof window !== 'undefined' ? window : typeof global !== 'undefined' ? global : typeof self !== 'undefined' ? self : {};
3244
+
3245
+ function getDefaultExportFromCjs (x) {
3246
+ return x && x.__esModule && Object.prototype.hasOwnProperty.call(x, 'default') ? x['default'] : x;
3247
+ }
3248
+
3249
+ function commonjsRequire(path) {
3250
+ throw new Error('Could not dynamically require "' + path + '". Please configure the dynamicRequireTargets or/and ignoreDynamicRequires option of @rollup/plugin-commonjs appropriately for this require call to work.');
3251
+ }
3252
+
3253
+ var pluralize$1 = {exports: {}};
3254
+
3255
+ /* global define */
3256
+ pluralize$1.exports;
3257
+
3258
+ (function (module, exports) {
3259
+ (function (root, pluralize) {
3260
+ /* istanbul ignore else */
3261
+ if (typeof commonjsRequire === 'function' && 'object' === 'object' && 'object' === 'object') {
3262
+ // Node.
3263
+ module.exports = pluralize();
3264
+ } else {
3265
+ // Browser global.
3266
+ root.pluralize = pluralize();
3267
+ }
3268
+ })(commonjsGlobal, function () {
3269
+ // Rule storage - pluralize and singularize need to be run sequentially,
3270
+ // while other rules can be optimized using an object for instant lookups.
3271
+ var pluralRules = [];
3272
+ var singularRules = [];
3273
+ var uncountables = {};
3274
+ var irregularPlurals = {};
3275
+ var irregularSingles = {};
3276
+
3277
+ /**
3278
+ * Sanitize a pluralization rule to a usable regular expression.
3279
+ *
3280
+ * @param {(RegExp|string)} rule
3281
+ * @return {RegExp}
3282
+ */
3283
+ function sanitizeRule (rule) {
3284
+ if (typeof rule === 'string') {
3285
+ return new RegExp('^' + rule + '$', 'i');
3286
+ }
3287
+
3288
+ return rule;
3289
+ }
3290
+
3291
+ /**
3292
+ * Pass in a word token to produce a function that can replicate the case on
3293
+ * another word.
3294
+ *
3295
+ * @param {string} word
3296
+ * @param {string} token
3297
+ * @return {Function}
3298
+ */
3299
+ function restoreCase (word, token) {
3300
+ // Tokens are an exact match.
3301
+ if (word === token) return token;
3302
+
3303
+ // Lower cased words. E.g. "hello".
3304
+ if (word === word.toLowerCase()) return token.toLowerCase();
3305
+
3306
+ // Upper cased words. E.g. "WHISKY".
3307
+ if (word === word.toUpperCase()) return token.toUpperCase();
3308
+
3309
+ // Title cased words. E.g. "Title".
3310
+ if (word[0] === word[0].toUpperCase()) {
3311
+ return token.charAt(0).toUpperCase() + token.substr(1).toLowerCase();
3312
+ }
3313
+
3314
+ // Lower cased words. E.g. "test".
3315
+ return token.toLowerCase();
3316
+ }
3317
+
3318
+ /**
3319
+ * Interpolate a regexp string.
3320
+ *
3321
+ * @param {string} str
3322
+ * @param {Array} args
3323
+ * @return {string}
3324
+ */
3325
+ function interpolate (str, args) {
3326
+ return str.replace(/\$(\d{1,2})/g, function (match, index) {
3327
+ return args[index] || '';
3328
+ });
3329
+ }
3330
+
3331
+ /**
3332
+ * Replace a word using a rule.
3333
+ *
3334
+ * @param {string} word
3335
+ * @param {Array} rule
3336
+ * @return {string}
3337
+ */
3338
+ function replace (word, rule) {
3339
+ return word.replace(rule[0], function (match, index) {
3340
+ var result = interpolate(rule[1], arguments);
3341
+
3342
+ if (match === '') {
3343
+ return restoreCase(word[index - 1], result);
3344
+ }
3345
+
3346
+ return restoreCase(match, result);
3347
+ });
3348
+ }
3349
+
3350
+ /**
3351
+ * Sanitize a word by passing in the word and sanitization rules.
3352
+ *
3353
+ * @param {string} token
3354
+ * @param {string} word
3355
+ * @param {Array} rules
3356
+ * @return {string}
3357
+ */
3358
+ function sanitizeWord (token, word, rules) {
3359
+ // Empty string or doesn't need fixing.
3360
+ if (!token.length || uncountables.hasOwnProperty(token)) {
3361
+ return word;
3362
+ }
3363
+
3364
+ var len = rules.length;
3365
+
3366
+ // Iterate over the sanitization rules and use the first one to match.
3367
+ while (len--) {
3368
+ var rule = rules[len];
3369
+
3370
+ if (rule[0].test(word)) return replace(word, rule);
3371
+ }
3372
+
3373
+ return word;
3374
+ }
3375
+
3376
+ /**
3377
+ * Replace a word with the updated word.
3378
+ *
3379
+ * @param {Object} replaceMap
3380
+ * @param {Object} keepMap
3381
+ * @param {Array} rules
3382
+ * @return {Function}
3383
+ */
3384
+ function replaceWord (replaceMap, keepMap, rules) {
3385
+ return function (word) {
3386
+ // Get the correct token and case restoration functions.
3387
+ var token = word.toLowerCase();
3388
+
3389
+ // Check against the keep object map.
3390
+ if (keepMap.hasOwnProperty(token)) {
3391
+ return restoreCase(word, token);
3392
+ }
3393
+
3394
+ // Check against the replacement map for a direct word replacement.
3395
+ if (replaceMap.hasOwnProperty(token)) {
3396
+ return restoreCase(word, replaceMap[token]);
3397
+ }
3398
+
3399
+ // Run all the rules against the word.
3400
+ return sanitizeWord(token, word, rules);
3401
+ };
3402
+ }
3403
+
3404
+ /**
3405
+ * Check if a word is part of the map.
3406
+ */
3407
+ function checkWord (replaceMap, keepMap, rules, bool) {
3408
+ return function (word) {
3409
+ var token = word.toLowerCase();
3410
+
3411
+ if (keepMap.hasOwnProperty(token)) return true;
3412
+ if (replaceMap.hasOwnProperty(token)) return false;
3413
+
3414
+ return sanitizeWord(token, token, rules) === token;
3415
+ };
3416
+ }
3417
+
3418
+ /**
3419
+ * Pluralize or singularize a word based on the passed in count.
3420
+ *
3421
+ * @param {string} word The word to pluralize
3422
+ * @param {number} count How many of the word exist
3423
+ * @param {boolean} inclusive Whether to prefix with the number (e.g. 3 ducks)
3424
+ * @return {string}
3425
+ */
3426
+ function pluralize (word, count, inclusive) {
3427
+ var pluralized = count === 1
3428
+ ? pluralize.singular(word) : pluralize.plural(word);
3429
+
3430
+ return (inclusive ? count + ' ' : '') + pluralized;
3431
+ }
3432
+
3433
+ /**
3434
+ * Pluralize a word.
3435
+ *
3436
+ * @type {Function}
3437
+ */
3438
+ pluralize.plural = replaceWord(
3439
+ irregularSingles, irregularPlurals, pluralRules
3440
+ );
3441
+
3442
+ /**
3443
+ * Check if a word is plural.
3444
+ *
3445
+ * @type {Function}
3446
+ */
3447
+ pluralize.isPlural = checkWord(
3448
+ irregularSingles, irregularPlurals, pluralRules
3449
+ );
3450
+
3451
+ /**
3452
+ * Singularize a word.
3453
+ *
3454
+ * @type {Function}
3455
+ */
3456
+ pluralize.singular = replaceWord(
3457
+ irregularPlurals, irregularSingles, singularRules
3458
+ );
3459
+
3460
+ /**
3461
+ * Check if a word is singular.
3462
+ *
3463
+ * @type {Function}
3464
+ */
3465
+ pluralize.isSingular = checkWord(
3466
+ irregularPlurals, irregularSingles, singularRules
3467
+ );
3468
+
3469
+ /**
3470
+ * Add a pluralization rule to the collection.
3471
+ *
3472
+ * @param {(string|RegExp)} rule
3473
+ * @param {string} replacement
3474
+ */
3475
+ pluralize.addPluralRule = function (rule, replacement) {
3476
+ pluralRules.push([sanitizeRule(rule), replacement]);
3477
+ };
3478
+
3479
+ /**
3480
+ * Add a singularization rule to the collection.
3481
+ *
3482
+ * @param {(string|RegExp)} rule
3483
+ * @param {string} replacement
3484
+ */
3485
+ pluralize.addSingularRule = function (rule, replacement) {
3486
+ singularRules.push([sanitizeRule(rule), replacement]);
3487
+ };
3488
+
3489
+ /**
3490
+ * Add an uncountable word rule.
3491
+ *
3492
+ * @param {(string|RegExp)} word
3493
+ */
3494
+ pluralize.addUncountableRule = function (word) {
3495
+ if (typeof word === 'string') {
3496
+ uncountables[word.toLowerCase()] = true;
3497
+ return;
3498
+ }
3499
+
3500
+ // Set singular and plural references for the word.
3501
+ pluralize.addPluralRule(word, '$0');
3502
+ pluralize.addSingularRule(word, '$0');
3503
+ };
3504
+
3505
+ /**
3506
+ * Add an irregular word definition.
3507
+ *
3508
+ * @param {string} single
3509
+ * @param {string} plural
3510
+ */
3511
+ pluralize.addIrregularRule = function (single, plural) {
3512
+ plural = plural.toLowerCase();
3513
+ single = single.toLowerCase();
3514
+
3515
+ irregularSingles[single] = plural;
3516
+ irregularPlurals[plural] = single;
3517
+ };
3518
+
3519
+ /**
3520
+ * Irregular rules.
3521
+ */
3522
+ [
3523
+ // Pronouns.
3524
+ ['I', 'we'],
3525
+ ['me', 'us'],
3526
+ ['he', 'they'],
3527
+ ['she', 'they'],
3528
+ ['them', 'them'],
3529
+ ['myself', 'ourselves'],
3530
+ ['yourself', 'yourselves'],
3531
+ ['itself', 'themselves'],
3532
+ ['herself', 'themselves'],
3533
+ ['himself', 'themselves'],
3534
+ ['themself', 'themselves'],
3535
+ ['is', 'are'],
3536
+ ['was', 'were'],
3537
+ ['has', 'have'],
3538
+ ['this', 'these'],
3539
+ ['that', 'those'],
3540
+ // Words ending in with a consonant and `o`.
3541
+ ['echo', 'echoes'],
3542
+ ['dingo', 'dingoes'],
3543
+ ['volcano', 'volcanoes'],
3544
+ ['tornado', 'tornadoes'],
3545
+ ['torpedo', 'torpedoes'],
3546
+ // Ends with `us`.
3547
+ ['genus', 'genera'],
3548
+ ['viscus', 'viscera'],
3549
+ // Ends with `ma`.
3550
+ ['stigma', 'stigmata'],
3551
+ ['stoma', 'stomata'],
3552
+ ['dogma', 'dogmata'],
3553
+ ['lemma', 'lemmata'],
3554
+ ['schema', 'schemata'],
3555
+ ['anathema', 'anathemata'],
3556
+ // Other irregular rules.
3557
+ ['ox', 'oxen'],
3558
+ ['axe', 'axes'],
3559
+ ['die', 'dice'],
3560
+ ['yes', 'yeses'],
3561
+ ['foot', 'feet'],
3562
+ ['eave', 'eaves'],
3563
+ ['goose', 'geese'],
3564
+ ['tooth', 'teeth'],
3565
+ ['quiz', 'quizzes'],
3566
+ ['human', 'humans'],
3567
+ ['proof', 'proofs'],
3568
+ ['carve', 'carves'],
3569
+ ['valve', 'valves'],
3570
+ ['looey', 'looies'],
3571
+ ['thief', 'thieves'],
3572
+ ['groove', 'grooves'],
3573
+ ['pickaxe', 'pickaxes'],
3574
+ ['passerby', 'passersby']
3575
+ ].forEach(function (rule) {
3576
+ return pluralize.addIrregularRule(rule[0], rule[1]);
3577
+ });
3578
+
3579
+ /**
3580
+ * Pluralization rules.
3581
+ */
3582
+ [
3583
+ [/s?$/i, 's'],
3584
+ [/[^\u0000-\u007F]$/i, '$0'],
3585
+ [/([^aeiou]ese)$/i, '$1'],
3586
+ [/(ax|test)is$/i, '$1es'],
3587
+ [/(alias|[^aou]us|t[lm]as|gas|ris)$/i, '$1es'],
3588
+ [/(e[mn]u)s?$/i, '$1s'],
3589
+ [/([^l]ias|[aeiou]las|[ejzr]as|[iu]am)$/i, '$1'],
3590
+ [/(alumn|syllab|vir|radi|nucle|fung|cact|stimul|termin|bacill|foc|uter|loc|strat)(?:us|i)$/i, '$1i'],
3591
+ [/(alumn|alg|vertebr)(?:a|ae)$/i, '$1ae'],
3592
+ [/(seraph|cherub)(?:im)?$/i, '$1im'],
3593
+ [/(her|at|gr)o$/i, '$1oes'],
3594
+ [/(agend|addend|millenni|dat|extrem|bacteri|desiderat|strat|candelabr|errat|ov|symposi|curricul|automat|quor)(?:a|um)$/i, '$1a'],
3595
+ [/(apheli|hyperbat|periheli|asyndet|noumen|phenomen|criteri|organ|prolegomen|hedr|automat)(?:a|on)$/i, '$1a'],
3596
+ [/sis$/i, 'ses'],
3597
+ [/(?:(kni|wi|li)fe|(ar|l|ea|eo|oa|hoo)f)$/i, '$1$2ves'],
3598
+ [/([^aeiouy]|qu)y$/i, '$1ies'],
3599
+ [/([^ch][ieo][ln])ey$/i, '$1ies'],
3600
+ [/(x|ch|ss|sh|zz)$/i, '$1es'],
3601
+ [/(matr|cod|mur|sil|vert|ind|append)(?:ix|ex)$/i, '$1ices'],
3602
+ [/\b((?:tit)?m|l)(?:ice|ouse)$/i, '$1ice'],
3603
+ [/(pe)(?:rson|ople)$/i, '$1ople'],
3604
+ [/(child)(?:ren)?$/i, '$1ren'],
3605
+ [/eaux$/i, '$0'],
3606
+ [/m[ae]n$/i, 'men'],
3607
+ ['thou', 'you']
3608
+ ].forEach(function (rule) {
3609
+ return pluralize.addPluralRule(rule[0], rule[1]);
3610
+ });
3611
+
3612
+ /**
3613
+ * Singularization rules.
3614
+ */
3615
+ [
3616
+ [/s$/i, ''],
3617
+ [/(ss)$/i, '$1'],
3618
+ [/(wi|kni|(?:after|half|high|low|mid|non|night|[^\w]|^)li)ves$/i, '$1fe'],
3619
+ [/(ar|(?:wo|[ae])l|[eo][ao])ves$/i, '$1f'],
3620
+ [/ies$/i, 'y'],
3621
+ [/\b([pl]|zomb|(?:neck|cross)?t|coll|faer|food|gen|goon|group|lass|talk|goal|cut)ies$/i, '$1ie'],
3622
+ [/\b(mon|smil)ies$/i, '$1ey'],
3623
+ [/\b((?:tit)?m|l)ice$/i, '$1ouse'],
3624
+ [/(seraph|cherub)im$/i, '$1'],
3625
+ [/(x|ch|ss|sh|zz|tto|go|cho|alias|[^aou]us|t[lm]as|gas|(?:her|at|gr)o|[aeiou]ris)(?:es)?$/i, '$1'],
3626
+ [/(analy|diagno|parenthe|progno|synop|the|empha|cri|ne)(?:sis|ses)$/i, '$1sis'],
3627
+ [/(movie|twelve|abuse|e[mn]u)s$/i, '$1'],
3628
+ [/(test)(?:is|es)$/i, '$1is'],
3629
+ [/(alumn|syllab|vir|radi|nucle|fung|cact|stimul|termin|bacill|foc|uter|loc|strat)(?:us|i)$/i, '$1us'],
3630
+ [/(agend|addend|millenni|dat|extrem|bacteri|desiderat|strat|candelabr|errat|ov|symposi|curricul|quor)a$/i, '$1um'],
3631
+ [/(apheli|hyperbat|periheli|asyndet|noumen|phenomen|criteri|organ|prolegomen|hedr|automat)a$/i, '$1on'],
3632
+ [/(alumn|alg|vertebr)ae$/i, '$1a'],
3633
+ [/(cod|mur|sil|vert|ind)ices$/i, '$1ex'],
3634
+ [/(matr|append)ices$/i, '$1ix'],
3635
+ [/(pe)(rson|ople)$/i, '$1rson'],
3636
+ [/(child)ren$/i, '$1'],
3637
+ [/(eau)x?$/i, '$1'],
3638
+ [/men$/i, 'man']
3639
+ ].forEach(function (rule) {
3640
+ return pluralize.addSingularRule(rule[0], rule[1]);
3641
+ });
3642
+
3643
+ /**
3644
+ * Uncountable rules.
3645
+ */
3646
+ [
3647
+ // Singular words with no plurals.
3648
+ 'adulthood',
3649
+ 'advice',
3650
+ 'agenda',
3651
+ 'aid',
3652
+ 'aircraft',
3653
+ 'alcohol',
3654
+ 'ammo',
3655
+ 'analytics',
3656
+ 'anime',
3657
+ 'athletics',
3658
+ 'audio',
3659
+ 'bison',
3660
+ 'blood',
3661
+ 'bream',
3662
+ 'buffalo',
3663
+ 'butter',
3664
+ 'carp',
3665
+ 'cash',
3666
+ 'chassis',
3667
+ 'chess',
3668
+ 'clothing',
3669
+ 'cod',
3670
+ 'commerce',
3671
+ 'cooperation',
3672
+ 'corps',
3673
+ 'debris',
3674
+ 'diabetes',
3675
+ 'digestion',
3676
+ 'elk',
3677
+ 'energy',
3678
+ 'equipment',
3679
+ 'excretion',
3680
+ 'expertise',
3681
+ 'firmware',
3682
+ 'flounder',
3683
+ 'fun',
3684
+ 'gallows',
3685
+ 'garbage',
3686
+ 'graffiti',
3687
+ 'hardware',
3688
+ 'headquarters',
3689
+ 'health',
3690
+ 'herpes',
3691
+ 'highjinks',
3692
+ 'homework',
3693
+ 'housework',
3694
+ 'information',
3695
+ 'jeans',
3696
+ 'justice',
3697
+ 'kudos',
3698
+ 'labour',
3699
+ 'literature',
3700
+ 'machinery',
3701
+ 'mackerel',
3702
+ 'mail',
3703
+ 'media',
3704
+ 'mews',
3705
+ 'moose',
3706
+ 'music',
3707
+ 'mud',
3708
+ 'manga',
3709
+ 'news',
3710
+ 'only',
3711
+ 'personnel',
3712
+ 'pike',
3713
+ 'plankton',
3714
+ 'pliers',
3715
+ 'police',
3716
+ 'pollution',
3717
+ 'premises',
3718
+ 'rain',
3719
+ 'research',
3720
+ 'rice',
3721
+ 'salmon',
3722
+ 'scissors',
3723
+ 'series',
3724
+ 'sewage',
3725
+ 'shambles',
3726
+ 'shrimp',
3727
+ 'software',
3728
+ 'species',
3729
+ 'staff',
3730
+ 'swine',
3731
+ 'tennis',
3732
+ 'traffic',
3733
+ 'transportation',
3734
+ 'trout',
3735
+ 'tuna',
3736
+ 'wealth',
3737
+ 'welfare',
3738
+ 'whiting',
3739
+ 'wildebeest',
3740
+ 'wildlife',
3741
+ 'you',
3742
+ /pok[eé]mon$/i,
3743
+ // Regexes.
3744
+ /[^aeiou]ese$/i, // "chinese", "japanese"
3745
+ /deer$/i, // "deer", "reindeer"
3746
+ /fish$/i, // "fish", "blowfish", "angelfish"
3747
+ /measles$/i,
3748
+ /o[iu]s$/i, // "carnivorous"
3749
+ /pox$/i, // "chickpox", "smallpox"
3750
+ /sheep$/i
3751
+ ].forEach(pluralize.addUncountableRule);
3752
+
3753
+ return pluralize;
3754
+ });
3755
+ } (pluralize$1, pluralize$1.exports));
3756
+
3757
+ var pluralizeExports = pluralize$1.exports;
3758
+ var pluralize = /*@__PURE__*/getDefaultExportFromCjs(pluralizeExports);
3759
+
3760
+ withT(function (_ref) {
3761
+ var t = _ref.t,
3762
+ _ref$destinationTags = _ref.destinationTags,
3763
+ destinationTags = _ref$destinationTags === void 0 ? [] : _ref$destinationTags,
3764
+ handleSubmit = _ref.handleSubmit,
3765
+ _ref$isSubmitting = _ref.isSubmitting,
3766
+ isSubmitting = _ref$isSubmitting === void 0 ? false : _ref$isSubmitting,
3767
+ setShowModal = _ref.setShowModal,
3768
+ _ref$showModal = _ref.showModal,
3769
+ showModal = _ref$showModal === void 0 ? false : _ref$showModal,
3770
+ _ref$sourceTags = _ref.sourceTags,
3771
+ sourceTags = _ref$sourceTags === void 0 ? [] : _ref$sourceTags,
3772
+ _ref$tagType = _ref.tagType,
3773
+ tagType = _ref$tagType === void 0 ? "" : _ref$tagType;
3774
+ return /*#__PURE__*/React__default.createElement(Modal, {
3775
+ isOpen: showModal,
3776
+ onClose: function onClose() {
3777
+ return setShowModal(false);
3778
+ }
3779
+ }, /*#__PURE__*/React__default.createElement(Modal.Header, null, /*#__PURE__*/React__default.createElement(Typography, {
3780
+ id: "dialog1Title",
3781
+ style: "h2"
3782
+ }, t("neetoTags.common.mergeTag", PLURAL))), /*#__PURE__*/React__default.createElement(Modal.Body, null, /*#__PURE__*/React__default.createElement(Typography, {
3783
+ lineHeight: "normal",
3784
+ style: "body2"
3785
+ }, /*#__PURE__*/React__default.createElement(Trans, {
3786
+ i18nKey: "neetoTags.helper.mergeTagsMessage",
3787
+ values: {
3788
+ count: sourceTags.length,
3789
+ sourceTags: pluck("name", sourceTags),
3790
+ destinationTag: pluck("name", destinationTags),
3791
+ entities: pluralize(tagType.label.toLowerCase())
3792
+ }
3793
+ }))), /*#__PURE__*/React__default.createElement(Modal.Footer, {
3794
+ className: "space-x-2"
3795
+ }, /*#__PURE__*/React__default.createElement(Button, {
3796
+ "data-cy": "neeto-tags-merge-proceed-button",
3797
+ disabled: isSubmitting,
3798
+ label: t("neetoTags.button.proceed"),
3799
+ loading: isSubmitting,
3800
+ onClick: handleSubmit
3801
+ }), /*#__PURE__*/React__default.createElement(Button, {
3802
+ "data-cy": "neeto-tags-merge-cancel-button",
3803
+ label: t("neetoTags.button.cancel"),
3804
+ style: "text",
3805
+ onClick: function onClick() {
3806
+ return setShowModal(false);
3807
+ }
3808
+ })));
3809
+ });
3810
+
3811
+ var css = ".neeto-tags-border{border-width:thin}.ntm-empty-state{height:100%;margin:auto;width:100%}.ntm-empty-state,.ntm-empty-state__image{align-items:center;display:flex;justify-content:center}.ntm-empty-state__image{margin-left:0 auto 4rem auto}.ntm-empty-state__title{font-size:1.25rem;line-height:1.75rem;margin-bottom:1rem;text-align:center}.ntm-empty-state__description{margin-bottom:1.5rem;text-align:center}.ntm-empty-state__action-block{display:flex;justify-content:center}.neeto-tags-table__wrapper{height:calc(100vh - var(--neeto-molecules-main-header-with-breadcrumbs-height) - var(--neeto-molecules-sub-header-height) - var(--neeto-molecules-sub-header-bottom-margin));padding:0 24px;width:100%}.neeto-tags-table__column{align-items:center;display:flex;gap:.5rem;justify-content:space-between}.neeto-tags-merge__wrapper{height:calc(100vh - var(--neeto-molecules-main-header-with-breadcrumbs-height));margin:0 auto;max-width:1200px;padding:0 24px 24px;width:100%}.neeto-tags-merge__wrapper .neeto-tags-merge__container{display:flex;flex-direction:row;height:100%;justify-content:space-between;width:100%}.neeto-tags-merge__wrapper .neeto-tags-merge__container .neeto-tags-merge__list{width:48%}.neeto-tags-merge__wrapper .neeto-tags-merge__container .neeto-tags-merge__list .neeto-tags-merge__items{height:calc(100vh - var(--neeto-molecules-main-header-height) - 120px);overflow-y:auto;padding-top:16px}";
3812
+ n(css,{});
3813
+
3814
+ var NEETO_TEMPLATES_URL = "/neeto_templates_engine/api/v1";
3815
+ var TEMPLATE_TAGS_URL = "".concat(NEETO_TEMPLATES_URL, "/tags/template_tags");
3816
+
3817
+ var create = function create(payload) {
3818
+ return axios.post(TEMPLATE_TAGS_URL, {
3819
+ tag: payload
3820
+ });
3821
+ };
3822
+ var list = function list() {
3823
+ return axios.get(TEMPLATE_TAGS_URL);
3824
+ };
3825
+ var templateTagsApi = {
3826
+ create: create,
3827
+ list: list
3828
+ };
3829
+
3830
+ function ownKeys$1(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
3831
+ function _objectSpread$1(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys$1(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys$1(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
3832
+ var useCreateTemplateTag = function useCreateTemplateTag(options) {
3833
+ var queryClient = useQueryClient();
3834
+ return useMutation(templateTagsApi.create, _objectSpread$1(_objectSpread$1({}, options), {}, {
3835
+ onSuccess: function onSuccess() {
3836
+ var _options$onSuccess;
3837
+ refetchTags();
3838
+ queryClient.invalidateQueries(QUERY_KEYS.TEMPLATE_TAGS);
3839
+ options === null || options === void 0 || (_options$onSuccess = options.onSuccess) === null || _options$onSuccess === void 0 ? void 0 : _options$onSuccess.call(options);
3840
+ }
3841
+ }));
3842
+ };
3843
+ var useFetchTemplateTags = function useFetchTemplateTags() {
3844
+ return useQuery([QUERY_KEYS.TEMPLATE_TAGS], templateTagsApi.list);
3845
+ };
3846
+
3847
+ var PageWrapper = function PageWrapper(_ref) {
3848
+ var children = _ref.children;
3849
+ return /*#__PURE__*/React__default.createElement("div", {
3850
+ className: "nf-form-settings__wrapper w-full flex-col"
3851
+ }, children);
3852
+ };
3853
+ var PageHeader = function PageHeader(_ref2) {
3854
+ var title = _ref2.title,
3855
+ breadcrumbs = _ref2.breadcrumbs;
3856
+ return /*#__PURE__*/React__default.createElement("div", {
3857
+ className: "w-full px-6"
3858
+ }, /*#__PURE__*/React__default.createElement(NeetoHeader, {
3859
+ breadcrumbs: breadcrumbs,
3860
+ size: "small",
3861
+ title: title
3862
+ }));
3863
+ };
3864
+ var customPropEqualityCheck = function customPropEqualityCheck(prevProps, nextProps) {
3865
+ return prevProps.title === nextProps.title && prevProps.breadcrumbs === nextProps.breadcrumbs;
3866
+ };
3867
+ var MemoizedPageHeader = /*#__PURE__*/memo(PageHeader, customPropEqualityCheck);
3868
+ var PageContent = function PageContent(_ref3) {
3869
+ var children = _ref3.children,
3870
+ _ref3$className = _ref3.className,
3871
+ className = _ref3$className === void 0 ? "" : _ref3$className;
3872
+ return /*#__PURE__*/React__default.createElement(Scrollable, {
3873
+ className: "w-full px-6 pb-6"
3874
+ }, /*#__PURE__*/React__default.createElement("div", {
3875
+ className: classnames(["mx-auto max-w-7xl", className])
3876
+ }, children));
3877
+ };
3878
+
3879
+ var Tags = function Tags(_ref) {
3880
+ var allTags = _ref.allTags,
3881
+ selectedTags = _ref.selectedTags,
3882
+ onUpdate = _ref.onUpdate,
3883
+ onCreate = _ref.onCreate,
3884
+ isLoading = _ref.isLoading,
3885
+ className = _ref.className,
3886
+ _ref$labelProps = _ref.labelProps,
3887
+ labelProps = _ref$labelProps === void 0 ? {} : _ref$labelProps;
3888
+ var handleTagSelect = function handleTagSelect(newTag) {
3889
+ return onUpdate([].concat(_toConsumableArray(selectedTags), [newTag]));
3890
+ };
3891
+ var handleTagRemove = function handleTagRemove(removedTag) {
3892
+ var updatedTags = removeBy({
3893
+ value: removedTag.value
3894
+ }, selectedTags);
3895
+ onUpdate(updatedTags);
3896
+ };
3897
+ var handleTagCreate = function handleTagCreate(tagName) {
3898
+ onCreate({
3899
+ name: tagName
3900
+ }, {
3901
+ onSuccess: function onSuccess(_ref2) {
3902
+ var tag = _ref2.tag;
3903
+ return handleTagSelect({
3904
+ value: tag.id,
3905
+ label: tag.name
3906
+ });
3907
+ }
3908
+ });
3909
+ };
3910
+ return /*#__PURE__*/React__default.createElement("div", {
3911
+ className: className
3912
+ }, labelProps.label && /*#__PURE__*/React__default.createElement(Label, labelProps, labelProps.label), /*#__PURE__*/React__default.createElement("div", {
3913
+ className: "neeto-ui-border-gray-300 neeto-ui-rounded-lg neeto-ui-bg-white border p-4"
3914
+ }, /*#__PURE__*/React__default.createElement(Tags$2, {
3915
+ allTags: allTags,
3916
+ selectedTags: selectedTags,
3917
+ buttonProps: {
3918
+ loading: isLoading,
3919
+ disabled: isLoading,
3920
+ iconPosition: "left"
3921
+ },
3922
+ onTagCreate: handleTagCreate,
3923
+ onTagDelete: handleTagRemove,
3924
+ onTagSelect: handleTagSelect
3925
+ })));
3926
+ };
3927
+
3928
+ var Preview = function Preview(_ref) {
3929
+ var template = _ref.template,
3930
+ imageUrl = _ref.imageUrl;
3931
+ return /*#__PURE__*/React__default.createElement("div", {
3932
+ className: "neeto-template neeto-ui-bg-white outline-none neeto-ui-shadow-sm hover:neeto-ui-border-gray-400 focus:neeto-ui-border-gray-500 neeto-ui-rounded-lg flex cursor-pointer flex-col overflow-hidden border transition-colors duration-300 ease-in-out",
3933
+ tabIndex: 0
3934
+ }, /*#__PURE__*/React__default.createElement("div", {
3935
+ className: "neeto-template__header"
3936
+ }, /*#__PURE__*/React__default.createElement("img", {
3937
+ className: "neeto-template__image",
3938
+ src: imageUrl || "https://d2v7kzglnr2dnh.cloudfront.net/images/neetoForm/default-form-template.svg"
3939
+ })), /*#__PURE__*/React__default.createElement("div", {
3940
+ className: "neeto-ui-bg-white flex items-center justify-between gap-2 rounded-b-lg px-2 py-1.5"
3941
+ }, /*#__PURE__*/React__default.createElement(Typography, {
3942
+ className: "neeto-ui-text-gray-800",
3943
+ lineHeight: "normal",
3944
+ style: "body2"
3945
+ }, template.title)));
3946
+ };
3947
+
3948
+ var buildSelectOptionsBy = function buildSelectOptionsBy(labelField, options) {
3949
+ var valueField = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : "id";
3950
+ return options.map(function (option) {
3951
+ return {
3952
+ value: option[valueField],
3953
+ label: option[labelField]
3954
+ };
3955
+ });
3956
+ };
3957
+ var buildTagOptions = function buildTagOptions() {
3958
+ var tags = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : [];
3959
+ return renameKeys({
3960
+ id: "value",
3961
+ name: "label"
3962
+ }, tags);
3963
+ };
3964
+ var buildTemplateUpdatePayload = function buildTemplateUpdatePayload(values) {
3965
+ return {
3966
+ image: values.imageSignedId,
3967
+ tagIds: pluck("value", values === null || values === void 0 ? void 0 : values.tags)
3968
+ };
3969
+ };
3970
+
3971
+ function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
3972
+ function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
3973
+ var TemplateSettings = function TemplateSettings(_ref) {
3974
+ var _ref$onCancelTemplate = _ref.onCancelTemplatePreview,
3975
+ onCancelTemplatePreview = _ref$onCancelTemplate === void 0 ? "" : _ref$onCancelTemplate,
3976
+ _ref$breadcrumbs = _ref.breadcrumbs,
3977
+ breadcrumbs = _ref$breadcrumbs === void 0 ? [] : _ref$breadcrumbs,
3978
+ resourceType = _ref.resourceType,
3979
+ _ref$url = _ref.url,
3980
+ url = _ref$url === void 0 ? "" : _ref$url;
3981
+ var _useParams = useParams(),
3982
+ resourceId = _useParams["".concat(resourceType, "Id")];
3983
+ var _useTranslation = useTranslation(),
3984
+ t = _useTranslation.t;
3985
+ var _useFetchTemplate = useFetchTemplate({
3986
+ resourceId: resourceId,
3987
+ url: url
3988
+ }),
3989
+ data = _useFetchTemplate.data,
3990
+ isFetchingTemplate = _useFetchTemplate.isLoading;
3991
+ var _useUpdateTemplate = useUpdateTemplate({
3992
+ resourceId: resourceId,
3993
+ url: url
3994
+ }),
3995
+ updateTemplate = _useUpdateTemplate.mutate,
3996
+ isUpdatingTemplate = _useUpdateTemplate.isLoading;
3997
+ var _useCreateTemplateTag = useCreateTemplateTag(),
3998
+ createTemplateTag = _useCreateTemplateTag.mutate,
3999
+ isCreatingTags = _useCreateTemplateTag.isLoading;
4000
+ var _useFetchTemplateTags = useFetchTemplateTags(),
4001
+ _useFetchTemplateTags2 = _useFetchTemplateTags.data,
4002
+ templateTags = _useFetchTemplateTags2 === void 0 ? {} : _useFetchTemplateTags2,
4003
+ isTagsLoading = _useFetchTemplateTags.isLoading;
4004
+ var handleSubmit = function handleSubmit(values) {
4005
+ updateTemplate({
4006
+ template: buildTemplateUpdatePayload(values)
4007
+ });
4008
+ };
4009
+ var handleRemoveImage = function handleRemoveImage(setFieldValue) {
4010
+ setFieldValue("imageUrl", "");
4011
+ setFieldValue("imageSignedId", null);
4012
+ };
4013
+ var isLoading = isFetchingTemplate || isTagsLoading;
4014
+ var tags = buildTagOptions(data === null || data === void 0 ? void 0 : data.tags);
4015
+ var formInitialValues = _objectSpread(_objectSpread({
4016
+ imageUrl: null
4017
+ }, data), {}, {
4018
+ tags: tags
4019
+ });
4020
+ return /*#__PURE__*/React__default.createElement(PageWrapper, null, /*#__PURE__*/React__default.createElement(MemoizedPageHeader, {
4021
+ breadcrumbs: breadcrumbs,
4022
+ title: t("neetoTemplate.templateSettings.title")
4023
+ }), /*#__PURE__*/React__default.createElement(PageContent, {
4024
+ className: "h-full"
4025
+ }, isLoading ? /*#__PURE__*/React__default.createElement(PageLoader, null) : /*#__PURE__*/React__default.createElement(React__default.Fragment, null, /*#__PURE__*/React__default.createElement(Typography, {
4026
+ className: "mb-1",
4027
+ "data-cy": "thank-you-action-text",
4028
+ style: "h2",
4029
+ weight: "semibold"
4030
+ }, t("neetoTemplate.templateSettings.configureTemplates")), /*#__PURE__*/React__default.createElement(Typography, {
4031
+ className: "mb-2",
4032
+ "data-cy": "thank-you-description-label",
4033
+ style: "body2"
4034
+ }, t("neetoTemplate.templateSettings.subText")), /*#__PURE__*/React__default.createElement(Form, {
4035
+ formikProps: {
4036
+ enableReinitialize: true,
4037
+ initialValues: formInitialValues,
4038
+ onSubmit: handleSubmit
4039
+ }
4040
+ }, function (_ref2) {
4041
+ var values = _ref2.values,
4042
+ setFieldValue = _ref2.setFieldValue,
4043
+ dirty = _ref2.dirty;
4044
+ return /*#__PURE__*/React__default.createElement(React__default.Fragment, null, /*#__PURE__*/React__default.createElement("div", {
4045
+ className: "grid grid-cols-2 gap-8 pt-6"
4046
+ }, /*#__PURE__*/React__default.createElement("div", {
4047
+ className: "space-y-4"
4048
+ }, /*#__PURE__*/React__default.createElement(Typography, {
4049
+ className: "mb-3",
4050
+ style: "h4",
4051
+ weight: "semibold"
4052
+ }, t("neetoTemplate.templateSettings.imageLabel")), values.imageUrl && /*#__PURE__*/React__default.createElement("div", {
4053
+ className: "w-100 mb-6 flex flex-row justify-center"
4054
+ }, /*#__PURE__*/React__default.createElement("div", {
4055
+ className: "neeto-ui-bg-gray-100 relative flex h-80 w-96 flex-row items-center justify-center p-4"
4056
+ }, /*#__PURE__*/React__default.createElement(Button, {
4057
+ className: "neeto-ui-rounded-full absolute right-0 top-0",
4058
+ "data-cy": "remove-image",
4059
+ icon: Delete,
4060
+ size: "small",
4061
+ style: "danger-text",
4062
+ tooltipProps: {
4063
+ content: t("neetoTemplate.templateSettings.removeImage")
4064
+ },
4065
+ onClick: function onClick() {
4066
+ return handleRemoveImage(setFieldValue);
4067
+ }
4068
+ }))), /*#__PURE__*/React__default.createElement(Tags, {
4069
+ className: "space-y-2",
4070
+ isLoading: isCreatingTags,
4071
+ selectedTags: values.tags,
4072
+ allTags: buildSelectOptionsBy("name", templateTags.tags),
4073
+ labelProps: {
4074
+ label: t("neetoTemplate.templateSettings.categoryLabel")
4075
+ },
4076
+ onCreate: createTemplateTag,
4077
+ onUpdate: function onUpdate(tags) {
4078
+ return setFieldValue("tags", tags);
4079
+ }
4080
+ })), /*#__PURE__*/React__default.createElement("div", null, /*#__PURE__*/React__default.createElement(Typography, {
4081
+ className: "mb-3",
4082
+ style: "h4",
4083
+ weight: "semibold"
4084
+ }, t("neetoTemplate.templateSettings.previewLabel")), /*#__PURE__*/React__default.createElement(Preview, {
4085
+ imageUrl: values.imageUrl,
4086
+ template: data
4087
+ }))), /*#__PURE__*/React__default.createElement("div", {
4088
+ className: "mt-6 flex flex-row items-center justify-start"
4089
+ }, /*#__PURE__*/React__default.createElement(Button, {
4090
+ className: "mr-3",
4091
+ "data-cy": "save-changes-button",
4092
+ disabled: !dirty,
4093
+ loading: isUpdatingTemplate,
4094
+ type: "submit",
4095
+ label: t("neetoTemplate.templateSettings.button.saveChanges")
4096
+ }), /*#__PURE__*/React__default.createElement(Button, {
4097
+ "data-cy": "reset-changes-button",
4098
+ label: t("neetoTemplate.templateSettings.button.cancel"),
4099
+ style: "text",
4100
+ to: onCancelTemplatePreview
4101
+ })));
4102
+ }))));
4103
+ };
4104
+
4105
+ export { CreateTemplateModal, TemplateSettings };
2914
4106
  //# sourceMappingURL=index.js.map