@aceshooting/lyra-ui 9.1.1 → 10.0.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +597 -0
- package/custom-elements.json +1 -1
- package/dist/cli/migrate-wa.mjs +52 -0
- package/dist/cli/migration-contract.json +1 -1
- package/dist/components/agent-tools/activity-feed/activity-feed.class.js +1 -1
- package/dist/components/agent-tools/activity-feed/activity-feed.styles.js +0 -16
- package/dist/components/agent-tools/agent-eval-dashboard/agent-eval-dashboard.class.js +1 -1
- package/dist/components/agent-tools/agent-eval-dashboard/agent-eval-dashboard.styles.js +7 -5
- package/dist/components/agent-tools/agent-run/agent-run.class.js +2 -2
- package/dist/components/agent-tools/agent-run/agent-run.styles.js +0 -13
- package/dist/components/agent-tools/agent-trace/agent-trace.styles.js +7 -4
- package/dist/components/agent-tools/approval-queue/approval-queue.styles.js +7 -5
- package/dist/components/agent-tools/artifact-panel/artifact-panel.styles.js +0 -3
- package/dist/components/agent-tools/browser-frame/browser-frame.styles.js +3 -5
- package/dist/components/agent-tools/commit-card/commit-card.styles.js +0 -10
- package/dist/components/agent-tools/compare-panel/compare-panel.styles.js +11 -6
- package/dist/components/agent-tools/confirm-bar/confirm-bar.styles.js +0 -46
- package/dist/components/agent-tools/eval-dataset/eval-dataset.styles.js +0 -7
- package/dist/components/agent-tools/evaluation-run/evaluation-run.class.js +2 -2
- package/dist/components/agent-tools/prompt-studio/prompt-studio.styles.js +0 -15
- package/dist/components/agent-tools/result-card/result-card.styles.js +0 -7
- package/dist/components/agent-tools/result-card/result-field.styles.js +0 -5
- package/dist/components/agent-tools/schema-viewer/schema-viewer.styles.js +0 -3
- package/dist/components/agent-tools/span-waterfall/span-waterfall.styles.js +0 -15
- package/dist/components/agent-tools/stack-trace/stack-trace.styles.js +0 -20
- package/dist/components/agent-tools/subagent-panel/subagent-panel.class.js +2 -2
- package/dist/components/agent-tools/subagent-panel/subagent-panel.styles.js +0 -3
- package/dist/components/agent-tools/task-list/task-list.styles.js +0 -15
- package/dist/components/agent-tools/terminal/terminal.class.d.ts +11 -6
- package/dist/components/agent-tools/terminal/terminal.class.js +4 -4
- package/dist/components/agent-tools/terminal/terminal.styles.js +0 -46
- package/dist/components/agent-tools/test-results/test-results.class.js +2 -2
- package/dist/components/agent-tools/test-results/test-results.styles.js +0 -5
- package/dist/components/agent-tools/thinking-panel/thinking-panel.styles.js +0 -41
- package/dist/components/agent-tools/tool-approval-dialog/tool-approval-dialog.styles.js +0 -41
- package/dist/components/agent-tools/tool-call-chip/tool-call-chip.styles.js +0 -30
- package/dist/components/agent-tools/tool-param-form/tool-param-form.class.js +6 -6
- package/dist/components/agent-tools/tool-param-form/tool-param-form.styles.js +0 -5
- package/dist/components/agent-tools/tool-result-dialog/tool-result-dialog.styles.js +0 -20
- package/dist/components/agent-tools/tool-result-view/tool-result-view.styles.js +0 -4
- package/dist/components/agent-tools/tool-select-dialog/tool-select-dialog.styles.js +0 -21
- package/dist/components/agent-tools/trace-tree/trace-tree.styles.js +7 -31
- package/dist/components/charts/chart/box-plot.styles.js +0 -20
- package/dist/components/charts/chart/chart-colors.d.ts +1 -1
- package/dist/components/charts/chart/chart-colors.js +1 -1
- package/dist/components/charts/chart/chart-core-loader.d.ts +1 -0
- package/dist/components/charts/chart/chart-core-loader.js +1 -1
- package/dist/components/charts/chart/chart-feature-loader.d.ts +35 -0
- package/dist/components/charts/chart/chart-feature-loader.js +1 -1
- package/dist/components/charts/chart/chart.class.d.ts +93 -0
- package/dist/components/charts/chart/chart.class.js +3 -3
- package/dist/components/charts/chart/chart.styles.js +0 -27
- package/dist/components/charts/chart/lite-chart.class.d.ts +20 -1
- package/dist/components/charts/chart/lite-chart.class.js +4 -4
- package/dist/components/charts/chart/lite-chart.styles.js +0 -27
- package/dist/components/conversation/agent-workspace/agent-workspace.class.d.ts +20 -0
- package/dist/components/conversation/agent-workspace/agent-workspace.class.js +3 -1
- package/dist/components/conversation/agent-workspace/agent-workspace.styles.js +3 -0
- package/dist/components/conversation/audio-visualizer/audio-visualizer.styles.js +0 -7
- package/dist/components/conversation/branch-picker/branch-picker.styles.js +0 -3
- package/dist/components/conversation/chat-composer/chat-composer.styles.js +0 -51
- package/dist/components/conversation/chat-message/chat-message.styles.js +7 -35
- package/dist/components/conversation/chat-viewport/chat-viewport.class.js +1 -1
- package/dist/components/conversation/chat-viewport/chat-viewport.styles.js +0 -33
- package/dist/components/conversation/checkpoint/checkpoint.class.js +1 -1
- package/dist/components/conversation/checkpoint/checkpoint.styles.js +0 -3
- package/dist/components/conversation/code-block/code-block-shared.d.ts +5 -2
- package/dist/components/conversation/code-block/code-block.class.js +1 -1
- package/dist/components/conversation/code-block/code-block.styles.js +4 -95
- package/dist/components/conversation/code-block/code-loader.d.ts +11 -0
- package/dist/components/conversation/code-block/code-loader.js +1 -1
- package/dist/components/conversation/code-block/shiki-types.d.ts +12 -0
- package/dist/components/conversation/code-block/shiki-types.js +1 -1
- package/dist/components/conversation/conversation-item/conversation-item.styles.js +8 -54
- package/dist/components/conversation/generation-metrics/generation-metrics.class.js +2 -2
- package/dist/components/conversation/generation-metrics/generation-metrics.styles.js +0 -17
- package/dist/components/conversation/markdown/markdown-base.class.js +1 -1
- package/dist/components/conversation/markdown/markdown.styles.js +0 -41
- package/dist/components/conversation/message-actions/message-actions.styles.js +0 -3
- package/dist/components/conversation/message-feedback/message-feedback.styles.js +0 -35
- package/dist/components/conversation/message-parts/message-parts.class.d.ts +1 -1
- package/dist/components/conversation/message-parts/message-parts.styles.js +0 -5
- package/dist/components/conversation/model-select/model-select.class.js +3 -3
- package/dist/components/conversation/model-select/model-select.styles.js +12 -47
- package/dist/components/conversation/model-settings-panel/model-settings-panel.styles.js +0 -6
- package/dist/components/conversation/prompt-input/prompt-input.class.d.ts +3 -0
- package/dist/components/conversation/prompt-input/prompt-input.styles.js +0 -10
- package/dist/components/conversation/push-to-talk/push-to-talk.styles.js +0 -8
- package/dist/components/conversation/selection-toolbar/selection-toolbar.styles.js +1 -11
- package/dist/components/conversation/stream-status/stream-status.styles.js +0 -16
- package/dist/components/conversation/streaming-text/streaming-text.styles.js +0 -15
- package/dist/components/conversation/suggestion-chips/suggestion-chips.styles.js +0 -5
- package/dist/components/conversation/thread-list/thread-list.styles.js +0 -23
- package/dist/components/conversation/transcript-feed/transcript-feed.class.d.ts +16 -4
- package/dist/components/conversation/transcript-feed/transcript-feed.class.js +1 -1
- package/dist/components/conversation/transcript-feed/transcript-feed.styles.js +0 -1
- package/dist/components/conversation/typing-indicator/typing-indicator.styles.js +0 -23
- package/dist/components/conversation/usage-badge/usage-badge.styles.js +0 -3
- package/dist/components/conversation/voice-picker/voice-picker.class.js +3 -3
- package/dist/components/conversation/voice-picker/voice-picker.styles.js +9 -29
- package/dist/components/conversation/widget-renderer/resolve.d.ts +2 -0
- package/dist/components/conversation/widget-renderer/resolve.js +1 -1
- package/dist/components/data/calendar/calendar.class.d.ts +15 -2
- package/dist/components/data/calendar/calendar.class.js +2 -2
- package/dist/components/data/calendar/calendar.styles.js +2 -28
- package/dist/components/data/condition-builder/condition-builder.class.d.ts +10 -6
- package/dist/components/data/condition-builder/condition-builder.class.js +2 -2
- package/dist/components/data/condition-builder/condition-builder.styles.js +0 -6
- package/dist/components/data/context-meter/context-meter.styles.js +0 -24
- package/dist/components/data/data-grid/data-grid.class.js +3 -3
- package/dist/components/data/data-grid/data-grid.styles.js +0 -22
- package/dist/components/data/document-library/document-library.class.js +2 -2
- package/dist/components/data/document-library/document-library.styles.js +0 -4
- package/dist/components/data/env-list/env-list.class.js +1 -1
- package/dist/components/data/env-list/env-list.styles.js +7 -4
- package/dist/components/data/file-tree/file-tree.class.d.ts +12 -0
- package/dist/components/data/flow-canvas/flow-canvas.styles.js +12 -19
- package/dist/components/data/flow-controls/flow-controls.class.js +2 -2
- package/dist/components/data/flow-controls/flow-controls.styles.js +3 -36
- package/dist/components/data/flow-minimap/flow-minimap.class.js +1 -1
- package/dist/components/data/flow-minimap/flow-minimap.styles.js +0 -9
- package/dist/components/data/flow-node/flow-node.styles.js +0 -23
- package/dist/components/data/flow-run-status/flow-run-status.class.js +1 -1
- package/dist/components/data/flow-run-status/flow-run-status.styles.js +0 -7
- package/dist/components/data/graph-query-builder/graph-query-builder.class.d.ts +0 -7
- package/dist/components/data/graph-query-builder/graph-query-builder.class.js +1 -1
- package/dist/components/data/graph-query-builder/graph-query-builder.styles.js +0 -10
- package/dist/components/data/heatmap/heatmap-scale.d.ts +20 -0
- package/dist/components/data/heatmap/heatmap-scale.js +1 -1
- package/dist/components/data/heatmap/heatmap.class.d.ts +84 -1
- package/dist/components/data/heatmap/heatmap.class.js +2 -2
- package/dist/components/data/heatmap/heatmap.styles.js +0 -54
- package/dist/components/data/pagination/pagination.styles.js +23 -46
- package/dist/components/data/sequence-strip/sequence-strip.class.d.ts +34 -1
- package/dist/components/data/sequence-strip/sequence-strip.class.js +5 -2
- package/dist/components/data/sequence-strip/sequence-strip.styles.js +14 -20
- package/dist/components/data/sparkline/sparkline.class.js +1 -1
- package/dist/components/data/stat/stat.styles.js +0 -67
- package/dist/components/data/table/table.class.d.ts +42 -3
- package/dist/components/data/table/table.class.js +4 -4
- package/dist/components/data/table/table.styles.js +20 -91
- package/dist/components/data/timeline/timeline-item.styles.js +0 -30
- package/dist/components/data/timeline/timeline.class.d.ts +89 -1
- package/dist/components/data/timeline/timeline.class.js +2 -2
- package/dist/components/data/timeline/timeline.styles.js +111 -31
- package/dist/components/data/tree/tree-item.styles.js +1 -28
- package/dist/components/data/tree/tree.class.js +2 -2
- package/dist/components/data/tree/tree.styles.js +0 -6
- package/dist/components/data/word-cloud/word-cloud.styles.js +0 -5
- package/dist/components/forms/button/button.class.js +1 -1
- package/dist/components/forms/button/button.styles.js +0 -105
- package/dist/components/forms/checkbox/checkbox.class.d.ts +3 -0
- package/dist/components/forms/checkbox/checkbox.class.js +1 -1
- package/dist/components/forms/checkbox/checkbox.styles.js +0 -39
- package/dist/components/forms/checkbox-group/checkbox-group.class.d.ts +21 -2
- package/dist/components/forms/checkbox-group/checkbox-group.class.js +1 -1
- package/dist/components/forms/checkbox-group/checkbox-group.styles.js +0 -18
- package/dist/components/forms/code-editor/code-editor.styles.js +0 -30
- package/dist/components/forms/color-picker/color-picker.class.js +2 -2
- package/dist/components/forms/color-picker/color-picker.styles.js +0 -69
- package/dist/components/forms/combobox/combobox.class.js +2 -2
- package/dist/components/forms/combobox/combobox.styles.js +22 -111
- package/dist/components/forms/combobox/option.styles.js +7 -1
- package/dist/components/forms/date-picker/date-input.class.js +1 -1
- package/dist/components/forms/date-picker/date-input.styles.js +12 -67
- package/dist/components/forms/date-picker/date-picker.class.d.ts +1 -0
- package/dist/components/forms/date-picker/date-picker.class.js +22 -20
- package/dist/components/forms/date-picker/date-picker.styles.js +36 -29
- package/dist/components/forms/emoji-picker/emoji-data-loader.d.ts +6 -3
- package/dist/components/forms/emoji-picker/emoji-data-loader.js +1 -1
- package/dist/components/forms/emoji-picker/emoji-picker.class.d.ts +8 -1
- package/dist/components/forms/emoji-picker/emoji-picker.class.js +1 -1
- package/dist/components/forms/emoji-picker/emoji-picker.styles.js +3 -41
- package/dist/components/forms/icon-button/icon-button.class.js +1 -1
- package/dist/components/forms/icon-button/icon-button.styles.js +0 -16
- package/dist/components/forms/input/input.styles.js +0 -54
- package/dist/components/forms/input/number-input.styles.d.ts +4 -5
- package/dist/components/forms/input/number-input.styles.js +0 -11
- package/dist/components/forms/input/time-input-shared.d.ts +11 -0
- package/dist/components/forms/input/time-input-shared.js +1 -1
- package/dist/components/forms/input/time-input.class.d.ts +11 -2
- package/dist/components/forms/input/time-input.class.js +1 -1
- package/dist/components/forms/input/time-input.styles.js +0 -6
- package/dist/components/forms/locale-picker/locale-picker.class.js +2 -2
- package/dist/components/forms/locale-picker/locale-picker.styles.js +1 -26
- package/dist/components/forms/otp-input/otp-input.class.js +3 -3
- package/dist/components/forms/otp-input/otp-input.styles.js +0 -16
- package/dist/components/forms/phone-input/phone-input.class.d.ts +9 -1
- package/dist/components/forms/phone-input/phone-input.class.js +2 -2
- package/dist/components/forms/phone-input/phone-input.styles.js +0 -37
- package/dist/components/forms/radio/radio-button.styles.js +1 -30
- package/dist/components/forms/radio/radio-group.styles.js +0 -4
- package/dist/components/forms/radio/radio.styles.js +0 -44
- package/dist/components/forms/rubric-form/rubric-form.styles.js +0 -5
- package/dist/components/forms/select/select.class.js +1 -1
- package/dist/components/forms/select/select.styles.js +14 -114
- package/dist/components/forms/slider/slider.styles.js +0 -55
- package/dist/components/forms/swatch-picker/swatch-picker.class.d.ts +0 -11
- package/dist/components/forms/swatch-picker/swatch-picker.class.js +2 -2
- package/dist/components/forms/swatch-picker/swatch-picker.styles.js +0 -77
- package/dist/components/forms/switch/switch.class.d.ts +3 -0
- package/dist/components/forms/switch/switch.class.js +1 -1
- package/dist/components/forms/switch/switch.styles.js +0 -37
- package/dist/components/forms/textarea/textarea.styles.js +0 -28
- package/dist/components/forms/time-range/time-range.styles.js +12 -84
- package/dist/components/forms/token-input/token-input.class.d.ts +23 -9
- package/dist/components/forms/token-input/token-input.class.js +1 -1
- package/dist/components/forms/token-input/token-input.styles.js +1 -54
- package/dist/components/layout/app-rail/app-rail-item.class.js +2 -2
- package/dist/components/layout/app-rail/app-rail-item.styles.js +0 -13
- package/dist/components/layout/app-rail/app-rail.class.d.ts +5 -0
- package/dist/components/layout/app-rail/app-rail.class.js +1 -1
- package/dist/components/layout/app-rail/app-rail.styles.js +0 -46
- package/dist/components/layout/button-group/button-group.styles.js +0 -6
- package/dist/components/layout/card/card.class.d.ts +12 -0
- package/dist/components/layout/card/card.styles.js +3 -11
- package/dist/components/layout/carousel/carousel.styles.js +0 -1
- package/dist/components/layout/command-palette/command-palette.class.d.ts +8 -0
- package/dist/components/layout/command-palette/command-palette.class.js +3 -1
- package/dist/components/layout/command-palette/command-palette.styles.js +1 -13
- package/dist/components/layout/control-group/control-group.styles.js +0 -7
- package/dist/components/layout/dashboard-grid/dashboard-grid.styles.js +6 -25
- package/dist/components/layout/details/accordion.class.d.ts +13 -0
- package/dist/components/layout/details/accordion.class.js +1 -1
- package/dist/components/layout/details/details.class.js +1 -1
- package/dist/components/layout/details/details.styles.js +0 -12
- package/dist/components/layout/dock-panel/dock-panel.styles.js +0 -45
- package/dist/components/layout/drilldown-panel/drilldown-panel.class.d.ts +2 -0
- package/dist/components/layout/drilldown-panel/drilldown-panel.class.js +2 -2
- package/dist/components/layout/drilldown-panel/drilldown-panel.styles.js +0 -4
- package/dist/components/layout/filter-bar/filter-bar.class.js +1 -1
- package/dist/components/layout/filter-bar/filter-bar.styles.js +0 -9
- package/dist/components/layout/menu/menu-item.class.d.ts +5 -0
- package/dist/components/layout/menu/menu-item.class.js +1 -1
- package/dist/components/layout/menu/menu-item.styles.js +0 -49
- package/dist/components/layout/menu/menu-label.styles.js +0 -2
- package/dist/components/layout/menu/menu.styles.js +0 -18
- package/dist/components/layout/multi-split/multi-split.styles.js +0 -63
- package/dist/components/layout/page/page.class.d.ts +4 -0
- package/dist/components/layout/page/page.class.js +1 -1
- package/dist/components/layout/reorder-list/reorder-item.styles.js +0 -4
- package/dist/components/layout/responsive-panel/responsive-panel.styles.js +0 -27
- package/dist/components/layout/scroller/scroller.styles.js +0 -20
- package/dist/components/layout/segmented/segmented.class.d.ts +7 -1
- package/dist/components/layout/segmented/segmented.class.js +1 -1
- package/dist/components/layout/segmented/segmented.styles.js +69 -37
- package/dist/components/layout/split-panel/split-panel.styles.js +1 -7
- package/dist/components/layout/stepper/stepper.class.d.ts +8 -1
- package/dist/components/layout/stepper/stepper.class.js +1 -1
- package/dist/components/layout/stepper/stepper.styles.js +140 -41
- package/dist/components/layout/tab-group/tab-group.class.d.ts +4 -1
- package/dist/components/layout/tab-group/tab-group.styles.js +9 -75
- package/dist/components/layout/tab-group/tab.styles.js +0 -2
- package/dist/components/layout/virtual-list/virtual-list.class.d.ts +4 -4
- package/dist/components/layout/virtual-list/virtual-list.class.js +1 -1
- package/dist/components/layout/virtual-list/virtual-list.styles.js +0 -68
- package/dist/components/layout/widget/widget.class.d.ts +5 -1
- package/dist/components/layout/widget/widget.class.js +1 -1
- package/dist/components/layout/widget/widget.styles.js +97 -40
- package/dist/components/media/animated-image/animated-image.class.d.ts +3 -0
- package/dist/components/media/animated-image/animated-image.class.js +1 -1
- package/dist/components/media/animated-image/animated-image.styles.js +0 -28
- package/dist/components/media/attachment-chip/attachment-chip.class.d.ts +1 -1
- package/dist/components/media/attachment-chip/attachment-chip.class.js +1 -1
- package/dist/components/media/attachment-chip/attachment-chip.styles.js +0 -31
- package/dist/components/media/attachment-trigger/attachment-trigger.class.js +3 -3
- package/dist/components/media/attachment-trigger/attachment-trigger.styles.js +0 -40
- package/dist/components/media/av-player/av-player.class.d.ts +5 -6
- package/dist/components/media/av-player/av-player.class.js +1 -1
- package/dist/components/media/av-player/av-player.styles.js +0 -45
- package/dist/components/media/avatar/avatar.styles.js +3 -16
- package/dist/components/media/file-icon/file-icon.class.d.ts +1 -2
- package/dist/components/media/file-icon/file-icon.class.js +1 -1
- package/dist/components/media/file-input/file-input.class.d.ts +12 -0
- package/dist/components/media/file-input/file-input.styles.js +3 -24
- package/dist/components/media/flag/flag.class.d.ts +20 -0
- package/dist/components/media/flag/flag.class.js +4 -2
- package/dist/components/media/flag/flag.styles.js +7 -1
- package/dist/components/media/flag/language-map.d.ts +10 -0
- package/dist/components/media/flag/language-map.js +1 -1
- package/dist/components/media/image-comparer/image-comparer.styles.js +4 -33
- package/dist/components/media/image-viewer/image-viewer.class.js +0 -2
- package/dist/components/media/image-viewer/image-viewer.styles.js +7 -27
- package/dist/components/media/lightbox/lightbox.class.js +0 -2
- package/dist/components/media/lightbox/lightbox.styles.js +0 -21
- package/dist/components/media/map/map-loader.d.ts +19 -1
- package/dist/components/media/map/map-loader.js +1 -1
- package/dist/components/media/map/map.class.d.ts +141 -1
- package/dist/components/media/map/map.class.js +15 -3
- package/dist/components/media/map/map.styles.js +20 -17
- package/dist/components/media/media-card/media-card.class.d.ts +14 -3
- package/dist/components/media/media-card/media-card.class.js +1 -1
- package/dist/components/media/media-card/media-card.styles.js +2 -28
- package/dist/components/media/pan-zoom/pan-zoom.styles.js +0 -3
- package/dist/components/media/qr-code/qr-code.class.d.ts +3 -2
- package/dist/components/media/qr-code/qr-code.class.js +2 -2
- package/dist/components/media/qr-code/qr-code.styles.js +0 -3
- package/dist/components/media/sequence-playback/sequence-playback.class.d.ts +2 -0
- package/dist/components/media/sequence-playback/sequence-playback.class.js +2 -1
- package/dist/components/media/sequence-playback/sequence-playback.styles.js +0 -19
- package/dist/components/media/video/video.class.d.ts +23 -2
- package/dist/components/media/video/video.class.js +3 -3
- package/dist/components/media/video/video.styles.js +4 -2
- package/dist/components/media/zoomable-frame/zoomable-frame.class.d.ts +3 -2
- package/dist/components/media/zoomable-frame/zoomable-frame.class.js +2 -2
- package/dist/components/media/zoomable-frame/zoomable-frame.styles.js +0 -5
- package/dist/components/overlays/alert/alert.styles.js +4 -2
- package/dist/components/overlays/badge/badge.styles.js +4 -48
- package/dist/components/overlays/badge/tag.styles.js +0 -14
- package/dist/components/overlays/callout/callout.styles.js +0 -11
- package/dist/components/overlays/chip/chip-group.styles.js +0 -18
- package/dist/components/overlays/chip/chip.styles.js +6 -69
- package/dist/components/overlays/dialog/confirm.d.ts +1 -4
- package/dist/components/overlays/dialog/confirm.js +1 -1
- package/dist/components/overlays/dialog/dialog.class.d.ts +12 -9
- package/dist/components/overlays/dialog/dialog.class.js +1 -1
- package/dist/components/overlays/dialog/dialog.styles.js +0 -43
- package/dist/components/overlays/drawer/drawer.class.d.ts +2 -2
- package/dist/components/overlays/drawer/drawer.styles.js +0 -9
- package/dist/components/overlays/empty/empty.styles.js +0 -12
- package/dist/components/overlays/kbd/kbd.styles.js +0 -8
- package/dist/components/overlays/overlay/dropdown.class.d.ts +1 -6
- package/dist/components/overlays/overlay/dropdown.class.js +2 -2
- package/dist/components/overlays/overlay/overlay.styles.js +0 -28
- package/dist/components/overlays/overlay/popover.class.d.ts +9 -1
- package/dist/components/overlays/overlay/popover.class.js +2 -2
- package/dist/components/overlays/overlay/tooltip.class.d.ts +10 -0
- package/dist/components/overlays/overlay/tooltip.class.js +1 -1
- package/dist/components/overlays/popup/popup.class.d.ts +1 -0
- package/dist/components/overlays/popup/popup.class.js +1 -1
- package/dist/components/overlays/popup/popup.styles.js +0 -15
- package/dist/components/overlays/progress/progress-ring.class.d.ts +9 -1
- package/dist/components/overlays/progress/progress-ring.class.js +3 -3
- package/dist/components/overlays/progress/progress.styles.js +0 -21
- package/dist/components/overlays/rating/rating.styles.js +0 -25
- package/dist/components/overlays/skeleton/skeleton.styles.js +0 -4
- package/dist/components/overlays/spinner/spinner.styles.js +0 -3
- package/dist/components/overlays/toast/toast-item.styles.js +3 -45
- package/dist/components/retrieval/chunk-inspector/chunk-inspector.styles.js +0 -35
- package/dist/components/retrieval/citation-badge/citation-badge.class.d.ts +2 -2
- package/dist/components/retrieval/citation-badge/citation-badge.class.js +3 -3
- package/dist/components/retrieval/citation-badge/citation-badge.styles.js +0 -20
- package/dist/components/retrieval/claim-evidence/claim-evidence.styles.js +0 -8
- package/dist/components/retrieval/community-card/community-card.class.d.ts +1 -0
- package/dist/components/retrieval/community-card/community-card.styles.js +0 -6
- package/dist/components/retrieval/embedding-explorer/embedding-explorer.styles.js +8 -12
- package/dist/components/retrieval/entity-card/entity-card.class.d.ts +4 -3
- package/dist/components/retrieval/entity-card/entity-card.class.js +1 -1
- package/dist/components/retrieval/entity-card/entity-card.styles.js +0 -12
- package/dist/components/retrieval/entity-chip/entity-chip.class.d.ts +10 -4
- package/dist/components/retrieval/entity-chip/entity-chip.class.js +3 -3
- package/dist/components/retrieval/entity-chip/entity-chip.styles.js +6 -9
- package/dist/components/retrieval/entity-dossier/entity-dossier.class.d.ts +19 -5
- package/dist/components/retrieval/graph/graph.class.d.ts +5 -0
- package/dist/components/retrieval/graph/graph.class.js +1 -1
- package/dist/components/retrieval/graph/graph.styles.js +0 -30
- package/dist/components/retrieval/graph-legend/graph-legend.styles.js +0 -3
- package/dist/components/retrieval/ingestion-queue/ingestion-queue.styles.js +0 -25
- package/dist/components/retrieval/knowledge-base-admin/knowledge-base-admin.class.d.ts +2 -0
- package/dist/components/retrieval/knowledge-base-admin/knowledge-base-admin.styles.js +0 -7
- package/dist/components/retrieval/knowledge-graph-explorer/knowledge-graph-explorer.class.d.ts +20 -6
- package/dist/components/retrieval/knowledge-graph-explorer/knowledge-graph-explorer.class.js +2 -2
- package/dist/components/retrieval/knowledge-graph-explorer/knowledge-graph-explorer.styles.js +0 -16
- package/dist/components/retrieval/mind-map/mind-map.class.d.ts +5 -3
- package/dist/components/retrieval/mind-map/mind-map.class.js +1 -1
- package/dist/components/retrieval/mind-map/mind-map.styles.js +0 -2
- package/dist/components/retrieval/neighbor-list/neighbor-list.class.d.ts +3 -2
- package/dist/components/retrieval/neighbor-list/neighbor-list.class.js +1 -1
- package/dist/components/retrieval/neighbor-list/neighbor-list.styles.js +0 -30
- package/dist/components/retrieval/node-palette/node-palette.styles.js +0 -11
- package/dist/components/retrieval/path-strip/path-strip.styles.js +0 -10
- package/dist/components/retrieval/provenance-panel/provenance-panel.class.d.ts +12 -3
- package/dist/components/retrieval/provenance-panel/provenance-panel.styles.js +0 -2
- package/dist/components/retrieval/rag-eval-dashboard/rag-eval-dashboard.class.d.ts +3 -2
- package/dist/components/retrieval/rag-eval-dashboard/rag-eval-dashboard.class.js +2 -2
- package/dist/components/retrieval/retrieval-results/retrieval-results.styles.js +0 -28
- package/dist/components/retrieval/retrieval-search/retrieval-search.styles.js +0 -4
- package/dist/components/retrieval/retrieval-trace/retrieval-trace.styles.js +0 -2
- package/dist/components/retrieval/source-card/source-card.styles.js +0 -13
- package/dist/components/retrieval/source-list/source-list.styles.js +0 -7
- package/dist/components/retrieval/source-picker/source-picker.styles.js +0 -7
- package/dist/components/utility/copy-button/copy-button.styles.js +0 -10
- package/dist/components/utility/diff-view/diff-view.styles.js +0 -14
- package/dist/components/utility/export-button/export-button.styles.js +0 -22
- package/dist/components/utility/icon/icon.styles.js +0 -6
- package/dist/components/utility/json-viewer/json-viewer.styles.js +2 -48
- package/dist/components/utility/known-date/known-date.class.d.ts +7 -3
- package/dist/components/utility/known-date/known-date.styles.js +10 -51
- package/dist/components/utility/live-region/live-region.styles.js +0 -4
- package/dist/components/utility/mention-popover/mention-popover.styles.js +0 -25
- package/dist/components/utility/poll-status/poll-status.styles.js +0 -4
- package/dist/components/utility/random-content/random-content.class.d.ts +22 -0
- package/dist/components/utility/random-content/random-content.class.js +3 -2
- package/dist/components/utility/random-content/random-content.styles.js +6 -13
- package/dist/components/utility/tour/tour.class.d.ts +4 -2
- package/dist/components/utility/tour/tour.class.js +3 -3
- package/dist/components/utility/tour/tour.styles.js +0 -13
- package/dist/components/utility/visually-hidden/visually-hidden.styles.js +0 -5
- package/dist/components/viewers/archive-viewer/archive-viewer.class.js +1 -1
- package/dist/components/viewers/archive-viewer/archive-viewer.styles.d.ts +2 -2
- package/dist/components/viewers/archive-viewer/archive-viewer.styles.js +0 -10
- package/dist/components/viewers/csv-viewer/csv-viewer.class.js +1 -1
- package/dist/components/viewers/csv-viewer/csv-viewer.styles.js +0 -19
- package/dist/components/viewers/dataset-viewer/dataset-viewer.class.js +1 -1
- package/dist/components/viewers/dataset-viewer/dataset-viewer.styles.js +0 -15
- package/dist/components/viewers/document-compare/document-compare.styles.js +0 -3
- package/dist/components/viewers/document-preview/document-preview.styles.js +0 -25
- package/dist/components/viewers/document-viewer/document-viewer.class.d.ts +2 -1
- package/dist/components/viewers/document-viewer/document-viewer.class.js +1 -1
- package/dist/components/viewers/document-viewer/document-viewer.styles.js +0 -5
- package/dist/components/viewers/docx-viewer/docx-viewer.styles.js +0 -17
- package/dist/components/viewers/ebook-viewer/ebook-viewer.styles.js +0 -4
- package/dist/components/viewers/email-viewer/email-viewer.styles.js +0 -7
- package/dist/components/viewers/geojson-view/geojson-view.styles.js +0 -5
- package/dist/components/viewers/highlight-layer/highlight-layer.styles.js +0 -3
- package/dist/components/viewers/notebook-viewer/notebook-viewer.class.js +1 -1
- package/dist/components/viewers/notebook-viewer/notebook-viewer.styles.js +0 -38
- package/dist/components/viewers/page-rail/page-rail.class.js +1 -1
- package/dist/components/viewers/page-rail/page-rail.styles.js +0 -13
- package/dist/components/viewers/pdf-viewer/pdf-loader.d.ts +13 -2
- package/dist/components/viewers/pdf-viewer/pdf-loader.js +1 -1
- package/dist/components/viewers/pdf-viewer/pdf-viewer.class.d.ts +32 -2
- package/dist/components/viewers/pdf-viewer/pdf-viewer.class.js +4 -4
- package/dist/components/viewers/pdf-viewer/pdf-viewer.styles.js +1 -27
- package/dist/components/viewers/pptx-viewer/pptx-viewer.styles.js +0 -3
- package/dist/components/viewers/spreadsheet-viewer/spreadsheet-viewer.class.js +1 -1
- package/dist/components/viewers/spreadsheet-viewer/spreadsheet-viewer.styles.js +0 -14
- package/dist/components/viewers/svg-viewer/svg-viewer.styles.js +0 -7
- package/dist/components/viewers/xml-viewer/xml-viewer.styles.js +2 -24
- package/dist/custom-elements-jsx.d.ts +56 -37
- package/dist/events.d.ts +43 -33
- package/dist/internal/agent-status-variants.d.ts +18 -0
- package/dist/internal/agent-status-variants.js +1 -0
- package/dist/internal/announcer.d.ts +8 -3
- package/dist/internal/announcer.js +1 -1
- package/dist/internal/autoloader-manifest.js +1 -1
- package/dist/internal/canvas-color.d.ts +16 -0
- package/dist/internal/canvas-color.js +1 -1
- package/dist/internal/catalog-picker.d.ts +0 -1
- package/dist/internal/catalog-picker.js +1 -1
- package/dist/internal/default-strings.generated.d.ts +1 -0
- package/dist/internal/default-strings.generated.js +1 -1
- package/dist/internal/dev-mode-attribute-warning.d.ts +27 -4
- package/dist/internal/dev-mode-attribute-warning.js +1 -1
- package/dist/internal/localization-runtime.js +1 -1
- package/dist/internal/localization-types.d.ts +1 -1
- package/dist/internal/localization.js +1 -1
- package/dist/internal/lyra-element.d.ts +13 -0
- package/dist/internal/lyra-element.js +1 -1
- package/dist/internal/media-controller.js +1 -1
- package/dist/internal/package-metadata.d.ts +1 -1
- package/dist/internal/package-metadata.js +1 -1
- package/dist/internal/scroll-overflow.d.ts +35 -13
- package/dist/internal/scroll-overflow.js +1 -1
- package/dist/internal/sizes.styles.js +0 -2
- package/dist/internal/specialist-tokens.styles.js +6 -11
- package/dist/internal/text-highlights.d.ts +4 -1
- package/dist/internal/text-highlights.js +1 -1
- package/dist/internal/tokens/palette.styles.js +0 -15
- package/dist/internal/tokens.styles.js +19 -113
- package/dist/lyra.d.ts +8 -5
- package/dist/styles/reservations.css +82 -0
- package/dist/svelte.d.ts +56 -37
- package/dist/translations/ar.js +1 -1
- package/dist/translations/de.js +1 -1
- package/dist/translations/es.js +1 -1
- package/dist/translations/fa.js +1 -1
- package/dist/translations/fr.js +1 -1
- package/dist/translations/he.js +1 -1
- package/dist/translations/ja.js +1 -1
- package/dist/translations/pt-BR.js +1 -1
- package/dist/translations/ru.js +1 -1
- package/dist/translations/zh-CN.js +1 -1
- package/dist/vue.d.ts +56 -37
- package/llms/components/lr-accordion-item.md +12 -3
- package/llms/components/lr-accordion.md +11 -2
- package/llms/components/lr-agent-eval-dashboard.md +1 -1
- package/llms/components/lr-agent-trace.md +3 -1
- package/llms/components/lr-agent-workspace.md +20 -0
- package/llms/components/lr-artifact-panel.md +10 -4
- package/llms/components/lr-attachment-chip.md +7 -4
- package/llms/components/lr-attachment-trigger.md +7 -4
- package/llms/components/lr-av-player.md +3 -1
- package/llms/components/lr-avatar.md +6 -6
- package/llms/components/lr-bar-chart.md +4 -3
- package/llms/components/lr-box-plot.md +1 -1
- package/llms/components/lr-browser-frame.md +7 -3
- package/llms/components/lr-bubble-chart.md +4 -3
- package/llms/components/lr-calendar.md +9 -2
- package/llms/components/lr-card.md +24 -0
- package/llms/components/lr-chart.md +32 -8
- package/llms/components/lr-chat-viewport.md +7 -2
- package/llms/components/lr-checkbox-group.md +13 -5
- package/llms/components/lr-checkbox.md +5 -2
- package/llms/components/lr-checkpoint.md +6 -2
- package/llms/components/lr-combobox.md +5 -2
- package/llms/components/lr-command-palette.md +4 -1
- package/llms/components/lr-confirm-bar.md +7 -3
- package/llms/components/lr-context-meter.md +12 -11
- package/llms/components/lr-conversation-item.md +7 -4
- package/llms/components/lr-details.md +11 -2
- package/llms/components/lr-dialog.md +15 -10
- package/llms/components/lr-dock-panel.md +7 -10
- package/llms/components/lr-document-preview.md +6 -1
- package/llms/components/lr-document-viewer.md +3 -2
- package/llms/components/lr-doughnut-chart.md +4 -3
- package/llms/components/lr-drawer.md +3 -3
- package/llms/components/lr-entity-card.md +3 -3
- package/llms/components/lr-entity-chip.md +1 -1
- package/llms/components/lr-entity-dossier.md +4 -1
- package/llms/components/lr-file-input.md +2 -2
- package/llms/components/lr-flag.md +20 -5
- package/llms/components/lr-heatmap.md +28 -0
- package/llms/components/lr-histogram.md +3 -1
- package/llms/components/lr-icon.md +1 -1
- package/llms/components/lr-json-schema-viewer.md +2 -1
- package/llms/components/lr-knowledge-graph-explorer.md +8 -3
- package/llms/components/lr-known-date.md +4 -2
- package/llms/components/lr-line-chart.md +4 -3
- package/llms/components/lr-lite-chart.md +16 -6
- package/llms/components/lr-map.md +72 -8
- package/llms/components/lr-markdown-core.md +3 -2
- package/llms/components/lr-media-card.md +28 -12
- package/llms/components/lr-message-parts.md +2 -1
- package/llms/components/lr-model-select.md +9 -10
- package/llms/components/lr-model-settings-panel.md +9 -9
- package/llms/components/lr-neighbor-list.md +1 -1
- package/llms/components/lr-notebook-viewer.md +6 -3
- package/llms/components/lr-option.md +5 -2
- package/llms/components/lr-pdf-viewer.md +62 -2
- package/llms/components/lr-pie-chart.md +4 -3
- package/llms/components/lr-polar-area-chart.md +4 -3
- package/llms/components/lr-popover.md +5 -0
- package/llms/components/lr-progress-ring.md +8 -1
- package/llms/components/lr-prompt-studio.md +1 -1
- package/llms/components/lr-provenance-panel.md +4 -2
- package/llms/components/lr-qr-code.md +1 -1
- package/llms/components/lr-radar-chart.md +4 -3
- package/llms/components/lr-rag-eval-dashboard.md +2 -2
- package/llms/components/lr-random-content.md +13 -0
- package/llms/components/lr-reorder-item.md +6 -1
- package/llms/components/lr-reorder-list.md +6 -1
- package/llms/components/lr-responsive-panel.md +11 -7
- package/llms/components/lr-scatter-chart.md +4 -3
- package/llms/components/lr-sequence-strip.md +16 -2
- package/llms/components/lr-slider.md +12 -5
- package/llms/components/lr-sparkline.md +1 -1
- package/llms/components/lr-suggestion-chips.md +7 -2
- package/llms/components/lr-swatch-picker.md +5 -5
- package/llms/components/lr-switch.md +5 -2
- package/llms/components/lr-table.md +30 -4
- package/llms/components/lr-terminal.md +3 -1
- package/llms/components/lr-thread-list.md +8 -8
- package/llms/components/lr-time-input.md +6 -1
- package/llms/components/lr-timeline-item.md +24 -0
- package/llms/components/lr-timeline.md +25 -1
- package/llms/components/lr-token-input.md +7 -2
- package/llms/components/lr-tool-approval-dialog.md +7 -8
- package/llms/components/lr-tool-call-chip.md +5 -1
- package/llms/components/lr-tool-param-form.md +14 -12
- package/llms/components/lr-tool-result-dialog.md +11 -9
- package/llms/components/lr-tool-result-view.md +7 -6
- package/llms/components/lr-tool-select-dialog.md +18 -16
- package/llms/components/lr-trace-tree.md +3 -1
- package/llms/components/lr-usage-badge.md +4 -1
- package/llms/components/lr-video-playlist.md +1 -1
- package/llms/components/lr-virtual-list.md +22 -14
- package/llms/components/lr-voice-picker.md +8 -5
- package/llms/components/lr-widget-renderer.md +3 -3
- package/llms/components/lr-widget.md +1 -1
- package/llms/components/lr-word-cloud.md +6 -2
- package/llms/peers.md +12 -2
- package/llms/shared.md +70 -2
- package/llms-full.txt +1143 -285
- package/package.json +17 -5
- package/vscode-css-data.json +37 -2
- package/vscode-html-data.json +401 -44
- package/web-types.json +299 -55
|
@@ -29,15 +29,6 @@ import{css}from"lit";const styles=css`
|
|
|
29
29
|
color: var(--text-color, var(--_lr-data-grid-text-color));
|
|
30
30
|
}
|
|
31
31
|
|
|
32
|
-
/* Wires the size density ladder into the values above. The "m" tier is the :host block's own
|
|
33
|
-
default, so it is intentionally absent here -- these rules only override the non-default
|
|
34
|
-
tiers, leaving "m" byte-for-byte what it always rendered.
|
|
35
|
-
|
|
36
|
-
Deliberately NOT sourced from the shared sizes stylesheet's --lr-form-control-height /
|
|
37
|
-
--lr-form-control-padding-* -- that ladder is tuned for single-line form controls and its "m"
|
|
38
|
-
tier (2.5rem) sits BELOW this component's own "m" row-height (3.5rem), so borrowing it verbatim
|
|
39
|
-
would make "l" (3rem) render shorter than the default row, inverting the ladder. Each tier
|
|
40
|
-
below instead scales this component's own row-height/cell-padding baseline directly. */
|
|
41
32
|
:host([size="xs"]) {
|
|
42
33
|
--_lr-data-grid-cell-padding: var(--lr-space-xs);
|
|
43
34
|
--_lr-data-grid-header-row-height: var(--lr-size-2rem);
|
|
@@ -114,8 +105,6 @@ import{css}from"lit";const styles=css`
|
|
|
114
105
|
color: var(--lr-color-text-quiet);
|
|
115
106
|
}
|
|
116
107
|
|
|
117
|
-
/* Search decorations belong to WebKit's native chrome. Reset them unconditionally in both
|
|
118
|
-
entry points so the component owns the control palette on Safari as well as Chromium. */
|
|
119
108
|
[part="search"]::-webkit-search-cancel-button,
|
|
120
109
|
[part="search"]::-webkit-search-decoration,
|
|
121
110
|
[part="filter-panel"] input[type="search"]::-webkit-search-cancel-button,
|
|
@@ -310,9 +299,6 @@ import{css}from"lit";const styles=css`
|
|
|
310
299
|
);
|
|
311
300
|
}
|
|
312
301
|
|
|
313
|
-
/* MUST stay after the selected-row rule above: both are (0,2,0), so source order alone decides,
|
|
314
|
-
and the selected row is the one a user is most likely to hover next -- put this before and the
|
|
315
|
-
single most common hover in a selectable grid would be the one hover with no feedback. */
|
|
316
302
|
[part~="row"]:hover {
|
|
317
303
|
background: var(
|
|
318
304
|
--row-hover-background,
|
|
@@ -320,9 +306,6 @@ import{css}from"lit";const styles=css`
|
|
|
320
306
|
);
|
|
321
307
|
}
|
|
322
308
|
|
|
323
|
-
/* MUST stay after the selected-row rule above: both are (0,2,0), so source order alone decides,
|
|
324
|
-
and the selected row is the one a user presses to DEselect -- put this first and the single
|
|
325
|
-
most common press in a selectable grid would be the one press with no feedback. */
|
|
326
309
|
[part~="row"]:active {
|
|
327
310
|
background: color-mix(
|
|
328
311
|
in srgb,
|
|
@@ -595,16 +578,11 @@ import{css}from"lit";const styles=css`
|
|
|
595
578
|
line-height: var(--lr-line-height-none);
|
|
596
579
|
}
|
|
597
580
|
|
|
598
|
-
/* The two chevrons of an edge button overlap slightly so they read as one doubled glyph rather
|
|
599
|
-
than two separate arrows -- matches lr-pagination's identical first/last treatment. */
|
|
600
581
|
[part="first-icon"] svg + svg,
|
|
601
582
|
[part="last-icon"] svg + svg {
|
|
602
583
|
margin-inline-start: var(--lr-size-neg-4px);
|
|
603
584
|
}
|
|
604
585
|
|
|
605
|
-
/* chevronIcon() points right by default, so 'next'/'last' render unrotated and
|
|
606
|
-
'first'/'previous' rotate to point left -- then both pairs flip under RTL, exactly like
|
|
607
|
-
lr-pagination's first/previous/next/last icons. */
|
|
608
586
|
[part="first-icon"],
|
|
609
587
|
[part="previous-icon"] {
|
|
610
588
|
transform: rotate(180deg);
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
var __decorate=function(decorators,target,key,desc){var c=arguments.length,r=c<3?target:desc===null?desc=Object.getOwnPropertyDescriptor(target,key):desc,d;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")r=Reflect.decorate(decorators,target,key,desc);else for(var i=decorators.length-1;i>=0;i--)(d=decorators[i])&&(r=(c<3?d(r):c>3?d(target,key,r):d(target,key))||r);return c>3&&r&&Object.defineProperty(target,key,r),r};import{html,nothing}from"lit";import{property}from"lit/decorators.js";import{LyraElement}from"../../../internal/lyra-element.js";import{getDateTimeFormat,getNumberFormat}from"../../../internal/intl-cache.js";import{acquireAnnouncementSink}from"../../../internal/announcer.js";import{styles}from"./document-library.styles.js";import{LYRA_DEFAULT_documentLibraryClearSelection,LYRA_DEFAULT_documentLibraryEmptyHeading,LYRA_DEFAULT_documentLibraryFilterByTag,LYRA_DEFAULT_documentLibraryFreshnessAging,LYRA_DEFAULT_documentLibraryFreshnessColumn,LYRA_DEFAULT_documentLibraryFreshnessFresh,LYRA_DEFAULT_documentLibraryFreshnessStale,LYRA_DEFAULT_documentLibraryLabel,LYRA_DEFAULT_documentLibraryNameColumn,LYRA_DEFAULT_documentLibraryNoMatchesHeading,LYRA_DEFAULT_documentLibraryOwnerColumn,LYRA_DEFAULT_documentLibrarySearchPlaceholder,LYRA_DEFAULT_documentLibrarySelectAll,LYRA_DEFAULT_documentLibrarySelectColumn,LYRA_DEFAULT_documentLibrarySelectDocument,LYRA_DEFAULT_documentLibrarySelectedCount,LYRA_DEFAULT_documentLibraryTagsColumn,LYRA_DEFAULT_documentLibraryTypeColumn,LYRA_DEFAULT_documentLibraryUpdatedColumn,LYRA_DEFAULT_documentLibraryVersionColumn}from"../../../internal/default-strings.generated.js";const FRESHNESS_RANK={fresh:0,aging:1,stale:2},MAX_LIBRARY_COLLECTION_ENTRIES=1e4,FRESHNESS_TONE={fresh:"success",aging:"warning",stale:"danger"};class LyraDocumentLibrary extends LyraElement{constructor(){super(...arguments),this._documents=Object.freeze([]),this._selectedDocumentIds=Object.freeze([]),this._tagFilter=Object.freeze([]),this.sortKey="name",this.sortDir="asc",this.searchTerm="",this.loading=!1,this.isMounting=!0,this.defaultFilter=(document,query)=>{const locale=this.effectiveLocale;return[document.name,document.owner??"",...document.tags??[]].some(value=>value.toLocaleLowerCase(locale).includes(query))},this.compareDocuments=(a,b)=>{const locale=this.effectiveLocale,dir=this.sortDir==="asc"?1:-1;let result=0;switch(this.sortKey){case"name":result=a.name.localeCompare(b.name,locale,{numeric:!0});break;case"version":result=(a.version??"").localeCompare(b.version??"",locale,{numeric:!0});break;case"owner":result=(a.owner??"").localeCompare(b.owner??"",locale,{numeric:!0});break;case"freshness":result=(a.freshness?FRESHNESS_RANK[a.freshness]:3)-(b.freshness?FRESHNESS_RANK[b.freshness]:3);break;case"updatedAt":result=(this.normalizeDate(a.updatedAt)?.getTime()??0)-(this.normalizeDate(b.updatedAt)?.getTime()??0);break}return result*dir},this.onSearchInput=event=>{event.stopPropagation(),this.searchTerm=event.detail.value,this.emitFilterChange()},this.onTagFilterChange=event=>{event.stopPropagation();const combobox=event.target;this.tagFilter=Array.isArray(combobox.value)?combobox.value:[],this.emitFilterChange()},this.onTableSortRequest=event=>{if(event.stopPropagation(),!this.isSortKey(event.detail.sortKey)){event.preventDefault();return}const detail=Object.freeze({phase:"request",sortKey:event.detail.sortKey,sortDir:event.detail.sortDir});this.emit("lr-sort-request",detail,{cancelable:!0}).defaultPrevented&&event.preventDefault()},this.onTableSortCommit=event=>{event.stopPropagation(),this.isSortKey(event.detail.sortKey)&&(this.sortKey=event.detail.sortKey,this.sortDir=event.detail.sortDir,this.emit("lr-sort",Object.freeze({phase:"commit",sortKey:this.sortKey,sortDir:this.sortDir})))},this.stopOwnedEvent=event=>{event.stopPropagation()},this.onTableSelectionChange=event=>{event.stopPropagation();const table=event.currentTarget;table.selectedRowKeys=new Set(this.selectedDocumentIds)},this.clearSelection=()=>{this.setSelected([])}}static{this.defaultStrings={...super.defaultStrings,documentLibraryClearSelection:LYRA_DEFAULT_documentLibraryClearSelection,documentLibraryEmptyHeading:LYRA_DEFAULT_documentLibraryEmptyHeading,documentLibraryFilterByTag:LYRA_DEFAULT_documentLibraryFilterByTag,documentLibraryFreshnessAging:LYRA_DEFAULT_documentLibraryFreshnessAging,documentLibraryFreshnessColumn:LYRA_DEFAULT_documentLibraryFreshnessColumn,documentLibraryFreshnessFresh:LYRA_DEFAULT_documentLibraryFreshnessFresh,documentLibraryFreshnessStale:LYRA_DEFAULT_documentLibraryFreshnessStale,documentLibraryLabel:LYRA_DEFAULT_documentLibraryLabel,documentLibraryNameColumn:LYRA_DEFAULT_documentLibraryNameColumn,documentLibraryNoMatchesHeading:LYRA_DEFAULT_documentLibraryNoMatchesHeading,documentLibraryOwnerColumn:LYRA_DEFAULT_documentLibraryOwnerColumn,documentLibrarySearchPlaceholder:LYRA_DEFAULT_documentLibrarySearchPlaceholder,documentLibrarySelectAll:LYRA_DEFAULT_documentLibrarySelectAll,documentLibrarySelectColumn:LYRA_DEFAULT_documentLibrarySelectColumn,documentLibrarySelectDocument:LYRA_DEFAULT_documentLibrarySelectDocument,documentLibrarySelectedCount:LYRA_DEFAULT_documentLibrarySelectedCount,documentLibraryTagsColumn:LYRA_DEFAULT_documentLibraryTagsColumn,documentLibraryTypeColumn:LYRA_DEFAULT_documentLibraryTypeColumn,documentLibraryUpdatedColumn:LYRA_DEFAULT_documentLibraryUpdatedColumn,documentLibraryVersionColumn:LYRA_DEFAULT_documentLibraryVersionColumn}}static{this.styles=[LyraElement.styles,styles]}static{this.immutableEventDetails=Object.freeze(["lr-filter-change","lr-selection-change"])}get documents(){return this.snapshotDocuments(this._documents)}set documents(value){const previous=this._documents;this._documents=this.snapshotDocuments(Array.isArray(value)?value:[]),this.requestUpdate("documents",previous)}get selectedDocumentIds(){return this._selectedDocumentIds}set selectedDocumentIds(value){const previous=this._selectedDocumentIds;this._selectedDocumentIds=this.snapshotIds(Array.isArray(value)?value:[]),this.requestUpdate("selectedDocumentIds",previous)}get tagFilter(){return this._tagFilter}set tagFilter(value){const previous=this._tagFilter;this._tagFilter=this.snapshotIds(Array.isArray(value)?value:[]),this.requestUpdate("tagFilter",previous)}connectedCallback(){super.connectedCallback(),this.syncAnnouncementSink()}disconnectedCallback(){super.disconnectedCallback(),this.releaseAnnouncementSink()}releaseAnnouncementSink(){this.announcementSink?.release(),this.announcementSink=void 0}syncAnnouncementSink(){if(!this.isConnected){this.releaseAnnouncementSink();return}this.announcementSink?.element.ownerDocument!==this.ownerDocument&&(this.releaseAnnouncementSink(),this.announcementSink=acquireAnnouncementSink("polite",{document:this.ownerDocument,source:this}))}snapshotDocuments(documents){const snapshot=[],seen=new Set;for(const document of documents.slice(0,MAX_LIBRARY_COLLECTION_ENTRIES))try{const id=document?.id;if(typeof id!="string"||id.trim().length===0||seen.has(id))continue;const updatedAt=document.updatedAt instanceof Date?new Date(document.updatedAt.getTime()):document.updatedAt,tags=document.tags===void 0?void 0:Object.freeze(document.tags.slice(0,MAX_LIBRARY_COLLECTION_ENTRIES)),retained=Object.freeze({...document,id,updatedAt,tags});seen.add(id),snapshot.push(retained)}catch{}return Object.freeze(snapshot)}snapshotIds(ids){const snapshot=[],seen=new Set;try{for(const id of ids)if(!seen.has(id)&&(seen.add(id),snapshot.push(id),snapshot.length>=MAX_LIBRARY_COLLECTION_ENTRIES))break}catch{}return Object.freeze(snapshot)}willUpdate(changed){if(super.willUpdate(changed),(changed.has("documents")||changed.has("selectedDocumentIds"))&&this.selectedDocumentIds.length>0){const existing=new Set(this._documents.map(doc=>doc.id)),normalized=this.snapshotIds(this.selectedDocumentIds.filter(id=>existing.has(id)));(normalized.length!==this.selectedDocumentIds.length||normalized.some((id,index)=>id!==this.selectedDocumentIds[index]))&&(this.selectedDocumentIds=normalized)}if((changed.has("documents")||changed.has("tagFilter"))&&this.tagFilter.length>0){const availableTags=new Set(this._documents.flatMap(document=>document.tags??[])),normalized=this.snapshotIds(this.tagFilter.filter(tag=>availableTags.has(tag)));(normalized.length!==this.tagFilter.length||normalized.some((tag,index)=>tag!==this.tagFilter[index]))&&(this.tagFilter=normalized)}}updated(changed){super.updated(changed),!this.isMounting&&changed.has("selectedDocumentIds")&&this.announcementSink?.announce(this.selectionCountText()),this.isMounting=!1}selectionCountText(){return this.localize("documentLibrarySelectedCount",void 0,{count:getNumberFormat(this.effectiveLocale).format(this.selectedDocumentIds.length)})}normalizeDate(value){if(value===void 0)return;const date=value instanceof Date?value:new Date(value);return Number.isNaN(date.getTime())?void 0:date}matchesTagFilter(document){if(this.tagFilter.length===0)return!0;const tags=new Set(document.tags??[]);return this.tagFilter.every(tag=>tags.has(tag))}get visibleDocuments(){const query=this.searchTerm.trim().toLocaleLowerCase(this.effectiveLocale),matchFn=this.filter??this.defaultFilter;return[...this._documents.filter(document=>(query===""||matchFn(document,query))&&this.matchesTagFilter(document))].sort(this.compareDocuments)}get allTags(){const tags=new Set;for(const document of this._documents)for(const tag of document.tags??[])tags.add(tag);return[...tags].sort((a,b)=>a.localeCompare(b,this.effectiveLocale))}emitFilterChange(){const tags=Object.freeze([...this.tagFilter]);this.emit("lr-filter-change",Object.freeze({searchTerm:this.searchTerm,tags,matchCount:this.visibleDocuments.length}))}isSortKey(value){return value==="name"||value==="version"||value==="owner"||value==="freshness"||value==="updatedAt"}openDocument(document){this.emit("lr-open",Object.freeze({documentId:document.id}))}setSelected(ids){this.selectedDocumentIds=[...ids];const eventIds=Object.freeze([...this.selectedDocumentIds]);this.emit("lr-selection-change",Object.freeze({documentIds:eventIds}))}toggleSelection(document,checked){const next=new Set(this.selectedDocumentIds);checked?next.add(document.id):next.delete(document.id),this.setSelected(next)}toggleSelectAll(checked,visible){const next=new Set(this.selectedDocumentIds);for(const document of visible)checked?next.add(document.id):next.delete(document.id);this.setSelected(next)}freshnessLabel(freshness){switch(freshness){case"fresh":return this.localize("documentLibraryFreshnessFresh");case"aging":return this.localize("documentLibraryFreshnessAging");case"stale":return this.localize("documentLibraryFreshnessStale")}}renderSelectAllCheckbox(visible){const allSelected=visible.length>0&&visible.every(document=>this.selectedDocumentIds.includes(document.id)),someSelected=!allSelected&&visible.some(document=>this.selectedDocumentIds.includes(document.id));return html`<lr-checkbox
|
|
1
|
+
var __decorate=function(decorators,target,key,desc){var c=arguments.length,r=c<3?target:desc===null?desc=Object.getOwnPropertyDescriptor(target,key):desc,d;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")r=Reflect.decorate(decorators,target,key,desc);else for(var i=decorators.length-1;i>=0;i--)(d=decorators[i])&&(r=(c<3?d(r):c>3?d(target,key,r):d(target,key))||r);return c>3&&r&&Object.defineProperty(target,key,r),r};import{html,nothing}from"lit";import{property}from"lit/decorators.js";import{LyraElement}from"../../../internal/lyra-element.js";import{hostAriaLabel}from"../../../internal/a11y.js";import{getDateTimeFormat,getNumberFormat}from"../../../internal/intl-cache.js";import{acquireAnnouncementSink}from"../../../internal/announcer.js";import{styles}from"./document-library.styles.js";import{LYRA_DEFAULT_documentLibraryClearSelection,LYRA_DEFAULT_documentLibraryEmptyHeading,LYRA_DEFAULT_documentLibraryFilterByTag,LYRA_DEFAULT_documentLibraryFreshnessAging,LYRA_DEFAULT_documentLibraryFreshnessColumn,LYRA_DEFAULT_documentLibraryFreshnessFresh,LYRA_DEFAULT_documentLibraryFreshnessStale,LYRA_DEFAULT_documentLibraryLabel,LYRA_DEFAULT_documentLibraryNameColumn,LYRA_DEFAULT_documentLibraryNoMatchesHeading,LYRA_DEFAULT_documentLibraryOwnerColumn,LYRA_DEFAULT_documentLibrarySearchPlaceholder,LYRA_DEFAULT_documentLibrarySelectAll,LYRA_DEFAULT_documentLibrarySelectColumn,LYRA_DEFAULT_documentLibrarySelectDocument,LYRA_DEFAULT_documentLibrarySelectedCount,LYRA_DEFAULT_documentLibraryTagsColumn,LYRA_DEFAULT_documentLibraryTypeColumn,LYRA_DEFAULT_documentLibraryUpdatedColumn,LYRA_DEFAULT_documentLibraryVersionColumn}from"../../../internal/default-strings.generated.js";const FRESHNESS_RANK={fresh:0,aging:1,stale:2},MAX_LIBRARY_COLLECTION_ENTRIES=1e4,FRESHNESS_TONE={fresh:"success",aging:"warning",stale:"danger"};class LyraDocumentLibrary extends LyraElement{constructor(){super(...arguments),this._documents=Object.freeze([]),this._selectedDocumentIds=Object.freeze([]),this._tagFilter=Object.freeze([]),this.sortKey="name",this.sortDir="asc",this.searchTerm="",this.loading=!1,this.isMounting=!0,this.defaultFilter=(document,query)=>{const locale=this.effectiveLocale;return[document.name,document.owner??"",...document.tags??[]].some(value=>value.toLocaleLowerCase(locale).includes(query))},this.compareDocuments=(a,b)=>{const locale=this.effectiveLocale,dir=this.sortDir==="asc"?1:-1;let result=0;switch(this.sortKey){case"name":result=a.name.localeCompare(b.name,locale,{numeric:!0});break;case"version":result=(a.version??"").localeCompare(b.version??"",locale,{numeric:!0});break;case"owner":result=(a.owner??"").localeCompare(b.owner??"",locale,{numeric:!0});break;case"freshness":result=(a.freshness?FRESHNESS_RANK[a.freshness]:3)-(b.freshness?FRESHNESS_RANK[b.freshness]:3);break;case"updatedAt":result=(this.normalizeDate(a.updatedAt)?.getTime()??0)-(this.normalizeDate(b.updatedAt)?.getTime()??0);break}return result*dir},this.onSearchInput=event=>{event.stopPropagation(),this.searchTerm=event.detail.value,this.emitFilterChange()},this.onTagFilterChange=event=>{event.stopPropagation();const combobox=event.target;this.tagFilter=Array.isArray(combobox.value)?combobox.value:[],this.emitFilterChange()},this.onTableSortRequest=event=>{if(event.stopPropagation(),!this.isSortKey(event.detail.sortKey)){event.preventDefault();return}const detail=Object.freeze({phase:"request",sortKey:event.detail.sortKey,sortDir:event.detail.sortDir});this.emit("lr-sort-request",detail,{cancelable:!0}).defaultPrevented&&event.preventDefault()},this.onTableSortCommit=event=>{event.stopPropagation(),this.isSortKey(event.detail.sortKey)&&(this.sortKey=event.detail.sortKey,this.sortDir=event.detail.sortDir,this.emit("lr-sort",Object.freeze({phase:"commit",sortKey:this.sortKey,sortDir:this.sortDir})))},this.stopOwnedEvent=event=>{event.stopPropagation()},this.onTableSelectionChange=event=>{event.stopPropagation();const table=event.currentTarget;table.selectedRowKeys=new Set(this.selectedDocumentIds)},this.clearSelection=()=>{this.setSelected([])}}static{this.defaultStrings={...super.defaultStrings,documentLibraryClearSelection:LYRA_DEFAULT_documentLibraryClearSelection,documentLibraryEmptyHeading:LYRA_DEFAULT_documentLibraryEmptyHeading,documentLibraryFilterByTag:LYRA_DEFAULT_documentLibraryFilterByTag,documentLibraryFreshnessAging:LYRA_DEFAULT_documentLibraryFreshnessAging,documentLibraryFreshnessColumn:LYRA_DEFAULT_documentLibraryFreshnessColumn,documentLibraryFreshnessFresh:LYRA_DEFAULT_documentLibraryFreshnessFresh,documentLibraryFreshnessStale:LYRA_DEFAULT_documentLibraryFreshnessStale,documentLibraryLabel:LYRA_DEFAULT_documentLibraryLabel,documentLibraryNameColumn:LYRA_DEFAULT_documentLibraryNameColumn,documentLibraryNoMatchesHeading:LYRA_DEFAULT_documentLibraryNoMatchesHeading,documentLibraryOwnerColumn:LYRA_DEFAULT_documentLibraryOwnerColumn,documentLibrarySearchPlaceholder:LYRA_DEFAULT_documentLibrarySearchPlaceholder,documentLibrarySelectAll:LYRA_DEFAULT_documentLibrarySelectAll,documentLibrarySelectColumn:LYRA_DEFAULT_documentLibrarySelectColumn,documentLibrarySelectDocument:LYRA_DEFAULT_documentLibrarySelectDocument,documentLibrarySelectedCount:LYRA_DEFAULT_documentLibrarySelectedCount,documentLibraryTagsColumn:LYRA_DEFAULT_documentLibraryTagsColumn,documentLibraryTypeColumn:LYRA_DEFAULT_documentLibraryTypeColumn,documentLibraryUpdatedColumn:LYRA_DEFAULT_documentLibraryUpdatedColumn,documentLibraryVersionColumn:LYRA_DEFAULT_documentLibraryVersionColumn}}static{this.styles=[LyraElement.styles,styles]}static{this.immutableEventDetails=Object.freeze(["lr-filter-change","lr-selection-change"])}get documents(){return this.snapshotDocuments(this._documents)}set documents(value){const previous=this._documents;this._documents=this.snapshotDocuments(Array.isArray(value)?value:[]),this.requestUpdate("documents",previous)}get selectedDocumentIds(){return this._selectedDocumentIds}set selectedDocumentIds(value){const previous=this._selectedDocumentIds;this._selectedDocumentIds=this.snapshotIds(Array.isArray(value)?value:[]),this.requestUpdate("selectedDocumentIds",previous)}get tagFilter(){return this._tagFilter}set tagFilter(value){const previous=this._tagFilter;this._tagFilter=this.snapshotIds(Array.isArray(value)?value:[]),this.requestUpdate("tagFilter",previous)}connectedCallback(){super.connectedCallback(),this.syncAnnouncementSink()}disconnectedCallback(){super.disconnectedCallback(),this.releaseAnnouncementSink()}releaseAnnouncementSink(){this.announcementSink?.release(),this.announcementSink=void 0}syncAnnouncementSink(){if(!this.isConnected){this.releaseAnnouncementSink();return}this.announcementSink?.element.ownerDocument!==this.ownerDocument&&(this.releaseAnnouncementSink(),this.announcementSink=acquireAnnouncementSink("polite",{document:this.ownerDocument,source:this}))}snapshotDocuments(documents){const snapshot=[],seen=new Set;for(const document of documents.slice(0,MAX_LIBRARY_COLLECTION_ENTRIES))try{const id=document?.id;if(typeof id!="string"||id.trim().length===0||seen.has(id))continue;const updatedAt=document.updatedAt instanceof Date?new Date(document.updatedAt.getTime()):document.updatedAt,tags=document.tags===void 0?void 0:Object.freeze(document.tags.slice(0,MAX_LIBRARY_COLLECTION_ENTRIES)),retained=Object.freeze({...document,id,updatedAt,tags});seen.add(id),snapshot.push(retained)}catch{}return Object.freeze(snapshot)}snapshotIds(ids){const snapshot=[],seen=new Set;try{for(const id of ids)if(!seen.has(id)&&(seen.add(id),snapshot.push(id),snapshot.length>=MAX_LIBRARY_COLLECTION_ENTRIES))break}catch{}return Object.freeze(snapshot)}willUpdate(changed){if(super.willUpdate(changed),(changed.has("documents")||changed.has("selectedDocumentIds"))&&this.selectedDocumentIds.length>0){const existing=new Set(this._documents.map(doc=>doc.id)),normalized=this.snapshotIds(this.selectedDocumentIds.filter(id=>existing.has(id)));(normalized.length!==this.selectedDocumentIds.length||normalized.some((id,index)=>id!==this.selectedDocumentIds[index]))&&(this.selectedDocumentIds=normalized)}if((changed.has("documents")||changed.has("tagFilter"))&&this.tagFilter.length>0){const availableTags=new Set(this._documents.flatMap(document=>document.tags??[])),normalized=this.snapshotIds(this.tagFilter.filter(tag=>availableTags.has(tag)));(normalized.length!==this.tagFilter.length||normalized.some((tag,index)=>tag!==this.tagFilter[index]))&&(this.tagFilter=normalized)}}updated(changed){super.updated(changed),!this.isMounting&&changed.has("selectedDocumentIds")&&this.announcementSink?.announce(this.selectionCountText()),this.isMounting=!1}selectionCountText(){return this.localize("documentLibrarySelectedCount",void 0,{count:getNumberFormat(this.effectiveLocale).format(this.selectedDocumentIds.length)})}normalizeDate(value){if(value===void 0)return;const date=value instanceof Date?value:new Date(value);return Number.isNaN(date.getTime())?void 0:date}matchesTagFilter(document){if(this.tagFilter.length===0)return!0;const tags=new Set(document.tags??[]);return this.tagFilter.every(tag=>tags.has(tag))}get visibleDocuments(){const query=this.searchTerm.trim().toLocaleLowerCase(this.effectiveLocale),matchFn=this.filter??this.defaultFilter;return[...this._documents.filter(document=>(query===""||matchFn(document,query))&&this.matchesTagFilter(document))].sort(this.compareDocuments)}get allTags(){const tags=new Set;for(const document of this._documents)for(const tag of document.tags??[])tags.add(tag);return[...tags].sort((a,b)=>a.localeCompare(b,this.effectiveLocale))}emitFilterChange(){const tags=Object.freeze([...this.tagFilter]);this.emit("lr-filter-change",Object.freeze({searchTerm:this.searchTerm,tags,matchCount:this.visibleDocuments.length}))}isSortKey(value){return value==="name"||value==="version"||value==="owner"||value==="freshness"||value==="updatedAt"}openDocument(document){this.emit("lr-open",Object.freeze({documentId:document.id}))}setSelected(ids){this.selectedDocumentIds=[...ids];const eventIds=Object.freeze([...this.selectedDocumentIds]);this.emit("lr-selection-change",Object.freeze({documentIds:eventIds}))}toggleSelection(document,checked){const next=new Set(this.selectedDocumentIds);checked?next.add(document.id):next.delete(document.id),this.setSelected(next)}toggleSelectAll(checked,visible){const next=new Set(this.selectedDocumentIds);for(const document of visible)checked?next.add(document.id):next.delete(document.id);this.setSelected(next)}freshnessLabel(freshness){switch(freshness){case"fresh":return this.localize("documentLibraryFreshnessFresh");case"aging":return this.localize("documentLibraryFreshnessAging");case"stale":return this.localize("documentLibraryFreshnessStale")}}renderSelectAllCheckbox(visible){const allSelected=visible.length>0&&visible.every(document=>this.selectedDocumentIds.includes(document.id)),someSelected=!allSelected&&visible.some(document=>this.selectedDocumentIds.includes(document.id));return html`<lr-checkbox
|
|
2
2
|
.checked=${allSelected}
|
|
3
3
|
.indeterminate=${someSelected}
|
|
4
4
|
aria-label=${this.localize("documentLibrarySelectAll")}
|
|
@@ -27,7 +27,7 @@ var __decorate=function(decorators,target,key,desc){var c=arguments.length,r=c<3
|
|
|
27
27
|
mime-type=${document.mimeType??""}
|
|
28
28
|
name=${document.name}
|
|
29
29
|
decorative
|
|
30
|
-
></lr-file-icon>`},{key:"name",label:this.localize("documentLibraryNameColumn"),sortable:!0,cell:document=>this.renderNameCell(document)},{key:"version",label:this.localize("documentLibraryVersionColumn"),sortable:!0,priority:"medium",cell:document=>document.version??""},{key:"owner",label:this.localize("documentLibraryOwnerColumn"),sortable:!0,priority:"medium",cell:document=>document.owner??""},{key:"tags",label:this.localize("documentLibraryTagsColumn"),priority:"low",cell:document=>this.renderTagsCell(document)},{key:"freshness",label:this.localize("documentLibraryFreshnessColumn"),sortable:!0,priority:"low",cell:document=>this.renderFreshnessCell(document)},{key:"updatedAt",label:this.localize("documentLibraryUpdatedColumn"),sortable:!0,priority:"low",cell:document=>this.renderUpdatedCell(document)}]}render(){const label=this
|
|
30
|
+
></lr-file-icon>`},{key:"name",label:this.localize("documentLibraryNameColumn"),sortable:!0,cell:document=>this.renderNameCell(document)},{key:"version",label:this.localize("documentLibraryVersionColumn"),sortable:!0,priority:"medium",cell:document=>document.version??""},{key:"owner",label:this.localize("documentLibraryOwnerColumn"),sortable:!0,priority:"medium",cell:document=>document.owner??""},{key:"tags",label:this.localize("documentLibraryTagsColumn"),priority:"low",cell:document=>this.renderTagsCell(document)},{key:"freshness",label:this.localize("documentLibraryFreshnessColumn"),sortable:!0,priority:"low",cell:document=>this.renderFreshnessCell(document)},{key:"updatedAt",label:this.localize("documentLibraryUpdatedColumn"),sortable:!0,priority:"low",cell:document=>this.renderUpdatedCell(document)}]}render(){const label=hostAriaLabel(this)?.trim()??(this.label==null?this.localize("documentLibraryLabel"):this.label),visible=this.visibleDocuments,tags=this.allTags,emptyHeading=this._documents.length===0?this.localize("documentLibraryEmptyHeading"):this.localize("documentLibraryNoMatchesHeading");return html`
|
|
31
31
|
<div part="base" role="region" aria-label=${label}>
|
|
32
32
|
<div part="toolbar">
|
|
33
33
|
<lr-input
|
|
@@ -49,10 +49,6 @@ import{css}from"lit";const styles=css`
|
|
|
49
49
|
[part='clear-selection']:hover {
|
|
50
50
|
text-decoration: underline;
|
|
51
51
|
}
|
|
52
|
-
/* Pressed deepens the link colour on top of the hovered underline: an underline alone cannot get
|
|
53
|
-
"more underlined", so the press would otherwise be indistinguishable from the hover it starts
|
|
54
|
-
from. The mix follows --lr-color-mix-partner (the text colour), so it darkens a light theme and
|
|
55
|
-
lightens a dark one instead of always doing one of the two. */
|
|
56
52
|
[part='clear-selection']:active {
|
|
57
53
|
color: color-mix(in oklab, var(--lr-color-brand), var(--lr-color-mix-partner) var(--lr-color-mix-active));
|
|
58
54
|
text-decoration: underline;
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
var __decorate=function(decorators,target,key,desc){var c=arguments.length,r=c<3?target:desc===null?desc=Object.getOwnPropertyDescriptor(target,key):desc,d;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")r=Reflect.decorate(decorators,target,key,desc);else for(var i=decorators.length-1;i>=0;i--)(d=decorators[i])&&(r=(c<3?d(r):c>3?d(target,key,r):d(target,key))||r);return c>3&&r&&Object.defineProperty(target,key,r),r};import{html,nothing}from"lit";import{property,state}from"lit/decorators.js";import{LyraElement}from"../../../internal/lyra-element.js";import{srOnly}from"../../../internal/a11y.js";import{styles}from"./env-list.styles.js";import{trueDefaultBooleanConverter}from"../../../internal/converters.js";import{acquireAnnouncementSink}from"../../../internal/announcer.js";import{writeClipboardText}from"../../../internal/clipboard.js";import{LYRA_DEFAULT_copied,LYRA_DEFAULT_copy,LYRA_DEFAULT_copyFailed,LYRA_DEFAULT_envListCopy,LYRA_DEFAULT_envListHide,LYRA_DEFAULT_envListLabel,LYRA_DEFAULT_envListReveal,LYRA_DEFAULT_envListValueHidden,LYRA_DEFAULT_noData}from"../../../internal/default-strings.generated.js";const MASK="\u2022".repeat(8),MAX_ENV_ENTRIES=1e4;class LyraEnvList extends LyraElement{constructor(){super(...arguments),this._entries=[],this.revealable=!0,this.copyable=!0,this.revealed=new Map}static{this.defaultStrings={...super.defaultStrings,copied:LYRA_DEFAULT_copied,copy:LYRA_DEFAULT_copy,copyFailed:LYRA_DEFAULT_copyFailed,envListCopy:LYRA_DEFAULT_envListCopy,envListHide:LYRA_DEFAULT_envListHide,envListLabel:LYRA_DEFAULT_envListLabel,envListReveal:LYRA_DEFAULT_envListReveal,envListValueHidden:LYRA_DEFAULT_envListValueHidden,noData:LYRA_DEFAULT_noData}}static{this.styles=[LyraElement.styles,styles,srOnly]}get entries(){return this._entries}set entries(value){const previous=this._entries,next=[],seen=new Set;if(Array.isArray(value))for(const candidate of value.slice(0,MAX_ENV_ENTRIES))try{if(!candidate||typeof candidate.name!="string"||typeof candidate.value!="string")continue;const name=candidate.name;if(name.trim().length===0||seen.has(name))continue;next.push(Object.freeze({name,value:candidate.value,...candidate.secret===void 0?{}:{secret:!!candidate.secret}})),seen.add(name)}catch{}this._entries=Object.freeze(next),this.requestUpdate("entries",previous)}connectedCallback(){super.connectedCallback(),this.syncAnnouncementSink()}disconnectedCallback(){super.disconnectedCallback(),this.releaseAnnouncementSink()}releaseAnnouncementSink(){this.announcementSink?.release(),this.announcementSink=void 0}syncAnnouncementSink(){if(!this.isConnected){this.releaseAnnouncementSink();return}this.announcementSink?.element.ownerDocument!==this.ownerDocument&&(this.releaseAnnouncementSink(),this.announcementSink=acquireAnnouncementSink("polite",{document:this.ownerDocument,source:this}))}willUpdate(changed){if(super.willUpdate(changed),changed.has("revealable")&&!this.revealable&&this.revealed.size>0&&(this.revealed=new Map),changed.has("entries")){const previous=changed.get("entries")??[],next=new Map;this.entries.forEach((entry,index)=>{if(previous[index]?.name!==entry.name)return;const wasRevealed=this.revealed.get(entry.name);wasRevealed!==void 0&&next.set(entry.name,wasRevealed)}),this.revealed=next}}toggleReveal(envName){const isRevealed=!(this.revealed.get(envName)??!1),next=new Map(this.revealed);next.set(envName,isRevealed),this.revealed=next,this.emit("lr-reveal-change",Object.freeze({envName,revealed:isRevealed}))}async copy(entry){const text=entry.value,owner=this.isConnected?this.ownerDocument.defaultView:null,outcome=await writeClipboardText(owner,text);if(!(!this.isConnected||this.ownerDocument.defaultView!==owner)){if(outcome.ok){this.announcementSink?.announce(this.localize("copied")),this.emit("lr-copy",outcome);return}this.announcementSink?.announce(this.localize("copyFailed")),this.emit("lr-error"),this.emit("lr-copy-error",outcome)}}get accessibleLabel(){return this
|
|
1
|
+
var __decorate=function(decorators,target,key,desc){var c=arguments.length,r=c<3?target:desc===null?desc=Object.getOwnPropertyDescriptor(target,key):desc,d;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")r=Reflect.decorate(decorators,target,key,desc);else for(var i=decorators.length-1;i>=0;i--)(d=decorators[i])&&(r=(c<3?d(r):c>3?d(target,key,r):d(target,key))||r);return c>3&&r&&Object.defineProperty(target,key,r),r};import{html,nothing}from"lit";import{property,state}from"lit/decorators.js";import{LyraElement}from"../../../internal/lyra-element.js";import{hostAriaLabel,srOnly}from"../../../internal/a11y.js";import{styles}from"./env-list.styles.js";import{trueDefaultBooleanConverter}from"../../../internal/converters.js";import{acquireAnnouncementSink}from"../../../internal/announcer.js";import{writeClipboardText}from"../../../internal/clipboard.js";import{LYRA_DEFAULT_copied,LYRA_DEFAULT_copy,LYRA_DEFAULT_copyFailed,LYRA_DEFAULT_envListCopy,LYRA_DEFAULT_envListHide,LYRA_DEFAULT_envListLabel,LYRA_DEFAULT_envListReveal,LYRA_DEFAULT_envListValueHidden,LYRA_DEFAULT_noData}from"../../../internal/default-strings.generated.js";const MASK="\u2022".repeat(8),MAX_ENV_ENTRIES=1e4;class LyraEnvList extends LyraElement{constructor(){super(...arguments),this._entries=[],this.revealable=!0,this.copyable=!0,this.revealed=new Map}static{this.defaultStrings={...super.defaultStrings,copied:LYRA_DEFAULT_copied,copy:LYRA_DEFAULT_copy,copyFailed:LYRA_DEFAULT_copyFailed,envListCopy:LYRA_DEFAULT_envListCopy,envListHide:LYRA_DEFAULT_envListHide,envListLabel:LYRA_DEFAULT_envListLabel,envListReveal:LYRA_DEFAULT_envListReveal,envListValueHidden:LYRA_DEFAULT_envListValueHidden,noData:LYRA_DEFAULT_noData}}static{this.styles=[LyraElement.styles,styles,srOnly]}get entries(){return this._entries}set entries(value){const previous=this._entries,next=[],seen=new Set;if(Array.isArray(value))for(const candidate of value.slice(0,MAX_ENV_ENTRIES))try{if(!candidate||typeof candidate.name!="string"||typeof candidate.value!="string")continue;const name=candidate.name;if(name.trim().length===0||seen.has(name))continue;next.push(Object.freeze({name,value:candidate.value,...candidate.secret===void 0?{}:{secret:!!candidate.secret}})),seen.add(name)}catch{}this._entries=Object.freeze(next),this.requestUpdate("entries",previous)}connectedCallback(){super.connectedCallback(),this.syncAnnouncementSink()}disconnectedCallback(){super.disconnectedCallback(),this.releaseAnnouncementSink()}releaseAnnouncementSink(){this.announcementSink?.release(),this.announcementSink=void 0}syncAnnouncementSink(){if(!this.isConnected){this.releaseAnnouncementSink();return}this.announcementSink?.element.ownerDocument!==this.ownerDocument&&(this.releaseAnnouncementSink(),this.announcementSink=acquireAnnouncementSink("polite",{document:this.ownerDocument,source:this}))}willUpdate(changed){if(super.willUpdate(changed),changed.has("revealable")&&!this.revealable&&this.revealed.size>0&&(this.revealed=new Map),changed.has("entries")){const previous=changed.get("entries")??[],next=new Map;this.entries.forEach((entry,index)=>{if(previous[index]?.name!==entry.name)return;const wasRevealed=this.revealed.get(entry.name);wasRevealed!==void 0&&next.set(entry.name,wasRevealed)}),this.revealed=next}}toggleReveal(envName){const isRevealed=!(this.revealed.get(envName)??!1),next=new Map(this.revealed);next.set(envName,isRevealed),this.revealed=next,this.emit("lr-reveal-change",Object.freeze({envName,revealed:isRevealed}))}async copy(entry){const text=entry.value,owner=this.isConnected?this.ownerDocument.defaultView:null,outcome=await writeClipboardText(owner,text);if(!(!this.isConnected||this.ownerDocument.defaultView!==owner)){if(outcome.ok){this.announcementSink?.announce(this.localize("copied")),this.emit("lr-copy",outcome);return}this.announcementSink?.announce(this.localize("copyFailed")),this.emit("lr-error"),this.emit("lr-copy-error",outcome)}}get accessibleLabel(){return hostAriaLabel(this)?.trim()??(this.label==null?this.localize("envListLabel"):this.label)}render(){return this.entries.length===0?html`
|
|
2
2
|
<div part="base" data-empty role="group" aria-label=${this.accessibleLabel}>
|
|
3
3
|
<lr-empty heading=${this.localize("noData")}></lr-empty>
|
|
4
4
|
</div>
|
|
@@ -68,10 +68,13 @@ import{css}from"lit";const styles=css`
|
|
|
68
68
|
background: var(--lr-env-list-reveal-active-bg, var(--lr-color-brand-quiet));
|
|
69
69
|
border-color: var(--lr-env-list-reveal-active-border, var(--lr-color-brand));
|
|
70
70
|
}
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
71
|
+
[part='reveal-button']:where([aria-pressed='true']):hover {
|
|
72
|
+
background: color-mix(
|
|
73
|
+
in oklab,
|
|
74
|
+
var(--lr-env-list-reveal-active-bg, var(--lr-color-brand-quiet)),
|
|
75
|
+
var(--lr-color-mix-partner) var(--lr-color-mix-hover)
|
|
76
|
+
);
|
|
77
|
+
}
|
|
75
78
|
[part='reveal-button']:active,
|
|
76
79
|
[part='copy-button']:active {
|
|
77
80
|
background: color-mix(in oklab, var(--lr-color-brand-quiet), var(--lr-color-mix-partner) var(--lr-color-mix-active));
|
|
@@ -29,6 +29,18 @@ export interface LyraFileTreeEventMap {
|
|
|
29
29
|
* `<lr-file-tree>` — a file-explorer preset over `<lr-tree>` + `<lr-file-icon>`: path-keyed
|
|
30
30
|
* nodes with git-status/diff-count badges, lazy directory loading, and select/open events.
|
|
31
31
|
*
|
|
32
|
+
* **The composed `<lr-tree>`'s `reorderable`/`lr-reorder` capability is deliberately not
|
|
33
|
+
* forwarded.** The tree it renders is not a model this component owns: `treeItems` is derived
|
|
34
|
+
* from `nodes` on every render and keyed by filesystem path, so sibling order is whatever the
|
|
35
|
+
* host's own listing produced (name, type, git status), not an authored sequence a user can
|
|
36
|
+
* rearrange. `<lr-tree>`'s reorder is also strictly sibling-scoped — it never crosses a subtree
|
|
37
|
+
* boundary, precisely so a reorder can never become a reparent — which is the one file operation
|
|
38
|
+
* ("move this file into that directory") that would change a path and therefore mean something
|
|
39
|
+
* here. Forwarding it would have to invent a second, path-shaped event alongside
|
|
40
|
+
* `lr-file-select`/`lr-file-open`/`lr-load-children`, permanently, for a gesture whose result the
|
|
41
|
+
* host would have to discard. A consumer that genuinely needs orderable rows composes `<lr-tree>`
|
|
42
|
+
* directly, where the capability already lives.
|
|
43
|
+
*
|
|
32
44
|
* @customElement lr-file-tree
|
|
33
45
|
* @event lr-file-select - `detail: { filePath, node }` — a row was activated.
|
|
34
46
|
* @event lr-file-open - `detail: { filePath, node }` — Enter/click on an already-selected file row
|
|
@@ -73,6 +73,8 @@ import{css}from"lit";const styles=css`
|
|
|
73
73
|
inset-block-start: 0;
|
|
74
74
|
inset-inline-start: 0;
|
|
75
75
|
will-change: transform;
|
|
76
|
+
min-inline-size: var(--lr-size-1-5rem);
|
|
77
|
+
min-block-size: var(--lr-size-1-5rem);
|
|
76
78
|
}
|
|
77
79
|
[part='node-control'] {
|
|
78
80
|
min-inline-size: var(--lr-icon-button-size);
|
|
@@ -207,10 +209,6 @@ import{css}from"lit";const styles=css`
|
|
|
207
209
|
:host([orientation='horizontal']:dir(rtl)) [part='node'] ::slotted(*) {
|
|
208
210
|
transform: scaleX(-1);
|
|
209
211
|
}
|
|
210
|
-
/* MUST stay before :hover/:active below: all three resolve to the same specificity (0,2,0),
|
|
211
|
-
so whichever is declared last always wins regardless of which states are actually active on
|
|
212
|
-
the element. Declaring the static selected ring first lets the pointer-feedback rules below
|
|
213
|
-
still read on top of it when a selected node is hovered or press-dragged. */
|
|
214
212
|
[part='node'][data-selected] {
|
|
215
213
|
outline: var(--lr-size-2px) solid
|
|
216
214
|
var(--lr-flow-canvas-node-selected-outline-color, var(--lr-color-brand));
|
|
@@ -222,23 +220,20 @@ import{css}from"lit";const styles=css`
|
|
|
222
220
|
var(--lr-flow-canvas-node-hover-outline-color, var(--lr-color-border-strong));
|
|
223
221
|
outline-offset: var(--lr-size-2px);
|
|
224
222
|
}
|
|
225
|
-
/* A node is pressed for two different gestures -- a click that selects it and a pointerdown that
|
|
226
|
-
starts a drag -- and both need to read immediately. The pointer-feedback colour is shared with
|
|
227
|
-
the hover rule above (one knob for "the pointer is on this node"); only the weight steps up, so
|
|
228
|
-
the pressed ring is unmistakably heavier than the hovered one without introducing a second
|
|
229
|
-
colour that would then have to stay in sync with it. */
|
|
230
223
|
[part='node']:active {
|
|
231
224
|
outline: var(--lr-size-2px) solid
|
|
232
225
|
var(--lr-flow-canvas-node-hover-outline-color, var(--lr-color-border-strong));
|
|
233
226
|
outline-offset: var(--lr-size-2px);
|
|
234
227
|
}
|
|
235
|
-
[part='edge']
|
|
228
|
+
[part='edge'][aria-pressed='true'] {
|
|
229
|
+
stroke-width: 2.5;
|
|
230
|
+
}
|
|
231
|
+
[part='edge']:hover,
|
|
232
|
+
[part='edge-hit-area']:hover + [part='edge'] {
|
|
236
233
|
stroke-width: 2.5;
|
|
237
234
|
}
|
|
238
|
-
|
|
239
|
-
|
|
240
|
-
change rather than as feedback. 3.5 also clears the 2.5 an already-selected edge carries. */
|
|
241
|
-
[part='edge']:active {
|
|
235
|
+
[part='edge']:active,
|
|
236
|
+
[part='edge-hit-area']:active + [part='edge'] {
|
|
242
237
|
stroke-width: 3.5;
|
|
243
238
|
}
|
|
244
239
|
[part='node']:has([part='node-control']:focus-visible),
|
|
@@ -246,9 +241,6 @@ import{css}from"lit";const styles=css`
|
|
|
246
241
|
outline: var(--lr-focus-ring-width) solid var(--lr-focus-ring-color);
|
|
247
242
|
outline-offset: var(--lr-focus-ring-offset);
|
|
248
243
|
}
|
|
249
|
-
[part='edge'][aria-pressed='true'] {
|
|
250
|
-
stroke-width: 2.5;
|
|
251
|
-
}
|
|
252
244
|
[part='connection-line'] {
|
|
253
245
|
fill: none;
|
|
254
246
|
stroke: var(--lr-color-brand);
|
|
@@ -268,6 +260,9 @@ import{css}from"lit";const styles=css`
|
|
|
268
260
|
outline: var(--lr-size-2px) dashed var(--lr-flow-canvas-drop-active-outline-color, var(--lr-color-brand));
|
|
269
261
|
outline-offset: calc(-1 * var(--lr-size-2px));
|
|
270
262
|
}
|
|
263
|
+
[part='viewport'][data-drop-active]:focus-visible {
|
|
264
|
+
box-shadow: inset 0 0 0 var(--lr-focus-ring-width) var(--lr-focus-ring-color);
|
|
265
|
+
}
|
|
271
266
|
[part='edge'][data-running] {
|
|
272
267
|
stroke-dasharray: 6 4;
|
|
273
268
|
animation: lr-flow-canvas-march var(--lr-flow-canvas-march-duration, var(--lr-duration-ambient)) linear infinite;
|
|
@@ -275,8 +270,6 @@ import{css}from"lit";const styles=css`
|
|
|
275
270
|
[part='edge'][data-running-static] {
|
|
276
271
|
stroke-dasharray: 6 4;
|
|
277
272
|
}
|
|
278
|
-
/* The JS gate only evaluates the preference at render time; this CSS branch also covers a
|
|
279
|
-
preference change while an already-rendered edge is still marching. */
|
|
280
273
|
@media (prefers-reduced-motion: reduce) {
|
|
281
274
|
[part='edge'][data-running] {
|
|
282
275
|
animation: none;
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
var __decorate=function(decorators,target,key,desc){var c=arguments.length,r=c<3?target:desc===null?desc=Object.getOwnPropertyDescriptor(target,key):desc,d;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")r=Reflect.decorate(decorators,target,key,desc);else for(var i=decorators.length-1;i>=0;i--)(d=decorators[i])&&(r=(c<3?d(r):c>3?d(target,key,r):d(target,key))||r);return c>3&&r&&Object.defineProperty(target,key,r),r};import{html,nothing,svg}from"lit";import{property,state}from"lit/decorators.js";import{LyraElement}from"../../../internal/lyra-element.js";import{FlowCanvasCompanionController}from"../flow-canvas/flow-companion-controller.js";import{styles}from"./flow-controls.styles.js";import{LYRA_DEFAULT_flowControlsLabel,LYRA_DEFAULT_flowLockCanvas,LYRA_DEFAULT_zoomIn,LYRA_DEFAULT_zoomOut,LYRA_DEFAULT_zoomToFit}from"../../../internal/default-strings.generated.js";function isFlowCanvasLike(element){const candidate=element;return typeof candidate.registerCompanion=="function"&&typeof candidate.zoomIn=="function"&&typeof candidate.zoomOut=="function"&&typeof candidate.fit=="function"&&typeof candidate.locked=="boolean"}const GLYPH_VIEW_BOX="0 0 24 24",GLYPH_STROKE_WIDTH="1.75";function glyphSvg(inner){return svg`<svg
|
|
1
|
+
var __decorate=function(decorators,target,key,desc){var c=arguments.length,r=c<3?target:desc===null?desc=Object.getOwnPropertyDescriptor(target,key):desc,d;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")r=Reflect.decorate(decorators,target,key,desc);else for(var i=decorators.length-1;i>=0;i--)(d=decorators[i])&&(r=(c<3?d(r):c>3?d(target,key,r):d(target,key))||r);return c>3&&r&&Object.defineProperty(target,key,r),r};import{html,nothing,svg}from"lit";import{property,state}from"lit/decorators.js";import{LyraElement}from"../../../internal/lyra-element.js";import{hostAriaLabel}from"../../../internal/a11y.js";import{FlowCanvasCompanionController}from"../flow-canvas/flow-companion-controller.js";import{styles}from"./flow-controls.styles.js";import{LYRA_DEFAULT_flowControlsLabel,LYRA_DEFAULT_flowLockCanvas,LYRA_DEFAULT_zoomIn,LYRA_DEFAULT_zoomOut,LYRA_DEFAULT_zoomToFit}from"../../../internal/default-strings.generated.js";function isFlowCanvasLike(element){const candidate=element;return typeof candidate.registerCompanion=="function"&&typeof candidate.zoomIn=="function"&&typeof candidate.zoomOut=="function"&&typeof candidate.fit=="function"&&typeof candidate.locked=="boolean"}const GLYPH_VIEW_BOX="0 0 24 24",GLYPH_STROKE_WIDTH="1.75";function glyphSvg(inner){return svg`<svg
|
|
2
2
|
width="1em"
|
|
3
3
|
height="1em"
|
|
4
4
|
viewBox=${GLYPH_VIEW_BOX}
|
|
@@ -17,7 +17,7 @@ var __decorate=function(decorators,target,key,desc){var c=arguments.length,r=c<3
|
|
|
17
17
|
`),lockClosedGlyph=()=>glyphSvg(svg`<rect x="4" y="11" width="16" height="9" rx="2"></rect><path d="M8 11V7a4 4 0 0 1 8 0v4"></path>`),lockOpenGlyph=()=>glyphSvg(svg`<rect x="4" y="11" width="16" height="9" rx="2"></rect><path d="M8 11V7a4 4 0 0 1 7.4-2"></path>`);class LyraFlowControls extends LyraElement{constructor(){super(...arguments),this.for="",this._orientation="vertical",this.hideLock=!1,this.frame="card",this.snapshot=null,this.locked=!1,this.companionController=new FlowCanvasCompanionController(this,isFlowCanvasLike,next=>this.attachCanvas(next)),this.toggleLock=()=>{if(!this.canvasEl)return;const locked=!this.canvasEl.locked;this.canvasEl.locked=locked,this.locked=locked}}static{this.defaultStrings={...super.defaultStrings,flowControlsLabel:LYRA_DEFAULT_flowControlsLabel,flowLockCanvas:LYRA_DEFAULT_flowLockCanvas,zoomIn:LYRA_DEFAULT_zoomIn,zoomOut:LYRA_DEFAULT_zoomOut,zoomToFit:LYRA_DEFAULT_zoomToFit}}static{this.styles=[LyraElement.styles,styles]}get orientation(){return this._orientation}set orientation(value){const previous=this._orientation,next=value==="horizontal"?"horizontal":"vertical";this._orientation=next,(next!==previous||value!==next)&&this.requestUpdate("orientation",previous)}connectedCallback(){super.connectedCallback(),this.companionController.connect()}disconnectedCallback(){super.disconnectedCallback(),this.companionController.disconnect()}adoptedCallback(){super.adoptedCallback(),this.companionController.adopt()}willUpdate(changed){super.willUpdate(changed),this.hasUpdated&&changed.has("for")&&this.companionController.targetIdChanged()}attachCanvas(canvas){this.unsubscribe?.(),this.unsubscribe=void 0,this.snapshot=null,this.locked=!1,this.canvasEl=canvas??void 0,canvas&&(this.locked=canvas.locked,this.unsubscribe=canvas.registerCompanion(snapshot=>{!this.isConnected||this.canvasEl!==canvas||(this.snapshot=snapshot,this.locked=snapshot.locked)}))}render(){const disabled=!this.canvasEl,viewport=this.snapshot?.viewport,atMin=viewport?viewport.zoom<=viewport.minZoom:!1,atMax=viewport?viewport.zoom>=viewport.maxZoom:!1;return html`<div
|
|
18
18
|
part="base"
|
|
19
19
|
role="group"
|
|
20
|
-
aria-label=${this
|
|
20
|
+
aria-label=${hostAriaLabel(this)??this.localize("flowControlsLabel")}
|
|
21
21
|
>
|
|
22
22
|
<button
|
|
23
23
|
part="zoom-in"
|
|
@@ -16,26 +16,12 @@ import{css}from"lit";const styles=css`
|
|
|
16
16
|
border: var(--lr-border-width-thin) solid var(--lr-color-border);
|
|
17
17
|
border-radius: var(--lr-radius);
|
|
18
18
|
background: var(--lr-color-surface);
|
|
19
|
-
/* Overlay step: this cluster's job is to float over a flow canvas as a toolbar, which is why the
|
|
20
|
-
plain escape below strips the whole surface treatment when it is embedded in real chrome. */
|
|
21
19
|
box-shadow: var(--lr-shadow-m);
|
|
22
20
|
}
|
|
23
21
|
:host([orientation='vertical']) [part='base'] {
|
|
24
22
|
flex-direction: column;
|
|
25
23
|
flex-wrap: nowrap;
|
|
26
24
|
}
|
|
27
|
-
/* Chrome-less escape, mirroring the shared LyraFrame vocabulary's frame="plain" (and lr-callout's [inline]): the
|
|
28
|
-
cluster is often placed directly inside a host toolbar or panel that already draws its own
|
|
29
|
-
border/background, where this floating-surface chrome doubles the frame. The box-shadow goes
|
|
30
|
-
with the rest of the box decoration, exactly as lr-flow-run-status's plain does -- a lift
|
|
31
|
-
shadow with no surface under it reads as a stray smudge. Only the decoration goes: the flex
|
|
32
|
-
layout, the gap, every button's --lr-icon-button-size hit-area floor, and their hover/focus
|
|
33
|
-
affordances all stay.
|
|
34
|
-
|
|
35
|
-
MUST stay after :host([orientation='vertical']) [part='base']: both are :host([x])
|
|
36
|
-
[part='base'], i.e. equal specificity, so source order alone decides. Only flex-direction vs.
|
|
37
|
-
box decoration is set today, so nothing collides -- keeping this last preserves plain as the
|
|
38
|
-
stronger statement ("no chrome at all") if either rule grows. */
|
|
39
25
|
:host([frame='plain']) [part='base'] {
|
|
40
26
|
padding: 0;
|
|
41
27
|
border: 0;
|
|
@@ -43,11 +29,6 @@ import{css}from"lit";const styles=css`
|
|
|
43
29
|
background: transparent;
|
|
44
30
|
box-shadow: none;
|
|
45
31
|
}
|
|
46
|
-
/* Enumerated by part (rather than the previous bare "[part='base'] button"
|
|
47
|
-
tag selector) so each control resolves to the shared minimum tappable
|
|
48
|
-
size (--lr-icon-button-size) directly off its own [part='...'] --
|
|
49
|
-
the floating toolbar already has the room, this doesn't change the
|
|
50
|
-
rendered box, just how it's declared. */
|
|
51
32
|
[part='zoom-in'],
|
|
52
33
|
[part='zoom-out'],
|
|
53
34
|
[part='fit'],
|
|
@@ -64,18 +45,9 @@ import{css}from"lit";const styles=css`
|
|
|
64
45
|
color: var(--lr-color-text);
|
|
65
46
|
cursor: pointer;
|
|
66
47
|
}
|
|
67
|
-
/* :where() zeroes the wrapped selectors' specificity contribution, leaving only :hover itself
|
|
68
|
-
-- (0,1,0) total, functionally identical selection to \`[part='base'] button:hover:not(:disabled)\`
|
|
69
|
-
((0,3,1)) but now losing (on the pseudo-element tiebreak) to a consumer's own
|
|
70
|
-
\`::part(zoom-in):hover\` override ((0,1,1)) without that consumer needing !important. Mirrors
|
|
71
|
-
lr-attachment-trigger's identical fix for the same over-specific shape. */
|
|
72
48
|
:where([part='base'] button):hover:where(:not(:disabled)) {
|
|
73
49
|
background: var(--lr-color-surface-hover, var(--lr-color-border));
|
|
74
50
|
}
|
|
75
|
-
/* Same shape as the hover rule, so it inherits the same (0,1,0) specificity and a consumer's
|
|
76
|
-
::part(zoom-in):active override still wins. The fill is the hovered one carried further toward
|
|
77
|
-
--lr-color-mix-partner (the text colour), which moves in whichever direction the surface needs
|
|
78
|
-
rather than always lightening. */
|
|
79
51
|
:where([part='base'] button):active:where(:not(:disabled)) {
|
|
80
52
|
background: color-mix(
|
|
81
53
|
in oklab,
|
|
@@ -94,14 +66,6 @@ import{css}from"lit";const styles=css`
|
|
|
94
66
|
[part='lock'][aria-pressed='true'] {
|
|
95
67
|
color: var(--lr-flow-controls-lock-active-color, var(--lr-color-brand));
|
|
96
68
|
}
|
|
97
|
-
/* The default slot's own contract: a consumer's button joins the cluster and is "styled by the
|
|
98
|
-
same group". None of the rules above can deliver that -- every one of them is either a
|
|
99
|
-
[part='...'] selector (a light-DOM button carries no part attribute) or a descendant selector
|
|
100
|
-
inside a shadow stylesheet, and per CSS Scoping neither form ever matches slotted content
|
|
101
|
-
wherever it visually renders. ::slotted() is the only selector that crosses that boundary, and
|
|
102
|
-
it takes a COMPOUND argument, so each state goes inside the parentheses rather than after
|
|
103
|
-
them. It matches only the slotted element itself, never its descendants, which is exactly the
|
|
104
|
-
scope wanted here: the button's box, not the consumer's own icon markup inside it. */
|
|
105
69
|
::slotted(button) {
|
|
106
70
|
display: inline-flex;
|
|
107
71
|
align-items: center;
|
|
@@ -119,6 +83,9 @@ import{css}from"lit";const styles=css`
|
|
|
119
83
|
overflow-wrap: anywhere;
|
|
120
84
|
cursor: pointer;
|
|
121
85
|
}
|
|
86
|
+
::slotted([hidden]:not([hidden='until-found' i])) {
|
|
87
|
+
display: none;
|
|
88
|
+
}
|
|
122
89
|
::slotted(button:hover:not(:disabled)) {
|
|
123
90
|
background: var(--lr-color-surface-hover, var(--lr-color-border));
|
|
124
91
|
}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
var __decorate=function(decorators,target,key,desc){var c=arguments.length,r=c<3?target:desc===null?desc=Object.getOwnPropertyDescriptor(target,key):desc,d;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")r=Reflect.decorate(decorators,target,key,desc);else for(var i=decorators.length-1;i>=0;i--)(d=decorators[i])&&(r=(c<3?d(r):c>3?d(target,key,r):d(target,key))||r);return c>3&&r&&Object.defineProperty(target,key,r),r};import{html,svg,nothing}from"lit";import{property,state}from"lit/decorators.js";import{LyraElement}from"../../../internal/lyra-element.js";import{nextId,srOnly}from"../../../internal/a11y.js";import{resolveCssLength}from"../../../internal/css-length.js";import{getNumberFormat}from"../../../internal/intl-cache.js";import{acquireAnnouncementSink}from"../../../internal/announcer.js";import{FlowCanvasCompanionController}from"../flow-canvas/flow-companion-controller.js";import{styles}from"./flow-minimap.styles.js";import{LYRA_DEFAULT_flowMinimapInstructions,LYRA_DEFAULT_flowMinimapLabel,LYRA_DEFAULT_flowMinimapViewport,LYRA_DEFAULT_flowMinimapViewportChanged}from"../../../internal/default-strings.generated.js";function isFlowCanvasLike(element){const candidate=element;return typeof candidate.registerCompanion=="function"&&typeof candidate.setViewport=="function"&&typeof candidate.zoomIn=="function"&&typeof candidate.zoomOut=="function"&&typeof candidate.fit=="function"&&typeof candidate.locked=="boolean"}const DEFAULT_VIEWPORT_MIN_SIZE_PX=40;class LyraFlowMinimap extends LyraElement{constructor(){super(...arguments),this.for="",this.label="",this.snapshot=null,this.liveText="",this.justDraggedViewport=!1,this.announceNextSnapshot=!1,this.viewportMinSizePx=DEFAULT_VIEWPORT_MIN_SIZE_PX,this.baseBorderPx=0,this.instructionsId=nextId("flow-minimap-instructions"),this.companionController=new FlowCanvasCompanionController(this,isFlowCanvasLike,next=>this.attachCanvas(next)),this.onMapClick=e=>{if(this.justDraggedViewport){this.justDraggedViewport=!1;return}if(!this.canvasEl||!this.snapshot||this.canvasEl.locked)return;const point=this.clientToContentPoint(e.currentTarget,e.clientX,e.clientY),{zoom,width,height}=this.snapshot.viewport;this.announceNextSnapshot=!0,this.canvasEl.setViewport({x:width/2-point.x*zoom,y:height/2-point.y*zoom,zoom})},this.onMapWheel=e=>{!this.canvasEl||this.canvasEl.locked||(e.preventDefault(),this.announceNextSnapshot=!0,e.deltaY<0?this.canvasEl.zoomIn():this.canvasEl.zoomOut())},this.onViewportPointerDown=e=>{const dragEventWindow=this.ownerDocument.defaultView;!this.canvasEl||!this.snapshot||!dragEventWindow||this.canvasEl.locked||(e.stopPropagation(),this.detachViewportDragListeners(),this.justDraggedViewport=!1,this.dragState={pointerId:e.pointerId,startClientX:e.clientX,startClientY:e.clientY,startViewport:{...this.snapshot.viewport},moved:!1},e.target.setPointerCapture?.(e.pointerId),this.dragEventWindow=dragEventWindow,dragEventWindow.addEventListener("pointermove",this.onViewportPointerMove),dragEventWindow.addEventListener("pointerup",this.onViewportPointerUp),dragEventWindow.addEventListener("pointercancel",this.onViewportPointerUp),dragEventWindow.addEventListener("lostpointercapture",this.onViewportPointerUp))},this.onViewportPointerMove=e=>{const drag=this.dragState;if(!drag||e.pointerId!==drag.pointerId)return;if(!this.canvasEl||this.canvasEl.locked){this.cancelViewportDrag();return}const ctm=this.renderRoot.querySelector('[part="map"]')?.getScreenCTM();if(!ctm)return;const scale=ctm.a||1,dxContent=(e.clientX-drag.startClientX)/scale,dyContent=(e.clientY-drag.startClientY)/scale;dxContent===0&&dyContent===0||(drag.moved=!0,drag.latestViewport={x:drag.startViewport.x-dxContent*drag.startViewport.zoom,y:drag.startViewport.y-dyContent*drag.startViewport.zoom,zoom:drag.startViewport.zoom},this.canvasEl.setViewport(drag.latestViewport))},this.onViewportPointerUp=e=>{const drag=this.dragState;!drag||e.pointerId!==drag.pointerId||(this.justDraggedViewport=e.type==="pointerup"&&drag.moved,this.justDraggedViewport&&drag.latestViewport&&!this.canvasEl?.locked&&this.announceViewport(drag.latestViewport),this.dragState=void 0,this.detachViewportDragListeners())},this.onViewportKeyDown=e=>{if(!this.canvasEl||!this.snapshot||this.canvasEl.locked)return;if(e.key==="+"||e.key==="="){e.preventDefault(),this.announceNextSnapshot=!0,this.canvasEl.zoomIn();return}if(e.key==="-"||e.key==="_"){e.preventDefault(),this.announceNextSnapshot=!0,this.canvasEl.zoomOut();return}if(e.key==="Enter"||e.key==="Home"){e.preventDefault(),this.announceNextSnapshot=!0,this.canvasEl.fit();return}const{x,y,zoom,width,height}=this.snapshot.viewport,stepX=width*.1,stepY=height*.1;e.key==="ArrowRight"?(e.preventDefault(),this.announceNextSnapshot=!0,this.canvasEl.setViewport({x:x-stepX,y,zoom})):e.key==="ArrowLeft"?(e.preventDefault(),this.announceNextSnapshot=!0,this.canvasEl.setViewport({x:x+stepX,y,zoom})):e.key==="ArrowDown"?(e.preventDefault(),this.announceNextSnapshot=!0,this.canvasEl.setViewport({x,y:y-stepY,zoom})):e.key==="ArrowUp"&&(e.preventDefault(),this.announceNextSnapshot=!0,this.canvasEl.setViewport({x,y:y+stepY,zoom}))}}static{this.defaultStrings={...super.defaultStrings,flowMinimapInstructions:LYRA_DEFAULT_flowMinimapInstructions,flowMinimapLabel:LYRA_DEFAULT_flowMinimapLabel,flowMinimapViewport:LYRA_DEFAULT_flowMinimapViewport,flowMinimapViewportChanged:LYRA_DEFAULT_flowMinimapViewportChanged}}static{this.styles=[LyraElement.styles,styles,srOnly]}connectedCallback(){super.connectedCallback(),this.syncAnnouncementSink(),this.companionController.connect()}refreshViewportMetrics(){const view=this.ownerDocument?.defaultView;if(!view||!this.isConnected)return;const computed=view.getComputedStyle(this),minSize=resolveCssLength(computed.getPropertyValue("--lr-flow-minimap-viewport-min-size").trim()||computed.getPropertyValue("--lr-icon-button-size").trim(),{host:this});this.viewportMinSizePx=minSize!==void 0&&Number.isFinite(minSize)&&minSize>=0?minSize:DEFAULT_VIEWPORT_MIN_SIZE_PX;const border=resolveCssLength(computed.getPropertyValue("--lr-border-width-thin").trim(),{host:this});this.baseBorderPx=border!==void 0&&Number.isFinite(border)&&border>=0?border:0}disconnectedCallback(){super.disconnectedCallback(),this.releaseAnnouncementSink(),this.announceNextSnapshot=!1,this.liveText="",this.companionController.disconnect()}adoptedCallback(){super.adoptedCallback(),this.syncAnnouncementSink(),this.companionController.adopt()}releaseAnnouncementSink(){this.announcementSink?.release(),this.announcementSink=void 0}syncAnnouncementSink(){if(!this.isConnected){this.releaseAnnouncementSink();return}this.announcementSink?.element.ownerDocument!==this.ownerDocument&&(this.releaseAnnouncementSink(),this.announcementSink=acquireAnnouncementSink("polite",{document:this.ownerDocument,source:this}))}announceViewport(viewport){const number=getNumberFormat(this.effectiveLocale,{maximumFractionDigits:0}),percent=getNumberFormat(this.effectiveLocale,{style:"percent",maximumFractionDigits:1}),text=this.localize("flowMinimapViewportChanged",void 0,{x:number.format(viewport.x),y:number.format(viewport.y),zoom:percent.format(viewport.zoom)});this.liveText=text,this.announcementSink?.announce(text)}willUpdate(changed){super.willUpdate(changed),this.refreshViewportMetrics(),this.hasUpdated&&changed.has("for")&&this.companionController.targetIdChanged()}attachCanvas(canvas){this.cancelViewportDrag(),this.unsubscribe?.(),this.unsubscribe=void 0,this.snapshot=null,this.canvasEl=canvas??void 0,canvas&&(this.unsubscribe=canvas.registerCompanion(snapshot=>{!this.isConnected||this.canvasEl!==canvas||(this.snapshot=snapshot,snapshot.locked&&this.cancelViewportDrag(),this.announceNextSnapshot&&(this.announceNextSnapshot=!1,this.announceViewport(snapshot.viewport)))}))}cancelViewportDrag(){this.dragState=void 0,this.justDraggedViewport=!1,this.announceNextSnapshot=!1,this.detachViewportDragListeners()}contentBounds(){const nodes=this.snapshot?.nodes??[];if(nodes.length===0)return{minX:0,minY:0,maxX:1,maxY:1};let minX=1/0,minY=1/0,maxX=-1/0,maxY=-1/0;for(const n of nodes)minX=Math.min(minX,n.x),minY=Math.min(minY,n.y),maxX=Math.max(maxX,n.x+n.width),maxY=Math.max(maxY,n.y+n.height);return{minX,minY,maxX,maxY}}mapSizePx(){const inset=2*this.baseBorderPx;return{width:Math.max(0,this.clientWidth-inset),height:Math.max(0,this.clientHeight-inset)}}viewportRectContent(viewBoxWidth,viewBoxHeight,minimumPhysicalSize=this.viewportMinSizePx){const vp=this.snapshot?.viewport;if(!vp||vp.zoom===0)return{x:0,y:0,width:0,height:0};const x=-vp.x/vp.zoom,y=-vp.y/vp.zoom,width=vp.width/vp.zoom,height=vp.height/vp.zoom,map=this.mapSizePx(),scale=map.width>0&&map.height>0&&viewBoxWidth>0&&viewBoxHeight>0?Math.min(map.width/viewBoxWidth,map.height/viewBoxHeight):0,floor=scale>0?minimumPhysicalSize/scale:0;if(!Number.isFinite(floor)||floor<=0)return{x,y,width,height};const flooredWidth=Math.max(width,floor),flooredHeight=Math.max(height,floor);return{x:x-(flooredWidth-width)/2,y:y-(flooredHeight-height)/2,width:flooredWidth,height:flooredHeight}}clientToContentPoint(svgEl,clientX,clientY){const ctm=svgEl.getScreenCTM();if(!ctm)return{x:0,y:0};const pt=svgEl.createSVGPoint();pt.x=clientX,pt.y=clientY;const transformed=pt.matrixTransform(ctm.inverse());return{x:transformed.x,y:transformed.y}}detachViewportDragListeners(){const dragEventWindow=this.dragEventWindow;dragEventWindow&&(dragEventWindow.removeEventListener("pointermove",this.onViewportPointerMove),dragEventWindow.removeEventListener("pointerup",this.onViewportPointerUp),dragEventWindow.removeEventListener("pointercancel",this.onViewportPointerUp),dragEventWindow.removeEventListener("lostpointercapture",this.onViewportPointerUp),this.dragEventWindow=void 0)}renderNodes(){return svg`${(this.snapshot?.nodes??[]).map(n=>svg`<rect part="node" data-status=${n.status??nothing} x=${n.x} y=${n.y} width=${n.width} height=${n.height} rx="2"></rect>`)}`}render(){const label=this.getAttribute("aria-label")||this.label||this.localize("flowMinimapLabel");if(!this.canvasEl||!this.snapshot)return html`<div part="base" aria-hidden="true"></div>`;const bounds=this.contentBounds(),padding=20,vbX=bounds.minX-padding,vbY=bounds.minY-padding,vbW=Math.max(1,bounds.maxX-bounds.minX+padding*2),vbH=Math.max(1,bounds.maxY-bounds.minY+padding*2),viewportRect=this.viewportRectContent(vbW,vbH,0),viewportHitRect=this.viewportRectContent(vbW,vbH),locked=this.snapshot.locked||this.canvasEl.locked;return html`<div
|
|
1
|
+
var __decorate=function(decorators,target,key,desc){var c=arguments.length,r=c<3?target:desc===null?desc=Object.getOwnPropertyDescriptor(target,key):desc,d;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")r=Reflect.decorate(decorators,target,key,desc);else for(var i=decorators.length-1;i>=0;i--)(d=decorators[i])&&(r=(c<3?d(r):c>3?d(target,key,r):d(target,key))||r);return c>3&&r&&Object.defineProperty(target,key,r),r};import{html,svg,nothing}from"lit";import{property,state}from"lit/decorators.js";import{LyraElement}from"../../../internal/lyra-element.js";import{hostAriaLabel,nextId,srOnly}from"../../../internal/a11y.js";import{resolveCssLength}from"../../../internal/css-length.js";import{getNumberFormat}from"../../../internal/intl-cache.js";import{acquireAnnouncementSink}from"../../../internal/announcer.js";import{FlowCanvasCompanionController}from"../flow-canvas/flow-companion-controller.js";import{styles}from"./flow-minimap.styles.js";import{LYRA_DEFAULT_flowMinimapInstructions,LYRA_DEFAULT_flowMinimapLabel,LYRA_DEFAULT_flowMinimapViewport,LYRA_DEFAULT_flowMinimapViewportChanged}from"../../../internal/default-strings.generated.js";function isFlowCanvasLike(element){const candidate=element;return typeof candidate.registerCompanion=="function"&&typeof candidate.setViewport=="function"&&typeof candidate.zoomIn=="function"&&typeof candidate.zoomOut=="function"&&typeof candidate.fit=="function"&&typeof candidate.locked=="boolean"}const DEFAULT_VIEWPORT_MIN_SIZE_PX=40;class LyraFlowMinimap extends LyraElement{constructor(){super(...arguments),this.for="",this.label="",this.snapshot=null,this.liveText="",this.justDraggedViewport=!1,this.announceNextSnapshot=!1,this.viewportMinSizePx=DEFAULT_VIEWPORT_MIN_SIZE_PX,this.baseBorderPx=0,this.instructionsId=nextId("flow-minimap-instructions"),this.companionController=new FlowCanvasCompanionController(this,isFlowCanvasLike,next=>this.attachCanvas(next)),this.onMapClick=e=>{if(this.justDraggedViewport){this.justDraggedViewport=!1;return}if(!this.canvasEl||!this.snapshot||this.canvasEl.locked)return;const point=this.clientToContentPoint(e.currentTarget,e.clientX,e.clientY),{zoom,width,height}=this.snapshot.viewport;this.announceNextSnapshot=!0,this.canvasEl.setViewport({x:width/2-point.x*zoom,y:height/2-point.y*zoom,zoom})},this.onMapWheel=e=>{!this.canvasEl||this.canvasEl.locked||(e.preventDefault(),this.announceNextSnapshot=!0,e.deltaY<0?this.canvasEl.zoomIn():this.canvasEl.zoomOut())},this.onViewportPointerDown=e=>{const dragEventWindow=this.ownerDocument.defaultView;!this.canvasEl||!this.snapshot||!dragEventWindow||this.canvasEl.locked||(e.stopPropagation(),this.detachViewportDragListeners(),this.justDraggedViewport=!1,this.dragState={pointerId:e.pointerId,startClientX:e.clientX,startClientY:e.clientY,startViewport:{...this.snapshot.viewport},moved:!1},e.target.setPointerCapture?.(e.pointerId),this.dragEventWindow=dragEventWindow,dragEventWindow.addEventListener("pointermove",this.onViewportPointerMove),dragEventWindow.addEventListener("pointerup",this.onViewportPointerUp),dragEventWindow.addEventListener("pointercancel",this.onViewportPointerUp),dragEventWindow.addEventListener("lostpointercapture",this.onViewportPointerUp))},this.onViewportPointerMove=e=>{const drag=this.dragState;if(!drag||e.pointerId!==drag.pointerId)return;if(!this.canvasEl||this.canvasEl.locked){this.cancelViewportDrag();return}const ctm=this.renderRoot.querySelector('[part="map"]')?.getScreenCTM();if(!ctm)return;const scale=ctm.a||1,dxContent=(e.clientX-drag.startClientX)/scale,dyContent=(e.clientY-drag.startClientY)/scale;dxContent===0&&dyContent===0||(drag.moved=!0,drag.latestViewport={x:drag.startViewport.x-dxContent*drag.startViewport.zoom,y:drag.startViewport.y-dyContent*drag.startViewport.zoom,zoom:drag.startViewport.zoom},this.canvasEl.setViewport(drag.latestViewport))},this.onViewportPointerUp=e=>{const drag=this.dragState;!drag||e.pointerId!==drag.pointerId||(this.justDraggedViewport=e.type==="pointerup"&&drag.moved,this.justDraggedViewport&&drag.latestViewport&&!this.canvasEl?.locked&&this.announceViewport(drag.latestViewport),this.dragState=void 0,this.detachViewportDragListeners())},this.onViewportKeyDown=e=>{if(!this.canvasEl||!this.snapshot||this.canvasEl.locked)return;if(e.key==="+"||e.key==="="){e.preventDefault(),this.announceNextSnapshot=!0,this.canvasEl.zoomIn();return}if(e.key==="-"||e.key==="_"){e.preventDefault(),this.announceNextSnapshot=!0,this.canvasEl.zoomOut();return}if(e.key==="Enter"||e.key==="Home"){e.preventDefault(),this.announceNextSnapshot=!0,this.canvasEl.fit();return}const{x,y,zoom,width,height}=this.snapshot.viewport,stepX=width*.1,stepY=height*.1;e.key==="ArrowRight"?(e.preventDefault(),this.announceNextSnapshot=!0,this.canvasEl.setViewport({x:x-stepX,y,zoom})):e.key==="ArrowLeft"?(e.preventDefault(),this.announceNextSnapshot=!0,this.canvasEl.setViewport({x:x+stepX,y,zoom})):e.key==="ArrowDown"?(e.preventDefault(),this.announceNextSnapshot=!0,this.canvasEl.setViewport({x,y:y-stepY,zoom})):e.key==="ArrowUp"&&(e.preventDefault(),this.announceNextSnapshot=!0,this.canvasEl.setViewport({x,y:y+stepY,zoom}))}}static{this.defaultStrings={...super.defaultStrings,flowMinimapInstructions:LYRA_DEFAULT_flowMinimapInstructions,flowMinimapLabel:LYRA_DEFAULT_flowMinimapLabel,flowMinimapViewport:LYRA_DEFAULT_flowMinimapViewport,flowMinimapViewportChanged:LYRA_DEFAULT_flowMinimapViewportChanged}}static{this.styles=[LyraElement.styles,styles,srOnly]}connectedCallback(){super.connectedCallback(),this.syncAnnouncementSink(),this.companionController.connect()}refreshViewportMetrics(){const view=this.ownerDocument?.defaultView;if(!view||!this.isConnected)return;const computed=view.getComputedStyle(this),minSize=resolveCssLength(computed.getPropertyValue("--lr-flow-minimap-viewport-min-size").trim()||computed.getPropertyValue("--lr-icon-button-size").trim(),{host:this});this.viewportMinSizePx=minSize!==void 0&&Number.isFinite(minSize)&&minSize>=0?minSize:DEFAULT_VIEWPORT_MIN_SIZE_PX;const border=resolveCssLength(computed.getPropertyValue("--lr-border-width-thin").trim(),{host:this});this.baseBorderPx=border!==void 0&&Number.isFinite(border)&&border>=0?border:0}disconnectedCallback(){super.disconnectedCallback(),this.releaseAnnouncementSink(),this.announceNextSnapshot=!1,this.liveText="",this.companionController.disconnect()}adoptedCallback(){super.adoptedCallback(),this.syncAnnouncementSink(),this.companionController.adopt()}releaseAnnouncementSink(){this.announcementSink?.release(),this.announcementSink=void 0}syncAnnouncementSink(){if(!this.isConnected){this.releaseAnnouncementSink();return}this.announcementSink?.element.ownerDocument!==this.ownerDocument&&(this.releaseAnnouncementSink(),this.announcementSink=acquireAnnouncementSink("polite",{document:this.ownerDocument,source:this}))}announceViewport(viewport){const number=getNumberFormat(this.effectiveLocale,{maximumFractionDigits:0}),percent=getNumberFormat(this.effectiveLocale,{style:"percent",maximumFractionDigits:1}),text=this.localize("flowMinimapViewportChanged",void 0,{x:number.format(viewport.x),y:number.format(viewport.y),zoom:percent.format(viewport.zoom)});this.liveText=text,this.announcementSink?.announce(text)}willUpdate(changed){super.willUpdate(changed),this.refreshViewportMetrics(),this.hasUpdated&&changed.has("for")&&this.companionController.targetIdChanged()}attachCanvas(canvas){this.cancelViewportDrag(),this.unsubscribe?.(),this.unsubscribe=void 0,this.snapshot=null,this.canvasEl=canvas??void 0,canvas&&(this.unsubscribe=canvas.registerCompanion(snapshot=>{!this.isConnected||this.canvasEl!==canvas||(this.snapshot=snapshot,snapshot.locked&&this.cancelViewportDrag(),this.announceNextSnapshot&&(this.announceNextSnapshot=!1,this.announceViewport(snapshot.viewport)))}))}cancelViewportDrag(){this.dragState=void 0,this.justDraggedViewport=!1,this.announceNextSnapshot=!1,this.detachViewportDragListeners()}contentBounds(){const nodes=this.snapshot?.nodes??[];if(nodes.length===0)return{minX:0,minY:0,maxX:1,maxY:1};let minX=1/0,minY=1/0,maxX=-1/0,maxY=-1/0;for(const n of nodes)minX=Math.min(minX,n.x),minY=Math.min(minY,n.y),maxX=Math.max(maxX,n.x+n.width),maxY=Math.max(maxY,n.y+n.height);return{minX,minY,maxX,maxY}}mapSizePx(){const inset=2*this.baseBorderPx;return{width:Math.max(0,this.clientWidth-inset),height:Math.max(0,this.clientHeight-inset)}}viewportRectContent(viewBoxWidth,viewBoxHeight,minimumPhysicalSize=this.viewportMinSizePx){const vp=this.snapshot?.viewport;if(!vp||vp.zoom===0)return{x:0,y:0,width:0,height:0};const x=-vp.x/vp.zoom,y=-vp.y/vp.zoom,width=vp.width/vp.zoom,height=vp.height/vp.zoom,map=this.mapSizePx(),scale=map.width>0&&map.height>0&&viewBoxWidth>0&&viewBoxHeight>0?Math.min(map.width/viewBoxWidth,map.height/viewBoxHeight):0,floor=scale>0?minimumPhysicalSize/scale:0;if(!Number.isFinite(floor)||floor<=0)return{x,y,width,height};const flooredWidth=Math.max(width,floor),flooredHeight=Math.max(height,floor);return{x:x-(flooredWidth-width)/2,y:y-(flooredHeight-height)/2,width:flooredWidth,height:flooredHeight}}clientToContentPoint(svgEl,clientX,clientY){const ctm=svgEl.getScreenCTM();if(!ctm)return{x:0,y:0};const pt=svgEl.createSVGPoint();pt.x=clientX,pt.y=clientY;const transformed=pt.matrixTransform(ctm.inverse());return{x:transformed.x,y:transformed.y}}detachViewportDragListeners(){const dragEventWindow=this.dragEventWindow;dragEventWindow&&(dragEventWindow.removeEventListener("pointermove",this.onViewportPointerMove),dragEventWindow.removeEventListener("pointerup",this.onViewportPointerUp),dragEventWindow.removeEventListener("pointercancel",this.onViewportPointerUp),dragEventWindow.removeEventListener("lostpointercapture",this.onViewportPointerUp),this.dragEventWindow=void 0)}renderNodes(){return svg`${(this.snapshot?.nodes??[]).map(n=>svg`<rect part="node" data-status=${n.status??nothing} x=${n.x} y=${n.y} width=${n.width} height=${n.height} rx="2"></rect>`)}`}render(){const label=hostAriaLabel(this)??(this.label||this.localize("flowMinimapLabel"));if(!this.canvasEl||!this.snapshot)return html`<div part="base" aria-hidden="true"></div>`;const bounds=this.contentBounds(),padding=20,vbX=bounds.minX-padding,vbY=bounds.minY-padding,vbW=Math.max(1,bounds.maxX-bounds.minX+padding*2),vbH=Math.max(1,bounds.maxY-bounds.minY+padding*2),viewportRect=this.viewportRectContent(vbW,vbH,0),viewportHitRect=this.viewportRectContent(vbW,vbH),locked=this.snapshot.locked||this.canvasEl.locked;return html`<div
|
|
2
2
|
part="base"
|
|
3
3
|
role="region"
|
|
4
4
|
aria-label=${label}
|
|
@@ -18,15 +18,9 @@ import{css}from"lit";const styles=css`
|
|
|
18
18
|
block-size: 100%;
|
|
19
19
|
cursor: pointer;
|
|
20
20
|
}
|
|
21
|
-
/* Mouse-hover cue matching the cursor: pointer affordance above -- mirrors the reveal-button/
|
|
22
|
-
copy-button/sources-summary brand-quiet hover tint used across the library for a clickable
|
|
23
|
-
surface with no dedicated icon of its own. */
|
|
24
21
|
[part='map']:hover {
|
|
25
22
|
background: var(--lr-color-brand-quiet);
|
|
26
23
|
}
|
|
27
|
-
/* Clicking the map recenters the canvas viewport, and that jump is the only confirmation the user
|
|
28
|
-
gets -- the pressed fill is what says the click landed on the map rather than on the viewport
|
|
29
|
-
rect drawn over it. */
|
|
30
24
|
[part='map']:active {
|
|
31
25
|
background: color-mix(in oklab, var(--lr-color-brand-quiet), var(--lr-color-mix-partner) var(--lr-color-mix-active));
|
|
32
26
|
}
|
|
@@ -71,9 +65,6 @@ import{css}from"lit";const styles=css`
|
|
|
71
65
|
fill: color-mix(in srgb, var(--lr-color-brand) 25%, transparent);
|
|
72
66
|
stroke-width: 3;
|
|
73
67
|
}
|
|
74
|
-
/* The rect is a grab handle, so its pressed state is also its dragging state -- it stays applied
|
|
75
|
-
for the whole gesture. Both channels step past the hovered values, and the cursor flips to
|
|
76
|
-
grabbing, matching the [data-panning] treatment lr-flow-canvas gives its own background. */
|
|
77
68
|
[data-viewport-control]:has([part='viewport-hit-area']:active) [part='viewport'] {
|
|
78
69
|
fill: color-mix(in srgb, var(--lr-color-brand) 40%, transparent);
|
|
79
70
|
stroke-width: 4;
|
|
@@ -37,10 +37,6 @@ import{css}from"lit";const styles=css`
|
|
|
37
37
|
}
|
|
38
38
|
.card {
|
|
39
39
|
flex: 1 1 auto;
|
|
40
|
-
/* The single source of the card's minimum width -- a second min-inline-size declaration later
|
|
41
|
-
in this same rule would win outright and make --lr-flow-node-min-inline-size dead, which is
|
|
42
|
-
exactly what a stray "min-inline-size: 0" here used to do. The host caps itself at
|
|
43
|
-
max-inline-size: 100%, so a narrow allocation still wraps rather than overflowing. */
|
|
44
40
|
min-inline-size: var(--lr-flow-node-min-inline-size, calc(var(--lr-size-10rem) + var(--lr-size-1rem)));
|
|
45
41
|
display: flex;
|
|
46
42
|
flex-direction: column;
|
|
@@ -49,21 +45,8 @@ import{css}from"lit";const styles=css`
|
|
|
49
45
|
border: var(--lr-border-width-thin) solid var(--lr-color-border);
|
|
50
46
|
border-radius: var(--lr-radius);
|
|
51
47
|
background: var(--lr-color-surface);
|
|
52
|
-
/* Resting chrome: a node card sits on the canvas, so it takes a card step -- s rather than xs
|
|
53
|
-
because it has to separate from a patterned/gridded canvas background, not a flat panel. */
|
|
54
48
|
box-shadow: var(--lr-shadow-s);
|
|
55
49
|
}
|
|
56
|
-
/* Density escape -- same convention as lr-source-card's compact. The tuned values sit behind
|
|
57
|
-
inline var() fallbacks (rather than a :host declaration, which every instance re-declares and
|
|
58
|
-
so shadows any ancestor value) so a canvas or palette can retune every card at once from the
|
|
59
|
-
outside; the fallbacks are the pre-existing values scaled down one step, so an unset card
|
|
60
|
-
renders unchanged.
|
|
61
|
-
|
|
62
|
-
Deliberately placed BEFORE the :host([selected]) and :host([status='running']) rules below:
|
|
63
|
-
all three are :host([x]) .card, i.e. equal specificity, so source order alone decides. They
|
|
64
|
-
carry the state treatments (border-color, the run-state ring) while this one carries only
|
|
65
|
-
density (padding/gap), so nothing collides today -- keeping the state rules last means a
|
|
66
|
-
future border/shadow tweak here still can't silently win over selection or run state. */
|
|
67
50
|
:host([compact]) .card {
|
|
68
51
|
padding: var(--lr-flow-node-compact-padding, var(--lr-space-xs));
|
|
69
52
|
gap: var(--lr-flow-node-compact-gap, var(--lr-space-2xs));
|
|
@@ -129,10 +112,6 @@ import{css}from"lit";const styles=css`
|
|
|
129
112
|
justify-content: flex-end;
|
|
130
113
|
opacity: 0;
|
|
131
114
|
}
|
|
132
|
-
/* no-pressed-state: the toolbar is not a target -- it is the container the consumer slots the
|
|
133
|
-
node's own action buttons into, and hovering/focusing the CARD is what reveals it. Pressing it
|
|
134
|
-
means pressing one of those buttons, which carries its own pressed state; a pressed treatment
|
|
135
|
-
on the container would fire for every one of them and say nothing about which. */
|
|
136
115
|
:host(:hover) [part='toolbar'],
|
|
137
116
|
:host(:focus-within) [part='toolbar'] {
|
|
138
117
|
opacity: 1;
|
|
@@ -144,8 +123,6 @@ import{css}from"lit";const styles=css`
|
|
|
144
123
|
border-color: var(--lr-flow-node-running-border, var(--lr-color-brand));
|
|
145
124
|
box-shadow: 0 0 0 var(--lr-size-2px) var(--lr-flow-node-running-glow, var(--lr-color-brand-quiet));
|
|
146
125
|
}
|
|
147
|
-
/* The JS gate only evaluates the preference at render time; this CSS branch also covers a
|
|
148
|
-
preference change while an already-rendered card is still pulsing. */
|
|
149
126
|
@media (prefers-reduced-motion: reduce) {
|
|
150
127
|
.card[data-pulse] {
|
|
151
128
|
animation: none;
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
var __decorate=function(decorators,target,key,desc){var c=arguments.length,r=c<3?target:desc===null?desc=Object.getOwnPropertyDescriptor(target,key):desc,d;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")r=Reflect.decorate(decorators,target,key,desc);else for(var i=decorators.length-1;i>=0;i--)(d=decorators[i])&&(r=(c<3?d(r):c>3?d(target,key,r):d(target,key))||r);return c>3&&r&&Object.defineProperty(target,key,r),r};import{html}from"lit";import{property,state}from"lit/decorators.js";import{LyraElement}from"../../../internal/lyra-element.js";import{srOnly}from"../../../internal/a11y.js";import{Announcer,acquireAnnouncementSink}from"../../../internal/announcer.js";import{getListFormat,getNumberFormat}from"../../../internal/intl-cache.js";import{snapshotFlowDecorations}from"../flow-canvas/flow-model.js";import{FlowCanvasCompanionController}from"../flow-canvas/flow-companion-controller.js";import{styles}from"./flow-run-status.styles.js";import{LYRA_DEFAULT_flowRunStatusCount,LYRA_DEFAULT_flowRunStatusLabel,LYRA_DEFAULT_flowRunStepStatus,LYRA_DEFAULT_flowRunSummary,LYRA_DEFAULT_statusDenied,LYRA_DEFAULT_statusError,LYRA_DEFAULT_statusPending,LYRA_DEFAULT_statusRunning,LYRA_DEFAULT_statusSuccess}from"../../../internal/default-strings.generated.js";const ALL_STATUSES=["pending","running","success","error","denied"],DONE_STATUSES=new Set(["success","error","denied"]);function isFlowCanvasLike(element){const candidate=element;return"decorations"in candidate&&Array.isArray(candidate.nodes)}class LyraFlowRunStatus extends LyraElement{constructor(){super(...arguments),this.for="",this._decorations=Object.freeze({}),this.hideSummary=!1,this.label="",this.frame="card",this.liveText="",this.announcer=new Announcer({onFlush:text=>{this.sink?.announce(text),this.liveText=text}}),this.companionController=new FlowCanvasCompanionController(this,isFlowCanvasLike,next=>this.attachCanvas(next)),this.lastWrittenDecorations=null}static{this.defaultStrings={...super.defaultStrings,flowRunStatusCount:LYRA_DEFAULT_flowRunStatusCount,flowRunStatusLabel:LYRA_DEFAULT_flowRunStatusLabel,flowRunStepStatus:LYRA_DEFAULT_flowRunStepStatus,flowRunSummary:LYRA_DEFAULT_flowRunSummary,statusDenied:LYRA_DEFAULT_statusDenied,statusError:LYRA_DEFAULT_statusError,statusPending:LYRA_DEFAULT_statusPending,statusRunning:LYRA_DEFAULT_statusRunning,statusSuccess:LYRA_DEFAULT_statusSuccess}}static{this.styles=[LyraElement.styles,styles,srOnly]}get decorations(){return this._decorations}set decorations(value){const previous=this._decorations;this._decorations=snapshotFlowDecorations(value),this.requestUpdate("decorations",previous)}connectedCallback(){super.connectedCallback();const ownerWindow=this.ownerDocument.defaultView;ownerWindow&&this.announcer.setTimerHost(ownerWindow),this.syncSink(),this.companionController.connect()}disconnectedCallback(){super.disconnectedCallback(),this.companionController.disconnect(),this.announcer.cancel(),this.sink?.release(),this.sink=void 0}adoptedCallback(){super.adoptedCallback();const ownerWindow=this.ownerDocument.defaultView;ownerWindow&&this.announcer.setTimerHost(ownerWindow),this.syncSink(),this.companionController.adopt()}syncSink(){this.sink?.element.ownerDocument!==this.ownerDocument&&(this.sink?.release(),this.sink=this.isConnected?acquireAnnouncementSink("polite",{document:this.ownerDocument,source:this}):void 0)}willUpdate(changed){super.willUpdate(changed),this.hasUpdated&&changed.has("for")&&this.companionController.targetIdChanged(),changed.has("decorations")&&this.announceTransitions(changed.get("decorations"))}updated(changed){super.updated(changed),changed.has("decorations")&&this.applyDecorations()}attachCanvas(next){this.canvasEl&&this.canvasEl.decorations===this.lastWrittenDecorations&&(this.canvasEl.decorations=null),this.canvasEl=next??void 0,this.lastWrittenDecorations=null,this.applyDecorations()}applyDecorations(){if(!this.canvasEl)return;const current=this.canvasEl.decorations;this.lastWrittenDecorations!==null&¤t!==null&¤t!==this.lastWrittenDecorations&&console.warn("<lr-flow-run-status> is overwriting <lr-flow-canvas>.decorations set by something else; mixing this element with direct decorations writes is unsupported."),this.canvasEl.decorations=this.decorations,this.lastWrittenDecorations=this.canvasEl.decorations}statusLabel(status){return status==="pending"?this.localize("statusPending"):status==="running"?this.localize("statusRunning"):status==="success"?this.localize("statusSuccess"):status==="error"?this.localize("statusError"):this.localize("statusDenied")}announceTransitions(previous){if(!previous)return;const messages=[];for(const[id,decoration]of Object.entries(this.decorations)){if(previous[id]?.status===decoration.status)continue;const node=this.canvasEl?.nodes.find(n=>n.id===id),label=typeof node?.data?.label=="string"?node.data.label:id;messages.push(this.localize("flowRunStepStatus",void 0,{label,status:this.statusLabel(decoration.status)}))}messages.length>0&&this.announcer.announce(getListFormat(this.effectiveLocale,{type:"conjunction",style:"long"}).format(messages),{force:!0})}summary(){const counts={pending:0,running:0,success:0,error:0,denied:0};let total=0,done=0;for(const decoration of Object.values(this.decorations))total++,counts[decoration.status]++,DONE_STATUSES.has(decoration.status)&&done++;return{done,total,counts}}render(){const label=this.label||this.localize("flowRunStatusLabel"),ariaLabel=this
|
|
1
|
+
var __decorate=function(decorators,target,key,desc){var c=arguments.length,r=c<3?target:desc===null?desc=Object.getOwnPropertyDescriptor(target,key):desc,d;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")r=Reflect.decorate(decorators,target,key,desc);else for(var i=decorators.length-1;i>=0;i--)(d=decorators[i])&&(r=(c<3?d(r):c>3?d(target,key,r):d(target,key))||r);return c>3&&r&&Object.defineProperty(target,key,r),r};import{html}from"lit";import{property,state}from"lit/decorators.js";import{LyraElement}from"../../../internal/lyra-element.js";import{hostAriaLabel,srOnly}from"../../../internal/a11y.js";import{Announcer,acquireAnnouncementSink}from"../../../internal/announcer.js";import{getListFormat,getNumberFormat}from"../../../internal/intl-cache.js";import{snapshotFlowDecorations}from"../flow-canvas/flow-model.js";import{FlowCanvasCompanionController}from"../flow-canvas/flow-companion-controller.js";import{styles}from"./flow-run-status.styles.js";import{LYRA_DEFAULT_flowRunStatusCount,LYRA_DEFAULT_flowRunStatusLabel,LYRA_DEFAULT_flowRunStepStatus,LYRA_DEFAULT_flowRunSummary,LYRA_DEFAULT_statusDenied,LYRA_DEFAULT_statusError,LYRA_DEFAULT_statusPending,LYRA_DEFAULT_statusRunning,LYRA_DEFAULT_statusSuccess}from"../../../internal/default-strings.generated.js";const ALL_STATUSES=["pending","running","success","error","denied"],DONE_STATUSES=new Set(["success","error","denied"]);function isFlowCanvasLike(element){const candidate=element;return"decorations"in candidate&&Array.isArray(candidate.nodes)}class LyraFlowRunStatus extends LyraElement{constructor(){super(...arguments),this.for="",this._decorations=Object.freeze({}),this.hideSummary=!1,this.label="",this.frame="card",this.liveText="",this.announcer=new Announcer({onFlush:text=>{this.sink?.announce(text),this.liveText=text}}),this.companionController=new FlowCanvasCompanionController(this,isFlowCanvasLike,next=>this.attachCanvas(next)),this.lastWrittenDecorations=null}static{this.defaultStrings={...super.defaultStrings,flowRunStatusCount:LYRA_DEFAULT_flowRunStatusCount,flowRunStatusLabel:LYRA_DEFAULT_flowRunStatusLabel,flowRunStepStatus:LYRA_DEFAULT_flowRunStepStatus,flowRunSummary:LYRA_DEFAULT_flowRunSummary,statusDenied:LYRA_DEFAULT_statusDenied,statusError:LYRA_DEFAULT_statusError,statusPending:LYRA_DEFAULT_statusPending,statusRunning:LYRA_DEFAULT_statusRunning,statusSuccess:LYRA_DEFAULT_statusSuccess}}static{this.styles=[LyraElement.styles,styles,srOnly]}get decorations(){return this._decorations}set decorations(value){const previous=this._decorations;this._decorations=snapshotFlowDecorations(value),this.requestUpdate("decorations",previous)}connectedCallback(){super.connectedCallback();const ownerWindow=this.ownerDocument.defaultView;ownerWindow&&this.announcer.setTimerHost(ownerWindow),this.syncSink(),this.companionController.connect()}disconnectedCallback(){super.disconnectedCallback(),this.companionController.disconnect(),this.announcer.cancel(),this.sink?.release(),this.sink=void 0}adoptedCallback(){super.adoptedCallback();const ownerWindow=this.ownerDocument.defaultView;ownerWindow&&this.announcer.setTimerHost(ownerWindow),this.syncSink(),this.companionController.adopt()}syncSink(){this.sink?.element.ownerDocument!==this.ownerDocument&&(this.sink?.release(),this.sink=this.isConnected?acquireAnnouncementSink("polite",{document:this.ownerDocument,source:this}):void 0)}willUpdate(changed){super.willUpdate(changed),this.hasUpdated&&changed.has("for")&&this.companionController.targetIdChanged(),changed.has("decorations")&&this.announceTransitions(changed.get("decorations"))}updated(changed){super.updated(changed),changed.has("decorations")&&this.applyDecorations()}attachCanvas(next){this.canvasEl&&this.canvasEl.decorations===this.lastWrittenDecorations&&(this.canvasEl.decorations=null),this.canvasEl=next??void 0,this.lastWrittenDecorations=null,this.applyDecorations()}applyDecorations(){if(!this.canvasEl)return;const current=this.canvasEl.decorations;this.lastWrittenDecorations!==null&¤t!==null&¤t!==this.lastWrittenDecorations&&console.warn("<lr-flow-run-status> is overwriting <lr-flow-canvas>.decorations set by something else; mixing this element with direct decorations writes is unsupported."),this.canvasEl.decorations=this.decorations,this.lastWrittenDecorations=this.canvasEl.decorations}statusLabel(status){return status==="pending"?this.localize("statusPending"):status==="running"?this.localize("statusRunning"):status==="success"?this.localize("statusSuccess"):status==="error"?this.localize("statusError"):this.localize("statusDenied")}announceTransitions(previous){if(!previous)return;const messages=[];for(const[id,decoration]of Object.entries(this.decorations)){if(previous[id]?.status===decoration.status)continue;const node=this.canvasEl?.nodes.find(n=>n.id===id),label=typeof node?.data?.label=="string"?node.data.label:id;messages.push(this.localize("flowRunStepStatus",void 0,{label,status:this.statusLabel(decoration.status)}))}messages.length>0&&this.announcer.announce(getListFormat(this.effectiveLocale,{type:"conjunction",style:"long"}).format(messages),{force:!0})}summary(){const counts={pending:0,running:0,success:0,error:0,denied:0};let total=0,done=0;for(const decoration of Object.values(this.decorations))total++,counts[decoration.status]++,DONE_STATUSES.has(decoration.status)&&done++;return{done,total,counts}}render(){const label=this.label||this.localize("flowRunStatusLabel"),ariaLabel=hostAriaLabel(this)??label,{done,total,counts}=this.summary(),number=getNumberFormat(this.effectiveLocale);return html`<div part="base" role="group" aria-label=${ariaLabel}>
|
|
2
2
|
${this.hideSummary?"":html`
|
|
3
3
|
<div part="summary">${this.localize("flowRunSummary",void 0,{done:number.format(done),total:number.format(total)})}</div>
|
|
4
4
|
${ALL_STATUSES.filter(s=>counts[s]>0).map(s=>html`<span part="count" data-status=${s}><span class="tone-dot"></span>${this.localize("flowRunStatusCount",void 0,{status:this.statusLabel(s),count:number.format(counts[s])})}</span>`)}
|
|
@@ -14,18 +14,11 @@ import{css}from"lit";const styles=css`
|
|
|
14
14
|
border: var(--lr-border-width-thin) solid var(--lr-color-border);
|
|
15
15
|
border-radius: var(--lr-radius);
|
|
16
16
|
background: var(--lr-color-surface);
|
|
17
|
-
/* Resting chrome, despite the element's name: this is an in-flow status strip (the host is a
|
|
18
|
-
plain display:block box with no positioning of its own, and it is usually dropped into a
|
|
19
|
-
toolbar next to the canvas), not a layer floating above the page. */
|
|
20
17
|
box-shadow: var(--lr-shadow-s);
|
|
21
18
|
font-size: var(--lr-font-size-xs);
|
|
22
19
|
min-inline-size: 0;
|
|
23
20
|
max-inline-size: 100%;
|
|
24
21
|
}
|
|
25
|
-
/* Chrome-less escape, mirroring the shared LyraFrame vocabulary's frame="plain" (and lr-callout's [inline]): the
|
|
26
|
-
summary strip is often placed directly inside a host toolbar that already draws its own
|
|
27
|
-
border/background, where this floating-surface chrome doubles the frame. Only the box
|
|
28
|
-
decoration goes -- the flex layout, gap and the per-status count dots stay. */
|
|
29
22
|
:host([frame='plain']) [part='base'] {
|
|
30
23
|
padding: 0;
|
|
31
24
|
border: 0;
|
|
@@ -305,13 +305,6 @@ export declare class LyraGraphQueryBuilder extends LyraElement<LyraGraphQueryBui
|
|
|
305
305
|
private removalFocusGeneration;
|
|
306
306
|
constructor();
|
|
307
307
|
disconnectedCallback(): void;
|
|
308
|
-
/** `attachInternals()` throws in any environment without a real `ElementInternals`
|
|
309
|
-
* implementation (e.g. a downstream consumer's happy-dom test suite) -- merely constructing
|
|
310
|
-
* (or importing) this component must not hard-crash there. Falls back to an inert stand-in:
|
|
311
|
-
* form participation and validity reporting are unavailable in that environment (there is no
|
|
312
|
-
* polyfillable substitute), but rendering and every non-form-associated feature keep working. */
|
|
313
|
-
private safeAttachInternals;
|
|
314
|
-
private inertInternals;
|
|
315
308
|
get form(): HTMLFormElement | null;
|
|
316
309
|
set form(owner: FormOwnerValue);
|
|
317
310
|
getForm(): HTMLFormElement | null;
|