@aceshooting/lyra-ui 27.0.0 → 28.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +67 -63
- package/README.md +7 -3
- package/dist/cli/css-declarations.mjs +1 -0
- package/dist/cli/lyra-rename-ledger.mjs +1 -1
- package/dist/cli/migrate-wa.mjs +9 -4
- package/dist/cli/migration-contract.json +1 -1
- package/dist/cli/migration-renames.mjs +2 -2
- package/dist/cli/migration-theme-scopes.mjs +3 -0
- package/dist/cli/theme-scope-vocabulary.generated.mjs +1 -0
- package/dist/components/agent-tools/activity-feed/activity-feed.class.js +1 -1
- package/dist/components/agent-tools/agent-eval-dashboard/agent-eval-dashboard.class.js +1 -1
- package/dist/components/agent-tools/agent-question/agent-question.class.js +1 -1
- package/dist/components/agent-tools/agent-run/agent-run.class.js +1 -1
- package/dist/components/agent-tools/agent-trace/agent-trace.class.js +1 -1
- package/dist/components/agent-tools/approval-queue/approval-queue.class.js +1 -1
- package/dist/components/agent-tools/artifact-panel/artifact-panel.class.js +1 -1
- package/dist/components/agent-tools/background-runs/background-runs.class.js +1 -1
- package/dist/components/agent-tools/browser-frame/browser-frame.class.js +1 -1
- package/dist/components/agent-tools/budget-meter/budget-meter.class.js +1 -1
- package/dist/components/agent-tools/change-review/change-review.class.js +1 -1
- package/dist/components/agent-tools/commit-card/commit-card.class.js +1 -1
- package/dist/components/agent-tools/compare-panel/compare-panel.class.js +1 -1
- package/dist/components/agent-tools/confirm-bar/confirm-bar.class.js +1 -1
- package/dist/components/agent-tools/connector-manager/connector-manager.class.js +1 -1
- package/dist/components/agent-tools/context-inspector/context-inspector.class.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.js +1 -1
- package/dist/components/agent-tools/mcp-app/mcp-app.class.js +1 -1
- package/dist/components/agent-tools/permission-grant/permission-grant.class.js +1 -1
- package/dist/components/agent-tools/permission-rules/permission-rules.class.js +1 -1
- package/dist/components/agent-tools/policy-summary/policy-summary.class.js +1 -1
- package/dist/components/agent-tools/prompt-studio/prompt-studio.class.js +1 -1
- package/dist/components/agent-tools/result-card/result-field.class.js +1 -1
- package/dist/components/agent-tools/schema-viewer/schema-viewer.class.js +1 -1
- package/dist/components/agent-tools/span-waterfall/span-waterfall.class.js +1 -1
- package/dist/components/agent-tools/stack-trace/stack-trace.class.js +1 -1
- package/dist/components/agent-tools/subagent-panel/subagent-panel.class.js +2 -2
- package/dist/components/agent-tools/task-list/task-list.class.js +2 -2
- package/dist/components/agent-tools/terminal/terminal.class.js +1 -1
- package/dist/components/agent-tools/test-results/test-results.class.js +1 -1
- package/dist/components/agent-tools/thinking-panel/thinking-panel.class.js +1 -1
- package/dist/components/agent-tools/tool-approval-dialog/tool-approval-dialog.class.js +1 -1
- package/dist/components/agent-tools/tool-call-block/tool-call-block.class.js +1 -1
- package/dist/components/agent-tools/tool-call-chip/tool-call-chip.class.js +1 -1
- package/dist/components/agent-tools/tool-param-form/tool-param-form.class.js +1 -1
- package/dist/components/agent-tools/tool-result-dialog/tool-result-dialog.class.js +1 -1
- package/dist/components/agent-tools/tool-result-view/tool-result-view.class.js +1 -1
- package/dist/components/agent-tools/tool-select-dialog/tool-select-dialog.class.js +1 -1
- package/dist/components/agent-tools/tool-timeline/tool-timeline.class.js +1 -1
- package/dist/components/agent-tools/trace-tree/trace-tree.class.js +2 -2
- package/dist/components/charts/chart/box-plot.class.d.ts +4 -2
- package/dist/components/charts/chart/box-plot.class.js +6 -5
- package/dist/components/charts/chart/chart-token-cache.js +2 -2
- package/dist/components/charts/chart/chart.class.d.ts +6 -4
- package/dist/components/charts/chart/chart.class.js +8 -7
- package/dist/components/charts/chart/histogram.class.js +1 -1
- package/dist/components/charts/chart/lite-chart.class.js +1 -1
- package/dist/components/conversation/agent-workspace/agent-workspace.class.js +1 -1
- package/dist/components/conversation/audio-visualizer/audio-visualizer.class.js +1 -1
- package/dist/components/conversation/branch-picker/branch-picker.class.js +1 -1
- package/dist/components/conversation/chat-composer/chat-composer.class.js +1 -1
- package/dist/components/conversation/chat-message/chat-message.class.js +1 -1
- package/dist/components/conversation/chat-viewport/chat-viewport.class.js +1 -1
- package/dist/components/conversation/checkpoint/checkpoint.class.js +1 -1
- package/dist/components/conversation/code-block/code-block-base.class.js +1 -1
- package/dist/components/conversation/code-block/code-block-core.class.js +1 -1
- package/dist/components/conversation/code-block/code-block.class.js +1 -1
- package/dist/components/conversation/conversation-item/conversation-item.class.js +1 -1
- package/dist/components/conversation/generation-metrics/generation-metrics.class.js +1 -1
- package/dist/components/conversation/handoff-divider/handoff-divider.class.js +1 -1
- package/dist/components/conversation/markdown/markdown-base.class.js +1 -1
- package/dist/components/conversation/markdown/markdown-core.class.js +1 -1
- package/dist/components/conversation/markdown/markdown.class.js +1 -1
- package/dist/components/conversation/message-actions/message-actions.class.js +1 -1
- package/dist/components/conversation/message-feedback/message-feedback.class.js +1 -1
- package/dist/components/conversation/message-parts/message-parts.class.js +1 -1
- package/dist/components/conversation/model-select/model-select.class.js +1 -1
- package/dist/components/conversation/model-settings-panel/model-settings-panel.class.js +1 -1
- package/dist/components/conversation/prompt-input/prompt-input.class.js +1 -1
- package/dist/components/conversation/prompt-queue/prompt-queue.class.js +1 -1
- package/dist/components/conversation/push-to-talk/push-to-talk.class.js +1 -1
- package/dist/components/conversation/realtime-session/realtime-session.class.js +1 -1
- package/dist/components/conversation/selection-toolbar/selection-toolbar.class.js +1 -1
- package/dist/components/conversation/stream-status/stream-status.class.js +1 -1
- package/dist/components/conversation/suggestion-chips/suggestion-chips.class.js +1 -1
- package/dist/components/conversation/thread-list/thread-list.class.js +1 -1
- package/dist/components/conversation/transcript-feed/transcript-feed.class.js +1 -1
- package/dist/components/conversation/typing-indicator/typing-indicator.class.js +1 -1
- package/dist/components/conversation/usage-badge/usage-badge.class.js +1 -1
- package/dist/components/conversation/voice-picker/voice-picker.class.js +1 -1
- package/dist/components/data/calendar/calendar.class.js +1 -1
- package/dist/components/data/condition-builder/condition-builder.class.js +1 -1
- package/dist/components/data/context-meter/context-meter.class.js +1 -1
- package/dist/components/data/data-grid/data-grid.class.d.ts +2 -2
- package/dist/components/data/data-grid/data-grid.class.js +3 -3
- package/dist/components/data/document-library/document-library.class.js +1 -1
- package/dist/components/data/env-list/env-list.class.js +1 -1
- package/dist/components/data/file-tree/file-tree.class.d.ts +2 -2
- package/dist/components/data/file-tree/file-tree.class.js +1 -1
- package/dist/components/data/flow-canvas/flow-canvas.class.js +1 -1
- package/dist/components/data/flow-controls/flow-controls.class.js +1 -1
- package/dist/components/data/flow-minimap/flow-minimap.class.js +1 -1
- package/dist/components/data/flow-node/flow-node.class.js +1 -1
- package/dist/components/data/flow-run-status/flow-run-status.class.js +1 -1
- package/dist/components/data/funnel/funnel.class.js +1 -1
- package/dist/components/data/gauge/gauge.class.js +1 -1
- package/dist/components/data/graph-query-builder/graph-query-builder.class.js +1 -1
- package/dist/components/data/heatmap/heatmap.class.d.ts +2 -1
- package/dist/components/data/heatmap/heatmap.class.js +2 -2
- package/dist/components/data/heatmap/heatmap.styles.js +1 -1
- package/dist/components/data/pagination/pagination.class.d.ts +2 -0
- package/dist/components/data/pagination/pagination.class.js +1 -1
- package/dist/components/data/pagination/pagination.styles.js +1 -1
- package/dist/components/data/sequence-strip/sequence-strip.class.js +1 -1
- package/dist/components/data/sparkline/sparkline.class.js +1 -1
- package/dist/components/data/stat/stat.class.js +1 -1
- package/dist/components/data/table/table.class.d.ts +23 -2
- package/dist/components/data/table/table.class.js +5 -3
- package/dist/components/data/table/table.styles.js +1 -1
- package/dist/components/data/timeline/timeline.class.js +1 -1
- package/dist/components/data/tree/tree.class.js +1 -1
- package/dist/components/data/word-cloud/word-cloud.class.js +1 -1
- package/dist/components/forms/button/button.class.js +1 -1
- package/dist/components/forms/checkbox/checkbox.class.js +1 -1
- package/dist/components/forms/checkbox-group/checkbox-group.class.js +1 -1
- package/dist/components/forms/code-editor/code-editor.class.js +1 -1
- package/dist/components/forms/color-picker/color-picker.class.d.ts +8 -4
- package/dist/components/forms/color-picker/color-picker.class.js +2 -2
- package/dist/components/forms/combobox/combobox.class.js +1 -1
- package/dist/components/forms/country-picker/country-picker.class.js +1 -1
- package/dist/components/forms/currency-picker/currency-picker.class.js +1 -1
- package/dist/components/forms/date-picker/date-input.class.js +1 -1
- package/dist/components/forms/date-picker/date-picker.class.js +1 -1
- package/dist/components/forms/emoji-picker/emoji-data-loader.js +1 -1
- package/dist/components/forms/emoji-picker/emoji-picker.class.d.ts +7 -4
- package/dist/components/forms/emoji-picker/emoji-picker.class.js +5 -5
- package/dist/components/forms/icon-button/icon-button.class.d.ts +4 -0
- package/dist/components/forms/icon-button/icon-button.class.js +1 -1
- package/dist/components/forms/icon-button/icon-button.styles.js +1 -1
- package/dist/components/forms/input/input-shared.js +1 -1
- package/dist/components/forms/input/input.class.js +1 -1
- package/dist/components/forms/input/native-time-input.class.js +1 -1
- package/dist/components/forms/input/number-input.class.js +1 -1
- package/dist/components/forms/input/time-input.class.js +1 -1
- package/dist/components/forms/locale-picker/locale-picker.class.js +1 -1
- package/dist/components/forms/otp-input/otp-input.class.js +1 -1
- package/dist/components/forms/phone-input/phone-input.class.js +1 -1
- package/dist/components/forms/radio/radio-group.class.js +1 -1
- package/dist/components/forms/radio/radio.class.js +1 -1
- package/dist/components/forms/rubric-form/rubric-form.class.js +4 -4
- package/dist/components/forms/select/select.class.js +1 -1
- package/dist/components/forms/signature-pad/signature-pad.class.js +1 -1
- package/dist/components/forms/slider/slider.class.js +1 -1
- package/dist/components/forms/switch/switch.class.js +1 -1
- package/dist/components/forms/textarea/textarea.class.js +1 -1
- package/dist/components/forms/time-range/time-range.class.js +1 -1
- package/dist/components/forms/time-zone-picker/time-zone-picker.class.js +1 -1
- package/dist/components/forms/token-input/token-input.class.js +1 -1
- package/dist/components/forms/unit-picker/unit-picker.class.js +1 -1
- package/dist/components/layout/app-rail/app-rail-item.class.js +1 -1
- package/dist/components/layout/app-rail/app-rail.class.d.ts +70 -7
- package/dist/components/layout/app-rail/app-rail.class.js +16 -4
- package/dist/components/layout/app-rail/app-rail.styles.js +1 -1
- package/dist/components/layout/app-rail-group/app-rail-group.class.js +1 -1
- package/dist/components/layout/breadcrumb/breadcrumb.class.js +1 -1
- package/dist/components/layout/card/card.class.js +1 -1
- package/dist/components/layout/carousel/carousel.class.js +1 -1
- package/dist/components/layout/command-palette/command-palette.class.js +1 -1
- package/dist/components/layout/dashboard-grid/dashboard-grid.class.js +1 -1
- package/dist/components/layout/details/accordion-item.class.js +1 -1
- package/dist/components/layout/details/details.class.js +1 -1
- package/dist/components/layout/dock-panel/dock-panel.class.js +1 -1
- package/dist/components/layout/drilldown-panel/drilldown-panel.class.js +1 -1
- package/dist/components/layout/filter-bar/filter-bar.class.js +1 -1
- package/dist/components/layout/menu/menu.class.js +1 -1
- package/dist/components/layout/menubar/menubar.class.js +1 -1
- package/dist/components/layout/multi-split/multi-split.class.js +1 -1
- package/dist/components/layout/navigation-menu/navigation-menu.class.js +1 -1
- package/dist/components/layout/page/page.class.js +1 -1
- package/dist/components/layout/reorder-list/reorder-item.class.js +1 -1
- package/dist/components/layout/reorder-list/reorder-list.class.js +1 -1
- package/dist/components/layout/responsive-panel/responsive-panel.class.js +1 -1
- package/dist/components/layout/scroller/scroller.class.js +1 -1
- package/dist/components/layout/segmented/segmented.class.d.ts +7 -4
- package/dist/components/layout/segmented/segmented.styles.js +1 -1
- package/dist/components/layout/split-panel/split-panel.class.js +1 -1
- package/dist/components/layout/tab-group/tab-group.class.js +1 -1
- package/dist/components/layout/tab-group/tab.class.js +1 -1
- package/dist/components/layout/virtual-list/virtual-list.styles.js +1 -1
- package/dist/components/layout/widget/widget.class.js +1 -1
- package/dist/components/media/animated-image/animated-image.class.js +1 -1
- package/dist/components/media/attachment-chip/attachment-chip.class.js +1 -1
- package/dist/components/media/attachment-trigger/attachment-trigger.class.js +2 -2
- package/dist/components/media/av-player/av-player.class.js +1 -1
- package/dist/components/media/avatar-group/avatar-group.class.js +1 -1
- package/dist/components/media/drop-zone/drop-zone.class.js +1 -1
- package/dist/components/media/file-icon/file-icon.class.js +1 -1
- package/dist/components/media/file-input/file-input.class.js +1 -1
- package/dist/components/media/flag/flag.class.js +1 -1
- package/dist/components/media/image-comparer/image-comparer.class.js +1 -1
- package/dist/components/media/image-viewer/image-viewer.class.d.ts +2 -1
- package/dist/components/media/image-viewer/image-viewer.class.js +4 -2
- package/dist/components/media/image-viewer/image-viewer.styles.js +1 -1
- package/dist/components/media/lightbox/lightbox.class.js +1 -1
- package/dist/components/media/map/map.class.js +1 -1
- package/dist/components/media/media-card/media-card.class.js +1 -1
- package/dist/components/media/pan-zoom/pan-zoom.class.js +1 -1
- package/dist/components/media/qr-code/qr-code.class.d.ts +2 -2
- package/dist/components/media/qr-code/qr-code.class.js +1 -1
- package/dist/components/media/sequence-playback/sequence-playback.class.js +1 -1
- package/dist/components/media/video/video.class.js +1 -1
- package/dist/components/media/video-playlist/video-playlist.class.js +1 -1
- package/dist/components/media/zoomable-frame/zoomable-frame.class.js +1 -1
- package/dist/components/overlays/alert/alert.class.js +1 -1
- package/dist/components/overlays/badge/tag.class.js +1 -1
- package/dist/components/overlays/callout/callout.class.js +1 -1
- package/dist/components/overlays/chip/chip-group.class.js +1 -1
- package/dist/components/overlays/chip/chip.class.js +1 -1
- package/dist/components/overlays/context-menu/context-menu.class.js +1 -1
- package/dist/components/overlays/dialog/confirm.js +1 -1
- package/dist/components/overlays/dialog/dialog.class.js +1 -1
- package/dist/components/overlays/kbd/kbd.class.js +1 -1
- package/dist/components/overlays/overlay/popover.class.js +1 -1
- package/dist/components/overlays/overlay/tooltip.class.js +1 -1
- package/dist/components/overlays/progress/progress-bar.class.js +1 -1
- package/dist/components/overlays/progress/progress-ring.class.js +1 -1
- package/dist/components/overlays/rating/rating.class.js +1 -1
- package/dist/components/overlays/skeleton/skeleton.class.js +1 -1
- package/dist/components/overlays/spinner/spinner.class.js +1 -1
- package/dist/components/overlays/toast/toast-item.class.js +1 -1
- package/dist/components/overlays/toast/toast.class.js +1 -1
- package/dist/components/retrieval/chunk-inspector/chunk-inspector.class.js +1 -1
- package/dist/components/retrieval/citation-badge/citation-badge.class.js +1 -1
- package/dist/components/retrieval/claim-evidence/claim-evidence.class.js +1 -1
- package/dist/components/retrieval/community-card/community-card.class.js +1 -1
- package/dist/components/retrieval/embedding-explorer/embedding-explorer.class.js +1 -1
- package/dist/components/retrieval/entity-card/entity-card.class.js +1 -1
- package/dist/components/retrieval/entity-chip/entity-chip.class.js +1 -1
- package/dist/components/retrieval/entity-dossier/entity-dossier.class.js +1 -1
- package/dist/components/retrieval/graph/graph.class.js +1 -1
- package/dist/components/retrieval/graph-legend/graph-legend.class.js +1 -1
- package/dist/components/retrieval/grounding-summary/grounding-summary.class.js +2 -2
- package/dist/components/retrieval/ingestion-queue/ingestion-queue.class.js +1 -1
- package/dist/components/retrieval/knowledge-base/knowledge-base.class.js +1 -1
- package/dist/components/retrieval/knowledge-base-admin/knowledge-base-admin.class.js +1 -1
- package/dist/components/retrieval/knowledge-graph-explorer/knowledge-graph-explorer.class.js +1 -1
- package/dist/components/retrieval/memory-panel/memory-panel.class.js +1 -1
- package/dist/components/retrieval/mind-map/mind-map.class.js +1 -1
- package/dist/components/retrieval/neighbor-list/neighbor-list.class.js +1 -1
- package/dist/components/retrieval/node-palette/node-palette.class.js +1 -1
- package/dist/components/retrieval/path-strip/path-strip.class.js +1 -1
- package/dist/components/retrieval/provenance-panel/provenance-panel.class.js +1 -1
- package/dist/components/retrieval/rag-answer/rag-answer.class.js +1 -1
- package/dist/components/retrieval/rag-eval-dashboard/rag-eval-dashboard.class.js +1 -1
- package/dist/components/retrieval/research-progress/research-progress.class.js +1 -1
- package/dist/components/retrieval/retrieval-compare/retrieval-compare.class.js +1 -1
- package/dist/components/retrieval/retrieval-results/retrieval-results.class.js +1 -1
- package/dist/components/retrieval/retrieval-search/retrieval-search.class.js +1 -1
- package/dist/components/retrieval/retrieval-trace/retrieval-trace.class.js +1 -1
- package/dist/components/retrieval/source-card/source-card.class.js +1 -1
- package/dist/components/retrieval/source-list/source-list.class.js +1 -1
- package/dist/components/retrieval/source-picker/source-picker.class.js +1 -1
- package/dist/components/utility/copy-button/copy-button.class.js +1 -1
- package/dist/components/utility/diff-view/diff-view.class.js +1 -1
- package/dist/components/utility/export-button/export-button.class.js +1 -1
- package/dist/components/utility/icon/icon.class.js +1 -1
- package/dist/components/utility/json-viewer/json-viewer.class.js +1 -1
- package/dist/components/utility/known-date/known-date.class.js +1 -1
- package/dist/components/utility/mention-popover/mention-popover.class.js +1 -1
- package/dist/components/utility/poll-status/poll-status.class.js +1 -1
- package/dist/components/utility/random-content/random-content.class.js +1 -1
- package/dist/components/utility/tour/tour.class.js +1 -1
- package/dist/components/viewers/archive-viewer/archive-viewer.class.js +1 -1
- package/dist/components/viewers/calendar-viewer/calendar-viewer.class.js +1 -1
- package/dist/components/viewers/contact-viewer/contact-viewer.class.js +1 -1
- package/dist/components/viewers/csv-viewer/csv-viewer.class.js +1 -1
- package/dist/components/viewers/dataset-viewer/dataset-viewer.class.js +2 -2
- package/dist/components/viewers/document-compare/document-compare.class.js +1 -1
- package/dist/components/viewers/document-preview/document-preview.class.js +1 -1
- package/dist/components/viewers/document-viewer/document-viewer.class.js +1 -1
- package/dist/components/viewers/docx-viewer/docx-viewer.class.js +1 -1
- package/dist/components/viewers/ebook-viewer/ebook-viewer.class.js +1 -1
- package/dist/components/viewers/email-viewer/email-viewer.class.js +1 -1
- package/dist/components/viewers/geojson-view/geojson-view.class.js +1 -1
- package/dist/components/viewers/geojson-view/geojson-viewer.class.js +1 -1
- package/dist/components/viewers/highlight-layer/highlight-layer.class.js +1 -1
- package/dist/components/viewers/html-viewer/html-viewer.class.js +1 -1
- package/dist/components/viewers/include/include.class.js +1 -1
- package/dist/components/viewers/notebook-viewer/notebook-viewer.class.js +1 -1
- package/dist/components/viewers/page-rail/page-rail.class.d.ts +1 -1
- package/dist/components/viewers/page-rail/page-rail.class.js +3 -3
- package/dist/components/viewers/pdf-viewer/pdf-viewer.class.d.ts +2 -2
- package/dist/components/viewers/pdf-viewer/pdf-viewer.class.js +2 -2
- package/dist/components/viewers/pptx-viewer/pptx-viewer.class.js +1 -1
- package/dist/components/viewers/spreadsheet-viewer/spreadsheet-viewer.class.js +1 -1
- package/dist/components/viewers/svg-viewer/svg-viewer.class.js +1 -1
- package/dist/components/viewers/xml-viewer/xml-viewer.class.js +1 -1
- package/dist/events.d.ts +6 -1
- package/dist/framework-types.d.ts +1 -1
- package/dist/internal/accessibility-visibility.js +1 -1
- package/dist/internal/collection-snapshot.js +1 -1
- package/dist/internal/default-strings/agent-tools.generated.js +1 -0
- package/dist/internal/default-strings/charts.generated.js +1 -0
- package/dist/internal/default-strings/conversation.generated.js +1 -0
- package/dist/internal/default-strings/data.generated.js +1 -0
- package/dist/internal/default-strings/forms.generated.js +1 -0
- package/dist/internal/default-strings/layout.generated.js +1 -0
- package/dist/internal/default-strings/media.generated.js +1 -0
- package/dist/internal/default-strings/overlays.generated.js +1 -0
- package/dist/internal/default-strings/retrieval.generated.js +1 -0
- package/dist/internal/default-strings/shared.generated.js +1 -0
- package/dist/internal/default-strings/utility.generated.js +1 -0
- package/dist/internal/default-strings/viewers.generated.js +5 -0
- package/dist/internal/dev-mode-attribute-warning.development.js +1 -1
- package/dist/internal/dev-mode-attribute-warning.production.js +1 -1
- package/dist/internal/document-tokens.d.ts +11 -0
- package/dist/internal/document-tokens.generated.js +15 -0
- package/dist/internal/document-tokens.js +3 -0
- package/dist/internal/form-associated.d.ts +1 -1
- package/dist/internal/form-associated.js +1 -1
- package/dist/internal/glass-surface.styles.js +1 -1
- package/dist/internal/host-tokens.styles.js +1 -0
- package/dist/internal/image-zoom.js +1 -0
- package/dist/internal/intl-cache.js +1 -1
- package/dist/internal/localization-types.d.ts +1 -1
- package/dist/internal/localization.js +2 -2
- package/dist/internal/lyra-element.d.ts +4 -2
- package/dist/internal/lyra-element.js +2 -2
- package/dist/internal/nonmodal-overlay-manager.js +1 -1
- package/dist/internal/opaque-content-border.styles.js +1 -1
- package/dist/internal/open-overlay-ancestors.js +1 -0
- package/dist/internal/open-overlay-raise.styles.js +1 -0
- package/dist/internal/optional-peer-failure.js +1 -0
- package/dist/internal/package-metadata.js +1 -1
- package/dist/internal/prefix.js +1 -1
- package/dist/internal/specialist-host-tokens.styles.js +1 -0
- package/dist/internal/specialist-tokens.generated.js +2 -0
- package/dist/internal/step-value.js +1 -1
- package/dist/internal/theme-observation.js +1 -1
- package/dist/internal/theme-scopes.d.ts +11 -0
- package/dist/internal/theme-scopes.js +1 -0
- package/dist/looks/shadcn.css +1 -1
- package/dist/lyra.d.ts +1 -1
- package/dist/lyra.js +1 -1
- package/dist/styles/design-tokens.css +1 -1
- package/dist/styles/tokens-root.css +1 -1
- package/dist/surfaces/glass.css +1 -1
- package/dist/testing/happy-dom-shims.d.ts +22 -1
- package/dist/testing/happy-dom-shims.js +1 -1
- package/dist/testing/index.d.ts +1 -1
- package/dist/testing/index.js +1 -1
- package/dist/testing/interaction-drivers.d.ts +66 -7
- package/dist/testing/interaction-drivers.js +1 -1
- package/dist/testing/jsdom-shims.d.ts +70 -0
- package/dist/testing/jsdom-shims.js +1 -0
- package/dist/theme/look-inputs.d.ts +1 -1
- package/dist/theme/look-inputs.js +37 -41
- package/dist/theme/theme.d.ts +13 -0
- package/dist/theme/theme.js +1 -1
- package/dist/theme.css +1 -1
- package/dist/utilities/index.d.ts +1 -1
- package/dist/utilities/index.js +1 -1
- package/dist/utilities/scoped-registry.d.ts +3 -0
- package/dist/utilities/scoped-registry.js +1 -1
- package/dist/utilities/theme-scopes.d.ts +1 -0
- package/dist/utilities/theme-scopes.js +1 -0
- package/dist/utilities/tokens.d.ts +1 -0
- package/dist/utilities/tokens.js +1 -0
- package/llms/components/lr-app-rail.md +51 -4
- package/llms/components/lr-box-plot.md +5 -0
- package/llms/components/lr-chart.md +6 -0
- package/llms/components/lr-emoji-picker.md +13 -8
- package/llms/components/lr-heatmap.md +10 -2
- package/llms/components/lr-icon-button.md +13 -1
- package/llms/components/lr-image-viewer.md +8 -0
- package/llms/components/lr-pagination.md +4 -2
- package/llms/components/lr-segmented.md +7 -3
- package/llms/components/lr-table.md +14 -12
- package/llms/components/lr-thread-list.md +4 -3
- package/llms/migration.md +9 -0
- package/llms/peers.md +1 -1
- package/llms/shared/events-and-types.md +41 -0
- package/llms/shared/frameworks-and-ssr.md +16 -0
- package/llms/shared/imports-and-registration.md +4 -3
- package/llms/shared/native-styles-and-utilities.md +38 -3
- package/llms/shared/styles-and-tokens.md +242 -102
- package/llms/shared/testing-and-utilities.md +104 -7
- package/llms/shared.md +445 -115
- package/llms/tokens.md +31 -49
- package/locales.json +138 -138
- package/package.json +16 -8
- package/registrations.json +1 -1
- package/dist/internal/default-strings.generated.js +0 -5
- package/dist/internal/specialist-tokens.styles.js +0 -1
- package/dist/internal/tokens/palette.styles.js +0 -1
- package/dist/internal/tokens.styles.js +0 -1
package/dist/components/retrieval/knowledge-graph-explorer/knowledge-graph-explorer.class.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import{__decorate}from"tslib";import{collectionSupport,publicCollectionTruncation}from"../../../internal/collection-snapshot.js";import{tag}from"../../../internal/prefix.js";import{html,nothing}from"lit";import{property,state,query}from"lit/decorators.js";import{guard}from"lit/directives/guard.js";import{LyraElement}from"../../../internal/lyra-element.js";import{finiteRange}from"../../../internal/numbers.js";import{srOnly}from"../../../internal/a11y.js";import{getNumberFormat}from"../../../internal/intl-cache.js";import{styles}from"./knowledge-graph-explorer.styles.js";import{retrievalSemanticLabel,retrievalSemanticRole}from"../retrieval-semantic-owner.js";import{graphLengthConverter,graphLinkIdentity,normalizeGraphModel}from"../graph/graph-model.js";import{canonicalIdentityList,isNonBlankIdentity}from"../retrieval-identity.js";import"../graph/graph.class.js";import"../graph-legend/graph-legend.class.js";import"../entity-card/entity-card.class.js";import"../neighbor-list/neighbor-list.class.js";import"../path-strip/path-strip.class.js";import"../../overlays/overlay/popover.class.js";import"../../forms/input/input.class.js";import"../../overlays/chip/chip.class.js";import"../../forms/button/button.class.js";import{AnnouncementSinkController}from"../../../internal/announcer.js";import{LYRA_DEFAULT_fieldRequired,LYRA_DEFAULT_graphDataListLimit,LYRA_DEFAULT_graphExplorerFindPath,LYRA_DEFAULT_graphExplorerLabel,LYRA_DEFAULT_graphExplorerPin,LYRA_DEFAULT_graphExplorerPinned,LYRA_DEFAULT_graphExplorerPinnedHeading,LYRA_DEFAULT_graphExplorerSearchLimit,LYRA_DEFAULT_graphExplorerSearchPlaceholder,LYRA_DEFAULT_graphExplorerSearchResultsLabel,LYRA_DEFAULT_graphExplorerUnpin,LYRA_DEFAULT_graphExplorerUnpinned,LYRA_DEFAULT_viewerSearchMatchCount,LYRA_DEFAULT_viewerSearchNoMatches}from"../../../internal/default-strings.generated.js";const SEARCH_RESULT_LIMIT=50;function isElementNode(value){if(typeof value!="object"||value===null)return!1;const candidate=value;return candidate.nodeType===1&&typeof candidate.matches=="function"&&typeof candidate.getBoundingClientRect=="function"}class LyraKnowledgeGraphExplorer extends LyraElement{constructor(){super(...arguments),this.nodes=[],this.edges=[],this.nodeTypes=[],this.communities=[],this.entityDetails={},this.pinnedNodeIds=[],this.path=[],this.hiddenTypes=[],this.selectedNodeId=null,this.renderer="svg",this.fitTo="none",this.width=800,this.height=600,this.highlight="selection",this.query="",this.pinLiveText="",this.hoveredNodeId=null,this.activeResult=0,this.activationGeneration=0,this.nodeById=new Map,this.linksByNodeId=new Map,this.degreeByNodeId=new Map,this.communityLabelById=new Map,this.announcements=new AnnouncementSinkController(this,{eager:["polite"]}),this.onVisibilityChange=event=>{event.stopPropagation(),this.hiddenTypes=event.detail.hiddenTypes,this.emit("lr-hidden-types-change",{hiddenTypes:this.hiddenTypes})},this.onVisibilityChangeProposal=event=>{event.stopPropagation()},this.onSearchInput=event=>{event.stopPropagation();const value=event.detail.value;this.query!==value&&(this.query=value,this.emit("lr-search-change",{query:value,matchCount:this.matchingNodes()?.length??0,matchCountExact:!0,activeIndex:-1}))},this.onEntityActivate=event=>{event.stopPropagation(),this.activateEntity(event.detail.entityId)},this.onGraphNodeClick=event=>{const id=event.detail.nodeId;if(!this.canActivateNode(id))return;const generation=this.invalidateActivation();this.setInternalSelectedNodeId(id),this.pendingNodeId=id;const ownerDocument=this.ownerDocument,ownerWindow=ownerDocument.defaultView;ownerWindow&&ownerWindow.queueMicrotask(()=>{generation===this.activationGeneration&&this.isConnected&&this.ownerDocument===ownerDocument&&this.pendingNodeId===id&&(this.pendingNodeId=void 0,this.selectedNodeId===id&&this.isVisibleNode(id)&&this.activateEntity(id))})},this.onGraphNativeClick=event=>{const id=this.pendingNodeId;id&&(this.pendingNodeId=void 0,this.openDetailAt(id,this.resolveDirectClickAnchor(event)))},this.onGraphViewportChange=()=>{const el=this.trackedNodeEl,popover=this.popoverEl;if(!el?.isConnected||!popover?.open)return;const rect=el.getBoundingClientRect();popover.showAt({x:rect.left+rect.width/2,y:rect.top,width:rect.width,height:rect.height})},this.onGraphNodeEnter=event=>{this.highlight==="hover"&&(this.hoveredNodeId=event.detail.nodeId)},this.onGraphNodeLeave=event=>{this.highlight==="hover"&&this.hoveredNodeId===event.detail.nodeId&&(this.hoveredNodeId=null)},this.onResultKeyDown=event=>{const buttons=[...this.renderRoot.querySelectorAll('[part="search-result"] button')],index=buttons.indexOf(event.target),next={ArrowDown:index+1,ArrowUp:index-1,Home:0,End:buttons.length-1}[event.key];index<0||next===void 0||(event.preventDefault(),this.activeResult=Math.max(0,Math.min(buttons.length-1,next)),buttons[this.activeResult].focus())},this.onPopoverHide=()=>{this.invalidateActivation(),this.trackedNodeEl=void 0,this.setInternalSelectedNodeId(null)}}static{this.defaultStrings={...super.defaultStrings,fieldRequired:LYRA_DEFAULT_fieldRequired,graphDataListLimit:LYRA_DEFAULT_graphDataListLimit,graphExplorerFindPath:LYRA_DEFAULT_graphExplorerFindPath,graphExplorerLabel:LYRA_DEFAULT_graphExplorerLabel,graphExplorerPin:LYRA_DEFAULT_graphExplorerPin,graphExplorerPinned:LYRA_DEFAULT_graphExplorerPinned,graphExplorerPinnedHeading:LYRA_DEFAULT_graphExplorerPinnedHeading,graphExplorerSearchLimit:LYRA_DEFAULT_graphExplorerSearchLimit,graphExplorerSearchPlaceholder:LYRA_DEFAULT_graphExplorerSearchPlaceholder,graphExplorerSearchResultsLabel:LYRA_DEFAULT_graphExplorerSearchResultsLabel,graphExplorerUnpin:LYRA_DEFAULT_graphExplorerUnpin,graphExplorerUnpinned:LYRA_DEFAULT_graphExplorerUnpinned,viewerSearchMatchCount:LYRA_DEFAULT_viewerSearchMatchCount,viewerSearchNoMatches:LYRA_DEFAULT_viewerSearchNoMatches}}static{this.collectionSupport=collectionSupport}static{this.ownedCollectionProperties=Object.freeze(["nodes","edges","nodeTypes","communities","entityDetails","pinnedNodeIds","path","hiddenTypes"])}static{this.styles=[LyraElement.styles,styles,srOnly]}static{this.immutableEventDetails=Object.freeze(["lr-selection-change","lr-pin-change","lr-hidden-types-change"])}get graphModel(){const sources=this.normalizedGraphSources;return(!sources||sources[0]!==this.nodes||sources[1]!==this.edges||sources[2]!==this.nodeTypes||sources[3]!==this.communities)&&(this.normalizedGraphSources=[this.nodes,this.edges,this.nodeTypes,this.communities],this.normalizedGraphModel=normalizeGraphModel(this.nodes,this.edges,this.nodeTypes,this.communities)),this.normalizedGraphModel}get canonicalPinnedNodeIds(){return canonicalIdentityList(this.pinnedNodeIds)}get canonicalHiddenTypes(){return canonicalIdentityList(this.hiddenTypes)}connectedCallback(){super.connectedCallback(),this.hasUpdated&&this.resumePresetActivation()}willUpdate(changed){super.willUpdate(changed),(changed.has("nodes")||changed.has("edges")||changed.has("communities"))&&this.rebuildDerivedCollections(),this.hoveredNodeId&&!this.isVisibleNode(this.hoveredNodeId)&&(this.hoveredNodeId=null),(changed.has("nodes")||changed.has("hiddenTypes"))&&this.selectedNodeId&&!this.isVisibleNode(this.selectedNodeId)&&(this.invalidateActivation(),this.setInternalSelectedNodeId(null),this.popoverEl&&(this.popoverEl.open=!1)),this.hasUpdated&&(this.query??"").trim()&&(changed.has("query")||changed.has("nodes")||changed.has("hiddenTypes")||changed.has("locale")||changed.has("strings"))&&this.announcements.announcePolite(this.searchResultAnnouncement())}updated(changed){if(super.updated(changed),!changed.has("selectedNodeId"))return;const internallyAssigned=this.internalSelectionAssignment!==void 0&&Object.is(this.internalSelectionAssignment.value,this.selectedNodeId);if(this.internalSelectionAssignment=void 0,internallyAssigned)return;const generation=this.invalidateActivation(),id=this.selectedNodeId;if(!isNonBlankIdentity(id)){id!==null&&(this.selectedNodeId=null),this.popoverEl&&(this.popoverEl.open=!1);return}const graph=this.graphEl;graph&&this.isVisibleNode(id)&&this.activatePresetWhenGraphReady(id,graph,generation)}async activatePresetWhenGraphReady(id,graph,generation){for(await graph.updateComplete;generation===this.activationGeneration&&this.isConnected&&graph.isConnected&&this.selectedNodeId===id&&graph.shadowRoot?.querySelector(tag("skeleton"));)if(!await this.waitForActivationFrame(generation))return;generation===this.activationGeneration&&this.isConnected&&this.selectedNodeId===id&&this.isVisibleNode(id)&&await this.activateEntity(id)}waitForActivationFrame(generation){this.cancelActivationFrame();const ownerDocument=this.ownerDocument,ownerWindow=ownerDocument.defaultView;return!ownerWindow||!this.isConnected||generation!==this.activationGeneration?Promise.resolve(!1):new Promise(resolve=>{let settled=!1;const settle=ready=>{settled||(settled=!0,resolve(ready))};let handle;const onPageHide=()=>{this.activationFrameOwner===ownerWindow&&this.activationFrameDocument===ownerDocument&&this.activationFrameResolve===settle&&this.cancelActivationFrame()};try{handle=ownerWindow.requestAnimationFrame(()=>{const current=this.activationFrameId===handle&&this.activationFrameOwner===ownerWindow&&this.activationFrameDocument===ownerDocument&&this.activationFrameResolve===settle&&generation===this.activationGeneration&&this.isConnected&&this.ownerDocument===ownerDocument;current&&this.clearActivationFrameRecord(),settle(current)})}catch{settle(!1);return}this.activationFrameId=handle,this.activationFrameOwner=ownerWindow,this.activationFrameDocument=ownerDocument,this.activationFrameResolve=settle,this.activationFramePageHide=onPageHide,ownerWindow.addEventListener("pagehide",onPageHide,{once:!0})})}clearActivationFrameRecord(){this.activationFramePageHide&&this.activationFrameOwner?.removeEventListener("pagehide",this.activationFramePageHide),this.activationFrameId=void 0,this.activationFrameOwner=void 0,this.activationFrameDocument=void 0,this.activationFrameResolve=void 0,this.activationFramePageHide=void 0}cancelActivationFrame(){const handle=this.activationFrameId,ownerWindow=this.activationFrameOwner,settle=this.activationFrameResolve;this.clearActivationFrameRecord();try{handle!==void 0&&ownerWindow?.cancelAnimationFrame(handle)}finally{settle?.(!1)}}invalidateActivation(){return this.activationGeneration+=1,this.cancelActivationFrame(),this.activationGeneration}resumePresetActivation(){const id=this.selectedNodeId,graph=this.graphEl;if(!id||!graph||!this.isVisibleNode(id))return;const generation=this.invalidateActivation();this.activatePresetWhenGraphReady(id,graph,generation)}setInternalSelectedNodeId(value){Object.is(this.selectedNodeId,value)||(this.internalSelectionAssignment={value},this.selectedNodeId=value,this.emit("lr-selection-change",{selectedNodeId:value,selectedNodeIds:value?[value]:[],selectedEdgeIds:[]}))}disconnectedCallback(){this.invalidateActivation(),this.pendingNodeId=void 0,this.trackedNodeEl=void 0,this.hoveredNodeId=null,super.disconnectedCallback()}adoptedCallback(){super.adoptedCallback(),this.invalidateActivation(),this.announcements.adopted(),this.isConnected&&this.resumePresetActivation()}rebuildDerivedCollections(){const model=this.graphModel;this.nodeById=new Map(model.nodes.map(node=>[node.id,node])),this.communityLabelById=new Map(model.communities.map(community=>[community.id,community.label]));const linksByNodeId=new Map,degrees=new Map;for(const link of model.links)for(const id of new Set([link.source,link.target])){const adjacent=linksByNodeId.get(id);adjacent?adjacent.push(link):linksByNodeId.set(id,[link]),degrees.set(id,(degrees.get(id)??0)+1)}this.linksByNodeId=linksByNodeId,this.degreeByNodeId=degrees}isVisibleGraphNode(node){return node.type==null||!this.canonicalHiddenTypes.includes(node.type)}isVisibleNode(id){const node=this.nodeById.get(id);return!!node&&this.isVisibleGraphNode(node)}canActivateNode(id){const node=this.nodeById.get(id);return node?this.isVisibleGraphNode(node):!this.hasUpdated&&this.graphModel.nodes.length===0}nodeLabel(id){const node=this.nodeById.get(id);return node?.label||node?.accessibleLabel||id}degreeOf(id){return this.degreeByNodeId.get(id)??0}entityFor(id){const node=this.nodeById.get(id);if(!node)return;const details=this.entityDetails[id];return{id:node.id,label:node.label||node.accessibleLabel||node.id,type:node.type,communityId:node.communityId,description:details?.description,properties:details?.properties,degree:details?.degree??this.degreeOf(node.id)}}communityLabelFor(communityId){return communityId?this.communityLabelById.get(communityId)??communityId:""}neighborRowsFor(id){const rows=[];for(const link of this.linksByNodeId.get(id)??[])if(link.source===id){const node=this.entityFor(link.target);node&&this.isVisibleNode(link.target)&&rows.push({relation:link.label??"",direction:"out",node})}else if(link.target===id){const node=this.entityFor(link.source);node&&this.isVisibleNode(link.source)&&rows.push({relation:link.label??"",direction:"in",node})}return rows}searchableNamesOf(node){return[node.label,node.accessibleLabel,node.id].filter(name=>typeof name=="string"&&name!=="")}matchingNodes(){const query2=this.query??"",locale=this.effectiveLocale,model=this.graphModel,hidden=this.canonicalHiddenTypes,memo=this.matchesMemo;if(memo?.[0]===query2&&memo[1]===locale&&memo[2]===model&&memo[3]===hidden)return memo[4];const q=query2.trim().toLocaleLowerCase(locale),matches=q?model.nodes.filter(node=>this.isVisibleGraphNode(node)&&this.searchableNamesOf(node).some(name=>name.toLocaleLowerCase(locale).includes(q))):void 0;return this.matchesMemo=[query2,locale,model,hidden,matches],matches}searchResultAnnouncement(matches=this.matchingNodes()){return matches?matches.length===0?this.localize("viewerSearchNoMatches"):this.localize("viewerSearchMatchCount",void 0,{count:getNumberFormat(this.effectiveLocale).format(matches.length),pluralCount:matches.length}):""}neighborIdsOf(id){const ids=new Set;for(const link of this.linksByNodeId.get(id)??[])link.source===id?ids.add(link.target):link.target===id&&ids.add(link.source);return ids}linkKey(link){return graphLinkIdentity(link)}get computedDimmedNodeIds(){if(this.highlight==="none")return[];const matches=this.matchingNodes();if(matches){const matchIds=new Set(matches.map(n=>n.id));return this.graphModel.nodes.filter(n=>!matchIds.has(n.id)).map(n=>n.id)}const focusNodeId=this.selectedNodeId??(this.highlight==="hover"?this.hoveredNodeId:null);if(focusNodeId){const keep=this.neighborIdsOf(focusNodeId);return keep.add(focusNodeId),this.graphModel.nodes.filter(n=>!keep.has(n.id)).map(n=>n.id)}return[]}get computedDimmedLinkIds(){const dimmedNodes=new Set(this.computedDimmedNodeIds);return dimmedNodes.size===0?[]:this.graphModel.links.filter(l=>dimmedNodes.has(l.source)||dimmedNodes.has(l.target)).map(l=>this.linkKey(l))}togglePin(id){if(!isNonBlankIdentity(id))return;const pinnedNodeIds=this.canonicalPinnedNodeIds,wasPinned=pinnedNodeIds.includes(id),next=wasPinned?pinnedNodeIds.filter(existing=>existing!==id):[...pinnedNodeIds,id];this.pinnedNodeIds=next,this.pinLiveText=this.localize(wasPinned?"graphExplorerUnpinned":"graphExplorerPinned",void 0,{label:this.nodeLabel(id)}),this.announcements.announcePolite(this.pinLiveText),this.emit("lr-pin-change",{pinnedNodeIds:next})}requestPath(){const pinnedNodeIds=this.canonicalPinnedNodeIds;if(pinnedNodeIds.length!==2)return;const[sourceNodeId,targetNodeId]=pinnedNodeIds;this.emit("lr-path-request",{sourceNodeId,targetNodeId})}fit(options){this.graphEl?.fit(options)}resetView(){this.graphEl?.fit()}async focusNode(id,options){return this.isVisibleNode(id)?await this.graphEl?.focusNode(id,options)??!1:!1}async activateEntity(id){if(!this.canActivateNode(id))return;const generation=this.invalidateActivation();this.setInternalSelectedNodeId(id),this.trackedNodeEl=void 0;const graph=this.graphEl,focused=graph?await graph.focusNode(id):!1;if(generation!==this.activationGeneration||!this.isConnected||this.selectedNodeId!==id||!this.isVisibleNode(id)||!focused)return;const rect=graph?.getBoundingClientRect();rect&&this.openDetailAt(id,{x:rect.left+rect.width/2,y:rect.top+rect.height/2,width:0,height:0})}openDetailAt(id,rect){const popover=this.popoverEl;popover&&(popover.accessibleLabel=this.entityFor(id)?.label||"",popover.showAt(rect))}resolveDirectClickAnchor(event){if(this.renderer==="canvas")return this.trackedNodeEl=void 0,{x:event.clientX,y:event.clientY,width:0,height:0};const nodeEl=event.composedPath().find(el=>isElementNode(el)&&el.matches('[part="node"]'));if(!nodeEl)return this.trackedNodeEl=void 0,{x:event.clientX,y:event.clientY,width:0,height:0};this.trackedNodeEl=nodeEl;const rect=nodeEl.getBoundingClientRect();return{x:rect.left+rect.width/2,y:rect.top,width:rect.width,height:rect.height}}render(){const groupLabel=retrievalSemanticLabel(this,this.label==null?this.localize("graphExplorerLabel"):this.label),groupRole=retrievalSemanticRole(this,"group"),matches=this.matchingNodes(),detailsLimit=publicCollectionTruncation(this,"entityDetails"),model=this.graphModel,pinnedNodeIds=this.canonicalPinnedNodeIds,hiddenTypes=this.canonicalHiddenTypes,selectedEntity=this.selectedNodeId?this.entityFor(this.selectedNodeId)??null:null,isPinned=this.selectedNodeId!=null&&pinnedNodeIds.includes(this.selectedNodeId),dimmedDeps=[this.highlight,matches,this.selectedNodeId,this.hoveredNodeId,model],detailDeps=[this.selectedNodeId,model,hiddenTypes,this.entityDetails];return html`
|
|
1
|
+
import{__decorate}from"tslib";import{collectionSupport,publicCollectionTruncation}from"../../../internal/collection-snapshot.js";import{tag}from"../../../internal/prefix.js";import{html,nothing}from"lit";import{property,state,query}from"lit/decorators.js";import{guard}from"lit/directives/guard.js";import{LyraElement}from"../../../internal/lyra-element.js";import{finiteRange}from"../../../internal/numbers.js";import{srOnly}from"../../../internal/a11y.js";import{getNumberFormat}from"../../../internal/intl-cache.js";import{styles}from"./knowledge-graph-explorer.styles.js";import{retrievalSemanticLabel,retrievalSemanticRole}from"../retrieval-semantic-owner.js";import{graphLengthConverter,graphLinkIdentity,normalizeGraphModel}from"../graph/graph-model.js";import{canonicalIdentityList,isNonBlankIdentity}from"../retrieval-identity.js";import"../graph/graph.class.js";import"../graph-legend/graph-legend.class.js";import"../entity-card/entity-card.class.js";import"../neighbor-list/neighbor-list.class.js";import"../path-strip/path-strip.class.js";import"../../overlays/overlay/popover.class.js";import"../../forms/input/input.class.js";import"../../overlays/chip/chip.class.js";import"../../forms/button/button.class.js";import{AnnouncementSinkController}from"../../../internal/announcer.js";import{LYRA_DEFAULT_graphDataListLimit,LYRA_DEFAULT_graphExplorerFindPath,LYRA_DEFAULT_graphExplorerLabel,LYRA_DEFAULT_graphExplorerPin,LYRA_DEFAULT_graphExplorerPinned,LYRA_DEFAULT_graphExplorerPinnedHeading,LYRA_DEFAULT_graphExplorerSearchLimit,LYRA_DEFAULT_graphExplorerSearchPlaceholder,LYRA_DEFAULT_graphExplorerSearchResultsLabel,LYRA_DEFAULT_graphExplorerUnpin,LYRA_DEFAULT_graphExplorerUnpinned}from"../../../internal/default-strings/retrieval.generated.js";import{LYRA_DEFAULT_fieldRequired,LYRA_DEFAULT_viewerSearchMatchCount,LYRA_DEFAULT_viewerSearchNoMatches}from"../../../internal/default-strings/shared.generated.js";const SEARCH_RESULT_LIMIT=50;function isElementNode(value){if(typeof value!="object"||value===null)return!1;const candidate=value;return candidate.nodeType===1&&typeof candidate.matches=="function"&&typeof candidate.getBoundingClientRect=="function"}class LyraKnowledgeGraphExplorer extends LyraElement{constructor(){super(...arguments),this.nodes=[],this.edges=[],this.nodeTypes=[],this.communities=[],this.entityDetails={},this.pinnedNodeIds=[],this.path=[],this.hiddenTypes=[],this.selectedNodeId=null,this.renderer="svg",this.fitTo="none",this.width=800,this.height=600,this.highlight="selection",this.query="",this.pinLiveText="",this.hoveredNodeId=null,this.activeResult=0,this.activationGeneration=0,this.nodeById=new Map,this.linksByNodeId=new Map,this.degreeByNodeId=new Map,this.communityLabelById=new Map,this.announcements=new AnnouncementSinkController(this,{eager:["polite"]}),this.onVisibilityChange=event=>{event.stopPropagation(),this.hiddenTypes=event.detail.hiddenTypes,this.emit("lr-hidden-types-change",{hiddenTypes:this.hiddenTypes})},this.onVisibilityChangeProposal=event=>{event.stopPropagation()},this.onSearchInput=event=>{event.stopPropagation();const value=event.detail.value;this.query!==value&&(this.query=value,this.emit("lr-search-change",{query:value,matchCount:this.matchingNodes()?.length??0,matchCountExact:!0,activeIndex:-1}))},this.onEntityActivate=event=>{event.stopPropagation(),this.activateEntity(event.detail.entityId)},this.onGraphNodeClick=event=>{const id=event.detail.nodeId;if(!this.canActivateNode(id))return;const generation=this.invalidateActivation();this.setInternalSelectedNodeId(id),this.pendingNodeId=id;const ownerDocument=this.ownerDocument,ownerWindow=ownerDocument.defaultView;ownerWindow&&ownerWindow.queueMicrotask(()=>{generation===this.activationGeneration&&this.isConnected&&this.ownerDocument===ownerDocument&&this.pendingNodeId===id&&(this.pendingNodeId=void 0,this.selectedNodeId===id&&this.isVisibleNode(id)&&this.activateEntity(id))})},this.onGraphNativeClick=event=>{const id=this.pendingNodeId;id&&(this.pendingNodeId=void 0,this.openDetailAt(id,this.resolveDirectClickAnchor(event)))},this.onGraphViewportChange=()=>{const el=this.trackedNodeEl,popover=this.popoverEl;if(!el?.isConnected||!popover?.open)return;const rect=el.getBoundingClientRect();popover.showAt({x:rect.left+rect.width/2,y:rect.top,width:rect.width,height:rect.height})},this.onGraphNodeEnter=event=>{this.highlight==="hover"&&(this.hoveredNodeId=event.detail.nodeId)},this.onGraphNodeLeave=event=>{this.highlight==="hover"&&this.hoveredNodeId===event.detail.nodeId&&(this.hoveredNodeId=null)},this.onResultKeyDown=event=>{const buttons=[...this.renderRoot.querySelectorAll('[part="search-result"] button')],index=buttons.indexOf(event.target),next={ArrowDown:index+1,ArrowUp:index-1,Home:0,End:buttons.length-1}[event.key];index<0||next===void 0||(event.preventDefault(),this.activeResult=Math.max(0,Math.min(buttons.length-1,next)),buttons[this.activeResult].focus())},this.onPopoverHide=()=>{this.invalidateActivation(),this.trackedNodeEl=void 0,this.setInternalSelectedNodeId(null)}}static{this.defaultStrings={...super.defaultStrings,fieldRequired:LYRA_DEFAULT_fieldRequired,graphDataListLimit:LYRA_DEFAULT_graphDataListLimit,graphExplorerFindPath:LYRA_DEFAULT_graphExplorerFindPath,graphExplorerLabel:LYRA_DEFAULT_graphExplorerLabel,graphExplorerPin:LYRA_DEFAULT_graphExplorerPin,graphExplorerPinned:LYRA_DEFAULT_graphExplorerPinned,graphExplorerPinnedHeading:LYRA_DEFAULT_graphExplorerPinnedHeading,graphExplorerSearchLimit:LYRA_DEFAULT_graphExplorerSearchLimit,graphExplorerSearchPlaceholder:LYRA_DEFAULT_graphExplorerSearchPlaceholder,graphExplorerSearchResultsLabel:LYRA_DEFAULT_graphExplorerSearchResultsLabel,graphExplorerUnpin:LYRA_DEFAULT_graphExplorerUnpin,graphExplorerUnpinned:LYRA_DEFAULT_graphExplorerUnpinned,viewerSearchMatchCount:LYRA_DEFAULT_viewerSearchMatchCount,viewerSearchNoMatches:LYRA_DEFAULT_viewerSearchNoMatches}}static{this.collectionSupport=collectionSupport}static{this.ownedCollectionProperties=Object.freeze(["nodes","edges","nodeTypes","communities","entityDetails","pinnedNodeIds","path","hiddenTypes"])}static{this.styles=[LyraElement.styles,styles,srOnly]}static{this.immutableEventDetails=Object.freeze(["lr-selection-change","lr-pin-change","lr-hidden-types-change"])}get graphModel(){const sources=this.normalizedGraphSources;return(!sources||sources[0]!==this.nodes||sources[1]!==this.edges||sources[2]!==this.nodeTypes||sources[3]!==this.communities)&&(this.normalizedGraphSources=[this.nodes,this.edges,this.nodeTypes,this.communities],this.normalizedGraphModel=normalizeGraphModel(this.nodes,this.edges,this.nodeTypes,this.communities)),this.normalizedGraphModel}get canonicalPinnedNodeIds(){return canonicalIdentityList(this.pinnedNodeIds)}get canonicalHiddenTypes(){return canonicalIdentityList(this.hiddenTypes)}connectedCallback(){super.connectedCallback(),this.hasUpdated&&this.resumePresetActivation()}willUpdate(changed){super.willUpdate(changed),(changed.has("nodes")||changed.has("edges")||changed.has("communities"))&&this.rebuildDerivedCollections(),this.hoveredNodeId&&!this.isVisibleNode(this.hoveredNodeId)&&(this.hoveredNodeId=null),(changed.has("nodes")||changed.has("hiddenTypes"))&&this.selectedNodeId&&!this.isVisibleNode(this.selectedNodeId)&&(this.invalidateActivation(),this.setInternalSelectedNodeId(null),this.popoverEl&&(this.popoverEl.open=!1)),this.hasUpdated&&(this.query??"").trim()&&(changed.has("query")||changed.has("nodes")||changed.has("hiddenTypes")||changed.has("locale")||changed.has("strings"))&&this.announcements.announcePolite(this.searchResultAnnouncement())}updated(changed){if(super.updated(changed),!changed.has("selectedNodeId"))return;const internallyAssigned=this.internalSelectionAssignment!==void 0&&Object.is(this.internalSelectionAssignment.value,this.selectedNodeId);if(this.internalSelectionAssignment=void 0,internallyAssigned)return;const generation=this.invalidateActivation(),id=this.selectedNodeId;if(!isNonBlankIdentity(id)){id!==null&&(this.selectedNodeId=null),this.popoverEl&&(this.popoverEl.open=!1);return}const graph=this.graphEl;graph&&this.isVisibleNode(id)&&this.activatePresetWhenGraphReady(id,graph,generation)}async activatePresetWhenGraphReady(id,graph,generation){for(await graph.updateComplete;generation===this.activationGeneration&&this.isConnected&&graph.isConnected&&this.selectedNodeId===id&&graph.shadowRoot?.querySelector(tag("skeleton"));)if(!await this.waitForActivationFrame(generation))return;generation===this.activationGeneration&&this.isConnected&&this.selectedNodeId===id&&this.isVisibleNode(id)&&await this.activateEntity(id)}waitForActivationFrame(generation){this.cancelActivationFrame();const ownerDocument=this.ownerDocument,ownerWindow=ownerDocument.defaultView;return!ownerWindow||!this.isConnected||generation!==this.activationGeneration?Promise.resolve(!1):new Promise(resolve=>{let settled=!1;const settle=ready=>{settled||(settled=!0,resolve(ready))};let handle;const onPageHide=()=>{this.activationFrameOwner===ownerWindow&&this.activationFrameDocument===ownerDocument&&this.activationFrameResolve===settle&&this.cancelActivationFrame()};try{handle=ownerWindow.requestAnimationFrame(()=>{const current=this.activationFrameId===handle&&this.activationFrameOwner===ownerWindow&&this.activationFrameDocument===ownerDocument&&this.activationFrameResolve===settle&&generation===this.activationGeneration&&this.isConnected&&this.ownerDocument===ownerDocument;current&&this.clearActivationFrameRecord(),settle(current)})}catch{settle(!1);return}this.activationFrameId=handle,this.activationFrameOwner=ownerWindow,this.activationFrameDocument=ownerDocument,this.activationFrameResolve=settle,this.activationFramePageHide=onPageHide,ownerWindow.addEventListener("pagehide",onPageHide,{once:!0})})}clearActivationFrameRecord(){this.activationFramePageHide&&this.activationFrameOwner?.removeEventListener("pagehide",this.activationFramePageHide),this.activationFrameId=void 0,this.activationFrameOwner=void 0,this.activationFrameDocument=void 0,this.activationFrameResolve=void 0,this.activationFramePageHide=void 0}cancelActivationFrame(){const handle=this.activationFrameId,ownerWindow=this.activationFrameOwner,settle=this.activationFrameResolve;this.clearActivationFrameRecord();try{handle!==void 0&&ownerWindow?.cancelAnimationFrame(handle)}finally{settle?.(!1)}}invalidateActivation(){return this.activationGeneration+=1,this.cancelActivationFrame(),this.activationGeneration}resumePresetActivation(){const id=this.selectedNodeId,graph=this.graphEl;if(!id||!graph||!this.isVisibleNode(id))return;const generation=this.invalidateActivation();this.activatePresetWhenGraphReady(id,graph,generation)}setInternalSelectedNodeId(value){Object.is(this.selectedNodeId,value)||(this.internalSelectionAssignment={value},this.selectedNodeId=value,this.emit("lr-selection-change",{selectedNodeId:value,selectedNodeIds:value?[value]:[],selectedEdgeIds:[]}))}disconnectedCallback(){this.invalidateActivation(),this.pendingNodeId=void 0,this.trackedNodeEl=void 0,this.hoveredNodeId=null,super.disconnectedCallback()}adoptedCallback(){super.adoptedCallback(),this.invalidateActivation(),this.announcements.adopted(),this.isConnected&&this.resumePresetActivation()}rebuildDerivedCollections(){const model=this.graphModel;this.nodeById=new Map(model.nodes.map(node=>[node.id,node])),this.communityLabelById=new Map(model.communities.map(community=>[community.id,community.label]));const linksByNodeId=new Map,degrees=new Map;for(const link of model.links)for(const id of new Set([link.source,link.target])){const adjacent=linksByNodeId.get(id);adjacent?adjacent.push(link):linksByNodeId.set(id,[link]),degrees.set(id,(degrees.get(id)??0)+1)}this.linksByNodeId=linksByNodeId,this.degreeByNodeId=degrees}isVisibleGraphNode(node){return node.type==null||!this.canonicalHiddenTypes.includes(node.type)}isVisibleNode(id){const node=this.nodeById.get(id);return!!node&&this.isVisibleGraphNode(node)}canActivateNode(id){const node=this.nodeById.get(id);return node?this.isVisibleGraphNode(node):!this.hasUpdated&&this.graphModel.nodes.length===0}nodeLabel(id){const node=this.nodeById.get(id);return node?.label||node?.accessibleLabel||id}degreeOf(id){return this.degreeByNodeId.get(id)??0}entityFor(id){const node=this.nodeById.get(id);if(!node)return;const details=this.entityDetails[id];return{id:node.id,label:node.label||node.accessibleLabel||node.id,type:node.type,communityId:node.communityId,description:details?.description,properties:details?.properties,degree:details?.degree??this.degreeOf(node.id)}}communityLabelFor(communityId){return communityId?this.communityLabelById.get(communityId)??communityId:""}neighborRowsFor(id){const rows=[];for(const link of this.linksByNodeId.get(id)??[])if(link.source===id){const node=this.entityFor(link.target);node&&this.isVisibleNode(link.target)&&rows.push({relation:link.label??"",direction:"out",node})}else if(link.target===id){const node=this.entityFor(link.source);node&&this.isVisibleNode(link.source)&&rows.push({relation:link.label??"",direction:"in",node})}return rows}searchableNamesOf(node){return[node.label,node.accessibleLabel,node.id].filter(name=>typeof name=="string"&&name!=="")}matchingNodes(){const query2=this.query??"",locale=this.effectiveLocale,model=this.graphModel,hidden=this.canonicalHiddenTypes,memo=this.matchesMemo;if(memo?.[0]===query2&&memo[1]===locale&&memo[2]===model&&memo[3]===hidden)return memo[4];const q=query2.trim().toLocaleLowerCase(locale),matches=q?model.nodes.filter(node=>this.isVisibleGraphNode(node)&&this.searchableNamesOf(node).some(name=>name.toLocaleLowerCase(locale).includes(q))):void 0;return this.matchesMemo=[query2,locale,model,hidden,matches],matches}searchResultAnnouncement(matches=this.matchingNodes()){return matches?matches.length===0?this.localize("viewerSearchNoMatches"):this.localize("viewerSearchMatchCount",void 0,{count:getNumberFormat(this.effectiveLocale).format(matches.length),pluralCount:matches.length}):""}neighborIdsOf(id){const ids=new Set;for(const link of this.linksByNodeId.get(id)??[])link.source===id?ids.add(link.target):link.target===id&&ids.add(link.source);return ids}linkKey(link){return graphLinkIdentity(link)}get computedDimmedNodeIds(){if(this.highlight==="none")return[];const matches=this.matchingNodes();if(matches){const matchIds=new Set(matches.map(n=>n.id));return this.graphModel.nodes.filter(n=>!matchIds.has(n.id)).map(n=>n.id)}const focusNodeId=this.selectedNodeId??(this.highlight==="hover"?this.hoveredNodeId:null);if(focusNodeId){const keep=this.neighborIdsOf(focusNodeId);return keep.add(focusNodeId),this.graphModel.nodes.filter(n=>!keep.has(n.id)).map(n=>n.id)}return[]}get computedDimmedLinkIds(){const dimmedNodes=new Set(this.computedDimmedNodeIds);return dimmedNodes.size===0?[]:this.graphModel.links.filter(l=>dimmedNodes.has(l.source)||dimmedNodes.has(l.target)).map(l=>this.linkKey(l))}togglePin(id){if(!isNonBlankIdentity(id))return;const pinnedNodeIds=this.canonicalPinnedNodeIds,wasPinned=pinnedNodeIds.includes(id),next=wasPinned?pinnedNodeIds.filter(existing=>existing!==id):[...pinnedNodeIds,id];this.pinnedNodeIds=next,this.pinLiveText=this.localize(wasPinned?"graphExplorerUnpinned":"graphExplorerPinned",void 0,{label:this.nodeLabel(id)}),this.announcements.announcePolite(this.pinLiveText),this.emit("lr-pin-change",{pinnedNodeIds:next})}requestPath(){const pinnedNodeIds=this.canonicalPinnedNodeIds;if(pinnedNodeIds.length!==2)return;const[sourceNodeId,targetNodeId]=pinnedNodeIds;this.emit("lr-path-request",{sourceNodeId,targetNodeId})}fit(options){this.graphEl?.fit(options)}resetView(){this.graphEl?.fit()}async focusNode(id,options){return this.isVisibleNode(id)?await this.graphEl?.focusNode(id,options)??!1:!1}async activateEntity(id){if(!this.canActivateNode(id))return;const generation=this.invalidateActivation();this.setInternalSelectedNodeId(id),this.trackedNodeEl=void 0;const graph=this.graphEl,focused=graph?await graph.focusNode(id):!1;if(generation!==this.activationGeneration||!this.isConnected||this.selectedNodeId!==id||!this.isVisibleNode(id)||!focused)return;const rect=graph?.getBoundingClientRect();rect&&this.openDetailAt(id,{x:rect.left+rect.width/2,y:rect.top+rect.height/2,width:0,height:0})}openDetailAt(id,rect){const popover=this.popoverEl;popover&&(popover.accessibleLabel=this.entityFor(id)?.label||"",popover.showAt(rect))}resolveDirectClickAnchor(event){if(this.renderer==="canvas")return this.trackedNodeEl=void 0,{x:event.clientX,y:event.clientY,width:0,height:0};const nodeEl=event.composedPath().find(el=>isElementNode(el)&&el.matches('[part="node"]'));if(!nodeEl)return this.trackedNodeEl=void 0,{x:event.clientX,y:event.clientY,width:0,height:0};this.trackedNodeEl=nodeEl;const rect=nodeEl.getBoundingClientRect();return{x:rect.left+rect.width/2,y:rect.top,width:rect.width,height:rect.height}}render(){const groupLabel=retrievalSemanticLabel(this,this.label==null?this.localize("graphExplorerLabel"):this.label),groupRole=retrievalSemanticRole(this,"group"),matches=this.matchingNodes(),detailsLimit=publicCollectionTruncation(this,"entityDetails"),model=this.graphModel,pinnedNodeIds=this.canonicalPinnedNodeIds,hiddenTypes=this.canonicalHiddenTypes,selectedEntity=this.selectedNodeId?this.entityFor(this.selectedNodeId)??null:null,isPinned=this.selectedNodeId!=null&&pinnedNodeIds.includes(this.selectedNodeId),dimmedDeps=[this.highlight,matches,this.selectedNodeId,this.hoveredNodeId,model],detailDeps=[this.selectedNodeId,model,hiddenTypes,this.entityDetails];return html`
|
|
2
2
|
<div
|
|
3
3
|
part="base"
|
|
4
4
|
role=${groupRole??nothing}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import{__decorate}from"tslib";import{collectionSupport}from"../../../internal/collection-snapshot.js";import{tag}from"../../../internal/prefix.js";import{html,nothing}from"lit";import{property,state}from"lit/decorators.js";import{LyraElement}from"../../../internal/lyra-element.js";import{getOwnDataDescriptor,projectFrozenRows,MISSING_OWN_DATA_DESCRIPTOR,UNSAFE_OWN_DATA_DESCRIPTOR}from"../../../internal/data-descriptors.js";import{nextId}from"../../../internal/a11y.js";import{getNumberFormat}from"../../../internal/intl-cache.js";import{isRovingTargetAvailable,resolveListMove}from"../../../internal/list-navigation.js";import"../provenance-panel/provenance-panel.class.js";import"../../agent-tools/confirm-bar/confirm-bar.class.js";import"../../overlays/empty/empty.class.js";import{styles}from"./memory-panel.styles.js";import{retrievalSemanticLabel,retrievalSemanticRole}from"../retrieval-semantic-owner.js";import{shadowFocusTarget}from"../../../internal/active-element.js";import{resolveHeadingLevel}from"../../../internal/heading-level.js";import{resolveScoreTiers}from"../../../internal/score-tiers.js";import{LYRA_DEFAULT_approve,LYRA_DEFAULT_citationHighConfidence,LYRA_DEFAULT_citationLowConfidence,LYRA_DEFAULT_citationMediumConfidence,LYRA_DEFAULT_collapse,LYRA_DEFAULT_copy,LYRA_DEFAULT_date,LYRA_DEFAULT_deny,LYRA_DEFAULT_details,LYRA_DEFAULT_loading,LYRA_DEFAULT_map,LYRA_DEFAULT_memoryPanelAdd,LYRA_DEFAULT_memoryPanelAddWithContext,LYRA_DEFAULT_memoryPanelConfirmAddHeading,LYRA_DEFAULT_memoryPanelConfirmForgetBody,LYRA_DEFAULT_memoryPanelConfirmForgetHeading,LYRA_DEFAULT_memoryPanelConfirmRemoveHeading,LYRA_DEFAULT_memoryPanelForgetAll,LYRA_DEFAULT_memoryPanelItemsLimit,LYRA_DEFAULT_memoryPanelLabel,LYRA_DEFAULT_memoryPanelLongTermHeading,LYRA_DEFAULT_memoryPanelShortTermHeading,LYRA_DEFAULT_navigation,LYRA_DEFAULT_noData,LYRA_DEFAULT_open,LYRA_DEFAULT_progress,LYRA_DEFAULT_remove,LYRA_DEFAULT_removeWithContext,LYRA_DEFAULT_search,LYRA_DEFAULT_select,LYRA_DEFAULT_showLess,LYRA_DEFAULT_showMore,LYRA_DEFAULT_viewerSearchActiveMatch,LYRA_DEFAULT_viewerSearchMatchCount,LYRA_DEFAULT_viewerSearchNoMatches}from"../../../internal/default-strings.generated.js";const MAX_PROJECTED_MEMORY_ITEMS=1e4,MAX_RENDERED_MEMORY_ITEMS=500,EMPTY_CANONICAL_MEMORIES=Object.freeze([]);function valueOfDescriptor(descriptor){return descriptor===MISSING_OWN_DATA_DESCRIPTOR||descriptor===UNSAFE_OWN_DATA_DESCRIPTOR?void 0:descriptor.value}function projectMemory(value){try{if(value===null||typeof value!="object"||Array.isArray(value))return;const idDescriptor=getOwnDataDescriptor(value,"id"),textDescriptor=getOwnDataDescriptor(value,"text"),confidenceDescriptor=getOwnDataDescriptor(value,"confidence"),provenanceDescriptor=getOwnDataDescriptor(value,"provenance");if([idDescriptor,textDescriptor,confidenceDescriptor,provenanceDescriptor].some(descriptor=>descriptor===UNSAFE_OWN_DATA_DESCRIPTOR))return;const id=valueOfDescriptor(idDescriptor),text=valueOfDescriptor(textDescriptor);if(typeof id!="string"||id.trim().length===0||typeof text!="string"||text.trim().length===0)return;const confidence=valueOfDescriptor(confidenceDescriptor),provenance=valueOfDescriptor(provenanceDescriptor);return Object.freeze({source:value,id,text,...typeof confidence=="number"&&Number.isFinite(confidence)?{confidence}:{},...provenance===void 0?{}:{provenance}})}catch{return}}function projectMemories(value){return projectFrozenRows(value,projectMemory,MAX_PROJECTED_MEMORY_ITEMS,EMPTY_CANONICAL_MEMORIES,item=>item.id)}const DEFAULT_TIERS={high:.75,medium:.5},CONFIRM_HEADING_KEY={add:"memoryPanelConfirmAddHeading",remove:"memoryPanelConfirmRemoveHeading","forget-all":"memoryPanelConfirmForgetHeading"},TIER_LABEL_KEY={high:"citationHighConfidence",medium:"citationMediumConfidence",low:"citationLowConfidence"},TIER_TONE={high:"success",medium:"warning",low:"danger"};class LyraMemoryPanel extends LyraElement{constructor(){super(...arguments),this.rovingActionByScope=new Map,this.shortTerm=[],this.longTerm=[],this.types=[],this.thresholds={high:.75,medium:.5},this.headingLevel="3",this.size="m",this.frame="card",this.expandedIds=new Set,this.pending=null,this.idBase=nextId("memory-panel"),this.canonicalMemoriesBySource=new WeakMap}static{this.defaultStrings={...super.defaultStrings,approve:LYRA_DEFAULT_approve,citationHighConfidence:LYRA_DEFAULT_citationHighConfidence,citationLowConfidence:LYRA_DEFAULT_citationLowConfidence,citationMediumConfidence:LYRA_DEFAULT_citationMediumConfidence,collapse:LYRA_DEFAULT_collapse,copy:LYRA_DEFAULT_copy,date:LYRA_DEFAULT_date,deny:LYRA_DEFAULT_deny,details:LYRA_DEFAULT_details,loading:LYRA_DEFAULT_loading,map:LYRA_DEFAULT_map,memoryPanelAdd:LYRA_DEFAULT_memoryPanelAdd,memoryPanelAddWithContext:LYRA_DEFAULT_memoryPanelAddWithContext,memoryPanelConfirmAddHeading:LYRA_DEFAULT_memoryPanelConfirmAddHeading,memoryPanelConfirmForgetBody:LYRA_DEFAULT_memoryPanelConfirmForgetBody,memoryPanelConfirmForgetHeading:LYRA_DEFAULT_memoryPanelConfirmForgetHeading,memoryPanelConfirmRemoveHeading:LYRA_DEFAULT_memoryPanelConfirmRemoveHeading,memoryPanelForgetAll:LYRA_DEFAULT_memoryPanelForgetAll,memoryPanelItemsLimit:LYRA_DEFAULT_memoryPanelItemsLimit,memoryPanelLabel:LYRA_DEFAULT_memoryPanelLabel,memoryPanelLongTermHeading:LYRA_DEFAULT_memoryPanelLongTermHeading,memoryPanelShortTermHeading:LYRA_DEFAULT_memoryPanelShortTermHeading,navigation:LYRA_DEFAULT_navigation,noData:LYRA_DEFAULT_noData,open:LYRA_DEFAULT_open,progress:LYRA_DEFAULT_progress,remove:LYRA_DEFAULT_remove,removeWithContext:LYRA_DEFAULT_removeWithContext,search:LYRA_DEFAULT_search,select:LYRA_DEFAULT_select,showLess:LYRA_DEFAULT_showLess,showMore:LYRA_DEFAULT_showMore,viewerSearchActiveMatch:LYRA_DEFAULT_viewerSearchActiveMatch,viewerSearchMatchCount:LYRA_DEFAULT_viewerSearchMatchCount,viewerSearchNoMatches:LYRA_DEFAULT_viewerSearchNoMatches}}onPrimaryKeyDown(event){const buttons=[...event.currentTarget.closest('[part="list"]')?.querySelectorAll("[data-roving-primary]")??[]],current=buttons.indexOf(event.currentTarget),next=resolveListMove(event,{count:buttons.length,current,orientation:"vertical",isAvailable:candidate=>!!(buttons[candidate]&&isRovingTargetAvailable(buttons[candidate]))});next!==null&&(event.preventDefault(),buttons[next]?.focus())}static{this.collectionSupport=collectionSupport}static{this.ownedCollectionProperties=Object.freeze(["shortTerm","longTerm","types"])}static{this.identityCollectionProperties=Object.freeze(["shortTerm","longTerm"])}static{this.styles=[LyraElement.styles,styles]}static{this.immutableEventDetails=Object.freeze(["lr-add","lr-chunk-open"])}static{this.identityEventDetailProperties=Object.freeze({"lr-add":Object.freeze(["memory"])})}willUpdate(changed){super.willUpdate(changed),this.captureControlledFocus(changed);const pending=this.pending;if(!pending)return;if(pending.kind==="forget-all"){changed.has("longTerm")&&(this.pending=null);return}if(!changed.has("shortTerm")&&!changed.has("longTerm"))return;const current=this.memoriesForScope(pending.scope).find(item=>item.source===pending.item.source);if(!current){this.pending=null;return}current!==pending.item&&(pending.item=current)}updated(changed){super.updated(changed);const pending=this.pendingControlledFocus;if(pending!==void 0){if(this.pendingControlledFocus=void 0,pending==="base"){this.renderRoot.querySelector('[part="base"]')?.focus();return}if(pending==="forget-all"){const button=this.renderRoot.querySelector('[part="forget-all-button"]');button?button.focus():this.renderRoot.querySelector('[part="base"]')?.focus();return}this.refocusItem(pending.scope,pending.index)}}captureControlledFocus(changed){if(!changed.has("shortTerm")&&!changed.has("longTerm"))return;const active=shadowFocusTarget(this);if(!active)return;const row=active.closest('[part="item"]');if(row){const scope=row.dataset.scope;if(!scope)return;const property2=scope==="short-term"?"shortTerm":"longTerm";if(!changed.has(property2))return;const oldIndex=[...this.renderRoot.querySelectorAll(`[part="section"][data-scope="${scope}"] [part="item"]`)].indexOf(row),focusedItem=this.cachedCanonicalMemoriesFor(changed.get(property2))[oldIndex],nextItems=this.memoriesForScope(scope),survivingIndex=focusedItem?nextItems.findIndex(item=>item.id===focusedItem.id):-1;if(survivingIndex===oldIndex)return;nextItems.length===0&&this.normalizedShortTerm.length===0&&this.normalizedLongTerm.length===0?this.pendingControlledFocus="base":this.pendingControlledFocus={scope,index:survivingIndex>=0?survivingIndex:Math.min(Math.max(oldIndex,0),Math.max(0,nextItems.length-1))};return}if(active.getAttribute("part")==="forget-all-confirm"&&changed.has("longTerm")){this.pendingControlledFocus=this.normalizedLongTerm.length===0?"base":"forget-all";return}active.getAttribute("part")==="forget-all-button"&&changed.has("longTerm")&&this.normalizedLongTerm.length===0&&(this.pendingControlledFocus="base")}canonicalMemoriesFor(source){if(source===null||typeof source!="object")return EMPTY_CANONICAL_MEMORIES;const cached=this.canonicalMemoriesBySource.get(source);if(cached)return cached;const memories=projectMemories(source);return this.canonicalMemoriesBySource.set(source,memories),memories}cachedCanonicalMemoriesFor(source){return source!==null&&typeof source=="object"?this.canonicalMemoriesBySource.get(source)??EMPTY_CANONICAL_MEMORIES:EMPTY_CANONICAL_MEMORIES}get normalizedShortTerm(){return this.canonicalMemoriesFor(this.shortTerm)}get normalizedLongTerm(){return this.canonicalMemoriesFor(this.longTerm)}memoriesForScope(scope){return scope==="short-term"?this.normalizedShortTerm:this.normalizedLongTerm}itemKey(item,scope){return`${scope}\0${item.id}`}itemBodyId(scope,index){return`${this.idBase}-${scope}-${index}`}tier(score){const{high,medium}=resolveScoreTiers(DEFAULT_TIERS,this.thresholds);return score>=high?"high":score>=medium?"medium":"low"}toggleExpand(item,scope){const key=this.itemKey(item,scope),next=new Set(this.expandedIds),expanded=!next.has(key);expanded?next.add(key):next.delete(key),this.expandedIds=next,this.emit("lr-memory-toggle",{memoryId:item.id,scope,expanded}),this.emit("lr-toggle",{itemId:item.id,memoryId:item.id,scope,expanded})}startItemPending(kind,item,scope){this.pending={kind,item,scope},this.focusPendingConfirmation()}startForgetAllPending(){this.pending={kind:"forget-all",longTerm:this.longTerm},this.focusPendingConfirmation()}focusPendingConfirmation(){const started=this.pending;this.updateComplete.then(async()=>{const bar=this.renderRoot.querySelector(tag("confirm-bar"));if(!bar)return;await bar.updateComplete;const deny=bar.shadowRoot?.querySelector('[part="deny-button"]');await deny?.updateComplete,!(this.pending!==started||!bar.isConnected)&&(deny??bar.shadowRoot?.querySelector('[part="status"]'))?.focus()})}onConfirmKeyDown(event,cancel){if(event.key!=="Escape")return;const before=this.pending;cancel(),this.pending!==before&&event.stopPropagation()}refocusItem(scope,index){this.updateComplete.then(()=>{const rows=[...this.renderRoot.querySelectorAll(`[part="section"][data-scope="${scope}"] [part="item"]`)];(rows[Math.min(index,rows.length-1)]??this.renderRoot.querySelector('[part="item"]')??this.renderRoot.querySelector('[part="base"]'))?.focus()})}resolveItemDecision(p,approved){if(this.pending!==p)return;const index=this.memoriesForScope(p.scope).indexOf(p.item);index<0||(this.pending=null,approved&&(p.kind==="add"?this.emit("lr-add",{memory:p.item.source}):this.emit("lr-remove",{memoryId:p.item.id,scope:p.scope})),this.refocusItem(p.scope,index))}resolveForgetAllDecision(pending,approved){this.pending!==pending||this.longTerm!==pending.longTerm||(this.pending=null,approved&&this.emit("lr-forget"),this.updateComplete.then(()=>{(this.renderRoot.querySelector('[part="forget-all-button"]')??this.renderRoot.querySelector('[part="item"]'))?.focus()}))}renderConfidence(item){if(item.confidence==null)return nothing;const tier=this.tier(item.confidence);return html`<span part="confidence" data-tone=${TIER_TONE[tier]}
|
|
1
|
+
import{__decorate}from"tslib";import{collectionSupport}from"../../../internal/collection-snapshot.js";import{tag}from"../../../internal/prefix.js";import{html,nothing}from"lit";import{property,state}from"lit/decorators.js";import{LyraElement}from"../../../internal/lyra-element.js";import{getOwnDataDescriptor,projectFrozenRows,MISSING_OWN_DATA_DESCRIPTOR,UNSAFE_OWN_DATA_DESCRIPTOR}from"../../../internal/data-descriptors.js";import{nextId}from"../../../internal/a11y.js";import{getNumberFormat}from"../../../internal/intl-cache.js";import{isRovingTargetAvailable,resolveListMove}from"../../../internal/list-navigation.js";import"../provenance-panel/provenance-panel.class.js";import"../../agent-tools/confirm-bar/confirm-bar.class.js";import"../../overlays/empty/empty.class.js";import{styles}from"./memory-panel.styles.js";import{retrievalSemanticLabel,retrievalSemanticRole}from"../retrieval-semantic-owner.js";import{shadowFocusTarget}from"../../../internal/active-element.js";import{resolveHeadingLevel}from"../../../internal/heading-level.js";import{resolveScoreTiers}from"../../../internal/score-tiers.js";import{LYRA_DEFAULT_citationHighConfidence,LYRA_DEFAULT_citationLowConfidence,LYRA_DEFAULT_citationMediumConfidence,LYRA_DEFAULT_memoryPanelAdd,LYRA_DEFAULT_memoryPanelAddWithContext,LYRA_DEFAULT_memoryPanelConfirmAddHeading,LYRA_DEFAULT_memoryPanelConfirmForgetBody,LYRA_DEFAULT_memoryPanelConfirmForgetHeading,LYRA_DEFAULT_memoryPanelConfirmRemoveHeading,LYRA_DEFAULT_memoryPanelForgetAll,LYRA_DEFAULT_memoryPanelItemsLimit,LYRA_DEFAULT_memoryPanelLabel,LYRA_DEFAULT_memoryPanelLongTermHeading,LYRA_DEFAULT_memoryPanelShortTermHeading,LYRA_DEFAULT_showMore}from"../../../internal/default-strings/retrieval.generated.js";import{LYRA_DEFAULT_approve,LYRA_DEFAULT_collapse,LYRA_DEFAULT_copy,LYRA_DEFAULT_date,LYRA_DEFAULT_deny,LYRA_DEFAULT_details,LYRA_DEFAULT_loading,LYRA_DEFAULT_map,LYRA_DEFAULT_navigation,LYRA_DEFAULT_noData,LYRA_DEFAULT_open,LYRA_DEFAULT_progress,LYRA_DEFAULT_remove,LYRA_DEFAULT_removeWithContext,LYRA_DEFAULT_search,LYRA_DEFAULT_select,LYRA_DEFAULT_showLess,LYRA_DEFAULT_viewerSearchActiveMatch,LYRA_DEFAULT_viewerSearchMatchCount,LYRA_DEFAULT_viewerSearchNoMatches}from"../../../internal/default-strings/shared.generated.js";const MAX_PROJECTED_MEMORY_ITEMS=1e4,MAX_RENDERED_MEMORY_ITEMS=500,EMPTY_CANONICAL_MEMORIES=Object.freeze([]);function valueOfDescriptor(descriptor){return descriptor===MISSING_OWN_DATA_DESCRIPTOR||descriptor===UNSAFE_OWN_DATA_DESCRIPTOR?void 0:descriptor.value}function projectMemory(value){try{if(value===null||typeof value!="object"||Array.isArray(value))return;const idDescriptor=getOwnDataDescriptor(value,"id"),textDescriptor=getOwnDataDescriptor(value,"text"),confidenceDescriptor=getOwnDataDescriptor(value,"confidence"),provenanceDescriptor=getOwnDataDescriptor(value,"provenance");if([idDescriptor,textDescriptor,confidenceDescriptor,provenanceDescriptor].some(descriptor=>descriptor===UNSAFE_OWN_DATA_DESCRIPTOR))return;const id=valueOfDescriptor(idDescriptor),text=valueOfDescriptor(textDescriptor);if(typeof id!="string"||id.trim().length===0||typeof text!="string"||text.trim().length===0)return;const confidence=valueOfDescriptor(confidenceDescriptor),provenance=valueOfDescriptor(provenanceDescriptor);return Object.freeze({source:value,id,text,...typeof confidence=="number"&&Number.isFinite(confidence)?{confidence}:{},...provenance===void 0?{}:{provenance}})}catch{return}}function projectMemories(value){return projectFrozenRows(value,projectMemory,MAX_PROJECTED_MEMORY_ITEMS,EMPTY_CANONICAL_MEMORIES,item=>item.id)}const DEFAULT_TIERS={high:.75,medium:.5},CONFIRM_HEADING_KEY={add:"memoryPanelConfirmAddHeading",remove:"memoryPanelConfirmRemoveHeading","forget-all":"memoryPanelConfirmForgetHeading"},TIER_LABEL_KEY={high:"citationHighConfidence",medium:"citationMediumConfidence",low:"citationLowConfidence"},TIER_TONE={high:"success",medium:"warning",low:"danger"};class LyraMemoryPanel extends LyraElement{constructor(){super(...arguments),this.rovingActionByScope=new Map,this.shortTerm=[],this.longTerm=[],this.types=[],this.thresholds={high:.75,medium:.5},this.headingLevel="3",this.size="m",this.frame="card",this.expandedIds=new Set,this.pending=null,this.idBase=nextId("memory-panel"),this.canonicalMemoriesBySource=new WeakMap}static{this.defaultStrings={...super.defaultStrings,approve:LYRA_DEFAULT_approve,citationHighConfidence:LYRA_DEFAULT_citationHighConfidence,citationLowConfidence:LYRA_DEFAULT_citationLowConfidence,citationMediumConfidence:LYRA_DEFAULT_citationMediumConfidence,collapse:LYRA_DEFAULT_collapse,copy:LYRA_DEFAULT_copy,date:LYRA_DEFAULT_date,deny:LYRA_DEFAULT_deny,details:LYRA_DEFAULT_details,loading:LYRA_DEFAULT_loading,map:LYRA_DEFAULT_map,memoryPanelAdd:LYRA_DEFAULT_memoryPanelAdd,memoryPanelAddWithContext:LYRA_DEFAULT_memoryPanelAddWithContext,memoryPanelConfirmAddHeading:LYRA_DEFAULT_memoryPanelConfirmAddHeading,memoryPanelConfirmForgetBody:LYRA_DEFAULT_memoryPanelConfirmForgetBody,memoryPanelConfirmForgetHeading:LYRA_DEFAULT_memoryPanelConfirmForgetHeading,memoryPanelConfirmRemoveHeading:LYRA_DEFAULT_memoryPanelConfirmRemoveHeading,memoryPanelForgetAll:LYRA_DEFAULT_memoryPanelForgetAll,memoryPanelItemsLimit:LYRA_DEFAULT_memoryPanelItemsLimit,memoryPanelLabel:LYRA_DEFAULT_memoryPanelLabel,memoryPanelLongTermHeading:LYRA_DEFAULT_memoryPanelLongTermHeading,memoryPanelShortTermHeading:LYRA_DEFAULT_memoryPanelShortTermHeading,navigation:LYRA_DEFAULT_navigation,noData:LYRA_DEFAULT_noData,open:LYRA_DEFAULT_open,progress:LYRA_DEFAULT_progress,remove:LYRA_DEFAULT_remove,removeWithContext:LYRA_DEFAULT_removeWithContext,search:LYRA_DEFAULT_search,select:LYRA_DEFAULT_select,showLess:LYRA_DEFAULT_showLess,showMore:LYRA_DEFAULT_showMore,viewerSearchActiveMatch:LYRA_DEFAULT_viewerSearchActiveMatch,viewerSearchMatchCount:LYRA_DEFAULT_viewerSearchMatchCount,viewerSearchNoMatches:LYRA_DEFAULT_viewerSearchNoMatches}}onPrimaryKeyDown(event){const buttons=[...event.currentTarget.closest('[part="list"]')?.querySelectorAll("[data-roving-primary]")??[]],current=buttons.indexOf(event.currentTarget),next=resolveListMove(event,{count:buttons.length,current,orientation:"vertical",isAvailable:candidate=>!!(buttons[candidate]&&isRovingTargetAvailable(buttons[candidate]))});next!==null&&(event.preventDefault(),buttons[next]?.focus())}static{this.collectionSupport=collectionSupport}static{this.ownedCollectionProperties=Object.freeze(["shortTerm","longTerm","types"])}static{this.identityCollectionProperties=Object.freeze(["shortTerm","longTerm"])}static{this.styles=[LyraElement.styles,styles]}static{this.immutableEventDetails=Object.freeze(["lr-add","lr-chunk-open"])}static{this.identityEventDetailProperties=Object.freeze({"lr-add":Object.freeze(["memory"])})}willUpdate(changed){super.willUpdate(changed),this.captureControlledFocus(changed);const pending=this.pending;if(!pending)return;if(pending.kind==="forget-all"){changed.has("longTerm")&&(this.pending=null);return}if(!changed.has("shortTerm")&&!changed.has("longTerm"))return;const current=this.memoriesForScope(pending.scope).find(item=>item.source===pending.item.source);if(!current){this.pending=null;return}current!==pending.item&&(pending.item=current)}updated(changed){super.updated(changed);const pending=this.pendingControlledFocus;if(pending!==void 0){if(this.pendingControlledFocus=void 0,pending==="base"){this.renderRoot.querySelector('[part="base"]')?.focus();return}if(pending==="forget-all"){const button=this.renderRoot.querySelector('[part="forget-all-button"]');button?button.focus():this.renderRoot.querySelector('[part="base"]')?.focus();return}this.refocusItem(pending.scope,pending.index)}}captureControlledFocus(changed){if(!changed.has("shortTerm")&&!changed.has("longTerm"))return;const active=shadowFocusTarget(this);if(!active)return;const row=active.closest('[part="item"]');if(row){const scope=row.dataset.scope;if(!scope)return;const property2=scope==="short-term"?"shortTerm":"longTerm";if(!changed.has(property2))return;const oldIndex=[...this.renderRoot.querySelectorAll(`[part="section"][data-scope="${scope}"] [part="item"]`)].indexOf(row),focusedItem=this.cachedCanonicalMemoriesFor(changed.get(property2))[oldIndex],nextItems=this.memoriesForScope(scope),survivingIndex=focusedItem?nextItems.findIndex(item=>item.id===focusedItem.id):-1;if(survivingIndex===oldIndex)return;nextItems.length===0&&this.normalizedShortTerm.length===0&&this.normalizedLongTerm.length===0?this.pendingControlledFocus="base":this.pendingControlledFocus={scope,index:survivingIndex>=0?survivingIndex:Math.min(Math.max(oldIndex,0),Math.max(0,nextItems.length-1))};return}if(active.getAttribute("part")==="forget-all-confirm"&&changed.has("longTerm")){this.pendingControlledFocus=this.normalizedLongTerm.length===0?"base":"forget-all";return}active.getAttribute("part")==="forget-all-button"&&changed.has("longTerm")&&this.normalizedLongTerm.length===0&&(this.pendingControlledFocus="base")}canonicalMemoriesFor(source){if(source===null||typeof source!="object")return EMPTY_CANONICAL_MEMORIES;const cached=this.canonicalMemoriesBySource.get(source);if(cached)return cached;const memories=projectMemories(source);return this.canonicalMemoriesBySource.set(source,memories),memories}cachedCanonicalMemoriesFor(source){return source!==null&&typeof source=="object"?this.canonicalMemoriesBySource.get(source)??EMPTY_CANONICAL_MEMORIES:EMPTY_CANONICAL_MEMORIES}get normalizedShortTerm(){return this.canonicalMemoriesFor(this.shortTerm)}get normalizedLongTerm(){return this.canonicalMemoriesFor(this.longTerm)}memoriesForScope(scope){return scope==="short-term"?this.normalizedShortTerm:this.normalizedLongTerm}itemKey(item,scope){return`${scope}\0${item.id}`}itemBodyId(scope,index){return`${this.idBase}-${scope}-${index}`}tier(score){const{high,medium}=resolveScoreTiers(DEFAULT_TIERS,this.thresholds);return score>=high?"high":score>=medium?"medium":"low"}toggleExpand(item,scope){const key=this.itemKey(item,scope),next=new Set(this.expandedIds),expanded=!next.has(key);expanded?next.add(key):next.delete(key),this.expandedIds=next,this.emit("lr-memory-toggle",{memoryId:item.id,scope,expanded}),this.emit("lr-toggle",{itemId:item.id,memoryId:item.id,scope,expanded})}startItemPending(kind,item,scope){this.pending={kind,item,scope},this.focusPendingConfirmation()}startForgetAllPending(){this.pending={kind:"forget-all",longTerm:this.longTerm},this.focusPendingConfirmation()}focusPendingConfirmation(){const started=this.pending;this.updateComplete.then(async()=>{const bar=this.renderRoot.querySelector(tag("confirm-bar"));if(!bar)return;await bar.updateComplete;const deny=bar.shadowRoot?.querySelector('[part="deny-button"]');await deny?.updateComplete,!(this.pending!==started||!bar.isConnected)&&(deny??bar.shadowRoot?.querySelector('[part="status"]'))?.focus()})}onConfirmKeyDown(event,cancel){if(event.key!=="Escape")return;const before=this.pending;cancel(),this.pending!==before&&event.stopPropagation()}refocusItem(scope,index){this.updateComplete.then(()=>{const rows=[...this.renderRoot.querySelectorAll(`[part="section"][data-scope="${scope}"] [part="item"]`)];(rows[Math.min(index,rows.length-1)]??this.renderRoot.querySelector('[part="item"]')??this.renderRoot.querySelector('[part="base"]'))?.focus()})}resolveItemDecision(p,approved){if(this.pending!==p)return;const index=this.memoriesForScope(p.scope).indexOf(p.item);index<0||(this.pending=null,approved&&(p.kind==="add"?this.emit("lr-add",{memory:p.item.source}):this.emit("lr-remove",{memoryId:p.item.id,scope:p.scope})),this.refocusItem(p.scope,index))}resolveForgetAllDecision(pending,approved){this.pending!==pending||this.longTerm!==pending.longTerm||(this.pending=null,approved&&this.emit("lr-forget"),this.updateComplete.then(()=>{(this.renderRoot.querySelector('[part="forget-all-button"]')??this.renderRoot.querySelector('[part="item"]'))?.focus()}))}renderConfidence(item){if(item.confidence==null)return nothing;const tier=this.tier(item.confidence);return html`<span part="confidence" data-tone=${TIER_TONE[tier]}
|
|
2
2
|
>${this.localize(TIER_LABEL_KEY[tier])}</span
|
|
3
3
|
>`}renderItemConfirm(p){return html`
|
|
4
4
|
<lr-confirm-bar
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import{__decorate}from"tslib";import{snapshotPublicCollection}from"../../../internal/collection-snapshot.js";import{html,nothing,svg}from"lit";import{property,state,query}from"lit/decorators.js";import{LyraElement}from"../../../internal/lyra-element.js";import{srOnly}from"../../../internal/a11y.js";import{isRtl}from"../../../internal/rtl.js";import{finiteCount}from"../../../internal/numbers.js";import{resolveCssTokenLength}from"../../../internal/css-token-length.js";import{getNumberFormat}from"../../../internal/intl-cache.js";import{acquireAnnouncementSink}from"../../../internal/announcer.js";import{decimateMindMapLayout,layoutMindMap}from"./mind-map-layout.js";import{styles}from"./mind-map.styles.js";import{LYRA_DEFAULT_mindMapCollapsed,LYRA_DEFAULT_mindMapExpanded,LYRA_DEFAULT_mindMapLabel,LYRA_DEFAULT_mindMapLeafStatus,LYRA_DEFAULT_mindMapNodeLimit,LYRA_DEFAULT_mindMapTopicStatus
|
|
1
|
+
import{__decorate}from"tslib";import{snapshotPublicCollection}from"../../../internal/collection-snapshot.js";import{html,nothing,svg}from"lit";import{property,state,query}from"lit/decorators.js";import{LyraElement}from"../../../internal/lyra-element.js";import{srOnly}from"../../../internal/a11y.js";import{isRtl}from"../../../internal/rtl.js";import{finiteCount}from"../../../internal/numbers.js";import{resolveCssTokenLength}from"../../../internal/css-token-length.js";import{getNumberFormat}from"../../../internal/intl-cache.js";import{acquireAnnouncementSink}from"../../../internal/announcer.js";import{decimateMindMapLayout,layoutMindMap}from"./mind-map-layout.js";import{styles}from"./mind-map.styles.js";import{LYRA_DEFAULT_mindMapCollapsed,LYRA_DEFAULT_mindMapExpanded,LYRA_DEFAULT_mindMapLabel,LYRA_DEFAULT_mindMapLeafStatus,LYRA_DEFAULT_mindMapNodeLimit,LYRA_DEFAULT_mindMapTopicStatus}from"../../../internal/default-strings/retrieval.generated.js";import{LYRA_DEFAULT_noData}from"../../../internal/default-strings/shared.generated.js";const DEFAULT_RING_GAP_PX=96,MAX_RENDERED_MIND_MAP_NODES=500,TOPIC_COPY_LIMIT=5e4;function copyTopicTree(roots){const top=[],copies=[],queue=(Array.isArray(roots)?roots:[]).map(root=>[root,top]);for(let i=0;i<queue.length&&copies.length<TOPIC_COPY_LIMIT;i++){const[topic,siblings]=queue[i];if(topic===null||typeof topic!="object")continue;const{id,label,children}=topic,copy=Array.isArray(children)?{id,label,children:[]}:{id,label};copies.push(copy),siblings.push(copy);for(const child of copy.children?children:[])queue.length<TOPIC_COPY_LIMIT&&queue.push([child,copy.children])}for(const copy of copies)Object.freeze(Object.freeze(copy).children);return Object.freeze(top)}const NAV_KEYS=new Set(["ArrowUp","ArrowDown","ArrowLeft","ArrowRight","Home","End","Enter"," "]);class LyraMindMap extends LyraElement{constructor(){super(...arguments),this._topics=Object.freeze([]),this.topicsSource=this._topics,this.expandDepth=1,this.expandedOverrides=new Map,this.focusedId=null,this.liveText="",this.cachedLayout={placed:[],links:[],width:0,height:0,centerX:0,centerY:0},this.totalTopicCount=0,this.topicsTruncated=!1,this.ownerRealmGeneration=0,this.observedSize="",this.layoutInvalidated=!0,this.layoutContext="",this.onKeyDown=e=>{const placed=this.cachedLayout.placed;if(placed.length===0||!NAV_KEYS.has(e.key))return;if(e.preventDefault(),this.focusedId===null){this.focusNodeById(placed[0].id);return}const current=placed.find(p=>p.id===this.focusedId);if(!current)return;if(e.key==="Enter"||e.key===" "){e.repeat||this.activate(current);return}if(e.key==="ArrowUp"){current.parentId&&this.focusNodeById(current.parentId);return}if(e.key==="ArrowDown"){if(!current.hasChildren)return;this.isExpanded(current.id,current.depth)||(this.toggle(current,!1),this.relayout());const child=this.childrenOf(current.id)[0];child&&this.focusNodeById(child.id);return}const rtl=isRtl(this),forwardKey=rtl?"ArrowLeft":"ArrowRight",backwardKey=rtl?"ArrowRight":"ArrowLeft";if(e.key===forwardKey||e.key===backwardKey||e.key==="Home"||e.key==="End"){const siblings=this.siblingsOf(current),index=siblings.findIndex(s=>s.id===current.id);let next=index;e.key===forwardKey?next=Math.min(siblings.length-1,index+1):e.key===backwardKey?next=Math.max(0,index-1):e.key==="Home"?next=0:next=siblings.length-1;const target=siblings[next];target&&this.focusNodeById(target.id)}},this.onFocusIn=()=>{if(this.focusedId!==null)return;const first=this.cachedLayout.placed[0];first&&(this.focusedId=first.id)}}static{this.defaultStrings={...super.defaultStrings,mindMapCollapsed:LYRA_DEFAULT_mindMapCollapsed,mindMapExpanded:LYRA_DEFAULT_mindMapExpanded,mindMapLabel:LYRA_DEFAULT_mindMapLabel,mindMapLeafStatus:LYRA_DEFAULT_mindMapLeafStatus,mindMapNodeLimit:LYRA_DEFAULT_mindMapNodeLimit,mindMapTopicStatus:LYRA_DEFAULT_mindMapTopicStatus,noData:LYRA_DEFAULT_noData}}static{this.styles=[LyraElement.styles,styles,srOnly]}static get observedAttributes(){return[...new Set([...super.observedAttributes,"dir","lang"])]}get topics(){return this._topics}set topics(value){if(Object.is(value,this.topicsSource)||Object.is(value,this._topics))return;const previous=this._topics;let truncated=!1;const snapshot=snapshotPublicCollection(value,this.ownerDocument?.defaultView,{onTruncate:()=>truncated=!0});this.topicsSource=value,this._topics=truncated?copyTopicTree(value):snapshot,this.requestUpdate("topics",previous)}connectedCallback(){super.connectedCallback(),this.announcementSink??=acquireAnnouncementSink("polite",{document:this.ownerDocument,source:this}),this.layoutInvalidated=!0,this.armResizeObserver()}armResizeObserver(){const ownerDocument=this.ownerDocument,ownerWindow=ownerDocument.defaultView;if(!this.isConnected||!ownerWindow?.ResizeObserver||this.resizeObserver&&this.resizeObserverDocument===ownerDocument)return;this.resetResizeWork();const generation=this.ownerRealmGeneration,observer=new ownerWindow.ResizeObserver(entries=>{if(this.resizeObserver!==observer||this.resizeObserverDocument!==ownerDocument||this.ownerRealmGeneration!==generation||!this.isConnected||this.ownerDocument!==ownerDocument)return;const rect=entries[0]?.contentRect,size=rect?`${rect.width}:${rect.height}`:"";if(size&&size===this.observedSize)return;this.observedSize=size,this.resizeRafId!=null&&this.resizeRafOwner?.cancelAnimationFrame(this.resizeRafId);const handle=ownerWindow.requestAnimationFrame(()=>{this.resizeRafId!==handle||this.resizeRafOwner!==ownerWindow||this.resizeRafDocument!==ownerDocument||this.ownerRealmGeneration!==generation||!this.isConnected||this.ownerDocument!==ownerDocument||(this.resizeRafId=void 0,this.resizeRafOwner=void 0,this.resizeRafDocument=void 0,this.layoutInvalidated=!0,this.requestUpdate())});this.resizeRafId=handle,this.resizeRafOwner=ownerWindow,this.resizeRafDocument=ownerDocument});this.resizeObserver=observer,this.resizeObserverDocument=ownerDocument,observer.observe(this)}disconnectedCallback(){this.resetResizeWork(),this.announcementSink?.release(),this.announcementSink=void 0,super.disconnectedCallback()}adoptedCallback(){super.adoptedCallback(),this.resetResizeWork(),this.announcementSink?.release(),this.announcementSink=void 0}resetResizeWork(){this.ownerRealmGeneration+=1,this.resizeRafId!=null&&this.resizeRafOwner?.cancelAnimationFrame(this.resizeRafId),this.resizeRafId=void 0,this.resizeRafOwner=void 0,this.resizeRafDocument=void 0,this.resizeObserver?.disconnect(),this.resizeObserver=void 0,this.resizeObserverDocument=void 0,this.observedSize=""}attributeChangedCallback(name,oldValue,value){super.attributeChangedCallback(name,oldValue,value),(name==="dir"||name==="lang")&&oldValue!==value&&(this.layoutInvalidated=!0,this.requestUpdate())}get effectiveExpandDepth(){return finiteCount(this.expandDepth,1)}isExpanded(id,depth){return this.expandedOverrides.get(id)??depth<this.effectiveExpandDepth}ringGapPx(){const hostStyle=this.ownerDocument.defaultView?.getComputedStyle(this)??this.style,raw=hostStyle.getPropertyValue("--lr-mind-map-ring-gap").trim()||hostStyle.getPropertyValue("--_lr-mind-map-ring-gap").trim();return resolveCssTokenLength(raw,{host:this})??DEFAULT_RING_GAP_PX}relayout(){const hubLabel=this.label==null?this.localize("mindMapLabel"):this.label,fullLayout=layoutMindMap(this.topics,hubLabel,{ringGap:this.ringGapPx(),rtl:isRtl(this),isExpanded:(id,depth)=>this.isExpanded(id,depth)}),decimated=decimateMindMapLayout(fullLayout.placed,fullLayout.links,MAX_RENDERED_MIND_MAP_NODES);this.totalTopicCount=decimated.totalCount,this.topicsTruncated=decimated.truncated,this.cachedLayout={...fullLayout,placed:[...decimated.placed],links:[...decimated.links]}}willUpdate(changed){super.willUpdate(changed);const context=`${this.label==null?this.localize("mindMapLabel"):this.label}\0${isRtl(this)?"rtl":"ltr"}`,structuralChange=changed.has("topics")||changed.has("expandDepth")||changed.has("expandedOverrides")||changed.has("label")||changed.has("strings")||changed.has("locale");(this.layoutInvalidated||structuralChange||context!==this.layoutContext)&&(this.relayout(),this.layoutContext=context,this.layoutInvalidated=!1,this.focusedId&&!this.cachedLayout.placed.some(topic=>topic.id===this.focusedId)&&(this.focusedId=this.cachedLayout.placed[0]?.id??null))}setAnnouncement(text){this.liveText=text,this.announcementSink?.announce(text)}toggle(node,announce=!0){const expanded=!this.isExpanded(node.id,node.depth),next=new Map(this.expandedOverrides);next.set(node.id,expanded),this.expandedOverrides=next,this.emit("lr-topic-toggle",{topicId:node.id,expanded}),announce&&this.setAnnouncement(this.localize(expanded?"mindMapExpanded":"mindMapCollapsed",void 0,{label:node.label}))}activate(node){node.hasChildren?this.toggle(node):this.emit("lr-topic-select",{topicId:node.id})}siblingsOf(node){return this.cachedLayout.placed.filter(p=>p.parentId===node.parentId)}childrenOf(id){return this.cachedLayout.placed.filter(p=>p.parentId===id)}announce(node){const numberFormat=getNumberFormat(this.effectiveLocale);this.setAnnouncement(node.hasChildren?this.localize("mindMapTopicStatus",void 0,{label:node.label,level:numberFormat.format(node.depth+1),count:numberFormat.format(this.childrenOf(node.id).length)}):this.localize("mindMapLeafStatus",void 0,{label:node.label,level:numberFormat.format(node.depth+1)}))}focusNodeById(id){this.focusedId=id;const node=this.cachedLayout.placed.find(p=>p.id===id);node&&this.announce(node)}onNodeClick(node){this.focusedId=node.id,this.svgEl?.focus(),node.hasChildren||this.announce(node),this.activate(node)}connectorControlPoint(from,to){const layout=this.cachedLayout,parentR=Math.hypot(from.x-layout.centerX,from.y-layout.centerY),dir=isRtl(this)?-1:1;return{x:layout.centerX+dir*parentR*Math.sin(to.angle),y:layout.centerY-parentR*Math.cos(to.angle)}}renderSemanticNode(node,childrenByParent){const children=childrenByParent.get(node.id)??[];return html`
|
|
2
2
|
<div
|
|
3
3
|
role="treeitem"
|
|
4
4
|
aria-level=${node.depth+1}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import{__decorate}from"tslib";import{collectionSupport}from"../../../internal/collection-snapshot.js";import{html,nothing}from"lit";import{property}from"lit/decorators.js";import{guard}from"lit/directives/guard.js";import{LyraElement}from"../../../internal/lyra-element.js";import{firstByRetrievalIdentity}from"../retrieval-identity.js";import{expandIcon}from"../../../internal/icons.js";import{finiteCount}from"../../../internal/numbers.js";import{getCollator,getListFormat,getNumberFormat}from"../../../internal/intl-cache.js";import"../../overlays/empty/empty.class.js";import{styles}from"./neighbor-list.styles.js";import{retrievalSemanticLabel,retrievalSemanticRole}from"../retrieval-semantic-owner.js";import{
|
|
1
|
+
import{__decorate}from"tslib";import{collectionSupport}from"../../../internal/collection-snapshot.js";import{html,nothing}from"lit";import{property}from"lit/decorators.js";import{guard}from"lit/directives/guard.js";import{LyraElement}from"../../../internal/lyra-element.js";import{firstByRetrievalIdentity}from"../retrieval-identity.js";import{expandIcon}from"../../../internal/icons.js";import{finiteCount}from"../../../internal/numbers.js";import{getCollator,getListFormat,getNumberFormat}from"../../../internal/intl-cache.js";import"../../overlays/empty/empty.class.js";import{styles}from"./neighbor-list.styles.js";import{retrievalSemanticLabel,retrievalSemanticRole}from"../retrieval-semantic-owner.js";import{LYRA_DEFAULT_neighborExpand,LYRA_DEFAULT_neighborGroupHeader,LYRA_DEFAULT_neighborListEmpty,LYRA_DEFAULT_neighborListLabel,LYRA_DEFAULT_neighborRowLabel}from"../../../internal/default-strings/retrieval.generated.js";import{LYRA_DEFAULT_neighborDirectionBoth,LYRA_DEFAULT_neighborDirectionIn,LYRA_DEFAULT_neighborDirectionOut}from"../../../internal/default-strings/shared.generated.js";let virtualListRegistration;class LyraNeighborList extends LyraElement{constructor(){super(...arguments),this.rows=[],this.types=[],this.groupByRelation=!1,this.expandable=!1,this.virtualizeAt=100,this.sortedRowsCache=[],this.hasComputedRows=!1,this.processedSignature="",this.renderRow=item=>this.renderNeighborRow(item),this.virtualListKeyFunction=item=>item.node.id}static{this.defaultStrings={...super.defaultStrings,neighborDirectionBoth:LYRA_DEFAULT_neighborDirectionBoth,neighborDirectionIn:LYRA_DEFAULT_neighborDirectionIn,neighborDirectionOut:LYRA_DEFAULT_neighborDirectionOut,neighborExpand:LYRA_DEFAULT_neighborExpand,neighborGroupHeader:LYRA_DEFAULT_neighborGroupHeader,neighborListEmpty:LYRA_DEFAULT_neighborListEmpty,neighborListLabel:LYRA_DEFAULT_neighborListLabel,neighborRowLabel:LYRA_DEFAULT_neighborRowLabel}}static{this.collectionSupport=collectionSupport}static{this.ownedCollectionProperties=Object.freeze(["rows","types"])}static{this.styles=[LyraElement.styles,styles]}get effectiveVirtualizeAt(){return finiteCount(this.virtualizeAt,100)}willUpdate(changed){super.willUpdate(changed);const signature=`${this.effectiveLocale} ${this.groupByRelation}`;(!this.hasComputedRows||changed.has("rows")||changed.has("groupByRelation")||signature!==this.processedSignature)&&(this.hasComputedRows=!0,this.processedSignature=signature,this.sortedRowsCache=this.computeSortedRows(),this.groupsCache=this.computeGroups(this.sortedRowsCache)),this.sortedRowsCache.length>this.effectiveVirtualizeAt&&(virtualListRegistration??=import("../../layout/virtual-list/virtual-list.js").catch(()=>virtualListRegistration=void 0))}sortedRows(){return this.sortedRowsCache}computeSortedRows(){const rows=firstByRetrievalIdentity(this.rows,row=>row?.node?.id);return this.groupByRelation?rows.sort((a,b)=>getCollator(this.effectiveLocale).compare(a.relation,b.relation)):rows}groups(sorted){return sorted===this.sortedRowsCache?this.groupsCache:this.computeGroups(sorted)}computeGroups(sorted){if(!this.groupByRelation)return;const groups=[],counts=new Map;for(const row of sorted)counts.set(row.relation,(counts.get(row.relation)??0)+1);const numberFormat=getNumberFormat(this.effectiveLocale);let lastRelation;return sorted.forEach((row,i)=>{if(row.relation!==lastRelation){const count=numberFormat.format(counts.get(row.relation)??0);groups.push({key:row.relation,label:this.localize("neighborGroupHeader",void 0,{relation:row.relation,count}),startIndex:i}),lastRelation=row.relation}}),groups}directionGlyph(direction){return direction==="both"?"↔":direction==="out"?"→":"←"}directionText(direction){return this.localize(direction==="in"?"neighborDirectionIn":direction==="out"?"neighborDirectionOut":"neighborDirectionBoth")}renderNeighborRow(row){const nodeLabel=row.node.label||row.node.id,directionText=this.directionText(row.direction),accessibleName=this.localize("neighborRowLabel",void 0,{label:nodeLabel,relation:row.relation,direction:directionText}),nodeType=typeof row.node.type=="string"&&row.node.type.trim()!==""?row.node.type:void 0;this.typeLabels?.[0]!==this.types&&(this.typeLabels=[this.types,new Map(firstByRetrievalIdentity(this.types,type=>type?.id).map(type=>[type.id,type.label]))]);const meta=[nodeType&&(this.typeLabels[1].get(nodeType)??nodeType),row.node.degree!=null?getNumberFormat(this.effectiveLocale).format(finiteCount(row.node.degree)):void 0].filter(v=>typeof v=="string"&&v!==""),metaText=getListFormat(this.effectiveLocale,{style:"short",type:"unit"}).format(meta);return html`
|
|
2
2
|
<button
|
|
3
3
|
part="node-label"
|
|
4
4
|
type="button"
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import{__decorate}from"tslib";import{collectionSupport}from"../../../internal/collection-snapshot.js";import{html,nothing}from"lit";import{property,state}from"lit/decorators.js";import{LyraElement}from"../../../internal/lyra-element.js";import{nextId,srOnly}from"../../../internal/a11y.js";import{Announcer,acquireAnnouncementSink}from"../../../internal/announcer.js";import{getOwnDataDescriptor,projectFrozenRows,projectStringList,MISSING_OWN_DATA_DESCRIPTOR,UNSAFE_OWN_DATA_DESCRIPTOR}from"../../../internal/data-descriptors.js";import{getNumberFormat}from"../../../internal/intl-cache.js";import{FLOW_PALETTE_MIME_TYPE}from"../../data/flow-canvas/flow-canvas.class.js";import{styles}from"./node-palette.styles.js";import{shadowFocusTarget}from"../../../internal/active-element.js";import{renderNativeSearch}from"../../../internal/native-search.js";import{LYRA_DEFAULT_clear,LYRA_DEFAULT_nodePaletteDragHint,LYRA_DEFAULT_nodePaletteEmpty,LYRA_DEFAULT_nodePaletteLabel,LYRA_DEFAULT_nodePalettePlaceholder,LYRA_DEFAULT_nodePaletteResultCount,LYRA_DEFAULT_reorderItemMoved,LYRA_DEFAULT_search}from"../../../internal/default-strings.generated.js";const MAX_PALETTE_KEYWORDS=1e4,MAX_PALETTE_ITEMS=1e4,EMPTY_CANONICAL_PALETTE_ITEMS=Object.freeze([]);function projectKeywords(value){return projectStringList(value,MAX_PALETTE_KEYWORDS,{strict:!0,rejectOversized:!0})}function projectPaletteItem(candidate,sourceIndex){try{if(candidate===null||typeof candidate!="object"||Array.isArray(candidate))return;const typeDescriptor=getOwnDataDescriptor(candidate,"type"),labelDescriptor=getOwnDataDescriptor(candidate,"label"),descriptionDescriptor=getOwnDataDescriptor(candidate,"description"),categoryDescriptor=getOwnDataDescriptor(candidate,"category"),keywordsDescriptor=getOwnDataDescriptor(candidate,"keywords"),iconDescriptor=getOwnDataDescriptor(candidate,"icon"),disabledDescriptor=getOwnDataDescriptor(candidate,"disabled");if(typeDescriptor===MISSING_OWN_DATA_DESCRIPTOR||typeDescriptor===UNSAFE_OWN_DATA_DESCRIPTOR||labelDescriptor===MISSING_OWN_DATA_DESCRIPTOR||labelDescriptor===UNSAFE_OWN_DATA_DESCRIPTOR||descriptionDescriptor===UNSAFE_OWN_DATA_DESCRIPTOR||categoryDescriptor===UNSAFE_OWN_DATA_DESCRIPTOR||keywordsDescriptor===UNSAFE_OWN_DATA_DESCRIPTOR||iconDescriptor===UNSAFE_OWN_DATA_DESCRIPTOR||disabledDescriptor===UNSAFE_OWN_DATA_DESCRIPTOR||typeof typeDescriptor.value!="string"||typeDescriptor.value.trim()===""||typeof labelDescriptor.value!="string"||labelDescriptor.value.trim()==="")return;const description=descriptionDescriptor===MISSING_OWN_DATA_DESCRIPTOR?void 0:descriptionDescriptor.value,category=categoryDescriptor===MISSING_OWN_DATA_DESCRIPTOR?void 0:categoryDescriptor.value,keywordsValue=keywordsDescriptor===MISSING_OWN_DATA_DESCRIPTOR?void 0:keywordsDescriptor.value,icon=iconDescriptor===MISSING_OWN_DATA_DESCRIPTOR?void 0:iconDescriptor.value,disabled=disabledDescriptor===MISSING_OWN_DATA_DESCRIPTOR?void 0:disabledDescriptor.value;if(description!==void 0&&typeof description!="string"||category!==void 0&&typeof category!="string"||disabled!==void 0&&typeof disabled!="boolean")return;const keywords=keywordsValue===void 0?Object.freeze([]):projectKeywords(keywordsValue);return keywords?Object.freeze({source:candidate,sourceIndex,type:typeDescriptor.value,label:labelDescriptor.value,description,category,keywords,icon,disabled:disabled??!1}):void 0}catch{return}}function projectPaletteItems(value){return projectFrozenRows(value,projectPaletteItem,MAX_PALETTE_ITEMS,EMPTY_CANONICAL_PALETTE_ITEMS)}class LyraNodePalette extends LyraElement{constructor(){super(...arguments),this.items=[],this.reorderable=!1,this.accessibleLabel=null,this.queryText="",this.activeIndex=0,this.liveText="",this.listId=nextId("node-palette-list"),this.hintId=nextId("node-palette-hint"),this.announcer=new Announcer({onFlush:text=>{this.liveText=text,this.announcementSink?.announce(text)}}),this.isMounting=!0,this.canonicalItemsCache=null,this.filteredCache=null,this.categorizedCache=null,this.rovingListCache=null,this.lastRenderedRovingList=[],this.pendingFocusIndex=null,this.onFieldKeyDown=e=>{if(e.key==="ArrowDown"){if(e.preventDefault(),this.lastRenderedRovingList.length===0)return;this.activeIndex=0,this.focusItem(0)}}}static{this.defaultStrings={...super.defaultStrings,clear:LYRA_DEFAULT_clear,nodePaletteDragHint:LYRA_DEFAULT_nodePaletteDragHint,nodePaletteEmpty:LYRA_DEFAULT_nodePaletteEmpty,nodePaletteLabel:LYRA_DEFAULT_nodePaletteLabel,nodePalettePlaceholder:LYRA_DEFAULT_nodePalettePlaceholder,nodePaletteResultCount:LYRA_DEFAULT_nodePaletteResultCount,reorderItemMoved:LYRA_DEFAULT_reorderItemMoved,search:LYRA_DEFAULT_search}}static{this.collectionSupport=collectionSupport}static{this.ownedCollectionProperties=Object.freeze(["items"])}static{this.identityCollectionProperties=Object.freeze(["items"])}static{this.identityEventDetailProperties=Object.freeze({"lr-select":Object.freeze(["item"])})}static{this.styles=[LyraElement.styles,styles,srOnly]}static{this.immutableEventDetails=Object.freeze(["lr-select"])}get canonicalItems(){const items=this.items,cache=this.canonicalItemsCache;if(cache&&cache.items===items)return cache.result;const result=projectPaletteItems(items);return this.canonicalItemsCache={items,result},result}get filtered(){const locale=this.effectiveLocale,q=this.queryText.trim().toLocaleLowerCase(locale),items=this.canonicalItems,cache=this.filteredCache;if(cache&&cache.items===items&&cache.query===q&&cache.locale===locale)return cache.result;const result=[];for(const item of items)q&&![item.label,item.category??"",...item.keywords].join(" ").toLocaleLowerCase(locale).includes(q)||result.push(item);return this.filteredCache={items,query:q,locale,result},result}categorized(filtered){const cache=this.categorizedCache;if(cache&&cache.filtered===filtered)return cache.result;const groups=new Map;for(const item of filtered){const key=item.category??null;groups.has(key)||groups.set(key,[]),groups.get(key).push(item)}const result=Array.from(groups,([category,groupItems])=>({category,items:groupItems}));return this.categorizedCache={filtered,result},result}rovingList(filtered=this.filtered){const cache=this.rovingListCache;if(cache&&cache.filtered===filtered)return cache.result;const result=this.categorized(filtered).flatMap(group=>group.items).filter(item=>!item.disabled);return this.rovingListCache={filtered,result},result}itemElements(){return Array.from(this.renderRoot.querySelectorAll('[part="item"]:not([aria-disabled="true"])'))}occurrenceAt(items,index){const item=items[index]?.source;let occurrence=0;for(let i=0;i<index;i++)items[i]?.source===item&&occurrence++;return occurrence}indexOfOccurrence(items,item,occurrence){let seen=0;for(let index=0;index<items.length;index++)if(items[index]?.source===item){if(seen===occurrence)return index;seen++}return-1}connectedCallback(){super.connectedCallback();const ownerWindow=this.ownerDocument.defaultView;ownerWindow&&this.announcer.setTimerHost(ownerWindow),this.announcementSink??=acquireAnnouncementSink("polite",{document:this.ownerDocument,source:this})}disconnectedCallback(){this.announcer.cancel(),this.liveText="",this.isMounting=!0,this.announcementSink?.release(),this.announcementSink=void 0,super.disconnectedCallback()}adoptedCallback(){super.adoptedCallback();const ownerWindow=this.ownerDocument.defaultView;ownerWindow&&this.announcer.setTimerHost(ownerWindow)}willUpdate(changed){super.willUpdate(changed);const previous=this.lastRenderedRovingList,next=this.rovingList(),structureChanged=previous.length!==next.length||previous.some((item,index)=>item!==next[index]);if(!this.hasUpdated||!structureChanged)return;const oldElements=this.itemElements(),focusedIndex=oldElements.indexOf(shadowFocusTarget(this)),referenceIndex=focusedIndex>=0?focusedIndex:Math.min(Math.max(0,this.activeIndex),Math.max(0,previous.length-1));let nextIndex=0;const previousItem=previous[referenceIndex];if(!changed.has("queryText")&&previousItem){const occurrence=this.occurrenceAt(previous,referenceIndex),preservedIndex=this.indexOfOccurrence(next,previousItem.source,occurrence);nextIndex=preservedIndex>=0?preservedIndex:Math.min(referenceIndex,Math.max(0,next.length-1))}if(focusedIndex>=0)if(next.length===0)this.renderRoot.querySelector("input")?.focus();else{const nextItem=next[nextIndex],nextOccurrence=this.occurrenceAt(next,nextIndex),survivingOldIndex=this.indexOfOccurrence(previous,nextItem.source,nextOccurrence),survivingOldElement=oldElements[survivingOldIndex];survivingOldElement?survivingOldElement.focus():this.renderRoot.querySelector("input")?.focus(),this.pendingFocusIndex=nextIndex}this.activeIndex=next.length===0?0:nextIndex}updated(changed){super.updated(changed),this.lastRenderedRovingList=this.rovingList();const pendingFocusIndex=this.pendingFocusIndex;pendingFocusIndex!==null&&(this.pendingFocusIndex=null,this.itemElements()[Math.min(pendingFocusIndex,this.lastRenderedRovingList.length-1)]?.focus()),changed.has("items")&&this.confirmPendingReorder();const wasMounting=this.isMounting;if(this.isMounting=!1,!wasMounting&&(changed.has("queryText")||changed.has("items"))){const count=this.filtered.length,countText=getNumberFormat(this.effectiveLocale).format(count);this.announcer.announce(this.localize("nodePaletteResultCount",void 0,{count:countText,pluralCount:count}))}}focusItem(index){this.updateComplete.then(()=>{this.itemElements()[index]?.focus()})}onItemKeyDown(e,rovingIndex,item){const list=this.lastRenderedRovingList;if(this.reorderable&&(e.ctrlKey||e.metaKey)&&(e.key==="ArrowUp"||e.key==="ArrowDown")){e.preventDefault(),this.requestReorder(item,e.key==="ArrowDown"?1:-1);return}if(e.key==="ArrowDown")e.preventDefault(),this.activeIndex=Math.min(list.length-1,rovingIndex+1),this.focusItem(this.activeIndex);else if(e.key==="ArrowUp"){if(e.preventDefault(),rovingIndex===0){this.renderRoot.querySelector("input")?.focus();return}this.activeIndex=Math.max(0,rovingIndex-1),this.focusItem(this.activeIndex)}else e.key==="Home"?(e.preventDefault(),this.activeIndex=0,this.focusItem(0)):e.key==="End"?(e.preventDefault(),this.activeIndex=list.length-1,this.focusItem(this.activeIndex)):(e.key==="Enter"||e.key===" ")&&(e.preventDefault(),this.place(item))}groupItemsFor(category){return this.categorized(this.filtered).find(group=>group.category===category)?.items??[]}requestReorder(item,delta){const category=item.category??null,group=this.groupItemsFor(category),position=group.indexOf(item),neighbor=position<0?void 0:group[position+delta];if(!neighbor)return;const fromIndex=item.sourceIndex,toIndex=neighbor.sourceIndex;this.pendingReorder={item:item.source,itemOccurrence:this.occurrenceAt(group,position),category,neighbor:neighbor.source,neighborOccurrence:this.occurrenceAt(group,position+delta),wasBefore:delta===1},this.emit("lr-reorder",{type:item.type,category,fromIndex,toIndex})}confirmPendingReorder(){const pending=this.pendingReorder;if(!pending)return;const group=this.groupItemsFor(pending.category),position=this.indexOfOccurrence(group,pending.item,pending.itemOccurrence),neighborPosition=this.indexOfOccurrence(group,pending.neighbor,pending.neighborOccurrence);if(position<0||neighborPosition<0){this.pendingReorder=void 0;return}if(position<neighborPosition===pending.wasBefore)return;this.pendingReorder=void 0;const numberFormat=getNumberFormat(this.effectiveLocale),text=this.localize("reorderItemMoved",void 0,{index:numberFormat.format(position+1),total:numberFormat.format(group.length)});this.updateComplete.then(()=>this.announcer.announce(text,{force:!0}))}place(item){item.disabled||(this.emit("lr-palette-place",{type:item.type}),this.emit("lr-select",{item:item.source}))}onItemDragStart(e,item){item.disabled||!e.dataTransfer||(e.dataTransfer.setData(FLOW_PALETTE_MIME_TYPE,JSON.stringify({type:item.type})),e.dataTransfer.setData("text/plain",item.label),e.dataTransfer.effectAllowed="copy")}itemTemplate(item,rovingIndex){return html`<div
|
|
1
|
+
import{__decorate}from"tslib";import{collectionSupport}from"../../../internal/collection-snapshot.js";import{html,nothing}from"lit";import{property,state}from"lit/decorators.js";import{LyraElement}from"../../../internal/lyra-element.js";import{nextId,srOnly}from"../../../internal/a11y.js";import{Announcer,acquireAnnouncementSink}from"../../../internal/announcer.js";import{getOwnDataDescriptor,projectFrozenRows,projectStringList,MISSING_OWN_DATA_DESCRIPTOR,UNSAFE_OWN_DATA_DESCRIPTOR}from"../../../internal/data-descriptors.js";import{getNumberFormat}from"../../../internal/intl-cache.js";import{FLOW_PALETTE_MIME_TYPE}from"../../data/flow-canvas/flow-canvas.class.js";import{styles}from"./node-palette.styles.js";import{shadowFocusTarget}from"../../../internal/active-element.js";import{renderNativeSearch}from"../../../internal/native-search.js";import{LYRA_DEFAULT_nodePaletteDragHint,LYRA_DEFAULT_nodePaletteEmpty,LYRA_DEFAULT_nodePaletteLabel,LYRA_DEFAULT_nodePalettePlaceholder,LYRA_DEFAULT_nodePaletteResultCount}from"../../../internal/default-strings/retrieval.generated.js";import{LYRA_DEFAULT_clear,LYRA_DEFAULT_reorderItemMoved,LYRA_DEFAULT_search}from"../../../internal/default-strings/shared.generated.js";const MAX_PALETTE_KEYWORDS=1e4,MAX_PALETTE_ITEMS=1e4,EMPTY_CANONICAL_PALETTE_ITEMS=Object.freeze([]);function projectKeywords(value){return projectStringList(value,MAX_PALETTE_KEYWORDS,{strict:!0,rejectOversized:!0})}function projectPaletteItem(candidate,sourceIndex){try{if(candidate===null||typeof candidate!="object"||Array.isArray(candidate))return;const typeDescriptor=getOwnDataDescriptor(candidate,"type"),labelDescriptor=getOwnDataDescriptor(candidate,"label"),descriptionDescriptor=getOwnDataDescriptor(candidate,"description"),categoryDescriptor=getOwnDataDescriptor(candidate,"category"),keywordsDescriptor=getOwnDataDescriptor(candidate,"keywords"),iconDescriptor=getOwnDataDescriptor(candidate,"icon"),disabledDescriptor=getOwnDataDescriptor(candidate,"disabled");if(typeDescriptor===MISSING_OWN_DATA_DESCRIPTOR||typeDescriptor===UNSAFE_OWN_DATA_DESCRIPTOR||labelDescriptor===MISSING_OWN_DATA_DESCRIPTOR||labelDescriptor===UNSAFE_OWN_DATA_DESCRIPTOR||descriptionDescriptor===UNSAFE_OWN_DATA_DESCRIPTOR||categoryDescriptor===UNSAFE_OWN_DATA_DESCRIPTOR||keywordsDescriptor===UNSAFE_OWN_DATA_DESCRIPTOR||iconDescriptor===UNSAFE_OWN_DATA_DESCRIPTOR||disabledDescriptor===UNSAFE_OWN_DATA_DESCRIPTOR||typeof typeDescriptor.value!="string"||typeDescriptor.value.trim()===""||typeof labelDescriptor.value!="string"||labelDescriptor.value.trim()==="")return;const description=descriptionDescriptor===MISSING_OWN_DATA_DESCRIPTOR?void 0:descriptionDescriptor.value,category=categoryDescriptor===MISSING_OWN_DATA_DESCRIPTOR?void 0:categoryDescriptor.value,keywordsValue=keywordsDescriptor===MISSING_OWN_DATA_DESCRIPTOR?void 0:keywordsDescriptor.value,icon=iconDescriptor===MISSING_OWN_DATA_DESCRIPTOR?void 0:iconDescriptor.value,disabled=disabledDescriptor===MISSING_OWN_DATA_DESCRIPTOR?void 0:disabledDescriptor.value;if(description!==void 0&&typeof description!="string"||category!==void 0&&typeof category!="string"||disabled!==void 0&&typeof disabled!="boolean")return;const keywords=keywordsValue===void 0?Object.freeze([]):projectKeywords(keywordsValue);return keywords?Object.freeze({source:candidate,sourceIndex,type:typeDescriptor.value,label:labelDescriptor.value,description,category,keywords,icon,disabled:disabled??!1}):void 0}catch{return}}function projectPaletteItems(value){return projectFrozenRows(value,projectPaletteItem,MAX_PALETTE_ITEMS,EMPTY_CANONICAL_PALETTE_ITEMS)}class LyraNodePalette extends LyraElement{constructor(){super(...arguments),this.items=[],this.reorderable=!1,this.accessibleLabel=null,this.queryText="",this.activeIndex=0,this.liveText="",this.listId=nextId("node-palette-list"),this.hintId=nextId("node-palette-hint"),this.announcer=new Announcer({onFlush:text=>{this.liveText=text,this.announcementSink?.announce(text)}}),this.isMounting=!0,this.canonicalItemsCache=null,this.filteredCache=null,this.categorizedCache=null,this.rovingListCache=null,this.lastRenderedRovingList=[],this.pendingFocusIndex=null,this.onFieldKeyDown=e=>{if(e.key==="ArrowDown"){if(e.preventDefault(),this.lastRenderedRovingList.length===0)return;this.activeIndex=0,this.focusItem(0)}}}static{this.defaultStrings={...super.defaultStrings,clear:LYRA_DEFAULT_clear,nodePaletteDragHint:LYRA_DEFAULT_nodePaletteDragHint,nodePaletteEmpty:LYRA_DEFAULT_nodePaletteEmpty,nodePaletteLabel:LYRA_DEFAULT_nodePaletteLabel,nodePalettePlaceholder:LYRA_DEFAULT_nodePalettePlaceholder,nodePaletteResultCount:LYRA_DEFAULT_nodePaletteResultCount,reorderItemMoved:LYRA_DEFAULT_reorderItemMoved,search:LYRA_DEFAULT_search}}static{this.collectionSupport=collectionSupport}static{this.ownedCollectionProperties=Object.freeze(["items"])}static{this.identityCollectionProperties=Object.freeze(["items"])}static{this.identityEventDetailProperties=Object.freeze({"lr-select":Object.freeze(["item"])})}static{this.styles=[LyraElement.styles,styles,srOnly]}static{this.immutableEventDetails=Object.freeze(["lr-select"])}get canonicalItems(){const items=this.items,cache=this.canonicalItemsCache;if(cache&&cache.items===items)return cache.result;const result=projectPaletteItems(items);return this.canonicalItemsCache={items,result},result}get filtered(){const locale=this.effectiveLocale,q=this.queryText.trim().toLocaleLowerCase(locale),items=this.canonicalItems,cache=this.filteredCache;if(cache&&cache.items===items&&cache.query===q&&cache.locale===locale)return cache.result;const result=[];for(const item of items)q&&![item.label,item.category??"",...item.keywords].join(" ").toLocaleLowerCase(locale).includes(q)||result.push(item);return this.filteredCache={items,query:q,locale,result},result}categorized(filtered){const cache=this.categorizedCache;if(cache&&cache.filtered===filtered)return cache.result;const groups=new Map;for(const item of filtered){const key=item.category??null;groups.has(key)||groups.set(key,[]),groups.get(key).push(item)}const result=Array.from(groups,([category,groupItems])=>({category,items:groupItems}));return this.categorizedCache={filtered,result},result}rovingList(filtered=this.filtered){const cache=this.rovingListCache;if(cache&&cache.filtered===filtered)return cache.result;const result=this.categorized(filtered).flatMap(group=>group.items).filter(item=>!item.disabled);return this.rovingListCache={filtered,result},result}itemElements(){return Array.from(this.renderRoot.querySelectorAll('[part="item"]:not([aria-disabled="true"])'))}occurrenceAt(items,index){const item=items[index]?.source;let occurrence=0;for(let i=0;i<index;i++)items[i]?.source===item&&occurrence++;return occurrence}indexOfOccurrence(items,item,occurrence){let seen=0;for(let index=0;index<items.length;index++)if(items[index]?.source===item){if(seen===occurrence)return index;seen++}return-1}connectedCallback(){super.connectedCallback();const ownerWindow=this.ownerDocument.defaultView;ownerWindow&&this.announcer.setTimerHost(ownerWindow),this.announcementSink??=acquireAnnouncementSink("polite",{document:this.ownerDocument,source:this})}disconnectedCallback(){this.announcer.cancel(),this.liveText="",this.isMounting=!0,this.announcementSink?.release(),this.announcementSink=void 0,super.disconnectedCallback()}adoptedCallback(){super.adoptedCallback();const ownerWindow=this.ownerDocument.defaultView;ownerWindow&&this.announcer.setTimerHost(ownerWindow)}willUpdate(changed){super.willUpdate(changed);const previous=this.lastRenderedRovingList,next=this.rovingList(),structureChanged=previous.length!==next.length||previous.some((item,index)=>item!==next[index]);if(!this.hasUpdated||!structureChanged)return;const oldElements=this.itemElements(),focusedIndex=oldElements.indexOf(shadowFocusTarget(this)),referenceIndex=focusedIndex>=0?focusedIndex:Math.min(Math.max(0,this.activeIndex),Math.max(0,previous.length-1));let nextIndex=0;const previousItem=previous[referenceIndex];if(!changed.has("queryText")&&previousItem){const occurrence=this.occurrenceAt(previous,referenceIndex),preservedIndex=this.indexOfOccurrence(next,previousItem.source,occurrence);nextIndex=preservedIndex>=0?preservedIndex:Math.min(referenceIndex,Math.max(0,next.length-1))}if(focusedIndex>=0)if(next.length===0)this.renderRoot.querySelector("input")?.focus();else{const nextItem=next[nextIndex],nextOccurrence=this.occurrenceAt(next,nextIndex),survivingOldIndex=this.indexOfOccurrence(previous,nextItem.source,nextOccurrence),survivingOldElement=oldElements[survivingOldIndex];survivingOldElement?survivingOldElement.focus():this.renderRoot.querySelector("input")?.focus(),this.pendingFocusIndex=nextIndex}this.activeIndex=next.length===0?0:nextIndex}updated(changed){super.updated(changed),this.lastRenderedRovingList=this.rovingList();const pendingFocusIndex=this.pendingFocusIndex;pendingFocusIndex!==null&&(this.pendingFocusIndex=null,this.itemElements()[Math.min(pendingFocusIndex,this.lastRenderedRovingList.length-1)]?.focus()),changed.has("items")&&this.confirmPendingReorder();const wasMounting=this.isMounting;if(this.isMounting=!1,!wasMounting&&(changed.has("queryText")||changed.has("items"))){const count=this.filtered.length,countText=getNumberFormat(this.effectiveLocale).format(count);this.announcer.announce(this.localize("nodePaletteResultCount",void 0,{count:countText,pluralCount:count}))}}focusItem(index){this.updateComplete.then(()=>{this.itemElements()[index]?.focus()})}onItemKeyDown(e,rovingIndex,item){const list=this.lastRenderedRovingList;if(this.reorderable&&(e.ctrlKey||e.metaKey)&&(e.key==="ArrowUp"||e.key==="ArrowDown")){e.preventDefault(),this.requestReorder(item,e.key==="ArrowDown"?1:-1);return}if(e.key==="ArrowDown")e.preventDefault(),this.activeIndex=Math.min(list.length-1,rovingIndex+1),this.focusItem(this.activeIndex);else if(e.key==="ArrowUp"){if(e.preventDefault(),rovingIndex===0){this.renderRoot.querySelector("input")?.focus();return}this.activeIndex=Math.max(0,rovingIndex-1),this.focusItem(this.activeIndex)}else e.key==="Home"?(e.preventDefault(),this.activeIndex=0,this.focusItem(0)):e.key==="End"?(e.preventDefault(),this.activeIndex=list.length-1,this.focusItem(this.activeIndex)):(e.key==="Enter"||e.key===" ")&&(e.preventDefault(),this.place(item))}groupItemsFor(category){return this.categorized(this.filtered).find(group=>group.category===category)?.items??[]}requestReorder(item,delta){const category=item.category??null,group=this.groupItemsFor(category),position=group.indexOf(item),neighbor=position<0?void 0:group[position+delta];if(!neighbor)return;const fromIndex=item.sourceIndex,toIndex=neighbor.sourceIndex;this.pendingReorder={item:item.source,itemOccurrence:this.occurrenceAt(group,position),category,neighbor:neighbor.source,neighborOccurrence:this.occurrenceAt(group,position+delta),wasBefore:delta===1},this.emit("lr-reorder",{type:item.type,category,fromIndex,toIndex})}confirmPendingReorder(){const pending=this.pendingReorder;if(!pending)return;const group=this.groupItemsFor(pending.category),position=this.indexOfOccurrence(group,pending.item,pending.itemOccurrence),neighborPosition=this.indexOfOccurrence(group,pending.neighbor,pending.neighborOccurrence);if(position<0||neighborPosition<0){this.pendingReorder=void 0;return}if(position<neighborPosition===pending.wasBefore)return;this.pendingReorder=void 0;const numberFormat=getNumberFormat(this.effectiveLocale),text=this.localize("reorderItemMoved",void 0,{index:numberFormat.format(position+1),total:numberFormat.format(group.length)});this.updateComplete.then(()=>this.announcer.announce(text,{force:!0}))}place(item){item.disabled||(this.emit("lr-palette-place",{type:item.type}),this.emit("lr-select",{item:item.source}))}onItemDragStart(e,item){item.disabled||!e.dataTransfer||(e.dataTransfer.setData(FLOW_PALETTE_MIME_TYPE,JSON.stringify({type:item.type})),e.dataTransfer.setData("text/plain",item.label),e.dataTransfer.effectAllowed="copy")}itemTemplate(item,rovingIndex){return html`<div
|
|
2
2
|
part="item"
|
|
3
3
|
role="option"
|
|
4
4
|
aria-selected="false"
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import{__decorate}from"tslib";import{collectionSupport}from"../../../internal/collection-snapshot.js";import{html,nothing}from"lit";import{property,state}from"lit/decorators.js";import{LyraElement}from"../../../internal/lyra-element.js";import{isNonBlankIdentity}from"../retrieval-identity.js";import{srOnly}from"../../../internal/a11y.js";import{isRtl}from"../../../internal/rtl.js";import{prefersReducedMotion}from"../../../internal/motion.js";import{getNumberFormat}from"../../../internal/intl-cache.js";import"../../layout/scroller/scroller.class.js";import{styles}from"./path-strip.styles.js";import{retrievalSemanticLabel,retrievalSemanticRole}from"../retrieval-semantic-owner.js";import{shadowFocusTarget}from"../../../internal/active-element.js";import{acquireAnnouncementSink}from"../../../internal/announcer.js";import{
|
|
1
|
+
import{__decorate}from"tslib";import{collectionSupport}from"../../../internal/collection-snapshot.js";import{html,nothing}from"lit";import{property,state}from"lit/decorators.js";import{LyraElement}from"../../../internal/lyra-element.js";import{isNonBlankIdentity}from"../retrieval-identity.js";import{srOnly}from"../../../internal/a11y.js";import{isRtl}from"../../../internal/rtl.js";import{prefersReducedMotion}from"../../../internal/motion.js";import{getNumberFormat}from"../../../internal/intl-cache.js";import"../../layout/scroller/scroller.class.js";import{styles}from"./path-strip.styles.js";import{retrievalSemanticLabel,retrievalSemanticRole}from"../retrieval-semantic-owner.js";import{shadowFocusTarget}from"../../../internal/active-element.js";import{acquireAnnouncementSink}from"../../../internal/announcer.js";import{LYRA_DEFAULT_pathNodeStatus,LYRA_DEFAULT_pathRelationStatus,LYRA_DEFAULT_pathStripLabel}from"../../../internal/default-strings/retrieval.generated.js";import{LYRA_DEFAULT_noData}from"../../../internal/default-strings/shared.generated.js";class LyraPathStrip extends LyraElement{constructor(){super(...arguments),this.path=[],this.activeIndex=0,this.liveText="",this.restoreFocusAfterPathChange=!1,this.pathOccurrenceSnapshot=[],this.onKeyDown=e=>{const count=this.pathOccurrences.length;if(count===0)return;if(e.key==="Enter"||e.key===" "){e.preventDefault(),e.repeat||this.activate(this.activeIndex);return}const rtl=isRtl(this),forwardKey=rtl?"ArrowLeft":"ArrowRight",backwardKey=rtl?"ArrowRight":"ArrowLeft";let next=this.activeIndex;if(e.key===forwardKey)next=Math.min(count-1,this.activeIndex+1);else if(e.key===backwardKey)next=Math.max(0,this.activeIndex-1);else if(e.key==="Home")next=0;else if(e.key==="End")next=count-1;else return;e.preventDefault(),this.focusIndex(next)}}static{this.defaultStrings={...super.defaultStrings,noData:LYRA_DEFAULT_noData,pathNodeStatus:LYRA_DEFAULT_pathNodeStatus,pathRelationStatus:LYRA_DEFAULT_pathRelationStatus,pathStripLabel:LYRA_DEFAULT_pathStripLabel}}static{this.collectionSupport=collectionSupport}static{this.ownedCollectionProperties=Object.freeze(["path"])}static{this.styles=[LyraElement.styles,styles,srOnly]}get pathOccurrences(){if(this.pathOccurrenceSource===this.path)return this.pathOccurrenceSnapshot;this.pathOccurrenceSource=this.path;const source=Array.isArray(this.path)?this.path:[];return this.pathOccurrenceSnapshot=Object.freeze(source.flatMap((element,occurrenceIndex)=>element?.kind==="node"?isNonBlankIdentity(element.node?.id)?[{element,occurrenceIndex}]:[]:element?.kind==="edge"?isNonBlankIdentity(element.relation)?[{element,occurrenceIndex}]:[]:[])),this.pathOccurrenceSnapshot}connectedCallback(){super.connectedCallback(),this.announcementSink??=acquireAnnouncementSink("polite",{document:this.ownerDocument,source:this})}disconnectedCallback(){this.announcementSink?.release(),this.announcementSink=void 0,super.disconnectedCallback()}willUpdate(changed){super.willUpdate(changed),changed.has("path")&&(this.restoreFocusAfterPathChange=shadowFocusTarget(this)?.matches('[part="node"], [part="relation"]')??!1,this.activeIndex=Math.min(this.activeIndex,Math.max(0,this.pathOccurrences.length-1)))}updated(changed){super.updated(changed),!(!changed.has("path")||!this.restoreFocusAfterPathChange)&&(this.restoreFocusAfterPathChange=!1,this.scheduleAfterUpdate(()=>{if(this.pathOccurrences.length===0){this.shadowRoot?.querySelector('[part="base"]')?.focus();return}this.shadowRoot?.querySelectorAll('[part="node"], [part="relation"]')?.[this.activeIndex]?.focus()},"restore-path-focus"))}activate(index){const occurrence=this.pathOccurrences[index];if(!occurrence)return;const el=occurrence.element;if(el.kind==="node"){const detail={entityId:el.node.id,occurrenceIndex:occurrence.occurrenceIndex};this.emit("lr-entity-select",{...detail}),this.emit("lr-entity-activate",detail);return}const source=this.pathOccurrences[index-1]?.element,target=this.pathOccurrences[index+1]?.element;this.emit("lr-relation-activate",{relation:el.relation,sourceNodeId:source?.kind==="node"?source.node.id:void 0,targetNodeId:target?.kind==="node"?target.node.id:void 0,occurrenceIndex:occurrence.occurrenceIndex})}onElementFocus(index){this.activeIndex=index;const el=this.pathOccurrences[index]?.element,total=this.pathOccurrences.length,numberFormat=getNumberFormat(this.effectiveLocale);this.liveText=el?.kind==="node"?this.localize("pathNodeStatus",void 0,{label:el.node.label||el.node.id,position:numberFormat.format(index+1),total:numberFormat.format(total)}):el?this.localize("pathRelationStatus",void 0,{relation:el.relation}):"",this.announcementSink?.announce(this.liveText)}focusIndex(index){this.activeIndex=index,this.updateComplete.then(()=>{const el=this.renderRoot.querySelectorAll('[part="node"], [part="relation"]')[index];if(el?.focus(),el){const reducedMotion=!el.ownerDocument.defaultView||prefersReducedMotion(this);el.scrollIntoView({behavior:reducedMotion?"auto":"smooth",inline:"nearest",block:"nearest"})}})}renderNode(node,index){return html`<button
|
|
2
2
|
part="node"
|
|
3
3
|
type="button"
|
|
4
4
|
tabindex=${this.activeIndex===index?"0":"-1"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import{__decorate}from"tslib";import{collectionSupport}from"../../../internal/collection-snapshot.js";import{html,nothing}from"lit";import{property,state}from"lit/decorators.js";import{LyraElement}from"../../../internal/lyra-element.js";import{nextId}from"../../../internal/a11y.js";import{getNumberFormat}from"../../../internal/intl-cache.js";import"../entity-chip/entity-chip.class.js";import"../path-strip/path-strip.class.js";import"../community-card/community-card.class.js";import"../chunk-inspector/chunk-inspector.class.js";import"../../overlays/empty/empty.class.js";import{styles}from"./provenance-panel.styles.js";import{retrievalSemanticLabel,retrievalSemanticRole}from"../retrieval-semantic-owner.js";import{firstByRetrievalIdentity}from"../retrieval-identity.js";import{LYRA_DEFAULT_collapse,LYRA_DEFAULT_copy,LYRA_DEFAULT_date,LYRA_DEFAULT_details,LYRA_DEFAULT_loading,LYRA_DEFAULT_map,LYRA_DEFAULT_navigation,LYRA_DEFAULT_open,LYRA_DEFAULT_progress,
|
|
1
|
+
import{__decorate}from"tslib";import{collectionSupport}from"../../../internal/collection-snapshot.js";import{html,nothing}from"lit";import{property,state}from"lit/decorators.js";import{LyraElement}from"../../../internal/lyra-element.js";import{nextId}from"../../../internal/a11y.js";import{getNumberFormat}from"../../../internal/intl-cache.js";import"../entity-chip/entity-chip.class.js";import"../path-strip/path-strip.class.js";import"../community-card/community-card.class.js";import"../chunk-inspector/chunk-inspector.class.js";import"../../overlays/empty/empty.class.js";import{styles}from"./provenance-panel.styles.js";import{retrievalSemanticLabel,retrievalSemanticRole}from"../retrieval-semantic-owner.js";import{firstByRetrievalIdentity}from"../retrieval-identity.js";import{LYRA_DEFAULT_provenanceChunks,LYRA_DEFAULT_provenanceCommunities,LYRA_DEFAULT_provenanceEmpty,LYRA_DEFAULT_provenancePanelLabel,LYRA_DEFAULT_provenancePanelLimit,LYRA_DEFAULT_provenanceRelationships}from"../../../internal/default-strings/retrieval.generated.js";import{LYRA_DEFAULT_collapse,LYRA_DEFAULT_copy,LYRA_DEFAULT_date,LYRA_DEFAULT_details,LYRA_DEFAULT_loading,LYRA_DEFAULT_map,LYRA_DEFAULT_navigation,LYRA_DEFAULT_open,LYRA_DEFAULT_progress,LYRA_DEFAULT_provenanceEntities,LYRA_DEFAULT_search,LYRA_DEFAULT_select}from"../../../internal/default-strings/shared.generated.js";const MAX_SECTION_ROWS=500;function deriveSections(p){return{entities:firstByRetrievalIdentity(Array.isArray(p?.entities)?p.entities:[],entity=>entity?.id),relationships:(Array.isArray(p?.relationships)?p.relationships:[]).filter(relationship=>relationship!==null&&typeof relationship=="object"&&Array.isArray(relationship.path)),communities:firstByRetrievalIdentity(Array.isArray(p?.communities)?p.communities:[],community=>community?.id),chunks:firstByRetrievalIdentity(Array.isArray(p?.chunks)?p.chunks:[],chunk=>chunk?.id)}}class LyraProvenancePanel extends LyraElement{constructor(){super(...arguments),this.provenance=null,this.types=[],this.thresholds={high:.75,medium:.5},this.expandedSections={entities:!0,relationships:!0,communities:!0,chunks:!0},this.sectionIdBase=nextId("provenance-panel")}static{this.defaultStrings={...super.defaultStrings,collapse:LYRA_DEFAULT_collapse,copy:LYRA_DEFAULT_copy,date:LYRA_DEFAULT_date,details:LYRA_DEFAULT_details,loading:LYRA_DEFAULT_loading,map:LYRA_DEFAULT_map,navigation:LYRA_DEFAULT_navigation,open:LYRA_DEFAULT_open,progress:LYRA_DEFAULT_progress,provenanceChunks:LYRA_DEFAULT_provenanceChunks,provenanceCommunities:LYRA_DEFAULT_provenanceCommunities,provenanceEmpty:LYRA_DEFAULT_provenanceEmpty,provenanceEntities:LYRA_DEFAULT_provenanceEntities,provenancePanelLabel:LYRA_DEFAULT_provenancePanelLabel,provenancePanelLimit:LYRA_DEFAULT_provenancePanelLimit,provenanceRelationships:LYRA_DEFAULT_provenanceRelationships,search:LYRA_DEFAULT_search,select:LYRA_DEFAULT_select}}static{this.collectionSupport=collectionSupport}static{this.ownedCollectionProperties=Object.freeze(["provenance","types"])}static{this.styles=[LyraElement.styles,styles]}toggleSection(section){const expanded=!this.expandedSections[section];this.expandedSections={...this.expandedSections,[section]:expanded},this.emit("lr-toggle",{section,expanded})}renderSection(section,titleKey,count,body){if(count===0)return nothing;const expanded=this.expandedSections[section],bodyId=`${this.sectionIdBase}-${section}`;return html`
|
|
2
2
|
<div part="section">
|
|
3
3
|
<button
|
|
4
4
|
part="header"
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import{__decorate}from"tslib";import{collectionSupport}from"../../../internal/collection-snapshot.js";import{html,nothing}from"lit";import{property}from"lit/decorators.js";import{guard}from"lit/directives/guard.js";import{LyraElement}from"../../../internal/lyra-element.js";import{firstByRetrievalIdentity}from"../retrieval-identity.js";import{styles}from"./rag-answer.styles.js";import{retrievalSemanticLabel,retrievalSemanticRole}from"../retrieval-semantic-owner.js";import{acquireAnnouncementSink}from"../../../internal/announcer.js";import{announceAfterFirstPaint}from"../retrieval-announcements.js";import{resolveHeadingLevel}from"../../../internal/heading-level.js";import"../../overlays/empty/empty.class.js";import{LYRA_DEFAULT_ragAnswerCitations,LYRA_DEFAULT_ragAnswerEmpty,LYRA_DEFAULT_ragAnswerLabel,LYRA_DEFAULT_ragAnswerRetry,LYRA_DEFAULT_ragAnswerSources}from"../../../internal/default-strings.generated.js";class LyraRagAnswer extends LyraElement{constructor(){super(...arguments),this.answer="",this.citations=[],this.sources=[],this.assessment=null,this.loading=!1,this.errorText="",this.announce=!1,this.withoutSources=!1,this.withoutClaims=!1,this.headingLevel="3",this.accessibleLabel=null,this.isMounting=!0,this.initialStateAnnounced=!1,this.connectionGeneration=0,this.onAnswerCitationActivate=this.answerCitationHandler("activate"),this.onAnswerCitationOpen=this.answerCitationHandler("open"),this.onGroundingCitationSelect=this.groundingCitationHandler("activate"),this.onGroundingCitationOpen=this.groundingCitationHandler("open"),this.stopGeneratedEvent=event=>{event.target.getRootNode()===this.renderRoot&&event.stopPropagation()}}static{this.defaultStrings={...super.defaultStrings,ragAnswerCitations:LYRA_DEFAULT_ragAnswerCitations,ragAnswerEmpty:LYRA_DEFAULT_ragAnswerEmpty,ragAnswerLabel:LYRA_DEFAULT_ragAnswerLabel,ragAnswerRetry:LYRA_DEFAULT_ragAnswerRetry,ragAnswerSources:LYRA_DEFAULT_ragAnswerSources}}static{this.collectionSupport=collectionSupport}static{this.ownedCollectionProperties=Object.freeze(["citations","sources","assessment"])}static{this.styles=[LyraElement.styles,styles]}static{this.immutableEventDetails=Object.freeze(["lr-citation-select","lr-claim-select"])}connectedCallback(){super.connectedCallback(),this.errorAnnouncementSink??=acquireAnnouncementSink("assertive",{document:this.ownerDocument,source:this});const generation=++this.connectionGeneration;announceAfterFirstPaint(this,()=>generation===this.connectionGeneration,()=>{!this.announce||this.initialStateAnnounced||(this.initialStateAnnounced=!0,this.announcePresentedState())});const MutationObserverCtor=this.ownerDocument.defaultView?.MutationObserver;MutationObserverCtor&&(this.slotObserver=new MutationObserverCtor(records=>{this.isConnected&&records.some(record=>record.type==="childList"?record.target===this:record.target.parentNode===this)&&this.requestUpdate()}),this.slotObserver.observe(this,{childList:!0,subtree:!0,attributes:!0,attributeFilter:["slot"]}))}disconnectedCallback(){this.isMounting=!0,this.connectionGeneration+=1,this.slotObserver?.disconnect(),this.slotObserver=void 0,this.errorAnnouncementSink?.release(),this.errorAnnouncementSink=void 0,super.disconnectedCallback()}updated(changed){super.updated(changed);const wasMounting=this.isMounting;this.isMounting=!1,!wasMounting&&changed.has("errorText")&&this.errorText!==""&&this.isConnected&&(this.initialStateAnnounced=!0,this.errorAnnouncementSink?.announce(this.errorText))}announcePresentedState(){this.errorText!==""&&this.errorAnnouncementSink?.announce(this.errorText)}hasSlot(name){return Array.from(this.children).some(element=>element.getAttribute("slot")===name)}get normalizedCitations(){return this.citationsCache?.source!==this.citations&&(this.citationsCache={source:this.citations,value:firstByRetrievalIdentity(Array.isArray(this.citations)?this.citations:[],citation=>citation.id)}),this.citationsCache.value}get normalizedSources(){return firstByRetrievalIdentity(Array.isArray(this.sources)?this.sources:[],source=>source.id)}get normalizedAssessment(){const assessment=this.assessment;return this.assessmentCache?.source!==assessment&&(this.assessmentCache={source:assessment,value:!assessment||assessment.claims===void 0?assessment:{...assessment,claims:firstByRetrievalIdentity(Array.isArray(assessment.claims)?assessment.claims:[],claim=>claim.id)}}),this.assessmentCache.value}answerCitationHandler(action){return event=>{event.stopPropagation();const citation=this.normalizedCitations[event.detail.index-1];citation&&this.emit("lr-citation-select",{citation,section:"answer",action})}}groundingCitationHandler(action){return event=>{event.stopPropagation(),this.emit("lr-citation-select",{...event.detail,section:"grounding",action})}}stopOwnedEvent(event){event.stopPropagation()}presentationState(){return this.errorText?"error":this.loading?"loading":this.answer||this.hasSlot("answer")?"answer":"idle"}renderSource(source){return html`<lr-source-card
|
|
1
|
+
import{__decorate}from"tslib";import{collectionSupport}from"../../../internal/collection-snapshot.js";import{html,nothing}from"lit";import{property}from"lit/decorators.js";import{guard}from"lit/directives/guard.js";import{LyraElement}from"../../../internal/lyra-element.js";import{firstByRetrievalIdentity}from"../retrieval-identity.js";import{styles}from"./rag-answer.styles.js";import{retrievalSemanticLabel,retrievalSemanticRole}from"../retrieval-semantic-owner.js";import{acquireAnnouncementSink}from"../../../internal/announcer.js";import{announceAfterFirstPaint}from"../retrieval-announcements.js";import{resolveHeadingLevel}from"../../../internal/heading-level.js";import"../../overlays/empty/empty.class.js";import{LYRA_DEFAULT_ragAnswerCitations,LYRA_DEFAULT_ragAnswerEmpty,LYRA_DEFAULT_ragAnswerLabel,LYRA_DEFAULT_ragAnswerRetry,LYRA_DEFAULT_ragAnswerSources}from"../../../internal/default-strings/retrieval.generated.js";class LyraRagAnswer extends LyraElement{constructor(){super(...arguments),this.answer="",this.citations=[],this.sources=[],this.assessment=null,this.loading=!1,this.errorText="",this.announce=!1,this.withoutSources=!1,this.withoutClaims=!1,this.headingLevel="3",this.accessibleLabel=null,this.isMounting=!0,this.initialStateAnnounced=!1,this.connectionGeneration=0,this.onAnswerCitationActivate=this.answerCitationHandler("activate"),this.onAnswerCitationOpen=this.answerCitationHandler("open"),this.onGroundingCitationSelect=this.groundingCitationHandler("activate"),this.onGroundingCitationOpen=this.groundingCitationHandler("open"),this.stopGeneratedEvent=event=>{event.target.getRootNode()===this.renderRoot&&event.stopPropagation()}}static{this.defaultStrings={...super.defaultStrings,ragAnswerCitations:LYRA_DEFAULT_ragAnswerCitations,ragAnswerEmpty:LYRA_DEFAULT_ragAnswerEmpty,ragAnswerLabel:LYRA_DEFAULT_ragAnswerLabel,ragAnswerRetry:LYRA_DEFAULT_ragAnswerRetry,ragAnswerSources:LYRA_DEFAULT_ragAnswerSources}}static{this.collectionSupport=collectionSupport}static{this.ownedCollectionProperties=Object.freeze(["citations","sources","assessment"])}static{this.styles=[LyraElement.styles,styles]}static{this.immutableEventDetails=Object.freeze(["lr-citation-select","lr-claim-select"])}connectedCallback(){super.connectedCallback(),this.errorAnnouncementSink??=acquireAnnouncementSink("assertive",{document:this.ownerDocument,source:this});const generation=++this.connectionGeneration;announceAfterFirstPaint(this,()=>generation===this.connectionGeneration,()=>{!this.announce||this.initialStateAnnounced||(this.initialStateAnnounced=!0,this.announcePresentedState())});const MutationObserverCtor=this.ownerDocument.defaultView?.MutationObserver;MutationObserverCtor&&(this.slotObserver=new MutationObserverCtor(records=>{this.isConnected&&records.some(record=>record.type==="childList"?record.target===this:record.target.parentNode===this)&&this.requestUpdate()}),this.slotObserver.observe(this,{childList:!0,subtree:!0,attributes:!0,attributeFilter:["slot"]}))}disconnectedCallback(){this.isMounting=!0,this.connectionGeneration+=1,this.slotObserver?.disconnect(),this.slotObserver=void 0,this.errorAnnouncementSink?.release(),this.errorAnnouncementSink=void 0,super.disconnectedCallback()}updated(changed){super.updated(changed);const wasMounting=this.isMounting;this.isMounting=!1,!wasMounting&&changed.has("errorText")&&this.errorText!==""&&this.isConnected&&(this.initialStateAnnounced=!0,this.errorAnnouncementSink?.announce(this.errorText))}announcePresentedState(){this.errorText!==""&&this.errorAnnouncementSink?.announce(this.errorText)}hasSlot(name){return Array.from(this.children).some(element=>element.getAttribute("slot")===name)}get normalizedCitations(){return this.citationsCache?.source!==this.citations&&(this.citationsCache={source:this.citations,value:firstByRetrievalIdentity(Array.isArray(this.citations)?this.citations:[],citation=>citation.id)}),this.citationsCache.value}get normalizedSources(){return firstByRetrievalIdentity(Array.isArray(this.sources)?this.sources:[],source=>source.id)}get normalizedAssessment(){const assessment=this.assessment;return this.assessmentCache?.source!==assessment&&(this.assessmentCache={source:assessment,value:!assessment||assessment.claims===void 0?assessment:{...assessment,claims:firstByRetrievalIdentity(Array.isArray(assessment.claims)?assessment.claims:[],claim=>claim.id)}}),this.assessmentCache.value}answerCitationHandler(action){return event=>{event.stopPropagation();const citation=this.normalizedCitations[event.detail.index-1];citation&&this.emit("lr-citation-select",{citation,section:"answer",action})}}groundingCitationHandler(action){return event=>{event.stopPropagation(),this.emit("lr-citation-select",{...event.detail,section:"grounding",action})}}stopOwnedEvent(event){event.stopPropagation()}presentationState(){return this.errorText?"error":this.loading?"loading":this.answer||this.hasSlot("answer")?"answer":"idle"}renderSource(source){return html`<lr-source-card
|
|
2
2
|
frame="plain"
|
|
3
3
|
size="s"
|
|
4
4
|
.sourceId=${source.id}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import{__decorate}from"tslib";import{collectionSupport}from"../../../internal/collection-snapshot.js";import{html,nothing}from"lit";import{property}from"lit/decorators.js";import{guard}from"lit/directives/guard.js";import{getNumberFormat}from"../../../internal/intl-cache.js";import{isRovingTargetAvailable,resolveListMove}from"../../../internal/list-navigation.js";import{LyraElement}from"../../../internal/lyra-element.js";import{firstByRetrievalIdentity,isNonBlankIdentity,isRecord}from"../retrieval-identity.js";import{finiteRange}from"../../../internal/numbers.js";import{resolveHeadingLevel}from"../../../internal/heading-level.js";import"../../charts/chart/lite-chart.class.js";import"../../data/stat/stat.class.js";import"../../overlays/empty/empty.class.js";import{styles}from"./rag-eval-dashboard.styles.js";import{retrievalSemanticLabel,retrievalSemanticRole}from"../retrieval-semantic-owner.js";import{LYRA_DEFAULT_ragEvalDashboardAllSlices,LYRA_DEFAULT_ragEvalDashboardEmpty,LYRA_DEFAULT_ragEvalDashboardLabel,LYRA_DEFAULT_ragEvalDashboardRuns,
|
|
1
|
+
import{__decorate}from"tslib";import{collectionSupport}from"../../../internal/collection-snapshot.js";import{html,nothing}from"lit";import{property}from"lit/decorators.js";import{guard}from"lit/directives/guard.js";import{getNumberFormat}from"../../../internal/intl-cache.js";import{isRovingTargetAvailable,resolveListMove}from"../../../internal/list-navigation.js";import{LyraElement}from"../../../internal/lyra-element.js";import{firstByRetrievalIdentity,isNonBlankIdentity,isRecord}from"../retrieval-identity.js";import{finiteRange}from"../../../internal/numbers.js";import{resolveHeadingLevel}from"../../../internal/heading-level.js";import"../../charts/chart/lite-chart.class.js";import"../../data/stat/stat.class.js";import"../../overlays/empty/empty.class.js";import{styles}from"./rag-eval-dashboard.styles.js";import{retrievalSemanticLabel,retrievalSemanticRole}from"../retrieval-semantic-owner.js";import{LYRA_DEFAULT_ragEvalDashboardAllSlices,LYRA_DEFAULT_ragEvalDashboardEmpty,LYRA_DEFAULT_ragEvalDashboardLabel,LYRA_DEFAULT_ragEvalDashboardRuns,LYRA_DEFAULT_ragEvalDashboardSliceUnavailable,LYRA_DEFAULT_ragEvalDashboardSlices}from"../../../internal/default-strings/retrieval.generated.js";import{LYRA_DEFAULT_ragEvalDashboardRunsLimit}from"../../../internal/default-strings/shared.generated.js";const MAX_RENDERED_RUNS=500;class LyraRagEvalDashboard extends LyraElement{constructor(){super(...arguments),this.metrics=[],this.runs=[],this.metricId="",this.slice="",this.withoutChart=!1,this.headingLevel="2",this.chartHeight="220px",this.rovingRunId=""}static{this.defaultStrings={...super.defaultStrings,ragEvalDashboardAllSlices:LYRA_DEFAULT_ragEvalDashboardAllSlices,ragEvalDashboardEmpty:LYRA_DEFAULT_ragEvalDashboardEmpty,ragEvalDashboardLabel:LYRA_DEFAULT_ragEvalDashboardLabel,ragEvalDashboardRuns:LYRA_DEFAULT_ragEvalDashboardRuns,ragEvalDashboardRunsLimit:LYRA_DEFAULT_ragEvalDashboardRunsLimit,ragEvalDashboardSliceUnavailable:LYRA_DEFAULT_ragEvalDashboardSliceUnavailable,ragEvalDashboardSlices:LYRA_DEFAULT_ragEvalDashboardSlices}}static{this.collectionSupport=collectionSupport}static{this.ownedCollectionProperties=Object.freeze(["metrics","runs"])}static{this.styles=[LyraElement.styles,styles]}get normalizedMetrics(){return this.metricsCache?.source!==this.metrics&&(this.metricsCache={source:this.metrics,value:firstByRetrievalIdentity(Array.isArray(this.metrics)?this.metrics:[],metric=>metric.id)}),this.metricsCache.value}get normalizedRuns(){return this.runsCache?.source!==this.runs&&(this.runsCache={source:this.runs,value:firstByRetrievalIdentity(Array.isArray(this.runs)?this.runs.filter(run=>isRecord(run)&&isNonBlankIdentity(run.id)&&typeof run.label=="string"&&isRecord(run.metrics)):[],run=>run.id)}),this.runsCache.value}activeMetric(metrics){return this.metricId?metrics.find(metric=>metric.id===this.metricId):metrics[0]}slices(runs){return[...new Set(runs.map(run=>run.slice).filter(slice=>!!slice))]}filteredRuns(runs){return this.slice?runs.filter(run=>run.slice===this.slice):runs}formatMetric(metric,raw){const value=Number.isFinite(raw)?raw:0;return metric.format==="percent"?getNumberFormat(this.effectiveLocale,{style:"percent",maximumFractionDigits:1}).format(finiteRange(value,0,0,1)):getNumberFormat(this.effectiveLocale,{maximumFractionDigits:3}).format(value)}latestValue(metric,runs){for(let index=runs.length-1;index>=0;index-=1){const value=runs[index].metrics[metric.id];if(Number.isFinite(value))return value}}requestMetric(metricId){this.emit("lr-metric-change-request",{metricId}),this.emit("lr-metric-change",{metricId})}requestSlice(slice){this.emit("lr-slice-change-request",{slice}),this.emit("lr-slice-change",{slice})}activateRun(run){this.emit("lr-run-activate",{runId:run.id,run}),this.emit("lr-run-change",{run})}onRunKeyDown(event,index,count){const buttons=this.shadowRoot?.querySelectorAll('[part="run"]'),next=resolveListMove(event,{count,current:index,orientation:"vertical",isAvailable:candidate=>!!(buttons?.[candidate]&&isRovingTargetAvailable(buttons[candidate]))});next!==null&&(event.preventDefault(),buttons?.[next]?.focus())}renderSlices(slices){if(!slices.length)return nothing;const allSlicesPart=this.slice?"slice":"slice slice-selected";return html`
|
|
2
2
|
<nav part="slices" aria-label=${this.localize("ragEvalDashboardSlices")}>
|
|
3
3
|
<button
|
|
4
4
|
part=${allSlicesPart}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import{__decorate}from"tslib";import{progressPercent,formatProgressPercent}from"../../../internal/progress-value.js";import{collectionSupport}from"../../../internal/collection-snapshot.js";import{finiteCount}from"../../../internal/numbers.js";import{resolveHeadingLevel}from"../../../internal/heading-level.js";import{getNumberFormat}from"../../../internal/intl-cache.js";import{html,nothing}from"lit";import{property}from"lit/decorators.js";import{styleMap}from"lit/directives/style-map.js";import{LyraElement}from"../../../internal/lyra-element.js";import{devWarnOnce}from"../../../internal/dev-warning.js";import{normalizeAgentTerminalStatus}from"../../../internal/shared-unions.js";import{firstByRetrievalIdentity}from"../retrieval-identity.js";import{retrievalSemanticLabel,retrievalSemanticRole}from"../retrieval-semantic-owner.js";import"../../overlays/empty/empty.class.js";import{styles}from"./research-progress.styles.js";import{
|
|
1
|
+
import{__decorate}from"tslib";import{progressPercent,formatProgressPercent}from"../../../internal/progress-value.js";import{collectionSupport}from"../../../internal/collection-snapshot.js";import{finiteCount}from"../../../internal/numbers.js";import{resolveHeadingLevel}from"../../../internal/heading-level.js";import{getNumberFormat}from"../../../internal/intl-cache.js";import{html,nothing}from"lit";import{property}from"lit/decorators.js";import{styleMap}from"lit/directives/style-map.js";import{LyraElement}from"../../../internal/lyra-element.js";import{devWarnOnce}from"../../../internal/dev-warning.js";import{normalizeAgentTerminalStatus}from"../../../internal/shared-unions.js";import{firstByRetrievalIdentity}from"../retrieval-identity.js";import{retrievalSemanticLabel,retrievalSemanticRole}from"../retrieval-semantic-owner.js";import"../../overlays/empty/empty.class.js";import{styles}from"./research-progress.styles.js";import{LYRA_DEFAULT_researchProgressEmpty,LYRA_DEFAULT_researchProgressLabel,LYRA_DEFAULT_researchProgressLimit,LYRA_DEFAULT_researchProgressSources,LYRA_DEFAULT_researchProgressStatusCompleted,LYRA_DEFAULT_researchProgressStatusFailed,LYRA_DEFAULT_researchProgressStatusPending,LYRA_DEFAULT_researchProgressStatusRunning}from"../../../internal/default-strings/retrieval.generated.js";import{LYRA_DEFAULT_collapse,LYRA_DEFAULT_copy,LYRA_DEFAULT_date,LYRA_DEFAULT_details,LYRA_DEFAULT_loading,LYRA_DEFAULT_map,LYRA_DEFAULT_navigation,LYRA_DEFAULT_open,LYRA_DEFAULT_search,LYRA_DEFAULT_select,LYRA_DEFAULT_statusIncomplete,LYRA_DEFAULT_statusUnknown}from"../../../internal/default-strings/shared.generated.js";const MAX_RENDERED_STEPS=100,STATUSES=["pending","running","completed","failed","incomplete"],STATUS_LABEL_KEY={pending:"researchProgressStatusPending",running:"researchProgressStatusRunning",completed:"researchProgressStatusCompleted",failed:"researchProgressStatusFailed",incomplete:"statusIncomplete",unknown:"statusUnknown"};class LyraResearchProgress extends LyraElement{constructor(){super(...arguments),this.steps=[],this.size="m",this.frame="card",this.headingLevel="2"}static{this.defaultStrings={...super.defaultStrings,collapse:LYRA_DEFAULT_collapse,copy:LYRA_DEFAULT_copy,date:LYRA_DEFAULT_date,details:LYRA_DEFAULT_details,loading:LYRA_DEFAULT_loading,map:LYRA_DEFAULT_map,navigation:LYRA_DEFAULT_navigation,open:LYRA_DEFAULT_open,researchProgressEmpty:LYRA_DEFAULT_researchProgressEmpty,researchProgressLabel:LYRA_DEFAULT_researchProgressLabel,researchProgressLimit:LYRA_DEFAULT_researchProgressLimit,researchProgressSources:LYRA_DEFAULT_researchProgressSources,researchProgressStatusCompleted:LYRA_DEFAULT_researchProgressStatusCompleted,researchProgressStatusFailed:LYRA_DEFAULT_researchProgressStatusFailed,researchProgressStatusPending:LYRA_DEFAULT_researchProgressStatusPending,researchProgressStatusRunning:LYRA_DEFAULT_researchProgressStatusRunning,search:LYRA_DEFAULT_search,select:LYRA_DEFAULT_select,statusIncomplete:LYRA_DEFAULT_statusIncomplete,statusUnknown:LYRA_DEFAULT_statusUnknown}}static{this.collectionSupport=collectionSupport}static{this.ownedCollectionProperties=Object.freeze(["steps"])}static{this.styles=[LyraElement.styles,styles]}get normalizedSteps(){const valid=[];for(const step of Array.isArray(this.steps)?this.steps:[])try{if(step&&typeof step.label=="string"){const terminal=normalizeAgentTerminalStatus(step.status),status=terminal==="success"?"completed":terminal==="error"?"failed":terminal==="cancelled"?"incomplete":step.status;STATUSES.includes(status)||devWarnOnce("lr-research-progress:unknown-status",`<lr-research-progress>: unknown step status ${JSON.stringify(typeof step.status=="string"?step.status.slice(0,80):typeof step.status)}; rendering a neutral status.`),valid.push({...step,status:STATUSES.includes(status)?status:"unknown"})}}catch{}return firstByRetrievalIdentity(valid,step=>step.id)}renderStep(step){const sources=typeof step.sources=="number"&&Number.isFinite(step.sources)&&step.sources>=0?finiteCount(step.sources):void 0;return html`
|
|
2
2
|
<li part="step" data-step-id=${step.id} data-status=${step.status}>
|
|
3
3
|
<div part="step-copy">
|
|
4
4
|
<span part="step-label">${step.label}</span>
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import{__decorate}from"tslib";import{collectionSupport}from"../../../internal/collection-snapshot.js";import{html,nothing}from"lit";import{property}from"lit/decorators.js";import{nextId}from"../../../internal/a11y.js";import{getNumberFormat}from"../../../internal/intl-cache.js";import{isRovingTargetAvailable,resolveListMove}from"../../../internal/list-navigation.js";import{LyraElement}from"../../../internal/lyra-element.js";import{firstByRetrievalIdentity,isValidRetrievalChunk}from"../retrieval-identity.js";import{finiteCount,finiteRange}from"../../../internal/numbers.js";import{resolveHeadingLevel}from"../../../internal/heading-level.js";import"../../overlays/empty/empty.class.js";import{styles}from"./retrieval-compare.styles.js";import{retrievalSemanticLabel,retrievalSemanticRole}from"../retrieval-semantic-owner.js";import{LYRA_DEFAULT_retrievalCompareDenseScore,LYRA_DEFAULT_retrievalCompareEmpty,LYRA_DEFAULT_retrievalCompareFinalScore,LYRA_DEFAULT_retrievalCompareLabel,LYRA_DEFAULT_retrievalCompareOverlap,LYRA_DEFAULT_retrievalCompareRank,LYRA_DEFAULT_retrievalCompareRerankScore,LYRA_DEFAULT_retrievalCompareSparseScore,LYRA_DEFAULT_untitledSource}from"../../../internal/default-strings.generated.js";class LyraRetrievalCompare extends LyraElement{constructor(){super(...arguments),this.rovingChunkBySet=new Map,this.sets=[],this.topK=10,this.selectedChunkId="",this.headingLevel="3",this.size="m",this.frame="card",this.headingIdPrefix=nextId("retrieval-compare"),this.renderSet=(set,setIndex,chunks)=>{const headingId=`${this.headingIdPrefix}-set-${setIndex}`,level=resolveHeadingLevel(this.headingLevel),remembered=this.rovingChunkBySet.get(set.id),rovingChunkId=chunks.some(chunk=>chunk.id===remembered)?remembered:chunks[0]?.id;return html`
|
|
1
|
+
import{__decorate}from"tslib";import{collectionSupport}from"../../../internal/collection-snapshot.js";import{html,nothing}from"lit";import{property}from"lit/decorators.js";import{nextId}from"../../../internal/a11y.js";import{getNumberFormat}from"../../../internal/intl-cache.js";import{isRovingTargetAvailable,resolveListMove}from"../../../internal/list-navigation.js";import{LyraElement}from"../../../internal/lyra-element.js";import{firstByRetrievalIdentity,isValidRetrievalChunk}from"../retrieval-identity.js";import{finiteCount,finiteRange}from"../../../internal/numbers.js";import{resolveHeadingLevel}from"../../../internal/heading-level.js";import"../../overlays/empty/empty.class.js";import{styles}from"./retrieval-compare.styles.js";import{retrievalSemanticLabel,retrievalSemanticRole}from"../retrieval-semantic-owner.js";import{LYRA_DEFAULT_retrievalCompareDenseScore,LYRA_DEFAULT_retrievalCompareEmpty,LYRA_DEFAULT_retrievalCompareFinalScore,LYRA_DEFAULT_retrievalCompareLabel,LYRA_DEFAULT_retrievalCompareOverlap,LYRA_DEFAULT_retrievalCompareRank,LYRA_DEFAULT_retrievalCompareRerankScore,LYRA_DEFAULT_retrievalCompareSparseScore,LYRA_DEFAULT_untitledSource}from"../../../internal/default-strings/retrieval.generated.js";class LyraRetrievalCompare extends LyraElement{constructor(){super(...arguments),this.rovingChunkBySet=new Map,this.sets=[],this.topK=10,this.selectedChunkId="",this.headingLevel="3",this.size="m",this.frame="card",this.headingIdPrefix=nextId("retrieval-compare"),this.renderSet=(set,setIndex,chunks)=>{const headingId=`${this.headingIdPrefix}-set-${setIndex}`,level=resolveHeadingLevel(this.headingLevel),remembered=this.rovingChunkBySet.get(set.id),rovingChunkId=chunks.some(chunk=>chunk.id===remembered)?remembered:chunks[0]?.id;return html`
|
|
2
2
|
<section part="set" aria-labelledby=${headingId}>
|
|
3
3
|
<div part="set-heading" id=${headingId} role=${level?"heading":nothing} aria-level=${level??nothing}>${set.label}</div>
|
|
4
4
|
<ol part="chunks">
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import{__decorate}from"tslib";import{collectionSupport,writeNormalizedOwnedCollection}from"../../../internal/collection-snapshot.js";import{tag}from"../../../internal/prefix.js";import{html,nothing}from"lit";import{property,state}from"lit/decorators.js";import{guard}from"lit/directives/guard.js";import{LyraElement}from"../../../internal/lyra-element.js";import{firstByRetrievalIdentity,canonicalIdentityList,isValidRetrievalChunk}from"../retrieval-identity.js";import{finiteCount,finiteRange}from"../../../internal/numbers.js";import{styles}from"./retrieval-results.styles.js";import{retrievalSemanticLabel,retrievalSemanticRole}from"../retrieval-semantic-owner.js";import{renderRetrievalMetadata}from"../retrieval-metadata.js";import{deepActiveElementIn}from"../../../internal/active-element.js";import{acquireAnnouncementSink}from"../../../internal/announcer.js";import{announceAfterFirstPaint}from"../retrieval-announcements.js";import{getNumberFormat}from"../../../internal/intl-cache.js";import{LYRA_DEFAULT_chunkInspectorEmpty,LYRA_DEFAULT_chunkInspectorLabel,
|
|
1
|
+
import{__decorate}from"tslib";import{collectionSupport,writeNormalizedOwnedCollection}from"../../../internal/collection-snapshot.js";import{tag}from"../../../internal/prefix.js";import{html,nothing}from"lit";import{property,state}from"lit/decorators.js";import{guard}from"lit/directives/guard.js";import{LyraElement}from"../../../internal/lyra-element.js";import{firstByRetrievalIdentity,canonicalIdentityList,isValidRetrievalChunk}from"../retrieval-identity.js";import{finiteCount,finiteRange}from"../../../internal/numbers.js";import{styles}from"./retrieval-results.styles.js";import{retrievalSemanticLabel,retrievalSemanticRole}from"../retrieval-semantic-owner.js";import{renderRetrievalMetadata}from"../retrieval-metadata.js";import{deepActiveElementIn}from"../../../internal/active-element.js";import{acquireAnnouncementSink}from"../../../internal/announcer.js";import{announceAfterFirstPaint}from"../retrieval-announcements.js";import{getNumberFormat}from"../../../internal/intl-cache.js";import{LYRA_DEFAULT_chunkInspectorEmpty,LYRA_DEFAULT_chunkInspectorLabel,LYRA_DEFAULT_retrievalResultsSelectRowOrdinal,LYRA_DEFAULT_untitledSource,LYRA_DEFAULT_valueTruncated}from"../../../internal/default-strings/retrieval.generated.js";import{LYRA_DEFAULT_loadMore,LYRA_DEFAULT_valueInvalid}from"../../../internal/default-strings/shared.generated.js";function toLyraChunk(chunk){return{id:chunk.id,text:chunk.text,score:chunk.score,sourceId:chunk.source.id,title:chunk.source.name,anchor:chunk.locator,page:chunk.locator?.kind==="page"?chunk.locator.page:void 0}}function safeScore(score){return finiteRange(score,0,0,1)}class LyraRetrievalResults extends LyraElement{constructor(){super(...arguments),this.chunks=[],this.selectedChunkIds=[],this.withoutSelection=!1,this.withoutDedupe=!1,this.sort="score",this.grouping="none",this.presentation="expanded",this.thresholds={high:.75,medium:.5},this.virtualizeAt=50,this.activeChunkId="",this.loading=!1,this.hasMore=!1,this.errorText="",this.announce=!1,this.expandedChunkIds=[],this.previousProcessedChunkIds=[],this.focusRestoreGeneration=0,this.isMounting=!0,this.initialStateAnnounced=!1,this.connectionGeneration=0,this.retrievalChunkKey=item=>item.id,this.wasEmptyPresented=!1,this.processedGroupingLocaleSignature="",this.stopOwnedEvent=event=>{event.stopPropagation()},this.stopRowToggle=event=>{event.stopPropagation()},this.onChunkToggle=event=>{event.stopPropagation();const{chunkId,expanded}=event.detail,rest=this.expandedChunkIds.filter(id=>id!==chunkId);this.expandedChunkIds=expanded?[...rest,chunkId]:rest},this.rowChunks=new WeakMap,this.renderRow=(item,index,total)=>{const chunk=item,selected=this.selectedChunkIds.includes(chunk.id),rowLabel=chunk.source.name||this.localize("untitledSource");return html`
|
|
2
2
|
${this.withoutSelection?nothing:html`<lr-checkbox
|
|
3
3
|
part="select"
|
|
4
4
|
data-chunk-id=${chunk.id}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import{__decorate}from"tslib";import{collectionSupport}from"../../../internal/collection-snapshot.js";import{tag}from"../../../internal/prefix.js";import{html,nothing}from"lit";import{property}from"lit/decorators.js";import{LyraElement}from"../../../internal/lyra-element.js";import"../../forms/input/input.class.js";import"../../layout/segmented/segmented.class.js";import"../../overlays/chip/chip.class.js";import"../../overlays/chip/chip-group.class.js";import"../../overlays/spinner/spinner.class.js";import"../../overlays/empty/empty.class.js";import{styles}from"./retrieval-search.styles.js";import{contextualSizes}from"../../../internal/contextual-vocabulary.styles.js";import{normalizeReflectedOptionalSize,optionalSizeConverter}from"../../../internal/variants.js";import{retrievalSemanticLabel,retrievalSemanticRole}from"../retrieval-semantic-owner.js";import{formatBoundedRetrievalValue}from"../retrieval-value-format.js";import{acquireAnnouncementSink}from"../../../internal/announcer.js";import{announceAfterFirstPaint}from"../retrieval-announcements.js";import{literalSetConverter}from"../../../internal/converters.js";import{shadowFocusTarget}from"../../../internal/active-element.js";import{canonicalIdentityList,isRecord}from"../retrieval-identity.js";import{
|
|
1
|
+
import{__decorate}from"tslib";import{collectionSupport}from"../../../internal/collection-snapshot.js";import{tag}from"../../../internal/prefix.js";import{html,nothing}from"lit";import{property}from"lit/decorators.js";import{LyraElement}from"../../../internal/lyra-element.js";import"../../forms/input/input.class.js";import"../../layout/segmented/segmented.class.js";import"../../overlays/chip/chip.class.js";import"../../overlays/chip/chip-group.class.js";import"../../overlays/spinner/spinner.class.js";import"../../overlays/empty/empty.class.js";import{styles}from"./retrieval-search.styles.js";import{contextualSizes}from"../../../internal/contextual-vocabulary.styles.js";import{normalizeReflectedOptionalSize,optionalSizeConverter}from"../../../internal/variants.js";import{retrievalSemanticLabel,retrievalSemanticRole}from"../retrieval-semantic-owner.js";import{formatBoundedRetrievalValue}from"../retrieval-value-format.js";import{acquireAnnouncementSink}from"../../../internal/announcer.js";import{announceAfterFirstPaint}from"../retrieval-announcements.js";import{literalSetConverter}from"../../../internal/converters.js";import{shadowFocusTarget}from"../../../internal/active-element.js";import{canonicalIdentityList,isRecord}from"../retrieval-identity.js";import{LYRA_DEFAULT_retrievalFilterChipLabel,LYRA_DEFAULT_retrievalFiltersLabel,LYRA_DEFAULT_retrievalModeHybrid,LYRA_DEFAULT_retrievalModeKeyword,LYRA_DEFAULT_retrievalModeLabel,LYRA_DEFAULT_retrievalModeVector,LYRA_DEFAULT_retrievalSearchEmptyDescription,LYRA_DEFAULT_retrievalSearchLabel}from"../../../internal/default-strings/retrieval.generated.js";import{LYRA_DEFAULT_cancel,LYRA_DEFAULT_fieldRequired,LYRA_DEFAULT_noMatches,LYRA_DEFAULT_search,LYRA_DEFAULT_valueInvalid}from"../../../internal/default-strings/shared.generated.js";const RETRIEVAL_MODE=literalSetConverter(["vector","keyword","hybrid"],"hybrid");class LyraRetrievalSearch extends LyraElement{constructor(){super(...arguments),this.query="",this._mode="hybrid",this.filters={},this.scope=[],this.loading=!1,this.errorText="",this.empty=!1,this.announce=!1,this.accessibleLabel=null,this.isMounting=!0,this.initialStateAnnounced=!1,this.connectionGeneration=0,this.wasEmptyPresented=!1,this.chipFocusGeneration=0,this.onQueryInput=e=>{e.stopPropagation(),this.query=e.detail.value,this.emit("lr-input",{value:this.query})},this.onQueryKeyDown=e=>{e.key==="Enter"&&(e.isComposing||e.keyCode===229||(e.preventDefault(),this.submit()))},this.onModeChange=e=>{e.stopPropagation(),this.mode=e.detail.value,this.emit("lr-mode-change",{mode:this.mode})},this.stopOwnedEvent=e=>{e.stopPropagation()},this.onSubmitClick=()=>{if(this.loading){this.cancel();return}this.submit()}}static{this.defaultStrings={...super.defaultStrings,cancel:LYRA_DEFAULT_cancel,fieldRequired:LYRA_DEFAULT_fieldRequired,noMatches:LYRA_DEFAULT_noMatches,retrievalFilterChipLabel:LYRA_DEFAULT_retrievalFilterChipLabel,retrievalFiltersLabel:LYRA_DEFAULT_retrievalFiltersLabel,retrievalModeHybrid:LYRA_DEFAULT_retrievalModeHybrid,retrievalModeKeyword:LYRA_DEFAULT_retrievalModeKeyword,retrievalModeLabel:LYRA_DEFAULT_retrievalModeLabel,retrievalModeVector:LYRA_DEFAULT_retrievalModeVector,retrievalSearchEmptyDescription:LYRA_DEFAULT_retrievalSearchEmptyDescription,retrievalSearchLabel:LYRA_DEFAULT_retrievalSearchLabel,search:LYRA_DEFAULT_search,valueInvalid:LYRA_DEFAULT_valueInvalid}}static{this.collectionSupport=collectionSupport}static{this.ownedCollectionProperties=Object.freeze(["filters","scope"])}static{this.styles=[LyraElement.styles,contextualSizes,styles]}static{this.immutableEventDetails=Object.freeze(["lr-search","lr-filters-change"])}get size(){return this._size}set size(next){const normalized=normalizeReflectedOptionalSize(this,next),old=this._size;old!==normalized&&(this._size=normalized,this.requestUpdate("size",old))}get mode(){return this._mode}set mode(next){const normalized=RETRIEVAL_MODE.normalize(next),old=this._mode;old!==normalized&&(this._mode=normalized,this.requestUpdate("mode",old))}connectedCallback(){super.connectedCallback(),this.errorAnnouncementSink??=acquireAnnouncementSink("assertive",{document:this.ownerDocument,source:this}),this.emptyAnnouncementSink??=acquireAnnouncementSink("polite",{document:this.ownerDocument,source:this});const generation=++this.connectionGeneration;announceAfterFirstPaint(this,()=>generation===this.connectionGeneration,()=>{!this.announce||this.initialStateAnnounced||(this.initialStateAnnounced=!0,this.announcePresentedState())})}disconnectedCallback(){this.isMounting=!0,this.connectionGeneration+=1,this.errorAnnouncementSink?.release(),this.errorAnnouncementSink=void 0,this.emptyAnnouncementSink?.release(),this.emptyAnnouncementSink=void 0,this.wasEmptyPresented=!1,super.disconnectedCallback()}updated(changed){super.updated(changed);const wasMounting=this.isMounting;this.isMounting=!1,!wasMounting&&changed.has("errorText")&&this.errorText!==""&&this.isConnected&&(this.initialStateAnnounced=!0,this.errorAnnouncementSink?.announce(this.errorText));const emptyPresented=this.empty&&!this.loading&&this.errorText==="";!wasMounting&&!this.wasEmptyPresented&&emptyPresented&&this.isConnected&&(this.initialStateAnnounced=!0,this.emptyAnnouncementSink?.announce(this.localize("noMatches"))),this.wasEmptyPresented=emptyPresented}announcePresentedState(){if(this.errorText!==""){this.errorAnnouncementSink?.announce(this.errorText);return}this.empty&&!this.loading&&this.emptyAnnouncementSink?.announce(this.localize("noMatches"))}modeItems(){return[{value:"vector",label:this.localize("retrievalModeVector")},{value:"keyword",label:this.localize("retrievalModeKeyword")},{value:"hybrid",label:this.localize("retrievalModeHybrid")}]}formatFilterValue(value){return formatBoundedRetrievalValue(value,{locale:this.effectiveLocale,invalid:this.localize("valueInvalid"),truncated:"…"})}get normalizedFilters(){return isRecord(this.filters)?this.filters:{}}get normalizedScope(){return canonicalIdentityList(this.scope)}buildQuery(){return{text:this.query,mode:this.mode,filters:{...this.normalizedFilters},scope:[...this.normalizedScope]}}submit(){this.loading&&this.emit("lr-cancel",{reason:"superseded"}),this.emit("lr-search",this.buildQuery())}cancel(){this.emit("lr-cancel",{})}emitFiltersChange(){this.emit("lr-filters-change",{filters:{...this.normalizedFilters},scope:[...this.normalizedScope]})}repairFocusAfterChipRemoval(index,shouldRepair){const generation=++this.chipFocusGeneration;shouldRepair&&this.updateComplete.then(()=>{if(!this.isConnected||generation!==this.chipFocusGeneration)return;const chips=this.renderRoot.querySelectorAll(`[part="filters"] ${tag("chip")}`),target=chips[Math.min(index,chips.length-1)];if(target){target.focus();return}this.renderRoot.querySelector('[part="query"]')?.focus()})}removeScope(value,shouldRepairFocus=!1){const scope=this.normalizedScope,index=scope.indexOf(value);this.scope=scope.filter(s=>s!==value),this.emitFiltersChange(),this.repairFocusAfterChipRemoval(Math.max(0,index),shouldRepairFocus)}removeFilter(key,shouldRepairFocus=!1){const filters=this.normalizedFilters,index=this.normalizedScope.length+Object.keys(filters).indexOf(key),next={...filters};delete next[key],this.filters=next,this.emitFiltersChange(),this.repairFocusAfterChipRemoval(Math.max(0,index),shouldRepairFocus)}render(){const label=retrievalSemanticLabel(this,this.accessibleLabel??(this.label==null?this.localize("retrievalSearchLabel"):this.label)),searchRole=retrievalSemanticRole(this,"search"),filters=this.normalizedFilters,scope=this.normalizedScope,hasFilters=Object.keys(filters).length>0||scope.length>0;return html`
|
|
2
2
|
<div
|
|
3
3
|
part="base"
|
|
4
4
|
role=${searchRole??nothing}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import{__decorate}from"tslib";import{collectionSupport}from"../../../internal/collection-snapshot.js";import{html,nothing}from"lit";import{property,state}from"lit/decorators.js";import{guard}from"lit/directives/guard.js";import{LyraElement}from"../../../internal/lyra-element.js";import{devWarnOnce}from"../../../internal/dev-warning.js";import{nextId}from"../../../internal/a11y.js";import{chevronIcon}from"../../../internal/icons.js";import"../../agent-tools/span-waterfall/span-waterfall.class.js";import"../chunk-inspector/chunk-inspector.class.js";import"../../overlays/empty/empty.class.js";import{firstByRetrievalIdentity,isValidRetrievalChunk}from"../retrieval-identity.js";import{hasRetrievalMetadata,renderRetrievalMetadata}from"../retrieval-metadata.js";import{styles}from"./retrieval-trace.styles.js";import{LYRA_DEFAULT_collapse,LYRA_DEFAULT_copy,LYRA_DEFAULT_details,LYRA_DEFAULT_durationMilliseconds,LYRA_DEFAULT_durationSeconds,LYRA_DEFAULT_expand,LYRA_DEFAULT_loading,LYRA_DEFAULT_map,LYRA_DEFAULT_navigation,LYRA_DEFAULT_open,
|
|
1
|
+
import{__decorate}from"tslib";import{collectionSupport}from"../../../internal/collection-snapshot.js";import{html,nothing}from"lit";import{property,state}from"lit/decorators.js";import{guard}from"lit/directives/guard.js";import{LyraElement}from"../../../internal/lyra-element.js";import{devWarnOnce}from"../../../internal/dev-warning.js";import{nextId}from"../../../internal/a11y.js";import{chevronIcon}from"../../../internal/icons.js";import"../../agent-tools/span-waterfall/span-waterfall.class.js";import"../chunk-inspector/chunk-inspector.class.js";import"../../overlays/empty/empty.class.js";import{firstByRetrievalIdentity,isValidRetrievalChunk}from"../retrieval-identity.js";import{hasRetrievalMetadata,renderRetrievalMetadata}from"../retrieval-metadata.js";import{styles}from"./retrieval-trace.styles.js";import{LYRA_DEFAULT_retrievalStageEmbed,LYRA_DEFAULT_retrievalStageFilter,LYRA_DEFAULT_retrievalStageKindUnknown,LYRA_DEFAULT_retrievalStageQueryRewrite,LYRA_DEFAULT_retrievalStageRerank,LYRA_DEFAULT_retrievalStageRetrieve,LYRA_DEFAULT_retrievalTraceEmpty,LYRA_DEFAULT_retrievalTraceEvidenceToggle,LYRA_DEFAULT_valueTruncated}from"../../../internal/default-strings/retrieval.generated.js";import{LYRA_DEFAULT_collapse,LYRA_DEFAULT_copy,LYRA_DEFAULT_date,LYRA_DEFAULT_details,LYRA_DEFAULT_durationMilliseconds,LYRA_DEFAULT_durationSeconds,LYRA_DEFAULT_expand,LYRA_DEFAULT_loading,LYRA_DEFAULT_map,LYRA_DEFAULT_navigation,LYRA_DEFAULT_open,LYRA_DEFAULT_search,LYRA_DEFAULT_select,LYRA_DEFAULT_tokensIn,LYRA_DEFAULT_tokensOut,LYRA_DEFAULT_valueInvalid}from"../../../internal/default-strings/shared.generated.js";const STAGE_SPAN_KIND={"query-rewrite":"llm",embed:"embedding",retrieve:"retriever",rerank:"tool",filter:"tool"},STAGE_LABEL={"query-rewrite":{key:"retrievalStageQueryRewrite"},embed:{key:"retrievalStageEmbed"},retrieve:{key:"retrievalStageRetrieve"},rerank:{key:"retrievalStageRerank"},filter:{key:"retrievalStageFilter"}};function validChunks(evidence){return Array.isArray(evidence?.chunks)?evidence.chunks.filter(isValidRetrievalChunk):[]}function toLyraChunk(chunk){return{id:chunk.id,text:chunk.text,score:chunk.score,sourceId:chunk.source.id,title:chunk.source.name,...chunk.locator?{anchor:chunk.locator}:{},...chunk.locator?.kind==="page"?{page:chunk.locator.page}:{}}}class LyraRetrievalTrace extends LyraElement{constructor(){super(...arguments),this.stages=[],this.activeStageId=null,this.size="m",this.frame="card",this.expandedStageIds=new Set,this.evidenceDomIdPrefix=nextId("retrieval-trace-evidence"),this.stageChunkRows=new WeakMap,this.onStageSelect=e=>{e.stopPropagation();const{spanId:stageId}=e.detail;this.emit("lr-stage-select",{stageId});const stage=this.normalizedStages.find(s=>s.id===stageId);if(stage&&this.hasEvidence(stage.evidence)&&!this.expandedStageIds.has(stageId)){const next=new Set(this.expandedStageIds);next.add(stageId),this.expandedStageIds=next,this.emit("lr-stage-toggle",{stageId,expanded:!0}),this.emit("lr-toggle",{itemId:stageId,expanded:!0})}}}static{this.defaultStrings={...super.defaultStrings,collapse:LYRA_DEFAULT_collapse,copy:LYRA_DEFAULT_copy,date:LYRA_DEFAULT_date,details:LYRA_DEFAULT_details,durationMilliseconds:LYRA_DEFAULT_durationMilliseconds,durationSeconds:LYRA_DEFAULT_durationSeconds,expand:LYRA_DEFAULT_expand,loading:LYRA_DEFAULT_loading,map:LYRA_DEFAULT_map,navigation:LYRA_DEFAULT_navigation,open:LYRA_DEFAULT_open,retrievalStageEmbed:LYRA_DEFAULT_retrievalStageEmbed,retrievalStageFilter:LYRA_DEFAULT_retrievalStageFilter,retrievalStageKindUnknown:LYRA_DEFAULT_retrievalStageKindUnknown,retrievalStageQueryRewrite:LYRA_DEFAULT_retrievalStageQueryRewrite,retrievalStageRerank:LYRA_DEFAULT_retrievalStageRerank,retrievalStageRetrieve:LYRA_DEFAULT_retrievalStageRetrieve,retrievalTraceEmpty:LYRA_DEFAULT_retrievalTraceEmpty,retrievalTraceEvidenceToggle:LYRA_DEFAULT_retrievalTraceEvidenceToggle,search:LYRA_DEFAULT_search,select:LYRA_DEFAULT_select,tokensIn:LYRA_DEFAULT_tokensIn,tokensOut:LYRA_DEFAULT_tokensOut,valueInvalid:LYRA_DEFAULT_valueInvalid,valueTruncated:LYRA_DEFAULT_valueTruncated}}static{this.collectionSupport=collectionSupport}static{this.ownedCollectionProperties=Object.freeze(["stages"])}static{this.styles=[LyraElement.styles,styles]}static{this.immutableEventDetails=Object.freeze(["lr-stage-chunk-action"])}get normalizedStages(){return this.normalizedStagesCache?.source!==this.stages&&(this.normalizedStagesCache={source:this.stages,value:firstByRetrievalIdentity(Array.isArray(this.stages)?this.stages:[],stage=>stage.id)}),this.normalizedStagesCache.value}stageChunks(evidence){let rows=this.stageChunkRows.get(evidence);return rows||this.stageChunkRows.set(evidence,rows=validChunks(evidence).map(toLyraChunk)),rows}hasEvidence(evidence){return typeof evidence=="object"&&evidence!==null&&(!!evidence.text||this.stageChunks(evidence).length>0||hasRetrievalMetadata(evidence.metadata))}stageLabel(stage){if(typeof stage.label=="string"&&stage.label)return stage.label;const entry=typeof stage.kind=="string"?STAGE_LABEL[stage.kind]:void 0;return entry||devWarnOnce("lr-retrieval-trace:unknown-kind",`<lr-retrieval-trace>: unknown stage kind ${JSON.stringify(typeof stage.kind=="string"?stage.kind.slice(0,80):typeof stage.kind)}; rendering a localized unknown label.`),entry?this.localize(entry.key):this.localize("retrievalStageKindUnknown")}toSpans(stages,names){return stages.map((stage,index)=>({id:stage.id,name:names[index],kind:typeof stage.kind=="string"?STAGE_SPAN_KIND[stage.kind]??"tool":"tool",startMs:stage.startMs,endMs:stage.endMs,status:stage.status,detail:stage.detail}))}toggleEvidence(stageId){const expanded=!this.expandedStageIds.has(stageId),next=new Set(this.expandedStageIds);expanded?next.add(stageId):next.delete(stageId),this.expandedStageIds=next,this.emit("lr-stage-toggle",{stageId,expanded}),this.emit("lr-toggle",{itemId:stageId,expanded})}willUpdate(changed){if(super.willUpdate(changed),changed.has("stages")){const ids=new Set(this.normalizedStages.map(s=>s.id));let pruned=null;for(const id of this.expandedStageIds)ids.has(id)||(pruned??=new Set(this.expandedStageIds),pruned.delete(id));pruned&&(this.expandedStageIds=pruned)}}renderEvidenceBody(stage){const evidence=stage.evidence,chunks=this.stageChunks(evidence);return html`
|
|
2
2
|
${evidence.text?html`<p part="evidence-text">${evidence.text}</p>`:nothing}
|
|
3
3
|
${chunks.length>0?html`<lr-chunk-inspector
|
|
4
4
|
part="chunk-inspector"
|