@nice-code/action 0.7.0 → 0.8.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 +590 -1246
- package/build/devtools/server/index.js +7 -1
- package/build/index.js +1173 -972
- package/build/types/ActionRuntime/ActionRuntime.d.ts +23 -1
- package/build/types/ActionRuntime/Handler/ExternalClient/Transport/Transport.types.d.ts +6 -0
- package/build/types/ActionRuntime/Handler/ExternalClient/Transport/WebSocket/WebSocketConnection.d.ts +2 -1
- package/build/types/ActionRuntime/Handler/Server/ActionServerHandler.d.ts +57 -0
- package/build/types/ActionRuntime/Handler/Server/WsConnectionStateStore.d.ts +61 -0
- package/build/types/ActionRuntime/Handler/Server/createActionFetchHandler.d.ts +40 -0
- package/build/types/devtools/browser/NiceActionDevtools.d.ts +1 -1
- package/build/types/devtools/browser/components/ActionErrorDisplay.d.ts +1 -1
- package/build/types/devtools/browser/components/CallStackSection.d.ts +1 -1
- package/build/types/devtools/browser/components/ChildDispatchChips.d.ts +1 -1
- package/build/types/devtools/browser/components/Chip.d.ts +1 -1
- package/build/types/devtools/browser/components/DetailSection.d.ts +1 -1
- package/build/types/devtools/browser/components/DomainChip.d.ts +1 -1
- package/build/types/devtools/browser/components/HandlerChips.d.ts +1 -1
- package/build/types/devtools/browser/components/Icon.d.ts +1 -1
- package/build/types/devtools/browser/components/MetaSection.d.ts +1 -1
- package/build/types/devtools/browser/components/NiceErrorDisplay.d.ts +2 -2
- package/build/types/devtools/browser/components/OriginChip.d.ts +1 -1
- package/build/types/devtools/browser/components/RoutingSection.d.ts +1 -1
- package/build/types/devtools/browser/components/RunningTimer.d.ts +2 -2
- package/build/types/devtools/browser/components/SectionLabel.d.ts +1 -4
- package/build/types/devtools/browser/components/StackTraceSection.d.ts +1 -1
- package/build/types/devtools/browser/components/Tooltip.d.ts +1 -24
- package/build/types/devtools/browser/components/action_detail/ActionDetailPanel.d.ts +1 -1
- package/build/types/devtools/browser/components/action_list/ActionEntryRow.d.ts +1 -1
- package/build/types/devtools/browser/components/action_list/ActionInputAndOutputChip.d.ts +1 -1
- package/build/types/devtools/browser/components/action_list/ActionList.d.ts +1 -1
- package/build/types/devtools/browser/components/action_list/IoTooltipContent.d.ts +1 -4
- package/build/types/devtools/browser/components/utils.d.ts +1 -3
- package/build/types/devtools/core/ActionDevtools.types.d.ts +1 -1
- package/build/types/devtools/core/ActionDevtoolsCore.d.ts +4 -1
- package/build/types/devtools/core/devtools_colors.d.ts +1 -26
- package/build/types/index.d.ts +3 -1
- package/package.json +33 -29
- package/build/types/devtools/browser/components/PanelChrome.d.ts +0 -41
- package/build/types/devtools/browser/devtools_dock.d.ts +0 -54
|
@@ -1871,7 +1871,10 @@ function extractMeta(context) {
|
|
|
1871
1871
|
class ActionDevtoolsCore {
|
|
1872
1872
|
_entries = [];
|
|
1873
1873
|
_listeners = new Set;
|
|
1874
|
-
|
|
1874
|
+
_maxEntries;
|
|
1875
|
+
constructor(options = {}) {
|
|
1876
|
+
this._maxEntries = options.maxEntries ?? 500;
|
|
1877
|
+
}
|
|
1875
1878
|
attachToDomain(domain) {
|
|
1876
1879
|
return domain.addActionListener((update) => {
|
|
1877
1880
|
const { runningAction, type, time } = update;
|
|
@@ -1891,6 +1894,9 @@ class ActionDevtoolsCore {
|
|
|
1891
1894
|
callSite: runningAction.callSite
|
|
1892
1895
|
};
|
|
1893
1896
|
this._entries = [entry, ...this._entries];
|
|
1897
|
+
if (this._entries.length > this._maxEntries) {
|
|
1898
|
+
this._entries.length = this._maxEntries;
|
|
1899
|
+
}
|
|
1894
1900
|
this._notify();
|
|
1895
1901
|
} else if (type === "progress" /* progress */) {
|
|
1896
1902
|
this._updateEntry(runningAction.cuid, (e) => ({
|
|
@@ -1971,44 +1977,68 @@ class ActionDevtoolsCore {
|
|
|
1971
1977
|
}
|
|
1972
1978
|
}
|
|
1973
1979
|
// src/devtools/browser/NiceActionDevtools.tsx
|
|
1974
|
-
import {
|
|
1980
|
+
import {
|
|
1981
|
+
DevtoolsLauncher,
|
|
1982
|
+
FollowLatestToggles,
|
|
1983
|
+
getDevtoolsDockCoordinator,
|
|
1984
|
+
getDockSide,
|
|
1985
|
+
PanelHeader,
|
|
1986
|
+
ResizeHandle,
|
|
1987
|
+
SplitHandle
|
|
1988
|
+
} from "nice-devtools-shared";
|
|
1989
|
+
import { useEffect as useEffect3, useId, useMemo as useMemo3, useReducer, useState as useState10 } from "react";
|
|
1975
1990
|
|
|
1976
1991
|
// src/devtools/core/devtools_colors.ts
|
|
1977
|
-
|
|
1978
|
-
|
|
1979
|
-
|
|
1980
|
-
|
|
1981
|
-
|
|
1992
|
+
import {
|
|
1993
|
+
DEVTOOL_COLOR_SEMANTIC_ERROR,
|
|
1994
|
+
DEVTOOL_COLOR_SEMANTIC_METADATA,
|
|
1995
|
+
DEVTOOL_COLOR_SEMANTIC_SUCCESS,
|
|
1996
|
+
DEVTOOL_COLOR_SEMANTIC_SYSTEM,
|
|
1997
|
+
DEVTOOL_COLOR_SEMANTIC_WARNING,
|
|
1998
|
+
DEVTOOL_COLOR_TEXT_FAINT,
|
|
1999
|
+
DEVTOOL_COLOR_TEXT_MUTED,
|
|
2000
|
+
DEVTOOL_SECTION_BACKGROUND
|
|
2001
|
+
} from "nice-devtools-shared";
|
|
2002
|
+
import {
|
|
2003
|
+
DEVTOOL_COLOR_SEMANTIC_ERROR as DEVTOOL_COLOR_SEMANTIC_ERROR2,
|
|
2004
|
+
DEVTOOL_COLOR_SEMANTIC_METADATA as DEVTOOL_COLOR_SEMANTIC_METADATA2,
|
|
2005
|
+
DEVTOOL_COLOR_SEMANTIC_SUCCESS as DEVTOOL_COLOR_SEMANTIC_SUCCESS2,
|
|
2006
|
+
DEVTOOL_COLOR_SEMANTIC_SYSTEM as DEVTOOL_COLOR_SEMANTIC_SYSTEM2,
|
|
2007
|
+
DEVTOOL_COLOR_SEMANTIC_WARNING as DEVTOOL_COLOR_SEMANTIC_WARNING2,
|
|
2008
|
+
DEVTOOL_COLOR_TEXT_EMPHASIS,
|
|
2009
|
+
DEVTOOL_COLOR_TEXT_FAINT as DEVTOOL_COLOR_TEXT_FAINT2,
|
|
2010
|
+
DEVTOOL_COLOR_TEXT_MUTED as DEVTOOL_COLOR_TEXT_MUTED2,
|
|
2011
|
+
DEVTOOL_COLOR_TEXT_SECONDARY,
|
|
2012
|
+
DEVTOOL_DETAIL_BASE_BACKGROUND,
|
|
2013
|
+
DEVTOOL_DETAIL_HEADER_BACKGROUND,
|
|
2014
|
+
DEVTOOL_ERROR_BACKGROUND,
|
|
2015
|
+
DEVTOOL_JSON_KEY,
|
|
2016
|
+
DEVTOOL_JSON_KEYWORD,
|
|
2017
|
+
DEVTOOL_JSON_NUMBER,
|
|
2018
|
+
DEVTOOL_JSON_PUNCTUATION,
|
|
2019
|
+
DEVTOOL_JSON_STRING,
|
|
2020
|
+
DEVTOOL_LIST_BASE_BACKGROUND,
|
|
2021
|
+
DEVTOOL_LIST_SELECTED_BACKGROUND,
|
|
2022
|
+
DEVTOOL_PANEL_BORDER,
|
|
2023
|
+
DEVTOOL_PANEL_DIVIDER_BORDER,
|
|
2024
|
+
DEVTOOL_SECTION_BACKGROUND as DEVTOOL_SECTION_BACKGROUND2,
|
|
2025
|
+
DEVTOOL_SECTION_STRING_BACKGROUND,
|
|
2026
|
+
DEVTOOL_TOOLTIP_BACKGROUND,
|
|
2027
|
+
DEVTOOL_TOOLTIP_BORDER,
|
|
2028
|
+
DEVTOOL_TOOLTIP_TITLE_BACKGROUND,
|
|
2029
|
+
DEVTOOL_TOOLTIP_TITLE_BOTTOM_BORDER,
|
|
2030
|
+
MONO_FONT,
|
|
2031
|
+
SANS_FONT
|
|
2032
|
+
} from "nice-devtools-shared";
|
|
1982
2033
|
var DEVTOOL_COLOR_HANDLER_LOCAL_TEXT = "#34bb89";
|
|
1983
2034
|
var DEVTOOL_COLOR_HANDLER_LOCAL_BORDER = "#144427";
|
|
1984
2035
|
var DEVTOOL_COLOR_HANDLER_EXTERNAL_TEXT = "#cfa12a";
|
|
1985
2036
|
var DEVTOOL_COLOR_HANDLER_EXTERNAL_BORDER = "#723917";
|
|
1986
|
-
var DEVTOOL_COLOR_TEXT_EMPHASIS = "#f1f5f9";
|
|
1987
|
-
var DEVTOOL_COLOR_TEXT_SECONDARY = "#cbd5e1";
|
|
1988
|
-
var DEVTOOL_COLOR_TEXT_MUTED = "#64748b";
|
|
1989
|
-
var DEVTOOL_COLOR_TEXT_FAINT = "#334155";
|
|
1990
|
-
var DEVTOOL_LIST_BASE_BACKGROUND = "#0f172a";
|
|
1991
2037
|
var DEVTOOL_LIST_HEADER_SELECTED_BACKGROUND = "#1d2942";
|
|
1992
2038
|
var DEVTOOL_LIST_GROUP_DIVIDER = "#101109";
|
|
1993
|
-
var DEVTOOL_DETAIL_BASE_BACKGROUND = "#0d1729";
|
|
1994
|
-
var DEVTOOL_DETAIL_HEADER_BACKGROUND = "#131f35";
|
|
1995
|
-
var DEVTOOL_SECTION_BACKGROUND = "#1e293b";
|
|
1996
|
-
var DEVTOOL_SECTION_STRING_BACKGROUND = "#0d131f";
|
|
1997
2039
|
var DEVTOOL_STACK_TRACE_BACKGROUND = "#040a13";
|
|
1998
|
-
var DEVTOOL_PANEL_BORDER = "#1e293b";
|
|
1999
|
-
var DEVTOOL_PANEL_DIVIDER_BORDER = "#1d3352";
|
|
2000
|
-
var DEVTOOL_ERROR_BACKGROUND = "#1e0a0a";
|
|
2001
2040
|
var DEVTOOL_ERROR_BADGE_BACKGROUND = "#2d0f0f";
|
|
2002
|
-
var DEVTOOL_TOOLTIP_BACKGROUND = "#0c1526";
|
|
2003
|
-
var DEVTOOL_TOOLTIP_TITLE_BACKGROUND = "#101b2e";
|
|
2004
|
-
var DEVTOOL_TOOLTIP_TITLE_BOTTOM_BORDER = "#211f5f";
|
|
2005
|
-
var DEVTOOL_TOOLTIP_BORDER = "#312e81";
|
|
2006
2041
|
var DEVTOOL_COLOR_CALL_STACK_DIVIDER = "#0a1120";
|
|
2007
|
-
var DEVTOOL_JSON_KEY = "#a5b4fc";
|
|
2008
|
-
var DEVTOOL_JSON_STRING = "#fbbf24";
|
|
2009
|
-
var DEVTOOL_JSON_NUMBER = "#34d399";
|
|
2010
|
-
var DEVTOOL_JSON_KEYWORD = "#a78bfa";
|
|
2011
|
-
var DEVTOOL_JSON_PUNCTUATION = "#475569";
|
|
2012
2042
|
var DEVTOOL_STACK_FRAME_USER_NUMBER = "#64748b";
|
|
2013
2043
|
var DEVTOOL_STACK_FRAME_USER_FUNCTION = "#e2e8f0";
|
|
2014
2044
|
var DEVTOOL_STACK_FRAME_USER_FOLDER = "#596b83";
|
|
@@ -2087,7 +2117,7 @@ var SEMANTIC_COLORS = {
|
|
|
2087
2117
|
};
|
|
2088
2118
|
|
|
2089
2119
|
// src/devtools/browser/components/action_detail/ActionDetailPanel.tsx
|
|
2090
|
-
import { useMemo, useState as
|
|
2120
|
+
import { useMemo, useState as useState7 } from "react";
|
|
2091
2121
|
|
|
2092
2122
|
// src/devtools/browser/ui_util/size.ts
|
|
2093
2123
|
function getSizeValue(size) {
|
|
@@ -2104,150 +2134,16 @@ function getSizeValue(size) {
|
|
|
2104
2134
|
}
|
|
2105
2135
|
|
|
2106
2136
|
// src/devtools/browser/components/DetailSection.tsx
|
|
2137
|
+
import { renderColoredJson, safeStringify } from "nice-devtools-shared";
|
|
2107
2138
|
import { useState } from "react";
|
|
2108
2139
|
|
|
2109
2140
|
// src/devtools/browser/components/SectionLabel.tsx
|
|
2110
|
-
import {
|
|
2111
|
-
function SectionLabel({
|
|
2112
|
-
label,
|
|
2113
|
-
color = DEVTOOL_COLOR_SEMANTIC_SYSTEM
|
|
2114
|
-
}) {
|
|
2115
|
-
return /* @__PURE__ */ jsx("div", {
|
|
2116
|
-
style: {
|
|
2117
|
-
color,
|
|
2118
|
-
fontSize: "0.85em",
|
|
2119
|
-
marginBottom: "3px",
|
|
2120
|
-
textTransform: "uppercase",
|
|
2121
|
-
letterSpacing: "0.05em",
|
|
2122
|
-
fontWeight: 500,
|
|
2123
|
-
textAlign: "left"
|
|
2124
|
-
},
|
|
2125
|
-
children: label
|
|
2126
|
-
});
|
|
2127
|
-
}
|
|
2128
|
-
|
|
2129
|
-
// src/devtools/browser/components/utils.ts
|
|
2130
|
-
import { Circle, CircleAlert, CircleCheck, CircleX, Loader2 } from "lucide-react";
|
|
2131
|
-
var STATUS_COLOR = {
|
|
2132
|
-
running: DEVTOOL_COLOR_SEMANTIC_SYSTEM,
|
|
2133
|
-
success: DEVTOOL_COLOR_SEMANTIC_SUCCESS,
|
|
2134
|
-
"action-error": DEVTOOL_COLOR_SEMANTIC_WARNING,
|
|
2135
|
-
failed: DEVTOOL_COLOR_SEMANTIC_ERROR,
|
|
2136
|
-
aborted: DEVTOOL_COLOR_SEMANTIC_METADATA
|
|
2137
|
-
};
|
|
2138
|
-
var STATUS_THING = {
|
|
2139
|
-
running: "running_action" /* running_action */,
|
|
2140
|
-
success: "success" /* success */,
|
|
2141
|
-
"action-error": "action_error" /* action_error */,
|
|
2142
|
-
failed: "failed" /* failed */,
|
|
2143
|
-
aborted: "aborted" /* aborted */
|
|
2144
|
-
};
|
|
2145
|
-
var STATUS_SYMBOL = {
|
|
2146
|
-
running: "●",
|
|
2147
|
-
success: "✓",
|
|
2148
|
-
"action-error": "!",
|
|
2149
|
-
failed: "✗",
|
|
2150
|
-
aborted: "○"
|
|
2151
|
-
};
|
|
2152
|
-
var STATUS_ICON = {
|
|
2153
|
-
running: Loader2,
|
|
2154
|
-
success: CircleCheck,
|
|
2155
|
-
"action-error": CircleAlert,
|
|
2156
|
-
failed: CircleX,
|
|
2157
|
-
aborted: Circle
|
|
2158
|
-
};
|
|
2159
|
-
function getInboundOrigin(entry) {
|
|
2160
|
-
const origin = entry.meta.originClient;
|
|
2161
|
-
if (origin == null || origin.envId === "unknown" || origin.envId === "_unset_")
|
|
2162
|
-
return null;
|
|
2163
|
-
const local = entry.meta.routing[0]?.runtime;
|
|
2164
|
-
if (local == null)
|
|
2165
|
-
return null;
|
|
2166
|
-
const sameRuntime = origin.envId === local.envId && (origin.perId ?? null) === (local.perId ?? null) && (origin.insId ?? null) === (local.insId ?? null);
|
|
2167
|
-
return sameRuntime ? null : origin;
|
|
2168
|
-
}
|
|
2169
|
-
function safeStringify(value, indent = 2) {
|
|
2170
|
-
if (value === undefined)
|
|
2171
|
-
return "undefined";
|
|
2172
|
-
if (value === null)
|
|
2173
|
-
return "null";
|
|
2174
|
-
try {
|
|
2175
|
-
return JSON.stringify(value, null, indent);
|
|
2176
|
-
} catch {
|
|
2177
|
-
return String(value);
|
|
2178
|
-
}
|
|
2179
|
-
}
|
|
2180
|
-
function formatRelativeAge(ms) {
|
|
2181
|
-
if (ms < 1000)
|
|
2182
|
-
return `${ms}ms`;
|
|
2183
|
-
if (ms < 60000)
|
|
2184
|
-
return `${(ms / 1000).toFixed(1)}s`;
|
|
2185
|
-
return `${Math.floor(ms / 60000)}m`;
|
|
2186
|
-
}
|
|
2187
|
-
function formatDuration(entry) {
|
|
2188
|
-
return entry.endTime != null ? `${entry.endTime - entry.startTime}ms` : null;
|
|
2189
|
-
}
|
|
2190
|
-
function formatTimestamp(startTime) {
|
|
2191
|
-
return new Date(startTime).toLocaleTimeString([], {
|
|
2192
|
-
hour: "2-digit",
|
|
2193
|
-
minute: "2-digit",
|
|
2194
|
-
second: "2-digit",
|
|
2195
|
-
hour12: false
|
|
2196
|
-
});
|
|
2197
|
-
}
|
|
2141
|
+
import { SectionLabel } from "nice-devtools-shared";
|
|
2198
2142
|
|
|
2199
2143
|
// src/devtools/browser/components/DetailSection.tsx
|
|
2200
|
-
import { jsx
|
|
2144
|
+
import { jsx, jsxs } from "react/jsx-runtime";
|
|
2201
2145
|
var COMPACT_CHAR_LIMIT = 120;
|
|
2202
2146
|
var MONO = "ui-monospace, 'Cascadia Code', 'Source Code Pro', monospace";
|
|
2203
|
-
var JSON_TOKEN_RE = /("(?:\\.|[^"\\])*")(\s*:)?|(-?\d+(?:\.\d+)?(?:[eE][+-]?\d+)?)|(\btrue\b|\bfalse\b|\bnull\b|\bundefined\b)|([{}[\],])/g;
|
|
2204
|
-
function renderColoredJson(text) {
|
|
2205
|
-
const nodes = [];
|
|
2206
|
-
let last = 0;
|
|
2207
|
-
let i = 0;
|
|
2208
|
-
JSON_TOKEN_RE.lastIndex = 0;
|
|
2209
|
-
for (let m = JSON_TOKEN_RE.exec(text);m !== null; m = JSON_TOKEN_RE.exec(text)) {
|
|
2210
|
-
if (m.index > last)
|
|
2211
|
-
nodes.push(text.slice(last, m.index));
|
|
2212
|
-
const [, str, colon, num, kw, punct] = m;
|
|
2213
|
-
if (str != null) {
|
|
2214
|
-
if (colon != null) {
|
|
2215
|
-
nodes.push(/* @__PURE__ */ jsx2("span", {
|
|
2216
|
-
style: { color: DEVTOOL_JSON_KEY },
|
|
2217
|
-
children: str
|
|
2218
|
-
}, i++));
|
|
2219
|
-
nodes.push(/* @__PURE__ */ jsx2("span", {
|
|
2220
|
-
style: { color: DEVTOOL_JSON_PUNCTUATION },
|
|
2221
|
-
children: colon
|
|
2222
|
-
}, i++));
|
|
2223
|
-
} else {
|
|
2224
|
-
nodes.push(/* @__PURE__ */ jsx2("span", {
|
|
2225
|
-
style: { color: DEVTOOL_JSON_STRING },
|
|
2226
|
-
children: str
|
|
2227
|
-
}, i++));
|
|
2228
|
-
}
|
|
2229
|
-
} else if (num != null) {
|
|
2230
|
-
nodes.push(/* @__PURE__ */ jsx2("span", {
|
|
2231
|
-
style: { color: DEVTOOL_JSON_NUMBER },
|
|
2232
|
-
children: num
|
|
2233
|
-
}, i++));
|
|
2234
|
-
} else if (kw != null) {
|
|
2235
|
-
nodes.push(/* @__PURE__ */ jsx2("span", {
|
|
2236
|
-
style: { color: DEVTOOL_JSON_KEYWORD },
|
|
2237
|
-
children: kw
|
|
2238
|
-
}, i++));
|
|
2239
|
-
} else if (punct != null) {
|
|
2240
|
-
nodes.push(/* @__PURE__ */ jsx2("span", {
|
|
2241
|
-
style: { color: DEVTOOL_JSON_PUNCTUATION },
|
|
2242
|
-
children: punct
|
|
2243
|
-
}, i++));
|
|
2244
|
-
}
|
|
2245
|
-
last = JSON_TOKEN_RE.lastIndex;
|
|
2246
|
-
}
|
|
2247
|
-
if (last < text.length)
|
|
2248
|
-
nodes.push(text.slice(last));
|
|
2249
|
-
return nodes;
|
|
2250
|
-
}
|
|
2251
2147
|
function tryParseJson(s) {
|
|
2252
2148
|
try {
|
|
2253
2149
|
return JSON.parse(s);
|
|
@@ -2258,7 +2154,7 @@ function tryParseJson(s) {
|
|
|
2258
2154
|
function DetailSection({
|
|
2259
2155
|
label,
|
|
2260
2156
|
value,
|
|
2261
|
-
color =
|
|
2157
|
+
color = DEVTOOL_COLOR_SEMANTIC_SYSTEM2
|
|
2262
2158
|
}) {
|
|
2263
2159
|
const parsedFromString = typeof value === "string" ? tryParseJson(value) : null;
|
|
2264
2160
|
const isPlainString = typeof value === "string" && parsedFromString === null;
|
|
@@ -2268,7 +2164,7 @@ function DetailSection({
|
|
|
2268
2164
|
const compactJson = isPlainString ? value : safeStringify(effectiveValue, 0);
|
|
2269
2165
|
const canExpand = fullJson !== compactJson || compactJson.length > COMPACT_CHAR_LIMIT;
|
|
2270
2166
|
const compactDisplay = compactJson.length > COMPACT_CHAR_LIMIT ? `${compactJson.slice(0, COMPACT_CHAR_LIMIT)}…` : compactJson;
|
|
2271
|
-
const baseStyle = isPlainString ? { background: DEVTOOL_SECTION_STRING_BACKGROUND, color:
|
|
2167
|
+
const baseStyle = isPlainString ? { background: DEVTOOL_SECTION_STRING_BACKGROUND, color: DEVTOOL_COLOR_TEXT_MUTED2 } : { background: DEVTOOL_SECTION_BACKGROUND2, color: DEVTOOL_COLOR_TEXT_SECONDARY };
|
|
2272
2168
|
return /* @__PURE__ */ jsxs("div", {
|
|
2273
2169
|
children: [
|
|
2274
2170
|
/* @__PURE__ */ jsxs("div", {
|
|
@@ -2279,17 +2175,17 @@ function DetailSection({
|
|
|
2279
2175
|
marginBottom: "3px"
|
|
2280
2176
|
},
|
|
2281
2177
|
children: [
|
|
2282
|
-
/* @__PURE__ */
|
|
2178
|
+
/* @__PURE__ */ jsx(SectionLabel, {
|
|
2283
2179
|
label,
|
|
2284
2180
|
color
|
|
2285
2181
|
}),
|
|
2286
|
-
canExpand && /* @__PURE__ */
|
|
2287
|
-
style: { color:
|
|
2182
|
+
canExpand && /* @__PURE__ */ jsx("span", {
|
|
2183
|
+
style: { color: DEVTOOL_COLOR_TEXT_FAINT2, fontSize: "11px" },
|
|
2288
2184
|
children: expanded ? "▾" : "▸"
|
|
2289
2185
|
})
|
|
2290
2186
|
]
|
|
2291
2187
|
}),
|
|
2292
|
-
expanded ? /* @__PURE__ */
|
|
2188
|
+
expanded ? /* @__PURE__ */ jsx("div", {
|
|
2293
2189
|
onClick: canExpand ? () => setExpanded(false) : undefined,
|
|
2294
2190
|
style: {
|
|
2295
2191
|
margin: 0,
|
|
@@ -2306,7 +2202,7 @@ function DetailSection({
|
|
|
2306
2202
|
...baseStyle
|
|
2307
2203
|
},
|
|
2308
2204
|
children: isPlainString ? fullJson : renderColoredJson(fullJson)
|
|
2309
|
-
}) : /* @__PURE__ */
|
|
2205
|
+
}) : /* @__PURE__ */ jsx("div", {
|
|
2310
2206
|
onClick: canExpand ? () => setExpanded(true) : undefined,
|
|
2311
2207
|
style: {
|
|
2312
2208
|
padding: "5px 8px",
|
|
@@ -2327,7 +2223,7 @@ function DetailSection({
|
|
|
2327
2223
|
}
|
|
2328
2224
|
|
|
2329
2225
|
// src/devtools/browser/components/NiceErrorDisplay.tsx
|
|
2330
|
-
import { jsx as
|
|
2226
|
+
import { jsx as jsx2, jsxs as jsxs2 } from "react/jsx-runtime";
|
|
2331
2227
|
var MONO2 = "ui-monospace, 'Cascadia Code', 'Source Code Pro', monospace";
|
|
2332
2228
|
var SANS = "ui-sans-serif, system-ui, -apple-system, sans-serif";
|
|
2333
2229
|
function isNiceErrorJson(value) {
|
|
@@ -2340,15 +2236,15 @@ function NiceErrorBody({ error }) {
|
|
|
2340
2236
|
return /* @__PURE__ */ jsxs2("div", {
|
|
2341
2237
|
style: {
|
|
2342
2238
|
background: DEVTOOL_ERROR_BACKGROUND,
|
|
2343
|
-
border: `1px solid ${
|
|
2239
|
+
border: `1px solid ${DEVTOOL_COLOR_SEMANTIC_ERROR2}`,
|
|
2344
2240
|
borderRadius: "4px",
|
|
2345
2241
|
overflow: "hidden"
|
|
2346
2242
|
},
|
|
2347
2243
|
children: [
|
|
2348
|
-
/* @__PURE__ */
|
|
2244
|
+
/* @__PURE__ */ jsx2("div", {
|
|
2349
2245
|
style: {
|
|
2350
2246
|
padding: "12px 14px",
|
|
2351
|
-
color:
|
|
2247
|
+
color: DEVTOOL_COLOR_SEMANTIC_ERROR2,
|
|
2352
2248
|
fontSize: "1em",
|
|
2353
2249
|
fontWeight: "700",
|
|
2354
2250
|
lineHeight: "1.45",
|
|
@@ -2369,9 +2265,9 @@ function NiceErrorBody({ error }) {
|
|
|
2369
2265
|
background: DEVTOOL_ERROR_BADGE_BACKGROUND
|
|
2370
2266
|
},
|
|
2371
2267
|
children: [
|
|
2372
|
-
error.ids.map((id) => /* @__PURE__ */
|
|
2268
|
+
error.ids.map((id) => /* @__PURE__ */ jsx2("span", {
|
|
2373
2269
|
style: {
|
|
2374
|
-
color:
|
|
2270
|
+
color: DEVTOOL_COLOR_SEMANTIC_ERROR2,
|
|
2375
2271
|
fontFamily: MONO2,
|
|
2376
2272
|
fontSize: "11px",
|
|
2377
2273
|
fontWeight: "600"
|
|
@@ -2379,23 +2275,23 @@ function NiceErrorBody({ error }) {
|
|
|
2379
2275
|
children: id
|
|
2380
2276
|
}, id)),
|
|
2381
2277
|
/* @__PURE__ */ jsxs2("span", {
|
|
2382
|
-
style: { color:
|
|
2278
|
+
style: { color: DEVTOOL_COLOR_TEXT_MUTED2, fontSize: "10px", fontFamily: SANS },
|
|
2383
2279
|
children: [
|
|
2384
2280
|
"domain:",
|
|
2385
2281
|
" ",
|
|
2386
|
-
/* @__PURE__ */
|
|
2387
|
-
style: { color:
|
|
2282
|
+
/* @__PURE__ */ jsx2("span", {
|
|
2283
|
+
style: { color: DEVTOOL_COLOR_TEXT_MUTED2, fontFamily: MONO2 },
|
|
2388
2284
|
children: error.def.domain
|
|
2389
2285
|
})
|
|
2390
2286
|
]
|
|
2391
2287
|
}),
|
|
2392
2288
|
/* @__PURE__ */ jsxs2("span", {
|
|
2393
|
-
style: { color:
|
|
2289
|
+
style: { color: DEVTOOL_COLOR_TEXT_MUTED2, fontSize: "10px", fontFamily: SANS },
|
|
2394
2290
|
children: [
|
|
2395
2291
|
"http:",
|
|
2396
2292
|
" ",
|
|
2397
|
-
/* @__PURE__ */
|
|
2398
|
-
style: { color:
|
|
2293
|
+
/* @__PURE__ */ jsx2("span", {
|
|
2294
|
+
style: { color: DEVTOOL_COLOR_TEXT_MUTED2, fontFamily: MONO2 },
|
|
2399
2295
|
children: error.httpStatusCode
|
|
2400
2296
|
})
|
|
2401
2297
|
]
|
|
@@ -2412,11 +2308,11 @@ function NiceErrorDisplay({
|
|
|
2412
2308
|
}) {
|
|
2413
2309
|
return /* @__PURE__ */ jsxs2("div", {
|
|
2414
2310
|
children: [
|
|
2415
|
-
/* @__PURE__ */
|
|
2311
|
+
/* @__PURE__ */ jsx2(SectionLabel, {
|
|
2416
2312
|
label,
|
|
2417
2313
|
color
|
|
2418
2314
|
}),
|
|
2419
|
-
/* @__PURE__ */
|
|
2315
|
+
/* @__PURE__ */ jsx2(NiceErrorBody, {
|
|
2420
2316
|
error
|
|
2421
2317
|
})
|
|
2422
2318
|
]
|
|
@@ -2496,7 +2392,7 @@ async function resolveCompiledPosition(fileUrl, line, col) {
|
|
|
2496
2392
|
}
|
|
2497
2393
|
|
|
2498
2394
|
// src/devtools/browser/components/StackTraceSection.tsx
|
|
2499
|
-
import { jsx as
|
|
2395
|
+
import { jsx as jsx3, jsxs as jsxs3 } from "react/jsx-runtime";
|
|
2500
2396
|
var INTERNAL_PATTERNS = [
|
|
2501
2397
|
"/nice-action/",
|
|
2502
2398
|
"@nice-code/action",
|
|
@@ -2666,7 +2562,7 @@ function ProjectRootSetupModal({
|
|
|
2666
2562
|
justifyContent: "center"
|
|
2667
2563
|
},
|
|
2668
2564
|
children: [
|
|
2669
|
-
/* @__PURE__ */
|
|
2565
|
+
/* @__PURE__ */ jsx3("div", {
|
|
2670
2566
|
onClick: onCancel,
|
|
2671
2567
|
style: { position: "absolute", inset: 0, background: "rgba(0, 0, 0, 0.72)" }
|
|
2672
2568
|
}),
|
|
@@ -2692,7 +2588,7 @@ function ProjectRootSetupModal({
|
|
|
2692
2588
|
padding: "10px 14px"
|
|
2693
2589
|
},
|
|
2694
2590
|
children: [
|
|
2695
|
-
/* @__PURE__ */
|
|
2591
|
+
/* @__PURE__ */ jsx3("div", {
|
|
2696
2592
|
style: {
|
|
2697
2593
|
color: DEVTOOL_COLOR_TEXT_EMPHASIS,
|
|
2698
2594
|
fontSize: "12px",
|
|
@@ -2702,13 +2598,13 @@ function ProjectRootSetupModal({
|
|
|
2702
2598
|
children: "Set project root"
|
|
2703
2599
|
}),
|
|
2704
2600
|
/* @__PURE__ */ jsxs3("div", {
|
|
2705
|
-
style: { color:
|
|
2601
|
+
style: { color: DEVTOOL_COLOR_TEXT_MUTED2, fontSize: "10px" },
|
|
2706
2602
|
children: [
|
|
2707
2603
|
"Runtime:",
|
|
2708
2604
|
" ",
|
|
2709
|
-
/* @__PURE__ */
|
|
2605
|
+
/* @__PURE__ */ jsx3("span", {
|
|
2710
2606
|
style: {
|
|
2711
|
-
color:
|
|
2607
|
+
color: DEVTOOL_COLOR_SEMANTIC_SYSTEM2,
|
|
2712
2608
|
fontFamily: "ui-monospace, 'Cascadia Code', 'Source Code Pro', monospace"
|
|
2713
2609
|
},
|
|
2714
2610
|
children: envId
|
|
@@ -2721,11 +2617,11 @@ function ProjectRootSetupModal({
|
|
|
2721
2617
|
style: { padding: "14px", display: "flex", flexDirection: "column", gap: "8px" },
|
|
2722
2618
|
children: [
|
|
2723
2619
|
/* @__PURE__ */ jsxs3("div", {
|
|
2724
|
-
style: { color:
|
|
2620
|
+
style: { color: DEVTOOL_COLOR_TEXT_MUTED2, fontSize: "10px", lineHeight: 1.4 },
|
|
2725
2621
|
children: [
|
|
2726
2622
|
"Provide the absolute path to this project's root so that root-relative source file paths (e.g.",
|
|
2727
2623
|
" ",
|
|
2728
|
-
/* @__PURE__ */
|
|
2624
|
+
/* @__PURE__ */ jsx3("span", {
|
|
2729
2625
|
style: {
|
|
2730
2626
|
fontFamily: "ui-monospace, 'Cascadia Code', 'Source Code Pro', monospace"
|
|
2731
2627
|
},
|
|
@@ -2734,7 +2630,7 @@ function ProjectRootSetupModal({
|
|
|
2734
2630
|
") can be opened in VS Code."
|
|
2735
2631
|
]
|
|
2736
2632
|
}),
|
|
2737
|
-
/* @__PURE__ */
|
|
2633
|
+
/* @__PURE__ */ jsx3("input", {
|
|
2738
2634
|
ref: inputRef,
|
|
2739
2635
|
value,
|
|
2740
2636
|
onChange: (e) => setValue(e.currentTarget.value),
|
|
@@ -2763,28 +2659,28 @@ function ProjectRootSetupModal({
|
|
|
2763
2659
|
borderTop: `1px solid ${DEVTOOL_PANEL_BORDER}`
|
|
2764
2660
|
},
|
|
2765
2661
|
children: [
|
|
2766
|
-
/* @__PURE__ */
|
|
2662
|
+
/* @__PURE__ */ jsx3("button", {
|
|
2767
2663
|
type: "button",
|
|
2768
2664
|
onClick: onCancel,
|
|
2769
2665
|
style: {
|
|
2770
2666
|
background: "transparent",
|
|
2771
2667
|
border: `1px solid ${DEVTOOL_PANEL_BORDER}`,
|
|
2772
2668
|
borderRadius: "4px",
|
|
2773
|
-
color:
|
|
2669
|
+
color: DEVTOOL_COLOR_TEXT_MUTED2,
|
|
2774
2670
|
fontSize: "11px",
|
|
2775
2671
|
padding: "5px 12px",
|
|
2776
2672
|
cursor: "pointer"
|
|
2777
2673
|
},
|
|
2778
2674
|
children: "Cancel"
|
|
2779
2675
|
}),
|
|
2780
|
-
/* @__PURE__ */
|
|
2676
|
+
/* @__PURE__ */ jsx3("button", {
|
|
2781
2677
|
type: "submit",
|
|
2782
2678
|
disabled: value.trim() === "",
|
|
2783
2679
|
style: {
|
|
2784
|
-
background: `${
|
|
2785
|
-
border: `1px solid ${
|
|
2680
|
+
background: `${DEVTOOL_COLOR_SEMANTIC_SYSTEM2}22`,
|
|
2681
|
+
border: `1px solid ${DEVTOOL_COLOR_SEMANTIC_SYSTEM2}66`,
|
|
2786
2682
|
borderRadius: "4px",
|
|
2787
|
-
color:
|
|
2683
|
+
color: DEVTOOL_COLOR_SEMANTIC_SYSTEM2,
|
|
2788
2684
|
fontSize: "11px",
|
|
2789
2685
|
padding: "5px 12px",
|
|
2790
2686
|
cursor: value.trim() === "" ? "not-allowed" : "pointer",
|
|
@@ -2826,7 +2722,7 @@ function OpenInVscodeButton({
|
|
|
2826
2722
|
flexShrink: 0
|
|
2827
2723
|
};
|
|
2828
2724
|
if (needsSetup) {
|
|
2829
|
-
return /* @__PURE__ */
|
|
2725
|
+
return /* @__PURE__ */ jsx3("button", {
|
|
2830
2726
|
onClick: (e) => {
|
|
2831
2727
|
e.stopPropagation();
|
|
2832
2728
|
onNeedSetup();
|
|
@@ -2836,18 +2732,18 @@ function OpenInVscodeButton({
|
|
|
2836
2732
|
title: "Set project root to open in VS Code",
|
|
2837
2733
|
style: {
|
|
2838
2734
|
...baseStyle,
|
|
2839
|
-
color:
|
|
2735
|
+
color: DEVTOOL_COLOR_SEMANTIC_WARNING2,
|
|
2840
2736
|
background: "none",
|
|
2841
2737
|
border: "none",
|
|
2842
2738
|
padding: 0
|
|
2843
2739
|
},
|
|
2844
|
-
children: /* @__PURE__ */
|
|
2740
|
+
children: /* @__PURE__ */ jsx3(ExternalLink, {
|
|
2845
2741
|
size: 10,
|
|
2846
2742
|
strokeWidth: 1.8
|
|
2847
2743
|
})
|
|
2848
2744
|
});
|
|
2849
2745
|
}
|
|
2850
|
-
return /* @__PURE__ */
|
|
2746
|
+
return /* @__PURE__ */ jsx3("a", {
|
|
2851
2747
|
href: url,
|
|
2852
2748
|
onClick: (e) => e.stopPropagation(),
|
|
2853
2749
|
onMouseEnter: () => setHovered(true),
|
|
@@ -2858,7 +2754,7 @@ function OpenInVscodeButton({
|
|
|
2858
2754
|
color: DEVTOOL_COLOR_TEXT_SECONDARY,
|
|
2859
2755
|
textDecoration: "none"
|
|
2860
2756
|
},
|
|
2861
|
-
children: /* @__PURE__ */
|
|
2757
|
+
children: /* @__PURE__ */ jsx3(ExternalLink, {
|
|
2862
2758
|
size: 10,
|
|
2863
2759
|
strokeWidth: 1.8
|
|
2864
2760
|
})
|
|
@@ -2872,7 +2768,7 @@ function countUserFrames(_runtime, stack) {
|
|
|
2872
2768
|
function StackTraceSection({
|
|
2873
2769
|
label,
|
|
2874
2770
|
stack,
|
|
2875
|
-
color =
|
|
2771
|
+
color = DEVTOOL_COLOR_SEMANTIC_SYSTEM2,
|
|
2876
2772
|
runtime,
|
|
2877
2773
|
minFrameCount
|
|
2878
2774
|
}) {
|
|
@@ -2926,12 +2822,12 @@ function StackTraceSection({
|
|
|
2926
2822
|
marginBottom: "3px"
|
|
2927
2823
|
},
|
|
2928
2824
|
children: [
|
|
2929
|
-
/* @__PURE__ */
|
|
2825
|
+
/* @__PURE__ */ jsx3(SectionLabel, {
|
|
2930
2826
|
label,
|
|
2931
2827
|
color
|
|
2932
2828
|
}),
|
|
2933
|
-
hasInternalFrames && /* @__PURE__ */
|
|
2934
|
-
style: { color:
|
|
2829
|
+
hasInternalFrames && /* @__PURE__ */ jsx3("span", {
|
|
2830
|
+
style: { color: DEVTOOL_COLOR_TEXT_MUTED2, fontSize: "9px" },
|
|
2935
2831
|
children: !showAll ? "user only" : `all (${allFrames.length})`
|
|
2936
2832
|
})
|
|
2937
2833
|
]
|
|
@@ -2946,10 +2842,10 @@ function StackTraceSection({
|
|
|
2946
2842
|
cursor: "pointer"
|
|
2947
2843
|
},
|
|
2948
2844
|
children: [
|
|
2949
|
-
displayFrames.length === 0 ? /* @__PURE__ */
|
|
2845
|
+
displayFrames.length === 0 ? /* @__PURE__ */ jsx3("div", {
|
|
2950
2846
|
style: {
|
|
2951
2847
|
padding: "6px 10px",
|
|
2952
|
-
color:
|
|
2848
|
+
color: DEVTOOL_COLOR_TEXT_MUTED2,
|
|
2953
2849
|
fontSize: "10px",
|
|
2954
2850
|
fontStyle: "italic"
|
|
2955
2851
|
},
|
|
@@ -2973,7 +2869,7 @@ function StackTraceSection({
|
|
|
2973
2869
|
borderBottom: `1px solid ${DEVTOOL_LIST_BASE_BACKGROUND}`
|
|
2974
2870
|
},
|
|
2975
2871
|
children: [
|
|
2976
|
-
/* @__PURE__ */
|
|
2872
|
+
/* @__PURE__ */ jsx3("span", {
|
|
2977
2873
|
style: {
|
|
2978
2874
|
color: isUser ? DEVTOOL_STACK_FRAME_USER_NUMBER : DEVTOOL_STACK_FRAME_INTERNAL_NUMBER,
|
|
2979
2875
|
fontSize: "10px",
|
|
@@ -2992,9 +2888,9 @@ function StackTraceSection({
|
|
|
2992
2888
|
lineHeight: 1.2
|
|
2993
2889
|
},
|
|
2994
2890
|
children: [
|
|
2995
|
-
/* @__PURE__ */
|
|
2891
|
+
/* @__PURE__ */ jsx3("div", {
|
|
2996
2892
|
style: { display: "flex", alignItems: "center" },
|
|
2997
|
-
children: /* @__PURE__ */
|
|
2893
|
+
children: /* @__PURE__ */ jsx3("span", {
|
|
2998
2894
|
style: {
|
|
2999
2895
|
color: isUser ? DEVTOOL_STACK_FRAME_USER_FUNCTION : DEVTOOL_STACK_FRAME_INTERNAL_FUNCTION,
|
|
3000
2896
|
fontSize: "12px",
|
|
@@ -3009,7 +2905,7 @@ function StackTraceSection({
|
|
|
3009
2905
|
/* @__PURE__ */ jsxs3("div", {
|
|
3010
2906
|
style: { display: "flex", alignItems: "baseline", overflow: "hidden" },
|
|
3011
2907
|
children: [
|
|
3012
|
-
folderPrefix !== "" && /* @__PURE__ */
|
|
2908
|
+
folderPrefix !== "" && /* @__PURE__ */ jsx3("span", {
|
|
3013
2909
|
style: {
|
|
3014
2910
|
color: isUser ? DEVTOOL_STACK_FRAME_USER_FOLDER : DEVTOOL_STACK_FRAME_INTERNAL_FOLDER,
|
|
3015
2911
|
fontSize: "10px",
|
|
@@ -3021,7 +2917,7 @@ function StackTraceSection({
|
|
|
3021
2917
|
},
|
|
3022
2918
|
children: folderPrefix
|
|
3023
2919
|
}),
|
|
3024
|
-
/* @__PURE__ */
|
|
2920
|
+
/* @__PURE__ */ jsx3("span", {
|
|
3025
2921
|
style: {
|
|
3026
2922
|
color: isUser ? DEVTOOL_STACK_FRAME_USER_FILE : DEVTOOL_STACK_FRAME_INTERNAL_FILE,
|
|
3027
2923
|
fontSize: "10px",
|
|
@@ -3047,7 +2943,7 @@ function StackTraceSection({
|
|
|
3047
2943
|
})
|
|
3048
2944
|
]
|
|
3049
2945
|
}),
|
|
3050
|
-
/* @__PURE__ */
|
|
2946
|
+
/* @__PURE__ */ jsx3(OpenInVscodeButton, {
|
|
3051
2947
|
frame,
|
|
3052
2948
|
projectRoot,
|
|
3053
2949
|
onNeedSetup: () => setShowSetupModal(true)
|
|
@@ -3066,18 +2962,18 @@ function StackTraceSection({
|
|
|
3066
2962
|
borderBottom: `1px solid ${DEVTOOL_LIST_BASE_BACKGROUND}`
|
|
3067
2963
|
},
|
|
3068
2964
|
children: [
|
|
3069
|
-
/* @__PURE__ */
|
|
2965
|
+
/* @__PURE__ */ jsx3("span", {
|
|
3070
2966
|
style: { fontSize: "10px", minWidth: "10px", flexShrink: 0 },
|
|
3071
2967
|
children: "0"
|
|
3072
2968
|
}),
|
|
3073
2969
|
/* @__PURE__ */ jsxs3("div", {
|
|
3074
2970
|
style: { display: "flex", flexDirection: "column", gap: "0.15em", lineHeight: 1.2 },
|
|
3075
2971
|
children: [
|
|
3076
|
-
/* @__PURE__ */
|
|
2972
|
+
/* @__PURE__ */ jsx3("div", {
|
|
3077
2973
|
style: { fontSize: "12px" },
|
|
3078
2974
|
children: "placeholder"
|
|
3079
2975
|
}),
|
|
3080
|
-
/* @__PURE__ */
|
|
2976
|
+
/* @__PURE__ */ jsx3("div", {
|
|
3081
2977
|
style: { fontSize: "10px" },
|
|
3082
2978
|
children: "placeholder/file.ts:1"
|
|
3083
2979
|
})
|
|
@@ -3087,7 +2983,7 @@ function StackTraceSection({
|
|
|
3087
2983
|
}, `phantom-${i}`))
|
|
3088
2984
|
]
|
|
3089
2985
|
}),
|
|
3090
|
-
showSetupModal && /* @__PURE__ */
|
|
2986
|
+
showSetupModal && /* @__PURE__ */ jsx3(ProjectRootSetupModal, {
|
|
3091
2987
|
envId: runtime.envId,
|
|
3092
2988
|
currentValue: projectRoot ?? "",
|
|
3093
2989
|
onSave: handleSaveProjectRoot,
|
|
@@ -3098,7 +2994,7 @@ function StackTraceSection({
|
|
|
3098
2994
|
}
|
|
3099
2995
|
|
|
3100
2996
|
// src/devtools/browser/components/ActionErrorDisplay.tsx
|
|
3101
|
-
import { jsx as
|
|
2997
|
+
import { jsx as jsx4, jsxs as jsxs4, Fragment } from "react/jsx-runtime";
|
|
3102
2998
|
var MONO3 = "ui-monospace, 'Cascadia Code', 'Source Code Pro', monospace";
|
|
3103
2999
|
var SANS2 = "ui-sans-serif, system-ui, -apple-system, sans-serif";
|
|
3104
3000
|
function FullErrorContent({
|
|
@@ -3110,16 +3006,16 @@ function FullErrorContent({
|
|
|
3110
3006
|
}) {
|
|
3111
3007
|
return /* @__PURE__ */ jsxs4(Fragment, {
|
|
3112
3008
|
children: [
|
|
3113
|
-
isNiceErrorJson(error) ? /* @__PURE__ */
|
|
3009
|
+
isNiceErrorJson(error) ? /* @__PURE__ */ jsx4(NiceErrorDisplay, {
|
|
3114
3010
|
error,
|
|
3115
3011
|
label,
|
|
3116
3012
|
color
|
|
3117
|
-
}) : /* @__PURE__ */
|
|
3013
|
+
}) : /* @__PURE__ */ jsx4(DetailSection, {
|
|
3118
3014
|
label,
|
|
3119
3015
|
value: error,
|
|
3120
3016
|
color
|
|
3121
3017
|
}),
|
|
3122
|
-
/* @__PURE__ */
|
|
3018
|
+
/* @__PURE__ */ jsx4(StackTraceSection, {
|
|
3123
3019
|
runtime,
|
|
3124
3020
|
label: "Error Stack",
|
|
3125
3021
|
stack: errorStack,
|
|
@@ -3139,7 +3035,7 @@ function CompactErrorContent({ value, color }) {
|
|
|
3139
3035
|
minWidth: 0
|
|
3140
3036
|
},
|
|
3141
3037
|
children: [
|
|
3142
|
-
/* @__PURE__ */
|
|
3038
|
+
/* @__PURE__ */ jsx4("div", {
|
|
3143
3039
|
style: {
|
|
3144
3040
|
color,
|
|
3145
3041
|
fontFamily: SANS2,
|
|
@@ -3161,7 +3057,7 @@ function CompactErrorContent({ value, color }) {
|
|
|
3161
3057
|
minWidth: 0
|
|
3162
3058
|
},
|
|
3163
3059
|
children: [
|
|
3164
|
-
value.ids.map((id) => /* @__PURE__ */
|
|
3060
|
+
value.ids.map((id) => /* @__PURE__ */ jsx4("span", {
|
|
3165
3061
|
style: {
|
|
3166
3062
|
color,
|
|
3167
3063
|
fontFamily: MONO3,
|
|
@@ -3172,9 +3068,9 @@ function CompactErrorContent({ value, color }) {
|
|
|
3172
3068
|
},
|
|
3173
3069
|
children: id
|
|
3174
3070
|
}, id)),
|
|
3175
|
-
/* @__PURE__ */
|
|
3071
|
+
/* @__PURE__ */ jsx4("span", {
|
|
3176
3072
|
style: {
|
|
3177
|
-
color:
|
|
3073
|
+
color: DEVTOOL_COLOR_TEXT_MUTED2,
|
|
3178
3074
|
fontFamily: MONO3,
|
|
3179
3075
|
fontSize: "10px",
|
|
3180
3076
|
wordBreak: "break-word",
|
|
@@ -3190,7 +3086,7 @@ function CompactErrorContent({ value, color }) {
|
|
|
3190
3086
|
const text = typeof value === "string" ? value : value != null ? String(value) : null;
|
|
3191
3087
|
if (text == null)
|
|
3192
3088
|
return null;
|
|
3193
|
-
return /* @__PURE__ */
|
|
3089
|
+
return /* @__PURE__ */ jsx4("div", {
|
|
3194
3090
|
style: {
|
|
3195
3091
|
color,
|
|
3196
3092
|
fontFamily: SANS2,
|
|
@@ -3208,13 +3104,13 @@ function ActionErrorDisplay({
|
|
|
3208
3104
|
}) {
|
|
3209
3105
|
const { status, error, abortReason, errorStack } = entry;
|
|
3210
3106
|
if (status === "action-error") {
|
|
3211
|
-
const color =
|
|
3107
|
+
const color = DEVTOOL_COLOR_SEMANTIC_ERROR2;
|
|
3212
3108
|
if (compact)
|
|
3213
|
-
return /* @__PURE__ */
|
|
3109
|
+
return /* @__PURE__ */ jsx4(CompactErrorContent, {
|
|
3214
3110
|
value: error,
|
|
3215
3111
|
color
|
|
3216
3112
|
});
|
|
3217
|
-
return /* @__PURE__ */
|
|
3113
|
+
return /* @__PURE__ */ jsx4(FullErrorContent, {
|
|
3218
3114
|
runtime: entry.meta.originClient,
|
|
3219
3115
|
label: "Action Error",
|
|
3220
3116
|
error,
|
|
@@ -3223,13 +3119,13 @@ function ActionErrorDisplay({
|
|
|
3223
3119
|
});
|
|
3224
3120
|
}
|
|
3225
3121
|
if (status === "failed") {
|
|
3226
|
-
const color =
|
|
3122
|
+
const color = DEVTOOL_COLOR_SEMANTIC_ERROR2;
|
|
3227
3123
|
if (compact)
|
|
3228
|
-
return /* @__PURE__ */
|
|
3124
|
+
return /* @__PURE__ */ jsx4(CompactErrorContent, {
|
|
3229
3125
|
value: error,
|
|
3230
3126
|
color
|
|
3231
3127
|
});
|
|
3232
|
-
return /* @__PURE__ */
|
|
3128
|
+
return /* @__PURE__ */ jsx4(FullErrorContent, {
|
|
3233
3129
|
runtime: entry.meta.originClient,
|
|
3234
3130
|
label: "Error",
|
|
3235
3131
|
error,
|
|
@@ -3238,24 +3134,24 @@ function ActionErrorDisplay({
|
|
|
3238
3134
|
});
|
|
3239
3135
|
}
|
|
3240
3136
|
if (status === "aborted") {
|
|
3241
|
-
const color =
|
|
3137
|
+
const color = DEVTOOL_COLOR_SEMANTIC_METADATA2;
|
|
3242
3138
|
if (compact)
|
|
3243
|
-
return /* @__PURE__ */
|
|
3139
|
+
return /* @__PURE__ */ jsx4(CompactErrorContent, {
|
|
3244
3140
|
value: abortReason,
|
|
3245
3141
|
color
|
|
3246
3142
|
});
|
|
3247
3143
|
return /* @__PURE__ */ jsxs4(Fragment, {
|
|
3248
3144
|
children: [
|
|
3249
|
-
abortReason != null && (isNiceErrorJson(abortReason) ? /* @__PURE__ */
|
|
3145
|
+
abortReason != null && (isNiceErrorJson(abortReason) ? /* @__PURE__ */ jsx4(NiceErrorDisplay, {
|
|
3250
3146
|
error: abortReason,
|
|
3251
3147
|
label: "Abort Reason",
|
|
3252
3148
|
color
|
|
3253
|
-
}) : /* @__PURE__ */
|
|
3149
|
+
}) : /* @__PURE__ */ jsx4(DetailSection, {
|
|
3254
3150
|
label: "Abort Reason",
|
|
3255
3151
|
value: abortReason,
|
|
3256
3152
|
color
|
|
3257
3153
|
})),
|
|
3258
|
-
/* @__PURE__ */
|
|
3154
|
+
/* @__PURE__ */ jsx4(StackTraceSection, {
|
|
3259
3155
|
runtime: entry.meta.originClient,
|
|
3260
3156
|
label: "Abort Stack",
|
|
3261
3157
|
stack: errorStack,
|
|
@@ -3271,114 +3167,13 @@ function ActionErrorDisplay({
|
|
|
3271
3167
|
import { Component } from "lucide-react";
|
|
3272
3168
|
|
|
3273
3169
|
// src/devtools/browser/components/Chip.tsx
|
|
3274
|
-
import { useState as
|
|
3170
|
+
import { useState as useState3 } from "react";
|
|
3275
3171
|
|
|
3276
3172
|
// src/devtools/browser/components/Tooltip.tsx
|
|
3277
|
-
import {
|
|
3278
|
-
import { jsx as jsx6, jsxs as jsxs5, Fragment as Fragment2 } from "react/jsx-runtime";
|
|
3279
|
-
function Tooltip({
|
|
3280
|
-
anchor,
|
|
3281
|
-
config,
|
|
3282
|
-
children
|
|
3283
|
-
}) {
|
|
3284
|
-
const resolvedTitle = config?.title;
|
|
3285
|
-
const resolvedAlign = config?.align;
|
|
3286
|
-
const resolvedMaxWidth = config?.maxWidth ?? 400;
|
|
3287
|
-
const resolvedContent = config != null ? config.content : children;
|
|
3288
|
-
const showAbove = anchor.top >= window.innerHeight - anchor.bottom;
|
|
3289
|
-
const gap = 6;
|
|
3290
|
-
const screenMargin = 16;
|
|
3291
|
-
const top = showAbove ? Math.round(anchor.top - gap) : Math.round(anchor.bottom + gap);
|
|
3292
|
-
const maxHeight = showAbove ? Math.round(anchor.top - gap - screenMargin) : Math.round(window.innerHeight - anchor.bottom - gap - screenMargin);
|
|
3293
|
-
let left;
|
|
3294
|
-
let right;
|
|
3295
|
-
let transform;
|
|
3296
|
-
if (resolvedAlign === "center") {
|
|
3297
|
-
const halfMax = resolvedMaxWidth != null ? resolvedMaxWidth / 2 : 120;
|
|
3298
|
-
const center = Math.round(anchor.left + anchor.width / 2);
|
|
3299
|
-
left = Math.max(halfMax + screenMargin, Math.min(center, window.innerWidth - halfMax - screenMargin));
|
|
3300
|
-
transform = showAbove ? "translateX(-50%) translateY(-100%)" : "translateX(-50%)";
|
|
3301
|
-
} else {
|
|
3302
|
-
const anchorMidX = anchor.left + anchor.width / 2;
|
|
3303
|
-
if (anchorMidX <= window.innerWidth / 2) {
|
|
3304
|
-
left = Math.max(screenMargin, anchor.left);
|
|
3305
|
-
} else {
|
|
3306
|
-
right = Math.max(screenMargin, window.innerWidth - anchor.right);
|
|
3307
|
-
}
|
|
3308
|
-
if (showAbove)
|
|
3309
|
-
transform = "translateY(-100%)";
|
|
3310
|
-
}
|
|
3311
|
-
return /* @__PURE__ */ jsxs5("div", {
|
|
3312
|
-
style: {
|
|
3313
|
-
position: "fixed",
|
|
3314
|
-
left,
|
|
3315
|
-
right,
|
|
3316
|
-
top,
|
|
3317
|
-
transform,
|
|
3318
|
-
zIndex: 2147483647,
|
|
3319
|
-
background: DEVTOOL_TOOLTIP_BACKGROUND,
|
|
3320
|
-
border: `1px solid ${DEVTOOL_TOOLTIP_BORDER}`,
|
|
3321
|
-
borderRadius: "5px",
|
|
3322
|
-
boxShadow: "0 4px 20px rgba(0,0,0,0.6)",
|
|
3323
|
-
pointerEvents: "none",
|
|
3324
|
-
maxWidth: resolvedMaxWidth != null ? `${resolvedMaxWidth}px` : undefined,
|
|
3325
|
-
maxHeight: `${maxHeight}px`,
|
|
3326
|
-
overflowY: "auto",
|
|
3327
|
-
overflowX: "hidden",
|
|
3328
|
-
whiteSpace: "normal",
|
|
3329
|
-
wordBreak: "break-word",
|
|
3330
|
-
overflowWrap: "anywhere"
|
|
3331
|
-
},
|
|
3332
|
-
children: [
|
|
3333
|
-
resolvedTitle != null && /* @__PURE__ */ jsx6("div", {
|
|
3334
|
-
style: {
|
|
3335
|
-
background: DEVTOOL_TOOLTIP_TITLE_BACKGROUND,
|
|
3336
|
-
padding: "6px 8px",
|
|
3337
|
-
alignSelf: "start",
|
|
3338
|
-
textAlign: "left",
|
|
3339
|
-
color: DEVTOOL_COLOR_TEXT_SECONDARY,
|
|
3340
|
-
fontSize: "0.75rem",
|
|
3341
|
-
fontWeight: 600,
|
|
3342
|
-
paddingBottom: "4px",
|
|
3343
|
-
marginBottom: "4px",
|
|
3344
|
-
borderBottom: `1px solid ${DEVTOOL_TOOLTIP_TITLE_BOTTOM_BORDER}`
|
|
3345
|
-
},
|
|
3346
|
-
children: resolvedTitle
|
|
3347
|
-
}),
|
|
3348
|
-
/* @__PURE__ */ jsx6("div", {
|
|
3349
|
-
style: {
|
|
3350
|
-
padding: "6px 8px"
|
|
3351
|
-
},
|
|
3352
|
-
children: resolvedContent
|
|
3353
|
-
})
|
|
3354
|
-
]
|
|
3355
|
-
});
|
|
3356
|
-
}
|
|
3357
|
-
function HoverTooltip({
|
|
3358
|
-
config,
|
|
3359
|
-
children,
|
|
3360
|
-
style
|
|
3361
|
-
}) {
|
|
3362
|
-
const [anchor, setAnchor] = useState3(null);
|
|
3363
|
-
const enabled = config != null;
|
|
3364
|
-
return /* @__PURE__ */ jsxs5(Fragment2, {
|
|
3365
|
-
children: [
|
|
3366
|
-
/* @__PURE__ */ jsx6("span", {
|
|
3367
|
-
onMouseEnter: enabled ? (e) => setAnchor(e.currentTarget.getBoundingClientRect()) : undefined,
|
|
3368
|
-
onMouseLeave: enabled ? () => setAnchor(null) : undefined,
|
|
3369
|
-
style: { ...style, cursor: enabled ? "default" : style?.cursor },
|
|
3370
|
-
children
|
|
3371
|
-
}),
|
|
3372
|
-
enabled && anchor != null && config != null && /* @__PURE__ */ jsx6(Tooltip, {
|
|
3373
|
-
anchor,
|
|
3374
|
-
config
|
|
3375
|
-
})
|
|
3376
|
-
]
|
|
3377
|
-
});
|
|
3378
|
-
}
|
|
3173
|
+
import { HoverTooltip, Tooltip } from "nice-devtools-shared";
|
|
3379
3174
|
|
|
3380
3175
|
// src/devtools/browser/components/Chip.tsx
|
|
3381
|
-
import { jsx as
|
|
3176
|
+
import { jsx as jsx5, jsxs as jsxs5, Fragment as Fragment2 } from "react/jsx-runtime";
|
|
3382
3177
|
var CHIP_SIZE_STYLES = {
|
|
3383
3178
|
["sm" /* sm */]: { fontSize: "0.8em", padding: "1px 3px" },
|
|
3384
3179
|
["md" /* md */]: { fontSize: "0.9em", padding: "1px 4px" },
|
|
@@ -3392,15 +3187,15 @@ function Chip({
|
|
|
3392
3187
|
tooltip,
|
|
3393
3188
|
children
|
|
3394
3189
|
}) {
|
|
3395
|
-
const [anchor, setAnchor] =
|
|
3190
|
+
const [anchor, setAnchor] = useState3(null);
|
|
3396
3191
|
const hasTooltip = tooltip != null;
|
|
3397
3192
|
const { fontSize, padding } = CHIP_SIZE_STYLES[size];
|
|
3398
3193
|
const colorEntry = SEMANTIC_COLORS[color];
|
|
3399
3194
|
const resolvedColor = subtle ? colorEntry.subtle?.color ?? colorEntry.color : colorEntry.color;
|
|
3400
3195
|
const resolvedBorderColor = subtle ? colorEntry.subtle?.borderColor ?? "transparent" : colorEntry.borderColor;
|
|
3401
|
-
return /* @__PURE__ */
|
|
3196
|
+
return /* @__PURE__ */ jsxs5(Fragment2, {
|
|
3402
3197
|
children: [
|
|
3403
|
-
/* @__PURE__ */
|
|
3198
|
+
/* @__PURE__ */ jsx5("span", {
|
|
3404
3199
|
onMouseEnter: hasTooltip ? (e) => setAnchor(e.currentTarget.getBoundingClientRect()) : undefined,
|
|
3405
3200
|
onMouseLeave: hasTooltip ? () => setAnchor(null) : undefined,
|
|
3406
3201
|
style: {
|
|
@@ -3418,7 +3213,7 @@ function Chip({
|
|
|
3418
3213
|
},
|
|
3419
3214
|
children
|
|
3420
3215
|
}),
|
|
3421
|
-
anchor != null && hasTooltip && /* @__PURE__ */
|
|
3216
|
+
anchor != null && hasTooltip && /* @__PURE__ */ jsx5(Tooltip, {
|
|
3422
3217
|
anchor,
|
|
3423
3218
|
config: tooltip
|
|
3424
3219
|
})
|
|
@@ -3427,8 +3222,8 @@ function Chip({
|
|
|
3427
3222
|
}
|
|
3428
3223
|
|
|
3429
3224
|
// src/devtools/browser/components/Icon.tsx
|
|
3430
|
-
import { useState as
|
|
3431
|
-
import { jsx as
|
|
3225
|
+
import { useState as useState4 } from "react";
|
|
3226
|
+
import { jsx as jsx6, jsxs as jsxs6, Fragment as Fragment3 } from "react/jsx-runtime";
|
|
3432
3227
|
var BASE_ICON_SIDE_LENGTH_EM = 1.6;
|
|
3433
3228
|
var ICON_GAP_EM = 0.3;
|
|
3434
3229
|
function Icon({
|
|
@@ -3440,16 +3235,16 @@ function Icon({
|
|
|
3440
3235
|
style,
|
|
3441
3236
|
noBackground = false
|
|
3442
3237
|
}) {
|
|
3443
|
-
const [anchor, setAnchor] =
|
|
3238
|
+
const [anchor, setAnchor] = useState4(null);
|
|
3444
3239
|
const hasTooltip = tooltip != null;
|
|
3445
3240
|
const colorEntry = SEMANTIC_COLORS[color];
|
|
3446
3241
|
const resolvedColor = subtle ? colorEntry.subtle?.color ?? colorEntry.color : colorEntry.color;
|
|
3447
3242
|
const finalIcons = Array.isArray(IconComponent) ? IconComponent : [IconComponent];
|
|
3448
3243
|
const fullIconWidthEm = (finalIcons.length - 1) * ICON_GAP_EM + finalIcons.length * BASE_ICON_SIDE_LENGTH_EM * getSizeValue(size);
|
|
3449
3244
|
const iconSideLengthEm = `${BASE_ICON_SIDE_LENGTH_EM * getSizeValue(size)}em`;
|
|
3450
|
-
return /* @__PURE__ */
|
|
3245
|
+
return /* @__PURE__ */ jsxs6(Fragment3, {
|
|
3451
3246
|
children: [
|
|
3452
|
-
/* @__PURE__ */
|
|
3247
|
+
/* @__PURE__ */ jsx6("div", {
|
|
3453
3248
|
onMouseEnter: hasTooltip ? (e) => setAnchor(e.currentTarget.getBoundingClientRect()) : undefined,
|
|
3454
3249
|
onMouseLeave: hasTooltip ? () => setAnchor(null) : undefined,
|
|
3455
3250
|
style: {
|
|
@@ -3466,15 +3261,15 @@ function Icon({
|
|
|
3466
3261
|
cursor: hasTooltip ? "default" : undefined,
|
|
3467
3262
|
...style
|
|
3468
3263
|
},
|
|
3469
|
-
children: /* @__PURE__ */
|
|
3264
|
+
children: /* @__PURE__ */ jsx6("div", {
|
|
3470
3265
|
style: { display: "flex", alignItems: "center", gap: `${ICON_GAP_EM}em` },
|
|
3471
|
-
children: finalIcons.map((Comp, i) => /* @__PURE__ */
|
|
3266
|
+
children: finalIcons.map((Comp, i) => /* @__PURE__ */ jsx6(Comp, {
|
|
3472
3267
|
size: iconSideLengthEm,
|
|
3473
3268
|
strokeWidth: 2.6
|
|
3474
3269
|
}, `${Comp.name}-${i}`))
|
|
3475
3270
|
})
|
|
3476
3271
|
}),
|
|
3477
|
-
anchor != null && hasTooltip && /* @__PURE__ */
|
|
3272
|
+
anchor != null && hasTooltip && /* @__PURE__ */ jsx6(Tooltip, {
|
|
3478
3273
|
anchor,
|
|
3479
3274
|
config: tooltip
|
|
3480
3275
|
})
|
|
@@ -3483,12 +3278,12 @@ function Icon({
|
|
|
3483
3278
|
}
|
|
3484
3279
|
|
|
3485
3280
|
// src/devtools/browser/components/DomainChip.tsx
|
|
3486
|
-
import { jsx as
|
|
3281
|
+
import { jsx as jsx7, jsxs as jsxs7, Fragment as Fragment4 } from "react/jsx-runtime";
|
|
3487
3282
|
function DomainHierarchyContent({ allDomains }) {
|
|
3488
|
-
return /* @__PURE__ */
|
|
3283
|
+
return /* @__PURE__ */ jsx7(Fragment4, {
|
|
3489
3284
|
children: allDomains.map((d, i) => {
|
|
3490
3285
|
const isCurrent = i === allDomains.length - 1;
|
|
3491
|
-
return /* @__PURE__ */
|
|
3286
|
+
return /* @__PURE__ */ jsxs7("div", {
|
|
3492
3287
|
style: {
|
|
3493
3288
|
display: "flex",
|
|
3494
3289
|
alignItems: "center",
|
|
@@ -3497,22 +3292,22 @@ function DomainHierarchyContent({ allDomains }) {
|
|
|
3497
3292
|
paddingTop: i > 0 ? "0.1rem" : undefined
|
|
3498
3293
|
},
|
|
3499
3294
|
children: [
|
|
3500
|
-
/* @__PURE__ */
|
|
3295
|
+
/* @__PURE__ */ jsx7("span", {
|
|
3501
3296
|
style: {
|
|
3502
3297
|
fontSize: "0.8rem",
|
|
3503
3298
|
height: "0.6em",
|
|
3504
3299
|
width: "0.6em",
|
|
3505
3300
|
overflow: "hidden",
|
|
3506
|
-
color: isCurrent ?
|
|
3301
|
+
color: isCurrent ? DEVTOOL_COLOR_SEMANTIC_SYSTEM2 : "#3730a3",
|
|
3507
3302
|
display: "flex",
|
|
3508
3303
|
alignItems: "center",
|
|
3509
3304
|
justifyContent: "center"
|
|
3510
3305
|
},
|
|
3511
3306
|
children: "⬢"
|
|
3512
3307
|
}),
|
|
3513
|
-
/* @__PURE__ */
|
|
3308
|
+
/* @__PURE__ */ jsx7("span", {
|
|
3514
3309
|
style: {
|
|
3515
|
-
color: isCurrent ?
|
|
3310
|
+
color: isCurrent ? DEVTOOL_COLOR_SEMANTIC_SYSTEM2 : "#4b5563",
|
|
3516
3311
|
fontSize: "0.7rem",
|
|
3517
3312
|
fontWeight: isCurrent ? 500 : undefined
|
|
3518
3313
|
},
|
|
@@ -3531,11 +3326,11 @@ function DomainChip({
|
|
|
3531
3326
|
size
|
|
3532
3327
|
}) {
|
|
3533
3328
|
if (compact) {
|
|
3534
|
-
return /* @__PURE__ */
|
|
3329
|
+
return /* @__PURE__ */ jsx7(Icon, {
|
|
3535
3330
|
icon: Component,
|
|
3536
3331
|
color: "domain" /* domain */,
|
|
3537
3332
|
tooltip: {
|
|
3538
|
-
content: /* @__PURE__ */
|
|
3333
|
+
content: /* @__PURE__ */ jsx7(DomainHierarchyContent, {
|
|
3539
3334
|
allDomains
|
|
3540
3335
|
}),
|
|
3541
3336
|
title: "Action Domain",
|
|
@@ -3543,22 +3338,22 @@ function DomainChip({
|
|
|
3543
3338
|
}
|
|
3544
3339
|
});
|
|
3545
3340
|
}
|
|
3546
|
-
return /* @__PURE__ */
|
|
3341
|
+
return /* @__PURE__ */ jsx7(Chip, {
|
|
3547
3342
|
color: "domain" /* domain */,
|
|
3548
3343
|
subtle,
|
|
3549
3344
|
size,
|
|
3550
3345
|
rounded: true,
|
|
3551
3346
|
tooltip: {
|
|
3552
|
-
content: /* @__PURE__ */
|
|
3347
|
+
content: /* @__PURE__ */ jsx7(DomainHierarchyContent, {
|
|
3553
3348
|
allDomains
|
|
3554
3349
|
}),
|
|
3555
3350
|
title: "Action Domain",
|
|
3556
3351
|
align: "edge"
|
|
3557
3352
|
},
|
|
3558
|
-
children: /* @__PURE__ */
|
|
3353
|
+
children: /* @__PURE__ */ jsxs7("div", {
|
|
3559
3354
|
style: { display: "flex", alignItems: "center", gap: "0.4em" },
|
|
3560
3355
|
children: [
|
|
3561
|
-
/* @__PURE__ */
|
|
3356
|
+
/* @__PURE__ */ jsx7("span", {
|
|
3562
3357
|
style: {
|
|
3563
3358
|
height: "1.2em",
|
|
3564
3359
|
width: "1.2em",
|
|
@@ -3566,12 +3361,12 @@ function DomainChip({
|
|
|
3566
3361
|
alignItems: "center",
|
|
3567
3362
|
justifyContent: "center"
|
|
3568
3363
|
},
|
|
3569
|
-
children: /* @__PURE__ */
|
|
3364
|
+
children: /* @__PURE__ */ jsx7(Component, {
|
|
3570
3365
|
height: "1.2em",
|
|
3571
3366
|
width: "1.2em"
|
|
3572
3367
|
})
|
|
3573
3368
|
}),
|
|
3574
|
-
/* @__PURE__ */
|
|
3369
|
+
/* @__PURE__ */ jsx7("span", {
|
|
3575
3370
|
children: domain
|
|
3576
3371
|
})
|
|
3577
3372
|
]
|
|
@@ -3580,7 +3375,7 @@ function DomainChip({
|
|
|
3580
3375
|
}
|
|
3581
3376
|
|
|
3582
3377
|
// src/devtools/browser/components/HandlerChips.tsx
|
|
3583
|
-
import { jsx as
|
|
3378
|
+
import { jsx as jsx8, jsxs as jsxs8, Fragment as Fragment5 } from "react/jsx-runtime";
|
|
3584
3379
|
function getExternalLabel(hop) {
|
|
3585
3380
|
if (hop.handlerType !== "external")
|
|
3586
3381
|
return null;
|
|
@@ -3595,16 +3390,16 @@ function getTransportTooltipForHops(hops) {
|
|
|
3595
3390
|
return;
|
|
3596
3391
|
return {
|
|
3597
3392
|
title: "Transport",
|
|
3598
|
-
content: /* @__PURE__ */
|
|
3393
|
+
content: /* @__PURE__ */ jsx8("div", {
|
|
3599
3394
|
style: { display: "flex", flexDirection: "column", gap: "6px", fontSize: "11px" },
|
|
3600
|
-
children: lines.map((line) => /* @__PURE__ */
|
|
3395
|
+
children: lines.map((line) => /* @__PURE__ */ jsxs8("div", {
|
|
3601
3396
|
style: { display: "flex", flexDirection: "column", gap: "2px" },
|
|
3602
3397
|
children: [
|
|
3603
|
-
line.summary != null && /* @__PURE__ */
|
|
3398
|
+
line.summary != null && /* @__PURE__ */ jsx8("span", {
|
|
3604
3399
|
children: line.summary
|
|
3605
3400
|
}),
|
|
3606
|
-
line.url != null && line.url !== line.summary && /* @__PURE__ */
|
|
3607
|
-
style: { color:
|
|
3401
|
+
line.url != null && line.url !== line.summary && /* @__PURE__ */ jsx8("span", {
|
|
3402
|
+
style: { color: DEVTOOL_COLOR_TEXT_MUTED2, wordBreak: "break-all" },
|
|
3608
3403
|
children: line.url
|
|
3609
3404
|
})
|
|
3610
3405
|
]
|
|
@@ -3617,15 +3412,15 @@ function HandlerChips({ entry, size, subtle }) {
|
|
|
3617
3412
|
const localEnvId = firstHop != null ? firstHop.runtime.envId : null;
|
|
3618
3413
|
const externalLabel = firstHop != null ? getExternalLabel(firstHop) : null;
|
|
3619
3414
|
const firstHopIsLocal = firstHop != null && firstHop.handlerType === "local";
|
|
3620
|
-
return /* @__PURE__ */
|
|
3415
|
+
return /* @__PURE__ */ jsxs8(Fragment5, {
|
|
3621
3416
|
children: [
|
|
3622
|
-
localEnvId != null && (firstHopIsLocal || externalLabel == null) && /* @__PURE__ */
|
|
3417
|
+
localEnvId != null && (firstHopIsLocal || externalLabel == null) && /* @__PURE__ */ jsx8(Chip, {
|
|
3623
3418
|
color: "handler_local" /* handler_local */,
|
|
3624
3419
|
size,
|
|
3625
3420
|
subtle,
|
|
3626
3421
|
children: localEnvId
|
|
3627
3422
|
}),
|
|
3628
|
-
externalLabel != null && /* @__PURE__ */
|
|
3423
|
+
externalLabel != null && /* @__PURE__ */ jsx8(Chip, {
|
|
3629
3424
|
color: "handler_external" /* handler_external */,
|
|
3630
3425
|
size,
|
|
3631
3426
|
subtle,
|
|
@@ -3637,15 +3432,62 @@ function HandlerChips({ entry, size, subtle }) {
|
|
|
3637
3432
|
}
|
|
3638
3433
|
|
|
3639
3434
|
// src/devtools/browser/components/RunningTimer.tsx
|
|
3640
|
-
import { useEffect as useEffect2, useState as
|
|
3641
|
-
|
|
3435
|
+
import { useEffect as useEffect2, useState as useState5 } from "react";
|
|
3436
|
+
|
|
3437
|
+
// src/devtools/browser/components/utils.ts
|
|
3438
|
+
import { Circle, CircleAlert, CircleCheck, CircleX, Loader2 } from "lucide-react";
|
|
3439
|
+
import { formatRelativeAge, formatTimestamp, safeStringify as safeStringify2 } from "nice-devtools-shared";
|
|
3440
|
+
var STATUS_COLOR = {
|
|
3441
|
+
running: DEVTOOL_COLOR_SEMANTIC_SYSTEM2,
|
|
3442
|
+
success: DEVTOOL_COLOR_SEMANTIC_SUCCESS2,
|
|
3443
|
+
"action-error": DEVTOOL_COLOR_SEMANTIC_WARNING2,
|
|
3444
|
+
failed: DEVTOOL_COLOR_SEMANTIC_ERROR2,
|
|
3445
|
+
aborted: DEVTOOL_COLOR_SEMANTIC_METADATA2
|
|
3446
|
+
};
|
|
3447
|
+
var STATUS_THING = {
|
|
3448
|
+
running: "running_action" /* running_action */,
|
|
3449
|
+
success: "success" /* success */,
|
|
3450
|
+
"action-error": "action_error" /* action_error */,
|
|
3451
|
+
failed: "failed" /* failed */,
|
|
3452
|
+
aborted: "aborted" /* aborted */
|
|
3453
|
+
};
|
|
3454
|
+
var STATUS_SYMBOL = {
|
|
3455
|
+
running: "●",
|
|
3456
|
+
success: "✓",
|
|
3457
|
+
"action-error": "!",
|
|
3458
|
+
failed: "✗",
|
|
3459
|
+
aborted: "○"
|
|
3460
|
+
};
|
|
3461
|
+
var STATUS_ICON = {
|
|
3462
|
+
running: Loader2,
|
|
3463
|
+
success: CircleCheck,
|
|
3464
|
+
"action-error": CircleAlert,
|
|
3465
|
+
failed: CircleX,
|
|
3466
|
+
aborted: Circle
|
|
3467
|
+
};
|
|
3468
|
+
function getInboundOrigin(entry) {
|
|
3469
|
+
const origin = entry.meta.originClient;
|
|
3470
|
+
if (origin == null || origin.envId === "unknown" || origin.envId === "_unset_")
|
|
3471
|
+
return null;
|
|
3472
|
+
const local = entry.meta.routing[0]?.runtime;
|
|
3473
|
+
if (local == null)
|
|
3474
|
+
return null;
|
|
3475
|
+
const sameRuntime = origin.envId === local.envId && (origin.perId ?? null) === (local.perId ?? null) && (origin.insId ?? null) === (local.insId ?? null);
|
|
3476
|
+
return sameRuntime ? null : origin;
|
|
3477
|
+
}
|
|
3478
|
+
function formatDuration(entry) {
|
|
3479
|
+
return entry.endTime != null ? `${entry.endTime - entry.startTime}ms` : null;
|
|
3480
|
+
}
|
|
3481
|
+
|
|
3482
|
+
// src/devtools/browser/components/RunningTimer.tsx
|
|
3483
|
+
import { jsx as jsx9, jsxs as jsxs9, Fragment as Fragment6 } from "react/jsx-runtime";
|
|
3642
3484
|
function RunningTimer({ startTime }) {
|
|
3643
|
-
const [elapsed, setElapsed] =
|
|
3485
|
+
const [elapsed, setElapsed] = useState5(() => Date.now() - startTime);
|
|
3644
3486
|
useEffect2(() => {
|
|
3645
3487
|
const interval = setInterval(() => setElapsed(Date.now() - startTime), 100);
|
|
3646
3488
|
return () => clearInterval(interval);
|
|
3647
3489
|
}, [startTime]);
|
|
3648
|
-
return /* @__PURE__ */
|
|
3490
|
+
return /* @__PURE__ */ jsxs9(Fragment6, {
|
|
3649
3491
|
children: [
|
|
3650
3492
|
elapsed,
|
|
3651
3493
|
"ms"
|
|
@@ -3654,15 +3496,15 @@ function RunningTimer({ startTime }) {
|
|
|
3654
3496
|
}
|
|
3655
3497
|
function DurationDisplay({ entry }) {
|
|
3656
3498
|
const d = formatDuration(entry);
|
|
3657
|
-
return /* @__PURE__ */
|
|
3658
|
-
children: d ?? /* @__PURE__ */
|
|
3499
|
+
return /* @__PURE__ */ jsx9(Fragment6, {
|
|
3500
|
+
children: d ?? /* @__PURE__ */ jsx9(RunningTimer, {
|
|
3659
3501
|
startTime: entry.startTime
|
|
3660
3502
|
})
|
|
3661
3503
|
});
|
|
3662
3504
|
}
|
|
3663
3505
|
|
|
3664
3506
|
// src/devtools/browser/components/CallStackSection.tsx
|
|
3665
|
-
import { jsx as
|
|
3507
|
+
import { jsx as jsx10, jsxs as jsxs10 } from "react/jsx-runtime";
|
|
3666
3508
|
function getCalledLabel(entry) {
|
|
3667
3509
|
const firstHop = entry.meta.routing[0];
|
|
3668
3510
|
if (firstHop == null)
|
|
@@ -3675,7 +3517,7 @@ function getCalledLabel(entry) {
|
|
|
3675
3517
|
function getCalledColor(entry) {
|
|
3676
3518
|
const firstHop = entry.meta.routing[0];
|
|
3677
3519
|
if (firstHop == null)
|
|
3678
|
-
return
|
|
3520
|
+
return DEVTOOL_COLOR_SEMANTIC_SYSTEM2;
|
|
3679
3521
|
if (firstHop.handlerType === "local")
|
|
3680
3522
|
return DEVTOOL_COLOR_HANDLER_LOCAL_TEXT;
|
|
3681
3523
|
return DEVTOOL_COLOR_HANDLER_EXTERNAL_TEXT;
|
|
@@ -3692,12 +3534,12 @@ function CallStackLink({
|
|
|
3692
3534
|
const label = entryRole === "caller" ? "↑ from" : getCalledLabel(entry);
|
|
3693
3535
|
const firstHop = entry.meta.routing[0];
|
|
3694
3536
|
const transportTooltip = entryRole === "called" && firstHop != null ? getTransportTooltip(firstHop) : undefined;
|
|
3695
|
-
return /* @__PURE__ */
|
|
3537
|
+
return /* @__PURE__ */ jsxs10("div", {
|
|
3696
3538
|
onClick,
|
|
3697
3539
|
style: {
|
|
3698
|
-
background: isFocused ?
|
|
3540
|
+
background: isFocused ? DEVTOOL_SECTION_BACKGROUND2 : DEVTOOL_DETAIL_HEADER_BACKGROUND,
|
|
3699
3541
|
borderBottom: `1px solid ${DEVTOOL_COLOR_CALL_STACK_DIVIDER}`,
|
|
3700
|
-
borderLeft: isFocused ? `2px solid ${
|
|
3542
|
+
borderLeft: isFocused ? `2px solid ${DEVTOOL_COLOR_SEMANTIC_SYSTEM2}` : "2px solid transparent",
|
|
3701
3543
|
padding: "5px 12px 5px 10px",
|
|
3702
3544
|
display: "grid",
|
|
3703
3545
|
gridTemplateColumns: "1fr 1fr",
|
|
@@ -3706,25 +3548,25 @@ function CallStackLink({
|
|
|
3706
3548
|
cursor: "pointer"
|
|
3707
3549
|
},
|
|
3708
3550
|
children: [
|
|
3709
|
-
/* @__PURE__ */
|
|
3551
|
+
/* @__PURE__ */ jsxs10("span", {
|
|
3710
3552
|
style: { display: "flex", alignItems: "center", gap: "1em", flexShrink: 0 },
|
|
3711
3553
|
children: [
|
|
3712
|
-
/* @__PURE__ */
|
|
3554
|
+
/* @__PURE__ */ jsx10("span", {
|
|
3713
3555
|
style: { color, fontSize: "10px", flexShrink: 0 },
|
|
3714
3556
|
children: symbol
|
|
3715
3557
|
}),
|
|
3716
|
-
/* @__PURE__ */
|
|
3558
|
+
/* @__PURE__ */ jsx10(HoverTooltip, {
|
|
3717
3559
|
config: transportTooltip,
|
|
3718
3560
|
style: { flexShrink: 0, display: "flex" },
|
|
3719
|
-
children: /* @__PURE__ */
|
|
3561
|
+
children: /* @__PURE__ */ jsx10("span", {
|
|
3720
3562
|
style: { color: labelColor, fontSize: "9px" },
|
|
3721
3563
|
children: label
|
|
3722
3564
|
})
|
|
3723
3565
|
}),
|
|
3724
|
-
/* @__PURE__ */
|
|
3566
|
+
/* @__PURE__ */ jsxs10("span", {
|
|
3725
3567
|
style: { display: "flex", alignItems: "center", gap: "5px" },
|
|
3726
3568
|
children: [
|
|
3727
|
-
/* @__PURE__ */
|
|
3569
|
+
/* @__PURE__ */ jsx10("span", {
|
|
3728
3570
|
style: {
|
|
3729
3571
|
color: DEVTOOL_COLOR_TEXT_SECONDARY,
|
|
3730
3572
|
fontSize: "11px",
|
|
@@ -3734,7 +3576,7 @@ function CallStackLink({
|
|
|
3734
3576
|
},
|
|
3735
3577
|
children: entry.actionId
|
|
3736
3578
|
}),
|
|
3737
|
-
/* @__PURE__ */
|
|
3579
|
+
/* @__PURE__ */ jsx10(DomainChip, {
|
|
3738
3580
|
domain: entry.domain,
|
|
3739
3581
|
allDomains: entry.allDomains,
|
|
3740
3582
|
size: "sm" /* sm */
|
|
@@ -3743,14 +3585,14 @@ function CallStackLink({
|
|
|
3743
3585
|
})
|
|
3744
3586
|
]
|
|
3745
3587
|
}),
|
|
3746
|
-
/* @__PURE__ */
|
|
3588
|
+
/* @__PURE__ */ jsx10("span", {
|
|
3747
3589
|
style: {
|
|
3748
|
-
color:
|
|
3590
|
+
color: DEVTOOL_COLOR_TEXT_FAINT2,
|
|
3749
3591
|
fontSize: "10px",
|
|
3750
3592
|
textAlign: "right",
|
|
3751
3593
|
whiteSpace: "nowrap"
|
|
3752
3594
|
},
|
|
3753
|
-
children: /* @__PURE__ */
|
|
3595
|
+
children: /* @__PURE__ */ jsx10(DurationDisplay, {
|
|
3754
3596
|
entry
|
|
3755
3597
|
})
|
|
3756
3598
|
})
|
|
@@ -3766,15 +3608,15 @@ function CallStackSection({
|
|
|
3766
3608
|
}) {
|
|
3767
3609
|
if (parent == null && childEntries.length === 0)
|
|
3768
3610
|
return null;
|
|
3769
|
-
return /* @__PURE__ */
|
|
3611
|
+
return /* @__PURE__ */ jsxs10("div", {
|
|
3770
3612
|
children: [
|
|
3771
|
-
parent != null && /* @__PURE__ */
|
|
3613
|
+
parent != null && /* @__PURE__ */ jsx10(CallStackLink, {
|
|
3772
3614
|
entry: parent,
|
|
3773
3615
|
entryRole: "caller",
|
|
3774
3616
|
isFocused: false,
|
|
3775
3617
|
onClick: () => onSelectParent(parent.cuid)
|
|
3776
3618
|
}),
|
|
3777
|
-
childEntries.map((child) => /* @__PURE__ */
|
|
3619
|
+
childEntries.map((child) => /* @__PURE__ */ jsx10(CallStackLink, {
|
|
3778
3620
|
entry: child,
|
|
3779
3621
|
entryRole: "called",
|
|
3780
3622
|
isFocused: focusedChildCuid === child.cuid,
|
|
@@ -3785,7 +3627,7 @@ function CallStackSection({
|
|
|
3785
3627
|
}
|
|
3786
3628
|
|
|
3787
3629
|
// src/devtools/browser/components/ChildDispatchChips.tsx
|
|
3788
|
-
import { jsx as
|
|
3630
|
+
import { jsx as jsx11 } from "react/jsx-runtime";
|
|
3789
3631
|
function ChildDispatchChips({
|
|
3790
3632
|
childRouteItems,
|
|
3791
3633
|
size = "sm" /* sm */
|
|
@@ -3806,12 +3648,12 @@ function ChildDispatchChips({
|
|
|
3806
3648
|
group.transports.push(transport);
|
|
3807
3649
|
}
|
|
3808
3650
|
}
|
|
3809
|
-
return /* @__PURE__ */
|
|
3651
|
+
return /* @__PURE__ */ jsx11("div", {
|
|
3810
3652
|
style: { display: "flex", alignItems: "center", gap: "4px", flexWrap: "wrap" },
|
|
3811
3653
|
children: Array.from(groups.values()).map((group) => {
|
|
3812
3654
|
const transportStr = group.transports.length > 0 ? group.transports.join(", ") : "ext";
|
|
3813
3655
|
const label = group.hasClient ? `${transportStr} → ${group.runtimeId}` : `→ ${transportStr}`;
|
|
3814
|
-
return /* @__PURE__ */
|
|
3656
|
+
return /* @__PURE__ */ jsx11(Chip, {
|
|
3815
3657
|
color: "handler_external" /* handler_external */,
|
|
3816
3658
|
size,
|
|
3817
3659
|
tooltip: getTransportTooltipForHops(group.hops),
|
|
@@ -3822,20 +3664,20 @@ function ChildDispatchChips({
|
|
|
3822
3664
|
}
|
|
3823
3665
|
|
|
3824
3666
|
// src/devtools/browser/components/MetaSection.tsx
|
|
3825
|
-
import { useState as
|
|
3826
|
-
import { jsx as
|
|
3667
|
+
import { useState as useState6 } from "react";
|
|
3668
|
+
import { jsx as jsx12, jsxs as jsxs11 } from "react/jsx-runtime";
|
|
3827
3669
|
function MetaChip({ label, value }) {
|
|
3828
|
-
return /* @__PURE__ */
|
|
3670
|
+
return /* @__PURE__ */ jsxs11("span", {
|
|
3829
3671
|
style: { whiteSpace: "nowrap" },
|
|
3830
3672
|
children: [
|
|
3831
|
-
/* @__PURE__ */
|
|
3832
|
-
style: { color:
|
|
3673
|
+
/* @__PURE__ */ jsxs11("span", {
|
|
3674
|
+
style: { color: DEVTOOL_COLOR_TEXT_MUTED2 },
|
|
3833
3675
|
children: [
|
|
3834
3676
|
label,
|
|
3835
3677
|
" "
|
|
3836
3678
|
]
|
|
3837
3679
|
}),
|
|
3838
|
-
/* @__PURE__ */
|
|
3680
|
+
/* @__PURE__ */ jsx12("span", {
|
|
3839
3681
|
style: { color: DEVTOOL_COLOR_TEXT_SECONDARY },
|
|
3840
3682
|
children: value
|
|
3841
3683
|
})
|
|
@@ -3843,7 +3685,7 @@ function MetaChip({ label, value }) {
|
|
|
3843
3685
|
});
|
|
3844
3686
|
}
|
|
3845
3687
|
function MetaSection({ entry }) {
|
|
3846
|
-
const [expanded, setExpanded] =
|
|
3688
|
+
const [expanded, setExpanded] = useState6(false);
|
|
3847
3689
|
const { meta, cuid } = entry;
|
|
3848
3690
|
const expandedRows = [
|
|
3849
3691
|
{ label: "cuid", value: cuid },
|
|
@@ -3851,9 +3693,9 @@ function MetaSection({ entry }) {
|
|
|
3851
3693
|
...meta.originClient.perId != null ? [{ label: "perId", value: meta.originClient.perId }] : [],
|
|
3852
3694
|
...meta.originClient.insId != null ? [{ label: "insId", value: meta.originClient.insId }] : []
|
|
3853
3695
|
];
|
|
3854
|
-
return /* @__PURE__ */
|
|
3696
|
+
return /* @__PURE__ */ jsxs11("div", {
|
|
3855
3697
|
children: [
|
|
3856
|
-
/* @__PURE__ */
|
|
3698
|
+
/* @__PURE__ */ jsxs11("div", {
|
|
3857
3699
|
style: {
|
|
3858
3700
|
display: "flex",
|
|
3859
3701
|
alignItems: "center",
|
|
@@ -3861,30 +3703,30 @@ function MetaSection({ entry }) {
|
|
|
3861
3703
|
marginBottom: "3px"
|
|
3862
3704
|
},
|
|
3863
3705
|
children: [
|
|
3864
|
-
/* @__PURE__ */
|
|
3706
|
+
/* @__PURE__ */ jsx12("div", {
|
|
3865
3707
|
style: {
|
|
3866
|
-
color:
|
|
3708
|
+
color: DEVTOOL_COLOR_SEMANTIC_SYSTEM2,
|
|
3867
3709
|
fontSize: "10px",
|
|
3868
3710
|
textTransform: "uppercase",
|
|
3869
3711
|
letterSpacing: "0.05em"
|
|
3870
3712
|
},
|
|
3871
3713
|
children: "Meta"
|
|
3872
3714
|
}),
|
|
3873
|
-
/* @__PURE__ */
|
|
3874
|
-
style: { color:
|
|
3715
|
+
/* @__PURE__ */ jsx12("span", {
|
|
3716
|
+
style: { color: DEVTOOL_COLOR_TEXT_FAINT2, fontSize: "11px" },
|
|
3875
3717
|
children: expanded ? "▾" : "▸"
|
|
3876
3718
|
})
|
|
3877
3719
|
]
|
|
3878
3720
|
}),
|
|
3879
|
-
expanded ? /* @__PURE__ */
|
|
3721
|
+
expanded ? /* @__PURE__ */ jsx12("div", {
|
|
3880
3722
|
onClick: () => setExpanded(false),
|
|
3881
3723
|
style: {
|
|
3882
|
-
background:
|
|
3724
|
+
background: DEVTOOL_SECTION_BACKGROUND2,
|
|
3883
3725
|
borderRadius: "4px",
|
|
3884
3726
|
overflow: "hidden",
|
|
3885
3727
|
cursor: "pointer"
|
|
3886
3728
|
},
|
|
3887
|
-
children: expandedRows.map(({ label, value }, i) => /* @__PURE__ */
|
|
3729
|
+
children: expandedRows.map(({ label, value }, i) => /* @__PURE__ */ jsxs11("div", {
|
|
3888
3730
|
style: {
|
|
3889
3731
|
display: "grid",
|
|
3890
3732
|
gridTemplateColumns: "52px 1fr",
|
|
@@ -3894,16 +3736,16 @@ function MetaSection({ entry }) {
|
|
|
3894
3736
|
alignItems: "start"
|
|
3895
3737
|
},
|
|
3896
3738
|
children: [
|
|
3897
|
-
/* @__PURE__ */
|
|
3739
|
+
/* @__PURE__ */ jsx12("span", {
|
|
3898
3740
|
style: {
|
|
3899
3741
|
textAlign: "left",
|
|
3900
|
-
color:
|
|
3742
|
+
color: DEVTOOL_COLOR_TEXT_MUTED2,
|
|
3901
3743
|
fontSize: "10px",
|
|
3902
3744
|
paddingTop: "1px"
|
|
3903
3745
|
},
|
|
3904
3746
|
children: label
|
|
3905
3747
|
}),
|
|
3906
|
-
/* @__PURE__ */
|
|
3748
|
+
/* @__PURE__ */ jsx12("span", {
|
|
3907
3749
|
style: {
|
|
3908
3750
|
textAlign: "left",
|
|
3909
3751
|
color: DEVTOOL_COLOR_TEXT_SECONDARY,
|
|
@@ -3914,10 +3756,10 @@ function MetaSection({ entry }) {
|
|
|
3914
3756
|
})
|
|
3915
3757
|
]
|
|
3916
3758
|
}, label))
|
|
3917
|
-
}) : /* @__PURE__ */
|
|
3759
|
+
}) : /* @__PURE__ */ jsxs11("div", {
|
|
3918
3760
|
onClick: () => setExpanded(true),
|
|
3919
3761
|
style: {
|
|
3920
|
-
background:
|
|
3762
|
+
background: DEVTOOL_SECTION_BACKGROUND2,
|
|
3921
3763
|
borderRadius: "4px",
|
|
3922
3764
|
padding: "5px 8px",
|
|
3923
3765
|
fontSize: "11px",
|
|
@@ -3928,19 +3770,19 @@ function MetaSection({ entry }) {
|
|
|
3928
3770
|
cursor: "pointer"
|
|
3929
3771
|
},
|
|
3930
3772
|
children: [
|
|
3931
|
-
/* @__PURE__ */
|
|
3773
|
+
/* @__PURE__ */ jsx12(MetaChip, {
|
|
3932
3774
|
label: "cuid",
|
|
3933
3775
|
value: `…${cuid.slice(-8)}`
|
|
3934
3776
|
}),
|
|
3935
|
-
/* @__PURE__ */
|
|
3777
|
+
/* @__PURE__ */ jsx12(MetaChip, {
|
|
3936
3778
|
label: "runtime",
|
|
3937
3779
|
value: meta.originClient.envId
|
|
3938
3780
|
}),
|
|
3939
|
-
meta.originClient.perId != null && /* @__PURE__ */
|
|
3781
|
+
meta.originClient.perId != null && /* @__PURE__ */ jsx12(MetaChip, {
|
|
3940
3782
|
label: "perId",
|
|
3941
3783
|
value: meta.originClient.perId.length > 10 ? `${meta.originClient.perId.slice(0, 10)}…` : meta.originClient.perId
|
|
3942
3784
|
}),
|
|
3943
|
-
meta.originClient.insId != null && /* @__PURE__ */
|
|
3785
|
+
meta.originClient.insId != null && /* @__PURE__ */ jsx12(MetaChip, {
|
|
3944
3786
|
label: "insId",
|
|
3945
3787
|
value: meta.originClient.insId.length > 10 ? `${meta.originClient.insId.slice(0, 10)}…` : meta.originClient.insId
|
|
3946
3788
|
})
|
|
@@ -3951,34 +3793,34 @@ function MetaSection({ entry }) {
|
|
|
3951
3793
|
}
|
|
3952
3794
|
|
|
3953
3795
|
// src/devtools/browser/components/OriginChip.tsx
|
|
3954
|
-
import { jsx as
|
|
3796
|
+
import { jsx as jsx13, jsxs as jsxs12 } from "react/jsx-runtime";
|
|
3955
3797
|
function OriginChip({
|
|
3956
3798
|
origin,
|
|
3957
3799
|
size = "md" /* md */,
|
|
3958
3800
|
subtle
|
|
3959
3801
|
}) {
|
|
3960
|
-
return /* @__PURE__ */
|
|
3802
|
+
return /* @__PURE__ */ jsx13(Chip, {
|
|
3961
3803
|
color: "origin" /* origin */,
|
|
3962
3804
|
size,
|
|
3963
3805
|
subtle,
|
|
3964
3806
|
tooltip: {
|
|
3965
3807
|
title: "Received from",
|
|
3966
|
-
content: /* @__PURE__ */
|
|
3808
|
+
content: /* @__PURE__ */ jsxs12("div", {
|
|
3967
3809
|
style: { display: "flex", flexDirection: "column", gap: "2px", fontSize: "11px" },
|
|
3968
3810
|
children: [
|
|
3969
|
-
/* @__PURE__ */
|
|
3811
|
+
/* @__PURE__ */ jsxs12("span", {
|
|
3970
3812
|
children: [
|
|
3971
3813
|
"env ",
|
|
3972
3814
|
origin.envId
|
|
3973
3815
|
]
|
|
3974
3816
|
}),
|
|
3975
|
-
origin.perId != null && /* @__PURE__ */
|
|
3817
|
+
origin.perId != null && /* @__PURE__ */ jsxs12("span", {
|
|
3976
3818
|
children: [
|
|
3977
3819
|
"perId ",
|
|
3978
3820
|
origin.perId
|
|
3979
3821
|
]
|
|
3980
3822
|
}),
|
|
3981
|
-
origin.insId != null && /* @__PURE__ */
|
|
3823
|
+
origin.insId != null && /* @__PURE__ */ jsxs12("span", {
|
|
3982
3824
|
children: [
|
|
3983
3825
|
"insId ",
|
|
3984
3826
|
origin.insId
|
|
@@ -3992,7 +3834,7 @@ function OriginChip({
|
|
|
3992
3834
|
}
|
|
3993
3835
|
|
|
3994
3836
|
// src/devtools/browser/components/RoutingSection.tsx
|
|
3995
|
-
import { jsx as
|
|
3837
|
+
import { jsx as jsx14, jsxs as jsxs13 } from "react/jsx-runtime";
|
|
3996
3838
|
function RoutingSection({
|
|
3997
3839
|
entry,
|
|
3998
3840
|
minHopCount = 0
|
|
@@ -4002,24 +3844,24 @@ function RoutingSection({
|
|
|
4002
3844
|
const phantomCount = Math.max(0, minHopCount - hopCount);
|
|
4003
3845
|
if (hopCount === 0 && phantomCount === 0)
|
|
4004
3846
|
return null;
|
|
4005
|
-
return /* @__PURE__ */
|
|
3847
|
+
return /* @__PURE__ */ jsxs13("div", {
|
|
4006
3848
|
children: [
|
|
4007
|
-
/* @__PURE__ */
|
|
3849
|
+
/* @__PURE__ */ jsx14(SectionLabel, {
|
|
4008
3850
|
label: hopCount > 0 ? `Routing · ${hopCount} hop${hopCount !== 1 ? "s" : ""}` : "Routing"
|
|
4009
3851
|
}),
|
|
4010
|
-
/* @__PURE__ */
|
|
3852
|
+
/* @__PURE__ */ jsxs13("div", {
|
|
4011
3853
|
style: { display: "flex", flexDirection: "column", gap: "2px" },
|
|
4012
3854
|
children: [
|
|
4013
3855
|
meta.routing.map((hop, i) => {
|
|
4014
3856
|
const isLocal = hop.handlerType === "local";
|
|
4015
3857
|
const isLast = i === hopCount - 1 && phantomCount === 0;
|
|
4016
|
-
const badgeColor = isLocal ?
|
|
3858
|
+
const badgeColor = isLocal ? DEVTOOL_COLOR_SEMANTIC_SUCCESS2 : DEVTOOL_COLOR_SEMANTIC_WARNING2;
|
|
4017
3859
|
const badgeText = isLocal ? "● exec" : `→ ${hop.transportSummary ?? hop.transport ?? "ext"}`;
|
|
4018
3860
|
const transportTooltip = isLocal ? undefined : getTransportTooltip(hop);
|
|
4019
3861
|
const runtimeTitle = [hop.runtime.perId, hop.runtime.insId].filter(Boolean).join(" · ") || undefined;
|
|
4020
|
-
return /* @__PURE__ */
|
|
3862
|
+
return /* @__PURE__ */ jsxs13("div", {
|
|
4021
3863
|
style: {
|
|
4022
|
-
background:
|
|
3864
|
+
background: DEVTOOL_SECTION_BACKGROUND2,
|
|
4023
3865
|
borderRadius: "4px",
|
|
4024
3866
|
overflow: "hidden",
|
|
4025
3867
|
display: "grid",
|
|
@@ -4030,19 +3872,19 @@ function RoutingSection({
|
|
|
4030
3872
|
padding: "4px 8px"
|
|
4031
3873
|
},
|
|
4032
3874
|
children: [
|
|
4033
|
-
/* @__PURE__ */
|
|
3875
|
+
/* @__PURE__ */ jsxs13("span", {
|
|
4034
3876
|
style: { display: "flex", flexDirection: "row", alignItems: "center", gap: "10px" },
|
|
4035
3877
|
children: [
|
|
4036
|
-
/* @__PURE__ */
|
|
3878
|
+
/* @__PURE__ */ jsx14("span", {
|
|
4037
3879
|
style: {
|
|
4038
|
-
color:
|
|
3880
|
+
color: DEVTOOL_COLOR_TEXT_FAINT2,
|
|
4039
3881
|
fontSize: "10px",
|
|
4040
3882
|
width: "16px",
|
|
4041
3883
|
textAlign: "right"
|
|
4042
3884
|
},
|
|
4043
3885
|
children: i + 1
|
|
4044
3886
|
}),
|
|
4045
|
-
/* @__PURE__ */
|
|
3887
|
+
/* @__PURE__ */ jsx14("span", {
|
|
4046
3888
|
title: runtimeTitle,
|
|
4047
3889
|
style: {
|
|
4048
3890
|
color: DEVTOOL_COLOR_TEXT_SECONDARY,
|
|
@@ -4056,10 +3898,10 @@ function RoutingSection({
|
|
|
4056
3898
|
})
|
|
4057
3899
|
]
|
|
4058
3900
|
}),
|
|
4059
|
-
/* @__PURE__ */
|
|
3901
|
+
/* @__PURE__ */ jsx14(HoverTooltip, {
|
|
4060
3902
|
config: transportTooltip,
|
|
4061
3903
|
style: { display: "block", minWidth: 0, overflow: "hidden" },
|
|
4062
|
-
children: /* @__PURE__ */
|
|
3904
|
+
children: /* @__PURE__ */ jsx14("span", {
|
|
4063
3905
|
style: {
|
|
4064
3906
|
color: badgeColor,
|
|
4065
3907
|
fontSize: "10px",
|
|
@@ -4071,7 +3913,7 @@ function RoutingSection({
|
|
|
4071
3913
|
children: badgeText
|
|
4072
3914
|
})
|
|
4073
3915
|
}),
|
|
4074
|
-
/* @__PURE__ */
|
|
3916
|
+
/* @__PURE__ */ jsxs13("span", {
|
|
4075
3917
|
style: {
|
|
4076
3918
|
display: "flex",
|
|
4077
3919
|
alignItems: "center",
|
|
@@ -4080,9 +3922,9 @@ function RoutingSection({
|
|
|
4080
3922
|
overflow: "hidden"
|
|
4081
3923
|
},
|
|
4082
3924
|
children: [
|
|
4083
|
-
/* @__PURE__ */
|
|
3925
|
+
/* @__PURE__ */ jsx14("span", {
|
|
4084
3926
|
style: {
|
|
4085
|
-
color:
|
|
3927
|
+
color: DEVTOOL_COLOR_TEXT_MUTED2,
|
|
4086
3928
|
fontSize: "10px",
|
|
4087
3929
|
whiteSpace: "nowrap",
|
|
4088
3930
|
overflow: "hidden",
|
|
@@ -4090,9 +3932,9 @@ function RoutingSection({
|
|
|
4090
3932
|
},
|
|
4091
3933
|
children: hop.handlerClient != null ? `↳ ${hop.handlerClient.envId}` : ""
|
|
4092
3934
|
}),
|
|
4093
|
-
/* @__PURE__ */
|
|
3935
|
+
/* @__PURE__ */ jsxs13("span", {
|
|
4094
3936
|
style: {
|
|
4095
|
-
color:
|
|
3937
|
+
color: DEVTOOL_COLOR_TEXT_FAINT2,
|
|
4096
3938
|
fontSize: "10px",
|
|
4097
3939
|
flexShrink: 0,
|
|
4098
3940
|
marginLeft: "auto"
|
|
@@ -4108,11 +3950,11 @@ function RoutingSection({
|
|
|
4108
3950
|
]
|
|
4109
3951
|
}, `${hop.time}-${hop.runtime.envId}`);
|
|
4110
3952
|
}),
|
|
4111
|
-
Array.from({ length: phantomCount }, (_, i) => `routing-phantom-${hopCount + i}`).map((key) => /* @__PURE__ */
|
|
3953
|
+
Array.from({ length: phantomCount }, (_, i) => `routing-phantom-${hopCount + i}`).map((key) => /* @__PURE__ */ jsxs13("div", {
|
|
4112
3954
|
"aria-hidden": "true",
|
|
4113
3955
|
style: {
|
|
4114
3956
|
visibility: "hidden",
|
|
4115
|
-
background:
|
|
3957
|
+
background: DEVTOOL_SECTION_BACKGROUND2,
|
|
4116
3958
|
borderRadius: "4px",
|
|
4117
3959
|
display: "grid",
|
|
4118
3960
|
gridTemplateColumns: "30% 1fr 30%",
|
|
@@ -4121,24 +3963,24 @@ function RoutingSection({
|
|
|
4121
3963
|
padding: "4px 8px"
|
|
4122
3964
|
},
|
|
4123
3965
|
children: [
|
|
4124
|
-
/* @__PURE__ */
|
|
3966
|
+
/* @__PURE__ */ jsxs13("span", {
|
|
4125
3967
|
style: { display: "flex", flexDirection: "row", alignItems: "center", gap: "10px" },
|
|
4126
3968
|
children: [
|
|
4127
|
-
/* @__PURE__ */
|
|
3969
|
+
/* @__PURE__ */ jsx14("span", {
|
|
4128
3970
|
style: { fontSize: "10px", width: "16px" },
|
|
4129
3971
|
children: "0"
|
|
4130
3972
|
}),
|
|
4131
|
-
/* @__PURE__ */
|
|
3973
|
+
/* @__PURE__ */ jsx14("span", {
|
|
4132
3974
|
style: { fontSize: "11px" },
|
|
4133
3975
|
children: "placeholder"
|
|
4134
3976
|
})
|
|
4135
3977
|
]
|
|
4136
3978
|
}),
|
|
4137
|
-
/* @__PURE__ */
|
|
3979
|
+
/* @__PURE__ */ jsx14("span", {
|
|
4138
3980
|
style: { fontSize: "10px" },
|
|
4139
3981
|
children: "placeholder"
|
|
4140
3982
|
}),
|
|
4141
|
-
/* @__PURE__ */
|
|
3983
|
+
/* @__PURE__ */ jsx14("span", {})
|
|
4142
3984
|
]
|
|
4143
3985
|
}, key))
|
|
4144
3986
|
]
|
|
@@ -4148,7 +3990,7 @@ function RoutingSection({
|
|
|
4148
3990
|
}
|
|
4149
3991
|
|
|
4150
3992
|
// src/devtools/browser/components/action_detail/ActionDetailPanel.tsx
|
|
4151
|
-
import { jsx as
|
|
3993
|
+
import { jsx as jsx15, jsxs as jsxs14 } from "react/jsx-runtime";
|
|
4152
3994
|
var STATUS_BADGE_LABEL = {
|
|
4153
3995
|
running: "RUNNING",
|
|
4154
3996
|
success: "SUCCESS",
|
|
@@ -4159,9 +4001,9 @@ var STATUS_BADGE_LABEL = {
|
|
|
4159
4001
|
var STATUS_BADGE_BG = {
|
|
4160
4002
|
running: STATUS_COLOR.running,
|
|
4161
4003
|
success: STATUS_COLOR.success,
|
|
4162
|
-
"action-error":
|
|
4163
|
-
failed:
|
|
4164
|
-
aborted:
|
|
4004
|
+
"action-error": DEVTOOL_COLOR_SEMANTIC_ERROR2,
|
|
4005
|
+
failed: DEVTOOL_COLOR_SEMANTIC_ERROR2,
|
|
4006
|
+
aborted: DEVTOOL_COLOR_SEMANTIC_METADATA2
|
|
4165
4007
|
};
|
|
4166
4008
|
var STATUS_BADGE_TEXT_COLOR = {
|
|
4167
4009
|
running: "#0f172a",
|
|
@@ -4180,11 +4022,11 @@ function DetailHeader({
|
|
|
4180
4022
|
const StatusIconComponent = STATUS_ICON[entry.status];
|
|
4181
4023
|
const timestamp = formatTimestamp(entry.startTime);
|
|
4182
4024
|
const inboundOrigin = getInboundOrigin(entry);
|
|
4183
|
-
return /* @__PURE__ */
|
|
4025
|
+
return /* @__PURE__ */ jsx15("div", {
|
|
4184
4026
|
onClick: !isActive ? onClick : undefined,
|
|
4185
4027
|
style: {
|
|
4186
4028
|
padding: "0.5em 1em",
|
|
4187
|
-
background: isActive ?
|
|
4029
|
+
background: isActive ? DEVTOOL_SECTION_BACKGROUND2 : DEVTOOL_DETAIL_HEADER_BACKGROUND,
|
|
4188
4030
|
borderBottom: `1px solid ${DEVTOOL_LIST_BASE_BACKGROUND}`,
|
|
4189
4031
|
borderLeft: isActive ? `2px solid ${color}` : "2px solid transparent",
|
|
4190
4032
|
flexShrink: 0,
|
|
@@ -4194,13 +4036,13 @@ function DetailHeader({
|
|
|
4194
4036
|
gap: "1em",
|
|
4195
4037
|
cursor: isActive ? "default" : "pointer"
|
|
4196
4038
|
},
|
|
4197
|
-
children: /* @__PURE__ */
|
|
4039
|
+
children: /* @__PURE__ */ jsxs14("div", {
|
|
4198
4040
|
style: { flex: 1, minWidth: 0, display: "flex", flexDirection: "column", gap: "0.5em" },
|
|
4199
4041
|
children: [
|
|
4200
|
-
/* @__PURE__ */
|
|
4042
|
+
/* @__PURE__ */ jsxs14("div", {
|
|
4201
4043
|
style: { display: "flex", alignItems: "center", minWidth: 0, gap: "0.5em" },
|
|
4202
4044
|
children: [
|
|
4203
|
-
/* @__PURE__ */
|
|
4045
|
+
/* @__PURE__ */ jsx15("span", {
|
|
4204
4046
|
style: {
|
|
4205
4047
|
color,
|
|
4206
4048
|
flexShrink: 0,
|
|
@@ -4208,12 +4050,12 @@ function DetailHeader({
|
|
|
4208
4050
|
alignItems: "center",
|
|
4209
4051
|
animation: entry.status === "running" ? "__nice-action-pulse 1.2s ease-in-out infinite" : undefined
|
|
4210
4052
|
},
|
|
4211
|
-
children: /* @__PURE__ */
|
|
4053
|
+
children: /* @__PURE__ */ jsx15(StatusIconComponent, {
|
|
4212
4054
|
size: 20,
|
|
4213
4055
|
strokeWidth: 1.75
|
|
4214
4056
|
})
|
|
4215
4057
|
}),
|
|
4216
|
-
/* @__PURE__ */
|
|
4058
|
+
/* @__PURE__ */ jsx15("span", {
|
|
4217
4059
|
style: {
|
|
4218
4060
|
color: DEVTOOL_COLOR_TEXT_EMPHASIS,
|
|
4219
4061
|
fontSize: "1.2em",
|
|
@@ -4227,7 +4069,7 @@ function DetailHeader({
|
|
|
4227
4069
|
},
|
|
4228
4070
|
children: entry.actionId
|
|
4229
4071
|
}),
|
|
4230
|
-
/* @__PURE__ */
|
|
4072
|
+
/* @__PURE__ */ jsx15("span", {
|
|
4231
4073
|
style: {
|
|
4232
4074
|
flexShrink: 0,
|
|
4233
4075
|
padding: "2px 9px",
|
|
@@ -4242,14 +4084,14 @@ function DetailHeader({
|
|
|
4242
4084
|
},
|
|
4243
4085
|
children: STATUS_BADGE_LABEL[entry.status]
|
|
4244
4086
|
}),
|
|
4245
|
-
/* @__PURE__ */
|
|
4087
|
+
/* @__PURE__ */ jsx15(DomainChip, {
|
|
4246
4088
|
domain: entry.domain,
|
|
4247
4089
|
allDomains: entry.allDomains,
|
|
4248
4090
|
size: "md" /* md */
|
|
4249
4091
|
})
|
|
4250
4092
|
]
|
|
4251
4093
|
}),
|
|
4252
|
-
/* @__PURE__ */
|
|
4094
|
+
/* @__PURE__ */ jsxs14("div", {
|
|
4253
4095
|
style: {
|
|
4254
4096
|
display: "flex",
|
|
4255
4097
|
alignItems: "center",
|
|
@@ -4257,7 +4099,7 @@ function DetailHeader({
|
|
|
4257
4099
|
gap: "8px"
|
|
4258
4100
|
},
|
|
4259
4101
|
children: [
|
|
4260
|
-
/* @__PURE__ */
|
|
4102
|
+
/* @__PURE__ */ jsxs14("div", {
|
|
4261
4103
|
style: {
|
|
4262
4104
|
display: "flex",
|
|
4263
4105
|
alignItems: "center",
|
|
@@ -4266,35 +4108,35 @@ function DetailHeader({
|
|
|
4266
4108
|
overflow: "hidden"
|
|
4267
4109
|
},
|
|
4268
4110
|
children: [
|
|
4269
|
-
inboundOrigin != null && /* @__PURE__ */
|
|
4111
|
+
inboundOrigin != null && /* @__PURE__ */ jsx15(OriginChip, {
|
|
4270
4112
|
origin: inboundOrigin,
|
|
4271
4113
|
size: "md" /* md */
|
|
4272
4114
|
}),
|
|
4273
|
-
/* @__PURE__ */
|
|
4115
|
+
/* @__PURE__ */ jsx15(HandlerChips, {
|
|
4274
4116
|
entry,
|
|
4275
4117
|
size: "md" /* md */
|
|
4276
4118
|
}),
|
|
4277
|
-
/* @__PURE__ */
|
|
4119
|
+
/* @__PURE__ */ jsx15(ChildDispatchChips, {
|
|
4278
4120
|
childRouteItems: childExternalRouteItems,
|
|
4279
4121
|
size: "md" /* md */
|
|
4280
4122
|
})
|
|
4281
4123
|
]
|
|
4282
4124
|
}),
|
|
4283
|
-
/* @__PURE__ */
|
|
4125
|
+
/* @__PURE__ */ jsxs14("div", {
|
|
4284
4126
|
style: { display: "flex", alignItems: "center", gap: "8px", flexShrink: 0 },
|
|
4285
4127
|
children: [
|
|
4286
|
-
/* @__PURE__ */
|
|
4128
|
+
/* @__PURE__ */ jsx15("span", {
|
|
4287
4129
|
style: {
|
|
4288
|
-
color:
|
|
4130
|
+
color: DEVTOOL_COLOR_SEMANTIC_METADATA2,
|
|
4289
4131
|
fontSize: "10px",
|
|
4290
4132
|
letterSpacing: "0.02em",
|
|
4291
4133
|
fontFamily: "ui-sans-serif, system-ui, sans-serif"
|
|
4292
4134
|
},
|
|
4293
4135
|
children: timestamp
|
|
4294
4136
|
}),
|
|
4295
|
-
/* @__PURE__ */
|
|
4137
|
+
/* @__PURE__ */ jsx15("span", {
|
|
4296
4138
|
style: { color, fontSize: "12px", fontWeight: "500" },
|
|
4297
|
-
children: /* @__PURE__ */
|
|
4139
|
+
children: /* @__PURE__ */ jsx15(DurationDisplay, {
|
|
4298
4140
|
entry
|
|
4299
4141
|
})
|
|
4300
4142
|
})
|
|
@@ -4312,7 +4154,7 @@ function ActionDetailPanel({
|
|
|
4312
4154
|
childEntries,
|
|
4313
4155
|
onSelectEntry
|
|
4314
4156
|
}) {
|
|
4315
|
-
const [focusedChildCuid, setFocusedChildCuid] =
|
|
4157
|
+
const [focusedChildCuid, setFocusedChildCuid] = useState7(null);
|
|
4316
4158
|
const focusedEntry = focusedChildCuid != null ? childEntries.find((e) => e.cuid === focusedChildCuid) ?? entry : entry;
|
|
4317
4159
|
const maxRoutingHops = Math.max(entry.meta.routing.length, ...childEntries.map((e) => e.meta.routing.length), 0);
|
|
4318
4160
|
const maxCallSiteFrames = Math.max(countUserFrames(entry.meta.originClient, entry.callSite), ...childEntries.map((e) => countUserFrames(e.meta.originClient, e.callSite)), 0);
|
|
@@ -4334,7 +4176,7 @@ function ActionDetailPanel({
|
|
|
4334
4176
|
const handleFocusChild = (cuid) => {
|
|
4335
4177
|
setFocusedChildCuid((prev) => prev === cuid ? null : cuid);
|
|
4336
4178
|
};
|
|
4337
|
-
return /* @__PURE__ */
|
|
4179
|
+
return /* @__PURE__ */ jsxs14("div", {
|
|
4338
4180
|
style: {
|
|
4339
4181
|
flex: 1,
|
|
4340
4182
|
display: "flex",
|
|
@@ -4344,20 +4186,20 @@ function ActionDetailPanel({
|
|
|
4344
4186
|
background: DEVTOOL_DETAIL_BASE_BACKGROUND
|
|
4345
4187
|
},
|
|
4346
4188
|
children: [
|
|
4347
|
-
/* @__PURE__ */
|
|
4189
|
+
/* @__PURE__ */ jsx15(DetailHeader, {
|
|
4348
4190
|
entry,
|
|
4349
4191
|
isActive: focusedChildCuid === null,
|
|
4350
4192
|
onClick: () => setFocusedChildCuid(null),
|
|
4351
4193
|
childExternalRouteItems
|
|
4352
4194
|
}),
|
|
4353
|
-
/* @__PURE__ */
|
|
4195
|
+
/* @__PURE__ */ jsx15(CallStackSection, {
|
|
4354
4196
|
parent,
|
|
4355
4197
|
childEntries,
|
|
4356
4198
|
focusedChildCuid,
|
|
4357
4199
|
onFocusChild: handleFocusChild,
|
|
4358
4200
|
onSelectParent: onSelectEntry
|
|
4359
4201
|
}),
|
|
4360
|
-
/* @__PURE__ */
|
|
4202
|
+
/* @__PURE__ */ jsxs14("div", {
|
|
4361
4203
|
style: {
|
|
4362
4204
|
flex: 1,
|
|
4363
4205
|
overflowY: "auto",
|
|
@@ -4368,37 +4210,37 @@ function ActionDetailPanel({
|
|
|
4368
4210
|
gap: "8px"
|
|
4369
4211
|
},
|
|
4370
4212
|
children: [
|
|
4371
|
-
focusedEntry.input !== undefined ? /* @__PURE__ */
|
|
4213
|
+
focusedEntry.input !== undefined ? /* @__PURE__ */ jsx15(DetailSection, {
|
|
4372
4214
|
label: "Input",
|
|
4373
4215
|
value: focusedEntry.input
|
|
4374
|
-
}) : /* @__PURE__ */
|
|
4216
|
+
}) : /* @__PURE__ */ jsx15(DetailSection, {
|
|
4375
4217
|
label: "Input",
|
|
4376
4218
|
value: "No input required or given"
|
|
4377
4219
|
}),
|
|
4378
|
-
focusedEntry.status === "success" && /* @__PURE__ */
|
|
4220
|
+
focusedEntry.status === "success" && /* @__PURE__ */ jsx15(DetailSection, {
|
|
4379
4221
|
label: "Output",
|
|
4380
4222
|
value: focusedEntry.output,
|
|
4381
|
-
color:
|
|
4223
|
+
color: DEVTOOL_COLOR_SEMANTIC_SUCCESS2
|
|
4382
4224
|
}),
|
|
4383
|
-
(focusedEntry.status === "action-error" || focusedEntry.status === "failed" || focusedEntry.status === "aborted") && /* @__PURE__ */
|
|
4225
|
+
(focusedEntry.status === "action-error" || focusedEntry.status === "failed" || focusedEntry.status === "aborted") && /* @__PURE__ */ jsx15(ActionErrorDisplay, {
|
|
4384
4226
|
entry: focusedEntry
|
|
4385
4227
|
}),
|
|
4386
|
-
focusedEntry.progressUpdates.length > 0 && /* @__PURE__ */
|
|
4228
|
+
focusedEntry.progressUpdates.length > 0 && /* @__PURE__ */ jsx15(DetailSection, {
|
|
4387
4229
|
label: `Progress (${focusedEntry.progressUpdates.length})`,
|
|
4388
4230
|
value: focusedEntry.progressUpdates
|
|
4389
4231
|
}),
|
|
4390
|
-
/* @__PURE__ */
|
|
4232
|
+
/* @__PURE__ */ jsx15(StackTraceSection, {
|
|
4391
4233
|
runtime: entry.meta.originClient,
|
|
4392
4234
|
label: "Dispatch Site",
|
|
4393
4235
|
stack: focusedEntry.callSite,
|
|
4394
4236
|
color: DEVTOOL_COLOR_TEXT_SECONDARY,
|
|
4395
4237
|
minFrameCount: maxCallSiteFrames
|
|
4396
4238
|
}),
|
|
4397
|
-
/* @__PURE__ */
|
|
4239
|
+
/* @__PURE__ */ jsx15(RoutingSection, {
|
|
4398
4240
|
entry: focusedEntry,
|
|
4399
4241
|
minHopCount: maxRoutingHops
|
|
4400
4242
|
}),
|
|
4401
|
-
/* @__PURE__ */
|
|
4243
|
+
/* @__PURE__ */ jsx15(MetaSection, {
|
|
4402
4244
|
entry: focusedEntry
|
|
4403
4245
|
})
|
|
4404
4246
|
]
|
|
@@ -4408,66 +4250,20 @@ function ActionDetailPanel({
|
|
|
4408
4250
|
}
|
|
4409
4251
|
|
|
4410
4252
|
// src/devtools/browser/components/action_list/ActionList.tsx
|
|
4411
|
-
import {
|
|
4253
|
+
import { DevtoolsVirtualList } from "nice-devtools-shared";
|
|
4254
|
+
import { useMemo as useMemo2, useRef as useRef2 } from "react";
|
|
4412
4255
|
|
|
4413
4256
|
// src/devtools/browser/components/action_list/ActionEntryRow.tsx
|
|
4414
4257
|
import { CircleX as CircleX3, PackageCheck as PackageCheck2, Variable as Variable2 } from "lucide-react";
|
|
4415
|
-
import { Fragment as
|
|
4258
|
+
import { Fragment as Fragment7, useState as useState9 } from "react";
|
|
4416
4259
|
|
|
4417
4260
|
// src/devtools/browser/components/action_list/ActionInputAndOutputChip.tsx
|
|
4418
4261
|
import { CircleX as CircleX2, PackageCheck, Sparkle, Variable } from "lucide-react";
|
|
4419
|
-
import { useState as
|
|
4262
|
+
import { useState as useState8 } from "react";
|
|
4420
4263
|
|
|
4421
4264
|
// src/devtools/browser/components/action_list/IoTooltipContent.tsx
|
|
4422
|
-
import {
|
|
4423
|
-
|
|
4424
|
-
function renderColoredJson2(text) {
|
|
4425
|
-
const nodes = [];
|
|
4426
|
-
let last = 0;
|
|
4427
|
-
let i = 0;
|
|
4428
|
-
JSON_TOKEN_RE2.lastIndex = 0;
|
|
4429
|
-
for (let m = JSON_TOKEN_RE2.exec(text);m !== null; m = JSON_TOKEN_RE2.exec(text)) {
|
|
4430
|
-
if (m.index > last)
|
|
4431
|
-
nodes.push(text.slice(last, m.index));
|
|
4432
|
-
const [, str, colon, num, kw, punct] = m;
|
|
4433
|
-
if (str != null) {
|
|
4434
|
-
if (colon != null) {
|
|
4435
|
-
nodes.push(/* @__PURE__ */ jsx18("span", {
|
|
4436
|
-
style: { color: DEVTOOL_JSON_KEY },
|
|
4437
|
-
children: str
|
|
4438
|
-
}, i++));
|
|
4439
|
-
nodes.push(/* @__PURE__ */ jsx18("span", {
|
|
4440
|
-
style: { color: DEVTOOL_JSON_PUNCTUATION },
|
|
4441
|
-
children: colon
|
|
4442
|
-
}, i++));
|
|
4443
|
-
} else {
|
|
4444
|
-
nodes.push(/* @__PURE__ */ jsx18("span", {
|
|
4445
|
-
style: { color: DEVTOOL_JSON_STRING },
|
|
4446
|
-
children: str
|
|
4447
|
-
}, i++));
|
|
4448
|
-
}
|
|
4449
|
-
} else if (num != null) {
|
|
4450
|
-
nodes.push(/* @__PURE__ */ jsx18("span", {
|
|
4451
|
-
style: { color: DEVTOOL_JSON_NUMBER },
|
|
4452
|
-
children: num
|
|
4453
|
-
}, i++));
|
|
4454
|
-
} else if (kw != null) {
|
|
4455
|
-
nodes.push(/* @__PURE__ */ jsx18("span", {
|
|
4456
|
-
style: { color: DEVTOOL_JSON_KEYWORD },
|
|
4457
|
-
children: kw
|
|
4458
|
-
}, i++));
|
|
4459
|
-
} else if (punct != null) {
|
|
4460
|
-
nodes.push(/* @__PURE__ */ jsx18("span", {
|
|
4461
|
-
style: { color: DEVTOOL_JSON_PUNCTUATION },
|
|
4462
|
-
children: punct
|
|
4463
|
-
}, i++));
|
|
4464
|
-
}
|
|
4465
|
-
last = JSON_TOKEN_RE2.lastIndex;
|
|
4466
|
-
}
|
|
4467
|
-
if (last < text.length)
|
|
4468
|
-
nodes.push(text.slice(last));
|
|
4469
|
-
return nodes;
|
|
4470
|
-
}
|
|
4265
|
+
import { renderColoredJson as renderColoredJson2, safeStringify as safeStringify3 } from "nice-devtools-shared";
|
|
4266
|
+
import { jsx as jsx16 } from "react/jsx-runtime";
|
|
4471
4267
|
function stripOuterBraces(json) {
|
|
4472
4268
|
const lines = json.split(`
|
|
4473
4269
|
`);
|
|
@@ -4478,8 +4274,8 @@ function stripOuterBraces(json) {
|
|
|
4478
4274
|
return json;
|
|
4479
4275
|
}
|
|
4480
4276
|
function IoTooltipContent({ value }) {
|
|
4481
|
-
const text = stripOuterBraces(
|
|
4482
|
-
return /* @__PURE__ */
|
|
4277
|
+
const text = stripOuterBraces(safeStringify3(value, 2));
|
|
4278
|
+
return /* @__PURE__ */ jsx16("div", {
|
|
4483
4279
|
style: {
|
|
4484
4280
|
fontFamily: "ui-monospace, 'Cascadia Code', 'Source Code Pro', monospace",
|
|
4485
4281
|
fontSize: "10px",
|
|
@@ -4493,7 +4289,7 @@ function IoTooltipContent({ value }) {
|
|
|
4493
4289
|
}
|
|
4494
4290
|
|
|
4495
4291
|
// src/devtools/browser/components/action_list/ActionInputAndOutputChip.tsx
|
|
4496
|
-
import { jsx as
|
|
4292
|
+
import { jsx as jsx17, jsxs as jsxs15 } from "react/jsx-runtime";
|
|
4497
4293
|
var ActionInputAndOutputChip = ({
|
|
4498
4294
|
entry,
|
|
4499
4295
|
breakReasons,
|
|
@@ -4507,86 +4303,94 @@ var ActionInputAndOutputChip = ({
|
|
|
4507
4303
|
const isLocal = localEnvId != null && (firstHopIsLocal || externalLabel == null);
|
|
4508
4304
|
const color = isLocal ? "handler_local" /* handler_local */ : "handler_external" /* handler_external */;
|
|
4509
4305
|
const transportTooltip = firstHop != null ? getTransportTooltip(firstHop) : undefined;
|
|
4510
|
-
const [labelAnchor, setLabelAnchor] =
|
|
4306
|
+
const [labelAnchor, setLabelAnchor] = useState8(null);
|
|
4511
4307
|
const isNewInput = breakReasons.includes("new_input" /* new_input */);
|
|
4512
4308
|
const isNewOutput = breakReasons.includes("new_output" /* new_output */);
|
|
4513
4309
|
const hasError = entry.error != null || entry.abortReason != null;
|
|
4514
4310
|
const sizeNum = getSizeValue(size);
|
|
4515
4311
|
const newIconSizeEm = `${sizeNum * 0.9}em`;
|
|
4516
4312
|
const label = `${(isLocal ? localEnvId : externalLabel) ?? "unknown"}`;
|
|
4517
|
-
const newSparkleComp = /* @__PURE__ */
|
|
4313
|
+
const newSparkleComp = /* @__PURE__ */ jsx17("div", {
|
|
4518
4314
|
style: {
|
|
4519
4315
|
opacity: 0.9,
|
|
4520
4316
|
alignSelf: "start",
|
|
4521
4317
|
marginLeft: "-0.6em"
|
|
4522
4318
|
},
|
|
4523
|
-
children: /* @__PURE__ */
|
|
4319
|
+
children: /* @__PURE__ */ jsx17(Sparkle, {
|
|
4524
4320
|
strokeWidth: "0.2em",
|
|
4525
4321
|
color: "rgba(243, 250, 140, 1)",
|
|
4526
4322
|
width: newIconSizeEm,
|
|
4527
4323
|
height: newIconSizeEm
|
|
4528
4324
|
})
|
|
4529
4325
|
});
|
|
4530
|
-
return /* @__PURE__ */
|
|
4326
|
+
return /* @__PURE__ */ jsx17(Chip, {
|
|
4531
4327
|
color,
|
|
4532
4328
|
size,
|
|
4533
4329
|
subtle,
|
|
4534
|
-
children: /* @__PURE__ */
|
|
4330
|
+
children: /* @__PURE__ */ jsxs15("div", {
|
|
4535
4331
|
style: { display: "flex", alignItems: "center", gap: "0.4em" },
|
|
4536
4332
|
children: [
|
|
4537
|
-
/* @__PURE__ */
|
|
4333
|
+
/* @__PURE__ */ jsx17(Icon, {
|
|
4538
4334
|
noBackground: true,
|
|
4539
4335
|
icon: Variable,
|
|
4540
4336
|
color,
|
|
4541
4337
|
subtle: subtle || entry.input === undefined,
|
|
4542
4338
|
tooltip: {
|
|
4543
|
-
content: entry.input !== undefined ? /* @__PURE__ */
|
|
4339
|
+
content: entry.input !== undefined ? /* @__PURE__ */ jsx17(IoTooltipContent, {
|
|
4544
4340
|
value: entry.input
|
|
4545
|
-
}) : /* @__PURE__ */
|
|
4546
|
-
style: { color:
|
|
4341
|
+
}) : /* @__PURE__ */ jsx17("span", {
|
|
4342
|
+
style: { color: DEVTOOL_COLOR_TEXT_MUTED2, fontSize: "10px" },
|
|
4547
4343
|
children: "No input required or given"
|
|
4548
4344
|
}),
|
|
4549
4345
|
title: isNewInput ? "New Input" : "Input"
|
|
4550
4346
|
}
|
|
4551
4347
|
}),
|
|
4552
4348
|
isNewInput && newSparkleComp,
|
|
4553
|
-
/* @__PURE__ */
|
|
4349
|
+
/* @__PURE__ */ jsx17("span", {
|
|
4554
4350
|
style: { opacity: 0.6 },
|
|
4555
4351
|
color,
|
|
4556
4352
|
children: "→"
|
|
4557
4353
|
}),
|
|
4558
|
-
/* @__PURE__ */
|
|
4559
|
-
|
|
4354
|
+
/* @__PURE__ */ jsx17("span", {
|
|
4355
|
+
title: transportTooltip == null ? label : undefined,
|
|
4356
|
+
style: {
|
|
4357
|
+
opacity: 0.8,
|
|
4358
|
+
cursor: transportTooltip != null ? "default" : undefined,
|
|
4359
|
+
overflow: "hidden",
|
|
4360
|
+
textOverflow: "ellipsis",
|
|
4361
|
+
whiteSpace: "nowrap",
|
|
4362
|
+
maxWidth: "14ch"
|
|
4363
|
+
},
|
|
4560
4364
|
onMouseEnter: transportTooltip != null ? (e) => setLabelAnchor(e.currentTarget.getBoundingClientRect()) : undefined,
|
|
4561
4365
|
onMouseLeave: transportTooltip != null ? () => setLabelAnchor(null) : undefined,
|
|
4562
4366
|
children: label
|
|
4563
4367
|
}),
|
|
4564
|
-
labelAnchor != null && transportTooltip != null && /* @__PURE__ */
|
|
4368
|
+
labelAnchor != null && transportTooltip != null && /* @__PURE__ */ jsx17(Tooltip, {
|
|
4565
4369
|
anchor: labelAnchor,
|
|
4566
4370
|
config: transportTooltip
|
|
4567
4371
|
}),
|
|
4568
|
-
/* @__PURE__ */
|
|
4372
|
+
/* @__PURE__ */ jsx17("span", {
|
|
4569
4373
|
style: { opacity: 0.6 },
|
|
4570
4374
|
color,
|
|
4571
4375
|
children: "→"
|
|
4572
4376
|
}),
|
|
4573
|
-
entry.status === "success" && entry.output !== undefined && /* @__PURE__ */
|
|
4377
|
+
entry.status === "success" && entry.output !== undefined && /* @__PURE__ */ jsx17(Icon, {
|
|
4574
4378
|
noBackground: true,
|
|
4575
4379
|
icon: PackageCheck,
|
|
4576
4380
|
color: !hasError ? color : "default" /* default */,
|
|
4577
4381
|
tooltip: {
|
|
4578
|
-
content: /* @__PURE__ */
|
|
4382
|
+
content: /* @__PURE__ */ jsx17(IoTooltipContent, {
|
|
4579
4383
|
value: entry.output
|
|
4580
4384
|
}),
|
|
4581
4385
|
title: isNewOutput ? "New Output" : "Output"
|
|
4582
4386
|
}
|
|
4583
4387
|
}),
|
|
4584
|
-
(entry.error != null || entry.abortReason != null) && /* @__PURE__ */
|
|
4388
|
+
(entry.error != null || entry.abortReason != null) && /* @__PURE__ */ jsx17(Icon, {
|
|
4585
4389
|
noBackground: true,
|
|
4586
4390
|
icon: CircleX2,
|
|
4587
4391
|
color: entry.status === "aborted" ? "aborted" /* aborted */ : "error" /* error */,
|
|
4588
4392
|
tooltip: {
|
|
4589
|
-
content: /* @__PURE__ */
|
|
4393
|
+
content: /* @__PURE__ */ jsx17(ActionErrorDisplay, {
|
|
4590
4394
|
entry,
|
|
4591
4395
|
compact: true
|
|
4592
4396
|
}),
|
|
@@ -4601,7 +4405,7 @@ var ActionInputAndOutputChip = ({
|
|
|
4601
4405
|
};
|
|
4602
4406
|
|
|
4603
4407
|
// src/devtools/browser/components/action_list/ActionEntryRow.tsx
|
|
4604
|
-
import { jsx as
|
|
4408
|
+
import { jsx as jsx18, jsxs as jsxs16, Fragment as Fragment8 } from "react/jsx-runtime";
|
|
4605
4409
|
var MAX_GROUP_DOTS = 5;
|
|
4606
4410
|
function getLatestChipColor(status) {
|
|
4607
4411
|
if (status === "failed")
|
|
@@ -4624,14 +4428,14 @@ function GroupDotTooltip({
|
|
|
4624
4428
|
const deltaMs = refTime - entry.startTime;
|
|
4625
4429
|
const relStr = index === 0 ? "latest run" : `−${formatRelativeAge(deltaMs)} from latest`;
|
|
4626
4430
|
const durationStr = entry.endTime != null ? `${entry.endTime - entry.startTime}ms` : "running…";
|
|
4627
|
-
return /* @__PURE__ */
|
|
4431
|
+
return /* @__PURE__ */ jsx18(Tooltip, {
|
|
4628
4432
|
anchor,
|
|
4629
4433
|
config: {
|
|
4630
4434
|
align: "center",
|
|
4631
4435
|
maxWidth: 240,
|
|
4632
|
-
content: /* @__PURE__ */
|
|
4436
|
+
content: /* @__PURE__ */ jsxs16(Fragment8, {
|
|
4633
4437
|
children: [
|
|
4634
|
-
/* @__PURE__ */
|
|
4438
|
+
/* @__PURE__ */ jsxs16("div", {
|
|
4635
4439
|
style: { color: dotColor, marginBottom: "1px" },
|
|
4636
4440
|
children: [
|
|
4637
4441
|
symbol,
|
|
@@ -4641,20 +4445,20 @@ function GroupDotTooltip({
|
|
|
4641
4445
|
total
|
|
4642
4446
|
]
|
|
4643
4447
|
}),
|
|
4644
|
-
/* @__PURE__ */
|
|
4448
|
+
/* @__PURE__ */ jsx18("div", {
|
|
4645
4449
|
style: { color: DEVTOOL_COLOR_TEXT_SECONDARY },
|
|
4646
4450
|
children: formatTimestamp(entry.startTime)
|
|
4647
4451
|
}),
|
|
4648
|
-
/* @__PURE__ */
|
|
4649
|
-
style: { color:
|
|
4452
|
+
/* @__PURE__ */ jsx18("div", {
|
|
4453
|
+
style: { color: DEVTOOL_COLOR_TEXT_MUTED2 },
|
|
4650
4454
|
children: durationStr
|
|
4651
4455
|
}),
|
|
4652
|
-
index > 0 && /* @__PURE__ */
|
|
4456
|
+
index > 0 && /* @__PURE__ */ jsx18("div", {
|
|
4653
4457
|
style: {
|
|
4654
|
-
color:
|
|
4458
|
+
color: DEVTOOL_COLOR_TEXT_MUTED2,
|
|
4655
4459
|
marginTop: "3px",
|
|
4656
4460
|
paddingTop: "3px",
|
|
4657
|
-
borderTop: `1px solid ${
|
|
4461
|
+
borderTop: `1px solid ${DEVTOOL_SECTION_BACKGROUND2}`
|
|
4658
4462
|
},
|
|
4659
4463
|
children: relStr
|
|
4660
4464
|
})
|
|
@@ -4671,12 +4475,12 @@ function GroupDot({
|
|
|
4671
4475
|
isActive,
|
|
4672
4476
|
onSelect
|
|
4673
4477
|
}) {
|
|
4674
|
-
const [anchor, setAnchor] =
|
|
4478
|
+
const [anchor, setAnchor] = useState9(null);
|
|
4675
4479
|
const dotColor = STATUS_COLOR[entry.status];
|
|
4676
4480
|
const hovered = anchor != null;
|
|
4677
|
-
return /* @__PURE__ */
|
|
4481
|
+
return /* @__PURE__ */ jsxs16(Fragment8, {
|
|
4678
4482
|
children: [
|
|
4679
|
-
/* @__PURE__ */
|
|
4483
|
+
/* @__PURE__ */ jsx18("button", {
|
|
4680
4484
|
"data-cuid": entry.cuid,
|
|
4681
4485
|
onClick: (e) => {
|
|
4682
4486
|
e.stopPropagation();
|
|
@@ -4698,7 +4502,7 @@ function GroupDot({
|
|
|
4698
4502
|
transition: "transform 0.1s ease, opacity 0.1s ease, border-color 0.1s ease"
|
|
4699
4503
|
}
|
|
4700
4504
|
}),
|
|
4701
|
-
hovered && anchor != null && /* @__PURE__ */
|
|
4505
|
+
hovered && anchor != null && /* @__PURE__ */ jsx18(GroupDotTooltip, {
|
|
4702
4506
|
entry,
|
|
4703
4507
|
index,
|
|
4704
4508
|
total,
|
|
@@ -4728,7 +4532,7 @@ function ActionEntryRow({
|
|
|
4728
4532
|
const nonIoBreakReasons = breakReasons?.filter((r) => r !== "new_input" /* new_input */ && r !== "new_output" /* new_output */) ?? [];
|
|
4729
4533
|
const hasBottomError = entry.error != null || entry.abortReason != null;
|
|
4730
4534
|
const hasBottomContent = externalChildEntries.length > 0 || nonIoBreakReasons.length > 0;
|
|
4731
|
-
return /* @__PURE__ */
|
|
4535
|
+
return /* @__PURE__ */ jsxs16("div", {
|
|
4732
4536
|
"data-cuid": entry.cuid,
|
|
4733
4537
|
onClick,
|
|
4734
4538
|
style: {
|
|
@@ -4745,22 +4549,22 @@ function ActionEntryRow({
|
|
|
4745
4549
|
margin: "2px 4px"
|
|
4746
4550
|
},
|
|
4747
4551
|
children: [
|
|
4748
|
-
/* @__PURE__ */
|
|
4552
|
+
/* @__PURE__ */ jsx18("div", {
|
|
4749
4553
|
style: {
|
|
4750
4554
|
position: "absolute",
|
|
4751
4555
|
left: "2em",
|
|
4752
4556
|
top: 0,
|
|
4753
4557
|
bottom: 0,
|
|
4754
4558
|
width: "1px",
|
|
4755
|
-
background: `${
|
|
4559
|
+
background: `${DEVTOOL_COLOR_SEMANTIC_METADATA2}28`,
|
|
4756
4560
|
pointerEvents: "none",
|
|
4757
4561
|
zIndex: 0
|
|
4758
4562
|
}
|
|
4759
4563
|
}),
|
|
4760
|
-
/* @__PURE__ */
|
|
4564
|
+
/* @__PURE__ */ jsxs16("div", {
|
|
4761
4565
|
style: { display: "flex", alignItems: "center", gap: "8px" },
|
|
4762
4566
|
children: [
|
|
4763
|
-
/* @__PURE__ */
|
|
4567
|
+
/* @__PURE__ */ jsxs16("div", {
|
|
4764
4568
|
style: {
|
|
4765
4569
|
position: "relative",
|
|
4766
4570
|
zIndex: 1,
|
|
@@ -4770,91 +4574,90 @@ function ActionEntryRow({
|
|
|
4770
4574
|
alignItems: "center",
|
|
4771
4575
|
justifyContent: "flex-start"
|
|
4772
4576
|
},
|
|
4773
|
-
children: isLatest ? /* @__PURE__ */ jsx20(Chip, {
|
|
4774
|
-
size: "sm" /* sm */,
|
|
4775
|
-
color: getLatestChipColor(entry.status),
|
|
4776
|
-
children: "latest"
|
|
4777
|
-
}) : /* @__PURE__ */ jsxs17(Chip, {
|
|
4778
|
-
size: "sm" /* sm */,
|
|
4779
|
-
color: getLatestChipColor(entry.status),
|
|
4780
|
-
children: [
|
|
4781
|
-
"+",
|
|
4782
|
-
latestTime != null ? formatRelativeAge(latestTime - entry.startTime) : "?"
|
|
4783
|
-
]
|
|
4784
|
-
})
|
|
4785
|
-
}),
|
|
4786
|
-
/* @__PURE__ */ jsxs17("div", {
|
|
4787
|
-
style: { flex: 1, minWidth: 0, display: "flex", alignItems: "center", gap: "0.5em" },
|
|
4788
4577
|
children: [
|
|
4789
|
-
/* @__PURE__ */
|
|
4790
|
-
style: {
|
|
4791
|
-
color: DEVTOOL_COLOR_TEXT_SECONDARY,
|
|
4792
|
-
fontSize: "1em",
|
|
4793
|
-
fontWeight: 400,
|
|
4794
|
-
fontFamily: "ui-monospace, 'Cascadia Code', 'Source Code Pro', monospace",
|
|
4795
|
-
overflow: "hidden",
|
|
4796
|
-
textOverflow: "ellipsis",
|
|
4797
|
-
whiteSpace: "nowrap",
|
|
4798
|
-
flexShrink: 1,
|
|
4799
|
-
minWidth: "3em"
|
|
4800
|
-
},
|
|
4801
|
-
children: entry.actionId
|
|
4802
|
-
}),
|
|
4803
|
-
inboundOrigin != null && /* @__PURE__ */ jsx20(OriginChip, {
|
|
4804
|
-
origin: inboundOrigin,
|
|
4578
|
+
isLatest ? /* @__PURE__ */ jsx18(Chip, {
|
|
4805
4579
|
size: "sm" /* sm */,
|
|
4806
|
-
|
|
4807
|
-
|
|
4808
|
-
/* @__PURE__ */
|
|
4809
|
-
|
|
4810
|
-
entry
|
|
4811
|
-
|
|
4812
|
-
|
|
4813
|
-
|
|
4580
|
+
color: getLatestChipColor(entry.status),
|
|
4581
|
+
children: "latest"
|
|
4582
|
+
}) : /* @__PURE__ */ jsxs16(Chip, {
|
|
4583
|
+
size: "sm" /* sm */,
|
|
4584
|
+
color: getLatestChipColor(entry.status),
|
|
4585
|
+
children: [
|
|
4586
|
+
"+",
|
|
4587
|
+
latestTime != null ? formatRelativeAge(latestTime - entry.startTime) : "?"
|
|
4588
|
+
]
|
|
4814
4589
|
}),
|
|
4815
|
-
/* @__PURE__ */
|
|
4590
|
+
/* @__PURE__ */ jsx18("span", {
|
|
4816
4591
|
style: {
|
|
4817
|
-
|
|
4818
|
-
|
|
4819
|
-
|
|
4820
|
-
|
|
4821
|
-
|
|
4822
|
-
|
|
4592
|
+
position: "absolute",
|
|
4593
|
+
top: "100%",
|
|
4594
|
+
left: 0,
|
|
4595
|
+
marginTop: "5px",
|
|
4596
|
+
color: DEVTOOL_COLOR_SEMANTIC_METADATA2,
|
|
4597
|
+
fontSize: "10px",
|
|
4598
|
+
lineHeight: "1em",
|
|
4599
|
+
letterSpacing: "0.02em",
|
|
4600
|
+
fontFamily: "ui-sans-serif, system-ui, sans-serif",
|
|
4601
|
+
opacity: 0.7,
|
|
4602
|
+
paddingLeft: "0.1em",
|
|
4603
|
+
whiteSpace: "nowrap"
|
|
4823
4604
|
},
|
|
4824
|
-
children:
|
|
4825
|
-
/* @__PURE__ */ jsx20("span", {
|
|
4826
|
-
style: {
|
|
4827
|
-
display: "flex",
|
|
4828
|
-
color: DEVTOOL_COLOR_SEMANTIC_METADATA,
|
|
4829
|
-
fontSize: "10px",
|
|
4830
|
-
lineHeight: "1em",
|
|
4831
|
-
letterSpacing: "0.02em",
|
|
4832
|
-
fontFamily: "ui-sans-serif, system-ui, sans-serif",
|
|
4833
|
-
flexShrink: 0,
|
|
4834
|
-
opacity: 0.7
|
|
4835
|
-
},
|
|
4836
|
-
children: timestamp
|
|
4837
|
-
}),
|
|
4838
|
-
/* @__PURE__ */ jsx20("span", {
|
|
4839
|
-
style: {
|
|
4840
|
-
display: "flex",
|
|
4841
|
-
color: DEVTOOL_COLOR_SEMANTIC_WARNING,
|
|
4842
|
-
lineHeight: "1em",
|
|
4843
|
-
fontSize: "11px",
|
|
4844
|
-
opacity: 0.9,
|
|
4845
|
-
flexShrink: 0
|
|
4846
|
-
},
|
|
4847
|
-
children: /* @__PURE__ */ jsx20(DurationDisplay, {
|
|
4848
|
-
entry
|
|
4849
|
-
})
|
|
4850
|
-
})
|
|
4851
|
-
]
|
|
4605
|
+
children: timestamp
|
|
4852
4606
|
})
|
|
4853
4607
|
]
|
|
4608
|
+
}),
|
|
4609
|
+
/* @__PURE__ */ jsx18("span", {
|
|
4610
|
+
title: entry.actionId,
|
|
4611
|
+
style: {
|
|
4612
|
+
flex: 1,
|
|
4613
|
+
minWidth: 0,
|
|
4614
|
+
color: DEVTOOL_COLOR_TEXT_SECONDARY,
|
|
4615
|
+
fontSize: "1em",
|
|
4616
|
+
fontWeight: 400,
|
|
4617
|
+
fontFamily: "ui-monospace, 'Cascadia Code', 'Source Code Pro', monospace",
|
|
4618
|
+
overflow: "hidden",
|
|
4619
|
+
textOverflow: "ellipsis",
|
|
4620
|
+
whiteSpace: "nowrap"
|
|
4621
|
+
},
|
|
4622
|
+
children: entry.actionId
|
|
4623
|
+
}),
|
|
4624
|
+
/* @__PURE__ */ jsx18("span", {
|
|
4625
|
+
style: {
|
|
4626
|
+
color: DEVTOOL_COLOR_SEMANTIC_WARNING2,
|
|
4627
|
+
lineHeight: "1em",
|
|
4628
|
+
fontSize: "11px",
|
|
4629
|
+
opacity: 0.9,
|
|
4630
|
+
flexShrink: 0,
|
|
4631
|
+
fontFamily: "ui-sans-serif, system-ui, sans-serif"
|
|
4632
|
+
},
|
|
4633
|
+
children: /* @__PURE__ */ jsx18(DurationDisplay, {
|
|
4634
|
+
entry
|
|
4635
|
+
})
|
|
4854
4636
|
})
|
|
4855
4637
|
]
|
|
4856
4638
|
}),
|
|
4857
|
-
|
|
4639
|
+
/* @__PURE__ */ jsxs16("div", {
|
|
4640
|
+
style: {
|
|
4641
|
+
display: "flex",
|
|
4642
|
+
alignItems: "center",
|
|
4643
|
+
gap: "0.4em",
|
|
4644
|
+
paddingLeft: "4.5em",
|
|
4645
|
+
minWidth: 0
|
|
4646
|
+
},
|
|
4647
|
+
children: [
|
|
4648
|
+
inboundOrigin != null && /* @__PURE__ */ jsx18(OriginChip, {
|
|
4649
|
+
origin: inboundOrigin,
|
|
4650
|
+
size: "sm" /* sm */,
|
|
4651
|
+
subtle: true
|
|
4652
|
+
}),
|
|
4653
|
+
/* @__PURE__ */ jsx18(ActionInputAndOutputChip, {
|
|
4654
|
+
breakReasons,
|
|
4655
|
+
entry,
|
|
4656
|
+
size: "sm" /* sm */
|
|
4657
|
+
})
|
|
4658
|
+
]
|
|
4659
|
+
}),
|
|
4660
|
+
hasBottomContent && /* @__PURE__ */ jsxs16("div", {
|
|
4858
4661
|
style: {
|
|
4859
4662
|
display: "flex",
|
|
4860
4663
|
flexWrap: "wrap",
|
|
@@ -4863,35 +4666,35 @@ function ActionEntryRow({
|
|
|
4863
4666
|
paddingLeft: "4.5em"
|
|
4864
4667
|
},
|
|
4865
4668
|
children: [
|
|
4866
|
-
externalChildEntries.map((child) => /* @__PURE__ */
|
|
4669
|
+
externalChildEntries.map((child) => /* @__PURE__ */ jsxs16(Fragment7, {
|
|
4867
4670
|
children: [
|
|
4868
|
-
/* @__PURE__ */
|
|
4671
|
+
/* @__PURE__ */ jsx18(Icon, {
|
|
4869
4672
|
size: "sm" /* sm */,
|
|
4870
4673
|
icon: Variable2,
|
|
4871
4674
|
color: "io_input" /* io_input */,
|
|
4872
4675
|
subtle: true,
|
|
4873
4676
|
tooltip: {
|
|
4874
|
-
content: child.input !== undefined ? /* @__PURE__ */
|
|
4677
|
+
content: child.input !== undefined ? /* @__PURE__ */ jsx18(IoTooltipContent, {
|
|
4875
4678
|
value: child.input
|
|
4876
|
-
}) : /* @__PURE__ */
|
|
4877
|
-
style: { color:
|
|
4679
|
+
}) : /* @__PURE__ */ jsx18("span", {
|
|
4680
|
+
style: { color: DEVTOOL_COLOR_TEXT_MUTED2, fontSize: "10px" },
|
|
4878
4681
|
children: "No input required or given"
|
|
4879
4682
|
}),
|
|
4880
4683
|
title: `Input · ${child.actionId}`
|
|
4881
4684
|
}
|
|
4882
4685
|
}),
|
|
4883
|
-
/* @__PURE__ */
|
|
4686
|
+
/* @__PURE__ */ jsx18(HandlerChips, {
|
|
4884
4687
|
entry: child,
|
|
4885
4688
|
size: "sm" /* sm */,
|
|
4886
4689
|
subtle: true
|
|
4887
4690
|
}),
|
|
4888
|
-
child.status === "success" && child.output !== undefined && /* @__PURE__ */
|
|
4691
|
+
child.status === "success" && child.output !== undefined && /* @__PURE__ */ jsx18(Icon, {
|
|
4889
4692
|
size: "sm" /* sm */,
|
|
4890
4693
|
icon: PackageCheck2,
|
|
4891
4694
|
color: "io_output" /* io_output */,
|
|
4892
4695
|
subtle: true,
|
|
4893
4696
|
tooltip: {
|
|
4894
|
-
content: /* @__PURE__ */
|
|
4697
|
+
content: /* @__PURE__ */ jsx18(IoTooltipContent, {
|
|
4895
4698
|
value: child.output
|
|
4896
4699
|
}),
|
|
4897
4700
|
title: `Output · ${child.actionId}`
|
|
@@ -4899,18 +4702,18 @@ function ActionEntryRow({
|
|
|
4899
4702
|
})
|
|
4900
4703
|
]
|
|
4901
4704
|
}, child.actionId)),
|
|
4902
|
-
nonIoBreakReasons.map((reason) => /* @__PURE__ */
|
|
4705
|
+
nonIoBreakReasons.map((reason) => /* @__PURE__ */ jsx18(Chip, {
|
|
4903
4706
|
color: "default" /* default */,
|
|
4904
4707
|
subtle: true,
|
|
4905
4708
|
children: reason
|
|
4906
4709
|
}, reason)),
|
|
4907
|
-
externalChildEntries.length > 0 && hasBottomError && /* @__PURE__ */
|
|
4710
|
+
externalChildEntries.length > 0 && hasBottomError && /* @__PURE__ */ jsx18(Icon, {
|
|
4908
4711
|
size: "sm" /* sm */,
|
|
4909
4712
|
icon: CircleX3,
|
|
4910
4713
|
color: entry.status === "aborted" ? "aborted" /* aborted */ : "error" /* error */,
|
|
4911
4714
|
subtle: true,
|
|
4912
4715
|
tooltip: {
|
|
4913
|
-
content: /* @__PURE__ */
|
|
4716
|
+
content: /* @__PURE__ */ jsx18(ActionErrorDisplay, {
|
|
4914
4717
|
entry,
|
|
4915
4718
|
compact: true
|
|
4916
4719
|
}),
|
|
@@ -4920,7 +4723,7 @@ function ActionEntryRow({
|
|
|
4920
4723
|
})
|
|
4921
4724
|
]
|
|
4922
4725
|
}),
|
|
4923
|
-
hasGroup && /* @__PURE__ */
|
|
4726
|
+
hasGroup && /* @__PURE__ */ jsxs16("div", {
|
|
4924
4727
|
style: {
|
|
4925
4728
|
display: "flex",
|
|
4926
4729
|
flexWrap: "wrap",
|
|
@@ -4930,7 +4733,7 @@ function ActionEntryRow({
|
|
|
4930
4733
|
paddingBottom: "2px"
|
|
4931
4734
|
},
|
|
4932
4735
|
children: [
|
|
4933
|
-
groupEntries.slice(0, MAX_GROUP_DOTS).map((e, i) => /* @__PURE__ */
|
|
4736
|
+
groupEntries.slice(0, MAX_GROUP_DOTS).map((e, i) => /* @__PURE__ */ jsx18(GroupDot, {
|
|
4934
4737
|
entry: e,
|
|
4935
4738
|
index: i,
|
|
4936
4739
|
total: groupEntries.length,
|
|
@@ -4938,7 +4741,7 @@ function ActionEntryRow({
|
|
|
4938
4741
|
isActive: selectedGroupCuid === e.cuid,
|
|
4939
4742
|
onSelect: () => onSelectGroupEntry?.(e.cuid)
|
|
4940
4743
|
}, e.cuid)),
|
|
4941
|
-
groupEntries.length > MAX_GROUP_DOTS && /* @__PURE__ */
|
|
4744
|
+
groupEntries.length > MAX_GROUP_DOTS && /* @__PURE__ */ jsxs16("span", {
|
|
4942
4745
|
style: {
|
|
4943
4746
|
fontSize: "0.7em",
|
|
4944
4747
|
opacity: 0.5,
|
|
@@ -4957,10 +4760,10 @@ function ActionEntryRow({
|
|
|
4957
4760
|
}
|
|
4958
4761
|
|
|
4959
4762
|
// src/devtools/browser/components/action_list/ActionList.tsx
|
|
4960
|
-
import { jsx as
|
|
4763
|
+
import { jsx as jsx19, jsxs as jsxs17, Fragment as Fragment9 } from "react/jsx-runtime";
|
|
4961
4764
|
function getBreakReasons(current, previous) {
|
|
4962
4765
|
const reasons = [];
|
|
4963
|
-
const inputChanged = current.inputHash != null && previous.inputHash != null ? current.inputHash !== previous.inputHash :
|
|
4766
|
+
const inputChanged = current.inputHash != null && previous.inputHash != null ? current.inputHash !== previous.inputHash : safeStringify2(current.input, 0) !== safeStringify2(previous.input, 0);
|
|
4964
4767
|
if (inputChanged)
|
|
4965
4768
|
reasons.push("new_input" /* new_input */);
|
|
4966
4769
|
const outputChanged = current.outputHash != null && previous.outputHash != null && current.outputHash !== previous.outputHash;
|
|
@@ -4993,7 +4796,6 @@ function ActionList({
|
|
|
4993
4796
|
childEntriesMap,
|
|
4994
4797
|
style
|
|
4995
4798
|
}) {
|
|
4996
|
-
const containerRef = useRef2(null);
|
|
4997
4799
|
const latestTime = groups[0]?.representative.startTime;
|
|
4998
4800
|
const flatItems = useMemo2(() => {
|
|
4999
4801
|
return groups.map((group, gi) => {
|
|
@@ -5007,477 +4809,78 @@ function ActionList({
|
|
|
5007
4809
|
return { group, groupIndex: gi, breakReasons };
|
|
5008
4810
|
});
|
|
5009
4811
|
}, [groups]);
|
|
5010
|
-
const
|
|
5011
|
-
|
|
5012
|
-
|
|
5013
|
-
|
|
5014
|
-
|
|
4812
|
+
const prevRepCuidsRef = useRef2(null);
|
|
4813
|
+
const newRepCuids = useMemo2(() => {
|
|
4814
|
+
const current = new Set(flatItems.map((i) => i.group.representative.cuid));
|
|
4815
|
+
const prev = prevRepCuidsRef.current;
|
|
4816
|
+
const result = new Set;
|
|
4817
|
+
if (prev != null) {
|
|
4818
|
+
for (const c of current)
|
|
4819
|
+
if (!prev.has(c))
|
|
4820
|
+
result.add(c);
|
|
4821
|
+
}
|
|
4822
|
+
prevRepCuidsRef.current = current;
|
|
4823
|
+
return result;
|
|
4824
|
+
}, [flatItems]);
|
|
4825
|
+
const selectedAnchorKey = useMemo2(() => {
|
|
5015
4826
|
if (selectedCuid == null)
|
|
5016
|
-
return;
|
|
5017
|
-
|
|
5018
|
-
|
|
5019
|
-
|
|
5020
|
-
|
|
5021
|
-
|
|
5022
|
-
|
|
5023
|
-
|
|
5024
|
-
|
|
5025
|
-
|
|
5026
|
-
|
|
5027
|
-
|
|
4827
|
+
return null;
|
|
4828
|
+
const item = flatItems.find((i) => i.group.representative.cuid === selectedCuid || i.group.rest.some((e) => e.cuid === selectedCuid));
|
|
4829
|
+
return item != null ? getFlatItemKey(item) : null;
|
|
4830
|
+
}, [flatItems, selectedCuid]);
|
|
4831
|
+
return /* @__PURE__ */ jsx19(DevtoolsVirtualList, {
|
|
4832
|
+
items: flatItems,
|
|
4833
|
+
getItemKey: getFlatItemKey,
|
|
4834
|
+
selectedKey: selectedAnchorKey,
|
|
4835
|
+
estimateSize: 64,
|
|
4836
|
+
overscan: 8,
|
|
4837
|
+
style,
|
|
4838
|
+
rowStyle: { borderBottom: `1px solid ${DEVTOOL_LIST_GROUP_DIVIDER}`, overflow: "hidden" },
|
|
4839
|
+
empty: /* @__PURE__ */ jsx19("div", {
|
|
5028
4840
|
style,
|
|
5029
|
-
children: /* @__PURE__ */
|
|
5030
|
-
style: { padding: "24px", textAlign: "center", color:
|
|
4841
|
+
children: /* @__PURE__ */ jsx19("div", {
|
|
4842
|
+
style: { padding: "24px", textAlign: "center", color: DEVTOOL_COLOR_TEXT_MUTED2 },
|
|
5031
4843
|
children: "No actions recorded yet"
|
|
5032
4844
|
})
|
|
5033
|
-
})
|
|
5034
|
-
|
|
5035
|
-
|
|
5036
|
-
|
|
5037
|
-
|
|
5038
|
-
|
|
5039
|
-
|
|
5040
|
-
|
|
5041
|
-
|
|
5042
|
-
return /* @__PURE__ */ jsxs18("div", {
|
|
5043
|
-
style: {
|
|
5044
|
-
borderBottom: `1px solid ${DEVTOOL_LIST_GROUP_DIVIDER}`,
|
|
5045
|
-
position: "relative",
|
|
5046
|
-
overflow: "hidden"
|
|
5047
|
-
},
|
|
5048
|
-
children: [
|
|
5049
|
-
/* @__PURE__ */ jsx21("div", {
|
|
5050
|
-
style: {
|
|
5051
|
-
position: "absolute",
|
|
5052
|
-
inset: 0,
|
|
5053
|
-
pointerEvents: "none",
|
|
5054
|
-
background: "linear-gradient(90deg, transparent 0%, rgba(148, 210, 255, 0.13) 50%, transparent 100%)",
|
|
5055
|
-
animation: "__nice-action-shine 0.65s ease-out forwards"
|
|
5056
|
-
}
|
|
5057
|
-
}, group.representative.cuid),
|
|
5058
|
-
/* @__PURE__ */ jsx21(ActionEntryRow, {
|
|
5059
|
-
entry: group.representative,
|
|
5060
|
-
isSelected: selectedCuid === group.representative.cuid || group.rest.some((e) => e.cuid === selectedCuid),
|
|
5061
|
-
isLatest: item.groupIndex === 0,
|
|
5062
|
-
latestTime,
|
|
5063
|
-
childEntries: getGroupChildEntries(group, childEntriesMap),
|
|
5064
|
-
breakReasons: item.breakReasons,
|
|
5065
|
-
groupEntries: group.rest.length > 0 ? [group.representative, ...group.rest] : undefined,
|
|
5066
|
-
selectedGroupCuid: selectedCuid,
|
|
5067
|
-
onSelectGroupEntry: (cuid) => onSubClick(cuid, selectedCuid === cuid),
|
|
5068
|
-
onClick: () => onGroupClick(group)
|
|
5069
|
-
})
|
|
5070
|
-
]
|
|
5071
|
-
}, key);
|
|
5072
|
-
}),
|
|
5073
|
-
/* @__PURE__ */ jsx21("div", {
|
|
5074
|
-
style: { padding: "24px", textAlign: "center", color: DEVTOOL_COLOR_TEXT_MUTED },
|
|
5075
|
-
children: "Start of action history"
|
|
5076
|
-
})
|
|
5077
|
-
]
|
|
5078
|
-
});
|
|
5079
|
-
}
|
|
5080
|
-
|
|
5081
|
-
// src/devtools/browser/components/PanelChrome.tsx
|
|
5082
|
-
import { useState as useState11 } from "react";
|
|
5083
|
-
import { jsx as jsx22, jsxs as jsxs19 } from "react/jsx-runtime";
|
|
5084
|
-
var MONO_FONT = "ui-monospace, 'Cascadia Code', 'Source Code Pro', monospace";
|
|
5085
|
-
var SANS_FONT = "ui-sans-serif, system-ui, sans-serif";
|
|
5086
|
-
var DOCKED_SIZE_MIN = 140;
|
|
5087
|
-
var POSITION_GRID = [
|
|
5088
|
-
{ key: "tl", pos: null },
|
|
5089
|
-
{ key: "tc", pos: "dock-top" },
|
|
5090
|
-
{ key: "tr", pos: null },
|
|
5091
|
-
{ key: "ml", pos: "dock-left" },
|
|
5092
|
-
{ key: "mc", pos: null },
|
|
5093
|
-
{ key: "mr", pos: "dock-right" },
|
|
5094
|
-
{ key: "bl", pos: null },
|
|
5095
|
-
{ key: "bc", pos: "dock-bottom" },
|
|
5096
|
-
{ key: "br", pos: null }
|
|
5097
|
-
];
|
|
5098
|
-
function getDockSide(pos) {
|
|
5099
|
-
switch (pos) {
|
|
5100
|
-
case "dock-top":
|
|
5101
|
-
return "top";
|
|
5102
|
-
case "dock-left":
|
|
5103
|
-
return "left";
|
|
5104
|
-
case "dock-right":
|
|
5105
|
-
return "right";
|
|
5106
|
-
default:
|
|
5107
|
-
return "bottom";
|
|
5108
|
-
}
|
|
5109
|
-
}
|
|
5110
|
-
function PanelHeader({
|
|
5111
|
-
position,
|
|
5112
|
-
onPositionChange,
|
|
5113
|
-
onClose,
|
|
5114
|
-
onClear,
|
|
5115
|
-
openOthers
|
|
5116
|
-
}) {
|
|
5117
|
-
return /* @__PURE__ */ jsxs19("div", {
|
|
5118
|
-
style: {
|
|
5119
|
-
display: "flex",
|
|
5120
|
-
alignItems: "center",
|
|
5121
|
-
justifyContent: "space-between",
|
|
5122
|
-
padding: "8px 12px",
|
|
5123
|
-
gap: "10px",
|
|
5124
|
-
background: DEVTOOL_SECTION_BACKGROUND,
|
|
5125
|
-
borderBottom: `1px solid ${DEVTOOL_LIST_BASE_BACKGROUND}`,
|
|
5126
|
-
flexShrink: 0
|
|
5127
|
-
},
|
|
5128
|
-
children: [
|
|
5129
|
-
/* @__PURE__ */ jsxs19("div", {
|
|
5130
|
-
style: { display: "flex", alignItems: "center", gap: "8px", minWidth: 0 },
|
|
4845
|
+
}),
|
|
4846
|
+
footer: /* @__PURE__ */ jsx19("div", {
|
|
4847
|
+
style: { padding: "24px", textAlign: "center", color: DEVTOOL_COLOR_TEXT_MUTED2 },
|
|
4848
|
+
children: "Start of action history"
|
|
4849
|
+
}),
|
|
4850
|
+
renderItem: (item) => {
|
|
4851
|
+
const { group } = item;
|
|
4852
|
+
const shine = newRepCuids.has(group.representative.cuid);
|
|
4853
|
+
return /* @__PURE__ */ jsxs17(Fragment9, {
|
|
5131
4854
|
children: [
|
|
5132
|
-
/* @__PURE__ */
|
|
5133
|
-
style: {
|
|
5134
|
-
color: DEVTOOL_COLOR_SEMANTIC_SYSTEM,
|
|
5135
|
-
fontWeight: "bold",
|
|
5136
|
-
fontSize: "11px",
|
|
5137
|
-
whiteSpace: "nowrap"
|
|
5138
|
-
},
|
|
5139
|
-
children: "⚡ action"
|
|
5140
|
-
}),
|
|
5141
|
-
openOthers?.map((item) => /* @__PURE__ */ jsxs19("button", {
|
|
5142
|
-
onClick: item.onOpen,
|
|
5143
|
-
title: `Open ${item.label} devtools`,
|
|
4855
|
+
shine && /* @__PURE__ */ jsx19("div", {
|
|
5144
4856
|
style: {
|
|
5145
|
-
|
|
5146
|
-
|
|
5147
|
-
|
|
5148
|
-
background:
|
|
5149
|
-
|
|
5150
|
-
|
|
5151
|
-
color: DEVTOOL_COLOR_TEXT_MUTED,
|
|
5152
|
-
cursor: "pointer",
|
|
5153
|
-
fontSize: "10px",
|
|
5154
|
-
padding: "1px 7px 1px 6px",
|
|
5155
|
-
fontFamily: SANS_FONT,
|
|
5156
|
-
whiteSpace: "nowrap"
|
|
5157
|
-
},
|
|
5158
|
-
children: [
|
|
5159
|
-
/* @__PURE__ */ jsx22("span", {
|
|
5160
|
-
children: item.icon
|
|
5161
|
-
}),
|
|
5162
|
-
/* @__PURE__ */ jsx22("span", {
|
|
5163
|
-
children: item.label
|
|
5164
|
-
}),
|
|
5165
|
-
item.badge != null && /* @__PURE__ */ jsx22("span", {
|
|
5166
|
-
style: { color: DEVTOOL_COLOR_SEMANTIC_SYSTEM },
|
|
5167
|
-
children: item.badge
|
|
5168
|
-
})
|
|
5169
|
-
]
|
|
5170
|
-
}, item.id))
|
|
5171
|
-
]
|
|
5172
|
-
}),
|
|
5173
|
-
/* @__PURE__ */ jsxs19("div", {
|
|
5174
|
-
style: { display: "flex", gap: "10px", alignItems: "center" },
|
|
5175
|
-
children: [
|
|
5176
|
-
/* @__PURE__ */ jsx22(PositionPicker, {
|
|
5177
|
-
position,
|
|
5178
|
-
onChange: onPositionChange
|
|
5179
|
-
}),
|
|
5180
|
-
onClear != null && /* @__PURE__ */ jsx22("button", {
|
|
5181
|
-
onClick: onClear,
|
|
5182
|
-
style: {
|
|
5183
|
-
background: "none",
|
|
5184
|
-
border: "none",
|
|
5185
|
-
color: DEVTOOL_COLOR_TEXT_MUTED,
|
|
5186
|
-
cursor: "pointer",
|
|
5187
|
-
fontSize: "11px",
|
|
5188
|
-
padding: "0"
|
|
5189
|
-
},
|
|
5190
|
-
children: "clear"
|
|
4857
|
+
position: "absolute",
|
|
4858
|
+
inset: 0,
|
|
4859
|
+
pointerEvents: "none",
|
|
4860
|
+
background: "linear-gradient(90deg, transparent 0%, rgba(148, 210, 255, 0.13) 50%, transparent 100%)",
|
|
4861
|
+
animation: "__nice-action-shine 0.65s ease-out forwards"
|
|
4862
|
+
}
|
|
5191
4863
|
}),
|
|
5192
|
-
/* @__PURE__ */
|
|
5193
|
-
|
|
5194
|
-
|
|
5195
|
-
|
|
5196
|
-
|
|
5197
|
-
|
|
5198
|
-
|
|
5199
|
-
|
|
5200
|
-
|
|
5201
|
-
|
|
5202
|
-
|
|
5203
|
-
children: "×"
|
|
4864
|
+
/* @__PURE__ */ jsx19(ActionEntryRow, {
|
|
4865
|
+
entry: group.representative,
|
|
4866
|
+
isSelected: selectedCuid === group.representative.cuid || group.rest.some((e) => e.cuid === selectedCuid),
|
|
4867
|
+
isLatest: item.groupIndex === 0,
|
|
4868
|
+
latestTime,
|
|
4869
|
+
childEntries: getGroupChildEntries(group, childEntriesMap),
|
|
4870
|
+
breakReasons: item.breakReasons,
|
|
4871
|
+
groupEntries: group.rest.length > 0 ? [group.representative, ...group.rest] : undefined,
|
|
4872
|
+
selectedGroupCuid: selectedCuid,
|
|
4873
|
+
onSelectGroupEntry: (cuid) => onSubClick(cuid, selectedCuid === cuid),
|
|
4874
|
+
onClick: () => onGroupClick(group)
|
|
5204
4875
|
})
|
|
5205
4876
|
]
|
|
5206
|
-
})
|
|
5207
|
-
]
|
|
5208
|
-
});
|
|
5209
|
-
}
|
|
5210
|
-
function PositionPicker({
|
|
5211
|
-
position,
|
|
5212
|
-
onChange
|
|
5213
|
-
}) {
|
|
5214
|
-
return /* @__PURE__ */ jsx22("div", {
|
|
5215
|
-
title: "Move / dock panel",
|
|
5216
|
-
style: { display: "grid", gridTemplateColumns: "repeat(3, 9px)", gap: "2px", padding: "2px" },
|
|
5217
|
-
children: POSITION_GRID.map(({ key, pos }) => {
|
|
5218
|
-
if (pos == null)
|
|
5219
|
-
return /* @__PURE__ */ jsx22("div", {
|
|
5220
|
-
style: { width: "9px", height: "9px" }
|
|
5221
|
-
}, key);
|
|
5222
|
-
const isTopBottom = pos === "dock-top" || pos === "dock-bottom";
|
|
5223
|
-
const isActive = pos === position;
|
|
5224
|
-
return /* @__PURE__ */ jsx22("div", {
|
|
5225
|
-
title: pos,
|
|
5226
|
-
onClick: () => onChange(pos),
|
|
5227
|
-
style: {
|
|
5228
|
-
width: "9px",
|
|
5229
|
-
height: "9px",
|
|
5230
|
-
display: "flex",
|
|
5231
|
-
alignItems: "center",
|
|
5232
|
-
justifyContent: "center",
|
|
5233
|
-
cursor: "pointer"
|
|
5234
|
-
},
|
|
5235
|
-
children: /* @__PURE__ */ jsx22("div", {
|
|
5236
|
-
style: {
|
|
5237
|
-
width: isTopBottom ? "9px" : "3px",
|
|
5238
|
-
height: isTopBottom ? "3px" : "9px",
|
|
5239
|
-
borderRadius: "1px",
|
|
5240
|
-
background: isActive ? DEVTOOL_COLOR_SEMANTIC_SYSTEM : DEVTOOL_COLOR_TEXT_FAINT
|
|
5241
|
-
}
|
|
5242
|
-
})
|
|
5243
|
-
}, key);
|
|
5244
|
-
})
|
|
5245
|
-
});
|
|
5246
|
-
}
|
|
5247
|
-
function ResizeHandle({
|
|
5248
|
-
dockSide,
|
|
5249
|
-
dockedSize,
|
|
5250
|
-
onChange
|
|
5251
|
-
}) {
|
|
5252
|
-
const isHoriz = dockSide === "left" || dockSide === "right";
|
|
5253
|
-
const onMouseDown = (e) => {
|
|
5254
|
-
e.preventDefault();
|
|
5255
|
-
const startCoord = isHoriz ? e.clientX : e.clientY;
|
|
5256
|
-
const startSize = dockedSize;
|
|
5257
|
-
const maxSize = isHoriz ? window.innerWidth * 0.85 : window.innerHeight * 0.85;
|
|
5258
|
-
const sign = dockSide === "bottom" || dockSide === "right" ? -1 : 1;
|
|
5259
|
-
const onMove = (me) => {
|
|
5260
|
-
const delta = (isHoriz ? me.clientX : me.clientY) - startCoord;
|
|
5261
|
-
onChange(Math.max(DOCKED_SIZE_MIN, Math.min(maxSize, startSize + sign * delta)));
|
|
5262
|
-
};
|
|
5263
|
-
const onUp = () => {
|
|
5264
|
-
window.removeEventListener("mousemove", onMove);
|
|
5265
|
-
window.removeEventListener("mouseup", onUp);
|
|
5266
|
-
};
|
|
5267
|
-
window.addEventListener("mousemove", onMove);
|
|
5268
|
-
window.addEventListener("mouseup", onUp);
|
|
5269
|
-
};
|
|
5270
|
-
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" };
|
|
5271
|
-
return /* @__PURE__ */ jsx22("div", {
|
|
5272
|
-
onMouseDown,
|
|
5273
|
-
style: {
|
|
5274
|
-
position: "absolute",
|
|
5275
|
-
zIndex: 10,
|
|
5276
|
-
background: "transparent",
|
|
5277
|
-
...edgeStyle
|
|
5278
|
-
}
|
|
5279
|
-
});
|
|
5280
|
-
}
|
|
5281
|
-
var SPLIT_RATIO_MIN = 0.15;
|
|
5282
|
-
var SPLIT_RATIO_MAX = 0.85;
|
|
5283
|
-
function SplitHandle({
|
|
5284
|
-
horizontal,
|
|
5285
|
-
onRatioChange
|
|
5286
|
-
}) {
|
|
5287
|
-
const [hovered, setHovered] = useState11(false);
|
|
5288
|
-
const onMouseDown = (e) => {
|
|
5289
|
-
e.preventDefault();
|
|
5290
|
-
const container = e.currentTarget.parentElement;
|
|
5291
|
-
if (container == null)
|
|
5292
|
-
return;
|
|
5293
|
-
const onMove = (me) => {
|
|
5294
|
-
const rect = container.getBoundingClientRect();
|
|
5295
|
-
const ratio = horizontal ? (rect.right - me.clientX) / rect.width : (rect.bottom - me.clientY) / rect.height;
|
|
5296
|
-
onRatioChange(Math.max(SPLIT_RATIO_MIN, Math.min(SPLIT_RATIO_MAX, ratio)));
|
|
5297
|
-
};
|
|
5298
|
-
const onUp = () => {
|
|
5299
|
-
window.removeEventListener("mousemove", onMove);
|
|
5300
|
-
window.removeEventListener("mouseup", onUp);
|
|
5301
|
-
};
|
|
5302
|
-
window.addEventListener("mousemove", onMove);
|
|
5303
|
-
window.addEventListener("mouseup", onUp);
|
|
5304
|
-
};
|
|
5305
|
-
return /* @__PURE__ */ jsx22("div", {
|
|
5306
|
-
onMouseDown,
|
|
5307
|
-
onMouseEnter: () => setHovered(true),
|
|
5308
|
-
onMouseLeave: () => setHovered(false),
|
|
5309
|
-
style: {
|
|
5310
|
-
flex: "0 0 5px",
|
|
5311
|
-
alignSelf: "stretch",
|
|
5312
|
-
cursor: horizontal ? "ew-resize" : "ns-resize",
|
|
5313
|
-
background: hovered ? DEVTOOL_COLOR_SEMANTIC_SYSTEM : "transparent",
|
|
5314
|
-
opacity: hovered ? 0.6 : 1,
|
|
5315
|
-
zIndex: 5
|
|
4877
|
+
});
|
|
5316
4878
|
}
|
|
5317
4879
|
});
|
|
5318
4880
|
}
|
|
5319
|
-
function DevtoolsLauncher({ items }) {
|
|
5320
|
-
return /* @__PURE__ */ jsx22("div", {
|
|
5321
|
-
style: {
|
|
5322
|
-
position: "fixed",
|
|
5323
|
-
bottom: "16px",
|
|
5324
|
-
right: "16px",
|
|
5325
|
-
zIndex: 2147483647,
|
|
5326
|
-
display: "flex",
|
|
5327
|
-
fontFamily: MONO_FONT,
|
|
5328
|
-
fontSize: "12px"
|
|
5329
|
-
},
|
|
5330
|
-
children: /* @__PURE__ */ jsx22("div", {
|
|
5331
|
-
style: {
|
|
5332
|
-
display: "flex",
|
|
5333
|
-
background: DEVTOOL_SECTION_BACKGROUND,
|
|
5334
|
-
border: `1px solid ${DEVTOOL_COLOR_TEXT_FAINT}`,
|
|
5335
|
-
borderRadius: "6px",
|
|
5336
|
-
overflow: "hidden",
|
|
5337
|
-
boxShadow: "0 8px 24px rgba(0,0,0,0.35)"
|
|
5338
|
-
},
|
|
5339
|
-
children: items.map((item, i) => /* @__PURE__ */ jsxs19("button", {
|
|
5340
|
-
onClick: item.onOpen,
|
|
5341
|
-
style: {
|
|
5342
|
-
display: "flex",
|
|
5343
|
-
alignItems: "center",
|
|
5344
|
-
gap: "5px",
|
|
5345
|
-
background: "transparent",
|
|
5346
|
-
color: DEVTOOL_COLOR_TEXT_SECONDARY,
|
|
5347
|
-
border: "none",
|
|
5348
|
-
borderLeft: i > 0 ? `1px solid ${DEVTOOL_COLOR_TEXT_FAINT}` : "none",
|
|
5349
|
-
cursor: "pointer",
|
|
5350
|
-
padding: "6px 11px",
|
|
5351
|
-
fontFamily: MONO_FONT,
|
|
5352
|
-
fontSize: "12px",
|
|
5353
|
-
lineHeight: "1.5"
|
|
5354
|
-
},
|
|
5355
|
-
children: [
|
|
5356
|
-
/* @__PURE__ */ jsx22("span", {
|
|
5357
|
-
children: item.icon
|
|
5358
|
-
}),
|
|
5359
|
-
/* @__PURE__ */ jsx22("span", {
|
|
5360
|
-
children: item.label
|
|
5361
|
-
}),
|
|
5362
|
-
item.badge != null && /* @__PURE__ */ jsx22("span", {
|
|
5363
|
-
style: { color: DEVTOOL_COLOR_SEMANTIC_SYSTEM },
|
|
5364
|
-
children: item.badge
|
|
5365
|
-
})
|
|
5366
|
-
]
|
|
5367
|
-
}, item.id))
|
|
5368
|
-
})
|
|
5369
|
-
});
|
|
5370
|
-
}
|
|
5371
|
-
|
|
5372
|
-
// src/devtools/browser/devtools_dock.ts
|
|
5373
|
-
var GLOBAL_KEY = "__NICE_DEVTOOLS_DOCK__";
|
|
5374
|
-
var VERSION = 4;
|
|
5375
|
-
function createCoordinator() {
|
|
5376
|
-
const panels = new Map;
|
|
5377
|
-
const listeners = new Set;
|
|
5378
|
-
function toRef(panel) {
|
|
5379
|
-
return {
|
|
5380
|
-
id: panel.id,
|
|
5381
|
-
label: panel.label,
|
|
5382
|
-
icon: panel.icon,
|
|
5383
|
-
badge: panel.badge,
|
|
5384
|
-
onOpen: panel.onOpen
|
|
5385
|
-
};
|
|
5386
|
-
}
|
|
5387
|
-
function applyBodyMargins() {
|
|
5388
|
-
if (typeof document === "undefined")
|
|
5389
|
-
return;
|
|
5390
|
-
const margins = { top: 0, bottom: 0, left: 0, right: 0 };
|
|
5391
|
-
for (const panel of panels.values()) {
|
|
5392
|
-
if (panel.open)
|
|
5393
|
-
margins[panel.side] += panel.size;
|
|
5394
|
-
}
|
|
5395
|
-
const sides = ["top", "bottom", "left", "right"];
|
|
5396
|
-
for (const side of sides) {
|
|
5397
|
-
if (margins[side] > 0) {
|
|
5398
|
-
document.body.style.setProperty(`margin-${side}`, `${margins[side]}px`);
|
|
5399
|
-
} else {
|
|
5400
|
-
document.body.style.removeProperty(`margin-${side}`);
|
|
5401
|
-
}
|
|
5402
|
-
}
|
|
5403
|
-
}
|
|
5404
|
-
function notify() {
|
|
5405
|
-
applyBodyMargins();
|
|
5406
|
-
for (const listener of listeners)
|
|
5407
|
-
listener();
|
|
5408
|
-
}
|
|
5409
|
-
return {
|
|
5410
|
-
version: VERSION,
|
|
5411
|
-
register(panel) {
|
|
5412
|
-
panels.set(panel.id, { ...panel });
|
|
5413
|
-
notify();
|
|
5414
|
-
return () => {
|
|
5415
|
-
panels.delete(panel.id);
|
|
5416
|
-
notify();
|
|
5417
|
-
};
|
|
5418
|
-
},
|
|
5419
|
-
update(id, next) {
|
|
5420
|
-
const existing = panels.get(id);
|
|
5421
|
-
if (existing == null)
|
|
5422
|
-
return;
|
|
5423
|
-
if (existing.side === next.side && existing.size === next.size && existing.open === next.open && existing.badge === next.badge) {
|
|
5424
|
-
return;
|
|
5425
|
-
}
|
|
5426
|
-
panels.set(id, { ...existing, ...next });
|
|
5427
|
-
notify();
|
|
5428
|
-
},
|
|
5429
|
-
getView(id) {
|
|
5430
|
-
const list = [...panels.values()];
|
|
5431
|
-
const anyOpen = list.some((p) => p.open);
|
|
5432
|
-
const firstId = list.length > 0 ? list[0].id : null;
|
|
5433
|
-
let dockOffset = 0;
|
|
5434
|
-
let stacked = false;
|
|
5435
|
-
const self = panels.get(id);
|
|
5436
|
-
if (self != null && self.open) {
|
|
5437
|
-
let seenSelf = false;
|
|
5438
|
-
for (const panel of list) {
|
|
5439
|
-
if (panel.id === id) {
|
|
5440
|
-
seenSelf = true;
|
|
5441
|
-
continue;
|
|
5442
|
-
}
|
|
5443
|
-
if (panel.open && panel.side === self.side) {
|
|
5444
|
-
stacked = true;
|
|
5445
|
-
if (!seenSelf)
|
|
5446
|
-
dockOffset += panel.size;
|
|
5447
|
-
}
|
|
5448
|
-
}
|
|
5449
|
-
}
|
|
5450
|
-
return {
|
|
5451
|
-
dockOffset,
|
|
5452
|
-
stacked,
|
|
5453
|
-
anyOpen,
|
|
5454
|
-
isPrimary: id === firstId,
|
|
5455
|
-
devtools: list.map(toRef),
|
|
5456
|
-
otherClosed: list.filter((p) => !p.open && p.id !== id).map(toRef)
|
|
5457
|
-
};
|
|
5458
|
-
},
|
|
5459
|
-
subscribe(listener) {
|
|
5460
|
-
listeners.add(listener);
|
|
5461
|
-
return () => {
|
|
5462
|
-
listeners.delete(listener);
|
|
5463
|
-
};
|
|
5464
|
-
}
|
|
5465
|
-
};
|
|
5466
|
-
}
|
|
5467
|
-
function getDevtoolsDockCoordinator() {
|
|
5468
|
-
if (typeof window === "undefined")
|
|
5469
|
-
return createCoordinator();
|
|
5470
|
-
const host = window;
|
|
5471
|
-
const existing = host[GLOBAL_KEY];
|
|
5472
|
-
if (existing != null && existing.version === VERSION)
|
|
5473
|
-
return existing;
|
|
5474
|
-
const created = createCoordinator();
|
|
5475
|
-
host[GLOBAL_KEY] = created;
|
|
5476
|
-
return created;
|
|
5477
|
-
}
|
|
5478
4881
|
|
|
5479
4882
|
// src/devtools/browser/NiceActionDevtools.tsx
|
|
5480
|
-
import { jsx as
|
|
4883
|
+
import { jsx as jsx20, jsxs as jsxs18, Fragment as Fragment10 } from "react/jsx-runtime";
|
|
5481
4884
|
if (typeof document !== "undefined" && !document.getElementById("__nice-action-devtools-styles")) {
|
|
5482
4885
|
const style = document.createElement("style");
|
|
5483
4886
|
style.id = "__nice-action-devtools-styles";
|
|
@@ -5509,14 +4912,21 @@ if (typeof document !== "undefined" && !document.getElementById("__nice-action-d
|
|
|
5509
4912
|
#__nice-action-devtools-panel ::-webkit-scrollbar-corner {
|
|
5510
4913
|
background: transparent;
|
|
5511
4914
|
}
|
|
4915
|
+
/* Shield the panel's native form controls from the host app's global element
|
|
4916
|
+
styles (e.g. a bare \`input {}\`/\`button {}\` rule). \`all: revert\` drops them
|
|
4917
|
+
to the UA baseline the panel is authored against; the panel's own inline
|
|
4918
|
+
styles still win, so its look is unchanged across any host. */
|
|
4919
|
+
#__nice-action-devtools-panel input,
|
|
4920
|
+
#__nice-action-devtools-panel button,
|
|
4921
|
+
#__nice-action-devtools-panel select,
|
|
4922
|
+
#__nice-action-devtools-panel textarea { all: revert; font-family: inherit; }
|
|
5512
4923
|
`;
|
|
5513
4924
|
document.head?.appendChild(style);
|
|
5514
4925
|
}
|
|
5515
4926
|
var PREFS_KEY = "__nice-action-devtools-prefs";
|
|
5516
4927
|
var DOCKED_HEIGHT_DEFAULT = 320;
|
|
5517
|
-
var DOCKED_WIDTH_DEFAULT =
|
|
4928
|
+
var DOCKED_WIDTH_DEFAULT = 330;
|
|
5518
4929
|
var DETAIL_RATIO_DEFAULT = 0.5;
|
|
5519
|
-
var SANS_FONT2 = "ui-sans-serif, system-ui, sans-serif";
|
|
5520
4930
|
var DOCK_POSITIONS = ["dock-bottom", "dock-top", "dock-left", "dock-right"];
|
|
5521
4931
|
function isDockPosition(value) {
|
|
5522
4932
|
return typeof value === "string" && DOCK_POSITIONS.includes(value);
|
|
@@ -5561,7 +4971,7 @@ function getHandlerKey(entry) {
|
|
|
5561
4971
|
function entriesShareActionInput(a, b) {
|
|
5562
4972
|
if (a.actionId !== b.actionId || a.domain !== b.domain)
|
|
5563
4973
|
return false;
|
|
5564
|
-
return a.inputHash != null && b.inputHash != null ? a.inputHash === b.inputHash :
|
|
4974
|
+
return a.inputHash != null && b.inputHash != null ? a.inputHash === b.inputHash : safeStringify2(a.input, 0) === safeStringify2(b.input, 0);
|
|
5565
4975
|
}
|
|
5566
4976
|
function canGroupWith(a, b) {
|
|
5567
4977
|
if (!entriesShareActionInput(a, b))
|
|
@@ -5592,19 +5002,19 @@ function NiceActionDevtools({ forceEnable, ...props }) {
|
|
|
5592
5002
|
if (!forceEnable && process["env"]["NODE_ENV"] !== "development") {
|
|
5593
5003
|
return null;
|
|
5594
5004
|
}
|
|
5595
|
-
return /* @__PURE__ */
|
|
5005
|
+
return /* @__PURE__ */ jsx20(NiceActionDevtools_Panel, {
|
|
5596
5006
|
...props
|
|
5597
5007
|
});
|
|
5598
5008
|
}
|
|
5599
5009
|
function NiceActionDevtools_Panel({
|
|
5600
5010
|
core,
|
|
5601
|
-
position: defaultPosition = "dock-
|
|
5011
|
+
position: defaultPosition = "dock-right",
|
|
5602
5012
|
initialOpen = false
|
|
5603
5013
|
}) {
|
|
5604
|
-
const [prefs, setPrefsRaw] =
|
|
5605
|
-
const [entries, setEntries] =
|
|
5606
|
-
const [selectedCuid, setSelectedCuid] =
|
|
5607
|
-
|
|
5014
|
+
const [prefs, setPrefsRaw] = useState10(() => readPrefs(defaultPosition, initialOpen));
|
|
5015
|
+
const [entries, setEntries] = useState10([]);
|
|
5016
|
+
const [selectedCuid, setSelectedCuid] = useState10(null);
|
|
5017
|
+
useEffect3(() => core.subscribe(setEntries), [core]);
|
|
5608
5018
|
const groups = useMemo3(() => {
|
|
5609
5019
|
const byCuid = new Map(entries.map((e) => [e.cuid, e]));
|
|
5610
5020
|
const roots = entries.filter((e) => e.parentCuid == null || !byCuid.has(e.parentCuid));
|
|
@@ -5626,16 +5036,24 @@ function NiceActionDevtools_Panel({
|
|
|
5626
5036
|
const setPrefs = (update) => {
|
|
5627
5037
|
setPrefsRaw((prev) => ({ ...prev, ...update }));
|
|
5628
5038
|
};
|
|
5629
|
-
|
|
5039
|
+
useEffect3(() => {
|
|
5630
5040
|
const timer = setTimeout(() => writePrefs(prefs), 250);
|
|
5631
5041
|
return () => clearTimeout(timer);
|
|
5632
5042
|
}, [prefs]);
|
|
5633
|
-
const {
|
|
5043
|
+
const {
|
|
5044
|
+
position,
|
|
5045
|
+
isOpen,
|
|
5046
|
+
dockedHeight,
|
|
5047
|
+
dockedWidth,
|
|
5048
|
+
detailRatio,
|
|
5049
|
+
stayOnLatest,
|
|
5050
|
+
followLatestOnSelect
|
|
5051
|
+
} = prefs;
|
|
5634
5052
|
const dockSide = getDockSide(position);
|
|
5635
5053
|
const isHorizDock = dockSide === "top" || dockSide === "bottom";
|
|
5636
5054
|
const dockedSize = isHorizDock ? dockedHeight : dockedWidth;
|
|
5637
5055
|
const latestCuid = groups.length > 0 ? groups[0].representative.cuid : null;
|
|
5638
|
-
|
|
5056
|
+
useEffect3(() => {
|
|
5639
5057
|
if (stayOnLatest && latestCuid != null)
|
|
5640
5058
|
setSelectedCuid(latestCuid);
|
|
5641
5059
|
}, [stayOnLatest, latestCuid]);
|
|
@@ -5664,7 +5082,7 @@ function NiceActionDevtools_Panel({
|
|
|
5664
5082
|
const panelId = useId();
|
|
5665
5083
|
const [, bumpView] = useReducer((n) => n + 1, 0);
|
|
5666
5084
|
const badge = runningCount > 0 ? `${runningCount}●` : undefined;
|
|
5667
|
-
|
|
5085
|
+
useEffect3(() => {
|
|
5668
5086
|
const unregister = dock.register({
|
|
5669
5087
|
id: panelId,
|
|
5670
5088
|
label: "actions",
|
|
@@ -5681,7 +5099,7 @@ function NiceActionDevtools_Panel({
|
|
|
5681
5099
|
unsubscribe();
|
|
5682
5100
|
};
|
|
5683
5101
|
}, [dock, panelId]);
|
|
5684
|
-
|
|
5102
|
+
useEffect3(() => {
|
|
5685
5103
|
dock.update(panelId, { side: dockSide, size: dockedSize, open: isOpen, badge });
|
|
5686
5104
|
}, [dock, panelId, dockSide, dockedSize, isOpen, badge]);
|
|
5687
5105
|
const view = dock.getView(panelId);
|
|
@@ -5693,7 +5111,7 @@ function NiceActionDevtools_Panel({
|
|
|
5693
5111
|
};
|
|
5694
5112
|
if (!isOpen) {
|
|
5695
5113
|
if (view.isPrimary && !view.anyOpen) {
|
|
5696
|
-
return /* @__PURE__ */
|
|
5114
|
+
return /* @__PURE__ */ jsx20(DevtoolsLauncher, {
|
|
5697
5115
|
items: view.devtools
|
|
5698
5116
|
});
|
|
5699
5117
|
}
|
|
@@ -5745,16 +5163,17 @@ function NiceActionDevtools_Panel({
|
|
|
5745
5163
|
},
|
|
5746
5164
|
childEntriesMap
|
|
5747
5165
|
};
|
|
5748
|
-
return /* @__PURE__ */
|
|
5166
|
+
return /* @__PURE__ */ jsxs18("div", {
|
|
5749
5167
|
id: "__nice-action-devtools-panel",
|
|
5750
5168
|
style: panelStyle,
|
|
5751
5169
|
children: [
|
|
5752
|
-
/* @__PURE__ */
|
|
5170
|
+
/* @__PURE__ */ jsx20(ResizeHandle, {
|
|
5753
5171
|
dockSide,
|
|
5754
5172
|
dockedSize,
|
|
5755
5173
|
onChange: (size) => setPrefs(isHorizDock ? { dockedHeight: size } : { dockedWidth: size })
|
|
5756
5174
|
}),
|
|
5757
|
-
/* @__PURE__ */
|
|
5175
|
+
/* @__PURE__ */ jsx20(PanelHeader, {
|
|
5176
|
+
title: "⚡ action",
|
|
5758
5177
|
position,
|
|
5759
5178
|
onPositionChange: (p) => setPrefs({ position: p }),
|
|
5760
5179
|
onClose: () => setPrefs({ isOpen: false }),
|
|
@@ -5764,7 +5183,7 @@ function NiceActionDevtools_Panel({
|
|
|
5764
5183
|
} : undefined,
|
|
5765
5184
|
openOthers: view.otherClosed
|
|
5766
5185
|
}),
|
|
5767
|
-
/* @__PURE__ */
|
|
5186
|
+
/* @__PURE__ */ jsxs18("div", {
|
|
5768
5187
|
style: {
|
|
5769
5188
|
flex: 1,
|
|
5770
5189
|
display: "flex",
|
|
@@ -5773,7 +5192,7 @@ function NiceActionDevtools_Panel({
|
|
|
5773
5192
|
minHeight: 0
|
|
5774
5193
|
},
|
|
5775
5194
|
children: [
|
|
5776
|
-
/* @__PURE__ */
|
|
5195
|
+
/* @__PURE__ */ jsxs18("div", {
|
|
5777
5196
|
style: {
|
|
5778
5197
|
flexGrow: selectedEntry != null ? 1 - detailRatio : 1,
|
|
5779
5198
|
flexShrink: 1,
|
|
@@ -5785,7 +5204,8 @@ function NiceActionDevtools_Panel({
|
|
|
5785
5204
|
overflow: "hidden"
|
|
5786
5205
|
},
|
|
5787
5206
|
children: [
|
|
5788
|
-
/* @__PURE__ */
|
|
5207
|
+
/* @__PURE__ */ jsx20(FollowLatestToggles, {
|
|
5208
|
+
noun: "action",
|
|
5789
5209
|
stayOnLatest,
|
|
5790
5210
|
onStayOnLatestChange: (next) => setPrefs({ stayOnLatest: next }),
|
|
5791
5211
|
followLatestOnSelect,
|
|
@@ -5797,19 +5217,19 @@ function NiceActionDevtools_Panel({
|
|
|
5797
5217
|
}
|
|
5798
5218
|
}
|
|
5799
5219
|
}),
|
|
5800
|
-
/* @__PURE__ */
|
|
5220
|
+
/* @__PURE__ */ jsx20(ActionList, {
|
|
5801
5221
|
...virtualListProps,
|
|
5802
5222
|
style: { width: "100%", flex: 1, minHeight: 0, overflowY: "auto" }
|
|
5803
5223
|
})
|
|
5804
5224
|
]
|
|
5805
5225
|
}),
|
|
5806
|
-
selectedEntry != null && /* @__PURE__ */
|
|
5226
|
+
selectedEntry != null && /* @__PURE__ */ jsxs18(Fragment10, {
|
|
5807
5227
|
children: [
|
|
5808
|
-
/* @__PURE__ */
|
|
5228
|
+
/* @__PURE__ */ jsx20(SplitHandle, {
|
|
5809
5229
|
horizontal: isHorizDock,
|
|
5810
5230
|
onRatioChange: (ratio) => setPrefs({ detailRatio: ratio })
|
|
5811
5231
|
}),
|
|
5812
|
-
/* @__PURE__ */
|
|
5232
|
+
/* @__PURE__ */ jsx20("div", {
|
|
5813
5233
|
style: {
|
|
5814
5234
|
flexGrow: detailRatio,
|
|
5815
5235
|
flexShrink: 1,
|
|
@@ -5827,7 +5247,7 @@ function NiceActionDevtools_Panel({
|
|
|
5827
5247
|
boxShadow: "inset 0 18px 36px -14px rgba(0,0,0,0.8)"
|
|
5828
5248
|
}
|
|
5829
5249
|
},
|
|
5830
|
-
children: /* @__PURE__ */
|
|
5250
|
+
children: /* @__PURE__ */ jsx20(ActionDetailPanel, {
|
|
5831
5251
|
entry: selectedEntry,
|
|
5832
5252
|
parent: selectedEntryParent,
|
|
5833
5253
|
childEntries: selectedEntryChildren,
|
|
@@ -5841,82 +5261,6 @@ function NiceActionDevtools_Panel({
|
|
|
5841
5261
|
]
|
|
5842
5262
|
});
|
|
5843
5263
|
}
|
|
5844
|
-
function FollowToggles({
|
|
5845
|
-
stayOnLatest,
|
|
5846
|
-
onStayOnLatestChange,
|
|
5847
|
-
followLatestOnSelect,
|
|
5848
|
-
onFollowLatestOnSelectChange
|
|
5849
|
-
}) {
|
|
5850
|
-
return /* @__PURE__ */ jsxs20("div", {
|
|
5851
|
-
style: {
|
|
5852
|
-
display: "flex",
|
|
5853
|
-
flexDirection: "column",
|
|
5854
|
-
flexShrink: 0,
|
|
5855
|
-
paddingBottom: "3px",
|
|
5856
|
-
background: DEVTOOL_SECTION_BACKGROUND,
|
|
5857
|
-
borderBottom: `1px solid ${DEVTOOL_LIST_BASE_BACKGROUND}`
|
|
5858
|
-
},
|
|
5859
|
-
children: [
|
|
5860
|
-
/* @__PURE__ */ jsx23(ToggleLabel, {
|
|
5861
|
-
title: "Auto-select the most recent action so the detail pane keeps showing the latest as new actions land",
|
|
5862
|
-
checked: stayOnLatest,
|
|
5863
|
-
onChange: onStayOnLatestChange,
|
|
5864
|
-
children: "Follow latest"
|
|
5865
|
-
}),
|
|
5866
|
-
/* @__PURE__ */ jsxs20("div", {
|
|
5867
|
-
style: { display: "flex", alignItems: "center", paddingLeft: "12px", marginTop: "-4px" },
|
|
5868
|
-
children: [
|
|
5869
|
-
/* @__PURE__ */ jsx23("span", {
|
|
5870
|
-
"aria-hidden": true,
|
|
5871
|
-
style: {
|
|
5872
|
-
color: DEVTOOL_COLOR_TEXT_MUTED,
|
|
5873
|
-
fontFamily: SANS_FONT2,
|
|
5874
|
-
fontSize: "10px",
|
|
5875
|
-
lineHeight: 1
|
|
5876
|
-
},
|
|
5877
|
-
children: "└"
|
|
5878
|
-
}),
|
|
5879
|
-
/* @__PURE__ */ jsx23(ToggleLabel, {
|
|
5880
|
-
title: "When you click the latest action, turn 'Follow latest' back on so the view resumes tracking new actions. Turn this off to pin exactly to the action you click instead.",
|
|
5881
|
-
checked: followLatestOnSelect,
|
|
5882
|
-
onChange: onFollowLatestOnSelectChange,
|
|
5883
|
-
children: "clicking latest re-follows"
|
|
5884
|
-
})
|
|
5885
|
-
]
|
|
5886
|
-
})
|
|
5887
|
-
]
|
|
5888
|
-
});
|
|
5889
|
-
}
|
|
5890
|
-
function ToggleLabel({
|
|
5891
|
-
checked,
|
|
5892
|
-
onChange,
|
|
5893
|
-
title,
|
|
5894
|
-
children
|
|
5895
|
-
}) {
|
|
5896
|
-
return /* @__PURE__ */ jsxs20("label", {
|
|
5897
|
-
title,
|
|
5898
|
-
style: {
|
|
5899
|
-
display: "flex",
|
|
5900
|
-
alignItems: "center",
|
|
5901
|
-
gap: "6px",
|
|
5902
|
-
padding: "5px 10px",
|
|
5903
|
-
cursor: "pointer",
|
|
5904
|
-
userSelect: "none",
|
|
5905
|
-
color: checked ? DEVTOOL_COLOR_TEXT_SECONDARY : DEVTOOL_COLOR_TEXT_MUTED,
|
|
5906
|
-
fontSize: "10px",
|
|
5907
|
-
fontFamily: SANS_FONT2
|
|
5908
|
-
},
|
|
5909
|
-
children: [
|
|
5910
|
-
/* @__PURE__ */ jsx23("input", {
|
|
5911
|
-
type: "checkbox",
|
|
5912
|
-
checked,
|
|
5913
|
-
onChange: (e) => onChange(e.target.checked),
|
|
5914
|
-
style: { accentColor: DEVTOOL_COLOR_SEMANTIC_SYSTEM, cursor: "pointer", margin: 0 }
|
|
5915
|
-
}),
|
|
5916
|
-
children
|
|
5917
|
-
]
|
|
5918
|
-
});
|
|
5919
|
-
}
|
|
5920
5264
|
export {
|
|
5921
5265
|
NiceActionDevtools,
|
|
5922
5266
|
ActionDevtoolsCore
|