@qwik.dev/devtools 2.0.0-beta.43 → 2.0.0-beta.47

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (87) hide show
  1. package/dist/kit/index.d.mts +6 -0
  2. package/dist/kit/index.mjs +4 -6
  3. package/dist/plugin/codegen.mjs +1 -1
  4. package/dist/plugin/{create-hook-runtime-ChnIePeB.mjs → create-hook-runtime-CAtQC5B3.mjs} +42 -22
  5. package/dist/plugin/index.mjs +15 -7
  6. package/dist/ui/{bundle-graph-CoI___e1.json → bundle-graph-DNRrO_5W.json} +1 -1
  7. package/dist/ui/entry.extension.qwik.mjs +3 -2
  8. package/dist/ui/lib-types/ui/src/features/HookTree/hookTreeHelpers.d.ts +1 -1
  9. package/dist/ui/node_modules/.pnpm/hast-util-to-html@9.0.5/node_modules/hast-util-to-html/lib/handle/element.qwik.mjs +2 -2
  10. package/dist/ui/node_modules/.pnpm/hast-util-to-html@9.0.5/node_modules/hast-util-to-html/lib/index.qwik.mjs +1 -1
  11. package/dist/ui/node_modules/.pnpm/{property-information@7.1.0 → property-information@7.2.0}/node_modules/property-information/lib/html.qwik.mjs +11 -1
  12. package/dist/ui/node_modules/.pnpm/{property-information@7.1.0 → property-information@7.2.0}/node_modules/property-information/lib/svg.qwik.mjs +2 -0
  13. package/dist/ui/packages/devtools/kit/src/overlay-paths.qwik.mjs +4 -4
  14. package/dist/ui/packages/devtools/ui/src/components/DevtoolsButton/DevtoolsButton.qwik.mjs +21 -19
  15. package/dist/ui/packages/devtools/ui/src/components/DevtoolsContainer/DevtoolsContainer.qwik.mjs +4 -1
  16. package/dist/ui/packages/devtools/ui/src/components/DevtoolsPanel/DevtoolsPanel.qwik.mjs +91 -78
  17. package/dist/ui/packages/devtools/ui/src/components/IconButton/IconButton.qwik.mjs +3 -2
  18. package/dist/ui/packages/devtools/ui/src/components/Icons/Icons.qwik.mjs +178 -96
  19. package/dist/ui/packages/devtools/ui/src/components/InfoBanner/InfoBanner.qwik.mjs +4 -2
  20. package/dist/ui/packages/devtools/ui/src/components/Tab/Tab.qwik.mjs +5 -6
  21. package/dist/ui/packages/devtools/ui/src/components/TabContent/TabContent.qwik.mjs +1 -1
  22. package/dist/ui/packages/devtools/ui/src/components/TabTitle/TabTitle.qwik.mjs +1 -1
  23. package/dist/ui/packages/devtools/ui/src/components/ThemeToggle/QwikThemeToggle.qwik.mjs +4 -4
  24. package/dist/ui/packages/devtools/ui/src/components/ThemeToggle/theme-script.qwik.mjs +1 -1
  25. package/dist/ui/packages/devtools/ui/src/components/Tree/Tree.qwik.mjs +41 -24
  26. package/dist/ui/packages/devtools/ui/src/devtools/CommandPalette.qwik.mjs +49 -35
  27. package/dist/ui/packages/devtools/ui/src/devtools/CustomizeTabsPanel.qwik.mjs +46 -35
  28. package/dist/ui/packages/devtools/ui/src/devtools/DevtoolsContent.qwik.mjs +30 -45
  29. package/dist/ui/packages/devtools/ui/src/devtools/DevtoolsSidebar.qwik.mjs +28 -22
  30. package/dist/ui/packages/devtools/ui/src/devtools/QwikDevtools.qwik.mjs +10 -10
  31. package/dist/ui/packages/devtools/ui/src/devtools/QwikDevtoolsExtension.qwik.mjs +5 -4
  32. package/dist/ui/packages/devtools/ui/src/devtools/command-palette.qwik.mjs +24 -12
  33. package/dist/ui/packages/devtools/ui/src/devtools/page-data-source.qwik.mjs +4 -2
  34. package/dist/ui/packages/devtools/ui/src/devtools/rpc.qwik.mjs +6 -4
  35. package/dist/ui/packages/devtools/ui/src/devtools/sidebar-tabs.qwik.mjs +24 -13
  36. package/dist/ui/packages/devtools/ui/src/devtools/tabs.qwik.mjs +10 -10
  37. package/dist/ui/packages/devtools/ui/src/features/Assets/Assets.qwik.mjs +2 -2
  38. package/dist/ui/packages/devtools/ui/src/features/BuildAnalysis/BuildAnalysis.qwik.mjs +15 -13
  39. package/dist/ui/packages/devtools/ui/src/features/CodeBreak/CodeBreak.qwik.mjs +19 -21
  40. package/dist/ui/packages/devtools/ui/src/features/CodeBreak/HtmlParser.qwik.mjs +13 -11
  41. package/dist/ui/packages/devtools/ui/src/features/CodeBreak/StateParser.qwik.mjs +13 -11
  42. package/dist/ui/packages/devtools/ui/src/features/HookTree/HookTree.qwik.mjs +82 -71
  43. package/dist/ui/packages/devtools/ui/src/features/HookTree/hookTreeHelpers.qwik.mjs +7 -4
  44. package/dist/ui/packages/devtools/ui/src/features/Inspect/Inspect.qwik.mjs +12 -11
  45. package/dist/ui/packages/devtools/ui/src/features/Inspect/iframe-theme.qwik.mjs +2 -1
  46. package/dist/ui/packages/devtools/ui/src/features/Overview/Overview.qwik.mjs +20 -16
  47. package/dist/ui/packages/devtools/ui/src/features/Packages/Packages.qwik.mjs +37 -36
  48. package/dist/ui/packages/devtools/ui/src/features/Packages/components/DependencyCard/DependencyCard.qwik.mjs +38 -28
  49. package/dist/ui/packages/devtools/ui/src/features/Packages/components/DependencyOperationFeedback/DependencyOperationFeedback.qwik.mjs +4 -3
  50. package/dist/ui/packages/devtools/ui/src/features/Packages/components/DependencyToolbar/DependencyToolbar.qwik.mjs +19 -18
  51. package/dist/ui/packages/devtools/ui/src/features/Packages/components/InstalledDependencyList/InstalledDependencyList.qwik.mjs +4 -4
  52. package/dist/ui/packages/devtools/ui/src/features/Packages/components/PackageIcon/PackageIcon.qwik.mjs +4 -4
  53. package/dist/ui/packages/devtools/ui/src/features/Packages/components/PackageSearchResults/PackageSearchResults.qwik.mjs +6 -5
  54. package/dist/ui/packages/devtools/ui/src/features/Packages/components/SearchResultCard/SearchResultCard.qwik.mjs +25 -14
  55. package/dist/ui/packages/devtools/ui/src/features/Performance/Performance.qwik.mjs +24 -20
  56. package/dist/ui/packages/devtools/ui/src/features/Performance/components/ComponentCard.qwik.mjs +3 -1
  57. package/dist/ui/packages/devtools/ui/src/features/Performance/components/HookDetailsPanel.qwik.mjs +10 -6
  58. package/dist/ui/packages/devtools/ui/src/features/Performance/components/PerformanceOverview.qwik.mjs +11 -9
  59. package/dist/ui/packages/devtools/ui/src/features/Performance/components/StatCard.qwik.mjs +2 -2
  60. package/dist/ui/packages/devtools/ui/src/features/Performance/computePerfViewModel.qwik.mjs +4 -2
  61. package/dist/ui/packages/devtools/ui/src/features/Preloads/Preloads.qwik.mjs +94 -82
  62. package/dist/ui/packages/devtools/ui/src/features/RenderTree/RenderTree.qwik.mjs +36 -32
  63. package/dist/ui/packages/devtools/ui/src/features/RenderTree/components/HighlightedCodeList.qwik.mjs +2 -1
  64. package/dist/ui/packages/devtools/ui/src/features/RenderTree/components/HookFiltersCard.qwik.mjs +17 -18
  65. package/dist/ui/packages/devtools/ui/src/features/RenderTree/components/RenderTreeTabs.qwik.mjs +4 -2
  66. package/dist/ui/packages/devtools/ui/src/features/RenderTree/components/StateTreeNodeLabel.qwik.mjs +8 -7
  67. package/dist/ui/packages/devtools/ui/src/features/Routes/Routes.qwik.mjs +10 -6
  68. package/dist/ui/q-manifest.json +187 -187
  69. package/package.json +8 -8
  70. /package/dist/ui/node_modules/.pnpm/{debug@4.4.3_supports-color@10.2.2 → debug@4.4.3_supports-color@11.0.0}/node_modules/debug/src/browser.qwik.mjs +0 -0
  71. /package/dist/ui/node_modules/.pnpm/{debug@4.4.3_supports-color@10.2.2 → debug@4.4.3_supports-color@11.0.0}/node_modules/debug/src/common.qwik.mjs +0 -0
  72. /package/dist/ui/node_modules/.pnpm/{property-information@7.1.0 → property-information@7.2.0}/node_modules/property-information/index.qwik.mjs +0 -0
  73. /package/dist/ui/node_modules/.pnpm/{property-information@7.1.0 → property-information@7.2.0}/node_modules/property-information/lib/aria.qwik.mjs +0 -0
  74. /package/dist/ui/node_modules/.pnpm/{property-information@7.1.0 → property-information@7.2.0}/node_modules/property-information/lib/find.qwik.mjs +0 -0
  75. /package/dist/ui/node_modules/.pnpm/{property-information@7.1.0 → property-information@7.2.0}/node_modules/property-information/lib/normalize.qwik.mjs +0 -0
  76. /package/dist/ui/node_modules/.pnpm/{property-information@7.1.0 → property-information@7.2.0}/node_modules/property-information/lib/util/case-insensitive-transform.qwik.mjs +0 -0
  77. /package/dist/ui/node_modules/.pnpm/{property-information@7.1.0 → property-information@7.2.0}/node_modules/property-information/lib/util/case-sensitive-transform.qwik.mjs +0 -0
  78. /package/dist/ui/node_modules/.pnpm/{property-information@7.1.0 → property-information@7.2.0}/node_modules/property-information/lib/util/create.qwik.mjs +0 -0
  79. /package/dist/ui/node_modules/.pnpm/{property-information@7.1.0 → property-information@7.2.0}/node_modules/property-information/lib/util/defined-info.qwik.mjs +0 -0
  80. /package/dist/ui/node_modules/.pnpm/{property-information@7.1.0 → property-information@7.2.0}/node_modules/property-information/lib/util/info.qwik.mjs +0 -0
  81. /package/dist/ui/node_modules/.pnpm/{property-information@7.1.0 → property-information@7.2.0}/node_modules/property-information/lib/util/merge.qwik.mjs +0 -0
  82. /package/dist/ui/node_modules/.pnpm/{property-information@7.1.0 → property-information@7.2.0}/node_modules/property-information/lib/util/schema.qwik.mjs +0 -0
  83. /package/dist/ui/node_modules/.pnpm/{property-information@7.1.0 → property-information@7.2.0}/node_modules/property-information/lib/util/types.qwik.mjs +0 -0
  84. /package/dist/ui/node_modules/.pnpm/{property-information@7.1.0 → property-information@7.2.0}/node_modules/property-information/lib/xlink.qwik.mjs +0 -0
  85. /package/dist/ui/node_modules/.pnpm/{property-information@7.1.0 → property-information@7.2.0}/node_modules/property-information/lib/xml.qwik.mjs +0 -0
  86. /package/dist/ui/node_modules/.pnpm/{property-information@7.1.0 → property-information@7.2.0}/node_modules/property-information/lib/xmlns.qwik.mjs +0 -0
  87. /package/dist/ui/node_modules/.pnpm/{vite-hot-client@2.1.0_vite@8.2.1_@types_node@24.10.0_esbuild@0.28.2_jiti@2.6.1_terser@5.46.0_tsx@4.21.0_yaml@2.8.3_ → vite-hot-client@2.2.0_vite@8.2.1_@types_node@25.6.0_esbuild@0.28.2_jiti@2.7.0_terser@5.46.0_tsx@4.21.0_yaml@2.9.0_}/node_modules/vite-hot-client/dist/index.qwik.mjs +0 -0
