@aceshooting/lyra-ui 9.1.0 → 10.0.1
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 +843 -0
- package/README.md +7 -0
- package/custom-elements.json +1 -1
- package/dist/cli/migrate-wa.mjs +52 -0
- package/dist/cli/migration-contract.json +1 -1
- package/dist/components/agent-tools/activity-feed/activity-feed.class.js +2 -2
- package/dist/components/agent-tools/activity-feed/activity-feed.styles.js +0 -16
- package/dist/components/agent-tools/agent-eval-dashboard/agent-eval-dashboard.class.js +1 -1
- package/dist/components/agent-tools/agent-eval-dashboard/agent-eval-dashboard.styles.js +9 -7
- package/dist/components/agent-tools/agent-run/agent-run.class.js +2 -2
- package/dist/components/agent-tools/agent-run/agent-run.styles.js +0 -13
- package/dist/components/agent-tools/agent-trace/agent-trace.class.js +1 -1
- package/dist/components/agent-tools/agent-trace/agent-trace.styles.js +7 -4
- package/dist/components/agent-tools/approval-queue/approval-queue.styles.js +7 -5
- package/dist/components/agent-tools/artifact-panel/artifact-panel.styles.js +0 -3
- package/dist/components/agent-tools/browser-frame/browser-frame.class.js +1 -1
- package/dist/components/agent-tools/browser-frame/browser-frame.styles.js +3 -5
- package/dist/components/agent-tools/commit-card/commit-card.class.js +1 -1
- package/dist/components/agent-tools/commit-card/commit-card.styles.js +0 -10
- package/dist/components/agent-tools/compare-panel/compare-panel.styles.js +11 -6
- package/dist/components/agent-tools/confirm-bar/confirm-bar.class.js +2 -2
- package/dist/components/agent-tools/confirm-bar/confirm-bar.styles.js +0 -46
- package/dist/components/agent-tools/context-inspector/context-inspector.class.js +1 -1
- package/dist/components/agent-tools/eval-dataset/eval-dataset.styles.js +0 -7
- package/dist/components/agent-tools/eval-result/eval-result.class.js +1 -1
- package/dist/components/agent-tools/evaluation-run/evaluation-run.class.js +2 -2
- package/dist/components/agent-tools/policy-summary/policy-summary.class.js +1 -1
- package/dist/components/agent-tools/prompt-studio/prompt-studio.styles.js +0 -15
- package/dist/components/agent-tools/result-card/result-card.styles.js +0 -7
- package/dist/components/agent-tools/result-card/result-field.styles.js +0 -5
- package/dist/components/agent-tools/schema-viewer/schema-viewer.styles.js +2 -5
- package/dist/components/agent-tools/span-waterfall/span-waterfall.class.js +1 -1
- package/dist/components/agent-tools/span-waterfall/span-waterfall.styles.js +0 -15
- package/dist/components/agent-tools/stack-trace/stack-trace.styles.js +0 -20
- package/dist/components/agent-tools/subagent-panel/subagent-panel.class.js +2 -2
- package/dist/components/agent-tools/subagent-panel/subagent-panel.styles.js +1 -4
- package/dist/components/agent-tools/task-list/task-list.class.js +2 -2
- package/dist/components/agent-tools/task-list/task-list.styles.js +0 -15
- package/dist/components/agent-tools/terminal/terminal.class.d.ts +11 -6
- package/dist/components/agent-tools/terminal/terminal.class.js +4 -4
- package/dist/components/agent-tools/terminal/terminal.styles.js +0 -46
- package/dist/components/agent-tools/test-results/test-results.class.js +2 -2
- package/dist/components/agent-tools/test-results/test-results.styles.js +0 -5
- package/dist/components/agent-tools/thinking-panel/thinking-panel.class.js +1 -1
- package/dist/components/agent-tools/thinking-panel/thinking-panel.styles.js +0 -41
- package/dist/components/agent-tools/tool-approval-dialog/tool-approval-dialog.styles.js +0 -41
- package/dist/components/agent-tools/tool-call-chip/tool-call-chip.class.js +2 -2
- package/dist/components/agent-tools/tool-call-chip/tool-call-chip.styles.js +0 -30
- package/dist/components/agent-tools/tool-param-form/tool-param-form.class.js +6 -6
- package/dist/components/agent-tools/tool-param-form/tool-param-form.styles.js +0 -5
- 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 +0 -20
- package/dist/components/agent-tools/tool-result-view/tool-result-view.styles.js +0 -4
- package/dist/components/agent-tools/tool-select-dialog/tool-select-dialog.styles.js +0 -21
- package/dist/components/agent-tools/trace-tree/trace-tree.class.js +2 -2
- package/dist/components/agent-tools/trace-tree/trace-tree.styles.js +7 -31
- package/dist/components/charts/chart/bar-chart.class.js +1 -1
- package/dist/components/charts/chart/box-plot.styles.js +0 -20
- package/dist/components/charts/chart/bubble-chart.class.js +1 -1
- package/dist/components/charts/chart/chart-colors.d.ts +1 -1
- package/dist/components/charts/chart/chart-colors.js +1 -1
- package/dist/components/charts/chart/chart-core-loader.d.ts +1 -0
- package/dist/components/charts/chart/chart-core-loader.js +1 -1
- package/dist/components/charts/chart/chart-feature-loader.d.ts +35 -0
- package/dist/components/charts/chart/chart-feature-loader.js +1 -1
- package/dist/components/charts/chart/chart.class.d.ts +93 -0
- package/dist/components/charts/chart/chart.class.js +3 -3
- package/dist/components/charts/chart/chart.styles.js +0 -27
- package/dist/components/charts/chart/doughnut-chart.class.js +1 -1
- package/dist/components/charts/chart/histogram.class.js +1 -1
- package/dist/components/charts/chart/line-chart.class.js +1 -1
- package/dist/components/charts/chart/lite-chart.class.d.ts +20 -1
- package/dist/components/charts/chart/lite-chart.class.js +4 -4
- package/dist/components/charts/chart/lite-chart.styles.js +0 -27
- package/dist/components/charts/chart/pie-chart.class.js +1 -1
- package/dist/components/charts/chart/polar-area-chart.class.js +1 -1
- package/dist/components/charts/chart/radar-chart.class.js +1 -1
- package/dist/components/charts/chart/scatter-chart.class.js +1 -1
- package/dist/components/conversation/agent-workspace/agent-workspace.class.d.ts +20 -0
- package/dist/components/conversation/agent-workspace/agent-workspace.class.js +3 -1
- package/dist/components/conversation/agent-workspace/agent-workspace.styles.js +3 -0
- package/dist/components/conversation/audio-visualizer/audio-visualizer.styles.js +0 -7
- package/dist/components/conversation/branch-picker/branch-picker.styles.js +0 -3
- package/dist/components/conversation/chat-composer/chat-composer.styles.js +0 -51
- package/dist/components/conversation/chat-message/chat-message.class.js +2 -2
- package/dist/components/conversation/chat-message/chat-message.styles.js +13 -35
- package/dist/components/conversation/chat-viewport/chat-viewport.class.js +1 -1
- package/dist/components/conversation/chat-viewport/chat-viewport.styles.js +0 -33
- package/dist/components/conversation/checkpoint/checkpoint.class.js +1 -1
- package/dist/components/conversation/checkpoint/checkpoint.styles.js +0 -3
- package/dist/components/conversation/code-block/code-block-shared.d.ts +5 -2
- package/dist/components/conversation/code-block/code-block.class.js +1 -1
- package/dist/components/conversation/code-block/code-block.styles.js +4 -95
- package/dist/components/conversation/code-block/code-loader.d.ts +11 -0
- package/dist/components/conversation/code-block/code-loader.js +1 -1
- package/dist/components/conversation/code-block/shiki-types.d.ts +12 -0
- package/dist/components/conversation/code-block/shiki-types.js +1 -1
- package/dist/components/conversation/conversation-item/conversation-item.styles.js +8 -54
- package/dist/components/conversation/generation-metrics/generation-metrics.class.js +2 -2
- package/dist/components/conversation/generation-metrics/generation-metrics.styles.js +0 -17
- package/dist/components/conversation/markdown/markdown-base.class.js +1 -1
- package/dist/components/conversation/markdown/markdown.styles.js +0 -41
- package/dist/components/conversation/message-actions/message-actions.styles.js +0 -3
- package/dist/components/conversation/message-feedback/message-feedback.styles.js +0 -35
- package/dist/components/conversation/message-parts/message-parts.class.d.ts +1 -1
- package/dist/components/conversation/message-parts/message-parts.styles.js +0 -5
- package/dist/components/conversation/model-select/model-select.class.js +3 -3
- package/dist/components/conversation/model-select/model-select.styles.js +12 -47
- package/dist/components/conversation/model-settings-panel/model-settings-panel.styles.js +0 -6
- package/dist/components/conversation/prompt-input/prompt-input.class.d.ts +3 -0
- package/dist/components/conversation/prompt-input/prompt-input.styles.js +0 -10
- package/dist/components/conversation/push-to-talk/push-to-talk.styles.js +0 -8
- package/dist/components/conversation/realtime-session/realtime-session.styles.js +1 -1
- package/dist/components/conversation/selection-toolbar/selection-toolbar.styles.js +1 -11
- package/dist/components/conversation/stream-status/stream-status.styles.js +0 -16
- package/dist/components/conversation/streaming-text/streaming-text.styles.js +0 -15
- package/dist/components/conversation/suggestion-chips/suggestion-chips.styles.js +0 -5
- package/dist/components/conversation/thread-list/thread-list.styles.js +5 -19
- package/dist/components/conversation/transcript-feed/transcript-feed.class.d.ts +16 -4
- package/dist/components/conversation/transcript-feed/transcript-feed.class.js +1 -1
- package/dist/components/conversation/transcript-feed/transcript-feed.styles.js +0 -1
- package/dist/components/conversation/typing-indicator/typing-indicator.styles.js +0 -23
- package/dist/components/conversation/usage-badge/usage-badge.class.js +1 -1
- package/dist/components/conversation/usage-badge/usage-badge.styles.js +0 -3
- package/dist/components/conversation/voice-picker/voice-picker.class.js +3 -3
- package/dist/components/conversation/voice-picker/voice-picker.styles.js +9 -29
- package/dist/components/conversation/widget-renderer/resolve.d.ts +2 -0
- package/dist/components/conversation/widget-renderer/resolve.js +1 -1
- package/dist/components/data/calendar/calendar.class.d.ts +15 -2
- package/dist/components/data/calendar/calendar.class.js +2 -2
- package/dist/components/data/calendar/calendar.styles.js +2 -28
- package/dist/components/data/condition-builder/condition-builder.class.d.ts +10 -6
- package/dist/components/data/condition-builder/condition-builder.class.js +2 -2
- package/dist/components/data/condition-builder/condition-builder.styles.js +0 -6
- package/dist/components/data/context-meter/context-meter.styles.js +0 -24
- package/dist/components/data/data-grid/data-grid.class.js +3 -3
- package/dist/components/data/data-grid/data-grid.styles.js +0 -22
- package/dist/components/data/document-library/document-library.class.js +2 -2
- package/dist/components/data/document-library/document-library.styles.js +0 -4
- package/dist/components/data/env-list/env-list.class.js +1 -1
- package/dist/components/data/env-list/env-list.styles.js +7 -4
- package/dist/components/data/file-tree/file-tree.class.d.ts +12 -0
- package/dist/components/data/file-tree/file-tree.class.js +1 -1
- package/dist/components/data/flow-canvas/flow-canvas.styles.js +12 -19
- package/dist/components/data/flow-controls/flow-controls.class.js +2 -2
- package/dist/components/data/flow-controls/flow-controls.styles.js +3 -36
- package/dist/components/data/flow-minimap/flow-minimap.class.js +1 -1
- package/dist/components/data/flow-minimap/flow-minimap.styles.js +0 -9
- package/dist/components/data/flow-node/flow-node.styles.js +0 -23
- package/dist/components/data/flow-run-status/flow-run-status.class.js +1 -1
- package/dist/components/data/flow-run-status/flow-run-status.styles.js +0 -7
- package/dist/components/data/graph-query-builder/graph-query-builder.class.d.ts +0 -7
- package/dist/components/data/graph-query-builder/graph-query-builder.class.js +1 -1
- package/dist/components/data/graph-query-builder/graph-query-builder.styles.js +0 -10
- package/dist/components/data/heatmap/heatmap-scale.d.ts +20 -0
- package/dist/components/data/heatmap/heatmap-scale.js +1 -1
- package/dist/components/data/heatmap/heatmap.class.d.ts +85 -2
- package/dist/components/data/heatmap/heatmap.class.js +2 -2
- package/dist/components/data/heatmap/heatmap.styles.js +0 -54
- package/dist/components/data/pagination/pagination.class.js +1 -1
- package/dist/components/data/pagination/pagination.styles.js +23 -46
- package/dist/components/data/sequence-strip/sequence-strip.class.d.ts +34 -1
- package/dist/components/data/sequence-strip/sequence-strip.class.js +5 -2
- package/dist/components/data/sequence-strip/sequence-strip.styles.js +14 -20
- package/dist/components/data/sparkline/sparkline.class.js +1 -1
- package/dist/components/data/stat/stat.styles.js +0 -67
- package/dist/components/data/table/table.class.d.ts +42 -3
- package/dist/components/data/table/table.class.js +4 -4
- package/dist/components/data/table/table.styles.js +20 -91
- package/dist/components/data/timeline/timeline-item.styles.js +0 -30
- package/dist/components/data/timeline/timeline.class.d.ts +89 -1
- package/dist/components/data/timeline/timeline.class.js +2 -2
- package/dist/components/data/timeline/timeline.styles.js +111 -31
- package/dist/components/data/tree/tree-item.styles.js +1 -28
- package/dist/components/data/tree/tree.class.js +2 -2
- package/dist/components/data/tree/tree.styles.js +0 -6
- package/dist/components/data/word-cloud/word-cloud.styles.js +0 -5
- package/dist/components/forms/button/button.class.js +1 -1
- package/dist/components/forms/button/button.styles.js +1 -106
- 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/checkbox.styles.js +0 -39
- package/dist/components/forms/checkbox-group/checkbox-group.class.d.ts +21 -2
- package/dist/components/forms/checkbox-group/checkbox-group.class.js +1 -1
- package/dist/components/forms/checkbox-group/checkbox-group.styles.js +0 -18
- package/dist/components/forms/code-editor/code-editor.styles.js +0 -30
- package/dist/components/forms/color-picker/color-picker.class.js +2 -2
- package/dist/components/forms/color-picker/color-picker.styles.js +0 -69
- package/dist/components/forms/combobox/combobox.class.js +2 -2
- package/dist/components/forms/combobox/combobox.styles.js +22 -111
- package/dist/components/forms/combobox/option.styles.js +7 -1
- package/dist/components/forms/date-picker/date-input.class.js +1 -1
- package/dist/components/forms/date-picker/date-input.styles.js +12 -67
- package/dist/components/forms/date-picker/date-picker.class.d.ts +1 -0
- package/dist/components/forms/date-picker/date-picker.class.js +22 -20
- package/dist/components/forms/date-picker/date-picker.styles.js +36 -29
- package/dist/components/forms/emoji-picker/emoji-data-loader.d.ts +6 -3
- package/dist/components/forms/emoji-picker/emoji-data-loader.js +1 -1
- package/dist/components/forms/emoji-picker/emoji-picker.class.d.ts +8 -1
- package/dist/components/forms/emoji-picker/emoji-picker.class.js +1 -1
- package/dist/components/forms/emoji-picker/emoji-picker.styles.js +3 -41
- package/dist/components/forms/icon-button/icon-button.class.js +1 -1
- package/dist/components/forms/icon-button/icon-button.styles.js +0 -16
- package/dist/components/forms/input/input.styles.js +0 -54
- package/dist/components/forms/input/number-input.styles.d.ts +4 -5
- package/dist/components/forms/input/number-input.styles.js +0 -11
- package/dist/components/forms/input/time-input-shared.d.ts +11 -0
- package/dist/components/forms/input/time-input-shared.js +1 -1
- package/dist/components/forms/input/time-input.class.d.ts +11 -2
- package/dist/components/forms/input/time-input.class.js +1 -1
- package/dist/components/forms/input/time-input.styles.js +0 -6
- package/dist/components/forms/locale-picker/locale-picker.class.js +2 -2
- package/dist/components/forms/locale-picker/locale-picker.styles.js +1 -26
- package/dist/components/forms/otp-input/otp-input.class.js +3 -3
- package/dist/components/forms/otp-input/otp-input.styles.js +0 -16
- package/dist/components/forms/phone-input/phone-input.class.d.ts +9 -1
- package/dist/components/forms/phone-input/phone-input.class.js +2 -2
- package/dist/components/forms/phone-input/phone-input.styles.js +0 -37
- package/dist/components/forms/radio/radio-button.styles.js +1 -30
- package/dist/components/forms/radio/radio-group.styles.js +0 -4
- package/dist/components/forms/radio/radio.styles.js +0 -44
- package/dist/components/forms/rubric-form/rubric-form.styles.js +0 -5
- package/dist/components/forms/select/select.class.js +1 -1
- package/dist/components/forms/select/select.styles.js +14 -114
- package/dist/components/forms/slider/slider.styles.js +0 -55
- package/dist/components/forms/swatch-picker/swatch-picker.class.d.ts +0 -11
- package/dist/components/forms/swatch-picker/swatch-picker.class.js +2 -2
- package/dist/components/forms/swatch-picker/swatch-picker.styles.js +0 -77
- package/dist/components/forms/switch/switch.class.d.ts +3 -0
- package/dist/components/forms/switch/switch.class.js +1 -1
- package/dist/components/forms/switch/switch.styles.js +3 -38
- package/dist/components/forms/textarea/textarea.styles.js +0 -28
- package/dist/components/forms/time-range/time-range.styles.js +12 -84
- package/dist/components/forms/token-input/token-input.class.d.ts +23 -9
- package/dist/components/forms/token-input/token-input.class.js +1 -1
- package/dist/components/forms/token-input/token-input.styles.js +1 -54
- package/dist/components/layout/app-rail/app-rail-item.class.js +2 -2
- package/dist/components/layout/app-rail/app-rail-item.styles.js +0 -13
- package/dist/components/layout/app-rail/app-rail.class.d.ts +5 -0
- package/dist/components/layout/app-rail/app-rail.class.js +1 -1
- package/dist/components/layout/app-rail/app-rail.styles.js +0 -46
- package/dist/components/layout/button-group/button-group.styles.js +0 -6
- package/dist/components/layout/card/card.class.d.ts +12 -0
- package/dist/components/layout/card/card.styles.js +5 -13
- package/dist/components/layout/carousel/carousel.styles.js +0 -1
- package/dist/components/layout/command-palette/command-palette.class.d.ts +8 -0
- package/dist/components/layout/command-palette/command-palette.class.js +3 -1
- package/dist/components/layout/command-palette/command-palette.styles.js +1 -13
- package/dist/components/layout/control-group/control-group.styles.js +0 -7
- package/dist/components/layout/dashboard-grid/dashboard-grid.class.js +1 -1
- package/dist/components/layout/dashboard-grid/dashboard-grid.styles.js +6 -25
- package/dist/components/layout/details/accordion.class.d.ts +13 -0
- package/dist/components/layout/details/accordion.class.js +1 -1
- package/dist/components/layout/details/details.class.js +1 -1
- package/dist/components/layout/details/details.styles.js +0 -12
- package/dist/components/layout/dock-panel/dock-panel.styles.js +0 -45
- package/dist/components/layout/drilldown-panel/drilldown-panel.class.d.ts +2 -0
- package/dist/components/layout/drilldown-panel/drilldown-panel.class.js +2 -2
- package/dist/components/layout/drilldown-panel/drilldown-panel.styles.js +0 -4
- package/dist/components/layout/filter-bar/filter-bar.class.js +1 -1
- package/dist/components/layout/filter-bar/filter-bar.styles.js +0 -9
- package/dist/components/layout/menu/menu-item.class.d.ts +5 -0
- package/dist/components/layout/menu/menu-item.class.js +1 -1
- package/dist/components/layout/menu/menu-item.styles.js +0 -49
- package/dist/components/layout/menu/menu-label.styles.js +0 -2
- package/dist/components/layout/menu/menu.styles.js +0 -18
- package/dist/components/layout/multi-split/multi-split.class.js +1 -1
- package/dist/components/layout/multi-split/multi-split.styles.js +8 -51
- package/dist/components/layout/page/page.class.d.ts +4 -0
- package/dist/components/layout/page/page.class.js +1 -1
- package/dist/components/layout/reorder-list/reorder-item.styles.js +0 -4
- package/dist/components/layout/responsive-panel/responsive-panel.styles.js +0 -27
- package/dist/components/layout/scroller/scroller.styles.js +0 -20
- package/dist/components/layout/segmented/segmented.class.d.ts +7 -1
- package/dist/components/layout/segmented/segmented.class.js +1 -1
- package/dist/components/layout/segmented/segmented.styles.js +69 -37
- package/dist/components/layout/split-panel/split-panel.styles.js +1 -7
- package/dist/components/layout/stepper/stepper.class.d.ts +8 -1
- package/dist/components/layout/stepper/stepper.class.js +1 -1
- package/dist/components/layout/stepper/stepper.styles.js +140 -41
- package/dist/components/layout/tab-group/tab-group.class.d.ts +4 -1
- package/dist/components/layout/tab-group/tab-group.styles.js +9 -75
- package/dist/components/layout/tab-group/tab.styles.js +0 -2
- package/dist/components/layout/virtual-list/virtual-list.class.d.ts +4 -4
- package/dist/components/layout/virtual-list/virtual-list.class.js +1 -1
- package/dist/components/layout/virtual-list/virtual-list.styles.js +0 -68
- package/dist/components/layout/widget/widget.class.d.ts +5 -1
- package/dist/components/layout/widget/widget.class.js +1 -1
- package/dist/components/layout/widget/widget.styles.js +97 -40
- package/dist/components/media/animated-image/animated-image.class.d.ts +3 -0
- package/dist/components/media/animated-image/animated-image.class.js +1 -1
- package/dist/components/media/animated-image/animated-image.styles.js +0 -28
- package/dist/components/media/attachment-chip/attachment-chip.class.d.ts +1 -1
- package/dist/components/media/attachment-chip/attachment-chip.class.js +2 -2
- package/dist/components/media/attachment-chip/attachment-chip.styles.js +0 -31
- package/dist/components/media/attachment-trigger/attachment-trigger.class.d.ts +1 -1
- package/dist/components/media/attachment-trigger/attachment-trigger.class.js +4 -4
- package/dist/components/media/attachment-trigger/attachment-trigger.styles.js +0 -40
- package/dist/components/media/av-player/av-player.class.d.ts +5 -6
- package/dist/components/media/av-player/av-player.class.js +1 -1
- package/dist/components/media/av-player/av-player.styles.js +0 -45
- package/dist/components/media/avatar/avatar.styles.js +3 -16
- package/dist/components/media/file-icon/file-icon.class.d.ts +1 -2
- package/dist/components/media/file-icon/file-icon.class.js +1 -1
- package/dist/components/media/file-input/file-input.class.d.ts +12 -0
- package/dist/components/media/file-input/file-input.class.js +1 -1
- package/dist/components/media/file-input/file-input.styles.js +3 -24
- package/dist/components/media/flag/flag.class.d.ts +20 -0
- package/dist/components/media/flag/flag.class.js +4 -2
- package/dist/components/media/flag/flag.styles.js +7 -1
- package/dist/components/media/flag/language-map.d.ts +10 -0
- package/dist/components/media/flag/language-map.js +1 -1
- package/dist/components/media/image-comparer/image-comparer.styles.js +4 -33
- package/dist/components/media/image-viewer/image-viewer.class.js +0 -2
- package/dist/components/media/image-viewer/image-viewer.styles.js +7 -27
- package/dist/components/media/lightbox/lightbox.class.js +0 -2
- package/dist/components/media/lightbox/lightbox.styles.js +2 -21
- package/dist/components/media/map/map-loader.d.ts +19 -1
- package/dist/components/media/map/map-loader.js +1 -1
- package/dist/components/media/map/map.class.d.ts +141 -1
- package/dist/components/media/map/map.class.js +15 -3
- package/dist/components/media/map/map.styles.js +20 -17
- package/dist/components/media/media-card/media-card.class.d.ts +14 -3
- package/dist/components/media/media-card/media-card.class.js +1 -1
- package/dist/components/media/media-card/media-card.styles.js +2 -28
- package/dist/components/media/pan-zoom/pan-zoom.styles.js +0 -3
- package/dist/components/media/qr-code/qr-code.class.d.ts +3 -2
- package/dist/components/media/qr-code/qr-code.class.js +2 -2
- package/dist/components/media/qr-code/qr-code.styles.js +0 -3
- package/dist/components/media/sequence-playback/sequence-playback.class.d.ts +2 -0
- package/dist/components/media/sequence-playback/sequence-playback.class.js +2 -1
- package/dist/components/media/sequence-playback/sequence-playback.styles.js +0 -19
- package/dist/components/media/video/video.class.d.ts +23 -2
- package/dist/components/media/video/video.class.js +3 -3
- package/dist/components/media/video/video.styles.js +4 -2
- 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/media/zoomable-frame/zoomable-frame.styles.js +0 -5
- package/dist/components/overlays/alert/alert.styles.js +4 -2
- package/dist/components/overlays/badge/badge.styles.js +4 -48
- package/dist/components/overlays/badge/tag.styles.js +0 -14
- package/dist/components/overlays/callout/callout.styles.js +2 -13
- package/dist/components/overlays/chip/chip-group.styles.js +0 -18
- package/dist/components/overlays/chip/chip.styles.js +6 -69
- package/dist/components/overlays/dialog/confirm.d.ts +1 -4
- package/dist/components/overlays/dialog/confirm.js +1 -1
- package/dist/components/overlays/dialog/dialog.class.d.ts +12 -9
- package/dist/components/overlays/dialog/dialog.class.js +1 -1
- package/dist/components/overlays/dialog/dialog.styles.js +0 -43
- package/dist/components/overlays/drawer/drawer.class.d.ts +2 -2
- package/dist/components/overlays/drawer/drawer.styles.js +0 -9
- package/dist/components/overlays/empty/empty.styles.js +0 -12
- package/dist/components/overlays/kbd/kbd.class.js +1 -1
- package/dist/components/overlays/kbd/kbd.styles.js +0 -8
- package/dist/components/overlays/overlay/dropdown.class.d.ts +1 -6
- package/dist/components/overlays/overlay/dropdown.class.js +2 -2
- package/dist/components/overlays/overlay/overlay.styles.js +0 -28
- package/dist/components/overlays/overlay/popover.class.d.ts +9 -1
- package/dist/components/overlays/overlay/popover.class.js +2 -2
- package/dist/components/overlays/overlay/tooltip.class.d.ts +10 -0
- package/dist/components/overlays/overlay/tooltip.class.js +2 -2
- package/dist/components/overlays/popup/popup.class.d.ts +1 -0
- package/dist/components/overlays/popup/popup.class.js +2 -2
- package/dist/components/overlays/popup/popup.styles.js +0 -15
- package/dist/components/overlays/progress/progress-ring.class.d.ts +9 -1
- package/dist/components/overlays/progress/progress-ring.class.js +3 -3
- package/dist/components/overlays/progress/progress.styles.js +0 -21
- package/dist/components/overlays/rating/rating.styles.js +0 -25
- package/dist/components/overlays/skeleton/skeleton.styles.js +0 -4
- package/dist/components/overlays/spinner/spinner.styles.js +2 -5
- package/dist/components/overlays/toast/toast-item.styles.js +3 -45
- package/dist/components/retrieval/chunk-inspector/chunk-inspector.styles.js +0 -35
- package/dist/components/retrieval/citation-badge/citation-badge.class.d.ts +2 -2
- package/dist/components/retrieval/citation-badge/citation-badge.class.js +3 -3
- package/dist/components/retrieval/citation-badge/citation-badge.styles.js +0 -20
- package/dist/components/retrieval/claim-evidence/claim-evidence.class.js +1 -1
- package/dist/components/retrieval/claim-evidence/claim-evidence.styles.js +0 -8
- package/dist/components/retrieval/community-card/community-card.class.d.ts +1 -0
- package/dist/components/retrieval/community-card/community-card.styles.js +0 -6
- package/dist/components/retrieval/embedding-explorer/embedding-explorer.styles.js +8 -12
- package/dist/components/retrieval/entity-card/entity-card.class.d.ts +4 -3
- package/dist/components/retrieval/entity-card/entity-card.class.js +1 -1
- package/dist/components/retrieval/entity-card/entity-card.styles.js +0 -12
- package/dist/components/retrieval/entity-chip/entity-chip.class.d.ts +10 -4
- package/dist/components/retrieval/entity-chip/entity-chip.class.js +3 -3
- package/dist/components/retrieval/entity-chip/entity-chip.styles.js +6 -9
- package/dist/components/retrieval/entity-dossier/entity-dossier.class.d.ts +19 -5
- package/dist/components/retrieval/entity-dossier/entity-dossier.class.js +1 -1
- package/dist/components/retrieval/graph/graph.class.d.ts +5 -0
- package/dist/components/retrieval/graph/graph.class.js +1 -1
- package/dist/components/retrieval/graph/graph.styles.js +0 -30
- package/dist/components/retrieval/graph-legend/graph-legend.styles.js +0 -3
- package/dist/components/retrieval/grounding-summary/grounding-summary.class.js +2 -2
- package/dist/components/retrieval/ingestion-queue/ingestion-queue.styles.js +0 -25
- package/dist/components/retrieval/knowledge-base-admin/knowledge-base-admin.class.d.ts +2 -0
- package/dist/components/retrieval/knowledge-base-admin/knowledge-base-admin.styles.js +0 -7
- package/dist/components/retrieval/knowledge-graph-explorer/knowledge-graph-explorer.class.d.ts +20 -6
- package/dist/components/retrieval/knowledge-graph-explorer/knowledge-graph-explorer.class.js +2 -2
- package/dist/components/retrieval/knowledge-graph-explorer/knowledge-graph-explorer.styles.js +6 -11
- package/dist/components/retrieval/memory-panel/memory-panel.class.js +1 -1
- package/dist/components/retrieval/mind-map/mind-map.class.d.ts +5 -3
- package/dist/components/retrieval/mind-map/mind-map.class.js +1 -1
- package/dist/components/retrieval/mind-map/mind-map.styles.js +0 -2
- package/dist/components/retrieval/neighbor-list/neighbor-list.class.d.ts +3 -2
- package/dist/components/retrieval/neighbor-list/neighbor-list.class.js +1 -1
- package/dist/components/retrieval/neighbor-list/neighbor-list.styles.js +0 -30
- package/dist/components/retrieval/node-palette/node-palette.styles.js +0 -11
- package/dist/components/retrieval/path-strip/path-strip.styles.js +0 -10
- package/dist/components/retrieval/provenance-panel/provenance-panel.class.d.ts +12 -3
- package/dist/components/retrieval/provenance-panel/provenance-panel.class.js +1 -1
- package/dist/components/retrieval/provenance-panel/provenance-panel.styles.js +0 -2
- package/dist/components/retrieval/rag-eval-dashboard/rag-eval-dashboard.class.d.ts +3 -2
- package/dist/components/retrieval/rag-eval-dashboard/rag-eval-dashboard.class.js +2 -2
- package/dist/components/retrieval/retrieval-results/retrieval-results.styles.js +0 -28
- package/dist/components/retrieval/retrieval-search/retrieval-search.styles.js +0 -4
- package/dist/components/retrieval/retrieval-trace/retrieval-trace.class.js +1 -1
- package/dist/components/retrieval/retrieval-trace/retrieval-trace.styles.js +0 -2
- package/dist/components/retrieval/source-card/source-card.styles.js +0 -13
- package/dist/components/retrieval/source-list/source-list.styles.js +0 -7
- package/dist/components/retrieval/source-picker/source-picker.class.js +1 -1
- package/dist/components/retrieval/source-picker/source-picker.styles.js +0 -7
- package/dist/components/utility/copy-button/copy-button.styles.js +0 -10
- package/dist/components/utility/diff-view/diff-view.styles.js +0 -14
- package/dist/components/utility/export-button/export-button.styles.js +0 -22
- package/dist/components/utility/icon/icon.styles.js +0 -6
- package/dist/components/utility/json-viewer/json-viewer.styles.js +2 -48
- package/dist/components/utility/known-date/known-date.class.d.ts +7 -3
- package/dist/components/utility/known-date/known-date.styles.js +10 -51
- package/dist/components/utility/live-region/live-region.styles.js +0 -4
- package/dist/components/utility/mention-popover/mention-popover.styles.js +0 -25
- package/dist/components/utility/poll-status/poll-status.styles.js +0 -4
- package/dist/components/utility/random-content/random-content.class.d.ts +22 -0
- package/dist/components/utility/random-content/random-content.class.js +3 -2
- package/dist/components/utility/random-content/random-content.styles.js +6 -13
- package/dist/components/utility/tour/tour.class.d.ts +4 -2
- package/dist/components/utility/tour/tour.class.js +3 -3
- package/dist/components/utility/tour/tour.styles.js +0 -13
- package/dist/components/utility/visually-hidden/visually-hidden.styles.js +0 -5
- package/dist/components/viewers/archive-viewer/archive-viewer.class.js +1 -1
- package/dist/components/viewers/archive-viewer/archive-viewer.styles.d.ts +2 -2
- package/dist/components/viewers/archive-viewer/archive-viewer.styles.js +0 -10
- package/dist/components/viewers/contact-viewer/contact-viewer.class.js +1 -1
- package/dist/components/viewers/csv-viewer/csv-viewer.class.js +1 -1
- package/dist/components/viewers/csv-viewer/csv-viewer.styles.js +0 -19
- package/dist/components/viewers/dataset-viewer/dataset-viewer.class.js +1 -1
- package/dist/components/viewers/dataset-viewer/dataset-viewer.styles.js +0 -15
- package/dist/components/viewers/document-compare/document-compare.class.js +1 -1
- package/dist/components/viewers/document-compare/document-compare.styles.js +0 -3
- package/dist/components/viewers/document-preview/document-preview.styles.js +0 -25
- package/dist/components/viewers/document-viewer/document-viewer.class.d.ts +2 -1
- package/dist/components/viewers/document-viewer/document-viewer.class.js +1 -1
- package/dist/components/viewers/document-viewer/document-viewer.styles.js +0 -5
- package/dist/components/viewers/docx-viewer/docx-viewer.styles.js +0 -17
- package/dist/components/viewers/ebook-viewer/ebook-viewer.class.js +1 -1
- package/dist/components/viewers/ebook-viewer/ebook-viewer.styles.js +0 -4
- package/dist/components/viewers/email-viewer/email-viewer.styles.js +0 -7
- package/dist/components/viewers/geojson-view/geojson-view.styles.js +0 -5
- package/dist/components/viewers/highlight-layer/highlight-layer.styles.js +0 -3
- package/dist/components/viewers/notebook-viewer/notebook-viewer.class.js +1 -1
- package/dist/components/viewers/notebook-viewer/notebook-viewer.styles.js +0 -38
- package/dist/components/viewers/page-rail/page-rail.class.js +1 -1
- package/dist/components/viewers/page-rail/page-rail.styles.js +0 -13
- package/dist/components/viewers/pdf-viewer/pdf-loader.d.ts +13 -2
- package/dist/components/viewers/pdf-viewer/pdf-loader.js +1 -1
- package/dist/components/viewers/pdf-viewer/pdf-viewer.class.d.ts +32 -2
- package/dist/components/viewers/pdf-viewer/pdf-viewer.class.js +4 -4
- package/dist/components/viewers/pdf-viewer/pdf-viewer.styles.js +1 -27
- package/dist/components/viewers/pptx-viewer/pptx-viewer.styles.js +0 -3
- package/dist/components/viewers/spreadsheet-viewer/spreadsheet-viewer.class.js +1 -1
- package/dist/components/viewers/spreadsheet-viewer/spreadsheet-viewer.styles.js +0 -14
- package/dist/components/viewers/svg-viewer/svg-viewer.styles.js +0 -7
- package/dist/components/viewers/xml-viewer/xml-viewer.styles.js +2 -24
- package/dist/custom-elements-jsx.d.ts +56 -37
- package/dist/events.d.ts +43 -33
- package/dist/internal/agent-status-variants.d.ts +18 -0
- package/dist/internal/agent-status-variants.js +1 -0
- package/dist/internal/announcer.d.ts +8 -3
- package/dist/internal/announcer.js +1 -1
- package/dist/internal/autoloader-manifest.js +1 -1
- package/dist/internal/canvas-color.d.ts +16 -0
- package/dist/internal/canvas-color.js +1 -1
- package/dist/internal/catalog-picker.d.ts +0 -1
- package/dist/internal/catalog-picker.js +1 -1
- package/dist/internal/default-strings.generated.d.ts +1 -0
- package/dist/internal/default-strings.generated.js +1 -1
- package/dist/internal/dev-mode-attribute-warning.d.ts +30 -0
- package/dist/internal/dev-mode-attribute-warning.js +1 -0
- package/dist/internal/localization-runtime.js +1 -1
- package/dist/internal/localization-types.d.ts +1 -1
- package/dist/internal/localization.js +1 -1
- package/dist/internal/lyra-element.d.ts +13 -0
- package/dist/internal/lyra-element.js +1 -1
- package/dist/internal/media-controller.js +1 -1
- package/dist/internal/package-metadata.d.ts +1 -1
- package/dist/internal/package-metadata.js +1 -1
- package/dist/internal/scroll-overflow.d.ts +35 -13
- package/dist/internal/scroll-overflow.js +1 -1
- package/dist/internal/sizes.styles.js +0 -2
- package/dist/internal/specialist-tokens.styles.js +6 -11
- package/dist/internal/text-highlights.d.ts +4 -1
- package/dist/internal/text-highlights.js +1 -1
- package/dist/internal/tokens/palette.styles.js +0 -15
- package/dist/internal/tokens.styles.js +19 -113
- package/dist/lyra.d.ts +8 -5
- package/dist/styles/reservations.css +82 -0
- package/dist/svelte.d.ts +56 -37
- package/dist/translations/ar.js +1 -1
- package/dist/translations/de.js +1 -1
- package/dist/translations/es.js +1 -1
- package/dist/translations/fa.js +1 -1
- package/dist/translations/fr.js +1 -1
- package/dist/translations/he.js +1 -1
- package/dist/translations/ja.js +1 -1
- package/dist/translations/pt-BR.js +1 -1
- package/dist/translations/ru.js +1 -1
- package/dist/translations/zh-CN.js +1 -1
- package/dist/vue.d.ts +56 -37
- package/llms/components/lr-accordion-item.md +12 -3
- package/llms/components/lr-accordion.md +11 -2
- package/llms/components/lr-agent-eval-dashboard.md +1 -1
- package/llms/components/lr-agent-trace.md +3 -1
- package/llms/components/lr-agent-workspace.md +20 -0
- package/llms/components/lr-artifact-panel.md +10 -4
- package/llms/components/lr-attachment-chip.md +7 -4
- package/llms/components/lr-attachment-trigger.md +9 -6
- package/llms/components/lr-av-player.md +3 -1
- package/llms/components/lr-avatar.md +6 -6
- package/llms/components/lr-bar-chart.md +4 -3
- package/llms/components/lr-box-plot.md +1 -1
- package/llms/components/lr-browser-frame.md +7 -3
- package/llms/components/lr-bubble-chart.md +4 -3
- package/llms/components/lr-calendar.md +9 -2
- package/llms/components/lr-card.md +24 -0
- package/llms/components/lr-chart.md +32 -8
- package/llms/components/lr-chat-viewport.md +7 -2
- package/llms/components/lr-checkbox-group.md +13 -5
- package/llms/components/lr-checkbox.md +5 -2
- package/llms/components/lr-checkpoint.md +6 -2
- package/llms/components/lr-combobox.md +5 -2
- package/llms/components/lr-command-palette.md +4 -1
- package/llms/components/lr-confirm-bar.md +7 -3
- package/llms/components/lr-context-meter.md +12 -11
- package/llms/components/lr-conversation-item.md +7 -4
- package/llms/components/lr-details.md +11 -2
- package/llms/components/lr-dialog.md +15 -10
- package/llms/components/lr-dock-panel.md +7 -10
- package/llms/components/lr-document-preview.md +6 -1
- package/llms/components/lr-document-viewer.md +3 -2
- package/llms/components/lr-doughnut-chart.md +4 -3
- package/llms/components/lr-drawer.md +3 -3
- package/llms/components/lr-entity-card.md +3 -3
- package/llms/components/lr-entity-chip.md +1 -1
- package/llms/components/lr-entity-dossier.md +4 -1
- package/llms/components/lr-file-input.md +2 -2
- package/llms/components/lr-flag.md +20 -5
- package/llms/components/lr-heatmap.md +29 -1
- package/llms/components/lr-histogram.md +3 -1
- package/llms/components/lr-icon.md +1 -1
- package/llms/components/lr-json-schema-viewer.md +2 -1
- package/llms/components/lr-knowledge-graph-explorer.md +8 -3
- package/llms/components/lr-known-date.md +4 -2
- package/llms/components/lr-line-chart.md +4 -3
- package/llms/components/lr-lite-chart.md +16 -6
- package/llms/components/lr-map.md +72 -8
- package/llms/components/lr-markdown-core.md +3 -2
- package/llms/components/lr-media-card.md +28 -12
- package/llms/components/lr-message-parts.md +2 -1
- package/llms/components/lr-model-select.md +9 -10
- package/llms/components/lr-model-settings-panel.md +9 -9
- package/llms/components/lr-neighbor-list.md +1 -1
- package/llms/components/lr-notebook-viewer.md +6 -3
- package/llms/components/lr-option.md +5 -2
- package/llms/components/lr-pdf-viewer.md +62 -2
- package/llms/components/lr-pie-chart.md +4 -3
- package/llms/components/lr-polar-area-chart.md +4 -3
- package/llms/components/lr-popover.md +5 -0
- package/llms/components/lr-progress-ring.md +8 -1
- package/llms/components/lr-prompt-studio.md +1 -1
- package/llms/components/lr-provenance-panel.md +4 -2
- package/llms/components/lr-qr-code.md +1 -1
- package/llms/components/lr-radar-chart.md +4 -3
- package/llms/components/lr-rag-eval-dashboard.md +2 -2
- package/llms/components/lr-random-content.md +13 -0
- package/llms/components/lr-reorder-item.md +6 -1
- package/llms/components/lr-reorder-list.md +6 -1
- package/llms/components/lr-responsive-panel.md +11 -7
- package/llms/components/lr-scatter-chart.md +4 -3
- package/llms/components/lr-sequence-strip.md +16 -2
- package/llms/components/lr-slider.md +12 -5
- package/llms/components/lr-sparkline.md +1 -1
- package/llms/components/lr-suggestion-chips.md +7 -2
- package/llms/components/lr-swatch-picker.md +5 -5
- package/llms/components/lr-switch.md +5 -2
- package/llms/components/lr-table.md +30 -4
- package/llms/components/lr-terminal.md +3 -1
- package/llms/components/lr-thread-list.md +8 -8
- package/llms/components/lr-time-input.md +6 -1
- package/llms/components/lr-timeline-item.md +24 -0
- package/llms/components/lr-timeline.md +25 -1
- package/llms/components/lr-token-input.md +7 -2
- package/llms/components/lr-tool-approval-dialog.md +7 -8
- package/llms/components/lr-tool-call-chip.md +5 -1
- package/llms/components/lr-tool-param-form.md +14 -12
- package/llms/components/lr-tool-result-dialog.md +11 -9
- package/llms/components/lr-tool-result-view.md +7 -6
- package/llms/components/lr-tool-select-dialog.md +18 -16
- package/llms/components/lr-trace-tree.md +3 -1
- package/llms/components/lr-usage-badge.md +4 -1
- package/llms/components/lr-video-playlist.md +1 -1
- package/llms/components/lr-virtual-list.md +22 -14
- package/llms/components/lr-voice-picker.md +8 -5
- package/llms/components/lr-widget-renderer.md +3 -3
- package/llms/components/lr-widget.md +1 -1
- package/llms/components/lr-word-cloud.md +6 -2
- package/llms/index.md +1 -1
- package/llms/peers.md +13 -3
- package/llms/shared.md +83 -2
- package/llms-full.txt +1159 -288
- package/package.json +19 -7
- package/vscode-css-data.json +37 -2
- package/vscode-html-data.json +402 -45
- package/web-types.json +300 -56
|
@@ -1,9 +1,6 @@
|
|
|
1
1
|
import{css}from"lit";const styles=css`
|
|
2
2
|
:host {
|
|
3
3
|
display: block;
|
|
4
|
-
/* Fullscreen scrim color -- component-specific so a host can retheme it
|
|
5
|
-
without a raw literal leaking into the public API (no shared
|
|
6
|
-
--lr-*-overlay token exists in the design system to resolve through). */
|
|
7
4
|
--_lr-widget-overlay-color: var(--lr-color-overlay);
|
|
8
5
|
--_lr-widget-fullscreen-inset: max(
|
|
9
6
|
var(--lr-space-l),
|
|
@@ -95,12 +92,10 @@ import{css}from"lit";const styles=css`
|
|
|
95
92
|
overflow-x: auto;
|
|
96
93
|
overflow-y: hidden;
|
|
97
94
|
}
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
[part="actions"][data-scroll-overflow],
|
|
103
|
-
[part="view-toggles"][data-scroll-overflow] {
|
|
95
|
+
[part="actions"][data-scroll-overflow]:where([data-scroll-start][data-scroll-end]),
|
|
96
|
+
[part="view-toggles"][data-scroll-overflow]:where(
|
|
97
|
+
[data-scroll-start][data-scroll-end]
|
|
98
|
+
) {
|
|
104
99
|
-webkit-mask-image: linear-gradient(
|
|
105
100
|
to right,
|
|
106
101
|
transparent,
|
|
@@ -116,16 +111,90 @@ import{css}from"lit";const styles=css`
|
|
|
116
111
|
transparent
|
|
117
112
|
);
|
|
118
113
|
}
|
|
114
|
+
[part="actions"][data-scroll-overflow]:where(
|
|
115
|
+
[data-scroll-end]:not([data-scroll-start])
|
|
116
|
+
),
|
|
117
|
+
[part="view-toggles"][data-scroll-overflow]:where(
|
|
118
|
+
[data-scroll-end]:not([data-scroll-start])
|
|
119
|
+
) {
|
|
120
|
+
-webkit-mask-image: linear-gradient(
|
|
121
|
+
to right,
|
|
122
|
+
var(--lr-mask-opaque),
|
|
123
|
+
var(--lr-mask-opaque) calc(100% - var(--lr-scroll-fade-size)),
|
|
124
|
+
transparent
|
|
125
|
+
);
|
|
126
|
+
mask-image: linear-gradient(
|
|
127
|
+
to right,
|
|
128
|
+
var(--lr-mask-opaque),
|
|
129
|
+
var(--lr-mask-opaque) calc(100% - var(--lr-scroll-fade-size)),
|
|
130
|
+
transparent
|
|
131
|
+
);
|
|
132
|
+
}
|
|
133
|
+
[part="actions"][data-scroll-overflow]:where(
|
|
134
|
+
[data-scroll-start]:not([data-scroll-end])
|
|
135
|
+
),
|
|
136
|
+
[part="view-toggles"][data-scroll-overflow]:where(
|
|
137
|
+
[data-scroll-start]:not([data-scroll-end])
|
|
138
|
+
) {
|
|
139
|
+
-webkit-mask-image: linear-gradient(
|
|
140
|
+
to right,
|
|
141
|
+
transparent,
|
|
142
|
+
var(--lr-mask-opaque) var(--lr-scroll-fade-size),
|
|
143
|
+
var(--lr-mask-opaque)
|
|
144
|
+
);
|
|
145
|
+
mask-image: linear-gradient(
|
|
146
|
+
to right,
|
|
147
|
+
transparent,
|
|
148
|
+
var(--lr-mask-opaque) var(--lr-scroll-fade-size),
|
|
149
|
+
var(--lr-mask-opaque)
|
|
150
|
+
);
|
|
151
|
+
}
|
|
152
|
+
:host(:dir(rtl))
|
|
153
|
+
[part="actions"][data-scroll-overflow]:where(
|
|
154
|
+
[data-scroll-end]:not([data-scroll-start])
|
|
155
|
+
),
|
|
156
|
+
:host(:dir(rtl))
|
|
157
|
+
[part="view-toggles"][data-scroll-overflow]:where(
|
|
158
|
+
[data-scroll-end]:not([data-scroll-start])
|
|
159
|
+
) {
|
|
160
|
+
-webkit-mask-image: linear-gradient(
|
|
161
|
+
to right,
|
|
162
|
+
transparent,
|
|
163
|
+
var(--lr-mask-opaque) var(--lr-scroll-fade-size),
|
|
164
|
+
var(--lr-mask-opaque)
|
|
165
|
+
);
|
|
166
|
+
mask-image: linear-gradient(
|
|
167
|
+
to right,
|
|
168
|
+
transparent,
|
|
169
|
+
var(--lr-mask-opaque) var(--lr-scroll-fade-size),
|
|
170
|
+
var(--lr-mask-opaque)
|
|
171
|
+
);
|
|
172
|
+
}
|
|
173
|
+
:host(:dir(rtl))
|
|
174
|
+
[part="actions"][data-scroll-overflow]:where(
|
|
175
|
+
[data-scroll-start]:not([data-scroll-end])
|
|
176
|
+
),
|
|
177
|
+
:host(:dir(rtl))
|
|
178
|
+
[part="view-toggles"][data-scroll-overflow]:where(
|
|
179
|
+
[data-scroll-start]:not([data-scroll-end])
|
|
180
|
+
) {
|
|
181
|
+
-webkit-mask-image: linear-gradient(
|
|
182
|
+
to right,
|
|
183
|
+
var(--lr-mask-opaque),
|
|
184
|
+
var(--lr-mask-opaque) calc(100% - var(--lr-scroll-fade-size)),
|
|
185
|
+
transparent
|
|
186
|
+
);
|
|
187
|
+
mask-image: linear-gradient(
|
|
188
|
+
to right,
|
|
189
|
+
var(--lr-mask-opaque),
|
|
190
|
+
var(--lr-mask-opaque) calc(100% - var(--lr-scroll-fade-size)),
|
|
191
|
+
transparent
|
|
192
|
+
);
|
|
193
|
+
}
|
|
119
194
|
[part="view-toggle"] {
|
|
120
195
|
display: inline-flex;
|
|
121
196
|
flex: 0 1 auto;
|
|
122
197
|
align-items: center;
|
|
123
|
-
/* Both axes, matching collapse-button/fullscreen-button. Cross-axis centering alone left an
|
|
124
|
-
icon-only toggle visibly off-center: min-inline-size floors the pill at the square
|
|
125
|
-
icon-button size, so a 13px glyph inside a 40px pill has ~11px of slack that the default
|
|
126
|
-
justify-content (normal => flex-start) dumps entirely on the trailing side -- 4.5px off
|
|
127
|
-
true center once the asymmetric inline padding is counted. A labeled toggle is unaffected
|
|
128
|
-
(its content already fills the pill, which sizes to fit). */
|
|
129
198
|
justify-content: center;
|
|
130
199
|
min-inline-size: var(--lr-icon-button-size);
|
|
131
200
|
min-block-size: var(--lr-icon-button-size);
|
|
@@ -150,12 +219,6 @@ import{css}from"lit";const styles=css`
|
|
|
150
219
|
text-overflow: ellipsis;
|
|
151
220
|
white-space: nowrap;
|
|
152
221
|
}
|
|
153
|
-
/* :where() zeroes the wrapped selector's specificity contribution, leaving only :hover itself,
|
|
154
|
-
mirroring lr-pagination's/lr-table's low-specificity rule for this exact selector shape --
|
|
155
|
-
a consumer's own ::part(view-toggle):hover can win without !important. Colors route through
|
|
156
|
-
scoped --lr-widget-view-toggle-hover-*, mirroring the [aria-pressed='true'] rule below, so a
|
|
157
|
-
consumer can retint just the hover state without hijacking the shared brand-quiet/text tokens
|
|
158
|
-
used everywhere else. */
|
|
159
222
|
:where([part="view-toggle"]):hover {
|
|
160
223
|
background: var(
|
|
161
224
|
--lr-widget-view-toggle-hover-bg,
|
|
@@ -163,10 +226,6 @@ import{css}from"lit";const styles=css`
|
|
|
163
226
|
);
|
|
164
227
|
color: var(--lr-widget-view-toggle-hover-color, var(--lr-color-text));
|
|
165
228
|
}
|
|
166
|
-
/* Whatever fill hover resolved to -- including a consumer's own
|
|
167
|
-
--lr-widget-view-toggle-hover-bg -- mixed further toward --lr-color-mix-partner, so a retinted
|
|
168
|
-
hover keeps a pressed step that is deeper than it rather than one pinned to the stock token.
|
|
169
|
-
Same zeroed specificity as the hover rule above, for the same reason. */
|
|
170
229
|
:where([part="view-toggle"]):active {
|
|
171
230
|
background: color-mix(
|
|
172
231
|
in oklab,
|
|
@@ -175,12 +234,6 @@ import{css}from"lit";const styles=css`
|
|
|
175
234
|
);
|
|
176
235
|
color: var(--lr-widget-view-toggle-hover-color, var(--lr-color-text));
|
|
177
236
|
}
|
|
178
|
-
/* Inline var() fallbacks rather than :host-declared properties, so a consumer can set them on any
|
|
179
|
-
ancestor without a :host declaration shadowing that. ::part(view-toggle)[aria-pressed='true'] is
|
|
180
|
-
invalid CSS (an attribute selector cannot follow ::part), so recoloring the pressed toggle used
|
|
181
|
-
to require hijacking the shared --lr-color-brand-quiet/--lr-color-brand tokens, repainting
|
|
182
|
-
everything else that reads them. Unset, each falls back to the token the rule used before, so
|
|
183
|
-
the rendering is unchanged. */
|
|
184
237
|
[part="view-toggle"][aria-pressed="true"] {
|
|
185
238
|
background: var(
|
|
186
239
|
--lr-widget-view-toggle-active-bg,
|
|
@@ -189,6 +242,14 @@ import{css}from"lit";const styles=css`
|
|
|
189
242
|
color: var(--lr-widget-view-toggle-active-color, var(--lr-color-brand));
|
|
190
243
|
border-color: var(--lr-widget-view-toggle-active-border-color, transparent);
|
|
191
244
|
}
|
|
245
|
+
[part="view-toggle"][aria-pressed="true"]:active {
|
|
246
|
+
background: color-mix(
|
|
247
|
+
in oklab,
|
|
248
|
+
var(--lr-widget-view-toggle-active-bg, var(--lr-color-brand-quiet)),
|
|
249
|
+
var(--lr-color-mix-partner) var(--lr-color-mix-active)
|
|
250
|
+
);
|
|
251
|
+
color: var(--lr-widget-view-toggle-active-color, var(--lr-color-brand));
|
|
252
|
+
}
|
|
192
253
|
[part="view-toggle"]:focus-visible {
|
|
193
254
|
outline: var(--lr-focus-ring-width) solid var(--lr-focus-ring-color);
|
|
194
255
|
outline-offset: var(--lr-focus-ring-offset);
|
|
@@ -226,15 +287,9 @@ import{css}from"lit";const styles=css`
|
|
|
226
287
|
outline: var(--lr-focus-ring-width) solid var(--lr-focus-ring-color);
|
|
227
288
|
outline-offset: var(--lr-focus-ring-offset);
|
|
228
289
|
}
|
|
229
|
-
/* Chevron points at the content: rotated (pointing down) while expanded, resting (pointing right)
|
|
230
|
-
while collapsed -- same convention as lr-code-block's/lr-json-viewer's own toggles. */
|
|
231
290
|
:host(:not([collapsed])) [part="collapse-button"] {
|
|
232
291
|
transform: rotate(90deg);
|
|
233
292
|
}
|
|
234
|
-
/* RTL: the resting (collapsed) chevron mirrors to point left -- the conventional mirrored
|
|
235
|
-
disclosure-triangle direction for RTL. Scoped to [collapsed] specifically (rather than a plain
|
|
236
|
-
:dir(rtl) rule) so it never competes with the rule above for the expanded state, which needs no
|
|
237
|
-
mirroring: rotating this left-right-asymmetric glyph 90deg already produces a symmetric chevron. */
|
|
238
293
|
:host([collapsed]:dir(rtl)) [part="collapse-button"] {
|
|
239
294
|
transform: scaleX(-1);
|
|
240
295
|
}
|
|
@@ -260,8 +315,6 @@ import{css}from"lit";const styles=css`
|
|
|
260
315
|
var(--_lr-widget-fullscreen-inset, 0)
|
|
261
316
|
);
|
|
262
317
|
z-index: calc(var(--lr-overlay-stack-index, var(--lr-layer-modal)) + 1);
|
|
263
|
-
/* Top of the scale: fullscreen is a modal layer sitting above [part="backdrop"], and it is the
|
|
264
|
-
only state in which this widget stops being resting chrome. */
|
|
265
318
|
box-shadow: var(--lr-shadow-xl);
|
|
266
319
|
}
|
|
267
320
|
:host([fullscreen]) [part="body"] {
|
|
@@ -282,7 +335,11 @@ import{css}from"lit";const styles=css`
|
|
|
282
335
|
}
|
|
283
336
|
@media (forced-colors: active) {
|
|
284
337
|
[part="actions"],
|
|
285
|
-
[part="view-toggles"]
|
|
338
|
+
[part="view-toggles"],
|
|
339
|
+
[part="actions"][data-scroll-overflow],
|
|
340
|
+
[part="view-toggles"][data-scroll-overflow],
|
|
341
|
+
:host(:dir(rtl)) [part="actions"][data-scroll-overflow],
|
|
342
|
+
:host(:dir(rtl)) [part="view-toggles"][data-scroll-overflow] {
|
|
286
343
|
-webkit-mask-image: none;
|
|
287
344
|
mask-image: none;
|
|
288
345
|
}
|
|
@@ -81,6 +81,9 @@ export interface LyraAnimatedImageEventMap {
|
|
|
81
81
|
* @since 4.0.0
|
|
82
82
|
*/
|
|
83
83
|
export declare class LyraAnimatedImage extends LyraElement<LyraAnimatedImageEventMap> {
|
|
84
|
+
/** `playing` is the read-only live playback state this component reflects itself; `play` is
|
|
85
|
+
* the settable request. Authoring `playing` means nothing, so it is not observed. */
|
|
86
|
+
protected static readonly knownUnobservedAttributes: readonly string[];
|
|
84
87
|
static styles: import("lit").CSSResultGroup[];
|
|
85
88
|
/** The path to the image to load. Always re-validated against a
|
|
86
89
|
* safe-scheme allowlist before use -- see the class doc. */
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
var __decorate=function(decorators,target,key,desc){var c=arguments.length,r=c<3?target:desc===null?desc=Object.getOwnPropertyDescriptor(target,key):desc,d;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")r=Reflect.decorate(decorators,target,key,desc);else for(var i=decorators.length-1;i>=0;i--)(d=decorators[i])&&(r=(c<3?d(r):c>3?d(target,key,r):d(target,key))||r);return c>3&&r&&Object.defineProperty(target,key,r),r};import{html,nothing}from"lit";import{property,query,state}from"lit/decorators.js";import{LyraElement}from"../../../internal/lyra-element.js";import{playIcon,pauseIcon}from"../../../internal/icons.js";import{safeMediaSrc}from"../../../internal/safe-url.js";import{prefersReducedMotion}from"../../../internal/motion.js";import{relayNativeEvent}from"../../../internal/native-event-relay.js";import{styles}from"./animated-image.styles.js";import{trueDefaultBooleanConverter}from"../../../internal/converters.js";import{resolveBoundedCanvasAllocation}from"../../../internal/canvas.js";import{hostAriaLabel}from"../../../internal/a11y.js";import{LYRA_DEFAULT_animatedImageDefaultAlt,LYRA_DEFAULT_pauseWithContext,LYRA_DEFAULT_playWithContext}from"../../../internal/default-strings.generated.js";const MAX_FROZEN_FRAME_DIMENSION=8192,MAX_FROZEN_FRAME_PIXELS=16777216;class LyraAnimatedImage extends LyraElement{constructor(){super(...arguments),this.src="",this.play=!1,this.respectReducedMotion=!0,this.accessibleLabel="",this.hasLoaded=!1,this.hasError=!1,this._playing=!1,this.connectionEventBaselinePending=!0,this.onMotionPreferenceChange=()=>{this.requestUpdate()},this.onImageLoad=event=>{if(!this.isConnected||event.currentTarget!==this.imageEl)return;this.hasError=!1,this.hasLoaded=!0;const img=this.imageEl,canvas=this.canvasEl;if(img&&canvas){const width=img.naturalWidth,height=img.naturalHeight,dpr=this.ownerWindow?.devicePixelRatio||1,allocation=resolveBoundedCanvasAllocation({cssWidth:width,cssHeight:height,desiredScale:dpr,maxDimension:MAX_FROZEN_FRAME_DIMENSION,maxPixels:MAX_FROZEN_FRAME_PIXELS});canvas.width=allocation.pixelWidth,canvas.height=allocation.pixelHeight;const ctx=canvas.getContext("2d");ctx&&(ctx.scale(allocation.scaleX,allocation.scaleY),ctx.drawImage(img,0,0,width,height))}this.emit("lr-load",null)},this.onImageError=event=>{!this.isConnected||event.currentTarget!==this.imageEl||(this.hasLoaded=!1,this.hasError=!0,this.emit("lr-error",null))},this.onToggleClick=()=>{this.play=!this.play},this.onControlFocus=event=>{relayNativeEvent(this,event)},this.onControlBlur=event=>{relayNativeEvent(this,event)}}static{this.defaultStrings={...super.defaultStrings,animatedImageDefaultAlt:LYRA_DEFAULT_animatedImageDefaultAlt,pauseWithContext:LYRA_DEFAULT_pauseWithContext,playWithContext:LYRA_DEFAULT_playWithContext}}static{this.styles=[LyraElement.styles,styles]}get ownerWindow(){return this.ownerDocument?.defaultView??null}get playing(){return this._playing}connectedCallback(){super.connectedCallback(),this.connectionEventBaselinePending=!0,this.mediaQuery=this.ownerWindow?.matchMedia?.("(prefers-reduced-motion: reduce)"),this.mediaQuery?.addEventListener("change",this.onMotionPreferenceChange),this.requestUpdate()}disconnectedCallback(){this.connectionEventBaselinePending=!0,this.mediaQuery?.removeEventListener("change",this.onMotionPreferenceChange),this.mediaQuery=void 0,super.disconnectedCallback()}willUpdate(changed){super.willUpdate(changed);const mayEmitConnectionTransition=this.isConnected&&!this.connectionEventBaselinePending;changed.has("src")&&(this.hasLoaded=!1,this.hasError=!1,this.src.trim()!==""&&safeMediaSrc(this.src)===null&&(this.hasError=!0,mayEmitConnectionTransition&&this.emit("lr-error",null)));const nextPlaying=this.play&&!(this.respectReducedMotion&&prefersReducedMotion(this.ownerWindow));nextPlaying!==this._playing&&(this._playing=nextPlaying,this.toggleAttribute("playing",nextPlaying),mayEmitConnectionTransition&&this.emit(nextPlaying?"lr-play":"lr-pause",null)),this.toggleAttribute("data-loaded",this.hasLoaded)}updated(changed){super.updated(changed),this.isConnected&&(this.connectionEventBaselinePending=!1)}get effectiveAlt(){return this.alt??""}get toggleLabel(){const authoredLabel=hostAriaLabel(this);if(authoredLabel!==null)return authoredLabel;if(this.accessibleLabel)return this.accessibleLabel;const name=this.effectiveAlt||this.localize("animatedImageDefaultAlt");return this.playing?this.localize("pauseWithContext",void 0,{name}):this.localize("playWithContext",void 0,{name})}focus(options){this.playButtonEl?.focus(options)}blur(){this.playButtonEl?.blur()}click(){this.playButtonEl?.click()}render(){const src=safeMediaSrc(this.src),alt=this.effectiveAlt,frozen=this.hasLoaded&&!this.playing,showControls=this.hasLoaded&&!this.hasError,disabled=this.respectReducedMotion&&prefersReducedMotion(this.ownerWindow);return html`
|
|
1
|
+
var __decorate=function(decorators,target,key,desc){var c=arguments.length,r=c<3?target:desc===null?desc=Object.getOwnPropertyDescriptor(target,key):desc,d;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")r=Reflect.decorate(decorators,target,key,desc);else for(var i=decorators.length-1;i>=0;i--)(d=decorators[i])&&(r=(c<3?d(r):c>3?d(target,key,r):d(target,key))||r);return c>3&&r&&Object.defineProperty(target,key,r),r};import{html,nothing}from"lit";import{property,query,state}from"lit/decorators.js";import{LyraElement}from"../../../internal/lyra-element.js";import{playIcon,pauseIcon}from"../../../internal/icons.js";import{safeMediaSrc}from"../../../internal/safe-url.js";import{prefersReducedMotion}from"../../../internal/motion.js";import{relayNativeEvent}from"../../../internal/native-event-relay.js";import{styles}from"./animated-image.styles.js";import{trueDefaultBooleanConverter}from"../../../internal/converters.js";import{resolveBoundedCanvasAllocation}from"../../../internal/canvas.js";import{hostAriaLabel}from"../../../internal/a11y.js";import{LYRA_DEFAULT_animatedImageDefaultAlt,LYRA_DEFAULT_pauseWithContext,LYRA_DEFAULT_playWithContext}from"../../../internal/default-strings.generated.js";const MAX_FROZEN_FRAME_DIMENSION=8192,MAX_FROZEN_FRAME_PIXELS=16777216;class LyraAnimatedImage extends LyraElement{constructor(){super(...arguments),this.src="",this.play=!1,this.respectReducedMotion=!0,this.accessibleLabel="",this.hasLoaded=!1,this.hasError=!1,this._playing=!1,this.connectionEventBaselinePending=!0,this.onMotionPreferenceChange=()=>{this.requestUpdate()},this.onImageLoad=event=>{if(!this.isConnected||event.currentTarget!==this.imageEl)return;this.hasError=!1,this.hasLoaded=!0;const img=this.imageEl,canvas=this.canvasEl;if(img&&canvas){const width=img.naturalWidth,height=img.naturalHeight,dpr=this.ownerWindow?.devicePixelRatio||1,allocation=resolveBoundedCanvasAllocation({cssWidth:width,cssHeight:height,desiredScale:dpr,maxDimension:MAX_FROZEN_FRAME_DIMENSION,maxPixels:MAX_FROZEN_FRAME_PIXELS});canvas.width=allocation.pixelWidth,canvas.height=allocation.pixelHeight;const ctx=canvas.getContext("2d");ctx&&(ctx.scale(allocation.scaleX,allocation.scaleY),ctx.drawImage(img,0,0,width,height))}this.emit("lr-load",null)},this.onImageError=event=>{!this.isConnected||event.currentTarget!==this.imageEl||(this.hasLoaded=!1,this.hasError=!0,this.emit("lr-error",null))},this.onToggleClick=()=>{this.play=!this.play},this.onControlFocus=event=>{relayNativeEvent(this,event)},this.onControlBlur=event=>{relayNativeEvent(this,event)}}static{this.defaultStrings={...super.defaultStrings,animatedImageDefaultAlt:LYRA_DEFAULT_animatedImageDefaultAlt,pauseWithContext:LYRA_DEFAULT_pauseWithContext,playWithContext:LYRA_DEFAULT_playWithContext}}static{this.knownUnobservedAttributes=["playing"]}static{this.styles=[LyraElement.styles,styles]}get ownerWindow(){return this.ownerDocument?.defaultView??null}get playing(){return this._playing}connectedCallback(){super.connectedCallback(),this.connectionEventBaselinePending=!0,this.mediaQuery=this.ownerWindow?.matchMedia?.("(prefers-reduced-motion: reduce)"),this.mediaQuery?.addEventListener("change",this.onMotionPreferenceChange),this.requestUpdate()}disconnectedCallback(){this.connectionEventBaselinePending=!0,this.mediaQuery?.removeEventListener("change",this.onMotionPreferenceChange),this.mediaQuery=void 0,super.disconnectedCallback()}willUpdate(changed){super.willUpdate(changed);const mayEmitConnectionTransition=this.isConnected&&!this.connectionEventBaselinePending;changed.has("src")&&(this.hasLoaded=!1,this.hasError=!1,this.src.trim()!==""&&safeMediaSrc(this.src)===null&&(this.hasError=!0,mayEmitConnectionTransition&&this.emit("lr-error",null)));const nextPlaying=this.play&&!(this.respectReducedMotion&&prefersReducedMotion(this.ownerWindow));nextPlaying!==this._playing&&(this._playing=nextPlaying,this.toggleAttribute("playing",nextPlaying),mayEmitConnectionTransition&&this.emit(nextPlaying?"lr-play":"lr-pause",null)),this.toggleAttribute("data-loaded",this.hasLoaded)}updated(changed){super.updated(changed),this.isConnected&&(this.connectionEventBaselinePending=!1)}get effectiveAlt(){return this.alt??""}get toggleLabel(){const authoredLabel=hostAriaLabel(this);if(authoredLabel!==null)return authoredLabel;if(this.accessibleLabel)return this.accessibleLabel;const name=this.effectiveAlt||this.localize("animatedImageDefaultAlt");return this.playing?this.localize("pauseWithContext",void 0,{name}):this.localize("playWithContext",void 0,{name})}focus(options){this.playButtonEl?.focus(options)}blur(){this.playButtonEl?.blur()}click(){this.playButtonEl?.click()}render(){const src=safeMediaSrc(this.src),alt=this.effectiveAlt,frozen=this.hasLoaded&&!this.playing,showControls=this.hasLoaded&&!this.hasError,disabled=this.respectReducedMotion&&prefersReducedMotion(this.ownerWindow);return html`
|
|
2
2
|
<div part="base">
|
|
3
3
|
<img
|
|
4
4
|
part="image"
|
|
@@ -2,11 +2,6 @@ import{css}from"lit";const styles=css`
|
|
|
2
2
|
:host {
|
|
3
3
|
display: inline-block;
|
|
4
4
|
max-inline-size: 100%;
|
|
5
|
-
/* Mirrors wa-animated-image/sl-animated-image's --control-box-size and
|
|
6
|
-
--icon-size (component-prefixed per this library's own convention) --
|
|
7
|
-
both chain through the existing icon-button-size token rather than a
|
|
8
|
-
new bespoke literal, so the toggle reads at the same scale as
|
|
9
|
-
lr-sequence-playback's own play/pause button. */
|
|
10
5
|
--_lr-animated-image-control-box-size: var(
|
|
11
6
|
--control-box-size,
|
|
12
7
|
var(--lr-icon-button-size)
|
|
@@ -15,9 +10,6 @@ import{css}from"lit";const styles=css`
|
|
|
15
10
|
--icon-size,
|
|
16
11
|
calc(var(--lr-icon-button-size) * 0.35)
|
|
17
12
|
);
|
|
18
|
-
/* Same purpose/default as --lr-media-card-max-height -- caps the
|
|
19
|
-
rendered media's block-size so one oversized animated image can't blow
|
|
20
|
-
out a layout. */
|
|
21
13
|
--_lr-animated-image-max-height: var(--lr-size-20rem);
|
|
22
14
|
}
|
|
23
15
|
|
|
@@ -27,8 +19,6 @@ import{css}from"lit";const styles=css`
|
|
|
27
19
|
max-inline-size: 100%;
|
|
28
20
|
}
|
|
29
21
|
|
|
30
|
-
/* image/canvas overlap in the same grid cell so the crossfade below is a
|
|
31
|
-
pure opacity swap with no layout shift. */
|
|
32
22
|
[part="image"],
|
|
33
23
|
[part="canvas"] {
|
|
34
24
|
grid-area: 1 / 1;
|
|
@@ -50,13 +40,6 @@ import{css}from"lit";const styles=css`
|
|
|
50
40
|
pointer-events: none;
|
|
51
41
|
transition: opacity var(--lr-transition-fast);
|
|
52
42
|
}
|
|
53
|
-
/* [data-loaded] is a private, JS-driven hook (not part of the public
|
|
54
|
-
contract -- same pattern as this library's existing [data-invalid]
|
|
55
|
-
hooks) that keeps the live <img> visible while still loading or after a
|
|
56
|
-
decode failure, so the browser's own loading/broken-image affordance is
|
|
57
|
-
never hidden behind an undrawn canvas. Only once a frame has actually
|
|
58
|
-
been captured does the reflected [playing] host attribute get to decide
|
|
59
|
-
which of the two is shown. */
|
|
60
43
|
:host([data-loaded]:not([playing])) [part="image"] {
|
|
61
44
|
opacity: 0;
|
|
62
45
|
pointer-events: none;
|
|
@@ -109,16 +92,9 @@ import{css}from"lit";const styles=css`
|
|
|
109
92
|
-webkit-tap-highlight-color: transparent;
|
|
110
93
|
transition: background-color var(--lr-transition-fast);
|
|
111
94
|
}
|
|
112
|
-
/* Keep internal state qualifiers low-specificity so sibling rules in this sheet remain easy to
|
|
113
|
-
compose. Consumer ::part() authority follows the shadow cascade, independently of this
|
|
114
|
-
selector's specificity. */
|
|
115
95
|
:where([part="play-button"]):hover:where(:not(:disabled)) {
|
|
116
96
|
background: color-mix(in srgb, var(--lr-color-surface) 100%, transparent);
|
|
117
97
|
}
|
|
118
|
-
/* Pressed goes one step past hover: hover only finishes opacifying the translucent scrim, so on
|
|
119
|
-
its own it cannot register a click at all once the button is already fully opaque. Mixing the
|
|
120
|
-
opaque surface toward --lr-color-mix-partner moves in whichever direction the theme's own
|
|
121
|
-
surface needs. */
|
|
122
98
|
:where([part="play-button"]):active:where(:not(:disabled)) {
|
|
123
99
|
background: color-mix(
|
|
124
100
|
in oklab,
|
|
@@ -153,10 +129,6 @@ import{css}from"lit";const styles=css`
|
|
|
153
129
|
line-height: var(--lr-line-height-none);
|
|
154
130
|
pointer-events: none;
|
|
155
131
|
}
|
|
156
|
-
/* Both play-icon/pause-icon slots render persistently (see the class doc)
|
|
157
|
-
and are toggled via the native hidden attribute; a plain .icon display
|
|
158
|
-
rule at equal specificity is not guaranteed to lose to the UA [hidden]
|
|
159
|
-
rule, so the override is pinned explicitly here. */
|
|
160
132
|
.icon[hidden] {
|
|
161
133
|
display: none;
|
|
162
134
|
}
|
|
@@ -55,7 +55,7 @@ export interface LyraAttachmentChipEventMap {
|
|
|
55
55
|
* @customElement lr-attachment-chip
|
|
56
56
|
* @event lr-remove - The user activated the remove (×) button. `detail: { attachmentId }`. Only rendered while `removable`.
|
|
57
57
|
* @event lr-retry - The user activated the retry button. `detail: { attachmentId }`. Only rendered while `status="error"`.
|
|
58
|
-
* @event lr-preview-request -
|
|
58
|
+
* @event lr-preview-request - Notification that the preview action was activated. `detail: { attachmentId, name, mimeType, src }`. Not cancelable: the chip never registers or owns a viewer/overlay, so there is nothing local to gate behind `.preventDefault()`; consumers compose the desired preview surface entirely on their own.
|
|
59
59
|
* @csspart base - The chip's root container.
|
|
60
60
|
* @csspart thumbnail - The leading image thumbnail / generic file glyph.
|
|
61
61
|
* @csspart meta - Wrapper around the filename and the formatted file size.
|
|
@@ -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}from"lit/decorators.js";import{LyraElement}from"../../../internal/lyra-element.js";import{nextId}from"../../../internal/a11y.js";import{acquireAnnouncementSink}from"../../../internal/announcer.js";import{closeIcon,expandIcon,fileIcon}from"../../../internal/icons.js";import{finiteRange}from"../../../internal/numbers.js";import{safeMediaSrc}from"../../../internal/safe-url.js";import{styles}from"./attachment-chip.styles.js";import{trueDefaultBooleanConverter}from"../../../internal/converters.js";import{getNumberFormat}from"../../../internal/intl-cache.js";import{FILE_SIZE_UNIT_KEYS,formatFileSize}from"./file-size.js";import{LYRA_DEFAULT_attachmentPreviewFile,LYRA_DEFAULT_attachmentPreviewName,LYRA_DEFAULT_attachmentRetryWithContext,LYRA_DEFAULT_attachmentUntitledFile,LYRA_DEFAULT_attachmentUploadFailed,LYRA_DEFAULT_attachmentUploadingIndeterminate,LYRA_DEFAULT_attachmentUploadingProgress,LYRA_DEFAULT_attachmentUploadingWithContext,LYRA_DEFAULT_collapse,LYRA_DEFAULT_details,LYRA_DEFAULT_fileSizeUnitB,LYRA_DEFAULT_fileSizeUnitGb,LYRA_DEFAULT_fileSizeUnitKb,LYRA_DEFAULT_fileSizeUnitMb,LYRA_DEFAULT_fileSizeUnitTb,LYRA_DEFAULT_map,LYRA_DEFAULT_navigation,LYRA_DEFAULT_open,LYRA_DEFAULT_progress,LYRA_DEFAULT_removeWithContext,LYRA_DEFAULT_search,LYRA_DEFAULT_select}from"../../../internal/default-strings.generated.js";import{FILE_SIZE_UNIT_KEYS as FILE_SIZE_UNIT_KEYS2,formatFileSize as formatFileSize2}from"./file-size.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}from"lit/decorators.js";import{LyraElement}from"../../../internal/lyra-element.js";import{nextId}from"../../../internal/a11y.js";import{acquireAnnouncementSink}from"../../../internal/announcer.js";import{closeIcon,expandIcon,fileIcon}from"../../../internal/icons.js";import{finiteRange}from"../../../internal/numbers.js";import{safeMediaSrc}from"../../../internal/safe-url.js";import{styles}from"./attachment-chip.styles.js";import{trueDefaultBooleanConverter}from"../../../internal/converters.js";import{getNumberFormat}from"../../../internal/intl-cache.js";import{FILE_SIZE_UNIT_KEYS,formatFileSize}from"./file-size.js";import{LYRA_DEFAULT_attachmentPreviewFile,LYRA_DEFAULT_attachmentPreviewName,LYRA_DEFAULT_attachmentRetryWithContext,LYRA_DEFAULT_attachmentUntitledFile,LYRA_DEFAULT_attachmentUploadFailed,LYRA_DEFAULT_attachmentUploadingIndeterminate,LYRA_DEFAULT_attachmentUploadingProgress,LYRA_DEFAULT_attachmentUploadingWithContext,LYRA_DEFAULT_collapse,LYRA_DEFAULT_details,LYRA_DEFAULT_fileSizeUnitB,LYRA_DEFAULT_fileSizeUnitGb,LYRA_DEFAULT_fileSizeUnitKb,LYRA_DEFAULT_fileSizeUnitMb,LYRA_DEFAULT_fileSizeUnitTb,LYRA_DEFAULT_map,LYRA_DEFAULT_navigation,LYRA_DEFAULT_open,LYRA_DEFAULT_popover,LYRA_DEFAULT_progress,LYRA_DEFAULT_removeWithContext,LYRA_DEFAULT_search,LYRA_DEFAULT_select}from"../../../internal/default-strings.generated.js";import{FILE_SIZE_UNIT_KEYS as FILE_SIZE_UNIT_KEYS2,formatFileSize as formatFileSize2}from"./file-size.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 statusText(status,uploadingText,uploadFailedLabel){return status==="error"?uploadFailedLabel:status==="uploading"?uploadingText:""}class LyraAttachmentChip extends LyraElement{constructor(){super(...arguments),this.name="",this.attachmentId="",this.mimeType="",this.thumbnailSrc="",this.previewSrc="",this.previewable=!0,this.status="pending",this.progress=0,this.removable=!0,this.compact=!1,this.thumbnailOnly=!1,this.fallbackId=nextId("attachment-chip"),this.onRemoveClick=()=>{this.emit("lr-remove",{attachmentId:this.resolvedId})},this.onRetryClick=()=>{this.emit("lr-retry",{attachmentId:this.resolvedId})},this.onPreviewClick=()=>{this.effectivePreviewSrc&&this.emit("lr-preview-request",{attachmentId:this.resolvedId,name:this.effectiveName,mimeType:this.effectiveMimeType,src:this.effectivePreviewSrc}
|
|
14
|
+
`}function statusText(status,uploadingText,uploadFailedLabel){return status==="error"?uploadFailedLabel:status==="uploading"?uploadingText:""}class LyraAttachmentChip extends LyraElement{constructor(){super(...arguments),this.name="",this.attachmentId="",this.mimeType="",this.thumbnailSrc="",this.previewSrc="",this.previewable=!0,this.status="pending",this.progress=0,this.removable=!0,this.compact=!1,this.thumbnailOnly=!1,this.fallbackId=nextId("attachment-chip"),this.onRemoveClick=()=>{this.emit("lr-remove",{attachmentId:this.resolvedId})},this.onRetryClick=()=>{this.emit("lr-retry",{attachmentId:this.resolvedId})},this.onPreviewClick=()=>{this.effectivePreviewSrc&&this.emit("lr-preview-request",{attachmentId:this.resolvedId,name:this.effectiveName,mimeType:this.effectiveMimeType,src:this.effectivePreviewSrc})}}static{this.defaultStrings={...super.defaultStrings,attachmentPreviewFile:LYRA_DEFAULT_attachmentPreviewFile,attachmentPreviewName:LYRA_DEFAULT_attachmentPreviewName,attachmentRetryWithContext:LYRA_DEFAULT_attachmentRetryWithContext,attachmentUntitledFile:LYRA_DEFAULT_attachmentUntitledFile,attachmentUploadFailed:LYRA_DEFAULT_attachmentUploadFailed,attachmentUploadingIndeterminate:LYRA_DEFAULT_attachmentUploadingIndeterminate,attachmentUploadingProgress:LYRA_DEFAULT_attachmentUploadingProgress,attachmentUploadingWithContext:LYRA_DEFAULT_attachmentUploadingWithContext,collapse:LYRA_DEFAULT_collapse,details:LYRA_DEFAULT_details,fileSizeUnitB:LYRA_DEFAULT_fileSizeUnitB,fileSizeUnitGb:LYRA_DEFAULT_fileSizeUnitGb,fileSizeUnitKb:LYRA_DEFAULT_fileSizeUnitKb,fileSizeUnitMb:LYRA_DEFAULT_fileSizeUnitMb,fileSizeUnitTb:LYRA_DEFAULT_fileSizeUnitTb,map:LYRA_DEFAULT_map,navigation:LYRA_DEFAULT_navigation,open:LYRA_DEFAULT_open,popover:LYRA_DEFAULT_popover,progress:LYRA_DEFAULT_progress,removeWithContext:LYRA_DEFAULT_removeWithContext,search:LYRA_DEFAULT_search,select:LYRA_DEFAULT_select}}static{this.styles=[LyraElement.styles,styles]}get bytes(){return this._bytes}set bytes(value){const old=this._bytes;this._bytes=typeof value=="number"&&Number.isFinite(value)&&value>=0?finiteRange(value,0,0):void 0,this.requestUpdate("bytes",old)}get effectiveName(){return this.file?this.file.name:this.name}get effectiveSize(){return this.file?Number.isFinite(this.file.size)&&this.file.size>=0?finiteRange(this.file.size,0,0):void 0:this.bytes}get effectiveMimeType(){return this.file?this.file.type:this.mimeType}get effectivePreviewSrc(){return this.file?this.objectUrl??"":this.previewSrc}get resolvedId(){return this.attachmentId.trim().length>0?this.attachmentId:this.file?`${this.file.name}:${this.file.size}:${this.file.lastModified}`:this.fallbackId}get hasNumericProgress(){return this.status==="uploading"&&this.clampedProgress>0}get clampedProgress(){return finiteRange(this.progress,0,0,100)}get effectiveStatus(){return this.status==="uploading"||this.status==="error"||this.status==="success"?this.status:"pending"}ensureObjectUrl(file){return this.objectUrlFile===file&&this.objectUrl?this.objectUrl:(this.revokeObjectUrl(),this.objectUrl=URL.createObjectURL(file),this.objectUrlFile=file,this.objectUrl)}revokeObjectUrl(){this.objectUrl&&URL.revokeObjectURL(this.objectUrl),this.objectUrl=void 0,this.objectUrlFile=void 0}connectedCallback(){super.connectedCallback(),this.syncAnnouncementSink(),this.hasUpdated&&this.requestUpdate()}adoptedCallback(){super.adoptedCallback(),this.releaseAnnouncementSink(),this.syncAnnouncementSink()}syncAnnouncementSink(){this.isConnected&&this.sink?.element.ownerDocument!==this.ownerDocument&&(this.releaseAnnouncementSink(),this.sink=acquireAnnouncementSink("assertive",{document:this.ownerDocument,source:this}))}releaseAnnouncementSink(){this.sink?.release(),this.sink=void 0}willUpdate(changed){super.willUpdate(changed),changed.has("status")&&this.status!==this.effectiveStatus&&(this.status=this.effectiveStatus),this.hasUpdated&&changed.has("status")&&this.status==="error"&&this.sink?.announce(this.localizedUploadFailedLabel),this.isConnected&&this.file&&(this.file.type.startsWith("image/")||this.previewable)?this.ensureObjectUrl(this.file):this.objectUrlFile&&this.revokeObjectUrl()}disconnectedCallback(){super.disconnectedCallback(),this.revokeObjectUrl(),this.releaseAnnouncementSink()}get localizedUploadFailedLabel(){return this.uploadFailedLabel??this.localize("attachmentUploadFailed")}renderThumbnail(){if(this.file){const fileImageSrc=this.objectUrl?safeMediaSrc(this.objectUrl):null;return this.effectiveMimeType.startsWith("image/")?fileImageSrc?html`<img src=${fileImageSrc} alt="" />`:html`${fileIcon()}`:html`${fileIcon()}`}const thumbnailSrc=safeMediaSrc(this.thumbnailSrc);return thumbnailSrc?html`<img src=${thumbnailSrc} alt="" />`:html`${fileIcon()}`}render(){const name=this.effectiveName,untitledLabel=this.untitledLabel??this.localize("attachmentUntitledFile"),displayName=name||untitledLabel,sizeText=this.effectiveSize!==void 0?formatFileSize(this.effectiveSize,unit=>this.localize(FILE_SIZE_UNIT_KEYS[unit]),(value,fractionDigits)=>getNumberFormat(this.effectiveLocale,{minimumFractionDigits:fractionDigits,maximumFractionDigits:fractionDigits}).format(value)):"",uploadFailedLabel=this.localizedUploadFailedLabel,progressPercent=getNumberFormat(this.effectiveLocale,{maximumFractionDigits:0}).format(Math.round(this.clampedProgress)),uploadingText=this.uploadingLabel!==void 0?this.uploadingLabel:this.hasNumericProgress?this.localize("attachmentUploadingProgress",void 0,{percent:progressPercent}):this.localize("attachmentUploadingIndeterminate"),uploadingWithContext=this.uploadingLabel??this.localize("attachmentUploadingWithContext",void 0,{label:displayName}),retryWithContext=this.retryLabel??this.localize("attachmentRetryWithContext",void 0,{label:displayName}),removeWithContext=this.removeLabel??this.localize("removeWithContext",void 0,{label:displayName}),status=this.effectiveStatus,text=statusText(status,uploadingText,uploadFailedLabel),uploading=status==="uploading";return html`
|
|
15
15
|
<div part="base">
|
|
16
16
|
<span part="thumbnail" aria-hidden="true"
|
|
17
17
|
>${this.renderThumbnail()}</span
|
|
@@ -2,20 +2,9 @@ import{css}from"lit";const styles=css`
|
|
|
2
2
|
:host {
|
|
3
3
|
display: inline-flex;
|
|
4
4
|
max-inline-size: 100%;
|
|
5
|
-
/* Per-status accent -- one custom property swapped by the :host([status])
|
|
6
|
-
rules below rather than repeating background/border per part per
|
|
7
|
-
status. Mirrors lr-tool-call-chip's identical
|
|
8
|
-
--lr-tool-call-chip-accent/-bg/-border trio, so a chip's tone
|
|
9
|
-
vocabulary reads the same everywhere in the library. Defaults to the
|
|
10
|
-
'pending' tone so an unset/unknown status still reads as neutral
|
|
11
|
-
instead of unstyled. */
|
|
12
5
|
--_lr-attachment-chip-accent: var(--lr-color-text-quiet);
|
|
13
6
|
--_lr-attachment-chip-bg: var(--lr-color-surface);
|
|
14
7
|
--_lr-attachment-chip-border: var(--lr-color-border);
|
|
15
|
-
/* Compact-mode thumbnail size -- a dedicated token rather than reusing
|
|
16
|
-
--lr-icon-button-size (the one token in this library with no
|
|
17
|
-
--lr-theme-* fallback chain), so a consumer can retheme just the compact thumbnail
|
|
18
|
-
independent of every other icon-button-sized control. */
|
|
19
8
|
--_lr-attachment-chip-compact-thumbnail-size: var(--lr-size-1-75rem);
|
|
20
9
|
--_lr-attachment-chip-compact-font-size: var(--lr-font-size-xs);
|
|
21
10
|
--_lr-attachment-chip-compact-gap: var(--lr-size-0-25rem);
|
|
@@ -33,8 +22,6 @@ import{css}from"lit";const styles=css`
|
|
|
33
22
|
inline-size: var(--lr-attachment-chip-compact-thumbnail-size, var(--_lr-attachment-chip-compact-thumbnail-size));
|
|
34
23
|
block-size: var(--lr-attachment-chip-compact-thumbnail-size, var(--_lr-attachment-chip-compact-thumbnail-size));
|
|
35
24
|
}
|
|
36
|
-
/* The action buttons remain at the shared hit-area floor in compact mode, even though the
|
|
37
|
-
thumbnail itself is smaller. */
|
|
38
25
|
:host([compact]) [part='retry-button'],
|
|
39
26
|
:host([compact]) [part='preview-button'],
|
|
40
27
|
:host([compact]) [part='remove-button'] {
|
|
@@ -55,8 +42,6 @@ import{css}from"lit";const styles=css`
|
|
|
55
42
|
--_lr-attachment-chip-bg: var(--lr-color-danger-quiet);
|
|
56
43
|
--_lr-attachment-chip-border: transparent;
|
|
57
44
|
}
|
|
58
|
-
/* Optional neutral-positive tint for a finished upload -- subtler than
|
|
59
|
-
'uploading'/'error' since there's nothing left for the user to act on. */
|
|
60
45
|
:host([status='success']) {
|
|
61
46
|
--_lr-attachment-chip-accent: var(--lr-color-success);
|
|
62
47
|
--_lr-attachment-chip-bg: var(--lr-color-success-quiet);
|
|
@@ -86,8 +71,6 @@ import{css}from"lit";const styles=css`
|
|
|
86
71
|
flex: 0 0 auto;
|
|
87
72
|
align-items: center;
|
|
88
73
|
justify-content: center;
|
|
89
|
-
/* Reuses the shared icon-button box size as a ready-made "small square
|
|
90
|
-
glyph/image slot" token rather than inventing a new one-off dimension. */
|
|
91
74
|
inline-size: var(--lr-icon-button-size);
|
|
92
75
|
block-size: var(--lr-icon-button-size);
|
|
93
76
|
overflow: hidden;
|
|
@@ -120,12 +103,6 @@ import{css}from"lit";const styles=css`
|
|
|
120
103
|
color: var(--lr-color-text);
|
|
121
104
|
}
|
|
122
105
|
[part='size'] {
|
|
123
|
-
/* Full-strength text, not --lr-color-text-quiet -- this sits on top of
|
|
124
|
-
the per-status *-quiet tint backgrounds above (e.g. danger-quiet), and
|
|
125
|
-
text-quiet's gray fails WCAG AA contrast against several of those
|
|
126
|
-
tints even though it comfortably passes against the plain surface
|
|
127
|
-
background used by the resting state. Same fix, same rationale, as
|
|
128
|
-
lr-tool-call-chip's identical [part='duration']/[part='category']. */
|
|
129
106
|
color: var(--lr-color-text);
|
|
130
107
|
font-variant-numeric: tabular-nums;
|
|
131
108
|
}
|
|
@@ -167,11 +144,6 @@ import{css}from"lit";const styles=css`
|
|
|
167
144
|
display: inline-flex;
|
|
168
145
|
align-items: center;
|
|
169
146
|
justify-content: center;
|
|
170
|
-
/* Full --lr-icon-button-size floor (not the min()-capped --lr-size-1-75rem
|
|
171
|
-
compromise some inline/dense controls use elsewhere) -- an attachment chip is
|
|
172
|
-
wide enough for its action buttons to meet the same tappable-size floor as a
|
|
173
|
-
standalone icon button, matching [part='thumbnail'] above, which already sizes
|
|
174
|
-
to this same token. */
|
|
175
147
|
min-inline-size: var(--lr-icon-button-size);
|
|
176
148
|
min-block-size: var(--lr-icon-button-size);
|
|
177
149
|
padding: 0;
|
|
@@ -196,9 +168,6 @@ import{css}from"lit";const styles=css`
|
|
|
196
168
|
:where([part='remove-button']):hover {
|
|
197
169
|
background: color-mix(in srgb, var(--lr-color-text) 8%, transparent);
|
|
198
170
|
}
|
|
199
|
-
/* Pressed is the same tint carried further -- --lr-color-mix-active (22%) against the hover
|
|
200
|
-
rule's 8%, mixed from the buttons' own transparent fill, so the step is plainly visible while a
|
|
201
|
-
theme can still flatten or exaggerate every pressed state in the library from one knob. */
|
|
202
171
|
:where([part='retry-button']):active,
|
|
203
172
|
:where([part='preview-button']):active,
|
|
204
173
|
:where([part='remove-button']):active {
|
|
@@ -18,7 +18,7 @@ export interface LyraAttachmentTriggerEventMap {
|
|
|
18
18
|
}
|
|
19
19
|
/**
|
|
20
20
|
* `<lr-attachment-trigger>` — a compact attach affordance designed for a
|
|
21
|
-
* chat composer's
|
|
21
|
+
* chat composer's start slot (see `<lr-chat-composer>`'s own `start`
|
|
22
22
|
* slot, which this drops straight into, though this component has no code
|
|
23
23
|
* dependency on it). Its shape adapts to how many attachment `capabilities`
|
|
24
24
|
* are configured:
|
|
@@ -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,query}from"lit/decorators.js";import{LyraElement}from"../../../internal/lyra-element.js";import{chevronIcon}from"../../../internal/icons.js";import{relayNativeEvent}from"../../../internal/native-event-relay.js";import{styles}from"./attachment-trigger.styles.js";import{trueDefaultBooleanConverter}from"../../../internal/converters.js";import{LYRA_DEFAULT_attachmentAdd,LYRA_DEFAULT_attachmentMenuAudio,LYRA_DEFAULT_attachmentMenuCamera,LYRA_DEFAULT_attachmentMenuFiles,LYRA_DEFAULT_attachmentMenuImage,LYRA_DEFAULT_attachmentTriggerAudio,LYRA_DEFAULT_attachmentTriggerCamera,LYRA_DEFAULT_attachmentTriggerFiles,LYRA_DEFAULT_attachmentTriggerImage,LYRA_DEFAULT_collapse,LYRA_DEFAULT_details,LYRA_DEFAULT_map,LYRA_DEFAULT_navigation,LYRA_DEFAULT_open,LYRA_DEFAULT_progress,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 icon(paths){return svg`
|
|
1
|
+
var __decorate=function(decorators,target,key,desc){var c=arguments.length,r=c<3?target:desc===null?desc=Object.getOwnPropertyDescriptor(target,key):desc,d;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")r=Reflect.decorate(decorators,target,key,desc);else for(var i=decorators.length-1;i>=0;i--)(d=decorators[i])&&(r=(c<3?d(r):c>3?d(target,key,r):d(target,key))||r);return c>3&&r&&Object.defineProperty(target,key,r),r};import{html,nothing,svg}from"lit";import{property,query}from"lit/decorators.js";import{LyraElement}from"../../../internal/lyra-element.js";import{hostAriaLabel}from"../../../internal/a11y.js";import{chevronIcon}from"../../../internal/icons.js";import{relayNativeEvent}from"../../../internal/native-event-relay.js";import{styles}from"./attachment-trigger.styles.js";import{trueDefaultBooleanConverter}from"../../../internal/converters.js";import{LYRA_DEFAULT_attachmentAdd,LYRA_DEFAULT_attachmentMenuAudio,LYRA_DEFAULT_attachmentMenuCamera,LYRA_DEFAULT_attachmentMenuFiles,LYRA_DEFAULT_attachmentMenuImage,LYRA_DEFAULT_attachmentTriggerAudio,LYRA_DEFAULT_attachmentTriggerCamera,LYRA_DEFAULT_attachmentTriggerFiles,LYRA_DEFAULT_attachmentTriggerImage,LYRA_DEFAULT_collapse,LYRA_DEFAULT_details,LYRA_DEFAULT_map,LYRA_DEFAULT_navigation,LYRA_DEFAULT_open,LYRA_DEFAULT_popover,LYRA_DEFAULT_progress,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 icon(paths){return svg`
|
|
2
2
|
<svg
|
|
3
3
|
width="1em"
|
|
4
4
|
height="1em"
|
|
@@ -25,7 +25,7 @@ var __decorate=function(decorators,target,key,desc){var c=arguments.length,r=c<3
|
|
|
25
25
|
<path d="M19 10v2a7 7 0 0 1-14 0v-2"></path>
|
|
26
26
|
<line x1="12" y1="19" x2="12" y2="23"></line>
|
|
27
27
|
<line x1="8" y1="23" x2="16" y2="23"></line>
|
|
28
|
-
`)}const CAPABILITY_META={files:{icon:paperclipIcon,triggerKey:"attachmentTriggerFiles",menuKey:"attachmentMenuFiles"},image:{icon:imageIcon,triggerKey:"attachmentTriggerImage",menuKey:"attachmentMenuImage"},camera:{icon:cameraIcon,triggerKey:"attachmentTriggerCamera",menuKey:"attachmentMenuCamera"},audio:{icon:audioIcon,triggerKey:"attachmentTriggerAudio",menuKey:"attachmentMenuAudio"}},OWNED_CAPABILITY_SNAPSHOTS=new WeakSet;function ownCapabilitySnapshot(values){const snapshot=Object.freeze(values);return OWNED_CAPABILITY_SNAPSHOTS.add(snapshot),snapshot}const DEFAULT_CAPABILITIES=ownCapabilitySnapshot(["files"]);function normalizeCapabilities(value){try{if(!Array.isArray(value))return DEFAULT_CAPABILITIES;if(OWNED_CAPABILITY_SNAPSHOTS.has(value))return value;const normalized=[],length=Math.min(value.length,4);for(let index=0;index<length;index++){const candidate=value[index];typeof candidate=="string"&&Object.prototype.hasOwnProperty.call(CAPABILITY_META,candidate)&&!normalized.includes(candidate)&&normalized.push(candidate)}return ownCapabilitySnapshot(normalized)}catch{return DEFAULT_CAPABILITIES}}function isCanonicalCapabilitySnapshot(source){try{return typeof source=="object"&&source!==null&&OWNED_CAPABILITY_SNAPSHOTS.has(source)}catch{return!1}}class LyraAttachmentTrigger extends LyraElement{constructor(){super(...arguments),this.capabilities=DEFAULT_CAPABILITIES,this.accept="",this.multiple=!0,this.disabled=!1,this.pendingCapability="files",this.pickerGeneration=0,this.pendingPickerGeneration=-1,this.onTriggerClick=()=>{const capability=this.effectiveCapabilities[0];capability!==void 0&&this.activateCapability(capability)},this.onMenuSelect=e=>{e.stopPropagation();const capability=e.detail.item.value;Object.prototype.hasOwnProperty.call(CAPABILITY_META,capability)&&this.effectiveCapabilities.includes(capability)&&this.activateCapability(capability)},this.onInputChange=e=>{e.stopPropagation();const input=e.target,selected=input.files,generation=this.pendingPickerGeneration;if(this.pendingPickerGeneration=-1,this.isConnected&&generation===this.pickerGeneration&&!this.disabled&&selected&&selected.length>0){const OwnerArray=this.ownerDocument.defaultView?.Array??Array,files=Object.freeze(OwnerArray.from(selected));this.emit("lr-files",{capability:this.pendingCapability,files})}input.value=""},this.onControlFocus=event=>{relayNativeEvent(this,event)},this.onControlBlur=event=>{relayNativeEvent(this,event)},this.stopInternalEvent=event=>{event.stopPropagation()}}static{this.defaultStrings={...super.defaultStrings,attachmentAdd:LYRA_DEFAULT_attachmentAdd,attachmentMenuAudio:LYRA_DEFAULT_attachmentMenuAudio,attachmentMenuCamera:LYRA_DEFAULT_attachmentMenuCamera,attachmentMenuFiles:LYRA_DEFAULT_attachmentMenuFiles,attachmentMenuImage:LYRA_DEFAULT_attachmentMenuImage,attachmentTriggerAudio:LYRA_DEFAULT_attachmentTriggerAudio,attachmentTriggerCamera:LYRA_DEFAULT_attachmentTriggerCamera,attachmentTriggerFiles:LYRA_DEFAULT_attachmentTriggerFiles,attachmentTriggerImage:LYRA_DEFAULT_attachmentTriggerImage,collapse:LYRA_DEFAULT_collapse,details:LYRA_DEFAULT_details,map:LYRA_DEFAULT_map,navigation:LYRA_DEFAULT_navigation,open:LYRA_DEFAULT_open,progress:LYRA_DEFAULT_progress,search:LYRA_DEFAULT_search,select:LYRA_DEFAULT_select}}static{this.ownedCollectionProperties=Object.freeze(["capabilities"])}static{this.styles=[LyraElement.styles,styles]}static{this.immutableEventDetails=Object.freeze(["lr-files"])}get effectiveCapabilities(){return normalizeCapabilities(this.capabilities)}get hasFileCapability(){return this.effectiveCapabilities.includes("files")||this.effectiveCapabilities.includes("image")}willUpdate(changed){if(super.willUpdate(changed),changed.has("disabled")&&this.disabled&&this.dropdownEl?.hide(),changed.has("capabilities")){const normalized=normalizeCapabilities(this.capabilities);isCanonicalCapabilitySnapshot(this.capabilities)||(this.capabilities=normalized)}}effectiveAccept(capability){return capability==="image"?this.accept||"image/*":this.accept}activateCapability(capability){if(this.disabled)return;if(capability==="camera"){this.emit("lr-camera-request",null);return}if(capability==="audio"){this.emit("lr-audio-request",null);return}this.pendingCapability=capability,this.pendingPickerGeneration=++this.pickerGeneration;const input=this.inputEl;input&&(input.accept=this.effectiveAccept(capability),input.click())}disconnectedCallback(){this.pendingPickerGeneration=-1,this.pickerGeneration++,this.dropdownEl?.hide(),super.disconnectedCallback()}primaryControl(){return this.renderRoot.querySelector('[part="trigger"], [part="menu-trigger"]')??void 0}focus(options){this.primaryControl()?.focus(options)}blur(){this.primaryControl()?.blur()}click(){this.primaryControl()?.click()}renderHiddenInput(){return html`
|
|
28
|
+
`)}const CAPABILITY_META={files:{icon:paperclipIcon,triggerKey:"attachmentTriggerFiles",menuKey:"attachmentMenuFiles"},image:{icon:imageIcon,triggerKey:"attachmentTriggerImage",menuKey:"attachmentMenuImage"},camera:{icon:cameraIcon,triggerKey:"attachmentTriggerCamera",menuKey:"attachmentMenuCamera"},audio:{icon:audioIcon,triggerKey:"attachmentTriggerAudio",menuKey:"attachmentMenuAudio"}},OWNED_CAPABILITY_SNAPSHOTS=new WeakSet;function ownCapabilitySnapshot(values){const snapshot=Object.freeze(values);return OWNED_CAPABILITY_SNAPSHOTS.add(snapshot),snapshot}const DEFAULT_CAPABILITIES=ownCapabilitySnapshot(["files"]);function normalizeCapabilities(value){try{if(!Array.isArray(value))return DEFAULT_CAPABILITIES;if(OWNED_CAPABILITY_SNAPSHOTS.has(value))return value;const normalized=[],length=Math.min(value.length,4);for(let index=0;index<length;index++){const candidate=value[index];typeof candidate=="string"&&Object.prototype.hasOwnProperty.call(CAPABILITY_META,candidate)&&!normalized.includes(candidate)&&normalized.push(candidate)}return ownCapabilitySnapshot(normalized)}catch{return DEFAULT_CAPABILITIES}}function isCanonicalCapabilitySnapshot(source){try{return typeof source=="object"&&source!==null&&OWNED_CAPABILITY_SNAPSHOTS.has(source)}catch{return!1}}class LyraAttachmentTrigger extends LyraElement{constructor(){super(...arguments),this.capabilities=DEFAULT_CAPABILITIES,this.accept="",this.multiple=!0,this.disabled=!1,this.pendingCapability="files",this.pickerGeneration=0,this.pendingPickerGeneration=-1,this.onTriggerClick=()=>{const capability=this.effectiveCapabilities[0];capability!==void 0&&this.activateCapability(capability)},this.onMenuSelect=e=>{e.stopPropagation();const capability=e.detail.item.value;Object.prototype.hasOwnProperty.call(CAPABILITY_META,capability)&&this.effectiveCapabilities.includes(capability)&&this.activateCapability(capability)},this.onInputChange=e=>{e.stopPropagation();const input=e.target,selected=input.files,generation=this.pendingPickerGeneration;if(this.pendingPickerGeneration=-1,this.isConnected&&generation===this.pickerGeneration&&!this.disabled&&selected&&selected.length>0){const OwnerArray=this.ownerDocument.defaultView?.Array??Array,files=Object.freeze(OwnerArray.from(selected));this.emit("lr-files",{capability:this.pendingCapability,files})}input.value=""},this.onControlFocus=event=>{relayNativeEvent(this,event)},this.onControlBlur=event=>{relayNativeEvent(this,event)},this.stopInternalEvent=event=>{event.stopPropagation()}}static{this.defaultStrings={...super.defaultStrings,attachmentAdd:LYRA_DEFAULT_attachmentAdd,attachmentMenuAudio:LYRA_DEFAULT_attachmentMenuAudio,attachmentMenuCamera:LYRA_DEFAULT_attachmentMenuCamera,attachmentMenuFiles:LYRA_DEFAULT_attachmentMenuFiles,attachmentMenuImage:LYRA_DEFAULT_attachmentMenuImage,attachmentTriggerAudio:LYRA_DEFAULT_attachmentTriggerAudio,attachmentTriggerCamera:LYRA_DEFAULT_attachmentTriggerCamera,attachmentTriggerFiles:LYRA_DEFAULT_attachmentTriggerFiles,attachmentTriggerImage:LYRA_DEFAULT_attachmentTriggerImage,collapse:LYRA_DEFAULT_collapse,details:LYRA_DEFAULT_details,map:LYRA_DEFAULT_map,navigation:LYRA_DEFAULT_navigation,open:LYRA_DEFAULT_open,popover:LYRA_DEFAULT_popover,progress:LYRA_DEFAULT_progress,search:LYRA_DEFAULT_search,select:LYRA_DEFAULT_select}}static{this.ownedCollectionProperties=Object.freeze(["capabilities"])}static{this.styles=[LyraElement.styles,styles]}static{this.immutableEventDetails=Object.freeze(["lr-files"])}get effectiveCapabilities(){return normalizeCapabilities(this.capabilities)}get hasFileCapability(){return this.effectiveCapabilities.includes("files")||this.effectiveCapabilities.includes("image")}willUpdate(changed){if(super.willUpdate(changed),changed.has("disabled")&&this.disabled&&this.dropdownEl?.hide(),changed.has("capabilities")){const normalized=normalizeCapabilities(this.capabilities);isCanonicalCapabilitySnapshot(this.capabilities)||(this.capabilities=normalized)}}effectiveAccept(capability){return capability==="image"?this.accept||"image/*":this.accept}activateCapability(capability){if(this.disabled)return;if(capability==="camera"){this.emit("lr-camera-request",null);return}if(capability==="audio"){this.emit("lr-audio-request",null);return}this.pendingCapability=capability,this.pendingPickerGeneration=++this.pickerGeneration;const input=this.inputEl;input&&(input.accept=this.effectiveAccept(capability),input.click())}disconnectedCallback(){this.pendingPickerGeneration=-1,this.pickerGeneration++,this.dropdownEl?.hide(),super.disconnectedCallback()}primaryControl(){return this.renderRoot.querySelector('[part="trigger"], [part="menu-trigger"]')??void 0}focus(options){this.primaryControl()?.focus(options)}blur(){this.primaryControl()?.blur()}click(){this.primaryControl()?.click()}renderHiddenInput(){return html`
|
|
29
29
|
<input
|
|
30
30
|
part="hidden-input"
|
|
31
31
|
type="file"
|
|
@@ -35,7 +35,7 @@ var __decorate=function(decorators,target,key,desc){var c=arguments.length,r=c<3
|
|
|
35
35
|
?disabled=${this.disabled}
|
|
36
36
|
@change=${this.onInputChange}
|
|
37
37
|
/>
|
|
38
|
-
`}renderSingleTrigger(capability){const meta=CAPABILITY_META[capability],label=(this
|
|
38
|
+
`}renderSingleTrigger(capability){const meta=CAPABILITY_META[capability],label=hostAriaLabel(this)??this.accessibleLabel??this.localize(meta.triggerKey);return html`
|
|
39
39
|
<button
|
|
40
40
|
part="trigger"
|
|
41
41
|
class="trigger-button"
|
|
@@ -49,7 +49,7 @@ var __decorate=function(decorators,target,key,desc){var c=arguments.length,r=c<3
|
|
|
49
49
|
>
|
|
50
50
|
${meta.icon()}
|
|
51
51
|
</button>
|
|
52
|
-
`}renderMenu(){const addLabel=this.localize("attachmentAdd"),accessibleLabel=(this
|
|
52
|
+
`}renderMenu(){const addLabel=this.localize("attachmentAdd"),accessibleLabel=hostAriaLabel(this)??this.accessibleLabel??addLabel;return html`
|
|
53
53
|
<lr-dropdown
|
|
54
54
|
part="menu"
|
|
55
55
|
@lr-show=${this.stopInternalEvent}
|
|
@@ -1,43 +1,18 @@
|
|
|
1
1
|
import{css}from"lit";const styles=css`
|
|
2
|
-
/* Fully transparent to layout, matching the nested dropdown/menu shell — the
|
|
3
|
-
visible/clickable surface is entirely the rendered button (or, in the
|
|
4
|
-
multi-capability case, lr-dropdown's trigger wrapper
|
|
5
|
-
around that same button), so this host never contributes a stray box a
|
|
6
|
-
composer's leading slot would otherwise have to fight with margin/
|
|
7
|
-
inline-block quirks to line up against the textarea. */
|
|
8
2
|
:host {
|
|
9
3
|
display: contents;
|
|
10
4
|
}
|
|
11
5
|
|
|
12
|
-
/* The internal native file input never has a visible surface of its own --
|
|
13
|
-
the trigger button/menu above are the only affordance a user interacts
|
|
14
|
-
with; this input exists purely so its synthetic .click() can open the OS
|
|
15
|
-
file picker. Exposed as a part (see the class doc's @csspart) only so a
|
|
16
|
-
consumer's ::part(hidden-input) can override this in the unlikely case
|
|
17
|
-
their integration needs to. */
|
|
18
6
|
[part='hidden-input'] {
|
|
19
7
|
display: none;
|
|
20
8
|
}
|
|
21
9
|
|
|
22
|
-
/* Shared visual treatment for both the single-capability button
|
|
23
|
-
([part='trigger']) and the multi-capability button ([part='menu-trigger'])
|
|
24
|
-
slotted into lr-dropdown's trigger slot -- the latter can't reuse
|
|
25
|
-
part='trigger' itself (that name is reserved for the single-capability
|
|
26
|
-
case, so a consumer's ::part(trigger) selector unambiguously targets
|
|
27
|
-
exactly one button), so both buttons share this plain class for the
|
|
28
|
-
declarations that genuinely are identical, on top of each one's own
|
|
29
|
-
distinct part name. */
|
|
30
10
|
.trigger-button {
|
|
31
11
|
display: inline-flex;
|
|
32
12
|
flex: 0 0 auto;
|
|
33
13
|
align-items: center;
|
|
34
14
|
justify-content: center;
|
|
35
15
|
box-sizing: border-box;
|
|
36
|
-
/* Compact per the class doc -- capped well below the library's general
|
|
37
|
-
--lr-icon-button-size (meant for a standalone icon-only button) so
|
|
38
|
-
this sits comfortably inside a composer's leading slot alongside a
|
|
39
|
-
textarea, matching lr-combobox's clear-button / lr-select's
|
|
40
|
-
toggle sizing convention. */
|
|
41
16
|
min-inline-size: min(var(--lr-icon-button-size), var(--lr-size-1-75rem));
|
|
42
17
|
min-block-size: min(var(--lr-icon-button-size), var(--lr-size-1-75rem));
|
|
43
18
|
padding: 0;
|
|
@@ -54,8 +29,6 @@ import{css}from"lit";const styles=css`
|
|
|
54
29
|
background-color var(--lr-transition-fast),
|
|
55
30
|
color var(--lr-transition-fast);
|
|
56
31
|
}
|
|
57
|
-
/* Keep internal state qualifiers low-specificity so sibling rules in this sheet remain easy to
|
|
58
|
-
compose. Consumer ::part() authority follows the shadow cascade independently. */
|
|
59
32
|
:where(.trigger-button):hover:where(:not(:disabled)) {
|
|
60
33
|
background: color-mix(in srgb, var(--lr-color-text) 8%, transparent);
|
|
61
34
|
color: var(--lr-color-text);
|
|
@@ -72,29 +45,16 @@ import{css}from"lit";const styles=css`
|
|
|
72
45
|
display: block;
|
|
73
46
|
}
|
|
74
47
|
|
|
75
|
-
/* Both trigger buttons must independently meet the shared minimum tappable size
|
|
76
|
-
(--lr-icon-button-size), overriding .trigger-button's own more compact
|
|
77
|
-
min-inline-size/min-block-size above -- same tie-break-by-source-order specificity as every
|
|
78
|
-
other single-attribute-selector override in this file (equal (0,1,0) specificity to
|
|
79
|
-
.trigger-button's own (0,1,0), so this later rule wins). */
|
|
80
48
|
[part='trigger'],
|
|
81
49
|
[part='menu-trigger'] {
|
|
82
50
|
min-inline-size: var(--lr-icon-button-size);
|
|
83
51
|
min-block-size: var(--lr-icon-button-size);
|
|
84
52
|
}
|
|
85
53
|
|
|
86
|
-
/* [part='menu-trigger'] carries a second glyph (the paperclip plus this
|
|
87
|
-
disclosure chevron) alongside the single-capability [part='trigger']'s
|
|
88
|
-
one, so it alone needs a gap between them. */
|
|
89
54
|
[part='menu-trigger'] {
|
|
90
55
|
gap: var(--lr-space-xs);
|
|
91
56
|
}
|
|
92
57
|
|
|
93
|
-
/* Disclosure cue for the multi-capability trigger, matching
|
|
94
|
-
lr-combobox/lr-select's own [part='expand-icon'] convention (same
|
|
95
|
-
chevronIcon() rotated to point down) -- but sized down from their
|
|
96
|
-
dedicated-touch-target treatment since here it's a second glyph inside
|
|
97
|
-
one already-compact icon button, not its own separate control. */
|
|
98
58
|
[part='expand-icon'] {
|
|
99
59
|
display: inline-flex;
|
|
100
60
|
flex: 0 0 auto;
|