@aceshooting/lyra-ui 14.3.1 → 15.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +127 -0
- package/custom-elements.json +1 -1
- package/design-tokens.json +1 -1
- package/dist/cli/migration-contract.json +1 -1
- package/dist/components/agent-tools/activity-feed/activity-feed.class.d.ts +4 -0
- package/dist/components/agent-tools/activity-feed/activity-feed.class.js +3 -3
- package/dist/components/agent-tools/approval-queue/approval-queue.class.js +3 -2
- package/dist/components/agent-tools/artifact-panel/artifact-panel.styles.js +1 -1
- package/dist/components/agent-tools/commit-card/commit-card.styles.js +1 -1
- package/dist/components/agent-tools/compare-panel/compare-panel.styles.js +1 -1
- package/dist/components/agent-tools/confirm-bar/confirm-bar.class.js +8 -3
- package/dist/components/agent-tools/eval-dataset/eval-dataset.class.d.ts +3 -1
- package/dist/components/agent-tools/eval-dataset/eval-dataset.class.js +10 -1
- package/dist/components/agent-tools/eval-dataset/eval-dataset.styles.js +1 -1
- package/dist/components/agent-tools/span-waterfall/span-waterfall.class.js +1 -1
- package/dist/components/agent-tools/subagent-panel/subagent-panel.class.d.ts +19 -1
- package/dist/components/agent-tools/subagent-panel/subagent-panel.class.js +4 -4
- package/dist/components/agent-tools/subagent-panel/subagent-panel.styles.js +1 -1
- package/dist/components/agent-tools/task-list/task-list.class.d.ts +5 -0
- package/dist/components/agent-tools/task-list/task-list.class.js +3 -3
- package/dist/components/agent-tools/terminal/terminal.class.d.ts +1 -1
- package/dist/components/agent-tools/terminal/terminal.styles.js +1 -1
- package/dist/components/agent-tools/test-results/test-results.class.js +1 -1
- package/dist/components/agent-tools/tool-param-form/tool-param-form.class.d.ts +10 -7
- package/dist/components/agent-tools/tool-param-form/tool-param-form.class.js +15 -14
- package/dist/components/agent-tools/tool-param-form/tool-param-form.d.ts +1 -1
- package/dist/components/agent-tools/tool-param-form/tool-param-form.js +1 -1
- package/dist/components/agent-tools/tool-param-form/tool-param-form.styles.js +1 -1
- package/dist/components/agent-tools/tool-result-dialog/tool-result-dialog.class.d.ts +5 -2
- package/dist/components/agent-tools/tool-result-dialog/tool-result-dialog.class.js +1 -1
- package/dist/components/agent-tools/tool-select-dialog/tool-select-dialog.class.d.ts +3 -1
- package/dist/components/agent-tools/tool-select-dialog/tool-select-dialog.class.js +9 -1
- package/dist/components/agent-tools/tool-select-dialog/tool-select-dialog.styles.js +1 -1
- package/dist/components/charts/chart/box-plot.class.d.ts +64 -4
- package/dist/components/charts/chart/box-plot.class.js +5 -5
- package/dist/components/charts/chart/chart-colors.d.ts +10 -0
- package/dist/components/charts/chart/chart-colors.js +1 -1
- package/dist/components/charts/chart/chart.class.d.ts +35 -10
- package/dist/components/charts/chart/chart.class.js +4 -4
- package/dist/components/charts/chart/lite-chart.class.d.ts +10 -2
- package/dist/components/charts/chart/lite-chart.styles.js +1 -1
- package/dist/components/conversation/markdown/markdown.class.d.ts +9 -1
- package/dist/components/conversation/markdown/markdown.class.js +1 -1
- package/dist/components/conversation/message-parts/message-parts.class.d.ts +18 -1
- package/dist/components/conversation/message-parts/message-parts.class.js +4 -4
- package/dist/components/conversation/model-select/model-select.class.d.ts +6 -2
- package/dist/components/conversation/model-select/model-select.class.js +3 -3
- package/dist/components/conversation/prompt-input/prompt-input.styles.js +1 -1
- package/dist/components/conversation/selection-toolbar/selection-toolbar.class.d.ts +5 -1
- package/dist/components/conversation/selection-toolbar/selection-toolbar.class.js +1 -1
- package/dist/components/data/calendar/calendar.class.js +2 -2
- package/dist/components/data/context-meter/context-meter.styles.js +1 -1
- package/dist/components/data/data-grid/data-grid-types.d.ts +8 -2
- package/dist/components/data/data-grid/data-grid.class.d.ts +16 -3
- package/dist/components/data/data-grid/data-grid.class.js +3 -2
- package/dist/components/data/env-list/env-list.styles.js +1 -1
- package/dist/components/data/flow-canvas/flow-canvas.class.d.ts +22 -2
- package/dist/components/data/flow-canvas/flow-canvas.class.js +1 -1
- package/dist/components/data/flow-minimap/flow-minimap.class.d.ts +12 -4
- package/dist/components/data/flow-minimap/flow-minimap.class.js +2 -2
- package/dist/components/data/flow-minimap/flow-minimap.styles.js +1 -1
- package/dist/components/data/graph-query-builder/graph-query-builder.class.d.ts +5 -1
- package/dist/components/data/graph-query-builder/graph-query-builder.class.js +1 -1
- package/dist/components/data/heatmap/heatmap.class.d.ts +12 -1
- package/dist/components/data/heatmap/heatmap.class.js +3 -3
- package/dist/components/data/heatmap/heatmap.styles.js +1 -1
- package/dist/components/forms/code-editor/code-editor.class.js +1 -1
- package/dist/components/forms/combobox/combobox.class.js +1 -1
- package/dist/components/forms/combobox/combobox.styles.js +1 -1
- package/dist/components/forms/date-picker/date-input.class.js +1 -1
- package/dist/components/forms/date-picker/date-picker.class.d.ts +12 -1
- package/dist/components/forms/date-picker/date-picker.class.js +1 -1
- package/dist/components/forms/icon-button/icon-button.class.d.ts +27 -5
- package/dist/components/forms/icon-button/icon-button.class.js +7 -3
- package/dist/components/forms/input/input.styles.js +1 -1
- package/dist/components/forms/input/time-input.class.d.ts +13 -2
- package/dist/components/forms/input/time-input.class.js +1 -1
- package/dist/components/forms/otp-input/otp-input.class.d.ts +8 -1
- package/dist/components/forms/otp-input/otp-input.class.js +1 -1
- package/dist/components/forms/rubric-form/rubric-form.class.d.ts +1 -1
- package/dist/components/forms/rubric-form/rubric-form.class.js +1 -1
- package/dist/components/forms/select/select.class.d.ts +1 -1
- package/dist/components/forms/select/select.class.js +1 -1
- package/dist/components/forms/slider/slider.class.d.ts +4 -1
- package/dist/components/forms/slider/slider.class.js +1 -1
- package/dist/components/forms/textarea/textarea.class.d.ts +9 -4
- package/dist/components/forms/textarea/textarea.class.js +1 -1
- package/dist/components/forms/time-range/time-range.class.js +1 -1
- package/dist/components/layout/app-rail/app-rail.class.d.ts +7 -2
- package/dist/components/layout/app-rail/app-rail.class.js +1 -1
- package/dist/components/layout/card/card.class.js +2 -2
- package/dist/components/layout/card/card.styles.js +1 -1
- package/dist/components/layout/control-group/control-group.class.js +1 -1
- package/dist/components/layout/dashboard-grid/dashboard-grid.styles.js +1 -1
- package/dist/components/layout/details/details.styles.js +1 -1
- package/dist/components/layout/filter-bar/filter-bar.class.d.ts +13 -3
- package/dist/components/layout/filter-bar/filter-bar.class.js +1 -1
- package/dist/components/layout/menu/dropdown-item.class.d.ts +2 -0
- package/dist/components/layout/menu/menu-item.class.d.ts +28 -1
- package/dist/components/layout/menu/menu-item.class.js +45 -35
- package/dist/components/layout/menu/menu-item.styles.js +1 -1
- package/dist/components/layout/menu/menu.class.js +1 -1
- package/dist/components/layout/multi-split/multi-split.class.d.ts +12 -2
- package/dist/components/layout/multi-split/multi-split.class.js +1 -1
- package/dist/components/layout/page/page.class.js +2 -1
- package/dist/components/layout/page/page.styles.js +1 -1
- package/dist/components/layout/responsive-panel/responsive-panel.class.d.ts +6 -4
- package/dist/components/layout/responsive-panel/responsive-panel.class.js +2 -2
- package/dist/components/layout/responsive-panel/responsive-panel.styles.js +1 -1
- package/dist/components/layout/stepper/stepper.class.js +2 -2
- package/dist/components/layout/tab-group/tab-group.class.js +1 -1
- package/dist/components/layout/virtual-list/virtual-list.class.js +2 -2
- package/dist/components/layout/widget/widget.class.d.ts +12 -2
- package/dist/components/layout/widget/widget.class.js +2 -2
- package/dist/components/media/attachment-trigger/attachment-trigger.class.d.ts +1 -1
- package/dist/components/media/attachment-trigger/attachment-trigger.class.js +3 -3
- package/dist/components/media/file-icon/file-icon.class.d.ts +3 -1
- package/dist/components/media/file-icon/file-icon.class.js +1 -1
- package/dist/components/media/file-input/file-input.class.d.ts +1 -1
- package/dist/components/media/file-input/file-input.class.js +1 -1
- package/dist/components/media/flag/flag.styles.js +1 -1
- package/dist/components/media/image-comparer/image-comparer.class.d.ts +5 -5
- package/dist/components/media/image-comparer/image-comparer.class.js +1 -1
- package/dist/components/media/image-comparer/image-comparer.styles.js +1 -1
- package/dist/components/media/lightbox/lightbox.styles.js +1 -1
- package/dist/components/media/map/map.styles.js +1 -1
- package/dist/components/media/sequence-playback/sequence-playback.class.js +1 -1
- package/dist/components/media/video-playlist/video-playlist.class.js +1 -1
- package/dist/components/media/video-playlist/video-playlist.styles.js +1 -1
- package/dist/components/overlays/alert/alert.class.d.ts +6 -0
- package/dist/components/overlays/alert/alert.styles.js +1 -1
- package/dist/components/overlays/badge/tag.class.js +1 -1
- package/dist/components/overlays/chip/chip.class.js +1 -1
- package/dist/components/overlays/empty/empty.class.js +2 -2
- package/dist/components/overlays/kbd/kbd.styles.js +1 -1
- package/dist/components/overlays/progress/progress-ring.class.d.ts +4 -1
- package/dist/components/overlays/progress/progress.styles.js +1 -1
- package/dist/components/overlays/toast/toast.styles.js +1 -1
- package/dist/components/retrieval/graph/graph-canvas.js +1 -1
- package/dist/components/retrieval/graph/graph.class.d.ts +10 -3
- package/dist/components/retrieval/graph/graph.class.js +1 -1
- package/dist/components/retrieval/graph/graph.styles.js +1 -1
- package/dist/components/retrieval/ingestion-queue/ingestion-queue.class.d.ts +1 -1
- package/dist/components/retrieval/ingestion-queue/ingestion-queue.class.js +6 -6
- package/dist/components/retrieval/knowledge-base-admin/knowledge-base-admin.class.js +2 -2
- package/dist/components/retrieval/mind-map/mind-map.styles.js +1 -1
- package/dist/components/retrieval/neighbor-list/neighbor-list.class.d.ts +3 -3
- package/dist/components/retrieval/neighbor-list/neighbor-list.class.js +3 -3
- package/dist/components/retrieval/node-palette/node-palette.class.d.ts +7 -1
- package/dist/components/retrieval/node-palette/node-palette.class.js +23 -13
- package/dist/components/retrieval/node-palette/node-palette.styles.js +1 -1
- package/dist/components/retrieval/rag-eval-dashboard/rag-eval-dashboard.class.d.ts +4 -1
- package/dist/components/retrieval/rag-eval-dashboard/rag-eval-dashboard.class.js +1 -1
- package/dist/components/retrieval/retrieval-results/retrieval-results.class.js +1 -1
- package/dist/components/retrieval/retrieval-search/retrieval-search.class.js +4 -3
- package/dist/components/retrieval/retrieval-trace/retrieval-trace.class.js +1 -1
- package/dist/components/retrieval/source-list/source-list.class.d.ts +7 -1
- package/dist/components/retrieval/source-list/source-list.class.js +1 -1
- package/dist/components/utility/export-button/export-button.class.d.ts +14 -2
- package/dist/components/utility/export-button/export-button.class.js +3 -3
- package/dist/components/utility/export-button/export-button.styles.js +1 -1
- package/dist/components/utility/json-viewer/json-viewer.styles.js +1 -1
- package/dist/components/utility/known-date/known-date.class.js +1 -1
- package/dist/components/utility/mention-popover/mention-popover.class.d.ts +4 -2
- package/dist/components/utility/mention-popover/mention-popover.class.js +1 -1
- package/dist/components/viewers/csv-viewer/csv-viewer.class.d.ts +9 -1
- package/dist/components/viewers/csv-viewer/csv-viewer.class.js +4 -4
- package/dist/components/viewers/dataset-viewer/dataset-viewer.class.d.ts +1 -1
- package/dist/components/viewers/dataset-viewer/dataset-viewer.class.js +4 -4
- package/dist/components/viewers/document-compare/document-compare.class.d.ts +5 -0
- package/dist/components/viewers/document-compare/document-compare.class.js +9 -4
- package/dist/components/viewers/document-compare/document-compare.styles.js +1 -1
- package/dist/components/viewers/document-preview/document-preview.class.d.ts +9 -1
- package/dist/components/viewers/document-preview/document-preview.class.js +2 -1
- package/dist/components/viewers/notebook-viewer/notebook-viewer.class.d.ts +5 -0
- package/dist/components/viewers/notebook-viewer/notebook-viewer.class.js +1 -1
- package/dist/components/viewers/pdf-viewer/pdf-viewer.class.d.ts +5 -0
- package/dist/components/viewers/spreadsheet-viewer/spreadsheet-viewer.class.d.ts +1 -1
- package/dist/components/viewers/spreadsheet-viewer/spreadsheet-viewer.class.js +3 -3
- package/dist/components/viewers/xml-viewer/xml-viewer.styles.js +1 -1
- package/dist/custom-elements-jsx.d.ts +1 -1
- package/dist/events.d.ts +5 -4
- package/dist/internal/accessibility-visibility.d.ts +13 -2
- package/dist/internal/accessibility-visibility.js +1 -1
- package/dist/internal/package-metadata.d.ts +1 -1
- package/dist/internal/package-metadata.js +1 -1
- package/dist/lyra.d.ts +1 -1
- package/dist/svelte.d.ts +1 -1
- package/dist/vue.d.ts +1 -1
- package/llms/components/lr-alert.md +11 -3
- package/llms/components/lr-box-plot.md +21 -4
- package/llms/components/lr-chart.md +13 -4
- package/llms/components/lr-code-block.md +5 -4
- package/llms/components/lr-data-grid.md +24 -10
- package/llms/components/lr-document-compare.md +5 -0
- package/llms/components/lr-dropdown-item.md +31 -0
- package/llms/components/lr-eval-dataset.md +5 -4
- package/llms/components/lr-export-button.md +10 -5
- package/llms/components/lr-filter-bar.md +4 -1
- package/llms/components/lr-flow-minimap.md +7 -1
- package/llms/components/lr-icon-button.md +6 -1
- package/llms/components/lr-lite-chart.md +2 -1
- package/llms/components/lr-markdown.md +2 -2
- package/llms/components/lr-menu-item.md +31 -0
- package/llms/components/lr-menu.md +31 -0
- package/llms/components/lr-message-parts.md +7 -0
- package/llms/components/lr-model-settings-panel.md +4 -1
- package/llms/components/lr-node-palette.md +5 -4
- package/llms/components/lr-pdf-viewer.md +7 -0
- package/llms/components/lr-responsive-panel.md +2 -2
- package/llms/components/lr-subagent-panel.md +17 -2
- package/llms/components/lr-thinking-panel.md +4 -0
- package/llms/components/lr-timeline-item.md +1 -1
- package/llms/components/lr-timeline.md +1 -1
- package/llms/components/lr-tool-select-dialog.md +4 -3
- package/llms/components/lr-virtual-list.md +11 -11
- package/llms-full.txt +212 -59
- package/package.json +3 -3
- package/vscode-css-data.json +1 -1
- package/vscode-html-data.json +1 -1
- package/web-types.json +1 -1
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
var __decorate=function(decorators,target,key,desc){var c=arguments.length,r=c<3?target:desc===null?desc=Object.getOwnPropertyDescriptor(target,key):desc,d;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")r=Reflect.decorate(decorators,target,key,desc);else for(var i=decorators.length-1;i>=0;i--)(d=decorators[i])&&(r=(c<3?d(r):c>3?d(target,key,r):d(target,key))||r);return c>3&&r&&Object.defineProperty(target,key,r),r};import{html,nothing}from"lit";import{property,query}from"lit/decorators.js";import{LyraElement}from"../../../internal/lyra-element.js";import{literalSetConverter,trueDefaultBooleanConverter}from"../../../internal/converters.js";import{styles}from"./document-compare.styles.js";import{viewerSemanticLabel,viewerSemanticRole}from"../viewer-semantic-owner.js";import{snapshotLyraHighlights}from"../../../internal/highlight-collection.js";import{getOwnDataDescriptor,MISSING_OWN_DATA_DESCRIPTOR,UNSAFE_OWN_DATA_DESCRIPTOR}from"../../../internal/data-descriptors.js";import{LYRA_DEFAULT_collapse,LYRA_DEFAULT_details,LYRA_DEFAULT_documentCompareLabel,LYRA_DEFAULT_documentCompareNewVersion,LYRA_DEFAULT_documentCompareNoVersion,LYRA_DEFAULT_documentCompareOldVersion,LYRA_DEFAULT_map,LYRA_DEFAULT_navigation,LYRA_DEFAULT_open,LYRA_DEFAULT_popover,LYRA_DEFAULT_search,LYRA_DEFAULT_select}from"../../../internal/default-strings.generated.js";const DOCUMENT_COMPARE_VIEW=literalSetConverter(["diff","side-by-side"],"diff"),DOCUMENT_COMPARE_DIFF_LAYOUT=literalSetConverter(["unified","split"],"unified"),DOCUMENT_COMPARE_VERSION_FIELDS=["id","name","mimeType","uri","version","text","highlights"];function projectDocumentCompareVersion(value){try{if(value===null||typeof value!="object"||Array.isArray(value))return;const descriptors=new Map;for(const field of DOCUMENT_COMPARE_VERSION_FIELDS)descriptors.set(field,getOwnDataDescriptor(value,field));const fieldValue=field=>{const descriptor=descriptors.get(field);if(!(descriptor===void 0||descriptor===MISSING_OWN_DATA_DESCRIPTOR||descriptor===UNSAFE_OWN_DATA_DESCRIPTOR))return descriptor.value},idDescriptor=descriptors.get("id"),nameDescriptor=descriptors.get("name");if(idDescriptor===void 0||idDescriptor===MISSING_OWN_DATA_DESCRIPTOR||idDescriptor===UNSAFE_OWN_DATA_DESCRIPTOR||nameDescriptor===void 0||nameDescriptor===MISSING_OWN_DATA_DESCRIPTOR||nameDescriptor===UNSAFE_OWN_DATA_DESCRIPTOR)return;const id=fieldValue("id"),name=fieldValue("name");if(typeof id!="string"||typeof name!="string")return;const mimeType=fieldValue("mimeType"),uri=fieldValue("uri"),version=fieldValue("version"),text=fieldValue("text"),highlights=fieldValue("highlights");return Object.freeze({id,name,...typeof mimeType=="string"?{mimeType}:{},...typeof uri=="string"?{uri}:{},...typeof version=="string"?{version}:{},...typeof text=="string"?{text}:{},...highlights===void 0?{}:{highlights:snapshotLyraHighlights(highlights)}})}catch{return}}function versionSourceIdentity(version){return version?JSON.stringify([version.id??"",version.uri??"",version.version??"",version.mimeType??"",version.name??""]):""}class LyraDocumentCompare extends LyraElement{constructor(){super(...arguments),this._view="diff",this._diffLayout="unified",this.copyable=!1,this._language="",this.syncScroll=!0,this.anchor=null,this.suppressSync=!1,this.onPaneScroll=source=>()=>{if(!this.syncScroll||this.suppressSync)return;const from=source==="old"?this.paneOldEl:this.paneNewEl,to=source==="old"?this.paneNewEl:this.paneOldEl;if(!from||!to)return;const fromMax=from.scrollHeight-from.clientHeight,toMax=to.scrollHeight-to.clientHeight;if(fromMax<=0)return;const fraction=from.scrollTop/fromMax;this.suppressSync=!0,to.scrollTop=fraction*toMax,this.scheduleSyncRelease()}}static{this.defaultStrings={...super.defaultStrings,collapse:LYRA_DEFAULT_collapse,details:LYRA_DEFAULT_details,documentCompareLabel:LYRA_DEFAULT_documentCompareLabel,documentCompareNewVersion:LYRA_DEFAULT_documentCompareNewVersion,documentCompareNoVersion:LYRA_DEFAULT_documentCompareNoVersion,documentCompareOldVersion:LYRA_DEFAULT_documentCompareOldVersion,map:LYRA_DEFAULT_map,navigation:LYRA_DEFAULT_navigation,open:LYRA_DEFAULT_open,popover:LYRA_DEFAULT_popover,search:LYRA_DEFAULT_search,select:LYRA_DEFAULT_select}}static{this.styles=[LyraElement.styles,styles]}get view(){return this._view}set view(next){const normalized=DOCUMENT_COMPARE_VIEW.normalizeReflected(this,"view",next),old=this._view;old!==normalized&&(this._view=normalized,this.requestUpdate("view",old))}get oldVersion(){return this._oldVersion}set oldVersion(value){const previous=this._oldVersion;this._oldVersion=projectDocumentCompareVersion(value),this.requestUpdate("oldVersion",previous)}get newVersion(){return this._newVersion}set newVersion(value){const previous=this._newVersion;this._newVersion=projectDocumentCompareVersion(value),this.requestUpdate("newVersion",previous)}get diffLayout(){return this._diffLayout}set diffLayout(next){const normalized=DOCUMENT_COMPARE_DIFF_LAYOUT.normalizeReflected(this,"diff-layout",next),old=this._diffLayout;old!==normalized&&(this._diffLayout=normalized,this.requestUpdate("diffLayout",old))}get language(){return this._language}set language(value){const normalized=typeof value=="string"?value:"",previous=this._language;previous!==normalized&&(this._language=normalized,this.requestUpdate("language",previous))}disconnectedCallback(){this.cancelSyncRelease(),super.disconnectedCallback()}adoptedCallback(){super.adoptedCallback(),this.cancelSyncRelease()}cancelSyncRelease(){this.syncReleaseFrame!==void 0&&this.syncReleaseView?.cancelAnimationFrame(this.syncReleaseFrame),this.syncReleaseFrame=void 0,this.syncReleaseView=void 0,this.suppressSync=!1}scheduleSyncRelease(){const view=this.ownerDocument.defaultView;if(!view){this.suppressSync=!1;return}const frame=view.requestAnimationFrame(()=>{this.syncReleaseView!==view||this.syncReleaseFrame!==frame||(this.syncReleaseFrame=void 0,this.syncReleaseView=void 0,this.suppressSync=!1)});this.syncReleaseView=view,this.syncReleaseFrame=frame}updated(changed){super.updated(changed);const anchor=this.anchor,sourceChanged=property2=>changed.has(property2)&&versionSourceIdentity(changed.get(property2))!==versionSourceIdentity(this[property2]),oldSourceChanged=sourceChanged("oldVersion"),newSourceChanged=sourceChanged("newVersion");if(anchor!=null){(changed.has("anchor")||this.view==="side-by-side"&&(changed.has("view")||changed.has("oldVersion")||changed.has("newVersion")))&&(this.previewOldEl?.scrollToAnchor(anchor),this.previewNewEl?.scrollToAnchor(anchor));return}this.view!=="side-by-side"||!oldSourceChanged&&!newSourceChanged||(this.cancelSyncRelease(),(this.syncScroll||oldSourceChanged)&&this.paneOldEl&&(this.paneOldEl.scrollTop=0),(this.syncScroll||newSourceChanged)&&this.paneNewEl&&(this.paneNewEl.scrollTop=0))}onHighlightActivate(side,event){const{highlightId}=event.detail,otherPreview=side==="old"?this.previewNewEl:this.previewOldEl;otherPreview?.highlights.some(highlight=>highlight.id===highlightId)&&otherPreview?.scrollToAnchor(highlightId)}versionLabel(version,fallbackKey){return version?.name||version?.version||this.localize(fallbackKey)}renderDiff(){return html`
|
|
1
|
+
var __decorate=function(decorators,target,key,desc){var c=arguments.length,r=c<3?target:desc===null?desc=Object.getOwnPropertyDescriptor(target,key):desc,d;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")r=Reflect.decorate(decorators,target,key,desc);else for(var i=decorators.length-1;i>=0;i--)(d=decorators[i])&&(r=(c<3?d(r):c>3?d(target,key,r):d(target,key))||r);return c>3&&r&&Object.defineProperty(target,key,r),r};import{html,nothing}from"lit";import{property,query}from"lit/decorators.js";import{styleMap}from"lit/directives/style-map.js";import{LyraElement}from"../../../internal/lyra-element.js";import{sanitizeCssLength}from"../../../internal/safe-css.js";import{literalSetConverter,trueDefaultBooleanConverter}from"../../../internal/converters.js";import{styles}from"./document-compare.styles.js";import{viewerSemanticLabel,viewerSemanticRole}from"../viewer-semantic-owner.js";import{snapshotLyraHighlights}from"../../../internal/highlight-collection.js";import{getOwnDataDescriptor,MISSING_OWN_DATA_DESCRIPTOR,UNSAFE_OWN_DATA_DESCRIPTOR}from"../../../internal/data-descriptors.js";import{LYRA_DEFAULT_collapse,LYRA_DEFAULT_details,LYRA_DEFAULT_documentCompareLabel,LYRA_DEFAULT_documentCompareNewVersion,LYRA_DEFAULT_documentCompareNoVersion,LYRA_DEFAULT_documentCompareOldVersion,LYRA_DEFAULT_map,LYRA_DEFAULT_navigation,LYRA_DEFAULT_open,LYRA_DEFAULT_popover,LYRA_DEFAULT_search,LYRA_DEFAULT_select}from"../../../internal/default-strings.generated.js";const DOCUMENT_COMPARE_VIEW=literalSetConverter(["diff","side-by-side"],"diff"),DOCUMENT_COMPARE_DIFF_LAYOUT=literalSetConverter(["unified","split"],"unified"),DOCUMENT_COMPARE_VERSION_FIELDS=["id","name","mimeType","uri","version","text","highlights"];function projectDocumentCompareVersion(value){try{if(value===null||typeof value!="object"||Array.isArray(value))return;const descriptors=new Map;for(const field of DOCUMENT_COMPARE_VERSION_FIELDS)descriptors.set(field,getOwnDataDescriptor(value,field));const fieldValue=field=>{const descriptor=descriptors.get(field);if(!(descriptor===void 0||descriptor===MISSING_OWN_DATA_DESCRIPTOR||descriptor===UNSAFE_OWN_DATA_DESCRIPTOR))return descriptor.value},idDescriptor=descriptors.get("id"),nameDescriptor=descriptors.get("name");if(idDescriptor===void 0||idDescriptor===MISSING_OWN_DATA_DESCRIPTOR||idDescriptor===UNSAFE_OWN_DATA_DESCRIPTOR||nameDescriptor===void 0||nameDescriptor===MISSING_OWN_DATA_DESCRIPTOR||nameDescriptor===UNSAFE_OWN_DATA_DESCRIPTOR)return;const id=fieldValue("id"),name=fieldValue("name");if(typeof id!="string"||typeof name!="string")return;const mimeType=fieldValue("mimeType"),uri=fieldValue("uri"),version=fieldValue("version"),text=fieldValue("text"),highlights=fieldValue("highlights");return Object.freeze({id,name,...typeof mimeType=="string"?{mimeType}:{},...typeof uri=="string"?{uri}:{},...typeof version=="string"?{version}:{},...typeof text=="string"?{text}:{},...highlights===void 0?{}:{highlights:snapshotLyraHighlights(highlights)}})}catch{return}}function versionSourceIdentity(version){return version?JSON.stringify([version.id??"",version.uri??"",version.version??"",version.mimeType??"",version.name??""]):""}class LyraDocumentCompare extends LyraElement{constructor(){super(...arguments),this._view="diff",this._diffLayout="unified",this.copyable=!1,this._language="",this.syncScroll=!0,this.maxHeight="",this.anchor=null,this.suppressSync=!1,this.onPaneScroll=source=>()=>{if(!this.syncScroll||this.suppressSync)return;const from=source==="old"?this.paneOldEl:this.paneNewEl,to=source==="old"?this.paneNewEl:this.paneOldEl;if(!from||!to)return;const fromMax=from.scrollHeight-from.clientHeight,toMax=to.scrollHeight-to.clientHeight;if(fromMax<=0)return;const fraction=from.scrollTop/fromMax;this.suppressSync=!0,to.scrollTop=fraction*toMax,this.scheduleSyncRelease()}}static{this.defaultStrings={...super.defaultStrings,collapse:LYRA_DEFAULT_collapse,details:LYRA_DEFAULT_details,documentCompareLabel:LYRA_DEFAULT_documentCompareLabel,documentCompareNewVersion:LYRA_DEFAULT_documentCompareNewVersion,documentCompareNoVersion:LYRA_DEFAULT_documentCompareNoVersion,documentCompareOldVersion:LYRA_DEFAULT_documentCompareOldVersion,map:LYRA_DEFAULT_map,navigation:LYRA_DEFAULT_navigation,open:LYRA_DEFAULT_open,popover:LYRA_DEFAULT_popover,search:LYRA_DEFAULT_search,select:LYRA_DEFAULT_select}}static{this.styles=[LyraElement.styles,styles]}get view(){return this._view}set view(next){const normalized=DOCUMENT_COMPARE_VIEW.normalizeReflected(this,"view",next),old=this._view;old!==normalized&&(this._view=normalized,this.requestUpdate("view",old))}get oldVersion(){return this._oldVersion}set oldVersion(value){const previous=this._oldVersion;this._oldVersion=projectDocumentCompareVersion(value),this.requestUpdate("oldVersion",previous)}get newVersion(){return this._newVersion}set newVersion(value){const previous=this._newVersion;this._newVersion=projectDocumentCompareVersion(value),this.requestUpdate("newVersion",previous)}get diffLayout(){return this._diffLayout}set diffLayout(next){const normalized=DOCUMENT_COMPARE_DIFF_LAYOUT.normalizeReflected(this,"diff-layout",next),old=this._diffLayout;old!==normalized&&(this._diffLayout=normalized,this.requestUpdate("diffLayout",old))}get language(){return this._language}set language(value){const normalized=typeof value=="string"?value:"",previous=this._language;previous!==normalized&&(this._language=normalized,this.requestUpdate("language",previous))}disconnectedCallback(){this.cancelSyncRelease(),super.disconnectedCallback()}adoptedCallback(){super.adoptedCallback(),this.cancelSyncRelease()}cancelSyncRelease(){this.syncReleaseFrame!==void 0&&this.syncReleaseView?.cancelAnimationFrame(this.syncReleaseFrame),this.syncReleaseFrame=void 0,this.syncReleaseView=void 0,this.suppressSync=!1}scheduleSyncRelease(){const view=this.ownerDocument.defaultView;if(!view){this.suppressSync=!1;return}const frame=view.requestAnimationFrame(()=>{this.syncReleaseView!==view||this.syncReleaseFrame!==frame||(this.syncReleaseFrame=void 0,this.syncReleaseView=void 0,this.suppressSync=!1)});this.syncReleaseView=view,this.syncReleaseFrame=frame}updated(changed){super.updated(changed);const anchor=this.anchor,sourceChanged=property2=>changed.has(property2)&&versionSourceIdentity(changed.get(property2))!==versionSourceIdentity(this[property2]),oldSourceChanged=sourceChanged("oldVersion"),newSourceChanged=sourceChanged("newVersion");if(anchor!=null){(changed.has("anchor")||this.view==="side-by-side"&&(changed.has("view")||changed.has("oldVersion")||changed.has("newVersion")))&&(this.previewOldEl?.scrollToAnchor(anchor),this.previewNewEl?.scrollToAnchor(anchor));return}this.view!=="side-by-side"||!oldSourceChanged&&!newSourceChanged||(this.cancelSyncRelease(),(this.syncScroll||oldSourceChanged)&&this.paneOldEl&&(this.paneOldEl.scrollTop=0),(this.syncScroll||newSourceChanged)&&this.paneNewEl&&(this.paneNewEl.scrollTop=0))}onHighlightActivate(side,event){const{highlightId}=event.detail,otherPreview=side==="old"?this.previewNewEl:this.previewOldEl;otherPreview?.highlights.some(highlight=>highlight.id===highlightId)&&otherPreview?.scrollToAnchor(highlightId)}versionLabel(version,fallbackKey){return version?.name||version?.version||this.localize(fallbackKey)}renderDiff(){return html`
|
|
2
2
|
<lr-diff-view
|
|
3
3
|
part="diff"
|
|
4
4
|
.oldText=${this.oldVersion?.text??""}
|
|
@@ -27,8 +27,13 @@ var __decorate=function(decorators,target,key,desc){var c=arguments.length,r=c<3
|
|
|
27
27
|
${this.renderVersionPane(this.newVersion,"new")}
|
|
28
28
|
</div>
|
|
29
29
|
</div>
|
|
30
|
-
`}render(){return html`
|
|
31
|
-
<div
|
|
30
|
+
`}render(){const maxHeight=sanitizeCssLength(this.maxHeight);return html`
|
|
31
|
+
<div
|
|
32
|
+
part="base"
|
|
33
|
+
role=${viewerSemanticRole(this,"group")??nothing}
|
|
34
|
+
aria-label=${viewerSemanticLabel(this,this.localize("documentCompareLabel"))??nothing}
|
|
35
|
+
style=${maxHeight?styleMap({"--_lr-document-compare-pane-max-height-attr":maxHeight}):nothing}
|
|
36
|
+
>
|
|
32
37
|
${this.view==="side-by-side"?this.renderSideBySide():this.renderDiff()}
|
|
33
38
|
</div>
|
|
34
|
-
`}}__decorate([property({reflect:!0,converter:DOCUMENT_COMPARE_VIEW})],LyraDocumentCompare.prototype,"view",null),__decorate([property({attribute:!1})],LyraDocumentCompare.prototype,"oldVersion",null),__decorate([property({attribute:!1})],LyraDocumentCompare.prototype,"newVersion",null),__decorate([property({attribute:"diff-layout",reflect:!0,converter:DOCUMENT_COMPARE_DIFF_LAYOUT})],LyraDocumentCompare.prototype,"diffLayout",null),__decorate([property({type:Boolean})],LyraDocumentCompare.prototype,"copyable",void 0),__decorate([property()],LyraDocumentCompare.prototype,"language",null),__decorate([property({attribute:!1})],LyraDocumentCompare.prototype,"languages",void 0),__decorate([property({attribute:"sync-scroll",converter:trueDefaultBooleanConverter})],LyraDocumentCompare.prototype,"syncScroll",void 0),__decorate([property({attribute:!1,hasChanged:()=>!0})],LyraDocumentCompare.prototype,"anchor",void 0),__decorate([query('[part="pane-old"]')],LyraDocumentCompare.prototype,"paneOldEl",void 0),__decorate([query('[part="pane-new"]')],LyraDocumentCompare.prototype,"paneNewEl",void 0),__decorate([query('[part="pane-old"] lr-document-preview')],LyraDocumentCompare.prototype,"previewOldEl",void 0),__decorate([query('[part="pane-new"] lr-document-preview')],LyraDocumentCompare.prototype,"previewNewEl",void 0);export{LyraDocumentCompare};
|
|
39
|
+
`}}__decorate([property({reflect:!0,converter:DOCUMENT_COMPARE_VIEW})],LyraDocumentCompare.prototype,"view",null),__decorate([property({attribute:!1})],LyraDocumentCompare.prototype,"oldVersion",null),__decorate([property({attribute:!1})],LyraDocumentCompare.prototype,"newVersion",null),__decorate([property({attribute:"diff-layout",reflect:!0,converter:DOCUMENT_COMPARE_DIFF_LAYOUT})],LyraDocumentCompare.prototype,"diffLayout",null),__decorate([property({type:Boolean})],LyraDocumentCompare.prototype,"copyable",void 0),__decorate([property()],LyraDocumentCompare.prototype,"language",null),__decorate([property({attribute:!1})],LyraDocumentCompare.prototype,"languages",void 0),__decorate([property({attribute:"sync-scroll",converter:trueDefaultBooleanConverter})],LyraDocumentCompare.prototype,"syncScroll",void 0),__decorate([property({attribute:"max-height"})],LyraDocumentCompare.prototype,"maxHeight",void 0),__decorate([property({attribute:!1,hasChanged:()=>!0})],LyraDocumentCompare.prototype,"anchor",void 0),__decorate([query('[part="pane-old"]')],LyraDocumentCompare.prototype,"paneOldEl",void 0),__decorate([query('[part="pane-new"]')],LyraDocumentCompare.prototype,"paneNewEl",void 0),__decorate([query('[part="pane-old"] lr-document-preview')],LyraDocumentCompare.prototype,"previewOldEl",void 0),__decorate([query('[part="pane-new"] lr-document-preview')],LyraDocumentCompare.prototype,"previewNewEl",void 0);export{LyraDocumentCompare};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{css}from"lit";const styles=css`:host{contain-intrinsic-inline-size:var(--lr-size-20rem);--_lr-document-compare-pane-max-height:var(--lr-size-24rem);display:block;container-type:inline-size}[part=base]{gap:var(--lr-space-m);color:var(--lr-color-text);flex-direction:column;display:flex}[part=diff]{display:block}[part=panes]{gap:var(--lr-space-m);align-items:stretch;display:flex}[part=pane-old],[part=pane-new]{gap:var(--lr-space-xs);border:var(--lr-border-width-thin) solid var(--lr-color-border);border-radius:var(--lr-radius);min-inline-size:0;padding:var(--lr-space-m);max-block-size:var(--lr-document-compare-pane-max-height,var(--_lr-document-compare-pane-max-height));flex-direction:column;flex:1 1 0;display:flex;overflow:hidden auto}[part=pane-old]:focus-visible,[part=pane-new]:focus-visible{outline:var(--lr-focus-ring);outline-offset:calc(-1 * var(--lr-focus-ring-width))}[part=pane-old]:hover,[part=pane-new]:hover{border-color:var(--lr-color-border-strong)}[part=pane-header]{font-weight:var(--lr-font-weight-semibold);font-size:var(--lr-font-size-xs);color:var(--lr-color-text-quiet);text-transform:uppercase;letter-spacing:var(--lr-size-0-02em)}[part=pane-empty]{color:var(--lr-color-text-quiet);font-size:var(--lr-font-size-sm);margin:0}@container (inline-size<=639.98px){[part=panes]{flex-direction:column}}`;export{styles};
|
|
1
|
+
import{css}from"lit";const styles=css`:host{contain-intrinsic-inline-size:var(--lr-size-20rem);--_lr-document-compare-pane-max-height:var(--lr-size-24rem);display:block;container-type:inline-size}[part=base]{gap:var(--lr-space-m);color:var(--lr-color-text);flex-direction:column;display:flex}[part=diff]{display:block}[part=panes]{gap:var(--lr-space-m);align-items:stretch;display:flex}[part=pane-old],[part=pane-new]{gap:var(--lr-space-xs);border:var(--lr-border-width-thin) solid var(--lr-color-border);border-radius:var(--lr-radius);min-inline-size:0;padding:var(--lr-space-m);max-block-size:var(--_lr-document-compare-pane-max-height-attr,var(--lr-document-compare-pane-max-height,var(--_lr-document-compare-pane-max-height)));flex-direction:column;flex:1 1 0;display:flex;overflow:hidden auto}[part=pane-old]:focus-visible,[part=pane-new]:focus-visible{outline:var(--lr-focus-ring);outline-offset:calc(-1 * var(--lr-focus-ring-width))}[part=pane-old]:hover,[part=pane-new]:hover{border-color:var(--lr-color-border-strong)}[part=pane-header]{font-weight:var(--lr-font-weight-semibold);font-size:var(--lr-font-size-xs);color:var(--lr-color-text-quiet);text-transform:uppercase;letter-spacing:var(--lr-size-0-02em)}[part=pane-empty]{color:var(--lr-color-text-quiet);font-size:var(--lr-font-size-sm);margin:0}@container (inline-size<=639.98px){[part=panes]{flex-direction:column}[part=pane-old],[part=pane-new]{flex-basis:auto}}`;export{styles};
|
|
@@ -89,6 +89,9 @@ import{type TemplateResult,type PropertyValues}from'lit';import{LyraElement}from
|
|
|
89
89
|
* @csspart highlight-actions - Non-overlapping actions used when multiple region highlights would
|
|
90
90
|
* otherwise create overlapping minimum hit areas (image format only).
|
|
91
91
|
* @csspart region-highlight-action - One action in the non-overlapping highlight action list.
|
|
92
|
+
* ArrowDown/ArrowUp (or ArrowLeft/ArrowRight under RTL) plus Home/End move focus across this
|
|
93
|
+
* list, matching `<lr-highlight-layer>`'s roving shortcut; every action keeps its own native
|
|
94
|
+
* tabindex, so Tab still steps through each one individually.
|
|
92
95
|
* @cssprop [--lr-document-preview-max-height=none] - Maximum body block size before the preview scrolls internally.
|
|
93
96
|
* @cssprop [--lr-document-preview-font=var(--lr-font-mono)] - Font used for plain-text previews.
|
|
94
97
|
* @cssprop [--lr-document-preview-download-link-hover-bg=color-mix(in oklab, var(--lr-color-brand), var(--lr-color-mix-partner) var(--lr-color-mix-hover))] - Hover background of the generic download link.
|
|
@@ -163,7 +166,12 @@ private renderSpinner;private renderError;private renderTextPreview;private rend
|
|
|
163
166
|
* (plus the highlight layer, which needs the same relatively-positioned sibling context either
|
|
164
167
|
* way) unwrapped, preserving pre-`zoomable` DOM exactly. Mirrors `<lr-svg-viewer>`'s identical
|
|
165
168
|
* helper. */
|
|
166
|
-
private renderZoomableWrapper;private projectRegionHighlights;private regionHighlights;private highlightActionLabel;private renderHighlightLayer;
|
|
169
|
+
private renderZoomableWrapper;private projectRegionHighlights;private regionHighlights;private highlightActionLabel;private renderHighlightLayer;
|
|
170
|
+
/** Moves focus among the `region-highlight-action` list to match `<lr-highlight-layer>`'s
|
|
171
|
+
* roving arrow-key shortcut. Every action button keeps its own native tabindex (this list
|
|
172
|
+
* isn't a roving-tabindex widget), so this only offers ArrowDown/ArrowUp/Home/End as a
|
|
173
|
+
* faster alternative to repeated Tab, direction-aware under RTL. */
|
|
174
|
+
private onHighlightActionKeyDown;private renderHighlightActions;
|
|
167
175
|
/** Scrolls a `region` highlight into view (image format only). See `<lr-svg-viewer>`'s
|
|
168
176
|
* identical method for the id/anchor-reference resolution and no-retry-loop rationale. */
|
|
169
177
|
scrollToAnchor(target:LyraAnchor|string):Promise<boolean>;private renderDownloadFallback;
|
|
@@ -57,7 +57,7 @@ var __decorate=function(decorators,target,key,desc){var c=arguments.length,r=c<3
|
|
|
57
57
|
style=${styleMap({left:`${h.anchor.rect.x}%`,top:`${h.anchor.rect.y}%`,width:`${h.anchor.rect.width}%`,height:`${h.anchor.rect.height}%`})}
|
|
58
58
|
></div>
|
|
59
59
|
`)}
|
|
60
|
-
</div>`:nothing}renderHighlightActions(regionHighlights){return regionHighlights.length<2?nothing:html`<div part="highlight-actions">
|
|
60
|
+
</div>`:nothing}onHighlightActionKeyDown(e,index,total){const rtl=this.effectiveDirection==="rtl",forward=e.key==="ArrowDown"||(rtl?e.key==="ArrowLeft":e.key==="ArrowRight"),backward=e.key==="ArrowUp"||(rtl?e.key==="ArrowRight":e.key==="ArrowLeft");let nextIndex;forward?nextIndex=Math.min(total-1,index+1):backward?nextIndex=Math.max(0,index-1):e.key==="Home"?nextIndex=0:e.key==="End"&&(nextIndex=total-1),!(nextIndex===void 0||nextIndex===index)&&(e.preventDefault(),this.renderRoot.querySelectorAll('[part="region-highlight-action"]')[nextIndex]?.focus())}renderHighlightActions(regionHighlights){return regionHighlights.length<2?nothing:html`<div part="highlight-actions">
|
|
61
61
|
${regionHighlights.map((highlight,index)=>{const label=this.highlightActionLabel(highlight,index,regionHighlights.length);return html`
|
|
62
62
|
<button
|
|
63
63
|
part="region-highlight-action"
|
|
@@ -65,6 +65,7 @@ var __decorate=function(decorators,target,key,desc){var c=arguments.length,r=c<3
|
|
|
65
65
|
data-highlight-id=${highlight.id}
|
|
66
66
|
aria-label=${label}
|
|
67
67
|
@click=${()=>this.emit("lr-highlight-activate",{highlightId:highlight.id})}
|
|
68
|
+
@keydown=${e=>this.onHighlightActionKeyDown(e,index,regionHighlights.length)}
|
|
68
69
|
>
|
|
69
70
|
${highlight.label||label}
|
|
70
71
|
</button>
|
|
@@ -122,6 +122,11 @@ src:string;
|
|
|
122
122
|
get notebook():NotebookDoc|string|undefined;set notebook(value:NotebookDoc|string|undefined);private _notebook?;
|
|
123
123
|
/** Readonly discriminated snapshot of the effective source authority. */
|
|
124
124
|
get source():LyraNotebookViewerSource;
|
|
125
|
+
/** Intentionally inert -- `source` is always derived live from `src`/`notebook`. A getter with
|
|
126
|
+
* no setter throws (in strict-mode module code, which every consumer runs) the moment
|
|
127
|
+
* anything assigns to it, including a stray `.source=${x}` template binding; this no-op keeps
|
|
128
|
+
* that assignment harmless instead of throwing from inside framework internals. */
|
|
129
|
+
set source(_value:LyraNotebookViewerSource);
|
|
125
130
|
/** Display name used as the viewer's accessible label, and matched against a `fragment` anchor's
|
|
126
131
|
* cell id. */
|
|
127
132
|
name:string;
|
|
@@ -23,7 +23,7 @@ var __decorate=function(decorators,target,key,desc){var c=arguments.length,r=c<3
|
|
|
23
23
|
></lr-code-block>`:html`<pre part="raw-source" tabindex="0">${joinSource(c.source)}</pre>`}
|
|
24
24
|
${c.cell_type==="code"&&c.outputs?.length?html`<div part="outputs">${c.outputs.map((o,i)=>this.renderOutput(index,o,i))}</div>`:nothing}
|
|
25
25
|
</div>
|
|
26
|
-
</div>`}}static{this.defaultStrings={...super.defaultStrings,anchorJumped:LYRA_DEFAULT_anchorJumped,anchorJumpedToPage:LYRA_DEFAULT_anchorJumpedToPage,anchorNotFound:LYRA_DEFAULT_anchorNotFound,documentPreviewEmpty:LYRA_DEFAULT_documentPreviewEmpty,documentPreviewFailedToLoad:LYRA_DEFAULT_documentPreviewFailedToLoad,documentPreviewResourceTooLarge:LYRA_DEFAULT_documentPreviewResourceTooLarge,documentPreviewTypeDocument:LYRA_DEFAULT_documentPreviewTypeDocument,documentPreviewUrlNotAllowed:LYRA_DEFAULT_documentPreviewUrlNotAllowed,documentViewerMissingSanitizer:LYRA_DEFAULT_documentViewerMissingSanitizer,loadingDocument:LYRA_DEFAULT_loadingDocument,notebookViewerCodeCell:LYRA_DEFAULT_notebookViewerCodeCell,notebookViewerCollapseOutput:LYRA_DEFAULT_notebookViewerCollapseOutput,notebookViewerErrorOutput:LYRA_DEFAULT_notebookViewerErrorOutput,notebookViewerInPrompt:LYRA_DEFAULT_notebookViewerInPrompt,notebookViewerInPromptEmpty:LYRA_DEFAULT_notebookViewerInPromptEmpty,notebookViewerInvalid:LYRA_DEFAULT_notebookViewerInvalid,notebookViewerLabel:LYRA_DEFAULT_notebookViewerLabel,notebookViewerMarkdownCell:LYRA_DEFAULT_notebookViewerMarkdownCell,notebookViewerRawCell:LYRA_DEFAULT_notebookViewerRawCell,notebookViewerShowAllOutput:LYRA_DEFAULT_notebookViewerShowAllOutput,notebookViewerTooManyCells:LYRA_DEFAULT_notebookViewerTooManyCells,notebookViewerUnrenderedOutput:LYRA_DEFAULT_notebookViewerUnrenderedOutput,notebookViewerUnsupportedVersion:LYRA_DEFAULT_notebookViewerUnsupportedVersion}}static{this.ownedCollectionProperties=Object.freeze(["notebook"])}static{this.identityCollectionObjectProperties=Object.freeze(["notebook"])}static{this.styles=[LyraElement.styles,specialistTokens,styles,srOnly,viewerLoadingStyles]}get notebook(){return this._notebook}set notebook(value){const old=this._notebook,next=typeof value=="string"||value===void 0?value:(()=>{const snapshot=snapshotNotebookDocument(value);return snapshot===OMIT_NOTEBOOK_SNAPSHOT?invalidNotebookSnapshot():snapshot})();Object.is(old,next)||(this._notebook=next,this.requestUpdate("notebook",old),next===void 0?(this.beginSourceTransition(this.src?"loading":"idle"),this.isConnected&&this.scheduleSourceLoad()):this.parseInline())}get source(){return resolveViewerSource(this.src,this._notebook)}get effectiveOutputCollapseLines(){return finiteCount(this.outputCollapseLines,40)}updated(changed){super.updated(changed),this.announcements.transition("load",this.loadState.kind,this.loadState.kind==="error"?this.loadState.message:this.localize("loadingDocument")),changed.has("src")&&this._notebook===void 0&&this.scheduleSourceLoad();const locale=this.effectiveLocale;if(locale!==this.lastSearchLocale){const shouldRecompute=this.searchQuery!=="";this.lastSearchLocale=locale,shouldRecompute&&this.scheduleAfterUpdate(()=>{this.search(this.searchQuery)},"search")}}willUpdate(changed){super.willUpdate(changed),changed.has("src")&&this._notebook===void 0&&this.beginSourceTransition(this.src?"loading":"idle"),(changed.has("highlights")||changed.has("activeHighlightId")||changed.has("loadState"))&&this.repaintHighlights()}connectedCallback(){super.connectedCallback(),this.announcements.connect(),this.hasUpdated&&this.src&&this._notebook===void 0&&this.scheduleSourceLoad(),this.hasUpdated&&this._notebook!==void 0&&this.loadState.kind==="loaded"&&this.requestUpdate()}disconnectedCallback(){this.generation++,this.sanitizerGeneration++,this.beginAbortableLoad(),this.sanitizedOutputCache.clear(),this.sanitizationTasks.clear(),this.sanitizerFailureReported=!1,this.sourceLoadScheduled=!1,this._notebook===void 0&&(this.loadState={kind:"idle"}),this.announcements.disconnect(),super.disconnectedCallback()}adoptedCallback(){super.adoptedCallback(),this.announcements.adopted()}parseInline(){if(this._notebook===void 0)return;const generation=++this.generation;this.beginAbortableLoad(),this.resetParsedState(),this.loadState={kind:"idle"};try{const raw=typeof this._notebook=="string"?JSON.parse(this._notebook):this._notebook;this.setDoc(raw,generation)}catch(error){this.loadState={kind:"error",message:this.localize("notebookViewerInvalid")},this.emit("lr-render-error",{error})}}resetParsedState(){const shouldEmitSearchReset=this.searchQuery!==""||this.searchMatches.length>0||!this.searchMatchCountExact||this.activeSearchIndex!==-1;this.sanitizerGeneration++,this.sanitizedOutputCache.clear(),this.sanitizationTasks.clear(),this.sanitizerFailureReported=!1,this.expandedOutputs=new Set,this.clearSearchState(),this.activeCellIndex=null,shouldEmitSearchReset&&this.emitSearchChange()}beginSourceTransition(kind){this.generation++,this.beginAbortableLoad(),this.resetParsedState(),this.loadState={kind}}scheduleSourceLoad(){this.sourceLoadScheduled||(this.sourceLoadScheduled=!0,this.scheduleAfterUpdate(()=>{this.sourceLoadScheduled=!1,this.isConnected&&this._notebook===void 0&&this.loadFromSrc()}))}async loadFromSrc(){if(!this.isConnected||this._notebook!==void 0)return;const generation=++this.generation,signal=this.beginAbortableLoad();if(!this.src){this.loadState={kind:"idle"};return}const fetchTarget=resolveOwnerFetchTarget(this,this.src);if(!fetchTarget){const error=new LyraUserFacingError(this.localize("documentPreviewUrlNotAllowed"));this.loadState={kind:"error",message:error.message},this.emit("lr-render-error",{error});return}this.loadState={kind:"loading"};try{const response=await fetchTarget.view.fetch(fetchTarget.url,signal?{signal}:void 0);if(!this.isConnected||generation!==this.generation)return;if(!response.ok)throw new Error(`${response.status} ${response.statusText}`);const text=await readResponseText(response);if(!this.isConnected||generation!==this.generation)return;this.setDoc(JSON.parse(text),generation)}catch(error){if(isAbortError(error)||!this.isConnected||generation!==this.generation)return;this.loadState={kind:"error",message:error instanceof LyraUserFacingError?error.message:this.localize(isResourceLimitError(error)?"documentPreviewResourceTooLarge":"documentPreviewFailedToLoad")},this.emit("lr-render-error",{error})}}setDoc(raw,generation){if(generation!==this.generation)return;if(!isNotebookShape(raw)){this.loadState={kind:"error",message:this.localize("notebookViewerInvalid")},this.emit("lr-render-error",{error:new Error("invalid notebook shape")});return}if(raw.nbformat!==SUPPORTED_MAJOR||!SUPPORTED_MINORS.includes(raw.nbformat_minor)){this.loadState={kind:"error",message:this.localize("notebookViewerUnsupportedVersion",void 0,{version:`${raw.nbformat}.${raw.nbformat_minor}`})},this.emit("lr-render-error",{error:new Error("unsupported nbformat version")});return}if(raw.cells.length>MAX_CELLS){this.loadState={kind:"error",message:this.localize("notebookViewerTooManyCells")},this.emit("lr-render-error",{error:new Error("too many cells")});return}this.resetParsedState(),this.loadState={kind:"loaded",doc:raw};const language=raw.metadata?.language_info?.name??raw.metadata?.kernelspec?.language??"";this.emit("lr-load",{cellCount:raw.cells.length,language})}async applyAnchor(anchor){const index=this.resolveAnchorCellIndex(anchor);return index<0?!1:this.activateCell(index,"start")}async activateCell(index,align){const generation=this.generation,ownerDocument=this.ownerDocument;if(this.activeCellIndex=index,!this.isConnected||(await this.updateComplete,!this.isConnected||this.ownerDocument!==ownerDocument||generation!==this.generation||this.activeCellIndex!==index))return!1;const list=this.virtualListEl;return!list||(await list.updateComplete,!this.isConnected||this.ownerDocument!==ownerDocument||generation!==this.generation||this.activeCellIndex!==index)?!1:(list.scrollToIndex(index,{align,behavior:"auto"}),await list.updateComplete,this.isConnected&&this.ownerDocument===ownerDocument&&generation===this.generation&&this.activeCellIndex===index)}resolveAnchorCellIndex(anchor){if(this.loadState.kind!=="loaded")return-1;const cells=this.loadState.doc.cells;let index=-1;if(anchor.kind==="node-path"&&Number.isInteger(anchor.path[0]))index=anchor.path[0];else if(anchor.kind==="fragment")index=cells.findIndex(c=>c.id===anchor.id);else return-1;return index<0||index>=cells.length?-1:index}repaintHighlights(){if(this.loadState.kind!=="loaded"){this.highlightedCells.size>0&&(this.highlightedCells=new Map);return}const next=new Map;let considered=0;for(const highlight of prioritizedHighlightCandidates(this.highlights,this.activeHighlightId)){if(considered>=MAX_NOTEBOOK_PAINTED_HIGHLIGHTS)break;considered++;const index=this.resolveAnchorCellIndex(highlight.anchor);index<0||next.has(index)||next.set(index,highlight)}this.highlightedCells=next}async search(query2){const boundedQuery=boundedViewerSearchQuery(query2,this.effectiveLocale),q=boundedQuery.needle;if(this.searchQuery=query2,this.lastSearchLocale=this.effectiveLocale,this.searchMatchCountExact=boundedQuery.accepted,this.loadState.kind!=="loaded"||!q||!boundedQuery.accepted)this.searchMatches=[];else{const budget=new ViewerSearchWorkBudget,matches=[];for(let index=0;index<this.loadState.doc.cells.length;index++){const cell=this.loadState.doc.cells[index],sourceParts=typeof cell.source=="string"?[cell.source]:cell.source,sourceMatch=budget.includesJoined(sourceParts,q,this.effectiveLocale),outputMatch=sourceMatch?!1:budget.includesJoined(notebookOutputSearchParts(cell.outputs??[]),q,this.effectiveLocale);if((sourceMatch||outputMatch)&&matches.push(index),!budget.complete){this.searchMatchCountExact=!1;break}}this.searchMatches=matches}return this.activeSearchIndex=this.searchMatches.length?0:-1,await this.activateSearchMatch(),this.emitSearchChange(),this.searchMatches.length}async searchNext(){return this.searchMatches.length?(this.activeSearchIndex=(this.activeSearchIndex+1)%this.searchMatches.length,await this.activateSearchMatch(),this.emitSearchChange(),!0):!1}async searchPrevious(){return this.searchMatches.length?(this.activeSearchIndex=(this.activeSearchIndex-1+this.searchMatches.length)%this.searchMatches.length,await this.activateSearchMatch(),this.emitSearchChange(),!0):!1}clearSearch(){this.clearSearchState(),this.emitSearchChange()}clearSearchState(){this.searchQuery="",this.searchMatches=[],this.searchMatchCountExact=!0,this.activeSearchIndex=-1}async activateSearchMatch(){const index=this.searchMatches[this.activeSearchIndex];index!==void 0&&await this.activateCell(index,"auto")}emitSearchChange(){this.emit("lr-search-change",{query:this.searchQuery,matchCount:this.searchMatches.length,matchCountExact:this.searchMatchCountExact,activeIndex:this.activeSearchIndex})}toggleOutput(index){const next=new Set(this.expandedOutputs);next.has(index)?next.delete(index):next.add(index),this.expandedOutputs=next}renderAnsiText(text){const segments=createAnsiParser().push(text);return html`${segments.map(seg=>html`<span style=${styleMap(this.segmentStyle(seg.styles))}>${seg.text}</span>`)}`}segmentStyle(s){const fg=sanitizeCssColor(s.fg)??"var(--lr-color-text)",bg=sanitizeCssColor(s.bg)??"transparent";return{"font-weight":s.bold?"bold":"normal",opacity:s.dim?"0.7":"1","font-style":s.italic?"italic":"normal","text-decoration":s.underline?"underline":"none",color:s.inverse?bg:fg,"background-color":s.inverse?fg:bg}}renderTextOutput(index,text,tone){const lines=text.split(`
|
|
26
|
+
</div>`}}static{this.defaultStrings={...super.defaultStrings,anchorJumped:LYRA_DEFAULT_anchorJumped,anchorJumpedToPage:LYRA_DEFAULT_anchorJumpedToPage,anchorNotFound:LYRA_DEFAULT_anchorNotFound,documentPreviewEmpty:LYRA_DEFAULT_documentPreviewEmpty,documentPreviewFailedToLoad:LYRA_DEFAULT_documentPreviewFailedToLoad,documentPreviewResourceTooLarge:LYRA_DEFAULT_documentPreviewResourceTooLarge,documentPreviewTypeDocument:LYRA_DEFAULT_documentPreviewTypeDocument,documentPreviewUrlNotAllowed:LYRA_DEFAULT_documentPreviewUrlNotAllowed,documentViewerMissingSanitizer:LYRA_DEFAULT_documentViewerMissingSanitizer,loadingDocument:LYRA_DEFAULT_loadingDocument,notebookViewerCodeCell:LYRA_DEFAULT_notebookViewerCodeCell,notebookViewerCollapseOutput:LYRA_DEFAULT_notebookViewerCollapseOutput,notebookViewerErrorOutput:LYRA_DEFAULT_notebookViewerErrorOutput,notebookViewerInPrompt:LYRA_DEFAULT_notebookViewerInPrompt,notebookViewerInPromptEmpty:LYRA_DEFAULT_notebookViewerInPromptEmpty,notebookViewerInvalid:LYRA_DEFAULT_notebookViewerInvalid,notebookViewerLabel:LYRA_DEFAULT_notebookViewerLabel,notebookViewerMarkdownCell:LYRA_DEFAULT_notebookViewerMarkdownCell,notebookViewerRawCell:LYRA_DEFAULT_notebookViewerRawCell,notebookViewerShowAllOutput:LYRA_DEFAULT_notebookViewerShowAllOutput,notebookViewerTooManyCells:LYRA_DEFAULT_notebookViewerTooManyCells,notebookViewerUnrenderedOutput:LYRA_DEFAULT_notebookViewerUnrenderedOutput,notebookViewerUnsupportedVersion:LYRA_DEFAULT_notebookViewerUnsupportedVersion}}static{this.ownedCollectionProperties=Object.freeze(["notebook"])}static{this.identityCollectionObjectProperties=Object.freeze(["notebook"])}static{this.styles=[LyraElement.styles,specialistTokens,styles,srOnly,viewerLoadingStyles]}get notebook(){return this._notebook}set notebook(value){const old=this._notebook,next=typeof value=="string"||value===void 0?value:(()=>{const snapshot=snapshotNotebookDocument(value);return snapshot===OMIT_NOTEBOOK_SNAPSHOT?invalidNotebookSnapshot():snapshot})();Object.is(old,next)||(this._notebook=next,this.requestUpdate("notebook",old),next===void 0?(this.beginSourceTransition(this.src?"loading":"idle"),this.isConnected&&this.scheduleSourceLoad()):this.parseInline())}get source(){return resolveViewerSource(this.src,this._notebook)}set source(_value){}get effectiveOutputCollapseLines(){return finiteCount(this.outputCollapseLines,40)}updated(changed){super.updated(changed),this.announcements.transition("load",this.loadState.kind,this.loadState.kind==="error"?this.loadState.message:this.localize("loadingDocument")),changed.has("src")&&this._notebook===void 0&&this.scheduleSourceLoad();const locale=this.effectiveLocale;if(locale!==this.lastSearchLocale){const shouldRecompute=this.searchQuery!=="";this.lastSearchLocale=locale,shouldRecompute&&this.scheduleAfterUpdate(()=>{this.search(this.searchQuery)},"search")}}willUpdate(changed){super.willUpdate(changed),changed.has("src")&&this._notebook===void 0&&this.beginSourceTransition(this.src?"loading":"idle"),(changed.has("highlights")||changed.has("activeHighlightId")||changed.has("loadState"))&&this.repaintHighlights()}connectedCallback(){super.connectedCallback(),this.announcements.connect(),this.hasUpdated&&this.src&&this._notebook===void 0&&this.scheduleSourceLoad(),this.hasUpdated&&this._notebook!==void 0&&this.loadState.kind==="loaded"&&this.requestUpdate()}disconnectedCallback(){this.generation++,this.sanitizerGeneration++,this.beginAbortableLoad(),this.sanitizedOutputCache.clear(),this.sanitizationTasks.clear(),this.sanitizerFailureReported=!1,this.sourceLoadScheduled=!1,this._notebook===void 0&&(this.loadState={kind:"idle"}),this.announcements.disconnect(),super.disconnectedCallback()}adoptedCallback(){super.adoptedCallback(),this.announcements.adopted()}parseInline(){if(this._notebook===void 0)return;const generation=++this.generation;this.beginAbortableLoad(),this.resetParsedState(),this.loadState={kind:"idle"};try{const raw=typeof this._notebook=="string"?JSON.parse(this._notebook):this._notebook;this.setDoc(raw,generation)}catch(error){this.loadState={kind:"error",message:this.localize("notebookViewerInvalid")},this.emit("lr-render-error",{error})}}resetParsedState(){const shouldEmitSearchReset=this.searchQuery!==""||this.searchMatches.length>0||!this.searchMatchCountExact||this.activeSearchIndex!==-1;this.sanitizerGeneration++,this.sanitizedOutputCache.clear(),this.sanitizationTasks.clear(),this.sanitizerFailureReported=!1,this.expandedOutputs=new Set,this.clearSearchState(),this.activeCellIndex=null,shouldEmitSearchReset&&this.emitSearchChange()}beginSourceTransition(kind){this.generation++,this.beginAbortableLoad(),this.resetParsedState(),this.loadState={kind}}scheduleSourceLoad(){this.sourceLoadScheduled||(this.sourceLoadScheduled=!0,this.scheduleAfterUpdate(()=>{this.sourceLoadScheduled=!1,this.isConnected&&this._notebook===void 0&&this.loadFromSrc()}))}async loadFromSrc(){if(!this.isConnected||this._notebook!==void 0)return;const generation=++this.generation,signal=this.beginAbortableLoad();if(!this.src){this.loadState={kind:"idle"};return}const fetchTarget=resolveOwnerFetchTarget(this,this.src);if(!fetchTarget){const error=new LyraUserFacingError(this.localize("documentPreviewUrlNotAllowed"));this.loadState={kind:"error",message:error.message},this.emit("lr-render-error",{error});return}this.loadState={kind:"loading"};try{const response=await fetchTarget.view.fetch(fetchTarget.url,signal?{signal}:void 0);if(!this.isConnected||generation!==this.generation)return;if(!response.ok)throw new Error(`${response.status} ${response.statusText}`);const text=await readResponseText(response);if(!this.isConnected||generation!==this.generation)return;this.setDoc(JSON.parse(text),generation)}catch(error){if(isAbortError(error)||!this.isConnected||generation!==this.generation)return;this.loadState={kind:"error",message:error instanceof LyraUserFacingError?error.message:this.localize(isResourceLimitError(error)?"documentPreviewResourceTooLarge":"documentPreviewFailedToLoad")},this.emit("lr-render-error",{error})}}setDoc(raw,generation){if(generation!==this.generation)return;if(!isNotebookShape(raw)){this.loadState={kind:"error",message:this.localize("notebookViewerInvalid")},this.emit("lr-render-error",{error:new Error("invalid notebook shape")});return}if(raw.nbformat!==SUPPORTED_MAJOR||!SUPPORTED_MINORS.includes(raw.nbformat_minor)){this.loadState={kind:"error",message:this.localize("notebookViewerUnsupportedVersion",void 0,{version:`${raw.nbformat}.${raw.nbformat_minor}`})},this.emit("lr-render-error",{error:new Error("unsupported nbformat version")});return}if(raw.cells.length>MAX_CELLS){this.loadState={kind:"error",message:this.localize("notebookViewerTooManyCells")},this.emit("lr-render-error",{error:new Error("too many cells")});return}this.resetParsedState(),this.loadState={kind:"loaded",doc:raw};const language=raw.metadata?.language_info?.name??raw.metadata?.kernelspec?.language??"";this.emit("lr-load",{cellCount:raw.cells.length,language})}async applyAnchor(anchor){const index=this.resolveAnchorCellIndex(anchor);return index<0?!1:this.activateCell(index,"start")}async activateCell(index,align){const generation=this.generation,ownerDocument=this.ownerDocument;if(this.activeCellIndex=index,!this.isConnected||(await this.updateComplete,!this.isConnected||this.ownerDocument!==ownerDocument||generation!==this.generation||this.activeCellIndex!==index))return!1;const list=this.virtualListEl;return!list||(await list.updateComplete,!this.isConnected||this.ownerDocument!==ownerDocument||generation!==this.generation||this.activeCellIndex!==index)?!1:(list.scrollToIndex(index,{align,behavior:"auto"}),await list.updateComplete,this.isConnected&&this.ownerDocument===ownerDocument&&generation===this.generation&&this.activeCellIndex===index)}resolveAnchorCellIndex(anchor){if(this.loadState.kind!=="loaded")return-1;const cells=this.loadState.doc.cells;let index=-1;if(anchor.kind==="node-path"&&Number.isInteger(anchor.path[0]))index=anchor.path[0];else if(anchor.kind==="fragment")index=cells.findIndex(c=>c.id===anchor.id);else return-1;return index<0||index>=cells.length?-1:index}repaintHighlights(){if(this.loadState.kind!=="loaded"){this.highlightedCells.size>0&&(this.highlightedCells=new Map);return}const next=new Map;let considered=0;for(const highlight of prioritizedHighlightCandidates(this.highlights,this.activeHighlightId)){if(considered>=MAX_NOTEBOOK_PAINTED_HIGHLIGHTS)break;considered++;const index=this.resolveAnchorCellIndex(highlight.anchor);index<0||next.has(index)||next.set(index,highlight)}this.highlightedCells=next}async search(query2){const boundedQuery=boundedViewerSearchQuery(query2,this.effectiveLocale),q=boundedQuery.needle;if(this.searchQuery=query2,this.lastSearchLocale=this.effectiveLocale,this.searchMatchCountExact=boundedQuery.accepted,this.loadState.kind!=="loaded"||!q||!boundedQuery.accepted)this.searchMatches=[];else{const budget=new ViewerSearchWorkBudget,matches=[];for(let index=0;index<this.loadState.doc.cells.length;index++){const cell=this.loadState.doc.cells[index],sourceParts=typeof cell.source=="string"?[cell.source]:cell.source,sourceMatch=budget.includesJoined(sourceParts,q,this.effectiveLocale),outputMatch=sourceMatch?!1:budget.includesJoined(notebookOutputSearchParts(cell.outputs??[]),q,this.effectiveLocale);if((sourceMatch||outputMatch)&&matches.push(index),!budget.complete){this.searchMatchCountExact=!1;break}}this.searchMatches=matches}return this.activeSearchIndex=this.searchMatches.length?0:-1,await this.activateSearchMatch(),this.emitSearchChange(),this.searchMatches.length}async searchNext(){return this.searchMatches.length?(this.activeSearchIndex=(this.activeSearchIndex+1)%this.searchMatches.length,await this.activateSearchMatch(),this.emitSearchChange(),!0):!1}async searchPrevious(){return this.searchMatches.length?(this.activeSearchIndex=(this.activeSearchIndex-1+this.searchMatches.length)%this.searchMatches.length,await this.activateSearchMatch(),this.emitSearchChange(),!0):!1}clearSearch(){this.clearSearchState(),this.emitSearchChange()}clearSearchState(){this.searchQuery="",this.searchMatches=[],this.searchMatchCountExact=!0,this.activeSearchIndex=-1}async activateSearchMatch(){const index=this.searchMatches[this.activeSearchIndex];index!==void 0&&await this.activateCell(index,"auto")}emitSearchChange(){this.emit("lr-search-change",{query:this.searchQuery,matchCount:this.searchMatches.length,matchCountExact:this.searchMatchCountExact,activeIndex:this.activeSearchIndex})}toggleOutput(index){const next=new Set(this.expandedOutputs);next.has(index)?next.delete(index):next.add(index),this.expandedOutputs=next}renderAnsiText(text){const segments=createAnsiParser().push(text);return html`${segments.map(seg=>html`<span style=${styleMap(this.segmentStyle(seg.styles))}>${seg.text}</span>`)}`}segmentStyle(s){const fg=sanitizeCssColor(s.fg)??"var(--lr-color-text)",bg=sanitizeCssColor(s.bg)??"transparent";return{"font-weight":s.bold?"bold":"normal",opacity:s.dim?"0.7":"1","font-style":s.italic?"italic":"normal","text-decoration":s.underline?"underline":"none",color:s.inverse?bg:fg,"background-color":s.inverse?fg:bg}}renderTextOutput(index,text,tone){const lines=text.split(`
|
|
27
27
|
`),outputCollapseLines=this.effectiveOutputCollapseLines,collapsible=outputCollapseLines>0&&lines.length>outputCollapseLines,expanded=this.expandedOutputs.has(index)||!collapsible,shown=expanded?text:lines.slice(0,outputCollapseLines).join(`
|
|
28
28
|
`);return html`<div part=${tone==="danger"?"output output-error":"output"} data-output-type="stream" data-stream=${tone==="danger"?"stderr":"stdout"}
|
|
29
29
|
>${this.renderAnsiText(shown)}${collapsible?html`<button
|
|
@@ -16,6 +16,11 @@ export interface PdfOutlineItem{title:string;page?:number;children?:PdfOutlineIt
|
|
|
16
16
|
* genuine activation click).
|
|
17
17
|
* The composed virtual-list lifecycle is an implementation detail: visible-range changes update
|
|
18
18
|
* `page`, while raw `lr-visible-range-change` and `lr-virtual-scroll` events stay contained.
|
|
19
|
+
* Known capability boundaries: `search()`/text-quote anchors match exact (whitespace- and
|
|
20
|
+
* soft-hyphen-normalized) text only -- there is no fuzzy/approximate mode (see `internal/
|
|
21
|
+
* text-quote.ts`'s own doc comment for the exact normalization rules). Non-Latin cMap-encoded fonts
|
|
22
|
+
* get no special handling beyond whatever `pdfjs-dist` resolves on its own. A scanned or
|
|
23
|
+
* image-only PDF has no text layer at all, so it has nothing to select or search.
|
|
19
24
|
*
|
|
20
25
|
* @customElement lr-pdf-viewer
|
|
21
26
|
* @event lr-render-error - Fired when fetching, parsing, or rendering fails, including synchronous
|
|
@@ -78,7 +78,7 @@ private activeRowKey;private searchMatches;private searchMatchCountExact;private
|
|
|
78
78
|
/** `rawRow` is 1-based, including the sheet's (always-present) header row -- the same raw-grid
|
|
79
79
|
* addressing convention every `cell-range` anchor uses. A highlight with no sheet resolved (from
|
|
80
80
|
* neither `anchor.sheet` nor a `Sheet!`-prefixed `range`) applies to every sheet. */
|
|
81
|
-
private cellHighlightsForRow;private renderCell;private renderRow;private renderSheet;private renderLoaded;private onTabsChange;
|
|
81
|
+
private cellHighlightsForRow;private renderCell;private renderRow;private readonly virtualListKeyFunction;private renderSheet;private renderLoaded;private onTabsChange;
|
|
82
82
|
/** Switches to `sheetIndex` (if needed) then scrolls raw-grid `(rawRow, col)` into view -- shared
|
|
83
83
|
* by `applyAnchor()` and every search navigation method, so both stay byte-identical in how a
|
|
84
84
|
* coordinate becomes a scroll. */
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
var __decorate=function(decorators,target,key,desc){var c=arguments.length,r=c<3?target:desc===null?desc=Object.getOwnPropertyDescriptor(target,key):desc,d;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")r=Reflect.decorate(decorators,target,key,desc);else for(var i=decorators.length-1;i>=0;i--)(d=decorators[i])&&(r=(c<3?d(r):c>3?d(target,key,r):d(target,key))||r);return c>3&&r&&Object.defineProperty(target,key,r),r};import{html,nothing}from"lit";import{property,state}from"lit/decorators.js";import{styleMap}from"lit/directives/style-map.js";import{LyraElement}from"../../../internal/lyra-element.js";import{srOnly}from"../../../internal/a11y.js";import{assertTableSize,isAbortError,isResourceLimitError,LyraResourceLimitError,LyraUserFacingError,readResponseArrayBuffer,resolveOwnerFetchTarget}from"../../../internal/resource-loader.js";import{sanitizeCssLength}from"../../../internal/safe-css.js";import{prefersReducedMotion}from"../../../internal/motion.js";import{DocumentAnchorTarget}from"../../../internal/anchor-target.js";import{parseCellRange}from"../../../internal/cell-range.js";import{loadSheetJsCached}from"./spreadsheet-loader.js";import{styles}from"./spreadsheet-viewer.styles.js";import{assertXlsxArchiveWithinLimits}from"./xlsx-resource-guard.js";import{getNumberFormat}from"../../../internal/intl-cache.js";import{ViewerAnnouncementController}from"../viewer-announcements.js";import{viewerSemanticLabel,viewerSemanticRole}from"../viewer-semantic-owner.js";import{renderViewerLoading,viewerLoadingStyles}from"../viewer-loading.js";import{boundedViewerSearchQuery,ViewerSearchWorkBudget}from"../viewer-search-limits.js";import{LYRA_DEFAULT_anchorJumped,LYRA_DEFAULT_anchorJumpedToPage,LYRA_DEFAULT_anchorNotFound,LYRA_DEFAULT_cellHighlightWithLabel,LYRA_DEFAULT_documentPreviewEmpty,LYRA_DEFAULT_documentPreviewFailedToLoad,LYRA_DEFAULT_documentPreviewResourceTooLarge,LYRA_DEFAULT_documentPreviewTypeDocument,LYRA_DEFAULT_documentPreviewUrlNotAllowed,LYRA_DEFAULT_highlightWithLabel,LYRA_DEFAULT_loadingDocument,LYRA_DEFAULT_noData,LYRA_DEFAULT_spreadsheetViewerLabel,LYRA_DEFAULT_spreadsheetViewerUnavailable}from"../../../internal/default-strings.generated.js";const MAX_SPREADSHEET_SHEETS=256,MAX_SPREADSHEET_CELLS=1e6,MAX_SEARCH_MATCHES=1e3;function columns(rows){return rows.reduce((max,row)=>Math.max(max,row.length),0)}function cell(value,locale){return value==null?"":typeof value=="number"?getNumberFormat(locale).format(value):String(value)}class LyraSpreadsheetViewerBase extends LyraElement{}class LyraSpreadsheetViewer extends DocumentAnchorTarget(LyraSpreadsheetViewerBase){constructor(){super(...arguments),this.src="",this.name="",this.maxHeight="",this.anchorKinds=["cell-range"],this.fetchState={kind:"idle"},this.activeSheetIndex=0,this.activeRowKey="",this.searchMatches=[],this.searchMatchCountExact=!0,this.searchActiveIndex=-1,this.searchQuery="",this.lastSearchLocale="",this.pendingSearchResetEvent=!1,this.generation=0,this.loadLibrary=loadSheetJsCached,this.lastLoadSrc="",this.announcements=new ViewerAnnouncementController(this),this.pendingAnimationFrames=new Set,this.onTabsChange=e=>{e.stopPropagation();const match=/^sheet-(\d+)$/.exec(e.detail.name);match&&(this.activeSheetIndex=Number(match[1]))},this.stopInternalEvent=event=>{event.stopPropagation()}}static{this.defaultStrings={...super.defaultStrings,anchorJumped:LYRA_DEFAULT_anchorJumped,anchorJumpedToPage:LYRA_DEFAULT_anchorJumpedToPage,anchorNotFound:LYRA_DEFAULT_anchorNotFound,cellHighlightWithLabel:LYRA_DEFAULT_cellHighlightWithLabel,documentPreviewEmpty:LYRA_DEFAULT_documentPreviewEmpty,documentPreviewFailedToLoad:LYRA_DEFAULT_documentPreviewFailedToLoad,documentPreviewResourceTooLarge:LYRA_DEFAULT_documentPreviewResourceTooLarge,documentPreviewTypeDocument:LYRA_DEFAULT_documentPreviewTypeDocument,documentPreviewUrlNotAllowed:LYRA_DEFAULT_documentPreviewUrlNotAllowed,highlightWithLabel:LYRA_DEFAULT_highlightWithLabel,loadingDocument:LYRA_DEFAULT_loadingDocument,noData:LYRA_DEFAULT_noData,spreadsheetViewerLabel:LYRA_DEFAULT_spreadsheetViewerLabel,spreadsheetViewerUnavailable:LYRA_DEFAULT_spreadsheetViewerUnavailable}}static{this.styles=[LyraElement.styles,styles,viewerLoadingStyles,srOnly]}connectedCallback(){super.connectedCallback(),this.announcements.connect(),this.hasUpdated&&this.src&&this.src===this.lastLoadSrc&&this.scheduleAfterUpdate(()=>{this.load()})}disconnectedCallback(){this.generation++,this.cancelPendingAnimationFrames(),this.fetchState={kind:"idle"},this.searchQuery="",this.searchMatches=[],this.searchMatchCountExact=!0,this.searchActiveIndex=-1,this.activeRowKey="",this.activeSheetIndex=0,this.announcements.disconnect(),super.disconnectedCallback()}adoptedCallback(){super.adoptedCallback(),this.cancelPendingAnimationFrames(),this.announcements.adopted()}waitForOwnerAnimationFrame(){const owner=this.ownerDocument.defaultView;return!owner||!this.isConnected?Promise.resolve(!1):new Promise(resolve=>{const pending={owner,resolve};this.pendingAnimationFrames.add(pending),pending.handle=owner.requestAnimationFrame(()=>{this.pendingAnimationFrames.delete(pending)&&resolve(this.isConnected&&this.ownerDocument.defaultView===owner)})})}cancelPendingAnimationFrames(){const pendingFrames=[...this.pendingAnimationFrames];this.pendingAnimationFrames.clear();for(const pending of pendingFrames)pending.handle!==void 0&&pending.owner.cancelAnimationFrame(pending.handle),pending.resolve(!1)}willUpdate(changed){super.willUpdate(changed),changed.has("src")&&(this.pendingSearchResetEvent||=this.searchQuery!==""||this.searchMatches.length>0||!this.searchMatchCountExact||this.searchActiveIndex!==-1,this.searchQuery="",this.searchMatches=[],this.searchMatchCountExact=!0,this.searchActiveIndex=-1,this.activeRowKey="",this.activeSheetIndex=0)}updated(changed){super.updated(changed),this.announcements.transition("load",this.fetchState.kind,this.fetchState.kind==="error"?this.fetchState.message:this.localize("loadingDocument")),changed.has("src")&&this.scheduleAfterUpdate(()=>{this.load()}),changed.has("src")&&this.pendingSearchResetEvent&&(this.pendingSearchResetEvent=!1,this.emitSearchChange());const locale=this.effectiveLocale;if(locale!==this.lastSearchLocale){const shouldRecompute=!!this.searchQuery;this.lastSearchLocale=locale,shouldRecompute&&this.scheduleAfterUpdate(()=>{this.search(this.searchQuery)},"search")}}async load(){this.lastLoadSrc=this.src;const generation=++this.generation,signal=this.beginAbortableLoad();if(!this.src){this.fetchState={kind:"idle"};return}const fetchTarget=resolveOwnerFetchTarget(this,this.src);if(!fetchTarget){const error=new LyraUserFacingError(this.localize("documentPreviewUrlNotAllowed"));this.fetchState={kind:"error",message:error.message},this.emit("lr-render-error",{error});return}this.fetchState={kind:"loading"};try{const response=await fetchTarget.view.fetch(fetchTarget.url,signal?{signal}:void 0);if(!this.isConnected||generation!==this.generation)return;if(!response.ok)throw new Error(`${response.status} ${response.statusText}`);const library=await this.loadLibrary();if(!this.isConnected||generation!==this.generation)return;if(!library){const error=new LyraUserFacingError(this.localize("spreadsheetViewerUnavailable"));this.fetchState={kind:"error",message:error.message},this.emit("lr-render-error",{error});return}const source=await readResponseArrayBuffer(response);if(!this.isConnected||generation!==this.generation||(await assertXlsxArchiveWithinLimits(source,void 0,void 0,{signal}),!this.isConnected||generation!==this.generation))return;const workbook=library.read(source,{type:"array"});if(!this.isConnected||generation!==this.generation)return;const sheetNames=workbook.SheetNames;if(!Array.isArray(sheetNames)||!sheetNames.every(name=>typeof name=="string"))throw new Error("The xlsx peer returned a malformed workbook.");if(sheetNames.length>MAX_SPREADSHEET_SHEETS)throw new LyraResourceLimitError("The spreadsheet contains too many sheets.");const sheets=[];let totalCells=0;for(const name of sheetNames){const rows=library.utils.sheet_to_json(workbook.Sheets[name],{header:1});if(assertTableSize(rows),totalCells+=rows.reduce((sum,row)=>sum+row.length,0),totalCells>MAX_SPREADSHEET_CELLS)throw new LyraResourceLimitError("The spreadsheet contains too many expanded cells.");sheets.push({name,rows})}this.isConnected&&generation===this.generation&&(this.fetchState={kind:"loaded",sheets},this.searchQuery&&await this.search(this.searchQuery))}catch(error){if(isAbortError(error)||!this.isConnected||generation!==this.generation)return;this.fetchState={kind:"error",message:this.localize(isResourceLimitError(error)?"documentPreviewResourceTooLarge":"documentPreviewFailedToLoad")},this.emit("lr-render-error",{error})}}cellHighlightsForRow(rawRow,currentSheetName){const seen=new Set;return this.highlights.filter(highlight=>seen.has(highlight.id)?!1:(seen.add(highlight.id),!0)).flatMap(highlight=>{if(highlight.anchor.kind!=="cell-range")return[];const parsed=parseCellRange(highlight.anchor.range);if(!parsed)return[];const sheetName=highlight.anchor.sheet??parsed.sheet;return sheetName!==void 0&&sheetName!==currentSheetName?[]:rawRow-1>=parsed.startRow&&rawRow-1<=parsed.endRow?[{highlight,parsed}]:[]})}renderCell(value,colIndex,rowHighlights,role){const text=cell(value,this.effectiveLocale),colHighlights=rowHighlights.filter(entry=>colIndex>=entry.parsed.startCol&&colIndex<=entry.parsed.endCol);if(!colHighlights.length)return html`<div part="cell" role=${role}>${text}</div>`;const active=colHighlights.find(entry=>entry.highlight.id===this.activeHighlightId),primary=active??colHighlights[0],accessibleLabel=primary.highlight.label?this.localize("cellHighlightWithLabel",void 0,{value:text,label:primary.highlight.label}):this.localize("highlightWithLabel",void 0,{label:text});return html`<div
|
|
1
|
+
var __decorate=function(decorators,target,key,desc){var c=arguments.length,r=c<3?target:desc===null?desc=Object.getOwnPropertyDescriptor(target,key):desc,d;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")r=Reflect.decorate(decorators,target,key,desc);else for(var i=decorators.length-1;i>=0;i--)(d=decorators[i])&&(r=(c<3?d(r):c>3?d(target,key,r):d(target,key))||r);return c>3&&r&&Object.defineProperty(target,key,r),r};import{html,nothing}from"lit";import{property,state}from"lit/decorators.js";import{guard}from"lit/directives/guard.js";import{styleMap}from"lit/directives/style-map.js";import{LyraElement}from"../../../internal/lyra-element.js";import{srOnly}from"../../../internal/a11y.js";import{assertTableSize,isAbortError,isResourceLimitError,LyraResourceLimitError,LyraUserFacingError,readResponseArrayBuffer,resolveOwnerFetchTarget}from"../../../internal/resource-loader.js";import{sanitizeCssLength}from"../../../internal/safe-css.js";import{prefersReducedMotion}from"../../../internal/motion.js";import{DocumentAnchorTarget}from"../../../internal/anchor-target.js";import{parseCellRange}from"../../../internal/cell-range.js";import{loadSheetJsCached}from"./spreadsheet-loader.js";import{styles}from"./spreadsheet-viewer.styles.js";import{assertXlsxArchiveWithinLimits}from"./xlsx-resource-guard.js";import{getNumberFormat}from"../../../internal/intl-cache.js";import{ViewerAnnouncementController}from"../viewer-announcements.js";import{viewerSemanticLabel,viewerSemanticRole}from"../viewer-semantic-owner.js";import{renderViewerLoading,viewerLoadingStyles}from"../viewer-loading.js";import{boundedViewerSearchQuery,ViewerSearchWorkBudget}from"../viewer-search-limits.js";import{LYRA_DEFAULT_anchorJumped,LYRA_DEFAULT_anchorJumpedToPage,LYRA_DEFAULT_anchorNotFound,LYRA_DEFAULT_cellHighlightWithLabel,LYRA_DEFAULT_documentPreviewEmpty,LYRA_DEFAULT_documentPreviewFailedToLoad,LYRA_DEFAULT_documentPreviewResourceTooLarge,LYRA_DEFAULT_documentPreviewTypeDocument,LYRA_DEFAULT_documentPreviewUrlNotAllowed,LYRA_DEFAULT_highlightWithLabel,LYRA_DEFAULT_loadingDocument,LYRA_DEFAULT_noData,LYRA_DEFAULT_spreadsheetViewerLabel,LYRA_DEFAULT_spreadsheetViewerUnavailable}from"../../../internal/default-strings.generated.js";const MAX_SPREADSHEET_SHEETS=256,MAX_SPREADSHEET_CELLS=1e6,MAX_SEARCH_MATCHES=1e3;function columns(rows){return rows.reduce((max,row)=>Math.max(max,row.length),0)}function cell(value,locale){return value==null?"":typeof value=="number"?getNumberFormat(locale).format(value):String(value)}class LyraSpreadsheetViewerBase extends LyraElement{}class LyraSpreadsheetViewer extends DocumentAnchorTarget(LyraSpreadsheetViewerBase){constructor(){super(...arguments),this.src="",this.name="",this.maxHeight="",this.anchorKinds=["cell-range"],this.fetchState={kind:"idle"},this.activeSheetIndex=0,this.activeRowKey="",this.searchMatches=[],this.searchMatchCountExact=!0,this.searchActiveIndex=-1,this.searchQuery="",this.lastSearchLocale="",this.pendingSearchResetEvent=!1,this.generation=0,this.loadLibrary=loadSheetJsCached,this.lastLoadSrc="",this.announcements=new ViewerAnnouncementController(this),this.pendingAnimationFrames=new Set,this.virtualListKeyFunction=(_item,bodyIndex)=>bodyIndex,this.onTabsChange=e=>{e.stopPropagation();const match=/^sheet-(\d+)$/.exec(e.detail.name);match&&(this.activeSheetIndex=Number(match[1]))},this.stopInternalEvent=event=>{event.stopPropagation()}}static{this.defaultStrings={...super.defaultStrings,anchorJumped:LYRA_DEFAULT_anchorJumped,anchorJumpedToPage:LYRA_DEFAULT_anchorJumpedToPage,anchorNotFound:LYRA_DEFAULT_anchorNotFound,cellHighlightWithLabel:LYRA_DEFAULT_cellHighlightWithLabel,documentPreviewEmpty:LYRA_DEFAULT_documentPreviewEmpty,documentPreviewFailedToLoad:LYRA_DEFAULT_documentPreviewFailedToLoad,documentPreviewResourceTooLarge:LYRA_DEFAULT_documentPreviewResourceTooLarge,documentPreviewTypeDocument:LYRA_DEFAULT_documentPreviewTypeDocument,documentPreviewUrlNotAllowed:LYRA_DEFAULT_documentPreviewUrlNotAllowed,highlightWithLabel:LYRA_DEFAULT_highlightWithLabel,loadingDocument:LYRA_DEFAULT_loadingDocument,noData:LYRA_DEFAULT_noData,spreadsheetViewerLabel:LYRA_DEFAULT_spreadsheetViewerLabel,spreadsheetViewerUnavailable:LYRA_DEFAULT_spreadsheetViewerUnavailable}}static{this.styles=[LyraElement.styles,styles,viewerLoadingStyles,srOnly]}connectedCallback(){super.connectedCallback(),this.announcements.connect(),this.hasUpdated&&this.src&&this.src===this.lastLoadSrc&&this.scheduleAfterUpdate(()=>{this.load()})}disconnectedCallback(){this.generation++,this.cancelPendingAnimationFrames(),this.fetchState={kind:"idle"},this.searchQuery="",this.searchMatches=[],this.searchMatchCountExact=!0,this.searchActiveIndex=-1,this.activeRowKey="",this.activeSheetIndex=0,this.announcements.disconnect(),super.disconnectedCallback()}adoptedCallback(){super.adoptedCallback(),this.cancelPendingAnimationFrames(),this.announcements.adopted()}waitForOwnerAnimationFrame(){const owner=this.ownerDocument.defaultView;return!owner||!this.isConnected?Promise.resolve(!1):new Promise(resolve=>{const pending={owner,resolve};this.pendingAnimationFrames.add(pending),pending.handle=owner.requestAnimationFrame(()=>{this.pendingAnimationFrames.delete(pending)&&resolve(this.isConnected&&this.ownerDocument.defaultView===owner)})})}cancelPendingAnimationFrames(){const pendingFrames=[...this.pendingAnimationFrames];this.pendingAnimationFrames.clear();for(const pending of pendingFrames)pending.handle!==void 0&&pending.owner.cancelAnimationFrame(pending.handle),pending.resolve(!1)}willUpdate(changed){super.willUpdate(changed),changed.has("src")&&(this.pendingSearchResetEvent||=this.searchQuery!==""||this.searchMatches.length>0||!this.searchMatchCountExact||this.searchActiveIndex!==-1,this.searchQuery="",this.searchMatches=[],this.searchMatchCountExact=!0,this.searchActiveIndex=-1,this.activeRowKey="",this.activeSheetIndex=0)}updated(changed){super.updated(changed),this.announcements.transition("load",this.fetchState.kind,this.fetchState.kind==="error"?this.fetchState.message:this.localize("loadingDocument")),changed.has("src")&&this.scheduleAfterUpdate(()=>{this.load()}),changed.has("src")&&this.pendingSearchResetEvent&&(this.pendingSearchResetEvent=!1,this.emitSearchChange());const locale=this.effectiveLocale;if(locale!==this.lastSearchLocale){const shouldRecompute=!!this.searchQuery;this.lastSearchLocale=locale,shouldRecompute&&this.scheduleAfterUpdate(()=>{this.search(this.searchQuery)},"search")}}async load(){this.lastLoadSrc=this.src;const generation=++this.generation,signal=this.beginAbortableLoad();if(!this.src){this.fetchState={kind:"idle"};return}const fetchTarget=resolveOwnerFetchTarget(this,this.src);if(!fetchTarget){const error=new LyraUserFacingError(this.localize("documentPreviewUrlNotAllowed"));this.fetchState={kind:"error",message:error.message},this.emit("lr-render-error",{error});return}this.fetchState={kind:"loading"};try{const response=await fetchTarget.view.fetch(fetchTarget.url,signal?{signal}:void 0);if(!this.isConnected||generation!==this.generation)return;if(!response.ok)throw new Error(`${response.status} ${response.statusText}`);const library=await this.loadLibrary();if(!this.isConnected||generation!==this.generation)return;if(!library){const error=new LyraUserFacingError(this.localize("spreadsheetViewerUnavailable"));this.fetchState={kind:"error",message:error.message},this.emit("lr-render-error",{error});return}const source=await readResponseArrayBuffer(response);if(!this.isConnected||generation!==this.generation||(await assertXlsxArchiveWithinLimits(source,void 0,void 0,{signal}),!this.isConnected||generation!==this.generation))return;const workbook=library.read(source,{type:"array"});if(!this.isConnected||generation!==this.generation)return;const sheetNames=workbook.SheetNames;if(!Array.isArray(sheetNames)||!sheetNames.every(name=>typeof name=="string"))throw new Error("The xlsx peer returned a malformed workbook.");if(sheetNames.length>MAX_SPREADSHEET_SHEETS)throw new LyraResourceLimitError("The spreadsheet contains too many sheets.");const sheets=[];let totalCells=0;for(const name of sheetNames){const rows=library.utils.sheet_to_json(workbook.Sheets[name],{header:1});if(assertTableSize(rows),totalCells+=rows.reduce((sum,row)=>sum+row.length,0),totalCells>MAX_SPREADSHEET_CELLS)throw new LyraResourceLimitError("The spreadsheet contains too many expanded cells.");sheets.push({name,rows})}this.isConnected&&generation===this.generation&&(this.fetchState={kind:"loaded",sheets},this.searchQuery&&await this.search(this.searchQuery))}catch(error){if(isAbortError(error)||!this.isConnected||generation!==this.generation)return;this.fetchState={kind:"error",message:this.localize(isResourceLimitError(error)?"documentPreviewResourceTooLarge":"documentPreviewFailedToLoad")},this.emit("lr-render-error",{error})}}cellHighlightsForRow(rawRow,currentSheetName){const seen=new Set;return this.highlights.filter(highlight=>seen.has(highlight.id)?!1:(seen.add(highlight.id),!0)).flatMap(highlight=>{if(highlight.anchor.kind!=="cell-range")return[];const parsed=parseCellRange(highlight.anchor.range);if(!parsed)return[];const sheetName=highlight.anchor.sheet??parsed.sheet;return sheetName!==void 0&&sheetName!==currentSheetName?[]:rawRow-1>=parsed.startRow&&rawRow-1<=parsed.endRow?[{highlight,parsed}]:[]})}renderCell(value,colIndex,rowHighlights,role){const text=cell(value,this.effectiveLocale),colHighlights=rowHighlights.filter(entry=>colIndex>=entry.parsed.startCol&&colIndex<=entry.parsed.endCol);if(!colHighlights.length)return html`<div part="cell" role=${role}>${text}</div>`;const active=colHighlights.find(entry=>entry.highlight.id===this.activeHighlightId),primary=active??colHighlights[0],accessibleLabel=primary.highlight.label?this.localize("cellHighlightWithLabel",void 0,{value:text,label:primary.highlight.label}):this.localize("highlightWithLabel",void 0,{label:text});return html`<div
|
|
2
2
|
part="cell cell-highlight"
|
|
3
3
|
role=${role}
|
|
4
4
|
?data-active=${!!active}
|
|
@@ -30,9 +30,9 @@ var __decorate=function(decorators,target,key,desc){var c=arguments.length,r=c<3
|
|
|
30
30
|
part="rows"
|
|
31
31
|
exportparts="data-row:data-row, cell:cell, cell-highlight:cell-highlight, cell-highlight-action:cell-highlight-action"
|
|
32
32
|
data-sheet-index=${index}
|
|
33
|
-
.items=${body}
|
|
33
|
+
.items=${guard([sheet.rows],()=>body)}
|
|
34
34
|
.renderItem=${(row,bodyIndex)=>this.renderRow(row,count,"data-row",bodyIndex+2,sheet.name)}
|
|
35
|
-
.keyFunction=${
|
|
35
|
+
.keyFunction=${this.virtualListKeyFunction}
|
|
36
36
|
.activeItemId=${index===this.activeSheetIndex?this.activeRowKey:""}
|
|
37
37
|
item-role="row"
|
|
38
38
|
row-index-offset="1"
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{css}from"lit";const styles=css`:host{min-inline-size:0;display:block}[part=base]{max-block-size:var(--lr-xml-viewer-max-height,none);border:var(--lr-border-width-thin) solid var(--lr-color-border);border-radius:var(--lr-radius);background:var(--lr-color-surface);font-family:var(--lr-font-mono);font-size:var(--lr-font-size-sm);flex-direction:column;display:flex;overflow:auto}[part=toolbar]{padding:var(--lr-space-xs) var(--lr-space-s);border-block-end:var(--lr-border-width-thin) solid var(--lr-color-border);background:var(--lr-color-surface);justify-content:flex-end;display:flex}[part=tree]{padding:var(--lr-space-xs)}.row{align-items:baseline;gap:var(--lr-space-2xs);padding-block:var(--lr-size-0-125rem);border-radius:var(--lr-radius);flex-wrap:wrap;min-inline-size:0;display:flex}[part=node][data-match]{outline:var(--lr-border-width-thin) dashed var(--lr-xml-viewer-match-color,var(--lr-color-warning))}[part=node][data-active-match]{outline:var(--lr-border-width-medium) solid var(--lr-xml-viewer-active-match-color,var(--lr-color-warning))}[part=node][data-highlight]{--_lr-xml-viewer-highlight-background:var(--lr-xml-viewer-highlight-accent-background,var(--lr-color-brand-quiet));background:var(--_lr-xml-viewer-highlight-background)}[part=node][data-highlight=success]{--_lr-xml-viewer-highlight-background:var(--lr-xml-viewer-highlight-success-background,var(--lr-color-success-quiet))}[part=node][data-highlight=warning]{--_lr-xml-viewer-highlight-background:var(--lr-xml-viewer-highlight-warning-background,var(--lr-color-warning-quiet))}[part=node][data-highlight=danger]{--_lr-xml-viewer-highlight-background:var(--lr-xml-viewer-highlight-danger-background,var(--lr-color-danger-quiet))}[part=node][data-highlight=neutral]{--_lr-xml-viewer-highlight-background:var(--lr-xml-viewer-highlight-neutral-background,var(--lr-color-surface-raised))}[part=node][data-active-highlight]{outline:var(--lr-border-width-medium) solid var(--lr-xml-viewer-highlight-active-outline,var(--lr-color-brand));outline-offset:var(--lr-focus-ring-offset)}[part=highlight-action]{min-inline-size:var(--lr-icon-button-size);min-block-size:var(--lr-icon-button-size);border:var(--lr-border-width-thin) solid var(--lr-color-border);border-radius:var(--lr-radius);background:var(--lr-color-surface);color:var(--lr-color-text);cursor:pointer;font:inherit;font-size:var(--lr-font-size-xs);padding:var(--lr-size-0-125rem) var(--lr-space-xs);margin-inline-start:var(--lr-space-xs)}[part=highlight-action]:hover{background:var(--_lr-xml-viewer-highlight-background)}[part=highlight-action]:active{background:color-mix(in oklab, var(--_lr-xml-viewer-highlight-background), var(--lr-color-mix-partner) var(--lr-color-mix-active))}[part=highlight-action]:focus-visible{outline:var(--lr-focus-ring);outline-offset:var(--lr-focus-ring-offset)}[part=attribute][data-active]{outline:var(--lr-border-width-medium) solid var(--lr-xml-viewer-active-attribute-color,var(--lr-color-brand));border-radius:var(--lr-size-0-1875rem)}[part=tag]{color:var(--lr-color-brand);font-weight:var(--lr-font-weight-semibold)}[part=attribute-name]{color:var(--lr-color-chart-1)}[part=attribute-value]{color:var(--lr-color-success);overflow-wrap:anywhere}[part=tag][data-match],[part=attribute-value][data-match]{background:var(--lr-xml-viewer-match-bg,var(--lr-color-warning-quiet));border-radius:var(--lr-size-0-1875rem)}[part=text]{color:var(--lr-color-text);overflow-wrap:anywhere;white-space:pre-wrap}[part=text][data-match]{background:color-mix(in srgb, var(--lr-xml-viewer-match-color,var(--lr-color-warning)) 30%, transparent);border-radius:var(--lr-size-0-1875rem)}[part=comment],[part=cdata],[part=pi]{color:var(--lr-color-text-quiet);overflow-wrap:anywhere;white-space:pre-wrap;font-style:italic}.preview{color:var(--lr-color-text-quiet);margin-inline:var(--lr-space-xs);font-style:italic}[part=toggle],[part=toggle-placeholder]{inline-size:var(--lr-size-1-25rem);block-size:var(--lr-size-1-25rem);min-inline-size:var(--lr-icon-button-size);min-block-size:var(--lr-icon-button-size);color:var(--lr-color-text-quiet);border-radius:var(--lr-radius);background:0 0;border:none;flex:none;justify-content:center;align-items:center;padding:0;display:inline-flex}[part=toggle]{cursor:pointer}[part=toggle] .chevron{transition:transform var(--lr-transition-fast);display:inline-flex;transform:rotate(0)}[part=toggle][aria-expanded=true] .chevron{transform:rotate(90deg)}:host(:dir(rtl)) [part=toggle][aria-expanded=false] .chevron{transform:rotate(180deg)}[part=toggle]:hover{background:var(--lr-color-brand-quiet);color:var(--lr-color-brand)}[part=toggle]:active{background:color-mix(in oklab, var(--lr-color-brand-quiet), var(--lr-color-mix-partner) var(--lr-color-mix-active));color:var(--lr-color-brand)}[part=toggle]:focus-visible,[part=copy-button]:focus-visible{outline:var(--lr-focus-ring);outline-offset:var(--lr-focus-ring-offset)}[part=copy-button]{border:var(--lr-border-width-thin) solid var(--lr-color-border);border-radius:var(--lr-radius);background:var(--lr-color-surface);color:var(--lr-color-text-quiet);cursor:pointer;font:inherit;font-size:var(--lr-font-size-xs);padding:var(--lr-size-0-125rem) var(--lr-space-xs)}[part=copy-button]:hover{background:var(--lr-color-brand-quiet);color:var(--lr-color-brand)}[part=copy-button]:active{background:color-mix(in oklab, var(--lr-color-brand-quiet), var(--lr-color-mix-partner) var(--lr-color-mix-active));color:var(--lr-color-brand)}.row [part=copy-button]{opacity:0;margin-inline-start:auto}.row:hover [part=copy-button],.row:focus-within [part=copy-button]{opacity:1}[part=error]{color:var(--lr-color-danger);padding:var(--lr-space-l);text-align:center}.empty-note{padding:var(--lr-space-l);color:var(--lr-color-text-quiet);text-align:center;margin:0}[part=spinner]{padding:var(--lr-space-l);text-align:center;color:var(--lr-color-text-quiet)}@media (prefers-reduced-motion:reduce){[part=toggle] .chevron{transition:none!important}}`;export{styles};
|
|
1
|
+
import{css}from"lit";const styles=css`:host{min-inline-size:0;display:block}[part=base]{max-block-size:var(--lr-xml-viewer-max-height,none);border:var(--lr-border-width-thin) solid var(--lr-color-border);border-radius:var(--lr-radius);background:var(--lr-color-surface);font-family:var(--lr-font-mono);font-size:var(--lr-font-size-sm);flex-direction:column;display:flex;overflow:auto}[part=toolbar]{padding:var(--lr-space-xs) var(--lr-space-s);border-block-end:var(--lr-border-width-thin) solid var(--lr-color-border);background:var(--lr-color-surface);justify-content:flex-end;display:flex}[part=tree]{padding:var(--lr-space-xs)}.row{align-items:baseline;gap:var(--lr-space-2xs);padding-block:var(--lr-size-0-125rem);border-radius:var(--lr-radius);flex-wrap:wrap;min-inline-size:0;display:flex}[part=node][data-match]{outline:var(--lr-border-width-thin) dashed var(--lr-xml-viewer-match-color,var(--lr-color-warning))}[part=node][data-active-match]{outline:var(--lr-border-width-medium) solid var(--lr-xml-viewer-active-match-color,var(--lr-color-warning))}[part=node][data-highlight]{--_lr-xml-viewer-highlight-background:var(--lr-xml-viewer-highlight-accent-background,var(--lr-color-brand-quiet));background:var(--_lr-xml-viewer-highlight-background)}[part=node][data-highlight=success]{--_lr-xml-viewer-highlight-background:var(--lr-xml-viewer-highlight-success-background,var(--lr-color-success-quiet))}[part=node][data-highlight=warning]{--_lr-xml-viewer-highlight-background:var(--lr-xml-viewer-highlight-warning-background,var(--lr-color-warning-quiet))}[part=node][data-highlight=danger]{--_lr-xml-viewer-highlight-background:var(--lr-xml-viewer-highlight-danger-background,var(--lr-color-danger-quiet))}[part=node][data-highlight=neutral]{--_lr-xml-viewer-highlight-background:var(--lr-xml-viewer-highlight-neutral-background,var(--lr-color-surface-raised))}[part=node][data-active-highlight]{outline:var(--lr-border-width-medium) solid var(--lr-xml-viewer-highlight-active-outline,var(--lr-color-brand));outline-offset:var(--lr-focus-ring-offset)}[part=highlight-action]{min-inline-size:var(--lr-icon-button-size);min-block-size:var(--lr-icon-button-size);border:var(--lr-border-width-thin) solid var(--lr-color-border);border-radius:var(--lr-radius);background:var(--lr-color-surface);color:var(--lr-color-text);cursor:pointer;font:inherit;font-size:var(--lr-font-size-xs);padding:var(--lr-size-0-125rem) var(--lr-space-xs);margin-inline-start:var(--lr-space-xs)}[part=highlight-action]:hover{background:var(--_lr-xml-viewer-highlight-background)}[part=highlight-action]:active{background:color-mix(in oklab, var(--_lr-xml-viewer-highlight-background), var(--lr-color-mix-partner) var(--lr-color-mix-active))}[part=highlight-action]:focus-visible{outline:var(--lr-focus-ring);outline-offset:var(--lr-focus-ring-offset)}[part=attribute][data-active]{outline:var(--lr-border-width-medium) solid var(--lr-xml-viewer-active-attribute-color,var(--lr-color-brand));border-radius:var(--lr-size-0-1875rem)}[part=tag]{color:var(--lr-color-brand);font-weight:var(--lr-font-weight-semibold)}[part=attribute-name]{color:var(--lr-color-chart-1)}[part=attribute-value]{color:var(--lr-color-success);overflow-wrap:anywhere}[part=tag][data-match],[part=attribute-value][data-match]{background:var(--lr-xml-viewer-match-bg,var(--lr-color-warning-quiet));border-radius:var(--lr-size-0-1875rem)}[part=text]{color:var(--lr-color-text);overflow-wrap:anywhere;white-space:pre-wrap}[part=text][data-match]{background:color-mix(in srgb, var(--lr-xml-viewer-match-color,var(--lr-color-warning)) 30%, transparent);border-radius:var(--lr-size-0-1875rem)}[part=comment],[part=cdata],[part=pi]{color:var(--lr-color-text-quiet);overflow-wrap:anywhere;white-space:pre-wrap;font-style:italic}.preview{color:var(--lr-color-text-quiet);margin-inline:var(--lr-space-xs);font-style:italic}[part=toggle],[part=toggle-placeholder]{inline-size:var(--lr-size-1-25rem);block-size:var(--lr-size-1-25rem);min-inline-size:var(--lr-icon-button-size);min-block-size:var(--lr-icon-button-size);color:var(--lr-color-text-quiet);border-radius:var(--lr-radius);background:0 0;border:none;flex:none;justify-content:center;align-items:center;padding:0;display:inline-flex}[part=toggle]{cursor:pointer}[part=toggle] .chevron{transition:transform var(--lr-transition-fast);display:inline-flex;transform:rotate(0)}[part=toggle][aria-expanded=true] .chevron{transform:rotate(90deg)}:host(:dir(rtl)) [part=toggle][aria-expanded=false] .chevron{transform:rotate(180deg)}[part=toggle]:hover{background:var(--lr-color-brand-quiet);color:var(--lr-color-brand)}[part=toggle]:active{background:color-mix(in oklab, var(--lr-color-brand-quiet), var(--lr-color-mix-partner) var(--lr-color-mix-active));color:var(--lr-color-brand)}[part=toggle]:focus-visible,[part=copy-button]:focus-visible{outline:var(--lr-focus-ring);outline-offset:var(--lr-focus-ring-offset)}[part=copy-button]{border:var(--lr-border-width-thin) solid var(--lr-color-border);border-radius:var(--lr-radius);background:var(--lr-color-surface);color:var(--lr-color-text-quiet);cursor:pointer;font:inherit;font-size:var(--lr-font-size-xs);padding:var(--lr-size-0-125rem) var(--lr-space-xs)}[part=copy-button]:hover{background:var(--lr-color-brand-quiet);color:var(--lr-color-brand)}[part=copy-button]:active{background:color-mix(in oklab, var(--lr-color-brand-quiet), var(--lr-color-mix-partner) var(--lr-color-mix-active));color:var(--lr-color-brand)}.row [part=copy-button]{opacity:0;margin-inline-start:auto}.row:hover [part=copy-button],.row:focus-within [part=copy-button]{opacity:1}@media (hover:none),(pointer:coarse){.row [part=copy-button]{opacity:1}}[part=error]{color:var(--lr-color-danger);padding:var(--lr-space-l);text-align:center}.empty-note{padding:var(--lr-space-l);color:var(--lr-color-text-quiet);text-align:center;margin:0}[part=spinner]{padding:var(--lr-space-l);text-align:center;color:var(--lr-color-text-quiet)}@media (prefers-reduced-motion:reduce){[part=toggle] .chevron{transition:none!important}}`;export{styles};
|