@aceshooting/lyra-ui 29.0.2 → 29.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +37 -0
- package/README.md +19 -26
- package/design-tokens.json +1 -1
- package/dist/cli/migrate-wa.mjs +2 -0
- package/dist/components/agent-tools/activity-feed/activity-feed.class.d.ts +5 -3
- package/dist/components/agent-tools/activity-feed/activity-feed.class.js +4 -3
- package/dist/components/agent-tools/activity-feed/activity-feed.styles.js +1 -1
- package/dist/components/agent-tools/agent-trace/agent-trace.class.d.ts +21 -5
- package/dist/components/agent-tools/agent-trace/agent-trace.class.js +14 -11
- package/dist/components/agent-tools/agent-trace/agent-trace.styles.js +1 -1
- package/dist/components/agent-tools/confirm-bar/confirm-bar.class.js +2 -2
- package/dist/components/agent-tools/eval-dataset/eval-dataset.class.d.ts +34 -7
- package/dist/components/agent-tools/eval-dataset/eval-dataset.class.js +25 -11
- package/dist/components/agent-tools/eval-result/eval-result-source.js +1 -0
- package/dist/components/agent-tools/eval-result/eval-result.class.d.ts +31 -11
- package/dist/components/agent-tools/eval-result/eval-result.class.js +29 -15
- package/dist/components/agent-tools/eval-result/eval-result.styles.js +1 -1
- package/dist/components/agent-tools/eval-result/eval-run-result.d.ts +10 -0
- package/dist/components/agent-tools/span-waterfall/span-waterfall.class.d.ts +26 -5
- package/dist/components/agent-tools/span-waterfall/span-waterfall.class.js +16 -6
- package/dist/components/agent-tools/span-waterfall/span-waterfall.d.ts +1 -1
- package/dist/components/agent-tools/span-waterfall/span-waterfall.js +1 -1
- package/dist/components/agent-tools/span-waterfall/span-waterfall.styles.js +1 -1
- package/dist/components/agent-tools/task-list/task-list.class.d.ts +29 -6
- package/dist/components/agent-tools/task-list/task-list.class.js +13 -7
- package/dist/components/agent-tools/task-list/task-list.d.ts +1 -1
- package/dist/components/agent-tools/task-list/task-list.js +1 -1
- package/dist/components/agent-tools/task-list/task-list.styles.js +1 -1
- package/dist/components/agent-tools/terminal/terminal.class.d.ts +9 -5
- package/dist/components/agent-tools/terminal/terminal.class.js +8 -8
- package/dist/components/agent-tools/test-results/test-results.class.d.ts +16 -4
- package/dist/components/agent-tools/test-results/test-results.class.js +15 -6
- package/dist/components/agent-tools/test-results/test-results.d.ts +1 -0
- package/dist/components/agent-tools/test-results/test-results.js +1 -1
- package/dist/components/agent-tools/test-results/test-results.styles.js +1 -1
- package/dist/components/agent-tools/tool-timeline/tool-timeline.class.d.ts +7 -4
- package/dist/components/agent-tools/tool-timeline/tool-timeline.class.js +2 -1
- package/dist/components/agent-tools/trace-tree/span-projection.js +1 -0
- package/dist/components/agent-tools/trace-tree/span-shared.d.ts +29 -0
- package/dist/components/agent-tools/trace-tree/span-shared.js +1 -0
- package/dist/components/agent-tools/trace-tree/span.d.ts +5 -35
- package/dist/components/agent-tools/trace-tree/span.js +1 -1
- package/dist/components/agent-tools/trace-tree/trace-tree.class.d.ts +27 -5
- package/dist/components/agent-tools/trace-tree/trace-tree.class.js +19 -9
- package/dist/components/agent-tools/trace-tree/trace-tree.d.ts +1 -1
- package/dist/components/agent-tools/trace-tree/trace-tree.js +1 -1
- package/dist/components/agent-tools/trace-tree/trace-tree.styles.js +1 -1
- package/dist/components/charts/chart/bar-chart.class.d.ts +5 -1
- package/dist/components/charts/chart/box-plot.class.d.ts +2 -2
- package/dist/components/charts/chart/box-plot.class.js +3 -3
- package/dist/components/charts/chart/bubble-chart.class.d.ts +5 -1
- package/dist/components/charts/chart/chart-prepared-data.d.ts +9 -0
- package/dist/components/charts/chart/chart-prepared-data.js +1 -0
- package/dist/components/charts/chart/chart-spatial-data.js +2 -0
- package/dist/components/charts/chart/chart-sync.js +1 -1
- package/dist/components/charts/chart/chart-table-sampling.js +1 -1
- package/dist/components/charts/chart/chart.class.d.ts +56 -6
- package/dist/components/charts/chart/chart.class.js +18 -8
- package/dist/components/charts/chart/chart.styles.js +1 -1
- package/dist/components/charts/chart/doughnut-chart.class.d.ts +5 -1
- package/dist/components/charts/chart/histogram-buckets.d.ts +1 -1
- package/dist/components/charts/chart/histogram-buckets.js +1 -1
- package/dist/components/charts/chart/histogram.class.d.ts +19 -4
- package/dist/components/charts/chart/histogram.class.js +1 -1
- package/dist/components/charts/chart/line-chart.class.d.ts +5 -1
- package/dist/components/charts/chart/lite-chart.class.d.ts +51 -11
- package/dist/components/charts/chart/lite-chart.class.js +33 -27
- package/dist/components/charts/chart/lite-chart.styles.js +1 -1
- package/dist/components/charts/chart/pie-chart.class.d.ts +5 -1
- package/dist/components/charts/chart/polar-area-chart.class.d.ts +5 -1
- package/dist/components/charts/chart/radar-chart.class.d.ts +5 -1
- package/dist/components/charts/chart/scatter-chart.class.d.ts +5 -1
- package/dist/components/conversation/agent-workspace/agent-workspace.class.d.ts +6 -3
- package/dist/components/conversation/agent-workspace/agent-workspace.class.js +6 -5
- package/dist/components/conversation/agent-workspace/agent-workspace.styles.js +1 -1
- package/dist/components/conversation/chat-viewport/chat-viewport.class.d.ts +8 -0
- package/dist/components/conversation/chat-viewport/chat-viewport.class.js +1 -1
- package/dist/components/conversation/code-block/code-block-base.class.d.ts +5 -3
- package/dist/components/conversation/code-block/code-block-base.class.js +1 -1
- package/dist/components/conversation/code-block/code-block-core.class.d.ts +4 -1
- package/dist/components/conversation/code-block/code-block-core.class.js +1 -1
- package/dist/components/conversation/code-block/code-block-shared.d.ts +6 -4
- package/dist/components/conversation/code-block/code-block-shared.js +3 -2
- package/dist/components/conversation/code-block/code-block.class.d.ts +11 -4
- package/dist/components/conversation/code-block/code-block.class.js +1 -1
- package/dist/components/conversation/code-block/code-block.d.ts +1 -1
- package/dist/components/conversation/code-block/code-block.styles.js +1 -1
- package/dist/components/conversation/code-block/shiki-types.d.ts +2 -0
- package/dist/components/conversation/code-block/shiki-types.js +1 -1
- package/dist/components/conversation/markdown/markdown-base.class.d.ts +6 -4
- package/dist/components/conversation/markdown/markdown-base.class.js +1 -1
- package/dist/components/conversation/markdown/markdown-code-header.d.ts +2 -2
- package/dist/components/conversation/markdown/markdown-code-header.js +1 -1
- package/dist/components/conversation/markdown/markdown-core.class.d.ts +8 -3
- package/dist/components/conversation/markdown/markdown-progressive.js +2 -2
- package/dist/components/conversation/markdown/markdown-shared.d.ts +5 -10
- package/dist/components/conversation/markdown/markdown-shared.js +5 -5
- package/dist/components/conversation/markdown/markdown-streaming-tail.js +1 -1
- package/dist/components/conversation/markdown/markdown.class.d.ts +17 -10
- package/dist/components/conversation/markdown/markdown.class.js +1 -1
- package/dist/components/conversation/markdown/markdown.styles.js +1 -1
- package/dist/components/conversation/model-select/model-select.class.d.ts +4 -3
- package/dist/components/conversation/model-select/model-select.class.js +3 -2
- package/dist/components/conversation/model-select/model-select.styles.js +1 -1
- package/dist/components/conversation/model-settings-panel/model-settings-panel.class.d.ts +2 -1
- package/dist/components/conversation/model-settings-panel/model-settings-panel.class.js +2 -1
- package/dist/components/conversation/model-settings-panel/model-settings-panel.styles.js +1 -1
- package/dist/components/conversation/prompt-input/prompt-input.class.d.ts +3 -2
- package/dist/components/conversation/prompt-input/prompt-input.class.js +2 -1
- package/dist/components/conversation/prompt-input/prompt-input.styles.js +1 -1
- package/dist/components/conversation/prompt-queue/prompt-queue.class.d.ts +10 -2
- package/dist/components/conversation/prompt-queue/prompt-queue.class.js +15 -6
- package/dist/components/conversation/prompt-queue/prompt-queue.styles.js +1 -1
- package/dist/components/conversation/realtime-session/realtime-session.class.d.ts +3 -1
- package/dist/components/conversation/realtime-session/realtime-session.class.js +2 -1
- package/dist/components/conversation/realtime-session/realtime-session.styles.js +1 -1
- package/dist/components/conversation/streaming-text/markdown-detection.d.ts +2 -0
- package/dist/components/conversation/streaming-text/markdown-detection.js +4 -1
- package/dist/components/conversation/streaming-text/streaming-text-base.class.d.ts +6 -2
- package/dist/components/conversation/streaming-text/streaming-text-base.class.js +3 -3
- package/dist/components/conversation/streaming-text/streaming-text-core.class.js +1 -1
- package/dist/components/conversation/streaming-text/streaming-text.class.js +1 -0
- package/dist/components/conversation/thread-list/thread-list.class.d.ts +34 -4
- package/dist/components/conversation/thread-list/thread-list.class.js +22 -15
- package/dist/components/conversation/thread-list/thread-list.d.ts +1 -1
- package/dist/components/conversation/thread-list/thread-list.js +1 -1
- package/dist/components/conversation/thread-list/thread-list.styles.js +1 -1
- package/dist/components/conversation/transcript-feed/transcript-feed.class.d.ts +6 -2
- package/dist/components/conversation/transcript-feed/transcript-feed.class.js +3 -2
- package/dist/components/conversation/transcript-feed/transcript-feed.styles.js +1 -1
- package/dist/components/conversation/voice-picker/voice-picker.class.d.ts +3 -2
- package/dist/components/conversation/voice-picker/voice-picker.class.js +3 -2
- package/dist/components/conversation/voice-picker/voice-picker.styles.js +1 -1
- package/dist/components/data/calendar/calendar.class.d.ts +5 -2
- package/dist/components/data/calendar/calendar.class.js +1 -1
- package/dist/components/data/data-grid/data-grid-processing.js +2 -2
- package/dist/components/data/data-grid/data-grid.class.d.ts +22 -8
- package/dist/components/data/data-grid/data-grid.class.js +20 -19
- package/dist/components/data/data-grid/data-grid.styles.js +1 -1
- package/dist/components/data/document-library/document-library.class.d.ts +31 -4
- package/dist/components/data/document-library/document-library.class.js +25 -12
- package/dist/components/data/document-library/document-library.styles.js +1 -1
- package/dist/components/data/file-tree/file-tree.class.d.ts +30 -6
- package/dist/components/data/file-tree/file-tree.class.js +4 -3
- package/dist/components/data/file-tree/file-tree.d.ts +1 -0
- package/dist/components/data/file-tree/file-tree.js +1 -1
- package/dist/components/data/flow-canvas/flow-canvas.class.d.ts +31 -6
- package/dist/components/data/flow-canvas/flow-canvas.class.js +40 -19
- package/dist/components/data/flow-canvas/flow-canvas.styles.js +1 -1
- package/dist/components/data/flow-canvas/flow-model.js +1 -1
- package/dist/components/data/flow-canvas/flow-source.js +1 -0
- package/dist/components/data/flow-canvas/flow-types.d.ts +4 -2
- package/dist/components/data/flow-canvas/flow-viewport-index.js +1 -0
- package/dist/components/data/flow-minimap/flow-minimap.class.d.ts +9 -3
- package/dist/components/data/flow-minimap/flow-minimap.class.js +11 -2
- package/dist/components/data/flow-minimap/flow-minimap.styles.js +1 -1
- package/dist/components/data/funnel/funnel.class.d.ts +7 -3
- package/dist/components/data/funnel/funnel.class.js +2 -2
- package/dist/components/data/heatmap/calendar-grid.d.ts +1 -1
- package/dist/components/data/heatmap/calendar-grid.js +1 -1
- package/dist/components/data/heatmap/heatmap-grid-navigation.js +1 -1
- package/dist/components/data/heatmap/heatmap-limits.d.ts +1 -1
- package/dist/components/data/heatmap/heatmap-matrix-source-controller.js +1 -0
- package/dist/components/data/heatmap/heatmap-matrix-source.d.ts +5 -0
- package/dist/components/data/heatmap/heatmap-matrix-source.js +1 -0
- package/dist/components/data/heatmap/heatmap-scale.d.ts +0 -16
- package/dist/components/data/heatmap/heatmap-scale.js +1 -1
- package/dist/components/data/heatmap/heatmap.class.d.ts +40 -11
- package/dist/components/data/heatmap/heatmap.class.js +26 -6
- package/dist/components/data/heatmap/heatmap.styles.js +1 -1
- package/dist/components/data/pagination/pagination.class.js +1 -1
- package/dist/components/data/sequence-strip/sequence-strip-item.d.ts +17 -0
- package/dist/components/data/sequence-strip/sequence-strip-source-controller.js +1 -0
- package/dist/components/data/sequence-strip/sequence-strip-source.d.ts +5 -0
- package/dist/components/data/sequence-strip/sequence-strip-source.js +1 -0
- package/dist/components/data/sequence-strip/sequence-strip.class.d.ts +24 -19
- package/dist/components/data/sequence-strip/sequence-strip.class.js +23 -4
- package/dist/components/data/sequence-strip/sequence-strip.styles.js +1 -1
- package/dist/components/data/sparkline/sparkline.class.d.ts +17 -4
- package/dist/components/data/sparkline/sparkline.class.js +3 -3
- package/dist/components/data/sparkline/sparkline.styles.js +1 -1
- package/dist/components/data/table/table.class.d.ts +14 -10
- package/dist/components/data/table/table.class.js +17 -16
- package/dist/components/data/timeline/timeline.class.d.ts +5 -2
- package/dist/components/data/timeline/timeline.class.js +1 -1
- package/dist/components/data/tree/tree-item.class.js +1 -1
- package/dist/components/data/tree/tree-owner-controller.js +1 -1
- package/dist/components/data/tree/tree.class.d.ts +28 -6
- package/dist/components/data/tree/tree.class.js +3 -3
- package/dist/components/data/tree/tree.d.ts +1 -0
- package/dist/components/data/tree/tree.js +1 -1
- package/dist/components/data/word-cloud/word-cloud.class.d.ts +17 -7
- package/dist/components/data/word-cloud/word-cloud.class.js +6 -4
- package/dist/components/data/word-cloud/word-cloud.styles.js +1 -1
- package/dist/components/forms/catalog-picker-base.d.ts +1 -1
- package/dist/components/forms/catalog-picker-base.js +6 -6
- package/dist/components/forms/catalog-picker-base.styles.js +1 -1
- package/dist/components/forms/combobox/combobox.class.d.ts +7 -3
- package/dist/components/forms/combobox/combobox.class.js +1 -1
- package/dist/components/forms/combobox/option.class.d.ts +4 -2
- package/dist/components/forms/combobox/option.class.js +2 -2
- package/dist/components/forms/country-picker/country-picker.class.d.ts +3 -1
- package/dist/components/forms/country-picker/country-picker.class.js +1 -1
- package/dist/components/forms/currency-picker/currency-picker.class.d.ts +2 -0
- package/dist/components/forms/currency-picker/currency-picker.class.js +1 -1
- package/dist/components/forms/currency-picker/currency-presentation.js +1 -1
- package/dist/components/forms/emoji-picker/emoji-picker.class.d.ts +6 -2
- package/dist/components/forms/emoji-picker/emoji-picker.class.js +3 -2
- package/dist/components/forms/emoji-picker/emoji-picker.styles.js +1 -1
- package/dist/components/forms/locale-picker/locale-picker.class.d.ts +8 -2
- package/dist/components/forms/locale-picker/locale-picker.class.js +5 -4
- package/dist/components/forms/locale-picker/locale-picker.styles.js +1 -1
- package/dist/components/forms/select/select.class.d.ts +11 -3
- package/dist/components/forms/select/select.class.js +4 -4
- package/dist/components/forms/time-zone-picker/time-zone-picker.class.d.ts +2 -0
- package/dist/components/forms/time-zone-picker/time-zone-picker.class.js +1 -1
- package/dist/components/forms/token-input/token-input.class.d.ts +6 -1
- package/dist/components/forms/token-input/token-input.class.js +15 -13
- package/dist/components/forms/unit-picker/unit-picker.class.d.ts +2 -0
- package/dist/components/forms/unit-picker/unit-picker.class.js +1 -1
- package/dist/components/layout/app-rail/app-rail.class.d.ts +1 -1
- package/dist/components/layout/app-rail/app-rail.class.js +1 -1
- package/dist/components/layout/command-palette/command-palette.class.d.ts +5 -2
- package/dist/components/layout/command-palette/command-palette.class.js +2 -1
- package/dist/components/layout/command-palette/command-palette.styles.js +1 -1
- package/dist/components/layout/menu/menu-item.class.d.ts +2 -2
- package/dist/components/layout/menu/menu-item.class.js +2 -2
- package/dist/components/layout/menu/menu.class.d.ts +1 -1
- package/dist/components/layout/menu/menu.class.js +1 -1
- package/dist/components/layout/menubar/menubar.class.d.ts +1 -1
- package/dist/components/layout/menubar/menubar.class.js +1 -1
- package/dist/components/layout/reorder-list/reorder-item.class.d.ts +2 -2
- package/dist/components/layout/reorder-list/reorder-item.class.js +2 -2
- package/dist/components/layout/reorder-list/reorder-list.class.d.ts +1 -1
- package/dist/components/layout/reorder-list/reorder-list.class.js +1 -1
- package/dist/components/layout/virtual-list/virtual-list.class.d.ts +13 -9
- package/dist/components/layout/virtual-list/virtual-list.class.js +21 -17
- package/dist/components/media/av-player/av-cue-index.js +1 -0
- package/dist/components/media/av-player/av-cue-source.d.ts +13 -0
- package/dist/components/media/av-player/av-cue-source.js +1 -0
- package/dist/components/media/av-player/av-metadata.d.ts +2 -2
- package/dist/components/media/av-player/av-metadata.js +1 -1
- package/dist/components/media/av-player/av-player-cue-source-controller.js +1 -0
- package/dist/components/media/av-player/av-player.class.d.ts +34 -12
- package/dist/components/media/av-player/av-player.class.js +15 -10
- package/dist/components/media/flag/flag.class.js +1 -1
- package/dist/components/media/flag/language-map.js +1 -1
- package/dist/components/media/lightbox/lightbox-source.js +1 -0
- package/dist/components/media/lightbox/lightbox-types.d.ts +15 -0
- package/dist/components/media/lightbox/lightbox.class.d.ts +22 -21
- package/dist/components/media/lightbox/lightbox.class.js +6 -4
- package/dist/components/media/lightbox/lightbox.styles.js +1 -1
- package/dist/components/media/map/map-geojson-diff.d.ts +6 -6
- package/dist/components/media/map/map-geojson-diff.js +1 -1
- package/dist/components/media/map/map-loader.d.ts +5 -1
- package/dist/components/media/map/map.class.d.ts +24 -6
- package/dist/components/media/map/map.class.js +2 -2
- package/dist/components/media/map/map.styles.js +1 -1
- package/dist/components/media/video-playlist/video-playlist.class.d.ts +2 -1
- package/dist/components/media/video-playlist/video-playlist.class.js +1 -1
- package/dist/components/overlays/chip/chip.class.d.ts +1 -1
- package/dist/components/overlays/chip/chip.class.js +1 -1
- package/dist/components/retrieval/embedding-explorer/embedding-explorer.class.d.ts +30 -8
- package/dist/components/retrieval/embedding-explorer/embedding-explorer.class.js +22 -8
- package/dist/components/retrieval/embedding-explorer/embedding-explorer.styles.js +1 -1
- package/dist/components/retrieval/graph/graph-canvas.js +1 -1
- package/dist/components/retrieval/graph/graph-source-composition.js +1 -0
- package/dist/components/retrieval/graph/graph-source-controller.js +1 -0
- package/dist/components/retrieval/graph/graph-spatial-controller.js +2 -2
- package/dist/components/retrieval/graph/graph-spatial-model.js +1 -0
- package/dist/components/retrieval/graph/graph-spatial.js +1 -1
- package/dist/components/retrieval/graph/graph.class.d.ts +31 -6
- package/dist/components/retrieval/graph/graph.class.js +26 -5
- package/dist/components/retrieval/graph/graph.d.ts +1 -1
- package/dist/components/retrieval/graph/graph.js +1 -1
- package/dist/components/retrieval/graph/graph.styles.js +1 -1
- package/dist/components/retrieval/ingestion-queue/ingestion-queue.class.d.ts +33 -4
- package/dist/components/retrieval/ingestion-queue/ingestion-queue.class.js +27 -17
- package/dist/components/retrieval/ingestion-queue/ingestion-queue.d.ts +1 -1
- package/dist/components/retrieval/ingestion-queue/ingestion-queue.js +1 -1
- package/dist/components/retrieval/ingestion-queue/ingestion-queue.styles.js +1 -1
- package/dist/components/retrieval/knowledge-base/knowledge-base.class.d.ts +27 -4
- package/dist/components/retrieval/knowledge-base/knowledge-base.class.js +29 -14
- package/dist/components/retrieval/knowledge-base/knowledge-base.styles.js +1 -1
- package/dist/components/retrieval/knowledge-base-admin/knowledge-base-admin.class.d.ts +17 -3
- package/dist/components/retrieval/knowledge-base-admin/knowledge-base-admin.class.js +15 -10
- package/dist/components/retrieval/knowledge-base-admin/knowledge-base-admin.styles.js +1 -1
- package/dist/components/retrieval/knowledge-graph-explorer/knowledge-graph-explorer.class.d.ts +24 -5
- package/dist/components/retrieval/knowledge-graph-explorer/knowledge-graph-explorer.class.js +17 -10
- package/dist/components/retrieval/knowledge-graph-explorer/knowledge-graph-explorer.d.ts +1 -1
- package/dist/components/retrieval/knowledge-graph-explorer/knowledge-graph-explorer.js +1 -1
- package/dist/components/retrieval/knowledge-graph-explorer/knowledge-graph-explorer.styles.js +1 -1
- package/dist/components/retrieval/mind-map/mind-map-layout.js +1 -1
- package/dist/components/retrieval/mind-map/mind-map-model.js +1 -0
- package/dist/components/retrieval/mind-map/mind-map.class.d.ts +27 -4
- package/dist/components/retrieval/mind-map/mind-map.class.js +11 -7
- package/dist/components/retrieval/mind-map/mind-map.d.ts +1 -0
- package/dist/components/retrieval/mind-map/mind-map.js +1 -1
- package/dist/components/retrieval/mind-map/mind-map.styles.js +1 -1
- package/dist/components/retrieval/neighbor-list/neighbor-list.class.d.ts +24 -2
- package/dist/components/retrieval/neighbor-list/neighbor-list.class.js +17 -3
- package/dist/components/retrieval/neighbor-list/neighbor-list.d.ts +1 -1
- package/dist/components/retrieval/neighbor-list/neighbor-list.js +1 -1
- package/dist/components/retrieval/neighbor-list/neighbor-list.styles.js +1 -1
- package/dist/components/retrieval/rag-eval-dashboard/rag-eval-dashboard.class.d.ts +8 -4
- package/dist/components/retrieval/rag-eval-dashboard/rag-eval-dashboard.class.js +11 -7
- package/dist/components/retrieval/rag-eval-dashboard/rag-eval-dashboard.styles.js +1 -1
- package/dist/components/retrieval/retrieval-compare/retrieval-compare.class.d.ts +12 -6
- package/dist/components/retrieval/retrieval-compare/retrieval-compare.class.js +30 -17
- package/dist/components/retrieval/retrieval-compare/retrieval-compare.styles.js +1 -1
- package/dist/components/retrieval/retrieval-results/retrieval-results-model.js +1 -0
- package/dist/components/retrieval/retrieval-results/retrieval-results.class.d.ts +46 -5
- package/dist/components/retrieval/retrieval-results/retrieval-results.class.js +31 -9
- package/dist/components/retrieval/retrieval-results/retrieval-results.d.ts +1 -1
- package/dist/components/retrieval/retrieval-results/retrieval-results.js +1 -1
- package/dist/components/retrieval/retrieval-results/retrieval-results.styles.js +1 -1
- package/dist/components/utility/diff-view/diff-view.class.d.ts +16 -8
- package/dist/components/utility/diff-view/diff-view.class.js +3 -2
- package/dist/components/utility/diff-view/diff-view.styles.js +1 -1
- package/dist/components/utility/json-viewer/json-viewer.class.d.ts +31 -3
- package/dist/components/utility/json-viewer/json-viewer.class.js +13 -4
- package/dist/components/utility/json-viewer/json-viewer.d.ts +1 -0
- package/dist/components/utility/json-viewer/json-viewer.js +1 -1
- package/dist/components/utility/json-viewer/json-viewer.styles.js +1 -1
- package/dist/components/utility/mention-popover/mention-popover.class.d.ts +6 -4
- package/dist/components/utility/mention-popover/mention-popover.class.js +6 -5
- package/dist/components/viewers/csv-viewer/csv-viewer.class.d.ts +34 -7
- package/dist/components/viewers/csv-viewer/csv-viewer.class.js +9 -7
- package/dist/components/viewers/dataset-viewer/dataset-viewer.class.d.ts +28 -4
- package/dist/components/viewers/dataset-viewer/dataset-viewer.class.js +12 -11
- package/dist/components/viewers/geojson-view/geojson-viewer.class.d.ts +3 -1
- package/dist/components/viewers/geojson-view/geojson-viewer.class.js +17 -16
- package/dist/components/viewers/geojson-view/geojson-viewer.d.ts +1 -1
- package/dist/components/viewers/geojson-view/geojson-viewer.js +1 -1
- package/dist/components/viewers/spreadsheet-viewer/spreadsheet-viewer.class.d.ts +31 -5
- package/dist/components/viewers/spreadsheet-viewer/spreadsheet-viewer.class.js +11 -8
- package/dist/components/viewers/table-viewer-shared.js +19 -3
- package/dist/components/viewers/viewer-search-limits.js +1 -1
- package/dist/components/viewers/xml-viewer/xml-viewer.class.d.ts +35 -3
- package/dist/components/viewers/xml-viewer/xml-viewer.class.js +20 -5
- package/dist/components/viewers/xml-viewer/xml-viewer.d.ts +1 -1
- package/dist/components/viewers/xml-viewer/xml-viewer.js +1 -1
- package/dist/components/viewers/xml-viewer/xml-viewer.styles.js +1 -1
- package/dist/countries.js +1 -1
- package/dist/data-sources.d.ts +34 -0
- package/dist/data-sources.js +1 -0
- package/dist/events.d.ts +51 -7
- package/dist/framework-types.d.ts +1 -1
- package/dist/internal/accessibility-visibility.d.ts +4 -2
- package/dist/internal/accessibility-visibility.js +1 -1
- package/dist/internal/accessible-text-controller.js +1 -1
- package/dist/internal/anchor-target.js +2 -2
- package/dist/internal/catalog-picker.d.ts +1 -7
- package/dist/internal/catalog-picker.js +1 -1
- package/dist/internal/collection-snapshot.js +1 -1
- package/dist/internal/default-strings/agent-tools.generated.js +1 -1
- package/dist/internal/default-strings/charts.generated.js +1 -1
- package/dist/internal/default-strings/conversation.generated.js +1 -1
- package/dist/internal/default-strings/data.generated.js +1 -1
- package/dist/internal/default-strings/forms.generated.js +1 -1
- package/dist/internal/default-strings/layout.generated.js +1 -1
- package/dist/internal/default-strings/media.generated.js +1 -1
- package/dist/internal/default-strings/retrieval.generated.js +1 -1
- package/dist/internal/default-strings/shared.generated.js +1 -1
- package/dist/internal/default-strings/utility.generated.js +1 -1
- package/dist/internal/delimited-data.js +1 -1
- package/dist/internal/fixed-containing-block.js +1 -1
- package/dist/internal/flow-scene-envelope.js +1 -0
- package/dist/internal/graph-scene-controller.js +1 -0
- package/dist/internal/hierarchy-source-controller.js +1 -0
- package/dist/internal/hierarchy-source-view.js +29 -0
- package/dist/internal/hierarchy-source-view.styles.js +1 -0
- package/dist/internal/inherited-attribute-hub.d.ts +6 -0
- package/dist/internal/inherited-attribute-hub.js +1 -1
- package/dist/internal/intl-cache.js +1 -1
- package/dist/internal/keyed-index.js +1 -0
- package/dist/internal/localization-types.d.ts +1 -1
- package/dist/internal/localization.js +2 -2
- package/dist/internal/lyra-element.d.ts +2 -2
- package/dist/internal/lyra-element.js +3 -2
- package/dist/internal/native-modal-context.js +1 -1
- package/dist/internal/option-selection.js +1 -1
- package/dist/internal/package-metadata.js +1 -1
- package/dist/internal/positioner.js +1 -1
- package/dist/internal/resource-loader.d.ts +2 -0
- package/dist/internal/resource-loader.js +1 -1
- package/dist/internal/scoped-definitions.generated.js +1 -1
- package/dist/internal/search-haystack.js +1 -0
- package/dist/internal/selection-catalog.d.ts +5 -0
- package/dist/internal/selection-catalog.js +1 -1
- package/dist/internal/shiki-language-sources.js +1 -0
- package/dist/internal/source-page-controller.js +1 -0
- package/dist/internal/source-page-scope.js +1 -0
- package/dist/internal/source-request-controller.js +1 -0
- package/dist/internal/source-window-controller.js +1 -0
- package/dist/internal/spatial-source-controller.js +1 -0
- package/dist/internal/text-quote.d.ts +2 -6
- package/dist/internal/text-quote.js +1 -1
- package/dist/internal/theme-watcher.js +1 -1
- package/dist/internal/virtual-list-composition.js +1 -0
- package/dist/lyra.d.ts +1 -1
- package/dist/lyra.js +1 -1
- package/dist/testing/interaction-drivers.js +1 -1
- package/dist/testing/lyra-tag-event-map.js +1 -1
- package/dist/units.js +1 -1
- package/dist/utilities/data-preparation.d.ts +56 -0
- package/dist/utilities/data-preparation.js +1 -0
- package/dist/utilities/data-spatial.d.ts +26 -0
- package/dist/utilities/data-spatial.js +1 -0
- package/dist/utilities/index.d.ts +1 -1
- package/dist/utilities/index.js +1 -1
- package/llms/components/lr-activity-feed.md +7 -2
- package/llms/components/lr-agent-trace.md +49 -9
- package/llms/components/lr-agent-workspace.md +15 -8
- package/llms/components/lr-av-player.md +180 -10
- package/llms/components/lr-bar-chart.md +1 -1
- package/llms/components/lr-box-plot.md +8 -0
- package/llms/components/lr-bubble-chart.md +1 -1
- package/llms/components/lr-calendar.md +26 -3
- package/llms/components/lr-chart.md +310 -23
- package/llms/components/lr-chat-viewport.md +6 -0
- package/llms/components/lr-code-block-core.md +12 -7
- package/llms/components/lr-code-block.md +23 -9
- package/llms/components/lr-combobox.md +27 -15
- package/llms/components/lr-command-palette.md +16 -3
- package/llms/components/lr-country-picker.md +23 -6
- package/llms/components/lr-csv-viewer.md +95 -12
- package/llms/components/lr-currency-picker.md +23 -3
- package/llms/components/lr-data-grid.md +24 -6
- package/llms/components/lr-dataset-viewer.md +92 -11
- package/llms/components/lr-dialog.md +1 -1
- package/llms/components/lr-diff-view.md +19 -6
- package/llms/components/lr-document-library.md +60 -5
- package/llms/components/lr-doughnut-chart.md +1 -1
- package/llms/components/lr-embedding-explorer.md +89 -9
- package/llms/components/lr-emoji-picker.md +7 -2
- package/llms/components/lr-eval-dataset.md +56 -7
- package/llms/components/lr-eval-result.md +89 -4
- package/llms/components/lr-export-button.md +1 -1
- package/llms/components/lr-file-tree.md +60 -6
- package/llms/components/lr-flag.md +5 -2
- package/llms/components/lr-flow-canvas.md +152 -14
- package/llms/components/lr-flow-minimap.md +32 -4
- package/llms/components/lr-funnel.md +14 -0
- package/llms/components/lr-geojson-viewer.md +27 -10
- package/llms/components/lr-graph.md +43 -7
- package/llms/components/lr-heatmap.md +161 -5
- package/llms/components/lr-histogram.md +55 -9
- package/llms/components/lr-ingestion-queue.md +54 -3
- package/llms/components/lr-json-viewer.md +87 -7
- package/llms/components/lr-knowledge-base-admin.md +60 -4
- package/llms/components/lr-knowledge-base.md +121 -9
- package/llms/components/lr-knowledge-graph-explorer.md +106 -11
- package/llms/components/lr-lightbox.md +42 -6
- package/llms/components/lr-line-chart.md +28 -5
- package/llms/components/lr-lite-chart.md +96 -31
- package/llms/components/lr-locale-picker.md +6 -4
- package/llms/components/lr-map.md +67 -8
- package/llms/components/lr-markdown-core.md +10 -5
- package/llms/components/lr-markdown.md +23 -6
- package/llms/components/lr-mention-popover.md +11 -6
- package/llms/components/lr-mind-map.md +91 -10
- package/llms/components/lr-model-select.md +8 -4
- package/llms/components/lr-model-settings-panel.md +10 -2
- package/llms/components/lr-navigation-menu.md +1 -1
- package/llms/components/lr-neighbor-list.md +69 -2
- package/llms/components/lr-pie-chart.md +1 -1
- package/llms/components/lr-polar-area-chart.md +1 -1
- package/llms/components/lr-prompt-input.md +9 -2
- package/llms/components/lr-prompt-queue.md +11 -3
- package/llms/components/lr-radar-chart.md +1 -1
- package/llms/components/lr-rag-eval-dashboard.md +9 -2
- package/llms/components/lr-realtime-session.md +6 -2
- package/llms/components/lr-reorder-list.md +4 -0
- package/llms/components/lr-retrieval-compare.md +9 -4
- package/llms/components/lr-retrieval-results.md +104 -6
- package/llms/components/lr-scatter-chart.md +1 -1
- package/llms/components/lr-select.md +20 -10
- package/llms/components/lr-sequence-strip.md +92 -2
- package/llms/components/lr-span-waterfall.md +78 -8
- package/llms/components/lr-sparkline.md +42 -11
- package/llms/components/lr-spreadsheet-viewer.md +109 -14
- package/llms/components/lr-streaming-text-core.md +4 -2
- package/llms/components/lr-streaming-text.md +5 -1
- package/llms/components/lr-table.md +96 -115
- package/llms/components/lr-task-list.md +93 -9
- package/llms/components/lr-terminal.md +9 -0
- package/llms/components/lr-test-results.md +77 -3
- package/llms/components/lr-thread-list.md +86 -1
- package/llms/components/lr-time-zone-picker.md +8 -3
- package/llms/components/lr-timeline.md +5 -0
- package/llms/components/lr-token-input.md +7 -2
- package/llms/components/lr-tool-timeline.md +13 -4
- package/llms/components/lr-trace-tree.md +96 -10
- package/llms/components/lr-transcript-feed.md +9 -2
- package/llms/components/lr-tree.md +87 -15
- package/llms/components/lr-unit-picker.md +8 -3
- package/llms/components/lr-video-playlist.md +2 -0
- package/llms/components/lr-virtual-list.md +17 -8
- package/llms/components/lr-voice-picker.md +8 -3
- package/llms/components/lr-word-cloud.md +128 -12
- package/llms/components/lr-xml-viewer.md +106 -9
- package/llms/index.md +1 -1
- package/llms/peers.md +1 -1
- package/llms/shared/events-and-types.md +725 -264
- package/llms/shared/forms-and-accessibility.md +3 -17
- package/llms/shared/imports-and-registration.md +3 -17
- package/llms/shared/localization-and-rtl.md +0 -2
- package/llms/shared/styles-and-tokens.md +27 -36
- package/llms/shared/testing-and-utilities.md +4 -5
- package/llms/shared.md +770 -349
- package/llms.txt +1 -2
- package/locales.json +139 -139
- package/package.json +13 -4
- package/registrations.json +1 -1
- package/skills/compose-lyra-interfaces/SKILL.md +6 -8
- package/skills/lyra-ui/SKILL.md +20 -51
- package/skills/lyra-ui/commands/review.md +16 -33
- package/skills/lyra-ui/commands/update.md +6 -5
- package/skills/lyra-ui/online-api.md +15 -0
- package/skills/lyra-ui/reporting.md +2 -1
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import{__decorate}from"tslib";import{relayNativeEvent}from"../../../internal/native-event-relay.js";import{collectionSupport}from"../../../internal/collection-snapshot.js";import{tag}from"../../../internal/prefix.js";import{html,nothing}from"lit";import{property,query,state}from"lit/decorators.js";import{guard}from"lit/directives/guard.js";import{LyraElement}from"../../../internal/lyra-element.js";import{HostDescriptionController}from"../../../internal/aria-controls.js";import{archiveIcon,chevronIcon,closeIcon,pinIcon,trashIcon}from"../../../internal/icons.js";import{styles}from"./thread-list.styles.js";import{contextualSizes}from"../../../internal/contextual-vocabulary.styles.js";import{requestThenCommit}from"../../../internal/request-commit.js";import{renderDataState}from"../../../internal/data-state-renderer.js";import{calendarDaysAgo,startOfLocalDay}from"../../../internal/group-by-recency.js";import{optionalSizeConverter}from"../../../internal/variants.js";import{getDateTimeFormat,getNumberFormat,resolveIntlLocale}from"../../../internal/intl-cache.js";import{MISSING_OWN_DATA_DESCRIPTOR,UNSAFE_OWN_DATA_DESCRIPTOR,getOwnDataDescriptor}from"../../../internal/data-descriptors.js";import{devWarnOnce}from"../../../internal/dev-mode-attribute-warning.js";import{normalizeLyraTimestamp}from"../timestamp.js";import{LYRA_DEFAULT_archiveConversation,LYRA_DEFAULT_deleteConversation,LYRA_DEFAULT_pinConversation,LYRA_DEFAULT_searchThreads,LYRA_DEFAULT_threadGroupArchived,LYRA_DEFAULT_threadGroupCollapse,LYRA_DEFAULT_threadGroupExpand,LYRA_DEFAULT_threadGroupPinned,LYRA_DEFAULT_threadGroupPrevious30Days,LYRA_DEFAULT_threadGroupPrevious7Days,LYRA_DEFAULT_threadGroupToday,LYRA_DEFAULT_threadGroupYesterday,LYRA_DEFAULT_threadListEmpty,LYRA_DEFAULT_threadListLabel,LYRA_DEFAULT_threadListMatchAnnounce,LYRA_DEFAULT_unarchiveConversation,LYRA_DEFAULT_unpinConversation}from"../../../internal/default-strings/conversation.generated.js";import{LYRA_DEFAULT_clear,LYRA_DEFAULT_loading,LYRA_DEFAULT_noData,LYRA_DEFAULT_noMatches,LYRA_DEFAULT_retry,LYRA_DEFAULT_tableLoadFailed}from"../../../internal/default-strings/shared.generated.js";
|
|
1
|
+
import{__decorate}from"tslib";import{SourcePageController}from"../../../internal/source-page-controller.js";import{finiteInteger}from"../../../internal/numbers.js";import{createHaystackMemo}from"../../../internal/search-haystack.js";import{relayNativeEvent}from"../../../internal/native-event-relay.js";import{AnnouncementSinkController}from"../../../internal/announcer.js";import{collectionSupport,publicCollectionTruncation}from"../../../internal/collection-snapshot.js";import{tag}from"../../../internal/prefix.js";import{html,nothing}from"lit";import{property,query,state}from"lit/decorators.js";import{guard}from"lit/directives/guard.js";import{LyraElement}from"../../../internal/lyra-element.js";import{HostDescriptionController}from"../../../internal/aria-controls.js";import{archiveIcon,chevronIcon,closeIcon,pinIcon,trashIcon}from"../../../internal/icons.js";import{styles}from"./thread-list.styles.js";import{contextualSizes}from"../../../internal/contextual-vocabulary.styles.js";import{requestThenCommit}from"../../../internal/request-commit.js";import{renderDataState}from"../../../internal/data-state-renderer.js";import{calendarDaysAgo,startOfLocalDay}from"../../../internal/group-by-recency.js";import{optionalSizeConverter}from"../../../internal/variants.js";import{getDateTimeFormat,getNumberFormat,resolveIntlLocale}from"../../../internal/intl-cache.js";import{MISSING_OWN_DATA_DESCRIPTOR,UNSAFE_OWN_DATA_DESCRIPTOR,getOwnDataDescriptor}from"../../../internal/data-descriptors.js";import{devWarnOnce}from"../../../internal/dev-mode-attribute-warning.js";import{normalizeLyraTimestamp}from"../timestamp.js";import{LYRA_DEFAULT_archiveConversation,LYRA_DEFAULT_deleteConversation,LYRA_DEFAULT_pinConversation,LYRA_DEFAULT_searchThreads,LYRA_DEFAULT_threadGroupArchived,LYRA_DEFAULT_threadGroupCollapse,LYRA_DEFAULT_threadGroupExpand,LYRA_DEFAULT_threadGroupPinned,LYRA_DEFAULT_threadGroupPrevious30Days,LYRA_DEFAULT_threadGroupPrevious7Days,LYRA_DEFAULT_threadGroupToday,LYRA_DEFAULT_threadGroupYesterday,LYRA_DEFAULT_threadListEmpty,LYRA_DEFAULT_threadListInputLimit,LYRA_DEFAULT_threadListLabel,LYRA_DEFAULT_threadListMatchAnnounce,LYRA_DEFAULT_unarchiveConversation,LYRA_DEFAULT_unpinConversation}from"../../../internal/default-strings/conversation.generated.js";import{LYRA_DEFAULT_clear,LYRA_DEFAULT_loading,LYRA_DEFAULT_noData,LYRA_DEFAULT_noMatches,LYRA_DEFAULT_retry,LYRA_DEFAULT_tableLoadFailed}from"../../../internal/default-strings/shared.generated.js";const THREADS_AND_SLOTTED_CONTENT_WARNING_KEY="lyra-thread-list:threads-and-slotted-content",THREADS_AND_SLOTTED_CONTENT_WARNING="<lr-thread-list>: both `threads` and slotted content were supplied; `threads` data mode wins and the default slot is ignored.",canonicalThreadSnapshots=new WeakMap,sourceThreadByProjection=new WeakMap;function normalizeProjectedTimestamp(value){if(!(typeof value!="string"&&typeof value!="number"&&(value===null||typeof value!="object")))return normalizeLyraTimestamp(value)}function isSafeNonArrayObject(value){if(value===null||typeof value!="object")return!1;try{return!Array.isArray(value)}catch{return!1}}function projectThread(value){if(!isSafeNonArrayObject(value))return;const id=getOwnDataDescriptor(value,"id"),title=getOwnDataDescriptor(value,"title"),excerpt=getOwnDataDescriptor(value,"excerpt"),timestamp=getOwnDataDescriptor(value,"timestamp"),pinned=getOwnDataDescriptor(value,"pinned"),archived=getOwnDataDescriptor(value,"archived");if(id===MISSING_OWN_DATA_DESCRIPTOR||id===UNSAFE_OWN_DATA_DESCRIPTOR||title===MISSING_OWN_DATA_DESCRIPTOR||title===UNSAFE_OWN_DATA_DESCRIPTOR||typeof id.value!="string"||id.value.trim().length===0||typeof title.value!="string")return;const thread=Object.freeze({id:id.value,title:title.value,excerpt:excerpt===MISSING_OWN_DATA_DESCRIPTOR||excerpt===UNSAFE_OWN_DATA_DESCRIPTOR||typeof excerpt.value!="string"?void 0:excerpt.value,timestamp:timestamp===MISSING_OWN_DATA_DESCRIPTOR||timestamp===UNSAFE_OWN_DATA_DESCRIPTOR?void 0:normalizeProjectedTimestamp(timestamp.value),pinned:pinned===MISSING_OWN_DATA_DESCRIPTOR||pinned===UNSAFE_OWN_DATA_DESCRIPTOR||typeof pinned.value!="boolean"?!1:pinned.value,archived:archived===MISSING_OWN_DATA_DESCRIPTOR||archived===UNSAFE_OWN_DATA_DESCRIPTOR||typeof archived.value!="boolean"?!1:archived.value});return sourceThreadByProjection.set(thread,value),thread}function canonicalThreads(values){const cached=canonicalThreadSnapshots.get(values);if(cached)return cached;const projected=[],seen=new Set;for(const value of values){const thread=projectThread(value);!thread||seen.has(thread.id)||(seen.add(thread.id),projected.push(thread))}const snapshot=Object.freeze(projected);return canonicalThreadSnapshots.set(values,snapshot),snapshot}class LyraThreadList extends LyraElement{constructor(){super(...arguments),this.inputLimitAnnouncements=new AnnouncementSinkController(this),this.hostDescription=new HostDescriptionController(this,()=>this.renderRoot.querySelector('[part="base"][role="region"]')),this.sourceEpoch=0,this.sourceSyncing=!1,this.sourceRequestVersion=0,this.sourceRows=[],this.sourceRowIdentities=new WeakSet,this.sourceGroupIdentities=new WeakSet,this.sourceStateVersion=0,this.sourcePages=new SourcePageController(this,{normalizeRecord:(record,isCurrent)=>this.projectSourceThread(record,isCurrent),validateMetadata:(result,query2)=>this.validateSourceGroups(result,query2),onChange:()=>{this.sourceStateVersion++}}),this.sourcePage=0,this.sourcePageSize=100,this.onSourcePage=event=>{event.stopPropagation(),this.sourceMode&&!this.sourceBlocked&&(this.sourcePage=event.detail.page-1)},this.threads=[],this.activeConversationId="",this.searchable=!1,this.size="m",this.grouping="date",this.collapsedGroupIds=[],this.rowActions=[],this.withArchived=!1,this.withoutRename=!1,this.stickyGroups=!1,this.error=!1,this.errorDescription="",this.stickyGroupItems=new Map,this.searchText="",this.hasEmptySlot=!1,this.hasDefaultSlotContent=!1,this.focusTaskGeneration=0,this.injectedListItemRoles=new Set,this.contentRefreshPending=!1,this.sourceStatusInitialized=!1,this.previousSourceStatus="",this.titleHaystacks=createHaystackMemo((thread,locale)=>thread.title.toLocaleLowerCase(resolveIntlLocale(locale))),this.excerptHaystacks=createHaystackMemo((thread,locale)=>(thread.excerpt??"").toLocaleLowerCase(resolveIntlLocale(locale))),this.onSearchInput=e=>{e.stopPropagation(),this.setSearchText(e.target.value)},this.onClearSearch=()=>{this.searchText!==""&&(this.setSearchText(""),this.searchInputEl?.focus())},this.onSearchKeyDown=e=>{if(e.key!=="ArrowDown")return;const focusGeneration=++this.focusTaskGeneration,rows=this.navigableRows(),list=this.virtualListEl,items=list?.items??[],first=items[items.findIndex(item=>item.kind==="thread")],firstId=first?.kind==="thread"?first.thread.id:void 0;rows[0]&&(!this.dataMode||rows[0].conversationId===firstId)?(e.preventDefault(),this.selectButtonEl(rows[0])?.focus()):this.dataMode&&list?.scrollContainer&&firstId!==void 0&&(e.preventDefault(),this.focusVirtualThreadFromItemIndex(list,items,0,1,focusGeneration))},this.onSearchFocus=event=>{relayNativeEvent(this,event)},this.onSearchBlur=event=>{relayNativeEvent(this,event)},this.onListKeyDown=e=>{if(e.key!=="ArrowDown"&&e.key!=="ArrowUp"&&e.key!=="Home"&&e.key!=="End"||e.defaultPrevented)return;const origin=e.composedPath()[0];if(origin?.nodeType===1&&origin.closest('[part="group-toggle"]'))return;const focusGeneration=++this.focusTaskGeneration,list=this.virtualListEl;if(this.dataMode&&(e.key==="Home"||e.key==="End")&&list?.scrollContainer){const items2=list.items;e.preventDefault(),this.focusVirtualThreadFromItemIndex(list,items2,e.key==="Home"?0:items2.length-1,e.key==="Home"?1:-1,focusGeneration);return}const rows=this.navigableRows();if(rows.length===0)return;const currentIndex=this.focusedRowIndex(rows);let targetIndex;if(e.key==="Home"?targetIndex=0:e.key==="End"?targetIndex=rows.length-1:e.key==="ArrowDown"?targetIndex=currentIndex<0?0:currentIndex+1:targetIndex=currentIndex<0?rows.length-1:currentIndex-1,e.preventDefault(),targetIndex>=0&&targetIndex<rows.length){this.selectButtonEl(rows[targetIndex])?.focus();return}if(!list?.scrollContainer)return;const currentRow=rows[currentIndex];if(!currentRow)return;const items=list.items,currentItemIndex=items.findIndex(item=>item.kind==="thread"&&item.thread.id===currentRow.conversationId);if(currentItemIndex<0)return;const direction=e.key==="ArrowDown"?1:-1;this.focusVirtualThreadFromItemIndex(list,items,currentItemIndex+direction,direction,focusGeneration)},this.renderRow=item=>{const thread=item,source=this.sourceThread(thread),row=html`
|
|
2
2
|
<lr-conversation-item
|
|
3
3
|
exportparts="base:row-item-base, base-menu-open:row-item-base-menu-open, active-indicator:row-item-active-indicator, select-button:row-item-select-button, start:row-item-start, content:row-item-content, label:row-item-label, label-input:row-item-label-input, rename-button:row-item-rename-button, excerpt:row-item-excerpt, meta:row-item-meta, timestamp:row-item-timestamp, actions:row-item-actions"
|
|
4
4
|
conversation-id=${thread.id}
|
|
@@ -8,8 +8,8 @@ import{__decorate}from"tslib";import{relayNativeEvent}from"../../../internal/nat
|
|
|
8
8
|
?active=${thread.id===this.activeConversationId}
|
|
9
9
|
size=${this.size??"m"}
|
|
10
10
|
.withoutRename=${this.withoutRename}
|
|
11
|
-
@lr-select=${e=>{e.stopPropagation()
|
|
12
|
-
@lr-rename=${e=>{e.stopPropagation(),this.emit("lr-thread-rename",{conversationId:thread.id,label:e.detail.label})}}
|
|
11
|
+
@lr-select=${e=>{e.stopPropagation(),!(e.target!==e.currentTarget||!this.canUseThread(thread))&&this.emit("lr-select",{conversationId:thread.id})}}
|
|
12
|
+
@lr-rename=${e=>{e.stopPropagation(),this.canUseThread(thread)&&this.emit("lr-thread-rename",{conversationId:thread.id,label:e.detail.label})}}
|
|
13
13
|
>
|
|
14
14
|
${this.renderStart?html`<span slot="start" part="row-start" inert
|
|
15
15
|
>${this.renderStart(source)}</span
|
|
@@ -28,13 +28,13 @@ import{__decorate}from"tslib";import{relayNativeEvent}from"../../../internal/nat
|
|
|
28
28
|
>`:nothing}
|
|
29
29
|
${this.rowActions.length>0||this.renderActions?this.renderRowActions(thread):nothing}
|
|
30
30
|
</lr-conversation-item>
|
|
31
|
-
`;return this.wrapRow?html`<div part="row-wrapper">${this.wrapRow(source,row)}</div>`:row},this.renderItem=item=>{const listItem=item;return listItem.kind==="group"?this.renderGroupHeader(listItem):this.renderRow(listItem.thread)},this.renderStickyGroup=group=>{const item=this.stickyGroupItems.get(String(group.key));return item?this.renderGroupHeader(item,{sticky:!0}):nothing},this.itemKey=item=>{const listItem=item;return listItem.kind==="group"?this.groupItemKey(listItem.id):this.threadItemKey(listItem.thread.id)},this.onDefaultSlotChange=e=>{const assigned=e.target.assignedElements({flatten:!0}),keep=new Set(assigned);this.restoreInjectedListItemRoles(keep),this.markAsListItems(assigned),this.hasDefaultSlotContent=assigned.length>0},this.stopEvent=e=>{e.stopPropagation()},this.stopRowFocus=e=>{e.bubbles&&e.stopPropagation()},this.onEmptySlotChange=e=>{this.hasEmptySlot=e.target.assignedElements({flatten:!0}).length>0},this.onErrorRetry=()=>{this.error=!1}}static{this.defaultStrings={...super.defaultStrings,archiveConversation:LYRA_DEFAULT_archiveConversation,clear:LYRA_DEFAULT_clear,deleteConversation:LYRA_DEFAULT_deleteConversation,loading:LYRA_DEFAULT_loading,noData:LYRA_DEFAULT_noData,noMatches:LYRA_DEFAULT_noMatches,pinConversation:LYRA_DEFAULT_pinConversation,retry:LYRA_DEFAULT_retry,searchThreads:LYRA_DEFAULT_searchThreads,tableLoadFailed:LYRA_DEFAULT_tableLoadFailed,threadGroupArchived:LYRA_DEFAULT_threadGroupArchived,threadGroupCollapse:LYRA_DEFAULT_threadGroupCollapse,threadGroupExpand:LYRA_DEFAULT_threadGroupExpand,threadGroupPinned:LYRA_DEFAULT_threadGroupPinned,threadGroupPrevious30Days:LYRA_DEFAULT_threadGroupPrevious30Days,threadGroupPrevious7Days:LYRA_DEFAULT_threadGroupPrevious7Days,threadGroupToday:LYRA_DEFAULT_threadGroupToday,threadGroupYesterday:LYRA_DEFAULT_threadGroupYesterday,threadListEmpty:LYRA_DEFAULT_threadListEmpty,threadListLabel:LYRA_DEFAULT_threadListLabel,threadListMatchAnnounce:LYRA_DEFAULT_threadListMatchAnnounce,unarchiveConversation:LYRA_DEFAULT_unarchiveConversation,unpinConversation:LYRA_DEFAULT_unpinConversation}}static{this.collectionSupport=collectionSupport}static{this.ownedCollectionProperties=Object.freeze(["threads","groupOrder","collapsedGroupIds","rowActions"])}static{this.identityCollectionProperties=Object.freeze(["threads"])}static{this.immutableSourceCollectionProperties=Object.freeze(["threads"])}static{this.styles=[LyraElement.styles,contextualSizes,styles]}adoptedCallback(){super.adoptedCallback(),this.hostDescription.adopted()}get dataMode(){return this.normalizedThreads.length>0||!this.hasDefaultSlotContent}connectedCallback(){if(super.connectedCallback(),this.hasUpdated){const defaultSlotted=this.defaultSlottedElements();this.hasDefaultSlotContent=defaultSlotted.length>0,this.normalizedThreads.length===0&&this.markAsListItems(defaultSlotted)}}willUpdate(changed){super.willUpdate(changed),changed.size===0&&(this.dataModel=void 0),changed.has("size")&&optionalSizeConverter.normalize(this.size)===void 0&&(this.size="m"),(changed.has("threads")||changed.has("searchText")||changed.has("filter")||changed.has("grouping")||changed.has("groupBy")||changed.has("groupOrder")||changed.has("collapsedGroupIds")||changed.has("withArchived"))&&this.focusTaskGeneration++;const syncSlottedContent=()=>{const defaultSlotted=this.defaultSlottedElements();this.hasDefaultSlotContent=defaultSlotted.length>0;const hasDataThreads=this.normalizedThreads.length>0;hasDataThreads&&defaultSlotted.length>0?(this.restoreInjectedListItemRoles(),devWarnOnce(THREADS_AND_SLOTTED_CONTENT_WARNING_KEY,THREADS_AND_SLOTTED_CONTENT_WARNING)):hasDataThreads||this.markAsListItems(defaultSlotted)};this.hasUpdated?changed.has("threads")&&syncSlottedContent():this.seedFirstRenderState(()=>{this.hasEmptySlot=Array.from(this.children).some(el=>el.getAttribute("slot")==="empty"),syncSlottedContent()})}updated(changed){super.updated(changed),this.virtualListEl?.requestUpdate()}defaultSlottedElements(){return Array.from(this.children).filter(el=>!el.getAttribute("slot"))}markAsListItems(elements){for(const el of elements)el.hasAttribute("role")||(el.setAttribute("role","listitem"),this.injectedListItemRoles.add(el))}restoreInjectedListItemRoles(keep=new Set){for(const element of this.injectedListItemRoles)keep.has(element)||(element.getAttribute("role")==="listitem"&&element.removeAttribute("role"),this.injectedListItemRoles.delete(element))}disconnectedCallback(){this.focusTaskGeneration++,this.restoreInjectedListItemRoles(),super.disconnectedCallback()}get normalizedThreads(){return canonicalThreads(this.threads)}sourceThread(thread){return sourceThreadByProjection.get(thread)??thread}sourceThreads(threads){return Object.freeze(threads.map(thread=>this.sourceThread(thread)))}get visibleThreads(){const q=this.searchText.trim().toLocaleLowerCase(this.effectiveLocale),withArchiveFilter=this.normalizedThreads.filter(thread=>this.withArchived||!thread.archived);return q===""?withArchiveFilter:withArchiveFilter.filter(t=>this.filter?this.filter(this.sourceThread(t),q):defaultFilter(t,q,this.effectiveLocale))}bucketFor(thread,today){if(thread.archived)return"archived";if(thread.pinned)return"pinned";const ts=thread.timestamp===void 0?void 0:normalizeLyraTimestamp(thread.timestamp);if(!ts)return"previous30";const diffDays=calendarDaysAgo(today,ts);return diffDays<=0?"today":diffDays===1?"yesterday":diffDays<=7?"previous7":diffDays<=30?"previous30":`month:${ts.getFullYear()}-${String(ts.getMonth()+1).padStart(2,"0")}`}bucketLabel(key){const groupDate=key.startsWith("month:")?this.dateForBucket(key):void 0;switch(key){case"pinned":return this.localize("threadGroupPinned");case"today":return this.localize("threadGroupToday");case"yesterday":return this.localize("threadGroupYesterday");case"previous7":return this.localize("threadGroupPrevious7Days");case"previous30":return this.localize("threadGroupPrevious30Days");case"archived":return this.localize("threadGroupArchived");default:return this.formatDate?.(groupDate)??getDateTimeFormat(this.effectiveLocale,{month:"long",year:"numeric"}).format(groupDate)}}dateForBucket(key){if(!key.startsWith("month:"))return;const[,ym]=key.split(":"),[year,month]=ym.split("-").map(Number);return new Date(year,month-1,1)}orderedCustomGroupIds(grouped){const firstSeen=[...grouped.keys()];if(typeof this.groupOrder=="function")try{return[...firstSeen].sort(this.groupOrder)}catch{return firstSeen}if(!this.groupOrder)return firstSeen;const ordered=[...new Set(this.groupOrder)].filter(id=>grouped.has(id)),listed=new Set(ordered);return[...ordered,...firstSeen.filter(id=>!listed.has(id))]}groupedItems(grouped,order,contextFor,defaultLabel){const collapsedIds=new Set(this.collapsedGroupIds),items=[];for(const id of order){const groupedThreads=grouped.get(id);if(!groupedThreads||groupedThreads.length===0)continue;const context=contextFor(id,groupedThreads),label=this.getGroupLabel?.(context)??defaultLabel(context);items.push({kind:"group",id,label,adornment:this.renderGroupAdornment?.(context),collapsed:collapsedIds.has(id)}),collapsedIds.has(id)||items.push(...groupedThreads.map(thread=>({kind:"thread",thread})))}return items}buildItems(visible,today){if(this.grouping==="none")return visible.map(thread=>({kind:"thread",thread}));if(this.grouping==="custom"){if(!this.groupBy)return visible.map(thread=>({kind:"thread",thread}));const grouped2=new Map;for(const thread of visible){let id;try{id=this.groupBy(this.sourceThread(thread))}catch{continue}if(typeof id!="string"||id.trim().length===0)continue;const existing=grouped2.get(id);existing?existing.push(thread):grouped2.set(id,[thread])}return this.groupedItems(grouped2,this.orderedCustomGroupIds(grouped2),(id,groupedThreads)=>({id,threads:this.sourceThreads(groupedThreads)}),context=>context.id)}const grouped=new Map,monthKeys=new Set;for(const thread of visible){const id=this.bucketFor(thread,today),existing=grouped.get(id);existing?existing.push(thread):grouped.set(id,[thread]),id.startsWith("month:")&&monthKeys.add(id)}const order=["pinned","today","yesterday","previous7","previous30",...[...monthKeys].sort().reverse(),"archived"];return this.groupedItems(grouped,order,(id,groupedThreads)=>{const bucket=id;return{id,threads:this.sourceThreads(groupedThreads),bucket,date:bucket.startsWith("month:")?this.dateForBucket(bucket):void 0}},context=>this.bucketLabel(context.bucket))}setSearchText(text){if(this.focusTaskGeneration++,this.searchText=text,!this.dataMode){this.emit("lr-query-change",{text});return}const count=this.visibleThreads.length;this.emit("lr-filter-change",{text,matchCount:count}),this.announceMatchCount(count)}announceMatchCount(count){this.searchText.trim()!==""&&this.liveRegion?.announce(this.localize("threadListMatchAnnounce",void 0,{count:getNumberFormat(this.effectiveLocale).format(count),pluralCount:count}))}itemElement(conversationId){return this.rowElements().find(row=>row.conversationId===conversationId)??null}rowElements(){return this.dataMode?(this.virtualListEl?.renderedRows??[]).flatMap(row=>[...row.querySelectorAll(tag("conversation-item"))]):[...this.querySelectorAll(tag("conversation-item"))]}selectButtonEl(row){return row.shadowRoot?.querySelector('[part="select-button"]')??null}isNavigableRow(row){const option=this.selectButtonEl(row);return!!(option&&option.getAttribute("role")==="button"&&row.hidden===!1&&row.getAttribute("aria-hidden")!=="true"&&row.getAttribute("aria-disabled")!=="true"&&!row.inert&&row.closest("[inert]")===null&&option.hidden===!1&&option.getAttribute("aria-hidden")!=="true"&&option.getAttribute("aria-disabled")!=="true"&&!option.inert&&option.closest("[inert]")===null)}navigableRows(){return this.rowElements().filter(row=>this.isNavigableRow(row))}focusedRowIndex(rows){return rows.findIndex(row=>row.matches(":focus-within"))}focusVirtualThreadFromItemIndex(list,items,initialItemIndex,direction,focusGeneration){(async()=>{let targetItemIndex=initialItemIndex;for(;targetItemIndex>=0&&targetItemIndex<items.length;){for(;items[targetItemIndex]?.kind==="group";)targetItemIndex+=direction;const targetItem=items[targetItemIndex];if(!targetItem||targetItem.kind!=="thread")return;const targetId=targetItem.thread.id;list.scrollToIndex(targetItemIndex,{align:"auto",behavior:"auto"});let targetRow;for(let attempt=0;attempt<2;attempt+=1){if(await new Promise(resolve=>{const view=this.ownerDocument.defaultView;view?view.requestAnimationFrame(()=>resolve()):requestAnimationFrame(()=>resolve())}),focusGeneration!==this.focusTaskGeneration||!this.isConnected||this.virtualListEl!==list||(await list.updateComplete,focusGeneration!==this.focusTaskGeneration||!this.isConnected||this.virtualListEl!==list))return;if(targetRow=this.rowElements().find(row=>row.conversationId===targetId),targetRow)break}if(targetRow&&this.isNavigableRow(targetRow)){this.selectButtonEl(targetRow)?.focus();return}targetItemIndex+=direction}})()}renderRowActions(thread){const source=this.sourceThread(thread);return html`
|
|
31
|
+
`;return this.wrapRow?html`<div part="row-wrapper">${this.wrapRow(source,row)}</div>`:row},this.renderItem=item=>{const listItem=item;return listItem.kind==="group"?this.renderGroupHeader(listItem):this.renderRow(listItem.thread)},this.renderStickyGroup=group=>{const item=this.stickyGroupItems.get(String(group.key));return item?this.renderGroupHeader(item,{sticky:!0}):nothing},this.itemKey=item=>{const listItem=item;return listItem.kind==="group"?this.groupItemKey(listItem.id):this.threadItemKey(listItem.thread.id)},this.onDefaultSlotChange=e=>{const assigned=e.target.assignedElements({flatten:!0}),keep=new Set(assigned);this.restoreInjectedListItemRoles(keep),this.markAsListItems(assigned),this.hasDefaultSlotContent=assigned.length>0},this.stopEvent=e=>{e.stopPropagation()},this.stopRowFocus=e=>{e.bubbles&&e.stopPropagation()},this.onEmptySlotChange=e=>{this.hasEmptySlot=e.target.assignedElements({flatten:!0}).length>0},this.onErrorRetry=()=>{this.error=!1}}static{this.defaultStrings={...super.defaultStrings,archiveConversation:LYRA_DEFAULT_archiveConversation,clear:LYRA_DEFAULT_clear,deleteConversation:LYRA_DEFAULT_deleteConversation,loading:LYRA_DEFAULT_loading,noData:LYRA_DEFAULT_noData,noMatches:LYRA_DEFAULT_noMatches,pinConversation:LYRA_DEFAULT_pinConversation,retry:LYRA_DEFAULT_retry,searchThreads:LYRA_DEFAULT_searchThreads,tableLoadFailed:LYRA_DEFAULT_tableLoadFailed,threadGroupArchived:LYRA_DEFAULT_threadGroupArchived,threadGroupCollapse:LYRA_DEFAULT_threadGroupCollapse,threadGroupExpand:LYRA_DEFAULT_threadGroupExpand,threadGroupPinned:LYRA_DEFAULT_threadGroupPinned,threadGroupPrevious30Days:LYRA_DEFAULT_threadGroupPrevious30Days,threadGroupPrevious7Days:LYRA_DEFAULT_threadGroupPrevious7Days,threadGroupToday:LYRA_DEFAULT_threadGroupToday,threadGroupYesterday:LYRA_DEFAULT_threadGroupYesterday,threadListEmpty:LYRA_DEFAULT_threadListEmpty,threadListInputLimit:LYRA_DEFAULT_threadListInputLimit,threadListLabel:LYRA_DEFAULT_threadListLabel,threadListMatchAnnounce:LYRA_DEFAULT_threadListMatchAnnounce,unarchiveConversation:LYRA_DEFAULT_unarchiveConversation,unpinConversation:LYRA_DEFAULT_unpinConversation}}static{this.collectionSupport=collectionSupport}static{this.ownedCollectionProperties=Object.freeze(["threads","groupOrder","collapsedGroupIds","rowActions"])}static{this.identityCollectionProperties=Object.freeze(["threads"])}static{this.immutableSourceCollectionProperties=Object.freeze(["threads"])}static{this.styles=[LyraElement.styles,contextualSizes,styles]}get inputLimitMessage(){return this.sourceMode?"":publicCollectionTruncation(this,"threads")?this.localize("threadListInputLimit"):""}syncInputLimitAnnouncement(){const loss=this.sourceMode?void 0:publicCollectionTruncation(this,"threads");this.inputLimitAnnouncements.transition("input-limit",loss?`${loss.source}:${loss.retained}:${loss.kept}`:"",this.inputLimitMessage,"polite")}adoptedCallback(){super.adoptedCallback(),this.hostDescription.adopted(),this.inputLimitAnnouncements.adopted(),this.sourcePages.adopted(),this.sourceRequestVersion++,this.sourceActiveInputs=void 0,this.sourceFilterIntent=void 0}get dataSource(){return this._dataSource}set dataSource(value){const previous=this._dataSource;this._dataSource=value,this.sourceEpoch++,this.requestUpdate("dataSource",previous)}get sourceTotal(){return this.sourceMode?this.sourcePages.state.result?.total??null:null}get sourceMode(){return this.dataSource!==void 0}get sourceFailed(){return this.sourceMode&&!this.sourcePages.state.pending&&!this.sourcePages.state.result}get sourceBlocked(){return this.sourceMode&&(!this.isConnected||this.error||this.sourcePages.state.pending||this.sourceFailed)}projectSourceThread(record,isCurrent){const raw=record.value;if(!isSafeNonArrayObject(raw))throw new TypeError("Invalid source thread");let units=0;const snapshot={};for(const key of["id","title","excerpt","timestamp","pinned","archived"]){if(!isCurrent())throw new Error("Obsolete source thread");const field=getOwnDataDescriptor(raw,key);if(!isCurrent())throw new Error("Obsolete source thread");if(field===UNSAFE_OWN_DATA_DESCRIPTOR)throw new TypeError("Invalid source thread field");if(field!==MISSING_OWN_DATA_DESCRIPTOR&&(snapshot[key]=field.value),field!==MISSING_OWN_DATA_DESCRIPTOR&&typeof field.value=="string"&&(units+=field.value.length,field.value.length>65536||units>65536))throw new RangeError("Source thread text too large")}const value=projectThread(snapshot);if(!isCurrent())throw new Error("Obsolete source thread");if(!value||value.id!==record.key)throw new TypeError("Invalid source thread identity");return sourceThreadByProjection.set(value,raw),this.sourceRowIdentities.add(value),{key:record.key,order:record.order,value}}validateSourceGroups(result,query2){if(query2.grouping==="none"){if(result.groups?.length)throw new TypeError("Unexpected source groups");return}if(!result.groups)throw new TypeError("Missing source groups");if(!result.rows.length)return;const size=this.sourcePages.state.pageSize,start=Math.min(this.sourcePages.state.page,Math.floor((result.total-1)/size))*size,end=start+result.rows.length;let covered=start,previousEnd=-1;for(const group of result.groups){const groupEnd=group.startIndex+group.itemCount;if(group.startIndex<previousEnd||Math.max(start,group.startIndex)!==covered)throw new TypeError("Invalid source group coverage");previousEnd=groupEnd,covered=Math.min(end,groupEnd)}if(covered!==end)throw new TypeError("Incomplete source groups")}syncSource(){if(!(!this.sourcePages||this.sourceSyncing)){this.sourceSyncing=!0;try{if(!this.sourceMode){this.sourceInputs&&(this.sourceRequestVersion++,this.focusTaskGeneration++,this.sourcePages.bind(void 0)),this.sourceInputs=void 0,this.sourceQueryInputs=void 0,this.sourceResult=void 0,this.sourceRows=[],this.sourcePageModel=void 0,this.sourceActiveInputs=void 0,this.sourceActiveReveal=void 0,this.sourceFilterIntent=void 0;return}const source=this.dataSource,size=finiteInteger(this.sourcePageSize,100,1,500);let page=finiteInteger(this.sourcePage,0,0,Math.floor(Number.MAX_SAFE_INTEGER/size));const queryInputs=[this.searchText,this.withArchived,this.grouping,this.filter,this.groupBy,this.getGroupLabel,this.groupOrder,size];this.hasUpdated&&this.sourceQueryInputs&&queryInputs.some((value,index)=>value!==this.sourceQueryInputs[index])&&(page=0,this.sourcePage=0),this.sourceQueryInputs=queryInputs;const revision=source.revision,inputs=[source,revision,this.sourceEpoch,this.effectiveLocale,...queryInputs,this.collapsedGroupIds,page];if(this.sourceInputs&&inputs.every((value,index)=>value===this.sourceInputs[index]))return;this.sourceInputs=inputs,this.sourceRequestVersion++,this.focusTaskGeneration++,this.sourceRows=[],this.sourceResult=void 0,this.sourcePageModel=void 0,this.sourceActiveReveal=void 0,this.sourceFilterIntent=void 0,this.sourcePages.bind({source,revision,epoch:this.sourceEpoch,locale:this.effectiveLocale});const query2=Object.freeze({search:this.searchText,withArchived:this.withArchived,grouping:this.grouping,collapsedGroupIds:this.collapsedGroupIds,filter:this.filter,groupBy:this.groupBy,getGroupLabel:this.getGroupLabel,groupOrder:this.groupOrder});this.sourcePages.request(query2,page,size)}catch{this.sourcePages.bind(void 0),this.sourceRows=[],this.sourceResult=void 0,this.sourcePageModel=void 0}finally{this.sourceSyncing=!1}}}acceptSourcePage(){const result=this.sourcePages.state.result;if(!result||result===this.sourceResult)return;this.sourceResult=result,this.sourceRows=result.rows.map(record=>record.value),this.sourcePageModel=void 0,this.sourcePage!==this.sourcePages.state.page&&(this.sourceSyncing=!0,this.sourcePage=this.sourcePages.state.page,this.sourceSyncing=!1,this.sourceInputs=this.sourceInputs?[...this.sourceInputs.slice(0,-1),this.sourcePages.state.page]:void 0);const intent=this.sourceFilterIntent;if(this.sourceFilterIntent=void 0,intent?.version===this.sourceRequestVersion){const source=this.dataSource,epoch=this.sourceEpoch,state2=this.sourcePages.state,owner=this.ownerDocument;if(this.emit("lr-filter-change",{text:intent.text,matchCount:result.total}),!this.isConnected||this.ownerDocument!==owner||this.dataSource!==source||this.sourceEpoch!==epoch||this.sourceRequestVersion!==intent.version||this.sourcePages.state!==state2||this.sourceBlocked)return;this.announceMatchCount(result.total)}const reveal=this.sourceActiveReveal;this.sourceActiveReveal=void 0,reveal?.version===this.sourceRequestVersion&&this.revealSourceActive(reveal.id,reveal.version)}syncSourceActive(){if(!this.activeConversationId){this.sourceActiveInputs=void 0;return}if(!this.sourceMode||this.sourceBlocked)return;const source=this.dataSource,id=this.activeConversationId,inputs=[source,source.revision,this.sourceEpoch,this.effectiveLocale,...this.sourceQueryInputs??[],id];if(this.sourceActiveInputs&&inputs.every((value,index)=>value===this.sourceActiveInputs[index]))return;this.sourceActiveInputs=inputs;const version=this.sourceRequestVersion,owner=this.ownerDocument;this.sourcePages.locate(id).then(index=>{if(index===null||!this.isConnected||this.ownerDocument!==owner||!this.sourceMode||this.dataSource!==source||this.activeConversationId!==id||this.sourceRequestVersion!==version)return;const page=Math.floor(index/finiteInteger(this.sourcePageSize,100,1,500));if(page===this.sourcePage){this.revealSourceActive(id,version);return}this.sourcePage=page,this.sourceActiveReveal={id,version:this.sourceRequestVersion}})}revealSourceActive(id,version){const owner=this.ownerDocument;this.updateComplete.then(async()=>{const list=this.virtualListEl;if(!list||(await list.updateComplete,!this.isConnected||this.ownerDocument!==owner||!this.sourceMode||this.sourceBlocked||this.sourceRequestVersion!==version||this.activeConversationId!==id||list!==this.virtualListEl))return;const index=this.model().items.findIndex(item=>item.kind==="thread"&&item.thread.id===id);index>=0&&list.scrollToIndex(index,{align:"auto",behavior:"auto"})})}sourceModel(){const key=[this.sourceResult,this.collapsedGroupIds,this.stickyGroups];if(this.sourcePageModel&&key.every((value,index)=>value===this.sourcePageModel.key[index]))return this.sourcePageModel;const items=[],groups=this.sourceResult?.groups??[];if(!groups.length)items.push(...this.sourceRows.map(thread=>({kind:"thread",thread})));else{const collapsed=new Set(this.collapsedGroupIds),start=this.sourcePages.state.page*this.sourcePages.state.pageSize;for(const group of groups){const header={kind:"group",id:group.key,label:group.label,collapsed:collapsed.has(group.key)};if(this.sourceGroupIdentities.add(header),items.push(header),!header.collapsed){const from=Math.max(0,group.startIndex-start),to=Math.min(this.sourceRows.length,group.startIndex+group.itemCount-start);for(let index=from;index<to;index++)items.push({kind:"thread",thread:this.sourceRows[index]})}}}return this.sourcePageModel={key,visible:this.sourceRows,items,groups:this.stickyGroups?this.stickyAnchors(items):void 0},this.sourcePageModel}canUseThread(thread){return!(this.sourceMode||this.sourceRowIdentities.has(thread))||this.sourceMode&&!this.sourceBlocked&&this.sourceRows.includes(thread)}canUseGroup(item){return!(this.sourceMode||this.sourceGroupIdentities.has(item))||this.sourceMode&&!this.sourceBlocked&&this.sourceModel().items.includes(item)}currentSourceRetry(source,state2){return this.isConnected&&this.sourceMode&&this.dataSource===source&&this.sourcePages.state===state2&&(this.error||this.sourceFailed)}retrySource(source,state2){this.currentSourceRetry(source,state2)&&(this.error=!1,this.sourceInputs=void 0,this.syncSource(),this.sourceStateVersion++)}get dataMode(){return this.sourceMode||this.normalizedThreads.length>0||!this.hasDefaultSlotContent}connectedCallback(){if(super.connectedCallback(),this.hasUpdated){this.sourceMode&&(this.sourceActiveInputs=void 0,this.sourceStateVersion++),this.syncInputLimitAnnouncement();const defaultSlotted=this.defaultSlottedElements();this.hasDefaultSlotContent=defaultSlotted.length>0,!this.sourceMode&&this.normalizedThreads.length===0&&this.markAsListItems(defaultSlotted)}}requestUpdate(...args){args[0]===void 0&&(this.contentRefreshPending=!0,this.sourceEpoch=(this.sourceEpoch??0)+1),(args[0]===void 0||["dataSource","sourcePage","sourcePageSize","searchText","withArchived","grouping","filter","groupBy","getGroupLabel","groupOrder","collapsedGroupIds"].includes(String(args[0])))&&this.syncSource(),super.requestUpdate(...args)}willUpdate(changed){super.willUpdate(changed),this.syncSource(),this.sourceMode&&(this.acceptSourcePage(),this.syncSourceActive()),this.contentRefreshPending&&(this.dataModel=void 0),this.contentRefreshPending=!1,changed.has("size")&&optionalSizeConverter.normalize(this.size)===void 0&&(this.size="m"),(changed.has("threads")||changed.has("searchText")||changed.has("filter")||changed.has("grouping")||changed.has("groupBy")||changed.has("groupOrder")||changed.has("collapsedGroupIds")||changed.has("withArchived"))&&this.focusTaskGeneration++;const syncSlottedContent=()=>{const defaultSlotted=this.defaultSlottedElements();this.hasDefaultSlotContent=defaultSlotted.length>0;const hasDataThreads=this.sourceMode||this.normalizedThreads.length>0;hasDataThreads&&defaultSlotted.length>0?(this.restoreInjectedListItemRoles(),this.sourceMode||devWarnOnce(THREADS_AND_SLOTTED_CONTENT_WARNING_KEY,THREADS_AND_SLOTTED_CONTENT_WARNING)):hasDataThreads||this.markAsListItems(defaultSlotted)};this.hasUpdated?(changed.has("threads")||changed.has("dataSource"))&&syncSlottedContent():this.seedFirstRenderState(()=>{this.hasEmptySlot=Array.from(this.children).some(el=>el.getAttribute("slot")==="empty"),syncSlottedContent()})}updated(changed){super.updated(changed),this.syncInputLimitAnnouncement();const status=this.sourceMode&&this.sourcePages.state.pending?this.localize("loading"):this.sourceMode&&this.sourceFailed?this.localize("tableLoadFailed"):"";this.sourceStatusInitialized&&status&&status!==this.previousSourceStatus&&this.inputLimitAnnouncements.announcePolite(status),this.sourceStatusInitialized=!0,this.previousSourceStatus=status,this.virtualListEl?.requestUpdate("renderItem")}defaultSlottedElements(){return Array.from(this.children).filter(el=>!el.getAttribute("slot"))}markAsListItems(elements){for(const el of elements)el.hasAttribute("role")||(el.setAttribute("role","listitem"),this.injectedListItemRoles.add(el))}restoreInjectedListItemRoles(keep=new Set){for(const element of this.injectedListItemRoles)keep.has(element)||(element.getAttribute("role")==="listitem"&&element.removeAttribute("role"),this.injectedListItemRoles.delete(element))}disconnectedCallback(){this.sourceRequestVersion++,this.sourceActiveInputs=void 0,this.sourceActiveReveal=void 0,this.sourceFilterIntent=void 0,this.sourceStatusInitialized=!1,this.previousSourceStatus="",this.focusTaskGeneration++,this.restoreInjectedListItemRoles(),super.disconnectedCallback()}get normalizedThreads(){return canonicalThreads(this.threads)}sourceThread(thread){return sourceThreadByProjection.get(thread)??thread}sourceThreads(threads){return Object.freeze(threads.map(thread=>this.sourceThread(thread)))}get visibleThreads(){const q=this.searchText.trim().toLocaleLowerCase(this.effectiveLocale),threads=this.normalizedThreads,titles=q&&!this.filter?this.titleHaystacks(threads,this.effectiveLocale):[],excerpts=q&&!this.filter?this.excerptHaystacks(threads,this.effectiveLocale):[];return threads.filter((thread,index)=>(this.withArchived||!thread.archived)&&(!q||(this.filter?this.filter(this.sourceThread(thread),q):titles[index].includes(q)||excerpts[index].includes(q))))}bucketFor(thread,today){if(thread.archived)return"archived";if(thread.pinned)return"pinned";const ts=thread.timestamp===void 0?void 0:normalizeLyraTimestamp(thread.timestamp);if(!ts)return"previous30";const diffDays=calendarDaysAgo(today,ts);return diffDays<=0?"today":diffDays===1?"yesterday":diffDays<=7?"previous7":diffDays<=30?"previous30":`month:${ts.getFullYear()}-${String(ts.getMonth()+1).padStart(2,"0")}`}bucketLabel(key){const groupDate=key.startsWith("month:")?this.dateForBucket(key):void 0;switch(key){case"pinned":return this.localize("threadGroupPinned");case"today":return this.localize("threadGroupToday");case"yesterday":return this.localize("threadGroupYesterday");case"previous7":return this.localize("threadGroupPrevious7Days");case"previous30":return this.localize("threadGroupPrevious30Days");case"archived":return this.localize("threadGroupArchived");default:return this.formatDate?.(groupDate)??getDateTimeFormat(this.effectiveLocale,{month:"long",year:"numeric"}).format(groupDate)}}dateForBucket(key){if(!key.startsWith("month:"))return;const[,ym]=key.split(":"),[year,month]=ym.split("-").map(Number);return new Date(year,month-1,1)}orderedCustomGroupIds(grouped){const firstSeen=[...grouped.keys()];if(typeof this.groupOrder=="function")try{return[...firstSeen].sort(this.groupOrder)}catch{return firstSeen}if(!this.groupOrder)return firstSeen;const ordered=[...new Set(this.groupOrder)].filter(id=>grouped.has(id)),listed=new Set(ordered);return[...ordered,...firstSeen.filter(id=>!listed.has(id))]}groupedItems(grouped,order,contextFor,defaultLabel){const collapsedIds=new Set(this.collapsedGroupIds),items=[];for(const id of order){const groupedThreads=grouped.get(id);if(!groupedThreads||groupedThreads.length===0)continue;const context=contextFor(id,groupedThreads),label=this.getGroupLabel?.(context)??defaultLabel(context);items.push({kind:"group",id,label,adornment:this.renderGroupAdornment?.(context),collapsed:collapsedIds.has(id)}),collapsedIds.has(id)||items.push(...groupedThreads.map(thread=>({kind:"thread",thread})))}return items}buildItems(visible,today){if(this.grouping==="none")return visible.map(thread=>({kind:"thread",thread}));if(this.grouping==="custom"){if(!this.groupBy)return visible.map(thread=>({kind:"thread",thread}));const grouped2=new Map;for(const thread of visible){let id;try{id=this.groupBy(this.sourceThread(thread))}catch{continue}if(typeof id!="string"||id.trim().length===0)continue;const existing=grouped2.get(id);existing?existing.push(thread):grouped2.set(id,[thread])}return this.groupedItems(grouped2,this.orderedCustomGroupIds(grouped2),(id,groupedThreads)=>({id,threads:this.sourceThreads(groupedThreads)}),context=>context.id)}const grouped=new Map,monthKeys=new Set;for(const thread of visible){const id=this.bucketFor(thread,today),existing=grouped.get(id);existing?existing.push(thread):grouped.set(id,[thread]),id.startsWith("month:")&&monthKeys.add(id)}const order=["pinned","today","yesterday","previous7","previous30",...[...monthKeys].sort().reverse(),"archived"];return this.groupedItems(grouped,order,(id,groupedThreads)=>{const bucket=id;return{id,threads:this.sourceThreads(groupedThreads),bucket,date:bucket.startsWith("month:")?this.dateForBucket(bucket):void 0}},context=>this.bucketLabel(context.bucket))}setSearchText(text){if(this.focusTaskGeneration++,this.searchText=text,this.sourceMode){this.sourceFilterIntent={text,version:this.sourceRequestVersion};return}if(!this.dataMode){this.emit("lr-query-change",{text});return}const count=this.model().visible.length;this.emit("lr-filter-change",{text,matchCount:count}),this.announceMatchCount(count)}announceMatchCount(count){this.searchText.trim()!==""&&this.liveRegion?.announce(this.localize("threadListMatchAnnounce",void 0,{count:getNumberFormat(this.effectiveLocale).format(count),pluralCount:count}))}itemElement(conversationId){return this.rowElements().find(row=>row.conversationId===conversationId)??null}rowElements(){return this.dataMode?(this.virtualListEl?.renderedRows??[]).flatMap(row=>[...row.querySelectorAll(tag("conversation-item"))]):[...this.querySelectorAll(tag("conversation-item"))]}selectButtonEl(row){return row.shadowRoot?.querySelector('[part="select-button"]')??null}isNavigableRow(row){const option=this.selectButtonEl(row);return!!(option&&option.getAttribute("role")==="button"&&row.hidden===!1&&row.getAttribute("aria-hidden")!=="true"&&row.getAttribute("aria-disabled")!=="true"&&!row.inert&&row.closest("[inert]")===null&&option.hidden===!1&&option.getAttribute("aria-hidden")!=="true"&&option.getAttribute("aria-disabled")!=="true"&&!option.inert&&option.closest("[inert]")===null)}navigableRows(){return this.rowElements().filter(row=>this.isNavigableRow(row))}focusedRowIndex(rows){return rows.findIndex(row=>row.matches(":focus-within"))}focusVirtualThreadFromItemIndex(list,items,initialItemIndex,direction,focusGeneration){(async()=>{let targetItemIndex=initialItemIndex;for(;targetItemIndex>=0&&targetItemIndex<items.length;){for(;items[targetItemIndex]?.kind==="group";)targetItemIndex+=direction;const targetItem=items[targetItemIndex];if(!targetItem||targetItem.kind!=="thread")return;const targetId=targetItem.thread.id;list.scrollToIndex(targetItemIndex,{align:"auto",behavior:"auto"});let targetRow;for(let attempt=0;attempt<2;attempt+=1){if(await new Promise(resolve=>{const view=this.ownerDocument.defaultView;view?view.requestAnimationFrame(()=>resolve()):requestAnimationFrame(()=>resolve())}),focusGeneration!==this.focusTaskGeneration||!this.isConnected||this.virtualListEl!==list||(await list.updateComplete,focusGeneration!==this.focusTaskGeneration||!this.isConnected||this.virtualListEl!==list))return;if(targetRow=this.rowElements().find(row=>row.conversationId===targetId),targetRow)break}if(targetRow&&this.isNavigableRow(targetRow)){this.selectButtonEl(targetRow)?.focus();return}targetItemIndex+=direction}})()}renderRowActions(thread){const source=this.sourceThread(thread);return html`
|
|
32
32
|
<span slot="actions" part="row-actions">
|
|
33
33
|
${this.rowActions.includes("pin")?html`<button
|
|
34
34
|
type="button"
|
|
35
35
|
part="row-action"
|
|
36
36
|
aria-label=${this.localize(thread.pinned?"unpinConversation":"pinConversation")}
|
|
37
|
-
@click=${()=>this.emit("lr-thread-pin",{conversationId:thread.id,pinned:!thread.pinned})}
|
|
37
|
+
@click=${()=>this.canUseThread(thread)&&this.emit("lr-thread-pin",{conversationId:thread.id,pinned:!thread.pinned})}
|
|
38
38
|
>
|
|
39
39
|
${pinIcon()}
|
|
40
40
|
</button>`:nothing}
|
|
@@ -42,7 +42,7 @@ import{__decorate}from"tslib";import{relayNativeEvent}from"../../../internal/nat
|
|
|
42
42
|
type="button"
|
|
43
43
|
part="row-action"
|
|
44
44
|
aria-label=${this.localize(thread.archived?"unarchiveConversation":"archiveConversation")}
|
|
45
|
-
@click=${()=>this.emit("lr-thread-archive",{conversationId:thread.id,archived:!thread.archived})}
|
|
45
|
+
@click=${()=>this.canUseThread(thread)&&this.emit("lr-thread-archive",{conversationId:thread.id,archived:!thread.archived})}
|
|
46
46
|
>
|
|
47
47
|
${archiveIcon()}
|
|
48
48
|
</button>`:nothing}
|
|
@@ -50,13 +50,13 @@ import{__decorate}from"tslib";import{relayNativeEvent}from"../../../internal/nat
|
|
|
50
50
|
type="button"
|
|
51
51
|
part="row-action"
|
|
52
52
|
aria-label=${this.localize("deleteConversation")}
|
|
53
|
-
@click=${()=>this.emit("lr-thread-delete",{conversationId:thread.id})}
|
|
53
|
+
@click=${()=>this.canUseThread(thread)&&this.emit("lr-thread-delete",{conversationId:thread.id})}
|
|
54
54
|
>
|
|
55
55
|
${trashIcon()}
|
|
56
56
|
</button>`:nothing}
|
|
57
57
|
${this.renderActions?this.renderActions(source):nothing}
|
|
58
58
|
</span>
|
|
59
|
-
`}toggleGroupCollapsed(
|
|
59
|
+
`}toggleGroupCollapsed(item,collapsed){if(!this.canUseGroup(item))return;const groupId=item.id,detail={groupId,expanded:!collapsed};requestThenCommit({requestDetail:detail,emitRequest:(requestDetail,init)=>this.emit("lr-group-toggle-request",requestDetail,init),commit:()=>{if(!this.canUseGroup(item))return;const next=new Set(this.collapsedGroupIds);collapsed?next.add(groupId):next.delete(groupId),this.collapsedGroupIds=[...next],this.emit("lr-group-toggle",detail)}})}renderGroupHeader(item,options={}){const nextCollapsed=!item.collapsed,icon=html`<span
|
|
60
60
|
part="group-icon"
|
|
61
61
|
aria-hidden="true"
|
|
62
62
|
style=${item.collapsed?this.effectiveDirection==="rtl"?"transform:scaleX(-1)":nothing:"transform:rotate(90deg)"}
|
|
@@ -77,7 +77,7 @@ import{__decorate}from"tslib";import{relayNativeEvent}from"../../../internal/nat
|
|
|
77
77
|
part="group-toggle"
|
|
78
78
|
aria-expanded=${item.collapsed?"false":"true"}
|
|
79
79
|
aria-label=${this.localize(item.collapsed?"threadGroupExpand":"threadGroupCollapse",void 0,{label:item.label})}
|
|
80
|
-
@click=${()=>this.toggleGroupCollapsed(item
|
|
80
|
+
@click=${()=>this.toggleGroupCollapsed(item,nextCollapsed)}
|
|
81
81
|
>
|
|
82
82
|
${icon}
|
|
83
83
|
<span part="group-label">${item.label}</span>
|
|
@@ -114,6 +114,7 @@ import{__decorate}from"tslib";import{relayNativeEvent}from"../../../internal/nat
|
|
|
114
114
|
aria-label=${this.dataMode?label:nothing}
|
|
115
115
|
>
|
|
116
116
|
${this.searchable?this.renderSearch():nothing}
|
|
117
|
+
${this.inputLimitMessage?html`<p part="limit">${this.inputLimitMessage}</p>`:nothing}
|
|
117
118
|
${this.dataMode?this.renderDataList():this.renderSlottedList(label)}
|
|
118
119
|
</div>
|
|
119
120
|
`}renderSlottedList(label){return html`<div part="list" role="list" aria-label=${label}>
|
|
@@ -121,18 +122,19 @@ import{__decorate}from"tslib";import{relayNativeEvent}from"../../../internal/nat
|
|
|
121
122
|
@slotchange=${this.onDefaultSlotChange}
|
|
122
123
|
@lr-select=${this.stopEvent}
|
|
123
124
|
></slot>
|
|
124
|
-
</div>`}model(){const today=startOfLocalDay(new Date),key=[this.normalizedThreads,this.searchText,this.filter,this.withArchived,this.grouping,this.groupBy,this.groupOrder,this.collapsedGroupIds,this.getGroupLabel,this.renderGroupAdornment,this.formatDate,this.stickyGroups,this.effectiveLocale,this.strings,today],previous=this.dataModel;if(previous&&key.every((value,index)=>Object.is(value,previous.key[index])))return previous;const visible=this.visibleThreads,items=this.buildItems(visible,today);return this.dataModel={key,visible,items,groups:this.stickyGroups?this.stickyAnchors(items):void 0},this.dataModel}renderDataList(){const{visible,items,groups}=this.model(),showEmpty=visible.length===0&&!this.hasEmptySlot;return html`
|
|
125
|
+
</div>`}model(){if(this.sourceMode)return this.sourceModel();const today=startOfLocalDay(new Date),key=[this.normalizedThreads,this.searchText,this.filter,this.withArchived,this.grouping,this.groupBy,this.groupOrder,this.collapsedGroupIds,this.getGroupLabel,this.renderGroupAdornment,this.formatDate,this.stickyGroups,this.effectiveLocale,this.strings,today],previous=this.dataModel;if(previous&&key.every((value,index)=>Object.is(value,previous.key[index])))return previous;const visible=this.visibleThreads,items=this.buildItems(visible,today);let source;if(items.length>1e4){const keys=items.map(item=>this.itemKey(item)),indices=new Map;keys.forEach((itemKey,index)=>{indices.has(itemKey)||indices.set(itemKey,index)}),source=Object.freeze({count:items.length,itemAt:index=>items[index],keyAt:index=>keys[index],indexOfKey:itemKey=>indices.get(itemKey)??-1})}return this.dataModel={key,visible,items,source,groups:this.stickyGroups?this.stickyAnchors(items):void 0},this.dataModel}renderDataList(){const{visible,items,source,groups}=this.model(),showEmpty=visible.length===0&&!this.hasEmptySlot,provider=this.sourceMode,retrySource=this.dataSource,retryState=this.sourcePages.state,failed=this.error||provider&&this.sourceFailed,pending=provider&&this.sourcePages.state.pending&&!this.error;return html`
|
|
125
126
|
<div part="list" @keydown=${this.onListKeyDown}>
|
|
126
|
-
${this.
|
|
127
|
+
${pending?html`<p part="source-status">${this.localize("loading")}</p>`:failed?renderDataState(this,{loading:!1,error:!0,empty:!1,errorHeading:this.errorHeading,errorDescription:this.errorDescription,onRetry:provider?()=>this.retrySource(retrySource,retryState):this.onErrorRetry,emitRetryRequest:(detail,init)=>{if(provider&&!this.currentSourceRetry(retrySource,retryState)){const event=new CustomEvent("lr-retry-request",init);return event.preventDefault(),event}return this.emit("lr-retry-request",detail,init)}},"error","lr-retry-request"):showEmpty?html`<div part="empty">
|
|
127
128
|
${this.searchText.trim()?this.localize("noMatches"):this.localize("threadListEmpty")}
|
|
128
129
|
</div>`:html`<lr-virtual-list
|
|
129
130
|
exportparts="base:viewport, sticky-group:group-sticky, row:row, row-wrapper:row-wrapper, group-header:group-header, group-toggle:group-toggle, group-label:group-label, group-adornment:group-adornment, group-icon:group-icon, row-start:row-start, row-excerpt:row-excerpt, row-content:row-content, row-meta:row-meta, row-actions:row-actions, row-action:row-action, pin-glyph:pin-glyph, row-item-base:row-item-base, row-item-base-menu-open:row-item-base-menu-open, row-item-active-indicator:row-item-active-indicator, row-item-select-button:row-item-select-button, row-item-start:row-item-start, row-item-content:row-item-content, row-item-label:row-item-label, row-item-label-input:row-item-label-input, row-item-rename-button:row-item-rename-button, row-item-excerpt:row-item-excerpt, row-item-meta:row-item-meta, row-item-timestamp:row-item-timestamp, row-item-actions:row-item-actions"
|
|
130
131
|
row-height="auto"
|
|
131
|
-
.items=${guard([items],()=>items)}
|
|
132
|
+
.items=${guard([items,source],()=>source?[]:items)}
|
|
133
|
+
.source=${source}
|
|
132
134
|
.groups=${guard([groups],()=>groups)}
|
|
133
135
|
.renderStickyGroup=${this.stickyGroups?this.renderStickyGroup:void 0}
|
|
134
136
|
.renderItem=${this.renderItem}
|
|
135
|
-
.keyFunction=${this.itemKey}
|
|
137
|
+
.keyFunction=${source?void 0:this.itemKey}
|
|
136
138
|
.activeItemId=${this.activeConversationId?this.threadItemKey(this.activeConversationId):""}
|
|
137
139
|
@focus=${this.stopRowFocus}
|
|
138
140
|
@blur=${this.stopRowFocus}
|
|
@@ -142,9 +144,14 @@ import{__decorate}from"tslib";import{relayNativeEvent}from"../../../internal/nat
|
|
|
142
144
|
></lr-virtual-list>`}
|
|
143
145
|
<slot
|
|
144
146
|
name="empty"
|
|
145
|
-
?hidden=${
|
|
147
|
+
?hidden=${failed||pending||!(visible.length===0&&this.hasEmptySlot)}
|
|
146
148
|
@slotchange=${this.onEmptySlotChange}
|
|
147
149
|
></slot>
|
|
148
150
|
</div>
|
|
151
|
+
${provider?html`<lr-pagination part="source-pagination" format="compact"
|
|
152
|
+
.page=${finiteInteger(this.sourcePage,0,0,Number.MAX_SAFE_INTEGER-1)+1} .pageSize=${finiteInteger(this.sourcePageSize,100,1,500)}
|
|
153
|
+
.total=${this.sourceTotal??-1} .disabled=${this.sourceBlocked||this.sourceTotal===null} .strings=${this.strings}
|
|
154
|
+
@lr-page-change=${this.onSourcePage} @lr-before-page-change=${this.stopEvent} @lr-activate=${this.stopEvent}
|
|
155
|
+
@focus=${this.stopEvent} @blur=${this.stopEvent}></lr-pagination>`:nothing}
|
|
149
156
|
<lr-live-region></lr-live-region>
|
|
150
|
-
`}}__decorate([property({attribute:!1})],LyraThreadList.prototype,"threads",void 0),__decorate([property({attribute:"active-conversation-id"})],LyraThreadList.prototype,"activeConversationId",void 0),__decorate([property({type:Boolean,reflect:!0})],LyraThreadList.prototype,"searchable",void 0),__decorate([property({reflect:!0})],LyraThreadList.prototype,"size",void 0),__decorate([property({attribute:!1})],LyraThreadList.prototype,"filter",void 0),__decorate([property()],LyraThreadList.prototype,"grouping",void 0),__decorate([property({attribute:!1})],LyraThreadList.prototype,"groupBy",void 0),__decorate([property({attribute:!1})],LyraThreadList.prototype,"getGroupLabel",void 0),__decorate([property({attribute:!1})],LyraThreadList.prototype,"renderGroupAdornment",void 0),__decorate([property({attribute:!1})],LyraThreadList.prototype,"groupOrder",void 0),__decorate([property({attribute:!1})],LyraThreadList.prototype,"collapsedGroupIds",void 0),__decorate([property({attribute:!1})],LyraThreadList.prototype,"rowActions",void 0),__decorate([property({attribute:!1})],LyraThreadList.prototype,"renderActions",void 0),__decorate([property({attribute:!1})],LyraThreadList.prototype,"renderStart",void 0),__decorate([property({attribute:!1})],LyraThreadList.prototype,"renderMeta",void 0),__decorate([property({attribute:!1})],LyraThreadList.prototype,"renderExcerpt",void 0),__decorate([property({attribute:!1})],LyraThreadList.prototype,"renderRowContent",void 0),__decorate([property({attribute:!1})],LyraThreadList.prototype,"formatDate",void 0),__decorate([property({type:Boolean,attribute:"with-archived",reflect:!0})],LyraThreadList.prototype,"withArchived",void 0),__decorate([property({type:Boolean,attribute:"without-rename",reflect:!0})],LyraThreadList.prototype,"withoutRename",void 0),__decorate([property({type:Boolean,attribute:"sticky-groups",reflect:!0})],LyraThreadList.prototype,"stickyGroups",void 0),__decorate([property()],LyraThreadList.prototype,"label",void 0),__decorate([property({type:Boolean,reflect:!0})],LyraThreadList.prototype,"error",void 0),__decorate([property({attribute:"error-heading"})],LyraThreadList.prototype,"errorHeading",void 0),__decorate([property({attribute:"error-description"})],LyraThreadList.prototype,"errorDescription",void 0),__decorate([property({attribute:!1})],LyraThreadList.prototype,"wrapRow",void 0),__decorate([state()],LyraThreadList.prototype,"searchText",void 0),__decorate([state()],LyraThreadList.prototype,"hasEmptySlot",void 0),__decorate([state()],LyraThreadList.prototype,"hasDefaultSlotContent",void 0),__decorate([query("lr-virtual-list")],LyraThreadList.prototype,"virtualListEl",void 0),__decorate([query("lr-live-region")],LyraThreadList.prototype,"liveRegion",void 0),__decorate([query('[part="search-input"]')],LyraThreadList.prototype,"searchInputEl",void 0);export{LyraThreadList};
|
|
157
|
+
`}}__decorate([state()],LyraThreadList.prototype,"sourceStateVersion",void 0),__decorate([property({attribute:!1})],LyraThreadList.prototype,"dataSource",null),__decorate([property({type:Number,attribute:"source-page"})],LyraThreadList.prototype,"sourcePage",void 0),__decorate([property({type:Number,attribute:"source-page-size"})],LyraThreadList.prototype,"sourcePageSize",void 0),__decorate([property({attribute:!1})],LyraThreadList.prototype,"threads",void 0),__decorate([property({attribute:"active-conversation-id"})],LyraThreadList.prototype,"activeConversationId",void 0),__decorate([property({type:Boolean,reflect:!0})],LyraThreadList.prototype,"searchable",void 0),__decorate([property({reflect:!0})],LyraThreadList.prototype,"size",void 0),__decorate([property({attribute:!1})],LyraThreadList.prototype,"filter",void 0),__decorate([property()],LyraThreadList.prototype,"grouping",void 0),__decorate([property({attribute:!1})],LyraThreadList.prototype,"groupBy",void 0),__decorate([property({attribute:!1})],LyraThreadList.prototype,"getGroupLabel",void 0),__decorate([property({attribute:!1})],LyraThreadList.prototype,"renderGroupAdornment",void 0),__decorate([property({attribute:!1})],LyraThreadList.prototype,"groupOrder",void 0),__decorate([property({attribute:!1})],LyraThreadList.prototype,"collapsedGroupIds",void 0),__decorate([property({attribute:!1})],LyraThreadList.prototype,"rowActions",void 0),__decorate([property({attribute:!1})],LyraThreadList.prototype,"renderActions",void 0),__decorate([property({attribute:!1})],LyraThreadList.prototype,"renderStart",void 0),__decorate([property({attribute:!1})],LyraThreadList.prototype,"renderMeta",void 0),__decorate([property({attribute:!1})],LyraThreadList.prototype,"renderExcerpt",void 0),__decorate([property({attribute:!1})],LyraThreadList.prototype,"renderRowContent",void 0),__decorate([property({attribute:!1})],LyraThreadList.prototype,"formatDate",void 0),__decorate([property({type:Boolean,attribute:"with-archived",reflect:!0})],LyraThreadList.prototype,"withArchived",void 0),__decorate([property({type:Boolean,attribute:"without-rename",reflect:!0})],LyraThreadList.prototype,"withoutRename",void 0),__decorate([property({type:Boolean,attribute:"sticky-groups",reflect:!0})],LyraThreadList.prototype,"stickyGroups",void 0),__decorate([property()],LyraThreadList.prototype,"label",void 0),__decorate([property({type:Boolean,reflect:!0})],LyraThreadList.prototype,"error",void 0),__decorate([property({attribute:"error-heading"})],LyraThreadList.prototype,"errorHeading",void 0),__decorate([property({attribute:"error-description"})],LyraThreadList.prototype,"errorDescription",void 0),__decorate([property({attribute:!1})],LyraThreadList.prototype,"wrapRow",void 0),__decorate([state()],LyraThreadList.prototype,"searchText",void 0),__decorate([state()],LyraThreadList.prototype,"hasEmptySlot",void 0),__decorate([state()],LyraThreadList.prototype,"hasDefaultSlotContent",void 0),__decorate([query("lr-virtual-list")],LyraThreadList.prototype,"virtualListEl",void 0),__decorate([query("lr-live-region")],LyraThreadList.prototype,"liveRegion",void 0),__decorate([query('[part="search-input"]')],LyraThreadList.prototype,"searchInputEl",void 0);export{LyraThreadList};
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
/** @deprecated Import @aceshooting/lyra-ui/components/lr-thread-list.js to register this component. */
|
|
2
|
-
export*from'./thread-list.class.js';import'../conversation-item/conversation-item.js';import'../../layout/virtual-list/virtual-list.js';import'../../utility/live-region/live-region.js';import'../../overlays/empty/empty.js';
|
|
2
|
+
export*from'./thread-list.class.js';import'../conversation-item/conversation-item.js';import'../../layout/virtual-list/virtual-list.js';import'../../data/pagination/pagination.js';import'../../utility/live-region/live-region.js';import'../../overlays/empty/empty.js';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
export*from"./thread-list.class.js";import"../conversation-item/conversation-item.js";import"../../layout/virtual-list/virtual-list.js";import"../../utility/live-region/live-region.js";import"../../overlays/empty/empty.js";import{LyraThreadList}from"./thread-list.class.js";import{defineElement}from"../../../internal/prefix.js";defineElement("thread-list",LyraThreadList);
|
|
1
|
+
export*from"./thread-list.class.js";import"../conversation-item/conversation-item.js";import"../../layout/virtual-list/virtual-list.js";import"../../data/pagination/pagination.js";import"../../utility/live-region/live-region.js";import"../../overlays/empty/empty.js";import{LyraThreadList}from"./thread-list.class.js";import{defineElement}from"../../../internal/prefix.js";defineElement("thread-list",LyraThreadList);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{iconHitTarget,focusRing,nativeControlSurface}from"../../../internal/interactive-control.styles.js";import{css}from"lit";import{dataStateRetryStyles}from"../../../internal/data-state-renderer.styles.js";const styles=css` :host { display: flex; flex-direction: column; block-size: 100%; min-block-size: 0; --_lr-thread-list-search-padding-inline: var(--lr-space-s); --_lr-thread-list-search-padding-block: var(--lr-space-xs); --_lr-thread-list-search-radius: var(--lr-radius); } :host(:where([size])) { --_lr-thread-list-search-min-height: var(--lr-form-control-height); --_lr-thread-list-search-font-size: var(--lr-form-control-font-size); --_lr-thread-list-search-padding-inline: var(--lr-form-control-padding-inline); --_lr-thread-list-search-padding-block: var(--lr-form-control-padding-block); --_lr-thread-list-search-radius: var(--lr-form-control-radius); } [part='base'] { display: flex; flex-direction: column; flex: 1 1 auto; min-block-size: 0; } [part='search'] { display: flex; align-items: center; gap: var(--lr-thread-list-search-gap, var(--lr-space-xs)); padding: var(--lr-thread-list-search-padding, var(--lr-space-s)); border-block-end: var(--lr-border-width-thin) solid var(--lr-color-border-subtle); } [part='search-input'] { box-sizing: border-box; flex: 1 1 auto; min-inline-size: 0; min-block-size: var( --lr-thread-list-search-min-height, var(--_lr-thread-list-search-min-height) ); padding-inline: var( --lr-thread-list-search-padding-inline, var(--_lr-thread-list-search-padding-inline) ); padding-block: var( --lr-thread-list-search-padding-block, var(--_lr-thread-list-search-padding-block) ); ${nativeControlSurface} border-radius: var( --lr-thread-list-search-radius, var(--_lr-thread-list-search-radius) ); font-size: var( --lr-thread-list-search-font-size, var(--_lr-thread-list-search-font-size) ); } [part='search-input']:focus-visible { ${focusRing} } [part='search-input']:hover { border-color: var(--lr-color-brand); } [part='search-input']::placeholder { color: var(--lr-color-text-quiet); } [part='search-input']::-webkit-search-cancel-button, [part='search-input']::-webkit-search-decoration { -webkit-appearance: none; appearance: none; display: none; } [part='clear-button'] { flex: 0 0 auto; display: inline-flex; align-items: center; justify-content: center; inline-size: var(--lr-thread-list-search-clear-size, var(--lr-size-1-5rem)); block-size: var(--lr-thread-list-search-clear-size, var(--lr-size-1-5rem)); ${iconHitTarget} padding: 0; border: 0; border-radius: var(--lr-icon-button-radius, var(--lr-radius-xs)); background: var(--lr-icon-button-bg, transparent); color: var(--lr-icon-button-color, var(--lr-color-text-quiet)); font: inherit; cursor: pointer; } [part='clear-button']:hover { background: var(--lr-icon-button-bg-hover, var(--lr-color-surface-raised)); color: var(--lr-icon-button-color-hover, var(--lr-color-text)); } [part='clear-button']:active { background: var( --lr-icon-button-bg-active, color-mix( in oklab, var(--lr-icon-button-bg-hover, var(--lr-color-surface-raised)), var(--lr-color-mix-partner) var(--lr-color-mix-active) ) ); color: var(--lr-icon-button-color-active, var(--lr-icon-button-color-hover, var(--lr-color-text))); } [part='clear-button']:focus-visible { ${focusRing} } [part='list'] { flex: 1 1 auto; min-block-size: 0; display: flex; flex-direction: column; } lr-virtual-list { --lr-virtual-list-row-mark-bg: var(--lr-thread-list-excerpt-highlight-bg, var(--lr-color-warning-quiet)); --lr-virtual-list-row-mark-color: var(--lr-thread-list-excerpt-highlight-color, currentColor); --lr-virtual-list-row-mark-radius: var(--lr-thread-list-excerpt-highlight-radius, var(--lr-radius-xs)); --lr-virtual-list-row-mark-padding: var(--lr-thread-list-excerpt-highlight-padding, 0); flex: 1 1 auto; min-block-size: 0; display: flex; flex-direction: column; } lr-virtual-list::part(base) { flex: 1 1 auto; min-block-size: 0; } [part='empty'] { padding: var(--lr-space-l); color: var(--lr-color-text-quiet); text-align: center; } lr-virtual-list::part(group-header) { box-sizing: border-box; display: flex; align-items: center; gap: var(--lr-space-xs); min-inline-size: 0; padding: var(--lr-space-xs) var(--lr-space-s); background: var(--lr-color-surface); color: var(--lr-color-text-quiet); } lr-virtual-list::part(group-toggle) { display: flex; flex: 1 1 auto; align-items: center; gap: var(--lr-space-xs); min-inline-size: 0; min-block-size: var(--lr-icon-button-size); padding: 0; border: 0; background: transparent; color: inherit; font: inherit; font-weight: var(--lr-font-weight-semibold); text-align: start; cursor: pointer; } lr-virtual-list::part(group-toggle):hover { background: var( --lr-thread-list-group-toggle-hover-bg, var(--lr-color-surface-raised) ); color: var(--lr-thread-list-group-toggle-hover-color, var(--lr-color-text)); } lr-virtual-list::part(group-toggle):active { background: var( --lr-thread-list-group-toggle-active-bg, color-mix( in oklab, var( --lr-thread-list-group-toggle-hover-bg, var(--lr-color-surface-raised) ), var(--lr-color-mix-partner) var(--lr-color-mix-active) ) ); color: var( --lr-thread-list-group-toggle-active-color, var(--lr-thread-list-group-toggle-hover-color, var(--lr-color-text)) ); } lr-virtual-list::part(group-toggle):focus-visible { ${focusRing} } lr-virtual-list::part(group-icon) { display: inline-flex; align-items: center; justify-content: center; inline-size: var(--lr-size-1rem); } lr-virtual-list::part(group-adornment) { flex: 0 0 auto; min-inline-size: 0; } lr-virtual-list::part(row-start), lr-virtual-list::part(row-content), lr-virtual-list::part(row-meta), lr-virtual-list::part(row-actions) { min-inline-size: 0; } lr-virtual-list::part(row-start), lr-virtual-list::part(row-actions) { display: inline-flex; align-items: center; } lr-virtual-list::part(row-action) { display: inline-flex; align-items: center; justify-content: center; inline-size: var(--lr-size-1-5rem); block-size: var(--lr-size-1-5rem); ${iconHitTarget} padding: 0; border: 0; border-radius: var(--lr-icon-button-radius, var(--lr-radius-xs)); background: var(--lr-icon-button-bg, transparent); color: var(--lr-icon-button-color, var(--lr-color-text-quiet)); font: inherit; cursor: pointer; } lr-virtual-list::part(row-action):hover { background: var( --lr-thread-list-row-action-hover-bg, var(--lr-icon-button-bg-hover, var(--lr-color-surface-raised)) ); color: var( --lr-thread-list-row-action-hover-color, var(--lr-icon-button-color-hover, var(--lr-color-text)) ); } lr-virtual-list::part(row-action):active { background: var( --lr-thread-list-row-action-active-bg, var( --lr-icon-button-bg-active, color-mix( in oklab, var( --lr-thread-list-row-action-hover-bg, var(--lr-icon-button-bg-hover, var(--lr-color-surface-raised)) ), var(--lr-color-mix-partner) var(--lr-color-mix-active) ) ) ); color: var( --lr-thread-list-row-action-active-color, var( --lr-icon-button-color-active, var(--lr-thread-list-row-action-hover-color, var(--lr-icon-button-color-hover, var(--lr-color-text))) ) ); } lr-virtual-list::part(row-action):focus-visible { ${focusRing} } lr-virtual-list::part(pin-glyph) { display: inline-flex; color: var(--lr-color-text-quiet); font-size: var(--lr-font-size-2xs); } ${dataStateRetryStyles} `;export{styles};
|
|
1
|
+
import{iconHitTarget,focusRing,nativeControlSurface}from"../../../internal/interactive-control.styles.js";import{css}from"lit";import{dataStateRetryStyles}from"../../../internal/data-state-renderer.styles.js";const styles=css` [part='source-pagination'] { display: block; margin-block-start: var(--lr-space-s); } [part='source-status'] { margin: 0; padding: var(--lr-space-s); color: var(--lr-color-text-quiet); } :host { display: flex; flex-direction: column; block-size: 100%; min-block-size: 0; --_lr-thread-list-search-padding-inline: var(--lr-space-s); --_lr-thread-list-search-padding-block: var(--lr-space-xs); --_lr-thread-list-search-radius: var(--lr-radius); } :host(:where([size])) { --_lr-thread-list-search-min-height: var(--lr-form-control-height); --_lr-thread-list-search-font-size: var(--lr-form-control-font-size); --_lr-thread-list-search-padding-inline: var(--lr-form-control-padding-inline); --_lr-thread-list-search-padding-block: var(--lr-form-control-padding-block); --_lr-thread-list-search-radius: var(--lr-form-control-radius); } [part='base'] { display: flex; flex-direction: column; flex: 1 1 auto; min-block-size: 0; } [part='search'] { display: flex; align-items: center; gap: var(--lr-thread-list-search-gap, var(--lr-space-xs)); padding: var(--lr-thread-list-search-padding, var(--lr-space-s)); border-block-end: var(--lr-border-width-thin) solid var(--lr-color-border-subtle); } [part='search-input'] { box-sizing: border-box; flex: 1 1 auto; min-inline-size: 0; min-block-size: var( --lr-thread-list-search-min-height, var(--_lr-thread-list-search-min-height) ); padding-inline: var( --lr-thread-list-search-padding-inline, var(--_lr-thread-list-search-padding-inline) ); padding-block: var( --lr-thread-list-search-padding-block, var(--_lr-thread-list-search-padding-block) ); ${nativeControlSurface} border-radius: var( --lr-thread-list-search-radius, var(--_lr-thread-list-search-radius) ); font-size: var( --lr-thread-list-search-font-size, var(--_lr-thread-list-search-font-size) ); } [part='search-input']:focus-visible { ${focusRing} } [part='search-input']:hover { border-color: var(--lr-color-brand); } [part='search-input']::placeholder { color: var(--lr-color-text-quiet); } [part='search-input']::-webkit-search-cancel-button, [part='search-input']::-webkit-search-decoration { -webkit-appearance: none; appearance: none; display: none; } [part='clear-button'] { flex: 0 0 auto; display: inline-flex; align-items: center; justify-content: center; inline-size: var(--lr-thread-list-search-clear-size, var(--lr-size-1-5rem)); block-size: var(--lr-thread-list-search-clear-size, var(--lr-size-1-5rem)); ${iconHitTarget} padding: 0; border: 0; border-radius: var(--lr-icon-button-radius, var(--lr-radius-xs)); background: var(--lr-icon-button-bg, transparent); color: var(--lr-icon-button-color, var(--lr-color-text-quiet)); font: inherit; cursor: pointer; } [part='clear-button']:hover { background: var(--lr-icon-button-bg-hover, var(--lr-color-surface-raised)); color: var(--lr-icon-button-color-hover, var(--lr-color-text)); } [part='clear-button']:active { background: var( --lr-icon-button-bg-active, color-mix( in oklab, var(--lr-icon-button-bg-hover, var(--lr-color-surface-raised)), var(--lr-color-mix-partner) var(--lr-color-mix-active) ) ); color: var(--lr-icon-button-color-active, var(--lr-icon-button-color-hover, var(--lr-color-text))); } [part='clear-button']:focus-visible { ${focusRing} } [part='list'] { flex: 1 1 auto; min-block-size: 0; display: flex; flex-direction: column; } lr-virtual-list { --lr-virtual-list-row-mark-bg: var(--lr-thread-list-excerpt-highlight-bg, var(--lr-color-warning-quiet)); --lr-virtual-list-row-mark-color: var(--lr-thread-list-excerpt-highlight-color, currentColor); --lr-virtual-list-row-mark-radius: var(--lr-thread-list-excerpt-highlight-radius, var(--lr-radius-xs)); --lr-virtual-list-row-mark-padding: var(--lr-thread-list-excerpt-highlight-padding, 0); flex: 1 1 auto; min-block-size: 0; display: flex; flex-direction: column; } lr-virtual-list::part(base) { flex: 1 1 auto; min-block-size: 0; } [part='empty'] { padding: var(--lr-space-l); color: var(--lr-color-text-quiet); text-align: center; } lr-virtual-list::part(group-header) { box-sizing: border-box; display: flex; align-items: center; gap: var(--lr-space-xs); min-inline-size: 0; padding: var(--lr-space-xs) var(--lr-space-s); background: var(--lr-color-surface); color: var(--lr-color-text-quiet); } lr-virtual-list::part(group-toggle) { display: flex; flex: 1 1 auto; align-items: center; gap: var(--lr-space-xs); min-inline-size: 0; min-block-size: var(--lr-icon-button-size); padding: 0; border: 0; background: transparent; color: inherit; font: inherit; font-weight: var(--lr-font-weight-semibold); text-align: start; cursor: pointer; } lr-virtual-list::part(group-toggle):hover { background: var( --lr-thread-list-group-toggle-hover-bg, var(--lr-color-surface-raised) ); color: var(--lr-thread-list-group-toggle-hover-color, var(--lr-color-text)); } lr-virtual-list::part(group-toggle):active { background: var( --lr-thread-list-group-toggle-active-bg, color-mix( in oklab, var( --lr-thread-list-group-toggle-hover-bg, var(--lr-color-surface-raised) ), var(--lr-color-mix-partner) var(--lr-color-mix-active) ) ); color: var( --lr-thread-list-group-toggle-active-color, var(--lr-thread-list-group-toggle-hover-color, var(--lr-color-text)) ); } lr-virtual-list::part(group-toggle):focus-visible { ${focusRing} } lr-virtual-list::part(group-icon) { display: inline-flex; align-items: center; justify-content: center; inline-size: var(--lr-size-1rem); } lr-virtual-list::part(group-adornment) { flex: 0 0 auto; min-inline-size: 0; } lr-virtual-list::part(row-start), lr-virtual-list::part(row-content), lr-virtual-list::part(row-meta), lr-virtual-list::part(row-actions) { min-inline-size: 0; } lr-virtual-list::part(row-start), lr-virtual-list::part(row-actions) { display: inline-flex; align-items: center; } lr-virtual-list::part(row-action) { display: inline-flex; align-items: center; justify-content: center; inline-size: var(--lr-size-1-5rem); block-size: var(--lr-size-1-5rem); ${iconHitTarget} padding: 0; border: 0; border-radius: var(--lr-icon-button-radius, var(--lr-radius-xs)); background: var(--lr-icon-button-bg, transparent); color: var(--lr-icon-button-color, var(--lr-color-text-quiet)); font: inherit; cursor: pointer; } lr-virtual-list::part(row-action):hover { background: var( --lr-thread-list-row-action-hover-bg, var(--lr-icon-button-bg-hover, var(--lr-color-surface-raised)) ); color: var( --lr-thread-list-row-action-hover-color, var(--lr-icon-button-color-hover, var(--lr-color-text)) ); } lr-virtual-list::part(row-action):active { background: var( --lr-thread-list-row-action-active-bg, var( --lr-icon-button-bg-active, color-mix( in oklab, var( --lr-thread-list-row-action-hover-bg, var(--lr-icon-button-bg-hover, var(--lr-color-surface-raised)) ), var(--lr-color-mix-partner) var(--lr-color-mix-active) ) ) ); color: var( --lr-thread-list-row-action-active-color, var( --lr-icon-button-color-active, var(--lr-thread-list-row-action-hover-color, var(--lr-icon-button-color-hover, var(--lr-color-text))) ) ); } lr-virtual-list::part(row-action):focus-visible { ${focusRing} } lr-virtual-list::part(pin-glyph) { display: inline-flex; color: var(--lr-color-text-quiet); font-size: var(--lr-font-size-2xs); } ${dataStateRetryStyles} [part='limit'] { margin: 0; padding: var(--lr-space-xs) var(--lr-space-s); color: var(--lr-color-text-quiet); font-size: var(--lr-font-size-sm); overflow-wrap: anywhere; } `;export{styles};
|
|
@@ -21,11 +21,14 @@ text:string;interim?:boolean;timestamp?:LyraTimestamp;}export interface LyraTran
|
|
|
21
21
|
* once through the shared light-DOM `polite` sink instead (`internal/announcer.ts`), the same route
|
|
22
22
|
* `<lr-chat-viewport>` and `<lr-terminal>` take. The entries a feed is *mounted* with are existing
|
|
23
23
|
* transcript rather than newly spoken captions, so the first render only records them; a caption is
|
|
24
|
-
* announced when it becomes final on a later update
|
|
24
|
+
* announced when it becomes final on a later update. Announcement history keeps current final IDs
|
|
25
|
+
* and up to 10,000 recent final IDs; an older ID evicted from this history may be announced again.
|
|
25
26
|
*
|
|
26
27
|
* Live captions only: recorded-media transcript sync — clickable cues, seek-on-select — is a
|
|
27
28
|
* separate concern from this component.
|
|
28
29
|
*
|
|
30
|
+
* Entries retain the newest 10,000 records, subject to a 50,000-value deep snapshot budget;
|
|
31
|
+
* a localized limit notice discloses loss independently of the rendered-row window.
|
|
29
32
|
* Public collection properties take bounded, clone-owned readonly snapshots. Create a new
|
|
30
33
|
* collection and reassign it after changes; mutating the assigned array does not update the view.
|
|
31
34
|
*
|
|
@@ -36,6 +39,7 @@ text:string;interim?:boolean;timestamp?:LyraTimestamp;}export interface LyraTran
|
|
|
36
39
|
* @event lr-follow-change - `detail: { following: boolean }` — a user scroll or jump-button click
|
|
37
40
|
* changed stick-to-bottom. Direct `follow` assignments and calling `scrollToBottom()` directly
|
|
38
41
|
* are controlled input and do not echo an event, matching `lr-terminal`'s identical contract.
|
|
42
|
+
* @csspart limit - Notice of input entries omitted by retention limits.
|
|
39
43
|
* @csspart base - The scroll container.
|
|
40
44
|
* @csspart log - The `role="log"` region wrapping final entries only.
|
|
41
45
|
* @csspart interim-area - The wrapper around the interim (not-yet-final) entries, rendered as a sibling of `log`. Only rendered while at least one interim entry exists.
|
|
@@ -75,4 +79,4 @@ accessibleLabel:string|null;private _isFirstUpdate;private readonly announcement
|
|
|
75
79
|
* `follow` assignment: does not itself emit `lr-follow-change` (see `onJumpClick`, the
|
|
76
80
|
* user-driven wrapper that does, mirroring `lr-terminal`'s `scrollToBottom()`/`jumpToLatest()`
|
|
77
81
|
* split). */
|
|
78
|
-
scrollToBottom():void;private onScroll;private onJumpClick;private showSpeakerFor;private renderEntry;render():TemplateResult;}declare global{interface HTMLElementTagNameMap{'lr-transcript-feed':LyraTranscriptFeed;}}
|
|
82
|
+
scrollToBottom():void;private onScroll;private onJumpClick;private showSpeakerFor;private renderEntry;private lastInputNotice;private inputLimitMessage;render():TemplateResult;}declare global{interface HTMLElementTagNameMap{'lr-transcript-feed':LyraTranscriptFeed;}}
|
|
@@ -1,11 +1,11 @@
|
|
|
1
|
-
import{__decorate}from"tslib";import{collectionSupport}from"../../../internal/collection-snapshot.js";import{html,nothing}from"lit";import{property}from"lit/decorators.js";import{repeat}from"lit/directives/repeat.js";import{LyraElement}from"../../../internal/lyra-element.js";import{AnnouncementSinkController}from"../../../internal/announcer.js";import{getDateTimeFormat}from"../../../internal/intl-cache.js";import{finiteCount}from"../../../internal/numbers.js";import{srOnly}from"../../../internal/a11y.js";import{captureComposedFocusRepair,applyComposedFocusRepair}from"../../../internal/focus-navigation.js";import{styles}from"./transcript-feed.styles.js";import{presenceTrueDefaultBooleanConverter as trueDefaultBooleanConverter}from"../../../internal/converters.js";import{normalizeLyraTimestamp}from"../timestamp.js";import{LYRA_DEFAULT_transcriptFeedEmpty,LYRA_DEFAULT_transcriptFeedInterim,LYRA_DEFAULT_transcriptFeedLabel}from"../../../internal/default-strings/conversation.generated.js";import{LYRA_DEFAULT_jumpToLatest}from"../../../internal/default-strings/shared.generated.js";const NEAR_BOTTOM_PX=48;class LyraTranscriptFeed extends LyraElement{constructor(){super(...arguments),this.entries=[],this.follow=!0,this.withTimestamps=!1,this.maxRenderedEntries=500,this.sessionId="",this.accessibleLabel=null,this._isFirstUpdate=!0,this.announcements=new AnnouncementSinkController(this,{eager:["polite"]}),this.announcedFinalIds=new Set,this.sessionChanged=!1,this.pendingSessionBaseline=!1,this.onScroll=e=>{const base=e.currentTarget,atBottom=base.scrollHeight-base.scrollTop-base.clientHeight<=NEAR_BOTTOM_PX;atBottom!==this.follow&&(this.follow=atBottom,this.emit("lr-follow-change",{following:atBottom}))},this.onJumpClick=()=>{const jump=this.renderRoot.querySelector('[part="jump-button"]'),base=this.renderRoot.querySelector('[part="base"]'),repair=jump?captureComposedFocusRepair(jump,base):null,changed=!this.follow;this.scrollToBottom(),changed&&this.emit("lr-follow-change",{following:!0}),repair&&this.updateComplete.then(()=>{this.isConnected&&this.follow&&applyComposedFocusRepair(repair)})}}static{this.defaultStrings={...super.defaultStrings,jumpToLatest:LYRA_DEFAULT_jumpToLatest,transcriptFeedEmpty:LYRA_DEFAULT_transcriptFeedEmpty,transcriptFeedInterim:LYRA_DEFAULT_transcriptFeedInterim,transcriptFeedLabel:LYRA_DEFAULT_transcriptFeedLabel}}static{this.collectionSupport=collectionSupport}static{this.ownedCollectionProperties=Object.freeze(["entries"])}static{this.appendOrderedCollectionProperties=Object.freeze(["entries"])}static{this.styles=[LyraElement.styles,srOnly,styles]}get effectiveMaxRenderedEntries(){return finiteCount(this.maxRenderedEntries,500)}get normalizedEntries(){const source=this.entries;if(this.normalizedMemo?.source===source)return this.normalizedMemo.entries;const seen=new Set,entries=source.filter(entry=>entry===null||typeof entry!="object"||typeof entry.id!="string"||entry.id.trim().length===0||typeof entry.text!="string"||seen.has(entry.id)?!1:(seen.add(entry.id),!0));return this.normalizedMemo={source,entries},entries}get renderedEntries(){const entries=this.normalizedEntries,maxRenderedEntries=this.effectiveMaxRenderedEntries;return maxRenderedEntries>0&&entries.length>maxRenderedEntries?entries.slice(-maxRenderedEntries):entries}adoptedCallback(){super.adoptedCallback(),this.announcements.adopted()}willUpdate(changed){super.willUpdate(changed),this._isFirstUpdate=!this.hasUpdated,this.sessionChanged=changed.has("sessionId")&&this.hasUpdated,this.sessionChanged&&(this.announcedFinalIds.clear(),this.pendingSessionBaseline=!0)}updated(changed){super.updated(changed),changed.has("entries")&&(this.follow&&this.scrollToBottom(),this.announceFinalizedEntries())}announceFinalizedEntries(){const alreadyAnnounced=this.announcedFinalIds,fresh=[];for(const entry of this.normalizedEntries)entry.interim||alreadyAnnounced.has(entry.id)||(alreadyAnnounced.add(entry.id),fresh.push(entry.text));const establishesBaseline=this._isFirstUpdate||this.sessionChanged||this.pendingSessionBaseline;if(this.pendingSessionBaseline=!1,establishesBaseline)return;const sink=this.announcements.current("polite");if(sink)for(const text of fresh){const message=text.replace(/\s+/g," ").trim();message&&sink.announce(message)}}scrollToBottom(){this.follow=!0;const base=this.renderRoot.querySelector('[part="base"]');base&&(base.scrollTop=base.scrollHeight)}showSpeakerFor(list,index){const prev=list[index-1],current=list[index];return!prev||prev.speaker!==current.speaker}renderEntry(entry,showSpeaker,interim,format){const parts=["entry"];interim&&parts.push("interim");const date=format&&entry.timestamp!=null?normalizeLyraTimestamp(entry.timestamp):null;return html`
|
|
1
|
+
import{__decorate}from"tslib";import{collectionSupport,publicCollectionTruncation}from"../../../internal/collection-snapshot.js";import{html,nothing}from"lit";import{property}from"lit/decorators.js";import{repeat}from"lit/directives/repeat.js";import{LyraElement}from"../../../internal/lyra-element.js";import{AnnouncementSinkController}from"../../../internal/announcer.js";import{getDateTimeFormat,getNumberFormat}from"../../../internal/intl-cache.js";import{finiteCount}from"../../../internal/numbers.js";import{srOnly}from"../../../internal/a11y.js";import{captureComposedFocusRepair,applyComposedFocusRepair}from"../../../internal/focus-navigation.js";import{styles}from"./transcript-feed.styles.js";import{presenceTrueDefaultBooleanConverter as trueDefaultBooleanConverter}from"../../../internal/converters.js";import{normalizeLyraTimestamp}from"../timestamp.js";import{LYRA_DEFAULT_transcriptFeedEmpty,LYRA_DEFAULT_transcriptFeedInputLimit,LYRA_DEFAULT_transcriptFeedInterim,LYRA_DEFAULT_transcriptFeedLabel}from"../../../internal/default-strings/conversation.generated.js";import{LYRA_DEFAULT_jumpToLatest}from"../../../internal/default-strings/shared.generated.js";const NEAR_BOTTOM_PX=48;class LyraTranscriptFeed extends LyraElement{constructor(){super(...arguments),this.entries=[],this.follow=!0,this.withTimestamps=!1,this.maxRenderedEntries=500,this.sessionId="",this.accessibleLabel=null,this._isFirstUpdate=!0,this.announcements=new AnnouncementSinkController(this,{eager:["polite"]}),this.announcedFinalIds=new Set,this.sessionChanged=!1,this.pendingSessionBaseline=!1,this.onScroll=e=>{const base=e.currentTarget,atBottom=base.scrollHeight-base.scrollTop-base.clientHeight<=NEAR_BOTTOM_PX;atBottom!==this.follow&&(this.follow=atBottom,this.emit("lr-follow-change",{following:atBottom}))},this.onJumpClick=()=>{const jump=this.renderRoot.querySelector('[part="jump-button"]'),base=this.renderRoot.querySelector('[part="base"]'),repair=jump?captureComposedFocusRepair(jump,base):null,changed=!this.follow;this.scrollToBottom(),changed&&this.emit("lr-follow-change",{following:!0}),repair&&this.updateComplete.then(()=>{this.isConnected&&this.follow&&applyComposedFocusRepair(repair)})},this.lastInputNotice=""}static{this.defaultStrings={...super.defaultStrings,jumpToLatest:LYRA_DEFAULT_jumpToLatest,transcriptFeedEmpty:LYRA_DEFAULT_transcriptFeedEmpty,transcriptFeedInputLimit:LYRA_DEFAULT_transcriptFeedInputLimit,transcriptFeedInterim:LYRA_DEFAULT_transcriptFeedInterim,transcriptFeedLabel:LYRA_DEFAULT_transcriptFeedLabel}}static{this.collectionSupport=collectionSupport}static{this.ownedCollectionProperties=Object.freeze(["entries"])}static{this.appendOrderedCollectionProperties=Object.freeze(["entries"])}static{this.styles=[LyraElement.styles,srOnly,styles]}get effectiveMaxRenderedEntries(){return finiteCount(this.maxRenderedEntries,500)}get normalizedEntries(){const source=this.entries;if(this.normalizedMemo?.source===source)return this.normalizedMemo.entries;const seen=new Set,entries=source.filter(entry=>entry===null||typeof entry!="object"||typeof entry.id!="string"||entry.id.trim().length===0||typeof entry.text!="string"||seen.has(entry.id)?!1:(seen.add(entry.id),!0));return this.normalizedMemo={source,entries},entries}get renderedEntries(){const entries=this.normalizedEntries,maxRenderedEntries=this.effectiveMaxRenderedEntries;return maxRenderedEntries>0&&entries.length>maxRenderedEntries?entries.slice(-maxRenderedEntries):entries}adoptedCallback(){super.adoptedCallback(),this.announcements.adopted()}willUpdate(changed){super.willUpdate(changed),this._isFirstUpdate=!this.hasUpdated,this.sessionChanged=changed.has("sessionId")&&this.hasUpdated,this.sessionChanged&&(this.announcedFinalIds.clear(),this.pendingSessionBaseline=!0)}updated(changed){super.updated(changed);const inputNotice=this.inputLimitMessage();!this._isFirstUpdate&&inputNotice&&inputNotice!==this.lastInputNotice&&this.announcements.announcePolite(inputNotice),this.lastInputNotice=inputNotice,changed.has("entries")&&(this.follow&&this.scrollToBottom(),this.announceFinalizedEntries())}announceFinalizedEntries(){const currentIds=new Set(this.normalizedEntries.map(entry=>entry.id)),alreadyAnnounced=this.announcedFinalIds,fresh=[];for(const entry of this.normalizedEntries)entry.interim||alreadyAnnounced.has(entry.id)||(alreadyAnnounced.add(entry.id),fresh.push(entry.text));for(const id of alreadyAnnounced){if(alreadyAnnounced.size<=1e4)break;currentIds.has(id)||alreadyAnnounced.delete(id)}const establishesBaseline=this._isFirstUpdate||this.sessionChanged||this.pendingSessionBaseline;if(this.pendingSessionBaseline=!1,establishesBaseline)return;const sink=this.announcements.current("polite");if(sink)for(const text of fresh){const message=text.replace(/\s+/g," ").trim();message&&sink.announce(message)}}scrollToBottom(){this.follow=!0;const base=this.renderRoot.querySelector('[part="base"]');base&&(base.scrollTop=base.scrollHeight)}showSpeakerFor(list,index){const prev=list[index-1],current=list[index];return!prev||prev.speaker!==current.speaker}renderEntry(entry,showSpeaker,interim,format){const parts=["entry"];interim&&parts.push("interim");const date=format&&entry.timestamp!=null?normalizeLyraTimestamp(entry.timestamp):null;return html`
|
|
2
2
|
<div part=${parts.join(" ")} ?data-interim=${interim}>
|
|
3
3
|
${showSpeaker&&typeof entry.speaker=="string"&&entry.speaker?html`<span part="speaker">${entry.speaker}</span>`:nothing}
|
|
4
4
|
<span part="text" dir="auto">${entry.text}</span>
|
|
5
5
|
${interim?html`<span class="sr-only">${this.localize("transcriptFeedInterim")}</span>`:nothing}
|
|
6
6
|
${date?html`<span part="timestamp">${format(date)}</span>`:nothing}
|
|
7
7
|
</div>
|
|
8
|
-
`}render(){const entries=this.renderedEntries,finals=entries.filter(entry=>!entry.interim),interims=entries.filter(entry=>entry.interim),format=this.withTimestamps?this.formatTimestamp??getDateTimeFormat(this.effectiveLocale,{hour:"numeric",minute:"2-digit"}).format:void 0,empty=entries.length===0;return html`
|
|
8
|
+
`}inputLimitMessage(){const loss=publicCollectionTruncation(this,"entries");return loss?this.localize("transcriptFeedInputLimit",void 0,{count:getNumberFormat(this.effectiveLocale).format(loss.retained),total:getNumberFormat(this.effectiveLocale).format(loss.source)}):""}render(){const entries=this.renderedEntries,finals=entries.filter(entry=>!entry.interim),interims=entries.filter(entry=>entry.interim),format=this.withTimestamps?this.formatTimestamp??getDateTimeFormat(this.effectiveLocale,{hour:"numeric",minute:"2-digit"}).format:void 0,empty=entries.length===0;return html`
|
|
9
9
|
<div
|
|
10
10
|
part="base"
|
|
11
11
|
role="region"
|
|
@@ -13,6 +13,7 @@ import{__decorate}from"tslib";import{collectionSupport}from"../../../internal/co
|
|
|
13
13
|
aria-label=${this.accessibleLabel??(this.label==null?this.localize("transcriptFeedLabel"):this.label)}
|
|
14
14
|
@scroll=${this.onScroll}
|
|
15
15
|
>
|
|
16
|
+
${this.inputLimitMessage()?html`<p part="limit">${this.inputLimitMessage()}</p>`:nothing}
|
|
16
17
|
${empty?html`<div part="empty"><slot name="empty">${this.localize("transcriptFeedEmpty")}</slot></div>`:html`
|
|
17
18
|
<div
|
|
18
19
|
part="log"
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{iconHitTarget,focusRing}from"../../../internal/interactive-control.styles.js";import{css}from"lit";import{srOnly}from"../../../internal/a11y.js";const styles=[css` :host { display: block; inline-size: 100%; block-size: 100%; position: relative; } [part='base'] { inline-size: 100%; block-size: 100%; overflow-x: hidden; overflow-y: auto; display: flex; flex-direction: column; gap: var(--lr-space-xs); padding: var(--lr-space-s); box-sizing: border-box; } [part='base']:focus-visible { outline: var(--lr-focus-ring-width) solid var(--lr-focus-ring-color); outline-offset: calc(-1 * var(--lr-focus-ring-offset)); } [part='log'], [part='interim-area'] { display: flex; flex-direction: column; min-inline-size: 0; max-inline-size: 100%; gap: var(--lr-space-xs); } [part='interim-area'] { margin-block-start: var(--lr-space-xs); } [part~='entry'] { display: flex; flex-wrap: wrap; min-inline-size: 0; max-inline-size: 100%; align-items: baseline; gap: var(--lr-space-2xs); animation: var(--_lr-motion-animation, lr-transcript-fade-in var(--lr-duration-fast) var(--lr-easing-standard)); } @keyframes lr-transcript-fade-in { from { opacity: 0; transform: translateY(var(--lr-size-4px)); } to { opacity: 1; transform: none; } } @media (prefers-reduced-motion: reduce) { [part~='entry'] { animation: none !important; } } [part~='entry'][data-interim] { color: var(--lr-color-text-quiet); font-style: italic; } [part='speaker'] { flex: 1 1 100%; min-inline-size: 0; max-inline-size: 100%; overflow-wrap: anywhere; font-weight: var(--lr-font-weight-semibold); color: var(--lr-color-text-quiet); } [part='text'] { flex: 1 1 auto; min-inline-size: 0; max-inline-size: 100%; overflow-wrap: anywhere; } [part='timestamp'] { flex: 0 0 auto; font-size: var(--lr-font-size-xs); color: var(--lr-color-text-quiet); } [part='empty'] { padding: var(--lr-space-m); color: var(--lr-color-text-quiet); text-align: center; } [part='jump-button'] { font: inherit; position: absolute; inset-block-end: var(--lr-space-s); inset-inline-end: var(--lr-space-s); padding: var(--lr-space-2xs) var(--lr-space-s); ${iconHitTarget} border: var(--lr-border-width-thin) solid var(--lr-color-border); border-radius: var(--lr-radius-pill); background: var(--lr-color-surface); color: var(--lr-color-text); cursor: pointer; box-shadow: var(--lr-shadow-m); transition: background-color var(--lr-transition-fast); } [part='jump-button']:focus-visible { ${focusRing} } [part='jump-button']:hover { background: var(--lr-color-brand-quiet); } [part='jump-button']:active { background: color-mix(in oklab, var(--lr-color-brand-quiet), var(--lr-color-mix-partner) var(--lr-color-mix-active)); } `,srOnly];export{styles};
|
|
1
|
+
import{iconHitTarget,focusRing}from"../../../internal/interactive-control.styles.js";import{css}from"lit";import{srOnly}from"../../../internal/a11y.js";const styles=[css` :host { display: block; inline-size: 100%; block-size: 100%; position: relative; } [part='base'] { inline-size: 100%; block-size: 100%; overflow-x: hidden; overflow-y: auto; display: flex; flex-direction: column; gap: var(--lr-space-xs); padding: var(--lr-space-s); box-sizing: border-box; } [part='base']:focus-visible { outline: var(--lr-focus-ring-width) solid var(--lr-focus-ring-color); outline-offset: calc(-1 * var(--lr-focus-ring-offset)); } [part='log'], [part='interim-area'] { display: flex; flex-direction: column; min-inline-size: 0; max-inline-size: 100%; gap: var(--lr-space-xs); } [part='interim-area'] { margin-block-start: var(--lr-space-xs); } [part~='entry'] { display: flex; flex-wrap: wrap; min-inline-size: 0; max-inline-size: 100%; align-items: baseline; gap: var(--lr-space-2xs); animation: var(--_lr-motion-animation, lr-transcript-fade-in var(--lr-duration-fast) var(--lr-easing-standard)); } @keyframes lr-transcript-fade-in { from { opacity: 0; transform: translateY(var(--lr-size-4px)); } to { opacity: 1; transform: none; } } @media (prefers-reduced-motion: reduce) { [part~='entry'] { animation: none !important; } } [part~='entry'][data-interim] { color: var(--lr-color-text-quiet); font-style: italic; } [part='speaker'] { flex: 1 1 100%; min-inline-size: 0; max-inline-size: 100%; overflow-wrap: anywhere; font-weight: var(--lr-font-weight-semibold); color: var(--lr-color-text-quiet); } [part='text'] { flex: 1 1 auto; min-inline-size: 0; max-inline-size: 100%; overflow-wrap: anywhere; } [part='timestamp'] { flex: 0 0 auto; font-size: var(--lr-font-size-xs); color: var(--lr-color-text-quiet); } [part='empty'] { padding: var(--lr-space-m); color: var(--lr-color-text-quiet); text-align: center; } [part='jump-button'] { font: inherit; position: absolute; inset-block-end: var(--lr-space-s); inset-inline-end: var(--lr-space-s); padding: var(--lr-space-2xs) var(--lr-space-s); ${iconHitTarget} border: var(--lr-border-width-thin) solid var(--lr-color-border); border-radius: var(--lr-radius-pill); background: var(--lr-color-surface); color: var(--lr-color-text); cursor: pointer; box-shadow: var(--lr-shadow-m); transition: background-color var(--lr-transition-fast); } [part='jump-button']:focus-visible { ${focusRing} } [part='jump-button']:hover { background: var(--lr-color-brand-quiet); } [part='jump-button']:active { background: color-mix(in oklab, var(--lr-color-brand-quiet), var(--lr-color-mix-partner) var(--lr-color-mix-active)); } [part='limit'] { margin: 0; padding: var(--lr-space-s); color: var(--lr-color-text-quiet); font-size: var(--lr-font-size-sm); } `,srOnly];export{styles};
|
|
@@ -91,6 +91,7 @@ export type LyraVoicePickerSelectionDirection=LyraSelectionDirection;export inte
|
|
|
91
91
|
* @attr size - Visual size on the shared six-tier control ladder (`2xs`–`xl`, default `m`). The
|
|
92
92
|
* `small`/`medium`/`large` aliases render as `s`/`m`/`l`. Preview actions retain the shared 40px
|
|
93
93
|
* minimum hit area even when the field chrome uses a smaller tier.
|
|
94
|
+
* @csspart limit - Localized notice when input admission omits catalog data.
|
|
94
95
|
* @csspart form-control - The complete label, control, hint, error, and listbox frame.
|
|
95
96
|
* @csspart form-control-label - The `<label>` element containing the `label` property and slot.
|
|
96
97
|
* @csspart trigger - The trigger button (closed-dropdown mode).
|
|
@@ -179,7 +180,7 @@ export type LyraVoicePickerSelectionDirection=LyraSelectionDirection;export inte
|
|
|
179
180
|
* @status stable
|
|
180
181
|
* @since 4.0.0
|
|
181
182
|
*/
|
|
182
|
-
export declare class LyraVoicePicker extends LyraCatalogPickerElement<LyraVoicePickerEventMap>{static formAssociated:boolean;static styles:import("lit").CSSResultGroup[];protected static collectionSupport:import("../../../internal/lyra-element.js").LyraCollectionSupport;protected static readonly ownedCollectionProperties:readonly string[];static properties:{value:{attribute:boolean;noAccessor:boolean;};defaultValue:{attribute:string;reflect:boolean;useDefault:boolean;noAccessor:boolean;};};
|
|
183
|
+
export declare class LyraVoicePicker extends LyraCatalogPickerElement<LyraVoicePickerEventMap>{static formAssociated:boolean;static styles:import("lit").CSSResultGroup[];protected static collectionSupport:import("../../../internal/lyra-element.js").LyraCollectionSupport;protected static readonly ownedCollectionProperties:readonly string[];protected static readonly ownedCollectionLimits:{catalog:{entries:number;};};static properties:{value:{attribute:boolean;noAccessor:boolean;};defaultValue:{attribute:string;reflect:boolean;useDefault:boolean;noAccessor:boolean;};};
|
|
183
184
|
/** Informational only (e.g. `'elevenlabs'`); rendered as a small leading badge. */
|
|
184
185
|
provider:string;
|
|
185
186
|
/** The bounded, clone-owned, frozen full voice list. Omit (or leave empty) to fall back to plain
|
|
@@ -210,4 +211,4 @@ size:LyraSize;private get activeIndex();private get query();private readonly slo
|
|
|
210
211
|
/** The current voice id (empty string when nothing is selected). */
|
|
211
212
|
get value():string;set value(next:string);
|
|
212
213
|
/** Reflected current reset default; changing it never overwrites a dirty live `value`. */
|
|
213
|
-
get defaultValue():string;set defaultValue(next:string);protected requiredMessage():string;protected releaseOnDisable():void;formResetCallback():void;formStateRestoreCallback(state:string|File|FormData|null,_mode?:'restore'|'autocomplete'):void;formDisabledCallback(disabled:boolean):void;private get closedMode();private get effectiveEntries();private get filteredEntries();private labelFor;private show;private hide;protected updated(changed:PropertyValues):void;private get internalPreviewTargetId();private reconcilePreviewVisibility;private reconcilePreviewForActiveIndex;private get previewCandidateId();private requestPreview;private playInternal;private onAudioEnded;private onAudioLoadFailure;private stopInternalPreview;private onPreviewButtonClick;private onOptionPreviewClick;private get previewButtonLabel();private onTriggerClick;private onControlBlur;private onControlFocus;private onTriggerKeyDown;private onComboMouseDown;private onInputFocus;private onInput;private onInputKeyDown;private onListboxMouseDown;private onListboxClick;private renderRows;private renderListbox;private get hasVisibleLabel();private renderLabel;private renderHintError;private renderPreviewButton;private renderClosed;private renderFreeText;render():TemplateResult;}declare global{interface HTMLElementTagNameMap{'lr-voice-picker':LyraVoicePicker;}}
|
|
214
|
+
get defaultValue():string;set defaultValue(next:string);protected requiredMessage():string;protected releaseOnDisable():void;formResetCallback():void;formStateRestoreCallback(state:string|File|FormData|null,_mode?:'restore'|'autocomplete'):void;formDisabledCallback(disabled:boolean):void;private get closedMode();private get effectiveEntries();private get filteredEntries();private labelFor;private show;private hide;private readonly limitAnnouncements;private limitMounted;private previousInputLimit;private get inputLimited();protected updated(changed:PropertyValues):void;private get internalPreviewTargetId();private reconcilePreviewVisibility;private reconcilePreviewForActiveIndex;private get previewCandidateId();private requestPreview;private playInternal;private onAudioEnded;private onAudioLoadFailure;private stopInternalPreview;private onPreviewButtonClick;private onOptionPreviewClick;private get previewButtonLabel();private onTriggerClick;private onControlBlur;private onControlFocus;private onTriggerKeyDown;private onComboMouseDown;private onInputFocus;private onInput;private onInputKeyDown;private onListboxMouseDown;private onListboxClick;private renderRows;private renderListbox;private get hasVisibleLabel();private renderLabel;private renderHintError;private renderPreviewButton;private renderClosed;private renderFreeText;render():TemplateResult;}declare global{interface HTMLElementTagNameMap{'lr-voice-picker':LyraVoicePicker;}}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import{__decorate}from"tslib";import{nativeAutocorrectAttribute}from"../../../internal/native-text-control.js";import{renderFormControlHintError}from"../../../internal/form-control-template.js";import{installFormControlLabelSupport}from"../../../internal/form-control-labels.js";import{html,nothing}from"lit";import{property,state}from"lit/decorators.js";import{LyraElement}from"../../../internal/lyra-element.js";import{LyraCatalogPickerElement}from"../catalog-picker-element.js";import{sizes}from"../../../internal/sizes.styles.js";import{hostAriaLabel,nextId}from"../../../internal/a11y.js";import{chevronIcon,playIcon,pauseIcon}from"../../../internal/icons.js";import{VALIDITY_ANCHOR}from"../../../internal/anchored-validity.js";import{safeMediaSrc}from"../../../internal/safe-url.js";import{styles}from"./voice-picker.styles.js";import{autocorrectConverter,normalizeAutocorrect,trueDefaultSpellcheckConverter as spellcheckConverter}from"../../../internal/converters.js";import{CatalogPickerController}from"../../../internal/catalog-picker.js";import{SlotPresenceController}from"../../../internal/slot-presence-controller.js";import{collectionSupport}from"../../../internal/collection-snapshot.js";import{LYRA_DEFAULT_voice,LYRA_DEFAULT_voicePickerNoVoices,LYRA_DEFAULT_voicePickerPreview,LYRA_DEFAULT_voicePickerRequired,LYRA_DEFAULT_voicePickerStopPreview}from"../../../internal/default-strings/conversation.generated.js";import{LYRA_DEFAULT_noMatches,LYRA_DEFAULT_notInCatalog}from"../../../internal/default-strings/shared.generated.js";installFormControlLabelSupport();class LyraVoicePicker extends LyraCatalogPickerElement{constructor(){super(...arguments),this.provider="",this.allowCustom=!1,this.readonly=!1,this.withoutPreview=!1,this.label="",this.hint="",this.errorText="",this.placeholder="",this.spellcheck=!0,this.autocapitalize="",this.autocorrectValue=!0,this.autocomplete="off",this.inputMode="",this.enterKeyHint="",this.size="m",this.slotPresence=new SlotPresenceController(this),this.previewingId=null,this.listId=nextId("voice-picker-list"),this.controlId=nextId("voice-picker-control"),this.pendingPreviewId=null,this.previewGeneration=0,this.catalogPicker=new CatalogPickerController(this,{catalog:()=>this.catalog,allowCustom:()=>this.allowCustom,isReadonly:()=>this.readonly,locale:()=>this.effectiveLocale,searchableFields:entry=>[entry.id,entry.label,entry.language??"",entry.description??""],emitInput:detail=>this.emit("lr-input",detail),emitChange:detail=>this.emit("lr-change",detail),beforeValueChange:value=>{const previewTarget=this.internalPreviewTargetId;previewTarget!==null&&previewTarget!==value&&this.stopInternalPreview()},beforeActiveIndexChange:next=>this.reconcilePreviewForActiveIndex(next),afterQueryChange:()=>this.reconcilePreviewVisibility(this.open,this.catalogPicker.filteredEntries),onValueChange:(value,oldValue)=>{this.internals.setFormValue(value),this.updateValidity(),this.requestUpdate("value",oldValue)},onDefaultValueChange:(_value,oldValue)=>this.requestUpdate("defaultValue",oldValue),onStateChange:(state2,oldValue)=>{state2==="open"?(this.catalogPicker.open||this.reconcilePreviewVisibility(!1,[]),this.requestUpdate("open",oldValue)):this.requestUpdate()},onControlFocus:event=>this.captureModeFocus(event),onControlBlur:event=>{this.effectiveDisabled||(this.touched=!0),this.retireModeFocusAfterBlur(event)}}),this.onAudioEnded=event=>{event.currentTarget===this.audioEl&&this.stopInternalPreview()},this.onAudioLoadFailure=eventOrAudio=>{const direct=eventOrAudio,isDomErrorEvent=direct.localName!=="audio",audioLike=direct.localName==="audio"?eventOrAudio:eventOrAudio.currentTarget,failedAudio=audioLike?.localName==="audio"&&typeof audioLike.pause=="function"&&typeof audioLike.removeEventListener=="function"?audioLike:void 0;if(!failedAudio||(failedAudio.removeEventListener("ended",this.onAudioEnded),failedAudio.removeEventListener("error",this.onAudioLoadFailure),failedAudio.pause(),failedAudio!==this.audioEl))return;const pendingVoiceId=this.pendingPreviewId;this.previewGeneration++,this.audioEl=void 0,this.pendingPreviewId=null,isDomErrorEvent&&this.previewingId===null&&pendingVoiceId!==null&&(this.previewingId=pendingVoiceId,this.emit("lr-preview-change",{voiceId:pendingVoiceId})),this.previewingId!==null&&(this.previewingId=null,this.emit("lr-preview-change",{voiceId:null}))},this.onPreviewButtonClick=()=>{const candidate=this.previewCandidateId;candidate&&(this.internalPreviewTargetId===candidate?this.stopInternalPreview():this.requestPreview(candidate))},this.onOptionPreviewClick=(e,entry)=>{e.stopPropagation(),this.internalPreviewTargetId===entry.id?this.stopInternalPreview():this.requestPreview(entry.id)},this.onTriggerClick=()=>{this.effectiveDisabled||(this.open?this.hide():this.show())},this.onControlBlur=event=>{this.catalogPicker.handleControlBlur(event)},this.onControlFocus=event=>{this.catalogPicker.handleControlFocus(event)},this.onTriggerKeyDown=e=>{this.catalogPicker.handleTriggerKeyDown(e)},this.onComboMouseDown=e=>{this.catalogPicker.handleComboMouseDown(e)},this.onInputFocus=event=>{this.catalogPicker.handleInputFocus(event)},this.onInput=e=>{this.catalogPicker.handleInput(e)},this.onInputKeyDown=e=>{this.catalogPicker.handleInputKeyDown(e)},this.onListboxMouseDown=e=>{this.catalogPicker.handleListboxMouseDown(e)},this.onListboxClick=e=>{this.catalogPicker.handleListboxClick(e)}}static{this.defaultStrings={...super.defaultStrings,noMatches:LYRA_DEFAULT_noMatches,notInCatalog:LYRA_DEFAULT_notInCatalog,voice:LYRA_DEFAULT_voice,voicePickerNoVoices:LYRA_DEFAULT_voicePickerNoVoices,voicePickerPreview:LYRA_DEFAULT_voicePickerPreview,voicePickerRequired:LYRA_DEFAULT_voicePickerRequired,voicePickerStopPreview:LYRA_DEFAULT_voicePickerStopPreview}}static{this.formAssociated=!0}static{this.styles=[LyraElement.styles,sizes,styles]}static{this.collectionSupport=collectionSupport}static{this.ownedCollectionProperties=Object.freeze(["catalog"])}static{this.properties={value:{attribute:!1,noAccessor:!0},defaultValue:{attribute:"value",reflect:!1,useDefault:!0,noAccessor:!0}}}get autocorrect(){return this.autocorrectValue}set autocorrect(next){this.autocorrectValue=normalizeAutocorrect(next),this.requestUpdate()}get open(){return this.catalogPicker.open}set open(next){this.catalogPicker.setOpen(next)}get activeIndex(){return this.catalogPicker.activeIndex}get query(){return this.catalogPicker.query}get catalogEditing(){return this.catalogPicker}[VALIDITY_ANCHOR](){return this.renderRoot?.querySelector('[part="trigger"], [part="combobox-input"]')??null}connectedCallback(){super.connectedCallback(),this.updateValidity(),this.catalogPicker.connected(this.hasUpdated)}willUpdate(changed){super.willUpdate(changed);const switchingMode=this.prepareModeFocus(this.closedMode);if(this.catalogPicker.suppressControlEvents=switchingMode,this.hasUpdated&&(changed.has("catalog")||changed.has("allowCustom")||changed.has("value"))){const activeValue=this.renderRoot.querySelector('[part="option"][data-active]')?.dataset.value,rows=this.closedMode?this.effectiveEntries:this.filteredEntries;this.catalogPicker.reconcileRows(activeValue,this.open&&(changed.has("value")||changed.has("allowCustom")||switchingMode),!1),this.reconcilePreviewVisibility(this.open,rows)}changed.has("catalog")&&this.internalPreviewTargetId!==null&&this.stopInternalPreview(),changed.has("withoutPreview")&&this.withoutPreview&&this.stopInternalPreview()}disconnectedCallback(){super.disconnectedCallback(),this.stopInternalPreview(),this.clearModeFocus(),this.catalogPicker.disconnected()}adoptedCallback(){super.adoptedCallback(),this.stopInternalPreview(),this.clearModeFocus(),this.catalogPicker.adopted()}get value(){return this.catalogPicker.value}set value(next){this.catalogPicker.value=next}get defaultValue(){return this.catalogPicker.defaultValue}set defaultValue(next){this.catalogPicker.defaultValue=next}requiredMessage(){return this.localize("voicePickerRequired")}releaseOnDisable(){super.releaseOnDisable(),this.stopInternalPreview()}formResetCallback(){this.touched=!1,this.catalogPicker.resetValue()}formStateRestoreCallback(state2,_mode){this.catalogPicker.restoreState(state2)}formDisabledCallback(disabled){this.formDisabledChanged(disabled)}get closedMode(){return this.catalogPicker.closedMode}get effectiveEntries(){return this.catalogPicker.effectiveEntries}get filteredEntries(){return this.catalogPicker.filteredEntries}labelFor(id){return this.catalogPicker.labelFor(id)}show(){this.catalogPicker.show()}hide(){this.catalogPicker.hide()}updated(changed){super.updated(changed),this.syncCatalogDescription(this.controlId);const reposition=changed.has("open")||this.open&&(changed.has("catalog")||changed.has("allowCustom"));this.catalogPicker.updated(reposition),(changed.has("required")||changed.has("readonly")||changed.has("touched")||changed.has("value"))&&(changed.has("readonly")&&this.updateValidity(),this.toggleAttribute("data-invalid",this.touched&&!this.internals.validity.valid)),this.publishValidityStates(),this.finishModeFocus("voice-picker-mode-focus"),this.catalogPicker.suppressControlEvents=!1}get internalPreviewTargetId(){return this.pendingPreviewId??this.previewingId}reconcilePreviewVisibility(open,rows){const target=this.internalPreviewTargetId;if(target===null)return;const standaloneCandidate=open&&this.activeIndex>=0?rows[this.activeIndex]?.id??this.value:this.value,hasVisibleRow=open&&rows.some(entry=>entry.id===target&&!!entry.previewUrl);target!==standaloneCandidate&&!hasVisibleRow&&this.stopInternalPreview()}reconcilePreviewForActiveIndex(next){const target=this.internalPreviewTargetId;if(target!==null){const rows=this.closedMode?this.effectiveEntries:this.filteredEntries,nextCandidate=this.open&&next>=0?rows[next]?.id??this.value:this.value;target!==nextCandidate&&this.stopInternalPreview()}}get previewCandidateId(){return this.open&&this.activeIndex>=0?(this.closedMode?this.effectiveEntries:this.filteredEntries)[this.activeIndex]?.id??this.value:this.value}requestPreview(voiceId){if(!voiceId)return;const currentTarget=this.internalPreviewTargetId;currentTarget!==null&¤tTarget!==voiceId&&this.stopInternalPreview();const previewUrl=this.effectiveEntries.find(e=>e.id===voiceId)?.previewUrl;!this.emit("lr-preview-request",{voiceId,previewUrl},{cancelable:!0}).defaultPrevented&&previewUrl&&this.playInternal(voiceId,previewUrl)}playInternal(voiceId,url){const safe=safeMediaSrc(url);if(!safe)return;this.stopInternalPreview();const audio=this.ownerDocument.createElement("audio");audio.src=safe,audio.addEventListener("ended",this.onAudioEnded),audio.addEventListener("error",this.onAudioLoadFailure);const generation=++this.previewGeneration;this.audioEl=audio,this.pendingPreviewId=voiceId;let playResult;try{playResult=audio.play()}catch{this.onAudioLoadFailure(audio);return}Promise.resolve(playResult).then(()=>{generation!==this.previewGeneration||audio!==this.audioEl||this.pendingPreviewId!==voiceId||(this.pendingPreviewId=null,this.previewingId=voiceId,this.emit("lr-preview-change",{voiceId}))},()=>this.onAudioLoadFailure(audio))}stopInternalPreview(){const hadTarget=this.internalPreviewTargetId!==null||this.audioEl!==void 0;this.audioEl&&(this.audioEl.removeEventListener("ended",this.onAudioEnded),this.audioEl.removeEventListener("error",this.onAudioLoadFailure),this.audioEl.pause(),this.audioEl=void 0),hadTarget&&this.previewGeneration++,this.pendingPreviewId=null,this.previewingId!==null&&(this.previewingId=null,this.emit("lr-preview-change",{voiceId:null}))}get previewButtonLabel(){const candidate=this.previewCandidateId,playing=this.previewingId!==null&&this.previewingId===candidate,name=this.labelFor(candidate)||candidate;return playing?this.localize("voicePickerStopPreview"):this.localize("voicePickerPreview",void 0,{name})}renderRows(rows,activeId){return rows.map((entry,i)=>{const id=`${this.listId}-opt-${i}`,selected=entry.id===this.value,meta=[entry.language,entry.description].filter(Boolean).join(" · ");return html`<div
|
|
1
|
+
import{__decorate}from"tslib";import{AnnouncementSinkController}from"../../../internal/announcer.js";import{guard}from"lit/directives/guard.js";import{nativeAutocorrectAttribute}from"../../../internal/native-text-control.js";import{renderFormControlHintError}from"../../../internal/form-control-template.js";import{installFormControlLabelSupport}from"../../../internal/form-control-labels.js";import{html,nothing}from"lit";import{property,state}from"lit/decorators.js";import{LyraElement}from"../../../internal/lyra-element.js";import{LyraCatalogPickerElement}from"../catalog-picker-element.js";import{sizes}from"../../../internal/sizes.styles.js";import{hostAriaLabel,nextId}from"../../../internal/a11y.js";import{chevronIcon,playIcon,pauseIcon}from"../../../internal/icons.js";import{VALIDITY_ANCHOR}from"../../../internal/anchored-validity.js";import{safeMediaSrc}from"../../../internal/safe-url.js";import{styles}from"./voice-picker.styles.js";import{autocorrectConverter,normalizeAutocorrect,trueDefaultSpellcheckConverter as spellcheckConverter}from"../../../internal/converters.js";import{CatalogPickerController}from"../../../internal/catalog-picker.js";import{SlotPresenceController}from"../../../internal/slot-presence-controller.js";import{publicCollectionTruncation,collectionSupport}from"../../../internal/collection-snapshot.js";import{LYRA_DEFAULT_voice,LYRA_DEFAULT_voicePickerNoVoices,LYRA_DEFAULT_voicePickerPreview,LYRA_DEFAULT_voicePickerRequired,LYRA_DEFAULT_voicePickerStopPreview}from"../../../internal/default-strings/conversation.generated.js";import{LYRA_DEFAULT_catalogPickerInputLimit,LYRA_DEFAULT_noMatches,LYRA_DEFAULT_notInCatalog}from"../../../internal/default-strings/shared.generated.js";installFormControlLabelSupport();class LyraVoicePicker extends LyraCatalogPickerElement{constructor(){super(...arguments),this.provider="",this.allowCustom=!1,this.readonly=!1,this.withoutPreview=!1,this.label="",this.hint="",this.errorText="",this.placeholder="",this.spellcheck=!0,this.autocapitalize="",this.autocorrectValue=!0,this.autocomplete="off",this.inputMode="",this.enterKeyHint="",this.size="m",this.slotPresence=new SlotPresenceController(this),this.previewingId=null,this.listId=nextId("voice-picker-list"),this.controlId=nextId("voice-picker-control"),this.pendingPreviewId=null,this.previewGeneration=0,this.catalogPicker=new CatalogPickerController(this,{catalog:()=>this.catalog,allowCustom:()=>this.allowCustom,isReadonly:()=>this.readonly,locale:()=>this.effectiveLocale,searchableFields:entry=>[entry.id,entry.label,entry.language??"",entry.description??""],emitInput:detail=>this.emit("lr-input",detail),emitChange:detail=>this.emit("lr-change",detail),beforeValueChange:value=>{const previewTarget=this.internalPreviewTargetId;previewTarget!==null&&previewTarget!==value&&this.stopInternalPreview()},beforeActiveIndexChange:next=>this.reconcilePreviewForActiveIndex(next),afterQueryChange:()=>this.reconcilePreviewVisibility(this.open,this.catalogPicker.filteredEntries),onValueChange:(value,oldValue)=>{this.internals.setFormValue(value),this.updateValidity(),this.requestUpdate("value",oldValue)},onDefaultValueChange:(_value,oldValue)=>this.requestUpdate("defaultValue",oldValue),onStateChange:(state2,oldValue)=>{state2==="open"?(this.catalogPicker.open||this.reconcilePreviewVisibility(!1,[]),this.requestUpdate("open",oldValue)):this.requestUpdate()},onControlFocus:event=>this.captureModeFocus(event),onControlBlur:event=>{this.effectiveDisabled||(this.touched=!0),this.retireModeFocusAfterBlur(event)}}),this.limitAnnouncements=new AnnouncementSinkController(this),this.limitMounted=!1,this.previousInputLimit=!1,this.onAudioEnded=event=>{event.currentTarget===this.audioEl&&this.stopInternalPreview()},this.onAudioLoadFailure=eventOrAudio=>{const direct=eventOrAudio,isDomErrorEvent=direct.localName!=="audio",audioLike=direct.localName==="audio"?eventOrAudio:eventOrAudio.currentTarget,failedAudio=audioLike?.localName==="audio"&&typeof audioLike.pause=="function"&&typeof audioLike.removeEventListener=="function"?audioLike:void 0;if(!failedAudio||(failedAudio.removeEventListener("ended",this.onAudioEnded),failedAudio.removeEventListener("error",this.onAudioLoadFailure),failedAudio.pause(),failedAudio!==this.audioEl))return;const pendingVoiceId=this.pendingPreviewId;this.previewGeneration++,this.audioEl=void 0,this.pendingPreviewId=null,isDomErrorEvent&&this.previewingId===null&&pendingVoiceId!==null&&(this.previewingId=pendingVoiceId,this.emit("lr-preview-change",{voiceId:pendingVoiceId})),this.previewingId!==null&&(this.previewingId=null,this.emit("lr-preview-change",{voiceId:null}))},this.onPreviewButtonClick=()=>{const candidate=this.previewCandidateId;candidate&&(this.internalPreviewTargetId===candidate?this.stopInternalPreview():this.requestPreview(candidate))},this.onOptionPreviewClick=(e,entry)=>{e.stopPropagation(),this.internalPreviewTargetId===entry.id?this.stopInternalPreview():this.requestPreview(entry.id)},this.onTriggerClick=()=>{this.effectiveDisabled||(this.open?this.hide():this.show())},this.onControlBlur=event=>{this.catalogPicker.handleControlBlur(event)},this.onControlFocus=event=>{this.catalogPicker.handleControlFocus(event)},this.onTriggerKeyDown=e=>{this.catalogPicker.handleTriggerKeyDown(e)},this.onComboMouseDown=e=>{this.catalogPicker.handleComboMouseDown(e)},this.onInputFocus=event=>{this.catalogPicker.handleInputFocus(event)},this.onInput=e=>{this.catalogPicker.handleInput(e)},this.onInputKeyDown=e=>{this.catalogPicker.handleInputKeyDown(e)},this.onListboxMouseDown=e=>{this.catalogPicker.handleListboxMouseDown(e)},this.onListboxClick=e=>{this.catalogPicker.handleListboxClick(e)}}static{this.defaultStrings={...super.defaultStrings,catalogPickerInputLimit:LYRA_DEFAULT_catalogPickerInputLimit,noMatches:LYRA_DEFAULT_noMatches,notInCatalog:LYRA_DEFAULT_notInCatalog,voice:LYRA_DEFAULT_voice,voicePickerNoVoices:LYRA_DEFAULT_voicePickerNoVoices,voicePickerPreview:LYRA_DEFAULT_voicePickerPreview,voicePickerRequired:LYRA_DEFAULT_voicePickerRequired,voicePickerStopPreview:LYRA_DEFAULT_voicePickerStopPreview}}static{this.formAssociated=!0}static{this.styles=[LyraElement.styles,sizes,styles]}static{this.collectionSupport=collectionSupport}static{this.ownedCollectionProperties=Object.freeze(["catalog"])}static{this.ownedCollectionLimits={catalog:{entries:1024}}}static{this.properties={value:{attribute:!1,noAccessor:!0},defaultValue:{attribute:"value",reflect:!1,useDefault:!0,noAccessor:!0}}}get autocorrect(){return this.autocorrectValue}set autocorrect(next){this.autocorrectValue=normalizeAutocorrect(next),this.requestUpdate()}get open(){return this.catalogPicker.open}set open(next){this.catalogPicker.setOpen(next)}get activeIndex(){return this.catalogPicker.activeIndex}get query(){return this.catalogPicker.query}get catalogEditing(){return this.catalogPicker}[VALIDITY_ANCHOR](){return this.renderRoot?.querySelector('[part="trigger"], [part="combobox-input"]')??null}connectedCallback(){super.connectedCallback(),this.updateValidity(),this.catalogPicker.connected(this.hasUpdated)}willUpdate(changed){super.willUpdate(changed);const switchingMode=this.prepareModeFocus(this.closedMode);if(this.catalogPicker.suppressControlEvents=switchingMode,this.hasUpdated&&(changed.has("catalog")||changed.has("allowCustom")||changed.has("value"))){const activeValue=this.renderRoot.querySelector('[part="option"][data-active]')?.dataset.value,rows=this.closedMode?this.effectiveEntries:this.filteredEntries;this.catalogPicker.reconcileRows(activeValue,this.open&&(changed.has("value")||changed.has("allowCustom")||switchingMode),!1),this.reconcilePreviewVisibility(this.open,rows)}changed.has("catalog")&&this.internalPreviewTargetId!==null&&this.stopInternalPreview(),changed.has("withoutPreview")&&this.withoutPreview&&this.stopInternalPreview()}disconnectedCallback(){super.disconnectedCallback(),this.stopInternalPreview(),this.clearModeFocus(),this.catalogPicker.disconnected()}adoptedCallback(){super.adoptedCallback(),this.stopInternalPreview(),this.clearModeFocus(),this.catalogPicker.adopted()}get value(){return this.catalogPicker.value}set value(next){this.catalogPicker.value=next}get defaultValue(){return this.catalogPicker.defaultValue}set defaultValue(next){this.catalogPicker.defaultValue=next}requiredMessage(){return this.localize("voicePickerRequired")}releaseOnDisable(){super.releaseOnDisable(),this.stopInternalPreview()}formResetCallback(){this.touched=!1,this.catalogPicker.resetValue()}formStateRestoreCallback(state2,_mode){this.catalogPicker.restoreState(state2)}formDisabledCallback(disabled){this.formDisabledChanged(disabled)}get closedMode(){return this.catalogPicker.closedMode}get effectiveEntries(){return this.catalogPicker.effectiveEntries}get filteredEntries(){return this.catalogPicker.filteredEntries}labelFor(id){return this.catalogPicker.labelFor(id)}show(){this.catalogPicker.show()}hide(){this.catalogPicker.hide()}get inputLimited(){return publicCollectionTruncation(this,"catalog")!==void 0}updated(changed){super.updated(changed);const limited=this.inputLimited;this.limitMounted&&limited&&!this.previousInputLimit&&this.limitAnnouncements.announcePolite(this.localize("catalogPickerInputLimit")),this.previousInputLimit=limited,this.limitMounted=!0,this.syncCatalogDescription(this.controlId);const reposition=changed.has("open")||this.open&&(changed.has("catalog")||changed.has("allowCustom"));this.catalogPicker.updated(reposition),(changed.has("required")||changed.has("readonly")||changed.has("touched")||changed.has("value"))&&(changed.has("readonly")&&this.updateValidity(),this.toggleAttribute("data-invalid",this.touched&&!this.internals.validity.valid)),this.publishValidityStates(),this.finishModeFocus("voice-picker-mode-focus"),this.catalogPicker.suppressControlEvents=!1}get internalPreviewTargetId(){return this.pendingPreviewId??this.previewingId}reconcilePreviewVisibility(open,rows){const target=this.internalPreviewTargetId;if(target===null)return;const standaloneCandidate=open&&this.activeIndex>=0?rows[this.activeIndex]?.id??this.value:this.value,hasVisibleRow=open&&rows.some(entry=>entry.id===target&&!!entry.previewUrl);target!==standaloneCandidate&&!hasVisibleRow&&this.stopInternalPreview()}reconcilePreviewForActiveIndex(next){const target=this.internalPreviewTargetId;if(target!==null){const rows=this.closedMode?this.effectiveEntries:this.filteredEntries,nextCandidate=this.open&&next>=0?rows[next]?.id??this.value:this.value;target!==nextCandidate&&this.stopInternalPreview()}}get previewCandidateId(){return this.open&&this.activeIndex>=0?(this.closedMode?this.effectiveEntries:this.filteredEntries)[this.activeIndex]?.id??this.value:this.value}requestPreview(voiceId){if(!voiceId)return;const currentTarget=this.internalPreviewTargetId;currentTarget!==null&¤tTarget!==voiceId&&this.stopInternalPreview();const previewUrl=this.catalogPicker.entryFor(voiceId)?.previewUrl;!this.emit("lr-preview-request",{voiceId,previewUrl},{cancelable:!0}).defaultPrevented&&previewUrl&&this.playInternal(voiceId,previewUrl)}playInternal(voiceId,url){const safe=safeMediaSrc(url);if(!safe)return;this.stopInternalPreview();const audio=this.ownerDocument.createElement("audio");audio.src=safe,audio.addEventListener("ended",this.onAudioEnded),audio.addEventListener("error",this.onAudioLoadFailure);const generation=++this.previewGeneration;this.audioEl=audio,this.pendingPreviewId=voiceId;let playResult;try{playResult=audio.play()}catch{this.onAudioLoadFailure(audio);return}Promise.resolve(playResult).then(()=>{generation!==this.previewGeneration||audio!==this.audioEl||this.pendingPreviewId!==voiceId||(this.pendingPreviewId=null,this.previewingId=voiceId,this.emit("lr-preview-change",{voiceId}))},()=>this.onAudioLoadFailure(audio))}stopInternalPreview(){const hadTarget=this.internalPreviewTargetId!==null||this.audioEl!==void 0;this.audioEl&&(this.audioEl.removeEventListener("ended",this.onAudioEnded),this.audioEl.removeEventListener("error",this.onAudioLoadFailure),this.audioEl.pause(),this.audioEl=void 0),hadTarget&&this.previewGeneration++,this.pendingPreviewId=null,this.previewingId!==null&&(this.previewingId=null,this.emit("lr-preview-change",{voiceId:null}))}get previewButtonLabel(){const candidate=this.previewCandidateId,playing=this.previewingId!==null&&this.previewingId===candidate,name=this.labelFor(candidate)||candidate;return playing?this.localize("voicePickerStopPreview"):this.localize("voicePickerPreview",void 0,{name})}renderRows(rows,activeId){return rows.map((entry,i)=>{const id=`${this.listId}-opt-${i}`,selected=entry.id===this.value,meta=[entry.language,entry.description].filter(Boolean).join(" · ");return html`<div
|
|
2
2
|
part="option"
|
|
3
3
|
id=${id}
|
|
4
4
|
role="option"
|
|
@@ -31,7 +31,7 @@ import{__decorate}from"tslib";import{nativeAutocorrectAttribute}from"../../../in
|
|
|
31
31
|
@click=${this.onListboxClick}
|
|
32
32
|
>
|
|
33
33
|
<span class="glass-scroll-layer" aria-hidden="true"></span>
|
|
34
|
-
${rows.length===0?html`<div part="empty" role="option" aria-selected="false" aria-disabled="true">${emptyText}</div>`:this.renderRows(rows,activeId)}
|
|
34
|
+
${this.catalogPicker.listboxHidden?nothing:rows.length===0?html`<div part="empty" role="option" aria-selected="false" aria-disabled="true">${emptyText}</div>`:guard([rows,this.value,this.effectiveLocale,this.strings,this.localize("notInCatalog"),this.withoutPreview,this.previewingId],()=>this.renderRows(rows,activeId))}
|
|
35
35
|
</div>
|
|
36
36
|
`}get hasVisibleLabel(){return(this.label??"").length>0||this.slotPresence.has("label")}renderLabel(){return html`<label part="form-control-label" for=${this.controlId} ?hidden=${!this.hasVisibleLabel}
|
|
37
37
|
>${this.label}<slot name="label"></slot></label
|
|
@@ -123,5 +123,6 @@ import{__decorate}from"tslib";import{nativeAutocorrectAttribute}from"../../../in
|
|
|
123
123
|
${this.renderListbox(rows,activeId,this.localize("noMatches"))}
|
|
124
124
|
${this.renderHintError(hasError,hasHint)}
|
|
125
125
|
`}render(){return html`<div part="form-control" tabindex="-1">
|
|
126
|
+
${this.inputLimited?html`<p part="limit">${this.localize("catalogPickerInputLimit")}</p>`:nothing}
|
|
126
127
|
${this.closedMode?this.renderClosed():this.renderFreeText()}
|
|
127
128
|
</div>`}}__decorate([property()],LyraVoicePicker.prototype,"provider",void 0),__decorate([property({attribute:!1})],LyraVoicePicker.prototype,"catalog",void 0),__decorate([property({type:Boolean,reflect:!0,attribute:"allow-custom"})],LyraVoicePicker.prototype,"allowCustom",void 0),__decorate([property({type:Boolean,reflect:!0})],LyraVoicePicker.prototype,"readonly",void 0),__decorate([property({type:Boolean,attribute:"without-preview",reflect:!0})],LyraVoicePicker.prototype,"withoutPreview",void 0),__decorate([property()],LyraVoicePicker.prototype,"label",void 0),__decorate([property()],LyraVoicePicker.prototype,"hint",void 0),__decorate([property({attribute:"error-text"})],LyraVoicePicker.prototype,"errorText",void 0),__decorate([property()],LyraVoicePicker.prototype,"placeholder",void 0),__decorate([property({converter:spellcheckConverter})],LyraVoicePicker.prototype,"spellcheck",void 0),__decorate([property()],LyraVoicePicker.prototype,"autocapitalize",void 0),__decorate([property({converter:autocorrectConverter})],LyraVoicePicker.prototype,"autocorrect",null),__decorate([property()],LyraVoicePicker.prototype,"autocomplete",void 0),__decorate([property({attribute:"inputmode"})],LyraVoicePicker.prototype,"inputMode",void 0),__decorate([property({attribute:"enterkeyhint"})],LyraVoicePicker.prototype,"enterKeyHint",void 0),__decorate([property({type:Boolean,reflect:!0})],LyraVoicePicker.prototype,"open",null),__decorate([property({reflect:!0})],LyraVoicePicker.prototype,"size",void 0),__decorate([state()],LyraVoicePicker.prototype,"previewingId",void 0);export{LyraVoicePicker};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{iconHitTarget,focusRing}from"../../../internal/interactive-control.styles.js";import{css}from"lit";import{catalogPickerTriggerLabel}from"../catalog-picker-trigger.styles.js";import{glassSurface}from"../../../internal/glass-surface.styles.js";import{glassScrollLayerStyles}from"../../../internal/glass-scroll-layer.styles.js";import{glassIndependentRootStyles}from"../../../internal/glass-independent-root.styles.js";import{formControlChrome,formControlFocusHalo,formControlRequiredMarker}from"../../../internal/form-control.styles.js";import{overlaySurfaceFill,overlaySurfaceControlEdge}from"../../../internal/overlay-surface.styles.js";const styles=css` :host { position: relative; display: inline-block; inline-size: 100%; min-inline-size: 0; max-inline-size: var(--lr-voice-picker-max-inline-size, var(--lr-size-24rem)); --_lr-voice-picker-gap-default: var(--lr-space-xs); --_lr-voice-picker-radius-default: var(--lr-form-control-radius); --_lr-voice-picker-trigger-min-height-default: var(--lr-form-control-height); --_lr-voice-picker-trigger-padding: var(--lr-form-control-padding-block) var(--lr-form-control-padding-inline); --_lr-voice-picker-font-size: var(--lr-form-control-font-size); --_lr-voice-picker-expand-size: var(--lr-size-1-75rem); --_lr-form-control-focus-shadow: var(--lr-form-control-focus-shadow, none); } :host(:disabled) { cursor: not-allowed; } :host([size='2xs']), :host([size='xs']) { --_lr-voice-picker-expand-size: var(--lr-size-1rem); } :host([size='s']), :host([size='small']) { --_lr-voice-picker-expand-size: var(--lr-size-1-25rem); } ${formControlChrome} [part='form-control-label'] { overflow-wrap: anywhere; } ${formControlRequiredMarker} .control-row { display: flex; align-items: stretch; gap: var(--lr-voice-picker-gap, var(--_lr-voice-picker-gap-default)); } [part='trigger'], [part='combobox'] { display: flex; align-items: center; gap: var(--lr-voice-picker-gap, var(--_lr-voice-picker-gap-default)); flex: 1 1 auto; min-inline-size: 0; min-block-size: var( --lr-voice-picker-trigger-height, var( --lr-voice-picker-trigger-min-height, var(--_lr-voice-picker-trigger-min-height-default) ) ); block-size: var(--lr-voice-picker-trigger-height, auto); box-sizing: border-box; padding: var(--lr-voice-picker-trigger-padding, var(--_lr-voice-picker-trigger-padding)); border: var(--lr-border-width-thin) solid var(--lr-voice-picker-trigger-border-color, var(--lr-color-border)); border-radius: var(--lr-voice-picker-radius, var(--_lr-voice-picker-radius-default)); background: var(--lr-voice-picker-trigger-fill, var(--lr-color-surface)); color: inherit; font: inherit; font-size: var(--lr-voice-picker-font-size, var(--_lr-voice-picker-font-size)); } [part='trigger'] { cursor: pointer; text-align: start; } [part='combobox'] { cursor: text; } :where([part='trigger']):hover:where(:not(:disabled)) { background: var(--lr-color-brand-quiet); border-color: var(--lr-voice-picker-trigger-hover-border-color, var(--lr-voice-picker-trigger-border-color, var(--lr-color-border))); } :where([part='trigger']):active:where(:not(:disabled)) { background: color-mix(in oklab, var(--lr-color-brand-quiet), var(--lr-color-mix-partner) var(--lr-color-mix-active)); } [part='trigger']:focus-visible, [part='combobox']:focus-within { ${focusRing} } [part='trigger']:focus, [part='combobox']:focus-within { ${formControlFocusHalo} } :host([open]) [part='trigger'] { border-color: var(--lr-voice-picker-open-border-color, var(--lr-color-brand)); } :host(:disabled) [part='trigger'], :host(:disabled) [part='combobox'] { opacity: var(--lr-opacity-disabled); cursor: not-allowed; } ${catalogPickerTriggerLabel} [part='combobox-input'] { flex: 1 1 auto; min-inline-size: 0; border: none; outline: none; background: transparent; color: inherit; font: inherit; } [part='combobox-input']::placeholder { color: var(--lr-color-text-quiet); } [part='expand-icon'] { flex: 0 0 auto; display: inline-flex; align-items: center; justify-content: center; color: var(--lr-color-text-quiet); min-inline-size: min(var(--lr-icon-button-size), var(--lr-voice-picker-expand-size, var(--_lr-voice-picker-expand-size))); min-block-size: min(var(--lr-icon-button-size), var(--lr-voice-picker-expand-size, var(--_lr-voice-picker-expand-size))); line-height: var(--lr-line-height-none); } [part='expand-icon'] svg { transform: rotate(90deg); } [part='preview-button'] { flex: 0 0 auto; display: inline-flex; align-items: center; justify-content: center; inline-size: max(var(--lr-icon-button-size), var(--lr-form-control-height)); block-size: var( --lr-voice-picker-trigger-height, var( --lr-voice-picker-trigger-min-height, max(var(--lr-icon-button-size), var(--lr-form-control-height)) ) ); ${iconHitTarget} border: var(--lr-border-width-thin) solid var(--lr-color-border); border-radius: var(--lr-voice-picker-radius, var(--_lr-voice-picker-radius-default)); background: var(--lr-color-surface); color: var(--lr-color-text); font: inherit; cursor: pointer; } [part='preview-button']:hover:not(:disabled) { background: var(--lr-voice-picker-preview-hover-bg, var(--lr-color-brand-quiet)); color: var(--lr-voice-picker-preview-hover-color, var(--lr-color-brand)); } [part='preview-button']:active:not(:disabled) { background: color-mix( in oklab, var(--lr-voice-picker-preview-hover-bg, var(--lr-color-brand-quiet)), var(--lr-color-mix-partner) var(--lr-color-mix-active) ); color: var(--lr-voice-picker-preview-hover-color, var(--lr-color-brand)); } [part='preview-button']:focus-visible { ${focusRing} } [part='preview-button']:disabled { opacity: var(--lr-opacity-disabled); cursor: not-allowed; } [part='preview-button'][data-playing] { border-color: var(--lr-voice-picker-preview-active-border, var(--lr-color-brand)); color: var(--lr-voice-picker-preview-active-color, var(--lr-color-brand)); } [part='listbox'][hidden] { display: none; } [part='listbox'] { position: fixed; z-index: var(--lr-layer-dropdown); box-sizing: border-box; max-block-size: min(var(--lr-size-18rem), var(--lr-positioner-available-block-size, var(--lr-size-18rem))); overflow-y: auto; overflow-x: hidden; inline-size: max-content; min-inline-size: min(var(--lr-size-12rem), var(--lr-positioner-available-inline-size, var(--lr-size-12rem))); max-inline-size: min(var(--lr-popover-viewport-clamp), var(--lr-size-28rem), var(--lr-positioner-available-inline-size, 100vw)); padding: var(--lr-space-xs); ${overlaySurfaceFill} ${overlaySurfaceControlEdge} border-radius: var( --lr-voice-picker-radius, var(--lr-overlay-radius, var(--_lr-voice-picker-radius-default)) ); box-shadow: var(--lr-overlay-shadow-anchored, var(--lr-shadow-m)); visibility: hidden; opacity: 0; transform: translateY(var(--lr-size-neg-0-25rem)); transition: opacity var(--lr-transition-fast), transform var(--lr-transition-fast), visibility var(--lr-transition-fast); } :host([open]) [part='listbox'] { visibility: visible; opacity: 1; transform: translateY(0); } @media (prefers-reduced-motion: reduce) { [part='listbox'] { transition: none !important; } } [part='option'] { display: flex; align-items: center; gap: var(--lr-voice-picker-gap, var(--_lr-voice-picker-gap-default)); inline-size: 100%; box-sizing: border-box; padding: var(--lr-space-xs) var(--lr-space-s); border: var(--lr-border-width-thin) solid transparent; border-radius: var(--lr-voice-picker-radius, var(--_lr-voice-picker-radius-default)); background: none; color: inherit; font: inherit; text-align: start; cursor: pointer; } [part='option'][aria-selected='true'] { border-color: var(--lr-voice-picker-option-selected-border, var(--lr-color-brand)); color: var(--lr-voice-picker-option-selected-color, var(--lr-color-brand)); background: var(--lr-voice-picker-option-selected-bg, transparent); font-weight: var( --lr-voice-picker-option-selected-font-weight, var(--lr-font-weight-semibold) ); } [part='option']:where(:not([aria-disabled='true'])):hover, [part='option'][data-active] { background: var(--lr-voice-picker-option-active-bg, var(--lr-color-brand-quiet)); } [part='option']:where(:not([aria-disabled='true'])):active { background: color-mix( in oklab, var(--lr-voice-picker-option-active-bg, var(--lr-color-brand-quiet)), var(--lr-color-mix-partner) var(--lr-color-mix-active) ); } [part='option'][aria-disabled='true'] { cursor: default; opacity: var(--lr-voice-picker-option-disabled-opacity, 0.5); } [part='option-label'] { flex: 1 1 auto; min-inline-size: 0; display: flex; flex-direction: column; overflow: hidden; } [part='option-label'] > :first-child { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; } [part='option-meta'] { font-size: var(--lr-size-0-6875rem); color: var(--lr-color-text-quiet); overflow: hidden; text-overflow: ellipsis; white-space: nowrap; } [part='option']:where(:not([aria-disabled='true'])):hover [part='option-meta'], [part='option'][data-active] [part='option-meta'] { color: var(--lr-color-text); } [part='option'][data-synthetic] { border-style: var(--lr-voice-picker-option-synthetic-border-style, dashed); border-color: var(--lr-voice-picker-option-synthetic-border-color, var(--lr-color-border)); } [part='option'][data-synthetic] [part='option-label'] { font-style: var(--lr-voice-picker-option-synthetic-font-style, italic); } [part='option-badge'] { flex: 0 0 auto; font-size: var(--lr-size-0-6875rem); font-style: normal; font-weight: var(--lr-font-weight-normal); color: var(--lr-color-text-quiet); white-space: nowrap; } [part='option-preview'] { flex: 0 0 auto; display: inline-flex; align-items: center; justify-content: center; ${iconHitTarget} border-radius: var(--lr-voice-picker-radius, var(--_lr-voice-picker-radius-default)); color: var(--lr-color-text-quiet); cursor: pointer; } [part='option-preview']:hover { background: var(--lr-voice-picker-preview-hover-bg, var(--lr-color-brand-quiet)); color: var(--lr-voice-picker-preview-hover-color, var(--lr-color-brand)); } [part='option-preview']:active { background: color-mix( in oklab, var(--lr-voice-picker-preview-hover-bg, var(--lr-color-brand-quiet)), var(--lr-color-mix-partner) var(--lr-color-mix-active) ); color: var(--lr-voice-picker-preview-hover-color, var(--lr-color-brand)); } [part='empty'] { padding: var(--lr-space-m); color: var(--lr-color-text-quiet); font-size: var(--lr-font-size-md-sm); } [part='hint'] { overflow-wrap: anywhere; } [part='error'] { overflow-wrap: anywhere; } ${glassScrollLayerStyles} ${glassIndependentRootStyles} ${glassSurface('[part="listbox"]',css`var(--lr-overlay-surface, var(--_lr-overlay-surface, var(--lr-color-surface-container-high)))`,void 0,!0)} `;export{styles};
|
|
1
|
+
import{iconHitTarget,focusRing}from"../../../internal/interactive-control.styles.js";import{css}from"lit";import{catalogPickerTriggerLabel}from"../catalog-picker-trigger.styles.js";import{glassSurface}from"../../../internal/glass-surface.styles.js";import{glassScrollLayerStyles}from"../../../internal/glass-scroll-layer.styles.js";import{glassIndependentRootStyles}from"../../../internal/glass-independent-root.styles.js";import{formControlChrome,formControlFocusHalo,formControlRequiredMarker}from"../../../internal/form-control.styles.js";import{overlaySurfaceFill,overlaySurfaceControlEdge}from"../../../internal/overlay-surface.styles.js";const styles=css` [part='limit'] { margin: 0; padding: var(--lr-space-s); color: var(--lr-color-text-quiet); font-size: var(--lr-font-size-sm); overflow-wrap: anywhere; } :host { position: relative; display: inline-block; inline-size: 100%; min-inline-size: 0; max-inline-size: var(--lr-voice-picker-max-inline-size, var(--lr-size-24rem)); --_lr-voice-picker-gap-default: var(--lr-space-xs); --_lr-voice-picker-radius-default: var(--lr-form-control-radius); --_lr-voice-picker-trigger-min-height-default: var(--lr-form-control-height); --_lr-voice-picker-trigger-padding: var(--lr-form-control-padding-block) var(--lr-form-control-padding-inline); --_lr-voice-picker-font-size: var(--lr-form-control-font-size); --_lr-voice-picker-expand-size: var(--lr-size-1-75rem); --_lr-form-control-focus-shadow: var(--lr-form-control-focus-shadow, none); } :host(:disabled) { cursor: not-allowed; } :host([size='2xs']), :host([size='xs']) { --_lr-voice-picker-expand-size: var(--lr-size-1rem); } :host([size='s']), :host([size='small']) { --_lr-voice-picker-expand-size: var(--lr-size-1-25rem); } ${formControlChrome} [part='form-control-label'] { overflow-wrap: anywhere; } ${formControlRequiredMarker} .control-row { display: flex; align-items: stretch; gap: var(--lr-voice-picker-gap, var(--_lr-voice-picker-gap-default)); } [part='trigger'], [part='combobox'] { display: flex; align-items: center; gap: var(--lr-voice-picker-gap, var(--_lr-voice-picker-gap-default)); flex: 1 1 auto; min-inline-size: 0; min-block-size: var( --lr-voice-picker-trigger-height, var( --lr-voice-picker-trigger-min-height, var(--_lr-voice-picker-trigger-min-height-default) ) ); block-size: var(--lr-voice-picker-trigger-height, auto); box-sizing: border-box; padding: var(--lr-voice-picker-trigger-padding, var(--_lr-voice-picker-trigger-padding)); border: var(--lr-border-width-thin) solid var(--lr-voice-picker-trigger-border-color, var(--lr-color-border)); border-radius: var(--lr-voice-picker-radius, var(--_lr-voice-picker-radius-default)); background: var(--lr-voice-picker-trigger-fill, var(--lr-color-surface)); color: inherit; font: inherit; font-size: var(--lr-voice-picker-font-size, var(--_lr-voice-picker-font-size)); } [part='trigger'] { cursor: pointer; text-align: start; } [part='combobox'] { cursor: text; } :where([part='trigger']):hover:where(:not(:disabled)) { background: var(--lr-color-brand-quiet); border-color: var(--lr-voice-picker-trigger-hover-border-color, var(--lr-voice-picker-trigger-border-color, var(--lr-color-border))); } :where([part='trigger']):active:where(:not(:disabled)) { background: color-mix(in oklab, var(--lr-color-brand-quiet), var(--lr-color-mix-partner) var(--lr-color-mix-active)); } [part='trigger']:focus-visible, [part='combobox']:focus-within { ${focusRing} } [part='trigger']:focus, [part='combobox']:focus-within { ${formControlFocusHalo} } :host([open]) [part='trigger'] { border-color: var(--lr-voice-picker-open-border-color, var(--lr-color-brand)); } :host(:disabled) [part='trigger'], :host(:disabled) [part='combobox'] { opacity: var(--lr-opacity-disabled); cursor: not-allowed; } ${catalogPickerTriggerLabel} [part='combobox-input'] { flex: 1 1 auto; min-inline-size: 0; border: none; outline: none; background: transparent; color: inherit; font: inherit; } [part='combobox-input']::placeholder { color: var(--lr-color-text-quiet); } [part='expand-icon'] { flex: 0 0 auto; display: inline-flex; align-items: center; justify-content: center; color: var(--lr-color-text-quiet); min-inline-size: min(var(--lr-icon-button-size), var(--lr-voice-picker-expand-size, var(--_lr-voice-picker-expand-size))); min-block-size: min(var(--lr-icon-button-size), var(--lr-voice-picker-expand-size, var(--_lr-voice-picker-expand-size))); line-height: var(--lr-line-height-none); } [part='expand-icon'] svg { transform: rotate(90deg); } [part='preview-button'] { flex: 0 0 auto; display: inline-flex; align-items: center; justify-content: center; inline-size: max(var(--lr-icon-button-size), var(--lr-form-control-height)); block-size: var( --lr-voice-picker-trigger-height, var( --lr-voice-picker-trigger-min-height, max(var(--lr-icon-button-size), var(--lr-form-control-height)) ) ); ${iconHitTarget} border: var(--lr-border-width-thin) solid var(--lr-color-border); border-radius: var(--lr-voice-picker-radius, var(--_lr-voice-picker-radius-default)); background: var(--lr-color-surface); color: var(--lr-color-text); font: inherit; cursor: pointer; } [part='preview-button']:hover:not(:disabled) { background: var(--lr-voice-picker-preview-hover-bg, var(--lr-color-brand-quiet)); color: var(--lr-voice-picker-preview-hover-color, var(--lr-color-brand)); } [part='preview-button']:active:not(:disabled) { background: color-mix( in oklab, var(--lr-voice-picker-preview-hover-bg, var(--lr-color-brand-quiet)), var(--lr-color-mix-partner) var(--lr-color-mix-active) ); color: var(--lr-voice-picker-preview-hover-color, var(--lr-color-brand)); } [part='preview-button']:focus-visible { ${focusRing} } [part='preview-button']:disabled { opacity: var(--lr-opacity-disabled); cursor: not-allowed; } [part='preview-button'][data-playing] { border-color: var(--lr-voice-picker-preview-active-border, var(--lr-color-brand)); color: var(--lr-voice-picker-preview-active-color, var(--lr-color-brand)); } [part='listbox'][hidden] { display: none; } [part='listbox'] { position: fixed; z-index: var(--lr-layer-dropdown); box-sizing: border-box; max-block-size: min(var(--lr-size-18rem), var(--lr-positioner-available-block-size, var(--lr-size-18rem))); overflow-y: auto; overflow-x: hidden; inline-size: max-content; min-inline-size: min(var(--lr-size-12rem), var(--lr-positioner-available-inline-size, var(--lr-size-12rem))); max-inline-size: min(var(--lr-popover-viewport-clamp), var(--lr-size-28rem), var(--lr-positioner-available-inline-size, 100vw)); padding: var(--lr-space-xs); ${overlaySurfaceFill} ${overlaySurfaceControlEdge} border-radius: var( --lr-voice-picker-radius, var(--lr-overlay-radius, var(--_lr-voice-picker-radius-default)) ); box-shadow: var(--lr-overlay-shadow-anchored, var(--lr-shadow-m)); visibility: hidden; opacity: 0; transform: translateY(var(--lr-size-neg-0-25rem)); transition: opacity var(--lr-transition-fast), transform var(--lr-transition-fast), visibility var(--lr-transition-fast); } :host([open]) [part='listbox'] { visibility: visible; opacity: 1; transform: translateY(0); } @media (prefers-reduced-motion: reduce) { [part='listbox'] { transition: none !important; } } [part='option'] { display: flex; align-items: center; gap: var(--lr-voice-picker-gap, var(--_lr-voice-picker-gap-default)); inline-size: 100%; box-sizing: border-box; padding: var(--lr-space-xs) var(--lr-space-s); border: var(--lr-border-width-thin) solid transparent; border-radius: var(--lr-voice-picker-radius, var(--_lr-voice-picker-radius-default)); background: none; color: inherit; font: inherit; text-align: start; cursor: pointer; } [part='option'][aria-selected='true'] { border-color: var(--lr-voice-picker-option-selected-border, var(--lr-color-brand)); color: var(--lr-voice-picker-option-selected-color, var(--lr-color-brand)); background: var(--lr-voice-picker-option-selected-bg, transparent); font-weight: var( --lr-voice-picker-option-selected-font-weight, var(--lr-font-weight-semibold) ); } [part='option']:where(:not([aria-disabled='true'])):hover, [part='option'][data-active] { background: var(--lr-voice-picker-option-active-bg, var(--lr-color-brand-quiet)); } [part='option']:where(:not([aria-disabled='true'])):active { background: color-mix( in oklab, var(--lr-voice-picker-option-active-bg, var(--lr-color-brand-quiet)), var(--lr-color-mix-partner) var(--lr-color-mix-active) ); } [part='option'][aria-disabled='true'] { cursor: default; opacity: var(--lr-voice-picker-option-disabled-opacity, 0.5); } [part='option-label'] { flex: 1 1 auto; min-inline-size: 0; display: flex; flex-direction: column; overflow: hidden; } [part='option-label'] > :first-child { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; } [part='option-meta'] { font-size: var(--lr-size-0-6875rem); color: var(--lr-color-text-quiet); overflow: hidden; text-overflow: ellipsis; white-space: nowrap; } [part='option']:where(:not([aria-disabled='true'])):hover [part='option-meta'], [part='option'][data-active] [part='option-meta'] { color: var(--lr-color-text); } [part='option'][data-synthetic] { border-style: var(--lr-voice-picker-option-synthetic-border-style, dashed); border-color: var(--lr-voice-picker-option-synthetic-border-color, var(--lr-color-border)); } [part='option'][data-synthetic] [part='option-label'] { font-style: var(--lr-voice-picker-option-synthetic-font-style, italic); } [part='option-badge'] { flex: 0 0 auto; font-size: var(--lr-size-0-6875rem); font-style: normal; font-weight: var(--lr-font-weight-normal); color: var(--lr-color-text-quiet); white-space: nowrap; } [part='option-preview'] { flex: 0 0 auto; display: inline-flex; align-items: center; justify-content: center; ${iconHitTarget} border-radius: var(--lr-voice-picker-radius, var(--_lr-voice-picker-radius-default)); color: var(--lr-color-text-quiet); cursor: pointer; } [part='option-preview']:hover { background: var(--lr-voice-picker-preview-hover-bg, var(--lr-color-brand-quiet)); color: var(--lr-voice-picker-preview-hover-color, var(--lr-color-brand)); } [part='option-preview']:active { background: color-mix( in oklab, var(--lr-voice-picker-preview-hover-bg, var(--lr-color-brand-quiet)), var(--lr-color-mix-partner) var(--lr-color-mix-active) ); color: var(--lr-voice-picker-preview-hover-color, var(--lr-color-brand)); } [part='empty'] { padding: var(--lr-space-m); color: var(--lr-color-text-quiet); font-size: var(--lr-font-size-md-sm); } [part='hint'] { overflow-wrap: anywhere; } [part='error'] { overflow-wrap: anywhere; } ${glassScrollLayerStyles} ${glassIndependentRootStyles} ${glassSurface('[part="listbox"]',css`var(--lr-overlay-surface, var(--_lr-overlay-surface, var(--lr-color-surface-container-high)))`,void 0,!0)} `;export{styles};
|