@aceshooting/lyra-ui 13.0.1 → 14.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +329 -0
- package/custom-elements.json +1 -1
- package/dist/cli/migration-contract.json +1 -1
- package/dist/components/agent-tools/activity-feed/activity-feed.class.d.ts +23 -15
- package/dist/components/agent-tools/activity-feed/activity-feed.class.js +9 -6
- package/dist/components/agent-tools/agent-trace/agent-trace.class.d.ts +12 -3
- package/dist/components/agent-tools/agent-trace/agent-trace.class.js +2 -1
- package/dist/components/agent-tools/approval-queue/approval-queue.class.d.ts +4 -2
- package/dist/components/agent-tools/approval-queue/approval-queue.class.js +1 -1
- package/dist/components/agent-tools/artifact-panel/artifact-panel.styles.js +1 -1
- package/dist/components/agent-tools/commit-card/commit-card.class.d.ts +3 -1
- package/dist/components/agent-tools/commit-card/commit-card.class.js +2 -2
- package/dist/components/agent-tools/compare-panel/compare-panel.class.d.ts +2 -1
- package/dist/components/agent-tools/compare-panel/compare-panel.styles.js +1 -1
- package/dist/components/agent-tools/prompt-studio/prompt-studio.class.d.ts +6 -2
- package/dist/components/agent-tools/prompt-studio/prompt-studio.class.js +8 -8
- package/dist/components/agent-tools/result-card/result-card.class.d.ts +1 -1
- package/dist/components/agent-tools/result-card/result-card.class.js +1 -1
- package/dist/components/agent-tools/result-card/result-field.class.d.ts +1 -1
- package/dist/components/agent-tools/result-card/result-field.class.js +1 -1
- package/dist/components/agent-tools/schema-viewer/schema-viewer.class.d.ts +5 -5
- package/dist/components/agent-tools/schema-viewer/schema-viewer.class.js +23 -10
- package/dist/components/agent-tools/span-waterfall/span-waterfall.class.d.ts +13 -6
- package/dist/components/agent-tools/span-waterfall/span-waterfall.class.js +3 -3
- package/dist/components/agent-tools/span-waterfall/span-waterfall.styles.js +1 -1
- package/dist/components/agent-tools/stack-trace/stack-trace-parse.js +3 -3
- package/dist/components/agent-tools/stack-trace/stack-trace.class.d.ts +1 -1
- package/dist/components/agent-tools/stack-trace/stack-trace.class.js +1 -1
- package/dist/components/agent-tools/subagent-panel/subagent-panel.class.js +1 -1
- package/dist/components/agent-tools/subagent-panel/subagent-panel.styles.js +1 -1
- package/dist/components/agent-tools/task-list/task-list.class.d.ts +1 -2
- package/dist/components/agent-tools/task-list/task-list.class.js +2 -2
- package/dist/components/agent-tools/terminal/terminal.class.d.ts +11 -2
- package/dist/components/agent-tools/terminal/terminal.class.js +5 -5
- package/dist/components/agent-tools/terminal/terminal.styles.js +1 -1
- package/dist/components/agent-tools/test-results/test-results.class.d.ts +4 -2
- package/dist/components/agent-tools/test-results/test-results.class.js +2 -2
- package/dist/components/agent-tools/thinking-panel/thinking-panel.class.d.ts +2 -0
- package/dist/components/agent-tools/thinking-panel/thinking-panel.styles.js +1 -1
- package/dist/components/agent-tools/tool-approval-dialog/tool-approval-dialog.class.js +1 -1
- package/dist/components/agent-tools/tool-call-chip/tool-call-chip.class.d.ts +2 -2
- package/dist/components/agent-tools/tool-call-chip/tool-call-chip.class.js +1 -1
- package/dist/components/agent-tools/tool-param-form/tool-param-form.class.js +3 -2
- package/dist/components/agent-tools/tool-param-form/tool-param-form.d.ts +1 -1
- package/dist/components/agent-tools/tool-param-form/tool-param-form.js +1 -1
- package/dist/components/agent-tools/tool-result-dialog/tool-result-dialog.class.js +2 -2
- package/dist/components/agent-tools/tool-result-dialog/tool-result-dialog.styles.js +1 -1
- package/dist/components/agent-tools/tool-result-view/registry.d.ts +2 -1
- package/dist/components/agent-tools/tool-result-view/tool-result-view.class.d.ts +1 -1
- package/dist/components/agent-tools/tool-result-view/tool-result-view.class.js +1 -1
- package/dist/components/agent-tools/tool-select-dialog/tool-select-dialog.class.d.ts +18 -12
- package/dist/components/agent-tools/tool-select-dialog/tool-select-dialog.class.js +7 -7
- package/dist/components/agent-tools/tool-timeline/tool-timeline.class.d.ts +9 -3
- package/dist/components/agent-tools/tool-timeline/tool-timeline.class.js +1 -1
- package/dist/components/agent-tools/trace-tree/span.d.ts +3 -1
- package/dist/components/agent-tools/trace-tree/span.js +1 -1
- package/dist/components/agent-tools/trace-tree/trace-tree.styles.js +1 -1
- package/dist/components/charts/chart/box-plot.class.d.ts +12 -3
- package/dist/components/charts/chart/box-plot.class.js +9 -9
- package/dist/components/charts/chart/box-plot.styles.js +1 -1
- package/dist/components/charts/chart/chart-core-loader.js +1 -1
- package/dist/components/charts/chart/chart-feature-loader.js +1 -1
- package/dist/components/charts/chart/chart-preload.d.ts +1 -1
- package/dist/components/charts/chart/chart-preload.js +1 -1
- package/dist/components/charts/chart/chart.class.d.ts +33 -10
- package/dist/components/charts/chart/chart.class.js +23 -14
- package/dist/components/charts/chart/chart.styles.js +1 -1
- package/dist/components/charts/chart/histogram-bin.js +1 -1
- package/dist/components/charts/chart/lite-chart.class.d.ts +20 -11
- package/dist/components/charts/chart/lite-chart.class.js +17 -11
- package/dist/components/charts/chart/lite-chart.styles.js +1 -1
- package/dist/components/conversation/agent-workspace/agent-workspace.class.d.ts +1 -1
- package/dist/components/conversation/agent-workspace/agent-workspace.class.js +2 -2
- package/dist/components/conversation/audio-visualizer/audio-visualizer.class.d.ts +10 -5
- package/dist/components/conversation/audio-visualizer/audio-visualizer.class.js +1 -1
- package/dist/components/conversation/branch-picker/branch-picker.class.d.ts +4 -2
- package/dist/components/conversation/branch-picker/branch-picker.class.js +1 -1
- package/dist/components/conversation/branch-picker/branch-picker.styles.js +1 -1
- package/dist/components/conversation/chat-composer/chat-composer.class.d.ts +6 -2
- package/dist/components/conversation/chat-composer/chat-composer.class.js +3 -3
- package/dist/components/conversation/chat-composer/chat-composer.styles.js +1 -1
- package/dist/components/conversation/chat-message/chat-message.class.d.ts +4 -3
- package/dist/components/conversation/chat-message/chat-message.class.js +2 -2
- package/dist/components/conversation/chat-message/chat-message.styles.js +1 -1
- package/dist/components/conversation/chat-viewport/chat-viewport.styles.js +1 -1
- package/dist/components/conversation/code-block/code-block-core.class.d.ts +4 -3
- package/dist/components/conversation/code-block/code-block-core.class.js +1 -1
- package/dist/components/conversation/code-block/code-block-shared.d.ts +3 -3
- package/dist/components/conversation/code-block/code-block-shared.js +2 -2
- package/dist/components/conversation/code-block/code-block.class.d.ts +4 -3
- package/dist/components/conversation/code-block/code-block.class.js +1 -1
- package/dist/components/conversation/code-block/code-block.styles.js +1 -1
- package/dist/components/conversation/code-block/code-loader.d.ts +1 -1
- package/dist/components/conversation/code-block/code-loader.js +1 -1
- package/dist/components/conversation/code-block/shiki-types.d.ts +2 -0
- package/dist/components/conversation/code-block/shiki-types.js +1 -1
- package/dist/components/conversation/conversation-item/conversation-item.class.js +1 -1
- package/dist/components/conversation/conversation-item/conversation-item.styles.js +1 -1
- package/dist/components/conversation/generation-metrics/generation-metrics.styles.js +1 -1
- package/dist/components/conversation/markdown/katex-loader.d.ts +4 -4
- package/dist/components/conversation/markdown/katex-loader.js +1 -1
- package/dist/components/conversation/markdown/markdown-base.class.js +1 -1
- package/dist/components/conversation/markdown/markdown-core.class.d.ts +1 -1
- package/dist/components/conversation/markdown/markdown-loader.d.ts +1 -1
- package/dist/components/conversation/markdown/markdown-loader.js +1 -1
- package/dist/components/conversation/markdown/markdown-shared.d.ts +6 -1
- package/dist/components/conversation/markdown/markdown-shared.js +5 -4
- package/dist/components/conversation/markdown/markdown.class.d.ts +1 -1
- package/dist/components/conversation/message-actions/message-actions.class.d.ts +18 -3
- package/dist/components/conversation/message-actions/message-actions.class.js +2 -2
- package/dist/components/conversation/message-actions/message-actions.styles.js +1 -1
- package/dist/components/conversation/message-actions/toolbar-actions.d.ts +3 -1
- package/dist/components/conversation/message-actions/toolbar-actions.js +1 -1
- package/dist/components/conversation/message-feedback/message-feedback.class.d.ts +40 -15
- package/dist/components/conversation/message-feedback/message-feedback.class.js +7 -3
- package/dist/components/conversation/message-feedback/message-feedback.styles.js +1 -1
- package/dist/components/conversation/message-parts/message-parts.class.d.ts +10 -4
- package/dist/components/conversation/message-parts/message-parts.class.js +2 -2
- package/dist/components/conversation/message-parts/message-parts.styles.js +1 -1
- package/dist/components/conversation/model-select/model-select.class.d.ts +5 -2
- package/dist/components/conversation/model-select/model-select.class.js +8 -5
- package/dist/components/conversation/model-settings-panel/model-settings-panel.class.d.ts +3 -5
- package/dist/components/conversation/model-settings-panel/model-settings-panel.class.js +2 -1
- package/dist/components/conversation/prompt-input/prompt-input.class.d.ts +9 -2
- package/dist/components/conversation/prompt-input/prompt-input.class.js +3 -3
- package/dist/components/conversation/prompt-input/prompt-input.styles.js +1 -1
- package/dist/components/conversation/prompt-queue/prompt-queue.class.d.ts +20 -4
- package/dist/components/conversation/prompt-queue/prompt-queue.class.js +1 -1
- package/dist/components/conversation/prompt-queue/prompt-queue.styles.js +1 -1
- package/dist/components/conversation/push-to-talk/push-to-talk.class.d.ts +17 -8
- package/dist/components/conversation/push-to-talk/push-to-talk.class.js +1 -1
- package/dist/components/conversation/push-to-talk/push-to-talk.styles.js +1 -1
- package/dist/components/conversation/selection-toolbar/selection-toolbar.class.d.ts +6 -3
- package/dist/components/conversation/selection-toolbar/selection-toolbar.class.js +1 -1
- package/dist/components/conversation/selection-toolbar/selection-toolbar.styles.js +1 -1
- package/dist/components/conversation/thread-list/thread-list.class.d.ts +14 -4
- package/dist/components/conversation/thread-list/thread-list.class.js +11 -11
- package/dist/components/conversation/thread-list/thread-list.styles.js +1 -1
- package/dist/components/conversation/transcript-feed/transcript-feed.class.d.ts +2 -0
- package/dist/components/conversation/transcript-feed/transcript-feed.class.js +1 -1
- package/dist/components/conversation/transcript-feed/transcript-feed.styles.js +1 -1
- package/dist/components/conversation/typing-indicator/typing-indicator.class.d.ts +2 -1
- package/dist/components/conversation/typing-indicator/typing-indicator.class.js +1 -1
- package/dist/components/conversation/usage-badge/usage-badge-overlay-runtime.d.ts +3 -0
- package/dist/components/conversation/usage-badge/usage-badge-overlay-runtime.js +1 -0
- package/dist/components/conversation/usage-badge/usage-badge.class.d.ts +4 -2
- package/dist/components/conversation/usage-badge/usage-badge.class.js +1 -1
- package/dist/components/conversation/voice-picker/voice-picker.class.d.ts +12 -4
- package/dist/components/conversation/voice-picker/voice-picker.class.js +8 -5
- package/dist/components/conversation/voice-picker/voice-picker.styles.js +1 -1
- package/dist/components/conversation/widget-renderer/resolve.d.ts +4 -6
- package/dist/components/conversation/widget-renderer/resolve.js +1 -1
- package/dist/components/data/calendar/calendar.class.d.ts +16 -5
- package/dist/components/data/calendar/calendar.class.js +2 -2
- package/dist/components/data/calendar/calendar.styles.js +1 -1
- package/dist/components/data/condition-builder/condition-builder.class.d.ts +3 -1
- package/dist/components/data/condition-builder/condition-builder.class.js +15 -1
- package/dist/components/data/context-meter/context-meter.class.d.ts +3 -1
- package/dist/components/data/context-meter/context-meter.class.js +4 -4
- package/dist/components/data/data-grid/data-grid.class.d.ts +51 -6
- package/dist/components/data/data-grid/data-grid.class.js +25 -11
- package/dist/components/data/data-grid/data-grid.styles.js +1 -1
- package/dist/components/data/document-library/document-library.class.d.ts +5 -2
- package/dist/components/data/document-library/document-library.class.js +1 -1
- package/dist/components/data/env-list/env-list.class.js +1 -1
- package/dist/components/data/file-tree/file-tree.class.d.ts +2 -1
- package/dist/components/data/file-tree/file-tree.class.js +1 -1
- package/dist/components/data/flow-canvas/flow-canvas.class.d.ts +24 -14
- package/dist/components/data/flow-canvas/flow-canvas.class.js +1 -2
- package/dist/components/data/flow-canvas/flow-canvas.styles.js +1 -1
- package/dist/components/data/flow-canvas/flow-model.js +1 -1
- package/dist/components/data/flow-canvas/flow-types.d.ts +2 -1
- package/dist/components/data/flow-controls/flow-controls.styles.js +1 -1
- package/dist/components/data/flow-run-status/flow-run-status.class.js +1 -1
- package/dist/components/data/funnel/funnel.class.d.ts +1 -0
- package/dist/components/data/funnel/funnel.class.js +1 -1
- package/dist/components/data/gauge/gauge.class.d.ts +4 -1
- package/dist/components/data/gauge/gauge.class.js +6 -6
- package/dist/components/data/graph-query-builder/graph-query-builder.class.d.ts +5 -2
- package/dist/components/data/graph-query-builder/graph-query-builder.class.js +15 -1
- package/dist/components/data/graph-query-builder/graph-query-builder.styles.js +1 -1
- package/dist/components/data/heatmap/heatmap.class.d.ts +7 -4
- package/dist/components/data/heatmap/heatmap.class.js +1 -1
- package/dist/components/data/sequence-strip/sequence-strip.class.js +1 -1
- package/dist/components/data/sparkline/sparkline.class.d.ts +2 -1
- package/dist/components/data/sparkline/sparkline.class.js +1 -1
- package/dist/components/data/stat/stat.class.d.ts +6 -2
- package/dist/components/data/stat/stat.class.js +1 -1
- package/dist/components/data/table/table.class.d.ts +15 -16
- package/dist/components/data/table/table.class.js +5 -4
- package/dist/components/data/table/table.styles.js +1 -1
- package/dist/components/data/timeline/timeline.class.d.ts +7 -2
- package/dist/components/data/timeline/timeline.class.js +1 -1
- package/dist/components/data/timeline/timeline.styles.js +1 -1
- package/dist/components/data/tree/tree-item.class.d.ts +3 -1
- package/dist/components/data/tree/tree-item.class.js +1 -1
- package/dist/components/data/tree/tree-item.styles.js +1 -1
- package/dist/components/data/tree/tree.class.d.ts +4 -1
- package/dist/components/data/tree/tree.class.js +1 -1
- package/dist/components/data/word-cloud/word-cloud-layout.d.ts +2 -1
- package/dist/components/data/word-cloud/word-cloud-layout.js +1 -1
- package/dist/components/data/word-cloud/word-cloud.class.d.ts +2 -1
- package/dist/components/data/word-cloud/word-cloud.class.js +1 -1
- package/dist/components/forms/button/button.class.d.ts +5 -3
- package/dist/components/forms/button/button.class.js +1 -1
- package/dist/components/forms/checkbox/checkbox.class.d.ts +3 -0
- package/dist/components/forms/checkbox/checkbox.class.js +1 -1
- package/dist/components/forms/checkbox-group/checkbox-group.class.d.ts +7 -2
- package/dist/components/forms/checkbox-group/checkbox-group.class.js +1 -1
- package/dist/components/forms/code-editor/code-editor.class.d.ts +16 -4
- package/dist/components/forms/code-editor/code-editor.class.js +19 -9
- package/dist/components/forms/code-editor/code-editor.styles.js +1 -1
- package/dist/components/forms/color-picker/color-picker.class.d.ts +6 -2
- package/dist/components/forms/color-picker/color-picker.class.js +4 -4
- package/dist/components/forms/combobox/combobox.class.d.ts +19 -8
- package/dist/components/forms/combobox/combobox.class.js +3 -3
- package/dist/components/forms/combobox/combobox.styles.js +1 -1
- package/dist/components/forms/combobox/option.class.d.ts +4 -0
- package/dist/components/forms/combobox/option.class.js +2 -2
- package/dist/components/forms/date-picker/calendar-core.d.ts +1 -1
- package/dist/components/forms/date-picker/calendar-core.js +1 -1
- package/dist/components/forms/date-picker/date-input.class.d.ts +20 -10
- package/dist/components/forms/date-picker/date-input.class.js +4 -4
- package/dist/components/forms/date-picker/date-picker.class.d.ts +33 -15
- package/dist/components/forms/date-picker/date-picker.class.js +8 -8
- package/dist/components/forms/date-picker/date-picker.styles.js +1 -1
- package/dist/components/forms/emoji-picker/emoji-data-loader.js +1 -1
- package/dist/components/forms/emoji-picker/emoji-picker.class.d.ts +11 -3
- package/dist/components/forms/emoji-picker/emoji-picker.class.js +3 -3
- package/dist/components/forms/emoji-picker/emoji-types.d.ts +2 -2
- package/dist/components/forms/icon-button/icon-button.class.d.ts +4 -2
- package/dist/components/forms/icon-button/icon-button.class.js +1 -1
- package/dist/components/forms/input/input.class.d.ts +16 -5
- package/dist/components/forms/input/input.class.js +7 -1
- package/dist/components/forms/input/native-time-input.class.d.ts +3 -0
- package/dist/components/forms/input/number-input.class.d.ts +3 -0
- package/dist/components/forms/input/time-input.class.d.ts +11 -2
- package/dist/components/forms/input/time-input.class.js +2 -2
- package/dist/components/forms/locale-picker/locale-picker.class.d.ts +22 -4
- package/dist/components/forms/locale-picker/locale-picker.class.js +2 -2
- package/dist/components/forms/locale-picker/locale-picker.styles.js +1 -1
- package/dist/components/forms/otp-input/otp-input.class.d.ts +5 -1
- package/dist/components/forms/otp-input/otp-input.class.js +1 -1
- package/dist/components/forms/phone-input/phone-input.class.d.ts +21 -8
- package/dist/components/forms/phone-input/phone-input.class.js +1 -1
- package/dist/components/forms/radio/radio-button.class.d.ts +4 -0
- package/dist/components/forms/radio/radio-group.class.d.ts +4 -1
- package/dist/components/forms/radio/radio-group.class.js +1 -1
- package/dist/components/forms/radio/radio.class.d.ts +6 -2
- package/dist/components/forms/radio/radio.class.js +1 -1
- package/dist/components/forms/rubric-form/rubric-form.class.d.ts +7 -1
- package/dist/components/forms/rubric-form/rubric-form.class.js +3 -3
- package/dist/components/forms/select/select.class.d.ts +8 -2
- package/dist/components/forms/select/select.class.js +2 -2
- package/dist/components/forms/select/select.styles.js +1 -1
- package/dist/components/forms/slider/slider.class.d.ts +12 -6
- package/dist/components/forms/slider/slider.class.js +2 -2
- package/dist/components/forms/swatch-picker/swatch-picker.class.d.ts +4 -0
- package/dist/components/forms/swatch-picker/swatch-picker.class.js +1 -1
- package/dist/components/forms/switch/switch.class.d.ts +5 -1
- package/dist/components/forms/switch/switch.class.js +1 -1
- package/dist/components/forms/textarea/textarea.class.d.ts +3 -0
- package/dist/components/forms/textarea/textarea.class.js +1 -1
- package/dist/components/forms/time-range/time-range.class.d.ts +3 -0
- package/dist/components/forms/time-range/time-range.class.js +1 -1
- package/dist/components/forms/token-input/token-input.class.d.ts +8 -2
- package/dist/components/forms/token-input/token-input.class.js +2 -2
- package/dist/components/forms/token-input/token-input.styles.js +1 -1
- package/dist/components/layout/app-rail/app-rail.class.d.ts +9 -5
- package/dist/components/layout/app-rail/app-rail.class.js +4 -3
- package/dist/components/layout/app-rail/app-rail.styles.js +1 -1
- package/dist/components/layout/carousel/carousel.class.d.ts +3 -2
- package/dist/components/layout/carousel/carousel.class.js +1 -1
- package/dist/components/layout/command-palette/command-palette.class.d.ts +2 -2
- package/dist/components/layout/command-palette/command-palette.class.js +1 -1
- package/dist/components/layout/command-palette/command-palette.styles.js +1 -1
- package/dist/components/layout/dashboard-grid/dashboard-grid.class.d.ts +2 -0
- package/dist/components/layout/dashboard-grid/dashboard-grid.class.js +1 -1
- package/dist/components/layout/details/details.class.d.ts +16 -15
- package/dist/components/layout/details/details.class.js +43 -34
- package/dist/components/layout/details/details.styles.js +1 -1
- package/dist/components/layout/dock-panel/dock-panel.class.d.ts +4 -3
- package/dist/components/layout/dock-panel/dock-panel.class.js +2 -1
- package/dist/components/layout/filter-bar/filter-bar.class.d.ts +3 -1
- package/dist/components/layout/filter-bar/filter-bar.class.js +2 -2
- package/dist/components/layout/menu/menu-item.class.js +2 -2
- package/dist/components/layout/menu/menu-label.class.d.ts +3 -3
- package/dist/components/layout/menu/menu.class.d.ts +4 -1
- package/dist/components/layout/menu/menu.class.js +1 -1
- package/dist/components/layout/multi-split/multi-split.class.d.ts +19 -8
- package/dist/components/layout/multi-split/multi-split.class.js +2 -1
- package/dist/components/layout/multi-split/multi-split.styles.js +1 -1
- package/dist/components/layout/reorder-list/reorder-item.class.d.ts +2 -1
- package/dist/components/layout/reorder-list/reorder-item.class.js +1 -1
- package/dist/components/layout/reorder-list/reorder-list.class.js +1 -1
- package/dist/components/layout/reorder-list/reorder-owner.js +1 -1
- package/dist/components/layout/scroller/scroller.class.d.ts +4 -4
- package/dist/components/layout/scroller/scroller.styles.js +1 -1
- package/dist/components/layout/split-panel/split-panel.class.d.ts +5 -3
- package/dist/components/layout/split-panel/split-panel.class.js +3 -2
- package/dist/components/layout/tab-group/tab-group.class.d.ts +3 -1
- package/dist/components/layout/tab-group/tab-group.class.js +1 -1
- package/dist/components/layout/tab-group/tab-group.styles.js +1 -1
- package/dist/components/layout/virtual-list/virtual-list.class.js +2 -2
- package/dist/components/layout/widget/widget.class.d.ts +6 -2
- package/dist/components/layout/widget/widget.class.js +1 -1
- package/dist/components/layout/widget/widget.styles.js +1 -1
- package/dist/components/media/animation/animation.class.d.ts +3 -2
- package/dist/components/media/animation/animation.class.js +1 -1
- package/dist/components/media/attachment-chip/attachment-chip.class.d.ts +4 -3
- package/dist/components/media/attachment-chip/attachment-chip.class.js +1 -1
- package/dist/components/media/av-player/av-metadata.d.ts +3 -2
- package/dist/components/media/av-player/av-player.class.d.ts +4 -3
- package/dist/components/media/av-player/av-player.class.js +3 -3
- package/dist/components/media/av-player/av-player.styles.js +1 -1
- package/dist/components/media/avatar/avatar.class.d.ts +2 -1
- package/dist/components/media/avatar/avatar.class.js +1 -1
- package/dist/components/media/file-input/file-input.class.d.ts +4 -2
- package/dist/components/media/file-input/file-input.class.js +1 -1
- package/dist/components/media/file-input/file-input.styles.js +1 -1
- package/dist/components/media/flag/flag.class.js +1 -1
- package/dist/components/media/image-viewer/image-viewer.class.d.ts +2 -1
- package/dist/components/media/image-viewer/image-viewer.class.js +1 -1
- package/dist/components/media/image-viewer/image-viewer.styles.js +1 -1
- package/dist/components/media/lightbox/lightbox.styles.js +1 -1
- package/dist/components/media/map/map-loader.js +1 -1
- package/dist/components/media/map/map.class.d.ts +22 -34
- package/dist/components/media/map/map.class.js +1 -1
- package/dist/components/media/map/map.styles.js +1 -1
- package/dist/components/media/media-card/media-card.class.d.ts +1 -1
- package/dist/components/media/media-card/media-card.class.js +1 -1
- package/dist/components/media/pan-zoom/pan-zoom.class.js +1 -1
- package/dist/components/media/qr-code/qr-code-loader.js +1 -1
- package/dist/components/media/qr-code/qr-code.class.d.ts +5 -2
- package/dist/components/media/qr-code/qr-code.class.js +2 -2
- package/dist/components/media/sequence-playback/sequence-playback.class.d.ts +3 -3
- package/dist/components/media/sequence-playback/sequence-playback.class.js +1 -1
- package/dist/components/media/sequence-playback/sequence-playback.styles.js +1 -1
- package/dist/components/media/video/video.class.d.ts +2 -1
- package/dist/components/media/video/video.styles.js +1 -1
- package/dist/components/media/zoomable-frame/zoomable-frame.class.d.ts +3 -2
- package/dist/components/media/zoomable-frame/zoomable-frame.class.js +2 -2
- package/dist/components/overlays/alert/alert.styles.js +1 -1
- package/dist/components/overlays/callout/callout.styles.js +1 -1
- package/dist/components/overlays/chip/chip-group.class.d.ts +2 -0
- package/dist/components/overlays/chip/chip-group.class.js +1 -1
- package/dist/components/overlays/dialog/dialog.class.d.ts +2 -0
- package/dist/components/overlays/dialog/dialog.class.js +1 -1
- package/dist/components/overlays/dialog/dialog.styles.js +1 -1
- package/dist/components/overlays/empty/empty.class.d.ts +2 -0
- package/dist/components/overlays/empty/empty.class.js +1 -1
- package/dist/components/overlays/kbd/kbd.class.d.ts +2 -0
- package/dist/components/overlays/kbd/kbd.class.js +1 -1
- package/dist/components/overlays/overlay/popover.class.d.ts +3 -1
- package/dist/components/overlays/overlay/popover.class.js +1 -1
- package/dist/components/overlays/overlay/tooltip.class.d.ts +3 -1
- package/dist/components/overlays/overlay/tooltip.class.js +1 -1
- package/dist/components/overlays/rating/rating.class.d.ts +2 -0
- package/dist/components/overlays/rating/rating.class.js +1 -1
- package/dist/components/overlays/toast/toast-item.class.js +1 -1
- package/dist/components/retrieval/claim-evidence/claim-evidence.class.d.ts +11 -5
- package/dist/components/retrieval/claim-evidence/claim-evidence.class.js +3 -3
- package/dist/components/retrieval/embedding-explorer/embedding-explorer.class.js +2 -2
- package/dist/components/retrieval/entity-card/entity-card.class.d.ts +5 -2
- package/dist/components/retrieval/entity-card/entity-card.class.js +1 -1
- package/dist/components/retrieval/entity-chip/entity-chip.class.d.ts +4 -2
- package/dist/components/retrieval/entity-chip/entity-chip.class.js +1 -1
- package/dist/components/retrieval/graph/graph-canvas.js +1 -1
- package/dist/components/retrieval/graph/graph-loader.js +1 -1
- package/dist/components/retrieval/graph/graph.class.d.ts +10 -8
- package/dist/components/retrieval/graph/graph.class.js +10 -10
- package/dist/components/retrieval/graph-legend/graph-legend.class.d.ts +4 -2
- package/dist/components/retrieval/graph-legend/graph-legend.class.js +1 -1
- package/dist/components/retrieval/grounding-summary/grounding-summary.class.d.ts +15 -9
- package/dist/components/retrieval/grounding-summary/grounding-summary.class.js +7 -5
- package/dist/components/retrieval/ingestion-queue/ingestion-queue.class.d.ts +2 -0
- package/dist/components/retrieval/ingestion-queue/ingestion-queue.class.js +1 -1
- package/dist/components/retrieval/knowledge-base/knowledge-base.class.d.ts +3 -2
- package/dist/components/retrieval/knowledge-base/knowledge-base.class.js +4 -3
- package/dist/components/retrieval/knowledge-base/knowledge-base.styles.js +1 -1
- package/dist/components/retrieval/knowledge-graph-explorer/knowledge-graph-explorer.class.d.ts +7 -3
- package/dist/components/retrieval/knowledge-graph-explorer/knowledge-graph-explorer.class.js +8 -3
- package/dist/components/retrieval/knowledge-graph-explorer/knowledge-graph-explorer.styles.js +1 -1
- package/dist/components/retrieval/memory-panel/memory-panel.class.d.ts +15 -6
- package/dist/components/retrieval/memory-panel/memory-panel.class.js +1 -1
- package/dist/components/retrieval/neighbor-list/neighbor-list.class.js +1 -1
- package/dist/components/retrieval/neighbor-list/neighbor-list.styles.js +1 -1
- package/dist/components/retrieval/node-palette/node-palette.class.d.ts +17 -12
- package/dist/components/retrieval/node-palette/node-palette.class.js +2 -2
- package/dist/components/retrieval/node-palette/node-palette.styles.js +1 -1
- package/dist/components/retrieval/path-strip/path-strip.class.js +1 -1
- package/dist/components/retrieval/provenance-panel/provenance-panel.class.d.ts +2 -1
- package/dist/components/retrieval/provenance-panel/provenance-panel.class.js +1 -1
- package/dist/components/retrieval/retrieval-results/retrieval-results.class.d.ts +1 -1
- package/dist/components/retrieval/retrieval-results/retrieval-results.class.js +5 -5
- package/dist/components/retrieval/retrieval-trace/retrieval-trace.class.js +1 -1
- package/dist/components/retrieval/source-picker/source-picker.class.d.ts +2 -1
- package/dist/components/retrieval/source-picker/source-picker.class.js +2 -2
- package/dist/components/utility/copy-button/copy-button.class.d.ts +2 -1
- package/dist/components/utility/copy-button/copy-button.class.js +1 -1
- package/dist/components/utility/diff-view/diff-view.class.d.ts +4 -1
- package/dist/components/utility/diff-view/diff-view.class.js +1 -1
- package/dist/components/utility/export-button/export-button.class.d.ts +2 -2
- package/dist/components/utility/export-button/export-button.class.js +1 -1
- package/dist/components/utility/export-button/export-button.styles.js +1 -1
- package/dist/components/utility/format/format-date.class.js +1 -1
- package/dist/components/utility/format/format-number.class.d.ts +3 -1
- package/dist/components/utility/format/format-options.js +1 -1
- package/dist/components/utility/format/relative-time.class.js +1 -1
- package/dist/components/utility/icon/dompurify-loader.js +1 -1
- package/dist/components/utility/icon/icon-library.js +1 -1
- package/dist/components/utility/intersection-observer/intersection-observer.class.js +1 -1
- package/dist/components/utility/json-viewer/json-viewer.class.d.ts +6 -3
- package/dist/components/utility/json-viewer/json-viewer.class.js +5 -5
- package/dist/components/utility/known-date/known-date.class.d.ts +9 -5
- package/dist/components/utility/known-date/known-date.class.js +2 -2
- package/dist/components/utility/known-date/known-date.styles.js +1 -1
- package/dist/components/utility/mention-popover/mention-popover.class.d.ts +32 -45
- package/dist/components/utility/mention-popover/mention-popover.class.js +1 -1
- package/dist/components/utility/mutation-observer/mutation-observer.class.js +1 -1
- package/dist/components/utility/poll-status/poll-status.class.d.ts +3 -0
- package/dist/components/utility/poll-status/poll-status.styles.js +1 -1
- package/dist/components/viewers/calendar-viewer/calendar-loader.js +1 -1
- package/dist/components/viewers/calendar-viewer/calendar-viewer.class.d.ts +1 -0
- package/dist/components/viewers/calendar-viewer/calendar-viewer.class.js +1 -1
- package/dist/components/viewers/dataset-viewer/dataset-viewer.class.d.ts +2 -1
- package/dist/components/viewers/dataset-viewer/dataset-viewer.styles.js +1 -1
- package/dist/components/viewers/document-compare/document-compare.class.d.ts +11 -8
- package/dist/components/viewers/document-compare/document-compare.class.js +2 -2
- package/dist/components/viewers/document-preview/document-preview.class.d.ts +8 -4
- package/dist/components/viewers/document-preview/document-preview.class.js +4 -4
- package/dist/components/viewers/document-preview/document-preview.styles.js +1 -1
- package/dist/components/viewers/document-viewer/document-viewer.class.d.ts +5 -2
- package/dist/components/viewers/document-viewer/document-viewer.class.js +2 -2
- package/dist/components/viewers/document-viewer/document-viewer.styles.js +1 -1
- package/dist/components/viewers/document-viewer/registry-ownership.d.ts +1 -0
- package/dist/components/viewers/document-viewer/registry-ownership.js +1 -0
- package/dist/components/viewers/document-viewer/registry.js +1 -1
- package/dist/components/viewers/docx-viewer/docx-loader.js +1 -1
- package/dist/components/viewers/docx-viewer/docx-viewer.class.js +1 -1
- package/dist/components/viewers/ebook-viewer/ebook-loader.d.ts +1 -1
- package/dist/components/viewers/ebook-viewer/ebook-viewer.class.d.ts +8 -2
- package/dist/components/viewers/ebook-viewer/ebook-viewer.class.js +1 -1
- package/dist/components/viewers/email-viewer/email-loader.js +1 -1
- package/dist/components/viewers/email-viewer/email-viewer.class.d.ts +3 -2
- package/dist/components/viewers/email-viewer/email-viewer.class.js +2 -2
- package/dist/components/viewers/html-viewer/dompurify-loader.js +1 -1
- package/dist/components/viewers/include/include-resource.js +1 -1
- package/dist/components/viewers/include/include.class.d.ts +3 -1
- package/dist/components/viewers/notebook-viewer/dompurify-loader.js +1 -1
- package/dist/components/viewers/notebook-viewer/notebook-viewer.class.d.ts +4 -2
- package/dist/components/viewers/notebook-viewer/notebook-viewer.class.js +4 -4
- package/dist/components/viewers/notebook-viewer/notebook-viewer.styles.js +1 -1
- package/dist/components/viewers/passive-markup.js +1 -1
- package/dist/components/viewers/pdf-viewer/pdf-loader.js +1 -1
- package/dist/components/viewers/pptx-viewer/pptx-loader.js +1 -1
- package/dist/components/viewers/spreadsheet-viewer/spreadsheet-loader.js +1 -1
- package/dist/components/viewers/svg-viewer/dompurify-loader.js +1 -1
- package/dist/components/viewers/svg-viewer/svg-viewer.class.d.ts +2 -1
- package/dist/components/viewers/svg-viewer/svg-viewer.styles.js +1 -1
- package/dist/components/viewers/viewer-loading.js +1 -1
- package/dist/components/viewers/viewer-search-limits.d.ts +2 -0
- package/dist/components/viewers/viewer-search-limits.js +1 -1
- package/dist/components/viewers/xml-viewer/xml-viewer.class.d.ts +2 -1
- package/dist/components/viewers/xml-viewer/xml-viewer.class.js +1 -1
- package/dist/components/viewers/xml-viewer/xml-viewer.js +1 -1
- package/dist/custom-elements-jsx.d.ts +1 -1
- package/dist/events.d.ts +13 -6
- package/dist/internal/aria-controls.d.ts +16 -13
- package/dist/internal/aria-controls.js +1 -1
- package/dist/internal/aria-reflection.js +1 -1
- package/dist/internal/catalog-picker.d.ts +2 -2
- package/dist/internal/catalog-picker.js +1 -1
- package/dist/internal/chart-annotation-registration.d.ts +1 -0
- package/dist/internal/chart-annotation-registration.js +1 -0
- package/dist/internal/data-descriptors.d.ts +13 -0
- package/dist/internal/data-descriptors.js +1 -0
- package/dist/internal/default-strings.generated.d.ts +1 -1
- package/dist/internal/default-strings.generated.js +2 -2
- package/dist/internal/dev-mode-attribute-warning.d.ts +3 -0
- package/dist/internal/dev-mode-attribute-warning.js +1 -1
- package/dist/internal/element-internals.d.ts +4 -3
- package/dist/internal/element-internals.js +1 -1
- package/dist/internal/form-associated.js +1 -1
- package/dist/internal/highlight-collection.d.ts +2 -0
- package/dist/internal/highlight-collection.js +1 -1
- package/dist/internal/localization-types.d.ts +1 -1
- package/dist/internal/localization.js +2 -2
- package/dist/internal/lyra-element.d.ts +10 -1
- package/dist/internal/lyra-element.js +2 -1
- package/dist/internal/native-control-description.d.ts +7 -0
- package/dist/internal/native-control-description.js +1 -0
- package/dist/internal/option-selection.js +1 -1
- package/dist/internal/overlay-order.d.ts +6 -0
- package/dist/internal/overlay-order.js +1 -0
- package/dist/internal/overlay-stack.d.ts +1 -1
- package/dist/internal/overlay-stack.js +1 -1
- package/dist/internal/package-metadata.d.ts +1 -1
- package/dist/internal/package-metadata.js +1 -1
- package/dist/internal/papaparse-loader.js +1 -1
- package/dist/internal/positioner.d.ts +5 -4
- package/dist/internal/pseudo-localization.js +1 -1
- package/dist/internal/reactive-property-writes.d.ts +1 -0
- package/dist/internal/reactive-property-writes.js +1 -0
- package/dist/internal/safe-css.js +1 -1
- package/dist/internal/step-value.d.ts +6 -0
- package/dist/internal/step-value.js +1 -0
- package/dist/internal/svg-title.d.ts +3 -0
- package/dist/internal/svg-title.js +1 -0
- package/dist/internal/text-quote.js +1 -1
- package/dist/lyra.d.ts +1 -1
- package/dist/svelte.d.ts +1 -1
- package/dist/translations/ar.js +2 -2
- package/dist/translations/de.js +2 -2
- package/dist/translations/es.js +2 -2
- package/dist/translations/fa.js +2 -2
- package/dist/translations/fr.js +2 -2
- package/dist/translations/he.js +2 -2
- package/dist/translations/ja.js +2 -2
- package/dist/translations/pseudo/ar-XB.js +1 -1
- package/dist/translations/pt-BR.js +2 -2
- package/dist/translations/ru.js +2 -2
- package/dist/translations/zh-CN.js +2 -2
- package/dist/vue.d.ts +1 -1
- package/llms/components/lr-accordion-item.md +10 -5
- package/llms/components/lr-accordion.md +10 -5
- package/llms/components/lr-activity-feed.md +6 -5
- package/llms/components/lr-agent-run.md +1 -1
- package/llms/components/lr-agent-trace.md +3 -0
- package/llms/components/lr-agent-workspace.md +3 -2
- package/llms/components/lr-animation.md +4 -0
- package/llms/components/lr-app-rail-item.md +4 -2
- package/llms/components/lr-app-rail.md +4 -2
- package/llms/components/lr-attachment-chip.md +8 -3
- package/llms/components/lr-audio-visualizer.md +9 -6
- package/llms/components/lr-av-player.md +14 -0
- package/llms/components/lr-avatar.md +4 -0
- package/llms/components/lr-bar-chart.md +2 -2
- package/llms/components/lr-box-plot.md +15 -6
- package/llms/components/lr-bubble-chart.md +2 -2
- package/llms/components/lr-button.md +11 -3
- package/llms/components/lr-calendar-viewer.md +4 -0
- package/llms/components/lr-calendar.md +15 -4
- package/llms/components/lr-carousel.md +5 -0
- package/llms/components/lr-chart.md +24 -9
- package/llms/components/lr-chat-composer.md +2 -1
- package/llms/components/lr-chat-message.md +4 -0
- package/llms/components/lr-checkbox.md +3 -0
- package/llms/components/lr-chip-group.md +3 -0
- package/llms/components/lr-chip.md +3 -0
- package/llms/components/lr-chunk-inspector.md +2 -2
- package/llms/components/lr-code-block-core.md +20 -8
- package/llms/components/lr-code-block.md +17 -14
- package/llms/components/lr-code-editor.md +20 -5
- package/llms/components/lr-color-picker.md +9 -0
- package/llms/components/lr-combobox.md +35 -4
- package/llms/components/lr-command-palette.md +4 -0
- package/llms/components/lr-commit-card.md +3 -0
- package/llms/components/lr-compare-panel.md +7 -0
- package/llms/components/lr-condition-builder.md +5 -0
- package/llms/components/lr-conversation-item.md +3 -0
- package/llms/components/lr-copy-button.md +10 -1
- package/llms/components/lr-dashboard-grid.md +5 -0
- package/llms/components/lr-data-grid.md +22 -3
- package/llms/components/lr-dataset-viewer.md +3 -2
- package/llms/components/lr-date-input.md +50 -6
- package/llms/components/lr-date-picker.md +51 -7
- package/llms/components/lr-details.md +10 -5
- package/llms/components/lr-dialog.md +4 -0
- package/llms/components/lr-diff-view.md +6 -0
- package/llms/components/lr-document-compare.md +6 -2
- package/llms/components/lr-document-library.md +4 -0
- package/llms/components/lr-document-preview.md +18 -4
- package/llms/components/lr-document-viewer.md +14 -4
- package/llms/components/lr-docx-viewer.md +6 -0
- package/llms/components/lr-doughnut-chart.md +2 -2
- package/llms/components/lr-dropdown-item.md +4 -0
- package/llms/components/lr-dropdown.md +3 -0
- package/llms/components/lr-ebook-viewer.md +12 -3
- package/llms/components/lr-email-viewer.md +10 -0
- package/llms/components/lr-emoji-picker.md +17 -3
- package/llms/components/lr-empty.md +3 -0
- package/llms/components/lr-entity-card.md +3 -0
- package/llms/components/lr-entity-chip.md +4 -0
- package/llms/components/lr-eval-dataset.md +2 -2
- package/llms/components/lr-export-button.md +9 -0
- package/llms/components/lr-file-input.md +12 -8
- package/llms/components/lr-file-tree.md +5 -1
- package/llms/components/lr-filter-bar.md +5 -0
- package/llms/components/lr-flow-canvas.md +8 -1
- package/llms/components/lr-flow-node.md +2 -1
- package/llms/components/lr-flow-run-status.md +1 -1
- package/llms/components/lr-format-date.md +3 -1
- package/llms/components/lr-format-number.md +4 -0
- package/llms/components/lr-funnel.md +4 -0
- package/llms/components/lr-gauge.md +4 -0
- package/llms/components/lr-generation-metrics.md +5 -0
- package/llms/components/lr-graph-legend.md +4 -2
- package/llms/components/lr-graph-query-builder.md +6 -0
- package/llms/components/lr-graph.md +8 -2
- package/llms/components/lr-grounding-summary.md +8 -8
- package/llms/components/lr-heatmap.md +13 -0
- package/llms/components/lr-histogram.md +2 -2
- package/llms/components/lr-icon-button.md +7 -0
- package/llms/components/lr-image-viewer.md +9 -0
- package/llms/components/lr-include.md +5 -0
- package/llms/components/lr-ingestion-queue.md +5 -1
- package/llms/components/lr-input.md +22 -8
- package/llms/components/lr-intersection-observer.md +9 -0
- package/llms/components/lr-json-viewer.md +10 -1
- package/llms/components/lr-kbd.md +3 -0
- package/llms/components/lr-knowledge-base.md +10 -1
- package/llms/components/lr-knowledge-graph-explorer.md +7 -0
- package/llms/components/lr-known-date.md +7 -0
- package/llms/components/lr-line-chart.md +2 -2
- package/llms/components/lr-lite-chart.md +29 -9
- package/llms/components/lr-live-region.md +3 -0
- package/llms/components/lr-locale-picker.md +12 -0
- package/llms/components/lr-map.md +23 -5
- package/llms/components/lr-markdown-core.md +4 -0
- package/llms/components/lr-markdown.md +15 -8
- package/llms/components/lr-media-card.md +5 -8
- package/llms/components/lr-mention-popover.md +17 -10
- package/llms/components/lr-menu-item.md +4 -0
- package/llms/components/lr-menu-label.md +4 -3
- package/llms/components/lr-menu.md +4 -0
- package/llms/components/lr-message-actions.md +13 -3
- package/llms/components/lr-message-feedback.md +24 -7
- package/llms/components/lr-message-parts.md +6 -3
- package/llms/components/lr-model-select.md +13 -2
- package/llms/components/lr-multi-split.md +20 -7
- package/llms/components/lr-mutation-observer.md +8 -0
- package/llms/components/lr-native-time-input.md +10 -0
- package/llms/components/lr-node-palette.md +8 -2
- package/llms/components/lr-notebook-viewer.md +4 -1
- package/llms/components/lr-number-input.md +12 -1
- package/llms/components/lr-option.md +35 -4
- package/llms/components/lr-otp-input.md +10 -0
- package/llms/components/lr-pan-zoom.md +1 -2
- package/llms/components/lr-phone-input.md +20 -5
- package/llms/components/lr-pie-chart.md +2 -2
- package/llms/components/lr-polar-area-chart.md +2 -2
- package/llms/components/lr-poll-status.md +4 -0
- package/llms/components/lr-popover.md +3 -0
- package/llms/components/lr-popup.md +3 -2
- package/llms/components/lr-prompt-input.md +7 -3
- package/llms/components/lr-prompt-queue.md +6 -0
- package/llms/components/lr-prompt-studio.md +7 -0
- package/llms/components/lr-provenance-panel.md +3 -0
- package/llms/components/lr-push-to-talk.md +8 -0
- package/llms/components/lr-qr-code.md +6 -0
- package/llms/components/lr-radar-chart.md +2 -2
- package/llms/components/lr-radio-button.md +13 -4
- package/llms/components/lr-radio-group.md +5 -0
- package/llms/components/lr-radio.md +9 -0
- package/llms/components/lr-rating.md +8 -0
- package/llms/components/lr-relative-time.md +2 -0
- package/llms/components/lr-reorder-item.md +6 -0
- package/llms/components/lr-reorder-list.md +6 -0
- package/llms/components/lr-result-card.md +6 -3
- package/llms/components/lr-result-field.md +6 -3
- package/llms/components/lr-retrieval-results.md +1 -1
- package/llms/components/lr-rubric-form.md +12 -0
- package/llms/components/lr-scatter-chart.md +2 -2
- package/llms/components/lr-scroller.md +5 -5
- package/llms/components/lr-select.md +9 -0
- package/llms/components/lr-sequence-playback.md +5 -2
- package/llms/components/lr-slider.md +19 -5
- package/llms/components/lr-source-picker.md +4 -0
- package/llms/components/lr-span-waterfall.md +3 -0
- package/llms/components/lr-sparkline.md +4 -0
- package/llms/components/lr-split-panel.md +4 -0
- package/llms/components/lr-stack-trace.md +3 -0
- package/llms/components/lr-stat.md +10 -0
- package/llms/components/lr-streaming-text.md +2 -3
- package/llms/components/lr-subagent-panel.md +3 -2
- package/llms/components/lr-svg-viewer.md +3 -0
- package/llms/components/lr-swatch-picker.md +4 -0
- package/llms/components/lr-switch.md +6 -0
- package/llms/components/lr-tab-group.md +4 -0
- package/llms/components/lr-table.md +10 -2
- package/llms/components/lr-terminal.md +17 -5
- package/llms/components/lr-textarea.md +9 -0
- package/llms/components/lr-thinking-panel.md +3 -1
- package/llms/components/lr-thread-list.md +26 -4
- package/llms/components/lr-time-input.md +3 -0
- package/llms/components/lr-time-range.md +5 -0
- package/llms/components/lr-timeline-item.md +6 -0
- package/llms/components/lr-timeline.md +6 -0
- package/llms/components/lr-token-input.md +14 -0
- package/llms/components/lr-tool-call-chip.md +7 -5
- package/llms/components/lr-tool-param-form.md +6 -2
- package/llms/components/lr-tool-result-dialog.md +4 -0
- package/llms/components/lr-tool-result-view.md +2 -3
- package/llms/components/lr-tool-select-dialog.md +6 -2
- package/llms/components/lr-tooltip.md +6 -0
- package/llms/components/lr-trace-tree.md +3 -0
- package/llms/components/lr-transcript-feed.md +3 -0
- package/llms/components/lr-tree-item.md +12 -5
- package/llms/components/lr-tree.md +12 -5
- package/llms/components/lr-typing-indicator.md +3 -0
- package/llms/components/lr-usage-badge.md +4 -0
- package/llms/components/lr-video.md +8 -2
- package/llms/components/lr-virtual-list.md +5 -3
- package/llms/components/lr-voice-picker.md +15 -2
- package/llms/components/lr-widget-renderer.md +21 -13
- package/llms/components/lr-widget.md +4 -2
- package/llms/components/lr-word-cloud.md +4 -0
- package/llms/components/lr-xml-viewer.md +9 -2
- package/llms/components/lr-zoomable-frame.md +6 -3
- package/llms/peers.md +5 -5
- package/llms/shared.md +74 -63
- package/llms-full.txt +4705 -2954
- package/package.json +19 -14
- package/vscode-css-data.json +1 -1
- package/vscode-html-data.json +1 -1
- package/web-types.json +1 -1
- package/dist/components/viewers/docx-viewer/fixtures/minimal-docx-fixture.d.ts +0 -1
- package/dist/components/viewers/docx-viewer/fixtures/minimal-docx-fixture.js +0 -1
- package/dist/components/viewers/ebook-viewer/fixtures/minimal-epub-fixture.d.ts +0 -1
- package/dist/components/viewers/ebook-viewer/fixtures/minimal-epub-fixture.js +0 -1
- package/dist/components/viewers/spreadsheet-viewer/fixtures/minimal-xlsx-fixture.d.ts +0 -1
- package/dist/components/viewers/spreadsheet-viewer/fixtures/minimal-xlsx-fixture.js +0 -1
|
@@ -1,4 +1,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,svg}from"lit";import{property,state,query}from"lit/decorators.js";import{LyraElement}from"../../../internal/lyra-element.js";import{FormAssociated,isBarredFromValidation}from"../../../internal/form-associated.js";import{SET_ANCHORED_VALIDITY}from"../../../internal/anchored-validity.js";import{lengthViolations}from"../../../internal/length-constraints.js";import{finiteCount,finiteInteger}from"../../../internal/numbers.js";import{styles}from"./chat-composer.styles.js";import{autocorrectConverter,normalizeAutocorrect,trueDefaultBooleanConverter}from"../../../internal/converters.js";import{relayNativeEvent}from"../../../internal/native-event-relay.js";import{LYRA_DEFAULT_composerLabel,LYRA_DEFAULT_fieldRequired,LYRA_DEFAULT_sendMessage,LYRA_DEFAULT_stopGenerating,LYRA_DEFAULT_valueInvalid}from"../../../internal/default-strings.generated.js";const ICON_VIEW_BOX="0 0 24 24",ICON_STROKE_WIDTH="1.75";function sendIcon(){return svg`
|
|
1
|
+
var __decorate=function(decorators,target,key,desc){var c=arguments.length,r=c<3?target:desc===null?desc=Object.getOwnPropertyDescriptor(target,key):desc,d;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")r=Reflect.decorate(decorators,target,key,desc);else for(var i=decorators.length-1;i>=0;i--)(d=decorators[i])&&(r=(c<3?d(r):c>3?d(target,key,r):d(target,key))||r);return c>3&&r&&Object.defineProperty(target,key,r),r};import{html,nothing,svg}from"lit";import{property,state,query}from"lit/decorators.js";import{LyraElement}from"../../../internal/lyra-element.js";import{FormAssociated,isBarredFromValidation}from"../../../internal/form-associated.js";import{SET_ANCHORED_VALIDITY}from"../../../internal/anchored-validity.js";import{lengthViolations}from"../../../internal/length-constraints.js";import{finiteCount,finiteInteger}from"../../../internal/numbers.js";import{styles}from"./chat-composer.styles.js";import{autocorrectConverter,normalizeAutocorrect,trueDefaultBooleanConverter}from"../../../internal/converters.js";import{relayNativeEvent}from"../../../internal/native-event-relay.js";import{LYRA_DEFAULT_composerLabel,LYRA_DEFAULT_fieldRequired,LYRA_DEFAULT_sendMessage,LYRA_DEFAULT_stopGenerating,LYRA_DEFAULT_valueInvalid}from"../../../internal/default-strings.generated.js";const CHAT_COMPOSER_STATUSES=Object.freeze(["idle","sending","streaming"]);function normalizeChatComposerStatus(value){return typeof value=="string"&&CHAT_COMPOSER_STATUSES.includes(value)?value:"idle"}const ICON_VIEW_BOX="0 0 24 24",ICON_STROKE_WIDTH="1.75";function sendIcon(){return svg`
|
|
2
2
|
<svg
|
|
3
3
|
width="1em"
|
|
4
4
|
height="1em"
|
|
@@ -21,7 +21,7 @@ var __decorate=function(decorators,target,key,desc){var c=arguments.length,r=c<3
|
|
|
21
21
|
aria-hidden="true"
|
|
22
22
|
focusable="false"
|
|
23
23
|
><rect x="6" y="6" width="12" height="12" rx="1.5"></rect></svg>
|
|
24
|
-
`}class LyraChatComposerBase extends LyraElement{}class LyraChatComposer extends FormAssociated(LyraChatComposerBase){static{this.defaultStrings={...super.defaultStrings,composerLabel:LYRA_DEFAULT_composerLabel,fieldRequired:LYRA_DEFAULT_fieldRequired,sendMessage:LYRA_DEFAULT_sendMessage,stopGenerating:LYRA_DEFAULT_stopGenerating,valueInvalid:LYRA_DEFAULT_valueInvalid}}static{this.styles=[LyraElement.styles,styles]}get autocorrect(){return this.autocorrectValue}set autocorrect(next){this.autocorrectValue=normalizeAutocorrect(next),this.requestUpdate()}get effectiveMinRows(){return finiteInteger(this.minRows,1,1)}get effectiveMaxRows(){return Math.max(this.effectiveMinRows,finiteInteger(this.maxRows,this.effectiveMinRows,1))}effectiveLengthLimit(declared){if(!(declared===void 0||!Number.isFinite(declared)||declared<0))return finiteCount(Math.trunc(declared),0)}constructor(){super(),this.placeholder="",this.minRows=1,this.maxRows=8,this.
|
|
24
|
+
`}class LyraChatComposerBase extends LyraElement{}class LyraChatComposer extends FormAssociated(LyraChatComposerBase){static{this.defaultStrings={...super.defaultStrings,composerLabel:LYRA_DEFAULT_composerLabel,fieldRequired:LYRA_DEFAULT_fieldRequired,sendMessage:LYRA_DEFAULT_sendMessage,stopGenerating:LYRA_DEFAULT_stopGenerating,valueInvalid:LYRA_DEFAULT_valueInvalid}}static{this.styles=[LyraElement.styles,styles]}get status(){return this.statusValue}set status(value){const previous=this.statusValue,normalized=normalizeChatComposerStatus(value);this.statusValue=normalized,typeof value=="string"&&value!==normalized&&this.getAttribute("status")!==normalized&&this.setAttribute("status",normalized),this.requestUpdate("status",previous,{reflect:!0,hasChanged:()=>!0})}get autocorrect(){return this.autocorrectValue}set autocorrect(next){this.autocorrectValue=normalizeAutocorrect(next),this.requestUpdate()}get effectiveMinRows(){return finiteInteger(this.minRows,1,1)}get effectiveMaxRows(){return Math.max(this.effectiveMinRows,finiteInteger(this.maxRows,this.effectiveMinRows,1))}effectiveLengthLimit(declared){if(!(declared===void 0||!Number.isFinite(declared)||declared<0))return finiteCount(Math.trunc(declared),0)}constructor(){super(),this.placeholder="",this.minRows=1,this.maxRows=8,this.statusValue="idle",this.frame="card",this.submitOnEnter=!0,this.submitDisabled=!1,this.stoppable=!0,this.readOnly=!1,this.accessibleLabel=null,this.spellcheck=!0,this.autocapitalize="",this.autocorrectValue=!0,this.wrap="soft",this.autocomplete="",this.inputMode="",this.enterKeyHint="",this.hasStartSlot=!1,this.hasChipsSlot=!1,this.hasEndSlot=!1,this.touched=!1,this.textareaResizeGeneration=0,this.onTextareaInput=event=>{if(this.effectiveDisabled||this.readOnly){event.stopPropagation();return}this.value=event.target.value,this.resizeTextarea(),relayNativeEvent(this,event),this.emit("lr-input",{value:this.value})},this.onTextareaChange=event=>{if(this.effectiveDisabled||this.readOnly){event.stopPropagation();return}this.value=event.target.value,relayNativeEvent(this,event),this.emit("lr-change",{value:this.value})},this.onTextareaKeyDown=e=>{e.defaultPrevented||e.key==="Enter"&&(e.shiftKey||this.submitOnEnter&&(e.isComposing||e.keyCode===229||this.status==="idle"&&(e.preventDefault(),this.submit())))},this.onActionClick=()=>{this.effectiveDisabled||(this.status==="idle"?this.submit():this.stoppable&&this.emit("lr-stop",null))},this.syncStartSlot=()=>{this.hasStartSlot=this.hasSlotted("start")},this.onChipsSlotChange=e=>{this.hasChipsSlot=e.target.assignedElements({flatten:!0}).length>0},this.syncEndSlot=()=>{this.hasEndSlot=this.hasSlotted("end")},this.onTextareaBlur=event=>{this.effectiveDisabled||(this.touched=!0),relayNativeEvent(this,event)},this.onTextareaFocus=event=>{if(this.effectiveDisabled){event.stopPropagation();return}relayNativeEvent(this,event)},this.addEventListener("invalid",()=>{this.touched=!0})}get input(){return this.textareaEl??null}get selectionStart(){return this.textareaEl?.selectionStart??null}set selectionStart(value){this.textareaEl&&(this.textareaEl.selectionStart=value??0)}get selectionEnd(){return this.textareaEl?.selectionEnd??null}set selectionEnd(value){this.textareaEl&&(this.textareaEl.selectionEnd=value??0)}get selectionDirection(){return this.textareaEl?.selectionDirection}set selectionDirection(value){this.textareaEl&&(this.textareaEl.selectionDirection=value??"none")}focus(options){this.textareaEl?.focus(options)}blur(){this.textareaEl?.blur()}click(){this.effectiveDisabled||this.textareaEl?.focus()}select(){this.textareaEl?.select()}setSelectionRange(start,end,direction){this.textareaEl?.setSelectionRange(start,end,direction)}setRangeText(replacement,start,end,selectMode){const textarea=this.textareaEl;textarea&&(start===void 0||end===void 0?textarea.setRangeText(replacement):textarea.setRangeText(replacement,start,end,selectMode),this.value=textarea.value,this.resizeTextarea())}willUpdate(changed){super.willUpdate(changed),this.seedFirstRenderState(()=>{this.syncStartSlot(),this.hasChipsSlot=this.hasSlotted("chips"),this.syncEndSlot()})}firstUpdated(changed){super.firstUpdated(changed),this.resizeTextarea(),this.armTextareaResizeObserver()}connectedCallback(){super.connectedCallback(),this.hasUpdated&&(this.armTextareaResizeObserver(),this.resizeTextarea())}disconnectedCallback(){super.disconnectedCallback(),this.resetTextareaResizeWork()}adoptedCallback(){super.adoptedCallback(),this.resetTextareaResizeWork()}updated(changed){super.updated(changed),(changed.has("value")||changed.has("minRows")||changed.has("maxRows"))&&this.resizeTextarea(),(changed.has("minLength")||changed.has("maxLength")||changed.has("readOnly"))&&this.updateValidity()}updateValidity(){if(isBarredFromValidation({effectiveDisabled:this.effectiveDisabled,readonly:this.readOnly},this.internals)){this[SET_ANCHORED_VALIDITY]({});return}if(this.required&&this.value===""){this[SET_ANCHORED_VALIDITY]({valueMissing:!0},this.localize("fieldRequired"));return}const textarea=this.textareaEl;textarea&&textarea.value!==this.value&&(textarea.value=this.value);const own=lengthViolations(this.value,this.effectiveLengthLimit(this.minLength),this.effectiveLengthLimit(this.maxLength)),tooShort=!!textarea?.validity.tooShort||own.tooShort,tooLong=!!textarea?.validity.tooLong||own.tooLong;if(!tooShort&&!tooLong){this[SET_ANCHORED_VALIDITY]({});return}this[SET_ANCHORED_VALIDITY]({tooShort,tooLong},textarea?.validationMessage||this.localize("valueInvalid"))}formResetCallback(){super.formResetCallback(),this.touched=!1}hasSlotted(name){return Array.from(this.children).some(el=>el.getAttribute("slot")===name)}resizeTextarea(){const ta=this.textareaEl;if(!ta)return;const cs=this.ownerDocument.defaultView?.getComputedStyle(ta)??ta.style,lineHeight=parseFloat(cs.lineHeight)||parseFloat(cs.fontSize)*1.2,paddingBlock=parseFloat(cs.paddingTop)+parseFloat(cs.paddingBottom),borderBlock=parseFloat(cs.borderTopWidth)+parseFloat(cs.borderBottomWidth),minRows=this.effectiveMinRows,maxRows=this.effectiveMaxRows,minHeight=lineHeight*minRows+paddingBlock+borderBlock,maxHeight=lineHeight*maxRows+paddingBlock+borderBlock;ta.style.height="auto";const contentHeight=ta.scrollHeight+borderBlock,next=Math.min(Math.max(contentHeight,minHeight),maxHeight);ta.style.height=`${next}px`,ta.style.overflowY=contentHeight>maxHeight?"auto":"hidden"}armTextareaResizeObserver(){const ta=this.textareaEl,ownerDocument=this.ownerDocument,ownerWindow=ownerDocument.defaultView;if(!ta||!this.isConnected||!ownerWindow?.ResizeObserver||this.textareaResizeObserver&&this.textareaResizeObserverDocument===ownerDocument&&this.textareaResizeObserverTarget===ta)return;this.resetTextareaResizeWork();const generation=this.textareaResizeGeneration;let lastWidth=ta.getBoundingClientRect().width;const observer=new ownerWindow.ResizeObserver(entries=>{if(this.textareaResizeObserver!==observer||this.textareaResizeObserverDocument!==ownerDocument||this.textareaResizeObserverTarget!==ta||this.textareaResizeGeneration!==generation||!this.isConnected||this.ownerDocument!==ownerDocument)return;const box=entries[0]?.contentBoxSize?.[0],width=box?box.inlineSize:entries[0]?.contentRect.width??lastWidth;if(Math.abs(width-lastWidth)<.5)return;lastWidth=width,this.textareaResizeRaf!==void 0&&this.textareaResizeRafOwner?.cancelAnimationFrame(this.textareaResizeRaf);const handle=ownerWindow.requestAnimationFrame(()=>{this.textareaResizeRaf!==handle||this.textareaResizeRafOwner!==ownerWindow||this.textareaResizeRafDocument!==ownerDocument||this.textareaResizeGeneration!==generation||!this.isConnected||this.ownerDocument!==ownerDocument||this.textareaResizeObserverTarget!==ta||(this.textareaResizeRaf=void 0,this.textareaResizeRafOwner=void 0,this.textareaResizeRafDocument=void 0,this.resizeTextarea())});this.textareaResizeRaf=handle,this.textareaResizeRafOwner=ownerWindow,this.textareaResizeRafDocument=ownerDocument});this.textareaResizeObserver=observer,this.textareaResizeObserverDocument=ownerDocument,this.textareaResizeObserverTarget=ta,observer.observe(ta)}resetTextareaResizeWork(){this.textareaResizeGeneration+=1,this.textareaResizeObserver?.disconnect(),this.textareaResizeObserver=void 0,this.textareaResizeObserverDocument=void 0,this.textareaResizeObserverTarget=void 0,this.textareaResizeRaf!==void 0&&this.textareaResizeRafOwner?.cancelAnimationFrame(this.textareaResizeRaf),this.textareaResizeRaf=void 0,this.textareaResizeRafOwner=void 0,this.textareaResizeRafDocument=void 0}submit(){this.submitDisabled||this.effectiveDisabled||this.status!=="idle"||this.emit("lr-submit",{value:this.value})}renderActionButton(){const busy=this.status!=="idle",showStop=busy&&this.stoppable;return html`
|
|
25
25
|
<button
|
|
26
26
|
part="action-button"
|
|
27
27
|
type="button"
|
|
@@ -74,4 +74,4 @@ var __decorate=function(decorators,target,key,desc){var c=arguments.length,r=c<3
|
|
|
74
74
|
</span>
|
|
75
75
|
</div>
|
|
76
76
|
</div>
|
|
77
|
-
`}}__decorate([property()],LyraChatComposer.prototype,"placeholder",void 0),__decorate([property({type:Number,attribute:"min-rows"})],LyraChatComposer.prototype,"minRows",void 0),__decorate([property({type:Number,attribute:"max-rows"})],LyraChatComposer.prototype,"maxRows",void 0),__decorate([property({reflect:!0})],LyraChatComposer.prototype,"status",
|
|
77
|
+
`}}__decorate([property()],LyraChatComposer.prototype,"placeholder",void 0),__decorate([property({type:Number,attribute:"min-rows"})],LyraChatComposer.prototype,"minRows",void 0),__decorate([property({type:Number,attribute:"max-rows"})],LyraChatComposer.prototype,"maxRows",void 0),__decorate([property({reflect:!0})],LyraChatComposer.prototype,"status",null),__decorate([property({reflect:!0})],LyraChatComposer.prototype,"frame",void 0),__decorate([property({type:Boolean,reflect:!0,attribute:"submit-on-enter",converter:trueDefaultBooleanConverter})],LyraChatComposer.prototype,"submitOnEnter",void 0),__decorate([property({type:Boolean,reflect:!0,attribute:"submit-disabled"})],LyraChatComposer.prototype,"submitDisabled",void 0),__decorate([property({type:Boolean,reflect:!0,converter:trueDefaultBooleanConverter})],LyraChatComposer.prototype,"stoppable",void 0),__decorate([property({type:Boolean,reflect:!0,attribute:"readonly"})],LyraChatComposer.prototype,"readOnly",void 0),__decorate([property({type:Number,attribute:"minlength"})],LyraChatComposer.prototype,"minLength",void 0),__decorate([property({type:Number,attribute:"maxlength"})],LyraChatComposer.prototype,"maxLength",void 0),__decorate([property({attribute:"aria-label"})],LyraChatComposer.prototype,"accessibleLabel",void 0),__decorate([property({converter:trueDefaultBooleanConverter})],LyraChatComposer.prototype,"spellcheck",void 0),__decorate([property()],LyraChatComposer.prototype,"autocapitalize",void 0),__decorate([property({converter:autocorrectConverter})],LyraChatComposer.prototype,"autocorrect",null),__decorate([property()],LyraChatComposer.prototype,"wrap",void 0),__decorate([property()],LyraChatComposer.prototype,"autocomplete",void 0),__decorate([property({attribute:"inputmode"})],LyraChatComposer.prototype,"inputMode",void 0),__decorate([property({attribute:"enterkeyhint"})],LyraChatComposer.prototype,"enterKeyHint",void 0),__decorate([state()],LyraChatComposer.prototype,"hasStartSlot",void 0),__decorate([state()],LyraChatComposer.prototype,"hasChipsSlot",void 0),__decorate([state()],LyraChatComposer.prototype,"hasEndSlot",void 0),__decorate([state()],LyraChatComposer.prototype,"touched",void 0),__decorate([query("textarea")],LyraChatComposer.prototype,"textareaEl",void 0);export{CHAT_COMPOSER_STATUSES,LyraChatComposer,normalizeChatComposerStatus};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{css}from"lit";const styles=css`:host{display:block}[part=base]{gap:var(--lr-space-xs);box-sizing:border-box;border:var(--lr-border-width-thin) solid var(--lr-color-border);border-radius:var(--lr-radius);background:var(--lr-color-surface);padding:var(--lr-space-s);transition:border-color var(--lr-transition-fast);flex-direction:column;display:flex}[part=base]:focus-within{border-color:var(--lr-color-brand)}:host([frame=plain]) [part=base]{background:0 0;border:0;border-radius:0;padding:0}:host([frame=plain]) [part=base]:focus-within{box-shadow:inset 0 calc(-1 * var(--lr-focus-ring-width)) 0 0 var(--lr-focus-ring-color)}:host(:disabled) [part=base]{opacity:var(--lr-opacity-disabled);cursor:not-allowed}[part=chips]{gap:var(--lr-space-xs);flex-wrap:wrap;display:flex}[part=chips][hidden]{display:none}[part=row]{align-items:flex-end;gap:var(--lr-space-s);display:flex}[part=start]{flex:none;align-items:center;padding-block-end:var(--lr-space-xs);display:flex}[part=start][hidden]{display:none}[part=textarea]{box-sizing:border-box;resize:none;min-inline-size:0;color:inherit;font:inherit;line-height:var(--lr-line-height-normal);padding-block:var(--lr-space-xs);background:0 0;border:none;outline:none;flex:auto;overflow
|
|
1
|
+
import{css}from"lit";const styles=css`:host{display:block}[part=base]{gap:var(--lr-space-xs);box-sizing:border-box;border:var(--lr-border-width-thin) solid var(--lr-color-border);border-radius:var(--lr-radius);background:var(--lr-color-surface);padding:var(--lr-space-s);transition:border-color var(--lr-transition-fast);flex-direction:column;display:flex}[part=base]:focus-within{border-color:var(--lr-color-brand)}:host([frame=plain]) [part=base]{background:0 0;border:0;border-radius:0;padding:0}:host([frame=plain]) [part=base]:focus-within{box-shadow:inset 0 calc(-1 * var(--lr-focus-ring-width)) 0 0 var(--lr-focus-ring-color)}:host(:disabled) [part=base]{opacity:var(--lr-opacity-disabled);cursor:not-allowed}[part=chips]{gap:var(--lr-space-xs);flex-wrap:wrap;display:flex}[part=chips][hidden]{display:none}[part=row]{align-items:flex-end;gap:var(--lr-space-s);display:flex}[part=start]{flex:none;align-items:center;padding-block-end:var(--lr-space-xs);display:flex}[part=start][hidden]{display:none}[part=textarea]{box-sizing:border-box;resize:none;min-inline-size:0;color:inherit;font:inherit;line-height:var(--lr-line-height-normal);padding-block:var(--lr-space-xs);background:0 0;border:none;outline:none;flex:auto;overflow:hidden}[part=textarea][wrap=off]{overflow-x:auto}[part=textarea]::placeholder{color:var(--lr-color-text-quiet)}[part=textarea]:disabled{cursor:not-allowed}[part=end]{align-items:center;gap:var(--lr-space-xs);flex:none;display:flex}[part=action-button]{box-sizing:border-box;min-inline-size:var(--lr-icon-button-size);min-block-size:var(--lr-icon-button-size);border-radius:var(--lr-radius);background:var(--lr-color-brand);color:var(--lr-color-on-brand);font-size:var(--lr-font-size-lg);line-height:var(--lr-line-height-none);cursor:pointer;transition:background-color var(--lr-transition-fast);border:none;flex:none;justify-content:center;align-items:center;display:inline-flex}:where([part=action-button]):hover:where(:not(:disabled)){background:color-mix(in oklab, var(--lr-color-brand), var(--lr-color-mix-partner) var(--lr-color-mix-hover))}:where([part=action-button]):active:where(:not(:disabled)){background:color-mix(in oklab, var(--lr-color-brand), var(--lr-color-mix-partner) var(--lr-color-mix-active))}[part=action-button]:focus-visible{outline:var(--lr-focus-ring-width) solid var(--lr-focus-ring-color);outline-offset:var(--lr-focus-ring-offset)}[part=action-button]:disabled{cursor:not-allowed;opacity:var(--lr-opacity-disabled)}[part=send-glyph],[part=stop-glyph]{display:inline-flex}:host(:dir(rtl)) [part=send-glyph]{transform:scaleX(-1)}:host([status=sending]) [part=action-button],:host([status=streaming]) [part=action-button]{background:var(--lr-chat-composer-busy-bg,var(--lr-color-text-quiet))}:host([status=sending]) :where([part=action-button]):hover:where(:not(:disabled)),:host([status=streaming]) :where([part=action-button]):hover:where(:not(:disabled)){background:color-mix(in oklab, var(--lr-chat-composer-busy-bg,var(--lr-color-text-quiet)), var(--lr-color-mix-partner) var(--lr-color-mix-hover))}:host([status=sending]) :where([part=action-button]):active:where(:not(:disabled)),:host([status=streaming]) :where([part=action-button]):active:where(:not(:disabled)){background:color-mix(in oklab, var(--lr-chat-composer-busy-bg,var(--lr-color-text-quiet)), var(--lr-color-mix-partner) var(--lr-color-mix-active))}@media (prefers-reduced-motion:reduce){[part=base],[part=action-button]{transition:none!important}}`;export{styles};
|
|
@@ -14,9 +14,10 @@ import{type TemplateResult,type PropertyValues}from'lit';import{LyraElement}from
|
|
|
14
14
|
* an arbitrary slotted message even means (plain text? the rendered
|
|
15
15
|
* markdown source? something else?) is exactly the kind of content
|
|
16
16
|
* interpretation this shell deliberately stays out of — slot a copy control
|
|
17
|
-
* into `actions` instead.
|
|
18
|
-
*
|
|
19
|
-
*
|
|
17
|
+
* into `actions` instead. Compose `<lr-copy-button>` with the intended source
|
|
18
|
+
* text, or emit `lr-copy` from a custom control only after its clipboard write
|
|
19
|
+
* fulfills, with frozen `detail: { ok: true, text }`. This matches the success
|
|
20
|
+
* contract used by copy controls across the conversation surface.
|
|
20
21
|
*
|
|
21
22
|
* Accessibility of `status`: the current status is always available as
|
|
22
23
|
* plain visible text (`[part="status-text"]`), never color alone. A
|
|
@@ -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,svg}from"lit";import{property,state,query}from"lit/decorators.js";import{LyraElement}from"../../../internal/lyra-element.js";import{normalizeLyraTimestamp}from"../timestamp.js";import{nextId}from"../../../internal/a11y.js";import{chevronIcon}from"../../../internal/icons.js";import{getDateTimeFormat}from"../../../internal/intl-cache.js";import{literalSetConverter}from"../../../internal/converters.js";import"../../utility/live-region/live-region.class.js";import{styles}from"./chat-message.styles.js";import{LYRA_DEFAULT_chatCompleteAnnounce,LYRA_DEFAULT_chatFailedAnnounce,LYRA_DEFAULT_chatFailedToSend,LYRA_DEFAULT_chatResponding,LYRA_DEFAULT_chatSending,LYRA_DEFAULT_collapse,LYRA_DEFAULT_collapseMessage,LYRA_DEFAULT_details,LYRA_DEFAULT_expandMessage,LYRA_DEFAULT_map,LYRA_DEFAULT_navigation,LYRA_DEFAULT_open,LYRA_DEFAULT_popover,LYRA_DEFAULT_promptStudioRoleAssistant,LYRA_DEFAULT_promptStudioRoleSystem,LYRA_DEFAULT_promptStudioRoleUser,LYRA_DEFAULT_retry,LYRA_DEFAULT_search,LYRA_DEFAULT_select}from"../../../internal/default-strings.generated.js";const ICON_VIEW_BOX="0 0 24 24",ICON_STROKE_WIDTH="1.75";function retryIcon(){return svg`
|
|
1
|
+
var __decorate=function(decorators,target,key,desc){var c=arguments.length,r=c<3?target:desc===null?desc=Object.getOwnPropertyDescriptor(target,key):desc,d;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")r=Reflect.decorate(decorators,target,key,desc);else for(var i=decorators.length-1;i>=0;i--)(d=decorators[i])&&(r=(c<3?d(r):c>3?d(target,key,r):d(target,key))||r);return c>3&&r&&Object.defineProperty(target,key,r),r};import{html,nothing,svg}from"lit";import{property,state,query}from"lit/decorators.js";import{LyraElement}from"../../../internal/lyra-element.js";import{normalizeLyraTimestamp}from"../timestamp.js";import{nextId}from"../../../internal/a11y.js";import{chevronIcon}from"../../../internal/icons.js";import{getDateTimeFormat}from"../../../internal/intl-cache.js";import{literalSetConverter}from"../../../internal/converters.js";import{activeElementIn}from"../../../internal/active-element.js";import"../../utility/live-region/live-region.class.js";import{styles}from"./chat-message.styles.js";import{LYRA_DEFAULT_chatCompleteAnnounce,LYRA_DEFAULT_chatFailedAnnounce,LYRA_DEFAULT_chatFailedToSend,LYRA_DEFAULT_chatResponding,LYRA_DEFAULT_chatSending,LYRA_DEFAULT_collapse,LYRA_DEFAULT_collapseMessage,LYRA_DEFAULT_details,LYRA_DEFAULT_expandMessage,LYRA_DEFAULT_map,LYRA_DEFAULT_navigation,LYRA_DEFAULT_open,LYRA_DEFAULT_popover,LYRA_DEFAULT_promptStudioRoleAssistant,LYRA_DEFAULT_promptStudioRoleSystem,LYRA_DEFAULT_promptStudioRoleUser,LYRA_DEFAULT_retry,LYRA_DEFAULT_search,LYRA_DEFAULT_select}from"../../../internal/default-strings.generated.js";const ICON_VIEW_BOX="0 0 24 24",ICON_STROKE_WIDTH="1.75";function retryIcon(){return svg`
|
|
2
2
|
<svg
|
|
3
3
|
width="1em"
|
|
4
4
|
height="1em"
|
|
@@ -11,7 +11,7 @@ var __decorate=function(decorators,target,key,desc){var c=arguments.length,r=c<3
|
|
|
11
11
|
aria-hidden="true"
|
|
12
12
|
focusable="false"
|
|
13
13
|
><polyline points="1 4 1 10 7 10"></polyline><path d="M3.51 15a9 9 0 1 0 2.13-9.36L1 10"></path></svg>
|
|
14
|
-
`}function defaultFormatTimestamp(date,locale){return getDateTimeFormat(locale,{hour:"numeric",minute:"2-digit"}).format(date)}const STATUS_TEXT_KEY={sending:"chatSending",streaming:"chatResponding",failed:"chatFailedToSend"},CHAT_MESSAGE_STATUS=literalSetConverter(["sending","sent","failed","streaming"],"sent");class LyraChatMessage extends LyraElement{constructor(){super(...arguments),this.messageRole="assistant",this.messageId="",this.collapsible=!1,this.collapsed=!1,this.attachmentsPosition="after",this.actionsPosition="inside",this.hasAvatarSlot=!1,this.hasBadgesSlot=!1,this.hasAttachmentsSlot=!1,this.hasActionsSlot=!1,this.hasFailureSlot=!1,this.bodyId=nextId("chat-message-body"),this._status="sent",this.previousStatus="sent",this.isMounting=!0,this.onAvatarSlotChange=e=>{this.hasAvatarSlot=e.target.assignedElements({flatten:!0}).length>0},this.onBadgesSlotChange=e=>{this.hasBadgesSlot=e.target.assignedElements({flatten:!0}).length>0},this.onAttachmentsSlotChange=e=>{this.hasAttachmentsSlot=e.target.assignedElements({flatten:!0}).length>0},this.onActionsSlotChange=e=>{this.hasActionsSlot=e.target.assignedElements({flatten:!0}).length>0},this.onFailureSlotChange=e=>{this.hasFailureSlot=e.target.assignedElements({flatten:!0}).length>0},this.toggleCollapsed=()=>{const detail={collapsed:!this.collapsed};this.emit("lr-toggle-request",detail,{cancelable:!0}).defaultPrevented||(this.collapsed=detail.collapsed,this.emit("lr-toggle",detail))},this.onRetryClick=()=>{this.emit("lr-message-retry",{messageId:this.messageId||void 0}),this.status!=="failed"&&this.bubbleEl?.focus()}}static{this.defaultStrings={...super.defaultStrings,chatCompleteAnnounce:LYRA_DEFAULT_chatCompleteAnnounce,chatFailedAnnounce:LYRA_DEFAULT_chatFailedAnnounce,chatFailedToSend:LYRA_DEFAULT_chatFailedToSend,chatResponding:LYRA_DEFAULT_chatResponding,chatSending:LYRA_DEFAULT_chatSending,collapse:LYRA_DEFAULT_collapse,collapseMessage:LYRA_DEFAULT_collapseMessage,details:LYRA_DEFAULT_details,expandMessage:LYRA_DEFAULT_expandMessage,map:LYRA_DEFAULT_map,navigation:LYRA_DEFAULT_navigation,open:LYRA_DEFAULT_open,popover:LYRA_DEFAULT_popover,promptStudioRoleAssistant:LYRA_DEFAULT_promptStudioRoleAssistant,promptStudioRoleSystem:LYRA_DEFAULT_promptStudioRoleSystem,promptStudioRoleUser:LYRA_DEFAULT_promptStudioRoleUser,retry:LYRA_DEFAULT_retry,search:LYRA_DEFAULT_search,select:LYRA_DEFAULT_select}}static{this.styles=[LyraElement.styles,styles]}static{this.properties={status:{reflect:!0,noAccessor:!0,converter:CHAT_MESSAGE_STATUS}}}get status(){return this._status}set status(value){const normalized=CHAT_MESSAGE_STATUS.normalizeReflected(this,"status",value),old=this._status;normalized!==old&&(this.previousStatus=old,this._status=normalized,this.requestUpdate("status",old))}willUpdate(changed){super.willUpdate(changed),this.hasUpdated?changed.has("status")&&(this.status==="failed"?this.hasFailureSlot=this.hasSlotted("failure"):this.previousStatus==="failed"&&this.hasFailureSlot&&this.isFocusWithinFailureSlot()&&this.bubbleEl?.focus()):(this.hasAvatarSlot=this.hasSlotted("avatar"),this.hasBadgesSlot=this.hasSlotted("badges"),this.hasAttachmentsSlot=this.hasSlotted("attachments"),this.hasActionsSlot=this.hasSlotted("actions"),this.status==="failed"&&(this.hasFailureSlot=this.hasSlotted("failure")))}updated(changed){super.updated(changed);const wasMounting=this.isMounting;this.isMounting=!1,!wasMounting&&changed.has("status")&&this.announceStatusChange(this.previousStatus)}connectedCallback(){super.connectedCallback(),this.statusAtDisconnect!==void 0&&(this.isMounting=this.status!==this.statusAtDisconnect&&this.isUpdatePending,this.statusAtDisconnect=void 0)}disconnectedCallback(){this.statusAtDisconnect=this.status,this.isMounting=!0,super.disconnectedCallback()}hasSlotted(name){return Array.from(this.children).some(el=>el.getAttribute("slot")===name)}isFocusWithinFailureSlot(){const active=this.ownerDocument
|
|
14
|
+
`}function defaultFormatTimestamp(date,locale){return getDateTimeFormat(locale,{hour:"numeric",minute:"2-digit"}).format(date)}const STATUS_TEXT_KEY={sending:"chatSending",streaming:"chatResponding",failed:"chatFailedToSend"},CHAT_MESSAGE_STATUS=literalSetConverter(["sending","sent","failed","streaming"],"sent");class LyraChatMessage extends LyraElement{constructor(){super(...arguments),this.messageRole="assistant",this.messageId="",this.collapsible=!1,this.collapsed=!1,this.attachmentsPosition="after",this.actionsPosition="inside",this.hasAvatarSlot=!1,this.hasBadgesSlot=!1,this.hasAttachmentsSlot=!1,this.hasActionsSlot=!1,this.hasFailureSlot=!1,this.bodyId=nextId("chat-message-body"),this._status="sent",this.previousStatus="sent",this.isMounting=!0,this.onAvatarSlotChange=e=>{this.hasAvatarSlot=e.target.assignedElements({flatten:!0}).length>0},this.onBadgesSlotChange=e=>{this.hasBadgesSlot=e.target.assignedElements({flatten:!0}).length>0},this.onAttachmentsSlotChange=e=>{this.hasAttachmentsSlot=e.target.assignedElements({flatten:!0}).length>0},this.onActionsSlotChange=e=>{this.hasActionsSlot=e.target.assignedElements({flatten:!0}).length>0},this.onFailureSlotChange=e=>{this.hasFailureSlot=e.target.assignedElements({flatten:!0}).length>0},this.toggleCollapsed=()=>{const detail={collapsed:!this.collapsed};this.emit("lr-toggle-request",detail,{cancelable:!0}).defaultPrevented||(this.collapsed=detail.collapsed,this.emit("lr-toggle",detail))},this.onRetryClick=()=>{this.emit("lr-message-retry",{messageId:this.messageId||void 0}),this.status!=="failed"&&this.bubbleEl?.focus()}}static{this.defaultStrings={...super.defaultStrings,chatCompleteAnnounce:LYRA_DEFAULT_chatCompleteAnnounce,chatFailedAnnounce:LYRA_DEFAULT_chatFailedAnnounce,chatFailedToSend:LYRA_DEFAULT_chatFailedToSend,chatResponding:LYRA_DEFAULT_chatResponding,chatSending:LYRA_DEFAULT_chatSending,collapse:LYRA_DEFAULT_collapse,collapseMessage:LYRA_DEFAULT_collapseMessage,details:LYRA_DEFAULT_details,expandMessage:LYRA_DEFAULT_expandMessage,map:LYRA_DEFAULT_map,navigation:LYRA_DEFAULT_navigation,open:LYRA_DEFAULT_open,popover:LYRA_DEFAULT_popover,promptStudioRoleAssistant:LYRA_DEFAULT_promptStudioRoleAssistant,promptStudioRoleSystem:LYRA_DEFAULT_promptStudioRoleSystem,promptStudioRoleUser:LYRA_DEFAULT_promptStudioRoleUser,retry:LYRA_DEFAULT_retry,search:LYRA_DEFAULT_search,select:LYRA_DEFAULT_select}}static{this.styles=[LyraElement.styles,styles]}static{this.properties={status:{reflect:!0,noAccessor:!0,converter:CHAT_MESSAGE_STATUS}}}get status(){return this._status}set status(value){const normalized=CHAT_MESSAGE_STATUS.normalizeReflected(this,"status",value),old=this._status;normalized!==old&&(this.previousStatus=old,this._status=normalized,this.requestUpdate("status",old))}willUpdate(changed){super.willUpdate(changed),this.hasUpdated?changed.has("status")&&(this.status==="failed"?this.hasFailureSlot=this.hasSlotted("failure"):this.previousStatus==="failed"&&this.hasFailureSlot&&this.isFocusWithinFailureSlot()&&this.bubbleEl?.focus()):(this.hasAvatarSlot=this.hasSlotted("avatar"),this.hasBadgesSlot=this.hasSlotted("badges"),this.hasAttachmentsSlot=this.hasSlotted("attachments"),this.hasActionsSlot=this.hasSlotted("actions"),this.status==="failed"&&(this.hasFailureSlot=this.hasSlotted("failure")))}updated(changed){super.updated(changed);const wasMounting=this.isMounting;this.isMounting=!1,!wasMounting&&changed.has("status")&&this.announceStatusChange(this.previousStatus)}connectedCallback(){super.connectedCallback(),this.statusAtDisconnect!==void 0&&(this.isMounting=this.status!==this.statusAtDisconnect&&this.isUpdatePending,this.statusAtDisconnect=void 0)}disconnectedCallback(){this.statusAtDisconnect=this.status,this.isMounting=!0,super.disconnectedCallback()}hasSlotted(name){return Array.from(this.children).some(el=>el.getAttribute("slot")===name)}isFocusWithinFailureSlot(){const active=activeElementIn(this.ownerDocument);try{return!active||active.nodeType!==Node.ELEMENT_NODE?!1:Array.from(this.children).some(el=>el.getAttribute("slot")==="failure"&&el.contains(active))}catch{return!1}}get normalizedTimestamp(){return normalizeLyraTimestamp(this.timestamp)}get statusText(){return this.status==="sent"?void 0:this.localize(STATUS_TEXT_KEY[this.status])}announceStatusChange(previous){if(previous===this.status)return;const region=this.liveRegion;if(region)if(this.status==="failed"){if(this.hasFailureSlot)return;region.mode="assertive",region.announce(this.localize("chatFailedAnnounce"),{force:!0})}else previous==="streaming"&&this.status==="sent"&&(region.mode="polite",region.announce(this.localize("chatCompleteAnnounce"),{force:!0}))}render(){const ts=this.normalizedTimestamp,formatter=this.formatTimestamp??(date=>defaultFormatTimestamp(date,this.effectiveLocale)),suppressBuiltInFailedUi=this.status==="failed"&&this.hasFailureSlot,statusText=suppressBuiltInFailedUi?void 0:this.statusText,showHeader=this.hasAvatarSlot||this.hasBadgesSlot||this.collapsible,actionsOutside=this.actionsPosition==="outside",showFooter=!!statusText||!!ts||!actionsOutside&&this.hasActionsSlot,authorLabel=this.localize(this.messageRole==="user"?"promptStudioRoleUser":this.messageRole==="system"?"promptStudioRoleSystem":"promptStudioRoleAssistant"),articleLabel=this.hasAttribute("aria-label")?this.getAttribute("aria-label")??"":authorLabel,actionsBlock=html`<span part="actions" ?hidden=${!this.hasActionsSlot}
|
|
15
15
|
><slot name="actions" @slotchange=${this.onActionsSlotChange}></slot
|
|
16
16
|
></span>`,attachmentsBlock=html`<div part="attachments" ?hidden=${!this.hasAttachmentsSlot}>
|
|
17
17
|
<slot name="attachments" @slotchange=${this.onAttachmentsSlotChange}></slot>
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{css}from"lit";const styles=css`:host{font-size:var(--lr-font-size-md-sm);line-height:var(--lr-line-height-normal);display:block}[part=bubble]{gap:var(--lr-space-xs);max-inline-size:var(--lr-chat-message-max-width,80%);padding:var(--lr-chat-message-bubble-padding,var(--lr-space-m));border:var(--lr-border-width-thin) solid var(--lr-color-border);border-radius:var(--lr-chat-message-bubble-radius,var(--lr-radius));background:var(--lr-chat-message-bubble-bg,var(--lr-color-surface));color:var(--lr-chat-message-bubble-color,var(--lr-color-text));overflow-wrap:anywhere;flex-direction:column;display:flex}:host([message-role=user]) [part=bubble]{background:var(--lr-chat-message-user-bubble-bg,var(--lr-color-brand-quiet));color:var(--lr-chat-message-user-bubble-color,var(--lr-color-text));border-color:#0000;margin-inline-start:auto}:host([message-role=assistant]) [part=bubble]{margin-inline-end:auto}:host([message-role=system]) [part=bubble]{color:var(--lr-chat-message-system-color,var(--lr-color-text-quiet));border-style:dashed;margin-inline-end:auto;font-style:italic}:host([status=failed]) [part=bubble]{border-color:var(--lr-chat-message-failed-border-color,var(--lr-color-danger));background:var(--lr-chat-message-failed-bg,var(--lr-color-danger-quiet))}:host([status=streaming]) [part=bubble]{border-color:var(--lr-chat-message-streaming-border-color,var(--lr-color-brand))}[part=header]{align-items:center;gap:var(--lr-space-xs);display:flex}[part=header][hidden],[part=avatar][hidden],[part=badges][hidden],[part=attachments][hidden],[part=footer][hidden],[part=actions][hidden],[part=body][hidden]{display:none}[part=avatar]{flex:none;display:inline-flex}[part=badges]{align-items:center;gap:var(--lr-space-xs);flex-wrap:wrap;flex:auto;min-inline-size:0;display:flex}[part=collapse-button]{min-inline-size:var(--lr-icon-button-size);min-block-size:var(--lr-icon-button-size);color:var(--lr-color-text-quiet);border-radius:var(--lr-radius);cursor:pointer;background:0 0;border:none;flex:none;justify-content:center;align-items:center;margin-inline-start:auto;display:inline-flex}[part=collapse-button]:hover{background:var(--lr-color-brand-quiet);color:var(--lr-color-brand)}[part=collapse-button]:active{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=collapse-button]:focus-visible,[part=retry-button]:focus-visible{outline:var(--lr-focus-ring-width) solid var(--lr-focus-ring-color);outline-offset:var(--lr-focus-ring-offset)}[part=collapse-button] .chevron{transition:transform var(--lr-transition-fast);display:inline-flex}:host(:not([collapsed])) [part=collapse-button] .chevron{transform:rotate(90deg)}:host([collapsed]:dir(rtl)) [part=collapse-button] .chevron{transform:scaleX(-1)}[part=attachments]{gap:var(--lr-space-xs);flex-wrap:wrap;display:flex}[part=failure]{display:contents}[part=footer]{align-items:center;gap:var(--lr-space-xs);font-size:var(--lr-font-size-xs);color:var(--lr-chat-message-footer-color,var(--lr-color-text-quiet));flex-wrap:wrap;display:flex}[part=actions]{align-items:center;gap:var(--lr-space-xs);display:flex}:host([message-role=user]) [part=actions]{margin-inline-start:auto}:host([message-role=assistant]) [part=actions],:host([message-role=system]) [part=actions]{margin-inline-end:auto}:host([actions-position=outside]) [part=actions]{margin-block-start:var(--lr-space-2xs)}:host([actions-position=outside][message-role=user]) [part=actions]{justify-content:flex-end}:host([actions-position=outside][message-role=assistant]) [part=actions],:host([actions-position=outside][message-role=system]) [part=actions]{justify-content:flex-start}[part=timestamp]{white-space:nowrap}:host([message-role=user]) [part=footer]{color:var(--lr-chat-message-user-footer-color,var(--lr-color-text))}:host([status=failed]) [part=footer]{color:var(--lr-chat-message-failed-footer-color,var(--lr-color-danger))}[part=status-indicator]{inline-size:var(--lr-size-0-5rem);block-size:var(--lr-size-0-5rem);background:var(--lr-chat-message-indicator-color,var(--lr-color-text-quiet));border-radius:50%;flex:none}:host([status=streaming]) [part=status-indicator]{background:var(--lr-chat-message-streaming-indicator-color,var(--lr-color-brand));animation:lr-chat-message-pulse var(--lr-transition-ambient) infinite}:host([status=failed]) [part=status-indicator]{background:var(--lr-chat-message-failed-indicator-color,var(--lr-color-danger))}[part=status-text]{white-space:nowrap}:host([status=failed]) [part=status-text]{color:var(--lr-chat-message-failed-status-color,var(--lr-color-danger));font-weight:var(--lr-font-weight-semibold)}@keyframes lr-chat-message-pulse{0%,to{opacity:1}50%{opacity:.35}}[part=retry-button]{align-items:center;gap:var(--lr-space-xs);padding:var(--lr-size-0-125rem) var(--lr-space-xs);border:var(--lr-border-width-thin) solid var(--lr-color-danger);border-radius:var(--lr-radius);color:var(--lr-color-danger);font:inherit;font-size:var(--lr-font-size-xs);cursor:pointer;background:0 0;flex:none;display:inline-flex}[part=retry-button]:hover{background:var(--lr-color-danger-quiet)}[part=retry-button]:active{background:color-mix(in oklab, var(--lr-color-danger-quiet), var(--lr-color-mix-partner) var(--lr-color-mix-active))}[part=retry-button] svg{inline-size:var(--lr-size-0-875em);block-size:var(--lr-size-0-875em)}@media (prefers-reduced-motion:reduce){[part=status-indicator]{opacity:1;animation:none!important}[part=collapse-button] .chevron{transition:none!important}}`;export{styles};
|
|
1
|
+
import{css}from"lit";const styles=css`:host{font-size:var(--lr-font-size-md-sm);line-height:var(--lr-line-height-normal);display:block}[part=bubble]{gap:var(--lr-space-xs);max-inline-size:var(--lr-chat-message-max-width,80%);padding:var(--lr-chat-message-bubble-padding,var(--lr-space-m));border:var(--lr-border-width-thin) solid var(--lr-color-border);border-radius:var(--lr-chat-message-bubble-radius,var(--lr-radius));background:var(--lr-chat-message-bubble-bg,var(--lr-color-surface));color:var(--lr-chat-message-bubble-color,var(--lr-color-text));overflow-wrap:anywhere;flex-direction:column;display:flex}:host([message-role=user]) [part=bubble]{background:var(--lr-chat-message-user-bubble-bg,var(--lr-color-brand-quiet));color:var(--lr-chat-message-user-bubble-color,var(--lr-color-text));border-color:#0000;margin-inline-start:auto}:host([message-role=assistant]) [part=bubble]{margin-inline-end:auto}:host([message-role=system]) [part=bubble]{color:var(--lr-chat-message-system-color,var(--lr-color-text-quiet));border-style:dashed;margin-inline-end:auto;font-style:italic}:host([status=failed]) [part=bubble]{border-color:var(--lr-chat-message-failed-border-color,var(--lr-color-danger));background:var(--lr-chat-message-failed-bg,var(--lr-color-danger-quiet))}:host([status=streaming]) [part=bubble]{border-color:var(--lr-chat-message-streaming-border-color,var(--lr-color-brand))}[part=header]{align-items:center;gap:var(--lr-space-xs);display:flex}[part=header][hidden],[part=avatar][hidden],[part=badges][hidden],[part=attachments][hidden],[part=footer][hidden],[part=actions][hidden],[part=body][hidden]{display:none}[part=avatar]{flex:none;display:inline-flex}[part=badges]{align-items:center;gap:var(--lr-space-xs);flex-wrap:wrap;flex:auto;min-inline-size:0;display:flex}[part=collapse-button]{font:inherit;min-inline-size:var(--lr-icon-button-size);min-block-size:var(--lr-icon-button-size);color:var(--lr-color-text-quiet);border-radius:var(--lr-radius);cursor:pointer;background:0 0;border:none;flex:none;justify-content:center;align-items:center;margin-inline-start:auto;display:inline-flex}[part=collapse-button]:hover{background:var(--lr-color-brand-quiet);color:var(--lr-color-brand)}[part=collapse-button]:active{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=collapse-button]:focus-visible,[part=retry-button]:focus-visible{outline:var(--lr-focus-ring-width) solid var(--lr-focus-ring-color);outline-offset:var(--lr-focus-ring-offset)}[part=collapse-button] .chevron{transition:transform var(--lr-transition-fast);display:inline-flex}:host(:not([collapsed])) [part=collapse-button] .chevron{transform:rotate(90deg)}:host([collapsed]:dir(rtl)) [part=collapse-button] .chevron{transform:scaleX(-1)}[part=attachments]{gap:var(--lr-space-xs);flex-wrap:wrap;display:flex}[part=failure]{display:contents}[part=footer]{align-items:center;gap:var(--lr-space-xs);font-size:var(--lr-font-size-xs);color:var(--lr-chat-message-footer-color,var(--lr-color-text-quiet));flex-wrap:wrap;display:flex}[part=actions]{align-items:center;gap:var(--lr-space-xs);display:flex}:host([message-role=user]) [part=actions]{margin-inline-start:auto}:host([message-role=assistant]) [part=actions],:host([message-role=system]) [part=actions]{margin-inline-end:auto}:host([actions-position=outside]) [part=actions]{margin-block-start:var(--lr-space-2xs)}:host([actions-position=outside][message-role=user]) [part=actions]{justify-content:flex-end}:host([actions-position=outside][message-role=assistant]) [part=actions],:host([actions-position=outside][message-role=system]) [part=actions]{justify-content:flex-start}[part=timestamp]{white-space:nowrap}:host([message-role=user]) [part=footer]{color:var(--lr-chat-message-user-footer-color,var(--lr-color-text))}:host([status=failed]) [part=footer]{color:var(--lr-chat-message-failed-footer-color,var(--lr-color-danger))}[part=status-indicator]{inline-size:var(--lr-size-0-5rem);block-size:var(--lr-size-0-5rem);background:var(--lr-chat-message-indicator-color,var(--lr-color-text-quiet));border-radius:50%;flex:none}:host([status=streaming]) [part=status-indicator]{background:var(--lr-chat-message-streaming-indicator-color,var(--lr-color-brand));animation:lr-chat-message-pulse var(--lr-transition-ambient) infinite}:host([status=failed]) [part=status-indicator]{background:var(--lr-chat-message-failed-indicator-color,var(--lr-color-danger))}[part=status-text]{white-space:nowrap}:host([status=failed]) [part=status-text]{color:var(--lr-chat-message-failed-status-color,var(--lr-color-danger));font-weight:var(--lr-font-weight-semibold)}@keyframes lr-chat-message-pulse{0%,to{opacity:1}50%{opacity:.35}}[part=retry-button]{align-items:center;gap:var(--lr-space-xs);padding:var(--lr-size-0-125rem) var(--lr-space-xs);border:var(--lr-border-width-thin) solid var(--lr-color-danger);border-radius:var(--lr-radius);color:var(--lr-color-danger);font:inherit;font-size:var(--lr-font-size-xs);cursor:pointer;background:0 0;flex:none;display:inline-flex}[part=retry-button]:hover{background:var(--lr-color-danger-quiet)}[part=retry-button]:active{background:color-mix(in oklab, var(--lr-color-danger-quiet), var(--lr-color-mix-partner) var(--lr-color-mix-active))}[part=retry-button] svg{inline-size:var(--lr-size-0-875em);block-size:var(--lr-size-0-875em)}@media (prefers-reduced-motion:reduce){[part=status-indicator]{opacity:1;animation:none!important}[part=collapse-button] .chevron{transition:none!important}}`;export{styles};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{css}from"lit";const styles=css`:host{contain-intrinsic-inline-size:var(--lr-size-20rem);flex-direction:column;block-size:100%;min-block-size:0;display:flex;position:relative;container-type:inline-size}[part=base]{flex-direction:column;flex:auto;min-block-size:0;display:flex;position:relative}[part=scroll]{overflow-anchor:none;min-block-size:0;padding:var(--lr-space-m);flex:auto;overflow:hidden auto}[part=base][data-virtual] [part=scroll]{block-size:auto;padding:0;overflow:visible}[part=content]{min-block-size:100%;position:relative}[part=base][data-virtual] [part=content]{block-size:100%;min-block-size:0}[part=base][data-virtual] ::slotted(lr-virtual-list){--lr-virtual-list-height:100%;block-size:100%}[part=unread-divider]{align-items:center;gap:var(--lr-space-s);color:var(--lr-color-text-quiet);font-size:var(--lr-font-size-xs);text-align:center;pointer-events:none;display:flex;position:absolute;inset-inline:0;transform:translateY(-50%)}[part=unread-divider]:before,[part=unread-divider]:after{content:"";block-size:var(--lr-border-width-thin);background:var(--lr-color-border);flex:auto}[part=jump-pill]{max-inline-size:calc(100% - 2 * var(--lr-space-m));padding-inline:var(--lr-space-m);padding-block:var(--lr-space-xs);border:var(--lr-border-width-thin) solid var(--lr-color-border);border-radius:var(--lr-radius-pill);background:var(--lr-color-surface);color:var(--lr-color-text);box-shadow:var(--lr-shadow-m);cursor:pointer;white-space:nowrap;text-overflow:ellipsis;transition:opacity var(--lr-transition-fast);position:absolute;inset-block-end:var(--lr-space-m);inset-inline-start:50%;overflow:hidden;transform:translate(-50%)}:host(:dir(rtl)) [part=jump-pill]{transform:translate(50%)}@media (prefers-reduced-motion:reduce){[part=jump-pill]{transition:none}}[part=jump-pill]:focus-visible{outline:var(--lr-focus-ring-width) solid var(--lr-focus-ring-color);outline-offset:var(--lr-focus-ring-offset)}[part=jump-pill]:hover{background:var(--lr-color-brand-quiet)}[part=jump-pill]:active{background:color-mix(in oklab, var(--lr-color-brand-quiet), var(--lr-color-mix-partner) var(--lr-color-mix-active))}@container (inline-size<=20rem){[part=jump-pill]{max-inline-size:calc(100% - 2 * var(--lr-space-s))}}`;export{styles};
|
|
1
|
+
import{css}from"lit";const styles=css`:host{contain-intrinsic-inline-size:var(--lr-size-20rem);flex-direction:column;block-size:100%;min-block-size:0;display:flex;position:relative;container-type:inline-size}[part=base]{flex-direction:column;flex:auto;min-block-size:0;display:flex;position:relative}[part=scroll]{overflow-anchor:none;min-block-size:0;padding:var(--lr-space-m);flex:auto;overflow:hidden auto}[part=base][data-virtual] [part=scroll]{block-size:auto;padding:0;overflow:visible}[part=content]{min-block-size:100%;position:relative}[part=base][data-virtual] [part=content]{block-size:100%;min-block-size:0}[part=base][data-virtual] ::slotted(lr-virtual-list){--lr-virtual-list-height:100%;block-size:100%}[part=unread-divider]{align-items:center;gap:var(--lr-space-s);color:var(--lr-color-text-quiet);font-size:var(--lr-font-size-xs);text-align:center;pointer-events:none;display:flex;position:absolute;inset-inline:0;transform:translateY(-50%)}[part=unread-divider]:before,[part=unread-divider]:after{content:"";block-size:var(--lr-border-width-thin);background:var(--lr-color-border);flex:auto}[part=jump-pill]{font:inherit;max-inline-size:calc(100% - 2 * var(--lr-space-m));padding-inline:var(--lr-space-m);padding-block:var(--lr-space-xs);border:var(--lr-border-width-thin) solid var(--lr-color-border);border-radius:var(--lr-radius-pill);background:var(--lr-color-surface);color:var(--lr-color-text);box-shadow:var(--lr-shadow-m);cursor:pointer;white-space:nowrap;text-overflow:ellipsis;transition:opacity var(--lr-transition-fast);position:absolute;inset-block-end:var(--lr-space-m);inset-inline-start:50%;overflow:hidden;transform:translate(-50%)}:host(:dir(rtl)) [part=jump-pill]{transform:translate(50%)}@media (prefers-reduced-motion:reduce){[part=jump-pill]{transition:none}}[part=jump-pill]:focus-visible{outline:var(--lr-focus-ring-width) solid var(--lr-focus-ring-color);outline-offset:var(--lr-focus-ring-offset)}[part=jump-pill]:hover{background:var(--lr-color-brand-quiet)}[part=jump-pill]:active{background:color-mix(in oklab, var(--lr-color-brand-quiet), var(--lr-color-mix-partner) var(--lr-color-mix-active))}@container (inline-size<=20rem){[part=jump-pill]{max-inline-size:calc(100% - 2 * var(--lr-space-s))}}`;export{styles};
|
|
@@ -90,7 +90,7 @@ export declare class LyraCodeBlockCore extends LyraElement<LyraCodeBlockCoreEven
|
|
|
90
90
|
* in-place mutation of a caller's grammar object can never silently change what this instance
|
|
91
91
|
* has already handed to `loadShikiHighlighterCore()`. */
|
|
92
92
|
protected static readonly ownedCollectionProperties:readonly string[];static styles:import("lit").CSSResultGroup[];
|
|
93
|
-
/** The raw source text. */
|
|
93
|
+
/** The raw source text. Removing the attribute renders an empty code block. */
|
|
94
94
|
code:string;
|
|
95
95
|
/** A shiki-recognized language id or alias (e.g. `"javascript"`,
|
|
96
96
|
* `"python"`, `"json"`). When unset, or when it isn't a key in
|
|
@@ -113,10 +113,11 @@ copyable:boolean;
|
|
|
113
113
|
/** A CSS length (e.g. `"20rem"`); once set, the code scrolls internally
|
|
114
114
|
* past this height instead of growing the page. */
|
|
115
115
|
maxHeight:string;
|
|
116
|
-
/** Whether to display one-based line numbers beside the code.
|
|
116
|
+
/** Whether to display one-based line numbers beside the code. Highlighted gutters
|
|
117
|
+
* follow live locale and line-label string changes. */
|
|
117
118
|
lineNumbers:boolean;
|
|
118
119
|
/** Comma-separated 1-based inclusive line ranges (e.g. `"3-5,7"`) to visually emphasize.
|
|
119
|
-
* Declarative sugar over `highlights` — merges with, and renders identically to, any
|
|
120
|
+
* Removing the attribute clears these ranges. Declarative sugar over `highlights` — merges with, and renders identically to, any
|
|
120
121
|
* `line-range` entries in `highlights`. */
|
|
121
122
|
highlightLines:string;
|
|
122
123
|
/** Turns the (`line-numbers`-gated) gutter into a roving-tabindex group of buttons emitting
|
|
@@ -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"lit";import{property,state}from"lit/decorators.js";import{LyraElement}from"../../../internal/lyra-element.js";import{nextId}from"../../../internal/a11y.js";import{getNumberFormat}from"../../../internal/intl-cache.js";import{ThemeWatcher}from"../../../internal/theme-watcher.js";import{snapshotLyraHighlights}from"../../../internal/highlight-collection.js";import{loadShikiHighlighterCore,normalizeShikiLanguage}from"./shiki-types.js";import{styles}from"./code-block.styles.js";import{CodeBlockInteractionController,applyCodeBlockAriaBusy,clampCodeBlockFocusedLine,codeBlockActiveHighlightLineSet,codeBlockLineHasFocus,codeBlockLineCount,codeBlockLineHighlightSet,codeBlockNeedsHighlightResync,codeBlockPreSuppliedGrammar,codeBlockShowsSkeleton,renderCodeBlockPlainCode,renderCodeBlockShell,restoreCodeBlockLineFocus,scrollCodeBlockToAnchor,tokenizeCodeBlock}from"./code-block-shared.js";import"../../overlays/skeleton/skeleton.class.js";import{presenceTrueDefaultBooleanConverter as trueDefaultBooleanConverter}from"../../../internal/converters.js";import{LYRA_DEFAULT_codeBlockLineLabel,LYRA_DEFAULT_codeRegion,LYRA_DEFAULT_codeRegionWithLanguage,LYRA_DEFAULT_collapseCode,LYRA_DEFAULT_copied,LYRA_DEFAULT_copiedToClipboard,LYRA_DEFAULT_copy,LYRA_DEFAULT_copyCode,LYRA_DEFAULT_copyFailed,LYRA_DEFAULT_expandCode}from"../../../internal/default-strings.generated.js";class LyraCodeBlockCore extends LyraElement{static{this.defaultStrings={...super.defaultStrings,codeBlockLineLabel:LYRA_DEFAULT_codeBlockLineLabel,codeRegion:LYRA_DEFAULT_codeRegion,codeRegionWithLanguage:LYRA_DEFAULT_codeRegionWithLanguage,collapseCode:LYRA_DEFAULT_collapseCode,copied:LYRA_DEFAULT_copied,copiedToClipboard:LYRA_DEFAULT_copiedToClipboard,copy:LYRA_DEFAULT_copy,copyCode:LYRA_DEFAULT_copyCode,copyFailed:LYRA_DEFAULT_copyFailed,expandCode:LYRA_DEFAULT_expandCode}}static{this.immutableEventDetails=Object.freeze(["lr-text-select"])}static{this.ownedCollectionProperties=Object.freeze(["languages"])}static{this.styles=[LyraElement.styles,styles]}get highlights(){return this._highlights}set highlights(value){const previous=this._highlights;this._highlights=snapshotLyraHighlights(value),this.requestUpdate("highlights",previous)}constructor(){super(),this.code="",this.language="",this.filename="",this.accessibleLabel=null,this.collapsible=!1,this.collapsed=!1,this.copyable=!0,this.maxHeight="",this.lineNumbers=!1,this.highlightLines="",this.activatableLines=!1,this._highlights=snapshotLyraHighlights([]),this.activeHighlightId=null,this.anchorKinds=["line-range"],this.focusedLine=1,this.restoreFocusedLineAfterUpdate=!1,this.languages={},this.highlightedHtml=null,this.shikiReady=!1,this.justCopied=!1,this.copyFailed=!1,this.isDarkTheme=!1,this.interactions=new CodeBlockInteractionController({host:this,setFocusedLine:line=>{this.focusedLine=line},setJustCopied:value=>{this.justCopied=value},setCopyFailed:value=>{this.copyFailed=value},setDarkTheme:value=>{this.isDarkTheme=value},emitLineActivate:line=>this.emit("lr-line-activate",{line}),emitCopy:outcome=>this.emit("lr-copy",outcome),emitError:()=>this.emit("lr-error",null),emitCopyError:outcome=>this.emit("lr-copy-error",outcome),requestToggle:collapsed=>!this.emit("lr-toggle-request",{collapsed},{cancelable:!0}).defaultPrevented,emitToggle:collapsed=>this.emit("lr-toggle",{collapsed}),emitTextSelect:selection=>this.emit("lr-text-select",selection)}),this.highlightToken=0,this.highlighterGeneration=0,this.bodyId=nextId("code-block-body"),new ThemeWatcher(this,()=>this.refreshTheme())}connectedCallback(){super.connectedCallback(),this.refreshTheme();const languages=this.languages,generation=this.activateLanguages(languages);Object.keys(languages).length!==0&&loadShikiHighlighterCore(languages).then(()=>{!this.isConnected||generation!==this.highlighterGeneration||languages!==this.languages||(this.shikiReady=!0,this.syncHighlight())})}disconnectedCallback(){super.disconnectedCallback(),this.interactions.disconnect(),this.activeLanguages=void 0,this.highlighterGeneration+=1,this.highlightToken+=1,this.shikiReady=!1,this.highlightedHtml=null}adoptedCallback(){super.adoptedCallback(),this.interactions.disconnect()}preSuppliedGrammar(){return codeBlockPreSuppliedGrammar(this.languages,this.language)}lineHighlightSet(){return codeBlockLineHighlightSet(this.highlightLines,this.highlights,this.lineCount())}activeHighlightLineSet(){return codeBlockActiveHighlightLineSet(this.highlights,this.activeHighlightId,this.lineCount())}lineCount(){return codeBlockLineCount(this.code)}async scrollToAnchor(target){return scrollCodeBlockToAnchor(this,target)}refreshTheme(){this.interactions.refreshTheme()}willUpdate(changed){super.willUpdate(changed),this.restoreFocusedLineAfterUpdate=codeBlockLineHasFocus(this),changed.has("code")&&(this.focusedLine=clampCodeBlockFocusedLine(this.focusedLine,this.lineCount())),changed.has("languages")&&this.activateLanguages(this.languages),codeBlockNeedsHighlightResync(changed)&&(this.shikiReady||this.preSuppliedGrammar()?this.syncHighlight():this.highlightedHtml=null)}updated(changed){super.updated(changed),applyCodeBlockAriaBusy(this,this.showsSkeleton()),this.restoreFocusedLineAfterUpdate&&(restoreCodeBlockLineFocus(this,this.focusedLine),this.restoreFocusedLineAfterUpdate=!1)}showsSkeleton(){return codeBlockShowsSkeleton(this.shikiReady,this.language,!!this.preSuppliedGrammar())}activateLanguages(languages){return this.activeLanguages===languages?this.highlighterGeneration:(this.activeLanguages=languages,this.highlighterGeneration+=1,this.highlightToken+=1,this.shikiReady=!1,this.highlightedHtml=null,this.highlighterGeneration)}syncHighlight(){const languages=this.languages,generation=this.activateLanguages(languages),token=++this.highlightToken,lang=normalizeShikiLanguage(this.language);if(!lang){this.highlightedHtml=null;return}if(!languages?.[lang]&&!languages?.[this.language]){this.highlightedHtml=null;return}this.highlightedHtml=null,loadShikiHighlighterCore(languages).then(hl=>{token===this.highlightToken&&(generation!==this.highlighterGeneration||languages!==this.languages||this.isConnected&&(this.shikiReady=!0,this.highlightedHtml=hl?this.tokenize(hl,lang):null))})}tokenize(hl,lang){return tokenizeCodeBlock(hl,{code:this.code,lang,lineNumbers:this.lineNumbers,activatableLines:this.activatableLines,focusedLine:this.focusedLine,highlightedLines:this.lineHighlightSet(),activeLines:this.activeHighlightLineSet(),lineLabel:line=>this.localize("codeBlockLineLabel",void 0,{line:getNumberFormat(this.effectiveLocale).format(line)}),lineNumberText:line=>getNumberFormat(this.effectiveLocale).format(line)})}renderPlainCode(){return renderCodeBlockPlainCode({code:this.code,lineNumbers:this.lineNumbers,activatableLines:this.activatableLines,focusedLine:this.focusedLine,highlightedLines:this.lineHighlightSet(),activeLines:this.activeHighlightLineSet(),localize:this.localize.bind(this),lineLabel:line=>this.localize("codeBlockLineLabel",void 0,{line:getNumberFormat(this.effectiveLocale).format(line)}),lineNumberText:line=>getNumberFormat(this.effectiveLocale).format(line),onLineActivate:line=>this.interactions.onLineActivate(line),onLineKeyDown:(e,line)=>this.interactions.onLineKeyDown(e,line)})}render(){return renderCodeBlockShell({filename:this.filename,language:this.language,copyable:this.copyable,collapsible:this.collapsible,collapsed:this.collapsed,justCopied:this.justCopied,copyFailed:this.copyFailed,bodyId:this.bodyId,accessibleLabel:this.accessibleLabel,maxHeight:this.maxHeight,isDarkTheme:this.isDarkTheme,showSkeleton:this.showsSkeleton(),highlightedHtml:this.highlightedHtml,lineNumbers:this.lineNumbers,localize:this.localize.bind(this),renderPlainCode:()=>this.renderPlainCode(),onToggle:this.interactions.toggleCollapsed,onCopy:this.interactions.copy,onBodyMouseUp:this.interactions.onBodyMouseUp,onBodyClick:this.interactions.onBodyClick,onBodyKeyDown:this.interactions.onBodyKeyDown,onBodyFocusIn:this.interactions.onBodyFocusIn})}}__decorate([property()],LyraCodeBlockCore.prototype,"code",void 0),__decorate([property()],LyraCodeBlockCore.prototype,"language",void 0),__decorate([property()],LyraCodeBlockCore.prototype,"filename",void 0),__decorate([property({attribute:"aria-label"})],LyraCodeBlockCore.prototype,"accessibleLabel",void 0),__decorate([property({type:Boolean,reflect:!0})],LyraCodeBlockCore.prototype,"collapsible",void 0),__decorate([property({type:Boolean,reflect:!0})],LyraCodeBlockCore.prototype,"collapsed",void 0),__decorate([property({type:Boolean,reflect:!0,converter:trueDefaultBooleanConverter})],LyraCodeBlockCore.prototype,"copyable",void 0),__decorate([property({attribute:"max-height"})],LyraCodeBlockCore.prototype,"maxHeight",void 0),__decorate([property({type:Boolean,attribute:"line-numbers",reflect:!0})],LyraCodeBlockCore.prototype,"lineNumbers",void 0),__decorate([property({attribute:"highlight-lines"})],LyraCodeBlockCore.prototype,"highlightLines",void 0),__decorate([property({type:Boolean,attribute:"activatable-lines"})],LyraCodeBlockCore.prototype,"activatableLines",void 0),__decorate([property({attribute:!1})],LyraCodeBlockCore.prototype,"highlights",null),__decorate([property({attribute:"active-highlight-id"})],LyraCodeBlockCore.prototype,"activeHighlightId",void 0),__decorate([state()],LyraCodeBlockCore.prototype,"focusedLine",void 0),__decorate([property({attribute:!1})],LyraCodeBlockCore.prototype,"languages",void 0),__decorate([state()],LyraCodeBlockCore.prototype,"highlightedHtml",void 0),__decorate([state()],LyraCodeBlockCore.prototype,"shikiReady",void 0),__decorate([state()],LyraCodeBlockCore.prototype,"justCopied",void 0),__decorate([state()],LyraCodeBlockCore.prototype,"copyFailed",void 0),__decorate([state()],LyraCodeBlockCore.prototype,"isDarkTheme",void 0);export{LyraCodeBlockCore};
|
|
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"lit";import{property,state}from"lit/decorators.js";import{LyraElement}from"../../../internal/lyra-element.js";import{nextId}from"../../../internal/a11y.js";import{getNumberFormat}from"../../../internal/intl-cache.js";import{ThemeWatcher}from"../../../internal/theme-watcher.js";import{snapshotLyraHighlights}from"../../../internal/highlight-collection.js";import{loadShikiHighlighterCore,normalizeShikiLanguage}from"./shiki-types.js";import{styles}from"./code-block.styles.js";import{CodeBlockInteractionController,applyCodeBlockAriaBusy,clampCodeBlockFocusedLine,codeBlockActiveHighlightLineSet,codeBlockLineHasFocus,codeBlockLineCount,codeBlockLineHighlightSet,codeBlockPreSuppliedGrammar,codeBlockShowsSkeleton,renderCodeBlockPlainCode,renderCodeBlockShell,restoreCodeBlockLineFocus,scrollCodeBlockToAnchor,tokenizeCodeBlock}from"./code-block-shared.js";import"../../overlays/skeleton/skeleton.class.js";import{presenceTrueDefaultBooleanConverter as trueDefaultBooleanConverter}from"../../../internal/converters.js";import{LYRA_DEFAULT_codeBlockLineLabel,LYRA_DEFAULT_codeRegion,LYRA_DEFAULT_codeRegionWithLanguage,LYRA_DEFAULT_collapseCode,LYRA_DEFAULT_copied,LYRA_DEFAULT_copiedToClipboard,LYRA_DEFAULT_copy,LYRA_DEFAULT_copyCode,LYRA_DEFAULT_copyFailed,LYRA_DEFAULT_expandCode}from"../../../internal/default-strings.generated.js";class LyraCodeBlockCore extends LyraElement{static{this.defaultStrings={...super.defaultStrings,codeBlockLineLabel:LYRA_DEFAULT_codeBlockLineLabel,codeRegion:LYRA_DEFAULT_codeRegion,codeRegionWithLanguage:LYRA_DEFAULT_codeRegionWithLanguage,collapseCode:LYRA_DEFAULT_collapseCode,copied:LYRA_DEFAULT_copied,copiedToClipboard:LYRA_DEFAULT_copiedToClipboard,copy:LYRA_DEFAULT_copy,copyCode:LYRA_DEFAULT_copyCode,copyFailed:LYRA_DEFAULT_copyFailed,expandCode:LYRA_DEFAULT_expandCode}}static{this.immutableEventDetails=Object.freeze(["lr-text-select"])}static{this.ownedCollectionProperties=Object.freeze(["languages"])}static{this.styles=[LyraElement.styles,styles]}get highlights(){return this._highlights}set highlights(value){const previous=this._highlights;this._highlights=snapshotLyraHighlights(value),this.requestUpdate("highlights",previous)}constructor(){super(),this.code="",this.language="",this.filename="",this.accessibleLabel=null,this.collapsible=!1,this.collapsed=!1,this.copyable=!0,this.maxHeight="",this.lineNumbers=!1,this.highlightLines="",this.activatableLines=!1,this._highlights=snapshotLyraHighlights([]),this.activeHighlightId=null,this.anchorKinds=["line-range"],this.focusedLine=1,this.restoreFocusedLineAfterUpdate=!1,this.languages={},this.highlightedHtml=null,this.shikiReady=!1,this.justCopied=!1,this.copyFailed=!1,this.isDarkTheme=!1,this.interactions=new CodeBlockInteractionController({host:this,setFocusedLine:line=>{this.focusedLine=line},setJustCopied:value=>{this.justCopied=value},setCopyFailed:value=>{this.copyFailed=value},setDarkTheme:value=>{this.isDarkTheme=value},emitLineActivate:line=>this.emit("lr-line-activate",{line}),emitCopy:outcome=>this.emit("lr-copy",outcome),emitError:()=>this.emit("lr-error",null),emitCopyError:outcome=>this.emit("lr-copy-error",outcome),requestToggle:collapsed=>!this.emit("lr-toggle-request",{collapsed},{cancelable:!0}).defaultPrevented,emitToggle:collapsed=>this.emit("lr-toggle",{collapsed}),emitTextSelect:selection=>this.emit("lr-text-select",selection)}),this.highlightToken=0,this.highlighterGeneration=0,this.bodyId=nextId("code-block-body"),new ThemeWatcher(this,()=>this.refreshTheme())}connectedCallback(){super.connectedCallback(),this.refreshTheme();const languages=this.languages,generation=this.activateLanguages(languages);Object.keys(languages).length!==0&&loadShikiHighlighterCore(languages).then(()=>{!this.isConnected||generation!==this.highlighterGeneration||languages!==this.languages||(this.shikiReady=!0,this.syncHighlight())})}disconnectedCallback(){super.disconnectedCallback(),this.interactions.disconnect(),this.activeLanguages=void 0,this.highlighterGeneration+=1,this.highlightToken+=1,this.shikiReady=!1,this.highlightedHtml=null}adoptedCallback(){super.adoptedCallback(),this.interactions.disconnect()}preSuppliedGrammar(){return codeBlockPreSuppliedGrammar(this.languages,this.language??"")}lineHighlightSet(){return codeBlockLineHighlightSet(this.highlightLines??"",this.highlights,this.lineCount())}activeHighlightLineSet(){return codeBlockActiveHighlightLineSet(this.highlights,this.activeHighlightId,this.lineCount())}lineCount(){return codeBlockLineCount(this.code??"")}async scrollToAnchor(target){return scrollCodeBlockToAnchor(this,target)}refreshTheme(){this.interactions.refreshTheme()}willUpdate(changed){super.willUpdate(changed),this.restoreFocusedLineAfterUpdate=codeBlockLineHasFocus(this),changed.has("code")&&(this.focusedLine=clampCodeBlockFocusedLine(this.focusedLine,this.lineCount())),changed.has("languages")&&this.activateLanguages(this.languages),this.interactions.needsHighlightResync(changed,this.effectiveLocale,this.localize("codeBlockLineLabel"))&&(this.shikiReady||this.preSuppliedGrammar()?this.syncHighlight():this.highlightedHtml=null)}updated(changed){super.updated(changed),applyCodeBlockAriaBusy(this,this.showsSkeleton()),this.restoreFocusedLineAfterUpdate&&(restoreCodeBlockLineFocus(this,this.focusedLine),this.restoreFocusedLineAfterUpdate=!1)}showsSkeleton(){return codeBlockShowsSkeleton(this.shikiReady,this.language,!!this.preSuppliedGrammar())}activateLanguages(languages){return this.activeLanguages===languages?this.highlighterGeneration:(this.activeLanguages=languages,this.highlighterGeneration+=1,this.highlightToken+=1,this.shikiReady=!1,this.highlightedHtml=null,this.highlighterGeneration)}syncHighlight(){const languages=this.languages,generation=this.activateLanguages(languages),token=++this.highlightToken,lang=normalizeShikiLanguage(this.language??"");if(!lang){this.highlightedHtml=null;return}if(!languages?.[lang]&&!languages?.[this.language]){this.highlightedHtml=null;return}this.highlightedHtml=null,loadShikiHighlighterCore(languages).then(hl=>{token===this.highlightToken&&(generation!==this.highlighterGeneration||languages!==this.languages||this.isConnected&&(this.shikiReady=!0,this.highlightedHtml=hl?this.tokenize(hl,lang):null))})}tokenize(hl,lang){return tokenizeCodeBlock(hl,{code:this.code??"",lang,lineNumbers:this.lineNumbers,activatableLines:this.activatableLines,focusedLine:this.focusedLine,highlightedLines:this.lineHighlightSet(),activeLines:this.activeHighlightLineSet(),lineLabel:line=>this.localize("codeBlockLineLabel",void 0,{line:getNumberFormat(this.effectiveLocale).format(line)}),lineNumberText:line=>getNumberFormat(this.effectiveLocale).format(line)})}renderPlainCode(){return renderCodeBlockPlainCode({code:this.code??"",lineNumbers:this.lineNumbers,activatableLines:this.activatableLines,focusedLine:this.focusedLine,highlightedLines:this.lineHighlightSet(),activeLines:this.activeHighlightLineSet(),localize:this.localize.bind(this),lineLabel:line=>this.localize("codeBlockLineLabel",void 0,{line:getNumberFormat(this.effectiveLocale).format(line)}),lineNumberText:line=>getNumberFormat(this.effectiveLocale).format(line),onLineActivate:line=>this.interactions.onLineActivate(line),onLineKeyDown:(e,line)=>this.interactions.onLineKeyDown(e,line)})}render(){return renderCodeBlockShell({filename:this.filename,language:this.language,copyable:this.copyable,collapsible:this.collapsible,collapsed:this.collapsed,justCopied:this.justCopied,copyFailed:this.copyFailed,bodyId:this.bodyId,accessibleLabel:this.accessibleLabel,maxHeight:this.maxHeight,isDarkTheme:this.isDarkTheme,showSkeleton:this.showsSkeleton(),highlightedHtml:this.highlightedHtml,lineNumbers:this.lineNumbers,localize:this.localize.bind(this),renderPlainCode:()=>this.renderPlainCode(),onToggle:this.interactions.toggleCollapsed,onCopy:this.interactions.copy,onBodyMouseUp:this.interactions.onBodyMouseUp,onBodyClick:this.interactions.onBodyClick,onBodyKeyDown:this.interactions.onBodyKeyDown,onBodyFocusIn:this.interactions.onBodyFocusIn})}}__decorate([property()],LyraCodeBlockCore.prototype,"code",void 0),__decorate([property()],LyraCodeBlockCore.prototype,"language",void 0),__decorate([property()],LyraCodeBlockCore.prototype,"filename",void 0),__decorate([property({attribute:"aria-label"})],LyraCodeBlockCore.prototype,"accessibleLabel",void 0),__decorate([property({type:Boolean,reflect:!0})],LyraCodeBlockCore.prototype,"collapsible",void 0),__decorate([property({type:Boolean,reflect:!0})],LyraCodeBlockCore.prototype,"collapsed",void 0),__decorate([property({type:Boolean,reflect:!0,converter:trueDefaultBooleanConverter})],LyraCodeBlockCore.prototype,"copyable",void 0),__decorate([property({attribute:"max-height"})],LyraCodeBlockCore.prototype,"maxHeight",void 0),__decorate([property({type:Boolean,attribute:"line-numbers",reflect:!0})],LyraCodeBlockCore.prototype,"lineNumbers",void 0),__decorate([property({attribute:"highlight-lines"})],LyraCodeBlockCore.prototype,"highlightLines",void 0),__decorate([property({type:Boolean,attribute:"activatable-lines"})],LyraCodeBlockCore.prototype,"activatableLines",void 0),__decorate([property({attribute:!1})],LyraCodeBlockCore.prototype,"highlights",null),__decorate([property({attribute:"active-highlight-id"})],LyraCodeBlockCore.prototype,"activeHighlightId",void 0),__decorate([state()],LyraCodeBlockCore.prototype,"focusedLine",void 0),__decorate([property({attribute:!1})],LyraCodeBlockCore.prototype,"languages",void 0),__decorate([state()],LyraCodeBlockCore.prototype,"highlightedHtml",void 0),__decorate([state()],LyraCodeBlockCore.prototype,"shikiReady",void 0),__decorate([state()],LyraCodeBlockCore.prototype,"justCopied",void 0),__decorate([state()],LyraCodeBlockCore.prototype,"copyFailed",void 0),__decorate([state()],LyraCodeBlockCore.prototype,"isDarkTheme",void 0);export{LyraCodeBlockCore};
|
|
@@ -53,8 +53,6 @@ export declare function scrollCodeBlockToAnchor(host:CodeBlockAnchorHost,target:
|
|
|
53
53
|
export declare function codeBlockEventLine(e:Event):number|null;
|
|
54
54
|
/** An `lr-text-select` payload for a selection ending inside `[part="body"]`. */
|
|
55
55
|
interface CodeBlockSelection{readonly text:string;readonly anchor:LyraAnchor;readonly rects:readonly TextSelectRect[];}
|
|
56
|
-
/** Every property whose change invalidates the cached `highlightedHtml`. */
|
|
57
|
-
export declare function codeBlockNeedsHighlightResync(changed:PropertyValues):boolean;
|
|
58
56
|
/**
|
|
59
57
|
* Whether the `<lr-skeleton>` placeholder stands in for the code this render. Both components gate
|
|
60
58
|
* it on "a highlighter this instance is actually waiting for hasn't settled yet, and there's a
|
|
@@ -146,7 +144,9 @@ export interface CodeBlockInteractionOptions{host:CodeBlockInteractionHost;setFo
|
|
|
146
144
|
* rendered stay as each component's own `@state()`, written through the callbacks above so Lit
|
|
147
145
|
* still sees them change.
|
|
148
146
|
*/
|
|
149
|
-
export declare class CodeBlockInteractionController{private readonly options;private copyTimer?;private copyGeneration;
|
|
147
|
+
export declare class CodeBlockInteractionController{private readonly options;private copyTimer?;private copyGeneration;private highlightedLocale?;private highlightedLineLabel?;
|
|
148
|
+
/** Localized gutter markup is cached with the effective catalog label and number locale. */
|
|
149
|
+
needsHighlightResync(changed:PropertyValues,locale:string,lineLabel:string):boolean;constructor(options:CodeBlockInteractionOptions);
|
|
150
150
|
/** Re-resolves token colors after an imperative CSSOM/adopted-stylesheet theme change. */
|
|
151
151
|
refreshTheme():void;
|
|
152
152
|
/** Retires an in-flight copy-confirmation timer against the window that scheduled it. */
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import{html,nothing}from"lit";import{unsafeHTML}from"lit/directives/unsafe-html.js";import{chevronIcon}from"../../../internal/icons.js";import{prefersReducedMotion}from"../../../internal/motion.js";import{styleMap}from"lit/directives/style-map.js";import{sanitizeCssLength}from"../../../internal/safe-css.js";import{boundedSelectionRects,boundedSelectionText}from"../../../internal/text-quote.js";import{writeClipboardText}from"../../../internal/clipboard.js";import{normalizeShikiLanguage,SHIKI_THEMES}from"./shiki-types.js";import{resolveIsDarkTheme}from"./shiki-dark-theme.js";function codeBlockToggleLabel(localize,collapsed){return localize(collapsed?"expandCode":"collapseCode")}function codeBlockCopyLabel(localize,justCopied,copyFailed){return localize(copyFailed?"copyFailed":justCopied?"copiedToClipboard":"copyCode")}function codeBlockBodyLabel(localize,filename,language){return filename||(language?localize("codeRegionWithLanguage",void 0,{language}):localize("codeRegion"))}function addBoundedLineRange(lines,start,end,maxLine){if(!Number.isFinite(start)||!Number.isFinite(end)||maxLine<1)return;const low=Math.max(1,Math.min(Math.trunc(start),Math.trunc(end))),high=Math.min(Math.trunc(maxLine),Math.max(Math.trunc(start),Math.trunc(end)));for(let line=low;line<=high;line++)lines.add(line)}const CODE_BLOCK_COPY_CONFIRM_MS=1500;function codeBlockLineCount(code){return code.split(/\r\n|\r|\n/).length}function clampCodeBlockFocusedLine(focusedLine,lineCount){return Math.min(Math.max(1,focusedLine),lineCount)}function codeBlockLineHasFocus(host){return host.shadowRoot?.
|
|
1
|
+
import{html,nothing}from"lit";import{unsafeHTML}from"lit/directives/unsafe-html.js";import{activeElementIn}from"../../../internal/active-element.js";import{devWarnOnce}from"../../../internal/dev-mode-attribute-warning.js";import{chevronIcon}from"../../../internal/icons.js";import{prefersReducedMotion}from"../../../internal/motion.js";import{styleMap}from"lit/directives/style-map.js";import{sanitizeCssLength}from"../../../internal/safe-css.js";import{boundedSelectionRects,boundedSelectionText}from"../../../internal/text-quote.js";import{writeClipboardText}from"../../../internal/clipboard.js";import{normalizeShikiLanguage,SHIKI_THEMES}from"./shiki-types.js";import{resolveIsDarkTheme}from"./shiki-dark-theme.js";const INVALID_HIGHLIGHT_LINES_WARNING_KEY="lyra-code-block-invalid-highlight-lines",INVALID_HIGHLIGHT_LINES_WARNING="<lr-code-block> and <lr-code-block-core>: invalid highlight-lines entries are ignored; use one-based line numbers or ranges such as `3-5,7`.";function codeBlockToggleLabel(localize,collapsed){return localize(collapsed?"expandCode":"collapseCode")}function codeBlockCopyLabel(localize,justCopied,copyFailed){return localize(copyFailed?"copyFailed":justCopied?"copiedToClipboard":"copyCode")}function codeBlockBodyLabel(localize,filename,language){return filename||(language?localize("codeRegionWithLanguage",void 0,{language}):localize("codeRegion"))}function addBoundedLineRange(lines,start,end,maxLine){if(!Number.isFinite(start)||!Number.isFinite(end)||maxLine<1)return;const low=Math.max(1,Math.min(Math.trunc(start),Math.trunc(end))),high=Math.min(Math.trunc(maxLine),Math.max(Math.trunc(start),Math.trunc(end)));for(let line=low;line<=high;line++)lines.add(line)}const CODE_BLOCK_COPY_CONFIRM_MS=1500;function codeBlockLineCount(code){return code.split(/\r\n|\r|\n/).length}function clampCodeBlockFocusedLine(focusedLine,lineCount){return Math.min(Math.max(1,focusedLine),lineCount)}function codeBlockLineHasFocus(host){return activeElementIn(host.shadowRoot)?.matches('[data-line][part~="line-button"]')??!1}function restoreCodeBlockLineFocus(host,line){const shadowActive=activeElementIn(host.shadowRoot);if(shadowActive)return shadowActive.matches('[data-line][part~="line-button"]');const documentActive=activeElementIn(host.ownerDocument);if(documentActive&&documentActive!==host.ownerDocument.body&&documentActive!==host)return!1;const target=host.renderRoot.querySelector(`[data-line="${line}"][part~="line-button"]`);return target?.focus(),activeElementIn(host.shadowRoot)===target}function codeBlockLineHighlightSet(highlightLines,highlights,maxLine){const merged=parseHighlightLines(highlightLines,maxLine);if(!Array.isArray(highlights))return merged;for(const highlight of highlights){const anchor=lineRangeAnchor(highlight);if(!anchor)continue;const end=anchor.end??anchor.start;addBoundedLineRange(merged,anchor.start,end,maxLine)}return merged}function lineRangeAnchor(value){try{if(value===null||typeof value!="object"||Array.isArray(value))return;const anchor=value.anchor;return anchor===null||typeof anchor!="object"||Array.isArray(anchor)?void 0:anchor.kind==="line-range"?anchor:void 0}catch{return}}function lineRangeAnchorById(highlights,id){if(Array.isArray(highlights))for(const highlight of highlights)try{if(highlight!==null&&typeof highlight=="object"&&highlight.id===id){const anchor=lineRangeAnchor(highlight);if(anchor)return anchor}}catch{}}function codeBlockActiveHighlightLineSet(highlights,activeHighlightId,maxLine){const result=new Set,anchor=lineRangeAnchorById(highlights,activeHighlightId);if(!anchor)return result;const end=anchor.end??anchor.start;return addBoundedLineRange(result,anchor.start,end,maxLine),result}function codeBlockPreSuppliedGrammar(languages,language){const normalized=normalizeShikiLanguage(language);return languages?.[normalized]??languages?.[language]}async function scrollCodeBlockToAnchor(host,target){const anchor=typeof target=="string"?lineRangeAnchorById(host.highlights,target):target;if(!anchor||anchor.kind!=="line-range"||anchor.start<1||anchor.start>codeBlockLineCount(host.code??""))return!1;await host.updateComplete;const body=host.renderRoot.querySelector('[part="body"]'),lineEl=host.renderRoot.querySelector(`[data-line="${anchor.start}"]`);if(!body||!lineEl)return!1;const offset=lineEl.offsetTop-body.clientHeight/2,ownerWindow=body.ownerDocument.defaultView,reducedMotion=!ownerWindow||prefersReducedMotion(ownerWindow);return body.scrollTo({top:Math.max(0,offset),behavior:reducedMotion?"auto":"smooth"}),!0}function codeBlockEventLine(e){const target=e.composedPath()[0];if(typeof target!="object"||target===null||target.nodeType!==1||typeof target.localName!="string"||typeof target.closest!="function")return null;const lineElement=target.closest('[data-line][part~="line-button"]'),line=Number(lineElement?.dataset.line);return Number.isInteger(line)&&line>=1?line:null}function codeBlockLineKeyAction(key,line,total){if(key==="Enter"||key===" ")return{kind:"activate"};let next=null;return key==="ArrowDown"?next=Math.min(total,line+1):key==="ArrowUp"?next=Math.max(1,line-1):key==="Home"?next=1:key==="End"&&(next=total),next===null||next===line?null:{kind:"move",line:next}}function codeBlockSelectionAnchor(shadowRoot){if(!shadowRoot)return null;const ownerDocument=shadowRoot.ownerDocument,globalSelection=ownerDocument.defaultView?.getSelection();let range=null;if(globalSelection?.getComposedRanges){const[composed]=globalSelection.getComposedRanges({shadowRoots:[shadowRoot]});composed&&(composed.startContainer!==composed.endContainer||composed.startOffset!==composed.endOffset)&&(range=ownerDocument.createRange(),range.setStart(composed.startContainer,composed.startOffset),range.setEnd(composed.endContainer,composed.endOffset))}const selection=shadowRoot.getSelection?.()??globalSelection;if(!range){if(!selection||selection.isCollapsed||selection.rangeCount===0)return null;range=selection.getRangeAt(0)}const text=boundedSelectionText(range);if(!text)return null;const lineOf=node=>{const attr=(node.nodeType===Node.ELEMENT_NODE?node:node.parentElement)?.closest("[data-line]")?.getAttribute("data-line");return attr==null?null:Number(attr)},start=lineOf(range.startContainer),end=lineOf(range.endContainer);return start===null||end===null?null:{text,anchor:{kind:"line-range",start:Math.min(start,end),end:Math.max(start,end)},rects:boundedSelectionRects(range)}}function codeBlockNeedsHighlightResync(changed){return changed.has("code")||changed.has("language")||changed.has("languages")||changed.has("highlightLines")||changed.has("highlights")||changed.has("activeHighlightId")||changed.has("lineNumbers")||changed.has("activatableLines")}function codeBlockShowsSkeleton(shikiReady,language,loaderPending){return!shikiReady&&!!language&&loaderPending}function applyCodeBlockAriaBusy(host,showingSkeleton){showingSkeleton?host.setAttribute("aria-busy","true"):host.removeAttribute("aria-busy")}function tokenizeCodeBlock(hl,options){try{return hl.codeToHtml(options.code,{lang:options.lang,themes:SHIKI_THEMES,transformers:[codeBlockLineTransformer(options)]})}catch{return null}}function parseHighlightLines(spec,maxLine=Number.MAX_SAFE_INTEGER){const lines=new Set;for(const raw of spec.split(",")){const segment=raw.trim();if(!segment)continue;const rangeMatch=/^(\d+)\s*-\s*(\d+)$/.exec(segment);if(rangeMatch){const a=Number(rangeMatch[1]),b=Number(rangeMatch[2]);addBoundedLineRange(lines,a,b,maxLine);continue}const single=/^(\d+)$/.exec(segment);if(single){addBoundedLineRange(lines,Number(single[1]),Number(single[1]),maxLine);continue}devWarnOnce(INVALID_HIGHLIGHT_LINES_WARNING_KEY,INVALID_HIGHLIGHT_LINES_WARNING)}return lines}function codeBlockLineTransformer(options){return{name:"lr-code-block-parts",pre(node){if(node.properties.part=["pre"],options.lineNumbers){const classValue=node.properties.class,classes=Array.isArray(classValue)?classValue.map(String):classValue?[String(classValue)]:[];node.properties.class=[...classes,"line-numbers"]}delete node.properties.tabindex},code(node){node.properties.part=["code"]},line(node,line){node.properties["data-line"]=String(line);const parts=[],contentNode=node,children=contentNode.children??[];contentNode.children=children;let gutter;options.activatableLines&&options.lineNumbers?gutter={type:"element",tagName:"button",properties:{type:"button",class:["line-gutter"],part:["line-button"],"data-line":String(line),tabindex:String(options.focusedLine===line?0:-1),"aria-label":options.lineLabel(line)},children:[{type:"text",value:options.lineNumberText(line)}]}:options.lineNumbers&&(gutter={type:"element",tagName:"span",properties:{class:["line-number"],"aria-hidden":"true"},children:[{type:"text",value:options.lineNumberText(line)}]});const source={type:"element",tagName:"span",properties:{class:["line-source"]},children:[...children]};children.splice(0,children.length,...gutter?[gutter,source]:[source]),options.highlightedLines.has(line)&&(parts.push("line-highlight"),node.properties["data-highlighted"]=""),parts.length>0&&(node.properties.part=parts),options.activeLines.has(line)&&(node.properties["data-active"]="")}}}function renderCodeBlockPlainCode(options){const lines=options.code.split(/\r\n|\r|\n/),interactive=options.activatableLines&&options.lineNumbers;return html`<code
|
|
2
2
|
part="code"
|
|
3
3
|
class=${options.lineNumbers?"line-numbered-code":nothing}
|
|
4
4
|
>${lines.map((line,index)=>{const lineNumber=index+1,isHighlighted=options.highlightedLines.has(lineNumber),isActive=options.activeLines.has(lineNumber),part=isHighlighted?"line-highlight":nothing,gutter=interactive?html`<button
|
|
@@ -71,4 +71,4 @@ import{html,nothing}from"lit";import{unsafeHTML}from"lit/directives/unsafe-html.
|
|
|
71
71
|
${options.showSkeleton?html`<lr-skeleton shape="rect" .announce=${!1}></lr-skeleton>`:options.highlightedHtml!==null?unsafeHTML(options.highlightedHtml):html`<pre part="pre" class=${options.lineNumbers?"line-numbers":nothing}>${options.renderPlainCode()}</pre>`}
|
|
72
72
|
</div>
|
|
73
73
|
</div>
|
|
74
|
-
`}class CodeBlockInteractionController{constructor(options){this.options=options,this.copyGeneration=0,this.onLineActivate=line=>{this.setFocusedLine(line),this.options.emitLineActivate(line)},this.onLineKeyDown=(e,line)=>{const{host}=this.options,action=codeBlockLineKeyAction(e.key,line,codeBlockLineCount(host.code));if(action===null)return;if(e.preventDefault(),action.kind==="activate"){this.onLineActivate(line);return}const next=action.line;this.setFocusedLine(next),host.updateComplete.then(()=>{host.renderRoot.querySelector(`[part~="line-button"][data-line="${next}"]`)?.focus()})},this.onBodyClick=e=>{if(e.composedPath()[0]?.closest?.("button[data-inline-handler]"))return;const line=codeBlockEventLine(e);line!==null&&this.onLineActivate(line)},this.onBodyKeyDown=e=>{if(e.composedPath()[0]?.closest?.("button[data-inline-handler]"))return;const line=codeBlockEventLine(e);line!==null&&this.onLineKeyDown(e,line)},this.onBodyFocusIn=e=>{const line=codeBlockEventLine(e);line!==null&&this.setFocusedLine(line)},this.onBodyMouseUp=()=>{const selection=codeBlockSelectionAnchor(this.options.host.shadowRoot);selection&&this.options.emitTextSelect(selection)},this.copy=async()=>{const{host}=this.options,owner=host.isConnected?host.ownerDocument.defaultView:null,text=host.code,generation=++this.copyGeneration;this.cancelCopyTimer(),this.setCopyStatus("rest");const outcome=await writeClipboardText(owner,text);if(!owner||!host.isConnected||host.ownerDocument.defaultView!==owner||generation!==this.copyGeneration)return;outcome.ok?(this.options.emitCopy(outcome),this.setCopyStatus("success")):(this.setCopyStatus("error"),this.options.emitError(),this.options.emitCopyError(outcome));let handle=0;handle=owner.setTimeout(()=>{this.copyTimer?.owner!==owner||this.copyTimer.handle!==handle||!host.isConnected||host.ownerDocument.defaultView!==owner||generation!==this.copyGeneration||(this.copyTimer=void 0,this.setCopyStatus("rest"))},CODE_BLOCK_COPY_CONFIRM_MS),this.copyTimer={owner,handle}},this.toggleCollapsed=()=>{const{host}=this.options,collapsed=!host.collapsed;this.options.requestToggle(collapsed)&&(host.collapsed=collapsed,this.options.emitToggle(host.collapsed))}}refreshTheme(){this.options.setDarkTheme(resolveIsDarkTheme(this.options.host))}cancelCopyTimer(){const timer=this.copyTimer;this.copyTimer=void 0,timer&&timer.owner.clearTimeout(timer.handle)}disconnect(){this.copyGeneration++,this.cancelCopyTimer(),this.options.setJustCopied(!1),this.options.setCopyFailed(!1)}setCopyStatus(status){this.options.setJustCopied(status==="success"),this.options.setCopyFailed(status==="error")}setFocusedLine(line){this.options.setFocusedLine(line);for(const target of this.options.host.renderRoot.querySelectorAll('[data-line][part~="line-button"]'))target.tabIndex=Number(target.dataset.line)===line?0:-1}}export{CodeBlockInteractionController,applyCodeBlockAriaBusy,clampCodeBlockFocusedLine,codeBlockActiveHighlightLineSet,codeBlockEventLine,codeBlockLineCount,codeBlockLineHasFocus,codeBlockLineHighlightSet,codeBlockLineTransformer,
|
|
74
|
+
`}class CodeBlockInteractionController{needsHighlightResync(changed,locale,lineLabel){const localizationChanged=this.highlightedLocale!==locale||this.highlightedLineLabel!==lineLabel;return this.highlightedLocale=locale,this.highlightedLineLabel=lineLabel,localizationChanged||codeBlockNeedsHighlightResync(changed)}constructor(options){this.options=options,this.copyGeneration=0,this.onLineActivate=line=>{this.setFocusedLine(line),this.options.emitLineActivate(line)},this.onLineKeyDown=(e,line)=>{const{host}=this.options,action=codeBlockLineKeyAction(e.key,line,codeBlockLineCount(host.code??""));if(action===null)return;if(e.preventDefault(),action.kind==="activate"){this.onLineActivate(line);return}const next=action.line;this.setFocusedLine(next),host.updateComplete.then(()=>{host.renderRoot.querySelector(`[part~="line-button"][data-line="${next}"]`)?.focus()})},this.onBodyClick=e=>{if(e.composedPath()[0]?.closest?.("button[data-inline-handler]"))return;const line=codeBlockEventLine(e);line!==null&&this.onLineActivate(line)},this.onBodyKeyDown=e=>{if(e.composedPath()[0]?.closest?.("button[data-inline-handler]"))return;const line=codeBlockEventLine(e);line!==null&&this.onLineKeyDown(e,line)},this.onBodyFocusIn=e=>{const line=codeBlockEventLine(e);line!==null&&this.setFocusedLine(line)},this.onBodyMouseUp=()=>{const selection=codeBlockSelectionAnchor(this.options.host.shadowRoot);selection&&this.options.emitTextSelect(selection)},this.copy=async()=>{const{host}=this.options,owner=host.isConnected?host.ownerDocument.defaultView:null,text=host.code??"",generation=++this.copyGeneration;this.cancelCopyTimer(),this.setCopyStatus("rest");const outcome=await writeClipboardText(owner,text);if(!owner||!host.isConnected||host.ownerDocument.defaultView!==owner||generation!==this.copyGeneration)return;outcome.ok?(this.options.emitCopy(outcome),this.setCopyStatus("success")):(this.setCopyStatus("error"),this.options.emitError(),this.options.emitCopyError(outcome));let handle=0;handle=owner.setTimeout(()=>{this.copyTimer?.owner!==owner||this.copyTimer.handle!==handle||!host.isConnected||host.ownerDocument.defaultView!==owner||generation!==this.copyGeneration||(this.copyTimer=void 0,this.setCopyStatus("rest"))},CODE_BLOCK_COPY_CONFIRM_MS),this.copyTimer={owner,handle}},this.toggleCollapsed=()=>{const{host}=this.options,collapsed=!host.collapsed;this.options.requestToggle(collapsed)&&(host.collapsed=collapsed,this.options.emitToggle(host.collapsed))}}refreshTheme(){this.options.setDarkTheme(resolveIsDarkTheme(this.options.host))}cancelCopyTimer(){const timer=this.copyTimer;this.copyTimer=void 0,timer&&timer.owner.clearTimeout(timer.handle)}disconnect(){this.copyGeneration++,this.cancelCopyTimer(),this.options.setJustCopied(!1),this.options.setCopyFailed(!1)}setCopyStatus(status){this.options.setJustCopied(status==="success"),this.options.setCopyFailed(status==="error")}setFocusedLine(line){this.options.setFocusedLine(line);for(const target of this.options.host.renderRoot.querySelectorAll('[data-line][part~="line-button"]'))target.tabIndex=Number(target.dataset.line)===line?0:-1}}export{CodeBlockInteractionController,applyCodeBlockAriaBusy,clampCodeBlockFocusedLine,codeBlockActiveHighlightLineSet,codeBlockEventLine,codeBlockLineCount,codeBlockLineHasFocus,codeBlockLineHighlightSet,codeBlockLineTransformer,codeBlockPreSuppliedGrammar,codeBlockShowsSkeleton,parseHighlightLines,renderCodeBlockPlainCode,renderCodeBlockShell,restoreCodeBlockLineFocus,scrollCodeBlockToAnchor,tokenizeCodeBlock};
|
|
@@ -117,7 +117,7 @@ import{type TemplateResult,type PropertyValues}from'lit';import{LyraElement}from
|
|
|
117
117
|
* @since 4.0.0
|
|
118
118
|
*/
|
|
119
119
|
export declare class LyraCodeBlock extends LyraElement<LyraCodeBlockEventMap>{protected static readonly immutableEventDetails:readonly string[];static styles:import("lit").CSSResultGroup[];
|
|
120
|
-
/** The raw source text. */
|
|
120
|
+
/** The raw source text. Removing the attribute renders an empty code block. */
|
|
121
121
|
code:string;
|
|
122
122
|
/** A shiki-recognized language id or alias (e.g. `"javascript"`,
|
|
123
123
|
* `"python"`, `"json"`). When unset, or when shiki doesn't recognize it,
|
|
@@ -140,10 +140,11 @@ copyable:boolean;
|
|
|
140
140
|
/** A CSS length (e.g. `"20rem"`); once set, the code scrolls internally
|
|
141
141
|
* past this height instead of growing the page. */
|
|
142
142
|
maxHeight:string;
|
|
143
|
-
/** Whether to display one-based line numbers beside the code.
|
|
143
|
+
/** Whether to display one-based line numbers beside the code. Highlighted gutters
|
|
144
|
+
* follow live locale and line-label string changes. */
|
|
144
145
|
lineNumbers:boolean;
|
|
145
146
|
/** Comma-separated 1-based inclusive line ranges (e.g. `"3-5,7"`) to visually emphasize.
|
|
146
|
-
* Declarative sugar over `highlights` — merges with, and renders identically to, any
|
|
147
|
+
* Removing the attribute clears these ranges. Declarative sugar over `highlights` — merges with, and renders identically to, any
|
|
147
148
|
* `line-range` entries in `highlights`. */
|
|
148
149
|
highlightLines:string;
|
|
149
150
|
/** Makes the (`line-numbers`-gated) gutter a roving group of activation buttons. */
|
|
@@ -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"lit";import{property,state}from"lit/decorators.js";import{LyraElement}from"../../../internal/lyra-element.js";import{nextId}from"../../../internal/a11y.js";import{getNumberFormat}from"../../../internal/intl-cache.js";import{ThemeWatcher}from"../../../internal/theme-watcher.js";import{snapshotLyraHighlights}from"../../../internal/highlight-collection.js";import{loadShikiHighlighter,loadShikiLanguage,loadShikiHighlighterCore,normalizeShikiLanguage,shikiHasLoadedLanguage}from"./code-loader.js";import{styles}from"./code-block.styles.js";import{CodeBlockInteractionController,applyCodeBlockAriaBusy,clampCodeBlockFocusedLine,codeBlockActiveHighlightLineSet,codeBlockLineHasFocus,codeBlockLineCount,codeBlockLineHighlightSet,codeBlockNeedsHighlightResync,codeBlockPreSuppliedGrammar,codeBlockShowsSkeleton,renderCodeBlockPlainCode,renderCodeBlockShell,restoreCodeBlockLineFocus,scrollCodeBlockToAnchor,tokenizeCodeBlock}from"./code-block-shared.js";import"../../overlays/skeleton/skeleton.class.js";import{presenceTrueDefaultBooleanConverter as trueDefaultBooleanConverter}from"../../../internal/converters.js";import{LYRA_DEFAULT_codeBlockLineLabel,LYRA_DEFAULT_codeRegion,LYRA_DEFAULT_codeRegionWithLanguage,LYRA_DEFAULT_collapseCode,LYRA_DEFAULT_copied,LYRA_DEFAULT_copiedToClipboard,LYRA_DEFAULT_copy,LYRA_DEFAULT_copyCode,LYRA_DEFAULT_copyFailed,LYRA_DEFAULT_expandCode}from"../../../internal/default-strings.generated.js";class LyraCodeBlock extends LyraElement{static{this.defaultStrings={...super.defaultStrings,codeBlockLineLabel:LYRA_DEFAULT_codeBlockLineLabel,codeRegion:LYRA_DEFAULT_codeRegion,codeRegionWithLanguage:LYRA_DEFAULT_codeRegionWithLanguage,collapseCode:LYRA_DEFAULT_collapseCode,copied:LYRA_DEFAULT_copied,copiedToClipboard:LYRA_DEFAULT_copiedToClipboard,copy:LYRA_DEFAULT_copy,copyCode:LYRA_DEFAULT_copyCode,copyFailed:LYRA_DEFAULT_copyFailed,expandCode:LYRA_DEFAULT_expandCode}}static{this.immutableEventDetails=Object.freeze(["lr-text-select"])}static{this.styles=[LyraElement.styles,styles]}get highlights(){return this._highlights}set highlights(value){const previous=this._highlights;this._highlights=snapshotLyraHighlights(value),this.requestUpdate("highlights",previous)}constructor(){super(),this.code="",this.language="",this.filename="",this.accessibleLabel=null,this.collapsible=!1,this.collapsed=!1,this.copyable=!0,this.maxHeight="",this.lineNumbers=!1,this.highlightLines="",this.activatableLines=!1,this._highlights=snapshotLyraHighlights([]),this.activeHighlightId=null,this.anchorKinds=["line-range"],this.focusedLine=1,this.restoreFocusedLineAfterUpdate=!1,this.highlightedHtml=null,this.shikiReady=!1,this.justCopied=!1,this.copyFailed=!1,this.isDarkTheme=!1,this.interactions=new CodeBlockInteractionController({host:this,setFocusedLine:line=>{this.focusedLine=line},setJustCopied:value=>{this.justCopied=value},setCopyFailed:value=>{this.copyFailed=value},setDarkTheme:value=>{this.isDarkTheme=value},emitLineActivate:line=>this.emit("lr-line-activate",{line}),emitCopy:outcome=>this.emit("lr-copy",outcome),emitError:()=>this.emit("lr-error",null),emitCopyError:outcome=>this.emit("lr-copy-error",outcome),requestToggle:collapsed=>!this.emit("lr-toggle-request",{collapsed},{cancelable:!0}).defaultPrevented,emitToggle:collapsed=>this.emit("lr-toggle",{collapsed}),emitTextSelect:selection=>this.emit("lr-text-select",selection)}),this.highlightToken=0,this.defaultHighlighterLoading=!1,this.bodyId=nextId("code-block-body"),new ThemeWatcher(this,()=>this.refreshTheme())}connectedCallback(){super.connectedCallback(),this.refreshTheme(),this.ensureDefaultHighlighter(),(this.preSuppliedGrammar()||this.highlighter)&&this.syncHighlight()}ensureDefaultHighlighter(){!this.isConnected||this.highlighter!==void 0||this.defaultHighlighterLoading||(this.defaultHighlighterLoading=!0,loadShikiHighlighter().then(hl=>{this.defaultHighlighterLoading=!1,this.isConnected&&(this.highlighter=hl,this.shikiReady=!0,this.syncHighlight())}))}disconnectedCallback(){this.highlightToken++,super.disconnectedCallback(),this.interactions.disconnect(),this.highlightedHtml=null}adoptedCallback(){super.adoptedCallback(),this.interactions.disconnect()}preSuppliedGrammar(){return codeBlockPreSuppliedGrammar(this.languages,this.language)}lineHighlightSet(){return codeBlockLineHighlightSet(this.highlightLines,this.highlights,this.lineCount())}activeHighlightLineSet(){return codeBlockActiveHighlightLineSet(this.highlights,this.activeHighlightId,this.lineCount())}lineCount(){return codeBlockLineCount(this.code)}async scrollToAnchor(target){return scrollCodeBlockToAnchor(this,target)}refreshTheme(){this.interactions.refreshTheme()}willUpdate(changed){super.willUpdate(changed),this.restoreFocusedLineAfterUpdate=codeBlockLineHasFocus(this),changed.has("code")&&(this.focusedLine=clampCodeBlockFocusedLine(this.focusedLine,this.lineCount())),codeBlockNeedsHighlightResync(changed)&&(this.shikiReady||this.preSuppliedGrammar())&&this.syncHighlight()}updated(changed){super.updated(changed),applyCodeBlockAriaBusy(this,this.showsSkeleton()),this.restoreFocusedLineAfterUpdate&&(restoreCodeBlockLineFocus(this,this.focusedLine),this.restoreFocusedLineAfterUpdate=!1)}showsSkeleton(){return codeBlockShowsSkeleton(this.shikiReady,this.language,!this.preSuppliedGrammar())}syncHighlight(){const token=++this.highlightToken,lang=normalizeShikiLanguage(this.language);if(!lang){this.highlightedHtml=null;return}const languages=this.languages;if(languages?.[lang]??languages?.[this.language]){this.highlightedHtml=null,loadShikiHighlighterCore(languages).then(hl2=>{token===this.highlightToken&&this.isConnected&&(this.highlightedHtml=hl2?this.tokenize(hl2,lang):null)});return}const hl=this.highlighter;if(!hl){this.highlightedHtml=null;return}if(shikiHasLoadedLanguage(hl,lang)){this.highlightedHtml=this.tokenize(hl,lang);return}this.highlightedHtml=null,loadShikiLanguage(hl,lang).then(ok=>{token===this.highlightToken&&this.isConnected&&(this.highlightedHtml=ok?this.tokenize(hl,lang):null)})}tokenize(hl,lang){return tokenizeCodeBlock(hl,{code:this.code,lang,lineNumbers:this.lineNumbers,activatableLines:this.activatableLines,focusedLine:this.focusedLine,highlightedLines:this.lineHighlightSet(),activeLines:this.activeHighlightLineSet(),lineLabel:line=>this.localize("codeBlockLineLabel",void 0,{line:getNumberFormat(this.effectiveLocale).format(line)}),lineNumberText:line=>getNumberFormat(this.effectiveLocale).format(line)})}renderPlainCode(){return renderCodeBlockPlainCode({code:this.code,lineNumbers:this.lineNumbers,activatableLines:this.activatableLines,focusedLine:this.focusedLine,highlightedLines:this.lineHighlightSet(),activeLines:this.activeHighlightLineSet(),localize:this.localize.bind(this),lineLabel:line=>this.localize("codeBlockLineLabel",void 0,{line:getNumberFormat(this.effectiveLocale).format(line)}),lineNumberText:line=>getNumberFormat(this.effectiveLocale).format(line),onLineActivate:line=>this.interactions.onLineActivate(line),onLineKeyDown:(e,line)=>this.interactions.onLineKeyDown(e,line)})}render(){return renderCodeBlockShell({filename:this.filename,language:this.language,copyable:this.copyable,collapsible:this.collapsible,collapsed:this.collapsed,justCopied:this.justCopied,copyFailed:this.copyFailed,bodyId:this.bodyId,accessibleLabel:this.accessibleLabel,maxHeight:this.maxHeight,isDarkTheme:this.isDarkTheme,showSkeleton:this.showsSkeleton(),highlightedHtml:this.highlightedHtml,lineNumbers:this.lineNumbers,localize:this.localize.bind(this),renderPlainCode:()=>this.renderPlainCode(),onToggle:this.interactions.toggleCollapsed,onCopy:this.interactions.copy,onBodyMouseUp:this.interactions.onBodyMouseUp,onBodyClick:this.interactions.onBodyClick,onBodyKeyDown:this.interactions.onBodyKeyDown,onBodyFocusIn:this.interactions.onBodyFocusIn})}}__decorate([property()],LyraCodeBlock.prototype,"code",void 0),__decorate([property()],LyraCodeBlock.prototype,"language",void 0),__decorate([property()],LyraCodeBlock.prototype,"filename",void 0),__decorate([property({attribute:"aria-label"})],LyraCodeBlock.prototype,"accessibleLabel",void 0),__decorate([property({type:Boolean,reflect:!0})],LyraCodeBlock.prototype,"collapsible",void 0),__decorate([property({type:Boolean,reflect:!0})],LyraCodeBlock.prototype,"collapsed",void 0),__decorate([property({type:Boolean,reflect:!0,converter:trueDefaultBooleanConverter})],LyraCodeBlock.prototype,"copyable",void 0),__decorate([property({attribute:"max-height"})],LyraCodeBlock.prototype,"maxHeight",void 0),__decorate([property({type:Boolean,attribute:"line-numbers",reflect:!0})],LyraCodeBlock.prototype,"lineNumbers",void 0),__decorate([property({attribute:"highlight-lines"})],LyraCodeBlock.prototype,"highlightLines",void 0),__decorate([property({type:Boolean,attribute:"activatable-lines"})],LyraCodeBlock.prototype,"activatableLines",void 0),__decorate([property({attribute:!1})],LyraCodeBlock.prototype,"highlights",null),__decorate([property({attribute:"active-highlight-id"})],LyraCodeBlock.prototype,"activeHighlightId",void 0),__decorate([state()],LyraCodeBlock.prototype,"focusedLine",void 0),__decorate([property({attribute:!1})],LyraCodeBlock.prototype,"languages",void 0),__decorate([state()],LyraCodeBlock.prototype,"highlightedHtml",void 0),__decorate([state()],LyraCodeBlock.prototype,"shikiReady",void 0),__decorate([state()],LyraCodeBlock.prototype,"justCopied",void 0),__decorate([state()],LyraCodeBlock.prototype,"copyFailed",void 0),__decorate([state()],LyraCodeBlock.prototype,"isDarkTheme",void 0);export{LyraCodeBlock};
|
|
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"lit";import{property,state}from"lit/decorators.js";import{LyraElement}from"../../../internal/lyra-element.js";import{nextId}from"../../../internal/a11y.js";import{getNumberFormat}from"../../../internal/intl-cache.js";import{ThemeWatcher}from"../../../internal/theme-watcher.js";import{snapshotLyraHighlights}from"../../../internal/highlight-collection.js";import{loadShikiHighlighter,loadShikiLanguage,loadShikiHighlighterCore,normalizeShikiLanguage,shikiHasLoadedLanguage}from"./code-loader.js";import{styles}from"./code-block.styles.js";import{CodeBlockInteractionController,applyCodeBlockAriaBusy,clampCodeBlockFocusedLine,codeBlockActiveHighlightLineSet,codeBlockLineHasFocus,codeBlockLineCount,codeBlockLineHighlightSet,codeBlockPreSuppliedGrammar,codeBlockShowsSkeleton,renderCodeBlockPlainCode,renderCodeBlockShell,restoreCodeBlockLineFocus,scrollCodeBlockToAnchor,tokenizeCodeBlock}from"./code-block-shared.js";import"../../overlays/skeleton/skeleton.class.js";import{presenceTrueDefaultBooleanConverter as trueDefaultBooleanConverter}from"../../../internal/converters.js";import{LYRA_DEFAULT_codeBlockLineLabel,LYRA_DEFAULT_codeRegion,LYRA_DEFAULT_codeRegionWithLanguage,LYRA_DEFAULT_collapseCode,LYRA_DEFAULT_copied,LYRA_DEFAULT_copiedToClipboard,LYRA_DEFAULT_copy,LYRA_DEFAULT_copyCode,LYRA_DEFAULT_copyFailed,LYRA_DEFAULT_expandCode}from"../../../internal/default-strings.generated.js";class LyraCodeBlock extends LyraElement{static{this.defaultStrings={...super.defaultStrings,codeBlockLineLabel:LYRA_DEFAULT_codeBlockLineLabel,codeRegion:LYRA_DEFAULT_codeRegion,codeRegionWithLanguage:LYRA_DEFAULT_codeRegionWithLanguage,collapseCode:LYRA_DEFAULT_collapseCode,copied:LYRA_DEFAULT_copied,copiedToClipboard:LYRA_DEFAULT_copiedToClipboard,copy:LYRA_DEFAULT_copy,copyCode:LYRA_DEFAULT_copyCode,copyFailed:LYRA_DEFAULT_copyFailed,expandCode:LYRA_DEFAULT_expandCode}}static{this.immutableEventDetails=Object.freeze(["lr-text-select"])}static{this.styles=[LyraElement.styles,styles]}get highlights(){return this._highlights}set highlights(value){const previous=this._highlights;this._highlights=snapshotLyraHighlights(value),this.requestUpdate("highlights",previous)}constructor(){super(),this.code="",this.language="",this.filename="",this.accessibleLabel=null,this.collapsible=!1,this.collapsed=!1,this.copyable=!0,this.maxHeight="",this.lineNumbers=!1,this.highlightLines="",this.activatableLines=!1,this._highlights=snapshotLyraHighlights([]),this.activeHighlightId=null,this.anchorKinds=["line-range"],this.focusedLine=1,this.restoreFocusedLineAfterUpdate=!1,this.highlightedHtml=null,this.shikiReady=!1,this.justCopied=!1,this.copyFailed=!1,this.isDarkTheme=!1,this.interactions=new CodeBlockInteractionController({host:this,setFocusedLine:line=>{this.focusedLine=line},setJustCopied:value=>{this.justCopied=value},setCopyFailed:value=>{this.copyFailed=value},setDarkTheme:value=>{this.isDarkTheme=value},emitLineActivate:line=>this.emit("lr-line-activate",{line}),emitCopy:outcome=>this.emit("lr-copy",outcome),emitError:()=>this.emit("lr-error",null),emitCopyError:outcome=>this.emit("lr-copy-error",outcome),requestToggle:collapsed=>!this.emit("lr-toggle-request",{collapsed},{cancelable:!0}).defaultPrevented,emitToggle:collapsed=>this.emit("lr-toggle",{collapsed}),emitTextSelect:selection=>this.emit("lr-text-select",selection)}),this.highlightToken=0,this.defaultHighlighterLoading=!1,this.bodyId=nextId("code-block-body"),new ThemeWatcher(this,()=>this.refreshTheme())}connectedCallback(){super.connectedCallback(),this.refreshTheme(),this.ensureDefaultHighlighter(),(this.preSuppliedGrammar()||this.highlighter)&&this.syncHighlight()}ensureDefaultHighlighter(){!this.isConnected||this.highlighter!==void 0||this.defaultHighlighterLoading||(this.defaultHighlighterLoading=!0,loadShikiHighlighter().then(hl=>{this.defaultHighlighterLoading=!1,this.isConnected&&(this.highlighter=hl,this.shikiReady=!0,this.syncHighlight())}))}disconnectedCallback(){this.highlightToken++,super.disconnectedCallback(),this.interactions.disconnect(),this.highlightedHtml=null}adoptedCallback(){super.adoptedCallback(),this.interactions.disconnect()}preSuppliedGrammar(){return codeBlockPreSuppliedGrammar(this.languages,this.language??"")}lineHighlightSet(){return codeBlockLineHighlightSet(this.highlightLines??"",this.highlights,this.lineCount())}activeHighlightLineSet(){return codeBlockActiveHighlightLineSet(this.highlights,this.activeHighlightId,this.lineCount())}lineCount(){return codeBlockLineCount(this.code??"")}async scrollToAnchor(target){return scrollCodeBlockToAnchor(this,target)}refreshTheme(){this.interactions.refreshTheme()}willUpdate(changed){super.willUpdate(changed),this.restoreFocusedLineAfterUpdate=codeBlockLineHasFocus(this),changed.has("code")&&(this.focusedLine=clampCodeBlockFocusedLine(this.focusedLine,this.lineCount())),this.interactions.needsHighlightResync(changed,this.effectiveLocale,this.localize("codeBlockLineLabel"))&&(this.shikiReady||this.preSuppliedGrammar())&&this.syncHighlight()}updated(changed){super.updated(changed),applyCodeBlockAriaBusy(this,this.showsSkeleton()),this.restoreFocusedLineAfterUpdate&&(restoreCodeBlockLineFocus(this,this.focusedLine),this.restoreFocusedLineAfterUpdate=!1)}showsSkeleton(){return codeBlockShowsSkeleton(this.shikiReady,this.language,!this.preSuppliedGrammar())}syncHighlight(){const token=++this.highlightToken,lang=normalizeShikiLanguage(this.language??"");if(!lang){this.highlightedHtml=null;return}const languages=this.languages;if(languages?.[lang]??languages?.[this.language]){this.highlightedHtml=null,loadShikiHighlighterCore(languages).then(hl2=>{token===this.highlightToken&&this.isConnected&&(this.highlightedHtml=hl2?this.tokenize(hl2,lang):null)});return}const hl=this.highlighter;if(!hl){this.highlightedHtml=null;return}if(shikiHasLoadedLanguage(hl,lang)){this.highlightedHtml=this.tokenize(hl,lang);return}this.highlightedHtml=null,loadShikiLanguage(hl,lang).then(ok=>{token===this.highlightToken&&this.isConnected&&(this.highlightedHtml=ok?this.tokenize(hl,lang):null)})}tokenize(hl,lang){return tokenizeCodeBlock(hl,{code:this.code??"",lang,lineNumbers:this.lineNumbers,activatableLines:this.activatableLines,focusedLine:this.focusedLine,highlightedLines:this.lineHighlightSet(),activeLines:this.activeHighlightLineSet(),lineLabel:line=>this.localize("codeBlockLineLabel",void 0,{line:getNumberFormat(this.effectiveLocale).format(line)}),lineNumberText:line=>getNumberFormat(this.effectiveLocale).format(line)})}renderPlainCode(){return renderCodeBlockPlainCode({code:this.code??"",lineNumbers:this.lineNumbers,activatableLines:this.activatableLines,focusedLine:this.focusedLine,highlightedLines:this.lineHighlightSet(),activeLines:this.activeHighlightLineSet(),localize:this.localize.bind(this),lineLabel:line=>this.localize("codeBlockLineLabel",void 0,{line:getNumberFormat(this.effectiveLocale).format(line)}),lineNumberText:line=>getNumberFormat(this.effectiveLocale).format(line),onLineActivate:line=>this.interactions.onLineActivate(line),onLineKeyDown:(e,line)=>this.interactions.onLineKeyDown(e,line)})}render(){return renderCodeBlockShell({filename:this.filename,language:this.language,copyable:this.copyable,collapsible:this.collapsible,collapsed:this.collapsed,justCopied:this.justCopied,copyFailed:this.copyFailed,bodyId:this.bodyId,accessibleLabel:this.accessibleLabel,maxHeight:this.maxHeight,isDarkTheme:this.isDarkTheme,showSkeleton:this.showsSkeleton(),highlightedHtml:this.highlightedHtml,lineNumbers:this.lineNumbers,localize:this.localize.bind(this),renderPlainCode:()=>this.renderPlainCode(),onToggle:this.interactions.toggleCollapsed,onCopy:this.interactions.copy,onBodyMouseUp:this.interactions.onBodyMouseUp,onBodyClick:this.interactions.onBodyClick,onBodyKeyDown:this.interactions.onBodyKeyDown,onBodyFocusIn:this.interactions.onBodyFocusIn})}}__decorate([property()],LyraCodeBlock.prototype,"code",void 0),__decorate([property()],LyraCodeBlock.prototype,"language",void 0),__decorate([property()],LyraCodeBlock.prototype,"filename",void 0),__decorate([property({attribute:"aria-label"})],LyraCodeBlock.prototype,"accessibleLabel",void 0),__decorate([property({type:Boolean,reflect:!0})],LyraCodeBlock.prototype,"collapsible",void 0),__decorate([property({type:Boolean,reflect:!0})],LyraCodeBlock.prototype,"collapsed",void 0),__decorate([property({type:Boolean,reflect:!0,converter:trueDefaultBooleanConverter})],LyraCodeBlock.prototype,"copyable",void 0),__decorate([property({attribute:"max-height"})],LyraCodeBlock.prototype,"maxHeight",void 0),__decorate([property({type:Boolean,attribute:"line-numbers",reflect:!0})],LyraCodeBlock.prototype,"lineNumbers",void 0),__decorate([property({attribute:"highlight-lines"})],LyraCodeBlock.prototype,"highlightLines",void 0),__decorate([property({type:Boolean,attribute:"activatable-lines"})],LyraCodeBlock.prototype,"activatableLines",void 0),__decorate([property({attribute:!1})],LyraCodeBlock.prototype,"highlights",null),__decorate([property({attribute:"active-highlight-id"})],LyraCodeBlock.prototype,"activeHighlightId",void 0),__decorate([state()],LyraCodeBlock.prototype,"focusedLine",void 0),__decorate([property({attribute:!1})],LyraCodeBlock.prototype,"languages",void 0),__decorate([state()],LyraCodeBlock.prototype,"highlightedHtml",void 0),__decorate([state()],LyraCodeBlock.prototype,"shikiReady",void 0),__decorate([state()],LyraCodeBlock.prototype,"justCopied",void 0),__decorate([state()],LyraCodeBlock.prototype,"copyFailed",void 0),__decorate([state()],LyraCodeBlock.prototype,"isDarkTheme",void 0);export{LyraCodeBlock};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{css}from"lit";const styles=css`:host{font-size:var(--lr-font-size-sm);display:block}[part=base]{border:var(--lr-border-width-thin) solid var(--lr-color-border);border-radius:var(--lr-radius);background:var(--lr-color-surface);overflow:hidden}[part=header]{align-items:center;gap:var(--lr-space-xs);min-inline-size:0;padding:var(--lr-space-xs) var(--lr-space-s);border-block-end:var(--lr-border-width-thin) solid var(--lr-color-border);background:var(--lr-color-surface);font-family:var(--lr-font);display:flex}[part=toggle]{inline-size:var(--lr-size-1-25rem);block-size:var(--lr-size-1-25rem);min-inline-size:var(--lr-icon-button-size);min-block-size:var(--lr-icon-button-size);color:var(--lr-color-text-quiet);border-radius:var(--lr-radius);cursor:pointer;background:0 0;border:none;flex:none;justify-content:center;align-items:center;padding:0;display:inline-flex}[part=toggle]:hover{background:var(--lr-color-brand-quiet);color:var(--lr-color-brand)}[part=toggle]:active{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=toggle] .chevron{transition:transform var(--lr-transition-fast);display:inline-flex}:host(:not([collapsed])) [part=toggle] .chevron{transform:rotate(90deg)}:host([collapsed]:dir(rtl)) [part=toggle] .chevron{transform:scaleX(-1)}[part=filename]{text-overflow:ellipsis;white-space:nowrap;min-inline-size:0;font-family:var(--lr-code-block-font,var(--lr-font-mono));font-size:var(--lr-font-size-xs);font-weight:var(--lr-font-weight-semibold);color:var(--lr-color-text);flex:auto;overflow:hidden}[part=language]{text-overflow:ellipsis;white-space:nowrap;min-inline-size:0;max-inline-size:100%;padding:var(--lr-size-0-0625rem) var(--lr-size-0-4375rem);border-radius:var(--lr-radius-pill);background:var(--lr-color-brand-quiet);color:var(--lr-color-brand);font-size:var(--lr-size-0-6875rem);line-height:var(--lr-line-height-1-4);text-transform:uppercase;letter-spacing:var(--lr-size-0-02em);flex:0 auto;overflow:hidden}[part=copy-button]{color:var(--lr-color-text-quiet);font:inherit;font-size:var(--lr-font-size-xs);line-height:var(--lr-line-height-none);min-inline-size:var(--lr-icon-button-size);min-block-size:var(--lr-icon-button-size);padding:var(--lr-size-0-1875rem) var(--lr-space-xs);border-radius:var(--lr-radius);cursor:pointer;background:0 0;border:none;flex:none;margin-inline-start:auto}[part=copy-button]:hover{background:var(--lr-color-brand-quiet);color:var(--lr-color-brand)}[part=copy-button]:active{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=toggle]:focus-visible,[part=copy-button]:focus-visible{outline:var(--lr-focus-ring-width) solid var(--lr-focus-ring-color);outline-offset:var(--lr-focus-ring-offset)}[part=body]{max-block-size:var(--lr-code-block-max-height,none);display:block;overflow:auto}[part=body][hidden]{display:none}[part=body]:focus-visible{outline:var(--lr-focus-ring-width) solid var(--lr-focus-ring-color);outline-offset:calc(-1 * var(--lr-focus-ring-offset))}[part=body] lr-skeleton{padding:var(--lr-space-s) var(--lr-space-m);--lr-skeleton-w:100%;--lr-skeleton-h:var(--lr-size-8rem);display:block}[part=pre]{padding:var(--lr-space-s) var(--lr-space-m);box-sizing:border-box;background:var(--lr-color-surface);inline-size:max-content;min-inline-size:100%;font-family:var(--lr-code-block-font,var(--lr-font-mono));font-size:inherit;line-height:var(--lr-line-height-normal);white-space:pre;tab-size:var(--lr-code-block-tab-size,2);direction:ltr;unicode-bidi:isolate;margin:0}[part=code]{font-family:inherit;display:grid}[part=pre] .line{display:block}[part=pre] .line-number{min-inline-size:var(--lr-size-2-5ch);color:var(--lr-color-text-quiet);text-align:end;user-select:none;margin-inline-end:var(--lr-space-s);display:inline-block}[part=pre] [data-highlighted]{background:var(--lr-code-block-highlighted-line-bg,var(--lr-color-warning-quiet))}[part=pre] [data-active]{outline:var(--lr-border-width-thin) solid var(--lr-code-block-active-line-outline-color,var(--lr-color-brand));outline-offset:calc(-1 * var(--lr-border-width-thin))}[part=pre] button.line-gutter{min-inline-size:var(--lr-icon-button-size);min-block-size:var(--lr-icon-button-size);color:inherit;font:inherit;text-align:start;cursor:pointer;background:0 0;border:none;justify-content:end;align-items:center;margin:0;margin-inline-end:var(--lr-space-s);padding:0;display:inline-flex}[part=pre] button.line-gutter:hover{background:var(--lr-color-brand-quiet)}[part=pre] button.line-gutter:active{background:color-mix(in oklab, var(--lr-color-brand-quiet), var(--lr-color-mix-partner) var(--lr-color-mix-active))}[part=pre] button.line-gutter:focus-visible{outline:var(--lr-focus-ring-width) solid var(--lr-focus-ring-color);outline-offset:calc(-1 * var(--lr-focus-ring-offset))}[part=body][data-dark-theme=true] [part=pre],[part=body][data-dark-theme=true] [part=pre] span{color:var(--shiki-dark,inherit)!important;background-color:var(--shiki-dark-bg,transparent)!important}[part=body][data-dark-theme=true] [part=pre] .line-number,[part=body][data-dark-theme=true] [part=pre] button.line-gutter{color:var(--lr-color-text-quiet)!important}[part=body][data-dark-theme=true] [part=pre] [data-highlighted]{background:var(--lr-code-block-highlighted-line-bg,var(--lr-color-warning-quiet))!important}@media (prefers-reduced-motion:reduce){[part=toggle] .chevron{transition:none!important}}`;export{styles};
|
|
1
|
+
import{css}from"lit";const styles=css`:host{font-size:var(--lr-font-size-sm);display:block}[part=base]{border:var(--lr-border-width-thin) solid var(--lr-color-border);border-radius:var(--lr-radius);background:var(--lr-color-surface);overflow:hidden}[part=header]{align-items:center;gap:var(--lr-space-xs);min-inline-size:0;padding:var(--lr-space-xs) var(--lr-space-s);border-block-end:var(--lr-border-width-thin) solid var(--lr-color-border);background:var(--lr-color-surface);font-family:var(--lr-font);display:flex}[part=toggle]{font:inherit;inline-size:var(--lr-size-1-25rem);block-size:var(--lr-size-1-25rem);min-inline-size:var(--lr-icon-button-size);min-block-size:var(--lr-icon-button-size);color:var(--lr-color-text-quiet);border-radius:var(--lr-radius);cursor:pointer;background:0 0;border:none;flex:none;justify-content:center;align-items:center;padding:0;display:inline-flex}[part=toggle]:hover{background:var(--lr-color-brand-quiet);color:var(--lr-color-brand)}[part=toggle]:active{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=toggle] .chevron{transition:transform var(--lr-transition-fast);display:inline-flex}:host(:not([collapsed])) [part=toggle] .chevron{transform:rotate(90deg)}:host([collapsed]:dir(rtl)) [part=toggle] .chevron{transform:scaleX(-1)}[part=filename]{text-overflow:ellipsis;white-space:nowrap;min-inline-size:0;font-family:var(--lr-code-block-font,var(--lr-font-mono));font-size:var(--lr-font-size-xs);font-weight:var(--lr-font-weight-semibold);color:var(--lr-color-text);flex:auto;overflow:hidden}[part=language]{text-overflow:ellipsis;white-space:nowrap;min-inline-size:0;max-inline-size:100%;padding:var(--lr-size-0-0625rem) var(--lr-size-0-4375rem);border-radius:var(--lr-radius-pill);background:var(--lr-color-brand-quiet);color:var(--lr-color-brand);font-size:var(--lr-size-0-6875rem);line-height:var(--lr-line-height-1-4);text-transform:uppercase;letter-spacing:var(--lr-size-0-02em);flex:0 auto;overflow:hidden}[part=copy-button]{color:var(--lr-color-text-quiet);font:inherit;font-size:var(--lr-font-size-xs);line-height:var(--lr-line-height-none);min-inline-size:var(--lr-icon-button-size);min-block-size:var(--lr-icon-button-size);padding:var(--lr-size-0-1875rem) var(--lr-space-xs);border-radius:var(--lr-radius);cursor:pointer;background:0 0;border:none;flex:none;margin-inline-start:auto}[part=copy-button]:hover{background:var(--lr-color-brand-quiet);color:var(--lr-color-brand)}[part=copy-button]:active{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=toggle]:focus-visible,[part=copy-button]:focus-visible{outline:var(--lr-focus-ring-width) solid var(--lr-focus-ring-color);outline-offset:var(--lr-focus-ring-offset)}[part=body]{max-block-size:var(--lr-code-block-max-height,none);display:block;overflow:auto}[part=body][hidden]{display:none}[part=body]:focus-visible{outline:var(--lr-focus-ring-width) solid var(--lr-focus-ring-color);outline-offset:calc(-1 * var(--lr-focus-ring-offset))}[part=body] lr-skeleton{padding:var(--lr-space-s) var(--lr-space-m);--lr-skeleton-w:100%;--lr-skeleton-h:var(--lr-size-8rem);display:block}[part=pre]{padding:var(--lr-space-s) var(--lr-space-m);box-sizing:border-box;background:var(--lr-color-surface);inline-size:max-content;min-inline-size:100%;font-family:var(--lr-code-block-font,var(--lr-font-mono));font-size:inherit;line-height:var(--lr-line-height-normal);white-space:pre;tab-size:var(--lr-code-block-tab-size,2);direction:ltr;unicode-bidi:isolate;margin:0}[part=code]{font-family:inherit;display:grid}[part=pre] .line{display:block}[part=pre] .line-number{min-inline-size:var(--lr-size-2-5ch);color:var(--lr-color-text-quiet);text-align:end;user-select:none;margin-inline-end:var(--lr-space-s);display:inline-block}[part=pre] [data-highlighted]{background:var(--lr-code-block-highlighted-line-bg,var(--lr-color-warning-quiet))}[part=pre] [data-active]{outline:var(--lr-border-width-thin) solid var(--lr-code-block-active-line-outline-color,var(--lr-color-brand));outline-offset:calc(-1 * var(--lr-border-width-thin))}[part=pre] button.line-gutter{min-inline-size:var(--lr-icon-button-size);min-block-size:var(--lr-icon-button-size);color:inherit;font:inherit;text-align:start;cursor:pointer;background:0 0;border:none;justify-content:end;align-items:center;margin:0;margin-inline-end:var(--lr-space-s);padding:0;display:inline-flex}[part=pre] button.line-gutter:hover{background:var(--lr-color-brand-quiet)}[part=pre] button.line-gutter:active{background:color-mix(in oklab, var(--lr-color-brand-quiet), var(--lr-color-mix-partner) var(--lr-color-mix-active))}[part=pre] button.line-gutter:focus-visible{outline:var(--lr-focus-ring-width) solid var(--lr-focus-ring-color);outline-offset:calc(-1 * var(--lr-focus-ring-offset))}[part=body][data-dark-theme=true] [part=pre],[part=body][data-dark-theme=true] [part=pre] span{color:var(--shiki-dark,inherit)!important;background-color:var(--shiki-dark-bg,transparent)!important}[part=body][data-dark-theme=true] [part=pre] .line-number,[part=body][data-dark-theme=true] [part=pre] button.line-gutter{color:var(--lr-color-text-quiet)!important}[part=body][data-dark-theme=true] [part=pre] [data-highlighted]{background:var(--lr-code-block-highlighted-line-bg,var(--lr-color-warning-quiet))!important}@media (prefers-reduced-motion:reduce){[part=toggle] .chevron{transition:none!important}}`;export{styles};
|
|
@@ -7,7 +7,7 @@ import{type ShikiHighlighter}from'./shiki-types.js';export{SHIKI_DARK_THEME,SHIK
|
|
|
7
7
|
* `import()` itself, so the created instance is what's cached here rather
|
|
8
8
|
* than just the resolved module (one level deeper than `map-loader.ts`'s
|
|
9
9
|
* single-dependency cached-promise shape, which this otherwise mirrors).
|
|
10
|
-
* Resolves to `null`
|
|
10
|
+
* Resolves to `null` with a one-time development diagnostic if shiki isn't
|
|
11
11
|
* installed — `<lr-code-block>` falls back to plain unhighlighted text in
|
|
12
12
|
* that case, which is a fully supported default, not a degraded mode. No
|
|
13
13
|
* language grammar is loaded up front; `loadShikiLanguage()` below loads each
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{GREYCAT_LANGUAGE}from"./greycat-language.js";import{SHIKI_DARK_THEME,SHIKI_LIGHT_THEME,isShikiHighlighter,normalizeShikiLanguage}from"./shiki-types.js";import{resolveOptionalPeerCapability}from"../../../internal/optional-peer-capabilities.js";import{SHIKI_DARK_THEME as SHIKI_DARK_THEME2,SHIKI_LIGHT_THEME as SHIKI_LIGHT_THEME2,SHIKI_THEMES,normalizeShikiLanguage as normalizeShikiLanguage2}from"./shiki-types.js";import{loadShikiHighlighterCore}from"./shiki-types.js";let highlighter;const unsupportedLanguages=new Set,CUSTOM_LANGUAGES={gcl:GREYCAT_LANGUAGE,greycat:GREYCAT_LANGUAGE};function isShikiModule(candidate){return(typeof candidate=="object"||typeof candidate=="function")&&candidate!==null&&typeof candidate.createHighlighter=="function"}function loadShikiHighlighter(){return highlighter||(highlighter=import("shiki").then(async mod=>{const shikiModule=resolveOptionalPeerCapability(mod,isShikiModule);if(!shikiModule)throw new Error("Invalid optional peer `shiki`: missing `createHighlighter` capability.");const instance=await shikiModule.createHighlighter({themes:[SHIKI_LIGHT_THEME,SHIKI_DARK_THEME],langs:[]});if(!isShikiHighlighter(instance))throw new Error("Invalid optional peer `shiki`: `createHighlighter()` did not produce a usable highlighter capability.");return instance}).catch(
|
|
1
|
+
import{GREYCAT_LANGUAGE}from"./greycat-language.js";import{SHIKI_DARK_THEME,SHIKI_LIGHT_THEME,isShikiHighlighter,normalizeShikiLanguage}from"./shiki-types.js";import{devWarnOnce}from"../../../internal/dev-mode-attribute-warning.js";import{resolveOptionalPeerCapability}from"../../../internal/optional-peer-capabilities.js";import{SHIKI_DARK_THEME as SHIKI_DARK_THEME2,SHIKI_LIGHT_THEME as SHIKI_LIGHT_THEME2,SHIKI_THEMES,normalizeShikiLanguage as normalizeShikiLanguage2}from"./shiki-types.js";import{loadShikiHighlighterCore}from"./shiki-types.js";let highlighter,shikiModuleLoaderForTesting;const unsupportedLanguages=new Set,FULL_HIGHLIGHTER_WARNING_KEY="lyra-code-block-shiki-unavailable",FULL_HIGHLIGHTER_WARNING="<lr-code-block>: syntax highlighting is unavailable because the optional Shiki peer could not load. Code is rendered as plain text.";function __setShikiModuleLoaderForTesting(loader){shikiModuleLoaderForTesting=loader,highlighter=void 0}const CUSTOM_LANGUAGES={gcl:GREYCAT_LANGUAGE,greycat:GREYCAT_LANGUAGE};function isShikiModule(candidate){return(typeof candidate=="object"||typeof candidate=="function")&&candidate!==null&&typeof candidate.createHighlighter=="function"}function loadShikiHighlighter(){return highlighter||(highlighter=(shikiModuleLoaderForTesting??(()=>import("shiki")))().then(async mod=>{const shikiModule=resolveOptionalPeerCapability(mod,isShikiModule);if(!shikiModule)throw new Error("Invalid optional peer `shiki`: missing `createHighlighter` capability.");const instance=await shikiModule.createHighlighter({themes:[SHIKI_LIGHT_THEME,SHIKI_DARK_THEME],langs:[]});if(!isShikiHighlighter(instance))throw new Error("Invalid optional peer `shiki`: `createHighlighter()` did not produce a usable highlighter capability.");return instance}).catch(()=>(devWarnOnce(FULL_HIGHLIGHTER_WARNING_KEY,FULL_HIGHLIGHTER_WARNING),null))),highlighter}function shikiHasLoadedLanguage(hl,lang){try{return hl.getLoadedLanguages().includes(lang)}catch{return!1}}async function loadShikiLanguage(hl,lang){const normalizedLanguage=normalizeShikiLanguage(lang);if(shikiHasLoadedLanguage(hl,normalizedLanguage))return!0;if(unsupportedLanguages.has(normalizedLanguage))return!1;try{return await hl.loadLanguage(CUSTOM_LANGUAGES[normalizedLanguage]??normalizedLanguage),!0}catch{return unsupportedLanguages.add(normalizedLanguage),!1}}export{SHIKI_DARK_THEME2 as SHIKI_DARK_THEME,SHIKI_LIGHT_THEME2 as SHIKI_LIGHT_THEME,SHIKI_THEMES,__setShikiModuleLoaderForTesting,loadShikiHighlighter,loadShikiHighlighterCore,loadShikiLanguage,normalizeShikiLanguage2 as normalizeShikiLanguage,shikiHasLoadedLanguage};
|
|
@@ -40,6 +40,8 @@ export declare const SHIKI_THEMES:Record<'light'|'dark',string>;
|
|
|
40
40
|
export declare function normalizeShikiLanguage(lang:string):string;
|
|
41
41
|
/**
|
|
42
42
|
* Builds and caches a fine-grained `HighlighterCore` seeded with only the supplied grammars.
|
|
43
|
+
* The identity cache also shares recently used equivalent, deeply frozen plain grammar maps.
|
|
44
|
+
* This bounded weak reuse never changes mutable or unusual inputs' identity-only caching.
|
|
43
45
|
* Only Shiki subpaths are imported here; the package's main entry and full grammar table remain
|
|
44
46
|
* unreachable from lean component graphs.
|
|
45
47
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
function isShikiHighlighter(candidate){return(typeof candidate=="object"||typeof candidate=="function")&&candidate!==null&&typeof candidate.getLoadedLanguages=="function"&&typeof candidate.loadLanguage=="function"&&typeof candidate.codeToHtml=="function"}const SHIKI_LIGHT_THEME="github-light",SHIKI_DARK_THEME="github-dark",SHIKI_THEMES={light:SHIKI_LIGHT_THEME,dark:SHIKI_DARK_THEME};function normalizeShikiLanguage(lang){return lang.trim().toLowerCase().replace(/^\./,"")}const highlighterCores=new WeakMap;let highlighterCoreLoaderForTesting;function __setShikiHighlighterCoreLoaderForTesting(loader){highlighterCoreLoaderForTesting=loader}function loadShikiHighlighterCore(languages){if(highlighterCoreLoaderForTesting)return highlighterCoreLoaderForTesting(languages);let cached=highlighterCores.get(languages);
|
|
1
|
+
import{devWarnOnce}from"../../../internal/dev-mode-attribute-warning.js";function isShikiHighlighter(candidate){return(typeof candidate=="object"||typeof candidate=="function")&&candidate!==null&&typeof candidate.getLoadedLanguages=="function"&&typeof candidate.loadLanguage=="function"&&typeof candidate.codeToHtml=="function"}const SHIKI_LIGHT_THEME="github-light",SHIKI_DARK_THEME="github-dark",SHIKI_THEMES={light:SHIKI_LIGHT_THEME,dark:SHIKI_DARK_THEME};function normalizeShikiLanguage(lang){return lang.trim().toLowerCase().replace(/^\./,"")}const highlighterCores=new WeakMap,recentHighlighterCores=[];function equalFrozenGrammars(left,right){let remaining=2e4;const leftSeen=new WeakSet,rightSeen=new WeakSet,equal=(a,b,depth)=>{if(--remaining<0||depth>32||typeof a!=typeof b||typeof a=="function"||typeof a=="symbol"||typeof a=="number"&&(!Number.isFinite(a)||!Number.isFinite(b)))return!1;if(a===null||b===null||typeof a!="object"||typeof b!="object")return Object.is(a,b);if(!Object.isFrozen(a)||!Object.isFrozen(b)||leftSeen.has(a)||rightSeen.has(b))return!1;const prototype=Object.getPrototypeOf(a);if(prototype!==Object.getPrototypeOf(b)||prototype!==Object.prototype&&prototype!==Array.prototype&&prototype!==null||Array.isArray(a)!==Array.isArray(b))return!1;leftSeen.add(a),rightSeen.add(b);const leftKeys=Reflect.ownKeys(a),rightKeys=Reflect.ownKeys(b);if(leftKeys.length!==rightKeys.length||leftKeys.length>remaining)return!1;for(let i=0;i<leftKeys.length;i+=1){const key=leftKeys[i];if(typeof key!="string"||key!==rightKeys[i])return!1;const first=Object.getOwnPropertyDescriptor(a,key),second=Object.getOwnPropertyDescriptor(b,key);if(!("value"in first)||!("value"in second)||first.enumerable!==second.enumerable||!equal(first.value,second.value,depth+1))return!1}return!0};try{return equal(left,right,0)}catch{return!1}}let highlighterCoreLoaderForTesting;const FINE_GRAINED_SHIKI_WARNING_KEY="lyra-fine-grained-shiki-highlighter-unavailable",FINE_GRAINED_SHIKI_WARNING="Lyra syntax highlighting failed to build a fine-grained shiki highlighter from the supplied grammars. Code is rendered as plain text.";function __setShikiHighlighterCoreLoaderForTesting(loader){highlighterCoreLoaderForTesting=loader}function loadShikiHighlighterCore(languages){if(highlighterCoreLoaderForTesting)return highlighterCoreLoaderForTesting(languages);let cached=highlighterCores.get(languages),frozen=!1;if(!cached)try{frozen=Object.isFrozen(languages)}catch{}if(frozen)for(let i=recentHighlighterCores.length-1;i>=0;i-=1){const entry=recentHighlighterCores[i],previous=entry.languages.deref(),promise=entry.promise.deref();if(!previous||!promise)recentHighlighterCores.splice(i,1);else if(equalFrozenGrammars(languages,previous)){cached=promise,recentHighlighterCores.splice(i,1),recentHighlighterCores.push({languages:new WeakRef(languages),promise:entry.promise}),highlighterCores.set(languages,cached);break}}if(!cached&&(cached=Promise.all([import("shiki/core"),import("shiki/engine/oniguruma"),import("shiki/themes/github-light.mjs"),import("shiki/themes/github-dark.mjs")]).then(async([{createHighlighterCore},{createOnigurumaEngine},light,dark])=>{const core=await createHighlighterCore({themes:[light.default,dark.default],langs:Object.values(languages),engine:createOnigurumaEngine(import("shiki/wasm"))});if(!isShikiHighlighter(core))throw new Error("Invalid optional peer `shiki`: `createHighlighterCore()` did not produce a usable highlighter capability.");return core}).catch(()=>(devWarnOnce(FINE_GRAINED_SHIKI_WARNING_KEY,FINE_GRAINED_SHIKI_WARNING),null)),highlighterCores.set(languages,cached),frozen)){recentHighlighterCores.push({languages:new WeakRef(languages),promise:new WeakRef(cached)}),recentHighlighterCores.length>8&&recentHighlighterCores.shift();const pending=cached;pending.then(core=>{if(!core)for(let i=recentHighlighterCores.length-1;i>=0;i-=1)recentHighlighterCores[i].promise.deref()===pending&&recentHighlighterCores.splice(i,1)})}return cached}export{SHIKI_DARK_THEME,SHIKI_LIGHT_THEME,SHIKI_THEMES,__setShikiHighlighterCoreLoaderForTesting,isShikiHighlighter,loadShikiHighlighterCore,normalizeShikiLanguage};
|
|
@@ -11,7 +11,7 @@ var __decorate=function(decorators,target,key,desc){var c=arguments.length,r=c<3
|
|
|
11
11
|
aria-hidden="true"
|
|
12
12
|
focusable="false"
|
|
13
13
|
><path d="M12 20h9"></path><path d="M16.5 3.5a2.121 2.121 0 0 1 3 3L7 19l-4 1 1-4Z"></path></svg>
|
|
14
|
-
`}function defaultFormatTimestamp(date,locale,now=new Date){if(date.toDateString()===now.toDateString())return getDateTimeFormat(locale,{hour:"numeric",minute:"2-digit"}).format(date);const sameYear=date.getFullYear()===now.getFullYear();return getDateTimeFormat(locale,sameYear?{month:"short",day:"numeric"}:{month:"short",day:"numeric",year:"numeric"}).format(date)}class LyraConversationItem extends LyraElement{constructor(){super(...arguments),this.conversationId="",this.label="",this.excerpt="",this.active=!1,this.compact=!1,this.renamable=!0,this.spellcheck=!0,this.autocapitalize="",this.autocorrectValue=!0,this.renaming=!1,this.draftLabel="",this.hasActionsSlot=!1,this.hasStartSlot=!1,this.hasContentSlot=!1,this.hasMetaSlot=!1,this.hasExcerptSlot=!1,this.blurCommitGeneration=0,this.onOptionClick=()=>{this.renaming||this.select()},this.onOptionKeyDown=e=>{this.renaming||(e.key==="Enter"||e.key===" "||e.key==="Spacebar")&&(e.preventDefault(),this.select())},this.onRenameButtonClick=()=>{this.startRename()},this.onLabelInputChange=e=>{this.draftLabel=e.target.value},this.onLabelInputKeyDown=e=>{e.stopPropagation()
|
|
14
|
+
`}function defaultFormatTimestamp(date,locale,now=new Date){if(date.toDateString()===now.toDateString())return getDateTimeFormat(locale,{hour:"numeric",minute:"2-digit"}).format(date);const sameYear=date.getFullYear()===now.getFullYear();return getDateTimeFormat(locale,sameYear?{month:"short",day:"numeric"}:{month:"short",day:"numeric",year:"numeric"}).format(date)}class LyraConversationItem extends LyraElement{constructor(){super(...arguments),this.conversationId="",this.label="",this.excerpt="",this.active=!1,this.compact=!1,this.renamable=!0,this.spellcheck=!0,this.autocapitalize="",this.autocorrectValue=!0,this.renaming=!1,this.draftLabel="",this.hasActionsSlot=!1,this.hasStartSlot=!1,this.hasContentSlot=!1,this.hasMetaSlot=!1,this.hasExcerptSlot=!1,this.blurCommitGeneration=0,this.onOptionClick=()=>{this.renaming||this.select()},this.onOptionKeyDown=e=>{this.renaming||(e.key==="Enter"||e.key===" "||e.key==="Spacebar")&&(e.preventDefault(),this.select())},this.onRenameButtonClick=()=>{this.startRename()},this.onLabelInputChange=e=>{this.draftLabel=e.target.value},this.onLabelInputKeyDown=e=>{e.stopPropagation(),!(e.isComposing||e.keyCode===229)&&(e.key==="Enter"?(e.preventDefault(),this.commitRename(!0)):e.key==="Escape"&&(e.preventDefault(),this.cancelRename(!0)))},this.onLabelInputFocus=()=>{this.emit("focus",null)},this.onLabelInputBlur=event=>{if(this.emit("blur",null),!this.renaming)return;const generation=++this.blurCommitGeneration,synthetic=!event.isTrusted;queueMicrotask(()=>{generation!==this.blurCommitGeneration||!this.renaming||!this.isConnected||!synthetic&&activeElementIn(this.shadowRoot)===this.labelInput||this.commitRename()})},this.onActionsSlotChange=e=>{this.hasActionsSlot=e.target.assignedElements({flatten:!0}).length>0},this.syncStartSlot=()=>{this.hasStartSlot=Array.from(this.children).some(el=>el.getAttribute("slot")==="start")},this.onContentSlotChange=e=>{this.hasContentSlot=e.target.assignedElements({flatten:!0}).length>0},this.onMetaSlotChange=e=>{this.hasMetaSlot=e.target.assignedElements({flatten:!0}).length>0},this.onExcerptSlotChange=e=>{this.hasExcerptSlot=e.target.assignedElements({flatten:!0}).length>0}}static{this.defaultStrings={...super.defaultStrings,rename:LYRA_DEFAULT_rename,untitledConversation:LYRA_DEFAULT_untitledConversation}}static{this.styles=[LyraElement.styles,styles]}get autocorrect(){return this.autocorrectValue}set autocorrect(next){this.autocorrectValue=normalizeAutocorrect(next)}connectedCallback(){super.connectedCallback(),this.hasUpdated&&this.renaming&&this.focusRenameInput()}willUpdate(changed){super.willUpdate(changed),this.hasUpdated||(this.hasActionsSlot=Array.from(this.children).some(el=>el.getAttribute("slot")==="actions"),this.syncStartSlot(),this.hasContentSlot=Array.from(this.children).some(el=>el.getAttribute("slot")==="content"),this.hasMetaSlot=Array.from(this.children).some(el=>el.getAttribute("slot")==="meta"),this.hasExcerptSlot=Array.from(this.children).some(el=>el.getAttribute("slot")==="excerpt")),changed.has("renamable")&&!this.renamable&&this.renaming&&this.cancelRename()}updated(changed){super.updated(changed),changed.has("renaming")&&this.renaming&&this.focusRenameInput()}focusRenameInput(){this.labelInput?.focus(),this.labelInput?.select()}get normalizedTimestamp(){return normalizeLyraTimestamp(this.timestamp)}select(){this.emit("lr-select",{conversationId:this.conversationId})}click(){this.renaming?this.labelInput?.click():this.renderRoot.querySelector('[part="select-button"]')?.click()}startRename(){!this.renamable||this.renaming||(this.draftLabel=this.label,this.renaming=!0)}restoreOptionFocus(){this.updateComplete.then(()=>{this.renderRoot.querySelector('[part="select-button"]')?.focus()})}commitRename(restoreFocus=!1){this.renaming=!1,restoreFocus&&this.restoreOptionFocus();const next=this.draftLabel.trim();!next||next===this.label||this.emit("lr-rename",{conversationId:this.conversationId,label:next})}cancelRename(restoreFocus=!1){this.renaming=!1,restoreFocus&&this.restoreOptionFocus()}render(){const ts=this.normalizedTimestamp,formatter=this.formatTimestamp??(date=>defaultFormatTimestamp(date,this.effectiveLocale)),displayLabel=this.label||this.localize("untitledConversation"),showRenameButton=this.renamable&&!this.renaming,renameLabel=this.localize("rename",void 0,{title:displayLabel});return html`
|
|
15
15
|
<div part="base">
|
|
16
16
|
${this.active?html`<span part="active-indicator" aria-hidden="true"></span>`:nothing}
|
|
17
17
|
<div
|