@@ -1,32 +1,43 @@
1
- import { _fnSignal, _jsxSorted, _wrapProp, componentQrl, inlinedQrl } from "@qwik.dev/core";
1
+ import { _capturesObj, _fnSignal, _jsxSorted, _wrapProp, componentQrl, inlinedQrl } from "@qwik.dev/core";
2
2
  var _hf0 = (p0) => p0.result.npmUrl;
3
+ var _hf0_str = "p0.result.npmUrl";
3
4
  var _hf1 = (p0) => p0.result.name;
5
+ var _hf1_str = "p0.result.name";
4
6
  var _hf2 = (p0) => p0.result.latestVersion;
7
+ var _hf2_str = "p0.result.latestVersion";
5
8
  var _hf3 = (p0) => p0.result.installedVersion;
9
+ var _hf3_str = "p0.result.installedVersion";
6
10
  var _hf4 = (p0) => p0.result.description || "No description available";
11
+ var _hf4_str = "p0.result.description||\"No description available\"";
7
12
  var _hf5 = (p0, p1) => p1.result.isInstalled || p0;
13
+ var _hf5_str = "p1.result.isInstalled||p0";
8
14
  var _hf6 = (p0, p1) => p1.result.isInstalled ? "Installed" : p0 ? "Installing..." : "Install";
