@rh-support/components 2.5.230 → 2.5.231

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (71) hide show
  1. package/lib/esm/ConfirmationModal/ConfirmationDialog.js +1 -1
  2. package/lib/esm/Functional/CaseContactsSelectorExternal.d.ts +0 -2
  3. package/lib/esm/Functional/CaseContactsSelectorExternal.d.ts.map +1 -1
  4. package/lib/esm/Functional/CaseContactsSelectorExternal.js +82 -176
  5. package/lib/esm/InlineEdit/NewInlineEdit.d.ts +0 -2
  6. package/lib/esm/InlineEdit/NewInlineEdit.d.ts.map +1 -1
  7. package/lib/esm/InlineEdit/NewInlineEdit.js +2 -7
  8. package/lib/esm/MarkdownEditor/MarkdownEditor.d.ts +49 -0
  9. package/lib/esm/MarkdownEditor/MarkdownEditor.d.ts.map +1 -0
  10. package/lib/esm/MarkdownEditor/MarkdownEditor.js +601 -0
  11. package/lib/esm/MarkdownEditor/index.d.ts +2 -0
  12. package/lib/esm/MarkdownEditor/index.d.ts.map +1 -0
  13. package/lib/esm/MarkdownEditor/index.js +1 -0
  14. package/lib/esm/MarkdownEditor/markdownEditor.css +223 -0
  15. package/lib/esm/OwnerTypeaheadDropdown/OwnerTypeaheadDropdown.d.ts +0 -2
  16. package/lib/esm/OwnerTypeaheadDropdown/OwnerTypeaheadDropdown.d.ts.map +1 -1
  17. package/lib/esm/OwnerTypeaheadDropdown/OwnerTypeaheadDropdown.js +3 -8
  18. package/lib/esm/PhoneInput/PhoneInput.d.ts.map +1 -1
  19. package/lib/esm/PhoneInput/PhoneInput.js +1 -38
  20. package/lib/esm/SingleSelectDropdown/SingleSelectDropdown.d.ts +0 -2
  21. package/lib/esm/SingleSelectDropdown/SingleSelectDropdown.d.ts.map +1 -1
  22. package/lib/esm/SingleSelectDropdown/SingleSelectDropdown.js +6 -7
  23. package/lib/esm/SupportFeedbackForm/SupportFeedbackModal.d.ts.map +1 -1
  24. package/lib/esm/SupportFeedbackForm/SupportFeedbackModal.js +80 -62
  25. package/lib/esm/Table/TablePagination.d.ts +0 -1
  26. package/lib/esm/Table/TablePagination.d.ts.map +1 -1
  27. package/lib/esm/Table/TablePagination.js +1 -1
  28. package/lib/esm/ToastNotification/ToastNotification.d.ts +1 -5
  29. package/lib/esm/ToastNotification/ToastNotification.d.ts.map +1 -1
  30. package/lib/esm/ToastNotification/ToastNotification.js +3 -16
  31. package/lib/esm/ToastNotification/toastNotification.css +0 -7
  32. package/lib/esm/helperFunctions/errorMessage.d.ts +1 -2
  33. package/lib/esm/helperFunctions/errorMessage.d.ts.map +1 -1
  34. package/lib/esm/helperFunctions/errorMessage.js +5 -19
  35. package/lib/esm/hooks/useCopyToClipboard.d.ts +1 -1
  36. package/lib/esm/hooks/useCopyToClipboard.d.ts.map +1 -1
  37. package/lib/esm/hooks/useCopyToClipboard.js +1 -3
  38. package/lib/esm/index.d.ts +1 -3
  39. package/lib/esm/index.d.ts.map +1 -1
  40. package/lib/esm/index.js +1 -4
  41. package/package.json +6 -9
  42. package/lib/esm/CaseLabelLoadErrorModal/CaseLabelLoadErrorModal.d.ts +0 -10
  43. package/lib/esm/CaseLabelLoadErrorModal/CaseLabelLoadErrorModal.d.ts.map +0 -1
  44. package/lib/esm/CaseLabelLoadErrorModal/CaseLabelLoadErrorModal.js +0 -17
  45. package/lib/esm/CaseLabelLoadErrorModal/CaseLabelLoadErrorModal.scss +0 -13
  46. package/lib/esm/CaseLabelLoadErrorModal/index.d.ts +0 -2
  47. package/lib/esm/CaseLabelLoadErrorModal/index.d.ts.map +0 -1
  48. package/lib/esm/CaseLabelLoadErrorModal/index.js +0 -1
  49. package/lib/esm/CustomDatePicker/CustomDatePicker.d.ts +0 -18
  50. package/lib/esm/CustomDatePicker/CustomDatePicker.d.ts.map +0 -1
  51. package/lib/esm/CustomDatePicker/CustomDatePicker.js +0 -27
  52. package/lib/esm/CustomDatePicker/customDatePicker.css +0 -52
  53. package/lib/esm/CustomDatePicker/index.d.ts +0 -2
  54. package/lib/esm/CustomDatePicker/index.d.ts.map +0 -1
  55. package/lib/esm/CustomDatePicker/index.js +0 -1
  56. package/lib/esm/RichTextEditor/RichTextEditor.d.ts +0 -45
  57. package/lib/esm/RichTextEditor/RichTextEditor.d.ts.map +0 -1
  58. package/lib/esm/RichTextEditor/RichTextEditor.js +0 -464
  59. package/lib/esm/RichTextEditor/autoLinkModule.d.ts +0 -18
  60. package/lib/esm/RichTextEditor/autoLinkModule.d.ts.map +0 -1
  61. package/lib/esm/RichTextEditor/autoLinkModule.js +0 -156
  62. package/lib/esm/RichTextEditor/index.d.ts +0 -4
  63. package/lib/esm/RichTextEditor/index.d.ts.map +0 -1
  64. package/lib/esm/RichTextEditor/index.js +0 -2
  65. package/lib/esm/RichTextEditor/linkUrl.d.ts +0 -7
  66. package/lib/esm/RichTextEditor/linkUrl.d.ts.map +0 -1
  67. package/lib/esm/RichTextEditor/linkUrl.js +0 -26
  68. package/lib/esm/RichTextEditor/richTextEditor.css +0 -182
  69. package/lib/esm/RichTextEditor/useQuillEditor.d.ts +0 -20
  70. package/lib/esm/RichTextEditor/useQuillEditor.d.ts.map +0 -1
  71. package/lib/esm/RichTextEditor/useQuillEditor.js +0 -180
