@bigbinary/neeto-molecules 5.1.19 → 5.1.21

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 (166) hide show
  1. package/dist/FinderModal.js +56 -9
  2. package/dist/FinderModal.js.map +1 -1
  3. package/dist/IpRestriction.js +2 -3175
  4. package/dist/IpRestriction.js.map +1 -1
  5. package/dist/MadeWith.js +3 -74
  6. package/dist/MadeWith.js.map +1 -1
  7. package/dist/NeetoWidget.js +3 -1958
  8. package/dist/NeetoWidget.js.map +1 -1
  9. package/dist/Onboarding.js +3 -400
  10. package/dist/Onboarding.js.map +1 -1
  11. package/dist/chevron-up-B2_LTx_h.js +15 -0
  12. package/dist/chevron-up-B2_LTx_h.js.map +1 -0
  13. package/dist/cjs/FinderModal.js +54 -7
  14. package/dist/cjs/FinderModal.js.map +1 -1
  15. package/dist/cjs/IpRestriction.js +21 -3194
  16. package/dist/cjs/IpRestriction.js.map +1 -1
  17. package/dist/cjs/MadeWith.js +17 -88
  18. package/dist/cjs/MadeWith.js.map +1 -1
  19. package/dist/cjs/NeetoWidget.js +4 -1959
  20. package/dist/cjs/NeetoWidget.js.map +1 -1
  21. package/dist/cjs/Onboarding.js +3 -400
  22. package/dist/cjs/Onboarding.js.map +1 -1
  23. package/dist/cjs/chevron-up-CpzhFWzM.js +17 -0
  24. package/dist/cjs/chevron-up-CpzhFWzM.js.map +1 -0
  25. package/dist/cjs/copy-CerjTcLL.js +20 -0
  26. package/dist/cjs/copy-CerjTcLL.js.map +1 -0
  27. package/dist/cjs/globe-DawgK2Dx.js +21 -0
  28. package/dist/cjs/globe-DawgK2Dx.js.map +1 -0
  29. package/dist/cjs/index-ARGXqXxG.js +78 -0
  30. package/dist/cjs/index-ARGXqXxG.js.map +1 -0
  31. package/dist/cjs/index-BeqE2JWC.js +3180 -0
  32. package/dist/cjs/index-BeqE2JWC.js.map +1 -0
  33. package/dist/cjs/panel-left-close-CLoRPBWH.js +21 -0
  34. package/dist/cjs/panel-left-close-CLoRPBWH.js.map +1 -0
  35. package/dist/cjs/phone-number-Bza7WGZm.js +315 -0
  36. package/dist/cjs/phone-number-Bza7WGZm.js.map +1 -0
  37. package/dist/cjs/prism-tomorrow-BMFuJ5o1.js +1963 -0
  38. package/dist/cjs/prism-tomorrow-BMFuJ5o1.js.map +1 -0
  39. package/dist/cjs/react-confetti-DdGoyZ0y.js +405 -0
  40. package/dist/cjs/react-confetti-DdGoyZ0y.js.map +1 -0
  41. package/dist/cjs/smartphone-ChvEvl-o.js +36 -0
  42. package/dist/cjs/smartphone-ChvEvl-o.js.map +1 -0
  43. package/dist/cjs/trash-2-CotPjU5n.js +23 -0
  44. package/dist/cjs/trash-2-CotPjU5n.js.map +1 -0
  45. package/dist/cjs/triangle-alert-De-qkUXK.js +27 -0
  46. package/dist/cjs/triangle-alert-De-qkUXK.js.map +1 -0
  47. package/dist/cjs/v2/AuditLogs.js +4 -18
  48. package/dist/cjs/v2/AuditLogs.js.map +1 -1
  49. package/dist/cjs/v2/Builder.js +4 -18
  50. package/dist/cjs/v2/Builder.js.map +1 -1
  51. package/dist/cjs/v2/Codeblock.js +1 -0
  52. package/dist/cjs/v2/Codeblock.js.map +1 -1
  53. package/dist/cjs/v2/CopyToClipboardButton.js +3 -16
  54. package/dist/cjs/v2/CopyToClipboardButton.js.map +1 -1
  55. package/dist/cjs/v2/FinderModal.js +48 -14
  56. package/dist/cjs/v2/FinderModal.js.map +1 -1
  57. package/dist/cjs/v2/FloatingActionMenu.js +1 -0
  58. package/dist/cjs/v2/FloatingActionMenu.js.map +1 -1
  59. package/dist/cjs/v2/Insights.js +344 -0
  60. package/dist/cjs/v2/Insights.js.map +1 -0
  61. package/dist/cjs/v2/IntegrationCard.js +222 -0
  62. package/dist/cjs/v2/IntegrationCard.js.map +1 -0
  63. package/dist/cjs/v2/IpRestriction.js +525 -0
  64. package/dist/cjs/v2/IpRestriction.js.map +1 -0
  65. package/dist/cjs/v2/MadeWith.js +73 -0
  66. package/dist/cjs/v2/MadeWith.js.map +1 -0
  67. package/dist/cjs/v2/Metadata.js +215 -0
  68. package/dist/cjs/v2/Metadata.js.map +1 -0
  69. package/dist/cjs/v2/NavigationHeader.js +1 -0
  70. package/dist/cjs/v2/NavigationHeader.js.map +1 -1
  71. package/dist/cjs/v2/NeetoWidget.js +855 -0
  72. package/dist/cjs/v2/NeetoWidget.js.map +1 -0
  73. package/dist/cjs/v2/Onboarding.js +323 -0
  74. package/dist/cjs/v2/Onboarding.js.map +1 -0
  75. package/dist/cjs/v2/OptionFields.js +1291 -0
  76. package/dist/cjs/v2/OptionFields.js.map +1 -0
  77. package/dist/cjs/v2/PhoneNumber.js +20 -307
  78. package/dist/cjs/v2/PhoneNumber.js.map +1 -1
  79. package/dist/cjs/v2/ProductEmbed.js +1870 -0
  80. package/dist/cjs/v2/ProductEmbed.js.map +1 -0
  81. package/dist/cjs/v2/PublishBlock.js +6 -22
  82. package/dist/cjs/v2/PublishBlock.js.map +1 -1
  83. package/dist/cjs/v2/PublishYourItem.js +60 -0
  84. package/dist/cjs/v2/PublishYourItem.js.map +1 -0
  85. package/dist/cjs/v2/ResponsiveDevicePicker.js +88 -0
  86. package/dist/cjs/v2/ResponsiveDevicePicker.js.map +1 -0
  87. package/dist/cjs/v2/SessionEnvironment.js +479 -0
  88. package/dist/cjs/v2/SessionEnvironment.js.map +1 -0
  89. package/dist/copy-DhbOoOav.js +18 -0
  90. package/dist/copy-DhbOoOav.js.map +1 -0
  91. package/dist/globe-rBiI1CjO.js +19 -0
  92. package/dist/globe-rBiI1CjO.js.map +1 -0
  93. package/dist/index-0jnA7dx6.js +3178 -0
  94. package/dist/index-0jnA7dx6.js.map +1 -0
  95. package/dist/index-DF5MKxql.js +76 -0
  96. package/dist/index-DF5MKxql.js.map +1 -0
  97. package/dist/panel-left-close-37jik3GB.js +19 -0
  98. package/dist/panel-left-close-37jik3GB.js.map +1 -0
  99. package/dist/phone-number-CGZtDB_n.js +291 -0
  100. package/dist/phone-number-CGZtDB_n.js.map +1 -0
  101. package/dist/prism-tomorrow-ZUb2Ikm9.js +1961 -0
  102. package/dist/prism-tomorrow-ZUb2Ikm9.js.map +1 -0
  103. package/dist/react-confetti-BnGq_LBE.js +403 -0
  104. package/dist/react-confetti-BnGq_LBE.js.map +1 -0
  105. package/dist/smartphone-B-jv1y8j.js +33 -0
  106. package/dist/smartphone-B-jv1y8j.js.map +1 -0
  107. package/dist/trash-2-N0F6K63L.js +21 -0
  108. package/dist/trash-2-N0F6K63L.js.map +1 -0
  109. package/dist/triangle-alert-Pkh6pc42.js +25 -0
  110. package/dist/triangle-alert-Pkh6pc42.js.map +1 -0
  111. package/dist/v2/AuditLogs.js +3 -17
  112. package/dist/v2/AuditLogs.js.map +1 -1
  113. package/dist/v2/Builder.js +3 -17
  114. package/dist/v2/Builder.js.map +1 -1
  115. package/dist/v2/Codeblock.js +1 -0
  116. package/dist/v2/Codeblock.js.map +1 -1
  117. package/dist/v2/CopyToClipboardButton.js +2 -15
  118. package/dist/v2/CopyToClipboardButton.js.map +1 -1
  119. package/dist/v2/FinderModal.js +49 -15
  120. package/dist/v2/FinderModal.js.map +1 -1
  121. package/dist/v2/FloatingActionMenu.js +1 -0
  122. package/dist/v2/FloatingActionMenu.js.map +1 -1
  123. package/dist/v2/Insights.js +342 -0
  124. package/dist/v2/Insights.js.map +1 -0
  125. package/dist/v2/IntegrationCard.js +220 -0
  126. package/dist/v2/IntegrationCard.js.map +1 -0
  127. package/dist/v2/IpRestriction.js +504 -0
  128. package/dist/v2/IpRestriction.js.map +1 -0
  129. package/dist/v2/MadeWith.js +52 -0
  130. package/dist/v2/MadeWith.js.map +1 -0
  131. package/dist/v2/Metadata.js +213 -0
  132. package/dist/v2/Metadata.js.map +1 -0
  133. package/dist/v2/NavigationHeader.js +1 -0
  134. package/dist/v2/NavigationHeader.js.map +1 -1
  135. package/dist/v2/NeetoWidget.js +834 -0
  136. package/dist/v2/NeetoWidget.js.map +1 -0
  137. package/dist/v2/Onboarding.js +321 -0
  138. package/dist/v2/Onboarding.js.map +1 -0
  139. package/dist/v2/OptionFields.js +1289 -0
  140. package/dist/v2/OptionFields.js.map +1 -0
  141. package/dist/v2/PhoneNumber.js +20 -287
  142. package/dist/v2/PhoneNumber.js.map +1 -1
  143. package/dist/v2/ProductEmbed.js +1868 -0
  144. package/dist/v2/ProductEmbed.js.map +1 -0
  145. package/dist/v2/PublishBlock.js +5 -21
  146. package/dist/v2/PublishBlock.js.map +1 -1
  147. package/dist/v2/PublishYourItem.js +58 -0
  148. package/dist/v2/PublishYourItem.js.map +1 -0
  149. package/dist/v2/ResponsiveDevicePicker.js +86 -0
  150. package/dist/v2/ResponsiveDevicePicker.js.map +1 -0
  151. package/dist/v2/SessionEnvironment.js +477 -0
  152. package/dist/v2/SessionEnvironment.js.map +1 -0
  153. package/package.json +3 -3
  154. package/types/v2/Insights.d.ts +69 -0
  155. package/types/v2/IntegrationCard.d.ts +30 -0
  156. package/types/v2/IpRestriction.d.ts +5 -0
  157. package/types/v2/MadeWith.d.ts +8 -0
  158. package/types/v2/Metadata.d.ts +26 -0
  159. package/types/v2/MobilePreviewHeader.d.ts +8 -0
  160. package/types/v2/NeetoWidget.d.ts +19 -0
  161. package/types/v2/Onboarding.d.ts +22 -0
  162. package/types/v2/OptionFields.d.ts +55 -0
  163. package/types/v2/ProductEmbed.d.ts +90 -0
  164. package/types/v2/PublishYourItem.d.ts +8 -0
  165. package/types/v2/ResponsiveDevicePicker.d.ts +11 -0
  166. package/types/v2/SessionEnvironment.d.ts +34 -0
