@parca/profile 0.19.140 → 0.19.143
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 +9 -1
- 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 +94 -68
- 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.d.ts.map +1 -1
- package/dist/ProfileExplorer/ProfileExplorerCompare.js +240 -45
- 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 +260 -126
- package/dist/ProfileFlameGraph/FlameGraphArrow/ContextMenu.js +283 -85
- 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 +322 -147
- package/dist/ProfileMetricsGraph/hooks/useQueryRange.js +140 -32
- package/dist/ProfileMetricsGraph/index.js +515 -256
- package/dist/ProfileSelector/CompareButton.js +132 -12
- package/dist/ProfileSelector/MetricsGraphSection.js +228 -63
- package/dist/ProfileSelector/index.d.ts +1 -1
- package/dist/ProfileSelector/index.d.ts.map +1 -1
- package/dist/ProfileSelector/index.js +734 -142
- package/dist/ProfileSelector/useAutoQuerySelector.d.ts +1 -3
- package/dist/ProfileSelector/useAutoQuerySelector.d.ts.map +1 -1
- package/dist/ProfileSelector/useAutoQuerySelector.js +280 -132
- 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 +137 -32
- package/dist/ProfileView/components/ColorStackLegend.js +182 -54
- 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 +97 -9
- 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 +191 -118
- 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 +664 -192
- package/dist/ProfileView/components/Toolbars/SwitchMenuItem.js +94 -7
- package/dist/ProfileView/components/Toolbars/TableColumnsDropdown.js +196 -155
- 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 +186 -82
- 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 +74 -26
- 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 +71 -27
- package/dist/ProfileView/hooks/useResetStateOnSeriesChange.js +53 -17
- package/dist/ProfileView/hooks/useVisualizationState.js +229 -69
- 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 +319 -225
- 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 +72 -20
- package/dist/Table/ColorCell.js +42 -1
- package/dist/Table/ColumnsVisibility.js +114 -6
- package/dist/Table/MoreDropdown.js +107 -21
- package/dist/Table/TableContextMenu.js +144 -134
- 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 +323 -167
- package/dist/Table/index.js +217 -123
- 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 +325 -121
- package/dist/contexts/LabelsQueryProvider.js +94 -32
- package/dist/contexts/UnifiedLabelsContext.js +114 -49
- package/dist/contexts/utils.js +37 -15
- package/dist/hooks/urlParsers.js +27 -15
- package/dist/hooks/useColorBy.js +47 -10
- package/dist/hooks/useCompareModeMeta.js +112 -62
- package/dist/hooks/useDashboardItems.js +52 -11
- package/dist/hooks/useLabels.js +295 -52
- package/dist/hooks/useQueryState.d.ts +1 -1
- package/dist/hooks/useQueryState.d.ts.map +1 -1
- package/dist/hooks/useQueryState.js +375 -329
- package/dist/index.js +11 -6
- 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/ProfileExplorer/ProfileExplorerCompare.tsx +9 -2
- 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 +31 -9
- package/src/ProfileSelector/useAutoQuerySelector.ts +64 -42
- 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/hooks/useQueryState.ts +18 -3
- package/src/useDelayedLoader.ts +10 -10
- package/src/useSumBy.ts +12 -18
- package/dist/ProfileView/components/ProfileFilters/useProfileFiltersUrlState.test.js +0 -455
- package/dist/hooks/useQueryState.test.js +0 -868
|
@@ -1,3 +1,9 @@
|
|
|
1
|
+
function _slicedToArray(r, e) { return _arrayWithHoles(r) || _iterableToArrayLimit(r, e) || _unsupportedIterableToArray(r, e) || _nonIterableRest(); }
|
|
2
|
+
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."); }
|
|
3
|
+
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; } }
|
|
4
|
+
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; }
|
|
5
|
+
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; } }
|
|
6
|
+
function _arrayWithHoles(r) { if (Array.isArray(r)) return r; }
|
|
1
7
|
// Copyright 2022 The Parca Authors
|
|
2
8
|
// Licensed under the Apache License, Version 2.0 (the "License");
|
|
3
9
|
// you may not use this file except in compliance with the License.
|
|
@@ -10,56 +16,68 @@
|
|
|
10
16
|
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
11
17
|
// See the License for the specific language governing permissions and
|
|
12
18
|
// limitations under the License.
|
|
19
|
+
|
|
20
|
+
/* eslint-disable react-hooks/set-state-in-effect */
|
|
21
|
+
|
|
13
22
|
import { useEffect, useRef, useState } from 'react';
|
|
14
23
|
// useBatchedRendering - Helps in incrementally rendering items in batches to avoid UI blocking.
|
|
15
|
-
export
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
};
|
|
60
|
-
}, [renderedCount, items.length, batchSize, batchDelay]);
|
|
61
|
-
return {
|
|
62
|
-
items: items.slice(0, renderedCount),
|
|
63
|
-
isComplete: renderedCount === items.length,
|
|
24
|
+
export var useBatchedRendering = function useBatchedRendering(items) {
|
|
25
|
+
'use no memo';
|
|
26
|
+
|
|
27
|
+
var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
|
|
28
|
+
var _options$batchSize = options.batchSize,
|
|
29
|
+
batchSize = _options$batchSize === void 0 ? 500 : _options$batchSize,
|
|
30
|
+
_options$batchDelay = options.batchDelay,
|
|
31
|
+
batchDelay = _options$batchDelay === void 0 ? 0 : _options$batchDelay;
|
|
32
|
+
var _useState = useState(0),
|
|
33
|
+
_useState2 = _slicedToArray(_useState, 2),
|
|
34
|
+
renderedCount = _useState2[0],
|
|
35
|
+
setRenderedCount = _useState2[1];
|
|
36
|
+
var itemsRef = useRef(items);
|
|
37
|
+
var rafRef = useRef(null);
|
|
38
|
+
var timeoutRef = useRef(null);
|
|
39
|
+
useEffect(function () {
|
|
40
|
+
if (itemsRef.current !== items) {
|
|
41
|
+
itemsRef.current = items;
|
|
42
|
+
setRenderedCount(function (prev) {
|
|
43
|
+
if (items.length === 0) return 0;
|
|
44
|
+
// If new items were added (scrolling down), keep current progress
|
|
45
|
+
if (items.length > prev) return prev;
|
|
46
|
+
// If items reduced, cap to new length
|
|
47
|
+
return Math.min(prev, items.length);
|
|
48
|
+
});
|
|
49
|
+
}
|
|
50
|
+
}, [items]);
|
|
51
|
+
|
|
52
|
+
// Progressively render more items
|
|
53
|
+
useEffect(function () {
|
|
54
|
+
if (renderedCount === items.length) {
|
|
55
|
+
return;
|
|
56
|
+
}
|
|
57
|
+
var scheduleNextBatch = function scheduleNextBatch() {
|
|
58
|
+
var incrementState = function incrementState() {
|
|
59
|
+
setRenderedCount(function (prev_0) {
|
|
60
|
+
return Math.min(prev_0 + batchSize, items.length);
|
|
61
|
+
});
|
|
62
|
+
};
|
|
63
|
+
if (batchDelay > 0) {
|
|
64
|
+
timeoutRef.current = setTimeout(incrementState, batchDelay);
|
|
65
|
+
} else {
|
|
66
|
+
rafRef.current = requestAnimationFrame(incrementState);
|
|
67
|
+
}
|
|
64
68
|
};
|
|
65
|
-
|
|
69
|
+
scheduleNextBatch();
|
|
70
|
+
return function () {
|
|
71
|
+
if (rafRef.current !== null) {
|
|
72
|
+
cancelAnimationFrame(rafRef.current);
|
|
73
|
+
}
|
|
74
|
+
if (timeoutRef.current !== null) {
|
|
75
|
+
clearTimeout(timeoutRef.current);
|
|
76
|
+
}
|
|
77
|
+
};
|
|
78
|
+
}, [renderedCount, items.length, batchSize, batchDelay]);
|
|
79
|
+
return {
|
|
80
|
+
items: items.slice(0, renderedCount),
|
|
81
|
+
isComplete: renderedCount === items.length
|
|
82
|
+
};
|
|
83
|
+
};
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { c as _c } from "react-compiler-runtime";
|
|
1
2
|
// Copyright 2022 The Parca Authors
|
|
2
3
|
// Licensed under the Apache License, Version 2.0 (the "License");
|
|
3
4
|
// you may not use this file except in compliance with the License.
|
|
@@ -10,49 +11,72 @@
|
|
|
10
11
|
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
11
12
|
// See the License for the specific language governing permissions and
|
|
12
13
|
// limitations under the License.
|
|
14
|
+
|
|
13
15
|
import { useMemo } from 'react';
|
|
14
16
|
import { getLastItem } from '@parca/utilities';
|
|
15
17
|
import { FIELD_FUNCTION_FILE_NAME } from './index';
|
|
16
18
|
import { arrowToString } from './utils';
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
return list;
|
|
32
|
-
}, [mappings]);
|
|
33
|
-
return mappingsList;
|
|
34
|
-
};
|
|
35
|
-
export const useFilenamesList = (table) => {
|
|
36
|
-
if (table === null) {
|
|
37
|
-
return [];
|
|
38
|
-
}
|
|
39
|
-
const filenamesColumn = table.getChild(FIELD_FUNCTION_FILE_NAME);
|
|
40
|
-
if (filenamesColumn === null) {
|
|
41
|
-
return [];
|
|
19
|
+
var useMappingList = function useMappingList(mappings) {
|
|
20
|
+
var $ = _c(3);
|
|
21
|
+
var t0;
|
|
22
|
+
bb0: {
|
|
23
|
+
if (mappings === undefined) {
|
|
24
|
+
var t1;
|
|
25
|
+
if ($[0] === Symbol["for"]("react.memo_cache_sentinel")) {
|
|
26
|
+
t1 = [];
|
|
27
|
+
$[0] = t1;
|
|
28
|
+
} else {
|
|
29
|
+
t1 = $[0];
|
|
30
|
+
}
|
|
31
|
+
t0 = t1;
|
|
32
|
+
break bb0;
|
|
42
33
|
}
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
34
|
+
var list;
|
|
35
|
+
if ($[1] !== mappings) {
|
|
36
|
+
var _mappings$map$flat;
|
|
37
|
+
list = (_mappings$map$flat = mappings === null || mappings === void 0 ? void 0 : mappings.map(_temp).flat()) !== null && _mappings$map$flat !== void 0 ? _mappings$map$flat : [];
|
|
38
|
+
list.push("");
|
|
39
|
+
list.sort(_temp2);
|
|
40
|
+
$[1] = mappings;
|
|
41
|
+
$[2] = list;
|
|
42
|
+
} else {
|
|
43
|
+
list = $[2];
|
|
48
44
|
}
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
45
|
+
t0 = list;
|
|
46
|
+
}
|
|
47
|
+
var mappingsList = t0;
|
|
48
|
+
return mappingsList;
|
|
49
|
+
};
|
|
50
|
+
export var useFilenamesList = function useFilenamesList(table) {
|
|
51
|
+
var _filenamesColumn$data;
|
|
52
|
+
if (table === null) {
|
|
53
|
+
return [];
|
|
54
|
+
}
|
|
55
|
+
var filenamesColumn = table.getChild(FIELD_FUNCTION_FILE_NAME);
|
|
56
|
+
if (filenamesColumn === null) {
|
|
57
|
+
return [];
|
|
58
|
+
}
|
|
59
|
+
|
|
60
|
+
// Access dictionary directly instead of iterating all rows
|
|
61
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
62
|
+
var dictionary = (_filenamesColumn$data = filenamesColumn.data[0]) === null || _filenamesColumn$data === void 0 ? void 0 : _filenamesColumn$data.dictionary;
|
|
63
|
+
if (dictionary == null) {
|
|
64
|
+
return [''];
|
|
65
|
+
}
|
|
66
|
+
var filenames = Array.from(dictionary.toArray()).map(function (value) {
|
|
67
|
+
var _getLastItem;
|
|
68
|
+
var fn = arrowToString(value);
|
|
69
|
+
return fn != null ? (_getLastItem = getLastItem(fn)) !== null && _getLastItem !== void 0 ? _getLastItem : '' : '';
|
|
70
|
+
}).concat('') // Add empty string for "Everything else"
|
|
71
|
+
.sort(function (a, b) {
|
|
72
|
+
return a.localeCompare(b);
|
|
73
|
+
});
|
|
74
|
+
return filenames;
|
|
57
75
|
};
|
|
58
76
|
export default useMappingList;
|
|
77
|
+
function _temp(mapping) {
|
|
78
|
+
return getLastItem(mapping);
|
|
79
|
+
}
|
|
80
|
+
function _temp2(a, b) {
|
|
81
|
+
return a.localeCompare(b);
|
|
82
|
+
}
|
|
@@ -10,12 +10,20 @@
|
|
|
10
10
|
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
11
11
|
// See the License for the specific language governing permissions and
|
|
12
12
|
// limitations under the License.
|
|
13
|
+
|
|
13
14
|
import { EVERYTHING_ELSE } from '@parca/store';
|
|
14
15
|
import { diffColor, getLastItem } from '@parca/utilities';
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
16
|
+
var useNodeColor = function useNodeColor(_ref) {
|
|
17
|
+
var _getLastItem;
|
|
18
|
+
var isDarkMode = _ref.isDarkMode,
|
|
19
|
+
compareMode = _ref.compareMode,
|
|
20
|
+
cumulative = _ref.cumulative,
|
|
21
|
+
diff = _ref.diff,
|
|
22
|
+
colorsMap = _ref.colorsMap,
|
|
23
|
+
colorAttribute = _ref.colorAttribute;
|
|
24
|
+
if (compareMode) {
|
|
25
|
+
return diffColor(diff !== null && diff !== void 0 ? diff : 0n, cumulative, isDarkMode);
|
|
26
|
+
}
|
|
27
|
+
return colorsMap[(_getLastItem = getLastItem(colorAttribute !== null && colorAttribute !== void 0 ? colorAttribute : '')) !== null && _getLastItem !== void 0 ? _getLastItem : EVERYTHING_ELSE];
|
|
20
28
|
};
|
|
21
|
-
export default useNodeColor;
|
|
29
|
+
export default useNodeColor;
|
|
@@ -1,3 +1,10 @@
|
|
|
1
|
+
function _slicedToArray(r, e) { return _arrayWithHoles(r) || _iterableToArrayLimit(r, e) || _unsupportedIterableToArray(r, e) || _nonIterableRest(); }
|
|
2
|
+
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."); }
|
|
3
|
+
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; } }
|
|
4
|
+
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; }
|
|
5
|
+
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; } }
|
|
6
|
+
function _arrayWithHoles(r) { if (Array.isArray(r)) return r; }
|
|
7
|
+
import { c as _c } from "react-compiler-runtime";
|
|
1
8
|
// Copyright 2022 The Parca Authors
|
|
2
9
|
// Licensed under the Apache License, Version 2.0 (the "License");
|
|
3
10
|
// you may not use this file except in compliance with the License.
|
|
@@ -10,91 +17,126 @@
|
|
|
10
17
|
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
11
18
|
// See the License for the specific language governing permissions and
|
|
12
19
|
// limitations under the License.
|
|
20
|
+
|
|
13
21
|
import { useCallback, useEffect, useRef, useState } from 'react';
|
|
14
22
|
// Find the scrollable ancestor (the element with overflow: auto/scroll)
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
return current;
|
|
24
|
-
}
|
|
25
|
-
current = current.parentElement;
|
|
23
|
+
var findScrollableParent = function findScrollableParent(element) {
|
|
24
|
+
if (element === null) return undefined;
|
|
25
|
+
var current = element.parentElement;
|
|
26
|
+
while (current !== null) {
|
|
27
|
+
var style = window.getComputedStyle(current);
|
|
28
|
+
var overflowY = style.overflowY;
|
|
29
|
+
if (overflowY === 'auto' || overflowY === 'scroll') {
|
|
30
|
+
return current;
|
|
26
31
|
}
|
|
27
|
-
|
|
32
|
+
current = current.parentElement;
|
|
33
|
+
}
|
|
34
|
+
return undefined;
|
|
28
35
|
};
|
|
29
|
-
export
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
36
|
+
export var useScrollViewport = function useScrollViewport(containerRef) {
|
|
37
|
+
var $ = _c(10);
|
|
38
|
+
var t0;
|
|
39
|
+
if ($[0] === Symbol["for"]("react.memo_cache_sentinel")) {
|
|
40
|
+
t0 = {
|
|
41
|
+
scrollTop: 0,
|
|
42
|
+
scrollLeft: 0,
|
|
43
|
+
containerHeight: 0,
|
|
44
|
+
containerWidth: 0
|
|
45
|
+
};
|
|
46
|
+
$[0] = t0;
|
|
47
|
+
} else {
|
|
48
|
+
t0 = $[0];
|
|
49
|
+
}
|
|
50
|
+
var _useState = useState(t0),
|
|
51
|
+
_useState2 = _slicedToArray(_useState, 2),
|
|
52
|
+
viewport = _useState2[0],
|
|
53
|
+
setViewport = _useState2[1];
|
|
54
|
+
var throttleRef = useRef(null);
|
|
55
|
+
var t1;
|
|
56
|
+
if ($[1] !== containerRef) {
|
|
57
|
+
t1 = function t1() {
|
|
58
|
+
if (containerRef.current !== null) {
|
|
59
|
+
var container = containerRef.current;
|
|
60
|
+
var rect = container.getBoundingClientRect();
|
|
61
|
+
var containerTop = rect.top;
|
|
62
|
+
var containerBottom = rect.bottom;
|
|
63
|
+
var viewportBottom = window.innerHeight;
|
|
64
|
+
var visibleTop = Math.max(containerTop, 0);
|
|
65
|
+
var visibleBottom = Math.min(containerBottom, viewportBottom);
|
|
66
|
+
var visibleHeight = Math.max(0, visibleBottom - visibleTop);
|
|
67
|
+
var scrollOffset = Math.max(0, 0 - containerTop);
|
|
68
|
+
var newViewport = {
|
|
69
|
+
scrollTop: scrollOffset,
|
|
70
|
+
scrollLeft: container.scrollLeft,
|
|
71
|
+
containerHeight: visibleHeight,
|
|
72
|
+
containerWidth: container.clientWidth
|
|
73
|
+
};
|
|
74
|
+
setViewport(newViewport);
|
|
75
|
+
}
|
|
76
|
+
};
|
|
77
|
+
$[1] = containerRef;
|
|
78
|
+
$[2] = t1;
|
|
79
|
+
} else {
|
|
80
|
+
t1 = $[2];
|
|
81
|
+
}
|
|
82
|
+
var updateViewport = t1;
|
|
83
|
+
var t2;
|
|
84
|
+
if ($[3] !== updateViewport) {
|
|
85
|
+
t2 = function t2() {
|
|
86
|
+
if (throttleRef.current !== null) {
|
|
87
|
+
cancelAnimationFrame(throttleRef.current);
|
|
88
|
+
}
|
|
89
|
+
throttleRef.current = requestAnimationFrame(updateViewport);
|
|
90
|
+
};
|
|
91
|
+
$[3] = updateViewport;
|
|
92
|
+
$[4] = t2;
|
|
93
|
+
} else {
|
|
94
|
+
t2 = $[4];
|
|
95
|
+
}
|
|
96
|
+
var throttledUpdateViewport = t2;
|
|
97
|
+
var t3;
|
|
98
|
+
var t4;
|
|
99
|
+
if ($[5] !== containerRef || $[6] !== throttledUpdateViewport || $[7] !== updateViewport) {
|
|
100
|
+
t3 = function t3() {
|
|
101
|
+
var container_0 = containerRef.current;
|
|
102
|
+
if (container_0 === null) {
|
|
103
|
+
return;
|
|
104
|
+
}
|
|
105
|
+
var scrollableParent = findScrollableParent(container_0);
|
|
106
|
+
var resizeObserver = new ResizeObserver(function () {
|
|
107
|
+
throttledUpdateViewport();
|
|
108
|
+
});
|
|
109
|
+
scrollableParent === null || scrollableParent === void 0 || scrollableParent.addEventListener("scroll", throttledUpdateViewport, {
|
|
110
|
+
passive: true
|
|
111
|
+
});
|
|
112
|
+
container_0.addEventListener("scroll", throttledUpdateViewport, {
|
|
113
|
+
passive: true
|
|
114
|
+
});
|
|
115
|
+
window.addEventListener("scroll", throttledUpdateViewport, {
|
|
116
|
+
passive: true
|
|
117
|
+
});
|
|
118
|
+
resizeObserver.observe(container_0);
|
|
119
|
+
updateViewport();
|
|
120
|
+
return function () {
|
|
121
|
+
scrollableParent === null || scrollableParent === void 0 || scrollableParent.removeEventListener("scroll", throttledUpdateViewport);
|
|
122
|
+
container_0.removeEventListener("scroll", throttledUpdateViewport);
|
|
123
|
+
window.removeEventListener("scroll", throttledUpdateViewport);
|
|
124
|
+
resizeObserver.disconnect();
|
|
65
125
|
if (throttleRef.current !== null) {
|
|
66
|
-
|
|
126
|
+
cancelAnimationFrame(throttleRef.current);
|
|
67
127
|
}
|
|
68
|
-
|
|
69
|
-
}
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
container.addEventListener('scroll', throttledUpdateViewport, { passive: true });
|
|
84
|
-
window.addEventListener('scroll', throttledUpdateViewport, { passive: true });
|
|
85
|
-
resizeObserver.observe(container);
|
|
86
|
-
// Initialize viewport state on mount
|
|
87
|
-
updateViewport();
|
|
88
|
-
return () => {
|
|
89
|
-
// Cleanup: Remove event listeners and cancel pending animations
|
|
90
|
-
scrollableParent?.removeEventListener('scroll', throttledUpdateViewport);
|
|
91
|
-
container.removeEventListener('scroll', throttledUpdateViewport);
|
|
92
|
-
window.removeEventListener('scroll', throttledUpdateViewport);
|
|
93
|
-
resizeObserver.disconnect();
|
|
94
|
-
if (throttleRef.current !== null) {
|
|
95
|
-
cancelAnimationFrame(throttleRef.current);
|
|
96
|
-
}
|
|
97
|
-
};
|
|
98
|
-
}, [containerRef, throttledUpdateViewport, updateViewport]);
|
|
99
|
-
return viewport;
|
|
100
|
-
};
|
|
128
|
+
};
|
|
129
|
+
};
|
|
130
|
+
t4 = [containerRef, throttledUpdateViewport, updateViewport];
|
|
131
|
+
$[5] = containerRef;
|
|
132
|
+
$[6] = throttledUpdateViewport;
|
|
133
|
+
$[7] = updateViewport;
|
|
134
|
+
$[8] = t3;
|
|
135
|
+
$[9] = t4;
|
|
136
|
+
} else {
|
|
137
|
+
t3 = $[8];
|
|
138
|
+
t4 = $[9];
|
|
139
|
+
}
|
|
140
|
+
useEffect(t3, t4);
|
|
141
|
+
return viewport;
|
|
142
|
+
};
|