@@ -15,7 +15,7 @@ function ConfirmationDialog(props) {
15
15
  !isEmpty(props.title) && (React.createElement(ModalHeader, null,
16
16
  React.createElement("h2", null, props.title))),
17
17
  React.createElement(ModalBody, null,
18
- React.createElement("div", { id: "se-confirm-dialog" }, props.description)),
18
+ React.createElement("p", { id: "se-confirm-dialog" }, props.description)),
19
19
  React.createElement(ModalFooter, null,
20
20
  React.createElement(Button, { key: "confirm", onClick: props.onConfirm, variant: props.confirmButtonVariant },
21
21
  React.createElement(Trans, null, props.confirmText)),
@@ -28,8 +28,6 @@ interface IProps extends IDClassNameProps {
28
28
  onNew?: (query: string) => void;
29
29
  canAddNew?: (options: ITypeaheadDropdownGroupOrOption[], query: string) => boolean;
30
30
  getCreateNewText?: (query: string) => string;
31
- onContactEnriched?: (contact: IContact) => void;
32
- contactFilter?: (contact: IContact) => boolean;
33
31
  }
34
32
  export declare const CONTACTS_PAGE_SIZE = 10;
35
33
  export declare const DEFAULT_CONTACTS_OFFSET: number;
@@ -1 +1 @@
1
- {"version":3,"file":"CaseContactsSelectorExternal.d.ts","sourceRoot":"","sources":["../../../src/Functional/CaseContactsSelectorExternal.tsx"],"names":[],"mappings":"AACA,OAAO,EAAE,6BAA6B,EAAE,MAAM,yCAAyC,CAAC;AACxF,OAAO,EAAE,0BAA0B,EAAE,MAAM,qCAAqC,CAAC;AACjF,OAAO,EAAE,QAAQ,EAAE,MAAM,wCAAwC,CAAC;AAClE,OAAO,EAAuB,gBAAgB,EAAE,MAAM,0BAA0B,CAAC;AACjF,OAAO,EAAE,QAAQ,EAAE,MAAM,8BAA8B,CAAC;AAcxD,OAAO,KAA4D,MAAM,OAAO,CAAC;AAGjF,OAAO,EAAE,+BAA+B,EAAE,MAAM,wCAAwC,CAAC;AAEzF,MAAM,MAAM,oBAAoB,GAAG,QAAQ,GAAG,0BAA0B,CAAC;AACzE,UAAU,MAAO,SAAQ,gBAAgB;IACrC,qBAAqB,EAAE,MAAM,CAAC;IAC9B,QAAQ,EAAE,CAAC,QAAQ,GAAG,0BAA0B,CAAC,EAAE,CAAC;IACpD,QAAQ,EAAE,CAAC,gBAAgB,EAAE,CAAC,QAAQ,GAAG,0BAA0B,CAAC,EAAE,KAAK,IAAI,CAAC;IAChF,kBAAkB,EAAE,QAAQ,CAAC;IAC7B,kBAAkB,EAAE,MAAM,CAAC;IAC3B,iBAAiB,CAAC,EAAE,QAAQ,EAAE,CAAC;IAC/B,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,WAAW,CAAC,EAAE,CAAC,MAAM,KAAA,EAAE,KAAK,KAAA,EAAE,GAAG,KAAA,KAAK,MAAM,GAAG,KAAK,CAAC,SAAS,CAAC;IAC/D,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,YAAY,CAAC,EAAE,6BAA6B,EAAE,CAAC;IAC/C,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,mBAAmB,CAAC,EAAE,OAAO,CAAC;IAC9B,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,sBAAsB,CAAC,EAAE,OAAO,CAAC;IAEjC,KAAK,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IAChC,SAAS,CAAC,EAAE,CAAC,OAAO,EAAE,+BAA+B,EAAE,EAAE,KAAK,EAAE,MAAM,KAAK,OAAO,CAAC;IACnF,gBAAgB,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,MAAM,CAAC;IAC7C,iBAAiB,CAAC,EAAE,CAAC,OAAO,EAAE,QAAQ,KAAK,IAAI,CAAC;IAChD,aAAa,CAAC,EAAE,CAAC,OAAO,EAAE,QAAQ,KAAK,OAAO,CAAC;CAClD;AAED,eAAO,MAAM,kBAAkB,KAAK,CAAC;AAErC,eAAO,MAAM,uBAAuB,QAAyB,CAAC;AAE9D,eAAO,MAAM,oBAAoB,GAAI,MAAM,oBAAoB,KAAG,IAAI,IAAI,0BAEzE,CAAC;AAMF,QAAA,MAAM,oBAAoB,GAAI,MAAM,oBAAoB,KAAG,MAa1D,CAAC;AAEF,iBAAS,4BAA4B,CAAC,KAAK,EAAE,MAAM,qBAyUlD;AAED,OAAO,EAAE,4BAA4B,EAAE,oBAAoB,EAAE,CAAC"}
1
+ {"version":3,"file":"CaseContactsSelectorExternal.d.ts","sourceRoot":"","sources":["../../../src/Functional/CaseContactsSelectorExternal.tsx"],"names":[],"mappings":"AACA,OAAO,EAAE,6BAA6B,EAAE,MAAM,yCAAyC,CAAC;AACxF,OAAO,EAAE,0BAA0B,EAAE,MAAM,qCAAqC,CAAC;AACjF,OAAO,EAAE,QAAQ,EAAE,MAAM,wCAAwC,CAAC;AAClE,OAAO,EAAuB,gBAAgB,EAAE,MAAM,0BAA0B,CAAC;AACjF,OAAO,EAAE,QAAQ,EAAE,MAAM,8BAA8B,CAAC;AAQxD,OAAO,KAA4D,MAAM,OAAO,CAAC;AAIjF,OAAO,EAAE,+BAA+B,EAAE,MAAM,wCAAwC,CAAC;AAEzF,MAAM,MAAM,oBAAoB,GAAG,QAAQ,GAAG,0BAA0B,CAAC;AACzE,UAAU,MAAO,SAAQ,gBAAgB;IACrC,qBAAqB,EAAE,MAAM,CAAC;IAC9B,QAAQ,EAAE,CAAC,QAAQ,GAAG,0BAA0B,CAAC,EAAE,CAAC;IACpD,QAAQ,EAAE,CAAC,gBAAgB,EAAE,CAAC,QAAQ,GAAG,0BAA0B,CAAC,EAAE,KAAK,IAAI,CAAC;IAChF,kBAAkB,EAAE,QAAQ,CAAC;IAC7B,kBAAkB,EAAE,MAAM,CAAC;IAC3B,iBAAiB,CAAC,EAAE,QAAQ,EAAE,CAAC;IAC/B,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,WAAW,CAAC,EAAE,CAAC,MAAM,KAAA,EAAE,KAAK,KAAA,EAAE,GAAG,KAAA,KAAK,MAAM,GAAG,KAAK,CAAC,SAAS,CAAC;IAC/D,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,YAAY,CAAC,EAAE,6BAA6B,EAAE,CAAC;IAC/C,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,mBAAmB,CAAC,EAAE,OAAO,CAAC;IAC9B,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,sBAAsB,CAAC,EAAE,OAAO,CAAC;IAEjC,KAAK,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IAChC,SAAS,CAAC,EAAE,CAAC,OAAO,EAAE,+BAA+B,EAAE,EAAE,KAAK,EAAE,MAAM,KAAK,OAAO,CAAC;IACnF,gBAAgB,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,MAAM,CAAC;CAChD;AAED,eAAO,MAAM,kBAAkB,KAAK,CAAC;AAErC,eAAO,MAAM,uBAAuB,QAAyB,CAAC;AAE9D,eAAO,MAAM,oBAAoB,GAAI,MAAM,oBAAoB,KAAG,IAAI,IAAI,0BAEzE,CAAC;AAMF,QAAA,MAAM,oBAAoB,GAAI,MAAM,oBAAoB,KAAG,MAa1D,CAAC;AAEF,iBAAS,4BAA4B,CAAC,KAAK,EAAE,MAAM,qBAwNlD;AAED,OAAO,EAAE,4BAA4B,EAAE,oBAAoB,EAAE,CAAC"}
@@ -7,9 +7,8 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge
7
7
  step((generator = generator.apply(thisArg, _arguments || [])).next());
8
8
  });