15
+ var _hf6_str = "p1.result.isInstalled?\"Installed\":p0?\"Installing...\":\"Install\"";
9
16
  var SearchResultCard = /*#__PURE__*/ componentQrl(/*#__PURE__*/ inlinedQrl((props) => {
10
17
  const isInstalling = props.activeOperationKey === `install:${props.result.name}`;
11
18
  return /*#__PURE__*/ _jsxSorted("div", null, { class: "border-glass-border bg-card-item-bg rounded-xl border p-4" }, /*#__PURE__*/ _jsxSorted("div", null, { class: "flex flex-col gap-3" }, [/*#__PURE__*/ _jsxSorted("div", null, { class: "flex items-start justify-between gap-3" }, /*#__PURE__*/ _jsxSorted("div", null, { class: "min-w-0" }, [/*#__PURE__*/ _jsxSorted("div", null, { class: "flex flex-wrap items-center gap-2" }, [
12
- /*#__PURE__*/ _jsxSorted("a", { href: _fnSignal(_hf0, [props]) }, {
19
+ /*#__PURE__*/ _jsxSorted("a", { href: _fnSignal(_hf0, [props], _hf0_str) }, {
13
20
  target: "_blank",
14
21
  class: "text-foreground hover:text-primary truncate text-sm font-semibold"
15
- }, _fnSignal(_hf1, [props]), 1, null),
16
- /*#__PURE__*/ _jsxSorted("span", null, { class: "bg-primary/10 text-primary rounded-md px-2 py-0.5 text-xs" }, ["v", _fnSignal(_hf2, [props])], 1, null),
17
- props.result.isInstalled ? /*#__PURE__*/ _jsxSorted("span", null, { class: "rounded-md border border-emerald-500/20 bg-emerald-500/10 px-2 py-0.5 text-xs text-emerald-300" }, ["Installed ", _fnSignal(_hf3, [props])], 1, "LR_0") : null
18
- ], 1, null), /*#__PURE__*/ _jsxSorted("p", null, { class: "text-muted-foreground mt-2 line-clamp-2 text-sm" }, _fnSignal(_hf4, [props]), 1, null)], 1, null), 1, null), /*#__PURE__*/ _jsxSorted("div", null, { class: "flex flex-wrap items-center justify-between gap-3" }, [/*#__PURE__*/ _jsxSorted("select", {
19
- disabled: _fnSignal(_hf5, [isInstalling, props]),
20
- "q-e:change": /*#__PURE__*/ inlinedQrl((_, target, props) => props.onTypeChange$(props.result.name, target.value), "SearchResultCard_component_div_div_div_select_q_e_change_157XuaUcsW4").m(),
21
- "q:p": props,
22
+ }, _fnSignal(_hf1, [props], _hf1_str), 1, null),
23
+ /*#__PURE__*/ _jsxSorted("span", null, { class: "bg-primary/10 text-primary rounded-md px-2 py-0.5 text-xs" }, ["v", _fnSignal(_hf2, [props], _hf2_str)], 1, null),
24
+ props.result.isInstalled ? /*#__PURE__*/ _jsxSorted("span", null, { class: "rounded-md border border-emerald-500/20 bg-emerald-500/10 px-2 py-0.5 text-xs text-emerald-300" }, ["Installed ", _fnSignal(_hf3, [props], _hf3_str)], 1, "04_0") : null
25
+ ], 1, null), /*#__PURE__*/ _jsxSorted("p", null, { class: "text-muted-foreground mt-2 line-clamp-2 text-sm" }, _fnSignal(_hf4, [props], _hf4_str), 1, null)], 1, null), 1, null), /*#__PURE__*/ _jsxSorted("div", null, { class: "flex flex-wrap items-center justify-between gap-3" }, [/*#__PURE__*/ _jsxSorted("select", {
26
+ disabled: _fnSignal(_hf5, [isInstalling, props], _hf5_str),
22
27
  value: _wrapProp(props, "selectedType")
23
- }, { class: "border-border bg-background/60 rounded-lg border px-2 py-1.5 text-xs" }, [/*#__PURE__*/ _jsxSorted("option", null, { value: "devDependencies" }, "devDependencies", 3, null), /*#__PURE__*/ _jsxSorted("option", null, { value: "dependencies" }, "dependencies", 3, null)], 6, null), /*#__PURE__*/ _jsxSorted("button", {
24
- disabled: _fnSignal(_hf5, [isInstalling, props]),
25
- "q-e:click": /*#__PURE__*/ inlinedQrl((_, _1, props) => props.onInstall$(props.result.name, props.selectedType), "SearchResultCard_component_div_div_div_button_q_e_click_0DlfMgOZNRQ").m(),
26
- "q:p": props
27
28
  }, {
29
+ "q-e:change": /*#__PURE__*/ inlinedQrl((_, target) => {
30
+ let props = _capturesObj._[0];
31
+ return props.onTypeChange$(props.result.name, target.value);
32
+ }, "SearchResultCard_component_div_div_div_select_q_e_change_157XuaUcsW4", [props]),
33
+ class: "border-border bg-background/60 rounded-lg border px-2 py-1.5 text-xs"
34
+ }, [/*#__PURE__*/ _jsxSorted("option", null, { value: "devDependencies" }, "devDependencies", 3, null), /*#__PURE__*/ _jsxSorted("option", null, { value: "dependencies" }, "dependencies", 3, null)], 3, null), /*#__PURE__*/ _jsxSorted("button", { disabled: _fnSignal(_hf5, [isInstalling, props], _hf5_str) }, {
28
35
  type: "button",
36
+ "q-e:click": /*#__PURE__*/ inlinedQrl(() => {
37
+ let props = _capturesObj._[0];
38
+ return props.onInstall$(props.result.name, props.selectedType);
39
+ }, "SearchResultCard_component_div_div_div_button_q_e_click_0DlfMgOZNRQ", [props]),
29
40
  class: "bg-primary/10 hover:bg-primary/20 text-primary rounded-lg px-3 py-1.5 text-xs font-medium transition-colors disabled:cursor-not-allowed disabled:opacity-50"
30
- }, _fnSignal(_hf6, [isInstalling, props]), 4, null)], 1, null)], 1, null), 1, "LR_1");
41
+ }, _fnSignal(_hf6, [isInstalling, props], _hf6_str), 1, null)], 1, null)], 1, null), 1, "04_1");
31
42
  }, "SearchResultCard_component_3Z58OZETbL0"));
