@aceshooting/lyra-ui 11.2.0 → 12.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +407 -0
- package/README.md +11 -8
- package/custom-elements.json +1 -1
- package/dist/all.d.ts +1 -0
- package/dist/all.js +1 -1
- package/dist/autoloader.js +1 -1
- package/dist/components/agent-tools/tool-param-form/tool-param-form.class.d.ts +0 -1
- package/dist/components/agent-tools/tool-param-form/tool-param-form.class.js +1 -1
- package/dist/components/charts/chart/chart.class.d.ts +13 -1
- package/dist/components/charts/chart/histogram-bin.d.ts +0 -1
- package/dist/components/charts/chart/histogram-bin.js +1 -1
- package/dist/components/charts/chart/lite-chart.class.d.ts +22 -9
- package/dist/components/charts/chart/lite-chart.class.js +6 -6
- package/dist/components/conversation/code-block/code-block-shared.d.ts +4 -54
- package/dist/components/conversation/code-block/code-block-shared.js +1 -1
- package/dist/components/conversation/code-block/shiki-types.d.ts +2 -1
- package/dist/components/conversation/generation-metrics/generation-metrics.class.js +1 -1
- package/dist/components/conversation/model-select/model-select.class.d.ts +0 -3
- package/dist/components/conversation/model-select/model-select.class.js +1 -1
- package/dist/components/conversation/selection-toolbar/selection-toolbar.class.js +1 -1
- package/dist/components/conversation/voice-picker/voice-picker.class.d.ts +0 -1
- package/dist/components/conversation/voice-picker/voice-picker.class.js +1 -1
- package/dist/components/data/data-grid/data-grid.class.js +1 -1
- package/dist/components/data/funnel/funnel.class.d.ts +92 -0
- package/dist/components/data/funnel/funnel.class.js +25 -0
- package/dist/components/data/funnel/funnel.d.ts +1 -0
- package/dist/components/data/funnel/funnel.js +1 -0
- package/dist/components/data/funnel/funnel.styles.d.ts +1 -0
- package/dist/components/data/funnel/funnel.styles.js +127 -0
- package/dist/components/data/graph-query-builder/graph-query-builder.class.d.ts +0 -1
- package/dist/components/data/graph-query-builder/graph-query-builder.class.js +1 -1
- package/dist/components/data/heatmap/heatmap.class.d.ts +199 -14
- package/dist/components/data/heatmap/heatmap.class.js +30 -22
- package/dist/components/data/heatmap/heatmap.styles.js +36 -0
- package/dist/components/data/index.d.ts +1 -0
- package/dist/components/data/index.js +1 -1
- package/dist/components/data/table/table.class.d.ts +18 -4
- package/dist/components/data/table/table.class.js +2 -2
- package/dist/components/data/table/table.styles.js +2 -1
- package/dist/components/data/timeline/timeline-cluster.d.ts +1 -0
- package/dist/components/data/timeline/timeline-cluster.js +1 -0
- package/dist/components/data/timeline/timeline-item.class.d.ts +17 -2
- package/dist/components/data/timeline/timeline-item.class.js +13 -2
- package/dist/components/data/timeline/timeline-item.styles.js +65 -0
- package/dist/components/data/timeline/timeline.class.d.ts +83 -27
- package/dist/components/data/timeline/timeline.class.js +3 -3
- package/dist/components/data/timeline/timeline.d.ts +1 -0
- package/dist/components/data/timeline/timeline.js +1 -1
- package/dist/components/data/timeline/timeline.styles.js +14 -0
- package/dist/components/forms/button/button.class.js +1 -1
- package/dist/components/forms/checkbox/checkbox.class.d.ts +0 -1
- package/dist/components/forms/checkbox/checkbox.class.js +1 -1
- package/dist/components/forms/checkbox-group/checkbox-group.class.d.ts +0 -1
- package/dist/components/forms/checkbox-group/checkbox-group.class.js +1 -1
- package/dist/components/forms/code-editor/code-editor.class.js +1 -1
- package/dist/components/forms/color-picker/color-picker.class.js +1 -1
- package/dist/components/forms/combobox/combobox.class.d.ts +7 -1
- package/dist/components/forms/combobox/combobox.class.js +3 -2
- package/dist/components/forms/combobox/combobox.styles.js +1 -1
- package/dist/components/forms/date-picker/date-input.class.d.ts +23 -0
- package/dist/components/forms/date-picker/date-input.class.js +1 -1
- package/dist/components/forms/emoji-picker/emoji-data-loader.d.ts +0 -1
- package/dist/components/forms/input/native-time-input.class.js +1 -1
- package/dist/components/forms/input/time-input-shared.d.ts +2 -1
- package/dist/components/forms/input/time-input.class.js +1 -1
- package/dist/components/forms/locale-picker/locale-picker.class.d.ts +0 -1
- package/dist/components/forms/locale-picker/locale-picker.class.js +1 -1
- package/dist/components/forms/radio/radio-button.styles.d.ts +0 -1
- package/dist/components/forms/radio/radio-button.styles.js +1 -1
- package/dist/components/forms/radio/radio-group.class.d.ts +0 -1
- package/dist/components/forms/radio/radio-group.class.js +1 -1
- package/dist/components/forms/radio/radio.class.d.ts +0 -1
- package/dist/components/forms/radio/radio.class.js +1 -1
- package/dist/components/forms/rubric-form/rubric-form.class.d.ts +0 -1
- package/dist/components/forms/rubric-form/rubric-form.class.js +1 -1
- package/dist/components/forms/select/select.class.d.ts +0 -1
- package/dist/components/forms/select/select.class.js +1 -1
- package/dist/components/forms/slider/slider.class.d.ts +0 -1
- package/dist/components/forms/slider/slider.class.js +1 -1
- package/dist/components/forms/switch/switch.class.d.ts +0 -1
- package/dist/components/forms/switch/switch.class.js +1 -1
- package/dist/components/forms/time-range/time-range.class.d.ts +0 -1
- package/dist/components/forms/time-range/time-range.class.js +1 -1
- package/dist/components/forms/token-input/token-input.class.d.ts +0 -1
- package/dist/components/forms/token-input/token-input.class.js +1 -1
- package/dist/components/layout/app-rail/app-rail-item.class.d.ts +16 -0
- package/dist/components/layout/app-rail/app-rail-item.class.js +4 -4
- package/dist/components/layout/dashboard-grid/layout-internal.d.ts +0 -1
- package/dist/components/layout/dashboard-grid/layout-internal.js +1 -1
- package/dist/components/layout/details/accordion-owner.d.ts +1 -1
- package/dist/components/layout/filter-bar/filter-bar.class.d.ts +32 -3
- package/dist/components/layout/filter-bar/filter-bar.class.js +2 -1
- package/dist/components/layout/menu/menu-item.class.js +1 -1
- package/dist/components/layout/virtual-list/virtual-list.class.js +1 -1
- package/dist/components/layout/widget/widget.class.d.ts +16 -0
- package/dist/components/layout/widget/widget.class.js +2 -2
- package/dist/components/lr-funnel.d.ts +1 -0
- package/dist/components/lr-funnel.js +1 -0
- package/dist/components/media/av-player/av-metadata.d.ts +0 -2
- package/dist/components/media/av-player/av-metadata.js +1 -1
- package/dist/components/media/file-input/file-input.class.d.ts +0 -1
- package/dist/components/media/file-input/file-input.class.js +1 -1
- package/dist/components/media/flag/flag-peer-bulk-standard.d.ts +25 -0
- package/dist/components/media/flag/flag-peer-bulk-standard.js +1 -0
- package/dist/components/media/flag/flag.class.d.ts +8 -0
- package/dist/components/media/flag/flag.class.js +1 -1
- package/dist/components/media/map/map-loader.d.ts +4 -1
- package/dist/components/media/map/map.class.d.ts +242 -23
- package/dist/components/media/map/map.class.js +2 -2
- package/dist/components/overlays/chip/chip-group.class.d.ts +16 -0
- package/dist/components/overlays/chip/chip-group.class.js +10 -3
- package/dist/components/overlays/overlay/popover.class.d.ts +7 -1
- package/dist/components/overlays/overlay/popover.class.js +1 -1
- package/dist/components/overlays/overlay/tooltip.class.d.ts +1 -0
- package/dist/components/overlays/overlay/tooltip.class.js +1 -1
- package/dist/components/overlays/progress/progress-shared.d.ts +0 -2
- package/dist/components/overlays/progress/progress-shared.js +1 -1
- package/dist/components/overlays/rating/rating.class.js +1 -1
- package/dist/components/retrieval/graph/graph-canvas.d.ts +10 -9
- package/dist/components/retrieval/mind-map/mind-map-layout.d.ts +0 -4
- package/dist/components/retrieval/mind-map/mind-map-layout.js +1 -1
- package/dist/components/utility/format/format-options.d.ts +0 -2
- package/dist/components/utility/format/format-options.js +1 -1
- package/dist/components/utility/icon/icon-resource.d.ts +0 -2
- package/dist/components/utility/icon/icon-resource.js +1 -1
- package/dist/components/viewers/archive-viewer/zip-resource-guard.d.ts +2 -1
- package/dist/components/viewers/docx-viewer/docx-resource-guard.d.ts +0 -3
- package/dist/components/viewers/docx-viewer/docx-resource-guard.js +1 -1
- package/dist/components/viewers/ebook-viewer/ebook-loader.d.ts +2 -1
- package/dist/components/viewers/ebook-viewer/epub-resource-guard.d.ts +0 -3
- package/dist/components/viewers/ebook-viewer/epub-resource-guard.js +1 -1
- package/dist/components/viewers/pdf-viewer/pdf-loader.d.ts +2 -2
- package/dist/components/viewers/pdf-viewer/pdf-viewer.class.js +2 -2
- package/dist/components/viewers/pptx-viewer/pptx-resource-guard.d.ts +0 -2
- package/dist/components/viewers/pptx-viewer/pptx-resource-guard.js +1 -1
- package/dist/components/viewers/spreadsheet-viewer/xlsx-resource-guard.d.ts +0 -5
- package/dist/components/viewers/spreadsheet-viewer/xlsx-resource-guard.js +1 -1
- package/dist/custom-elements-jsx.d.ts +16 -8
- package/dist/events.d.ts +15 -0
- package/dist/internal/accessibility-visibility.d.ts +1 -1
- package/dist/internal/anchor-target.d.ts +1 -3
- package/dist/internal/anchor-target.js +2 -2
- package/dist/internal/anchored-overlay-runtime.d.ts +7 -0
- package/dist/internal/anchored-overlay-runtime.js +1 -0
- package/dist/internal/announcement-text.d.ts +1 -1
- package/dist/internal/ansi.d.ts +0 -4
- package/dist/internal/ansi.js +1 -1
- package/dist/internal/aria-ownership.d.ts +2 -1
- package/dist/internal/autoloader-manifest.js +1 -1
- package/dist/internal/autoloader-tags.d.ts +1 -1
- package/dist/internal/autoloader-tags.js +1 -1
- package/dist/internal/default-strings.generated.d.ts +1 -0
- package/dist/internal/default-strings.generated.js +1 -1
- package/dist/internal/focus-navigation.d.ts +3 -2
- package/dist/internal/form-associated.d.ts +0 -1
- package/dist/internal/form-associated.js +1 -1
- package/dist/internal/form-control-labels.d.ts +0 -3
- package/dist/internal/form-control-labels.js +1 -1
- package/dist/internal/localization-runtime.js +1 -1
- package/dist/internal/localization-types.d.ts +1 -1
- package/dist/internal/localization.js +1 -1
- package/dist/internal/lyra-element.d.ts +7 -14
- package/dist/internal/lyra-element.js +1 -1
- package/dist/internal/nonmodal-overlay-manager.d.ts +9 -0
- package/dist/internal/nonmodal-overlay-manager.js +1 -0
- package/dist/internal/overlay-manager.d.ts +4 -20
- package/dist/internal/overlay-manager.js +1 -1
- package/dist/internal/overlay-stack.d.ts +66 -0
- package/dist/internal/overlay-stack.js +1 -0
- package/dist/internal/package-metadata.d.ts +1 -1
- package/dist/internal/package-metadata.js +1 -1
- package/dist/internal/positioner.js +1 -1
- package/dist/internal/root-registration-allowlist.d.ts +1 -1
- package/dist/internal/root-registration-allowlist.js +1 -1
- package/dist/internal/text-quote.d.ts +1 -1
- package/dist/lyra.d.ts +5 -4
- package/dist/lyra.js +1 -1
- package/dist/ssr/all.d.ts +1 -0
- package/dist/ssr/all.js +1 -1
- package/dist/ssr.d.ts +4 -4
- package/dist/styles/tokens-root.css +488 -0
- package/dist/svelte.d.ts +17 -8
- package/dist/translations/ar.js +1 -1
- package/dist/translations/de.js +1 -1
- package/dist/translations/es.js +1 -1
- package/dist/translations/fa.js +1 -1
- package/dist/translations/fr.js +1 -1
- package/dist/translations/he.js +1 -1
- package/dist/translations/ja.js +1 -1
- package/dist/translations/pt-BR.js +1 -1
- package/dist/translations/ru.js +1 -1
- package/dist/translations/zh-CN.js +1 -1
- package/dist/utilities/localization.js +1 -1
- package/dist/vue.d.ts +16 -8
- package/llms/components/lr-app-rail-item.md +8 -1
- package/llms/components/lr-app-rail.md +6 -0
- package/llms/components/lr-chip-group.md +7 -0
- package/llms/components/lr-chip.md +7 -0
- package/llms/components/lr-combobox.md +42 -0
- package/llms/components/lr-date-input.md +19 -1
- package/llms/components/lr-date-picker.md +19 -1
- package/llms/components/lr-filter-bar.md +50 -1
- package/llms/components/lr-flag.md +14 -0
- package/llms/components/lr-funnel.md +122 -0
- package/llms/components/lr-heatmap.md +55 -8
- package/llms/components/lr-lite-chart.md +20 -8
- package/llms/components/lr-map.md +109 -22
- package/llms/components/lr-option.md +42 -0
- package/llms/components/lr-popover.md +39 -0
- package/llms/components/lr-table.md +7 -3
- package/llms/components/lr-timeline-item.md +49 -24
- package/llms/components/lr-timeline.md +49 -24
- package/llms/components/lr-widget.md +7 -1
- package/llms/index.md +3 -2
- package/llms/peers.md +1 -1
- package/llms/shared.md +110 -1
- package/llms-full.txt +681 -67
- package/llms.txt +1 -1
- package/package.json +26 -8
- package/vscode-css-data.json +63 -0
- package/vscode-html-data.json +108 -23
- package/web-types.json +32738 -310
|
@@ -2,4 +2,4 @@ import{resolveLyraString as resolveRuntimeLyraString}from"./localization-runtime
|
|
|
2
2
|
{extendedAddress}
|
|
3
3
|
{streetAddress}
|
|
4
4
|
{locality} {region} {postalCode}
|
|
5
|
-
{country}`,contactViewerTypeHome:"Home",contactViewerTypeWork:"Work",contactViewerTypeCell:"Mobile",contactViewerTypeVoice:"Voice",contactViewerTypeFax:"Fax",contactViewerTypeInternet:"Internet",contactViewerTypePreferred:"Preferred",exportButtonLabel:"Export",generationStatusElapsedSeconds:"{seconds}s",generationStatusTokenCount:"{count} token",generationStatusTokensCount:"{count} tokens",generationStatusThroughput:"{rate} tok/s",graphDataList:"Graph data",graphItemAnnouncement:"{item} ({index} of {total})",navigation:"Navigation",attachmentRetryWithContext:"Retry {label}",attachmentUploadingWithContext:"Uploading {label}",attachmentUploadingProgress:"Uploading {percent}%",attachmentUploadingIndeterminate:"Uploading\u2026",attachmentUploadFailed:"Upload failed",attachmentUntitledFile:"Untitled file",chartTrendIncreasing:"increasing",chartTrendDecreasing:"decreasing",chartTrendFlat:"flat",chartSummary:"{label}: {count} values, range {min} to {max}, {trend} trend",chartSeriesNoData:"{label}: no data",chartSummaryWithData:"{type} chart. {summaries}.",chartSummaryEmpty:"{type} chart with no data.",chartSummarySeparator:". ",chartData:"Chart data",chartDataSampled:"The generated data table shows a sample of up to 1,000 records. Provide a custom data table to access all chart data.",chartZoomUnavailable:"Zoom is unavailable, but the core chart remains available.",chartDataLabelsUnavailable:"Data labels are unavailable, but the core chart remains available.",chartStackTotalsUnavailable:"Stack totals are unavailable, but the core chart remains available.",chart:"Chart",chartTypeLine:"Line",chartTypeBar:"Bar",chartTypeScatter:"Scatter",chartTypePie:"Pie",chartTypeDoughnut:"Doughnut",chartTypeRadar:"Radar",chartTypePolarArea:"Polar area",chartTypeBubble:"Bubble",boxPlotSeriesSummary:"{label}: {count} distributions, median range {min} to {max}, {trend} median trend",boxPlotSummaryWithData:"Box plot. {summaries}.",boxPlotSummaryEmpty:"Box plot with no data.",boxPlotData:"Box plot data",chartSeriesLabel:"Series",boxPlotMin:"Min",boxPlotQ1:"Q1",boxPlotMedian:"Median",boxPlotQ3:"Q3",boxPlotMax:"Max",boxPlot:"Box plot",histogramFrequency:"Frequency",liteChartMarkSummary:"{series}, {label}: {value} ({index} of {total})",liteChartBarLabel:"{series}, {label}: {value}",chartValueLabel:"{label}: {value}",liteChartCustomMarkSummary:"{content} ({index} of {total})",composerLabel:"Message",composerPlaceholder:"Ask anything\u2026",textareaLabel:"Text",citation:"Citation {index}",citationWithStatus:"Citation {index}, {status}",citationWithCustomLabel:"Citation {index}, {label}",comboboxOverflow:"+{n} more \u2014 refine your search",comboboxRequired:"Please select an option.",comboboxCreate:"Create {value}",comboboxLabel:"Combobox",rename:"Rename {title}",previousMonth:"Previous month",nextMonth:"Next month",chooseDate:"Choose date",date:"Date",dateInputMinMessage:"Date must be on or after {min}.",dateInputMaxMessage:"Date must be on or before {max}.",dateInputPastDisabled:"Date cannot be in the past.",dateInputFutureDisabled:"Date cannot be in the future.",dateInputInvalid:"Enter a valid date.",timeInputLabel:"Time",timeInputHour:"Hour",timeInputMinute:"Minute",timeInputSecond:"Second",timeInputDayPeriod:"Day period",timeInputEmptySegment:"Empty",timeInputOpen:"Open time picker",timeInputPopup:"Choose a time",timeInputNow:"Now",timeInputInvalid:"Enter a complete time.",timeInputMinMessage:"Time must be at or after {min}.",timeInputMaxMessage:"Time must be at or before {max}.",timeInputRangeMessage:"Time must be between {min} and {max} across midnight.",timeInputStepMessage:"Enter a time matching the required interval.",documentPreviewEmpty:"No {type} to display.",convertingDocument:"Converting document\u2026",documentPreviewNotAvailable:"Preview not available for {label}.",documentPreviewGenericFile:"this file",documentPreviewTypeDocument:"document",documentPreviewTypeImage:"image",documentPreviewTypeEmail:"email",documentPreviewTypeCalendar:"calendar",archiveViewerEmpty:"This archive is empty.",archiveViewerFolder:"Folder",archiveViewerFile:"File",spreadsheetViewerUnavailable:"Spreadsheet preview is unavailable.",csvViewerUnavailable:"CSV preview is unavailable.",csvViewerLabel:"CSV document",spreadsheetViewerLabel:"Spreadsheet",knownDateDay:"Day",knownDateMonth:"Month",knownDateYear:"Year",documentPreviewTypeDataset:"dataset",documentPreviewTypeContact:"contact",download:"Download",exportFormatMenuLabel:"{label} format",fileInputDefaultLabel:"Drop files here or click to browse",fileInputAcceptedOne:"{count} file added.",fileInputAcceptedMany:"{count} files added.",fileInputRejectedOne:"{count} file rejected.",fileInputRejectedMany:"{count} files rejected.",fileInputFolderRejected:"Folders are not accepted here.",fileInputRejectedType:"{filename}: this file type is not accepted.",fileInputRejectedSize:"{filename}: this file is too large.",fileInputRejectedCount:"{filename}: only one file can be selected at a time.",fileInputRejectedRead:"{filename}: the file could not be read.",fileInputRejectedLimit:"{filename}: the folder contains too many entries.",elapsedMinutesSecondsTemplate:"{minutes}m {seconds}s",graphNode:"Node {label}",graphLink:"Link from {source} to {target}",graphDiagram:"Node-link diagram with {nodeCount} nodes and {linkCount} links",graphTypedNode:"{label} ({type})",graphExpandableItem:"{item}, expandable",graphNodeFocused:"Centered on {label}",graphSelectionCount:"{count} selected",graphNodesHidden:"{hidden} of {total} nodes hidden",graphCommunity:"Community {label}, {count} nodes",heatmapValueLabel:"value",heatmapMatrixCellLabel:"Row {row}, Col {col}: {value}",heatmapCalendarLabel:"Calendar heatmap of {days} days, {label} range {range}",heatmapMatrixLabel:"Heatmap of {rows} \xD7 {cols} cells, {label} range {range}",heatmapCalendarCellLabel:"{date}: {value}",heatmapNoDataValue:"no data",heatmapDefaultRowLabel:"row {n}",heatmapDefaultColLabel:"col {n}",heatmapSelectedCellLabel:"Selected: {cell}.",heatmapProjectionLimit:"Only the first {count} heatmap cells are shown.",heatmapDecorationLimit:"Only the first {count} heatmap colors, legend stops, and annotations are shown.",inputLabel:"Text",showPassword:"Show password",hidePassword:"Hide password",radioRequired:"Please select an option.",progress:"Progress",responsivePanel:"Panel",popover:"Popover",details:"Details",breadcrumb:"Breadcrumb",timeline:"Timeline",rating:"Rating",sliderLabel:"Slider",feedbackPositive:"Good response",feedbackNegative:"Bad response",feedbackReasonsLabel:"Choose a reason",feedbackCommentLabel:"Add a comment",feedbackCommentPlaceholder:"Add more detail (optional)",feedbackSubmit:"Submit feedback",feedbackSubmitted:"Feedback submitted",colorPicker:"Color picker",mediaCardUntitledFile:"Untitled file",mediaCardOpenName:"Open {name}",mediaCardOpenImageAttachment:"Open image attachment",mediaCardOpenVideoAttachment:"Open video attachment",mediaCardOpenFileAttachment:"Open file attachment",mediaCardImageAttachment:"Image attachment",mediaCardVideoAttachment:"Video attachment",animatedImageDefaultAlt:"Animated image",mentionSuggestions:"Suggestions",suggestionsLabel:"Suggested prompts",map:"Map",model:"Model",selectModel:"Select a model\u2026",modelSelectNoModels:"No models",modelSelectRequired:"Please choose a model.",temperature:"Temperature",play:"Play",playbackPosition:"Playback position",playbackStepPosition:"Step {index} of {total}",videoPlayerLabel:"Video player",videoMute:"Mute",videoUnmute:"Unmute",videoVolume:"Volume",videoCaptions:"Captions",videoCaptionsOff:"Off",videoPlaybackSpeed:"Playback speed",videoPictureInPicture:"Enter picture in picture",videoExitPictureInPicture:"Exit picture in picture",videoEnterFullscreen:"Enter fullscreen",videoExitFullscreen:"Exit fullscreen",videoPlaylistLabel:"Video playlist",videoPlaylistUntitled:"Video {position}",selectValueMissing:"Please select an option.",select:"Select",sourceListDefaultLabel:"Sources",threadListLabel:"Conversations",threadGroupPinned:"Pinned",threadGroupToday:"Today",threadGroupYesterday:"Yesterday",threadGroupPrevious7Days:"Previous 7 days",threadGroupPrevious30Days:"Previous 30 days",threadGroupArchived:"Archived",threadGroupExpand:"Expand {label}",threadGroupCollapse:"Collapse {label}",pinConversation:"Pin conversation",unpinConversation:"Unpin conversation",archiveConversation:"Archive conversation",unarchiveConversation:"Unarchive conversation",deleteConversation:"Delete conversation",searchThreads:"Search conversations",threadListMatchAnnounce:{one:"{count} conversation found",other:"{count} conversations found"},threadListEmpty:"No conversations yet",agentWorkspaceLabel:"Agent workspace",agentWorkspaceConversation:"Conversation",agentWorkspaceDetails:"Run details",agentWorkspaceRun:"Agent run",agentWorkspaceTools:"Tools",agentWorkspaceRetrieval:"Retrieved context",agentWorkspaceGrounding:"Grounding",agentWorkspaceContext:"Context",agentWorkspaceEmpty:"No messages yet",ragAnswerLabel:"Grounded answer",ragAnswerCitations:"Citations",ragAnswerSources:"Sources",ragAnswerRetry:"Retry answer",evaluationDashboardLabel:"Evaluation dashboard",evaluationDashboardRunsLabel:"Evaluation runs",evaluationDashboardNoRuns:"No evaluation runs yet",approvalQueueLabel:"Tool approval queue",approvalQueueEmpty:"No tool approvals pending",approvalQueueOpen:"Review approval for {tool}",approvalQueuePendingCount:"{count} pending approvals",approvalQueuePending:"Pending",embeddingExplorerLabel:"Embedding explorer",embeddingExplorerEmpty:"No embedding points",embeddingExplorerPoint:"{label}, embedding point {index}",knowledgeBaseAdminLabel:"Knowledge base administration",knowledgeBaseAdminSourcesTab:"Sources",knowledgeBaseAdminIngestionTab:"Ingestion",resizeDivider:"Resize divider between panel {a} and panel {b}",trendUnchanged:"unchanged",statTrendIncreased:"increased {value}",statTrendDecreased:"decreased {value}",statTrendGood:"good",statTrendBad:"bad",statTrendAnnouncement:"{trend}, {polarity}",streamStalled:"Taking longer than usual\u2026",streamStallAnnounce:"Connection stalled.",streamRecoverAnnounce:"Connection restored.",streamStallClearedAnnounce:"No longer stalled.",thinkingPanelLabel:"Thinking",messagePartsLabel:"Message content",messagePartError:"Part failed",messagePartRetry:"Retry this part",promptQueueLabel:"Queued prompts",promptQueueEmpty:"No prompts queued",promptQueueSendNow:"Send now",selectionToolbarLabel:"Selection actions",selectionAsk:"Ask",selectionQuote:"Quote",selectionCite:"Cite",promptInputLabel:"AI prompt",promptInputControls:"Prompt options",promptInputSources:"Sources",promptInputAttachments:"Attachments",mcpAppLabel:"Interactive app",mcpAppUnavailable:"This interactive app could not be loaded.",mcpAppLoading:"Loading interactive app\u2026",taskListLabel:"Tasks",taskListCompletedOfTotal:"{completed} of {total} completed",taskListStepStartedAnnounce:"Step started: {label}",taskListStepCompletedAnnounce:"Step completed: {label}",taskListStepFailedAnnounce:"Step failed: {label}",activityFeedLabel:"Activity",activityFeedCompletedSteps:"Completed {count} steps",activityFeedCompletedStep:"Completed {count} step",handoffLabel:"Agent handoff",handoffToAgent:"Transferred to {agent}",handoffFromToAgent:"Transferred from {from} to {to}",usageBadgeLabel:"Usage",usageBadgeTokensIn:"{count} in",usageBadgeTokensOut:"{count} out",usageBadgeTokensInLabel:"Input tokens",usageBadgeTokensOutLabel:"Output tokens",usageBadgeTotalTokensLabel:"Total tokens",usageBadgeCostLabel:"Cost",usageBadgeLatencyLabel:"Latency",checkpointLabel:"Checkpoint",checkpointRestore:"Restore",checkpointRestoreWithContext:"Restore conversation to {label}",checkpointRestoring:"Restoring\u2026",checkpointConfirmPrompt:"Restore the conversation to this point?",thoughtFor:"Thought for {duration}",thinking:"Thinking\u2026",rangeStart:"Range start",rangeEnd:"Range end",calloutAnnouncementWithContext:"{context}: {content}",closeWithContext:"Close: {snippet}",closeWithTruncatedContext:"Close: {snippet}\u2026",toastContentIncomplete:"Notification with incomplete content",toastOverflow:"Notifications not shown: {count}.",toolApprovalHeading:"Approve {tool} call?",toolApprovalGenericTool:"tool",toolApprovalArgsLabel:"Tool call arguments (JSON)",confirmApproved:"Approved",confirmDenied:"Denied",confirmApprovedAnnounce:"Action approved.",confirmDeniedAnnounce:"Action denied.",deny:"Deny",edit:"Edit",approve:"Approve",invalidJson:"Invalid JSON.",fieldRequired:"This field is required.",fieldMustBeString:"Must be a string.",fieldMustBeNumber:"Must be a finite number.",fieldMustBeInteger:"Must be a whole number.",fieldMustBeBoolean:"Must be a boolean.",unsupportedFieldType:'Unsupported field type "{type}".',fieldMustBeOneOf:"Must be one of: {values}.",fieldMustEqual:"Must equal {value}.",schemaMustBeObject:"Schema must describe an object.",schemaPropertiesMustBeFlat:"Schema properties must be a flat object.",valueMustBeSerializable:"Value must be JSON-serializable.",valueInvalid:"The value is invalid.",phoneInputLabel:"Phone",phoneInputIncomplete:"This phone number is incomplete.",otpInputIncomplete:"Enter all {total} characters.",otpInputLabel:"Verification code",numberInputIncrease:"Increase",numberInputDecrease:"Decrease",textareaCharacterCount:{one:"{count} character",other:"{count} characters"},textareaCharactersRemaining:{one:"{count} character remaining",other:"{count} characters remaining"},copyFailed:"Copy failed",colorPickerSaturationBrightness:"Saturation and brightness",colorPickerSaturationBrightnessValue:"Saturation {saturation}%, brightness {brightness}%",colorPickerHue:"Hue",colorPickerHueValue:"{hue} degrees",colorPickerOpacity:"Opacity",colorPickerOpacityValue:"{opacity}% opaque",colorPickerValueField:"Color value",colorPickerToggleFormat:"Toggle color format",colorPickerEyeDropper:"Select a color from the screen",colorPickerSwatches:"Color swatches",colorPickerSwatch:"Select {color}",colorPickerCurrentValue:"Current color: {color}",selectSelectedOverflow:"+{n} more",iconLoadError:"The icon failed to load.",iconTooLarge:"The icon file is too large to display.",iconSanitizerMissing:'This icon needs the optional "dompurify" package installed to render safely.',paginationFirstPage:"First page",paginationLastPage:"Last page",accessibleLabelSeparator:" \u2014 ",durationMilliseconds:"{value}ms",durationSeconds:"{value}s",selectTools:"Select tools",searchToolsPlaceholder:"Search tools\u2026",useDefaultTools:"Use default tools",toolSelectCustomizeHint:"Turn off to choose individual tools.",noMatchesQuery:'No tools match "{query}".',toolSelectNoneAvailable:"No tools available.",toolSelectSummary:"{selected} of {total} tools enabled",toolCount:{one:"{count} tool",other:"{count} tools"},otherCategory:"Other",widgetFullscreenPanel:"Fullscreen panel",widgetViewGroup:"Panel view",widgetExitFullscreen:"Exit fullscreen",widgetExpandToFullscreen:"Expand to fullscreen",widgetCollapse:"Collapse panel",widgetExpand:"Expand panel",menuLabel:"Menu",pause:"Pause",kbdEscapeVisual:"Esc",kbdEscapeWord:"Escape",kbdTabWord:"Tab",kbdSpaceWord:"Space",kbdDeleteVisual:"Del",kbdDeleteWord:"Delete",kbdHomeWord:"Home",kbdEndWord:"End",kbdPageUpVisual:"PgUp",kbdPageUpWord:"Page Up",kbdPageDownVisual:"PgDn",kbdPageDownWord:"Page Down",kbdEnterWord:"Enter",kbdBackspaceWord:"Backspace",kbdArrowUpWord:"Arrow Up",kbdArrowDownWord:"Arrow Down",kbdArrowLeftWord:"Arrow Left",kbdArrowRightWord:"Arrow Right",kbdPlusWord:"Plus",kbdMinusWord:"Minus",kbdCommandWord:"Command",kbdControlVisual:"Ctrl",kbdControlWord:"Control",kbdOptionWord:"Option",kbdAltWord:"Alt",kbdShiftWord:"Shift",emailViewerLabel:"Email viewer",emailViewerMissingParser:'This viewer needs the optional "postal-mime" package installed to parse this message.',emailViewerFrom:"From",emailViewerTo:"To",emailViewerSubject:"Subject",emailViewerDate:"Date",emailViewerAttachments:"Attachments",emailViewerNoSubject:"(no subject)",emailViewerOpenAttachment:"Open {filename}",emailViewerShowQuoted:"Show quoted text",emailViewerHideQuoted:"Hide quoted text",emailViewerGroupAddress:"{name}: {members}",calendarViewerLabel:"Calendar viewer",calendarViewerMissingParser:'This viewer needs the optional "ical.js" package installed to parse this calendar.',calendarViewerEmpty:"This calendar has no events.",calendarViewerNoSummary:"(no title)",pdfViewerLabel:"PDF document",pdfViewerMissingLibrary:'This viewer needs the optional "pdfjs-dist" package installed to render PDF files.',qrCodeMissingLibrary:'This component needs the optional "qrcode" package installed to render QR codes.',qrCodeGenerationFailed:"This value could not be encoded as a QR code.",mapMissingLibrary:'This component needs the optional "maplibre-gl" package installed to render the map.',mapStyleRequired:"Provide a map style to render the map.",mapWebglUnavailable:"This browser cannot provide the graphics support needed to render the map.",mapInitializationFailed:"The map could not be initialized.",mapLegend:"Map legend",chartMissingLibrary:'This component needs the optional "chart.js" package installed to render charts.',boxPlotMissingLibrary:"This component needs the optional box-plot chart package installed to render box plots.",graphMissingLibrary:'This component needs the optional "d3" package installed to render the graph.',pdfViewerPageOf:"Page {page} of {total}",pdfViewerZoomIn:"Zoom in",pdfViewerZoomOut:"Zoom out",pdfViewerCurrentZoom:"{percent}%",pdfViewerPreviousPage:"Previous page",pdfViewerNextPage:"Next page",anchorJumped:"Jumped to highlighted passage.",anchorJumpedToPage:"Jumped to page {page}.",anchorNotFound:"Passage not found in this document.",highlightLayerLabel:"Highlights",highlightWithLabel:"Highlight: {label}",cellHighlightWithLabel:"Highlight: {value} \u2014 {label}",highlightOfTotal:"Highlight {index} of {total}",pageRailLabel:"Page thumbnails",pageRailPage:"Page {page}",pageRailPageHighlighted:{one:"Page {page}, {count} highlighted passage",other:"Page {page}, {count} highlighted passages"},skipToContent:"Skip to content",tourSkip:"Skip",tourDone:"Done",tourStepOf:"Step {current} of {total}",emojiPickerSearchLabel:"Search emoji",emojiPickerGridLabel:"Emoji",emojiPickerEmpty:"No emoji found",emojiPickerLoadError:"Could not load emoji.",emojiPickerGroupSmileysEmotion:"Smileys & Emotion",emojiPickerGroupPeopleBody:"People & Body",emojiPickerGroupComponent:"Component",emojiPickerGroupAnimalsNature:"Animals & Nature",emojiPickerGroupFoodDrink:"Food & Drink",emojiPickerGroupTravelPlaces:"Travel & Places",emojiPickerGroupActivities:"Activities",emojiPickerGroupObjects:"Objects",emojiPickerGroupSymbols:"Symbols",emojiPickerGroupFlags:"Flags",emojiPickerGroupUnknown:"Group {group}",pushToTalkRequesting:"Requesting microphone\u2026",pushToTalkDenied:"Microphone access denied",pushToTalkError:"Recording failed",pushToTalkUnsupported:"Recording is not supported in this browser",pushToTalkStarted:"Recording started",pushToTalkStopped:"Recording stopped",pushToTalkCancelled:"Recording cancelled",pushToTalkHold:"Hold to talk",pushToTalkStart:"Start recording",pushToTalkStop:"Stop recording",traceTree:"Trace tree",traceTreeSpanStatus:"{name} \u2014 {status}",traceTreeMetricLabel:"{label}: {value}",spanProjectionLimit:"Only the first {count} spans are shown.",agentTraceFilterLabel:"Trace span kinds",spanKindAgent:"Agent",spanKindLlm:"LLM",spanKindTool:"Tool",spanKindRetriever:"Retriever",spanKindEmbedding:"Embedding",spanKindOther:"Other",tokensIn:"Tokens in",tokensOut:"Tokens out",cost:"Cost",duration:"Duration",spanWaterfall:"Span timeline",spanStartedAtOffset:"started at +{value}",rubricSubmit:"Submit",rubricSubmitAndNext:"Submit and next",rubricSkip:"Skip",compareResponseA:"Response A",compareResponseB:"Response B",compareVoteLabel:"Vote",compareVoteBetter:"{label} is better",compareVoteTie:"Tie",compareVoteBothBad:"Both are bad",compareVoteRecorded:"Vote recorded: {label}",comparePanel:"Comparison",audioVisualizerLabel:"Voice activity: {state}",audioVisualizerIdle:"Idle",audioVisualizerListening:"Listening",audioVisualizerThinking:"Thinking",audioVisualizerSpeaking:"Speaking",treeNodeMoved:"Moved {label} to position {index} of {total}",fileTreeLabel:"Files",fileTreeDiffSummary:"+{additions} -{deletions}",gitStatusAdded:"Added",gitStatusModified:"Modified",gitStatusDeleted:"Deleted",gitStatusRenamed:"Renamed",gitStatusUntracked:"Untracked",gitStatusConflicted:"Conflicted",gitStatusIgnored:"Ignored",imageViewerLabel:"Image viewer",imageViewerFailedToLoad:"The image failed to load.",imageViewerRotate:"Rotate",imageViewerFitLabel:"Fit",imageViewerFitContain:"Fit image",imageViewerFitWidth:"Fit width",imageViewerFitActual:"Actual size",imageViewerAnnotate:"Annotate",imageViewerHighlightsLabel:"Highlighted regions",imageViewerUnlabeledHighlight:"Highlight {index}",imageViewerAnnotationHint:"Annotation mode on. Press Enter to place a region, then use arrow keys to move it, Shift plus arrow keys to resize it, Enter to save, or Escape to cancel.",imageViewerAnnotationBoxPosition:"Region at {x} percent, {y} percent, {width} by {height} percent.",imageViewerAnnotationAdded:"Region added.",imageViewerAnnotationCancelled:"Region cancelled.",transcriptFeedLabel:"Transcript",transcriptFeedEmpty:"No transcript yet",transcriptFeedInterim:"Transcribing\u2026",commitCardLabel:"Commit",commitCardCopyHash:"Copy commit hash",commitCardDiffSummary:"+{additions} -{deletions} in {files} files",commitCardShowFiles:"Show {count} changed files",commitCardHideFiles:"Hide {count} changed files",stackTraceLabel:"Stack trace",stackTraceLimit:"Some stack-trace content was omitted because the display limit was reached.",stackTraceShowFrames:"Show {count} internal frames",stackTraceHideFrames:"Hide {count} internal frames",statusSkipped:"Skipped",testResultsLabel:"Test results",testResultsPassed:"{count} passed",testResultsFailed:"{count} failed",testResultsSkipped:"{count} skipped",testResultsRunning:"{count} running",testResultsFilterLabel:"Filter by status",testResultsCompleteAnnounce:"{passed} passed, {failed} failed, {skipped} skipped",testResultsExpandTest:"Expand {name}",testResultsCollapseTest:"Collapse {name}",envListLabel:"Environment variables",envListReveal:"Reveal {name}",envListHide:"Hide {name}",envListValueHidden:"Value hidden",envListCopy:"Copy {name}",voice:"Voice",voicePickerNoVoices:"No voices available",voicePickerRequired:"Please choose a voice.",voicePickerPreview:"Preview {name}",voicePickerStopPreview:"Stop preview",avPlayerLabel:"Audio/video player",avPlayerFailedToLoad:"The media failed to load.",avPlayerTranscript:"Transcript",avPlayerTimeline:"Seek",avPlayerPlaybackRate:"Playback speed",avPlayerRateOption:"{rate}\xD7",avPlayerPosition:"{current} of {duration}",attachmentTriggerAudio:"Record audio",attachmentMenuAudio:"Record audio",browserFrameLabel:"Browser view",browserFrameUrlLabel:"Address",browserFrameViewOf:"Browser view of {url}",browserFrameTakeOver:"Take over",browserFrameHandBack:"Hand back",browserFrameStop:"Stop",browserFrameStatusIdle:"Idle",browserFrameStatusConnecting:"Connecting\u2026",browserFrameStatusLive:"Live",browserFrameStatusStalled:"Stalled",browserFrameControllerAgent:"Agent",browserFrameControllerUser:"User",notebookViewerLabel:"Notebook viewer",notebookViewerInvalid:"This file is not a valid Jupyter notebook.",notebookViewerUnsupportedVersion:"Notebook format {version} is not supported.",notebookViewerTooManyCells:"This notebook has too many cells to display.",notebookViewerInPrompt:"In [{count}]",notebookViewerInPromptEmpty:"In [ ]",notebookViewerCodeCell:"Code cell {index}",notebookViewerMarkdownCell:"Markdown cell {index}",notebookViewerRawCell:"Raw cell {index}",notebookViewerErrorOutput:"Error",notebookViewerShowAllOutput:"Show all output",notebookViewerCollapseOutput:"Collapse output",notebookViewerUnrenderedOutput:"This output type cannot be displayed.",xmlViewerLabel:"XML viewer",xmlViewerParseError:"This document could not be parsed as XML.",xmlViewerTooManyNodes:"This document has too many nodes to display.",xmlViewerChildCount:{one:"{count} child",other:"{count} children"},xmlViewerCopyDocument:"Copy XML to clipboard",xmlViewerCopyNode:"Copy {name}",xmlViewerExpandNode:"Expand {name}",xmlViewerCollapseNode:"Collapse {name}",artifactPanelLabel:"Artifact",artifactPanelPreview:"Preview",artifactPanelCode:"Code",artifactPanelPreviousVersion:"Previous version",artifactPanelNextVersion:"Next version",artifactPanelVersionPosition:"Version {index} of {count}",artifactPanelRestore:"Restore this version",artifactPanelGenerating:"Generating\u2026",resultFieldLabel:"{label}:",geojsonViewLabel:"Map",geojsonViewInvalid:"This file is not valid GeoJSON.",geojsonViewFeatureCount:{one:"{count} feature",other:"{count} features"},geojsonViewMissingMapLibrary:"Install the optional maplibre-gl peer to render this file on a map. Showing the raw GeoJSON instead.",mindMapLabel:"Mind map",mindMapTopicStatus:"{label}, level {level}, {count} subtopics",mindMapLeafStatus:"{label}, level {level}",mindMapExpanded:"{label} expanded",mindMapCollapsed:"{label} collapsed",entityDegree:"Connections",entityCommunity:"Community",focusInGraph:"Focus in graph",untitledEntity:"Untitled entity",untitledCommunity:"Untitled community",communityMemberCount:"{count} members",communityDrillIn:"Explore community",selectAllSources:"Select all sources",sourcePickerSelection:"{selected} of {total} selected",provenancePanelLabel:"Grounding",provenanceEntities:"Entities",provenanceRelationships:"Relationships",provenanceCommunities:"Communities",provenanceChunks:"Text chunks",provenanceEmpty:"No grounding data for this answer",chunkInspectorLabel:"Retrieved chunks",chunkScore:"Relevance {percent}%",scoreTierHigh:"High relevance",scoreTierMedium:"Medium relevance",scoreTierLow:"Low relevance",chunkInspectorEmpty:"No chunks retrieved",flowCanvasLabel:"Workflow canvas",flowCanvasLayoutLimit:"Some edge-ordering detail was omitted because the flow layout work limit was reached.",flowCanvasSummary:"Workflow with {nodeCount} nodes and {edgeCount} edges",flowNode:"Node {label}",flowEdge:"Edge from {source} to {target}",flowEdgeWithLabel:"{label}, edge from {source} to {target}",flowItemAnnouncement:"{item} ({index} of {total})",dashboardGridLabel:"Dashboard grid",dashboardCellCollisionRejected:"{label} cannot be placed there because it overlaps another cell.",dashboardCellMoved:"{label} moved to column {x}, row {y}.",dashboardCellResized:"{label} resized to width {w}, height {h}.",flowEdgeList:"Workflow edges",flowNodeSelected:"{label} selected",flowNodeDeselected:"{label} deselected",flowSelectionCleared:"Selection cleared",flowNodeMoved:"Moved {label} to {x}, {y}",flowConnectStarted:"Connecting from {label}. Use arrow keys to choose a target, Enter to connect, Escape to cancel.",flowConnectTarget:"Connecting {source} to {target} ({index} of {total})",flowConnectCommitted:"Connected {source} to {target}",flowConnectCancelled:"Connection cancelled",zoomToFit:"Zoom to fit",flowLockCanvas:"Lock canvas",flowControlsLabel:"Canvas controls",flowMinimapLabel:"Workflow overview",flowMinimapViewport:"Visible area",flowMinimapInstructions:"Arrow keys pan. Plus and minus zoom. Enter or Home fits the workflow.",flowMinimapViewportChanged:"Position {x}, {y}. Zoom {zoom}.",nodePaletteLabel:"Node palette",nodePalettePlaceholder:"Search nodes\u2026",nodePaletteEmpty:"No matching nodes.",nodePaletteDragHint:"Drag to the canvas, or press Enter to place",nodePaletteResultCount:{one:"{count} item",other:"{count} items"},retrievalResultsSelectRow:"Select {label}",pathStripLabel:"Path",pathNodeStatus:"{label}, node {position} of {total}",pathRelationStatus:"{relation}, relation",flowInputHandle:"Input {id}",flowOutputHandle:"Output {id}",flowStatusWithDuration:"{status} ({duration})",flowStatusWithDetail:"{status} \u2014 {detail}",neighborListLabel:"Relationships",neighborRowLabel:"{label}, {relation}, {direction}",neighborDirectionIn:"Incoming",neighborDirectionOut:"Outgoing",neighborDirectionBoth:"Bidirectional",neighborExpand:"Expand {label} in graph",neighborListEmpty:"No relationships",neighborGroupHeader:"{relation} ({count})",flowRunStatusLabel:"Run status",flowRunSummary:"{done} of {total} steps complete",flowRunStepStatus:"{label}: {status}",flowRunStatusCount:"{status}: {count}",policySummaryLabel:"Policy decisions",policySummaryAllowCount:"{count} allowed",policySummaryDenyCount:"{count} denied",policySummaryNeedsReviewCount:"{count} needs review",policySummaryStateAllow:"Allow",policySummaryStateDeny:"Deny",policySummaryStateNeedsReview:"Needs review",policySummaryCategoryGuardrail:"Guardrail",policySummaryCategoryPermission:"Permission",policySummaryCategoryPrivacy:"Privacy",policySummaryCategoryTool:"Tool",policySummaryDetailLabel:"More detail",evalDatasetLabel:"Evaluation examples",evalDatasetAddExample:"Add example",evalDatasetRemoveExample:"Remove example",evalDatasetImportLabel:"Import examples",evalDatasetSearchLabel:"Search examples",evalDatasetTagFilterLabel:"Filter by tag",evalDatasetEmpty:"No examples yet.",evalDatasetNoMatches:"No examples match the current filters.",evalDatasetColumnInput:"Input",evalDatasetColumnExpectedOutput:"Expected output",evalDatasetColumnTags:"Tags",queryBuilderLabel:"Query builder",queryBuilderEmpty:"No conditions yet.",queryBuilderNoFields:"No fields available.",queryBuilderAddCondition:"Add condition",queryBuilderRemoveCondition:"Remove condition {index}",queryBuilderFieldLabel:"Field",queryBuilderFieldPlaceholder:"Select field",queryBuilderOperatorLabel:"Operator",queryBuilderOperatorPlaceholder:"Select operator",queryBuilderValueLabel:"Value",queryBuilderValuePlaceholder:"Select value",queryBuilderCombinatorLabel:"Combine conditions with",queryBuilderCombinatorAnd:"All conditions (AND)",queryBuilderCombinatorOr:"Any condition (OR)",queryBuilderBooleanTrue:"True",queryBuilderBooleanFalse:"False",queryBuilderOperatorEquals:"Equals",queryBuilderOperatorNotEquals:"Does not equal",queryBuilderOperatorGreaterThan:"Greater than",queryBuilderOperatorGreaterThanOrEqual:"Greater than or equal to",queryBuilderOperatorLessThan:"Less than",queryBuilderOperatorLessThanOrEqual:"Less than or equal to",queryBuilderOperatorAfter:"After",queryBuilderOperatorOnOrAfter:"On or after",queryBuilderOperatorBefore:"Before",queryBuilderOperatorOnOrBefore:"On or before",queryBuilderOperatorContains:"Contains",queryBuilderOperatorStartsWith:"Starts with",queryBuilderOperatorEndsWith:"Ends with",queryBuilderOperatorIn:"Is any of",queryBuilderOperatorNotIn:"Is none of",queryBuilderOperatorIsEmpty:"Is empty",queryBuilderOperatorIsNotEmpty:"Is not empty",memoryPanelLabel:"Memory",memoryPanelShortTermHeading:"Short-term context",memoryPanelLongTermHeading:"Long-term memories",memoryPanelAdd:"Add to long-term memory",memoryPanelAddWithContext:'Add "{label}" to long-term memory',memoryPanelForgetAll:"Forget all",memoryPanelConfirmAddHeading:"Add this to long-term memory?",memoryPanelConfirmRemoveHeading:"Remove this item?",memoryPanelConfirmForgetHeading:"Forget all long-term memories?",memoryPanelConfirmForgetBody:"This permanently forgets all {count} long-term memories.",graphExplorerLabel:"Knowledge graph explorer",graphExplorerSearchPlaceholder:"Search entities\u2026",graphExplorerSearchResultsLabel:"Search results",graphExplorerPin:"Pin",graphExplorerUnpin:"Unpin",graphExplorerPinned:"{label} pinned",graphExplorerUnpinned:"{label} unpinned",graphExplorerPinnedHeading:"Pinned",graphExplorerFindPath:"Find path",retrievalModeVector:"Vector",retrievalModeKeyword:"Keyword",retrievalModeHybrid:"Hybrid",retrievalSearchLabel:"Retrieval search",retrievalModeLabel:"Search mode",retrievalFiltersLabel:"Active filters",groundingSummaryLabel:"Grounding summary",groundingSummaryEmpty:"No grounding assessment available",groundingSummarySupportedLabel:"Supported claims",groundingSummaryUnsupportedLabel:"Unsupported claims",groundingSummaryCoverageLabel:"Citation coverage",groundingSummaryConfidenceLabel:"Confidence",groundingSummaryWarningsHeading:"Warnings",groundingSummaryEvidenceHeading:"Evidence",claimEvidenceLabel:"Claim evidence",claimEvidenceEmpty:"No claim-level evidence available",claimEvidenceSupported:"Supported",claimEvidencePartiallySupported:"Partially supported",claimEvidenceUnsupported:"Unsupported",claimEvidenceContradicted:"Contradicted",claimEvidenceConfidence:"{percent} confidence",retrievalCompareLabel:"Retrieval comparison",retrievalCompareEmpty:"No retrieval result sets to compare",retrievalCompareOverlap:"Top-k overlap between {left} and {right}: {percent}",retrievalCompareRank:"Rank {rank}",retrievalCompareDenseScore:"Dense",retrievalCompareSparseScore:"Sparse",retrievalCompareRerankScore:"Rerank",retrievalCompareFinalScore:"Final",ragEvalDashboardLabel:"RAG evaluation dashboard",ragEvalDashboardEmpty:"No evaluation runs available",ragEvalDashboardRuns:"Evaluation runs",ragEvalDashboardSlices:"Evaluation slices",ragEvalDashboardAllSlices:"All",ragEvalDashboardSliceUnavailable:"No evaluation runs are available for {slice}.",promptStudioLabel:"Prompt studio",promptStudioMessages:"Prompt messages",promptStudioVariables:"Variables",promptStudioVersions:"Versions",promptStudioPreview:"Resolved preview",promptStudioRun:"Run prompt",promptStudioSave:"Save version",promptStudioAddMessage:"Add message",promptStudioRemoveMessage:"Remove message",promptStudioMessageRole:"Message {index} role ({role})",promptStudioMessageContent:"Message {index} content ({role})",promptStudioRoleSystem:"System",promptStudioRoleUser:"User",promptStudioRoleAssistant:"Assistant",promptStudioRoleTool:"Tool",schemaViewerLabel:"Schema viewer",schemaViewerEmpty:"No schema available",schemaViewerRequired:"Required",schemaViewerCircular:"Circular schema reference",schemaViewerType:"Type: {type}",subagentPanelLabel:"Subagents",subagentPanelEmpty:"No subagent runs",subagentPanelRetry:"Retry subagent",subagentPanelCancelRun:"Cancel {name}",subagentPanelRetryRun:"Retry {name}",toolTimelineDetailsFor:"Details for {name}",realtimeSessionLabel:"Realtime session",realtimeSessionDisconnected:"Disconnected",realtimeSessionConnecting:"Connecting",realtimeSessionConnected:"Connected",realtimeSessionReconnecting:"Reconnecting",realtimeSessionError:"Connection error",realtimeSessionConnect:"Connect",realtimeSessionDisconnect:"Disconnect",realtimeSessionMute:"Mute microphone",realtimeSessionUnmute:"Unmute microphone",realtimeSessionInterrupt:"Interrupt response",realtimeSessionConnectionFailed:"The realtime connection failed.",contextInspectorRedacted:"Redacted",contextInspectorTruncated:"Truncated",contextInspectorLabel:"Context inspector",contextInspectorEmpty:"No context segments",contextInspectorCopyLabel:"Copy assembled context",knowledgeBaseSyncIdle:"Idle",knowledgeBaseSyncSyncing:"Syncing",knowledgeBaseSyncPaused:"Paused",knowledgeBaseSyncSynced:"Synced",knowledgeBaseSyncError:"Error",knowledgeBaseHealthHealthy:"Healthy",knowledgeBaseHealthDegraded:"Degraded",knowledgeBaseHealthFailed:"Failed",knowledgeBaseHealthUnknown:"Unknown",knowledgeBasePermissionOwner:"Owner",knowledgeBasePermissionEditor:"Editor",knowledgeBasePermissionViewer:"Viewer",knowledgeBasePermissionRestricted:"Restricted",knowledgeBaseNeverSynced:"Never synced",knowledgeBaseSyncAction:"Sync now",knowledgeBasePauseAction:"Pause sync",knowledgeBaseDeleteAction:"Delete source",knowledgeBaseNameColumn:"Source",knowledgeBaseSyncColumn:"Sync status",knowledgeBaseHealthColumn:"Indexing health",knowledgeBasePermissionColumn:"Permission",knowledgeBaseActionsColumn:"Actions",knowledgeBaseTotalSources:"Sources",knowledgeBaseSyncedSources:"Synced",knowledgeBaseSyncingSources:"Syncing",knowledgeBaseNeedsAttention:"Needs attention",knowledgeBaseHeading:"Knowledge base",knowledgeBaseCreateSource:"Add source",knowledgeBaseEmptyHeading:"No knowledge sources yet",ingestionStageQueued:"Queued",ingestionStageUploading:"Uploading",ingestionStageExtracting:"Extracting text",ingestionStageChunking:"Chunking",ingestionStageEmbedding:"Embedding",ingestionStageIndexing:"Indexing",ingestionStageDone:"Done",ingestionStageFailed:"Failed",ingestionStageCancelled:"Cancelled",ingestionQueueLabel:"Ingestion queue",ingestionQueueEmpty:"No documents queued",documentLibraryFreshnessFresh:"Fresh",documentLibraryFreshnessAging:"Aging",documentLibraryFreshnessStale:"Stale",documentLibrarySelectAll:"Select all documents",documentLibrarySelectColumn:"Select",documentLibraryTypeColumn:"Type",documentLibraryNameColumn:"Name",documentLibraryVersionColumn:"Version",documentLibraryOwnerColumn:"Owner",documentLibraryTagsColumn:"Tags",documentLibraryFreshnessColumn:"Freshness",documentLibraryUpdatedColumn:"Updated",documentLibraryLabel:"Document library",documentLibraryEmptyHeading:"No documents yet",documentLibraryNoMatchesHeading:"No matching documents",documentLibrarySearchPlaceholder:"Search documents",documentLibraryFilterByTag:"Filter by tag",documentLibraryClearSelection:"Clear selection",documentLibrarySelectedCount:"{count} selected",documentCompareNoVersion:"No version provided.",documentCompareLabel:"Document comparison",agentRunCurrentStepLabel:"Current step",graphQueryHopRangeInvalid:"Maximum hops must be at least the minimum.",graphQueryRelationshipTypeLabel:"Relationship type",graphQueryNodeTypeLabel:"Node type",graphQueryBuilderLabel:"Graph query builder",graphQueryStartLabel:"Start entity",graphQueryEndLabel:"End entity",graphQueryMinHopsLabel:"Minimum hops",graphQueryMaxHopsLabel:"Maximum hops",graphQueryDirectionLabel:"Direction",graphQueryRun:"Run query",graphQuerySavedQueriesLabel:"Saved queries",graphQuerySaveNameLabel:"Query name",graphQuerySaveButton:"Save query",graphQueryLoadWithContext:"Load {name}",filterBarReset:"Reset filters",filterBarActiveFilters:"Active filters",drilldownDocuments:"Documents",drilldownRuns:"Agent runs",drilldownEmpty:"No item selected",evaluationRunStatusIdle:"Idle",evaluationRunStatusWaitingInput:"Waiting for input",evaluationRunStatusWaitingApproval:"Waiting for approval",evaluationRunStatusCancelled:"Cancelled",evaluationRunGroundingHeading:"Grounding",evaluationRunToolTraceHeading:"Tool trace",evaluationRunInputHeading:"Input",evaluationRunOutputHeading:"Output",evaluationRunLabel:"Evaluation run",evaluationRunProgressLabel:"Evaluation batch progress",retrievalFilterChipLabel:"{key}: {value}",retrievalSearchEmptyDescription:"Try a different search term or filters.",groundingSummaryEvidenceSpan:"Characters {start}\u2013{end}",contextInspectorTruncatedCount:"Truncated \u2014 {count} tokens omitted",contextInspectorSegmentTokens:"{tokens} tokens",knowledgeBaseDocumentCount:"{count} indexed",knowledgeBaseRowActionsLabel:"Actions for {name}",knowledgeBaseEmptyDescription:"Add a source to start indexing content.",ingestionChunkCount:{one:"{count} chunk",other:"{count} chunks"},ingestionItemProgressLabel:"{name} \u2014 {stage}",ingestionEmbeddedOfTotal:"{embedded} of {total} chunks embedded",ingestionAttemptCount:"Attempt {count}",ingestionRetryWithContext:"Retry {label}",ingestionCancelWithContext:"Cancel {label}",documentLibrarySelectDocument:"Select {name}",agentRunStatusAnnounce:"Status: {status}.",graphQueryDeleteWithContext:"Delete {name}",evaluationRunExampleLabel:"Example {index}",evaluationRunExampleStartedAnnounce:"{label} started",evaluationRunExampleCompletedAnnounce:"{label} completed",evaluationRunExampleFailedAnnounce:"{label} failed",evaluationRunExampleCancelledAnnounce:"{label} cancelled",evaluationRunExampleWaitingInputAnnounce:"{label} needs input",evaluationRunExampleWaitingApprovalAnnounce:"{label} needs approval",evaluationRunProgressSummary:"{completed} of {total} examples complete",evaluationRunRunningCount:"{count} running",evaluationRunFailedCount:"{count} failed",retrievalStageQueryRewrite:"Query rewrite",retrievalStageEmbed:"Embed",retrievalStageRetrieve:"Retrieve",retrievalStageRerank:"Rerank",retrievalStageFilter:"Filter",retrievalTraceEvidenceToggle:"{label} evidence",documentCompareOldVersion:"Old version",documentCompareNewVersion:"New version",agentRunStatusIdle:"Idle",agentRunStatusQueued:"Queued",agentRunStatusCollecting:"Collecting context",agentRunStatusWaitingInput:"Waiting for input",agentRunStatusWaitingApproval:"Waiting for approval",agentRunStatusDone:"Done",agentRunStatusCancelled:"Cancelled",localePickerLabel:"Language",localePickerRequired:"Please choose a language.",flagLoadError:"Flag unavailable",moveUp:"Move up",moveDown:"Move down",reorderMovePending:"Reorder pending.",reorderMoveCancelled:"Reorder cancelled.",reorderItemMoved:"Moved to position {index} of {total}"};import{enableLyraLocaleCache,getLyraLocale,getLyraLocaleDirection,getRegisteredLyraLocales,invalidateLyraLocaleCache,registerLyraLocale,resolveLocalizedParts,resolveLyraDirection,resolveLyraLocale,setLyraLocale,subscribeLyraLocale,subscribeLyraLocaleRegistry}from"./localization-runtime.js";function resolveLyraString(host,key,overrides,fallback,values){return resolveRuntimeLyraString(host,key,overrides,fallback,values,DEFAULT_STRINGS)}const LYRA_DEFAULT_STRINGS=DEFAULT_STRINGS;export{LYRA_DEFAULT_STRINGS,enableLyraLocaleCache,getLyraLocale,getLyraLocaleDirection,getRegisteredLyraLocales,invalidateLyraLocaleCache,registerLyraLocale,resolveLocalizedParts,resolveLyraDirection,resolveLyraLocale,resolveLyraString,setLyraLocale,subscribeLyraLocale,subscribeLyraLocaleRegistry};
|
|
5
|
+
{country}`,contactViewerTypeHome:"Home",contactViewerTypeWork:"Work",contactViewerTypeCell:"Mobile",contactViewerTypeVoice:"Voice",contactViewerTypeFax:"Fax",contactViewerTypeInternet:"Internet",contactViewerTypePreferred:"Preferred",exportButtonLabel:"Export",generationStatusElapsedSeconds:"{seconds}s",generationStatusTokenCount:"{count} token",generationStatusTokensCount:"{count} tokens",generationStatusThroughput:"{rate} tok/s",graphDataList:"Graph data",graphItemAnnouncement:"{item} ({index} of {total})",navigation:"Navigation",attachmentRetryWithContext:"Retry {label}",attachmentUploadingWithContext:"Uploading {label}",attachmentUploadingProgress:"Uploading {percent}%",attachmentUploadingIndeterminate:"Uploading\u2026",attachmentUploadFailed:"Upload failed",attachmentUntitledFile:"Untitled file",chartTrendIncreasing:"increasing",chartTrendDecreasing:"decreasing",chartTrendFlat:"flat",chartSummary:"{label}: {count} values, range {min} to {max}, {trend} trend",chartSeriesNoData:"{label}: no data",chartSummaryWithData:"{type} chart. {summaries}.",chartSummaryEmpty:"{type} chart with no data.",chartSummarySeparator:". ",chartData:"Chart data",chartDataSampled:"The generated data table shows a sample of up to 1,000 records. Provide a custom data table to access all chart data.",chartZoomUnavailable:"Zoom is unavailable, but the core chart remains available.",chartDataLabelsUnavailable:"Data labels are unavailable, but the core chart remains available.",chartStackTotalsUnavailable:"Stack totals are unavailable, but the core chart remains available.",chart:"Chart",chartTypeLine:"Line",chartTypeBar:"Bar",chartTypeScatter:"Scatter",chartTypePie:"Pie",chartTypeDoughnut:"Doughnut",chartTypeRadar:"Radar",chartTypePolarArea:"Polar area",chartTypeBubble:"Bubble",boxPlotSeriesSummary:"{label}: {count} distributions, median range {min} to {max}, {trend} median trend",boxPlotSummaryWithData:"Box plot. {summaries}.",boxPlotSummaryEmpty:"Box plot with no data.",boxPlotData:"Box plot data",chartSeriesLabel:"Series",boxPlotMin:"Min",boxPlotQ1:"Q1",boxPlotMedian:"Median",boxPlotQ3:"Q3",boxPlotMax:"Max",boxPlot:"Box plot",histogramFrequency:"Frequency",liteChartMarkSummary:"{series}, {label}: {value} ({index} of {total})",liteChartBarLabel:"{series}, {label}: {value}",chartValueLabel:"{label}: {value}",liteChartCustomMarkSummary:"{content} ({index} of {total})",composerLabel:"Message",composerPlaceholder:"Ask anything\u2026",textareaLabel:"Text",citation:"Citation {index}",citationWithStatus:"Citation {index}, {status}",citationWithCustomLabel:"Citation {index}, {label}",comboboxOverflow:"+{n} more \u2014 refine your search",comboboxRequired:"Please select an option.",comboboxCreate:"Create {value}",comboboxLabel:"Combobox",rename:"Rename {title}",previousMonth:"Previous month",nextMonth:"Next month",chooseDate:"Choose date",date:"Date",dateInputMinMessage:"Date must be on or after {min}.",dateInputMaxMessage:"Date must be on or before {max}.",dateInputPastDisabled:"Date cannot be in the past.",dateInputFutureDisabled:"Date cannot be in the future.",dateInputInvalid:"Enter a valid date.",timeInputLabel:"Time",timeInputHour:"Hour",timeInputMinute:"Minute",timeInputSecond:"Second",timeInputDayPeriod:"Day period",timeInputEmptySegment:"Empty",timeInputOpen:"Open time picker",timeInputPopup:"Choose a time",timeInputNow:"Now",timeInputInvalid:"Enter a complete time.",timeInputMinMessage:"Time must be at or after {min}.",timeInputMaxMessage:"Time must be at or before {max}.",timeInputRangeMessage:"Time must be between {min} and {max} across midnight.",timeInputStepMessage:"Enter a time matching the required interval.",documentPreviewEmpty:"No {type} to display.",convertingDocument:"Converting document\u2026",documentPreviewNotAvailable:"Preview not available for {label}.",documentPreviewGenericFile:"this file",documentPreviewTypeDocument:"document",documentPreviewTypeImage:"image",documentPreviewTypeEmail:"email",documentPreviewTypeCalendar:"calendar",archiveViewerEmpty:"This archive is empty.",archiveViewerFolder:"Folder",archiveViewerFile:"File",spreadsheetViewerUnavailable:"Spreadsheet preview is unavailable.",csvViewerUnavailable:"CSV preview is unavailable.",csvViewerLabel:"CSV document",spreadsheetViewerLabel:"Spreadsheet",knownDateDay:"Day",knownDateMonth:"Month",knownDateYear:"Year",documentPreviewTypeDataset:"dataset",documentPreviewTypeContact:"contact",download:"Download",exportFormatMenuLabel:"{label} format",fileInputDefaultLabel:"Drop files here or click to browse",fileInputAcceptedOne:"{count} file added.",fileInputAcceptedMany:"{count} files added.",fileInputRejectedOne:"{count} file rejected.",fileInputRejectedMany:"{count} files rejected.",fileInputFolderRejected:"Folders are not accepted here.",fileInputRejectedType:"{filename}: this file type is not accepted.",fileInputRejectedSize:"{filename}: this file is too large.",fileInputRejectedCount:"{filename}: only one file can be selected at a time.",fileInputRejectedRead:"{filename}: the file could not be read.",fileInputRejectedLimit:"{filename}: the folder contains too many entries.",elapsedMinutesSecondsTemplate:"{minutes}m {seconds}s",graphNode:"Node {label}",graphLink:"Link from {source} to {target}",graphDiagram:"Node-link diagram with {nodeCount} nodes and {linkCount} links",graphTypedNode:"{label} ({type})",graphExpandableItem:"{item}, expandable",graphNodeFocused:"Centered on {label}",graphSelectionCount:"{count} selected",graphNodesHidden:"{hidden} of {total} nodes hidden",graphCommunity:"Community {label}, {count} nodes",heatmapValueLabel:"value",heatmapMatrixCellLabel:"Row {row}, Col {col}: {value}",heatmapCalendarLabel:"Calendar heatmap of {days} days, {label} range {range}",heatmapMatrixLabel:"Heatmap of {rows} \xD7 {cols} cells, {label} range {range}",heatmapCalendarCellLabel:"{date}: {value}",heatmapNoDataValue:"no data",heatmapDefaultRowLabel:"row {n}",heatmapDefaultColLabel:"col {n}",heatmapSelectedCellLabel:"Selected: {cell}.",heatmapProjectionLimit:"Only the first {count} heatmap cells are shown.",heatmapDecorationLimit:"Only the first {count} heatmap colors, legend stops, and annotations are shown.",inputLabel:"Text",showPassword:"Show password",hidePassword:"Hide password",radioRequired:"Please select an option.",progress:"Progress",responsivePanel:"Panel",popover:"Popover",details:"Details",breadcrumb:"Breadcrumb",timeline:"Timeline",timelineClusterCount:"Show timeline events ({count})",rating:"Rating",sliderLabel:"Slider",feedbackPositive:"Good response",feedbackNegative:"Bad response",feedbackReasonsLabel:"Choose a reason",feedbackCommentLabel:"Add a comment",feedbackCommentPlaceholder:"Add more detail (optional)",feedbackSubmit:"Submit feedback",feedbackSubmitted:"Feedback submitted",colorPicker:"Color picker",mediaCardUntitledFile:"Untitled file",mediaCardOpenName:"Open {name}",mediaCardOpenImageAttachment:"Open image attachment",mediaCardOpenVideoAttachment:"Open video attachment",mediaCardOpenFileAttachment:"Open file attachment",mediaCardImageAttachment:"Image attachment",mediaCardVideoAttachment:"Video attachment",animatedImageDefaultAlt:"Animated image",mentionSuggestions:"Suggestions",suggestionsLabel:"Suggested prompts",map:"Map",model:"Model",selectModel:"Select a model\u2026",modelSelectNoModels:"No models",modelSelectRequired:"Please choose a model.",temperature:"Temperature",play:"Play",playbackPosition:"Playback position",playbackStepPosition:"Step {index} of {total}",videoPlayerLabel:"Video player",videoMute:"Mute",videoUnmute:"Unmute",videoVolume:"Volume",videoCaptions:"Captions",videoCaptionsOff:"Off",videoPlaybackSpeed:"Playback speed",videoPictureInPicture:"Enter picture in picture",videoExitPictureInPicture:"Exit picture in picture",videoEnterFullscreen:"Enter fullscreen",videoExitFullscreen:"Exit fullscreen",videoPlaylistLabel:"Video playlist",videoPlaylistUntitled:"Video {position}",selectValueMissing:"Please select an option.",select:"Select",sourceListDefaultLabel:"Sources",threadListLabel:"Conversations",threadGroupPinned:"Pinned",threadGroupToday:"Today",threadGroupYesterday:"Yesterday",threadGroupPrevious7Days:"Previous 7 days",threadGroupPrevious30Days:"Previous 30 days",threadGroupArchived:"Archived",threadGroupExpand:"Expand {label}",threadGroupCollapse:"Collapse {label}",pinConversation:"Pin conversation",unpinConversation:"Unpin conversation",archiveConversation:"Archive conversation",unarchiveConversation:"Unarchive conversation",deleteConversation:"Delete conversation",searchThreads:"Search conversations",threadListMatchAnnounce:{one:"{count} conversation found",other:"{count} conversations found"},threadListEmpty:"No conversations yet",agentWorkspaceLabel:"Agent workspace",agentWorkspaceConversation:"Conversation",agentWorkspaceDetails:"Run details",agentWorkspaceRun:"Agent run",agentWorkspaceTools:"Tools",agentWorkspaceRetrieval:"Retrieved context",agentWorkspaceGrounding:"Grounding",agentWorkspaceContext:"Context",agentWorkspaceEmpty:"No messages yet",ragAnswerLabel:"Grounded answer",ragAnswerCitations:"Citations",ragAnswerSources:"Sources",ragAnswerRetry:"Retry answer",evaluationDashboardLabel:"Evaluation dashboard",evaluationDashboardRunsLabel:"Evaluation runs",evaluationDashboardNoRuns:"No evaluation runs yet",approvalQueueLabel:"Tool approval queue",approvalQueueEmpty:"No tool approvals pending",approvalQueueOpen:"Review approval for {tool}",approvalQueuePendingCount:"{count} pending approvals",approvalQueuePending:"Pending",embeddingExplorerLabel:"Embedding explorer",embeddingExplorerEmpty:"No embedding points",embeddingExplorerPoint:"{label}, embedding point {index}",knowledgeBaseAdminLabel:"Knowledge base administration",knowledgeBaseAdminSourcesTab:"Sources",knowledgeBaseAdminIngestionTab:"Ingestion",resizeDivider:"Resize divider between panel {a} and panel {b}",trendUnchanged:"unchanged",statTrendIncreased:"increased {value}",statTrendDecreased:"decreased {value}",statTrendGood:"good",statTrendBad:"bad",statTrendAnnouncement:"{trend}, {polarity}",streamStalled:"Taking longer than usual\u2026",streamStallAnnounce:"Connection stalled.",streamRecoverAnnounce:"Connection restored.",streamStallClearedAnnounce:"No longer stalled.",thinkingPanelLabel:"Thinking",messagePartsLabel:"Message content",messagePartError:"Part failed",messagePartRetry:"Retry this part",promptQueueLabel:"Queued prompts",promptQueueEmpty:"No prompts queued",promptQueueSendNow:"Send now",selectionToolbarLabel:"Selection actions",selectionAsk:"Ask",selectionQuote:"Quote",selectionCite:"Cite",promptInputLabel:"AI prompt",promptInputControls:"Prompt options",promptInputSources:"Sources",promptInputAttachments:"Attachments",mcpAppLabel:"Interactive app",mcpAppUnavailable:"This interactive app could not be loaded.",mcpAppLoading:"Loading interactive app\u2026",taskListLabel:"Tasks",taskListCompletedOfTotal:"{completed} of {total} completed",taskListStepStartedAnnounce:"Step started: {label}",taskListStepCompletedAnnounce:"Step completed: {label}",taskListStepFailedAnnounce:"Step failed: {label}",activityFeedLabel:"Activity",activityFeedCompletedSteps:"Completed {count} steps",activityFeedCompletedStep:"Completed {count} step",handoffLabel:"Agent handoff",handoffToAgent:"Transferred to {agent}",handoffFromToAgent:"Transferred from {from} to {to}",usageBadgeLabel:"Usage",usageBadgeTokensIn:"{count} in",usageBadgeTokensOut:"{count} out",usageBadgeTokensInLabel:"Input tokens",usageBadgeTokensOutLabel:"Output tokens",usageBadgeTotalTokensLabel:"Total tokens",usageBadgeCostLabel:"Cost",usageBadgeLatencyLabel:"Latency",checkpointLabel:"Checkpoint",checkpointRestore:"Restore",checkpointRestoreWithContext:"Restore conversation to {label}",checkpointRestoring:"Restoring\u2026",checkpointConfirmPrompt:"Restore the conversation to this point?",thoughtFor:"Thought for {duration}",thinking:"Thinking\u2026",rangeStart:"Range start",rangeEnd:"Range end",calloutAnnouncementWithContext:"{context}: {content}",closeWithContext:"Close: {snippet}",closeWithTruncatedContext:"Close: {snippet}\u2026",toastContentIncomplete:"Notification with incomplete content",toastOverflow:"Notifications not shown: {count}.",toolApprovalHeading:"Approve {tool} call?",toolApprovalGenericTool:"tool",toolApprovalArgsLabel:"Tool call arguments (JSON)",confirmApproved:"Approved",confirmDenied:"Denied",confirmApprovedAnnounce:"Action approved.",confirmDeniedAnnounce:"Action denied.",deny:"Deny",edit:"Edit",approve:"Approve",invalidJson:"Invalid JSON.",fieldRequired:"This field is required.",fieldMustBeString:"Must be a string.",fieldMustBeNumber:"Must be a finite number.",fieldMustBeInteger:"Must be a whole number.",fieldMustBeBoolean:"Must be a boolean.",unsupportedFieldType:'Unsupported field type "{type}".',fieldMustBeOneOf:"Must be one of: {values}.",fieldMustEqual:"Must equal {value}.",schemaMustBeObject:"Schema must describe an object.",schemaPropertiesMustBeFlat:"Schema properties must be a flat object.",valueMustBeSerializable:"Value must be JSON-serializable.",valueInvalid:"The value is invalid.",phoneInputLabel:"Phone",phoneInputIncomplete:"This phone number is incomplete.",otpInputIncomplete:"Enter all {total} characters.",otpInputLabel:"Verification code",numberInputIncrease:"Increase",numberInputDecrease:"Decrease",textareaCharacterCount:{one:"{count} character",other:"{count} characters"},textareaCharactersRemaining:{one:"{count} character remaining",other:"{count} characters remaining"},copyFailed:"Copy failed",colorPickerSaturationBrightness:"Saturation and brightness",colorPickerSaturationBrightnessValue:"Saturation {saturation}%, brightness {brightness}%",colorPickerHue:"Hue",colorPickerHueValue:"{hue} degrees",colorPickerOpacity:"Opacity",colorPickerOpacityValue:"{opacity}% opaque",colorPickerValueField:"Color value",colorPickerToggleFormat:"Toggle color format",colorPickerEyeDropper:"Select a color from the screen",colorPickerSwatches:"Color swatches",colorPickerSwatch:"Select {color}",colorPickerCurrentValue:"Current color: {color}",selectSelectedOverflow:"+{n} more",iconLoadError:"The icon failed to load.",iconTooLarge:"The icon file is too large to display.",iconSanitizerMissing:'This icon needs the optional "dompurify" package installed to render safely.',paginationFirstPage:"First page",paginationLastPage:"Last page",accessibleLabelSeparator:" \u2014 ",durationMilliseconds:"{value}ms",durationSeconds:"{value}s",selectTools:"Select tools",searchToolsPlaceholder:"Search tools\u2026",useDefaultTools:"Use default tools",toolSelectCustomizeHint:"Turn off to choose individual tools.",noMatchesQuery:'No tools match "{query}".',toolSelectNoneAvailable:"No tools available.",toolSelectSummary:"{selected} of {total} tools enabled",toolCount:{one:"{count} tool",other:"{count} tools"},otherCategory:"Other",widgetFullscreenPanel:"Fullscreen panel",widgetViewGroup:"Panel view",widgetExitFullscreen:"Exit fullscreen",widgetExpandToFullscreen:"Expand to fullscreen",widgetCollapse:"Collapse panel",widgetExpand:"Expand panel",menuLabel:"Menu",pause:"Pause",kbdEscapeVisual:"Esc",kbdEscapeWord:"Escape",kbdTabWord:"Tab",kbdSpaceWord:"Space",kbdDeleteVisual:"Del",kbdDeleteWord:"Delete",kbdHomeWord:"Home",kbdEndWord:"End",kbdPageUpVisual:"PgUp",kbdPageUpWord:"Page Up",kbdPageDownVisual:"PgDn",kbdPageDownWord:"Page Down",kbdEnterWord:"Enter",kbdBackspaceWord:"Backspace",kbdArrowUpWord:"Arrow Up",kbdArrowDownWord:"Arrow Down",kbdArrowLeftWord:"Arrow Left",kbdArrowRightWord:"Arrow Right",kbdPlusWord:"Plus",kbdMinusWord:"Minus",kbdCommandWord:"Command",kbdControlVisual:"Ctrl",kbdControlWord:"Control",kbdOptionWord:"Option",kbdAltWord:"Alt",kbdShiftWord:"Shift",emailViewerLabel:"Email viewer",emailViewerMissingParser:'This viewer needs the optional "postal-mime" package installed to parse this message.',emailViewerFrom:"From",emailViewerTo:"To",emailViewerSubject:"Subject",emailViewerDate:"Date",emailViewerAttachments:"Attachments",emailViewerNoSubject:"(no subject)",emailViewerOpenAttachment:"Open {filename}",emailViewerShowQuoted:"Show quoted text",emailViewerHideQuoted:"Hide quoted text",emailViewerGroupAddress:"{name}: {members}",calendarViewerLabel:"Calendar viewer",calendarViewerMissingParser:'This viewer needs the optional "ical.js" package installed to parse this calendar.',calendarViewerEmpty:"This calendar has no events.",calendarViewerNoSummary:"(no title)",pdfViewerLabel:"PDF document",pdfViewerMissingLibrary:'This viewer needs the optional "pdfjs-dist" package installed to render PDF files.',qrCodeMissingLibrary:'This component needs the optional "qrcode" package installed to render QR codes.',qrCodeGenerationFailed:"This value could not be encoded as a QR code.",mapMissingLibrary:'This component needs the optional "maplibre-gl" package installed to render the map.',mapStyleRequired:"Provide a map style to render the map.",mapWebglUnavailable:"This browser cannot provide the graphics support needed to render the map.",mapInitializationFailed:"The map could not be initialized.",mapLegend:"Map legend",chartMissingLibrary:'This component needs the optional "chart.js" package installed to render charts.',boxPlotMissingLibrary:"This component needs the optional box-plot chart package installed to render box plots.",graphMissingLibrary:'This component needs the optional "d3" package installed to render the graph.',pdfViewerPageOf:"Page {page} of {total}",pdfViewerZoomIn:"Zoom in",pdfViewerZoomOut:"Zoom out",pdfViewerCurrentZoom:"{percent}%",pdfViewerPreviousPage:"Previous page",pdfViewerNextPage:"Next page",anchorJumped:"Jumped to highlighted passage.",anchorJumpedToPage:"Jumped to page {page}.",anchorNotFound:"Passage not found in this document.",highlightLayerLabel:"Highlights",highlightWithLabel:"Highlight: {label}",cellHighlightWithLabel:"Highlight: {value} \u2014 {label}",highlightOfTotal:"Highlight {index} of {total}",pageRailLabel:"Page thumbnails",pageRailPage:"Page {page}",pageRailPageHighlighted:{one:"Page {page}, {count} highlighted passage",other:"Page {page}, {count} highlighted passages"},skipToContent:"Skip to content",tourSkip:"Skip",tourDone:"Done",tourStepOf:"Step {current} of {total}",emojiPickerSearchLabel:"Search emoji",emojiPickerGridLabel:"Emoji",emojiPickerEmpty:"No emoji found",emojiPickerLoadError:"Could not load emoji.",emojiPickerGroupSmileysEmotion:"Smileys & Emotion",emojiPickerGroupPeopleBody:"People & Body",emojiPickerGroupComponent:"Component",emojiPickerGroupAnimalsNature:"Animals & Nature",emojiPickerGroupFoodDrink:"Food & Drink",emojiPickerGroupTravelPlaces:"Travel & Places",emojiPickerGroupActivities:"Activities",emojiPickerGroupObjects:"Objects",emojiPickerGroupSymbols:"Symbols",emojiPickerGroupFlags:"Flags",emojiPickerGroupUnknown:"Group {group}",pushToTalkRequesting:"Requesting microphone\u2026",pushToTalkDenied:"Microphone access denied",pushToTalkError:"Recording failed",pushToTalkUnsupported:"Recording is not supported in this browser",pushToTalkStarted:"Recording started",pushToTalkStopped:"Recording stopped",pushToTalkCancelled:"Recording cancelled",pushToTalkHold:"Hold to talk",pushToTalkStart:"Start recording",pushToTalkStop:"Stop recording",traceTree:"Trace tree",traceTreeSpanStatus:"{name} \u2014 {status}",traceTreeMetricLabel:"{label}: {value}",spanProjectionLimit:"Only the first {count} spans are shown.",agentTraceFilterLabel:"Trace span kinds",spanKindAgent:"Agent",spanKindLlm:"LLM",spanKindTool:"Tool",spanKindRetriever:"Retriever",spanKindEmbedding:"Embedding",spanKindOther:"Other",tokensIn:"Tokens in",tokensOut:"Tokens out",cost:"Cost",duration:"Duration",spanWaterfall:"Span timeline",spanStartedAtOffset:"started at +{value}",rubricSubmit:"Submit",rubricSubmitAndNext:"Submit and next",rubricSkip:"Skip",compareResponseA:"Response A",compareResponseB:"Response B",compareVoteLabel:"Vote",compareVoteBetter:"{label} is better",compareVoteTie:"Tie",compareVoteBothBad:"Both are bad",compareVoteRecorded:"Vote recorded: {label}",comparePanel:"Comparison",audioVisualizerLabel:"Voice activity: {state}",audioVisualizerIdle:"Idle",audioVisualizerListening:"Listening",audioVisualizerThinking:"Thinking",audioVisualizerSpeaking:"Speaking",treeNodeMoved:"Moved {label} to position {index} of {total}",fileTreeLabel:"Files",fileTreeDiffSummary:"+{additions} -{deletions}",gitStatusAdded:"Added",gitStatusModified:"Modified",gitStatusDeleted:"Deleted",gitStatusRenamed:"Renamed",gitStatusUntracked:"Untracked",gitStatusConflicted:"Conflicted",gitStatusIgnored:"Ignored",imageViewerLabel:"Image viewer",imageViewerFailedToLoad:"The image failed to load.",imageViewerRotate:"Rotate",imageViewerFitLabel:"Fit",imageViewerFitContain:"Fit image",imageViewerFitWidth:"Fit width",imageViewerFitActual:"Actual size",imageViewerAnnotate:"Annotate",imageViewerHighlightsLabel:"Highlighted regions",imageViewerUnlabeledHighlight:"Highlight {index}",imageViewerAnnotationHint:"Annotation mode on. Press Enter to place a region, then use arrow keys to move it, Shift plus arrow keys to resize it, Enter to save, or Escape to cancel.",imageViewerAnnotationBoxPosition:"Region at {x} percent, {y} percent, {width} by {height} percent.",imageViewerAnnotationAdded:"Region added.",imageViewerAnnotationCancelled:"Region cancelled.",transcriptFeedLabel:"Transcript",transcriptFeedEmpty:"No transcript yet",transcriptFeedInterim:"Transcribing\u2026",commitCardLabel:"Commit",commitCardCopyHash:"Copy commit hash",commitCardDiffSummary:"+{additions} -{deletions} in {files} files",commitCardShowFiles:"Show {count} changed files",commitCardHideFiles:"Hide {count} changed files",stackTraceLabel:"Stack trace",stackTraceLimit:"Some stack-trace content was omitted because the display limit was reached.",stackTraceShowFrames:"Show {count} internal frames",stackTraceHideFrames:"Hide {count} internal frames",statusSkipped:"Skipped",testResultsLabel:"Test results",testResultsPassed:"{count} passed",testResultsFailed:"{count} failed",testResultsSkipped:"{count} skipped",testResultsRunning:"{count} running",testResultsFilterLabel:"Filter by status",testResultsCompleteAnnounce:"{passed} passed, {failed} failed, {skipped} skipped",testResultsExpandTest:"Expand {name}",testResultsCollapseTest:"Collapse {name}",envListLabel:"Environment variables",envListReveal:"Reveal {name}",envListHide:"Hide {name}",envListValueHidden:"Value hidden",envListCopy:"Copy {name}",voice:"Voice",voicePickerNoVoices:"No voices available",voicePickerRequired:"Please choose a voice.",voicePickerPreview:"Preview {name}",voicePickerStopPreview:"Stop preview",avPlayerLabel:"Audio/video player",avPlayerFailedToLoad:"The media failed to load.",avPlayerTranscript:"Transcript",avPlayerTimeline:"Seek",avPlayerPlaybackRate:"Playback speed",avPlayerRateOption:"{rate}\xD7",avPlayerPosition:"{current} of {duration}",attachmentTriggerAudio:"Record audio",attachmentMenuAudio:"Record audio",browserFrameLabel:"Browser view",browserFrameUrlLabel:"Address",browserFrameViewOf:"Browser view of {url}",browserFrameTakeOver:"Take over",browserFrameHandBack:"Hand back",browserFrameStop:"Stop",browserFrameStatusIdle:"Idle",browserFrameStatusConnecting:"Connecting\u2026",browserFrameStatusLive:"Live",browserFrameStatusStalled:"Stalled",browserFrameControllerAgent:"Agent",browserFrameControllerUser:"User",notebookViewerLabel:"Notebook viewer",notebookViewerInvalid:"This file is not a valid Jupyter notebook.",notebookViewerUnsupportedVersion:"Notebook format {version} is not supported.",notebookViewerTooManyCells:"This notebook has too many cells to display.",notebookViewerInPrompt:"In [{count}]",notebookViewerInPromptEmpty:"In [ ]",notebookViewerCodeCell:"Code cell {index}",notebookViewerMarkdownCell:"Markdown cell {index}",notebookViewerRawCell:"Raw cell {index}",notebookViewerErrorOutput:"Error",notebookViewerShowAllOutput:"Show all output",notebookViewerCollapseOutput:"Collapse output",notebookViewerUnrenderedOutput:"This output type cannot be displayed.",xmlViewerLabel:"XML viewer",xmlViewerParseError:"This document could not be parsed as XML.",xmlViewerTooManyNodes:"This document has too many nodes to display.",xmlViewerChildCount:{one:"{count} child",other:"{count} children"},xmlViewerCopyDocument:"Copy XML to clipboard",xmlViewerCopyNode:"Copy {name}",xmlViewerExpandNode:"Expand {name}",xmlViewerCollapseNode:"Collapse {name}",artifactPanelLabel:"Artifact",artifactPanelPreview:"Preview",artifactPanelCode:"Code",artifactPanelPreviousVersion:"Previous version",artifactPanelNextVersion:"Next version",artifactPanelVersionPosition:"Version {index} of {count}",artifactPanelRestore:"Restore this version",artifactPanelGenerating:"Generating\u2026",resultFieldLabel:"{label}:",geojsonViewLabel:"Map",geojsonViewInvalid:"This file is not valid GeoJSON.",geojsonViewFeatureCount:{one:"{count} feature",other:"{count} features"},geojsonViewMissingMapLibrary:"Install the optional maplibre-gl peer to render this file on a map. Showing the raw GeoJSON instead.",mindMapLabel:"Mind map",mindMapTopicStatus:"{label}, level {level}, {count} subtopics",mindMapLeafStatus:"{label}, level {level}",mindMapExpanded:"{label} expanded",mindMapCollapsed:"{label} collapsed",entityDegree:"Connections",entityCommunity:"Community",focusInGraph:"Focus in graph",untitledEntity:"Untitled entity",untitledCommunity:"Untitled community",communityMemberCount:"{count} members",communityDrillIn:"Explore community",selectAllSources:"Select all sources",sourcePickerSelection:"{selected} of {total} selected",provenancePanelLabel:"Grounding",provenanceEntities:"Entities",provenanceRelationships:"Relationships",provenanceCommunities:"Communities",provenanceChunks:"Text chunks",provenanceEmpty:"No grounding data for this answer",chunkInspectorLabel:"Retrieved chunks",chunkScore:"Relevance {percent}%",scoreTierHigh:"High relevance",scoreTierMedium:"Medium relevance",scoreTierLow:"Low relevance",chunkInspectorEmpty:"No chunks retrieved",flowCanvasLabel:"Workflow canvas",flowCanvasLayoutLimit:"Some edge-ordering detail was omitted because the flow layout work limit was reached.",flowCanvasSummary:"Workflow with {nodeCount} nodes and {edgeCount} edges",flowNode:"Node {label}",flowEdge:"Edge from {source} to {target}",flowEdgeWithLabel:"{label}, edge from {source} to {target}",flowItemAnnouncement:"{item} ({index} of {total})",dashboardGridLabel:"Dashboard grid",dashboardCellCollisionRejected:"{label} cannot be placed there because it overlaps another cell.",dashboardCellMoved:"{label} moved to column {x}, row {y}.",dashboardCellResized:"{label} resized to width {w}, height {h}.",flowEdgeList:"Workflow edges",flowNodeSelected:"{label} selected",flowNodeDeselected:"{label} deselected",flowSelectionCleared:"Selection cleared",flowNodeMoved:"Moved {label} to {x}, {y}",flowConnectStarted:"Connecting from {label}. Use arrow keys to choose a target, Enter to connect, Escape to cancel.",flowConnectTarget:"Connecting {source} to {target} ({index} of {total})",flowConnectCommitted:"Connected {source} to {target}",flowConnectCancelled:"Connection cancelled",zoomToFit:"Zoom to fit",flowLockCanvas:"Lock canvas",flowControlsLabel:"Canvas controls",flowMinimapLabel:"Workflow overview",flowMinimapViewport:"Visible area",flowMinimapInstructions:"Arrow keys pan. Plus and minus zoom. Enter or Home fits the workflow.",flowMinimapViewportChanged:"Position {x}, {y}. Zoom {zoom}.",nodePaletteLabel:"Node palette",nodePalettePlaceholder:"Search nodes\u2026",nodePaletteEmpty:"No matching nodes.",nodePaletteDragHint:"Drag to the canvas, or press Enter to place",nodePaletteResultCount:{one:"{count} item",other:"{count} items"},retrievalResultsSelectRow:"Select {label}",pathStripLabel:"Path",pathNodeStatus:"{label}, node {position} of {total}",pathRelationStatus:"{relation}, relation",flowInputHandle:"Input {id}",flowOutputHandle:"Output {id}",flowStatusWithDuration:"{status} ({duration})",flowStatusWithDetail:"{status} \u2014 {detail}",neighborListLabel:"Relationships",neighborRowLabel:"{label}, {relation}, {direction}",neighborDirectionIn:"Incoming",neighborDirectionOut:"Outgoing",neighborDirectionBoth:"Bidirectional",neighborExpand:"Expand {label} in graph",neighborListEmpty:"No relationships",neighborGroupHeader:"{relation} ({count})",flowRunStatusLabel:"Run status",flowRunSummary:"{done} of {total} steps complete",flowRunStepStatus:"{label}: {status}",flowRunStatusCount:"{status}: {count}",policySummaryLabel:"Policy decisions",policySummaryAllowCount:"{count} allowed",policySummaryDenyCount:"{count} denied",policySummaryNeedsReviewCount:"{count} needs review",policySummaryStateAllow:"Allow",policySummaryStateDeny:"Deny",policySummaryStateNeedsReview:"Needs review",policySummaryCategoryGuardrail:"Guardrail",policySummaryCategoryPermission:"Permission",policySummaryCategoryPrivacy:"Privacy",policySummaryCategoryTool:"Tool",policySummaryDetailLabel:"More detail",evalDatasetLabel:"Evaluation examples",evalDatasetAddExample:"Add example",evalDatasetRemoveExample:"Remove example",evalDatasetImportLabel:"Import examples",evalDatasetSearchLabel:"Search examples",evalDatasetTagFilterLabel:"Filter by tag",evalDatasetEmpty:"No examples yet.",evalDatasetNoMatches:"No examples match the current filters.",evalDatasetColumnInput:"Input",evalDatasetColumnExpectedOutput:"Expected output",evalDatasetColumnTags:"Tags",queryBuilderLabel:"Query builder",queryBuilderEmpty:"No conditions yet.",queryBuilderNoFields:"No fields available.",queryBuilderAddCondition:"Add condition",queryBuilderRemoveCondition:"Remove condition {index}",queryBuilderFieldLabel:"Field",queryBuilderFieldPlaceholder:"Select field",queryBuilderOperatorLabel:"Operator",queryBuilderOperatorPlaceholder:"Select operator",queryBuilderValueLabel:"Value",queryBuilderValuePlaceholder:"Select value",queryBuilderCombinatorLabel:"Combine conditions with",queryBuilderCombinatorAnd:"All conditions (AND)",queryBuilderCombinatorOr:"Any condition (OR)",queryBuilderBooleanTrue:"True",queryBuilderBooleanFalse:"False",queryBuilderOperatorEquals:"Equals",queryBuilderOperatorNotEquals:"Does not equal",queryBuilderOperatorGreaterThan:"Greater than",queryBuilderOperatorGreaterThanOrEqual:"Greater than or equal to",queryBuilderOperatorLessThan:"Less than",queryBuilderOperatorLessThanOrEqual:"Less than or equal to",queryBuilderOperatorAfter:"After",queryBuilderOperatorOnOrAfter:"On or after",queryBuilderOperatorBefore:"Before",queryBuilderOperatorOnOrBefore:"On or before",queryBuilderOperatorContains:"Contains",queryBuilderOperatorStartsWith:"Starts with",queryBuilderOperatorEndsWith:"Ends with",queryBuilderOperatorIn:"Is any of",queryBuilderOperatorNotIn:"Is none of",queryBuilderOperatorIsEmpty:"Is empty",queryBuilderOperatorIsNotEmpty:"Is not empty",memoryPanelLabel:"Memory",memoryPanelShortTermHeading:"Short-term context",memoryPanelLongTermHeading:"Long-term memories",memoryPanelAdd:"Add to long-term memory",memoryPanelAddWithContext:'Add "{label}" to long-term memory',memoryPanelForgetAll:"Forget all",memoryPanelConfirmAddHeading:"Add this to long-term memory?",memoryPanelConfirmRemoveHeading:"Remove this item?",memoryPanelConfirmForgetHeading:"Forget all long-term memories?",memoryPanelConfirmForgetBody:"This permanently forgets all {count} long-term memories.",graphExplorerLabel:"Knowledge graph explorer",graphExplorerSearchPlaceholder:"Search entities\u2026",graphExplorerSearchResultsLabel:"Search results",graphExplorerPin:"Pin",graphExplorerUnpin:"Unpin",graphExplorerPinned:"{label} pinned",graphExplorerUnpinned:"{label} unpinned",graphExplorerPinnedHeading:"Pinned",graphExplorerFindPath:"Find path",retrievalModeVector:"Vector",retrievalModeKeyword:"Keyword",retrievalModeHybrid:"Hybrid",retrievalSearchLabel:"Retrieval search",retrievalModeLabel:"Search mode",retrievalFiltersLabel:"Active filters",groundingSummaryLabel:"Grounding summary",groundingSummaryEmpty:"No grounding assessment available",groundingSummarySupportedLabel:"Supported claims",groundingSummaryUnsupportedLabel:"Unsupported claims",groundingSummaryCoverageLabel:"Citation coverage",groundingSummaryConfidenceLabel:"Confidence",groundingSummaryWarningsHeading:"Warnings",groundingSummaryEvidenceHeading:"Evidence",claimEvidenceLabel:"Claim evidence",claimEvidenceEmpty:"No claim-level evidence available",claimEvidenceSupported:"Supported",claimEvidencePartiallySupported:"Partially supported",claimEvidenceUnsupported:"Unsupported",claimEvidenceContradicted:"Contradicted",claimEvidenceConfidence:"{percent} confidence",retrievalCompareLabel:"Retrieval comparison",retrievalCompareEmpty:"No retrieval result sets to compare",retrievalCompareOverlap:"Top-k overlap between {left} and {right}: {percent}",retrievalCompareRank:"Rank {rank}",retrievalCompareDenseScore:"Dense",retrievalCompareSparseScore:"Sparse",retrievalCompareRerankScore:"Rerank",retrievalCompareFinalScore:"Final",ragEvalDashboardLabel:"RAG evaluation dashboard",ragEvalDashboardEmpty:"No evaluation runs available",ragEvalDashboardRuns:"Evaluation runs",ragEvalDashboardSlices:"Evaluation slices",ragEvalDashboardAllSlices:"All",ragEvalDashboardSliceUnavailable:"No evaluation runs are available for {slice}.",promptStudioLabel:"Prompt studio",promptStudioMessages:"Prompt messages",promptStudioVariables:"Variables",promptStudioVersions:"Versions",promptStudioPreview:"Resolved preview",promptStudioRun:"Run prompt",promptStudioSave:"Save version",promptStudioAddMessage:"Add message",promptStudioRemoveMessage:"Remove message",promptStudioMessageRole:"Message {index} role ({role})",promptStudioMessageContent:"Message {index} content ({role})",promptStudioRoleSystem:"System",promptStudioRoleUser:"User",promptStudioRoleAssistant:"Assistant",promptStudioRoleTool:"Tool",schemaViewerLabel:"Schema viewer",schemaViewerEmpty:"No schema available",schemaViewerRequired:"Required",schemaViewerCircular:"Circular schema reference",schemaViewerType:"Type: {type}",subagentPanelLabel:"Subagents",subagentPanelEmpty:"No subagent runs",subagentPanelRetry:"Retry subagent",subagentPanelCancelRun:"Cancel {name}",subagentPanelRetryRun:"Retry {name}",toolTimelineDetailsFor:"Details for {name}",realtimeSessionLabel:"Realtime session",realtimeSessionDisconnected:"Disconnected",realtimeSessionConnecting:"Connecting",realtimeSessionConnected:"Connected",realtimeSessionReconnecting:"Reconnecting",realtimeSessionError:"Connection error",realtimeSessionConnect:"Connect",realtimeSessionDisconnect:"Disconnect",realtimeSessionMute:"Mute microphone",realtimeSessionUnmute:"Unmute microphone",realtimeSessionInterrupt:"Interrupt response",realtimeSessionConnectionFailed:"The realtime connection failed.",contextInspectorRedacted:"Redacted",contextInspectorTruncated:"Truncated",contextInspectorLabel:"Context inspector",contextInspectorEmpty:"No context segments",contextInspectorCopyLabel:"Copy assembled context",knowledgeBaseSyncIdle:"Idle",knowledgeBaseSyncSyncing:"Syncing",knowledgeBaseSyncPaused:"Paused",knowledgeBaseSyncSynced:"Synced",knowledgeBaseSyncError:"Error",knowledgeBaseHealthHealthy:"Healthy",knowledgeBaseHealthDegraded:"Degraded",knowledgeBaseHealthFailed:"Failed",knowledgeBaseHealthUnknown:"Unknown",knowledgeBasePermissionOwner:"Owner",knowledgeBasePermissionEditor:"Editor",knowledgeBasePermissionViewer:"Viewer",knowledgeBasePermissionRestricted:"Restricted",knowledgeBaseNeverSynced:"Never synced",knowledgeBaseSyncAction:"Sync now",knowledgeBasePauseAction:"Pause sync",knowledgeBaseDeleteAction:"Delete source",knowledgeBaseNameColumn:"Source",knowledgeBaseSyncColumn:"Sync status",knowledgeBaseHealthColumn:"Indexing health",knowledgeBasePermissionColumn:"Permission",knowledgeBaseActionsColumn:"Actions",knowledgeBaseTotalSources:"Sources",knowledgeBaseSyncedSources:"Synced",knowledgeBaseSyncingSources:"Syncing",knowledgeBaseNeedsAttention:"Needs attention",knowledgeBaseHeading:"Knowledge base",knowledgeBaseCreateSource:"Add source",knowledgeBaseEmptyHeading:"No knowledge sources yet",ingestionStageQueued:"Queued",ingestionStageUploading:"Uploading",ingestionStageExtracting:"Extracting text",ingestionStageChunking:"Chunking",ingestionStageEmbedding:"Embedding",ingestionStageIndexing:"Indexing",ingestionStageDone:"Done",ingestionStageFailed:"Failed",ingestionStageCancelled:"Cancelled",ingestionQueueLabel:"Ingestion queue",ingestionQueueEmpty:"No documents queued",documentLibraryFreshnessFresh:"Fresh",documentLibraryFreshnessAging:"Aging",documentLibraryFreshnessStale:"Stale",documentLibrarySelectAll:"Select all documents",documentLibrarySelectColumn:"Select",documentLibraryTypeColumn:"Type",documentLibraryNameColumn:"Name",documentLibraryVersionColumn:"Version",documentLibraryOwnerColumn:"Owner",documentLibraryTagsColumn:"Tags",documentLibraryFreshnessColumn:"Freshness",documentLibraryUpdatedColumn:"Updated",documentLibraryLabel:"Document library",documentLibraryEmptyHeading:"No documents yet",documentLibraryNoMatchesHeading:"No matching documents",documentLibrarySearchPlaceholder:"Search documents",documentLibraryFilterByTag:"Filter by tag",documentLibraryClearSelection:"Clear selection",documentLibrarySelectedCount:"{count} selected",documentCompareNoVersion:"No version provided.",documentCompareLabel:"Document comparison",agentRunCurrentStepLabel:"Current step",graphQueryHopRangeInvalid:"Maximum hops must be at least the minimum.",graphQueryRelationshipTypeLabel:"Relationship type",graphQueryNodeTypeLabel:"Node type",graphQueryBuilderLabel:"Graph query builder",graphQueryStartLabel:"Start entity",graphQueryEndLabel:"End entity",graphQueryMinHopsLabel:"Minimum hops",graphQueryMaxHopsLabel:"Maximum hops",graphQueryDirectionLabel:"Direction",graphQueryRun:"Run query",graphQuerySavedQueriesLabel:"Saved queries",graphQuerySaveNameLabel:"Query name",graphQuerySaveButton:"Save query",graphQueryLoadWithContext:"Load {name}",filterBarReset:"Reset filters",filterBarActiveFilters:"Active filters",drilldownDocuments:"Documents",drilldownRuns:"Agent runs",drilldownEmpty:"No item selected",evaluationRunStatusIdle:"Idle",evaluationRunStatusWaitingInput:"Waiting for input",evaluationRunStatusWaitingApproval:"Waiting for approval",evaluationRunStatusCancelled:"Cancelled",evaluationRunGroundingHeading:"Grounding",evaluationRunToolTraceHeading:"Tool trace",evaluationRunInputHeading:"Input",evaluationRunOutputHeading:"Output",evaluationRunLabel:"Evaluation run",evaluationRunProgressLabel:"Evaluation batch progress",retrievalFilterChipLabel:"{key}: {value}",retrievalSearchEmptyDescription:"Try a different search term or filters.",groundingSummaryEvidenceSpan:"Characters {start}\u2013{end}",contextInspectorTruncatedCount:"Truncated \u2014 {count} tokens omitted",contextInspectorSegmentTokens:"{tokens} tokens",knowledgeBaseDocumentCount:"{count} indexed",knowledgeBaseRowActionsLabel:"Actions for {name}",knowledgeBaseEmptyDescription:"Add a source to start indexing content.",ingestionChunkCount:{one:"{count} chunk",other:"{count} chunks"},ingestionItemProgressLabel:"{name} \u2014 {stage}",ingestionEmbeddedOfTotal:"{embedded} of {total} chunks embedded",ingestionAttemptCount:"Attempt {count}",ingestionRetryWithContext:"Retry {label}",ingestionCancelWithContext:"Cancel {label}",documentLibrarySelectDocument:"Select {name}",agentRunStatusAnnounce:"Status: {status}.",graphQueryDeleteWithContext:"Delete {name}",evaluationRunExampleLabel:"Example {index}",evaluationRunExampleStartedAnnounce:"{label} started",evaluationRunExampleCompletedAnnounce:"{label} completed",evaluationRunExampleFailedAnnounce:"{label} failed",evaluationRunExampleCancelledAnnounce:"{label} cancelled",evaluationRunExampleWaitingInputAnnounce:"{label} needs input",evaluationRunExampleWaitingApprovalAnnounce:"{label} needs approval",evaluationRunProgressSummary:"{completed} of {total} examples complete",evaluationRunRunningCount:"{count} running",evaluationRunFailedCount:"{count} failed",retrievalStageQueryRewrite:"Query rewrite",retrievalStageEmbed:"Embed",retrievalStageRetrieve:"Retrieve",retrievalStageRerank:"Rerank",retrievalStageFilter:"Filter",retrievalTraceEvidenceToggle:"{label} evidence",documentCompareOldVersion:"Old version",documentCompareNewVersion:"New version",agentRunStatusIdle:"Idle",agentRunStatusQueued:"Queued",agentRunStatusCollecting:"Collecting context",agentRunStatusWaitingInput:"Waiting for input",agentRunStatusWaitingApproval:"Waiting for approval",agentRunStatusDone:"Done",agentRunStatusCancelled:"Cancelled",localePickerLabel:"Language",localePickerRequired:"Please choose a language.",flagLoadError:"Flag unavailable",moveUp:"Move up",moveDown:"Move down",reorderMovePending:"Reorder pending.",reorderMoveCancelled:"Reorder cancelled.",reorderItemMoved:"Moved to position {index} of {total}"};import{enableLyraLocaleCache,getLyraLocale,getLyraLocaleDirection,getRegisteredLyraLocales,invalidateLyraLocaleCache,registerLyraLocale,resolveLocalizedParts,resolveLyraDirection,resolveLyraLocale,setLyraLocale,subscribeLyraLocale,subscribeLyraLocaleRegistry}from"./localization-runtime.js";function resolveLyraString(host,key,overrides,fallback,values){return resolveRuntimeLyraString(host,key,overrides,fallback,values,DEFAULT_STRINGS)}const LYRA_DEFAULT_STRINGS=DEFAULT_STRINGS;export{LYRA_DEFAULT_STRINGS,enableLyraLocaleCache,getLyraLocale,getLyraLocaleDirection,getRegisteredLyraLocales,invalidateLyraLocaleCache,registerLyraLocale,resolveLocalizedParts,resolveLyraDirection,resolveLyraLocale,resolveLyraString,setLyraLocale,subscribeLyraLocale,subscribeLyraLocaleRegistry};
|
|
@@ -1,17 +1,4 @@
|
|
|
1
1
|
import { LitElement, type CSSResultGroup, type PropertyDeclaration, type PropertyValues } from 'lit';
|
|
2
|
-
/**
|
|
3
|
-
* Structural view of the `protected static knownUnobservedAttributes` a component may declare for
|
|
4
|
-
* attributes it owns without observing -- host state it reflects onto itself as output
|
|
5
|
-
* (`<lr-animated-image playing>`), and documented public attributes consumed only by
|
|
6
|
-
* `:host([attr])` selectors (`<lr-page disable-sticky="header">`).
|
|
7
|
-
*
|
|
8
|
-
* Declaring it keeps the dev-mode unknown-attribute diagnostic from reporting a component's own
|
|
9
|
-
* API as a mistake, while leaving it armed for everything else -- do not use it to silence a
|
|
10
|
-
* warning about an attribute a consumer really did get wrong, which is the diagnostic's whole job.
|
|
11
|
-
*/
|
|
12
|
-
export interface KnownUnobservedAttributeHost {
|
|
13
|
-
knownUnobservedAttributes: readonly string[];
|
|
14
|
-
}
|
|
15
2
|
import type { LyraLocaleStrings } from './localization.js';
|
|
16
3
|
export interface LyraEmitOptions {
|
|
17
4
|
/** Set only for events whose listener may veto an operation before it runs. */
|
|
@@ -93,11 +80,17 @@ export declare class LyraElement<Events = LyraEventMap> extends LitElement {
|
|
|
93
80
|
protected static readonly identityEventDetailProperties: Readonly<Record<string, readonly PropertyKey[]>>;
|
|
94
81
|
/** Root event arrays whose sequence is owned while each generic/platform item retains identity. */
|
|
95
82
|
protected static readonly identityEventDetailCollectionItems: Readonly<Record<string, readonly PropertyKey[]>>;
|
|
96
|
-
static getPropertyDescriptor(name: PropertyKey, key: string | symbol, options: PropertyDeclaration): PropertyDescriptor | undefined;
|
|
97
83
|
/**
|
|
98
84
|
* Components commonly forward ARIA host attributes to an internal role and derive localization
|
|
99
85
|
* from `lang`/`dir`. These global attributes are not reactive Lit properties, so observe them
|
|
100
86
|
* centrally to keep post-render attribute changes in sync.
|
|
87
|
+
*
|
|
88
|
+
* `super.observedAttributes` is also what finalizes the class (Lit documents this getter as the
|
|
89
|
+
* finalization trigger), so it is the first moment every reactive accessor exists — and the one
|
|
90
|
+
* `customElements.define()` guarantees. The immutable-collection boundary is therefore installed
|
|
91
|
+
* here, right after finalization and before any instance can exist. See
|
|
92
|
+
* {@link installOwnedCollectionAccessors} for why it is no longer a `getPropertyDescriptor()`
|
|
93
|
+
* override.
|
|
101
94
|
*/
|
|
102
95
|
static get observedAttributes(): string[];
|
|
103
96
|
/** Optional locale override. Otherwise the nearest `locale`/`lang` ancestor is used. */
|
|
@@ -1 +1 @@
|
|
|
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{LitElement}from"lit";import{property}from"lit/decorators.js";import{tokens}from"./tokens.styles.js";import{palette}from"./tokens/palette.styles.js";import{resolveIntlLocale}from"./intl-cache.js";import{warnUnknownAttributes}from"./dev-mode-attribute-warning.js";let formInternalsHook,externalLabelFactory;function registerFormControlLabelSupport(hook,factory){formInternalsHook=hook,externalLabelFactory=factory}import{observeInheritedContext,beginInheritedContextUpdate,finishInheritedContextUpdate,markInheritedContextUpdateRendered,queueInheritedDirectionChange,recordInheritedDirectionRead,recordInheritedLocaleRead}from"./inherited-context-observer.js";import{canonicalizeLyraLocale,enableLyraLocaleCache,invalidateLyraLocaleCache,lyraLocaleCatalogVersion,peekLyraLocale,recordLyraOwnerDocumentConnection,resolveLyraDirection,resolveLyraString,resolveLyraLocale,snapshotLyraLocaleStrings,subscribeLyraLocaleForHost}from"./localization-runtime.js";const PUBLIC_COLLECTION_ENTRY_LIMIT=1e4,PUBLIC_COLLECTION_NODE_LIMIT=5e4,PUBLIC_COLLECTION_DEPTH_LIMIT=256,OMIT_COLLECTION_VALUE=Symbol("omit-public-collection-value");function snapshotRealm(view){const candidate=view;return{Array:candidate?.Array??Array,Date:candidate?.Date??Date,Map:candidate?.Map??Map,Object:candidate?.Object??Object,Set:candidate?.Set??Set}}function isRealmNeutralPlainRecord(value){try{const prototype=Object.getPrototypeOf(value);if(prototype===null)return!0;const constructor=Object.getOwnPropertyDescriptor(prototype,"constructor");return!!(constructor&&"value"in constructor&&typeof constructor.value=="function"&&constructor.value.name==="Object"&&Object.getPrototypeOf(prototype)===null)}catch{return!1}}function isArrayValue(value){try{return Array.isArray(value)}catch{return!1}}function isNativeArrayBufferView(value){try{return ArrayBuffer.isView(value)}catch{return!1}}function isImmutableBlob(value){if(typeof Blob>"u")return!1;const sizeGetter=Object.getOwnPropertyDescriptor(Blob.prototype,"size")?.get;if(!sizeGetter)return!1;try{return sizeGetter.call(value),!0}catch{return!1}}const MUTATING_DATE_METHODS=new Set(["setDate","setFullYear","setHours","setMilliseconds","setMinutes","setMonth","setSeconds","setTime","setUTCDate","setUTCFullYear","setUTCHours","setUTCMilliseconds","setUTCMinutes","setUTCMonth","setUTCSeconds","setYear"]);function nativeDateTime(value){try{return Date.prototype.getTime.call(value)}catch{return OMIT_COLLECTION_VALUE}}function snapshotReadonlyDate(source,time,budget){const target=new budget.realm.Date(time),boundMethods=new Map,rejectMutation=()=>{throw new TypeError("Cannot mutate a readonly Date snapshot")},snapshot=new Proxy(target,{get(date,key){if(MUTATING_DATE_METHODS.has(key))return rejectMutation;if(key==="constructor")return budget.realm.Date;const value=Reflect.get(date,key,date);if(typeof value!="function")return value;const cached=boundMethods.get(key);if(cached)return cached;const bound=value.bind(date);return boundMethods.set(key,bound),bound}});return rememberSnapshot(budget,source,snapshot),Object.freeze(snapshot)}function rememberSnapshot(budget,source,snapshot){budget.seen.set(source,snapshot),budget.additions.push(source)}function snapshotTransaction(budget,create){const remaining=budget.remaining,additions=budget.additions.length,result=create();if(result!==OMIT_COLLECTION_VALUE)return result;budget.remaining=remaining;for(let index=budget.additions.length-1;index>=additions;index-=1)budget.seen.delete(budget.additions[index]);return budget.additions.length=additions,OMIT_COLLECTION_VALUE}function emptyRealmArray(realm){return Object.freeze(new realm.Array)}function*ownEnumerableStringKeys(value){for(const key in value)Object.getOwnPropertyDescriptor(value,key)?.enumerable&&(yield key)}function snapshotDataRecord(value,keys,prototype,budget,depth,preserveRecordKeys,preserveCollectionItemKeys){const output=budget.realm.Object.create(prototype);rememberSnapshot(budget,value,output);try{for(const key of keys){const descriptor=Object.getOwnPropertyDescriptor(value,key);if(!descriptor?.enumerable||!("value"in descriptor))continue;if(budget.remaining<=0)return OMIT_COLLECTION_VALUE;budget.remaining-=1;const entry=preserveRecordKeys?.has(key)?descriptor.value:preserveCollectionItemKeys?.has(key)?snapshotIdentityCollection(descriptor.value,budget.realm,budget):snapshotCollectionValue(descriptor.value,budget,depth+1);if(entry===OMIT_COLLECTION_VALUE)return OMIT_COLLECTION_VALUE;Object.defineProperty(output,key,{value:entry,enumerable:!0,configurable:!1,writable:!1})}}catch{return OMIT_COLLECTION_VALUE}return Object.freeze(output)}function snapshotCollectionValue(value,budget,depth,preserveRecordKeys,preserveCollectionItemKeys,allowArrayPrefixTruncation=!1){if(value===null||typeof value!="object"&&typeof value!="function"||typeof value=="function")return value;if(budget.seen.has(value))return budget.seen.get(value);if(depth>PUBLIC_COLLECTION_DEPTH_LIMIT||budget.remaining<=0)return OMIT_COLLECTION_VALUE;if(isArrayValue(value)){let lengthDescriptor;try{lengthDescriptor=Object.getOwnPropertyDescriptor(value,"length")}catch{return allowArrayPrefixTruncation?emptyRealmArray(budget.realm):OMIT_COLLECTION_VALUE}if(!lengthDescriptor||!("value"in lengthDescriptor)||typeof lengthDescriptor.value!="number"||!Number.isSafeInteger(lengthDescriptor.value)||lengthDescriptor.value<0)return allowArrayPrefixTruncation?emptyRealmArray(budget.realm):OMIT_COLLECTION_VALUE;const sourceLength=lengthDescriptor.value;if(!allowArrayPrefixTruncation&&sourceLength>PUBLIC_COLLECTION_ENTRY_LIMIT)return OMIT_COLLECTION_VALUE;const length=Math.min(sourceLength,PUBLIC_COLLECTION_ENTRY_LIMIT),output=new budget.realm.Array(length);rememberSnapshot(budget,value,output);for(let index=0;index<length;index+=1){if(budget.remaining<=0){if(!allowArrayPrefixTruncation)return OMIT_COLLECTION_VALUE;output.length=index;break}let descriptor;try{descriptor=Object.getOwnPropertyDescriptor(value,String(index))}catch{if(!allowArrayPrefixTruncation)return OMIT_COLLECTION_VALUE;output.length=index;break}if(!descriptor)continue;if(!("value"in descriptor)){if(!allowArrayPrefixTruncation)return OMIT_COLLECTION_VALUE;output.length=index;break}const entry=snapshotTransaction(budget,()=>(budget.remaining-=1,snapshotCollectionValue(descriptor.value,budget,depth+1)));if(entry===OMIT_COLLECTION_VALUE){if(!allowArrayPrefixTruncation)return OMIT_COLLECTION_VALUE;output.length=index;break}Object.defineProperty(output,index,{value:entry,enumerable:!0,configurable:!1,writable:!1})}return Object.freeze(output)}if(isRealmNeutralPlainRecord(value)){let prototype;try{prototype=Object.getPrototypeOf(value)}catch{return OMIT_COLLECTION_VALUE}return snapshotDataRecord(value,ownEnumerableStringKeys(value),prototype===null?null:budget.realm.Object.prototype,budget,depth,preserveRecordKeys,preserveCollectionItemKeys)}const dateTime=nativeDateTime(value);if(dateTime!==OMIT_COLLECTION_VALUE)return snapshotReadonlyDate(value,dateTime,budget);const entries=nativeMapEntries(value);if(entries)return snapshotDetachedMap(value,entries,budget,depth);const values=nativeSetValues(value);if(values)return snapshotDetachedSet(value,values,budget,depth);if(isNativeArrayBufferView(value))return OMIT_COLLECTION_VALUE;const rect=snapshotDOMRect(value,budget);return rect!==OMIT_COLLECTION_VALUE?rect:isImmutableBlob(value)?value:OMIT_COLLECTION_VALUE}function snapshotPublicCollection(value,view){if(value===null||typeof value!="object"&&typeof value!="function")return value;const realm=snapshotRealm(view),budget={remaining:PUBLIC_COLLECTION_NODE_LIMIT,seen:new WeakMap,additions:[],realm},snapshot=snapshotTransaction(budget,()=>snapshotCollectionValue(value,budget,0,void 0,void 0,!0));if(snapshot!==OMIT_COLLECTION_VALUE)return snapshot;if(isArrayValue(value)||isNativeArrayBufferView(value))return emptyRealmArray(realm);if(typeof value=="object"){if(nativeMapEntries(value))return readonlyMapFacade(new realm.Map,realm);if(nativeSetValues(value))return readonlySetFacade(new realm.Set,realm);if(isRealmNeutralPlainRecord(value)){const prototype=Object.getPrototypeOf(value);return Object.freeze(realm.Object.create(prototype===null?null:realm.Object.prototype))}}return emptyRealmArray(realm)}function nativeMapEntries(value){try{return Map.prototype.entries.call(value)}catch{return}}function nativeSetValues(value){try{return Set.prototype.values.call(value)}catch{return}}function snapshotDOMRect(value,budget){if(typeof DOMRectReadOnly>"u")return OMIT_COLLECTION_VALUE;const nativePrototype=DOMRectReadOnly.prototype,output=budget.realm.Object.create(budget.realm.Object.prototype);for(const key of["x","y","width","height","top","right","bottom","left"]){let coordinate;try{const getter=Object.getOwnPropertyDescriptor(nativePrototype,key)?.get;if(!getter)return OMIT_COLLECTION_VALUE;coordinate=getter.call(value)}catch{return OMIT_COLLECTION_VALUE}if(typeof coordinate!="number"||!Number.isFinite(coordinate))return OMIT_COLLECTION_VALUE;Object.defineProperty(output,key,{value:coordinate,enumerable:!0,configurable:!1,writable:!1})}return Object.freeze(output)}function readonlyMapFacade(backing,realm=snapshotRealm()){let facade;return facade=realm.Object.create(realm.Object.prototype),Object.defineProperties(facade,{size:{enumerable:!0,get:()=>backing.size},entries:{value:()=>backing.entries()},get:{value:key=>backing.get(key)},has:{value:key=>backing.has(key)},keys:{value:()=>backing.keys()},values:{value:()=>backing.values()},forEach:{value:(callback,thisArg)=>backing.forEach((entry,key)=>callback.call(thisArg,entry,key,facade))},[Symbol.iterator]:{value:()=>backing[Symbol.iterator]()}}),Object.freeze(facade)}function readonlySetFacade(backing,realm=snapshotRealm()){let facade;return facade=realm.Object.create(realm.Object.prototype),Object.defineProperties(facade,{size:{enumerable:!0,get:()=>backing.size},entries:{value:()=>backing.entries()},has:{value:entry=>backing.has(entry)},keys:{value:()=>backing.keys()},values:{value:()=>backing.values()},forEach:{value:(callback,thisArg)=>backing.forEach(entry=>callback.call(thisArg,entry,entry,facade))},[Symbol.iterator]:{value:()=>backing[Symbol.iterator]()}}),Object.freeze(facade)}function snapshotIdentityMap(entries,realm=snapshotRealm()){const backing=new realm.Map;for(let next=entries.next(),count=0;!next.done&&count<PUBLIC_COLLECTION_ENTRY_LIMIT;next=entries.next(),count+=1)backing.set(next.value[0],next.value[1]);return readonlyMapFacade(backing,realm)}function snapshotIdentitySet(values,realm=snapshotRealm()){const backing=new realm.Set;for(let next=values.next(),count=0;!next.done&&count<PUBLIC_COLLECTION_ENTRY_LIMIT;next=values.next(),count+=1)backing.add(next.value);return readonlySetFacade(backing,realm)}function snapshotDetachedMap(source,entries,budget,depth){const backing=new budget.realm.Map,facade=readonlyMapFacade(backing,budget.realm);rememberSnapshot(budget,source,facade);for(let count=0;count<PUBLIC_COLLECTION_ENTRY_LIMIT;count+=1){let next;try{next=entries.next()}catch{break}if(next.done||budget.remaining<=0)break;const pair=snapshotTransaction(budget,()=>{budget.remaining-=1;const key=snapshotCollectionValue(next.value[0],budget,depth+1);if(key===OMIT_COLLECTION_VALUE)return OMIT_COLLECTION_VALUE;const entry=snapshotCollectionValue(next.value[1],budget,depth+1);return entry===OMIT_COLLECTION_VALUE?OMIT_COLLECTION_VALUE:[key,entry]});pair!==OMIT_COLLECTION_VALUE&&backing.set(pair[0],pair[1])}return facade}function snapshotDetachedSet(source,values,budget,depth){const backing=new budget.realm.Set,facade=readonlySetFacade(backing,budget.realm);rememberSnapshot(budget,source,facade);for(let count=0;count<PUBLIC_COLLECTION_ENTRY_LIMIT;count+=1){let next;try{next=values.next()}catch{break}if(next.done||budget.remaining<=0)break;const entry=snapshotTransaction(budget,()=>(budget.remaining-=1,snapshotCollectionValue(next.value,budget,depth+1)));entry!==OMIT_COLLECTION_VALUE&&backing.add(entry)}return facade}function snapshotIdentityCollection(value,view,budget){const realm=snapshotRealm(view);if(budget&&value!==null&&(typeof value=="object"||typeof value=="function")&&budget.seen.has(value))return budget.seen.get(value);if(isArrayValue(value)){let lengthDescriptor;try{lengthDescriptor=Object.getOwnPropertyDescriptor(value,"length")}catch{return emptyRealmArray(realm)}const length=lengthDescriptor&&"value"in lengthDescriptor&&typeof lengthDescriptor.value=="number"&&Number.isSafeInteger(lengthDescriptor.value)&&lengthDescriptor.value>=0?Math.min(lengthDescriptor.value,PUBLIC_COLLECTION_ENTRY_LIMIT):0,output=new realm.Array(length);budget&&rememberSnapshot(budget,value,output);for(let index=0;index<length;index+=1){let descriptor;try{descriptor=Object.getOwnPropertyDescriptor(value,String(index))}catch{continue}!descriptor||!("value"in descriptor)||Object.defineProperty(output,index,{value:descriptor.value,enumerable:!0,configurable:!1,writable:!1})}return Object.freeze(output)}if(value===null||typeof value!="object")return value;const mapEntries=nativeMapEntries(value);if(mapEntries){const output=snapshotIdentityMap(mapEntries,realm);return budget&&rememberSnapshot(budget,value,output),output}const setValues=nativeSetValues(value);if(setValues){const output=snapshotIdentitySet(setValues,realm);return budget&&rememberSnapshot(budget,value,output),output}return emptyRealmArray(realm)}function snapshotEventDetail(value,view,preserveRootKeys,preserveCollectionItemKeys){if(value==null)return value;const budget={remaining:PUBLIC_COLLECTION_NODE_LIMIT,seen:new WeakMap,additions:[],realm:snapshotRealm(view)},snapshot=snapshotTransaction(budget,()=>snapshotCollectionValue(value,budget,0,preserveRootKeys,preserveCollectionItemKeys));return snapshot===OMIT_COLLECTION_VALUE?null:snapshot}const SEED_FIRST_RENDER_STATE=Symbol("lr-seed-first-render-state"),SLOT_PRESENCE_UNRESOLVED=Symbol("lr-slot-presence-unresolved"),REACTIVE_HOST_ATTRIBUTES=["aria-label","aria-describedby","lang","dir"],DIRECTION_HOST_ATTRIBUTES=["class","style","slot"];function trustedLyraConstructorChain(instance){const constructors=[];let prototype=Object.getPrototypeOf(instance);for(;prototype&&prototype!==LitElement.prototype;){const descriptor=Object.getOwnPropertyDescriptor(prototype,"constructor");typeof descriptor?.value=="function"&&constructors.push(descriptor.value),prototype=Object.getPrototypeOf(prototype)}return constructors}const collectionPolicyByPrototype=new WeakMap;function collectionPropertyPolicy(instance,name){const prototype=Object.getPrototypeOf(instance);let policies=collectionPolicyByPrototype.get(prototype);policies||(policies=new Map,collectionPolicyByPrototype.set(prototype,policies));const cached=policies.get(name);if(cached)return cached;let owns=!1,preservesItemIdentity=!1,preservesObjectIdentity=!1;for(const constructor of trustedLyraConstructorChain(instance)){const declared=constructor;Object.prototype.hasOwnProperty.call(constructor,"ownedCollectionProperties")&&declared.ownedCollectionProperties.includes(name)&&(owns=!0),Object.prototype.hasOwnProperty.call(constructor,"identityCollectionProperties")&&declared.identityCollectionProperties.includes(name)&&(preservesItemIdentity=!0),Object.prototype.hasOwnProperty.call(constructor,"identityCollectionObjectProperties")&&declared.identityCollectionObjectProperties.includes(name)&&(preservesObjectIdentity=!0)}const policy=Object.freeze({owns,preservesItemIdentity,preservesObjectIdentity});return policies.set(name,policy),policy}class LyraElement extends LitElement{static{this.styles=[palette,tokens]}static{this.ownedCollectionProperties=Object.freeze([])}static{this.identityCollectionProperties=Object.freeze([])}static{this.identityCollectionObjectProperties=Object.freeze([])}static{this.immutableEventDetails=Object.freeze([])}static{this.identityEventDetailProperties=Object.freeze({})}static{this.identityEventDetailCollectionItems=Object.freeze({})}static getPropertyDescriptor(name,key,options){const descriptor=super.getPropertyDescriptor(name,key,options);if(!descriptor?.set)return descriptor;const originalSet=descriptor.set;return{...descriptor,set(value){const policy=collectionPropertyPolicy(this,name);if(!policy.owns){originalSet.call(this,value);return}const ownerView=this.ownerDocument?.defaultView;originalSet.call(this,policy.preservesObjectIdentity&&value!==null&&typeof value=="object"&&!isArrayValue(value)?value:policy.preservesItemIdentity?snapshotIdentityCollection(value,ownerView):snapshotPublicCollection(value,ownerView))}}}static{this.defaultStrings=Object.freeze({})}static get observedAttributes(){return[...new Set([...super.observedAttributes,...REACTIVE_HOST_ATTRIBUTES,...DIRECTION_HOST_ATTRIBUTES])]}get strings(){return this.stringsValue}set strings(value){const previous=this.stringsValue;this.stringsValue=snapshotLyraLocaleStrings(value),this.requestUpdate("strings",previous)}constructor(){if(super(),this.locale="",this.stringsValue=snapshotLyraLocaleStrings({}),this.localeSubscriptionNeeded=!1,this.constructor.formAssociated){const controller=externalLabelFactory?.(this);controller&&this.addController(controller)}}attachInternals(){const internals=super.attachInternals();return formInternalsHook?.(this,internals),internals}connectedCallback(){this.hydratingServerShadow??=typeof Node>"u"||!this.hasUpdated&&this.shadowRoot!==null,super.connectedCallback(),warnUnknownAttributes(this,this.constructor.observedAttributes,this.constructor.knownUnobservedAttributes??[]),recordLyraOwnerDocumentConnection(this),enableLyraLocaleCache(this),invalidateLyraLocaleCache(this),this.stopInheritedContextObservation?.(),this.stopInheritedContextObservation=observeInheritedContext(this),this.localeSubscriptionNeeded&&this.ensureLocaleSubscription(),this.lastLocalizedCatalogVersion!==void 0&&lyraLocaleCatalogVersion(resolveLyraLocale(this))!==this.lastLocalizedCatalogVersion&&this.requestUpdate();const deferred=this.deferredAfterUpdate;if(deferred){this.deferredAfterUpdate=void 0;for(const[key,callback]of deferred)this.scheduleAfterUpdate(callback,key)}}disconnectedCallback(){this.pendingLoadController?.abort(),this.pendingLoadController=void 0,this.stopLocaleSubscription?.(),this.stopLocaleSubscription=void 0,this.stopInheritedContextObservation?.(),this.stopInheritedContextObservation=void 0,invalidateLyraLocaleCache(this),super.disconnectedCallback()}adoptedCallback(){this.stopLocaleSubscription?.(),this.stopLocaleSubscription=void 0,invalidateLyraLocaleCache(this),this.isConnected&&this.localeSubscriptionNeeded&&this.ensureLocaleSubscription()}requestUpdate(name,oldValue,options){invalidateLyraLocaleCache(this),super.requestUpdate(name,oldValue,options)}performUpdate(){beginInheritedContextUpdate(this);try{super.performUpdate()}finally{finishInheritedContextUpdate(this)}}update(changedProperties){super.update(changedProperties),markInheritedContextUpdateRendered(this)}ensureLocaleSubscription(){this.localeSubscriptionNeeded=!0,!(!this.isConnected||this.stopLocaleSubscription)&&(this.stopLocaleSubscription=subscribeLyraLocaleForHost(this))}attributeChangedCallback(name,oldValue,value){const directionHostAttribute=oldValue!==value&&DIRECTION_HOST_ATTRIBUTES.includes(name);directionHostAttribute&&queueInheritedDirectionChange(this,name==="slot"),super.attributeChangedCallback(name,oldValue,value),oldValue!==value&&REACTIVE_HOST_ATTRIBUTES.includes(name)?this.requestUpdate():directionHostAttribute&&invalidateLyraLocaleCache(this)}seedFirstRenderState(seed){this.hasUpdated||this[SEED_FIRST_RENDER_STATE](seed)}[SEED_FIRST_RENDER_STATE](seed){if(!this.hydratingServerShadow){seed();return}const pending=this.deferredFirstRenderSeeds??=new Set;pending.add(seed),!(pending.size>1)&&this.updateComplete.then(()=>{setTimeout(()=>{this.hydratingServerShadow=!1;const seeds=this.deferredFirstRenderSeeds;this.deferredFirstRenderSeeds=void 0;for(const deferred of seeds??[])deferred();this.requestUpdate()},0)},()=>{this.hydratingServerShadow=!1,this.deferredFirstRenderSeeds=void 0})}updateBrowserDerivedState(update){this[SEED_FIRST_RENDER_STATE](update)}renderSlotPresence(present){return present||this[SLOT_PRESENCE_UNRESOLVED]()}[SLOT_PRESENCE_UNRESOLVED](){return typeof Node>"u"||this.hydratingServerShadow===!0}beginAbortableLoad(){this.pendingLoadController?.abort(),this.pendingLoadController=void 0;const AbortControllerCtor=this.ownerDocument?.defaultView?.AbortController;if(AbortControllerCtor)return this.pendingLoadController=new AbortControllerCtor,this.pendingLoadController.signal}scheduleAfterUpdate(callback,key="load"){const pending=this.afterUpdateCallbacks??=new Map;pending.has(key)||(pending.set(key,callback),!(pending.size>1)&&queueMicrotask(()=>{const due=this.afterUpdateCallbacks;if(this.afterUpdateCallbacks=void 0,!due)return;if(this.isConnected){for(const due_callback of due.values())due_callback();return}const held=this.deferredAfterUpdate??=new Map;for(const[heldKey,heldCallback]of due)held.has(heldKey)||held.set(heldKey,heldCallback)}))}localize(key,fallback,values){const message=resolveLyraString(this,key,this.strings,fallback,values,this.constructor.defaultStrings),locale=peekLyraLocale(this);return recordInheritedLocaleRead(this,locale),locale!==void 0&&(this.lastLocalizedCatalogVersion=lyraLocaleCatalogVersion(locale),this.ensureLocaleSubscription()),message}get effectiveMessageLocale(){if(this.locale)return canonicalizeLyraLocale(this.locale);const locale=resolveLyraLocale(this);return recordInheritedLocaleRead(this,locale),this.ensureLocaleSubscription(),locale}get effectiveLocale(){return resolveIntlLocale(this.effectiveMessageLocale)}get effectiveIntlLocale(){return this.effectiveLocale}get effectiveDirection(){const direction=resolveLyraDirection(this);return recordInheritedDirectionRead(this,direction),direction}addEventListener(type,listener,options){super.addEventListener(type,listener,options)}removeEventListener(type,listener,options){super.removeEventListener(type,listener,options)}emit(name,...args){const[detail,options]=args,ownerDocument=this.ownerDocument;let CustomEventCtor=ownerDocument?.defaultView?.CustomEvent;if(!CustomEventCtor&&ownerDocument)try{const candidate=ownerDocument.createEvent("CustomEvent").constructor;typeof candidate=="function"&&(CustomEventCtor=candidate)}catch{}CustomEventCtor??=globalThis.CustomEvent;let snapshotsDetail=!1;const identityDetailKeys=new Set,identityCollectionItemKeys=new Set;for(const constructor of trustedLyraConstructorChain(this)){if(Object.prototype.hasOwnProperty.call(constructor,"immutableEventDetails")&&constructor.immutableEventDetails.includes(name)&&(snapshotsDetail=!0),Object.prototype.hasOwnProperty.call(constructor,"identityEventDetailProperties"))for(const key of constructor.identityEventDetailProperties[name]??[])identityDetailKeys.add(key);if(Object.prototype.hasOwnProperty.call(constructor,"identityEventDetailCollectionItems"))for(const key of constructor.identityEventDetailCollectionItems[name]??[])identityCollectionItemKeys.add(key)}const event=new CustomEventCtor(name,{detail:detail===void 0?null:snapshotsDetail?snapshotEventDetail(detail,ownerDocument?.defaultView,identityDetailKeys,identityCollectionItemKeys):detail,bubbles:!0,composed:!0,cancelable:options?.cancelable??!1});return this.dispatchEvent(event),event}}__decorate([property({reflect:!0})],LyraElement.prototype,"locale",void 0),__decorate([property({attribute:!1})],LyraElement.prototype,"strings",null);export{LyraElement,SEED_FIRST_RENDER_STATE,SLOT_PRESENCE_UNRESOLVED,registerFormControlLabelSupport};
|
|
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{LitElement}from"lit";import{property}from"lit/decorators.js";import{tokens}from"./tokens.styles.js";import{palette}from"./tokens/palette.styles.js";import{resolveIntlLocale}from"./intl-cache.js";import{warnUnknownAttributes}from"./dev-mode-attribute-warning.js";let formInternalsHook,externalLabelFactory;function registerFormControlLabelSupport(hook,factory){formInternalsHook=hook,externalLabelFactory=factory}import{observeInheritedContext,beginInheritedContextUpdate,finishInheritedContextUpdate,markInheritedContextUpdateRendered,queueInheritedDirectionChange,recordInheritedDirectionRead,recordInheritedLocaleRead}from"./inherited-context-observer.js";import{canonicalizeLyraLocale,enableLyraLocaleCache,invalidateLyraLocaleCache,lyraLocaleCatalogVersion,peekLyraLocale,recordLyraOwnerDocumentConnection,resolveLyraDirection,resolveLyraString,resolveLyraLocale,snapshotLyraLocaleStrings,subscribeLyraLocaleForHost}from"./localization-runtime.js";const PUBLIC_COLLECTION_ENTRY_LIMIT=1e4,PUBLIC_COLLECTION_NODE_LIMIT=5e4,PUBLIC_COLLECTION_DEPTH_LIMIT=256,OMIT_COLLECTION_VALUE=Symbol("omit-public-collection-value");function snapshotRealm(view){const candidate=view;return{Array:candidate?.Array??Array,Date:candidate?.Date??Date,Map:candidate?.Map??Map,Object:candidate?.Object??Object,Set:candidate?.Set??Set}}function isRealmNeutralPlainRecord(value){try{const prototype=Object.getPrototypeOf(value);if(prototype===null)return!0;const constructor=Object.getOwnPropertyDescriptor(prototype,"constructor");return!!(constructor&&"value"in constructor&&typeof constructor.value=="function"&&constructor.value.name==="Object"&&Object.getPrototypeOf(prototype)===null)}catch{return!1}}function isArrayValue(value){try{return Array.isArray(value)}catch{return!1}}function isNativeArrayBufferView(value){try{return ArrayBuffer.isView(value)}catch{return!1}}function isImmutableBlob(value){if(typeof Blob>"u")return!1;const sizeGetter=Object.getOwnPropertyDescriptor(Blob.prototype,"size")?.get;if(!sizeGetter)return!1;try{return sizeGetter.call(value),!0}catch{return!1}}const MUTATING_DATE_METHODS=new Set(["setDate","setFullYear","setHours","setMilliseconds","setMinutes","setMonth","setSeconds","setTime","setUTCDate","setUTCFullYear","setUTCHours","setUTCMilliseconds","setUTCMinutes","setUTCMonth","setUTCSeconds","setYear"]);function nativeDateTime(value){try{return Date.prototype.getTime.call(value)}catch{return OMIT_COLLECTION_VALUE}}function snapshotReadonlyDate(source,time,budget){const target=new budget.realm.Date(time),boundMethods=new Map,rejectMutation=()=>{throw new TypeError("Cannot mutate a readonly Date snapshot")},snapshot=new Proxy(target,{get(date,key){if(MUTATING_DATE_METHODS.has(key))return rejectMutation;if(key==="constructor")return budget.realm.Date;const value=Reflect.get(date,key,date);if(typeof value!="function")return value;const cached=boundMethods.get(key);if(cached)return cached;const bound=value.bind(date);return boundMethods.set(key,bound),bound}});return rememberSnapshot(budget,source,snapshot),Object.freeze(snapshot)}function rememberSnapshot(budget,source,snapshot){budget.seen.set(source,snapshot),budget.additions.push(source)}function snapshotTransaction(budget,create){const remaining=budget.remaining,additions=budget.additions.length,result=create();if(result!==OMIT_COLLECTION_VALUE)return result;budget.remaining=remaining;for(let index=budget.additions.length-1;index>=additions;index-=1)budget.seen.delete(budget.additions[index]);return budget.additions.length=additions,OMIT_COLLECTION_VALUE}function emptyRealmArray(realm){return Object.freeze(new realm.Array)}function*ownEnumerableStringKeys(value){for(const key in value)Object.getOwnPropertyDescriptor(value,key)?.enumerable&&(yield key)}function snapshotDataRecord(value,keys,prototype,budget,depth,preserveRecordKeys,preserveCollectionItemKeys){const output=budget.realm.Object.create(prototype);rememberSnapshot(budget,value,output);try{for(const key of keys){const descriptor=Object.getOwnPropertyDescriptor(value,key);if(!descriptor?.enumerable||!("value"in descriptor))continue;if(budget.remaining<=0)return OMIT_COLLECTION_VALUE;budget.remaining-=1;const entry=preserveRecordKeys?.has(key)?descriptor.value:preserveCollectionItemKeys?.has(key)?snapshotIdentityCollection(descriptor.value,budget.realm,budget):snapshotCollectionValue(descriptor.value,budget,depth+1);if(entry===OMIT_COLLECTION_VALUE)return OMIT_COLLECTION_VALUE;Object.defineProperty(output,key,{value:entry,enumerable:!0,configurable:!1,writable:!1})}}catch{return OMIT_COLLECTION_VALUE}return Object.freeze(output)}function snapshotCollectionValue(value,budget,depth,preserveRecordKeys,preserveCollectionItemKeys,allowArrayPrefixTruncation=!1){if(value===null||typeof value!="object"&&typeof value!="function"||typeof value=="function")return value;if(budget.seen.has(value))return budget.seen.get(value);if(depth>PUBLIC_COLLECTION_DEPTH_LIMIT||budget.remaining<=0)return OMIT_COLLECTION_VALUE;if(isArrayValue(value)){let lengthDescriptor;try{lengthDescriptor=Object.getOwnPropertyDescriptor(value,"length")}catch{return allowArrayPrefixTruncation?emptyRealmArray(budget.realm):OMIT_COLLECTION_VALUE}if(!lengthDescriptor||!("value"in lengthDescriptor)||typeof lengthDescriptor.value!="number"||!Number.isSafeInteger(lengthDescriptor.value)||lengthDescriptor.value<0)return allowArrayPrefixTruncation?emptyRealmArray(budget.realm):OMIT_COLLECTION_VALUE;const sourceLength=lengthDescriptor.value;if(!allowArrayPrefixTruncation&&sourceLength>PUBLIC_COLLECTION_ENTRY_LIMIT)return OMIT_COLLECTION_VALUE;const length=Math.min(sourceLength,PUBLIC_COLLECTION_ENTRY_LIMIT),output=new budget.realm.Array(length);rememberSnapshot(budget,value,output);for(let index=0;index<length;index+=1){if(budget.remaining<=0){if(!allowArrayPrefixTruncation)return OMIT_COLLECTION_VALUE;output.length=index;break}let descriptor;try{descriptor=Object.getOwnPropertyDescriptor(value,String(index))}catch{if(!allowArrayPrefixTruncation)return OMIT_COLLECTION_VALUE;output.length=index;break}if(!descriptor)continue;if(!("value"in descriptor)){if(!allowArrayPrefixTruncation)return OMIT_COLLECTION_VALUE;output.length=index;break}const entry=snapshotTransaction(budget,()=>(budget.remaining-=1,snapshotCollectionValue(descriptor.value,budget,depth+1)));if(entry===OMIT_COLLECTION_VALUE){if(!allowArrayPrefixTruncation)return OMIT_COLLECTION_VALUE;output.length=index;break}Object.defineProperty(output,index,{value:entry,enumerable:!0,configurable:!1,writable:!1})}return Object.freeze(output)}if(isRealmNeutralPlainRecord(value)){let prototype;try{prototype=Object.getPrototypeOf(value)}catch{return OMIT_COLLECTION_VALUE}return snapshotDataRecord(value,ownEnumerableStringKeys(value),prototype===null?null:budget.realm.Object.prototype,budget,depth,preserveRecordKeys,preserveCollectionItemKeys)}const dateTime=nativeDateTime(value);if(dateTime!==OMIT_COLLECTION_VALUE)return snapshotReadonlyDate(value,dateTime,budget);const entries=nativeMapEntries(value);if(entries)return snapshotDetachedMap(value,entries,budget,depth);const values=nativeSetValues(value);if(values)return snapshotDetachedSet(value,values,budget,depth);if(isNativeArrayBufferView(value))return OMIT_COLLECTION_VALUE;const rect=snapshotDOMRect(value,budget);return rect!==OMIT_COLLECTION_VALUE?rect:isImmutableBlob(value)?value:OMIT_COLLECTION_VALUE}function snapshotPublicCollection(value,view){if(value===null||typeof value!="object"&&typeof value!="function")return value;const realm=snapshotRealm(view),budget={remaining:PUBLIC_COLLECTION_NODE_LIMIT,seen:new WeakMap,additions:[],realm},snapshot=snapshotTransaction(budget,()=>snapshotCollectionValue(value,budget,0,void 0,void 0,!0));if(snapshot!==OMIT_COLLECTION_VALUE)return snapshot;if(isArrayValue(value)||isNativeArrayBufferView(value))return emptyRealmArray(realm);if(typeof value=="object"){if(nativeMapEntries(value))return readonlyMapFacade(new realm.Map,realm);if(nativeSetValues(value))return readonlySetFacade(new realm.Set,realm);if(isRealmNeutralPlainRecord(value)){const prototype=Object.getPrototypeOf(value);return Object.freeze(realm.Object.create(prototype===null?null:realm.Object.prototype))}}return emptyRealmArray(realm)}function nativeMapEntries(value){try{return Map.prototype.entries.call(value)}catch{return}}function nativeSetValues(value){try{return Set.prototype.values.call(value)}catch{return}}function snapshotDOMRect(value,budget){if(typeof DOMRectReadOnly>"u")return OMIT_COLLECTION_VALUE;const nativePrototype=DOMRectReadOnly.prototype,output=budget.realm.Object.create(budget.realm.Object.prototype);for(const key of["x","y","width","height","top","right","bottom","left"]){let coordinate;try{const getter=Object.getOwnPropertyDescriptor(nativePrototype,key)?.get;if(!getter)return OMIT_COLLECTION_VALUE;coordinate=getter.call(value)}catch{return OMIT_COLLECTION_VALUE}if(typeof coordinate!="number"||!Number.isFinite(coordinate))return OMIT_COLLECTION_VALUE;Object.defineProperty(output,key,{value:coordinate,enumerable:!0,configurable:!1,writable:!1})}return Object.freeze(output)}function readonlyMapFacade(backing,realm=snapshotRealm()){let facade;return facade=realm.Object.create(realm.Object.prototype),Object.defineProperties(facade,{size:{enumerable:!0,get:()=>backing.size},entries:{value:()=>backing.entries()},get:{value:key=>backing.get(key)},has:{value:key=>backing.has(key)},keys:{value:()=>backing.keys()},values:{value:()=>backing.values()},forEach:{value:(callback,thisArg)=>backing.forEach((entry,key)=>callback.call(thisArg,entry,key,facade))},[Symbol.iterator]:{value:()=>backing[Symbol.iterator]()}}),Object.freeze(facade)}function readonlySetFacade(backing,realm=snapshotRealm()){let facade;return facade=realm.Object.create(realm.Object.prototype),Object.defineProperties(facade,{size:{enumerable:!0,get:()=>backing.size},entries:{value:()=>backing.entries()},has:{value:entry=>backing.has(entry)},keys:{value:()=>backing.keys()},values:{value:()=>backing.values()},forEach:{value:(callback,thisArg)=>backing.forEach(entry=>callback.call(thisArg,entry,entry,facade))},[Symbol.iterator]:{value:()=>backing[Symbol.iterator]()}}),Object.freeze(facade)}function snapshotIdentityMap(entries,realm=snapshotRealm()){const backing=new realm.Map;for(let next=entries.next(),count=0;!next.done&&count<PUBLIC_COLLECTION_ENTRY_LIMIT;next=entries.next(),count+=1)backing.set(next.value[0],next.value[1]);return readonlyMapFacade(backing,realm)}function snapshotIdentitySet(values,realm=snapshotRealm()){const backing=new realm.Set;for(let next=values.next(),count=0;!next.done&&count<PUBLIC_COLLECTION_ENTRY_LIMIT;next=values.next(),count+=1)backing.add(next.value);return readonlySetFacade(backing,realm)}function snapshotDetachedMap(source,entries,budget,depth){const backing=new budget.realm.Map,facade=readonlyMapFacade(backing,budget.realm);rememberSnapshot(budget,source,facade);for(let count=0;count<PUBLIC_COLLECTION_ENTRY_LIMIT;count+=1){let next;try{next=entries.next()}catch{break}if(next.done||budget.remaining<=0)break;const pair=snapshotTransaction(budget,()=>{budget.remaining-=1;const key=snapshotCollectionValue(next.value[0],budget,depth+1);if(key===OMIT_COLLECTION_VALUE)return OMIT_COLLECTION_VALUE;const entry=snapshotCollectionValue(next.value[1],budget,depth+1);return entry===OMIT_COLLECTION_VALUE?OMIT_COLLECTION_VALUE:[key,entry]});pair!==OMIT_COLLECTION_VALUE&&backing.set(pair[0],pair[1])}return facade}function snapshotDetachedSet(source,values,budget,depth){const backing=new budget.realm.Set,facade=readonlySetFacade(backing,budget.realm);rememberSnapshot(budget,source,facade);for(let count=0;count<PUBLIC_COLLECTION_ENTRY_LIMIT;count+=1){let next;try{next=values.next()}catch{break}if(next.done||budget.remaining<=0)break;const entry=snapshotTransaction(budget,()=>(budget.remaining-=1,snapshotCollectionValue(next.value,budget,depth+1)));entry!==OMIT_COLLECTION_VALUE&&backing.add(entry)}return facade}function snapshotIdentityCollection(value,view,budget){const realm=snapshotRealm(view);if(budget&&value!==null&&(typeof value=="object"||typeof value=="function")&&budget.seen.has(value))return budget.seen.get(value);if(isArrayValue(value)){let lengthDescriptor;try{lengthDescriptor=Object.getOwnPropertyDescriptor(value,"length")}catch{return emptyRealmArray(realm)}const length=lengthDescriptor&&"value"in lengthDescriptor&&typeof lengthDescriptor.value=="number"&&Number.isSafeInteger(lengthDescriptor.value)&&lengthDescriptor.value>=0?Math.min(lengthDescriptor.value,PUBLIC_COLLECTION_ENTRY_LIMIT):0,output=new realm.Array(length);budget&&rememberSnapshot(budget,value,output);for(let index=0;index<length;index+=1){let descriptor;try{descriptor=Object.getOwnPropertyDescriptor(value,String(index))}catch{continue}!descriptor||!("value"in descriptor)||Object.defineProperty(output,index,{value:descriptor.value,enumerable:!0,configurable:!1,writable:!1})}return Object.freeze(output)}if(value===null||typeof value!="object")return value;const mapEntries=nativeMapEntries(value);if(mapEntries){const output=snapshotIdentityMap(mapEntries,realm);return budget&&rememberSnapshot(budget,value,output),output}const setValues=nativeSetValues(value);if(setValues){const output=snapshotIdentitySet(setValues,realm);return budget&&rememberSnapshot(budget,value,output),output}return emptyRealmArray(realm)}function snapshotEventDetail(value,view,preserveRootKeys,preserveCollectionItemKeys){if(value==null)return value;const budget={remaining:PUBLIC_COLLECTION_NODE_LIMIT,seen:new WeakMap,additions:[],realm:snapshotRealm(view)},snapshot=snapshotTransaction(budget,()=>snapshotCollectionValue(value,budget,0,preserveRootKeys,preserveCollectionItemKeys));return snapshot===OMIT_COLLECTION_VALUE?null:snapshot}const SEED_FIRST_RENDER_STATE=Symbol("lr-seed-first-render-state"),SLOT_PRESENCE_UNRESOLVED=Symbol("lr-slot-presence-unresolved"),REACTIVE_HOST_ATTRIBUTES=["aria-label","aria-describedby","lang","dir"],DIRECTION_HOST_ATTRIBUTES=["class","style","slot"];function trustedLyraConstructorChain(instance){const constructors=[];let prototype=Object.getPrototypeOf(instance);for(;prototype&&prototype!==LitElement.prototype;){const descriptor=Object.getOwnPropertyDescriptor(prototype,"constructor");typeof descriptor?.value=="function"&&constructors.push(descriptor.value),prototype=Object.getPrototypeOf(prototype)}return constructors}function lyraClassChain(ctor){const constructors=[];let current=ctor;for(;typeof current=="function"&¤t!==LitElement;)constructors.push(current),current=Object.getPrototypeOf(current);return constructors}const collectionPolicyByConstructor=new WeakMap;function collectionPropertyPolicy(ctor,name){let policies=collectionPolicyByConstructor.get(ctor);policies||(policies=new Map,collectionPolicyByConstructor.set(ctor,policies));const cached=policies.get(name);if(cached)return cached;let owns=!1,preservesItemIdentity=!1,preservesObjectIdentity=!1;for(const constructor of lyraClassChain(ctor)){const declared=constructor;Object.prototype.hasOwnProperty.call(constructor,"ownedCollectionProperties")&&declared.ownedCollectionProperties.includes(name)&&(owns=!0),Object.prototype.hasOwnProperty.call(constructor,"identityCollectionProperties")&&declared.identityCollectionProperties.includes(name)&&(preservesItemIdentity=!0),Object.prototype.hasOwnProperty.call(constructor,"identityCollectionObjectProperties")&&declared.identityCollectionObjectProperties.includes(name)&&(preservesObjectIdentity=!0)}const policy=Object.freeze({owns,preservesItemIdentity,preservesObjectIdentity});return policies.set(name,policy),policy}const COLLECTION_ENROLLMENT_FIELDS=["ownedCollectionProperties","identityCollectionProperties","identityCollectionObjectProperties"];function enrolledCollectionPropertyNames(ctor){const names=new Set;for(const constructor of lyraClassChain(ctor))for(const field of COLLECTION_ENROLLMENT_FIELDS){if(!Object.prototype.hasOwnProperty.call(constructor,field))continue;const declared=constructor;for(const name of declared[field])names.add(name)}return names}function inheritedPropertyDescriptor(prototype,name){let current=prototype;for(;current;){const descriptor=Object.getOwnPropertyDescriptor(current,name);if(descriptor)return descriptor;current=Object.getPrototypeOf(current)}}const installedOwnershipBoundaries=new WeakSet,ownershipBoundarySetters=new WeakMap;function samePolicy(a,b){return a.owns===b.owns&&a.preservesItemIdentity===b.preservesItemIdentity&&a.preservesObjectIdentity===b.preservesObjectIdentity}function installOwnedCollectionAccessors(ctor){if(installedOwnershipBoundaries.has(ctor))return;installedOwnershipBoundaries.add(ctor);const prototype=ctor.prototype;for(const name of enrolledCollectionPropertyNames(ctor)){const policy=collectionPropertyPolicy(ctor,name);if(!policy.owns)continue;const declaration=ctor.elementProperties.get(name);if(!declaration||declaration.noAccessor)continue;const descriptor=inheritedPropertyDescriptor(prototype,name),inheritedSet=descriptor?.set;if(!inheritedSet)continue;const installed=ownershipBoundarySetters.get(inheritedSet);if(installed&&samePolicy(installed.policy,policy))continue;const originalSet=installed?.originalSet??inheritedSet,set=function(value){const ownerView=this.ownerDocument?.defaultView;originalSet.call(this,policy.preservesObjectIdentity&&value!==null&&typeof value=="object"&&!isArrayValue(value)?value:policy.preservesItemIdentity?snapshotIdentityCollection(value,ownerView):snapshotPublicCollection(value,ownerView))};ownershipBoundarySetters.set(set,{policy,originalSet}),Object.defineProperty(prototype,name,{...descriptor,set})}}class LyraElement extends LitElement{static{this.styles=[palette,tokens]}static{this.ownedCollectionProperties=Object.freeze([])}static{this.identityCollectionProperties=Object.freeze([])}static{this.identityCollectionObjectProperties=Object.freeze([])}static{this.immutableEventDetails=Object.freeze([])}static{this.identityEventDetailProperties=Object.freeze({})}static{this.identityEventDetailCollectionItems=Object.freeze({})}static{this.defaultStrings=Object.freeze({})}static get observedAttributes(){const attributes=[...new Set([...super.observedAttributes,...REACTIVE_HOST_ATTRIBUTES,...DIRECTION_HOST_ATTRIBUTES])];return installOwnedCollectionAccessors(this),attributes}get strings(){return this.stringsValue}set strings(value){const previous=this.stringsValue;this.stringsValue=snapshotLyraLocaleStrings(value),this.requestUpdate("strings",previous)}constructor(){if(super(),this.locale="",this.stringsValue=snapshotLyraLocaleStrings({}),this.localeSubscriptionNeeded=!1,this.constructor.formAssociated){const controller=externalLabelFactory?.(this);controller&&this.addController(controller)}}attachInternals(){const internals=super.attachInternals();return formInternalsHook?.(this,internals),internals}connectedCallback(){this.hydratingServerShadow??=typeof Node>"u"||!this.hasUpdated&&this.shadowRoot!==null,super.connectedCallback(),warnUnknownAttributes(this,this.constructor.observedAttributes,this.constructor.knownUnobservedAttributes??[]),recordLyraOwnerDocumentConnection(this),enableLyraLocaleCache(this),invalidateLyraLocaleCache(this),this.stopInheritedContextObservation?.(),this.stopInheritedContextObservation=observeInheritedContext(this),this.localeSubscriptionNeeded&&this.ensureLocaleSubscription(),this.lastLocalizedCatalogVersion!==void 0&&lyraLocaleCatalogVersion(resolveLyraLocale(this))!==this.lastLocalizedCatalogVersion&&this.requestUpdate();const deferred=this.deferredAfterUpdate;if(deferred){this.deferredAfterUpdate=void 0;for(const[key,callback]of deferred)this.scheduleAfterUpdate(callback,key)}}disconnectedCallback(){this.pendingLoadController?.abort(),this.pendingLoadController=void 0,this.stopLocaleSubscription?.(),this.stopLocaleSubscription=void 0,this.stopInheritedContextObservation?.(),this.stopInheritedContextObservation=void 0,invalidateLyraLocaleCache(this),super.disconnectedCallback()}adoptedCallback(){this.stopLocaleSubscription?.(),this.stopLocaleSubscription=void 0,invalidateLyraLocaleCache(this),this.isConnected&&this.localeSubscriptionNeeded&&this.ensureLocaleSubscription()}requestUpdate(name,oldValue,options){invalidateLyraLocaleCache(this),super.requestUpdate(name,oldValue,options)}performUpdate(){beginInheritedContextUpdate(this);try{super.performUpdate()}finally{finishInheritedContextUpdate(this)}}update(changedProperties){super.update(changedProperties),markInheritedContextUpdateRendered(this)}ensureLocaleSubscription(){this.localeSubscriptionNeeded=!0,!(!this.isConnected||this.stopLocaleSubscription)&&(this.stopLocaleSubscription=subscribeLyraLocaleForHost(this))}attributeChangedCallback(name,oldValue,value){const directionHostAttribute=oldValue!==value&&DIRECTION_HOST_ATTRIBUTES.includes(name);directionHostAttribute&&queueInheritedDirectionChange(this,name==="slot"),super.attributeChangedCallback(name,oldValue,value),oldValue!==value&&REACTIVE_HOST_ATTRIBUTES.includes(name)?this.requestUpdate():directionHostAttribute&&invalidateLyraLocaleCache(this)}seedFirstRenderState(seed){this.hasUpdated||this[SEED_FIRST_RENDER_STATE](seed)}[SEED_FIRST_RENDER_STATE](seed){if(!this.hydratingServerShadow){seed();return}const pending=this.deferredFirstRenderSeeds??=new Set;pending.add(seed),!(pending.size>1)&&this.updateComplete.then(()=>{setTimeout(()=>{this.hydratingServerShadow=!1;const seeds=this.deferredFirstRenderSeeds;this.deferredFirstRenderSeeds=void 0;for(const deferred of seeds??[])deferred();this.requestUpdate()},0)},()=>{this.hydratingServerShadow=!1,this.deferredFirstRenderSeeds=void 0})}updateBrowserDerivedState(update){this[SEED_FIRST_RENDER_STATE](update)}renderSlotPresence(present){return present||this[SLOT_PRESENCE_UNRESOLVED]()}[SLOT_PRESENCE_UNRESOLVED](){return typeof Node>"u"||this.hydratingServerShadow===!0}beginAbortableLoad(){this.pendingLoadController?.abort(),this.pendingLoadController=void 0;const AbortControllerCtor=this.ownerDocument?.defaultView?.AbortController;if(AbortControllerCtor)return this.pendingLoadController=new AbortControllerCtor,this.pendingLoadController.signal}scheduleAfterUpdate(callback,key="load"){const pending=this.afterUpdateCallbacks??=new Map;pending.has(key)||(pending.set(key,callback),!(pending.size>1)&&queueMicrotask(()=>{const due=this.afterUpdateCallbacks;if(this.afterUpdateCallbacks=void 0,!due)return;if(this.isConnected){for(const due_callback of due.values())due_callback();return}const held=this.deferredAfterUpdate??=new Map;for(const[heldKey,heldCallback]of due)held.has(heldKey)||held.set(heldKey,heldCallback)}))}localize(key,fallback,values){const message=resolveLyraString(this,key,this.strings,fallback,values,this.constructor.defaultStrings),locale=peekLyraLocale(this);return recordInheritedLocaleRead(this,locale),locale!==void 0&&(this.lastLocalizedCatalogVersion=lyraLocaleCatalogVersion(locale),this.ensureLocaleSubscription()),message}get effectiveMessageLocale(){if(this.locale)return canonicalizeLyraLocale(this.locale);const locale=resolveLyraLocale(this);return recordInheritedLocaleRead(this,locale),this.ensureLocaleSubscription(),locale}get effectiveLocale(){return resolveIntlLocale(this.effectiveMessageLocale)}get effectiveIntlLocale(){return this.effectiveLocale}get effectiveDirection(){const direction=resolveLyraDirection(this);return recordInheritedDirectionRead(this,direction),direction}addEventListener(type,listener,options){super.addEventListener(type,listener,options)}removeEventListener(type,listener,options){super.removeEventListener(type,listener,options)}emit(name,...args){const[detail,options]=args,ownerDocument=this.ownerDocument;let CustomEventCtor=ownerDocument?.defaultView?.CustomEvent;if(!CustomEventCtor&&ownerDocument)try{const candidate=ownerDocument.createEvent("CustomEvent").constructor;typeof candidate=="function"&&(CustomEventCtor=candidate)}catch{}CustomEventCtor??=globalThis.CustomEvent;let snapshotsDetail=!1;const identityDetailKeys=new Set,identityCollectionItemKeys=new Set;for(const constructor of trustedLyraConstructorChain(this)){if(Object.prototype.hasOwnProperty.call(constructor,"immutableEventDetails")&&constructor.immutableEventDetails.includes(name)&&(snapshotsDetail=!0),Object.prototype.hasOwnProperty.call(constructor,"identityEventDetailProperties"))for(const key of constructor.identityEventDetailProperties[name]??[])identityDetailKeys.add(key);if(Object.prototype.hasOwnProperty.call(constructor,"identityEventDetailCollectionItems"))for(const key of constructor.identityEventDetailCollectionItems[name]??[])identityCollectionItemKeys.add(key)}const event=new CustomEventCtor(name,{detail:detail===void 0?null:snapshotsDetail?snapshotEventDetail(detail,ownerDocument?.defaultView,identityDetailKeys,identityCollectionItemKeys):detail,bubbles:!0,composed:!0,cancelable:options?.cancelable??!1});return this.dispatchEvent(event),event}}__decorate([property({reflect:!0})],LyraElement.prototype,"locale",void 0),__decorate([property({attribute:!1})],LyraElement.prototype,"strings",null);export{LyraElement,SEED_FIRST_RENDER_STATE,SLOT_PRESENCE_UNRESOLVED,registerFormControlLabelSupport};
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import type { OverlayStackActivationOptions, OverlayStackHandle } from './overlay-stack.js';
|
|
2
|
+
export type NonmodalOverlayActivationOptions = Omit<OverlayStackActivationOptions, 'initiallySuspended' | 'modal' | 'modalRoot' | 'onDeactivate' | 'onRegistered' | 'onUnregistered' | 'trapFocus'>;
|
|
3
|
+
export type OverlayHandle = OverlayStackHandle;
|
|
4
|
+
/**
|
|
5
|
+
* Adds a nonmodal popup to the document's shared overlay stack without loading modal inerting,
|
|
6
|
+
* scroll locking, or rendered-dialog lifecycle machinery.
|
|
7
|
+
*/
|
|
8
|
+
export declare function activateNonmodalOverlay(options: NonmodalOverlayActivationOptions): OverlayHandle;
|
|
9
|
+
export { composedContains, deepActiveElement, } from './overlay-stack.js';
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{activateOverlayStack}from"./overlay-stack.js";function activateNonmodalOverlay(options){return activateOverlayStack({...options,modal:!1,trapFocus:!1})}import{composedContains,deepActiveElement}from"./overlay-stack.js";export{activateNonmodalOverlay,composedContains,deepActiveElement};
|
|
@@ -63,30 +63,14 @@ export interface OverlayHandle {
|
|
|
63
63
|
/** Runs the backdrop callback only when this overlay is topmost. */
|
|
64
64
|
dismissBackdrop(): boolean;
|
|
65
65
|
}
|
|
66
|
-
/** Returns the deepest focused descendant across open shadow roots, or `null` when no document
|
|
67
|
-
* exists in the current realm. */
|
|
68
|
-
export declare function deepActiveElement(doc?: Document | null | undefined): Element | null;
|
|
69
|
-
export declare function composedContains(container: Element, candidate: Element | null): boolean;
|
|
70
|
-
/** Collects rendered focus targets through slots and nested open shadow roots in browser tab order. */
|
|
71
|
-
export declare function collectFocusableElements(root: Element | ShadowRoot): HTMLElement[];
|
|
72
66
|
/**
|
|
73
|
-
*
|
|
74
|
-
*
|
|
75
|
-
* a custom element host as readily as on a native control.
|
|
76
|
-
*/
|
|
77
|
-
export declare function collectAutofocusElements(root: Element | ShadowRoot): HTMLElement[];
|
|
78
|
-
/**
|
|
79
|
-
* Adds an overlay to a stack scoped to its own `ownerDocument`. One document
|
|
80
|
-
* listener routes Escape and Tab only to the top entry, while modal inerting,
|
|
81
|
-
* visual stack depth, and focus return are recomputed as entries move.
|
|
67
|
+
* Adds an overlay to the document stack. Modal entries load inerting, rendered-state tracking, and
|
|
68
|
+
* optional scroll locking; `modal: false` retains the historical API while using the lean adapter.
|
|
82
69
|
*/
|
|
83
70
|
export declare function activateOverlay(options: OverlayActivationOptions): OverlayHandle;
|
|
84
71
|
/**
|
|
85
72
|
* Temporarily yields Lyra's modal stack to a third-party modal rooted at `externalModal`.
|
|
86
|
-
*
|
|
87
|
-
* The returned release function is idempotent. Suspensions are scoped to the element's current
|
|
88
|
-
* document and nest independently; while at least one is active, Lyra does not route Escape or
|
|
89
|
-
* Tab and only the external modal paths remain non-inert. Disconnecting or adopting the root into
|
|
90
|
-
* another document releases its suspension automatically.
|
|
73
|
+
* The returned release function is idempotent and scoped to the root's current document.
|
|
91
74
|
*/
|
|
92
75
|
export declare function suspendLyraModalsFor(externalModal: HTMLElement): () => void;
|
|
76
|
+
export { collectAutofocusElements, collectFocusableElements, composedContains, deepActiveElement, } from './overlay-stack.js';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{deepActiveElementIn}from"./active-element.js";import{collectComposedAutofocusElements,collectComposedFocusTargets,isComposedFocusAvailable}from"./focus-navigation.js";import{isHtmlElement}from"./dom-guards.js";import{RenderedStateController}from"./rendered-state.js";import{lockScroll}from"./scroll-lock.js";import{leaseInlineStyleProperty}from"./style-property-lease.js";const STACK_PROPERTY="--lr-overlay-stack-index",STACK_BASE=1e3,STACK_STEP=2,states=new WeakMap,hostEntries=new WeakMap;function createInactiveOverlayHandle(){return{focusInitial:()=>{},focusAutofocus:()=>!1,updateRestoreFocusTo:()=>{},deactivate:()=>{},suspend:()=>{},resume:()=>{},isTopmost:()=>!1,isActive:()=>!1,dismissBackdrop:()=>!1}}function deepActiveElement(doc=typeof document>"u"?void 0:document){return deepActiveElementIn(doc)}function composedParent(element){return element.assignedSlot?element.assignedSlot:element.parentElement?element.parentElement:element.getRootNode().host??null}function composedContains(container,candidate){let current=candidate;for(;current;){if(current===container)return!0;current=composedParent(current)}return!1}function collectFocusableElements(root){return collectComposedFocusTargets(root).elements}function collectAutofocusElements(root){return collectComposedAutofocusElements(root).elements}function tryFocus(target){if(!target||!isComposedFocusAvailable(target))return!1;target.focus();const active=deepActiveElement(target.ownerDocument);return active===target||composedContains(target,active)}function focusAutofocusTarget(panel){for(const candidate of collectAutofocusElements(panel)){if(tryFocus(candidate))return!0;for(const inner of collectFocusableElements(candidate))if(tryFocus(inner))return!0}return!1}function focusEntry(entry,preserveCurrent=!0){const panel=entry.options.panel();if(!panel)return;const active=deepActiveElement(entry.state.document);if(preserveCurrent&&composedContains(panel,active)||(entry.initialFocusDecision===void 0&&(entry.initialFocusDecision=entry.options.beforeInitialFocus?.()!==!1),!entry.initialFocusDecision)||focusAutofocusTarget(panel))return;const preferred=entry.options.preferredInitialFocus?.()??null;if(!(preferred&&composedContains(panel,preferred)&&tryFocus(preferred))){for(const target of collectFocusableElements(panel))if(tryFocus(target))return;panel.focus()}}function handleTab(state,entry,event){const panel=entry.options.panel();if(!panel)return;const focusable=collectFocusableElements(panel);if(focusable.length===0){event.preventDefault(),panel.focus();return}const active=deepActiveElement(state.document),first=focusable[0],last=focusable[focusable.length-1];(active?focusable.indexOf(active):-1)===-1?(event.preventDefault(),(event.shiftKey?last:first).focus()):event.shiftKey&&active===first?(event.preventDefault(),last.focus()):!event.shiftKey&&active===last&&(event.preventDefault(),first.focus())}function scheduleInertUpdate(state){state.inertUpdateQueued||(state.inertUpdateQueued=!0,queueMicrotask(()=>{state.inertUpdateQueued=!1,applyTopmostInert(state)}))}function handleMutations(state,records){const prunedExternalModal=pruneExternalModalSuspensions(state);let needsInertUpdate=prunedExternalModal;for(let index=0;index<records.length;index++){const record=records[index];if(!record)continue;if(record.type==="childList"){needsInertUpdate=!0;continue}const element=record.target;let nextRecord;for(let nextIndex=index+1;nextIndex<records.length;nextIndex++){const candidate=records[nextIndex];if(candidate&&candidate.type==="attributes"&&candidate.attributeName==="inert"&&candidate.target===element){nextRecord=candidate;break}}const newValue=nextRecord?nextRecord.oldValue!==null:element.hasAttribute("inert"),pending=state.pendingInertWrites.get(element);if(pending?.[0]===newValue){pending.shift(),pending.length===0&&state.pendingInertWrites.delete(element);continue}state.inerted.has(element)&&(state.inerted.set(element,newValue),needsInertUpdate=!0)}needsInertUpdate&&(prunedExternalModal?applyTopmostInert(state):scheduleInertUpdate(state)),stopStateIfIdle(state)}const mutationObserverOptions={attributeFilter:["inert"],attributeOldValue:!0,attributes:!0,childList:!0,subtree:!0};function observeMutationRoot(state,root){!state.observer||state.observedRoots.has(root)||(state.observer.observe(root===state.document?state.document.documentElement:root,mutationObserverOptions),state.observedRoots.add(root))}function startState(state){if(state.started)return;state.started=!0,state.document.addEventListener("keydown",state.onKeyDown);const Observer=state.document.defaultView?.MutationObserver??MutationObserver;state.observer=new Observer(records=>handleMutations(state,records)),observeMutationRoot(state,state.document)}function stopState(state){state.started&&(state.started=!1,state.document.removeEventListener("keydown",state.onKeyDown),state.observer?.disconnect(),state.observer=void 0,state.observedRoots.clear(),state.pendingInertWrites.clear())}function stopStateIfIdle(state){state.stack.length===0&&state.externalModalSuspensions.size===0&&stopState(state)}function createState(doc){const state={};return state.document=doc,state.stack=[],state.externalModalSuspensions=new Set,state.nextStackOrder=0,state.inerted=new Map,state.pendingInertWrites=new Map,state.observedRoots=new Set,state.inertUpdateQueued=!1,state.started=!1,state.onKeyDown=event=>{if(event.defaultPrevented||event.isComposing||state.externalModalSuspensions.size>0)return;let entry=state.stack[state.stack.length-1];for(;entry?.renderedState&&!entry.renderedState.check();)entry=state.stack[state.stack.length-1];entry&&(event.key==="Escape"?(event.preventDefault(),entry.options.onEscape()):event.key==="Tab"&&(entry.options.trapFocus===!1?entry.options.onTab?.():handleTab(state,entry,event)))},states.set(doc,state),state}function stateFor(doc){return states.get(doc)??createState(doc)}function setInertByManager(state,element,value){if(element.inert!==value){if(state.observer&&state.observedRoots.has(element.getRootNode())){let pending=state.pendingInertWrites.get(element);pending||(pending=[],state.pendingInertWrites.set(element,pending)),pending.push(value)}else state.pendingInertWrites.delete(element);element.inert=value}}function inertElement(state,element,desired){if(!("inert"in element))return;const htmlElement=element;desired.add(htmlElement),state.inerted.has(htmlElement)||state.inerted.set(htmlElement,htmlElement.inert),setInertByManager(state,htmlElement,!0)}function pathParent(element){return element.assignedSlot??element.parentNode}function parentPathElement(parent){return parent.nodeType===Node.ELEMENT_NODE?parent:parent.host??null}function composedChildren(parent){return parent.localName==="slot"?parent.assignedElements({flatten:!0}):"children"in parent?Array.from(parent.children):[]}function isShadowRoot(node){return node.nodeType===11&&"host"in node}function addAllowedPath(allowed,host,doc){let current=host;for(;current&¤t!==doc.body&¤t!==doc.documentElement;){const parent=pathParent(current);if(!parent)break;let children=allowed.get(parent);children||(children=new Set,allowed.set(parent,children)),children.add(current),current=parentPathElement(parent)}}function modalAllowedRoot(entry){const explicit=entry.options.modalRoot?.()??null;return explicit?.isConnected&&explicit.ownerDocument===entry.state.document?explicit:entry.options.host}function pruneExternalModalSuspensions(state){let changed=!1;for(const entry of state.externalModalSuspensions)entry.root.isConnected&&entry.root.ownerDocument===state.document||(entry.active=!1,state.externalModalSuspensions.delete(entry),changed=!0);return changed}function applyTopmostInert(state){let modalIndex=-1;for(let index=state.stack.length-1;index>=0;index--){const entry=state.stack[index];if(entry&&entry.options.modal!==!1){modalIndex=index;break}}const desired=new Set;if(state.externalModalSuspensions.size>0){const allowed=new Map;for(const suspension of state.externalModalSuspensions)addAllowedPath(allowed,suspension.root,state.document);for(const[parent,children]of allowed){isShadowRoot(parent)&&observeMutationRoot(state,parent);for(const child of composedChildren(parent))children.has(child)||inertElement(state,child,desired)}}else if(modalIndex!==-1){const allowed=new Map;for(const entry of state.stack.slice(modalIndex))entry.options.host.isConnected&&addAllowedPath(allowed,modalAllowedRoot(entry),state.document);for(const[parent,children]of allowed){isShadowRoot(parent)&&observeMutationRoot(state,parent);for(const child of composedChildren(parent))children.has(child)||inertElement(state,child,desired)}}for(const[element,intended]of state.inerted)desired.has(element)||(setInertByManager(state,element,intended),state.inerted.delete(element))}function restoreStackStyle(entry){entry.stackStyleLease?.release(),entry.stackStyleLease=void 0}function updateStackStyles(state){state.stack.forEach((entry,index)=>{const value=String(STACK_BASE+index*STACK_STEP);entry.stackStyleLease?entry.stackStyleLease.set(value):entry.stackStyleLease=leaseInlineStyleProperty(entry.options.host,STACK_PROPERTY,value)})}function registerEntry(entry,state,preserveStackOrder=!1){if(entry.registered)return;startState(state),(!preserveStackOrder||entry.state!==state)&&(entry.stackOrder=state.nextStackOrder++),entry.state=state,entry.registered=!0,entry.options.lockScroll&&!entry.releaseScrollLock&&(entry.releaseScrollLock=lockScroll(state.document));const nextIndex=state.stack.findIndex(candidate=>candidate.stackOrder>entry.stackOrder);nextIndex===-1?state.stack.push(entry):state.stack.splice(nextIndex,0,entry),updateStackStyles(state),applyTopmostInert(state)}function unregisterEntry(entry,deferScrollLockRelease=!1){if(!entry.registered){const hasHigherEntry=entry.state.stack.some(candidate=>candidate.stackOrder>entry.stackOrder);return entry.state.externalModalSuspensions.size===0&&entry.wasTopmostOnSuspend&&!hasHigherEntry}const state=entry.state,index=state.stack.indexOf(entry),wasTopmost=state.externalModalSuspensions.size===0&&index===state.stack.length-1;return index!==-1&&state.stack.splice(index,1),entry.registered=!1,entry.wasTopmostOnSuspend=wasTopmost,deferScrollLockRelease?entry.deferredScrollLockRelease=entry.releaseScrollLock:entry.releaseScrollLock?.(),entry.releaseScrollLock=void 0,restoreStackStyle(entry),updateStackStyles(state),applyTopmostInert(state),stopStateIfIdle(state),wasTopmost}function syncEntryRegistration(entry){if(!entry.active||entry.manuallySuspended||!entry.rendered){unregisterEntry(entry);return}const state=stateFor(entry.options.host.ownerDocument);registerEntry(entry,state,entry.state===state)}function validRestoreFocusElement(value,doc){return isHtmlElement(value)&&value.ownerDocument===doc?value:null}function resolveRestoreFocusTarget(entry){const source=entry.restoreFocusTo;if(typeof source!="function")return validRestoreFocusElement(source,entry.state.document);try{return validRestoreFocusElement(source(),entry.state.document)}catch{return null}}function rebaseReturnTargets(entry){for(const candidate of entry.state.stack){if(candidate===entry||candidate.stackOrder<=entry.stackOrder)continue;const candidateTarget=typeof candidate.restoreFocusTo=="function"?null:validRestoreFocusElement(candidate.restoreFocusTo,entry.state.document);candidateTarget&&composedContains(entry.options.host,candidateTarget)&&(candidate.restoreFocusTo=entry.restoreFocusTo)}}function restoreEntryFocus(entry){if(tryFocus(resolveRestoreFocusTarget(entry)))return;const next=entry.state.stack[entry.state.stack.length-1];next&&focusEntry(next,!1)}function deactivateEntry(entry,restoreFocus,deferScrollLockRelease=!1){if(!entry.active)return;entry.renderedState?.stop(),rebaseReturnTargets(entry);const wasTopmost=unregisterEntry(entry,deferScrollLockRelease),deferredScrollLockRelease=entry.deferredScrollLockRelease;if(entry.deferredScrollLockRelease=void 0,entry.active=!1,entry.manuallySuspended=!1,entry.suspendGeneration++,hostEntries.get(entry.options.host)===entry&&hostEntries.delete(entry.options.host),!wasTopmost)return deferredScrollLockRelease;if(restoreFocus)return restoreEntryFocus(entry),deferredScrollLockRelease;const next=entry.state.stack[entry.state.stack.length-1];return next&&focusEntry(next),deferredScrollLockRelease}function activateOverlay(options){const previous=hostEntries.get(options.host),inheritedReturnTarget=previous?.active?previous.restoreFocusTo:void 0;previous?.active&&previous.handle.deactivate({restoreFocus:!1});const doc=options.host.ownerDocument;if(!doc)return createInactiveOverlayHandle();const active=deepActiveElement(doc),captured=active&&typeof active.focus=="function"?active:null,entry={};return entry.options=options,entry.restoreFocusTo=options.restoreFocusTo!==void 0?options.restoreFocusTo:inheritedReturnTarget??captured,entry.active=!0,entry.registered=!1,entry.manuallySuspended=!1,entry.rendered=!0,entry.initialFocusDecision=void 0,entry.wasTopmostOnSuspend=!1,entry.suspendGeneration=0,entry.state=stateFor(doc),entry.stackOrder=entry.state.nextStackOrder++,entry.handle={focusInitial:()=>{entry.renderedState?.check(),entry.active&&entry.registered&&entry.state.externalModalSuspensions.size===0&&entry.state.stack[entry.state.stack.length-1]===entry&&focusEntry(entry)},focusAutofocus:()=>{if(entry.renderedState?.check(),!entry.active||!entry.registered||entry.state.externalModalSuspensions.size>0)return!1;const panel=entry.options.panel();if(!panel)return!1;const active2=deepActiveElement(entry.state.document);return composedContains(panel,active2)?!1:focusAutofocusTarget(panel)},updateRestoreFocusTo:target=>{entry.active&&(entry.restoreFocusTo=target)},deactivate:(deactivateOptions={})=>deactivateEntry(entry,deactivateOptions.restoreFocus!==!1,deactivateOptions.deferScrollLockRelease===!0),suspend:()=>{if(!entry.active||entry.manuallySuspended)return;entry.manuallySuspended=!0,syncEntryRegistration(entry);const generation=++entry.suspendGeneration;queueMicrotask(()=>{entry.active&&!entry.registered&&entry.suspendGeneration===generation&&!entry.options.host.isConnected&&deactivateEntry(entry,!0)})},resume:()=>{!entry.active||!entry.manuallySuspended||(entry.suspendGeneration++,entry.manuallySuspended=!1,entry.renderedState?.check(),syncEntryRegistration(entry))},isTopmost:()=>(entry.renderedState?.check(),entry.active&&entry.registered&&entry.state.externalModalSuspensions.size===0&&entry.state.stack[entry.state.stack.length-1]===entry),isActive:()=>entry.active,dismissBackdrop:()=>!entry.handle.isTopmost()||!entry.options.onBackdrop?!1:(entry.options.onBackdrop(),!0)},hostEntries.set(options.host,entry),options.suspendWhenUnrendered?(entry.renderedState=new RenderedStateController(options.host,options.panel,rendered=>{if(!entry.active||entry.rendered===rendered)return;const wasRegistered=entry.registered;entry.rendered=rendered,syncEntryRegistration(entry),rendered&&!wasRegistered&&entry.registered&&queueMicrotask(()=>entry.handle.focusInitial())}),entry.rendered=!1,entry.renderedState.start()):registerEntry(entry,entry.state,!0),entry.handle}function suspendLyraModalsFor(externalModal){if(!externalModal.isConnected)return()=>{};const state=stateFor(externalModal.ownerDocument),entry={root:externalModal,active:!0,state};return state.externalModalSuspensions.add(entry),startState(state),applyTopmostInert(state),()=>{entry.active&&(entry.active=!1,entry.state.externalModalSuspensions.delete(entry),applyTopmostInert(entry.state),stopStateIfIdle(entry.state))}}export{activateOverlay,collectAutofocusElements,collectFocusableElements,composedContains,deepActiveElement,suspendLyraModalsFor};
|
|
1
|
+
import{activateNonmodalOverlay}from"./nonmodal-overlay-manager.js";import{RenderedStateController}from"./rendered-state.js";import{lockScroll}from"./scroll-lock.js";import{acquireOverlayRoutingSuspension,activateOverlayStack,observeOverlayStack}from"./overlay-stack.js";const EMPTY_STACK={entries:[]},modalStates=new WeakMap;function modalStateFor(doc){const existing=modalStates.get(doc);if(existing)return existing;const state={document:doc,snapshot:EMPTY_STACK,registrations:0,externalModalSuspensions:new Set,inerted:new Map,pendingInertWrites:new Map,observedRoots:new Set,inertUpdateQueued:!1,started:!1};return modalStates.set(doc,state),state}function scheduleInertUpdate(state){state.inertUpdateQueued||(state.inertUpdateQueued=!0,queueMicrotask(()=>{state.inertUpdateQueued=!1,applyTopmostInert(state)}))}function pruneExternalModalSuspensions(state){let changed=!1;for(const entry of state.externalModalSuspensions)entry.root.isConnected&&entry.root.ownerDocument===state.document||(entry.active=!1,state.externalModalSuspensions.delete(entry),entry.releaseRouting(),changed=!0);return changed}function handleMutations(state,records){const prunedExternalModal=pruneExternalModalSuspensions(state);let needsInertUpdate=prunedExternalModal;for(let index=0;index<records.length;index++){const record=records[index];if(!record)continue;if(record.type==="childList"){needsInertUpdate=!0;continue}const element=record.target;let nextRecord;for(let nextIndex=index+1;nextIndex<records.length;nextIndex++){const candidate=records[nextIndex];if(candidate?.type==="attributes"&&candidate.attributeName==="inert"&&candidate.target===element){nextRecord=candidate;break}}const newValue=nextRecord?nextRecord.oldValue!==null:element.hasAttribute("inert"),pending=state.pendingInertWrites.get(element);if(pending?.[0]===newValue){pending.shift(),pending.length===0&&state.pendingInertWrites.delete(element);continue}state.inerted.has(element)&&(state.inerted.set(element,newValue),needsInertUpdate=!0)}needsInertUpdate&&(prunedExternalModal?applyTopmostInert(state):scheduleInertUpdate(state)),stopModalStateIfIdle(state)}const mutationObserverOptions={attributeFilter:["inert"],attributeOldValue:!0,attributes:!0,childList:!0,subtree:!0};function observeMutationRoot(state,root){!state.observer||state.observedRoots.has(root)||(state.observer.observe(root===state.document?state.document.documentElement:root,mutationObserverOptions),state.observedRoots.add(root))}function startModalState(state){if(state.started)return;state.started=!0;const Observer=state.document.defaultView?.MutationObserver??MutationObserver;state.observer=new Observer(records=>handleMutations(state,records)),observeMutationRoot(state,state.document),state.unsubscribeStack=observeOverlayStack(state.document,snapshot=>{state.snapshot=snapshot,applyTopmostInert(state)})}function stopModalState(state){if(state.started){state.started=!1,state.unsubscribeStack?.(),state.unsubscribeStack=void 0;for(const[element,intended]of state.inerted)element.inert=intended;state.inerted.clear(),state.observer?.disconnect(),state.observer=void 0,state.observedRoots.clear(),state.pendingInertWrites.clear(),state.snapshot=EMPTY_STACK}}function stopModalStateIfIdle(state){state.registrations===0&&state.externalModalSuspensions.size===0&&stopModalState(state)}function retainModalState(doc){const state=modalStateFor(doc);state.registrations++,startModalState(state);let active=!0;return()=>{active&&(active=!1,state.registrations--,stopModalStateIfIdle(state))}}function setInertByManager(state,element,value){if(element.inert!==value){if(state.observer&&state.observedRoots.has(element.getRootNode())){let pending=state.pendingInertWrites.get(element);pending||(pending=[],state.pendingInertWrites.set(element,pending)),pending.push(value)}else state.pendingInertWrites.delete(element);element.inert=value}}function inertElement(state,element,desired){if(!("inert"in element))return;const htmlElement=element;desired.add(htmlElement),state.inerted.has(htmlElement)||state.inerted.set(htmlElement,htmlElement.inert),setInertByManager(state,htmlElement,!0)}function pathParent(element){return element.assignedSlot??element.parentNode}function parentPathElement(parent){return parent.nodeType===Node.ELEMENT_NODE?parent:parent.host??null}function composedChildren(parent){return parent.localName==="slot"?parent.assignedElements({flatten:!0}):"children"in parent?Array.from(parent.children):[]}function isShadowRoot(node){return node.nodeType===11&&"host"in node}function addAllowedPath(allowed,host,doc){let current=host;for(;current&¤t!==doc.body&¤t!==doc.documentElement;){const parent=pathParent(current);if(!parent)break;let children=allowed.get(parent);children||(children=new Set,allowed.set(parent,children)),children.add(current),current=parentPathElement(parent)}}function modalAllowedRoot(entry,doc){const explicit=entry.modalRoot?.()??null;return explicit?.isConnected&&explicit.ownerDocument===doc?explicit:entry.host}function applyTopmostInert(state){let modalIndex=-1;for(let index=state.snapshot.entries.length-1;index>=0;index--)if(state.snapshot.entries[index]?.modal){modalIndex=index;break}const desired=new Set;if(state.externalModalSuspensions.size>0){const allowed=new Map;for(const suspension of state.externalModalSuspensions)addAllowedPath(allowed,suspension.root,state.document);inertOutsideAllowedPaths(state,allowed,desired)}else if(modalIndex!==-1){const allowed=new Map;for(const entry of state.snapshot.entries.slice(modalIndex))entry.host.isConnected&&addAllowedPath(allowed,modalAllowedRoot(entry,state.document),state.document);inertOutsideAllowedPaths(state,allowed,desired)}for(const[element,intended]of state.inerted)desired.has(element)||(setInertByManager(state,element,intended),state.inerted.delete(element))}function inertOutsideAllowedPaths(state,allowed,desired){for(const[parent,children]of allowed){isShadowRoot(parent)&&observeMutationRoot(state,parent);for(const child of composedChildren(parent))children.has(child)||inertElement(state,child,desired)}}function activateOverlay(options){if(options.modal===!1&&options.trapFocus===!1&&!options.suspendWhenUnrendered&&!options.lockScroll)return activateNonmodalOverlay(options);const modal=options.modal!==!1;let releaseModalState,releaseScrollLock,renderedState;const coreHandle=activateOverlayStack({...options,initiallySuspended:options.suspendWhenUnrendered===!0,modal,trapFocus:options.trapFocus!==!1,onRegistered:doc=>{modal&&(releaseModalState=retainModalState(doc)),options.lockScroll&&(releaseScrollLock=lockScroll(doc))},onUnregistered:(_doc,deferResourceRelease)=>{const releaseModal=releaseModalState;releaseModalState=void 0;const release=releaseScrollLock;releaseScrollLock=void 0;const deferredRelease=release&&deferResourceRelease?release:void 0;return release&&!deferResourceRelease&&release(),releaseModal?.(),deferredRelease},onDeactivate:()=>renderedState?.stop()});return coreHandle.isActive()?(options.suspendWhenUnrendered&&(renderedState=new RenderedStateController(options.host,options.panel,rendered=>{if(!coreHandle.isActive())return;if(!rendered){coreHandle.suspend();return}const wasTopmost=coreHandle.isTopmost();coreHandle.resume(),!wasTopmost&&coreHandle.isTopmost()&&queueMicrotask(()=>coreHandle.focusInitial())}),renderedState.start()),{focusInitial:()=>{renderedState?.check(),coreHandle.focusInitial()},focusAutofocus:()=>(renderedState?.check(),coreHandle.focusAutofocus()),updateRestoreFocusTo:target=>coreHandle.updateRestoreFocusTo(target),deactivate:deactivateOptions=>coreHandle.deactivate(deactivateOptions),suspend:()=>coreHandle.suspend(),resume:()=>{renderedState&&!renderedState.check()||coreHandle.resume()},isTopmost:()=>(renderedState?.check(),coreHandle.isTopmost()),isActive:()=>coreHandle.isActive(),dismissBackdrop:()=>(renderedState?.check(),coreHandle.dismissBackdrop())}):coreHandle}function suspendLyraModalsFor(externalModal){if(!externalModal.isConnected)return()=>{};const state=modalStateFor(externalModal.ownerDocument);startModalState(state);const entry={root:externalModal,active:!0,releaseRouting:()=>{},state};return state.externalModalSuspensions.add(entry),entry.releaseRouting=acquireOverlayRoutingSuspension(state.document),applyTopmostInert(state),()=>{entry.active&&(entry.active=!1,entry.state.externalModalSuspensions.delete(entry),entry.releaseRouting(),applyTopmostInert(entry.state),stopModalStateIfIdle(entry.state))}}import{collectAutofocusElements,collectFocusableElements,composedContains,deepActiveElement}from"./overlay-stack.js";export{activateOverlay,collectAutofocusElements,collectFocusableElements,composedContains,deepActiveElement,suspendLyraModalsFor};
|
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
type OverlayResourceRelease = () => void;
|
|
2
|
+
type OverlayStackRestoreFocusTarget = HTMLElement | null | (() => HTMLElement | null);
|
|
3
|
+
interface OverlayStackDeactivateOptions {
|
|
4
|
+
restoreFocus?: boolean;
|
|
5
|
+
deferScrollLockRelease?: boolean;
|
|
6
|
+
}
|
|
7
|
+
export interface OverlayStackHandle {
|
|
8
|
+
focusInitial(): void;
|
|
9
|
+
focusAutofocus(): boolean;
|
|
10
|
+
updateRestoreFocusTo(target: OverlayStackRestoreFocusTarget): void;
|
|
11
|
+
deactivate(options?: OverlayStackDeactivateOptions): (() => void) | undefined;
|
|
12
|
+
suspend(): void;
|
|
13
|
+
resume(): void;
|
|
14
|
+
isTopmost(): boolean;
|
|
15
|
+
isActive(): boolean;
|
|
16
|
+
dismissBackdrop(): boolean;
|
|
17
|
+
}
|
|
18
|
+
export interface OverlayStackActivationOptions {
|
|
19
|
+
host: HTMLElement;
|
|
20
|
+
panel: () => HTMLElement | null;
|
|
21
|
+
modalRoot?: () => HTMLElement | null;
|
|
22
|
+
onEscape: () => void;
|
|
23
|
+
onBackdrop?: () => void;
|
|
24
|
+
preferredInitialFocus?: () => HTMLElement | null;
|
|
25
|
+
beforeInitialFocus?: () => boolean;
|
|
26
|
+
restoreFocusTo?: OverlayStackRestoreFocusTarget;
|
|
27
|
+
onTab?: () => void;
|
|
28
|
+
initiallySuspended?: boolean;
|
|
29
|
+
modal: boolean;
|
|
30
|
+
trapFocus: boolean;
|
|
31
|
+
onRegistered?: (document: Document) => void;
|
|
32
|
+
onUnregistered?: (document: Document, deferResourceRelease: boolean) => OverlayResourceRelease | undefined;
|
|
33
|
+
onDeactivate?: () => void;
|
|
34
|
+
}
|
|
35
|
+
export interface OverlayStackEntrySnapshot {
|
|
36
|
+
readonly host: HTMLElement;
|
|
37
|
+
readonly modal: boolean;
|
|
38
|
+
readonly modalRoot?: () => HTMLElement | null;
|
|
39
|
+
}
|
|
40
|
+
export interface OverlayStackSnapshot {
|
|
41
|
+
readonly entries: readonly OverlayStackEntrySnapshot[];
|
|
42
|
+
}
|
|
43
|
+
type OverlayStackObserver = (snapshot: OverlayStackSnapshot) => void;
|
|
44
|
+
/** Returns the deepest focused descendant across open shadow roots, or `null` when no document
|
|
45
|
+
* exists in the current realm. */
|
|
46
|
+
export declare function deepActiveElement(doc?: Document | null | undefined): Element | null;
|
|
47
|
+
export declare function composedContains(container: Element, candidate: Element | null): boolean;
|
|
48
|
+
/** Collects rendered focus targets through slots and nested open shadow roots in browser tab order. */
|
|
49
|
+
export declare function collectFocusableElements(root: Element | ShadowRoot): HTMLElement[];
|
|
50
|
+
/**
|
|
51
|
+
* Collects every `[autofocus]` element inside `root`, walking slots and nested open shadow roots
|
|
52
|
+
* exactly as the focusable collector does. `autofocus` is a global attribute, so it is honoured on
|
|
53
|
+
* a custom element host as readily as on a native control.
|
|
54
|
+
*/
|
|
55
|
+
export declare function collectAutofocusElements(root: Element | ShadowRoot): HTMLElement[];
|
|
56
|
+
/** Observes the shared stack without making modal machinery part of a nonmodal import graph. */
|
|
57
|
+
export declare function observeOverlayStack(doc: Document, observer: OverlayStackObserver): () => void;
|
|
58
|
+
/** Suspends Escape/Tab ownership while an external modal owns the document. */
|
|
59
|
+
export declare function acquireOverlayRoutingSuspension(doc: Document): () => void;
|
|
60
|
+
/**
|
|
61
|
+
* Adds an overlay to a stack scoped to its own `ownerDocument`. One document
|
|
62
|
+
* listener routes Escape and Tab only to the top entry, while modal inerting,
|
|
63
|
+
* visual stack depth, and focus return are recomputed as entries move.
|
|
64
|
+
*/
|
|
65
|
+
export declare function activateOverlayStack(options: OverlayStackActivationOptions): OverlayStackHandle;
|
|
66
|
+
export {};
|