@workflow/web-shared 5.0.0-beta.3 → 5.0.0-beta.31
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/README.md +2 -10
- package/dist/components/error-boundary.js +1 -1
- package/dist/components/event-list-view.d.ts +46 -1
- package/dist/components/event-list-view.d.ts.map +1 -1
- package/dist/components/event-list-view.js +228 -90
- package/dist/components/hook-actions.js +1 -1
- package/dist/components/index.d.ts +6 -2
- package/dist/components/index.d.ts.map +1 -1
- package/dist/components/index.js +5 -2
- package/dist/components/new-trace-viewer/components/copy-button.js +3 -3
- package/dist/components/new-trace-viewer/components/detail-panel-width.d.ts +34 -0
- package/dist/components/new-trace-viewer/components/detail-panel-width.d.ts.map +1 -0
- package/dist/components/new-trace-viewer/components/detail-panel-width.js +67 -0
- package/dist/components/new-trace-viewer/components/detail-panel.d.ts +14 -0
- package/dist/components/new-trace-viewer/components/detail-panel.d.ts.map +1 -0
- package/dist/components/new-trace-viewer/components/detail-panel.js +122 -0
- package/dist/components/new-trace-viewer/components/draggable-border.d.ts +31 -0
- package/dist/components/new-trace-viewer/components/draggable-border.d.ts.map +1 -0
- package/dist/components/new-trace-viewer/components/draggable-border.js +140 -0
- package/dist/components/new-trace-viewer/components/event-list.d.ts +4 -2
- package/dist/components/new-trace-viewer/components/event-list.d.ts.map +1 -1
- package/dist/components/new-trace-viewer/components/event-list.js +22 -13
- 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/minimap.d.ts +14 -0
- package/dist/components/new-trace-viewer/components/minimap.d.ts.map +1 -0
- package/dist/components/new-trace-viewer/components/minimap.js +337 -0
- package/dist/components/new-trace-viewer/components/pane-constants.d.ts +14 -0
- package/dist/components/new-trace-viewer/components/pane-constants.d.ts.map +1 -0
- package/dist/components/new-trace-viewer/components/pane-constants.js +16 -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 +3 -7
- package/dist/components/new-trace-viewer/components/split-pane.d.ts.map +1 -1
- package/dist/components/new-trace-viewer/components/split-pane.js +25 -84
- package/dist/components/new-trace-viewer/components/timeline.d.ts +19 -15
- package/dist/components/new-trace-viewer/components/timeline.d.ts.map +1 -1
- package/dist/components/new-trace-viewer/components/timeline.js +229 -111
- package/dist/components/new-trace-viewer/components/timeline.module.css +46 -0
- package/dist/components/new-trace-viewer/components/trace-shortcut-helper.d.ts +5 -0
- package/dist/components/new-trace-viewer/components/trace-shortcut-helper.d.ts.map +1 -0
- package/dist/components/new-trace-viewer/components/trace-shortcut-helper.js +55 -0
- package/dist/components/new-trace-viewer/components/trace-shortcut-helper.module.css +20 -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 +26 -0
- package/dist/components/new-trace-viewer/components/use-element-width.d.ts +8 -0
- package/dist/components/new-trace-viewer/components/use-element-width.d.ts.map +1 -0
- package/dist/components/new-trace-viewer/components/use-element-width.js +25 -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 +3 -1
- package/dist/components/new-trace-viewer/context.d.ts.map +1 -1
- package/dist/components/new-trace-viewer/context.js +9 -10
- package/dist/components/new-trace-viewer/icons.js +3 -3
- 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 +6 -3
- package/dist/components/new-trace-viewer/trace-viewer.d.ts.map +1 -1
- package/dist/components/new-trace-viewer/trace-viewer.js +167 -162
- package/dist/components/new-trace-viewer/types.d.ts +2 -0
- package/dist/components/new-trace-viewer/types.d.ts.map +1 -1
- package/dist/components/new-trace-viewer/types.js +2 -2
- package/dist/components/new-trace-viewer/utils.d.ts +48 -13
- package/dist/components/new-trace-viewer/utils.d.ts.map +1 -1
- package/dist/components/new-trace-viewer/utils.js +135 -107
- package/dist/components/run-trace-view.d.ts +5 -7
- package/dist/components/run-trace-view.d.ts.map +1 -1
- package/dist/components/run-trace-view.js +3 -3
- package/dist/components/sidebar/attribute-panel.d.ts +4 -1
- package/dist/components/sidebar/attribute-panel.d.ts.map +1 -1
- package/dist/components/sidebar/attribute-panel.js +133 -113
- package/dist/components/sidebar/attributes-block.d.ts +40 -0
- package/dist/components/sidebar/attributes-block.d.ts.map +1 -0
- package/dist/components/sidebar/attributes-block.js +140 -0
- package/dist/components/sidebar/conversation-view.js +1 -1
- package/dist/components/sidebar/copyable-data-block.d.ts +2 -0
- package/dist/components/sidebar/copyable-data-block.d.ts.map +1 -1
- package/dist/components/sidebar/copyable-data-block.js +17 -16
- package/dist/components/sidebar/entity-detail-panel.d.ts +11 -11
- package/dist/components/sidebar/entity-detail-panel.d.ts.map +1 -1
- package/dist/components/sidebar/entity-detail-panel.js +35 -69
- package/dist/components/sidebar/events-list.d.ts +6 -2
- package/dist/components/sidebar/events-list.d.ts.map +1 -1
- package/dist/components/sidebar/events-list.js +76 -62
- package/dist/components/sidebar/resolve-hook-modal.js +1 -1
- package/dist/components/sidebar/sidebar-data-context.d.ts +10 -7
- package/dist/components/sidebar/sidebar-data-context.d.ts.map +1 -1
- package/dist/components/sidebar/sidebar-data-context.js +1 -1
- package/dist/components/sidebar/span-detail-merge.d.ts +31 -0
- package/dist/components/sidebar/span-detail-merge.d.ts.map +1 -0
- package/dist/components/sidebar/span-detail-merge.js +92 -0
- package/dist/components/sidebar/use-selected-span-detail.d.ts +16 -0
- package/dist/components/sidebar/use-selected-span-detail.d.ts.map +1 -0
- package/dist/components/sidebar/use-selected-span-detail.js +93 -0
- package/dist/components/stream-viewer.js +1 -1
- package/dist/components/trace-viewer/components/map.d.ts +2 -2
- package/dist/components/trace-viewer/components/map.d.ts.map +1 -1
- 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 +7 -7
- 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 +5 -1
- package/dist/components/trace-viewer-new.d.ts.map +1 -1
- package/dist/components/trace-viewer-new.js +8 -10
- package/dist/components/ui/alert.js +2 -2
- 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 +2 -2
- package/dist/components/ui/collapsible.d.ts +46 -0
- package/dist/components/ui/collapsible.d.ts.map +1 -0
- package/dist/components/ui/collapsible.js +66 -0
- 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 +7 -6
- package/dist/components/ui/data-inspector.d.ts.map +1 -1
- package/dist/components/ui/data-inspector.js +232 -99
- package/dist/components/ui/data-inspector.styles.d.ts +29 -0
- package/dist/components/ui/data-inspector.styles.d.ts.map +1 -0
- package/dist/components/ui/data-inspector.styles.js +95 -0
- package/dist/components/ui/decrypt-button.js +1 -1
- package/dist/components/ui/error-card.js +2 -2
- 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/kbd.d.ts +10 -0
- package/dist/components/ui/kbd.d.ts.map +1 -0
- package/dist/components/ui/kbd.js +25 -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 +2 -2
- 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 +7 -8
- package/dist/components/workflow-trace-view.d.ts.map +1 -1
- package/dist/components/workflow-trace-view.js +11 -16
- package/dist/components/workflow-traces/event-colors.d.ts +2 -1
- package/dist/components/workflow-traces/event-colors.d.ts.map +1 -1
- package/dist/components/workflow-traces/event-colors.js +15 -7
- package/dist/components/workflow-traces/trace-colors.d.ts.map +1 -1
- package/dist/components/workflow-traces/trace-colors.js +3 -4
- package/dist/components/workflow-traces/trace-span-construction.d.ts +7 -4
- package/dist/components/workflow-traces/trace-span-construction.d.ts.map +1 -1
- package/dist/components/workflow-traces/trace-span-construction.js +87 -33
- 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 -2
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +4 -3
- package/dist/lib/cn.d.ts +10 -0
- package/dist/lib/cn.d.ts.map +1 -0
- package/dist/lib/cn.js +83 -0
- package/dist/lib/event-analysis.d.ts +1 -1
- package/dist/lib/event-analysis.d.ts.map +1 -1
- package/dist/lib/event-analysis.js +3 -2
- package/dist/lib/event-materialization.d.ts +1 -1
- package/dist/lib/event-materialization.d.ts.map +1 -1
- package/dist/lib/event-materialization.js +29 -21
- 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 +17 -2
- package/dist/lib/hydration.d.ts.map +1 -1
- package/dist/lib/hydration.js +185 -22
- package/dist/lib/stream-display.js +1 -1
- package/dist/lib/toast.js +1 -1
- package/dist/lib/trace-builder.d.ts +16 -4
- package/dist/lib/trace-builder.d.ts.map +1 -1
- package/dist/lib/trace-builder.js +34 -15
- package/dist/lib/utils.d.ts +23 -9
- package/dist/lib/utils.d.ts.map +1 -1
- package/dist/lib/utils.js +73 -33
- 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 +14 -0
- package/package.json +10 -7
- package/src/components/event-list-view.tsx +375 -116
- package/src/components/index.ts +12 -5
- package/src/components/new-trace-viewer/components/copy-button.tsx +2 -2
- package/src/components/new-trace-viewer/components/detail-panel-width.test.ts +123 -0
- package/src/components/new-trace-viewer/components/detail-panel-width.ts +76 -0
- package/src/components/new-trace-viewer/components/detail-panel.tsx +273 -0
- package/src/components/new-trace-viewer/components/draggable-border.tsx +216 -0
- package/src/components/new-trace-viewer/components/event-list.tsx +57 -32
- 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/minimap.tsx +559 -0
- package/src/components/new-trace-viewer/components/pane-constants.ts +19 -0
- package/src/components/new-trace-viewer/components/span-markers.tsx +173 -0
- package/src/components/new-trace-viewer/components/split-pane.tsx +80 -135
- package/src/components/new-trace-viewer/components/timeline.module.css +46 -0
- package/src/components/new-trace-viewer/components/timeline.tsx +603 -239
- package/src/components/new-trace-viewer/components/trace-shortcut-helper.module.css +20 -0
- package/src/components/new-trace-viewer/components/trace-shortcut-helper.tsx +116 -0
- package/src/components/new-trace-viewer/components/trace-viewer-skeleton.tsx +114 -0
- package/src/components/new-trace-viewer/components/use-element-width.ts +29 -0
- package/src/components/new-trace-viewer/components/use-row-window.ts +140 -0
- package/src/components/new-trace-viewer/context.tsx +13 -14
- package/src/components/new-trace-viewer/icons.tsx +2 -2
- package/src/components/new-trace-viewer/search.ts +178 -0
- package/src/components/new-trace-viewer/trace-viewer.tsx +336 -293
- package/src/components/new-trace-viewer/types.ts +2 -0
- package/src/components/new-trace-viewer/utils.test.ts +247 -0
- package/src/components/new-trace-viewer/utils.ts +203 -134
- package/src/components/run-trace-view.tsx +10 -14
- package/src/components/sidebar/attribute-panel.tsx +276 -275
- package/src/components/sidebar/attributes-block.tsx +326 -0
- package/src/components/sidebar/copyable-data-block.tsx +50 -28
- package/src/components/sidebar/entity-detail-panel.tsx +89 -123
- package/src/components/sidebar/events-list.tsx +196 -178
- package/src/components/sidebar/sidebar-data-context.tsx +11 -11
- package/src/components/sidebar/span-detail-merge.ts +134 -0
- package/src/components/sidebar/use-selected-span-detail.ts +146 -0
- 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 +21 -15
- package/src/components/ui/alert.tsx +1 -1
- package/src/components/ui/button.tsx +68 -0
- package/src/components/ui/card.tsx +1 -1
- package/src/components/ui/collapsible.tsx +219 -0
- package/src/components/ui/context-card.tsx +784 -0
- package/src/components/ui/data-inspector.styles.ts +96 -0
- package/src/components/ui/data-inspector.tsx +501 -204
- package/src/components/ui/error-card.tsx +1 -1
- package/src/components/ui/error-stack-block.tsx +84 -55
- package/src/components/ui/icon-button.tsx +53 -0
- package/src/components/ui/kbd.tsx +43 -0
- package/src/components/ui/skeleton.tsx +1 -1
- package/src/components/ui/timestamp-tooltip.tsx +132 -194
- package/src/components/ui/tooltip.tsx +47 -0
- package/src/components/workflow-trace-view.tsx +31 -36
- package/src/components/workflow-traces/event-colors.ts +15 -11
- package/src/components/workflow-traces/trace-colors.ts +6 -6
- package/src/components/workflow-traces/trace-span-construction.test.ts +85 -0
- package/src/components/workflow-traces/trace-span-construction.ts +118 -35
- 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/cn.ts +93 -0
- package/src/lib/event-analysis.ts +6 -4
- package/src/lib/event-materialization.ts +35 -21
- package/src/lib/exact-event-search-id.ts +67 -0
- package/src/lib/hydration.ts +203 -29
- package/src/lib/trace-builder.ts +44 -19
- package/src/lib/utils.test.ts +33 -0
- package/src/lib/utils.ts +82 -35
- package/src/lib/zstd-browser-decoder.ts +42 -0
- package/src/styles.css +14 -0
- 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/new-trace-viewer/components/copy-button.js.map +0 -1
- package/dist/components/new-trace-viewer/components/event-list.js.map +0 -1
- package/dist/components/new-trace-viewer/components/split-pane.js.map +0 -1
- package/dist/components/new-trace-viewer/components/timeline.js.map +0 -1
- package/dist/components/new-trace-viewer/context.js.map +0 -1
- package/dist/components/new-trace-viewer/detail-panel.d.ts +0 -10
- package/dist/components/new-trace-viewer/detail-panel.d.ts.map +0 -1
- package/dist/components/new-trace-viewer/detail-panel.js +0 -11
- package/dist/components/new-trace-viewer/detail-panel.js.map +0 -1
- package/dist/components/new-trace-viewer/icons.js.map +0 -1
- package/dist/components/new-trace-viewer/trace-viewer.js.map +0 -1
- package/dist/components/new-trace-viewer/types.js.map +0 -1
- package/dist/components/new-trace-viewer/util/constants.d.ts +0 -1
- package/dist/components/new-trace-viewer/util/constants.d.ts.map +0 -1
- package/dist/components/new-trace-viewer/util/constants.js +0 -2
- package/dist/components/new-trace-viewer/util/constants.js.map +0 -1
- package/dist/components/new-trace-viewer/utils.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.d.ts +0 -14
- package/dist/components/sidebar/detail-card.d.ts.map +0 -1
- package/dist/components/sidebar/detail-card.js +0 -20
- 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/sidebar/sidebar-data-context.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/trace-viewer-new.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.d.ts +0 -95
- package/dist/components/ui/inspector-theme.d.ts.map +0 -1
- package/dist/components/ui/inspector-theme.js +0 -82
- 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/stream-display.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
- package/src/components/new-trace-viewer/detail-panel.tsx +0 -57
- package/src/components/new-trace-viewer/util/constants.ts +0 -0
- package/src/components/sidebar/detail-card.tsx +0 -65
- package/src/components/ui/inspector-theme.ts +0 -110
|
@@ -73,4 +73,4 @@ export function HookResolveModalWrapper({ hookActions, }) {
|
|
|
73
73
|
}
|
|
74
74
|
// Re-export the modal for direct use
|
|
75
75
|
export { ResolveHookModal } from './sidebar/resolve-hook-modal';
|
|
76
|
-
//# sourceMappingURL=hook-actions.js.map
|
|
76
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaG9vay1hY3Rpb25zLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2NvbXBvbmVudHMvaG9vay1hY3Rpb25zLnRzeCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxZQUFZLENBQUM7O0FBR2IsT0FBTyxFQUFFLElBQUksRUFBRSxNQUFNLGNBQWMsQ0FBQztBQUNwQyxPQUFPLEVBQUUsV0FBVyxFQUFFLFFBQVEsRUFBRSxNQUFNLE9BQU8sQ0FBQztBQUM5QyxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sY0FBYyxDQUFDO0FBQ3hDLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLDhCQUE4QixDQUFDO0FBNkJoRSwrRUFBK0U7QUFDL0UsdUNBQXVDO0FBQ3ZDLCtFQUErRTtBQUUvRTs7O0dBR0c7QUFDSCxNQUFNLFVBQVUsY0FBYyxDQUFDLEVBQzdCLFNBQVMsRUFDVCxTQUFTLEdBQ2E7SUFDdEIsTUFBTSxLQUFLLEdBQUcsUUFBUSxFQUFFLENBQUM7SUFDekIsTUFBTSxDQUFDLFdBQVcsRUFBRSxjQUFjLENBQUMsR0FBRyxRQUFRLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDdEQsTUFBTSxDQUFDLFlBQVksRUFBRSxlQUFlLENBQUMsR0FBRyxRQUFRLENBQWMsSUFBSSxDQUFDLENBQUM7SUFFcEUsTUFBTSxnQkFBZ0IsR0FBRyxXQUFXLENBQUMsQ0FBQyxJQUFVLEVBQUUsRUFBRTtRQUNsRCxlQUFlLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDeEIsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDO0lBRVAsTUFBTSxpQkFBaUIsR0FBRyxXQUFXLENBQUMsR0FBRyxFQUFFO1FBQ3pDLGVBQWUsQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUN4QixDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUM7SUFFUCxNQUFNLGFBQWEsR0FBRyxXQUFXLENBQy9CLEtBQUssRUFBRSxPQUFnQixFQUFFLEVBQUU7UUFDekIsSUFBSSxXQUFXLElBQUksQ0FBQyxZQUFZO1lBQUUsT0FBTztRQUV6QyxJQUFJLENBQUM7WUFDSCxjQUFjLENBQUMsSUFBSSxDQUFDLENBQUM7WUFDckIsTUFBTSxTQUFTLENBQUMsWUFBWSxFQUFFLE9BQU8sQ0FBQyxDQUFDO1lBQ3ZDLEtBQUssQ0FBQyxPQUFPLENBQUMsZUFBZSxFQUFFO2dCQUM3QixXQUFXLEVBQUUsa0RBQWtEO2FBQ2hFLENBQUMsQ0FBQztZQUNILGVBQWUsQ0FBQyxJQUFJLENBQUMsQ0FBQztZQUN0QixTQUFTLEVBQUUsU0FBUyxFQUFFLEVBQUUsQ0FBQztRQUMzQixDQUFDO1FBQUMsT0FBTyxHQUFHLEVBQUUsQ0FBQztZQUNiLE9BQU8sQ0FBQyxLQUFLLENBQUMseUJBQXlCLEVBQUUsR0FBRyxDQUFDLENBQUM7WUFDOUMsS0FBSyxDQUFDLEtBQUssQ0FBQyx3QkFBd0IsRUFBRTtnQkFDcEMsV0FBVyxFQUNULEdBQUcsWUFBWSxLQUFLLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLDJCQUEyQjthQUNuRSxDQUFDLENBQUM7UUFDTCxDQUFDO2dCQUFTLENBQUM7WUFDVCxjQUFjLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDeEIsQ0FBQztJQUNILENBQUMsRUFDRCxDQUFDLFNBQVMsRUFBRSxZQUFZLEVBQUUsV0FBVyxFQUFFLFNBQVMsQ0FBQyxDQUNsRCxDQUFDO0lBRUYsT0FBTztRQUNMLFdBQVc7UUFDWCxZQUFZO1FBQ1osZ0JBQWdCO1FBQ2hCLGlCQUFpQjtRQUNqQixhQUFhO0tBQ2QsQ0FBQztBQUNKLENBQUM7QUF1QkQ7OztHQUdHO0FBQ0gsTUFBTSxVQUFVLHVCQUF1QixDQUFDLEVBQ3RDLElBQUksRUFDSixlQUFlLEdBQUcsS0FBSyxFQUN2QixjQUFjLEVBQ2QsZ0JBQWdCLEdBQ2E7SUFDN0IsTUFBTSxXQUFXLEdBQUcsQ0FBQyxDQUFtQixFQUFFLEVBQUU7UUFDMUMsSUFBSSxlQUFlO1lBQUUsQ0FBQyxDQUFDLGVBQWUsRUFBRSxDQUFDO1FBQ3pDLGNBQWMsQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUN2QixDQUFDLENBQUM7SUFFRixPQUFPLENBQ0wsTUFBQyxnQkFBZ0IsSUFBQyxPQUFPLEVBQUUsV0FBVyxhQUNwQyxLQUFDLElBQUksSUFBQyxTQUFTLEVBQUMsY0FBYyxHQUFHLG9CQUVoQixDQUNwQixDQUFDO0FBQ0osQ0FBQztBQVdEOzs7R0FHRztBQUNILE1BQU0sVUFBVSx1QkFBdUIsQ0FBQyxFQUN0QyxXQUFXLEdBQ1c7SUFDdEIsTUFBTSxFQUFFLFlBQVksRUFBRSxpQkFBaUIsRUFBRSxhQUFhLEVBQUUsV0FBVyxFQUFFLEdBQ25FLFdBQVcsQ0FBQztJQUVkLE9BQU8sQ0FDTCxLQUFDLGdCQUFnQixJQUNmLE1BQU0sRUFBRSxZQUFZLEtBQUssSUFBSSxFQUM3QixPQUFPLEVBQUUsaUJBQWlCLEVBQzFCLFFBQVEsRUFBRSxhQUFhLEVBQ3ZCLFlBQVksRUFBRSxXQUFXLEdBQ3pCLENBQ0gsQ0FBQztBQUNKLENBQUM7QUFFRCxxQ0FBcUM7QUFDckMsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sOEJBQThCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIndXNlIGNsaWVudCc7XG5cbmltcG9ydCB0eXBlIHsgSG9vaywgV29ya2Zsb3dSdW5TdGF0dXMgfSBmcm9tICdAd29ya2Zsb3cvd29ybGQnO1xuaW1wb3J0IHsgU2VuZCB9IGZyb20gJ2x1Y2lkZS1yZWFjdCc7XG5pbXBvcnQgeyB1c2VDYWxsYmFjaywgdXNlU3RhdGUgfSBmcm9tICdyZWFjdCc7XG5pbXBvcnQgeyB1c2VUb2FzdCB9IGZyb20gJy4uL2xpYi90b2FzdCc7XG5pbXBvcnQgeyBSZXNvbHZlSG9va01vZGFsIH0gZnJvbSAnLi9zaWRlYmFyL3Jlc29sdmUtaG9vay1tb2RhbCc7XG5cbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbi8vIFR5cGVzXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbmV4cG9ydCBpbnRlcmZhY2UgSG9va0FjdGlvbkNhbGxiYWNrcyB7XG4gIC8qKiBDYWxsZWQgYWZ0ZXIgYSBzdWNjZXNzZnVsIGFjdGlvbiAqL1xuICBvblN1Y2Nlc3M/OiAoKSA9PiB2b2lkO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFVzZUhvb2tBY3Rpb25zT3B0aW9ucyB7XG4gIG9uUmVzb2x2ZTogKGhvb2s6IEhvb2ssIHBheWxvYWQ6IHVua25vd24pID0+IFByb21pc2U8dm9pZD47XG4gIGNhbGxiYWNrcz86IEhvb2tBY3Rpb25DYWxsYmFja3M7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgVXNlSG9va0FjdGlvbnNSZXR1cm4ge1xuICAvKiogV2hldGhlciB0aGUgaG9vayBpcyBjdXJyZW50bHkgYmVpbmcgcmVzb2x2ZWQgKi9cbiAgaXNSZXNvbHZpbmc6IGJvb2xlYW47XG4gIC8qKiBUaGUgaG9vayBjdXJyZW50bHkgc2VsZWN0ZWQgZm9yIHJlc29sdXRpb24gKG51bGwgaWYgbm9uZSkgKi9cbiAgc2VsZWN0ZWRIb29rOiBIb29rIHwgbnVsbDtcbiAgLyoqIE9wZW4gdGhlIHJlc29sdmUgbW9kYWwgZm9yIGEgc3BlY2lmaWMgaG9vayAqL1xuICBvcGVuUmVzb2x2ZU1vZGFsOiAoaG9vazogSG9vaykgPT4gdm9pZDtcbiAgLyoqIENsb3NlIHRoZSByZXNvbHZlIG1vZGFsICovXG4gIGNsb3NlUmVzb2x2ZU1vZGFsOiAoKSA9PiB2b2lkO1xuICAvKiogSGFuZGxlIHN1Ym1pdHRpbmcgdGhlIHJlc29sdmUgcGF5bG9hZCAqL1xuICBoYW5kbGVSZXNvbHZlOiAocGF5bG9hZDogdW5rbm93bikgPT4gUHJvbWlzZTx2b2lkPjtcbn1cblxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuLy8gSG9vayBmb3IgbWFuYWdpbmcgaG9vayBhY3Rpb25zIHN0YXRlXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbi8qKlxuICogUmVhY3QgaG9vayBmb3IgbWFuYWdpbmcgaG9vayBhY3Rpb24gc3RhdGUuXG4gKiBVc2UgdGhpcyB0byBjb29yZGluYXRlIHRoZSByZXNvbHZlIG1vZGFsIGFjcm9zcyBjb21wb25lbnRzLlxuICovXG5leHBvcnQgZnVuY3Rpb24gdXNlSG9va0FjdGlvbnMoe1xuICBvblJlc29sdmUsXG4gIGNhbGxiYWNrcyxcbn06IFVzZUhvb2tBY3Rpb25zT3B0aW9ucyk6IFVzZUhvb2tBY3Rpb25zUmV0dXJuIHtcbiAgY29uc3QgdG9hc3QgPSB1c2VUb2FzdCgpO1xuICBjb25zdCBbaXNSZXNvbHZpbmcsIHNldElzUmVzb2x2aW5nXSA9IHVzZVN0YXRlKGZhbHNlKTtcbiAgY29uc3QgW3NlbGVjdGVkSG9vaywgc2V0U2VsZWN0ZWRIb29rXSA9IHVzZVN0YXRlPEhvb2sgfCBudWxsPihudWxsKTtcblxuICBjb25zdCBvcGVuUmVzb2x2ZU1vZGFsID0gdXNlQ2FsbGJhY2soKGhvb2s6IEhvb2spID0+IHtcbiAgICBzZXRTZWxlY3RlZEhvb2soaG9vayk7XG4gIH0sIFtdKTtcblxuICBjb25zdCBjbG9zZVJlc29sdmVNb2RhbCA9IHVzZUNhbGxiYWNrKCgpID0+IHtcbiAgICBzZXRTZWxlY3RlZEhvb2sobnVsbCk7XG4gIH0sIFtdKTtcblxuICBjb25zdCBoYW5kbGVSZXNvbHZlID0gdXNlQ2FsbGJhY2soXG4gICAgYXN5bmMgKHBheWxvYWQ6IHVua25vd24pID0+IHtcbiAgICAgIGlmIChpc1Jlc29sdmluZyB8fCAhc2VsZWN0ZWRIb29rKSByZXR1cm47XG5cbiAgICAgIHRyeSB7XG4gICAgICAgIHNldElzUmVzb2x2aW5nKHRydWUpO1xuICAgICAgICBhd2FpdCBvblJlc29sdmUoc2VsZWN0ZWRIb29rLCBwYXlsb2FkKTtcbiAgICAgICAgdG9hc3Quc3VjY2VzcygnSG9vayByZXNvbHZlZCcsIHtcbiAgICAgICAgICBkZXNjcmlwdGlvbjogJ1RoZSBwYXlsb2FkIGhhcyBiZWVuIHNlbnQgYW5kIHRoZSBob29rIHJlc29sdmVkLicsXG4gICAgICAgIH0pO1xuICAgICAgICBzZXRTZWxlY3RlZEhvb2sobnVsbCk7XG4gICAgICAgIGNhbGxiYWNrcz8ub25TdWNjZXNzPy4oKTtcbiAgICAgIH0gY2F0Y2ggKGVycikge1xuICAgICAgICBjb25zb2xlLmVycm9yKCdGYWlsZWQgdG8gcmVzb2x2ZSBob29rOicsIGVycik7XG4gICAgICAgIHRvYXN0LmVycm9yKCdGYWlsZWQgdG8gcmVzb2x2ZSBob29rJywge1xuICAgICAgICAgIGRlc2NyaXB0aW9uOlxuICAgICAgICAgICAgZXJyIGluc3RhbmNlb2YgRXJyb3IgPyBlcnIubWVzc2FnZSA6ICdBbiB1bmtub3duIGVycm9yIG9jY3VycmVkJyxcbiAgICAgICAgfSk7XG4gICAgICB9IGZpbmFsbHkge1xuICAgICAgICBzZXRJc1Jlc29sdmluZyhmYWxzZSk7XG4gICAgICB9XG4gICAgfSxcbiAgICBbb25SZXNvbHZlLCBzZWxlY3RlZEhvb2ssIGlzUmVzb2x2aW5nLCBjYWxsYmFja3NdXG4gICk7XG5cbiAgcmV0dXJuIHtcbiAgICBpc1Jlc29sdmluZyxcbiAgICBzZWxlY3RlZEhvb2ssXG4gICAgb3BlblJlc29sdmVNb2RhbCxcbiAgICBjbG9zZVJlc29sdmVNb2RhbCxcbiAgICBoYW5kbGVSZXNvbHZlLFxuICB9O1xufVxuXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyBEcm9wZG93biBNZW51IEl0ZW0gQ29tcG9uZW50XG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbmV4cG9ydCBpbnRlcmZhY2UgSG9va0FjdGlvbnNEcm9wZG93bkl0ZW1Qcm9wcyB7XG4gIC8qKiBUaGUgaG9vayB0byBhY3Qgb24gKi9cbiAgaG9vazogSG9vaztcbiAgLyoqIFRoZSBjdXJyZW50IHJ1biBzdGF0dXMgKHVzZWQgdG8gZGV0ZXJtaW5lIGlmIGFjdGlvbnMgYXJlIGF2YWlsYWJsZSkgKi9cbiAgcnVuU3RhdHVzPzogV29ya2Zsb3dSdW5TdGF0dXM7XG4gIC8qKiBTdG9wIGNsaWNrIGV2ZW50IHByb3BhZ2F0aW9uICh1c2VmdWwgaW4gdGFibGUgcm93cykgKi9cbiAgc3RvcFByb3BhZ2F0aW9uPzogYm9vbGVhbjtcbiAgLyoqIENhbGxlZCB3aGVuIHRoZSByZXNvbHZlIGFjdGlvbiBpcyB0cmlnZ2VyZWQgKi9cbiAgb25SZXNvbHZlQ2xpY2s6IChob29rOiBIb29rKSA9PiB2b2lkO1xuICAvKiogQ3VzdG9tIERyb3Bkb3duTWVudUl0ZW0gY29tcG9uZW50IChhbGxvd3MgdXNpbmcgdGhlIGNvbnN1bWVyJ3MgVUkgbGlicmFyeSkgKi9cbiAgRHJvcGRvd25NZW51SXRlbTogUmVhY3QuQ29tcG9uZW50VHlwZTx7XG4gICAgb25DbGljaz86IChlOiBSZWFjdC5Nb3VzZUV2ZW50KSA9PiB2b2lkO1xuICAgIGRpc2FibGVkPzogYm9vbGVhbjtcbiAgICBjaGlsZHJlbjogUmVhY3QuUmVhY3ROb2RlO1xuICB9Pjtcbn1cblxuLyoqXG4gKiBEcm9wZG93biBtZW51IGl0ZW0gZm9yIHJlc29sdmluZyBhIGhvb2suXG4gKiBUaGlzIGlzIGEgc2luZ2xlIG1lbnUgaXRlbSBjb21wb25lbnQgdGhhdCBjYW4gYmUgY29tcG9zZWQgaW50byBkcm9wZG93biBtZW51cy5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIFJlc29sdmVIb29rRHJvcGRvd25JdGVtKHtcbiAgaG9vayxcbiAgc3RvcFByb3BhZ2F0aW9uID0gZmFsc2UsXG4gIG9uUmVzb2x2ZUNsaWNrLFxuICBEcm9wZG93bk1lbnVJdGVtLFxufTogSG9va0FjdGlvbnNEcm9wZG93bkl0ZW1Qcm9wcyk6IFJlYWN0LkpTWC5FbGVtZW50IHtcbiAgY29uc3QgaGFuZGxlQ2xpY2sgPSAoZTogUmVhY3QuTW91c2VFdmVudCkgPT4ge1xuICAgIGlmIChzdG9wUHJvcGFnYXRpb24pIGUuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgb25SZXNvbHZlQ2xpY2soaG9vayk7XG4gIH07XG5cbiAgcmV0dXJuIChcbiAgICA8RHJvcGRvd25NZW51SXRlbSBvbkNsaWNrPXtoYW5kbGVDbGlja30+XG4gICAgICA8U2VuZCBjbGFzc05hbWU9XCJoLTQgdy00IG1yLTJcIiAvPlxuICAgICAgUmVzb2x2ZSBIb29rXG4gICAgPC9Ecm9wZG93bk1lbnVJdGVtPlxuICApO1xufVxuXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyBNb2RhbCB3cmFwcGVyIGZvciBjb252ZW5pZW5jZVxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG5leHBvcnQgaW50ZXJmYWNlIEhvb2tSZXNvbHZlTW9kYWxQcm9wcyB7XG4gIC8qKiBUaGUgaG9vayBhY3Rpb25zIHN0YXRlIGZyb20gdXNlSG9va0FjdGlvbnMgKi9cbiAgaG9va0FjdGlvbnM6IFVzZUhvb2tBY3Rpb25zUmV0dXJuO1xufVxuXG4vKipcbiAqIENvbnZlbmllbmNlIHdyYXBwZXIgdGhhdCByZW5kZXJzIHRoZSBSZXNvbHZlSG9va01vZGFsIHVzaW5nIHVzZUhvb2tBY3Rpb25zIHN0YXRlLlxuICogUGxhY2UgdGhpcyBhdCB0aGUgdG9wIGxldmVsIG9mIHlvdXIgY29tcG9uZW50IChvdXRzaWRlIGFueSBpdGVyYXRpb24pLlxuICovXG5leHBvcnQgZnVuY3Rpb24gSG9va1Jlc29sdmVNb2RhbFdyYXBwZXIoe1xuICBob29rQWN0aW9ucyxcbn06IEhvb2tSZXNvbHZlTW9kYWxQcm9wcyk6IFJlYWN0LkpTWC5FbGVtZW50IHwgbnVsbCB7XG4gIGNvbnN0IHsgc2VsZWN0ZWRIb29rLCBjbG9zZVJlc29sdmVNb2RhbCwgaGFuZGxlUmVzb2x2ZSwgaXNSZXNvbHZpbmcgfSA9XG4gICAgaG9va0FjdGlvbnM7XG5cbiAgcmV0dXJuIChcbiAgICA8UmVzb2x2ZUhvb2tNb2RhbFxuICAgICAgaXNPcGVuPXtzZWxlY3RlZEhvb2sgIT09IG51bGx9XG4gICAgICBvbkNsb3NlPXtjbG9zZVJlc29sdmVNb2RhbH1cbiAgICAgIG9uU3VibWl0PXtoYW5kbGVSZXNvbHZlfVxuICAgICAgaXNTdWJtaXR0aW5nPXtpc1Jlc29sdmluZ31cbiAgICAvPlxuICApO1xufVxuXG4vLyBSZS1leHBvcnQgdGhlIG1vZGFsIGZvciBkaXJlY3QgdXNlXG5leHBvcnQgeyBSZXNvbHZlSG9va01vZGFsIH0gZnJvbSAnLi9zaWRlYmFyL3Jlc29sdmUtaG9vay1tb2RhbCc7XG4iXX0=
|
|
@@ -2,17 +2,21 @@ export { ErrorBoundary } from './error-boundary';
|
|
|
2
2
|
export { EventListView } from './event-list-view';
|
|
3
3
|
export type { HookActionCallbacks, HookActionsDropdownItemProps, HookResolveModalProps, UseHookActionsOptions, UseHookActionsReturn, } from './hook-actions';
|
|
4
4
|
export { HookResolveModalWrapper, ResolveHookDropdownItem, ResolveHookModal, useHookActions, } from './hook-actions';
|
|
5
|
+
export { TraceViewerSkeleton } from './new-trace-viewer/components/trace-viewer-skeleton';
|
|
5
6
|
export { RunTraceView } from './run-trace-view';
|
|
6
7
|
export { ConversationView } from './sidebar/conversation-view';
|
|
7
|
-
export { SidebarDataProvider, type SidebarDataContextValue, } from './sidebar/sidebar-data-context';
|
|
8
8
|
export type { SelectedSpanInfo, SpanSelectionInfo, } from './sidebar/entity-detail-panel';
|
|
9
|
+
export { type SidebarDataContextValue, SidebarDataProvider, } from './sidebar/sidebar-data-context';
|
|
10
|
+
export type { DetailResource, FetchSpanDetail, } from './sidebar/use-selected-span-detail';
|
|
9
11
|
export { type StreamChunk, StreamViewer } from './stream-viewer';
|
|
10
12
|
export type { Span, SpanEvent } from './trace-viewer/types';
|
|
13
|
+
export { NewTraceViewer } from './trace-viewer-new';
|
|
11
14
|
export { DataInspector, type DataInspectorProps, DecryptClickContext, type DecryptClickContextValue, } from './ui/data-inspector';
|
|
12
15
|
export { DecryptButton } from './ui/decrypt-button';
|
|
16
|
+
export { IconButton } from './ui/icon-button';
|
|
17
|
+
export { Kbd } from './ui/kbd';
|
|
13
18
|
export { LoadMoreButton } from './ui/load-more-button';
|
|
14
19
|
export { MenuDropdown, type MenuDropdownOption } from './ui/menu-dropdown';
|
|
15
20
|
export { Spinner } from './ui/spinner';
|
|
16
21
|
export { WorkflowTraceViewer } from './workflow-trace-view';
|
|
17
|
-
export { NewTraceViewer } from './trace-viewer-new';
|
|
18
22
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/components/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AACjD,OAAO,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AAClD,YAAY,EACV,mBAAmB,EACnB,4BAA4B,EAC5B,qBAAqB,EACrB,qBAAqB,EACrB,oBAAoB,GACrB,MAAM,gBAAgB,CAAC;AACxB,OAAO,EACL,uBAAuB,EACvB,uBAAuB,EACvB,gBAAgB,EAChB,cAAc,GACf,MAAM,gBAAgB,CAAC;AACxB,OAAO,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAChD,OAAO,EAAE,gBAAgB,EAAE,MAAM,6BAA6B,CAAC;AAC/D,OAAO,EACL,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/components/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AACjD,OAAO,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AAClD,YAAY,EACV,mBAAmB,EACnB,4BAA4B,EAC5B,qBAAqB,EACrB,qBAAqB,EACrB,oBAAoB,GACrB,MAAM,gBAAgB,CAAC;AACxB,OAAO,EACL,uBAAuB,EACvB,uBAAuB,EACvB,gBAAgB,EAChB,cAAc,GACf,MAAM,gBAAgB,CAAC;AACxB,OAAO,EAAE,mBAAmB,EAAE,MAAM,qDAAqD,CAAC;AAC1F,OAAO,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAChD,OAAO,EAAE,gBAAgB,EAAE,MAAM,6BAA6B,CAAC;AAC/D,YAAY,EACV,gBAAgB,EAChB,iBAAiB,GAClB,MAAM,+BAA+B,CAAC;AACvC,OAAO,EACL,KAAK,uBAAuB,EAC5B,mBAAmB,GACpB,MAAM,gCAAgC,CAAC;AACxC,YAAY,EACV,cAAc,EACd,eAAe,GAChB,MAAM,oCAAoC,CAAC;AAC5C,OAAO,EAAE,KAAK,WAAW,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AACjE,YAAY,EAAE,IAAI,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAC;AAC5D,OAAO,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AACpD,OAAO,EACL,aAAa,EACb,KAAK,kBAAkB,EACvB,mBAAmB,EACnB,KAAK,wBAAwB,GAC9B,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AACpD,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAC9C,OAAO,EAAE,GAAG,EAAE,MAAM,UAAU,CAAC;AAC/B,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AACvD,OAAO,EAAE,YAAY,EAAE,KAAK,kBAAkB,EAAE,MAAM,oBAAoB,CAAC;AAC3E,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AACvC,OAAO,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAC"}
|
package/dist/components/index.js
CHANGED
|
@@ -1,15 +1,18 @@
|
|
|
1
1
|
export { ErrorBoundary } from './error-boundary';
|
|
2
2
|
export { EventListView } from './event-list-view';
|
|
3
3
|
export { HookResolveModalWrapper, ResolveHookDropdownItem, ResolveHookModal, useHookActions, } from './hook-actions';
|
|
4
|
+
export { TraceViewerSkeleton } from './new-trace-viewer/components/trace-viewer-skeleton';
|
|
4
5
|
export { RunTraceView } from './run-trace-view';
|
|
5
6
|
export { ConversationView } from './sidebar/conversation-view';
|
|
6
7
|
export { SidebarDataProvider, } from './sidebar/sidebar-data-context';
|
|
7
8
|
export { StreamViewer } from './stream-viewer';
|
|
9
|
+
export { NewTraceViewer } from './trace-viewer-new';
|
|
8
10
|
export { DataInspector, DecryptClickContext, } from './ui/data-inspector';
|
|
9
11
|
export { DecryptButton } from './ui/decrypt-button';
|
|
12
|
+
export { IconButton } from './ui/icon-button';
|
|
13
|
+
export { Kbd } from './ui/kbd';
|
|
10
14
|
export { LoadMoreButton } from './ui/load-more-button';
|
|
11
15
|
export { MenuDropdown } from './ui/menu-dropdown';
|
|
12
16
|
export { Spinner } from './ui/spinner';
|
|
13
17
|
export { WorkflowTraceViewer } from './workflow-trace-view';
|
|
14
|
-
|
|
15
|
-
//# sourceMappingURL=index.js.map
|
|
18
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvY29tcG9uZW50cy9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFDakQsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBUWxELE9BQU8sRUFDTCx1QkFBdUIsRUFDdkIsdUJBQXVCLEVBQ3ZCLGdCQUFnQixFQUNoQixjQUFjLEdBQ2YsTUFBTSxnQkFBZ0IsQ0FBQztBQUN4QixPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxxREFBcUQsQ0FBQztBQUMxRixPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFDaEQsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sNkJBQTZCLENBQUM7QUFLL0QsT0FBTyxFQUVMLG1CQUFtQixHQUNwQixNQUFNLGdDQUFnQyxDQUFDO0FBS3hDLE9BQU8sRUFBb0IsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFFakUsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBQ3BELE9BQU8sRUFDTCxhQUFhLEVBRWIsbUJBQW1CLEdBRXBCLE1BQU0scUJBQXFCLENBQUM7QUFDN0IsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQ3BELE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUM5QyxPQUFPLEVBQUUsR0FBRyxFQUFFLE1BQU0sVUFBVSxDQUFDO0FBQy9CLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUN2RCxPQUFPLEVBQUUsWUFBWSxFQUEyQixNQUFNLG9CQUFvQixDQUFDO0FBQzNFLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxjQUFjLENBQUM7QUFDdkMsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sdUJBQXVCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgeyBFcnJvckJvdW5kYXJ5IH0gZnJvbSAnLi9lcnJvci1ib3VuZGFyeSc7XG5leHBvcnQgeyBFdmVudExpc3RWaWV3IH0gZnJvbSAnLi9ldmVudC1saXN0LXZpZXcnO1xuZXhwb3J0IHR5cGUge1xuICBIb29rQWN0aW9uQ2FsbGJhY2tzLFxuICBIb29rQWN0aW9uc0Ryb3Bkb3duSXRlbVByb3BzLFxuICBIb29rUmVzb2x2ZU1vZGFsUHJvcHMsXG4gIFVzZUhvb2tBY3Rpb25zT3B0aW9ucyxcbiAgVXNlSG9va0FjdGlvbnNSZXR1cm4sXG59IGZyb20gJy4vaG9vay1hY3Rpb25zJztcbmV4cG9ydCB7XG4gIEhvb2tSZXNvbHZlTW9kYWxXcmFwcGVyLFxuICBSZXNvbHZlSG9va0Ryb3Bkb3duSXRlbSxcbiAgUmVzb2x2ZUhvb2tNb2RhbCxcbiAgdXNlSG9va0FjdGlvbnMsXG59IGZyb20gJy4vaG9vay1hY3Rpb25zJztcbmV4cG9ydCB7IFRyYWNlVmlld2VyU2tlbGV0b24gfSBmcm9tICcuL25ldy10cmFjZS12aWV3ZXIvY29tcG9uZW50cy90cmFjZS12aWV3ZXItc2tlbGV0b24nO1xuZXhwb3J0IHsgUnVuVHJhY2VWaWV3IH0gZnJvbSAnLi9ydW4tdHJhY2Utdmlldyc7XG5leHBvcnQgeyBDb252ZXJzYXRpb25WaWV3IH0gZnJvbSAnLi9zaWRlYmFyL2NvbnZlcnNhdGlvbi12aWV3JztcbmV4cG9ydCB0eXBlIHtcbiAgU2VsZWN0ZWRTcGFuSW5mbyxcbiAgU3BhblNlbGVjdGlvbkluZm8sXG59IGZyb20gJy4vc2lkZWJhci9lbnRpdHktZGV0YWlsLXBhbmVsJztcbmV4cG9ydCB7XG4gIHR5cGUgU2lkZWJhckRhdGFDb250ZXh0VmFsdWUsXG4gIFNpZGViYXJEYXRhUHJvdmlkZXIsXG59IGZyb20gJy4vc2lkZWJhci9zaWRlYmFyLWRhdGEtY29udGV4dCc7XG5leHBvcnQgdHlwZSB7XG4gIERldGFpbFJlc291cmNlLFxuICBGZXRjaFNwYW5EZXRhaWwsXG59IGZyb20gJy4vc2lkZWJhci91c2Utc2VsZWN0ZWQtc3Bhbi1kZXRhaWwnO1xuZXhwb3J0IHsgdHlwZSBTdHJlYW1DaHVuaywgU3RyZWFtVmlld2VyIH0gZnJvbSAnLi9zdHJlYW0tdmlld2VyJztcbmV4cG9ydCB0eXBlIHsgU3BhbiwgU3BhbkV2ZW50IH0gZnJvbSAnLi90cmFjZS12aWV3ZXIvdHlwZXMnO1xuZXhwb3J0IHsgTmV3VHJhY2VWaWV3ZXIgfSBmcm9tICcuL3RyYWNlLXZpZXdlci1uZXcnO1xuZXhwb3J0IHtcbiAgRGF0YUluc3BlY3RvcixcbiAgdHlwZSBEYXRhSW5zcGVjdG9yUHJvcHMsXG4gIERlY3J5cHRDbGlja0NvbnRleHQsXG4gIHR5cGUgRGVjcnlwdENsaWNrQ29udGV4dFZhbHVlLFxufSBmcm9tICcuL3VpL2RhdGEtaW5zcGVjdG9yJztcbmV4cG9ydCB7IERlY3J5cHRCdXR0b24gfSBmcm9tICcuL3VpL2RlY3J5cHQtYnV0dG9uJztcbmV4cG9ydCB7IEljb25CdXR0b24gfSBmcm9tICcuL3VpL2ljb24tYnV0dG9uJztcbmV4cG9ydCB7IEtiZCB9IGZyb20gJy4vdWkva2JkJztcbmV4cG9ydCB7IExvYWRNb3JlQnV0dG9uIH0gZnJvbSAnLi91aS9sb2FkLW1vcmUtYnV0dG9uJztcbmV4cG9ydCB7IE1lbnVEcm9wZG93biwgdHlwZSBNZW51RHJvcGRvd25PcHRpb24gfSBmcm9tICcuL3VpL21lbnUtZHJvcGRvd24nO1xuZXhwb3J0IHsgU3Bpbm5lciB9IGZyb20gJy4vdWkvc3Bpbm5lcic7XG5leHBvcnQgeyBXb3JrZmxvd1RyYWNlVmlld2VyIH0gZnJvbSAnLi93b3JrZmxvdy10cmFjZS12aWV3JztcbiJdfQ==
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
3
3
|
import { Check, Copy } from 'lucide-react';
|
|
4
4
|
import { useEffect, useRef, useState } from 'react';
|
|
5
|
-
import { cn } from '../../../lib/
|
|
5
|
+
import { cn } from '../../../lib/cn';
|
|
6
6
|
export function CopyButton({ copyText, ariaLabel, className, }) {
|
|
7
7
|
const [copied, setCopied] = useState(false);
|
|
8
8
|
const timeoutRef = useRef(null);
|
|
@@ -13,7 +13,7 @@ export function CopyButton({ copyText, ariaLabel, className, }) {
|
|
|
13
13
|
}
|
|
14
14
|
};
|
|
15
15
|
}, []);
|
|
16
|
-
return (_jsx("button", { type: "button", "aria-label": ariaLabel, className: cn('cursor-pointer text-gray-800 hover:text-gray-1000 bg-transparent border-
|
|
16
|
+
return (_jsx("button", { type: "button", "aria-label": ariaLabel, className: cn('cursor-pointer text-gray-800 hover:text-gray-1000 bg-transparent border-0 p-1 m-0', className), onClick: (e) => {
|
|
17
17
|
e.stopPropagation();
|
|
18
18
|
if (timeoutRef.current) {
|
|
19
19
|
clearTimeout(timeoutRef.current);
|
|
@@ -24,4 +24,4 @@ export function CopyButton({ copyText, ariaLabel, className, }) {
|
|
|
24
24
|
});
|
|
25
25
|
}, children: _jsxs("div", { className: "relative w-3 h-3", children: [_jsx("div", { className: cn('absolute inset-0 flex items-center justify-center transition-all duration-150 ease-out', copied ? 'scale-100 opacity-100' : 'scale-0 opacity-0'), children: _jsx(Check, { className: "w-3 h-3" }) }), _jsx("div", { className: cn('absolute inset-0 flex items-center justify-center transition-all duration-150 ease-out', copied ? 'scale-0 opacity-0' : 'scale-100 opacity-100'), children: _jsx(Copy, { className: "w-3 h-3" }) })] }) }));
|
|
26
26
|
}
|
|
27
|
-
//# sourceMappingURL=
|
|
27
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29weS1idXR0b24uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvY29tcG9uZW50cy9uZXctdHJhY2Utdmlld2VyL2NvbXBvbmVudHMvY29weS1idXR0b24udHN4Il0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLFlBQVksQ0FBQzs7QUFFYixPQUFPLEVBQUUsS0FBSyxFQUFFLElBQUksRUFBRSxNQUFNLGNBQWMsQ0FBQztBQUMzQyxPQUFPLEVBQVksU0FBUyxFQUFFLE1BQU0sRUFBRSxRQUFRLEVBQUUsTUFBTSxPQUFPLENBQUM7QUFDOUQsT0FBTyxFQUFFLEVBQUUsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBUXJDLE1BQU0sVUFBVSxVQUFVLENBQUMsRUFDekIsUUFBUSxFQUNSLFNBQVMsRUFDVCxTQUFTLEdBQ087SUFDaEIsTUFBTSxDQUFDLE1BQU0sRUFBRSxTQUFTLENBQUMsR0FBRyxRQUFRLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDNUMsTUFBTSxVQUFVLEdBQUcsTUFBTSxDQUF1QyxJQUFJLENBQUMsQ0FBQztJQUV0RSxTQUFTLENBQUMsR0FBRyxFQUFFO1FBQ2IsT0FBTyxHQUFHLEVBQUU7WUFDVixJQUFJLFVBQVUsQ0FBQyxPQUFPLEVBQUUsQ0FBQztnQkFDdkIsWUFBWSxDQUFDLFVBQVUsQ0FBQyxPQUFPLENBQUMsQ0FBQztZQUNuQyxDQUFDO1FBQ0gsQ0FBQyxDQUFDO0lBQ0osQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDO0lBRVAsT0FBTyxDQUNMLGlCQUNFLElBQUksRUFBQyxRQUFRLGdCQUNELFNBQVMsRUFDckIsU0FBUyxFQUFFLEVBQUUsQ0FDWCxtRkFBbUYsRUFDbkYsU0FBUyxDQUNWLEVBQ0QsT0FBTyxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUU7WUFDYixDQUFDLENBQUMsZUFBZSxFQUFFLENBQUM7WUFDcEIsSUFBSSxVQUFVLENBQUMsT0FBTyxFQUFFLENBQUM7Z0JBQ3ZCLFlBQVksQ0FBQyxVQUFVLENBQUMsT0FBTyxDQUFDLENBQUM7WUFDbkMsQ0FBQztZQUNELEtBQUssU0FBUyxDQUFDLFNBQVMsQ0FBQyxTQUFTLENBQUMsUUFBUSxDQUFDLENBQUMsSUFBSSxDQUFDLEdBQUcsRUFBRTtnQkFDckQsU0FBUyxDQUFDLElBQUksQ0FBQyxDQUFDO2dCQUNoQixVQUFVLENBQUMsT0FBTyxHQUFHLFVBQVUsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxTQUFTLENBQUMsS0FBSyxDQUFDLEVBQUUsSUFBSSxDQUFDLENBQUM7WUFDaEUsQ0FBQyxDQUFDLENBQUM7UUFDTCxDQUFDLFlBRUQsZUFBSyxTQUFTLEVBQUMsa0JBQWtCLGFBQy9CLGNBQ0UsU0FBUyxFQUFFLEVBQUUsQ0FDWCx3RkFBd0YsRUFDeEYsTUFBTSxDQUFDLENBQUMsQ0FBQyx1QkFBdUIsQ0FBQyxDQUFDLENBQUMsbUJBQW1CLENBQ3ZELFlBRUQsS0FBQyxLQUFLLElBQUMsU0FBUyxFQUFDLFNBQVMsR0FBRyxHQUN6QixFQUNOLGNBQ0UsU0FBUyxFQUFFLEVBQUUsQ0FDWCx3RkFBd0YsRUFDeEYsTUFBTSxDQUFDLENBQUMsQ0FBQyxtQkFBbUIsQ0FBQyxDQUFDLENBQUMsdUJBQXVCLENBQ3ZELFlBRUQsS0FBQyxJQUFJLElBQUMsU0FBUyxFQUFDLFNBQVMsR0FBRyxHQUN4QixJQUNGLEdBQ0MsQ0FDVixDQUFDO0FBQ0osQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIid1c2UgY2xpZW50JztcblxuaW1wb3J0IHsgQ2hlY2ssIENvcHkgfSBmcm9tICdsdWNpZGUtcmVhY3QnO1xuaW1wb3J0IHsgdHlwZSBKU1gsIHVzZUVmZmVjdCwgdXNlUmVmLCB1c2VTdGF0ZSB9IGZyb20gJ3JlYWN0JztcbmltcG9ydCB7IGNuIH0gZnJvbSAnLi4vLi4vLi4vbGliL2NuJztcblxuaW50ZXJmYWNlIENvcHlCdXR0b25Qcm9wcyB7XG4gIGNvcHlUZXh0OiBzdHJpbmc7XG4gIGFyaWFMYWJlbDogc3RyaW5nO1xuICBjbGFzc05hbWU/OiBzdHJpbmc7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBDb3B5QnV0dG9uKHtcbiAgY29weVRleHQsXG4gIGFyaWFMYWJlbCxcbiAgY2xhc3NOYW1lLFxufTogQ29weUJ1dHRvblByb3BzKTogSlNYLkVsZW1lbnQge1xuICBjb25zdCBbY29waWVkLCBzZXRDb3BpZWRdID0gdXNlU3RhdGUoZmFsc2UpO1xuICBjb25zdCB0aW1lb3V0UmVmID0gdXNlUmVmPFJldHVyblR5cGU8dHlwZW9mIHNldFRpbWVvdXQ+IHwgbnVsbD4obnVsbCk7XG5cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICByZXR1cm4gKCkgPT4ge1xuICAgICAgaWYgKHRpbWVvdXRSZWYuY3VycmVudCkge1xuICAgICAgICBjbGVhclRpbWVvdXQodGltZW91dFJlZi5jdXJyZW50KTtcbiAgICAgIH1cbiAgICB9O1xuICB9LCBbXSk7XG5cbiAgcmV0dXJuIChcbiAgICA8YnV0dG9uXG4gICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgIGFyaWEtbGFiZWw9e2FyaWFMYWJlbH1cbiAgICAgIGNsYXNzTmFtZT17Y24oXG4gICAgICAgICdjdXJzb3ItcG9pbnRlciB0ZXh0LWdyYXktODAwIGhvdmVyOnRleHQtZ3JheS0xMDAwIGJnLXRyYW5zcGFyZW50IGJvcmRlci0wIHAtMSBtLTAnLFxuICAgICAgICBjbGFzc05hbWVcbiAgICAgICl9XG4gICAgICBvbkNsaWNrPXsoZSkgPT4ge1xuICAgICAgICBlLnN0b3BQcm9wYWdhdGlvbigpO1xuICAgICAgICBpZiAodGltZW91dFJlZi5jdXJyZW50KSB7XG4gICAgICAgICAgY2xlYXJUaW1lb3V0KHRpbWVvdXRSZWYuY3VycmVudCk7XG4gICAgICAgIH1cbiAgICAgICAgdm9pZCBuYXZpZ2F0b3IuY2xpcGJvYXJkLndyaXRlVGV4dChjb3B5VGV4dCkudGhlbigoKSA9PiB7XG4gICAgICAgICAgc2V0Q29waWVkKHRydWUpO1xuICAgICAgICAgIHRpbWVvdXRSZWYuY3VycmVudCA9IHNldFRpbWVvdXQoKCkgPT4gc2V0Q29waWVkKGZhbHNlKSwgMTAwMCk7XG4gICAgICAgIH0pO1xuICAgICAgfX1cbiAgICA+XG4gICAgICA8ZGl2IGNsYXNzTmFtZT1cInJlbGF0aXZlIHctMyBoLTNcIj5cbiAgICAgICAgPGRpdlxuICAgICAgICAgIGNsYXNzTmFtZT17Y24oXG4gICAgICAgICAgICAnYWJzb2x1dGUgaW5zZXQtMCBmbGV4IGl0ZW1zLWNlbnRlciBqdXN0aWZ5LWNlbnRlciB0cmFuc2l0aW9uLWFsbCBkdXJhdGlvbi0xNTAgZWFzZS1vdXQnLFxuICAgICAgICAgICAgY29waWVkID8gJ3NjYWxlLTEwMCBvcGFjaXR5LTEwMCcgOiAnc2NhbGUtMCBvcGFjaXR5LTAnXG4gICAgICAgICAgKX1cbiAgICAgICAgPlxuICAgICAgICAgIDxDaGVjayBjbGFzc05hbWU9XCJ3LTMgaC0zXCIgLz5cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDxkaXZcbiAgICAgICAgICBjbGFzc05hbWU9e2NuKFxuICAgICAgICAgICAgJ2Fic29sdXRlIGluc2V0LTAgZmxleCBpdGVtcy1jZW50ZXIganVzdGlmeS1jZW50ZXIgdHJhbnNpdGlvbi1hbGwgZHVyYXRpb24tMTUwIGVhc2Utb3V0JyxcbiAgICAgICAgICAgIGNvcGllZCA/ICdzY2FsZS0wIG9wYWNpdHktMCcgOiAnc2NhbGUtMTAwIG9wYWNpdHktMTAwJ1xuICAgICAgICAgICl9XG4gICAgICAgID5cbiAgICAgICAgICA8Q29weSBjbGFzc05hbWU9XCJ3LTMgaC0zXCIgLz5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2Rpdj5cbiAgICA8L2J1dHRvbj5cbiAgKTtcbn1cbiJdfQ==
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Width model for the span detail panel: the stored value is the user's
|
|
3
|
+
* preferred width (absolute px, persisted to localStorage on explicit
|
|
4
|
+
* interaction only), while the container-relative maximum is applied at
|
|
5
|
+
* render time — so a width preferred on a wide screen survives a narrower
|
|
6
|
+
* session and restores when the viewer grows again.
|
|
7
|
+
*/
|
|
8
|
+
/** Floor for the detail panel — matches the previous `clamp(280px, …)` floor. */
|
|
9
|
+
export declare const PANEL_MIN_WIDTH = 280;
|
|
10
|
+
/**
|
|
11
|
+
* Absolute ceiling enforced at the storage layer so a corrupt or stale stored
|
|
12
|
+
* value can never wedge the layout open.
|
|
13
|
+
*/
|
|
14
|
+
export declare const PANEL_HARD_MAX_WIDTH = 1300;
|
|
15
|
+
/** Default width — matches the previous fixed 360px column. */
|
|
16
|
+
export declare const PANEL_DEFAULT_WIDTH = 360;
|
|
17
|
+
/**
|
|
18
|
+
* Width the main (event list + timeline) area keeps while the panel is
|
|
19
|
+
* resized or the container shrinks. Below `PANEL_MIN_WIDTH + MAIN_MIN_WIDTH`
|
|
20
|
+
* of container the panel gives way first, compressing below its own floor —
|
|
21
|
+
* the list and timeline stay usable at the panel's expense.
|
|
22
|
+
*/
|
|
23
|
+
export declare const MAIN_MIN_WIDTH = 400;
|
|
24
|
+
export declare const PANEL_WIDTH_STORAGE_KEY = "workflow-trace-detail-panel-width";
|
|
25
|
+
export declare function computeMaxPanelWidth(availableWidth: number): number;
|
|
26
|
+
/**
|
|
27
|
+
* Note: when the container is too small to honor both floors
|
|
28
|
+
* (`availableWidth < PANEL_MIN_WIDTH + MAIN_MIN_WIDTH`), the max wins and the
|
|
29
|
+
* panel compresses below `PANEL_MIN_WIDTH`.
|
|
30
|
+
*/
|
|
31
|
+
export declare function clampPanelWidth(width: number, availableWidth: number): number;
|
|
32
|
+
export declare function readStoredPanelWidth(): number;
|
|
33
|
+
export declare function writeStoredPanelWidth(width: number): void;
|
|
34
|
+
//# sourceMappingURL=detail-panel-width.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"detail-panel-width.d.ts","sourceRoot":"","sources":["../../../../src/components/new-trace-viewer/components/detail-panel-width.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,iFAAiF;AACjF,eAAO,MAAM,eAAe,MAAM,CAAC;AAEnC;;;GAGG;AACH,eAAO,MAAM,oBAAoB,OAAO,CAAC;AAEzC,+DAA+D;AAC/D,eAAO,MAAM,mBAAmB,MAAM,CAAC;AAEvC;;;;;GAKG;AACH,eAAO,MAAM,cAAc,MAAM,CAAC;AAElC,eAAO,MAAM,uBAAuB,sCAAsC,CAAC;AAM3E,wBAAgB,oBAAoB,CAAC,cAAc,EAAE,MAAM,GAAG,MAAM,CAMnE;AAED;;;;GAIG;AACH,wBAAgB,eAAe,CAAC,KAAK,EAAE,MAAM,EAAE,cAAc,EAAE,MAAM,GAAG,MAAM,CAE7E;AAED,wBAAgB,oBAAoB,IAAI,MAAM,CAY7C;AAED,wBAAgB,qBAAqB,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,CAUzD"}
|
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Width model for the span detail panel: the stored value is the user's
|
|
3
|
+
* preferred width (absolute px, persisted to localStorage on explicit
|
|
4
|
+
* interaction only), while the container-relative maximum is applied at
|
|
5
|
+
* render time — so a width preferred on a wide screen survives a narrower
|
|
6
|
+
* session and restores when the viewer grows again.
|
|
7
|
+
*/
|
|
8
|
+
/** Floor for the detail panel — matches the previous `clamp(280px, …)` floor. */
|
|
9
|
+
export const PANEL_MIN_WIDTH = 280;
|
|
10
|
+
/**
|
|
11
|
+
* Absolute ceiling enforced at the storage layer so a corrupt or stale stored
|
|
12
|
+
* value can never wedge the layout open.
|
|
13
|
+
*/
|
|
14
|
+
export const PANEL_HARD_MAX_WIDTH = 1300;
|
|
15
|
+
/** Default width — matches the previous fixed 360px column. */
|
|
16
|
+
export const PANEL_DEFAULT_WIDTH = 360;
|
|
17
|
+
/**
|
|
18
|
+
* Width the main (event list + timeline) area keeps while the panel is
|
|
19
|
+
* resized or the container shrinks. Below `PANEL_MIN_WIDTH + MAIN_MIN_WIDTH`
|
|
20
|
+
* of container the panel gives way first, compressing below its own floor —
|
|
21
|
+
* the list and timeline stay usable at the panel's expense.
|
|
22
|
+
*/
|
|
23
|
+
export const MAIN_MIN_WIDTH = 400;
|
|
24
|
+
export const PANEL_WIDTH_STORAGE_KEY = 'workflow-trace-detail-panel-width';
|
|
25
|
+
function clamp(value, min, max) {
|
|
26
|
+
return Math.min(Math.max(value, min), max);
|
|
27
|
+
}
|
|
28
|
+
export function computeMaxPanelWidth(availableWidth) {
|
|
29
|
+
if (availableWidth <= 0)
|
|
30
|
+
return PANEL_HARD_MAX_WIDTH;
|
|
31
|
+
return Math.min(Math.max(availableWidth - MAIN_MIN_WIDTH, 0), PANEL_HARD_MAX_WIDTH);
|
|
32
|
+
}
|
|
33
|
+
/**
|
|
34
|
+
* Note: when the container is too small to honor both floors
|
|
35
|
+
* (`availableWidth < PANEL_MIN_WIDTH + MAIN_MIN_WIDTH`), the max wins and the
|
|
36
|
+
* panel compresses below `PANEL_MIN_WIDTH`.
|
|
37
|
+
*/
|
|
38
|
+
export function clampPanelWidth(width, availableWidth) {
|
|
39
|
+
return clamp(width, PANEL_MIN_WIDTH, computeMaxPanelWidth(availableWidth));
|
|
40
|
+
}
|
|
41
|
+
export function readStoredPanelWidth() {
|
|
42
|
+
if (typeof window === 'undefined')
|
|
43
|
+
return PANEL_DEFAULT_WIDTH;
|
|
44
|
+
try {
|
|
45
|
+
const raw = window.localStorage.getItem(PANEL_WIDTH_STORAGE_KEY);
|
|
46
|
+
const value = raw ? Number(raw) : Number.NaN;
|
|
47
|
+
if (!Number.isFinite(value))
|
|
48
|
+
return PANEL_DEFAULT_WIDTH;
|
|
49
|
+
// Only enforce absolute bounds at the storage layer; the container-relative
|
|
50
|
+
// max is applied at render time (see module docs).
|
|
51
|
+
return clamp(value, PANEL_MIN_WIDTH, PANEL_HARD_MAX_WIDTH);
|
|
52
|
+
}
|
|
53
|
+
catch {
|
|
54
|
+
return PANEL_DEFAULT_WIDTH;
|
|
55
|
+
}
|
|
56
|
+
}
|
|
57
|
+
export function writeStoredPanelWidth(width) {
|
|
58
|
+
if (typeof window === 'undefined')
|
|
59
|
+
return;
|
|
60
|
+
try {
|
|
61
|
+
window.localStorage.setItem(PANEL_WIDTH_STORAGE_KEY, String(Math.round(width)));
|
|
62
|
+
}
|
|
63
|
+
catch {
|
|
64
|
+
// Best-effort (private mode, quota).
|
|
65
|
+
}
|
|
66
|
+
}
|
|
67
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGV0YWlsLXBhbmVsLXdpZHRoLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2NvbXBvbmVudHMvbmV3LXRyYWNlLXZpZXdlci9jb21wb25lbnRzL2RldGFpbC1wYW5lbC13aWR0aC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7O0dBTUc7QUFFSCxpRkFBaUY7QUFDakYsTUFBTSxDQUFDLE1BQU0sZUFBZSxHQUFHLEdBQUcsQ0FBQztBQUVuQzs7O0dBR0c7QUFDSCxNQUFNLENBQUMsTUFBTSxvQkFBb0IsR0FBRyxJQUFJLENBQUM7QUFFekMsK0RBQStEO0FBQy9ELE1BQU0sQ0FBQyxNQUFNLG1CQUFtQixHQUFHLEdBQUcsQ0FBQztBQUV2Qzs7Ozs7R0FLRztBQUNILE1BQU0sQ0FBQyxNQUFNLGNBQWMsR0FBRyxHQUFHLENBQUM7QUFFbEMsTUFBTSxDQUFDLE1BQU0sdUJBQXVCLEdBQUcsbUNBQW1DLENBQUM7QUFFM0UsU0FBUyxLQUFLLENBQUMsS0FBYSxFQUFFLEdBQVcsRUFBRSxHQUFXO0lBQ3BELE9BQU8sSUFBSSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLEtBQUssRUFBRSxHQUFHLENBQUMsRUFBRSxHQUFHLENBQUMsQ0FBQztBQUM3QyxDQUFDO0FBRUQsTUFBTSxVQUFVLG9CQUFvQixDQUFDLGNBQXNCO0lBQ3pELElBQUksY0FBYyxJQUFJLENBQUM7UUFBRSxPQUFPLG9CQUFvQixDQUFDO0lBQ3JELE9BQU8sSUFBSSxDQUFDLEdBQUcsQ0FDYixJQUFJLENBQUMsR0FBRyxDQUFDLGNBQWMsR0FBRyxjQUFjLEVBQUUsQ0FBQyxDQUFDLEVBQzVDLG9CQUFvQixDQUNyQixDQUFDO0FBQ0osQ0FBQztBQUVEOzs7O0dBSUc7QUFDSCxNQUFNLFVBQVUsZUFBZSxDQUFDLEtBQWEsRUFBRSxjQUFzQjtJQUNuRSxPQUFPLEtBQUssQ0FBQyxLQUFLLEVBQUUsZUFBZSxFQUFFLG9CQUFvQixDQUFDLGNBQWMsQ0FBQyxDQUFDLENBQUM7QUFDN0UsQ0FBQztBQUVELE1BQU0sVUFBVSxvQkFBb0I7SUFDbEMsSUFBSSxPQUFPLE1BQU0sS0FBSyxXQUFXO1FBQUUsT0FBTyxtQkFBbUIsQ0FBQztJQUM5RCxJQUFJLENBQUM7UUFDSCxNQUFNLEdBQUcsR0FBRyxNQUFNLENBQUMsWUFBWSxDQUFDLE9BQU8sQ0FBQyx1QkFBdUIsQ0FBQyxDQUFDO1FBQ2pFLE1BQU0sS0FBSyxHQUFHLEdBQUcsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDO1FBQzdDLElBQUksQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQztZQUFFLE9BQU8sbUJBQW1CLENBQUM7UUFDeEQsNEVBQTRFO1FBQzVFLG1EQUFtRDtRQUNuRCxPQUFPLEtBQUssQ0FBQyxLQUFLLEVBQUUsZUFBZSxFQUFFLG9CQUFvQixDQUFDLENBQUM7SUFDN0QsQ0FBQztJQUFDLE1BQU0sQ0FBQztRQUNQLE9BQU8sbUJBQW1CLENBQUM7SUFDN0IsQ0FBQztBQUNILENBQUM7QUFFRCxNQUFNLFVBQVUscUJBQXFCLENBQUMsS0FBYTtJQUNqRCxJQUFJLE9BQU8sTUFBTSxLQUFLLFdBQVc7UUFBRSxPQUFPO0lBQzFDLElBQUksQ0FBQztRQUNILE1BQU0sQ0FBQyxZQUFZLENBQUMsT0FBTyxDQUN6Qix1QkFBdUIsRUFDdkIsTUFBTSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FDMUIsQ0FBQztJQUNKLENBQUM7SUFBQyxNQUFNLENBQUM7UUFDUCxxQ0FBcUM7SUFDdkMsQ0FBQztBQUNILENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIFdpZHRoIG1vZGVsIGZvciB0aGUgc3BhbiBkZXRhaWwgcGFuZWw6IHRoZSBzdG9yZWQgdmFsdWUgaXMgdGhlIHVzZXInc1xuICogcHJlZmVycmVkIHdpZHRoIChhYnNvbHV0ZSBweCwgcGVyc2lzdGVkIHRvIGxvY2FsU3RvcmFnZSBvbiBleHBsaWNpdFxuICogaW50ZXJhY3Rpb24gb25seSksIHdoaWxlIHRoZSBjb250YWluZXItcmVsYXRpdmUgbWF4aW11bSBpcyBhcHBsaWVkIGF0XG4gKiByZW5kZXIgdGltZSDigJQgc28gYSB3aWR0aCBwcmVmZXJyZWQgb24gYSB3aWRlIHNjcmVlbiBzdXJ2aXZlcyBhIG5hcnJvd2VyXG4gKiBzZXNzaW9uIGFuZCByZXN0b3JlcyB3aGVuIHRoZSB2aWV3ZXIgZ3Jvd3MgYWdhaW4uXG4gKi9cblxuLyoqIEZsb29yIGZvciB0aGUgZGV0YWlsIHBhbmVsIOKAlCBtYXRjaGVzIHRoZSBwcmV2aW91cyBgY2xhbXAoMjgwcHgsIOKApilgIGZsb29yLiAqL1xuZXhwb3J0IGNvbnN0IFBBTkVMX01JTl9XSURUSCA9IDI4MDtcblxuLyoqXG4gKiBBYnNvbHV0ZSBjZWlsaW5nIGVuZm9yY2VkIGF0IHRoZSBzdG9yYWdlIGxheWVyIHNvIGEgY29ycnVwdCBvciBzdGFsZSBzdG9yZWRcbiAqIHZhbHVlIGNhbiBuZXZlciB3ZWRnZSB0aGUgbGF5b3V0IG9wZW4uXG4gKi9cbmV4cG9ydCBjb25zdCBQQU5FTF9IQVJEX01BWF9XSURUSCA9IDEzMDA7XG5cbi8qKiBEZWZhdWx0IHdpZHRoIOKAlCBtYXRjaGVzIHRoZSBwcmV2aW91cyBmaXhlZCAzNjBweCBjb2x1bW4uICovXG5leHBvcnQgY29uc3QgUEFORUxfREVGQVVMVF9XSURUSCA9IDM2MDtcblxuLyoqXG4gKiBXaWR0aCB0aGUgbWFpbiAoZXZlbnQgbGlzdCArIHRpbWVsaW5lKSBhcmVhIGtlZXBzIHdoaWxlIHRoZSBwYW5lbCBpc1xuICogcmVzaXplZCBvciB0aGUgY29udGFpbmVyIHNocmlua3MuIEJlbG93IGBQQU5FTF9NSU5fV0lEVEggKyBNQUlOX01JTl9XSURUSGBcbiAqIG9mIGNvbnRhaW5lciB0aGUgcGFuZWwgZ2l2ZXMgd2F5IGZpcnN0LCBjb21wcmVzc2luZyBiZWxvdyBpdHMgb3duIGZsb29yIOKAlFxuICogdGhlIGxpc3QgYW5kIHRpbWVsaW5lIHN0YXkgdXNhYmxlIGF0IHRoZSBwYW5lbCdzIGV4cGVuc2UuXG4gKi9cbmV4cG9ydCBjb25zdCBNQUlOX01JTl9XSURUSCA9IDQwMDtcblxuZXhwb3J0IGNvbnN0IFBBTkVMX1dJRFRIX1NUT1JBR0VfS0VZID0gJ3dvcmtmbG93LXRyYWNlLWRldGFpbC1wYW5lbC13aWR0aCc7XG5cbmZ1bmN0aW9uIGNsYW1wKHZhbHVlOiBudW1iZXIsIG1pbjogbnVtYmVyLCBtYXg6IG51bWJlcik6IG51bWJlciB7XG4gIHJldHVybiBNYXRoLm1pbihNYXRoLm1heCh2YWx1ZSwgbWluKSwgbWF4KTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGNvbXB1dGVNYXhQYW5lbFdpZHRoKGF2YWlsYWJsZVdpZHRoOiBudW1iZXIpOiBudW1iZXIge1xuICBpZiAoYXZhaWxhYmxlV2lkdGggPD0gMCkgcmV0dXJuIFBBTkVMX0hBUkRfTUFYX1dJRFRIO1xuICByZXR1cm4gTWF0aC5taW4oXG4gICAgTWF0aC5tYXgoYXZhaWxhYmxlV2lkdGggLSBNQUlOX01JTl9XSURUSCwgMCksXG4gICAgUEFORUxfSEFSRF9NQVhfV0lEVEhcbiAgKTtcbn1cblxuLyoqXG4gKiBOb3RlOiB3aGVuIHRoZSBjb250YWluZXIgaXMgdG9vIHNtYWxsIHRvIGhvbm9yIGJvdGggZmxvb3JzXG4gKiAoYGF2YWlsYWJsZVdpZHRoIDwgUEFORUxfTUlOX1dJRFRIICsgTUFJTl9NSU5fV0lEVEhgKSwgdGhlIG1heCB3aW5zIGFuZCB0aGVcbiAqIHBhbmVsIGNvbXByZXNzZXMgYmVsb3cgYFBBTkVMX01JTl9XSURUSGAuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBjbGFtcFBhbmVsV2lkdGgod2lkdGg6IG51bWJlciwgYXZhaWxhYmxlV2lkdGg6IG51bWJlcik6IG51bWJlciB7XG4gIHJldHVybiBjbGFtcCh3aWR0aCwgUEFORUxfTUlOX1dJRFRILCBjb21wdXRlTWF4UGFuZWxXaWR0aChhdmFpbGFibGVXaWR0aCkpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gcmVhZFN0b3JlZFBhbmVsV2lkdGgoKTogbnVtYmVyIHtcbiAgaWYgKHR5cGVvZiB3aW5kb3cgPT09ICd1bmRlZmluZWQnKSByZXR1cm4gUEFORUxfREVGQVVMVF9XSURUSDtcbiAgdHJ5IHtcbiAgICBjb25zdCByYXcgPSB3aW5kb3cubG9jYWxTdG9yYWdlLmdldEl0ZW0oUEFORUxfV0lEVEhfU1RPUkFHRV9LRVkpO1xuICAgIGNvbnN0IHZhbHVlID0gcmF3ID8gTnVtYmVyKHJhdykgOiBOdW1iZXIuTmFOO1xuICAgIGlmICghTnVtYmVyLmlzRmluaXRlKHZhbHVlKSkgcmV0dXJuIFBBTkVMX0RFRkFVTFRfV0lEVEg7XG4gICAgLy8gT25seSBlbmZvcmNlIGFic29sdXRlIGJvdW5kcyBhdCB0aGUgc3RvcmFnZSBsYXllcjsgdGhlIGNvbnRhaW5lci1yZWxhdGl2ZVxuICAgIC8vIG1heCBpcyBhcHBsaWVkIGF0IHJlbmRlciB0aW1lIChzZWUgbW9kdWxlIGRvY3MpLlxuICAgIHJldHVybiBjbGFtcCh2YWx1ZSwgUEFORUxfTUlOX1dJRFRILCBQQU5FTF9IQVJEX01BWF9XSURUSCk7XG4gIH0gY2F0Y2gge1xuICAgIHJldHVybiBQQU5FTF9ERUZBVUxUX1dJRFRIO1xuICB9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiB3cml0ZVN0b3JlZFBhbmVsV2lkdGgod2lkdGg6IG51bWJlcik6IHZvaWQge1xuICBpZiAodHlwZW9mIHdpbmRvdyA9PT0gJ3VuZGVmaW5lZCcpIHJldHVybjtcbiAgdHJ5IHtcbiAgICB3aW5kb3cubG9jYWxTdG9yYWdlLnNldEl0ZW0oXG4gICAgICBQQU5FTF9XSURUSF9TVE9SQUdFX0tFWSxcbiAgICAgIFN0cmluZyhNYXRoLnJvdW5kKHdpZHRoKSlcbiAgICApO1xuICB9IGNhdGNoIHtcbiAgICAvLyBCZXN0LWVmZm9ydCAocHJpdmF0ZSBtb2RlLCBxdW90YSkuXG4gIH1cbn1cbiJdfQ==
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { type ReactNode, type RefObject } from 'react';
|
|
2
|
+
/**
|
|
3
|
+
* The span detail aside: content, prev/next/close header, J/K navigation, and
|
|
4
|
+
* the resizable left border with its width model (see detail-panel-width.ts).
|
|
5
|
+
*
|
|
6
|
+
* Always mounted — it renders null without a selection — so the panel width
|
|
7
|
+
* survives closing and reopening within a session.
|
|
8
|
+
*/
|
|
9
|
+
export declare function TraceDetailPanel({ containerRef, onNavigateToSpan, onClose, }: {
|
|
10
|
+
containerRef: RefObject<HTMLDivElement | null>;
|
|
11
|
+
onNavigateToSpan: (spanId: string) => void;
|
|
12
|
+
onClose: () => void;
|
|
13
|
+
}): ReactNode;
|
|
14
|
+
//# sourceMappingURL=detail-panel.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"detail-panel.d.ts","sourceRoot":"","sources":["../../../../src/components/new-trace-viewer/components/detail-panel.tsx"],"names":[],"mappings":"AAIA,OAAO,EACL,KAAK,SAAS,EACd,KAAK,SAAS,EAMf,MAAM,OAAO,CAAC;AAiDf;;;;;;GAMG;AACH,wBAAgB,gBAAgB,CAAC,EAC/B,YAAY,EACZ,gBAAgB,EAChB,OAAO,GACR,EAAE;IACD,YAAY,EAAE,SAAS,CAAC,cAAc,GAAG,IAAI,CAAC,CAAC;IAC/C,gBAAgB,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,IAAI,CAAC;IAC3C,OAAO,EAAE,MAAM,IAAI,CAAC;CACrB,GAAG,SAAS,CAoMZ"}
|
|
@@ -0,0 +1,122 @@
|
|
|
1
|
+
'use client';
|
|
2
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
3
|
+
import { parseStepName, parseWorkflowName } from '@workflow/utils/parse-name';
|
|
4
|
+
import { ChevronDown, ChevronUp, X } from 'lucide-react';
|
|
5
|
+
import { useCallback, useEffect, useMemo, useRef, useState, } from 'react';
|
|
6
|
+
import { filterSpanRawEvents } from '../../../lib/trace-builder';
|
|
7
|
+
import { ErrorBoundary } from '../../error-boundary';
|
|
8
|
+
import { EntityDetailPanel, } from '../../sidebar/entity-detail-panel';
|
|
9
|
+
import { useSidebarData } from '../../sidebar/sidebar-data-context';
|
|
10
|
+
import { IconButton } from '../../ui/icon-button';
|
|
11
|
+
import { Kbd } from '../../ui/kbd';
|
|
12
|
+
import { Tooltip, TooltipContent, TooltipTrigger } from '../../ui/tooltip';
|
|
13
|
+
import { useActiveSpan } from '../context';
|
|
14
|
+
import { clampPanelWidth, computeMaxPanelWidth, PANEL_DEFAULT_WIDTH, PANEL_MIN_WIDTH, readStoredPanelWidth, writeStoredPanelWidth, } from './detail-panel-width';
|
|
15
|
+
import { DraggableBorder } from './draggable-border';
|
|
16
|
+
import { useElementWidth } from './use-element-width';
|
|
17
|
+
const DETAIL_PANEL_ID = 'trace-detail-panel';
|
|
18
|
+
/** Bridge ActiveSpanContext + SidebarDataContext → SelectedSpanInfo. */
|
|
19
|
+
function useSelectedSpanInfo() {
|
|
20
|
+
const { activeSpan } = useActiveSpan();
|
|
21
|
+
const sidebar = useSidebarData();
|
|
22
|
+
return useMemo(() => {
|
|
23
|
+
if (!activeSpan)
|
|
24
|
+
return null;
|
|
25
|
+
const resource = activeSpan.attributes?.resource;
|
|
26
|
+
const rawEvents = filterSpanRawEvents(sidebar.events, resource, activeSpan.spanId);
|
|
27
|
+
return {
|
|
28
|
+
data: activeSpan.attributes?.data,
|
|
29
|
+
resource,
|
|
30
|
+
spanId: activeSpan.spanId,
|
|
31
|
+
rawEvents,
|
|
32
|
+
};
|
|
33
|
+
}, [activeSpan, sidebar]);
|
|
34
|
+
}
|
|
35
|
+
/**
|
|
36
|
+
* The span detail aside: content, prev/next/close header, J/K navigation, and
|
|
37
|
+
* the resizable left border with its width model (see detail-panel-width.ts).
|
|
38
|
+
*
|
|
39
|
+
* Always mounted — it renders null without a selection — so the panel width
|
|
40
|
+
* survives closing and reopening within a session.
|
|
41
|
+
*/
|
|
42
|
+
export function TraceDetailPanel({ containerRef, onNavigateToSpan, onClose, }) {
|
|
43
|
+
const { activeSpan, activeSpanId, spans } = useActiveSpan();
|
|
44
|
+
const sidebar = useSidebarData();
|
|
45
|
+
const selectedSpan = useSelectedSpanInfo();
|
|
46
|
+
const isOpen = Boolean(activeSpan);
|
|
47
|
+
const [storedWidth, setStoredWidth] = useState(() => readStoredPanelWidth());
|
|
48
|
+
const containerWidth = useElementWidth(containerRef, isOpen);
|
|
49
|
+
const asideRef = useRef(null);
|
|
50
|
+
const handleResize = useCallback((next) => {
|
|
51
|
+
const clamped = clampPanelWidth(next, containerWidth);
|
|
52
|
+
setStoredWidth(clamped);
|
|
53
|
+
writeStoredPanelWidth(clamped);
|
|
54
|
+
}, [containerWidth]);
|
|
55
|
+
const panelWidth = clampPanelWidth(storedWidth, containerWidth);
|
|
56
|
+
const panelMaxWidth = Math.max(PANEL_MIN_WIDTH, computeMaxPanelWidth(containerWidth));
|
|
57
|
+
const { prevSpanId, nextSpanId } = useMemo(() => {
|
|
58
|
+
if (!activeSpanId)
|
|
59
|
+
return { prevSpanId: null, nextSpanId: null };
|
|
60
|
+
const i = spans.findIndex((s) => s.spanId === activeSpanId);
|
|
61
|
+
if (i === -1)
|
|
62
|
+
return { prevSpanId: null, nextSpanId: null };
|
|
63
|
+
return {
|
|
64
|
+
prevSpanId: spans[i - 1]?.spanId ?? null,
|
|
65
|
+
nextSpanId: spans[i + 1]?.spanId ?? null,
|
|
66
|
+
};
|
|
67
|
+
}, [activeSpanId, spans]);
|
|
68
|
+
const handleSelectPrev = useCallback(() => {
|
|
69
|
+
if (prevSpanId)
|
|
70
|
+
onNavigateToSpan(prevSpanId);
|
|
71
|
+
}, [prevSpanId, onNavigateToSpan]);
|
|
72
|
+
const handleSelectNext = useCallback(() => {
|
|
73
|
+
if (nextSpanId)
|
|
74
|
+
onNavigateToSpan(nextSpanId);
|
|
75
|
+
}, [nextSpanId, onNavigateToSpan]);
|
|
76
|
+
useEffect(() => {
|
|
77
|
+
if (!isOpen)
|
|
78
|
+
return;
|
|
79
|
+
const onKeyDown = (e) => {
|
|
80
|
+
if (e.key !== 'j' &&
|
|
81
|
+
e.key !== 'k' &&
|
|
82
|
+
e.key !== 'ArrowDown' &&
|
|
83
|
+
e.key !== 'ArrowUp') {
|
|
84
|
+
return;
|
|
85
|
+
}
|
|
86
|
+
const target = e.target;
|
|
87
|
+
if (target instanceof HTMLInputElement ||
|
|
88
|
+
target instanceof HTMLTextAreaElement ||
|
|
89
|
+
target?.isContentEditable) {
|
|
90
|
+
return;
|
|
91
|
+
}
|
|
92
|
+
const targetId = e.key === 'k' || e.key === 'ArrowUp' ? prevSpanId : nextSpanId;
|
|
93
|
+
if (targetId) {
|
|
94
|
+
e.preventDefault();
|
|
95
|
+
onNavigateToSpan(targetId);
|
|
96
|
+
}
|
|
97
|
+
};
|
|
98
|
+
window.addEventListener('keydown', onKeyDown);
|
|
99
|
+
return () => window.removeEventListener('keydown', onKeyDown);
|
|
100
|
+
}, [isOpen, prevSpanId, nextSpanId, onNavigateToSpan]);
|
|
101
|
+
// Derive the selected span name for the panel header
|
|
102
|
+
const selectedSpanName = useMemo(() => {
|
|
103
|
+
if (!selectedSpan?.data)
|
|
104
|
+
return 'Details';
|
|
105
|
+
const data = selectedSpan.data;
|
|
106
|
+
if (selectedSpan.resource === 'hook') {
|
|
107
|
+
return data.token ?? data.hookId;
|
|
108
|
+
}
|
|
109
|
+
const stepName = data.stepName;
|
|
110
|
+
const workflowName = data.workflowName;
|
|
111
|
+
return ((stepName ? parseStepName(stepName)?.shortName : undefined) ??
|
|
112
|
+
(workflowName ? parseWorkflowName(workflowName)?.shortName : undefined) ??
|
|
113
|
+
stepName ??
|
|
114
|
+
workflowName ??
|
|
115
|
+
data.hookId ??
|
|
116
|
+
'Details');
|
|
117
|
+
}, [selectedSpan?.data, selectedSpan?.resource]);
|
|
118
|
+
if (!activeSpan)
|
|
119
|
+
return null;
|
|
120
|
+
return (_jsxs("aside", { ref: asideRef, id: DETAIL_PANEL_ID, className: "relative flex flex-col h-full max-h-full shrink-0 bg-background-100 border-l border-gray-alpha-400", style: { width: panelWidth }, children: [_jsx(DraggableBorder, { element: asideRef, position: "left", onWidthChange: handleResize, onReset: () => handleResize(PANEL_DEFAULT_WIDTH), "aria-label": "Resize span details panel", "aria-controls": DETAIL_PANEL_ID, "aria-valuemin": PANEL_MIN_WIDTH, "aria-valuemax": panelMaxWidth, "aria-valuenow": Math.min(Math.max(Math.round(panelWidth), PANEL_MIN_WIDTH), panelMaxWidth) }), _jsxs("div", { className: "flex items-center justify-between gap-2 shrink-0 px-4 py-[7.5px]", children: [_jsx("span", { className: "text-label-14 font-medium text-gray-1000 truncate block", children: selectedSpanName }), _jsxs("div", { className: "flex items-center gap-0.5 shrink-0", children: [_jsxs(Tooltip, { children: [_jsx(TooltipTrigger, { asChild: true, children: _jsx(IconButton, { "aria-label": "Navigate up", "aria-keyshortcuts": "K", onClick: handleSelectPrev, disabled: !prevSpanId, children: _jsx(ChevronUp, { className: "w-4 h-4" }) }) }), prevSpanId ? (_jsxs(TooltipContent, { children: ["Navigate up", _jsx(Kbd, { children: "K" })] })) : null] }), _jsxs(Tooltip, { children: [_jsx(TooltipTrigger, { asChild: true, children: _jsx(IconButton, { "aria-label": "Navigate down", "aria-keyshortcuts": "J", onClick: handleSelectNext, disabled: !nextSpanId, children: _jsx(ChevronDown, { className: "w-4 h-4" }) }) }), nextSpanId ? (_jsxs(TooltipContent, { children: ["Navigate down", _jsx(Kbd, { children: "J" })] })) : null] }), _jsx("div", { "aria-hidden": true, className: "w-px h-4 bg-gray-alpha-400 mx-1" }), _jsx(IconButton, { "aria-label": "Close span details", "aria-keyshortcuts": "Escape", onClick: onClose, children: _jsx(X, { className: "w-4 h-4" }) })] })] }), _jsx("div", { className: "flex-1 overflow-y-auto", children: _jsx(ErrorBoundary, { children: _jsx(EntityDetailPanel, { run: sidebar.run, onStreamClick: sidebar.onStreamClick, onRunClick: sidebar.onRunClick, fetchSpanDetail: sidebar.fetchSpanDetail, onWakeUpSleep: sidebar.onWakeUpSleep, onLoadEventData: sidebar.onLoadEventData, onResolveHook: sidebar.onResolveHook, encryptionKey: sidebar.encryptionKey, onDecrypt: sidebar.onDecrypt, isDecrypting: sidebar.isDecrypting, selectedSpan: selectedSpan, showSeparateEventOccurrenceTimestamps: sidebar.showSeparateEventOccurrenceTimestamps, getModuleSourceUrl: sidebar.getModuleSourceUrl }) }) })] }));
|
|
121
|
+
}
|
|
122
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGV0YWlsLXBhbmVsLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2NvbXBvbmVudHMvbmV3LXRyYWNlLXZpZXdlci9jb21wb25lbnRzL2RldGFpbC1wYW5lbC50c3giXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsWUFBWSxDQUFDOztBQUViLE9BQU8sRUFBRSxhQUFhLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUM5RSxPQUFPLEVBQUUsV0FBVyxFQUFFLFNBQVMsRUFBRSxDQUFDLEVBQUUsTUFBTSxjQUFjLENBQUM7QUFDekQsT0FBTyxFQUdMLFdBQVcsRUFDWCxTQUFTLEVBQ1QsT0FBTyxFQUNQLE1BQU0sRUFDTixRQUFRLEdBQ1QsTUFBTSxPQUFPLENBQUM7QUFDZixPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUNqRSxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDckQsT0FBTyxFQUNMLGlCQUFpQixHQUVsQixNQUFNLG1DQUFtQyxDQUFDO0FBQzNDLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxvQ0FBb0MsQ0FBQztBQUNwRSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDbEQsT0FBTyxFQUFFLEdBQUcsRUFBRSxNQUFNLGNBQWMsQ0FBQztBQUNuQyxPQUFPLEVBQUUsT0FBTyxFQUFFLGNBQWMsRUFBRSxjQUFjLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUMzRSxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sWUFBWSxDQUFDO0FBQzNDLE9BQU8sRUFDTCxlQUFlLEVBQ2Ysb0JBQW9CLEVBQ3BCLG1CQUFtQixFQUNuQixlQUFlLEVBQ2Ysb0JBQW9CLEVBQ3BCLHFCQUFxQixHQUN0QixNQUFNLHNCQUFzQixDQUFDO0FBQzlCLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUNyRCxPQUFPLEVB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QWtCLEVBQUUsT0FBTyxDQUFDLGtCQUFrQixHQUM5QyxHQUNZLEdBQ1osSUFDQSxDQUNULENBQUM7QUFDSixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiJ3VzZSBjbGllbnQnO1xuXG5pbXBvcnQgeyBwYXJzZVN0ZXBOYW1lLCBwYXJzZVdvcmtmbG93TmFtZSB9IGZyb20gJ0B3b3JrZmxvdy91dGlscy9wYXJzZS1uYW1lJztcbmltcG9ydCB7IENoZXZyb25Eb3duLCBDaGV2cm9uVXAsIFggfSBmcm9tICdsdWNpZGUtcmVhY3QnO1xuaW1wb3J0IHtcbiAgdHlwZSBSZWFjdE5vZGUsXG4gIHR5cGUgUmVmT2JqZWN0LFxuICB1c2VDYWxsYmFjayxcbiAgdXNlRWZmZWN0LFxuICB1c2VNZW1vLFxuICB1c2VSZWYsXG4gIHVzZVN0YXRlLFxufSBmcm9tICdyZWFjdCc7XG5pbXBvcnQgeyBmaWx0ZXJTcGFuUmF3RXZlbnRzIH0gZnJvbSAnLi4vLi4vLi4vbGliL3RyYWNlLWJ1aWxkZXInO1xuaW1wb3J0IHsgRXJyb3JCb3VuZGFyeSB9IGZyb20gJy4uLy4uL2Vycm9yLWJvdW5kYXJ5JztcbmltcG9ydCB7XG4gIEVudGl0eURldGFpbFBhbmVsLFxuICB0eXBlIFNlbGVjdGVkU3BhbkluZm8sXG59IGZyb20gJy4uLy4uL3NpZGViYXIvZW50aXR5LWRldGFpbC1wYW5lbCc7XG5pbXBvcnQgeyB1c2VTaWRlYmFyRGF0YSB9IGZyb20gJy4uLy4uL3NpZGViYXIvc2lkZWJhci1kYXRhLWNvbnRleHQnO1xuaW1wb3J0IHsgSWNvbkJ1dHRvbiB9IGZyb20gJy4uLy4uL3VpL2ljb24tYnV0dG9uJztcbmltcG9ydCB7IEtiZCB9IGZyb20gJy4uLy4uL3VpL2tiZCc7XG5pbXBvcnQgeyBUb29sdGlwLCBUb29sdGlwQ29udGVudCwgVG9vbHRpcFRyaWdnZXIgfSBmcm9tICcuLi8uLi91aS90b29sdGlwJztcbmltcG9ydCB7IHVzZUFjdGl2ZVNwYW4gfSBmcm9tICcuLi9jb250ZXh0JztcbmltcG9ydCB7XG4gIGNsYW1wUGFuZWxXaWR0aCxcbiAgY29tcHV0ZU1heFBhbmVsV2lkdGgsXG4gIFBBTkVMX0RFRkFVTFRfV0lEVEgsXG4gIFBBTkVMX01JTl9XSURUSCxcbiAgcmVhZFN0b3JlZFBhbmVsV2lkdGgsXG4gIHdyaXRlU3RvcmVkUGFuZWxXaWR0aCxcbn0gZnJvbSAnLi9kZXRhaWwtcGFuZWwtd2lkdGgnO1xuaW1wb3J0IHsgRHJhZ2dhYmxlQm9yZGVyIH0gZnJvbSAnLi9kcmFnZ2FibGUtYm9yZGVyJztcbmltcG9ydCB7IHVzZUVsZW1lbnRXaWR0aCB9IGZyb20gJy4vdXNlLWVsZW1lbnQtd2lkdGgnO1xuXG5jb25zdCBERVRBSUxfUEFORUxfSUQgPSAndHJhY2UtZGV0YWlsLXBhbmVsJztcblxuLyoqIEJyaWRnZSBBY3RpdmVTcGFuQ29udGV4dCArIFNpZGViYXJEYXRhQ29udGV4dCDihpIgU2VsZWN0ZWRTcGFuSW5mby4gKi9cbmZ1bmN0aW9uIHVzZVNlbGVjdGVkU3BhbkluZm8oKTogU2VsZWN0ZWRTcGFuSW5mbyB8IG51bGwge1xuICBjb25zdCB7IGFjdGl2ZVNwYW4gfSA9IHVzZUFjdGl2ZVNwYW4oKTtcbiAgY29uc3Qgc2lkZWJhciA9IHVzZVNpZGViYXJEYXRhKCk7XG5cbiAgcmV0dXJuIHVzZU1lbW8oKCkgPT4ge1xuICAgIGlmICghYWN0aXZlU3BhbikgcmV0dXJuIG51bGw7XG5cbiAgICBjb25zdCByZXNvdXJjZSA9IGFjdGl2ZVNwYW4uYXR0cmlidXRlcz8ucmVzb3VyY2UgYXMgc3RyaW5nIHwgdW5kZWZpbmVkO1xuICAgIGNvbnN0IHJhd0V2ZW50cyA9IGZpbHRlclNwYW5SYXdFdmVudHMoXG4gICAgICBzaWRlYmFyLmV2ZW50cyxcbiAgICAgIHJlc291cmNlLFxuICAgICAgYWN0aXZlU3Bhbi5zcGFuSWRcbiAgICApO1xuXG4gICAgcmV0dXJuIHtcbiAgICAgIGRhdGE6IGFjdGl2ZVNwYW4uYXR0cmlidXRlcz8uZGF0YSxcbiAgICAgIHJlc291cmNlLFxuICAgICAgc3BhbklkOiBhY3RpdmVTcGFuLnNwYW5JZCxcbiAgICAgIHJhd0V2ZW50cyxcbiAgICB9O1xuICB9LCBbYWN0aXZlU3Bhbiwgc2lkZWJhcl0pO1xufVxuXG4vKipcbiAqIFRoZSBzcGFuIGRldGFpbCBhc2lkZTogY29udGVudCwgcHJldi9uZXh0L2Nsb3NlIGhlYWRlciwgSi9LIG5hdmlnYXRpb24sIGFuZFxuICogdGhlIHJlc2l6YWJsZSBsZWZ0IGJvcmRlciB3aXRoIGl0cyB3aWR0aCBtb2RlbCAoc2VlIGRldGFpbC1wYW5lbC13aWR0aC50cykuXG4gKlxuICogQWx3YXlzIG1vdW50ZWQg4oCUIGl0IHJlbmRlcnMgbnVsbCB3aXRob3V0IGEgc2VsZWN0aW9uIOKAlCBzbyB0aGUgcGFuZWwgd2lkdGhcbiAqIHN1cnZpdmVzIGNsb3NpbmcgYW5kIHJlb3BlbmluZyB3aXRoaW4gYSBzZXNzaW9uLlxuICovXG5leHBvcnQgZnVuY3Rpb24gVHJhY2VEZXRhaWxQYW5lbCh7XG4gIGNvbnRhaW5lclJlZixcbiAgb25OYXZpZ2F0ZVRvU3BhbixcbiAgb25DbG9zZSxcbn06IHtcbiAgY29udGFpbmVyUmVmOiBSZWZPYmplY3Q8SFRNTERpdkVsZW1lbnQgfCBudWxsPjtcbiAgb25OYXZpZ2F0ZVRvU3BhbjogKHNwYW5JZDogc3RyaW5nKSA9PiB2b2lkO1xuICBvbkNsb3NlOiAoKSA9PiB2b2lkO1xufSk6IFJlYWN0Tm9kZSB7XG4gIGNvbnN0IHsgYWN0aXZlU3BhbiwgYWN0aXZlU3BhbklkLCBzcGFucyB9ID0gdXNlQWN0aXZlU3BhbigpO1xuICBjb25zdCBzaWRlYmFyID0gdXNlU2lkZWJhckRhdGEoKTtcbiAgY29uc3Qgc2VsZWN0ZWRTcGFuID0gdXNlU2VsZWN0ZWRTcGFuSW5mbygpO1xuICBjb25zdCBpc09wZW4gPSBCb29sZWFuKGFjdGl2ZVNwYW4pO1xuXG4gIGNvbnN0IFtzdG9yZWRXaWR0aCwgc2V0U3RvcmVkV2lkdGhdID0gdXNlU3RhdGU8bnVtYmVyPigoKSA9PlxuICAgIHJlYWRTdG9yZWRQYW5lbFdpZHRoKClcbiAgKTtcbiAgY29uc3QgY29udGFpbmVyV2lkdGggPSB1c2VFbGVtZW50V2lkdGgoY29udGFpbmVyUmVmLCBpc09wZW4pO1xuICBjb25zdCBhc2lkZVJlZiA9IHVzZVJlZjxIVE1MRGl2RWxlbWVudCB8IG51bGw+KG51bGwpO1xuXG4gIGNvbnN0IGhhbmRsZVJlc2l6ZSA9IHVzZUNhbGxiYWNrKFxuICAgIChuZXh0OiBudW1iZXIpID0+IHtcbiAgICAgIGNvbnN0IGNsYW1wZWQgPSBjbGFtcFBhbmVsV2lkdGgobmV4dCwgY29udGFpbmVyV2lkdGgpO1xuICAgICAgc2V0U3RvcmVkV2lkdGgoY2xhbXBlZCk7XG4gICAgICB3cml0ZVN0b3JlZFBhbmVsV2lkdGgoY2xhbXBlZCk7XG4gICAgfSxcbiAgICBbY29udGFpbmVyV2lkdGhdXG4gICk7XG5cbiAgY29uc3QgcGFuZWxXaWR0aCA9IGNsYW1wUGFuZWxXaWR0aChzdG9yZWRXaWR0aCwgY29udGFpbmVyV2lkdGgpO1xuICBjb25zdCBwYW5lbE1heFdpZHRoID0gTWF0aC5tYXgoXG4gICAgUEFORUxfTUlOX1dJRFRILFxuICAgIGNvbXB1dGVNYXhQYW5lbFdpZHRoKGNvbnRhaW5lcldpZHRoKVxuICApO1xuXG4gIGNvbnN0IHsgcHJldlNwYW5JZCwgbmV4dFNwYW5JZCB9ID0gdXNlTWVtbygoKSA9PiB7XG4gICAgaWYgKCFhY3RpdmVTcGFuSWQpIHJldHVybiB7IHByZXZTcGFuSWQ6IG51bGwsIG5leHRTcGFuSWQ6IG51bGwgfTtcbiAgICBjb25zdCBpID0gc3BhbnMuZmluZEluZGV4KChzKSA9PiBzLnNwYW5JZCA9PT0gYWN0aXZlU3BhbklkKTtcbiAgICBpZiAoaSA9PT0gLTEpIHJldHVybiB7IHByZXZTcGFuSWQ6IG51bGwsIG5leHRTcGFuSWQ6IG51bGwgfTtcbiAgICByZXR1cm4ge1xuICAgICAgcHJldlNwYW5JZDogc3BhbnNbaSAtIDFdPy5zcGFuSWQgPz8gbnVsbCxcbiAgICAgIG5leHRTcGFuSWQ6IHNwYW5zW2kgKyAxXT8uc3BhbklkID8/IG51bGwsXG4gICAgfTtcbiAgfSwgW2FjdGl2ZVNwYW5JZCwgc3BhbnNdKTtcblxuICBjb25zdCBoYW5kbGVTZWxlY3RQcmV2ID0gdXNlQ2FsbGJhY2soKCkgPT4ge1xuICAgIGlmIChwcmV2U3BhbklkKSBvbk5hdmlnYXRlVG9TcGFuKHByZXZTcGFuSWQpO1xuICB9LCBbcHJldlNwYW5JZCwgb25OYXZpZ2F0ZVRvU3Bhbl0pO1xuXG4gIGNvbnN0IGhhbmRsZVNlbGVjdE5leHQgPSB1c2VDYWxsYmFjaygoKSA9PiB7XG4gICAgaWYgKG5leHRTcGFuSWQpIG9uTmF2aWdhdGVUb1NwYW4obmV4dFNwYW5JZCk7XG4gIH0sIFtuZXh0U3BhbklkLCBvbk5hdmlnYXRlVG9TcGFuXSk7XG5cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBpZiAoIWlzT3BlbikgcmV0dXJuO1xuXG4gICAgY29uc3Qgb25LZXlEb3duID0gKGU6IEtleWJvYXJkRXZlbnQpOiB2b2lkID0+IHtcbiAgICAgIGlmIChcbiAgICAgICAgZS5rZXkgIT09ICdqJyAmJlxuICAgICAgICBlLmtleSAhPT0gJ2snICYmXG4gICAgICAgIGUua2V5ICE9PSAnQXJyb3dEb3duJyAmJlxuICAgICAgICBlLmtleSAhPT0gJ0Fycm93VXAnXG4gICAgICApIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgICAgY29uc3QgdGFyZ2V0ID0gZS50YXJnZXQgYXMgSFRNTEVsZW1lbnQgfCBudWxsO1xuICAgICAgaWYgKFxuICAgICAgICB0YXJnZXQgaW5zdGFuY2VvZiBIVE1MSW5wdXRFbGVtZW50IHx8XG4gICAgICAgIHRhcmdldCBpbnN0YW5jZW9mIEhUTUxUZXh0QXJlYUVsZW1lbnQgfHxcbiAgICAgICAgdGFyZ2V0Py5pc0NvbnRlbnRFZGl0YWJsZVxuICAgICAgKSB7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICAgIGNvbnN0IHRhcmdldElkID1cbiAgICAgICAgZS5rZXkgPT09ICdrJyB8fCBlLmtleSA9PT0gJ0Fycm93VXAnID8gcHJldlNwYW5JZCA6IG5leHRTcGFuSWQ7XG4gICAgICBpZiAodGFyZ2V0SWQpIHtcbiAgICAgICAgZS5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICBvbk5hdmlnYXRlVG9TcGFuKHRhcmdldElkKTtcbiAgICAgIH1cbiAgICB9O1xuXG4gICAgd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoJ2tleWRvd24nLCBvbktleURvd24pO1xuICAgIHJldHVybiAoKSA9PiB3aW5kb3cucmVtb3ZlRXZlbnRMaXN0ZW5lcigna2V5ZG93bicsIG9uS2V5RG93bik7XG4gIH0sIFtpc09wZW4sIHByZXZTcGFuSWQsIG5leHRTcGFuSWQsIG9uTmF2aWdhdGVUb1NwYW5dKTtcblxuICAvLyBEZXJpdmUgdGhlIHNlbGVjdGVkIHNwYW4gbmFtZSBmb3IgdGhlIHBhbmVsIGhlYWRlclxuICBjb25zdCBzZWxlY3RlZFNwYW5OYW1lID0gdXNlTWVtbygoKSA9PiB7XG4gICAgaWYgKCFzZWxlY3RlZFNwYW4/LmRhdGEpIHJldHVybiAnRGV0YWlscyc7XG4gICAgY29uc3QgZGF0YSA9IHNlbGVjdGVkU3Bhbi5kYXRhIGFzIFJlY29yZDxzdHJpbmcsIHVua25vd24+O1xuICAgIGlmIChzZWxlY3RlZFNwYW4ucmVzb3VyY2UgPT09ICdob29rJykge1xuICAgICAgcmV0dXJuIChkYXRhLnRva2VuIGFzIHN0cmluZyB8IHVuZGVmaW5lZCkgPz8gKGRhdGEuaG9va0lkIGFzIHN0cmluZyk7XG4gICAgfVxuXG4gICAgY29uc3Qgc3RlcE5hbWUgPSBkYXRhLnN0ZXBOYW1lIGFzIHN0cmluZyB8IHVuZGVmaW5lZDtcbiAgICBjb25zdCB3b3JrZmxvd05hbWUgPSBkYXRhLndvcmtmbG93TmFtZSBhcyBzdHJpbmcgfCB1bmRlZmluZWQ7XG4gICAgcmV0dXJuIChcbiAgICAgIChzdGVwTmFtZSA/IHBhcnNlU3RlcE5hbWUoc3RlcE5hbWUpPy5zaG9ydE5hbWUgOiB1bmRlZmluZWQpID8/XG4gICAgICAod29ya2Zsb3dOYW1lID8gcGFyc2VXb3JrZmxvd05hbWUod29ya2Zsb3dOYW1lKT8uc2hvcnROYW1lIDogdW5kZWZpbmVkKSA/P1xuICAgICAgc3RlcE5hbWUgPz9cbiAgICAgIHdvcmtmbG93TmFtZSA/P1xuICAgICAgKGRhdGEuaG9va0lkIGFzIHN0cmluZykgPz9cbiAgICAgICdEZXRhaWxzJ1xuICAgICk7XG4gIH0sIFtzZWxlY3RlZFNwYW4/LmRhdGEsIHNlbGVjdGVkU3Bhbj8ucmVzb3VyY2VdKTtcblxuICBpZiAoIWFjdGl2ZVNwYW4pIHJldHVybiBudWxsO1xuXG4gIHJldHVybiAoXG4gICAgPGFzaWRlXG4gICAgICByZWY9e2FzaWRlUmVmfVxuICAgICAgaWQ9e0RFVEFJTF9QQU5FTF9JRH1cbiAgICAgIGNsYXNzTmFtZT1cInJlbGF0aXZlIGZsZXggZmxleC1jb2wgaC1mdWxsIG1heC1oLWZ1bGwgc2hyaW5rLTAgYmctYmFja2dyb3VuZC0xMDAgYm9yZGVyLWwgYm9yZGVyLWdyYXktYWxwaGEtNDAwXCJcbiAgICAgIHN0eWxlPXt7IHdpZHRoOiBwYW5lbFdpZHRoIH19XG4gICAgPlxuICAgICAgPERyYWdnYWJsZUJvcmRlclxuICAgICAgICBlbGVtZW50PXthc2lkZVJlZn1cbiAgICAgICAgcG9zaXRpb249XCJsZWZ0XCJcbiAgICAgICAgb25XaWR0aENoYW5nZT17aGFuZGxlUmVzaXplfVxuICAgICAgICBvblJlc2V0PXsoKSA9PiBoYW5kbGVSZXNpemUoUEFORUxfREVGQVVMVF9XSURUSCl9XG4gICAgICAgIGFyaWEtbGFiZWw9XCJSZXNpemUgc3BhbiBkZXRhaWxzIHBhbmVsXCJcbiAgICAgICAgYXJpYS1jb250cm9scz17REVUQUlMX1BBTkVMX0lEfVxuICAgICAgICBhcmlhLXZhbHVlbWluPXtQQU5FTF9NSU5fV0lEVEh9XG4gICAgICAgIGFyaWEtdmFsdWVtYXg9e3BhbmVsTWF4V2lkdGh9XG4gICAgICAgIGFyaWEtdmFsdWVub3c9e01hdGgubWluKFxuICAgICAgICAgIE1hdGgubWF4KE1hdGgucm91bmQocGFuZWxXaWR0aCksIFBBTkVMX01JTl9XSURUSCksXG4gICAgICAgICAgcGFuZWxNYXhXaWR0aFxuICAgICAgICApfVxuICAgICAgLz5cbiAgICAgIHsvKiBQYW5lbCBoZWFkZXIgKi99XG4gICAgICA8ZGl2IGNsYXNzTmFtZT1cImZsZXggaXRlbXMtY2VudGVyIGp1c3RpZnktYmV0d2VlbiBnYXAtMiBzaHJpbmstMCBweC00IHB5LVs3LjVweF1cIj5cbiAgICAgICAgPHNwYW4gY2xhc3NOYW1lPVwidGV4dC1sYWJlbC0xNCBmb250LW1lZGl1bSB0ZXh0LWdyYXktMTAwMCB0cnVuY2F0ZSBibG9ja1wiPlxuICAgICAgICAgIHtzZWxlY3RlZFNwYW5OYW1lfVxuICAgICAgICA8L3NwYW4+XG4gICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiZmxleCBpdGVtcy1jZW50ZXIgZ2FwLTAuNSBzaHJpbmstMFwiPlxuICAgICAgICAgIDxUb29sdGlwPlxuICAgICAgICAgICAgPFRvb2x0aXBUcmlnZ2VyIGFzQ2hpbGQ+XG4gICAgICAgICAgICAgIDxJY29uQnV0dG9uXG4gICAgICAgICAgICAgICAgYXJpYS1sYWJlbD1cIk5hdmlnYXRlIHVwXCJcbiAgICAgICAgICAgICAgICBhcmlhLWtleXNob3J0Y3V0cz1cIktcIlxuICAgICAgICAgICAgICAgIG9uQ2xpY2s9e2hhbmRsZVNlbGVjdFByZXZ9XG4gICAgICAgICAgICAgICAgZGlzYWJsZWQ9eyFwcmV2U3BhbklkfVxuICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgPENoZXZyb25VcCBjbGFzc05hbWU9XCJ3LTQgaC00XCIgLz5cbiAgICAgICAgICAgICAgPC9JY29uQnV0dG9uPlxuICAgICAgICAgICAgPC9Ub29sdGlwVHJpZ2dlcj5cbiAgICAgICAgICAgIHtwcmV2U3BhbklkID8gKFxuICAgICAgICAgICAgICA8VG9vbHRpcENvbnRlbnQ+XG4gICAgICAgICAgICAgICAgTmF2aWdhdGUgdXBcbiAgICAgICAgICAgICAgICA8S2JkPks8L0tiZD5cbiAgICAgICAgICAgICAgPC9Ub29sdGlwQ29udGVudD5cbiAgICAgICAgICAgICkgOiBudWxsfVxuICAgICAgICAgIDwvVG9vbHRpcD5cbiAgICAgICAgICA8VG9vbHRpcD5cbiAgICAgICAgICAgIDxUb29sdGlwVHJpZ2dlciBhc0NoaWxkPlxuICAgICAgICAgICAgICA8SWNvbkJ1dHRvblxuICAgICAgICAgICAgICAgIGFyaWEtbGFiZWw9XCJOYXZpZ2F0ZSBkb3duXCJcbiAgICAgICAgICAgICAgICBhcmlhLWtleXNob3J0Y3V0cz1cIkpcIlxuICAgICAgICAgICAgICAgIG9uQ2xpY2s9e2hhbmRsZVNlbGVjdE5leHR9XG4gICAgICAgICAgICAgICAgZGlzYWJsZWQ9eyFuZXh0U3BhbklkfVxuICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgPENoZXZyb25Eb3duIGNsYXNzTmFtZT1cInctNCBoLTRcIiAvPlxuICAgICAgICAgICAgICA8L0ljb25CdXR0b24+XG4gICAgICAgICAgICA8L1Rvb2x0aXBUcmlnZ2VyPlxuICAgICAgICAgICAge25leHRTcGFuSWQgPyAoXG4gICAgICAgICAgICAgIDxUb29sdGlwQ29udGVudD5cbiAgICAgICAgICAgICAgICBOYXZpZ2F0ZSBkb3duXG4gICAgICAgICAgICAgICAgPEtiZD5KPC9LYmQ+XG4gICAgICAgICAgICAgIDwvVG9vbHRpcENvbnRlbnQ+XG4gICAgICAgICAgICApIDogbnVsbH1cbiAgICAgICAgICA8L1Rvb2x0aXA+XG4gICAgICAgICAgPGRpdiBhcmlhLWhpZGRlbiBjbGFzc05hbWU9XCJ3LXB4IGgtNCBiZy1ncmF5LWFscGhhLTQwMCBteC0xXCIgLz5cbiAgICAgICAgICA8SWNvbkJ1dHRvblxuICAgICAgICAgICAgYXJpYS1sYWJlbD1cIkNsb3NlIHNwYW4gZGV0YWlsc1wiXG4gICAgICAgICAgICBhcmlhLWtleXNob3J0Y3V0cz1cIkVzY2FwZVwiXG4gICAgICAgICAgICBvbkNsaWNrPXtvbkNsb3NlfVxuICAgICAgICAgID5cbiAgICAgICAgICAgIDxYIGNsYXNzTmFtZT1cInctNCBoLTRcIiAvPlxuICAgICAgICAgIDwvSWNvbkJ1dHRvbj5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2Rpdj5cbiAgICAgIHsvKiBQYW5lbCBib2R5ICovfVxuICAgICAgPGRpdiBjbGFzc05hbWU9XCJmbGV4LTEgb3ZlcmZsb3cteS1hdXRvXCI+XG4gICAgICAgIDxFcnJvckJvdW5kYXJ5PlxuICAgICAgICAgIDxFbnRpdHlEZXRhaWxQYW5lbFxuICAgICAgICAgICAgcnVuPXtzaWRlYmFyLnJ1bn1cbiAgICAgICAgICAgIG9uU3RyZWFtQ2xpY2s9e3NpZGViYXIub25TdHJlYW1DbGlja31cbiAgICAgICAgICAgIG9uUnVuQ2xpY2s9e3NpZGViYXIub25SdW5DbGlja31cbiAgICAgICAgICAgIGZldGNoU3BhbkRldGFpbD17c2lkZWJhci5mZXRjaFNwYW5EZXRhaWx9XG4gICAgICAgICAgICBvbldha2VVcFNsZWVwPXtzaWRlYmFyLm9uV2FrZVVwU2xlZXB9XG4gICAgICAgICAgICBvbkxvYWRFdmVudERhdGE9e3NpZGViYXIub25Mb2FkRXZlbnREYXRhfVxuICAgICAgICAgICAgb25SZXNvbHZlSG9vaz17c2lkZWJhci5vblJlc29sdmVIb29rfVxuICAgICAgICAgICAgZW5jcnlwdGlvbktleT17c2lkZWJhci5lbmNyeXB0aW9uS2V5fVxuICAgICAgICAgICAgb25EZWNyeXB0PXtzaWRlYmFyLm9uRGVjcnlwdH1cbiAgICAgICAgICAgIGlzRGVjcnlwdGluZz17c2lkZWJhci5pc0RlY3J5cHRpbmd9XG4gICAgICAgICAgICBzZWxlY3RlZFNwYW49e3NlbGVjdGVkU3Bhbn1cbiAgICAgICAgICAgIHNob3dTZXBhcmF0ZUV2ZW50T2NjdXJyZW5jZVRpbWVzdGFtcHM9e1xuICAgICAgICAgICAgICBzaWRlYmFyLnNob3dTZXBhcmF0ZUV2ZW50T2NjdXJyZW5jZVRpbWVzdGFtcHNcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGdldE1vZHVsZVNvdXJjZVVybD17c2lkZWJhci5nZXRNb2R1bGVTb3VyY2VVcmx9XG4gICAgICAgICAgLz5cbiAgICAgICAgPC9FcnJvckJvdW5kYXJ5PlxuICAgICAgPC9kaXY+XG4gICAgPC9hc2lkZT5cbiAgKTtcbn1cbiJdfQ==
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
import { type RefObject } from 'react';
|
|
2
|
+
interface DraggableBorderProps {
|
|
3
|
+
/** The panel whose width this border adjusts (measured on interaction). */
|
|
4
|
+
element: RefObject<HTMLElement | null>;
|
|
5
|
+
/** Which edge of the panel the border sits on. */
|
|
6
|
+
position: 'left' | 'right';
|
|
7
|
+
/**
|
|
8
|
+
* Called with the next width (px) while dragging or keyboard-resizing.
|
|
9
|
+
* The owner is responsible for clamping.
|
|
10
|
+
*/
|
|
11
|
+
onWidthChange: (width: number) => void;
|
|
12
|
+
/** Double-click reset. */
|
|
13
|
+
onReset?: () => void;
|
|
14
|
+
'aria-label': string;
|
|
15
|
+
'aria-controls'?: string;
|
|
16
|
+
'aria-valuemin'?: number;
|
|
17
|
+
'aria-valuemax'?: number;
|
|
18
|
+
'aria-valuenow'?: number;
|
|
19
|
+
}
|
|
20
|
+
/**
|
|
21
|
+
* Overlay drag handle straddling a panel edge: an invisible strip over the
|
|
22
|
+
* panel's border whose center line highlights on hover/drag, with
|
|
23
|
+
* double-click reset, pointer-capture dragging (works with touch/pen, no
|
|
24
|
+
* ghost image), and keyboard/ARIA window-splitter support.
|
|
25
|
+
*
|
|
26
|
+
* The panel's positioning ancestor must not clip overflow — the strip hangs
|
|
27
|
+
* ~8px past the panel edge.
|
|
28
|
+
*/
|
|
29
|
+
export declare function DraggableBorder({ element, position, onWidthChange, onReset, 'aria-label': ariaLabel, 'aria-controls': ariaControls, 'aria-valuemin': ariaValueMin, 'aria-valuemax': ariaValueMax, 'aria-valuenow': ariaValueNow, }: DraggableBorderProps): import("react/jsx-runtime").JSX.Element;
|
|
30
|
+
export {};
|
|
31
|
+
//# sourceMappingURL=draggable-border.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"draggable-border.d.ts","sourceRoot":"","sources":["../../../../src/components/new-trace-viewer/components/draggable-border.tsx"],"names":[],"mappings":"AAEA,OAAO,EAGL,KAAK,SAAS,EAIf,MAAM,OAAO,CAAC;AAGf,UAAU,oBAAoB;IAC5B,2EAA2E;IAC3E,OAAO,EAAE,SAAS,CAAC,WAAW,GAAG,IAAI,CAAC,CAAC;IACvC,kDAAkD;IAClD,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC;IAC3B;;;OAGG;IACH,aAAa,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IACvC,0BAA0B;IAC1B,OAAO,CAAC,EAAE,MAAM,IAAI,CAAC;IACrB,YAAY,EAAE,MAAM,CAAC;IACrB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,eAAe,CAAC,EAAE,MAAM,CAAC;CAC1B;AAED;;;;;;;;GAQG;AACH,wBAAgB,eAAe,CAAC,EAC9B,OAAO,EACP,QAAQ,EACR,aAAa,EACb,OAAO,EACP,YAAY,EAAE,SAAS,EACvB,eAAe,EAAE,YAAY,EAC7B,eAAe,EAAE,YAAY,EAC7B,eAAe,EAAE,YAAY,EAC7B,eAAe,EAAE,YAAY,GAC9B,EAAE,oBAAoB,2CAqKtB"}
|