@aceshooting/lyra-ui 13.0.1 → 14.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +329 -0
- package/custom-elements.json +1 -1
- package/dist/cli/migration-contract.json +1 -1
- package/dist/components/agent-tools/activity-feed/activity-feed.class.d.ts +23 -15
- package/dist/components/agent-tools/activity-feed/activity-feed.class.js +9 -6
- package/dist/components/agent-tools/agent-trace/agent-trace.class.d.ts +12 -3
- package/dist/components/agent-tools/agent-trace/agent-trace.class.js +2 -1
- package/dist/components/agent-tools/approval-queue/approval-queue.class.d.ts +4 -2
- package/dist/components/agent-tools/approval-queue/approval-queue.class.js +1 -1
- package/dist/components/agent-tools/artifact-panel/artifact-panel.styles.js +1 -1
- package/dist/components/agent-tools/commit-card/commit-card.class.d.ts +3 -1
- package/dist/components/agent-tools/commit-card/commit-card.class.js +2 -2
- package/dist/components/agent-tools/compare-panel/compare-panel.class.d.ts +2 -1
- package/dist/components/agent-tools/compare-panel/compare-panel.styles.js +1 -1
- package/dist/components/agent-tools/prompt-studio/prompt-studio.class.d.ts +6 -2
- package/dist/components/agent-tools/prompt-studio/prompt-studio.class.js +8 -8
- package/dist/components/agent-tools/result-card/result-card.class.d.ts +1 -1
- package/dist/components/agent-tools/result-card/result-card.class.js +1 -1
- package/dist/components/agent-tools/result-card/result-field.class.d.ts +1 -1
- package/dist/components/agent-tools/result-card/result-field.class.js +1 -1
- package/dist/components/agent-tools/schema-viewer/schema-viewer.class.d.ts +5 -5
- package/dist/components/agent-tools/schema-viewer/schema-viewer.class.js +23 -10
- package/dist/components/agent-tools/span-waterfall/span-waterfall.class.d.ts +13 -6
- package/dist/components/agent-tools/span-waterfall/span-waterfall.class.js +3 -3
- package/dist/components/agent-tools/span-waterfall/span-waterfall.styles.js +1 -1
- package/dist/components/agent-tools/stack-trace/stack-trace-parse.js +3 -3
- package/dist/components/agent-tools/stack-trace/stack-trace.class.d.ts +1 -1
- package/dist/components/agent-tools/stack-trace/stack-trace.class.js +1 -1
- package/dist/components/agent-tools/subagent-panel/subagent-panel.class.js +1 -1
- package/dist/components/agent-tools/subagent-panel/subagent-panel.styles.js +1 -1
- package/dist/components/agent-tools/task-list/task-list.class.d.ts +1 -2
- package/dist/components/agent-tools/task-list/task-list.class.js +2 -2
- package/dist/components/agent-tools/terminal/terminal.class.d.ts +11 -2
- package/dist/components/agent-tools/terminal/terminal.class.js +5 -5
- package/dist/components/agent-tools/terminal/terminal.styles.js +1 -1
- package/dist/components/agent-tools/test-results/test-results.class.d.ts +4 -2
- package/dist/components/agent-tools/test-results/test-results.class.js +2 -2
- package/dist/components/agent-tools/thinking-panel/thinking-panel.class.d.ts +2 -0
- package/dist/components/agent-tools/thinking-panel/thinking-panel.styles.js +1 -1
- package/dist/components/agent-tools/tool-approval-dialog/tool-approval-dialog.class.js +1 -1
- package/dist/components/agent-tools/tool-call-chip/tool-call-chip.class.d.ts +2 -2
- package/dist/components/agent-tools/tool-call-chip/tool-call-chip.class.js +1 -1
- package/dist/components/agent-tools/tool-param-form/tool-param-form.class.js +3 -2
- package/dist/components/agent-tools/tool-param-form/tool-param-form.d.ts +1 -1
- package/dist/components/agent-tools/tool-param-form/tool-param-form.js +1 -1
- package/dist/components/agent-tools/tool-result-dialog/tool-result-dialog.class.js +2 -2
- package/dist/components/agent-tools/tool-result-dialog/tool-result-dialog.styles.js +1 -1
- package/dist/components/agent-tools/tool-result-view/registry.d.ts +2 -1
- package/dist/components/agent-tools/tool-result-view/tool-result-view.class.d.ts +1 -1
- package/dist/components/agent-tools/tool-result-view/tool-result-view.class.js +1 -1
- package/dist/components/agent-tools/tool-select-dialog/tool-select-dialog.class.d.ts +18 -12
- package/dist/components/agent-tools/tool-select-dialog/tool-select-dialog.class.js +7 -7
- package/dist/components/agent-tools/tool-timeline/tool-timeline.class.d.ts +9 -3
- package/dist/components/agent-tools/tool-timeline/tool-timeline.class.js +1 -1
- package/dist/components/agent-tools/trace-tree/span.d.ts +3 -1
- package/dist/components/agent-tools/trace-tree/span.js +1 -1
- package/dist/components/agent-tools/trace-tree/trace-tree.styles.js +1 -1
- package/dist/components/charts/chart/box-plot.class.d.ts +12 -3
- package/dist/components/charts/chart/box-plot.class.js +9 -9
- package/dist/components/charts/chart/box-plot.styles.js +1 -1
- package/dist/components/charts/chart/chart-core-loader.js +1 -1
- package/dist/components/charts/chart/chart-feature-loader.js +1 -1
- package/dist/components/charts/chart/chart-preload.d.ts +1 -1
- package/dist/components/charts/chart/chart-preload.js +1 -1
- package/dist/components/charts/chart/chart.class.d.ts +33 -10
- package/dist/components/charts/chart/chart.class.js +23 -14
- package/dist/components/charts/chart/chart.styles.js +1 -1
- package/dist/components/charts/chart/histogram-bin.js +1 -1
- package/dist/components/charts/chart/lite-chart.class.d.ts +20 -11
- package/dist/components/charts/chart/lite-chart.class.js +17 -11
- package/dist/components/charts/chart/lite-chart.styles.js +1 -1
- package/dist/components/conversation/agent-workspace/agent-workspace.class.d.ts +1 -1
- package/dist/components/conversation/agent-workspace/agent-workspace.class.js +2 -2
- package/dist/components/conversation/audio-visualizer/audio-visualizer.class.d.ts +10 -5
- package/dist/components/conversation/audio-visualizer/audio-visualizer.class.js +1 -1
- package/dist/components/conversation/branch-picker/branch-picker.class.d.ts +4 -2
- package/dist/components/conversation/branch-picker/branch-picker.class.js +1 -1
- package/dist/components/conversation/branch-picker/branch-picker.styles.js +1 -1
- package/dist/components/conversation/chat-composer/chat-composer.class.d.ts +6 -2
- package/dist/components/conversation/chat-composer/chat-composer.class.js +3 -3
- package/dist/components/conversation/chat-composer/chat-composer.styles.js +1 -1
- package/dist/components/conversation/chat-message/chat-message.class.d.ts +4 -3
- package/dist/components/conversation/chat-message/chat-message.class.js +2 -2
- package/dist/components/conversation/chat-message/chat-message.styles.js +1 -1
- package/dist/components/conversation/chat-viewport/chat-viewport.styles.js +1 -1
- package/dist/components/conversation/code-block/code-block-core.class.d.ts +4 -3
- package/dist/components/conversation/code-block/code-block-core.class.js +1 -1
- package/dist/components/conversation/code-block/code-block-shared.d.ts +3 -3
- package/dist/components/conversation/code-block/code-block-shared.js +2 -2
- package/dist/components/conversation/code-block/code-block.class.d.ts +4 -3
- package/dist/components/conversation/code-block/code-block.class.js +1 -1
- package/dist/components/conversation/code-block/code-block.styles.js +1 -1
- package/dist/components/conversation/code-block/code-loader.d.ts +1 -1
- package/dist/components/conversation/code-block/code-loader.js +1 -1
- package/dist/components/conversation/code-block/shiki-types.d.ts +2 -0
- package/dist/components/conversation/code-block/shiki-types.js +1 -1
- package/dist/components/conversation/conversation-item/conversation-item.class.js +1 -1
- package/dist/components/conversation/conversation-item/conversation-item.styles.js +1 -1
- package/dist/components/conversation/generation-metrics/generation-metrics.styles.js +1 -1
- package/dist/components/conversation/markdown/katex-loader.d.ts +4 -4
- package/dist/components/conversation/markdown/katex-loader.js +1 -1
- package/dist/components/conversation/markdown/markdown-base.class.js +1 -1
- package/dist/components/conversation/markdown/markdown-core.class.d.ts +1 -1
- package/dist/components/conversation/markdown/markdown-loader.d.ts +1 -1
- package/dist/components/conversation/markdown/markdown-loader.js +1 -1
- package/dist/components/conversation/markdown/markdown-shared.d.ts +6 -1
- package/dist/components/conversation/markdown/markdown-shared.js +5 -4
- package/dist/components/conversation/markdown/markdown.class.d.ts +1 -1
- package/dist/components/conversation/message-actions/message-actions.class.d.ts +18 -3
- package/dist/components/conversation/message-actions/message-actions.class.js +2 -2
- package/dist/components/conversation/message-actions/message-actions.styles.js +1 -1
- package/dist/components/conversation/message-actions/toolbar-actions.d.ts +3 -1
- package/dist/components/conversation/message-actions/toolbar-actions.js +1 -1
- package/dist/components/conversation/message-feedback/message-feedback.class.d.ts +40 -15
- package/dist/components/conversation/message-feedback/message-feedback.class.js +7 -3
- package/dist/components/conversation/message-feedback/message-feedback.styles.js +1 -1
- package/dist/components/conversation/message-parts/message-parts.class.d.ts +10 -4
- package/dist/components/conversation/message-parts/message-parts.class.js +2 -2
- package/dist/components/conversation/message-parts/message-parts.styles.js +1 -1
- package/dist/components/conversation/model-select/model-select.class.d.ts +5 -2
- package/dist/components/conversation/model-select/model-select.class.js +8 -5
- package/dist/components/conversation/model-settings-panel/model-settings-panel.class.d.ts +3 -5
- package/dist/components/conversation/model-settings-panel/model-settings-panel.class.js +2 -1
- package/dist/components/conversation/prompt-input/prompt-input.class.d.ts +9 -2
- package/dist/components/conversation/prompt-input/prompt-input.class.js +3 -3
- package/dist/components/conversation/prompt-input/prompt-input.styles.js +1 -1
- package/dist/components/conversation/prompt-queue/prompt-queue.class.d.ts +20 -4
- package/dist/components/conversation/prompt-queue/prompt-queue.class.js +1 -1
- package/dist/components/conversation/prompt-queue/prompt-queue.styles.js +1 -1
- package/dist/components/conversation/push-to-talk/push-to-talk.class.d.ts +17 -8
- package/dist/components/conversation/push-to-talk/push-to-talk.class.js +1 -1
- package/dist/components/conversation/push-to-talk/push-to-talk.styles.js +1 -1
- package/dist/components/conversation/selection-toolbar/selection-toolbar.class.d.ts +6 -3
- package/dist/components/conversation/selection-toolbar/selection-toolbar.class.js +1 -1
- package/dist/components/conversation/selection-toolbar/selection-toolbar.styles.js +1 -1
- package/dist/components/conversation/thread-list/thread-list.class.d.ts +14 -4
- package/dist/components/conversation/thread-list/thread-list.class.js +11 -11
- package/dist/components/conversation/thread-list/thread-list.styles.js +1 -1
- package/dist/components/conversation/transcript-feed/transcript-feed.class.d.ts +2 -0
- package/dist/components/conversation/transcript-feed/transcript-feed.class.js +1 -1
- package/dist/components/conversation/transcript-feed/transcript-feed.styles.js +1 -1
- package/dist/components/conversation/typing-indicator/typing-indicator.class.d.ts +2 -1
- package/dist/components/conversation/typing-indicator/typing-indicator.class.js +1 -1
- package/dist/components/conversation/usage-badge/usage-badge-overlay-runtime.d.ts +3 -0
- package/dist/components/conversation/usage-badge/usage-badge-overlay-runtime.js +1 -0
- package/dist/components/conversation/usage-badge/usage-badge.class.d.ts +4 -2
- package/dist/components/conversation/usage-badge/usage-badge.class.js +1 -1
- package/dist/components/conversation/voice-picker/voice-picker.class.d.ts +12 -4
- package/dist/components/conversation/voice-picker/voice-picker.class.js +8 -5
- package/dist/components/conversation/voice-picker/voice-picker.styles.js +1 -1
- package/dist/components/conversation/widget-renderer/resolve.d.ts +4 -6
- package/dist/components/conversation/widget-renderer/resolve.js +1 -1
- package/dist/components/data/calendar/calendar.class.d.ts +16 -5
- package/dist/components/data/calendar/calendar.class.js +2 -2
- package/dist/components/data/calendar/calendar.styles.js +1 -1
- package/dist/components/data/condition-builder/condition-builder.class.d.ts +3 -1
- package/dist/components/data/condition-builder/condition-builder.class.js +15 -1
- package/dist/components/data/context-meter/context-meter.class.d.ts +3 -1
- package/dist/components/data/context-meter/context-meter.class.js +4 -4
- package/dist/components/data/data-grid/data-grid.class.d.ts +51 -6
- package/dist/components/data/data-grid/data-grid.class.js +25 -11
- package/dist/components/data/data-grid/data-grid.styles.js +1 -1
- package/dist/components/data/document-library/document-library.class.d.ts +5 -2
- package/dist/components/data/document-library/document-library.class.js +1 -1
- package/dist/components/data/env-list/env-list.class.js +1 -1
- package/dist/components/data/file-tree/file-tree.class.d.ts +2 -1
- package/dist/components/data/file-tree/file-tree.class.js +1 -1
- package/dist/components/data/flow-canvas/flow-canvas.class.d.ts +24 -14
- package/dist/components/data/flow-canvas/flow-canvas.class.js +1 -2
- package/dist/components/data/flow-canvas/flow-canvas.styles.js +1 -1
- package/dist/components/data/flow-canvas/flow-model.js +1 -1
- package/dist/components/data/flow-canvas/flow-types.d.ts +2 -1
- package/dist/components/data/flow-controls/flow-controls.styles.js +1 -1
- package/dist/components/data/flow-run-status/flow-run-status.class.js +1 -1
- package/dist/components/data/funnel/funnel.class.d.ts +1 -0
- package/dist/components/data/funnel/funnel.class.js +1 -1
- package/dist/components/data/gauge/gauge.class.d.ts +4 -1
- package/dist/components/data/gauge/gauge.class.js +6 -6
- package/dist/components/data/graph-query-builder/graph-query-builder.class.d.ts +5 -2
- package/dist/components/data/graph-query-builder/graph-query-builder.class.js +15 -1
- package/dist/components/data/graph-query-builder/graph-query-builder.styles.js +1 -1
- package/dist/components/data/heatmap/heatmap.class.d.ts +7 -4
- package/dist/components/data/heatmap/heatmap.class.js +1 -1
- package/dist/components/data/sequence-strip/sequence-strip.class.js +1 -1
- package/dist/components/data/sparkline/sparkline.class.d.ts +2 -1
- package/dist/components/data/sparkline/sparkline.class.js +1 -1
- package/dist/components/data/stat/stat.class.d.ts +6 -2
- package/dist/components/data/stat/stat.class.js +1 -1
- package/dist/components/data/table/table.class.d.ts +15 -16
- package/dist/components/data/table/table.class.js +5 -4
- package/dist/components/data/table/table.styles.js +1 -1
- package/dist/components/data/timeline/timeline.class.d.ts +7 -2
- package/dist/components/data/timeline/timeline.class.js +1 -1
- package/dist/components/data/timeline/timeline.styles.js +1 -1
- package/dist/components/data/tree/tree-item.class.d.ts +3 -1
- package/dist/components/data/tree/tree-item.class.js +1 -1
- package/dist/components/data/tree/tree-item.styles.js +1 -1
- package/dist/components/data/tree/tree.class.d.ts +4 -1
- package/dist/components/data/tree/tree.class.js +1 -1
- package/dist/components/data/word-cloud/word-cloud-layout.d.ts +2 -1
- package/dist/components/data/word-cloud/word-cloud-layout.js +1 -1
- package/dist/components/data/word-cloud/word-cloud.class.d.ts +2 -1
- package/dist/components/data/word-cloud/word-cloud.class.js +1 -1
- package/dist/components/forms/button/button.class.d.ts +5 -3
- package/dist/components/forms/button/button.class.js +1 -1
- package/dist/components/forms/checkbox/checkbox.class.d.ts +3 -0
- package/dist/components/forms/checkbox/checkbox.class.js +1 -1
- package/dist/components/forms/checkbox-group/checkbox-group.class.d.ts +7 -2
- package/dist/components/forms/checkbox-group/checkbox-group.class.js +1 -1
- package/dist/components/forms/code-editor/code-editor.class.d.ts +16 -4
- package/dist/components/forms/code-editor/code-editor.class.js +19 -9
- package/dist/components/forms/code-editor/code-editor.styles.js +1 -1
- package/dist/components/forms/color-picker/color-picker.class.d.ts +6 -2
- package/dist/components/forms/color-picker/color-picker.class.js +4 -4
- package/dist/components/forms/combobox/combobox.class.d.ts +19 -8
- package/dist/components/forms/combobox/combobox.class.js +3 -3
- package/dist/components/forms/combobox/combobox.styles.js +1 -1
- package/dist/components/forms/combobox/option.class.d.ts +4 -0
- package/dist/components/forms/combobox/option.class.js +2 -2
- package/dist/components/forms/date-picker/calendar-core.d.ts +1 -1
- package/dist/components/forms/date-picker/calendar-core.js +1 -1
- package/dist/components/forms/date-picker/date-input.class.d.ts +20 -10
- package/dist/components/forms/date-picker/date-input.class.js +4 -4
- package/dist/components/forms/date-picker/date-picker.class.d.ts +33 -15
- package/dist/components/forms/date-picker/date-picker.class.js +8 -8
- package/dist/components/forms/date-picker/date-picker.styles.js +1 -1
- package/dist/components/forms/emoji-picker/emoji-data-loader.js +1 -1
- package/dist/components/forms/emoji-picker/emoji-picker.class.d.ts +11 -3
- package/dist/components/forms/emoji-picker/emoji-picker.class.js +3 -3
- package/dist/components/forms/emoji-picker/emoji-types.d.ts +2 -2
- package/dist/components/forms/icon-button/icon-button.class.d.ts +4 -2
- package/dist/components/forms/icon-button/icon-button.class.js +1 -1
- package/dist/components/forms/input/input.class.d.ts +16 -5
- package/dist/components/forms/input/input.class.js +7 -1
- package/dist/components/forms/input/native-time-input.class.d.ts +3 -0
- package/dist/components/forms/input/number-input.class.d.ts +3 -0
- package/dist/components/forms/input/time-input.class.d.ts +11 -2
- package/dist/components/forms/input/time-input.class.js +2 -2
- package/dist/components/forms/locale-picker/locale-picker.class.d.ts +22 -4
- package/dist/components/forms/locale-picker/locale-picker.class.js +2 -2
- package/dist/components/forms/locale-picker/locale-picker.styles.js +1 -1
- package/dist/components/forms/otp-input/otp-input.class.d.ts +5 -1
- package/dist/components/forms/otp-input/otp-input.class.js +1 -1
- package/dist/components/forms/phone-input/phone-input.class.d.ts +21 -8
- package/dist/components/forms/phone-input/phone-input.class.js +1 -1
- package/dist/components/forms/radio/radio-button.class.d.ts +4 -0
- package/dist/components/forms/radio/radio-group.class.d.ts +4 -1
- package/dist/components/forms/radio/radio-group.class.js +1 -1
- package/dist/components/forms/radio/radio.class.d.ts +6 -2
- package/dist/components/forms/radio/radio.class.js +1 -1
- package/dist/components/forms/rubric-form/rubric-form.class.d.ts +7 -1
- package/dist/components/forms/rubric-form/rubric-form.class.js +3 -3
- package/dist/components/forms/select/select.class.d.ts +8 -2
- package/dist/components/forms/select/select.class.js +2 -2
- package/dist/components/forms/select/select.styles.js +1 -1
- package/dist/components/forms/slider/slider.class.d.ts +12 -6
- package/dist/components/forms/slider/slider.class.js +2 -2
- package/dist/components/forms/swatch-picker/swatch-picker.class.d.ts +4 -0
- package/dist/components/forms/swatch-picker/swatch-picker.class.js +1 -1
- package/dist/components/forms/switch/switch.class.d.ts +5 -1
- package/dist/components/forms/switch/switch.class.js +1 -1
- package/dist/components/forms/textarea/textarea.class.d.ts +3 -0
- package/dist/components/forms/textarea/textarea.class.js +1 -1
- package/dist/components/forms/time-range/time-range.class.d.ts +3 -0
- package/dist/components/forms/time-range/time-range.class.js +1 -1
- package/dist/components/forms/token-input/token-input.class.d.ts +8 -2
- package/dist/components/forms/token-input/token-input.class.js +2 -2
- package/dist/components/forms/token-input/token-input.styles.js +1 -1
- package/dist/components/layout/app-rail/app-rail.class.d.ts +9 -5
- package/dist/components/layout/app-rail/app-rail.class.js +4 -3
- package/dist/components/layout/app-rail/app-rail.styles.js +1 -1
- package/dist/components/layout/carousel/carousel.class.d.ts +3 -2
- package/dist/components/layout/carousel/carousel.class.js +1 -1
- package/dist/components/layout/command-palette/command-palette.class.d.ts +2 -2
- package/dist/components/layout/command-palette/command-palette.class.js +1 -1
- package/dist/components/layout/command-palette/command-palette.styles.js +1 -1
- package/dist/components/layout/dashboard-grid/dashboard-grid.class.d.ts +2 -0
- package/dist/components/layout/dashboard-grid/dashboard-grid.class.js +1 -1
- package/dist/components/layout/details/details.class.d.ts +16 -15
- package/dist/components/layout/details/details.class.js +43 -34
- package/dist/components/layout/details/details.styles.js +1 -1
- package/dist/components/layout/dock-panel/dock-panel.class.d.ts +4 -3
- package/dist/components/layout/dock-panel/dock-panel.class.js +2 -1
- package/dist/components/layout/filter-bar/filter-bar.class.d.ts +3 -1
- package/dist/components/layout/filter-bar/filter-bar.class.js +2 -2
- package/dist/components/layout/menu/menu-item.class.js +2 -2
- package/dist/components/layout/menu/menu-label.class.d.ts +3 -3
- package/dist/components/layout/menu/menu.class.d.ts +4 -1
- package/dist/components/layout/menu/menu.class.js +1 -1
- package/dist/components/layout/multi-split/multi-split.class.d.ts +19 -8
- package/dist/components/layout/multi-split/multi-split.class.js +2 -1
- package/dist/components/layout/multi-split/multi-split.styles.js +1 -1
- package/dist/components/layout/reorder-list/reorder-item.class.d.ts +2 -1
- package/dist/components/layout/reorder-list/reorder-item.class.js +1 -1
- package/dist/components/layout/reorder-list/reorder-list.class.js +1 -1
- package/dist/components/layout/reorder-list/reorder-owner.js +1 -1
- package/dist/components/layout/scroller/scroller.class.d.ts +4 -4
- package/dist/components/layout/scroller/scroller.styles.js +1 -1
- package/dist/components/layout/split-panel/split-panel.class.d.ts +5 -3
- package/dist/components/layout/split-panel/split-panel.class.js +3 -2
- package/dist/components/layout/tab-group/tab-group.class.d.ts +3 -1
- package/dist/components/layout/tab-group/tab-group.class.js +1 -1
- package/dist/components/layout/tab-group/tab-group.styles.js +1 -1
- package/dist/components/layout/virtual-list/virtual-list.class.js +2 -2
- package/dist/components/layout/widget/widget.class.d.ts +6 -2
- package/dist/components/layout/widget/widget.class.js +1 -1
- package/dist/components/layout/widget/widget.styles.js +1 -1
- package/dist/components/media/animation/animation.class.d.ts +3 -2
- package/dist/components/media/animation/animation.class.js +1 -1
- package/dist/components/media/attachment-chip/attachment-chip.class.d.ts +4 -3
- package/dist/components/media/attachment-chip/attachment-chip.class.js +1 -1
- package/dist/components/media/av-player/av-metadata.d.ts +3 -2
- package/dist/components/media/av-player/av-player.class.d.ts +4 -3
- package/dist/components/media/av-player/av-player.class.js +3 -3
- package/dist/components/media/av-player/av-player.styles.js +1 -1
- package/dist/components/media/avatar/avatar.class.d.ts +2 -1
- package/dist/components/media/avatar/avatar.class.js +1 -1
- package/dist/components/media/file-input/file-input.class.d.ts +4 -2
- package/dist/components/media/file-input/file-input.class.js +1 -1
- package/dist/components/media/file-input/file-input.styles.js +1 -1
- package/dist/components/media/flag/flag.class.js +1 -1
- package/dist/components/media/image-viewer/image-viewer.class.d.ts +2 -1
- package/dist/components/media/image-viewer/image-viewer.class.js +1 -1
- package/dist/components/media/image-viewer/image-viewer.styles.js +1 -1
- package/dist/components/media/lightbox/lightbox.styles.js +1 -1
- package/dist/components/media/map/map-loader.js +1 -1
- package/dist/components/media/map/map.class.d.ts +22 -34
- package/dist/components/media/map/map.class.js +1 -1
- package/dist/components/media/map/map.styles.js +1 -1
- package/dist/components/media/media-card/media-card.class.d.ts +1 -1
- package/dist/components/media/media-card/media-card.class.js +1 -1
- package/dist/components/media/pan-zoom/pan-zoom.class.js +1 -1
- package/dist/components/media/qr-code/qr-code-loader.js +1 -1
- package/dist/components/media/qr-code/qr-code.class.d.ts +5 -2
- package/dist/components/media/qr-code/qr-code.class.js +2 -2
- package/dist/components/media/sequence-playback/sequence-playback.class.d.ts +3 -3
- package/dist/components/media/sequence-playback/sequence-playback.class.js +1 -1
- package/dist/components/media/sequence-playback/sequence-playback.styles.js +1 -1
- package/dist/components/media/video/video.class.d.ts +2 -1
- package/dist/components/media/video/video.styles.js +1 -1
- package/dist/components/media/zoomable-frame/zoomable-frame.class.d.ts +3 -2
- package/dist/components/media/zoomable-frame/zoomable-frame.class.js +2 -2
- package/dist/components/overlays/alert/alert.styles.js +1 -1
- package/dist/components/overlays/callout/callout.styles.js +1 -1
- package/dist/components/overlays/chip/chip-group.class.d.ts +2 -0
- package/dist/components/overlays/chip/chip-group.class.js +1 -1
- package/dist/components/overlays/dialog/dialog.class.d.ts +2 -0
- package/dist/components/overlays/dialog/dialog.class.js +1 -1
- package/dist/components/overlays/dialog/dialog.styles.js +1 -1
- package/dist/components/overlays/empty/empty.class.d.ts +2 -0
- package/dist/components/overlays/empty/empty.class.js +1 -1
- package/dist/components/overlays/kbd/kbd.class.d.ts +2 -0
- package/dist/components/overlays/kbd/kbd.class.js +1 -1
- package/dist/components/overlays/overlay/popover.class.d.ts +3 -1
- package/dist/components/overlays/overlay/popover.class.js +1 -1
- package/dist/components/overlays/overlay/tooltip.class.d.ts +3 -1
- package/dist/components/overlays/overlay/tooltip.class.js +1 -1
- package/dist/components/overlays/rating/rating.class.d.ts +2 -0
- package/dist/components/overlays/rating/rating.class.js +1 -1
- package/dist/components/overlays/toast/toast-item.class.js +1 -1
- package/dist/components/retrieval/claim-evidence/claim-evidence.class.d.ts +11 -5
- package/dist/components/retrieval/claim-evidence/claim-evidence.class.js +3 -3
- package/dist/components/retrieval/embedding-explorer/embedding-explorer.class.js +2 -2
- package/dist/components/retrieval/entity-card/entity-card.class.d.ts +5 -2
- package/dist/components/retrieval/entity-card/entity-card.class.js +1 -1
- package/dist/components/retrieval/entity-chip/entity-chip.class.d.ts +4 -2
- package/dist/components/retrieval/entity-chip/entity-chip.class.js +1 -1
- package/dist/components/retrieval/graph/graph-canvas.js +1 -1
- package/dist/components/retrieval/graph/graph-loader.js +1 -1
- package/dist/components/retrieval/graph/graph.class.d.ts +10 -8
- package/dist/components/retrieval/graph/graph.class.js +10 -10
- package/dist/components/retrieval/graph-legend/graph-legend.class.d.ts +4 -2
- package/dist/components/retrieval/graph-legend/graph-legend.class.js +1 -1
- package/dist/components/retrieval/grounding-summary/grounding-summary.class.d.ts +15 -9
- package/dist/components/retrieval/grounding-summary/grounding-summary.class.js +7 -5
- package/dist/components/retrieval/ingestion-queue/ingestion-queue.class.d.ts +2 -0
- package/dist/components/retrieval/ingestion-queue/ingestion-queue.class.js +1 -1
- package/dist/components/retrieval/knowledge-base/knowledge-base.class.d.ts +3 -2
- package/dist/components/retrieval/knowledge-base/knowledge-base.class.js +4 -3
- package/dist/components/retrieval/knowledge-base/knowledge-base.styles.js +1 -1
- package/dist/components/retrieval/knowledge-graph-explorer/knowledge-graph-explorer.class.d.ts +7 -3
- package/dist/components/retrieval/knowledge-graph-explorer/knowledge-graph-explorer.class.js +8 -3
- package/dist/components/retrieval/knowledge-graph-explorer/knowledge-graph-explorer.styles.js +1 -1
- package/dist/components/retrieval/memory-panel/memory-panel.class.d.ts +15 -6
- package/dist/components/retrieval/memory-panel/memory-panel.class.js +1 -1
- package/dist/components/retrieval/neighbor-list/neighbor-list.class.js +1 -1
- package/dist/components/retrieval/neighbor-list/neighbor-list.styles.js +1 -1
- package/dist/components/retrieval/node-palette/node-palette.class.d.ts +17 -12
- package/dist/components/retrieval/node-palette/node-palette.class.js +2 -2
- package/dist/components/retrieval/node-palette/node-palette.styles.js +1 -1
- package/dist/components/retrieval/path-strip/path-strip.class.js +1 -1
- package/dist/components/retrieval/provenance-panel/provenance-panel.class.d.ts +2 -1
- package/dist/components/retrieval/provenance-panel/provenance-panel.class.js +1 -1
- package/dist/components/retrieval/retrieval-results/retrieval-results.class.d.ts +1 -1
- package/dist/components/retrieval/retrieval-results/retrieval-results.class.js +5 -5
- package/dist/components/retrieval/retrieval-trace/retrieval-trace.class.js +1 -1
- package/dist/components/retrieval/source-picker/source-picker.class.d.ts +2 -1
- package/dist/components/retrieval/source-picker/source-picker.class.js +2 -2
- package/dist/components/utility/copy-button/copy-button.class.d.ts +2 -1
- package/dist/components/utility/copy-button/copy-button.class.js +1 -1
- package/dist/components/utility/diff-view/diff-view.class.d.ts +4 -1
- package/dist/components/utility/diff-view/diff-view.class.js +1 -1
- package/dist/components/utility/export-button/export-button.class.d.ts +2 -2
- package/dist/components/utility/export-button/export-button.class.js +1 -1
- package/dist/components/utility/export-button/export-button.styles.js +1 -1
- package/dist/components/utility/format/format-date.class.js +1 -1
- package/dist/components/utility/format/format-number.class.d.ts +3 -1
- package/dist/components/utility/format/format-options.js +1 -1
- package/dist/components/utility/format/relative-time.class.js +1 -1
- package/dist/components/utility/icon/dompurify-loader.js +1 -1
- package/dist/components/utility/icon/icon-library.js +1 -1
- package/dist/components/utility/intersection-observer/intersection-observer.class.js +1 -1
- package/dist/components/utility/json-viewer/json-viewer.class.d.ts +6 -3
- package/dist/components/utility/json-viewer/json-viewer.class.js +5 -5
- package/dist/components/utility/known-date/known-date.class.d.ts +9 -5
- package/dist/components/utility/known-date/known-date.class.js +2 -2
- package/dist/components/utility/known-date/known-date.styles.js +1 -1
- package/dist/components/utility/mention-popover/mention-popover.class.d.ts +32 -45
- package/dist/components/utility/mention-popover/mention-popover.class.js +1 -1
- package/dist/components/utility/mutation-observer/mutation-observer.class.js +1 -1
- package/dist/components/utility/poll-status/poll-status.class.d.ts +3 -0
- package/dist/components/utility/poll-status/poll-status.styles.js +1 -1
- package/dist/components/viewers/calendar-viewer/calendar-loader.js +1 -1
- package/dist/components/viewers/calendar-viewer/calendar-viewer.class.d.ts +1 -0
- package/dist/components/viewers/calendar-viewer/calendar-viewer.class.js +1 -1
- package/dist/components/viewers/dataset-viewer/dataset-viewer.class.d.ts +2 -1
- package/dist/components/viewers/dataset-viewer/dataset-viewer.styles.js +1 -1
- package/dist/components/viewers/document-compare/document-compare.class.d.ts +11 -8
- package/dist/components/viewers/document-compare/document-compare.class.js +2 -2
- package/dist/components/viewers/document-preview/document-preview.class.d.ts +8 -4
- package/dist/components/viewers/document-preview/document-preview.class.js +4 -4
- package/dist/components/viewers/document-preview/document-preview.styles.js +1 -1
- package/dist/components/viewers/document-viewer/document-viewer.class.d.ts +5 -2
- package/dist/components/viewers/document-viewer/document-viewer.class.js +2 -2
- package/dist/components/viewers/document-viewer/document-viewer.styles.js +1 -1
- package/dist/components/viewers/document-viewer/registry-ownership.d.ts +1 -0
- package/dist/components/viewers/document-viewer/registry-ownership.js +1 -0
- package/dist/components/viewers/document-viewer/registry.js +1 -1
- package/dist/components/viewers/docx-viewer/docx-loader.js +1 -1
- package/dist/components/viewers/docx-viewer/docx-viewer.class.js +1 -1
- package/dist/components/viewers/ebook-viewer/ebook-loader.d.ts +1 -1
- package/dist/components/viewers/ebook-viewer/ebook-viewer.class.d.ts +8 -2
- package/dist/components/viewers/ebook-viewer/ebook-viewer.class.js +1 -1
- package/dist/components/viewers/email-viewer/email-loader.js +1 -1
- package/dist/components/viewers/email-viewer/email-viewer.class.d.ts +3 -2
- package/dist/components/viewers/email-viewer/email-viewer.class.js +2 -2
- package/dist/components/viewers/html-viewer/dompurify-loader.js +1 -1
- package/dist/components/viewers/include/include-resource.js +1 -1
- package/dist/components/viewers/include/include.class.d.ts +3 -1
- package/dist/components/viewers/notebook-viewer/dompurify-loader.js +1 -1
- package/dist/components/viewers/notebook-viewer/notebook-viewer.class.d.ts +4 -2
- package/dist/components/viewers/notebook-viewer/notebook-viewer.class.js +4 -4
- package/dist/components/viewers/notebook-viewer/notebook-viewer.styles.js +1 -1
- package/dist/components/viewers/passive-markup.js +1 -1
- package/dist/components/viewers/pdf-viewer/pdf-loader.js +1 -1
- package/dist/components/viewers/pptx-viewer/pptx-loader.js +1 -1
- package/dist/components/viewers/spreadsheet-viewer/spreadsheet-loader.js +1 -1
- package/dist/components/viewers/svg-viewer/dompurify-loader.js +1 -1
- package/dist/components/viewers/svg-viewer/svg-viewer.class.d.ts +2 -1
- package/dist/components/viewers/svg-viewer/svg-viewer.styles.js +1 -1
- package/dist/components/viewers/viewer-loading.js +1 -1
- package/dist/components/viewers/viewer-search-limits.d.ts +2 -0
- package/dist/components/viewers/viewer-search-limits.js +1 -1
- package/dist/components/viewers/xml-viewer/xml-viewer.class.d.ts +2 -1
- package/dist/components/viewers/xml-viewer/xml-viewer.class.js +1 -1
- package/dist/components/viewers/xml-viewer/xml-viewer.js +1 -1
- package/dist/custom-elements-jsx.d.ts +1 -1
- package/dist/events.d.ts +13 -6
- package/dist/internal/aria-controls.d.ts +16 -13
- package/dist/internal/aria-controls.js +1 -1
- package/dist/internal/aria-reflection.js +1 -1
- package/dist/internal/catalog-picker.d.ts +2 -2
- package/dist/internal/catalog-picker.js +1 -1
- package/dist/internal/chart-annotation-registration.d.ts +1 -0
- package/dist/internal/chart-annotation-registration.js +1 -0
- package/dist/internal/data-descriptors.d.ts +13 -0
- package/dist/internal/data-descriptors.js +1 -0
- package/dist/internal/default-strings.generated.d.ts +1 -1
- package/dist/internal/default-strings.generated.js +2 -2
- package/dist/internal/dev-mode-attribute-warning.d.ts +3 -0
- package/dist/internal/dev-mode-attribute-warning.js +1 -1
- package/dist/internal/element-internals.d.ts +4 -3
- package/dist/internal/element-internals.js +1 -1
- package/dist/internal/form-associated.js +1 -1
- package/dist/internal/highlight-collection.d.ts +2 -0
- package/dist/internal/highlight-collection.js +1 -1
- package/dist/internal/localization-types.d.ts +1 -1
- package/dist/internal/localization.js +2 -2
- package/dist/internal/lyra-element.d.ts +10 -1
- package/dist/internal/lyra-element.js +2 -1
- package/dist/internal/native-control-description.d.ts +7 -0
- package/dist/internal/native-control-description.js +1 -0
- package/dist/internal/option-selection.js +1 -1
- package/dist/internal/overlay-order.d.ts +6 -0
- package/dist/internal/overlay-order.js +1 -0
- package/dist/internal/overlay-stack.d.ts +1 -1
- package/dist/internal/overlay-stack.js +1 -1
- package/dist/internal/package-metadata.d.ts +1 -1
- package/dist/internal/package-metadata.js +1 -1
- package/dist/internal/papaparse-loader.js +1 -1
- package/dist/internal/positioner.d.ts +5 -4
- package/dist/internal/pseudo-localization.js +1 -1
- package/dist/internal/reactive-property-writes.d.ts +1 -0
- package/dist/internal/reactive-property-writes.js +1 -0
- package/dist/internal/safe-css.js +1 -1
- package/dist/internal/step-value.d.ts +6 -0
- package/dist/internal/step-value.js +1 -0
- package/dist/internal/svg-title.d.ts +3 -0
- package/dist/internal/svg-title.js +1 -0
- package/dist/internal/text-quote.js +1 -1
- package/dist/lyra.d.ts +1 -1
- package/dist/svelte.d.ts +1 -1
- package/dist/translations/ar.js +2 -2
- package/dist/translations/de.js +2 -2
- package/dist/translations/es.js +2 -2
- package/dist/translations/fa.js +2 -2
- package/dist/translations/fr.js +2 -2
- package/dist/translations/he.js +2 -2
- package/dist/translations/ja.js +2 -2
- package/dist/translations/pseudo/ar-XB.js +1 -1
- package/dist/translations/pt-BR.js +2 -2
- package/dist/translations/ru.js +2 -2
- package/dist/translations/zh-CN.js +2 -2
- package/dist/vue.d.ts +1 -1
- package/llms/components/lr-accordion-item.md +10 -5
- package/llms/components/lr-accordion.md +10 -5
- package/llms/components/lr-activity-feed.md +6 -5
- package/llms/components/lr-agent-run.md +1 -1
- package/llms/components/lr-agent-trace.md +3 -0
- package/llms/components/lr-agent-workspace.md +3 -2
- package/llms/components/lr-animation.md +4 -0
- package/llms/components/lr-app-rail-item.md +4 -2
- package/llms/components/lr-app-rail.md +4 -2
- package/llms/components/lr-attachment-chip.md +8 -3
- package/llms/components/lr-audio-visualizer.md +9 -6
- package/llms/components/lr-av-player.md +14 -0
- package/llms/components/lr-avatar.md +4 -0
- package/llms/components/lr-bar-chart.md +2 -2
- package/llms/components/lr-box-plot.md +15 -6
- package/llms/components/lr-bubble-chart.md +2 -2
- package/llms/components/lr-button.md +11 -3
- package/llms/components/lr-calendar-viewer.md +4 -0
- package/llms/components/lr-calendar.md +15 -4
- package/llms/components/lr-carousel.md +5 -0
- package/llms/components/lr-chart.md +24 -9
- package/llms/components/lr-chat-composer.md +2 -1
- package/llms/components/lr-chat-message.md +4 -0
- package/llms/components/lr-checkbox.md +3 -0
- package/llms/components/lr-chip-group.md +3 -0
- package/llms/components/lr-chip.md +3 -0
- package/llms/components/lr-chunk-inspector.md +2 -2
- package/llms/components/lr-code-block-core.md +20 -8
- package/llms/components/lr-code-block.md +17 -14
- package/llms/components/lr-code-editor.md +20 -5
- package/llms/components/lr-color-picker.md +9 -0
- package/llms/components/lr-combobox.md +35 -4
- package/llms/components/lr-command-palette.md +4 -0
- package/llms/components/lr-commit-card.md +3 -0
- package/llms/components/lr-compare-panel.md +7 -0
- package/llms/components/lr-condition-builder.md +5 -0
- package/llms/components/lr-conversation-item.md +3 -0
- package/llms/components/lr-copy-button.md +10 -1
- package/llms/components/lr-dashboard-grid.md +5 -0
- package/llms/components/lr-data-grid.md +22 -3
- package/llms/components/lr-dataset-viewer.md +3 -2
- package/llms/components/lr-date-input.md +50 -6
- package/llms/components/lr-date-picker.md +51 -7
- package/llms/components/lr-details.md +10 -5
- package/llms/components/lr-dialog.md +4 -0
- package/llms/components/lr-diff-view.md +6 -0
- package/llms/components/lr-document-compare.md +6 -2
- package/llms/components/lr-document-library.md +4 -0
- package/llms/components/lr-document-preview.md +18 -4
- package/llms/components/lr-document-viewer.md +14 -4
- package/llms/components/lr-docx-viewer.md +6 -0
- package/llms/components/lr-doughnut-chart.md +2 -2
- package/llms/components/lr-dropdown-item.md +4 -0
- package/llms/components/lr-dropdown.md +3 -0
- package/llms/components/lr-ebook-viewer.md +12 -3
- package/llms/components/lr-email-viewer.md +10 -0
- package/llms/components/lr-emoji-picker.md +17 -3
- package/llms/components/lr-empty.md +3 -0
- package/llms/components/lr-entity-card.md +3 -0
- package/llms/components/lr-entity-chip.md +4 -0
- package/llms/components/lr-eval-dataset.md +2 -2
- package/llms/components/lr-export-button.md +9 -0
- package/llms/components/lr-file-input.md +12 -8
- package/llms/components/lr-file-tree.md +5 -1
- package/llms/components/lr-filter-bar.md +5 -0
- package/llms/components/lr-flow-canvas.md +8 -1
- package/llms/components/lr-flow-node.md +2 -1
- package/llms/components/lr-flow-run-status.md +1 -1
- package/llms/components/lr-format-date.md +3 -1
- package/llms/components/lr-format-number.md +4 -0
- package/llms/components/lr-funnel.md +4 -0
- package/llms/components/lr-gauge.md +4 -0
- package/llms/components/lr-generation-metrics.md +5 -0
- package/llms/components/lr-graph-legend.md +4 -2
- package/llms/components/lr-graph-query-builder.md +6 -0
- package/llms/components/lr-graph.md +8 -2
- package/llms/components/lr-grounding-summary.md +8 -8
- package/llms/components/lr-heatmap.md +13 -0
- package/llms/components/lr-histogram.md +2 -2
- package/llms/components/lr-icon-button.md +7 -0
- package/llms/components/lr-image-viewer.md +9 -0
- package/llms/components/lr-include.md +5 -0
- package/llms/components/lr-ingestion-queue.md +5 -1
- package/llms/components/lr-input.md +22 -8
- package/llms/components/lr-intersection-observer.md +9 -0
- package/llms/components/lr-json-viewer.md +10 -1
- package/llms/components/lr-kbd.md +3 -0
- package/llms/components/lr-knowledge-base.md +10 -1
- package/llms/components/lr-knowledge-graph-explorer.md +7 -0
- package/llms/components/lr-known-date.md +7 -0
- package/llms/components/lr-line-chart.md +2 -2
- package/llms/components/lr-lite-chart.md +29 -9
- package/llms/components/lr-live-region.md +3 -0
- package/llms/components/lr-locale-picker.md +12 -0
- package/llms/components/lr-map.md +23 -5
- package/llms/components/lr-markdown-core.md +4 -0
- package/llms/components/lr-markdown.md +15 -8
- package/llms/components/lr-media-card.md +5 -8
- package/llms/components/lr-mention-popover.md +17 -10
- package/llms/components/lr-menu-item.md +4 -0
- package/llms/components/lr-menu-label.md +4 -3
- package/llms/components/lr-menu.md +4 -0
- package/llms/components/lr-message-actions.md +13 -3
- package/llms/components/lr-message-feedback.md +24 -7
- package/llms/components/lr-message-parts.md +6 -3
- package/llms/components/lr-model-select.md +13 -2
- package/llms/components/lr-multi-split.md +20 -7
- package/llms/components/lr-mutation-observer.md +8 -0
- package/llms/components/lr-native-time-input.md +10 -0
- package/llms/components/lr-node-palette.md +8 -2
- package/llms/components/lr-notebook-viewer.md +4 -1
- package/llms/components/lr-number-input.md +12 -1
- package/llms/components/lr-option.md +35 -4
- package/llms/components/lr-otp-input.md +10 -0
- package/llms/components/lr-pan-zoom.md +1 -2
- package/llms/components/lr-phone-input.md +20 -5
- package/llms/components/lr-pie-chart.md +2 -2
- package/llms/components/lr-polar-area-chart.md +2 -2
- package/llms/components/lr-poll-status.md +4 -0
- package/llms/components/lr-popover.md +3 -0
- package/llms/components/lr-popup.md +3 -2
- package/llms/components/lr-prompt-input.md +7 -3
- package/llms/components/lr-prompt-queue.md +6 -0
- package/llms/components/lr-prompt-studio.md +7 -0
- package/llms/components/lr-provenance-panel.md +3 -0
- package/llms/components/lr-push-to-talk.md +8 -0
- package/llms/components/lr-qr-code.md +6 -0
- package/llms/components/lr-radar-chart.md +2 -2
- package/llms/components/lr-radio-button.md +13 -4
- package/llms/components/lr-radio-group.md +5 -0
- package/llms/components/lr-radio.md +9 -0
- package/llms/components/lr-rating.md +8 -0
- package/llms/components/lr-relative-time.md +2 -0
- package/llms/components/lr-reorder-item.md +6 -0
- package/llms/components/lr-reorder-list.md +6 -0
- package/llms/components/lr-result-card.md +6 -3
- package/llms/components/lr-result-field.md +6 -3
- package/llms/components/lr-retrieval-results.md +1 -1
- package/llms/components/lr-rubric-form.md +12 -0
- package/llms/components/lr-scatter-chart.md +2 -2
- package/llms/components/lr-scroller.md +5 -5
- package/llms/components/lr-select.md +9 -0
- package/llms/components/lr-sequence-playback.md +5 -2
- package/llms/components/lr-slider.md +19 -5
- package/llms/components/lr-source-picker.md +4 -0
- package/llms/components/lr-span-waterfall.md +3 -0
- package/llms/components/lr-sparkline.md +4 -0
- package/llms/components/lr-split-panel.md +4 -0
- package/llms/components/lr-stack-trace.md +3 -0
- package/llms/components/lr-stat.md +10 -0
- package/llms/components/lr-streaming-text.md +2 -3
- package/llms/components/lr-subagent-panel.md +3 -2
- package/llms/components/lr-svg-viewer.md +3 -0
- package/llms/components/lr-swatch-picker.md +4 -0
- package/llms/components/lr-switch.md +6 -0
- package/llms/components/lr-tab-group.md +4 -0
- package/llms/components/lr-table.md +10 -2
- package/llms/components/lr-terminal.md +17 -5
- package/llms/components/lr-textarea.md +9 -0
- package/llms/components/lr-thinking-panel.md +3 -1
- package/llms/components/lr-thread-list.md +26 -4
- package/llms/components/lr-time-input.md +3 -0
- package/llms/components/lr-time-range.md +5 -0
- package/llms/components/lr-timeline-item.md +6 -0
- package/llms/components/lr-timeline.md +6 -0
- package/llms/components/lr-token-input.md +14 -0
- package/llms/components/lr-tool-call-chip.md +7 -5
- package/llms/components/lr-tool-param-form.md +6 -2
- package/llms/components/lr-tool-result-dialog.md +4 -0
- package/llms/components/lr-tool-result-view.md +2 -3
- package/llms/components/lr-tool-select-dialog.md +6 -2
- package/llms/components/lr-tooltip.md +6 -0
- package/llms/components/lr-trace-tree.md +3 -0
- package/llms/components/lr-transcript-feed.md +3 -0
- package/llms/components/lr-tree-item.md +12 -5
- package/llms/components/lr-tree.md +12 -5
- package/llms/components/lr-typing-indicator.md +3 -0
- package/llms/components/lr-usage-badge.md +4 -0
- package/llms/components/lr-video.md +8 -2
- package/llms/components/lr-virtual-list.md +5 -3
- package/llms/components/lr-voice-picker.md +15 -2
- package/llms/components/lr-widget-renderer.md +21 -13
- package/llms/components/lr-widget.md +4 -2
- package/llms/components/lr-word-cloud.md +4 -0
- package/llms/components/lr-xml-viewer.md +9 -2
- package/llms/components/lr-zoomable-frame.md +6 -3
- package/llms/peers.md +5 -5
- package/llms/shared.md +74 -63
- package/llms-full.txt +4705 -2954
- package/package.json +19 -14
- package/vscode-css-data.json +1 -1
- package/vscode-html-data.json +1 -1
- package/web-types.json +1 -1
- package/dist/components/viewers/docx-viewer/fixtures/minimal-docx-fixture.d.ts +0 -1
- package/dist/components/viewers/docx-viewer/fixtures/minimal-docx-fixture.js +0 -1
- package/dist/components/viewers/ebook-viewer/fixtures/minimal-epub-fixture.d.ts +0 -1
- package/dist/components/viewers/ebook-viewer/fixtures/minimal-epub-fixture.js +0 -1
- package/dist/components/viewers/spreadsheet-viewer/fixtures/minimal-xlsx-fixture.d.ts +0 -1
- package/dist/components/viewers/spreadsheet-viewer/fixtures/minimal-xlsx-fixture.js +0 -1
|
@@ -1,4 +1,6 @@
|
|
|
1
|
-
var __decorate=function(decorators,target,key,desc){var c=arguments.length,r=c<3?target:desc===null?desc=Object.getOwnPropertyDescriptor(target,key):desc,d;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")r=Reflect.decorate(decorators,target,key,desc);else for(var i=decorators.length-1;i>=0;i--)(d=decorators[i])&&(r=(c<3?d(r):c>3?d(target,key,r):d(target,key))||r);return c>3&&r&&Object.defineProperty(target,key,r),r};import{html,nothing}from"lit";import{property}from"lit/decorators.js";import{getNumberFormat}from"../../../internal/intl-cache.js";import{LyraElement}from"../../../internal/lyra-element.js";import{finiteCount}from"../../../internal/numbers.js";import{acquireAnnouncementSink}from"../../../internal/announcer.js";import"../../overlays/badge/badge.class.js";import"../../overlays/empty/empty.class.js";import{styles}from"./schema-viewer.styles.js";import{overallSemanticLabel}from"../semantic-owner.js";import{LYRA_DEFAULT_schemaViewerCircular,LYRA_DEFAULT_schemaViewerEmpty,LYRA_DEFAULT_schemaViewerIssueLimit,LYRA_DEFAULT_schemaViewerLabel,LYRA_DEFAULT_schemaViewerLimit,LYRA_DEFAULT_schemaViewerRequired,LYRA_DEFAULT_schemaViewerType}from"../../../internal/default-strings.generated.js";const MAX_RENDERED_SCHEMA_NODES=500,MAX_RENDERED_SCHEMA_ISSUES=500,MAX_SCHEMA_DEPTH=100,MAX_CONSTRAINT_VALUES=50,MAX_CONSTRAINT_VALUE_CHARACTERS=1e3,MAX_CONSTRAINT_OBJECT_NODES=50;function constraintValue(value){const seen=new Set;let remaining=MAX_CONSTRAINT_OBJECT_NODES;const visit=(candidate,depth)=>{if(remaining--<=0)return"\u2026";if(candidate===null)return"null";if(typeof candidate=="string")return JSON.stringify(candidate.slice(0,MAX_CONSTRAINT_VALUE_CHARACTERS));if(typeof candidate=="number"||typeof candidate=="boolean")return String(candidate);if(typeof candidate=="bigint")return`${candidate.toString()}n`;if(candidate===void 0)return"undefined";if(typeof candidate!="object")return String(candidate);if(seen.has(candidate))return"[Circular]";if(depth>=3)return Array.isArray(candidate)?"[\u2026]":"{\u2026}";seen.add(candidate);let result;if(Array.isArray(candidate)){const values=candidate.slice(0,MAX_CONSTRAINT_VALUES).map(item=>visit(item,depth+1));result=`[${values.join(", ")}${candidate.length>values.length?", \u2026":""}]`}else{const entries=Object.entries(candidate).slice(0,MAX_CONSTRAINT_VALUES);result=`{${entries.map(([key,item])=>`${JSON.stringify(key)}: ${visit(item,depth+1)}`).join(", ")}${Object.keys(candidate).length>entries.length?", \u2026":""}}`}return seen.delete(candidate),result.slice(0,MAX_CONSTRAINT_VALUE_CHARACTERS)};return visit(value,0)}function isReadonlyArray(value){return Array.isArray(value)}function isSchemaRecord(value){return value!==null&&typeof value=="object"&&!Array.isArray(value)}const SCHEMA_SNAPSHOT_NODE_LIMIT=5e4;function snapshotSchemaNode(value,depth,seen,budget){if(!isSchemaRecord(value))return;const cached=seen.get(value);if(cached)return cached;if(budget.remaining<=0)return;budget.remaining--;const output={...value};seen.set(value,output),delete output.properties,delete output.items,delete output.allOf,delete output.anyOf,delete output.oneOf;for(const key in output){if(!Object.prototype.hasOwnProperty.call(output,key))continue;const fieldValue=output[key];Array.isArray(fieldValue)&&(output[key]=Object.freeze([...fieldValue]))}if(depth<MAX_SCHEMA_DEPTH){const properties=value.properties;if(isSchemaRecord(properties)){const nextProperties={};for(const key in properties){if(!Object.prototype.hasOwnProperty.call(properties,key))continue;if(budget.remaining<=0)break;const child=snapshotSchemaNode(properties[key],depth+1,seen,budget);child&&(nextProperties[key]=child)}output.properties=nextProperties}for(const keyword of["allOf","anyOf","oneOf"]){const nodes=value[keyword];if(!isReadonlyArray(nodes))continue;const next=[];for(const node of nodes){if(budget.remaining<=0)break;const child=snapshotSchemaNode(node,depth+1,seen,budget);child&&next.push(child)}output[keyword]=next}const items=value.items;if(isReadonlyArray(items)){const next=[];for(const node of items){if(budget.remaining<=0)break;const child=snapshotSchemaNode(node,depth+1,seen,budget);child&&next.push(child)}output.items=next}else if(isSchemaRecord(items)){const child=snapshotSchemaNode(items,depth+1,seen,budget);child&&(output.items=child)}}return Object.freeze(output)}function snapshotSchema(value){return snapshotSchemaNode(value,0,new Map,{remaining:SCHEMA_SNAPSHOT_NODE_LIMIT})??null}class LyraJsonSchemaViewer extends LyraElement{constructor(){super(...arguments),this.schemaValue=null,this.issues=[],this.selectedPath=null,this.maxDepth=20,this.label="",this.previousNodeLimitText="",this.previousIssueLimitText="",this.suppressNextLimitAnnouncement=!0}static{this.defaultStrings={...super.defaultStrings,schemaViewerCircular:LYRA_DEFAULT_schemaViewerCircular,schemaViewerEmpty:LYRA_DEFAULT_schemaViewerEmpty,schemaViewerIssueLimit:LYRA_DEFAULT_schemaViewerIssueLimit,schemaViewerLabel:LYRA_DEFAULT_schemaViewerLabel,schemaViewerLimit:LYRA_DEFAULT_schemaViewerLimit,schemaViewerRequired:LYRA_DEFAULT_schemaViewerRequired,schemaViewerType:LYRA_DEFAULT_schemaViewerType}}static{this.ownedCollectionProperties=Object.freeze(["issues"])}static{this.styles=[LyraElement.styles,styles]}static{this.immutableEventDetails=Object.freeze(["lr-schema-select"])}get schema(){return this.schemaValue}set schema(value){const previous=this.schemaValue;this.schemaValue=snapshotSchema(value),this.requestUpdate("schema",previous)}syncAnnouncementSink(){this.isConnected&&this.announcementSink?.element.ownerDocument!==this.ownerDocument&&(this.announcementSink?.release(),this.announcementSink=acquireAnnouncementSink("polite",{document:this.ownerDocument,source:this}))}connectedCallback(){super.connectedCallback(),this.syncAnnouncementSink(),this.hasUpdated&&(this.suppressNextLimitAnnouncement=!0,this.requestUpdate())}disconnectedCallback(){super.disconnectedCallback(),this.announcementSink?.release(),this.announcementSink=void 0,this.suppressNextLimitAnnouncement=!0}updated(_changed){super.updated(_changed);const nodeText=this.renderRoot.querySelector('[part="limit"]')?.textContent?.trim()??"",issueText=this.renderRoot.querySelector('[part="issue-limit"]')?.textContent?.trim()??"";this.suppressNextLimitAnnouncement||(nodeText&&nodeText!==this.previousNodeLimitText&&this.announcementSink?.announce(nodeText),issueText&&issueText!==this.previousIssueLimitText&&this.announcementSink?.announce(issueText)),this.previousNodeLimitText=nodeText,this.previousIssueLimitText=issueText,this.suppressNextLimitAnnouncement=!1}pointerSegment(value){return value.replace(/~/g,"~0").replace(/\//g,"~1")}constraints(schema){const rows=["format","pattern","minimum","maximum","minLength","maxLength","minItems","maxItems","minProperties","maxProperties"].flatMap(key=>schema[key]==null?[]:[`${key}: ${constraintValue(schema[key])}`]);if(schema.enum){const values=schema.enum.slice(0,MAX_CONSTRAINT_VALUES).map(constraintValue);rows.push(`enum: [${values.join(", ")}${schema.enum.length>values.length?", \u2026":""}]`)}if(Object.prototype.hasOwnProperty.call(schema,"const")&&rows.push(`const: ${constraintValue(schema.const)}`),Object.prototype.hasOwnProperty.call(schema,"default")&&rows.push(`default: ${constraintValue(schema.default)}`),schema.examples){const examples=schema.examples.slice(0,MAX_CONSTRAINT_VALUES).map(constraintValue);rows.push(`examples: [${examples.join(", ")}${schema.examples.length>examples.length?", \u2026":""}]`)}return schema.$ref&&rows.push(`$ref: ${schema.$ref.slice(0,MAX_CONSTRAINT_VALUE_CHARACTERS)}`),rows}renderNode(name,schema,path,required,depth,ancestors,budget,issuesByPath){if(budget.remaining<=0)return budget.truncated=!0,nothing;budget.remaining--;const selected=path===this.selectedPath;if(ancestors.has(schema))return html`<li part="node"><span part="description">${this.localize("schemaViewerCircular")}</span></li>`;const nextAncestors=new Set(ancestors).add(schema),type=isReadonlyArray(schema.type)?schema.type.join(" | "):schema.type??(schema.properties?"object":""),constraints=this.constraints(schema),issues=issuesByPath.get(path)??[],children=[],addChild=child=>children.length>=budget.remaining?(budget.truncated=!0,!1):(children.push(child),!0);if(depth<finiteCount(this.maxDepth,20,MAX_SCHEMA_DEPTH)){const properties=schema.properties??{};for(const key in properties){if(!Object.prototype.hasOwnProperty.call(properties,key))continue;const node=properties[key];if(node&&!addChild({name:key,node,path:`${path}/properties/${this.pointerSegment(key)}`,required:Array.isArray(schema.required)&&schema.required.includes(key)}))break}for(const keyword of["allOf","anyOf","oneOf"]){const nodes=schema[keyword]??[];for(let index=0;index<nodes.length;index++){const node=nodes[index];if(!node||!addChild({name:`${keyword}[${index}]`,node,path:`${path}/${keyword}/${index}`,required:!1}))break}}if(isReadonlyArray(schema.items))for(let index=0;index<schema.items.length;index++){const node=schema.items[index];if(!node||!addChild({name:`items[${index}]`,node,path:`${path}/items/${index}`,required:!1}))break}else schema.items&&addChild({name:"items",node:schema.items,path:`${path}/items`,required:!1})}return html`
|
|
1
|
+
var __decorate=function(decorators,target,key,desc){var c=arguments.length,r=c<3?target:desc===null?desc=Object.getOwnPropertyDescriptor(target,key):desc,d;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")r=Reflect.decorate(decorators,target,key,desc);else for(var i=decorators.length-1;i>=0;i--)(d=decorators[i])&&(r=(c<3?d(r):c>3?d(target,key,r):d(target,key))||r);return c>3&&r&&Object.defineProperty(target,key,r),r};import{html,nothing}from"lit";import{property}from"lit/decorators.js";import{getNumberFormat}from"../../../internal/intl-cache.js";import{LyraElement}from"../../../internal/lyra-element.js";import{finiteCount}from"../../../internal/numbers.js";import{acquireAnnouncementSink}from"../../../internal/announcer.js";import"../../overlays/badge/badge.class.js";import"../../overlays/empty/empty.class.js";import{styles}from"./schema-viewer.styles.js";import{overallSemanticLabel}from"../semantic-owner.js";import{LYRA_DEFAULT_schemaViewerCircular,LYRA_DEFAULT_schemaViewerEmpty,LYRA_DEFAULT_schemaViewerIssueLimit,LYRA_DEFAULT_schemaViewerLabel,LYRA_DEFAULT_schemaViewerLimit,LYRA_DEFAULT_schemaViewerRequired,LYRA_DEFAULT_schemaViewerType}from"../../../internal/default-strings.generated.js";const MAX_RENDERED_SCHEMA_NODES=500,MAX_RENDERED_SCHEMA_ISSUES=500,MAX_SCHEMA_DEPTH=100,MAX_CONSTRAINT_VALUES=50,MAX_CONSTRAINT_VALUE_CHARACTERS=1e3,MAX_CONSTRAINT_OBJECT_NODES=50;function constraintValue(value){const seen=new Set;let remaining=MAX_CONSTRAINT_OBJECT_NODES;const visit=(candidate,depth)=>{if(remaining--<=0)return"…";if(candidate===null)return"null";if(typeof candidate=="string")return JSON.stringify(candidate.slice(0,MAX_CONSTRAINT_VALUE_CHARACTERS));if(typeof candidate=="number"||typeof candidate=="boolean")return String(candidate);if(typeof candidate=="bigint")return`${candidate.toString()}n`;if(candidate===void 0)return"undefined";if(typeof candidate!="object")return String(candidate);if(seen.has(candidate))return"[Circular]";if(depth>=3)return Array.isArray(candidate)?"[…]":"{…}";seen.add(candidate);let result;if(Array.isArray(candidate)){const values=candidate.slice(0,MAX_CONSTRAINT_VALUES).map(item=>visit(item,depth+1));result=`[${values.join(", ")}${candidate.length>values.length?", …":""}]`}else{const entries=Object.entries(candidate).slice(0,MAX_CONSTRAINT_VALUES);result=`{${entries.map(([key,item])=>`${JSON.stringify(key)}: ${visit(item,depth+1)}`).join(", ")}${Object.keys(candidate).length>entries.length?", …":""}}`}return seen.delete(candidate),result.slice(0,MAX_CONSTRAINT_VALUE_CHARACTERS)};return visit(value,0)}function isReadonlyArray(value){return Array.isArray(value)}const SCHEMA_SNAPSHOT_NODE_LIMIT=5e4,SCHEMA_SNAPSHOT_INSPECTION_LIMIT=SCHEMA_SNAPSHOT_NODE_LIMIT*4,SCHEMA_SNAPSHOT_ARRAY_LENGTH_LIMIT=SCHEMA_SNAPSHOT_NODE_LIMIT,MAX_ARRAY_LENGTH=4294967295,OMIT_SCHEMA_VALUE=Symbol("omit-schema-value"),NODE_LIMIT_SCHEMA_VALUE=Symbol("schema-node-limit"),DEPTH_LIMIT_SCHEMA_VALUE=Symbol("schema-depth-limit"),FUNCTION_TO_STRING=Function.prototype.toString,OBJECT_CONSTRUCTOR_SOURCE=FUNCTION_TO_STRING.call(Object),MISSING_SCHEMA_DESCRIPTOR=Symbol("missing-schema-descriptor"),ACCESSOR_SCHEMA_DESCRIPTOR=Symbol("accessor-schema-descriptor"),UNSAFE_SCHEMA_DESCRIPTOR=Symbol("unsafe-schema-descriptor");function isSchemaSnapshotFailure(value){return value===OMIT_SCHEMA_VALUE||value===NODE_LIMIT_SCHEMA_VALUE||value===DEPTH_LIMIT_SCHEMA_VALUE}function isPlainSchemaRecord(value){try{const prototype=Object.getPrototypeOf(value);if(prototype===null)return!0;if(Object.getPrototypeOf(prototype)!==null)return!1;const constructorDescriptor=Object.getOwnPropertyDescriptor(prototype,"constructor");if(!constructorDescriptor||!("value"in constructorDescriptor)||typeof constructorDescriptor.value!="function")return!1;const constructor=constructorDescriptor.value,constructorPrototype=Object.getOwnPropertyDescriptor(constructor,"prototype");return!!(constructorPrototype&&"value"in constructorPrototype&&constructorPrototype.value===prototype&&FUNCTION_TO_STRING.call(constructor)===OBJECT_CONSTRUCTOR_SOURCE)}catch{return!1}}function isSchemaArray(value){try{return Array.isArray(value)}catch{return!1}}function isArrayIndex(key){const index=Number(key);return Number.isInteger(index)&&index>=0&&index<MAX_ARRAY_LENGTH&&String(index)===key}function checkpointSchemaSnapshot(budget){return{remaining:budget.remaining,additions:budget.additions.length}}function restoreSchemaSnapshot(budget,checkpoint){for(budget.remaining=checkpoint.remaining;budget.additions.length>checkpoint.additions;){const source=budget.additions.pop();source&&budget.seen.delete(source)}}function rememberSchemaSnapshot(budget,source,output){budget.seen.set(source,output),budget.additions.push(source)}function ownEnumerableDataDescriptor(value,key){let descriptor;try{descriptor=Object.getOwnPropertyDescriptor(value,key)}catch{return UNSAFE_SCHEMA_DESCRIPTOR}return!descriptor||!descriptor.enumerable?MISSING_SCHEMA_DESCRIPTOR:"value"in descriptor?descriptor:ACCESSOR_SCHEMA_DESCRIPTOR}function safeArrayLength(value){let descriptor;try{descriptor=Object.getOwnPropertyDescriptor(value,"length")}catch{return UNSAFE_SCHEMA_DESCRIPTOR}return!descriptor||!("value"in descriptor)||typeof descriptor.value!="number"||!Number.isSafeInteger(descriptor.value)||descriptor.value<0||descriptor.value>MAX_ARRAY_LENGTH?UNSAFE_SCHEMA_DESCRIPTOR:descriptor.value}function consumeSchemaInspection(budget){return budget.remainingInspections<=0?!1:(budget.remainingInspections-=1,!0)}function defineSnapshotValue(output,key,value){Object.defineProperty(output,key,{configurable:!1,enumerable:!0,value,writable:!1})}function finishSchemaSnapshot(output){try{return Object.freeze(output)}catch{return OMIT_SCHEMA_VALUE}}function snapshotSchemaValue(value,budget,depth){return value===null||typeof value!="object"&&typeof value!="function"?value:typeof value=="function"?OMIT_SCHEMA_VALUE:budget.seen.has(value)?budget.seen.get(value):depth>MAX_SCHEMA_DEPTH?DEPTH_LIMIT_SCHEMA_VALUE:budget.remaining<=0?NODE_LIMIT_SCHEMA_VALUE:isSchemaArray(value)?snapshotSchemaValueArray(value,budget,depth):isPlainSchemaRecord(value)?snapshotSchemaValueRecord(value,budget,depth):OMIT_SCHEMA_VALUE}function snapshotSchemaValueRecord(value,budget,depth){const checkpoint=checkpointSchemaSnapshot(budget);if(budget.remaining<=0)return NODE_LIMIT_SCHEMA_VALUE;budget.remaining-=1;const output=Object.create(null);rememberSchemaSnapshot(budget,value,output);try{for(const key in value){if(!consumeSchemaInspection(budget))break;const descriptor=ownEnumerableDataDescriptor(value,key);if(descriptor===MISSING_SCHEMA_DESCRIPTOR||descriptor===ACCESSOR_SCHEMA_DESCRIPTOR)continue;if(descriptor===UNSAFE_SCHEMA_DESCRIPTOR)return restoreSchemaSnapshot(budget,checkpoint),OMIT_SCHEMA_VALUE;const entryCheckpoint=checkpointSchemaSnapshot(budget),entry=snapshotSchemaValue(descriptor.value,budget,depth+1);if(entry===OMIT_SCHEMA_VALUE){restoreSchemaSnapshot(budget,entryCheckpoint);continue}if(entry!==DEPTH_LIMIT_SCHEMA_VALUE){if(entry===NODE_LIMIT_SCHEMA_VALUE)break;defineSnapshotValue(output,key,entry)}}}catch{return restoreSchemaSnapshot(budget,checkpoint),OMIT_SCHEMA_VALUE}const frozen=finishSchemaSnapshot(output);return frozen===OMIT_SCHEMA_VALUE?(restoreSchemaSnapshot(budget,checkpoint),OMIT_SCHEMA_VALUE):frozen}function snapshotSchemaValueArray(value,budget,depth){const checkpoint=checkpointSchemaSnapshot(budget);if(budget.remaining<=0)return NODE_LIMIT_SCHEMA_VALUE;budget.remaining-=1;const sourceLength=safeArrayLength(value);if(sourceLength===UNSAFE_SCHEMA_DESCRIPTOR)return restoreSchemaSnapshot(budget,checkpoint),OMIT_SCHEMA_VALUE;const output=new Array(Math.min(sourceLength,SCHEMA_SNAPSHOT_ARRAY_LENGTH_LIMIT));rememberSchemaSnapshot(budget,value,output);try{for(const key in value){if(!consumeSchemaInspection(budget))break;const index=isArrayIndex(key)?Number(key):null;if(index!==null&&index>=output.length)continue;const descriptor=ownEnumerableDataDescriptor(value,key);if(descriptor===MISSING_SCHEMA_DESCRIPTOR||descriptor===ACCESSOR_SCHEMA_DESCRIPTOR)continue;if(descriptor===UNSAFE_SCHEMA_DESCRIPTOR)return restoreSchemaSnapshot(budget,checkpoint),OMIT_SCHEMA_VALUE;const entryCheckpoint=checkpointSchemaSnapshot(budget),entry=snapshotSchemaValue(descriptor.value,budget,depth+1);if(entry===OMIT_SCHEMA_VALUE){restoreSchemaSnapshot(budget,entryCheckpoint);continue}if(entry!==DEPTH_LIMIT_SCHEMA_VALUE){if(entry===NODE_LIMIT_SCHEMA_VALUE){index!==null&&(output.length=index);break}defineSnapshotValue(output,key,entry)}}}catch{return restoreSchemaSnapshot(budget,checkpoint),OMIT_SCHEMA_VALUE}const frozen=finishSchemaSnapshot(output);return frozen===OMIT_SCHEMA_VALUE?(restoreSchemaSnapshot(budget,checkpoint),OMIT_SCHEMA_VALUE):frozen}function snapshotSchemaNode(value,depth,budget){if(value===null||typeof value!="object"||!isPlainSchemaRecord(value))return OMIT_SCHEMA_VALUE;if(budget.seen.has(value))return budget.seen.get(value);if(depth>MAX_SCHEMA_DEPTH)return DEPTH_LIMIT_SCHEMA_VALUE;if(budget.remaining<=0)return NODE_LIMIT_SCHEMA_VALUE;const checkpoint=checkpointSchemaSnapshot(budget);budget.remaining-=1;const output=Object.create(null);rememberSchemaSnapshot(budget,value,output);try{for(const key in value){if(!consumeSchemaInspection(budget))break;const descriptor=ownEnumerableDataDescriptor(value,key);if(descriptor===MISSING_SCHEMA_DESCRIPTOR||descriptor===ACCESSOR_SCHEMA_DESCRIPTOR)continue;if(descriptor===UNSAFE_SCHEMA_DESCRIPTOR)return restoreSchemaSnapshot(budget,checkpoint),OMIT_SCHEMA_VALUE;const entryCheckpoint=checkpointSchemaSnapshot(budget),entry=snapshotSchemaNodeField(key,descriptor.value,budget,depth);if(entry===OMIT_SCHEMA_VALUE){restoreSchemaSnapshot(budget,entryCheckpoint);continue}if(entry!==DEPTH_LIMIT_SCHEMA_VALUE){if(entry===NODE_LIMIT_SCHEMA_VALUE)break;defineSnapshotValue(output,key,entry)}}}catch{return restoreSchemaSnapshot(budget,checkpoint),OMIT_SCHEMA_VALUE}const frozen=finishSchemaSnapshot(output);return frozen===OMIT_SCHEMA_VALUE?(restoreSchemaSnapshot(budget,checkpoint),OMIT_SCHEMA_VALUE):frozen}function snapshotSchemaNodeField(key,value,budget,depth){return depth>=MAX_SCHEMA_DEPTH&&(key==="properties"||key==="items"||key==="allOf"||key==="anyOf"||key==="oneOf")?DEPTH_LIMIT_SCHEMA_VALUE:key==="properties"?snapshotSchemaNodeMap(value,depth+1,budget):key==="allOf"||key==="anyOf"||key==="oneOf"?snapshotSchemaNodeArray(value,depth+1,budget):key==="items"?value!==null&&typeof value=="object"&&isSchemaArray(value)?snapshotSchemaNodeArray(value,depth+1,budget):snapshotSchemaNode(value,depth+1,budget):snapshotSchemaValue(value,budget,depth+1)}function snapshotSchemaNodeMap(value,depth,budget){if(value===null||typeof value!="object"||!isPlainSchemaRecord(value))return OMIT_SCHEMA_VALUE;if(budget.seen.has(value))return budget.seen.get(value);const checkpoint=checkpointSchemaSnapshot(budget),output=Object.create(null);rememberSchemaSnapshot(budget,value,output);try{for(const key in value){if(!consumeSchemaInspection(budget))break;const descriptor=ownEnumerableDataDescriptor(value,key);if(descriptor===MISSING_SCHEMA_DESCRIPTOR||descriptor===ACCESSOR_SCHEMA_DESCRIPTOR)continue;if(descriptor===UNSAFE_SCHEMA_DESCRIPTOR)return restoreSchemaSnapshot(budget,checkpoint),OMIT_SCHEMA_VALUE;const entryCheckpoint=checkpointSchemaSnapshot(budget),entry=snapshotSchemaNode(descriptor.value,depth,budget);if(entry===OMIT_SCHEMA_VALUE){restoreSchemaSnapshot(budget,entryCheckpoint);continue}if(entry!==DEPTH_LIMIT_SCHEMA_VALUE){if(entry===NODE_LIMIT_SCHEMA_VALUE)break;defineSnapshotValue(output,key,entry)}}}catch{return restoreSchemaSnapshot(budget,checkpoint),OMIT_SCHEMA_VALUE}const frozen=finishSchemaSnapshot(output);return frozen===OMIT_SCHEMA_VALUE?(restoreSchemaSnapshot(budget,checkpoint),OMIT_SCHEMA_VALUE):frozen}function snapshotSchemaNodeArray(value,depth,budget){if(value===null||typeof value!="object"||!isSchemaArray(value))return OMIT_SCHEMA_VALUE;if(budget.seen.has(value))return budget.seen.get(value);const checkpoint=checkpointSchemaSnapshot(budget),sourceLength=safeArrayLength(value);if(sourceLength===UNSAFE_SCHEMA_DESCRIPTOR)return OMIT_SCHEMA_VALUE;const output=new Array(Math.min(sourceLength,SCHEMA_SNAPSHOT_ARRAY_LENGTH_LIMIT));rememberSchemaSnapshot(budget,value,output);try{for(const key in value){if(!consumeSchemaInspection(budget))break;const index=isArrayIndex(key)?Number(key):null;if(index!==null&&index>=output.length)continue;const descriptor=ownEnumerableDataDescriptor(value,key);if(descriptor===MISSING_SCHEMA_DESCRIPTOR||descriptor===ACCESSOR_SCHEMA_DESCRIPTOR)continue;if(descriptor===UNSAFE_SCHEMA_DESCRIPTOR)return restoreSchemaSnapshot(budget,checkpoint),OMIT_SCHEMA_VALUE;const entryCheckpoint=checkpointSchemaSnapshot(budget),entry=index!==null?snapshotSchemaNode(descriptor.value,depth,budget):snapshotSchemaValue(descriptor.value,budget,depth);if(entry===OMIT_SCHEMA_VALUE){restoreSchemaSnapshot(budget,entryCheckpoint);continue}if(entry!==DEPTH_LIMIT_SCHEMA_VALUE){if(entry===NODE_LIMIT_SCHEMA_VALUE){index!==null&&(output.length=index);break}defineSnapshotValue(output,key,entry)}}}catch{return restoreSchemaSnapshot(budget,checkpoint),OMIT_SCHEMA_VALUE}const frozen=finishSchemaSnapshot(output);return frozen===OMIT_SCHEMA_VALUE?(restoreSchemaSnapshot(budget,checkpoint),OMIT_SCHEMA_VALUE):frozen}function snapshotSchema(value){const snapshot=snapshotSchemaNode(value,0,{remaining:SCHEMA_SNAPSHOT_NODE_LIMIT,remainingInspections:SCHEMA_SNAPSHOT_INSPECTION_LIMIT,seen:new Map,additions:[]});return isSchemaSnapshotFailure(snapshot)?null:snapshot}class LyraJsonSchemaViewer extends LyraElement{constructor(){super(...arguments),this.schemaValue=null,this.issues=[],this.selectedPath=null,this.maxDepth=20,this.label="",this.previousNodeLimitText="",this.previousIssueLimitText="",this.suppressNextLimitAnnouncement=!0}static{this.defaultStrings={...super.defaultStrings,schemaViewerCircular:LYRA_DEFAULT_schemaViewerCircular,schemaViewerEmpty:LYRA_DEFAULT_schemaViewerEmpty,schemaViewerIssueLimit:LYRA_DEFAULT_schemaViewerIssueLimit,schemaViewerLabel:LYRA_DEFAULT_schemaViewerLabel,schemaViewerLimit:LYRA_DEFAULT_schemaViewerLimit,schemaViewerRequired:LYRA_DEFAULT_schemaViewerRequired,schemaViewerType:LYRA_DEFAULT_schemaViewerType}}static{this.ownedCollectionProperties=Object.freeze(["issues"])}static{this.styles=[LyraElement.styles,styles]}static{this.immutableEventDetails=Object.freeze(["lr-schema-select"])}get schema(){return this.schemaValue}set schema(value){const previous=this.schemaValue;this.schemaValue=snapshotSchema(value),this.requestUpdate("schema",previous)}syncAnnouncementSink(){this.isConnected&&this.announcementSink?.element.ownerDocument!==this.ownerDocument&&(this.announcementSink?.release(),this.announcementSink=acquireAnnouncementSink("polite",{document:this.ownerDocument,source:this}))}connectedCallback(){super.connectedCallback(),this.syncAnnouncementSink(),this.hasUpdated&&(this.suppressNextLimitAnnouncement=!0,this.requestUpdate())}disconnectedCallback(){super.disconnectedCallback(),this.announcementSink?.release(),this.announcementSink=void 0,this.suppressNextLimitAnnouncement=!0}updated(_changed){super.updated(_changed);const nodeText=this.renderRoot.querySelector('[part="limit"]')?.textContent?.trim()??"",issueText=this.renderRoot.querySelector('[part="issue-limit"]')?.textContent?.trim()??"";this.suppressNextLimitAnnouncement||(nodeText&&nodeText!==this.previousNodeLimitText&&this.announcementSink?.announce(nodeText),issueText&&issueText!==this.previousIssueLimitText&&this.announcementSink?.announce(issueText)),this.previousNodeLimitText=nodeText,this.previousIssueLimitText=issueText,this.suppressNextLimitAnnouncement=!1}pointerSegment(value){return value.replace(/~/g,"~0").replace(/\//g,"~1")}constraints(schema){const rows=["format","pattern","minimum","maximum","minLength","maxLength","minItems","maxItems","minProperties","maxProperties"].flatMap(key=>schema[key]==null?[]:[`${key}: ${constraintValue(schema[key])}`]);if(schema.enum){const values=schema.enum.slice(0,MAX_CONSTRAINT_VALUES).map(constraintValue);rows.push(`enum: [${values.join(", ")}${schema.enum.length>values.length?", …":""}]`)}if(Object.prototype.hasOwnProperty.call(schema,"const")&&rows.push(`const: ${constraintValue(schema.const)}`),Object.prototype.hasOwnProperty.call(schema,"default")&&rows.push(`default: ${constraintValue(schema.default)}`),schema.examples){const examples=schema.examples.slice(0,MAX_CONSTRAINT_VALUES).map(constraintValue);rows.push(`examples: [${examples.join(", ")}${schema.examples.length>examples.length?", …":""}]`)}return schema.$ref&&rows.push(`$ref: ${schema.$ref.slice(0,MAX_CONSTRAINT_VALUE_CHARACTERS)}`),rows}renderNode(name,schema,path,required,depth,ancestors,budget,issuesByPath){if(budget.remaining<=0)return budget.truncated=!0,nothing;budget.remaining--;const selected=path===this.selectedPath;if(ancestors.has(schema))return html`<li part="node">
|
|
2
|
+
<span part="description">${this.localize("schemaViewerCircular")}</span>
|
|
3
|
+
</li>`;const nextAncestors=new Set(ancestors).add(schema),type=isReadonlyArray(schema.type)?schema.type.join(" | "):schema.type??(schema.properties?"object":""),constraints=this.constraints(schema),issues=issuesByPath.get(path)??[],children=[],addChild=child=>children.length>=budget.remaining?(budget.truncated=!0,!1):(children.push(child),!0);if(depth<finiteCount(this.maxDepth,20,MAX_SCHEMA_DEPTH)){const properties=schema.properties??{};for(const key in properties){if(!Object.prototype.hasOwnProperty.call(properties,key))continue;const node=properties[key];if(node&&!addChild({name:key,node,path:`${path}/properties/${this.pointerSegment(key)}`,required:Array.isArray(schema.required)&&schema.required.includes(key)}))break}for(const keyword of["allOf","anyOf","oneOf"]){const nodes=schema[keyword]??[];for(const key of Object.keys(nodes)){if(!isArrayIndex(key))continue;const index=Number(key),node=nodes[index];if(node&&!addChild({name:`${keyword}[${index}]`,node,path:`${path}/${keyword}/${index}`,required:!1}))break}}if(isReadonlyArray(schema.items))for(const key of Object.keys(schema.items)){if(!isArrayIndex(key))continue;const index=Number(key),node=schema.items[index];if(node&&!addChild({name:`items[${index}]`,node,path:`${path}/items/${index}`,required:!1}))break}else schema.items&&addChild({name:"items",node:schema.items,path:`${path}/items`,required:!1})}return html`
|
|
2
4
|
<li part=${selected?"node node-selected":"node"} style=${`--_lr-schema-depth:${depth}`}>
|
|
3
5
|
<button
|
|
4
6
|
part="node-trigger"
|
|
@@ -8,21 +10,32 @@ var __decorate=function(decorators,target,key,desc){var c=arguments.length,r=c<3
|
|
|
8
10
|
@click=${()=>this.emit("lr-schema-select",{schemaPath:path,schema})}
|
|
9
11
|
>
|
|
10
12
|
<strong part="name">${name}</strong>
|
|
11
|
-
${type?html`<lr-badge part="type" variant="neutral"
|
|
12
|
-
|
|
13
|
+
${type?html`<lr-badge part="type" variant="neutral"
|
|
14
|
+
>${this.localize("schemaViewerType",void 0,{type})}</lr-badge
|
|
15
|
+
>`:nothing}
|
|
16
|
+
${required?html`<lr-badge part="required" variant="danger"
|
|
17
|
+
>${this.localize("schemaViewerRequired")}</lr-badge
|
|
18
|
+
>`:nothing}
|
|
13
19
|
</button>
|
|
14
20
|
${schema.description?html`<p part="description">${schema.description}</p>`:nothing}
|
|
15
|
-
${constraints.length?html`<ul part="constraints"
|
|
16
|
-
|
|
17
|
-
|
|
21
|
+
${constraints.length?html`<ul part="constraints">
|
|
22
|
+
${constraints.map(row=>html`<li>${row}</li>`)}
|
|
23
|
+
</ul>`:nothing}
|
|
24
|
+
${issues.map(issue=>html`<p part="issue" data-severity=${issue.severity??"error"}>
|
|
25
|
+
${issue.message}
|
|
26
|
+
</p>`)}
|
|
27
|
+
${children.length?html`<ul>
|
|
28
|
+
${children.map(child=>this.renderNode(child.name,child.node,child.path,child.required,depth+1,nextAncestors,budget,issuesByPath))}
|
|
29
|
+
</ul>`:nothing}
|
|
18
30
|
</li>
|
|
19
31
|
`}render(){const label=overallSemanticLabel(this,this.label||this.localize("schemaViewerLabel"));if(!this.schema||typeof this.schema!="object")return html`<section part="base" aria-label=${label??nothing}>
|
|
20
|
-
<lr-empty
|
|
32
|
+
<lr-empty
|
|
33
|
+
part="empty"
|
|
34
|
+
heading=${this.localize("schemaViewerEmpty")}
|
|
35
|
+
></lr-empty>
|
|
21
36
|
</section>`;const budget={remaining:MAX_RENDERED_SCHEMA_NODES,truncated:!1},issuesByPath=new Map,visibleIssueCount=Math.min(this.issues.length,MAX_RENDERED_SCHEMA_ISSUES);for(let index=0;index<visibleIssueCount;index++){const issue=this.issues[index];if(!issue)continue;const pathIssues=issuesByPath.get(issue.path)??[];pathIssues.push(issue),issuesByPath.set(issue.path,pathIssues)}const tree=this.renderNode(this.schema.title||"$",this.schema,"",!1,0,new Set,budget,issuesByPath);return html`
|
|
22
37
|
<section part="base" aria-label=${label??nothing}>
|
|
23
|
-
<ul part="tree">
|
|
24
|
-
${tree}
|
|
25
|
-
</ul>
|
|
38
|
+
<ul part="tree">${tree}</ul>
|
|
26
39
|
${budget.truncated?html`<p part="limit">${this.localize("schemaViewerLimit",void 0,{count:getNumberFormat(this.effectiveLocale).format(MAX_RENDERED_SCHEMA_NODES)})}</p>`:nothing}
|
|
27
40
|
${this.issues.length>MAX_RENDERED_SCHEMA_ISSUES?html`<p part="issue-limit">${this.localize("schemaViewerIssueLimit",void 0,{count:getNumberFormat(this.effectiveLocale).format(MAX_RENDERED_SCHEMA_ISSUES)})}</p>`:nothing}
|
|
28
41
|
</section>
|
|
@@ -5,8 +5,10 @@ import{type TemplateResult,type PropertyValues}from'lit';import{LyraElement}from
|
|
|
5
5
|
* in start order, status-toned bars (Langfuse timeline / Temporal
|
|
6
6
|
* event-history style).
|
|
7
7
|
*
|
|
8
|
-
* Public collection properties take bounded
|
|
9
|
-
*
|
|
8
|
+
* Public collection properties take bounded readonly snapshots. `spans` keeps admitted item
|
|
9
|
+
* identities only long enough for the shared descriptor-safe projection to copy its closed
|
|
10
|
+
* display schema; later rendering never re-reads an admitted source row. Create a new collection
|
|
11
|
+
* and reassign it after changes; mutating the assigned array does not update the view.
|
|
10
12
|
*
|
|
11
13
|
* @customElement lr-span-waterfall
|
|
12
14
|
* @event lr-span-select - `detail: { spanId }` — a bar/row was activated (click, Enter, Space).
|
|
@@ -17,8 +19,9 @@ import{type TemplateResult,type PropertyValues}from'lit';import{LyraElement}from
|
|
|
17
19
|
* @csspart row - One span's row.
|
|
18
20
|
* @csspart name - The span's name (the row's name gutter).
|
|
19
21
|
* @csspart bar-track - The bar's positioning track.
|
|
20
|
-
* @csspart bar - The interactive, focusable status-toned bar (`role` via `<button>`), with
|
|
21
|
-
*
|
|
22
|
+
* @csspart bar - The interactive, focusable status-toned bar (`role` via `<button>`), with the
|
|
23
|
+
* shared `--lr-icon-button-size` minimum target in both axes even when its duration would paint
|
|
24
|
+
* more narrowly.
|
|
22
25
|
* @csspart meta - Secondary row info (status/duration), shown inline under 480px.
|
|
23
26
|
* @csspart status-text - The visible status label.
|
|
24
27
|
* @csspart duration - The formatted duration text.
|
|
@@ -42,7 +45,11 @@ import{type TemplateResult,type PropertyValues}from'lit';import{LyraElement}from
|
|
|
42
45
|
* @status stable
|
|
43
46
|
* @since 4.0.0
|
|
44
47
|
*/
|
|
45
|
-
export declare class LyraSpanWaterfall extends LyraElement<LyraSpanWaterfallEventMap>{protected static readonly ownedCollectionProperties:readonly string[];
|
|
48
|
+
export declare class LyraSpanWaterfall extends LyraElement<LyraSpanWaterfallEventMap>{protected static readonly ownedCollectionProperties:readonly string[];
|
|
49
|
+
/** Span sources can carry opaque provider metadata; the shared normalizer copies only its closed
|
|
50
|
+
* display schema once, so cloning each whole source record would both lose opaque identity and
|
|
51
|
+
* create an unsafe second traversal. */
|
|
52
|
+
protected static readonly identityCollectionProperties:readonly string[];static styles:import("lit").CSSResultGroup[];
|
|
46
53
|
/** Identical contract to `<lr-trace-tree>.spans`; rows sort by `startMs` (ties keep array order).
|
|
47
54
|
* The controlled `activeSpanId` reserves a position inside the shared 500-row ceiling. Foreign
|
|
48
55
|
* runtime `kind`/`status` values normalize to `'other'`/`'pending'` before rendering. */
|
|
@@ -51,4 +58,4 @@ spans:readonly LyraSpan[];activeSpanId:string|null;
|
|
|
51
58
|
* `LyraSpan.startMs`/`endMs` -- never a wall-clock timestamp). Both `null` (the default) fits
|
|
52
59
|
* the whole trace; a non-null NaN (e.g. an unparsable attribute) is normalized the same way as
|
|
53
60
|
* `null` by `viewWindow()` rather than poisoning the axis/bar math with NaN. */
|
|
54
|
-
viewStartMs:number|null;viewEndMs:number|null;hideAxis:boolean;label:string;private focusedId;private sortedSource?;private sortedActiveSpanId;private sortedCache;private sortedCacheTruncated;private limitAnnouncementSink?;private limitAnnouncementInitialized;private previouslyTruncated;private liveRegion?;connectedCallback():void;disconnectedCallback():void;adoptedCallback():void;private syncLimitAnnouncementSink;private sortedSpans;private viewWindow;private barGeometry;private formatDuration;private focusRow;private announceFocus;private selectRow;private onKeyDown;protected willUpdate(changed:PropertyValues):void;private renderedBarById;protected updated(changed:PropertyValues):void;private renderAxis;private renderRow;render():TemplateResult;}declare global{interface HTMLElementTagNameMap{'lr-span-waterfall':LyraSpanWaterfall;}}
|
|
61
|
+
viewStartMs:number|null;viewEndMs:number|null;hideAxis:boolean;label:string;private focusedId;private sortedSource?;private sortedActiveSpanId;private sortedCache;private sortedCacheTruncated;private limitAnnouncementSink?;private limitAnnouncementInitialized;private previouslyTruncated;private liveRegion?;connectedCallback():void;disconnectedCallback():void;adoptedCallback():void;private syncLimitAnnouncementSink;private sortedSpans;private viewWindow;private barGeometry;private formatDuration;private projectionLimitText;private focusRow;private announceFocus;private selectRow;private onKeyDown;protected willUpdate(changed:PropertyValues):void;private renderedBarById;protected updated(changed:PropertyValues):void;private renderAxis;private renderRow;render():TemplateResult;}declare global{interface HTMLElementTagNameMap{'lr-span-waterfall':LyraSpanWaterfall;}}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
var __decorate=function(decorators,target,key,desc){var c=arguments.length,r=c<3?target:desc===null?desc=Object.getOwnPropertyDescriptor(target,key):desc,d;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")r=Reflect.decorate(decorators,target,key,desc);else for(var i=decorators.length-1;i>=0;i--)(d=decorators[i])&&(r=(c<3?d(r):c>3?d(target,key,r):d(target,key))||r);return c>3&&r&&Object.defineProperty(target,key,r),r};import{html,nothing}from"lit";import{property,query}from"lit/decorators.js";import{LyraElement}from"../../../internal/lyra-element.js";import{prefersReducedMotion}from"../../../internal/motion.js";import{finiteRatio,finiteRange}from"../../../internal/numbers.js";import{getNumberFormat}from"../../../internal/intl-cache.js";import{acquireAnnouncementSink}from"../../../internal/announcer.js";import{hostAriaLabel}from"../../../internal/a11y.js";import{styles}from"./span-waterfall.styles.js";import{MAX_RENDERED_LYRA_SPANS,normalizeLyraSpans}from"../trace-tree/span.js";import{LYRA_DEFAULT_accessibleLabelSeparator,LYRA_DEFAULT_collapse,LYRA_DEFAULT_details,LYRA_DEFAULT_durationMilliseconds,LYRA_DEFAULT_map,LYRA_DEFAULT_navigation,LYRA_DEFAULT_noData,LYRA_DEFAULT_open,LYRA_DEFAULT_popover,LYRA_DEFAULT_search,LYRA_DEFAULT_select,LYRA_DEFAULT_spanKindAgent,LYRA_DEFAULT_spanKindEmbedding,LYRA_DEFAULT_spanKindLlm,LYRA_DEFAULT_spanKindOther,LYRA_DEFAULT_spanKindRetriever,LYRA_DEFAULT_spanKindTool,LYRA_DEFAULT_spanProjectionLimit,LYRA_DEFAULT_spanStartedAtOffset,LYRA_DEFAULT_spanWaterfall,LYRA_DEFAULT_statusDenied,LYRA_DEFAULT_statusError,LYRA_DEFAULT_statusPending,LYRA_DEFAULT_statusRunning,LYRA_DEFAULT_statusSuccess}from"../../../internal/default-strings.generated.js";const KIND_LABEL_KEY={agent:"spanKindAgent",llm:"spanKindLlm",tool:"spanKindTool",retriever:"spanKindRetriever",embedding:"spanKindEmbedding",other:"spanKindOther"},STATUS_LABEL_KEY={pending:"statusPending",running:"statusRunning",success:"statusSuccess",error:"statusError",denied:"statusDenied"},STATUS_TONE={success:"success",error:"danger",denied:"warning",running:"accent",pending:"neutral"};function niceStep(span,count){if(span<=0)return 1;const rough=span/Math.max(1,count),magnitude=10**Math.floor(Math.log10(rough)),residual=rough/magnitude;return(residual<1.5?1:residual<3?2:residual<7?5:10)*magnitude}function axisTicks(start,end,count=5){const step=niceStep(end-start,count);if(!Number.isFinite(step)||step<=0)return[start,end];const first=Math.ceil(start/step)*step;if(!Number.isFinite(first))return[start,end];const ticks=[];for(let index=0;index<=count+2;index++){const value=first+index*step;if(!Number.isFinite(value)||value>end+step/2)break;const rounded=Math.round(value/step)*step;Number.isFinite(rounded)&&(ticks.length===0||rounded>ticks[ticks.length-1])&&ticks.push(rounded)}return ticks}class LyraSpanWaterfall extends LyraElement{constructor(){super(...arguments),this.spans=[],this.activeSpanId=null,this.viewStartMs=null,this.viewEndMs=null,this.hideAxis=!1,this.label="",this.focusedId=null,this.sortedActiveSpanId=null,this.sortedCache=[],this.sortedCacheTruncated=!1,this.limitAnnouncementInitialized=!1,this.previouslyTruncated=!1,this.onKeyDown=e=>{const view=this.viewWindow(),rows=this.sortedSpans().filter(span=>this.barGeometry(span,view).visible);if(rows.length===0)return;const currentIndex=rows.findIndex(s=>s.id===this.focusedId),idx=currentIndex>=0?currentIndex:0;switch(e.key){case"ArrowDown":e.preventDefault(),this.focusRow(rows[Math.min(rows.length-1,idx+1)]);break;case"ArrowUp":e.preventDefault(),this.focusRow(rows[Math.max(0,idx-1)]);break;case"Home":e.preventDefault(),this.focusRow(rows[0]);break;case"End":e.preventDefault(),this.focusRow(rows[rows.length-1]);break;case"Enter":case" ":e.preventDefault(),this.selectRow(rows[idx].id);break;default:return}}}static{this.defaultStrings={...super.defaultStrings,accessibleLabelSeparator:LYRA_DEFAULT_accessibleLabelSeparator,collapse:LYRA_DEFAULT_collapse,details:LYRA_DEFAULT_details,durationMilliseconds:LYRA_DEFAULT_durationMilliseconds,map:LYRA_DEFAULT_map,navigation:LYRA_DEFAULT_navigation,noData:LYRA_DEFAULT_noData,open:LYRA_DEFAULT_open,popover:LYRA_DEFAULT_popover,search:LYRA_DEFAULT_search,select:LYRA_DEFAULT_select,spanKindAgent:LYRA_DEFAULT_spanKindAgent,spanKindEmbedding:LYRA_DEFAULT_spanKindEmbedding,spanKindLlm:LYRA_DEFAULT_spanKindLlm,spanKindOther:LYRA_DEFAULT_spanKindOther,spanKindRetriever:LYRA_DEFAULT_spanKindRetriever,spanKindTool:LYRA_DEFAULT_spanKindTool,spanProjectionLimit:LYRA_DEFAULT_spanProjectionLimit,spanStartedAtOffset:LYRA_DEFAULT_spanStartedAtOffset,spanWaterfall:LYRA_DEFAULT_spanWaterfall,statusDenied:LYRA_DEFAULT_statusDenied,statusError:LYRA_DEFAULT_statusError,statusPending:LYRA_DEFAULT_statusPending,statusRunning:LYRA_DEFAULT_statusRunning,statusSuccess:LYRA_DEFAULT_statusSuccess}}static{this.ownedCollectionProperties=Object.freeze(["spans"])}static{this.styles=[LyraElement.styles,styles]}connectedCallback(){super.connectedCallback(),this.syncLimitAnnouncementSink(),this.limitAnnouncementInitialized=this.hasUpdated,this.previouslyTruncated=this.sortedCacheTruncated}disconnectedCallback(){this.limitAnnouncementSink?.release(),this.limitAnnouncementSink=void 0,super.disconnectedCallback()}adoptedCallback(){super.adoptedCallback(),this.limitAnnouncementSink?.release(),this.limitAnnouncementSink=void 0,this.syncLimitAnnouncementSink()}syncLimitAnnouncementSink(){!this.isConnected||this.limitAnnouncementSink?.element.ownerDocument===this.ownerDocument||(this.limitAnnouncementSink?.release(),this.limitAnnouncementSink=acquireAnnouncementSink("polite",{document:this.ownerDocument,source:this}))}sortedSpans(){if(this.sortedSource===this.spans&&this.sortedActiveSpanId===this.activeSpanId)return this.sortedCache;this.sortedSource=this.spans,this.sortedActiveSpanId=this.activeSpanId;const projection=normalizeLyraSpans(this.spans,this.activeSpanId);return this.sortedCacheTruncated=projection.truncated,this.sortedCache=projection.spans.map((s,i)=>({s,i})).sort((a,b)=>a.s.startMs-b.s.startMs||a.i-b.i).map(x=>x.s),this.sortedCache}viewWindow(){const extentEnd=this.sortedSpans().reduce((m,s)=>Math.max(m,s.endMs??s.startMs,s.startMs),0),fallbackEnd=Math.max(extentEnd,1),start=this.viewStartMs==null?0:finiteRange(this.viewStartMs,0,0,Number.MAX_SAFE_INTEGER-1),end=this.viewEndMs==null?fallbackEnd:finiteRange(this.viewEndMs,fallbackEnd,0,Number.MAX_SAFE_INTEGER);return{start,end:end>start?end:start+1}}barGeometry(span,view){const endMs=span.endMs??(span.status==="running"?view.end:span.startMs),visible=span.startMs<=view.end&&endMs>=view.start,clampedStart=Math.max(view.start,span.startMs),clampedEnd=Math.min(view.end,Math.max(endMs,span.startMs)),startPct=finiteRatio(clampedStart,view.start,view.end)*100,endPct=finiteRatio(clampedEnd,view.start,view.end)*100;return{startPct,widthPct:Math.max(0,endPct-startPct),visible}}formatDuration(ms){if(ms==null||!Number.isFinite(ms))return"";const milliseconds=Math.max(0,ms);return milliseconds<1e3?getNumberFormat(this.effectiveLocale,{style:"unit",unit:"millisecond",unitDisplay:"short",maximumFractionDigits:0}).format(milliseconds):getNumberFormat(this.effectiveLocale,{style:"unit",unit:"second",unitDisplay:"short",maximumFractionDigits:1}).format(milliseconds/1e3)}focusRow(span){if(!span)return;const previous=this.renderRoot.querySelector('[part="bar"][tabindex="0"]');this.focusedId=span.id,this.announceFocus(span),previous?.setAttribute("tabindex","-1");const next=this.renderedBarById(span.id);next?.setAttribute("tabindex","0"),next?.focus()}announceFocus(span){const parts=[span.name,this.localize(KIND_LABEL_KEY[span.kind]),this.localize(STATUS_LABEL_KEY[span.status]),this.localize("spanStartedAtOffset",void 0,{value:this.formatDuration(span.startMs)||this.localize("durationMilliseconds",void 0,{value:0})})];span.endMs!=null&&parts.push(this.formatDuration(span.endMs-span.startMs)),this.liveRegion?.announce(parts.join(this.localize("accessibleLabelSeparator")),{force:!0})}selectRow(id){this.focusedId=id,this.emit("lr-span-select",{spanId:id})}willUpdate(changed){if(super.willUpdate(changed),(changed.has("spans")||changed.has("activeSpanId"))&&(this.sortedSource=void 0),changed.has("spans")||changed.has("viewStartMs")||changed.has("viewEndMs")||changed.has("activeSpanId")){const view=this.viewWindow(),ids=new Set(this.sortedSpans().filter(span=>this.barGeometry(span,view).visible).map(span=>span.id));(this.focusedId==null||!ids.has(this.focusedId))&&(this.focusedId=this.activeSpanId&&ids.has(this.activeSpanId)?this.activeSpanId:this.sortedSpans()[0]?.id??null),this.focusedId!==null&&!ids.has(this.focusedId)&&(this.focusedId=this.sortedSpans().find(span=>ids.has(span.id))?.id??null),changed.has("activeSpanId")&&this.activeSpanId&&ids.has(this.activeSpanId)&&(this.focusedId=this.activeSpanId)}}renderedBarById(id){const ownerCss=this.ownerDocument.defaultView?.CSS;return typeof ownerCss?.escape=="function"?this.renderRoot.querySelector(`[data-id="${ownerCss.escape(id)}"]`):Array.from(this.renderRoot.querySelectorAll("[data-id]")).find(element=>element.dataset.id===id)??null}updated(changed){if(super.updated(changed),changed.has("activeSpanId")&&this.activeSpanId){const bar=this.renderedBarById(this.activeSpanId);if(bar&&!bar.hidden){const ownerWindow=bar.ownerDocument.defaultView,reducedMotion=!ownerWindow||prefersReducedMotion(ownerWindow);bar.scrollIntoView({block:"nearest",behavior:reducedMotion?"auto":"smooth"})}}this.limitAnnouncementInitialized&&this.sortedCacheTruncated&&!this.previouslyTruncated&&this.limitAnnouncementSink?.announce(this.localize("spanProjectionLimit",void 0,{count:MAX_RENDERED_LYRA_SPANS})),this.limitAnnouncementInitialized=!0,this.previouslyTruncated=this.sortedCacheTruncated}renderAxis(view){const ticks=axisTicks(view.start,view.end);return html`
|
|
1
|
+
var __decorate=function(decorators,target,key,desc){var c=arguments.length,r=c<3?target:desc===null?desc=Object.getOwnPropertyDescriptor(target,key):desc,d;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")r=Reflect.decorate(decorators,target,key,desc);else for(var i=decorators.length-1;i>=0;i--)(d=decorators[i])&&(r=(c<3?d(r):c>3?d(target,key,r):d(target,key))||r);return c>3&&r&&Object.defineProperty(target,key,r),r};import{html,nothing}from"lit";import{property,query}from"lit/decorators.js";import{LyraElement}from"../../../internal/lyra-element.js";import{prefersReducedMotion}from"../../../internal/motion.js";import{finiteRatio,finiteRange}from"../../../internal/numbers.js";import{getNumberFormat}from"../../../internal/intl-cache.js";import{acquireAnnouncementSink}from"../../../internal/announcer.js";import{hostAriaLabel}from"../../../internal/a11y.js";import{styles}from"./span-waterfall.styles.js";import{MAX_RENDERED_LYRA_SPANS,normalizeLyraSpans}from"../trace-tree/span.js";import{LYRA_DEFAULT_accessibleLabelSeparator,LYRA_DEFAULT_collapse,LYRA_DEFAULT_details,LYRA_DEFAULT_durationMilliseconds,LYRA_DEFAULT_map,LYRA_DEFAULT_navigation,LYRA_DEFAULT_noData,LYRA_DEFAULT_open,LYRA_DEFAULT_popover,LYRA_DEFAULT_search,LYRA_DEFAULT_select,LYRA_DEFAULT_spanKindAgent,LYRA_DEFAULT_spanKindEmbedding,LYRA_DEFAULT_spanKindLlm,LYRA_DEFAULT_spanKindOther,LYRA_DEFAULT_spanKindRetriever,LYRA_DEFAULT_spanKindTool,LYRA_DEFAULT_spanProjectionLimit,LYRA_DEFAULT_spanStartedAtOffset,LYRA_DEFAULT_spanWaterfall,LYRA_DEFAULT_statusDenied,LYRA_DEFAULT_statusError,LYRA_DEFAULT_statusPending,LYRA_DEFAULT_statusRunning,LYRA_DEFAULT_statusSuccess,LYRA_DEFAULT_tokensIn,LYRA_DEFAULT_tokensOut}from"../../../internal/default-strings.generated.js";const KIND_LABEL_KEY={agent:"spanKindAgent",llm:"spanKindLlm",tool:"spanKindTool",retriever:"spanKindRetriever",embedding:"spanKindEmbedding",other:"spanKindOther"},STATUS_LABEL_KEY={pending:"statusPending",running:"statusRunning",success:"statusSuccess",error:"statusError",denied:"statusDenied"},STATUS_TONE={success:"success",error:"danger",denied:"warning",running:"accent",pending:"neutral"};function niceStep(span,count){if(span<=0)return 1;const rough=span/Math.max(1,count),magnitude=10**Math.floor(Math.log10(rough)),residual=rough/magnitude;return(residual<1.5?1:residual<3?2:residual<7?5:10)*magnitude}function axisTicks(start,end,count=5){const step=niceStep(end-start,count);if(!Number.isFinite(step)||step<=0)return[start,end];const first=Math.ceil(start/step)*step;if(!Number.isFinite(first))return[start,end];const ticks=[];for(let index=0;index<=count+2;index++){const value=first+index*step;if(!Number.isFinite(value)||value>end+step/2)break;const rounded=Math.round(value/step)*step;Number.isFinite(rounded)&&(ticks.length===0||rounded>ticks[ticks.length-1])&&ticks.push(rounded)}return ticks}class LyraSpanWaterfall extends LyraElement{constructor(){super(...arguments),this.spans=[],this.activeSpanId=null,this.viewStartMs=null,this.viewEndMs=null,this.hideAxis=!1,this.label="",this.focusedId=null,this.sortedActiveSpanId=null,this.sortedCache=[],this.sortedCacheTruncated=!1,this.limitAnnouncementInitialized=!1,this.previouslyTruncated=!1,this.onKeyDown=e=>{const view=this.viewWindow(),rows=this.sortedSpans().filter(span=>this.barGeometry(span,view).visible);if(rows.length===0)return;const currentIndex=rows.findIndex(s=>s.id===this.focusedId),idx=currentIndex>=0?currentIndex:0;switch(e.key){case"ArrowDown":e.preventDefault(),this.focusRow(rows[Math.min(rows.length-1,idx+1)]);break;case"ArrowUp":e.preventDefault(),this.focusRow(rows[Math.max(0,idx-1)]);break;case"Home":e.preventDefault(),this.focusRow(rows[0]);break;case"End":e.preventDefault(),this.focusRow(rows[rows.length-1]);break;case"Enter":case" ":e.preventDefault(),this.selectRow(rows[idx].id);break;default:return}}}static{this.defaultStrings={...super.defaultStrings,accessibleLabelSeparator:LYRA_DEFAULT_accessibleLabelSeparator,collapse:LYRA_DEFAULT_collapse,details:LYRA_DEFAULT_details,durationMilliseconds:LYRA_DEFAULT_durationMilliseconds,map:LYRA_DEFAULT_map,navigation:LYRA_DEFAULT_navigation,noData:LYRA_DEFAULT_noData,open:LYRA_DEFAULT_open,popover:LYRA_DEFAULT_popover,search:LYRA_DEFAULT_search,select:LYRA_DEFAULT_select,spanKindAgent:LYRA_DEFAULT_spanKindAgent,spanKindEmbedding:LYRA_DEFAULT_spanKindEmbedding,spanKindLlm:LYRA_DEFAULT_spanKindLlm,spanKindOther:LYRA_DEFAULT_spanKindOther,spanKindRetriever:LYRA_DEFAULT_spanKindRetriever,spanKindTool:LYRA_DEFAULT_spanKindTool,spanProjectionLimit:LYRA_DEFAULT_spanProjectionLimit,spanStartedAtOffset:LYRA_DEFAULT_spanStartedAtOffset,spanWaterfall:LYRA_DEFAULT_spanWaterfall,statusDenied:LYRA_DEFAULT_statusDenied,statusError:LYRA_DEFAULT_statusError,statusPending:LYRA_DEFAULT_statusPending,statusRunning:LYRA_DEFAULT_statusRunning,statusSuccess:LYRA_DEFAULT_statusSuccess,tokensIn:LYRA_DEFAULT_tokensIn,tokensOut:LYRA_DEFAULT_tokensOut}}static{this.ownedCollectionProperties=Object.freeze(["spans"])}static{this.identityCollectionProperties=Object.freeze(["spans"])}static{this.styles=[LyraElement.styles,styles]}connectedCallback(){super.connectedCallback(),this.syncLimitAnnouncementSink(),this.limitAnnouncementInitialized=this.hasUpdated,this.previouslyTruncated=this.sortedCacheTruncated}disconnectedCallback(){this.limitAnnouncementSink?.release(),this.limitAnnouncementSink=void 0,super.disconnectedCallback()}adoptedCallback(){super.adoptedCallback(),this.limitAnnouncementSink?.release(),this.limitAnnouncementSink=void 0,this.syncLimitAnnouncementSink()}syncLimitAnnouncementSink(){!this.isConnected||this.limitAnnouncementSink?.element.ownerDocument===this.ownerDocument||(this.limitAnnouncementSink?.release(),this.limitAnnouncementSink=acquireAnnouncementSink("polite",{document:this.ownerDocument,source:this}))}sortedSpans(){if(this.sortedSource===this.spans&&this.sortedActiveSpanId===this.activeSpanId)return this.sortedCache;this.sortedSource=this.spans,this.sortedActiveSpanId=this.activeSpanId;const projection=normalizeLyraSpans(this.spans,this.activeSpanId);return this.sortedCacheTruncated=projection.truncated,this.sortedCache=projection.spans.map((s,i)=>({s,i})).sort((a,b)=>a.s.startMs-b.s.startMs||a.i-b.i).map(x=>x.s),this.sortedCache}viewWindow(){const extentEnd=this.sortedSpans().reduce((m,s)=>Math.max(m,s.endMs??s.startMs,s.startMs),0),fallbackEnd=Math.max(extentEnd,1),start=this.viewStartMs==null?0:finiteRange(this.viewStartMs,0,0,Number.MAX_SAFE_INTEGER-1),end=this.viewEndMs==null?fallbackEnd:finiteRange(this.viewEndMs,fallbackEnd,0,Number.MAX_SAFE_INTEGER);return{start,end:end>start?end:start+1}}barGeometry(span,view){const endMs=span.endMs??(span.status==="running"?view.end:span.startMs),visible=span.startMs<=view.end&&endMs>=view.start,clampedStart=Math.max(view.start,span.startMs),clampedEnd=Math.min(view.end,Math.max(endMs,span.startMs)),startPct=finiteRatio(clampedStart,view.start,view.end)*100,endPct=finiteRatio(clampedEnd,view.start,view.end)*100;return{startPct,widthPct:Math.max(0,endPct-startPct),visible}}formatDuration(ms){if(ms==null||!Number.isFinite(ms))return"";const milliseconds=Math.max(0,ms);return milliseconds<1e3?getNumberFormat(this.effectiveLocale,{style:"unit",unit:"millisecond",unitDisplay:"short",maximumFractionDigits:0}).format(milliseconds):getNumberFormat(this.effectiveLocale,{style:"unit",unit:"second",unitDisplay:"short",maximumFractionDigits:1}).format(milliseconds/1e3)}projectionLimitText(){return this.localize("spanProjectionLimit",void 0,{count:getNumberFormat(this.effectiveLocale).format(MAX_RENDERED_LYRA_SPANS)})}focusRow(span){if(!span)return;const previous=this.renderRoot.querySelector('[part="bar"][tabindex="0"]');this.focusedId=span.id,this.announceFocus(span),previous?.setAttribute("tabindex","-1");const next=this.renderedBarById(span.id);next?.setAttribute("tabindex","0"),next?.focus()}announceFocus(span){const parts=[span.name,this.localize(KIND_LABEL_KEY[span.kind]),this.localize(STATUS_LABEL_KEY[span.status]),this.localize("spanStartedAtOffset",void 0,{value:this.formatDuration(span.startMs)||this.localize("durationMilliseconds",void 0,{value:0})})];span.endMs!=null&&parts.push(this.formatDuration(span.endMs-span.startMs)),this.liveRegion?.announce(parts.join(this.localize("accessibleLabelSeparator")),{force:!0})}selectRow(id){this.focusedId=id,this.emit("lr-span-select",{spanId:id})}willUpdate(changed){if(super.willUpdate(changed),(changed.has("spans")||changed.has("activeSpanId"))&&(this.sortedSource=void 0),changed.has("spans")||changed.has("viewStartMs")||changed.has("viewEndMs")||changed.has("activeSpanId")){const view=this.viewWindow(),ids=new Set(this.sortedSpans().filter(span=>this.barGeometry(span,view).visible).map(span=>span.id));(this.focusedId==null||!ids.has(this.focusedId))&&(this.focusedId=this.activeSpanId&&ids.has(this.activeSpanId)?this.activeSpanId:this.sortedSpans()[0]?.id??null),this.focusedId!==null&&!ids.has(this.focusedId)&&(this.focusedId=this.sortedSpans().find(span=>ids.has(span.id))?.id??null),changed.has("activeSpanId")&&this.activeSpanId&&ids.has(this.activeSpanId)&&(this.focusedId=this.activeSpanId)}}renderedBarById(id){const ownerCss=this.ownerDocument.defaultView?.CSS;return typeof ownerCss?.escape=="function"?this.renderRoot.querySelector(`[data-id="${ownerCss.escape(id)}"]`):Array.from(this.renderRoot.querySelectorAll("[data-id]")).find(element=>element.dataset.id===id)??null}updated(changed){if(super.updated(changed),changed.has("activeSpanId")&&this.activeSpanId){const bar=this.renderedBarById(this.activeSpanId);if(bar&&!bar.hidden){const ownerWindow=bar.ownerDocument.defaultView,reducedMotion=!ownerWindow||prefersReducedMotion(ownerWindow);bar.scrollIntoView({block:"nearest",behavior:reducedMotion?"auto":"smooth"})}}this.limitAnnouncementInitialized&&this.sortedCacheTruncated&&!this.previouslyTruncated&&this.limitAnnouncementSink?.announce(this.projectionLimitText()),this.limitAnnouncementInitialized=!0,this.previouslyTruncated=this.sortedCacheTruncated}renderAxis(view){const ticks=axisTicks(view.start,view.end);return html`
|
|
2
2
|
<div part="axis" aria-hidden="true">
|
|
3
3
|
${ticks.map(t=>{const pct=finiteRatio(t,view.start,view.end)*100;return pct<0||pct>100?nothing:html`<span
|
|
4
4
|
part="tick"
|
|
@@ -21,7 +21,7 @@ var __decorate=function(decorators,target,key,desc){var c=arguments.length,r=c<3
|
|
|
21
21
|
tabindex=${tabbable?"0":"-1"}
|
|
22
22
|
aria-current=${isActive?"true":"false"}
|
|
23
23
|
aria-label=${fragments.join(this.localize("accessibleLabelSeparator"))}
|
|
24
|
-
style=${
|
|
24
|
+
style=${`--_lr-span-waterfall-start:${startPct}%;--_lr-span-waterfall-width:${widthPct}%`}
|
|
25
25
|
@click=${()=>this.selectRow(span.id)}
|
|
26
26
|
@focus=${()=>{this.focusedId=span.id}}
|
|
27
27
|
></button>
|
|
@@ -41,6 +41,6 @@ var __decorate=function(decorators,target,key,desc){var c=arguments.length,r=c<3
|
|
|
41
41
|
${!this.hideAxis&&rows.length>0?this.renderAxis(view):nothing}
|
|
42
42
|
${rows.length===0?html`<lr-empty part="empty" heading=${this.localize("noData")}></lr-empty>`:rows.map((span,index)=>this.renderRow(span,view,index+1,rows.length,firstId))}
|
|
43
43
|
</div>
|
|
44
|
-
${this.sortedCacheTruncated?html`<p part="limit" role="note">${this.
|
|
44
|
+
${this.sortedCacheTruncated?html`<p part="limit" role="note">${this.projectionLimitText()}</p>`:nothing}
|
|
45
45
|
<lr-live-region part="live-region" mode="polite"></lr-live-region>
|
|
46
46
|
`}}__decorate([property({attribute:!1})],LyraSpanWaterfall.prototype,"spans",void 0),__decorate([property({attribute:"active-span-id"})],LyraSpanWaterfall.prototype,"activeSpanId",void 0),__decorate([property({type:Number,attribute:"view-start-ms"})],LyraSpanWaterfall.prototype,"viewStartMs",void 0),__decorate([property({type:Number,attribute:"view-end-ms"})],LyraSpanWaterfall.prototype,"viewEndMs",void 0),__decorate([property({type:Boolean,attribute:"hide-axis"})],LyraSpanWaterfall.prototype,"hideAxis",void 0),__decorate([property()],LyraSpanWaterfall.prototype,"label",void 0),__decorate([query("lr-live-region")],LyraSpanWaterfall.prototype,"liveRegion",void 0);export{LyraSpanWaterfall};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{css}from"lit";const styles=css`:host{contain-intrinsic-inline-size:var(--lr-size-20rem);--_lr-span-waterfall-name-width:var(--lr-size-8rem);display:block;container-type:inline-size}[part=base]{font-size:var(--lr-font-size-sm);color:var(--lr-color-text);flex-direction:column;display:flex}[part=axis]{block-size:var(--lr-size-1-25rem);border-block-end:var(--lr-border-width-thin) solid var(--lr-color-border);margin-inline-start:calc(var(--lr-span-waterfall-name-width,var(--_lr-span-waterfall-name-width)) + var(--lr-space-xs));position:relative;overflow:hidden}[part=tick]{border-inline-start:var(--lr-border-width-thin) solid var(--lr-color-border);position:absolute;inset-block:0}[part=tick-label]{font-size:var(--lr-font-size-2xs);color:var(--lr-color-text-quiet);white-space:nowrap;position:absolute;inset-inline-start:var(--lr-space-xs)}[part=tick][data-edge=end] [part=tick-label]{inset-inline-start:auto;inset-inline-end:var(--lr-space-xs)}[part=row]{grid-template-columns:var(--lr-span-waterfall-name-width,var(--_lr-span-waterfall-name-width)) 1fr;align-items:center;gap:var(--lr-space-xs);padding-block:var(--lr-space-2xs);min-block-size:var(--lr-size-1-75rem);display:grid}[part=row][data-active]{background:var(--lr-span-waterfall-row-active-bg,var(--lr-color-brand-quiet))}[part=name]{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}[part=bar-track]{block-size:var(--lr-
|
|
1
|
+
import{css}from"lit";const styles=css`:host{contain-intrinsic-inline-size:var(--lr-size-20rem);--_lr-span-waterfall-name-width:var(--lr-size-8rem);display:block;container-type:inline-size}[part=base]{font-size:var(--lr-font-size-sm);color:var(--lr-color-text);flex-direction:column;display:flex}[part=axis]{block-size:var(--lr-size-1-25rem);border-block-end:var(--lr-border-width-thin) solid var(--lr-color-border);margin-inline-start:calc(var(--lr-span-waterfall-name-width,var(--_lr-span-waterfall-name-width)) + var(--lr-space-xs));position:relative;overflow:hidden}[part=tick]{border-inline-start:var(--lr-border-width-thin) solid var(--lr-color-border);position:absolute;inset-block:0}[part=tick-label]{font-size:var(--lr-font-size-2xs);color:var(--lr-color-text-quiet);white-space:nowrap;position:absolute;inset-inline-start:var(--lr-space-xs)}[part=tick][data-edge=end] [part=tick-label]{inset-inline-start:auto;inset-inline-end:var(--lr-space-xs)}[part=row]{grid-template-columns:var(--lr-span-waterfall-name-width,var(--_lr-span-waterfall-name-width)) 1fr;align-items:center;gap:var(--lr-space-xs);padding-block:var(--lr-space-2xs);min-block-size:var(--lr-size-1-75rem);display:grid}[part=row][data-active]{background:var(--lr-span-waterfall-row-active-bg,var(--lr-color-brand-quiet))}[part=name]{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}[part=bar-track]{block-size:var(--lr-icon-button-size);position:relative}[part=bar]{--_lr-span-waterfall-target-width:min(100%, max(var(--_lr-span-waterfall-width), var(--lr-icon-button-size)));min-inline-size:var(--lr-icon-button-size);min-block-size:var(--lr-icon-button-size);inline-size:var(--_lr-span-waterfall-target-width);border-radius:var(--lr-radius-xs);cursor:pointer;border:none;padding:0;position:absolute;inset-block:0;inset-inline-start:min(var(--_lr-span-waterfall-start), calc(100% - var(--_lr-span-waterfall-target-width)))}[part=bar][hidden]{display:none}[part=bar]:after{content:"";border-radius:inherit;pointer-events:none;background:0 0;position:absolute;inset:0}[part=bar]:hover:after{background:color-mix(in oklab, transparent, var(--lr-color-mix-partner) var(--lr-color-mix-hover))}[part=bar]:active:after{background:color-mix(in oklab, transparent, var(--lr-color-mix-partner) var(--lr-color-mix-active))}[part=bar]:focus-visible{outline:var(--lr-focus-ring-width) solid var(--lr-focus-ring-color);outline-offset:var(--lr-focus-ring-offset)}[part=bar][data-tone=success]{background:var(--lr-span-waterfall-success-color,var(--lr-color-success))}[part=bar][data-tone=danger]{background:var(--lr-span-waterfall-error-color,var(--lr-color-danger))}[part=bar][data-tone=warning]{background:var(--lr-span-waterfall-denied-color,var(--lr-color-warning))}[part=bar][data-tone=accent]{background-image:repeating-linear-gradient(45deg, var(--lr-span-waterfall-running-color,var(--lr-color-brand)) 0 var(--lr-size-6px), var(--lr-span-waterfall-running-stripe-color,var(--lr-color-brand-quiet)) var(--lr-size-6px) calc(var(--lr-size-6px) * 2));animation:lr-span-waterfall-stripe var(--lr-span-waterfall-stripe-speed,var(--lr-duration-ambient)) linear infinite;background-size:200% 100%}[part=bar][data-tone=neutral]{border:var(--lr-border-width-thin) dashed var(--lr-span-waterfall-pending-border-color,var(--lr-color-border-strong));background:0 0}:host(:dir(rtl)) [part=bar][data-tone=accent]{animation-direction:reverse}@media (prefers-reduced-motion:reduce){[part=bar][data-tone=accent]{animation:none}}@keyframes lr-span-waterfall-stripe{to{background-position:calc(var(--lr-size-24px) * -1) 0}}[part=meta]{display:none}[part=status-text],[part=duration]{font-size:var(--lr-font-size-xs);color:var(--lr-color-text-quiet)}[part=empty]{padding:var(--lr-space-l)}[part=limit]{margin:var(--lr-space-s) 0 0;color:var(--lr-color-text-quiet);font-size:var(--lr-font-size-xs)}@container (inline-size<=479.98px){[part=axis]{margin-inline-start:0}[part=row]{grid-template-columns:1fr}[part=meta]{gap:var(--lr-space-s);display:flex}}`;export{styles};
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
const DEFAULT_INTERNAL_PATTERNS=Object.freeze(["node_modules/","node:internal","(native)","site-packages/","dist-packages/","/usr/lib/python"]),STACK_TRACE_LIMITS=Object.freeze({bytes:256*1024,lines:4e3,groups:64,frames:2e3,lineCharacters:8192}),V8_FRAME_PREFIX=/^\s*at\s+(?:async\s+)?(?:new\s+)?/,DIGITS_RE=/^\d+$/,JS_CAUSE=/^\s*(?:Caused by:|\[cause\]:)(.*)$/,PYTHON_HEADER=/^Traceback \(most recent call last\):\s*$/,PYTHON_FRAME=/^\s*File \x22([^\x22]+)\x22, line ([^,]*), in (.+)$/,PYTHON_CHAIN_SEPARATOR
|
|
2
|
-
`).trim(),groups.push(current)};for(const line of lines){const causeMatch=JS_CAUSE.exec(line);if(causeMatch){flush(),current={message:"",frames:[]},messageLines=[causeMatch[1]],sawFrame=!1;continue}const withFn=matchV8FrameWithFn(line),bare=withFn?null:matchV8BareFrame(line),firefox=!withFn&&!bare?matchFirefoxFrame(line):null;if(withFn){const{fn,file,line:ln,col}=withFn,frame=makeFrame(line,file,ln,col,fn,internalPatterns);current.frames.push(frame),sawFrame||=frame.file!==void 0}else if(bare){const frame=makeFrame(line,bare.file,bare.line,bare.col,void 0,internalPatterns);current.frames.push(frame),sawFrame||=frame.file!==void 0}else if(firefox){const frame=makeFrame(line,firefox.file,firefox.line,firefox.col,firefox.fn,internalPatterns);current.frames.push(frame),sawFrame||=frame.file!==void 0}else sawFrame&&line.trim()!==""?current.frames.push({internal:!1,raw:line}):sawFrame||messageLines.push(line)}return flush(),groups.reduce((n,g)=>n+g.frames.filter(f=>f.file!==void 0).length,0)>0?groups:[]}function parsePython(lines,internalPatterns){const groups=[];let current=null,i=0;for(;i<lines.length;){const line=lines[i];if(PYTHON_HEADER.test(line)){current={frames:[],trailerLines:[]},groups.push(current),i++;continue}if(PYTHON_CHAIN_SEPARATOR.test(line)){i++;continue}const frameMatch=PYTHON_FRAME.exec(line);if(frameMatch&¤t){const[,file,ln,fn]=frameMatch,frame=makeFrame(line,file,ln,void 0,fn.trimEnd(),internalPatterns);current.frames.push(frame),i++;const maybeSource=lines[i];maybeSource!==void 0&&maybeSource.trim()!==""&&!PYTHON_FRAME.test(maybeSource)&&!PYTHON_HEADER.test(maybeSource)&&!PYTHON_CHAIN_SEPARATOR.test(maybeSource)&&!PYTHON_EXC_TRAILER.test(maybeSource)&&(frame.raw+=`
|
|
3
|
-
${maybeSource}`,i++);continue}current&¤t.trailerLines.push(line),i++}const parsedGroups=groups.filter(g=>g.frames.length>0||g.trailerLines.some(l=>l.trim()!=="")).map(g=>({message:g.trailerLines.join(`
|
|
1
|
+
const DEFAULT_INTERNAL_PATTERNS=Object.freeze(["node_modules/","node:internal","(native)","site-packages/","dist-packages/","/usr/lib/python"]),STACK_TRACE_LIMITS=Object.freeze({bytes:256*1024,lines:4e3,groups:64,frames:2e3,lineCharacters:8192}),V8_FRAME_PREFIX=/^\s*at\s+(?:async\s+)?(?:new\s+)?/,DIGITS_RE=/^\d+$/,JS_CAUSE=/^\s*(?:Caused by:|\[cause\]:)(.*)$/,PYTHON_HEADER=/^Traceback \(most recent call last\):\s*$/,PYTHON_FRAME=/^\s*File \x22([^\x22]+)\x22, line ([^,]*), in (.+)$/,PYTHON_CHAIN_SEPARATOR=/^(?:The above exception was the direct cause of the following exception:|During handling of the above exception, another exception occurred:)\s*$/,PYTHON_EMPTY_TRAILER=/^(?:[A-Za-z_][A-Za-z0-9_]*)(?:\.[A-Za-z_][A-Za-z0-9_]*)*:?\s*$/,PYTHON_EXC_TRAILER=/^\S+:\s/;function parseSafeLocation(lineToken,columnToken){const line=DIGITS_RE.test(lineToken)?Number(lineToken):Number.NaN;if(!Number.isSafeInteger(line))return null;if(columnToken===void 0)return{line};const column=DIGITS_RE.test(columnToken)?Number(columnToken):Number.NaN;return Number.isSafeInteger(column)?{line,column}:null}function matchV8FrameWithFn(line){const prefixMatch=V8_FRAME_PREFIX.exec(line);if(!prefixMatch)return null;const rest=line.slice(prefixMatch[0].length).trimEnd(),openParen=rest.length>1&&rest.endsWith(")")?rest.lastIndexOf("("):-1;if(openParen<=0||rest[openParen-1]!==" ")return null;const fn=rest.slice(0,openParen-1),inner=rest.slice(openParen+1,-1),lastColon=inner.lastIndexOf(":"),secondLastColon=lastColon===-1?-1:inner.lastIndexOf(":",lastColon-1);if(fn.length===0||secondLastColon===-1)return null;const file=inner.slice(0,secondLastColon),lineStr=inner.slice(secondLastColon+1,lastColon),col=inner.slice(lastColon+1);return file?{fn,file,line:lineStr,col}:null}function matchV8BareFrame(line){const prefixMatch=V8_FRAME_PREFIX.exec(line);if(!prefixMatch)return null;const rest=line.slice(prefixMatch[0].length).trimEnd(),lastColon=rest.lastIndexOf(":"),secondLastColon=lastColon===-1?-1:rest.lastIndexOf(":",lastColon-1);if(secondLastColon===-1)return null;const file=rest.slice(0,secondLastColon);return file?{file,line:rest.slice(secondLastColon+1,lastColon),col:rest.slice(lastColon+1)}:null}function matchFirefoxFrame(line){const at=line.indexOf("@");if(at===-1)return null;const fn=line.slice(0,at);if(/\s/.test(fn))return null;const rest=line.slice(at+1),lastColon=rest.lastIndexOf(":"),secondLastColon=lastColon===-1?-1:rest.lastIndexOf(":",lastColon-1);if(secondLastColon===-1)return null;const file=rest.slice(0,secondLastColon);return file?{...fn?{fn}:{},file,line:rest.slice(secondLastColon+1,lastColon),col:rest.slice(lastColon+1)}:null}function isInternal(file,patterns){return file?patterns.some(pattern=>typeof pattern=="string"?file.includes(pattern):new RegExp(pattern.source,pattern.flags.replace(/[gy]/g,"")).test(file)):!1}function makeFrame(raw,file,lineToken,columnToken,functionName,internalPatterns){const location=parseSafeLocation(lineToken,columnToken);return location?{...functionName?{functionName}:{},file,...location,internal:isInternal(file,internalPatterns),raw}:{internal:!1,raw}}function parseJs(lines,internalPatterns){const groups=[];let current={message:"",frames:[]},messageLines=[],sawFrame=!1;const flush=()=>{current.message=messageLines.join(`
|
|
2
|
+
`).trim(),groups.push(current)};for(const line of lines){const causeMatch=JS_CAUSE.exec(line);if(causeMatch){flush(),current={message:"",frames:[]},messageLines=[causeMatch[1]],sawFrame=!1;continue}const withFn=matchV8FrameWithFn(line),bare=withFn?null:matchV8BareFrame(line),firefox=!withFn&&!bare?matchFirefoxFrame(line):null;if(withFn){const{fn,file,line:ln,col}=withFn,frame=makeFrame(line,file,ln,col,fn,internalPatterns);current.frames.push(frame),sawFrame||=frame.file!==void 0}else if(bare){const frame=makeFrame(line,bare.file,bare.line,bare.col,void 0,internalPatterns);current.frames.push(frame),sawFrame||=frame.file!==void 0}else if(firefox){const frame=makeFrame(line,firefox.file,firefox.line,firefox.col,firefox.fn,internalPatterns);current.frames.push(frame),sawFrame||=frame.file!==void 0}else sawFrame&&line.trim()!==""?current.frames.push({internal:!1,raw:line}):sawFrame||messageLines.push(line)}return flush(),groups.reduce((n,g)=>n+g.frames.filter(f=>f.file!==void 0).length,0)>0?groups:[]}function parsePython(lines,internalPatterns){const groups=[];let current=null,i=0;for(;i<lines.length;){const line=lines[i];if(PYTHON_HEADER.test(line)){current={frames:[],trailerLines:[]},groups.push(current),i++;continue}if(PYTHON_CHAIN_SEPARATOR.test(line)){i++;continue}const frameMatch=PYTHON_FRAME.exec(line);if(frameMatch&¤t){const[,file,ln,fn]=frameMatch,frame=makeFrame(line,file,ln,void 0,fn.trimEnd(),internalPatterns);current.frames.push(frame),i++;const maybeSource=lines[i];maybeSource!==void 0&&maybeSource.trim()!==""&&!PYTHON_FRAME.test(maybeSource)&&!PYTHON_HEADER.test(maybeSource)&&!PYTHON_CHAIN_SEPARATOR.test(maybeSource)&&!PYTHON_EXC_TRAILER.test(maybeSource)&&!PYTHON_EMPTY_TRAILER.test(maybeSource)&&(frame.raw+=`
|
|
3
|
+
${maybeSource}`,i++);continue}current&¤t.trailerLines.push(line),i++}const parsedGroups=groups.filter(g=>g.frames.length>0||g.trailerLines.some(l=>l.trim()!=="")).map(g=>({message:g.trailerLines.filter(line=>line.trim()!=="").length===1&&PYTHON_EMPTY_TRAILER.test(g.trailerLines.find(line=>line.trim()!=="")??"")?"":g.trailerLines.join(`
|
|
4
4
|
`).trim(),frames:[...g.frames].reverse()}));return parsedGroups.reduce((n,group)=>n+group.frames.filter(frame=>frame.file!==void 0).length,0)>0?parsedGroups:[]}function utf8Prefix(value,byteLimit){let bytes=0,index=0;for(;index<value.length;){const first=value.charCodeAt(index);let width=first<128?1:first<2048?2:3,units=1;if(first>=55296&&first<=56319&&index+1<value.length){const second=value.charCodeAt(index+1);second>=56320&&second<=57343&&(width=4,units=2)}if(bytes+width>byteLimit)break;bytes+=width,index+=units}return{source:value.slice(0,index),truncated:index<value.length}}function boundedLines(trace){const byteBound=utf8Prefix(trace,STACK_TRACE_LIMITS.bytes),split=byteBound.source.split(/\r\n|\r|\n/,STACK_TRACE_LIMITS.lines+1);let truncated=byteBound.truncated||split.length>STACK_TRACE_LIMITS.lines;const lines=split.slice(0,STACK_TRACE_LIMITS.lines).map(line=>line.length<=STACK_TRACE_LIMITS.lineCharacters?line:(truncated=!0,line.slice(0,STACK_TRACE_LIMITS.lineCharacters)));return{source:lines.join(`
|
|
5
5
|
`),lines,truncated}}function boundedGroups(groups){let remainingFrames=STACK_TRACE_LIMITS.frames,truncated=groups.length>STACK_TRACE_LIMITS.groups;const bounded=[];for(const group of groups.slice(0,STACK_TRACE_LIMITS.groups)){const frames=group.frames.slice(0,remainingFrames);if(frames.length<group.frames.length&&(truncated=!0),bounded.push({message:group.message,frames}),remainingFrames-=frames.length,remainingFrames===0){bounded.length<groups.length&&(truncated=!0);break}}return{groups:bounded,truncated}}function parseStackTrace(trace,options={}){const bounded=boundedLines(trace),parsed=bounded.lines.some(line=>PYTHON_HEADER.test(line))?parsePython(bounded.lines,options.internalPatterns??DEFAULT_INTERNAL_PATTERNS):parseJs(bounded.lines,options.internalPatterns??DEFAULT_INTERNAL_PATTERNS),limited=boundedGroups(parsed);return{groups:limited.groups,truncated:bounded.truncated||limited.truncated,source:bounded.source}}export{DEFAULT_INTERNAL_PATTERNS,STACK_TRACE_LIMITS,parseStackTrace};
|
|
@@ -47,7 +47,7 @@ export type StackTraceAppearance=LyraFrame;export interface LyraStackTraceEventM
|
|
|
47
47
|
* @since 4.0.0
|
|
48
48
|
*/
|
|
49
49
|
export declare class LyraStackTrace extends LyraElement<LyraStackTraceEventMap>{static styles:import("lit").CSSResultGroup[];
|
|
50
|
-
/** The raw stack trace text to parse and render. */
|
|
50
|
+
/** The raw stack trace text to parse and render. Removing the attribute clears its displayed text. */
|
|
51
51
|
trace:string;
|
|
52
52
|
/** Folds runs of internal frames (matching `internalPatterns`) behind a toggle. */
|
|
53
53
|
collapseInternal:boolean;
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
var __decorate=function(decorators,target,key,desc){var c=arguments.length,r=c<3?target:desc===null?desc=Object.getOwnPropertyDescriptor(target,key):desc,d;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")r=Reflect.decorate(decorators,target,key,desc);else for(var i=decorators.length-1;i>=0;i--)(d=decorators[i])&&(r=(c<3?d(r):c>3?d(target,key,r):d(target,key))||r);return c>3&&r&&Object.defineProperty(target,key,r),r};import{html,nothing}from"lit";import{property,state}from"lit/decorators.js";import{LyraElement}from"../../../internal/lyra-element.js";import{styles}from"./stack-trace.styles.js";import{parseStackTrace,DEFAULT_INTERNAL_PATTERNS}from"./stack-trace-parse.js";import{trueDefaultBooleanConverter}from"../../../internal/converters.js";import{getNumberFormat}from"../../../internal/intl-cache.js";import{styleMap}from"lit/directives/style-map.js";import{sanitizeCssLength}from"../../../internal/safe-css.js";import{acquireAnnouncementSink}from"../../../internal/announcer.js";import{hostAriaLabel}from"../../../internal/a11y.js";import{writeClipboardText}from"../../../internal/clipboard.js";import{LYRA_DEFAULT_copied,LYRA_DEFAULT_copy,LYRA_DEFAULT_copyFailed,LYRA_DEFAULT_stackTraceHideFrames,LYRA_DEFAULT_stackTraceLabel,LYRA_DEFAULT_stackTraceLimit,LYRA_DEFAULT_stackTraceShowFrames}from"../../../internal/default-strings.generated.js";const COPY_CONFIRM_MS=1500,MAX_INTERNAL_PATTERNS=1e4;function snapshotInternalPatterns(value){if(!Array.isArray(value))return Object.freeze([]);let length=0;try{const descriptor=Object.getOwnPropertyDescriptor(value,"length");descriptor&&"value"in descriptor&&typeof descriptor.value=="number"&&Number.isSafeInteger(descriptor.value)&&descriptor.value>=0&&(length=Math.min(descriptor.value,MAX_INTERNAL_PATTERNS))}catch{return Object.freeze([])}const patterns=[];for(let index=0;index<length;index+=1)try{const descriptor=Object.getOwnPropertyDescriptor(value,String(index));if(!descriptor||!("value"in descriptor))continue;const pattern=descriptor.value;typeof pattern=="string"?pattern.trim().length>0&&patterns.push(pattern):pattern instanceof RegExp&&patterns.push(new RegExp(pattern.source,pattern.flags))}catch{}return Object.freeze(patterns)}function isSelectableFrame(frame){return typeof frame.file=="string"&&frame.file.length>0&&Number.isSafeInteger(frame.line)&&(frame.column===void 0||Number.isSafeInteger(frame.column))}class LyraStackTrace extends LyraElement{constructor(){super(...arguments),this.trace="",this.collapseInternal=!0,this._internalPatterns=snapshotInternalPatterns(DEFAULT_INTERNAL_PATTERNS),this.copyable=!0,this.frame="card",this.compact=!1,this.maxHeight="",this.groups=[],this.boundedSource="",this.parseTruncated=!1,this.expandedInternalRuns=new Set,this.copyStatus="rest",this.copyGeneration=0,this.limitAnnouncementInitialized=!1,this.previouslyTruncated=!1,this.onCopy=()=>{this.copyTrace()}}static{this.defaultStrings={...super.defaultStrings,copied:LYRA_DEFAULT_copied,copy:LYRA_DEFAULT_copy,copyFailed:LYRA_DEFAULT_copyFailed,stackTraceHideFrames:LYRA_DEFAULT_stackTraceHideFrames,stackTraceLabel:LYRA_DEFAULT_stackTraceLabel,stackTraceLimit:LYRA_DEFAULT_stackTraceLimit,stackTraceShowFrames:LYRA_DEFAULT_stackTraceShowFrames}}static{this.styles=[LyraElement.styles,styles]}get internalPatterns(){return this._internalPatterns}set internalPatterns(value){const previous=this._internalPatterns;this._internalPatterns=snapshotInternalPatterns(value),this.requestUpdate("internalPatterns",previous)}connectedCallback(){super.connectedCallback(),this.syncLimitAnnouncementSink(),this.limitAnnouncementInitialized=this.hasUpdated,this.previouslyTruncated=this.parseTruncated}disconnectedCallback(){this.limitAnnouncementSink?.release(),this.limitAnnouncementSink=void 0,this.resetCopyFeedback(),super.disconnectedCallback()}adoptedCallback(){super.adoptedCallback(),this.resetCopyFeedback(),this.limitAnnouncementSink?.release(),this.limitAnnouncementSink=void 0,this.syncLimitAnnouncementSink()}syncLimitAnnouncementSink(){!this.isConnected||this.limitAnnouncementSink?.element.ownerDocument===this.ownerDocument||(this.limitAnnouncementSink?.release(),this.limitAnnouncementSink=acquireAnnouncementSink("polite",{document:this.ownerDocument,source:this}))}cancelCopyTimer(){const timer=this.copyTimer;this.copyTimer=void 0,timer&&timer.owner.clearTimeout(timer.handle)}resetCopyFeedback(){this.copyGeneration+=1,this.cancelCopyTimer(),this.copyStatus="rest"}willUpdate(changed){if(super.willUpdate(changed),changed.has("trace")||changed.has("internalPatterns")){const result=parseStackTrace(this.trace,{internalPatterns:this.internalPatterns});this.groups=result.groups,this.boundedSource=result.source,this.parseTruncated=result.truncated,this.expandedInternalRuns=new Set}}updated(changed){super.updated(changed),this.limitAnnouncementInitialized&&this.parseTruncated&&!this.previouslyTruncated&&this.limitAnnouncementSink?.announce(this.localize("stackTraceLimit")),this.limitAnnouncementInitialized=!0,this.previouslyTruncated=this.parseTruncated}async copyTrace(){const text=this.trace,owner=this.isConnected?this.ownerDocument.defaultView:null,generation=++this.copyGeneration;this.cancelCopyTimer(),this.copyStatus="rest";const outcome=await writeClipboardText(owner,text);if(!(!owner||!this.isCurrentCopy(generation,owner))){if(!outcome.ok){this.showCopyStatus("error",generation,owner),this.emit("lr-error"),this.emit("lr-copy-error",outcome);return}this.showCopyStatus("success",generation,owner),this.emit("lr-copy",outcome)}}isCurrentCopy(generation,owner){return this.isConnected&&generation===this.copyGeneration&&this.ownerDocument.defaultView===owner}showCopyStatus(status,generation,owner){this.copyStatus=status,this.cancelCopyTimer();let handle=0;handle=owner.setTimeout(()=>{this.copyTimer?.owner!==owner||this.copyTimer.handle!==handle||this.copyTimer.generation!==generation||generation!==this.copyGeneration||!this.isConnected||this.ownerDocument.defaultView!==owner||(this.copyTimer=void 0,this.copyStatus="rest")},COPY_CONFIRM_MS),this.copyTimer={owner,handle,generation}}onFrameClick(frame){isSelectableFrame(frame)&&this.emit("lr-frame-select",{file:frame.file,line:frame.line,column:frame.column,raw:frame.raw})}toggleInternalRun(runKey){const next=new Set(this.expandedInternalRuns);next.has(runKey)?next.delete(runKey):next.add(runKey),this.expandedInternalRuns=next}renderFrame(frame){if(!isSelectableFrame(frame))return html`<span part="frame" data-raw dir="ltr">${frame.raw}</span>`;const location=`${frame.file}:${frame.line}${frame.column!==void 0?`:${frame.column}`:""}`;return html`
|
|
1
|
+
var __decorate=function(decorators,target,key,desc){var c=arguments.length,r=c<3?target:desc===null?desc=Object.getOwnPropertyDescriptor(target,key):desc,d;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")r=Reflect.decorate(decorators,target,key,desc);else for(var i=decorators.length-1;i>=0;i--)(d=decorators[i])&&(r=(c<3?d(r):c>3?d(target,key,r):d(target,key))||r);return c>3&&r&&Object.defineProperty(target,key,r),r};import{html,nothing}from"lit";import{property,state}from"lit/decorators.js";import{LyraElement}from"../../../internal/lyra-element.js";import{styles}from"./stack-trace.styles.js";import{parseStackTrace,DEFAULT_INTERNAL_PATTERNS}from"./stack-trace-parse.js";import{trueDefaultBooleanConverter}from"../../../internal/converters.js";import{getNumberFormat}from"../../../internal/intl-cache.js";import{styleMap}from"lit/directives/style-map.js";import{sanitizeCssLength}from"../../../internal/safe-css.js";import{acquireAnnouncementSink}from"../../../internal/announcer.js";import{hostAriaLabel}from"../../../internal/a11y.js";import{writeClipboardText}from"../../../internal/clipboard.js";import{LYRA_DEFAULT_copied,LYRA_DEFAULT_copy,LYRA_DEFAULT_copyFailed,LYRA_DEFAULT_stackTraceHideFrames,LYRA_DEFAULT_stackTraceLabel,LYRA_DEFAULT_stackTraceLimit,LYRA_DEFAULT_stackTraceShowFrames}from"../../../internal/default-strings.generated.js";const COPY_CONFIRM_MS=1500,MAX_INTERNAL_PATTERNS=1e4;function snapshotInternalPatterns(value){if(!Array.isArray(value))return Object.freeze([]);let length=0;try{const descriptor=Object.getOwnPropertyDescriptor(value,"length");descriptor&&"value"in descriptor&&typeof descriptor.value=="number"&&Number.isSafeInteger(descriptor.value)&&descriptor.value>=0&&(length=Math.min(descriptor.value,MAX_INTERNAL_PATTERNS))}catch{return Object.freeze([])}const patterns=[];for(let index=0;index<length;index+=1)try{const descriptor=Object.getOwnPropertyDescriptor(value,String(index));if(!descriptor||!("value"in descriptor))continue;const pattern=descriptor.value;typeof pattern=="string"?pattern.trim().length>0&&patterns.push(pattern):pattern instanceof RegExp&&patterns.push(new RegExp(pattern.source,pattern.flags))}catch{}return Object.freeze(patterns)}function isSelectableFrame(frame){return typeof frame.file=="string"&&frame.file.length>0&&Number.isSafeInteger(frame.line)&&(frame.column===void 0||Number.isSafeInteger(frame.column))}class LyraStackTrace extends LyraElement{constructor(){super(...arguments),this.trace="",this.collapseInternal=!0,this._internalPatterns=snapshotInternalPatterns(DEFAULT_INTERNAL_PATTERNS),this.copyable=!0,this.frame="card",this.compact=!1,this.maxHeight="",this.groups=[],this.boundedSource="",this.parseTruncated=!1,this.expandedInternalRuns=new Set,this.copyStatus="rest",this.copyGeneration=0,this.limitAnnouncementInitialized=!1,this.previouslyTruncated=!1,this.onCopy=()=>{this.copyTrace()}}static{this.defaultStrings={...super.defaultStrings,copied:LYRA_DEFAULT_copied,copy:LYRA_DEFAULT_copy,copyFailed:LYRA_DEFAULT_copyFailed,stackTraceHideFrames:LYRA_DEFAULT_stackTraceHideFrames,stackTraceLabel:LYRA_DEFAULT_stackTraceLabel,stackTraceLimit:LYRA_DEFAULT_stackTraceLimit,stackTraceShowFrames:LYRA_DEFAULT_stackTraceShowFrames}}static{this.styles=[LyraElement.styles,styles]}get internalPatterns(){return this._internalPatterns}set internalPatterns(value){const previous=this._internalPatterns;this._internalPatterns=snapshotInternalPatterns(value),this.requestUpdate("internalPatterns",previous)}connectedCallback(){super.connectedCallback(),this.syncLimitAnnouncementSink(),this.limitAnnouncementInitialized=this.hasUpdated,this.previouslyTruncated=this.parseTruncated}disconnectedCallback(){this.limitAnnouncementSink?.release(),this.limitAnnouncementSink=void 0,this.resetCopyFeedback(),super.disconnectedCallback()}adoptedCallback(){super.adoptedCallback(),this.resetCopyFeedback(),this.limitAnnouncementSink?.release(),this.limitAnnouncementSink=void 0,this.syncLimitAnnouncementSink()}syncLimitAnnouncementSink(){!this.isConnected||this.limitAnnouncementSink?.element.ownerDocument===this.ownerDocument||(this.limitAnnouncementSink?.release(),this.limitAnnouncementSink=acquireAnnouncementSink("polite",{document:this.ownerDocument,source:this}))}cancelCopyTimer(){const timer=this.copyTimer;this.copyTimer=void 0,timer&&timer.owner.clearTimeout(timer.handle)}resetCopyFeedback(){this.copyGeneration+=1,this.cancelCopyTimer(),this.copyStatus="rest"}willUpdate(changed){if(super.willUpdate(changed),changed.has("trace")||changed.has("internalPatterns")){const result=parseStackTrace(this.trace??"",{internalPatterns:this.internalPatterns});this.groups=result.groups,this.boundedSource=result.source,this.parseTruncated=result.truncated,this.expandedInternalRuns=new Set}}updated(changed){super.updated(changed),this.limitAnnouncementInitialized&&this.parseTruncated&&!this.previouslyTruncated&&this.limitAnnouncementSink?.announce(this.localize("stackTraceLimit")),this.limitAnnouncementInitialized=!0,this.previouslyTruncated=this.parseTruncated}async copyTrace(){const text=this.trace??"",owner=this.isConnected?this.ownerDocument.defaultView:null,generation=++this.copyGeneration;this.cancelCopyTimer(),this.copyStatus="rest";const outcome=await writeClipboardText(owner,text);if(!(!owner||!this.isCurrentCopy(generation,owner))){if(!outcome.ok){this.showCopyStatus("error",generation,owner),this.emit("lr-error"),this.emit("lr-copy-error",outcome);return}this.showCopyStatus("success",generation,owner),this.emit("lr-copy",outcome)}}isCurrentCopy(generation,owner){return this.isConnected&&generation===this.copyGeneration&&this.ownerDocument.defaultView===owner}showCopyStatus(status,generation,owner){this.copyStatus=status,this.cancelCopyTimer();let handle=0;handle=owner.setTimeout(()=>{this.copyTimer?.owner!==owner||this.copyTimer.handle!==handle||this.copyTimer.generation!==generation||generation!==this.copyGeneration||!this.isConnected||this.ownerDocument.defaultView!==owner||(this.copyTimer=void 0,this.copyStatus="rest")},COPY_CONFIRM_MS),this.copyTimer={owner,handle,generation}}onFrameClick(frame){isSelectableFrame(frame)&&this.emit("lr-frame-select",{file:frame.file,line:frame.line,column:frame.column,raw:frame.raw})}toggleInternalRun(runKey){const next=new Set(this.expandedInternalRuns);next.has(runKey)?next.delete(runKey):next.add(runKey),this.expandedInternalRuns=next}renderFrame(frame){if(!isSelectableFrame(frame))return html`<span part="frame" data-raw dir="ltr">${frame.raw}</span>`;const location=`${frame.file}:${frame.line}${frame.column!==void 0?`:${frame.column}`:""}`;return html`
|
|
2
2
|
<button part="frame" type="button" ?data-internal=${frame.internal} @click=${()=>this.onFrameClick(frame)}>
|
|
3
3
|
${frame.functionName?html`<span part="frame-function">${frame.functionName}</span>`:nothing}
|
|
4
4
|
<span part="frame-location" dir="ltr">${location}</span>
|
|
@@ -48,7 +48,7 @@ var __decorate=function(decorators,target,key,desc){var c=arguments.length,r=c<3
|
|
|
48
48
|
</li>
|
|
49
49
|
`}}static{this.defaultStrings={...super.defaultStrings,agentRunStatusCancelled:LYRA_DEFAULT_agentRunStatusCancelled,agentRunStatusCollecting:LYRA_DEFAULT_agentRunStatusCollecting,agentRunStatusDone:LYRA_DEFAULT_agentRunStatusDone,agentRunStatusIdle:LYRA_DEFAULT_agentRunStatusIdle,agentRunStatusQueued:LYRA_DEFAULT_agentRunStatusQueued,agentRunStatusWaitingApproval:LYRA_DEFAULT_agentRunStatusWaitingApproval,agentRunStatusWaitingInput:LYRA_DEFAULT_agentRunStatusWaitingInput,statusError:LYRA_DEFAULT_statusError,statusRunning:LYRA_DEFAULT_statusRunning,subagentPanelCancelRun:LYRA_DEFAULT_subagentPanelCancelRun,subagentPanelEmpty:LYRA_DEFAULT_subagentPanelEmpty,subagentPanelLabel:LYRA_DEFAULT_subagentPanelLabel,subagentPanelLimit:LYRA_DEFAULT_subagentPanelLimit,subagentPanelRetry:LYRA_DEFAULT_subagentPanelRetry,subagentPanelRetryRun:LYRA_DEFAULT_subagentPanelRetryRun}}static{this.ownedCollectionProperties=Object.freeze(["runs"])}static{this.styles=[LyraElement.styles,styles]}static{this.immutableEventDetails=Object.freeze(["lr-run-activate","lr-cancel","lr-run-retry"])}syncAnnouncementSink(){this.isConnected&&this.announcementSink?.element.ownerDocument!==this.ownerDocument&&(this.announcementSink?.release(),this.announcementSink=acquireAnnouncementSink("polite",{document:this.ownerDocument,source:this}))}connectedCallback(){super.connectedCallback(),this.syncAnnouncementSink(),this.hasUpdated&&(this.suppressNextLimitAnnouncement=!0,this.requestUpdate())}disconnectedCallback(){super.disconnectedCallback(),this.announcementSink?.release(),this.announcementSink=void 0,this.suppressNextLimitAnnouncement=!0}statusLabel(status){switch(status){case"idle":return this.localize("agentRunStatusIdle");case"queued":return this.localize("agentRunStatusQueued");case"running":return this.localize("statusRunning");case"collecting":return this.localize("agentRunStatusCollecting");case"waiting-input":return this.localize("agentRunStatusWaitingInput");case"waiting-approval":return this.localize("agentRunStatusWaitingApproval");case"done":return this.localize("agentRunStatusDone");case"error":return this.localize("statusError");case"cancelled":return this.localize("agentRunStatusCancelled");default:return status}}ordered(){const normalized=[],byId=new Map,runs=firstByIdentity(Array.isArray(this.runs)?this.runs:[],run=>run.id),truncated=runs.length>MAX_RENDERED_RUNS;for(const run of runs.slice(0,MAX_RENDERED_RUNS))normalized.push(run),byId.set(run.id,run);const byParent=new Map,roots=[],hasCyclicParentChain=run=>{const visited2=new Set([run.id]);let parentId=run.parentId;for(;parentId;){if(visited2.has(parentId))return!0;visited2.add(parentId),parentId=byId.get(parentId)?.parentId}return!1};for(const run of normalized){const parent=run.parentId&&byId.has(run.parentId)&&!hasCyclicParentChain(run)?run.parentId:"";byParent.set(parent,[...byParent.get(parent)??[],run]),parent||roots.push(run)}const rows=[],stack=[...roots].reverse().map((run,reverseIndex)=>({run,depth:0,posInSet:roots.length-reverseIndex,setSize:roots.length})),visited=new Set;for(;stack.length>0&&rows.length<MAX_RENDERED_RUNS;){const row=stack.pop();if(!row||visited.has(row.run.id))continue;visited.add(row.run.id),rows.push(row);const children=byParent.get(row.run.id)??[];for(let index=children.length-1;index>=0;index--){const child=children[index];child&&stack.push({run:child,depth:row.depth+1,posInSet:index+1,setSize:children.length})}}return{rows,truncated}}willUpdate(changed){if(super.willUpdate(changed),changed.has("runs")){this.orderedRunsCache=this.ordered();const rows=this.orderedRunsCache.rows,ids=new Set(rows.map(row=>row.run.id));(this.focusedId==null||!ids.has(this.focusedId))&&(this.focusedId=rows[0]?.run.id??null)}}updated(_changed){super.updated(_changed);const limitText=this.renderRoot.querySelector('[part="limit"]')?.textContent?.trim()??"";!this.suppressNextLimitAnnouncement&&limitText&&limitText!==this.previousLimitText&&this.announcementSink?.announce(limitText),this.previousLimitText=limitText,this.suppressNextLimitAnnouncement=!1}runElement(runId){const ownerCss=this.ownerDocument.defaultView?.CSS;if(typeof ownerCss?.escape=="function")try{const candidate=this.renderRoot.querySelector(`[data-run-id="${ownerCss.escape(runId)}"]`);if(candidate?.getAttribute("data-run-id")===runId)return candidate}catch{}return Array.from(this.renderRoot.querySelectorAll("[data-run-id]")).find(candidate=>candidate.getAttribute("data-run-id")===runId)??null}focusRow(row){row&&(this.focusedId=row.run.id,this.updateComplete.then(()=>{this.runElement(row.run.id)?.focus()}))}render(){const label=hostAriaLabel(this)??(this.label==null?this.localize("subagentPanelLabel"):this.label),ordered=this.orderedRunsCache,firstId=ordered.rows[0]?.run.id;return html`
|
|
50
50
|
<div part="base">
|
|
51
|
-
${
|
|
51
|
+
${ordered.rows.length?html`<ul
|
|
52
52
|
part="list"
|
|
53
53
|
role="tree"
|
|
54
54
|
aria-label=${label}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{css}from"lit";const styles=css`:host{contain-intrinsic-inline-size:var(--lr-size-20rem);display:block;container-type:inline-size}[part=list]{gap:var(--lr-space-xs);flex-direction:column;margin:0;padding:0;list-style:none;display:flex}[part~=run]{border:var(--lr-border-width-thin) solid var(--lr-color-border);border-radius:var(--lr-radius);margin-inline-start:calc(var(--lr-subagent-depth,0) * var(--lr-space-l));overflow:hidden}[part~=run-selected]{border-color:var(--lr-subagent-panel-selected-border,var(--lr-color-brand))}[part=run-row]{grid-template-columns:minmax(0,1fr) auto;display:grid}[part=run-trigger]{gap:var(--lr-space-xs);min-inline-size:0;min-block-size:var(--lr-icon-button-size);padding:var(--lr-space-s);background:var(--lr-color-surface);color:var(--lr-color-text);font:inherit;text-align:start;cursor:pointer;border:0;grid-template-columns:minmax(0,1fr) auto;display:grid}[part=run-trigger]:hover,[part=cancel]:hover,[part=retry]:hover{background:var(--lr-color-surface-raised)}[part=run-trigger]:active,[part=cancel]:active,[part=retry]:active{background:color-mix(in oklab, var(--lr-color-surface-raised), var(--lr-color-mix-partner) var(--lr-color-mix-active))}[part=run-trigger]:focus-visible,[part=cancel]:focus-visible,[part=retry]:focus-visible{outline:var(--lr-focus-ring-width) solid var(--lr-focus-ring-color);outline-offset:calc(var(--lr-focus-ring-offset) * -1)}[part=label],[part=task],[part=model]{overflow-wrap:break-word;min-inline-size:0}[part=task],[part=model]{color:var(--lr-color-text-quiet);font-size:var(--lr-font-size-sm);grid-column:1/-1}[part=progress]{block-size:var(--lr-size-0-25rem);border-radius:var(--lr-radius-pill);background:var(--lr-subagent-panel-progress-track,var(--lr-color-border));grid-column:1/-1;overflow:hidden}[part=progress]>span{background:var(--lr-subagent-panel-progress-fill,var(--lr-color-brand));block-size:100%;display:block}[part=actions]{display:flex}[part=cancel],[part=retry]{min-block-size:var(--lr-icon-button-size);min-inline-size:var(--lr-icon-button-size);padding:var(--lr-space-xs);border:0;border-inline-start:var(--lr-border-width-thin) solid var(--lr-color-border);background:var(--lr-color-surface);color:var(--lr-color-text);font:inherit;cursor:pointer}@container (inline-size<=
|
|
1
|
+
import{css}from"lit";const styles=css`:host{contain-intrinsic-inline-size:var(--lr-size-20rem);display:block;container-type:inline-size}[part=list]{gap:var(--lr-space-xs);flex-direction:column;margin:0;padding:0;list-style:none;display:flex}[part~=run]{border:var(--lr-border-width-thin) solid var(--lr-color-border);border-radius:var(--lr-radius);margin-inline-start:calc(var(--lr-subagent-depth,0) * var(--lr-space-l));overflow:hidden}[part~=run-selected]{border-color:var(--lr-subagent-panel-selected-border,var(--lr-color-brand))}[part=run-row]{grid-template-columns:minmax(0,1fr) auto;display:grid}[part=run-trigger]{gap:var(--lr-space-xs);min-inline-size:0;min-block-size:var(--lr-icon-button-size);padding:var(--lr-space-s);background:var(--lr-color-surface);color:var(--lr-color-text);font:inherit;text-align:start;cursor:pointer;border:0;grid-template-columns:minmax(0,1fr) auto;display:grid}[part=run-trigger]:hover,[part=cancel]:hover,[part=retry]:hover{background:var(--lr-color-surface-raised)}[part=run-trigger]:active,[part=cancel]:active,[part=retry]:active{background:color-mix(in oklab, var(--lr-color-surface-raised), var(--lr-color-mix-partner) var(--lr-color-mix-active))}[part=run-trigger]:focus-visible,[part=cancel]:focus-visible,[part=retry]:focus-visible{outline:var(--lr-focus-ring-width) solid var(--lr-focus-ring-color);outline-offset:calc(var(--lr-focus-ring-offset) * -1)}[part=label],[part=task],[part=model]{overflow-wrap:break-word;min-inline-size:0}[part=task],[part=model]{color:var(--lr-color-text-quiet);font-size:var(--lr-font-size-sm);grid-column:1/-1}[part=progress]{block-size:var(--lr-size-0-25rem);border-radius:var(--lr-radius-pill);background:var(--lr-subagent-panel-progress-track,var(--lr-color-border));grid-column:1/-1;overflow:hidden}[part=progress]>span{background:var(--lr-subagent-panel-progress-fill,var(--lr-color-brand));block-size:100%;display:block}[part=actions]{display:flex}[part=cancel],[part=retry]{min-block-size:var(--lr-icon-button-size);min-inline-size:var(--lr-icon-button-size);padding:var(--lr-space-xs);border:0;border-inline-start:var(--lr-border-width-thin) solid var(--lr-color-border);background:var(--lr-color-surface);color:var(--lr-color-text);font:inherit;cursor:pointer}@container (inline-size<=20rem){[part~=run]{margin-inline-start:calc(var(--lr-subagent-depth,0) * var(--lr-space-s))}[part=run-trigger]{grid-template-columns:minmax(0,1fr) minmax(0,1fr)}[part=status]{min-inline-size:0;max-inline-size:100%}[part=run-row]{grid-template-columns:1fr}[part=actions]{border-block-start:var(--lr-border-width-thin) solid var(--lr-color-border)}}`;export{styles};
|
|
@@ -9,8 +9,7 @@ export type TaskListAppearance=LyraFrame;export interface TaskItem{
|
|
|
9
9
|
id:string;label:string;status:TaskStatus;
|
|
10
10
|
/** Optional secondary plain-text line, e.g. an error message or a short progress note. */
|
|
11
11
|
detail?:string;
|
|
12
|
-
/** One level of sub-steps. Deeper nesting (a child's own `children`) is ignored
|
|
13
|
-
* `console.warn`. */
|
|
12
|
+
/** One level of sub-steps. Deeper nesting (a child's own `children`) is ignored. */
|
|
14
13
|
children?:readonly TaskItem[];}export interface TaskListToggleDetail{expanded:boolean;}export interface LyraTaskListEventMap{'lr-toggle':CustomEvent<TaskListToggleDetail>;'lr-reorder':CustomEvent<{taskId:string;parentTaskId:string|null;fromIndex:number;toIndex:number;}>;}
|
|
15
14
|
/** `true`-defaulting boolean attribute converter -- Lit's default presence-based `type: Boolean`
|
|
16
15
|
* can never be set back to `false` from a plain-HTML attribute once the property's own default is
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
var __decorate=function(decorators,target,key,desc){var c=arguments.length,r=c<3?target:desc===null?desc=Object.getOwnPropertyDescriptor(target,key):desc,d;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")r=Reflect.decorate(decorators,target,key,desc);else for(var i=decorators.length-1;i>=0;i--)(d=decorators[i])&&(r=(c<3?d(r):c>3?d(target,key,r):d(target,key))||r);return c>3&&r&&Object.defineProperty(target,key,r),r};import{html,svg,nothing}from"lit";import{repeat}from"lit/directives/repeat.js";import{property,query}from"lit/decorators.js";import{LyraElement}from"../../../internal/lyra-element.js";import{hostAriaLabel,nextId}from"../../../internal/a11y.js";import{activeElementIn}from"../../../internal/active-element.js";import{getNumberFormat}from"../../../internal/intl-cache.js";import{resolveHeadingLevel}from"../../../internal/heading-level.js";import{chevronIcon}from"../../../internal/icons.js";import{styles}from"./task-list.styles.js";import{presenceTrueDefaultBooleanConverter as trueDefaultBooleanConverter}from"../../../internal/converters.js";import{LYRA_DEFAULT_collapse,LYRA_DEFAULT_details,LYRA_DEFAULT_item,LYRA_DEFAULT_items,LYRA_DEFAULT_map,LYRA_DEFAULT_navigation,LYRA_DEFAULT_open,LYRA_DEFAULT_popover,LYRA_DEFAULT_search,LYRA_DEFAULT_select,LYRA_DEFAULT_statusError,LYRA_DEFAULT_statusPending,LYRA_DEFAULT_statusRunning,LYRA_DEFAULT_statusSuccess,LYRA_DEFAULT_taskListCompletedOfTotal,LYRA_DEFAULT_taskListLabel,LYRA_DEFAULT_taskListStepCompletedAnnounce,LYRA_DEFAULT_taskListStepFailedAnnounce,LYRA_DEFAULT_taskListStepStartedAnnounce,LYRA_DEFAULT_treeNodeMoved}from"../../../internal/default-strings.generated.js";function normalizeTaskStatus(value){return value==="running"||value==="success"||value==="error"?value:"pending"}function validTaskItems(value){const items=[];for(const item of Array.isArray(value)?value:[])try{item!==null&&typeof item=="object"&&!Array.isArray(item)&&typeof item.id=="string"&&item.id.trim().length>0&&items.push(item)}catch{}return items}const ICON_VIEW_BOX="0 0 24 24",ICON_STROKE_WIDTH="1.75";function icon(paths){return svg`
|
|
1
|
+
var __decorate=function(decorators,target,key,desc){var c=arguments.length,r=c<3?target:desc===null?desc=Object.getOwnPropertyDescriptor(target,key):desc,d;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")r=Reflect.decorate(decorators,target,key,desc);else for(var i=decorators.length-1;i>=0;i--)(d=decorators[i])&&(r=(c<3?d(r):c>3?d(target,key,r):d(target,key))||r);return c>3&&r&&Object.defineProperty(target,key,r),r};import{html,svg,nothing}from"lit";import{repeat}from"lit/directives/repeat.js";import{property,query}from"lit/decorators.js";import{LyraElement}from"../../../internal/lyra-element.js";import{hostAriaLabel,nextId}from"../../../internal/a11y.js";import{activeElementIn}from"../../../internal/active-element.js";import{devWarnOnce}from"../../../internal/dev-mode-attribute-warning.js";import{getNumberFormat}from"../../../internal/intl-cache.js";import{resolveHeadingLevel}from"../../../internal/heading-level.js";import{chevronIcon}from"../../../internal/icons.js";import{styles}from"./task-list.styles.js";import{presenceTrueDefaultBooleanConverter as trueDefaultBooleanConverter}from"../../../internal/converters.js";import{LYRA_DEFAULT_collapse,LYRA_DEFAULT_details,LYRA_DEFAULT_item,LYRA_DEFAULT_items,LYRA_DEFAULT_map,LYRA_DEFAULT_navigation,LYRA_DEFAULT_open,LYRA_DEFAULT_popover,LYRA_DEFAULT_search,LYRA_DEFAULT_select,LYRA_DEFAULT_statusError,LYRA_DEFAULT_statusPending,LYRA_DEFAULT_statusRunning,LYRA_DEFAULT_statusSuccess,LYRA_DEFAULT_taskListCompletedOfTotal,LYRA_DEFAULT_taskListLabel,LYRA_DEFAULT_taskListStepCompletedAnnounce,LYRA_DEFAULT_taskListStepFailedAnnounce,LYRA_DEFAULT_taskListStepStartedAnnounce,LYRA_DEFAULT_treeNodeMoved}from"../../../internal/default-strings.generated.js";function normalizeTaskStatus(value){return value==="running"||value==="success"||value==="error"?value:"pending"}const DEEP_NESTING_WARNING_KEY="lyra-task-list-nesting-depth",DEEP_NESTING_WARNING="<lr-task-list>: task nesting deeper than one level is ignored.";function validTaskItems(value){const items=[];for(const item of Array.isArray(value)?value:[])try{item!==null&&typeof item=="object"&&!Array.isArray(item)&&typeof item.id=="string"&&item.id.trim().length>0&&items.push(item)}catch{}return items}const ICON_VIEW_BOX="0 0 24 24",ICON_STROKE_WIDTH="1.75";function icon(paths){return svg`
|
|
2
2
|
<svg
|
|
3
3
|
width="1em"
|
|
4
4
|
height="1em"
|
|
@@ -15,7 +15,7 @@ var __decorate=function(decorators,target,key,desc){var c=arguments.length,r=c<3
|
|
|
15
15
|
<circle cx="12" cy="12" r="9"></circle>
|
|
16
16
|
<line x1="9" y1="9" x2="15" y2="15"></line>
|
|
17
17
|
<line x1="15" y1="9" x2="9" y2="15"></line>
|
|
18
|
-
`)}const STATUS_ICON={pending:pendingIcon,running:runningIcon,success:successIcon,error:errorIcon},STATUS_LABEL_KEY={pending:"statusPending",running:"statusRunning",success:"statusSuccess",error:"statusError"};class LyraTaskList extends LyraElement{constructor(){super(...arguments),this.items=[],this.reorderable=!1,this.headingLevel="3",this.expanded=!0,this.collapsible=!0,this.compact=!1,this.frame="card",this.headerId=nextId("task-list-header"),this.bodyId=nextId("task-list-body"),this.isMounting=!0,this.previousStatusById=new Map,this.pendingFocusId=null,this.toggle=()=>{this.collapsible&&(this.expanded=!this.expanded,this.emit("lr-toggle",{expanded:this.expanded}))}}static{this.defaultStrings={...super.defaultStrings,collapse:LYRA_DEFAULT_collapse,details:LYRA_DEFAULT_details,item:LYRA_DEFAULT_item,items:LYRA_DEFAULT_items,map:LYRA_DEFAULT_map,navigation:LYRA_DEFAULT_navigation,open:LYRA_DEFAULT_open,popover:LYRA_DEFAULT_popover,search:LYRA_DEFAULT_search,select:LYRA_DEFAULT_select,statusError:LYRA_DEFAULT_statusError,statusPending:LYRA_DEFAULT_statusPending,statusRunning:LYRA_DEFAULT_statusRunning,statusSuccess:LYRA_DEFAULT_statusSuccess,taskListCompletedOfTotal:LYRA_DEFAULT_taskListCompletedOfTotal,taskListLabel:LYRA_DEFAULT_taskListLabel,taskListStepCompletedAnnounce:LYRA_DEFAULT_taskListStepCompletedAnnounce,taskListStepFailedAnnounce:LYRA_DEFAULT_taskListStepFailedAnnounce,taskListStepStartedAnnounce:LYRA_DEFAULT_taskListStepStartedAnnounce,treeNodeMoved:LYRA_DEFAULT_treeNodeMoved}}static{this.ownedCollectionProperties=Object.freeze(["items"])}static{this.styles=[LyraElement.styles,styles]}willUpdate(changed){if(super.willUpdate(changed),changed.has("reorderable")&&!this.reorderable&&this.clearPendingReorder(),changed.has("items")){for(const item of validTaskItems(this.items))for(const child of validTaskItems(item.children))
|
|
18
|
+
`)}const STATUS_ICON={pending:pendingIcon,running:runningIcon,success:successIcon,error:errorIcon},STATUS_LABEL_KEY={pending:"statusPending",running:"statusRunning",success:"statusSuccess",error:"statusError"};class LyraTaskList extends LyraElement{constructor(){super(...arguments),this.items=[],this.reorderable=!1,this.headingLevel="3",this.expanded=!0,this.collapsible=!0,this.compact=!1,this.frame="card",this.headerId=nextId("task-list-header"),this.bodyId=nextId("task-list-body"),this.isMounting=!0,this.previousStatusById=new Map,this.pendingFocusId=null,this.toggle=()=>{this.collapsible&&(this.expanded=!this.expanded,this.emit("lr-toggle",{expanded:this.expanded}))}}static{this.defaultStrings={...super.defaultStrings,collapse:LYRA_DEFAULT_collapse,details:LYRA_DEFAULT_details,item:LYRA_DEFAULT_item,items:LYRA_DEFAULT_items,map:LYRA_DEFAULT_map,navigation:LYRA_DEFAULT_navigation,open:LYRA_DEFAULT_open,popover:LYRA_DEFAULT_popover,search:LYRA_DEFAULT_search,select:LYRA_DEFAULT_select,statusError:LYRA_DEFAULT_statusError,statusPending:LYRA_DEFAULT_statusPending,statusRunning:LYRA_DEFAULT_statusRunning,statusSuccess:LYRA_DEFAULT_statusSuccess,taskListCompletedOfTotal:LYRA_DEFAULT_taskListCompletedOfTotal,taskListLabel:LYRA_DEFAULT_taskListLabel,taskListStepCompletedAnnounce:LYRA_DEFAULT_taskListStepCompletedAnnounce,taskListStepFailedAnnounce:LYRA_DEFAULT_taskListStepFailedAnnounce,taskListStepStartedAnnounce:LYRA_DEFAULT_taskListStepStartedAnnounce,treeNodeMoved:LYRA_DEFAULT_treeNodeMoved}}static{this.ownedCollectionProperties=Object.freeze(["items"])}static{this.styles=[LyraElement.styles,styles]}willUpdate(changed){if(super.willUpdate(changed),changed.has("reorderable")&&!this.reorderable&&this.clearPendingReorder(),changed.has("items")){for(const item of validTaskItems(this.items))for(const child of validTaskItems(item.children))validTaskItems(child.children).length>0&&devWarnOnce(DEEP_NESTING_WARNING_KEY,DEEP_NESTING_WARNING);this.capturePendingReorderFocus()}}updated(changed){super.updated(changed);const wasMounting=this.isMounting||!this.isConnected;this.isMounting=!this.isConnected,changed.has("items")&&(this.diffAndAnnounce(wasMounting),this.confirmPendingReorder())}disconnectedCallback(){super.disconnectedCallback(),this.isMounting=!0,this.previousStatusById.clear(),this.clearPendingReorder()}connectedCallback(){const reconnecting=this.hasUpdated;this.isMounting=!0,this.previousStatusById.clear(),super.connectedCallback(),reconnecting&&this.requestUpdate("items")}flattenOneLevel(items){const out=[];for(const item of validTaskItems(items)){out.push(item);for(const child of validTaskItems(item.children))out.push(child)}return out}diffAndAnnounce(firstSight){const region=this.liveRegion,nextMap=new Map;for(const item of this.flattenOneLevel(validTaskItems(this.items))){const status=normalizeTaskStatus(item.status);if(nextMap.set(item.id,status),!firstSight&®ion){const previous=this.previousStatusById.get(item.id);previous!==void 0&&previous!==status&&(status==="running"?(region.mode="polite",region.announce(this.localize("taskListStepStartedAnnounce",void 0,{label:item.label}),{force:!0})):status==="success"?(region.mode="polite",region.announce(this.localize("taskListStepCompletedAnnounce",void 0,{label:item.label}),{force:!0})):status==="error"&&(region.mode="assertive",region.announce(this.localize("taskListStepFailedAnnounce",void 0,{label:item.label}),{force:!0})))}}this.previousStatusById=nextMap}idsAreUnique(){const ids=new Set;for(const item of this.flattenOneLevel(this.items)){if(item.id.trim().length===0||ids.has(item.id))return!1;ids.add(item.id)}return!0}canReorderItems(){if(!this.reorderable||!Array.isArray(this.items))return!1;const items=validTaskItems(this.items);return items.length!==this.items.length||items.some(item=>Array.isArray(item.children)&&validTaskItems(item.children).length!==item.children.length)?!1:this.idsAreUnique()}siblingItems(parentId){return parentId===null?this.items:this.items.find(item=>item.id===parentId)?.children}requestReorder(item,parentId,delta){if(!this.canReorderItems())return;const siblings=this.siblingItems(parentId);if(!siblings)return;const fromIndex=siblings.findIndex(candidate=>candidate.id===item.id),toIndex=fromIndex+delta;fromIndex<0||toIndex<0||toIndex>=siblings.length||(this.pendingReorder={id:item.id,parentId,originalSiblingIds:siblings.map(candidate=>candidate.id),targetSiblingId:siblings[toIndex].id,fromIndex,toIndex},this.pendingFocusId=null,this.emit("lr-reorder",{taskId:item.id,parentTaskId:parentId,fromIndex,toIndex}))}onItemKeyDown(event,item,parentId){event.composedPath()[0]===event.currentTarget&&(!this.canReorderItems()||!(event.ctrlKey||event.metaKey)||event.key!=="ArrowUp"&&event.key!=="ArrowDown"||(event.preventDefault(),this.requestReorder(item,parentId,event.key==="ArrowDown"?1:-1)))}capturePendingReorderFocus(){const pending=this.pendingReorder;if(!pending)return;const active=activeElementIn(this.shadowRoot);this.pendingFocusId=active instanceof HTMLElement&&active.getAttribute("part")==="item"&&active.dataset.id===pending.id?pending.id:null}confirmPendingReorder(){const pending=this.pendingReorder;if(!pending)return;const siblings=this.siblingItems(pending.parentId);if(!siblings||!this.idsAreUnique()){this.clearPendingReorder();return}const siblingIds=siblings.map(item=>item.id);if(!(siblingIds.length!==pending.originalSiblingIds.length||siblingIds.some((id,index)=>id!==pending.originalSiblingIds[index])))return;this.pendingReorder=void 0;const restoreFocus=this.pendingFocusId===pending.id;if(this.pendingFocusId=null,siblingIds[pending.toIndex]!==pending.id||siblingIds[pending.fromIndex]!==pending.targetSiblingId)return;const moved=siblings[pending.toIndex],region=this.liveRegion;region&&(region.mode="polite",region.announce(this.localize("treeNodeMoved",void 0,{label:moved.label,index:getNumberFormat(this.effectiveLocale).format(pending.toIndex+1),total:getNumberFormat(this.effectiveLocale).format(siblings.length)}),{force:!0})),restoreFocus&&this.focusItem(pending.id)}focusItem(id){[...this.shadowRoot?.querySelectorAll('[part="item"]')??[]].find(candidate=>candidate.dataset.id===id)?.focus()}clearPendingReorder(){this.pendingReorder=void 0,this.pendingFocusId=null}renderItem(item,depth,parentId,canReorder){const status=normalizeTaskStatus(item.status),children=depth===0?validTaskItems(item.children):[],hasChildren=children.length>0;return html`
|
|
19
19
|
<div
|
|
20
20
|
part="item"
|
|
21
21
|
role="listitem"
|
|
@@ -54,6 +54,15 @@ import{type TemplateResult,type PropertyValues}from'lit';import{LyraElement}from
|
|
|
54
54
|
* @cssprop [--lr-terminal-height=var(--lr-size-20rem)] - Block size of `[part="viewport"]`, the
|
|
55
55
|
* scrollable log region. Not declared on `:host`, so it is inherited — set it on the host or any
|
|
56
56
|
* ancestor.
|
|
57
|
+
* @cssprop [--lr-terminal-surface-color=var(--lr-color-surface-raised)] - Card-frame background
|
|
58
|
+
* and the fallback foreground for inverse ANSI segments without an explicit background. The
|
|
59
|
+
* `frame="plain"` escape remains transparent.
|
|
60
|
+
* @cssprop [--lr-terminal-toolbar-button-hover-bg=var(--lr-color-brand-quiet)] - Hover background
|
|
61
|
+
* of `[part="copy-button"]` and `[part="download-button"]`.
|
|
62
|
+
* @cssprop [--lr-terminal-toolbar-button-active-bg=color-mix(in oklab, var(--lr-terminal-toolbar-button-hover-bg, var(--lr-color-brand-quiet)), var(--lr-color-mix-partner) var(--lr-color-mix-active))] - Pressed background of the toolbar buttons.
|
|
63
|
+
* @cssprop [--lr-terminal-line-hover-bg=var(--lr-color-brand-quiet)] - Hover background of an
|
|
64
|
+
* ordinary rendered `[part="line"]`.
|
|
65
|
+
* @cssprop [--lr-terminal-line-active-bg=color-mix(in oklab, var(--lr-terminal-line-hover-bg, var(--lr-color-brand-quiet)), var(--lr-color-mix-partner) var(--lr-color-mix-active))] - Pressed background of an ordinary rendered line.
|
|
57
66
|
* @cssprop [--lr-terminal-highlight-accent-bg=var(--lr-color-brand-quiet)] - Background of an
|
|
58
67
|
* `accent`-tone highlighted line. Decoupled from the shared `--lr-color-brand-quiet` token also
|
|
59
68
|
* used by `[part="copy-button"]`/`[part="download-button"]`'s hover state, and from any
|
|
@@ -106,7 +115,7 @@ frame:LyraFrame;
|
|
|
106
115
|
/** Feature-detectable capability mirror -- the same pattern `DocumentAnchorTarget`-adopting
|
|
107
116
|
* viewers use for their own `anchorKinds` field. This component isn't document-viewer-registry-
|
|
108
117
|
* routed, so it has no registry `capabilities.anchors` entry to declare this on instead. */
|
|
109
|
-
readonly anchorKinds:readonly LyraAnchor['kind'][];private lines;private scrollTargetLineNumber;private copyStatus;private buffer;private retainedCellCount;private lineSeq;private column;private appliedContent;private readonly ansiParser;private copyTimeoutId?;private copyTimeoutWindow?;private copyTimeoutGeneration?;private copyGeneration;
|
|
118
|
+
readonly anchorKinds:readonly LyraAnchor['kind'][];private lines;private scrollTargetLineNumber;private copyStatus;private buffer;private retainedCellCount;private lineSeq;private column;private appliedContent;private readonly terminalLineKey;private readonly ansiParser;private copyTimeoutId?;private copyTimeoutWindow?;private copyTimeoutGeneration?;private copyGeneration;
|
|
110
119
|
/** Plain text appended since the last announcer flush -- coalesced so a burst of small
|
|
111
120
|
* `write()` chunks (a common line-by-line stdout pattern) becomes one throttled announcement
|
|
112
121
|
* instead of one per chunk. Reset in the announcer's own `onFlush` callback below, so it always
|
|
@@ -128,7 +137,7 @@ write(chunk:string):void;
|
|
|
128
137
|
replace(content:string):void;private commitPendingContent;clear():void;getPlainText():string;scrollToBottom():void;private jumpToLatest;private recomputeSearchMatches;private emitSearchChange;private searchState;private emitSearchChangeIfChanged;private jumpToActiveMatch;
|
|
129
138
|
/** Resolves the retained match count. The emitted `lr-search-change.matchCountExact` is `false`
|
|
130
139
|
* when that return value is only a lower bound because the 10,000-match retention ceiling was
|
|
131
|
-
* reached. */
|
|
140
|
+
* reached. A query with no matches also clears the previous rendered search markers. */
|
|
132
141
|
search(query:string):Promise<number>;
|
|
133
142
|
/** Advances to the next match, wrapping to the first after the last. Resolves `true` once the
|
|
134
143
|
* active match moved, `false` when there are no matches -- the shape the shared
|