@bigbinary/neeto-molecules 5.3.33 → 5.3.34

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 (50) hide show
  1. package/dist/FinderModal.js +14 -1
  2. package/dist/FinderModal.js.map +1 -1
  3. package/dist/cjs/FinderModal.js +14 -1
  4. package/dist/cjs/FinderModal.js.map +1 -1
  5. package/dist/cjs/v2/FinderModal.js +137 -74
  6. package/dist/cjs/v2/FinderModal.js.map +1 -1
  7. package/dist/cjs/v2/OptionFields.js +1 -0
  8. package/dist/cjs/v2/OptionFields.js.map +1 -1
  9. package/dist/v2/FinderModal.js +138 -78
  10. package/dist/v2/FinderModal.js.map +1 -1
  11. package/dist/v2/OptionFields.js +1 -0
  12. package/dist/v2/OptionFields.js.map +1 -1
  13. package/package.json +1 -1
  14. package/src/translations/ar.json +3 -1
  15. package/src/translations/bg.json +3 -1
  16. package/src/translations/ca.json +3 -1
  17. package/src/translations/cs.json +3 -1
  18. package/src/translations/da.json +3 -1
  19. package/src/translations/de.json +3 -1
  20. package/src/translations/en.json +3 -1
  21. package/src/translations/es-MX.json +3 -1
  22. package/src/translations/es.json +3 -1
  23. package/src/translations/et.json +3 -1
  24. package/src/translations/fi.json +3 -1
  25. package/src/translations/fil.json +3 -1
  26. package/src/translations/fr.json +3 -1
  27. package/src/translations/he.json +3 -1
  28. package/src/translations/hi.json +3 -1
  29. package/src/translations/hr.json +3 -1
  30. package/src/translations/hu.json +3 -1
  31. package/src/translations/id.json +3 -1
  32. package/src/translations/it.json +3 -1
  33. package/src/translations/ja.json +3 -1
  34. package/src/translations/ko.json +3 -1
  35. package/src/translations/lv.json +3 -1
  36. package/src/translations/nl.json +3 -1
  37. package/src/translations/pl.json +3 -1
  38. package/src/translations/pt-BR.json +3 -1
  39. package/src/translations/pt.json +3 -1
  40. package/src/translations/ro.json +3 -1
  41. package/src/translations/ru.json +3 -1
  42. package/src/translations/sk.json +3 -1
  43. package/src/translations/sl.json +3 -1
  44. package/src/translations/sv.json +3 -1
  45. package/src/translations/th.json +3 -1
  46. package/src/translations/tr.json +3 -1
  47. package/src/translations/uk.json +3 -1
  48. package/src/translations/vi.json +3 -1
  49. package/src/translations/zh-CN.json +3 -1
  50. package/src/translations/zh-TW.json +3 -1
@@ -1,14 +1,15 @@
1
1
  import _defineProperty from '@babel/runtime/helpers/defineProperty';
2
2
  import _slicedToArray from '@babel/runtime/helpers/slicedToArray';
3
3
  import _objectWithoutProperties from '@babel/runtime/helpers/objectWithoutProperties';
4
- import React__default, { useState, useRef, useEffect, Fragment } from 'react';
5
- import { Spinner, Empty } from '@bigbinary/neeto-atoms';
6
- import { CommandDialog, Command, CommandInput, CommandList, CommandEmpty, CommandGroup, CommandItem, CommandSeparator } from '@bigbinary/neeto-atoms/primitives';
7
- import { noop, isNotEmpty, humanize } from '@bigbinary/neeto-cist';
4
+ import { Fragment, useState, useRef, useEffect, useMemo } from 'react';
5
+ import { Spinner, Empty, Badge } from '@bigbinary/neeto-atoms';
6
+ import { CommandDialog, Command, CommandInput, CommandList, CommandEmpty, CommandGroup, CommandItem } from '@bigbinary/neeto-atoms/primitives';
7
+ import { noop, humanize } from '@bigbinary/neeto-cist';
8
+ import useDebounce from '@bigbinary/neeto-commons-frontend/v2/react-utils/useDebounce';
8
9
  import useHotkeys from '@bigbinary/neeto-hotkeys';
9
- import { prop, isEmpty } from 'ramda';
10
10
  import { useTranslation } from 'react-i18next';
11
11
  import { useHistory } from 'react-router-dom';
12
+ import { prop } from 'ramda';
12
13
  import { jsx, jsxs } from 'react/jsx-runtime';
13
14
  import { C as ChevronUp } from '../chevron-up-DKMKfPJx.js';
14
15
  import { C as ChevronDown } from '../chevron-down-BrliMcYV.js';
@@ -71,31 +72,35 @@ var htmlToText = function htmlToText(html) {
71
72
  tmp.innerHTML = html;
72
73
  return tmp.textContent || tmp.innerText || "";
73
74
  };