9
9
  };
10
- import { useApolloClient } from '@apollo/client/react';
11
- import { GET_ACCOUNT_CONTACTS, getApiResourceObject, isEmailValid, } from '@rh-support/utils';
12
- import debounce from 'lodash/debounce';
10
+ import { accounts } from '@cee-eng/hydrajs';
11
+ import { getApiResourceObject, isEmailValid, sortHydraContacts } from '@rh-support/utils';
13
12
  import differenceBy from 'lodash/differenceBy';
14
13
  import filter from 'lodash/filter';
15
14
  import isArray from 'lodash/isArray';
@@ -17,6 +16,7 @@ import isEmpty from 'lodash/isEmpty';
17
16
  import map from 'lodash/map';
18
17
  import sortBy from 'lodash/sortBy';
19
18
  import React, { useCallback, useEffect, useMemo, useRef, useState } from 'react';
19
+ import { usePrevious } from '../hooks/usePrevious';
20
20
  import { OwnerTypeaheadDropdown } from '../OwnerTypeaheadDropdown';
21
21
  export const CONTACTS_PAGE_SIZE = 10;
22
22
  export const DEFAULT_CONTACTS_OFFSET = CONTACTS_PAGE_SIZE - 1;
@@ -42,157 +42,82 @@ const getHydraContactLabel = (user) => {
42
42
  return label ? label : '';
43
43
  };