@@ -1,12 +1,14 @@
1
1
  import _defineProperty from '@babel/runtime/helpers/defineProperty';
2
2
  import _objectWithoutProperties from '@babel/runtime/helpers/objectWithoutProperties';
3
- import React__default, { useRef } from 'react';
4
- import { isNotEmpty, isNotPresent, humanize, noop } from '@bigbinary/neeto-cist';
3
+ import React__default, { useRef, useEffect } from 'react';
4
+ import { noop, isNotEmpty, isNotPresent, humanize } from '@bigbinary/neeto-cist';
5
5
  import useHotkeys from '@bigbinary/neeto-hotkeys';
6
6
  import Modal from '@bigbinary/neetoui/Modal';
7
7
  import { isEmpty, prop } from 'ramda';
8
+ import _slicedToArray from '@babel/runtime/helpers/slicedToArray';
8
9
  import Typography from '@bigbinary/neetoui/Typography';
9
10
  import NoData from '@bigbinary/neetoui/NoData';
11
+ import Spinner from '@bigbinary/neetoui/Spinner';
10
12
  import Tag from '@bigbinary/neetoui/Tag';
11
13
  import { useTranslation } from 'react-i18next';
12
14
  import { Link as Link$1 } from 'react-router-dom';
@@ -16,9 +18,7 @@ import Down from '@bigbinary/neeto-icons/Down';
16
18
  import Up from '@bigbinary/neeto-icons/Up';
17
19
  import { withT } from '@bigbinary/neeto-commons-frontend/react-utils';
18
20
  import Button from '@bigbinary/neetoui/Button';
19
- import Spinner from '@bigbinary/neetoui/Spinner';
20
21
  import Search from './Search.js';
21
- import '@babel/runtime/helpers/slicedToArray';
22
22
  import '@bigbinary/neeto-commons-frontend/react-utils/useFuncDebounce';
23
23
  import '@bigbinary/neeto-commons-frontend/react-utils/useQueryParams';
24
24
  import '@bigbinary/neeto-commons-frontend/react-utils/useUpdateEffect';
@@ -94,9 +94,39 @@ var ModalBody = function ModalBody(_ref) {
94
94
  data = _ref.data,
95
95
  onClose = _ref.onClose,
96
96
  loading = _ref.loading,
97
- searchTerm = _ref.searchTerm;
97
+ searchTerm = _ref.searchTerm,
98
+ onLoadMore = _ref.onLoadMore,
99
+ _ref$hasMore = _ref.hasMore,
100
+ hasMore = _ref$hasMore === void 0 ? false : _ref$hasMore,
101
+ _ref$isFetchingMore = _ref.isFetchingMore,
102
+ isFetchingMore = _ref$isFetchingMore === void 0 ? false : _ref$isFetchingMore;
98
103
  var _useTranslation = useTranslation(),
99
104
  t = _useTranslation.t;
105
+ var sentinelRef = useRef(null);
106
+ var onLoadMoreRef = useRef(onLoadMore || noop);
107
+ useEffect(function () {
108
+ onLoadMoreRef.current = onLoadMore || noop;
109
+ }, [onLoadMore]);
110
+ var isPaginationEnabled = Boolean(onLoadMore);
111
+ useEffect(function () {
112
+ var sentinel = sentinelRef.current;
113
+ if (!sentinel || !isPaginationEnabled || !hasMore || isFetchingMore) {
114
+ return undefined;
115
+ }
116
+ var root = sentinel.closest(".neeto-molecules-finder-modal__body");
117
+ var observer = new IntersectionObserver(function (_ref2) {
118
+ var _ref3 = _slicedToArray(_ref2, 1),
119
+ entry = _ref3[0];
120
+ if (entry.isIntersecting) onLoadMoreRef.current();
121
+ }, {
122
+ root: root,
123
+ rootMargin: "120px"
124
+ });
125
+ observer.observe(sentinel);
126
+ return function () {
127
+ return observer.disconnect();
128
+ };
129
+ }, [isPaginationEnabled, hasMore, isFetchingMore]);
100
130
  var categoryGroups = Object.keys(data).filter(function (key) {
101
131
  return isNotEmpty(data[key]);
102
132
  });
@@ -112,10 +142,10 @@ var ModalBody = function ModalBody(_ref) {
112
142
  }
113
143
  return /*#__PURE__*/jsx(Modal.Body, {
114
144
  className: "neeto-molecules-finder-modal__body h-96 overflow-y-auto px-3 py-4",
115
- children: /*#__PURE__*/jsx("div", {
145
+ children: /*#__PURE__*/jsxs("div", {
116
146
  className: "flex flex-col",
117
147
  ref: containerRef,
118
- children: categoryGroups.map(function (category, categoryIndex) {
148
+ children: [categoryGroups.map(function (category, categoryIndex) {
119
149
  var items = data[category];
120
150
  var shouldShowCategoryDivider = categoryIndex < categoryGroups.length - 1;
121
151
  return /*#__PURE__*/jsxs("div", {
@@ -154,7 +184,18 @@ var ModalBody = function ModalBody(_ref) {
154
184
  className: "neeto-ui-border-gray-300 mx-3 my-3 border-t"
155
185
  })]
156
186
  }, category);
157
- })
187
+ }), onLoadMore && hasMore && /*#__PURE__*/jsx("div", {
188
+ "aria-hidden": "true",
189
+ className: "h-px w-full",
190
+ "data-testid": "neeto-molecules-finder-modal-sentinel",
191
+ ref: sentinelRef
192
+ }), isFetchingMore && /*#__PURE__*/jsx("div", {
193
+ className: "flex items-center justify-center py-3",
194
+ "data-testid": "neeto-molecules-finder-modal-loading-more",
195
+ children: /*#__PURE__*/jsx(Spinner, {
196
+ size: "small"
197
+ })
198
+ })]
158
199
  })
159
200
  });
160
201
  };
@@ -251,7 +292,7 @@ var ModalHeader = withT(function (_ref) {
251
292
  });
252
293
  });
253
294
 
254
- var _excluded = ["enableAdvancedSearch", "data", "isFetching", "isOpen", "searchTerm", "setSearchTerm", "onClose", "onGoToAdvanced"];
295
+ var _excluded = ["enableAdvancedSearch", "data", "isFetching", "isOpen", "searchTerm", "setSearchTerm", "onClose", "onGoToAdvanced", "onLoadMore", "hasMore", "isFetchingMore"];
255
296
  function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
256
297
  function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), true).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