74
- var highlightMatch = function highlightMatch(text, searchTerm) {
75
- if (!searchTerm) return text;
76
- var regex = new RegExp("(".concat(searchTerm, ")"), "gi");
77
- return text.split(regex).map(function (part, index) {
78
- return (part === null || part === void 0 ? void 0 : part.toLowerCase()) === searchTerm.toLowerCase() ? /*#__PURE__*/jsx("mark", {
79
- className: "rounded-sm bg-yellow-200 text-yellow-900",
80
- children: part
81
- }, index) : part;
82
- });
75
+ var trimAroundMatch = function trimAroundMatch(text, maxLength) {
76
+ var start = text.indexOf("[[[");
77
+ if (start === -1) {
78
+ return text.length > maxLength ? "".concat(text.slice(0, maxLength), "\u2026") : text;
79
+ }
80
+ var from = Math.max(0, start - 24);
81
+ var to = Math.min(text.length, from + maxLength);
82
+ return [from > 0 && "… ", text.slice(from, to).trim(), to < text.length && " …"].filter(Boolean).join("");
83
83
  };
84
- var filterAndHighlightContent = function filterAndHighlightContent(bodyContent, searchTerm) {
85
- if (!searchTerm) return bodyContent;
86
- if (!bodyContent) return null;
87
- return bodyContent.split(/(.{1,130}(?:\s|$))/g).filter(function (line) {
88
- return line.trim();
89
- }).filter(function (line) {
90
- return line.toLowerCase().includes(searchTerm.toLowerCase());
91
- }).map(function (line, index) {
92
- return /*#__PURE__*/jsxs(React__default.Fragment, {
93
- children: [highlightMatch(line, searchTerm), /*#__PURE__*/jsx("br", {})]
94
- }, index);
84
+ var HighlightedSnippet = function HighlightedSnippet(_ref) {
85
+ var _htmlToText;
86
+ var snippet = _ref.snippet,
87
+ _ref$maxLength = _ref.maxLength,
88
+ maxLength = _ref$maxLength === void 0 ? 100 : _ref$maxLength;
89
+ if (!snippet) return null;
90
+ var text = trimAroundMatch((_htmlToText = htmlToText(snippet)) !== null && _htmlToText !== void 0 ? _htmlToText : "", maxLength);
91
+ return /*#__PURE__*/jsx("span", {
92
+ children: text.split(/\[\[\[(.*?)\]\]\]/).map(function (part, index) {
93
+ return index % 2 === 1 ? /*#__PURE__*/jsx("mark", {
94
+ className: "rounded-sm bg-yellow-200 px-0.5 text-yellow-900",
95
+ children: part
96
+ }, index) : /*#__PURE__*/jsx(Fragment, {
97
+ children: part
98
+ }, index);
99
+ })
95
100
  });
96
101
  };
97
102
 
98
- var _excluded = ["enableAdvancedSearch", "data", "isFetching", "isOpen", "searchTerm", "setSearchTerm", "onClose", "onGoToAdvanced", "onLoadMore", "hasMore", "isFetchingMore"];
103
+ var _excluded = ["enableAdvancedSearch", "data", "getTypeLabel", "isFetching", "isOpen", "setIsOpen", "searchTerm", "setSearchTerm", "onSearchChange", "debounceWait", "tagStyle", "tagSize", "onClose", "onGoToAdvanced", "onLoadMore", "hasMore", "isFetchingMore"];
99
104
  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; }
100
105
  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; }
101
106
  var toRelativePath = function toRelativePath(url) {
@@ -117,25 +122,32 @@ var navigateToItem = function navigateToItem(_ref) {
117
122
  var handleAnchorClick = function handleAnchorClick(event) {
118
123
  var isModified = event.metaKey || event.ctrlKey || event.shiftKey || event.button !== 0;
119
124
  if (isModified) {
120
- // Let the browser open the href natively (new tab, new window, etc.);
121
- // don't let cmdk's bubble handler also navigate the current tab.
122
125
  event.stopPropagation();
123
126
  return;
124
127
  }
125
- // Suppress the default browser navigation so cmdk's onSelect (fired via
126
- // the bubbled click) drives the SPA push exactly once.
127
128
  event.preventDefault();
128
129
  };
129
130
  var FinderModal = function FinderModal(_ref2) {
130
131
  var _ref2$enableAdvancedS = _ref2.enableAdvancedSearch,
131
132
  enableAdvancedSearch = _ref2$enableAdvancedS === void 0 ? true : _ref2$enableAdvancedS,
132
133
  _ref2$data = _ref2.data,
133
- data = _ref2$data === void 0 ? {} : _ref2$data,
134
+ data = _ref2$data === void 0 ? [] : _ref2$data,
135
+ _ref2$getTypeLabel = _ref2.getTypeLabel,
136
+ getTypeLabel = _ref2$getTypeLabel === void 0 ? humanize : _ref2$getTypeLabel,
134
137
  isFetching = _ref2.isFetching,
135
138
  isOpen = _ref2.isOpen,
139
+ _ref2$setIsOpen = _ref2.setIsOpen,
140
+ setIsOpen = _ref2$setIsOpen === void 0 ? noop : _ref2$setIsOpen,
136
141
  _ref2$searchTerm = _ref2.searchTerm,
137
142
  searchTerm = _ref2$searchTerm === void 0 ? "" : _ref2$searchTerm,
138
143
  setSearchTerm = _ref2.setSearchTerm,
144
+ onSearchChange = _ref2.onSearchChange,
145
+ _ref2$debounceWait = _ref2.debounceWait,
146
+ debounceWait = _ref2$debounceWait === void 0 ? 300 : _ref2$debounceWait,
147
+ _ref2$tagStyle = _ref2.tagStyle,
148
+ tagStyle = _ref2$tagStyle === void 0 ? "primary" : _ref2$tagStyle,
149
+ _ref2$tagSize = _ref2.tagSize,
150
+ tagSize = _ref2$tagSize === void 0 ? "small" : _ref2$tagSize,
139
151
  onClose = _ref2.onClose,
140
152
  _ref2$onGoToAdvanced = _ref2.onGoToAdvanced,
141
153
  onGoToAdvanced = _ref2$onGoToAdvanced === void 0 ? noop : _ref2$onGoToAdvanced,
@@ -153,17 +165,41 @@ var FinderModal = function FinderModal(_ref2) {
153
165
  sentinelEl = _useState2[0],
154
166
  setSentinelEl = _useState2[1];
155
167
  var onLoadMoreRef = useRef(onLoadMore || noop);
156
- var categories = Object.keys(data).filter(function (key) {
157
- return isNotEmpty(data[key]);
158
- });
159
- var isDataEmpty = isEmpty(categories);
168
+ var _useState3 = useState(searchTerm),
169
+ _useState4 = _slicedToArray(_useState3, 2),
170
+ internalSearchTerm = _useState4[0],
171
+ setInternalSearchTerm = _useState4[1];
172
+ useEffect(function () {
173
+ if (searchTerm !== internalSearchTerm) {
174
+ setInternalSearchTerm(searchTerm);
175
+ }
176
+ }, [searchTerm]);
177
+ var debouncedSearchTerm = useDebounce(internalSearchTerm, debounceWait);
178
+ useEffect(function () {
179
+ onSearchChange === null || onSearchChange === void 0 || onSearchChange(debouncedSearchTerm);
180
+ }, [debouncedSearchTerm, onSearchChange]);
181
+ var handleSearchChange = function handleSearchChange(value) {
182
+ setInternalSearchTerm(value);
183
+ setSearchTerm === null || setSearchTerm === void 0 || setSearchTerm(value);
184
+ };
160
185
  var handleOpenChange = function handleOpenChange(open) {
161
186
  if (!open) onClose === null || onClose === void 0 || onClose();
162
187
  };
163
- useHotkeys(["ctrl+enter", "command+enter"], onGoToAdvanced, {
188
+ useHotkeys(["ctrl+enter", "mod+enter"], onGoToAdvanced, {
164
189
  mode: "global",
165
190
  enabled: isOpen && enableAdvancedSearch
166
191
  });
192
+ useHotkeys("mod+k", function () {
193
+ return setIsOpen(true);
194
+ }, {
195
+ mode: "global"
196
+ });
197
+ useHotkeys("esc", function () {
198
+ return setIsOpen(false);
199
+ }, {
200
+ mode: "global",
201
+ enabled: isOpen
202
+ });
167
203
  useEffect(function () {
168
204
  onLoadMoreRef.current = onLoadMore || noop;
169
205
  }, [onLoadMore]);
@@ -186,6 +222,58 @@ var FinderModal = function FinderModal(_ref2) {
186
222
  return observer.disconnect();
187
223
  };
188
224
  }, [sentinelEl, isPaginationEnabled, hasMore, isFetchingMore]);
225
+ var isDataEmpty = useMemo(function () {
226
+ if (Array.isArray(data)) return data.length === 0;
227
+ return Object.values(data).every(function (items) {
228
+ return items.length === 0;
229
+ });
230
+ }, [data]);
231
+ var renderItems = function renderItems(items) {
232
+ return items.map(function (item, index) {
233
+ var _item$id, _item$id2;
234
+ var relativePath = toRelativePath(item.url);
235
+ var description = htmlToText(item.description);
236
+ return /*#__PURE__*/jsx(CommandItem, {
237
+ className: "!p-0",
238
+ value: "".concat(item.type, "-").concat((_item$id2 = item.id) !== null && _item$id2 !== void 0 ? _item$id2 : index),
239
+ onSelect: function onSelect() {
240
+ return navigateToItem({
241
+ history: history,
242
+ onClose: onClose,
243
+ relativePath: relativePath
244
+ });
245
+ },
246
+ children: /*#__PURE__*/jsxs("a", {
247
+ className: "flex min-w-0 flex-1 items-center justify-between gap-3 px-3 py-2.5 no-underline outline-none",
248
+ href: relativePath,
249
+ onClick: handleAnchorClick,
250
+ children: [/*#__PURE__*/jsxs("div", {
251
+ className: "flex min-w-0 flex-1 flex-col gap-1.5",
252
+ children: [/*#__PURE__*/jsx("span", {
253
+ className: "text-foreground line-clamp-1 text-sm font-medium",
254
+ children: /*#__PURE__*/jsx(HighlightedSnippet, {
255
+ maxLength: 80,
256
+ snippet: item.title || ""
257
+ })
258
+ }), description && /*#__PURE__*/jsx("span", {
259
+ className: "text-muted-foreground line-clamp-1 text-xs",
260
+ children: /*#__PURE__*/jsx(HighlightedSnippet, {
261
+ maxLength: 80,
262
+ snippet: item.description
263
+ })
264
+ })]
265
+ }), item.type && /*#__PURE__*/jsx("div", {
266
+ className: "shrink-0",
267
+ children: /*#__PURE__*/jsx(Badge, {
268
+ color: tagStyle,
269
+ label: getTypeLabel(item.type),
270
+ size: tagSize
271
+ })
272
+ })]
273
+ })
274
+ }, "".concat(item.type, "-").concat((_item$id = item.id) !== null && _item$id !== void 0 ? _item$id : index));
275
+ });
276
+ };
189
277
  return /*#__PURE__*/jsx(CommandDialog, _objectSpread(_objectSpread({}, props), {}, {
190
278
  className: "nm-finder-modal !top-1/4 !max-w-[calc(100%-2rem)] sm:!max-w-xl",
191
279
  open: isOpen,
@@ -200,8 +288,8 @@ var FinderModal = function FinderModal(_ref2) {
200
288
  className: "min-w-0 flex-1",
201
289
  children: /*#__PURE__*/jsx(CommandInput, {
202
290
  placeholder: t("neetoMolecules.common.actions.search"),
203
- value: searchTerm,
204
- onValueChange: setSearchTerm
291
+ value: internalSearchTerm,
292
+ onValueChange: handleSearchChange
205
293
  })
206
294
  }), isFetching && /*#__PURE__*/jsx(Spinner, {
207
295
  size: "small"
@@ -221,47 +309,19 @@ var FinderModal = function FinderModal(_ref2) {
221
309
  children: [isDataEmpty && !isFetching && /*#__PURE__*/jsx(CommandEmpty, {
222
310
  className: "!py-8",
223
311
  children: /*#__PURE__*/jsx(Empty, {
224
- description: t("neetoMolecules.finderModal.noDataDesc"),
225
312
  icon: Search,
226
- title: t("neetoMolecules.finderModal.noDataTitle")
313
+ description: internalSearchTerm ? t("neetoMolecules.finderModal.noDataDesc") : t("neetoMolecules.finderModal.startTypingDesc"),
314
+ title: internalSearchTerm ? t("neetoMolecules.finderModal.noDataTitle") : t("neetoMolecules.finderModal.startTypingTitle")
227
315
  })
228
- }), categories.map(function (category, index) {
229
- return /*#__PURE__*/jsxs(Fragment, {
230
- children: [/*#__PURE__*/jsx(CommandGroup, {
231
- heading: humanize(category),
232
- children: data[category].map(function (item) {
233
- var name = htmlToText(item.name);
234
- var body = htmlToText(item.body);
235
- var filteredBody = filterAndHighlightContent(body, searchTerm);
236
- var relativePath = toRelativePath(item.url);
237
- return /*#__PURE__*/jsx(CommandItem, {
238
- className: "!p-0",
239
- value: "".concat(category, "-").concat(item.id),
240
- onSelect: function onSelect() {
241
- return navigateToItem({
242
- history: history,
243
- onClose: onClose,
244
- relativePath: relativePath
245
- });
246
- },
247
- children: /*#__PURE__*/jsxs("a", {
248
- className: "flex min-w-0 flex-1 flex-col gap-1.5 px-3 py-2.5 no-underline outline-none",
249
- href: relativePath,
250
- onClick: handleAnchorClick,
251
- children: [name && /*#__PURE__*/jsx("span", {
252
- className: "text-foreground line-clamp-1 text-sm font-medium",
253
- children: highlightMatch(name, searchTerm)
254
- }), body && /*#__PURE__*/jsx("span", {
255
- className: "text-muted-foreground line-clamp-1 text-xs",
256
- children: filteredBody || body
257
- })]
258
- })
259
- }, "".concat(category, "-").concat(item.id));
260
- })
261
- }), index < categories.length - 1 && /*#__PURE__*/jsx(CommandSeparator, {
262
- className: "my-1"
263
- })]
264
- }, category);
316
+ }), Array.isArray(data) ? renderItems(data) : Object.entries(data).map(function (_ref5) {
317
+ var _ref6 = _slicedToArray(_ref5, 2),
318
+ group = _ref6[0],
319
+ items = _ref6[1];
320
+ if (!items.length) return null;
321
+ return /*#__PURE__*/jsx(CommandGroup, {
322
+ heading: group,
323
+ children: renderItems(items)
324
+ }, group);
265
325
  }), onLoadMore && hasMore && /*#__PURE__*/jsx("div", {
266
326
  "aria-hidden": "true",
267
327
  className: "h-px w-full",
@@ -281,5 +341,5 @@ var FinderModal = function FinderModal(_ref2) {
281
341
  }));
282
342
  };
283
343
 
284
- export { FinderModal as default };
344
+ export { HighlightedSnippet, FinderModal as default };
285
345
  //# sourceMappingURL=FinderModal.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"FinderModal.js","sources":["../../src/v2/components/FinderModal/Footer.jsx","../../src/v2/components/FinderModal/utils.jsx","../../src/v2/components/FinderModal/index.jsx"],"sourcesContent":["import { ChevronDown, ChevronUp } from \"lucide-react\";\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 <ChevronUp className=\"text-muted-foreground\" key=\"up\" size={12} />,\n <ChevronDown className=\"text-muted-foreground\" 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 <div className=\"border-border bg-muted/40 nm-finder-modal__footer border-t px-4 py-2.5\">\n <div className=\"text-muted-foreground flex flex-wrap items-center gap-x-3 gap-y-1.5 text-xs\">\n {shortcuts.filter(prop(\"isVisible\")).map(({ label, keys }, index) => (\n <div className=\"flex items-center gap-1\" key={index}>\n {keys.map((key, keyIndex) => (\n <kbd\n className=\"border-border bg-background text-foreground inline-flex h-4 min-w-4 items-center justify-center rounded border px-1 font-sans text-[10px] leading-none\"\n key={keyIndex}\n >\n {key}\n </kbd>\n ))}\n <span>{label}</span>\n </div>\n ))}\n </div>\n </div>\n );\n};\n\nexport default ModalFooter;\n","import React from \"react\";\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 <mark className=\"rounded-sm bg-yellow-200 text-yellow-900\" key={index}>\n {part}\n </mark>\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","import { Fragment, useEffect, useRef, useState } from \"react\";\n\nimport { Empty, Spinner } from \"@bigbinary/neeto-atoms\";\nimport {\n Command,\n CommandDialog,\n CommandEmpty,\n CommandGroup,\n CommandInput,\n CommandItem,\n CommandList,\n CommandSeparator,\n} from \"@bigbinary/neeto-atoms/primitives\";\nimport { Search } from \"lucide-react\";\nimport { humanize, isNotEmpty, noop } from \"neetocist\";\nimport useHotkeys from \"neetohotkeys\";\nimport PropTypes from \"prop-types\";\nimport { isEmpty } from \"ramda\";\nimport { useTranslation } from \"react-i18next\";\nimport { useHistory } from \"react-router-dom\";\n\nimport ModalFooter from \"./Footer\";\nimport { filterAndHighlightContent, highlightMatch, htmlToText } from \"./utils\";\n\nconst toRelativePath = url => {\n const { pathname, search } = new URL(url);\n\n return `${pathname}${search}`;\n};\n\nconst navigateToItem = ({ history, onClose, relativePath }) => {\n onClose?.();\n const currentPath = `${history.location.pathname}${history.location.search}`;\n if (currentPath !== relativePath) {\n history.push(relativePath);\n }\n};\n\nconst handleAnchorClick = event => {\n const isModified =\n event.metaKey || event.ctrlKey || event.shiftKey || event.button !== 0;\n if (isModified) {\n // Let the browser open the href natively (new tab, new window, etc.);\n // don't let cmdk's bubble handler also navigate the current tab.\n event.stopPropagation();\n\n return;\n }\n // Suppress the default browser navigation so cmdk's onSelect (fired via\n // the bubbled click) drives the SPA push exactly once.\n event.preventDefault();\n};\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 = false,\n isFetchingMore = false,\n ...props\n}) => {\n const { t } = useTranslation();\n const history = useHistory();\n const [sentinelEl, setSentinelEl] = useState(null);\n const onLoadMoreRef = useRef(onLoadMore || noop);\n\n const categories = Object.keys(data).filter(key => isNotEmpty(data[key]));\n const isDataEmpty = isEmpty(categories);\n\n const handleOpenChange = open => {\n if (!open) onClose?.();\n };\n\n useHotkeys([\"ctrl+enter\", \"command+enter\"], onGoToAdvanced, {\n mode: \"global\",\n enabled: isOpen && enableAdvancedSearch,\n });\n\n useEffect(() => {\n onLoadMoreRef.current = onLoadMore || noop;\n }, [onLoadMore]);\n\n const isPaginationEnabled = Boolean(onLoadMore);\n\n useEffect(() => {\n if (!sentinelEl || !isPaginationEnabled || !hasMore || isFetchingMore) {\n return undefined;\n }\n\n const root = sentinelEl.closest(\".nm-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(sentinelEl);\n\n return () => observer.disconnect();\n }, [sentinelEl, isPaginationEnabled, hasMore, isFetchingMore]);\n\n return (\n <CommandDialog\n {...props}\n className=\"nm-finder-modal !top-1/4 !max-w-[calc(100%-2rem)] sm:!max-w-xl\"\n open={isOpen}\n title={t(\"neetoMolecules.common.actions.search\")}\n onOpenChange={handleOpenChange}\n >\n <Command className=\"!p-0\" shouldFilter={false}>\n <div className=\"border-border flex items-center gap-2 border-b px-3 py-2 [&_[data-slot=command-input-wrapper]]:!p-0\">\n <div className=\"min-w-0 flex-1\">\n <CommandInput\n placeholder={t(\"neetoMolecules.common.actions.search\")}\n value={searchTerm}\n onValueChange={setSearchTerm}\n />\n </div>\n {isFetching && <Spinner size=\"small\" />}\n {enableAdvancedSearch && (\n <button\n className=\"border-border bg-background text-muted-foreground hover:bg-muted hover:text-foreground flex h-8 shrink-0 items-center gap-2 rounded-md border px-2 text-xs whitespace-nowrap transition-colors\"\n type=\"button\"\n onClick={onGoToAdvanced}\n >\n <span>{t(\"neetoMolecules.finderModal.advancedSearch\")}</span>\n <kbd className=\"border-border bg-muted inline-flex h-4 items-center rounded border px-1 font-sans text-[10px] leading-none\">\n ⌘⏎\n </kbd>\n </button>\n )}\n </div>\n <CommandList className=\"nm-finder-modal__body max-h-[min(24rem,55vh)] min-h-[min(12rem,40vh)] p-2\">\n {isDataEmpty && !isFetching && (\n <CommandEmpty className=\"!py-8\">\n <Empty\n description={t(\"neetoMolecules.finderModal.noDataDesc\")}\n icon={Search}\n title={t(\"neetoMolecules.finderModal.noDataTitle\")}\n />\n </CommandEmpty>\n )}\n {categories.map((category, index) => (\n <Fragment key={category}>\n <CommandGroup heading={humanize(category)}>\n {data[category].map(item => {\n const name = htmlToText(item.name);\n const body = htmlToText(item.body);\n const filteredBody = filterAndHighlightContent(\n body,\n searchTerm\n );\n\n const relativePath = toRelativePath(item.url);\n\n return (\n <CommandItem\n className=\"!p-0\"\n key={`${category}-${item.id}`}\n value={`${category}-${item.id}`}\n onSelect={() =>\n navigateToItem({ history, onClose, relativePath })\n }\n >\n <a\n className=\"flex min-w-0 flex-1 flex-col gap-1.5 px-3 py-2.5 no-underline outline-none\"\n href={relativePath}\n onClick={handleAnchorClick}\n >\n {name && (\n <span className=\"text-foreground line-clamp-1 text-sm font-medium\">\n {highlightMatch(name, searchTerm)}\n </span>\n )}\n {body && (\n <span className=\"text-muted-foreground line-clamp-1 text-xs\">\n {filteredBody || body}\n </span>\n )}\n </a>\n </CommandItem>\n );\n })}\n </CommandGroup>\n {index < categories.length - 1 && (\n <CommandSeparator className=\"my-1\" />\n )}\n </Fragment>\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={setSentinelEl}\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 </CommandList>\n <ModalFooter {...{ enableAdvancedSearch }} />\n </Command>\n </CommandDialog>\n );\n};\n\nFinderModal.propTypes = {\n enableAdvancedSearch: PropTypes.bool,\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 isFetching: PropTypes.bool,\n isOpen: PropTypes.bool,\n searchTerm: PropTypes.string,\n setSearchTerm: PropTypes.func,\n onClose: PropTypes.func,\n onGoToAdvanced: PropTypes.func,\n onLoadMore: PropTypes.func,\n hasMore: PropTypes.bool,\n isFetchingMore: PropTypes.bool,\n};\n\nexport default FinderModal;\n"],"names":["ModalFooter","_ref","enableAdvancedSearch","_useTranslation","useTranslation","t","shortcuts","label","keys","isVisible","_jsx","ChevronUp","className","size","ChevronDown","children","filter","prop","map","_ref2","index","_jsxs","key","keyIndex","htmlToText","html","tmp","document","createElement","innerHTML","textContent","innerText","highlightMatch","text","searchTerm","regex","RegExp","concat","split","part","toLowerCase","filterAndHighlightContent","bodyContent","line","trim","includes","React","Fragment","toRelativePath","url","_URL","URL","pathname","search","navigateToItem","history","onClose","relativePath","currentPath","location","push","handleAnchorClick","event","isModified","metaKey","ctrlKey","shiftKey","button","stopPropagation","preventDefault","FinderModal","_ref2$enableAdvancedS","_ref2$data","data","isFetching","isOpen","_ref2$searchTerm","setSearchTerm","_ref2$onGoToAdvanced","onGoToAdvanced","noop","onLoadMore","_ref2$hasMore","hasMore","_ref2$isFetchingMore","isFetchingMore","props","_objectWithoutProperties","_excluded","useHistory","_useState","useState","_useState2","_slicedToArray","sentinelEl","setSentinelEl","onLoadMoreRef","useRef","categories","Object","isNotEmpty","isDataEmpty","isEmpty","handleOpenChange","open","useHotkeys","mode","enabled","useEffect","current","isPaginationEnabled","Boolean","undefined","root","closest","observer","IntersectionObserver","_ref3","_ref4","entry","isIntersecting","rootMargin","observe","disconnect","CommandDialog","_objectSpread","title","onOpenChange","Command","shouldFilter","CommandInput","placeholder","value","onValueChange","Spinner","type","onClick","CommandList","CommandEmpty","Empty","description","icon","Search","category","CommandGroup","heading","humanize","item","name","body","filteredBody","CommandItem","id","onSelect","href","length","CommandSeparator","ref"],"mappings":";;;;;;;;;;;;;;;;;AAIA,IAAMA,WAAW,GAAG,SAAdA,WAAWA,CAAAC,IAAA,EAAiC;AAAA,EAAA,IAA3BC,oBAAoB,GAAAD,IAAA,CAApBC,oBAAoB;AACzC,EAAA,IAAAC,eAAA,GAAcC,cAAc,EAAE;IAAtBC,CAAC,GAAAF,eAAA,CAADE,CAAC;EAET,IAAMC,SAAS,GAAG,CAChB;AACEC,IAAAA,KAAK,EAAEF,CAAC,CAAC,2CAA2C,CAAC;AACrDG,IAAAA,IAAI,EAAE,CAAC,UAAU,EAAE,QAAQ,CAAC;AAC5BC,IAAAA,SAAS,EAAEP;AACb,GAAC,EACD;AACEK,IAAAA,KAAK,EAAEF,CAAC,CAAC,oCAAoC,CAAC;IAC9CG,IAAI,EAAE,CAAC,QAAQ,CAAC;AAChBC,IAAAA,SAAS,EAAE;AACb,GAAC,EACD;AACEF,IAAAA,KAAK,EAAEF,CAAC,CAAC,oCAAoC,CAAC;AAC9CG,IAAAA,IAAI,EAAE,cACJE,GAAA,CAACC,SAAS,EAAA;AAACC,MAAAA,SAAS,EAAC,uBAAuB;AAAUC,MAAAA,IAAI,EAAE;AAAG,KAAA,EAAd,IAAgB,CAAC,eAClEH,GAAA,CAACI,WAAW,EAAA;AAACF,MAAAA,SAAS,EAAC,uBAAuB;AAAYC,MAAAA,IAAI,EAAE;KAAG,EAAhB,MAAkB,CAAC,CACvE;AACDJ,IAAAA,SAAS,EAAE;AACb,GAAC,EACD;AACEF,IAAAA,KAAK,EAAEF,CAAC,CAAC,qCAAqC,CAAC;IAC/CG,IAAI,EAAE,CAAC,KAAK,CAAC;AACbC,IAAAA,SAAS,EAAE;AACb,GAAC,CACF;AAED,EAAA,oBACEC,GAAA,CAAA,KAAA,EAAA;AAAKE,IAAAA,SAAS,EAAC,wEAAwE;AAAAG,IAAAA,QAAA,eACrFL,GAAA,CAAA,KAAA,EAAA;AAAKE,MAAAA,SAAS,EAAC,6EAA6E;AAAAG,MAAAA,QAAA,EACzFT,SAAS,CAACU,MAAM,CAACC,IAAI,CAAC,WAAW,CAAC,CAAC,CAACC,GAAG,CAAC,UAAAC,KAAA,EAAkBC,KAAK,EAAA;AAAA,QAAA,IAApBb,KAAK,GAAAY,KAAA,CAALZ,KAAK;UAAEC,IAAI,GAAAW,KAAA,CAAJX,IAAI;AAAA,QAAA,oBACrDa,IAAA,CAAA,KAAA,EAAA;AAAKT,UAAAA,SAAS,EAAC,yBAAyB;UAAAG,QAAA,EAAA,CACrCP,IAAI,CAACU,GAAG,CAAC,UAACI,GAAG,EAAEC,QAAQ,EAAA;AAAA,YAAA,oBACtBb,GAAA,CAAA,KAAA,EAAA;AACEE,cAAAA,SAAS,EAAC,wJAAwJ;AAAAG,cAAAA,QAAA,EAGjKO;AAAG,aAAA,EAFCC,QAGF,CAAC;UAAA,CACP,CAAC,eACFb,GAAA,CAAA,MAAA,EAAA;AAAAK,YAAAA,QAAA,EAAOR;AAAK,WAAO,CAAC;AAAA,SAAA,EATwBa,KAUzC,CAAC;MAAA,CACP;KACE;AAAC,GACH,CAAC;AAEV,CAAC;;AClDM,IAAMI,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,CAAAC,MAAA,CAAKH,UAAU,EAAA,GAAA,CAAA,EAAK,IAAI,CAAC;AAEjD,EAAA,OAAOD,IAAI,CAACK,KAAK,CAACH,KAAK,CAAC,CAACjB,GAAG,CAAC,UAACqB,IAAI,EAAEnB,KAAK,EAAA;AAAA,IAAA,OACvC,CAAAmB,IAAI,KAAA,IAAA,IAAJA,IAAI,KAAA,MAAA,GAAA,MAAA,GAAJA,IAAI,CAAEC,WAAW,EAAE,MAAKN,UAAU,CAACM,WAAW,EAAE,gBAC9C9B,GAAA,CAAA,MAAA,EAAA;AAAME,MAAAA,SAAS,EAAC,0CAA0C;AAAAG,MAAAA,QAAA,EACvDwB;KAAI,EADyDnB,KAE1D,CAAC,GAEPmB,IACD;AAAA,EAAA,CACH,CAAC;AACH,CAAC;AAEM,IAAME,yBAAyB,GAAG,SAA5BA,yBAAyBA,CAAIC,WAAW,EAAER,UAAU,EAAK;AACpE,EAAA,IAAI,CAACA,UAAU,EAAE,OAAOQ,WAAW;AAEnC,EAAA,IAAI,CAACA,WAAW,EAAE,OAAO,IAAI;EAE7B,OAAOA,WAAW,CACfJ,KAAK,CAAC,qBAAqB,CAAC,CAC5BtB,MAAM,CAAC,UAAA2B,IAAI,EAAA;AAAA,IAAA,OAAIA,IAAI,CAACC,IAAI,EAAE;AAAA,EAAA,CAAA,CAAC,CAC3B5B,MAAM,CAAC,UAAA2B,IAAI,EAAA;AAAA,IAAA,OAAIA,IAAI,CAACH,WAAW,EAAE,CAACK,QAAQ,CAACX,UAAU,CAACM,WAAW,EAAE,CAAC;AAAA,EAAA,CAAA,CAAC,CACrEtB,GAAG,CAAC,UAACyB,IAAI,EAAEvB,KAAK,EAAA;AAAA,IAAA,oBACfC,IAAA,CAACyB,cAAK,CAACC,QAAQ,EAAA;MAAAhC,QAAA,EAAA,CACZiB,cAAc,CAACW,IAAI,EAAET,UAAU,CAAC,eACjCxB,GAAA,CAAA,IAAA,EAAA,EAAK,CAAC;AAAA,KAAA,EAFaU,KAGL,CAAC;AAAA,EAAA,CAClB,CAAC;AACN,CAAC;;;;;AClBD,IAAM4B,cAAc,GAAG,SAAjBA,cAAcA,CAAGC,GAAG,EAAI;AAC5B,EAAA,IAAAC,IAAA,GAA6B,IAAIC,GAAG,CAACF,GAAG,CAAC;IAAjCG,QAAQ,GAAAF,IAAA,CAARE,QAAQ;IAAEC,MAAM,GAAAH,IAAA,CAANG,MAAM;AAExB,EAAA,OAAA,EAAA,CAAAhB,MAAA,CAAUe,QAAQ,CAAA,CAAAf,MAAA,CAAGgB,MAAM,CAAA;AAC7B,CAAC;AAED,IAAMC,cAAc,GAAG,SAAjBA,cAAcA,CAAArD,IAAA,EAA2C;AAAA,EAAA,IAArCsD,OAAO,GAAAtD,IAAA,CAAPsD,OAAO;IAAEC,OAAO,GAAAvD,IAAA,CAAPuD,OAAO;IAAEC,YAAY,GAAAxD,IAAA,CAAZwD,YAAY;AACtDD,EAAAA,OAAO,KAAA,IAAA,IAAPA,OAAO,KAAA,MAAA,IAAPA,OAAO,EAAI;AACX,EAAA,IAAME,WAAW,GAAA,EAAA,CAAArB,MAAA,CAAMkB,OAAO,CAACI,QAAQ,CAACP,QAAQ,CAAA,CAAAf,MAAA,CAAGkB,OAAO,CAACI,QAAQ,CAACN,MAAM,CAAE;EAC5E,IAAIK,WAAW,KAAKD,YAAY,EAAE;AAChCF,IAAAA,OAAO,CAACK,IAAI,CAACH,YAAY,CAAC;AAC5B,EAAA;AACF,CAAC;AAED,IAAMI,iBAAiB,GAAG,SAApBA,iBAAiBA,CAAGC,KAAK,EAAI;AACjC,EAAA,IAAMC,UAAU,GACdD,KAAK,CAACE,OAAO,IAAIF,KAAK,CAACG,OAAO,IAAIH,KAAK,CAACI,QAAQ,IAAIJ,KAAK,CAACK,MAAM,KAAK,CAAC;AACxE,EAAA,IAAIJ,UAAU,EAAE;AACd;AACA;IACAD,KAAK,CAACM,eAAe,EAAE;AAEvB,IAAA;AACF,EAAA;AACA;AACA;EACAN,KAAK,CAACO,cAAc,EAAE;AACxB,CAAC;AAED,IAAMC,WAAW,GAAG,SAAdA,WAAWA,CAAAnD,KAAA,EAaX;AAAA,EAAA,IAAAoD,qBAAA,GAAApD,KAAA,CAZJjB,oBAAoB;AAApBA,IAAAA,oBAAoB,GAAAqE,qBAAA,KAAA,MAAA,GAAG,IAAI,GAAAA,qBAAA;IAAAC,UAAA,GAAArD,KAAA,CAC3BsD,IAAI;AAAJA,IAAAA,IAAI,GAAAD,UAAA,KAAA,MAAA,GAAG,EAAE,GAAAA,UAAA;IACTE,UAAU,GAAAvD,KAAA,CAAVuD,UAAU;IACVC,MAAM,GAAAxD,KAAA,CAANwD,MAAM;IAAAC,gBAAA,GAAAzD,KAAA,CACNe,UAAU;AAAVA,IAAAA,UAAU,GAAA0C,gBAAA,KAAA,MAAA,GAAG,EAAE,GAAAA,gBAAA;IACfC,aAAa,GAAA1D,KAAA,CAAb0D,aAAa;IACbrB,OAAO,GAAArC,KAAA,CAAPqC,OAAO;IAAAsB,oBAAA,GAAA3D,KAAA,CACP4D,cAAc;AAAdA,IAAAA,cAAc,GAAAD,oBAAA,KAAA,MAAA,GAAGE,IAAI,GAAAF,oBAAA;IACrBG,UAAU,GAAA9D,KAAA,CAAV8D,UAAU;IAAAC,aAAA,GAAA/D,KAAA,CACVgE,OAAO;AAAPA,IAAAA,OAAO,GAAAD,aAAA,KAAA,MAAA,GAAG,KAAK,GAAAA,aAAA;IAAAE,oBAAA,GAAAjE,KAAA,CACfkE,cAAc;AAAdA,IAAAA,cAAc,GAAAD,oBAAA,KAAA,MAAA,GAAG,KAAK,GAAAA,oBAAA;AACnBE,IAAAA,KAAK,GAAAC,wBAAA,CAAApE,KAAA,EAAAqE,SAAA,CAAA;AAER,EAAA,IAAArF,eAAA,GAAcC,cAAc,EAAE;IAAtBC,CAAC,GAAAF,eAAA,CAADE,CAAC;AACT,EAAA,IAAMkD,OAAO,GAAGkC,UAAU,EAAE;AAC5B,EAAA,IAAAC,SAAA,GAAoCC,QAAQ,CAAC,IAAI,CAAC;IAAAC,UAAA,GAAAC,cAAA,CAAAH,SAAA,EAAA,CAAA,CAAA;AAA3CI,IAAAA,UAAU,GAAAF,UAAA,CAAA,CAAA,CAAA;AAAEG,IAAAA,aAAa,GAAAH,UAAA,CAAA,CAAA,CAAA;AAChC,EAAA,IAAMI,aAAa,GAAGC,MAAM,CAAChB,UAAU,IAAID,IAAI,CAAC;AAEhD,EAAA,IAAMkB,UAAU,GAAGC,MAAM,CAAC3F,IAAI,CAACiE,IAAI,CAAC,CAACzD,MAAM,CAAC,UAAAM,GAAG,EAAA;AAAA,IAAA,OAAI8E,UAAU,CAAC3B,IAAI,CAACnD,GAAG,CAAC,CAAC;EAAA,CAAA,CAAC;AACzE,EAAA,IAAM+E,WAAW,GAAGC,OAAO,CAACJ,UAAU,CAAC;AAEvC,EAAA,IAAMK,gBAAgB,GAAG,SAAnBA,gBAAgBA,CAAGC,IAAI,EAAI;IAC/B,IAAI,CAACA,IAAI,EAAEhD,OAAO,aAAPA,OAAO,KAAA,MAAA,IAAPA,OAAO,EAAI;EACxB,CAAC;EAEDiD,UAAU,CAAC,CAAC,YAAY,EAAE,eAAe,CAAC,EAAE1B,cAAc,EAAE;AAC1D2B,IAAAA,IAAI,EAAE,QAAQ;IACdC,OAAO,EAAEhC,MAAM,IAAIzE;AACrB,GAAC,CAAC;AAEF0G,EAAAA,SAAS,CAAC,YAAM;AACdZ,IAAAA,aAAa,CAACa,OAAO,GAAG5B,UAAU,IAAID,IAAI;AAC5C,EAAA,CAAC,EAAE,CAACC,UAAU,CAAC,CAAC;AAEhB,EAAA,IAAM6B,mBAAmB,GAAGC,OAAO,CAAC9B,UAAU,CAAC;AAE/C2B,EAAAA,SAAS,CAAC,YAAM;IACd,IAAI,CAACd,UAAU,IAAI,CAACgB,mBAAmB,IAAI,CAAC3B,OAAO,IAAIE,cAAc,EAAE;AACrE,MAAA,OAAO2B,SAAS;AAClB,IAAA;AAEA,IAAA,IAAMC,IAAI,GAAGnB,UAAU,CAACoB,OAAO,CAAC,wBAAwB,CAAC;AACzD,IAAA,IAAMC,QAAQ,GAAG,IAAIC,oBAAoB,CACvC,UAAAC,KAAA,EAAa;AAAA,MAAA,IAAAC,KAAA,GAAAzB,cAAA,CAAAwB,KAAA,EAAA,CAAA,CAAA;AAAXE,QAAAA,KAAK,GAAAD,KAAA,CAAA,CAAA,CAAA;MACL,IAAIC,KAAK,CAACC,cAAc,EAAExB,aAAa,CAACa,OAAO,EAAE;AACnD,IAAA,CAAC,EACD;AAAEI,MAAAA,IAAI,EAAJA,IAAI;AAAEQ,MAAAA,UAAU,EAAE;AAAQ,KAC9B,CAAC;AACDN,IAAAA,QAAQ,CAACO,OAAO,CAAC5B,UAAU,CAAC;IAE5B,OAAO,YAAA;AAAA,MAAA,OAAMqB,QAAQ,CAACQ,UAAU,EAAE;AAAA,IAAA,CAAA;EACpC,CAAC,EAAE,CAAC7B,UAAU,EAAEgB,mBAAmB,EAAE3B,OAAO,EAAEE,cAAc,CAAC,CAAC;EAE9D,oBACE3E,GAAA,CAACkH,aAAa,EAAAC,aAAA,CAAAA,aAAA,KACRvC,KAAK,CAAA,EAAA,EAAA,EAAA;AACT1E,IAAAA,SAAS,EAAC,gEAAgE;AAC1E4F,IAAAA,IAAI,EAAE7B,MAAO;AACbmD,IAAAA,KAAK,EAAEzH,CAAC,CAAC,sCAAsC,CAAE;AACjD0H,IAAAA,YAAY,EAAExB,gBAAiB;IAAAxF,QAAA,eAE/BM,IAAA,CAAC2G,OAAO,EAAA;AAACpH,MAAAA,SAAS,EAAC,MAAM;AAACqH,MAAAA,YAAY,EAAE,KAAM;AAAAlH,MAAAA,QAAA,gBAC5CM,IAAA,CAAA,KAAA,EAAA;AAAKT,QAAAA,SAAS,EAAC,qGAAqG;AAAAG,QAAAA,QAAA,gBAClHL,GAAA,CAAA,KAAA,EAAA;AAAKE,UAAAA,SAAS,EAAC,gBAAgB;UAAAG,QAAA,eAC7BL,GAAA,CAACwH,YAAY,EAAA;AACXC,YAAAA,WAAW,EAAE9H,CAAC,CAAC,sCAAsC,CAAE;AACvD+H,YAAAA,KAAK,EAAElG,UAAW;AAClBmG,YAAAA,aAAa,EAAExD;WAChB;AAAC,SACC,CAAC,EACLH,UAAU,iBAAIhE,GAAA,CAAC4H,OAAO,EAAA;AAACzH,UAAAA,IAAI,EAAC;AAAO,SAAE,CAAC,EACtCX,oBAAoB,iBACnBmB,IAAA,CAAA,QAAA,EAAA;AACET,UAAAA,SAAS,EAAC,gMAAgM;AAC1M2H,UAAAA,IAAI,EAAC,QAAQ;AACbC,UAAAA,OAAO,EAAEzD,cAAe;AAAAhE,UAAAA,QAAA,gBAExBL,GAAA,CAAA,MAAA,EAAA;YAAAK,QAAA,EAAOV,CAAC,CAAC,2CAA2C;WAAQ,CAAC,eAC7DK,GAAA,CAAA,KAAA,EAAA;AAAKE,YAAAA,SAAS,EAAC,4GAA4G;AAAAG,YAAAA,QAAA,EAAC;AAE5H,WAAK,CAAC;AAAA,SACA,CACT;AAAA,OACE,CAAC,eACNM,IAAA,CAACoH,WAAW,EAAA;AAAC7H,QAAAA,SAAS,EAAC,2EAA2E;QAAAG,QAAA,EAAA,CAC/FsF,WAAW,IAAI,CAAC3B,UAAU,iBACzBhE,GAAA,CAACgI,YAAY,EAAA;AAAC9H,UAAAA,SAAS,EAAC,OAAO;UAAAG,QAAA,eAC7BL,GAAA,CAACiI,KAAK,EAAA;AACJC,YAAAA,WAAW,EAAEvI,CAAC,CAAC,uCAAuC,CAAE;AACxDwI,YAAAA,IAAI,EAAEC,MAAO;YACbhB,KAAK,EAAEzH,CAAC,CAAC,wCAAwC;WAClD;SACW,CACf,EACA6F,UAAU,CAAChF,GAAG,CAAC,UAAC6H,QAAQ,EAAE3H,KAAK,EAAA;UAAA,oBAC9BC,IAAA,CAAC0B,QAAQ,EAAA;YAAAhC,QAAA,EAAA,cACPL,GAAA,CAACsI,YAAY,EAAA;AAACC,cAAAA,OAAO,EAAEC,QAAQ,CAACH,QAAQ,CAAE;cAAAhI,QAAA,EACvC0D,IAAI,CAACsE,QAAQ,CAAC,CAAC7H,GAAG,CAAC,UAAAiI,IAAI,EAAI;AAC1B,gBAAA,IAAMC,IAAI,GAAG5H,UAAU,CAAC2H,IAAI,CAACC,IAAI,CAAC;AAClC,gBAAA,IAAMC,IAAI,GAAG7H,UAAU,CAAC2H,IAAI,CAACE,IAAI,CAAC;AAClC,gBAAA,IAAMC,YAAY,GAAG7G,yBAAyB,CAC5C4G,IAAI,EACJnH,UACF,CAAC;AAED,gBAAA,IAAMuB,YAAY,GAAGT,cAAc,CAACmG,IAAI,CAAClG,GAAG,CAAC;gBAE7C,oBACEvC,GAAA,CAAC6I,WAAW,EAAA;AACV3I,kBAAAA,SAAS,EAAC,MAAM;kBAEhBwH,KAAK,EAAA,EAAA,CAAA/F,MAAA,CAAK0G,QAAQ,EAAA,GAAA,CAAA,CAAA1G,MAAA,CAAI8G,IAAI,CAACK,EAAE,CAAG;kBAChCC,QAAQ,EAAE,SAAVA,QAAQA,GAAA;AAAA,oBAAA,OACNnG,cAAc,CAAC;AAAEC,sBAAAA,OAAO,EAAPA,OAAO;AAAEC,sBAAAA,OAAO,EAAPA,OAAO;AAAEC,sBAAAA,YAAY,EAAZA;AAAa,qBAAC,CAAC;kBAAA,CACnD;AAAA1C,kBAAAA,QAAA,eAEDM,IAAA,CAAA,GAAA,EAAA;AACET,oBAAAA,SAAS,EAAC,4EAA4E;AACtF8I,oBAAAA,IAAI,EAAEjG,YAAa;AACnB+E,oBAAAA,OAAO,EAAE3E,iBAAkB;oBAAA9C,QAAA,EAAA,CAE1BqI,IAAI,iBACH1I,GAAA,CAAA,MAAA,EAAA;AAAME,sBAAAA,SAAS,EAAC,kDAAkD;AAAAG,sBAAAA,QAAA,EAC/DiB,cAAc,CAACoH,IAAI,EAAElH,UAAU;AAAC,qBAC7B,CACP,EACAmH,IAAI,iBACH3I,GAAA,CAAA,MAAA,EAAA;AAAME,sBAAAA,SAAS,EAAC,4CAA4C;sBAAAG,QAAA,EACzDuI,YAAY,IAAID;AAAI,qBACjB,CACP;mBACA;iBAAC,EAAA,EAAA,CAAAhH,MAAA,CArBI0G,QAAQ,EAAA,GAAA,CAAA,CAAA1G,MAAA,CAAI8G,IAAI,CAACK,EAAE,CAsBhB,CAAC;cAElB,CAAC;AAAC,aACU,CAAC,EACdpI,KAAK,GAAG8E,UAAU,CAACyD,MAAM,GAAG,CAAC,iBAC5BjJ,GAAA,CAACkJ,gBAAgB,EAAA;AAAChJ,cAAAA,SAAS,EAAC;AAAM,aAAE,CACrC;AAAA,WAAA,EA3CYmI,QA4CL,CAAC;AAAA,QAAA,CACZ,CAAC,EACD9D,UAAU,IAAIE,OAAO,iBACpBzE,GAAA,CAAA,KAAA,EAAA;AACE,UAAA,aAAA,EAAY,MAAM;AAClBE,UAAAA,SAAS,EAAC,aAAa;AACvB,UAAA,aAAA,EAAY,uCAAuC;AACnDiJ,UAAAA,GAAG,EAAE9D;AAAc,SACpB,CACF,EACAV,cAAc,iBACb3E,GAAA,CAAA,KAAA,EAAA;AACEE,UAAAA,SAAS,EAAC,uCAAuC;AACjD,UAAA,aAAA,EAAY,2CAA2C;UAAAG,QAAA,eAEvDL,GAAA,CAAC4H,OAAO,EAAA;AAACzH,YAAAA,IAAI,EAAC;WAAS;AAAC,SACrB,CACN;AAAA,OACU,CAAC,eACdH,GAAA,CAACV,WAAW,EAAA;AAAOE,QAAAA,oBAAoB,EAApBA;AAAoB,OAAK,CAAC;KACtC;AAAC,GAAA,CACG,CAAC;AAEpB;;;;"}
1
+ {"version":3,"file":"FinderModal.js","sources":["../../src/v2/components/FinderModal/Footer.jsx","../../src/v2/components/FinderModal/utils.jsx","../../src/v2/components/FinderModal/index.jsx"],"sourcesContent":["import { ChevronDown, ChevronUp } from \"lucide-react\";\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 <ChevronUp className=\"text-muted-foreground\" key=\"up\" size={12} />,\n <ChevronDown className=\"text-muted-foreground\" 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 <div className=\"border-border bg-muted/40 nm-finder-modal__footer border-t px-4 py-2.5\">\n <div className=\"text-muted-foreground flex flex-wrap items-center gap-x-3 gap-y-1.5 text-xs\">\n {shortcuts.filter(prop(\"isVisible\")).map(({ label, keys }, index) => (\n <div className=\"flex items-center gap-1\" key={index}>\n {keys.map((key, keyIndex) => (\n <kbd\n className=\"border-border bg-background text-foreground inline-flex h-4 min-w-4 items-center justify-center rounded border px-1 font-sans text-[10px] leading-none\"\n key={keyIndex}\n >\n {key}\n </kbd>\n ))}\n <span>{label}</span>\n </div>\n ))}\n </div>\n </div>\n );\n};\n\nexport default ModalFooter;\n","import { Fragment } from \"react\";\n\nconst 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\nconst trimAroundMatch = (text, maxLength) => {\n const start = text.indexOf(\"[[[\");\n\n if (start === -1) {\n return text.length > maxLength ? `${text.slice(0, maxLength)}…` : text;\n }\n\n const from = Math.max(0, start - 24);\n const to = Math.min(text.length, from + maxLength);\n\n return [\n from > 0 && \"… \",\n text.slice(from, to).trim(),\n to < text.length && \" …\",\n ]\n .filter(Boolean)\n .join(\"\");\n};\n\nconst HighlightedSnippet = ({ snippet, maxLength = 100 }) => {\n if (!snippet) return null;\n\n const text = trimAroundMatch(htmlToText(snippet) ?? \"\", maxLength);\n\n return (\n <span>\n {text.split(/\\[\\[\\[(.*?)\\]\\]\\]/).map((part, index) =>\n index % 2 === 1 ? (\n <mark\n className=\"rounded-sm bg-yellow-200 px-0.5 text-yellow-900\"\n key={index}\n >\n {part}\n </mark>\n ) : (\n <Fragment key={index}>{part}</Fragment>\n )\n )}\n </span>\n );\n};\n\nexport { htmlToText, HighlightedSnippet };\n","import { useEffect, useMemo, useRef, useState } from \"react\";\n\nimport { Badge, Empty, Spinner } from \"@bigbinary/neeto-atoms\";\nimport {\n Command,\n CommandDialog,\n CommandEmpty,\n CommandGroup,\n CommandInput,\n CommandItem,\n CommandList,\n} from \"@bigbinary/neeto-atoms/primitives\";\nimport { Search } from \"lucide-react\";\nimport { humanize, noop } from \"neetocist\";\nimport useDebounce from \"neetocommons/v2/react-utils/useDebounce\";\nimport useHotkeys from \"neetohotkeys\";\nimport PropTypes from \"prop-types\";\nimport { useTranslation } from \"react-i18next\";\nimport { useHistory } from \"react-router-dom\";\n\nimport ModalFooter from \"./Footer\";\nimport { HighlightedSnippet, htmlToText } from \"./utils\";\n\nconst toRelativePath = url => {\n const { pathname, search } = new URL(url);\n\n return `${pathname}${search}`;\n};\n\nconst navigateToItem = ({ history, onClose, relativePath }) => {\n onClose?.();\n const currentPath = `${history.location.pathname}${history.location.search}`;\n if (currentPath !== relativePath) {\n history.push(relativePath);\n }\n};\n\nconst handleAnchorClick = event => {\n const isModified =\n event.metaKey || event.ctrlKey || event.shiftKey || event.button !== 0;\n if (isModified) {\n event.stopPropagation();\n\n return;\n }\n event.preventDefault();\n};\n\nconst FinderModal = ({\n enableAdvancedSearch = true,\n data = [],\n getTypeLabel = humanize,\n isFetching,\n isOpen,\n setIsOpen = noop,\n searchTerm = \"\",\n setSearchTerm,\n onSearchChange,\n debounceWait = 300,\n tagStyle = \"primary\",\n tagSize = \"small\",\n onClose,\n onGoToAdvanced = noop,\n onLoadMore,\n hasMore = false,\n isFetchingMore = false,\n ...props\n}) => {\n const { t } = useTranslation();\n const history = useHistory();\n const [sentinelEl, setSentinelEl] = useState(null);\n const onLoadMoreRef = useRef(onLoadMore || noop);\n\n const [internalSearchTerm, setInternalSearchTerm] = useState(searchTerm);\n\n useEffect(() => {\n if (searchTerm !== internalSearchTerm) {\n setInternalSearchTerm(searchTerm);\n }\n }, [searchTerm]);\n\n const debouncedSearchTerm = useDebounce(internalSearchTerm, debounceWait);\n\n useEffect(() => {\n onSearchChange?.(debouncedSearchTerm);\n }, [debouncedSearchTerm, onSearchChange]);\n\n const handleSearchChange = value => {\n setInternalSearchTerm(value);\n setSearchTerm?.(value);\n };\n\n const handleOpenChange = open => {\n if (!open) onClose?.();\n };\n\n useHotkeys([\"ctrl+enter\", \"mod+enter\"], onGoToAdvanced, {\n mode: \"global\",\n enabled: isOpen && enableAdvancedSearch,\n });\n\n useHotkeys(\"mod+k\", () => setIsOpen(true), { mode: \"global\" });\n useHotkeys(\"esc\", () => setIsOpen(false), {\n mode: \"global\",\n enabled: isOpen,\n });\n\n useEffect(() => {\n onLoadMoreRef.current = onLoadMore || noop;\n }, [onLoadMore]);\n\n const isPaginationEnabled = Boolean(onLoadMore);\n\n useEffect(() => {\n if (!sentinelEl || !isPaginationEnabled || !hasMore || isFetchingMore) {\n return undefined;\n }\n\n const root = sentinelEl.closest(\".nm-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(sentinelEl);\n\n return () => observer.disconnect();\n }, [sentinelEl, isPaginationEnabled, hasMore, isFetchingMore]);\n\n const isDataEmpty = useMemo(() => {\n if (Array.isArray(data)) return data.length === 0;\n\n return Object.values(data).every(items => items.length === 0);\n }, [data]);\n\n const renderItems = items =>\n items.map((item, index) => {\n const relativePath = toRelativePath(item.url);\n const description = htmlToText(item.description);\n\n return (\n <CommandItem\n className=\"!p-0\"\n key={`${item.type}-${item.id ?? index}`}\n value={`${item.type}-${item.id ?? index}`}\n onSelect={() => navigateToItem({ history, onClose, relativePath })}\n >\n <a\n className=\"flex min-w-0 flex-1 items-center justify-between gap-3 px-3 py-2.5 no-underline outline-none\"\n href={relativePath}\n onClick={handleAnchorClick}\n >\n <div className=\"flex min-w-0 flex-1 flex-col gap-1.5\">\n <span className=\"text-foreground line-clamp-1 text-sm font-medium\">\n <HighlightedSnippet maxLength={80} snippet={item.title || \"\"} />\n </span>\n {description && (\n <span className=\"text-muted-foreground line-clamp-1 text-xs\">\n <HighlightedSnippet\n maxLength={80}\n snippet={item.description}\n />\n </span>\n )}\n </div>\n {item.type && (\n <div className=\"shrink-0\">\n <Badge\n color={tagStyle}\n label={getTypeLabel(item.type)}\n size={tagSize}\n />\n </div>\n )}\n </a>\n </CommandItem>\n );\n });\n\n return (\n <CommandDialog\n {...props}\n className=\"nm-finder-modal !top-1/4 !max-w-[calc(100%-2rem)] sm:!max-w-xl\"\n open={isOpen}\n title={t(\"neetoMolecules.common.actions.search\")}\n onOpenChange={handleOpenChange}\n >\n <Command className=\"!p-0\" shouldFilter={false}>\n <div className=\"border-border flex items-center gap-2 border-b px-3 py-2 [&_[data-slot=command-input-wrapper]]:!p-0\">\n <div className=\"min-w-0 flex-1\">\n <CommandInput\n placeholder={t(\"neetoMolecules.common.actions.search\")}\n value={internalSearchTerm}\n onValueChange={handleSearchChange}\n />\n </div>\n {isFetching && <Spinner size=\"small\" />}\n {enableAdvancedSearch && (\n <button\n className=\"border-border bg-background text-muted-foreground hover:bg-muted hover:text-foreground flex h-8 shrink-0 items-center gap-2 rounded-md border px-2 text-xs whitespace-nowrap transition-colors\"\n type=\"button\"\n onClick={onGoToAdvanced}\n >\n <span>{t(\"neetoMolecules.finderModal.advancedSearch\")}</span>\n <kbd className=\"border-border bg-muted inline-flex h-4 items-center rounded border px-1 font-sans text-[10px] leading-none\">\n ⌘⏎\n </kbd>\n </button>\n )}\n </div>\n <CommandList className=\"nm-finder-modal__body max-h-[min(24rem,55vh)] min-h-[min(12rem,40vh)] p-2\">\n {isDataEmpty && !isFetching && (\n <CommandEmpty className=\"!py-8\">\n <Empty\n icon={Search}\n description={\n internalSearchTerm\n ? t(\"neetoMolecules.finderModal.noDataDesc\")\n : t(\"neetoMolecules.finderModal.startTypingDesc\")\n }\n title={\n internalSearchTerm\n ? t(\"neetoMolecules.finderModal.noDataTitle\")\n : t(\"neetoMolecules.finderModal.startTypingTitle\")\n }\n />\n </CommandEmpty>\n )}\n {Array.isArray(data)\n ? renderItems(data)\n : Object.entries(data).map(([group, items]) => {\n if (!items.length) return null;\n\n return (\n <CommandGroup heading={group} key={group}>\n {renderItems(items)}\n </CommandGroup>\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={setSentinelEl}\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 </CommandList>\n <ModalFooter {...{ enableAdvancedSearch }} />\n </Command>\n </CommandDialog>\n );\n};\n\nFinderModal.propTypes = {\n enableAdvancedSearch: PropTypes.bool,\n data: PropTypes.oneOfType([PropTypes.array, PropTypes.object]),\n getTypeLabel: PropTypes.func,\n isFetching: PropTypes.bool,\n isOpen: PropTypes.bool,\n searchTerm: PropTypes.string,\n setSearchTerm: PropTypes.func,\n onSearchChange: PropTypes.func,\n debounceWait: PropTypes.number,\n tagStyle: PropTypes.string,\n tagSize: PropTypes.string,\n onClose: PropTypes.func,\n onGoToAdvanced: PropTypes.func,\n onLoadMore: PropTypes.func,\n hasMore: PropTypes.bool,\n isFetchingMore: PropTypes.bool,\n};\n\nexport { HighlightedSnippet };\n\nexport default FinderModal;\n"],"names":["ModalFooter","_ref","enableAdvancedSearch","_useTranslation","useTranslation","t","shortcuts","label","keys","isVisible","_jsx","ChevronUp","className","size","ChevronDown","children","filter","prop","map","_ref2","index","_jsxs","key","keyIndex","htmlToText","html","tmp","document","createElement","innerHTML","textContent","innerText","trimAroundMatch","text","maxLength","start","indexOf","length","concat","slice","from","Math","max","to","min","trim","Boolean","join","HighlightedSnippet","_htmlToText","snippet","_ref$maxLength","split","part","Fragment","toRelativePath","url","_URL","URL","pathname","search","navigateToItem","history","onClose","relativePath","currentPath","location","push","handleAnchorClick","event","isModified","metaKey","ctrlKey","shiftKey","button","stopPropagation","preventDefault","FinderModal","_ref2$enableAdvancedS","_ref2$data","data","_ref2$getTypeLabel","getTypeLabel","humanize","isFetching","isOpen","_ref2$setIsOpen","setIsOpen","noop","_ref2$searchTerm","searchTerm","setSearchTerm","onSearchChange","_ref2$debounceWait","debounceWait","_ref2$tagStyle","tagStyle","_ref2$tagSize","tagSize","_ref2$onGoToAdvanced","onGoToAdvanced","onLoadMore","_ref2$hasMore","hasMore","_ref2$isFetchingMore","isFetchingMore","props","_objectWithoutProperties","_excluded","useHistory","_useState","useState","_useState2","_slicedToArray","sentinelEl","setSentinelEl","onLoadMoreRef","useRef","_useState3","_useState4","internalSearchTerm","setInternalSearchTerm","useEffect","debouncedSearchTerm","useDebounce","handleSearchChange","value","handleOpenChange","open","useHotkeys","mode","enabled","current","isPaginationEnabled","undefined","root","closest","observer","IntersectionObserver","_ref3","_ref4","entry","isIntersecting","rootMargin","observe","disconnect","isDataEmpty","useMemo","Array","isArray","Object","values","every","items","renderItems","item","_item$id","_item$id2","description","CommandItem","type","id","onSelect","href","onClick","title","Badge","color","CommandDialog","_objectSpread","onOpenChange","Command","shouldFilter","CommandInput","placeholder","onValueChange","Spinner","CommandList","CommandEmpty","Empty","icon","Search","entries","_ref5","_ref6","group","CommandGroup","heading","ref"],"mappings":"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"}
@@ -62,6 +62,7 @@ var BulkOptionModal = function BulkOptionModal(_ref) {
62
62
  };
63
63
  return /*#__PURE__*/jsxs(Dialog, {
64
64
  isOpen: isOpen,
65
+ "aria-describedby": undefined,
65
66
  onClose: handleClose,
66
67
  children: [/*#__PURE__*/jsx(Dialog.Header, {
67
68
  children: /*#__PURE__*/jsx(Dialog.Title, {