44
44
  function CaseContactsSelectorExternal(props) {
45
- const apolloClient = useApolloClient();
46
45
  const { customEmails, contactSsoUsername, isInvalid, groupContactsAndEmails, selected } = props;
46
+ const previousSelectedAccountNumber = usePrevious(props.selectedAccountNumber);
47
47
  const [filteredContacts, setFilteredContacts] = useState([]);
48
+ /**
49
+ * External owner selector related
50
+ */
51
+ /** Getting user list for selected account when logged in user is a external */
48
52
  const [contactList, setContactList] = useState(getApiResourceObject([]));
49
- const [hasNextPage, setHasNextPage] = useState(false);
50
- const [endCursor, setEndCursor] = useState(null);
51
- const [isLoadingMore, setIsLoadingMore] = useState(false);
52
- const mapContactEdges = (edges, accountNumber) => edges
53
- .filter(({ node }) => { var _a; return (_a = node.SSOUserName__c) === null || _a === void 0 ? void 0 : _a.value; })
54
- .map(({ node }) => {
55
- var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m, _o, _p, _q, _r;
56
- return ({
57
- id: node.Id,
58
- ssoUsername: node.SSOUserName__c.value,
59
- firstName: (_b = (_a = node.FirstName) === null || _a === void 0 ? void 0 : _a.value) !== null && _b !== void 0 ? _b : '',
60
- lastName: (_d = (_c = node.LastName) === null || _c === void 0 ? void 0 : _c.value) !== null && _d !== void 0 ? _d : '',
61
- fullNameCustom: (_f = (_e = node.Name) === null || _e === void 0 ? void 0 : _e.value) !== null && _f !== void 0 ? _f : '',
62
- manageSupportCases: (_h = (_g = node.ManageSupportCases__c) === null || _g === void 0 ? void 0 : _g.value) !== null && _h !== void 0 ? _h : true,
63
- isInternal: (_k = (_j = node.IsInternal__c) === null || _j === void 0 ? void 0 : _j.value) !== null && _k !== void 0 ? _k : false,
64
- isOrgAdmin: (_m = (_l = node.IsOrgAdmin__c) === null || _l === void 0 ? void 0 : _l.value) !== null && _m !== void 0 ? _m : false,
65
- phone: (_p = (_o = node.Phone) === null || _o === void 0 ? void 0 : _o.value) !== null && _p !== void 0 ? _p : '',
66
- defaultCaseGroup: (_r = (_q = node.DefaultCaseGroup__c) === null || _q === void 0 ? void 0 : _q.value) !== null && _r !== void 0 ? _r : null,
67
- accountNumber,
68
- });
69
- });
70
- const buildContactsWhere = (searchQuery) => {
71
- const base = { IsActive__c: { eq: true } };
72
- if (!(searchQuery === null || searchQuery === void 0 ? void 0 : searchQuery.trim()))
73
- return base;
74
- const term = `%${searchQuery.trim()}%`;
75
- return {
76
- and: [
77
- base,
78
- {
79
- or: [{ Name: { like: term } }, { SSOUserName__c: { like: term } }],
80
- },
81
- ],
82
- };
83
- };
84
- const fetchContactsPage = (after, searchQuery) => __awaiter(this, void 0, void 0, function* () {
85
- var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l;
86
- const { data } = yield apolloClient.query({
87
- query: GET_ACCOUNT_CONTACTS,
88
- variables: Object.assign(Object.assign({ first: CONTACTS_PAGE_SIZE }, (after ? { after } : {})), { contactsWhere: buildContactsWhere(searchQuery) }),
89
- fetchPolicy: after ? 'network-only' : 'network-only',
90
- });
91
- const response = data;
92
- const accountNode = (_e = (_d = (_c = (_b = (_a = response === null || response === void 0 ? void 0 : response.redhat_support_uiapi) === null || _a === void 0 ? void 0 : _a.query) === null || _b === void 0 ? void 0 : _b.RedHatSupportAccount) === null || _c === void 0 ? void 0 : _c.edges) === null || _d === void 0 ? void 0 : _d[0]) === null || _e === void 0 ? void 0 : _e.node;
93
- const contactEdges = (_g = (_f = accountNode === null || accountNode === void 0 ? void 0 : accountNode.Contacts) === null || _f === void 0 ? void 0 : _f.edges) !== null && _g !== void 0 ? _g : [];
94
- const pageInfo = (_j = (_h = accountNode === null || accountNode === void 0 ? void 0 : accountNode.Contacts) === null || _h === void 0 ? void 0 : _h.pageInfo) !== null && _j !== void 0 ? _j : { hasNextPage: false, endCursor: null };
95
- const accountNumber = (_l = (_k = accountNode === null || accountNode === void 0 ? void 0 : accountNode.AccountNumber) === null || _k === void 0 ? void 0 : _k.value) !== null && _l !== void 0 ? _l : props.selectedAccountNumber;
96
- return { contacts: mapContactEdges(contactEdges, accountNumber), pageInfo };
97
- });
98
- const currentSearchQuery = useRef('');
99
- const loadMoreContacts = () => __awaiter(this, void 0, void 0, function* () {
100
- if (!hasNextPage || isLoadingMore)
101
- return;
102
- setIsLoadingMore(true);
103
- try {
104
- const { contacts: newContacts, pageInfo } = yield fetchContactsPage(endCursor, currentSearchQuery.current);
105
- setContactList((prev) => getApiResourceObject([...(prev.data || []), ...newContacts]));
106
- setHasNextPage(pageInfo.hasNextPage);
107
- setEndCursor(pageInfo.endCursor);
108
- }
109
- catch (_a) {
110
- // silently fail on load more
111
- }
112
- setIsLoadingMore(false);
113
- });
114
- const searchContacts = (query) => __awaiter(this, void 0, void 0, function* () {
115
- currentSearchQuery.current = query;
116
- setContactList(getApiResourceObject([], true));
117
- setHasNextPage(false);
118
- setEndCursor(null);
119
- try {
120
- const { contacts, pageInfo } = yield fetchContactsPage(null, query);
121
- if (currentSearchQuery.current === query) {
122
- setContactList(getApiResourceObject(contacts));
123
- setHasNextPage(pageInfo.hasNextPage);
124
- setEndCursor(pageInfo.endCursor);
125
- }
126
- }
127
- catch (_a) {
128
- setContactList(getApiResourceObject([]));
129
- }
130
- });
131
- // eslint-disable-next-line react-hooks/exhaustive-deps
132
- const debouncedSearch = useCallback(debounce(searchContacts, 400), [apolloClient]);
133
- const fetchAllActiveContacts = () => {
134
- currentSearchQuery.current = '';
135
- debouncedSearch.cancel();
136
- searchContacts('');
137
- };
53
+ const controllerRef1 = useRef(new AbortController());
54
+ const controllerRef2 = useRef(new AbortController());
138
55
  useEffect(() => {
139
- const { selectedAccountNumber, loggedInUserRights, isExportingPDF } = props;
140
- const isNonOrgAdminSameAccount = loggedInUserRights.isExternal() && loggedInUserRights.isNonOrgAdminWithSameAccount(selectedAccountNumber);
141
- if (isExportingPDF || !selectedAccountNumber || isNonOrgAdminSameAccount) {
56
+ if (props.isExportingPDF)
142
57
  return;
143
- }
144
- let cancelled = false;
145
- const fetchAccountContacts = () => __awaiter(this, void 0, void 0, function* () {
146
- setContactList(getApiResourceObject([], true));
58
+ // when component is unmonted and error happens after apis responses are ready, we use this variable to prevent state update.
59
+ let isSubscribed = true;
60
+ const fetchStrataAccountUsers = () => __awaiter(this, void 0, void 0, function* () {
61
+ if (controllerRef1.current) {
62
+ controllerRef1.current.abort();
63
+ }
64
+ controllerRef1.current = new AbortController();
65
+ if (controllerRef2.current) {
66
+ controllerRef2.current.abort();
67
+ }
68
+ controllerRef2.current = new AbortController();
147
69
  try {
148
- const { contacts, pageInfo } = yield fetchContactsPage();
149
- if (!cancelled) {
150
- setContactList(getApiResourceObject(contacts));
151
- setHasNextPage(pageInfo.hasNextPage);
152
- setEndCursor(pageInfo.endCursor);
70
+ setContactList(getApiResourceObject([], true));
71
+ let contactListTemp = [];
72
+ if (props.loggedInUserRights.isPartner() &&
73
+ props.loggedInUserRights.isAccountDifferentFromLoggedInAccount(props.selectedAccountNumber)) {
74
+ /** Show Partner contacts even when customer account is selected
75
+ - Non Org-Admin partners => Only logged in contact + All Customer contacts
76
+ - Org-Admin partners => All partner contacts + All Customer contacts */
77
+ if (props.loggedInUserRights.isNonOrgAdmin()) {
78
+ const extraLoggedInContacts = props.loggedInUserRights.getHydraContactFromLoggedInUser();
79
+ const contacts = yield accounts.getAccountContacts(props.selectedAccountNumber, controllerRef1.current.signal);
80
+ contactListTemp = contacts.concat(extraLoggedInContacts);
81
+ }
82
+ else {
83
+ let promiseArray = [
84
+ accounts.getAccountContacts(props.selectedAccountNumber, controllerRef1.current.signal),
85
+ accounts.getAccountContacts(props.loggedInUserRights.getAccountNumber(), controllerRef2.current.signal),
86
+ ];
87
+ const loggedInContactsResponse = yield Promise.all(promiseArray);
88
+ const selectedAccountsContacts = loggedInContactsResponse[0];
89
+ const currentAccountsContacts = loggedInContactsResponse[1];
90
+ contactListTemp = [...selectedAccountsContacts, ...currentAccountsContacts];
91
+ }
153
92
  }
93
+ else {
94
+ contactListTemp = yield accounts.getAccountContacts(props.selectedAccountNumber, controllerRef1.current.signal);
95
+ }
96
+ if (props.contactsToExclude && props.contactsToExclude.length > 0) {
97
+ contactListTemp = differenceBy(contactListTemp, props.contactsToExclude, 'ssoUsername');
98
+ }
99
+ setContactList(getApiResourceObject(sortHydraContacts(contactListTemp)));
154
100
  }
155
101
  catch (e) {
156
- if (!cancelled) {
157
- setContactList(getApiResourceObject([], false, true, e.message));
158
- }
102
+ isSubscribed && setContactList(getApiResourceObject([], false, true, e.message));
159
103
  }
160
104
  });
161
- fetchAccountContacts();
105
+ const isOldAccountNumber = props.selectedAccountNumber && props.selectedAccountNumber === previousSelectedAccountNumber;
106
+ if (isOldAccountNumber ||
107
+ (props.loggedInUserRights.isExternal() &&
108
+ props.loggedInUserRights.isNonOrgAdminWithSameAccount(props.selectedAccountNumber)))
109
+ return;
110
+ fetchStrataAccountUsers();
162
111
  return () => {
163
- cancelled = true;
112
+ isSubscribed = false;
164
113
  };
165
- // eslint-disable-next-line react-hooks/exhaustive-deps
166
- }, [apolloClient, props.selectedAccountNumber, props.isExportingPDF]);
167
- useEffect(() => {
168
- if (contactList.isFetching || isEmpty(contactList.data) || isEmpty(selected))
169
- return;
170
- const currentOwner = selected[0];
171
- if (!(currentOwner === null || currentOwner === void 0 ? void 0 : currentOwner.ssoUsername))
172
- return;
173
- const matchedContact = contactList.data.find((c) => {
174
- var _a, _b;
175
- return c.id === (currentOwner === null || currentOwner === void 0 ? void 0 : currentOwner.id) ||
176
- ((_a = c.ssoUsername) === null || _a === void 0 ? void 0 : _a.toLowerCase()) === ((_b = currentOwner.ssoUsername) === null || _b === void 0 ? void 0 : _b.toLowerCase());
177
- });
178
- if (matchedContact === null || matchedContact === void 0 ? void 0 : matchedContact.id) {
179
- props.onContactEnriched
180
- ? props.onContactEnriched(matchedContact)
181
- : props.onChange && props.onChange([matchedContact]);
182
- }
183
- // eslint-disable-next-line react-hooks/exhaustive-deps
184
- }, [contactList.data, contactList.isFetching]);
185
- const displayedContacts = useMemo(() => {
186
- var _a;
187
- let contacts = (_a = contactList.data) !== null && _a !== void 0 ? _a : [];
188
- if (props.contactsToExclude && props.contactsToExclude.length > 0) {
189
- contacts = differenceBy(contacts, props.contactsToExclude, 'ssoUsername');
190
- }
191
- if (props.contactFilter) {
192
- contacts = contacts.filter(props.contactFilter);
193
- }
194
- return contacts;
195
- }, [contactList.data, props.contactsToExclude, props.contactFilter]);
114
+ }, [
115
+ previousSelectedAccountNumber,
116
+ props.contactsToExclude,
117
+ props.loggedInUserRights,
118
+ props.selectedAccountNumber,
119
+ props.isExportingPDF,
120
+ ]);
196
121
  const onCustomerContactSelect = (contacts) => {
197
122
  if (!isArray(contacts))
198
123
  return;
@@ -209,10 +134,11 @@ function CaseContactsSelectorExternal(props) {
209
134
  ];
210
135
  props.onChange && props.onChange(customerContacts);
211
136
  };
212
- const isNonOrgAdminSameAccountDisabled = props.loggedInUserRights.isExternal() &&
213
- props.loggedInUserRights.isNonOrgAdminWithSameAccount(props.selectedAccountNumber);
214
- const isDisabled = isNonOrgAdminSameAccountDisabled || props.isUpdating || contactList.isFetching || props.isDisabled;
215
- const isLoading = props.isUpdating || contactList.isFetching;
137
+ const isDisabled = (props.loggedInUserRights.isExternal() &&
138
+ props.loggedInUserRights.isNonOrgAdminWithSameAccount(props.selectedAccountNumber)) ||
139
+ props.isUpdating ||
140
+ contactList.isFetching ||
141
+ props.isDisabled;
216
142
  const getCustomEmails = useCallback(() => {
217
143
  return sortBy((customEmails || []).map((item) => (Object.assign(Object.assign({}, item), { ssoUsername: item.emailAddress, firstName: item.emailAddress, lastName: item.emailAddress }))), 'emailAddress');
218
144
  }, [customEmails]);
@@ -221,54 +147,34 @@ function CaseContactsSelectorExternal(props) {
221
147
  */
222
148
  const allOptions = useMemo(() => {
223
149
  return [
224
- ...map(displayedContacts, (contact) => ({ contact, isCustomEmail: false })),
150
+ ...map(contactList.data, (contact) => ({ contact, isCustomEmail: false })),
225
151
  ...map(getCustomEmails(), (email) => ({
226
152
  isCustomEmail: true,
227
153
  contact: Object.assign(Object.assign({}, email), { ssoUsername: email.emailAddress, firstName: email.emailAddress, lastName: email.emailAddress }),
228
154
  })),
229
155
  ];
230
- }, [displayedContacts, getCustomEmails]);
231
- const isOwnerSelectionComplete = (query, options) => {
232
- if (isEmpty(query)) {
233
- return true;
234
- }
235
- const selectedLabel = !isEmpty(selected) ? getHydraContactLabel(selected[0]) : '';
236
- if (query === selectedLabel) {
237
- return true;
238
- }
239
- return options.some((option) => getHydraContactLabel(option.contact) === query);
240
- };
156
+ }, [contactList.data, getCustomEmails]);
241
157
  /**
242
158
  * update the shown options in the dropdown and reset the amount of options show to the default.
243
159
  * @param query The user search term
244
160
  */
245
161
  const onQueryUpdated = (query) => {
246
- setHasNextPage(false);
247
- if (isOwnerSelectionComplete(query, allOptions)) {
248
- fetchAllActiveContacts();
162
+ if (isEmpty(query)) {
249
163
  setFilteredContacts(allOptions);
250
- return;
251
- }
252
- const localFiltered = filter(allOptions, (option) => getHydraContactLabel(option.contact).toLowerCase().includes(query.toLowerCase()));
253
- setFilteredContacts(localFiltered);
254
- debouncedSearch(query);
255
- };
256
- const onDropdownOpenChange = (isOpen) => {
257
- if (!isOpen) {
258
- return;
259
- }
260
- if (currentSearchQuery.current) {
261
- fetchAllActiveContacts();
262
164
  }
263
165
  else {
264
- setFilteredContacts(allOptions);
166
+ const filteredContacts = filter(allOptions, (option) => getHydraContactLabel(option.contact).toLowerCase().includes(query.toLowerCase()));
167
+ setFilteredContacts(filteredContacts);
265
168
  }
266
169
  };
267
170
  /**
268
171
  * Reset the filtered contacts and the current offset.
269
172
  */
270
173
  const onClearQuery = () => {
271
- fetchAllActiveContacts();
174
+ var _a;
175
+ const numOfCustomEmails = (_a = customEmails === null || customEmails === void 0 ? void 0 : customEmails.length) !== null && _a !== void 0 ? _a : 0;
176
+ if (filteredContacts.length === contactList.data.length + numOfCustomEmails)
177
+ return;
272
178
  setFilteredContacts(allOptions);
273
179
  };
274
180
  /**
@@ -289,7 +195,7 @@ function CaseContactsSelectorExternal(props) {
289
195
  */
290
196
  useEffect(() => {
291
197
  setFilteredContacts(allOptions);
292
- }, [displayedContacts, customEmails, allOptions, selected]);
293
- return (React.createElement(OwnerTypeaheadDropdown, { id: props.id || '', hasClearButton: true, multiple: !!props.multiple, contactSsoUsername: contactSsoUsername, groupContactsAndEmails: groupContactsAndEmails, selected: !isEmpty(props.selected) ? props.selected : [], options: filteredContacts, placeholder: props.placeholder || 'Search by name or username', "data-tracking-id": "external-case-contact-selector", isDisabled: isDisabled, status: isInvalid ? 'danger' : undefined, onChipRemoved: onChipRemoved, onClearQuery: onClearQuery, onOpenChange: onDropdownOpenChange, onQueryUpdated: onQueryUpdated, onSelect: onCustomerContactSelect, canAddNew: canAddNew, getCreateNewText: props === null || props === void 0 ? void 0 : props.getCreateNewText, isLoading: isLoading || isLoadingMore, onHandleLoadMore: loadMoreContacts, isShowMoreOptionVisible: hasNextPage }));
198
+ }, [contactList.data, customEmails, allOptions, selected]);
199
+ return (React.createElement(OwnerTypeaheadDropdown, { id: props.id || '', hasClearButton: true, multiple: !!props.multiple, contactSsoUsername: contactSsoUsername, groupContactsAndEmails: groupContactsAndEmails, selected: !isEmpty(props.selected) ? props.selected : [], options: filteredContacts, placeholder: props.placeholder || 'Search by name or username', "data-tracking-id": "external-case-contact-selector", isDisabled: isDisabled, status: isInvalid ? 'danger' : undefined, onChipRemoved: onChipRemoved, onClearQuery: onClearQuery, onQueryUpdated: onQueryUpdated, onSelect: onCustomerContactSelect, canAddNew: canAddNew, getCreateNewText: props === null || props === void 0 ? void 0 : props.getCreateNewText, isLoading: props.isUpdating || contactList.isFetching }));
294
200
  }
