@parca/profile 0.19.139 → 0.19.142
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +8 -0
- package/dist/GraphTooltipArrow/Content.js +224 -30
- package/dist/GraphTooltipArrow/DockedGraphTooltip/index.js +192 -33
- package/dist/GraphTooltipArrow/ExpandOnHoverValue.js +53 -3
- package/dist/GraphTooltipArrow/index.d.ts.map +1 -1
- package/dist/GraphTooltipArrow/index.js +86 -56
- package/dist/GraphTooltipArrow/useGraphTooltip/index.js +37 -37
- package/dist/GraphTooltipArrow/useGraphTooltipMetaInfo/index.js +103 -73
- package/dist/MatchersInput/SuggestionItem.js +91 -12
- package/dist/MatchersInput/SuggestionsList.d.ts +2 -1
- package/dist/MatchersInput/SuggestionsList.d.ts.map +1 -1
- package/dist/MatchersInput/SuggestionsList.js +371 -157
- package/dist/MatchersInput/SuggestionsList.test.d.ts +2 -0
- package/dist/MatchersInput/SuggestionsList.test.d.ts.map +1 -0
- package/dist/MatchersInput/index.js +308 -115
- package/dist/MetricsCircle/index.js +39 -3
- package/dist/MetricsGraph/MetricsContextMenu/index.js +119 -19
- package/dist/MetricsGraph/MetricsInfoPanel/index.js +81 -20
- package/dist/MetricsGraph/MetricsTooltip/index.d.ts.map +1 -1
- package/dist/MetricsGraph/MetricsTooltip/index.js +107 -74
- package/dist/MetricsGraph/index.js +552 -203
- package/dist/MetricsGraph/useMetricsGraphDimensions.js +46 -25
- package/dist/MetricsGraph/utils/colorMapping.js +24 -17
- package/dist/MetricsSeries/index.js +70 -7
- package/dist/PreSelectedMatchers/index.d.ts.map +1 -1
- package/dist/PreSelectedMatchers/index.js +249 -102
- package/dist/ProfileExplorer/ProfileExplorerCompare.js +240 -49
- package/dist/ProfileExplorer/ProfileExplorerSingle.js +98 -11
- package/dist/ProfileExplorer/index.js +183 -32
- package/dist/ProfileFlameChart/SamplesStrips/SamplesGraph/index.js +333 -148
- package/dist/ProfileFlameChart/SamplesStrips/SamplesStrips.stories.js +69 -35
- package/dist/ProfileFlameChart/SamplesStrips/index.js +645 -134
- package/dist/ProfileFlameChart/SamplesStrips/labelSetUtils.js +114 -55
- package/dist/ProfileFlameChart/index.js +266 -134
- package/dist/ProfileFlameGraph/FlameGraphArrow/ContextMenu.js +287 -88
- package/dist/ProfileFlameGraph/FlameGraphArrow/ContextMenuWrapper.js +56 -20
- package/dist/ProfileFlameGraph/FlameGraphArrow/FlameGraphNodes.js +211 -140
- package/dist/ProfileFlameGraph/FlameGraphArrow/MemoizedTooltip.js +133 -38
- package/dist/ProfileFlameGraph/FlameGraphArrow/MiniMap.js +261 -216
- package/dist/ProfileFlameGraph/FlameGraphArrow/TextWithEllipsis.d.ts.map +1 -1
- package/dist/ProfileFlameGraph/FlameGraphArrow/TextWithEllipsis.js +71 -45
- package/dist/ProfileFlameGraph/FlameGraphArrow/TooltipContext.d.ts.map +1 -1
- package/dist/ProfileFlameGraph/FlameGraphArrow/TooltipContext.js +58 -28
- package/dist/ProfileFlameGraph/FlameGraphArrow/ZoomControls.d.ts.map +1 -1
- package/dist/ProfileFlameGraph/FlameGraphArrow/ZoomControls.js +59 -8
- package/dist/ProfileFlameGraph/FlameGraphArrow/index.js +396 -179
- package/dist/ProfileFlameGraph/FlameGraphArrow/useBatchedRendering.d.ts.map +1 -1
- package/dist/ProfileFlameGraph/FlameGraphArrow/useBatchedRendering.js +68 -50
- package/dist/ProfileFlameGraph/FlameGraphArrow/useMappingList.js +62 -38
- package/dist/ProfileFlameGraph/FlameGraphArrow/useNodeColor.js +14 -6
- package/dist/ProfileFlameGraph/FlameGraphArrow/useScrollViewport.js +124 -82
- package/dist/ProfileFlameGraph/FlameGraphArrow/useVisibleNodes.js +160 -98
- package/dist/ProfileFlameGraph/FlameGraphArrow/useZoom.js +232 -112
- package/dist/ProfileFlameGraph/FlameGraphArrow/utils.js +137 -114
- package/dist/ProfileFlameGraph/benchmarks/benchdata/populateData.js +85 -0
- package/dist/ProfileFlameGraph/index.js +324 -148
- package/dist/ProfileMetricsGraph/hooks/useQueryRange.js +140 -32
- package/dist/ProfileMetricsGraph/index.js +518 -259
- package/dist/ProfileSelector/CompareButton.js +132 -12
- package/dist/ProfileSelector/MetricsGraphSection.js +234 -67
- package/dist/ProfileSelector/index.d.ts.map +1 -1
- package/dist/ProfileSelector/index.js +730 -142
- package/dist/ProfileSelector/useAutoQuerySelector.js +249 -130
- package/dist/ProfileSource.js +230 -163
- package/dist/ProfileTypeSelector/index.js +214 -125
- package/dist/ProfileView/components/ActionButtons/GroupByDropdown.js +50 -4
- package/dist/ProfileView/components/ActionButtons/SortByDropdown.js +139 -33
- package/dist/ProfileView/components/ColorStackLegend.js +184 -55
- package/dist/ProfileView/components/DashboardItems/index.js +87 -28
- package/dist/ProfileView/components/DashboardLayout/index.js +108 -16
- package/dist/ProfileView/components/DiffLegend.js +172 -29
- package/dist/ProfileView/components/GroupByLabelsDropdown/index.js +199 -55
- package/dist/ProfileView/components/InvertCallStack/index.js +99 -10
- package/dist/ProfileView/components/ProfileFilters/filterPresets.js +260 -315
- package/dist/ProfileView/components/ProfileFilters/index.js +518 -215
- package/dist/ProfileView/components/ProfileFilters/useProfileFilters.js +370 -306
- package/dist/ProfileView/components/ProfileFilters/useProfileFiltersUrlState.js +188 -120
- package/dist/ProfileView/components/ProfileHeader/index.js +105 -11
- package/dist/ProfileView/components/ShareButton/ResultBox.js +119 -16
- package/dist/ProfileView/components/ShareButton/index.js +352 -62
- package/dist/ProfileView/components/Toolbars/MultiLevelDropdown.d.ts.map +1 -1
- package/dist/ProfileView/components/Toolbars/MultiLevelDropdown.js +675 -195
- package/dist/ProfileView/components/Toolbars/SwitchMenuItem.js +94 -7
- package/dist/ProfileView/components/Toolbars/TableColumnsDropdown.js +198 -157
- package/dist/ProfileView/components/Toolbars/index.js +441 -21
- package/dist/ProfileView/components/ViewSelector/Dropdown.js +233 -22
- package/dist/ProfileView/components/ViewSelector/index.js +211 -91
- package/dist/ProfileView/components/VisualizationContainer/index.d.ts.map +1 -1
- package/dist/ProfileView/components/VisualizationContainer/index.js +52 -7
- package/dist/ProfileView/components/VisualizationPanel.js +185 -8
- package/dist/ProfileView/context/DashboardContext.js +84 -28
- package/dist/ProfileView/context/ProfileViewContext.js +56 -15
- package/dist/ProfileView/hooks/useAutoSelectDimension.js +71 -41
- package/dist/ProfileView/hooks/useProfileMetadata.js +50 -18
- package/dist/ProfileView/hooks/useResetFlameGraphState.js +31 -10
- package/dist/ProfileView/hooks/useResetStateOnProfileTypeChange.js +72 -29
- package/dist/ProfileView/hooks/useResetStateOnSeriesChange.js +39 -13
- package/dist/ProfileView/hooks/useVisualizationState.js +262 -87
- package/dist/ProfileView/index.js +383 -45
- package/dist/ProfileView/types/visualization.js +1 -13
- package/dist/ProfileView/utils/colorUtils.js +8 -7
- package/dist/ProfileViewWithData.js +332 -237
- package/dist/QueryControls/index.js +418 -47
- package/dist/Sandwich/components/CalleesSection.js +54 -4
- package/dist/Sandwich/components/CallersSection.js +97 -27
- package/dist/Sandwich/components/TableSection.js +77 -4
- package/dist/Sandwich/index.js +125 -12
- package/dist/Sandwich/utils/processRowData.js +48 -39
- package/dist/SelectWithRefresh/index.js +102 -28
- package/dist/SimpleMatchers/Select.js +520 -187
- package/dist/SimpleMatchers/index.js +590 -288
- package/dist/SourceView/Highlighter.js +230 -70
- package/dist/SourceView/LineNo.js +72 -17
- package/dist/SourceView/index.js +177 -101
- package/dist/SourceView/lang-detector/ext-to-lang.json +798 -798
- package/dist/SourceView/lang-detector/index.js +28 -14
- package/dist/SourceView/useSelectedLineRange.js +97 -16
- package/dist/Table/ColorCell.js +42 -1
- package/dist/Table/ColumnsVisibility.js +114 -6
- package/dist/Table/MoreDropdown.js +121 -27
- package/dist/Table/TableContextMenu.js +150 -139
- package/dist/Table/TableContextMenuWrapper.js +59 -14
- package/dist/Table/hooks/useColorManagement.js +58 -16
- package/dist/Table/hooks/useTableConfiguration.d.ts.map +1 -1
- package/dist/Table/hooks/useTableConfiguration.js +331 -168
- package/dist/Table/index.js +222 -126
- package/dist/Table/utils/functions.js +169 -144
- package/dist/Table/utils/topAndBottomExpandedRowModel.js +69 -52
- package/dist/TimelineGuide/index.js +209 -16
- package/dist/TopTable/benchmarks/benchdata/populateData.js +91 -0
- package/dist/TopTable/index.js +340 -122
- package/dist/contexts/LabelsQueryProvider.js +94 -32
- package/dist/contexts/UnifiedLabelsContext.js +114 -49
- package/dist/contexts/utils.js +37 -15
- package/dist/hooks/useCompareModeMeta.js +157 -94
- package/dist/hooks/useLabels.js +295 -52
- package/dist/hooks/useQueryState.js +371 -330
- package/dist/index.js +21 -16
- package/dist/testdata/fg-diff.json +3750 -0
- package/dist/testdata/fg-simple.json +1879 -0
- package/dist/testdata/link_data.json +56 -0
- package/dist/testdata/tabular.json +30 -0
- package/dist/testdata/test_flamegraph.json +26846 -0
- package/dist/testdata/test_graph.json +53 -0
- package/dist/useDelayedLoader.js +32 -18
- package/dist/useGrpcQuery/index.js +71 -11
- package/dist/useHasProfileData.js +90 -12
- package/dist/useQuery.js +205 -64
- package/dist/useSumBy.d.ts.map +1 -1
- package/dist/useSumBy.js +294 -138
- package/dist/utils.js +62 -30
- package/package.json +9 -9
- package/src/GraphTooltipArrow/index.tsx +3 -0
- package/src/MatchersInput/SuggestionsList.test.tsx +70 -0
- package/src/MatchersInput/SuggestionsList.tsx +11 -10
- package/src/MatchersInput/index.tsx +1 -1
- package/src/MetricsGraph/MetricsTooltip/index.tsx +22 -34
- package/src/PreSelectedMatchers/index.tsx +3 -0
- package/src/ProfileFlameGraph/FlameGraphArrow/TextWithEllipsis.tsx +3 -0
- package/src/ProfileFlameGraph/FlameGraphArrow/TooltipContext.tsx +3 -0
- package/src/ProfileFlameGraph/FlameGraphArrow/ZoomControls.tsx +3 -0
- package/src/ProfileFlameGraph/FlameGraphArrow/useBatchedRendering.ts +3 -0
- package/src/ProfileSelector/index.tsx +30 -7
- package/src/ProfileView/components/Toolbars/MultiLevelDropdown.tsx +3 -0
- package/src/ProfileView/components/VisualizationContainer/index.tsx +3 -0
- package/src/Table/hooks/useTableConfiguration.tsx +7 -13
- package/src/useDelayedLoader.ts +10 -10
- package/src/useSumBy.ts +12 -18
- package/dist/ProfileView/components/ProfileFilters/useProfileFiltersUrlState.test.js +0 -541
- package/dist/hooks/useQueryState.test.js +0 -984
|
@@ -1,4 +1,24 @@
|
|
|
1
|
-
|
|
1
|
+
function _typeof(o) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && "function" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o; }, _typeof(o); }
|
|
2
|
+
var _excluded = ["items", "selectedKey", "onSelection", "placeholder", "width", "className", "loading", "primary", "disabled", "icon", "id", "optionsClassname", "searchable", "onButtonClick", "editable", "refetchValues", "showLoadingInButton"];
|
|
3
|
+
function _createForOfIteratorHelper(r, e) { var t = "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"]; if (!t) { if (Array.isArray(r) || (t = _unsupportedIterableToArray(r)) || e && r && "number" == typeof r.length) { t && (r = t); var _n = 0, F = function F() {}; return { s: F, n: function n() { return _n >= r.length ? { done: !0 } : { done: !1, value: r[_n++] }; }, e: function e(r) { throw r; }, f: F }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } var o, a = !0, u = !1; return { s: function s() { t = t.call(r); }, n: function n() { var r = t.next(); return a = r.done, r; }, e: function e(r) { u = !0, o = r; }, f: function f() { try { a || null == t["return"] || t["return"](); } finally { if (u) throw o; } } }; }
|
|
4
|
+
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; }
|
|
5
|
+
function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).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; }
|
|
6
|
+
function _defineProperty(e, r, t) { return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; }
|
|
7
|
+
function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == _typeof(i) ? i : i + ""; }
|
|
8
|
+
function _toPrimitive(t, r) { if ("object" != _typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || "default"); if ("object" != _typeof(i)) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } return ("string" === r ? String : Number)(t); }
|
|
9
|
+
function _regenerator() { /*! regenerator-runtime -- Copyright (c) 2014-present, Facebook, Inc. -- license (MIT): https://github.com/babel/babel/blob/main/packages/babel-helpers/LICENSE */ var e, t, r = "function" == typeof Symbol ? Symbol : {}, n = r.iterator || "@@iterator", o = r.toStringTag || "@@toStringTag"; function i(r, n, o, i) { var c = n && n.prototype instanceof Generator ? n : Generator, u = Object.create(c.prototype); return _regeneratorDefine2(u, "_invoke", function (r, n, o) { var i, c, u, f = 0, p = o || [], y = !1, G = { p: 0, n: 0, v: e, a: d, f: d.bind(e, 4), d: function d(t, r) { return i = t, c = 0, u = e, G.n = r, a; } }; function d(r, n) { for (c = r, u = n, t = 0; !y && f && !o && t < p.length; t++) { var o, i = p[t], d = G.p, l = i[2]; r > 3 ? (o = l === n) && (u = i[(c = i[4]) ? 5 : (c = 3, 3)], i[4] = i[5] = e) : i[0] <= d && ((o = r < 2 && d < i[1]) ? (c = 0, G.v = n, G.n = i[1]) : d < l && (o = r < 3 || i[0] > n || n > l) && (i[4] = r, i[5] = n, G.n = l, c = 0)); } if (o || r > 1) return a; throw y = !0, n; } return function (o, p, l) { if (f > 1) throw TypeError("Generator is already running"); for (y && 1 === p && d(p, l), c = p, u = l; (t = c < 2 ? e : u) || !y;) { i || (c ? c < 3 ? (c > 1 && (G.n = -1), d(c, u)) : G.n = u : G.v = u); try { if (f = 2, i) { if (c || (o = "next"), t = i[o]) { if (!(t = t.call(i, u))) throw TypeError("iterator result is not an object"); if (!t.done) return t; u = t.value, c < 2 && (c = 0); } else 1 === c && (t = i["return"]) && t.call(i), c < 2 && (u = TypeError("The iterator does not provide a '" + o + "' method"), c = 1); i = e; } else if ((t = (y = G.n < 0) ? u : r.call(n, G)) !== a) break; } catch (t) { i = e, c = 1, u = t; } finally { f = 1; } } return { value: t, done: y }; }; }(r, o, i), !0), u; } var a = {}; function Generator() {} function GeneratorFunction() {} function GeneratorFunctionPrototype() {} t = Object.getPrototypeOf; var c = [][n] ? t(t([][n]())) : (_regeneratorDefine2(t = {}, n, function () { return this; }), t), u = GeneratorFunctionPrototype.prototype = Generator.prototype = Object.create(c); function f(e) { return Object.setPrototypeOf ? Object.setPrototypeOf(e, GeneratorFunctionPrototype) : (e.__proto__ = GeneratorFunctionPrototype, _regeneratorDefine2(e, o, "GeneratorFunction")), e.prototype = Object.create(u), e; } return GeneratorFunction.prototype = GeneratorFunctionPrototype, _regeneratorDefine2(u, "constructor", GeneratorFunctionPrototype), _regeneratorDefine2(GeneratorFunctionPrototype, "constructor", GeneratorFunction), GeneratorFunction.displayName = "GeneratorFunction", _regeneratorDefine2(GeneratorFunctionPrototype, o, "GeneratorFunction"), _regeneratorDefine2(u), _regeneratorDefine2(u, o, "Generator"), _regeneratorDefine2(u, n, function () { return this; }), _regeneratorDefine2(u, "toString", function () { return "[object Generator]"; }), (_regenerator = function _regenerator() { return { w: i, m: f }; })(); }
|
|
10
|
+
function _regeneratorDefine2(e, r, n, t) { var i = Object.defineProperty; try { i({}, "", {}); } catch (e) { i = 0; } _regeneratorDefine2 = function _regeneratorDefine(e, r, n, t) { function o(r, n) { _regeneratorDefine2(e, r, function (e) { return this._invoke(r, n, e); }); } r ? i ? i(e, r, { value: n, enumerable: !t, configurable: !t, writable: !t }) : e[r] = n : (o("next", 0), o("throw", 1), o("return", 2)); }, _regeneratorDefine2(e, r, n, t); }
|
|
11
|
+
function asyncGeneratorStep(n, t, e, r, o, a, c) { try { var i = n[a](c), u = i.value; } catch (n) { return void e(n); } i.done ? t(u) : Promise.resolve(u).then(r, o); }
|
|
12
|
+
function _asyncToGenerator(n) { return function () { var t = this, e = arguments; return new Promise(function (r, o) { var a = n.apply(t, e); function _next(n) { asyncGeneratorStep(a, r, o, _next, _throw, "next", n); } function _throw(n) { asyncGeneratorStep(a, r, o, _next, _throw, "throw", n); } _next(void 0); }); }; }
|
|
13
|
+
function _slicedToArray(r, e) { return _arrayWithHoles(r) || _iterableToArrayLimit(r, e) || _unsupportedIterableToArray(r, e) || _nonIterableRest(); }
|
|
14
|
+
function _nonIterableRest() { throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); }
|
|
15
|
+
function _unsupportedIterableToArray(r, a) { if (r) { if ("string" == typeof r) return _arrayLikeToArray(r, a); var t = {}.toString.call(r).slice(8, -1); return "Object" === t && r.constructor && (t = r.constructor.name), "Map" === t || "Set" === t ? Array.from(r) : "Arguments" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? _arrayLikeToArray(r, a) : void 0; } }
|
|
16
|
+
function _arrayLikeToArray(r, a) { (null == a || a > r.length) && (a = r.length); for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e]; return n; }
|
|
17
|
+
function _iterableToArrayLimit(r, l) { var t = null == r ? null : "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"]; if (null != t) { var e, n, i, u, a = [], f = !0, o = !1; try { if (i = (t = t.call(r)).next, 0 === l) { if (Object(t) !== t) return; f = !1; } else for (; !(f = (e = i.call(t)).done) && (a.push(e.value), a.length !== l); f = !0); } catch (r) { o = !0, n = r; } finally { try { if (!f && null != t["return"] && (u = t["return"](), Object(u) !== u)) return; } finally { if (o) throw n; } } return a; } }
|
|
18
|
+
function _arrayWithHoles(r) { if (Array.isArray(r)) return r; }
|
|
19
|
+
function _objectWithoutProperties(e, t) { if (null == e) return {}; var o, r, i = _objectWithoutPropertiesLoose(e, t); if (Object.getOwnPropertySymbols) { var n = Object.getOwnPropertySymbols(e); for (r = 0; r < n.length; r++) o = n[r], -1 === t.indexOf(o) && {}.propertyIsEnumerable.call(e, o) && (i[o] = e[o]); } return i; }
|
|
20
|
+
function _objectWithoutPropertiesLoose(r, e) { if (null == r) return {}; var t = {}; for (var n in r) if ({}.hasOwnProperty.call(r, n)) { if (-1 !== e.indexOf(n)) continue; t[n] = r[n]; } return t; }
|
|
21
|
+
import { c as _c } from "react-compiler-runtime";
|
|
2
22
|
// Copyright 2022 The Parca Authors
|
|
3
23
|
// Licensed under the Apache License, Version 2.0 (the "License");
|
|
4
24
|
// you may not use this file except in compliance with the License.
|
|
@@ -11,206 +31,519 @@ import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-run
|
|
|
11
31
|
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
12
32
|
// See the License for the specific language governing permissions and
|
|
13
33
|
// limitations under the License.
|
|
14
|
-
|
|
34
|
+
|
|
35
|
+
import React, { useCallback, useEffect, useMemo, useRef, useState } from 'react';
|
|
15
36
|
import { Icon } from '@iconify/react';
|
|
16
37
|
import { useVirtualizer } from '@tanstack/react-virtual';
|
|
17
38
|
import cx from 'classnames';
|
|
18
39
|
import levenshtein from 'fast-levenshtein';
|
|
19
40
|
import { Button, DividerWithLabel, RefreshButton, useParcaContext } from '@parca/components';
|
|
20
41
|
import { TEST_IDS, testId } from '@parca/test-utils/dist/test-ids';
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
42
|
+
import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
|
|
43
|
+
var CustomSelect = function CustomSelect(_ref) {
|
|
44
|
+
var itemsProp = _ref.items,
|
|
45
|
+
selectedKey = _ref.selectedKey,
|
|
46
|
+
onSelection = _ref.onSelection,
|
|
47
|
+
_ref$placeholder = _ref.placeholder,
|
|
48
|
+
placeholder = _ref$placeholder === void 0 ? 'Select an item' : _ref$placeholder,
|
|
49
|
+
width = _ref.width,
|
|
50
|
+
_ref$className = _ref.className,
|
|
51
|
+
className = _ref$className === void 0 ? '' : _ref$className,
|
|
52
|
+
loading = _ref.loading,
|
|
53
|
+
_ref$primary = _ref.primary,
|
|
54
|
+
primary = _ref$primary === void 0 ? false : _ref$primary,
|
|
55
|
+
_ref$disabled = _ref.disabled,
|
|
56
|
+
disabled = _ref$disabled === void 0 ? false : _ref$disabled,
|
|
57
|
+
icon = _ref.icon,
|
|
58
|
+
id = _ref.id,
|
|
59
|
+
_ref$optionsClassname = _ref.optionsClassname,
|
|
60
|
+
optionsClassname = _ref$optionsClassname === void 0 ? '' : _ref$optionsClassname,
|
|
61
|
+
_ref$searchable = _ref.searchable,
|
|
62
|
+
searchable = _ref$searchable === void 0 ? false : _ref$searchable,
|
|
63
|
+
onButtonClick = _ref.onButtonClick,
|
|
64
|
+
_ref$editable = _ref.editable,
|
|
65
|
+
editable = _ref$editable === void 0 ? false : _ref$editable,
|
|
66
|
+
refetchValues = _ref.refetchValues,
|
|
67
|
+
_ref$showLoadingInBut = _ref.showLoadingInButton,
|
|
68
|
+
showLoadingInButton = _ref$showLoadingInBut === void 0 ? false : _ref$showLoadingInBut,
|
|
69
|
+
restProps = _objectWithoutProperties(_ref, _excluded);
|
|
70
|
+
var _useParcaContext = useParcaContext(),
|
|
71
|
+
loader = _useParcaContext.loader;
|
|
72
|
+
var _useState = useState(false),
|
|
73
|
+
_useState2 = _slicedToArray(_useState, 2),
|
|
74
|
+
isOpen = _useState2[0],
|
|
75
|
+
setIsOpen = _useState2[1];
|
|
76
|
+
var _useState3 = useState(-1),
|
|
77
|
+
_useState4 = _slicedToArray(_useState3, 2),
|
|
78
|
+
focusedIndex = _useState4[0],
|
|
79
|
+
setFocusedIndex = _useState4[1];
|
|
80
|
+
var _useState5 = useState(''),
|
|
81
|
+
_useState6 = _slicedToArray(_useState5, 2),
|
|
82
|
+
searchTerm = _useState6[0],
|
|
83
|
+
setSearchTerm = _useState6[1];
|
|
84
|
+
var _useState7 = useState(''),
|
|
85
|
+
_useState8 = _slicedToArray(_useState7, 2),
|
|
86
|
+
debouncedSearchTerm = _useState8[0],
|
|
87
|
+
setDebouncedSearchTerm = _useState8[1];
|
|
88
|
+
var _useState9 = useState(false),
|
|
89
|
+
_useState0 = _slicedToArray(_useState9, 2),
|
|
90
|
+
isRefetching = _useState0[0],
|
|
91
|
+
setIsRefetching = _useState0[1];
|
|
92
|
+
var containerRef = useRef(null);
|
|
93
|
+
var optionsRef = useRef(null);
|
|
94
|
+
var searchInputRef = useRef(null);
|
|
95
|
+
var handleRefetch = useCallback(/*#__PURE__*/_asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee() {
|
|
96
|
+
return _regenerator().w(function (_context) {
|
|
97
|
+
while (1) switch (_context.p = _context.n) {
|
|
98
|
+
case 0:
|
|
99
|
+
if (!(refetchValues == null || isRefetching)) {
|
|
100
|
+
_context.n = 1;
|
|
101
|
+
break;
|
|
102
|
+
}
|
|
103
|
+
return _context.a(2);
|
|
104
|
+
case 1:
|
|
105
|
+
setIsRefetching(true);
|
|
106
|
+
_context.p = 2;
|
|
107
|
+
_context.n = 3;
|
|
108
|
+
return refetchValues();
|
|
109
|
+
case 3:
|
|
110
|
+
_context.p = 3;
|
|
111
|
+
setIsRefetching(false);
|
|
112
|
+
return _context.f(3);
|
|
113
|
+
case 4:
|
|
114
|
+
return _context.a(2);
|
|
115
|
+
}
|
|
116
|
+
}, _callee, null, [[2,, 3, 4]]);
|
|
117
|
+
})), [refetchValues, isRefetching]);
|
|
118
|
+
useEffect(function () {
|
|
119
|
+
var timer = setTimeout(function () {
|
|
120
|
+
return setDebouncedSearchTerm(searchTerm);
|
|
121
|
+
}, 150);
|
|
122
|
+
return function () {
|
|
123
|
+
return clearTimeout(timer);
|
|
124
|
+
};
|
|
125
|
+
}, [searchTerm]);
|
|
126
|
+
var items = useMemo(function () {
|
|
127
|
+
if (itemsProp[0] != null && 'type' in itemsProp[0]) {
|
|
128
|
+
return itemsProp.flatMap(function (item) {
|
|
129
|
+
return item.values.map(function (v) {
|
|
130
|
+
return _objectSpread(_objectSpread({}, v), {}, {
|
|
131
|
+
type: item.type
|
|
132
|
+
});
|
|
133
|
+
});
|
|
134
|
+
});
|
|
135
|
+
}
|
|
136
|
+
return itemsProp.map(function (item_0) {
|
|
137
|
+
return _objectSpread(_objectSpread({}, item_0), {}, {
|
|
138
|
+
type: ''
|
|
139
|
+
});
|
|
140
|
+
});
|
|
141
|
+
}, [itemsProp]);
|
|
142
|
+
var filteredItems = useMemo(function () {
|
|
143
|
+
if (!searchable) return items;
|
|
144
|
+
var lowerSearch = debouncedSearchTerm.toLowerCase();
|
|
145
|
+
var filtered = items.filter(function (item_1) {
|
|
146
|
+
return item_1.element.active.props.children.toString().toLowerCase().includes(lowerSearch);
|
|
147
|
+
});
|
|
148
|
+
if (debouncedSearchTerm === '') {
|
|
149
|
+
return filtered.sort(function (a, b) {
|
|
150
|
+
return a.key.localeCompare(b.key);
|
|
151
|
+
});
|
|
152
|
+
}
|
|
153
|
+
return filtered.sort(function (a_0, b_0) {
|
|
154
|
+
return levenshtein.get(a_0.key, debouncedSearchTerm) - levenshtein.get(b_0.key, debouncedSearchTerm);
|
|
155
|
+
});
|
|
156
|
+
}, [items, debouncedSearchTerm, searchable]);
|
|
157
|
+
var selection = editable ? selectedKey : items.find(function (v_0) {
|
|
158
|
+
return v_0.key === selectedKey;
|
|
159
|
+
});
|
|
160
|
+
useEffect(function () {
|
|
161
|
+
var handleClickOutside = function handleClickOutside(event) {
|
|
162
|
+
if (containerRef.current !== null && !containerRef.current.contains(event.target)) {
|
|
163
|
+
setIsOpen(false);
|
|
164
|
+
}
|
|
165
|
+
};
|
|
166
|
+
document.addEventListener('mousedown', handleClickOutside);
|
|
167
|
+
return function () {
|
|
168
|
+
document.removeEventListener('mousedown', handleClickOutside);
|
|
169
|
+
};
|
|
170
|
+
}, []);
|
|
171
|
+
useEffect(function () {
|
|
172
|
+
if (isOpen && searchable) {
|
|
173
|
+
var _searchInputRef$curre;
|
|
174
|
+
(_searchInputRef$curre = searchInputRef.current) === null || _searchInputRef$curre === void 0 || _searchInputRef$curre.focus();
|
|
175
|
+
}
|
|
176
|
+
}, [isOpen, searchable]);
|
|
177
|
+
var handleKeyDown = function handleKeyDown(e) {
|
|
178
|
+
if (e.key === 'Enter') {
|
|
179
|
+
if (!isOpen) {
|
|
180
|
+
setIsOpen(true);
|
|
181
|
+
} else if (focusedIndex !== -1) {
|
|
182
|
+
onSelection(filteredItems[focusedIndex].key);
|
|
183
|
+
if (editable) {
|
|
184
|
+
setSearchTerm(filteredItems[focusedIndex].key);
|
|
185
|
+
} else {
|
|
186
|
+
setIsOpen(false);
|
|
40
187
|
}
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
if (
|
|
48
|
-
|
|
188
|
+
}
|
|
189
|
+
} else if (e.key === 'Escape') {
|
|
190
|
+
setIsOpen(false);
|
|
191
|
+
} else if (e.key === 'Tab') {
|
|
192
|
+
if (isOpen) {
|
|
193
|
+
e.preventDefault();
|
|
194
|
+
if (e.shiftKey) {
|
|
195
|
+
// Shift+Tab: Move focus to the previous item
|
|
196
|
+
setFocusedIndex(function (prevIndex) {
|
|
197
|
+
return prevIndex <= 0 ? filteredItems.length - 1 : prevIndex - 1;
|
|
198
|
+
});
|
|
199
|
+
} else {
|
|
200
|
+
// Tab: Move focus to the next item
|
|
201
|
+
setFocusedIndex(function (prevIndex_0) {
|
|
202
|
+
return (prevIndex_0 + 1) % filteredItems.length;
|
|
203
|
+
});
|
|
49
204
|
}
|
|
50
|
-
|
|
51
|
-
}
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
205
|
+
}
|
|
206
|
+
} else if (e.key === 'ArrowDown') {
|
|
207
|
+
e.preventDefault();
|
|
208
|
+
setFocusedIndex(function (prevIndex_1) {
|
|
209
|
+
return (prevIndex_1 + 1) % filteredItems.length;
|
|
210
|
+
});
|
|
211
|
+
} else if (e.key === 'ArrowUp') {
|
|
212
|
+
e.preventDefault();
|
|
213
|
+
setFocusedIndex(function (prevIndex_2) {
|
|
214
|
+
return (prevIndex_2 - 1 + filteredItems.length) % filteredItems.length;
|
|
215
|
+
});
|
|
216
|
+
}
|
|
217
|
+
};
|
|
218
|
+
var styles = 'relative border rounded-md shadow-sm px-4 py-2 text-left cursor-default focus:outline-none focus:ring-1 items-center focus:ring-indigo-500 focus:border-indigo-500 text-sm flex gap-2 flex items-center justify-between';
|
|
219
|
+
var defaultStyles = 'bg-white dark:bg-gray-900 dark:border-gray-600';
|
|
220
|
+
var primaryStyles = 'text-gray-100 dark:gray-900 bg-indigo-600 border-indigo-500 font-medium py-2 px-4';
|
|
221
|
+
var renderSelection = function renderSelection(selection_0) {
|
|
222
|
+
if (showLoadingInButton && loading === true && selectedKey === '') {
|
|
223
|
+
return /*#__PURE__*/_jsxs("span", _objectSpread(_objectSpread({
|
|
224
|
+
className: "flex items-center gap-2"
|
|
225
|
+
}, testId(TEST_IDS.LABEL_VALUE_LOADING_INDICATOR)), {}, {
|
|
226
|
+
children: [/*#__PURE__*/_jsx(Icon, {
|
|
227
|
+
icon: "svg-spinners:ring-resize",
|
|
228
|
+
className: "w-4 h-4"
|
|
229
|
+
}), /*#__PURE__*/_jsx("span", {
|
|
230
|
+
children: "Loading..."
|
|
231
|
+
})]
|
|
232
|
+
}));
|
|
233
|
+
}
|
|
234
|
+
if (editable) {
|
|
235
|
+
return typeof selection_0 === 'string' && selection_0.length > 0 ? selection_0 : placeholder;
|
|
236
|
+
} else {
|
|
237
|
+
var _element$active, _element;
|
|
238
|
+
return (_element$active = selection_0 === null || selection_0 === void 0 || (_element = selection_0.element) === null || _element === void 0 ? void 0 : _element.active) !== null && _element$active !== void 0 ? _element$active : placeholder;
|
|
239
|
+
}
|
|
240
|
+
};
|
|
241
|
+
var handleSelection = function handleSelection(value) {
|
|
242
|
+
onSelection(value);
|
|
243
|
+
if (editable) {
|
|
244
|
+
setSearchTerm(value);
|
|
245
|
+
setIsOpen(true);
|
|
246
|
+
} else {
|
|
247
|
+
setIsOpen(false);
|
|
248
|
+
}
|
|
249
|
+
};
|
|
250
|
+
var moveCaretToEnd = function moveCaretToEnd(e_0) {
|
|
251
|
+
var value_0 = e_0.target.value;
|
|
252
|
+
e_0.target.value = '';
|
|
253
|
+
e_0.target.value = value_0;
|
|
254
|
+
};
|
|
255
|
+
var groupedFilteredItems = useMemo(function () {
|
|
256
|
+
return filteredItems.reduce(function (acc, item_2) {
|
|
257
|
+
var group = acc.find(function (g) {
|
|
258
|
+
return g.type === item_2.type;
|
|
259
|
+
});
|
|
260
|
+
if (group != null) {
|
|
261
|
+
group.values.push(item_2);
|
|
262
|
+
} else {
|
|
263
|
+
acc.push({
|
|
264
|
+
type: item_2.type,
|
|
265
|
+
values: [item_2]
|
|
266
|
+
});
|
|
267
|
+
}
|
|
268
|
+
return acc;
|
|
269
|
+
}, []).sort(function (a_1, b_1) {
|
|
270
|
+
return a_1.values.length - b_1.values.length;
|
|
271
|
+
});
|
|
272
|
+
}, [filteredItems]);
|
|
273
|
+
var showHeaders = useMemo(function () {
|
|
274
|
+
return groupedFilteredItems.length > 1 && groupedFilteredItems.every(function (g_0) {
|
|
275
|
+
return g_0.type !== '';
|
|
276
|
+
});
|
|
277
|
+
}, [groupedFilteredItems]);
|
|
278
|
+
var flatList = useMemo(function () {
|
|
279
|
+
var list = [];
|
|
280
|
+
var optionIndex = 0;
|
|
281
|
+
var _iterator = _createForOfIteratorHelper(groupedFilteredItems),
|
|
282
|
+
_step;
|
|
283
|
+
try {
|
|
284
|
+
for (_iterator.s(); !(_step = _iterator.n()).done;) {
|
|
285
|
+
var group_0 = _step.value;
|
|
286
|
+
if (showHeaders && group_0.type !== '') {
|
|
287
|
+
list.push({
|
|
288
|
+
type: 'header',
|
|
289
|
+
label: group_0.type
|
|
290
|
+
});
|
|
59
291
|
}
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
}
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
searchInputRef.current?.focus();
|
|
292
|
+
var _iterator2 = _createForOfIteratorHelper(group_0.values),
|
|
293
|
+
_step2;
|
|
294
|
+
try {
|
|
295
|
+
for (_iterator2.s(); !(_step2 = _iterator2.n()).done;) {
|
|
296
|
+
var item_3 = _step2.value;
|
|
297
|
+
list.push({
|
|
298
|
+
type: 'option',
|
|
299
|
+
item: item_3,
|
|
300
|
+
flatIndex: optionIndex
|
|
301
|
+
});
|
|
302
|
+
optionIndex++;
|
|
303
|
+
}
|
|
304
|
+
} catch (err) {
|
|
305
|
+
_iterator2.e(err);
|
|
306
|
+
} finally {
|
|
307
|
+
_iterator2.f();
|
|
77
308
|
}
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
309
|
+
}
|
|
310
|
+
} catch (err) {
|
|
311
|
+
_iterator.e(err);
|
|
312
|
+
} finally {
|
|
313
|
+
_iterator.f();
|
|
314
|
+
}
|
|
315
|
+
return list;
|
|
316
|
+
}, [groupedFilteredItems, showHeaders]);
|
|
317
|
+
var longestKey = useMemo(function () {
|
|
318
|
+
var _filteredItems$reduce, _filteredItems$reduce2;
|
|
319
|
+
return (_filteredItems$reduce = (_filteredItems$reduce2 = filteredItems.reduce(function (a_2, b_2) {
|
|
320
|
+
return a_2.key.length > b_2.key.length ? a_2 : b_2;
|
|
321
|
+
}, filteredItems[0])) === null || _filteredItems$reduce2 === void 0 ? void 0 : _filteredItems$reduce2.key) !== null && _filteredItems$reduce !== void 0 ? _filteredItems$reduce : '';
|
|
322
|
+
}, [filteredItems]);
|
|
323
|
+
var rowVirtualizer = useVirtualizer({
|
|
324
|
+
count: flatList.length,
|
|
325
|
+
getScrollElement: function getScrollElement() {
|
|
326
|
+
return optionsRef.current;
|
|
327
|
+
},
|
|
328
|
+
estimateSize: function estimateSize() {
|
|
329
|
+
return 36;
|
|
330
|
+
},
|
|
331
|
+
overscan: 500
|
|
332
|
+
});
|
|
333
|
+
useEffect(function () {
|
|
334
|
+
if (focusedIndex !== -1) {
|
|
335
|
+
var flatIdx = flatList.findIndex(function (entry) {
|
|
336
|
+
return entry.type === 'option' && entry.flatIndex === focusedIndex;
|
|
337
|
+
});
|
|
338
|
+
if (flatIdx !== -1) {
|
|
339
|
+
rowVirtualizer.scrollToIndex(flatIdx, {
|
|
340
|
+
align: 'auto'
|
|
341
|
+
});
|
|
342
|
+
}
|
|
343
|
+
}
|
|
344
|
+
}, [focusedIndex, flatList, rowVirtualizer]);
|
|
345
|
+
return /*#__PURE__*/_jsxs("div", {
|
|
346
|
+
ref: containerRef,
|
|
347
|
+
className: "relative",
|
|
348
|
+
onKeyDown: handleKeyDown,
|
|
349
|
+
onClick: onButtonClick,
|
|
350
|
+
children: [/*#__PURE__*/_jsxs("div", _objectSpread(_objectSpread({
|
|
351
|
+
id: id,
|
|
352
|
+
onClick: function onClick() {
|
|
353
|
+
return !disabled && setIsOpen(!isOpen);
|
|
354
|
+
},
|
|
355
|
+
className: cx(styles, width !== undefined ? "w-".concat(width) : 'w-full', disabled ? 'cursor-not-allowed opacity-50 pointer-events-none' : '', primary ? primaryStyles : defaultStyles, _defineProperty({}, className, className.length > 0)),
|
|
356
|
+
tabIndex: 0,
|
|
357
|
+
role: "button",
|
|
358
|
+
"aria-haspopup": "listbox",
|
|
359
|
+
"aria-expanded": isOpen
|
|
360
|
+
}, restProps), {}, {
|
|
361
|
+
children: [/*#__PURE__*/_jsx("div", {
|
|
362
|
+
className: cx(icon != null ? '' : 'block overflow-x-hidden text-ellipsis whitespace-nowrap'),
|
|
363
|
+
children: renderSelection(selection)
|
|
364
|
+
}), /*#__PURE__*/_jsx("div", {
|
|
365
|
+
className: cx(icon != null ? '' : 'pointer-events-none text-gray-400'),
|
|
366
|
+
children: icon !== null && icon !== void 0 ? icon : /*#__PURE__*/_jsx(Icon, {
|
|
367
|
+
icon: "heroicons:chevron-up-down-20-solid",
|
|
368
|
+
"aria-hidden": "true"
|
|
369
|
+
})
|
|
370
|
+
})]
|
|
371
|
+
})), isOpen && /*#__PURE__*/_jsx("div", {
|
|
372
|
+
ref: optionsRef,
|
|
373
|
+
className: cx('absolute z-50 mt-1 min-h-[100px] max-h-[50vh] w-max overflow-auto rounded-md bg-gray-50 text-base shadow-lg ring-1 ring-black ring-opacity-5 focus:outline-none dark:border-gray-600 dark:bg-gray-900 dark:ring-white dark:ring-opacity-20 sm:text-sm', _defineProperty({}, optionsClassname, optionsClassname.length > 0)),
|
|
374
|
+
role: "listbox",
|
|
375
|
+
children: /*#__PURE__*/_jsxs("div", {
|
|
376
|
+
className: "relative flex flex-col",
|
|
377
|
+
children: [searchable && /*#__PURE__*/_jsx("div", {
|
|
378
|
+
className: "sticky z-10 top-[-5px] w-auto max-w-full",
|
|
379
|
+
children: /*#__PURE__*/_jsx("div", {
|
|
380
|
+
className: "flex flex-col",
|
|
381
|
+
children: editable ? /*#__PURE__*/_jsxs(_Fragment, {
|
|
382
|
+
children: [/*#__PURE__*/_jsx("textarea", {
|
|
383
|
+
ref: searchInputRef,
|
|
384
|
+
className: "w-full px-4 py-2 text-sm border-b border-gray-200 rounded-none ring-0 outline-none bg-gray-50 dark:bg-gray-800 dark:text-white min-h-[50px]",
|
|
385
|
+
placeholder: "Type a RegEx to add",
|
|
386
|
+
value: searchTerm,
|
|
387
|
+
onChange: function onChange(e_1) {
|
|
388
|
+
return setSearchTerm(e_1.target.value);
|
|
389
|
+
},
|
|
390
|
+
onFocus: function onFocus(e_2) {
|
|
391
|
+
return moveCaretToEnd(e_2);
|
|
88
392
|
}
|
|
89
|
-
|
|
393
|
+
}), editable && searchTerm.length > 0 && /*#__PURE__*/_jsx("div", {
|
|
394
|
+
className: "p-2 border-t border-gray-200 dark:border-gray-700 bg-gray-50 dark:bg-gray-800",
|
|
395
|
+
children: /*#__PURE__*/_jsx(Button, {
|
|
396
|
+
variant: "primary",
|
|
397
|
+
className: "w-full h-[30px]",
|
|
398
|
+
onClick: function onClick() {
|
|
399
|
+
onSelection(searchTerm);
|
|
90
400
|
setIsOpen(false);
|
|
401
|
+
},
|
|
402
|
+
children: "Add"
|
|
403
|
+
})
|
|
404
|
+
})]
|
|
405
|
+
}) : /*#__PURE__*/_jsx("input", {
|
|
406
|
+
ref: searchInputRef,
|
|
407
|
+
type: "text",
|
|
408
|
+
className: "w-full px-4 h-[45px] text-sm border-none rounded-none ring-0 outline-none bg-gray-50 dark:bg-gray-800 dark:text-white",
|
|
409
|
+
placeholder: "Search...",
|
|
410
|
+
value: searchTerm,
|
|
411
|
+
onChange: function onChange(e_3) {
|
|
412
|
+
return setSearchTerm(e_3.target.value);
|
|
413
|
+
}
|
|
414
|
+
})
|
|
415
|
+
})
|
|
416
|
+
}), /*#__PURE__*/_jsx("div", {
|
|
417
|
+
className: "flex-1 min-h-0",
|
|
418
|
+
children: loading === true ? /*#__PURE__*/_jsx("div", {
|
|
419
|
+
className: "w-[270px]",
|
|
420
|
+
children: loader
|
|
421
|
+
}) : groupedFilteredItems.length === 0 ? /*#__PURE__*/_jsx("div", _objectSpread(_objectSpread({
|
|
422
|
+
className: "px-4 py-3 text-sm text-gray-500 dark:text-gray-400 text-center"
|
|
423
|
+
}, testId(TEST_IDS.LABEL_VALUE_NO_RESULTS)), {}, {
|
|
424
|
+
children: "No values found"
|
|
425
|
+
})) : function (_virtualItems$0$start, _virtualItems$, _virtualItems$end, _virtualItems) {
|
|
426
|
+
var virtualItems = rowVirtualizer.getVirtualItems();
|
|
427
|
+
var paddingTop = virtualItems.length > 0 ? (_virtualItems$0$start = (_virtualItems$ = virtualItems[0]) === null || _virtualItems$ === void 0 ? void 0 : _virtualItems$.start) !== null && _virtualItems$0$start !== void 0 ? _virtualItems$0$start : 0 : 0;
|
|
428
|
+
var paddingBottom = virtualItems.length > 0 ? rowVirtualizer.getTotalSize() - ((_virtualItems$end = (_virtualItems = virtualItems[virtualItems.length - 1]) === null || _virtualItems === void 0 ? void 0 : _virtualItems.end) !== null && _virtualItems$end !== void 0 ? _virtualItems$end : 0) : 0;
|
|
429
|
+
return /*#__PURE__*/_jsxs("div", {
|
|
430
|
+
children: [/*#__PURE__*/_jsx("div", {
|
|
431
|
+
"aria-hidden": true,
|
|
432
|
+
className: "pl-3 pr-9 whitespace-nowrap overflow-hidden",
|
|
433
|
+
style: {
|
|
434
|
+
height: 0,
|
|
435
|
+
visibility: 'hidden'
|
|
436
|
+
},
|
|
437
|
+
children: longestKey
|
|
438
|
+
}), paddingTop > 0 && /*#__PURE__*/_jsx("div", {
|
|
439
|
+
style: {
|
|
440
|
+
height: paddingTop
|
|
91
441
|
}
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
442
|
+
}), virtualItems.map(function (virtualItem) {
|
|
443
|
+
var entry_0 = flatList[virtualItem.index];
|
|
444
|
+
return entry_0.type === 'header' ? /*#__PURE__*/_jsx("div", {
|
|
445
|
+
className: "pl-2",
|
|
446
|
+
children: /*#__PURE__*/_jsx(DividerWithLabel, {
|
|
447
|
+
label: entry_0.label
|
|
448
|
+
})
|
|
449
|
+
}, virtualItem.key) : /*#__PURE__*/_jsx(OptionItem, {
|
|
450
|
+
item: entry_0.item,
|
|
451
|
+
index: entry_0.flatIndex,
|
|
452
|
+
focusedIndex: focusedIndex,
|
|
453
|
+
selectedKey: selectedKey,
|
|
454
|
+
handleSelection: handleSelection
|
|
455
|
+
}, virtualItem.key);
|
|
456
|
+
}), paddingBottom > 0 && /*#__PURE__*/_jsx("div", {
|
|
457
|
+
style: {
|
|
458
|
+
height: paddingBottom
|
|
103
459
|
}
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
}
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
460
|
+
})]
|
|
461
|
+
});
|
|
462
|
+
}()
|
|
463
|
+
}), refetchValues !== undefined && loading !== true && /*#__PURE__*/_jsx(RefreshButton, {
|
|
464
|
+
onClick: function onClick() {
|
|
465
|
+
return void handleRefetch();
|
|
466
|
+
},
|
|
467
|
+
disabled: isRefetching,
|
|
468
|
+
title: "Refresh results",
|
|
469
|
+
testId: TEST_IDS.LABEL_VALUE_REFRESH_BUTTON,
|
|
470
|
+
sticky: true,
|
|
471
|
+
loading: isRefetching
|
|
472
|
+
})]
|
|
473
|
+
})
|
|
474
|
+
})]
|
|
475
|
+
});
|
|
476
|
+
};
|
|
477
|
+
var OptionItem = function OptionItem(t0) {
|
|
478
|
+
var $ = _c(17);
|
|
479
|
+
var item = t0.item,
|
|
480
|
+
index = t0.index,
|
|
481
|
+
focusedIndex = t0.focusedIndex,
|
|
482
|
+
selectedKey = t0.selectedKey,
|
|
483
|
+
handleSelection = t0.handleSelection;
|
|
484
|
+
var t1 = index === focusedIndex && "bg-indigo-600 text-white";
|
|
485
|
+
var t2 = item.key === selectedKey && "bg-indigo-100 dark:bg-indigo-700";
|
|
486
|
+
var t3 = item.disabled !== null && item.disabled === true && "opacity-50 cursor-not-allowed";
|
|
487
|
+
var t4;
|
|
488
|
+
if ($[0] !== t1 || $[1] !== t2 || $[2] !== t3) {
|
|
489
|
+
t4 = cx("relative cursor-default select-none py-2 pl-3 pr-9", t1, t2, t3, "focus:outline-none focus:ring-2 focus:ring-indigo-500 focus:ring-offset-2 hover:bg-indigo-600 hover:text-white");
|
|
490
|
+
$[0] = t1;
|
|
491
|
+
$[1] = t2;
|
|
492
|
+
$[2] = t3;
|
|
493
|
+
$[3] = t4;
|
|
494
|
+
} else {
|
|
495
|
+
t4 = $[3];
|
|
496
|
+
}
|
|
497
|
+
var t5 = item.key === selectedKey;
|
|
498
|
+
var t6;
|
|
499
|
+
if ($[4] !== handleSelection || $[5] !== item.disabled || $[6] !== item.key) {
|
|
500
|
+
t6 = function t6() {
|
|
501
|
+
var _item$disabled;
|
|
502
|
+
if (!((_item$disabled = item.disabled) !== null && _item$disabled !== void 0 ? _item$disabled : false)) {
|
|
503
|
+
handleSelection(item.key);
|
|
504
|
+
}
|
|
147
505
|
};
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
const flatList = useMemo(() => {
|
|
164
|
-
const list = [];
|
|
165
|
-
let optionIndex = 0;
|
|
166
|
-
for (const group of groupedFilteredItems) {
|
|
167
|
-
if (showHeaders && group.type !== '') {
|
|
168
|
-
list.push({ type: 'header', label: group.type });
|
|
169
|
-
}
|
|
170
|
-
for (const item of group.values) {
|
|
171
|
-
list.push({ type: 'option', item: item, flatIndex: optionIndex });
|
|
172
|
-
optionIndex++;
|
|
173
|
-
}
|
|
174
|
-
}
|
|
175
|
-
return list;
|
|
176
|
-
}, [groupedFilteredItems, showHeaders]);
|
|
177
|
-
const longestKey = useMemo(() => filteredItems.reduce((a, b) => (a.key.length > b.key.length ? a : b), filteredItems[0])
|
|
178
|
-
?.key ?? '', [filteredItems]);
|
|
179
|
-
const rowVirtualizer = useVirtualizer({
|
|
180
|
-
count: flatList.length,
|
|
181
|
-
getScrollElement: () => optionsRef.current,
|
|
182
|
-
estimateSize: () => 36,
|
|
183
|
-
overscan: 500,
|
|
506
|
+
$[4] = handleSelection;
|
|
507
|
+
$[5] = item.disabled;
|
|
508
|
+
$[6] = item.key;
|
|
509
|
+
$[7] = t6;
|
|
510
|
+
} else {
|
|
511
|
+
t6 = $[7];
|
|
512
|
+
}
|
|
513
|
+
var t7;
|
|
514
|
+
if ($[8] !== item.key || $[9] !== selectedKey) {
|
|
515
|
+
t7 = item.key === selectedKey && /*#__PURE__*/_jsx("span", {
|
|
516
|
+
className: "absolute inset-y-0 right-0 flex items-center pr-4 text-indigo-600",
|
|
517
|
+
children: /*#__PURE__*/_jsx(Icon, {
|
|
518
|
+
icon: "heroicons:check-20-solid",
|
|
519
|
+
"aria-hidden": "true"
|
|
520
|
+
})
|
|
184
521
|
});
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
if (!(item.disabled ?? false)) {
|
|
212
|
-
handleSelection(item.key);
|
|
213
|
-
}
|
|
214
|
-
}, children: [item.element.expanded, item.key === selectedKey && (_jsx("span", { className: "absolute inset-y-0 right-0 flex items-center pr-4 text-indigo-600", children: _jsx(Icon, { icon: "heroicons:check-20-solid", "aria-hidden": "true" }) }))] }));
|
|
522
|
+
$[8] = item.key;
|
|
523
|
+
$[9] = selectedKey;
|
|
524
|
+
$[10] = t7;
|
|
525
|
+
} else {
|
|
526
|
+
t7 = $[10];
|
|
527
|
+
}
|
|
528
|
+
var t8;
|
|
529
|
+
if ($[11] !== item.element.expanded || $[12] !== t4 || $[13] !== t5 || $[14] !== t6 || $[15] !== t7) {
|
|
530
|
+
t8 = /*#__PURE__*/_jsxs("div", {
|
|
531
|
+
className: t4,
|
|
532
|
+
role: "option",
|
|
533
|
+
"aria-selected": t5,
|
|
534
|
+
tabIndex: -1,
|
|
535
|
+
onClick: t6,
|
|
536
|
+
children: [item.element.expanded, t7]
|
|
537
|
+
});
|
|
538
|
+
$[11] = item.element.expanded;
|
|
539
|
+
$[12] = t4;
|
|
540
|
+
$[13] = t5;
|
|
541
|
+
$[14] = t6;
|
|
542
|
+
$[15] = t7;
|
|
543
|
+
$[16] = t8;
|
|
544
|
+
} else {
|
|
545
|
+
t8 = $[16];
|
|
546
|
+
}
|
|
547
|
+
return t8;
|
|
215
548
|
};
|
|
216
|
-
export default CustomSelect;
|
|
549
|
+
export default CustomSelect;
|