32
43
  export { SearchResultCard };
@@ -3,24 +3,28 @@ import { computePerfViewModel } from "./computePerfViewModel.qwik.mjs";
3
3
  import { ComponentCard } from "./components/ComponentCard.qwik.mjs";
4
4
  import { HookDetailsPanel } from "./components/HookDetailsPanel.qwik.mjs";
5
5
  import { PerformanceOverview } from "./components/PerformanceOverview.qwik.mjs";
6
- import { _captures, _fnSignal, _jsxSorted, _wrapProp, componentQrl, inlinedQrl, useComputedQrl, useSignal, useTaskQrl, useVisibleTaskQrl } from "@qwik.dev/core";
6
+ import { _capturesObj, _fnSignal, _jsxSorted, _wrapProp, componentQrl, inlinedQrl, useComputedQrl, useSignal, useTaskQrl, useVisibleTaskQrl } from "@qwik.dev/core";
7
7
  var _hf0 = (p0) => p0.value.overview;
8
+ var _hf0_str = "p0.value.overview";
8
9
  var _hf1 = (p0) => p0.value.components.length;
10
+ var _hf1_str = "p0.value.components.length";
9
11
  var _hf2 = (p0, p1) => p1.value === p0.componentName;
12
+ var _hf2_str = "p1.value===p0.componentName";
10
13
  var _hf3 = (p0) => p0.value.length;
