@workflow/web 5.0.0-beta.42 → 5.0.0-beta.44
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/client/assets/{arrow-up-right-D39pnGsD.js → arrow-up-right-AtCpRI70.js} +1 -1
- package/build/client/assets/{highlighted-body-B3W2YXNL-Dc1dLaUr.js → highlighted-body-B3W2YXNL-BPRwlr7r.js} +1 -1
- package/build/client/assets/{home-C6CuMqQu.js → home-BMHSjdeg.js} +3 -3
- package/build/client/assets/{loader-circle-BOxaTUjK.js → loader-circle-abAcDEYl.js} +1 -1
- package/build/client/assets/{manifest-cf88886b.js → manifest-a9a8ec99.js} +1 -1
- package/build/client/assets/{mermaid-3ZIDBTTL-gEw-Ch1C.js → mermaid-3ZIDBTTL-CrfHaTou.js} +368 -294
- package/build/client/assets/{root-BfhMCbkz.js → root-e8qlLJiK.js} +3 -3
- package/build/client/assets/{run-detail-DKz7lp2q.js → run-detail-CrWq-9Tk.js} +172 -56
- package/build/client/assets/{workflow-graph-viewer-CxrWityD.js → workflow-graph-viewer-CFAXloBw.js} +1 -1
- package/build/client/assets/{zstd-browser-decoder-CAEVa0bm.js → zstd-browser-decoder-B9DmHkyE.js} +1 -1
- package/build/server/assets/{app-SrggQnfh.js → app-wed_Qw3X.js} +1773 -856
- package/build/server/assets/{highlighted-body-B3W2YXNL-DMhwZQgG.js → highlighted-body-B3W2YXNL-imLU-Cvz.js} +5 -4
- package/build/server/assets/{index-ByPjQpgH.js → index-Dsr6TVhD.js} +1 -1
- package/build/server/assets/{index-DsnQrgwB.js → index-DxLR22JW.js} +80 -71
- package/build/server/assets/{mermaid-3ZIDBTTL-CK9fLYE8.js → mermaid-3ZIDBTTL-CgaDjNgb.js} +5 -4
- package/build/server/assets/{token-sFDUVNm0.js → token-CA6-cBL4.js} +1 -1
- package/build/server/assets/{token-util-CighjZkT.js → token-util-BNjC27Tj.js} +1 -1
- package/build/server/assets/{websocket-server-BADWB2u5.js → websocket-server-S8DMC969.js} +1 -1
- package/build/server/assets/{wrapper-Bwi-W3ol.js → wrapper-DeK0m2tW.js} +7 -6
- package/build/server/assets/{ws-transport-DaZsgQ2B.js → ws-transport-DdxSF5J6.js} +44 -25
- package/build/server/assets/{zstd-browser-decoder-dRi0VqoM.js → zstd-browser-decoder-Cd_DTxZV.js} +5 -4
- package/build/server/index.js +7 -6
- package/package.json +8 -8
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { r as reactExports, j as jsxRuntimeExports, w as withComponentProps, a as withErrorBoundaryProps, M as Meta, L as Links, S as ScrollRestoration, b as Scripts, O as Outlet, u as useRouteError, i as isRouteErrorResponse, c as Link, d as useNavigate, e as useSearchParams } from "./index-PFjW8YjQ.js";
|
|
2
|
-
import { c as createLucideIcon, u as useServerConfig, T as Tooltip, a as TooltipTrigger, b as TooltipContent, d as runHealthCheck, t as toast, B as Button, e as cn, f as Toaster$1, S as ServerConfigProvider, g as TooltipProvider } from "./mermaid-3ZIDBTTL-
|
|
3
|
-
import { L as LoaderCircle } from "./loader-circle-
|
|
4
|
-
import { A as ArrowUpRight } from "./arrow-up-right-
|
|
2
|
+
import { c as createLucideIcon, u as useServerConfig, T as Tooltip, a as TooltipTrigger, b as TooltipContent, d as runHealthCheck, t as toast, B as Button, e as cn, f as Toaster$1, S as ServerConfigProvider, g as TooltipProvider } from "./mermaid-3ZIDBTTL-CrfHaTou.js";
|
|
3
|
+
import { L as LoaderCircle } from "./loader-circle-abAcDEYl.js";
|
|
4
|
+
import { A as ArrowUpRight } from "./arrow-up-right-AtCpRI70.js";
|
|
5
5
|
var M = (e, i, s, u, m, a, l, h) => {
|
|
6
6
|
let d = document.documentElement, w = ["light", "dark"];
|
|
7
7
|
function p(n) {
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { r as reactExports, j as jsxRuntimeExports, o as reactDomExports, D as ReactDOM, d as useNavigate, e as useSearchParams, c as Link, w as withComponentProps, G as useParams } from "./index-PFjW8YjQ.js";
|
|
2
|
-
import { C as CircleAlert, O as parseStepName, B as parseWorkflowName, Q as ErrorCard, U as format, Z as Zap, S as Send, R as ResolveHookModal, q as ChevronUp, X, N as ErrorBoundary, V as Circle, u as unwrapOrThrow, W as WorkflowWebAPIError, I as unwrapServerActionResult, Y as useEscapeKeydown, t as composeEventHandlers, _ as useCallbackRef, $ as useLayoutEffect2, s as useControllableState, a0 as useId, a1 as createContext2, v as Presence, x as createContextScope, n as hideOthers, o as ReactRemoveScroll, a2 as useFocusGuards, a3 as LAYOUT, a4 as wakeUpRun, l as resumeHook, A as Alert, c as AlertTitle, g as getErrorTitle, d as AlertDescription, e as getErrorMessage, a as Skeleton$1, a5 as RunActionsButtons, F as StatusBadge, h as CopyableText, b as RelativeTime, T as Tabs, K as TabsList, L as TabsTrigger, M as TabsContent, a6 as cancelRun, a7 as recreateRun } from "./workflow-graph-viewer-
|
|
3
|
-
import { c as createLucideIcon, Y as entityEventClass, Z as
|
|
4
|
-
import { A as ArrowUpRight } from "./arrow-up-right-
|
|
2
|
+
import { C as CircleAlert, O as parseStepName, B as parseWorkflowName, Q as ErrorCard, U as format, Z as Zap, S as Send, R as ResolveHookModal, q as ChevronUp, X, N as ErrorBoundary, V as Circle, u as unwrapOrThrow, W as WorkflowWebAPIError, I as unwrapServerActionResult, Y as useEscapeKeydown, t as composeEventHandlers, _ as useCallbackRef, $ as useLayoutEffect2, s as useControllableState, a0 as useId, a1 as createContext2, v as Presence, x as createContextScope, n as hideOthers, o as ReactRemoveScroll, a2 as useFocusGuards, a3 as LAYOUT, a4 as wakeUpRun, l as resumeHook, A as Alert, c as AlertTitle, g as getErrorTitle, d as AlertDescription, e as getErrorMessage, a as Skeleton$1, a5 as RunActionsButtons, F as StatusBadge, h as CopyableText, b as RelativeTime, T as Tabs, K as TabsList, L as TabsTrigger, M as TabsContent, a6 as cancelRun, a7 as recreateRun } from "./workflow-graph-viewer-CFAXloBw.js";
|
|
3
|
+
import { c as createLucideIcon, Y as entityEventClass, Z as isSealedNoopEvent$1, $ as cn, a0 as CopyableDataBlock, a1 as CollapsibleRoot, a2 as CollapsibleTrigger, a3 as CollapsibleContent, a4 as CopyButton, O as cva, a5 as RESERVED_ATTRIBUTE_KEY_PREFIX, a6 as Spinner, a7 as TooltipProvider, a8 as Tooltip, a9 as TooltipTrigger, aa as TooltipContent, ab as ContextCardProvider, h as useToast, ac as Skeleton, ad as DecryptClickContext, ae as Yr, af as isEncryptedMarker, m as ChevronRight, ag as TimestampTooltip, ah as formatDuration, C as Check, l as Copy, ai as DataInspector, aj as _r, ak as isHookLifecycleEventType, al as isTerminalStepEventType, am as isWaitEventType, an as isStepEventType, ao as RunClickContext, ap as StreamClickContext, aq as Collapsible, ar as isExpiredMarker, as as isDoStreamStep, at as extractConversation, au as EncryptedDataBlock, av as getEventDataRefFields, aw as hasEncryptedFields, ax as useSidebarDataOptional, ay as isTerminalWorkflowRunStatus, az as clsx, aA as useActiveSpan, aB as useSidebarData, aC as IconButton, J as ChevronDown, aD as useRowWindow, aE as isSpanDimmedBySearch, aF as ROW_HEIGHT_PX, aG as getSpanDurationMs, aH as isSpanErrored, aI as formatDurationPrecise, aJ as ActiveSpanProvider, aK as useReducedMotion, aL as searchSpans, aM as computeRootBounds, aN as computeTimeMarkers, aO as clampViewportToRoot, aP as getHighResInMs, aQ as scrollRowIntoView, aR as TIMELINE_PADDING_PX, aS as Minimap, aT as Timeline, aU as TimelineHeader, aV as wheelZoomScaleFactor, aW as wheelDeltaToPixels, aX as SidebarDataProvider, aY as fetchHook, n as fetchEvents, aZ as hydrateResourceIOAsync, N as fetchRun, a_ as fetchStep, a$ as hydrateResourceIO, b0 as fetchStreams, b1 as apiBase, b2 as Slot, L as useComposedRefs, b3 as Slottable, e as cn$1, b4 as buttonVariants, b5 as fetchEvent, b6 as fetchEventsByCorrelationId, b7 as isEncryptedData, b8 as hydrateData, b9 as decrypt, ba as deriveRunPayloadKeys, bb as getWebRevivers, T as Tooltip$1, a as TooltipTrigger$1, b as TooltipContent$1, bc as LIVE_UPDATE_INTERVAL_MS$1, u as useServerConfig, bd as getEncryptionKeyForRun, t as toast, be as StreamViewerSkeleton, bf as Lock, bg as StreamViewer } from "./mermaid-3ZIDBTTL-CrfHaTou.js";
|
|
4
|
+
import { A as ArrowUpRight } from "./arrow-up-right-AtCpRI70.js";
|
|
5
5
|
/**
|
|
6
6
|
* @license lucide-react v0.575.0 - ISC
|
|
7
7
|
*
|
|
@@ -194,6 +194,10 @@ function looksLikeWorkflowIdSearchInput(query) {
|
|
|
194
194
|
}
|
|
195
195
|
return /\d/.test(trimmed);
|
|
196
196
|
}
|
|
197
|
+
const SEALED_EVENT_MESSAGE = "No-op events are written by the backend to seal an abandoned log position";
|
|
198
|
+
function isSealedNoopEvent(event) {
|
|
199
|
+
return isSealedNoopEvent$1(event);
|
|
200
|
+
}
|
|
197
201
|
const ELLIPSIS = "…";
|
|
198
202
|
const MIN_START = 3;
|
|
199
203
|
const MIN_END = 3;
|
|
@@ -324,6 +328,33 @@ function getMiddleTruncateCopyTextFromSelectionText({ prefixText, selectionText,
|
|
|
324
328
|
});
|
|
325
329
|
return mappedText === null ? null : leading + mappedText + trailing;
|
|
326
330
|
}
|
|
331
|
+
const pendingMeasurements = /* @__PURE__ */ new Map();
|
|
332
|
+
let measurementFrame = 0;
|
|
333
|
+
function flushMeasurements() {
|
|
334
|
+
measurementFrame = 0;
|
|
335
|
+
const reads = [...pendingMeasurements.values()];
|
|
336
|
+
pendingMeasurements.clear();
|
|
337
|
+
const measures = reads.map((read) => read());
|
|
338
|
+
for (const measure of measures) {
|
|
339
|
+
measure == null ? void 0 : measure();
|
|
340
|
+
}
|
|
341
|
+
}
|
|
342
|
+
function scheduleMeasurement(key, { read, measure }) {
|
|
343
|
+
pendingMeasurements.set(key, () => {
|
|
344
|
+
const measurement = read();
|
|
345
|
+
return measurement === null ? null : () => measure(measurement);
|
|
346
|
+
});
|
|
347
|
+
if (measurementFrame === 0) {
|
|
348
|
+
measurementFrame = requestAnimationFrame(flushMeasurements);
|
|
349
|
+
}
|
|
350
|
+
}
|
|
351
|
+
function cancelMeasurement(key) {
|
|
352
|
+
pendingMeasurements.delete(key);
|
|
353
|
+
if (pendingMeasurements.size === 0 && measurementFrame !== 0) {
|
|
354
|
+
cancelAnimationFrame(measurementFrame);
|
|
355
|
+
measurementFrame = 0;
|
|
356
|
+
}
|
|
357
|
+
}
|
|
327
358
|
const useIsomorphicLayoutEffect = typeof window === "undefined" ? reactExports.useEffect : reactExports.useLayoutEffect;
|
|
328
359
|
function createFullState(value, graphemes) {
|
|
329
360
|
return {
|
|
@@ -341,7 +372,13 @@ function useMiddleTruncate(value) {
|
|
|
341
372
|
const ref = reactExports.useRef(null);
|
|
342
373
|
const measureRef = reactExports.useRef(null);
|
|
343
374
|
const [state, setState] = reactExports.useState(() => fullState);
|
|
344
|
-
const
|
|
375
|
+
const measurementKeyRef = reactExports.useRef({});
|
|
376
|
+
const textMeasurementCacheRef = reactExports.useRef({
|
|
377
|
+
typography: "",
|
|
378
|
+
value,
|
|
379
|
+
widths: /* @__PURE__ */ new Map()
|
|
380
|
+
});
|
|
381
|
+
const lastMeasurementRef = reactExports.useRef(null);
|
|
345
382
|
const updateState = reactExports.useCallback((nextState) => {
|
|
346
383
|
setState((currentState) => {
|
|
347
384
|
if (currentState.displayText === nextState.displayText && currentState.isTruncated === nextState.isTruncated && currentState.prefixText === nextState.prefixText && currentState.prefixGraphemeCount === nextState.prefixGraphemeCount && currentState.suffixText === nextState.suffixText && currentState.suffixGraphemeCount === nextState.suffixGraphemeCount) {
|
|
@@ -350,26 +387,68 @@ function useMiddleTruncate(value) {
|
|
|
350
387
|
return nextState;
|
|
351
388
|
});
|
|
352
389
|
}, []);
|
|
353
|
-
const
|
|
390
|
+
const readMeasurement = reactExports.useCallback(() => {
|
|
354
391
|
const el = ref.current;
|
|
355
392
|
const measureEl = measureRef.current;
|
|
356
393
|
if (!el || !measureEl)
|
|
394
|
+
return null;
|
|
395
|
+
const availableWidth = el.clientWidth;
|
|
396
|
+
const style = getComputedStyle(measureEl);
|
|
397
|
+
return {
|
|
398
|
+
availableWidth,
|
|
399
|
+
typography: [
|
|
400
|
+
style.fontFamily,
|
|
401
|
+
style.fontFeatureSettings,
|
|
402
|
+
style.fontKerning,
|
|
403
|
+
style.fontSize,
|
|
404
|
+
style.fontStretch,
|
|
405
|
+
style.fontStyle,
|
|
406
|
+
style.fontVariationSettings,
|
|
407
|
+
style.fontWeight,
|
|
408
|
+
style.letterSpacing,
|
|
409
|
+
style.textTransform
|
|
410
|
+
].join("\0")
|
|
411
|
+
};
|
|
412
|
+
}, []);
|
|
413
|
+
const recalculate = reactExports.useCallback(({ availableWidth, typography }) => {
|
|
414
|
+
const measureEl = measureRef.current;
|
|
415
|
+
if (!measureEl)
|
|
416
|
+
return;
|
|
417
|
+
const lastMeasurement = lastMeasurementRef.current;
|
|
418
|
+
if ((lastMeasurement == null ? void 0 : lastMeasurement.availableWidth) === availableWidth && lastMeasurement.typography === typography && lastMeasurement.value === value) {
|
|
357
419
|
return;
|
|
358
|
-
|
|
359
|
-
|
|
420
|
+
}
|
|
421
|
+
lastMeasurementRef.current = {
|
|
422
|
+
availableWidth,
|
|
423
|
+
typography,
|
|
424
|
+
value
|
|
425
|
+
};
|
|
426
|
+
if (availableWidth <= 0) {
|
|
360
427
|
updateState(fullState);
|
|
361
428
|
return;
|
|
362
429
|
}
|
|
430
|
+
const textMeasurementCache = textMeasurementCacheRef.current;
|
|
431
|
+
if (textMeasurementCache.typography !== typography || textMeasurementCache.value !== value) {
|
|
432
|
+
textMeasurementCache.typography = typography;
|
|
433
|
+
textMeasurementCache.value = value;
|
|
434
|
+
textMeasurementCache.widths.clear();
|
|
435
|
+
}
|
|
363
436
|
const measure = (text) => {
|
|
437
|
+
const cachedWidth = textMeasurementCache.widths.get(text);
|
|
438
|
+
if (cachedWidth !== void 0) {
|
|
439
|
+
return cachedWidth;
|
|
440
|
+
}
|
|
364
441
|
measureEl.textContent = text;
|
|
365
|
-
|
|
442
|
+
const width = measureEl.scrollWidth;
|
|
443
|
+
textMeasurementCache.widths.set(text, width);
|
|
444
|
+
return width;
|
|
366
445
|
};
|
|
367
446
|
const fullWidth = measure(value);
|
|
368
|
-
if (fullWidth <=
|
|
447
|
+
if (fullWidth <= availableWidth) {
|
|
369
448
|
updateState(fullState);
|
|
370
449
|
return;
|
|
371
450
|
}
|
|
372
|
-
const result = middleTruncate(graphemes,
|
|
451
|
+
const result = middleTruncate(graphemes, availableWidth, measure, fullWidth);
|
|
373
452
|
updateState({
|
|
374
453
|
displayText: result.text,
|
|
375
454
|
isTruncated: result.truncated,
|
|
@@ -380,33 +459,45 @@ function useMiddleTruncate(value) {
|
|
|
380
459
|
});
|
|
381
460
|
}, [fullState, graphemes, updateState, value]);
|
|
382
461
|
useIsomorphicLayoutEffect(() => {
|
|
383
|
-
|
|
384
|
-
|
|
462
|
+
const measurement = readMeasurement();
|
|
463
|
+
if (measurement) {
|
|
464
|
+
recalculate(measurement);
|
|
465
|
+
}
|
|
466
|
+
}, [readMeasurement, recalculate]);
|
|
385
467
|
reactExports.useEffect(() => {
|
|
386
468
|
var _a;
|
|
387
469
|
const el = ref.current;
|
|
388
470
|
if (!el)
|
|
389
471
|
return;
|
|
390
|
-
const
|
|
391
|
-
|
|
392
|
-
|
|
472
|
+
const measurementKey = measurementKeyRef.current;
|
|
473
|
+
const scheduleRecalculation = () => {
|
|
474
|
+
scheduleMeasurement(measurementKey, {
|
|
475
|
+
read: readMeasurement,
|
|
476
|
+
measure: recalculate
|
|
477
|
+
});
|
|
393
478
|
};
|
|
394
|
-
const ro = typeof ResizeObserver !== "undefined" ? new ResizeObserver(
|
|
479
|
+
const ro = typeof ResizeObserver !== "undefined" ? new ResizeObserver(scheduleRecalculation) : null;
|
|
395
480
|
ro == null ? void 0 : ro.observe(el);
|
|
396
|
-
|
|
481
|
+
if (!ro) {
|
|
482
|
+
window.addEventListener("resize", scheduleRecalculation);
|
|
483
|
+
}
|
|
397
484
|
const onFontsLoaded = () => {
|
|
398
|
-
|
|
485
|
+
textMeasurementCacheRef.current.widths.clear();
|
|
486
|
+
lastMeasurementRef.current = null;
|
|
487
|
+
scheduleRecalculation();
|
|
399
488
|
};
|
|
400
489
|
const fontSet = "fonts" in document ? document.fonts : null;
|
|
401
490
|
(_a = fontSet == null ? void 0 : fontSet.addEventListener) == null ? void 0 : _a.call(fontSet, "loadingdone", onFontsLoaded);
|
|
402
491
|
return () => {
|
|
403
492
|
var _a2;
|
|
404
493
|
ro == null ? void 0 : ro.disconnect();
|
|
405
|
-
|
|
406
|
-
|
|
494
|
+
if (!ro) {
|
|
495
|
+
window.removeEventListener("resize", scheduleRecalculation);
|
|
496
|
+
}
|
|
497
|
+
cancelMeasurement(measurementKey);
|
|
407
498
|
(_a2 = fontSet == null ? void 0 : fontSet.removeEventListener) == null ? void 0 : _a2.call(fontSet, "loadingdone", onFontsLoaded);
|
|
408
499
|
};
|
|
409
|
-
}, [recalculate]);
|
|
500
|
+
}, [readMeasurement, recalculate]);
|
|
410
501
|
return {
|
|
411
502
|
ref,
|
|
412
503
|
measureRef,
|
|
@@ -422,12 +513,18 @@ function getRangeOffsets(container, range) {
|
|
|
422
513
|
if (!container.contains(range.startContainer) || !container.contains(range.endContainer)) {
|
|
423
514
|
return null;
|
|
424
515
|
}
|
|
425
|
-
|
|
426
|
-
|
|
427
|
-
|
|
428
|
-
|
|
429
|
-
|
|
430
|
-
|
|
516
|
+
let startRange;
|
|
517
|
+
let endRange;
|
|
518
|
+
try {
|
|
519
|
+
startRange = document.createRange();
|
|
520
|
+
startRange.selectNodeContents(container);
|
|
521
|
+
startRange.setEnd(range.startContainer, range.startOffset);
|
|
522
|
+
endRange = document.createRange();
|
|
523
|
+
endRange.selectNodeContents(container);
|
|
524
|
+
endRange.setEnd(range.endContainer, range.endOffset);
|
|
525
|
+
} catch {
|
|
526
|
+
return null;
|
|
527
|
+
}
|
|
431
528
|
return {
|
|
432
529
|
end: endRange.toString().length,
|
|
433
530
|
start: startRange.toString().length
|
|
@@ -449,7 +546,7 @@ function MiddleTruncate({ value, className, onCopy: onCopyProp, ...props }) {
|
|
|
449
546
|
const range = selection.getRangeAt(0);
|
|
450
547
|
const visibleEl = visibleRef.current;
|
|
451
548
|
let copyText = null;
|
|
452
|
-
if (e.currentTarget.contains(range.startContainer) && e.currentTarget.contains(range.endContainer) && visibleEl) {
|
|
549
|
+
if (selectionText.includes(ELLIPSIS) && e.currentTarget.contains(range.startContainer) && e.currentTarget.contains(range.endContainer) && visibleEl) {
|
|
453
550
|
const offsets = getRangeOffsets(visibleEl, range);
|
|
454
551
|
if (offsets) {
|
|
455
552
|
copyText = getMiddleTruncateCopyText({
|
|
@@ -578,14 +675,14 @@ function AttrSetEventBlock({ data }) {
|
|
|
578
675
|
const writerLabel = describeWriter(data.writer);
|
|
579
676
|
return jsxRuntimeExports.jsxs("div", { className: "flex flex-col px-3 py-1", children: [jsxRuntimeExports.jsx("div", { className: "flex flex-col", children: data.changes.map((change, index) => jsxRuntimeExports.jsx(AttributeRow, { attributeKey: change.key, removed: change.value === null, value: change.value ?? void 0 }, `${change.key}:${index}`)) }), writerLabel && jsxRuntimeExports.jsx("div", { className: "border-gray-alpha-400 border-t py-1.5 text-gray-700 text-label-12", children: writerLabel })] });
|
|
580
677
|
}
|
|
581
|
-
const STYLES$2 = `.wf-decrypt-btn{appearance:none;-webkit-appearance:none;border:none;display:inline-flex;align-items:center;justify-content:center;height:40px;padding:0 12px;border-radius:6px;font-size:14px;font-weight:500;line-height:20px;cursor:pointer;white-space:nowrap;gap:6px;transition:background 150ms}.wf-decrypt-idle{color:var(--ds-gray-1000);background:var(--ds-background-100);box-shadow:0 0 0 1px var(--ds-gray-400)}.wf-decrypt-idle:hover{background:var(--ds-gray-alpha-200)}.wf-decrypt-done{color:var(--ds-green-900);background:var(--ds-green-100);box-shadow:0 0 0 1px var(--ds-green-400);cursor:default}`;
|
|
582
|
-
function DecryptButton({ decrypted = false, loading = false, onClick }) {
|
|
583
|
-
return jsxRuntimeExports.jsxs(jsxRuntimeExports.Fragment, { children: [jsxRuntimeExports.jsx("style", { dangerouslySetInnerHTML: { __html: STYLES$2 } }), jsxRuntimeExports.jsxs("button", { type: "button", onClick: decrypted ? void 0 : onClick, disabled: decrypted || loading, className: `wf-decrypt-btn ${decrypted ? "wf-decrypt-done" : "wf-decrypt-idle"}`, children: [loading ? jsxRuntimeExports.jsx(Spinner, { size: 14 }) : decrypted ? jsxRuntimeExports.jsxs("svg", { width: 14, height: 14, viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", strokeWidth: 2, strokeLinecap: "round", strokeLinejoin: "round", children: [jsxRuntimeExports.jsx("rect", { x: "3", y: "11", width: "18", height: "11", rx: "2", ry: "2" }), jsxRuntimeExports.jsx("path", { d: "M7 11V7a5 5 0 0 1 9.9-1" })] }) : jsxRuntimeExports.jsxs("svg", { width: 14, height: 14, viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", strokeWidth: 2, strokeLinecap: "round", strokeLinejoin: "round", children: [jsxRuntimeExports.jsx("rect", { x: "3", y: "11", width: "18", height: "11", rx: "2", ry: "2" }), jsxRuntimeExports.jsx("path", { d: "M7 11V7a5 5 0 0 1 10 0v4" })] }), loading ? "Decrypting…" : decrypted ? "Decrypted" : "Decrypt"] })] });
|
|
678
|
+
const STYLES$2 = `.wf-decrypt-btn{appearance:none;-webkit-appearance:none;border:none;display:inline-flex;align-items:center;justify-content:center;height:40px;padding:0 12px;border-radius:6px;font-size:14px;font-weight:500;line-height:20px;cursor:pointer;white-space:nowrap;gap:6px;transition:background 150ms}.wf-decrypt-idle{color:var(--ds-gray-1000);background:var(--ds-background-100);box-shadow:0 0 0 1px var(--ds-gray-400)}.wf-decrypt-idle:hover{background:var(--ds-gray-alpha-200)}.wf-decrypt-btn:disabled{cursor:not-allowed;opacity:.5}.wf-decrypt-done{color:var(--ds-green-900);background:var(--ds-green-100);box-shadow:0 0 0 1px var(--ds-green-400);cursor:default}`;
|
|
679
|
+
function DecryptButton({ decrypted = false, loading = false, disabled = false, disabledReason, onClick }) {
|
|
680
|
+
return jsxRuntimeExports.jsxs(jsxRuntimeExports.Fragment, { children: [jsxRuntimeExports.jsx("style", { dangerouslySetInnerHTML: { __html: STYLES$2 } }), jsxRuntimeExports.jsxs("button", { type: "button", onClick: decrypted ? void 0 : onClick, disabled: decrypted || loading || disabled, title: disabled ? disabledReason : void 0, className: `wf-decrypt-btn ${decrypted ? "wf-decrypt-done" : "wf-decrypt-idle"}`, children: [loading ? jsxRuntimeExports.jsx(Spinner, { size: 14 }) : decrypted ? jsxRuntimeExports.jsxs("svg", { width: 14, height: 14, viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", strokeWidth: 2, strokeLinecap: "round", strokeLinejoin: "round", children: [jsxRuntimeExports.jsx("rect", { x: "3", y: "11", width: "18", height: "11", rx: "2", ry: "2" }), jsxRuntimeExports.jsx("path", { d: "M7 11V7a5 5 0 0 1 9.9-1" })] }) : jsxRuntimeExports.jsxs("svg", { width: 14, height: 14, viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", strokeWidth: 2, strokeLinecap: "round", strokeLinejoin: "round", children: [jsxRuntimeExports.jsx("rect", { x: "3", y: "11", width: "18", height: "11", rx: "2", ry: "2" }), jsxRuntimeExports.jsx("path", { d: "M7 11V7a5 5 0 0 1 10 0v4" })] }), loading ? "Decrypting…" : decrypted ? "Decrypted" : "Decrypt"] })] });
|
|
584
681
|
}
|
|
585
|
-
function
|
|
586
|
-
if (!
|
|
682
|
+
function EventNoticeTooltip({ notice, children }) {
|
|
683
|
+
if (!notice)
|
|
587
684
|
return children;
|
|
588
|
-
return jsxRuntimeExports.jsx(TooltipProvider, { delayDuration: 300, children: jsxRuntimeExports.jsxs(Tooltip, { children: [jsxRuntimeExports.jsx(TooltipTrigger, { asChild: true, children }), jsxRuntimeExports.jsx(TooltipContent, { className: "max-w-[264px] leading-snug", collisionPadding: 8, side: "top", children:
|
|
685
|
+
return jsxRuntimeExports.jsx(TooltipProvider, { delayDuration: 300, children: jsxRuntimeExports.jsxs(Tooltip, { children: [jsxRuntimeExports.jsx(TooltipTrigger, { asChild: true, children }), jsxRuntimeExports.jsx(TooltipContent, { className: "max-w-[264px] leading-snug", collisionPadding: 8, side: "top", children: notice })] }) });
|
|
589
686
|
}
|
|
590
687
|
function isStructuredError(value) {
|
|
591
688
|
return value != null && typeof value === "object" && (typeof value.message === "string" || typeof value.stack === "string");
|
|
@@ -610,7 +707,7 @@ ${stack}` : body;
|
|
|
610
707
|
borderBottom: "1px solid var(--ds-red-400)"
|
|
611
708
|
}, children: [jsxRuntimeExports.jsx(CircleAlert, { className: "h-4 w-4 shrink-0" }), jsxRuntimeExports.jsx("p", {
|
|
612
709
|
className: "text-label-12 font-semibold m-0 truncate",
|
|
613
|
-
// The full message or stack is in the body below; the header
|
|
710
|
+
// The full message or stack is in the body below; the header
|
|
614
711
|
// shows the first line, single-line, with overflow
|
|
615
712
|
// ellipsised so a long title doesn't push the copy button or
|
|
616
713
|
// wrap into the framed hint/docs lines.
|
|
@@ -702,6 +799,9 @@ function getStatusDotColor(eventType) {
|
|
|
702
799
|
if (eventType === "step_started" || eventType === "run_started" || eventType === "workflow_started" || eventType === "hook_received") {
|
|
703
800
|
return "var(--ds-blue-700)";
|
|
704
801
|
}
|
|
802
|
+
if (eventType === "noop") {
|
|
803
|
+
return "var(--ds-gray-500)";
|
|
804
|
+
}
|
|
705
805
|
return "var(--ds-gray-600)";
|
|
706
806
|
}
|
|
707
807
|
function buildNameMaps(events, run) {
|
|
@@ -711,7 +811,7 @@ function buildNameMaps(events, run) {
|
|
|
711
811
|
for (const event of events) {
|
|
712
812
|
if (event.eventType === "step_created" && event.correlationId) {
|
|
713
813
|
const stepName = ((_a = event.eventData) == null ? void 0 : _a.stepName) ?? "";
|
|
714
|
-
const parsed = parseStepName(String(stepName));
|
|
814
|
+
const parsed = parseStepName(String(stepName)) ?? parseWorkflowName(String(stepName));
|
|
715
815
|
correlationNameMap.set(event.correlationId, (parsed == null ? void 0 : parsed.shortName) ?? stepName);
|
|
716
816
|
}
|
|
717
817
|
}
|
|
@@ -770,9 +870,9 @@ function hasEncryptedValues(data) {
|
|
|
770
870
|
return false;
|
|
771
871
|
}
|
|
772
872
|
function isRunLevel(eventType) {
|
|
773
|
-
return eventType === "run_created" || eventType === "run_started" || eventType === "run_completed" || eventType === "run_failed" || eventType === "run_cancelled" || eventType === "workflow_started" || eventType === "workflow_completed" || eventType === "workflow_failed" || // attr_set
|
|
774
|
-
// so
|
|
775
|
-
eventType === "attr_set";
|
|
873
|
+
return eventType === "run_created" || eventType === "run_started" || eventType === "run_completed" || eventType === "run_failed" || eventType === "run_cancelled" || eventType === "workflow_started" || eventType === "workflow_completed" || eventType === "workflow_failed" || // attr_set and noop carry a dedup/positional correlationId rather than a
|
|
874
|
+
// child entity ID, so they group and label with the run itself.
|
|
875
|
+
eventType === "attr_set" || eventType === "noop";
|
|
776
876
|
}
|
|
777
877
|
const GUTTER_WIDTH = 36;
|
|
778
878
|
const LANE_X = 20;
|
|
@@ -980,6 +1080,8 @@ function EventRow$1({ event, index, isFirst, isLast, isExpanded, onToggleExpand,
|
|
|
980
1080
|
}
|
|
981
1081
|
}, []);
|
|
982
1082
|
const rowGroupKey = isRunLevel(event.eventType) ? "__run__" : event.correlationId ?? void 0;
|
|
1083
|
+
const isSealed = isSealedNoopEvent(event);
|
|
1084
|
+
const rowNotice = isDuplicate ? DUPLICATE_EVENT_MESSAGE : isSealed ? SEALED_EVENT_MESSAGE : void 0;
|
|
983
1085
|
const statusDotColor = getStatusDotColor(event.eventType);
|
|
984
1086
|
const createdAt = new Date(event.createdAt);
|
|
985
1087
|
const occurredAt = parseEventDate(event.occurredAt);
|
|
@@ -1087,8 +1189,8 @@ function EventRow$1({ event, index, isFirst, isLast, isExpanded, onToggleExpand,
|
|
|
1087
1189
|
}, children: jsxRuntimeExports.jsx(ChevronRight, { className: "h-3 w-3 transition-transform", style: {
|
|
1088
1190
|
color: "var(--ds-gray-900)",
|
|
1089
1191
|
transform: isExpanded ? "rotate(90deg)" : "rotate(0deg)"
|
|
1090
|
-
} }) }), showSeparateEventOccurrenceTimestamps && jsxRuntimeExports.jsx("div", { className: "tabular-nums min-w-0 px-4", style: { color: "var(--ds-gray-900)", flex: "2 1 0%" }, children: occurredAt ? jsxRuntimeExports.jsx(TimestampTooltip, { date: occurredAt, children: jsxRuntimeExports.jsx("span", { children: formatEventTime(occurredAt) }) }) : "-" }), jsxRuntimeExports.jsx("div", { className: "tabular-nums min-w-0 px-4", style: { color: "var(--ds-gray-900)", flex: "2 1 0%" }, children: jsxRuntimeExports.jsx(TimestampTooltip, { date: displayedCreatedAt, children: jsxRuntimeExports.jsx("span", { children: formatEventTime(displayedCreatedAt) }) }) }), jsxRuntimeExports.jsx("div", { className: "font-medium min-w-0 px-4", style: { flex: "2 1 0%" }, children: jsxRuntimeExports.jsx(
|
|
1091
|
-
color:
|
|
1192
|
+
} }) }), showSeparateEventOccurrenceTimestamps && jsxRuntimeExports.jsx("div", { className: "tabular-nums min-w-0 px-4", style: { color: "var(--ds-gray-900)", flex: "2 1 0%" }, children: occurredAt ? jsxRuntimeExports.jsx(TimestampTooltip, { date: occurredAt, children: jsxRuntimeExports.jsx("span", { children: formatEventTime(occurredAt) }) }) : "-" }), jsxRuntimeExports.jsx("div", { className: "tabular-nums min-w-0 px-4", style: { color: "var(--ds-gray-900)", flex: "2 1 0%" }, children: jsxRuntimeExports.jsx(TimestampTooltip, { date: displayedCreatedAt, children: jsxRuntimeExports.jsx("span", { children: formatEventTime(displayedCreatedAt) }) }) }), jsxRuntimeExports.jsx("div", { className: "font-medium min-w-0 px-4", style: { flex: "2 1 0%" }, children: jsxRuntimeExports.jsx(EventNoticeTooltip, { notice: rowNotice, children: jsxRuntimeExports.jsxs("span", { className: "inline-flex items-center gap-1.5", style: {
|
|
1193
|
+
color: rowNotice ? "var(--ds-gray-700)" : "var(--ds-gray-900)"
|
|
1092
1194
|
}, children: [jsxRuntimeExports.jsxs("span", { style: {
|
|
1093
1195
|
position: "relative",
|
|
1094
1196
|
display: "inline-flex",
|
|
@@ -1118,7 +1220,7 @@ function EventRow$1({ event, index, isFirst, isLast, isExpanded, onToggleExpand,
|
|
|
1118
1220
|
color: "var(--ds-red-900)"
|
|
1119
1221
|
}, children: loadError }) : isLoading || loadedEventData === null && !hasAttemptedLoad && event.correlationId ? jsxRuntimeExports.jsxs("div", { className: "flex flex-col gap-2 p-3", children: [jsxRuntimeExports.jsx(Skeleton, { className: "h-3", style: { width: "75%" } }), jsxRuntimeExports.jsx(Skeleton, { className: "h-3", style: { width: "50%" } }), jsxRuntimeExports.jsx(Skeleton, { className: "h-3", style: { width: "60%" } })] }) : jsxRuntimeExports.jsx("div", { className: "p-2 text-label-12", style: { color: "var(--ds-gray-900)" }, children: "No data" })] })] })] });
|
|
1120
1222
|
}
|
|
1121
|
-
function EventListViewInner({ events, run, onLoadEventData, hasMoreEvents = false, isLoadingMoreEvents = false, onLoadMoreEvents, encryptionKey, isLoading = false, sortOrder: sortOrderProp, onSortOrderChange, onDecrypt, isDecrypting = false, hasEncryptedData: hasEncryptedDataProp = false, onExactIdSearch, showSeparateEventOccurrenceTimestamps = false }) {
|
|
1223
|
+
function EventListViewInner({ events, run, onLoadEventData, hasMoreEvents = false, isLoadingMoreEvents = false, onLoadMoreEvents, encryptionKey, isLoading = false, sortOrder: sortOrderProp, onSortOrderChange, onDecrypt, isDecrypting = false, isDecryptDisabled = false, decryptDisabledReason, hasEncryptedData: hasEncryptedDataProp = false, onExactIdSearch, showSeparateEventOccurrenceTimestamps = false }) {
|
|
1122
1224
|
const toast2 = useToast();
|
|
1123
1225
|
const [internalSortOrder, setInternalSortOrder] = reactExports.useState("asc");
|
|
1124
1226
|
const effectiveSortOrder = sortOrderProp ?? internalSortOrder;
|
|
@@ -1336,7 +1438,12 @@ function EventListViewInner({ events, run, onLoadEventData, hasMoreEvents = fals
|
|
|
1336
1438
|
if (isInitialLoad) {
|
|
1337
1439
|
return jsxRuntimeExports.jsxs("div", { className: "h-full flex flex-col overflow-hidden", children: [jsxRuntimeExports.jsx("div", { style: { padding: 6 }, children: jsxRuntimeExports.jsx(Skeleton, { style: { height: 40, borderRadius: 6 } }) }), jsxRuntimeExports.jsxs("div", { className: "flex items-center gap-0 h-10 border-b flex-shrink-0", style: { borderColor: "var(--ds-gray-alpha-200)" }, children: [jsxRuntimeExports.jsx("div", { className: "flex-shrink-0", style: { width: GUTTER_WIDTH } }), jsxRuntimeExports.jsx("div", { className: "w-5 flex-shrink-0" }), jsxRuntimeExports.jsx("div", { className: "min-w-0 px-4", style: { flex: "2 1 0%" }, children: jsxRuntimeExports.jsx(Skeleton, { className: "h-3", style: { width: 40 } }) }), jsxRuntimeExports.jsx("div", { className: "min-w-0 px-4", style: { flex: "2 1 0%" }, children: jsxRuntimeExports.jsx(Skeleton, { className: "h-3", style: { width: 72 } }) }), jsxRuntimeExports.jsx("div", { className: "min-w-0 px-4", style: { flex: "2 1 0%" }, children: jsxRuntimeExports.jsx(Skeleton, { className: "h-3", style: { width: 44 } }) }), jsxRuntimeExports.jsx("div", { className: "min-w-0 px-4", style: { flex: "3 1 0%" }, children: jsxRuntimeExports.jsx(Skeleton, { className: "h-3", style: { width: 92 } }) }), jsxRuntimeExports.jsx("div", { className: "min-w-0 px-4", style: { flex: "3 1 0%" }, children: jsxRuntimeExports.jsx(Skeleton, { className: "h-3", style: { width: 60 } }) })] }), jsxRuntimeExports.jsx(RowsSkeleton, {})] });
|
|
1338
1440
|
}
|
|
1339
|
-
return jsxRuntimeExports.jsx(DecryptClickContext.Provider, { value: onDecrypt ? {
|
|
1441
|
+
return jsxRuntimeExports.jsx(DecryptClickContext.Provider, { value: onDecrypt ? {
|
|
1442
|
+
onDecrypt,
|
|
1443
|
+
isDecrypting,
|
|
1444
|
+
isDecryptDisabled,
|
|
1445
|
+
decryptDisabledReason
|
|
1446
|
+
} : void 0, children: jsxRuntimeExports.jsxs("div", { className: "h-full flex flex-col overflow-hidden", children: [jsxRuntimeExports.jsx("style", { children: `@keyframes workflow-dot-pulse{0%{transform:scale(1);opacity:.7}70%,100%{transform:scale(2.2);opacity:0}}` }), jsxRuntimeExports.jsxs("div", { style: {
|
|
1340
1447
|
padding: 6,
|
|
1341
1448
|
backgroundColor: "var(--ds-background-100)",
|
|
1342
1449
|
display: "flex",
|
|
@@ -1371,7 +1478,7 @@ function EventListViewInner({ events, run, onLoadEventData, hasMoreEvents = fals
|
|
|
1371
1478
|
width: "100%",
|
|
1372
1479
|
opacity: onExactIdSearch ? 1 : 0.5,
|
|
1373
1480
|
cursor: onExactIdSearch ? "text" : "not-allowed"
|
|
1374
|
-
} })] }), jsxRuntimeExports.jsx(MenuDropdown, { options: SORT_OPTIONS, value: effectiveSortOrder, onChange: handleSortOrderChange }), (hasEncryptedData || encryptionKey) && onDecrypt && jsxRuntimeExports.jsx(DecryptButton, { decrypted: !!encryptionKey, loading: isDecrypting, onClick: onDecrypt })] }), jsxRuntimeExports.jsxs("div", { className: "flex items-center gap-0 text-label-13 font-medium h-10 border-b flex-shrink-0", style: {
|
|
1481
|
+
} })] }), jsxRuntimeExports.jsx(MenuDropdown, { options: SORT_OPTIONS, value: effectiveSortOrder, onChange: handleSortOrderChange }), (hasEncryptedData || encryptionKey) && onDecrypt && jsxRuntimeExports.jsx(DecryptButton, { decrypted: !!encryptionKey, loading: isDecrypting, disabled: isDecryptDisabled, disabledReason: decryptDisabledReason, onClick: onDecrypt })] }), jsxRuntimeExports.jsxs("div", { className: "flex items-center gap-0 text-label-13 font-medium h-10 border-b flex-shrink-0", style: {
|
|
1375
1482
|
borderColor: "var(--ds-gray-alpha-200)",
|
|
1376
1483
|
color: "var(--ds-gray-900)",
|
|
1377
1484
|
backgroundColor: "var(--ds-background-100)"
|
|
@@ -1663,7 +1770,7 @@ function stepToSpan(stepEvents, maxEndTime) {
|
|
|
1663
1770
|
if (!step) {
|
|
1664
1771
|
return null;
|
|
1665
1772
|
}
|
|
1666
|
-
const parsedName = parseStepName(String(step.stepName));
|
|
1773
|
+
const parsedName = parseStepName(String(step.stepName)) ?? parseWorkflowName(String(step.stepName));
|
|
1667
1774
|
const attributes = {
|
|
1668
1775
|
resource: "step",
|
|
1669
1776
|
data: step
|
|
@@ -1876,7 +1983,7 @@ function buildTrace(run, events, now, { isCompleteHistory = false } = {}) {
|
|
|
1876
1983
|
const duplicateEventIds = findDuplicateEventIds(events, {
|
|
1877
1984
|
isCompleteHistory
|
|
1878
1985
|
});
|
|
1879
|
-
const actedOnEvents =
|
|
1986
|
+
const actedOnEvents = events.filter((event) => !duplicateEventIds.has(event.eventId) && !isSealedNoopEvent(event));
|
|
1880
1987
|
const groupedEvents = groupEventsByCorrelation(actedOnEvents);
|
|
1881
1988
|
const latestKnownTime = computeLatestKnownTime(actedOnEvents, run);
|
|
1882
1989
|
const { runSpan, spans } = buildSpans(run, groupedEvents, now, latestKnownTime);
|
|
@@ -2226,7 +2333,7 @@ const attributeToDisplayFn = {
|
|
|
2226
2333
|
receivedCount: (value) => String(value),
|
|
2227
2334
|
lastReceivedAt: localMillisecondTimeOrNull,
|
|
2228
2335
|
disposedAt: localMillisecondTimeOrNull,
|
|
2229
|
-
// Internal resume plumbing
|
|
2336
|
+
// Internal resume plumbing, not surfaced in the UI
|
|
2230
2337
|
resumeContext: (_value) => null,
|
|
2231
2338
|
resumeId: (_value) => null,
|
|
2232
2339
|
resumeCapabilities: (_value) => null,
|
|
@@ -2244,7 +2351,7 @@ const attributeToDisplayFn = {
|
|
|
2244
2351
|
projectId: (_value) => null,
|
|
2245
2352
|
environment: (_value) => null,
|
|
2246
2353
|
executionContext: (_value) => null,
|
|
2247
|
-
// Attributes
|
|
2354
|
+
// Attributes: string-string metadata attached to the run.
|
|
2248
2355
|
// Rendered as key-value rows in its own collapsible section;
|
|
2249
2356
|
// if empty/missing, hidden by the hasDisplayContent gate.
|
|
2250
2357
|
attributes: (value) => {
|
|
@@ -2252,7 +2359,7 @@ const attributeToDisplayFn = {
|
|
|
2252
2359
|
return null;
|
|
2253
2360
|
return jsxRuntimeExports.jsx(RunAttributesCard, { attributes: value });
|
|
2254
2361
|
},
|
|
2255
|
-
// Dates
|
|
2362
|
+
// Dates: wrapped with TimestampTooltip showing UTC/local + relative time
|
|
2256
2363
|
occurredAt: timestampWithTooltipOrNull,
|
|
2257
2364
|
createdAt: timestampWithTooltipOrNull,
|
|
2258
2365
|
startedAt: timestampWithTooltipOrNull,
|
|
@@ -2340,7 +2447,7 @@ const attributeToDisplayFn = {
|
|
|
2340
2447
|
},
|
|
2341
2448
|
// Internal encryption plumbing: the run's X25519 public key, used by
|
|
2342
2449
|
// cross-run writers to seal payloads to this run. Not actionable for users
|
|
2343
|
-
// and not secret
|
|
2450
|
+
// and not secret, so hidden rather than rendered as 44 opaque base64 chars.
|
|
2344
2451
|
encryptionPublicKey: (_value) => null
|
|
2345
2452
|
};
|
|
2346
2453
|
const resolvableAttributes = [
|
|
@@ -2412,7 +2519,7 @@ const AttributeBlock = ({ attribute, value, isLoading, inline = false, context }
|
|
|
2412
2519
|
}
|
|
2413
2520
|
return jsxRuntimeExports.jsxs("div", { className: "relative", children: [typeof isLoading === "boolean" && isLoading && jsxRuntimeExports.jsx("div", { className: "absolute top-9 right-4", children: jsxRuntimeExports.jsx("div", { className: "animate-spin rounded-full h-4 w-4 border-b-2", style: { borderColor: "var(--ds-gray-900)" } }) }), jsxRuntimeExports.jsxs("div", { className: "my-2 flex flex-col gap-0", children: [jsxRuntimeExports.jsx("span", { className: "text-label-14 text-gray-1000 font-medium first-letter:uppercase", children: attribute }), jsxRuntimeExports.jsx("span", { className: "text-label-12", style: { color: "var(--ds-gray-1000)" }, children: displayValue })] }, attribute)] });
|
|
2414
2521
|
};
|
|
2415
|
-
const AttributePanel = ({ data, moduleSpecifier, moduleSourceUrl, isLoading, error, expiredAt, onStreamClick, onRunClick, onDecrypt, isDecrypting = false, resource }) => {
|
|
2522
|
+
const AttributePanel = ({ data, moduleSpecifier, moduleSourceUrl, isLoading, error, expiredAt, onStreamClick, onRunClick, onDecrypt, isDecrypting = false, isDecryptDisabled = false, decryptDisabledReason, resource }) => {
|
|
2416
2523
|
const displayData = reactExports.useMemo(() => {
|
|
2417
2524
|
const result = { ...data };
|
|
2418
2525
|
const execCtx = data.executionContext;
|
|
@@ -2478,6 +2585,8 @@ const AttributePanel = ({ data, moduleSpecifier, moduleSourceUrl, isLoading, err
|
|
|
2478
2585
|
const decryptValue = onDecrypt ? {
|
|
2479
2586
|
onDecrypt,
|
|
2480
2587
|
isDecrypting,
|
|
2588
|
+
isDecryptDisabled,
|
|
2589
|
+
decryptDisabledReason,
|
|
2481
2590
|
hasEncryptedData: outerDecryptCtx == null ? void 0 : outerDecryptCtx.hasEncryptedData
|
|
2482
2591
|
} : outerDecryptCtx;
|
|
2483
2592
|
return jsxRuntimeExports.jsx(ContextCardProvider, { children: jsxRuntimeExports.jsx(RunClickContext.Provider, { value: onRunClick, children: jsxRuntimeExports.jsx(StreamClickContext.Provider, { value: onStreamClick, children: jsxRuntimeExports.jsxs(DecryptClickContext.Provider, { value: decryptValue, children: [visibleBasicAttributes.length > 0 && jsxRuntimeExports.jsxs(CollapsibleRoot, { defaultOpen: true, children: [jsxRuntimeExports.jsx(CollapsibleTrigger, { children: "Metadata" }), jsxRuntimeExports.jsx(CollapsibleContent, { className: "mt-0 mb-2", children: jsxRuntimeExports.jsxs("div", { className: "flex flex-col", children: [orderedBasicAttributes.map((attribute) => {
|
|
@@ -2544,6 +2653,7 @@ function EventItem({ event, onLoadEventData, encryptionKey, showSeparateEventOcc
|
|
|
2544
2653
|
setLoadedData(null);
|
|
2545
2654
|
void loadEventData(true);
|
|
2546
2655
|
}, [encryptionKey, loadEventData]);
|
|
2656
|
+
const rowNotice = isDuplicate ? DUPLICATE_EVENT_MESSAGE : isSealedNoopEvent(event) ? SEALED_EVENT_MESSAGE : void 0;
|
|
2547
2657
|
const createdAt = new Date(event.createdAt);
|
|
2548
2658
|
const occurredAt = parseDateValue(event.occurredAt);
|
|
2549
2659
|
const displayedCreatedAt = showSeparateEventOccurrenceTimestamps ? createdAt : getEffectiveEventDate(event);
|
|
@@ -2556,7 +2666,7 @@ function EventItem({ event, onLoadEventData, encryptionKey, showSeparateEventOcc
|
|
|
2556
2666
|
return jsxRuntimeExports.jsxs(CollapsibleRoot, { variant: "card", onOpenChange: canHaveData ? (open) => {
|
|
2557
2667
|
if (open)
|
|
2558
2668
|
handleExpand();
|
|
2559
|
-
} : void 0, children: [jsxRuntimeExports.jsx(CollapsibleTrigger, { className: "px-3 py-2", children: jsxRuntimeExports.jsxs("div", { className: "flex w-full items-center justify-between gap-3", children: [jsxRuntimeExports.jsx(
|
|
2669
|
+
} : void 0, children: [jsxRuntimeExports.jsx(CollapsibleTrigger, { className: "px-3 py-2", children: jsxRuntimeExports.jsxs("div", { className: "flex w-full items-center justify-between gap-3", children: [jsxRuntimeExports.jsx(EventNoticeTooltip, { notice: rowNotice, children: jsxRuntimeExports.jsx("span", { className: `text-label-12 font-mono ${rowNotice ? "text-gray-700" : "text-gray-1000"}`, children: event.eventType }) }), jsxRuntimeExports.jsx("span", { className: "shrink-0 text-label-13 text-gray-900", children: displayedCreatedAtTime })] }) }), jsxRuntimeExports.jsxs(CollapsibleContent, { children: [jsxRuntimeExports.jsxs("div", { className: "flex flex-col bg-background-200 [&:has(+_*)]:border-b [&:has(+_*)]:border-gray-alpha-400", children: [showSeparateEventOccurrenceTimestamps && occurredAt && jsxRuntimeExports.jsxs("div", { className: "flex items-center justify-between gap-2 py-2 px-3", children: [jsxRuntimeExports.jsx("span", { className: "text-label-12 text-gray-900", children: "Occurred" }), jsxRuntimeExports.jsx(TimestampTooltip, { date: occurredAt, children: jsxRuntimeExports.jsx("span", { className: "max-w-[70%] truncate text-right text-label-12 font-mono", children: formatEventTimestamp(occurredAt) }) })] }), jsxRuntimeExports.jsxs("div", { className: "flex items-center justify-between gap-2 py-2 px-3", children: [jsxRuntimeExports.jsx("span", { className: "text-label-12 text-gray-900", children: "Event ID" }), jsxRuntimeExports.jsx("span", { className: "max-w-[70%] truncate text-right text-label-12 font-mono", children: event.eventId })] }), event.correlationId && jsxRuntimeExports.jsxs("div", { className: "flex items-center justify-between gap-2 py-2 px-3", children: [jsxRuntimeExports.jsx("span", { className: "text-label-12 text-gray-900", children: "Correlation ID" }), jsxRuntimeExports.jsx("span", { className: "max-w-[70%] truncate text-right text-label-12 font-mono", children: event.correlationId })] })] }), isLoading && jsxRuntimeExports.jsxs("div", { className: "p-3", children: [jsxRuntimeExports.jsx(Skeleton, { className: "h-4 w-[35%]" }), jsxRuntimeExports.jsx(Skeleton, { className: "mt-2 h-4 w-[90%]" }), jsxRuntimeExports.jsx(Skeleton, { className: "mt-2 h-4 w-[75%]" })] }), loadError && jsxRuntimeExports.jsx(ErrorCard, { title: "Failed to load event data", details: loadError, className: "mt-2" }), displayPayload != null && jsxRuntimeExports.jsx("div", { className: "[&>div]:border-none [&>div]:rounded-none", children: jsxRuntimeExports.jsx(EventDataBlock, { eventType: event.eventType, data: displayPayload }) })] })] });
|
|
2560
2670
|
}
|
|
2561
2671
|
function hasOnlyExpiredFields(data, eventType) {
|
|
2562
2672
|
if (data === null || typeof data !== "object" || Array.isArray(data)) {
|
|
@@ -2751,7 +2861,7 @@ function useSelectedSpanDetail(selectedSpan, fetchSpanDetail) {
|
|
|
2751
2861
|
function isHook(data) {
|
|
2752
2862
|
return data !== null && typeof data === "object" && "hookId" in data;
|
|
2753
2863
|
}
|
|
2754
|
-
function EntityDetailPanel({ run, onStreamClick, onRunClick, fetchSpanDetail, onWakeUpSleep, onLoadEventData, onResolveHook, encryptionKey, onDecrypt, isDecrypting = false, selectedSpan, showSeparateEventOccurrenceTimestamps = false, getModuleSourceUrl }) {
|
|
2864
|
+
function EntityDetailPanel({ run, onStreamClick, onRunClick, fetchSpanDetail, onWakeUpSleep, onLoadEventData, onResolveHook, encryptionKey, onDecrypt, isDecrypting = false, isDecryptDisabled = false, decryptDisabledReason, selectedSpan, showSeparateEventOccurrenceTimestamps = false, getModuleSourceUrl }) {
|
|
2755
2865
|
const toast2 = useToast();
|
|
2756
2866
|
const [stoppingSleep, setStoppingSleep] = reactExports.useState(false);
|
|
2757
2867
|
const [showResolveHookModal, setShowResolveHookModal] = reactExports.useState(false);
|
|
@@ -2909,7 +3019,13 @@ function EntityDetailPanel({ run, onStreamClick, onRunClick, fetchSpanDetail, on
|
|
|
2909
3019
|
return null;
|
|
2910
3020
|
}
|
|
2911
3021
|
const hasPendingActions = resource === "sleep" && canWakeUp || resource === "hook" && canResolveHook;
|
|
2912
|
-
return jsxRuntimeExports.jsxs("div", { className: "flex h-full flex-col", children: [jsxRuntimeExports.jsx(DecryptClickContext.Provider, { value: onDecrypt ? {
|
|
3022
|
+
return jsxRuntimeExports.jsxs("div", { className: "flex h-full flex-col", children: [jsxRuntimeExports.jsx(DecryptClickContext.Provider, { value: onDecrypt ? {
|
|
3023
|
+
onDecrypt,
|
|
3024
|
+
isDecrypting,
|
|
3025
|
+
isDecryptDisabled,
|
|
3026
|
+
decryptDisabledReason,
|
|
3027
|
+
hasEncryptedData
|
|
3028
|
+
} : void 0, children: jsxRuntimeExports.jsxs("div", { className: "flex-1 overflow-y-auto px-4 pb-8", children: [hasPendingActions && jsxRuntimeExports.jsxs("div", { className: "mb-4 rounded-lg border p-2", style: {
|
|
2913
3029
|
borderColor: "var(--ds-gray-300)",
|
|
2914
3030
|
backgroundColor: "var(--ds-gray-100)"
|
|
2915
3031
|
}, children: [jsxRuntimeExports.jsx("p", { className: "mb-2 px-1 text-label-13 font-medium uppercase tracking-wide", style: { color: "var(--ds-gray-700)" }, children: "Actions" }), jsxRuntimeExports.jsxs("div", { className: "flex flex-col gap-2", children: [resource === "sleep" && canWakeUp && jsxRuntimeExports.jsxs("button", { type: "button", onClick: handleWakeUp, disabled: stoppingSleep, className: clsx("flex items-center justify-center gap-2 rounded-md px-3 py-2 text-button-14", "disabled:opacity-50 disabled:cursor-not-allowed transition-colors", stoppingSleep ? "opacity-50 cursor-not-allowed" : "cursor-pointer"), style: {
|
|
@@ -2918,7 +3034,7 @@ function EntityDetailPanel({ run, onStreamClick, onRunClick, fetchSpanDetail, on
|
|
|
2918
3034
|
}, children: [jsxRuntimeExports.jsx(Zap, { className: "h-4 w-4" }), stoppingSleep ? "Waking up..." : "Wake Up Sleep"] }), resource === "hook" && canResolveHook && jsxRuntimeExports.jsxs("button", { type: "button", onClick: () => setShowResolveHookModal(true), disabled: resolvingHook, className: clsx("flex items-center justify-center gap-2 rounded-md px-3 py-2 text-button-14", "disabled:opacity-50 disabled:cursor-not-allowed transition-colors", resolvingHook ? "opacity-50 cursor-not-allowed" : "cursor-pointer"), style: {
|
|
2919
3035
|
background: "var(--ds-gray-1000)",
|
|
2920
3036
|
color: "var(--ds-background-100)"
|
|
2921
|
-
}, children: [jsxRuntimeExports.jsx(Send, { className: "h-4 w-4" }), "Resolve Hook"] })] })] }), jsxRuntimeExports.jsx(AttributePanel, { data: displayData, moduleSpecifier, moduleSourceUrl, expiredAt: run.expiredAt, isLoading: loading, error: error ?? void 0, onStreamClick, onRunClick, onDecrypt, isDecrypting, resource }), rawEvents && jsxRuntimeExports.jsx(EventsList, { events: rawEvents, onLoadEventData, onStreamClick, onRunClick, encryptionKey, showSeparateEventOccurrenceTimestamps, duplicateEventIds: selectedSpan == null ? void 0 : selectedSpan.duplicateEventIds })] }) }), jsxRuntimeExports.jsx(ResolveHookModal, { isOpen: showResolveHookModal, onClose: () => setShowResolveHookModal(false), onSubmit: handleResolveHook, isSubmitting: resolvingHook })] });
|
|
3037
|
+
}, children: [jsxRuntimeExports.jsx(Send, { className: "h-4 w-4" }), "Resolve Hook"] })] })] }), jsxRuntimeExports.jsx(AttributePanel, { data: displayData, moduleSpecifier, moduleSourceUrl, expiredAt: run.expiredAt, isLoading: loading, error: error ?? void 0, onStreamClick, onRunClick, onDecrypt, isDecrypting, isDecryptDisabled, decryptDisabledReason, resource }), rawEvents && jsxRuntimeExports.jsx(EventsList, { events: rawEvents, onLoadEventData, onStreamClick, onRunClick, encryptionKey, showSeparateEventOccurrenceTimestamps, duplicateEventIds: selectedSpan == null ? void 0 : selectedSpan.duplicateEventIds })] }) }), jsxRuntimeExports.jsx(ResolveHookModal, { isOpen: showResolveHookModal, onClose: () => setShowResolveHookModal(false), onSubmit: handleResolveHook, isSubmitting: resolvingHook })] });
|
|
2922
3038
|
}
|
|
2923
3039
|
const PANEL_MIN_WIDTH = 280;
|
|
2924
3040
|
const PANEL_HARD_MAX_WIDTH = 1300;
|
|
@@ -3170,7 +3286,7 @@ function TraceDetailPanel({ containerRef, onNavigateToSpan, onClose }) {
|
|
|
3170
3286
|
}, [selectedSpan == null ? void 0 : selectedSpan.data, selectedSpan == null ? void 0 : selectedSpan.resource]);
|
|
3171
3287
|
if (!activeSpan)
|
|
3172
3288
|
return null;
|
|
3173
|
-
return jsxRuntimeExports.jsxs("aside", { ref: asideRef, id: DETAIL_PANEL_ID, className: "relative flex flex-col h-full max-h-full shrink-0 bg-background-100 border-l border-gray-alpha-400", style: { width: panelWidth }, children: [jsxRuntimeExports.jsx(DraggableBorder, { element: asideRef, position: "left", onWidthChange: handleResize, onReset: () => handleResize(PANEL_DEFAULT_WIDTH), "aria-label": "Resize span details panel", "aria-controls": DETAIL_PANEL_ID, "aria-valuemin": PANEL_MIN_WIDTH, "aria-valuemax": panelMaxWidth, "aria-valuenow": Math.min(Math.max(Math.round(panelWidth), PANEL_MIN_WIDTH), panelMaxWidth) }), jsxRuntimeExports.jsxs("div", { className: "flex items-center justify-between gap-2 shrink-0 px-4 py-[7.5px]", children: [jsxRuntimeExports.jsx("span", { className: "text-label-14 font-medium text-gray-1000 truncate block", children: selectedSpanName }), jsxRuntimeExports.jsxs("div", { className: "flex items-center gap-0.5 shrink-0", children: [jsxRuntimeExports.jsxs(Tooltip, { children: [jsxRuntimeExports.jsx(TooltipTrigger, { asChild: true, children: jsxRuntimeExports.jsx(IconButton, { "aria-label": "Navigate up", "aria-keyshortcuts": "K", onClick: handleSelectPrev, disabled: !prevSpanId, children: jsxRuntimeExports.jsx(ChevronUp, { className: "w-4 h-4" }) }) }), prevSpanId ? jsxRuntimeExports.jsxs(TooltipContent, { children: ["Navigate up", jsxRuntimeExports.jsx(Kbd, { children: "K" })] }) : null] }), jsxRuntimeExports.jsxs(Tooltip, { children: [jsxRuntimeExports.jsx(TooltipTrigger, { asChild: true, children: jsxRuntimeExports.jsx(IconButton, { "aria-label": "Navigate down", "aria-keyshortcuts": "J", onClick: handleSelectNext, disabled: !nextSpanId, children: jsxRuntimeExports.jsx(ChevronDown, { className: "w-4 h-4" }) }) }), nextSpanId ? jsxRuntimeExports.jsxs(TooltipContent, { children: ["Navigate down", jsxRuntimeExports.jsx(Kbd, { children: "J" })] }) : null] }), jsxRuntimeExports.jsx("div", { "aria-hidden": true, className: "w-px h-4 bg-gray-alpha-400 mx-1" }), jsxRuntimeExports.jsx(IconButton, { "aria-label": "Close span details", "aria-keyshortcuts": "Escape", onClick: onClose, children: jsxRuntimeExports.jsx(X, { className: "w-4 h-4" }) })] })] }), jsxRuntimeExports.jsx("div", { className: "flex-1 overflow-y-auto", children: jsxRuntimeExports.jsx(ErrorBoundary, { children: jsxRuntimeExports.jsx(EntityDetailPanel, { run: sidebar.run, onStreamClick: sidebar.onStreamClick, onRunClick: sidebar.onRunClick, fetchSpanDetail: sidebar.fetchSpanDetail, onWakeUpSleep: sidebar.onWakeUpSleep, onLoadEventData: sidebar.onLoadEventData, onResolveHook: sidebar.onResolveHook, encryptionKey: sidebar.encryptionKey, onDecrypt: sidebar.onDecrypt, isDecrypting: sidebar.isDecrypting, selectedSpan, showSeparateEventOccurrenceTimestamps: sidebar.showSeparateEventOccurrenceTimestamps, getModuleSourceUrl: sidebar.getModuleSourceUrl }) }) })] });
|
|
3289
|
+
return jsxRuntimeExports.jsxs("aside", { ref: asideRef, id: DETAIL_PANEL_ID, className: "relative flex flex-col h-full max-h-full shrink-0 bg-background-100 border-l border-gray-alpha-400", style: { width: panelWidth }, children: [jsxRuntimeExports.jsx(DraggableBorder, { element: asideRef, position: "left", onWidthChange: handleResize, onReset: () => handleResize(PANEL_DEFAULT_WIDTH), "aria-label": "Resize span details panel", "aria-controls": DETAIL_PANEL_ID, "aria-valuemin": PANEL_MIN_WIDTH, "aria-valuemax": panelMaxWidth, "aria-valuenow": Math.min(Math.max(Math.round(panelWidth), PANEL_MIN_WIDTH), panelMaxWidth) }), jsxRuntimeExports.jsxs("div", { className: "flex items-center justify-between gap-2 shrink-0 px-4 py-[7.5px]", children: [jsxRuntimeExports.jsx("span", { className: "text-label-14 font-medium text-gray-1000 truncate block", children: selectedSpanName }), jsxRuntimeExports.jsxs("div", { className: "flex items-center gap-0.5 shrink-0", children: [jsxRuntimeExports.jsxs(Tooltip, { children: [jsxRuntimeExports.jsx(TooltipTrigger, { asChild: true, children: jsxRuntimeExports.jsx(IconButton, { "aria-label": "Navigate up", "aria-keyshortcuts": "K", onClick: handleSelectPrev, disabled: !prevSpanId, children: jsxRuntimeExports.jsx(ChevronUp, { className: "w-4 h-4" }) }) }), prevSpanId ? jsxRuntimeExports.jsxs(TooltipContent, { children: ["Navigate up", jsxRuntimeExports.jsx(Kbd, { children: "K" })] }) : null] }), jsxRuntimeExports.jsxs(Tooltip, { children: [jsxRuntimeExports.jsx(TooltipTrigger, { asChild: true, children: jsxRuntimeExports.jsx(IconButton, { "aria-label": "Navigate down", "aria-keyshortcuts": "J", onClick: handleSelectNext, disabled: !nextSpanId, children: jsxRuntimeExports.jsx(ChevronDown, { className: "w-4 h-4" }) }) }), nextSpanId ? jsxRuntimeExports.jsxs(TooltipContent, { children: ["Navigate down", jsxRuntimeExports.jsx(Kbd, { children: "J" })] }) : null] }), jsxRuntimeExports.jsx("div", { "aria-hidden": true, className: "w-px h-4 bg-gray-alpha-400 mx-1" }), jsxRuntimeExports.jsx(IconButton, { "aria-label": "Close span details", "aria-keyshortcuts": "Escape", onClick: onClose, children: jsxRuntimeExports.jsx(X, { className: "w-4 h-4" }) })] })] }), jsxRuntimeExports.jsx("div", { className: "flex-1 overflow-y-auto", children: jsxRuntimeExports.jsx(ErrorBoundary, { children: jsxRuntimeExports.jsx(EntityDetailPanel, { run: sidebar.run, onStreamClick: sidebar.onStreamClick, onRunClick: sidebar.onRunClick, fetchSpanDetail: sidebar.fetchSpanDetail, onWakeUpSleep: sidebar.onWakeUpSleep, onLoadEventData: sidebar.onLoadEventData, onResolveHook: sidebar.onResolveHook, encryptionKey: sidebar.encryptionKey, onDecrypt: sidebar.onDecrypt, isDecrypting: sidebar.isDecrypting, isDecryptDisabled: sidebar.isDecryptDisabled, decryptDisabledReason: sidebar.decryptDisabledReason, selectedSpan, showSeparateEventOccurrenceTimestamps: sidebar.showSeparateEventOccurrenceTimestamps, getModuleSourceUrl: sidebar.getModuleSourceUrl }) }) })] });
|
|
3174
3290
|
}
|
|
3175
3291
|
const WorkflowIcon = () => {
|
|
3176
3292
|
return jsxRuntimeExports.jsx("svg", { "aria-hidden": "true", "data-testid": "geist-icon", height: "16", strokeLinejoin: "round", viewBox: "0 0 16 16", width: "16", children: jsxRuntimeExports.jsx("path", { d: "M5.75 7L6.4209 7.33594L4.85254 10.4717C5.38789 10.771 5.75 11.3431 5.75 12V14C5.75 14.9665 4.96648 15.75 4 15.75H2C1.03352 15.75 0.25 14.9665 0.25 14V12C0.25 11.0335 1.03352 10.25 2 10.25H3.28711L5.0791 6.66504L5.75 7ZM14 10.25C14.9665 10.25 15.75 11.0335 15.75 12V14C15.75 14.9665 14.9665 15.75 14 15.75H12C11.1185 15.75 10.3909 15.098 10.2695 14.25H7V12.75H10.25V12C10.25 11.0335 11.0335 10.25 12 10.25H14ZM2 11.75C1.86192 11.75 1.75 11.8619 1.75 12V14C1.75 14.1381 1.86192 14.25 2 14.25H4C4.13808 14.25 4.25 14.1381 4.25 14V12C4.25 11.8619 4.13808 11.75 4 11.75H2ZM12 11.75C11.8619 11.75 11.75 11.8619 11.75 12V14C11.75 14.1381 11.8619 14.25 12 14.25H14C14.1381 14.25 14.25 14.1381 14.25 14V12C14.25 11.8619 14.1381 11.75 14 11.75H12ZM9 0.25C9.96649 0.25 10.75 1.03351 10.75 2V4C10.75 4.44642 10.5808 4.85197 10.3057 5.16113L12.2041 8.6416L10.8877 9.36035L8.91895 5.75H7C6.03351 5.75 5.25 4.96649 5.25 4V2C5.25 1.03351 6.03351 0.25 7 0.25H9ZM7 1.75C6.86193 1.75 6.75 1.86193 6.75 2V4C6.75 4.13807 6.86193 4.25 7 4.25H9C9.13807 4.25 9.25 4.13807 9.25 4V2C9.25 1.86193 9.13807 1.75 9 1.75H7Z", fill: "currentColor" }) });
|
package/build/client/assets/{workflow-graph-viewer-CxrWityD.js → workflow-graph-viewer-CFAXloBw.js}
RENAMED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
var __defProp = Object.defineProperty;
|
|
2
2
|
var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
|
|
3
3
|
var __publicField = (obj, key, value) => __defNormalProp(obj, typeof key !== "symbol" ? key + "" : key, value);
|
|
4
|
-
import { c as createLucideIcon, J as ChevronDown,
|
|
4
|
+
import { c as createLucideIcon, J as ChevronDown, $ as cn, e as cn$1, O as cva, bh as composeRefs, L as useComposedRefs, bi as useFloating, bj as offset, bk as shift, bl as limitShift, bm as flip, bn as size, bo as arrow, bp as hide, bq as autoUpdate, m as ChevronRight, C as Check, br as VERCEL_403_ERROR_MESSAGE, bs as bulkCancelRuns$1, bt as reenqueueRun$1, bu as wakeUpRun$1, bv as resumeHook$1, bw as fetchHookToken$1, bx as cancelRun$1, by as recreateRun$1, T as Tooltip, a as TooltipTrigger, l as Copy, b as TooltipContent, z as createContextScope$1, p as useComposedRefs$1, E as createSlot, ah as formatDuration, B as Button, t as toast, w as useId$1, P as Primitive$1, q as composeEventHandlers$1, G as useControllableState$1, o as useCallbackRef$2, U as Presence$1 } from "./mermaid-3ZIDBTTL-CrfHaTou.js";
|
|
5
5
|
import { r as reactExports, j as jsxRuntimeExports, o as reactDomExports, R as ReactExports, H as React, D as ReactDOM, f as requireReact, I as getDefaultExportFromCjs } from "./index-PFjW8YjQ.js";
|
|
6
6
|
function parseName(tag, name) {
|
|
7
7
|
if (typeof name !== "string") {
|