295
201
  export { CaseContactsSelectorExternal, getHydraContactLabel };
@@ -32,8 +32,6 @@ interface IProps {
32
32
  isSpaceAllowed?: boolean;
33
33
  inputValue?: string;
34
34
  isExportingPDF?: boolean;
35
- /** When false with allowInlineEdit false, render read-only content instead of the input children. */
36
- showAlwaysEditableInput?: boolean;
37
35
  }
38
36
  declare function NewInlineEdit(props: IProps): React.JSX.Element;
39
37
  declare namespace NewInlineEdit {
@@ -1 +1 @@
1
- {"version":3,"file":"NewInlineEdit.d.ts","sourceRoot":"","sources":["../../../src/InlineEdit/NewInlineEdit.tsx"],"names":[],"mappings":"AAAA,OAAO,qBAAqB,CAAC;AAI7B,OAAO,KAAK,EAAE,EAAE,SAAS,EAAuB,MAAM,OAAO,CAAC;AAG9D,UAAU,MAAM;IACZ,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,GAAG,CAAC,OAAO,GAAG,GAAG,CAAC,OAAO,EAAE,CAAC;IACtC,UAAU,EAAE,SAAS,CAAC,gBAAgB,CAAC,CAAC;IACxC,YAAY,EAAE,GAAG,CAAC,OAAO,GAAG,GAAG,CAAC,OAAO,EAAE,CAAC;IAC1C,aAAa,CAAC,EAAE,GAAG,CAAC,OAAO,GAAG,GAAG,CAAC,OAAO,EAAE,CAAC;IAC5C,gBAAgB,EAAE,GAAG,CAAC,OAAO,GAAG,MAAM,CAAC;IACvC,OAAO,CAAC,EAAE,MAAM,GAAG,GAAG,CAAC,OAAO,CAAC;IAC/B,eAAe,EAAE,OAAO,CAAC;IACzB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,kBAAkB,EAAE,OAAO,CAAC;IAC5B,cAAc,EAAE,OAAO,CAAC;IACxB,WAAW,EAAE,GAAG,CAAC,OAAO,GAAG,MAAM,CAAC;IAClC,SAAS,EAAE,GAAG,CAAC,OAAO,GAAG,MAAM,CAAC;IAChC,MAAM,EAAE,GAAG,CAAC;IACZ,QAAQ,EAAE,GAAG,CAAC;IACd,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;IAClB,iBAAiB,CAAC,EAAE,OAAO,CAAC;IAC5B,eAAe,CAAC,EAAE,OAAO,CAAC;IAG1B,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,YAAY,CAAC,EAAE,OAAO,CAAC;IAEvB,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAC3B,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,qGAAqG;IACrG,uBAAuB,CAAC,EAAE,OAAO,CAAC;CACrC;AAsBD,iBAAS,aAAa,CAAC,KAAK,EAAE,MAAM,qBAsMnC;kBAtMQ,aAAa;;;AAyMtB,OAAO,EAAE,aAAa,EAAE,CAAC"}
1
+ {"version":3,"file":"NewInlineEdit.d.ts","sourceRoot":"","sources":["../../../src/InlineEdit/NewInlineEdit.tsx"],"names":[],"mappings":"AAAA,OAAO,qBAAqB,CAAC;AAI7B,OAAO,KAAK,EAAE,EAAE,SAAS,EAAuB,MAAM,OAAO,CAAC;AAG9D,UAAU,MAAM;IACZ,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,GAAG,CAAC,OAAO,GAAG,GAAG,CAAC,OAAO,EAAE,CAAC;IACtC,UAAU,EAAE,SAAS,CAAC,gBAAgB,CAAC,CAAC;IACxC,YAAY,EAAE,GAAG,CAAC,OAAO,GAAG,GAAG,CAAC,OAAO,EAAE,CAAC;IAC1C,aAAa,CAAC,EAAE,GAAG,CAAC,OAAO,GAAG,GAAG,CAAC,OAAO,EAAE,CAAC;IAC5C,gBAAgB,EAAE,GAAG,CAAC,OAAO,GAAG,MAAM,CAAC;IACvC,OAAO,CAAC,EAAE,MAAM,GAAG,GAAG,CAAC,OAAO,CAAC;IAC/B,eAAe,EAAE,OAAO,CAAC;IACzB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,kBAAkB,EAAE,OAAO,CAAC;IAC5B,cAAc,EAAE,OAAO,CAAC;IACxB,WAAW,EAAE,GAAG,CAAC,OAAO,GAAG,MAAM,CAAC;IAClC,SAAS,EAAE,GAAG,CAAC,OAAO,GAAG,MAAM,CAAC;IAChC,MAAM,EAAE,GAAG,CAAC;IACZ,QAAQ,EAAE,GAAG,CAAC;IACd,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;IAClB,iBAAiB,CAAC,EAAE,OAAO,CAAC;IAC5B,eAAe,CAAC,EAAE,OAAO,CAAC;IAG1B,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,YAAY,CAAC,EAAE,OAAO,CAAC;IAEvB,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAC3B,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,cAAc,CAAC,EAAE,OAAO,CAAC;CAC5B;AAsBD,iBAAS,aAAa,CAAC,KAAK,EAAE,MAAM,qBA6LnC;kBA7LQ,aAAa;;;AAgMtB,OAAO,EAAE,aAAa,EAAE,CAAC"}
@@ -106,10 +106,7 @@ function NewInlineEdit(props) {
106
106
  React.createElement(Trans, null, props.saveLabel)),
107
107
  React.createElement("button", { type: "button", "data-tracking-id": props.dataTrackingId ? `${props.dataTrackingId}-inline-edit-cancel` : null, className: "btn btn-app btn-link", onClick: onCancelClicked },
108
108
  React.createElement(Trans, null, props.cancelLabel))));
