@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,5 +1,5 @@
|
|
|
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{property,state,query}from"lit/decorators.js";import{styleMap}from"lit/directives/style-map.js";import{LyraElement}from"../../../internal/lyra-element.js";import{specialistTokens}from"../../../internal/specialist-tokens.styles.js";import{hostAriaLabel,nextId,srOnly}from"../../../internal/a11y.js";import{getListFormat,getNumberFormat}from"../../../internal/intl-cache.js";import{finiteAdd,finiteCount,finiteRange}from"../../../internal/numbers.js";import{escapeCsvField}from"../../utility/export-button/csv.js";import"../../utility/live-region/live-region.class.js";import{styles}from"./lite-chart.styles.js";import{forcedColorEncoding,forcedColorsActive}from"./chart-forced-colors.js";import{literalSetConverter,trueDefaultBooleanFromAttributeConverter as trueDefaultBooleanConverter}from"../../../internal/converters.js";import{sanitizeCssColor,sanitizeCssLength}from"../../../internal/safe-css.js";import{activeElementIn}from"../../../internal/active-element.js";import{acquireAnnouncementSink}from"../../../internal/announcer.js";import{MAX_RENDERED_CHART_RECORDS,sampleChartTableIndexes}from"./chart-table-sampling.js";import{chartChromeLegendPlacement,normalizeChartChromeLegendPosition}from"./chart-chrome.js";import{LYRA_DEFAULT_chart,LYRA_DEFAULT_chartCategory,LYRA_DEFAULT_chartData,LYRA_DEFAULT_chartDataSampled,LYRA_DEFAULT_chartSeriesLabel,LYRA_DEFAULT_chartTotal,LYRA_DEFAULT_liteChartBarLabel,LYRA_DEFAULT_liteChartCustomMarkSummary,LYRA_DEFAULT_liteChartMarkSummary}from"../../../internal/default-strings.generated.js";function isLiteChartSeries(value){try{return typeof value=="object"&&value!==null&&!Array.isArray(value)&&Array.isArray(value.data)}catch{return!1}}function normalizeLiteChartSeries(value){try{return Object.freeze(Array.isArray(value)?value.filter(isLiteChartSeries):[])}catch{return Object.freeze([])}}function normalizeLiteChartType(value){return value==="line"||value==="bar"?value:"bar"}const LITE_CHART_LAYOUT=literalSetConverter(["fit","scroll"],"fit"),autoNumberConverter={fromAttribute:value=>{if(value===null)return;const trimmed=value.trim();return trimmed.toLowerCase()==="auto"?"auto":Number(trimmed)}},DEFAULT_PALETTE=["var(--lr-chart-color-1, var(--lr-color-chart-1))","var(--lr-chart-color-2, var(--lr-color-chart-2))","var(--lr-chart-color-3, var(--lr-color-chart-3))","var(--lr-chart-color-4, var(--lr-color-chart-4))","var(--lr-chart-color-5, var(--lr-color-chart-5))","var(--lr-chart-color-6, var(--lr-color-chart-6))","var(--lr-chart-color-7, var(--lr-color-chart-7))","var(--lr-chart-color-8, var(--lr-color-chart-8))"],PAD_LEFT=36,PAD_RIGHT=8,PAD_TOP=8,PAD_BOTTOM=30,CATEGORY_LABEL_OFFSET=24,AXIS_TITLE_SPACE=14,TICK_COUNT=4,BAR_GROUP_GAP=.2,BAR_GAP=.08,BAR_CORNER_RADIUS=4,APPROX_LABEL_CHARACTER_WIDTH=7,AUTO_CATEGORY_LABEL_INSET=10,VALUE_AXIS_TICK_OFFSET=6,AUTO_VALUE_AXIS_SAFETY_INSET=8,MAX_AUTO_VALUE_AXIS_GUTTER=240,MAX_AUTO_VALUE_AXIS_GUTTER_FRACTION=.4,MAX_SCROLL_CONTENT_WIDTH=1e6;function niceStep(span,count){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 logDomainFraction(value,lo,hi){const top=Math.max(hi,0);if(!Number.isFinite(top)||top<=0)return domainFraction(value,lo,hi);const bottom=lo>0?lo:top/10;if(!Number.isFinite(bottom)||bottom<=0||bottom>=top)return domainFraction(value,lo,hi);if(!Number.isFinite(value)||value<=bottom)return 0;if(value>=top)return 1;const fraction=(Math.log10(value)-Math.log10(bottom))/(Math.log10(top)-Math.log10(bottom));return Number.isFinite(fraction)?Math.min(1,Math.max(0,fraction)):0}function domainFraction(value,lo,hi){const span=hi-lo;if(Number.isFinite(span)&&span>0)return Math.min(1,Math.max(0,(value-lo)/span));const scale=Math.max(Math.abs(value),Math.abs(lo),Math.abs(hi),1),scaledSpan=hi/scale-lo/scale;if(!Number.isFinite(scaledSpan)||scaledSpan<=0)return 0;const fraction=(value/scale-lo/scale)/scaledSpan;return Number.isFinite(fraction)?Math.min(1,Math.max(0,fraction)):0}function safeDomainTicks(lo,hi,count){return Array.from({length:Math.max(1,count)+1},(_,index)=>{if(index===0)return lo;if(index===count)return hi;const ratio=index/count;return lo*(1-ratio)+hi*ratio}).filter(Number.isFinite)}function niceDomain(dataLo,dataHi,beginAtZero,count){let lo=beginAtZero?Math.min(0,dataLo):dataLo,hi=beginAtZero?Math.max(0,dataHi):dataHi;lo===hi&&(Math.abs(lo)>Number.MAX_VALUE/2?(lo=lo>0?lo/2:lo,hi=hi<0?hi/2:hi):(lo-=1,hi+=1));const span=hi-lo;if(!Number.isFinite(span))return{lo,hi,ticks:safeDomainTicks(lo,hi,count)};const step=niceStep(span,count);if(!Number.isFinite(step)||step<=0)return{lo,hi,ticks:safeDomainTicks(lo,hi,count)};const roundedLo=Math.floor(lo/step)*step,roundedHi=Math.ceil(hi/step)*step;Number.isFinite(roundedLo)&&(lo=roundedLo),Number.isFinite(roundedHi)&&(hi=roundedHi);const slots=Math.floor((hi-lo)/step);if(!Number.isFinite(slots)||slots<0||slots>100)return{lo,hi,ticks:safeDomainTicks(lo,hi,count)};const ticks=[];for(let index=0;index<=slots;index++){const value=lo+index*step;Number.isFinite(value)&&ticks.push(value)}return ticks.at(-1)!==hi&&ticks.push(hi),{lo,hi,ticks}}class LyraLiteChart extends LyraElement{constructor(){super(...arguments),this.type="bar",this.labels=[],this._datasets=Object.freeze([]),this.legend=!1,this.legendPosition="bottom",this.height="280px",this.xLabel="",this.yLabel="",this.beginAtZero=!0,this.stacked=!1,this.tableTotals=!1,this.showDataTable=!1,this.dataTableToggle=!1,this.dataTableExpandedOverride=null,this.dataTableId=nextId("lite-chart-data-table"),this._layout="fit",this.barWidth=32,this.roundedBars=!1,this.skipZero=!1,this.scale="linear",this.withoutValueAxis=!1,this.selectedIndices=[],this.label=null,this.description=null,this.forcedColorPatternId=nextId("lite-chart-pattern"),this.descriptionId=nextId("lite-chart-description"),this.plotWidth=0,this.plotHeight=0,this.fitMeasurementAvailable=!1,this.activeMarkIndex=0,this.resizeObserverGeneration=0,this.refocusMarkAfterUpdate=!1,this.refocusChartAfterUpdate=!1,this.lastDataTruncationAnnouncement="",this.isMounting=!0,this.onForcedColorsChange=()=>{!this.isConnected||this.ownerDocument.defaultView!==this.forcedColorsWindow||this.requestUpdate()}}static{this.defaultStrings={...super.defaultStrings,chart:LYRA_DEFAULT_chart,chartCategory:LYRA_DEFAULT_chartCategory,chartData:LYRA_DEFAULT_chartData,chartDataSampled:LYRA_DEFAULT_chartDataSampled,chartSeriesLabel:LYRA_DEFAULT_chartSeriesLabel,chartTotal:LYRA_DEFAULT_chartTotal,liteChartBarLabel:LYRA_DEFAULT_liteChartBarLabel,liteChartCustomMarkSummary:LYRA_DEFAULT_liteChartCustomMarkSummary,liteChartMarkSummary:LYRA_DEFAULT_liteChartMarkSummary}}static{this.ownedCollectionProperties=Object.freeze(["labels","datasets","selectedIndices"])}static{this.styles=[LyraElement.styles,specialistTokens,styles,srOnly]}get datasets(){return this._datasets}set datasets(value){const previous=this._datasets;this._datasets=normalizeLiteChartSeries(value),this.requestUpdate("datasets",previous)}get dataTableVisible(){return this.dataTableToggle?this.dataTableExpandedOverride??this.showDataTable:this.showDataTable}toggleDataTable(){this.dataTableExpandedOverride=!this.dataTableVisible}get layout(){return this._layout}set layout(next){const normalized=LITE_CHART_LAYOUT.normalizeReflected(this,"layout",next),old=this._layout;old!==normalized&&(this._layout=normalized,this.requestUpdate("layout",old))}appendData(label,values,maxPoints=0){const limit=Math.max(0,finiteCount(maxPoints,0));let domainLength=this.labels.length;for(const series of this.datasets)domainLength=Math.max(domainLength,series.data.length);const labels=[...this.labels,...Array.from({length:Math.max(0,domainLength-this.labels.length)},()=>""),label],datasets=this.datasets.map((series,index)=>({...series,data:[...series.data,...Array.from({length:Math.max(0,domainLength-series.data.length)},()=>null),values[index]??null]}));this.labels=limit>0?labels.slice(-limit):labels,this.datasets=limit>0?datasets.map(series=>({...series,data:series.data.slice(-limit)})):datasets}exportData(format){if(format==="svg"){const XMLSerializerCtor=this.ownerDocument.defaultView?.XMLSerializer;return!this.svgEl||typeof XMLSerializerCtor!="function"?"":new XMLSerializerCtor().serializeToString(this.svgEl)}const header=["label",...this.datasets.map(series=>series.label)].map(escapeCsvField).join(","),rows=Array.from({length:this.recordCount()},(_,index)=>{const label=this.labels[index]??"";return[label,...this.datasets.map((series,datasetIndex)=>{const value=series.data[index];return typeof value=="number"&&Number.isFinite(value)?this.formatter?.({value,surface:"export",datasetIndex,index,label,seriesLabel:series.label})??value:""})].map(escapeCsvField).join(",")});return[header,...rows].join(`\r
|
|
2
|
-
`)}connectedCallback(){super.connectedCallback(),this.syncAnnouncementSink(),this.armResizeObserver(),this.armForcedColorsWatcher()}armResizeObserver(){const target=this.svgEl,ownerDocument=this.ownerDocument;if(!this.isConnected||!target||this.resizeObserver&&this.resizeObserverDocument===ownerDocument&&this.resizeObserverTarget===target)return;this.resetResizeObserver();const ResizeObserverCtor=ownerDocument.defaultView?.ResizeObserver;if(!ResizeObserverCtor)return;const generation=this.resizeObserverGeneration,observer=new ResizeObserverCtor(entries=>{if(this.resizeObserver!==observer||this.resizeObserverGeneration!==generation||!this.isConnected||this.ownerDocument!==ownerDocument||this.resizeObserverTarget!==target)return;const box=
|
|
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{nativeSvgTitle}from"../../../internal/svg-title.js";import{html,svg,nothing}from"lit";import{property,state,query}from"lit/decorators.js";import{styleMap}from"lit/directives/style-map.js";import{LyraElement}from"../../../internal/lyra-element.js";import{specialistTokens}from"../../../internal/specialist-tokens.styles.js";import{hostAriaLabel,nextId,srOnly}from"../../../internal/a11y.js";import{getListFormat,getNumberFormat}from"../../../internal/intl-cache.js";import{finiteAdd,finiteCount,finiteRange}from"../../../internal/numbers.js";import{escapeCsvField}from"../../utility/export-button/csv.js";import"../../utility/live-region/live-region.class.js";import{styles}from"./lite-chart.styles.js";import{forcedColorEncoding,forcedColorsActive}from"./chart-forced-colors.js";import{literalSetConverter,trueDefaultBooleanFromAttributeConverter as trueDefaultBooleanConverter}from"../../../internal/converters.js";import{sanitizeCssColor,sanitizeCssLength}from"../../../internal/safe-css.js";import{activeElementIn}from"../../../internal/active-element.js";import{acquireAnnouncementSink}from"../../../internal/announcer.js";import{MAX_RENDERED_CHART_RECORDS,sampleChartTableIndexes}from"./chart-table-sampling.js";import{chartChromeLegendPlacement,normalizeChartChromeLegendPosition}from"./chart-chrome.js";import{LYRA_DEFAULT_chart,LYRA_DEFAULT_chartCategory,LYRA_DEFAULT_chartData,LYRA_DEFAULT_chartDataSampled,LYRA_DEFAULT_chartSeriesLabel,LYRA_DEFAULT_chartTotal,LYRA_DEFAULT_liteChartBarLabel,LYRA_DEFAULT_liteChartCustomMarkSummary,LYRA_DEFAULT_liteChartMarkSummary}from"../../../internal/default-strings.generated.js";function isLiteChartSeries(value){try{return typeof value=="object"&&value!==null&&!Array.isArray(value)&&Array.isArray(value.data)}catch{return!1}}function normalizeLiteChartSeries(value){try{return Object.freeze(Array.isArray(value)?value.filter(isLiteChartSeries):[])}catch{return Object.freeze([])}}function normalizeLiteChartType(value){return value==="line"||value==="bar"?value:"bar"}const LITE_CHART_LAYOUT=literalSetConverter(["fit","scroll"],"fit"),autoNumberConverter={fromAttribute:value=>{if(value===null)return;const trimmed=value.trim();return trimmed.toLowerCase()==="auto"?"auto":Number(trimmed)}},DEFAULT_PALETTE=["var(--lr-chart-color-1, var(--lr-color-chart-1))","var(--lr-chart-color-2, var(--lr-color-chart-2))","var(--lr-chart-color-3, var(--lr-color-chart-3))","var(--lr-chart-color-4, var(--lr-color-chart-4))","var(--lr-chart-color-5, var(--lr-color-chart-5))","var(--lr-chart-color-6, var(--lr-color-chart-6))","var(--lr-chart-color-7, var(--lr-color-chart-7))","var(--lr-chart-color-8, var(--lr-color-chart-8))"],PAD_LEFT=36,PAD_RIGHT=8,PAD_TOP=8,PAD_BOTTOM=30,CATEGORY_LABEL_OFFSET=24,AXIS_TITLE_SPACE=14,TICK_COUNT=4,BAR_GROUP_GAP=.2,BAR_GAP=.08,BAR_CORNER_RADIUS=4,APPROX_LABEL_CHARACTER_WIDTH=7,AUTO_CATEGORY_LABEL_INSET=10,VALUE_AXIS_TICK_OFFSET=6,AUTO_VALUE_AXIS_SAFETY_INSET=8,MAX_AUTO_VALUE_AXIS_GUTTER=240,MAX_AUTO_VALUE_AXIS_GUTTER_FRACTION=.4,MAX_SCROLL_CONTENT_WIDTH=1e6;function niceStep(span,count){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 logDomainFraction(value,lo,hi){const top=Math.max(hi,0);if(!Number.isFinite(top)||top<=0)return domainFraction(value,lo,hi);const bottom=lo>0?lo:top/10;if(!Number.isFinite(bottom)||bottom<=0||bottom>=top)return domainFraction(value,lo,hi);if(!Number.isFinite(value)||value<=bottom)return 0;if(value>=top)return 1;const fraction=(Math.log10(value)-Math.log10(bottom))/(Math.log10(top)-Math.log10(bottom));return Number.isFinite(fraction)?Math.min(1,Math.max(0,fraction)):0}function domainFraction(value,lo,hi){const span=hi-lo;if(Number.isFinite(span)&&span>0)return Math.min(1,Math.max(0,(value-lo)/span));const scale=Math.max(Math.abs(value),Math.abs(lo),Math.abs(hi),1),scaledSpan=hi/scale-lo/scale;if(!Number.isFinite(scaledSpan)||scaledSpan<=0)return 0;const fraction=(value/scale-lo/scale)/scaledSpan;return Number.isFinite(fraction)?Math.min(1,Math.max(0,fraction)):0}function safeDomainTicks(lo,hi,count){return Array.from({length:Math.max(1,count)+1},(_,index)=>{if(index===0)return lo;if(index===count)return hi;const ratio=index/count;return lo*(1-ratio)+hi*ratio}).filter(Number.isFinite)}function logarithmicTicks(lo,hi,count){if(!(lo>0&&hi>lo)||!Number.isFinite(lo)||!Number.isFinite(hi))return;const start=Math.log10(lo),end=Math.log10(hi),span=end-start;if(!(span>0))return;const decades=span>=1,step=decades?Math.ceil(span/count):niceStep(hi-lo,count);if(!Number.isFinite(step)||step<=0)return[...new Set(safeDomainTicks(lo,hi,count))];const ticks=[lo],minimumGap=decades?step/2:span/(count*2),first=Math.ceil((decades?start:lo)/step);for(let index=0;index<=count+1;index++){const value=decades?10**((first+index)*step):(first+index)*step;if(!Number.isFinite(value)||value>=hi)break;if(value<=ticks.at(-1))continue;const logarithm=Math.log10(value);logarithm-Math.log10(ticks.at(-1))>=minimumGap&&end-logarithm>=minimumGap&&ticks.push(value)}return ticks.push(hi),ticks}function niceDomain(dataLo,dataHi,beginAtZero,count){let lo=beginAtZero?Math.min(0,dataLo):dataLo,hi=beginAtZero?Math.max(0,dataHi):dataHi;lo===hi&&(Math.abs(lo)>Number.MAX_VALUE/2?(lo=lo>0?lo/2:lo,hi=hi<0?hi/2:hi):(lo-=1,hi+=1));const span=hi-lo;if(!Number.isFinite(span))return{lo,hi,ticks:safeDomainTicks(lo,hi,count)};const step=niceStep(span,count);if(!Number.isFinite(step)||step<=0)return{lo,hi,ticks:safeDomainTicks(lo,hi,count)};const roundedLo=Math.floor(lo/step)*step,roundedHi=Math.ceil(hi/step)*step;Number.isFinite(roundedLo)&&(lo=roundedLo),Number.isFinite(roundedHi)&&(hi=roundedHi);const slots=Math.floor((hi-lo)/step);if(!Number.isFinite(slots)||slots<0||slots>100)return{lo,hi,ticks:safeDomainTicks(lo,hi,count)};const ticks=[];for(let index=0;index<=slots;index++){const value=lo+index*step;Number.isFinite(value)&&ticks.push(value)}return ticks.at(-1)!==hi&&ticks.push(hi),{lo,hi,ticks}}class LyraLiteChart extends LyraElement{constructor(){super(...arguments),this.type="bar",this.labels=[],this._datasets=Object.freeze([]),this.legend=!1,this.legendPosition="bottom",this.height="280px",this.xLabel="",this.yLabel="",this.beginAtZero=!0,this.stacked=!1,this.tableTotals=!1,this.showDataTable=!1,this.dataTableToggle=!1,this.dataTableExpandedOverride=null,this.dataTableId=nextId("lite-chart-data-table"),this._layout="fit",this.barWidth=32,this.roundedBars=!1,this.skipZero=!1,this.scale="linear",this.withoutValueAxis=!1,this.selectedIndices=[],this.label=null,this.description=null,this.forcedColorPatternId=nextId("lite-chart-pattern"),this.descriptionId=nextId("lite-chart-description"),this.plotWidth=0,this.plotHeight=0,this.fitMeasurementAvailable=!1,this.activeMarkIndex=0,this.resizeObserverGeneration=0,this.axisTitleTargets=new Set,this.axisTitleFits=new WeakMap,this.refocusMarkAfterUpdate=!1,this.refocusChartAfterUpdate=!1,this.lastDataTruncationAnnouncement="",this.isMounting=!0,this.onForcedColorsChange=()=>{!this.isConnected||this.ownerDocument.defaultView!==this.forcedColorsWindow||this.requestUpdate()}}static{this.defaultStrings={...super.defaultStrings,chart:LYRA_DEFAULT_chart,chartCategory:LYRA_DEFAULT_chartCategory,chartData:LYRA_DEFAULT_chartData,chartDataSampled:LYRA_DEFAULT_chartDataSampled,chartSeriesLabel:LYRA_DEFAULT_chartSeriesLabel,chartTotal:LYRA_DEFAULT_chartTotal,liteChartBarLabel:LYRA_DEFAULT_liteChartBarLabel,liteChartCustomMarkSummary:LYRA_DEFAULT_liteChartCustomMarkSummary,liteChartMarkSummary:LYRA_DEFAULT_liteChartMarkSummary}}static{this.ownedCollectionProperties=Object.freeze(["labels","datasets","selectedIndices"])}static{this.styles=[LyraElement.styles,specialistTokens,styles,srOnly]}get datasets(){return this._datasets}set datasets(value){const previous=this._datasets;this._datasets=normalizeLiteChartSeries(value),this.requestUpdate("datasets",previous)}get dataTableVisible(){return this.dataTableToggle?this.dataTableExpandedOverride??this.showDataTable:this.showDataTable}toggleDataTable(){this.dataTableExpandedOverride=!this.dataTableVisible}get layout(){return this._layout}set layout(next){const normalized=LITE_CHART_LAYOUT.normalizeReflected(this,"layout",next),old=this._layout;old!==normalized&&(this._layout=normalized,this.requestUpdate("layout",old))}appendData(label,values,maxPoints=0){const limit=Math.max(0,finiteCount(maxPoints,0));let domainLength=this.labels.length;for(const series of this.datasets)domainLength=Math.max(domainLength,series.data.length);const labels=[...this.labels,...Array.from({length:Math.max(0,domainLength-this.labels.length)},()=>""),label],datasets=this.datasets.map((series,index)=>({...series,data:[...series.data,...Array.from({length:Math.max(0,domainLength-series.data.length)},()=>null),values[index]??null]}));this.labels=limit>0?labels.slice(-limit):labels,this.datasets=limit>0?datasets.map(series=>({...series,data:series.data.slice(-limit)})):datasets}exportData(format){if(format==="svg"){const XMLSerializerCtor=this.ownerDocument.defaultView?.XMLSerializer;return!this.svgEl||typeof XMLSerializerCtor!="function"?"":new XMLSerializerCtor().serializeToString(this.svgEl)}const header=["label",...this.datasets.map(series=>series.label)].map(escapeCsvField).join(","),rows=Array.from({length:this.recordCount()},(_,index)=>{const label=this.labels[index]??"";return[label,...this.datasets.map((series,datasetIndex)=>{const value=series.data[index];return typeof value=="number"&&Number.isFinite(value)?this.formatter?.({value,surface:"export",datasetIndex,index,label,seriesLabel:series.label})??value:""})].map(escapeCsvField).join(",")});return[header,...rows].join(`\r
|
|
2
|
+
`)}attributeChangedCallback(name,oldValue,value){super.attributeChangedCallback(name,oldValue,value),oldValue!==value&&(name==="style"||name==="class")&&this.fitAxisTitles()}connectedCallback(){super.connectedCallback(),this.syncAnnouncementSink(),this.armResizeObserver(),this.armForcedColorsWatcher()}armResizeObserver(){const target=this.svgEl,ownerDocument=this.ownerDocument;if(!this.isConnected||!target||this.resizeObserver&&this.resizeObserverDocument===ownerDocument&&this.resizeObserverTarget===target)return;this.resetResizeObserver();const ResizeObserverCtor=ownerDocument.defaultView?.ResizeObserver;if(!ResizeObserverCtor)return;const generation=this.resizeObserverGeneration,observer=new ResizeObserverCtor(entries=>{if(this.resizeObserver!==observer||this.resizeObserverGeneration!==generation||!this.isConnected||this.ownerDocument!==ownerDocument||this.resizeObserverTarget!==target)return;const svgEntry=entries.find(entry=>entry.target===target);if(svgEntry){const box=svgEntry.contentBoxSize?.[0];if(box)this.plotWidth=box.inlineSize,this.plotHeight=box.blockSize;else{const rect=target.getBoundingClientRect();this.plotWidth=rect.width,this.plotHeight=rect.height}this.fitAxisTitles()}entries.some(entry=>this.axisTitleTargets.has(entry.target))&&this.queueAxisTitleFit()});this.resizeObserver=observer,this.resizeObserverDocument=ownerDocument,this.resizeObserverTarget=target,target&&observer.observe(target),this.syncAxisTitleTargets()}disconnectedCallback(){super.disconnectedCallback(),this.releaseAnnouncementSink(),this.lastDataTruncationAnnouncement="",this.isMounting=!0,this.resetResizeObserver(),this.disarmForcedColorsWatcher()}adoptedCallback(){super.adoptedCallback(),this.resetResizeObserver(),this.releaseAnnouncementSink(),this.syncAnnouncementSink(),this.refreshFitMeasurementAvailability(),this.armForcedColorsWatcher()}armForcedColorsWatcher(){const ownerWindow=this.ownerDocument?.defaultView??void 0;ownerWindow?.matchMedia&&(this.forcedColorsWindow===ownerWindow&&this.forcedColorsQuery||(this.disarmForcedColorsWatcher(),this.forcedColorsWindow=ownerWindow,this.forcedColorsQuery=ownerWindow.matchMedia("(forced-colors: active)"),this.forcedColorsQuery.addEventListener("change",this.onForcedColorsChange)))}disarmForcedColorsWatcher(){this.forcedColorsQuery?.removeEventListener("change",this.onForcedColorsChange),this.forcedColorsQuery=void 0,this.forcedColorsWindow=void 0}syncAnnouncementSink(){this.isConnected&&this.politeAnnouncementSink?.element.ownerDocument!==this.ownerDocument&&(this.releaseAnnouncementSink(),this.politeAnnouncementSink=acquireAnnouncementSink("polite",{document:this.ownerDocument,source:this}))}releaseAnnouncementSink(){this.politeAnnouncementSink?.release(),this.politeAnnouncementSink=void 0}resetResizeObserver(){this.axisTitleFrame!==void 0&&(this.resizeObserverDocument?.defaultView?.cancelAnimationFrame(this.axisTitleFrame),this.axisTitleFrame=void 0),this.axisTitleTargets.clear(),this.resizeObserverGeneration+=1,this.resizeObserver?.disconnect(),this.resizeObserver=void 0,this.resizeObserverDocument=void 0,this.resizeObserverTarget=void 0}firstUpdated(changed){super.firstUpdated(changed),this.armResizeObserver()}willUpdate(changed){if(super.willUpdate(changed),this.seedFirstRenderState(()=>{this.refreshFitMeasurementAvailability()}),!["type","labels","datasets","skipZero"].some(name=>changed.has(name)))return;const active=activeElementIn(this.shadowRoot)??null,hadFocusedMark=active?.matches('[part="bar"], [part="point"]')??!1,priorPosition=Number(active?.getAttribute("data-mark-index")??this.activeMarkIndex),datasetAttribute=active?.getAttribute("data-dataset-index"),indexAttribute=active?.getAttribute("data-index"),datasetIndex=Number(datasetAttribute),index=Number(indexAttribute),marks=this.interactiveMarks(),sameIdentity=datasetAttribute!=null&&indexAttribute!==null&&indexAttribute!==void 0?marks.findIndex(mark=>mark.datasetIndex===datasetIndex&&mark.index===index):-1;this.activeMarkIndex=marks.length?sameIdentity>=0?sameIdentity:Math.min(Math.max(priorPosition,0),marks.length-1):0,this.refocusMarkAfterUpdate=hadFocusedMark&&marks.length>0,this.refocusChartAfterUpdate=hadFocusedMark&&marks.length===0}updated(changed){super.updated(changed);const wasMounting=this.isMounting;if(this.isMounting=!1,changed.has("height")){const height=sanitizeCssLength(this.height,"height");height?this.style.setProperty("--_lr-chart-height",height):this.style.removeProperty("--_lr-chart-height")}const dataTruncation=this.dataTruncationMessage();wasMounting?this.lastDataTruncationAnnouncement=dataTruncation:dataTruncation!==this.lastDataTruncationAnnouncement&&(this.lastDataTruncationAnnouncement=dataTruncation,dataTruncation&&this.politeAnnouncementSink?.announce(dataTruncation)),this.refocusMarkAfterUpdate&&(this.refocusMarkAfterUpdate=!1,this.renderRoot.querySelectorAll('[part="bar"], [part="point"]')[this.normalizedMarkIndex()]?.focus()),this.refocusChartAfterUpdate&&(this.refocusChartAfterUpdate=!1,this.svgEl?.focus()),this.fitAxisTitles(),this.syncAxisTitleTargets()}fitAxisTitles(){if(!(!this.ownerDocument?.defaultView||!this.isConnected||!this.svgEl?.getClientRects().length))for(const title of this.svgEl.querySelectorAll('[part="axis-title"]')){const text=Array.from(title.childNodes).find(node=>node.nodeType===3);if(!text)continue;const source=title.getAttribute("aria-label")??"",extent=finiteRange(Number(title.getAttribute("data-title-extent")),0,0,MAX_SCROLL_CONTENT_WIDTH),previous=this.axisTitleFits.get(title);if(!(previous?.source===source&&previous.extent===extent&&previous.display===text.data&&previous.width===title.getComputedTextLength())){if(title.style.removeProperty("opacity"),text.data=source,title.getComputedTextLength()>extent)if(text.data="…",title.getComputedTextLength()>extent)title.style.opacity="0";else{let lower=0,upper=source.length;for(;lower<upper;){const middle=Math.ceil((lower+upper)/2);text.data=`${source.slice(0,middle)}…`,title.getComputedTextLength()<=extent?lower=middle:upper=middle-1}const last=source.charCodeAt(lower-1);last>=55296&&last<=56319&&(lower-=1),text.data=`${source.slice(0,lower)}…`}this.axisTitleFits.set(title,{source,extent,display:text.data,width:title.getComputedTextLength()})}}}syncAxisTitleTargets(){if(!this.resizeObserver||!this.svgEl)return;const current=new Set(this.svgEl.querySelectorAll('[part="axis-title"]'));for(const title of this.axisTitleTargets)current.has(title)||this.resizeObserver.unobserve(title);for(const title of current)this.axisTitleTargets.has(title)||this.resizeObserver.observe(title);this.axisTitleTargets=current}queueAxisTitleFit(){const document=this.resizeObserverDocument,window=document?.defaultView;if(!window||this.axisTitleFrame!==void 0)return;const generation=this.resizeObserverGeneration,frame=window.requestAnimationFrame(()=>{this.axisTitleFrame!==frame||this.resizeObserverGeneration!==generation||!this.isConnected||this.ownerDocument!==document||(this.axisTitleFrame=void 0,this.fitAxisTitles())});this.axisTitleFrame=frame}colorFor(index,series){return sanitizeCssColor(series.color)??DEFAULT_PALETTE[index%DEFAULT_PALETTE.length]}get effectiveType(){return normalizeLiteChartType(this.type)}forcedColors(){return forcedColorsActive(this.ownerDocument?.defaultView)}markPaint(index,series){const color=this.colorFor(index,series);return this.effectiveType==="bar"&&this.forcedColors()?`url(#${this.forcedColorPatternId}-${index})`:color}legendEncoding(index){return this.forcedColors()?forcedColorEncoding(index).name:nothing}markDash(index){if(!this.forcedColors())return nothing;const dash=forcedColorEncoding(index).dash;return dash.length?dash.join(" "):"none"}renderForcedColorPatterns(){if(this.effectiveType!=="bar"||!this.forcedColors())return nothing;const size=8,half=size/2,texture="var(--lr-color-surface)";return svg`<defs>
|
|
3
3
|
${this.recordSample().seriesIndexes.map(index=>{const series=this.datasets[index],encoding=forcedColorEncoding(index).name,shapes=(()=>{switch(encoding){case"horizontal":return svg`<rect y=${half} width=${size} height="1" fill=${texture}></rect>`;case"vertical":return svg`<rect x=${half} width="1" height=${size} fill=${texture}></rect>`;case"diagonal":return svg`<path
|
|
4
4
|
d=${`M${-half},${size} L${half},0 M${half},${size} L${size+half},0`}
|
|
5
5
|
stroke=${texture}
|
|
@@ -19,7 +19,7 @@ var __decorate=function(decorators,target,key,desc){var c=arguments.length,r=c<3
|
|
|
19
19
|
<rect width=${size} height=${size} fill=${this.colorFor(index,series)}></rect>
|
|
20
20
|
${shapes}
|
|
21
21
|
</pattern>`})}
|
|
22
|
-
</defs>`}resolvePointText(label,value,datasetIndex){return this.formatter?.({value,surface:"visual",datasetIndex,label,seriesLabel:this.datasets[datasetIndex]?.label})??this.pointText?.(label,value,datasetIndex)}formatTableCell(value,context,numberFormat){return this.formatter?.({value,surface:"table",datasetIndex:context.datasetIndex??void 0,index:context.index,label:context.label,seriesLabel:context.seriesLabel??void 0,...context.kind==="total"?{statistic:"total"}:{}})??this.tableCellFormatter?.(value,context)??numberFormat.format(value)}tableTotalAt(index,seriesIndexes){let total=0,hasValue=!1;for(const seriesIndex of seriesIndexes){const series=this.datasets[seriesIndex];if(!series)continue;const value=series.data[index];value==null||!Number.isFinite(value)||(total=finiteAdd(total,value),hasValue=!0)}return hasValue?total:null}recordCount(){let count=this.labels.length;for(const series of this.datasets)count=Math.max(count,series.data.length);return count}recordSample(){const rowCount=this.recordCount(),seriesCount=this.datasets.length;return{rowCount,seriesCount,...sampleChartTableIndexes(rowCount,seriesCount)}}generatedDataIsSampled(){if(this.hasCustomDataTable())return!1;const sample=this.recordSample();return sample.rowCount===0||sample.seriesCount===0?!1:sample.rowIndexes.length<sample.rowCount||sample.seriesIndexes.length<sample.seriesCount}dataTruncationMessage(){return this.generatedDataIsSampled()?this.localize("chartDataSampled"):""}hasCustomDataTable(){return Array.from(this.children).some(child=>child.getAttribute("slot")==="data-table")}interactiveMarks(){const marks=[],sample=this.recordSample();if(this.effectiveType==="bar")for(const index of sample.rowIndexes)for(const datasetIndex of sample.seriesIndexes){const value=this.datasets[datasetIndex]?.data[index];value==null||!Number.isFinite(value)||this.skipZero&&value===0||marks.push({datasetIndex,index,label:this.labels[index]??"",value})}else sample.seriesIndexes.forEach(datasetIndex=>{const series=this.datasets[datasetIndex];series&&sample.rowIndexes.forEach(index=>{const value=series.data[index];value==null||!Number.isFinite(value)||marks.push({datasetIndex,index,label:this.labels[index]??"",value})})});return marks}awaitingFitMeasurement(){return this.layout==="fit"&&this.fitMeasurementAvailable&&(this.plotWidth<=0||this.plotHeight<=0)}refreshFitMeasurementAvailability(){this.fitMeasurementAvailable=typeof this.ownerDocument?.defaultView?.ResizeObserver=="function"}markIndexMap(){return new Map(this.interactiveMarks().map((mark,index)=>[`${mark.datasetIndex}:${mark.index}`,index]))}normalizedMarkIndex(marks=this.interactiveMarks()){return marks.length?Math.min(Math.max(this.activeMarkIndex,0),marks.length-1):-1}markAnnouncement(index,marks=this.interactiveMarks()){const mark=marks[index];if(!mark)return"";const series=this.datasets[mark.datasetIndex]?.label??this.localize("chartSeriesLabel"),custom=this.formatter?.({value:mark.value,surface:"spoken",datasetIndex:mark.datasetIndex,index:mark.index,label:mark.label,seriesLabel:series})??this.resolvePointText(mark.label,mark.value,mark.datasetIndex);return custom?this.localize("liteChartCustomMarkSummary",void 0,{content:custom,index:getNumberFormat(this.effectiveLocale).format(index+1),total:getNumberFormat(this.effectiveLocale).format(marks.length)}):this.localize("liteChartMarkSummary",void 0,{series,label:mark.label,value:getNumberFormat(this.effectiveLocale).format(mark.value),index:getNumberFormat(this.effectiveLocale).format(index+1),total:getNumberFormat(this.effectiveLocale).format(marks.length)})}onMarkFocus(index){const marks=this.interactiveMarks();marks[index]&&(this.activeMarkIndex=index,this.liveRegion?.announce(this.markAnnouncement(index,marks),{force:!0}))}focusMark(index){this.interactiveMarks()[index]&&(this.activeMarkIndex=index,this.updateComplete.then(()=>{const mark=Array.from(this.renderRoot.querySelectorAll('[part="bar"], [part="point"]'))[index];mark&&(activeElementIn(this.shadowRoot)===mark?this.onMarkFocus(index):mark.focus())}))}barValueToY(value,plotY,plotH,lo,hi){if(this.scale==="sqrt"){const zeroY=plotY+plotH-domainFraction(0,lo,hi)*plotH;if(value>=0){const domainMax2=hi>0?hi:1,fraction2=Math.sqrt(Math.min(domainMax2,value)/domainMax2);return zeroY-fraction2*(zeroY-plotY)}const domainMax=lo<0?-lo:1,fraction=Math.sqrt(Math.min(domainMax,-value)/domainMax);return zeroY+fraction*(plotY+plotH-zeroY)}return plotY+plotH-this.valueFraction(value,lo,hi)*plotH}valueFraction(value,lo,hi){return this.scale==="logarithmic"?logDomainFraction(value,this.logDomainFloor(lo,hi),hi):domainFraction(value,lo,hi)}logDomainFloor(lo,hi){if(lo>0)return lo;let smallest=Number.POSITIVE_INFINITY;for(const series of this.datasets)for(const value of series.data)value==null||!Number.isFinite(value)||value<=0||value<smallest&&(smallest=value);return Number.isFinite(smallest)?smallest:hi>0?hi/10:1}effectiveMinBarHeight(){return this.minBarHeight==null?void 0:finiteRange(this.minBarHeight,0,0,MAX_SCROLL_CONTENT_WIDTH)}roundedBarPath(x,y,w,h){const r=Math.max(0,Math.min(BAR_CORNER_RADIUS,w/2,h));return r<=0?`M${x},${y} h${w} v${h} h${-w} Z`:`M${x},${y+r} Q${x},${y} ${x+r},${y} H${x+w-r} Q${x+w},${y} ${x+w},${y+r} V${y+h} H${x} Z`}domain(){let lo=1/0,hi=-1/0;if(this.effectiveType==="bar"&&this.stacked)for(let i=0;i<this.recordCount();i++){let pos=0,neg=0;for(const s of this.datasets){const v=s.data[i];v==null||!Number.isFinite(v)||(v>=0?pos=finiteAdd(pos,v):neg=finiteAdd(neg,v))}lo=Math.min(lo,neg),hi=Math.max(hi,pos)}else for(const s of this.datasets)for(const v of s.data)v==null||!Number.isFinite(v)||(lo=Math.min(lo,v),hi=Math.max(hi,v));
|
|
22
|
+
</defs>`}resolvePointText(label,value,datasetIndex){return this.formatter?.({value,surface:"visual",datasetIndex,label,seriesLabel:this.datasets[datasetIndex]?.label})??this.pointText?.(label,value,datasetIndex)}formatTableCell(value,context,numberFormat){return this.formatter?.({value,surface:"table",datasetIndex:context.datasetIndex??void 0,index:context.index,label:context.label,seriesLabel:context.seriesLabel??void 0,...context.kind==="total"?{statistic:"total"}:{}})??this.tableCellFormatter?.(value,context)??numberFormat.format(value)}tableTotalAt(index,seriesIndexes){let total=0,hasValue=!1;for(const seriesIndex of seriesIndexes){const series=this.datasets[seriesIndex];if(!series)continue;const value=series.data[index];value==null||!Number.isFinite(value)||(total=finiteAdd(total,value),hasValue=!0)}return hasValue?total:null}recordCount(){let count=this.labels.length;for(const series of this.datasets)count=Math.max(count,series.data.length);return count}recordSample(){const rowCount=this.recordCount(),seriesCount=this.datasets.length;return{rowCount,seriesCount,...sampleChartTableIndexes(rowCount,seriesCount)}}generatedDataIsSampled(){if(this.hasCustomDataTable())return!1;const sample=this.recordSample();return sample.rowCount===0||sample.seriesCount===0?!1:sample.rowIndexes.length<sample.rowCount||sample.seriesIndexes.length<sample.seriesCount}dataTruncationMessage(){return this.generatedDataIsSampled()?this.localize("chartDataSampled"):""}hasCustomDataTable(){return Array.from(this.children).some(child=>child.getAttribute("slot")==="data-table")}interactiveMarks(){const marks=[],sample=this.recordSample();if(this.effectiveType==="bar")for(const index of sample.rowIndexes)for(const datasetIndex of sample.seriesIndexes){const value=this.datasets[datasetIndex]?.data[index];value==null||!Number.isFinite(value)||this.skipZero&&value===0||marks.push({datasetIndex,index,label:this.labels[index]??"",value})}else sample.seriesIndexes.forEach(datasetIndex=>{const series=this.datasets[datasetIndex];series&&sample.rowIndexes.forEach(index=>{const value=series.data[index];value==null||!Number.isFinite(value)||marks.push({datasetIndex,index,label:this.labels[index]??"",value})})});return marks}awaitingFitMeasurement(){return this.layout==="fit"&&this.fitMeasurementAvailable&&(this.plotWidth<=0||this.plotHeight<=0)}refreshFitMeasurementAvailability(){this.fitMeasurementAvailable=typeof this.ownerDocument?.defaultView?.ResizeObserver=="function"}markIndexMap(){return new Map(this.interactiveMarks().map((mark,index)=>[`${mark.datasetIndex}:${mark.index}`,index]))}normalizedMarkIndex(marks=this.interactiveMarks()){return marks.length?Math.min(Math.max(this.activeMarkIndex,0),marks.length-1):-1}markAnnouncement(index,marks=this.interactiveMarks()){const mark=marks[index];if(!mark)return"";const series=this.datasets[mark.datasetIndex]?.label??this.localize("chartSeriesLabel"),custom=this.formatter?.({value:mark.value,surface:"spoken",datasetIndex:mark.datasetIndex,index:mark.index,label:mark.label,seriesLabel:series})??this.resolvePointText(mark.label,mark.value,mark.datasetIndex);return custom?this.localize("liteChartCustomMarkSummary",void 0,{content:custom,index:getNumberFormat(this.effectiveLocale).format(index+1),total:getNumberFormat(this.effectiveLocale).format(marks.length)}):this.localize("liteChartMarkSummary",void 0,{series,label:mark.label,value:getNumberFormat(this.effectiveLocale).format(mark.value),index:getNumberFormat(this.effectiveLocale).format(index+1),total:getNumberFormat(this.effectiveLocale).format(marks.length)})}onMarkFocus(index){const marks=this.interactiveMarks();marks[index]&&(this.activeMarkIndex=index,this.liveRegion?.announce(this.markAnnouncement(index,marks),{force:!0}))}focusMark(index){this.interactiveMarks()[index]&&(this.activeMarkIndex=index,this.updateComplete.then(()=>{const mark=Array.from(this.renderRoot.querySelectorAll('[part="bar"], [part="point"]'))[index];mark&&(activeElementIn(this.shadowRoot)===mark?this.onMarkFocus(index):mark.focus())}))}barValueToY(value,plotY,plotH,lo,hi){if(this.scale==="sqrt"){const zeroY=plotY+plotH-domainFraction(0,lo,hi)*plotH;if(value>=0){const domainMax2=hi>0?hi:1,fraction2=Math.sqrt(Math.min(domainMax2,value)/domainMax2);return zeroY-fraction2*(zeroY-plotY)}const domainMax=lo<0?-lo:1,fraction=Math.sqrt(Math.min(domainMax,-value)/domainMax);return zeroY+fraction*(plotY+plotH-zeroY)}return plotY+plotH-this.valueFraction(value,lo,hi)*plotH}valueFraction(value,lo,hi){return this.scale==="logarithmic"?logDomainFraction(value,this.logDomainFloor(lo,hi),hi):domainFraction(value,lo,hi)}logDomainFloor(lo,hi){if(lo>0)return lo;let smallest=Number.POSITIVE_INFINITY;for(const series of this.datasets)for(const value of series.data)value==null||!Number.isFinite(value)||value<=0||value<smallest&&(smallest=value);return Number.isFinite(smallest)?smallest:hi>0?hi/10:1}effectiveMinBarHeight(){return this.minBarHeight==null?void 0:finiteRange(this.minBarHeight,0,0,MAX_SCROLL_CONTENT_WIDTH)}roundedBarPath(x,y,w,h){const r=Math.max(0,Math.min(BAR_CORNER_RADIUS,w/2,h));return r<=0?`M${x},${y} h${w} v${h} h${-w} Z`:`M${x},${y+r} Q${x},${y} ${x+r},${y} H${x+w-r} Q${x+w},${y} ${x+w},${y+r} V${y+h} H${x} Z`}domain(){let lo=1/0,hi=-1/0;if(this.effectiveType==="bar"&&this.stacked)for(let i=0;i<this.recordCount();i++){let pos=0,neg=0;for(const s of this.datasets){const v=s.data[i];v==null||!Number.isFinite(v)||(v>=0?pos=finiteAdd(pos,v):neg=finiteAdd(neg,v))}lo=Math.min(lo,neg),hi=Math.max(hi,pos)}else for(const s of this.datasets)for(const v of s.data)v==null||!Number.isFinite(v)||(lo=Math.min(lo,v),hi=Math.max(hi,v));(!Number.isFinite(lo)||!Number.isFinite(hi))&&(lo=0,hi=1);const domain=niceDomain(lo,hi,this.beginAtZero,TICK_COUNT);if(this.scale==="logarithmic"){const ticks=logarithmicTicks(this.logDomainFloor(domain.lo,domain.hi),domain.hi,TICK_COUNT);if(ticks)return{...domain,ticks}}return domain}emitPoint(datasetIndex,index){const label=this.labels[index],value=this.datasets[datasetIndex]?.data[index]??null;this.emit("lr-datum-activate",{kind:this.effectiveType==="bar"?"bar":"point",datasetIndex,index,label,value}),this.emit("lr-point-click",{datasetIndex,index,label,value})}emitNearestLinePoint(event,points,fallbackDatasetIndex,fallbackIndex){let selected=points.find(point=>point.datasetIndex===fallbackDatasetIndex&&point.index===fallbackIndex);const currentTarget=event.currentTarget,svgElement=currentTarget instanceof SVGElement?currentTarget.ownerSVGElement:null,screenMatrix=svgElement?.getScreenCTM();if(event.detail>0&&svgElement&&screenMatrix&&points.length){const renderedPoint=svgElement.createSVGPoint(),squaredDistance=point=>{renderedPoint.x=point.x,renderedPoint.y=point.y;const screenPoint=renderedPoint.matrixTransform(screenMatrix),dx=event.clientX-screenPoint.x,dy=event.clientY-screenPoint.y;return dx*dx+dy*dy};let bestDistance=selected?squaredDistance(selected):Number.POSITIVE_INFINITY;for(const point of points){const distance=squaredDistance(point);distance<bestDistance&&(selected=point,bestDistance=distance)}}this.emitPoint(selected?.datasetIndex??fallbackDatasetIndex,selected?.index??fallbackIndex)}onPointKeyDown(e,datasetIndex,index,markIndex){if(e.key==="Enter"||e.key===" "){e.preventDefault(),this.onMarkFocus(markIndex),this.emitPoint(datasetIndex,index);return}const marks=this.interactiveMarks();if(!marks.length)return;const rtl=this.effectiveDirection==="rtl",forwardKey=rtl?"ArrowLeft":"ArrowRight",backwardKey=rtl?"ArrowRight":"ArrowLeft";let next=markIndex;if(e.key===forwardKey||e.key==="ArrowDown")next=Math.min(marks.length-1,markIndex+1);else if(e.key===backwardKey||e.key==="ArrowUp")next=Math.max(0,markIndex-1);else if(e.key==="Home")next=0;else if(e.key==="End")next=marks.length-1;else return;e.preventDefault(),this.focusMark(next)}formatValueAxisTick(value){return this.formatter?.({value,surface:"tick"})??(this.tickFormat?this.tickFormat(value):formatTick(value,this.effectiveLocale))}renderGrid(plotX,plotY,plotW,plotH,ticks,lo,hi){const rtl=this.effectiveDirection==="rtl";return ticks.map(({value,label})=>{const y=plotY+plotH-this.valueFraction(value,lo,hi)*plotH;return svg`
|
|
23
23
|
<line part="grid-line" x1=${plotX} y1=${y} x2=${plotX+plotW} y2=${y}></line>
|
|
24
24
|
<text
|
|
25
25
|
part="axis-label"
|
|
@@ -28,7 +28,7 @@ var __decorate=function(decorators,target,key,desc){var c=arguments.length,r=c<3
|
|
|
28
28
|
text-anchor="end"
|
|
29
29
|
dominant-baseline="middle"
|
|
30
30
|
>${label}</text>
|
|
31
|
-
`})}renderBars(plotX,plotY,plotH,slot,lo,hi,barOrigins,recordSample,selectedIndices){const groupCount=this.stacked?1:Math.max(1,recordSample.seriesIndexes.length),groupGap=finiteRange(this.barGapRatio??BAR_GROUP_GAP,BAR_GROUP_GAP,0,1),groupW=slot*(1-groupGap),
|
|
31
|
+
`})}renderBars(plotX,plotY,plotH,slot,lo,hi,barOrigins,recordSample,selectedIndices){const groupCount=this.stacked?1:Math.max(1,recordSample.seriesIndexes.length),groupGap=finiteRange(this.barGapRatio??BAR_GROUP_GAP,BAR_GROUP_GAP,0,1),groupW=slot*(1-groupGap),barGap=groupCount>1?Math.min(BAR_GAP*slot,groupW/(2*(groupCount-1))):0,barW=(groupW-barGap*(groupCount-1))/groupCount,markIndexes=this.markIndexMap(),activeMarkIndex=this.normalizedMarkIndex(),numberFormat=getNumberFormat(this.effectiveLocale),minBarHeight=this.effectiveMinBarHeight(),stackedSqrt=this.stacked&&this.scale==="sqrt",stackedLog=this.stacked&&this.scale==="logarithmic",domainMax=hi>0?hi:1,negDomainMax=lo<0?-lo:1,zeroY=plotY+plotH-(stackedLog?0:domainFraction(0,lo,hi))*plotH,clampSvgCoordinate=(value,fallback=zeroY)=>finiteRange(value,fallback,-MAX_SCROLL_CONTENT_WIDTH,MAX_SCROLL_CONTENT_WIDTH),clampSvgLength=value=>finiteRange(value,0,0,MAX_SCROLL_CONTENT_WIDTH),posAvailH=zeroY-plotY,negAvailH=plotY+plotH-zeroY,posTotals=new Map,negTotals=new Map;if(stackedSqrt||stackedLog)for(const i of recordSample.rowIndexes){let pos=0,neg=0;for(const datasetIndex of recordSample.seriesIndexes){const s=this.datasets[datasetIndex];if(!s)continue;const v=s.data[i];v==null||!Number.isFinite(v)||this.skipZero&&v===0||(v>=0?pos=finiteAdd(pos,v):neg=finiteAdd(neg,v))}posTotals.set(i,pos),negTotals.set(i,neg)}const bars=[];for(const i of recordSample.rowIndexes){const slotStart=(barOrigins.get(i)??plotX+i*slot)+(slot-groupW)/2;let stackPos=0,stackNeg=0,posPixelTop=zeroY,negPixelBottom=zeroY;const posCompressedH=stackedSqrt?Math.sqrt(Math.min(domainMax,posTotals.get(i)??0)/domainMax)*posAvailH:0,negCompressedH=stackedSqrt?Math.sqrt(Math.min(negDomainMax,-(negTotals.get(i)??0))/negDomainMax)*negAvailH:0,logTotal=posTotals.get(i)??0,logStackH=stackedLog?this.valueFraction(logTotal,lo,hi)*plotH:0;let logShareTotal=0;if(stackedLog&&logTotal>0)for(const datasetIndex of recordSample.seriesIndexes){const value=this.datasets[datasetIndex]?.data[i];value!=null&&Number.isFinite(value)&&value>0&&(logShareTotal+=value/logTotal)}recordSample.seriesIndexes.forEach((di,sampledDatasetIndex)=>{const s=this.datasets[di];if(!s)return;const v=s.data[i];if(v==null||!Number.isFinite(v)||this.skipZero&&v===0)return;const color=this.colorFor(di,s),paint=this.markPaint(di,s);let rectX,y1,y2;if(this.stacked&&stackedSqrt)if(rectX=slotStart,v>=0){const total=posTotals.get(i)??0,shareLo=total>0?stackPos/total:0,nextStackPos=finiteAdd(stackPos,v),shareHi=total>0?nextStackPos/total:0;y1=zeroY-shareHi*posCompressedH,y2=zeroY-shareLo*posCompressedH,stackPos=nextStackPos}else{const total=-(negTotals.get(i)??0),shareLo=-stackNeg/total,nextStackNeg=finiteAdd(stackNeg,v),shareHi=-nextStackNeg/total;y1=zeroY+shareLo*negCompressedH,y2=zeroY+shareHi*negCompressedH,stackNeg=nextStackNeg}else if(stackedLog){rectX=slotStart;const naturalH=v>0&&logShareTotal>0?v/logTotal/logShareTotal*logStackH:0,segH=clampSvgLength(minBarHeight!=null&&v!==0&&naturalH<minBarHeight?minBarHeight:naturalH);v>=0?(y2=posPixelTop,y1=clampSvgCoordinate(finiteAdd(posPixelTop,-segH),posPixelTop),posPixelTop=y1):(y1=negPixelBottom,y2=clampSvgCoordinate(finiteAdd(negPixelBottom,segH),negPixelBottom),negPixelBottom=y2)}else if(this.stacked)if(rectX=slotStart,v>=0){const naturalH=clampSvgLength(Math.max(0,zeroY-this.barValueToY(v,plotY,plotH,lo,hi))),segH=clampSvgLength(minBarHeight!=null&&v!==0&&naturalH<minBarHeight?minBarHeight:naturalH);y2=posPixelTop,y1=clampSvgCoordinate(finiteAdd(posPixelTop,-segH),posPixelTop),posPixelTop=y1}else{const naturalH=clampSvgLength(Math.max(0,this.barValueToY(v,plotY,plotH,lo,hi)-zeroY)),segH=clampSvgLength(minBarHeight!=null&&v!==0&&naturalH<minBarHeight?minBarHeight:naturalH);y1=negPixelBottom,y2=clampSvgCoordinate(finiteAdd(negPixelBottom,segH),negPixelBottom),negPixelBottom=y2}else{rectX=slotStart+sampledDatasetIndex*(barW+barGap);const zeroClamped=Math.min(hi,Math.max(lo,0)),barValLo=Math.min(zeroClamped,v),barValHi=Math.max(zeroClamped,v);y1=this.barValueToY(barValHi,plotY,plotH,lo,hi),y2=this.barValueToY(barValLo,plotY,plotH,lo,hi)}rectX=clampSvgCoordinate(rectX,plotX),y1=clampSvgCoordinate(y1),y2=clampSvgCoordinate(y2);const label=this.labels[i]??"",titleText=this.resolvePointText(label,v,di)??this.localize("liteChartBarLabel",void 0,{series:s.label,label,value:numberFormat.format(v)}),w=clampSvgLength(Math.max(0,barW));let h=clampSvgLength(Math.max(0,y2-y1));if(!(this.stacked&&!stackedSqrt)&&minBarHeight!=null&&v!==0&&h<minBarHeight){const extra=minBarHeight-h;y1=clampSvgCoordinate(finiteAdd(y1,-extra),y1),h=clampSvgLength(Math.max(0,y2-y1))}const markIndex=markIndexes.get(`${di}:${i}`),selected=selectedIndices.has(i),intraGroupSpacing=barW+barGap,crossCategorySpacing=slot-Math.max(0,groupCount-1)*intraGroupSpacing,horizontalSpacing=Math.max(0,groupCount>1?Math.min(intraGroupSpacing,crossCategorySpacing):slot),hitWidth=clampSvgLength(Math.max(w,Math.min(24,horizontalSpacing))),hitHeight=this.stacked?h:clampSvgLength(Math.max(24,h)),hitX=clampSvgCoordinate(rectX-(hitWidth-w)/2,rectX),hitY=clampSvgCoordinate(y1-(hitHeight-h)/2,y1),hitTarget=svg`
|
|
32
32
|
<rect
|
|
33
33
|
data-mark-hit-target="bar"
|
|
34
34
|
aria-hidden="true"
|
|
@@ -58,7 +58,7 @@ var __decorate=function(decorators,target,key,desc){var c=arguments.length,r=c<3
|
|
|
58
58
|
@click=${()=>this.emitPoint(di,i)}
|
|
59
59
|
@focus=${()=>this.onMarkFocus(markIndex)}
|
|
60
60
|
@keydown=${e=>this.onPointKeyDown(e,di,i,markIndex)}
|
|
61
|
-
|
|
61
|
+
>${nativeSvgTitle(titleText)}</path>
|
|
62
62
|
</g>
|
|
63
63
|
`:svg`
|
|
64
64
|
<g class="mark-hit-group">
|
|
@@ -82,7 +82,7 @@ var __decorate=function(decorators,target,key,desc){var c=arguments.length,r=c<3
|
|
|
82
82
|
@click=${()=>this.emitPoint(di,i)}
|
|
83
83
|
@focus=${()=>this.onMarkFocus(markIndex)}
|
|
84
84
|
@keydown=${e=>this.onPointKeyDown(e,di,i,markIndex)}
|
|
85
|
-
|
|
85
|
+
>${nativeSvgTitle(titleText)}</rect>
|
|
86
86
|
</g>
|
|
87
87
|
`)})}return bars}renderLines(plotX,plotY,plotW,plotH,lo,hi,recordSample,selectedIndices){const n=this.recordCount(),xFor=i=>plotX+(n>1?i/(n-1)*plotW:plotW/2),yFor=v=>plotY+plotH-this.valueFraction(v,lo,hi)*plotH,markIndexes=this.markIndexMap(),activeMarkIndex=this.normalizedMarkIndex(),numberFormat=getNumberFormat(this.effectiveLocale),hitPoints=[];return recordSample.seriesIndexes.forEach(datasetIndex=>{const series=this.datasets[datasetIndex];series&&recordSample.rowIndexes.forEach(index=>{const value=series.data[index];value==null||!Number.isFinite(value)||hitPoints.push({datasetIndex,index,x:xFor(index),y:yFor(value)})})}),recordSample.seriesIndexes.map(di=>{const s=this.datasets[di];if(!s)return nothing;const color=this.colorFor(di,s);let d="",penDown=!1,previousSourceIndex=-1;recordSample.rowIndexes.forEach(i=>{const v=s.data[i];if(v==null||!Number.isFinite(v)){penDown=!1,previousSourceIndex=i;return}if(penDown&&previousSourceIndex>=0&&i>previousSourceIndex+1)for(let skipped=previousSourceIndex+1;skipped<i;skipped++){const candidate=s.data[skipped];if(candidate==null||!Number.isFinite(candidate)){penDown=!1;break}}d+=`${penDown?"L":"M"}${xFor(i)},${yFor(v)} `,penDown=!0,previousSourceIndex=i});const dots=recordSample.rowIndexes.map(i=>{const v=s.data[i];if(v==null||!Number.isFinite(v))return nothing;const label=this.labels[i]??"",titleText=this.resolvePointText(label,v,di)??this.localize("liteChartBarLabel",void 0,{series:s.label,label,value:numberFormat.format(v)}),markIndex=markIndexes.get(`${di}:${i}`),selected=selectedIndices.has(i);return svg`
|
|
88
88
|
<g class="mark-hit-group">
|
|
@@ -113,14 +113,14 @@ var __decorate=function(decorators,target,key,desc){var c=arguments.length,r=c<3
|
|
|
113
113
|
@click=${event=>this.emitNearestLinePoint(event,hitPoints,di,i)}
|
|
114
114
|
@focus=${()=>this.onMarkFocus(markIndex)}
|
|
115
115
|
@keydown=${e=>this.onPointKeyDown(e,di,i,markIndex)}
|
|
116
|
-
|
|
116
|
+
>${nativeSvgTitle(titleText)}</circle>
|
|
117
117
|
</g>
|
|
118
118
|
`});return svg`<path
|
|
119
119
|
part="line"
|
|
120
120
|
d=${d.trim()}
|
|
121
121
|
stroke=${color}
|
|
122
122
|
stroke-dasharray=${this.markDash(di)}
|
|
123
|
-
></path>${dots}`})}render(){return this.renderChart()}resolvedValueAxisGutter(ticks,measuredWidth){if(typeof this.valueAxisGutter=="number")return finiteRange(this.valueAxisGutter,PAD_LEFT,0,MAX_SCROLL_CONTENT_WIDTH);if(this.valueAxisGutter!=="auto"||ticks.length===0)return PAD_LEFT;let widest=0;for(const tick of ticks)widest=Math.max(widest,tick.label.length*APPROX_LABEL_CHARACTER_WIDTH);const requested=Math.ceil(widest)+VALUE_AXIS_TICK_OFFSET+AUTO_VALUE_AXIS_SAFETY_INSET,maximum=this.layout==="scroll"?MAX_AUTO_VALUE_AXIS_GUTTER:Math.max(PAD_LEFT,Math.min(MAX_AUTO_VALUE_AXIS_GUTTER,measuredWidth*MAX_AUTO_VALUE_AXIS_GUTTER_FRACTION));return finiteRange(requested,PAD_LEFT,PAD_LEFT,maximum)}automaticMaxLabels(n,plotW,renderedIndexes){if(n<=1)return n;let widest=0;for(const index of renderedIndexes){const label=this.labels[index]??"";widest=Math.max(widest,label.length*APPROX_LABEL_CHARACTER_WIDTH)}if(widest===0)return n;const lane=widest+AUTO_CATEGORY_LABEL_INSET,fits=Math.floor(finiteRange(plotW,0,0,MAX_SCROLL_CONTENT_WIDTH)/lane);return Math.min(n,Math.max(2,fits))}visibleLabelIndexes(n,plotW,renderedIndexes){if(this.maxLabels==null)return;const requested=this.maxLabels==="auto"?this.automaticMaxLabels(n,plotW,renderedIndexes):this.maxLabels;if(typeof requested!="number")return;const max=finiteCount(requested,n);if(n<=max)return;const renderedCount=renderedIndexes.length,count=Math.min(renderedCount,MAX_RENDERED_CHART_RECORDS,Math.max(2,max));return count<=1?new Set(count===1?[renderedIndexes[0]]:[]):new Set(Array.from({length:count},(_,index)=>renderedIndexes[Math.round(index*(renderedCount-1)/(count-1))]))}displayCategoryLabel(label,availableWidth){const maxCharacters=Math.max(1,Math.floor(availableWidth/APPROX_LABEL_CHARACTER_WIDTH));return label.length<=maxCharacters?label:maxCharacters===1?"
|
|
123
|
+
></path>${dots}`})}render(){return this.renderChart()}resolvedValueAxisGutter(ticks,measuredWidth){if(typeof this.valueAxisGutter=="number")return finiteRange(this.valueAxisGutter,PAD_LEFT,0,MAX_SCROLL_CONTENT_WIDTH);if(this.valueAxisGutter!=="auto"||ticks.length===0)return PAD_LEFT;let widest=0;for(const tick of ticks)widest=Math.max(widest,tick.label.length*APPROX_LABEL_CHARACTER_WIDTH);const requested=Math.ceil(widest)+VALUE_AXIS_TICK_OFFSET+AUTO_VALUE_AXIS_SAFETY_INSET,maximum=this.layout==="scroll"?MAX_AUTO_VALUE_AXIS_GUTTER:Math.max(PAD_LEFT,Math.min(MAX_AUTO_VALUE_AXIS_GUTTER,measuredWidth*MAX_AUTO_VALUE_AXIS_GUTTER_FRACTION));return finiteRange(requested,PAD_LEFT,PAD_LEFT,maximum)}automaticMaxLabels(n,plotW,renderedIndexes){if(n<=1)return n;let widest=0;for(const index of renderedIndexes){const label=this.labels[index]??"";widest=Math.max(widest,label.length*APPROX_LABEL_CHARACTER_WIDTH)}if(widest===0)return n;const lane=widest+AUTO_CATEGORY_LABEL_INSET,fits=Math.floor(finiteRange(plotW,0,0,MAX_SCROLL_CONTENT_WIDTH)/lane);return Math.min(n,Math.max(2,fits))}visibleLabelIndexes(n,plotW,renderedIndexes){if(this.maxLabels==null)return;const requested=this.maxLabels==="auto"?this.automaticMaxLabels(n,plotW,renderedIndexes):this.maxLabels;if(typeof requested!="number")return;const max=finiteCount(requested,n);if(n<=max)return;const renderedCount=renderedIndexes.length,count=Math.min(renderedCount,MAX_RENDERED_CHART_RECORDS,Math.max(2,max));return count<=1?new Set(count===1?[renderedIndexes[0]]:[]):new Set(Array.from({length:count},(_,index)=>renderedIndexes[Math.round(index*(renderedCount-1)/(count-1))]))}displayCategoryLabel(label,availableWidth){const maxCharacters=Math.max(1,Math.floor(availableWidth/APPROX_LABEL_CHARACTER_WIDTH));return label.length<=maxCharacters?label:maxCharacters===1?"…":`${label.slice(0,maxCharacters-1)}…`}renderChart(){const n=this.recordCount(),awaitingFitMeasurement=this.awaitingFitMeasurement(),h=finiteRange(this.plotHeight||200,200,0,MAX_SCROLL_CONTENT_WIDTH),measuredWidth=finiteRange(this.plotWidth||400,400,0,MAX_SCROLL_CONTENT_WIDTH),{lo,hi,ticks}=this.domain(),formattedTicks=awaitingFitMeasurement||this.withoutValueAxis?[]:ticks.map(value=>({value,label:this.formatValueAxisTick(value)})),axisGutter=this.resolvedValueAxisGutter(formattedTicks,measuredWidth)+(this.yLabel?AXIS_TITLE_SPACE:0),rtl=this.effectiveDirection==="rtl",padBottom=PAD_BOTTOM+(this.xLabel?AXIS_TITLE_SPACE:0),plotX=rtl?PAD_RIGHT:axisGutter,plotY=PAD_TOP,plotH=Math.max(0,h-plotY-padBottom);let w,plotW,slot;if(this.layout==="scroll"){const maxSlot=n>0?MAX_SCROLL_CONTENT_WIDTH/n:MAX_SCROLL_CONTENT_WIDTH;slot=finiteRange(this.barWidth,32,0,maxSlot),plotW=n*slot,w=axisGutter+plotW+PAD_RIGHT}else w=measuredWidth,plotW=Math.max(0,w-axisGutter-PAD_RIGHT),slot=n>0?plotW/n:0;const recordSample=this.recordSample(),selectedIndices=new Set,renderedRows=new Set(recordSample.rowIndexes);for(let index=0;index<this.selectedIndices.length;index++){const candidate=this.selectedIndices[index];typeof candidate=="number"&&Number.isInteger(candidate)&&renderedRows.has(candidate)&&selectedIndices.add(candidate)}const barOrigins=this.effectiveType==="bar"&&!awaitingFitMeasurement?new Map(recordSample.rowIndexes.map(index=>{const fallback=plotX+index*slot,candidate=typeof this.barX=="function"?this.barX(index):fallback;return[index,finiteRange(candidate,fallback,-MAX_SCROLL_CONTENT_WIDTH,MAX_SCROLL_CONTENT_WIDTH)]})):new Map,grid=awaitingFitMeasurement||this.withoutValueAxis?[]:this.renderGrid(plotX,plotY,plotW,plotH,formattedTicks,lo,hi),marks=awaitingFitMeasurement?[]:this.effectiveType==="bar"?this.renderBars(plotX,plotY,plotH,slot,lo,hi,barOrigins,recordSample,selectedIndices):this.renderLines(plotX,plotY,plotW,plotH,lo,hi,recordSample,selectedIndices),visibleLabelIndexes=this.visibleLabelIndexes(n,plotW,recordSample.rowIndexes),decimationStride=visibleLabelIndexes?n/visibleLabelIndexes.size:1,categoryLabelWidth=Math.max(0,decimationStride*(this.effectiveType==="bar"?slot:n>1?plotW/(n-1):plotW)-BAR_CORNER_RADIUS),categoryLabels=awaitingFitMeasurement?[]:recordSample.rowIndexes.map(i=>{const label=this.labels[i]??"";if(visibleLabelIndexes&&!visibleLabelIndexes.has(i))return nothing;const fullLabel=label??"",x=this.effectiveType==="bar"&&n>0?(barOrigins.get(i)??plotX+i*slot)+slot/2:plotX+(n>1?i/(n-1)*plotW:plotW/2),displayLabel=this.displayCategoryLabel(fullLabel,categoryLabelWidth);return svg`<text
|
|
124
124
|
part="axis-label"
|
|
125
125
|
x=${x}
|
|
126
126
|
y=${plotY+plotH+CATEGORY_LABEL_OFFSET}
|
|
@@ -145,12 +145,14 @@ var __decorate=function(decorators,target,key,desc){var c=arguments.length,r=c<3
|
|
|
145
145
|
${marks}
|
|
146
146
|
${!awaitingFitMeasurement&&this.yLabel?svg`<text
|
|
147
147
|
part="axis-title"
|
|
148
|
+
aria-label=${this.yLabel}
|
|
149
|
+
data-title-extent=${plotH}
|
|
148
150
|
x=${rtl?w-12:12}
|
|
149
151
|
y=${plotY+plotH/2}
|
|
150
152
|
text-anchor="middle"
|
|
151
153
|
transform="rotate(${rtl?90:-90}, ${rtl?w-12:12}, ${plotY+plotH/2})"
|
|
152
154
|
>${this.yLabel}</text>`:nothing}
|
|
153
|
-
${!awaitingFitMeasurement&&this.xLabel?svg`<text part="axis-title" x=${plotX+plotW/2} y=${plotY+plotH+padBottom-2} text-anchor="middle">${this.xLabel}</text>`:nothing}
|
|
155
|
+
${!awaitingFitMeasurement&&this.xLabel?svg`<text part="axis-title" aria-label=${this.xLabel} data-title-extent=${plotW} x=${plotX+plotW/2} y=${plotY+plotH+padBottom-2} text-anchor="middle">${this.xLabel}</text>`:nothing}
|
|
154
156
|
</svg>
|
|
155
157
|
<lr-live-region part="live-region"></lr-live-region>
|
|
156
158
|
${this.description?html`<p part="description" id=${this.descriptionId} class="sr-only">${this.description}</p>`:nothing}
|
|
@@ -167,7 +169,7 @@ var __decorate=function(decorators,target,key,desc){var c=arguments.length,r=c<3
|
|
|
167
169
|
<div
|
|
168
170
|
id=${this.dataTableId}
|
|
169
171
|
part="data-table"
|
|
170
|
-
?data-visually-hidden=${!
|
|
172
|
+
?data-visually-hidden=${!this.dataTableVisible}
|
|
171
173
|
>
|
|
172
174
|
<slot name="data-table" @slotchange=${()=>this.requestUpdate()}></slot>
|
|
173
175
|
${hasCustomDataTable?nothing:this.datasets.length>1?html`<table part="table" class=${this.dataTableVisible?nothing:"sr-only"}>
|
|
@@ -186,7 +188,11 @@ var __decorate=function(decorators,target,key,desc){var c=arguments.length,r=c<3
|
|
|
186
188
|
${showTableTotals?(()=>{const total=this.tableTotalAt(index,recordSample.seriesIndexes);return html`<td>${total==null?"":this.formatTableCell(total,{kind:"total",datasetIndex:null,index,label,seriesLabel:null},tableNumberFormat)}</td>`})():nothing}
|
|
187
189
|
</tr>`})}
|
|
188
190
|
</tbody>
|
|
189
|
-
</table>`:html`<ul
|
|
191
|
+
</table>`:html`<ul
|
|
192
|
+
part="data-list"
|
|
193
|
+
class=${this.dataTableVisible?nothing:"sr-only"}
|
|
194
|
+
aria-label=${this.localize("chartData")}
|
|
195
|
+
>
|
|
190
196
|
${marksForA11y.map((_mark,index)=>html`<li>${this.markAnnouncement(index,marksForA11y)}</li>`)}
|
|
191
197
|
</ul>`}
|
|
192
198
|
</div>
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{css}from"lit";import{forcedColorLegendSwatchStyles}from"./chart-forced-colors.js";const styles=css` :host { display: block; position: relative; inline-size: 100%; min-inline-size: 0; min-block-size: var(--lr-chart-height, var(--_lr-chart-height, var(--lr-size-280px))); block-size: auto; container-type: inline-size; contain-intrinsic-inline-size: var(--lr-size-20rem); --_lr-chart-grid-color: var(--lr-color-border); --_lr-chart-tick-color: var(--lr-color-text-quiet); --_lr-chart-legend-color: var(--lr-color-text); --_lr-chart-tooltip-bg: var(--lr-color-surface); --_lr-chart-tooltip-text: var(--lr-color-text); } [part='base'] { position: relative; inline-size: 100%; display: grid; grid-template-columns: minmax(0, 1fr); grid-template-areas: 'plot' 'notice' 'legend' 'table'; gap: var(--lr-space-xs); } :host([layout='scroll']) [part='base'] { overflow-x: auto; overflow-y: hidden; } svg { grid-area: plot; display: block; inline-size: 100%; block-size: var(--lr-chart-height, var(--_lr-chart-height, var(--lr-size-280px))); min-block-size: var(--lr-icon-button-size); overflow: hidden; } [part='grid-line'] { stroke: var(--lr-chart-grid-color, var(--_lr-chart-grid-color)); stroke-width: var(--lr-border-width-thin); } [part='axis-label'] { fill: var(--lr-chart-tick-color, var(--_lr-chart-tick-color)); font-size: var(--lr-font-size-2xs); font-family: var(--lr-font); } [part='axis-title'] { fill: var(--lr-chart-tick-color, var(--_lr-chart-tick-color)); font-size: var(--lr-font-size-xs); font-weight: var(--lr-font-weight-semibold); font-family: var(--lr-font); } [part='bar'] { cursor: pointer; } [data-mark-hit-target] { cursor: pointer; } :where([part='bar']):hover, :where([part='point']):hover, :where(.mark-hit-group):hover [part='bar'], :where(.mark-hit-group):hover [part='point'] { fill: color-mix(in oklab, currentColor, var(--lr-color-mix-partner) var(--lr-color-mix-hover)); } :where([part='bar']):active, :where([part='point']):active, :where(.mark-hit-group):active [part='bar'], :where(.mark-hit-group):active [part='point'] { fill: color-mix(in oklab, currentColor, var(--lr-color-mix-partner) var(--lr-color-mix-active)); } [part='bar'][data-selected], [part='point'][data-selected] { stroke: var(--lr-lite-chart-selected-outline-color, var(--lr-color-brand)); stroke-width: var(--lr-lite-chart-selected-outline-width, var(--lr-size-2px)); } [part='bar']:focus-visible, [part='point']:focus-visible { outline: var(--lr-focus-ring-width) solid var(--lr-focus-ring-color); outline-offset: var(--lr-focus-ring-offset); } :where(.mark-hit-group):has([part='bar']:focus-visible, [part='point']:focus-visible) [data-mark-hit-target] { stroke: var(--lr-focus-ring-color); stroke-width: var(--lr-focus-ring-width); } [part='line'] { fill: none; stroke-width: var(--lr-border-width-medium); } [part='bar'], [part='line'], [part='point'], pattern { forced-color-adjust: none; } [part='point'] { cursor: pointer; } [part='legend'] { grid-area: legend; display: flex; flex-wrap: wrap; gap: var(--lr-space-s); justify-content: center; flex: 0 0 auto; } [part='legend-item'] { display: inline-flex; align-items: center; min-inline-size: 0; max-inline-size: 100%; overflow-wrap: anywhere; gap: var(--lr-size-0-35em); font-size: var(--lr-size-0-8rem); color: var(--lr-chart-legend-color, var(--_lr-chart-legend-color)); } [part='legend-swatch'] { inline-size: var(--lr-size-0-7em); block-size: var(--lr-size-0-7em); border-radius: var(--lr-size-2px); flex: 0 0 auto; } ${forcedColorLegendSwatchStyles} [part='legend-text'] { margin-inline-start: var(--lr-space-2xs); color: var(--lr-chart-tick-color, var(--_lr-chart-tick-color)); } [part='data-table'][data-visually-hidden] { position: absolute; inline-size: var(--lr-size-1px); block-size: var(--lr-size-1px); overflow: clip; clip-path: inset(50%); white-space: nowrap; } [part='data-table'] { grid-area: table; min-inline-size: 0; max-inline-size: 100%; overflow-x: auto; overflow-y: hidden; } [part='data-truncation'] { grid-area: notice; margin: 0; padding: var(--lr-space-xs); color: var(--lr-color-warning); font-size: var(--lr-font-size-sm); overflow-wrap: anywhere; } [part='base']:where([data-legend-position='top']) { grid-template-areas: 'legend' 'plot' 'notice' 'table'; } [part='base']:where([data-legend-position='inline-start']) { grid-template-areas: 'legend plot' 'notice notice' 'table table'; grid-template-columns: minmax(0, min(33cqi, var(--lr-chart-legend-side-max, var(--lr-size-15rem)))) minmax(0, 1fr); } [part='base']:where([data-legend-position='inline-end']) { grid-template-areas: 'plot legend' 'notice notice' 'table table'; grid-template-columns: minmax(0, 1fr) minmax(0, min(33cqi, var(--lr-chart-legend-side-max, var(--lr-size-15rem)))); } @container (max-width: 479px) { [part='base']:where([data-legend-position='inline-start']), [part='base']:where([data-legend-position='inline-end']) { grid-template-areas: 'plot' 'notice' 'legend' 'table'; grid-template-columns: minmax(0, 1fr); } } [part='data-table-toggle'] { align-self: flex-start; font: inherit; font-size: var(--lr-font-size-xs); min-block-size: var(--lr-icon-button-size); padding: var(--lr-size-0-15rem) var(--lr-size-0-5rem); border: var(--lr-border-width-thin) solid var(--lr-color-border); border-radius: var(--lr-radius); background: var(--lr-color-surface); color: var(--lr-color-text); max-inline-size: 100%; white-space: normal; overflow-wrap: break-word; cursor: pointer; } [part='data-table-toggle']:hover { background: var(--lr-lite-chart-data-table-toggle-hover-bg, var(--lr-color-brand-quiet)); } [part='data-table-toggle']:active { background: var( --lr-lite-chart-data-table-toggle-active-bg, color-mix(in oklab, var(--lr-color-brand-quiet), var(--lr-color-mix-partner) var(--lr-color-mix-active)) ); } [part='data-table-toggle']:focus-visible { outline: var(--lr-focus-ring); outline-offset: var(--lr-focus-ring-offset); } `;export{styles};
|
|
1
|
+
import{css}from"lit";import{forcedColorLegendSwatchStyles}from"./chart-forced-colors.js";const styles=css` :host { display: block; position: relative; inline-size: 100%; min-inline-size: 0; min-block-size: var(--lr-chart-height, var(--_lr-chart-height, var(--lr-size-280px))); block-size: auto; container-type: inline-size; contain-intrinsic-inline-size: var(--lr-size-20rem); --_lr-chart-grid-color: var(--lr-color-border); --_lr-chart-tick-color: var(--lr-color-text-quiet); --_lr-chart-legend-color: var(--lr-color-text); --_lr-chart-tooltip-bg: var(--lr-color-surface); --_lr-chart-tooltip-text: var(--lr-color-text); } [part='base'] { position: relative; inline-size: 100%; display: grid; grid-template-columns: minmax(0, 1fr); grid-template-areas: 'plot' 'notice' 'legend' 'table'; gap: var(--lr-space-xs); } :host([layout='scroll']) [part='base'] { overflow-x: auto; overflow-y: hidden; } svg { grid-area: plot; display: block; inline-size: 100%; block-size: var(--lr-chart-height, var(--_lr-chart-height, var(--lr-size-280px))); min-block-size: var(--lr-icon-button-size); overflow: hidden; } [part='grid-line'] { stroke: var(--lr-chart-grid-color, var(--_lr-chart-grid-color)); stroke-width: var(--lr-border-width-thin); } [part='axis-label'] { fill: var(--lr-chart-tick-color, var(--_lr-chart-tick-color)); font-size: var(--lr-font-size-2xs); font-family: var(--lr-font); } [part='axis-title'] { fill: var(--lr-chart-tick-color, var(--_lr-chart-tick-color)); font-size: var(--lr-font-size-xs); font-weight: var(--lr-font-weight-semibold); font-family: var(--lr-font); } [part='bar'] { cursor: pointer; } [data-mark-hit-target] { cursor: pointer; } :where([part='bar']):hover, :where([part='point']):hover, :where(.mark-hit-group):hover [part='bar'], :where(.mark-hit-group):hover [part='point'] { fill: color-mix(in oklab, currentColor, var(--lr-color-mix-partner) var(--lr-color-mix-hover)); } :where([part='bar']):active, :where([part='point']):active, :where(.mark-hit-group):active [part='bar'], :where(.mark-hit-group):active [part='point'] { fill: color-mix(in oklab, currentColor, var(--lr-color-mix-partner) var(--lr-color-mix-active)); } [part='bar'][data-selected], [part='point'][data-selected] { stroke: var(--lr-lite-chart-selected-outline-color, var(--lr-color-brand)); stroke-width: var(--lr-lite-chart-selected-outline-width, var(--lr-size-2px)); } [part='bar']:focus-visible, [part='point']:focus-visible { outline: var(--lr-focus-ring-width) solid var(--lr-focus-ring-color); outline-offset: var(--lr-focus-ring-offset); } :where(.mark-hit-group):has([part='bar']:focus-visible, [part='point']:focus-visible) [data-mark-hit-target] { stroke: var(--lr-focus-ring-color); stroke-width: var(--lr-focus-ring-width); } [part='line'] { fill: none; stroke-width: var(--lr-border-width-medium); } [part='bar'], [part='line'], [part='point'], pattern { forced-color-adjust: none; } [part='point'] { cursor: pointer; } [part='legend'] { grid-area: legend; display: flex; flex-wrap: wrap; gap: var(--lr-space-s); justify-content: center; flex: 0 0 auto; } [part='legend-item'] { display: inline-flex; align-items: center; min-inline-size: 0; max-inline-size: 100%; overflow-wrap: anywhere; gap: var(--lr-size-0-35em); font-size: var(--lr-size-0-8rem); color: var(--lr-chart-legend-color, var(--_lr-chart-legend-color)); } [part='legend-swatch'] { inline-size: var(--lr-size-0-7em); block-size: var(--lr-size-0-7em); border-radius: var(--lr-size-2px); flex: 0 0 auto; } ${forcedColorLegendSwatchStyles} [part='legend-text'] { margin-inline-start: var(--lr-space-2xs); color: var(--lr-chart-tick-color, var(--_lr-chart-tick-color)); } [part='data-table'][data-visually-hidden] { position: absolute; inline-size: var(--lr-size-1px); block-size: var(--lr-size-1px); overflow: clip; clip-path: inset(50%); white-space: nowrap; } [part='data-table'] { grid-area: table; min-inline-size: 0; max-inline-size: 100%; overflow-x: auto; overflow-y: hidden; } [part='data-truncation'] { grid-area: notice; margin: 0; padding: var(--lr-space-xs); color: var(--lr-color-warning); font-size: var(--lr-font-size-sm); overflow-wrap: anywhere; } [part='base']:where([data-legend-position='top']) { grid-template-areas: 'legend' 'plot' 'notice' 'table'; } [part='base']:where([data-legend-position='inline-start']) { grid-template-areas: 'legend plot' 'notice notice' 'table table'; grid-template-columns: minmax(0, min(33cqi, var(--lr-chart-legend-side-max, var(--lr-size-15rem)))) minmax(0, 1fr); } [part='base']:where([data-legend-position='inline-end']) { grid-template-areas: 'plot legend' 'notice notice' 'table table'; grid-template-columns: minmax(0, 1fr) minmax(0, min(33cqi, var(--lr-chart-legend-side-max, var(--lr-size-15rem)))); } @container (max-width: 479px) { [part='base']:where([data-legend-position='inline-start']), [part='base']:where([data-legend-position='inline-end']) { grid-template-areas: 'plot' 'notice' 'legend' 'table'; grid-template-columns: minmax(0, 1fr); } } [part='data-table-toggle'] { align-self: flex-start; font: inherit; font-size: var(--lr-font-size-xs); min-inline-size: var(--lr-icon-button-size); min-block-size: var(--lr-icon-button-size); padding: var(--lr-size-0-15rem) var(--lr-size-0-5rem); border: var(--lr-border-width-thin) solid var(--lr-color-border); border-radius: var(--lr-radius); background: var(--lr-color-surface); color: var(--lr-color-text); max-inline-size: 100%; white-space: normal; overflow-wrap: break-word; cursor: pointer; } [part='data-table-toggle']:hover { background: var(--lr-lite-chart-data-table-toggle-hover-bg, var(--lr-color-brand-quiet)); } [part='data-table-toggle']:active { background: var( --lr-lite-chart-data-table-toggle-active-bg, color-mix(in oklab, var(--lr-color-brand-quiet), var(--lr-color-mix-partner) var(--lr-color-mix-active)) ); } [part='data-table-toggle']:focus-visible { outline: var(--lr-focus-ring); outline-offset: var(--lr-focus-ring-offset); } `;export{styles};
|
|
@@ -111,7 +111,7 @@ showComposer:boolean;
|
|
|
111
111
|
/** Controlled value of the built-in composer. */
|
|
112
112
|
composerValue:string;
|
|
113
113
|
/** Status of the built-in composer. */
|
|
114
|
-
composerStatus:ChatComposerStatus;
|
|
114
|
+
private composerStatusValue;get composerStatus():ChatComposerStatus;set composerStatus(value:ChatComposerStatus);
|
|
115
115
|
/** Placeholder for the built-in composer. */
|
|
116
116
|
composerPlaceholder:string;
|
|
117
117
|
/** Minimum and maximum rows for the built-in composer. */
|
|
@@ -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}from"lit/decorators.js";import{repeat}from"lit/directives/repeat.js";import{LyraElement}from"../../../internal/lyra-element.js";import{finiteCount}from"../../../internal/numbers.js";import{styles}from"./agent-workspace.styles.js";import{trueDefaultBooleanConverter}from"../../../internal/converters.js";import{LYRA_DEFAULT_agentWorkspaceContext,LYRA_DEFAULT_agentWorkspaceConversation,LYRA_DEFAULT_agentWorkspaceDetails,LYRA_DEFAULT_agentWorkspaceEmpty,LYRA_DEFAULT_agentWorkspaceGrounding,LYRA_DEFAULT_agentWorkspaceLabel,LYRA_DEFAULT_agentWorkspaceRetrieval,LYRA_DEFAULT_agentWorkspaceRun,LYRA_DEFAULT_agentWorkspaceTools,LYRA_DEFAULT_composerPlaceholder}from"../../../internal/default-strings.generated.js";const MAX_RENDERED_MESSAGES=500;function firstByWorkspaceIdentity(items,identity){const result=[],seen=new Set;for(const item of items){let id;try{id=identity(item)}catch{continue}typeof id!="string"||id.trim()===""||seen.has(id)||(seen.add(id),result.push(item))}return result}class LyraAgentWorkspace extends LyraElement{constructor(){super(...arguments),this.label="",this.accessibleLabel=null,this.messages=[],this.run=null,this.metrics=[],this.tools=[],this.retrievalChunks=[],this.selectedRetrievalChunkIds=[],this.retrievalLoading=!1,this.retrievalHasMore=!1,this.retrievalErrorText="",this.groundingAssessment=null,this.citations=[],this.contextSegments=[],this.contextTotal=0,this.follow=!0,this.unreadStartIndex=null,this.showDetails=!0,this.showComposer=!0,this.composerValue="",this.
|
|
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{repeat}from"lit/directives/repeat.js";import{LyraElement}from"../../../internal/lyra-element.js";import{finiteCount}from"../../../internal/numbers.js";import{normalizeChatComposerStatus}from"../chat-composer/chat-composer.class.js";import{styles}from"./agent-workspace.styles.js";import{trueDefaultBooleanConverter}from"../../../internal/converters.js";import{LYRA_DEFAULT_agentWorkspaceContext,LYRA_DEFAULT_agentWorkspaceConversation,LYRA_DEFAULT_agentWorkspaceDetails,LYRA_DEFAULT_agentWorkspaceEmpty,LYRA_DEFAULT_agentWorkspaceGrounding,LYRA_DEFAULT_agentWorkspaceLabel,LYRA_DEFAULT_agentWorkspaceRetrieval,LYRA_DEFAULT_agentWorkspaceRun,LYRA_DEFAULT_agentWorkspaceTools,LYRA_DEFAULT_composerPlaceholder,LYRA_DEFAULT_fieldRequired}from"../../../internal/default-strings.generated.js";const MAX_RENDERED_MESSAGES=500;function firstByWorkspaceIdentity(items,identity){const result=[],seen=new Set;for(const item of items){let id;try{id=identity(item)}catch{continue}typeof id!="string"||id.trim()===""||seen.has(id)||(seen.add(id),result.push(item))}return result}class LyraAgentWorkspace extends LyraElement{constructor(){super(...arguments),this.label="",this.accessibleLabel=null,this.messages=[],this.run=null,this.metrics=[],this.tools=[],this.retrievalChunks=[],this.selectedRetrievalChunkIds=[],this.retrievalLoading=!1,this.retrievalHasMore=!1,this.retrievalErrorText="",this.groundingAssessment=null,this.citations=[],this.contextSegments=[],this.contextTotal=0,this.follow=!0,this.unreadStartIndex=null,this.showDetails=!0,this.showComposer=!0,this.composerValue="",this.composerStatusValue="idle",this.composerPlaceholder="",this.composerMinRows=1,this.composerMaxRows=8,this.onRetrievalSelect=event=>{event.stopPropagation(),this.emit("lr-retrieval-select",event.detail)},this.onMessageRetry=event=>{event.stopPropagation(),event.detail.messageId&&this.emit("lr-message-retry",{messageId:event.detail.messageId})},this.onNamedSlotChange=()=>{this.requestUpdate()}}static{this.defaultStrings={...super.defaultStrings,agentWorkspaceContext:LYRA_DEFAULT_agentWorkspaceContext,agentWorkspaceConversation:LYRA_DEFAULT_agentWorkspaceConversation,agentWorkspaceDetails:LYRA_DEFAULT_agentWorkspaceDetails,agentWorkspaceEmpty:LYRA_DEFAULT_agentWorkspaceEmpty,agentWorkspaceGrounding:LYRA_DEFAULT_agentWorkspaceGrounding,agentWorkspaceLabel:LYRA_DEFAULT_agentWorkspaceLabel,agentWorkspaceRetrieval:LYRA_DEFAULT_agentWorkspaceRetrieval,agentWorkspaceRun:LYRA_DEFAULT_agentWorkspaceRun,agentWorkspaceTools:LYRA_DEFAULT_agentWorkspaceTools,composerPlaceholder:LYRA_DEFAULT_composerPlaceholder,fieldRequired:LYRA_DEFAULT_fieldRequired}}static{this.immutableEventDetails=Object.freeze(["lr-retrieval-select"])}static{this.ownedCollectionProperties=Object.freeze(["messages","run","metrics","tools","retrievalChunks","selectedRetrievalChunkIds","groundingAssessment","citations","contextSegments"])}static{this.styles=[LyraElement.styles,styles]}get composerStatus(){return this.composerStatusValue}set composerStatus(value){const previous=this.composerStatusValue;this.composerStatusValue=normalizeChatComposerStatus(value),this.requestUpdate("composerStatus",previous)}hasSlotted(name){return Array.from(this.children).some(element=>element.getAttribute("slot")===name)}get safeContextTotal(){return finiteCount(this.contextTotal)}get effectiveTools(){return firstByWorkspaceIdentity(this.tools,entry=>{const id=entry.id;if(typeof id!="string"||id.trim()==="")return;const sourceKey=entry.sourceKey;return`${typeof sourceKey=="string"?sourceKey:""}\0${id}`})}get effectiveRetrievalChunks(){return firstByWorkspaceIdentity(this.retrievalChunks,chunk=>chunk.id)}get effectiveCitations(){return firstByWorkspaceIdentity(this.citations,citation=>citation.id)}get effectiveContextSegments(){return firstByWorkspaceIdentity(this.contextSegments,segment=>segment.id)}get effectiveMessages(){const source=this.messages,seen=new Set,messages=[];for(let sourceIndex=0;sourceIndex<source.length;sourceIndex++){const message=source[sourceIndex];if(!message)continue;const id=message?.id;typeof id!="string"||id.trim()===""||seen.has(id)||(seen.add(id),messages.push({message,sourceIndex}))}return messages}get safeUnreadStartIndex(){if(this.unreadStartIndex==null)return null;const normalized=finiteCount(this.unreadStartIndex);if(this.hasSlotted("messages"))return normalized;const messages=this.effectiveMessages,effectiveIndex=messages.filter(({sourceIndex})=>sourceIndex<normalized).length;return Math.max(0,effectiveIndex-this.messageWindowOffsetFor(messages))}get safeComposerMinRows(){return Math.max(1,finiteCount(this.composerMinRows,1))}get safeComposerMaxRows(){return Math.max(this.safeComposerMinRows,finiteCount(this.composerMaxRows,8))}stopOwnedEvent(event){event.stopPropagation()}renderMessage(message){return html`
|
|
2
2
|
<lr-chat-message
|
|
3
3
|
part="messages message"
|
|
4
4
|
.messageRole=${message.role}
|
|
@@ -95,4 +95,4 @@ var __decorate=function(decorators,target,key,desc){var c=arguments.length,r=c<3
|
|
|
95
95
|
</slot>
|
|
96
96
|
</div>
|
|
97
97
|
</div>
|
|
98
|
-
`}}__decorate([property()],LyraAgentWorkspace.prototype,"label",void 0),__decorate([property({attribute:"aria-label"})],LyraAgentWorkspace.prototype,"accessibleLabel",void 0),__decorate([property({attribute:!1})],LyraAgentWorkspace.prototype,"messages",void 0),__decorate([property({attribute:!1})],LyraAgentWorkspace.prototype,"run",void 0),__decorate([property({attribute:!1})],LyraAgentWorkspace.prototype,"metrics",void 0),__decorate([property({attribute:!1})],LyraAgentWorkspace.prototype,"tools",void 0),__decorate([property({attribute:!1})],LyraAgentWorkspace.prototype,"retrievalChunks",void 0),__decorate([property({attribute:!1})],LyraAgentWorkspace.prototype,"selectedRetrievalChunkIds",void 0),__decorate([property({type:Boolean,attribute:"retrieval-loading"})],LyraAgentWorkspace.prototype,"retrievalLoading",void 0),__decorate([property({type:Boolean,attribute:"retrieval-has-more"})],LyraAgentWorkspace.prototype,"retrievalHasMore",void 0),__decorate([property({attribute:"retrieval-error-text"})],LyraAgentWorkspace.prototype,"retrievalErrorText",void 0),__decorate([property({attribute:!1})],LyraAgentWorkspace.prototype,"groundingAssessment",void 0),__decorate([property({attribute:!1})],LyraAgentWorkspace.prototype,"citations",void 0),__decorate([property({attribute:!1})],LyraAgentWorkspace.prototype,"contextSegments",void 0),__decorate([property({type:Number,attribute:"context-total"})],LyraAgentWorkspace.prototype,"contextTotal",void 0),__decorate([property({type:Boolean,reflect:!0,converter:trueDefaultBooleanConverter})],LyraAgentWorkspace.prototype,"follow",void 0),__decorate([property({type:Number,attribute:"unread-start-index"})],LyraAgentWorkspace.prototype,"unreadStartIndex",void 0),__decorate([property({type:Boolean,attribute:"show-details",reflect:!0,converter:trueDefaultBooleanConverter})],LyraAgentWorkspace.prototype,"showDetails",void 0),__decorate([property({type:Boolean,attribute:"show-composer",reflect:!0,converter:trueDefaultBooleanConverter})],LyraAgentWorkspace.prototype,"showComposer",void 0),__decorate([property({attribute:"composer-value"})],LyraAgentWorkspace.prototype,"composerValue",void 0),__decorate([property({attribute:"composer-status"})],LyraAgentWorkspace.prototype,"composerStatus",
|
|
98
|
+
`}}__decorate([property()],LyraAgentWorkspace.prototype,"label",void 0),__decorate([property({attribute:"aria-label"})],LyraAgentWorkspace.prototype,"accessibleLabel",void 0),__decorate([property({attribute:!1})],LyraAgentWorkspace.prototype,"messages",void 0),__decorate([property({attribute:!1})],LyraAgentWorkspace.prototype,"run",void 0),__decorate([property({attribute:!1})],LyraAgentWorkspace.prototype,"metrics",void 0),__decorate([property({attribute:!1})],LyraAgentWorkspace.prototype,"tools",void 0),__decorate([property({attribute:!1})],LyraAgentWorkspace.prototype,"retrievalChunks",void 0),__decorate([property({attribute:!1})],LyraAgentWorkspace.prototype,"selectedRetrievalChunkIds",void 0),__decorate([property({type:Boolean,attribute:"retrieval-loading"})],LyraAgentWorkspace.prototype,"retrievalLoading",void 0),__decorate([property({type:Boolean,attribute:"retrieval-has-more"})],LyraAgentWorkspace.prototype,"retrievalHasMore",void 0),__decorate([property({attribute:"retrieval-error-text"})],LyraAgentWorkspace.prototype,"retrievalErrorText",void 0),__decorate([property({attribute:!1})],LyraAgentWorkspace.prototype,"groundingAssessment",void 0),__decorate([property({attribute:!1})],LyraAgentWorkspace.prototype,"citations",void 0),__decorate([property({attribute:!1})],LyraAgentWorkspace.prototype,"contextSegments",void 0),__decorate([property({type:Number,attribute:"context-total"})],LyraAgentWorkspace.prototype,"contextTotal",void 0),__decorate([property({type:Boolean,reflect:!0,converter:trueDefaultBooleanConverter})],LyraAgentWorkspace.prototype,"follow",void 0),__decorate([property({type:Number,attribute:"unread-start-index"})],LyraAgentWorkspace.prototype,"unreadStartIndex",void 0),__decorate([property({type:Boolean,attribute:"show-details",reflect:!0,converter:trueDefaultBooleanConverter})],LyraAgentWorkspace.prototype,"showDetails",void 0),__decorate([property({type:Boolean,attribute:"show-composer",reflect:!0,converter:trueDefaultBooleanConverter})],LyraAgentWorkspace.prototype,"showComposer",void 0),__decorate([property({attribute:"composer-value"})],LyraAgentWorkspace.prototype,"composerValue",void 0),__decorate([property({attribute:"composer-status"})],LyraAgentWorkspace.prototype,"composerStatus",null),__decorate([property({attribute:"composer-placeholder"})],LyraAgentWorkspace.prototype,"composerPlaceholder",void 0),__decorate([property({type:Number,attribute:"composer-min-rows"})],LyraAgentWorkspace.prototype,"composerMinRows",void 0),__decorate([property({type:Number,attribute:"composer-max-rows"})],LyraAgentWorkspace.prototype,"composerMaxRows",void 0);export{LyraAgentWorkspace};
|
|
@@ -33,7 +33,7 @@ import{type TemplateResult,type PropertyValues}from'lit';import{LyraElement}from
|
|
|
33
33
|
* @status stable
|
|
34
34
|
* @since 4.0.0
|
|
35
35
|
*/
|
|
36
|
-
export declare class LyraAudioVisualizer extends LyraElement{static styles:import("lit").CSSResultGroup[];stream:MediaStream|null;
|
|
36
|
+
export declare class LyraAudioVisualizer extends LyraElement{static styles:import("lit").CSSResultGroup[];static get observedAttributes():string[];stream:MediaStream|null;
|
|
37
37
|
/** Externally-computed amplitude, `[0, 1]`, for a host that already derives its own level
|
|
38
38
|
* (e.g. `lr-push-to-talk`'s `lr-level`). `null` (the default) means "no external signal" --
|
|
39
39
|
* see `effectiveLevel` for how a non-null value is clamped/NaN-guarded before it feeds `draw()`. */
|
|
@@ -43,7 +43,7 @@ get mode():AudioVisualizerMode;set mode(next:AudioVisualizerMode);barCount:numbe
|
|
|
43
43
|
/** Amplitude multiplier applied in `draw()`. NaN/non-finite falls back to `1` via `effectiveGain`. */
|
|
44
44
|
gain:number;
|
|
45
45
|
/** Accessible-name override. Unset (the default) auto-generates "Voice activity: {state}". */
|
|
46
|
-
label:string;private canvas?;private resizeObserver?;private dprQuery?;private dprChangeListener?;private motionQuery?;private motionChangeListener?;private drawFrameRequest?;private lastAmbientDrawMs;private
|
|
46
|
+
label:string;private canvas?;private resizeObserver?;private dprQuery?;private dprChangeListener?;private motionQuery?;private motionChangeListener?;private drawFrameRequest?;private lastAmbientDrawMs;private generatedAriaLabel?;
|
|
47
47
|
/** Host size cached from the `ResizeObserver` so `draw()` never forces a per-frame layout read. */
|
|
48
48
|
private hostSize?;
|
|
49
49
|
/** Token colors resolved once per theme change so `draw()` never calls `getComputedStyle` per frame. */
|
|
@@ -56,17 +56,22 @@ private ambientDurationMs?;private audioCtx?;private analyser?;private sourceNod
|
|
|
56
56
|
* nobody can see -- mirrors `<lr-chart>`'s own `visible`-gated `draw()`. Not `@state()`: nothing
|
|
57
57
|
* in `render()` depends on it, so making it reactive would only schedule pointless extra update
|
|
58
58
|
* passes. */
|
|
59
|
-
private visible;
|
|
59
|
+
private visible;
|
|
60
|
+
/** An owner-realm observer starts unknown so no canvas work can race ahead of its first entry. */
|
|
61
|
+
private visibilityKnown;private intersectionObserver?;private intersectionGeneration;private get effectiveBarCount();
|
|
60
62
|
/** `level` normalized to `[0, 1]`, or `null` when no external signal is set. A non-null-but-NaN
|
|
61
63
|
* `level` (e.g. a bad attribute) still counts as "level-driven" (see `hasLiveSignal`) but
|
|
62
64
|
* clamps to `0` here rather than flowing NaN into the canvas draw. */
|
|
63
|
-
private get effectiveLevel();private get effectiveGain();constructor();connectedCallback():void;disconnectedCallback():void;
|
|
65
|
+
private get effectiveLevel();private get effectiveGain();constructor();connectedCallback():void;disconnectedCallback():void;adoptedCallback():void;
|
|
66
|
+
/** Binds visibility in the current document. If the platform cannot safely provide an observer,
|
|
67
|
+
* retain the established eager draw behavior rather than making the visualizer permanently blank. */
|
|
68
|
+
private bindVisibilityObserver;private clearVisibilityObserver;private restoreImmediateVisibility;private watchDpr;private clearDprWatcher;private clearMotionWatcher;
|
|
64
69
|
/** Redraws canvas content after an upstream token or theme change. */
|
|
65
70
|
refreshTheme():void;private get hasUsableAudioStream();
|
|
66
71
|
/** Lazily creates (or tears down) the `AudioContext`/`AnalyserNode` pair to match `stream`.
|
|
67
72
|
* Clearing `stream` suspends the context (cheap to resume if reassigned soon); `disconnectedCallback`
|
|
68
73
|
* is what actually closes it. */
|
|
69
|
-
private syncAnalyser;private onAudioCtxStateChange;private closeAudioContext;private get hasLiveSignal();private stateLabel;protected willUpdate(changed:PropertyValues):void;protected updated(changed:PropertyValues):void;
|
|
74
|
+
private syncAnalyser;private onAudioCtxStateChange;private closeAudioContext;private get hasLiveSignal();private stateLabel;protected willUpdate(changed:PropertyValues):void;attributeChangedCallback(name:string,oldValue:string|null,value:string|null):void;private syncDefaultRole;protected updated(changed:PropertyValues):void;
|
|
70
75
|
/** Whether the next frame's content differs from the current one with no external change — i.e.
|
|
71
76
|
* the drawing is a function of time: live analyser data, or a non-reduced ambient pulse/sweep.
|
|
72
77
|
* A constant `level`, the flat idle pattern, and every reduced-motion ambient pattern are all
|
|
@@ -1 +1 @@
|
|
|
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}from"lit";import{property,query}from"lit/decorators.js";import{LyraElement}from"../../../internal/lyra-element.js";import{finiteInteger,finiteNumber,finiteRange}from"../../../internal/numbers.js";import{prefersReducedMotion}from"../../../internal/motion.js";import{ThemeWatcher}from"../../../internal/theme-watcher.js";import{resolveCanvasColor}from"../../../internal/canvas-color.js";import{literalSetConverter}from"../../../internal/converters.js";import{styles}from"./audio-visualizer.styles.js";import{LYRA_DEFAULT_audioVisualizerIdle,LYRA_DEFAULT_audioVisualizerLabel,LYRA_DEFAULT_audioVisualizerListening,LYRA_DEFAULT_audioVisualizerSpeaking,LYRA_DEFAULT_audioVisualizerThinking}from"../../../internal/default-strings.generated.js";const AUDIO_VISUALIZER_MODE=literalSetConverter(["bars","waveform"],"bars"),AUDIO_VISUALIZER_STATE=literalSetConverter(["idle","listening","thinking","speaking"],"idle"),WAVEFORM_SAMPLES=64,AMBIENT_REDUCED_MOTION_INTERVAL_MS=500,DEFAULT_AMBIENT_DURATION_MS=1800;function parseAmbientDuration(value){const match=/^\+?(?:(?:\d+\.?\d*)|(?:\.\d+))(?:e[+-]?\d+)?(ms|s)$/i.exec(value.trim());if(!match)return;const unit=match[1].toLowerCase(),numeric=Number(value.trim().slice(0,-unit.length)),milliseconds=finiteNumber(numeric*(unit==="s"?1e3:1),0);return milliseconds>0?milliseconds:void 0}class LyraAudioVisualizer extends LyraElement{static{this.defaultStrings={...super.defaultStrings,audioVisualizerIdle:LYRA_DEFAULT_audioVisualizerIdle,audioVisualizerLabel:LYRA_DEFAULT_audioVisualizerLabel,audioVisualizerListening:LYRA_DEFAULT_audioVisualizerListening,audioVisualizerSpeaking:LYRA_DEFAULT_audioVisualizerSpeaking,audioVisualizerThinking:LYRA_DEFAULT_audioVisualizerThinking}}static{this.styles=[LyraElement.styles,styles]}get state(){return this._state}set state(next){const normalized=AUDIO_VISUALIZER_STATE.normalize(next),old=this._state;old!==normalized&&(this._state=normalized,this.requestUpdate("state",old))}get mode(){return this._mode}set mode(next){const normalized=AUDIO_VISUALIZER_MODE.normalize(next),old=this._mode;old!==normalized&&(this._mode=normalized,this.requestUpdate("mode",old))}get effectiveBarCount(){return finiteInteger(this.barCount,5,1,64)}get effectiveLevel(){return this.level==null?null:finiteRange(this.level,0,0,1)}get effectiveGain(){return finiteNumber(this.gain,1)}constructor(){super(),this.stream=null,this.level=null,this._state="idle",this._mode="bars",this.barCount=5,this.gain=1,this.label="",this.lastAmbientDrawMs=0,this.authorSuppliedRole=!1,this.visible=!0,this.onAudioCtxStateChange=()=>{this.scheduleDraw()},this.scheduleDraw=()=>{if(!this.visible||this.drawFrameRequest)return;const owner=this.ownerDocument.defaultView;if(!owner||!this.isConnected)return;const request={owner,handle:0};request.handle=owner.requestAnimationFrame(nowMs=>this.drawFrame(request,nowMs)),this.drawFrameRequest=request},this.requestUpdate("state",void 0),this.requestUpdate("mode",void 0),new ThemeWatcher(this,()=>this.refreshTheme())}connectedCallback(){super.connectedCallback();const owner=this.ownerDocument.defaultView;if(!owner)return;const ResizeObserverCtor=owner.ResizeObserver;if(ResizeObserverCtor){let observer;observer=new ResizeObserverCtor(entries=>{if(!this.isConnected||this.ownerDocument.defaultView!==owner||this.resizeObserver!==observer)return;const rect=entries[entries.length-1]?.contentRect;rect&&(this.hostSize={width:rect.width,height:rect.height}),this.scheduleDraw()}),this.resizeObserver=observer,observer.observe(this)}if(this.watchDpr(),typeof owner.matchMedia=="function"){const query2=owner.matchMedia("(prefers-reduced-motion: reduce)"),listener=()=>{!this.isConnected||this.ownerDocument.defaultView!==owner||this.motionQuery!==query2||this.scheduleDraw()};this.motionQuery=query2,this.motionChangeListener=listener,query2.addEventListener("change",listener)}this.resolvedColors=void 0,this.ambientDurationMs=void 0,this.syncAnalyser(),this.visible=!0;const IntersectionObserverCtor=owner.IntersectionObserver;if(IntersectionObserverCtor){let observer;observer=new IntersectionObserverCtor(entries=>{if(!this.isConnected||this.ownerDocument.defaultView!==owner||this.intersectionObserver!==observer)return;const wasVisible=this.visible;this.visible=entries[0]?.isIntersecting??!0,this.visible&&!wasVisible?this.scheduleDraw():this.visible||this.cancelDrawFrame()}),this.intersectionObserver=observer,observer.observe(this)}this.lastAmbientDrawMs=0,this.scheduleDraw()}disconnectedCallback(){super.disconnectedCallback(),this.resizeObserver?.disconnect(),this.resizeObserver=void 0,this.hostSize=void 0,this.clearDprWatcher(),this.clearMotionWatcher(),this.intersectionObserver?.disconnect(),this.intersectionObserver=void 0,this.cancelDrawFrame(),this.closeAudioContext()}watchDpr(){this.clearDprWatcher();const owner=this.ownerDocument.defaultView;if(!owner||typeof owner.matchMedia!="function")return;const query2=owner.matchMedia(`(resolution: ${owner.devicePixelRatio}dppx)`),listener=()=>{!this.isConnected||this.ownerDocument.defaultView!==owner||this.dprQuery!==query2||(this.watchDpr(),this.scheduleDraw())};this.dprQuery=query2,this.dprChangeListener=listener,query2.addEventListener("change",listener)}clearDprWatcher(){this.dprQuery&&this.dprChangeListener&&this.dprQuery.removeEventListener("change",this.dprChangeListener),this.dprQuery=void 0,this.dprChangeListener=void 0}clearMotionWatcher(){this.motionQuery&&this.motionChangeListener&&this.motionQuery.removeEventListener("change",this.motionChangeListener),this.motionQuery=void 0,this.motionChangeListener=void 0}refreshTheme(){this.resolvedColors=void 0,this.ambientDurationMs=void 0,this.scheduleDraw()}get hasUsableAudioStream(){if(!this.stream||typeof this.stream.getAudioTracks!="function")return!1;try{return this.stream.getAudioTracks().some(track=>track.readyState!=="ended")}catch{return!1}}syncAnalyser(){if(!this.isConnected||!this.hasUsableAudioStream){this.sourceNode?.disconnect(),this.sourceNode=void 0,this.analyser=void 0,this.timeDomainData=void 0,this.audioCtx&&this.audioCtx.suspend().catch(()=>{});return}const stream=this.stream;if(!stream)return;const owner=this.ownerDocument.defaultView;if(!owner)return;let context=this.audioCtx,source;try{if(!context){const AudioCtxCtor=owner.AudioContext??owner.webkitAudioContext;if(!AudioCtxCtor)return;context=new AudioCtxCtor,context.addEventListener("statechange",this.onAudioCtxStateChange)}source=context.createMediaStreamSource(stream);const analyser=context.createAnalyser();analyser.fftSize=this.mode==="waveform"?2048:256,source.connect(analyser);const data=new owner.Uint8Array(analyser.frequencyBinCount);this.sourceNode?.disconnect(),this.audioCtx=context,this.sourceNode=source,this.analyser=analyser,this.timeDomainData=data,context.resume().catch(()=>{})}catch{source?.disconnect(),context&&(context.removeEventListener("statechange",this.onAudioCtxStateChange),context.close().catch(()=>{})),this.audioCtx=void 0,this.sourceNode=void 0,this.analyser=void 0,this.timeDomainData=void 0}}closeAudioContext(){this.sourceNode?.disconnect(),this.sourceNode=void 0,this.analyser=void 0,this.timeDomainData=void 0,this.audioCtx&&(this.audioCtx.removeEventListener("statechange",this.onAudioCtxStateChange),this.audioCtx.close().catch(()=>{}),this.audioCtx=void 0)}get hasLiveSignal(){return!!this.analyser&&this.audioCtx?.state==="running"||this.level!=null}stateLabel(){switch(this.state){case"listening":return this.localize("audioVisualizerListening");case"thinking":return this.localize("audioVisualizerThinking");case"speaking":return this.localize("audioVisualizerSpeaking");default:return this.localize("audioVisualizerIdle")}}willUpdate(changed){super.willUpdate(changed),(changed.has("stream")||changed.has("mode")&&this.stream)&&this.syncAnalyser();const currentRole=this.getAttribute("role");this.authorSuppliedRole=currentRole!==null&¤tRole!=="img",this.authorSuppliedRole||this.setAttribute("role","img");const currentAriaLabel=this.getAttribute("aria-label");if(currentAriaLabel!==null&¤tAriaLabel!==this.generatedAriaLabel)this.generatedAriaLabel=void 0;else{const generated=this.label||this.localize("audioVisualizerLabel",void 0,{state:this.stateLabel()});currentAriaLabel!==generated&&this.setAttribute("aria-label",generated),this.generatedAriaLabel=generated}}updated(changed){super.updated(changed),["state","mode","barCount","gain","level","stream"].some(key=>changed.has(key))&&this.scheduleDraw()}get isTimeDriven(){return this.analyser&&this.audioCtx?.state==="running"?!0:this.level!=null||prefersReducedMotion(this.ownerDocument.defaultView)?!1:this.state!=="idle"}drawFrame(request,nowMs){if(this.drawFrameRequest!==request||(this.drawFrameRequest=void 0,!this.isConnected||this.ownerDocument.defaultView!==request.owner)||!this.visible)return;if(prefersReducedMotion(request.owner)&&!this.hasLiveSignal){if(nowMs-this.lastAmbientDrawMs<AMBIENT_REDUCED_MOTION_INTERVAL_MS){this.scheduleDraw();return}this.lastAmbientDrawMs=nowMs}this.draw(nowMs),this.isTimeDriven&&this.scheduleDraw()}cancelDrawFrame(){const request=this.drawFrameRequest;request&&request.owner.cancelAnimationFrame(request.handle),this.drawFrameRequest=void 0}barsFromTimeDomain(data,barCount){const segmentSize=Math.max(1,Math.floor(data.length/barCount)),bars=[];for(let i=0;i<barCount;i++){let sumSquares=0;const start=i*segmentSize,end=Math.min(data.length,start+segmentSize);for(let j=start;j<end;j++){const norm=(data[j]-128)/128;sumSquares+=norm*norm}bars.push(Math.sqrt(sumSquares/Math.max(1,end-start)))}return bars}ambientAmplitudes(nowMs,reduced){const n=this.mode==="waveform"?WAVEFORM_SAMPLES:this.effectiveBarCount,phase=reduced?0:finiteNumber(nowMs,0)/this.resolveAmbientDuration();switch(this.state){case"listening":case"speaking":{const pulse=reduced?.3:.25+.15*Math.sin(phase*2*Math.PI);return new Array(n).fill(pulse)}case"thinking":return reduced?new Array(n).fill(.3):Array.from({length:n},(_,i)=>{const pos=phase%1,dist=Math.abs(i/(n-1||1)-pos);return .15+.35*Math.max(0,1-dist*4)});default:return new Array(n).fill(.08)}}resolveAmbientDuration(){if(this.ambientDurationMs!==void 0)return this.ambientDurationMs;const style=this.ownerDocument.defaultView?.getComputedStyle(this),value=style?.getPropertyValue("--lr-audio-visualizer-ambient-duration").trim()||style?.getPropertyValue("--_lr-audio-visualizer-ambient-duration-default").trim()||"";return this.ambientDurationMs=parseAmbientDuration(value)??DEFAULT_AMBIENT_DURATION_MS,this.ambientDurationMs}currentAmplitudes(nowMs){if(this.analyser&&this.timeDomainData&&this.audioCtx?.state==="running")return this.analyser.getByteTimeDomainData(this.timeDomainData),this.mode==="waveform"?Array.from(this.timeDomainData,v=>(v-128)/128):this.barsFromTimeDomain(this.timeDomainData,this.effectiveBarCount);if(this.effectiveLevel!=null){const n=this.mode==="waveform"?WAVEFORM_SAMPLES:this.effectiveBarCount;return new Array(n).fill(this.effectiveLevel)}return this.ambientAmplitudes(nowMs,prefersReducedMotion(this.ownerDocument.defaultView))}resolveColors(){const cs=this.ownerDocument.defaultView?.getComputedStyle(this),active=cs?.getPropertyValue("--lr-audio-visualizer-color").trim()||cs?.getPropertyValue("--_lr-audio-visualizer-color-default").trim()||"#0969da",quiet=cs?.getPropertyValue("--lr-audio-visualizer-quiet-color").trim()||cs?.getPropertyValue("--_lr-audio-visualizer-quiet-color-default").trim()||"#ddf4ff";return{active:resolveCanvasColor(this,active,"#0969da"),quiet:resolveCanvasColor(this,quiet,"#ddf4ff")}}draw(nowMs){const canvas=this.canvas;if(!canvas)return;const size=this.hostSize??this.getBoundingClientRect(),w=Math.max(1,size.width),h=Math.max(1,size.height||48),dpr=this.ownerDocument.defaultView?.devicePixelRatio||1,backingW=Math.floor(w*dpr),backingH=Math.floor(h*dpr);canvas.width!==backingW&&(canvas.width=backingW),canvas.height!==backingH&&(canvas.height=backingH);const cssW=`${w}px`,cssH=`${h}px`;canvas.style.width!==cssW&&(canvas.style.width=cssW),canvas.style.height!==cssH&&(canvas.style.height=cssH);const ctx=canvas.getContext("2d");if(!ctx)return;ctx.setTransform(dpr,0,0,dpr,0,0),ctx.clearRect(0,0,w,h),this.resolvedColors??=this.resolveColors();const{active:activeColor,quiet:quietColor}=this.resolvedColors,amplitudes=this.currentAmplitudes(nowMs),active=this.hasLiveSignal||this.state==="listening"||this.state==="thinking"||this.state==="speaking";ctx.fillStyle=active?activeColor:quietColor,ctx.strokeStyle=active?activeColor:quietColor;const gain=this.effectiveGain;if(this.mode==="waveform")ctx.lineWidth=2,ctx.beginPath(),amplitudes.forEach((amp,i)=>{const x=i/(amplitudes.length-1||1)*w,y=h/2-amp*(h/2)*gain;i===0?ctx.moveTo(x,y):ctx.lineTo(x,y)}),ctx.stroke();else{const n=amplitudes.length,gap=n>1?Math.max(0,Math.min(4,(w-n*2)/(n-1))):0,barWidth=Math.max(2,(w-gap*(n-1))/n);amplitudes.forEach((amp,i)=>{const barH=Math.max(2,Math.min(h,amp*h*gain)),x=i*(barWidth+gap),y=(h-barH)/2;ctx.fillRect(x,y,barWidth,barH)})}}render(){return html`<div part="base"><canvas part="canvas" aria-hidden="true"></canvas></div>`}}__decorate([property({attribute:!1})],LyraAudioVisualizer.prototype,"stream",void 0),__decorate([property({type:Number})],LyraAudioVisualizer.prototype,"level",void 0),__decorate([property({reflect:!0,converter:AUDIO_VISUALIZER_STATE})],LyraAudioVisualizer.prototype,"state",null),__decorate([property({reflect:!0,converter:AUDIO_VISUALIZER_MODE})],LyraAudioVisualizer.prototype,"mode",null),__decorate([property({type:Number,attribute:"bar-count"})],LyraAudioVisualizer.prototype,"barCount",void 0),__decorate([property({type:Number})],LyraAudioVisualizer.prototype,"gain",void 0),__decorate([property()],LyraAudioVisualizer.prototype,"label",void 0),__decorate([query("canvas")],LyraAudioVisualizer.prototype,"canvas",void 0);export{LyraAudioVisualizer};
|
|
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}from"lit";import{property,query}from"lit/decorators.js";import{LyraElement}from"../../../internal/lyra-element.js";import{finiteInteger,finiteNumber,finiteRange}from"../../../internal/numbers.js";import{prefersReducedMotion}from"../../../internal/motion.js";import{ThemeWatcher}from"../../../internal/theme-watcher.js";import{resolveCanvasColor}from"../../../internal/canvas-color.js";import{literalSetConverter}from"../../../internal/converters.js";import{styles}from"./audio-visualizer.styles.js";import{LYRA_DEFAULT_audioVisualizerIdle,LYRA_DEFAULT_audioVisualizerLabel,LYRA_DEFAULT_audioVisualizerListening,LYRA_DEFAULT_audioVisualizerSpeaking,LYRA_DEFAULT_audioVisualizerThinking}from"../../../internal/default-strings.generated.js";const AUDIO_VISUALIZER_MODE=literalSetConverter(["bars","waveform"],"bars"),AUDIO_VISUALIZER_STATE=literalSetConverter(["idle","listening","thinking","speaking"],"idle"),WAVEFORM_SAMPLES=64,AMBIENT_REDUCED_MOTION_INTERVAL_MS=500,DEFAULT_AMBIENT_DURATION_MS=1800;function parseAmbientDuration(value){const match=/^\+?(?:(?:\d+\.?\d*)|(?:\.\d+))(?:e[+-]?\d+)?(ms|s)$/i.exec(value.trim());if(!match)return;const unit=match[1].toLowerCase(),numeric=Number(value.trim().slice(0,-unit.length)),milliseconds=finiteNumber(numeric*(unit==="s"?1e3:1),0);return milliseconds>0?milliseconds:void 0}function clampAmplitudeProduct(amplitude,gain,min,max){const product=finiteNumber(amplitude,0)*finiteNumber(gain,1);return Number.isFinite(product)?finiteRange(product,0,min,max):product>0?max:product<0?min:0}function readIntersectionState(entries,target){try{if(!Array.isArray(entries))return;for(const candidate of entries)if(!(!candidate||typeof candidate!="object"&&typeof candidate!="function"))try{const entry=candidate;if(entry.target!==target)continue;const isIntersecting=entry.isIntersecting;if(typeof isIntersecting=="boolean")return isIntersecting}catch{}}catch{}}class LyraAudioVisualizer extends LyraElement{static{this.defaultStrings={...super.defaultStrings,audioVisualizerIdle:LYRA_DEFAULT_audioVisualizerIdle,audioVisualizerLabel:LYRA_DEFAULT_audioVisualizerLabel,audioVisualizerListening:LYRA_DEFAULT_audioVisualizerListening,audioVisualizerSpeaking:LYRA_DEFAULT_audioVisualizerSpeaking,audioVisualizerThinking:LYRA_DEFAULT_audioVisualizerThinking}}static{this.styles=[LyraElement.styles,styles]}static get observedAttributes(){return[...new Set([...super.observedAttributes,"role"])]}get state(){return this._state}set state(next){const normalized=AUDIO_VISUALIZER_STATE.normalize(next),old=this._state;old!==normalized&&(this._state=normalized,this.requestUpdate("state",old))}get mode(){return this._mode}set mode(next){const normalized=AUDIO_VISUALIZER_MODE.normalize(next),old=this._mode;old!==normalized&&(this._mode=normalized,this.requestUpdate("mode",old))}get effectiveBarCount(){return finiteInteger(this.barCount,5,1,64)}get effectiveLevel(){return this.level==null?null:finiteRange(this.level,0,0,1)}get effectiveGain(){return finiteNumber(this.gain,1)}constructor(){super(),this.stream=null,this.level=null,this._state="idle",this._mode="bars",this.barCount=5,this.gain=1,this.label="",this.lastAmbientDrawMs=0,this.visible=!0,this.visibilityKnown=!0,this.intersectionGeneration=0,this.onAudioCtxStateChange=()=>{this.scheduleDraw()},this.scheduleDraw=()=>{if(!this.visibilityKnown||!this.visible||this.drawFrameRequest)return;const owner=this.ownerDocument.defaultView;if(!owner||!this.isConnected)return;const request={owner,handle:0};request.handle=owner.requestAnimationFrame(nowMs=>this.drawFrame(request,nowMs)),this.drawFrameRequest=request},this.requestUpdate("state",void 0),this.requestUpdate("mode",void 0),new ThemeWatcher(this,()=>this.refreshTheme())}connectedCallback(){super.connectedCallback();const owner=this.ownerDocument.defaultView;if(!owner)return;const ResizeObserverCtor=owner.ResizeObserver;if(ResizeObserverCtor){let observer;observer=new ResizeObserverCtor(entries=>{if(!this.isConnected||this.ownerDocument.defaultView!==owner||this.resizeObserver!==observer)return;const rect=entries[entries.length-1]?.contentRect;rect&&(this.hostSize={width:rect.width,height:rect.height}),this.scheduleDraw()}),this.resizeObserver=observer,observer.observe(this)}if(this.watchDpr(),typeof owner.matchMedia=="function"){const query2=owner.matchMedia("(prefers-reduced-motion: reduce)"),listener=()=>{!this.isConnected||this.ownerDocument.defaultView!==owner||this.motionQuery!==query2||this.scheduleDraw()};this.motionQuery=query2,this.motionChangeListener=listener,query2.addEventListener("change",listener)}this.resolvedColors=void 0,this.ambientDurationMs=void 0,this.syncAnalyser(),this.bindVisibilityObserver(owner),this.lastAmbientDrawMs=0,this.scheduleDraw()}disconnectedCallback(){super.disconnectedCallback(),this.resizeObserver?.disconnect(),this.resizeObserver=void 0,this.hostSize=void 0,this.clearDprWatcher(),this.clearMotionWatcher(),this.clearVisibilityObserver(),this.visible=!1,this.visibilityKnown=!1,this.cancelDrawFrame(),this.closeAudioContext()}adoptedCallback(){super.adoptedCallback(),this.clearVisibilityObserver(),this.visible=!1,this.visibilityKnown=!1}bindVisibilityObserver(owner){this.clearVisibilityObserver();let IntersectionObserverCtor;try{IntersectionObserverCtor=owner.IntersectionObserver}catch{this.restoreImmediateVisibility();return}if(typeof IntersectionObserverCtor!="function"){this.restoreImmediateVisibility();return}this.visible=!1,this.visibilityKnown=!1;const generation=++this.intersectionGeneration;let observer;try{observer=new IntersectionObserverCtor(entries=>{if(generation!==this.intersectionGeneration||!this.isConnected||this.ownerDocument.defaultView!==owner||this.intersectionObserver!==observer)return;const isIntersecting=readIntersectionState(entries,this);if(isIntersecting===void 0)return;const wasPaintable=this.visibilityKnown&&this.visible;this.visibilityKnown=!0,this.visible=isIntersecting,this.visible?wasPaintable||this.scheduleDraw():this.cancelDrawFrame()}),this.intersectionObserver=observer,observer.observe(this)}catch{try{observer?.disconnect()}catch{}if(generation!==this.intersectionGeneration)return;this.intersectionObserver=void 0,this.intersectionGeneration++,this.restoreImmediateVisibility()}}clearVisibilityObserver(){this.intersectionGeneration++;try{this.intersectionObserver?.disconnect()}catch{}this.intersectionObserver=void 0}restoreImmediateVisibility(){this.visible=!0,this.visibilityKnown=!0}watchDpr(){this.clearDprWatcher();const owner=this.ownerDocument.defaultView;if(!owner||typeof owner.matchMedia!="function")return;const query2=owner.matchMedia(`(resolution: ${owner.devicePixelRatio}dppx)`),listener=()=>{!this.isConnected||this.ownerDocument.defaultView!==owner||this.dprQuery!==query2||(this.watchDpr(),this.scheduleDraw())};this.dprQuery=query2,this.dprChangeListener=listener,query2.addEventListener("change",listener)}clearDprWatcher(){this.dprQuery&&this.dprChangeListener&&this.dprQuery.removeEventListener("change",this.dprChangeListener),this.dprQuery=void 0,this.dprChangeListener=void 0}clearMotionWatcher(){this.motionQuery&&this.motionChangeListener&&this.motionQuery.removeEventListener("change",this.motionChangeListener),this.motionQuery=void 0,this.motionChangeListener=void 0}refreshTheme(){this.resolvedColors=void 0,this.ambientDurationMs=void 0,this.scheduleDraw()}get hasUsableAudioStream(){if(!this.stream||typeof this.stream.getAudioTracks!="function")return!1;try{return this.stream.getAudioTracks().some(track=>track.readyState!=="ended")}catch{return!1}}syncAnalyser(){if(!this.isConnected||!this.hasUsableAudioStream){this.sourceNode?.disconnect(),this.sourceNode=void 0,this.analyser=void 0,this.timeDomainData=void 0,this.audioCtx&&this.audioCtx.suspend().catch(()=>{});return}const stream=this.stream;if(!stream)return;const owner=this.ownerDocument.defaultView;if(!owner)return;let context=this.audioCtx,source;try{if(!context){const AudioCtxCtor=owner.AudioContext??owner.webkitAudioContext;if(!AudioCtxCtor)return;context=new AudioCtxCtor,context.addEventListener("statechange",this.onAudioCtxStateChange)}source=context.createMediaStreamSource(stream);const analyser=context.createAnalyser();analyser.fftSize=this.mode==="waveform"?2048:256,source.connect(analyser);const data=new owner.Uint8Array(analyser.frequencyBinCount);this.sourceNode?.disconnect(),this.audioCtx=context,this.sourceNode=source,this.analyser=analyser,this.timeDomainData=data,context.resume().catch(()=>{})}catch{source?.disconnect(),context&&(context.removeEventListener("statechange",this.onAudioCtxStateChange),context.close().catch(()=>{})),this.audioCtx=void 0,this.sourceNode=void 0,this.analyser=void 0,this.timeDomainData=void 0}}closeAudioContext(){this.sourceNode?.disconnect(),this.sourceNode=void 0,this.analyser=void 0,this.timeDomainData=void 0,this.audioCtx&&(this.audioCtx.removeEventListener("statechange",this.onAudioCtxStateChange),this.audioCtx.close().catch(()=>{}),this.audioCtx=void 0)}get hasLiveSignal(){return!!this.analyser&&this.audioCtx?.state==="running"||this.level!=null}stateLabel(){switch(this.state){case"listening":return this.localize("audioVisualizerListening");case"thinking":return this.localize("audioVisualizerThinking");case"speaking":return this.localize("audioVisualizerSpeaking");default:return this.localize("audioVisualizerIdle")}}willUpdate(changed){super.willUpdate(changed),(changed.has("stream")||changed.has("mode")&&this.stream)&&this.syncAnalyser(),this.syncDefaultRole();const currentAriaLabel=this.getAttribute("aria-label");if(currentAriaLabel!==null&¤tAriaLabel!==this.generatedAriaLabel)this.generatedAriaLabel=void 0;else{const generated=this.label||this.localize("audioVisualizerLabel",void 0,{state:this.stateLabel()});currentAriaLabel!==generated&&this.setAttribute("aria-label",generated),this.generatedAriaLabel=generated}}attributeChangedCallback(name,oldValue,value){super.attributeChangedCallback(name,oldValue,value),name==="role"&&oldValue!==value&&value===null&&this.syncDefaultRole()}syncDefaultRole(){this.hasAttribute("role")||this.setAttribute("role","img")}updated(changed){super.updated(changed),["state","mode","barCount","gain","level","stream"].some(key=>changed.has(key))&&this.scheduleDraw()}get isTimeDriven(){return this.analyser&&this.audioCtx?.state==="running"?!0:this.level!=null||prefersReducedMotion(this.ownerDocument.defaultView)?!1:this.state!=="idle"}drawFrame(request,nowMs){if(this.drawFrameRequest!==request||(this.drawFrameRequest=void 0,!this.isConnected||this.ownerDocument.defaultView!==request.owner)||!this.visibilityKnown||!this.visible)return;if(prefersReducedMotion(request.owner)&&!this.hasLiveSignal){if(nowMs-this.lastAmbientDrawMs<AMBIENT_REDUCED_MOTION_INTERVAL_MS){this.scheduleDraw();return}this.lastAmbientDrawMs=nowMs}this.draw(nowMs),this.isTimeDriven&&this.scheduleDraw()}cancelDrawFrame(){const request=this.drawFrameRequest;request&&request.owner.cancelAnimationFrame(request.handle),this.drawFrameRequest=void 0}barsFromTimeDomain(data,barCount){const segmentSize=Math.max(1,Math.floor(data.length/barCount)),bars=[];for(let i=0;i<barCount;i++){let sumSquares=0;const start=i*segmentSize,end=Math.min(data.length,start+segmentSize);for(let j=start;j<end;j++){const norm=(data[j]-128)/128;sumSquares+=norm*norm}bars.push(Math.sqrt(sumSquares/Math.max(1,end-start)))}return bars}ambientAmplitudes(nowMs,reduced){const n=this.mode==="waveform"?WAVEFORM_SAMPLES:this.effectiveBarCount,phase=reduced?0:finiteNumber(nowMs,0)/this.resolveAmbientDuration();switch(this.state){case"listening":case"speaking":{const pulse=reduced?.3:.25+.15*Math.sin(phase*2*Math.PI);return new Array(n).fill(pulse)}case"thinking":return reduced?new Array(n).fill(.3):Array.from({length:n},(_,i)=>{const pos=phase%1,dist=Math.abs(i/(n-1||1)-pos);return .15+.35*Math.max(0,1-dist*4)});default:return new Array(n).fill(.08)}}resolveAmbientDuration(){if(this.ambientDurationMs!==void 0)return this.ambientDurationMs;const style=this.ownerDocument.defaultView?.getComputedStyle(this),value=style?.getPropertyValue("--lr-audio-visualizer-ambient-duration").trim()||style?.getPropertyValue("--_lr-audio-visualizer-ambient-duration-default").trim()||"";return this.ambientDurationMs=parseAmbientDuration(value)??DEFAULT_AMBIENT_DURATION_MS,this.ambientDurationMs}currentAmplitudes(nowMs){if(this.analyser&&this.timeDomainData&&this.audioCtx?.state==="running")return this.analyser.getByteTimeDomainData(this.timeDomainData),this.mode==="waveform"?Array.from(this.timeDomainData,v=>(v-128)/128):this.barsFromTimeDomain(this.timeDomainData,this.effectiveBarCount);if(this.effectiveLevel!=null){const n=this.mode==="waveform"?WAVEFORM_SAMPLES:this.effectiveBarCount;return new Array(n).fill(this.effectiveLevel)}return this.ambientAmplitudes(nowMs,prefersReducedMotion(this.ownerDocument.defaultView))}resolveColors(){const cs=this.ownerDocument.defaultView?.getComputedStyle(this),active=cs?.getPropertyValue("--lr-audio-visualizer-color").trim()||cs?.getPropertyValue("--_lr-audio-visualizer-color-default").trim()||"#0969da",quiet=cs?.getPropertyValue("--lr-audio-visualizer-quiet-color").trim()||cs?.getPropertyValue("--_lr-audio-visualizer-quiet-color-default").trim()||"#ddf4ff";return{active:resolveCanvasColor(this,active,"#0969da"),quiet:resolveCanvasColor(this,quiet,"#ddf4ff")}}draw(nowMs){const canvas=this.canvas;if(!canvas)return;const size=this.hostSize??this.getBoundingClientRect(),w=Math.max(1,size.width),h=Math.max(1,size.height||48),dpr=this.ownerDocument.defaultView?.devicePixelRatio||1,backingW=Math.floor(w*dpr),backingH=Math.floor(h*dpr);canvas.width!==backingW&&(canvas.width=backingW),canvas.height!==backingH&&(canvas.height=backingH);const cssW=`${w}px`,cssH=`${h}px`;canvas.style.width!==cssW&&(canvas.style.width=cssW),canvas.style.height!==cssH&&(canvas.style.height=cssH);const ctx=canvas.getContext("2d");if(!ctx)return;ctx.setTransform(dpr,0,0,dpr,0,0),ctx.clearRect(0,0,w,h),this.resolvedColors??=this.resolveColors();const{active:activeColor,quiet:quietColor}=this.resolvedColors,amplitudes=this.currentAmplitudes(nowMs),active=this.hasLiveSignal||this.state==="listening"||this.state==="thinking"||this.state==="speaking";ctx.fillStyle=active?activeColor:quietColor,ctx.strokeStyle=active?activeColor:quietColor;const gain=this.effectiveGain;if(this.mode==="waveform")ctx.lineWidth=2,ctx.beginPath(),amplitudes.forEach((amp,i)=>{const x=i/(amplitudes.length-1||1)*w,y=h/2-clampAmplitudeProduct(amp,gain,-1,1)*(h/2);i===0?ctx.moveTo(x,y):ctx.lineTo(x,y)}),ctx.stroke();else{const n=amplitudes.length,gap=n>1?Math.max(0,Math.min(4,(w-n*2)/(n-1))):0,barWidth=Math.max(2,(w-gap*(n-1))/n);amplitudes.forEach((amp,i)=>{const barH=Math.max(2,clampAmplitudeProduct(amp,gain,0,1)*h),x=i*(barWidth+gap),y=(h-barH)/2;ctx.fillRect(x,y,barWidth,barH)})}}render(){return html`<div part="base"><canvas part="canvas" aria-hidden="true"></canvas></div>`}}__decorate([property({attribute:!1})],LyraAudioVisualizer.prototype,"stream",void 0),__decorate([property({type:Number})],LyraAudioVisualizer.prototype,"level",void 0),__decorate([property({reflect:!0,converter:AUDIO_VISUALIZER_STATE})],LyraAudioVisualizer.prototype,"state",null),__decorate([property({reflect:!0,converter:AUDIO_VISUALIZER_MODE})],LyraAudioVisualizer.prototype,"mode",null),__decorate([property({type:Number,attribute:"bar-count"})],LyraAudioVisualizer.prototype,"barCount",void 0),__decorate([property({type:Number})],LyraAudioVisualizer.prototype,"gain",void 0),__decorate([property()],LyraAudioVisualizer.prototype,"label",void 0),__decorate([query("canvas")],LyraAudioVisualizer.prototype,"canvas",void 0);export{LyraAudioVisualizer};
|
|
@@ -35,7 +35,9 @@ label:string;private previousButtonEl?;private nextButtonEl?;private liveRegion?
|
|
|
35
35
|
* position -- mirrors `<lr-chat-message>`'s identical `isMounting` gate for status-change
|
|
36
36
|
* announcements. */
|
|
37
37
|
private isMounting;private readonly previousToolbarAction;private readonly nextToolbarAction;private createToolbarAction;
|
|
38
|
-
/** Ordered logical actions exposed to an enclosing toolbar without exposing shadow nodes.
|
|
38
|
+
/** Ordered logical actions exposed to an enclosing toolbar without exposing shadow nodes.
|
|
39
|
+
* A parent releases its optional lease when this provider leaves, restoring an untouched
|
|
40
|
+
* authored chevron tabindex without replacing a later consumer value. */
|
|
39
41
|
getToolbarActions():readonly LyraToolbarAction[];
|
|
40
42
|
/** Read-time-safe view of `count` -- non-negative, finite, truncated to a whole branch count.
|
|
41
43
|
* Both `index` and `count` are fully controlled (this component never writes to them), so an
|
|
@@ -53,4 +55,4 @@ private get normalizedIndex();
|
|
|
53
55
|
* as one stop inside a parent toolbar. */
|
|
54
56
|
focus(options?:FocusOptions):void;blur():void;
|
|
55
57
|
/** Activates the currently enabled chevron, matching a click on the shadow control. */
|
|
56
|
-
click():void;protected updated(changed:PropertyValues):void;disconnectedCallback():void;private formatPosition;private requestIndex;render():TemplateResult;}declare global{interface HTMLElementTagNameMap{'lr-branch-picker':LyraBranchPicker;}}
|
|
58
|
+
click():void;protected updated(changed:PropertyValues):void;disconnectedCallback():void;adoptedCallback():void;private releaseToolbarActions;private formatPosition;private requestIndex;render():TemplateResult;}declare global{interface HTMLElementTagNameMap{'lr-branch-picker':LyraBranchPicker;}}
|
|
@@ -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}from"lit";import{property,query}from"lit/decorators.js";import{LyraElement}from"../../../internal/lyra-element.js";import{nextId}from"../../../internal/a11y.js";import{chevronIcon}from"../../../internal/icons.js";import{finiteCount,finiteInteger}from"../../../internal/numbers.js";import"../../utility/live-region/live-region.class.js";import{styles}from"./branch-picker.styles.js";import{getNumberFormat}from"../../../internal/intl-cache.js";import{LYRA_DEFAULT_branchNext,LYRA_DEFAULT_branchPickerLabel,LYRA_DEFAULT_branchPosition,LYRA_DEFAULT_branchPrevious}from"../../../internal/default-strings.generated.js";class LyraBranchPicker extends LyraElement{constructor(){super(...arguments),this.index=0,this.count=1,this.label="",this.groupId=nextId("branch-picker"),this.isMounting=!0,this.previousToolbarAction=this.createToolbarAction("previous"),this.nextToolbarAction=this.createToolbarAction("next")}static{this.defaultStrings={...super.defaultStrings,branchNext:LYRA_DEFAULT_branchNext,branchPickerLabel:LYRA_DEFAULT_branchPickerLabel,branchPosition:LYRA_DEFAULT_branchPosition,branchPrevious:LYRA_DEFAULT_branchPrevious}}static{this.styles=[LyraElement.styles,styles]}createToolbarAction(direction){const host=this,button=()=>direction==="previous"?host.previousButtonEl:host.nextButtonEl;return{id:direction,get disabled(){return!button()||button().disabled},focus(options){button()?.focus(options)},setTabIndex(tabIndex){const target=button();target&&(target.tabIndex=tabIndex)},matchesEventPath(path){const target=button();return target!==void 0&&path.includes(target)}}}getToolbarActions(){return this.normalizedCount<2?[]:[this.previousToolbarAction,this.nextToolbarAction]}get normalizedCount(){return finiteCount(this.count,1)}get normalizedIndex(){const count=this.normalizedCount;return count===0?0:finiteInteger(this.index,0,0,count-1)}focus(options){((this.normalizedIndex>0?this.previousButtonEl:this.nextButtonEl)??this.previousButtonEl??this.nextButtonEl)?.focus(options)}blur(){this.previousButtonEl?.blur(),this.nextButtonEl?.blur()}click(){((this.normalizedIndex>0?this.previousButtonEl:this.nextButtonEl)??this.previousButtonEl??this.nextButtonEl)?.click()}updated(changed){super.updated(changed);const wasMounting=this.isMounting;if(this.isMounting=!1,changed.has("index")&&!wasMounting){const formatter=getNumberFormat(this.effectiveLocale);this.liveRegion?.announce(this.formatPosition(formatter),{force:!0})}(changed.has("index")||changed.has("count"))&&this.emit("lr-toolbar-actions-change")}disconnectedCallback(){this.isMounting=!0,super.disconnectedCallback()}formatPosition(formatter=getNumberFormat(this.effectiveLocale)){return this.localize("branchPosition",void 0,{index:formatter.format(this.normalizedIndex+1),total:formatter.format(this.normalizedCount)})}requestIndex(next){next<0||next>this.normalizedCount-1||next===this.normalizedIndex||this.emit("lr-branch-change",{index:next})}render(){const count=this.normalizedCount;if(count<2)return html``;const index=this.normalizedIndex,label=this.label||this.localize("branchPickerLabel"),ariaLabel=this.getAttribute("aria-label")??label,formatter=getNumberFormat(this.effectiveLocale);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}from"lit";import{property,query}from"lit/decorators.js";import{LyraElement}from"../../../internal/lyra-element.js";import{nextId}from"../../../internal/a11y.js";import{chevronIcon}from"../../../internal/icons.js";import{finiteCount,finiteInteger}from"../../../internal/numbers.js";import"../../utility/live-region/live-region.class.js";import{styles}from"./branch-picker.styles.js";import{getNumberFormat}from"../../../internal/intl-cache.js";import{LYRA_DEFAULT_branchNext,LYRA_DEFAULT_branchPickerLabel,LYRA_DEFAULT_branchPosition,LYRA_DEFAULT_branchPrevious}from"../../../internal/default-strings.generated.js";class LyraBranchPicker extends LyraElement{constructor(){super(...arguments),this.index=0,this.count=1,this.label="",this.groupId=nextId("branch-picker"),this.isMounting=!0,this.previousToolbarAction=this.createToolbarAction("previous"),this.nextToolbarAction=this.createToolbarAction("next")}static{this.defaultStrings={...super.defaultStrings,branchNext:LYRA_DEFAULT_branchNext,branchPickerLabel:LYRA_DEFAULT_branchPickerLabel,branchPosition:LYRA_DEFAULT_branchPosition,branchPrevious:LYRA_DEFAULT_branchPrevious}}static{this.styles=[LyraElement.styles,styles]}createToolbarAction(direction){const host=this,button=()=>direction==="previous"?host.previousButtonEl:host.nextButtonEl;let leasedButton,authoredTabIndex=null,lastManagedTabIndex=null,consumerOwnsTabIndex=!1;const releaseTabIndex=()=>{const target=leasedButton;target&&target.getAttribute("tabindex")===lastManagedTabIndex&&(authoredTabIndex===null?target.removeAttribute("tabindex"):target.setAttribute("tabindex",authoredTabIndex)),leasedButton=void 0,authoredTabIndex=null,lastManagedTabIndex=null,consumerOwnsTabIndex=!1};return{id:direction,get disabled(){return!button()||button().disabled},focus(options){button()?.focus(options)},setTabIndex(tabIndex){const target=button();if(!target){releaseTabIndex();return}if(leasedButton!==target&&(releaseTabIndex(),leasedButton=target,authoredTabIndex=target.getAttribute("tabindex")),consumerOwnsTabIndex||lastManagedTabIndex!==null&&target.getAttribute("tabindex")!==lastManagedTabIndex){consumerOwnsTabIndex=!0;return}target.tabIndex=tabIndex,lastManagedTabIndex=target.getAttribute("tabindex")},releaseTabIndex,matchesEventPath(path){const target=button();return target!==void 0&&path.includes(target)}}}getToolbarActions(){return this.normalizedCount<2?[]:[this.previousToolbarAction,this.nextToolbarAction]}get normalizedCount(){return finiteCount(this.count,1)}get normalizedIndex(){const count=this.normalizedCount;return count===0?0:finiteInteger(this.index,0,0,count-1)}focus(options){((this.normalizedIndex>0?this.previousButtonEl:this.nextButtonEl)??this.previousButtonEl??this.nextButtonEl)?.focus(options)}blur(){this.previousButtonEl?.blur(),this.nextButtonEl?.blur()}click(){((this.normalizedIndex>0?this.previousButtonEl:this.nextButtonEl)??this.previousButtonEl??this.nextButtonEl)?.click()}updated(changed){super.updated(changed);const wasMounting=this.isMounting;if(this.isMounting=!1,changed.has("index")&&!wasMounting){const formatter=getNumberFormat(this.effectiveLocale);this.liveRegion?.announce(this.formatPosition(formatter),{force:!0})}(changed.has("index")||changed.has("count"))&&(this.normalizedCount<2&&this.releaseToolbarActions(),this.emit("lr-toolbar-actions-change"))}disconnectedCallback(){this.isMounting=!0,this.releaseToolbarActions(),super.disconnectedCallback()}adoptedCallback(){super.adoptedCallback(),this.releaseToolbarActions()}releaseToolbarActions(){this.previousToolbarAction.releaseTabIndex?.(),this.nextToolbarAction.releaseTabIndex?.()}formatPosition(formatter=getNumberFormat(this.effectiveLocale)){return this.localize("branchPosition",void 0,{index:formatter.format(this.normalizedIndex+1),total:formatter.format(this.normalizedCount)})}requestIndex(next){next<0||next>this.normalizedCount-1||next===this.normalizedIndex||this.emit("lr-branch-change",{index:next})}render(){const count=this.normalizedCount;if(count<2)return html``;const index=this.normalizedIndex,label=this.label||this.localize("branchPickerLabel"),ariaLabel=this.getAttribute("aria-label")??label,formatter=getNumberFormat(this.effectiveLocale);return html`
|
|
2
2
|
<div part="base" id=${this.groupId} role="group" aria-label=${ariaLabel}>
|
|
3
3
|
<button
|
|
4
4
|
part="previous-button"
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{css}from"lit";const styles=css`:host{display:inline-flex}[part=base]{align-items:center;gap:var(--lr-space-2xs);font
|
|
1
|
+
import{css}from"lit";const styles=css`:host{display:inline-flex}[part=base]{align-items:center;gap:var(--lr-space-2xs);font:inherit;color:var(--lr-color-text-quiet);display:inline-flex}[part=previous-button],[part=next-button]{inline-size:var(--lr-size-1-5rem);block-size:var(--lr-size-1-5rem);min-inline-size:var(--lr-icon-button-size);min-block-size:var(--lr-icon-button-size);font:inherit;border-radius:var(--lr-radius-xs);color:inherit;cursor:pointer;background:0 0;border:0;justify-content:center;align-items:center;padding:0;display:inline-flex}:where([part=previous-button]):hover:where(:not(:disabled)),:where([part=next-button]):hover:where(:not(:disabled)){background:var(--lr-color-brand-quiet);color:var(--lr-color-brand)}:where([part=previous-button]):active:where(:not(:disabled)),:where([part=next-button]):active:where(:not(:disabled)){background:color-mix(in oklab, var(--lr-color-brand-quiet), var(--lr-color-mix-partner) var(--lr-color-mix-active));color:var(--lr-color-brand)}[part=previous-button]:focus-visible,[part=next-button]:focus-visible{outline:var(--lr-focus-ring-width) solid var(--lr-focus-ring-color);outline-offset:var(--lr-focus-ring-offset)}[part=previous-button]:disabled,[part=next-button]:disabled{cursor:not-allowed;opacity:var(--lr-opacity-disabled)}[part=previous-glyph],[part=next-glyph]{line-height:var(--lr-line-height-none);display:inline-flex}[part=previous-glyph]{transform:rotate(180deg)}[part=next-glyph],:host(:dir(rtl)) [part=previous-glyph]{transform:rotate(0)}:host(:dir(rtl)) [part=next-glyph]{transform:rotate(180deg)}[part=position]{white-space:nowrap;font-size:var(--lr-font-size-xs);font-variant-numeric:tabular-nums}`;export{styles};
|
|
@@ -3,7 +3,9 @@ import{type TemplateResult,type PropertyValues}from'lit';import{LyraElement}from
|
|
|
3
3
|
* so there is one definition. Named `frame`, not `appearance`: `appearance` is the library's
|
|
4
4
|
* vocabulary for how a *control fills itself*, and using it for container chrome as well made one
|
|
5
5
|
* property name mean two unrelated things. */
|
|
6
|
-
export type ChatComposerFrame=LyraFrame;export type ChatComposerStatus='idle'|'sending'|'streaming';
|
|
6
|
+
export type ChatComposerFrame=LyraFrame;export type ChatComposerStatus='idle'|'sending'|'streaming';export declare const CHAT_COMPOSER_STATUSES:readonly["idle","sending","streaming"];
|
|
7
|
+
/** Resolves untrusted status input to the public literal set. */
|
|
8
|
+
export declare function normalizeChatComposerStatus(value:unknown):ChatComposerStatus;
|
|
7
9
|
/** Retained name for the shared native `<textarea wrap>` vocabulary. */
|
|
8
10
|
export type ChatComposerWrap=LyraTextWrap;
|
|
9
11
|
/** Retained name for the shared native `selectionDirection` vocabulary. */
|
|
@@ -81,7 +83,9 @@ export type ChatComposerSelectionDirection=LyraSelectionDirection;export interfa
|
|
|
81
83
|
* @status stable
|
|
82
84
|
* @since 4.0.0
|
|
83
85
|
*/
|
|
84
|
-
export declare class LyraChatComposer extends LyraChatComposer_base{static styles:import("lit").CSSResultGroup[];placeholder:string;minRows:number;maxRows:number;
|
|
86
|
+
export declare class LyraChatComposer extends LyraChatComposer_base{static styles:import("lit").CSSResultGroup[];placeholder:string;minRows:number;maxRows:number;private statusValue;
|
|
87
|
+
/** Sending state. Invalid direct or attribute writes normalize and reflect as `idle`. */
|
|
88
|
+
get status():ChatComposerStatus;set status(value:ChatComposerStatus);
|
|
85
89
|
/** Visual chrome, on the library-wide `frame` vocabulary. `'card'` (the default) keeps the
|
|
86
90
|
* bordered, filled, padded box. `'plain'` removes the border, background, padding and corner
|
|
87
91
|
* radius, so a composer docked inside a chat panel, dialog footer or toolbar that already draws
|