14
+ var _hf3_str = "p0.value.length";
11
15
  var Performance = /*#__PURE__*/ componentQrl(/*#__PURE__*/ inlinedQrl((_rawProps) => {
12
16
  const perf = useSignal(null);
13
17
  const selectedComponent = useSignal(null);
14
18
  const renderEvents = useSignal([]);
15
19
  useTaskQrl(/*#__PURE__*/ inlinedQrl(async () => {
16
- const perf = _captures[0];
20
+ let perf = _capturesObj._[0];
17
21
  perf.value = await getPageDataSource().readPerfData() ?? {
18
22
  ssr: [],
19
23
  csr: []
20
24
  };
21
25
  }, "Performance_component_useTask_WHiyTVV6c8g", [perf]));
22
26
  useVisibleTaskQrl(/*#__PURE__*/ inlinedQrl(async ({ cleanup }) => {
23
- const renderEvents = _captures[0];
27
+ let renderEvents = _capturesObj._[0];
24
28
  const source = getPageDataSource();
25
29
  const data = await source.readPerfData();
26
30
  const all = [...data?.ssr || [], ...data?.csr || []];
@@ -36,29 +40,29 @@ var Performance = /*#__PURE__*/ componentQrl(/*#__PURE__*/ inlinedQrl((_rawProps
36
40
  if (unsub) cleanup(unsub);
37
41
  }, "Performance_component_useVisibleTask_jEYvQu47TE8", [renderEvents]));
38
42
  const vm = useComputedQrl(/*#__PURE__*/ inlinedQrl(() => {
39
- const perf = _captures[0];
43
+ let perf = _capturesObj._[0];
40
44
  return computePerfViewModel(perf.value);
41
45
  }, "Performance_component_vm_useComputed_go9mqCd7Rk0", [perf]));
42
46
  const selectedVm = useComputedQrl(/*#__PURE__*/ inlinedQrl(() => {
43
- const selectedComponent = _captures[0], vm = _captures[1];
47
+ let selectedComponent = _capturesObj._[0], vm = _capturesObj._[1];
44
48
  const name = selectedComponent.value;
45
49
  if (!name) return null;
46
50
  return vm.value.components.find((c) => c.componentName === name) ?? null;
47
51
  }, "Performance_component_selectedVm_useComputed_9gMJskA6xTk", [selectedComponent, vm]));
48
52
  const onSelect = /*#__PURE__*/ inlinedQrl((name) => {
49
- const selectedComponent = _captures[0];
53
+ let selectedComponent = _capturesObj._[0];
50
54
  selectedComponent.value = name;
51
55
  }, "Performance_component_onSelect_iR9qDY0SnqQ", [selectedComponent]);
52
56
  const clearSelect = /*#__PURE__*/ inlinedQrl(() => {
53
- const selectedComponent = _captures[0];
57
+ let selectedComponent = _capturesObj._[0];
54
58
  selectedComponent.value = null;
55
59
  }, "Performance_component_clearSelect_r3DeYHRX6Wc", [selectedComponent]);
56
60
  const clearRenderEvents = /*#__PURE__*/ inlinedQrl(() => {
57
- const renderEvents = _captures[0];
61
+ let renderEvents = _capturesObj._[0];
58
62
  renderEvents.value = [];
59
63
  }, "Performance_component_clearRenderEvents_HK009X9J0PU", [renderEvents]);
60
64
  useTaskQrl(/*#__PURE__*/ inlinedQrl(({ track }) => {
61
- const _rawProps = _captures[0], renderEvents = _captures[1], selectedComponent = _captures[2];
65
+ let _rawProps = _capturesObj._[0], renderEvents = _capturesObj._[1], selectedComponent = _capturesObj._[2];
62
66
  if (!track(() => _rawProps.state.clearPerformanceRequested)) return;
63
67
  renderEvents.value = [];
64
68
  selectedComponent.value = null;
@@ -70,32 +74,32 @@ var Performance = /*#__PURE__*/ componentQrl(/*#__PURE__*/ inlinedQrl((_rawProps
70
74
  ]));
71
75
  const hasData = (perf.value?.ssr?.length ?? 0) > 0 || (perf.value?.csr?.length ?? 0) > 0;
72
76
  const hasRenderEvents = renderEvents.value.length > 0;
73
- if (!hasData && !hasRenderEvents) return /*#__PURE__*/ _jsxSorted("div", null, { class: "h-full w-full flex-1 overflow-hidden" }, /*#__PURE__*/ _jsxSorted("div", null, { class: "border-border bg-card-item-bg flex h-full items-center justify-center rounded-xl border p-8" }, /*#__PURE__*/ _jsxSorted("div", null, { class: "text-muted-foreground text-center text-sm" }, ["No performance data found.", /*#__PURE__*/ _jsxSorted("div", null, { class: "mt-1 text-xs" }, "Ensure instrumentation is enabled and interact with the app, then reopen this tab.", 3, null)], 3, null), 3, null), 3, "pZ_0");
77
+ if (!hasData && !hasRenderEvents) return /*#__PURE__*/ _jsxSorted("div", null, { class: "h-full w-full flex-1 overflow-hidden" }, /*#__PURE__*/ _jsxSorted("div", null, { class: "border-border bg-card-item-bg flex h-full items-center justify-center rounded-xl border p-8" }, /*#__PURE__*/ _jsxSorted("div", null, { class: "text-muted-foreground text-center text-sm" }, ["No performance data found.", /*#__PURE__*/ _jsxSorted("div", null, { class: "mt-1 text-xs" }, "Ensure instrumentation is enabled and interact with the app, then reopen this tab.", 3, null)], 3, null), 3, null), 3, "nz_0");
74
78
  return /*#__PURE__*/ _jsxSorted("div", null, { class: "h-full w-full flex-1 overflow-y-auto" }, /*#__PURE__*/ _jsxSorted("div", null, { class: "flex min-h-0 flex-col gap-4" }, [
75
- hasData && /*#__PURE__*/ _jsxSorted(PerformanceOverview, null, { overview: _fnSignal(_hf0, [vm]) }, null, 3, "pZ_1"),
79
+ hasData && /*#__PURE__*/ _jsxSorted(PerformanceOverview, null, { overview: _fnSignal(_hf0, [vm], _hf0_str) }, null, 3, "nz_1"),
76
80
  hasData && /*#__PURE__*/ _jsxSorted("div", null, { class: "border-glass-border bg-card-item-bg flex min-h-0 overflow-hidden rounded-2xl border" }, [
77
81
  /*#__PURE__*/ _jsxSorted("div", null, { class: "min-h-0 flex-1 overflow-y-auto p-4" }, [/*#__PURE__*/ _jsxSorted("div", null, { class: "mb-3 flex items-center justify-between" }, /*#__PURE__*/ _jsxSorted("div", null, null, [/*#__PURE__*/ _jsxSorted("div", null, { class: "text-lg font-semibold" }, "Components", 3, null), /*#__PURE__*/ _jsxSorted("div", null, { class: "text-muted-foreground text-xs" }, [
78
82
  "CSR only • ",
79
- _fnSignal(_hf1, [vm]),
83
+ _fnSignal(_hf1, [vm], _hf1_str),
80
84
  " total"
81
85
  ], 3, null)], 3, null), 3, null), /*#__PURE__*/ _jsxSorted("div", null, { class: "grid grid-cols-1 gap-4 md:grid-cols-2" }, vm.value.components.map((c) => /*#__PURE__*/ _jsxSorted(ComponentCard, {
82
86
  component: c,
83
87
  onClick$: /*#__PURE__*/ inlinedQrl(() => {
84
- const c = _captures[0], onSelect = _captures[1];
88
+ let c = _capturesObj._[0], onSelect = _capturesObj._[1];
85
89
  return onSelect(c.componentName);
86
90
  }, "Performance_component_div_div_div_div_div_ComponentCard_onClick_oHPGixzaMYc", [c, onSelect]),
87
- selected: _fnSignal(_hf2, [c, selectedComponent])
91
+ selected: _fnSignal(_hf2, [c, selectedComponent], _hf2_str)
88
92
  }, null, null, 2, c.componentName)), 1, null)], 1, null),
89
93
  /*#__PURE__*/ _jsxSorted("div", null, { class: "border-glass-border border-l" }, null, 3, null),
90
94
  /*#__PURE__*/ _jsxSorted("div", null, { class: "flex w-[420px] min-w-[320px] flex-col overflow-hidden" }, selectedVm.value ? /*#__PURE__*/ _jsxSorted(HookDetailsPanel, null, {
91
95
  component: _wrapProp(selectedVm),
92
96
  onClose$: clearSelect
93
- }, null, 3, "pZ_2") : /*#__PURE__*/ _jsxSorted("div", null, { class: "flex h-full items-center justify-center p-8" }, /*#__PURE__*/ _jsxSorted("div", null, { class: "text-muted-foreground text-center text-sm" }, "Select a component to view hook details.", 3, null), 3, "pZ_3"), 1, null)
94
- ], 1, "pZ_4"),
95
- /*#__PURE__*/ _jsxSorted("div", null, { class: "border-glass-border bg-card-item-bg rounded-2xl border p-4" }, [/*#__PURE__*/ _jsxSorted("div", null, { class: "mb-3 flex items-center justify-between" }, [/*#__PURE__*/ _jsxSorted("div", null, null, [/*#__PURE__*/ _jsxSorted("div", null, { class: "text-lg font-semibold" }, "Live Renders", 3, null), /*#__PURE__*/ _jsxSorted("div", null, { class: "text-muted-foreground text-xs" }, [_fnSignal(_hf3, [renderEvents]), " events captured"], 3, null)], 3, null), hasRenderEvents && /*#__PURE__*/ _jsxSorted("button", null, {
97
+ }, null, 3, "nz_2") : /*#__PURE__*/ _jsxSorted("div", null, { class: "flex h-full items-center justify-center p-8" }, /*#__PURE__*/ _jsxSorted("div", null, { class: "text-muted-foreground text-center text-sm" }, "Select a component to view hook details.", 3, null), 3, "nz_3"), 1, null)
98
+ ], 1, "nz_4"),
99
+ /*#__PURE__*/ _jsxSorted("div", null, { class: "border-glass-border bg-card-item-bg rounded-2xl border p-4" }, [/*#__PURE__*/ _jsxSorted("div", null, { class: "mb-3 flex items-center justify-between" }, [/*#__PURE__*/ _jsxSorted("div", null, null, [/*#__PURE__*/ _jsxSorted("div", null, { class: "text-lg font-semibold" }, "Live Renders", 3, null), /*#__PURE__*/ _jsxSorted("div", null, { class: "text-muted-foreground text-xs" }, [_fnSignal(_hf3, [renderEvents], _hf3_str), " events captured"], 3, null)], 3, null), hasRenderEvents && /*#__PURE__*/ _jsxSorted("button", null, {
96
100
  class: "text-muted-foreground hover:text-foreground rounded px-2 py-1 text-xs transition-colors",
97
101
  "q-e:click": clearRenderEvents
98
- }, "Clear", 3, "pZ_5")], 1, null), !hasRenderEvents ? /*#__PURE__*/ _jsxSorted("div", null, { class: "text-muted-foreground py-6 text-center text-sm" }, "No renders captured yet. Interact with the app to trigger component renders.", 3, "pZ_6") : /*#__PURE__*/ _jsxSorted("div", null, { class: "max-h-[400px] overflow-y-auto" }, /*#__PURE__*/ _jsxSorted("table", null, { class: "w-full text-sm" }, [/*#__PURE__*/ _jsxSorted("thead", null, null, /*#__PURE__*/ _jsxSorted("tr", null, { class: "text-muted-foreground border-glass-border border-b text-left text-xs" }, [
102
+ }, "Clear", 3, "nz_5")], 1, null), !hasRenderEvents ? /*#__PURE__*/ _jsxSorted("div", null, { class: "text-muted-foreground py-6 text-center text-sm" }, "No renders captured yet. Interact with the app to trigger component renders.", 3, "nz_6") : /*#__PURE__*/ _jsxSorted("div", null, { class: "max-h-[400px] overflow-y-auto" }, /*#__PURE__*/ _jsxSorted("table", null, { class: "w-full text-sm" }, [/*#__PURE__*/ _jsxSorted("thead", null, null, /*#__PURE__*/ _jsxSorted("tr", null, { class: "text-muted-foreground border-glass-border border-b text-left text-xs" }, [
99
103
  /*#__PURE__*/ _jsxSorted("th", null, { class: "py-1.5 pr-3 font-medium" }, "Time", 3, null),
100
104
  /*#__PURE__*/ _jsxSorted("th", null, { class: "py-1.5 pr-3 font-medium" }, "Component", 3, null),
101
105
  /*#__PURE__*/ _jsxSorted("th", null, { class: "py-1.5 pr-3 text-right font-medium" }, "Duration", 3, null),
@@ -105,7 +109,7 @@ var Performance = /*#__PURE__*/ componentQrl(/*#__PURE__*/ inlinedQrl((_rawProps
105
109
  /*#__PURE__*/ _jsxSorted("td", null, { class: "text-primary/80 py-1.5 pr-3 font-mono" }, _wrapProp(evt, "component"), 1, null),
106
110
  /*#__PURE__*/ _jsxSorted("td", null, { class: "py-1.5 pr-3 text-right font-mono" }, evt.duration > 0 ? `${evt.duration.toFixed(1)}ms` : "-", 1, null),
107
111
  /*#__PURE__*/ _jsxSorted("td", null, { class: "py-1.5" }, /*#__PURE__*/ _jsxSorted("span", { class: ["rounded-full px-2 py-0.5 text-xs font-medium", evt.phase === "ssr" ? "bg-blue-500/10 text-blue-400" : "bg-green-500/10 text-green-400"].join(" ") }, null, _wrapProp(evt, "phase"), 1, null), 1, null)
108
- ], 1, i)), 1, null)], 1, null), 1, "pZ_7")], 1, null)
109
- ], 1, null), 1, "pZ_8");
112
+ ], 1, i)), 1, null)], 1, null), 1, "nz_7")], 1, null)
113
+ ], 1, null), 1, "nz_8");
110
114
  }, "Performance_component_srUJ38wM5RE"));
