@aceshooting/lyra-ui 19.0.1 → 20.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 +159 -0
- package/custom-elements.json +1 -1
- package/dist/cli/migration-contract.json +1 -1
- package/dist/components/agent-tools/activity-feed/activity-feed.class.d.ts +14 -4
- package/dist/components/agent-tools/activity-feed/activity-feed.styles.js +1 -1
- package/dist/components/agent-tools/approval-queue/approval-queue.class.d.ts +1 -0
- package/dist/components/agent-tools/approval-queue/approval-queue.class.js +4 -3
- package/dist/components/agent-tools/approval-queue/approval-queue.styles.js +1 -1
- package/dist/components/agent-tools/artifact-panel/artifact-panel.class.d.ts +3 -1
- package/dist/components/agent-tools/context-inspector/context-inspector.class.d.ts +1 -0
- package/dist/components/agent-tools/context-inspector/context-inspector.class.js +4 -3
- package/dist/components/agent-tools/context-inspector/context-inspector.styles.js +1 -1
- package/dist/components/agent-tools/eval-dataset/eval-dataset.class.js +1 -1
- package/dist/components/agent-tools/eval-result/eval-result.class.js +1 -1
- package/dist/components/agent-tools/evaluation-run/evaluation-run.class.d.ts +1 -0
- package/dist/components/agent-tools/evaluation-run/evaluation-run.class.js +4 -3
- package/dist/components/agent-tools/evaluation-run/evaluation-run.styles.js +1 -1
- package/dist/components/agent-tools/policy-summary/policy-summary.class.d.ts +1 -0
- package/dist/components/agent-tools/policy-summary/policy-summary.class.js +4 -3
- package/dist/components/agent-tools/policy-summary/policy-summary.styles.js +1 -1
- package/dist/components/agent-tools/prompt-studio/prompt-studio.class.js +1 -1
- package/dist/components/agent-tools/schema-viewer/schema-viewer.class.d.ts +10 -1
- package/dist/components/agent-tools/schema-viewer/schema-viewer.class.js +3 -3
- package/dist/components/agent-tools/subagent-panel/subagent-panel.class.js +1 -1
- package/dist/components/agent-tools/thinking-panel/thinking-panel.class.d.ts +6 -3
- package/dist/components/agent-tools/thinking-panel/thinking-panel.styles.js +1 -1
- package/dist/components/agent-tools/tool-call-chip/tool-call-chip.class.d.ts +14 -3
- package/dist/components/agent-tools/tool-call-chip/tool-call-chip.class.js +2 -2
- package/dist/components/agent-tools/tool-param-form/tool-param-form.class.d.ts +12 -2
- package/dist/components/agent-tools/tool-param-form/tool-param-form.class.js +3 -1
- package/dist/components/charts/chart/box-plot.class.d.ts +15 -3
- package/dist/components/charts/chart/box-plot.class.js +3 -3
- package/dist/components/charts/chart/box-plot.styles.js +1 -1
- package/dist/components/charts/chart/chart.class.d.ts +23 -5
- package/dist/components/charts/chart/chart.class.js +2 -2
- package/dist/components/charts/chart/chart.styles.js +1 -1
- package/dist/components/charts/chart/lite-chart.class.js +1 -1
- package/dist/components/charts/chart/lite-chart.styles.js +1 -1
- package/dist/components/conversation/audio-visualizer/audio-visualizer.class.d.ts +4 -2
- package/dist/components/conversation/audio-visualizer/audio-visualizer.class.js +1 -1
- package/dist/components/conversation/branch-picker/branch-picker.class.d.ts +4 -2
- package/dist/components/conversation/branch-picker/branch-picker.class.js +1 -1
- package/dist/components/conversation/chat-viewport/chat-viewport.class.d.ts +4 -3
- package/dist/components/conversation/chat-viewport/chat-viewport.class.js +1 -1
- package/dist/components/conversation/code-block/code-block-core.class.d.ts +6 -11
- package/dist/components/conversation/code-block/code-block-core.class.js +1 -1
- package/dist/components/conversation/code-block/code-block-shared.d.ts +29 -1
- package/dist/components/conversation/code-block/code-block-shared.js +1 -1
- package/dist/components/conversation/code-block/code-block.class.d.ts +6 -11
- package/dist/components/conversation/code-block/code-block.class.js +1 -1
- package/dist/components/conversation/markdown/markdown-shared.js +2 -2
- package/dist/components/conversation/message-actions/message-actions.class.d.ts +4 -2
- package/dist/components/conversation/message-actions/message-actions.class.js +2 -2
- package/dist/components/conversation/message-parts/message-parts.class.d.ts +17 -2
- package/dist/components/conversation/model-select/model-select.class.js +1 -0
- package/dist/components/conversation/model-select/model-select.styles.js +1 -1
- package/dist/components/conversation/prompt-input/prompt-input.class.d.ts +5 -1
- package/dist/components/conversation/prompt-input/prompt-input.class.js +2 -2
- package/dist/components/conversation/prompt-queue/prompt-queue.class.d.ts +6 -1
- package/dist/components/conversation/prompt-queue/prompt-queue.class.js +2 -2
- package/dist/components/conversation/realtime-session/realtime-session.class.d.ts +5 -1
- package/dist/components/conversation/realtime-session/realtime-session.class.js +1 -1
- package/dist/components/conversation/selection-toolbar/selection-toolbar.class.d.ts +5 -1
- package/dist/components/conversation/selection-toolbar/selection-toolbar.class.js +1 -1
- package/dist/components/conversation/voice-picker/voice-picker.class.d.ts +13 -2
- package/dist/components/conversation/voice-picker/voice-picker.class.js +5 -3
- package/dist/components/conversation/voice-picker/voice-picker.styles.js +1 -1
- package/dist/components/data/calendar/calendar.class.d.ts +9 -0
- package/dist/components/data/calendar/calendar.class.js +2 -2
- package/dist/components/data/calendar/calendar.styles.js +1 -1
- package/dist/components/data/condition-builder/condition-builder.class.d.ts +5 -1
- package/dist/components/data/context-meter/context-meter.class.d.ts +4 -0
- package/dist/components/data/context-meter/context-meter.styles.js +1 -1
- package/dist/components/data/data-grid/data-grid.class.d.ts +8 -2
- package/dist/components/data/data-grid/data-grid.class.js +1 -2
- package/dist/components/data/flow-node/flow-node.class.d.ts +7 -4
- package/dist/components/data/flow-node/flow-node.styles.js +1 -1
- package/dist/components/data/funnel/funnel.class.d.ts +5 -0
- package/dist/components/data/funnel/funnel.class.js +4 -3
- package/dist/components/data/funnel/funnel.styles.js +1 -1
- package/dist/components/data/gauge/gauge.class.d.ts +12 -1
- package/dist/components/data/gauge/gauge.styles.js +1 -1
- package/dist/components/data/graph-query-builder/graph-query-builder.class.d.ts +50 -13
- package/dist/components/data/graph-query-builder/graph-query-builder.class.js +2 -2
- package/dist/components/data/graph-query-builder/graph-query-builder.styles.js +1 -1
- package/dist/components/data/heatmap/heatmap.class.d.ts +27 -9
- package/dist/components/data/heatmap/heatmap.class.js +5 -3
- package/dist/components/data/sequence-strip/sequence-strip.class.d.ts +2 -0
- package/dist/components/data/sequence-strip/sequence-strip.styles.js +1 -1
- package/dist/components/data/table/table.class.d.ts +8 -0
- package/dist/components/data/table/table.class.js +2 -1
- package/dist/components/data/tree/tree.class.d.ts +20 -1
- package/dist/components/data/tree/tree.class.js +1 -1
- package/dist/components/data/word-cloud/word-cloud.class.d.ts +4 -1
- package/dist/components/data/word-cloud/word-cloud.class.js +2 -2
- package/dist/components/forms/button/button.class.js +1 -1
- package/dist/components/forms/checkbox/checkbox.class.d.ts +11 -8
- package/dist/components/forms/checkbox/checkbox.class.js +1 -1
- package/dist/components/forms/checkbox/checkbox.styles.js +1 -1
- package/dist/components/forms/checkbox-group/checkbox-group.class.d.ts +2 -2
- package/dist/components/forms/checkbox-group/checkbox-group.class.js +1 -1
- package/dist/components/forms/code-editor/code-editor.class.d.ts +2 -0
- package/dist/components/forms/code-editor/code-editor.class.js +1 -1
- package/dist/components/forms/code-editor/code-editor.styles.js +1 -1
- package/dist/components/forms/color-picker/color-picker.class.d.ts +11 -1
- package/dist/components/forms/color-picker/color-picker.class.js +4 -3
- package/dist/components/forms/combobox/combobox.class.d.ts +67 -18
- package/dist/components/forms/combobox/combobox.class.js +7 -6
- package/dist/components/forms/combobox/combobox.styles.js +1 -1
- package/dist/components/forms/date-picker/date-input.class.d.ts +22 -2
- package/dist/components/forms/date-picker/date-input.class.js +4 -2
- package/dist/components/forms/date-picker/date-input.styles.js +1 -1
- package/dist/components/forms/emoji-picker/emoji-data-loader.d.ts +18 -4
- package/dist/components/forms/emoji-picker/emoji-data-loader.js +1 -1
- package/dist/components/forms/emoji-picker/emoji-picker.class.d.ts +18 -4
- package/dist/components/forms/emoji-picker/emoji-picker.class.js +1 -1
- package/dist/components/forms/emoji-picker/emoji-picker.styles.js +1 -1
- package/dist/components/forms/icon-button/icon-button.class.d.ts +1 -1
- package/dist/components/forms/input/time-input.class.d.ts +11 -1
- package/dist/components/forms/input/time-input.class.js +4 -3
- package/dist/components/forms/input/time-input.styles.js +1 -1
- package/dist/components/forms/locale-picker/locale-picker.class.d.ts +17 -3
- package/dist/components/forms/locale-picker/locale-picker.class.js +3 -2
- package/dist/components/forms/locale-picker/locale-picker.styles.js +1 -1
- package/dist/components/forms/otp-input/otp-input.class.d.ts +13 -5
- package/dist/components/forms/otp-input/otp-input.class.js +2 -2
- package/dist/components/forms/otp-input/otp-input.styles.js +1 -1
- package/dist/components/forms/phone-input/phone-input.class.d.ts +10 -3
- package/dist/components/forms/phone-input/phone-input.class.js +6 -2
- package/dist/components/forms/phone-input/phone-input.styles.js +1 -1
- package/dist/components/forms/radio/radio-group.class.d.ts +1 -1
- package/dist/components/forms/radio/radio-group.class.js +2 -2
- package/dist/components/forms/rubric-form/rubric-form.class.d.ts +9 -1
- package/dist/components/forms/rubric-form/rubric-form.class.js +5 -3
- package/dist/components/forms/select/select.class.d.ts +4 -0
- package/dist/components/forms/select/select.styles.js +1 -1
- package/dist/components/forms/slider/slider.class.d.ts +5 -1
- package/dist/components/forms/slider/slider.class.js +3 -3
- package/dist/components/forms/switch/switch.class.d.ts +6 -5
- package/dist/components/forms/switch/switch.class.js +1 -1
- package/dist/components/forms/time-range/time-range.class.d.ts +2 -2
- package/dist/components/forms/token-input/token-input.class.d.ts +13 -3
- package/dist/components/forms/token-input/token-input.class.js +3 -1
- package/dist/components/layout/carousel/carousel.class.d.ts +4 -1
- package/dist/components/layout/carousel/carousel.class.js +1 -1
- package/dist/components/layout/command-palette/command-palette.class.d.ts +8 -2
- package/dist/components/layout/command-palette/command-palette.class.js +1 -1
- package/dist/components/layout/command-palette/command-palette.styles.js +1 -1
- package/dist/components/layout/details/accordion.class.js +1 -1
- package/dist/components/layout/dock-panel/dock-panel.class.d.ts +10 -7
- package/dist/components/layout/dock-panel/dock-panel.class.js +2 -2
- package/dist/components/layout/dock-panel/dock-panel.styles.js +1 -1
- package/dist/components/layout/menu/menu.class.d.ts +13 -3
- package/dist/components/layout/menu/menu.class.js +4 -3
- package/dist/components/layout/menu/menu.styles.js +1 -1
- package/dist/components/layout/page/page.class.d.ts +7 -1
- package/dist/components/layout/reorder-list/reorder-list.class.d.ts +1 -1
- package/dist/components/layout/reorder-list/reorder-list.class.js +1 -1
- package/dist/components/layout/segmented/segmented.class.d.ts +2 -0
- package/dist/components/layout/segmented/segmented.styles.js +1 -1
- package/dist/components/layout/virtual-list/virtual-list.styles.js +1 -1
- package/dist/components/layout/widget/widget.class.d.ts +15 -2
- package/dist/components/layout/widget/widget.class.js +1 -1
- package/dist/components/layout/widget/widget.styles.js +1 -1
- package/dist/components/media/avatar/avatar.class.d.ts +4 -0
- package/dist/components/media/avatar/avatar.styles.js +1 -1
- package/dist/components/media/avatar-group/avatar-group.class.d.ts +8 -1
- package/dist/components/media/avatar-group/avatar-group.styles.js +1 -1
- package/dist/components/media/drop-zone/drop-zone.class.d.ts +10 -4
- package/dist/components/media/drop-zone/drop-zone.class.js +2 -2
- package/dist/components/media/drop-zone/drop-zone.styles.js +1 -1
- package/dist/components/media/flag/flag.class.js +1 -1
- package/dist/components/media/map/map.class.d.ts +19 -5
- package/dist/components/media/map/map.class.js +3 -3
- package/dist/components/media/video-playlist/video-playlist.class.d.ts +6 -3
- package/dist/components/media/video-playlist/video-playlist.class.js +1 -1
- package/dist/components/overlays/callout/callout.class.d.ts +4 -1
- package/dist/components/overlays/dialog/dialog.class.d.ts +4 -1
- package/dist/components/overlays/overlay/overlay.styles.js +1 -1
- package/dist/components/overlays/overlay/popover.class.d.ts +9 -1
- package/dist/components/overlays/overlay/popover.class.js +3 -2
- package/dist/components/overlays/overlay/tooltip.class.d.ts +14 -4
- package/dist/components/overlays/overlay/tooltip.class.js +3 -2
- package/dist/components/overlays/popup/popup.class.d.ts +15 -1
- package/dist/components/overlays/popup/popup.class.js +3 -3
- package/dist/components/overlays/popup/popup.styles.js +1 -1
- package/dist/components/overlays/progress/progress-bar.class.d.ts +2 -0
- package/dist/components/overlays/progress/progress.styles.js +1 -1
- package/dist/components/retrieval/citation-badge/citation-badge.class.d.ts +4 -2
- package/dist/components/retrieval/citation-badge/citation-badge.class.js +1 -1
- package/dist/components/retrieval/claim-evidence/claim-evidence.class.d.ts +4 -0
- package/dist/components/retrieval/claim-evidence/claim-evidence.class.js +4 -3
- package/dist/components/retrieval/claim-evidence/claim-evidence.styles.js +1 -1
- package/dist/components/retrieval/community-card/community-card.class.d.ts +6 -1
- package/dist/components/retrieval/community-card/community-card.styles.js +1 -1
- package/dist/components/retrieval/embedding-explorer/embedding-explorer.class.d.ts +9 -1
- package/dist/components/retrieval/embedding-explorer/embedding-explorer.class.js +4 -3
- package/dist/components/retrieval/entity-card/entity-card.styles.js +1 -1
- package/dist/components/retrieval/entity-chip/entity-chip.class.d.ts +4 -2
- package/dist/components/retrieval/entity-chip/entity-chip.class.js +1 -1
- package/dist/components/retrieval/entity-dossier/entity-dossier.class.js +2 -2
- package/dist/components/retrieval/graph-legend/graph-legend.class.d.ts +18 -4
- package/dist/components/retrieval/graph-legend/graph-legend.class.js +2 -2
- package/dist/components/retrieval/grounding-summary/grounding-summary.class.d.ts +7 -0
- package/dist/components/retrieval/grounding-summary/grounding-summary.class.js +4 -3
- package/dist/components/retrieval/grounding-summary/grounding-summary.styles.js +1 -1
- package/dist/components/retrieval/memory-panel/memory-panel.class.d.ts +6 -0
- package/dist/components/retrieval/memory-panel/memory-panel.class.js +4 -3
- package/dist/components/retrieval/memory-panel/memory-panel.styles.js +1 -1
- package/dist/components/retrieval/mind-map/mind-map-layout.d.ts +17 -1
- package/dist/components/retrieval/mind-map/mind-map-layout.js +1 -1
- package/dist/components/retrieval/mind-map/mind-map.class.d.ts +8 -1
- package/dist/components/retrieval/mind-map/mind-map.class.js +3 -2
- package/dist/components/retrieval/rag-eval-dashboard/rag-eval-dashboard.class.d.ts +5 -0
- package/dist/components/retrieval/rag-eval-dashboard/rag-eval-dashboard.class.js +6 -5
- package/dist/components/retrieval/rag-eval-dashboard/rag-eval-dashboard.styles.js +1 -1
- package/dist/components/retrieval/retrieval-compare/retrieval-compare.class.js +5 -5
- package/dist/components/retrieval/retrieval-compare/retrieval-compare.styles.js +1 -1
- package/dist/components/retrieval/source-list/source-list.class.d.ts +21 -2
- package/dist/components/retrieval/source-list/source-list.class.js +2 -2
- package/dist/components/retrieval/source-list/source-list.styles.js +1 -1
- package/dist/components/retrieval/source-picker/source-picker.class.d.ts +3 -1
- package/dist/components/retrieval/source-picker/source-picker.class.js +2 -2
- package/dist/components/utility/diff-view/diff-view.class.d.ts +105 -8
- package/dist/components/utility/diff-view/diff-view.class.js +21 -5
- package/dist/components/utility/diff-view/diff-view.styles.js +1 -1
- package/dist/components/utility/export-button/export-button.class.d.ts +26 -2
- package/dist/components/utility/export-button/export-button.class.js +4 -2
- package/dist/components/utility/export-button/export-button.styles.js +1 -1
- package/dist/components/utility/mention-popover/mention-popover.class.d.ts +19 -1
- package/dist/components/utility/mention-popover/mention-popover.class.js +3 -2
- package/dist/components/utility/mention-popover/mention-popover.styles.js +1 -1
- package/dist/components/utility/tour/tour.class.d.ts +1 -3
- package/dist/components/utility/tour/tour.class.js +1 -1
- package/dist/components/viewers/archive-viewer/archive-viewer.class.d.ts +20 -3
- package/dist/components/viewers/archive-viewer/archive-viewer.class.js +1 -1
- package/dist/components/viewers/ebook-viewer/ebook-viewer.class.js +1 -1
- package/dist/components/viewers/geojson-view/geojson-view.styles.js +1 -1
- package/dist/components/viewers/geojson-view/geojson-viewer.class.d.ts +5 -0
- package/dist/components/viewers/geojson-view/geojson-viewer.class.js +6 -3
- package/dist/components/viewers/pdf-viewer/pdf-viewer.class.d.ts +7 -1
- package/dist/components/viewers/pdf-viewer/pdf-viewer.class.js +1 -1
- package/dist/components/viewers/pptx-viewer/pptx-viewer.class.d.ts +7 -1
- package/dist/components/viewers/pptx-viewer/pptx-viewer.class.js +1 -1
- package/dist/components/viewers/xml-viewer/xml-viewer.class.d.ts +5 -0
- package/dist/components/viewers/xml-viewer/xml-viewer.class.js +1 -1
- package/dist/custom-elements-jsx.d.ts +1 -1
- package/dist/events.d.ts +79 -30
- package/dist/internal/accessibility-visibility.js +1 -1
- package/dist/internal/aria-reflection.js +1 -1
- package/dist/internal/catalog-picker.d.ts +14 -3
- package/dist/internal/catalog-picker.js +1 -1
- package/dist/internal/default-strings.generated.d.ts +1 -1
- package/dist/internal/default-strings.generated.js +2 -2
- package/dist/internal/localization-types.d.ts +1 -1
- package/dist/internal/localization.js +2 -2
- package/dist/internal/lyra-element.d.ts +17 -0
- package/dist/internal/lyra-element.js +2 -2
- package/dist/internal/package-metadata.d.ts +1 -1
- package/dist/internal/package-metadata.js +1 -1
- package/dist/svelte.d.ts +1 -1
- package/dist/testing/lyra-tag-event-map.js +1 -1
- package/dist/translations/ar/agent-tools.js +1 -1
- package/dist/translations/ar/data.js +1 -1
- package/dist/translations/ar/retrieval.js +1 -1
- package/dist/translations/ar/shared.js +1 -1
- package/dist/translations/ar/viewers.js +1 -1
- package/dist/translations/de/agent-tools.js +1 -1
- package/dist/translations/de/data.js +1 -1
- package/dist/translations/de/retrieval.js +1 -1
- package/dist/translations/de/shared.js +1 -1
- package/dist/translations/de/viewers.js +1 -1
- package/dist/translations/es/agent-tools.js +1 -1
- package/dist/translations/es/data.js +1 -1
- package/dist/translations/es/retrieval.js +1 -1
- package/dist/translations/es/shared.js +1 -1
- package/dist/translations/es/viewers.js +1 -1
- package/dist/translations/fa/agent-tools.js +1 -1
- package/dist/translations/fa/data.js +1 -1
- package/dist/translations/fa/retrieval.js +1 -1
- package/dist/translations/fa/shared.js +1 -1
- package/dist/translations/fa/viewers.js +1 -1
- package/dist/translations/fr/agent-tools.js +1 -1
- package/dist/translations/fr/data.js +1 -1
- package/dist/translations/fr/retrieval.js +1 -1
- package/dist/translations/fr/shared.js +1 -1
- package/dist/translations/fr/viewers.js +1 -1
- package/dist/translations/he/agent-tools.js +1 -1
- package/dist/translations/he/data.js +1 -1
- package/dist/translations/he/retrieval.js +1 -1
- package/dist/translations/he/shared.js +1 -1
- package/dist/translations/he/viewers.js +1 -1
- package/dist/translations/it/agent-tools.js +1 -1
- package/dist/translations/it/data.js +1 -1
- package/dist/translations/it/retrieval.js +1 -1
- package/dist/translations/it/shared.js +1 -1
- package/dist/translations/it/viewers.js +1 -1
- package/dist/translations/ja/agent-tools.js +1 -1
- package/dist/translations/ja/data.js +1 -1
- package/dist/translations/ja/retrieval.js +1 -1
- package/dist/translations/ja/shared.js +1 -1
- package/dist/translations/ja/viewers.js +1 -1
- package/dist/translations/pt-BR/agent-tools.js +1 -1
- package/dist/translations/pt-BR/data.js +1 -1
- package/dist/translations/pt-BR/retrieval.js +1 -1
- package/dist/translations/pt-BR/shared.js +1 -1
- package/dist/translations/pt-BR/viewers.js +1 -1
- package/dist/translations/ro/agent-tools.js +1 -1
- package/dist/translations/ro/data.js +1 -1
- package/dist/translations/ro/retrieval.js +1 -1
- package/dist/translations/ro/shared.js +1 -1
- package/dist/translations/ro/viewers.js +1 -1
- package/dist/translations/ru/agent-tools.js +1 -1
- package/dist/translations/ru/data.js +1 -1
- package/dist/translations/ru/retrieval.js +1 -1
- package/dist/translations/ru/shared.js +1 -1
- package/dist/translations/ru/viewers.js +1 -1
- package/dist/translations/zh-CN/agent-tools.js +1 -1
- package/dist/translations/zh-CN/data.js +1 -1
- package/dist/translations/zh-CN/retrieval.js +1 -1
- package/dist/translations/zh-CN/shared.js +1 -1
- package/dist/translations/zh-CN/viewers.js +1 -1
- package/dist/vue.d.ts +1 -1
- package/llms/components/lr-activity-feed.md +20 -9
- package/llms/components/lr-approval-queue.md +3 -2
- package/llms/components/lr-archive-viewer.md +8 -1
- package/llms/components/lr-artifact-panel.md +3 -1
- package/llms/components/lr-audio-visualizer.md +3 -1
- package/llms/components/lr-avatar-group.md +13 -6
- package/llms/components/lr-avatar.md +6 -2
- package/llms/components/lr-bar-chart.md +6 -3
- package/llms/components/lr-box-plot.md +6 -2
- package/llms/components/lr-branch-picker.md +3 -1
- package/llms/components/lr-bubble-chart.md +6 -3
- package/llms/components/lr-calendar.md +10 -3
- package/llms/components/lr-carousel.md +4 -2
- package/llms/components/lr-chart.md +12 -4
- package/llms/components/lr-chat-viewport.md +3 -2
- package/llms/components/lr-checkbox.md +8 -5
- package/llms/components/lr-citation-badge.md +2 -0
- package/llms/components/lr-claim-evidence.md +6 -2
- package/llms/components/lr-code-editor.md +3 -1
- package/llms/components/lr-color-picker.md +20 -8
- package/llms/components/lr-combobox.md +26 -3
- package/llms/components/lr-command-palette.md +6 -3
- package/llms/components/lr-community-card.md +7 -4
- package/llms/components/lr-context-inspector.md +3 -2
- package/llms/components/lr-context-meter.md +13 -5
- package/llms/components/lr-data-grid.md +2 -0
- package/llms/components/lr-date-input.md +12 -3
- package/llms/components/lr-date-picker.md +11 -2
- package/llms/components/lr-diff-view.md +46 -5
- package/llms/components/lr-doughnut-chart.md +6 -3
- package/llms/components/lr-drop-zone.md +7 -3
- package/llms/components/lr-embedding-explorer.md +8 -2
- package/llms/components/lr-emoji-picker.md +5 -1
- package/llms/components/lr-entity-chip.md +2 -0
- package/llms/components/lr-eval-run.md +3 -2
- package/llms/components/lr-export-button.md +5 -2
- package/llms/components/lr-flow-node.md +7 -4
- package/llms/components/lr-funnel.md +7 -2
- package/llms/components/lr-gauge.md +7 -2
- package/llms/components/lr-geojson-view.md +10 -2
- package/llms/components/lr-geojson-viewer.md +10 -2
- package/llms/components/lr-graph-legend.md +6 -3
- package/llms/components/lr-graph-query-builder.md +21 -11
- package/llms/components/lr-grounding-summary.md +8 -2
- package/llms/components/lr-heatmap.md +5 -2
- package/llms/components/lr-histogram.md +4 -2
- package/llms/components/lr-json-schema-viewer.md +7 -5
- package/llms/components/lr-line-chart.md +6 -3
- package/llms/components/lr-locale-picker.md +4 -1
- package/llms/components/lr-map.md +5 -3
- package/llms/components/lr-memory-panel.md +6 -2
- package/llms/components/lr-mention-popover.md +7 -4
- package/llms/components/lr-message-actions.md +3 -1
- package/llms/components/lr-message-parts.md +8 -2
- package/llms/components/lr-mind-map.md +11 -2
- package/llms/components/lr-option.md +25 -2
- package/llms/components/lr-otp-input.md +3 -1
- package/llms/components/lr-phone-input.md +9 -5
- package/llms/components/lr-pie-chart.md +6 -3
- package/llms/components/lr-polar-area-chart.md +6 -3
- package/llms/components/lr-policy-summary.md +3 -2
- package/llms/components/lr-progress-bar.md +4 -1
- package/llms/components/lr-prompt-input.md +4 -1
- package/llms/components/lr-prompt-queue.md +5 -2
- package/llms/components/lr-radar-chart.md +6 -3
- package/llms/components/lr-rag-eval-dashboard.md +7 -2
- package/llms/components/lr-realtime-session.md +3 -1
- package/llms/components/lr-rubric-form.md +6 -1
- package/llms/components/lr-scatter-chart.md +6 -3
- package/llms/components/lr-segmented.md +3 -1
- package/llms/components/lr-select.md +7 -1
- package/llms/components/lr-selection-toolbar.md +4 -1
- package/llms/components/lr-sequence-strip.md +7 -3
- package/llms/components/lr-source-card.md +16 -1
- package/llms/components/lr-source-list.md +17 -2
- package/llms/components/lr-source-picker.md +3 -1
- package/llms/components/lr-subagent-panel.md +6 -3
- package/llms/components/lr-switch.md +4 -3
- package/llms/components/lr-table.md +6 -1
- package/llms/components/lr-thinking-panel.md +8 -5
- package/llms/components/lr-token-input.md +15 -1
- package/llms/components/lr-tool-call-chip.md +2 -0
- package/llms/components/lr-tool-param-form.md +15 -4
- package/llms/components/lr-tooltip.md +8 -4
- package/llms/components/lr-trace-tree.md +7 -4
- package/llms/components/lr-video-playlist.md +7 -5
- package/llms/components/lr-voice-picker.md +7 -4
- package/llms/components/lr-widget.md +15 -2
- package/llms/migration.md +4 -4
- package/llms-full.txt +552 -159
- package/package.json +11 -9
- package/registrations.json +1 -1
- package/vscode-css-data.json +1 -1
- package/vscode-html-data.json +1 -1
- package/web-types.json +1 -1
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
var __decorate=function(decorators,target,key,desc){var c=arguments.length,r=c<3?target:desc===null?desc=Object.getOwnPropertyDescriptor(target,key):desc,d;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")r=Reflect.decorate(decorators,target,key,desc);else for(var i=decorators.length-1;i>=0;i--)(d=decorators[i])&&(r=(c<3?d(r):c>3?d(target,key,r):d(target,key))||r);return c>3&&r&&Object.defineProperty(target,key,r),r};import{html,nothing}from"lit";import{property,state}from"lit/decorators.js";import{LyraElement}from"../../../internal/lyra-element.js";import{getOwnDataDescriptor,MISSING_OWN_DATA_DESCRIPTOR,UNSAFE_OWN_DATA_DESCRIPTOR}from"../../../internal/data-descriptors.js";import{nextId}from"../../../internal/a11y.js";import{getNumberFormat}from"../../../internal/intl-cache.js";import"../provenance-panel/provenance-panel.class.js";import"../../agent-tools/confirm-bar/confirm-bar.class.js";import"../../overlays/empty/empty.class.js";import{styles}from"./memory-panel.styles.js";import{retrievalSemanticLabel,retrievalSemanticRole}from"../retrieval-semantic-owner.js";import{activeElementIn}from"../../../internal/active-element.js";import{LYRA_DEFAULT_approve,LYRA_DEFAULT_citationHighConfidence,LYRA_DEFAULT_citationLowConfidence,LYRA_DEFAULT_citationMediumConfidence,LYRA_DEFAULT_collapse,LYRA_DEFAULT_deny,LYRA_DEFAULT_details,LYRA_DEFAULT_fieldRequired,LYRA_DEFAULT_map,LYRA_DEFAULT_memoryPanelAdd,LYRA_DEFAULT_memoryPanelAddWithContext,LYRA_DEFAULT_memoryPanelConfirmAddHeading,LYRA_DEFAULT_memoryPanelConfirmForgetBody,LYRA_DEFAULT_memoryPanelConfirmForgetHeading,LYRA_DEFAULT_memoryPanelConfirmRemoveHeading,LYRA_DEFAULT_memoryPanelForgetAll,LYRA_DEFAULT_memoryPanelLabel,LYRA_DEFAULT_memoryPanelLongTermHeading,LYRA_DEFAULT_memoryPanelShortTermHeading,LYRA_DEFAULT_navigation,LYRA_DEFAULT_noData,LYRA_DEFAULT_open,LYRA_DEFAULT_popover,LYRA_DEFAULT_progress,LYRA_DEFAULT_remove,LYRA_DEFAULT_removeWithContext,LYRA_DEFAULT_restore,LYRA_DEFAULT_search,LYRA_DEFAULT_select,LYRA_DEFAULT_showLess,LYRA_DEFAULT_showMore}from"../../../internal/default-strings.generated.js";const MAX_PROJECTED_MEMORY_ITEMS=1e4,EMPTY_CANONICAL_MEMORIES=Object.freeze([]);function descriptorValue(value,property2){return getOwnDataDescriptor(value,property2)}function valueOfDescriptor(descriptor){return descriptor===MISSING_OWN_DATA_DESCRIPTOR||descriptor===UNSAFE_OWN_DATA_DESCRIPTOR?void 0:descriptor.value}function projectMemory(value){try{if(value===null||typeof value!="object"||Array.isArray(value))return;const idDescriptor=descriptorValue(value,"id"),textDescriptor=descriptorValue(value,"text"),confidenceDescriptor=descriptorValue(value,"confidence"),provenanceDescriptor=descriptorValue(value,"provenance");if([idDescriptor,textDescriptor,confidenceDescriptor,provenanceDescriptor].some(descriptor=>descriptor===UNSAFE_OWN_DATA_DESCRIPTOR))return;const id=valueOfDescriptor(idDescriptor),text=valueOfDescriptor(textDescriptor);if(typeof id!="string"||id.trim().length===0||typeof text!="string"||text.trim().length===0)return;const confidence=valueOfDescriptor(confidenceDescriptor),provenance=valueOfDescriptor(provenanceDescriptor);return Object.freeze({source:value,id,text,...typeof confidence=="number"&&Number.isFinite(confidence)?{confidence}:{},...provenance===void 0?{}:{provenance}})}catch{return}}function projectMemories(value){try{if(!Array.isArray(value))return EMPTY_CANONICAL_MEMORIES;const lengthDescriptor=descriptorValue(value,"length");if(lengthDescriptor===MISSING_OWN_DATA_DESCRIPTOR||lengthDescriptor===UNSAFE_OWN_DATA_DESCRIPTOR||typeof lengthDescriptor.value!="number"||!Number.isSafeInteger(lengthDescriptor.value)||lengthDescriptor.value<0)return EMPTY_CANONICAL_MEMORIES;const memories=[],seen=new Set,length=Math.min(lengthDescriptor.value,MAX_PROJECTED_MEMORY_ITEMS);for(let index=0;index<length;index+=1){const descriptor=descriptorValue(value,String(index));if(descriptor===MISSING_OWN_DATA_DESCRIPTOR||descriptor===UNSAFE_OWN_DATA_DESCRIPTOR)continue;const memory=projectMemory(descriptor.value);!memory||seen.has(memory.id)||(seen.add(memory.id),memories.push(memory))}return Object.freeze(memories)}catch{return EMPTY_CANONICAL_MEMORIES}}const CONFIRM_HEADING_KEY={add:"memoryPanelConfirmAddHeading",remove:"memoryPanelConfirmRemoveHeading","forget-all":"memoryPanelConfirmForgetHeading"},TIER_LABEL_KEY={high:"citationHighConfidence",medium:"citationMediumConfidence",low:"citationLowConfidence"},TIER_TONE={high:"success",medium:"warning",low:"danger"};class LyraMemoryPanel extends LyraElement{constructor(){super(...arguments),this.shortTerm=[],this.longTerm=[],this.types=[],this.thresholds={high:.75,medium:.5},this.expandedIds=new Set,this.pending=null,this.idBase=nextId("memory-panel"),this.canonicalMemoriesBySource=new WeakMap}static{this.defaultStrings={...super.defaultStrings,approve:LYRA_DEFAULT_approve,citationHighConfidence:LYRA_DEFAULT_citationHighConfidence,citationLowConfidence:LYRA_DEFAULT_citationLowConfidence,citationMediumConfidence:LYRA_DEFAULT_citationMediumConfidence,collapse:LYRA_DEFAULT_collapse,deny:LYRA_DEFAULT_deny,details:LYRA_DEFAULT_details,fieldRequired:LYRA_DEFAULT_fieldRequired,map:LYRA_DEFAULT_map,memoryPanelAdd:LYRA_DEFAULT_memoryPanelAdd,memoryPanelAddWithContext:LYRA_DEFAULT_memoryPanelAddWithContext,memoryPanelConfirmAddHeading:LYRA_DEFAULT_memoryPanelConfirmAddHeading,memoryPanelConfirmForgetBody:LYRA_DEFAULT_memoryPanelConfirmForgetBody,memoryPanelConfirmForgetHeading:LYRA_DEFAULT_memoryPanelConfirmForgetHeading,memoryPanelConfirmRemoveHeading:LYRA_DEFAULT_memoryPanelConfirmRemoveHeading,memoryPanelForgetAll:LYRA_DEFAULT_memoryPanelForgetAll,memoryPanelLabel:LYRA_DEFAULT_memoryPanelLabel,memoryPanelLongTermHeading:LYRA_DEFAULT_memoryPanelLongTermHeading,memoryPanelShortTermHeading:LYRA_DEFAULT_memoryPanelShortTermHeading,navigation:LYRA_DEFAULT_navigation,noData:LYRA_DEFAULT_noData,open:LYRA_DEFAULT_open,popover:LYRA_DEFAULT_popover,progress:LYRA_DEFAULT_progress,remove:LYRA_DEFAULT_remove,removeWithContext:LYRA_DEFAULT_removeWithContext,restore:LYRA_DEFAULT_restore,search:LYRA_DEFAULT_search,select:LYRA_DEFAULT_select,showLess:LYRA_DEFAULT_showLess,showMore:LYRA_DEFAULT_showMore}}static{this.ownedCollectionProperties=Object.freeze(["shortTerm","longTerm","types"])}static{this.identityCollectionProperties=Object.freeze(["shortTerm","longTerm"])}static{this.styles=[LyraElement.styles,styles]}static{this.immutableEventDetails=Object.freeze(["lr-add"])}static{this.identityEventDetailProperties=Object.freeze({"lr-add":Object.freeze(["memory"])})}willUpdate(changed){super.willUpdate(changed),this.captureControlledFocus(changed);const pending=this.pending;if(!pending)return;if(pending.kind==="forget-all"){changed.has("longTerm")&&(this.pending=null);return}if(!changed.has("shortTerm")&&!changed.has("longTerm"))return;const current=this.memoriesForScope(pending.scope).find(item=>item.source===pending.item.source);if(!current){this.pending=null;return}current!==pending.item&&(pending.item=current)}updated(changed){super.updated(changed);const pending=this.pendingControlledFocus;if(pending!==void 0){if(this.pendingControlledFocus=void 0,pending==="base"){this.renderRoot.querySelector('[part="base"]')?.focus();return}if(pending==="forget-all"){const button=this.renderRoot.querySelector('[part="forget-all-button"]');button?button.focus():this.renderRoot.querySelector('[part="base"]')?.focus();return}this.refocusItem(pending.scope,pending.index)}}captureControlledFocus(changed){if(!changed.has("shortTerm")&&!changed.has("longTerm"))return;const active=activeElementIn(this.shadowRoot);if(!active)return;const row=active.closest('[part="item"]');if(row){const scope=row.dataset.scope;if(!scope)return;const property2=scope==="short-term"?"shortTerm":"longTerm";if(!changed.has(property2))return;const oldIndex=[...this.renderRoot.querySelectorAll(`[part="section"][data-scope="${scope}"] [part="item"]`)].indexOf(row),focusedItem=this.cachedCanonicalMemoriesFor(changed.get(property2))[oldIndex],nextItems=this.memoriesForScope(scope),survivingIndex=focusedItem?nextItems.findIndex(item=>item.id===focusedItem.id):-1;if(survivingIndex===oldIndex)return;nextItems.length===0&&this.normalizedShortTerm.length===0&&this.normalizedLongTerm.length===0?this.pendingControlledFocus="base":this.pendingControlledFocus={scope,index:survivingIndex>=0?survivingIndex:Math.min(Math.max(oldIndex,0),Math.max(0,nextItems.length-1))};return}if(active.getAttribute("part")==="forget-all-confirm"&&changed.has("longTerm")){this.pendingControlledFocus=this.normalizedLongTerm.length===0?"base":"forget-all";return}active.getAttribute("part")==="forget-all-button"&&changed.has("longTerm")&&this.normalizedLongTerm.length===0&&(this.pendingControlledFocus="base")}canonicalMemoriesFor(source){if(source===null||typeof source!="object")return EMPTY_CANONICAL_MEMORIES;const cached=this.canonicalMemoriesBySource.get(source);if(cached)return cached;const memories=projectMemories(source);return this.canonicalMemoriesBySource.set(source,memories),memories}cachedCanonicalMemoriesFor(source){return source!==null&&typeof source=="object"?this.canonicalMemoriesBySource.get(source)??EMPTY_CANONICAL_MEMORIES:EMPTY_CANONICAL_MEMORIES}get normalizedShortTerm(){return this.canonicalMemoriesFor(this.shortTerm)}get normalizedLongTerm(){return this.canonicalMemoriesFor(this.longTerm)}memoriesForScope(scope){return scope==="short-term"?this.normalizedShortTerm:this.normalizedLongTerm}itemKey(item,scope){return`${scope}\0${item.id}`}itemBodyId(scope,index){return`${this.idBase}-${scope}-${index}`}tier(score){return score>=this.thresholds.high?"high":score>=this.thresholds.medium?"medium":"low"}toggleExpand(item,scope){const key=this.itemKey(item,scope),next=new Set(this.expandedIds),expanded=!next.has(key);expanded?next.add(key):next.delete(key),this.expandedIds=next,this.emit("lr-expand",{memoryId:item.id,scope,expanded})}startItemPending(kind,item,scope){this.pending={kind,item,scope},this.focusPendingConfirmation()}startForgetAllPending(){this.pending={kind:"forget-all",longTerm:this.longTerm},this.focusPendingConfirmation()}focusPendingConfirmation(){const started=this.pending;this.updateComplete.then(async()=>{const bar=this.renderRoot.querySelector("lr-confirm-bar");if(!bar)return;await bar.updateComplete;const deny=bar.shadowRoot?.querySelector('[part="deny-button"]');await deny?.updateComplete,!(this.pending!==started||!bar.isConnected)&&(deny??bar.shadowRoot?.querySelector('[part="status"]'))?.focus()})}onConfirmKeyDown(event,cancel){if(event.key!=="Escape")return;const before=this.pending;cancel(),this.pending!==before&&event.stopPropagation()}refocusItem(scope,index){this.updateComplete.then(()=>{const rows=[...this.renderRoot.querySelectorAll(`[part="section"][data-scope="${scope}"] [part="item"]`)];(rows[Math.min(index,rows.length-1)]??this.renderRoot.querySelector('[part="item"]')??this.renderRoot.querySelector('[part="base"]'))?.focus()})}resolveItemDecision(p,approved){if(this.pending!==p)return;const index=this.memoriesForScope(p.scope).indexOf(p.item);index<0||(this.pending=null,approved&&(p.kind==="add"?this.emit("lr-add",{memory:p.item.source}):this.emit("lr-remove",{memoryId:p.item.id,scope:p.scope})),this.refocusItem(p.scope,index))}resolveForgetAllDecision(pending,approved){this.pending!==pending||this.longTerm!==pending.longTerm||(this.pending=null,approved&&this.emit("lr-forget"),this.updateComplete.then(()=>{(this.renderRoot.querySelector('[part="forget-all-button"]')??this.renderRoot.querySelector('[part="item"]'))?.focus()}))}renderConfidence(item){if(item.confidence==null)return nothing;const tier=this.tier(item.confidence);return html`<span part="confidence" data-tone=${TIER_TONE[tier]}
|
|
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{getOwnDataDescriptor,MISSING_OWN_DATA_DESCRIPTOR,UNSAFE_OWN_DATA_DESCRIPTOR}from"../../../internal/data-descriptors.js";import{nextId}from"../../../internal/a11y.js";import{getNumberFormat}from"../../../internal/intl-cache.js";import"../provenance-panel/provenance-panel.class.js";import"../../agent-tools/confirm-bar/confirm-bar.class.js";import"../../overlays/empty/empty.class.js";import{styles}from"./memory-panel.styles.js";import{retrievalSemanticLabel,retrievalSemanticRole}from"../retrieval-semantic-owner.js";import{activeElementIn}from"../../../internal/active-element.js";import{LYRA_DEFAULT_approve,LYRA_DEFAULT_citationHighConfidence,LYRA_DEFAULT_citationLowConfidence,LYRA_DEFAULT_citationMediumConfidence,LYRA_DEFAULT_collapse,LYRA_DEFAULT_deny,LYRA_DEFAULT_details,LYRA_DEFAULT_fieldRequired,LYRA_DEFAULT_map,LYRA_DEFAULT_memoryPanelAdd,LYRA_DEFAULT_memoryPanelAddWithContext,LYRA_DEFAULT_memoryPanelConfirmAddHeading,LYRA_DEFAULT_memoryPanelConfirmForgetBody,LYRA_DEFAULT_memoryPanelConfirmForgetHeading,LYRA_DEFAULT_memoryPanelConfirmRemoveHeading,LYRA_DEFAULT_memoryPanelForgetAll,LYRA_DEFAULT_memoryPanelItemsLimit,LYRA_DEFAULT_memoryPanelLabel,LYRA_DEFAULT_memoryPanelLongTermHeading,LYRA_DEFAULT_memoryPanelShortTermHeading,LYRA_DEFAULT_navigation,LYRA_DEFAULT_noData,LYRA_DEFAULT_open,LYRA_DEFAULT_popover,LYRA_DEFAULT_progress,LYRA_DEFAULT_remove,LYRA_DEFAULT_removeWithContext,LYRA_DEFAULT_restore,LYRA_DEFAULT_search,LYRA_DEFAULT_select,LYRA_DEFAULT_showLess,LYRA_DEFAULT_showMore}from"../../../internal/default-strings.generated.js";const MAX_PROJECTED_MEMORY_ITEMS=1e4,MAX_RENDERED_MEMORY_ITEMS=500,EMPTY_CANONICAL_MEMORIES=Object.freeze([]);function descriptorValue(value,property2){return getOwnDataDescriptor(value,property2)}function valueOfDescriptor(descriptor){return descriptor===MISSING_OWN_DATA_DESCRIPTOR||descriptor===UNSAFE_OWN_DATA_DESCRIPTOR?void 0:descriptor.value}function projectMemory(value){try{if(value===null||typeof value!="object"||Array.isArray(value))return;const idDescriptor=descriptorValue(value,"id"),textDescriptor=descriptorValue(value,"text"),confidenceDescriptor=descriptorValue(value,"confidence"),provenanceDescriptor=descriptorValue(value,"provenance");if([idDescriptor,textDescriptor,confidenceDescriptor,provenanceDescriptor].some(descriptor=>descriptor===UNSAFE_OWN_DATA_DESCRIPTOR))return;const id=valueOfDescriptor(idDescriptor),text=valueOfDescriptor(textDescriptor);if(typeof id!="string"||id.trim().length===0||typeof text!="string"||text.trim().length===0)return;const confidence=valueOfDescriptor(confidenceDescriptor),provenance=valueOfDescriptor(provenanceDescriptor);return Object.freeze({source:value,id,text,...typeof confidence=="number"&&Number.isFinite(confidence)?{confidence}:{},...provenance===void 0?{}:{provenance}})}catch{return}}function projectMemories(value){try{if(!Array.isArray(value))return EMPTY_CANONICAL_MEMORIES;const lengthDescriptor=descriptorValue(value,"length");if(lengthDescriptor===MISSING_OWN_DATA_DESCRIPTOR||lengthDescriptor===UNSAFE_OWN_DATA_DESCRIPTOR||typeof lengthDescriptor.value!="number"||!Number.isSafeInteger(lengthDescriptor.value)||lengthDescriptor.value<0)return EMPTY_CANONICAL_MEMORIES;const memories=[],seen=new Set,length=Math.min(lengthDescriptor.value,MAX_PROJECTED_MEMORY_ITEMS);for(let index=0;index<length;index+=1){const descriptor=descriptorValue(value,String(index));if(descriptor===MISSING_OWN_DATA_DESCRIPTOR||descriptor===UNSAFE_OWN_DATA_DESCRIPTOR)continue;const memory=projectMemory(descriptor.value);!memory||seen.has(memory.id)||(seen.add(memory.id),memories.push(memory))}return Object.freeze(memories)}catch{return EMPTY_CANONICAL_MEMORIES}}const CONFIRM_HEADING_KEY={add:"memoryPanelConfirmAddHeading",remove:"memoryPanelConfirmRemoveHeading","forget-all":"memoryPanelConfirmForgetHeading"},TIER_LABEL_KEY={high:"citationHighConfidence",medium:"citationMediumConfidence",low:"citationLowConfidence"},TIER_TONE={high:"success",medium:"warning",low:"danger"};class LyraMemoryPanel extends LyraElement{constructor(){super(...arguments),this.shortTerm=[],this.longTerm=[],this.types=[],this.thresholds={high:.75,medium:.5},this.expandedIds=new Set,this.pending=null,this.idBase=nextId("memory-panel"),this.canonicalMemoriesBySource=new WeakMap}static{this.defaultStrings={...super.defaultStrings,approve:LYRA_DEFAULT_approve,citationHighConfidence:LYRA_DEFAULT_citationHighConfidence,citationLowConfidence:LYRA_DEFAULT_citationLowConfidence,citationMediumConfidence:LYRA_DEFAULT_citationMediumConfidence,collapse:LYRA_DEFAULT_collapse,deny:LYRA_DEFAULT_deny,details:LYRA_DEFAULT_details,fieldRequired:LYRA_DEFAULT_fieldRequired,map:LYRA_DEFAULT_map,memoryPanelAdd:LYRA_DEFAULT_memoryPanelAdd,memoryPanelAddWithContext:LYRA_DEFAULT_memoryPanelAddWithContext,memoryPanelConfirmAddHeading:LYRA_DEFAULT_memoryPanelConfirmAddHeading,memoryPanelConfirmForgetBody:LYRA_DEFAULT_memoryPanelConfirmForgetBody,memoryPanelConfirmForgetHeading:LYRA_DEFAULT_memoryPanelConfirmForgetHeading,memoryPanelConfirmRemoveHeading:LYRA_DEFAULT_memoryPanelConfirmRemoveHeading,memoryPanelForgetAll:LYRA_DEFAULT_memoryPanelForgetAll,memoryPanelItemsLimit:LYRA_DEFAULT_memoryPanelItemsLimit,memoryPanelLabel:LYRA_DEFAULT_memoryPanelLabel,memoryPanelLongTermHeading:LYRA_DEFAULT_memoryPanelLongTermHeading,memoryPanelShortTermHeading:LYRA_DEFAULT_memoryPanelShortTermHeading,navigation:LYRA_DEFAULT_navigation,noData:LYRA_DEFAULT_noData,open:LYRA_DEFAULT_open,popover:LYRA_DEFAULT_popover,progress:LYRA_DEFAULT_progress,remove:LYRA_DEFAULT_remove,removeWithContext:LYRA_DEFAULT_removeWithContext,restore:LYRA_DEFAULT_restore,search:LYRA_DEFAULT_search,select:LYRA_DEFAULT_select,showLess:LYRA_DEFAULT_showLess,showMore:LYRA_DEFAULT_showMore}}static{this.ownedCollectionProperties=Object.freeze(["shortTerm","longTerm","types"])}static{this.identityCollectionProperties=Object.freeze(["shortTerm","longTerm"])}static{this.styles=[LyraElement.styles,styles]}static{this.immutableEventDetails=Object.freeze(["lr-add"])}static{this.identityEventDetailProperties=Object.freeze({"lr-add":Object.freeze(["memory"])})}willUpdate(changed){super.willUpdate(changed),this.captureControlledFocus(changed);const pending=this.pending;if(!pending)return;if(pending.kind==="forget-all"){changed.has("longTerm")&&(this.pending=null);return}if(!changed.has("shortTerm")&&!changed.has("longTerm"))return;const current=this.memoriesForScope(pending.scope).find(item=>item.source===pending.item.source);if(!current){this.pending=null;return}current!==pending.item&&(pending.item=current)}updated(changed){super.updated(changed);const pending=this.pendingControlledFocus;if(pending!==void 0){if(this.pendingControlledFocus=void 0,pending==="base"){this.renderRoot.querySelector('[part="base"]')?.focus();return}if(pending==="forget-all"){const button=this.renderRoot.querySelector('[part="forget-all-button"]');button?button.focus():this.renderRoot.querySelector('[part="base"]')?.focus();return}this.refocusItem(pending.scope,pending.index)}}captureControlledFocus(changed){if(!changed.has("shortTerm")&&!changed.has("longTerm"))return;const active=activeElementIn(this.shadowRoot);if(!active)return;const row=active.closest('[part="item"]');if(row){const scope=row.dataset.scope;if(!scope)return;const property2=scope==="short-term"?"shortTerm":"longTerm";if(!changed.has(property2))return;const oldIndex=[...this.renderRoot.querySelectorAll(`[part="section"][data-scope="${scope}"] [part="item"]`)].indexOf(row),focusedItem=this.cachedCanonicalMemoriesFor(changed.get(property2))[oldIndex],nextItems=this.memoriesForScope(scope),survivingIndex=focusedItem?nextItems.findIndex(item=>item.id===focusedItem.id):-1;if(survivingIndex===oldIndex)return;nextItems.length===0&&this.normalizedShortTerm.length===0&&this.normalizedLongTerm.length===0?this.pendingControlledFocus="base":this.pendingControlledFocus={scope,index:survivingIndex>=0?survivingIndex:Math.min(Math.max(oldIndex,0),Math.max(0,nextItems.length-1))};return}if(active.getAttribute("part")==="forget-all-confirm"&&changed.has("longTerm")){this.pendingControlledFocus=this.normalizedLongTerm.length===0?"base":"forget-all";return}active.getAttribute("part")==="forget-all-button"&&changed.has("longTerm")&&this.normalizedLongTerm.length===0&&(this.pendingControlledFocus="base")}canonicalMemoriesFor(source){if(source===null||typeof source!="object")return EMPTY_CANONICAL_MEMORIES;const cached=this.canonicalMemoriesBySource.get(source);if(cached)return cached;const memories=projectMemories(source);return this.canonicalMemoriesBySource.set(source,memories),memories}cachedCanonicalMemoriesFor(source){return source!==null&&typeof source=="object"?this.canonicalMemoriesBySource.get(source)??EMPTY_CANONICAL_MEMORIES:EMPTY_CANONICAL_MEMORIES}get normalizedShortTerm(){return this.canonicalMemoriesFor(this.shortTerm)}get normalizedLongTerm(){return this.canonicalMemoriesFor(this.longTerm)}memoriesForScope(scope){return scope==="short-term"?this.normalizedShortTerm:this.normalizedLongTerm}itemKey(item,scope){return`${scope}\0${item.id}`}itemBodyId(scope,index){return`${this.idBase}-${scope}-${index}`}tier(score){return score>=this.thresholds.high?"high":score>=this.thresholds.medium?"medium":"low"}toggleExpand(item,scope){const key=this.itemKey(item,scope),next=new Set(this.expandedIds),expanded=!next.has(key);expanded?next.add(key):next.delete(key),this.expandedIds=next,this.emit("lr-expand",{memoryId:item.id,scope,expanded})}startItemPending(kind,item,scope){this.pending={kind,item,scope},this.focusPendingConfirmation()}startForgetAllPending(){this.pending={kind:"forget-all",longTerm:this.longTerm},this.focusPendingConfirmation()}focusPendingConfirmation(){const started=this.pending;this.updateComplete.then(async()=>{const bar=this.renderRoot.querySelector("lr-confirm-bar");if(!bar)return;await bar.updateComplete;const deny=bar.shadowRoot?.querySelector('[part="deny-button"]');await deny?.updateComplete,!(this.pending!==started||!bar.isConnected)&&(deny??bar.shadowRoot?.querySelector('[part="status"]'))?.focus()})}onConfirmKeyDown(event,cancel){if(event.key!=="Escape")return;const before=this.pending;cancel(),this.pending!==before&&event.stopPropagation()}refocusItem(scope,index){this.updateComplete.then(()=>{const rows=[...this.renderRoot.querySelectorAll(`[part="section"][data-scope="${scope}"] [part="item"]`)];(rows[Math.min(index,rows.length-1)]??this.renderRoot.querySelector('[part="item"]')??this.renderRoot.querySelector('[part="base"]'))?.focus()})}resolveItemDecision(p,approved){if(this.pending!==p)return;const index=this.memoriesForScope(p.scope).indexOf(p.item);index<0||(this.pending=null,approved&&(p.kind==="add"?this.emit("lr-add",{memory:p.item.source}):this.emit("lr-remove",{memoryId:p.item.id,scope:p.scope})),this.refocusItem(p.scope,index))}resolveForgetAllDecision(pending,approved){this.pending!==pending||this.longTerm!==pending.longTerm||(this.pending=null,approved&&this.emit("lr-forget"),this.updateComplete.then(()=>{(this.renderRoot.querySelector('[part="forget-all-button"]')??this.renderRoot.querySelector('[part="item"]'))?.focus()}))}renderConfidence(item){if(item.confidence==null)return nothing;const tier=this.tier(item.confidence);return html`<span part="confidence" data-tone=${TIER_TONE[tier]}
|
|
2
2
|
>${this.localize(TIER_LABEL_KEY[tier])}</span
|
|
3
3
|
>`}renderItemConfirm(p){return html`
|
|
4
4
|
<lr-confirm-bar
|
|
@@ -91,8 +91,9 @@ var __decorate=function(decorators,target,key,desc){var c=arguments.length,r=c<3
|
|
|
91
91
|
${scope==="long-term"&&this.normalizedLongTerm.length>0?this.renderForgetAllControl():nothing}
|
|
92
92
|
</div>
|
|
93
93
|
${items.length===0?html`<p part="section-empty">${this.localize("noData")}</p>`:html`<div part="list" role="list" aria-labelledby=${headingId}>
|
|
94
|
-
${items.map((item,index)=>this.renderItem(item,scope,index))}
|
|
95
|
-
</div
|
|
94
|
+
${items.slice(0,MAX_RENDERED_MEMORY_ITEMS).map((item,index)=>this.renderItem(item,scope,index))}
|
|
95
|
+
</div>
|
|
96
|
+
${items.length>MAX_RENDERED_MEMORY_ITEMS?html`<p part="limit" role="note">${this.localize("memoryPanelItemsLimit",void 0,{count:getNumberFormat(this.effectiveLocale).format(MAX_RENDERED_MEMORY_ITEMS)})}</p>`:nothing}`}
|
|
96
97
|
</section>
|
|
97
98
|
`}render(){const shortTerm=this.normalizedShortTerm,longTerm=this.normalizedLongTerm,allEmpty=shortTerm.length===0&&longTerm.length===0,groupLabel=retrievalSemanticLabel(this,this.label==null?this.localize("memoryPanelLabel"):this.label),groupRole=retrievalSemanticRole(this,"group");return allEmpty?html`<div
|
|
98
99
|
part="base"
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{css}from"lit";const styles=css`:host{min-inline-size:0;display:block}[part=base]{gap:var(--lr-space-l);flex-direction:column;display:flex}[part=section]{gap:var(--lr-space-s);flex-direction:column;min-inline-size:0;display:flex}[part=section-header]{justify-content:space-between;align-items:center;gap:var(--lr-space-xs);flex-wrap:wrap;display:flex}[part=heading]{color:var(--lr-color-text);font-size:var(--lr-font-size-sm);font-weight:var(--lr-font-weight-semibold);margin:0}[part=section-empty]{color:var(--lr-color-text-quiet);font-size:var(--lr-font-size-sm);margin:0}[part=list]{gap:var(--lr-space-s);flex-direction:column;min-inline-size:0;display:flex}[part=item]{gap:var(--lr-space-xs);min-inline-size:0;padding:var(--lr-space-s);border:var(--lr-border-width-thin) solid var(--lr-color-border);border-radius:var(--lr-radius);background:var(--lr-color-surface);flex-direction:column;display:flex}[part=item]:focus-visible{outline:var(--lr-focus-ring-width) solid var(--lr-focus-ring-color);outline-offset:var(--lr-focus-ring-offset)}[part=item-row]{align-items:baseline;gap:var(--lr-space-xs);flex-wrap:wrap;min-inline-size:0;display:flex}[part=item-text]{min-inline-size:var(--lr-size-6ch);color:var(--lr-color-text);font-size:var(--lr-font-size-sm);overflow-wrap:anywhere;flex:auto;margin:0}[part=confidence]{font-size:var(--lr-font-size-xs);font-weight:var(--lr-font-weight-medium);flex:none}[part=confidence][data-tone=success]{color:var(--lr-memory-panel-confidence-success-color,var(--lr-color-success))}[part=confidence][data-tone=warning]{color:var(--lr-memory-panel-confidence-warning-color,var(--lr-color-warning))}[part=confidence][data-tone=danger]{color:var(--lr-memory-panel-confidence-danger-color,var(--lr-color-danger))}[part=expand-toggle]{box-sizing:border-box;min-inline-size:var(--lr-icon-button-size);min-block-size:var(--lr-icon-button-size);color:var(--lr-color-brand);font:inherit;font-size:var(--lr-font-size-xs);cursor:pointer;transition:background-color var(--lr-transition-fast);background:0 0;border:none;align-self:flex-start;padding:0}[part=expand-toggle]:focus-visible{outline:var(--lr-focus-ring-width) solid var(--lr-focus-ring-color);outline-offset:var(--lr-focus-ring-offset)}[part=expand-toggle]:hover{text-decoration:underline}[part=expand-toggle]:active{background:color-mix(in oklab, transparent, var(--lr-color-mix-partner) var(--lr-color-mix-active));text-decoration:underline}[part=item-body]{border-block-start:var(--lr-border-width-thin) solid var(--lr-color-border);padding-block-start:var(--lr-space-xs)}[part=item-body][hidden]{display:none}[part=item-actions]{justify-content:flex-end;gap:var(--lr-space-xs);flex-wrap:wrap;display:flex}[part=item-actions] lr-confirm-bar{inline-size:100%}[part=add-button],[part=remove-button],[part=forget-all-button]{box-sizing:border-box;min-inline-size:var(--lr-icon-button-size);min-block-size:var(--lr-icon-button-size);padding-inline:var(--lr-space-s);padding-block:var(--lr-space-2xs);border:var(--lr-border-width-thin) solid var(--lr-color-border);border-radius:var(--lr-radius);background:var(--lr-color-surface);color:var(--lr-color-text);font:inherit;font-size:var(--lr-font-size-xs);cursor:pointer;transition:background-color var(--lr-transition-fast)}[part=add-button]:focus-visible,[part=remove-button]:focus-visible,[part=forget-all-button]:focus-visible{outline:var(--lr-focus-ring-width) solid var(--lr-focus-ring-color);outline-offset:var(--lr-focus-ring-offset)}[part=add-button]:hover,[part=remove-button]:hover,[part=forget-all-button]:hover{background:var(--lr-color-brand-quiet)}[part=add-button]:active,[part=remove-button]:active,[part=forget-all-button]:active{background:color-mix(in oklab, var(--lr-color-brand-quiet), var(--lr-color-mix-partner) var(--lr-color-mix-active))}[part=forget-all-button]{color:var(--lr-color-danger);border-color:var(--lr-color-danger)}`;export{styles};
|
|
1
|
+
import{css}from"lit";const styles=css`:host{min-inline-size:0;display:block}[part=base]{gap:var(--lr-space-l);flex-direction:column;display:flex}[part=section]{gap:var(--lr-space-s);flex-direction:column;min-inline-size:0;display:flex}[part=section-header]{justify-content:space-between;align-items:center;gap:var(--lr-space-xs);flex-wrap:wrap;display:flex}[part=heading]{color:var(--lr-color-text);font-size:var(--lr-font-size-sm);font-weight:var(--lr-font-weight-semibold);margin:0}[part=section-empty]{color:var(--lr-color-text-quiet);font-size:var(--lr-font-size-sm);margin:0}[part=list]{gap:var(--lr-space-s);flex-direction:column;min-inline-size:0;display:flex}[part=item]{gap:var(--lr-space-xs);min-inline-size:0;padding:var(--lr-space-s);border:var(--lr-border-width-thin) solid var(--lr-color-border);border-radius:var(--lr-radius);background:var(--lr-color-surface);flex-direction:column;display:flex}[part=item]:focus-visible{outline:var(--lr-focus-ring-width) solid var(--lr-focus-ring-color);outline-offset:var(--lr-focus-ring-offset)}[part=item-row]{align-items:baseline;gap:var(--lr-space-xs);flex-wrap:wrap;min-inline-size:0;display:flex}[part=item-text]{min-inline-size:var(--lr-size-6ch);color:var(--lr-color-text);font-size:var(--lr-font-size-sm);overflow-wrap:anywhere;flex:auto;margin:0}[part=confidence]{font-size:var(--lr-font-size-xs);font-weight:var(--lr-font-weight-medium);flex:none}[part=confidence][data-tone=success]{color:var(--lr-memory-panel-confidence-success-color,var(--lr-color-success))}[part=confidence][data-tone=warning]{color:var(--lr-memory-panel-confidence-warning-color,var(--lr-color-warning))}[part=confidence][data-tone=danger]{color:var(--lr-memory-panel-confidence-danger-color,var(--lr-color-danger))}[part=expand-toggle]{box-sizing:border-box;min-inline-size:var(--lr-icon-button-size);min-block-size:var(--lr-icon-button-size);color:var(--lr-color-brand);font:inherit;font-size:var(--lr-font-size-xs);cursor:pointer;transition:background-color var(--lr-transition-fast);background:0 0;border:none;align-self:flex-start;padding:0}[part=expand-toggle]:focus-visible{outline:var(--lr-focus-ring-width) solid var(--lr-focus-ring-color);outline-offset:var(--lr-focus-ring-offset)}[part=expand-toggle]:hover{text-decoration:underline}[part=expand-toggle]:active{background:color-mix(in oklab, transparent, var(--lr-color-mix-partner) var(--lr-color-mix-active));text-decoration:underline}[part=item-body]{border-block-start:var(--lr-border-width-thin) solid var(--lr-color-border);padding-block-start:var(--lr-space-xs)}[part=item-body][hidden]{display:none}[part=item-actions]{justify-content:flex-end;gap:var(--lr-space-xs);flex-wrap:wrap;display:flex}[part=item-actions] lr-confirm-bar{inline-size:100%}[part=add-button],[part=remove-button],[part=forget-all-button]{box-sizing:border-box;min-inline-size:var(--lr-icon-button-size);min-block-size:var(--lr-icon-button-size);padding-inline:var(--lr-space-s);padding-block:var(--lr-space-2xs);border:var(--lr-border-width-thin) solid var(--lr-color-border);border-radius:var(--lr-radius);background:var(--lr-color-surface);color:var(--lr-color-text);font:inherit;font-size:var(--lr-font-size-xs);cursor:pointer;transition:background-color var(--lr-transition-fast)}[part=add-button]:focus-visible,[part=remove-button]:focus-visible,[part=forget-all-button]:focus-visible{outline:var(--lr-focus-ring-width) solid var(--lr-focus-ring-color);outline-offset:var(--lr-focus-ring-offset)}[part=add-button]:hover,[part=remove-button]:hover,[part=forget-all-button]:hover{background:var(--lr-color-brand-quiet)}[part=add-button]:active,[part=remove-button]:active,[part=forget-all-button]:active{background:color-mix(in oklab, var(--lr-color-brand-quiet), var(--lr-color-mix-partner) var(--lr-color-mix-active))}[part=forget-all-button]{color:var(--lr-color-danger);border-color:var(--lr-color-danger)}[part=limit]{margin:var(--lr-space-s);color:var(--lr-color-text-quiet);font-size:var(--lr-font-size-xs)}`;export{styles};
|
|
@@ -14,7 +14,9 @@ ringGap:number;rtl:boolean;isExpanded:(id:string,depth:number)=>boolean;}export
|
|
|
14
14
|
/** viewBox width/height, auto-fit to the laid-out extent with padding. */
|
|
15
15
|
width:number;height:number;
|
|
16
16
|
/** The root/hub's position within the shifted (viewBox-relative) coordinate space. */
|
|
17
|
-
centerX:number;centerY:number;}
|
|
17
|
+
centerX:number;centerY:number;}export interface DecimatedMindMapLayout{placed:readonly PlacedTopic[];links:readonly{fromId:string;toId:string;}[];
|
|
18
|
+
/** The full currently-visible node count before decimation (what "of M" reports). */
|
|
19
|
+
totalCount:number;truncated:boolean;}
|
|
18
20
|
/**
|
|
19
21
|
* Lays out `topics` as a radial tree: root at the center, each depth ring at radius `depth *
|
|
20
22
|
* ringGap`, each parent's children dividing its own inherited angular arc proportionally to their
|
|
@@ -24,3 +26,17 @@ centerX:number;centerY:number;}
|
|
|
24
26
|
* `<lr-mind-map>` for the component wrapping this.
|
|
25
27
|
*/
|
|
26
28
|
export declare function layoutMindMap(topics:readonly LyraTopic[],hubLabel:string,opts:MindMapLayoutOptions):MindMapLayoutResult;
|
|
29
|
+
/**
|
|
30
|
+
* Deterministically decimates an already-laid-out, currently-visible topic set (`placed`, in the
|
|
31
|
+
* depth-first order `place()` produces) down to at most `maxNodes`, two invariants held
|
|
32
|
+
* throughout: a kept node's parent (if any) is always kept too -- so the surviving set is always
|
|
33
|
+
* a connected sub-tree, never floating orphans with a dangling `link` or a gap in the semantic
|
|
34
|
+
* `role="tree"` walk -- and each parent's own child budget is apportioned to its children in
|
|
35
|
+
* proportion to each child's subtree size via `apportionByWeight()`, so a large branch keeps
|
|
36
|
+
* proportionally more of its own nodes than a small one and a flat/wide branch is sampled evenly
|
|
37
|
+
* across its whole child list, rather than the tail of the array being dropped outright. Geometry
|
|
38
|
+
* (`x`/`y`/`angle`) on a surviving node is untouched -- it keeps the position the full layout gave
|
|
39
|
+
* it, so the decimated result still reads as a sample of the true radial density rather than
|
|
40
|
+
* nodes redrawn to fill the resulting gaps.
|
|
41
|
+
*/
|
|
42
|
+
export declare function decimateMindMapLayout(placed:readonly PlacedTopic[],links:readonly{fromId:string;toId:string;}[],maxNodes:number):DecimatedMindMapLayout;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{minMax}from"../../data/heatmap/heatmap-scale.js";import{isNonBlankIdentity}from"../retrieval-identity.js";function normalizeMindMapTopics(topics){const seen=new Set,normalize=values=>{const source=Array.isArray(values)?values:[],retained=[];for(const topic of source){if(topic===null||typeof topic!="object"||!isNonBlankIdentity(topic.id)||seen.has(topic.id))continue;seen.add(topic.id);const children=normalize(topic.children??[]);retained.push(Object.freeze({...topic,...topic.children===void 0?{}:{children}}))}return Object.freeze(retained)};return normalize(topics)}const LAYOUT_PADDING=60;function syntheticHubIdentity(topics){const ids=new Set,collect=values=>{for(const topic of values)ids.add(topic.id),collect(topic.children??[])};collect(topics);let identity="__hub__";for(;ids.has(identity);)identity=`_${identity}`;return identity}function visibleLeafCount(node,depth,opts){const children=node.children??[];return children.length===0||!opts.isExpanded(node.id,depth)?1:Math.max(1,children.reduce((sum,c)=>sum+visibleLeafCount(c,depth+1,opts),0))}function place(node,depth,angleStart,angleEnd,parentId,cx,cy,opts,out,links){const angle=(angleStart+angleEnd)/2,r=depth*opts.ringGap,dir=opts.rtl?-1:1,x=cx+dir*r*Math.sin(angle),y=cy-r*Math.cos(angle),hasChildren=node.children.length>0,expanded=hasChildren&&opts.isExpanded(node.id,depth);if(out.push({id:node.id,label:node.label,depth,x,y,angle,parentId,hasChildren,expanded}),parentId&&links.push({fromId:parentId,toId:node.id}),!hasChildren||!expanded)return;const counts=node.children.map(c=>visibleLeafCount(c,depth+1,opts)),total=counts.reduce((a,b)=>a+b,0)||1,span=angleEnd-angleStart;let cursor=angleStart;node.children.forEach((child,i)=>{const childSpan=counts[i]/total*span;place({id:child.id,label:child.label,children:child.children??[]},depth+1,cursor,cursor+childSpan,node.id,cx,cy,opts,out,links),cursor+=childSpan})}function layoutMindMap(topics,hubLabel,opts){const normalizedTopics=normalizeMindMapTopics(topics);if(normalizedTopics.length===0)return{placed:[],links:[],width:0,height:0,centerX:0,centerY:0};const root=normalizedTopics.length===1?{id:normalizedTopics[0].id,label:normalizedTopics[0].label,children:normalizedTopics[0].children??[]}:{id:syntheticHubIdentity(normalizedTopics),label:hubLabel,children:normalizedTopics},placed=[],links=[];place(root,0,0,2*Math.PI,null,0,0,opts,placed,links);const[xLo,xHi]=minMax(placed.map(p=>p.x))??[0,0],[yLo,yHi]=minMax(placed.map(p=>p.y))??[0,0],minX=xLo-LAYOUT_PADDING,maxX=xHi+LAYOUT_PADDING,minY=yLo-LAYOUT_PADDING,maxY=yHi+LAYOUT_PADDING;return{placed:placed.map(p=>({...p,x:p.x-minX,y:p.y-minY})),links,width:maxX-minX,height:maxY-minY,centerX:-minX,centerY:-minY}}export{layoutMindMap};
|
|
1
|
+
import{minMax}from"../../data/heatmap/heatmap-scale.js";import{isNonBlankIdentity}from"../retrieval-identity.js";function normalizeMindMapTopics(topics){const seen=new Set,normalize=values=>{const source=Array.isArray(values)?values:[],retained=[];for(const topic of source){if(topic===null||typeof topic!="object"||!isNonBlankIdentity(topic.id)||seen.has(topic.id))continue;seen.add(topic.id);const children=normalize(topic.children??[]);retained.push(Object.freeze({...topic,...topic.children===void 0?{}:{children}}))}return Object.freeze(retained)};return normalize(topics)}const LAYOUT_PADDING=60;function syntheticHubIdentity(topics){const ids=new Set,collect=values=>{for(const topic of values)ids.add(topic.id),collect(topic.children??[])};collect(topics);let identity="__hub__";for(;ids.has(identity);)identity=`_${identity}`;return identity}function visibleLeafCount(node,depth,opts){const children=node.children??[];return children.length===0||!opts.isExpanded(node.id,depth)?1:Math.max(1,children.reduce((sum,c)=>sum+visibleLeafCount(c,depth+1,opts),0))}function place(node,depth,angleStart,angleEnd,parentId,cx,cy,opts,out,links){const angle=(angleStart+angleEnd)/2,r=depth*opts.ringGap,dir=opts.rtl?-1:1,x=cx+dir*r*Math.sin(angle),y=cy-r*Math.cos(angle),hasChildren=node.children.length>0,expanded=hasChildren&&opts.isExpanded(node.id,depth);if(out.push({id:node.id,label:node.label,depth,x,y,angle,parentId,hasChildren,expanded}),parentId&&links.push({fromId:parentId,toId:node.id}),!hasChildren||!expanded)return;const counts=node.children.map(c=>visibleLeafCount(c,depth+1,opts)),total=counts.reduce((a,b)=>a+b,0)||1,span=angleEnd-angleStart;let cursor=angleStart;node.children.forEach((child,i)=>{const childSpan=counts[i]/total*span;place({id:child.id,label:child.label,children:child.children??[]},depth+1,cursor,cursor+childSpan,node.id,cx,cy,opts,out,links),cursor+=childSpan})}function layoutMindMap(topics,hubLabel,opts){const normalizedTopics=normalizeMindMapTopics(topics);if(normalizedTopics.length===0)return{placed:[],links:[],width:0,height:0,centerX:0,centerY:0};const root=normalizedTopics.length===1?{id:normalizedTopics[0].id,label:normalizedTopics[0].label,children:normalizedTopics[0].children??[]}:{id:syntheticHubIdentity(normalizedTopics),label:hubLabel,children:normalizedTopics},placed=[],links=[];place(root,0,0,2*Math.PI,null,0,0,opts,placed,links);const[xLo,xHi]=minMax(placed.map(p=>p.x))??[0,0],[yLo,yHi]=minMax(placed.map(p=>p.y))??[0,0],minX=xLo-LAYOUT_PADDING,maxX=xHi+LAYOUT_PADDING,minY=yLo-LAYOUT_PADDING,maxY=yHi+LAYOUT_PADDING;return{placed:placed.map(p=>({...p,x:p.x-minX,y:p.y-minY})),links,width:maxX-minX,height:maxY-minY,centerX:-minX,centerY:-minY}}function apportionByWeight(weights,budget){const shares=weights.map(()=>0),total=weights.reduce((sum,weight)=>sum+weight,0);if(total<=0||budget<=0||weights.length===0)return shares;const sampleCount=Math.min(budget,total),step=total/sampleCount;let childIndex=0,boundary=weights[0];for(let sample=0;sample<sampleCount;sample++){const target=(sample+.5)*step;for(;target>=boundary&&childIndex<weights.length-1;)childIndex+=1,boundary+=weights[childIndex];shares[childIndex]=shares[childIndex]+1}return shares}function decimateMindMapLayout(placed,links,maxNodes){const totalCount=placed.length;if(totalCount<=maxNodes||maxNodes<=0)return{placed:[...placed],links:[...links],totalCount,truncated:!1};const childrenByParent=new Map;for(const node of placed){const siblings=childrenByParent.get(node.parentId);siblings?siblings.push(node):childrenByParent.set(node.parentId,[node])}const subtreeSizeCache=new Map,subtreeSize=id=>{const cached=subtreeSizeCache.get(id);if(cached!==void 0)return cached;subtreeSizeCache.set(id,1);const children=childrenByParent.get(id)??[];let total=1;for(const child of children)total+=subtreeSize(child.id);return subtreeSizeCache.set(id,total),total},kept=new Set,visit=(node,budget)=>{if(budget<=0)return;kept.add(node.id);const children=childrenByParent.get(node.id)??[];if(children.length===0||budget<=1)return;const shares=apportionByWeight(children.map(child=>subtreeSize(child.id)),budget-1);children.forEach((child,index)=>visit(child,shares[index]))},roots=childrenByParent.get(null)??[],rootShares=apportionByWeight(roots.map(root=>subtreeSize(root.id)),maxNodes);return roots.forEach((root,index)=>visit(root,rootShares[index])),{placed:placed.filter(node=>kept.has(node.id)),links:links.filter(link=>kept.has(link.fromId)&&kept.has(link.toId)),totalCount,truncated:!0}}export{decimateMindMapLayout,layoutMindMap};
|
|
@@ -26,6 +26,10 @@ import{type PropertyValues,type TemplateResult}from'lit';import{LyraElement}from
|
|
|
26
26
|
* first placed topic is seeded as the keyboard cursor) rather than only after the first arrow key.
|
|
27
27
|
* @csspart live-region - The visually hidden announcement region.
|
|
28
28
|
* @csspart empty - The empty-state message, shown when `topics` is empty.
|
|
29
|
+
* @csspart limit - The "showing N of M" notice, present only once the currently-visible topic
|
|
30
|
+
* count exceeds the render cap. The rendered subset is a deterministic, connectivity-preserving,
|
|
31
|
+
* subtree-size-weighted sample of the full visible set (never floating nodes with no path back
|
|
32
|
+
* to the root), so both the SVG and the parallel sr-only tree stay representative above the cap.
|
|
29
33
|
* @cssprop [--lr-mind-map-ring-gap=6rem] - Radius step per depth ring.
|
|
30
34
|
* @cssprop [--lr-mind-map-node-hover-halo=var(--lr-color-brand-quiet)] - Stroke color of the
|
|
31
35
|
* hover halo drawn around a topic node's dot, giving mouse users the same "this is clickable"
|
|
@@ -46,7 +50,10 @@ expandDepth:number;private svgEl?;
|
|
|
46
50
|
/** Explicit user overrides only -- the default (`depth < expandDepth`) is computed at read time
|
|
47
51
|
* in `isExpanded()`, so a user can override in either direction without losing the override on
|
|
48
52
|
* a later `topics` reassignment that reintroduces the same id. */
|
|
49
|
-
private expandedOverrides;private focusedId;private liveText;private cachedLayout;
|
|
53
|
+
private expandedOverrides;private focusedId;private liveText;private cachedLayout;
|
|
54
|
+
/** The currently-visible (per expand state) topic count before `MAX_RENDERED_MIND_MAP_NODES`
|
|
55
|
+
* decimation -- the "of M" half of the truncation notice. */
|
|
56
|
+
private totalTopicCount;private topicsTruncated;private resizeObserver?;private resizeObserverDocument?;private resizeRafId?;private resizeRafOwner?;private resizeRafDocument?;private ownerRealmGeneration;private observedSize;private layoutInvalidated;private layoutContext;private announcementSink?;connectedCallback():void;private armResizeObserver;disconnectedCallback():void;adoptedCallback():void;private resetResizeWork;attributeChangedCallback(name:string,oldValue:string|null,value:string|null):void;
|
|
50
57
|
/** `expandDepth`, normalized to a finite non-negative integer (falling back to the property's own
|
|
51
58
|
* default of `1`) -- a raw `NaN` (e.g. an invalid `expand-depth` attribute) would otherwise make
|
|
52
59
|
* every `depth < expandDepth` comparison false, silently collapsing every ring instead of just
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
var __decorate=function(decorators,target,key,desc){var c=arguments.length,r=c<3?target:desc===null?desc=Object.getOwnPropertyDescriptor(target,key):desc,d;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")r=Reflect.decorate(decorators,target,key,desc);else for(var i=decorators.length-1;i>=0;i--)(d=decorators[i])&&(r=(c<3?d(r):c>3?d(target,key,r):d(target,key))||r);return c>3&&r&&Object.defineProperty(target,key,r),r};import{html,nothing,svg}from"lit";import{property,state,query}from"lit/decorators.js";import{LyraElement}from"../../../internal/lyra-element.js";import{srOnly}from"../../../internal/a11y.js";import{isRtl}from"../../../internal/rtl.js";import{finiteCount}from"../../../internal/numbers.js";import{resolveCssLength}from"../../../internal/css-length.js";import{getNumberFormat}from"../../../internal/intl-cache.js";import{acquireAnnouncementSink}from"../../../internal/announcer.js";import{layoutMindMap}from"./mind-map-layout.js";import{styles}from"./mind-map.styles.js";import{LYRA_DEFAULT_mindMapCollapsed,LYRA_DEFAULT_mindMapExpanded,LYRA_DEFAULT_mindMapLabel,LYRA_DEFAULT_mindMapLeafStatus,LYRA_DEFAULT_mindMapTopicStatus,LYRA_DEFAULT_noData}from"../../../internal/default-strings.generated.js";const DEFAULT_RING_GAP_PX=96,NAV_KEYS=new Set(["ArrowUp","ArrowDown","ArrowLeft","ArrowRight","Home","End","Enter"," "]);class LyraMindMap extends LyraElement{constructor(){super(...arguments),this.topics=[],this.expandDepth=1,this.expandedOverrides=new Map,this.focusedId=null,this.liveText="",this.cachedLayout={placed:[],links:[],width:0,height:0,centerX:0,centerY:0},this.ownerRealmGeneration=0,this.observedSize="",this.layoutInvalidated=!0,this.layoutContext="",this.onKeyDown=e=>{const placed=this.cachedLayout.placed;if(placed.length===0||!NAV_KEYS.has(e.key))return;if(e.preventDefault(),this.focusedId===null){this.focusNodeById(placed[0].id);return}const current=placed.find(p=>p.id===this.focusedId);if(!current)return;if(e.key==="Enter"||e.key===" "){this.activate(current);return}if(e.key==="ArrowUp"){current.parentId&&this.focusNodeById(current.parentId);return}if(e.key==="ArrowDown"){if(!current.hasChildren)return;this.isExpanded(current.id,current.depth)||this.toggle(current,!1);const child=this.childrenOf(current.id)[0];child&&this.focusNodeById(child.id);return}const rtl=isRtl(this),forwardKey=rtl?"ArrowLeft":"ArrowRight",backwardKey=rtl?"ArrowRight":"ArrowLeft";if(e.key===forwardKey||e.key===backwardKey||e.key==="Home"||e.key==="End"){const siblings=this.siblingsOf(current),index=siblings.findIndex(s=>s.id===current.id);let next=index;e.key===forwardKey?next=Math.min(siblings.length-1,index+1):e.key===backwardKey?next=Math.max(0,index-1):e.key==="Home"?next=0:next=siblings.length-1;const target=siblings[next];target&&this.focusNodeById(target.id)}},this.onFocusIn=()=>{if(this.focusedId!==null)return;const first=this.cachedLayout.placed[0];first&&(this.focusedId=first.id)}}static{this.defaultStrings={...super.defaultStrings,mindMapCollapsed:LYRA_DEFAULT_mindMapCollapsed,mindMapExpanded:LYRA_DEFAULT_mindMapExpanded,mindMapLabel:LYRA_DEFAULT_mindMapLabel,mindMapLeafStatus:LYRA_DEFAULT_mindMapLeafStatus,mindMapTopicStatus:LYRA_DEFAULT_mindMapTopicStatus,noData:LYRA_DEFAULT_noData}}static{this.ownedCollectionProperties=Object.freeze(["topics"])}static{this.styles=[LyraElement.styles,styles,srOnly]}static get observedAttributes(){return[...new Set([...super.observedAttributes,"dir","lang"])]}connectedCallback(){super.connectedCallback(),this.announcementSink??=acquireAnnouncementSink("polite",{document:this.ownerDocument,source:this}),this.layoutInvalidated=!0,this.armResizeObserver()}armResizeObserver(){const ownerDocument=this.ownerDocument,ownerWindow=ownerDocument.defaultView;if(!this.isConnected||!ownerWindow?.ResizeObserver||this.resizeObserver&&this.resizeObserverDocument===ownerDocument)return;this.resetResizeWork();const generation=this.ownerRealmGeneration,observer=new ownerWindow.ResizeObserver(entries=>{if(this.resizeObserver!==observer||this.resizeObserverDocument!==ownerDocument||this.ownerRealmGeneration!==generation||!this.isConnected||this.ownerDocument!==ownerDocument)return;const rect=entries[0]?.contentRect,size=rect?`${rect.width}:${rect.height}`:"";if(size&&size===this.observedSize)return;this.observedSize=size,this.resizeRafId!=null&&this.resizeRafOwner?.cancelAnimationFrame(this.resizeRafId);const handle=ownerWindow.requestAnimationFrame(()=>{this.resizeRafId!==handle||this.resizeRafOwner!==ownerWindow||this.resizeRafDocument!==ownerDocument||this.ownerRealmGeneration!==generation||!this.isConnected||this.ownerDocument!==ownerDocument||(this.resizeRafId=void 0,this.resizeRafOwner=void 0,this.resizeRafDocument=void 0,this.layoutInvalidated=!0,this.requestUpdate())});this.resizeRafId=handle,this.resizeRafOwner=ownerWindow,this.resizeRafDocument=ownerDocument});this.resizeObserver=observer,this.resizeObserverDocument=ownerDocument,observer.observe(this)}disconnectedCallback(){this.resetResizeWork(),this.announcementSink?.release(),this.announcementSink=void 0,super.disconnectedCallback()}adoptedCallback(){super.adoptedCallback(),this.resetResizeWork(),this.announcementSink?.release(),this.announcementSink=void 0}resetResizeWork(){this.ownerRealmGeneration+=1,this.resizeRafId!=null&&this.resizeRafOwner?.cancelAnimationFrame(this.resizeRafId),this.resizeRafId=void 0,this.resizeRafOwner=void 0,this.resizeRafDocument=void 0,this.resizeObserver?.disconnect(),this.resizeObserver=void 0,this.resizeObserverDocument=void 0,this.observedSize=""}attributeChangedCallback(name,oldValue,value){super.attributeChangedCallback(name,oldValue,value),(name==="dir"||name==="lang")&&oldValue!==value&&(this.layoutInvalidated=!0,this.requestUpdate())}get effectiveExpandDepth(){return finiteCount(this.expandDepth,1)}isExpanded(id,depth){return this.expandedOverrides.get(id)??depth<this.effectiveExpandDepth}ringGapPx(){const hostStyle=this.ownerDocument.defaultView?.getComputedStyle(this)??this.style,raw=hostStyle.getPropertyValue("--lr-mind-map-ring-gap").trim()||hostStyle.getPropertyValue("--_lr-mind-map-ring-gap").trim();return resolveCssLength(raw,{host:this})??DEFAULT_RING_GAP_PX}relayout(){const hubLabel=this.label==null?this.localize("mindMapLabel"):this.label
|
|
1
|
+
var __decorate=function(decorators,target,key,desc){var c=arguments.length,r=c<3?target:desc===null?desc=Object.getOwnPropertyDescriptor(target,key):desc,d;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")r=Reflect.decorate(decorators,target,key,desc);else for(var i=decorators.length-1;i>=0;i--)(d=decorators[i])&&(r=(c<3?d(r):c>3?d(target,key,r):d(target,key))||r);return c>3&&r&&Object.defineProperty(target,key,r),r};import{html,nothing,svg}from"lit";import{property,state,query}from"lit/decorators.js";import{LyraElement}from"../../../internal/lyra-element.js";import{srOnly}from"../../../internal/a11y.js";import{isRtl}from"../../../internal/rtl.js";import{finiteCount}from"../../../internal/numbers.js";import{resolveCssLength}from"../../../internal/css-length.js";import{getNumberFormat}from"../../../internal/intl-cache.js";import{acquireAnnouncementSink}from"../../../internal/announcer.js";import{decimateMindMapLayout,layoutMindMap}from"./mind-map-layout.js";import{styles}from"./mind-map.styles.js";import{LYRA_DEFAULT_mindMapCollapsed,LYRA_DEFAULT_mindMapExpanded,LYRA_DEFAULT_mindMapLabel,LYRA_DEFAULT_mindMapLeafStatus,LYRA_DEFAULT_mindMapNodeLimit,LYRA_DEFAULT_mindMapTopicStatus,LYRA_DEFAULT_noData}from"../../../internal/default-strings.generated.js";const DEFAULT_RING_GAP_PX=96,MAX_RENDERED_MIND_MAP_NODES=500,NAV_KEYS=new Set(["ArrowUp","ArrowDown","ArrowLeft","ArrowRight","Home","End","Enter"," "]);class LyraMindMap extends LyraElement{constructor(){super(...arguments),this.topics=[],this.expandDepth=1,this.expandedOverrides=new Map,this.focusedId=null,this.liveText="",this.cachedLayout={placed:[],links:[],width:0,height:0,centerX:0,centerY:0},this.totalTopicCount=0,this.topicsTruncated=!1,this.ownerRealmGeneration=0,this.observedSize="",this.layoutInvalidated=!0,this.layoutContext="",this.onKeyDown=e=>{const placed=this.cachedLayout.placed;if(placed.length===0||!NAV_KEYS.has(e.key))return;if(e.preventDefault(),this.focusedId===null){this.focusNodeById(placed[0].id);return}const current=placed.find(p=>p.id===this.focusedId);if(!current)return;if(e.key==="Enter"||e.key===" "){this.activate(current);return}if(e.key==="ArrowUp"){current.parentId&&this.focusNodeById(current.parentId);return}if(e.key==="ArrowDown"){if(!current.hasChildren)return;this.isExpanded(current.id,current.depth)||this.toggle(current,!1);const child=this.childrenOf(current.id)[0];child&&this.focusNodeById(child.id);return}const rtl=isRtl(this),forwardKey=rtl?"ArrowLeft":"ArrowRight",backwardKey=rtl?"ArrowRight":"ArrowLeft";if(e.key===forwardKey||e.key===backwardKey||e.key==="Home"||e.key==="End"){const siblings=this.siblingsOf(current),index=siblings.findIndex(s=>s.id===current.id);let next=index;e.key===forwardKey?next=Math.min(siblings.length-1,index+1):e.key===backwardKey?next=Math.max(0,index-1):e.key==="Home"?next=0:next=siblings.length-1;const target=siblings[next];target&&this.focusNodeById(target.id)}},this.onFocusIn=()=>{if(this.focusedId!==null)return;const first=this.cachedLayout.placed[0];first&&(this.focusedId=first.id)}}static{this.defaultStrings={...super.defaultStrings,mindMapCollapsed:LYRA_DEFAULT_mindMapCollapsed,mindMapExpanded:LYRA_DEFAULT_mindMapExpanded,mindMapLabel:LYRA_DEFAULT_mindMapLabel,mindMapLeafStatus:LYRA_DEFAULT_mindMapLeafStatus,mindMapNodeLimit:LYRA_DEFAULT_mindMapNodeLimit,mindMapTopicStatus:LYRA_DEFAULT_mindMapTopicStatus,noData:LYRA_DEFAULT_noData}}static{this.ownedCollectionProperties=Object.freeze(["topics"])}static{this.styles=[LyraElement.styles,styles,srOnly]}static get observedAttributes(){return[...new Set([...super.observedAttributes,"dir","lang"])]}connectedCallback(){super.connectedCallback(),this.announcementSink??=acquireAnnouncementSink("polite",{document:this.ownerDocument,source:this}),this.layoutInvalidated=!0,this.armResizeObserver()}armResizeObserver(){const ownerDocument=this.ownerDocument,ownerWindow=ownerDocument.defaultView;if(!this.isConnected||!ownerWindow?.ResizeObserver||this.resizeObserver&&this.resizeObserverDocument===ownerDocument)return;this.resetResizeWork();const generation=this.ownerRealmGeneration,observer=new ownerWindow.ResizeObserver(entries=>{if(this.resizeObserver!==observer||this.resizeObserverDocument!==ownerDocument||this.ownerRealmGeneration!==generation||!this.isConnected||this.ownerDocument!==ownerDocument)return;const rect=entries[0]?.contentRect,size=rect?`${rect.width}:${rect.height}`:"";if(size&&size===this.observedSize)return;this.observedSize=size,this.resizeRafId!=null&&this.resizeRafOwner?.cancelAnimationFrame(this.resizeRafId);const handle=ownerWindow.requestAnimationFrame(()=>{this.resizeRafId!==handle||this.resizeRafOwner!==ownerWindow||this.resizeRafDocument!==ownerDocument||this.ownerRealmGeneration!==generation||!this.isConnected||this.ownerDocument!==ownerDocument||(this.resizeRafId=void 0,this.resizeRafOwner=void 0,this.resizeRafDocument=void 0,this.layoutInvalidated=!0,this.requestUpdate())});this.resizeRafId=handle,this.resizeRafOwner=ownerWindow,this.resizeRafDocument=ownerDocument});this.resizeObserver=observer,this.resizeObserverDocument=ownerDocument,observer.observe(this)}disconnectedCallback(){this.resetResizeWork(),this.announcementSink?.release(),this.announcementSink=void 0,super.disconnectedCallback()}adoptedCallback(){super.adoptedCallback(),this.resetResizeWork(),this.announcementSink?.release(),this.announcementSink=void 0}resetResizeWork(){this.ownerRealmGeneration+=1,this.resizeRafId!=null&&this.resizeRafOwner?.cancelAnimationFrame(this.resizeRafId),this.resizeRafId=void 0,this.resizeRafOwner=void 0,this.resizeRafDocument=void 0,this.resizeObserver?.disconnect(),this.resizeObserver=void 0,this.resizeObserverDocument=void 0,this.observedSize=""}attributeChangedCallback(name,oldValue,value){super.attributeChangedCallback(name,oldValue,value),(name==="dir"||name==="lang")&&oldValue!==value&&(this.layoutInvalidated=!0,this.requestUpdate())}get effectiveExpandDepth(){return finiteCount(this.expandDepth,1)}isExpanded(id,depth){return this.expandedOverrides.get(id)??depth<this.effectiveExpandDepth}ringGapPx(){const hostStyle=this.ownerDocument.defaultView?.getComputedStyle(this)??this.style,raw=hostStyle.getPropertyValue("--lr-mind-map-ring-gap").trim()||hostStyle.getPropertyValue("--_lr-mind-map-ring-gap").trim();return resolveCssLength(raw,{host:this})??DEFAULT_RING_GAP_PX}relayout(){const hubLabel=this.label==null?this.localize("mindMapLabel"):this.label,fullLayout=layoutMindMap(this.topics,hubLabel,{ringGap:this.ringGapPx(),rtl:isRtl(this),isExpanded:(id,depth)=>this.isExpanded(id,depth)}),decimated=decimateMindMapLayout(fullLayout.placed,fullLayout.links,MAX_RENDERED_MIND_MAP_NODES);this.totalTopicCount=decimated.totalCount,this.topicsTruncated=decimated.truncated,this.cachedLayout={...fullLayout,placed:[...decimated.placed],links:[...decimated.links]}}willUpdate(changed){super.willUpdate(changed);const context=`${this.label==null?this.localize("mindMapLabel"):this.label}\0${isRtl(this)?"rtl":"ltr"}\0${this.ringGapPx()}`,structuralChange=changed.has("topics")||changed.has("expandDepth")||changed.has("expandedOverrides")||changed.has("label")||changed.has("strings")||changed.has("locale");(this.layoutInvalidated||structuralChange||context!==this.layoutContext)&&(this.relayout(),this.layoutContext=context,this.layoutInvalidated=!1,this.focusedId&&!this.cachedLayout.placed.some(topic=>topic.id===this.focusedId)&&(this.focusedId=this.cachedLayout.placed[0]?.id??null))}setAnnouncement(text){this.liveText=text,this.announcementSink?.announce(text)}toggle(node,announce=!0){const expanded=!this.isExpanded(node.id,node.depth),next=new Map(this.expandedOverrides);next.set(node.id,expanded),this.expandedOverrides=next,this.emit("lr-topic-toggle",{topicId:node.id,expanded}),announce&&this.setAnnouncement(this.localize(expanded?"mindMapExpanded":"mindMapCollapsed",void 0,{label:node.label}))}activate(node){node.hasChildren?this.toggle(node):this.emit("lr-topic-select",{topicId:node.id})}siblingsOf(node){return this.cachedLayout.placed.filter(p=>p.parentId===node.parentId)}childrenOf(id){return this.cachedLayout.placed.filter(p=>p.parentId===id)}announce(node){const numberFormat=getNumberFormat(this.effectiveLocale);this.setAnnouncement(node.hasChildren?this.localize("mindMapTopicStatus",void 0,{label:node.label,level:numberFormat.format(node.depth+1),count:numberFormat.format(this.childrenOf(node.id).length)}):this.localize("mindMapLeafStatus",void 0,{label:node.label,level:numberFormat.format(node.depth+1)}))}focusNodeById(id){this.focusedId=id;const node=this.cachedLayout.placed.find(p=>p.id===id);node&&this.announce(node)}onNodeClick(node){this.focusedId=node.id,this.svgEl?.focus(),node.hasChildren||this.announce(node),this.activate(node)}connectorControlPoint(from,to){const layout=this.cachedLayout,parentR=Math.hypot(from.x-layout.centerX,from.y-layout.centerY),dir=isRtl(this)?-1:1;return{x:layout.centerX+dir*parentR*Math.sin(to.angle),y:layout.centerY-parentR*Math.cos(to.angle)}}renderSemanticNode(node,childrenByParent){const children=childrenByParent.get(node.id)??[];return html`
|
|
2
2
|
<div
|
|
3
3
|
role="treeitem"
|
|
4
4
|
aria-level=${node.depth+1}
|
|
@@ -25,7 +25,7 @@ var __decorate=function(decorators,target,key,desc){var c=arguments.length,r=c<3
|
|
|
25
25
|
>
|
|
26
26
|
${layout.links.map(link=>{const from=byId.get(link.fromId),to=byId.get(link.toId);if(!from||!to)return nothing;const control=this.connectorControlPoint(from,to);return svg`<path part="link" d="M ${from.x} ${from.y} Q ${control.x} ${control.y} ${to.x} ${to.y}" fill="none"></path>`})}
|
|
27
27
|
${layout.placed.map(node=>svg`
|
|
28
|
-
<g part="node" style=${`transform: translate(${node.x}px, ${node.y}px)`} @click=${()=>this.onNodeClick(node)}>
|
|
28
|
+
<g part="node" data-id=${node.id} style=${`transform: translate(${node.x}px, ${node.y}px)`} @click=${()=>this.onNodeClick(node)}>
|
|
29
29
|
<line
|
|
30
30
|
class="node-hit"
|
|
31
31
|
x1="0"
|
|
@@ -42,6 +42,7 @@ var __decorate=function(decorators,target,key,desc){var c=arguments.length,r=c<3
|
|
|
42
42
|
`)}
|
|
43
43
|
${focused?svg`<circle part="focus-ring" cx=${focused.x} cy=${focused.y} r="10"></circle>`:nothing}
|
|
44
44
|
</svg>
|
|
45
|
+
${this.topicsTruncated?html`<p part="limit" role="note">${this.localize("mindMapNodeLimit",void 0,{shown:getNumberFormat(this.effectiveLocale).format(layout.placed.length),total:getNumberFormat(this.effectiveLocale).format(this.totalTopicCount)})}</p>`:nothing}
|
|
45
46
|
<div class="sr-only" role="tree">
|
|
46
47
|
${(childrenByParent.get(null)??[]).map(topic=>this.renderSemanticNode(topic,childrenByParent))}
|
|
47
48
|
</div>
|
|
@@ -11,6 +11,10 @@ import{type TemplateResult}from'lit';import{LyraElement}from'../../../internal/l
|
|
|
11
11
|
* Blank metric/run ids and later duplicates are ignored before fallback selection, filters,
|
|
12
12
|
* counts, rendering, or actions. The first record for an id wins.
|
|
13
13
|
*
|
|
14
|
+
* At most 500 of the currently filtered runs render as `[part="run"]` buttons and feed the trend
|
|
15
|
+
* chart; a filtered set past that length renders a localized `[part="limit"]` notice after the run
|
|
16
|
+
* history rather than mounting an unbounded number of rows.
|
|
17
|
+
*
|
|
14
18
|
* @customElement lr-rag-eval-dashboard
|
|
15
19
|
* @event lr-metric-change - A metric was activated. `detail: { metricId }`.
|
|
16
20
|
* @event lr-slice-change - An evaluation slice was activated. `detail: { slice }`.
|
|
@@ -28,6 +32,7 @@ import{type TemplateResult}from'lit';import{LyraElement}from'../../../internal/l
|
|
|
28
32
|
* @csspart runs - Evaluation run history.
|
|
29
33
|
* @csspart runs-heading - Run-history heading.
|
|
30
34
|
* @csspart run - One evaluation run.
|
|
35
|
+
* @csspart limit - Localized notice shown when the filtered runs exceed the 500-run render ceiling.
|
|
31
36
|
* @csspart empty - The no-runs or unavailable-controlled-slice state.
|
|
32
37
|
* @cssprop [--lr-rag-eval-dashboard-selected-border-color=var(--lr-color-brand)] - Border color
|
|
33
38
|
* shared by the controlled active slice and metric.
|
|
@@ -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{getNumberFormat}from"../../../internal/intl-cache.js";import{LyraElement}from"../../../internal/lyra-element.js";import{firstByRetrievalIdentity,isNonBlankIdentity}from"../retrieval-identity.js";import{finiteRange}from"../../../internal/numbers.js";import{trueDefaultBooleanConverter}from"../../../internal/converters.js";import"../../charts/chart/lite-chart.class.js";import"../../data/stat/stat.class.js";import"../../overlays/empty/empty.class.js";import{styles}from"./rag-eval-dashboard.styles.js";import{retrievalSemanticLabel,retrievalSemanticRole}from"../retrieval-semantic-owner.js";import{LYRA_DEFAULT_ragEvalDashboardAllSlices,LYRA_DEFAULT_ragEvalDashboardEmpty,LYRA_DEFAULT_ragEvalDashboardLabel,LYRA_DEFAULT_ragEvalDashboardRuns,LYRA_DEFAULT_ragEvalDashboardSliceUnavailable,LYRA_DEFAULT_ragEvalDashboardSlices}from"../../../internal/default-strings.generated.js";function isRecord(value){return typeof value=="object"&&value!==null&&!Array.isArray(value)}class LyraRagEvalDashboard extends LyraElement{constructor(){super(...arguments),this.metrics=[],this.runs=[],this.metricId="",this.slice="",this.showChart=!0,this.chartHeight="220px"}static{this.defaultStrings={...super.defaultStrings,ragEvalDashboardAllSlices:LYRA_DEFAULT_ragEvalDashboardAllSlices,ragEvalDashboardEmpty:LYRA_DEFAULT_ragEvalDashboardEmpty,ragEvalDashboardLabel:LYRA_DEFAULT_ragEvalDashboardLabel,ragEvalDashboardRuns:LYRA_DEFAULT_ragEvalDashboardRuns,ragEvalDashboardSliceUnavailable:LYRA_DEFAULT_ragEvalDashboardSliceUnavailable,ragEvalDashboardSlices:LYRA_DEFAULT_ragEvalDashboardSlices}}static{this.ownedCollectionProperties=Object.freeze(["metrics","runs"])}static{this.styles=[LyraElement.styles,styles]}get normalizedMetrics(){return firstByRetrievalIdentity(Array.isArray(this.metrics)?this.metrics:[],metric=>metric.id)}get normalizedRuns(){return firstByRetrievalIdentity(Array.isArray(this.runs)?this.runs.filter(run=>isRecord(run)&&isNonBlankIdentity(run.id)&&typeof run.label=="string"&&isRecord(run.metrics)):[],run=>run.id)}activeMetric(metrics){return this.metricId?metrics.find(metric=>metric.id===this.metricId):metrics[0]}slices(runs){return[...new Set(runs.map(run=>run.slice).filter(slice=>!!slice))]}filteredRuns(runs){return this.slice?runs.filter(run=>run.slice===this.slice):runs}formatMetric(metric,raw){const value=Number.isFinite(raw)?raw:0;return metric.format==="percent"?getNumberFormat(this.effectiveLocale,{style:"percent",maximumFractionDigits:1}).format(finiteRange(value,0,0,1)):getNumberFormat(this.effectiveLocale,{maximumFractionDigits:3}).format(value)}latestValue(metric,runs){return[...runs].reverse().find(run=>Number.isFinite(run.metrics[metric.id]))?.metrics[metric.id]}emitRunChange(run){this.emit("lr-run-change",{run})}renderSlices(slices){if(!slices.length)return nothing;const allSlicesPart=this.slice?"slice":"slice slice-selected";return html`
|
|
1
|
+
var __decorate=function(decorators,target,key,desc){var c=arguments.length,r=c<3?target:desc===null?desc=Object.getOwnPropertyDescriptor(target,key):desc,d;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")r=Reflect.decorate(decorators,target,key,desc);else for(var i=decorators.length-1;i>=0;i--)(d=decorators[i])&&(r=(c<3?d(r):c>3?d(target,key,r):d(target,key))||r);return c>3&&r&&Object.defineProperty(target,key,r),r};import{html,nothing}from"lit";import{property}from"lit/decorators.js";import{getNumberFormat}from"../../../internal/intl-cache.js";import{LyraElement}from"../../../internal/lyra-element.js";import{firstByRetrievalIdentity,isNonBlankIdentity}from"../retrieval-identity.js";import{finiteRange}from"../../../internal/numbers.js";import{trueDefaultBooleanConverter}from"../../../internal/converters.js";import"../../charts/chart/lite-chart.class.js";import"../../data/stat/stat.class.js";import"../../overlays/empty/empty.class.js";import{styles}from"./rag-eval-dashboard.styles.js";import{retrievalSemanticLabel,retrievalSemanticRole}from"../retrieval-semantic-owner.js";import{LYRA_DEFAULT_ragEvalDashboardAllSlices,LYRA_DEFAULT_ragEvalDashboardEmpty,LYRA_DEFAULT_ragEvalDashboardLabel,LYRA_DEFAULT_ragEvalDashboardRuns,LYRA_DEFAULT_ragEvalDashboardRunsLimit,LYRA_DEFAULT_ragEvalDashboardSliceUnavailable,LYRA_DEFAULT_ragEvalDashboardSlices}from"../../../internal/default-strings.generated.js";function isRecord(value){return typeof value=="object"&&value!==null&&!Array.isArray(value)}const MAX_RENDERED_RUNS=500;class LyraRagEvalDashboard extends LyraElement{constructor(){super(...arguments),this.metrics=[],this.runs=[],this.metricId="",this.slice="",this.showChart=!0,this.chartHeight="220px"}static{this.defaultStrings={...super.defaultStrings,ragEvalDashboardAllSlices:LYRA_DEFAULT_ragEvalDashboardAllSlices,ragEvalDashboardEmpty:LYRA_DEFAULT_ragEvalDashboardEmpty,ragEvalDashboardLabel:LYRA_DEFAULT_ragEvalDashboardLabel,ragEvalDashboardRuns:LYRA_DEFAULT_ragEvalDashboardRuns,ragEvalDashboardRunsLimit:LYRA_DEFAULT_ragEvalDashboardRunsLimit,ragEvalDashboardSliceUnavailable:LYRA_DEFAULT_ragEvalDashboardSliceUnavailable,ragEvalDashboardSlices:LYRA_DEFAULT_ragEvalDashboardSlices}}static{this.ownedCollectionProperties=Object.freeze(["metrics","runs"])}static{this.styles=[LyraElement.styles,styles]}get normalizedMetrics(){return firstByRetrievalIdentity(Array.isArray(this.metrics)?this.metrics:[],metric=>metric.id)}get normalizedRuns(){return firstByRetrievalIdentity(Array.isArray(this.runs)?this.runs.filter(run=>isRecord(run)&&isNonBlankIdentity(run.id)&&typeof run.label=="string"&&isRecord(run.metrics)):[],run=>run.id)}activeMetric(metrics){return this.metricId?metrics.find(metric=>metric.id===this.metricId):metrics[0]}slices(runs){return[...new Set(runs.map(run=>run.slice).filter(slice=>!!slice))]}filteredRuns(runs){return this.slice?runs.filter(run=>run.slice===this.slice):runs}formatMetric(metric,raw){const value=Number.isFinite(raw)?raw:0;return metric.format==="percent"?getNumberFormat(this.effectiveLocale,{style:"percent",maximumFractionDigits:1}).format(finiteRange(value,0,0,1)):getNumberFormat(this.effectiveLocale,{maximumFractionDigits:3}).format(value)}latestValue(metric,runs){return[...runs].reverse().find(run=>Number.isFinite(run.metrics[metric.id]))?.metrics[metric.id]}emitRunChange(run){this.emit("lr-run-change",{run})}renderSlices(slices){if(!slices.length)return nothing;const allSlicesPart=this.slice?"slice":"slice slice-selected";return html`
|
|
2
2
|
<nav part="slices" aria-label=${this.localize("ragEvalDashboardSlices")}>
|
|
3
3
|
<button
|
|
4
4
|
part=${allSlicesPart}
|
|
@@ -43,7 +43,7 @@ var __decorate=function(decorators,target,key,desc){var c=arguments.length,r=c<3
|
|
|
43
43
|
heading=${this.localize("ragEvalDashboardSliceUnavailable",void 0,{slice:this.slice})}
|
|
44
44
|
></lr-empty>
|
|
45
45
|
</section>
|
|
46
|
-
`;const
|
|
46
|
+
`;const runsTruncated=filtered.length>MAX_RENDERED_RUNS,renderedRuns=filtered.slice(0,MAX_RENDERED_RUNS),values=renderedRuns.map(run=>{const value=active?run.metrics[active.id]:void 0;return Number.isFinite(value)?value:null});return html`
|
|
47
47
|
<section
|
|
48
48
|
part="base"
|
|
49
49
|
role=${role??nothing}
|
|
@@ -69,12 +69,12 @@ var __decorate=function(decorators,target,key,desc){var c=arguments.length,r=c<3
|
|
|
69
69
|
</button>
|
|
70
70
|
`})}
|
|
71
71
|
</div>
|
|
72
|
-
${this.showChart&&active&&
|
|
72
|
+
${this.showChart&&active&&renderedRuns.length?html`
|
|
73
73
|
<div part="chart">
|
|
74
74
|
<lr-lite-chart
|
|
75
75
|
type="line"
|
|
76
76
|
.height=${this.chartHeight}
|
|
77
|
-
.labels=${
|
|
77
|
+
.labels=${renderedRuns.map(run=>run.label)}
|
|
78
78
|
.datasets=${[{label:active.label,data:values}]}
|
|
79
79
|
accessible-label=${active.label}
|
|
80
80
|
></lr-lite-chart>
|
|
@@ -85,7 +85,7 @@ var __decorate=function(decorators,target,key,desc){var c=arguments.length,r=c<3
|
|
|
85
85
|
aria-label=${this.localize("ragEvalDashboardRuns")}
|
|
86
86
|
>
|
|
87
87
|
<h3 part="runs-heading">${this.localize("ragEvalDashboardRuns")}</h3>
|
|
88
|
-
${
|
|
88
|
+
${renderedRuns.map(run=>html`
|
|
89
89
|
<button
|
|
90
90
|
part="run"
|
|
91
91
|
type="button"
|
|
@@ -97,6 +97,7 @@ var __decorate=function(decorators,target,key,desc){var c=arguments.length,r=c<3
|
|
|
97
97
|
>`:nothing}
|
|
98
98
|
</button>
|
|
99
99
|
`)}
|
|
100
|
+
${runsTruncated?html`<p part="limit" role="note">${this.localize("ragEvalDashboardRunsLimit",void 0,{count:getNumberFormat(this.effectiveLocale).format(MAX_RENDERED_RUNS)})}</p>`:nothing}
|
|
100
101
|
</section>
|
|
101
102
|
</section>
|
|
102
103
|
`}}__decorate([property({attribute:!1})],LyraRagEvalDashboard.prototype,"metrics",void 0),__decorate([property({attribute:!1})],LyraRagEvalDashboard.prototype,"runs",void 0),__decorate([property({attribute:"metric-id"})],LyraRagEvalDashboard.prototype,"metricId",void 0),__decorate([property()],LyraRagEvalDashboard.prototype,"slice",void 0),__decorate([property()],LyraRagEvalDashboard.prototype,"label",void 0),__decorate([property({type:Boolean,attribute:"show-chart",reflect:!0,converter:trueDefaultBooleanConverter})],LyraRagEvalDashboard.prototype,"showChart",void 0),__decorate([property({attribute:"chart-height"})],LyraRagEvalDashboard.prototype,"chartHeight",void 0);export{LyraRagEvalDashboard};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{css}from"lit";const styles=css`:host{contain-intrinsic-inline-size:var(--lr-size-20rem);display:block;container-type:inline-size}[part=base]{gap:var(--lr-space-m);flex-direction:column;display:flex}[part=heading],[part=runs-heading]{color:var(--lr-color-text);font-size:var(--lr-font-size-lg);margin:0}[part=slices]{gap:var(--lr-space-xs);flex-wrap:wrap;display:flex}[part~=slice],[part~=metric],[part=run]{box-sizing:border-box;min-inline-size:var(--lr-icon-button-size);min-block-size:var(--lr-icon-button-size);border:var(--lr-border-width-thin) solid var(--lr-color-border);border-radius:var(--lr-radius);background:var(--lr-color-surface);color:var(--lr-color-text);font:inherit;cursor:pointer;transition:background-color var(--lr-transition-fast)}[part~=slice]{min-inline-size:var(--lr-icon-button-size);padding:var(--lr-space-xs) var(--lr-space-s)}[part~=metric]{gap:var(--lr-space-2xs);padding:var(--lr-space-xs);text-align:start;display:grid}[part~=slice-selected],[part~=metric-selected]{border-color:var(--lr-rag-eval-dashboard-selected-border-color,var(--lr-color-brand))}[part=metric-category]{color:var(--lr-color-text-quiet);font-size:var(--lr-font-size-xs);overflow-wrap:anywhere}[part~=slice-selected]{min-inline-size:var(--lr-icon-button-size);min-block-size:var(--lr-icon-button-size)}[part~=slice]:hover,[part~=metric]:hover,[part=run]:hover{background:var(--lr-color-surface-raised)}[part~=slice]:active,[part~=metric]:active,[part=run]:active{background:color-mix(in oklab, var(--lr-color-surface-raised), var(--lr-color-mix-partner) var(--lr-color-mix-active))}[part~=slice]:focus-visible,[part~=metric]:focus-visible,[part=run]:focus-visible{outline:var(--lr-focus-ring-width) solid var(--lr-focus-ring-color);outline-offset:var(--lr-focus-ring-offset)}[part=metrics]{grid-template-columns:repeat(auto-fit, minmax(var(--lr-size-10rem), 1fr));gap:var(--lr-space-s);display:grid}[part=chart]{min-inline-size:0}[part=runs]{gap:var(--lr-space-xs);flex-direction:column;display:flex}[part=run]{justify-content:space-between;gap:var(--lr-space-s);inline-size:100%;padding:var(--lr-space-s);text-align:start;align-items:center;display:flex}@container (inline-size<=319.98px){[part=metrics]{grid-template-columns:1fr}[part=run]{flex-direction:column;align-items:flex-start}}`;export{styles};
|
|
1
|
+
import{css}from"lit";const styles=css`:host{contain-intrinsic-inline-size:var(--lr-size-20rem);display:block;container-type:inline-size}[part=base]{gap:var(--lr-space-m);flex-direction:column;display:flex}[part=heading],[part=runs-heading]{color:var(--lr-color-text);font-size:var(--lr-font-size-lg);margin:0}[part=slices]{gap:var(--lr-space-xs);flex-wrap:wrap;display:flex}[part~=slice],[part~=metric],[part=run]{box-sizing:border-box;min-inline-size:var(--lr-icon-button-size);min-block-size:var(--lr-icon-button-size);border:var(--lr-border-width-thin) solid var(--lr-color-border);border-radius:var(--lr-radius);background:var(--lr-color-surface);color:var(--lr-color-text);font:inherit;cursor:pointer;transition:background-color var(--lr-transition-fast)}[part~=slice]{min-inline-size:var(--lr-icon-button-size);padding:var(--lr-space-xs) var(--lr-space-s)}[part~=metric]{gap:var(--lr-space-2xs);padding:var(--lr-space-xs);text-align:start;display:grid}[part~=slice-selected],[part~=metric-selected]{border-color:var(--lr-rag-eval-dashboard-selected-border-color,var(--lr-color-brand))}[part=metric-category]{color:var(--lr-color-text-quiet);font-size:var(--lr-font-size-xs);overflow-wrap:anywhere}[part~=slice-selected]{min-inline-size:var(--lr-icon-button-size);min-block-size:var(--lr-icon-button-size)}[part~=slice]:hover,[part~=metric]:hover,[part=run]:hover{background:var(--lr-color-surface-raised)}[part~=slice]:active,[part~=metric]:active,[part=run]:active{background:color-mix(in oklab, var(--lr-color-surface-raised), var(--lr-color-mix-partner) var(--lr-color-mix-active))}[part~=slice]:focus-visible,[part~=metric]:focus-visible,[part=run]:focus-visible{outline:var(--lr-focus-ring-width) solid var(--lr-focus-ring-color);outline-offset:var(--lr-focus-ring-offset)}[part=metrics]{grid-template-columns:repeat(auto-fit, minmax(var(--lr-size-10rem), 1fr));gap:var(--lr-space-s);display:grid}[part=chart]{min-inline-size:0}[part=runs]{gap:var(--lr-space-xs);flex-direction:column;display:flex}[part=run]{justify-content:space-between;gap:var(--lr-space-s);inline-size:100%;padding:var(--lr-space-s);text-align:start;align-items:center;display:flex}@container (inline-size<=319.98px){[part=metrics]{grid-template-columns:1fr}[part=run]{flex-direction:column;align-items:flex-start}}[part=limit]{margin:var(--lr-space-s);color:var(--lr-color-text-quiet);font-size:var(--lr-font-size-xs)}`;export{styles};
|
|
@@ -1,8 +1,8 @@
|
|
|
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{getNumberFormat}from"../../../internal/intl-cache.js";import{LyraElement}from"../../../internal/lyra-element.js";import{firstByRetrievalIdentity,isValidRetrievalChunk}from"../retrieval-identity.js";import{finiteCount,finiteRange}from"../../../internal/numbers.js";import"../../overlays/empty/empty.class.js";import{styles}from"./retrieval-compare.styles.js";import{retrievalSemanticLabel,retrievalSemanticRole}from"../retrieval-semantic-owner.js";import{LYRA_DEFAULT_retrievalCompareDenseScore,LYRA_DEFAULT_retrievalCompareEmpty,LYRA_DEFAULT_retrievalCompareFinalScore,LYRA_DEFAULT_retrievalCompareLabel,LYRA_DEFAULT_retrievalCompareOverlap,LYRA_DEFAULT_retrievalCompareRank,LYRA_DEFAULT_retrievalCompareRerankScore,LYRA_DEFAULT_retrievalCompareSparseScore}from"../../../internal/default-strings.generated.js";let retrievalCompareInstance=0;class LyraRetrievalCompare extends LyraElement{constructor(){super(...arguments),this.sets=[],this.topK=10,this.selectedChunkId="",this.headingIdPrefix=`lr-retrieval-compare-${++retrievalCompareInstance}`,this.renderSet=(set,setIndex)=>{const headingId=`${this.headingIdPrefix}-set-${setIndex}`;return html`
|
|
1
|
+
var __decorate=function(decorators,target,key,desc){var c=arguments.length,r=c<3?target:desc===null?desc=Object.getOwnPropertyDescriptor(target,key):desc,d;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")r=Reflect.decorate(decorators,target,key,desc);else for(var i=decorators.length-1;i>=0;i--)(d=decorators[i])&&(r=(c<3?d(r):c>3?d(target,key,r):d(target,key))||r);return c>3&&r&&Object.defineProperty(target,key,r),r};import{html,nothing}from"lit";import{property}from"lit/decorators.js";import{getNumberFormat}from"../../../internal/intl-cache.js";import{LyraElement}from"../../../internal/lyra-element.js";import{firstByRetrievalIdentity,isValidRetrievalChunk}from"../retrieval-identity.js";import{finiteCount,finiteRange}from"../../../internal/numbers.js";import"../../overlays/empty/empty.class.js";import{styles}from"./retrieval-compare.styles.js";import{retrievalSemanticLabel,retrievalSemanticRole}from"../retrieval-semantic-owner.js";import{LYRA_DEFAULT_retrievalCompareDenseScore,LYRA_DEFAULT_retrievalCompareEmpty,LYRA_DEFAULT_retrievalCompareFinalScore,LYRA_DEFAULT_retrievalCompareLabel,LYRA_DEFAULT_retrievalCompareOverlap,LYRA_DEFAULT_retrievalCompareRank,LYRA_DEFAULT_retrievalCompareRerankScore,LYRA_DEFAULT_retrievalCompareSparseScore}from"../../../internal/default-strings.generated.js";let retrievalCompareInstance=0;class LyraRetrievalCompare extends LyraElement{constructor(){super(...arguments),this.sets=[],this.topK=10,this.selectedChunkId="",this.headingIdPrefix=`lr-retrieval-compare-${++retrievalCompareInstance}`,this.renderSet=(set,setIndex,chunks)=>{const headingId=`${this.headingIdPrefix}-set-${setIndex}`;return html`
|
|
2
2
|
<section part="set" aria-labelledby=${headingId}>
|
|
3
3
|
<h3 part="set-heading" id=${headingId}>${set.label}</h3>
|
|
4
4
|
<ol part="chunks">
|
|
5
|
-
${
|
|
5
|
+
${chunks.map((chunk,index)=>{const selected=chunk.id===this.selectedChunkId,rank=this.rank(chunk,index);return html`
|
|
6
6
|
<li>
|
|
7
7
|
<button
|
|
8
8
|
part=${selected?"chunk chunk-selected":"chunk"}
|
|
@@ -28,7 +28,7 @@ var __decorate=function(decorators,target,key,desc){var c=arguments.length,r=c<3
|
|
|
28
28
|
`})}
|
|
29
29
|
</ol>
|
|
30
30
|
</section>
|
|
31
|
-
`}}static{this.defaultStrings={...super.defaultStrings,retrievalCompareDenseScore:LYRA_DEFAULT_retrievalCompareDenseScore,retrievalCompareEmpty:LYRA_DEFAULT_retrievalCompareEmpty,retrievalCompareFinalScore:LYRA_DEFAULT_retrievalCompareFinalScore,retrievalCompareLabel:LYRA_DEFAULT_retrievalCompareLabel,retrievalCompareOverlap:LYRA_DEFAULT_retrievalCompareOverlap,retrievalCompareRank:LYRA_DEFAULT_retrievalCompareRank,retrievalCompareRerankScore:LYRA_DEFAULT_retrievalCompareRerankScore,retrievalCompareSparseScore:LYRA_DEFAULT_retrievalCompareSparseScore}}static{this.ownedCollectionProperties=Object.freeze(["sets"])}static{this.styles=[LyraElement.styles,styles]}static{this.immutableEventDetails=Object.freeze(["lr-chunk-select"])}get effectiveTopK(){return Math.max(1,finiteCount(this.topK,10))}get normalizedSets(){return firstByRetrievalIdentity(Array.isArray(this.sets)?this.sets:[],set=>set.id)}orderedChunks(set){return firstByRetrievalIdentity(Array.isArray(set.chunks)?set.chunks.filter(isValidRetrievalChunk):[],chunk=>chunk.id).map((chunk,index)=>({chunk,index,rank:this.rank(chunk,index)})).sort((a,b)=>a.rank-b.rank||b.chunk.score-a.chunk.score||a.index-b.index).slice(0,this.effectiveTopK).map(({chunk})=>chunk)}rank(chunk,index){return Math.max(1,finiteCount(typeof chunk.rank=="number"?chunk.rank:index+1,index+1))}formatScore(value){return getNumberFormat(this.effectiveLocale,{style:"percent",maximumFractionDigits:1}).format(finiteRange(value,0,0,1))}overlaps(sets){const summaries=[];for(let leftIndex=0;leftIndex<sets.length;leftIndex+=1){const leftSet=sets[leftIndex],left=new Set(
|
|
31
|
+
`}}static{this.defaultStrings={...super.defaultStrings,retrievalCompareDenseScore:LYRA_DEFAULT_retrievalCompareDenseScore,retrievalCompareEmpty:LYRA_DEFAULT_retrievalCompareEmpty,retrievalCompareFinalScore:LYRA_DEFAULT_retrievalCompareFinalScore,retrievalCompareLabel:LYRA_DEFAULT_retrievalCompareLabel,retrievalCompareOverlap:LYRA_DEFAULT_retrievalCompareOverlap,retrievalCompareRank:LYRA_DEFAULT_retrievalCompareRank,retrievalCompareRerankScore:LYRA_DEFAULT_retrievalCompareRerankScore,retrievalCompareSparseScore:LYRA_DEFAULT_retrievalCompareSparseScore}}static{this.ownedCollectionProperties=Object.freeze(["sets"])}static{this.styles=[LyraElement.styles,styles]}static{this.immutableEventDetails=Object.freeze(["lr-chunk-select"])}get effectiveTopK(){return Math.max(1,finiteCount(this.topK,10))}get normalizedSets(){return firstByRetrievalIdentity(Array.isArray(this.sets)?this.sets:[],set=>set.id)}orderedChunks(set){return firstByRetrievalIdentity(Array.isArray(set.chunks)?set.chunks.filter(isValidRetrievalChunk):[],chunk=>chunk.id).map((chunk,index)=>({chunk,index,rank:this.rank(chunk,index)})).sort((a,b)=>a.rank-b.rank||b.chunk.score-a.chunk.score||a.index-b.index).slice(0,this.effectiveTopK).map(({chunk})=>chunk)}rank(chunk,index){return Math.max(1,finiteCount(typeof chunk.rank=="number"?chunk.rank:index+1,index+1))}formatScore(value){return getNumberFormat(this.effectiveLocale,{style:"percent",maximumFractionDigits:1}).format(finiteRange(value,0,0,1))}overlaps(sets,ordered){const summaries=[];for(let leftIndex=0;leftIndex<sets.length;leftIndex+=1){const leftSet=sets[leftIndex],left=new Set((ordered.get(leftSet.id)??[]).map(chunk=>chunk.id));for(let rightIndex=leftIndex+1;rightIndex<sets.length;rightIndex+=1){const rightSet=sets[rightIndex],right=new Set((ordered.get(rightSet.id)??[]).map(chunk=>chunk.id)),intersection=[...left].filter(id=>right.has(id)).length,union=new Set([...left,...right]).size,percent=this.formatScore(union?intersection/union:0);summaries.push(this.localize("retrievalCompareOverlap",void 0,{left:leftSet.label,right:rightSet.label,percent}))}}return summaries}scoreEntries(chunk){const scores=chunk.scores??{final:chunk.score};return[[this.localize("retrievalCompareDenseScore"),scores.dense],[this.localize("retrievalCompareSparseScore"),scores.sparse],[this.localize("retrievalCompareRerankScore"),scores.rerank],[this.localize("retrievalCompareFinalScore"),scores.final]].filter(entry=>typeof entry[1]=="number")}render(){const sets=this.normalizedSets,label=retrievalSemanticLabel(this,this.label==null?this.localize("retrievalCompareLabel"):this.label),role=retrievalSemanticRole(this,"region");if(!sets.length)return html`<section
|
|
32
32
|
part="base"
|
|
33
33
|
role=${role??nothing}
|
|
34
34
|
aria-label=${label??nothing}
|
|
@@ -37,7 +37,7 @@ var __decorate=function(decorators,target,key,desc){var c=arguments.length,r=c<3
|
|
|
37
37
|
part="empty"
|
|
38
38
|
heading=${this.localize("retrievalCompareEmpty")}
|
|
39
39
|
></lr-empty>
|
|
40
|
-
</section>`;const overlaps=this.overlaps(sets);return html`
|
|
40
|
+
</section>`;const ordered=new Map(sets.map(set=>[set.id,this.orderedChunks(set)])),overlaps=this.overlaps(sets,ordered);return html`
|
|
41
41
|
<section
|
|
42
42
|
part="base"
|
|
43
43
|
role=${role??nothing}
|
|
@@ -45,7 +45,7 @@ var __decorate=function(decorators,target,key,desc){var c=arguments.length,r=c<3
|
|
|
45
45
|
>
|
|
46
46
|
${overlaps.map(summary=>html`<p part="overlap">${summary}</p>`)}
|
|
47
47
|
<div part="sets">
|
|
48
|
-
${sets.map((set,index)=>this.renderSet(set,index))}
|
|
48
|
+
${sets.map((set,index)=>this.renderSet(set,index,ordered.get(set.id)??[]))}
|
|
49
49
|
</div>
|
|
50
50
|
</section>
|
|
51
51
|
`}}__decorate([property({attribute:!1})],LyraRetrievalCompare.prototype,"sets",void 0),__decorate([property({type:Number,attribute:"top-k"})],LyraRetrievalCompare.prototype,"topK",void 0),__decorate([property({attribute:"selected-chunk-id"})],LyraRetrievalCompare.prototype,"selectedChunkId",void 0),__decorate([property()],LyraRetrievalCompare.prototype,"label",void 0);export{LyraRetrievalCompare};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{css}from"lit";const styles=css`:host{contain-intrinsic-inline-size:var(--lr-size-20rem);display:block;container-type:inline-size}[part=base]{min-inline-size:0}[part=overlap]{margin:0 0 var(--lr-space-s);color:var(--lr-color-text-quiet);font-size:var(--lr-font-size-sm)}[part=sets]{grid-auto-columns:minmax(var(--lr-size-16rem), 1fr);gap:var(--lr-space-m);overscroll-behavior-inline:contain;grid-auto-flow:column;display:grid;overflow:auto
|
|
1
|
+
import{css}from"lit";const styles=css`:host{contain-intrinsic-inline-size:var(--lr-size-20rem);display:block;container-type:inline-size}[part=base]{min-inline-size:0}[part=overlap]{margin:0 0 var(--lr-space-s);color:var(--lr-color-text-quiet);font-size:var(--lr-font-size-sm)}[part=sets]{grid-auto-columns:minmax(var(--lr-size-16rem), 1fr);gap:var(--lr-space-m);overscroll-behavior-inline:contain;grid-auto-flow:column;display:grid;overflow:auto hidden}[part=set]{min-inline-size:0}[part=set-heading]{margin:0 0 var(--lr-space-s);font-size:var(--lr-font-size-m)}[part=chunks]{gap:var(--lr-space-s);flex-direction:column;margin:0;padding:0;list-style:none;display:flex}[part~=chunk]{gap:var(--lr-space-xs) var(--lr-space-s);box-sizing:border-box;inline-size:100%;min-inline-size:var(--lr-icon-button-size);min-block-size:var(--lr-icon-button-size);padding:var(--lr-space-s);border:var(--lr-border-width-thin) solid var(--lr-color-border);border-radius:var(--lr-radius);background:var(--lr-color-surface);color:var(--lr-color-text);font:inherit;text-align:start;cursor:pointer;transition:background-color var(--lr-transition-fast);grid-template-columns:auto minmax(0,1fr);display:grid}[part~=chunk]:hover{background:var(--lr-color-surface-raised)}[part~=chunk]:active{background:color-mix(in oklab, var(--lr-color-surface-raised), var(--lr-color-mix-partner) var(--lr-color-mix-active))}[part~=chunk]:focus-visible{outline:var(--lr-focus-ring-width) solid var(--lr-focus-ring-color);outline-offset:var(--lr-focus-ring-offset)}[part~=chunk-selected]{border-color:var(--lr-retrieval-compare-selected-border,var(--lr-color-brand))}[part=chunk-rank]{color:var(--lr-color-text-quiet);font-size:var(--lr-font-size-xs)}[part=chunk-title],[part=chunk-text],[part=scores]{overflow-wrap:anywhere;min-inline-size:0}[part=chunk-text],[part=scores]{grid-column:1/-1}[part=chunk-text]{font-size:var(--lr-font-size-sm)}[part=scores]{gap:var(--lr-space-2xs) var(--lr-space-s);grid-template-columns:repeat(2,minmax(0,1fr));display:grid}[part=score]{justify-content:space-between;gap:var(--lr-space-xs);color:var(--lr-color-text-quiet);font-size:var(--lr-font-size-xs);display:flex}@container (inline-size<=319.98px){[part=sets]{grid-auto-columns:minmax(var(--lr-size-14rem), 100%)}[part=scores]{grid-template-columns:1fr}}`;export{styles};
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import{type TemplateResult,type PropertyValues}from'lit';import{LyraElement}from'../../../internal/lyra-element.js';export interface SourceListToggleDetail{expanded:boolean;}export interface LyraSourceListEventMap{'lr-toggle':CustomEvent<SourceListToggleDetail>;}
|
|
1
|
+
import{type TemplateResult,type PropertyValues}from'lit';import{LyraElement}from'../../../internal/lyra-element.js';import type{LyraFrame}from'../../../internal/variants.js';export interface SourceListToggleDetail{expanded:boolean;}export interface LyraSourceListEventMap{'lr-toggle':CustomEvent<SourceListToggleDetail>;}
|
|
2
2
|
/**
|
|
3
3
|
* `<lr-source-list>` — a collapsible "Sources" panel for one chat message,
|
|
4
4
|
* grouping a set of `<lr-source-card>` children (its default-slot light-DOM
|
|
@@ -34,6 +34,14 @@ import{type TemplateResult,type PropertyValues}from'lit';import{LyraElement}from
|
|
|
34
34
|
* @csspart header - The clickable header (`<button>`) toggling `expanded`.
|
|
35
35
|
* @csspart toggle - The chevron indicator inside the header.
|
|
36
36
|
* @csspart list - The wrapper around the default slot, `hidden` while collapsed.
|
|
37
|
+
* @cssprop [--lr-source-list-compact-header-padding=var(--lr-space-2xs) var(--lr-space-s)] -
|
|
38
|
+
* `[part="header"]` padding while `compact`.
|
|
39
|
+
* @cssprop [--lr-source-list-compact-header-gap=var(--lr-space-2xs)] - Gap between the header
|
|
40
|
+
* toggle and label while `compact`.
|
|
41
|
+
* @cssprop [--lr-source-list-compact-gap=var(--lr-space-2xs)] - Gap between `[part="list"]`'s
|
|
42
|
+
* rows while `compact`.
|
|
43
|
+
* @cssprop [--lr-source-list-compact-list-padding=var(--lr-space-s)] - `[part="list"]` padding
|
|
44
|
+
* while `compact`.
|
|
37
45
|
* @status stable
|
|
38
46
|
* @since 4.0.0
|
|
39
47
|
*/
|
|
@@ -48,7 +56,18 @@ label?:string;
|
|
|
48
56
|
/** Fully consumer-built, already-pluralized header summary, e.g. `"3 sources"`
|
|
49
57
|
* or `"1 source"` — this component never counts or pluralizes on its own
|
|
50
58
|
* (see the class doc). Takes precedence over `label` when both are set. */
|
|
51
|
-
labelPlural:string;
|
|
59
|
+
labelPlural:string;
|
|
60
|
+
/** Tighter header and list padding/gap, for a panel rendered repeatedly down a message
|
|
61
|
+
* transcript — same convention as this component's slotted `<lr-source-card>` children's own
|
|
62
|
+
* `compact`. Defaults to `false`, preserving the regular-density treatment. This changes
|
|
63
|
+
* density only; the outer border and surface remain, so use `frame="plain"` to remove card
|
|
64
|
+
* chrome. */
|
|
65
|
+
compact:boolean;
|
|
66
|
+
/** Visual chrome, in the library's shared container-frame vocabulary. `'card'` (the default)
|
|
67
|
+
* keeps the bordered, filled outer container. `'plain'` removes that outer border, background,
|
|
68
|
+
* and corner radius so a list nested inside existing message chrome does not double it. Plain
|
|
69
|
+
* preserves the header/list divider and whichever regular or compact padding applies. */
|
|
70
|
+
frame:LyraFrame;private slottedCount;private readonly listId;private readonly previousRoles;private roleObserver?;private roleObserverDocument?;private roleObserverGeneration;private isCompatibleListItem;private onRoleMutations;private observeRoleChanges;private syncItemRoles;private reconcileAssignedItems;connectedCallback():void;disconnectedCallback():void;adoptedCallback():void;private resetRoleObserver;protected willUpdate(changed:PropertyValues):void;firstUpdated(changed:PropertyValues):void;
|
|
52
71
|
/** Read-only, live-updated count of the currently-slotted children —
|
|
53
72
|
* handy for building a `label-plural` string that stays in sync with
|
|
54
73
|
* what's actually slotted without hand-counting DOM children, e.g.
|
|
@@ -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{nextId}from"../../../internal/a11y.js";import{chevronIcon}from"../../../internal/icons.js";import{tag}from"../../../internal/prefix.js";import{styles}from"./source-list.styles.js";import{LYRA_DEFAULT_sourceListDefaultLabel}from"../../../internal/default-strings.generated.js";class LyraSourceList extends LyraElement{constructor(){super(...arguments),this.expanded=!1,this.labelPlural="",this.slottedCount=0,this.listId=nextId("source-list-region"),this.previousRoles=new Map,this.roleObserverGeneration=0,this.onSlotChange=e=>{const elements=e.target.assignedElements({flatten:!0});this.slottedCount=elements.length,this.syncItemRoles(elements)},this.toggle=()=>{this.expanded=!this.expanded,this.emit("lr-toggle",{expanded:this.expanded})}}static{this.defaultStrings={...super.defaultStrings,sourceListDefaultLabel:LYRA_DEFAULT_sourceListDefaultLabel}}static{this.styles=[LyraElement.styles,styles]}isCompatibleListItem(element){const existingRole=element.getAttribute("role")?.trim(),role=existingRole==="listitem"&&this.previousRoles.has(element)&&this.previousRoles.get(element)!=="listitem"?void 0:existingRole;if(role==="listitem")return!0;if(role||element.hasAttribute("tabindex")||element.isContentEditable)return!1;const localName=element.localName;return localName===tag("source-card")||localName==="div"||localName==="span"}onRoleMutations(records){for(const record of records){const element=record.target;if(!(element.parentElement!==this||element.getAttribute("slot"))){record.attributeName==="role"&&this.previousRoles.has(element)&&this.previousRoles.set(element,element.getAttribute("role")),this.reconcileAssignedItems();return}}}observeRoleChanges(){if(!this.isConnected)return;const ownerDocument=this.ownerDocument;if(!this.roleObserver||this.roleObserverDocument!==ownerDocument){this.resetRoleObserver();const MutationObserverCtor=ownerDocument.defaultView?.MutationObserver;if(!MutationObserverCtor)return;const generation=this.roleObserverGeneration,observer=new MutationObserverCtor(records=>{this.roleObserver!==observer||this.roleObserverGeneration!==generation||!this.isConnected||this.ownerDocument!==ownerDocument||this.onRoleMutations(records)});this.roleObserver=observer,this.roleObserverDocument=ownerDocument}this.roleObserver.observe(this,{attributes:!0,attributeFilter:["role","tabindex","contenteditable"],subtree:!0})}syncItemRoles(elements){this.roleObserver?.disconnect();const assigned=new Set(elements),hasListSemantics=elements.every(element=>this.isCompatibleListItem(element)),list=this.shadowRoot?.querySelector('[part="list"]');this.isConnected&&hasListSemantics?list?.setAttribute("role","list"):list?.removeAttribute("role");for(const[element,role]of this.previousRoles)hasListSemantics&&assigned.has(element)&&element.getAttribute("role")==="listitem"&&role!=="listitem"||(role===null?element.removeAttribute("role"):element.setAttribute("role",role),this.previousRoles.delete(element));if(hasListSemantics)for(const element of elements)element.getAttribute("role")?.trim()||(this.previousRoles.has(element)||this.previousRoles.set(element,element.getAttribute("role")),element.setAttribute("role","listitem"));this.observeRoleChanges()}reconcileAssignedItems(){const slot=this.shadowRoot?.querySelector("slot");if(!slot)return;const elements=slot.assignedElements({flatten:!0});this.slottedCount=elements.length,this.syncItemRoles(elements)}connectedCallback(){if(super.connectedCallback(),this.observeRoleChanges(),this.hasUpdated){const ownerDocument=this.ownerDocument,generation=this.roleObserverGeneration;this.updateComplete.then(()=>{!this.isConnected||this.ownerDocument!==ownerDocument||this.roleObserverGeneration!==generation||this.reconcileAssignedItems()})}}disconnectedCallback(){this.roleObserver?.disconnect(),this.syncItemRoles([]),this.resetRoleObserver(),super.disconnectedCallback()}adoptedCallback(){super.adoptedCallback(),this.resetRoleObserver()}resetRoleObserver(){this.roleObserverGeneration+=1,this.roleObserver?.disconnect(),this.roleObserver=void 0,this.roleObserverDocument=void 0}willUpdate(changed){if(super.willUpdate(changed),!this.hasUpdated){const elements=Array.from(this.children).filter(el=>!el.getAttribute("slot"));this.slottedCount=elements.length}}firstUpdated(changed){super.firstUpdated(changed),this.reconcileAssignedItems()}get sourceCount(){return this.slottedCount}set sourceCount(_value){}render(){const requestedHeaderText=this.labelPlural||(this.label==null?this.localize("sourceListDefaultLabel"):this.label),headerText=requestedHeaderText.trim()===""?this.localize("sourceListDefaultLabel"):requestedHeaderText;return html`
|
|
1
|
+
var __decorate=function(decorators,target,key,desc){var c=arguments.length,r=c<3?target:desc===null?desc=Object.getOwnPropertyDescriptor(target,key):desc,d;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")r=Reflect.decorate(decorators,target,key,desc);else for(var i=decorators.length-1;i>=0;i--)(d=decorators[i])&&(r=(c<3?d(r):c>3?d(target,key,r):d(target,key))||r);return c>3&&r&&Object.defineProperty(target,key,r),r};import{html}from"lit";import{property,state}from"lit/decorators.js";import{LyraElement}from"../../../internal/lyra-element.js";import{nextId}from"../../../internal/a11y.js";import{chevronIcon}from"../../../internal/icons.js";import{tag}from"../../../internal/prefix.js";import{styles}from"./source-list.styles.js";import{LYRA_DEFAULT_sourceListDefaultLabel}from"../../../internal/default-strings.generated.js";class LyraSourceList extends LyraElement{constructor(){super(...arguments),this.expanded=!1,this.labelPlural="",this.compact=!1,this.frame="card",this.slottedCount=0,this.listId=nextId("source-list-region"),this.previousRoles=new Map,this.roleObserverGeneration=0,this.onSlotChange=e=>{const elements=e.target.assignedElements({flatten:!0});this.slottedCount=elements.length,this.syncItemRoles(elements)},this.toggle=()=>{this.expanded=!this.expanded,this.emit("lr-toggle",{expanded:this.expanded})}}static{this.defaultStrings={...super.defaultStrings,sourceListDefaultLabel:LYRA_DEFAULT_sourceListDefaultLabel}}static{this.styles=[LyraElement.styles,styles]}isCompatibleListItem(element){const existingRole=element.getAttribute("role")?.trim(),role=existingRole==="listitem"&&this.previousRoles.has(element)&&this.previousRoles.get(element)!=="listitem"?void 0:existingRole;if(role==="listitem")return!0;if(role||element.hasAttribute("tabindex")||element.isContentEditable)return!1;const localName=element.localName;return localName===tag("source-card")||localName==="div"||localName==="span"}onRoleMutations(records){for(const record of records){const element=record.target;if(!(element.parentElement!==this||element.getAttribute("slot"))){record.attributeName==="role"&&this.previousRoles.has(element)&&this.previousRoles.set(element,element.getAttribute("role")),this.reconcileAssignedItems();return}}}observeRoleChanges(){if(!this.isConnected)return;const ownerDocument=this.ownerDocument;if(!this.roleObserver||this.roleObserverDocument!==ownerDocument){this.resetRoleObserver();const MutationObserverCtor=ownerDocument.defaultView?.MutationObserver;if(!MutationObserverCtor)return;const generation=this.roleObserverGeneration,observer=new MutationObserverCtor(records=>{this.roleObserver!==observer||this.roleObserverGeneration!==generation||!this.isConnected||this.ownerDocument!==ownerDocument||this.onRoleMutations(records)});this.roleObserver=observer,this.roleObserverDocument=ownerDocument}this.roleObserver.observe(this,{attributes:!0,attributeFilter:["role","tabindex","contenteditable"],subtree:!0})}syncItemRoles(elements){this.roleObserver?.disconnect();const assigned=new Set(elements),hasListSemantics=elements.every(element=>this.isCompatibleListItem(element)),list=this.shadowRoot?.querySelector('[part="list"]');this.isConnected&&hasListSemantics?list?.setAttribute("role","list"):list?.removeAttribute("role");for(const[element,role]of this.previousRoles)hasListSemantics&&assigned.has(element)&&element.getAttribute("role")==="listitem"&&role!=="listitem"||(role===null?element.removeAttribute("role"):element.setAttribute("role",role),this.previousRoles.delete(element));if(hasListSemantics)for(const element of elements)element.getAttribute("role")?.trim()||(this.previousRoles.has(element)||this.previousRoles.set(element,element.getAttribute("role")),element.setAttribute("role","listitem"));this.observeRoleChanges()}reconcileAssignedItems(){const slot=this.shadowRoot?.querySelector("slot");if(!slot)return;const elements=slot.assignedElements({flatten:!0});this.slottedCount=elements.length,this.syncItemRoles(elements)}connectedCallback(){if(super.connectedCallback(),this.observeRoleChanges(),this.hasUpdated){const ownerDocument=this.ownerDocument,generation=this.roleObserverGeneration;this.updateComplete.then(()=>{!this.isConnected||this.ownerDocument!==ownerDocument||this.roleObserverGeneration!==generation||this.reconcileAssignedItems()})}}disconnectedCallback(){this.roleObserver?.disconnect(),this.syncItemRoles([]),this.resetRoleObserver(),super.disconnectedCallback()}adoptedCallback(){super.adoptedCallback(),this.resetRoleObserver()}resetRoleObserver(){this.roleObserverGeneration+=1,this.roleObserver?.disconnect(),this.roleObserver=void 0,this.roleObserverDocument=void 0}willUpdate(changed){if(super.willUpdate(changed),!this.hasUpdated){const elements=Array.from(this.children).filter(el=>!el.getAttribute("slot"));this.slottedCount=elements.length}}firstUpdated(changed){super.firstUpdated(changed),this.reconcileAssignedItems()}get sourceCount(){return this.slottedCount}set sourceCount(_value){}render(){const requestedHeaderText=this.labelPlural||(this.label==null?this.localize("sourceListDefaultLabel"):this.label),headerText=requestedHeaderText.trim()===""?this.localize("sourceListDefaultLabel"):requestedHeaderText;return html`
|
|
2
2
|
<div part="base">
|
|
3
3
|
<button
|
|
4
4
|
part="header"
|
|
@@ -15,4 +15,4 @@ var __decorate=function(decorators,target,key,desc){var c=arguments.length,r=c<3
|
|
|
15
15
|
<slot @slotchange=${this.onSlotChange}></slot>
|
|
16
16
|
</div>
|
|
17
17
|
</div>
|
|
18
|
-
`}}__decorate([property({type:Boolean,reflect:!0})],LyraSourceList.prototype,"expanded",void 0),__decorate([property()],LyraSourceList.prototype,"label",void 0),__decorate([property({attribute:"label-plural"})],LyraSourceList.prototype,"labelPlural",void 0),__decorate([state()],LyraSourceList.prototype,"slottedCount",void 0);export{LyraSourceList};
|
|
18
|
+
`}}__decorate([property({type:Boolean,reflect:!0})],LyraSourceList.prototype,"expanded",void 0),__decorate([property()],LyraSourceList.prototype,"label",void 0),__decorate([property({attribute:"label-plural"})],LyraSourceList.prototype,"labelPlural",void 0),__decorate([property({type:Boolean,reflect:!0})],LyraSourceList.prototype,"compact",void 0),__decorate([property({reflect:!0})],LyraSourceList.prototype,"frame",void 0),__decorate([state()],LyraSourceList.prototype,"slottedCount",void 0);export{LyraSourceList};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{css}from"lit";const styles=css`:host{min-inline-size:0;display:block}[part=base]{border:var(--lr-border-width-thin) solid var(--lr-color-border);border-radius:var(--lr-radius);background:var(--lr-color-surface);overflow:hidden}[part=header]{align-items:center;gap:var(--lr-space-xs);box-sizing:border-box;min-inline-size:var(--lr-icon-button-size);min-block-size:var(--lr-icon-button-size);inline-size:100%;padding:var(--lr-space-s) var(--lr-space-m);color:var(--lr-color-text);font:inherit;font-weight:var(--lr-font-weight-semibold);font-size:var(--lr-font-size-md-sm);text-align:start;cursor:pointer;transition:var(--lr-transition-interactive);background:0 0;border:none;display:flex}[part=header]:hover{background:var(--lr-color-brand-quiet);color:var(--lr-color-brand)}[part=header]:active{background:color-mix(in oklab, var(--lr-color-brand-quiet), var(--lr-color-mix-partner) var(--lr-color-mix-active));color:var(--lr-color-brand)}[part=header]:focus-visible{outline:var(--lr-focus-ring-width) solid var(--lr-focus-ring-color);outline-offset:calc(-1 * var(--lr-focus-ring-offset))}[part=toggle]{transition:transform var(--lr-transition-fast);flex:none;display:inline-flex}:host([expanded]) [part=toggle]{transform:rotate(90deg)}:host(:not([expanded]):dir(rtl)) [part=toggle]{transform:scaleX(-1)}[part=list]{gap:var(--lr-space-s);padding:0 var(--lr-space-m) var(--lr-space-m);border-block-start:var(--lr-border-width-thin) solid var(--lr-color-border);overflow-wrap:anywhere;flex-direction:column;min-inline-size:0;padding-block-start:var(--lr-space-m);display:flex}[part=list][hidden]{display:none}@media (prefers-reduced-motion:reduce){[part=toggle]{transition:none!important}}`;export{styles};
|
|
1
|
+
import{css}from"lit";const styles=css`:host{min-inline-size:0;display:block}[part=base]{border:var(--lr-border-width-thin) solid var(--lr-color-border);border-radius:var(--lr-radius);background:var(--lr-color-surface);overflow:hidden}:host([compact]) [part=header]{padding:var(--lr-source-list-compact-header-padding,var(--lr-space-2xs) var(--lr-space-s));gap:var(--lr-source-list-compact-header-gap,var(--lr-space-2xs))}:host([compact]) [part=list]{gap:var(--lr-source-list-compact-gap,var(--lr-space-2xs));padding:var(--lr-source-list-compact-list-padding,var(--lr-space-s))}:host([frame=plain]) [part=base]{background:0 0;border:0;border-radius:0}[part=header]{align-items:center;gap:var(--lr-space-xs);box-sizing:border-box;min-inline-size:var(--lr-icon-button-size);min-block-size:var(--lr-icon-button-size);inline-size:100%;padding:var(--lr-space-s) var(--lr-space-m);color:var(--lr-color-text);font:inherit;font-weight:var(--lr-font-weight-semibold);font-size:var(--lr-font-size-md-sm);text-align:start;cursor:pointer;transition:var(--lr-transition-interactive);background:0 0;border:none;display:flex}[part=header]:hover{background:var(--lr-color-brand-quiet);color:var(--lr-color-brand)}[part=header]:active{background:color-mix(in oklab, var(--lr-color-brand-quiet), var(--lr-color-mix-partner) var(--lr-color-mix-active));color:var(--lr-color-brand)}[part=header]:focus-visible{outline:var(--lr-focus-ring-width) solid var(--lr-focus-ring-color);outline-offset:calc(-1 * var(--lr-focus-ring-offset))}[part=toggle]{transition:transform var(--lr-transition-fast);flex:none;display:inline-flex}:host([expanded]) [part=toggle]{transform:rotate(90deg)}:host(:not([expanded]):dir(rtl)) [part=toggle]{transform:scaleX(-1)}[part=list]{gap:var(--lr-space-s);padding:0 var(--lr-space-m) var(--lr-space-m);border-block-start:var(--lr-border-width-thin) solid var(--lr-color-border);overflow-wrap:anywhere;flex-direction:column;min-inline-size:0;padding-block-start:var(--lr-space-m);display:flex}[part=list][hidden]{display:none}@media (prefers-reduced-motion:reduce){[part=toggle]{transition:none!important}}`;export{styles};
|
|
@@ -16,7 +16,9 @@ children?:readonly LyraSourceEntry[];}export interface LyraSourcePickerEventMap{
|
|
|
16
16
|
*
|
|
17
17
|
* @customElement lr-source-picker
|
|
18
18
|
* @event lr-sources-change - `detail: { selectedSourceIds }` — the complete updated leaf-id array,
|
|
19
|
-
* fired after every toggle including select-all.
|
|
19
|
+
* fired after every toggle including select-all. Also fires when a `sources` reassignment prunes
|
|
20
|
+
* a previously-selected id that is no longer a valid leaf. Not fired when a consumer sets
|
|
21
|
+
* `selectedSourceIds` directly; that assignment is normalized silently.
|
|
20
22
|
* @csspart base - The root wrapper.
|
|
21
23
|
* @csspart search - The built-in filter `lr-input`, only rendered when `searchable`.
|
|
22
24
|
* @csspart select-all - The header select-all row, only rendered when `showSelectAll`.
|