257
298
  var FinderModal = function FinderModal(_ref) {
@@ -265,6 +306,9 @@ var FinderModal = function FinderModal(_ref) {
265
306
  onClose = _ref.onClose,
266
307
  _ref$onGoToAdvanced = _ref.onGoToAdvanced,
267
308
  onGoToAdvanced = _ref$onGoToAdvanced === void 0 ? noop : _ref$onGoToAdvanced,
309
+ onLoadMore = _ref.onLoadMore,
310
+ hasMore = _ref.hasMore,
311
+ isFetchingMore = _ref.isFetchingMore,
268
312
  props = _objectWithoutProperties(_ref, _excluded);
269
313
  var containerRef = useRef();
270
314
  var mutables = useRef({
@@ -307,7 +351,10 @@ var FinderModal = function FinderModal(_ref) {
307
351
  }), /*#__PURE__*/jsx(ModalBody, {
308
352
  containerRef: containerRef,
309
353
  data: data,
354
+ hasMore: hasMore,
355
+ isFetchingMore: isFetchingMore,
310
356
  onClose: onClose,
357
+ onLoadMore: onLoadMore,
311
358
  searchTerm: searchTerm,
312
359
  loading: isFetching
313
360
  }), /*#__PURE__*/jsx(ModalFooter, {
@@ -1 +1 @@
1
- {"version":3,"file":"FinderModal.js","sources":["../src/components/FinderModal/Link.jsx","../src/components/FinderModal/utils.jsx","../src/components/FinderModal/Body.jsx","../src/components/FinderModal/Footer.jsx","../src/components/FinderModal/Header.jsx","../src/components/FinderModal/index.jsx"],"sourcesContent":["import { Link as RRDLink } from \"react-router-dom\";\n\nconst Link = ({ to, children, ...rest }) => {\n const url = new URL(to);\n url.host = \"\";\n\n return (\n <RRDLink {...rest} to={`${url.pathname}${url.search}`}>\n {children}\n </RRDLink>\n );\n};\n\nexport default Link;\n","import React from \"react\";\n\nexport const minMax = (number, max = Number.POSITIVE_INFINITY, min = 0) =>\n Math.min(max, Math.max(min, number));\n\nexport const htmlToText = html => {\n if (!html) return null;\n\n const tmp = document.createElement(\"div\");\n tmp.innerHTML = html;\n\n return tmp.textContent || tmp.innerText || \"\";\n};\n\nexport const highlightMatch = (text, searchTerm) => {\n if (!searchTerm) return text;\n\n const regex = new RegExp(`(${searchTerm})`, \"gi\");\n\n return text.split(regex).map((part, index) =>\n part?.toLowerCase() === searchTerm.toLowerCase() ? (\n <span className=\"neeto-molecules-finder-matched-tag\" key={index}>\n {part}\n </span>\n ) : (\n part\n )\n );\n};\n\nexport const filterAndHighlightContent = (bodyContent, searchTerm) => {\n if (!searchTerm) return bodyContent;\n\n if (!bodyContent) return null;\n\n return bodyContent\n .split(/(.{1,130}(?:\\s|$))/g)\n .filter(line => line.trim())\n .filter(line => line.toLowerCase().includes(searchTerm.toLowerCase()))\n .map((line, index) => (\n <React.Fragment key={index}>\n {highlightMatch(line, searchTerm)}\n <br />\n </React.Fragment>\n ));\n};\n\nexport const flattenData = data => {\n if (!data) return [];\n\n if (Array.isArray(data)) return data;\n\n const result = [];\n Object.keys(data).forEach(key => {\n data[key].forEach(item => {\n result.push({ ...item, category: key });\n });\n });\n\n return result;\n};\n\nexport const createStylePalette = values => {\n const assignedStyles = {};\n let styleIndex = 0;\n\n return key => {\n if (assignedStyles[key]) return assignedStyles[key];\n const style = values[styleIndex];\n styleIndex = (styleIndex + 1) % values.length;\n assignedStyles[key] = style;\n\n return style;\n };\n};\n","import { humanize, isNotEmpty, isNotPresent } from \"neetocist\";\nimport { Modal, Typography, NoData, Tag } from \"neetoui\";\nimport { isEmpty } from \"ramda\";\nimport { useTranslation } from \"react-i18next\";\n\nimport Link from \"./Link\";\nimport {\n htmlToText,\n highlightMatch,\n filterAndHighlightContent,\n createStylePalette,\n} from \"./utils\";\n\nconst getStyle = createStylePalette([\n \"primary\",\n \"info\",\n \"success\",\n \"secondary\",\n \"warning\",\n]);\n\nconst ModalBody = ({ containerRef, data, onClose, loading, searchTerm }) => {\n const { t } = useTranslation();\n\n const categoryGroups = Object.keys(data).filter(key => isNotEmpty(data[key]));\n const isDataEmpty = isNotPresent(data) || isEmpty(categoryGroups);\n\n if (isDataEmpty && !loading) {\n return (\n <Modal.Body className=\"neeto-molecules-finder-modal__body flex h-96 items-center justify-center overflow-y-auto px-3 py-5\">\n <NoData\n description={t(\"neetoMolecules.finderModal.noDataDesc\")}\n title={t(\"neetoMolecules.finderModal.noDataTitle\")}\n />\n </Modal.Body>\n );\n }\n\n return (\n <Modal.Body className=\"neeto-molecules-finder-modal__body h-96 overflow-y-auto px-3 py-4\">\n <div className=\"flex flex-col\" ref={containerRef}>\n {categoryGroups.map((category, categoryIndex) => {\n const items = data[category];\n const shouldShowCategoryDivider =\n categoryIndex < categoryGroups.length - 1;\n\n return (\n <div key={category}>\n {items.map(item => {\n const nameContent = htmlToText(item.name);\n const bodyContent = htmlToText(item.body);\n\n const filteredBodyContent = filterAndHighlightContent(\n bodyContent,\n searchTerm\n );\n\n return (\n <Link\n className=\"neeto-molecules-search-result-item hover:neeto-ui-bg-gray-100 focus:neeto-ui-bg-gray-100 neeto-ui-rounded-lg flex w-full cursor-pointer items-center gap-2 px-3 py-2.5 text-xs transition-all duration-300\"\n key={`${category}-${item.id}`}\n to={item.url}\n onClick={onClose}\n >\n <div className=\"line-clamp-1 flex flex-col gap-1\">\n <div className=\"flex\">\n {nameContent && (\n <Typography\n className=\"neeto-ui-text-black inline-block\"\n component=\"span\"\n lineHeight=\"snug\"\n weight=\"semibold\"\n >\n {highlightMatch(nameContent, searchTerm)}\n {category && (\n <Tag\n className=\"ml-2 inline-block align-middle\"\n size=\"small\"\n style={getStyle(category)}\n type=\"solid\"\n >\n {humanize(category)}\n </Tag>\n )}\n </Typography>\n )}\n </div>\n {bodyContent && (\n <Typography className=\"neeto-ui-text-gray-600 truncate text-xs\">\n {filteredBodyContent || bodyContent}\n </Typography>\n )}\n </div>\n </Link>\n );\n })}\n {shouldShowCategoryDivider && (\n <hr className=\"neeto-ui-border-gray-300 mx-3 my-3 border-t\" />\n )}\n </div>\n );\n })}\n </div>\n </Modal.Body>\n );\n};\n\nexport default ModalBody;\n","import { Down, Up } from \"neetoicons\";\nimport { Modal, Typography } from \"neetoui\";\nimport { prop } from \"ramda\";\nimport { useTranslation } from \"react-i18next\";\n\nconst ModalFooter = ({ enableAdvancedSearch }) => {\n const { t } = useTranslation();\n\n const shortcuts = [\n {\n label: t(\"neetoMolecules.finderModal.advancedSearch\"),\n keys: [\"Cmd/Ctrl\", \"Return\"],\n isVisible: enableAdvancedSearch,\n },\n {\n label: t(\"neetoMolecules.common.actions.open\"),\n keys: [\"Return\"],\n isVisible: true,\n },\n {\n label: t(\"neetoMolecules.common.actions.move\"),\n keys: [\n <Up className=\"neeto-ui-text-gray-600\" key=\"up\" size={12} />,\n <Down className=\"neeto-ui-text-gray-600\" key=\"down\" size={12} />,\n ],\n isVisible: true,\n },\n {\n label: t(\"neetoMolecules.common.actions.close\"),\n keys: [\"Esc\"],\n isVisible: true,\n },\n ];\n\n return (\n <Modal.Footer className=\"neeto-ui-border-gray-300 neeto-molecules-finder-modal__footer border-t px-6 py-4\">\n <div className=\"neeto-ui-text-xxs flex items-center gap-4\">\n {shortcuts.filter(prop(\"isVisible\")).map(({ label, keys }, index) => (\n <div className=\"flex items-center gap-1\" key={index}>\n <Typography\n className=\"neeto-ui-text-gray-600\"\n component=\"span\"\n style=\"nano\"\n >\n {label}\n </Typography>\n {keys.map((key, index) => (\n <Typography\n className=\"neeto-ui-bg-gray-200 neeto-ui-rounded-sm neeto-ui-text-gray-600 px-1.5 py-1\"\n component=\"span\"\n key={index}\n style=\"nano\"\n >\n {key}\n </Typography>\n ))}\n </div>\n ))}\n </div>\n </Modal.Footer>\n );\n};\n\nexport default ModalFooter;\n","import { withT } from \"neetocommons/react-utils\";\nimport { Button, Modal, Spinner } from \"neetoui\";\n\nimport Search from \"components/Search\";\n\nconst ModalHeader = withT(\n ({ t, enableAdvancedSearch, onSearch, onGoToAdvanced, loading }) => (\n <Modal.Header className=\"neeto-molecules-finder-modal__header neeto-ui-border-gray-300 border-b px-0 py-0\">\n <Search\n {...{ onSearch }}\n nakedInput\n autoComplete=\"off\"\n className=\"neeto-molecules-finder-modal__search px-6 py-3\"\n name=\"term\"\n placeholder={t(\"neetoMolecules.common.actions.search\")}\n suffix={\n <div className=\"ms-3 flex items-center\">\n <div className=\"h-4 w-4 flex-shrink-0\">\n {loading && <Spinner size=\"small\" />}\n </div>\n {enableAdvancedSearch && (\n <Button\n className=\"ms-3 whitespace-nowrap\"\n label={t(\"neetoMolecules.finderModal.advancedSearch\")}\n size=\"small\"\n style=\"tertiary\"\n onClick={onGoToAdvanced}\n />\n )}\n </div>\n }\n />\n </Modal.Header>\n )\n);\n\nexport default ModalHeader;\n","import { useRef } from \"react\";\n\nimport { noop } from \"neetocist\";\nimport useHotkeys from \"neetohotkeys\";\nimport { Modal } from \"neetoui\";\nimport PropTypes from \"prop-types\";\nimport { isEmpty } from \"ramda\";\n\nimport ModalBody from \"./Body\";\nimport \"./finder-modal.scss\";\nimport ModalFooter from \"./Footer\";\nimport ModalHeader from \"./Header\";\nimport { minMax } from \"./utils\";\n\nconst FinderModal = ({\n enableAdvancedSearch = true,\n data,\n isFetching,\n isOpen,\n searchTerm,\n setSearchTerm,\n onClose,\n onGoToAdvanced = noop,\n ...props\n}) => {\n const containerRef = useRef();\n const mutables = useRef({ focusIndex: -1 }).current;\n\n const onFocusChange = offset => {\n const container = containerRef.current;\n if (!container) return;\n\n const nodes = container.querySelectorAll(\n \"a.neeto-molecules-search-result-item\"\n );\n\n if (isEmpty(nodes)) return;\n\n mutables.focusIndex = minMax(\n mutables.focusIndex + offset,\n nodes.length - 1\n );\n\n const targetNode = nodes[mutables.focusIndex];\n if (targetNode) {\n targetNode.focus();\n }\n };\n\n useHotkeys(\n [\"up\", \"down\"],\n event => {\n event.preventDefault();\n if (event.code === \"ArrowUp\") onFocusChange(-1);\n else if (event.code === \"ArrowDown\") onFocusChange(1);\n },\n { mode: \"global\", enabled: isOpen }\n );\n\n useHotkeys([\"ctrl+enter\", \"command+enter\"], onGoToAdvanced, {\n mode: \"global\",\n enabled: isOpen && enableAdvancedSearch,\n });\n\n return (\n <Modal\n {...{ isOpen, onClose }}\n closeButton={false}\n {...props}\n backdropClassName=\"neeto-molecules-finder-modal-backdrop py-10 px-4\"\n className=\"neeto-molecules-finder-modal\"\n >\n <ModalHeader\n {...{ enableAdvancedSearch, onGoToAdvanced }}\n loading={isFetching}\n onSearch={setSearchTerm}\n />\n <ModalBody\n {...{ containerRef, data, onClose, searchTerm }}\n loading={isFetching}\n />\n <ModalFooter {...{ enableAdvancedSearch }} />\n </Modal>\n );\n};\n\nFinderModal.propTypes = {\n /*\n Boolean to indicate decide whether to show advanced search button or not\n */\n enableAdvancedSearch: PropTypes.bool,\n /*\n Data to be displayed in the modal\n */\n data: PropTypes.objectOf(\n PropTypes.arrayOf(\n PropTypes.shape({\n id: PropTypes.string,\n url: PropTypes.string,\n body: PropTypes.string,\n name: PropTypes.string,\n })\n )\n ),\n /*\n Boolean to indicate whether data is being fetched or not\n */\n isFetching: PropTypes.bool,\n /*\n Boolean to indicate whether modal is open or not\n */\n isOpen: PropTypes.bool,\n /*\n Term used for search\n */\n searchTerm: PropTypes.string,\n /*\n Function to set search term\n */\n setSearchTerm: PropTypes.func,\n /*\n Function to close the modal\n */\n onClose: PropTypes.func,\n /*\n Function to execute when user clicks on advanced search button\n */\n onGoToAdvanced: PropTypes.func,\n};\n\nexport default FinderModal;\n"],"names":["Link","_ref","to","children","rest","_objectWithoutProperties","_excluded","url","URL","host","_jsx","RRDLink","_objectSpread","concat","pathname","search","minMax","number","max","arguments","length","undefined","Number","POSITIVE_INFINITY","min","Math","htmlToText","html","tmp","document","createElement","innerHTML","textContent","innerText","highlightMatch","text","searchTerm","regex","RegExp","split","map","part","index","toLowerCase","className","filterAndHighlightContent","bodyContent","filter","line","trim","includes","_jsxs","React","Fragment","createStylePalette","values","assignedStyles","styleIndex","key","style","getStyle","ModalBody","containerRef","data","onClose","loading","_useTranslation","useTranslation","t","categoryGroups","Object","keys","isNotEmpty","isDataEmpty","isNotPresent","isEmpty","Modal","Body","NoData","description","title","ref","category","categoryIndex","items","shouldShowCategoryDivider","item","nameContent","name","body","filteredBodyContent","onClick","Typography","component","lineHeight","weight","Tag","size","type","humanize","id","ModalFooter","enableAdvancedSearch","shortcuts","label","isVisible","Up","Down","Footer","prop","_ref2","ModalHeader","withT","onSearch","onGoToAdvanced","Header","Search","nakedInput","autoComplete","placeholder","suffix","Spinner","Button","FinderModal","_ref$enableAdvancedSe","isFetching","isOpen","setSearchTerm","_ref$onGoToAdvanced","noop","props","useRef","mutables","focusIndex","current","onFocusChange","offset","container","nodes","querySelectorAll","targetNode","focus","useHotkeys","event","preventDefault","code","mode","enabled","closeButton","backdropClassName"],"mappings":"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"}
1
+ {"version":3,"file":"FinderModal.js","sources":["../src/components/FinderModal/Link.jsx","../src/components/FinderModal/utils.jsx","../src/components/FinderModal/Body.jsx","../src/components/FinderModal/Footer.jsx","../src/components/FinderModal/Header.jsx","../src/components/FinderModal/index.jsx"],"sourcesContent":["import { Link as RRDLink } from \"react-router-dom\";\n\nconst Link = ({ to, children, ...rest }) => {\n const url = new URL(to);\n url.host = \"\";\n\n return (\n <RRDLink {...rest} to={`${url.pathname}${url.search}`}>\n {children}\n </RRDLink>\n );\n};\n\nexport default Link;\n","import React from \"react\";\n\nexport const minMax = (number, max = Number.POSITIVE_INFINITY, min = 0) =>\n Math.min(max, Math.max(min, number));\n\nexport const htmlToText = html => {\n if (!html) return null;\n\n const tmp = document.createElement(\"div\");\n tmp.innerHTML = html;\n\n return tmp.textContent || tmp.innerText || \"\";\n};\n\nexport const highlightMatch = (text, searchTerm) => {\n if (!searchTerm) return text;\n\n const regex = new RegExp(`(${searchTerm})`, \"gi\");\n\n return text.split(regex).map((part, index) =>\n part?.toLowerCase() === searchTerm.toLowerCase() ? (\n <span className=\"neeto-molecules-finder-matched-tag\" key={index}>\n {part}\n </span>\n ) : (\n part\n )\n );\n};\n\nexport const filterAndHighlightContent = (bodyContent, searchTerm) => {\n if (!searchTerm) return bodyContent;\n\n if (!bodyContent) return null;\n\n return bodyContent\n .split(/(.{1,130}(?:\\s|$))/g)\n .filter(line => line.trim())\n .filter(line => line.toLowerCase().includes(searchTerm.toLowerCase()))\n .map((line, index) => (\n <React.Fragment key={index}>\n {highlightMatch(line, searchTerm)}\n <br />\n </React.Fragment>\n ));\n};\n\nexport const flattenData = data => {\n if (!data) return [];\n\n if (Array.isArray(data)) return data;\n\n const result = [];\n Object.keys(data).forEach(key => {\n data[key].forEach(item => {\n result.push({ ...item, category: key });\n });\n });\n\n return result;\n};\n\nexport const createStylePalette = values => {\n const assignedStyles = {};\n let styleIndex = 0;\n\n return key => {\n if (assignedStyles[key]) return assignedStyles[key];\n const style = values[styleIndex];\n styleIndex = (styleIndex + 1) % values.length;\n assignedStyles[key] = style;\n\n return style;\n };\n};\n","import { useEffect, useRef } from \"react\";\n\nimport { humanize, isNotEmpty, isNotPresent, noop } from \"neetocist\";\nimport { Modal, Typography, NoData, Spinner, Tag } from \"neetoui\";\nimport { isEmpty } from \"ramda\";\nimport { useTranslation } from \"react-i18next\";\n\nimport Link from \"./Link\";\nimport {\n htmlToText,\n highlightMatch,\n filterAndHighlightContent,\n createStylePalette,\n} from \"./utils\";\n\nconst getStyle = createStylePalette([\n \"primary\",\n \"info\",\n \"success\",\n \"secondary\",\n \"warning\",\n]);\n\nconst ModalBody = ({\n containerRef,\n data,\n onClose,\n loading,\n searchTerm,\n onLoadMore,\n hasMore = false,\n isFetchingMore = false,\n}) => {\n const { t } = useTranslation();\n const sentinelRef = useRef(null);\n const onLoadMoreRef = useRef(onLoadMore || noop);\n\n useEffect(() => {\n onLoadMoreRef.current = onLoadMore || noop;\n }, [onLoadMore]);\n\n const isPaginationEnabled = Boolean(onLoadMore);\n\n useEffect(() => {\n const sentinel = sentinelRef.current;\n if (!sentinel || !isPaginationEnabled || !hasMore || isFetchingMore) {\n return undefined;\n }\n\n const root = sentinel.closest(\".neeto-molecules-finder-modal__body\");\n const observer = new IntersectionObserver(\n ([entry]) => {\n if (entry.isIntersecting) onLoadMoreRef.current();\n },\n { root, rootMargin: \"120px\" }\n );\n observer.observe(sentinel);\n\n return () => observer.disconnect();\n }, [isPaginationEnabled, hasMore, isFetchingMore]);\n\n const categoryGroups = Object.keys(data).filter(key => isNotEmpty(data[key]));\n const isDataEmpty = isNotPresent(data) || isEmpty(categoryGroups);\n\n if (isDataEmpty && !loading) {\n return (\n <Modal.Body className=\"neeto-molecules-finder-modal__body flex h-96 items-center justify-center overflow-y-auto px-3 py-5\">\n <NoData\n description={t(\"neetoMolecules.finderModal.noDataDesc\")}\n title={t(\"neetoMolecules.finderModal.noDataTitle\")}\n />\n </Modal.Body>\n );\n }\n\n return (\n <Modal.Body className=\"neeto-molecules-finder-modal__body h-96 overflow-y-auto px-3 py-4\">\n <div className=\"flex flex-col\" ref={containerRef}>\n {categoryGroups.map((category, categoryIndex) => {\n const items = data[category];\n const shouldShowCategoryDivider =\n categoryIndex < categoryGroups.length - 1;\n\n return (\n <div key={category}>\n {items.map(item => {\n const nameContent = htmlToText(item.name);\n const bodyContent = htmlToText(item.body);\n\n const filteredBodyContent = filterAndHighlightContent(\n bodyContent,\n searchTerm\n );\n\n return (\n <Link\n className=\"neeto-molecules-search-result-item hover:neeto-ui-bg-gray-100 focus:neeto-ui-bg-gray-100 neeto-ui-rounded-lg flex w-full cursor-pointer items-center gap-2 px-3 py-2.5 text-xs transition-all duration-300\"\n key={`${category}-${item.id}`}\n to={item.url}\n onClick={onClose}\n >\n <div className=\"line-clamp-1 flex flex-col gap-1\">\n <div className=\"flex\">\n {nameContent && (\n <Typography\n className=\"neeto-ui-text-black inline-block\"\n component=\"span\"\n lineHeight=\"snug\"\n weight=\"semibold\"\n >\n {highlightMatch(nameContent, searchTerm)}\n {category && (\n <Tag\n className=\"ml-2 inline-block align-middle\"\n size=\"small\"\n style={getStyle(category)}\n type=\"solid\"\n >\n {humanize(category)}\n </Tag>\n )}\n </Typography>\n )}\n </div>\n {bodyContent && (\n <Typography className=\"neeto-ui-text-gray-600 truncate text-xs\">\n {filteredBodyContent || bodyContent}\n </Typography>\n )}\n </div>\n </Link>\n );\n })}\n {shouldShowCategoryDivider && (\n <hr className=\"neeto-ui-border-gray-300 mx-3 my-3 border-t\" />\n )}\n </div>\n );\n })}\n {onLoadMore && hasMore && (\n <div\n aria-hidden=\"true\"\n className=\"h-px w-full\"\n data-testid=\"neeto-molecules-finder-modal-sentinel\"\n ref={sentinelRef}\n />\n )}\n {isFetchingMore && (\n <div\n className=\"flex items-center justify-center py-3\"\n data-testid=\"neeto-molecules-finder-modal-loading-more\"\n >\n <Spinner size=\"small\" />\n </div>\n )}\n </div>\n </Modal.Body>\n );\n};\n\nexport default ModalBody;\n","import { Down, Up } from \"neetoicons\";\nimport { Modal, Typography } from \"neetoui\";\nimport { prop } from \"ramda\";\nimport { useTranslation } from \"react-i18next\";\n\nconst ModalFooter = ({ enableAdvancedSearch }) => {\n const { t } = useTranslation();\n\n const shortcuts = [\n {\n label: t(\"neetoMolecules.finderModal.advancedSearch\"),\n keys: [\"Cmd/Ctrl\", \"Return\"],\n isVisible: enableAdvancedSearch,\n },\n {\n label: t(\"neetoMolecules.common.actions.open\"),\n keys: [\"Return\"],\n isVisible: true,\n },\n {\n label: t(\"neetoMolecules.common.actions.move\"),\n keys: [\n <Up className=\"neeto-ui-text-gray-600\" key=\"up\" size={12} />,\n <Down className=\"neeto-ui-text-gray-600\" key=\"down\" size={12} />,\n ],\n isVisible: true,\n },\n {\n label: t(\"neetoMolecules.common.actions.close\"),\n keys: [\"Esc\"],\n isVisible: true,\n },\n ];\n\n return (\n <Modal.Footer className=\"neeto-ui-border-gray-300 neeto-molecules-finder-modal__footer border-t px-6 py-4\">\n <div className=\"neeto-ui-text-xxs flex items-center gap-4\">\n {shortcuts.filter(prop(\"isVisible\")).map(({ label, keys }, index) => (\n <div className=\"flex items-center gap-1\" key={index}>\n <Typography\n className=\"neeto-ui-text-gray-600\"\n component=\"span\"\n style=\"nano\"\n >\n {label}\n </Typography>\n {keys.map((key, index) => (\n <Typography\n className=\"neeto-ui-bg-gray-200 neeto-ui-rounded-sm neeto-ui-text-gray-600 px-1.5 py-1\"\n component=\"span\"\n key={index}\n style=\"nano\"\n >\n {key}\n </Typography>\n ))}\n </div>\n ))}\n </div>\n </Modal.Footer>\n );\n};\n\nexport default ModalFooter;\n","import { withT } from \"neetocommons/react-utils\";\nimport { Button, Modal, Spinner } from \"neetoui\";\n\nimport Search from \"components/Search\";\n\nconst ModalHeader = withT(\n ({ t, enableAdvancedSearch, onSearch, onGoToAdvanced, loading }) => (\n <Modal.Header className=\"neeto-molecules-finder-modal__header neeto-ui-border-gray-300 border-b px-0 py-0\">\n <Search\n {...{ onSearch }}\n nakedInput\n autoComplete=\"off\"\n className=\"neeto-molecules-finder-modal__search px-6 py-3\"\n name=\"term\"\n placeholder={t(\"neetoMolecules.common.actions.search\")}\n suffix={\n <div className=\"ms-3 flex items-center\">\n <div className=\"h-4 w-4 flex-shrink-0\">\n {loading && <Spinner size=\"small\" />}\n </div>\n {enableAdvancedSearch && (\n <Button\n className=\"ms-3 whitespace-nowrap\"\n label={t(\"neetoMolecules.finderModal.advancedSearch\")}\n size=\"small\"\n style=\"tertiary\"\n onClick={onGoToAdvanced}\n />\n )}\n </div>\n }\n />\n </Modal.Header>\n )\n);\n\nexport default ModalHeader;\n","import { useRef } from \"react\";\n\nimport { noop } from \"neetocist\";\nimport useHotkeys from \"neetohotkeys\";\nimport { Modal } from \"neetoui\";\nimport PropTypes from \"prop-types\";\nimport { isEmpty } from \"ramda\";\n\nimport ModalBody from \"./Body\";\nimport \"./finder-modal.scss\";\nimport ModalFooter from \"./Footer\";\nimport ModalHeader from \"./Header\";\nimport { minMax } from \"./utils\";\n\nconst FinderModal = ({\n enableAdvancedSearch = true,\n data,\n isFetching,\n isOpen,\n searchTerm,\n setSearchTerm,\n onClose,\n onGoToAdvanced = noop,\n onLoadMore,\n hasMore,\n isFetchingMore,\n ...props\n}) => {\n const containerRef = useRef();\n const mutables = useRef({ focusIndex: -1 }).current;\n\n const onFocusChange = offset => {\n const container = containerRef.current;\n if (!container) return;\n\n const nodes = container.querySelectorAll(\n \"a.neeto-molecules-search-result-item\"\n );\n\n if (isEmpty(nodes)) return;\n\n mutables.focusIndex = minMax(\n mutables.focusIndex + offset,\n nodes.length - 1\n );\n\n const targetNode = nodes[mutables.focusIndex];\n if (targetNode) {\n targetNode.focus();\n }\n };\n\n useHotkeys(\n [\"up\", \"down\"],\n event => {\n event.preventDefault();\n if (event.code === \"ArrowUp\") onFocusChange(-1);\n else if (event.code === \"ArrowDown\") onFocusChange(1);\n },\n { mode: \"global\", enabled: isOpen }\n );\n\n useHotkeys([\"ctrl+enter\", \"command+enter\"], onGoToAdvanced, {\n mode: \"global\",\n enabled: isOpen && enableAdvancedSearch,\n });\n\n return (\n <Modal\n {...{ isOpen, onClose }}\n closeButton={false}\n {...props}\n backdropClassName=\"neeto-molecules-finder-modal-backdrop py-10 px-4\"\n className=\"neeto-molecules-finder-modal\"\n >\n <ModalHeader\n {...{ enableAdvancedSearch, onGoToAdvanced }}\n loading={isFetching}\n onSearch={setSearchTerm}\n />\n <ModalBody\n {...{\n containerRef,\n data,\n hasMore,\n isFetchingMore,\n onClose,\n onLoadMore,\n searchTerm,\n }}\n loading={isFetching}\n />\n <ModalFooter {...{ enableAdvancedSearch }} />\n </Modal>\n );\n};\n\nFinderModal.propTypes = {\n /*\n Boolean to indicate decide whether to show advanced search button or not\n */\n enableAdvancedSearch: PropTypes.bool,\n /*\n Data to be displayed in the modal\n */\n data: PropTypes.objectOf(\n PropTypes.arrayOf(\n PropTypes.shape({\n id: PropTypes.string,\n url: PropTypes.string,\n body: PropTypes.string,\n name: PropTypes.string,\n })\n )\n ),\n /*\n Boolean to indicate whether data is being fetched or not\n */\n isFetching: PropTypes.bool,\n /*\n Boolean to indicate whether modal is open or not\n */\n isOpen: PropTypes.bool,\n /*\n Term used for search\n */\n searchTerm: PropTypes.string,\n /*\n Function to set search term\n */\n setSearchTerm: PropTypes.func,\n /*\n Function to close the modal\n */\n onClose: PropTypes.func,\n /*\n Function to execute when user clicks on advanced search button\n */\n onGoToAdvanced: PropTypes.func,\n /*\n Function called when the user scrolls near the bottom of the results.\n When provided together with hasMore, enables scroll-based pagination.\n */\n onLoadMore: PropTypes.func,\n /*\n Boolean indicating whether more pages are available to fetch\n */\n hasMore: PropTypes.bool,\n /*\n Boolean indicating whether the next page is currently being fetched\n */\n isFetchingMore: PropTypes.bool,\n};\n\nexport default FinderModal;\n"],"names":["Link","_ref","to","children","rest","_objectWithoutProperties","_excluded","url","URL","host","_jsx","RRDLink","_objectSpread","concat","pathname","search","minMax","number","max","arguments","length","undefined","Number","POSITIVE_INFINITY","min","Math","htmlToText","html","tmp","document","createElement","innerHTML","textContent","innerText","highlightMatch","text","searchTerm","regex","RegExp","split","map","part","index","toLowerCase","className","filterAndHighlightContent","bodyContent","filter","line","trim","includes","_jsxs","React","Fragment","createStylePalette","values","assignedStyles","styleIndex","key","style","getStyle","ModalBody","containerRef","data","onClose","loading","onLoadMore","_ref$hasMore","hasMore","_ref$isFetchingMore","isFetchingMore","_useTranslation","useTranslation","t","sentinelRef","useRef","onLoadMoreRef","noop","useEffect","current","isPaginationEnabled","Boolean","sentinel","root","closest","observer","IntersectionObserver","_ref2","_ref3","_slicedToArray","entry","isIntersecting","rootMargin","observe","disconnect","categoryGroups","Object","keys","isNotEmpty","isDataEmpty","isNotPresent","isEmpty","Modal","Body","NoData","description","title","ref","category","categoryIndex","items","shouldShowCategoryDivider","item","nameContent","name","body","filteredBodyContent","onClick","Typography","component","lineHeight","weight","Tag","size","type","humanize","id","Spinner","ModalFooter","enableAdvancedSearch","shortcuts","label","isVisible","Up","Down","Footer","prop","ModalHeader","withT","onSearch","onGoToAdvanced","Header","Search","nakedInput","autoComplete","placeholder","suffix","Button","FinderModal","_ref$enableAdvancedSe","isFetching","isOpen","setSearchTerm","_ref$onGoToAdvanced","props","mutables","focusIndex","onFocusChange","offset","container","nodes","querySelectorAll","targetNode","focus","useHotkeys","event","preventDefault","code","mode","enabled","closeButton","backdropClassName"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAEA,IAAMA,IAAI,GAAG,SAAPA,IAAIA,CAAAC,IAAA,EAAkC;AAAA,EAAA,IAA5BC,EAAE,GAAAD,IAAA,CAAFC,EAAE;IAAEC,QAAQ,GAAAF,IAAA,CAARE,QAAQ;AAAKC,IAAAA,IAAI,GAAAC,wBAAA,CAAAJ,IAAA,EAAAK,WAAA,CAAA;AACnC,EAAA,IAAMC,GAAG,GAAG,IAAIC,GAAG,CAACN,EAAE,CAAC;EACvBK,GAAG,CAACE,IAAI,GAAG,EAAE;EAEb,oBACEC,GAAA,CAACC,MAAO,EAAAC,eAAA,CAAAA,eAAA,KAAKR,IAAI,CAAA,EAAA,EAAA,EAAA;AAAEF,IAAAA,EAAE,EAAA,EAAA,CAAAW,MAAA,CAAKN,GAAG,CAACO,QAAQ,CAAA,CAAAD,MAAA,CAAGN,GAAG,CAACQ,MAAM,CAAG;AAAAZ,IAAAA,QAAA,EACnDA;AAAQ,GAAA,CACF,CAAC;AAEd,CAAC;;ACTM,IAAMa,MAAM,GAAG,SAATA,MAAMA,CAAIC,MAAM,EAAA;AAAA,EAAA,IAAEC,GAAG,GAAAC,SAAA,CAAAC,MAAA,GAAA,CAAA,IAAAD,SAAA,CAAA,CAAA,CAAA,KAAAE,SAAA,GAAAF,SAAA,CAAA,CAAA,CAAA,GAAGG,MAAM,CAACC,iBAAiB;AAAA,EAAA,IAAEC,GAAG,GAAAL,SAAA,CAAAC,MAAA,GAAA,CAAA,IAAAD,SAAA,CAAA,CAAA,CAAA,KAAAE,SAAA,GAAAF,SAAA,CAAA,CAAA,CAAA,GAAG,CAAC;AAAA,EAAA,OACpEM,IAAI,CAACD,GAAG,CAACN,GAAG,EAAEO,IAAI,CAACP,GAAG,CAACM,GAAG,EAAEP,MAAM,CAAC,CAAC;AAAA,CAAA;AAE/B,IAAMS,UAAU,GAAG,SAAbA,UAAUA,CAAGC,IAAI,EAAI;AAChC,EAAA,IAAI,CAACA,IAAI,EAAE,OAAO,IAAI;AAEtB,EAAA,IAAMC,GAAG,GAAGC,QAAQ,CAACC,aAAa,CAAC,KAAK,CAAC;EACzCF,GAAG,CAACG,SAAS,GAAGJ,IAAI;EAEpB,OAAOC,GAAG,CAACI,WAAW,IAAIJ,GAAG,CAACK,SAAS,IAAI,EAAE;AAC/C,CAAC;AAEM,IAAMC,cAAc,GAAG,SAAjBA,cAAcA,CAAIC,IAAI,EAAEC,UAAU,EAAK;AAClD,EAAA,IAAI,CAACA,UAAU,EAAE,OAAOD,IAAI;EAE5B,IAAME,KAAK,GAAG,IAAIC,MAAM,CAAA,GAAA,CAAAzB,MAAA,CAAKuB,UAAU,EAAA,GAAA,CAAA,EAAK,IAAI,CAAC;AAEjD,EAAA,OAAOD,IAAI,CAACI,KAAK,CAACF,KAAK,CAAC,CAACG,GAAG,CAAC,UAACC,IAAI,EAAEC,KAAK,EAAA;AAAA,IAAA,OACvC,CAAAD,IAAI,KAAA,IAAA,IAAJA,IAAI,KAAA,MAAA,GAAA,MAAA,GAAJA,IAAI,CAAEE,WAAW,EAAE,MAAKP,UAAU,CAACO,WAAW,EAAE,gBAC9CjC,GAAA,CAAA,MAAA,EAAA;AAAMkC,MAAAA,SAAS,EAAC,oCAAoC;AAAAzC,MAAAA,QAAA,EACjDsC;KAAI,EADmDC,KAEpD,CAAC,GAEPD,IACD;AAAA,EAAA,CACH,CAAC;AACH,CAAC;AAEM,IAAMI,yBAAyB,GAAG,SAA5BA,yBAAyBA,CAAIC,WAAW,EAAEV,UAAU,EAAK;AACpE,EAAA,IAAI,CAACA,UAAU,EAAE,OAAOU,WAAW;AAEnC,EAAA,IAAI,CAACA,WAAW,EAAE,OAAO,IAAI;EAE7B,OAAOA,WAAW,CACfP,KAAK,CAAC,qBAAqB,CAAC,CAC5BQ,MAAM,CAAC,UAAAC,IAAI,EAAA;AAAA,IAAA,OAAIA,IAAI,CAACC,IAAI,EAAE;AAAA,EAAA,CAAA,CAAC,CAC3BF,MAAM,CAAC,UAAAC,IAAI,EAAA;AAAA,IAAA,OAAIA,IAAI,CAACL,WAAW,EAAE,CAACO,QAAQ,CAACd,UAAU,CAACO,WAAW,EAAE,CAAC;AAAA,EAAA,CAAA,CAAC,CACrEH,GAAG,CAAC,UAACQ,IAAI,EAAEN,KAAK,EAAA;AAAA,IAAA,oBACfS,IAAA,CAACC,cAAK,CAACC,QAAQ,EAAA;MAAAlD,QAAA,EAAA,CACZ+B,cAAc,CAACc,IAAI,EAAEZ,UAAU,CAAC,eACjC1B,GAAA,CAAA,IAAA,EAAA,EAAK,CAAC;AAAA,KAAA,EAFagC,KAGL,CAAC;AAAA,EAAA,CAClB,CAAC;AACN,CAAC;AAiBM,IAAMY,kBAAkB,GAAG,SAArBA,kBAAkBA,CAAGC,MAAM,EAAI;EAC1C,IAAMC,cAAc,GAAG,EAAE;EACzB,IAAIC,UAAU,GAAG,CAAC;EAElB,OAAO,UAAAC,GAAG,EAAI;IACZ,IAAIF,cAAc,CAACE,GAAG,CAAC,EAAE,OAAOF,cAAc,CAACE,GAAG,CAAC;AACnD,IAAA,IAAMC,KAAK,GAAGJ,MAAM,CAACE,UAAU,CAAC;IAChCA,UAAU,GAAG,CAACA,UAAU,GAAG,CAAC,IAAIF,MAAM,CAACnC,MAAM;AAC7CoC,IAAAA,cAAc,CAACE,GAAG,CAAC,GAAGC,KAAK;AAE3B,IAAA,OAAOA,KAAK;EACd,CAAC;AACH,CAAC;;AC3DD,IAAMC,QAAQ,GAAGN,kBAAkB,CAAC,CAClC,SAAS,EACT,MAAM,EACN,SAAS,EACT,WAAW,EACX,SAAS,CACV,CAAC;AAEF,IAAMO,SAAS,GAAG,SAAZA,SAASA,CAAA5D,IAAA,EAST;AAAA,EAAA,IARJ6D,YAAY,GAAA7D,IAAA,CAAZ6D,YAAY;IACZC,IAAI,GAAA9D,IAAA,CAAJ8D,IAAI;IACJC,OAAO,GAAA/D,IAAA,CAAP+D,OAAO;IACPC,OAAO,GAAAhE,IAAA,CAAPgE,OAAO;IACP7B,UAAU,GAAAnC,IAAA,CAAVmC,UAAU;IACV8B,UAAU,GAAAjE,IAAA,CAAViE,UAAU;IAAAC,YAAA,GAAAlE,IAAA,CACVmE,OAAO;AAAPA,IAAAA,OAAO,GAAAD,YAAA,KAAA,MAAA,GAAG,KAAK,GAAAA,YAAA;IAAAE,mBAAA,GAAApE,IAAA,CACfqE,cAAc;AAAdA,IAAAA,cAAc,GAAAD,mBAAA,KAAA,MAAA,GAAG,KAAK,GAAAA,mBAAA;AAEtB,EAAA,IAAAE,eAAA,GAAcC,cAAc,EAAE;IAAtBC,CAAC,GAAAF,eAAA,CAADE,CAAC;AACT,EAAA,IAAMC,WAAW,GAAGC,MAAM,CAAC,IAAI,CAAC;AAChC,EAAA,IAAMC,aAAa,GAAGD,MAAM,CAACT,UAAU,IAAIW,IAAI,CAAC;AAEhDC,EAAAA,SAAS,CAAC,YAAM;AACdF,IAAAA,aAAa,CAACG,OAAO,GAAGb,UAAU,IAAIW,IAAI;AAC5C,EAAA,CAAC,EAAE,CAACX,UAAU,CAAC,CAAC;AAEhB,EAAA,IAAMc,mBAAmB,GAAGC,OAAO,CAACf,UAAU,CAAC;AAE/CY,EAAAA,SAAS,CAAC,YAAM;AACd,IAAA,IAAMI,QAAQ,GAAGR,WAAW,CAACK,OAAO;IACpC,IAAI,CAACG,QAAQ,IAAI,CAACF,mBAAmB,IAAI,CAACZ,OAAO,IAAIE,cAAc,EAAE;AACnE,MAAA,OAAOjD,SAAS;AAClB,IAAA;AAEA,IAAA,IAAM8D,IAAI,GAAGD,QAAQ,CAACE,OAAO,CAAC,qCAAqC,CAAC;AACpE,IAAA,IAAMC,QAAQ,GAAG,IAAIC,oBAAoB,CACvC,UAAAC,KAAA,EAAa;AAAA,MAAA,IAAAC,KAAA,GAAAC,cAAA,CAAAF,KAAA,EAAA,CAAA,CAAA;AAAXG,QAAAA,KAAK,GAAAF,KAAA,CAAA,CAAA,CAAA;MACL,IAAIE,KAAK,CAACC,cAAc,EAAEf,aAAa,CAACG,OAAO,EAAE;AACnD,IAAA,CAAC,EACD;AAAEI,MAAAA,IAAI,EAAJA,IAAI;AAAES,MAAAA,UAAU,EAAE;AAAQ,KAC9B,CAAC;AACDP,IAAAA,QAAQ,CAACQ,OAAO,CAACX,QAAQ,CAAC;IAE1B,OAAO,YAAA;AAAA,MAAA,OAAMG,QAAQ,CAACS,UAAU,EAAE;AAAA,IAAA,CAAA;EACpC,CAAC,EAAE,CAACd,mBAAmB,EAAEZ,OAAO,EAAEE,cAAc,CAAC,CAAC;AAElD,EAAA,IAAMyB,cAAc,GAAGC,MAAM,CAACC,IAAI,CAAClC,IAAI,CAAC,CAAChB,MAAM,CAAC,UAAAW,GAAG,EAAA;AAAA,IAAA,OAAIwC,UAAU,CAACnC,IAAI,CAACL,GAAG,CAAC,CAAC;EAAA,CAAA,CAAC;EAC7E,IAAMyC,WAAW,GAAGC,YAAY,CAACrC,IAAI,CAAC,IAAIsC,OAAO,CAACN,cAAc,CAAC;AAEjE,EAAA,IAAII,WAAW,IAAI,CAAClC,OAAO,EAAE;AAC3B,IAAA,oBACEvD,GAAA,CAAC4F,KAAK,CAACC,IAAI,EAAA;AAAC3D,MAAAA,SAAS,EAAC,oGAAoG;MAAAzC,QAAA,eACxHO,GAAA,CAAC8F,MAAM,EAAA;AACLC,QAAAA,WAAW,EAAEhC,CAAC,CAAC,uCAAuC,CAAE;QACxDiC,KAAK,EAAEjC,CAAC,CAAC,wCAAwC;OAClD;AAAC,KACQ,CAAC;AAEjB,EAAA;AAEA,EAAA,oBACE/D,GAAA,CAAC4F,KAAK,CAACC,IAAI,EAAA;AAAC3D,IAAAA,SAAS,EAAC,mEAAmE;AAAAzC,IAAAA,QAAA,eACvFgD,IAAA,CAAA,KAAA,EAAA;AAAKP,MAAAA,SAAS,EAAC,eAAe;AAAC+D,MAAAA,GAAG,EAAE7C,YAAa;MAAA3D,QAAA,EAAA,CAC9C4F,cAAc,CAACvD,GAAG,CAAC,UAACoE,QAAQ,EAAEC,aAAa,EAAK;AAC/C,QAAA,IAAMC,KAAK,GAAG/C,IAAI,CAAC6C,QAAQ,CAAC;QAC5B,IAAMG,yBAAyB,GAC7BF,aAAa,GAAGd,cAAc,CAAC3E,MAAM,GAAG,CAAC;AAE3C,QAAA,oBACE+B,IAAA,CAAA,KAAA,EAAA;AAAAhD,UAAAA,QAAA,GACG2G,KAAK,CAACtE,GAAG,CAAC,UAAAwE,IAAI,EAAI;AACjB,YAAA,IAAMC,WAAW,GAAGvF,UAAU,CAACsF,IAAI,CAACE,IAAI,CAAC;AACzC,YAAA,IAAMpE,WAAW,GAAGpB,UAAU,CAACsF,IAAI,CAACG,IAAI,CAAC;AAEzC,YAAA,IAAMC,mBAAmB,GAAGvE,yBAAyB,CACnDC,WAAW,EACXV,UACF,CAAC;YAED,oBACE1B,GAAA,CAACV,IAAI,EAAA;AACH4C,cAAAA,SAAS,EAAC,4MAA4M;cAEtN1C,EAAE,EAAE8G,IAAI,CAACzG,GAAI;AACb8G,cAAAA,OAAO,EAAErD,OAAQ;AAAA7D,cAAAA,QAAA,eAEjBgD,IAAA,CAAA,KAAA,EAAA;AAAKP,gBAAAA,SAAS,EAAC,kCAAkC;AAAAzC,gBAAAA,QAAA,gBAC/CO,GAAA,CAAA,KAAA,EAAA;AAAKkC,kBAAAA,SAAS,EAAC,MAAM;AAAAzC,kBAAAA,QAAA,EAClB8G,WAAW,iBACV9D,IAAA,CAACmE,UAAU,EAAA;AACT1E,oBAAAA,SAAS,EAAC,kCAAkC;AAC5C2E,oBAAAA,SAAS,EAAC,MAAM;AAChBC,oBAAAA,UAAU,EAAC,MAAM;AACjBC,oBAAAA,MAAM,EAAC,UAAU;AAAAtH,oBAAAA,QAAA,EAAA,CAEhB+B,cAAc,CAAC+E,WAAW,EAAE7E,UAAU,CAAC,EACvCwE,QAAQ,iBACPlG,GAAA,CAACgH,GAAG,EAAA;AACF9E,sBAAAA,SAAS,EAAC,gCAAgC;AAC1C+E,sBAAAA,IAAI,EAAC,OAAO;AACZhE,sBAAAA,KAAK,EAAEC,QAAQ,CAACgD,QAAQ,CAAE;AAC1BgB,sBAAAA,IAAI,EAAC,OAAO;sBAAAzH,QAAA,EAEX0H,QAAQ,CAACjB,QAAQ;AAAC,qBAChB,CACN;mBACS;AACb,iBACE,CAAC,EACL9D,WAAW,iBACVpC,GAAA,CAAC4G,UAAU,EAAA;AAAC1E,kBAAAA,SAAS,EAAC,yCAAyC;kBAAAzC,QAAA,EAC5DiH,mBAAmB,IAAItE;AAAW,iBACzB,CACb;eACE;aAAC,EAAA,EAAA,CAAAjC,MAAA,CAhCE+F,QAAQ,EAAA,GAAA,CAAA,CAAA/F,MAAA,CAAImG,IAAI,CAACc,EAAE,CAiCvB,CAAC;AAEX,UAAA,CAAC,CAAC,EACDf,yBAAyB,iBACxBrG,GAAA,CAAA,IAAA,EAAA;AAAIkC,YAAAA,SAAS,EAAC;AAA6C,WAAE,CAC9D;AAAA,SAAA,EAnDOgE,QAoDL,CAAC;AAEV,MAAA,CAAC,CAAC,EACD1C,UAAU,IAAIE,OAAO,iBACpB1D,GAAA,CAAA,KAAA,EAAA;AACE,QAAA,aAAA,EAAY,MAAM;AAClBkC,QAAAA,SAAS,EAAC,aAAa;AACvB,QAAA,aAAA,EAAY,uCAAuC;AACnD+D,QAAAA,GAAG,EAAEjC;AAAY,OAClB,CACF,EACAJ,cAAc,iBACb5D,GAAA,CAAA,KAAA,EAAA;AACEkC,QAAAA,SAAS,EAAC,uCAAuC;AACjD,QAAA,aAAA,EAAY,2CAA2C;QAAAzC,QAAA,eAEvDO,GAAA,CAACqH,OAAO,EAAA;AAACJ,UAAAA,IAAI,EAAC;SAAS;AAAC,OACrB,CACN;KACE;AAAC,GACI,CAAC;AAEjB,CAAC;;;;;ACzJD,IAAMK,WAAW,GAAG,SAAdA,WAAWA,CAAA/H,IAAA,EAAiC;AAAA,EAAA,IAA3BgI,oBAAoB,GAAAhI,IAAA,CAApBgI,oBAAoB;AACzC,EAAA,IAAA1D,eAAA,GAAcC,cAAc,EAAE;IAAtBC,CAAC,GAAAF,eAAA,CAADE,CAAC;EAET,IAAMyD,SAAS,GAAG,CAChB;AACEC,IAAAA,KAAK,EAAE1D,CAAC,CAAC,2CAA2C,CAAC;AACrDwB,IAAAA,IAAI,EAAE,CAAC,UAAU,EAAE,QAAQ,CAAC;AAC5BmC,IAAAA,SAAS,EAAEH;AACb,GAAC,EACD;AACEE,IAAAA,KAAK,EAAE1D,CAAC,CAAC,oCAAoC,CAAC;IAC9CwB,IAAI,EAAE,CAAC,QAAQ,CAAC;AAChBmC,IAAAA,SAAS,EAAE;AACb,GAAC,EACD;AACED,IAAAA,KAAK,EAAE1D,CAAC,CAAC,oCAAoC,CAAC;AAC9CwB,IAAAA,IAAI,EAAE,cACJvF,GAAA,CAAC2H,EAAE,EAAA;AAACzF,MAAAA,SAAS,EAAC,wBAAwB;AAAU+E,MAAAA,IAAI,EAAE;AAAG,KAAA,EAAd,IAAgB,CAAC,eAC5DjH,GAAA,CAAC4H,IAAI,EAAA;AAAC1F,MAAAA,SAAS,EAAC,wBAAwB;AAAY+E,MAAAA,IAAI,EAAE;KAAG,EAAhB,MAAkB,CAAC,CACjE;AACDS,IAAAA,SAAS,EAAE;AACb,GAAC,EACD;AACED,IAAAA,KAAK,EAAE1D,CAAC,CAAC,qCAAqC,CAAC;IAC/CwB,IAAI,EAAE,CAAC,KAAK,CAAC;AACbmC,IAAAA,SAAS,EAAE;AACb,GAAC,CACF;AAED,EAAA,oBACE1H,GAAA,CAAC4F,KAAK,CAACiC,MAAM,EAAA;AAAC3F,IAAAA,SAAS,EAAC,kFAAkF;AAAAzC,IAAAA,QAAA,eACxGO,GAAA,CAAA,KAAA,EAAA;AAAKkC,MAAAA,SAAS,EAAC,2CAA2C;AAAAzC,MAAAA,QAAA,EACvD+H,SAAS,CAACnF,MAAM,CAACyF,IAAI,CAAC,WAAW,CAAC,CAAC,CAAChG,GAAG,CAAC,UAAA+C,KAAA,EAAkB7C,KAAK,EAAA;AAAA,QAAA,IAApByF,KAAK,GAAA5C,KAAA,CAAL4C,KAAK;UAAElC,IAAI,GAAAV,KAAA,CAAJU,IAAI;AAAA,QAAA,oBACrD9C,IAAA,CAAA,KAAA,EAAA;AAAKP,UAAAA,SAAS,EAAC,yBAAyB;UAAAzC,QAAA,EAAA,cACtCO,GAAA,CAAC4G,UAAU,EAAA;AACT1E,YAAAA,SAAS,EAAC,wBAAwB;AAClC2E,YAAAA,SAAS,EAAC,MAAM;AAChB5D,YAAAA,KAAK,EAAC,MAAM;AAAAxD,YAAAA,QAAA,EAEXgI;WACS,CAAC,EACZlC,IAAI,CAACzD,GAAG,CAAC,UAACkB,GAAG,EAAEhB,KAAK,EAAA;YAAA,oBACnBhC,GAAA,CAAC4G,UAAU,EAAA;AACT1E,cAAAA,SAAS,EAAC,6EAA6E;AACvF2E,cAAAA,SAAS,EAAC,MAAM;AAEhB5D,cAAAA,KAAK,EAAC,MAAM;AAAAxD,cAAAA,QAAA,EAEXuD;AAAG,aAAA,EAHChB,KAIK,CAAC;AAAA,UAAA,CACd,CAAC;AAAA,SAAA,EAjB0CA,KAkBzC,CAAC;MAAA,CACP;KACE;AAAC,GACM,CAAC;AAEnB,CAAC;;ACxDD,IAAM+F,WAAW,GAAGC,KAAK,CACvB,UAAAzI,IAAA,EAAA;AAAA,EAAA,IAAGwE,CAAC,GAAAxE,IAAA,CAADwE,CAAC;IAAEwD,oBAAoB,GAAAhI,IAAA,CAApBgI,oBAAoB;IAAEU,QAAQ,GAAA1I,IAAA,CAAR0I,QAAQ;IAAEC,cAAc,GAAA3I,IAAA,CAAd2I,cAAc;IAAE3E,OAAO,GAAAhE,IAAA,CAAPgE,OAAO;AAAA,EAAA,oBAC3DvD,GAAA,CAAC4F,KAAK,CAACuC,MAAM,EAAA;AAACjG,IAAAA,SAAS,EAAC,kFAAkF;IAAAzC,QAAA,eACxGO,GAAA,CAACoI,MAAM,EAAA;AACCH,MAAAA,QAAQ,EAARA,QAAQ;MACdI,UAAU,EAAA,IAAA;AACVC,MAAAA,YAAY,EAAC,KAAK;AAClBpG,MAAAA,SAAS,EAAC,gDAAgD;AAC1DsE,MAAAA,IAAI,EAAC,MAAM;AACX+B,MAAAA,WAAW,EAAExE,CAAC,CAAC,sCAAsC,CAAE;AACvDyE,MAAAA,MAAM,eACJ/F,IAAA,CAAA,KAAA,EAAA;AAAKP,QAAAA,SAAS,EAAC,wBAAwB;AAAAzC,QAAAA,QAAA,gBACrCO,GAAA,CAAA,KAAA,EAAA;AAAKkC,UAAAA,SAAS,EAAC,uBAAuB;AAAAzC,UAAAA,QAAA,EACnC8D,OAAO,iBAAIvD,GAAA,CAACqH,OAAO,EAAA;AAACJ,YAAAA,IAAI,EAAC;WAAS;AAAC,SACjC,CAAC,EACLM,oBAAoB,iBACnBvH,GAAA,CAACyI,MAAM,EAAA;AACLvG,UAAAA,SAAS,EAAC,wBAAwB;AAClCuF,UAAAA,KAAK,EAAE1D,CAAC,CAAC,2CAA2C,CAAE;AACtDkD,UAAAA,IAAI,EAAC,OAAO;AACZhE,UAAAA,KAAK,EAAC,UAAU;AAChB0D,UAAAA,OAAO,EAAEuB;AAAe,SACzB,CACF;OACE;KAER;AAAC,GACU,CAAC;AAAA,CAEnB,CAAC;;;;;ACpBD,IAAMQ,WAAW,GAAG,SAAdA,WAAWA,CAAAnJ,IAAA,EAaX;AAAA,EAAA,IAAAoJ,qBAAA,GAAApJ,IAAA,CAZJgI,oBAAoB;AAApBA,IAAAA,oBAAoB,GAAAoB,qBAAA,KAAA,MAAA,GAAG,IAAI,GAAAA,qBAAA;IAC3BtF,IAAI,GAAA9D,IAAA,CAAJ8D,IAAI;IACJuF,UAAU,GAAArJ,IAAA,CAAVqJ,UAAU;IACVC,MAAM,GAAAtJ,IAAA,CAANsJ,MAAM;IACNnH,UAAU,GAAAnC,IAAA,CAAVmC,UAAU;IACVoH,aAAa,GAAAvJ,IAAA,CAAbuJ,aAAa;IACbxF,OAAO,GAAA/D,IAAA,CAAP+D,OAAO;IAAAyF,mBAAA,GAAAxJ,IAAA,CACP2I,cAAc;AAAdA,IAAAA,cAAc,GAAAa,mBAAA,KAAA,MAAA,GAAG5E,IAAI,GAAA4E,mBAAA;IACrBvF,UAAU,GAAAjE,IAAA,CAAViE,UAAU;IACVE,OAAO,GAAAnE,IAAA,CAAPmE,OAAO;IACPE,cAAc,GAAArE,IAAA,CAAdqE,cAAc;AACXoF,IAAAA,KAAK,GAAArJ,wBAAA,CAAAJ,IAAA,EAAAK,SAAA,CAAA;AAER,EAAA,IAAMwD,YAAY,GAAGa,MAAM,EAAE;EAC7B,IAAMgF,QAAQ,GAAGhF,MAAM,CAAC;AAAEiF,IAAAA,UAAU,EAAE;GAAI,CAAC,CAAC7E,OAAO;AAEnD,EAAA,IAAM8E,aAAa,GAAG,SAAhBA,aAAaA,CAAGC,MAAM,EAAI;AAC9B,IAAA,IAAMC,SAAS,GAAGjG,YAAY,CAACiB,OAAO;IACtC,IAAI,CAACgF,SAAS,EAAE;AAEhB,IAAA,IAAMC,KAAK,GAAGD,SAAS,CAACE,gBAAgB,CACtC,sCACF,CAAC;AAED,IAAA,IAAI5D,OAAO,CAAC2D,KAAK,CAAC,EAAE;AAEpBL,IAAAA,QAAQ,CAACC,UAAU,GAAG5I,MAAM,CAC1B2I,QAAQ,CAACC,UAAU,GAAGE,MAAM,EAC5BE,KAAK,CAAC5I,MAAM,GAAG,CACjB,CAAC;AAED,IAAA,IAAM8I,UAAU,GAAGF,KAAK,CAACL,QAAQ,CAACC,UAAU,CAAC;AAC7C,IAAA,IAAIM,UAAU,EAAE;MACdA,UAAU,CAACC,KAAK,EAAE;AACpB,IAAA;EACF,CAAC;EAEDC,UAAU,CACR,CAAC,IAAI,EAAE,MAAM,CAAC,EACd,UAAAC,KAAK,EAAI;IACPA,KAAK,CAACC,cAAc,EAAE;IACtB,IAAID,KAAK,CAACE,IAAI,KAAK,SAAS,EAAEV,aAAa,CAAC,EAAE,CAAC,CAAC,KAC3C,IAAIQ,KAAK,CAACE,IAAI,KAAK,WAAW,EAAEV,aAAa,CAAC,CAAC,CAAC;AACvD,EAAA,CAAC,EACD;AAAEW,IAAAA,IAAI,EAAE,QAAQ;AAAEC,IAAAA,OAAO,EAAElB;AAAO,GACpC,CAAC;EAEDa,UAAU,CAAC,CAAC,YAAY,EAAE,eAAe,CAAC,EAAExB,cAAc,EAAE;AAC1D4B,IAAAA,IAAI,EAAE,QAAQ;IACdC,OAAO,EAAElB,MAAM,IAAItB;AACrB,GAAC,CAAC;AAEF,EAAA,oBACE9E,IAAA,CAACmD,KAAK,EAAA1F,aAAA,CAAAA,aAAA,CAAA;AACE2I,IAAAA,MAAM,EAANA,MAAM;AAAEvF,IAAAA,OAAO,EAAPA,OAAO;AACrB0G,IAAAA,WAAW,EAAE;AAAM,GAAA,EACfhB,KAAK,CAAA,EAAA,EAAA,EAAA;AACTiB,IAAAA,iBAAiB,EAAC,kDAAkD;AACpE/H,IAAAA,SAAS,EAAC,8BAA8B;IAAAzC,QAAA,EAAA,cAExCO,GAAA,CAAC+H,WAAW,EAAA;AACJR,MAAAA,oBAAoB,EAApBA,oBAAoB;AAAEW,MAAAA,cAAc,EAAdA,cAAc;AAC1C3E,MAAAA,OAAO,EAAEqF,UAAW;AACpBX,MAAAA,QAAQ,EAAEa;AAAc,KACzB,CAAC,eACF9I,GAAA,CAACmD,SAAS,EAAA;AAENC,MAAAA,YAAY,EAAZA,YAAY;AACZC,MAAAA,IAAI,EAAJA,IAAI;AACJK,MAAAA,OAAO,EAAPA,OAAO;AACPE,MAAAA,cAAc,EAAdA,cAAc;AACdN,MAAAA,OAAO,EAAPA,OAAO;AACPE,MAAAA,UAAU,EAAVA,UAAU;AACV9B,MAAAA,UAAU,EAAVA,UAAU;AAEZ6B,MAAAA,OAAO,EAAEqF;AAAW,KACrB,CAAC,eACF5I,GAAA,CAACsH,WAAW,EAAA;AAAOC,MAAAA,oBAAoB,EAApBA;AAAoB,KAAK,CAAC;AAAA,GAAA,CACxC,CAAC;AAEZ;;;;"}