111
115
  export { Performance };
@@ -1,11 +1,13 @@
1
1
  import { formatMs } from "../utils/formatMs.qwik.mjs";
2
2
  import { _fnSignal, _jsxSorted, componentQrl, inlinedQrl } from "@qwik.dev/core";
3
3
  var _hf0 = (p0) => p0.component.componentName;
4
+ var _hf0_str = "p0.component.componentName";
4
5
  var _hf1 = (p0) => typeof p0.component.ssr?.ssrCount === "number" ? p0.component.ssr.ssrCount : "-";
6
+ var _hf1_str = "typeof p0.component.ssr?.ssrCount===\"number\"?p0.component.ssr.ssrCount:\"-\"";
5
7
  var ComponentCard = /*#__PURE__*/ componentQrl(/*#__PURE__*/ inlinedQrl((_rawProps) => {
6
8
  return /*#__PURE__*/ _jsxSorted("button", {
7
9
  class: ["border-border bg-card-item-bg hover:bg-card-item-hover-bg w-full rounded-xl border p-4 text-left transition-all duration-200 hover:-translate-y-0.5", _rawProps.selected ? "ring-primary-active ring-2" : ""].join(" "),
8
10
  "q-e:click": _rawProps.onClick$
9
- }, null, /*#__PURE__*/ _jsxSorted("div", null, { class: "flex items-start justify-between gap-4" }, [/*#__PURE__*/ _jsxSorted("div", null, { class: "min-w-0 flex-1" }, [/*#__PURE__*/ _jsxSorted("div", null, { class: "truncate text-base font-semibold" }, _fnSignal(_hf0, [_rawProps]), 1, null), /*#__PURE__*/ _jsxSorted("div", null, { class: "text-muted-foreground mt-1 text-xs" }, ["Avg: ", formatMs(_rawProps.component.avgTime)], 1, null)], 1, null), /*#__PURE__*/ _jsxSorted("div", null, { class: "shrink-0 text-right" }, [/*#__PURE__*/ _jsxSorted("div", null, { class: "text-primary text-lg font-semibold" }, formatMs(_rawProps.component.totalTime), 1, null), /*#__PURE__*/ _jsxSorted("div", null, { class: "text-muted-foreground text-xs" }, ["SSR: ", _fnSignal(_hf1, [_rawProps])], 1, null)], 1, null)], 1, null), 0, _rawProps.component.componentName);
11
+ }, null, /*#__PURE__*/ _jsxSorted("div", null, { class: "flex items-start justify-between gap-4" }, [/*#__PURE__*/ _jsxSorted("div", null, { class: "min-w-0 flex-1" }, [/*#__PURE__*/ _jsxSorted("div", null, { class: "truncate text-base font-semibold" }, _fnSignal(_hf0, [_rawProps], _hf0_str), 1, null), /*#__PURE__*/ _jsxSorted("div", null, { class: "text-muted-foreground mt-1 text-xs" }, ["Avg: ", formatMs(_rawProps.component.avgTime)], 1, null)], 1, null), /*#__PURE__*/ _jsxSorted("div", null, { class: "shrink-0 text-right" }, [/*#__PURE__*/ _jsxSorted("div", null, { class: "text-primary text-lg font-semibold" }, formatMs(_rawProps.component.totalTime), 1, null), /*#__PURE__*/ _jsxSorted("div", null, { class: "text-muted-foreground text-xs" }, ["SSR: ", _fnSignal(_hf1, [_rawProps], _hf1_str)], 1, null)], 1, null)], 1, null), 0, _rawProps.component.componentName);
10
12
  }, "ComponentCard_component_n3qw8GM0NvQ"));
