@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
|
@@ -19,7 +19,9 @@ import{type TemplateResult,type PropertyValues}from'lit';import{LyraElement}from
|
|
|
19
19
|
* hover. When preview content exists, the button keeps a stable
|
|
20
20
|
* `aria-describedby` relationship to the `role="tooltip"` panel while it is
|
|
21
21
|
* both hidden and visible, so assistive technology can resolve the preview
|
|
22
|
-
* as soon as focus causes it to open.
|
|
22
|
+
* as soon as focus causes it to open. An open popover participates in shared
|
|
23
|
+
* Escape ordering even while only hovered, deferring to a genuinely topmost
|
|
24
|
+
* overlay opened on top of it.
|
|
23
25
|
*
|
|
24
26
|
* An authored host `aria-label` deliberately names only the custom-element boundary; it is not
|
|
25
27
|
* copied onto the internal button. Host naming does not cross the shadow boundary, so the button
|
|
@@ -97,4 +99,4 @@ sourceId:string;
|
|
|
97
99
|
href:string;
|
|
98
100
|
/** Adds source context to the accessible name while retaining the visible citation index
|
|
99
101
|
* (`"Citation {index}, {label}"`). */
|
|
100
|
-
label:string;private popoverOpen;private buttonEl?;private popoverEl?;private readonly popoverId;private readonly slotPresence;private cleanupPositioner?;private hideTimer?;private hideTimerOwner?;private hovering;private focused;private get hasPreviewSlot();protected willUpdate(changed:PropertyValues):void;protected updated(changed:PropertyValues):void;disconnectedCallback():void;private get accessibleLabel();private showPreview;private clearHideTimer;private scheduleHidePreview;private hidePreviewNow;private onPointerEnter;private onPointerLeave;private onFocusIn;private onFocusOut;private onKeyDown;private onClick;private onDblClick;private emitOpen;render():TemplateResult;}declare global{interface HTMLElementTagNameMap{'lr-citation-badge':LyraCitationBadge;}}
|
|
102
|
+
label:string;private popoverOpen;private buttonEl?;private popoverEl?;private readonly popoverId;private readonly slotPresence;private cleanupPositioner?;private overlayHandle?;private hideTimer?;private hideTimerOwner?;private hovering;private focused;private get hasPreviewSlot();protected willUpdate(changed:PropertyValues):void;protected updated(changed:PropertyValues):void;disconnectedCallback():void;private get accessibleLabel();private showPreview;private clearHideTimer;private scheduleHidePreview;private hidePreviewNow;private onPointerEnter;private onPointerLeave;private onFocusIn;private onFocusOut;private onKeyDown;private onClick;private onDblClick;private emitOpen;render():TemplateResult;}declare global{interface HTMLElementTagNameMap{'lr-citation-badge':LyraCitationBadge;}}
|
|
@@ -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,query}from"lit/decorators.js";import{LyraElement}from"../../../internal/lyra-element.js";import{deferredPlace as place}from"../../../internal/anchored-overlay-runtime.js";import{resolveEffectivePositioningStrategy}from"../../../internal/positioning-strategy.js";import{nextId}from"../../../internal/a11y.js";import{SlotPresenceController}from"../../../internal/slot-presence-controller.js";import{finiteInteger}from"../../../internal/numbers.js";import{getNumberFormat}from"../../../internal/intl-cache.js";import{styles}from"./citation-badge.styles.js";import{LYRA_DEFAULT_citation,LYRA_DEFAULT_citationHighConfidence,LYRA_DEFAULT_citationLowConfidence,LYRA_DEFAULT_citationMediumConfidence,LYRA_DEFAULT_citationUnverified,LYRA_DEFAULT_citationVerified,LYRA_DEFAULT_citationWithCustomLabel,LYRA_DEFAULT_citationWithStatus,LYRA_DEFAULT_collapse,LYRA_DEFAULT_details,LYRA_DEFAULT_map,LYRA_DEFAULT_navigation,LYRA_DEFAULT_open,LYRA_DEFAULT_popover,LYRA_DEFAULT_search,LYRA_DEFAULT_select}from"../../../internal/default-strings.generated.js";const STATUS_MESSAGE_KEY={default:null,high:"citationHighConfidence",medium:"citationMediumConfidence",low:"citationLowConfidence",verified:"citationVerified",unverified:"citationUnverified"},HIDE_DELAY_MS=200;class LyraCitationBadge extends LyraElement{constructor(){super(...arguments),this._index=1,this.status="default",this.sourceId="",this.href="",this.label="",this.popoverOpen=!1,this.popoverId=nextId("citation-badge-popover"),this.slotPresence=new SlotPresenceController(this),this.hovering=!1,this.focused=!1,this.onPointerEnter=()=>{this.hovering=!0,this.showPreview()},this.onPointerLeave=()=>{this.hovering=!1,this.scheduleHidePreview()},this.onFocusIn=()=>{this.focused=!0,this.showPreview()},this.onFocusOut=()=>{this.focused=!1,!this.hovering&&this.hidePreviewNow()},this.onKeyDown=e=>{if(e.key==="Escape"&&this.popoverOpen){e.stopPropagation(),this.hidePreviewNow();return}e.key===" "&&!e.repeat&&e.target===this.buttonEl&&(e.preventDefault(),this.emitOpen())},this.onClick=()=>{this.emit("lr-citation-activate",{sourceId:this.sourceId,index:this.index})},this.onDblClick=()=>{this.emitOpen()}}static{this.defaultStrings={...super.defaultStrings,citation:LYRA_DEFAULT_citation,citationHighConfidence:LYRA_DEFAULT_citationHighConfidence,citationLowConfidence:LYRA_DEFAULT_citationLowConfidence,citationMediumConfidence:LYRA_DEFAULT_citationMediumConfidence,citationUnverified:LYRA_DEFAULT_citationUnverified,citationVerified:LYRA_DEFAULT_citationVerified,citationWithCustomLabel:LYRA_DEFAULT_citationWithCustomLabel,citationWithStatus:LYRA_DEFAULT_citationWithStatus,collapse:LYRA_DEFAULT_collapse,details:LYRA_DEFAULT_details,map:LYRA_DEFAULT_map,navigation:LYRA_DEFAULT_navigation,open:LYRA_DEFAULT_open,popover:LYRA_DEFAULT_popover,search:LYRA_DEFAULT_search,select:LYRA_DEFAULT_select}}static{this.styles=[LyraElement.styles,styles]}get index(){return this._index}set index(value){const old=this._index;this._index=finiteInteger(value,1,1),this.requestUpdate("index",old)}get hasPreviewSlot(){return this.slotPresence.has()}willUpdate(changed){super.willUpdate(changed),this.popoverOpen&&!this.hasPreviewSlot&&this.hidePreviewNow()}updated(changed){super.updated(changed),changed.has("popoverOpen")&&(this.cleanupPositioner?.(),this.cleanupPositioner=void 0,this.popoverOpen&&this.buttonEl&&this.popoverEl&&(this.cleanupPositioner=place(this.buttonEl,this.popoverEl,{placement:"top-start",strategy:resolveEffectivePositioningStrategy(this,void 0,"fixed")})))}disconnectedCallback(){super.disconnectedCallback(),this.cleanupPositioner?.(),this.cleanupPositioner=void 0,this.clearHideTimer(),this.popoverOpen=!1,this.hovering=!1,this.focused=!1}get accessibleLabel(){const index=getNumberFormat(this.effectiveLocale).format(this.index);if(this.label)return this.localize("citationWithCustomLabel",void 0,{index,label:this.label});const key=STATUS_MESSAGE_KEY[this.status],statusText=key?this.localize(key):"",citationLabel=this.localize("citation",void 0,{index});return statusText?this.localize("citationWithStatus",void 0,{index,status:statusText}):citationLabel}showPreview(){this.hasPreviewSlot&&(this.clearHideTimer(),!this.popoverOpen&&(this.popoverOpen=!0))}clearHideTimer(){this.hideTimer!==void 0&&this.hideTimerOwner?.clearTimeout(this.hideTimer),this.hideTimer=void 0,this.hideTimerOwner=void 0}scheduleHidePreview(){if(!this.popoverOpen||this.hovering||this.focused)return;this.clearHideTimer();const ownerWindow=this.ownerDocument.defaultView;if(!ownerWindow)return;const handle=ownerWindow.setTimeout(()=>{this.hideTimer===handle&&(this.hideTimer=void 0,this.hideTimerOwner=void 0,this.popoverOpen=!1)},HIDE_DELAY_MS);this.hideTimer=handle,this.hideTimerOwner=ownerWindow}hidePreviewNow(){this.clearHideTimer(),this.popoverOpen&&(this.popoverOpen=!1)}emitOpen(){this.emit("lr-citation-open",{sourceId:this.sourceId,index:this.index,href:this.href||void 0})}render(){const formattedIndex=getNumberFormat(this.effectiveLocale).format(this.index);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,state,query}from"lit/decorators.js";import{LyraElement}from"../../../internal/lyra-element.js";import{deferredPlace as place}from"../../../internal/anchored-overlay-runtime.js";import{activateNonmodalOverlay}from"../../../internal/nonmodal-overlay-manager.js";import{resolveEffectivePositioningStrategy}from"../../../internal/positioning-strategy.js";import{nextId}from"../../../internal/a11y.js";import{SlotPresenceController}from"../../../internal/slot-presence-controller.js";import{finiteInteger}from"../../../internal/numbers.js";import{getNumberFormat}from"../../../internal/intl-cache.js";import{styles}from"./citation-badge.styles.js";import{LYRA_DEFAULT_citation,LYRA_DEFAULT_citationHighConfidence,LYRA_DEFAULT_citationLowConfidence,LYRA_DEFAULT_citationMediumConfidence,LYRA_DEFAULT_citationUnverified,LYRA_DEFAULT_citationVerified,LYRA_DEFAULT_citationWithCustomLabel,LYRA_DEFAULT_citationWithStatus,LYRA_DEFAULT_collapse,LYRA_DEFAULT_details,LYRA_DEFAULT_map,LYRA_DEFAULT_navigation,LYRA_DEFAULT_open,LYRA_DEFAULT_popover,LYRA_DEFAULT_search,LYRA_DEFAULT_select}from"../../../internal/default-strings.generated.js";const STATUS_MESSAGE_KEY={default:null,high:"citationHighConfidence",medium:"citationMediumConfidence",low:"citationLowConfidence",verified:"citationVerified",unverified:"citationUnverified"},HIDE_DELAY_MS=200;class LyraCitationBadge extends LyraElement{constructor(){super(...arguments),this._index=1,this.status="default",this.sourceId="",this.href="",this.label="",this.popoverOpen=!1,this.popoverId=nextId("citation-badge-popover"),this.slotPresence=new SlotPresenceController(this),this.hovering=!1,this.focused=!1,this.onPointerEnter=()=>{this.hovering=!0,this.showPreview()},this.onPointerLeave=()=>{this.hovering=!1,this.scheduleHidePreview()},this.onFocusIn=()=>{this.focused=!0,this.showPreview()},this.onFocusOut=()=>{this.focused=!1,!this.hovering&&this.hidePreviewNow()},this.onKeyDown=e=>{if(e.key==="Escape"&&this.popoverOpen&&this.overlayHandle?.isTopmost()){e.stopPropagation(),this.hidePreviewNow();return}e.key===" "&&!e.repeat&&e.target===this.buttonEl&&(e.preventDefault(),this.emitOpen())},this.onClick=()=>{this.emit("lr-citation-activate",{sourceId:this.sourceId,index:this.index})},this.onDblClick=()=>{this.emitOpen()}}static{this.defaultStrings={...super.defaultStrings,citation:LYRA_DEFAULT_citation,citationHighConfidence:LYRA_DEFAULT_citationHighConfidence,citationLowConfidence:LYRA_DEFAULT_citationLowConfidence,citationMediumConfidence:LYRA_DEFAULT_citationMediumConfidence,citationUnverified:LYRA_DEFAULT_citationUnverified,citationVerified:LYRA_DEFAULT_citationVerified,citationWithCustomLabel:LYRA_DEFAULT_citationWithCustomLabel,citationWithStatus:LYRA_DEFAULT_citationWithStatus,collapse:LYRA_DEFAULT_collapse,details:LYRA_DEFAULT_details,map:LYRA_DEFAULT_map,navigation:LYRA_DEFAULT_navigation,open:LYRA_DEFAULT_open,popover:LYRA_DEFAULT_popover,search:LYRA_DEFAULT_search,select:LYRA_DEFAULT_select}}static{this.styles=[LyraElement.styles,styles]}get index(){return this._index}set index(value){const old=this._index;this._index=finiteInteger(value,1,1),this.requestUpdate("index",old)}get hasPreviewSlot(){return this.slotPresence.has()}willUpdate(changed){super.willUpdate(changed),this.popoverOpen&&!this.hasPreviewSlot&&this.hidePreviewNow()}updated(changed){super.updated(changed),changed.has("popoverOpen")&&(this.cleanupPositioner?.(),this.cleanupPositioner=void 0,this.overlayHandle?.deactivate({restoreFocus:!1}),this.overlayHandle=void 0,this.popoverOpen&&this.buttonEl&&this.popoverEl&&(this.cleanupPositioner=place(this.buttonEl,this.popoverEl,{placement:"top-start",strategy:resolveEffectivePositioningStrategy(this,void 0,"fixed")}),this.overlayHandle=activateNonmodalOverlay({host:this,panel:()=>this.popoverEl??null,onEscape:()=>this.hidePreviewNow(),restoreFocusTo:null})))}disconnectedCallback(){super.disconnectedCallback(),this.cleanupPositioner?.(),this.cleanupPositioner=void 0,this.overlayHandle?.deactivate({restoreFocus:!1}),this.overlayHandle=void 0,this.clearHideTimer(),this.popoverOpen=!1,this.hovering=!1,this.focused=!1}get accessibleLabel(){const index=getNumberFormat(this.effectiveLocale).format(this.index);if(this.label)return this.localize("citationWithCustomLabel",void 0,{index,label:this.label});const key=STATUS_MESSAGE_KEY[this.status],statusText=key?this.localize(key):"",citationLabel=this.localize("citation",void 0,{index});return statusText?this.localize("citationWithStatus",void 0,{index,status:statusText}):citationLabel}showPreview(){this.hasPreviewSlot&&(this.clearHideTimer(),!this.popoverOpen&&(this.popoverOpen=!0))}clearHideTimer(){this.hideTimer!==void 0&&this.hideTimerOwner?.clearTimeout(this.hideTimer),this.hideTimer=void 0,this.hideTimerOwner=void 0}scheduleHidePreview(){if(!this.popoverOpen||this.hovering||this.focused)return;this.clearHideTimer();const ownerWindow=this.ownerDocument.defaultView;if(!ownerWindow)return;const handle=ownerWindow.setTimeout(()=>{this.hideTimer===handle&&(this.hideTimer=void 0,this.hideTimerOwner=void 0,this.popoverOpen=!1)},HIDE_DELAY_MS);this.hideTimer=handle,this.hideTimerOwner=ownerWindow}hidePreviewNow(){this.clearHideTimer(),this.popoverOpen&&(this.popoverOpen=!1)}emitOpen(){this.emit("lr-citation-open",{sourceId:this.sourceId,index:this.index,href:this.href||void 0})}render(){const formattedIndex=getNumberFormat(this.effectiveLocale).format(this.index);return html`
|
|
2
2
|
<span
|
|
3
3
|
class="wrapper"
|
|
4
4
|
@pointerenter=${this.onPointerEnter}
|
|
@@ -10,6 +10,9 @@ import type{LyraEventDetailSnapshot}from'../../../internal/lyra-element.js';impo
|
|
|
10
10
|
* and reassign it after changes; mutating the assigned array does not update the view. Blank
|
|
11
11
|
* claim/citation ids and later duplicates are ignored before lookup, rendering, counts, or
|
|
12
12
|
* activation. The first record for an id wins.
|
|
13
|
+
*
|
|
14
|
+
* At most 500 claims render as `[part="claim"]` rows; a `claims` array past that length renders a
|
|
15
|
+
* localized `[part="limit"]` notice after the list rather than mounting an unbounded number of rows.
|
|
13
16
|
* A nested badge's `lr-citation-activate` is contained and translated to `lr-citation-select` with
|
|
14
17
|
* the complete citation record. Its distinct `lr-citation-open` signal intentionally remains a
|
|
15
18
|
* composed child event and crosses this host unchanged, preserving its `{ sourceId, index, href }`
|
|
@@ -28,6 +31,7 @@ import type{LyraEventDetailSnapshot}from'../../../internal/lyra-element.js';impo
|
|
|
28
31
|
* @csspart confidence - The optional localized confidence.
|
|
29
32
|
* @csspart explanation - Caller-supplied assessment explanation.
|
|
30
33
|
* @csspart evidence - Resolved evidence citations for one claim.
|
|
34
|
+
* @csspart limit - Localized notice shown when `claims` exceeds the 500-claim render ceiling.
|
|
31
35
|
* @csspart empty - The empty state.
|
|
32
36
|
* @cssprop [--lr-claim-evidence-compact-padding=var(--lr-space-xs)] - `[part="claim-trigger"]`
|
|
33
37
|
* padding while `compact`.
|
|
@@ -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{getOwnDataDescriptor,MISSING_OWN_DATA_DESCRIPTOR,UNSAFE_OWN_DATA_DESCRIPTOR}from"../../../internal/data-descriptors.js";import{getNumberFormat}from"../../../internal/intl-cache.js";import{LyraElement}from"../../../internal/lyra-element.js";import{finiteRange}from"../../../internal/numbers.js";import"../../overlays/badge/badge.class.js";import"../../overlays/empty/empty.class.js";import"../citation-badge/citation-badge.class.js";import{styles}from"./claim-evidence.styles.js";import{retrievalSemanticLabel,retrievalSemanticRole}from"../retrieval-semantic-owner.js";import{LYRA_DEFAULT_citation,LYRA_DEFAULT_claimEvidenceConfidence,LYRA_DEFAULT_claimEvidenceContradicted,LYRA_DEFAULT_claimEvidenceEmpty,LYRA_DEFAULT_claimEvidenceLabel,LYRA_DEFAULT_claimEvidencePartiallySupported,LYRA_DEFAULT_claimEvidenceSupported,LYRA_DEFAULT_claimEvidenceUnsupported,LYRA_DEFAULT_collapse,LYRA_DEFAULT_details,LYRA_DEFAULT_map,LYRA_DEFAULT_navigation,LYRA_DEFAULT_open,LYRA_DEFAULT_popover,LYRA_DEFAULT_search,LYRA_DEFAULT_select}from"../../../internal/default-strings.generated.js";const STATUS_VARIANT={supported:"success","partially-supported":"warning",unsupported:"danger",contradicted:"danger"},MAX_PROJECTED_CLAIM_EVIDENCE_ROWS=1e4,EMPTY_CANONICAL_CLAIMS=Object.freeze([]),EMPTY_CANONICAL_CITATIONS=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 hasUnsafeDescriptor(descriptors){return descriptors.some(descriptor=>descriptor===UNSAFE_OWN_DATA_DESCRIPTOR)}function projectCitationIds(value){try{if(!Array.isArray(value))return;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;const ids=[],length=Math.min(lengthDescriptor.value,MAX_PROJECTED_CLAIM_EVIDENCE_ROWS);for(let index=0;index<length;index+=1){const descriptor=descriptorValue(value,String(index));if(descriptor===UNSAFE_OWN_DATA_DESCRIPTOR)return;descriptor!==MISSING_OWN_DATA_DESCRIPTOR&&typeof descriptor.value=="string"&&ids.push(descriptor.value)}return Object.freeze(ids)}catch{return}}function projectClaim(value){try{if(value===null||typeof value!="object"||Array.isArray(value))return;const idDescriptor=descriptorValue(value,"id"),textDescriptor=descriptorValue(value,"text"),statusDescriptor=descriptorValue(value,"status"),citationIdsDescriptor=descriptorValue(value,"citationIds"),confidenceDescriptor=descriptorValue(value,"confidence"),explanationDescriptor=descriptorValue(value,"explanation");if(hasUnsafeDescriptor([idDescriptor,textDescriptor,statusDescriptor,citationIdsDescriptor,confidenceDescriptor,explanationDescriptor]))return;const id=valueOfDescriptor(idDescriptor),text=valueOfDescriptor(textDescriptor),citationIds=projectCitationIds(valueOfDescriptor(citationIdsDescriptor));if(typeof id!="string"||id.trim().length===0||typeof text!="string"||citationIds===void 0)return;const status=valueOfDescriptor(statusDescriptor),confidence=valueOfDescriptor(confidenceDescriptor),explanation=valueOfDescriptor(explanationDescriptor);return Object.freeze({source:value,id,text,status:typeof status=="string"?status:"unsupported",citationIds,...typeof confidence=="number"&&Number.isFinite(confidence)?{confidence}:{},...typeof explanation=="string"?{explanation}:{}})}catch{return}}function projectCitation(value){try{if(value===null||typeof value!="object"||Array.isArray(value))return;const idDescriptor=descriptorValue(value,"id"),sourceIdDescriptor=descriptorValue(value,"sourceId"),labelDescriptor=descriptorValue(value,"label"),quoteDescriptor=descriptorValue(value,"quote");if(hasUnsafeDescriptor([idDescriptor,sourceIdDescriptor,labelDescriptor,quoteDescriptor]))return;const id=valueOfDescriptor(idDescriptor);if(typeof id!="string"||id.trim().length===0)return;const sourceId=valueOfDescriptor(sourceIdDescriptor),label=valueOfDescriptor(labelDescriptor),quote=valueOfDescriptor(quoteDescriptor);return Object.freeze({source:value,id,...typeof sourceId=="string"?{sourceId}:{},...typeof label=="string"?{label}:{},...typeof quote=="string"?{quote}:{}})}catch{return}}function projectRows(value,project,empty){try{if(!Array.isArray(value))return empty;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;const rows=[],seen=new Set,length=Math.min(lengthDescriptor.value,MAX_PROJECTED_CLAIM_EVIDENCE_ROWS);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 row=project(descriptor.value);!row||seen.has(row.id)||(seen.add(row.id),rows.push(row))}return Object.freeze(rows)}catch{return empty}}function normalizedClaimStatus(status){switch(status){case"supported":case"partially-supported":case"unsupported":case"contradicted":return status;default:return"unsupported"}}class LyraClaimEvidence extends LyraElement{constructor(){super(...arguments),this.claims=[],this.citations=[],this.selectedClaimId="",this.label="",this.compact=!1,this.frame="card",this.canonicalClaimsBySource=new WeakMap,this.canonicalCitationsBySource=new WeakMap}static{this.defaultStrings={...super.defaultStrings,citation:LYRA_DEFAULT_citation,claimEvidenceConfidence:LYRA_DEFAULT_claimEvidenceConfidence,claimEvidenceContradicted:LYRA_DEFAULT_claimEvidenceContradicted,claimEvidenceEmpty:LYRA_DEFAULT_claimEvidenceEmpty,claimEvidenceLabel:LYRA_DEFAULT_claimEvidenceLabel,claimEvidencePartiallySupported:LYRA_DEFAULT_claimEvidencePartiallySupported,claimEvidenceSupported:LYRA_DEFAULT_claimEvidenceSupported,claimEvidenceUnsupported:LYRA_DEFAULT_claimEvidenceUnsupported,collapse:LYRA_DEFAULT_collapse,details:LYRA_DEFAULT_details,map:LYRA_DEFAULT_map,navigation:LYRA_DEFAULT_navigation,open:LYRA_DEFAULT_open,popover:LYRA_DEFAULT_popover,search:LYRA_DEFAULT_search,select:LYRA_DEFAULT_select}}static{this.ownedCollectionProperties=Object.freeze(["claims","citations"])}static{this.identityCollectionProperties=Object.freeze(["claims","citations"])}static{this.styles=[LyraElement.styles,styles]}static{this.immutableEventDetails=Object.freeze(["lr-claim-select","lr-citation-select"])}static{this.identityEventDetailProperties=Object.freeze({"lr-claim-select":Object.freeze(["claim"]),"lr-citation-select":Object.freeze(["citation"])})}canonicalRowsFor(source,cache,project,empty){if(source===null||typeof source!="object")return empty;const cached=cache.get(source);if(cached)return cached;const rows=projectRows(source,project,empty);return cache.set(source,rows),rows}get normalizedClaims(){return this.canonicalRowsFor(this.claims,this.canonicalClaimsBySource,projectClaim,EMPTY_CANONICAL_CLAIMS)}get normalizedCitations(){return this.canonicalRowsFor(this.citations,this.canonicalCitationsBySource,projectCitation,EMPTY_CANONICAL_CITATIONS)}statusLabel(status){switch(status){case"supported":return this.localize("claimEvidenceSupported");case"partially-supported":return this.localize("claimEvidencePartiallySupported");case"unsupported":return this.localize("claimEvidenceUnsupported");case"contradicted":return this.localize("claimEvidenceContradicted")}}confidenceLabel(value){const percent=getNumberFormat(this.effectiveLocale,{style:"percent"}).format(finiteRange(value,0,0,1));return this.localize("claimEvidenceConfidence",void 0,{percent})}resolvedCitations(claim,citations){const ids=new Set(claim.citationIds);return citations.filter(citation=>ids.has(citation.id))}renderClaim(claim,allCitations){const selected=claim.id===this.selectedClaimId,citations=this.resolvedCitations(claim,allCitations),status=normalizedClaimStatus(claim.status);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{getOwnDataDescriptor,MISSING_OWN_DATA_DESCRIPTOR,UNSAFE_OWN_DATA_DESCRIPTOR}from"../../../internal/data-descriptors.js";import{getNumberFormat}from"../../../internal/intl-cache.js";import{LyraElement}from"../../../internal/lyra-element.js";import{finiteRange}from"../../../internal/numbers.js";import"../../overlays/badge/badge.class.js";import"../../overlays/empty/empty.class.js";import"../citation-badge/citation-badge.class.js";import{styles}from"./claim-evidence.styles.js";import{retrievalSemanticLabel,retrievalSemanticRole}from"../retrieval-semantic-owner.js";import{LYRA_DEFAULT_citation,LYRA_DEFAULT_claimEvidenceClaimsLimit,LYRA_DEFAULT_claimEvidenceConfidence,LYRA_DEFAULT_claimEvidenceContradicted,LYRA_DEFAULT_claimEvidenceEmpty,LYRA_DEFAULT_claimEvidenceLabel,LYRA_DEFAULT_claimEvidencePartiallySupported,LYRA_DEFAULT_claimEvidenceSupported,LYRA_DEFAULT_claimEvidenceUnsupported,LYRA_DEFAULT_collapse,LYRA_DEFAULT_details,LYRA_DEFAULT_map,LYRA_DEFAULT_navigation,LYRA_DEFAULT_open,LYRA_DEFAULT_popover,LYRA_DEFAULT_search,LYRA_DEFAULT_select}from"../../../internal/default-strings.generated.js";const STATUS_VARIANT={supported:"success","partially-supported":"warning",unsupported:"danger",contradicted:"danger"},MAX_PROJECTED_CLAIM_EVIDENCE_ROWS=1e4,MAX_RENDERED_CLAIM_EVIDENCE_CLAIMS=500,EMPTY_CANONICAL_CLAIMS=Object.freeze([]),EMPTY_CANONICAL_CITATIONS=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 hasUnsafeDescriptor(descriptors){return descriptors.some(descriptor=>descriptor===UNSAFE_OWN_DATA_DESCRIPTOR)}function projectCitationIds(value){try{if(!Array.isArray(value))return;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;const ids=[],length=Math.min(lengthDescriptor.value,MAX_PROJECTED_CLAIM_EVIDENCE_ROWS);for(let index=0;index<length;index+=1){const descriptor=descriptorValue(value,String(index));if(descriptor===UNSAFE_OWN_DATA_DESCRIPTOR)return;descriptor!==MISSING_OWN_DATA_DESCRIPTOR&&typeof descriptor.value=="string"&&ids.push(descriptor.value)}return Object.freeze(ids)}catch{return}}function projectClaim(value){try{if(value===null||typeof value!="object"||Array.isArray(value))return;const idDescriptor=descriptorValue(value,"id"),textDescriptor=descriptorValue(value,"text"),statusDescriptor=descriptorValue(value,"status"),citationIdsDescriptor=descriptorValue(value,"citationIds"),confidenceDescriptor=descriptorValue(value,"confidence"),explanationDescriptor=descriptorValue(value,"explanation");if(hasUnsafeDescriptor([idDescriptor,textDescriptor,statusDescriptor,citationIdsDescriptor,confidenceDescriptor,explanationDescriptor]))return;const id=valueOfDescriptor(idDescriptor),text=valueOfDescriptor(textDescriptor),citationIds=projectCitationIds(valueOfDescriptor(citationIdsDescriptor));if(typeof id!="string"||id.trim().length===0||typeof text!="string"||citationIds===void 0)return;const status=valueOfDescriptor(statusDescriptor),confidence=valueOfDescriptor(confidenceDescriptor),explanation=valueOfDescriptor(explanationDescriptor);return Object.freeze({source:value,id,text,status:typeof status=="string"?status:"unsupported",citationIds,...typeof confidence=="number"&&Number.isFinite(confidence)?{confidence}:{},...typeof explanation=="string"?{explanation}:{}})}catch{return}}function projectCitation(value){try{if(value===null||typeof value!="object"||Array.isArray(value))return;const idDescriptor=descriptorValue(value,"id"),sourceIdDescriptor=descriptorValue(value,"sourceId"),labelDescriptor=descriptorValue(value,"label"),quoteDescriptor=descriptorValue(value,"quote");if(hasUnsafeDescriptor([idDescriptor,sourceIdDescriptor,labelDescriptor,quoteDescriptor]))return;const id=valueOfDescriptor(idDescriptor);if(typeof id!="string"||id.trim().length===0)return;const sourceId=valueOfDescriptor(sourceIdDescriptor),label=valueOfDescriptor(labelDescriptor),quote=valueOfDescriptor(quoteDescriptor);return Object.freeze({source:value,id,...typeof sourceId=="string"?{sourceId}:{},...typeof label=="string"?{label}:{},...typeof quote=="string"?{quote}:{}})}catch{return}}function projectRows(value,project,empty){try{if(!Array.isArray(value))return empty;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;const rows=[],seen=new Set,length=Math.min(lengthDescriptor.value,MAX_PROJECTED_CLAIM_EVIDENCE_ROWS);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 row=project(descriptor.value);!row||seen.has(row.id)||(seen.add(row.id),rows.push(row))}return Object.freeze(rows)}catch{return empty}}function normalizedClaimStatus(status){switch(status){case"supported":case"partially-supported":case"unsupported":case"contradicted":return status;default:return"unsupported"}}class LyraClaimEvidence extends LyraElement{constructor(){super(...arguments),this.claims=[],this.citations=[],this.selectedClaimId="",this.label="",this.compact=!1,this.frame="card",this.canonicalClaimsBySource=new WeakMap,this.canonicalCitationsBySource=new WeakMap}static{this.defaultStrings={...super.defaultStrings,citation:LYRA_DEFAULT_citation,claimEvidenceClaimsLimit:LYRA_DEFAULT_claimEvidenceClaimsLimit,claimEvidenceConfidence:LYRA_DEFAULT_claimEvidenceConfidence,claimEvidenceContradicted:LYRA_DEFAULT_claimEvidenceContradicted,claimEvidenceEmpty:LYRA_DEFAULT_claimEvidenceEmpty,claimEvidenceLabel:LYRA_DEFAULT_claimEvidenceLabel,claimEvidencePartiallySupported:LYRA_DEFAULT_claimEvidencePartiallySupported,claimEvidenceSupported:LYRA_DEFAULT_claimEvidenceSupported,claimEvidenceUnsupported:LYRA_DEFAULT_claimEvidenceUnsupported,collapse:LYRA_DEFAULT_collapse,details:LYRA_DEFAULT_details,map:LYRA_DEFAULT_map,navigation:LYRA_DEFAULT_navigation,open:LYRA_DEFAULT_open,popover:LYRA_DEFAULT_popover,search:LYRA_DEFAULT_search,select:LYRA_DEFAULT_select}}static{this.ownedCollectionProperties=Object.freeze(["claims","citations"])}static{this.identityCollectionProperties=Object.freeze(["claims","citations"])}static{this.styles=[LyraElement.styles,styles]}static{this.immutableEventDetails=Object.freeze(["lr-claim-select","lr-citation-select"])}static{this.identityEventDetailProperties=Object.freeze({"lr-claim-select":Object.freeze(["claim"]),"lr-citation-select":Object.freeze(["citation"])})}canonicalRowsFor(source,cache,project,empty){if(source===null||typeof source!="object")return empty;const cached=cache.get(source);if(cached)return cached;const rows=projectRows(source,project,empty);return cache.set(source,rows),rows}get normalizedClaims(){return this.canonicalRowsFor(this.claims,this.canonicalClaimsBySource,projectClaim,EMPTY_CANONICAL_CLAIMS)}get normalizedCitations(){return this.canonicalRowsFor(this.citations,this.canonicalCitationsBySource,projectCitation,EMPTY_CANONICAL_CITATIONS)}statusLabel(status){switch(status){case"supported":return this.localize("claimEvidenceSupported");case"partially-supported":return this.localize("claimEvidencePartiallySupported");case"unsupported":return this.localize("claimEvidenceUnsupported");case"contradicted":return this.localize("claimEvidenceContradicted")}}confidenceLabel(value){const percent=getNumberFormat(this.effectiveLocale,{style:"percent"}).format(finiteRange(value,0,0,1));return this.localize("claimEvidenceConfidence",void 0,{percent})}resolvedCitations(claim,citations){const ids=new Set(claim.citationIds);return citations.filter(citation=>ids.has(citation.id))}renderClaim(claim,allCitations){const selected=claim.id===this.selectedClaimId,citations=this.resolvedCitations(claim,allCitations),status=normalizedClaimStatus(claim.status);return html`
|
|
2
2
|
<li part=${selected?"claim claim-selected":"claim"} aria-current=${selected?"true":"false"}>
|
|
3
3
|
<button
|
|
4
4
|
part="claim-trigger"
|
|
@@ -36,8 +36,9 @@ var __decorate=function(decorators,target,key,desc){var c=arguments.length,r=c<3
|
|
|
36
36
|
aria-label=${label??nothing}
|
|
37
37
|
>
|
|
38
38
|
${claims.length?html`<ol part="list">
|
|
39
|
-
${claims.map(claim=>this.renderClaim(claim,citations))}
|
|
40
|
-
</ol
|
|
39
|
+
${claims.slice(0,MAX_RENDERED_CLAIM_EVIDENCE_CLAIMS).map(claim=>this.renderClaim(claim,citations))}
|
|
40
|
+
</ol>
|
|
41
|
+
${claims.length>MAX_RENDERED_CLAIM_EVIDENCE_CLAIMS?html`<p part="limit" role="note">${this.localize("claimEvidenceClaimsLimit",void 0,{count:getNumberFormat(this.effectiveLocale).format(MAX_RENDERED_CLAIM_EVIDENCE_CLAIMS)})}</p>`:nothing}`:html`<lr-empty
|
|
41
42
|
part="empty"
|
|
42
43
|
heading=${this.localize("claimEvidenceEmpty")}
|
|
43
44
|
></lr-empty>`}
|
|
@@ -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=list]{gap:var(--lr-space-s);flex-direction:column;margin:0;padding:0;list-style:none;display:flex}[part~=claim]{border:var(--lr-border-width-thin) solid var(--lr-color-border);border-radius:var(--lr-radius);background:var(--lr-color-surface);min-inline-size:0;overflow:hidden}[part~=claim-selected]{border-color:var(--lr-color-brand)}:host([compact]) [part=claim-trigger]{padding:var(--lr-claim-evidence-compact-padding,var(--lr-space-xs));gap:var(--lr-claim-evidence-compact-gap,var(--lr-space-xs))}:host([frame=plain]) [part~=claim]{background:0 0;border:0;border-radius:0}[part=claim-trigger]{gap: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);color:var(--lr-color-text);font:inherit;text-align:start;cursor:pointer;transition:background-color var(--lr-transition-fast);background:0 0;border:0;grid-template-columns:auto minmax(0,1fr) auto;align-items:center;display:grid}[part=claim-trigger]:hover{background:var(--lr-color-surface-raised)}[part=claim-trigger]:active{background:color-mix(in oklab, var(--lr-color-surface-raised), var(--lr-color-mix-partner) var(--lr-color-mix-active))}[part=claim-trigger]:focus-visible{outline:var(--lr-focus-ring-width) solid var(--lr-focus-ring-color);outline-offset:calc(var(--lr-focus-ring-offset) * -1)}[part=claim-text]{overflow-wrap:anywhere;min-inline-size:0}[part=confidence]{color:var(--lr-color-text-quiet);font-size:var(--lr-font-size-sm);white-space:nowrap}[part=explanation]{padding:0 var(--lr-space-s) var(--lr-space-s);color:var(--lr-color-text-quiet);font-size:var(--lr-font-size-sm);margin:0}[part=evidence]{gap:var(--lr-space-xs);padding:var(--lr-space-s);border-block-start:var(--lr-border-width-thin) solid var(--lr-color-border);flex-wrap:wrap;align-items:center;display:flex}[part=evidence] q{min-inline-size:0;color:var(--lr-color-text-quiet);font-size:var(--lr-font-size-sm);overflow-wrap:anywhere}@container (inline-size<=319.98px){[part=claim-trigger]{grid-template-columns:1fr}}`;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=list]{gap:var(--lr-space-s);flex-direction:column;margin:0;padding:0;list-style:none;display:flex}[part~=claim]{border:var(--lr-border-width-thin) solid var(--lr-color-border);border-radius:var(--lr-radius);background:var(--lr-color-surface);min-inline-size:0;overflow:hidden}[part~=claim-selected]{border-color:var(--lr-color-brand)}:host([compact]) [part=claim-trigger]{padding:var(--lr-claim-evidence-compact-padding,var(--lr-space-xs));gap:var(--lr-claim-evidence-compact-gap,var(--lr-space-xs))}:host([frame=plain]) [part~=claim]{background:0 0;border:0;border-radius:0}[part=claim-trigger]{gap: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);color:var(--lr-color-text);font:inherit;text-align:start;cursor:pointer;transition:background-color var(--lr-transition-fast);background:0 0;border:0;grid-template-columns:auto minmax(0,1fr) auto;align-items:center;display:grid}[part=claim-trigger]:hover{background:var(--lr-color-surface-raised)}[part=claim-trigger]:active{background:color-mix(in oklab, var(--lr-color-surface-raised), var(--lr-color-mix-partner) var(--lr-color-mix-active))}[part=claim-trigger]:focus-visible{outline:var(--lr-focus-ring-width) solid var(--lr-focus-ring-color);outline-offset:calc(var(--lr-focus-ring-offset) * -1)}[part=claim-text]{overflow-wrap:anywhere;min-inline-size:0}[part=confidence]{color:var(--lr-color-text-quiet);font-size:var(--lr-font-size-sm);white-space:nowrap}[part=explanation]{padding:0 var(--lr-space-s) var(--lr-space-s);color:var(--lr-color-text-quiet);font-size:var(--lr-font-size-sm);margin:0}[part=evidence]{gap:var(--lr-space-xs);padding:var(--lr-space-s);border-block-start:var(--lr-border-width-thin) solid var(--lr-color-border);flex-wrap:wrap;align-items:center;display:flex}[part=evidence] q{min-inline-size:0;color:var(--lr-color-text-quiet);font-size:var(--lr-font-size-sm);overflow-wrap:anywhere}@container (inline-size<=319.98px){[part=claim-trigger]{grid-template-columns:1fr}}[part=limit]{margin:var(--lr-space-s);color:var(--lr-color-text-quiet);font-size:var(--lr-font-size-xs)}`;export{styles};
|
|
@@ -33,6 +33,10 @@ export type CommunityCardAppearance=LyraFrame;export interface LyraCommunityCard
|
|
|
33
33
|
* @csspart empty - The empty state shown when `community` is `null`.
|
|
34
34
|
* @cssprop [--lr-community-card-bg=var(--lr-color-surface)] - Resting background of `[part="base"]`.
|
|
35
35
|
* `frame="plain"` still paints transparent.
|
|
36
|
+
* @cssprop [--lr-community-card-compact-padding=var(--lr-space-s)] - `[part="base"]` padding while
|
|
37
|
+
* `compact`.
|
|
38
|
+
* @cssprop [--lr-community-card-compact-gap=var(--lr-space-xs)] - `[part="base"]` gap while
|
|
39
|
+
* `compact`.
|
|
36
40
|
* @status stable
|
|
37
41
|
* @since 4.0.0
|
|
38
42
|
*/
|
|
@@ -43,7 +47,8 @@ community:LyraCommunity|null;
|
|
|
43
47
|
members:readonly LyraEntity[];
|
|
44
48
|
/** Visible member chips before the "+N" overflow chip. */
|
|
45
49
|
maxMembers:number;
|
|
46
|
-
/** Single-row layout (title + member count + drill button, no summary/chips)
|
|
50
|
+
/** Single-row layout (title + member count + drill button, no summary/chips), and tighter
|
|
51
|
+
* `[part="base"]` padding/gap — same convention as the sibling `lr-entity-card`'s `compact`. */
|
|
47
52
|
compact:boolean;
|
|
48
53
|
/** Container treatment, in the shared `LyraFrame` vocabulary — the same property this
|
|
49
54
|
* component's sibling `lr-entity-card` carries. `'card'` (the default) keeps the bordered,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{css}from"lit";const styles=css`:host{display:block}[part=base]{gap:var(--lr-space-s);padding:var(--lr-space-m);border:var(--lr-border-width-thin) solid var(--lr-color-border);border-radius:var(--lr-radius);background:var(--lr-community-card-bg,var(--lr-color-surface));color:var(--lr-color-text);flex-direction:column;display:flex}:host([frame=plain]) [part=base]{background:0 0;border:0;border-radius:0;padding:0}[part=header]{align-items:center;gap:var(--lr-space-xs);flex-wrap:wrap;display:flex}[part=title]{flex:auto;min-inline-size:0}[part=title] button{box-sizing:border-box;min-inline-size:var(--lr-icon-button-size);min-block-size:var(--lr-icon-button-size);max-inline-size:100%;color:var(--lr-color-text);font:inherit;font-size:var(--lr-font-size-m);font-weight:var(--lr-font-weight-semibold);text-align:start;cursor:pointer;transition:background-color var(--lr-transition-fast);background:0 0;border:none;padding:0;display:block}[part=title] button:hover{text-decoration:underline}[part=title] button:active{background:color-mix(in oklab, transparent, var(--lr-color-mix-partner) var(--lr-color-mix-active));text-decoration:underline}[part=title] button:focus-visible{outline:var(--lr-focus-ring-width) solid var(--lr-focus-ring-color);outline-offset:var(--lr-focus-ring-offset)}:host([compact]) [part=title] button{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}[part=member-count]{color:var(--lr-color-text-quiet);font-size:var(--lr-font-size-sm);flex:none}[part=actions]{align-items:center;gap:var(--lr-space-xs);flex:none;display:flex}[part=summary]{color:var(--lr-color-text-quiet);font-size:var(--lr-font-size-sm);overflow-wrap:anywhere;margin:0}[part=members]{gap:var(--lr-space-xs);flex-wrap:wrap;display:flex}[part=member],[part=overflow]{box-sizing:border-box;min-inline-size:var(--lr-icon-button-size);min-block-size:var(--lr-icon-button-size);cursor:pointer;transition:background-color var(--lr-transition-fast);background:0 0;border:none;padding:0}[part=member]:hover,[part=overflow]:hover{background:var(--lr-color-brand-quiet)}[part=member]:active,[part=overflow]:active{background:color-mix(in oklab, var(--lr-color-brand-quiet), var(--lr-color-mix-partner) var(--lr-color-mix-active))}[part=member]:focus-visible,[part=overflow]:focus-visible{outline:var(--lr-focus-ring-width) solid var(--lr-focus-ring-color);outline-offset:var(--lr-focus-ring-offset)}`;export{styles};
|
|
1
|
+
import{css}from"lit";const styles=css`:host{display:block}[part=base]{gap:var(--lr-space-s);padding:var(--lr-space-m);border:var(--lr-border-width-thin) solid var(--lr-color-border);border-radius:var(--lr-radius);background:var(--lr-community-card-bg,var(--lr-color-surface));color:var(--lr-color-text);flex-direction:column;display:flex}:host([compact]) [part=base]{padding:var(--lr-community-card-compact-padding,var(--lr-space-s));gap:var(--lr-community-card-compact-gap,var(--lr-space-xs))}:host([frame=plain]) [part=base]{background:0 0;border:0;border-radius:0;padding:0}[part=header]{align-items:center;gap:var(--lr-space-xs);flex-wrap:wrap;display:flex}[part=title]{flex:auto;min-inline-size:0}[part=title] button{box-sizing:border-box;min-inline-size:var(--lr-icon-button-size);min-block-size:var(--lr-icon-button-size);max-inline-size:100%;color:var(--lr-color-text);font:inherit;font-size:var(--lr-font-size-m);font-weight:var(--lr-font-weight-semibold);text-align:start;cursor:pointer;transition:background-color var(--lr-transition-fast);background:0 0;border:none;padding:0;display:block}[part=title] button:hover{text-decoration:underline}[part=title] button:active{background:color-mix(in oklab, transparent, var(--lr-color-mix-partner) var(--lr-color-mix-active));text-decoration:underline}[part=title] button:focus-visible{outline:var(--lr-focus-ring-width) solid var(--lr-focus-ring-color);outline-offset:var(--lr-focus-ring-offset)}:host([compact]) [part=title] button{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}[part=member-count]{color:var(--lr-color-text-quiet);font-size:var(--lr-font-size-sm);flex:none}[part=actions]{align-items:center;gap:var(--lr-space-xs);flex:none;display:flex}[part=summary]{color:var(--lr-color-text-quiet);font-size:var(--lr-font-size-sm);overflow-wrap:anywhere;margin:0}[part=members]{gap:var(--lr-space-xs);flex-wrap:wrap;display:flex}[part=member],[part=overflow]{box-sizing:border-box;min-inline-size:var(--lr-icon-button-size);min-block-size:var(--lr-icon-button-size);cursor:pointer;transition:background-color var(--lr-transition-fast);background:0 0;border:none;padding:0}[part=member]:hover,[part=overflow]:hover{background:var(--lr-color-brand-quiet)}[part=member]:active,[part=overflow]:active{background:color-mix(in oklab, var(--lr-color-brand-quiet), var(--lr-color-mix-partner) var(--lr-color-mix-active))}[part=member]:focus-visible,[part=overflow]:focus-visible{outline:var(--lr-focus-ring-width) solid var(--lr-focus-ring-color);outline-offset:var(--lr-focus-ring-offset)}`;export{styles};
|
|
@@ -23,6 +23,9 @@ export interface EmbeddingPoint{id:string;x:number;y:number;label?:string;source
|
|
|
23
23
|
* @csspart legend-item - One cluster's legend entry.
|
|
24
24
|
* @csspart legend-swatch - One cluster's decorative color swatch.
|
|
25
25
|
* @csspart legend-label - One cluster's visible name.
|
|
26
|
+
* @csspart limit - The "showing N of M" notice, present only once `points` exceeds the render
|
|
27
|
+
* cap. The rendered subset is a deterministic, evenly spaced sample of the full array (not the
|
|
28
|
+
* leading run), so the plotted distribution stays representative above the cap.
|
|
26
29
|
* @csspart empty - The empty state.
|
|
27
30
|
* @cssprop [--lr-embedding-explorer-selected-stroke=var(--lr-color-brand)] - Stroke color of the selected point.
|
|
28
31
|
* @cssprop [--lr-embedding-explorer-height=360px] - The plot's `block-size`. Set on the host from
|
|
@@ -57,7 +60,12 @@ height:string;
|
|
|
57
60
|
/** JS-only accessible name for the plot while no host `aria-label` is authored. An authored host
|
|
58
61
|
* label governs the plot's name too (including an explicitly empty value), avoiding a competing
|
|
59
62
|
* generic plot label while still naming the shadow-internal `listbox` itself. */
|
|
60
|
-
accessibleLabel:string|null;private activeIndex;private refocusAfterUpdate;private get validPoints();
|
|
63
|
+
accessibleLabel:string|null;private activeIndex;private refocusAfterUpdate;private get validPoints();
|
|
64
|
+
/** `validPoints`, decimated to `MAX_RENDERED_POINTS` -- the set actually rendered, focusable,
|
|
65
|
+
* and reachable by roving-tabindex arrow navigation. `bounds` and the cluster legend still
|
|
66
|
+
* derive from the full `validPoints`, so a decimated view keeps the same scale and the same
|
|
67
|
+
* complete legend as the full plot. */
|
|
68
|
+
private get renderedPoints();protected willUpdate(changed:PropertyValues<this>):void;protected updated(changed:PropertyValues<this>):void;
|
|
61
69
|
/**
|
|
62
70
|
* Publishes `height` as `--lr-embedding-explorer-height`, which `[part='plot']`'s `block-size`
|
|
63
71
|
* reads. It has to land on the host: custom properties cascade downward into the shadow tree,
|
|
@@ -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{nativeSvgTitle}from"../../../internal/svg-title.js";import{html,nothing,svg}from"lit";import{property,state}from"lit/decorators.js";import{hostAriaLabel}from"../../../internal/a11y.js";import{LyraElement}from"../../../internal/lyra-element.js";import{firstByRetrievalIdentity}from"../retrieval-identity.js";import{finiteRange}from"../../../internal/numbers.js";import{getNumberFormat}from"../../../internal/intl-cache.js";import{sanitizeCssLength}from"../../../internal/safe-css.js";import{specialistTokens}from"../../../internal/specialist-tokens.styles.js";import{styles}from"./embedding-explorer.styles.js";import{activeElementIn}from"../../../internal/active-element.js";import{LYRA_DEFAULT_embeddingExplorerEmpty,LYRA_DEFAULT_embeddingExplorerLabel,LYRA_DEFAULT_embeddingExplorerPoint}from"../../../internal/default-strings.generated.js";const WIDTH=640,HEIGHT=360,PAD=24,PALETTE=["var(--lr-color-chart-1)","var(--lr-color-chart-2)","var(--lr-color-chart-3)","var(--lr-color-chart-4)","var(--lr-color-chart-5)","var(--lr-color-chart-6)","var(--lr-color-chart-7)","var(--lr-color-chart-8)"];class LyraEmbeddingExplorer extends LyraElement{constructor(){super(...arguments),this.points=[],this.selectedPointId="",this.height="360px",this.accessibleLabel=null,this.activeIndex=0,this.refocusAfterUpdate=!1}static{this.defaultStrings={...super.defaultStrings,embeddingExplorerEmpty:LYRA_DEFAULT_embeddingExplorerEmpty,embeddingExplorerLabel:LYRA_DEFAULT_embeddingExplorerLabel,embeddingExplorerPoint:LYRA_DEFAULT_embeddingExplorerPoint}}static{this.ownedCollectionProperties=Object.freeze(["points"])}static{this.styles=[LyraElement.styles,specialistTokens,styles]}get validPoints(){return firstByRetrievalIdentity(Array.isArray(this.points)?this.points:[],point=>Number.isFinite(point.x)&&Number.isFinite(point.y)?point.id:void 0)}willUpdate(changed){if(super.willUpdate(changed),!changed.has("points"))return;const active=activeElementIn(this.shadowRoot)??null,focusedId=active?.getAttribute("data-id"),points=this.
|
|
1
|
+
var __decorate=function(decorators,target,key,desc){var c=arguments.length,r=c<3?target:desc===null?desc=Object.getOwnPropertyDescriptor(target,key):desc,d;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")r=Reflect.decorate(decorators,target,key,desc);else for(var i=decorators.length-1;i>=0;i--)(d=decorators[i])&&(r=(c<3?d(r):c>3?d(target,key,r):d(target,key))||r);return c>3&&r&&Object.defineProperty(target,key,r),r};import{nativeSvgTitle}from"../../../internal/svg-title.js";import{html,nothing,svg}from"lit";import{property,state}from"lit/decorators.js";import{hostAriaLabel}from"../../../internal/a11y.js";import{LyraElement}from"../../../internal/lyra-element.js";import{firstByRetrievalIdentity}from"../retrieval-identity.js";import{finiteRange}from"../../../internal/numbers.js";import{getNumberFormat}from"../../../internal/intl-cache.js";import{sanitizeCssLength}from"../../../internal/safe-css.js";import{specialistTokens}from"../../../internal/specialist-tokens.styles.js";import{styles}from"./embedding-explorer.styles.js";import{activeElementIn}from"../../../internal/active-element.js";import{LYRA_DEFAULT_embeddingExplorerEmpty,LYRA_DEFAULT_embeddingExplorerLabel,LYRA_DEFAULT_embeddingExplorerPoint,LYRA_DEFAULT_embeddingExplorerPointLimit}from"../../../internal/default-strings.generated.js";const WIDTH=640,HEIGHT=360,PAD=24,MAX_RENDERED_POINTS=1e3,PALETTE=["var(--lr-color-chart-1)","var(--lr-color-chart-2)","var(--lr-color-chart-3)","var(--lr-color-chart-4)","var(--lr-color-chart-5)","var(--lr-color-chart-6)","var(--lr-color-chart-7)","var(--lr-color-chart-8)"];function decimatePoints(items,max){if(items.length<=max||max<=0)return[...items];if(max===1)return[items[0]];const step=(items.length-1)/(max-1),result=[],seen=new Set;for(let i=0;i<max;i++){const index=Math.min(items.length-1,Math.round(i*step));seen.has(index)||(seen.add(index),result.push(items[index]))}return result}class LyraEmbeddingExplorer extends LyraElement{constructor(){super(...arguments),this.points=[],this.selectedPointId="",this.height="360px",this.accessibleLabel=null,this.activeIndex=0,this.refocusAfterUpdate=!1}static{this.defaultStrings={...super.defaultStrings,embeddingExplorerEmpty:LYRA_DEFAULT_embeddingExplorerEmpty,embeddingExplorerLabel:LYRA_DEFAULT_embeddingExplorerLabel,embeddingExplorerPoint:LYRA_DEFAULT_embeddingExplorerPoint,embeddingExplorerPointLimit:LYRA_DEFAULT_embeddingExplorerPointLimit}}static{this.ownedCollectionProperties=Object.freeze(["points"])}static{this.styles=[LyraElement.styles,specialistTokens,styles]}get validPoints(){return firstByRetrievalIdentity(Array.isArray(this.points)?this.points:[],point=>Number.isFinite(point.x)&&Number.isFinite(point.y)?point.id:void 0)}get renderedPoints(){return decimatePoints(this.validPoints,MAX_RENDERED_POINTS)}willUpdate(changed){if(super.willUpdate(changed),!changed.has("points"))return;const active=activeElementIn(this.shadowRoot)??null,focusedId=active?.getAttribute("data-id"),points=this.renderedPoints,matchingIndex=focusedId?points.findIndex(point=>point.id===focusedId):-1;this.activeIndex=matchingIndex>=0?matchingIndex:Math.min(this.activeIndex,Math.max(0,points.length-1)),this.refocusAfterUpdate=active?.getAttribute("part")==="point"}updated(changed){super.updated(changed),changed.has("height")&&this.applyHeight(),this.refocusAfterUpdate&&(this.refocusAfterUpdate=!1,this.renderRoot.querySelector(`[data-index="${this.activeIndex}"]`)?.focus())}applyHeight(){const height=sanitizeCssLength(this.height,"height");height?this.style.setProperty("--lr-embedding-explorer-height",height):this.style.removeProperty("--lr-embedding-explorer-height")}position(point,bounds){const{minX,maxX,minY,maxY}=bounds,x=PAD+finiteRange((point.x-minX)/(maxX-minX||1),.5,0,1)*(WIDTH-PAD*2),y=HEIGHT-PAD-finiteRange((point.y-minY)/(maxY-minY||1),.5,0,1)*(HEIGHT-PAD*2);return{x,y}}announceLabel(point,index){return this.localize("embeddingExplorerPoint",void 0,{label:point.label||point.id,index:getNumberFormat(this.effectiveLocale).format(index+1)})}select(point){this.emit("lr-point-select",{point})}activatePoint(point,index){this.activeIndex=index,this.select(point)}onPointKeyDown(event,point,index){const points=this.renderedPoints;if(event.key==="Enter"||event.key===" "){event.preventDefault(),this.select(point);return}const rtl=this.effectiveDirection==="rtl",forward=rtl?"ArrowLeft":"ArrowRight",backward=rtl?"ArrowRight":"ArrowLeft";let next=index;if(event.key===forward||event.key==="ArrowDown")next=Math.min(points.length-1,index+1);else if(event.key===backward||event.key==="ArrowUp")next=Math.max(0,index-1);else if(event.key==="Home")next=0;else if(event.key==="End")next=points.length-1;else return;event.preventDefault(),this.activeIndex=next,this.updateComplete.then(()=>{this.renderRoot.querySelector(`[data-index="${next}"]`)?.focus()})}renderPoint(point,index,bounds,clusterIndices){const{x,y}=this.position(point,bounds),label=this.announceLabel(point,index),cluster=String(point.cluster??"").trim(),selected=point.id===this.selectedPointId;return svg`<g
|
|
2
2
|
part="point"
|
|
3
3
|
data-index=${index}
|
|
4
4
|
data-id=${point.id}
|
|
@@ -27,15 +27,16 @@ var __decorate=function(decorators,target,key,desc){var c=arguments.length,r=c<3
|
|
|
27
27
|
${nativeSvgTitle(label)}
|
|
28
28
|
</g>`}render(){const points=this.validPoints,hostLabel=hostAriaLabel(this),label=hostLabel===null?this.accessibleLabel??this.localize("embeddingExplorerLabel"):hostLabel;if(points.length===0)return html`<div part="base" role="region" aria-label=${label}>
|
|
29
29
|
<p part="empty">${this.localize("embeddingExplorerEmpty")}</p>
|
|
30
|
-
</div>`;const bounds=points.reduce((result,point)=>({minX:Math.min(result.minX,point.x),maxX:Math.max(result.maxX,point.x),minY:Math.min(result.minY,point.y),maxY:Math.max(result.maxY,point.y)}),{minX:1/0,maxX:-1/0,minY:1/0,maxY:-1/0}),clusters=[...new Set(points.map(point=>String(point.cluster??"").trim()))].sort(),clusterIndices=new Map(clusters.map((cluster,index)=>[cluster,index])),visibleClusters=clusters.filter(cluster=>cluster.trim()!=="");return html`<div part="base">
|
|
30
|
+
</div>`;const renderedPoints=this.renderedPoints,bounds=points.reduce((result,point)=>({minX:Math.min(result.minX,point.x),maxX:Math.max(result.maxX,point.x),minY:Math.min(result.minY,point.y),maxY:Math.max(result.maxY,point.y)}),{minX:1/0,maxX:-1/0,minY:1/0,maxY:-1/0}),clusters=[...new Set(points.map(point=>String(point.cluster??"").trim()))].sort(),clusterIndices=new Map(clusters.map((cluster,index)=>[cluster,index])),visibleClusters=clusters.filter(cluster=>cluster.trim()!==""),numberFormat=getNumberFormat(this.effectiveLocale);return html`<div part="base">
|
|
31
31
|
<svg
|
|
32
32
|
part="plot"
|
|
33
33
|
viewBox="0 0 ${WIDTH} ${HEIGHT}"
|
|
34
34
|
role="listbox"
|
|
35
35
|
aria-label=${label}
|
|
36
36
|
>
|
|
37
|
-
${
|
|
37
|
+
${renderedPoints.map((point,index)=>this.renderPoint(point,index,bounds,clusterIndices))}
|
|
38
38
|
</svg>
|
|
39
|
+
${renderedPoints.length<points.length?html`<p part="limit" role="note">${this.localize("embeddingExplorerPointLimit",void 0,{shown:numberFormat.format(renderedPoints.length),total:numberFormat.format(points.length)})}</p>`:nothing}
|
|
39
40
|
${visibleClusters.length>0?html`<div part="legend" role="list">
|
|
40
41
|
${visibleClusters.map(cluster=>html`<span
|
|
41
42
|
part="legend-item"
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{css}from"lit";const styles=css`:host{display:block}[part=base]{gap:var(--lr-space-s);padding:var(--lr-space-m);border:var(--lr-border-width-thin) solid var(--lr-color-border);border-radius:var(--lr-radius);background:var(--lr-entity-card-bg,var(--lr-color-surface));color:var(--lr-color-text);flex-direction:column;min-inline-size:0;display:flex}:host([compact]) [part=base]{padding:var(--lr-entity-card-compact-padding,var(--lr-space-s));gap:var(--lr-entity-card-compact-gap,var(--lr-space-xs))}:host([frame=plain]) [part=base]{background:0 0;border:0;border-radius:0;padding:0}[part=header]{align-items:center;gap:var(--lr-space-xs);flex-wrap:wrap;display:flex}[part=title]{min-inline-size:0;font-size:var(--lr-font-size-m);font-weight:var(--lr-font-weight-semibold);overflow-wrap:anywhere;flex:auto}[part=description]{color:var(--lr-color-text-quiet);font-size:var(--lr-font-size-sm);overflow-wrap:anywhere;margin:0}[part=properties]{gap:var(--lr-space-xs);flex-direction:column;display:flex}[part=actions]{align-items:center;gap:var(--lr-space-xs);flex:none;display:flex}@media (forced-colors:active){[part=type-badge]{--lr-badge-color:var(--lr-color-text)!important;--lr-badge-background:var(--lr-color-surface)!important;--lr-badge-border:var(--lr-color-border-strong)!important}}`;export{styles};
|
|
1
|
+
import{css}from"lit";const styles=css`:host{display:block}[part=base]{gap:var(--lr-space-s);padding:var(--lr-space-m);border:var(--lr-border-width-thin) solid var(--lr-color-border);border-radius:var(--lr-radius);background:var(--lr-entity-card-bg,var(--lr-color-surface));color:var(--lr-color-text);box-sizing:border-box;flex-direction:column;block-size:100%;min-inline-size:0;display:flex}:host([compact]) [part=base]{padding:var(--lr-entity-card-compact-padding,var(--lr-space-s));gap:var(--lr-entity-card-compact-gap,var(--lr-space-xs))}:host([frame=plain]) [part=base]{background:0 0;border:0;border-radius:0;padding:0}[part=header]{align-items:center;gap:var(--lr-space-xs);flex-wrap:wrap;display:flex}[part=title]{min-inline-size:0;font-size:var(--lr-font-size-m);font-weight:var(--lr-font-weight-semibold);overflow-wrap:anywhere;flex:auto}[part=description]{color:var(--lr-color-text-quiet);font-size:var(--lr-font-size-sm);overflow-wrap:anywhere;margin:0}[part=properties]{gap:var(--lr-space-xs);flex-direction:column;display:flex}[part=actions]{align-items:center;gap:var(--lr-space-xs);flex:none;display:flex}@media (forced-colors:active){[part=type-badge]{--lr-badge-color:var(--lr-color-text)!important;--lr-badge-background:var(--lr-color-surface)!important;--lr-badge-border:var(--lr-color-border-strong)!important}}`;export{styles};
|
|
@@ -13,7 +13,9 @@ import{type TemplateResult,type PropertyValues}from'lit';import{LyraElement}from
|
|
|
13
13
|
*
|
|
14
14
|
* @customElement lr-entity-chip
|
|
15
15
|
* @slot - Rich preview content (typically a compact `lr-entity-card`), shown in a floating
|
|
16
|
-
* popover on hover/focus. No content -> no popover and no hover affordance at all.
|
|
16
|
+
* popover on hover/focus. No content -> no popover and no hover affordance at all. An open
|
|
17
|
+
* popover participates in shared Escape ordering even while only hovered, deferring to a
|
|
18
|
+
* genuinely topmost overlay opened on top of it.
|
|
17
19
|
* @event lr-entity-select - Click, or Enter while focused. `detail: { entityId }`.
|
|
18
20
|
* @event lr-entity-open - Dblclick, or Space while focused. `detail: { entityId }`.
|
|
19
21
|
* @csspart base - The clickable chip (`<button>`).
|
|
@@ -54,4 +56,4 @@ typeLabel?:string;private popoverOpen;private buttonEl?;private popoverEl?;priva
|
|
|
54
56
|
* regardless of assignment, so `:empty` never matches either. The shared controller answers the
|
|
55
57
|
* same "does this slot carry real consumer content" question every other presence-driven
|
|
56
58
|
* component asks, seeded before the first render and kept live afterwards. */
|
|
57
|
-
private readonly slotPresence;private cleanupPositioner?;private hideTimer?;private hideTimerOwner?;private hovering;private focused;private get hasPreviewSlot();protected willUpdate(changed:PropertyValues):void;protected updated(changed:PropertyValues):void;disconnectedCallback():void;private get accessibleLabel();private showPreview;private clearHideTimer;private scheduleHidePreview;private hidePreviewNow;private onPointerEnter;private onPointerLeave;private onFocusIn;private onFocusOut;private onKeyDown;private onClick;private onDblClick;private emitOpen;render():TemplateResult;}declare global{interface HTMLElementTagNameMap{'lr-entity-chip':LyraEntityChip;}}
|
|
59
|
+
private readonly slotPresence;private cleanupPositioner?;private overlayHandle?;private hideTimer?;private hideTimerOwner?;private hovering;private focused;private get hasPreviewSlot();protected willUpdate(changed:PropertyValues):void;protected updated(changed:PropertyValues):void;disconnectedCallback():void;private get accessibleLabel();private showPreview;private clearHideTimer;private scheduleHidePreview;private hidePreviewNow;private onPointerEnter;private onPointerLeave;private onFocusIn;private onFocusOut;private onKeyDown;private onClick;private onDblClick;private emitOpen;render():TemplateResult;}declare global{interface HTMLElementTagNameMap{'lr-entity-chip':LyraEntityChip;}}
|
|
@@ -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,query}from"lit/decorators.js";import{LyraElement}from"../../../internal/lyra-element.js";import{isNonBlankIdentity}from"../retrieval-identity.js";import{deferredPlace as place}from"../../../internal/anchored-overlay-runtime.js";import{resolveEffectivePositioningStrategy}from"../../../internal/positioning-strategy.js";import{nextId}from"../../../internal/a11y.js";import{SlotPresenceController}from"../../../internal/slot-presence-controller.js";import{styles}from"./entity-chip.styles.js";import{LYRA_DEFAULT_entityChipWithType,LYRA_DEFAULT_untitledEntity}from"../../../internal/default-strings.generated.js";const HIDE_DELAY_MS=200;class LyraEntityChip extends LyraElement{constructor(){super(...arguments),this.entityId="",this.text="",this.type="",this.popoverOpen=!1,this.popoverId=nextId("entity-chip-popover"),this.slotPresence=new SlotPresenceController(this),this.hovering=!1,this.focused=!1,this.onPointerEnter=()=>{this.hovering=!0,this.showPreview()},this.onPointerLeave=()=>{this.hovering=!1,this.scheduleHidePreview()},this.onFocusIn=()=>{this.focused=!0,this.showPreview()},this.onFocusOut=()=>{this.focused=!1,!this.hovering&&this.hidePreviewNow()},this.onKeyDown=e=>{if(e.key==="Escape"&&this.popoverOpen){e.stopPropagation(),this.hidePreviewNow();return}e.key===" "&&!e.repeat&&e.target===this.buttonEl&&(e.preventDefault(),this.emitOpen())},this.onClick=()=>{isNonBlankIdentity(this.entityId)&&this.emit("lr-entity-select",{entityId:this.entityId})},this.onDblClick=()=>{this.emitOpen()}}static{this.defaultStrings={...super.defaultStrings,entityChipWithType:LYRA_DEFAULT_entityChipWithType,untitledEntity:LYRA_DEFAULT_untitledEntity}}static{this.styles=[LyraElement.styles,styles]}get hasPreviewSlot(){return this.slotPresence.has()}willUpdate(changed){super.willUpdate(changed),this.popoverOpen&&!this.hasPreviewSlot&&this.hidePreviewNow()}updated(changed){super.updated(changed),changed.has("popoverOpen")&&(this.cleanupPositioner?.(),this.cleanupPositioner=void 0,this.popoverOpen&&this.buttonEl&&this.popoverEl&&(this.cleanupPositioner=place(this.buttonEl,this.popoverEl,{placement:"top-start",strategy:resolveEffectivePositioningStrategy(this,void 0,"fixed")})))}disconnectedCallback(){super.disconnectedCallback(),this.cleanupPositioner?.(),this.cleanupPositioner=void 0,this.clearHideTimer(),this.popoverOpen=!1,this.hovering=!1,this.focused=!1}get accessibleLabel(){const label=(this.text??"").trim()===""?this.localize("untitledEntity"):this.text,typeText=this.typeLabel?.trim()||(this.type??"").trim();return typeText?this.localize("entityChipWithType",void 0,{label,type:typeText}):label}showPreview(){this.hasPreviewSlot&&(this.clearHideTimer(),!this.popoverOpen&&(this.popoverOpen=!0))}clearHideTimer(){this.hideTimer!==void 0&&this.hideTimerOwner?.clearTimeout(this.hideTimer),this.hideTimer=void 0,this.hideTimerOwner=void 0}scheduleHidePreview(){if(!this.popoverOpen||this.hovering||this.focused)return;this.clearHideTimer();const ownerWindow=this.ownerDocument.defaultView;if(!ownerWindow)return;const handle=ownerWindow.setTimeout(()=>{this.hideTimer===handle&&(this.hideTimer=void 0,this.hideTimerOwner=void 0,this.popoverOpen=!1)},HIDE_DELAY_MS);this.hideTimer=handle,this.hideTimerOwner=ownerWindow}hidePreviewNow(){this.clearHideTimer(),this.popoverOpen&&(this.popoverOpen=!1)}emitOpen(){isNonBlankIdentity(this.entityId)&&this.emit("lr-entity-open",{entityId:this.entityId})}render(){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,state,query}from"lit/decorators.js";import{LyraElement}from"../../../internal/lyra-element.js";import{isNonBlankIdentity}from"../retrieval-identity.js";import{deferredPlace as place}from"../../../internal/anchored-overlay-runtime.js";import{activateNonmodalOverlay}from"../../../internal/nonmodal-overlay-manager.js";import{resolveEffectivePositioningStrategy}from"../../../internal/positioning-strategy.js";import{nextId}from"../../../internal/a11y.js";import{SlotPresenceController}from"../../../internal/slot-presence-controller.js";import{styles}from"./entity-chip.styles.js";import{LYRA_DEFAULT_entityChipWithType,LYRA_DEFAULT_untitledEntity}from"../../../internal/default-strings.generated.js";const HIDE_DELAY_MS=200;class LyraEntityChip extends LyraElement{constructor(){super(...arguments),this.entityId="",this.text="",this.type="",this.popoverOpen=!1,this.popoverId=nextId("entity-chip-popover"),this.slotPresence=new SlotPresenceController(this),this.hovering=!1,this.focused=!1,this.onPointerEnter=()=>{this.hovering=!0,this.showPreview()},this.onPointerLeave=()=>{this.hovering=!1,this.scheduleHidePreview()},this.onFocusIn=()=>{this.focused=!0,this.showPreview()},this.onFocusOut=()=>{this.focused=!1,!this.hovering&&this.hidePreviewNow()},this.onKeyDown=e=>{if(e.key==="Escape"&&this.popoverOpen&&this.overlayHandle?.isTopmost()){e.stopPropagation(),this.hidePreviewNow();return}e.key===" "&&!e.repeat&&e.target===this.buttonEl&&(e.preventDefault(),this.emitOpen())},this.onClick=()=>{isNonBlankIdentity(this.entityId)&&this.emit("lr-entity-select",{entityId:this.entityId})},this.onDblClick=()=>{this.emitOpen()}}static{this.defaultStrings={...super.defaultStrings,entityChipWithType:LYRA_DEFAULT_entityChipWithType,untitledEntity:LYRA_DEFAULT_untitledEntity}}static{this.styles=[LyraElement.styles,styles]}get hasPreviewSlot(){return this.slotPresence.has()}willUpdate(changed){super.willUpdate(changed),this.popoverOpen&&!this.hasPreviewSlot&&this.hidePreviewNow()}updated(changed){super.updated(changed),changed.has("popoverOpen")&&(this.cleanupPositioner?.(),this.cleanupPositioner=void 0,this.overlayHandle?.deactivate({restoreFocus:!1}),this.overlayHandle=void 0,this.popoverOpen&&this.buttonEl&&this.popoverEl&&(this.cleanupPositioner=place(this.buttonEl,this.popoverEl,{placement:"top-start",strategy:resolveEffectivePositioningStrategy(this,void 0,"fixed")}),this.overlayHandle=activateNonmodalOverlay({host:this,panel:()=>this.popoverEl??null,onEscape:()=>this.hidePreviewNow(),restoreFocusTo:null})))}disconnectedCallback(){super.disconnectedCallback(),this.cleanupPositioner?.(),this.cleanupPositioner=void 0,this.overlayHandle?.deactivate({restoreFocus:!1}),this.overlayHandle=void 0,this.clearHideTimer(),this.popoverOpen=!1,this.hovering=!1,this.focused=!1}get accessibleLabel(){const label=(this.text??"").trim()===""?this.localize("untitledEntity"):this.text,typeText=this.typeLabel?.trim()||(this.type??"").trim();return typeText?this.localize("entityChipWithType",void 0,{label,type:typeText}):label}showPreview(){this.hasPreviewSlot&&(this.clearHideTimer(),!this.popoverOpen&&(this.popoverOpen=!0))}clearHideTimer(){this.hideTimer!==void 0&&this.hideTimerOwner?.clearTimeout(this.hideTimer),this.hideTimer=void 0,this.hideTimerOwner=void 0}scheduleHidePreview(){if(!this.popoverOpen||this.hovering||this.focused)return;this.clearHideTimer();const ownerWindow=this.ownerDocument.defaultView;if(!ownerWindow)return;const handle=ownerWindow.setTimeout(()=>{this.hideTimer===handle&&(this.hideTimer=void 0,this.hideTimerOwner=void 0,this.popoverOpen=!1)},HIDE_DELAY_MS);this.hideTimer=handle,this.hideTimerOwner=ownerWindow}hidePreviewNow(){this.clearHideTimer(),this.popoverOpen&&(this.popoverOpen=!1)}emitOpen(){isNonBlankIdentity(this.entityId)&&this.emit("lr-entity-open",{entityId:this.entityId})}render(){return html`
|
|
2
2
|
<span
|
|
3
3
|
class="wrapper"
|
|
4
4
|
@pointerenter=${this.onPointerEnter}
|
|
@@ -1,6 +1,6 @@
|
|
|
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{
|
|
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"../entity-card/entity-card.class.js";import"../neighbor-list/neighbor-list.class.js";import"../chunk-inspector/chunk-inspector.class.js";import"../provenance-panel/provenance-panel.class.js";import"../../data/stat/stat.class.js";import"../../layout/tab-group/tab-group.class.js";import"../../overlays/empty/empty.class.js";import{styles}from"./entity-dossier.styles.js";import{trueDefaultBooleanConverter}from"../../../internal/converters.js";import{LYRA_DEFAULT_chunkInspectorLabel,LYRA_DEFAULT_collapse,LYRA_DEFAULT_details,LYRA_DEFAULT_map,LYRA_DEFAULT_navigation,LYRA_DEFAULT_neighborListLabel,LYRA_DEFAULT_noData,LYRA_DEFAULT_open,LYRA_DEFAULT_popover,LYRA_DEFAULT_progress,LYRA_DEFAULT_provenancePanelLabel,LYRA_DEFAULT_search,LYRA_DEFAULT_select}from"../../../internal/default-strings.generated.js";class LyraEntityDossier extends LyraElement{constructor(){super(...arguments),this.entity=null,this.types=[],this.communityLabel="",this.showFocusButton=!0,this.confidence=null,this.neighbors=[],this.groupByRelation=!1,this.expandable=!1,this.chunks=[],this.thresholds={high:.75,medium:.5},this.provenance=null,this.accessibleLabel=null,this.activeTab="relationships",this.onTabsChange=e=>{e.stopPropagation();const tabId=e.detail.name;this.activeTab=tabId,this.emit("lr-tab-show",{tabId})},this.containTabsEvent=e=>{e.stopPropagation()}}static{this.defaultStrings={...super.defaultStrings,chunkInspectorLabel:LYRA_DEFAULT_chunkInspectorLabel,collapse:LYRA_DEFAULT_collapse,details:LYRA_DEFAULT_details,map:LYRA_DEFAULT_map,navigation:LYRA_DEFAULT_navigation,neighborListLabel:LYRA_DEFAULT_neighborListLabel,noData:LYRA_DEFAULT_noData,open:LYRA_DEFAULT_open,popover:LYRA_DEFAULT_popover,progress:LYRA_DEFAULT_progress,provenancePanelLabel:LYRA_DEFAULT_provenancePanelLabel,search:LYRA_DEFAULT_search,select:LYRA_DEFAULT_select}}static{this.ownedCollectionProperties=Object.freeze(["entity","confidence","types","neighbors","chunks","provenance"])}static{this.styles=[LyraElement.styles,styles]}render(){if(!this.entity)return html`<div part="base">
|
|
2
2
|
<lr-empty part="empty" heading=${this.localize("noData")}></lr-empty>
|
|
3
|
-
</div>`;const entity=this.entity,c=this.confidence,tabsLabel=
|
|
3
|
+
</div>`;const entity=this.entity,c=this.confidence,tabsLabel=this.hasAttribute("aria-label")?nothing:this.accessibleLabel??nothing;return html`
|
|
4
4
|
<div part="base">
|
|
5
5
|
<div part="header">
|
|
6
6
|
<lr-entity-card
|
|
@@ -1,4 +1,9 @@
|
|
|
1
|
-
import type{LyraEventDetailSnapshot}from'../../../internal/lyra-element.js';import{type TemplateResult}from'lit';import{LyraElement}from'../../../internal/lyra-element.js';import type{LyraNodeTypeStyle}from'../../../internal/node-type-style.js';export type{LyraNodeTypeStyle}from'../../../internal/node-type-style.js';export interface LyraGraphLegendVisibilityDetail{hiddenTypes:string[];}export interface LyraGraphLegendEventMap{
|
|
1
|
+
import type{LyraEventDetailSnapshot}from'../../../internal/lyra-element.js';import{type TemplateResult}from'lit';import{LyraElement}from'../../../internal/lyra-element.js';import type{LyraNodeTypeStyle}from'../../../internal/node-type-style.js';export type{LyraNodeTypeStyle}from'../../../internal/node-type-style.js';export interface LyraGraphLegendVisibilityDetail{hiddenTypes:string[];}export interface LyraGraphLegendEventMap{
|
|
2
|
+
/** Canonical name for the visibility-change veto point. */
|
|
3
|
+
'lr-visibility-change-request':CustomEvent<LyraEventDetailSnapshot<LyraGraphLegendVisibilityDetail>>;
|
|
4
|
+
/** Deprecated alias of `lr-visibility-change-request`, kept firing unchanged for back-compat;
|
|
5
|
+
* slated for removal in 21.0.0. */
|
|
6
|
+
'lr-before-visibility-change':CustomEvent<LyraEventDetailSnapshot<LyraGraphLegendVisibilityDetail>>;'lr-visibility-change':CustomEvent<LyraEventDetailSnapshot<LyraGraphLegendVisibilityDetail>>;}
|
|
2
7
|
/**
|
|
3
8
|
* `<lr-graph-legend>` — a node-type legend for a paired `lr-graph`: one swatch + label + count
|
|
4
9
|
* row per `lr-graph` node type, doubling as visibility filters. Never reads or writes a graph directly —
|
|
@@ -12,8 +17,12 @@ import type{LyraEventDetailSnapshot}from'../../../internal/lyra-element.js';impo
|
|
|
12
17
|
* untyped payload cannot create an unnamed interactive filter.
|
|
13
18
|
*
|
|
14
19
|
* @customElement lr-graph-legend
|
|
15
|
-
* @event lr-
|
|
16
|
-
* is a frozen complete next array; canceling leaves state, announcements, and the post event
|
|
20
|
+
* @event lr-visibility-change-request - Cancelable proposed visibility change. `detail: { hiddenTypes }`
|
|
21
|
+
* is a frozen complete next array; canceling leaves state, announcements, and the post event
|
|
22
|
+
* unchanged. Fires before `lr-before-visibility-change`, from the same gesture; either event may
|
|
23
|
+
* veto.
|
|
24
|
+
* @event lr-before-visibility-change - Deprecated cancelable alias of `lr-visibility-change-request`, kept
|
|
25
|
+
* firing unchanged for back-compat; slated for removal in 21.0.0. Same frozen detail.
|
|
17
26
|
* @event lr-visibility-change - `detail: { hiddenTypes }` — the complete updated array, fired
|
|
18
27
|
* after an accepted toggle has assigned and announced it.
|
|
19
28
|
* @csspart base - The legend wrapper. It owns `role="group"` and the fallback name unless a
|
|
@@ -46,4 +55,9 @@ interactive:boolean;
|
|
|
46
55
|
label:string;private liveText;
|
|
47
56
|
/** The documented part remains a shadow-DOM text mirror only; announcements use this shared
|
|
48
57
|
* light-DOM sink because shadow live regions are not reliable across AT/browser pairs. */
|
|
49
|
-
private announcementSink?;connectedCallback():void;disconnectedCallback():void;private paletteColor;
|
|
58
|
+
private announcementSink?;connectedCallback():void;disconnectedCallback():void;private paletteColor;
|
|
59
|
+
/** Builds a `paletteColor()` resolver that reads `getComputedStyle(this)` at most once per
|
|
60
|
+
* distinct `index % PALETTE_SIZE` slot, reused across the rest of one `render()` pass, instead
|
|
61
|
+
* of once per legend entry -- the underlying `--lr-graph-cat-N` value cannot change between two
|
|
62
|
+
* entries in the same synchronous render. */
|
|
63
|
+
private paletteColorResolver;private isVisible;private toggle;private renderSwatchShape;render():TemplateResult;}declare global{interface HTMLElementTagNameMap{'lr-graph-legend':LyraGraphLegend;}}
|
|
@@ -1,10 +1,10 @@
|
|
|
1
|
-
var __decorate=function(decorators,target,key,desc){var c=arguments.length,r=c<3?target:desc===null?desc=Object.getOwnPropertyDescriptor(target,key):desc,d;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")r=Reflect.decorate(decorators,target,key,desc);else for(var i=decorators.length-1;i>=0;i--)(d=decorators[i])&&(r=(c<3?d(r):c>3?d(target,key,r):d(target,key))||r);return c>3&&r&&Object.defineProperty(target,key,r),r};import{html,nothing,svg}from"lit";import{property,state}from"lit/decorators.js";import{LyraElement}from"../../../internal/lyra-element.js";import{canonicalIdentityList,firstByRetrievalIdentity}from"../retrieval-identity.js";import{specialistTokens}from"../../../internal/specialist-tokens.styles.js";import{srOnly}from"../../../internal/a11y.js";import{styles}from"./graph-legend.styles.js";import{retrievalSemanticLabel,retrievalSemanticRole}from"../retrieval-semantic-owner.js";import{trueDefaultBooleanConverter}from"../../../internal/converters.js";import{getNumberFormat}from"../../../internal/intl-cache.js";import{finiteCount}from"../../../internal/numbers.js";import{sanitizeCssColor}from"../../../internal/safe-css.js";import{acquireAnnouncementSink}from"../../../internal/announcer.js";import{LYRA_DEFAULT_graphLegendLabel,LYRA_DEFAULT_legendTypeHidden,LYRA_DEFAULT_legendTypeShown}from"../../../internal/default-strings.generated.js";const PALETTE_SIZE=8,FALLBACK_PALETTE=["#0969da","#1a7f37","#9a6700","#cf222e","#8250df","#bf3989","#0a7d91","#57606a"];class LyraGraphLegend extends LyraElement{constructor(){super(...arguments),this.types=[],this.hiddenTypes=[],this.interactive=!0,this.label="",this.liveText=""}static{this.defaultStrings={...super.defaultStrings,graphLegendLabel:LYRA_DEFAULT_graphLegendLabel,legendTypeHidden:LYRA_DEFAULT_legendTypeHidden,legendTypeShown:LYRA_DEFAULT_legendTypeShown}}static{this.ownedCollectionProperties=Object.freeze(["types","hiddenTypes","counts"])}static{this.styles=[LyraElement.styles,specialistTokens,styles,srOnly]}static{this.immutableEventDetails=Object.freeze(["lr-before-visibility-change","lr-visibility-change"])}connectedCallback(){super.connectedCallback(),this.announcementSink??=acquireAnnouncementSink("polite",{document:this.ownerDocument,source:this})}disconnectedCallback(){this.announcementSink?.release(),this.announcementSink=void 0,super.disconnectedCallback()}paletteColor(index){return getComputedStyle(this).getPropertyValue(`--lr-graph-cat-${index%PALETTE_SIZE+1}`).trim()||FALLBACK_PALETTE[index%PALETTE_SIZE]}
|
|
1
|
+
var __decorate=function(decorators,target,key,desc){var c=arguments.length,r=c<3?target:desc===null?desc=Object.getOwnPropertyDescriptor(target,key):desc,d;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")r=Reflect.decorate(decorators,target,key,desc);else for(var i=decorators.length-1;i>=0;i--)(d=decorators[i])&&(r=(c<3?d(r):c>3?d(target,key,r):d(target,key))||r);return c>3&&r&&Object.defineProperty(target,key,r),r};import{html,nothing,svg}from"lit";import{property,state}from"lit/decorators.js";import{LyraElement}from"../../../internal/lyra-element.js";import{canonicalIdentityList,firstByRetrievalIdentity}from"../retrieval-identity.js";import{specialistTokens}from"../../../internal/specialist-tokens.styles.js";import{srOnly}from"../../../internal/a11y.js";import{styles}from"./graph-legend.styles.js";import{retrievalSemanticLabel,retrievalSemanticRole}from"../retrieval-semantic-owner.js";import{trueDefaultBooleanConverter}from"../../../internal/converters.js";import{getNumberFormat}from"../../../internal/intl-cache.js";import{finiteCount}from"../../../internal/numbers.js";import{sanitizeCssColor}from"../../../internal/safe-css.js";import{acquireAnnouncementSink}from"../../../internal/announcer.js";import{LYRA_DEFAULT_graphLegendLabel,LYRA_DEFAULT_legendTypeHidden,LYRA_DEFAULT_legendTypeShown}from"../../../internal/default-strings.generated.js";const PALETTE_SIZE=8,FALLBACK_PALETTE=["#0969da","#1a7f37","#9a6700","#cf222e","#8250df","#bf3989","#0a7d91","#57606a"];class LyraGraphLegend extends LyraElement{constructor(){super(...arguments),this.types=[],this.hiddenTypes=[],this.interactive=!0,this.label="",this.liveText=""}static{this.defaultStrings={...super.defaultStrings,graphLegendLabel:LYRA_DEFAULT_graphLegendLabel,legendTypeHidden:LYRA_DEFAULT_legendTypeHidden,legendTypeShown:LYRA_DEFAULT_legendTypeShown}}static{this.ownedCollectionProperties=Object.freeze(["types","hiddenTypes","counts"])}static{this.styles=[LyraElement.styles,specialistTokens,styles,srOnly]}static{this.immutableEventDetails=Object.freeze(["lr-visibility-change-request","lr-before-visibility-change","lr-visibility-change"])}connectedCallback(){super.connectedCallback(),this.announcementSink??=acquireAnnouncementSink("polite",{document:this.ownerDocument,source:this})}disconnectedCallback(){this.announcementSink?.release(),this.announcementSink=void 0,super.disconnectedCallback()}paletteColor(index){return getComputedStyle(this).getPropertyValue(`--lr-graph-cat-${index%PALETTE_SIZE+1}`).trim()||FALLBACK_PALETTE[index%PALETTE_SIZE]}paletteColorResolver(){const cache=new Map;return index=>{const slot=index%PALETTE_SIZE;let color=cache.get(slot);return color===void 0&&(color=this.paletteColor(index),cache.set(slot,color)),color}}isVisible(id){return!canonicalIdentityList(this.hiddenTypes).includes(id)}toggle(type){if(!this.interactive)return;const hiddenTypes=canonicalIdentityList(this.hiddenTypes),wasVisible=this.isVisible(type.id),next=wasVisible?[...hiddenTypes,type.id]:hiddenTypes.filter(id=>id!==type.id),proposal=this.emit("lr-visibility-change-request",{hiddenTypes:next},{cancelable:!0}),deprecatedAlias=this.emit("lr-before-visibility-change",{hiddenTypes:next},{cancelable:!0});proposal.defaultPrevented||deprecatedAlias.defaultPrevented||(this.hiddenTypes=next,this.liveText=this.localize(wasVisible?"legendTypeHidden":"legendTypeShown",void 0,{label:type.label}),this.announcementSink?.announce(this.liveText),this.emit("lr-visibility-change",{hiddenTypes:next}))}renderSwatchShape(shape,color){return shape==="square"?svg`<rect x="1" y="1" width="10" height="10" fill=${color}></rect>`:shape==="diamond"?svg`<polygon points="6,0 12,6 6,12 0,6" fill=${color}></polygon>`:svg`<circle cx="6" cy="6" r="5" fill=${color}></circle>`}render(){const types=firstByRetrievalIdentity(this.types,type=>type?.id).filter(type=>typeof type?.label=="string"&&type.label.trim().length>0),groupLabel=retrievalSemanticLabel(this,this.label||this.localize("graphLegendLabel")),groupRole=retrievalSemanticRole(this,"group"),resolvePaletteColor=this.paletteColorResolver();return html`
|
|
2
2
|
<div
|
|
3
3
|
part="base"
|
|
4
4
|
role=${groupRole??nothing}
|
|
5
5
|
aria-label=${groupLabel??nothing}
|
|
6
6
|
>
|
|
7
|
-
${types.map((type,index)=>{const visible=this.isVisible(type.id),color=
|
|
7
|
+
${types.map((type,index)=>{const visible=this.isVisible(type.id),color=sanitizeCssColor(type.color)??resolvePaletteColor(index),count=this.counts?.[type.id],content=html`
|
|
8
8
|
<svg
|
|
9
9
|
part="swatch"
|
|
10
10
|
viewBox="0 0 12 12"
|
|
@@ -22,6 +22,12 @@ import type{LyraEventDetailSnapshot}from'../../../internal/lyra-element.js';impo
|
|
|
22
22
|
* array does not update the view. Blank claim/citation ids and later duplicates are ignored before
|
|
23
23
|
* counts, lookup, rendering, or activation. The first record for an id wins.
|
|
24
24
|
*
|
|
25
|
+
* At most 500 citations render as `[part="evidence-item"]` rows; a `citations` array past that
|
|
26
|
+
* length still reports its true count in `[part="evidence-count"]` but renders a localized
|
|
27
|
+
* `[part="limit"]` notice after the list rather than mounting an unbounded number of rows. The
|
|
28
|
+
* full citation set is still forwarded to a composed `<lr-claim-evidence>` for claim-to-citation
|
|
29
|
+
* lookup, which applies its own render cap on the claims it lists.
|
|
30
|
+
*
|
|
25
31
|
* @customElement lr-grounding-summary
|
|
26
32
|
* @event lr-citation-select - An evidence citation badge was activated. `detail: { citation }`.
|
|
27
33
|
* @event lr-claim-select - A composed claim-evidence row was activated. `detail: { claim }`.
|
|
@@ -41,6 +47,7 @@ import type{LyraEventDetailSnapshot}from'../../../internal/lyra-element.js';impo
|
|
|
41
47
|
* @csspart evidence-span - A citation's formatted `span` range, shown next to its badge (omitted
|
|
42
48
|
* when `span` is unset).
|
|
43
49
|
* @csspart evidence-list - The semantic list containing the evidence citations.
|
|
50
|
+
* @csspart limit - Localized notice shown when `citations` exceeds the 500-citation render ceiling.
|
|
44
51
|
* @csspart claims - Claim-level evidence, when present and enabled.
|
|
45
52
|
* @csspart empty - The empty-state message, shown when `assessment` is `null`.
|
|
46
53
|
* @status stable
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
var __decorate=function(decorators,target,key,desc){var c=arguments.length,r=c<3?target:desc===null?desc=Object.getOwnPropertyDescriptor(target,key):desc,d;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")r=Reflect.decorate(decorators,target,key,desc);else for(var i=decorators.length-1;i>=0;i--)(d=decorators[i])&&(r=(c<3?d(r):c>3?d(target,key,r):d(target,key))||r);return c>3&&r&&Object.defineProperty(target,key,r),r};import{html,nothing}from"lit";import{property}from"lit/decorators.js";import{LyraElement}from"../../../internal/lyra-element.js";import{getOwnDataDescriptor,MISSING_OWN_DATA_DESCRIPTOR,UNSAFE_OWN_DATA_DESCRIPTOR}from"../../../internal/data-descriptors.js";import{finiteCount,finiteRange}from"../../../internal/numbers.js";import{getNumberFormat}from"../../../internal/intl-cache.js";import{resolveHeadingLevel}from"../../../internal/heading-level.js";import"../../data/stat/stat.class.js";import"../citation-badge/citation-badge.class.js";import"../../overlays/empty/empty.class.js";import{styles}from"./grounding-summary.styles.js";import{trueDefaultBooleanConverter}from"../../../internal/converters.js";import"../claim-evidence/claim-evidence.class.js";import{retrievalSemanticLabel,retrievalSemanticRole}from"../retrieval-semantic-owner.js";import{LYRA_DEFAULT_citation,LYRA_DEFAULT_collapse,LYRA_DEFAULT_details,LYRA_DEFAULT_groundingSummaryConfidenceLabel,LYRA_DEFAULT_groundingSummaryCoverageLabel,LYRA_DEFAULT_groundingSummaryEmpty,LYRA_DEFAULT_groundingSummaryEvidenceHeading,LYRA_DEFAULT_groundingSummaryEvidenceSpan,LYRA_DEFAULT_groundingSummaryLabel,LYRA_DEFAULT_groundingSummarySupportedLabel,LYRA_DEFAULT_groundingSummaryUnsupportedLabel,LYRA_DEFAULT_groundingSummaryWarningsHeading,LYRA_DEFAULT_map,LYRA_DEFAULT_navigation,LYRA_DEFAULT_open,LYRA_DEFAULT_popover,LYRA_DEFAULT_search,LYRA_DEFAULT_select}from"../../../internal/default-strings.generated.js";const MAX_PROJECTED_GROUNDING_ROWS=1e4,EMPTY_CANONICAL_CLAIMS=Object.freeze([]),EMPTY_CANONICAL_CITATIONS=Object.freeze([]),EMPTY_WARNINGS=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 hasUnsafeDescriptor(descriptors){return descriptors.some(descriptor=>descriptor===UNSAFE_OWN_DATA_DESCRIPTOR)}function nestedEventDetailValue(event,property2){const detail=event.detail;if(detail===null||typeof detail!="object")return;const descriptor=descriptorValue(detail,property2);return descriptor===MISSING_OWN_DATA_DESCRIPTOR||descriptor===UNSAFE_OWN_DATA_DESCRIPTOR?void 0:descriptor.value}function projectStringList(value){try{if(!Array.isArray(value))return;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;const values=[],length=Math.min(lengthDescriptor.value,MAX_PROJECTED_GROUNDING_ROWS);for(let index=0;index<length;index+=1){const descriptor=descriptorValue(value,String(index));if(descriptor===UNSAFE_OWN_DATA_DESCRIPTOR)return;descriptor!==MISSING_OWN_DATA_DESCRIPTOR&&typeof descriptor.value=="string"&&values.push(descriptor.value)}return Object.freeze(values)}catch{return}}function projectRange(value){try{if(value===null||typeof value!="object"||Array.isArray(value))return;const startDescriptor=descriptorValue(value,"start"),endDescriptor=descriptorValue(value,"end");if(hasUnsafeDescriptor([startDescriptor,endDescriptor]))return;const start=valueOfDescriptor(startDescriptor),end=valueOfDescriptor(endDescriptor);return typeof start!="number"||typeof end!="number"?void 0:Object.freeze({start,end})}catch{return}}function projectClaim(value){try{if(value===null||typeof value!="object"||Array.isArray(value))return;const idDescriptor=descriptorValue(value,"id"),textDescriptor=descriptorValue(value,"text"),statusDescriptor=descriptorValue(value,"status"),citationIdsDescriptor=descriptorValue(value,"citationIds"),confidenceDescriptor=descriptorValue(value,"confidence"),explanationDescriptor=descriptorValue(value,"explanation");if(hasUnsafeDescriptor([idDescriptor,textDescriptor,statusDescriptor,citationIdsDescriptor,confidenceDescriptor,explanationDescriptor]))return;const id=valueOfDescriptor(idDescriptor),text=valueOfDescriptor(textDescriptor),citationIds=projectStringList(valueOfDescriptor(citationIdsDescriptor));if(typeof id!="string"||id.trim().length===0||typeof text!="string"||citationIds===void 0)return;const status=valueOfDescriptor(statusDescriptor),confidence=valueOfDescriptor(confidenceDescriptor),explanation=valueOfDescriptor(explanationDescriptor),input=Object.freeze({id,text,status:typeof status=="string"?status:"unsupported",citationIds,...typeof confidence=="number"&&Number.isFinite(confidence)?{confidence}:{},...typeof explanation=="string"?{explanation}:{}});return Object.freeze({source:value,input,id})}catch{return}}function projectCitation(value){try{if(value===null||typeof value!="object"||Array.isArray(value))return;const idDescriptor=descriptorValue(value,"id"),chunkIdDescriptor=descriptorValue(value,"chunkId"),sourceIdDescriptor=descriptorValue(value,"sourceId"),spanDescriptor=descriptorValue(value,"span"),labelDescriptor=descriptorValue(value,"label"),quoteDescriptor=descriptorValue(value,"quote");if(hasUnsafeDescriptor([idDescriptor,chunkIdDescriptor,sourceIdDescriptor,spanDescriptor,labelDescriptor,quoteDescriptor]))return;const id=valueOfDescriptor(idDescriptor);if(typeof id!="string"||id.trim().length===0)return;const chunkId=valueOfDescriptor(chunkIdDescriptor),sourceId=valueOfDescriptor(sourceIdDescriptor),spanValue=valueOfDescriptor(spanDescriptor),label=valueOfDescriptor(labelDescriptor),quote=valueOfDescriptor(quoteDescriptor),span=spanDescriptor===MISSING_OWN_DATA_DESCRIPTOR||spanValue===void 0?void 0:projectRange(spanValue);if(spanValue!==void 0&&span===void 0)return;const input=Object.freeze({id,...typeof chunkId=="string"?{chunkId}:{},...typeof sourceId=="string"?{sourceId}:{},...span===void 0?{}:{span},...typeof label=="string"?{label}:{},...typeof quote=="string"?{quote}:{}});return Object.freeze({source:value,input,id,...typeof sourceId=="string"?{sourceId}:{},...typeof label=="string"?{label}:{},...span===void 0?{}:{span}})}catch{return}}function projectRows(value,project,empty){try{if(!Array.isArray(value))return empty;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;const rows=[],seen=new Set,length=Math.min(lengthDescriptor.value,MAX_PROJECTED_GROUNDING_ROWS);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 row=project(descriptor.value);!row||seen.has(row.id)||(seen.add(row.id),rows.push(row))}return Object.freeze(rows)}catch{return empty}}function projectAssessment(value){try{if(value===null||typeof value!="object"||Array.isArray(value))return;const supportedClaimsDescriptor=descriptorValue(value,"supportedClaims"),unsupportedClaimsDescriptor=descriptorValue(value,"unsupportedClaims"),coverageDescriptor=descriptorValue(value,"coverage"),confidenceDescriptor=descriptorValue(value,"confidence"),warningsDescriptor=descriptorValue(value,"warnings"),claimsDescriptor=descriptorValue(value,"claims");if(hasUnsafeDescriptor([supportedClaimsDescriptor,unsupportedClaimsDescriptor,coverageDescriptor,confidenceDescriptor,warningsDescriptor,claimsDescriptor]))return;const supportedClaims=valueOfDescriptor(supportedClaimsDescriptor),unsupportedClaims=valueOfDescriptor(unsupportedClaimsDescriptor),coverage=valueOfDescriptor(coverageDescriptor),confidence=valueOfDescriptor(confidenceDescriptor),warningsValue=valueOfDescriptor(warningsDescriptor),claimsValue=valueOfDescriptor(claimsDescriptor),warnings=warningsDescriptor===MISSING_OWN_DATA_DESCRIPTOR||warningsValue===void 0?EMPTY_WARNINGS:projectStringList(warningsValue)??EMPTY_WARNINGS,claims=claimsDescriptor===MISSING_OWN_DATA_DESCRIPTOR||claimsValue===void 0?EMPTY_CANONICAL_CLAIMS:projectRows(claimsValue,projectClaim,EMPTY_CANONICAL_CLAIMS);return Object.freeze({supportedClaims:typeof supportedClaims=="number"?supportedClaims:0,unsupportedClaims:typeof unsupportedClaims=="number"?unsupportedClaims:0,coverage:typeof coverage=="number"?coverage:0,...typeof confidence=="number"?{confidence}:{},warnings,claims})}catch{return}}class LyraGroundingSummary extends LyraElement{constructor(){super(...arguments),this.assessment=null,this.citations=[],this.thresholds={high:.8,medium:.5},this.showClaims=!0,this.headingLevel="3",this.canonicalAssessmentBySource=new WeakMap,this.canonicalCitationsBySource=new WeakMap,this.renderEvidenceItem=(citation,index)=>{const numberFormat=getNumberFormat(this.effectiveLocale),spanText=citation.span?this.localize("groundingSummaryEvidenceSpan",void 0,{start:numberFormat.format(finiteCount(citation.span.start)),end:numberFormat.format(finiteCount(citation.span.end))}):"";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{LyraElement}from"../../../internal/lyra-element.js";import{getOwnDataDescriptor,MISSING_OWN_DATA_DESCRIPTOR,UNSAFE_OWN_DATA_DESCRIPTOR}from"../../../internal/data-descriptors.js";import{finiteCount,finiteRange}from"../../../internal/numbers.js";import{getNumberFormat}from"../../../internal/intl-cache.js";import{resolveHeadingLevel}from"../../../internal/heading-level.js";import"../../data/stat/stat.class.js";import"../citation-badge/citation-badge.class.js";import"../../overlays/empty/empty.class.js";import{styles}from"./grounding-summary.styles.js";import{trueDefaultBooleanConverter}from"../../../internal/converters.js";import"../claim-evidence/claim-evidence.class.js";import{retrievalSemanticLabel,retrievalSemanticRole}from"../retrieval-semantic-owner.js";import{LYRA_DEFAULT_citation,LYRA_DEFAULT_collapse,LYRA_DEFAULT_details,LYRA_DEFAULT_groundingSummaryCitationsLimit,LYRA_DEFAULT_groundingSummaryConfidenceLabel,LYRA_DEFAULT_groundingSummaryCoverageLabel,LYRA_DEFAULT_groundingSummaryEmpty,LYRA_DEFAULT_groundingSummaryEvidenceHeading,LYRA_DEFAULT_groundingSummaryEvidenceSpan,LYRA_DEFAULT_groundingSummaryLabel,LYRA_DEFAULT_groundingSummarySupportedLabel,LYRA_DEFAULT_groundingSummaryUnsupportedLabel,LYRA_DEFAULT_groundingSummaryWarningsHeading,LYRA_DEFAULT_map,LYRA_DEFAULT_navigation,LYRA_DEFAULT_open,LYRA_DEFAULT_popover,LYRA_DEFAULT_search,LYRA_DEFAULT_select}from"../../../internal/default-strings.generated.js";const MAX_PROJECTED_GROUNDING_ROWS=1e4,MAX_RENDERED_GROUNDING_CITATIONS=500,EMPTY_CANONICAL_CLAIMS=Object.freeze([]),EMPTY_CANONICAL_CITATIONS=Object.freeze([]),EMPTY_WARNINGS=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 hasUnsafeDescriptor(descriptors){return descriptors.some(descriptor=>descriptor===UNSAFE_OWN_DATA_DESCRIPTOR)}function nestedEventDetailValue(event,property2){const detail=event.detail;if(detail===null||typeof detail!="object")return;const descriptor=descriptorValue(detail,property2);return descriptor===MISSING_OWN_DATA_DESCRIPTOR||descriptor===UNSAFE_OWN_DATA_DESCRIPTOR?void 0:descriptor.value}function projectStringList(value){try{if(!Array.isArray(value))return;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;const values=[],length=Math.min(lengthDescriptor.value,MAX_PROJECTED_GROUNDING_ROWS);for(let index=0;index<length;index+=1){const descriptor=descriptorValue(value,String(index));if(descriptor===UNSAFE_OWN_DATA_DESCRIPTOR)return;descriptor!==MISSING_OWN_DATA_DESCRIPTOR&&typeof descriptor.value=="string"&&values.push(descriptor.value)}return Object.freeze(values)}catch{return}}function projectRange(value){try{if(value===null||typeof value!="object"||Array.isArray(value))return;const startDescriptor=descriptorValue(value,"start"),endDescriptor=descriptorValue(value,"end");if(hasUnsafeDescriptor([startDescriptor,endDescriptor]))return;const start=valueOfDescriptor(startDescriptor),end=valueOfDescriptor(endDescriptor);return typeof start!="number"||typeof end!="number"?void 0:Object.freeze({start,end})}catch{return}}function projectClaim(value){try{if(value===null||typeof value!="object"||Array.isArray(value))return;const idDescriptor=descriptorValue(value,"id"),textDescriptor=descriptorValue(value,"text"),statusDescriptor=descriptorValue(value,"status"),citationIdsDescriptor=descriptorValue(value,"citationIds"),confidenceDescriptor=descriptorValue(value,"confidence"),explanationDescriptor=descriptorValue(value,"explanation");if(hasUnsafeDescriptor([idDescriptor,textDescriptor,statusDescriptor,citationIdsDescriptor,confidenceDescriptor,explanationDescriptor]))return;const id=valueOfDescriptor(idDescriptor),text=valueOfDescriptor(textDescriptor),citationIds=projectStringList(valueOfDescriptor(citationIdsDescriptor));if(typeof id!="string"||id.trim().length===0||typeof text!="string"||citationIds===void 0)return;const status=valueOfDescriptor(statusDescriptor),confidence=valueOfDescriptor(confidenceDescriptor),explanation=valueOfDescriptor(explanationDescriptor),input=Object.freeze({id,text,status:typeof status=="string"?status:"unsupported",citationIds,...typeof confidence=="number"&&Number.isFinite(confidence)?{confidence}:{},...typeof explanation=="string"?{explanation}:{}});return Object.freeze({source:value,input,id})}catch{return}}function projectCitation(value){try{if(value===null||typeof value!="object"||Array.isArray(value))return;const idDescriptor=descriptorValue(value,"id"),chunkIdDescriptor=descriptorValue(value,"chunkId"),sourceIdDescriptor=descriptorValue(value,"sourceId"),spanDescriptor=descriptorValue(value,"span"),labelDescriptor=descriptorValue(value,"label"),quoteDescriptor=descriptorValue(value,"quote");if(hasUnsafeDescriptor([idDescriptor,chunkIdDescriptor,sourceIdDescriptor,spanDescriptor,labelDescriptor,quoteDescriptor]))return;const id=valueOfDescriptor(idDescriptor);if(typeof id!="string"||id.trim().length===0)return;const chunkId=valueOfDescriptor(chunkIdDescriptor),sourceId=valueOfDescriptor(sourceIdDescriptor),spanValue=valueOfDescriptor(spanDescriptor),label=valueOfDescriptor(labelDescriptor),quote=valueOfDescriptor(quoteDescriptor),span=spanDescriptor===MISSING_OWN_DATA_DESCRIPTOR||spanValue===void 0?void 0:projectRange(spanValue);if(spanValue!==void 0&&span===void 0)return;const input=Object.freeze({id,...typeof chunkId=="string"?{chunkId}:{},...typeof sourceId=="string"?{sourceId}:{},...span===void 0?{}:{span},...typeof label=="string"?{label}:{},...typeof quote=="string"?{quote}:{}});return Object.freeze({source:value,input,id,...typeof sourceId=="string"?{sourceId}:{},...typeof label=="string"?{label}:{},...span===void 0?{}:{span}})}catch{return}}function projectRows(value,project,empty){try{if(!Array.isArray(value))return empty;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;const rows=[],seen=new Set,length=Math.min(lengthDescriptor.value,MAX_PROJECTED_GROUNDING_ROWS);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 row=project(descriptor.value);!row||seen.has(row.id)||(seen.add(row.id),rows.push(row))}return Object.freeze(rows)}catch{return empty}}function projectAssessment(value){try{if(value===null||typeof value!="object"||Array.isArray(value))return;const supportedClaimsDescriptor=descriptorValue(value,"supportedClaims"),unsupportedClaimsDescriptor=descriptorValue(value,"unsupportedClaims"),coverageDescriptor=descriptorValue(value,"coverage"),confidenceDescriptor=descriptorValue(value,"confidence"),warningsDescriptor=descriptorValue(value,"warnings"),claimsDescriptor=descriptorValue(value,"claims");if(hasUnsafeDescriptor([supportedClaimsDescriptor,unsupportedClaimsDescriptor,coverageDescriptor,confidenceDescriptor,warningsDescriptor,claimsDescriptor]))return;const supportedClaims=valueOfDescriptor(supportedClaimsDescriptor),unsupportedClaims=valueOfDescriptor(unsupportedClaimsDescriptor),coverage=valueOfDescriptor(coverageDescriptor),confidence=valueOfDescriptor(confidenceDescriptor),warningsValue=valueOfDescriptor(warningsDescriptor),claimsValue=valueOfDescriptor(claimsDescriptor),warnings=warningsDescriptor===MISSING_OWN_DATA_DESCRIPTOR||warningsValue===void 0?EMPTY_WARNINGS:projectStringList(warningsValue)??EMPTY_WARNINGS,claims=claimsDescriptor===MISSING_OWN_DATA_DESCRIPTOR||claimsValue===void 0?EMPTY_CANONICAL_CLAIMS:projectRows(claimsValue,projectClaim,EMPTY_CANONICAL_CLAIMS);return Object.freeze({supportedClaims:typeof supportedClaims=="number"?supportedClaims:0,unsupportedClaims:typeof unsupportedClaims=="number"?unsupportedClaims:0,coverage:typeof coverage=="number"?coverage:0,...typeof confidence=="number"?{confidence}:{},warnings,claims})}catch{return}}class LyraGroundingSummary extends LyraElement{constructor(){super(...arguments),this.assessment=null,this.citations=[],this.thresholds={high:.8,medium:.5},this.showClaims=!0,this.headingLevel="3",this.canonicalAssessmentBySource=new WeakMap,this.canonicalCitationsBySource=new WeakMap,this.renderEvidenceItem=(citation,index)=>{const numberFormat=getNumberFormat(this.effectiveLocale),spanText=citation.span?this.localize("groundingSummaryEvidenceSpan",void 0,{start:numberFormat.format(finiteCount(citation.span.start)),end:numberFormat.format(finiteCount(citation.span.end))}):"";return html`
|
|
2
2
|
<li part="evidence-item">
|
|
3
3
|
<lr-citation-badge
|
|
4
4
|
index=${index+1}
|
|
@@ -11,7 +11,7 @@ var __decorate=function(decorators,target,key,desc){var c=arguments.length,r=c<3
|
|
|
11
11
|
${citation.label?html`<span part="evidence-label">${citation.label}</span>`:nothing}
|
|
12
12
|
${spanText?html`<span part="evidence-span">${spanText}</span>`:nothing}
|
|
13
13
|
</li>
|
|
14
|
-
`}}static{this.defaultStrings={...super.defaultStrings,citation:LYRA_DEFAULT_citation,collapse:LYRA_DEFAULT_collapse,details:LYRA_DEFAULT_details,groundingSummaryConfidenceLabel:LYRA_DEFAULT_groundingSummaryConfidenceLabel,groundingSummaryCoverageLabel:LYRA_DEFAULT_groundingSummaryCoverageLabel,groundingSummaryEmpty:LYRA_DEFAULT_groundingSummaryEmpty,groundingSummaryEvidenceHeading:LYRA_DEFAULT_groundingSummaryEvidenceHeading,groundingSummaryEvidenceSpan:LYRA_DEFAULT_groundingSummaryEvidenceSpan,groundingSummaryLabel:LYRA_DEFAULT_groundingSummaryLabel,groundingSummarySupportedLabel:LYRA_DEFAULT_groundingSummarySupportedLabel,groundingSummaryUnsupportedLabel:LYRA_DEFAULT_groundingSummaryUnsupportedLabel,groundingSummaryWarningsHeading:LYRA_DEFAULT_groundingSummaryWarningsHeading,map:LYRA_DEFAULT_map,navigation:LYRA_DEFAULT_navigation,open:LYRA_DEFAULT_open,popover:LYRA_DEFAULT_popover,search:LYRA_DEFAULT_search,select:LYRA_DEFAULT_select}}static{this.ownedCollectionProperties=Object.freeze(["assessment","citations"])}static{this.identityCollectionObjectProperties=Object.freeze(["assessment"])}static{this.identityCollectionProperties=Object.freeze(["citations"])}static{this.styles=[LyraElement.styles,styles]}static{this.immutableEventDetails=Object.freeze(["lr-citation-select","lr-claim-select"])}static{this.identityEventDetailProperties=Object.freeze({"lr-citation-select":Object.freeze(["citation"]),"lr-claim-select":Object.freeze(["claim"])})}get normalizedAssessment(){const source=this.assessment;if(source===null||typeof source!="object")return;const cached=this.canonicalAssessmentBySource.get(source);if(cached!==void 0)return cached??void 0;const assessment=projectAssessment(source);return this.canonicalAssessmentBySource.set(source,assessment??null),assessment}get normalizedCitations(){const source=this.citations;if(source===null||typeof source!="object")return EMPTY_CANONICAL_CITATIONS;const cached=this.canonicalCitationsBySource.get(source);if(cached)return cached;const citations=projectRows(source,projectCitation,EMPTY_CANONICAL_CITATIONS);return this.canonicalCitationsBySource.set(source,citations),citations}sectionHeading(part,text){switch(resolveHeadingLevel(this.headingLevel)){case"1":return html`<h1 part=${part}>${text}</h1>`;case"2":return html`<h2 part=${part}>${text}</h2>`;case"4":return html`<h4 part=${part}>${text}</h4>`;case"5":return html`<h5 part=${part}>${text}</h5>`;case"6":return html`<h6 part=${part}>${text}</h6>`;case"3":return html`<h3 part=${part}>${text}</h3>`;default:return html`<span part=${part}>${text}</span>`}}tone(value){return value>=this.thresholds.high?"success":value>=this.thresholds.medium?"warning":"danger"}formatPercent(value){return getNumberFormat(this.effectiveLocale,{style:"percent"}).format(finiteRange(value,0,0,1))}onCitationSelect(citation,event){event.stopPropagation(),this.emit("lr-citation-select",{citation:citation.source})}onNestedCitationSelect(citations,event){event.stopPropagation();const selected=nestedEventDetailValue(event,"citation"),citation=citations.find(candidate=>candidate.input===selected);citation&&this.emit("lr-citation-select",{citation:citation.source})}onNestedClaimSelect(claims,event){event.stopPropagation();const selected=nestedEventDetailValue(event,"claim"),claim=claims.find(candidate=>candidate.input===selected);claim&&this.emit("lr-claim-select",{claim:claim.source})}render(){const groupLabel=retrievalSemanticLabel(this,this.label==null?this.localize("groundingSummaryLabel"):this.label),groupRole=retrievalSemanticRole(this,"group"),a=this.normalizedAssessment;if(!a)return html`<div
|
|
14
|
+
`}}static{this.defaultStrings={...super.defaultStrings,citation:LYRA_DEFAULT_citation,collapse:LYRA_DEFAULT_collapse,details:LYRA_DEFAULT_details,groundingSummaryCitationsLimit:LYRA_DEFAULT_groundingSummaryCitationsLimit,groundingSummaryConfidenceLabel:LYRA_DEFAULT_groundingSummaryConfidenceLabel,groundingSummaryCoverageLabel:LYRA_DEFAULT_groundingSummaryCoverageLabel,groundingSummaryEmpty:LYRA_DEFAULT_groundingSummaryEmpty,groundingSummaryEvidenceHeading:LYRA_DEFAULT_groundingSummaryEvidenceHeading,groundingSummaryEvidenceSpan:LYRA_DEFAULT_groundingSummaryEvidenceSpan,groundingSummaryLabel:LYRA_DEFAULT_groundingSummaryLabel,groundingSummarySupportedLabel:LYRA_DEFAULT_groundingSummarySupportedLabel,groundingSummaryUnsupportedLabel:LYRA_DEFAULT_groundingSummaryUnsupportedLabel,groundingSummaryWarningsHeading:LYRA_DEFAULT_groundingSummaryWarningsHeading,map:LYRA_DEFAULT_map,navigation:LYRA_DEFAULT_navigation,open:LYRA_DEFAULT_open,popover:LYRA_DEFAULT_popover,search:LYRA_DEFAULT_search,select:LYRA_DEFAULT_select}}static{this.ownedCollectionProperties=Object.freeze(["assessment","citations"])}static{this.identityCollectionObjectProperties=Object.freeze(["assessment"])}static{this.identityCollectionProperties=Object.freeze(["citations"])}static{this.styles=[LyraElement.styles,styles]}static{this.immutableEventDetails=Object.freeze(["lr-citation-select","lr-claim-select"])}static{this.identityEventDetailProperties=Object.freeze({"lr-citation-select":Object.freeze(["citation"]),"lr-claim-select":Object.freeze(["claim"])})}get normalizedAssessment(){const source=this.assessment;if(source===null||typeof source!="object")return;const cached=this.canonicalAssessmentBySource.get(source);if(cached!==void 0)return cached??void 0;const assessment=projectAssessment(source);return this.canonicalAssessmentBySource.set(source,assessment??null),assessment}get normalizedCitations(){const source=this.citations;if(source===null||typeof source!="object")return EMPTY_CANONICAL_CITATIONS;const cached=this.canonicalCitationsBySource.get(source);if(cached)return cached;const citations=projectRows(source,projectCitation,EMPTY_CANONICAL_CITATIONS);return this.canonicalCitationsBySource.set(source,citations),citations}sectionHeading(part,text){switch(resolveHeadingLevel(this.headingLevel)){case"1":return html`<h1 part=${part}>${text}</h1>`;case"2":return html`<h2 part=${part}>${text}</h2>`;case"4":return html`<h4 part=${part}>${text}</h4>`;case"5":return html`<h5 part=${part}>${text}</h5>`;case"6":return html`<h6 part=${part}>${text}</h6>`;case"3":return html`<h3 part=${part}>${text}</h3>`;default:return html`<span part=${part}>${text}</span>`}}tone(value){return value>=this.thresholds.high?"success":value>=this.thresholds.medium?"warning":"danger"}formatPercent(value){return getNumberFormat(this.effectiveLocale,{style:"percent"}).format(finiteRange(value,0,0,1))}onCitationSelect(citation,event){event.stopPropagation(),this.emit("lr-citation-select",{citation:citation.source})}onNestedCitationSelect(citations,event){event.stopPropagation();const selected=nestedEventDetailValue(event,"citation"),citation=citations.find(candidate=>candidate.input===selected);citation&&this.emit("lr-citation-select",{citation:citation.source})}onNestedClaimSelect(claims,event){event.stopPropagation();const selected=nestedEventDetailValue(event,"claim"),claim=claims.find(candidate=>candidate.input===selected);claim&&this.emit("lr-claim-select",{claim:claim.source})}render(){const groupLabel=retrievalSemanticLabel(this,this.label==null?this.localize("groundingSummaryLabel"):this.label),groupRole=retrievalSemanticRole(this,"group"),a=this.normalizedAssessment;if(!a)return html`<div
|
|
15
15
|
part="base"
|
|
16
16
|
role=${groupRole??nothing}
|
|
17
17
|
aria-label=${groupLabel??nothing}
|
|
@@ -75,8 +75,9 @@ var __decorate=function(decorators,target,key,desc){var c=arguments.length,r=c<3
|
|
|
75
75
|
>${numberFormat.format(citations.length)}</span
|
|
76
76
|
>
|
|
77
77
|
<ul part="evidence-list" role="list">
|
|
78
|
-
${citations.map((citation,index)=>this.renderEvidenceItem(citation,index))}
|
|
78
|
+
${citations.slice(0,MAX_RENDERED_GROUNDING_CITATIONS).map((citation,index)=>this.renderEvidenceItem(citation,index))}
|
|
79
79
|
</ul>
|
|
80
|
+
${citations.length>MAX_RENDERED_GROUNDING_CITATIONS?html`<p part="limit" role="note">${this.localize("groundingSummaryCitationsLimit",void 0,{count:numberFormat.format(MAX_RENDERED_GROUNDING_CITATIONS)})}</p>`:nothing}
|
|
80
81
|
</div>
|
|
81
82
|
`:nothing}
|
|
82
83
|
</div>
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{css}from"lit";const styles=css`:host{inline-size:100%;min-inline-size:0;display:block}[part=base]{gap:var(--lr-space-m);flex-direction:column;display:flex}[part=stats]{gap:var(--lr-space-m);flex-wrap:wrap;display:flex}[part=stats]>lr-stat{flex:1 1 var(--lr-size-10rem);min-inline-size:0}[part=warnings]{gap:var(--lr-space-xs);padding:var(--lr-space-s) var(--lr-space-m);border-inline-start:var(--lr-border-width-thick) solid var(--lr-color-warning);border-radius:var(--lr-radius);background:var(--lr-color-warning-quiet);flex-direction:column;display:flex}[part=warnings-heading]{font-weight:var(--lr-font-weight-semibold);color:var(--lr-color-text);margin:0}[part=warnings-count]{color:var(--lr-color-text-quiet);font-weight:var(--lr-font-weight-medium);margin-inline-start:var(--lr-space-xs)}[part=warnings-list]{gap:var(--lr-space-xs);flex-direction:column;margin:0;padding-inline-start:var(--lr-space-l);display:flex}[part=warning]{font-size:var(--lr-font-size-sm);color:var(--lr-color-text)}[part=evidence]{gap:var(--lr-space-s);flex-direction:column;display:flex}[part=evidence-heading]{font-size:var(--lr-font-size-xs);font-weight:var(--lr-font-weight-semibold);text-transform:uppercase;letter-spacing:var(--lr-size-0-04em);color:var(--lr-color-text-quiet);margin:0}[part=evidence-count]{font-size:var(--lr-font-size-xs);color:var(--lr-color-text-quiet);margin-inline-start:var(--lr-space-xs)}[part=evidence-list]{margin:0;padding:0;list-style:none;display:block}[part=evidence-item]{align-items:baseline;gap:var(--lr-space-xs);padding-block:var(--lr-space-xs);flex-wrap:wrap;display:flex}[part=evidence-item]+[part=evidence-item]{border-block-start:var(--lr-border-width-thin) solid var(--lr-color-border)}[part=evidence-label]{font-size:var(--lr-font-size-sm);color:var(--lr-color-text)}[part=evidence-span]{font-size:var(--lr-font-size-sm);font-family:var(--lr-font-mono);color:var(--lr-color-text-quiet)}`;export{styles};
|
|
1
|
+
import{css}from"lit";const styles=css`:host{inline-size:100%;min-inline-size:0;display:block}[part=base]{gap:var(--lr-space-m);flex-direction:column;display:flex}[part=stats]{gap:var(--lr-space-m);flex-wrap:wrap;display:flex}[part=stats]>lr-stat{flex:1 1 var(--lr-size-10rem);min-inline-size:0}[part=warnings]{gap:var(--lr-space-xs);padding:var(--lr-space-s) var(--lr-space-m);border-inline-start:var(--lr-border-width-thick) solid var(--lr-color-warning);border-radius:var(--lr-radius);background:var(--lr-color-warning-quiet);flex-direction:column;display:flex}[part=warnings-heading]{font-weight:var(--lr-font-weight-semibold);color:var(--lr-color-text);margin:0}[part=warnings-count]{color:var(--lr-color-text-quiet);font-weight:var(--lr-font-weight-medium);margin-inline-start:var(--lr-space-xs)}[part=warnings-list]{gap:var(--lr-space-xs);flex-direction:column;margin:0;padding-inline-start:var(--lr-space-l);display:flex}[part=warning]{font-size:var(--lr-font-size-sm);color:var(--lr-color-text)}[part=evidence]{gap:var(--lr-space-s);flex-direction:column;display:flex}[part=evidence-heading]{font-size:var(--lr-font-size-xs);font-weight:var(--lr-font-weight-semibold);text-transform:uppercase;letter-spacing:var(--lr-size-0-04em);color:var(--lr-color-text-quiet);margin:0}[part=evidence-count]{font-size:var(--lr-font-size-xs);color:var(--lr-color-text-quiet);margin-inline-start:var(--lr-space-xs)}[part=evidence-list]{margin:0;padding:0;list-style:none;display:block}[part=evidence-item]{align-items:baseline;gap:var(--lr-space-xs);padding-block:var(--lr-space-xs);flex-wrap:wrap;display:flex}[part=evidence-item]+[part=evidence-item]{border-block-start:var(--lr-border-width-thin) solid var(--lr-color-border)}[part=evidence-label]{font-size:var(--lr-font-size-sm);color:var(--lr-color-text)}[part=evidence-span]{font-size:var(--lr-font-size-sm);font-family:var(--lr-font-mono);color:var(--lr-color-text-quiet)}[part=limit]{margin:var(--lr-space-s);color:var(--lr-color-text-quiet);font-size:var(--lr-font-size-xs)}`;export{styles};
|
|
@@ -59,6 +59,10 @@ provenance?:LyraProvenance;}type MemoryScope='short-term'|'long-term';export int
|
|
|
59
59
|
* rendering, counts, focus recovery, confirmation state, or actions. The first item for an id
|
|
60
60
|
* wins in that scope.
|
|
61
61
|
*
|
|
62
|
+
* At most 500 items per section render as `[part="item"]` rows; a section's list past that length
|
|
63
|
+
* renders a localized `[part="limit"]` notice after that section's list rather than mounting an
|
|
64
|
+
* unbounded number of rows.
|
|
65
|
+
*
|
|
62
66
|
* @customElement lr-memory-panel
|
|
63
67
|
* @event lr-add - A pending "add to long-term memory" action was approved. `detail: { memory }` --
|
|
64
68
|
* the short-term item as-is; the host decides how/whether to persist it.
|
|
@@ -73,6 +77,8 @@ provenance?:LyraProvenance;}type MemoryScope='short-term'|'long-term';export int
|
|
|
73
77
|
* @csspart heading - A section's visible heading text.
|
|
74
78
|
* @csspart section-empty - A section's "no items" text, shown when that section's own list is empty.
|
|
75
79
|
* @csspart list - A section's `role="list"` wrapper, omitted while that section is empty.
|
|
80
|
+
* @csspart limit - Localized notice shown when a section's items exceed the 500-item render
|
|
81
|
+
* ceiling.
|
|
76
82
|
* @csspart item - One memory item row (`role="listitem"`); carries `data-id`/`data-scope` and a
|
|
77
83
|
* stable `tabindex="-1"` so focus has somewhere to land after a pending confirmation on this row
|
|
78
84
|
* resolves.
|