@workflow/web-shared 5.0.0-beta.2 → 5.0.0-beta.20
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/dist/components/error-boundary.js +1 -1
- package/dist/components/event-list-view.d.ts +16 -1
- package/dist/components/event-list-view.d.ts.map +1 -1
- package/dist/components/event-list-view.js +196 -85
- package/dist/components/hook-actions.js +1 -1
- package/dist/components/index.d.ts +4 -0
- package/dist/components/index.d.ts.map +1 -1
- package/dist/components/index.js +5 -1
- package/dist/components/new-trace-viewer/components/copy-button.d.ts +9 -0
- package/dist/components/new-trace-viewer/components/copy-button.d.ts.map +1 -0
- package/dist/components/new-trace-viewer/components/copy-button.js +27 -0
- package/dist/components/new-trace-viewer/components/event-list.d.ts +10 -0
- package/dist/components/new-trace-viewer/components/event-list.d.ts.map +1 -0
- package/dist/components/new-trace-viewer/components/event-list.js +46 -0
- package/dist/components/new-trace-viewer/components/middle-truncate/copy-selection.d.ts +18 -0
- package/dist/components/new-trace-viewer/components/middle-truncate/copy-selection.d.ts.map +1 -0
- package/dist/components/new-trace-viewer/components/middle-truncate/copy-selection.js +54 -0
- package/dist/components/new-trace-viewer/components/middle-truncate/middle-truncate.d.ts +20 -0
- package/dist/components/new-trace-viewer/components/middle-truncate/middle-truncate.d.ts.map +1 -0
- package/dist/components/new-trace-viewer/components/middle-truncate/middle-truncate.js +81 -0
- package/dist/components/new-trace-viewer/components/middle-truncate/truncate.d.ts +25 -0
- package/dist/components/new-trace-viewer/components/middle-truncate/truncate.d.ts.map +1 -0
- package/dist/components/new-trace-viewer/components/middle-truncate/truncate.js +101 -0
- package/dist/components/new-trace-viewer/components/middle-truncate/use-middle-truncate.d.ts +20 -0
- package/dist/components/new-trace-viewer/components/middle-truncate/use-middle-truncate.d.ts.map +1 -0
- package/dist/components/new-trace-viewer/components/middle-truncate/use-middle-truncate.js +114 -0
- package/dist/components/new-trace-viewer/components/span-markers.d.ts +46 -0
- package/dist/components/new-trace-viewer/components/span-markers.d.ts.map +1 -0
- package/dist/components/new-trace-viewer/components/span-markers.js +85 -0
- package/dist/components/new-trace-viewer/components/split-pane.d.ts +15 -0
- package/dist/components/new-trace-viewer/components/split-pane.d.ts.map +1 -0
- package/dist/components/new-trace-viewer/components/split-pane.js +105 -0
- package/dist/components/new-trace-viewer/components/timeline.d.ts +36 -0
- package/dist/components/new-trace-viewer/components/timeline.d.ts.map +1 -0
- package/dist/components/new-trace-viewer/components/timeline.js +254 -0
- package/dist/components/new-trace-viewer/components/timeline.module.css +46 -0
- package/dist/components/new-trace-viewer/components/trace-viewer-skeleton.d.ts +2 -0
- package/dist/components/new-trace-viewer/components/trace-viewer-skeleton.d.ts.map +1 -0
- package/dist/components/new-trace-viewer/components/trace-viewer-skeleton.js +19 -0
- package/dist/components/new-trace-viewer/components/use-row-window.d.ts +34 -0
- package/dist/components/new-trace-viewer/components/use-row-window.d.ts.map +1 -0
- package/dist/components/new-trace-viewer/components/use-row-window.js +107 -0
- package/dist/components/new-trace-viewer/context.d.ts +15 -0
- package/dist/components/new-trace-viewer/context.d.ts.map +1 -0
- package/dist/components/new-trace-viewer/context.js +47 -0
- package/dist/components/new-trace-viewer/icons.d.ts +6 -0
- package/dist/components/new-trace-viewer/icons.d.ts.map +1 -0
- package/dist/components/new-trace-viewer/icons.js +15 -0
- package/dist/components/new-trace-viewer/search.d.ts +19 -0
- package/dist/components/new-trace-viewer/search.d.ts.map +1 -0
- package/dist/components/new-trace-viewer/search.js +134 -0
- package/dist/components/new-trace-viewer/trace-viewer.d.ts +11 -0
- package/dist/components/new-trace-viewer/trace-viewer.d.ts.map +1 -0
- package/dist/components/new-trace-viewer/trace-viewer.js +462 -0
- package/dist/components/new-trace-viewer/types.d.ts +3 -0
- package/dist/components/new-trace-viewer/types.d.ts.map +1 -0
- package/dist/components/new-trace-viewer/types.js +2 -0
- package/dist/components/new-trace-viewer/utils.d.ts +61 -0
- package/dist/components/new-trace-viewer/utils.d.ts.map +1 -0
- package/dist/components/new-trace-viewer/utils.js +345 -0
- package/dist/components/run-trace-view.js +1 -1
- package/dist/components/sidebar/attribute-panel.d.ts.map +1 -1
- package/dist/components/sidebar/attribute-panel.js +129 -102
- package/dist/components/sidebar/attributes-block.d.ts +28 -0
- package/dist/components/sidebar/attributes-block.d.ts.map +1 -0
- package/dist/components/sidebar/attributes-block.js +81 -0
- package/dist/components/sidebar/conversation-view.js +1 -1
- package/dist/components/sidebar/copyable-data-block.d.ts +1 -0
- package/dist/components/sidebar/copyable-data-block.d.ts.map +1 -1
- package/dist/components/sidebar/copyable-data-block.js +16 -15
- package/dist/components/sidebar/detail-card.d.ts +5 -6
- package/dist/components/sidebar/detail-card.d.ts.map +1 -1
- package/dist/components/sidebar/detail-card.js +32 -16
- package/dist/components/sidebar/entity-detail-panel.d.ts +1 -3
- package/dist/components/sidebar/entity-detail-panel.d.ts.map +1 -1
- package/dist/components/sidebar/entity-detail-panel.js +17 -35
- package/dist/components/sidebar/events-list.d.ts +3 -1
- package/dist/components/sidebar/events-list.d.ts.map +1 -1
- package/dist/components/sidebar/events-list.js +36 -22
- package/dist/components/sidebar/resolve-hook-modal.js +1 -1
- package/dist/components/sidebar/sidebar-data-context.d.ts +29 -0
- package/dist/components/sidebar/sidebar-data-context.d.ts.map +1 -0
- package/dist/components/sidebar/sidebar-data-context.js +19 -0
- package/dist/components/sidebar/span-detail-merge.d.ts +16 -0
- package/dist/components/sidebar/span-detail-merge.d.ts.map +1 -0
- package/dist/components/sidebar/span-detail-merge.js +53 -0
- package/dist/components/stream-viewer.d.ts +1 -1
- package/dist/components/stream-viewer.d.ts.map +1 -1
- package/dist/components/stream-viewer.js +3 -27
- package/dist/components/trace-viewer/components/map.js +1 -1
- package/dist/components/trace-viewer/components/markers.js +1 -1
- package/dist/components/trace-viewer/components/node.d.ts.map +1 -1
- package/dist/components/trace-viewer/components/node.js +2 -1
- package/dist/components/trace-viewer/components/search-input.js +1 -1
- package/dist/components/trace-viewer/components/search.js +1 -1
- package/dist/components/trace-viewer/components/span-content.js +1 -1
- package/dist/components/trace-viewer/components/span-detail-panel.js +1 -1
- package/dist/components/trace-viewer/components/span-segments.js +1 -1
- package/dist/components/trace-viewer/components/span-strategies.js +1 -1
- package/dist/components/trace-viewer/components/ui.js +1 -1
- package/dist/components/trace-viewer/components/zoom-button.js +1 -1
- package/dist/components/trace-viewer/components/zoom-icons.js +1 -1
- package/dist/components/trace-viewer/context.js +1 -1
- package/dist/components/trace-viewer/index.js +1 -1
- package/dist/components/trace-viewer/trace-viewer.js +1 -1
- package/dist/components/trace-viewer/trace-viewer.module.css +4 -4
- package/dist/components/trace-viewer/types.js +1 -1
- package/dist/components/trace-viewer/util/constants.js +1 -1
- package/dist/components/trace-viewer/util/scrollbar-width.js +1 -1
- package/dist/components/trace-viewer/util/timing.d.ts +3 -3
- package/dist/components/trace-viewer/util/timing.d.ts.map +1 -1
- package/dist/components/trace-viewer/util/timing.js +8 -11
- package/dist/components/trace-viewer/util/tree.js +1 -1
- package/dist/components/trace-viewer/util/use-immediate-style.js +1 -1
- package/dist/components/trace-viewer/util/use-streaming-spans.js +1 -1
- package/dist/components/trace-viewer/util/use-trackpad-zoom.js +1 -1
- package/dist/components/trace-viewer/worker.js +1 -1
- package/dist/components/trace-viewer-new.d.ts +14 -0
- package/dist/components/trace-viewer-new.d.ts.map +1 -0
- package/dist/components/trace-viewer-new.js +21 -0
- package/dist/components/ui/alert.js +1 -1
- package/dist/components/ui/button.d.ts +10 -0
- package/dist/components/ui/button.d.ts.map +1 -0
- package/dist/components/ui/button.js +46 -0
- package/dist/components/ui/card.js +1 -1
- package/dist/components/ui/context-card.d.ts +47 -0
- package/dist/components/ui/context-card.d.ts.map +1 -0
- package/dist/components/ui/context-card.js +471 -0
- package/dist/components/ui/data-inspector.d.ts +22 -0
- package/dist/components/ui/data-inspector.d.ts.map +1 -1
- package/dist/components/ui/data-inspector.js +103 -13
- package/dist/components/ui/decrypt-button.js +1 -1
- package/dist/components/ui/error-card.js +1 -1
- package/dist/components/ui/error-stack-block.d.ts +17 -10
- package/dist/components/ui/error-stack-block.d.ts.map +1 -1
- package/dist/components/ui/error-stack-block.js +49 -30
- package/dist/components/ui/icon-button.d.ts +19 -0
- package/dist/components/ui/icon-button.d.ts.map +1 -0
- package/dist/components/ui/icon-button.js +29 -0
- package/dist/components/ui/inspector-theme.d.ts +9 -10
- package/dist/components/ui/inspector-theme.d.ts.map +1 -1
- package/dist/components/ui/inspector-theme.js +39 -72
- package/dist/components/ui/kbd.d.ts +6 -0
- package/dist/components/ui/kbd.d.ts.map +1 -0
- package/dist/components/ui/kbd.js +6 -0
- package/dist/components/ui/load-more-button.js +1 -1
- package/dist/components/ui/menu-dropdown.js +1 -1
- package/dist/components/ui/skeleton.js +1 -1
- package/dist/components/ui/spinner.js +1 -1
- package/dist/components/ui/timestamp-tooltip.d.ts +34 -1
- package/dist/components/ui/timestamp-tooltip.d.ts.map +1 -1
- package/dist/components/ui/timestamp-tooltip.js +80 -132
- package/dist/components/ui/tooltip.d.ts +10 -0
- package/dist/components/ui/tooltip.d.ts.map +1 -0
- package/dist/components/ui/tooltip.js +12 -0
- package/dist/components/workflow-trace-view.d.ts +1 -3
- package/dist/components/workflow-trace-view.d.ts.map +1 -1
- package/dist/components/workflow-trace-view.js +11 -13
- package/dist/components/workflow-traces/event-colors.d.ts +1 -0
- package/dist/components/workflow-traces/event-colors.d.ts.map +1 -1
- package/dist/components/workflow-traces/event-colors.js +12 -1
- package/dist/components/workflow-traces/trace-colors.js +1 -1
- package/dist/components/workflow-traces/trace-span-construction.d.ts +2 -2
- package/dist/components/workflow-traces/trace-span-construction.d.ts.map +1 -1
- package/dist/components/workflow-traces/trace-span-construction.js +19 -5
- package/dist/components/workflow-traces/trace-time-utils.js +1 -1
- package/dist/hooks/use-dark-mode.js +1 -1
- package/dist/hooks/use-intersection-observer.d.ts +17 -0
- package/dist/hooks/use-intersection-observer.d.ts.map +1 -0
- package/dist/hooks/use-intersection-observer.js +29 -0
- package/dist/hooks/use-load-more-on-scroll.d.ts +21 -0
- package/dist/hooks/use-load-more-on-scroll.d.ts.map +1 -0
- package/dist/hooks/use-load-more-on-scroll.js +28 -0
- package/dist/hooks/use-reduced-motion.d.ts +10 -0
- package/dist/hooks/use-reduced-motion.d.ts.map +1 -0
- package/dist/hooks/use-reduced-motion.js +29 -0
- package/dist/index.d.ts +3 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +3 -2
- package/dist/lib/event-analysis.js +1 -1
- package/dist/lib/event-materialization.js +1 -1
- package/dist/lib/exact-event-search-id.d.ts +25 -0
- package/dist/lib/exact-event-search-id.d.ts.map +1 -0
- package/dist/lib/exact-event-search-id.js +39 -0
- package/dist/lib/hydration.d.ts +6 -0
- package/dist/lib/hydration.d.ts.map +1 -1
- package/dist/lib/hydration.js +154 -2
- package/dist/lib/stream-display.d.ts +18 -0
- package/dist/lib/stream-display.d.ts.map +1 -0
- package/dist/lib/stream-display.js +30 -0
- package/dist/lib/toast.js +1 -1
- package/dist/lib/trace-builder.d.ts +15 -0
- package/dist/lib/trace-builder.d.ts.map +1 -1
- package/dist/lib/trace-builder.js +29 -3
- package/dist/lib/utils.d.ts +20 -9
- package/dist/lib/utils.d.ts.map +1 -1
- package/dist/lib/utils.js +74 -31
- package/dist/lib/zstd-browser-decoder.d.ts +7 -0
- package/dist/lib/zstd-browser-decoder.d.ts.map +1 -0
- package/dist/lib/zstd-browser-decoder.js +41 -0
- package/dist/styles.css +484 -1
- package/package.json +10 -5
- package/src/components/event-list-view.tsx +279 -104
- package/src/components/index.ts +7 -0
- package/src/components/new-trace-viewer/components/copy-button.tsx +68 -0
- package/src/components/new-trace-viewer/components/event-list.tsx +136 -0
- package/src/components/new-trace-viewer/components/middle-truncate/copy-selection.ts +114 -0
- package/src/components/new-trace-viewer/components/middle-truncate/middle-truncate.tsx +157 -0
- package/src/components/new-trace-viewer/components/middle-truncate/truncate.ts +132 -0
- package/src/components/new-trace-viewer/components/middle-truncate/use-middle-truncate.ts +167 -0
- package/src/components/new-trace-viewer/components/span-markers.tsx +173 -0
- package/src/components/new-trace-viewer/components/split-pane.tsx +198 -0
- package/src/components/new-trace-viewer/components/timeline.module.css +46 -0
- package/src/components/new-trace-viewer/components/timeline.tsx +744 -0
- package/src/components/new-trace-viewer/components/trace-viewer-skeleton.tsx +94 -0
- package/src/components/new-trace-viewer/components/use-row-window.ts +140 -0
- package/src/components/new-trace-viewer/context.tsx +90 -0
- package/src/components/new-trace-viewer/icons.tsx +79 -0
- package/src/components/new-trace-viewer/search.ts +178 -0
- package/src/components/new-trace-viewer/trace-viewer.tsx +843 -0
- package/src/components/new-trace-viewer/types.ts +2 -0
- package/src/components/new-trace-viewer/utils.test.ts +182 -0
- package/src/components/new-trace-viewer/utils.ts +519 -0
- package/src/components/sidebar/attribute-panel.tsx +194 -240
- package/src/components/sidebar/attributes-block.tsx +173 -0
- package/src/components/sidebar/copyable-data-block.tsx +49 -27
- package/src/components/sidebar/detail-card.tsx +119 -59
- package/src/components/sidebar/entity-detail-panel.tsx +55 -111
- package/src/components/sidebar/events-list.tsx +85 -96
- package/src/components/sidebar/sidebar-data-context.tsx +62 -0
- package/src/components/sidebar/span-detail-merge.ts +65 -0
- package/src/components/stream-viewer.tsx +18 -40
- package/src/components/trace-viewer/components/node.tsx +3 -2
- package/src/components/trace-viewer/trace-viewer.module.css +4 -4
- package/src/components/trace-viewer/util/timing.ts +7 -11
- package/src/components/trace-viewer-new.tsx +55 -0
- package/src/components/ui/button.tsx +68 -0
- package/src/components/ui/context-card.tsx +784 -0
- package/src/components/ui/data-inspector.tsx +244 -22
- package/src/components/ui/error-stack-block.tsx +84 -55
- package/src/components/ui/icon-button.tsx +53 -0
- package/src/components/ui/inspector-theme.ts +39 -81
- package/src/components/ui/kbd.tsx +21 -0
- package/src/components/ui/timestamp-tooltip.tsx +132 -194
- package/src/components/ui/tooltip.tsx +47 -0
- package/src/components/workflow-trace-view.tsx +19 -15
- package/src/components/workflow-traces/event-colors.ts +12 -0
- package/src/components/workflow-traces/trace-span-construction.ts +24 -5
- package/src/hooks/use-intersection-observer.ts +57 -0
- package/src/hooks/use-load-more-on-scroll.ts +49 -0
- package/src/hooks/use-reduced-motion.ts +34 -0
- package/src/index.ts +9 -0
- package/src/lib/exact-event-search-id.ts +67 -0
- package/src/lib/hydration.ts +166 -1
- package/src/lib/stream-display.ts +48 -0
- package/src/lib/trace-builder.ts +34 -2
- package/src/lib/utils.ts +83 -31
- package/src/lib/zstd-browser-decoder.ts +42 -0
- package/src/styles.css +484 -1
- package/dist/components/error-boundary.js.map +0 -1
- package/dist/components/event-list-view.js.map +0 -1
- package/dist/components/hook-actions.js.map +0 -1
- package/dist/components/index.js.map +0 -1
- package/dist/components/run-trace-view.js.map +0 -1
- package/dist/components/sidebar/attribute-panel.js.map +0 -1
- package/dist/components/sidebar/conversation-view.js.map +0 -1
- package/dist/components/sidebar/copyable-data-block.js.map +0 -1
- package/dist/components/sidebar/detail-card.js.map +0 -1
- package/dist/components/sidebar/entity-detail-panel.js.map +0 -1
- package/dist/components/sidebar/events-list.js.map +0 -1
- package/dist/components/sidebar/resolve-hook-modal.js.map +0 -1
- package/dist/components/stream-viewer.js.map +0 -1
- package/dist/components/trace-viewer/components/map.js.map +0 -1
- package/dist/components/trace-viewer/components/markers.js.map +0 -1
- package/dist/components/trace-viewer/components/node.js.map +0 -1
- package/dist/components/trace-viewer/components/search-input.js.map +0 -1
- package/dist/components/trace-viewer/components/search.js.map +0 -1
- package/dist/components/trace-viewer/components/span-content.js.map +0 -1
- package/dist/components/trace-viewer/components/span-detail-panel.js.map +0 -1
- package/dist/components/trace-viewer/components/span-segments.js.map +0 -1
- package/dist/components/trace-viewer/components/span-strategies.js.map +0 -1
- package/dist/components/trace-viewer/components/ui.js.map +0 -1
- package/dist/components/trace-viewer/components/zoom-button.js.map +0 -1
- package/dist/components/trace-viewer/components/zoom-icons.js.map +0 -1
- package/dist/components/trace-viewer/context.js.map +0 -1
- package/dist/components/trace-viewer/index.js.map +0 -1
- package/dist/components/trace-viewer/trace-viewer.js.map +0 -1
- package/dist/components/trace-viewer/types.js.map +0 -1
- package/dist/components/trace-viewer/util/constants.js.map +0 -1
- package/dist/components/trace-viewer/util/scrollbar-width.js.map +0 -1
- package/dist/components/trace-viewer/util/timing.js.map +0 -1
- package/dist/components/trace-viewer/util/tree.js.map +0 -1
- package/dist/components/trace-viewer/util/use-immediate-style.js.map +0 -1
- package/dist/components/trace-viewer/util/use-streaming-spans.js.map +0 -1
- package/dist/components/trace-viewer/util/use-trackpad-zoom.js.map +0 -1
- package/dist/components/trace-viewer/worker.js.map +0 -1
- package/dist/components/ui/alert.js.map +0 -1
- package/dist/components/ui/card.js.map +0 -1
- package/dist/components/ui/data-inspector.js.map +0 -1
- package/dist/components/ui/decrypt-button.js.map +0 -1
- package/dist/components/ui/error-card.js.map +0 -1
- package/dist/components/ui/error-stack-block.js.map +0 -1
- package/dist/components/ui/inspector-theme.js.map +0 -1
- package/dist/components/ui/load-more-button.js.map +0 -1
- package/dist/components/ui/menu-dropdown.js.map +0 -1
- package/dist/components/ui/skeleton.js.map +0 -1
- package/dist/components/ui/spinner.js.map +0 -1
- package/dist/components/ui/timestamp-tooltip.js.map +0 -1
- package/dist/components/workflow-trace-view.js.map +0 -1
- package/dist/components/workflow-traces/event-colors.js.map +0 -1
- package/dist/components/workflow-traces/trace-colors.js.map +0 -1
- package/dist/components/workflow-traces/trace-span-construction.js.map +0 -1
- package/dist/components/workflow-traces/trace-time-utils.js.map +0 -1
- package/dist/hooks/use-dark-mode.js.map +0 -1
- package/dist/index.js.map +0 -1
- package/dist/lib/event-analysis.js.map +0 -1
- package/dist/lib/event-materialization.js.map +0 -1
- package/dist/lib/hydration.js.map +0 -1
- package/dist/lib/toast.js.map +0 -1
- package/dist/lib/trace-builder.js.map +0 -1
- package/dist/lib/utils.js.map +0 -1
|
@@ -0,0 +1,81 @@
|
|
|
1
|
+
'use client';
|
|
2
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
3
|
+
import { RESERVED_ATTRIBUTE_KEY_PREFIX, } from '@workflow/world';
|
|
4
|
+
import { CopyableDataBlock } from './copyable-data-block';
|
|
5
|
+
import { DetailCard } from './detail-card';
|
|
6
|
+
/**
|
|
7
|
+
* Check whether an attribute key is in the reserved (`$`-prefixed)
|
|
8
|
+
* namespace used by framework/library code.
|
|
9
|
+
*/
|
|
10
|
+
export const isReservedAttributeKey = (key) => key.startsWith(RESERVED_ATTRIBUTE_KEY_PREFIX);
|
|
11
|
+
function ReservedBadge() {
|
|
12
|
+
return (_jsx("span", { className: "shrink-0 rounded border px-1 py-px text-[10px] font-medium leading-3", style: {
|
|
13
|
+
borderColor: 'var(--ds-gray-alpha-400)',
|
|
14
|
+
backgroundColor: 'var(--ds-gray-100)',
|
|
15
|
+
color: 'var(--ds-gray-700)',
|
|
16
|
+
}, title: `Keys prefixed with "${RESERVED_ATTRIBUTE_KEY_PREFIX}" are reserved for framework and library code`, children: "Reserved" }));
|
|
17
|
+
}
|
|
18
|
+
function AttributeRow({ attributeKey, value, removed = false, }) {
|
|
19
|
+
const reserved = isReservedAttributeKey(attributeKey);
|
|
20
|
+
return (_jsxs("div", { className: "flex items-center justify-between gap-3 py-0.5", children: [_jsxs("span", { className: "flex min-w-0 items-center gap-1.5 text-label-13 text-gray-900", style: reserved ? { color: 'var(--ds-gray-700)' } : undefined, children: [_jsx("span", { className: "truncate", children: attributeKey }), reserved && _jsx(ReservedBadge, {})] }), removed ? (_jsx("span", { className: "shrink-0 text-copy-13 italic text-gray-700", children: "removed" })) : (_jsx("span", { className: "max-w-[60%] truncate text-copy-13 text-gray-1000", title: value, children: value }))] }));
|
|
21
|
+
}
|
|
22
|
+
/**
|
|
23
|
+
* Sort attribute keys for display: user keys first (alphabetical), then
|
|
24
|
+
* reserved `$`-prefixed keys (alphabetical), so framework metadata doesn't
|
|
25
|
+
* crowd out user-set attributes.
|
|
26
|
+
*/
|
|
27
|
+
export function sortAttributeKeys(keys) {
|
|
28
|
+
return [...keys].sort((a, b) => {
|
|
29
|
+
const aReserved = isReservedAttributeKey(a);
|
|
30
|
+
const bReserved = isReservedAttributeKey(b);
|
|
31
|
+
if (aReserved !== bReserved)
|
|
32
|
+
return aReserved ? 1 : -1;
|
|
33
|
+
return a.localeCompare(b);
|
|
34
|
+
});
|
|
35
|
+
}
|
|
36
|
+
/**
|
|
37
|
+
* Collapsible section showing a run's materialized attributes as key-value
|
|
38
|
+
* rows. Reserved (`$`-prefixed) keys are visually de-emphasized with a
|
|
39
|
+
* badge and sorted after user keys.
|
|
40
|
+
*/
|
|
41
|
+
export function RunAttributesCard({ attributes, }) {
|
|
42
|
+
const keys = sortAttributeKeys(Object.keys(attributes));
|
|
43
|
+
if (keys.length === 0)
|
|
44
|
+
return null;
|
|
45
|
+
return (_jsx(DetailCard, { summary: "Attributes", defaultOpen: true, contentClassName: "mb-4", children: _jsx("div", { className: "flex flex-col", children: keys.map((key) => (_jsx(AttributeRow, { attributeKey: key, value: attributes[key] }, key))) }) }));
|
|
46
|
+
}
|
|
47
|
+
function isAttrSetEventData(data) {
|
|
48
|
+
if (data === null || typeof data !== 'object')
|
|
49
|
+
return false;
|
|
50
|
+
const record = data;
|
|
51
|
+
return (Array.isArray(record.changes) &&
|
|
52
|
+
record.changes.every((c) => c !== null &&
|
|
53
|
+
typeof c === 'object' &&
|
|
54
|
+
typeof c.key === 'string'));
|
|
55
|
+
}
|
|
56
|
+
function describeWriter(writer) {
|
|
57
|
+
if (!writer)
|
|
58
|
+
return null;
|
|
59
|
+
if (writer.type === 'workflow')
|
|
60
|
+
return 'Set by workflow';
|
|
61
|
+
if (writer.type === 'step') {
|
|
62
|
+
return `Set by step ${writer.stepId} (attempt ${writer.attempt})`;
|
|
63
|
+
}
|
|
64
|
+
return null;
|
|
65
|
+
}
|
|
66
|
+
/**
|
|
67
|
+
* Renders the payload of an `attr_set` event: the list of attribute
|
|
68
|
+
* changes (sets and removals) plus which writer (workflow or step)
|
|
69
|
+
* made them. Falls back to the generic JSON block for unexpected shapes.
|
|
70
|
+
*/
|
|
71
|
+
export function AttrSetEventBlock({ data }) {
|
|
72
|
+
if (!isAttrSetEventData(data)) {
|
|
73
|
+
return _jsx(CopyableDataBlock, { data: data });
|
|
74
|
+
}
|
|
75
|
+
const writerLabel = describeWriter(data.writer);
|
|
76
|
+
return (_jsxs("div", { className: "flex flex-col px-3 py-1", children: [_jsx("div", { className: "flex flex-col", children: data.changes.map((change, index) => (_jsx(AttributeRow, { attributeKey: change.key, removed: change.value === null, value: change.value ?? undefined }, `${change.key}:${index}`))) }), writerLabel && (_jsx("div", { className: "border-t py-1.5 text-label-12", style: {
|
|
77
|
+
borderColor: 'var(--ds-gray-alpha-400)',
|
|
78
|
+
color: 'var(--ds-gray-700)',
|
|
79
|
+
}, children: writerLabel }))] }));
|
|
80
|
+
}
|
|
81
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXR0cmlidXRlcy1ibG9jay5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9jb21wb25lbnRzL3NpZGViYXIvYXR0cmlidXRlcy1ibG9jay50c3giXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsWUFBWSxDQUFDOztBQUViLE9BQU8sRUFFTCw2QkFBNkIsR0FDOUIsTUFBTSxpQkFBaUIsQ0FBQztBQUN6QixPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUMxRCxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRTNDOzs7R0FHRztBQUNILE1BQU0sQ0FBQyxNQUFNLHNCQUFzQixHQUFHLENBQUMsR0FBVyxFQUFXLEVBQUUsQ0FDN0QsR0FBRyxDQUFDLFVBQVUsQ0FBQyw2QkFBNkIsQ0FBQyxDQUFDO0FBRWhELFNBQVMsYUFBYTtJQUNwQixPQUFPLENBQ0wsZUFDRSxTQUFTLEVBQUMsc0VBQXNFLEVBQ2hGLEtBQUssRUFBRTtZQUNMLFdBQVcsRUFBRSwwQkFBMEI7WUFDdkMsZUFBZSxFQUFFLG9CQUFvQjtZQUNyQyxLQUFLLEVBQUUsb0JBQW9CO1NBQzVCLEVBQ0QsS0FBSyxFQUFFLHVCQUF1Qiw2QkFBNkIsK0NBQStDLHlCQUdyRyxDQUNSLENBQUM7QUFDSixDQUFDO0FBRUQsU0FBUyxZQUFZLENBQUMsRUFDcEIsWUFBWSxFQUNaLEtBQUssRUFDTCxPQUFPLEdBQUcsS0FBSyxHQUtoQjtJQUNDLE1BQU0sUUFBUSxHQUFHLHNCQUFzQixDQUFDLFlBQVksQ0FBQyxDQUFDO0lBQ3RELE9BQU8sQ0FDTCxlQUFLLFNBQVMsRUFBQyxnREFBZ0QsYUFDN0QsZ0JBQ0UsU0FBUyxFQUFDLCtEQUErRCxFQUN6RSxLQUFLLEVBQUUsUUFBUSxDQUFDLENBQUMsQ0FBQyxFQUFFLEtBQUssRUFBRSxvQkFBb0IsRUFBRSxDQUFDLENBQUMsQ0FBQyxTQUFTLGFBRTdELGVBQU0sU0FBUyxFQUFDLFVBQVUs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Q0FBQztRQUM5QixPQUFPLEtBQUMsaUJBQWlCLElBQUMsSUFBSSxFQUFFLElBQUksR0FBSSxDQUFDO0lBQzNDLENBQUM7SUFFRCxNQUFNLFdBQVcsR0FBRyxjQUFjLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBRWhELE9BQU8sQ0FDTCxlQUFLLFNBQVMsRUFBQyx5QkFBeUIsYUFDdEMsY0FBSyxTQUFTLEVBQUMsZUFBZSxZQUMzQixJQUFJLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxDQUFDLE1BQU0sRUFBRSxLQUFLLEVBQUUsRUFBRSxDQUFDLENBQ25DLEtBQUMsWUFBWSxJQUNYLFlBQVksRUFBRSxNQUFNLENBQUMsR0FBRyxFQUV4QixPQUFPLEVBQUUsTUFBTSxDQUFDLEtBQUssS0FBSyxJQUFJLEVBQzlCLEtBQUssRUFBRSxNQUFNLENBQUMsS0FBSyxJQUFJLFNBQVMsSUFGM0IsR0FBRyxNQUFNLENBQUMsR0FBRyxJQUFJLEtBQUssRUFBRSxDQUc3QixDQUNILENBQUMsR0FDRSxFQUNMLFdBQVcsSUFBSSxDQUNkLGNBQ0UsU0FBUyxFQUFDLCtCQUErQixFQUN6QyxLQUFLLEVBQUU7b0JBQ0wsV0FBVyxFQUFFLDBCQUEwQjtvQkFDdkMsS0FBSyxFQUFFLG9CQUFvQjtpQkFDNUIsWUFFQSxXQUFXLEdBQ1IsQ0FDUCxJQUNHLENBQ1AsQ0FBQztBQUNKLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIndXNlIGNsaWVudCc7XG5cbmltcG9ydCB7XG4gIHR5cGUgQXR0cmlidXRlQ2hhbmdlLFxuICBSRVNFUlZFRF9BVFRSSUJVVEVfS0VZX1BSRUZJWCxcbn0gZnJvbSAnQHdvcmtmbG93L3dvcmxkJztcbmltcG9ydCB7IENvcHlhYmxlRGF0YUJsb2NrIH0gZnJvbSAnLi9jb3B5YWJsZS1kYXRhLWJsb2NrJztcbmltcG9ydCB7IERldGFpbENhcmQgfSBmcm9tICcuL2RldGFpbC1jYXJkJztcblxuLyoqXG4gKiBDaGVjayB3aGV0aGVyIGFuIGF0dHJpYnV0ZSBrZXkgaXMgaW4gdGhlIHJlc2VydmVkIChgJGAtcHJlZml4ZWQpXG4gKiBuYW1lc3BhY2UgdXNlZCBieSBmcmFtZXdvcmsvbGlicmFyeSBjb2RlLlxuICovXG5leHBvcnQgY29uc3QgaXNSZXNlcnZlZEF0dHJpYnV0ZUtleSA9IChrZXk6IHN0cmluZyk6IGJvb2xlYW4gPT5cbiAga2V5LnN0YXJ0c1dpdGgoUkVTRVJWRURfQVRUUklCVVRFX0tFWV9QUkVGSVgpO1xuXG5mdW5jdGlvbiBSZXNlcnZlZEJhZGdlKCkge1xuICByZXR1cm4gKFxuICAgIDxzcGFuXG4gICAgICBjbGFzc05hbWU9XCJzaHJpbmstMCByb3VuZGVkIGJvcmRlciBweC0xIHB5LXB4IHRleHQtWzEwcHhdIGZvbnQtbWVkaXVtIGxlYWRpbmctM1wiXG4gICAgICBzdHlsZT17e1xuICAgICAgICBib3JkZXJDb2xvcjogJ3ZhcigtLWRzLWdyYXktYWxwaGEtNDAwKScsXG4gICAgICAgIGJhY2tncm91bmRDb2xvcjogJ3ZhcigtLWRzLWdyYXktMTAwKScsXG4gICAgICAgIGNvbG9yOiAndmFyKC0tZHMtZ3JheS03MDApJyxcbiAgICAgIH19XG4gICAgICB0aXRsZT17YEtleXMgcHJlZml4ZWQgd2l0aCBcIiR7UkVTRVJWRURfQVRUUklCVVRFX0tFWV9QUkVGSVh9XCIgYXJlIHJlc2VydmVkIGZvciBmcmFtZXdvcmsgYW5kIGxpYnJhcnkgY29kZWB9XG4gICAgPlxuICAgICAgUmVzZXJ2ZWRcbiAgICA8L3NwYW4+XG4gICk7XG59XG5cbmZ1bmN0aW9uIEF0dHJpYnV0ZVJvdyh7XG4gIGF0dHJpYnV0ZUtleSxcbiAgdmFsdWUsXG4gIHJlbW92ZWQgPSBmYWxzZSxcbn06IHtcbiAgYXR0cmlidXRlS2V5OiBzdHJpbmc7XG4gIHZhbHVlPzogc3RyaW5nO1xuICByZW1vdmVkPzogYm9vbGVhbjtcbn0pIHtcbiAgY29uc3QgcmVzZXJ2ZWQgPSBpc1Jlc2VydmVkQXR0cmlidXRlS2V5KGF0dHJpYnV0ZUtleSk7XG4gIHJldHVybiAoXG4gICAgPGRpdiBjbGFzc05hbWU9XCJmbGV4IGl0ZW1zLWNlbnRlciBqdXN0aWZ5LWJldHdlZW4gZ2FwLTMgcHktMC41XCI+XG4gICAgICA8c3BhblxuICAgICAgICBjbGFzc05hbWU9XCJmbGV4IG1pbi13LTAgaXRlbXMtY2VudGVyIGdhcC0xLjUgdGV4dC1sYWJlbC0xMyB0ZXh0LWdyYXktOTAwXCJcbiAgICAgICAgc3R5bGU9e3Jlc2VydmVkID8geyBjb2xvcjogJ3ZhcigtLWRzLWdyYXktNzAwKScgfSA6IHVuZGVmaW5lZH1cbiAgICAgID5cbiAgICAgICAgPHNwYW4gY2xhc3NOYW1lPVwidHJ1bmNhdGVcIj57YXR0cmlidXRlS2V5fTwvc3Bhbj5cbiAgICAgICAge3Jlc2VydmVkICYmIDxSZXNlcnZlZEJhZGdlIC8+fVxuICAgICAgPC9zcGFuPlxuICAgICAge3JlbW92ZWQgPyAoXG4gICAgICAgIDxzcGFuIGNsYXNzTmFtZT1cInNocmluay0wIHRleHQtY29weS0xMyBpdGFsaWMgdGV4dC1ncmF5LTcwMFwiPlxuICAgICAgICAgIHJlbW92ZWRcbiAgICAgICAgPC9zcGFuPlxuICAgICAgKSA6IChcbiAgICAgICAgPHNwYW5cbiAgICAgICAgICBjbGFzc05hbWU9XCJtYXgtdy1bNjAlXSB0cnVuY2F0ZSB0ZXh0LWNvcHktMTMgdGV4dC1ncmF5LTEwMDBcIlxuICAgICAgICAgIHRpdGxlPXt2YWx1ZX1cbiAgICAgICAgPlxuICAgICAgICAgIHt2YWx1ZX1cbiAgICAgICAgPC9zcGFuPlxuICAgICAgKX1cbiAgICA8L2Rpdj5cbiAgKTtcbn1cblxuLyoqXG4gKiBTb3J0IGF0dHJpYnV0ZSBrZXlzIGZvciBkaXNwbGF5OiB1c2VyIGtleXMgZmlyc3QgKGFscGhhYmV0aWNhbCksIHRoZW5cbiAqIHJlc2VydmVkIGAkYC1wcmVmaXhlZCBrZXlzIChhbHBoYWJldGljYWwpLCBzbyBmcmFtZXdvcmsgbWV0YWRhdGEgZG9lc24ndFxuICogY3Jvd2Qgb3V0IHVzZXItc2V0IGF0dHJpYnV0ZXMuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBzb3J0QXR0cmlidXRlS2V5cyhrZXlzOiBzdHJpbmdbXSk6IHN0cmluZ1tdIHtcbiAgcmV0dXJuIFsuLi5rZXlzXS5zb3J0KChhLCBiKSA9PiB7XG4gICAgY29uc3QgYVJlc2VydmVkID0gaXNSZXNlcnZlZEF0dHJpYnV0ZUtleShhKTtcbiAgICBjb25zdCBiUmVzZXJ2ZWQgPSBpc1Jlc2VydmVkQXR0cmlidXRlS2V5KGIpO1xuICAgIGlmIChhUmVzZXJ2ZWQgIT09IGJSZXNlcnZlZCkgcmV0dXJuIGFSZXNlcnZlZCA/IDEgOiAtMTtcbiAgICByZXR1cm4gYS5sb2NhbGVDb21wYXJlKGIpO1xuICB9KTtcbn1cblxuLyoqXG4gKiBDb2xsYXBzaWJsZSBzZWN0aW9uIHNob3dpbmcgYSBydW4ncyBtYXRlcmlhbGl6ZWQgYXR0cmlidXRlcyBhcyBrZXktdmFsdWVcbiAqIHJvd3MuIFJlc2VydmVkIChgJGAtcHJlZml4ZWQpIGtleXMgYXJlIHZpc3VhbGx5IGRlLWVtcGhhc2l6ZWQgd2l0aCBhXG4gKiBiYWRnZSBhbmQgc29ydGVkIGFmdGVyIHVzZXIga2V5cy5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIFJ1bkF0dHJpYnV0ZXNDYXJkKHtcbiAgYXR0cmlidXRlcyxcbn06IHtcbiAgYXR0cmlidXRlczogUmVjb3JkPHN0cmluZywgc3RyaW5nPjtcbn0pIHtcbiAgY29uc3Qga2V5cyA9IHNvcnRBdHRyaWJ1dGVLZXlzKE9iamVjdC5rZXlzKGF0dHJpYnV0ZXMpKTtcbiAgaWYgKGtleXMubGVuZ3RoID09PSAwKSByZXR1cm4gbnVsbDtcblxuICByZXR1cm4gKFxuICAgIDxEZXRhaWxDYXJkIHN1bW1hcnk9XCJBdHRyaWJ1dGVzXCIgZGVmYXVsdE9wZW4gY29udGVudENsYXNzTmFtZT1cIm1iLTRcIj5cbiAgICAgIDxkaXYgY2xhc3NOYW1lPVwiZmxleCBmbGV4LWNvbFwiPlxuICAgICAgICB7a2V5cy5tYXAoKGtleSkgPT4gKFxuICAgICAgICAgIDxBdHRyaWJ1dGVSb3cgYXR0cmlidXRlS2V5PXtrZXl9IGtleT17a2V5fSB2YWx1ZT17YXR0cmlidXRlc1trZXldfSAvPlxuICAgICAgICApKX1cbiAgICAgIDwvZGl2PlxuICAgIDwvRGV0YWlsQ2FyZD5cbiAgKTtcbn1cblxuaW50ZXJmYWNlIEF0dHJTZXRFdmVudERhdGEge1xuICBjaGFuZ2VzOiBBdHRyaWJ1dGVDaGFuZ2VbXTtcbiAgd3JpdGVyPzpcbiAgICB8IHsgdHlwZTogJ3dvcmtmbG93JyB9XG4gICAgfCB7IHR5cGU6ICdzdGVwJzsgc3RlcElkOiBzdHJpbmc7IGF0dGVtcHQ6IG51bWJlciB9O1xufVxuXG5mdW5jdGlvbiBpc0F0dHJTZXRFdmVudERhdGEoZGF0YTogdW5rbm93bik6IGRhdGEgaXMgQXR0clNldEV2ZW50RGF0YSB7XG4gIGlmIChkYXRhID09PSBudWxsIHx8IHR5cGVvZiBkYXRhICE9PSAnb2JqZWN0JykgcmV0dXJuIGZhbHNlO1xuICBjb25zdCByZWNvcmQgPSBkYXRhIGFzIFJlY29yZDxzdHJpbmcsIHVua25vd24+O1xuICByZXR1cm4gKFxuICAgIEFycmF5LmlzQXJyYXkocmVjb3JkLmNoYW5nZXMpICYmXG4gICAgcmVjb3JkLmNoYW5nZXMuZXZlcnkoXG4gICAgICAoYykgPT5cbiAgICAgICAgYyAhPT0gbnVsbCAmJlxuICAgICAgICB0eXBlb2YgYyA9PT0gJ29iamVjdCcgJiZcbiAgICAgICAgdHlwZW9mIChjIGFzIFJlY29yZDxzdHJpbmcsIHVua25vd24+KS5rZXkgPT09ICdzdHJpbmcnXG4gICAgKVxuICApO1xufVxuXG5mdW5jdGlvbiBkZXNjcmliZVdyaXRlcih3cml0ZXI6IEF0dHJTZXRFdmVudERhdGFbJ3dyaXRlciddKTogc3RyaW5nIHwgbnVsbCB7XG4gIGlmICghd3JpdGVyKSByZXR1cm4gbnVsbDtcbiAgaWYgKHdyaXRlci50eXBlID09PSAnd29ya2Zsb3cnKSByZXR1cm4gJ1NldCBieSB3b3JrZmxvdyc7XG4gIGlmICh3cml0ZXIudHlwZSA9PT0gJ3N0ZXAnKSB7XG4gICAgcmV0dXJuIGBTZXQgYnkgc3RlcCAke3dyaXRlci5zdGVwSWR9IChhdHRlbXB0ICR7d3JpdGVyLmF0dGVtcHR9KWA7XG4gIH1cbiAgcmV0dXJuIG51bGw7XG59XG5cbi8qKlxuICogUmVuZGVycyB0aGUgcGF5bG9hZCBvZiBhbiBgYXR0cl9zZXRgIGV2ZW50OiB0aGUgbGlzdCBvZiBhdHRyaWJ1dGVcbiAqIGNoYW5nZXMgKHNldHMgYW5kIHJlbW92YWxzKSBwbHVzIHdoaWNoIHdyaXRlciAod29ya2Zsb3cgb3Igc3RlcClcbiAqIG1hZGUgdGhlbS4gRmFsbHMgYmFjayB0byB0aGUgZ2VuZXJpYyBKU09OIGJsb2NrIGZvciB1bmV4cGVjdGVkIHNoYXBlcy5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIEF0dHJTZXRFdmVudEJsb2NrKHsgZGF0YSB9OiB7IGRhdGE6IHVua25vd24gfSkge1xuICBpZiAoIWlzQXR0clNldEV2ZW50RGF0YShkYXRhKSkge1xuICAgIHJldHVybiA8Q29weWFibGVEYXRhQmxvY2sgZGF0YT17ZGF0YX0gLz47XG4gIH1cblxuICBjb25zdCB3cml0ZXJMYWJlbCA9IGRlc2NyaWJlV3JpdGVyKGRhdGEud3JpdGVyKTtcblxuICByZXR1cm4gKFxuICAgIDxkaXYgY2xhc3NOYW1lPVwiZmxleCBmbGV4LWNvbCBweC0zIHB5LTFcIj5cbiAgICAgIDxkaXYgY2xhc3NOYW1lPVwiZmxleCBmbGV4LWNvbFwiPlxuICAgICAgICB7ZGF0YS5jaGFuZ2VzLm1hcCgoY2hhbmdlLCBpbmRleCkgPT4gKFxuICAgICAgICAgIDxBdHRyaWJ1dGVSb3dcbiAgICAgICAgICAgIGF0dHJpYnV0ZUtleT17Y2hhbmdlLmtleX1cbiAgICAgICAgICAgIGtleT17YCR7Y2hhbmdlLmtleX06JHtpbmRleH1gfVxuICAgICAgICAgICAgcmVtb3ZlZD17Y2hhbmdlLnZhbHVlID09PSBudWxsfVxuICAgICAgICAgICAgdmFsdWU9e2NoYW5nZS52YWx1ZSA/PyB1bmRlZmluZWR9XG4gICAgICAgICAgLz5cbiAgICAgICAgKSl9XG4gICAgICA8L2Rpdj5cbiAgICAgIHt3cml0ZXJMYWJlbCAmJiAoXG4gICAgICAgIDxkaXZcbiAgICAgICAgICBjbGFzc05hbWU9XCJib3JkZXItdCBweS0xLjUgdGV4dC1sYWJlbC0xMlwiXG4gICAgICAgICAgc3R5bGU9e3tcbiAgICAgICAgICAgIGJvcmRlckNvbG9yOiAndmFyKC0tZHMtZ3JheS1hbHBoYS00MDApJyxcbiAgICAgICAgICAgIGNvbG9yOiAndmFyKC0tZHMtZ3JheS03MDApJyxcbiAgICAgICAgICB9fVxuICAgICAgICA+XG4gICAgICAgICAge3dyaXRlckxhYmVsfVxuICAgICAgICA8L2Rpdj5cbiAgICAgICl9XG4gICAgPC9kaXY+XG4gICk7XG59XG4iXX0=
|
|
@@ -108,4 +108,4 @@ function parseContent(content) {
|
|
|
108
108
|
}
|
|
109
109
|
return [];
|
|
110
110
|
}
|
|
111
|
-
//# sourceMappingURL=conversation-view.js.map
|
|
111
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29udmVyc2F0aW9uLXZpZXcuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvY29tcG9uZW50cy9zaWRlYmFyL2NvbnZlcnNhdGlvbi12aWV3LnRzeCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQ0EsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLFlBQVksQ0FBQztBQUN4QyxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFNckQsTUFBTSxVQUFVLGdCQUFnQixDQUFDLEVBQUUsUUFBUSxFQUF5QjtJQUNsRSxJQUFJLFFBQVEsQ0FBQyxNQUFNLEtBQUssQ0FBQyxFQUFFLENBQUM7UUFDMUIsT0FBTyxDQUNMLGNBQ0UsU0FBUyxFQUFDLDhCQUE4QixFQUN4QyxLQUFLLEVBQUUsRUFBRSxLQUFLLEVBQUUsb0JBQW9CLEVBQUUsNEJBR2xDLENBQ1AsQ0FBQztJQUNKLENBQUM7SUFFRCxPQUFPLENBQ0wsY0FBSyxTQUFTLEVBQUMseUJBQXlCLFlBQ3JDLFFBQVEsQ0FBQyxHQUFHLENBQUMsQ0FBQyxPQUFPLEVBQUUsS0FBSyxFQUFFLEVBQUUsQ0FBQyxDQUNoQyxLQUFDLGFBQWEsSUFBYSxPQUFPLEVBQUUsT0FBTyxJQUF2QixLQUFLLENBQXNCLENBQ2hELENBQUMsR0FDRSxDQUNQLENBQUM7QUFDSixDQUFDO0FBRUQsU0FBUyxhQUFhLENBQUMsRUFBRSxPQUFPLEVBQTZCO0lBQzNELE1BQU0sSUFBSSxHQUFHLE9BQU8sQ0FBQyxJQUFJLENBQUM7SUFDMUIsTUFBTSxLQUFLLEdBQUcsWUFBWSxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsQ0FBQztJQUM1QyxNQUFNLEtBQUssR0FBRyxZQUFZLENBQUMsSUFBSSxDQUFDLENBQUM7SUFFakMsT0FBTyxDQUNMLGVBQ0UsU0FBUyxFQUFDLCtCQUErQixFQUN6QyxLQUFLLEVBQUU7WUFDTCxlQUFlLEVBQUUsS0FBSyxDQUFDLEVBQUU7WUFDekIsV0FBVyxFQUFFLEtB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LEVBQUUsSUFBSSxFQUFFLEVBQUUsRUFBRSxDQUFDO1FBQ3BDLENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVELE9BQU8sRUFBRSxDQUFDO0FBQ1osQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB0eXBlIHsgTW9kZWxNZXNzYWdlIH0gZnJvbSAnYWknO1xuaW1wb3J0IHsgU3RyZWFtZG93biB9IGZyb20gJ3N0cmVhbWRvd24nO1xuaW1wb3J0IHsgRGF0YUluc3BlY3RvciB9IGZyb20gJy4uL3VpL2RhdGEtaW5zcGVjdG9yJztcblxuaW50ZXJmYWNlIENvbnZlcnNhdGlvblZpZXdQcm9wcyB7XG4gIG1lc3NhZ2VzOiBNb2RlbE1lc3NhZ2VbXTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIENvbnZlcnNhdGlvblZpZXcoeyBtZXNzYWdlcyB9OiBDb252ZXJzYXRpb25WaWV3UHJvcHMpIHtcbiAgaWYgKG1lc3NhZ2VzLmxlbmd0aCA9PT0gMCkge1xuICAgIHJldHVybiAoXG4gICAgICA8ZGl2XG4gICAgICAgIGNsYXNzTmFtZT1cInRleHQtY2VudGVyIHB5LTggdGV4dC1bMTFweF1cIlxuICAgICAgICBzdHlsZT17eyBjb2xvcjogJ3ZhcigtLWRzLWdyYXktNjAwKScgfX1cbiAgICAgID5cbiAgICAgICAgTm8gbWVzc2FnZXNcbiAgICAgIDwvZGl2PlxuICAgICk7XG4gIH1cblxuICByZXR1cm4gKFxuICAgIDxkaXYgY2xhc3NOYW1lPVwiZmxleCBmbGV4LWNvbCBnYXAtMyBwLTNcIj5cbiAgICAgIHttZXNzYWdlcy5tYXAoKG1lc3NhZ2UsIGluZGV4KSA9PiAoXG4gICAgICAgIDxNZXNzYWdlQnViYmxlIGtleT17aW5kZXh9IG1lc3NhZ2U9e21lc3NhZ2V9IC8+XG4gICAgICApKX1cbiAgICA8L2Rpdj5cbiAgKTtcbn1cblxuZnVuY3Rpb24gTWVzc2FnZUJ1YmJsZSh7IG1lc3NhZ2UgfTogeyBtZXNzYWdlOiBNb2RlbE1lc3NhZ2UgfSkge1xuICBjb25zdCByb2xlID0gbWVzc2FnZS5yb2xlO1xuICBjb25zdCBwYXJ0cyA9IHBhcnNlQ29udGVudChtZXNzYWdlLmNvbnRlbnQpO1xuICBjb25zdCBzdHlsZSA9IGdldFJvbGVTdHlsZShyb2xlKTtcblxuICByZXR1cm4gKFxuICAgIDxkaXZcbiAgICAgIGNsYXNzTmFtZT1cInJvdW5kZWQtbWQgYm9yZGVyIHRleHQtWzExcHhdXCJcbiAgICAgIHN0eWxlPXt7XG4gICAgICAgIGJhY2tncm91bmRDb2xvcjogc3R5bGUuYmcsXG4gICAgICAgIGJvcmRlckNvbG9yOiBzdHlsZS5ib3JkZXIsXG4gICAgICB9fVxuICAgID5cbiAgICAgIHsvKiBSb2xlIGhlYWRlciAqL31cbiAgICAgIDxkaXZcbiAgICAgICAgY2xhc3NOYW1lPVwicHgtMi41IHB5LTEgYm9yZGVyLWIgdGV4dC1bMTBweF0gZm9udC1tZWRpdW0gdXBwZXJjYXNlIHRyYWNraW5nLXdpZGVcIlxuICAgICAgICBzdHlsZT17e1xuICAgICAgICAgIGJvcmRlckNvbG9yOiBzdHlsZS5ib3JkZXIsXG4gICAgICAgICAgY29sb3I6IHN0eWxlLmxhYmVsLFxuICAgICAgICB9fVxuICAgICAgPlxuICAgICAgICB7cm9sZX1cbiAgICAgIDwvZGl2PlxuXG4gICAgICB7LyogQ29udGVudCAqL31cbiAgICAgIDxkaXYgY2xhc3NOYW1lPVwicHgtMi41IHB5LTIgc3BhY2UteS0yXCI+XG4gICAgICAgIHtwYXJ0cy5tYXAoKHBhcnQsIGkpID0+IChcbiAgICAgICAgICA8Q29udGVudFBhcnQga2V5PXtpfSBwYXJ0PXtwYXJ0fSByb2xlPXtyb2xlfSAvPlxuICAgICAgICApKX1cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuICApO1xufVxuXG5pbnRlcmZhY2UgUGFyc2VkUGFydCB7XG4gIHR5cGU6ICd0ZXh0JyB8ICd0b29sLWNhbGwnIHwgJ3Rvb2wtcmVzdWx0JztcbiAgdGV4dD86IHN0cmluZztcbiAgdG9vbE5hbWU/OiBzdHJpbmc7XG4gIGlucHV0PzogdW5rbm93bjtcbiAgb3V0cHV0PzogdW5rbm93bjtcbn1cblxuZnVuY3Rpb24gQ29udGVudFBhcnQoeyBwYXJ0LCByb2xlIH06IHsgcGFydDogUGFyc2VkUGFydDsgcm9sZTogc3RyaW5nIH0pIHtcbiAgaWYgKHBhcnQudHlwZSA9PT0gJ3RleHQnKSB7XG4gICAgaWYgKCFwYXJ0LnRleHQpIHJldHVybiBudWxsO1xuXG4gICAgLy8gVXNlIFN0cmVhbWRvd24gZm9yIGFzc2lzdGFudCBtZXNzYWdlcyAodGhleSBvZnRlbiBjb250YWluIG1hcmtkb3duKVxuICAgIGlmIChyb2xlID09PSAnYXNzaXN0YW50Jykge1xuICAgICAgcmV0dXJuIChcbiAgICAgICAgPGRpdlxuICAgICAgICAgIGNsYXNzTmFtZT1cInByb3NlIHByb3NlLXNtIG1heC13LW5vbmUgdGV4dC1bMTFweF0gWyY+KjpmaXJzdC1jaGlsZF06bXQtMCBbJj4qOmxhc3QtY2hpbGRdOm1iLTBcIlxuICAgICAgICAgIHN0eWxlPXt7IGNvbG9yOiAndmFyKC0tZHMtZ3JheS0xMDAwKScgfX1cbiAgICAgICAgPlxuICAgICAgICAgIDxTdHJlYW1kb3duPntwYXJ0LnRleHR9PC9TdHJlYW1kb3duPlxuICAgICAgICA8L2Rpdj5cbiAgICAgICk7XG4gICAgfVxuXG4gICAgcmV0dXJuIChcbiAgICAgIDxkaXZcbiAgICAgICAgY2xhc3NOYW1lPVwid2hpdGVzcGFjZS1wcmUtd3JhcCBicmVhay13b3Jkc1wiXG4gICAgICAgIHN0eWxlPXt7IGNvbG9yOiAndmFyKC0tZHMtZ3JheS0xMDAwKScgfX1cbiAgICAgID5cbiAgICAgICAge3BhcnQudGV4dH1cbiAgICAgIDwvZGl2PlxuICAgICk7XG4gIH1cblxuICBpZiAocGFydC50eXBlID09PSAndG9vbC1jYWxsJykge1xuICAgIHJldHVybiAoXG4gICAgICA8ZGl2XG4gICAgICAgIGNsYXNzTmFtZT1cInJvdW5kZWQgYm9yZGVyIHB4LTIgcHktMS41XCJcbiAgICAgICAgc3R5bGU9e3tcbiAgICAgICAgICBiYWNrZ3JvdW5kQ29sb3I6ICd2YXIoLS1kcy1wdXJwbGUtMTAwKScsXG4gICAgICAgICAgYm9yZGVyQ29sb3I6ICd2YXIoLS1kcy1wdXJwbGUtMzAwKScsXG4gICAgICAgIH19XG4gICAgICA+XG4gICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiZmxleCBpdGVtcy1jZW50ZXIgZ2FwLTEuNSB0ZXh0LVsxMHB4XSBmb250LW1lZGl1bVwiPlxuICAgICAgICAgIDxzcGFuPvCflKc8L3NwYW4+XG4gICAgICAgICAgPHNwYW4gc3R5bGU9e3sgY29sb3I6ICd2YXIoLS1kcy1wdXJwbGUtOTAwKScgfX0+e3BhcnQudG9vbE5hbWV9PC9zcGFuPlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAge3BhcnQuaW5wdXQgIT0gbnVsbCAmJiAoXG4gICAgICAgICAgPGRpdlxuICAgICAgICAgICAgY2xhc3NOYW1lPVwibXQtMS41IG92ZXJmbG93LXgtYXV0byBwLTEuNSByb3VuZGVkXCJcbiAgICAgICAgICAgIHN0eWxlPXt7IGJhY2tncm91bmRDb2xvcjogJ3ZhcigtLWRzLWdyYXktMTAwKScgfX1cbiAgICAgICAgICA+XG4gICAgICAgICAgICB7dHlwZW9mIHBhcnQuaW5wdXQgPT09ICdzdHJpbmcnID8gKFxuICAgICAgICAgICAgICA8cHJlXG4gICAgICAgICAgICAgICAgY2xhc3NOYW1lPVwidGV4dC1bMTBweF1cIlxuICAgICAgICAgICAgICAgIHN0eWxlPXt7IGNvbG9yOiAndmFyKC0tZHMtZ3JheS04MDApJyB9fVxuICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAge3BhcnQuaW5wdXR9XG4gICAgICAgICAgICAgIDwvcHJlPlxuICAgICAgICAgICAgKSA6IChcbiAgICAgICAgICAgICAgPERhdGFJbnNwZWN0b3IgZGF0YT17cGFydC5pbnB1dH0gLz5cbiAgICAgICAgICAgICl9XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgICl9XG4gICAgICA8L2Rpdj5cbiAgICApO1xuICB9XG5cbiAgaWYgKHBhcnQudHlwZSA9PT0gJ3Rvb2wtcmVzdWx0Jykge1xuICAgIHJldHVybiAoXG4gICAgICA8ZGl2XG4gICAgICAgIGNsYXNzTmFtZT1cInJvdW5kZWQgYm9yZGVyIHB4LTIgcHktMS41XCJcbiAgICAgICAgc3R5bGU9e3tcbiAgICAgICAgICBiYWNrZ3JvdW5kQ29sb3I6ICd2YXIoLS1kcy1ncmVlbi0xMDApJyxcbiAgICAgICAgICBib3JkZXJDb2xvcjogJ3ZhcigtLWRzLWdyZWVuLTMwMCknLFxuICAgICAgICB9fVxuICAgICAgPlxuICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImZsZXggaXRlbXMtY2VudGVyIGdhcC0xLjUgdGV4dC1bMTBweF0gZm9udC1tZWRpdW1cIj5cbiAgICAgICAgICA8c3Bhbj7inJM8L3NwYW4+XG4gICAgICAgICAgPHNwYW4gc3R5bGU9e3sgY29sb3I6ICd2YXIoLS1kcy1ncmVlbi05MDApJyB9fT5cbiAgICAgICAgICAgIHtwYXJ0LnRvb2xOYW1lfSByZXN1bHRcbiAgICAgICAgICA8L3NwYW4+XG4gICAgICAgIDwvZGl2PlxuICAgICAgICB7cGFydC5vdXRwdXQgIT0gbnVsbCAmJiAoXG4gICAgICAgICAgPGRpdlxuICAgICAgICAgICAgY2xhc3NOYW1lPVwibXQtMS41IG92ZXJmbG93LXgtYXV0byBtYXgtaC1bMjAwcHhdIG92ZXJmbG93LXktYXV0byBwLTEuNSByb3VuZGVkXCJcbiAgICAgICAgICAgIHN0eWxlPXt7IGJhY2tncm91bmRDb2xvcjogJ3ZhcigtLWRzLWdyYXktMTAwKScgfX1cbiAgICAgICAgICA+XG4gICAgICAgICAgICB7dHlwZW9mIHBhcnQub3V0cHV0ID09PSAnc3RyaW5nJyA/IChcbiAgICAgICAgICAgICAgPHByZVxuICAgICAgICAgICAgICAgIGNsYXNzTmFtZT1cInRleHQtWzEwcHhdXCJcbiAgICAgICAgICAgICAgICBzdHlsZT17eyBjb2xvcjogJ3ZhcigtLWRzLWdyYXktODAwKScgfX1cbiAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIHtwYXJ0Lm91dHB1dH1cbiAgICAgICAgICAgICAgPC9wcmU+XG4gICAgICAgICAgICApIDogKFxuICAgICAgICAgICAgICA8RGF0YUluc3BlY3RvciBkYXRhPXtwYXJ0Lm91dHB1dH0gZXhwYW5kTGV2ZWw9ezF9IC8+XG4gICAgICAgICAgICApfVxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICApfVxuICAgICAgPC9kaXY+XG4gICAgKTtcbiAgfVxuXG4gIHJldHVybiBudWxsO1xufVxuXG5mdW5jdGlvbiBnZXRSb2xlU3R5bGUocm9sZTogc3RyaW5nKSB7XG4gIHN3aXRjaCAocm9sZSkge1xuICAgIGNhc2UgJ3VzZXInOlxuICAgICAgcmV0dXJuIHtcbiAgICAgICAgYmc6ICd2YXIoLS1kcy1ibHVlLTEwMCknLFxuICAgICAgICBib3JkZXI6ICd2YXIoLS1kcy1ibHVlLTMwMCknLFxuICAgICAgICBsYWJlbDogJ3ZhcigtLWRzLWJsdWUtNzAwKScsXG4gICAgICB9O1xuICAgIGNhc2UgJ2Fzc2lzdGFudCc6XG4gICAgICByZXR1cm4ge1xuICAgICAgICBiZzogJ3ZhcigtLWRzLWdyYXktMTAwKScsXG4gICAgICAgIGJvcmRlcjogJ3ZhcigtLWRzLWdyYXktMzAwKScsXG4gICAgICAgIGxhYmVsOiAndmFyKC0tZHMtZ3JheS03MDApJyxcbiAgICAgIH07XG4gICAgY2FzZSAnc3lzdGVtJzpcbiAgICAgIHJldHVybiB7XG4gICAgICAgIGJnOiAndmFyKC0tZHMtYW1iZXItMTAwKScsXG4gICAgICAgIGJvcmRlcjogJ3ZhcigtLWRzLWFtYmVyLTMwMCknLFxuICAgICAgICBsYWJlbDogJ3ZhcigtLWRzLWFtYmVyLTcwMCknLFxuICAgICAgfTtcbiAgICBjYXNlICd0b29sJzpcbiAgICAgIHJldHVybiB7XG4gICAgICAgIGJnOiAndmFyKC0tZHMtZ3JlZW4tNTApJyxcbiAgICAgICAgYm9yZGVyOiAndmFyKC0tZHMtZ3JlZW4tMzAwKScsXG4gICAgICAgIGxhYmVsOiAndmFyKC0tZHMtZ3JlZW4tNzAwKScsXG4gICAgICB9O1xuICAgIGRlZmF1bHQ6XG4gICAgICByZXR1cm4ge1xuICAgICAgICBiZzogJ3ZhcigtLWRzLWdyYXktMTAwKScsXG4gICAgICAgIGJvcmRlcjogJ3ZhcigtLWRzLWdyYXktMzAwKScsXG4gICAgICAgIGxhYmVsOiAndmFyKC0tZHMtZ3JheS03MDApJyxcbiAgICAgIH07XG4gIH1cbn1cblxuZnVuY3Rpb24gcGFyc2VDb250ZW50KGNvbnRlbnQ6IHVua25vd24pOiBQYXJzZWRQYXJ0W10ge1xuICBpZiAodHlwZW9mIGNvbnRlbnQgPT09ICdzdHJpbmcnKSB7XG4gICAgcmV0dXJuIFt7IHR5cGU6ICd0ZXh0JywgdGV4dDogY29udGVudCB9XTtcbiAgfVxuXG4gIGlmIChBcnJheS5pc0FycmF5KGNvbnRlbnQpKSB7XG4gICAgcmV0dXJuIGNvbnRlbnQubWFwKChwYXJ0KTogUGFyc2VkUGFydCA9PiB7XG4gICAgICBpZiAodHlwZW9mIHBhcnQgPT09ICdzdHJpbmcnKSB7XG4gICAgICAgIHJldHVybiB7IHR5cGU6ICd0ZXh0JywgdGV4dDogcGFydCB9O1xuICAgICAgfVxuICAgICAgaWYgKHBhcnQ/LnR5cGUgPT09ICd0ZXh0Jykge1xuICAgICAgICByZXR1cm4geyB0eXBlOiAndGV4dCcsIHRleHQ6IFN0cmluZyhwYXJ0LnRleHQgPz8gJycpIH07XG4gICAgICB9XG4gICAgICBpZiAocGFydD8udHlwZSA9PT0gJ3Rvb2wtY2FsbCcpIHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICB0eXBlOiAndG9vbC1jYWxsJyxcbiAgICAgICAgICB0b29sTmFtZTogcGFydC50b29sTmFtZSxcbiAgICAgICAgICBpbnB1dDogcGFydC5pbnB1dCxcbiAgICAgICAgfTtcbiAgICAgIH1cbiAgICAgIGlmIChwYXJ0Py50eXBlID09PSAndG9vbC1yZXN1bHQnKSB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgdHlwZTogJ3Rvb2wtcmVzdWx0JyxcbiAgICAgICAgICB0b29sTmFtZTogcGFydC50b29sTmFtZSxcbiAgICAgICAgICBvdXRwdXQ6IHBhcnQub3V0cHV0LFxuICAgICAgICB9O1xuICAgICAgfVxuICAgICAgcmV0dXJuIHsgdHlwZTogJ3RleHQnLCB0ZXh0OiAnJyB9O1xuICAgIH0pO1xuICB9XG5cbiAgcmV0dXJuIFtdO1xufVxuIl19
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"copyable-data-block.d.ts","sourceRoot":"","sources":["../../../src/components/sidebar/copyable-data-block.tsx"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"copyable-data-block.d.ts","sourceRoot":"","sources":["../../../src/components/sidebar/copyable-data-block.tsx"],"names":[],"mappings":"AAcA,wBAAgB,kBAAkB,4CA8BjC;AAkBD,wBAAgB,iBAAiB,CAAC,EAAE,IAAI,EAAE,EAAE;IAAE,IAAI,EAAE,OAAO,CAAA;CAAE,2CAW5D"}
|
|
@@ -1,8 +1,19 @@
|
|
|
1
1
|
'use client';
|
|
2
2
|
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
3
|
-
import {
|
|
4
|
-
import {
|
|
5
|
-
import {
|
|
3
|
+
import { Lock } from 'lucide-react';
|
|
4
|
+
import { useContext } from 'react';
|
|
5
|
+
import { CopyButton } from '../new-trace-viewer/components/copy-button';
|
|
6
|
+
import { Button } from '../ui/button';
|
|
7
|
+
import { DataInspector, DecryptClickContext } from '../ui/data-inspector';
|
|
8
|
+
import { Spinner } from '../ui/spinner';
|
|
9
|
+
const encryptedPlaceholderPreview = `{
|
|
10
|
+
"input": "[encrypted]",
|
|
11
|
+
"result": "[encrypted]"
|
|
12
|
+
}`;
|
|
13
|
+
export function EncryptedDataBlock() {
|
|
14
|
+
const ctx = useContext(DecryptClickContext);
|
|
15
|
+
return (_jsxs("div", { className: "relative min-h-20 overflow-hidden rounded-md border border-gray-alpha-400 bg-background-100", children: [_jsx("pre", { "aria-hidden": "true", className: "pointer-events-none m-0 select-none p-3 font-mono text-label-12 text-gray-900 blur-[4px]", children: encryptedPlaceholderPreview }), _jsx("div", { className: "absolute inset-0 flex items-center justify-center", children: ctx ? (_jsxs(Button, { onClick: ctx.onDecrypt, disabled: ctx.isDecrypting, size: "xs", children: [ctx.isDecrypting ? (_jsx(Spinner, { size: 10 })) : (_jsx(Lock, { className: "h-3 w-3" })), _jsx("span", { children: "Decrypt" })] })) : (_jsxs("span", { className: "inline-flex items-center gap-1 rounded border border-gray-alpha-400 bg-gray-100 px-1.5 py-0.5 text-button-12 font-medium text-gray-700", children: [_jsx(Lock, { className: "h-3 w-3" }), "Encrypted"] })) })] }));
|
|
16
|
+
}
|
|
6
17
|
const serializeForClipboard = (value) => {
|
|
7
18
|
if (typeof value === 'string')
|
|
8
19
|
return value;
|
|
@@ -19,16 +30,6 @@ const serializeForClipboard = (value) => {
|
|
|
19
30
|
}
|
|
20
31
|
};
|
|
21
32
|
export function CopyableDataBlock({ data }) {
|
|
22
|
-
|
|
23
|
-
return (_jsxs("div", { className: "relative overflow-x-auto rounded-md border p-3 pt-9", style: { borderColor: 'var(--ds-gray-300)' }, children: [_jsx("button", { type: "button", "aria-label": "Copy data", title: "Copy", className: "!absolute !right-2 !top-2 !flex !h-6 !w-6 !items-center !justify-center !rounded-md !border !bg-[var(--ds-background-100)] !text-[var(--ds-gray-800)] transition-transform transition-colors duration-100 hover:!bg-[var(--ds-gray-alpha-200)] active:!scale-95 active:!bg-[var(--ds-gray-alpha-300)]", style: { borderColor: 'var(--ds-gray-300)' }, onClick: () => {
|
|
24
|
-
navigator.clipboard
|
|
25
|
-
.writeText(serializeForClipboard(data))
|
|
26
|
-
.then(() => {
|
|
27
|
-
toast.success('Copied to clipboard');
|
|
28
|
-
})
|
|
29
|
-
.catch(() => {
|
|
30
|
-
toast.error('Failed to copy');
|
|
31
|
-
});
|
|
32
|
-
}, children: _jsx(Copy, { size: 12 }) }), _jsx(DataInspector, { data: data })] }));
|
|
33
|
+
return (_jsxs("div", { className: "relative overflow-x-auto rounded-md border border-gray-alpha-400 p-3", children: [_jsx(CopyButton, { copyText: serializeForClipboard(data), ariaLabel: "Copy data", className: "absolute right-2 top-2 z-10 flex h-6 w-6 items-center justify-center rounded-md border border-gray-alpha-400 !bg-background-100 p-0 text-gray-900 transition-transform transition-colors duration-100 hover:bg-gray-200 active:scale-95 active:bg-gray-300" }), _jsx(DataInspector, { data: data })] }));
|
|
33
34
|
}
|
|
34
|
-
//# sourceMappingURL=
|
|
35
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29weWFibGUtZGF0YS1ibG9jay5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9jb21wb25lbnRzL3NpZGViYXIvY29weWFibGUtZGF0YS1ibG9jay50c3giXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsWUFBWSxDQUFDOztBQUViLE9BQU8sRUFBRSxJQUFJLEVBQUUsTUFBTSxjQUFjLENBQUM7QUFDcEMsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLE9BQU8sQ0FBQztBQUNuQyxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sNENBQTRDLENBQUM7QUFDeEUsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLGNBQWMsQ0FBQztBQUN0QyxPQUFPLEVBQUUsYUFBYSxFQUFFLG1CQUFtQixFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDMUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUV4QyxNQUFNLDJCQUEyQixHQUFHOzs7RUFHbEMsQ0FBQztBQUVILE1BQU0sVUFBVSxrQkFBa0I7SUFDaEMsTUFBTSxHQUFHLEdBQUcsVUFBVSxDQUFDLG1CQUFtQixDQUFDLENBQUM7SUFFNUMsT0FBTyxDQUNMLGVBQUssU0FBUyxFQUFDLDZGQUE2RixhQUMxRyw2QkFDYyxNQUFNLEVBQ2xCLFNBQVMsRUFBQywwRkFBMEYsWUFFbkcsMkJBQTJCLEdBQ3hCLEVBQ04sY0FBSyxTQUFTLEVBQUMsbURBQW1ELFlBQy9ELEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FDTCxNQUFDLE1BQU0sSUFBQyxPQUFPLEVBQUUsR0FBRyxDQUFDLFNBQVMsRUFBRSxRQUFRLEVBQUUsR0FBRyxDQUFDLFlBQVksRUFBRSxJQUFJLEVBQUMsSUFBSSxhQUNsRSxHQUFHLENBQUMsWUFBWSxDQUFDLENBQUMsQ0FBQyxDQUNsQixLQUFDLE9BQU8sSUFBQyxJQUFJLEVBQUUsRUFBRSxHQUFJLENBQ3RCLENBQUMsQ0FBQyxDQUFDLENBQ0YsS0FBQyxJQUFJLElBQUMsU0FBUyxFQUFDLFNBQVMsR0FBRyxDQUM3QixFQUNELHFDQUFvQixJQUNiLENBQ1YsQ0FBQyxDQUFDLENBQUMsQ0FDRixnQkFBTSxTQUFTLEVBQUMsd0lBQXdJLGFBQ3RKLEtBQUMsSUFBSSxJQUFDLFNBQVMsRUFBQyxTQUFTLEdBQUcsaUJBRXZCLENBQ1IsR0FDRyxJQUNGLENBQ1AsQ0FBQztBQUNKLENBQUM7QUFFRCxNQUFNLHFCQUFxQixHQUFHLENBQUMsS0FBYyxFQUFVLEVBQUU7SUFDdkQsSUFBSSxPQUFPLEtBQUssS0FBSyxRQUFRO1FBQUUsT0FBTyxLQUFLLENBQUM7SUFDNUMsSUFDRSxPQUFPLEtBQUssS0FBSyxRQUFRO1FBQ3pCLE9BQU8sS0FBSyxLQUFLLFNBQVM7UUFDMUIsS0FBSyxLQUFLLElBQUksRUFDZCxDQUFDO1FBQ0QsT0FBTyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDdkIsQ0FBQztJQUNELElBQUksQ0FBQztRQUNILE9BQU8sSUFBSSxDQUFDLFNBQVMsQ0FBQyxLQUFLLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQyxDQUFDO0lBQ3hDLENBQUM7SUFBQyxNQUFNLENBQUM7UUFDUCxPQUFPLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUN2QixDQUFDO0FBQ0gsQ0FBQyxDQUFDO0FBRUYsTUFBTSxVQUFVLGlCQUFpQixDQUFDLEVBQUUsSUFBSSxFQUFxQjtJQUMzRCxPQUFPLENBQ0wsZUFBSyxTQUFTLEVBQUMsc0VBQXNFLGFBQ25GLEtBQUMsVUFBVSxJQUNULFFBQVEsRUFBRSxxQkFBcUIsQ0FBQyxJQUFJLENBQUMsRUFDckMsU0FBUyxFQUFDLFdBQVcsRUFDckIsU0FBUyxFQUFDLDRQQUE0UCxHQUN0USxFQUNGLEtBQUMsYUFBYSxJQUFDLElBQUksRUFBRSxJQUFJLEdBQUksSUFDekIsQ0FDUCxDQUFDO0FBQ0osQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIid1c2UgY2xpZW50JztcblxuaW1wb3J0IHsgTG9jayB9IGZyb20gJ2x1Y2lkZS1yZWFjdCc7XG5pbXBvcnQgeyB1c2VDb250ZXh0IH0gZnJvbSAncmVhY3QnO1xuaW1wb3J0IHsgQ29weUJ1dHRvbiB9IGZyb20gJy4uL25ldy10cmFjZS12aWV3ZXIvY29tcG9uZW50cy9jb3B5LWJ1dHRvbic7XG5pbXBvcnQgeyBCdXR0b24gfSBmcm9tICcuLi91aS9idXR0b24nO1xuaW1wb3J0IHsgRGF0YUluc3BlY3RvciwgRGVjcnlwdENsaWNrQ29udGV4dCB9IGZyb20gJy4uL3VpL2RhdGEtaW5zcGVjdG9yJztcbmltcG9ydCB7IFNwaW5uZXIgfSBmcm9tICcuLi91aS9zcGlubmVyJztcblxuY29uc3QgZW5jcnlwdGVkUGxhY2Vob2xkZXJQcmV2aWV3ID0gYHtcbiAgXCJpbnB1dFwiOiBcIltlbmNyeXB0ZWRdXCIsXG4gIFwicmVzdWx0XCI6IFwiW2VuY3J5cHRlZF1cIlxufWA7XG5cbmV4cG9ydCBmdW5jdGlvbiBFbmNyeXB0ZWREYXRhQmxvY2soKSB7XG4gIGNvbnN0IGN0eCA9IHVzZUNvbnRleHQoRGVjcnlwdENsaWNrQ29udGV4dCk7XG5cbiAgcmV0dXJuIChcbiAgICA8ZGl2IGNsYXNzTmFtZT1cInJlbGF0aXZlIG1pbi1oLTIwIG92ZXJmbG93LWhpZGRlbiByb3VuZGVkLW1kIGJvcmRlciBib3JkZXItZ3JheS1hbHBoYS00MDAgYmctYmFja2dyb3VuZC0xMDBcIj5cbiAgICAgIDxwcmVcbiAgICAgICAgYXJpYS1oaWRkZW49XCJ0cnVlXCJcbiAgICAgICAgY2xhc3NOYW1lPVwicG9pbnRlci1ldmVudHMtbm9uZSBtLTAgc2VsZWN0LW5vbmUgcC0zIGZvbnQtbW9ubyB0ZXh0LWxhYmVsLTEyIHRleHQtZ3JheS05MDAgYmx1ci1bNHB4XVwiXG4gICAgICA+XG4gICAgICAgIHtlbmNyeXB0ZWRQbGFjZWhvbGRlclByZXZpZXd9XG4gICAgICA8L3ByZT5cbiAgICAgIDxkaXYgY2xhc3NOYW1lPVwiYWJzb2x1dGUgaW5zZXQtMCBmbGV4IGl0ZW1zLWNlbnRlciBqdXN0aWZ5LWNlbnRlclwiPlxuICAgICAgICB7Y3R4ID8gKFxuICAgICAgICAgIDxCdXR0b24gb25DbGljaz17Y3R4Lm9uRGVjcnlwdH0gZGlzYWJsZWQ9e2N0eC5pc0RlY3J5cHRpbmd9IHNpemU9XCJ4c1wiPlxuICAgICAgICAgICAge2N0eC5pc0RlY3J5cHRpbmcgPyAoXG4gICAgICAgICAgICAgIDxTcGlubmVyIHNpemU9ezEwfSAvPlxuICAgICAgICAgICAgKSA6IChcbiAgICAgICAgICAgICAgPExvY2sgY2xhc3NOYW1lPVwiaC0zIHctM1wiIC8+XG4gICAgICAgICAgICApfVxuICAgICAgICAgICAgPHNwYW4+RGVjcnlwdDwvc3Bhbj5cbiAgICAgICAgICA8L0J1dHRvbj5cbiAgICAgICAgKSA6IChcbiAgICAgICAgICA8c3BhbiBjbGFzc05hbWU9XCJpbmxpbmUtZmxleCBpdGVtcy1jZW50ZXIgZ2FwLTEgcm91bmRlZCBib3JkZXIgYm9yZGVyLWdyYXktYWxwaGEtNDAwIGJnLWdyYXktMTAwIHB4LTEuNSBweS0wLjUgdGV4dC1idXR0b24tMTIgZm9udC1tZWRpdW0gdGV4dC1ncmF5LTcwMFwiPlxuICAgICAgICAgICAgPExvY2sgY2xhc3NOYW1lPVwiaC0zIHctM1wiIC8+XG4gICAgICAgICAgICBFbmNyeXB0ZWRcbiAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICl9XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbiAgKTtcbn1cblxuY29uc3Qgc2VyaWFsaXplRm9yQ2xpcGJvYXJkID0gKHZhbHVlOiB1bmtub3duKTogc3RyaW5nID0+IHtcbiAgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gJ3N0cmluZycpIHJldHVybiB2YWx1ZTtcbiAgaWYgKFxuICAgIHR5cGVvZiB2YWx1ZSA9PT0gJ251bWJlcicgfHxcbiAgICB0eXBlb2YgdmFsdWUgPT09ICdib29sZWFuJyB8fFxuICAgIHZhbHVlID09PSBudWxsXG4gICkge1xuICAgIHJldHVybiBTdHJpbmcodmFsdWUpO1xuICB9XG4gIHRyeSB7XG4gICAgcmV0dXJuIEpTT04uc3RyaW5naWZ5KHZhbHVlLCBudWxsLCAyKTtcbiAgfSBjYXRjaCB7XG4gICAgcmV0dXJuIFN0cmluZyh2YWx1ZSk7XG4gIH1cbn07XG5cbmV4cG9ydCBmdW5jdGlvbiBDb3B5YWJsZURhdGFCbG9jayh7IGRhdGEgfTogeyBkYXRhOiB1bmtub3duIH0pIHtcbiAgcmV0dXJuIChcbiAgICA8ZGl2IGNsYXNzTmFtZT1cInJlbGF0aXZlIG92ZXJmbG93LXgtYXV0byByb3VuZGVkLW1kIGJvcmRlciBib3JkZXItZ3JheS1hbHBoYS00MDAgcC0zXCI+XG4gICAgICA8Q29weUJ1dHRvblxuICAgICAgICBjb3B5VGV4dD17c2VyaWFsaXplRm9yQ2xpcGJvYXJkKGRhdGEpfVxuICAgICAgICBhcmlhTGFiZWw9XCJDb3B5IGRhdGFcIlxuICAgICAgICBjbGFzc05hbWU9XCJhYnNvbHV0ZSByaWdodC0yIHRvcC0yIHotMTAgZmxleCBoLTYgdy02IGl0ZW1zLWNlbnRlciBqdXN0aWZ5LWNlbnRlciByb3VuZGVkLW1kIGJvcmRlciBib3JkZXItZ3JheS1hbHBoYS00MDAgIWJnLWJhY2tncm91bmQtMTAwIHAtMCB0ZXh0LWdyYXktOTAwIHRyYW5zaXRpb24tdHJhbnNmb3JtIHRyYW5zaXRpb24tY29sb3JzIGR1cmF0aW9uLTEwMCBob3ZlcjpiZy1ncmF5LTIwMCBhY3RpdmU6c2NhbGUtOTUgYWN0aXZlOmJnLWdyYXktMzAwXCJcbiAgICAgIC8+XG4gICAgICA8RGF0YUluc3BlY3RvciBkYXRhPXtkYXRhfSAvPlxuICAgIDwvZGl2PlxuICApO1xufVxuIl19
|
|
@@ -1,14 +1,13 @@
|
|
|
1
|
-
import type
|
|
2
|
-
export declare function DetailCard({ summary, children, onToggle, disabled, summaryClassName, contentClassName, }: {
|
|
1
|
+
import { type ReactNode } from 'react';
|
|
2
|
+
export declare function DetailCard({ summary, children, onToggle, disabled, defaultOpen, variant, trailing, summaryClassName, contentClassName, }: {
|
|
3
3
|
summary: ReactNode;
|
|
4
4
|
children?: ReactNode;
|
|
5
|
-
/** Called when the detail card is expanded/collapsed */
|
|
6
5
|
onToggle?: (open: boolean) => void;
|
|
7
|
-
/** Renders a non-expandable summary card when true. */
|
|
8
6
|
disabled?: boolean;
|
|
9
|
-
|
|
7
|
+
defaultOpen?: boolean;
|
|
8
|
+
variant?: 'section' | 'card';
|
|
9
|
+
trailing?: ReactNode;
|
|
10
10
|
summaryClassName?: string;
|
|
11
|
-
/** Extra classes for expanded content wrapper. */
|
|
12
11
|
contentClassName?: string;
|
|
13
12
|
}): import("react/jsx-runtime").JSX.Element;
|
|
14
13
|
//# sourceMappingURL=detail-card.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"detail-card.d.ts","sourceRoot":"","sources":["../../../src/components/sidebar/detail-card.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,
|
|
1
|
+
{"version":3,"file":"detail-card.d.ts","sourceRoot":"","sources":["../../../src/components/sidebar/detail-card.tsx"],"names":[],"mappings":"AACA,OAAO,EAAE,KAAK,SAAS,EAAY,MAAM,OAAO,CAAC;AAGjD,wBAAgB,UAAU,CAAC,EACzB,OAAO,EACP,QAAQ,EACR,QAAQ,EACR,QAAgB,EAChB,WAAmB,EACnB,OAAmB,EACnB,QAAQ,EACR,gBAAgB,EAChB,gBAAgB,GACjB,EAAE;IACD,OAAO,EAAE,SAAS,CAAC;IACnB,QAAQ,CAAC,EAAE,SAAS,CAAC;IACrB,QAAQ,CAAC,EAAE,CAAC,IAAI,EAAE,OAAO,KAAK,IAAI,CAAC;IACnC,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,OAAO,CAAC,EAAE,SAAS,GAAG,MAAM,CAAC;IAC7B,QAAQ,CAAC,EAAE,SAAS,CAAC;IACrB,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,gBAAgB,CAAC,EAAE,MAAM,CAAC;CAC3B,2CAsHA"}
|
|
@@ -1,20 +1,36 @@
|
|
|
1
1
|
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
-
import { ChevronRight } from 'lucide-react';
|
|
3
|
-
|
|
2
|
+
import { ChevronDown, ChevronRight } from 'lucide-react';
|
|
3
|
+
import { useState } from 'react';
|
|
4
|
+
import { cn } from '../../lib/utils';
|
|
5
|
+
export function DetailCard({ summary, children, onToggle, disabled = false, defaultOpen = false, variant = 'section', trailing, summaryClassName, contentClassName, }) {
|
|
6
|
+
const [open, setOpen] = useState(defaultOpen);
|
|
7
|
+
const handleToggle = (e) => {
|
|
8
|
+
// React surfaces `toggle` as a bubbling synthetic event even though the
|
|
9
|
+
// native event doesn't bubble. Without this guard, a nested <details>
|
|
10
|
+
// (e.g. an event card inside the Events section) collapsing would flip
|
|
11
|
+
// the outer DetailCard's state. Only react to direct toggles.
|
|
12
|
+
if (e.target !== e.currentTarget)
|
|
13
|
+
return;
|
|
14
|
+
const next = e.currentTarget.open;
|
|
15
|
+
setOpen(next);
|
|
16
|
+
onToggle?.(next);
|
|
17
|
+
};
|
|
18
|
+
if (variant === 'card') {
|
|
19
|
+
if (disabled) {
|
|
20
|
+
return (_jsx("div", { className: cn('list-none px-3 py-4 bg-background-200 [&::-webkit-details-marker]:hidden', summaryClassName), style: { cursor: 'not-allowed', opacity: 0.8 }, children: summary }));
|
|
21
|
+
}
|
|
22
|
+
return (_jsxs("details", { className: "group/card last:border-b border-gray-alpha-400", open: open, onToggle: handleToggle, children: [_jsx("summary", { className: cn('list-none cursor-pointer px-3 py-4 border-t border-gray-alpha-400 bg-background-200 hover:bg-gray-100 [&::-webkit-details-marker]:hidden', summaryClassName), children: _jsxs("span", { className: "flex items-center gap-1.5", children: [_jsx(ChevronRight, { size: 14, className: cn('shrink-0 text-gray-700 group-hover/card:text-gray-1000', open && 'rotate-90') }), summary] }) }), _jsx("div", { className: contentClassName, children: children })] }));
|
|
23
|
+
}
|
|
24
|
+
// Shared height with the expandable summary row. Keeps the trailing /
|
|
25
|
+
// disabled / chevron variants visually identical in height regardless of
|
|
26
|
+
// what's in the trailing slot.
|
|
27
|
+
const rowClasses = 'flex h-9 items-center gap-2 px-2 -mx-2 text-heading-14 font-medium my-2';
|
|
28
|
+
if (trailing) {
|
|
29
|
+
return (_jsx("section", { className: "-mx-4 border-t px-4 border-gray-alpha-400", children: _jsxs("div", { className: cn(rowClasses, summaryClassName), children: [_jsx("div", { className: "isolate relative shrink-0 w-3.5 h-3.5 text-gray-700", children: _jsx(ChevronRight, { size: 14, className: "absolute top-1/2 left-1/2 -translate-x-1/2 -translate-y-1/2" }) }), _jsx("span", { className: "min-w-0 flex-1", children: summary }), _jsx("div", { className: "shrink-0 pr-1", children: trailing })] }) }));
|
|
30
|
+
}
|
|
4
31
|
if (disabled) {
|
|
5
|
-
return (_jsx("
|
|
6
|
-
borderColor: 'var(--ds-gray-300)',
|
|
7
|
-
backgroundColor: 'var(--ds-gray-100)',
|
|
8
|
-
color: 'var(--ds-gray-700)',
|
|
9
|
-
cursor: 'not-allowed',
|
|
10
|
-
opacity: 0.8,
|
|
11
|
-
}, children: summary }));
|
|
32
|
+
return (_jsx("section", { className: "-mx-4 border-t px-4 border-gray-alpha-400", children: _jsx("div", { className: cn(rowClasses, summaryClassName), style: { color: 'var(--ds-gray-700)', cursor: 'not-allowed' }, children: _jsx("span", { className: "min-w-0 flex-1", children: summary }) }) }));
|
|
12
33
|
}
|
|
13
|
-
return (_jsxs("details", { className: "group",
|
|
14
|
-
borderColor: 'var(--ds-gray-300)',
|
|
15
|
-
backgroundColor: 'var(--ds-gray-100)',
|
|
16
|
-
color: 'var(--ds-gray-900)',
|
|
17
|
-
listStyle: 'none',
|
|
18
|
-
}, children: _jsxs("span", { className: "flex items-center gap-1.5", children: [_jsx(ChevronRight, { size: 14, className: "shrink-0 transition-transform group-open:rotate-90" }), summary] }) }), _jsxs("div", { className: `relative pl-6 mt-3 ${contentClassName ?? ''}`, children: [_jsx("div", { className: "absolute left-3 -top-3 w-px h-3", style: { backgroundColor: 'var(--ds-gray-400)' } }), _jsx("div", { className: "absolute left-3 top-0 w-3 h-3 border-l border-b rounded-bl-lg", style: { borderColor: 'var(--ds-gray-400)' } }), _jsx("div", { className: "absolute left-6 top-3 w-0 h-px -translate-y-px", style: { backgroundColor: 'var(--ds-gray-400)' } }), _jsx("div", { children: children })] })] }));
|
|
34
|
+
return (_jsx("section", { className: "-mx-4 border-t px-4 border-gray-alpha-400", children: _jsxs("details", { className: "group", open: open, onToggle: handleToggle, children: [_jsxs("summary", { className: cn('group/trigger list-none cursor-pointer rounded hover:bg-gray-alpha-100 [&::-webkit-details-marker]:hidden', rowClasses, summaryClassName), children: [_jsxs("div", { className: "isolate relative shrink-0 text-gray-700 group-hover/trigger:text-gray-1000 w-3.5 h-3.5", children: [_jsx(ChevronRight, { size: 14, className: "absolute top-1/2 left-1/2 -translate-x-1/2 -translate-y-1/2 opacity-100 group-open:opacity-0" }), _jsx(ChevronDown, { size: 14, className: "absolute top-1/2 left-1/2 -translate-x-1/2 -translate-y-1/2 opacity-0 group-open:opacity-100" })] }), _jsx("span", { className: "min-w-0 flex-1", children: summary })] }), _jsx("div", { className: cn('mb-3', contentClassName), children: children })] }) }));
|
|
19
35
|
}
|
|
20
|
-
//# sourceMappingURL=
|
|
36
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGV0YWlsLWNhcmQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvY29tcG9uZW50cy9zaWRlYmFyL2RldGFpbC1jYXJkLnRzeCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsT0FBTyxFQUFFLFdBQVcsRUFBRSxZQUFZLEVBQUUsTUFBTSxjQUFjLENBQUM7QUFDekQsT0FBTyxFQUFrQixRQUFRLEVBQUUsTUFBTSxPQUFPLENBQUM7QUFDakQsT0FBTyxFQUFFLEVBQUUsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBRXJDLE1BQU0sVUFBVSxVQUFVLENBQUMsRUFDekIsT0FBTyxFQUNQLFFBQVEsRUFDUixRQUFRLEVBQ1IsUUFBUSxHQUFHLEtBQUssRUFDaEIsV0FBVyxHQUFHLEtBQUssRUFDbkIsT0FBTyxHQUFHLFNBQVMsRUFDbkIsUUFBUSxFQUNSLGdCQUFnQixFQUNoQixnQkFBZ0IsR0FXakI7SUFDQyxNQUFNLENBQUMsSUFBSSxFQUFFLE9BQU8sQ0FBQyxHQUFHLFFBQVEsQ0FBQyxXQUFXLENBQUMsQ0FBQztJQUU5QyxNQUFNLFlBQVksR0FBRyxDQUFDLENBQTJDLEVBQUUsRUFBRTtRQUNuRSx3RUFBd0U7UUFDeEUsc0VBQXNFO1FBQ3RFLHVFQUF1RTtRQUN2RSw4REFBOEQ7UUFDOUQsSUFBSSxDQUFDLENBQUMsTUFBTSxLQUFLLENBQUMsQ0FBQyxhQUFhO1lBQUUsT0FBTztRQUN6QyxNQUFNLElBQUksR0FBRyxDQUFDLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQztRQUNsQyxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDZCxRQUFRLEVBQUUsQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUNuQixDQUFDLENBQUM7SUFFRixJQUFJLE9BQU8sS0FBSyxNQUFNLEVBQUUsQ0FBQztRQUN2QixJQUFJLFFBQVEsRUFBRSxDQUFDO1lBQ2IsT0FBTyxDQUNMLGNBQ0UsU0FBUyxFQUFFLEVBQUUsQ0FDWCwwRUFBMEUsRUFDMUUsZ0JBQWdCLENBQ2pCLEVBQ0QsS0FBSyxFQUFFLEVBQUUsTUFBTSxFQUFFLGFBQWEsRUFBRSxPQUFPLEVBQUUsR0FBRyxFQUFFLFlBRTdDLE9BQU8sR0FDSixDQUNQLENBQUM7UUFDSixDQUFDO1FBQ0QsT0FBTyxDQUNMLG1CQUNFLFNBQVMsRUFBQyxnREFBZ0QsRUFDMUQsSUFBSSxFQUFFLElBQUksRUFDVixRQUFRLEVBQUUsWUFBWSxhQUV0QixrQkFDRSxTQUFTLEVBQUUsRUFBRSxDQUNYLDBJQUEwSSxFQUMxSSxnQkFBZ0IsQ0FDakIsWUFFRCxnQkFBTSxTQUFTLEVBQUMsMkJBQTJCLGFBQ3pDLEtBQUMsWUFBWSxJQUNYLElBQUksRUFBRSxFQUFFLEVBQ1IsU0FBUyxFQUFFLEVBQUUsQ0FDWCx3REFBd0QsRUFDeEQsSUFBSSxJQUFJLFdBQVcsQ0FDcEIsR0FDRCxFQUNELE9BQU8sSUFDSCxHQUNDLEVBQ1YsY0FBSyxTQUFTLEVBQUUsZ0JBQWdCLFlBQUcsUUFBUSxHQUFPLElBQzFDLENBQ1gsQ0FBQztJQUNKLENBQUM7SUFFRCxzRUFBc0U7SUFDdEUseUVBQXlFO0lBQ3pFLCtCQUErQjtJQUMvQixNQUFNLFVBQVUsR0FDZCx5RUFBeUUsQ0FBQztJQUU1RSxJQUFJLFFBQVEsRUFBRSxDQUFDO1FBQ2IsT0FBTyxDQUNMLGtCQUFTLFNBQVMsRUFBQywyQ0FBMkMsWUFDNUQsZUFBSyxTQUFTLEVBQUUsRUFBRSxDQUFDLFVBQVUsRUFBRSxnQkFBZ0IsQ0FBQyxhQUM5QyxjQUFLLFNBQVMsRUFBQyxxREFBcUQsWUFDbEUsS0FBQyxZQUFZLElBQ1gsSUFBSSxFQUFFLEVBQUUsRUFDUixTQUFTLEVBQUMsNkRBQTZELEdBQ3ZFLEdBQ0UsRUFDTixlQUFNLFNBQVMsRUFBQyxnQkFBZ0IsWUFBRSxPQUFPLEdBQVEsRUFDakQsY0FBSyxTQUFTLEVBQUMsZUFBZSxZQUFFLFFBQVEsR0FBTyxJQUMzQyxHQUNFLENBQ1gsQ0FBQztJQUNKLENBQUM7SUFFRCxJQUFJLFFBQVEsRUFBRSxDQUFDO1FBQ2IsT0FBTyxDQUNMLGtCQUFTLFNBQVMsRUFBQywyQ0FBMkMsWUFDNUQsY0FDRSxTQUFTLEVBQUUsRUFBRSxDQUFDLFVBQVUsRUFBRSxnQkFBZ0IsQ0FBQyxFQUMzQyxLQUFLLEVBQUUsRUFBRSxLQUFLLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSxFQUFFLGFBQWEsRUFBRSxZQUU3RCxlQUFNLFNBQVMsRUFBQyxnQkFBZ0IsWUFBRSxPQUFPLEdBQVEsR0FDN0MsR0FDRSxDQUNYLENBQUM7SUFDSixDQUFDO0lBRUQsT0FBTyxDQUNMLGtCQUFTLFNBQVMsRUFBQywyQ0FBMkMsWUFDNUQsbUJBQVMsU0FBUyxFQUFDLE9BQU8sRUFBQyxJQUFJLEVBQUUsSUFBSSxFQUFFLFFBQVEsRUFBRSxZQUFZLGFBQzNELG1CQUNFLFNBQVMsRUFBRSxFQUFFLENBQ1gsMkdBQTJHLEVBQzNHLFVBQVUsRUFDVixnQkFBZ0IsQ0FDakIsYUFFRCxlQUFLLFNBQVMsRUFBQyx3RkFBd0YsYUFDckcsS0FBQyxZQUFZLElBQ1gsSUFBSSxFQUFFLEVBQUUsRUFDUixTQUFTLEVBQUMsOEZBQThGLEdBQ3hHLEVBQ0YsS0FBQyxXQUFXLElBQ1YsSUFBSSxFQUFFLEVBQUUsRUFDUixTQUFTLEVBQUMsOEZBQThGLEdBQ3hHLElBQ0UsRUFDTixlQUFNLFNBQVMsRUFBQyxnQkFBZ0IsWUFBRSxPQUFPLEdBQVEsSUFDekMsRUFDVixjQUFLLFNBQVMsRUFBRSxFQUFFLENBQUMsTUFBTSxFQUFFLGdCQUFnQixDQUFDLFlBQUcsUUFBUSxHQUFPLElBQ3RELEdBQ0YsQ0FDWCxDQUFDO0FBQ0osQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENoZXZyb25Eb3duLCBDaGV2cm9uUmlnaHQgfSBmcm9tICdsdWNpZGUtcmVhY3QnO1xuaW1wb3J0IHsgdHlwZSBSZWFjdE5vZGUsIHVzZVN0YXRlIH0gZnJvbSAncmVhY3QnO1xuaW1wb3J0IHsgY24gfSBmcm9tICcuLi8uLi9saWIvdXRpbHMnO1xuXG5leHBvcnQgZnVuY3Rpb24gRGV0YWlsQ2FyZCh7XG4gIHN1bW1hcnksXG4gIGNoaWxkcmVuLFxuICBvblRvZ2dsZSxcbiAgZGlzYWJsZWQgPSBmYWxzZSxcbiAgZGVmYXVsdE9wZW4gPSBmYWxzZSxcbiAgdmFyaWFudCA9ICdzZWN0aW9uJyxcbiAgdHJhaWxpbmcsXG4gIHN1bW1hcnlDbGFzc05hbWUsXG4gIGNvbnRlbnRDbGFzc05hbWUsXG59OiB7XG4gIHN1bW1hcnk6IFJlYWN0Tm9kZTtcbiAgY2hpbGRyZW4/OiBSZWFjdE5vZGU7XG4gIG9uVG9nZ2xlPzogKG9wZW46IGJvb2xlYW4pID0+IHZvaWQ7XG4gIGRpc2FibGVkPzogYm9vbGVhbjtcbiAgZGVmYXVsdE9wZW4/OiBib29sZWFuO1xuICB2YXJpYW50PzogJ3NlY3Rpb24nIHwgJ2NhcmQnO1xuICB0cmFpbGluZz86IFJlYWN0Tm9kZTtcbiAgc3VtbWFyeUNsYXNzTmFtZT86IHN0cmluZztcbiAgY29udGVudENsYXNzTmFtZT86IHN0cmluZztcbn0pIHtcbiAgY29uc3QgW29wZW4sIHNldE9wZW5dID0gdXNlU3RhdGUoZGVmYXVsdE9wZW4pO1xuXG4gIGNvbnN0IGhhbmRsZVRvZ2dsZSA9IChlOiBSZWFjdC5TeW50aGV0aWNFdmVudDxIVE1MRGV0YWlsc0VsZW1lbnQ+KSA9PiB7XG4gICAgLy8gUmVhY3Qgc3VyZmFjZXMgYHRvZ2dsZWAgYXMgYSBidWJibGluZyBzeW50aGV0aWMgZXZlbnQgZXZlbiB0aG91Z2ggdGhlXG4gICAgLy8gbmF0aXZlIGV2ZW50IGRvZXNuJ3QgYnViYmxlLiBXaXRob3V0IHRoaXMgZ3VhcmQsIGEgbmVzdGVkIDxkZXRhaWxzPlxuICAgIC8vIChlLmcuIGFuIGV2ZW50IGNhcmQgaW5zaWRlIHRoZSBFdmVudHMgc2VjdGlvbikgY29sbGFwc2luZyB3b3VsZCBmbGlwXG4gICAgLy8gdGhlIG91dGVyIERldGFpbENhcmQncyBzdGF0ZS4gT25seSByZWFjdCB0byBkaXJlY3QgdG9nZ2xlcy5cbiAgICBpZiAoZS50YXJnZXQgIT09IGUuY3VycmVudFRhcmdldCkgcmV0dXJuO1xuICAgIGNvbnN0IG5leHQgPSBlLmN1cnJlbnRUYXJnZXQub3BlbjtcbiAgICBzZXRPcGVuKG5leHQpO1xuICAgIG9uVG9nZ2xlPy4obmV4dCk7XG4gIH07XG5cbiAgaWYgKHZhcmlhbnQgPT09ICdjYXJkJykge1xuICAgIGlmIChkaXNhYmxlZCkge1xuICAgICAgcmV0dXJuIChcbiAgICAgICAgPGRpdlxuICAgICAgICAgIGNsYXNzTmFtZT17Y24oXG4gICAgICAgICAgICAnbGlzdC1ub25lIHB4LTMgcHktNCBiZy1iYWNrZ3JvdW5kLTIwMCBbJjo6LXdlYmtpdC1kZXRhaWxzLW1hcmtlcl06aGlkZGVuJyxcbiAgICAgICAgICAgIHN1bW1hcnlDbGFzc05hbWVcbiAgICAgICAgICApfVxuICAgICAgICAgIHN0eWxlPXt7IGN1cnNvcjogJ25vdC1hbGxvd2VkJywgb3BhY2l0eTogMC44IH19XG4gICAgICAgID5cbiAgICAgICAgICB7c3VtbWFyeX1cbiAgICAgICAgPC9kaXY+XG4gICAgICApO1xuICAgIH1cbiAgICByZXR1cm4gKFxuICAgICAgPGRldGFpbHNcbiAgICAgICAgY2xhc3NOYW1lPVwiZ3JvdXAvY2FyZCBsYXN0OmJvcmRlci1iIGJvcmRlci1ncmF5LWFscGhhLTQwMFwiXG4gICAgICAgIG9wZW49e29wZW59XG4gICAgICAgIG9uVG9nZ2xlPXtoYW5kbGVUb2dnbGV9XG4gICAgICA+XG4gICAgICAgIDxzdW1tYXJ5XG4gICAgICAgICAgY2xhc3NOYW1lPXtjbihcbiAgICAgICAgICAgICdsaXN0LW5vbmUgY3Vyc29yLXBvaW50ZXIgcHgtMyBweS00IGJvcmRlci10IGJvcmRlci1ncmF5LWFscGhhLTQwMCBiZy1iYWNrZ3JvdW5kLTIwMCBob3ZlcjpiZy1ncmF5LTEwMCBbJjo6LXdlYmtpdC1kZXRhaWxzLW1hcmtlcl06aGlkZGVuJyxcbiAgICAgICAgICAgIHN1bW1hcnlDbGFzc05hbWVcbiAgICAgICAgICApfVxuICAgICAgICA+XG4gICAgICAgICAgPHNwYW4gY2xhc3NOYW1lPVwiZmxleCBpdGVtcy1jZW50ZXIgZ2FwLTEuNVwiPlxuICAgICAgICAgICAgPENoZXZyb25SaWdodFxuICAgICAgICAgICAgICBzaXplPXsxNH1cbiAgICAgICAgICAgICAgY2xhc3NOYW1lPXtjbihcbiAgICAgICAgICAgICAgICAnc2hyaW5rLTAgdGV4dC1ncmF5LTcwMCBncm91cC1ob3Zlci9jYXJkOnRleHQtZ3JheS0xMDAwJyxcbiAgICAgICAgICAgICAgICBvcGVuICYmICdyb3RhdGUtOTAnXG4gICAgICAgICAgICAgICl9XG4gICAgICAgICAgICAvPlxuICAgICAgICAgICAge3N1bW1hcnl9XG4gICAgICAgICAgPC9zcGFuPlxuICAgICAgICA8L3N1bW1hcnk+XG4gICAgICAgIDxkaXYgY2xhc3NOYW1lPXtjb250ZW50Q2xhc3NOYW1lfT57Y2hpbGRyZW59PC9kaXY+XG4gICAgICA8L2RldGFpbHM+XG4gICAgKTtcbiAgfVxuXG4gIC8vIFNoYXJlZCBoZWlnaHQgd2l0aCB0aGUgZXhwYW5kYWJsZSBzdW1tYXJ5IHJvdy4gS2VlcHMgdGhlIHRyYWlsaW5nIC9cbiAgLy8gZGlzYWJsZWQgLyBjaGV2cm9uIHZhcmlhbnRzIHZpc3VhbGx5IGlkZW50aWNhbCBpbiBoZWlnaHQgcmVnYXJkbGVzcyBvZlxuICAvLyB3aGF0J3MgaW4gdGhlIHRyYWlsaW5nIHNsb3QuXG4gIGNvbnN0IHJvd0NsYXNzZXMgPVxuICAgICdmbGV4IGgtOSBpdGVtcy1jZW50ZXIgZ2FwLTIgcHgtMiAtbXgtMiB0ZXh0LWhlYWRpbmctMTQgZm9udC1tZWRpdW0gbXktMic7XG5cbiAgaWYgKHRyYWlsaW5nKSB7XG4gICAgcmV0dXJuIChcbiAgICAgIDxzZWN0aW9uIGNsYXNzTmFtZT1cIi1teC00IGJvcmRlci10IHB4LTQgYm9yZGVyLWdyYXktYWxwaGEtNDAwXCI+XG4gICAgICAgIDxkaXYgY2xhc3NOYW1lPXtjbihyb3dDbGFzc2VzLCBzdW1tYXJ5Q2xhc3NOYW1lKX0+XG4gICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJpc29sYXRlIHJlbGF0aXZlIHNocmluay0wIHctMy41IGgtMy41IHRleHQtZ3JheS03MDBcIj5cbiAgICAgICAgICAgIDxDaGV2cm9uUmlnaHRcbiAgICAgICAgICAgICAgc2l6ZT17MTR9XG4gICAgICAgICAgICAgIGNsYXNzTmFtZT1cImFic29sdXRlIHRvcC0xLzIgbGVmdC0xLzIgLXRyYW5zbGF0ZS14LTEvMiAtdHJhbnNsYXRlLXktMS8yXCJcbiAgICAgICAgICAgIC8+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPHNwYW4gY2xhc3NOYW1lPVwibWluLXctMCBmbGV4LTFcIj57c3VtbWFyeX08L3NwYW4+XG4gICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJzaHJpbmstMCBwci0xXCI+e3RyYWlsaW5nfTwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvc2VjdGlvbj5cbiAgICApO1xuICB9XG5cbiAgaWYgKGRpc2FibGVkKSB7XG4gICAgcmV0dXJuIChcbiAgICAgIDxzZWN0aW9uIGNsYXNzTmFtZT1cIi1teC00IGJvcmRlci10IHB4LTQgYm9yZGVyLWdyYXktYWxwaGEtNDAwXCI+XG4gICAgICAgIDxkaXZcbiAgICAgICAgICBjbGFzc05hbWU9e2NuKHJvd0NsYXNzZXMsIHN1bW1hcnlDbGFzc05hbWUpfVxuICAgICAgICAgIHN0eWxlPXt7IGNvbG9yOiAndmFyKC0tZHMtZ3JheS03MDApJywgY3Vyc29yOiAnbm90LWFsbG93ZWQnIH19XG4gICAgICAgID5cbiAgICAgICAgICA8c3BhbiBjbGFzc05hbWU9XCJtaW4tdy0wIGZsZXgtMVwiPntzdW1tYXJ5fTwvc3Bhbj5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L3NlY3Rpb24+XG4gICAgKTtcbiAgfVxuXG4gIHJldHVybiAoXG4gICAgPHNlY3Rpb24gY2xhc3NOYW1lPVwiLW14LTQgYm9yZGVyLXQgcHgtNCBib3JkZXItZ3JheS1hbHBoYS00MDBcIj5cbiAgICAgIDxkZXRhaWxzIGNsYXNzTmFtZT1cImdyb3VwXCIgb3Blbj17b3Blbn0gb25Ub2dnbGU9e2hhbmRsZVRvZ2dsZX0+XG4gICAgICAgIDxzdW1tYXJ5XG4gICAgICAgICAgY2xhc3NOYW1lPXtjbihcbiAgICAgICAgICAgICdncm91cC90cmlnZ2VyIGxpc3Qtbm9uZSBjdXJzb3ItcG9pbnRlciByb3VuZGVkIGhvdmVyOmJnLWdyYXktYWxwaGEtMTAwIFsmOjotd2Via2l0LWRldGFpbHMtbWFya2VyXTpoaWRkZW4nLFxuICAgICAgICAgICAgcm93Q2xhc3NlcyxcbiAgICAgICAgICAgIHN1bW1hcnlDbGFzc05hbWVcbiAgICAgICAgICApfVxuICAgICAgICA+XG4gICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJpc29sYXRlIHJlbGF0aXZlIHNocmluay0wIHRleHQtZ3JheS03MDAgZ3JvdXAtaG92ZXIvdHJpZ2dlcjp0ZXh0LWdyYXktMTAwMCB3LTMuNSBoLTMuNVwiPlxuICAgICAgICAgICAgPENoZXZyb25SaWdodFxuICAgICAgICAgICAgICBzaXplPXsxNH1cbiAgICAgICAgICAgICAgY2xhc3NOYW1lPVwiYWJzb2x1dGUgdG9wLTEvMiBsZWZ0LTEvMiAtdHJhbnNsYXRlLXgtMS8yIC10cmFuc2xhdGUteS0xLzIgb3BhY2l0eS0xMDAgZ3JvdXAtb3BlbjpvcGFjaXR5LTBcIlxuICAgICAgICAgICAgLz5cbiAgICAgICAgICAgIDxDaGV2cm9uRG93blxuICAgICAgICAgICAgICBzaXplPXsxNH1cbiAgICAgICAgICAgICAgY2xhc3NOYW1lPVwiYWJzb2x1dGUgdG9wLTEvMiBsZWZ0LTEvMiAtdHJhbnNsYXRlLXgtMS8yIC10cmFuc2xhdGUteS0xLzIgb3BhY2l0eS0wIGdyb3VwLW9wZW46b3BhY2l0eS0xMDBcIlxuICAgICAgICAgICAgLz5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8c3BhbiBjbGFzc05hbWU9XCJtaW4tdy0wIGZsZXgtMVwiPntzdW1tYXJ5fTwvc3Bhbj5cbiAgICAgICAgPC9zdW1tYXJ5PlxuICAgICAgICA8ZGl2IGNsYXNzTmFtZT17Y24oJ21iLTMnLCBjb250ZW50Q2xhc3NOYW1lKX0+e2NoaWxkcmVufTwvZGl2PlxuICAgICAgPC9kZXRhaWxzPlxuICAgIDwvc2VjdGlvbj5cbiAgKTtcbn1cbiJdfQ==
|
|
@@ -26,7 +26,7 @@ export interface SelectedSpanInfo {
|
|
|
26
26
|
* This component is rendered OUTSIDE the trace viewer context — it
|
|
27
27
|
* receives all data via props rather than reading from context.
|
|
28
28
|
*/
|
|
29
|
-
export declare function EntityDetailPanel({ run, onStreamClick, onRunClick, spanDetailData, spanDetailError, spanDetailLoading, onSpanSelect, onWakeUpSleep, onLoadEventData, onResolveHook, encryptionKey, onDecrypt, isDecrypting, selectedSpan,
|
|
29
|
+
export declare function EntityDetailPanel({ run, onStreamClick, onRunClick, spanDetailData, spanDetailError, spanDetailLoading, onSpanSelect, onWakeUpSleep, onLoadEventData, onResolveHook, encryptionKey, onDecrypt, isDecrypting, selectedSpan, }: {
|
|
30
30
|
run: WorkflowRun;
|
|
31
31
|
/** Callback when a stream reference is clicked */
|
|
32
32
|
onStreamClick?: (streamId: string) => void;
|
|
@@ -56,7 +56,5 @@ export declare function EntityDetailPanel({ run, onStreamClick, onRunClick, span
|
|
|
56
56
|
isDecrypting?: boolean;
|
|
57
57
|
/** Info about the currently selected span from the trace viewer */
|
|
58
58
|
selectedSpan: SelectedSpanInfo | null;
|
|
59
|
-
/** Run-level hint: the run contains encrypted data (from probe). */
|
|
60
|
-
hasEncryptedData?: boolean;
|
|
61
59
|
}): React.JSX.Element | null;
|
|
62
60
|
//# sourceMappingURL=entity-detail-panel.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"entity-detail-panel.d.ts","sourceRoot":"","sources":["../../../src/components/sidebar/entity-detail-panel.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,KAAK,EAAE,IAAI,EAAE,IAAI,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;
|
|
1
|
+
{"version":3,"file":"entity-detail-panel.d.ts","sourceRoot":"","sources":["../../../src/components/sidebar/entity-detail-panel.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,KAAK,EAAE,IAAI,EAAE,IAAI,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AA4BtE;;GAEG;AACH,MAAM,MAAM,iBAAiB,GAAG;IAC9B,QAAQ,EAAE,KAAK,GAAG,MAAM,GAAG,MAAM,GAAG,OAAO,CAAC;IAC5C,UAAU,EAAE,MAAM,CAAC;IACnB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB,CAAC;AAEF;;GAEG;AACH,MAAM,WAAW,gBAAgB;IAC/B,kFAAkF;IAClF,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,oDAAoD;IACpD,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,uDAAuD;IACvD,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,gFAAgF;IAChF,SAAS,CAAC,EAAE,KAAK,EAAE,CAAC;CACrB;AAED;;;;;GAKG;AACH,wBAAgB,iBAAiB,CAAC,EAChC,GAAG,EACH,aAAa,EACb,UAAU,EACV,cAAc,EACd,eAAe,EACf,iBAAiB,EACjB,YAAY,EACZ,aAAa,EACb,eAAe,EACf,aAAa,EACb,aAAa,EACb,SAAS,EACT,YAAoB,EACpB,YAAY,GACb,EAAE;IACD,GAAG,EAAE,WAAW,CAAC;IACjB,kDAAkD;IAClD,aAAa,CAAC,EAAE,CAAC,QAAQ,EAAE,MAAM,KAAK,IAAI,CAAC;IAC3C,+CAA+C;IAC/C,UAAU,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IACrC,0DAA0D;IAC1D,cAAc,EAAE,WAAW,GAAG,IAAI,GAAG,IAAI,GAAG,KAAK,GAAG,IAAI,CAAC;IACzD,6CAA6C;IAC7C,eAAe,CAAC,EAAE,KAAK,GAAG,IAAI,CAAC;IAC/B,qDAAqD;IACrD,iBAAiB,CAAC,EAAE,OAAO,CAAC;IAC5B,uGAAuG;IACvG,YAAY,EAAE,CAAC,IAAI,EAAE,iBAAiB,KAAK,IAAI,CAAC;IAChD,gDAAgD;IAChD,aAAa,CAAC,EAAE,CACd,KAAK,EAAE,MAAM,EACb,aAAa,EAAE,MAAM,KAClB,OAAO,CAAC;QAAE,YAAY,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IACvC,sEAAsE;IACtE,eAAe,CAAC,EAAE,CAChB,aAAa,EAAE,MAAM,EACrB,OAAO,EAAE,MAAM,KACZ,OAAO,CAAC,OAAO,GAAG,IAAI,CAAC,CAAC;IAC7B,iDAAiD;IACjD,aAAa,CAAC,EAAE,CACd,SAAS,EAAE,MAAM,EACjB,OAAO,EAAE,OAAO,EAChB,IAAI,CAAC,EAAE,IAAI,KACR,OAAO,CAAC,IAAI,CAAC,CAAC;IACnB,sFAAsF;IACtF,aAAa,CAAC,EAAE,UAAU,CAAC;IAC3B,4DAA4D;IAC5D,SAAS,CAAC,EAAE,MAAM,IAAI,CAAC;IACvB,4DAA4D;IAC5D,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,mEAAmE;IACnE,YAAY,EAAE,gBAAgB,GAAG,IAAI,CAAC;CACvC,GAAG,KAAK,CAAC,GAAG,CAAC,OAAO,GAAG,IAAI,CAmW3B"}
|
|
@@ -3,13 +3,13 @@ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
|
3
3
|
import clsx from 'clsx';
|
|
4
4
|
import { Send, Zap } from 'lucide-react';
|
|
5
5
|
import { useCallback, useEffect, useMemo, useRef, useState } from 'react';
|
|
6
|
-
import { isEncryptedMarker } from '../../lib/hydration';
|
|
7
6
|
import { useToast } from '../../lib/toast';
|
|
8
7
|
import { DecryptClickContext } from '../ui/data-inspector';
|
|
9
|
-
import { DecryptButton } from '../ui/decrypt-button';
|
|
10
8
|
import { AttributePanel } from './attribute-panel';
|
|
11
9
|
import { EventsList } from './events-list';
|
|
12
10
|
import { ResolveHookModal } from './resolve-hook-modal';
|
|
11
|
+
import { useSidebarDataOptional } from './sidebar-data-context';
|
|
12
|
+
import { mergeSpanDetail, spanDetailMatchesSelection, } from './span-detail-merge';
|
|
13
13
|
// Type guards for runtime validation of span attribute data
|
|
14
14
|
function isStep(data) {
|
|
15
15
|
return data !== null && typeof data === 'object' && 'stepId' in data;
|
|
@@ -26,7 +26,7 @@ function isHook(data) {
|
|
|
26
26
|
* This component is rendered OUTSIDE the trace viewer context — it
|
|
27
27
|
* receives all data via props rather than reading from context.
|
|
28
28
|
*/
|
|
29
|
-
export function EntityDetailPanel({ run, onStreamClick, onRunClick, spanDetailData, spanDetailError, spanDetailLoading, onSpanSelect, onWakeUpSleep, onLoadEventData, onResolveHook, encryptionKey, onDecrypt, isDecrypting = false, selectedSpan,
|
|
29
|
+
export function EntityDetailPanel({ run, onStreamClick, onRunClick, spanDetailData, spanDetailError, spanDetailLoading, onSpanSelect, onWakeUpSleep, onLoadEventData, onResolveHook, encryptionKey, onDecrypt, isDecrypting = false, selectedSpan, }) {
|
|
30
30
|
const toast = useToast();
|
|
31
31
|
const [stoppingSleep, setStoppingSleep] = useState(false);
|
|
32
32
|
const [showResolveHookModal, setShowResolveHookModal] = useState(false);
|
|
@@ -34,6 +34,8 @@ export function EntityDetailPanel({ run, onStreamClick, onRunClick, spanDetailDa
|
|
|
34
34
|
// Track hooks that were resolved in this session so the button hides
|
|
35
35
|
// immediately without waiting for the next event poll.
|
|
36
36
|
const [resolvedHookIds, setResolvedHookIds] = useState(new Set());
|
|
37
|
+
const sidebar = useSidebarDataOptional();
|
|
38
|
+
const hasEncryptedData = Boolean(sidebar?.hasEncryptedData && !encryptionKey);
|
|
37
39
|
const data = selectedSpan?.data;
|
|
38
40
|
const rawEvents = selectedSpan?.rawEvents;
|
|
39
41
|
const rawEventsLength = rawEvents?.length ?? 0;
|
|
@@ -118,29 +120,23 @@ export function EntityDetailPanel({ run, onStreamClick, onRunClick, spanDetailDa
|
|
|
118
120
|
]);
|
|
119
121
|
const error = spanDetailError ?? undefined;
|
|
120
122
|
const loading = spanDetailLoading ?? false;
|
|
121
|
-
const
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
const d = spanDetailData;
|
|
125
|
-
return (isEncryptedMarker(d.input) ||
|
|
126
|
-
isEncryptedMarker(d.output) ||
|
|
127
|
-
isEncryptedMarker(d.error) ||
|
|
128
|
-
isEncryptedMarker(d.metadata));
|
|
129
|
-
}, [spanDetailData]);
|
|
123
|
+
const matchedSpanDetailData = useMemo(() => spanDetailMatchesSelection(spanDetailData, resource, resourceId)
|
|
124
|
+
? spanDetailData
|
|
125
|
+
: null, [spanDetailData, resource, resourceId]);
|
|
130
126
|
// Get the hook token for resolving (prefer fetched data, then hooks array fallback)
|
|
131
127
|
const hookToken = useMemo(() => {
|
|
132
128
|
if (resource !== 'hook' || !resourceId)
|
|
133
129
|
return undefined;
|
|
134
130
|
// 1. Try the externally-fetched detail data first
|
|
135
|
-
if (isHook(
|
|
136
|
-
return
|
|
131
|
+
if (isHook(matchedSpanDetailData) && matchedSpanDetailData.token) {
|
|
132
|
+
return matchedSpanDetailData.token;
|
|
137
133
|
}
|
|
138
134
|
// 2. Try the span's inline data (reconstructed from hook_created event)
|
|
139
135
|
if (isHook(data) && data.token) {
|
|
140
136
|
return data.token;
|
|
141
137
|
}
|
|
142
138
|
return undefined;
|
|
143
|
-
}, [resource, resourceId,
|
|
139
|
+
}, [resource, resourceId, matchedSpanDetailData, data]);
|
|
144
140
|
useEffect(() => {
|
|
145
141
|
if (error && selectedSpan && resource) {
|
|
146
142
|
toast.error(`Failed to load ${resource} details`, {
|
|
@@ -198,7 +194,7 @@ export function EntityDetailPanel({ run, onStreamClick, onRunClick, spanDetailDa
|
|
|
198
194
|
}
|
|
199
195
|
try {
|
|
200
196
|
setResolvingHook(true);
|
|
201
|
-
const candidate =
|
|
197
|
+
const candidate = matchedSpanDetailData ?? data;
|
|
202
198
|
const hook = isHook(candidate) ? candidate : undefined;
|
|
203
199
|
await onResolveHook(hookToken, payload, hook);
|
|
204
200
|
toast.success('Hook resolved', {
|
|
@@ -219,11 +215,8 @@ export function EntityDetailPanel({ run, onStreamClick, onRunClick, spanDetailDa
|
|
|
219
215
|
finally {
|
|
220
216
|
setResolvingHook(false);
|
|
221
217
|
}
|
|
222
|
-
}, [onResolveHook, hookToken, resolvingHook,
|
|
223
|
-
|
|
224
|
-
// host fetches full correlated events (withData=true) and materializes a wait
|
|
225
|
-
// entity, so this includes resumeAt/completedAt without bloating trace payloads.
|
|
226
|
-
const displayData = (spanDetailData ?? data);
|
|
218
|
+
}, [onResolveHook, hookToken, resolvingHook, matchedSpanDetailData, data]);
|
|
219
|
+
const displayData = useMemo(() => mergeSpanDetail(data, matchedSpanDetailData), [data, matchedSpanDetailData]);
|
|
227
220
|
const moduleSpecifier = useMemo(() => {
|
|
228
221
|
const displayRecord = displayData;
|
|
229
222
|
const displayStepName = displayRecord.stepName;
|
|
@@ -242,20 +235,9 @@ export function EntityDetailPanel({ run, onStreamClick, onRunClick, spanDetailDa
|
|
|
242
235
|
if (!selectedSpan || !resource || !resourceId) {
|
|
243
236
|
return null;
|
|
244
237
|
}
|
|
245
|
-
const resourceLabel = resource.charAt(0).toUpperCase() + resource.slice(1);
|
|
246
238
|
const hasPendingActions = (resource === 'sleep' && canWakeUp) ||
|
|
247
239
|
(resource === 'hook' && canResolveHook);
|
|
248
|
-
|
|
249
|
-
return (_jsxs("div", { className: "flex h-full flex-col", children: [_jsx("div", { className: "border-b px-3 py-3", style: { borderColor: 'var(--ds-gray-200)' }, children: _jsxs("div", { className: "flex items-start justify-between gap-2", children: [_jsxs("div", { className: "min-w-0", children: [_jsxs("div", { className: "flex items-center gap-2", children: [_jsx("span", { className: "inline-flex items-center rounded-full border px-2 py-0.5 text-[13px] font-medium", style: {
|
|
250
|
-
borderColor: 'var(--ds-gray-300)',
|
|
251
|
-
color: 'var(--ds-gray-900)',
|
|
252
|
-
backgroundColor: 'var(--ds-background-100)',
|
|
253
|
-
}, children: resourceLabel }), _jsx("span", { className: "text-[13px]", style: {
|
|
254
|
-
color: run.completedAt
|
|
255
|
-
? 'var(--ds-gray-700)'
|
|
256
|
-
: 'var(--ds-green-800)',
|
|
257
|
-
}, children: runStateLabel })] }), _jsx("p", { className: "mt-1 truncate font-mono text-[13px]", style: { color: 'var(--ds-gray-700)' }, title: resourceId, children: resourceId })] }), (hasEncryptedFields || hasEncryptedData || encryptionKey) &&
|
|
258
|
-
onDecrypt && (_jsx(DecryptButton, { decrypted: !!encryptionKey, loading: isDecrypting, onClick: onDecrypt }))] }) }), _jsx(DecryptClickContext.Provider, { value: onDecrypt ? { onDecrypt, isDecrypting } : undefined, children: _jsxs("div", { className: "flex-1 overflow-y-auto px-3 pt-3 pb-8", children: [hasPendingActions && (_jsxs("div", { className: "mb-4 rounded-lg border p-2", style: {
|
|
240
|
+
return (_jsxs("div", { className: "flex h-full flex-col", children: [_jsx(DecryptClickContext.Provider, { value: onDecrypt ? { onDecrypt, isDecrypting, hasEncryptedData } : undefined, children: _jsxs("div", { className: "flex-1 overflow-y-auto px-4 pb-8", children: [hasPendingActions && (_jsxs("div", { className: "mb-4 rounded-lg border p-2", style: {
|
|
259
241
|
borderColor: 'var(--ds-gray-300)',
|
|
260
242
|
backgroundColor: 'var(--ds-gray-100)',
|
|
261
243
|
}, children: [_jsx("p", { className: "mb-2 px-1 text-[13px] font-medium uppercase tracking-wide", style: { color: 'var(--ds-gray-700)' }, children: "Actions" }), _jsxs("div", { className: "flex flex-col gap-2", children: [resource === 'sleep' && canWakeUp && (_jsxs("button", { type: "button", onClick: handleWakeUp, disabled: stoppingSleep, className: clsx('flex items-center justify-center gap-2 rounded-md px-3 py-2 text-sm font-medium', 'disabled:opacity-50 disabled:cursor-not-allowed transition-colors', stoppingSleep
|
|
@@ -268,6 +250,6 @@ export function EntityDetailPanel({ run, onStreamClick, onRunClick, spanDetailDa
|
|
|
268
250
|
: 'cursor-pointer'), style: {
|
|
269
251
|
background: 'var(--ds-gray-1000)',
|
|
270
252
|
color: 'var(--ds-background-100)',
|
|
271
|
-
}, children: [_jsx(Send, { className: "h-4 w-4" }), "Resolve Hook"] }))] })] })),
|
|
253
|
+
}, children: [_jsx(Send, { className: "h-4 w-4" }), "Resolve Hook"] }))] })] })), _jsx(AttributePanel, { data: displayData, moduleSpecifier: moduleSpecifier, expiredAt: run.expiredAt, isLoading: loading, error: error ?? undefined, onStreamClick: onStreamClick, onRunClick: onRunClick, onDecrypt: onDecrypt, isDecrypting: isDecrypting, resource: resource }), rawEvents && (_jsx(EventsList, { events: rawEvents, onLoadEventData: onLoadEventData, onStreamClick: onStreamClick, onRunClick: onRunClick, encryptionKey: encryptionKey }))] }) }), _jsx(ResolveHookModal, { isOpen: showResolveHookModal, onClose: () => setShowResolveHookModal(false), onSubmit: handleResolveHook, isSubmitting: resolvingHook })] }));
|
|
272
254
|
}
|
|
273
|
-
//# sourceMappingURL=entity-detail-panel.js.map
|
|
255
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZW50aXR5LWRldGFpbC1wYW5lbC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9jb21wb25lbnRzL3NpZGViYXIvZW50aXR5LWRldGFpbC1wYW5lbC50c3giXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsWUFBWSxDQUFDOztBQUdiLE9BQU8sSUFBSSxNQUFNLE1BQU0sQ0FBQztBQUN4QixPQUFPLEVBQUUsSUFBSSxFQUFFLEdBQUcsRUFBRSxNQUFNLGNBQWMsQ0FBQztBQUN6QyxPQUFPLEVBQUUsV0FBVyxFQUFFLFNBQVMsRUFBRSxPQUFPLEVBQUUsTUFBTSxFQUFFLFFBQVEsRUFBRSxNQUFNLE9BQU8sQ0FBQztBQUMxRSxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDM0MsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDM0QsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBQ25ELE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDM0MsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDeEQsT0FBTyxFQUFFLHNCQUFzQixFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDaEUsT0FBTyxFQUNMLGVBQWUsRUFDZiwwQkFBMEIsR0FDM0IsTUFBTSxxQkFBcUIsQ0FBQztBQUU3Qiw0REFBNEQ7QUFDNUQsU0FBUyxNQUFNLENBQUMsSUFBYTtJQUMzQixPQUFPLElBQUksS0FBSyxJQUFJLElBQUksT0FBTyxJQUFJLEtBQUssUUFBUSxJQUFJLFFBQVEsSUFBSSxJQUFJLENBQUM7QUFDdkUsQ0FBQztBQUVELFNBQVMsYUFBYSxDQUFDLElBQWE7SUFDbEMsT0FBTyxJQUFJLEtBQUssSUFBSSxJQUFJLE9BQU8sSUFBSSxLQUFLLFFBQVEsSUFBSSxPQUFPLElBQUksSUFBSSxDQUFDO0FBQ3RFLENBQUM7QUFFRCxTQUFTLE1B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Q0gsSUFDRyxHQUN1QixFQUcvQixLQUFDLGdCQUFnQixJQUNmLE1BQU0sRUFBRSxvQkFBb0IsRUFDNUIsT0FBTyxFQUFFLEdBQUcsRUFBRSxDQUFDLHVCQUF1QixDQUFDLEtBQUssQ0FBQyxFQUM3QyxRQUFRLEVBQUUsaUJBQWlCLEVBQzNCLFlBQVksRUFBRSxhQUFhLEdBQzNCLElBQ0UsQ0FDUCxDQUFDO0FBQ0osQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIid1c2UgY2xpZW50JztcblxuaW1wb3J0IHR5cGUgeyBFdmVudCwgSG9vaywgU3RlcCwgV29ya2Zsb3dSdW4gfSBmcm9tICdAd29ya2Zsb3cvd29ybGQnO1xuaW1wb3J0IGNsc3ggZnJvbSAnY2xzeCc7XG5pbXBvcnQgeyBTZW5kLCBaYXAgfSBmcm9tICdsdWNpZGUtcmVhY3QnO1xuaW1wb3J0IHsgdXNlQ2FsbGJhY2ssIHVzZUVmZmVjdCwgdXNlTWVtbywgdXNlUmVmLCB1c2VTdGF0ZSB9IGZyb20gJ3JlYWN0JztcbmltcG9ydCB7IHVzZVRvYXN0IH0gZnJvbSAnLi4vLi4vbGliL3RvYXN0JztcbmltcG9ydCB7IERlY3J5cHRDbGlja0NvbnRleHQgfSBmcm9tICcuLi91aS9kYXRhLWluc3BlY3Rvcic7XG5pbXBvcnQgeyBBdHRyaWJ1dGVQYW5lbCB9IGZyb20gJy4vYXR0cmlidXRlLXBhbmVsJztcbmltcG9ydCB7IEV2ZW50c0xpc3QgfSBmcm9tICcuL2V2ZW50cy1saXN0JztcbmltcG9ydCB7IFJlc29sdmVIb29rTW9kYWwgfSBmcm9tICcuL3Jlc29sdmUtaG9vay1tb2RhbCc7XG5pbXBvcnQgeyB1c2VTaWRlYmFyRGF0YU9wdGlvbmFsIH0gZnJvbSAnLi9zaWRlYmFyLWRhdGEtY29udGV4dCc7XG5pbXBvcnQge1xuICBtZXJnZVNwYW5EZXRhaWwsXG4gIHNwYW5EZXRhaWxNYXRjaGVzU2VsZWN0aW9uLFxufSBmcm9tICcuL3NwYW4tZGV0YWlsLW1lcmdlJztcblxuLy8gVHlwZSBndWFyZHMgZm9yIHJ1bnRpbWUgdmFsaWRhdGlvbiBvZiBzcGFuIGF0dHJpYnV0ZSBkYXRhXG5mdW5jdGlvbiBpc1N0ZXAoZGF0YTogdW5rbm93bik6IGRhdGEgaXMgU3RlcCB7XG4gIHJldHVybiBkYXRhICE9PSBudWxsICYmIHR5cGVvZiBkYXRhID09PSAnb2JqZWN0JyAmJiAnc3RlcElkJyBpbiBkYXRhO1xufVxuXG5mdW5jdGlvbiBpc1dvcmtmbG93UnVuKGRhdGE6IHVua25vd24pOiBkYXRhIGlzIFdvcmtmbG93UnVuIHtcbiAgcmV0dXJuIGRhdGEgIT09IG51bGwgJiYgdHlwZW9mIGRhdGEgPT09ICdvYmplY3QnICYmICdydW5JZCcgaW4gZGF0YTtcbn1cblxuZnVuY3Rpb24gaXNIb29rKGRhdGE6IHVua25vd24pOiBkYXRhIGlzIEhvb2sge1xuICByZXR1cm4gZGF0YSAhPT0gbnVsbCAmJiB0eXBlb2YgZGF0YSA9PT0gJ29iamVjdCcgJiYgJ2hvb2tJZCcgaW4gZGF0YTtcbn1cblxuLyoqXG4gKiBJbmZvIGFib3V0IHRoZSBjdXJyZW50bHkgc2VsZWN0ZWQgc3BhblxuICovXG5leHBvcnQgdHlwZSBTcGFuU2VsZWN0aW9uSW5mbyA9IHtcbiAgcmVzb3VyY2U6ICdydW4nIHwgJ3N0ZXAnIHwgJ2hvb2snIHwgJ3NsZWVwJztcbiAgcmVzb3VyY2VJZDogc3RyaW5nO1xuICBydW5JZD86IHN0cmluZztcbn07XG5cbi8qKlxuICogSW5mbyBhYm91dCB0aGUgc2VsZWN0ZWQgc3BhbiBmcm9tIHRoZSB0cmFjZSB2aWV3ZXIuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgU2VsZWN0ZWRTcGFuSW5mbyB7XG4gIC8qKiBUaGUgcmF3IGRhdGEgZnJvbSB0aGUgc3BhbiBhdHRyaWJ1dGVzIChzdGVwL3J1bi9ob29rIG9iamVjdCBmcm9tIHRoZSB0cmFjZSkgKi9cbiAgZGF0YT86IHVua25vd247XG4gIC8qKiBUaGUgc3BhbiByZXNvdXJjZSB0eXBlIChmcm9tIHNwYW4gYXR0cmlidXRlcykgKi9cbiAgcmVzb3VyY2U/OiBzdHJpbmc7XG4gIC8qKiBUaGUgc3BhbiBJRCAoY29ycmVsYXRpb25JZCBmb3IgZmlsdGVyaW5nIGV2ZW50cykgKi9cbiAgc3BhbklkPzogc3RyaW5nO1xuICAvKiogUmF3IGNvcnJlbGF0ZWQgZXZlbnRzIGZyb20gdGhlIHN0b3JlIChOT1QgZnJvbSB0aGUgdHJhY2Ugd29ya2VyIHBpcGVsaW5lKSAqL1xuICByYXdFdmVudHM/OiBFdmVudFtdO1xufVxuXG4vKipcbiAqIFBhbmVsIGNvbXBvbmVudCBmb3Igd29ya2Zsb3cgdHJhY2VzIHRoYXQgZGlzcGxheXMgZW50aXR5IGRldGFpbHMuXG4gKlxuICogVGhpcyBjb21wb25lbnQgaXMgcmVuZGVyZWQgT1VUU0lERSB0aGUgdHJhY2Ugdmlld2VyIGNvbnRleHQg4oCUIGl0XG4gKiByZWNlaXZlcyBhbGwgZGF0YSB2aWEgcHJvcHMgcmF0aGVyIHRoYW4gcmVhZGluZyBmcm9tIGNvbnRleHQuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBFbnRpdHlEZXRhaWxQYW5lbCh7XG4gIHJ1bixcbiAgb25TdHJlYW1DbGljayxcbiAgb25SdW5DbGljayxcbiAgc3BhbkRldGFpbERhdGEsXG4gIHNwYW5EZXRhaWxFcnJvcixcbiAgc3BhbkRldGFpbExvYWRpbmcsXG4gIG9uU3BhblNlbGVjdCxcbiAgb25XYWtlVXBTbGVlcCxcbiAgb25Mb2FkRXZlbnREYXRhLFxuICBvblJlc29sdmVIb29rLFxuICBlbmNyeXB0aW9uS2V5LFxuICBvbkRlY3J5cHQsXG4gIGlzRGVjcnlwdGluZyA9IGZhbHNlLFxuICBzZWxlY3RlZFNwYW4sXG59OiB7XG4gIHJ1bjogV29ya2Zsb3dSdW47XG4gIC8qKiBDYWxsYmFjayB3aGVuIGEgc3RyZWFtIHJlZmVyZW5jZSBpcyBjbGlja2VkICovXG4gIG9uU3RyZWFtQ2xpY2s/OiAoc3RyZWFtSWQ6IHN0cmluZykgPT4gdm9pZDtcbiAgLyoqIENhbGxiYWNrIHdoZW4gYSBydW4gcmVmZXJlbmNlIGlzIGNsaWNrZWQgKi9cbiAgb25SdW5DbGljaz86IChydW5JZDogc3RyaW5nKSA9PiB2b2lkO1xuICAvKiogUHJlLWZldGNoZWQgc3BhbiBkZXRhaWwgZGF0YSBmb3IgdGhlIHNlbGVjdGVkIHNwYW4uICovXG4gIHNwYW5EZXRhaWxEYXRhOiBXb3JrZmxvd1J1biB8IFN0ZXAgfCBIb29rIHwgRXZlbnQgfCBudWxsO1xuICAvKiogRXJyb3IgZnJvbSBleHRlcm5hbCBzcGFuIGRldGFpbCBmZXRjaC4gKi9cbiAgc3BhbkRldGFpbEVycm9yPzogRXJyb3IgfCBudWxsO1xuICAvKiogTG9hZGluZyBzdGF0ZSBmcm9tIGV4dGVybmFsIHNwYW4gZGV0YWlsIGZldGNoLiAqL1xuICBzcGFuRGV0YWlsTG9hZGluZz86IGJvb2xlYW47XG4gIC8qKiBDYWxsYmFjayB3aGVuIGEgc3BhbiBpcyBzZWxlY3RlZC4gVXNlIHRoaXMgdG8gZmV0Y2ggZGF0YSBleHRlcm5hbGx5IGFuZCBwYXNzIHZpYSBzcGFuRGV0YWlsRGF0YS4gKi9cbiAgb25TcGFuU2VsZWN0OiAoaW5mbzogU3BhblNlbGVjdGlvbkluZm8pID0+IHZvaWQ7XG4gIC8qKiBDYWxsYmFjayB0byB3YWtlIHVwIGEgcGVuZGluZyBzbGVlcCBjYWxsLiAqL1xuICBvbldha2VVcFNsZWVwPzogKFxuICAgIHJ1bklkOiBzdHJpbmcsXG4gICAgY29ycmVsYXRpb25JZDogc3RyaW5nXG4gICkgPT4gUHJvbWlzZTx7IHN0b3BwZWRDb3VudDogbnVtYmVyIH0+O1xuICAvKiogQ2FsbGJhY2sgdG8gbG9hZCBldmVudCBkYXRhIGZvciBhIHNwZWNpZmljIGV2ZW50IChsYXp5IGxvYWRpbmcpICovXG4gIG9uTG9hZEV2ZW50RGF0YT86IChcbiAgICBjb3JyZWxhdGlvbklkOiBzdHJpbmcsXG4gICAgZXZlbnRJZDogc3RyaW5nXG4gICkgPT4gUHJvbWlzZTx1bmtub3duIHwgbnVsbD47XG4gIC8qKiBDYWxsYmFjayB0byByZXNvbHZlIGEgaG9vayB3aXRoIGEgcGF5bG9hZC4gKi9cbiAgb25SZXNvbHZlSG9vaz86IChcbiAgICBob29rVG9rZW46IHN0cmluZyxcbiAgICBwYXlsb2FkOiB1bmtub3duLFxuICAgIGhvb2s/OiBIb29rXG4gICkgPT4gUHJvbWlzZTx2b2lkPjtcbiAgLyoqIEVuY3J5cHRpb24ga2V5IChhdmFpbGFibGUgYWZ0ZXIgRGVjcnlwdCBpcyBjbGlja2VkKSwgdXNlZCB0byByZS1sb2FkIGV2ZW50IGRhdGEgKi9cbiAgZW5jcnlwdGlvbktleT86IFVpbnQ4QXJyYXk7XG4gIC8qKiBDYWxsYmFjayB0byBpbml0aWF0ZSBkZWNyeXB0aW9uIG9mIGVuY3J5cHRlZCBydW4gZGF0YSAqL1xuICBvbkRlY3J5cHQ/OiAoKSA9PiB2b2lkO1xuICAvKiogV2hldGhlciB0aGUgZW5jcnlwdGlvbiBrZXkgaXMgY3VycmVudGx5IGJlaW5nIGZldGNoZWQgKi9cbiAgaXNEZWNyeXB0aW5nPzogYm9vbGVhbjtcbiAgLyoqIEluZm8gYWJvdXQgdGhlIGN1cnJlbnRseSBzZWxlY3RlZCBzcGFuIGZyb20gdGhlIHRyYWNlIHZpZXdlciAqL1xuICBzZWxlY3RlZFNwYW46IFNlbGVjdGVkU3BhbkluZm8gfCBudWxsO1xufSk6IFJlYWN0LkpTWC5FbGVtZW50IHwgbnVsbCB7XG4gIGNvbnN0IHRvYXN0ID0gdXNlVG9hc3QoKTtcbiAgY29uc3QgW3N0b3BwaW5nU2xlZXAsIHNldFN0b3BwaW5nU2xlZXBdID0gdXNlU3RhdGUoZmFsc2UpO1xuICBjb25zdCBbc2hvd1Jlc29sdmVIb29rTW9kYWwsIHNldFNob3dSZXNvbHZlSG9va01vZGFsXSA9IHVzZVN0YXRlKGZhbHNlKTtcbiAgY29uc3QgW3Jlc29sdmluZ0hvb2ssIHNldFJlc29sdmluZ0hvb2tdID0gdXNlU3RhdGUoZmFsc2UpO1xuICAvLyBUcmFjayBob29rcyB0aGF0IHdlcmUgcmVzb2x2ZWQgaW4gdGhpcyBzZXNzaW9uIHNvIHRoZSBidXR0b24gaGlkZXNcbiAgLy8gaW1tZWRpYXRlbHkgd2l0aG91dCB3YWl0aW5nIGZvciB0aGUgbmV4dCBldmVudCBwb2xsLlxuICBjb25zdCBbcmVzb2x2ZWRIb29rSWRzLCBzZXRSZXNvbHZlZEhvb2tJZHNdID0gdXNlU3RhdGU8U2V0PHN0cmluZz4+KFxuICAgIG5ldyBTZXQoKVxuICApO1xuXG4gIGNvbnN0IHNpZGViYXIgPSB1c2VTaWRlYmFyRGF0YU9wdGlvbmFsKCk7XG4gIGNvbnN0IGhhc0VuY3J5cHRlZERhdGEgPSBCb29sZWFuKHNpZGViYXI/Lmhhc0VuY3J5cHRlZERhdGEgJiYgIWVuY3J5cHRpb25LZXkpO1xuXG4gIGNvbnN0IGRhdGEgPSBzZWxlY3RlZFNwYW4/LmRhdGE7XG4gIGNvbnN0IHJhd0V2ZW50cyA9IHNlbGVjdGVkU3Bhbj8ucmF3RXZlbnRzO1xuICBjb25zdCByYXdFdmVudHNMZW5ndGggPSByYXdFdmVudHM/Lmxlbmd0aCA/PyAwO1xuXG4gIC8vIERldGVybWluZSByZXNvdXJjZSB0eXBlLCBJRCwgYW5kIHJ1bklkIGZyb20gdGhlIHNlbGVjdGVkIHNwYW5cbiAgY29uc3QgeyByZXNvdXJjZSwgcmVzb3VyY2VJZCwgcnVuSWQgfSA9IHVzZU1lbW8oKCkgPT4ge1xuICAgIGlmICghc2VsZWN0ZWRTcGFuKSB7XG4gICAgICByZXR1cm4geyByZXNvdXJjZTogdW5kZWZpbmVkLCByZXNvdXJjZUlkOiB1bmRlZmluZWQsIHJ1bklkOiB1bmRlZmluZWQgfTtcbiAgICB9XG5cbiAgICBjb25zdCByZXMgPSBzZWxlY3RlZFNwYW4ucmVzb3VyY2U7XG4gICAgaWYgKHJlcyA9PT0gJ3N0ZXAnICYmIGlzU3RlcChkYXRhKSkge1xuICAgICAgcmV0dXJuIHsgcmVzb3VyY2U6ICdzdGVwJywgcmVzb3VyY2VJZDogZGF0YS5zdGVwSWQsIHJ1bklkOiBkYXRhLnJ1bklkIH07XG4gICAgfVxuICAgIGlmIChyZXMgPT09ICdydW4nICYmIGlzV29ya2Zsb3dSdW4oZGF0YSkpIHtcbiAgICAgIHJldHVybiB7IHJlc291cmNlOiAncnVuJywgcmVzb3VyY2VJZDogZGF0YS5ydW5JZCwgcnVuSWQ6IHVuZGVmaW5lZCB9O1xuICAgIH1cbiAgICBpZiAocmVzID09PSAnaG9vaycgJiYgaXNIb29rKGRhdGEpKSB7XG4gICAgICByZXR1cm4geyByZXNvdXJjZTogJ2hvb2snLCByZXNvdXJjZUlkOiBkYXRhLmhvb2tJZCwgcnVuSWQ6IHVuZGVmaW5lZCB9O1xuICAgIH1cbiAgICBpZiAocmVzID09PSAnc2xlZXAnKSB7XG4gICAgICBjb25zdCB3YWl0RGF0YSA9IGRhdGEgYXMgeyBydW5JZD86IHN0cmluZyB9IHwgdW5kZWZpbmVkO1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgcmVzb3VyY2U6ICdzbGVlcCcsXG4gICAgICAgIHJlc291cmNlSWQ6IHNlbGVjdGVkU3Bhbi5zcGFuSWQsXG4gICAgICAgIHJ1bklkOiB3YWl0RGF0YT8ucnVuSWQsXG4gICAgICB9O1xuICAgIH1cbiAgICByZXR1cm4geyByZXNvdXJjZTogdW5kZWZpbmVkLCByZXNvdXJjZUlkOiB1bmRlZmluZWQsIHJ1bklkOiB1bmRlZmluZWQgfTtcbiAgfSwgW3NlbGVjdGVkU3BhbiwgZGF0YV0pO1xuXG4gIC8vIE5vdGlmeSBwYXJlbnQgd2hlbiBzcGFuIHNlbGVjdGlvbiBjaGFuZ2VzLlxuICAvLyBVc2UgYSByZWYgZm9yIHRoZSBjYWxsYmFjayBzbyB0aGUgZWZmZWN0IG9ubHkgZmlyZXMgd2hlbiB0aGUgYWN0dWFsXG4gIC8vIHNlbGVjdGlvbiB2YWx1ZXMgY2hhbmdlLCBub3Qgd2hlbiB0aGUgY2FsbGJhY2sgaWRlbnRpdHkgY2hhbmdlcyBkdWUgdG9cbiAgLy8gcGFyZW50IHJlLXJlbmRlcnMgZnJvbSBwb2xsaW5nLlxuICBjb25zdCBvblNwYW5TZWxlY3RSZWYgPSB1c2VSZWYob25TcGFuU2VsZWN0KTtcbiAgb25TcGFuU2VsZWN0UmVmLmN1cnJlbnQgPSBvblNwYW5TZWxlY3Q7XG5cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBpZiAoXG4gICAgICByZXNvdXJjZSAmJlxuICAgICAgcmVzb3VyY2VJZCAmJlxuICAgICAgWydydW4nLCAnc3RlcCcsICdob29rJywgJ3NsZWVwJ10uaW5jbHVkZXMocmVzb3VyY2UpXG4gICAgKSB7XG4gICAgICBvblNwYW5TZWxlY3RSZWYuY3VycmVudCh7XG4gICAgICAgIHJlc291cmNlOiByZXNvdXJjZSBhcyAncnVuJyB8ICdzdGVwJyB8ICdob29rJyB8ICdzbGVlcCcsXG4gICAgICAgIHJlc291cmNlSWQsXG4gICAgICAgIHJ1bklkLFxuICAgICAgfSk7XG4gICAgfVxuICB9LCBbcmVzb3VyY2UsIHJlc291cmNlSWQsIHJ1bklkXSk7XG5cbiAgLy8gQ2hlY2sgaWYgdGhpcyBzbGVlcCBpcyBzdGlsbCBwZW5kaW5nIGFuZCBjYW4gYmUgd29rZW4gdXBcbiAgY29uc3QgY2FuV2FrZVVwID0gdXNlTWVtbygoKSA9PiB7XG4gICAgdm9pZCByYXdFdmVudHNMZW5ndGg7XG4gICAgaWYgKHJlc291cmNlICE9PSAnc2xlZXAnIHx8ICFyYXdFdmVudHMpIHJldHVybiBmYWxzZTtcbiAgICBjb25zdCB0ZXJtaW5hbFN0YXRlcyA9IFsnY29tcGxldGVkJywgJ2ZhaWxlZCcsICdjYW5jZWxsZWQnXTtcbiAgICBpZiAodGVybWluYWxTdGF0ZXMuaW5jbHVkZXMocnVuLnN0YXR1cykpIHJldHVybiBmYWxzZTtcbiAgICBjb25zdCBoYXNXYWl0Q3JlYXRlZCA9IHJhd0V2ZW50cy5zb21lKFxuICAgICAgKGUpID0+IGUuZXZlbnRUeXBlID09PSAnd2FpdF9jcmVhdGVkJ1xuICAgICk7XG4gICAgaWYgKCFoYXNXYWl0Q3JlYXRlZCkgcmV0dXJuIGZhbHNlO1xuICAgIGNvbnN0IGhhc1dhaXRDb21wbGV0ZWQgPSByYXdFdmVudHMuc29tZShcbiAgICAgIChlKSA9PiBlLmV2ZW50VHlwZSA9PT0gJ3dhaXRfY29tcGxldGVkJ1xuICAgICk7XG4gICAgcmV0dXJuICFoYXNXYWl0Q29tcGxldGVkO1xuICB9LCBbcmVzb3VyY2UsIHJhd0V2ZW50cywgcmF3RXZlbnRzTGVuZ3RoLCBydW4uc3RhdHVzXSk7XG5cbiAgLy8gQ2hlY2sgaWYgdGhpcyBob29rIGNhbiBiZSByZXNvbHZlZFxuICBjb25zdCBjYW5SZXNvbHZlSG9vayA9IHVzZU1lbW8oKCkgPT4ge1xuICAgIHZvaWQgcmF3RXZlbnRzTGVuZ3RoO1xuICAgIGlmIChyZXNvdXJjZSAhPT0gJ2hvb2snIHx8ICFyYXdFdmVudHMgfHwgIXJlc291cmNlSWQpIHJldHVybiBmYWxzZTtcblxuICAgIC8vIENoZWNrIGlmIHdlIGFscmVhZHkgcmVzb2x2ZWQgdGhpcyBob29rIGluIHRoaXMgc2Vzc2lvblxuICAgIGlmIChyZXNvbHZlZEhvb2tJZHMuaGFzKHJlc291cmNlSWQpKSByZXR1cm4gZmFsc2U7XG5cbiAgICBjb25zdCB0ZXJtaW5hbFN0YXRlcyA9IFsnY29tcGxldGVkJywgJ2ZhaWxlZCcsICdjYW5jZWxsZWQnXTtcbiAgICBpZiAodGVybWluYWxTdGF0ZXMuaW5jbHVkZXMocnVuLnN0YXR1cykpIHJldHVybiBmYWxzZTtcbiAgICBjb25zdCBoYXNIb29rRGlzcG9zZWQgPSByYXdFdmVudHMuc29tZShcbiAgICAgIChlKSA9PiBlLmV2ZW50VHlwZSA9PT0gJ2hvb2tfZGlzcG9zZWQnXG4gICAgKTtcbiAgICBpZiAoaGFzSG9va0Rpc3Bvc2VkKSByZXR1cm4gZmFsc2U7XG4gICAgcmV0dXJuIHRydWU7XG4gIH0sIFtcbiAgICByZXNvdXJjZSxcbiAgICByZXNvdXJjZUlkLFxuICAgIHJhd0V2ZW50cyxcbiAgICByYXdFdmVudHNMZW5ndGgsXG4gICAgcnVuLnN0YXR1cyxcbiAgICByZXNvbHZlZEhvb2tJZHMsXG4gIF0pO1xuXG4gIGNvbnN0IGVycm9yID0gc3BhbkRldGFpbEVycm9yID8/IHVuZGVmaW5lZDtcbiAgY29uc3QgbG9hZGluZyA9IHNwYW5EZXRhaWxMb2FkaW5nID8/IGZhbHNlO1xuXG4gIGNvbnN0IG1hdGNoZWRTcGFuRGV0YWlsRGF0YSA9IHVzZU1lbW8oXG4gICAgKCkgPT5cbiAgICAgIHNwYW5EZXRhaWxNYXRjaGVzU2VsZWN0aW9uKHNwYW5EZXRhaWxEYXRhLCByZXNvdXJjZSwgcmVzb3VyY2VJZClcbiAgICAgICAgPyBzcGFuRGV0YWlsRGF0YVxuICAgICAgICA6IG51bGwsXG4gICAgW3NwYW5EZXRhaWxEYXRhLCByZXNvdXJjZSwgcmVzb3VyY2VJZF1cbiAgKTtcblxuICAvLyBHZXQgdGhlIGhvb2sgdG9rZW4gZm9yIHJlc29sdmluZyAocHJlZmVyIGZldGNoZWQgZGF0YSwgdGhlbiBob29rcyBhcnJheSBmYWxsYmFjaylcbiAgY29uc3QgaG9va1Rva2VuID0gdXNlTWVtbygoKSA9PiB7XG4gICAgaWYgKHJlc291cmNlICE9PSAnaG9vaycgfHwgIXJlc291cmNlSWQpIHJldHVybiB1bmRlZmluZWQ7XG4gICAgLy8gMS4gVHJ5IHRoZSBleHRlcm5hbGx5LWZldGNoZWQgZGV0YWlsIGRhdGEgZmlyc3RcbiAgICBpZiAoaXNIb29rKG1hdGNoZWRTcGFuRGV0YWlsRGF0YSkgJiYgbWF0Y2hlZFNwYW5EZXRhaWxEYXRhLnRva2VuKSB7XG4gICAgICByZXR1cm4gbWF0Y2hlZFNwYW5EZXRhaWxEYXRhLnRva2VuO1xuICAgIH1cbiAgICAvLyAyLiBUcnkgdGhlIHNwYW4ncyBpbmxpbmUgZGF0YSAocmVjb25zdHJ1Y3RlZCBmcm9tIGhvb2tfY3JlYXRlZCBldmVudClcbiAgICBpZiAoaXNIb29rKGRhdGEpICYmIChkYXRhIGFzIEhvb2spLnRva2VuKSB7XG4gICAgICByZXR1cm4gKGRhdGEgYXMgSG9vaykudG9rZW47XG4gICAgfVxuICAgIHJldHVybiB1bmRlZmluZWQ7XG4gIH0sIFtyZXNvdXJjZSwgcmVzb3VyY2VJZCwgbWF0Y2hlZFNwYW5EZXRhaWxEYXRhLCBkYXRhXSk7XG5cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBpZiAoZXJyb3IgJiYgc2VsZWN0ZWRTcGFuICYmIHJlc291cmNlKSB7XG4gICAgICB0b2FzdC5lcnJvcihgRmFpbGVkIHRvIGxvYWQgJHtyZXNvdXJjZX0gZGV0YWlsc2AsIHtcbiAgICAgICAgZGVzY3JpcHRpb246IGVycm9yLm1lc3NhZ2UsXG4gICAgICB9KTtcbiAgICB9XG4gIH0sIFtlcnJvciwgcmVzb3VyY2UsIHNlbGVjdGVkU3Bhbl0pO1xuXG4gIGNvbnN0IGhhbmRsZVdha2VVcCA9IGFzeW5jICgpID0+IHtcbiAgICBpZiAoc3RvcHBpbmdTbGVlcCB8fCAhcmVzb3VyY2VJZCkgcmV0dXJuO1xuICAgIGlmICghb25XYWtlVXBTbGVlcCkge1xuICAgICAgdG9hc3QuZXJyb3IoJ1VuYWJsZSB0byB3YWtlIHVwIHNsZWVwJywge1xuICAgICAgICBkZXNjcmlwdGlvbjogJ05vIHdha2UtdXAgaGFuZGxlciBwcm92aWRlZC4nLFxuICAgICAgfSk7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdHJ5IHtcbiAgICAgIHNldFN0b3BwaW5nU2xlZXAodHJ1ZSk7XG4gICAgICBjb25zdCByZXN1bHQgPSBhd2FpdCBvbldha2VVcFNsZWVwKHJ1bi5ydW5JZCwgcmVzb3VyY2VJZCk7XG4gICAgICBpZiAocmVzdWx0LnN0b3BwZWRDb3VudCA+IDApIHtcbiAgICAgICAgdG9hc3Quc3VjY2VzcygnUnVuIHdva2VuIHVwJywge1xuICAgICAgICAgIGRlc2NyaXB0aW9uOlxuICAgICAgICAgICAgJ1RoZSBzbGVlcCBjYWxsIGhhcyBiZWVuIGludGVycnVwdGVkIGFuZCB0aGUgcnVuIHdva2VuIHVwLicsXG4gICAgICAgIH0pO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdG9hc3QuaW5mbygnU2xlZXAgYWxyZWFkeSBjb21wbGV0ZWQnLCB7XG4gICAgICAgICAgZGVzY3JpcHRpb246ICdUaGlzIHNsZWVwIGNhbGwgaGFzIGFscmVhZHkgZmluaXNoZWQuJyxcbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgfSBjYXRjaCAoZXJyKSB7XG4gICAgICBjb25zb2xlLmVycm9yKCdGYWlsZWQgdG8gd2FrZSB1cCBydW46JywgZXJyKTtcbiAgICAgIHRvYXN0LmVycm9yKCdGYWlsZWQgdG8gd2FrZSB1cCBydW4nLCB7XG4gICAgICAgIGRlc2NyaXB0aW9uOlxuICAgICAgICAgIGVyciBpbnN0YW5jZW9mIEVycm9yID8gZXJyLm1lc3NhZ2UgOiAnQW4gdW5rbm93biBlcnJvciBvY2N1cnJlZCcsXG4gICAgICB9KTtcbiAgICB9IGZpbmFsbHkge1xuICAgICAgc2V0U3RvcHBpbmdTbGVlcChmYWxzZSk7XG4gICAgfVxuICB9O1xuXG4gIGNvbnN0IGhhbmRsZVJlc29sdmVIb29rID0gdXNlQ2FsbGJhY2soXG4gICAgYXN5bmMgKHBheWxvYWQ6IHVua25vd24pID0+IHtcbiAgICAgIGlmIChyZXNvbHZpbmdIb29rKSByZXR1cm47XG4gICAgICBpZiAoIW9uUmVzb2x2ZUhvb2spIHtcbiAgICAgICAgdG9hc3QuZXJyb3IoJ1VuYWJsZSB0byByZXNvbHZlIGhvb2snLCB7XG4gICAgICAgICAgZGVzY3JpcHRpb246ICdObyByZXNvbHZlIGhhbmRsZXIgcHJvdmlkZWQuJyxcbiAgICAgICAgfSk7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICAgIGlmICghaG9va1Rva2VuKSB7XG4gICAgICAgIHRvYXN0LmVycm9yKCdVbmFibGUgdG8gcmVzb2x2ZSBob29rJywge1xuICAgICAgICAgIGRlc2NyaXB0aW9uOlxuICAgICAgICAgICAgJ01pc3NpbmcgaG9vayB0b2tlbi4gVHJ5IHJlZnJlc2hpbmcgdGhlIHJ1biBkYXRhIGFuZCByZXRyeS4nLFxuICAgICAgICB9KTtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuXG4gICAgICB0cnkge1xuICAgICAgICBzZXRSZXNvbHZpbmdIb29rKHRydWUpO1xuICAgICAgICBjb25zdCBjYW5kaWRhdGUgPSBtYXRjaGVkU3BhbkRldGFpbERhdGEgPz8gZGF0YTtcbiAgICAgICAgY29uc3QgaG9vayA9IGlzSG9vayhjYW5kaWRhdGUpID8gY2FuZGlkYXRlIDogdW5kZWZpbmVkO1xuICAgICAgICBhd2FpdCBvblJlc29sdmVIb29rKGhvb2tUb2tlbiwgcGF5bG9hZCwgaG9vayk7XG4gICAgICAgIHRvYXN0LnN1Y2Nlc3MoJ0hvb2sgcmVzb2x2ZWQnLCB7XG4gICAgICAgICAgZGVzY3JpcHRpb246ICdUaGUgcGF5bG9hZCBoYXMgYmVlbiBzZW50IGFuZCB0aGUgaG9vayByZXNvbHZlZC4nLFxuICAgICAgICB9KTtcbiAgICAgICAgc2V0U2hvd1Jlc29sdmVIb29rTW9kYWwoZmFsc2UpO1xuICAgICAgICAvLyBNYXJrIHRoaXMgaG9vayBhcyByZXNvbHZlZCBsb2NhbGx5IHNvIHRoZSBidXR0b24gaGlkZXMgaW1tZWRpYXRlbHlcbiAgICAgICAgaWYgKHJlc291cmNlSWQpIHtcbiAgICAgICAgICBzZXRSZXNvbHZlZEhvb2tJZHMoKHByZXYpID0+IG5ldyBTZXQocHJldikuYWRkKHJlc291cmNlSWQpKTtcbiAgICAgICAgfVxuICAgICAgfSBjYXRjaCAoZXJyKSB7XG4gICAgICAgIGNvbnNvbGUuZXJyb3IoJ0ZhaWxlZCB0byByZXNvbHZlIGhvb2s6JywgZXJyKTtcbiAgICAgICAgdG9hc3QuZXJyb3IoJ0ZhaWxlZCB0byByZXNvbHZlIGhvb2snLCB7XG4gICAgICAgICAgZGVzY3JpcHRpb246XG4gICAgICAgICAgICBlcnIgaW5zdGFuY2VvZiBFcnJvciA/IGVyci5tZXNzYWdlIDogJ0FuIHVua25vd24gZXJyb3Igb2NjdXJyZWQnLFxuICAgICAgICB9KTtcbiAgICAgIH0gZmluYWxseSB7XG4gICAgICAgIHNldFJlc29sdmluZ0hvb2soZmFsc2UpO1xuICAgICAgfVxuICAgIH0sXG4gICAgW29uUmVzb2x2ZUhvb2ssIGhvb2tUb2tlbiwgcmVzb2x2aW5nSG9vaywgbWF0Y2hlZFNwYW5EZXRhaWxEYXRhLCBkYXRhXVxuICApO1xuXG4gIGNvbnN0IGRpc3BsYXlEYXRhID0gdXNlTWVtbyhcbiAgICAoKSA9PlxuICAgICAgbWVyZ2VTcGFuRGV0YWlsKGRhdGEsIG1hdGNoZWRTcGFuRGV0YWlsRGF0YSkgYXNcbiAgICAgICAgfCBXb3JrZmxvd1J1blxuICAgICAgICB8IFN0ZXBcbiAgICAgICAgfCBIb29rXG4gICAgICAgIHwgRXZlbnQsXG4gICAgW2RhdGEsIG1hdGNoZWRTcGFuRGV0YWlsRGF0YV1cbiAgKTtcblxuICBjb25zdCBtb2R1bGVTcGVjaWZpZXIgPSB1c2VNZW1vKCgpID0+IHtcbiAgICBjb25zdCBkaXNwbGF5UmVjb3JkID0gZGlzcGxheURhdGEgYXMgUmVjb3JkPHN0cmluZywgdW5rbm93bj47XG4gICAgY29uc3QgZGlzcGxheVN0ZXBOYW1lID0gZGlzcGxheVJlY29yZC5zdGVwTmFtZTtcbiAgICBjb25zdCBkaXNwbGF5V29ya2Zsb3dOYW1lID0gZGlzcGxheVJlY29yZC53b3JrZmxvd05hbWU7XG4gICAgaWYgKHR5cGVvZiBkaXNwbGF5U3RlcE5hbWUgPT09ICdzdHJpbmcnKSB7XG4gICAgICByZXR1cm4gZGlzcGxheVN0ZXBOYW1lO1xuICAgIH1cbiAgICBpZiAodHlwZW9mIGRpc3BsYXlXb3JrZmxvd05hbWUgPT09ICdzdHJpbmcnKSB7XG4gICAgICByZXR1cm4gZGlzcGxheVdvcmtmbG93TmFtZTtcbiAgICB9XG4gICAgaWYgKHR5cGVvZiBydW4ud29ya2Zsb3dOYW1lID09PSAnc3RyaW5nJykge1xuICAgICAgcmV0dXJuIHJ1bi53b3JrZmxvd05hbWU7XG4gICAgfVxuICAgIHJldHVybiB1bmRlZmluZWQ7XG4gIH0sIFtkaXNwbGF5RGF0YSwgcnVuLndvcmtmbG93TmFtZV0pO1xuXG4gIGlmICghc2VsZWN0ZWRTcGFuIHx8ICFyZXNvdXJjZSB8fCAhcmVzb3VyY2VJZCkge1xuICAgIHJldHVybiBudWxsO1xuICB9XG5cbiAgY29uc3QgaGFzUGVuZGluZ0FjdGlvbnMgPVxuICAgIChyZXNvdXJjZSA9PT0gJ3NsZWVwJyAmJiBjYW5XYWtlVXApIHx8XG4gICAgKHJlc291cmNlID09PSAnaG9vaycgJiYgY2FuUmVzb2x2ZUhvb2spO1xuXG4gIHJldHVybiAoXG4gICAgPGRpdiBjbGFzc05hbWU9XCJmbGV4IGgtZnVsbCBmbGV4LWNvbFwiPlxuICAgICAgPERlY3J5cHRDbGlja0NvbnRleHQuUHJvdmlkZXJcbiAgICAgICAgdmFsdWU9e1xuICAgICAgICAgIG9uRGVjcnlwdCA/IHsgb25EZWNyeXB0LCBpc0RlY3J5cHRpbmcsIGhhc0VuY3J5cHRlZERhdGEgfSA6IHVuZGVmaW5lZFxuICAgICAgICB9XG4gICAgICA+XG4gICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiZmxleC0xIG92ZXJmbG93LXktYXV0byBweC00IHBiLThcIj5cbiAgICAgICAgICB7aGFzUGVuZGluZ0FjdGlvbnMgJiYgKFxuICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICBjbGFzc05hbWU9XCJtYi00IHJvdW5kZWQtbGcgYm9yZGVyIHAtMlwiXG4gICAgICAgICAgICAgIHN0eWxlPXt7XG4gICAgICAgICAgICAgICAgYm9yZGVyQ29sb3I6ICd2YXIoLS1kcy1ncmF5LTMwMCknLFxuICAgICAgICAgICAgICAgIGJhY2tncm91bmRDb2xvcjogJ3ZhcigtLWRzLWdyYXktMTAwKScsXG4gICAgICAgICAgICAgIH19XG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgIDxwXG4gICAgICAgICAgICAgICAgY2xhc3NOYW1lPVwibWItMiBweC0xIHRleHQtWzEzcHhdIGZvbnQtbWVkaXVtIHVwcGVyY2FzZSB0cmFja2luZy13aWRlXCJcbiAgICAgICAgICAgICAgICBzdHlsZT17eyBjb2xvcjogJ3ZhcigtLWRzLWdyYXktNzAwKScgfX1cbiAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIEFjdGlvbnNcbiAgICAgICAgICAgICAgPC9wPlxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImZsZXggZmxleC1jb2wgZ2FwLTJcIj5cbiAgICAgICAgICAgICAgICB7LyogV2FrZSB1cCBidXR0b24gZm9yIHBlbmRpbmcgc2xlZXAgY2FsbHMgKi99XG4gICAgICAgICAgICAgICAge3Jlc291cmNlID09PSAnc2xlZXAnICYmIGNhbldha2VVcCAmJiAoXG4gICAgICAgICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgICAgICAgICAgICBvbkNsaWNrPXtoYW5kbGVXYWtlVXB9XG4gICAgICAgICAgICAgICAgICAgIGRpc2FibGVkPXtzdG9wcGluZ1NsZWVwfVxuICAgICAgICAgICAgICAgICAgICBjbGFzc05hbWU9e2Nsc3goXG4gICAgICAgICAgICAgICAgICAgICAgJ2ZsZXggaXRlbXMtY2VudGVyIGp1c3RpZnktY2VudGVyIGdhcC0yIHJvdW5kZWQtbWQgcHgtMyBweS0yIHRleHQtc20gZm9udC1tZWRpdW0nLFxuICAgICAgICAgICAgICAgICAgICAgICdkaXNhYmxlZDpvcGFjaXR5LTUwIGRpc2FibGVkOmN1cnNvci1ub3QtYWxsb3dlZCB0cmFuc2l0aW9uLWNvbG9ycycsXG4gICAgICAgICAgICAgICAgICAgICAgc3RvcHBpbmdTbGVlcFxuICAgICAgICAgICAgICAgICAgICAgICAgPyAnb3BhY2l0eS01MCBjdXJzb3Itbm90LWFsbG93ZWQnXG4gICAgICAgICAgICAgICAgICAgICAgICA6ICdjdXJzb3ItcG9pbnRlcidcbiAgICAgICAgICAgICAgICAgICAgKX1cbiAgICAgICAgICAgICAgICAgICAgc3R5bGU9e3tcbiAgICAgICAgICAgICAgICAgICAgICBiYWNrZ3JvdW5kOiAndmFyKC0tZHMtYW1iZXItMjAwKScsXG4gICAgICAgICAgICAgICAgICAgICAgY29sb3I6ICd2YXIoLS1kcy1hbWJlci05MDApJyxcbiAgICAgICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgPFphcCBjbGFzc05hbWU9XCJoLTQgdy00XCIgLz5cbiAgICAgICAgICAgICAgICAgICAge3N0b3BwaW5nU2xlZXAgPyAnV2FraW5nIHVwLi4uJyA6ICdXYWtlIFVwIFNsZWVwJ31cbiAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgICAgICl9XG5cbiAgICAgICAgICAgICAgICB7LyogUmVzb2x2ZSBob29rIGJ1dHRvbiBmb3IgcGVuZGluZyBob29rcyAqL31cbiAgICAgICAgICAgICAgICB7cmVzb3VyY2UgPT09ICdob29rJyAmJiBjYW5SZXNvbHZlSG9vayAmJiAoXG4gICAgICAgICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgICAgICAgICAgICBvbkNsaWNrPXsoKSA9PiBzZXRTaG93UmVzb2x2ZUhvb2tNb2RhbCh0cnVlKX1cbiAgICAgICAgICAgICAgICAgICAgZGlzYWJsZWQ9e3Jlc29sdmluZ0hvb2t9XG4gICAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZT17Y2xzeChcbiAgICAgICAgICAgICAgICAgICAgICAnZmxleCBpdGVtcy1jZW50ZXIganVzdGlmeS1jZW50ZXIgZ2FwLTIgcm91bmRlZC1tZCBweC0zIHB5LTIgdGV4dC1zbSBmb250LW1lZGl1bScsXG4gICAgICAgICAgICAgICAgICAgICAgJ2Rpc2FibGVkOm9wYWNpdHktNTAgZGlzYWJsZWQ6Y3Vyc29yLW5vdC1hbGxvd2VkIHRyYW5zaXRpb24tY29sb3JzJyxcbiAgICAgICAgICAgICAgICAgICAgICByZXNvbHZpbmdIb29rXG4gICAgICAgICAgICAgICAgICAgICAgICA/ICdvcGFjaXR5LTUwIGN1cnNvci1ub3QtYWxsb3dlZCdcbiAgICAgICAgICAgICAgICAgICAgICAgIDogJ2N1cnNvci1wb2ludGVyJ1xuICAgICAgICAgICAgICAgICAgICApfVxuICAgICAgICAgICAgICAgICAgICBzdHlsZT17e1xuICAgICAgICAgICAgICAgICAgICAgIGJhY2tncm91bmQ6ICd2YXIoLS1kcy1ncmF5LTEwMDApJyxcbiAgICAgICAgICAgICAgICAgICAgICBjb2xvcjogJ3ZhcigtLWRzLWJhY2tncm91bmQtMTAwKScsXG4gICAgICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgIDxTZW5kIGNsYXNzTmFtZT1cImgtNCB3LTRcIiAvPlxuICAgICAgICAgICAgICAgICAgICBSZXNvbHZlIEhvb2tcbiAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgICAgICl9XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgKX1cblxuICAgICAgICAgIDxBdHRyaWJ1dGVQYW5lbFxuICAgICAgICAgICAgZGF0YT17ZGlzcGxheURhdGF9XG4gICAgICAgICAgICBtb2R1bGVTcGVjaWZpZXI9e21vZHVsZVNwZWNpZmllcn1cbiAgICAgICAgICAgIGV4cGlyZWRBdD17cnVuLmV4cGlyZWRBdH1cbiAgICAgICAgICAgIGlzTG9hZGluZz17bG9hZGluZ31cbiAgICAgICAgICAgIGVycm9yPXtlcnJvciA/PyB1bmRlZmluZWR9XG4gICAgICAgICAgICBvblN0cmVhbUNsaWNrPXtvblN0cmVhbUNsaWNrfVxuICAgICAgICAgICAgb25SdW5DbGljaz17b25SdW5DbGlja31cbiAgICAgICAgICAgIG9uRGVjcnlwdD17b25EZWNyeXB0fVxuICAgICAgICAgICAgaXNEZWNyeXB0aW5nPXtpc0RlY3J5cHRpbmd9XG4gICAgICAgICAgICByZXNvdXJjZT17cmVzb3VyY2V9XG4gICAgICAgICAgLz5cblxuICAgICAgICAgIHtyYXdFdmVudHMgJiYgKFxuICAgICAgICAgICAgPEV2ZW50c0xpc3RcbiAgICAgICAgICAgICAgZXZlbnRzPXtyYXdFdmVudHN9XG4gICAgICAgICAgICAgIG9uTG9hZEV2ZW50RGF0YT17b25Mb2FkRXZlbnREYXRhfVxuICAgICAgICAgICAgICBvblN0cmVhbUNsaWNrPXtvblN0cmVhbUNsaWNrfVxuICAgICAgICAgICAgICBvblJ1bkNsaWNrPXtvblJ1bkNsaWNrfVxuICAgICAgICAgICAgICBlbmNyeXB0aW9uS2V5PXtlbmNyeXB0aW9uS2V5fVxuICAgICAgICAgICAgLz5cbiAgICAgICAgICApfVxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvRGVjcnlwdENsaWNrQ29udGV4dC5Qcm92aWRlcj5cblxuICAgICAgey8qIFJlc29sdmUgSG9vayBNb2RhbCAqL31cbiAgICAgIDxSZXNvbHZlSG9va01vZGFsXG4gICAgICAgIGlzT3Blbj17c2hvd1Jlc29sdmVIb29rTW9kYWx9XG4gICAgICAgIG9uQ2xvc2U9eygpID0+IHNldFNob3dSZXNvbHZlSG9va01vZGFsKGZhbHNlKX1cbiAgICAgICAgb25TdWJtaXQ9e2hhbmRsZVJlc29sdmVIb29rfVxuICAgICAgICBpc1N1Ym1pdHRpbmc9e3Jlc29sdmluZ0hvb2t9XG4gICAgICAvPlxuICAgIDwvZGl2PlxuICApO1xufVxuIl19
|
|
@@ -1,9 +1,11 @@
|
|
|
1
1
|
import { type Event } from '@workflow/world';
|
|
2
|
-
export declare function EventsList({ events, isLoading, error, onLoadEventData, encryptionKey, }: {
|
|
2
|
+
export declare function EventsList({ events, isLoading, error, onLoadEventData, onStreamClick, onRunClick, encryptionKey, }: {
|
|
3
3
|
events: Event[];
|
|
4
4
|
isLoading?: boolean;
|
|
5
5
|
error?: Error | null;
|
|
6
6
|
onLoadEventData?: (correlationId: string, eventId: string) => Promise<unknown | null>;
|
|
7
|
+
onStreamClick?: (streamId: string) => void;
|
|
8
|
+
onRunClick?: (runId: string) => void;
|
|
7
9
|
/** When provided, signals that decryption is active (triggers re-load of expanded events) */
|
|
8
10
|
encryptionKey?: Uint8Array;
|
|
9
11
|
}): import("react/jsx-runtime").JSX.Element;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"events-list.d.ts","sourceRoot":"","sources":["../../../src/components/sidebar/events-list.tsx"],"names":[],"mappings":"AAEA,OAAO,EAAyB,KAAK,KAAK,EAAE,MAAM,iBAAiB,CAAC;
|
|
1
|
+
{"version":3,"file":"events-list.d.ts","sourceRoot":"","sources":["../../../src/components/sidebar/events-list.tsx"],"names":[],"mappings":"AAEA,OAAO,EAAyB,KAAK,KAAK,EAAE,MAAM,iBAAiB,CAAC;AAoQpE,wBAAgB,UAAU,CAAC,EACzB,MAAM,EACN,SAAiB,EACjB,KAAK,EACL,eAAe,EACf,aAAa,EACb,UAAU,EACV,aAAa,GACd,EAAE;IACD,MAAM,EAAE,KAAK,EAAE,CAAC;IAChB,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,KAAK,CAAC,EAAE,KAAK,GAAG,IAAI,CAAC;IACrB,eAAe,CAAC,EAAE,CAChB,aAAa,EAAE,MAAM,EACrB,OAAO,EAAE,MAAM,KACZ,OAAO,CAAC,OAAO,GAAG,IAAI,CAAC,CAAC;IAC7B,aAAa,CAAC,EAAE,CAAC,QAAQ,EAAE,MAAM,KAAK,IAAI,CAAC;IAC3C,UAAU,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IACrC,6FAA6F;IAC7F,aAAa,CAAC,EAAE,UAAU,CAAC;CAC5B,2CAiDA"}
|