@nice-code/action 0.2.18 → 0.3.0
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/build/devtools/browser/index.js +836 -422
- package/build/index.js +21 -1
- package/build/types/ActionRuntime/ActionRuntime.d.ts +1 -0
- package/build/types/ActionRuntime/Handler/ExternalClient/ActionExternalClientHandler.d.ts +1 -0
- package/build/types/devtools/browser/NiceActionDevtools.d.ts +5 -1
- package/build/types/devtools/browser/components/DomainChip.d.ts +2 -1
- package/build/types/devtools/browser/components/Icon.d.ts +1 -1
- package/build/types/devtools/browser/components/StackTraceSection.d.ts +4 -2
- package/build/types/devtools/browser/components/action_list/ActionEntryRow.d.ts +2 -1
- package/build/types/devtools/browser/components/action_list/ActionInputAndOutputChip.d.ts +11 -0
- package/build/types/devtools/browser/components/action_list/ActionList.d.ts +10 -0
- package/build/types/devtools/browser/components/action_list/IoTooltipContent.d.ts +6 -0
- package/build/types/devtools/browser/components/action_list/action_list.types.d.ts +4 -0
- package/build/types/devtools/browser/devtools_storage.d.ts +6 -0
- package/build/types/devtools/core/ActionDevtools.types.d.ts +2 -5
- package/build/types/errors/err_nice_action.d.ts +2 -0
- package/package.json +4 -3
|
@@ -1957,7 +1957,7 @@ class ActionDevtoolsCore {
|
|
|
1957
1957
|
}
|
|
1958
1958
|
}
|
|
1959
1959
|
// src/devtools/browser/NiceActionDevtools.tsx
|
|
1960
|
-
import { useEffect as
|
|
1960
|
+
import { useEffect as useEffect4, useMemo as useMemo3, useState as useState9 } from "react";
|
|
1961
1961
|
|
|
1962
1962
|
// src/devtools/core/devtools_colors.ts
|
|
1963
1963
|
var DEVTOOL_COLOR_SEMANTIC_ERROR = "#FF5C5C";
|
|
@@ -2068,7 +2068,7 @@ var SEMANTIC_COLORS = {
|
|
|
2068
2068
|
};
|
|
2069
2069
|
|
|
2070
2070
|
// src/devtools/browser/components/action_detail/ActionDetailPanel.tsx
|
|
2071
|
-
import { useMemo, useState as
|
|
2071
|
+
import { useMemo, useState as useState7 } from "react";
|
|
2072
2072
|
|
|
2073
2073
|
// src/devtools/browser/ui_util/size.ts
|
|
2074
2074
|
function getSizeValue(size) {
|
|
@@ -2392,7 +2392,13 @@ function NiceErrorDisplay({
|
|
|
2392
2392
|
}
|
|
2393
2393
|
|
|
2394
2394
|
// src/devtools/browser/components/StackTraceSection.tsx
|
|
2395
|
-
import {
|
|
2395
|
+
import { ExternalLink } from "lucide-react";
|
|
2396
|
+
import { useEffect, useRef, useState as useState2 } from "react";
|
|
2397
|
+
|
|
2398
|
+
// src/devtools/browser/devtools_storage.ts
|
|
2399
|
+
import { createTypedWebLocalStorage } from "@nice-code/util";
|
|
2400
|
+
var devtools_storage = createTypedWebLocalStorage(window.localStorage, "nice-action-devtools::");
|
|
2401
|
+
devtools_storage.updateJsonWithDef("runtimeToProjectFilePath", {}, (prev) => prev);
|
|
2396
2402
|
|
|
2397
2403
|
// ../../node_modules/.bun/source-map-js@1.2.1/node_modules/source-map-js/source-map.js
|
|
2398
2404
|
var $SourceMapGenerator = require_source_map_generator().SourceMapGenerator;
|
|
@@ -2507,7 +2513,7 @@ async function resolveSourceMapPositions(frames) {
|
|
|
2507
2513
|
const resolved = await resolveCompiledPosition(frame.file, frame.line, frame.col ?? 0);
|
|
2508
2514
|
if (resolved == null)
|
|
2509
2515
|
return frame;
|
|
2510
|
-
return { ...frame, file: resolved.file, line: resolved.line, col: resolved.col };
|
|
2516
|
+
return { ...frame, originalFile: frame.file, file: resolved.file, line: resolved.line, col: resolved.col };
|
|
2511
2517
|
}));
|
|
2512
2518
|
}
|
|
2513
2519
|
function formatFrameFile(file) {
|
|
@@ -2525,7 +2531,299 @@ function formatFrameFile(file) {
|
|
|
2525
2531
|
const tail = filtered.slice(-4);
|
|
2526
2532
|
return tail.join("/") || file;
|
|
2527
2533
|
}
|
|
2528
|
-
function
|
|
2534
|
+
function getOriginUrl(frame) {
|
|
2535
|
+
const candidate = frame.originalFile ?? frame.file;
|
|
2536
|
+
if (candidate == null)
|
|
2537
|
+
return null;
|
|
2538
|
+
try {
|
|
2539
|
+
new URL(candidate);
|
|
2540
|
+
return candidate;
|
|
2541
|
+
} catch {
|
|
2542
|
+
return null;
|
|
2543
|
+
}
|
|
2544
|
+
}
|
|
2545
|
+
function frameNeedsProjectRoot(frame) {
|
|
2546
|
+
if (frame.isInternal)
|
|
2547
|
+
return false;
|
|
2548
|
+
const originUrl = getOriginUrl(frame);
|
|
2549
|
+
if (originUrl == null)
|
|
2550
|
+
return false;
|
|
2551
|
+
const path = new URL(originUrl).pathname.split("?")[0] ?? "";
|
|
2552
|
+
return !path.startsWith("/@fs/");
|
|
2553
|
+
}
|
|
2554
|
+
function buildVscodeUrl(frame, projectRoot) {
|
|
2555
|
+
if (frame.line == null)
|
|
2556
|
+
return null;
|
|
2557
|
+
const originUrl = getOriginUrl(frame);
|
|
2558
|
+
if (originUrl != null) {
|
|
2559
|
+
let path = new URL(originUrl).pathname.split("?")[0] ?? "";
|
|
2560
|
+
if (path.startsWith("/@fs/")) {
|
|
2561
|
+
path = path.slice(5);
|
|
2562
|
+
if (/^\/[a-zA-Z]:\//.test(path))
|
|
2563
|
+
path = path.slice(1);
|
|
2564
|
+
return `vscode://file/${path}:${frame.line}:${frame.col ?? 1}`;
|
|
2565
|
+
}
|
|
2566
|
+
if (projectRoot == null)
|
|
2567
|
+
return null;
|
|
2568
|
+
const normalRoot2 = projectRoot.replace(/[/\\]+$/, "").replace(/\\/g, "/");
|
|
2569
|
+
return `vscode://file/${normalRoot2}${path}:${frame.line}:${frame.col ?? 1}`;
|
|
2570
|
+
}
|
|
2571
|
+
const filePath = frame.file;
|
|
2572
|
+
if (filePath == null)
|
|
2573
|
+
return null;
|
|
2574
|
+
const normalPath = filePath.replace(/\\/g, "/");
|
|
2575
|
+
if (/^[a-zA-Z]:\//.test(normalPath)) {
|
|
2576
|
+
return `vscode://file/${normalPath}:${frame.line}:${frame.col ?? 1}`;
|
|
2577
|
+
}
|
|
2578
|
+
if (/^\/[a-zA-Z]:\//.test(normalPath)) {
|
|
2579
|
+
return `vscode://file/${normalPath.slice(1)}:${frame.line}:${frame.col ?? 1}`;
|
|
2580
|
+
}
|
|
2581
|
+
if (normalPath.startsWith("/")) {
|
|
2582
|
+
if (projectRoot == null)
|
|
2583
|
+
return null;
|
|
2584
|
+
const normalRoot2 = projectRoot.replace(/[/\\]+$/, "").replace(/\\/g, "/");
|
|
2585
|
+
return `vscode://file/${normalRoot2}${normalPath}:${frame.line}:${frame.col ?? 1}`;
|
|
2586
|
+
}
|
|
2587
|
+
if (projectRoot == null)
|
|
2588
|
+
return null;
|
|
2589
|
+
const normalRoot = projectRoot.replace(/[/\\]+$/, "").replace(/\\/g, "/");
|
|
2590
|
+
return `vscode://file/${normalRoot}/${normalPath}:${frame.line}:${frame.col ?? 1}`;
|
|
2591
|
+
}
|
|
2592
|
+
function ProjectRootSetupModal({
|
|
2593
|
+
envId,
|
|
2594
|
+
currentValue,
|
|
2595
|
+
onSave,
|
|
2596
|
+
onCancel
|
|
2597
|
+
}) {
|
|
2598
|
+
const [value, setValue] = useState2(currentValue);
|
|
2599
|
+
const inputRef = useRef(null);
|
|
2600
|
+
useEffect(() => {
|
|
2601
|
+
inputRef.current?.focus();
|
|
2602
|
+
inputRef.current?.select();
|
|
2603
|
+
}, []);
|
|
2604
|
+
useEffect(() => {
|
|
2605
|
+
const handler = (e) => {
|
|
2606
|
+
if (e.key === "Escape")
|
|
2607
|
+
onCancel();
|
|
2608
|
+
};
|
|
2609
|
+
window.addEventListener("keydown", handler);
|
|
2610
|
+
return () => window.removeEventListener("keydown", handler);
|
|
2611
|
+
}, [onCancel]);
|
|
2612
|
+
const handleSubmit = (e) => {
|
|
2613
|
+
e.preventDefault();
|
|
2614
|
+
const trimmed = value.trim();
|
|
2615
|
+
if (trimmed !== "")
|
|
2616
|
+
onSave(trimmed);
|
|
2617
|
+
};
|
|
2618
|
+
return /* @__PURE__ */ jsxDEV4("div", {
|
|
2619
|
+
style: {
|
|
2620
|
+
position: "fixed",
|
|
2621
|
+
inset: 0,
|
|
2622
|
+
zIndex: 2147483647,
|
|
2623
|
+
display: "flex",
|
|
2624
|
+
alignItems: "center",
|
|
2625
|
+
justifyContent: "center"
|
|
2626
|
+
},
|
|
2627
|
+
children: [
|
|
2628
|
+
/* @__PURE__ */ jsxDEV4("div", {
|
|
2629
|
+
onClick: onCancel,
|
|
2630
|
+
style: { position: "absolute", inset: 0, background: "rgba(0, 0, 0, 0.72)" }
|
|
2631
|
+
}, undefined, false, undefined, this),
|
|
2632
|
+
/* @__PURE__ */ jsxDEV4("form", {
|
|
2633
|
+
onSubmit: handleSubmit,
|
|
2634
|
+
style: {
|
|
2635
|
+
position: "relative",
|
|
2636
|
+
background: DEVTOOL_TOOLTIP_BACKGROUND,
|
|
2637
|
+
border: `1px solid ${DEVTOOL_TOOLTIP_BORDER}`,
|
|
2638
|
+
borderRadius: "8px",
|
|
2639
|
+
width: "420px",
|
|
2640
|
+
maxWidth: "90vw",
|
|
2641
|
+
boxShadow: "0 8px 32px rgba(0, 0, 0, 0.8)",
|
|
2642
|
+
overflow: "hidden",
|
|
2643
|
+
display: "flex",
|
|
2644
|
+
flexDirection: "column"
|
|
2645
|
+
},
|
|
2646
|
+
children: [
|
|
2647
|
+
/* @__PURE__ */ jsxDEV4("div", {
|
|
2648
|
+
style: {
|
|
2649
|
+
background: DEVTOOL_TOOLTIP_TITLE_BACKGROUND,
|
|
2650
|
+
borderBottom: `1px solid ${DEVTOOL_TOOLTIP_BORDER}`,
|
|
2651
|
+
padding: "10px 14px"
|
|
2652
|
+
},
|
|
2653
|
+
children: [
|
|
2654
|
+
/* @__PURE__ */ jsxDEV4("div", {
|
|
2655
|
+
style: {
|
|
2656
|
+
color: DEVTOOL_COLOR_TEXT_EMPHASIS,
|
|
2657
|
+
fontSize: "12px",
|
|
2658
|
+
fontWeight: 600,
|
|
2659
|
+
marginBottom: "2px"
|
|
2660
|
+
},
|
|
2661
|
+
children: "Set project root"
|
|
2662
|
+
}, undefined, false, undefined, this),
|
|
2663
|
+
/* @__PURE__ */ jsxDEV4("div", {
|
|
2664
|
+
style: { color: DEVTOOL_COLOR_TEXT_MUTED, fontSize: "10px" },
|
|
2665
|
+
children: [
|
|
2666
|
+
"Runtime:",
|
|
2667
|
+
" ",
|
|
2668
|
+
/* @__PURE__ */ jsxDEV4("span", {
|
|
2669
|
+
style: {
|
|
2670
|
+
color: DEVTOOL_COLOR_SEMANTIC_SYSTEM,
|
|
2671
|
+
fontFamily: "ui-monospace, 'Cascadia Code', 'Source Code Pro', monospace"
|
|
2672
|
+
},
|
|
2673
|
+
children: envId
|
|
2674
|
+
}, undefined, false, undefined, this)
|
|
2675
|
+
]
|
|
2676
|
+
}, undefined, true, undefined, this)
|
|
2677
|
+
]
|
|
2678
|
+
}, undefined, true, undefined, this),
|
|
2679
|
+
/* @__PURE__ */ jsxDEV4("div", {
|
|
2680
|
+
style: { padding: "14px", display: "flex", flexDirection: "column", gap: "8px" },
|
|
2681
|
+
children: [
|
|
2682
|
+
/* @__PURE__ */ jsxDEV4("div", {
|
|
2683
|
+
style: { color: DEVTOOL_COLOR_TEXT_MUTED, fontSize: "10px", lineHeight: 1.4 },
|
|
2684
|
+
children: [
|
|
2685
|
+
"Provide the absolute path to this project's root so that root-relative source file paths (e.g.",
|
|
2686
|
+
" ",
|
|
2687
|
+
/* @__PURE__ */ jsxDEV4("span", {
|
|
2688
|
+
style: {
|
|
2689
|
+
fontFamily: "ui-monospace, 'Cascadia Code', 'Source Code Pro', monospace"
|
|
2690
|
+
},
|
|
2691
|
+
children: "src/App.tsx"
|
|
2692
|
+
}, undefined, false, undefined, this),
|
|
2693
|
+
") can be opened in VS Code."
|
|
2694
|
+
]
|
|
2695
|
+
}, undefined, true, undefined, this),
|
|
2696
|
+
/* @__PURE__ */ jsxDEV4("input", {
|
|
2697
|
+
ref: inputRef,
|
|
2698
|
+
value,
|
|
2699
|
+
onChange: (e) => setValue(e.currentTarget.value),
|
|
2700
|
+
placeholder: "e.g. C:/d/nice-code/packages/demo-frontend",
|
|
2701
|
+
style: {
|
|
2702
|
+
background: DEVTOOL_STACK_TRACE_BACKGROUND,
|
|
2703
|
+
border: `1px solid ${DEVTOOL_TOOLTIP_BORDER}`,
|
|
2704
|
+
borderRadius: "4px",
|
|
2705
|
+
color: DEVTOOL_COLOR_TEXT_SECONDARY,
|
|
2706
|
+
fontSize: "11px",
|
|
2707
|
+
fontFamily: "ui-monospace, 'Cascadia Code', 'Source Code Pro', monospace",
|
|
2708
|
+
padding: "7px 9px",
|
|
2709
|
+
outline: "none",
|
|
2710
|
+
width: "100%",
|
|
2711
|
+
boxSizing: "border-box"
|
|
2712
|
+
}
|
|
2713
|
+
}, undefined, false, undefined, this)
|
|
2714
|
+
]
|
|
2715
|
+
}, undefined, true, undefined, this),
|
|
2716
|
+
/* @__PURE__ */ jsxDEV4("div", {
|
|
2717
|
+
style: {
|
|
2718
|
+
display: "flex",
|
|
2719
|
+
justifyContent: "flex-end",
|
|
2720
|
+
gap: "8px",
|
|
2721
|
+
padding: "10px 14px",
|
|
2722
|
+
borderTop: `1px solid ${DEVTOOL_PANEL_BORDER}`
|
|
2723
|
+
},
|
|
2724
|
+
children: [
|
|
2725
|
+
/* @__PURE__ */ jsxDEV4("button", {
|
|
2726
|
+
type: "button",
|
|
2727
|
+
onClick: onCancel,
|
|
2728
|
+
style: {
|
|
2729
|
+
background: "transparent",
|
|
2730
|
+
border: `1px solid ${DEVTOOL_PANEL_BORDER}`,
|
|
2731
|
+
borderRadius: "4px",
|
|
2732
|
+
color: DEVTOOL_COLOR_TEXT_MUTED,
|
|
2733
|
+
fontSize: "11px",
|
|
2734
|
+
padding: "5px 12px",
|
|
2735
|
+
cursor: "pointer"
|
|
2736
|
+
},
|
|
2737
|
+
children: "Cancel"
|
|
2738
|
+
}, undefined, false, undefined, this),
|
|
2739
|
+
/* @__PURE__ */ jsxDEV4("button", {
|
|
2740
|
+
type: "submit",
|
|
2741
|
+
disabled: value.trim() === "",
|
|
2742
|
+
style: {
|
|
2743
|
+
background: `${DEVTOOL_COLOR_SEMANTIC_SYSTEM}22`,
|
|
2744
|
+
border: `1px solid ${DEVTOOL_COLOR_SEMANTIC_SYSTEM}66`,
|
|
2745
|
+
borderRadius: "4px",
|
|
2746
|
+
color: DEVTOOL_COLOR_SEMANTIC_SYSTEM,
|
|
2747
|
+
fontSize: "11px",
|
|
2748
|
+
padding: "5px 12px",
|
|
2749
|
+
cursor: value.trim() === "" ? "not-allowed" : "pointer",
|
|
2750
|
+
opacity: value.trim() === "" ? 0.5 : 1
|
|
2751
|
+
},
|
|
2752
|
+
children: "Save"
|
|
2753
|
+
}, undefined, false, undefined, this)
|
|
2754
|
+
]
|
|
2755
|
+
}, undefined, true, undefined, this)
|
|
2756
|
+
]
|
|
2757
|
+
}, undefined, true, undefined, this)
|
|
2758
|
+
]
|
|
2759
|
+
}, undefined, true, undefined, this);
|
|
2760
|
+
}
|
|
2761
|
+
function OpenInVscodeButton({
|
|
2762
|
+
frame,
|
|
2763
|
+
projectRoot,
|
|
2764
|
+
onNeedSetup
|
|
2765
|
+
}) {
|
|
2766
|
+
const [hovered, setHovered] = useState2(false);
|
|
2767
|
+
const needsSetup = frameNeedsProjectRoot(frame) && projectRoot == null;
|
|
2768
|
+
const url = buildVscodeUrl(frame, projectRoot);
|
|
2769
|
+
if (frame.file == null || frame.line == null)
|
|
2770
|
+
return null;
|
|
2771
|
+
if (!needsSetup && url == null)
|
|
2772
|
+
return null;
|
|
2773
|
+
const baseStyle = {
|
|
2774
|
+
position: "absolute",
|
|
2775
|
+
bottom: "3px",
|
|
2776
|
+
right: "4px",
|
|
2777
|
+
display: "flex",
|
|
2778
|
+
alignItems: "center",
|
|
2779
|
+
justifyContent: "center",
|
|
2780
|
+
width: "16px",
|
|
2781
|
+
height: "16px",
|
|
2782
|
+
opacity: hovered ? 0.85 : 0.25,
|
|
2783
|
+
transition: "opacity 0.15s ease",
|
|
2784
|
+
cursor: "pointer",
|
|
2785
|
+
flexShrink: 0
|
|
2786
|
+
};
|
|
2787
|
+
if (needsSetup) {
|
|
2788
|
+
return /* @__PURE__ */ jsxDEV4("button", {
|
|
2789
|
+
onClick: (e) => {
|
|
2790
|
+
e.stopPropagation();
|
|
2791
|
+
onNeedSetup();
|
|
2792
|
+
},
|
|
2793
|
+
onMouseEnter: () => setHovered(true),
|
|
2794
|
+
onMouseLeave: () => setHovered(false),
|
|
2795
|
+
title: "Set project root to open in VS Code",
|
|
2796
|
+
style: {
|
|
2797
|
+
...baseStyle,
|
|
2798
|
+
color: DEVTOOL_COLOR_SEMANTIC_WARNING,
|
|
2799
|
+
background: "none",
|
|
2800
|
+
border: "none",
|
|
2801
|
+
padding: 0
|
|
2802
|
+
},
|
|
2803
|
+
children: /* @__PURE__ */ jsxDEV4(ExternalLink, {
|
|
2804
|
+
size: 10,
|
|
2805
|
+
strokeWidth: 1.8
|
|
2806
|
+
}, undefined, false, undefined, this)
|
|
2807
|
+
}, undefined, false, undefined, this);
|
|
2808
|
+
}
|
|
2809
|
+
return /* @__PURE__ */ jsxDEV4("a", {
|
|
2810
|
+
href: url,
|
|
2811
|
+
onClick: (e) => e.stopPropagation(),
|
|
2812
|
+
onMouseEnter: () => setHovered(true),
|
|
2813
|
+
onMouseLeave: () => setHovered(false),
|
|
2814
|
+
title: "Open in VS Code",
|
|
2815
|
+
style: {
|
|
2816
|
+
...baseStyle,
|
|
2817
|
+
color: DEVTOOL_COLOR_TEXT_SECONDARY,
|
|
2818
|
+
textDecoration: "none"
|
|
2819
|
+
},
|
|
2820
|
+
children: /* @__PURE__ */ jsxDEV4(ExternalLink, {
|
|
2821
|
+
size: 10,
|
|
2822
|
+
strokeWidth: 1.8
|
|
2823
|
+
}, undefined, false, undefined, this)
|
|
2824
|
+
}, undefined, false, undefined, this);
|
|
2825
|
+
}
|
|
2826
|
+
function countUserFrames(_runtime, stack) {
|
|
2529
2827
|
if (stack == null)
|
|
2530
2828
|
return 0;
|
|
2531
2829
|
return parseStackFrames(stack).filter((f) => !f.isInternal).length;
|
|
@@ -2534,10 +2832,16 @@ function StackTraceSection({
|
|
|
2534
2832
|
label,
|
|
2535
2833
|
stack,
|
|
2536
2834
|
color = DEVTOOL_COLOR_SEMANTIC_SYSTEM,
|
|
2835
|
+
runtime,
|
|
2537
2836
|
minFrameCount
|
|
2538
2837
|
}) {
|
|
2539
2838
|
const [showAll, setShowAll] = useState2(false);
|
|
2540
2839
|
const [resolvedFrames, setResolvedFrames] = useState2(null);
|
|
2840
|
+
const [projectRootMap, setProjectRootMap] = useState2({});
|
|
2841
|
+
const [showSetupModal, setShowSetupModal] = useState2(false);
|
|
2842
|
+
useEffect(() => {
|
|
2843
|
+
devtools_storage.getJsonOrDef("runtimeToProjectFilePath", {}).then((map) => setProjectRootMap(map));
|
|
2844
|
+
}, []);
|
|
2541
2845
|
useEffect(() => {
|
|
2542
2846
|
if (stack == null)
|
|
2543
2847
|
return;
|
|
@@ -2561,6 +2865,16 @@ function StackTraceSection({
|
|
|
2561
2865
|
const phantomFrameCount = !showAll ? Math.max(0, (minFrameCount ?? 0) - displayFrames.length) : 0;
|
|
2562
2866
|
if (allFrames.length === 0)
|
|
2563
2867
|
return null;
|
|
2868
|
+
const runtimeKey = `envId[${runtime.envId}]`;
|
|
2869
|
+
const projectRoot = projectRootMap[runtimeKey] ?? null;
|
|
2870
|
+
const handleSaveProjectRoot = (path) => {
|
|
2871
|
+
setProjectRootMap((prev) => ({ ...prev, [runtimeKey]: path }));
|
|
2872
|
+
setShowSetupModal(false);
|
|
2873
|
+
devtools_storage.updateJsonWithDef("runtimeToProjectFilePath", {}, (prev) => ({
|
|
2874
|
+
...prev,
|
|
2875
|
+
[runtimeKey]: path
|
|
2876
|
+
}));
|
|
2877
|
+
};
|
|
2564
2878
|
return /* @__PURE__ */ jsxDEV4("div", {
|
|
2565
2879
|
children: [
|
|
2566
2880
|
/* @__PURE__ */ jsxDEV4("div", {
|
|
@@ -2592,7 +2906,12 @@ function StackTraceSection({
|
|
|
2592
2906
|
},
|
|
2593
2907
|
children: [
|
|
2594
2908
|
displayFrames.length === 0 ? /* @__PURE__ */ jsxDEV4("div", {
|
|
2595
|
-
style: {
|
|
2909
|
+
style: {
|
|
2910
|
+
padding: "6px 10px",
|
|
2911
|
+
color: DEVTOOL_COLOR_TEXT_MUTED,
|
|
2912
|
+
fontSize: "10px",
|
|
2913
|
+
fontStyle: "italic"
|
|
2914
|
+
},
|
|
2596
2915
|
children: "no user frames captured"
|
|
2597
2916
|
}, undefined, false, undefined, this) : displayFrames.map((frame, idx) => {
|
|
2598
2917
|
const displayFile = formatFrameFile(frame.file);
|
|
@@ -2604,10 +2923,12 @@ function StackTraceSection({
|
|
|
2604
2923
|
return /* @__PURE__ */ jsxDEV4("div", {
|
|
2605
2924
|
title: titleStr,
|
|
2606
2925
|
style: {
|
|
2926
|
+
position: "relative",
|
|
2607
2927
|
display: "flex",
|
|
2608
2928
|
flexDirection: "row",
|
|
2609
2929
|
gap: "0.5em",
|
|
2610
2930
|
padding: "4px",
|
|
2931
|
+
paddingRight: "22px",
|
|
2611
2932
|
borderBottom: `1px solid ${DEVTOOL_LIST_BASE_BACKGROUND}`
|
|
2612
2933
|
},
|
|
2613
2934
|
children: [
|
|
@@ -2684,7 +3005,12 @@ function StackTraceSection({
|
|
|
2684
3005
|
]
|
|
2685
3006
|
}, undefined, true, undefined, this)
|
|
2686
3007
|
]
|
|
2687
|
-
}, undefined, true, undefined, this)
|
|
3008
|
+
}, undefined, true, undefined, this),
|
|
3009
|
+
/* @__PURE__ */ jsxDEV4(OpenInVscodeButton, {
|
|
3010
|
+
frame,
|
|
3011
|
+
projectRoot,
|
|
3012
|
+
onNeedSetup: () => setShowSetupModal(true)
|
|
3013
|
+
}, undefined, false, undefined, this)
|
|
2688
3014
|
]
|
|
2689
3015
|
}, frame.raw, true, undefined, this);
|
|
2690
3016
|
}),
|
|
@@ -2719,7 +3045,13 @@ function StackTraceSection({
|
|
|
2719
3045
|
]
|
|
2720
3046
|
}, `phantom-${i}`, true, undefined, this))
|
|
2721
3047
|
]
|
|
2722
|
-
}, undefined, true, undefined, this)
|
|
3048
|
+
}, undefined, true, undefined, this),
|
|
3049
|
+
showSetupModal && /* @__PURE__ */ jsxDEV4(ProjectRootSetupModal, {
|
|
3050
|
+
envId: runtime.envId,
|
|
3051
|
+
currentValue: projectRoot ?? "",
|
|
3052
|
+
onSave: handleSaveProjectRoot,
|
|
3053
|
+
onCancel: () => setShowSetupModal(false)
|
|
3054
|
+
}, undefined, false, undefined, this)
|
|
2723
3055
|
]
|
|
2724
3056
|
}, undefined, true, undefined, this);
|
|
2725
3057
|
}
|
|
@@ -2732,7 +3064,8 @@ function FullErrorContent({
|
|
|
2732
3064
|
label,
|
|
2733
3065
|
error,
|
|
2734
3066
|
errorStack,
|
|
2735
|
-
color
|
|
3067
|
+
color,
|
|
3068
|
+
runtime
|
|
2736
3069
|
}) {
|
|
2737
3070
|
return /* @__PURE__ */ jsxDEV5(Fragment, {
|
|
2738
3071
|
children: [
|
|
@@ -2746,6 +3079,7 @@ function FullErrorContent({
|
|
|
2746
3079
|
color
|
|
2747
3080
|
}, undefined, false, undefined, this),
|
|
2748
3081
|
/* @__PURE__ */ jsxDEV5(StackTraceSection, {
|
|
3082
|
+
runtime,
|
|
2749
3083
|
label: "Error Stack",
|
|
2750
3084
|
stack: errorStack,
|
|
2751
3085
|
color
|
|
@@ -2813,6 +3147,7 @@ function ActionErrorDisplay({
|
|
|
2813
3147
|
color
|
|
2814
3148
|
}, undefined, false, undefined, this);
|
|
2815
3149
|
return /* @__PURE__ */ jsxDEV5(FullErrorContent, {
|
|
3150
|
+
runtime: entry.meta.originClient,
|
|
2816
3151
|
label: "Action Error",
|
|
2817
3152
|
error,
|
|
2818
3153
|
errorStack,
|
|
@@ -2827,6 +3162,7 @@ function ActionErrorDisplay({
|
|
|
2827
3162
|
color
|
|
2828
3163
|
}, undefined, false, undefined, this);
|
|
2829
3164
|
return /* @__PURE__ */ jsxDEV5(FullErrorContent, {
|
|
3165
|
+
runtime: entry.meta.originClient,
|
|
2830
3166
|
label: "Error",
|
|
2831
3167
|
error,
|
|
2832
3168
|
errorStack,
|
|
@@ -2852,6 +3188,7 @@ function ActionErrorDisplay({
|
|
|
2852
3188
|
color
|
|
2853
3189
|
}, undefined, false, undefined, this)),
|
|
2854
3190
|
/* @__PURE__ */ jsxDEV5(StackTraceSection, {
|
|
3191
|
+
runtime: entry.meta.originClient,
|
|
2855
3192
|
label: "Abort Stack",
|
|
2856
3193
|
stack: errorStack,
|
|
2857
3194
|
color
|
|
@@ -2862,6 +3199,9 @@ function ActionErrorDisplay({
|
|
|
2862
3199
|
return null;
|
|
2863
3200
|
}
|
|
2864
3201
|
|
|
3202
|
+
// src/devtools/browser/components/DomainChip.tsx
|
|
3203
|
+
import { Component } from "lucide-react";
|
|
3204
|
+
|
|
2865
3205
|
// src/devtools/browser/components/Chip.tsx
|
|
2866
3206
|
import { useState as useState3 } from "react";
|
|
2867
3207
|
|
|
@@ -2970,6 +3310,8 @@ function Chip({
|
|
|
2970
3310
|
onMouseEnter: hasTooltip ? (e) => setAnchor(e.currentTarget.getBoundingClientRect()) : undefined,
|
|
2971
3311
|
onMouseLeave: hasTooltip ? () => setAnchor(null) : undefined,
|
|
2972
3312
|
style: {
|
|
3313
|
+
display: "flex",
|
|
3314
|
+
alignItems: "center",
|
|
2973
3315
|
color: resolvedColor,
|
|
2974
3316
|
fontSize,
|
|
2975
3317
|
background: DEVTOOL_LIST_BASE_BACKGROUND,
|
|
@@ -2991,13 +3333,73 @@ function Chip({
|
|
|
2991
3333
|
}, undefined, true, undefined, this);
|
|
2992
3334
|
}
|
|
2993
3335
|
|
|
2994
|
-
// src/devtools/browser/components/
|
|
3336
|
+
// src/devtools/browser/components/Icon.tsx
|
|
3337
|
+
import { useState as useState4 } from "react";
|
|
2995
3338
|
import { jsxDEV as jsxDEV8, Fragment as Fragment3 } from "react/jsx-dev-runtime";
|
|
2996
|
-
|
|
3339
|
+
var ICON_SIZE_EM = {
|
|
3340
|
+
["sm" /* sm */]: 1,
|
|
3341
|
+
["md" /* md */]: 1.2,
|
|
3342
|
+
["lg" /* lg */]: 1.6
|
|
3343
|
+
};
|
|
3344
|
+
var BASE_ICON_SIDE_LENGTH_EM = 1.5;
|
|
3345
|
+
var ICON_GAP_EM = 0.3;
|
|
3346
|
+
function Icon({
|
|
3347
|
+
icon: IconComponent,
|
|
3348
|
+
color,
|
|
3349
|
+
size = "md" /* md */,
|
|
3350
|
+
subtle = false,
|
|
3351
|
+
tooltip,
|
|
3352
|
+
style
|
|
3353
|
+
}) {
|
|
3354
|
+
const [anchor, setAnchor] = useState4(null);
|
|
3355
|
+
const hasTooltip = tooltip != null;
|
|
3356
|
+
const colorEntry = SEMANTIC_COLORS[color];
|
|
3357
|
+
const resolvedColor = subtle ? colorEntry.subtle?.color ?? colorEntry.color : colorEntry.color;
|
|
3358
|
+
const finalIcons = Array.isArray(IconComponent) ? IconComponent : [IconComponent];
|
|
3359
|
+
const fullIconWidthEm = (finalIcons.length - 1) * ICON_GAP_EM + finalIcons.length * BASE_ICON_SIDE_LENGTH_EM * getSizeValue(size);
|
|
3360
|
+
const iconSideLengthEm = `${BASE_ICON_SIDE_LENGTH_EM * getSizeValue(size)}em`;
|
|
2997
3361
|
return /* @__PURE__ */ jsxDEV8(Fragment3, {
|
|
3362
|
+
children: [
|
|
3363
|
+
/* @__PURE__ */ jsxDEV8("div", {
|
|
3364
|
+
onMouseEnter: hasTooltip ? (e) => setAnchor(e.currentTarget.getBoundingClientRect()) : undefined,
|
|
3365
|
+
onMouseLeave: hasTooltip ? () => setAnchor(null) : undefined,
|
|
3366
|
+
style: {
|
|
3367
|
+
borderRadius: "0.4em",
|
|
3368
|
+
width: `${fullIconWidthEm}em`,
|
|
3369
|
+
height: iconSideLengthEm,
|
|
3370
|
+
padding: "0.15em",
|
|
3371
|
+
display: "flex",
|
|
3372
|
+
alignItems: "center",
|
|
3373
|
+
justifyContent: "center",
|
|
3374
|
+
background: "rgba(0,0,0,0.4)",
|
|
3375
|
+
color: resolvedColor,
|
|
3376
|
+
flexShrink: 0,
|
|
3377
|
+
cursor: hasTooltip ? "default" : undefined,
|
|
3378
|
+
...style
|
|
3379
|
+
},
|
|
3380
|
+
children: /* @__PURE__ */ jsxDEV8("div", {
|
|
3381
|
+
style: { display: "flex", alignItems: "center", gap: `${ICON_GAP_EM}em` },
|
|
3382
|
+
children: finalIcons.map((Comp, i) => /* @__PURE__ */ jsxDEV8(Comp, {
|
|
3383
|
+
size: iconSideLengthEm,
|
|
3384
|
+
strokeWidth: 2.3
|
|
3385
|
+
}, `${Comp.name}-${i}`, false, undefined, this))
|
|
3386
|
+
}, undefined, false, undefined, this)
|
|
3387
|
+
}, undefined, false, undefined, this),
|
|
3388
|
+
anchor != null && hasTooltip && /* @__PURE__ */ jsxDEV8(Tooltip, {
|
|
3389
|
+
anchor,
|
|
3390
|
+
config: tooltip
|
|
3391
|
+
}, undefined, false, undefined, this)
|
|
3392
|
+
]
|
|
3393
|
+
}, undefined, true, undefined, this);
|
|
3394
|
+
}
|
|
3395
|
+
|
|
3396
|
+
// src/devtools/browser/components/DomainChip.tsx
|
|
3397
|
+
import { jsxDEV as jsxDEV9, Fragment as Fragment4 } from "react/jsx-dev-runtime";
|
|
3398
|
+
function DomainHierarchyContent({ allDomains }) {
|
|
3399
|
+
return /* @__PURE__ */ jsxDEV9(Fragment4, {
|
|
2998
3400
|
children: allDomains.map((d, i) => {
|
|
2999
3401
|
const isCurrent = i === allDomains.length - 1;
|
|
3000
|
-
return /* @__PURE__ */
|
|
3402
|
+
return /* @__PURE__ */ jsxDEV9("div", {
|
|
3001
3403
|
style: {
|
|
3002
3404
|
display: "flex",
|
|
3003
3405
|
alignItems: "center",
|
|
@@ -3006,7 +3408,7 @@ function DomainHierarchyContent({ allDomains }) {
|
|
|
3006
3408
|
paddingTop: i > 0 ? "0.1rem" : undefined
|
|
3007
3409
|
},
|
|
3008
3410
|
children: [
|
|
3009
|
-
/* @__PURE__ */
|
|
3411
|
+
/* @__PURE__ */ jsxDEV9("span", {
|
|
3010
3412
|
style: {
|
|
3011
3413
|
fontSize: "0.8rem",
|
|
3012
3414
|
height: "0.6em",
|
|
@@ -3019,7 +3421,7 @@ function DomainHierarchyContent({ allDomains }) {
|
|
|
3019
3421
|
},
|
|
3020
3422
|
children: "⬢"
|
|
3021
3423
|
}, undefined, false, undefined, this),
|
|
3022
|
-
/* @__PURE__ */
|
|
3424
|
+
/* @__PURE__ */ jsxDEV9("span", {
|
|
3023
3425
|
style: {
|
|
3024
3426
|
color: isCurrent ? DEVTOOL_COLOR_SEMANTIC_SYSTEM : "#4b5563",
|
|
3025
3427
|
fontSize: "0.7rem",
|
|
@@ -3033,44 +3435,63 @@ function DomainHierarchyContent({ allDomains }) {
|
|
|
3033
3435
|
}, undefined, false, undefined, this);
|
|
3034
3436
|
}
|
|
3035
3437
|
function DomainChip({
|
|
3438
|
+
compact = false,
|
|
3036
3439
|
subtle = false,
|
|
3037
3440
|
domain,
|
|
3038
3441
|
allDomains,
|
|
3039
3442
|
size
|
|
3040
3443
|
}) {
|
|
3041
|
-
|
|
3444
|
+
if (compact) {
|
|
3445
|
+
return /* @__PURE__ */ jsxDEV9(Icon, {
|
|
3446
|
+
icon: Component,
|
|
3447
|
+
color: "domain" /* domain */,
|
|
3448
|
+
tooltip: {
|
|
3449
|
+
content: /* @__PURE__ */ jsxDEV9(DomainHierarchyContent, {
|
|
3450
|
+
allDomains
|
|
3451
|
+
}, undefined, false, undefined, this),
|
|
3452
|
+
title: "Action Domain",
|
|
3453
|
+
align: "edge"
|
|
3454
|
+
}
|
|
3455
|
+
}, undefined, false, undefined, this);
|
|
3456
|
+
}
|
|
3457
|
+
return /* @__PURE__ */ jsxDEV9(Chip, {
|
|
3042
3458
|
color: "domain" /* domain */,
|
|
3043
3459
|
subtle,
|
|
3044
3460
|
size,
|
|
3045
3461
|
rounded: true,
|
|
3046
3462
|
tooltip: {
|
|
3047
|
-
content: /* @__PURE__ */
|
|
3463
|
+
content: /* @__PURE__ */ jsxDEV9(DomainHierarchyContent, {
|
|
3048
3464
|
allDomains
|
|
3049
3465
|
}, undefined, false, undefined, this),
|
|
3050
3466
|
title: "Action Domain",
|
|
3051
3467
|
align: "edge"
|
|
3052
3468
|
},
|
|
3053
|
-
|
|
3054
|
-
|
|
3055
|
-
|
|
3056
|
-
|
|
3057
|
-
|
|
3058
|
-
|
|
3059
|
-
|
|
3060
|
-
|
|
3061
|
-
|
|
3062
|
-
|
|
3063
|
-
|
|
3064
|
-
|
|
3065
|
-
|
|
3066
|
-
|
|
3067
|
-
|
|
3068
|
-
|
|
3069
|
-
|
|
3469
|
+
children: /* @__PURE__ */ jsxDEV9("div", {
|
|
3470
|
+
style: { display: "flex", alignItems: "center", gap: "0.4em" },
|
|
3471
|
+
children: [
|
|
3472
|
+
/* @__PURE__ */ jsxDEV9("span", {
|
|
3473
|
+
style: {
|
|
3474
|
+
height: "1.2em",
|
|
3475
|
+
width: "1.2em",
|
|
3476
|
+
display: "flex",
|
|
3477
|
+
alignItems: "center",
|
|
3478
|
+
justifyContent: "center"
|
|
3479
|
+
},
|
|
3480
|
+
children: /* @__PURE__ */ jsxDEV9(Component, {
|
|
3481
|
+
height: "1.2em",
|
|
3482
|
+
width: "1.2em"
|
|
3483
|
+
}, undefined, false, undefined, this)
|
|
3484
|
+
}, undefined, false, undefined, this),
|
|
3485
|
+
/* @__PURE__ */ jsxDEV9("span", {
|
|
3486
|
+
children: domain
|
|
3487
|
+
}, undefined, false, undefined, this)
|
|
3488
|
+
]
|
|
3489
|
+
}, undefined, true, undefined, this)
|
|
3490
|
+
}, undefined, false, undefined, this);
|
|
3070
3491
|
}
|
|
3071
3492
|
|
|
3072
3493
|
// src/devtools/browser/components/HandlerChips.tsx
|
|
3073
|
-
import { jsxDEV as
|
|
3494
|
+
import { jsxDEV as jsxDEV10, Fragment as Fragment5 } from "react/jsx-dev-runtime";
|
|
3074
3495
|
function getExternalLabel(hop) {
|
|
3075
3496
|
if (hop.handlerType !== "external")
|
|
3076
3497
|
return null;
|
|
@@ -3081,15 +3502,15 @@ function HandlerChips({ entry, size, subtle }) {
|
|
|
3081
3502
|
const localEnvId = firstHop != null ? firstHop.runtime.envId : null;
|
|
3082
3503
|
const externalLabel = firstHop != null ? getExternalLabel(firstHop) : null;
|
|
3083
3504
|
const firstHopIsLocal = firstHop != null && firstHop.handlerType === "local";
|
|
3084
|
-
return /* @__PURE__ */
|
|
3505
|
+
return /* @__PURE__ */ jsxDEV10(Fragment5, {
|
|
3085
3506
|
children: [
|
|
3086
|
-
localEnvId != null && (firstHopIsLocal || externalLabel == null) && /* @__PURE__ */
|
|
3507
|
+
localEnvId != null && (firstHopIsLocal || externalLabel == null) && /* @__PURE__ */ jsxDEV10(Chip, {
|
|
3087
3508
|
color: "handler_local" /* handler_local */,
|
|
3088
3509
|
size,
|
|
3089
3510
|
subtle,
|
|
3090
3511
|
children: localEnvId
|
|
3091
3512
|
}, undefined, false, undefined, this),
|
|
3092
|
-
externalLabel != null && /* @__PURE__ */
|
|
3513
|
+
externalLabel != null && /* @__PURE__ */ jsxDEV10(Chip, {
|
|
3093
3514
|
color: "handler_external" /* handler_external */,
|
|
3094
3515
|
size,
|
|
3095
3516
|
subtle,
|
|
@@ -3100,15 +3521,15 @@ function HandlerChips({ entry, size, subtle }) {
|
|
|
3100
3521
|
}
|
|
3101
3522
|
|
|
3102
3523
|
// src/devtools/browser/components/RunningTimer.tsx
|
|
3103
|
-
import { useEffect as useEffect2, useState as
|
|
3104
|
-
import { jsxDEV as
|
|
3524
|
+
import { useEffect as useEffect2, useState as useState5 } from "react";
|
|
3525
|
+
import { jsxDEV as jsxDEV11, Fragment as Fragment6 } from "react/jsx-dev-runtime";
|
|
3105
3526
|
function RunningTimer({ startTime }) {
|
|
3106
|
-
const [elapsed, setElapsed] =
|
|
3527
|
+
const [elapsed, setElapsed] = useState5(() => Date.now() - startTime);
|
|
3107
3528
|
useEffect2(() => {
|
|
3108
3529
|
const interval = setInterval(() => setElapsed(Date.now() - startTime), 100);
|
|
3109
3530
|
return () => clearInterval(interval);
|
|
3110
3531
|
}, [startTime]);
|
|
3111
|
-
return /* @__PURE__ */
|
|
3532
|
+
return /* @__PURE__ */ jsxDEV11(Fragment6, {
|
|
3112
3533
|
children: [
|
|
3113
3534
|
elapsed,
|
|
3114
3535
|
"ms"
|
|
@@ -3117,15 +3538,15 @@ function RunningTimer({ startTime }) {
|
|
|
3117
3538
|
}
|
|
3118
3539
|
function DurationDisplay({ entry }) {
|
|
3119
3540
|
const d = formatDuration(entry);
|
|
3120
|
-
return /* @__PURE__ */
|
|
3121
|
-
children: d ?? /* @__PURE__ */
|
|
3541
|
+
return /* @__PURE__ */ jsxDEV11(Fragment6, {
|
|
3542
|
+
children: d ?? /* @__PURE__ */ jsxDEV11(RunningTimer, {
|
|
3122
3543
|
startTime: entry.startTime
|
|
3123
3544
|
}, undefined, false, undefined, this)
|
|
3124
3545
|
}, undefined, false, undefined, this);
|
|
3125
3546
|
}
|
|
3126
3547
|
|
|
3127
3548
|
// src/devtools/browser/components/CallStackSection.tsx
|
|
3128
|
-
import { jsxDEV as
|
|
3549
|
+
import { jsxDEV as jsxDEV12 } from "react/jsx-dev-runtime";
|
|
3129
3550
|
function getCalledLabel(entry) {
|
|
3130
3551
|
const firstHop = entry.meta.routing[0];
|
|
3131
3552
|
if (firstHop == null)
|
|
@@ -3153,7 +3574,7 @@ function CallStackLink({
|
|
|
3153
3574
|
const symbol = STATUS_SYMBOL[entry.status];
|
|
3154
3575
|
const labelColor = entryRole === "caller" ? DEVTOOL_COLOR_TEXT_SECONDARY : getCalledColor(entry);
|
|
3155
3576
|
const label = entryRole === "caller" ? "↑ from" : getCalledLabel(entry);
|
|
3156
|
-
return /* @__PURE__ */
|
|
3577
|
+
return /* @__PURE__ */ jsxDEV12("div", {
|
|
3157
3578
|
onClick,
|
|
3158
3579
|
style: {
|
|
3159
3580
|
background: isFocused ? DEVTOOL_SECTION_BACKGROUND : DEVTOOL_DETAIL_HEADER_BACKGROUND,
|
|
@@ -3167,21 +3588,21 @@ function CallStackLink({
|
|
|
3167
3588
|
cursor: "pointer"
|
|
3168
3589
|
},
|
|
3169
3590
|
children: [
|
|
3170
|
-
/* @__PURE__ */
|
|
3591
|
+
/* @__PURE__ */ jsxDEV12("span", {
|
|
3171
3592
|
style: { display: "flex", alignItems: "center", gap: "1em", flexShrink: 0 },
|
|
3172
3593
|
children: [
|
|
3173
|
-
/* @__PURE__ */
|
|
3594
|
+
/* @__PURE__ */ jsxDEV12("span", {
|
|
3174
3595
|
style: { color, fontSize: "10px", flexShrink: 0 },
|
|
3175
3596
|
children: symbol
|
|
3176
3597
|
}, undefined, false, undefined, this),
|
|
3177
|
-
/* @__PURE__ */
|
|
3598
|
+
/* @__PURE__ */ jsxDEV12("span", {
|
|
3178
3599
|
style: { color: labelColor, fontSize: "9px", flexShrink: 0 },
|
|
3179
3600
|
children: label
|
|
3180
3601
|
}, undefined, false, undefined, this),
|
|
3181
|
-
/* @__PURE__ */
|
|
3602
|
+
/* @__PURE__ */ jsxDEV12("span", {
|
|
3182
3603
|
style: { display: "flex", alignItems: "center", gap: "5px" },
|
|
3183
3604
|
children: [
|
|
3184
|
-
/* @__PURE__ */
|
|
3605
|
+
/* @__PURE__ */ jsxDEV12("span", {
|
|
3185
3606
|
style: {
|
|
3186
3607
|
color: DEVTOOL_COLOR_TEXT_SECONDARY,
|
|
3187
3608
|
fontSize: "11px",
|
|
@@ -3191,7 +3612,7 @@ function CallStackLink({
|
|
|
3191
3612
|
},
|
|
3192
3613
|
children: entry.actionId
|
|
3193
3614
|
}, undefined, false, undefined, this),
|
|
3194
|
-
/* @__PURE__ */
|
|
3615
|
+
/* @__PURE__ */ jsxDEV12(DomainChip, {
|
|
3195
3616
|
domain: entry.domain,
|
|
3196
3617
|
allDomains: entry.allDomains,
|
|
3197
3618
|
size: "sm" /* sm */
|
|
@@ -3200,14 +3621,14 @@ function CallStackLink({
|
|
|
3200
3621
|
}, undefined, true, undefined, this)
|
|
3201
3622
|
]
|
|
3202
3623
|
}, undefined, true, undefined, this),
|
|
3203
|
-
/* @__PURE__ */
|
|
3624
|
+
/* @__PURE__ */ jsxDEV12("span", {
|
|
3204
3625
|
style: {
|
|
3205
3626
|
color: DEVTOOL_COLOR_TEXT_FAINT,
|
|
3206
3627
|
fontSize: "10px",
|
|
3207
3628
|
textAlign: "right",
|
|
3208
3629
|
whiteSpace: "nowrap"
|
|
3209
3630
|
},
|
|
3210
|
-
children: /* @__PURE__ */
|
|
3631
|
+
children: /* @__PURE__ */ jsxDEV12(DurationDisplay, {
|
|
3211
3632
|
entry
|
|
3212
3633
|
}, undefined, false, undefined, this)
|
|
3213
3634
|
}, undefined, false, undefined, this)
|
|
@@ -3223,15 +3644,15 @@ function CallStackSection({
|
|
|
3223
3644
|
}) {
|
|
3224
3645
|
if (parent == null && childEntries.length === 0)
|
|
3225
3646
|
return null;
|
|
3226
|
-
return /* @__PURE__ */
|
|
3647
|
+
return /* @__PURE__ */ jsxDEV12("div", {
|
|
3227
3648
|
children: [
|
|
3228
|
-
parent != null && /* @__PURE__ */
|
|
3649
|
+
parent != null && /* @__PURE__ */ jsxDEV12(CallStackLink, {
|
|
3229
3650
|
entry: parent,
|
|
3230
3651
|
entryRole: "caller",
|
|
3231
3652
|
isFocused: false,
|
|
3232
3653
|
onClick: () => onSelectParent(parent.cuid)
|
|
3233
3654
|
}, undefined, false, undefined, this),
|
|
3234
|
-
childEntries.map((child) => /* @__PURE__ */
|
|
3655
|
+
childEntries.map((child) => /* @__PURE__ */ jsxDEV12(CallStackLink, {
|
|
3235
3656
|
entry: child,
|
|
3236
3657
|
entryRole: "called",
|
|
3237
3658
|
isFocused: focusedChildCuid === child.cuid,
|
|
@@ -3242,7 +3663,7 @@ function CallStackSection({
|
|
|
3242
3663
|
}
|
|
3243
3664
|
|
|
3244
3665
|
// src/devtools/browser/components/ChildDispatchChips.tsx
|
|
3245
|
-
import { jsxDEV as
|
|
3666
|
+
import { jsxDEV as jsxDEV13 } from "react/jsx-dev-runtime";
|
|
3246
3667
|
function ChildDispatchChips({
|
|
3247
3668
|
childRouteItems,
|
|
3248
3669
|
size = "sm" /* sm */
|
|
@@ -3262,12 +3683,12 @@ function ChildDispatchChips({
|
|
|
3262
3683
|
group.transports.push(transport);
|
|
3263
3684
|
}
|
|
3264
3685
|
}
|
|
3265
|
-
return /* @__PURE__ */
|
|
3686
|
+
return /* @__PURE__ */ jsxDEV13("div", {
|
|
3266
3687
|
style: { display: "flex", alignItems: "center", gap: "4px", flexWrap: "wrap" },
|
|
3267
3688
|
children: Array.from(groups.values()).map((group) => {
|
|
3268
3689
|
const transportStr = group.transports.length > 0 ? group.transports.join(", ") : "ext";
|
|
3269
3690
|
const label = group.hasClient ? `${transportStr} → ${group.runtimeId}` : `→ ${transportStr}`;
|
|
3270
|
-
return /* @__PURE__ */
|
|
3691
|
+
return /* @__PURE__ */ jsxDEV13(Chip, {
|
|
3271
3692
|
color: "handler_external" /* handler_external */,
|
|
3272
3693
|
size,
|
|
3273
3694
|
children: label
|
|
@@ -3277,20 +3698,20 @@ function ChildDispatchChips({
|
|
|
3277
3698
|
}
|
|
3278
3699
|
|
|
3279
3700
|
// src/devtools/browser/components/MetaSection.tsx
|
|
3280
|
-
import { useState as
|
|
3281
|
-
import { jsxDEV as
|
|
3701
|
+
import { useState as useState6 } from "react";
|
|
3702
|
+
import { jsxDEV as jsxDEV14 } from "react/jsx-dev-runtime";
|
|
3282
3703
|
function MetaChip({ label, value }) {
|
|
3283
|
-
return /* @__PURE__ */
|
|
3704
|
+
return /* @__PURE__ */ jsxDEV14("span", {
|
|
3284
3705
|
style: { whiteSpace: "nowrap" },
|
|
3285
3706
|
children: [
|
|
3286
|
-
/* @__PURE__ */
|
|
3707
|
+
/* @__PURE__ */ jsxDEV14("span", {
|
|
3287
3708
|
style: { color: DEVTOOL_COLOR_TEXT_MUTED },
|
|
3288
3709
|
children: [
|
|
3289
3710
|
label,
|
|
3290
3711
|
" "
|
|
3291
3712
|
]
|
|
3292
3713
|
}, undefined, true, undefined, this),
|
|
3293
|
-
/* @__PURE__ */
|
|
3714
|
+
/* @__PURE__ */ jsxDEV14("span", {
|
|
3294
3715
|
style: { color: DEVTOOL_COLOR_TEXT_SECONDARY },
|
|
3295
3716
|
children: value
|
|
3296
3717
|
}, undefined, false, undefined, this)
|
|
@@ -3298,7 +3719,7 @@ function MetaChip({ label, value }) {
|
|
|
3298
3719
|
}, undefined, true, undefined, this);
|
|
3299
3720
|
}
|
|
3300
3721
|
function MetaSection({ entry }) {
|
|
3301
|
-
const [expanded, setExpanded] =
|
|
3722
|
+
const [expanded, setExpanded] = useState6(false);
|
|
3302
3723
|
const { meta, cuid } = entry;
|
|
3303
3724
|
const expandedRows = [
|
|
3304
3725
|
{ label: "cuid", value: cuid },
|
|
@@ -3306,9 +3727,9 @@ function MetaSection({ entry }) {
|
|
|
3306
3727
|
...meta.originClient.perId != null ? [{ label: "perId", value: meta.originClient.perId }] : [],
|
|
3307
3728
|
...meta.originClient.insId != null ? [{ label: "insId", value: meta.originClient.insId }] : []
|
|
3308
3729
|
];
|
|
3309
|
-
return /* @__PURE__ */
|
|
3730
|
+
return /* @__PURE__ */ jsxDEV14("div", {
|
|
3310
3731
|
children: [
|
|
3311
|
-
/* @__PURE__ */
|
|
3732
|
+
/* @__PURE__ */ jsxDEV14("div", {
|
|
3312
3733
|
style: {
|
|
3313
3734
|
display: "flex",
|
|
3314
3735
|
alignItems: "center",
|
|
@@ -3316,7 +3737,7 @@ function MetaSection({ entry }) {
|
|
|
3316
3737
|
marginBottom: "3px"
|
|
3317
3738
|
},
|
|
3318
3739
|
children: [
|
|
3319
|
-
/* @__PURE__ */
|
|
3740
|
+
/* @__PURE__ */ jsxDEV14("div", {
|
|
3320
3741
|
style: {
|
|
3321
3742
|
color: DEVTOOL_COLOR_SEMANTIC_SYSTEM,
|
|
3322
3743
|
fontSize: "10px",
|
|
@@ -3325,13 +3746,13 @@ function MetaSection({ entry }) {
|
|
|
3325
3746
|
},
|
|
3326
3747
|
children: "Meta"
|
|
3327
3748
|
}, undefined, false, undefined, this),
|
|
3328
|
-
/* @__PURE__ */
|
|
3749
|
+
/* @__PURE__ */ jsxDEV14("span", {
|
|
3329
3750
|
style: { color: DEVTOOL_COLOR_TEXT_FAINT, fontSize: "11px" },
|
|
3330
3751
|
children: expanded ? "▾" : "▸"
|
|
3331
3752
|
}, undefined, false, undefined, this)
|
|
3332
3753
|
]
|
|
3333
3754
|
}, undefined, true, undefined, this),
|
|
3334
|
-
expanded ? /* @__PURE__ */
|
|
3755
|
+
expanded ? /* @__PURE__ */ jsxDEV14("div", {
|
|
3335
3756
|
onClick: () => setExpanded(false),
|
|
3336
3757
|
style: {
|
|
3337
3758
|
background: DEVTOOL_SECTION_BACKGROUND,
|
|
@@ -3339,7 +3760,7 @@ function MetaSection({ entry }) {
|
|
|
3339
3760
|
overflow: "hidden",
|
|
3340
3761
|
cursor: "pointer"
|
|
3341
3762
|
},
|
|
3342
|
-
children: expandedRows.map(({ label, value }, i) => /* @__PURE__ */
|
|
3763
|
+
children: expandedRows.map(({ label, value }, i) => /* @__PURE__ */ jsxDEV14("div", {
|
|
3343
3764
|
style: {
|
|
3344
3765
|
display: "grid",
|
|
3345
3766
|
gridTemplateColumns: "52px 1fr",
|
|
@@ -3349,11 +3770,11 @@ function MetaSection({ entry }) {
|
|
|
3349
3770
|
alignItems: "start"
|
|
3350
3771
|
},
|
|
3351
3772
|
children: [
|
|
3352
|
-
/* @__PURE__ */
|
|
3773
|
+
/* @__PURE__ */ jsxDEV14("span", {
|
|
3353
3774
|
style: { textAlign: "left", color: DEVTOOL_COLOR_TEXT_MUTED, fontSize: "10px", paddingTop: "1px" },
|
|
3354
3775
|
children: label
|
|
3355
3776
|
}, undefined, false, undefined, this),
|
|
3356
|
-
/* @__PURE__ */
|
|
3777
|
+
/* @__PURE__ */ jsxDEV14("span", {
|
|
3357
3778
|
style: {
|
|
3358
3779
|
textAlign: "left",
|
|
3359
3780
|
color: DEVTOOL_COLOR_TEXT_SECONDARY,
|
|
@@ -3364,7 +3785,7 @@ function MetaSection({ entry }) {
|
|
|
3364
3785
|
}, undefined, false, undefined, this)
|
|
3365
3786
|
]
|
|
3366
3787
|
}, label, true, undefined, this))
|
|
3367
|
-
}, undefined, false, undefined, this) : /* @__PURE__ */
|
|
3788
|
+
}, undefined, false, undefined, this) : /* @__PURE__ */ jsxDEV14("div", {
|
|
3368
3789
|
onClick: () => setExpanded(true),
|
|
3369
3790
|
style: {
|
|
3370
3791
|
background: DEVTOOL_SECTION_BACKGROUND,
|
|
@@ -3378,19 +3799,19 @@ function MetaSection({ entry }) {
|
|
|
3378
3799
|
cursor: "pointer"
|
|
3379
3800
|
},
|
|
3380
3801
|
children: [
|
|
3381
|
-
/* @__PURE__ */
|
|
3802
|
+
/* @__PURE__ */ jsxDEV14(MetaChip, {
|
|
3382
3803
|
label: "cuid",
|
|
3383
3804
|
value: `…${cuid.slice(-8)}`
|
|
3384
3805
|
}, undefined, false, undefined, this),
|
|
3385
|
-
/* @__PURE__ */
|
|
3806
|
+
/* @__PURE__ */ jsxDEV14(MetaChip, {
|
|
3386
3807
|
label: "runtime",
|
|
3387
3808
|
value: meta.originClient.envId
|
|
3388
3809
|
}, undefined, false, undefined, this),
|
|
3389
|
-
meta.originClient.perId != null && /* @__PURE__ */
|
|
3810
|
+
meta.originClient.perId != null && /* @__PURE__ */ jsxDEV14(MetaChip, {
|
|
3390
3811
|
label: "perId",
|
|
3391
3812
|
value: meta.originClient.perId.length > 10 ? `${meta.originClient.perId.slice(0, 10)}…` : meta.originClient.perId
|
|
3392
3813
|
}, undefined, false, undefined, this),
|
|
3393
|
-
meta.originClient.insId != null && /* @__PURE__ */
|
|
3814
|
+
meta.originClient.insId != null && /* @__PURE__ */ jsxDEV14(MetaChip, {
|
|
3394
3815
|
label: "insId",
|
|
3395
3816
|
value: meta.originClient.insId.length > 10 ? `${meta.originClient.insId.slice(0, 10)}…` : meta.originClient.insId
|
|
3396
3817
|
}, undefined, false, undefined, this)
|
|
@@ -3401,7 +3822,7 @@ function MetaSection({ entry }) {
|
|
|
3401
3822
|
}
|
|
3402
3823
|
|
|
3403
3824
|
// src/devtools/browser/components/RoutingSection.tsx
|
|
3404
|
-
import { jsxDEV as
|
|
3825
|
+
import { jsxDEV as jsxDEV15 } from "react/jsx-dev-runtime";
|
|
3405
3826
|
function RoutingSection({
|
|
3406
3827
|
entry,
|
|
3407
3828
|
minHopCount = 0
|
|
@@ -3411,12 +3832,12 @@ function RoutingSection({
|
|
|
3411
3832
|
const phantomCount = Math.max(0, minHopCount - hopCount);
|
|
3412
3833
|
if (hopCount === 0 && phantomCount === 0)
|
|
3413
3834
|
return null;
|
|
3414
|
-
return /* @__PURE__ */
|
|
3835
|
+
return /* @__PURE__ */ jsxDEV15("div", {
|
|
3415
3836
|
children: [
|
|
3416
|
-
/* @__PURE__ */
|
|
3837
|
+
/* @__PURE__ */ jsxDEV15(SectionLabel, {
|
|
3417
3838
|
label: hopCount > 0 ? `Routing · ${hopCount} hop${hopCount !== 1 ? "s" : ""}` : "Routing"
|
|
3418
3839
|
}, undefined, false, undefined, this),
|
|
3419
|
-
/* @__PURE__ */
|
|
3840
|
+
/* @__PURE__ */ jsxDEV15("div", {
|
|
3420
3841
|
style: { display: "flex", flexDirection: "column", gap: "2px" },
|
|
3421
3842
|
children: [
|
|
3422
3843
|
meta.routing.map((hop, i) => {
|
|
@@ -3425,7 +3846,7 @@ function RoutingSection({
|
|
|
3425
3846
|
const badgeColor = isLocal ? DEVTOOL_COLOR_SEMANTIC_SUCCESS : DEVTOOL_COLOR_SEMANTIC_WARNING;
|
|
3426
3847
|
const badgeText = isLocal ? "● exec" : `→ ${hop.transport ?? "ext"}`;
|
|
3427
3848
|
const runtimeTitle = [hop.runtime.perId, hop.runtime.insId].filter(Boolean).join(" · ") || undefined;
|
|
3428
|
-
return /* @__PURE__ */
|
|
3849
|
+
return /* @__PURE__ */ jsxDEV15("div", {
|
|
3429
3850
|
style: {
|
|
3430
3851
|
background: DEVTOOL_SECTION_BACKGROUND,
|
|
3431
3852
|
borderRadius: "4px",
|
|
@@ -3438,14 +3859,14 @@ function RoutingSection({
|
|
|
3438
3859
|
padding: "4px 8px"
|
|
3439
3860
|
},
|
|
3440
3861
|
children: [
|
|
3441
|
-
/* @__PURE__ */
|
|
3862
|
+
/* @__PURE__ */ jsxDEV15("span", {
|
|
3442
3863
|
style: { display: "flex", flexDirection: "row", alignItems: "center", gap: "10px" },
|
|
3443
3864
|
children: [
|
|
3444
|
-
/* @__PURE__ */
|
|
3865
|
+
/* @__PURE__ */ jsxDEV15("span", {
|
|
3445
3866
|
style: { color: DEVTOOL_COLOR_TEXT_FAINT, fontSize: "10px", width: "16px", textAlign: "right" },
|
|
3446
3867
|
children: i + 1
|
|
3447
3868
|
}, undefined, false, undefined, this),
|
|
3448
|
-
/* @__PURE__ */
|
|
3869
|
+
/* @__PURE__ */ jsxDEV15("span", {
|
|
3449
3870
|
title: runtimeTitle,
|
|
3450
3871
|
style: {
|
|
3451
3872
|
color: DEVTOOL_COLOR_TEXT_SECONDARY,
|
|
@@ -3459,11 +3880,11 @@ function RoutingSection({
|
|
|
3459
3880
|
}, undefined, false, undefined, this)
|
|
3460
3881
|
]
|
|
3461
3882
|
}, undefined, true, undefined, this),
|
|
3462
|
-
/* @__PURE__ */
|
|
3883
|
+
/* @__PURE__ */ jsxDEV15("span", {
|
|
3463
3884
|
style: { color: badgeColor, fontSize: "10px", whiteSpace: "nowrap" },
|
|
3464
3885
|
children: badgeText
|
|
3465
3886
|
}, undefined, false, undefined, this),
|
|
3466
|
-
/* @__PURE__ */
|
|
3887
|
+
/* @__PURE__ */ jsxDEV15("span", {
|
|
3467
3888
|
style: {
|
|
3468
3889
|
display: "flex",
|
|
3469
3890
|
alignItems: "center",
|
|
@@ -3472,7 +3893,7 @@ function RoutingSection({
|
|
|
3472
3893
|
overflow: "hidden"
|
|
3473
3894
|
},
|
|
3474
3895
|
children: [
|
|
3475
|
-
/* @__PURE__ */
|
|
3896
|
+
/* @__PURE__ */ jsxDEV15("span", {
|
|
3476
3897
|
style: {
|
|
3477
3898
|
color: DEVTOOL_COLOR_TEXT_MUTED,
|
|
3478
3899
|
fontSize: "10px",
|
|
@@ -3482,7 +3903,7 @@ function RoutingSection({
|
|
|
3482
3903
|
},
|
|
3483
3904
|
children: hop.handlerClient != null ? `↳ ${hop.handlerClient.envId}` : ""
|
|
3484
3905
|
}, undefined, false, undefined, this),
|
|
3485
|
-
/* @__PURE__ */
|
|
3906
|
+
/* @__PURE__ */ jsxDEV15("span", {
|
|
3486
3907
|
style: { color: DEVTOOL_COLOR_TEXT_FAINT, fontSize: "10px", flexShrink: 0, marginLeft: "auto" },
|
|
3487
3908
|
children: [
|
|
3488
3909
|
"+",
|
|
@@ -3495,7 +3916,7 @@ function RoutingSection({
|
|
|
3495
3916
|
]
|
|
3496
3917
|
}, `${hop.time}-${hop.runtime.envId}`, true, undefined, this);
|
|
3497
3918
|
}),
|
|
3498
|
-
Array.from({ length: phantomCount }, (_, i) => `routing-phantom-${hopCount + i}`).map((key) => /* @__PURE__ */
|
|
3919
|
+
Array.from({ length: phantomCount }, (_, i) => `routing-phantom-${hopCount + i}`).map((key) => /* @__PURE__ */ jsxDEV15("div", {
|
|
3499
3920
|
"aria-hidden": "true",
|
|
3500
3921
|
style: {
|
|
3501
3922
|
visibility: "hidden",
|
|
@@ -3508,24 +3929,24 @@ function RoutingSection({
|
|
|
3508
3929
|
padding: "4px 8px"
|
|
3509
3930
|
},
|
|
3510
3931
|
children: [
|
|
3511
|
-
/* @__PURE__ */
|
|
3932
|
+
/* @__PURE__ */ jsxDEV15("span", {
|
|
3512
3933
|
style: { display: "flex", flexDirection: "row", alignItems: "center", gap: "10px" },
|
|
3513
3934
|
children: [
|
|
3514
|
-
/* @__PURE__ */
|
|
3935
|
+
/* @__PURE__ */ jsxDEV15("span", {
|
|
3515
3936
|
style: { fontSize: "10px", width: "16px" },
|
|
3516
3937
|
children: "0"
|
|
3517
3938
|
}, undefined, false, undefined, this),
|
|
3518
|
-
/* @__PURE__ */
|
|
3939
|
+
/* @__PURE__ */ jsxDEV15("span", {
|
|
3519
3940
|
style: { fontSize: "11px" },
|
|
3520
3941
|
children: "placeholder"
|
|
3521
3942
|
}, undefined, false, undefined, this)
|
|
3522
3943
|
]
|
|
3523
3944
|
}, undefined, true, undefined, this),
|
|
3524
|
-
/* @__PURE__ */
|
|
3945
|
+
/* @__PURE__ */ jsxDEV15("span", {
|
|
3525
3946
|
style: { fontSize: "10px" },
|
|
3526
3947
|
children: "placeholder"
|
|
3527
3948
|
}, undefined, false, undefined, this),
|
|
3528
|
-
/* @__PURE__ */
|
|
3949
|
+
/* @__PURE__ */ jsxDEV15("span", {}, undefined, false, undefined, this)
|
|
3529
3950
|
]
|
|
3530
3951
|
}, key, true, undefined, this))
|
|
3531
3952
|
]
|
|
@@ -3535,7 +3956,7 @@ function RoutingSection({
|
|
|
3535
3956
|
}
|
|
3536
3957
|
|
|
3537
3958
|
// src/devtools/browser/components/action_detail/ActionDetailPanel.tsx
|
|
3538
|
-
import { jsxDEV as
|
|
3959
|
+
import { jsxDEV as jsxDEV16 } from "react/jsx-dev-runtime";
|
|
3539
3960
|
var STATUS_BADGE_LABEL = {
|
|
3540
3961
|
running: "RUNNING",
|
|
3541
3962
|
success: "SUCCESS",
|
|
@@ -3566,7 +3987,7 @@ function DetailHeader({
|
|
|
3566
3987
|
const color = STATUS_COLOR[entry.status];
|
|
3567
3988
|
const StatusIconComponent = STATUS_ICON[entry.status];
|
|
3568
3989
|
const timestamp = formatTimestamp(entry.startTime);
|
|
3569
|
-
return /* @__PURE__ */
|
|
3990
|
+
return /* @__PURE__ */ jsxDEV16("div", {
|
|
3570
3991
|
onClick: !isActive ? onClick : undefined,
|
|
3571
3992
|
style: {
|
|
3572
3993
|
padding: "0.5em 1em",
|
|
@@ -3580,13 +4001,13 @@ function DetailHeader({
|
|
|
3580
4001
|
gap: "1em",
|
|
3581
4002
|
cursor: isActive ? "default" : "pointer"
|
|
3582
4003
|
},
|
|
3583
|
-
children: /* @__PURE__ */
|
|
4004
|
+
children: /* @__PURE__ */ jsxDEV16("div", {
|
|
3584
4005
|
style: { flex: 1, minWidth: 0, display: "flex", flexDirection: "column", gap: "0.5em" },
|
|
3585
4006
|
children: [
|
|
3586
|
-
/* @__PURE__ */
|
|
4007
|
+
/* @__PURE__ */ jsxDEV16("div", {
|
|
3587
4008
|
style: { display: "flex", alignItems: "center", minWidth: 0, gap: "0.5em" },
|
|
3588
4009
|
children: [
|
|
3589
|
-
/* @__PURE__ */
|
|
4010
|
+
/* @__PURE__ */ jsxDEV16("span", {
|
|
3590
4011
|
style: {
|
|
3591
4012
|
color,
|
|
3592
4013
|
flexShrink: 0,
|
|
@@ -3594,12 +4015,12 @@ function DetailHeader({
|
|
|
3594
4015
|
alignItems: "center",
|
|
3595
4016
|
animation: entry.status === "running" ? "__nice-action-pulse 1.2s ease-in-out infinite" : undefined
|
|
3596
4017
|
},
|
|
3597
|
-
children: /* @__PURE__ */
|
|
4018
|
+
children: /* @__PURE__ */ jsxDEV16(StatusIconComponent, {
|
|
3598
4019
|
size: 20,
|
|
3599
4020
|
strokeWidth: 1.75
|
|
3600
4021
|
}, undefined, false, undefined, this)
|
|
3601
4022
|
}, undefined, false, undefined, this),
|
|
3602
|
-
/* @__PURE__ */
|
|
4023
|
+
/* @__PURE__ */ jsxDEV16("span", {
|
|
3603
4024
|
style: {
|
|
3604
4025
|
color: DEVTOOL_COLOR_TEXT_EMPHASIS,
|
|
3605
4026
|
fontSize: "1.2em",
|
|
@@ -3613,7 +4034,7 @@ function DetailHeader({
|
|
|
3613
4034
|
},
|
|
3614
4035
|
children: entry.actionId
|
|
3615
4036
|
}, undefined, false, undefined, this),
|
|
3616
|
-
/* @__PURE__ */
|
|
4037
|
+
/* @__PURE__ */ jsxDEV16("span", {
|
|
3617
4038
|
style: {
|
|
3618
4039
|
flexShrink: 0,
|
|
3619
4040
|
padding: "2px 9px",
|
|
@@ -3628,14 +4049,14 @@ function DetailHeader({
|
|
|
3628
4049
|
},
|
|
3629
4050
|
children: STATUS_BADGE_LABEL[entry.status]
|
|
3630
4051
|
}, undefined, false, undefined, this),
|
|
3631
|
-
/* @__PURE__ */
|
|
4052
|
+
/* @__PURE__ */ jsxDEV16(DomainChip, {
|
|
3632
4053
|
domain: entry.domain,
|
|
3633
4054
|
allDomains: entry.allDomains,
|
|
3634
4055
|
size: "md" /* md */
|
|
3635
4056
|
}, undefined, false, undefined, this)
|
|
3636
4057
|
]
|
|
3637
4058
|
}, undefined, true, undefined, this),
|
|
3638
|
-
/* @__PURE__ */
|
|
4059
|
+
/* @__PURE__ */ jsxDEV16("div", {
|
|
3639
4060
|
style: {
|
|
3640
4061
|
display: "flex",
|
|
3641
4062
|
alignItems: "center",
|
|
@@ -3643,7 +4064,7 @@ function DetailHeader({
|
|
|
3643
4064
|
gap: "8px"
|
|
3644
4065
|
},
|
|
3645
4066
|
children: [
|
|
3646
|
-
/* @__PURE__ */
|
|
4067
|
+
/* @__PURE__ */ jsxDEV16("div", {
|
|
3647
4068
|
style: {
|
|
3648
4069
|
display: "flex",
|
|
3649
4070
|
alignItems: "center",
|
|
@@ -3652,20 +4073,20 @@ function DetailHeader({
|
|
|
3652
4073
|
overflow: "hidden"
|
|
3653
4074
|
},
|
|
3654
4075
|
children: [
|
|
3655
|
-
/* @__PURE__ */
|
|
4076
|
+
/* @__PURE__ */ jsxDEV16(HandlerChips, {
|
|
3656
4077
|
entry,
|
|
3657
4078
|
size: "md" /* md */
|
|
3658
4079
|
}, undefined, false, undefined, this),
|
|
3659
|
-
/* @__PURE__ */
|
|
4080
|
+
/* @__PURE__ */ jsxDEV16(ChildDispatchChips, {
|
|
3660
4081
|
childRouteItems: childExternalRouteItems,
|
|
3661
4082
|
size: "md" /* md */
|
|
3662
4083
|
}, undefined, false, undefined, this)
|
|
3663
4084
|
]
|
|
3664
4085
|
}, undefined, true, undefined, this),
|
|
3665
|
-
/* @__PURE__ */
|
|
4086
|
+
/* @__PURE__ */ jsxDEV16("div", {
|
|
3666
4087
|
style: { display: "flex", alignItems: "center", gap: "8px", flexShrink: 0 },
|
|
3667
4088
|
children: [
|
|
3668
|
-
/* @__PURE__ */
|
|
4089
|
+
/* @__PURE__ */ jsxDEV16("span", {
|
|
3669
4090
|
style: {
|
|
3670
4091
|
color: DEVTOOL_COLOR_SEMANTIC_METADATA,
|
|
3671
4092
|
fontSize: "10px",
|
|
@@ -3674,9 +4095,9 @@ function DetailHeader({
|
|
|
3674
4095
|
},
|
|
3675
4096
|
children: timestamp
|
|
3676
4097
|
}, undefined, false, undefined, this),
|
|
3677
|
-
/* @__PURE__ */
|
|
4098
|
+
/* @__PURE__ */ jsxDEV16("span", {
|
|
3678
4099
|
style: { color, fontSize: "12px", fontWeight: "500" },
|
|
3679
|
-
children: /* @__PURE__ */
|
|
4100
|
+
children: /* @__PURE__ */ jsxDEV16(DurationDisplay, {
|
|
3680
4101
|
entry
|
|
3681
4102
|
}, undefined, false, undefined, this)
|
|
3682
4103
|
}, undefined, false, undefined, this)
|
|
@@ -3694,10 +4115,10 @@ function ActionDetailPanel({
|
|
|
3694
4115
|
childEntries,
|
|
3695
4116
|
onSelectEntry
|
|
3696
4117
|
}) {
|
|
3697
|
-
const [focusedChildCuid, setFocusedChildCuid] =
|
|
4118
|
+
const [focusedChildCuid, setFocusedChildCuid] = useState7(null);
|
|
3698
4119
|
const focusedEntry = focusedChildCuid != null ? childEntries.find((e) => e.cuid === focusedChildCuid) ?? entry : entry;
|
|
3699
4120
|
const maxRoutingHops = Math.max(entry.meta.routing.length, ...childEntries.map((e) => e.meta.routing.length), 0);
|
|
3700
|
-
const maxCallSiteFrames = Math.max(countUserFrames(entry.callSite), ...childEntries.map((e) => countUserFrames(e.callSite)), 0);
|
|
4121
|
+
const maxCallSiteFrames = Math.max(countUserFrames(entry.meta.originClient, entry.callSite), ...childEntries.map((e) => countUserFrames(e.meta.originClient, e.callSite)), 0);
|
|
3701
4122
|
const childExternalRouteItems = useMemo(() => {
|
|
3702
4123
|
const seen = new Set;
|
|
3703
4124
|
const result = [];
|
|
@@ -3716,7 +4137,7 @@ function ActionDetailPanel({
|
|
|
3716
4137
|
const handleFocusChild = (cuid) => {
|
|
3717
4138
|
setFocusedChildCuid((prev) => prev === cuid ? null : cuid);
|
|
3718
4139
|
};
|
|
3719
|
-
return /* @__PURE__ */
|
|
4140
|
+
return /* @__PURE__ */ jsxDEV16("div", {
|
|
3720
4141
|
style: {
|
|
3721
4142
|
flex: 1,
|
|
3722
4143
|
display: "flex",
|
|
@@ -3726,20 +4147,20 @@ function ActionDetailPanel({
|
|
|
3726
4147
|
background: DEVTOOL_DETAIL_BASE_BACKGROUND
|
|
3727
4148
|
},
|
|
3728
4149
|
children: [
|
|
3729
|
-
/* @__PURE__ */
|
|
4150
|
+
/* @__PURE__ */ jsxDEV16(DetailHeader, {
|
|
3730
4151
|
entry,
|
|
3731
4152
|
isActive: focusedChildCuid === null,
|
|
3732
4153
|
onClick: () => setFocusedChildCuid(null),
|
|
3733
4154
|
childExternalRouteItems
|
|
3734
4155
|
}, undefined, false, undefined, this),
|
|
3735
|
-
/* @__PURE__ */
|
|
4156
|
+
/* @__PURE__ */ jsxDEV16(CallStackSection, {
|
|
3736
4157
|
parent,
|
|
3737
4158
|
childEntries,
|
|
3738
4159
|
focusedChildCuid,
|
|
3739
4160
|
onFocusChild: handleFocusChild,
|
|
3740
4161
|
onSelectParent: onSelectEntry
|
|
3741
4162
|
}, undefined, false, undefined, this),
|
|
3742
|
-
/* @__PURE__ */
|
|
4163
|
+
/* @__PURE__ */ jsxDEV16("div", {
|
|
3743
4164
|
style: {
|
|
3744
4165
|
flex: 1,
|
|
3745
4166
|
overflowY: "auto",
|
|
@@ -3750,36 +4171,37 @@ function ActionDetailPanel({
|
|
|
3750
4171
|
gap: "8px"
|
|
3751
4172
|
},
|
|
3752
4173
|
children: [
|
|
3753
|
-
focusedEntry.input !== undefined ? /* @__PURE__ */
|
|
4174
|
+
focusedEntry.input !== undefined ? /* @__PURE__ */ jsxDEV16(DetailSection, {
|
|
3754
4175
|
label: "Input",
|
|
3755
4176
|
value: focusedEntry.input
|
|
3756
|
-
}, undefined, false, undefined, this) : /* @__PURE__ */
|
|
4177
|
+
}, undefined, false, undefined, this) : /* @__PURE__ */ jsxDEV16(DetailSection, {
|
|
3757
4178
|
label: "Input",
|
|
3758
4179
|
value: "No input required or given"
|
|
3759
4180
|
}, undefined, false, undefined, this),
|
|
3760
|
-
focusedEntry.status === "success" && /* @__PURE__ */
|
|
4181
|
+
focusedEntry.status === "success" && /* @__PURE__ */ jsxDEV16(DetailSection, {
|
|
3761
4182
|
label: "Output",
|
|
3762
4183
|
value: focusedEntry.output,
|
|
3763
4184
|
color: DEVTOOL_COLOR_SEMANTIC_SUCCESS
|
|
3764
4185
|
}, undefined, false, undefined, this),
|
|
3765
|
-
(focusedEntry.status === "action-error" || focusedEntry.status === "failed" || focusedEntry.status === "aborted") && /* @__PURE__ */
|
|
4186
|
+
(focusedEntry.status === "action-error" || focusedEntry.status === "failed" || focusedEntry.status === "aborted") && /* @__PURE__ */ jsxDEV16(ActionErrorDisplay, {
|
|
3766
4187
|
entry: focusedEntry
|
|
3767
4188
|
}, undefined, false, undefined, this),
|
|
3768
|
-
focusedEntry.progressUpdates.length > 0 && /* @__PURE__ */
|
|
4189
|
+
focusedEntry.progressUpdates.length > 0 && /* @__PURE__ */ jsxDEV16(DetailSection, {
|
|
3769
4190
|
label: `Progress (${focusedEntry.progressUpdates.length})`,
|
|
3770
4191
|
value: focusedEntry.progressUpdates
|
|
3771
4192
|
}, undefined, false, undefined, this),
|
|
3772
|
-
/* @__PURE__ */
|
|
4193
|
+
/* @__PURE__ */ jsxDEV16(StackTraceSection, {
|
|
4194
|
+
runtime: entry.meta.originClient,
|
|
3773
4195
|
label: "Dispatch Site",
|
|
3774
4196
|
stack: focusedEntry.callSite,
|
|
3775
4197
|
color: DEVTOOL_COLOR_TEXT_SECONDARY,
|
|
3776
4198
|
minFrameCount: maxCallSiteFrames
|
|
3777
4199
|
}, undefined, false, undefined, this),
|
|
3778
|
-
/* @__PURE__ */
|
|
4200
|
+
/* @__PURE__ */ jsxDEV16(RoutingSection, {
|
|
3779
4201
|
entry: focusedEntry,
|
|
3780
4202
|
minHopCount: maxRoutingHops
|
|
3781
4203
|
}, undefined, false, undefined, this),
|
|
3782
|
-
/* @__PURE__ */
|
|
4204
|
+
/* @__PURE__ */ jsxDEV16(MetaSection, {
|
|
3783
4205
|
entry: focusedEntry
|
|
3784
4206
|
}, undefined, false, undefined, this)
|
|
3785
4207
|
]
|
|
@@ -3788,72 +4210,18 @@ function ActionDetailPanel({
|
|
|
3788
4210
|
}, undefined, true, undefined, this);
|
|
3789
4211
|
}
|
|
3790
4212
|
|
|
4213
|
+
// src/devtools/browser/components/action_list/ActionList.tsx
|
|
4214
|
+
import { useEffect as useEffect3, useMemo as useMemo2, useRef as useRef2 } from "react";
|
|
4215
|
+
|
|
3791
4216
|
// src/devtools/browser/components/action_list/ActionEntryRow.tsx
|
|
3792
|
-
import { Box, CircleX as
|
|
3793
|
-
import { Fragment as
|
|
4217
|
+
import { Box as Box2, CircleX as CircleX3, Variable as Variable2 } from "lucide-react";
|
|
4218
|
+
import { Fragment as Fragment8, useState as useState8 } from "react";
|
|
3794
4219
|
|
|
3795
|
-
// src/devtools/browser/components/
|
|
3796
|
-
import {
|
|
3797
|
-
import { jsxDEV as jsxDEV16, Fragment as Fragment6 } from "react/jsx-dev-runtime";
|
|
3798
|
-
var ICON_SIZE_PX = {
|
|
3799
|
-
["sm" /* sm */]: 13,
|
|
3800
|
-
["md" /* md */]: 16,
|
|
3801
|
-
["lg" /* lg */]: 18
|
|
3802
|
-
};
|
|
3803
|
-
function Icon({
|
|
3804
|
-
icon: IconComponent,
|
|
3805
|
-
color,
|
|
3806
|
-
size = "md" /* md */,
|
|
3807
|
-
subtle = false,
|
|
3808
|
-
tooltip,
|
|
3809
|
-
style
|
|
3810
|
-
}) {
|
|
3811
|
-
const [anchor, setAnchor] = useState7(null);
|
|
3812
|
-
const hasTooltip = tooltip != null;
|
|
3813
|
-
const colorEntry = SEMANTIC_COLORS[color];
|
|
3814
|
-
const resolvedColor = subtle ? colorEntry.subtle?.color ?? colorEntry.color : colorEntry.color;
|
|
3815
|
-
return /* @__PURE__ */ jsxDEV16(Fragment6, {
|
|
3816
|
-
children: [
|
|
3817
|
-
/* @__PURE__ */ jsxDEV16("div", {
|
|
3818
|
-
onMouseEnter: hasTooltip ? (e) => setAnchor(e.currentTarget.getBoundingClientRect()) : undefined,
|
|
3819
|
-
onMouseLeave: hasTooltip ? () => setAnchor(null) : undefined,
|
|
3820
|
-
style: {
|
|
3821
|
-
borderRadius: "0.4em",
|
|
3822
|
-
height: `${1.65 * getSizeValue(size)}em`,
|
|
3823
|
-
width: `${1.65 * getSizeValue(size)}em`,
|
|
3824
|
-
display: "flex",
|
|
3825
|
-
alignItems: "center",
|
|
3826
|
-
justifyContent: "center",
|
|
3827
|
-
background: "rgba(0,0,0,0.4)",
|
|
3828
|
-
color: resolvedColor,
|
|
3829
|
-
flexShrink: 0,
|
|
3830
|
-
cursor: hasTooltip ? "default" : undefined,
|
|
3831
|
-
...style
|
|
3832
|
-
},
|
|
3833
|
-
children: /* @__PURE__ */ jsxDEV16(IconComponent, {
|
|
3834
|
-
size: ICON_SIZE_PX[size],
|
|
3835
|
-
strokeWidth: 1.5
|
|
3836
|
-
}, undefined, false, undefined, this)
|
|
3837
|
-
}, undefined, false, undefined, this),
|
|
3838
|
-
anchor != null && hasTooltip && /* @__PURE__ */ jsxDEV16(Tooltip, {
|
|
3839
|
-
anchor,
|
|
3840
|
-
config: tooltip
|
|
3841
|
-
}, undefined, false, undefined, this)
|
|
3842
|
-
]
|
|
3843
|
-
}, undefined, true, undefined, this);
|
|
3844
|
-
}
|
|
4220
|
+
// src/devtools/browser/components/action_list/ActionInputAndOutputChip.tsx
|
|
4221
|
+
import { Box, CircleX as CircleX2, Sprout, Variable } from "lucide-react";
|
|
3845
4222
|
|
|
3846
|
-
// src/devtools/browser/components/action_list/
|
|
3847
|
-
import { jsxDEV as jsxDEV17, Fragment as
|
|
3848
|
-
function getLatestChipColor(status) {
|
|
3849
|
-
if (status === "failed")
|
|
3850
|
-
return "failed" /* failed */;
|
|
3851
|
-
if (status === "action-error")
|
|
3852
|
-
return "action_error" /* action_error */;
|
|
3853
|
-
if (status === "aborted")
|
|
3854
|
-
return "aborted" /* aborted */;
|
|
3855
|
-
return "success" /* success */;
|
|
3856
|
-
}
|
|
4223
|
+
// src/devtools/browser/components/action_list/IoTooltipContent.tsx
|
|
4224
|
+
import { jsxDEV as jsxDEV17, Fragment as Fragment7 } from "react/jsx-dev-runtime";
|
|
3857
4225
|
var JSON_TOKEN_RE2 = /("(?:\\.|[^"\\])*")(\s*:)?|(-?\d+(?:\.\d+)?(?:[eE][+-]?\d+)?)|(\btrue\b|\bfalse\b|\bnull\b|\bundefined\b)|([{}[\],])/g;
|
|
3858
4226
|
function renderColoredJson2(text) {
|
|
3859
4227
|
const nodes = [];
|
|
@@ -3925,6 +4293,84 @@ function IoTooltipContent({ value }) {
|
|
|
3925
4293
|
children: renderColoredJson2(text)
|
|
3926
4294
|
}, undefined, false, undefined, this);
|
|
3927
4295
|
}
|
|
4296
|
+
|
|
4297
|
+
// src/devtools/browser/components/action_list/ActionInputAndOutputChip.tsx
|
|
4298
|
+
import { jsxDEV as jsxDEV18 } from "react/jsx-dev-runtime";
|
|
4299
|
+
var ActionInputAndOutputChip = ({
|
|
4300
|
+
entry,
|
|
4301
|
+
breakReasons,
|
|
4302
|
+
subtle,
|
|
4303
|
+
size
|
|
4304
|
+
}) => {
|
|
4305
|
+
const firstHop = entry.meta.routing[0];
|
|
4306
|
+
const localEnvId = firstHop != null ? firstHop.runtime.envId : null;
|
|
4307
|
+
const externalLabel = firstHop != null ? getExternalLabel(firstHop) : null;
|
|
4308
|
+
const firstHopIsLocal = firstHop != null && firstHop.handlerType === "local";
|
|
4309
|
+
const isLocal = localEnvId != null && (firstHopIsLocal || externalLabel == null);
|
|
4310
|
+
const color = isLocal ? "handler_local" /* handler_local */ : "handler_external" /* handler_external */;
|
|
4311
|
+
const isNewInput = breakReasons.includes("new_input" /* new_input */);
|
|
4312
|
+
const isNewOutput = breakReasons.includes("new_output" /* new_output */);
|
|
4313
|
+
const hasError = entry.error != null || entry.abortReason != null;
|
|
4314
|
+
return /* @__PURE__ */ jsxDEV18(Chip, {
|
|
4315
|
+
color,
|
|
4316
|
+
size,
|
|
4317
|
+
subtle,
|
|
4318
|
+
children: /* @__PURE__ */ jsxDEV18("div", {
|
|
4319
|
+
style: { display: "flex", alignItems: "center", gap: "0.4em" },
|
|
4320
|
+
children: [
|
|
4321
|
+
/* @__PURE__ */ jsxDEV18(Icon, {
|
|
4322
|
+
icon: isNewInput ? [Sprout, Variable] : Variable,
|
|
4323
|
+
color,
|
|
4324
|
+
subtle: subtle || entry.input === undefined,
|
|
4325
|
+
tooltip: {
|
|
4326
|
+
content: entry.input !== undefined ? /* @__PURE__ */ jsxDEV18(IoTooltipContent, {
|
|
4327
|
+
value: entry.input
|
|
4328
|
+
}, undefined, false, undefined, this) : /* @__PURE__ */ jsxDEV18("span", {
|
|
4329
|
+
style: { color: DEVTOOL_COLOR_TEXT_MUTED, fontSize: "10px" },
|
|
4330
|
+
children: "No input required or given"
|
|
4331
|
+
}, undefined, false, undefined, this),
|
|
4332
|
+
title: isNewInput ? "New Input" : "Input"
|
|
4333
|
+
}
|
|
4334
|
+
}, undefined, false, undefined, this),
|
|
4335
|
+
isLocal ? localEnvId : externalLabel,
|
|
4336
|
+
entry.status === "success" && entry.output !== undefined && /* @__PURE__ */ jsxDEV18(Icon, {
|
|
4337
|
+
icon: isNewOutput ? [Sprout, Box] : Box,
|
|
4338
|
+
color: !hasError ? color : "default" /* default */,
|
|
4339
|
+
tooltip: {
|
|
4340
|
+
content: /* @__PURE__ */ jsxDEV18(IoTooltipContent, {
|
|
4341
|
+
value: entry.output
|
|
4342
|
+
}, undefined, false, undefined, this),
|
|
4343
|
+
title: isNewOutput ? "New Output" : "Output"
|
|
4344
|
+
}
|
|
4345
|
+
}, undefined, false, undefined, this),
|
|
4346
|
+
(entry.error != null || entry.abortReason != null) && /* @__PURE__ */ jsxDEV18(Icon, {
|
|
4347
|
+
icon: CircleX2,
|
|
4348
|
+
color: entry.status === "aborted" ? "aborted" /* aborted */ : "error" /* error */,
|
|
4349
|
+
tooltip: {
|
|
4350
|
+
content: /* @__PURE__ */ jsxDEV18(ActionErrorDisplay, {
|
|
4351
|
+
entry,
|
|
4352
|
+
compact: true
|
|
4353
|
+
}, undefined, false, undefined, this),
|
|
4354
|
+
title: entry.status === "aborted" ? "Aborted" : "Error",
|
|
4355
|
+
maxWidth: 340
|
|
4356
|
+
}
|
|
4357
|
+
}, undefined, false, undefined, this)
|
|
4358
|
+
]
|
|
4359
|
+
}, undefined, true, undefined, this)
|
|
4360
|
+
}, undefined, false, undefined, this);
|
|
4361
|
+
};
|
|
4362
|
+
|
|
4363
|
+
// src/devtools/browser/components/action_list/ActionEntryRow.tsx
|
|
4364
|
+
import { jsxDEV as jsxDEV19, Fragment as Fragment9 } from "react/jsx-dev-runtime";
|
|
4365
|
+
function getLatestChipColor(status) {
|
|
4366
|
+
if (status === "failed")
|
|
4367
|
+
return "failed" /* failed */;
|
|
4368
|
+
if (status === "action-error")
|
|
4369
|
+
return "action_error" /* action_error */;
|
|
4370
|
+
if (status === "aborted")
|
|
4371
|
+
return "aborted" /* aborted */;
|
|
4372
|
+
return "success" /* success */;
|
|
4373
|
+
}
|
|
3928
4374
|
function GroupDotTooltip({
|
|
3929
4375
|
entry,
|
|
3930
4376
|
index,
|
|
@@ -3937,14 +4383,14 @@ function GroupDotTooltip({
|
|
|
3937
4383
|
const deltaMs = refTime - entry.startTime;
|
|
3938
4384
|
const relStr = index === 0 ? "latest run" : `−${formatRelativeAge(deltaMs)} from latest`;
|
|
3939
4385
|
const durationStr = entry.endTime != null ? `${entry.endTime - entry.startTime}ms` : "running…";
|
|
3940
|
-
return /* @__PURE__ */
|
|
4386
|
+
return /* @__PURE__ */ jsxDEV19(Tooltip, {
|
|
3941
4387
|
anchor,
|
|
3942
4388
|
config: {
|
|
3943
4389
|
align: "center",
|
|
3944
4390
|
maxWidth: 240,
|
|
3945
|
-
content: /* @__PURE__ */
|
|
4391
|
+
content: /* @__PURE__ */ jsxDEV19(Fragment9, {
|
|
3946
4392
|
children: [
|
|
3947
|
-
/* @__PURE__ */
|
|
4393
|
+
/* @__PURE__ */ jsxDEV19("div", {
|
|
3948
4394
|
style: { color: dotColor, marginBottom: "1px" },
|
|
3949
4395
|
children: [
|
|
3950
4396
|
symbol,
|
|
@@ -3954,15 +4400,15 @@ function GroupDotTooltip({
|
|
|
3954
4400
|
total
|
|
3955
4401
|
]
|
|
3956
4402
|
}, undefined, true, undefined, this),
|
|
3957
|
-
/* @__PURE__ */
|
|
4403
|
+
/* @__PURE__ */ jsxDEV19("div", {
|
|
3958
4404
|
style: { color: DEVTOOL_COLOR_TEXT_SECONDARY },
|
|
3959
4405
|
children: formatTimestamp(entry.startTime)
|
|
3960
4406
|
}, undefined, false, undefined, this),
|
|
3961
|
-
/* @__PURE__ */
|
|
4407
|
+
/* @__PURE__ */ jsxDEV19("div", {
|
|
3962
4408
|
style: { color: DEVTOOL_COLOR_TEXT_MUTED },
|
|
3963
4409
|
children: durationStr
|
|
3964
4410
|
}, undefined, false, undefined, this),
|
|
3965
|
-
index > 0 && /* @__PURE__ */
|
|
4411
|
+
index > 0 && /* @__PURE__ */ jsxDEV19("div", {
|
|
3966
4412
|
style: {
|
|
3967
4413
|
color: DEVTOOL_COLOR_TEXT_MUTED,
|
|
3968
4414
|
marginTop: "3px",
|
|
@@ -3987,9 +4433,9 @@ function GroupDot({
|
|
|
3987
4433
|
const [anchor, setAnchor] = useState8(null);
|
|
3988
4434
|
const dotColor = STATUS_COLOR[entry.status];
|
|
3989
4435
|
const hovered = anchor != null;
|
|
3990
|
-
return /* @__PURE__ */
|
|
4436
|
+
return /* @__PURE__ */ jsxDEV19(Fragment9, {
|
|
3991
4437
|
children: [
|
|
3992
|
-
/* @__PURE__ */
|
|
4438
|
+
/* @__PURE__ */ jsxDEV19("button", {
|
|
3993
4439
|
"data-cuid": entry.cuid,
|
|
3994
4440
|
onClick: (e) => {
|
|
3995
4441
|
e.stopPropagation();
|
|
@@ -4011,7 +4457,7 @@ function GroupDot({
|
|
|
4011
4457
|
transition: "transform 0.1s ease, opacity 0.1s ease, border-color 0.1s ease"
|
|
4012
4458
|
}
|
|
4013
4459
|
}, undefined, false, undefined, this),
|
|
4014
|
-
hovered && anchor != null && /* @__PURE__ */
|
|
4460
|
+
hovered && anchor != null && /* @__PURE__ */ jsxDEV19(GroupDotTooltip, {
|
|
4015
4461
|
entry,
|
|
4016
4462
|
index,
|
|
4017
4463
|
total,
|
|
@@ -4034,12 +4480,10 @@ function ActionEntryRow({
|
|
|
4034
4480
|
selectedGroupCuid,
|
|
4035
4481
|
onSelectGroupEntry
|
|
4036
4482
|
}) {
|
|
4037
|
-
const statusSemantic = STATUS_THING[entry.status];
|
|
4038
|
-
const statusIcon = STATUS_ICON[entry.status];
|
|
4039
4483
|
const timestamp = formatTimestamp(entry.startTime);
|
|
4040
4484
|
const hasGroup = groupEntries != null && groupEntries.length > 1;
|
|
4041
|
-
const hasBottomContent = childEntries != null && childEntries.length > 0 || (breakReasons?.some((r) => r !== "
|
|
4042
|
-
return /* @__PURE__ */
|
|
4485
|
+
const hasBottomContent = childEntries != null && childEntries.length > 0 || (breakReasons?.some((r) => r !== "new_input" /* new_input */ && r !== "new_output" /* new_output */) ?? false) || entry.error != null || entry.abortReason != null;
|
|
4486
|
+
return /* @__PURE__ */ jsxDEV19("div", {
|
|
4043
4487
|
"data-cuid": entry.cuid,
|
|
4044
4488
|
onClick,
|
|
4045
4489
|
style: {
|
|
@@ -4047,7 +4491,7 @@ function ActionEntryRow({
|
|
|
4047
4491
|
display: "flex",
|
|
4048
4492
|
flexDirection: "column",
|
|
4049
4493
|
gap: "5px",
|
|
4050
|
-
padding: "
|
|
4494
|
+
padding: "0.5em 0.6em",
|
|
4051
4495
|
cursor: "pointer",
|
|
4052
4496
|
background: isSelected ? DEVTOOL_LIST_HEADER_SELECTED_BACKGROUND : "transparent",
|
|
4053
4497
|
border: `1px solid ${DEVTOOL_PANEL_BORDER}`,
|
|
@@ -4056,7 +4500,7 @@ function ActionEntryRow({
|
|
|
4056
4500
|
margin: "2px 4px"
|
|
4057
4501
|
},
|
|
4058
4502
|
children: [
|
|
4059
|
-
/* @__PURE__ */
|
|
4503
|
+
/* @__PURE__ */ jsxDEV19("div", {
|
|
4060
4504
|
style: {
|
|
4061
4505
|
position: "absolute",
|
|
4062
4506
|
left: "2em",
|
|
@@ -4068,23 +4512,24 @@ function ActionEntryRow({
|
|
|
4068
4512
|
zIndex: 0
|
|
4069
4513
|
}
|
|
4070
4514
|
}, undefined, false, undefined, this),
|
|
4071
|
-
/* @__PURE__ */
|
|
4515
|
+
/* @__PURE__ */ jsxDEV19("div", {
|
|
4072
4516
|
style: { display: "flex", alignItems: "center", gap: "8px" },
|
|
4073
4517
|
children: [
|
|
4074
|
-
/* @__PURE__ */
|
|
4518
|
+
/* @__PURE__ */ jsxDEV19("div", {
|
|
4075
4519
|
style: {
|
|
4076
4520
|
position: "relative",
|
|
4077
4521
|
zIndex: 1,
|
|
4078
4522
|
flexShrink: 0,
|
|
4079
|
-
minWidth: "4em",
|
|
4523
|
+
minWidth: "3.4em",
|
|
4080
4524
|
display: "flex",
|
|
4081
4525
|
alignItems: "center",
|
|
4082
4526
|
justifyContent: "flex-start"
|
|
4083
4527
|
},
|
|
4084
|
-
children: isLatest ? /* @__PURE__ */
|
|
4528
|
+
children: isLatest ? /* @__PURE__ */ jsxDEV19(Chip, {
|
|
4529
|
+
size: "sm" /* sm */,
|
|
4085
4530
|
color: getLatestChipColor(entry.status),
|
|
4086
4531
|
children: "latest"
|
|
4087
|
-
}, undefined, false, undefined, this) : /* @__PURE__ */
|
|
4532
|
+
}, undefined, false, undefined, this) : /* @__PURE__ */ jsxDEV19(Chip, {
|
|
4088
4533
|
size: "sm" /* sm */,
|
|
4089
4534
|
color: getLatestChipColor(entry.status),
|
|
4090
4535
|
children: [
|
|
@@ -4093,13 +4538,14 @@ function ActionEntryRow({
|
|
|
4093
4538
|
]
|
|
4094
4539
|
}, undefined, true, undefined, this)
|
|
4095
4540
|
}, undefined, false, undefined, this),
|
|
4096
|
-
/* @__PURE__ */
|
|
4541
|
+
/* @__PURE__ */ jsxDEV19("div", {
|
|
4097
4542
|
style: { flex: 1, minWidth: 0, display: "flex", alignItems: "center", gap: "0.5em" },
|
|
4098
4543
|
children: [
|
|
4099
|
-
/* @__PURE__ */
|
|
4544
|
+
/* @__PURE__ */ jsxDEV19("span", {
|
|
4100
4545
|
style: {
|
|
4101
4546
|
color: DEVTOOL_COLOR_TEXT_SECONDARY,
|
|
4102
|
-
fontSize: "
|
|
4547
|
+
fontSize: "1em",
|
|
4548
|
+
fontWeight: 400,
|
|
4103
4549
|
fontFamily: "ui-monospace, 'Cascadia Code', 'Source Code Pro', monospace",
|
|
4104
4550
|
overflow: "hidden",
|
|
4105
4551
|
textOverflow: "ellipsis",
|
|
@@ -4109,51 +4555,14 @@ function ActionEntryRow({
|
|
|
4109
4555
|
},
|
|
4110
4556
|
children: entry.actionId
|
|
4111
4557
|
}, undefined, false, undefined, this),
|
|
4112
|
-
/* @__PURE__ */
|
|
4113
|
-
|
|
4114
|
-
|
|
4115
|
-
}, undefined, false, undefined, this),
|
|
4116
|
-
/* @__PURE__ */ jsxDEV17(Icon, {
|
|
4117
|
-
icon: Variable,
|
|
4118
|
-
color: entry.input !== undefined ? "io_input" /* io_input */ : "default" /* default */,
|
|
4119
|
-
subtle: entry.input === undefined,
|
|
4120
|
-
tooltip: {
|
|
4121
|
-
content: entry.input !== undefined ? /* @__PURE__ */ jsxDEV17(IoTooltipContent, {
|
|
4122
|
-
value: entry.input
|
|
4123
|
-
}, undefined, false, undefined, this) : /* @__PURE__ */ jsxDEV17("span", {
|
|
4124
|
-
style: { color: DEVTOOL_COLOR_TEXT_MUTED, fontSize: "10px" },
|
|
4125
|
-
children: "No input required or given"
|
|
4126
|
-
}, undefined, false, undefined, this),
|
|
4127
|
-
title: "Input"
|
|
4128
|
-
}
|
|
4129
|
-
}, undefined, false, undefined, this),
|
|
4130
|
-
/* @__PURE__ */ jsxDEV17(HandlerChips, {
|
|
4131
|
-
entry,
|
|
4132
|
-
size: "sm" /* sm */
|
|
4133
|
-
}, undefined, false, undefined, this),
|
|
4134
|
-
entry.status === "success" && entry.output !== undefined && /* @__PURE__ */ jsxDEV17(Icon, {
|
|
4135
|
-
icon: Box,
|
|
4136
|
-
color: "io_output" /* io_output */,
|
|
4137
|
-
tooltip: { content: /* @__PURE__ */ jsxDEV17(IoTooltipContent, {
|
|
4138
|
-
value: entry.output
|
|
4139
|
-
}, undefined, false, undefined, this), title: "Output" }
|
|
4558
|
+
/* @__PURE__ */ jsxDEV19(ActionInputAndOutputChip, {
|
|
4559
|
+
breakReasons,
|
|
4560
|
+
entry
|
|
4140
4561
|
}, undefined, false, undefined, this),
|
|
4141
|
-
|
|
4142
|
-
icon: CircleX2,
|
|
4143
|
-
color: entry.status === "aborted" ? "aborted" /* aborted */ : "error" /* error */,
|
|
4144
|
-
tooltip: {
|
|
4145
|
-
content: /* @__PURE__ */ jsxDEV17(ActionErrorDisplay, {
|
|
4146
|
-
entry,
|
|
4147
|
-
compact: true
|
|
4148
|
-
}, undefined, false, undefined, this),
|
|
4149
|
-
title: entry.status === "aborted" ? "Aborted" : "Error",
|
|
4150
|
-
maxWidth: 340
|
|
4151
|
-
}
|
|
4152
|
-
}, undefined, false, undefined, this),
|
|
4153
|
-
/* @__PURE__ */ jsxDEV17("div", {
|
|
4562
|
+
/* @__PURE__ */ jsxDEV19("div", {
|
|
4154
4563
|
style: { flex: 1 }
|
|
4155
4564
|
}, undefined, false, undefined, this),
|
|
4156
|
-
/* @__PURE__ */
|
|
4565
|
+
/* @__PURE__ */ jsxDEV19("span", {
|
|
4157
4566
|
style: {
|
|
4158
4567
|
color: DEVTOOL_COLOR_SEMANTIC_METADATA,
|
|
4159
4568
|
fontSize: "10px",
|
|
@@ -4163,9 +4572,9 @@ function ActionEntryRow({
|
|
|
4163
4572
|
},
|
|
4164
4573
|
children: timestamp
|
|
4165
4574
|
}, undefined, false, undefined, this),
|
|
4166
|
-
/* @__PURE__ */
|
|
4575
|
+
/* @__PURE__ */ jsxDEV19("span", {
|
|
4167
4576
|
style: { color: DEVTOOL_COLOR_SEMANTIC_WARNING, fontSize: "11px", flexShrink: 0 },
|
|
4168
|
-
children: /* @__PURE__ */
|
|
4577
|
+
children: /* @__PURE__ */ jsxDEV19(DurationDisplay, {
|
|
4169
4578
|
entry
|
|
4170
4579
|
}, undefined, false, undefined, this)
|
|
4171
4580
|
}, undefined, false, undefined, this)
|
|
@@ -4173,7 +4582,7 @@ function ActionEntryRow({
|
|
|
4173
4582
|
}, undefined, true, undefined, this)
|
|
4174
4583
|
]
|
|
4175
4584
|
}, undefined, true, undefined, this),
|
|
4176
|
-
hasBottomContent && /* @__PURE__ */
|
|
4585
|
+
hasBottomContent && /* @__PURE__ */ jsxDEV19("div", {
|
|
4177
4586
|
style: {
|
|
4178
4587
|
display: "flex",
|
|
4179
4588
|
flexWrap: "wrap",
|
|
@@ -4182,33 +4591,35 @@ function ActionEntryRow({
|
|
|
4182
4591
|
paddingLeft: "4.5em"
|
|
4183
4592
|
},
|
|
4184
4593
|
children: [
|
|
4185
|
-
childEntries?.map((child) => /* @__PURE__ */
|
|
4594
|
+
childEntries?.map((child) => /* @__PURE__ */ jsxDEV19(Fragment8, {
|
|
4186
4595
|
children: [
|
|
4187
|
-
/* @__PURE__ */
|
|
4188
|
-
|
|
4596
|
+
/* @__PURE__ */ jsxDEV19(Icon, {
|
|
4597
|
+
size: "sm" /* sm */,
|
|
4598
|
+
icon: Variable2,
|
|
4189
4599
|
color: "io_input" /* io_input */,
|
|
4190
4600
|
subtle: true,
|
|
4191
4601
|
tooltip: {
|
|
4192
|
-
content: child.input !== undefined ? /* @__PURE__ */
|
|
4602
|
+
content: child.input !== undefined ? /* @__PURE__ */ jsxDEV19(IoTooltipContent, {
|
|
4193
4603
|
value: child.input
|
|
4194
|
-
}, undefined, false, undefined, this) : /* @__PURE__ */
|
|
4604
|
+
}, undefined, false, undefined, this) : /* @__PURE__ */ jsxDEV19("span", {
|
|
4195
4605
|
style: { color: DEVTOOL_COLOR_TEXT_MUTED, fontSize: "10px" },
|
|
4196
4606
|
children: "No input required or given"
|
|
4197
4607
|
}, undefined, false, undefined, this),
|
|
4198
4608
|
title: `Input · ${child.actionId}`
|
|
4199
4609
|
}
|
|
4200
4610
|
}, undefined, false, undefined, this),
|
|
4201
|
-
/* @__PURE__ */
|
|
4611
|
+
/* @__PURE__ */ jsxDEV19(HandlerChips, {
|
|
4202
4612
|
entry: child,
|
|
4203
4613
|
size: "sm" /* sm */,
|
|
4204
4614
|
subtle: true
|
|
4205
4615
|
}, undefined, false, undefined, this),
|
|
4206
|
-
child.status === "success" && child.output !== undefined && /* @__PURE__ */
|
|
4207
|
-
|
|
4616
|
+
child.status === "success" && child.output !== undefined && /* @__PURE__ */ jsxDEV19(Icon, {
|
|
4617
|
+
size: "sm" /* sm */,
|
|
4618
|
+
icon: Box2,
|
|
4208
4619
|
color: "io_output" /* io_output */,
|
|
4209
4620
|
subtle: true,
|
|
4210
4621
|
tooltip: {
|
|
4211
|
-
content: /* @__PURE__ */
|
|
4622
|
+
content: /* @__PURE__ */ jsxDEV19(IoTooltipContent, {
|
|
4212
4623
|
value: child.output
|
|
4213
4624
|
}, undefined, false, undefined, this),
|
|
4214
4625
|
title: `Output · ${child.actionId}`
|
|
@@ -4216,17 +4627,17 @@ function ActionEntryRow({
|
|
|
4216
4627
|
}, undefined, false, undefined, this)
|
|
4217
4628
|
]
|
|
4218
4629
|
}, child.actionId, true, undefined, this)),
|
|
4219
|
-
breakReasons?.filter((r) => r !== "
|
|
4630
|
+
breakReasons?.filter((r) => r !== "new_input" /* new_input */ && r !== "new_output" /* new_output */).map((reason) => /* @__PURE__ */ jsxDEV19(Chip, {
|
|
4220
4631
|
color: "default" /* default */,
|
|
4221
4632
|
subtle: true,
|
|
4222
4633
|
children: reason
|
|
4223
4634
|
}, reason, false, undefined, this)),
|
|
4224
|
-
(childEntries?.length ?? 0) > 0 && (entry.error != null || entry.abortReason != null) && /* @__PURE__ */
|
|
4225
|
-
icon:
|
|
4635
|
+
(childEntries?.length ?? 0) > 0 && (entry.error != null || entry.abortReason != null) && /* @__PURE__ */ jsxDEV19(Icon, {
|
|
4636
|
+
icon: CircleX3,
|
|
4226
4637
|
color: entry.status === "aborted" ? "aborted" /* aborted */ : "error" /* error */,
|
|
4227
4638
|
subtle: true,
|
|
4228
4639
|
tooltip: {
|
|
4229
|
-
content: /* @__PURE__ */
|
|
4640
|
+
content: /* @__PURE__ */ jsxDEV19(ActionErrorDisplay, {
|
|
4230
4641
|
entry,
|
|
4231
4642
|
compact: true
|
|
4232
4643
|
}, undefined, false, undefined, this),
|
|
@@ -4236,7 +4647,7 @@ function ActionEntryRow({
|
|
|
4236
4647
|
}, undefined, false, undefined, this)
|
|
4237
4648
|
]
|
|
4238
4649
|
}, undefined, true, undefined, this),
|
|
4239
|
-
hasGroup && /* @__PURE__ */
|
|
4650
|
+
hasGroup && /* @__PURE__ */ jsxDEV19("div", {
|
|
4240
4651
|
style: {
|
|
4241
4652
|
display: "flex",
|
|
4242
4653
|
flexWrap: "wrap",
|
|
@@ -4245,7 +4656,7 @@ function ActionEntryRow({
|
|
|
4245
4656
|
paddingLeft: "4.6em",
|
|
4246
4657
|
paddingBottom: "2px"
|
|
4247
4658
|
},
|
|
4248
|
-
children: groupEntries.map((e, i) => /* @__PURE__ */
|
|
4659
|
+
children: groupEntries.map((e, i) => /* @__PURE__ */ jsxDEV19(GroupDot, {
|
|
4249
4660
|
entry: e,
|
|
4250
4661
|
index: i,
|
|
4251
4662
|
total: groupEntries.length,
|
|
@@ -4258,8 +4669,124 @@ function ActionEntryRow({
|
|
|
4258
4669
|
}, undefined, true, undefined, this);
|
|
4259
4670
|
}
|
|
4260
4671
|
|
|
4672
|
+
// src/devtools/browser/components/action_list/ActionList.tsx
|
|
4673
|
+
import { jsxDEV as jsxDEV20 } from "react/jsx-dev-runtime";
|
|
4674
|
+
function getBreakReasons(current, previous) {
|
|
4675
|
+
const reasons = [];
|
|
4676
|
+
const inputChanged = current.inputHash != null && previous.inputHash != null ? current.inputHash !== previous.inputHash : safeStringify(current.input, 0) !== safeStringify(previous.input, 0);
|
|
4677
|
+
if (inputChanged)
|
|
4678
|
+
reasons.push("new_input" /* new_input */);
|
|
4679
|
+
const outputChanged = current.outputHash != null && previous.outputHash != null && current.outputHash !== previous.outputHash;
|
|
4680
|
+
if (outputChanged)
|
|
4681
|
+
reasons.push("new_output" /* new_output */);
|
|
4682
|
+
return reasons;
|
|
4683
|
+
}
|
|
4684
|
+
function getGroupChildEntries(group, childEntriesMap) {
|
|
4685
|
+
const seen = new Set;
|
|
4686
|
+
const result = [];
|
|
4687
|
+
for (const e of [group.representative, ...group.rest]) {
|
|
4688
|
+
for (const child of childEntriesMap.get(e.cuid) ?? []) {
|
|
4689
|
+
if (!seen.has(child.actionId)) {
|
|
4690
|
+
seen.add(child.actionId);
|
|
4691
|
+
result.push(child);
|
|
4692
|
+
}
|
|
4693
|
+
}
|
|
4694
|
+
}
|
|
4695
|
+
return result.length > 0 ? result.sort((a, b) => a.startTime - b.startTime) : undefined;
|
|
4696
|
+
}
|
|
4697
|
+
function getFlatItemKey(item) {
|
|
4698
|
+
const oldestCuid = item.group.rest[item.group.rest.length - 1]?.cuid ?? item.group.representative.cuid;
|
|
4699
|
+
return `g:${oldestCuid}`;
|
|
4700
|
+
}
|
|
4701
|
+
function ActionList({
|
|
4702
|
+
groups,
|
|
4703
|
+
selectedCuid,
|
|
4704
|
+
onGroupClick,
|
|
4705
|
+
onSubClick,
|
|
4706
|
+
childEntriesMap,
|
|
4707
|
+
style
|
|
4708
|
+
}) {
|
|
4709
|
+
const containerRef = useRef2(null);
|
|
4710
|
+
const latestTime = groups[0]?.representative.startTime;
|
|
4711
|
+
const flatItems = useMemo2(() => {
|
|
4712
|
+
return groups.map((group, gi) => {
|
|
4713
|
+
const prevGroup = groups[gi + 1];
|
|
4714
|
+
let breakReasons = [];
|
|
4715
|
+
if (prevGroup != null && prevGroup.representative.actionId === group.representative.actionId && prevGroup.representative.domain === group.representative.domain) {
|
|
4716
|
+
const reasons = getBreakReasons(group.representative, prevGroup.representative);
|
|
4717
|
+
if (reasons.length > 0)
|
|
4718
|
+
breakReasons = reasons;
|
|
4719
|
+
}
|
|
4720
|
+
return { group, groupIndex: gi, breakReasons };
|
|
4721
|
+
});
|
|
4722
|
+
}, [groups]);
|
|
4723
|
+
const prevSelectedRef = useRef2(selectedCuid);
|
|
4724
|
+
useEffect3(() => {
|
|
4725
|
+
if (selectedCuid === prevSelectedRef.current)
|
|
4726
|
+
return;
|
|
4727
|
+
prevSelectedRef.current = selectedCuid;
|
|
4728
|
+
if (selectedCuid == null)
|
|
4729
|
+
return;
|
|
4730
|
+
let repCuid = selectedCuid;
|
|
4731
|
+
for (const item of flatItems) {
|
|
4732
|
+
if (item.group.rest.some((e) => e.cuid === selectedCuid)) {
|
|
4733
|
+
repCuid = item.group.representative.cuid;
|
|
4734
|
+
break;
|
|
4735
|
+
}
|
|
4736
|
+
}
|
|
4737
|
+
containerRef.current?.querySelector(`[data-cuid="${repCuid}"]`)?.scrollIntoView({ block: "nearest" });
|
|
4738
|
+
}, [selectedCuid, flatItems]);
|
|
4739
|
+
if (groups.length === 0) {
|
|
4740
|
+
return /* @__PURE__ */ jsxDEV20("div", {
|
|
4741
|
+
style,
|
|
4742
|
+
children: /* @__PURE__ */ jsxDEV20("div", {
|
|
4743
|
+
style: { padding: "24px", textAlign: "center", color: DEVTOOL_COLOR_TEXT_MUTED },
|
|
4744
|
+
children: "No actions recorded yet"
|
|
4745
|
+
}, undefined, false, undefined, this)
|
|
4746
|
+
}, undefined, false, undefined, this);
|
|
4747
|
+
}
|
|
4748
|
+
return /* @__PURE__ */ jsxDEV20("div", {
|
|
4749
|
+
ref: containerRef,
|
|
4750
|
+
style,
|
|
4751
|
+
children: flatItems.map((item) => {
|
|
4752
|
+
const key = getFlatItemKey(item);
|
|
4753
|
+
const { group } = item;
|
|
4754
|
+
return /* @__PURE__ */ jsxDEV20("div", {
|
|
4755
|
+
style: {
|
|
4756
|
+
borderBottom: `1px solid ${DEVTOOL_LIST_GROUP_DIVIDER}`,
|
|
4757
|
+
position: "relative",
|
|
4758
|
+
overflow: "hidden"
|
|
4759
|
+
},
|
|
4760
|
+
children: [
|
|
4761
|
+
/* @__PURE__ */ jsxDEV20("div", {
|
|
4762
|
+
style: {
|
|
4763
|
+
position: "absolute",
|
|
4764
|
+
inset: 0,
|
|
4765
|
+
pointerEvents: "none",
|
|
4766
|
+
background: "linear-gradient(90deg, transparent 0%, rgba(148, 210, 255, 0.13) 50%, transparent 100%)",
|
|
4767
|
+
animation: "__nice-action-shine 0.65s ease-out forwards"
|
|
4768
|
+
}
|
|
4769
|
+
}, group.representative.cuid, false, undefined, this),
|
|
4770
|
+
/* @__PURE__ */ jsxDEV20(ActionEntryRow, {
|
|
4771
|
+
entry: group.representative,
|
|
4772
|
+
isSelected: selectedCuid === group.representative.cuid || group.rest.some((e) => e.cuid === selectedCuid),
|
|
4773
|
+
isLatest: item.groupIndex === 0,
|
|
4774
|
+
latestTime,
|
|
4775
|
+
childEntries: getGroupChildEntries(group, childEntriesMap),
|
|
4776
|
+
breakReasons: item.breakReasons,
|
|
4777
|
+
groupEntries: group.rest.length > 0 ? [group.representative, ...group.rest] : undefined,
|
|
4778
|
+
selectedGroupCuid: selectedCuid,
|
|
4779
|
+
onSelectGroupEntry: (cuid) => onSubClick(cuid, selectedCuid === cuid),
|
|
4780
|
+
onClick: () => onGroupClick(group)
|
|
4781
|
+
}, undefined, false, undefined, this)
|
|
4782
|
+
]
|
|
4783
|
+
}, key, true, undefined, this);
|
|
4784
|
+
})
|
|
4785
|
+
}, undefined, false, undefined, this);
|
|
4786
|
+
}
|
|
4787
|
+
|
|
4261
4788
|
// src/devtools/browser/components/PanelChrome.tsx
|
|
4262
|
-
import { jsxDEV as
|
|
4789
|
+
import { jsxDEV as jsxDEV21 } from "react/jsx-dev-runtime";
|
|
4263
4790
|
var DOCKED_SIZE_MIN = 140;
|
|
4264
4791
|
var POSITION_GRID = [
|
|
4265
4792
|
["top-left", "dock-top", "top-right"],
|
|
@@ -4283,7 +4810,7 @@ function PanelHeader({
|
|
|
4283
4810
|
onClose,
|
|
4284
4811
|
onClear
|
|
4285
4812
|
}) {
|
|
4286
|
-
return /* @__PURE__ */
|
|
4813
|
+
return /* @__PURE__ */ jsxDEV21("div", {
|
|
4287
4814
|
style: {
|
|
4288
4815
|
display: "flex",
|
|
4289
4816
|
alignItems: "center",
|
|
@@ -4294,18 +4821,18 @@ function PanelHeader({
|
|
|
4294
4821
|
flexShrink: 0
|
|
4295
4822
|
},
|
|
4296
4823
|
children: [
|
|
4297
|
-
/* @__PURE__ */
|
|
4824
|
+
/* @__PURE__ */ jsxDEV21("span", {
|
|
4298
4825
|
style: { color: DEVTOOL_COLOR_SEMANTIC_SYSTEM, fontWeight: "bold", fontSize: "11px" },
|
|
4299
4826
|
children: "⚡ nice-action devtools"
|
|
4300
4827
|
}, undefined, false, undefined, this),
|
|
4301
|
-
/* @__PURE__ */
|
|
4828
|
+
/* @__PURE__ */ jsxDEV21("div", {
|
|
4302
4829
|
style: { display: "flex", gap: "10px", alignItems: "center" },
|
|
4303
4830
|
children: [
|
|
4304
|
-
/* @__PURE__ */
|
|
4831
|
+
/* @__PURE__ */ jsxDEV21(PositionPicker, {
|
|
4305
4832
|
position,
|
|
4306
4833
|
onChange: onPositionChange
|
|
4307
4834
|
}, undefined, false, undefined, this),
|
|
4308
|
-
onClear != null && /* @__PURE__ */
|
|
4835
|
+
onClear != null && /* @__PURE__ */ jsxDEV21("button", {
|
|
4309
4836
|
onClick: onClear,
|
|
4310
4837
|
style: {
|
|
4311
4838
|
background: "none",
|
|
@@ -4317,7 +4844,7 @@ function PanelHeader({
|
|
|
4317
4844
|
},
|
|
4318
4845
|
children: "clear"
|
|
4319
4846
|
}, undefined, false, undefined, this),
|
|
4320
|
-
/* @__PURE__ */
|
|
4847
|
+
/* @__PURE__ */ jsxDEV21("button", {
|
|
4321
4848
|
onClick: onClose,
|
|
4322
4849
|
style: {
|
|
4323
4850
|
background: "none",
|
|
@@ -4339,18 +4866,18 @@ function PositionPicker({
|
|
|
4339
4866
|
position,
|
|
4340
4867
|
onChange
|
|
4341
4868
|
}) {
|
|
4342
|
-
return /* @__PURE__ */
|
|
4869
|
+
return /* @__PURE__ */ jsxDEV21("div", {
|
|
4343
4870
|
title: "Move / dock panel",
|
|
4344
4871
|
style: { display: "grid", gridTemplateColumns: "repeat(3, 9px)", gap: "2px", padding: "2px" },
|
|
4345
4872
|
children: POSITION_GRID.flat().map((pos) => {
|
|
4346
4873
|
if (pos == null)
|
|
4347
|
-
return /* @__PURE__ */
|
|
4874
|
+
return /* @__PURE__ */ jsxDEV21("div", {
|
|
4348
4875
|
style: { width: "9px", height: "9px" }
|
|
4349
4876
|
}, "center-empty", false, undefined, this);
|
|
4350
4877
|
const isDock = pos.startsWith("dock-");
|
|
4351
4878
|
const isTopBottom = pos === "dock-top" || pos === "dock-bottom";
|
|
4352
4879
|
const isActive = pos === position;
|
|
4353
|
-
return /* @__PURE__ */
|
|
4880
|
+
return /* @__PURE__ */ jsxDEV21("div", {
|
|
4354
4881
|
title: pos,
|
|
4355
4882
|
onClick: () => onChange(pos),
|
|
4356
4883
|
style: {
|
|
@@ -4361,7 +4888,7 @@ function PositionPicker({
|
|
|
4361
4888
|
justifyContent: "center",
|
|
4362
4889
|
cursor: "pointer"
|
|
4363
4890
|
},
|
|
4364
|
-
children: /* @__PURE__ */
|
|
4891
|
+
children: /* @__PURE__ */ jsxDEV21("div", {
|
|
4365
4892
|
style: {
|
|
4366
4893
|
width: isDock ? isTopBottom ? "9px" : "3px" : "7px",
|
|
4367
4894
|
height: isDock ? isTopBottom ? "3px" : "9px" : "7px",
|
|
@@ -4397,7 +4924,7 @@ function ResizeHandle({
|
|
|
4397
4924
|
window.addEventListener("mouseup", onUp);
|
|
4398
4925
|
};
|
|
4399
4926
|
const edgeStyle = dockSide === "bottom" ? { top: 0, left: 0, right: 0, height: "5px", cursor: "ns-resize" } : dockSide === "top" ? { bottom: 0, left: 0, right: 0, height: "5px", cursor: "ns-resize" } : dockSide === "right" ? { top: 0, bottom: 0, left: 0, width: "5px", cursor: "ew-resize" } : { top: 0, bottom: 0, right: 0, width: "5px", cursor: "ew-resize" };
|
|
4400
|
-
return /* @__PURE__ */
|
|
4927
|
+
return /* @__PURE__ */ jsxDEV21("div", {
|
|
4401
4928
|
onMouseDown,
|
|
4402
4929
|
style: {
|
|
4403
4930
|
position: "absolute",
|
|
@@ -4409,7 +4936,7 @@ function ResizeHandle({
|
|
|
4409
4936
|
}
|
|
4410
4937
|
|
|
4411
4938
|
// src/devtools/browser/NiceActionDevtools.tsx
|
|
4412
|
-
import { jsxDEV as
|
|
4939
|
+
import { jsxDEV as jsxDEV22, Fragment as Fragment10 } from "react/jsx-dev-runtime";
|
|
4413
4940
|
if (typeof document !== "undefined" && !document.getElementById("__nice-action-devtools-styles")) {
|
|
4414
4941
|
const style = document.createElement("style");
|
|
4415
4942
|
style.id = "__nice-action-devtools-styles";
|
|
@@ -4502,7 +5029,7 @@ function groupEntries(entries) {
|
|
|
4502
5029
|
}
|
|
4503
5030
|
function NiceActionDevtools(props) {
|
|
4504
5031
|
if (false) {}
|
|
4505
|
-
return /* @__PURE__ */
|
|
5032
|
+
return /* @__PURE__ */ jsxDEV22(NiceActionDevtools_Panel, {
|
|
4506
5033
|
...props
|
|
4507
5034
|
}, undefined, false, undefined, this);
|
|
4508
5035
|
}
|
|
@@ -4514,13 +5041,13 @@ function NiceActionDevtools_Panel({
|
|
|
4514
5041
|
const [prefs, setPrefsRaw] = useState9(() => readPrefs(defaultPosition, initialOpen));
|
|
4515
5042
|
const [entries, setEntries] = useState9([]);
|
|
4516
5043
|
const [selectedCuid, setSelectedCuid] = useState9(null);
|
|
4517
|
-
|
|
4518
|
-
const groups =
|
|
5044
|
+
useEffect4(() => core.subscribe(setEntries), [core]);
|
|
5045
|
+
const groups = useMemo3(() => {
|
|
4519
5046
|
const byCuid = new Map(entries.map((e) => [e.cuid, e]));
|
|
4520
5047
|
const roots = entries.filter((e) => e.status !== "running" && (e.parentCuid == null || !byCuid.has(e.parentCuid)));
|
|
4521
5048
|
return groupEntries(roots);
|
|
4522
5049
|
}, [entries]);
|
|
4523
|
-
const childEntriesMap =
|
|
5050
|
+
const childEntriesMap = useMemo3(() => {
|
|
4524
5051
|
const map = new Map;
|
|
4525
5052
|
for (const entry of entries) {
|
|
4526
5053
|
if (entry.parentCuid == null)
|
|
@@ -4556,7 +5083,7 @@ function NiceActionDevtools_Panel({
|
|
|
4556
5083
|
const dockedSize = isHorizDock ? dockedHeight : dockedWidth;
|
|
4557
5084
|
const selectedEntry = selectedCuid != null ? entries.find((e) => e.cuid === selectedCuid) : null;
|
|
4558
5085
|
const runningCount = entries.filter((e) => e.status === "running").length;
|
|
4559
|
-
|
|
5086
|
+
useEffect4(() => {
|
|
4560
5087
|
const sides = ["top", "bottom", "left", "right"];
|
|
4561
5088
|
const clearAll = () => {
|
|
4562
5089
|
sides.forEach((s) => {
|
|
@@ -4595,7 +5122,7 @@ function NiceActionDevtools_Panel({
|
|
|
4595
5122
|
fontSize: "12px"
|
|
4596
5123
|
};
|
|
4597
5124
|
if (!isOpen) {
|
|
4598
|
-
return /* @__PURE__ */
|
|
5125
|
+
return /* @__PURE__ */ jsxDEV22("button", {
|
|
4599
5126
|
onClick: () => setPrefs({ isOpen: true }),
|
|
4600
5127
|
style: {
|
|
4601
5128
|
...baseStyle,
|
|
@@ -4610,7 +5137,7 @@ function NiceActionDevtools_Panel({
|
|
|
4610
5137
|
},
|
|
4611
5138
|
children: [
|
|
4612
5139
|
"⚡ actions",
|
|
4613
|
-
runningCount > 0 && /* @__PURE__ */
|
|
5140
|
+
runningCount > 0 && /* @__PURE__ */ jsxDEV22("span", {
|
|
4614
5141
|
style: {
|
|
4615
5142
|
marginLeft: "6px",
|
|
4616
5143
|
color: DEVTOOL_COLOR_SEMANTIC_SYSTEM,
|
|
@@ -4683,16 +5210,16 @@ function NiceActionDevtools_Panel({
|
|
|
4683
5210
|
},
|
|
4684
5211
|
childEntriesMap
|
|
4685
5212
|
};
|
|
4686
|
-
return /* @__PURE__ */
|
|
5213
|
+
return /* @__PURE__ */ jsxDEV22("div", {
|
|
4687
5214
|
id: "__nice-action-devtools-panel",
|
|
4688
5215
|
style: panelStyle,
|
|
4689
5216
|
children: [
|
|
4690
|
-
dockSide != null && /* @__PURE__ */
|
|
5217
|
+
dockSide != null && /* @__PURE__ */ jsxDEV22(ResizeHandle, {
|
|
4691
5218
|
dockSide,
|
|
4692
5219
|
dockedSize,
|
|
4693
5220
|
onChange: (size) => setPrefs(isHorizDock ? { dockedHeight: size } : { dockedWidth: size })
|
|
4694
5221
|
}, undefined, false, undefined, this),
|
|
4695
|
-
/* @__PURE__ */
|
|
5222
|
+
/* @__PURE__ */ jsxDEV22(PanelHeader, {
|
|
4696
5223
|
position,
|
|
4697
5224
|
onPositionChange: (p) => setPrefs({ position: p }),
|
|
4698
5225
|
onClose: () => setPrefs({ isOpen: false }),
|
|
@@ -4701,17 +5228,17 @@ function NiceActionDevtools_Panel({
|
|
|
4701
5228
|
setSelectedCuid(null);
|
|
4702
5229
|
} : undefined
|
|
4703
5230
|
}, undefined, false, undefined, this),
|
|
4704
|
-
isHorizDock ? /* @__PURE__ */
|
|
5231
|
+
isHorizDock ? /* @__PURE__ */ jsxDEV22("div", {
|
|
4705
5232
|
style: { flex: 1, display: "flex", overflow: "hidden" },
|
|
4706
5233
|
children: [
|
|
4707
|
-
/* @__PURE__ */
|
|
5234
|
+
/* @__PURE__ */ jsxDEV22("div", {
|
|
4708
5235
|
style: { position: "relative", width: "340px", flexShrink: 0 },
|
|
4709
5236
|
children: [
|
|
4710
|
-
/* @__PURE__ */
|
|
5237
|
+
/* @__PURE__ */ jsxDEV22(ActionList, {
|
|
4711
5238
|
...virtualListProps,
|
|
4712
5239
|
style: { width: "100%", height: "100%", overflowY: "auto" }
|
|
4713
5240
|
}, undefined, false, undefined, this),
|
|
4714
|
-
/* @__PURE__ */
|
|
5241
|
+
/* @__PURE__ */ jsxDEV22("div", {
|
|
4715
5242
|
style: {
|
|
4716
5243
|
position: "absolute",
|
|
4717
5244
|
top: 0,
|
|
@@ -4724,7 +5251,7 @@ function NiceActionDevtools_Panel({
|
|
|
4724
5251
|
}, undefined, false, undefined, this)
|
|
4725
5252
|
]
|
|
4726
5253
|
}, undefined, true, undefined, this),
|
|
4727
|
-
/* @__PURE__ */
|
|
5254
|
+
/* @__PURE__ */ jsxDEV22("div", {
|
|
4728
5255
|
style: {
|
|
4729
5256
|
flex: 1,
|
|
4730
5257
|
display: "flex",
|
|
@@ -4733,12 +5260,12 @@ function NiceActionDevtools_Panel({
|
|
|
4733
5260
|
borderLeft: `1px solid ${DEVTOOL_PANEL_DIVIDER_BORDER}`,
|
|
4734
5261
|
boxShadow: "inset 18px 0 36px -14px rgba(0,0,0,0.8)"
|
|
4735
5262
|
},
|
|
4736
|
-
children: selectedEntry != null ? /* @__PURE__ */
|
|
5263
|
+
children: selectedEntry != null ? /* @__PURE__ */ jsxDEV22(ActionDetailPanel, {
|
|
4737
5264
|
entry: selectedEntry,
|
|
4738
5265
|
parent: selectedEntryParent,
|
|
4739
5266
|
childEntries: selectedEntryChildren,
|
|
4740
5267
|
onSelectEntry: (cuid) => setSelectedCuid(cuid)
|
|
4741
|
-
}, selectedEntry.cuid, false, undefined, this) : /* @__PURE__ */
|
|
5268
|
+
}, selectedEntry.cuid, false, undefined, this) : /* @__PURE__ */ jsxDEV22("div", {
|
|
4742
5269
|
style: {
|
|
4743
5270
|
padding: "24px",
|
|
4744
5271
|
textAlign: "center",
|
|
@@ -4749,16 +5276,16 @@ function NiceActionDevtools_Panel({
|
|
|
4749
5276
|
}, undefined, false, undefined, this)
|
|
4750
5277
|
}, undefined, false, undefined, this)
|
|
4751
5278
|
]
|
|
4752
|
-
}, undefined, true, undefined, this) : /* @__PURE__ */
|
|
5279
|
+
}, undefined, true, undefined, this) : /* @__PURE__ */ jsxDEV22(Fragment10, {
|
|
4753
5280
|
children: [
|
|
4754
|
-
/* @__PURE__ */
|
|
5281
|
+
/* @__PURE__ */ jsxDEV22("div", {
|
|
4755
5282
|
style: { position: "relative", flex: 1, minHeight: "80px" },
|
|
4756
5283
|
children: [
|
|
4757
|
-
/* @__PURE__ */
|
|
5284
|
+
/* @__PURE__ */ jsxDEV22(ActionList, {
|
|
4758
5285
|
...virtualListProps,
|
|
4759
5286
|
style: { overflowY: "auto", height: "100%" }
|
|
4760
5287
|
}, undefined, false, undefined, this),
|
|
4761
|
-
selectedEntry != null && /* @__PURE__ */
|
|
5288
|
+
selectedEntry != null && /* @__PURE__ */ jsxDEV22("div", {
|
|
4762
5289
|
style: {
|
|
4763
5290
|
position: "absolute",
|
|
4764
5291
|
bottom: 0,
|
|
@@ -4771,7 +5298,7 @@ function NiceActionDevtools_Panel({
|
|
|
4771
5298
|
}, undefined, false, undefined, this)
|
|
4772
5299
|
]
|
|
4773
5300
|
}, undefined, true, undefined, this),
|
|
4774
|
-
selectedEntry != null && /* @__PURE__ */
|
|
5301
|
+
selectedEntry != null && /* @__PURE__ */ jsxDEV22("div", {
|
|
4775
5302
|
style: {
|
|
4776
5303
|
flexShrink: 0,
|
|
4777
5304
|
maxHeight: "55%",
|
|
@@ -4781,7 +5308,7 @@ function NiceActionDevtools_Panel({
|
|
|
4781
5308
|
borderTop: `1px solid ${DEVTOOL_PANEL_DIVIDER_BORDER}`,
|
|
4782
5309
|
boxShadow: "inset 0 18px 36px -14px rgba(0,0,0,0.8)"
|
|
4783
5310
|
},
|
|
4784
|
-
children: /* @__PURE__ */
|
|
5311
|
+
children: /* @__PURE__ */ jsxDEV22(ActionDetailPanel, {
|
|
4785
5312
|
entry: selectedEntry,
|
|
4786
5313
|
parent: selectedEntryParent,
|
|
4787
5314
|
childEntries: selectedEntryChildren,
|
|
@@ -4793,119 +5320,6 @@ function NiceActionDevtools_Panel({
|
|
|
4793
5320
|
]
|
|
4794
5321
|
}, undefined, true, undefined, this);
|
|
4795
5322
|
}
|
|
4796
|
-
function getBreakReasons(current, previous) {
|
|
4797
|
-
const reasons = [];
|
|
4798
|
-
const inputChanged = current.inputHash != null && previous.inputHash != null ? current.inputHash !== previous.inputHash : safeStringify(current.input, 0) !== safeStringify(previous.input, 0);
|
|
4799
|
-
if (inputChanged)
|
|
4800
|
-
reasons.push("new input");
|
|
4801
|
-
const outputChanged = current.outputHash != null && previous.outputHash != null && current.outputHash !== previous.outputHash;
|
|
4802
|
-
if (outputChanged)
|
|
4803
|
-
reasons.push("new output");
|
|
4804
|
-
return reasons;
|
|
4805
|
-
}
|
|
4806
|
-
function getGroupChildEntries(group, childEntriesMap) {
|
|
4807
|
-
const seen = new Set;
|
|
4808
|
-
const result = [];
|
|
4809
|
-
for (const e of [group.representative, ...group.rest]) {
|
|
4810
|
-
for (const child of childEntriesMap.get(e.cuid) ?? []) {
|
|
4811
|
-
if (!seen.has(child.actionId)) {
|
|
4812
|
-
seen.add(child.actionId);
|
|
4813
|
-
result.push(child);
|
|
4814
|
-
}
|
|
4815
|
-
}
|
|
4816
|
-
}
|
|
4817
|
-
return result.length > 0 ? result.sort((a, b) => a.startTime - b.startTime) : undefined;
|
|
4818
|
-
}
|
|
4819
|
-
function getFlatItemKey(item) {
|
|
4820
|
-
const oldestCuid = item.group.rest[item.group.rest.length - 1]?.cuid ?? item.group.representative.cuid;
|
|
4821
|
-
return `g:${oldestCuid}`;
|
|
4822
|
-
}
|
|
4823
|
-
function ActionList({
|
|
4824
|
-
groups,
|
|
4825
|
-
selectedCuid,
|
|
4826
|
-
onGroupClick,
|
|
4827
|
-
onSubClick,
|
|
4828
|
-
childEntriesMap,
|
|
4829
|
-
style
|
|
4830
|
-
}) {
|
|
4831
|
-
const containerRef = useRef(null);
|
|
4832
|
-
const latestTime = groups[0]?.representative.startTime;
|
|
4833
|
-
const flatItems = useMemo2(() => {
|
|
4834
|
-
return groups.map((group, gi) => {
|
|
4835
|
-
const prevGroup = groups[gi + 1];
|
|
4836
|
-
let breakReasons;
|
|
4837
|
-
if (prevGroup != null && prevGroup.representative.actionId === group.representative.actionId && prevGroup.representative.domain === group.representative.domain) {
|
|
4838
|
-
const reasons = getBreakReasons(group.representative, prevGroup.representative);
|
|
4839
|
-
if (reasons.length > 0)
|
|
4840
|
-
breakReasons = reasons;
|
|
4841
|
-
}
|
|
4842
|
-
return { group, groupIndex: gi, breakReasons };
|
|
4843
|
-
});
|
|
4844
|
-
}, [groups]);
|
|
4845
|
-
const prevSelectedRef = useRef(selectedCuid);
|
|
4846
|
-
useEffect3(() => {
|
|
4847
|
-
if (selectedCuid === prevSelectedRef.current)
|
|
4848
|
-
return;
|
|
4849
|
-
prevSelectedRef.current = selectedCuid;
|
|
4850
|
-
if (selectedCuid == null)
|
|
4851
|
-
return;
|
|
4852
|
-
let repCuid = selectedCuid;
|
|
4853
|
-
for (const item of flatItems) {
|
|
4854
|
-
if (item.group.rest.some((e) => e.cuid === selectedCuid)) {
|
|
4855
|
-
repCuid = item.group.representative.cuid;
|
|
4856
|
-
break;
|
|
4857
|
-
}
|
|
4858
|
-
}
|
|
4859
|
-
containerRef.current?.querySelector(`[data-cuid="${repCuid}"]`)?.scrollIntoView({ block: "nearest" });
|
|
4860
|
-
}, [selectedCuid, flatItems]);
|
|
4861
|
-
if (groups.length === 0) {
|
|
4862
|
-
return /* @__PURE__ */ jsxDEV19("div", {
|
|
4863
|
-
style,
|
|
4864
|
-
children: /* @__PURE__ */ jsxDEV19("div", {
|
|
4865
|
-
style: { padding: "24px", textAlign: "center", color: DEVTOOL_COLOR_TEXT_MUTED },
|
|
4866
|
-
children: "No actions recorded yet"
|
|
4867
|
-
}, undefined, false, undefined, this)
|
|
4868
|
-
}, undefined, false, undefined, this);
|
|
4869
|
-
}
|
|
4870
|
-
return /* @__PURE__ */ jsxDEV19("div", {
|
|
4871
|
-
ref: containerRef,
|
|
4872
|
-
style,
|
|
4873
|
-
children: flatItems.map((item) => {
|
|
4874
|
-
const key = getFlatItemKey(item);
|
|
4875
|
-
const { group } = item;
|
|
4876
|
-
return /* @__PURE__ */ jsxDEV19("div", {
|
|
4877
|
-
style: {
|
|
4878
|
-
borderBottom: `1px solid ${DEVTOOL_LIST_GROUP_DIVIDER}`,
|
|
4879
|
-
position: "relative",
|
|
4880
|
-
overflow: "hidden"
|
|
4881
|
-
},
|
|
4882
|
-
children: [
|
|
4883
|
-
/* @__PURE__ */ jsxDEV19("div", {
|
|
4884
|
-
style: {
|
|
4885
|
-
position: "absolute",
|
|
4886
|
-
inset: 0,
|
|
4887
|
-
pointerEvents: "none",
|
|
4888
|
-
background: "linear-gradient(90deg, transparent 0%, rgba(148, 210, 255, 0.13) 50%, transparent 100%)",
|
|
4889
|
-
animation: "__nice-action-shine 0.65s ease-out forwards"
|
|
4890
|
-
}
|
|
4891
|
-
}, group.representative.cuid, false, undefined, this),
|
|
4892
|
-
/* @__PURE__ */ jsxDEV19(ActionEntryRow, {
|
|
4893
|
-
entry: group.representative,
|
|
4894
|
-
isSelected: selectedCuid === group.representative.cuid || group.rest.some((e) => e.cuid === selectedCuid),
|
|
4895
|
-
isLatest: item.groupIndex === 0,
|
|
4896
|
-
latestTime,
|
|
4897
|
-
childEntries: getGroupChildEntries(group, childEntriesMap),
|
|
4898
|
-
breakReasons: item.breakReasons,
|
|
4899
|
-
groupEntries: group.rest.length > 0 ? [group.representative, ...group.rest] : undefined,
|
|
4900
|
-
selectedGroupCuid: selectedCuid,
|
|
4901
|
-
onSelectGroupEntry: (cuid) => onSubClick(cuid, selectedCuid === cuid),
|
|
4902
|
-
onClick: () => onGroupClick(group)
|
|
4903
|
-
}, undefined, false, undefined, this)
|
|
4904
|
-
]
|
|
4905
|
-
}, key, true, undefined, this);
|
|
4906
|
-
})
|
|
4907
|
-
}, undefined, false, undefined, this);
|
|
4908
|
-
}
|
|
4909
5323
|
export {
|
|
4910
5324
|
NiceActionDevtools,
|
|
4911
5325
|
ActionDevtoolsCore
|