109
- const showAlwaysEditableInput = props.showAlwaysEditableInput !== false;
110
109
  const canShowContent = !isEditing && props.allowInlineEdit && props.content;
111
- const canShowReadOnlyContent = !props.allowInlineEdit && !showAlwaysEditableInput && props.content;
112
- const contentDisplayClassName = props.hideLabel ? 'pf-v6-u-display-inline' : 'pf-v6-u-display-block';
113
110
  const showCount = ` ${props.charCount} / ${props.charTotal}`;
114
111
  return (React.createElement("div", { className: `form-group edit-question pf-v6-u-display-flex pf-v6-u-flex-direction-column ${props.formClassName}`, id: props.formId },
115
112
  !props.hideLabel && (React.createElement(React.Fragment, null,
@@ -121,18 +118,16 @@ function NewInlineEdit(props) {
121
118
  props.hideSaveCancel && isEditing && (React.createElement("span", { className: `
122
119
  ${props.charCount > props.charTotal ? 'char-count pf-v6-u-danger-color-100' : 'char-count'}` }, props.charCount ? showCount : null)),
123
120
  canShowContent && !props.usePreformattedTag && (React.createElement(React.Fragment, null,
124
- React.createElement("p", { id: props.inputId, className: contentDisplayClassName },
121
+ React.createElement("p", { id: props.inputId, style: { display: props.hideLabel ? 'inline' : 'block' } },
125
122
  props.content,
126
123
  React.createElement(React.Fragment, null,
127
124
  props.helperContent,
128
125
  renderEditButton()),
129
126
  props.loadingIndicator && React.createElement("span", { className: "loading-indicator" }, props.loadingIndicator)))),
130
127
  canShowContent && props.usePreformattedTag && React.createElement("pre", { id: props.inputId }, props.content),
131
- canShowReadOnlyContent && !props.usePreformattedTag && (React.createElement("p", { id: props.inputId, className: contentDisplayClassName }, props.content)),
132
- canShowReadOnlyContent && props.usePreformattedTag && React.createElement("pre", { id: props.inputId }, props.content),
133
128
  React.createElement(React.Fragment, null,
134
129
  React.createElement("div", { onBlur: onBlurChild, onKeyDown: handleKeyDown, className: "inlineEdit-wrapper", "data-tracking-id": "inline-edit-input-wrapper" },
135
- !props.allowInlineEdit && showAlwaysEditableInput && props.children,
130
+ !props.allowInlineEdit && props.children,
136
131
  props.allowInlineEdit &&
137
132
  isEditing &&
138
133
  React.Children.map(props.children, (child) => {
@@ -0,0 +1,49 @@
1
+ import './markdownEditor.css';
2
+ import { IAttachment } from '@cee-eng/hydrajs/@types/models/attachment';
3
+ import { IMarkdownOptions } from '@cee-eng/ui-toolkit';
4
+ import React, { HTMLProps } from 'react';
5
+ export declare enum EditorMode {
6
+ PLAIN = "plaintext",
7
+ MARKDOWN = "markdown"
8
+ }
9
+ interface IFileSelectorProps {
10
+ showFileSelectorInToolbar: boolean;
11
+ filesList: Partial<IAttachment>[];
12
+ onFileSelect: (file: Partial<IAttachment>) => void;
13
+ onFileDelete: (file: Partial<IAttachment>) => void;
14
+ onClipboardPaste: (file: any) => void;
15
+ isSupportedFile: (extension: string) => boolean;
16
+ attachFileBtn: React.ReactNode;
17
+ isUploadingFile: boolean;
18
+ }
19
+ export interface IMDEditorProps extends Omit<HTMLProps<HTMLTextAreaElement>, 'onChange' | 'value' | 'ref'> {
20
+ value: string;
21
+ onChange: (value: string, mode?: EditorMode) => void;
22
+ className?: string;
23
+ id?: string;
24
+ hidePreviewText?: string;
25
+ showPreviewText?: string;
26
+ bindTextArea?: (ref: HTMLTextAreaElement) => void;
27
+ textAreaClassName?: string;
28
+ mdPlaceholder?: string;
29
+ plainTextPlaceholder?: string;
30
+ allowEmoji?: boolean;
31
+ hideHeadingOptions?: boolean;
32
+ markedownOptions?: IMarkdownOptions;
33
+ showMarkdownPlainTextToggle?: boolean;
34
+ editorMode?: EditorMode;
35
+ charLimit?: number;
36
+ minCharsForCounter?: number;
37
+ onCommentExceedCharsLimit: (val: boolean) => void;
38
+ fileSelectorProps?: Partial<IFileSelectorProps>;
39
+ }
40
+ export declare const validateFile: (file: Partial<IAttachment>) => {
41
+ isValid: boolean;
42
+ errorMsg: string;
43
+ };
44
+ declare function MarkdownEditor(props: IMDEditorProps): React.JSX.Element;
45
+ declare namespace MarkdownEditor {
46
+ var defaultProps: Partial<IMDEditorProps>;
47
+ }
48
+ export { MarkdownEditor };
49
+ //# sourceMappingURL=MarkdownEditor.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"MarkdownEditor.d.ts","sourceRoot":"","sources":["../../../src/MarkdownEditor/MarkdownEditor.tsx"],"names":[],"mappings":"AAAA,OAAO,sBAAsB,CAAC;AAE9B,OAAO,EAAE,WAAW,EAAE,MAAM,2CAA2C,CAAC;AACxE,OAAO,EAAE,gBAAgB,EAAwB,MAAM,qBAAqB,CAAC;AAiC7E,OAAO,KAAK,EAAE,EAAE,SAAS,EAA+B,MAAM,OAAO,CAAC;AAMtE,oBAAY,UAAU;IAClB,KAAK,cAAc;IACnB,QAAQ,aAAa;CACxB;AAED,UAAU,kBAAkB;IACxB,yBAAyB,EAAE,OAAO,CAAC;IACnC,SAAS,EAAE,OAAO,CAAC,WAAW,CAAC,EAAE,CAAC;IAClC,YAAY,EAAE,CAAC,IAAI,EAAE,OAAO,CAAC,WAAW,CAAC,KAAK,IAAI,CAAC;IACnD,YAAY,EAAE,CAAC,IAAI,EAAE,OAAO,CAAC,WAAW,CAAC,KAAK,IAAI,CAAC;IACnD,gBAAgB,EAAE,CAAC,IAAI,KAAA,KAAK,IAAI,CAAC;IACjC,eAAe,EAAE,CAAC,SAAS,EAAE,MAAM,KAAK,OAAO,CAAC;IAChD,aAAa,EAAE,KAAK,CAAC,SAAS,CAAC;IAC/B,eAAe,EAAE,OAAO,CAAC;CAC5B;AAED,MAAM,WAAW,cAAe,SAAQ,IAAI,CAAC,SAAS,CAAC,mBAAmB,CAAC,EAAE,UAAU,GAAG,OAAO,GAAG,KAAK,CAAC;IACtG,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,UAAU,KAAK,IAAI,CAAC;IACrD,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,YAAY,CAAC,EAAE,CAAC,GAAG,EAAE,mBAAmB,KAAK,IAAI,CAAC;IAClD,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,oBAAoB,CAAC,EAAE,MAAM,CAAC;IAC9B,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,kBAAkB,CAAC,EAAE,OAAO,CAAC;IAC7B,gBAAgB,CAAC,EAAE,gBAAgB,CAAC;IACpC,2BAA2B,CAAC,EAAE,OAAO,CAAC;IACtC,UAAU,CAAC,EAAE,UAAU,CAAC;IACxB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B,yBAAyB,EAAE,CAAC,GAAG,EAAE,OAAO,KAAK,IAAI,CAAC;IAClD,iBAAiB,CAAC,EAAE,OAAO,CAAC,kBAAkB,CAAC,CAAC;CACnD;AA2BD,eAAO,MAAM,YAAY,GAAI,MAAM,OAAO,CAAC,WAAW,CAAC,KAAG;IAAE,OAAO,EAAE,OAAO,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAA;CAiB7F,CAAC;AAEF,iBAAS,cAAc,CAAC,KAAK,EAAE,cAAc,qBAk8B5C;kBAl8BQ,cAAc;;;AAs8BvB,OAAO,EAAE,cAAc,EAAE,CAAC"}