@aceshooting/lyra-ui 14.3.1 → 15.0.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 +127 -0
- package/custom-elements.json +1 -1
- package/design-tokens.json +1 -1
- package/dist/cli/migration-contract.json +1 -1
- package/dist/components/agent-tools/activity-feed/activity-feed.class.d.ts +4 -0
- package/dist/components/agent-tools/activity-feed/activity-feed.class.js +3 -3
- package/dist/components/agent-tools/approval-queue/approval-queue.class.js +3 -2
- package/dist/components/agent-tools/artifact-panel/artifact-panel.styles.js +1 -1
- package/dist/components/agent-tools/commit-card/commit-card.styles.js +1 -1
- package/dist/components/agent-tools/compare-panel/compare-panel.styles.js +1 -1
- package/dist/components/agent-tools/confirm-bar/confirm-bar.class.js +8 -3
- package/dist/components/agent-tools/eval-dataset/eval-dataset.class.d.ts +3 -1
- package/dist/components/agent-tools/eval-dataset/eval-dataset.class.js +10 -1
- package/dist/components/agent-tools/eval-dataset/eval-dataset.styles.js +1 -1
- package/dist/components/agent-tools/span-waterfall/span-waterfall.class.js +1 -1
- package/dist/components/agent-tools/subagent-panel/subagent-panel.class.d.ts +19 -1
- package/dist/components/agent-tools/subagent-panel/subagent-panel.class.js +4 -4
- package/dist/components/agent-tools/subagent-panel/subagent-panel.styles.js +1 -1
- package/dist/components/agent-tools/task-list/task-list.class.d.ts +5 -0
- package/dist/components/agent-tools/task-list/task-list.class.js +3 -3
- package/dist/components/agent-tools/terminal/terminal.class.d.ts +1 -1
- package/dist/components/agent-tools/terminal/terminal.styles.js +1 -1
- package/dist/components/agent-tools/test-results/test-results.class.js +1 -1
- package/dist/components/agent-tools/tool-param-form/tool-param-form.class.d.ts +10 -7
- package/dist/components/agent-tools/tool-param-form/tool-param-form.class.js +15 -14
- package/dist/components/agent-tools/tool-param-form/tool-param-form.d.ts +1 -1
- package/dist/components/agent-tools/tool-param-form/tool-param-form.js +1 -1
- package/dist/components/agent-tools/tool-param-form/tool-param-form.styles.js +1 -1
- package/dist/components/agent-tools/tool-result-dialog/tool-result-dialog.class.d.ts +5 -2
- package/dist/components/agent-tools/tool-result-dialog/tool-result-dialog.class.js +1 -1
- package/dist/components/agent-tools/tool-select-dialog/tool-select-dialog.class.d.ts +3 -1
- package/dist/components/agent-tools/tool-select-dialog/tool-select-dialog.class.js +9 -1
- package/dist/components/agent-tools/tool-select-dialog/tool-select-dialog.styles.js +1 -1
- package/dist/components/charts/chart/box-plot.class.d.ts +64 -4
- package/dist/components/charts/chart/box-plot.class.js +5 -5
- package/dist/components/charts/chart/chart-colors.d.ts +10 -0
- package/dist/components/charts/chart/chart-colors.js +1 -1
- package/dist/components/charts/chart/chart.class.d.ts +35 -10
- package/dist/components/charts/chart/chart.class.js +4 -4
- package/dist/components/charts/chart/lite-chart.class.d.ts +10 -2
- package/dist/components/charts/chart/lite-chart.styles.js +1 -1
- package/dist/components/conversation/markdown/markdown.class.d.ts +9 -1
- package/dist/components/conversation/markdown/markdown.class.js +1 -1
- package/dist/components/conversation/message-parts/message-parts.class.d.ts +18 -1
- package/dist/components/conversation/message-parts/message-parts.class.js +4 -4
- package/dist/components/conversation/model-select/model-select.class.d.ts +6 -2
- package/dist/components/conversation/model-select/model-select.class.js +3 -3
- package/dist/components/conversation/prompt-input/prompt-input.styles.js +1 -1
- package/dist/components/conversation/selection-toolbar/selection-toolbar.class.d.ts +5 -1
- package/dist/components/conversation/selection-toolbar/selection-toolbar.class.js +1 -1
- package/dist/components/data/calendar/calendar.class.js +2 -2
- package/dist/components/data/context-meter/context-meter.styles.js +1 -1
- package/dist/components/data/data-grid/data-grid-types.d.ts +8 -2
- package/dist/components/data/data-grid/data-grid.class.d.ts +16 -3
- package/dist/components/data/data-grid/data-grid.class.js +3 -2
- package/dist/components/data/env-list/env-list.styles.js +1 -1
- package/dist/components/data/flow-canvas/flow-canvas.class.d.ts +22 -2
- package/dist/components/data/flow-canvas/flow-canvas.class.js +1 -1
- package/dist/components/data/flow-minimap/flow-minimap.class.d.ts +12 -4
- package/dist/components/data/flow-minimap/flow-minimap.class.js +2 -2
- package/dist/components/data/flow-minimap/flow-minimap.styles.js +1 -1
- package/dist/components/data/graph-query-builder/graph-query-builder.class.d.ts +5 -1
- package/dist/components/data/graph-query-builder/graph-query-builder.class.js +1 -1
- package/dist/components/data/heatmap/heatmap.class.d.ts +12 -1
- package/dist/components/data/heatmap/heatmap.class.js +3 -3
- package/dist/components/data/heatmap/heatmap.styles.js +1 -1
- package/dist/components/forms/code-editor/code-editor.class.js +1 -1
- package/dist/components/forms/combobox/combobox.class.js +1 -1
- package/dist/components/forms/combobox/combobox.styles.js +1 -1
- package/dist/components/forms/date-picker/date-input.class.js +1 -1
- package/dist/components/forms/date-picker/date-picker.class.d.ts +12 -1
- package/dist/components/forms/date-picker/date-picker.class.js +1 -1
- package/dist/components/forms/icon-button/icon-button.class.d.ts +27 -5
- package/dist/components/forms/icon-button/icon-button.class.js +7 -3
- package/dist/components/forms/input/input.styles.js +1 -1
- package/dist/components/forms/input/time-input.class.d.ts +13 -2
- package/dist/components/forms/input/time-input.class.js +1 -1
- package/dist/components/forms/otp-input/otp-input.class.d.ts +8 -1
- package/dist/components/forms/otp-input/otp-input.class.js +1 -1
- package/dist/components/forms/rubric-form/rubric-form.class.d.ts +1 -1
- package/dist/components/forms/rubric-form/rubric-form.class.js +1 -1
- package/dist/components/forms/select/select.class.d.ts +1 -1
- package/dist/components/forms/select/select.class.js +1 -1
- package/dist/components/forms/slider/slider.class.d.ts +4 -1
- package/dist/components/forms/slider/slider.class.js +1 -1
- package/dist/components/forms/textarea/textarea.class.d.ts +9 -4
- 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/layout/app-rail/app-rail.class.d.ts +7 -2
- package/dist/components/layout/app-rail/app-rail.class.js +1 -1
- package/dist/components/layout/card/card.class.js +2 -2
- package/dist/components/layout/card/card.styles.js +1 -1
- package/dist/components/layout/control-group/control-group.class.js +1 -1
- package/dist/components/layout/dashboard-grid/dashboard-grid.styles.js +1 -1
- package/dist/components/layout/details/details.styles.js +1 -1
- package/dist/components/layout/filter-bar/filter-bar.class.d.ts +13 -3
- package/dist/components/layout/filter-bar/filter-bar.class.js +1 -1
- package/dist/components/layout/menu/dropdown-item.class.d.ts +2 -0
- package/dist/components/layout/menu/menu-item.class.d.ts +28 -1
- package/dist/components/layout/menu/menu-item.class.js +45 -35
- package/dist/components/layout/menu/menu-item.styles.js +1 -1
- package/dist/components/layout/menu/menu.class.js +1 -1
- package/dist/components/layout/multi-split/multi-split.class.d.ts +12 -2
- package/dist/components/layout/multi-split/multi-split.class.js +1 -1
- package/dist/components/layout/page/page.class.js +2 -1
- package/dist/components/layout/page/page.styles.js +1 -1
- package/dist/components/layout/responsive-panel/responsive-panel.class.d.ts +6 -4
- package/dist/components/layout/responsive-panel/responsive-panel.class.js +2 -2
- package/dist/components/layout/responsive-panel/responsive-panel.styles.js +1 -1
- package/dist/components/layout/stepper/stepper.class.js +2 -2
- package/dist/components/layout/tab-group/tab-group.class.js +1 -1
- package/dist/components/layout/virtual-list/virtual-list.class.js +2 -2
- package/dist/components/layout/widget/widget.class.d.ts +12 -2
- package/dist/components/layout/widget/widget.class.js +2 -2
- package/dist/components/media/attachment-trigger/attachment-trigger.class.d.ts +1 -1
- package/dist/components/media/attachment-trigger/attachment-trigger.class.js +3 -3
- package/dist/components/media/file-icon/file-icon.class.d.ts +3 -1
- package/dist/components/media/file-icon/file-icon.class.js +1 -1
- package/dist/components/media/file-input/file-input.class.d.ts +1 -1
- package/dist/components/media/file-input/file-input.class.js +1 -1
- package/dist/components/media/flag/flag.styles.js +1 -1
- package/dist/components/media/image-comparer/image-comparer.class.d.ts +5 -5
- package/dist/components/media/image-comparer/image-comparer.class.js +1 -1
- package/dist/components/media/image-comparer/image-comparer.styles.js +1 -1
- package/dist/components/media/lightbox/lightbox.styles.js +1 -1
- package/dist/components/media/map/map.styles.js +1 -1
- package/dist/components/media/sequence-playback/sequence-playback.class.js +1 -1
- package/dist/components/media/video-playlist/video-playlist.class.js +1 -1
- package/dist/components/media/video-playlist/video-playlist.styles.js +1 -1
- package/dist/components/overlays/alert/alert.class.d.ts +6 -0
- package/dist/components/overlays/alert/alert.styles.js +1 -1
- package/dist/components/overlays/badge/tag.class.js +1 -1
- package/dist/components/overlays/chip/chip.class.js +1 -1
- package/dist/components/overlays/empty/empty.class.js +2 -2
- package/dist/components/overlays/kbd/kbd.styles.js +1 -1
- package/dist/components/overlays/progress/progress-ring.class.d.ts +4 -1
- package/dist/components/overlays/progress/progress.styles.js +1 -1
- package/dist/components/overlays/toast/toast.styles.js +1 -1
- package/dist/components/retrieval/graph/graph-canvas.js +1 -1
- package/dist/components/retrieval/graph/graph.class.d.ts +10 -3
- package/dist/components/retrieval/graph/graph.class.js +1 -1
- package/dist/components/retrieval/graph/graph.styles.js +1 -1
- package/dist/components/retrieval/ingestion-queue/ingestion-queue.class.d.ts +1 -1
- package/dist/components/retrieval/ingestion-queue/ingestion-queue.class.js +6 -6
- package/dist/components/retrieval/knowledge-base-admin/knowledge-base-admin.class.js +2 -2
- package/dist/components/retrieval/mind-map/mind-map.styles.js +1 -1
- package/dist/components/retrieval/neighbor-list/neighbor-list.class.d.ts +3 -3
- package/dist/components/retrieval/neighbor-list/neighbor-list.class.js +3 -3
- package/dist/components/retrieval/node-palette/node-palette.class.d.ts +7 -1
- package/dist/components/retrieval/node-palette/node-palette.class.js +23 -13
- package/dist/components/retrieval/node-palette/node-palette.styles.js +1 -1
- package/dist/components/retrieval/rag-eval-dashboard/rag-eval-dashboard.class.d.ts +4 -1
- package/dist/components/retrieval/rag-eval-dashboard/rag-eval-dashboard.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 +4 -3
- package/dist/components/retrieval/retrieval-trace/retrieval-trace.class.js +1 -1
- package/dist/components/retrieval/source-list/source-list.class.d.ts +7 -1
- package/dist/components/retrieval/source-list/source-list.class.js +1 -1
- package/dist/components/utility/export-button/export-button.class.d.ts +14 -2
- package/dist/components/utility/export-button/export-button.class.js +3 -3
- package/dist/components/utility/export-button/export-button.styles.js +1 -1
- package/dist/components/utility/json-viewer/json-viewer.styles.js +1 -1
- package/dist/components/utility/known-date/known-date.class.js +1 -1
- package/dist/components/utility/mention-popover/mention-popover.class.d.ts +4 -2
- package/dist/components/utility/mention-popover/mention-popover.class.js +1 -1
- package/dist/components/viewers/csv-viewer/csv-viewer.class.d.ts +9 -1
- package/dist/components/viewers/csv-viewer/csv-viewer.class.js +4 -4
- package/dist/components/viewers/dataset-viewer/dataset-viewer.class.d.ts +1 -1
- package/dist/components/viewers/dataset-viewer/dataset-viewer.class.js +4 -4
- package/dist/components/viewers/document-compare/document-compare.class.d.ts +5 -0
- package/dist/components/viewers/document-compare/document-compare.class.js +9 -4
- package/dist/components/viewers/document-compare/document-compare.styles.js +1 -1
- package/dist/components/viewers/document-preview/document-preview.class.d.ts +9 -1
- package/dist/components/viewers/document-preview/document-preview.class.js +2 -1
- package/dist/components/viewers/notebook-viewer/notebook-viewer.class.d.ts +5 -0
- package/dist/components/viewers/notebook-viewer/notebook-viewer.class.js +1 -1
- package/dist/components/viewers/pdf-viewer/pdf-viewer.class.d.ts +5 -0
- package/dist/components/viewers/spreadsheet-viewer/spreadsheet-viewer.class.d.ts +1 -1
- package/dist/components/viewers/spreadsheet-viewer/spreadsheet-viewer.class.js +3 -3
- package/dist/components/viewers/xml-viewer/xml-viewer.styles.js +1 -1
- package/dist/custom-elements-jsx.d.ts +1 -1
- package/dist/events.d.ts +5 -4
- package/dist/internal/accessibility-visibility.d.ts +13 -2
- package/dist/internal/accessibility-visibility.js +1 -1
- package/dist/internal/package-metadata.d.ts +1 -1
- package/dist/internal/package-metadata.js +1 -1
- package/dist/lyra.d.ts +1 -1
- package/dist/svelte.d.ts +1 -1
- package/dist/vue.d.ts +1 -1
- package/llms/components/lr-alert.md +11 -3
- package/llms/components/lr-box-plot.md +21 -4
- package/llms/components/lr-chart.md +13 -4
- package/llms/components/lr-code-block.md +5 -4
- package/llms/components/lr-data-grid.md +24 -10
- package/llms/components/lr-document-compare.md +5 -0
- package/llms/components/lr-dropdown-item.md +31 -0
- package/llms/components/lr-eval-dataset.md +5 -4
- package/llms/components/lr-export-button.md +10 -5
- package/llms/components/lr-filter-bar.md +4 -1
- package/llms/components/lr-flow-minimap.md +7 -1
- package/llms/components/lr-icon-button.md +6 -1
- package/llms/components/lr-lite-chart.md +2 -1
- package/llms/components/lr-markdown.md +2 -2
- package/llms/components/lr-menu-item.md +31 -0
- package/llms/components/lr-menu.md +31 -0
- package/llms/components/lr-message-parts.md +7 -0
- package/llms/components/lr-model-settings-panel.md +4 -1
- package/llms/components/lr-node-palette.md +5 -4
- package/llms/components/lr-pdf-viewer.md +7 -0
- package/llms/components/lr-responsive-panel.md +2 -2
- package/llms/components/lr-subagent-panel.md +17 -2
- package/llms/components/lr-thinking-panel.md +4 -0
- package/llms/components/lr-timeline-item.md +1 -1
- package/llms/components/lr-timeline.md +1 -1
- package/llms/components/lr-tool-select-dialog.md +4 -3
- package/llms/components/lr-virtual-list.md +11 -11
- package/llms-full.txt +212 -59
- package/package.json +3 -3
- package/vscode-css-data.json +1 -1
- package/vscode-html-data.json +1 -1
- package/web-types.json +1 -1
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
var __decorate=function(decorators,target,key,desc){var c=arguments.length,r=c<3?target:desc===null?desc=Object.getOwnPropertyDescriptor(target,key):desc,d;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")r=Reflect.decorate(decorators,target,key,desc);else for(var i=decorators.length-1;i>=0;i--)(d=decorators[i])&&(r=(c<3?d(r):c>3?d(target,key,r):d(target,key))||r);return c>3&&r&&Object.defineProperty(target,key,r),r};import{html,nothing,svg}from"lit";import{property,state}from"lit/decorators.js";import{repeat}from"lit/directives/repeat.js";import{LyraElement}from"../../../internal/lyra-element.js";import{firstByRetrievalIdentity,isNonBlankIdentity}from"../retrieval-identity.js";import{srOnly}from"../../../internal/a11y.js";import{acquireAnnouncementSink}from"../../../internal/announcer.js";import{finiteCount}from"../../../internal/numbers.js";import{getListFormat,getNumberFormat}from"../../../internal/intl-cache.js";import{closeIcon}from"../../../internal/icons.js";import{styles}from"./ingestion-queue.styles.js";import{retrievalSemanticLabel,retrievalSemanticRole}from"../retrieval-semantic-owner.js";import{LYRA_DEFAULT_cancel,LYRA_DEFAULT_ingestionAttemptCount,LYRA_DEFAULT_ingestionCancelWithContext,LYRA_DEFAULT_ingestionChunkCount,LYRA_DEFAULT_ingestionEmbeddedOfTotal,LYRA_DEFAULT_ingestionItemProgressLabel,LYRA_DEFAULT_ingestionQueueEmpty,LYRA_DEFAULT_ingestionQueueLabel,LYRA_DEFAULT_ingestionRetryWithContext,LYRA_DEFAULT_ingestionStageCancelled,LYRA_DEFAULT_ingestionStageChunking,LYRA_DEFAULT_ingestionStageDone,LYRA_DEFAULT_ingestionStageEmbedding,LYRA_DEFAULT_ingestionStageExtracting,LYRA_DEFAULT_ingestionStageFailed,LYRA_DEFAULT_ingestionStageIndexing,LYRA_DEFAULT_ingestionStageQueued,LYRA_DEFAULT_ingestionStageUnknown,LYRA_DEFAULT_ingestionStageUploading,LYRA_DEFAULT_retry}from"../../../internal/default-strings.generated.js";const INGESTION_STAGES=new Set(["queued","uploading","extracting","chunking","embedding","indexing","done","failed","cancelled"]);function normalizedStage(stage){return INGESTION_STAGES.has(stage)?stage:"unknown"}const ACTIVE_STAGES=["uploading","extracting","chunking","embedding","indexing"],CANCELABLE_STAGES=["queued",...ACTIVE_STAGES];function badgeVariantForStage(stage){switch(stage){case"done":return"success";case"failed":return"danger";case"queued":case"cancelled":case"unknown":return"neutral";default:return"brand"}}const ICON_VIEW_BOX="0 0 24 24",ICON_STROKE_WIDTH="1.75";function retryIcon(){return svg`
|
|
1
|
+
var __decorate=function(decorators,target,key,desc){var c=arguments.length,r=c<3?target:desc===null?desc=Object.getOwnPropertyDescriptor(target,key):desc,d;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")r=Reflect.decorate(decorators,target,key,desc);else for(var i=decorators.length-1;i>=0;i--)(d=decorators[i])&&(r=(c<3?d(r):c>3?d(target,key,r):d(target,key))||r);return c>3&&r&&Object.defineProperty(target,key,r),r};import{html,nothing,svg}from"lit";import{property,state}from"lit/decorators.js";import{guard}from"lit/directives/guard.js";import{repeat}from"lit/directives/repeat.js";import{LyraElement}from"../../../internal/lyra-element.js";import{firstByRetrievalIdentity,isNonBlankIdentity}from"../retrieval-identity.js";import{srOnly}from"../../../internal/a11y.js";import{acquireAnnouncementSink}from"../../../internal/announcer.js";import{finiteCount}from"../../../internal/numbers.js";import{getListFormat,getNumberFormat}from"../../../internal/intl-cache.js";import{closeIcon}from"../../../internal/icons.js";import{styles}from"./ingestion-queue.styles.js";import{retrievalSemanticLabel,retrievalSemanticRole}from"../retrieval-semantic-owner.js";import{LYRA_DEFAULT_cancel,LYRA_DEFAULT_ingestionAttemptCount,LYRA_DEFAULT_ingestionCancelWithContext,LYRA_DEFAULT_ingestionChunkCount,LYRA_DEFAULT_ingestionEmbeddedOfTotal,LYRA_DEFAULT_ingestionItemProgressLabel,LYRA_DEFAULT_ingestionQueueEmpty,LYRA_DEFAULT_ingestionQueueLabel,LYRA_DEFAULT_ingestionRetryWithContext,LYRA_DEFAULT_ingestionStageCancelled,LYRA_DEFAULT_ingestionStageChunking,LYRA_DEFAULT_ingestionStageDone,LYRA_DEFAULT_ingestionStageEmbedding,LYRA_DEFAULT_ingestionStageExtracting,LYRA_DEFAULT_ingestionStageFailed,LYRA_DEFAULT_ingestionStageIndexing,LYRA_DEFAULT_ingestionStageQueued,LYRA_DEFAULT_ingestionStageUnknown,LYRA_DEFAULT_ingestionStageUploading,LYRA_DEFAULT_retry}from"../../../internal/default-strings.generated.js";const INGESTION_STAGES=new Set(["queued","uploading","extracting","chunking","embedding","indexing","done","failed","cancelled"]);function normalizedStage(stage){return INGESTION_STAGES.has(stage)?stage:"unknown"}const ACTIVE_STAGES=["uploading","extracting","chunking","embedding","indexing"],CANCELABLE_STAGES=["queued",...ACTIVE_STAGES];function badgeVariantForStage(stage){switch(stage){case"done":return"success";case"failed":return"danger";case"queued":case"cancelled":case"unknown":return"neutral";default:return"brand"}}const ICON_VIEW_BOX="0 0 24 24",ICON_STROKE_WIDTH="1.75";function retryIcon(){return svg`
|
|
2
2
|
<svg
|
|
3
3
|
width="1em"
|
|
4
4
|
height="1em"
|
|
@@ -11,7 +11,7 @@ var __decorate=function(decorators,target,key,desc){var c=arguments.length,r=c<3
|
|
|
11
11
|
aria-hidden="true"
|
|
12
12
|
focusable="false"
|
|
13
13
|
><polyline points="1 4 1 10 7 10"></polyline><path d="M3.51 15a9 9 0 1 0 2.13-9.36L1 10"></path></svg>
|
|
14
|
-
`}const DEFAULT_VIRTUALIZE_AT=100;function isRecord(value){return typeof value=="object"&&value!==null&&!Array.isArray(value)}class LyraIngestionQueue extends LyraElement{constructor(){super(...arguments),this.items=[],this.virtualizeAt=DEFAULT_VIRTUALIZE_AT,this.failureLiveText="",this.isMounting=!0,this.itemTemplate=(item,ownRole)=>{const stage=normalizedStage(item.stage),stageLabel=this.stageLabel(stage),showProgress=stage!=="unknown"&&ACTIVE_STAGES.includes(stage),canRetry=stage==="failed",canCancel=stage!=="unknown"&&CANCELABLE_STAGES.includes(stage),attempts=this.normalizedAttempts(item),hasMeta=item.chunkCount!==void 0||item.embeddedChunkCount!==void 0||attempts>0,indeterminate=item.progress===void 0||!Number.isFinite(item.progress);return html`
|
|
14
|
+
`}const DEFAULT_VIRTUALIZE_AT=100;function isRecord(value){return typeof value=="object"&&value!==null&&!Array.isArray(value)}class LyraIngestionQueue extends LyraElement{constructor(){super(...arguments),this.items=[],this.virtualizeAt=DEFAULT_VIRTUALIZE_AT,this.failureLiveText="",this.isMounting=!0,this.renderVirtualItem=item=>this.itemTemplate(item,!1),this.ingestionItemKey=item=>item.id,this.itemTemplate=(item,ownRole)=>{const stage=normalizedStage(item.stage),stageLabel=this.stageLabel(stage),showProgress=stage!=="unknown"&&ACTIVE_STAGES.includes(stage),canRetry=stage==="failed",canCancel=stage!=="unknown"&&CANCELABLE_STAGES.includes(stage),attempts=this.normalizedAttempts(item),hasMeta=item.chunkCount!==void 0||item.embeddedChunkCount!==void 0||attempts>0,indeterminate=item.progress===void 0||!Number.isFinite(item.progress);return html`
|
|
15
15
|
<div
|
|
16
16
|
part="item"
|
|
17
17
|
role=${ownRole?"listitem":nothing}
|
|
@@ -62,7 +62,7 @@ var __decorate=function(decorators,target,key,desc){var c=arguments.length,r=c<3
|
|
|
62
62
|
</button>`:nothing}
|
|
63
63
|
</div>`:nothing}
|
|
64
64
|
</div>
|
|
65
|
-
`}}static{this.defaultStrings={...super.defaultStrings,cancel:LYRA_DEFAULT_cancel,ingestionAttemptCount:LYRA_DEFAULT_ingestionAttemptCount,ingestionCancelWithContext:LYRA_DEFAULT_ingestionCancelWithContext,ingestionChunkCount:LYRA_DEFAULT_ingestionChunkCount,ingestionEmbeddedOfTotal:LYRA_DEFAULT_ingestionEmbeddedOfTotal,ingestionItemProgressLabel:LYRA_DEFAULT_ingestionItemProgressLabel,ingestionQueueEmpty:LYRA_DEFAULT_ingestionQueueEmpty,ingestionQueueLabel:LYRA_DEFAULT_ingestionQueueLabel,ingestionRetryWithContext:LYRA_DEFAULT_ingestionRetryWithContext,ingestionStageCancelled:LYRA_DEFAULT_ingestionStageCancelled,ingestionStageChunking:LYRA_DEFAULT_ingestionStageChunking,ingestionStageDone:LYRA_DEFAULT_ingestionStageDone,ingestionStageEmbedding:LYRA_DEFAULT_ingestionStageEmbedding,ingestionStageExtracting:LYRA_DEFAULT_ingestionStageExtracting,ingestionStageFailed:LYRA_DEFAULT_ingestionStageFailed,ingestionStageIndexing:LYRA_DEFAULT_ingestionStageIndexing,ingestionStageQueued:LYRA_DEFAULT_ingestionStageQueued,ingestionStageUnknown:LYRA_DEFAULT_ingestionStageUnknown,ingestionStageUploading:LYRA_DEFAULT_ingestionStageUploading,retry:LYRA_DEFAULT_retry}}static{this.ownedCollectionProperties=Object.freeze(["items"])}static{this.styles=[LyraElement.styles,styles,srOnly]}get effectiveVirtualizeAt(){return finiteCount(this.virtualizeAt,DEFAULT_VIRTUALIZE_AT)}normalizeItems(value){return firstByRetrievalIdentity(Array.isArray(value)?value.filter(item=>{if(!isRecord(item)||!isNonBlankIdentity(item.id))return!1;const document=item.document;return isRecord(document)&&isNonBlankIdentity(document.id)&&typeof document.name=="string"}):[],item=>item.id).map(item=>item.error==null||typeof item.error=="string"?item:{...item,error:this.localize("ingestionStageFailed")})}get normalizedItems(){return this.normalizeItems(this.items)}connectedCallback(){super.connectedCallback(),this.sink??=acquireAnnouncementSink("assertive",{document:this.ownerDocument,source:this})}disconnectedCallback(){super.disconnectedCallback(),this.failureLiveText="",this.isMounting=!0,this.sink?.release(),this.sink=void 0}willUpdate(changed){super.willUpdate(changed);const wasMounting=this.isMounting;if(this.isMounting=!1,wasMounting||!changed.has("items"))return;const previousItems=this.normalizeItems(changed.get("items")),previousById=new Map(previousItems.map(item=>[item.id,item])),freshErrors=this.normalizedItems.flatMap(item=>{if(item.stage!=="failed"||!item.error)return[];const previous=previousById.get(item.id);return!previous||previous.stage!=="failed"||previous.error!==item.error?[item.error]:[]});this.failureLiveText=freshErrors.length?getListFormat(this.effectiveLocale,{type:"conjunction"}).format(freshErrors):"",this.failureLiveText!==""&&this.sink?.announce(this.failureLiveText)}stageLabel(stage){switch(stage){case"queued":return this.localize("ingestionStageQueued");case"uploading":return this.localize("ingestionStageUploading");case"extracting":return this.localize("ingestionStageExtracting");case"chunking":return this.localize("ingestionStageChunking");case"embedding":return this.localize("ingestionStageEmbedding");case"indexing":return this.localize("ingestionStageIndexing");case"done":return this.localize("ingestionStageDone");case"failed":return this.localize("ingestionStageFailed");case"cancelled":return this.localize("ingestionStageCancelled");case"unknown":return this.localize("ingestionStageUnknown")}}chunkCountText(count){const safeCount=finiteCount(count);return this.localize("ingestionChunkCount",void 0,{count:getNumberFormat(this.effectiveLocale).format(safeCount),pluralCount:safeCount})}normalizedAttempts(item){return finiteCount(item.attempts??0,0,Number.MAX_SAFE_INTEGER-1)}onRetryClick(item){this.emit("lr-retry",{itemId:item.id,attempt:this.normalizedAttempts(item)+1})}onCancelClick(item){this.emit("lr-cancel",{itemId:item.id})}render(){const items=this.normalizedItems,ariaLabel=retrievalSemanticLabel(this,this.label==null?this.localize("ingestionQueueLabel"):this.label),regionRole=retrievalSemanticRole(this,"region");if(items.length===0)return html`<div
|
|
65
|
+
`}}static{this.defaultStrings={...super.defaultStrings,cancel:LYRA_DEFAULT_cancel,ingestionAttemptCount:LYRA_DEFAULT_ingestionAttemptCount,ingestionCancelWithContext:LYRA_DEFAULT_ingestionCancelWithContext,ingestionChunkCount:LYRA_DEFAULT_ingestionChunkCount,ingestionEmbeddedOfTotal:LYRA_DEFAULT_ingestionEmbeddedOfTotal,ingestionItemProgressLabel:LYRA_DEFAULT_ingestionItemProgressLabel,ingestionQueueEmpty:LYRA_DEFAULT_ingestionQueueEmpty,ingestionQueueLabel:LYRA_DEFAULT_ingestionQueueLabel,ingestionRetryWithContext:LYRA_DEFAULT_ingestionRetryWithContext,ingestionStageCancelled:LYRA_DEFAULT_ingestionStageCancelled,ingestionStageChunking:LYRA_DEFAULT_ingestionStageChunking,ingestionStageDone:LYRA_DEFAULT_ingestionStageDone,ingestionStageEmbedding:LYRA_DEFAULT_ingestionStageEmbedding,ingestionStageExtracting:LYRA_DEFAULT_ingestionStageExtracting,ingestionStageFailed:LYRA_DEFAULT_ingestionStageFailed,ingestionStageIndexing:LYRA_DEFAULT_ingestionStageIndexing,ingestionStageQueued:LYRA_DEFAULT_ingestionStageQueued,ingestionStageUnknown:LYRA_DEFAULT_ingestionStageUnknown,ingestionStageUploading:LYRA_DEFAULT_ingestionStageUploading,retry:LYRA_DEFAULT_retry}}static{this.ownedCollectionProperties=Object.freeze(["items"])}static{this.styles=[LyraElement.styles,styles,srOnly]}get effectiveVirtualizeAt(){return finiteCount(this.virtualizeAt,DEFAULT_VIRTUALIZE_AT)}normalizeItems(value){return firstByRetrievalIdentity(Array.isArray(value)?value.filter(item=>{if(!isRecord(item)||!isNonBlankIdentity(item.id))return!1;const document=item.document;return isRecord(document)&&isNonBlankIdentity(document.id)&&typeof document.name=="string"}):[],item=>item.id).map(item=>item.error==null||typeof item.error=="string"?item:{...item,error:this.localize("ingestionStageFailed")})}get normalizedItems(){const cached=this.normalizedItemsCache;if(cached&&cached.source===this.items&&cached.locale===this.effectiveLocale)return cached.result;const result=this.normalizeItems(this.items);return this.normalizedItemsCache={source:this.items,locale:this.effectiveLocale,result},result}connectedCallback(){super.connectedCallback(),this.sink??=acquireAnnouncementSink("assertive",{document:this.ownerDocument,source:this})}disconnectedCallback(){super.disconnectedCallback(),this.failureLiveText="",this.isMounting=!0,this.sink?.release(),this.sink=void 0}willUpdate(changed){super.willUpdate(changed);const wasMounting=this.isMounting;if(this.isMounting=!1,wasMounting||!changed.has("items"))return;const previousItems=this.normalizeItems(changed.get("items")),previousById=new Map(previousItems.map(item=>[item.id,item])),freshErrors=this.normalizedItems.flatMap(item=>{if(item.stage!=="failed"||!item.error)return[];const previous=previousById.get(item.id);return!previous||previous.stage!=="failed"||previous.error!==item.error?[item.error]:[]});this.failureLiveText=freshErrors.length?getListFormat(this.effectiveLocale,{type:"conjunction"}).format(freshErrors):"",this.failureLiveText!==""&&this.sink?.announce(this.failureLiveText)}stageLabel(stage){switch(stage){case"queued":return this.localize("ingestionStageQueued");case"uploading":return this.localize("ingestionStageUploading");case"extracting":return this.localize("ingestionStageExtracting");case"chunking":return this.localize("ingestionStageChunking");case"embedding":return this.localize("ingestionStageEmbedding");case"indexing":return this.localize("ingestionStageIndexing");case"done":return this.localize("ingestionStageDone");case"failed":return this.localize("ingestionStageFailed");case"cancelled":return this.localize("ingestionStageCancelled");case"unknown":return this.localize("ingestionStageUnknown")}}chunkCountText(count){const safeCount=finiteCount(count);return this.localize("ingestionChunkCount",void 0,{count:getNumberFormat(this.effectiveLocale).format(safeCount),pluralCount:safeCount})}normalizedAttempts(item){return finiteCount(item.attempts??0,0,Number.MAX_SAFE_INTEGER-1)}onRetryClick(item){this.emit("lr-retry",{itemId:item.id,attempt:this.normalizedAttempts(item)+1})}onCancelClick(item){this.emit("lr-cancel",{itemId:item.id})}render(){const items=this.normalizedItems,ariaLabel=retrievalSemanticLabel(this,this.label==null?this.localize("ingestionQueueLabel"):this.label),regionRole=retrievalSemanticRole(this,"region");if(items.length===0)return html`<div
|
|
66
66
|
part="base"
|
|
67
67
|
role=${regionRole??nothing}
|
|
68
68
|
aria-label=${ariaLabel??nothing}
|
|
@@ -88,9 +88,9 @@ var __decorate=function(decorators,target,key,desc){var c=arguments.length,r=c<3
|
|
|
88
88
|
${virtualized?html`<lr-virtual-list
|
|
89
89
|
part="list"
|
|
90
90
|
exportparts="item:item, item-header:item-header, item-name:item-name, item-stage:item-stage, item-progress:item-progress, item-meta:item-meta, item-chunk-count:item-chunk-count, item-embedding-status:item-embedding-status, item-attempts:item-attempts, item-error:item-error, item-actions:item-actions, retry-button:retry-button, cancel-button:cancel-button"
|
|
91
|
-
.items=${items}
|
|
92
|
-
.renderItem=${
|
|
93
|
-
.keyFunction=${
|
|
91
|
+
.items=${guard([items],()=>items)}
|
|
92
|
+
.renderItem=${this.renderVirtualItem}
|
|
93
|
+
.keyFunction=${this.ingestionItemKey}
|
|
94
94
|
></lr-virtual-list>`:html`<div part="list" role="list">
|
|
95
95
|
${repeat(items,item=>item.id,item=>this.itemTemplate(item,!0))}
|
|
96
96
|
</div>`}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
var __decorate=function(decorators,target,key,desc){var c=arguments.length,r=c<3?target:desc===null?desc=Object.getOwnPropertyDescriptor(target,key):desc,d;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")r=Reflect.decorate(decorators,target,key,desc);else for(var i=decorators.length-1;i>=0;i--)(d=decorators[i])&&(r=(c<3?d(r):c>3?d(target,key,r):d(target,key))||r);return c>3&&r&&Object.defineProperty(target,key,r),r};import{html,nothing}from"lit";import{property}from"lit/decorators.js";import{LyraElement}from"../../../internal/lyra-element.js";import{styles}from"./knowledge-base-admin.styles.js";import{activeElementIn}from"../../../internal/active-element.js";import{LYRA_DEFAULT_knowledgeBaseAdminIngestionTab,LYRA_DEFAULT_knowledgeBaseAdminLabel,LYRA_DEFAULT_knowledgeBaseAdminSourcesTab}from"../../../internal/default-strings.generated.js";let knowledgeBaseAdminInstance=0;class LyraKnowledgeBaseAdmin extends LyraElement{constructor(){super(...arguments),this.sources=[],this.ingestionItems=[],this.activeTab="sources",this.hideIngestion=!1,this.idPrefix=`lr-knowledge-base-admin-${++knowledgeBaseAdminInstance}`,this.focusSourcesAfterUpdate=!1}static{this.defaultStrings={...super.defaultStrings,knowledgeBaseAdminIngestionTab:LYRA_DEFAULT_knowledgeBaseAdminIngestionTab,knowledgeBaseAdminLabel:LYRA_DEFAULT_knowledgeBaseAdminLabel,knowledgeBaseAdminSourcesTab:LYRA_DEFAULT_knowledgeBaseAdminSourcesTab}}static{this.ownedCollectionProperties=Object.freeze(["sources","ingestionItems"])}static{this.styles=[LyraElement.styles,styles]}tabId(tab){return`${this.idPrefix}-${tab}-tab`}panelId(tab){return`${this.idPrefix}-${tab}-panel`}setTab(tab){tab==="ingestion"&&this.hideIngestion||tab!==this.activeTab&&(this.activeTab=tab,this.emit("lr-tab-change",{tab}))}willUpdate(changed){super.willUpdate(changed);const invalidTab=this.activeTab!=="sources"&&this.activeTab!=="ingestion",unavailableIngestion=this.hideIngestion&&this.activeTab==="ingestion";!invalidTab&&!unavailableIngestion||(this.focusSourcesAfterUpdate=activeElementIn(this.shadowRoot)?.matches('[role="tab"]')??!1,this.activeTab="sources",this.emit("lr-tab-change",{tab:"sources"}))}updated(changed){super.updated(changed),this.focusSourcesAfterUpdate&&(this.focusSourcesAfterUpdate=!1,this.shadowRoot?.querySelector(`#${this.tabId("sources")}`)?.focus())}handleTabKeydown(event,current){const tabs=this.hideIngestion?["sources"]:["sources","ingestion"],currentIndex=tabs.indexOf(current),previousKey=this.effectiveDirection==="rtl"?"ArrowRight":"ArrowLeft",nextKey=this.effectiveDirection==="rtl"?"ArrowLeft":"ArrowRight";let nextIndex=currentIndex;if(event.key===previousKey)nextIndex=(currentIndex-1+tabs.length)%tabs.length;else if(event.key===nextKey)nextIndex=(currentIndex+1)%tabs.length;else if(event.key==="Home")nextIndex=0;else if(event.key==="End")nextIndex=tabs.length-1;else return;event.preventDefault();const next=tabs[nextIndex];this.setTab(next),this.updateComplete.then(()=>{this.shadowRoot?.querySelector(`#${this.tabId(next)}`)?.focus()})}forward(event,name,detail){event.stopPropagation(),this.emit(name,detail)}render(){const visibleLabel=this.label==null?this.localize("knowledgeBaseAdminLabel"):this.label,tab=this.activeTab==="ingestion"&&!this.hideIngestion?"ingestion":"sources";return html`<section part="base">
|
|
1
|
+
var __decorate=function(decorators,target,key,desc){var c=arguments.length,r=c<3?target:desc===null?desc=Object.getOwnPropertyDescriptor(target,key):desc,d;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")r=Reflect.decorate(decorators,target,key,desc);else for(var i=decorators.length-1;i>=0;i--)(d=decorators[i])&&(r=(c<3?d(r):c>3?d(target,key,r):d(target,key))||r);return c>3&&r&&Object.defineProperty(target,key,r),r};import{html,nothing}from"lit";import{property}from"lit/decorators.js";import{LyraElement}from"../../../internal/lyra-element.js";import{styles}from"./knowledge-base-admin.styles.js";import{activeElementIn}from"../../../internal/active-element.js";import{hostAriaLabel}from"../../../internal/a11y.js";import{LYRA_DEFAULT_knowledgeBaseAdminIngestionTab,LYRA_DEFAULT_knowledgeBaseAdminLabel,LYRA_DEFAULT_knowledgeBaseAdminSourcesTab}from"../../../internal/default-strings.generated.js";let knowledgeBaseAdminInstance=0;class LyraKnowledgeBaseAdmin extends LyraElement{constructor(){super(...arguments),this.sources=[],this.ingestionItems=[],this.activeTab="sources",this.hideIngestion=!1,this.idPrefix=`lr-knowledge-base-admin-${++knowledgeBaseAdminInstance}`,this.focusSourcesAfterUpdate=!1}static{this.defaultStrings={...super.defaultStrings,knowledgeBaseAdminIngestionTab:LYRA_DEFAULT_knowledgeBaseAdminIngestionTab,knowledgeBaseAdminLabel:LYRA_DEFAULT_knowledgeBaseAdminLabel,knowledgeBaseAdminSourcesTab:LYRA_DEFAULT_knowledgeBaseAdminSourcesTab}}static{this.ownedCollectionProperties=Object.freeze(["sources","ingestionItems"])}static{this.styles=[LyraElement.styles,styles]}tabId(tab){return`${this.idPrefix}-${tab}-tab`}panelId(tab){return`${this.idPrefix}-${tab}-panel`}setTab(tab){tab==="ingestion"&&this.hideIngestion||tab!==this.activeTab&&(this.activeTab=tab,this.emit("lr-tab-change",{tab}))}willUpdate(changed){super.willUpdate(changed);const invalidTab=this.activeTab!=="sources"&&this.activeTab!=="ingestion",unavailableIngestion=this.hideIngestion&&this.activeTab==="ingestion";!invalidTab&&!unavailableIngestion||(this.focusSourcesAfterUpdate=activeElementIn(this.shadowRoot)?.matches('[role="tab"]')??!1,this.activeTab="sources",this.emit("lr-tab-change",{tab:"sources"}))}updated(changed){super.updated(changed),this.focusSourcesAfterUpdate&&(this.focusSourcesAfterUpdate=!1,this.shadowRoot?.querySelector(`#${this.tabId("sources")}`)?.focus())}handleTabKeydown(event,current){const tabs=this.hideIngestion?["sources"]:["sources","ingestion"],currentIndex=tabs.indexOf(current),previousKey=this.effectiveDirection==="rtl"?"ArrowRight":"ArrowLeft",nextKey=this.effectiveDirection==="rtl"?"ArrowLeft":"ArrowRight";let nextIndex=currentIndex;if(event.key===previousKey)nextIndex=(currentIndex-1+tabs.length)%tabs.length;else if(event.key===nextKey)nextIndex=(currentIndex+1)%tabs.length;else if(event.key==="Home")nextIndex=0;else if(event.key==="End")nextIndex=tabs.length-1;else return;event.preventDefault();const next=tabs[nextIndex];this.setTab(next),this.updateComplete.then(()=>{this.shadowRoot?.querySelector(`#${this.tabId(next)}`)?.focus()})}forward(event,name,detail){event.stopPropagation(),this.emit(name,detail)}render(){const visibleLabel=this.label==null?this.localize("knowledgeBaseAdminLabel"):this.label,hostLabel=hostAriaLabel(this),tablistLabel=hostLabel===null?visibleLabel:hostLabel,tab=this.activeTab==="ingestion"&&!this.hideIngestion?"ingestion":"sources";return html`<section part="base">
|
|
2
2
|
<h2 part="heading">${visibleLabel}</h2>
|
|
3
|
-
<div part="tabs" role="tablist" aria-label=${
|
|
3
|
+
<div part="tabs" role="tablist" aria-label=${tablistLabel}>
|
|
4
4
|
<button
|
|
5
5
|
part="tab"
|
|
6
6
|
id=${this.tabId("sources")}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{css}from"lit";const styles=css`:host{--_lr-mind-map-ring-gap:var(--lr-size-6rem);display:block}[part=base]{display:block}[part=svg]{block-size:100%;inline-size:100%;display:block}[part=svg]:focus-visible{outline:none}[part=link]{stroke:var(--lr-color-border);stroke-width:1.5px}[part=node]{cursor:pointer;transition:transform var(--lr-transition-base)}.node-hit{fill:none;stroke:#0000;stroke-width:var(--lr-icon-button-size);stroke-linecap:round;vector-effect:non-scaling-stroke;pointer-events:stroke}[part=node] circle{fill:var(--lr-color-brand);stroke:#0000;stroke-width:var(--lr-
|
|
1
|
+
import{css}from"lit";const styles=css`:host{--_lr-mind-map-ring-gap:var(--lr-size-6rem);display:block}[part=base]{display:block}[part=svg]{block-size:100%;inline-size:100%;display:block}[part=svg]:focus-visible{outline:none}[part=link]{stroke:var(--lr-color-border);stroke-width:1.5px}[part=node]{cursor:pointer;transition:transform var(--lr-transition-base)}.node-hit{fill:none;stroke:#0000;stroke-width:var(--lr-icon-button-size);stroke-linecap:round;vector-effect:non-scaling-stroke;pointer-events:stroke}[part=node] circle{fill:var(--lr-color-brand);stroke:#0000;stroke-width:var(--lr-border-width-thick);transition:stroke var(--lr-transition-fast)}[part=node]:hover circle{stroke:var(--lr-mind-map-node-hover-halo,var(--lr-color-brand-quiet))}[part=node]:active circle{stroke:color-mix(in oklab, var(--lr-mind-map-node-hover-halo,var(--lr-color-brand-quiet)), var(--lr-color-mix-partner) var(--lr-color-mix-active))}[part=node-label]{fill:var(--lr-color-text);font-size:var(--lr-font-size-sm)}[part=focus-ring]{fill:none;stroke:var(--lr-focus-ring-color);stroke-width:var(--lr-focus-ring-width);pointer-events:none}[part=empty]{padding:var(--lr-space-m);color:var(--lr-color-text-quiet)}`;export{styles};
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import{type TemplateResult}from'lit';import{LyraElement}from'../../../internal/lyra-element.js';import type{LyraEntity}from'../entity-card/entity-card.class.js';import'../../layout/virtual-list/virtual-list.class.js';import'../../overlays/empty/empty.class.js';export interface LyraNeighborRow{
|
|
1
|
+
import{type PropertyValues,type TemplateResult}from'lit';import{LyraElement}from'../../../internal/lyra-element.js';import type{LyraEntity}from'../entity-card/entity-card.class.js';import'../../layout/virtual-list/virtual-list.class.js';import'../../overlays/empty/empty.class.js';export interface LyraNeighborRow{
|
|
2
2
|
/** Edge label, e.g. `'works_for'`. */
|
|
3
3
|
relation:string;direction:'in'|'out'|'both';node:LyraEntity;}export interface LyraNeighborListEventMap{
|
|
4
4
|
/** Canonical name for the "user picked this entity" gesture. */
|
|
@@ -52,7 +52,7 @@ label?:string;
|
|
|
52
52
|
* own default of `100`) -- a raw `NaN` (e.g. an invalid `virtualize-at` attribute) would
|
|
53
53
|
* otherwise make `sorted.length > virtualizeAt` always false, silently disabling
|
|
54
54
|
* virtualization instead of falling back to the default threshold. */
|
|
55
|
-
private get effectiveVirtualizeAt();private sortedRows;private groups;
|
|
55
|
+
private get effectiveVirtualizeAt();private sortedRowsCache;private groupsCache;private hasComputedRows;private processedSignature;protected willUpdate(changed:PropertyValues<this>):void;private sortedRows;private computeSortedRows;private groups;private computeGroups;
|
|
56
56
|
/** The arrow encodes the graph edge's actual direction (outgoing vs incoming) -- real semantic
|
|
57
57
|
* data about which entity points to which -- so its meaning must stay fixed regardless of
|
|
58
58
|
* reading direction; it is never derived from `isRtl()`. Only the row's overall layout (icon
|
|
@@ -60,7 +60,7 @@ private get effectiveVirtualizeAt();private sortedRows;private groups;
|
|
|
60
60
|
* inline-axis flex flow (`neighbor-list.styles.ts`'s `[part='row']` rule) -- no code here needs
|
|
61
61
|
* to reason about direction at all. See docs/agents/i18n-rtl-theming.md: "directional glyphs
|
|
62
62
|
* mirror via the wrapping part, not the icon." */
|
|
63
|
-
private directionGlyph;private directionText;private renderRow;
|
|
63
|
+
private directionGlyph;private directionText;private renderRow;private readonly virtualListKeyFunction;
|
|
64
64
|
/** Returns only a row's *content*, not its surrounding `role="listitem"`/`part="row"` wrapper:
|
|
65
65
|
* `<lr-virtual-list>` already supplies exactly such a wrapper (exported from here as `row`) for
|
|
66
66
|
* every virtualized row, and a second nested one would both duplicate the `listitem` role and
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
var __decorate=function(decorators,target,key,desc){var c=arguments.length,r=c<3?target:desc===null?desc=Object.getOwnPropertyDescriptor(target,key):desc,d;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")r=Reflect.decorate(decorators,target,key,desc);else for(var i=decorators.length-1;i>=0;i--)(d=decorators[i])&&(r=(c<3?d(r):c>3?d(target,key,r):d(target,key))||r);return c>3&&r&&Object.defineProperty(target,key,r),r};import{html,nothing}from"lit";import{property}from"lit/decorators.js";import{LyraElement}from"../../../internal/lyra-element.js";import{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"../../layout/virtual-list/virtual-list.class.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_neighborDirectionBoth,LYRA_DEFAULT_neighborDirectionIn,LYRA_DEFAULT_neighborDirectionOut,LYRA_DEFAULT_neighborExpand,LYRA_DEFAULT_neighborGroupHeader,LYRA_DEFAULT_neighborListEmpty,LYRA_DEFAULT_neighborListLabel,LYRA_DEFAULT_neighborRowLabel}from"../../../internal/default-strings.generated.js";class LyraNeighborList extends LyraElement{constructor(){super(...arguments),this.rows=[],this.groupByRelation=!1,this.expandable=!1,this.virtualizeAt=100,this.renderRow=item=>this.renderNeighborRow(item)}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.ownedCollectionProperties=Object.freeze(["rows"])}static{this.styles=[LyraElement.styles,styles]}get effectiveVirtualizeAt(){return finiteCount(this.virtualizeAt,100)}sortedRows(){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){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}),meta=[typeof row.node.type=="string"&&row.node.type.trim()!==""?row.node.type:void 0,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`
|
|
1
|
+
var __decorate=function(decorators,target,key,desc){var c=arguments.length,r=c<3?target:desc===null?desc=Object.getOwnPropertyDescriptor(target,key):desc,d;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")r=Reflect.decorate(decorators,target,key,desc);else for(var i=decorators.length-1;i>=0;i--)(d=decorators[i])&&(r=(c<3?d(r):c>3?d(target,key,r):d(target,key))||r);return c>3&&r&&Object.defineProperty(target,key,r),r};import{html,nothing}from"lit";import{property}from"lit/decorators.js";import{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"../../layout/virtual-list/virtual-list.class.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_neighborDirectionBoth,LYRA_DEFAULT_neighborDirectionIn,LYRA_DEFAULT_neighborDirectionOut,LYRA_DEFAULT_neighborExpand,LYRA_DEFAULT_neighborGroupHeader,LYRA_DEFAULT_neighborListEmpty,LYRA_DEFAULT_neighborListLabel,LYRA_DEFAULT_neighborRowLabel}from"../../../internal/default-strings.generated.js";class LyraNeighborList extends LyraElement{constructor(){super(...arguments),this.rows=[],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.ownedCollectionProperties=Object.freeze(["rows"])}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))}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}),meta=[typeof row.node.type=="string"&&row.node.type.trim()!==""?row.node.type:void 0,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"
|
|
@@ -35,9 +35,9 @@ var __decorate=function(decorators,target,key,desc){var c=arguments.length,r=c<3
|
|
|
35
35
|
<div part="base" role=${role??nothing} aria-label=${label??nothing}>
|
|
36
36
|
<lr-virtual-list
|
|
37
37
|
exportparts="row:row, node-label:node-label, direction:direction, relation:relation, node-meta:node-meta, expand-button:expand-button, group:group-header"
|
|
38
|
-
.items=${sorted}
|
|
38
|
+
.items=${guard([sorted],()=>sorted)}
|
|
39
39
|
.renderItem=${this.renderRow}
|
|
40
|
-
.keyFunction=${
|
|
40
|
+
.keyFunction=${this.virtualListKeyFunction}
|
|
41
41
|
.groups=${this.groups(sorted)}
|
|
42
42
|
></lr-virtual-list>
|
|
43
43
|
</div>
|
|
@@ -53,12 +53,16 @@ disabled?:boolean;}export interface LyraNodePaletteEventMap{'lr-palette-place':C
|
|
|
53
53
|
* search field loses focus; preserves `relatedTarget` and crosses the shadow boundary.
|
|
54
54
|
* @csspart base - The root wrapper.
|
|
55
55
|
* @csspart search - The search input.
|
|
56
|
+
* @csspart search-clear - The button that clears the search field, rendered only while it has a
|
|
57
|
+
* value -- the native `type="search"` cancel button is suppressed (its unthemed glyph does not
|
|
58
|
+
* match the field's own border/background), so this replaces it rather than merely hiding it.
|
|
56
59
|
* @csspart list - The listbox.
|
|
57
60
|
* @csspart group-header - A category heading (`role="presentation"`).
|
|
58
61
|
* @csspart item - A single option row.
|
|
59
62
|
* @csspart item-icon - An item's icon wrapper.
|
|
60
63
|
* @csspart item-label - An item's label text.
|
|
61
64
|
* @csspart item-description - An item's description text.
|
|
65
|
+
* @csspart search-field - The wrapper around the search input and its clear button.
|
|
62
66
|
* @csspart empty - The no-results message.
|
|
63
67
|
* @csspart live-region - The result-count announcement.
|
|
64
68
|
* @status stable
|
|
@@ -95,7 +99,9 @@ accessibleLabel:string|null;private queryText;private activeIndex;private liveTe
|
|
|
95
99
|
* `<lr-chat-message>`/`<lr-branch-picker>`'s identical `isMounting` gate. */
|
|
96
100
|
private isMounting;private canonicalItemsCache;private filteredCache;private categorizedCache;private rovingListCache;private get canonicalItems();private get filtered();private categorized;private rovingList;
|
|
97
101
|
/** Enabled items in the order represented by the currently committed item elements. */
|
|
98
|
-
private lastRenderedRovingList;private pendingFocusIndex;private itemElements;private occurrenceAt;private indexOfOccurrence;connectedCallback():void;disconnectedCallback():void;adoptedCallback():void;protected willUpdate(changed:PropertyValues):void;protected updated(changed:PropertyValues):void;private onSearchInput;
|
|
102
|
+
private lastRenderedRovingList;private pendingFocusIndex;private itemElements;private occurrenceAt;private indexOfOccurrence;connectedCallback():void;disconnectedCallback():void;adoptedCallback():void;protected willUpdate(changed:PropertyValues):void;protected updated(changed:PropertyValues):void;private onSearchInput;
|
|
103
|
+
/** Replaces the suppressed native `type="search"` cancel button -- see `search-clear`'s doc. */
|
|
104
|
+
private onSearchClear;private onSearchFocus;private onSearchBlur;private onFieldKeyDown;private focusItem;private onItemKeyDown;
|
|
99
105
|
/** The rendered items of one category group, disabled entries included: a reorder moves the
|
|
100
106
|
* focused item past the neighbour a user can actually see, which is not the same list the
|
|
101
107
|
* roving-tabindex order walks. */
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
var __decorate=function(decorators,target,key,desc){var c=arguments.length,r=c<3?target:desc===null?desc=Object.getOwnPropertyDescriptor(target,key):desc,d;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")r=Reflect.decorate(decorators,target,key,desc);else for(var i=decorators.length-1;i>=0;i--)(d=decorators[i])&&(r=(c<3?d(r):c>3?d(target,key,r):d(target,key))||r);return c>3&&r&&Object.defineProperty(target,key,r),r};import{html,nothing}from"lit";import{property,state}from"lit/decorators.js";import{LyraElement}from"../../../internal/lyra-element.js";import{nextId,srOnly}from"../../../internal/a11y.js";import{Announcer,acquireAnnouncementSink}from"../../../internal/announcer.js";import{getOwnDataDescriptor,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{activeElementIn}from"../../../internal/active-element.js";import{relayNativeEvent}from"../../../internal/native-event-relay.js";import{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 descriptorValue(value,property2){return getOwnDataDescriptor(value,property2)}function projectKeywords(value){try{if(!Array.isArray(value))return;const lengthDescriptor=descriptorValue(value,"length");if(lengthDescriptor===MISSING_OWN_DATA_DESCRIPTOR||lengthDescriptor===UNSAFE_OWN_DATA_DESCRIPTOR||typeof lengthDescriptor.value!="number"||!Number.isSafeInteger(lengthDescriptor.value)||lengthDescriptor.value<0||lengthDescriptor.value>MAX_PALETTE_KEYWORDS)return;const keywords=[],length=Math.min(lengthDescriptor.value,MAX_PALETTE_KEYWORDS);for(let index=0;index<length;index+=1){const descriptor=descriptorValue(value,String(index));if(descriptor===MISSING_OWN_DATA_DESCRIPTOR||descriptor===UNSAFE_OWN_DATA_DESCRIPTOR||typeof descriptor.value!="string")return;keywords.push(descriptor.value)}return Object.freeze(keywords)}catch{return}}function projectPaletteItem(candidate,sourceIndex){try{if(candidate===null||typeof candidate!="object"||Array.isArray(candidate))return;const typeDescriptor=descriptorValue(candidate,"type"),labelDescriptor=descriptorValue(candidate,"label"),descriptionDescriptor=descriptorValue(candidate,"description"),categoryDescriptor=descriptorValue(candidate,"category"),keywordsDescriptor=descriptorValue(candidate,"keywords"),iconDescriptor=descriptorValue(candidate,"icon"),disabledDescriptor=descriptorValue(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){try{if(!Array.isArray(value))return EMPTY_CANONICAL_PALETTE_ITEMS;const lengthDescriptor=descriptorValue(value,"length");if(lengthDescriptor===MISSING_OWN_DATA_DESCRIPTOR||lengthDescriptor===UNSAFE_OWN_DATA_DESCRIPTOR||typeof lengthDescriptor.value!="number"||!Number.isSafeInteger(lengthDescriptor.value)||lengthDescriptor.value<0)return EMPTY_CANONICAL_PALETTE_ITEMS;const items=[],length=Math.min(lengthDescriptor.value,MAX_PALETTE_ITEMS);for(let index=0;index<length;index+=1){const descriptor=descriptorValue(value,String(index));if(descriptor===MISSING_OWN_DATA_DESCRIPTOR||descriptor===UNSAFE_OWN_DATA_DESCRIPTOR)continue;const item=projectPaletteItem(descriptor.value,index);item&&items.push(item)}return Object.freeze(items)}catch{return 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.onSearchInput=e=>{this.queryText=e.target.value,this.activeIndex=0},this.onSearchFocus=event=>{relayNativeEvent(this,event)},this.onSearchBlur=event=>{relayNativeEvent(this,event)},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,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.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(activeElementIn(this.shadowRoot)),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
|
+
var __decorate=function(decorators,target,key,desc){var c=arguments.length,r=c<3?target:desc===null?desc=Object.getOwnPropertyDescriptor(target,key):desc,d;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")r=Reflect.decorate(decorators,target,key,desc);else for(var i=decorators.length-1;i>=0;i--)(d=decorators[i])&&(r=(c<3?d(r):c>3?d(target,key,r):d(target,key))||r);return c>3&&r&&Object.defineProperty(target,key,r),r};import{html,nothing}from"lit";import{property,state}from"lit/decorators.js";import{LyraElement}from"../../../internal/lyra-element.js";import{nextId,srOnly}from"../../../internal/a11y.js";import{Announcer,acquireAnnouncementSink}from"../../../internal/announcer.js";import{getOwnDataDescriptor,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{activeElementIn}from"../../../internal/active-element.js";import{relayNativeEvent}from"../../../internal/native-event-relay.js";import{closeIcon}from"../../../internal/icons.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 descriptorValue(value,property2){return getOwnDataDescriptor(value,property2)}function projectKeywords(value){try{if(!Array.isArray(value))return;const lengthDescriptor=descriptorValue(value,"length");if(lengthDescriptor===MISSING_OWN_DATA_DESCRIPTOR||lengthDescriptor===UNSAFE_OWN_DATA_DESCRIPTOR||typeof lengthDescriptor.value!="number"||!Number.isSafeInteger(lengthDescriptor.value)||lengthDescriptor.value<0||lengthDescriptor.value>MAX_PALETTE_KEYWORDS)return;const keywords=[],length=Math.min(lengthDescriptor.value,MAX_PALETTE_KEYWORDS);for(let index=0;index<length;index+=1){const descriptor=descriptorValue(value,String(index));if(descriptor===MISSING_OWN_DATA_DESCRIPTOR||descriptor===UNSAFE_OWN_DATA_DESCRIPTOR||typeof descriptor.value!="string")return;keywords.push(descriptor.value)}return Object.freeze(keywords)}catch{return}}function projectPaletteItem(candidate,sourceIndex){try{if(candidate===null||typeof candidate!="object"||Array.isArray(candidate))return;const typeDescriptor=descriptorValue(candidate,"type"),labelDescriptor=descriptorValue(candidate,"label"),descriptionDescriptor=descriptorValue(candidate,"description"),categoryDescriptor=descriptorValue(candidate,"category"),keywordsDescriptor=descriptorValue(candidate,"keywords"),iconDescriptor=descriptorValue(candidate,"icon"),disabledDescriptor=descriptorValue(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){try{if(!Array.isArray(value))return EMPTY_CANONICAL_PALETTE_ITEMS;const lengthDescriptor=descriptorValue(value,"length");if(lengthDescriptor===MISSING_OWN_DATA_DESCRIPTOR||lengthDescriptor===UNSAFE_OWN_DATA_DESCRIPTOR||typeof lengthDescriptor.value!="number"||!Number.isSafeInteger(lengthDescriptor.value)||lengthDescriptor.value<0)return EMPTY_CANONICAL_PALETTE_ITEMS;const items=[],length=Math.min(lengthDescriptor.value,MAX_PALETTE_ITEMS);for(let index=0;index<length;index+=1){const descriptor=descriptorValue(value,String(index));if(descriptor===MISSING_OWN_DATA_DESCRIPTOR||descriptor===UNSAFE_OWN_DATA_DESCRIPTOR)continue;const item=projectPaletteItem(descriptor.value,index);item&&items.push(item)}return Object.freeze(items)}catch{return 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.onSearchInput=e=>{this.queryText=e.target.value,this.activeIndex=0},this.onSearchClear=()=>{this.queryText!==""&&(this.queryText="",this.activeIndex=0,this.renderRoot.querySelector('[part="search"]')?.focus())},this.onSearchFocus=event=>{relayNativeEvent(this,event)},this.onSearchBlur=event=>{relayNativeEvent(this,event)},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.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(activeElementIn(this.shadowRoot)),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"
|
|
@@ -18,18 +18,28 @@ var __decorate=function(decorators,target,key,desc){var c=arguments.length,r=c<3
|
|
|
18
18
|
${item.description?html`<span part="item-description">${item.description}</span>`:nothing}
|
|
19
19
|
</div>`}render(){const filtered=this.filtered,groups=this.categorized(filtered);let nextRovingIndex=0;const componentLabel=typeof this.label=="string"&&this.label.trim()!==""?this.label:this.localize("nodePaletteLabel"),listLabel=!this.hasAttribute("aria-label")&&typeof this.accessibleLabel=="string"&&this.accessibleLabel.trim()!==""?this.accessibleLabel:componentLabel;return html`<div part="base">
|
|
20
20
|
<slot name="header"></slot>
|
|
21
|
-
<
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
21
|
+
<div part="search-field">
|
|
22
|
+
<input
|
|
23
|
+
part="search"
|
|
24
|
+
type="search"
|
|
25
|
+
aria-label=${this.localize("search")}
|
|
26
|
+
aria-controls=${this.listId}
|
|
27
|
+
placeholder=${this.localize("nodePalettePlaceholder")}
|
|
28
|
+
.value=${this.queryText}
|
|
29
|
+
@input=${this.onSearchInput}
|
|
30
|
+
@keydown=${this.onFieldKeyDown}
|
|
31
|
+
@focus=${this.onSearchFocus}
|
|
32
|
+
@blur=${this.onSearchBlur}
|
|
33
|
+
/>
|
|
34
|
+
${this.queryText===""?nothing:html`<button
|
|
35
|
+
part="search-clear"
|
|
36
|
+
type="button"
|
|
37
|
+
aria-label=${this.localize("clear")}
|
|
38
|
+
@click=${this.onSearchClear}
|
|
39
|
+
>
|
|
40
|
+
<span aria-hidden="true" inert>${closeIcon()}</span>
|
|
41
|
+
</button>`}
|
|
42
|
+
</div>
|
|
33
43
|
<div part="list" id=${this.listId} role="listbox" aria-label=${listLabel}>
|
|
34
44
|
${groups.length===0?html`<div
|
|
35
45
|
part="empty"
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{css}from"lit";const styles=css`:host{min-inline-size:0;display:block}[part=base]{gap:var(--lr-space-xs);flex-direction:column;min-inline-size:0;display:flex}[part=search]{box-sizing:border-box;inline-size:100%;min-inline-size:var(--lr-icon-button-size);min-block-size:var(--lr-icon-button-size);padding:var(--lr-space-xs) var(--lr-space-s);border:var(--lr-border-width-thin) solid var(--lr-color-border);border-radius:var(--lr-radius);background:var(--lr-color-surface);color:var(--lr-color-text);font:inherit}[part=search]:focus-visible{outline:var(--lr-focus-ring-width) solid var(--lr-focus-ring-color);outline-offset:var(--lr-focus-ring-offset)}[part=search]:hover{border-color:var(--lr-color-border-strong)}[part=search]::-webkit-search-cancel-button,[part=search]::-webkit-search-decoration{-webkit-appearance:none;appearance:none;display:none}[part=search]::placeholder{color:var(--lr-color-text-quiet)}[part=list]{gap:var(--lr-size-2px);flex-direction:column;min-inline-size:0;display:flex;overflow:clip auto}[part=group-header]{padding:var(--lr-space-2xs) var(--lr-space-s);font-size:var(--lr-font-size-xs);font-weight:var(--lr-font-weight-medium);color:var(--lr-color-text-quiet);text-transform:uppercase}[part=item]{gap:var(--lr-size-2px);box-sizing:border-box;min-inline-size:var(--lr-icon-button-size);min-block-size:var(--lr-icon-button-size);padding:var(--lr-space-xs) var(--lr-space-s);border-radius:var(--lr-radius);cursor:grab;flex-direction:column;display:flex}[part=item][aria-disabled=true]{cursor:not-allowed;opacity:var(--lr-opacity-disabled)}:where([part=item]):hover:where(:not([aria-disabled=true])),:where([part=item]):focus-visible:where(:not([aria-disabled=true])){background:var(--lr-color-surface-hover,var(--lr-color-border))}:where([part=item]):active:where(:not([aria-disabled=true])){background:color-mix(in oklab, var(--lr-color-surface-hover,var(--lr-color-border)), var(--lr-color-mix-partner) var(--lr-color-mix-active));cursor:grabbing}[part=item]:focus-visible{outline:var(--lr-focus-ring-width) solid var(--lr-focus-ring-color);outline-offset:calc(-1 * var(--lr-focus-ring-width))}[part=item-label]{font-weight:var(--lr-font-weight-medium)}[part=item-description]{font-size:var(--lr-font-size-xs);color:var(--lr-color-text-quiet);text-overflow:ellipsis;white-space:nowrap;overflow:hidden}[part=empty]{padding:var(--lr-space-m);color:var(--lr-color-text-quiet);text-align:center}`;export{styles};
|
|
1
|
+
import{css}from"lit";const styles=css`:host{min-inline-size:0;display:block}[part=base]{gap:var(--lr-space-xs);flex-direction:column;min-inline-size:0;display:flex}[part=search-field]{min-inline-size:0;display:flex;position:relative}[part=search]{box-sizing:border-box;inline-size:100%;min-inline-size:var(--lr-icon-button-size);min-block-size:var(--lr-icon-button-size);padding:var(--lr-space-xs) var(--lr-space-s);border:var(--lr-border-width-thin) solid var(--lr-color-border);border-radius:var(--lr-radius);background:var(--lr-color-surface);color:var(--lr-color-text);font:inherit;padding-inline-end:calc(var(--lr-icon-button-size) + var(--lr-space-2xs))}[part=search]:focus-visible{outline:var(--lr-focus-ring-width) solid var(--lr-focus-ring-color);outline-offset:var(--lr-focus-ring-offset)}[part=search]:hover{border-color:var(--lr-color-border-strong)}[part=search]::-webkit-search-cancel-button,[part=search]::-webkit-search-decoration{-webkit-appearance:none;appearance:none;display:none}[part=search]::placeholder{color:var(--lr-color-text-quiet)}[part=search-clear]{min-inline-size:var(--lr-icon-button-size);min-block-size:var(--lr-icon-button-size);border-radius:var(--lr-radius);color:var(--lr-color-text-quiet);font-size:var(--lr-font-size-m);cursor:pointer;background:0 0;border:none;justify-content:center;align-items:center;padding:0;display:inline-flex;position:absolute;inset-block-start:50%;inset-inline-end:var(--lr-space-2xs);translate:0 -50%}[part=search-clear]:hover{color:var(--lr-color-text);background:color-mix(in oklab, var(--lr-color-surface), var(--lr-color-mix-partner) var(--lr-color-mix-hover))}[part=search-clear]:active{color:var(--lr-color-text);background:color-mix(in oklab, var(--lr-color-surface), var(--lr-color-mix-partner) var(--lr-color-mix-active))}[part=search-clear]:focus-visible{outline:var(--lr-focus-ring-width) solid var(--lr-focus-ring-color);outline-offset:var(--lr-focus-ring-offset)}[part=list]{gap:var(--lr-size-2px);flex-direction:column;min-inline-size:0;display:flex;overflow:clip auto}[part=group-header]{padding:var(--lr-space-2xs) var(--lr-space-s);font-size:var(--lr-font-size-xs);font-weight:var(--lr-font-weight-medium);color:var(--lr-color-text-quiet);text-transform:uppercase}[part=item]{gap:var(--lr-size-2px);box-sizing:border-box;min-inline-size:var(--lr-icon-button-size);min-block-size:var(--lr-icon-button-size);padding:var(--lr-space-xs) var(--lr-space-s);border-radius:var(--lr-radius);cursor:grab;flex-direction:column;display:flex}[part=item][aria-disabled=true]{cursor:not-allowed;opacity:var(--lr-opacity-disabled)}:where([part=item]):hover:where(:not([aria-disabled=true])),:where([part=item]):focus-visible:where(:not([aria-disabled=true])){background:var(--lr-color-surface-hover,var(--lr-color-border))}:where([part=item]):active:where(:not([aria-disabled=true])){background:color-mix(in oklab, var(--lr-color-surface-hover,var(--lr-color-border)), var(--lr-color-mix-partner) var(--lr-color-mix-active));cursor:grabbing}[part=item]:focus-visible{outline:var(--lr-focus-ring-width) solid var(--lr-focus-ring-color);outline-offset:calc(-1 * var(--lr-focus-ring-width))}[part=item-label]{font-weight:var(--lr-font-weight-medium)}[part=item-description]{font-size:var(--lr-font-size-xs);color:var(--lr-color-text-quiet);text-overflow:ellipsis;white-space:nowrap;overflow:hidden}[part=empty]{padding:var(--lr-space-m);color:var(--lr-color-text-quiet);text-align:center}`;export{styles};
|
|
@@ -39,7 +39,10 @@ export declare class LyraRagEvalDashboard extends LyraElement<LyraRagEvalDashboa
|
|
|
39
39
|
metrics:readonly LyraRagEvaluationMetric[];
|
|
40
40
|
/** Evaluation runs displayed in the trend chart and run history. */
|
|
41
41
|
runs:readonly LyraRagEvaluationRun[];
|
|
42
|
-
/** Controlled id of the active metric; empty selects the first available metric.
|
|
42
|
+
/** Controlled id of the active metric; empty selects the first available metric. A non-empty
|
|
43
|
+
* value that matches no declared `metrics` entry selects no metric at all (no button renders
|
|
44
|
+
* `aria-pressed="true"`, and no chart renders) rather than silently substituting the first
|
|
45
|
+
* metric -- the host's own readback always agrees with what is rendered. */
|
|
43
46
|
metricId:string;
|
|
44
47
|
/** Controlled evaluation slice. An unavailable value is preserved and renders an explicit
|
|
45
48
|
* localized state until the host changes it or supplies a matching run. */
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
var __decorate=function(decorators,target,key,desc){var c=arguments.length,r=c<3?target:desc===null?desc=Object.getOwnPropertyDescriptor(target,key):desc,d;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")r=Reflect.decorate(decorators,target,key,desc);else for(var i=decorators.length-1;i>=0;i--)(d=decorators[i])&&(r=(c<3?d(r):c>3?d(target,key,r):d(target,key))||r);return c>3&&r&&Object.defineProperty(target,key,r),r};import{html,nothing}from"lit";import{property}from"lit/decorators.js";import{getNumberFormat}from"../../../internal/intl-cache.js";import{LyraElement}from"../../../internal/lyra-element.js";import{firstByRetrievalIdentity,isNonBlankIdentity}from"../retrieval-identity.js";import{finiteRange}from"../../../internal/numbers.js";import{trueDefaultBooleanConverter}from"../../../internal/converters.js";import"../../charts/chart/lite-chart.class.js";import"../../data/stat/stat.class.js";import"../../overlays/empty/empty.class.js";import{styles}from"./rag-eval-dashboard.styles.js";import{retrievalSemanticLabel,retrievalSemanticRole}from"../retrieval-semantic-owner.js";import{LYRA_DEFAULT_ragEvalDashboardAllSlices,LYRA_DEFAULT_ragEvalDashboardEmpty,LYRA_DEFAULT_ragEvalDashboardLabel,LYRA_DEFAULT_ragEvalDashboardRuns,LYRA_DEFAULT_ragEvalDashboardSliceUnavailable,LYRA_DEFAULT_ragEvalDashboardSlices}from"../../../internal/default-strings.generated.js";function isRecord(value){return typeof value=="object"&&value!==null&&!Array.isArray(value)}class LyraRagEvalDashboard extends LyraElement{constructor(){super(...arguments),this.metrics=[],this.runs=[],this.metricId="",this.slice="",this.showChart=!0,this.chartHeight="220px"}static{this.defaultStrings={...super.defaultStrings,ragEvalDashboardAllSlices:LYRA_DEFAULT_ragEvalDashboardAllSlices,ragEvalDashboardEmpty:LYRA_DEFAULT_ragEvalDashboardEmpty,ragEvalDashboardLabel:LYRA_DEFAULT_ragEvalDashboardLabel,ragEvalDashboardRuns:LYRA_DEFAULT_ragEvalDashboardRuns,ragEvalDashboardSliceUnavailable:LYRA_DEFAULT_ragEvalDashboardSliceUnavailable,ragEvalDashboardSlices:LYRA_DEFAULT_ragEvalDashboardSlices}}static{this.ownedCollectionProperties=Object.freeze(["metrics","runs"])}static{this.styles=[LyraElement.styles,styles]}get normalizedMetrics(){return firstByRetrievalIdentity(Array.isArray(this.metrics)?this.metrics:[],metric=>metric.id)}get normalizedRuns(){return firstByRetrievalIdentity(Array.isArray(this.runs)?this.runs.filter(run=>isRecord(run)&&isNonBlankIdentity(run.id)&&typeof run.label=="string"&&isRecord(run.metrics)):[],run=>run.id)}activeMetric(metrics){return metrics.find(metric=>metric.id===this.metricId)
|
|
1
|
+
var __decorate=function(decorators,target,key,desc){var c=arguments.length,r=c<3?target:desc===null?desc=Object.getOwnPropertyDescriptor(target,key):desc,d;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")r=Reflect.decorate(decorators,target,key,desc);else for(var i=decorators.length-1;i>=0;i--)(d=decorators[i])&&(r=(c<3?d(r):c>3?d(target,key,r):d(target,key))||r);return c>3&&r&&Object.defineProperty(target,key,r),r};import{html,nothing}from"lit";import{property}from"lit/decorators.js";import{getNumberFormat}from"../../../internal/intl-cache.js";import{LyraElement}from"../../../internal/lyra-element.js";import{firstByRetrievalIdentity,isNonBlankIdentity}from"../retrieval-identity.js";import{finiteRange}from"../../../internal/numbers.js";import{trueDefaultBooleanConverter}from"../../../internal/converters.js";import"../../charts/chart/lite-chart.class.js";import"../../data/stat/stat.class.js";import"../../overlays/empty/empty.class.js";import{styles}from"./rag-eval-dashboard.styles.js";import{retrievalSemanticLabel,retrievalSemanticRole}from"../retrieval-semantic-owner.js";import{LYRA_DEFAULT_ragEvalDashboardAllSlices,LYRA_DEFAULT_ragEvalDashboardEmpty,LYRA_DEFAULT_ragEvalDashboardLabel,LYRA_DEFAULT_ragEvalDashboardRuns,LYRA_DEFAULT_ragEvalDashboardSliceUnavailable,LYRA_DEFAULT_ragEvalDashboardSlices}from"../../../internal/default-strings.generated.js";function isRecord(value){return typeof value=="object"&&value!==null&&!Array.isArray(value)}class LyraRagEvalDashboard extends LyraElement{constructor(){super(...arguments),this.metrics=[],this.runs=[],this.metricId="",this.slice="",this.showChart=!0,this.chartHeight="220px"}static{this.defaultStrings={...super.defaultStrings,ragEvalDashboardAllSlices:LYRA_DEFAULT_ragEvalDashboardAllSlices,ragEvalDashboardEmpty:LYRA_DEFAULT_ragEvalDashboardEmpty,ragEvalDashboardLabel:LYRA_DEFAULT_ragEvalDashboardLabel,ragEvalDashboardRuns:LYRA_DEFAULT_ragEvalDashboardRuns,ragEvalDashboardSliceUnavailable:LYRA_DEFAULT_ragEvalDashboardSliceUnavailable,ragEvalDashboardSlices:LYRA_DEFAULT_ragEvalDashboardSlices}}static{this.ownedCollectionProperties=Object.freeze(["metrics","runs"])}static{this.styles=[LyraElement.styles,styles]}get normalizedMetrics(){return firstByRetrievalIdentity(Array.isArray(this.metrics)?this.metrics:[],metric=>metric.id)}get normalizedRuns(){return firstByRetrievalIdentity(Array.isArray(this.runs)?this.runs.filter(run=>isRecord(run)&&isNonBlankIdentity(run.id)&&typeof run.label=="string"&&isRecord(run.metrics)):[],run=>run.id)}activeMetric(metrics){return this.metricId?metrics.find(metric=>metric.id===this.metricId):metrics[0]}slices(runs){return[...new Set(runs.map(run=>run.slice).filter(slice=>!!slice))]}filteredRuns(runs){return this.slice?runs.filter(run=>run.slice===this.slice):runs}formatMetric(metric,raw){const value=Number.isFinite(raw)?raw:0;return metric.format==="percent"?getNumberFormat(this.effectiveLocale,{style:"percent",maximumFractionDigits:1}).format(finiteRange(value,0,0,1)):getNumberFormat(this.effectiveLocale,{maximumFractionDigits:3}).format(value)}latestValue(metric,runs){return[...runs].reverse().find(run=>Number.isFinite(run.metrics[metric.id]))?.metrics[metric.id]}emitRunChange(run){this.emit("lr-run-change",{run})}renderSlices(slices){if(!slices.length)return nothing;const allSlicesPart=this.slice?"slice":"slice slice-selected";return html`
|
|
2
2
|
<nav part="slices" aria-label=${this.localize("ragEvalDashboardSlices")}>
|
|
3
3
|
<button
|
|
4
4
|
part=${allSlicesPart}
|
|
@@ -22,7 +22,7 @@ var __decorate=function(decorators,target,key,desc){var c=arguments.length,r=c<3
|
|
|
22
22
|
></lr-chunk-inspector>
|
|
23
23
|
${this.presentation==="expanded"?this.renderMetadata(chunk.metadata):nothing}
|
|
24
24
|
</div>
|
|
25
|
-
`}}static{this.defaultStrings={...super.defaultStrings,chunkInspectorEmpty:LYRA_DEFAULT_chunkInspectorEmpty,chunkInspectorLabel:LYRA_DEFAULT_chunkInspectorLabel,loadMore:LYRA_DEFAULT_loadMore,retrievalResultsSelectRow:LYRA_DEFAULT_retrievalResultsSelectRow,untitledSource:LYRA_DEFAULT_untitledSource}}static{this.ownedCollectionProperties=Object.freeze(["chunks","selectedChunkIds","groupOrder"])}static{this.styles=[LyraElement.styles,styles]}static{this.immutableEventDetails=Object.freeze(["lr-select","lr-chunk-open"])}connectedCallback(){super.connectedCallback(),this.errorAnnouncementSink??=acquireAnnouncementSink("assertive",{document:this.ownerDocument,source:this}),this.emptyAnnouncementSink??=acquireAnnouncementSink("polite",{document:this.ownerDocument,source:this})}disconnectedCallback(){this.isMounting=!0,this.errorAnnouncementSink?.release(),this.errorAnnouncementSink=void 0,this.emptyAnnouncementSink?.release(),this.emptyAnnouncementSink=void 0,this.wasEmptyPresented=!1,super.disconnectedCallback()}deepActiveElement(){return deepActiveElementIn(this.shadowRoot)}chunkAnchor(start){let current=start;for(;current&¤t!==this;){if(current.hasAttribute("data-chunk-id"))return current;if(current.parentElement){current=current.parentElement;continue}const root=current.getRootNode();current=root.nodeType===11&&"host"in root?root.host:null}return null}renderedChunkIds(){const roots=[this.renderRoot],virtualList=this.renderRoot.querySelector("lr-virtual-list");return virtualList?.shadowRoot&&roots.push(virtualList.shadowRoot),roots.flatMap(root=>[...root.querySelectorAll("lr-chunk-inspector[data-chunk-id]")].map(element=>element.getAttribute("data-chunk-id")).filter(id=>id!==null))}willUpdate(changed){super.willUpdate(changed);const groupingLocaleSignature=this.grouping==="source"?`${this.effectiveLocale}\0${this.localize("untitledSource")}`:"";if((this.processedChunksCache===void 0||changed.has("chunks")||changed.has("dedupe")||changed.has("sort")||changed.has("grouping")||changed.has("groupBy")||changed.has("groupLabel")||changed.has("groupOrder")||groupingLocaleSignature!==this.processedGroupingLocaleSignature)&&(this.processedGroupingLocaleSignature=groupingLocaleSignature,this.processedChunksCache=this.computeProcessedChunks()),changed.has("chunks")||changed.has("selectedChunkIds")){const normalized=this.normalizedSelectedChunkIds();(normalized.length!==this.selectedChunkIds.length||normalized.some((id,index)=>id!==this.selectedChunkIds[index]))&&(this.selectedChunkIds=normalized)}if(!changed.has("chunks")&&!changed.has("dedupe")&&!changed.has("sort")&&!changed.has("grouping")&&!changed.has("groupBy")&&!changed.has("groupLabel")&&!changed.has("groupOrder")&&!changed.has("presentation")&&!changed.has("selectable")&&!changed.has("virtualizeAt")&&!changed.has("loading")&&!changed.has("errorText"))return;const focusedId=this.chunkAnchor(this.deepActiveElement())?.getAttribute("data-chunk-id");if(!focusedId)return;const previousIds=this.previousProcessedChunkIds.length?this.previousProcessedChunkIds:this.renderedChunkIds(),focusedIndex=Math.max(0,previousIds.indexOf(focusedId)),nextChunks=this.errorText?[]:this.processedChunks.chunks;if(nextChunks.length===0){this.pendingFocusTarget="base";return}const survivingIndex=nextChunks.findIndex(chunk=>chunk.id===focusedId),nextIndex=survivingIndex>=0?survivingIndex:Math.min(focusedIndex,nextChunks.length-1);this.pendingFocusTarget=nextChunks[nextIndex].id}updated(changed){super.updated(changed);const wasMounting=this.isMounting;this.isMounting=!1,!wasMounting&&changed.has("errorText")&&this.errorText!==""&&this.isConnected&&this.errorAnnouncementSink?.announce(this.errorText);const emptyPresented=!this.loading&&this.errorText===""&&this.processedChunks.chunks.length===0;!wasMounting&&!this.wasEmptyPresented&&emptyPresented&&this.isConnected&&this.emptyAnnouncementSink?.announce(this.localize("chunkInspectorEmpty")),this.wasEmptyPresented=emptyPresented,this.previousProcessedChunkIds=this.errorText?[]:this.processedChunks.chunks.map(chunk=>chunk.id);const generation=++this.focusRestoreGeneration,target=this.pendingFocusTarget;target!==void 0&&(this.pendingFocusTarget=void 0,this.restoreControlledFocus(target,generation))}async restoreControlledFocus(target,generation){if(await this.updateComplete,generation!==this.focusRestoreGeneration||!this.isConnected)return;if(target==="base"){this.renderRoot.querySelector('[part="base"]')?.focus();return}const virtualList=this.renderRoot.querySelector("lr-virtual-list");if(await virtualList?.updateComplete,generation!==this.focusRestoreGeneration||!this.isConnected)return;const roots=[this.renderRoot];virtualList?.shadowRoot&&roots.push(virtualList.shadowRoot);const candidates=roots.flatMap(root=>[...root.querySelectorAll("[data-chunk-id]")]),checkbox=candidates.find(element=>element.localName==="lr-checkbox"&&element.getAttribute("data-chunk-id")===target);if(checkbox){checkbox.focus();return}const inspector=candidates.find(element=>element.localName==="lr-chunk-inspector"&&element.getAttribute("data-chunk-id")===target);await inspector?.updateComplete,!(generation!==this.focusRestoreGeneration||!this.isConnected)&&inspector?.shadowRoot?.querySelector('[part="open-button"]')?.focus()}get effectiveVirtualizeAt(){return finiteCount(this.virtualizeAt,50)}canonicalChunks(){return firstByRetrievalIdentity(Array.isArray(this.chunks)?this.chunks.filter(isValidRetrievalChunk):[],chunk=>chunk.id)}normalizedSelectedChunkIds(){const validIds=new Set(this.canonicalChunks().map(chunk=>chunk.id));return canonicalIdentityList(this.selectedChunkIds).filter(id=>validIds.has(id))}get processedChunks(){return this.processedChunksCache??=this.computeProcessedChunks()}computeProcessedChunks(){const canonical=this.canonicalChunks(),sorted=this.sort==="score"?canonical.sort((a,b)=>safeScore(b.score)-safeScore(a.score)):canonical;if(this.grouping==="source")return this.bucketed(sorted,chunk=>chunk.source.id,(_id,groupChunks)=>groupChunks[0].source.name||this.localize("untitledSource"));if(this.grouping==="custom"&&this.groupBy){const groupBy=this.groupBy;return this.bucketed(sorted,groupBy,(id,groupChunks)=>this.groupLabel?.(id,groupChunks)??id)}return{chunks:sorted,groups:[]}}orderedGroupKeys(grouped){const firstSeen=[...grouped.keys()];if(this.grouping!=="custom"||!this.groupOrder)return firstSeen;if(typeof this.groupOrder=="function")return firstSeen.sort(this.groupOrder);const ordered=[...new Set(this.groupOrder)].filter(id=>grouped.has(id)),listed=new Set(ordered);return[...ordered,...firstSeen.filter(id=>!listed.has(id))]}bucketed(sorted,keyOf,labelOf){const grouped=new Map;for(const chunk of sorted){const key=keyOf(chunk),existing=grouped.get(key);existing?existing.push(chunk):grouped.set(key,[chunk])}const rows=[],groups=[];for(const key of this.orderedGroupKeys(grouped)){const groupChunks=grouped.get(key);!groupChunks||groupChunks.length===0||(groups.push({key,label:labelOf(key,groupChunks),startIndex:rows.length}),rows.push(...groupChunks))}return{chunks:rows,groups}}toggleSelect(chunk){const next=new Set(this.normalizedSelectedChunkIds());next.has(chunk.id)?next.delete(chunk.id):next.add(chunk.id);const chunkIds=[...next];this.selectedChunkIds=chunkIds;const selectedChunks=this.canonicalChunks().filter(c=>next.has(c.id));this.emit("lr-select",{chunkIds,chunks:selectedChunks})}formatMetadataValue(value){if(value==null)return"";if(typeof value=="string"||typeof value=="boolean")return String(value);if(typeof value=="number")return getNumberFormat(this.effectiveLocale).format(finiteNumber(value,0));try{return JSON.stringify(value)}catch{return String(value)}}renderMetadata(metadata){const entries=metadata?Object.entries(metadata):[];return entries.length===0?nothing:html`
|
|
25
|
+
`}}static{this.defaultStrings={...super.defaultStrings,chunkInspectorEmpty:LYRA_DEFAULT_chunkInspectorEmpty,chunkInspectorLabel:LYRA_DEFAULT_chunkInspectorLabel,loadMore:LYRA_DEFAULT_loadMore,retrievalResultsSelectRow:LYRA_DEFAULT_retrievalResultsSelectRow,untitledSource:LYRA_DEFAULT_untitledSource}}static{this.ownedCollectionProperties=Object.freeze(["chunks","selectedChunkIds","groupOrder"])}static{this.styles=[LyraElement.styles,styles]}static{this.immutableEventDetails=Object.freeze(["lr-select","lr-chunk-open"])}connectedCallback(){super.connectedCallback(),this.errorAnnouncementSink??=acquireAnnouncementSink("assertive",{document:this.ownerDocument,source:this}),this.emptyAnnouncementSink??=acquireAnnouncementSink("polite",{document:this.ownerDocument,source:this})}disconnectedCallback(){this.isMounting=!0,this.errorAnnouncementSink?.release(),this.errorAnnouncementSink=void 0,this.emptyAnnouncementSink?.release(),this.emptyAnnouncementSink=void 0,this.wasEmptyPresented=!1,super.disconnectedCallback()}deepActiveElement(){return deepActiveElementIn(this.shadowRoot)}chunkAnchor(start){let current=start;for(;current&¤t!==this;){if(current.hasAttribute("data-chunk-id"))return current;if(current.parentElement){current=current.parentElement;continue}const root=current.getRootNode();current=root.nodeType===11&&"host"in root?root.host:null}return null}renderedChunkIds(){const roots=[this.renderRoot],virtualList=this.renderRoot.querySelector("lr-virtual-list");return virtualList?.shadowRoot&&roots.push(virtualList.shadowRoot),roots.flatMap(root=>[...root.querySelectorAll("lr-chunk-inspector[data-chunk-id]")].map(element=>element.getAttribute("data-chunk-id")).filter(id=>id!==null))}willUpdate(changed){super.willUpdate(changed);const groupingLocaleSignature=this.grouping==="source"?`${this.effectiveLocale}\0${this.localize("untitledSource")}`:"";if((this.processedChunksCache===void 0||changed.has("chunks")||changed.has("dedupe")||changed.has("sort")||changed.has("grouping")||changed.has("groupBy")||changed.has("groupLabel")||changed.has("groupOrder")||groupingLocaleSignature!==this.processedGroupingLocaleSignature)&&(this.processedGroupingLocaleSignature=groupingLocaleSignature,this.processedChunksCache=this.computeProcessedChunks()),changed.has("chunks")||changed.has("selectedChunkIds")){const normalized=this.normalizedSelectedChunkIds();if(normalized.length!==this.selectedChunkIds.length||normalized.some((id,index)=>id!==this.selectedChunkIds[index])){const shouldAnnounce=this.hasUpdated&&changed.has("chunks");if(this.selectedChunkIds=normalized,shouldAnnounce){const selected=new Set(normalized);this.emit("lr-select",{chunkIds:normalized,chunks:this.canonicalChunks().filter(chunk=>selected.has(chunk.id))})}}}if(!changed.has("chunks")&&!changed.has("dedupe")&&!changed.has("sort")&&!changed.has("grouping")&&!changed.has("groupBy")&&!changed.has("groupLabel")&&!changed.has("groupOrder")&&!changed.has("presentation")&&!changed.has("selectable")&&!changed.has("virtualizeAt")&&!changed.has("loading")&&!changed.has("errorText"))return;const focusedId=this.chunkAnchor(this.deepActiveElement())?.getAttribute("data-chunk-id");if(!focusedId)return;const previousIds=this.previousProcessedChunkIds.length?this.previousProcessedChunkIds:this.renderedChunkIds(),focusedIndex=Math.max(0,previousIds.indexOf(focusedId)),nextChunks=this.errorText?[]:this.processedChunks.chunks;if(nextChunks.length===0){this.pendingFocusTarget="base";return}const survivingIndex=nextChunks.findIndex(chunk=>chunk.id===focusedId),nextIndex=survivingIndex>=0?survivingIndex:Math.min(focusedIndex,nextChunks.length-1);this.pendingFocusTarget=nextChunks[nextIndex].id}updated(changed){super.updated(changed);const wasMounting=this.isMounting;this.isMounting=!1,!wasMounting&&changed.has("errorText")&&this.errorText!==""&&this.isConnected&&this.errorAnnouncementSink?.announce(this.errorText);const emptyPresented=!this.loading&&this.errorText===""&&this.processedChunks.chunks.length===0;!wasMounting&&!this.wasEmptyPresented&&emptyPresented&&this.isConnected&&this.emptyAnnouncementSink?.announce(this.localize("chunkInspectorEmpty")),this.wasEmptyPresented=emptyPresented,this.previousProcessedChunkIds=this.errorText?[]:this.processedChunks.chunks.map(chunk=>chunk.id);const generation=++this.focusRestoreGeneration,target=this.pendingFocusTarget;target!==void 0&&(this.pendingFocusTarget=void 0,this.restoreControlledFocus(target,generation))}async restoreControlledFocus(target,generation){if(await this.updateComplete,generation!==this.focusRestoreGeneration||!this.isConnected)return;if(target==="base"){this.renderRoot.querySelector('[part="base"]')?.focus();return}const virtualList=this.renderRoot.querySelector("lr-virtual-list");if(await virtualList?.updateComplete,generation!==this.focusRestoreGeneration||!this.isConnected)return;const roots=[this.renderRoot];virtualList?.shadowRoot&&roots.push(virtualList.shadowRoot);const candidates=roots.flatMap(root=>[...root.querySelectorAll("[data-chunk-id]")]),checkbox=candidates.find(element=>element.localName==="lr-checkbox"&&element.getAttribute("data-chunk-id")===target);if(checkbox){checkbox.focus();return}const inspector=candidates.find(element=>element.localName==="lr-chunk-inspector"&&element.getAttribute("data-chunk-id")===target);await inspector?.updateComplete,!(generation!==this.focusRestoreGeneration||!this.isConnected)&&inspector?.shadowRoot?.querySelector('[part="open-button"]')?.focus()}get effectiveVirtualizeAt(){return finiteCount(this.virtualizeAt,50)}canonicalChunks(){return firstByRetrievalIdentity(Array.isArray(this.chunks)?this.chunks.filter(isValidRetrievalChunk):[],chunk=>chunk.id)}normalizedSelectedChunkIds(){const validIds=new Set(this.canonicalChunks().map(chunk=>chunk.id));return canonicalIdentityList(this.selectedChunkIds).filter(id=>validIds.has(id))}get processedChunks(){return this.processedChunksCache??=this.computeProcessedChunks()}computeProcessedChunks(){const canonical=this.canonicalChunks(),sorted=this.sort==="score"?canonical.sort((a,b)=>safeScore(b.score)-safeScore(a.score)):canonical;if(this.grouping==="source")return this.bucketed(sorted,chunk=>chunk.source.id,(_id,groupChunks)=>groupChunks[0].source.name||this.localize("untitledSource"));if(this.grouping==="custom"&&this.groupBy){const groupBy=this.groupBy;return this.bucketed(sorted,groupBy,(id,groupChunks)=>this.groupLabel?.(id,groupChunks)??id)}return{chunks:sorted,groups:[]}}orderedGroupKeys(grouped){const firstSeen=[...grouped.keys()];if(this.grouping!=="custom"||!this.groupOrder)return firstSeen;if(typeof this.groupOrder=="function")return firstSeen.sort(this.groupOrder);const ordered=[...new Set(this.groupOrder)].filter(id=>grouped.has(id)),listed=new Set(ordered);return[...ordered,...firstSeen.filter(id=>!listed.has(id))]}bucketed(sorted,keyOf,labelOf){const grouped=new Map;for(const chunk of sorted){const key=keyOf(chunk),existing=grouped.get(key);existing?existing.push(chunk):grouped.set(key,[chunk])}const rows=[],groups=[];for(const key of this.orderedGroupKeys(grouped)){const groupChunks=grouped.get(key);!groupChunks||groupChunks.length===0||(groups.push({key,label:labelOf(key,groupChunks),startIndex:rows.length}),rows.push(...groupChunks))}return{chunks:rows,groups}}toggleSelect(chunk){const next=new Set(this.normalizedSelectedChunkIds());next.has(chunk.id)?next.delete(chunk.id):next.add(chunk.id);const chunkIds=[...next];this.selectedChunkIds=chunkIds;const selectedChunks=this.canonicalChunks().filter(c=>next.has(c.id));this.emit("lr-select",{chunkIds,chunks:selectedChunks})}formatMetadataValue(value){if(value==null)return"";if(typeof value=="string"||typeof value=="boolean")return String(value);if(typeof value=="number")return getNumberFormat(this.effectiveLocale).format(finiteNumber(value,0));try{return JSON.stringify(value)}catch{return String(value)}}renderMetadata(metadata){const entries=metadata?Object.entries(metadata):[];return entries.length===0?nothing:html`
|
|
26
26
|
<dl part="metadata">
|
|
27
27
|
${entries.map(([key,value])=>html`<div part="metadata-entry">
|
|
28
28
|
<dt part="metadata-term">${key}</dt>
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
var __decorate=function(decorators,target,key,desc){var c=arguments.length,r=c<3?target:desc===null?desc=Object.getOwnPropertyDescriptor(target,key):desc,d;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")r=Reflect.decorate(decorators,target,key,desc);else for(var i=decorators.length-1;i>=0;i--)(d=decorators[i])&&(r=(c<3?d(r):c>3?d(target,key,r):d(target,key))||r);return c>3&&r&&Object.defineProperty(target,key,r),r};import{html,nothing}from"lit";import{property}from"lit/decorators.js";import{LyraElement}from"../../../internal/lyra-element.js";import"../../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{retrievalSemanticLabel,retrievalSemanticRole}from"../retrieval-semantic-owner.js";import{formatBoundedRetrievalValue}from"../retrieval-value-format.js";import{acquireAnnouncementSink}from"../../../internal/announcer.js";import{literalSetConverter}from"../../../internal/converters.js";import{canonicalIdentityList,isRecord}from"../retrieval-identity.js";import{LYRA_DEFAULT_cancel,LYRA_DEFAULT_fieldRequired,LYRA_DEFAULT_noMatches,LYRA_DEFAULT_retrievalFilterChipLabel,LYRA_DEFAULT_retrievalFiltersLabel,LYRA_DEFAULT_retrievalModeHybrid,LYRA_DEFAULT_retrievalModeKeyword,LYRA_DEFAULT_retrievalModeLabel,LYRA_DEFAULT_retrievalModeVector,LYRA_DEFAULT_retrievalSearchEmptyDescription,LYRA_DEFAULT_retrievalSearchLabel,LYRA_DEFAULT_search,LYRA_DEFAULT_valueInvalid}from"../../../internal/default-strings.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.placeholder="",this.accessibleLabel=null,this.isMounting=!0,this.wasEmptyPresented=!1,this.chipFocusGeneration=0,this.onQueryInput=e=>{e.stopPropagation(),this.query=e.detail.value},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.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.ownedCollectionProperties=Object.freeze(["filters","scope"])}static{this.styles=[LyraElement.styles,styles]}static{this.immutableEventDetails=Object.freeze(["lr-search","lr-filters-change"])}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})}disconnectedCallback(){this.isMounting=!0,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.errorAnnouncementSink?.announce(this.errorText);const emptyPresented=this.empty&&!this.loading&&this.errorText==="";!wasMounting&&!this.wasEmptyPresented&&emptyPresented&&this.isConnected&&this.emptyAnnouncementSink?.announce(this.localize("noMatches")),this.wasEmptyPresented=emptyPresented}modeItems(){return[{value:"vector",label:this.localize("retrievalModeVector")},{value:"keyword",label:this.localize("retrievalModeKeyword")},{value:"hybrid",label:this.localize("retrievalModeHybrid")}]}formatFilterValue(value){const sentinel=this.localize("valueInvalid");return formatBoundedRetrievalValue(value,{locale:this.effectiveLocale,invalid:sentinel,truncated:sentinel})}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"] lr-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`
|
|
1
|
+
var __decorate=function(decorators,target,key,desc){var c=arguments.length,r=c<3?target:desc===null?desc=Object.getOwnPropertyDescriptor(target,key):desc,d;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")r=Reflect.decorate(decorators,target,key,desc);else for(var i=decorators.length-1;i>=0;i--)(d=decorators[i])&&(r=(c<3?d(r):c>3?d(target,key,r):d(target,key))||r);return c>3&&r&&Object.defineProperty(target,key,r),r};import{html,nothing}from"lit";import{property}from"lit/decorators.js";import{LyraElement}from"../../../internal/lyra-element.js";import"../../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{retrievalSemanticLabel,retrievalSemanticRole}from"../retrieval-semantic-owner.js";import{formatBoundedRetrievalValue}from"../retrieval-value-format.js";import{acquireAnnouncementSink}from"../../../internal/announcer.js";import{literalSetConverter}from"../../../internal/converters.js";import{activeElementIn}from"../../../internal/active-element.js";import{canonicalIdentityList,isRecord}from"../retrieval-identity.js";import{LYRA_DEFAULT_cancel,LYRA_DEFAULT_fieldRequired,LYRA_DEFAULT_noMatches,LYRA_DEFAULT_retrievalFilterChipLabel,LYRA_DEFAULT_retrievalFiltersLabel,LYRA_DEFAULT_retrievalModeHybrid,LYRA_DEFAULT_retrievalModeKeyword,LYRA_DEFAULT_retrievalModeLabel,LYRA_DEFAULT_retrievalModeVector,LYRA_DEFAULT_retrievalSearchEmptyDescription,LYRA_DEFAULT_retrievalSearchLabel,LYRA_DEFAULT_search,LYRA_DEFAULT_valueInvalid}from"../../../internal/default-strings.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.placeholder="",this.accessibleLabel=null,this.isMounting=!0,this.wasEmptyPresented=!1,this.chipFocusGeneration=0,this.onQueryInput=e=>{e.stopPropagation(),this.query=e.detail.value},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.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.ownedCollectionProperties=Object.freeze(["filters","scope"])}static{this.styles=[LyraElement.styles,styles]}static{this.immutableEventDetails=Object.freeze(["lr-search","lr-filters-change"])}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})}disconnectedCallback(){this.isMounting=!0,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.errorAnnouncementSink?.announce(this.errorText);const emptyPresented=this.empty&&!this.loading&&this.errorText==="";!wasMounting&&!this.wasEmptyPresented&&emptyPresented&&this.isConnected&&this.emptyAnnouncementSink?.announce(this.localize("noMatches")),this.wasEmptyPresented=emptyPresented}modeItems(){return[{value:"vector",label:this.localize("retrievalModeVector")},{value:"keyword",label:this.localize("retrievalModeKeyword")},{value:"hybrid",label:this.localize("retrievalModeHybrid")}]}formatFilterValue(value){const sentinel=this.localize("valueInvalid");return formatBoundedRetrievalValue(value,{locale:this.effectiveLocale,invalid:sentinel,truncated:sentinel})}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"] lr-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}
|
|
@@ -8,6 +8,7 @@ var __decorate=function(decorators,target,key,desc){var c=arguments.length,r=c<3
|
|
|
8
8
|
<lr-input
|
|
9
9
|
part="query"
|
|
10
10
|
type="search"
|
|
11
|
+
clearable
|
|
11
12
|
placeholder=${this.placeholder||this.localize("search")}
|
|
12
13
|
.value=${this.query}
|
|
13
14
|
@lr-input=${this.onQueryInput}
|
|
@@ -36,13 +37,13 @@ var __decorate=function(decorators,target,key,desc){var c=arguments.length,r=c<3
|
|
|
36
37
|
variant="brand"
|
|
37
38
|
removable
|
|
38
39
|
value=${s}
|
|
39
|
-
@lr-remove=${event=>{event.stopPropagation();const chip=event.currentTarget;this.removeScope(s,chip.shadowRoot
|
|
40
|
+
@lr-remove=${event=>{event.stopPropagation();const chip=event.currentTarget;this.removeScope(s,activeElementIn(chip.shadowRoot)!==null)}}
|
|
40
41
|
>${s}</lr-chip
|
|
41
42
|
>`)}
|
|
42
43
|
${Object.entries(filters).map(([k,v])=>html`<lr-chip
|
|
43
44
|
removable
|
|
44
45
|
value=${k}
|
|
45
|
-
@lr-remove=${event=>{event.stopPropagation();const chip=event.currentTarget;this.removeFilter(k,chip.shadowRoot
|
|
46
|
+
@lr-remove=${event=>{event.stopPropagation();const chip=event.currentTarget;this.removeFilter(k,activeElementIn(chip.shadowRoot)!==null)}}
|
|
46
47
|
>${this.localize("retrievalFilterChipLabel",void 0,{key:k,value:this.formatFilterValue(v)})}</lr-chip
|
|
47
48
|
>`)}
|
|
48
49
|
</lr-chip-group>`:nothing}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
var __decorate=function(decorators,target,key,desc){var c=arguments.length,r=c<3?target:desc===null?desc=Object.getOwnPropertyDescriptor(target,key):desc,d;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")r=Reflect.decorate(decorators,target,key,desc);else for(var i=decorators.length-1;i>=0;i--)(d=decorators[i])&&(r=(c<3?d(r):c>3?d(target,key,r):d(target,key))||r);return c>3&&r&&Object.defineProperty(target,key,r),r};import{html,nothing}from"lit";import{property,state}from"lit/decorators.js";import{LyraElement}from"../../../internal/lyra-element.js";import{nextId}from"../../../internal/a11y.js";import{finiteNumber}from"../../../internal/numbers.js";import{getNumberFormat}from"../../../internal/intl-cache.js";import{chevronIcon}from"../../../internal/icons.js";import"../../agent-tools/span-waterfall/span-waterfall.class.js";import"../chunk-inspector/chunk-inspector.class.js";import{firstByRetrievalIdentity,isValidRetrievalChunk}from"../retrieval-identity.js";import{styles}from"./retrieval-trace.styles.js";import{LYRA_DEFAULT_collapse,LYRA_DEFAULT_details,LYRA_DEFAULT_expand,LYRA_DEFAULT_map,LYRA_DEFAULT_navigation,LYRA_DEFAULT_open,LYRA_DEFAULT_popover,LYRA_DEFAULT_retrievalStageEmbed,LYRA_DEFAULT_retrievalStageFilter,LYRA_DEFAULT_retrievalStageQueryRewrite,LYRA_DEFAULT_retrievalStageRerank,LYRA_DEFAULT_retrievalStageRetrieve,LYRA_DEFAULT_retrievalTraceEvidenceToggle,LYRA_DEFAULT_search,LYRA_DEFAULT_select,LYRA_DEFAULT_tokensIn,LYRA_DEFAULT_tokensOut}from"../../../internal/default-strings.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 hasEvidence(evidence){return evidence?!!evidence.text||validChunks(evidence).length>0||!!(evidence.metadata&&Object.keys(evidence.metadata).length>0):!1}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.label="",this.expandedStageIds=new Set,this.evidenceDomIdPrefix=nextId("retrieval-trace-evidence"),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&&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})}}}static{this.defaultStrings={...super.defaultStrings,collapse:LYRA_DEFAULT_collapse,details:LYRA_DEFAULT_details,expand:LYRA_DEFAULT_expand,map:LYRA_DEFAULT_map,navigation:LYRA_DEFAULT_navigation,open:LYRA_DEFAULT_open,popover:LYRA_DEFAULT_popover,retrievalStageEmbed:LYRA_DEFAULT_retrievalStageEmbed,retrievalStageFilter:LYRA_DEFAULT_retrievalStageFilter,retrievalStageQueryRewrite:LYRA_DEFAULT_retrievalStageQueryRewrite,retrievalStageRerank:LYRA_DEFAULT_retrievalStageRerank,retrievalStageRetrieve:LYRA_DEFAULT_retrievalStageRetrieve,retrievalTraceEvidenceToggle:LYRA_DEFAULT_retrievalTraceEvidenceToggle,search:LYRA_DEFAULT_search,select:LYRA_DEFAULT_select,tokensIn:LYRA_DEFAULT_tokensIn,tokensOut:LYRA_DEFAULT_tokensOut}}static{this.ownedCollectionProperties=Object.freeze(["stages"])}static{this.styles=[LyraElement.styles,styles]}static{this.immutableEventDetails=Object.freeze(["lr-stage-chunk-action"])}get normalizedStages(){return firstByRetrievalIdentity(Array.isArray(this.stages)?this.stages:[],stage=>stage.id)}stageLabel(stage){if(typeof stage.label=="string"&&stage.label)return stage.label;const entry=STAGE_LABEL[stage.kind];return entry?this.localize(entry.key):String(stage.kind)}toSpans(){return this.normalizedStages.map(stage=>({id:stage.id,name:this.stageLabel(stage),kind:STAGE_SPAN_KIND[stage.kind]??"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})}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=validChunks(evidence).map(toLyraChunk),metaEntries=evidence.metadata?Object.entries(evidence.metadata):[];return html`
|
|
1
|
+
var __decorate=function(decorators,target,key,desc){var c=arguments.length,r=c<3?target:desc===null?desc=Object.getOwnPropertyDescriptor(target,key):desc,d;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")r=Reflect.decorate(decorators,target,key,desc);else for(var i=decorators.length-1;i>=0;i--)(d=decorators[i])&&(r=(c<3?d(r):c>3?d(target,key,r):d(target,key))||r);return c>3&&r&&Object.defineProperty(target,key,r),r};import{html,nothing}from"lit";import{property,state}from"lit/decorators.js";import{LyraElement}from"../../../internal/lyra-element.js";import{nextId}from"../../../internal/a11y.js";import{finiteNumber}from"../../../internal/numbers.js";import{getNumberFormat}from"../../../internal/intl-cache.js";import{chevronIcon}from"../../../internal/icons.js";import"../../agent-tools/span-waterfall/span-waterfall.class.js";import"../chunk-inspector/chunk-inspector.class.js";import{firstByRetrievalIdentity,isValidRetrievalChunk}from"../retrieval-identity.js";import{styles}from"./retrieval-trace.styles.js";import{LYRA_DEFAULT_collapse,LYRA_DEFAULT_details,LYRA_DEFAULT_durationMilliseconds,LYRA_DEFAULT_durationSeconds,LYRA_DEFAULT_expand,LYRA_DEFAULT_map,LYRA_DEFAULT_navigation,LYRA_DEFAULT_open,LYRA_DEFAULT_popover,LYRA_DEFAULT_retrievalStageEmbed,LYRA_DEFAULT_retrievalStageFilter,LYRA_DEFAULT_retrievalStageQueryRewrite,LYRA_DEFAULT_retrievalStageRerank,LYRA_DEFAULT_retrievalStageRetrieve,LYRA_DEFAULT_retrievalTraceEvidenceToggle,LYRA_DEFAULT_search,LYRA_DEFAULT_select,LYRA_DEFAULT_tokensIn,LYRA_DEFAULT_tokensOut}from"../../../internal/default-strings.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 hasEvidence(evidence){return evidence?!!evidence.text||validChunks(evidence).length>0||!!(evidence.metadata&&Object.keys(evidence.metadata).length>0):!1}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.label="",this.expandedStageIds=new Set,this.evidenceDomIdPrefix=nextId("retrieval-trace-evidence"),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&&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})}}}static{this.defaultStrings={...super.defaultStrings,collapse:LYRA_DEFAULT_collapse,details:LYRA_DEFAULT_details,durationMilliseconds:LYRA_DEFAULT_durationMilliseconds,durationSeconds:LYRA_DEFAULT_durationSeconds,expand:LYRA_DEFAULT_expand,map:LYRA_DEFAULT_map,navigation:LYRA_DEFAULT_navigation,open:LYRA_DEFAULT_open,popover:LYRA_DEFAULT_popover,retrievalStageEmbed:LYRA_DEFAULT_retrievalStageEmbed,retrievalStageFilter:LYRA_DEFAULT_retrievalStageFilter,retrievalStageQueryRewrite:LYRA_DEFAULT_retrievalStageQueryRewrite,retrievalStageRerank:LYRA_DEFAULT_retrievalStageRerank,retrievalStageRetrieve:LYRA_DEFAULT_retrievalStageRetrieve,retrievalTraceEvidenceToggle:LYRA_DEFAULT_retrievalTraceEvidenceToggle,search:LYRA_DEFAULT_search,select:LYRA_DEFAULT_select,tokensIn:LYRA_DEFAULT_tokensIn,tokensOut:LYRA_DEFAULT_tokensOut}}static{this.ownedCollectionProperties=Object.freeze(["stages"])}static{this.styles=[LyraElement.styles,styles]}static{this.immutableEventDetails=Object.freeze(["lr-stage-chunk-action"])}get normalizedStages(){return firstByRetrievalIdentity(Array.isArray(this.stages)?this.stages:[],stage=>stage.id)}stageLabel(stage){if(typeof stage.label=="string"&&stage.label)return stage.label;const entry=STAGE_LABEL[stage.kind];return entry?this.localize(entry.key):String(stage.kind)}toSpans(){return this.normalizedStages.map(stage=>({id:stage.id,name:this.stageLabel(stage),kind:STAGE_SPAN_KIND[stage.kind]??"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})}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=validChunks(evidence).map(toLyraChunk),metaEntries=evidence.metadata?Object.entries(evidence.metadata):[];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"
|
|
@@ -53,4 +53,10 @@ labelPlural:string;private slottedCount;private readonly listId;private readonly
|
|
|
53
53
|
* handy for building a `label-plural` string that stays in sync with
|
|
54
54
|
* what's actually slotted without hand-counting DOM children, e.g.
|
|
55
55
|
* `list.labelPlural = \`${list.sourceCount} sources\`;`. */
|
|
56
|
-
get sourceCount():number;
|
|
56
|
+
get sourceCount():number;
|
|
57
|
+
/** Intentionally inert -- `sourceCount` is always derived live from the actual slotted
|
|
58
|
+
* children. A getter with no setter throws (in strict-mode module code, which every consumer
|
|
59
|
+
* runs) the moment anything assigns to it, including a stray `.sourceCount=${x}` template
|
|
60
|
+
* binding; this no-op keeps that assignment harmless instead of throwing from inside
|
|
61
|
+
* framework internals. */
|
|
62
|
+
set sourceCount(_value:number);private onSlotChange;private toggle;render():TemplateResult;}declare global{interface HTMLElementTagNameMap{'lr-source-list':LyraSourceList;}}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
var __decorate=function(decorators,target,key,desc){var c=arguments.length,r=c<3?target:desc===null?desc=Object.getOwnPropertyDescriptor(target,key):desc,d;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")r=Reflect.decorate(decorators,target,key,desc);else for(var i=decorators.length-1;i>=0;i--)(d=decorators[i])&&(r=(c<3?d(r):c>3?d(target,key,r):d(target,key))||r);return c>3&&r&&Object.defineProperty(target,key,r),r};import{html}from"lit";import{property,state}from"lit/decorators.js";import{LyraElement}from"../../../internal/lyra-element.js";import{nextId}from"../../../internal/a11y.js";import{chevronIcon}from"../../../internal/icons.js";import{tag}from"../../../internal/prefix.js";import{styles}from"./source-list.styles.js";import{LYRA_DEFAULT_sourceListDefaultLabel}from"../../../internal/default-strings.generated.js";class LyraSourceList extends LyraElement{constructor(){super(...arguments),this.expanded=!1,this.labelPlural="",this.slottedCount=0,this.listId=nextId("source-list-region"),this.previousRoles=new Map,this.roleObserverGeneration=0,this.onSlotChange=e=>{const elements=e.target.assignedElements({flatten:!0});this.slottedCount=elements.length,this.syncItemRoles(elements)},this.toggle=()=>{this.expanded=!this.expanded,this.emit("lr-toggle",{expanded:this.expanded})}}static{this.defaultStrings={...super.defaultStrings,sourceListDefaultLabel:LYRA_DEFAULT_sourceListDefaultLabel}}static{this.styles=[LyraElement.styles,styles]}isCompatibleListItem(element){const existingRole=element.getAttribute("role")?.trim(),role=existingRole==="listitem"&&this.previousRoles.has(element)&&this.previousRoles.get(element)!=="listitem"?void 0:existingRole;if(role==="listitem")return!0;if(role||element.hasAttribute("tabindex")||element.isContentEditable)return!1;const localName=element.localName;return localName===tag("source-card")||localName==="div"||localName==="span"}onRoleMutations(records){for(const record of records){const element=record.target;if(!(element.parentElement!==this||element.getAttribute("slot"))){record.attributeName==="role"&&this.previousRoles.has(element)&&this.previousRoles.set(element,element.getAttribute("role")),this.reconcileAssignedItems();return}}}observeRoleChanges(){if(!this.isConnected)return;const ownerDocument=this.ownerDocument;if(!this.roleObserver||this.roleObserverDocument!==ownerDocument){this.resetRoleObserver();const MutationObserverCtor=ownerDocument.defaultView?.MutationObserver;if(!MutationObserverCtor)return;const generation=this.roleObserverGeneration,observer=new MutationObserverCtor(records=>{this.roleObserver!==observer||this.roleObserverGeneration!==generation||!this.isConnected||this.ownerDocument!==ownerDocument||this.onRoleMutations(records)});this.roleObserver=observer,this.roleObserverDocument=ownerDocument}this.roleObserver.observe(this,{attributes:!0,attributeFilter:["role","tabindex","contenteditable"],subtree:!0})}syncItemRoles(elements){this.roleObserver?.disconnect();const assigned=new Set(elements),hasListSemantics=elements.every(element=>this.isCompatibleListItem(element)),list=this.shadowRoot?.querySelector('[part="list"]');this.isConnected&&hasListSemantics?list?.setAttribute("role","list"):list?.removeAttribute("role");for(const[element,role]of this.previousRoles)hasListSemantics&&assigned.has(element)&&element.getAttribute("role")==="listitem"&&role!=="listitem"||(role===null?element.removeAttribute("role"):element.setAttribute("role",role),this.previousRoles.delete(element));if(hasListSemantics)for(const element of elements)element.getAttribute("role")?.trim()||(this.previousRoles.has(element)||this.previousRoles.set(element,element.getAttribute("role")),element.setAttribute("role","listitem"));this.observeRoleChanges()}reconcileAssignedItems(){const slot=this.shadowRoot?.querySelector("slot");if(!slot)return;const elements=slot.assignedElements({flatten:!0});this.slottedCount=elements.length,this.syncItemRoles(elements)}connectedCallback(){if(super.connectedCallback(),this.observeRoleChanges(),this.hasUpdated){const ownerDocument=this.ownerDocument,generation=this.roleObserverGeneration;this.updateComplete.then(()=>{!this.isConnected||this.ownerDocument!==ownerDocument||this.roleObserverGeneration!==generation||this.reconcileAssignedItems()})}}disconnectedCallback(){this.roleObserver?.disconnect(),this.syncItemRoles([]),this.resetRoleObserver(),super.disconnectedCallback()}adoptedCallback(){super.adoptedCallback(),this.resetRoleObserver()}resetRoleObserver(){this.roleObserverGeneration+=1,this.roleObserver?.disconnect(),this.roleObserver=void 0,this.roleObserverDocument=void 0}willUpdate(changed){if(super.willUpdate(changed),!this.hasUpdated){const elements=Array.from(this.children).filter(el=>!el.getAttribute("slot"));this.slottedCount=elements.length}}firstUpdated(changed){super.firstUpdated(changed),this.reconcileAssignedItems()}get sourceCount(){return this.slottedCount}render(){const requestedHeaderText=this.labelPlural||(this.label==null?this.localize("sourceListDefaultLabel"):this.label),headerText=requestedHeaderText.trim()===""?this.localize("sourceListDefaultLabel"):requestedHeaderText;return html`
|
|
1
|
+
var __decorate=function(decorators,target,key,desc){var c=arguments.length,r=c<3?target:desc===null?desc=Object.getOwnPropertyDescriptor(target,key):desc,d;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")r=Reflect.decorate(decorators,target,key,desc);else for(var i=decorators.length-1;i>=0;i--)(d=decorators[i])&&(r=(c<3?d(r):c>3?d(target,key,r):d(target,key))||r);return c>3&&r&&Object.defineProperty(target,key,r),r};import{html}from"lit";import{property,state}from"lit/decorators.js";import{LyraElement}from"../../../internal/lyra-element.js";import{nextId}from"../../../internal/a11y.js";import{chevronIcon}from"../../../internal/icons.js";import{tag}from"../../../internal/prefix.js";import{styles}from"./source-list.styles.js";import{LYRA_DEFAULT_sourceListDefaultLabel}from"../../../internal/default-strings.generated.js";class LyraSourceList extends LyraElement{constructor(){super(...arguments),this.expanded=!1,this.labelPlural="",this.slottedCount=0,this.listId=nextId("source-list-region"),this.previousRoles=new Map,this.roleObserverGeneration=0,this.onSlotChange=e=>{const elements=e.target.assignedElements({flatten:!0});this.slottedCount=elements.length,this.syncItemRoles(elements)},this.toggle=()=>{this.expanded=!this.expanded,this.emit("lr-toggle",{expanded:this.expanded})}}static{this.defaultStrings={...super.defaultStrings,sourceListDefaultLabel:LYRA_DEFAULT_sourceListDefaultLabel}}static{this.styles=[LyraElement.styles,styles]}isCompatibleListItem(element){const existingRole=element.getAttribute("role")?.trim(),role=existingRole==="listitem"&&this.previousRoles.has(element)&&this.previousRoles.get(element)!=="listitem"?void 0:existingRole;if(role==="listitem")return!0;if(role||element.hasAttribute("tabindex")||element.isContentEditable)return!1;const localName=element.localName;return localName===tag("source-card")||localName==="div"||localName==="span"}onRoleMutations(records){for(const record of records){const element=record.target;if(!(element.parentElement!==this||element.getAttribute("slot"))){record.attributeName==="role"&&this.previousRoles.has(element)&&this.previousRoles.set(element,element.getAttribute("role")),this.reconcileAssignedItems();return}}}observeRoleChanges(){if(!this.isConnected)return;const ownerDocument=this.ownerDocument;if(!this.roleObserver||this.roleObserverDocument!==ownerDocument){this.resetRoleObserver();const MutationObserverCtor=ownerDocument.defaultView?.MutationObserver;if(!MutationObserverCtor)return;const generation=this.roleObserverGeneration,observer=new MutationObserverCtor(records=>{this.roleObserver!==observer||this.roleObserverGeneration!==generation||!this.isConnected||this.ownerDocument!==ownerDocument||this.onRoleMutations(records)});this.roleObserver=observer,this.roleObserverDocument=ownerDocument}this.roleObserver.observe(this,{attributes:!0,attributeFilter:["role","tabindex","contenteditable"],subtree:!0})}syncItemRoles(elements){this.roleObserver?.disconnect();const assigned=new Set(elements),hasListSemantics=elements.every(element=>this.isCompatibleListItem(element)),list=this.shadowRoot?.querySelector('[part="list"]');this.isConnected&&hasListSemantics?list?.setAttribute("role","list"):list?.removeAttribute("role");for(const[element,role]of this.previousRoles)hasListSemantics&&assigned.has(element)&&element.getAttribute("role")==="listitem"&&role!=="listitem"||(role===null?element.removeAttribute("role"):element.setAttribute("role",role),this.previousRoles.delete(element));if(hasListSemantics)for(const element of elements)element.getAttribute("role")?.trim()||(this.previousRoles.has(element)||this.previousRoles.set(element,element.getAttribute("role")),element.setAttribute("role","listitem"));this.observeRoleChanges()}reconcileAssignedItems(){const slot=this.shadowRoot?.querySelector("slot");if(!slot)return;const elements=slot.assignedElements({flatten:!0});this.slottedCount=elements.length,this.syncItemRoles(elements)}connectedCallback(){if(super.connectedCallback(),this.observeRoleChanges(),this.hasUpdated){const ownerDocument=this.ownerDocument,generation=this.roleObserverGeneration;this.updateComplete.then(()=>{!this.isConnected||this.ownerDocument!==ownerDocument||this.roleObserverGeneration!==generation||this.reconcileAssignedItems()})}}disconnectedCallback(){this.roleObserver?.disconnect(),this.syncItemRoles([]),this.resetRoleObserver(),super.disconnectedCallback()}adoptedCallback(){super.adoptedCallback(),this.resetRoleObserver()}resetRoleObserver(){this.roleObserverGeneration+=1,this.roleObserver?.disconnect(),this.roleObserver=void 0,this.roleObserverDocument=void 0}willUpdate(changed){if(super.willUpdate(changed),!this.hasUpdated){const elements=Array.from(this.children).filter(el=>!el.getAttribute("slot"));this.slottedCount=elements.length}}firstUpdated(changed){super.firstUpdated(changed),this.reconcileAssignedItems()}get sourceCount(){return this.slottedCount}set sourceCount(_value){}render(){const requestedHeaderText=this.labelPlural||(this.label==null?this.localize("sourceListDefaultLabel"):this.label),headerText=requestedHeaderText.trim()===""?this.localize("sourceListDefaultLabel"):requestedHeaderText;return html`
|
|
2
2
|
<div part="base">
|
|
3
3
|
<button
|
|
4
4
|
part="header"
|