11
13
  export { ComponentCard };
@@ -3,21 +3,25 @@ import { formatMs } from "../utils/formatMs.qwik.mjs";
3
3
  import { _fnSignal, _jsxSorted, componentQrl, inlinedQrl } from "@qwik.dev/core";
4
4
  import { Fragment } from "@qwik.dev/core/jsx-runtime";
5
5
  var _hf0 = (p0) => p0.row.eventName;
6
+ var _hf0_str = "p0.row.eventName";
6
7
  var _hf1 = (p0) => p0.row.calls;
8
+ var _hf1_str = "p0.row.calls";
7
9
  var _hf2 = (p0) => p0.component.componentName;
10
+ var _hf2_str = "p0.component.componentName";
8
11
  var _hf3 = (p0) => p0.component.calls;
12
+ var _hf3_str = "p0.component.calls";
9
13
  var HookRow = /*#__PURE__*/ componentQrl(/*#__PURE__*/ inlinedQrl((_rawProps) => /*#__PURE__*/ _jsxSorted("div", null, { class: "grid grid-cols-3 px-3 py-2 text-sm" }, [
10
- /*#__PURE__*/ _jsxSorted("div", null, { class: "truncate" }, _fnSignal(_hf0, [_rawProps]), 1, null),
14
+ /*#__PURE__*/ _jsxSorted("div", null, { class: "truncate" }, _fnSignal(_hf0, [_rawProps], _hf0_str), 1, null),
11
15
  /*#__PURE__*/ _jsxSorted("div", null, { class: "text-right" }, formatMs(_rawProps.row.time), 1, null),
12
- /*#__PURE__*/ _jsxSorted("div", null, { class: "text-right" }, _fnSignal(_hf1, [_rawProps]), 1, null)
13
- ], 1, "Tx_0"), "HookRow_component_lEGVvl0yq4c"));
16
+ /*#__PURE__*/ _jsxSorted("div", null, { class: "text-right" }, _fnSignal(_hf1, [_rawProps], _hf1_str), 1, null)
17
+ ], 1, "M3_0"), "HookRow_component_lEGVvl0yq4c"));
14
18
  var HookDetailsPanel = /*#__PURE__*/ componentQrl(/*#__PURE__*/ inlinedQrl((_rawProps) => {
15
19
  const rows = computeEventRows(_rawProps.component.csrItems);
16
- return /*#__PURE__*/ _jsxSorted(Fragment, null, null, [/*#__PURE__*/ _jsxSorted("div", null, { class: "border-glass-border flex items-center justify-between border-b p-4" }, [/*#__PURE__*/ _jsxSorted("div", null, { class: "min-w-0" }, [/*#__PURE__*/ _jsxSorted("div", null, { class: "truncate text-base font-semibold" }, [_fnSignal(_hf2, [_rawProps]), " Hook Details"], 1, null), /*#__PURE__*/ _jsxSorted("div", null, { class: "text-muted-foreground mt-1 text-xs" }, [
20
+ return /*#__PURE__*/ _jsxSorted(Fragment, null, null, [/*#__PURE__*/ _jsxSorted("div", null, { class: "border-glass-border flex items-center justify-between border-b p-4" }, [/*#__PURE__*/ _jsxSorted("div", null, { class: "min-w-0" }, [/*#__PURE__*/ _jsxSorted("div", null, { class: "truncate text-base font-semibold" }, [_fnSignal(_hf2, [_rawProps], _hf2_str), " Hook Details"], 1, null), /*#__PURE__*/ _jsxSorted("div", null, { class: "text-muted-foreground mt-1 text-xs" }, [
17
21
  "Total: ",
18
22
  formatMs(_rawProps.component.totalTime),
19
23
  " • ",
20
- _fnSignal(_hf3, [_rawProps]),
24
+ _fnSignal(_hf3, [_rawProps], _hf3_str),
21
25
  " calls"
22
26
  ], 1, null)], 1, null), /*#__PURE__*/ _jsxSorted("button", { "q-e:click": _rawProps.onClose$ }, {
23
27
  "aria-label": "close",
@@ -26,6 +30,6 @@ var HookDetailsPanel = /*#__PURE__*/ componentQrl(/*#__PURE__*/ inlinedQrl((_raw
26
30
  /*#__PURE__*/ _jsxSorted("div", null, { class: "text-muted-foreground" }, "HOOK NAME", 3, null),
27
31
  /*#__PURE__*/ _jsxSorted("div", null, { class: "text-muted-foreground text-right" }, "TIME", 3, null),
28
32
  /*#__PURE__*/ _jsxSorted("div", null, { class: "text-muted-foreground text-right" }, "CALLS", 3, null)
29
- ], 3, null), /*#__PURE__*/ _jsxSorted("div", null, { class: "divide-glass-border divide-y" }, [rows.map((row) => /*#__PURE__*/ _jsxSorted(HookRow, { row }, null, null, 3, row.eventName)), rows.length === 0 && /*#__PURE__*/ _jsxSorted("div", null, { class: "text-muted-foreground px-3 py-4 text-center text-sm" }, "No CSR records for this component.", 3, "Tx_1")], 1, null)], 1, null), 1, null)], 1, "Tx_2");
33
+ ], 3, null), /*#__PURE__*/ _jsxSorted("div", null, { class: "divide-glass-border divide-y" }, [rows.map((row) => /*#__PURE__*/ _jsxSorted(HookRow, { row }, null, null, 3, row.eventName)), rows.length === 0 && /*#__PURE__*/ _jsxSorted("div", null, { class: "text-muted-foreground px-3 py-4 text-center text-sm" }, "No CSR records for this component.", 3, "M3_1")], 1, null)], 1, null), 1, null)], 1, "M3_2");
30
34
  }, "HookDetailsPanel_component_8uC9a2UU5yo"));
31
35
  export { HookDetailsPanel };
@@ -1,16 +1,18 @@
1
1
  import { formatMs } from "../utils/formatMs.qwik.mjs";
2
2
  import { StatCard } from "./StatCard.qwik.mjs";
3
3
  import { _fnSignal, _jsxSorted, componentQrl, inlinedQrl } from "@qwik.dev/core";
4
- var _hf0 = (p0) => p0.overview.slowestComponent?.componentName || "-";
4
+ var _hf0 = (p0) => p0?.componentName || "-";
5
+ var _hf0_str = "p0?.componentName||\"-\"";
5
6
  var PerformanceOverview = /*#__PURE__*/ componentQrl(/*#__PURE__*/ inlinedQrl((_rawProps) => {
7
+ const slowestComponent = _rawProps.overview.slowestComponent;
6
8
  return /*#__PURE__*/ _jsxSorted("div", null, { class: "grid grid-cols-1 gap-5 md:grid-cols-4" }, [
7
- /*#__PURE__*/ _jsxSorted(StatCard, { value: formatMs(_rawProps.overview.totalRenderTime) }, { label: "TOTAL RENDER TIME" }, null, 3, "BX_0"),
8
- /*#__PURE__*/ _jsxSorted(StatCard, { subtitle: _rawProps.overview.slowestComponent ? `${formatMs(_rawProps.overview.slowestComponent.avgTime)} avg` : "-" }, {
9
- label: "SLOWEST COMPONENT",
10
- value: _fnSignal(_hf0, [_rawProps])
11
- }, null, 3, "BX_1"),
12
- /*#__PURE__*/ _jsxSorted(StatCard, { value: formatMs(_rawProps.overview.avgTime) }, { label: "AVG TIME" }, null, 3, "BX_2"),
13
- /*#__PURE__*/ _jsxSorted(StatCard, { value: String(_rawProps.overview.totalCalls) }, { label: "TOTAL CALLS" }, null, 3, "BX_3")
14
- ], 1, "BX_4");
9
+ /*#__PURE__*/ _jsxSorted(StatCard, { value: formatMs(_rawProps.overview.totalRenderTime) }, { label: "TOTAL RENDER TIME" }, null, 3, "XE_0"),
10
+ /*#__PURE__*/ _jsxSorted(StatCard, {
11
+ subtitle: slowestComponent ? `${formatMs(slowestComponent.avgTime)} avg` : "-",
12
+ value: _fnSignal(_hf0, [slowestComponent], _hf0_str)
13
+ }, { label: "SLOWEST COMPONENT" }, null, 3, "XE_1"),
14
+ /*#__PURE__*/ _jsxSorted(StatCard, { value: formatMs(_rawProps.overview.avgTime) }, { label: "AVG TIME" }, null, 3, "XE_2"),
15
+ /*#__PURE__*/ _jsxSorted(StatCard, { value: String(_rawProps.overview.totalCalls) }, { label: "TOTAL CALLS" }, null, 3, "XE_3")
16
+ ], 1, "XE_4");
15
17
  }, "PerformanceOverview_component_TcuA6nX9GNo"));
16
18
  export { PerformanceOverview };
@@ -3,7 +3,7 @@ var StatCard = /*#__PURE__*/ componentQrl(/*#__PURE__*/ inlinedQrl((_rawProps) =
3
3
  return /*#__PURE__*/ _jsxSorted("div", null, { class: "border-border bg-card-item-bg hover:bg-card-item-hover-bg flex items-center gap-4 rounded-xl border p-5 transition-all duration-200" }, /*#__PURE__*/ _jsxSorted("div", null, { class: "flex-1" }, [
4
4
  /*#__PURE__*/ _jsxSorted("div", null, { class: "text-muted-foreground text-xs font-medium" }, _wrapProp(_rawProps, "label"), 1, null),
5
5
  /*#__PURE__*/ _jsxSorted("div", null, { class: "mt-1 text-3xl font-semibold" }, _wrapProp(_rawProps), 1, null),
6
- _rawProps.subtitle && /*#__PURE__*/ _jsxSorted("div", null, { class: "text-muted-foreground mt-1 text-xs" }, _wrapProp(_rawProps, "subtitle"), 1, "RV_0")
7
- ], 1, null), 1, "RV_1");
6
+ _rawProps.subtitle && /*#__PURE__*/ _jsxSorted("div", null, { class: "text-muted-foreground mt-1 text-xs" }, _wrapProp(_rawProps, "subtitle"), 1, "J2_0")
7
+ ], 1, null), 1, "J2_1");
8
8
  }, "StatCard_component_Uisqt5fvHhk"));
9
9
  export { StatCard };
@@ -37,7 +37,8 @@ function computeComponentVmFromCsr(componentName, csrItems, ssr) {
37
37
  csrItems
38
38
  };
39
39
  }
40
- /** Build component view-models when SSR entries are available. */ function groupComponentsBySsr(safe) {
40
+ /** Build component view-models when SSR entries are available. */
41
+ function groupComponentsBySsr(safe) {
41
42
  const grouped = groupCsrBySsr(safe);
42
43
  const result = [];
43
44
  for (const raw of safe.ssr) {
@@ -51,7 +52,8 @@ function computeComponentVmFromCsr(componentName, csrItems, ssr) {
51
52
  }
52
53
  return result;
53
54
  }
54
- /** Build component view-models from CSR-only data, grouped by component name. */ function groupComponentsByName(csrRaw) {
55
+ /** Build component view-models from CSR-only data, grouped by component name. */
56
+ function groupComponentsByName(csrRaw) {
55
57
  const byName = /* @__PURE__ */ new Map();
56
58
  for (const entry of csrRaw) {
57
59
  const csrItem = {