@bigbinary/neeto-molecules 5.3.9-beta1 → 5.3.10

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.
@@ -1,14 +1,14 @@
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, useMemo } from 'react';
5
- import { Spinner, Empty, Badge } from '@bigbinary/neeto-atoms';
6
- import { CommandDialog, Command, CommandInput, CommandList, CommandEmpty, CommandItem } from '@bigbinary/neeto-atoms/primitives';
7
- import { noop, humanize } from '@bigbinary/neeto-cist';
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';
8
8
  import useHotkeys from '@bigbinary/neeto-hotkeys';
9
+ import { prop, isEmpty } from 'ramda';
9
10
  import { useTranslation } from 'react-i18next';
10
11
  import { useHistory } from 'react-router-dom';
11
- import { prop } from 'ramda';
12
12
  import { jsx, jsxs } from 'react/jsx-runtime';
13
13
  import { C as ChevronUp } from '../chevron-up-DKMKfPJx.js';
14
14
  import { C as ChevronDown } from '../chevron-down-BrliMcYV.js';
@@ -98,59 +98,16 @@ var filterAndHighlightContent = function filterAndHighlightContent(bodyContent,
98
98
  var _excluded = ["enableAdvancedSearch", "data", "isFetching", "isOpen", "searchTerm", "setSearchTerm", "onClose", "onGoToAdvanced", "onLoadMore", "hasMore", "isFetchingMore"];
99
99
  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
100
  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
- var getSmartSnippet = function getSmartSnippet(snippet) {
102
- var maxLength = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 100;
103
- if (!snippet) return "";
104
- var safeSnippet = htmlToText(snippet) || "";
105
- var matchStart = safeSnippet.indexOf("[[[");
106
- var matchEnd = safeSnippet.indexOf("]]]");
107
- if (matchStart === -1) {
108
- var _chunk = safeSnippet.slice(0, maxLength);
109
- return _chunk.length < safeSnippet.length ? "".concat(_chunk, "...") : _chunk;
110
- }
111
- var prefixLength = 15;
112
- var suffixLength = 20;
113
- var start = Math.max(0, matchStart - prefixLength);
114
- var end = Math.min(safeSnippet.length, matchEnd + suffixLength);
115
- var chunk = safeSnippet.slice(start, end);
116
- if (start > 0) chunk = "... ".concat(chunk);
117
- if (end < safeSnippet.length) chunk = "".concat(chunk, " ...");
118
- if (start === 0 && matchStart > 5 && !chunk.startsWith("...")) {
119
- chunk = "... ".concat(chunk);
120
- }
121
- if (end === safeSnippet.length && safeSnippet.length > 30 && !chunk.endsWith("...")) {
122
- chunk = "".concat(chunk, " ...");
123
- }
124
- return chunk.trim();
125
- };
126
- var RenderHighlight = function RenderHighlight(_ref) {
127
- var text = _ref.text;
128
- if (!text) return null;
129
- var parts = text.split(/\[\[\[(.*?)\]\]\]/g);
130
- return /*#__PURE__*/jsx("span", {
131
- children: parts.map(function (part, index) {
132
- if (index % 2 === 1) {
133
- return /*#__PURE__*/jsx("mark", {
134
- className: "inline-block rounded bg-yellow-100 px-1 font-bold text-gray-800",
135
- children: part
136
- }, index);
137
- }
138
- return /*#__PURE__*/jsx("span", {
139
- children: part
140
- }, index);
141
- })
142
- });
143
- };
144
101
  var toRelativePath = function toRelativePath(url) {
145
102
  var _URL = new URL(url),
146
103
  pathname = _URL.pathname,
147
104
  search = _URL.search;
148
105
  return "".concat(pathname).concat(search);
149
106
  };
150
- var navigateToItem = function navigateToItem(_ref2) {
151
- var history = _ref2.history,
152
- onClose = _ref2.onClose,
153
- relativePath = _ref2.relativePath;
107
+ var navigateToItem = function navigateToItem(_ref) {
108
+ var history = _ref.history,
109
+ onClose = _ref.onClose,
110
+ relativePath = _ref.relativePath;
154
111
  onClose === null || onClose === void 0 || onClose();
155
112
  var currentPath = "".concat(history.location.pathname).concat(history.location.search);
156
113
  if (currentPath !== relativePath) {
@@ -160,30 +117,34 @@ var navigateToItem = function navigateToItem(_ref2) {
160
117
  var handleAnchorClick = function handleAnchorClick(event) {
161
118
  var isModified = event.metaKey || event.ctrlKey || event.shiftKey || event.button !== 0;
162
119
  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.
163
122
  event.stopPropagation();
164
123
  return;
165
124
  }
125
+ // Suppress the default browser navigation so cmdk's onSelect (fired via
126
+ // the bubbled click) drives the SPA push exactly once.
166
127
  event.preventDefault();
167
128
  };
168
- var FinderModal = function FinderModal(_ref3) {
169
- var _ref3$enableAdvancedS = _ref3.enableAdvancedSearch,
170
- enableAdvancedSearch = _ref3$enableAdvancedS === void 0 ? true : _ref3$enableAdvancedS,
171
- _ref3$data = _ref3.data,
172
- data = _ref3$data === void 0 ? [] : _ref3$data,
173
- isFetching = _ref3.isFetching,
174
- isOpen = _ref3.isOpen,
175
- _ref3$searchTerm = _ref3.searchTerm,
176
- searchTerm = _ref3$searchTerm === void 0 ? "" : _ref3$searchTerm,
177
- setSearchTerm = _ref3.setSearchTerm,
178
- onClose = _ref3.onClose,
179
- _ref3$onGoToAdvanced = _ref3.onGoToAdvanced,
180
- onGoToAdvanced = _ref3$onGoToAdvanced === void 0 ? noop : _ref3$onGoToAdvanced,
181
- onLoadMore = _ref3.onLoadMore,
182
- _ref3$hasMore = _ref3.hasMore,
183
- hasMore = _ref3$hasMore === void 0 ? false : _ref3$hasMore,
184
- _ref3$isFetchingMore = _ref3.isFetchingMore,
185
- isFetchingMore = _ref3$isFetchingMore === void 0 ? false : _ref3$isFetchingMore,
186
- props = _objectWithoutProperties(_ref3, _excluded);
129
+ var FinderModal = function FinderModal(_ref2) {
130
+ var _ref2$enableAdvancedS = _ref2.enableAdvancedSearch,
131
+ enableAdvancedSearch = _ref2$enableAdvancedS === void 0 ? true : _ref2$enableAdvancedS,
132
+ _ref2$data = _ref2.data,
133
+ data = _ref2$data === void 0 ? {} : _ref2$data,
134
+ isFetching = _ref2.isFetching,
135
+ isOpen = _ref2.isOpen,
136
+ _ref2$searchTerm = _ref2.searchTerm,
137
+ searchTerm = _ref2$searchTerm === void 0 ? "" : _ref2$searchTerm,
138
+ setSearchTerm = _ref2.setSearchTerm,
139
+ onClose = _ref2.onClose,
140
+ _ref2$onGoToAdvanced = _ref2.onGoToAdvanced,
141
+ onGoToAdvanced = _ref2$onGoToAdvanced === void 0 ? noop : _ref2$onGoToAdvanced,
142
+ onLoadMore = _ref2.onLoadMore,
143
+ _ref2$hasMore = _ref2.hasMore,
144
+ hasMore = _ref2$hasMore === void 0 ? false : _ref2$hasMore,
145
+ _ref2$isFetchingMore = _ref2.isFetchingMore,
146
+ isFetchingMore = _ref2$isFetchingMore === void 0 ? false : _ref2$isFetchingMore,
147
+ props = _objectWithoutProperties(_ref2, _excluded);
187
148
  var _useTranslation = useTranslation(),
188
149
  t = _useTranslation.t;
189
150
  var history = useHistory();
@@ -192,6 +153,10 @@ var FinderModal = function FinderModal(_ref3) {
192
153
  sentinelEl = _useState2[0],
193
154
  setSentinelEl = _useState2[1];
194
155
  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);
195
160
  var handleOpenChange = function handleOpenChange(open) {
196
161
  if (!open) onClose === null || onClose === void 0 || onClose();
197
162
  };
@@ -208,9 +173,9 @@ var FinderModal = function FinderModal(_ref3) {
208
173
  return undefined;
209
174
  }
210
175
  var root = sentinelEl.closest(".nm-finder-modal__body");
211
- var observer = new IntersectionObserver(function (_ref4) {
212
- var _ref5 = _slicedToArray(_ref4, 1),
213
- entry = _ref5[0];
176
+ var observer = new IntersectionObserver(function (_ref3) {
177
+ var _ref4 = _slicedToArray(_ref3, 1),
178
+ entry = _ref4[0];
214
179
  if (entry.isIntersecting) onLoadMoreRef.current();
215
180
  }, {
216
181
  root: root,
@@ -221,10 +186,6 @@ var FinderModal = function FinderModal(_ref3) {
221
186
  return observer.disconnect();
222
187
  };
223
188
  }, [sentinelEl, isPaginationEnabled, hasMore, isFetchingMore]);
224
- var flatData = useMemo(function () {
225
- return Array.isArray(data) ? data : Object.values(data).flat();
226
- }, [data]);
227
- var isDataEmpty = flatData.length === 0;
228
189
  return /*#__PURE__*/jsx(CommandDialog, _objectSpread(_objectSpread({}, props), {}, {
229
190
  className: "nm-finder-modal !top-1/4 !max-w-[calc(100%-2rem)] sm:!max-w-xl",
230
191
  open: isOpen,
@@ -264,76 +225,43 @@ var FinderModal = function FinderModal(_ref3) {
264
225
  icon: Search,
265
226
  title: t("neetoMolecules.finderModal.noDataTitle")
266
227
  })
267
- }), flatData.map(function (item, index) {
268
- var rawTitle = htmlToText(String(item.title || "")) || "";
269
- var backendSnippet = item.highlightedAttribute;
270
- var isSnippetFromTitle = false;
271
- if (backendSnippet) {
272
- var cleanSnippet = backendSnippet.replace(/\[\[\[|\]\]\]|\.\.\./g, "").trim();
273
- var cleanPrimary = rawTitle.trim();
274
- if (cleanPrimary.includes(cleanSnippet) || cleanSnippet.includes(cleanPrimary)) {
275
- isSnippetFromTitle = true;
276
- }
277
- }
278
- var primaryNode = null;
279
- var secondaryNode = null;
280
- if (isSnippetFromTitle) {
281
- var smartTitle = getSmartSnippet(backendSnippet, 80);
282
- primaryNode = /*#__PURE__*/jsx(RenderHighlight, {
283
- text: smartTitle
284
- });
285
- if (item.description) {
286
- var _htmlToText;
287
- var rawDesc = (_htmlToText = htmlToText(String(item.description))) === null || _htmlToText === void 0 ? void 0 : _htmlToText.slice(0, 80);
288
- secondaryNode = filterAndHighlightContent(rawDesc, searchTerm) || rawDesc;
289
- }
290
- } else {
291
- primaryNode = highlightMatch(rawTitle, searchTerm) || rawTitle;
292
- if (backendSnippet) {
293
- var smartDesc = getSmartSnippet(backendSnippet, 80);
294
- secondaryNode = /*#__PURE__*/jsx(RenderHighlight, {
295
- text: smartDesc
296
- });
297
- } else if (item.description) {
298
- var _htmlToText2;
299
- var _rawDesc = (_htmlToText2 = htmlToText(String(item.description))) === null || _htmlToText2 === void 0 ? void 0 : _htmlToText2.slice(0, 80);
300
- secondaryNode = filterAndHighlightContent(_rawDesc, searchTerm) || _rawDesc;
301
- }
302
- }
303
- var relativePath = toRelativePath(item.url);
304
- var showSecondary = !!secondaryNode;
305
- return /*#__PURE__*/jsx(CommandItem, {
306
- className: "!p-0",
307
- value: "".concat(item.type, "-").concat(item.id || index),
308
- onSelect: function onSelect() {
309
- return navigateToItem({
310
- history: history,
311
- onClose: onClose,
312
- relativePath: relativePath
313
- });
314
- },
315
- children: /*#__PURE__*/jsxs("a", {
316
- className: "flex min-w-0 flex-1 items-center justify-between gap-3 px-3 py-2.5 no-underline outline-none",
317
- href: relativePath,
318
- onClick: handleAnchorClick,
319
- children: [/*#__PURE__*/jsxs("div", {
320
- className: "flex min-w-0 flex-1 flex-col gap-1.5",
321
- children: [primaryNode && /*#__PURE__*/jsx("span", {
322
- className: "text-foreground line-clamp-1 text-sm font-medium",
323
- children: primaryNode
324
- }), showSecondary && /*#__PURE__*/jsx("span", {
325
- className: "text-muted-foreground line-clamp-1 text-xs",
326
- children: secondaryNode
327
- })]
328
- }), item.type && /*#__PURE__*/jsx("div", {
329
- className: "shrink-0",
330
- children: /*#__PURE__*/jsx(Badge, {
331
- color: "gray",
332
- label: humanize(item.type)
333
- })
334
- })]
335
- })
336
- }, "".concat(item.type, "-").concat(item.id || index));
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);
337
265
  }), onLoadMore && hasMore && /*#__PURE__*/jsx("div", {
338
266
  "aria-hidden": "true",
339
267
  className: "h-px w-full",
@@ -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 { useEffect, useMemo, useRef, useState } from \"react\";\n\nimport { Empty, Spinner, Badge } from \"@bigbinary/neeto-atoms\";\nimport {\n Command,\n CommandDialog,\n CommandEmpty,\n CommandInput,\n CommandItem,\n CommandList,\n} from \"@bigbinary/neeto-atoms/primitives\";\nimport { Search } from \"lucide-react\";\nimport { humanize, noop } from \"neetocist\";\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 { filterAndHighlightContent, highlightMatch, htmlToText } from \"./utils\";\n\nconst getSmartSnippet = (snippet, maxLength = 100) => {\n if (!snippet) return \"\";\n const safeSnippet = htmlToText(snippet) || \"\";\n\n const matchStart = safeSnippet.indexOf(\"[[[\");\n const matchEnd = safeSnippet.indexOf(\"]]]\");\n\n if (matchStart === -1) {\n const chunk = safeSnippet.slice(0, maxLength);\n\n return chunk.length < safeSnippet.length ? `${chunk}...` : chunk;\n }\n\n const prefixLength = 15;\n const suffixLength = 20;\n\n const start = Math.max(0, matchStart - prefixLength);\n const end = Math.min(safeSnippet.length, matchEnd + suffixLength);\n\n let chunk = safeSnippet.slice(start, end);\n\n if (start > 0) chunk = `... ${chunk}`;\n\n if (end < safeSnippet.length) chunk = `${chunk} ...`;\n\n if (start === 0 && matchStart > 5 && !chunk.startsWith(\"...\")) {\n chunk = `... ${chunk}`;\n }\n\n if (\n end === safeSnippet.length &&\n safeSnippet.length > 30 &&\n !chunk.endsWith(\"...\")\n ) {\n chunk = `${chunk} ...`;\n }\n\n return chunk.trim();\n};\n\nconst RenderHighlight = ({ text }) => {\n if (!text) return null;\n const parts = text.split(/\\[\\[\\[(.*?)\\]\\]\\]/g);\n\n return (\n <span>\n {parts.map((part, index) => {\n if (index % 2 === 1) {\n return (\n <mark\n className=\"inline-block rounded bg-yellow-100 px-1 font-bold text-gray-800\"\n key={index}\n >\n {part}\n </mark>\n );\n }\n\n return <span key={index}>{part}</span>;\n })}\n </span>\n );\n};\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 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 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 const flatData = useMemo(\n () => (Array.isArray(data) ? data : Object.values(data).flat()),\n [data]\n );\n\n const isDataEmpty = flatData.length === 0;\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 {flatData.map((item, index) => {\n const rawTitle = htmlToText(String(item.title || \"\")) || \"\";\n const backendSnippet = item.highlightedAttribute;\n\n let isSnippetFromTitle = false;\n if (backendSnippet) {\n const cleanSnippet = backendSnippet\n .replace(/\\[\\[\\[|\\]\\]\\]|\\.\\.\\./g, \"\")\n .trim();\n const cleanPrimary = rawTitle.trim();\n if (\n cleanPrimary.includes(cleanSnippet) ||\n cleanSnippet.includes(cleanPrimary)\n ) {\n isSnippetFromTitle = true;\n }\n }\n\n let primaryNode = null;\n let secondaryNode = null;\n\n if (isSnippetFromTitle) {\n const smartTitle = getSmartSnippet(backendSnippet, 80);\n primaryNode = <RenderHighlight text={smartTitle} />;\n\n if (item.description) {\n const rawDesc = htmlToText(String(item.description))?.slice(\n 0,\n 80\n );\n\n secondaryNode =\n filterAndHighlightContent(rawDesc, searchTerm) || rawDesc;\n }\n } else {\n primaryNode = highlightMatch(rawTitle, searchTerm) || rawTitle;\n\n if (backendSnippet) {\n const smartDesc = getSmartSnippet(backendSnippet, 80);\n secondaryNode = <RenderHighlight text={smartDesc} />;\n } else if (item.description) {\n const rawDesc = htmlToText(String(item.description))?.slice(\n 0,\n 80\n );\n\n secondaryNode =\n filterAndHighlightContent(rawDesc, searchTerm) || rawDesc;\n }\n }\n\n const relativePath = toRelativePath(item.url);\n const showSecondary = !!secondaryNode;\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={() =>\n navigateToItem({ history, onClose, relativePath })\n }\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 {primaryNode && (\n <span className=\"text-foreground line-clamp-1 text-sm font-medium\">\n {primaryNode}\n </span>\n )}\n {showSecondary && (\n <span className=\"text-muted-foreground line-clamp-1 text-xs\">\n {secondaryNode}\n </span>\n )}\n </div>\n {item.type && (\n <div className=\"shrink-0\">\n <Badge color=\"gray\" label={humanize(item.type)} />\n </div>\n )}\n </a>\n </CommandItem>\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 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","getSmartSnippet","snippet","maxLength","arguments","length","undefined","safeSnippet","matchStart","indexOf","matchEnd","chunk","slice","prefixLength","suffixLength","start","Math","max","end","min","startsWith","endsWith","RenderHighlight","parts","toRelativePath","url","_URL","URL","pathname","search","navigateToItem","history","onClose","relativePath","currentPath","location","push","handleAnchorClick","event","isModified","metaKey","ctrlKey","shiftKey","button","stopPropagation","preventDefault","FinderModal","_ref3","_ref3$enableAdvancedS","_ref3$data","data","isFetching","isOpen","_ref3$searchTerm","setSearchTerm","_ref3$onGoToAdvanced","onGoToAdvanced","noop","onLoadMore","_ref3$hasMore","hasMore","_ref3$isFetchingMore","isFetchingMore","props","_objectWithoutProperties","_excluded","useHistory","_useState","useState","_useState2","_slicedToArray","sentinelEl","setSentinelEl","onLoadMoreRef","useRef","handleOpenChange","open","useHotkeys","mode","enabled","useEffect","current","isPaginationEnabled","Boolean","root","closest","observer","IntersectionObserver","_ref4","_ref5","entry","isIntersecting","rootMargin","observe","disconnect","flatData","useMemo","Array","isArray","Object","values","flat","isDataEmpty","CommandDialog","_objectSpread","title","onOpenChange","Command","shouldFilter","CommandInput","placeholder","value","onValueChange","Spinner","type","onClick","CommandList","CommandEmpty","Empty","description","icon","Search","item","rawTitle","String","backendSnippet","highlightedAttribute","isSnippetFromTitle","cleanSnippet","replace","cleanPrimary","primaryNode","secondaryNode","smartTitle","_htmlToText","rawDesc","smartDesc","_htmlToText2","showSecondary","CommandItem","id","onSelect","href","Badge","color","humanize","ref"],"mappings":"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"}
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":"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"}
@@ -7,7 +7,7 @@ import _slicedToArray from '@babel/runtime/helpers/slicedToArray';
7
7
  import _objectWithoutProperties from '@babel/runtime/helpers/objectWithoutProperties';
8
8
  import { TooltipProvider, Tooltip, TooltipTrigger, TooltipContent } from '@bigbinary/neeto-atoms/primitives';
9
9
  import { useTranslation } from 'react-i18next';
10
- import { a as Columns$1 } from '../Columns-C20zru7a.js';
10
+ import { a as Columns$1 } from '../Columns-DrqMacTG.js';
11
11
  import '@babel/runtime/helpers/toConsumableArray';
12
12
  import '@tanstack/react-query';
13
13
  import '@bigbinary/neeto-commons-frontend/v2/react-utils/useMutationWithInvalidation';
@@ -37,7 +37,7 @@ import '@bigbinary/neeto-commons-frontend/v2/react-utils/useFuncDebounce';
37
37
  import '@bigbinary/neeto-commons-frontend/v2/react-utils/useQueryParams';
38
38
  import '@bigbinary/neeto-commons-frontend/v2/react-utils/useUpdateEffect';
39
39
  import '../search-H0uYy0W-.js';
40
- import '../Columns-C20zru7a.js';
40
+ import '../Columns-DrqMacTG.js';
41
41
  import '@dnd-kit/core';
42
42
  import '@dnd-kit/modifiers';
43
43
  import '@dnd-kit/sortable';
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@bigbinary/neeto-molecules",
3
- "version": "5.3.9-beta1",
3
+ "version": "5.3.10",
4
4
  "description": "A package of reusable molecular components for neeto products.",
5
5
  "repository": "git@github.com:bigbinary/neeto-molecules.git",
6
6
  "author": "Amaljith K <amaljith.k@bigbinary.com>",
@@ -301,4 +301,4 @@
301
301
  "zustand": "4.4.2"
302
302
  },
303
303
  "packageManager": "yarn@4.9.2"
304
- }
304
+ }
@@ -1 +0,0 @@
1
- {"version":3,"file":"Columns-C20zru7a.js","sources":["../src/v2/components/Columns/Item.jsx","../src/v2/components/Columns/api.js","../src/v2/components/Columns/constants.js","../src/v2/components/Columns/useTableConfigurationsApi.js","../src/v2/components/Columns/useTableConfigurations.js","../src/v2/components/Columns/utils.js","../src/v2/components/Columns/Columns.jsx"],"sourcesContent":["import { Checkbox, Label } from \"@bigbinary/neeto-atoms\";\nimport { useSortable } from \"@dnd-kit/sortable\";\nimport { CSS } from \"@dnd-kit/utilities\";\nimport classNames from \"classnames\";\nimport { GripVertical } from \"lucide-react\";\n\nconst Item = ({\n column,\n hiddenColumns,\n checkboxProps,\n onToggle,\n isTableConfigurationFetching,\n}) => {\n const { id, header } = column;\n const {\n attributes,\n listeners,\n setNodeRef,\n transform,\n transition,\n isDragging,\n isOver,\n over,\n active,\n } = useSortable({ id });\n\n const dragStyle = {\n transform: CSS.Transform.toString(transform),\n transition,\n opacity: isDragging ? 0.5 : 1,\n };\n\n const isIndicatorVisible = !isDragging && isOver;\n const draggedIndex = active?.data?.current?.sortable?.index;\n const targetIndex = over?.data?.current?.sortable?.index;\n\n const isChecked = !hiddenColumns.includes(id);\n\n return (\n <div>\n <div\n className={classNames({\n \"bg-muted h-1 w-full\":\n isIndicatorVisible && targetIndex < draggedIndex,\n })}\n />\n <div\n className=\"hover:bg-accent relative flex items-center px-5 py-2\"\n data-testid=\"column-sortable-item\"\n ref={setNodeRef}\n style={dragStyle}\n >\n <div\n {...attributes}\n {...listeners}\n className=\"absolute inset-y-0 start-0 z-10 flex w-5 cursor-grab items-center justify-center active:cursor-grabbing\"\n data-testid=\"column-drag-handle\"\n >\n <GripVertical\n className=\"text-muted-foreground/50 hover:text-foreground transition-all duration-300 ease-in-out\"\n size={16}\n />\n </div>\n <Label className=\"flex w-full cursor-pointer items-center\" htmlFor={id}>\n <Checkbox\n {...{ id }}\n checked={isChecked}\n data-testid=\"neeto-ui-columns-checkbox\"\n disabled={isTableConfigurationFetching}\n name={id}\n onCheckedChange={checked => {\n onToggle({ target: { name: id, checked } });\n }}\n {...checkboxProps}\n />\n <span className=\"ms-2 text-sm\">{header}</span>\n </Label>\n </div>\n <div\n className={classNames({\n \"bg-muted h-1 w-full\":\n isIndicatorVisible && targetIndex > draggedIndex,\n })}\n />\n </div>\n );\n};\n\nexport default Item;\n","import axios from \"axios\";\n\nconst baseUrl = \"api/v1/table_configurations\";\n\nconst fetch = tableKey => axios.get(`${baseUrl}/${tableKey}`);\n\nconst create = payload => axios.post(baseUrl, { tableConfiguration: payload });\n\nconst update = ({ tableKey, payload }) =>\n axios.patch(`${baseUrl}/${tableKey}`, { tableConfiguration: payload });\n\nconst destroy = tableKey => axios.delete(`${baseUrl}/${tableKey}`);\n\nconst tableConfigurationApi = { fetch, create, update, destroy };\n\nexport default tableConfigurationApi;\n","export const HIDDEN_COLUMNS_STORAGE_KEY = \"neeto-molecules-hidden-columns\";\nexport const COLUMNS_ORDER_STORAGE_KEY = \"neeto-molecules-columns-order\";\nexport const TABLE_CONFIGURATION_QUERY_KEY = \"table-configuration\";\n","import { useQuery } from \"@tanstack/react-query\";\nimport useMutationWithInvalidation from \"neetocommons/v2/react-utils/useMutationWithInvalidation\";\n\nimport tableConfigurationApi from \"./api\";\nimport { TABLE_CONFIGURATION_QUERY_KEY } from \"./constants.js\";\n\nconst useFetchTableConfiguration = ({ tableKey, options = {} }) =>\n useQuery({\n queryKey: [TABLE_CONFIGURATION_QUERY_KEY, tableKey],\n enabled: !!tableKey,\n queryFn: () => tableConfigurationApi.fetch(tableKey),\n ...options,\n });\n\nconst useUpdateTableConfiguration = (tableKey, options = {}) =>\n useMutationWithInvalidation(tableConfigurationApi.update, {\n keysToInvalidate: [[TABLE_CONFIGURATION_QUERY_KEY, tableKey]],\n ...options,\n });\n\nconst useDestroyTableConfiguration = (tableKey, options = {}) =>\n useMutationWithInvalidation(tableConfigurationApi.destroy, {\n keysToInvalidate: [[TABLE_CONFIGURATION_QUERY_KEY, tableKey]],\n ...options,\n });\n\nexport {\n useFetchTableConfiguration,\n useUpdateTableConfiguration,\n useDestroyTableConfiguration,\n};\n","import { useEffect, useMemo, useCallback } from \"react\";\n\nimport { isNotEqualDeep, isNotEmpty, noop } from \"neetocist\";\nimport { isEmpty, pluck, prop } from \"ramda\";\n\nimport {\n useFetchTableConfiguration,\n useUpdateTableConfiguration,\n useDestroyTableConfiguration,\n} from \"./useTableConfigurationsApi.js\";\n\nconst useTableConfigurations = (\n tableKey,\n columnData,\n onMutationSuccess = noop,\n allowConfigurationResetOnUpdate = true,\n defaultHiddenColumns = []\n) => {\n const {\n data: tableConfiguration,\n isLoading,\n isFetching,\n } = useFetchTableConfiguration({ tableKey });\n\n const { mutate: updateConfiguration } = useUpdateTableConfiguration(\n tableKey,\n { onSuccess: onMutationSuccess }\n );\n\n const { mutate: destroyConfiguration } = useDestroyTableConfiguration(\n tableKey,\n { onSuccess: onMutationSuccess }\n );\n\n const processColumnsWithConfiguration = useCallback(\n (originalColumns = [], existingColumnConfiguration = []) => {\n if (isEmpty(existingColumnConfiguration)) {\n return originalColumns;\n }\n\n const originalColumnsById = new Map(\n originalColumns?.filter(prop(\"id\")).map(column => [column.id, column])\n );\n\n const configurationByKey = new Map(\n existingColumnConfiguration.map(config => [config.key, config])\n );\n\n const orderedConfiguredColumns = existingColumnConfiguration\n .map(config => originalColumnsById.get(config.key))\n .filter(Boolean);\n\n const unconfiguredOriginalColumns = originalColumns.filter(\n column => column.id && !configurationByKey.has(column.id)\n );\n\n return [...orderedConfiguredColumns, ...unconfiguredOriginalColumns];\n },\n []\n );\n\n const hasAdditionalColumns = useMemo(() => {\n if (!tableConfiguration?.columns || !columnData) {\n return false;\n }\n\n const configurationKeys = pluck(\"key\", tableConfiguration.columns).sort();\n const dataKeys = columnData.map(col => col.id).sort();\n\n return isNotEqualDeep(configurationKeys, dataKeys);\n }, [tableConfiguration, columnData]);\n\n const shouldApplyTableConfiguration = useMemo(\n () =>\n !isLoading &&\n tableConfiguration?.columns &&\n isNotEmpty(tableConfiguration?.columns) &&\n !hasAdditionalColumns,\n [tableConfiguration, isLoading, hasAdditionalColumns]\n );\n\n useEffect(() => {\n if (\n hasAdditionalColumns &&\n tableConfiguration &&\n allowConfigurationResetOnUpdate\n ) {\n destroyConfiguration(tableKey);\n }\n }, [hasAdditionalColumns, tableKey, allowConfigurationResetOnUpdate]);\n\n const allProcessedColumns = useMemo(() => {\n if (\n !isLoading &&\n isNotEmpty(tableConfiguration?.columns) &&\n !hasAdditionalColumns\n ) {\n return processColumnsWithConfiguration(\n columnData,\n tableConfiguration?.columns\n );\n }\n\n return columnData || [];\n }, [\n isLoading,\n tableConfiguration?.columns,\n hasAdditionalColumns,\n columnData,\n processColumnsWithConfiguration,\n ]);\n\n const existingColumnConfiguration = useMemo(() => {\n if (shouldApplyTableConfiguration) {\n return tableConfiguration.columns;\n }\n\n if (!columnData || isEmpty(columnData)) {\n return [];\n }\n\n return columnData.map(column => ({\n key: column.id,\n isShown: !defaultHiddenColumns.includes(column.id),\n }));\n }, [\n shouldApplyTableConfiguration,\n columnData,\n tableConfiguration?.columns,\n defaultHiddenColumns,\n ]);\n\n const customizedColumns = useMemo(() => {\n const visibleColumnsConfig = existingColumnConfiguration.filter(\n prop(\"isShown\")\n );\n const visibleColumnKeys = pluck(\"key\", visibleColumnsConfig);\n\n return allProcessedColumns.filter(column =>\n visibleColumnKeys.includes(column.id)\n );\n }, [allProcessedColumns, existingColumnConfiguration]);\n\n const updateColumns = updatedColumns => {\n updateConfiguration({\n tableKey,\n payload: { table_key: tableKey, columns: updatedColumns },\n });\n };\n\n const hideColumn = columnKey => {\n updateColumns(\n existingColumnConfiguration.map(column =>\n column.key === columnKey ? { ...column, isShown: false } : column\n )\n );\n };\n\n const showColumn = columnKey => {\n updateColumns(\n existingColumnConfiguration.map(column =>\n column.key === columnKey ? { ...column, isShown: true } : column\n )\n );\n };\n\n return {\n customizedColumns,\n allProcessedColumns,\n isTableConfigurationLoading: isLoading,\n isTableConfigurationFetching: isFetching,\n existingColumnConfiguration,\n hideColumn,\n showColumn,\n updateColumns,\n destroyConfiguration,\n };\n};\n\nexport default useTableConfigurations;\n","import { existsBy, removeBy } from \"neetocist\";\nimport { filter, includes, toLower, trim } from \"ramda\";\n\nexport const getHidableColumns = columnData =>\n removeBy({ enableHiding: false }, columnData);\n\nexport const filterBySearchTerm = (searchTerm, columns) =>\n filter(\n ({ header = \"\" }) =>\n includes(trim(toLower(searchTerm)), trim(toLower(header))),\n columns\n );\n\nexport const removeDeletedColumns = (hiddenColumns, columnData) =>\n hiddenColumns.filter(hiddenColumn =>\n existsBy({ id: hiddenColumn }, columnData)\n );\n","import { useState } from \"react\";\n\nimport { Button, Checkbox, Input, Label } from \"@bigbinary/neeto-atoms\";\nimport {\n Popover,\n PopoverContent,\n PopoverTrigger,\n Separator,\n} from \"@bigbinary/neeto-atoms/primitives\";\nimport { DndContext, closestCenter } from \"@dnd-kit/core\";\nimport {\n restrictToFirstScrollableAncestor,\n restrictToVerticalAxis,\n} from \"@dnd-kit/modifiers\";\nimport {\n SortableContext,\n verticalListSortingStrategy,\n} from \"@dnd-kit/sortable\";\nimport i18next from \"i18next\";\nimport { Search } from \"lucide-react\";\nimport { isNotEmpty, findIndexBy, noop } from \"neetocist\";\nimport PropTypes from \"prop-types\";\nimport { assoc, isEmpty, pluck, includes } from \"ramda\";\nimport { useTranslation } from \"react-i18next\";\n\nimport Item from \"./Item\";\nimport useTableConfigurations from \"./useTableConfigurations.js\";\nimport { filterBySearchTerm, getHidableColumns } from \"./utils.js\";\n\nconst Columns = ({\n actionBlock,\n checkboxProps = {},\n columnData = [],\n isSearchable = false,\n tableKey = \"\",\n noColumnMessage = i18next.t(\"neetoMolecules.columns.noColumns\"),\n searchProps = {},\n allowConfigurationResetOnUpdate = true,\n onMutationSuccess = noop,\n defaultHiddenColumns = [],\n buttonProps = {},\n onOpenChange = noop,\n}) => {\n const [searchTerm, setSearchTerm] = useState(\"\");\n const [open, setOpen] = useState(false);\n const { t } = useTranslation();\n\n const {\n allProcessedColumns,\n existingColumnConfiguration,\n hideColumn,\n showColumn,\n updateColumns,\n destroyConfiguration,\n isTableConfigurationFetching,\n } = useTableConfigurations(\n tableKey,\n columnData,\n onMutationSuccess,\n allowConfigurationResetOnUpdate,\n defaultHiddenColumns\n );\n\n const hiddenColumns = pluck(\n \"key\",\n existingColumnConfiguration.filter(column => column.isShown === false)\n );\n\n const handleDragEnd = event => {\n const { active, over } = event;\n if (!over || active.id === over.id) return;\n\n const oldIndex = findIndexBy(\n { key: active.id },\n existingColumnConfiguration\n );\n\n const newIndex = findIndexBy({ key: over.id }, existingColumnConfiguration);\n\n if (oldIndex === -1 || newIndex === -1) return;\n\n const newOrder = [...existingColumnConfiguration];\n const [movedItem] = newOrder.splice(oldIndex, 1);\n newOrder.splice(newIndex, 0, movedItem);\n updateColumns(newOrder);\n };\n\n const columns = getHidableColumns(allProcessedColumns);\n const filteredColumns = filterBySearchTerm(searchTerm, columns);\n\n const handleHideAllColumns = () => {\n const columnsToHideKeys = pluck(\"id\", columns);\n\n updateColumns(\n existingColumnConfiguration.map(column =>\n includes(column.key, columnsToHideKeys)\n ? assoc(\"isShown\", false, column)\n : column\n )\n );\n };\n\n const handleChange = ({ target: { name: columnId, checked } }) => {\n if (checked) showColumn(columnId);\n else hideColumn(columnId);\n };\n\n const handleSearch = ({ target: { value } }) => setSearchTerm(value);\n\n const {\n icon: Icon,\n \"data-testid\": dataTestId = \"columns-dropdown-button\",\n label: buttonLabel,\n ...restButtonProps\n } = buttonProps;\n\n return (\n <Popover\n {...{ open }}\n onOpenChange={isOpen => {\n setOpen(isOpen);\n onOpenChange(isOpen);\n if (!isOpen) setSearchTerm(\"\");\n }}\n >\n <PopoverTrigger asChild>\n <Button\n data-testid={dataTestId}\n icon={Icon || undefined}\n label={buttonLabel || undefined}\n size={buttonLabel ? \"default\" : \"icon\"}\n variant=\"ghost\"\n {...restButtonProps}\n />\n </PopoverTrigger>\n <PopoverContent\n align=\"end\"\n className=\"flex max-h-[calc(100dvh-200px)] w-80 max-w-[31.25rem] flex-col p-0\"\n >\n <div\n className=\"flex min-h-0 flex-1 flex-col\"\n data-testid=\"customize-columns-dropdown-container\"\n >\n {isSearchable && (\n <div className=\"relative shrink-0 p-3\">\n <Input\n data-testid=\"neeto-ui-columns-search\"\n placeholder={t(\"neetoMolecules.columns.search\")}\n prefix={<Search />}\n type=\"search\"\n value={searchTerm}\n onChange={handleSearch}\n {...searchProps}\n />\n </div>\n )}\n <div className=\"min-h-0 flex-1 overflow-x-hidden overflow-y-auto\">\n {isEmpty(filteredColumns) && (\n <span className=\"flex flex-col items-center p-2\">\n {noColumnMessage}\n </span>\n )}\n {isNotEmpty(filteredColumns) && !searchTerm && (\n <DndContext\n collisionDetection={closestCenter}\n modifiers={[\n restrictToVerticalAxis,\n restrictToFirstScrollableAncestor,\n ]}\n onDragEnd={handleDragEnd}\n >\n <SortableContext\n items={pluck(\"id\", filteredColumns)}\n strategy={verticalListSortingStrategy}\n >\n {filteredColumns.map(column => (\n <Item\n {...{\n checkboxProps,\n column,\n hiddenColumns,\n isTableConfigurationFetching,\n }}\n key={column.id}\n onToggle={handleChange}\n />\n ))}\n </SortableContext>\n </DndContext>\n )}\n {isNotEmpty(filteredColumns) &&\n searchTerm &&\n filteredColumns.map(({ id, header }) => (\n <Label\n className=\"hover:bg-accent flex w-full cursor-pointer items-center px-5 py-2\"\n htmlFor={id}\n key={id}\n >\n <Checkbox\n {...{ id }}\n checked={!hiddenColumns.includes(id)}\n data-testid=\"neeto-ui-columns-checkbox\"\n name={id}\n onCheckedChange={checked => {\n handleChange({ target: { name: id, checked } });\n }}\n {...checkboxProps}\n />\n <span className=\"ms-2 text-sm\">{header}</span>\n </Label>\n ))}\n </div>\n <div className=\"shrink-0\">\n <Separator />\n {!!actionBlock && (\n <>\n {actionBlock}\n <Separator />\n </>\n )}\n <div className=\"flex justify-end gap-2 px-3 py-2\">\n <Button\n data-testid=\"column-visibility-hide-all-button\"\n size=\"sm\"\n variant=\"ghost\"\n onClick={handleHideAllColumns}\n >\n {t(\"neetoMolecules.columns.hideAll\")}\n </Button>\n <Button\n data-testid=\"column-visibility-reset-button\"\n size=\"sm\"\n variant=\"outline\"\n onClick={() => destroyConfiguration(tableKey)}\n >\n {t(\"neetoMolecules.columns.reset\")}\n </Button>\n </div>\n </div>\n </div>\n </PopoverContent>\n </Popover>\n );\n};\n\nColumns.propTypes = {\n allowConfigurationResetOnUpdate: PropTypes.bool,\n actionBlock: PropTypes.element,\n checkboxProps: PropTypes.object,\n columnData: PropTypes.array,\n isSearchable: PropTypes.bool,\n tableKey: PropTypes.string,\n noColumnMessage: PropTypes.string,\n searchProps: PropTypes.object,\n onMutationSuccess: PropTypes.func,\n onOpenChange: PropTypes.func,\n};\n\nColumns.displayName = \"Columns\";\nexport default Columns;\n"],"names":["Item","_ref","_active$data","_over$data","column","hiddenColumns","checkboxProps","onToggle","isTableConfigurationFetching","id","header","_useSortable","useSortable","attributes","listeners","setNodeRef","transform","transition","isDragging","isOver","over","active","dragStyle","CSS","Transform","toString","opacity","isIndicatorVisible","draggedIndex","data","current","sortable","index","targetIndex","isChecked","includes","_jsxs","children","_jsx","className","classNames","ref","style","_objectSpread","GripVertical","size","Label","htmlFor","Checkbox","checked","disabled","name","onCheckedChange","target","baseUrl","fetch","tableKey","axios","get","concat","create","payload","post","tableConfiguration","update","patch","destroy","tableConfigurationApi","HIDDEN_COLUMNS_STORAGE_KEY","COLUMNS_ORDER_STORAGE_KEY","TABLE_CONFIGURATION_QUERY_KEY","useFetchTableConfiguration","_ref$options","options","useQuery","queryKey","enabled","queryFn","useUpdateTableConfiguration","arguments","length","undefined","useMutationWithInvalidation","keysToInvalidate","useDestroyTableConfiguration","useTableConfigurations","columnData","onMutationSuccess","noop","allowConfigurationResetOnUpdate","defaultHiddenColumns","_useFetchTableConfigu","isLoading","isFetching","_useUpdateTableConfig","onSuccess","updateConfiguration","mutate","_useDestroyTableConfi","destroyConfiguration","processColumnsWithConfiguration","useCallback","originalColumns","existingColumnConfiguration","isEmpty","originalColumnsById","Map","filter","prop","map","configurationByKey","config","key","orderedConfiguredColumns","Boolean","unconfiguredOriginalColumns","has","_toConsumableArray","hasAdditionalColumns","useMemo","columns","configurationKeys","pluck","sort","dataKeys","col","isNotEqualDeep","shouldApplyTableConfiguration","isNotEmpty","useEffect","allProcessedColumns","isShown","customizedColumns","visibleColumnsConfig","visibleColumnKeys","updateColumns","updatedColumns","table_key","hideColumn","columnKey","showColumn","isTableConfigurationLoading","getHidableColumns","removeBy","enableHiding","filterBySearchTerm","searchTerm","_ref$header","trim","toLower","Columns","actionBlock","_ref$checkboxProps","_ref$columnData","_ref$isSearchable","isSearchable","_ref$tableKey","_ref$noColumnMessage","noColumnMessage","i18next","t","_ref$searchProps","searchProps","_ref$allowConfigurati","_ref$onMutationSucces","_ref$defaultHiddenCol","_ref$buttonProps","buttonProps","_ref$onOpenChange","onOpenChange","_useState","useState","_useState2","_slicedToArray","setSearchTerm","_useState3","_useState4","open","setOpen","_useTranslation","useTranslation","_useTableConfiguratio","handleDragEnd","event","oldIndex","findIndexBy","newIndex","newOrder","_newOrder$splice","splice","_newOrder$splice2","movedItem","filteredColumns","handleHideAllColumns","columnsToHideKeys","assoc","handleChange","_ref2","_ref2$target","columnId","handleSearch","_ref3","value","Icon","icon","_buttonProps$dataTes","dataTestId","buttonLabel","label","restButtonProps","_objectWithoutProperties","_excluded","Popover","isOpen","PopoverTrigger","asChild","Button","variant","PopoverContent","align","Input","placeholder","prefix","Search","type","onChange","DndContext","collisionDetection","closestCenter","modifiers","restrictToVerticalAxis","restrictToFirstScrollableAncestor","onDragEnd","SortableContext","items","strategy","verticalListSortingStrategy","_createElement","_ref4","Separator","_Fragment","onClick","displayName"],"mappings":"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"}