@aceshooting/lyra-ui 13.0.0 → 14.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 +212 -0
- package/custom-elements.json +1 -1
- package/dist/cli/migration-contract.json +1 -1
- package/dist/components/agent-tools/activity-feed/activity-feed.class.d.ts +23 -15
- package/dist/components/agent-tools/activity-feed/activity-feed.class.js +9 -6
- package/dist/components/agent-tools/agent-trace/agent-trace.class.d.ts +12 -3
- package/dist/components/agent-tools/agent-trace/agent-trace.class.js +2 -1
- package/dist/components/agent-tools/approval-queue/approval-queue.class.d.ts +4 -2
- package/dist/components/agent-tools/approval-queue/approval-queue.class.js +1 -1
- package/dist/components/agent-tools/artifact-panel/artifact-panel.styles.js +1 -1
- package/dist/components/agent-tools/prompt-studio/prompt-studio.class.d.ts +1 -1
- package/dist/components/agent-tools/prompt-studio/prompt-studio.class.js +7 -7
- package/dist/components/agent-tools/schema-viewer/schema-viewer.class.d.ts +5 -5
- package/dist/components/agent-tools/schema-viewer/schema-viewer.class.js +23 -10
- package/dist/components/agent-tools/span-waterfall/span-waterfall.class.d.ts +13 -6
- package/dist/components/agent-tools/span-waterfall/span-waterfall.class.js +3 -3
- package/dist/components/agent-tools/span-waterfall/span-waterfall.styles.js +1 -1
- package/dist/components/agent-tools/stack-trace/stack-trace-parse.js +3 -3
- package/dist/components/agent-tools/subagent-panel/subagent-panel.class.js +1 -1
- 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 +1 -2
- package/dist/components/agent-tools/task-list/task-list.class.js +2 -2
- package/dist/components/agent-tools/terminal/terminal.class.d.ts +10 -1
- package/dist/components/agent-tools/terminal/terminal.class.js +3 -3
- package/dist/components/agent-tools/terminal/terminal.styles.js +1 -1
- package/dist/components/agent-tools/test-results/test-results.class.d.ts +4 -2
- package/dist/components/agent-tools/test-results/test-results.class.js +2 -2
- package/dist/components/agent-tools/thinking-panel/thinking-panel.class.d.ts +2 -0
- package/dist/components/agent-tools/thinking-panel/thinking-panel.styles.js +1 -1
- package/dist/components/agent-tools/tool-approval-dialog/tool-approval-dialog.class.js +1 -1
- package/dist/components/agent-tools/tool-call-chip/tool-call-chip.class.js +1 -1
- package/dist/components/agent-tools/tool-param-form/tool-param-form.class.js +3 -2
- 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-result-dialog/tool-result-dialog.styles.js +1 -1
- package/dist/components/agent-tools/tool-result-view/registry.d.ts +2 -1
- package/dist/components/agent-tools/tool-result-view/tool-result-view.class.d.ts +1 -1
- package/dist/components/agent-tools/tool-result-view/tool-result-view.class.js +1 -1
- package/dist/components/agent-tools/tool-select-dialog/tool-select-dialog.class.d.ts +18 -12
- package/dist/components/agent-tools/tool-select-dialog/tool-select-dialog.class.js +6 -6
- package/dist/components/agent-tools/tool-timeline/tool-timeline.class.d.ts +9 -3
- package/dist/components/agent-tools/tool-timeline/tool-timeline.class.js +1 -1
- package/dist/components/agent-tools/trace-tree/span.js +1 -1
- package/dist/components/agent-tools/trace-tree/trace-tree.styles.js +1 -1
- package/dist/components/charts/chart/box-plot.class.d.ts +10 -3
- package/dist/components/charts/chart/box-plot.class.js +9 -9
- package/dist/components/charts/chart/box-plot.styles.js +1 -1
- package/dist/components/charts/chart/chart-core-loader.js +1 -1
- package/dist/components/charts/chart/chart-feature-loader.js +1 -1
- package/dist/components/charts/chart/chart-preload.d.ts +1 -1
- package/dist/components/charts/chart/chart-preload.js +1 -1
- package/dist/components/charts/chart/chart.class.d.ts +27 -9
- package/dist/components/charts/chart/chart.class.js +23 -14
- package/dist/components/charts/chart/chart.styles.js +1 -1
- package/dist/components/charts/chart/histogram-bin.js +1 -1
- package/dist/components/charts/chart/lite-chart.class.js +7 -3
- package/dist/components/charts/chart/lite-chart.styles.js +1 -1
- package/dist/components/conversation/agent-workspace/agent-workspace.class.d.ts +1 -1
- package/dist/components/conversation/agent-workspace/agent-workspace.class.js +2 -2
- package/dist/components/conversation/audio-visualizer/audio-visualizer.class.d.ts +10 -5
- package/dist/components/conversation/audio-visualizer/audio-visualizer.class.js +1 -1
- package/dist/components/conversation/branch-picker/branch-picker.class.d.ts +4 -2
- package/dist/components/conversation/branch-picker/branch-picker.class.js +1 -1
- package/dist/components/conversation/branch-picker/branch-picker.styles.js +1 -1
- package/dist/components/conversation/chat-composer/chat-composer.class.d.ts +6 -2
- package/dist/components/conversation/chat-composer/chat-composer.class.js +3 -3
- package/dist/components/conversation/chat-composer/chat-composer.styles.js +1 -1
- package/dist/components/conversation/chat-message/chat-message.class.js +2 -2
- package/dist/components/conversation/chat-message/chat-message.styles.js +1 -1
- package/dist/components/conversation/chat-viewport/chat-viewport.styles.js +1 -1
- package/dist/components/conversation/code-block/code-block-shared.js +1 -1
- package/dist/components/conversation/code-block/code-block.styles.js +1 -1
- package/dist/components/conversation/code-block/code-loader.d.ts +1 -1
- package/dist/components/conversation/code-block/code-loader.js +1 -1
- package/dist/components/conversation/code-block/shiki-types.js +1 -1
- package/dist/components/conversation/conversation-item/conversation-item.styles.js +1 -1
- package/dist/components/conversation/generation-metrics/generation-metrics.styles.js +1 -1
- package/dist/components/conversation/markdown/katex-loader.d.ts +4 -4
- package/dist/components/conversation/markdown/katex-loader.js +1 -1
- package/dist/components/conversation/markdown/markdown-base.class.js +1 -1
- package/dist/components/conversation/markdown/markdown-loader.d.ts +1 -1
- package/dist/components/conversation/markdown/markdown-loader.js +1 -1
- package/dist/components/conversation/markdown/markdown-shared.d.ts +6 -1
- package/dist/components/conversation/markdown/markdown-shared.js +5 -4
- package/dist/components/conversation/message-actions/message-actions.class.d.ts +16 -3
- package/dist/components/conversation/message-actions/message-actions.class.js +2 -2
- package/dist/components/conversation/message-actions/message-actions.styles.js +1 -1
- package/dist/components/conversation/message-actions/toolbar-actions.d.ts +3 -1
- package/dist/components/conversation/message-actions/toolbar-actions.js +1 -1
- package/dist/components/conversation/message-feedback/message-feedback.class.d.ts +38 -15
- package/dist/components/conversation/message-feedback/message-feedback.class.js +7 -3
- package/dist/components/conversation/message-feedback/message-feedback.styles.js +1 -1
- package/dist/components/conversation/message-parts/message-parts.class.d.ts +7 -4
- package/dist/components/conversation/message-parts/message-parts.class.js +2 -2
- package/dist/components/conversation/message-parts/message-parts.styles.js +1 -1
- package/dist/components/conversation/model-select/model-select.class.d.ts +5 -2
- package/dist/components/conversation/model-select/model-select.class.js +5 -2
- package/dist/components/conversation/model-settings-panel/model-settings-panel.class.d.ts +3 -5
- package/dist/components/conversation/model-settings-panel/model-settings-panel.class.js +2 -1
- package/dist/components/conversation/prompt-input/prompt-input.class.d.ts +9 -2
- package/dist/components/conversation/prompt-input/prompt-input.class.js +3 -3
- package/dist/components/conversation/prompt-input/prompt-input.styles.js +1 -1
- package/dist/components/conversation/prompt-queue/prompt-queue.class.d.ts +20 -4
- package/dist/components/conversation/prompt-queue/prompt-queue.class.js +1 -1
- package/dist/components/conversation/prompt-queue/prompt-queue.styles.js +1 -1
- package/dist/components/conversation/push-to-talk/push-to-talk.class.d.ts +17 -8
- package/dist/components/conversation/push-to-talk/push-to-talk.class.js +1 -1
- package/dist/components/conversation/push-to-talk/push-to-talk.styles.js +1 -1
- package/dist/components/conversation/selection-toolbar/selection-toolbar.class.d.ts +6 -3
- package/dist/components/conversation/selection-toolbar/selection-toolbar.class.js +1 -1
- package/dist/components/conversation/selection-toolbar/selection-toolbar.styles.js +1 -1
- package/dist/components/conversation/thread-list/thread-list.class.d.ts +14 -4
- package/dist/components/conversation/thread-list/thread-list.class.js +11 -11
- package/dist/components/conversation/thread-list/thread-list.styles.js +1 -1
- package/dist/components/conversation/transcript-feed/transcript-feed.styles.js +1 -1
- package/dist/components/conversation/voice-picker/voice-picker.class.d.ts +12 -4
- package/dist/components/conversation/voice-picker/voice-picker.class.js +5 -2
- package/dist/components/conversation/voice-picker/voice-picker.styles.js +1 -1
- package/dist/components/data/calendar/calendar.class.d.ts +12 -4
- package/dist/components/data/calendar/calendar.class.js +2 -2
- package/dist/components/data/calendar/calendar.styles.js +1 -1
- package/dist/components/data/context-meter/context-meter.class.d.ts +3 -1
- package/dist/components/data/context-meter/context-meter.class.js +3 -3
- package/dist/components/data/data-grid/data-grid.class.d.ts +45 -4
- package/dist/components/data/data-grid/data-grid.class.js +25 -11
- package/dist/components/data/data-grid/data-grid.styles.js +1 -1
- package/dist/components/data/document-library/document-library.class.js +1 -1
- package/dist/components/data/env-list/env-list.class.js +1 -1
- package/dist/components/data/flow-canvas/flow-canvas.class.d.ts +19 -12
- package/dist/components/data/flow-canvas/flow-canvas.class.js +1 -2
- package/dist/components/data/flow-controls/flow-controls.styles.js +1 -1
- package/dist/components/data/flow-run-status/flow-run-status.class.js +1 -1
- package/dist/components/data/gauge/gauge.class.js +1 -1
- package/dist/components/data/graph-query-builder/graph-query-builder.styles.js +1 -1
- package/dist/components/data/heatmap/heatmap.class.js +1 -1
- package/dist/components/data/sequence-strip/sequence-strip.class.js +1 -1
- package/dist/components/data/stat/stat.class.js +1 -1
- package/dist/components/data/table/table.class.d.ts +10 -14
- package/dist/components/data/table/table.class.js +4 -3
- package/dist/components/data/table/table.styles.js +1 -1
- package/dist/components/data/timeline/timeline.class.js +1 -1
- package/dist/components/data/tree/tree-item.styles.js +1 -1
- package/dist/components/data/word-cloud/word-cloud.class.js +1 -1
- package/dist/components/forms/checkbox-group/checkbox-group.class.d.ts +7 -2
- package/dist/components/forms/checkbox-group/checkbox-group.class.js +1 -1
- package/dist/components/forms/code-editor/code-editor.class.d.ts +8 -4
- package/dist/components/forms/code-editor/code-editor.class.js +16 -5
- package/dist/components/forms/code-editor/code-editor.styles.js +1 -1
- package/dist/components/forms/color-picker/color-picker.class.d.ts +1 -1
- package/dist/components/forms/color-picker/color-picker.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 +9 -2
- package/dist/components/forms/date-picker/date-picker.class.js +4 -4
- package/dist/components/forms/date-picker/date-picker.styles.js +1 -1
- package/dist/components/forms/emoji-picker/emoji-data-loader.js +1 -1
- package/dist/components/forms/emoji-picker/emoji-picker.class.js +1 -1
- package/dist/components/forms/input/input.class.d.ts +11 -4
- package/dist/components/forms/input/input.class.js +7 -1
- package/dist/components/forms/input/time-input.class.d.ts +8 -2
- package/dist/components/forms/input/time-input.class.js +1 -1
- package/dist/components/forms/locale-picker/locale-picker.class.d.ts +17 -3
- package/dist/components/forms/locale-picker/locale-picker.class.js +1 -1
- package/dist/components/forms/locale-picker/locale-picker.styles.js +1 -1
- package/dist/components/forms/rubric-form/rubric-form.class.js +1 -1
- package/dist/components/forms/select/select.styles.js +1 -1
- package/dist/components/forms/slider/slider.class.js +1 -1
- package/dist/components/forms/swatch-picker/swatch-picker.class.js +1 -1
- package/dist/components/forms/token-input/token-input.class.js +1 -1
- package/dist/components/forms/token-input/token-input.styles.js +1 -1
- package/dist/components/layout/app-rail/app-rail.class.d.ts +6 -4
- package/dist/components/layout/app-rail/app-rail.class.js +4 -3
- package/dist/components/layout/app-rail/app-rail.styles.js +1 -1
- package/dist/components/layout/command-palette/command-palette.class.d.ts +2 -2
- package/dist/components/layout/command-palette/command-palette.class.js +1 -1
- package/dist/components/layout/command-palette/command-palette.styles.js +1 -1
- package/dist/components/layout/dashboard-grid/dashboard-grid.class.js +1 -1
- package/dist/components/layout/details/details.class.d.ts +13 -12
- package/dist/components/layout/details/details.class.js +43 -34
- package/dist/components/layout/details/details.styles.js +1 -1
- package/dist/components/layout/dock-panel/dock-panel.class.d.ts +4 -3
- package/dist/components/layout/dock-panel/dock-panel.class.js +2 -1
- package/dist/components/layout/filter-bar/filter-bar.class.js +2 -2
- package/dist/components/layout/menu/menu-item.class.js +2 -2
- package/dist/components/layout/menu/menu.class.js +1 -1
- package/dist/components/layout/multi-split/multi-split.class.d.ts +10 -5
- package/dist/components/layout/multi-split/multi-split.class.js +2 -1
- package/dist/components/layout/scroller/scroller.class.d.ts +4 -4
- package/dist/components/layout/scroller/scroller.styles.js +1 -1
- package/dist/components/layout/split-panel/split-panel.class.d.ts +3 -2
- package/dist/components/layout/split-panel/split-panel.class.js +3 -2
- package/dist/components/layout/tab-group/tab-group.styles.js +1 -1
- package/dist/components/layout/virtual-list/virtual-list.class.js +2 -2
- package/dist/components/layout/widget/widget.styles.js +1 -1
- package/dist/components/media/file-input/file-input.styles.js +1 -1
- package/dist/components/media/flag/flag.class.js +1 -1
- package/dist/components/media/lightbox/lightbox.styles.js +1 -1
- package/dist/components/media/map/map-loader.js +1 -1
- package/dist/components/media/map/map.class.d.ts +17 -31
- package/dist/components/media/map/map.class.js +1 -1
- package/dist/components/media/qr-code/qr-code-loader.js +1 -1
- package/dist/components/media/qr-code/qr-code.class.d.ts +5 -2
- package/dist/components/media/qr-code/qr-code.class.js +2 -2
- package/dist/components/media/sequence-playback/sequence-playback.class.d.ts +2 -2
- package/dist/components/media/sequence-playback/sequence-playback.class.js +1 -1
- package/dist/components/overlays/alert/alert.styles.js +1 -1
- package/dist/components/overlays/callout/callout.styles.js +1 -1
- package/dist/components/overlays/dialog/dialog.styles.js +1 -1
- package/dist/components/overlays/kbd/kbd.class.js +1 -1
- package/dist/components/overlays/overlay/popover.class.js +1 -1
- package/dist/components/overlays/overlay/tooltip.class.js +1 -1
- package/dist/components/overlays/rating/rating.class.js +1 -1
- package/dist/components/overlays/toast/toast-item.class.js +1 -1
- package/dist/components/retrieval/claim-evidence/claim-evidence.class.d.ts +11 -5
- package/dist/components/retrieval/claim-evidence/claim-evidence.class.js +3 -3
- package/dist/components/retrieval/graph/graph-loader.js +1 -1
- package/dist/components/retrieval/graph/graph.class.d.ts +1 -1
- package/dist/components/retrieval/graph/graph.class.js +10 -10
- package/dist/components/retrieval/graph-legend/graph-legend.class.d.ts +4 -2
- package/dist/components/retrieval/graph-legend/graph-legend.class.js +1 -1
- package/dist/components/retrieval/grounding-summary/grounding-summary.class.d.ts +14 -6
- package/dist/components/retrieval/grounding-summary/grounding-summary.class.js +7 -5
- package/dist/components/retrieval/knowledge-base/knowledge-base.class.d.ts +3 -2
- package/dist/components/retrieval/knowledge-base/knowledge-base.class.js +4 -3
- package/dist/components/retrieval/knowledge-base/knowledge-base.styles.js +1 -1
- package/dist/components/retrieval/knowledge-graph-explorer/knowledge-graph-explorer.class.d.ts +4 -1
- package/dist/components/retrieval/knowledge-graph-explorer/knowledge-graph-explorer.class.js +2 -1
- package/dist/components/retrieval/knowledge-graph-explorer/knowledge-graph-explorer.styles.js +1 -1
- package/dist/components/retrieval/memory-panel/memory-panel.class.d.ts +15 -6
- package/dist/components/retrieval/memory-panel/memory-panel.class.js +1 -1
- package/dist/components/retrieval/neighbor-list/neighbor-list.class.js +1 -1
- package/dist/components/retrieval/neighbor-list/neighbor-list.styles.js +1 -1
- package/dist/components/retrieval/node-palette/node-palette.class.d.ts +17 -12
- package/dist/components/retrieval/node-palette/node-palette.class.js +2 -2
- package/dist/components/retrieval/node-palette/node-palette.styles.js +1 -1
- package/dist/components/retrieval/path-strip/path-strip.class.js +1 -1
- package/dist/components/retrieval/retrieval-results/retrieval-results.class.d.ts +1 -1
- package/dist/components/retrieval/retrieval-results/retrieval-results.class.js +5 -5
- package/dist/components/retrieval/retrieval-trace/retrieval-trace.class.js +1 -1
- package/dist/components/retrieval/source-picker/source-picker.class.js +1 -1
- package/dist/components/utility/copy-button/copy-button.class.d.ts +2 -1
- package/dist/components/utility/copy-button/copy-button.class.js +1 -1
- package/dist/components/utility/diff-view/diff-view.class.d.ts +4 -1
- package/dist/components/utility/diff-view/diff-view.class.js +1 -1
- package/dist/components/utility/export-button/export-button.class.d.ts +2 -2
- package/dist/components/utility/export-button/export-button.class.js +1 -1
- package/dist/components/utility/export-button/export-button.styles.js +1 -1
- package/dist/components/utility/format/format-date.class.js +1 -1
- package/dist/components/utility/format/relative-time.class.js +1 -1
- package/dist/components/utility/icon/dompurify-loader.js +1 -1
- package/dist/components/utility/icon/icon-library.js +1 -1
- package/dist/components/utility/intersection-observer/intersection-observer.class.js +1 -1
- package/dist/components/utility/json-viewer/json-viewer.class.d.ts +3 -1
- package/dist/components/utility/json-viewer/json-viewer.class.js +5 -5
- package/dist/components/utility/known-date/known-date.class.js +1 -1
- package/dist/components/utility/mention-popover/mention-popover.class.d.ts +29 -44
- package/dist/components/utility/mention-popover/mention-popover.class.js +1 -1
- package/dist/components/utility/mutation-observer/mutation-observer.class.js +1 -1
- package/dist/components/viewers/calendar-viewer/calendar-loader.js +1 -1
- package/dist/components/viewers/document-compare/document-compare.class.d.ts +11 -8
- package/dist/components/viewers/document-compare/document-compare.class.js +2 -2
- package/dist/components/viewers/document-preview/document-preview.class.d.ts +4 -2
- package/dist/components/viewers/document-preview/document-preview.class.js +4 -4
- package/dist/components/viewers/document-preview/document-preview.styles.js +1 -1
- package/dist/components/viewers/document-viewer/document-viewer.class.d.ts +2 -0
- package/dist/components/viewers/document-viewer/document-viewer.styles.js +1 -1
- package/dist/components/viewers/docx-viewer/docx-loader.js +1 -1
- package/dist/components/viewers/docx-viewer/docx-viewer.class.js +1 -1
- package/dist/components/viewers/ebook-viewer/ebook-loader.d.ts +1 -1
- package/dist/components/viewers/ebook-viewer/ebook-viewer.class.d.ts +2 -2
- package/dist/components/viewers/ebook-viewer/ebook-viewer.class.js +1 -1
- package/dist/components/viewers/email-viewer/email-loader.js +1 -1
- package/dist/components/viewers/email-viewer/email-viewer.class.d.ts +1 -1
- package/dist/components/viewers/email-viewer/email-viewer.class.js +2 -2
- package/dist/components/viewers/html-viewer/dompurify-loader.js +1 -1
- package/dist/components/viewers/notebook-viewer/dompurify-loader.js +1 -1
- package/dist/components/viewers/pdf-viewer/pdf-loader.js +1 -1
- package/dist/components/viewers/pptx-viewer/pptx-loader.js +1 -1
- package/dist/components/viewers/spreadsheet-viewer/spreadsheet-loader.js +1 -1
- package/dist/components/viewers/svg-viewer/dompurify-loader.js +1 -1
- package/dist/components/viewers/viewer-loading.js +1 -1
- package/dist/components/viewers/viewer-search-limits.d.ts +2 -0
- package/dist/components/viewers/viewer-search-limits.js +1 -1
- package/dist/custom-elements-jsx.d.ts +1 -1
- package/dist/events.d.ts +13 -6
- package/dist/internal/aria-controls.d.ts +16 -13
- package/dist/internal/aria-controls.js +1 -1
- package/dist/internal/aria-reflection.js +1 -1
- package/dist/internal/catalog-picker.d.ts +2 -2
- package/dist/internal/catalog-picker.js +1 -1
- package/dist/internal/chart-annotation-registration.d.ts +1 -0
- package/dist/internal/chart-annotation-registration.js +1 -0
- package/dist/internal/data-descriptors.d.ts +13 -0
- package/dist/internal/data-descriptors.js +1 -0
- package/dist/internal/default-strings.generated.d.ts +1 -1
- package/dist/internal/default-strings.generated.js +2 -2
- package/dist/internal/dev-mode-attribute-warning.js +1 -1
- package/dist/internal/element-internals.d.ts +4 -3
- package/dist/internal/element-internals.js +1 -1
- package/dist/internal/highlight-collection.d.ts +2 -0
- package/dist/internal/highlight-collection.js +1 -1
- package/dist/internal/localization-types.d.ts +1 -1
- package/dist/internal/localization.js +2 -2
- package/dist/internal/lyra-element.d.ts +10 -1
- package/dist/internal/lyra-element.js +2 -1
- package/dist/internal/package-metadata.d.ts +1 -1
- package/dist/internal/package-metadata.js +1 -1
- package/dist/internal/papaparse-loader.js +1 -1
- package/dist/internal/pseudo-localization.js +1 -1
- package/dist/internal/safe-css.js +1 -1
- package/dist/internal/step-value.d.ts +6 -0
- package/dist/internal/step-value.js +1 -0
- package/dist/internal/text-quote.js +1 -1
- package/dist/lyra.d.ts +1 -1
- package/dist/svelte.d.ts +1 -1
- package/dist/translations/ar.js +2 -2
- package/dist/translations/de.js +2 -2
- package/dist/translations/es.js +2 -2
- package/dist/translations/fa.js +2 -2
- package/dist/translations/fr.js +2 -2
- package/dist/translations/he.js +2 -2
- package/dist/translations/ja.js +2 -2
- package/dist/translations/pseudo/ar-XB.js +1 -1
- package/dist/translations/pt-BR.js +2 -2
- package/dist/translations/ru.js +2 -2
- package/dist/translations/zh-CN.js +2 -2
- package/dist/vue.d.ts +1 -1
- package/llms/components/lr-accordion-item.md +6 -5
- package/llms/components/lr-accordion.md +6 -5
- package/llms/components/lr-activity-feed.md +6 -5
- package/llms/components/lr-agent-run.md +1 -1
- package/llms/components/lr-agent-workspace.md +3 -2
- package/llms/components/lr-attachment-chip.md +2 -3
- package/llms/components/lr-audio-visualizer.md +9 -6
- package/llms/components/lr-bar-chart.md +2 -2
- package/llms/components/lr-box-plot.md +9 -6
- package/llms/components/lr-bubble-chart.md +2 -2
- package/llms/components/lr-calendar.md +10 -4
- package/llms/components/lr-chart.md +11 -5
- package/llms/components/lr-chat-composer.md +2 -1
- package/llms/components/lr-chunk-inspector.md +2 -2
- package/llms/components/lr-code-block-core.md +4 -4
- package/llms/components/lr-code-block.md +10 -14
- package/llms/components/lr-code-editor.md +2 -0
- package/llms/components/lr-copy-button.md +4 -1
- package/llms/components/lr-data-grid.md +11 -2
- package/llms/components/lr-date-input.md +4 -0
- package/llms/components/lr-date-picker.md +5 -1
- package/llms/components/lr-details.md +6 -5
- package/llms/components/lr-diff-view.md +6 -0
- package/llms/components/lr-document-compare.md +6 -2
- package/llms/components/lr-document-preview.md +11 -3
- package/llms/components/lr-document-viewer.md +5 -1
- package/llms/components/lr-docx-viewer.md +6 -0
- package/llms/components/lr-doughnut-chart.md +2 -2
- package/llms/components/lr-ebook-viewer.md +8 -3
- package/llms/components/lr-email-viewer.md +5 -0
- package/llms/components/lr-eval-dataset.md +2 -2
- package/llms/components/lr-export-button.md +9 -0
- package/llms/components/lr-file-input.md +5 -8
- package/llms/components/lr-format-date.md +3 -1
- package/llms/components/lr-graph-legend.md +4 -2
- package/llms/components/lr-grounding-summary.md +8 -8
- package/llms/components/lr-histogram.md +2 -2
- package/llms/components/lr-ingestion-queue.md +1 -1
- package/llms/components/lr-intersection-observer.md +9 -0
- package/llms/components/lr-json-viewer.md +6 -1
- package/llms/components/lr-knowledge-base.md +10 -1
- package/llms/components/lr-line-chart.md +2 -2
- package/llms/components/lr-lite-chart.md +8 -5
- package/llms/components/lr-locale-picker.md +6 -0
- package/llms/components/lr-map.md +15 -5
- package/llms/components/lr-markdown.md +7 -4
- package/llms/components/lr-media-card.md +0 -6
- package/llms/components/lr-mention-popover.md +12 -10
- package/llms/components/lr-message-actions.md +10 -3
- package/llms/components/lr-message-feedback.md +20 -7
- package/llms/components/lr-message-parts.md +3 -1
- package/llms/components/lr-model-select.md +5 -2
- package/llms/components/lr-multi-split.md +5 -1
- package/llms/components/lr-mutation-observer.md +8 -0
- package/llms/components/lr-node-palette.md +5 -2
- package/llms/components/lr-pie-chart.md +2 -2
- package/llms/components/lr-polar-area-chart.md +2 -2
- package/llms/components/lr-prompt-input.md +7 -3
- package/llms/components/lr-prompt-queue.md +6 -0
- package/llms/components/lr-push-to-talk.md +5 -0
- package/llms/components/lr-qr-code.md +6 -0
- package/llms/components/lr-radar-chart.md +2 -2
- package/llms/components/lr-rating.md +5 -0
- package/llms/components/lr-relative-time.md +2 -0
- package/llms/components/lr-result-card.md +3 -3
- package/llms/components/lr-result-field.md +3 -3
- package/llms/components/lr-retrieval-results.md +1 -1
- package/llms/components/lr-scatter-chart.md +2 -2
- package/llms/components/lr-scroller.md +5 -5
- package/llms/components/lr-sequence-playback.md +1 -2
- package/llms/components/lr-slider.md +3 -1
- package/llms/components/lr-streaming-text.md +2 -3
- package/llms/components/lr-terminal.md +14 -5
- package/llms/components/lr-thinking-panel.md +3 -1
- package/llms/components/lr-thread-list.md +20 -1
- package/llms/components/lr-tool-call-chip.md +2 -2
- package/llms/components/lr-tool-param-form.md +2 -2
- package/llms/components/lr-tool-result-view.md +2 -3
- package/llms/components/lr-tool-select-dialog.md +2 -2
- package/llms/components/lr-voice-picker.md +7 -2
- package/llms/components/lr-widget-renderer.md +12 -13
- package/llms/peers.md +5 -5
- package/llms/shared.md +74 -63
- package/llms-full.txt +629 -247
- package/package.json +21 -14
- package/vscode-css-data.json +1 -1
- package/vscode-html-data.json +1 -1
- package/web-types.json +1 -1
- package/dist/components/viewers/docx-viewer/fixtures/minimal-docx-fixture.d.ts +0 -1
- package/dist/components/viewers/docx-viewer/fixtures/minimal-docx-fixture.js +0 -1
- package/dist/components/viewers/ebook-viewer/fixtures/minimal-epub-fixture.d.ts +0 -1
- package/dist/components/viewers/ebook-viewer/fixtures/minimal-epub-fixture.js +0 -1
- package/dist/components/viewers/spreadsheet-viewer/fixtures/minimal-xlsx-fixture.d.ts +0 -1
- package/dist/components/viewers/spreadsheet-viewer/fixtures/minimal-xlsx-fixture.js +0 -1
|
@@ -1 +1,2 @@
|
|
|
1
|
-
var __decorate=function(decorators,target,key,desc){var c=arguments.length,r=c<3?target:desc===null?desc=Object.getOwnPropertyDescriptor(target,key):desc,d;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")r=Reflect.decorate(decorators,target,key,desc);else for(var i=decorators.length-1;i>=0;i--)(d=decorators[i])&&(r=(c<3?d(r):c>3?d(target,key,r):d(target,key))||r);return c>3&&r&&Object.defineProperty(target,key,r),r};import{LitElement}from"lit";import{property}from"lit/decorators.js";import{tokens}from"./tokens.styles.js";import{palette}from"./tokens/palette.styles.js";import{resolveIntlLocale}from"./intl-cache.js";import{warnUnknownAttributes}from"./dev-mode-attribute-warning.js";const FORM_CONTROL_LABEL_FACTORY=Symbol("lr-form-control-label-factory");let formInternalsHook,externalLabelFactory;function registerFormControlLabelSupport(hook,factory){formInternalsHook=hook,factory&&(externalLabelFactory=factory)}import{observeInheritedContext,beginInheritedContextUpdate,finishInheritedContextUpdate,markInheritedContextUpdateRendered,queueInheritedDirectionChange,recordInheritedDirectionRead,recordInheritedLocaleRead}from"./inherited-context-observer.js";import{canonicalizeLyraLocale,enableLyraLocaleCache,invalidateLyraLocaleCache,lyraLocaleCatalogVersion,peekLyraLocale,recordLyraOwnerDocumentConnection,resolveLyraDirection,resolveLyraString,resolveLyraLocale,snapshotLyraLocaleStrings,subscribeLyraLocaleForHost}from"./localization-runtime.js";const PUBLIC_COLLECTION_ENTRY_LIMIT=1e4,PUBLIC_COLLECTION_NODE_LIMIT=5e4,PUBLIC_COLLECTION_DEPTH_LIMIT=256,OMIT_COLLECTION_VALUE=Symbol("omit-public-collection-value");function snapshotRealm(view){const candidate=view;return{Array:candidate?.Array??Array,Date:candidate?.Date??Date,Map:candidate?.Map??Map,Object:candidate?.Object??Object,Set:candidate?.Set??Set}}function isRealmNeutralPlainRecord(value){try{const prototype=Object.getPrototypeOf(value);if(prototype===null)return!0;const constructor=Object.getOwnPropertyDescriptor(prototype,"constructor");return!!(constructor&&"value"in constructor&&typeof constructor.value=="function"&&constructor.value.name==="Object"&&Object.getPrototypeOf(prototype)===null)}catch{return!1}}function isArrayValue(value){try{return Array.isArray(value)}catch{return!1}}function isNativeArrayBufferView(value){try{return ArrayBuffer.isView(value)}catch{return!1}}function isImmutableBlob(value){if(typeof Blob>"u")return!1;const sizeGetter=Object.getOwnPropertyDescriptor(Blob.prototype,"size")?.get;if(!sizeGetter)return!1;try{return sizeGetter.call(value),!0}catch{return!1}}const MUTATING_DATE_METHODS=new Set(["setDate","setFullYear","setHours","setMilliseconds","setMinutes","setMonth","setSeconds","setTime","setUTCDate","setUTCFullYear","setUTCHours","setUTCMilliseconds","setUTCMinutes","setUTCMonth","setUTCSeconds","setYear"]);function nativeDateTime(value){try{return Date.prototype.getTime.call(value)}catch{return OMIT_COLLECTION_VALUE}}function snapshotReadonlyDate(source,time,budget){const target=new budget.realm.Date(time),boundMethods=new Map,rejectMutation=()=>{throw new TypeError("Cannot mutate a readonly Date snapshot")},snapshot=new Proxy(target,{get(date,key){if(MUTATING_DATE_METHODS.has(key))return rejectMutation;if(key==="constructor")return budget.realm.Date;const value=Reflect.get(date,key,date);if(typeof value!="function")return value;const cached=boundMethods.get(key);if(cached)return cached;const bound=value.bind(date);return boundMethods.set(key,bound),bound}});return rememberSnapshot(budget,source,snapshot),Object.freeze(snapshot)}function rememberSnapshot(budget,source,snapshot){budget.seen.set(source,snapshot),budget.additions.push(source)}function snapshotTransaction(budget,create){const remaining=budget.remaining,additions=budget.additions.length,result=create();if(result!==OMIT_COLLECTION_VALUE)return result;budget.remaining=remaining;for(let index=budget.additions.length-1;index>=additions;index-=1)budget.seen.delete(budget.additions[index]);return budget.additions.length=additions,OMIT_COLLECTION_VALUE}function emptyRealmArray(realm){return Object.freeze(new realm.Array)}function*ownEnumerableStringKeys(value){for(const key in value)Object.getOwnPropertyDescriptor(value,key)?.enumerable&&(yield key)}function snapshotDataRecord(value,keys,prototype,budget,depth,preserveRecordKeys,preserveCollectionItemKeys){const output=budget.realm.Object.create(prototype);rememberSnapshot(budget,value,output);try{for(const key of keys){const descriptor=Object.getOwnPropertyDescriptor(value,key);if(!descriptor?.enumerable||!("value"in descriptor))continue;if(budget.remaining<=0)return OMIT_COLLECTION_VALUE;budget.remaining-=1;const entry=preserveRecordKeys?.has(key)?descriptor.value:preserveCollectionItemKeys?.has(key)?snapshotIdentityCollection(descriptor.value,budget.realm,budget):snapshotCollectionValue(descriptor.value,budget,depth+1);if(entry===OMIT_COLLECTION_VALUE)return OMIT_COLLECTION_VALUE;Object.defineProperty(output,key,{value:entry,enumerable:!0,configurable:!1,writable:!1})}}catch{return OMIT_COLLECTION_VALUE}return Object.freeze(output)}function snapshotCollectionValue(value,budget,depth,preserveRecordKeys,preserveCollectionItemKeys,allowArrayPrefixTruncation=!1){if(value===null||typeof value!="object"&&typeof value!="function"||typeof value=="function")return value;if(budget.seen.has(value))return budget.seen.get(value);if(depth>PUBLIC_COLLECTION_DEPTH_LIMIT||budget.remaining<=0)return OMIT_COLLECTION_VALUE;if(isArrayValue(value)){let lengthDescriptor;try{lengthDescriptor=Object.getOwnPropertyDescriptor(value,"length")}catch{return allowArrayPrefixTruncation?emptyRealmArray(budget.realm):OMIT_COLLECTION_VALUE}if(!lengthDescriptor||!("value"in lengthDescriptor)||typeof lengthDescriptor.value!="number"||!Number.isSafeInteger(lengthDescriptor.value)||lengthDescriptor.value<0)return allowArrayPrefixTruncation?emptyRealmArray(budget.realm):OMIT_COLLECTION_VALUE;const sourceLength=lengthDescriptor.value;if(!allowArrayPrefixTruncation&&sourceLength>PUBLIC_COLLECTION_ENTRY_LIMIT)return OMIT_COLLECTION_VALUE;const length=Math.min(sourceLength,PUBLIC_COLLECTION_ENTRY_LIMIT),output=new budget.realm.Array(length);rememberSnapshot(budget,value,output);for(let index=0;index<length;index+=1){if(budget.remaining<=0){if(!allowArrayPrefixTruncation)return OMIT_COLLECTION_VALUE;output.length=index;break}let descriptor;try{descriptor=Object.getOwnPropertyDescriptor(value,String(index))}catch{if(!allowArrayPrefixTruncation)return OMIT_COLLECTION_VALUE;output.length=index;break}if(!descriptor)continue;if(!("value"in descriptor)){if(!allowArrayPrefixTruncation)return OMIT_COLLECTION_VALUE;output.length=index;break}const entry=snapshotTransaction(budget,()=>(budget.remaining-=1,snapshotCollectionValue(descriptor.value,budget,depth+1)));if(entry===OMIT_COLLECTION_VALUE){if(!allowArrayPrefixTruncation)return OMIT_COLLECTION_VALUE;output.length=index;break}Object.defineProperty(output,index,{value:entry,enumerable:!0,configurable:!1,writable:!1})}return Object.freeze(output)}if(isRealmNeutralPlainRecord(value)){let prototype;try{prototype=Object.getPrototypeOf(value)}catch{return OMIT_COLLECTION_VALUE}return snapshotDataRecord(value,ownEnumerableStringKeys(value),prototype===null?null:budget.realm.Object.prototype,budget,depth,preserveRecordKeys,preserveCollectionItemKeys)}const dateTime=nativeDateTime(value);if(dateTime!==OMIT_COLLECTION_VALUE)return snapshotReadonlyDate(value,dateTime,budget);const entries=nativeMapEntries(value);if(entries)return snapshotDetachedMap(value,entries,budget,depth);const values=nativeSetValues(value);if(values)return snapshotDetachedSet(value,values,budget,depth);if(isNativeArrayBufferView(value))return OMIT_COLLECTION_VALUE;const rect=snapshotDOMRect(value,budget);return rect!==OMIT_COLLECTION_VALUE?rect:isImmutableBlob(value)?value:OMIT_COLLECTION_VALUE}function snapshotPublicCollection(value,view){if(value===null||typeof value!="object"&&typeof value!="function")return value;const realm=snapshotRealm(view),budget={remaining:PUBLIC_COLLECTION_NODE_LIMIT,seen:new WeakMap,additions:[],realm},snapshot=snapshotTransaction(budget,()=>snapshotCollectionValue(value,budget,0,void 0,void 0,!0));if(snapshot!==OMIT_COLLECTION_VALUE)return snapshot;if(isArrayValue(value)||isNativeArrayBufferView(value))return emptyRealmArray(realm);if(typeof value=="object"){if(nativeMapEntries(value))return readonlyMapFacade(new realm.Map,realm);if(nativeSetValues(value))return readonlySetFacade(new realm.Set,realm);if(isRealmNeutralPlainRecord(value)){const prototype=Object.getPrototypeOf(value);return Object.freeze(realm.Object.create(prototype===null?null:realm.Object.prototype))}}return emptyRealmArray(realm)}function nativeMapEntries(value){try{return Map.prototype.entries.call(value)}catch{return}}function nativeSetValues(value){try{return Set.prototype.values.call(value)}catch{return}}function snapshotDOMRect(value,budget){if(typeof DOMRectReadOnly>"u")return OMIT_COLLECTION_VALUE;const nativePrototype=DOMRectReadOnly.prototype,output=budget.realm.Object.create(budget.realm.Object.prototype);for(const key of["x","y","width","height","top","right","bottom","left"]){let coordinate;try{const getter=Object.getOwnPropertyDescriptor(nativePrototype,key)?.get;if(!getter)return OMIT_COLLECTION_VALUE;coordinate=getter.call(value)}catch{return OMIT_COLLECTION_VALUE}if(typeof coordinate!="number"||!Number.isFinite(coordinate))return OMIT_COLLECTION_VALUE;Object.defineProperty(output,key,{value:coordinate,enumerable:!0,configurable:!1,writable:!1})}return Object.freeze(output)}function readonlyMapFacade(backing,realm=snapshotRealm()){let facade;return facade=realm.Object.create(realm.Object.prototype),Object.defineProperties(facade,{size:{enumerable:!0,get:()=>backing.size},entries:{value:()=>backing.entries()},get:{value:key=>backing.get(key)},has:{value:key=>backing.has(key)},keys:{value:()=>backing.keys()},values:{value:()=>backing.values()},forEach:{value:(callback,thisArg)=>backing.forEach((entry,key)=>callback.call(thisArg,entry,key,facade))},[Symbol.iterator]:{value:()=>backing[Symbol.iterator]()}}),Object.freeze(facade)}function readonlySetFacade(backing,realm=snapshotRealm()){let facade;return facade=realm.Object.create(realm.Object.prototype),Object.defineProperties(facade,{size:{enumerable:!0,get:()=>backing.size},entries:{value:()=>backing.entries()},has:{value:entry=>backing.has(entry)},keys:{value:()=>backing.keys()},values:{value:()=>backing.values()},forEach:{value:(callback,thisArg)=>backing.forEach(entry=>callback.call(thisArg,entry,entry,facade))},[Symbol.iterator]:{value:()=>backing[Symbol.iterator]()}}),Object.freeze(facade)}function snapshotIdentityMap(entries,realm=snapshotRealm()){const backing=new realm.Map;for(let next=entries.next(),count=0;!next.done&&count<PUBLIC_COLLECTION_ENTRY_LIMIT;next=entries.next(),count+=1)backing.set(next.value[0],next.value[1]);return readonlyMapFacade(backing,realm)}function snapshotIdentitySet(values,realm=snapshotRealm()){const backing=new realm.Set;for(let next=values.next(),count=0;!next.done&&count<PUBLIC_COLLECTION_ENTRY_LIMIT;next=values.next(),count+=1)backing.add(next.value);return readonlySetFacade(backing,realm)}function snapshotDetachedMap(source,entries,budget,depth){const backing=new budget.realm.Map,facade=readonlyMapFacade(backing,budget.realm);rememberSnapshot(budget,source,facade);for(let count=0;count<PUBLIC_COLLECTION_ENTRY_LIMIT;count+=1){let next;try{next=entries.next()}catch{break}if(next.done||budget.remaining<=0)break;const pair=snapshotTransaction(budget,()=>{budget.remaining-=1;const key=snapshotCollectionValue(next.value[0],budget,depth+1);if(key===OMIT_COLLECTION_VALUE)return OMIT_COLLECTION_VALUE;const entry=snapshotCollectionValue(next.value[1],budget,depth+1);return entry===OMIT_COLLECTION_VALUE?OMIT_COLLECTION_VALUE:[key,entry]});pair!==OMIT_COLLECTION_VALUE&&backing.set(pair[0],pair[1])}return facade}function snapshotDetachedSet(source,values,budget,depth){const backing=new budget.realm.Set,facade=readonlySetFacade(backing,budget.realm);rememberSnapshot(budget,source,facade);for(let count=0;count<PUBLIC_COLLECTION_ENTRY_LIMIT;count+=1){let next;try{next=values.next()}catch{break}if(next.done||budget.remaining<=0)break;const entry=snapshotTransaction(budget,()=>(budget.remaining-=1,snapshotCollectionValue(next.value,budget,depth+1)));entry!==OMIT_COLLECTION_VALUE&&backing.add(entry)}return facade}function snapshotIdentityCollection(value,view,budget){const realm=snapshotRealm(view);if(budget&&value!==null&&(typeof value=="object"||typeof value=="function")&&budget.seen.has(value))return budget.seen.get(value);if(isArrayValue(value)){let lengthDescriptor;try{lengthDescriptor=Object.getOwnPropertyDescriptor(value,"length")}catch{return emptyRealmArray(realm)}const length=lengthDescriptor&&"value"in lengthDescriptor&&typeof lengthDescriptor.value=="number"&&Number.isSafeInteger(lengthDescriptor.value)&&lengthDescriptor.value>=0?Math.min(lengthDescriptor.value,PUBLIC_COLLECTION_ENTRY_LIMIT):0,output=new realm.Array(length);budget&&rememberSnapshot(budget,value,output);for(let index=0;index<length;index+=1){let descriptor;try{descriptor=Object.getOwnPropertyDescriptor(value,String(index))}catch{continue}!descriptor||!("value"in descriptor)||Object.defineProperty(output,index,{value:descriptor.value,enumerable:!0,configurable:!1,writable:!1})}return Object.freeze(output)}if(value===null||typeof value!="object")return value;const mapEntries=nativeMapEntries(value);if(mapEntries){const output=snapshotIdentityMap(mapEntries,realm);return budget&&rememberSnapshot(budget,value,output),output}const setValues=nativeSetValues(value);if(setValues){const output=snapshotIdentitySet(setValues,realm);return budget&&rememberSnapshot(budget,value,output),output}return emptyRealmArray(realm)}function snapshotEventDetail(value,view,preserveRootKeys,preserveCollectionItemKeys){if(value==null)return value;const budget={remaining:PUBLIC_COLLECTION_NODE_LIMIT,seen:new WeakMap,additions:[],realm:snapshotRealm(view)},snapshot=snapshotTransaction(budget,()=>snapshotCollectionValue(value,budget,0,preserveRootKeys,preserveCollectionItemKeys));return snapshot===OMIT_COLLECTION_VALUE?null:snapshot}const SEED_FIRST_RENDER_STATE=Symbol("lr-seed-first-render-state"),SLOT_PRESENCE_UNRESOLVED=Symbol("lr-slot-presence-unresolved"),REACTIVE_HOST_ATTRIBUTES=["aria-label","aria-describedby","lang","dir"],DIRECTION_HOST_ATTRIBUTES=["class","style","slot"];function trustedLyraConstructorChain(instance){const constructors=[];let prototype=Object.getPrototypeOf(instance);for(;prototype&&prototype!==LitElement.prototype;){const descriptor=Object.getOwnPropertyDescriptor(prototype,"constructor");typeof descriptor?.value=="function"&&constructors.push(descriptor.value),prototype=Object.getPrototypeOf(prototype)}return constructors}function lyraClassChain(ctor){const constructors=[];let current=ctor;for(;typeof current=="function"&¤t!==LitElement;)constructors.push(current),current=Object.getPrototypeOf(current);return constructors}const collectionPolicyByConstructor=new WeakMap;function collectionPropertyPolicy(ctor,name){let policies=collectionPolicyByConstructor.get(ctor);policies||(policies=new Map,collectionPolicyByConstructor.set(ctor,policies));const cached=policies.get(name);if(cached)return cached;let owns=!1,preservesItemIdentity=!1,preservesObjectIdentity=!1;for(const constructor of lyraClassChain(ctor)){const declared=constructor;Object.prototype.hasOwnProperty.call(constructor,"ownedCollectionProperties")&&declared.ownedCollectionProperties.includes(name)&&(owns=!0),Object.prototype.hasOwnProperty.call(constructor,"identityCollectionProperties")&&declared.identityCollectionProperties.includes(name)&&(preservesItemIdentity=!0),Object.prototype.hasOwnProperty.call(constructor,"identityCollectionObjectProperties")&&declared.identityCollectionObjectProperties.includes(name)&&(preservesObjectIdentity=!0)}const policy=Object.freeze({owns,preservesItemIdentity,preservesObjectIdentity});return policies.set(name,policy),policy}const COLLECTION_ENROLLMENT_FIELDS=["ownedCollectionProperties","identityCollectionProperties","identityCollectionObjectProperties"];function enrolledCollectionPropertyNames(ctor){const names=new Set;for(const constructor of lyraClassChain(ctor))for(const field of COLLECTION_ENROLLMENT_FIELDS){if(!Object.prototype.hasOwnProperty.call(constructor,field))continue;const declared=constructor;for(const name of declared[field])names.add(name)}return names}function inheritedPropertyDescriptor(prototype,name){let current=prototype;for(;current;){const descriptor=Object.getOwnPropertyDescriptor(current,name);if(descriptor)return descriptor;current=Object.getPrototypeOf(current)}}const installedOwnershipBoundaries=new WeakSet,ownershipBoundarySetters=new WeakMap;function samePolicy(a,b){return a.owns===b.owns&&a.preservesItemIdentity===b.preservesItemIdentity&&a.preservesObjectIdentity===b.preservesObjectIdentity}function installOwnedCollectionAccessors(ctor){if(installedOwnershipBoundaries.has(ctor))return;installedOwnershipBoundaries.add(ctor);const prototype=ctor.prototype;for(const name of enrolledCollectionPropertyNames(ctor)){const policy=collectionPropertyPolicy(ctor,name);if(!policy.owns)continue;const declaration=ctor.elementProperties.get(name);if(!declaration||declaration.noAccessor)continue;const descriptor=inheritedPropertyDescriptor(prototype,name),inheritedSet=descriptor?.set;if(!inheritedSet)continue;const installed=ownershipBoundarySetters.get(inheritedSet);if(installed&&samePolicy(installed.policy,policy))continue;const originalSet=installed?.originalSet??inheritedSet,lastAssignments=new WeakMap,set=function(value){const previous=lastAssignments.get(this);if(previous&&declaration.hasChanged===void 0&&!policy.preservesItemIdentity&&!policy.preservesObjectIdentity&&(Object.is(value,previous.source)||Object.is(value,previous.retained)))return;const ownerView=this.ownerDocument?.defaultView,snapshot=policy.preservesObjectIdentity&&value!==null&&typeof value=="object"&&!isArrayValue(value)?value:policy.preservesItemIdentity?snapshotIdentityCollection(value,ownerView):snapshotPublicCollection(value,ownerView);originalSet.call(this,snapshot),lastAssignments.set(this,{source:value,retained:descriptor.get?.call(this)??snapshot})};ownershipBoundarySetters.set(set,{policy,originalSet}),Object.defineProperty(prototype,name,{...descriptor,set})}}class LyraElement extends LitElement{static{this.styles=[palette,tokens]}static{this.ownedCollectionProperties=Object.freeze([])}static{this.identityCollectionProperties=Object.freeze([])}static{this.identityCollectionObjectProperties=Object.freeze([])}static{this.immutableEventDetails=Object.freeze([])}static{this.identityEventDetailProperties=Object.freeze({})}static{this.identityEventDetailCollectionItems=Object.freeze({})}static{this.defaultStrings=Object.freeze({})}static get observedAttributes(){const attributes=[...new Set([...super.observedAttributes,...REACTIVE_HOST_ATTRIBUTES,...DIRECTION_HOST_ATTRIBUTES])];return installOwnedCollectionAccessors(this),attributes}get strings(){return this.stringsValue}set strings(value){const previous=this.stringsValue;this.stringsValue=snapshotLyraLocaleStrings(value),this.requestUpdate("strings",previous)}constructor(){if(super(),this.locale="",this.stringsValue=snapshotLyraLocaleStrings({}),this.localeSubscriptionNeeded=!1,this.constructor.formAssociated){const controller=(this.constructor[FORM_CONTROL_LABEL_FACTORY]??externalLabelFactory)?.(this);controller&&this.addController(controller)}}attachInternals(){const internals=super.attachInternals();return formInternalsHook?.(this,internals),internals}connectedCallback(){this.hydratingServerShadow??=typeof Node>"u"||!this.hasUpdated&&this.shadowRoot!==null,super.connectedCallback(),warnUnknownAttributes(this,this.constructor.observedAttributes,this.constructor.knownUnobservedAttributes??[]),recordLyraOwnerDocumentConnection(this),enableLyraLocaleCache(this),invalidateLyraLocaleCache(this),this.stopInheritedContextObservation?.(),this.stopInheritedContextObservation=observeInheritedContext(this),this.localeSubscriptionNeeded&&this.ensureLocaleSubscription(),this.lastLocalizedCatalogVersion!==void 0&&lyraLocaleCatalogVersion(resolveLyraLocale(this))!==this.lastLocalizedCatalogVersion&&this.requestUpdate();const deferred=this.deferredAfterUpdate;if(deferred){this.deferredAfterUpdate=void 0;for(const[key,callback]of deferred)this.scheduleAfterUpdate(callback,key)}}disconnectedCallback(){this.pendingLoadController?.abort(),this.pendingLoadController=void 0,this.stopLocaleSubscription?.(),this.stopLocaleSubscription=void 0,this.stopInheritedContextObservation?.(),this.stopInheritedContextObservation=void 0,invalidateLyraLocaleCache(this),super.disconnectedCallback()}adoptedCallback(){this.stopLocaleSubscription?.(),this.stopLocaleSubscription=void 0,invalidateLyraLocaleCache(this),this.isConnected&&this.localeSubscriptionNeeded&&this.ensureLocaleSubscription()}requestUpdate(name,oldValue,options){invalidateLyraLocaleCache(this),super.requestUpdate(name,oldValue,options)}performUpdate(){beginInheritedContextUpdate(this);try{super.performUpdate()}finally{finishInheritedContextUpdate(this)}}update(changedProperties){super.update(changedProperties),markInheritedContextUpdateRendered(this)}ensureLocaleSubscription(){this.localeSubscriptionNeeded=!0,!(!this.isConnected||this.stopLocaleSubscription)&&(this.stopLocaleSubscription=subscribeLyraLocaleForHost(this))}attributeChangedCallback(name,oldValue,value){const directionHostAttribute=oldValue!==value&&DIRECTION_HOST_ATTRIBUTES.includes(name);directionHostAttribute&&queueInheritedDirectionChange(this,name==="slot"),super.attributeChangedCallback(name,oldValue,value),oldValue!==value&&REACTIVE_HOST_ATTRIBUTES.includes(name)?this.requestUpdate():directionHostAttribute&&invalidateLyraLocaleCache(this)}seedFirstRenderState(seed){this.hasUpdated||this[SEED_FIRST_RENDER_STATE](seed)}[SEED_FIRST_RENDER_STATE](seed){if(!this.hydratingServerShadow){seed();return}const pending=this.deferredFirstRenderSeeds??=new Set;pending.add(seed),!(pending.size>1)&&this.updateComplete.then(()=>{setTimeout(()=>{this.hydratingServerShadow=!1;const seeds=this.deferredFirstRenderSeeds;this.deferredFirstRenderSeeds=void 0;for(const deferred of seeds??[])deferred();this.requestUpdate()},0)},()=>{this.hydratingServerShadow=!1,this.deferredFirstRenderSeeds=void 0})}updateBrowserDerivedState(update){this[SEED_FIRST_RENDER_STATE](update)}renderSlotPresence(present){return present||this[SLOT_PRESENCE_UNRESOLVED]()}[SLOT_PRESENCE_UNRESOLVED](){return typeof Node>"u"||this.hydratingServerShadow===!0}beginAbortableLoad(){this.pendingLoadController?.abort(),this.pendingLoadController=void 0;const AbortControllerCtor=this.ownerDocument?.defaultView?.AbortController;if(AbortControllerCtor)return this.pendingLoadController=new AbortControllerCtor,this.pendingLoadController.signal}scheduleAfterUpdate(callback,key="load"){const pending=this.afterUpdateCallbacks??=new Map;pending.has(key)||(pending.set(key,callback),!(pending.size>1)&&queueMicrotask(()=>{const due=this.afterUpdateCallbacks;if(this.afterUpdateCallbacks=void 0,!due)return;if(this.isConnected){for(const due_callback of due.values())due_callback();return}const held=this.deferredAfterUpdate??=new Map;for(const[heldKey,heldCallback]of due)held.has(heldKey)||held.set(heldKey,heldCallback)}))}localize(key,fallback,values){const message=resolveLyraString(this,key,this.strings,fallback,values,this.constructor.defaultStrings),locale=peekLyraLocale(this);return recordInheritedLocaleRead(this,locale),locale!==void 0&&(this.lastLocalizedCatalogVersion=lyraLocaleCatalogVersion(locale),this.ensureLocaleSubscription()),message}get effectiveMessageLocale(){if(this.locale)return canonicalizeLyraLocale(this.locale);const locale=resolveLyraLocale(this);return recordInheritedLocaleRead(this,locale),this.ensureLocaleSubscription(),locale}get effectiveLocale(){return resolveIntlLocale(this.effectiveMessageLocale)}get effectiveIntlLocale(){return this.effectiveLocale}get effectiveDirection(){const direction=resolveLyraDirection(this);return recordInheritedDirectionRead(this,direction),direction}addEventListener(type,listener,options){super.addEventListener(type,listener,options)}removeEventListener(type,listener,options){super.removeEventListener(type,listener,options)}emit(name,...args){const[detail,options]=args,ownerDocument=this.ownerDocument;let CustomEventCtor=ownerDocument?.defaultView?.CustomEvent;if(!CustomEventCtor&&ownerDocument)try{const candidate=ownerDocument.createEvent("CustomEvent").constructor;typeof candidate=="function"&&(CustomEventCtor=candidate)}catch{}CustomEventCtor??=globalThis.CustomEvent;let snapshotsDetail=!1;const identityDetailKeys=new Set,identityCollectionItemKeys=new Set;for(const constructor of trustedLyraConstructorChain(this)){if(Object.prototype.hasOwnProperty.call(constructor,"immutableEventDetails")&&constructor.immutableEventDetails.includes(name)&&(snapshotsDetail=!0),Object.prototype.hasOwnProperty.call(constructor,"identityEventDetailProperties"))for(const key of constructor.identityEventDetailProperties[name]??[])identityDetailKeys.add(key);if(Object.prototype.hasOwnProperty.call(constructor,"identityEventDetailCollectionItems"))for(const key of constructor.identityEventDetailCollectionItems[name]??[])identityCollectionItemKeys.add(key)}const event=new CustomEventCtor(name,{detail:detail===void 0?null:snapshotsDetail?snapshotEventDetail(detail,ownerDocument?.defaultView,identityDetailKeys,identityCollectionItemKeys):detail,bubbles:!0,composed:!0,cancelable:options?.cancelable??!1});return this.dispatchEvent(event),event}}__decorate([property({reflect:!0})],LyraElement.prototype,"locale",void 0),__decorate([property({attribute:!1})],LyraElement.prototype,"strings",null);export{FORM_CONTROL_LABEL_FACTORY,LyraElement,SEED_FIRST_RENDER_STATE,SLOT_PRESENCE_UNRESOLVED,registerFormControlLabelSupport};
|
|
1
|
+
var __decorate=function(decorators,target,key,desc){var c=arguments.length,r=c<3?target:desc===null?desc=Object.getOwnPropertyDescriptor(target,key):desc,d;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")r=Reflect.decorate(decorators,target,key,desc);else for(var i=decorators.length-1;i>=0;i--)(d=decorators[i])&&(r=(c<3?d(r):c>3?d(target,key,r):d(target,key))||r);return c>3&&r&&Object.defineProperty(target,key,r),r};import{LitElement}from"lit";import{property}from"lit/decorators.js";import{tokens}from"./tokens.styles.js";import{palette}from"./tokens/palette.styles.js";import{resolveIntlLocale}from"./intl-cache.js";import{warnUnknownAttributes}from"./dev-mode-attribute-warning.js";import{MISSING_OWN_DATA_DESCRIPTOR,UNSAFE_OWN_DATA_DESCRIPTOR,getOwnDataDescriptor}from"./data-descriptors.js";const FORM_CONTROL_LABEL_FACTORY=Symbol("lr-form-control-label-factory");let formInternalsHook,externalLabelFactory;function registerFormControlLabelSupport(hook,factory){formInternalsHook=hook,factory&&(externalLabelFactory=factory)}import{observeInheritedContext,beginInheritedContextUpdate,finishInheritedContextUpdate,markInheritedContextUpdateRendered,queueInheritedDirectionChange,recordInheritedDirectionRead,recordInheritedLocaleRead}from"./inherited-context-observer.js";import{canonicalizeLyraLocale,enableLyraLocaleCache,invalidateLyraLocaleCache,lyraLocaleCatalogVersion,peekLyraLocale,recordLyraOwnerDocumentConnection,resolveLyraDirection,resolveLyraString,resolveLyraLocale,snapshotLyraLocaleStrings,subscribeLyraLocaleForHost}from"./localization-runtime.js";const PUBLIC_COLLECTION_ENTRY_LIMIT=1e4,PUBLIC_COLLECTION_NODE_LIMIT=5e4,PUBLIC_COLLECTION_WORK_LIMIT=PUBLIC_COLLECTION_NODE_LIMIT*2,PUBLIC_COLLECTION_DEPTH_LIMIT=256,OMIT_COLLECTION_VALUE=Symbol("omit-public-collection-value"),EXHAUSTED_COLLECTION_VALUE=Symbol("exhausted-public-collection-value");function isCollectionSnapshotFailure(value){return value===OMIT_COLLECTION_VALUE||value===EXHAUSTED_COLLECTION_VALUE}function consumeSnapshotWork(budget){return budget.remainingWork<=0?!1:(budget.remainingWork-=1,!0)}function snapshotRealm(view){const candidate=view;return{Array:candidate?.Array??Array,Date:candidate?.Date??Date,Map:candidate?.Map??Map,Object:candidate?.Object??Object,Set:candidate?.Set??Set}}function isRealmNeutralPlainRecord(value){try{const prototype=Object.getPrototypeOf(value);if(prototype===null)return!0;const constructor=Object.getOwnPropertyDescriptor(prototype,"constructor");return!!(constructor&&"value"in constructor&&typeof constructor.value=="function"&&constructor.value.name==="Object"&&Object.getPrototypeOf(prototype)===null)}catch{return!1}}function isArrayValue(value){try{return Array.isArray(value)}catch{return!1}}function isNativeArrayBufferView(value){try{return ArrayBuffer.isView(value)}catch{return!1}}function isImmutableBlob(value){if(typeof Blob>"u")return!1;const sizeGetter=Object.getOwnPropertyDescriptor(Blob.prototype,"size")?.get;if(!sizeGetter)return!1;try{return sizeGetter.call(value),!0}catch{return!1}}const MUTATING_DATE_METHODS=new Set(["setDate","setFullYear","setHours","setMilliseconds","setMinutes","setMonth","setSeconds","setTime","setUTCDate","setUTCFullYear","setUTCHours","setUTCMilliseconds","setUTCMinutes","setUTCMonth","setUTCSeconds","setYear"]);function nativeDateTime(value){try{return Date.prototype.getTime.call(value)}catch{return OMIT_COLLECTION_VALUE}}function snapshotReadonlyDate(source,time,budget){const target=new budget.realm.Date(time),boundMethods=new Map,rejectMutation=()=>{throw new TypeError("Cannot mutate a readonly Date snapshot")},snapshot=new Proxy(target,{get(date,key){if(MUTATING_DATE_METHODS.has(key))return rejectMutation;if(key==="constructor")return budget.realm.Date;const value=Reflect.get(date,key,date);if(typeof value!="function")return value;const cached=boundMethods.get(key);if(cached)return cached;const bound=value.bind(date);return boundMethods.set(key,bound),bound}});return rememberSnapshot(budget,source,snapshot),Object.freeze(snapshot)}function rememberSnapshot(budget,source,snapshot){budget.seen.set(source,snapshot),budget.additions.push(source)}function snapshotTransaction(budget,create){const remaining=budget.remaining,additions=budget.additions.length,result=create();if(!isCollectionSnapshotFailure(result))return result;budget.remaining=remaining;for(let index=budget.additions.length-1;index>=additions;index-=1)budget.seen.delete(budget.additions[index]);return budget.additions.length=additions,result}function emptyRealmArray(realm){return Object.freeze(new realm.Array)}function*ownEnumerableStringKeys(value){for(const key in value)yield key}function snapshotDataRecord(value,keys,prototype,budget,depth,preserveRecordKeys,preserveCollectionItemKeys){const output=budget.realm.Object.create(prototype);rememberSnapshot(budget,value,output);try{for(const key of keys){if(!consumeSnapshotWork(budget))return EXHAUSTED_COLLECTION_VALUE;const descriptor=getOwnDataDescriptor(value,key);if(descriptor===MISSING_OWN_DATA_DESCRIPTOR||descriptor===UNSAFE_OWN_DATA_DESCRIPTOR||!descriptor.enumerable)continue;if(budget.remaining<=0)return EXHAUSTED_COLLECTION_VALUE;budget.remaining-=1;const entry=preserveRecordKeys?.has(key)?descriptor.value:preserveCollectionItemKeys?.has(key)?snapshotIdentityCollection(descriptor.value,budget.realm,budget):snapshotCollectionValue(descriptor.value,budget,depth+1);if(isCollectionSnapshotFailure(entry))return entry;Object.defineProperty(output,key,{value:entry,enumerable:!0,configurable:!1,writable:!1})}}catch{return OMIT_COLLECTION_VALUE}return Object.freeze(output)}function snapshotCollectionValue(value,budget,depth,preserveRecordKeys,preserveCollectionItemKeys,allowPrefixTruncation=!1){if(value===null||typeof value!="object"&&typeof value!="function"||typeof value=="function")return value;if(budget.seen.has(value))return budget.seen.get(value);if(depth>PUBLIC_COLLECTION_DEPTH_LIMIT||budget.remaining<=0)return EXHAUSTED_COLLECTION_VALUE;if(isArrayValue(value)){if(!consumeSnapshotWork(budget))return EXHAUSTED_COLLECTION_VALUE;const lengthDescriptor=getOwnDataDescriptor(value,"length");if(lengthDescriptor===UNSAFE_OWN_DATA_DESCRIPTOR||lengthDescriptor===MISSING_OWN_DATA_DESCRIPTOR||typeof lengthDescriptor.value!="number"||!Number.isSafeInteger(lengthDescriptor.value)||lengthDescriptor.value<0)return allowPrefixTruncation?emptyRealmArray(budget.realm):OMIT_COLLECTION_VALUE;const sourceLength=lengthDescriptor.value;if(!allowPrefixTruncation&&sourceLength>PUBLIC_COLLECTION_ENTRY_LIMIT)return EXHAUSTED_COLLECTION_VALUE;const length=Math.min(sourceLength,PUBLIC_COLLECTION_ENTRY_LIMIT),output=new budget.realm.Array(length);rememberSnapshot(budget,value,output);for(let index=0;index<length;index+=1){if(budget.remaining<=0){if(!allowPrefixTruncation)return EXHAUSTED_COLLECTION_VALUE;output.length=index;break}if(!consumeSnapshotWork(budget)){if(!allowPrefixTruncation)return EXHAUSTED_COLLECTION_VALUE;output.length=index;break}const descriptor=getOwnDataDescriptor(value,String(index));if(descriptor===MISSING_OWN_DATA_DESCRIPTOR)continue;if(descriptor===UNSAFE_OWN_DATA_DESCRIPTOR){if(!allowPrefixTruncation)return OMIT_COLLECTION_VALUE;continue}const entry=snapshotTransaction(budget,()=>(budget.remaining-=1,snapshotCollectionValue(descriptor.value,budget,depth+1)));if(entry===OMIT_COLLECTION_VALUE){if(!allowPrefixTruncation)return OMIT_COLLECTION_VALUE;continue}if(entry===EXHAUSTED_COLLECTION_VALUE){if(!allowPrefixTruncation)return EXHAUSTED_COLLECTION_VALUE;output.length=index;break}Object.defineProperty(output,index,{value:entry,enumerable:!0,configurable:!1,writable:!1})}return Object.freeze(output)}if(isRealmNeutralPlainRecord(value)){let prototype;try{prototype=Object.getPrototypeOf(value)}catch{return OMIT_COLLECTION_VALUE}return snapshotDataRecord(value,ownEnumerableStringKeys(value),prototype===null?null:budget.realm.Object.prototype,budget,depth,preserveRecordKeys,preserveCollectionItemKeys)}const dateTime=nativeDateTime(value);if(dateTime!==OMIT_COLLECTION_VALUE)return snapshotReadonlyDate(value,dateTime,budget);const entries=nativeMapEntries(value);if(entries)return snapshotDetachedMap(value,entries,budget,depth,allowPrefixTruncation);const values=nativeSetValues(value);if(values)return snapshotDetachedSet(value,values,budget,depth,allowPrefixTruncation);if(isNativeArrayBufferView(value))return OMIT_COLLECTION_VALUE;const rect=snapshotDOMRect(value,budget);return rect!==OMIT_COLLECTION_VALUE?rect:isImmutableBlob(value)?value:OMIT_COLLECTION_VALUE}function snapshotPublicCollection(value,view){if(value===null||typeof value!="object"&&typeof value!="function")return value;const realm=snapshotRealm(view),budget={remaining:PUBLIC_COLLECTION_NODE_LIMIT,remainingWork:PUBLIC_COLLECTION_WORK_LIMIT,seen:new WeakMap,additions:[],realm},snapshot=snapshotTransaction(budget,()=>snapshotCollectionValue(value,budget,0,void 0,void 0,!0));if(!isCollectionSnapshotFailure(snapshot))return snapshot;if(isArrayValue(value)||isNativeArrayBufferView(value))return emptyRealmArray(realm);if(typeof value=="object"){if(nativeMapEntries(value))return readonlyMapFacade(new realm.Map,realm);if(nativeSetValues(value))return readonlySetFacade(new realm.Set,realm);if(isRealmNeutralPlainRecord(value)){const prototype=Object.getPrototypeOf(value);return Object.freeze(realm.Object.create(prototype===null?null:realm.Object.prototype))}}return emptyRealmArray(realm)}function nativeMapEntries(value){try{return Map.prototype.entries.call(value)}catch{return}}function nativeSetValues(value){try{return Set.prototype.values.call(value)}catch{return}}function snapshotDOMRect(value,budget){if(typeof DOMRectReadOnly>"u")return OMIT_COLLECTION_VALUE;const nativePrototype=DOMRectReadOnly.prototype,output=budget.realm.Object.create(budget.realm.Object.prototype);for(const key of["x","y","width","height","top","right","bottom","left"]){let coordinate;try{const getter=Object.getOwnPropertyDescriptor(nativePrototype,key)?.get;if(!getter)return OMIT_COLLECTION_VALUE;coordinate=getter.call(value)}catch{return OMIT_COLLECTION_VALUE}if(typeof coordinate!="number"||!Number.isFinite(coordinate))return OMIT_COLLECTION_VALUE;Object.defineProperty(output,key,{value:coordinate,enumerable:!0,configurable:!1,writable:!1})}return Object.freeze(output)}function readonlyMapFacade(backing,realm=snapshotRealm()){let facade;return facade=realm.Object.create(realm.Object.prototype),Object.defineProperties(facade,{size:{enumerable:!0,get:()=>backing.size},entries:{value:()=>backing.entries()},get:{value:key=>backing.get(key)},has:{value:key=>backing.has(key)},keys:{value:()=>backing.keys()},values:{value:()=>backing.values()},forEach:{value:(callback,thisArg)=>backing.forEach((entry,key)=>callback.call(thisArg,entry,key,facade))},[Symbol.iterator]:{value:()=>backing[Symbol.iterator]()}}),Object.freeze(facade)}function readonlySetFacade(backing,realm=snapshotRealm()){let facade;return facade=realm.Object.create(realm.Object.prototype),Object.defineProperties(facade,{size:{enumerable:!0,get:()=>backing.size},entries:{value:()=>backing.entries()},has:{value:entry=>backing.has(entry)},keys:{value:()=>backing.keys()},values:{value:()=>backing.values()},forEach:{value:(callback,thisArg)=>backing.forEach(entry=>callback.call(thisArg,entry,entry,facade))},[Symbol.iterator]:{value:()=>backing[Symbol.iterator]()}}),Object.freeze(facade)}function snapshotIdentityMap(entries,realm=snapshotRealm(),budget){const backing=new realm.Map;for(let count=0;count<PUBLIC_COLLECTION_ENTRY_LIMIT;count+=1){const next=entries.next();if(next.done)break;if(budget&&!consumeSnapshotWork(budget))return EXHAUSTED_COLLECTION_VALUE;backing.set(next.value[0],next.value[1])}return readonlyMapFacade(backing,realm)}function snapshotIdentitySet(values,realm=snapshotRealm(),budget){const backing=new realm.Set;for(let count=0;count<PUBLIC_COLLECTION_ENTRY_LIMIT;count+=1){const next=values.next();if(next.done)break;if(budget&&!consumeSnapshotWork(budget))return EXHAUSTED_COLLECTION_VALUE;backing.add(next.value)}return readonlySetFacade(backing,realm)}function snapshotDetachedMap(source,entries,budget,depth,allowPrefixTruncation){const backing=new budget.realm.Map,facade=readonlyMapFacade(backing,budget.realm);rememberSnapshot(budget,source,facade);for(let count=0;count<PUBLIC_COLLECTION_ENTRY_LIMIT;count+=1){let next;try{next=entries.next()}catch{break}if(next.done)break;if(budget.remaining<=0||!consumeSnapshotWork(budget))return allowPrefixTruncation?facade:EXHAUSTED_COLLECTION_VALUE;const pair=snapshotTransaction(budget,()=>{budget.remaining-=1;const key=snapshotCollectionValue(next.value[0],budget,depth+1);if(isCollectionSnapshotFailure(key))return key;const entry=snapshotCollectionValue(next.value[1],budget,depth+1);return isCollectionSnapshotFailure(entry)?entry:[key,entry]});if(pair===EXHAUSTED_COLLECTION_VALUE)return allowPrefixTruncation?facade:EXHAUSTED_COLLECTION_VALUE;pair!==OMIT_COLLECTION_VALUE&&backing.set(pair[0],pair[1])}return facade}function snapshotDetachedSet(source,values,budget,depth,allowPrefixTruncation){const backing=new budget.realm.Set,facade=readonlySetFacade(backing,budget.realm);rememberSnapshot(budget,source,facade);for(let count=0;count<PUBLIC_COLLECTION_ENTRY_LIMIT;count+=1){let next;try{next=values.next()}catch{break}if(next.done)break;if(budget.remaining<=0||!consumeSnapshotWork(budget))return allowPrefixTruncation?facade:EXHAUSTED_COLLECTION_VALUE;const entry=snapshotTransaction(budget,()=>(budget.remaining-=1,snapshotCollectionValue(next.value,budget,depth+1)));if(entry===EXHAUSTED_COLLECTION_VALUE)return allowPrefixTruncation?facade:EXHAUSTED_COLLECTION_VALUE;entry!==OMIT_COLLECTION_VALUE&&backing.add(entry)}return facade}function snapshotIdentityCollection(value,view,budget){const realm=snapshotRealm(view);if(budget&&value!==null&&(typeof value=="object"||typeof value=="function")&&budget.seen.has(value))return budget.seen.get(value);if(isArrayValue(value)){if(budget&&!consumeSnapshotWork(budget))return EXHAUSTED_COLLECTION_VALUE;const lengthDescriptor=getOwnDataDescriptor(value,"length"),length=lengthDescriptor!==MISSING_OWN_DATA_DESCRIPTOR&&lengthDescriptor!==UNSAFE_OWN_DATA_DESCRIPTOR&&typeof lengthDescriptor.value=="number"&&Number.isSafeInteger(lengthDescriptor.value)&&lengthDescriptor.value>=0?Math.min(lengthDescriptor.value,PUBLIC_COLLECTION_ENTRY_LIMIT):0,output=new realm.Array(length);budget&&rememberSnapshot(budget,value,output);for(let index=0;index<length;index+=1){if(budget&&!consumeSnapshotWork(budget))return EXHAUSTED_COLLECTION_VALUE;const descriptor=getOwnDataDescriptor(value,String(index));descriptor===MISSING_OWN_DATA_DESCRIPTOR||descriptor===UNSAFE_OWN_DATA_DESCRIPTOR||Object.defineProperty(output,index,{value:descriptor.value,enumerable:!0,configurable:!1,writable:!1})}return Object.freeze(output)}if(value===null||typeof value!="object")return value;const mapEntries=nativeMapEntries(value);if(mapEntries){const output=snapshotIdentityMap(mapEntries,realm,budget);return output===EXHAUSTED_COLLECTION_VALUE||budget&&rememberSnapshot(budget,value,output),output}const setValues=nativeSetValues(value);if(setValues){const output=snapshotIdentitySet(setValues,realm,budget);return output===EXHAUSTED_COLLECTION_VALUE||budget&&rememberSnapshot(budget,value,output),output}return emptyRealmArray(realm)}function snapshotEventDetail(value,view,preserveRootKeys,preserveCollectionItemKeys){if(value==null)return value;const budget={remaining:PUBLIC_COLLECTION_NODE_LIMIT,remainingWork:PUBLIC_COLLECTION_WORK_LIMIT,seen:new WeakMap,additions:[],realm:snapshotRealm(view)},snapshot=snapshotTransaction(budget,()=>snapshotCollectionValue(value,budget,0,preserveRootKeys,preserveCollectionItemKeys));return isCollectionSnapshotFailure(snapshot)?null:snapshot}const SEED_FIRST_RENDER_STATE=Symbol("lr-seed-first-render-state"),SLOT_PRESENCE_UNRESOLVED=Symbol("lr-slot-presence-unresolved"),REACTIVE_HOST_ATTRIBUTES=["aria-label","aria-describedby","lang","dir"],DIRECTION_HOST_ATTRIBUTES=["class","style","slot"];function trustedLyraConstructorChain(instance){const constructors=[];let prototype=Object.getPrototypeOf(instance);for(;prototype&&prototype!==LitElement.prototype;){const descriptor=Object.getOwnPropertyDescriptor(prototype,"constructor");typeof descriptor?.value=="function"&&constructors.push(descriptor.value),prototype=Object.getPrototypeOf(prototype)}return constructors}function lyraClassChain(ctor){const constructors=[];let current=ctor;for(;typeof current=="function"&¤t!==LitElement;)constructors.push(current),current=Object.getPrototypeOf(current);return constructors}const collectionPolicyByConstructor=new WeakMap;function collectionPropertyPolicy(ctor,name){let policies=collectionPolicyByConstructor.get(ctor);policies||(policies=new Map,collectionPolicyByConstructor.set(ctor,policies));const cached=policies.get(name);if(cached)return cached;let owns=!1,preservesItemIdentity=!1,preservesObjectIdentity=!1;for(const constructor of lyraClassChain(ctor)){const declared=constructor;Object.prototype.hasOwnProperty.call(constructor,"ownedCollectionProperties")&&declared.ownedCollectionProperties.includes(name)&&(owns=!0),Object.prototype.hasOwnProperty.call(constructor,"identityCollectionProperties")&&declared.identityCollectionProperties.includes(name)&&(preservesItemIdentity=!0),Object.prototype.hasOwnProperty.call(constructor,"identityCollectionObjectProperties")&&declared.identityCollectionObjectProperties.includes(name)&&(preservesObjectIdentity=!0)}const policy=Object.freeze({owns,preservesItemIdentity,preservesObjectIdentity});return policies.set(name,policy),policy}const COLLECTION_ENROLLMENT_FIELDS=["ownedCollectionProperties","identityCollectionProperties","identityCollectionObjectProperties"];function enrolledCollectionPropertyNames(ctor){const names=new Set;for(const constructor of lyraClassChain(ctor))for(const field of COLLECTION_ENROLLMENT_FIELDS){if(!Object.prototype.hasOwnProperty.call(constructor,field))continue;const declared=constructor;for(const name of declared[field])names.add(name)}return names}function inheritedPropertyDescriptor(prototype,name){let current=prototype;for(;current;){const descriptor=Object.getOwnPropertyDescriptor(current,name);if(descriptor)return descriptor;current=Object.getPrototypeOf(current)}}const installedOwnershipBoundaries=new WeakSet,ownershipBoundarySetters=new WeakMap;function samePolicy(a,b){return a.owns===b.owns&&a.preservesItemIdentity===b.preservesItemIdentity&&a.preservesObjectIdentity===b.preservesObjectIdentity}function installOwnedCollectionAccessors(ctor){if(installedOwnershipBoundaries.has(ctor))return;installedOwnershipBoundaries.add(ctor);const prototype=ctor.prototype;for(const name of enrolledCollectionPropertyNames(ctor)){const policy=collectionPropertyPolicy(ctor,name);if(!policy.owns)continue;const declaration=ctor.elementProperties.get(name);if(!declaration||declaration.noAccessor)continue;const descriptor=inheritedPropertyDescriptor(prototype,name),inheritedSet=descriptor?.set;if(!inheritedSet)continue;const installed=ownershipBoundarySetters.get(inheritedSet);if(installed&&samePolicy(installed.policy,policy))continue;const originalSet=installed?.originalSet??inheritedSet,lastAssignments=new WeakMap,set=function(value){const previous=lastAssignments.get(this);if(previous&&declaration.hasChanged===void 0&&!policy.preservesItemIdentity&&!policy.preservesObjectIdentity&&(Object.is(value,previous.source)||Object.is(value,previous.retained)))return;const ownerView=this.ownerDocument?.defaultView,snapshot=policy.preservesObjectIdentity&&value!==null&&typeof value=="object"&&!isArrayValue(value)?value:policy.preservesItemIdentity?snapshotIdentityCollection(value,ownerView):snapshotPublicCollection(value,ownerView);originalSet.call(this,snapshot),lastAssignments.set(this,{source:value,retained:descriptor.get?.call(this)??snapshot})};ownershipBoundarySetters.set(set,{policy,originalSet}),Object.defineProperty(prototype,name,{...descriptor,set})}}function isCrossDocumentStyleSheetRejection(error){return typeof error=="object"&&error!==null&&error.name==="NotAllowedError"}class LyraElement extends LitElement{static{this.styles=[palette,tokens]}static{this.ownedCollectionProperties=Object.freeze([])}static{this.identityCollectionProperties=Object.freeze([])}static{this.identityCollectionObjectProperties=Object.freeze([])}static{this.immutableEventDetails=Object.freeze([])}static{this.identityEventDetailProperties=Object.freeze({})}static{this.identityEventDetailCollectionItems=Object.freeze({})}static{this.defaultStrings=Object.freeze({})}static get observedAttributes(){const attributes=[...new Set([...super.observedAttributes,...REACTIVE_HOST_ATTRIBUTES,...DIRECTION_HOST_ATTRIBUTES])];return installOwnedCollectionAccessors(this),attributes}get strings(){return this.stringsValue}set strings(value){const previous=this.stringsValue;this.stringsValue=snapshotLyraLocaleStrings(value),this.requestUpdate("strings",previous)}constructor(){if(super(),this.locale="",this.stringsValue=snapshotLyraLocaleStrings({}),this.localeSubscriptionNeeded=!1,this.constructor.formAssociated){const controller=(this.constructor[FORM_CONTROL_LABEL_FACTORY]??externalLabelFactory)?.(this);controller&&this.addController(controller)}}attachInternals(){const internals=super.attachInternals();return formInternalsHook?.(this,internals),internals}createRenderRoot(){try{return super.createRenderRoot()}catch(error){if(!isCrossDocumentStyleSheetRejection(error))throw error;const constructor=this.constructor,renderRoot=this.shadowRoot??this.attachShadow(constructor.shadowRootOptions),owner=this.ownerDocument;for(const style of constructor.elementStyles){const element=owner.createElement("style");element.textContent=style instanceof CSSStyleSheet?Array.from(style.cssRules,rule=>rule.cssText).join(`
|
|
2
|
+
`):style.cssText,renderRoot.appendChild(element)}return this.renderOptions.renderBefore??=renderRoot.firstChild,renderRoot}}connectedCallback(){this.hydratingServerShadow??=typeof Node>"u"||!this.hasUpdated&&this.shadowRoot!==null,super.connectedCallback(),warnUnknownAttributes(this,this.constructor.observedAttributes,this.constructor.knownUnobservedAttributes??[]),recordLyraOwnerDocumentConnection(this),enableLyraLocaleCache(this),invalidateLyraLocaleCache(this),this.stopInheritedContextObservation?.(),this.stopInheritedContextObservation=observeInheritedContext(this),this.localeSubscriptionNeeded&&this.ensureLocaleSubscription(),this.lastLocalizedCatalogVersion!==void 0&&lyraLocaleCatalogVersion(resolveLyraLocale(this))!==this.lastLocalizedCatalogVersion&&this.requestUpdate();const deferred=this.deferredAfterUpdate;if(deferred){this.deferredAfterUpdate=void 0;for(const[key,callback]of deferred)this.scheduleAfterUpdate(callback,key)}}disconnectedCallback(){this.pendingLoadController?.abort(),this.pendingLoadController=void 0,this.stopLocaleSubscription?.(),this.stopLocaleSubscription=void 0,this.stopInheritedContextObservation?.(),this.stopInheritedContextObservation=void 0,invalidateLyraLocaleCache(this),super.disconnectedCallback()}adoptedCallback(){this.stopLocaleSubscription?.(),this.stopLocaleSubscription=void 0,invalidateLyraLocaleCache(this),this.isConnected&&this.localeSubscriptionNeeded&&this.ensureLocaleSubscription()}requestUpdate(name,oldValue,options){invalidateLyraLocaleCache(this),super.requestUpdate(name,oldValue,options)}performUpdate(){beginInheritedContextUpdate(this);try{super.performUpdate()}finally{finishInheritedContextUpdate(this)}}update(changedProperties){super.update(changedProperties),markInheritedContextUpdateRendered(this)}ensureLocaleSubscription(){this.localeSubscriptionNeeded=!0,!(!this.isConnected||this.stopLocaleSubscription)&&(this.stopLocaleSubscription=subscribeLyraLocaleForHost(this))}attributeChangedCallback(name,oldValue,value){const directionHostAttribute=oldValue!==value&&DIRECTION_HOST_ATTRIBUTES.includes(name);directionHostAttribute&&queueInheritedDirectionChange(this,name==="slot"),super.attributeChangedCallback(name,oldValue,value),oldValue!==value&&REACTIVE_HOST_ATTRIBUTES.includes(name)?this.requestUpdate():directionHostAttribute&&invalidateLyraLocaleCache(this)}seedFirstRenderState(seed){this.hasUpdated||this[SEED_FIRST_RENDER_STATE](seed)}[SEED_FIRST_RENDER_STATE](seed){if(!this.hydratingServerShadow){seed();return}const pending=this.deferredFirstRenderSeeds??=new Set;pending.add(seed),!(pending.size>1)&&this.updateComplete.then(()=>{setTimeout(()=>{this.hydratingServerShadow=!1;const seeds=this.deferredFirstRenderSeeds;this.deferredFirstRenderSeeds=void 0;for(const deferred of seeds??[])deferred();this.requestUpdate()},0)},()=>{this.hydratingServerShadow=!1,this.deferredFirstRenderSeeds=void 0})}updateBrowserDerivedState(update){this[SEED_FIRST_RENDER_STATE](update)}renderSlotPresence(present){return present||this[SLOT_PRESENCE_UNRESOLVED]()}[SLOT_PRESENCE_UNRESOLVED](){return typeof Node>"u"||this.hydratingServerShadow===!0}beginAbortableLoad(){this.pendingLoadController?.abort(),this.pendingLoadController=void 0;const AbortControllerCtor=this.ownerDocument?.defaultView?.AbortController;if(AbortControllerCtor)return this.pendingLoadController=new AbortControllerCtor,this.pendingLoadController.signal}scheduleAfterUpdate(callback,key="load"){const pending=this.afterUpdateCallbacks??=new Map;pending.has(key)||(pending.set(key,callback),!(pending.size>1)&&queueMicrotask(()=>{const due=this.afterUpdateCallbacks;if(this.afterUpdateCallbacks=void 0,!due)return;if(this.isConnected){for(const due_callback of due.values())due_callback();return}const held=this.deferredAfterUpdate??=new Map;for(const[heldKey,heldCallback]of due)held.has(heldKey)||held.set(heldKey,heldCallback)}))}localize(key,fallback,values){const message=resolveLyraString(this,key,this.strings,fallback,values,this.constructor.defaultStrings),locale=peekLyraLocale(this);return recordInheritedLocaleRead(this,locale),locale!==void 0&&(this.lastLocalizedCatalogVersion=lyraLocaleCatalogVersion(locale),this.ensureLocaleSubscription()),message}get effectiveMessageLocale(){if(this.locale)return canonicalizeLyraLocale(this.locale);const locale=resolveLyraLocale(this);return recordInheritedLocaleRead(this,locale),this.ensureLocaleSubscription(),locale}get effectiveLocale(){return resolveIntlLocale(this.effectiveMessageLocale)}get effectiveIntlLocale(){return this.effectiveLocale}get effectiveDirection(){const direction=resolveLyraDirection(this);return recordInheritedDirectionRead(this,direction),direction}addEventListener(type,listener,options){super.addEventListener(type,listener,options)}removeEventListener(type,listener,options){super.removeEventListener(type,listener,options)}emit(name,...args){const[detail,options]=args,ownerDocument=this.ownerDocument;let CustomEventCtor=ownerDocument?.defaultView?.CustomEvent;if(!CustomEventCtor&&ownerDocument)try{const candidate=ownerDocument.createEvent("CustomEvent").constructor;typeof candidate=="function"&&(CustomEventCtor=candidate)}catch{}CustomEventCtor??=globalThis.CustomEvent;let snapshotsDetail=!1;const identityDetailKeys=new Set,identityCollectionItemKeys=new Set;for(const constructor of trustedLyraConstructorChain(this)){if(Object.prototype.hasOwnProperty.call(constructor,"immutableEventDetails")&&constructor.immutableEventDetails.includes(name)&&(snapshotsDetail=!0),Object.prototype.hasOwnProperty.call(constructor,"identityEventDetailProperties"))for(const key of constructor.identityEventDetailProperties[name]??[])identityDetailKeys.add(key);if(Object.prototype.hasOwnProperty.call(constructor,"identityEventDetailCollectionItems"))for(const key of constructor.identityEventDetailCollectionItems[name]??[])identityCollectionItemKeys.add(key)}const event=new CustomEventCtor(name,{detail:detail===void 0?null:snapshotsDetail?snapshotEventDetail(detail,ownerDocument?.defaultView,identityDetailKeys,identityCollectionItemKeys):detail,bubbles:!0,composed:!0,cancelable:options?.cancelable??!1});return this.dispatchEvent(event),event}}__decorate([property({reflect:!0})],LyraElement.prototype,"locale",void 0),__decorate([property({attribute:!1})],LyraElement.prototype,"strings",null);export{FORM_CONTROL_LABEL_FACTORY,LyraElement,SEED_FIRST_RENDER_STATE,SLOT_PRESENCE_UNRESOLVED,registerFormControlLabelSupport};
|
|
@@ -2,4 +2,4 @@
|
|
|
2
2
|
* Generated from package.json by scripts/generate-package-metadata.mjs.
|
|
3
3
|
* Run `pnpm package-metadata` after changing package identity or version.
|
|
4
4
|
*/
|
|
5
|
-
export declare const LYRA_PACKAGE_NAME:'@aceshooting/lyra-ui';export declare const LYRA_PACKAGE_VERSION:'
|
|
5
|
+
export declare const LYRA_PACKAGE_NAME:'@aceshooting/lyra-ui';export declare const LYRA_PACKAGE_VERSION:'14.0.0';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
const LYRA_PACKAGE_NAME="@aceshooting/lyra-ui",LYRA_PACKAGE_VERSION="
|
|
1
|
+
const LYRA_PACKAGE_NAME="@aceshooting/lyra-ui",LYRA_PACKAGE_VERSION="14.0.0";export{LYRA_PACKAGE_NAME,LYRA_PACKAGE_VERSION};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{resolveOptionalPeerCapability}from"./optional-peer-capabilities.js";function isPapaParseApi(value){return(typeof value=="object"||typeof value=="function")&&value!==null&&"parse"in value&&typeof value.parse=="function"}let cached;async function loadPapaParse(importPapaParse=()=>import("papaparse")){try{const module=await importPapaParse();return resolveOptionalPeerCapability(module,isPapaParseApi)}catch
|
|
1
|
+
import{resolveOptionalPeerCapability}from"./optional-peer-capabilities.js";import{devWarnOnce}from"./dev-mode-attribute-warning.js";const PAPAPARSE_WARNING_KEY="lyra-papaparse-unavailable",PAPAPARSE_WARNING="A lyra-ui component could not load its optional papaparse peer.";function isPapaParseApi(value){return(typeof value=="object"||typeof value=="function")&&value!==null&&"parse"in value&&typeof value.parse=="function"}let cached;async function loadPapaParse(importPapaParse=()=>import("papaparse")){try{const module=await importPapaParse();return resolveOptionalPeerCapability(module,isPapaParseApi)}catch{return devWarnOnce(PAPAPARSE_WARNING_KEY,PAPAPARSE_WARNING),null}}function loadPapaParseCached(){return cached||(cached=loadPapaParse()),cached}function clearPapaParseCache(){cached=void 0}export{clearPapaParseCache,loadPapaParse,loadPapaParseCached};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
const PLACEHOLDER=/(\{\w+\})/g;function transformMessage(message,transform){const transformText=text=>text.split(PLACEHOLDER).map(part=>/^\{\w+\}$/.test(part)?part:transform(part)).join("");return typeof message=="string"?transformText(message):Object.fromEntries(Object.entries(message).map(([category,text])=>[category,transformText(text)]))}function createPseudoCatalog(source,transform){return Object.fromEntries(Object.entries(source).map(([key,message])=>[key,transformMessage(message,transform)]))}const ACCENTS=Object.freeze({A:"
|
|
1
|
+
const PLACEHOLDER=/(\{\w+\})/g;function transformMessage(message,transform){const transformText=text=>text.split(PLACEHOLDER).map(part=>/^\{\w+\}$/.test(part)?part:transform(part)).join("");return typeof message=="string"?transformText(message):Object.fromEntries(Object.entries(message).map(([category,text])=>[category,transformText(text)]))}function createPseudoCatalog(source,transform){return Object.fromEntries(Object.entries(source).map(([key,message])=>[key,transformMessage(message,transform)]))}const ACCENTS=Object.freeze({A:"Å",B:"Ɓ",C:"Ç",D:"Ð",E:"É",F:"Ƒ",G:"Ĝ",H:"Ĥ",I:"Ï",J:"Ĵ",K:"Ķ",L:"Ļ",M:"Ṁ",N:"Ñ",O:"Ø",P:"Ṕ",Q:"Ǫ",R:"Ŕ",S:"Š",T:"Ţ",U:"Û",V:"Ṽ",W:"Ŵ",X:"Ẋ",Y:"Ý",Z:"Ž",a:"å",b:"ɓ",c:"ç",d:"ð",e:"é",f:"ƒ",g:"ĝ",h:"ĥ",i:"ï",j:"ĵ",k:"ķ",l:"ļ",m:"ṁ",n:"ñ",o:"ø",p:"ṕ",q:"ǫ",r:"ŕ",s:"š",t:"ţ",u:"û",v:"ṽ",w:"ŵ",x:"ẋ",y:"ý",z:"ž"}),pseudoExpand=literal=>Array.from(literal,character=>{const accented=ACCENTS[character]??character;return/[AEIOUaeiou]/.test(character)?`${accented}${accented}`:accented}).join(""),MIRRORED_PUNCTUATION=Object.freeze({"(":")",")":"(","[":"]","]":"[","{":"}","}":"{","<":">",">":"<"}),pseudoMirror=literal=>Array.from(literal).reverse().map(character=>MIRRORED_PUNCTUATION[character]??character).join("");export{createPseudoCatalog,pseudoExpand,pseudoMirror};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
const UNSAFE_CSS_STRUCTURE=/[;{}]/,URL_FUNCTION=/url\s*\(/i,SAFE_SWATCH_COLOR_FALLBACK=/^(?:#[0-9a-fA-F]{3,8}|[a-zA-Z]+|(?:rgb|rgba|hsl|hsla|hwb|lab|lch|oklab|oklch|color|color-mix)\([^;{}]*\)|var\(--[\w-]+(?:\s*,[^;{}]+)?\))$/,SAFE_LENGTH_FALLBACK=/^(?:auto|none|fit-content|max-content|min-content|stretch|[-+]?(?:\d+|\d*\.\d+)(?:px|em|rem|%|ch|ex|cap|ic|lh|rlh|vw|vh|vi|vb|vmin|vmax|svw|svh|lvw|lvh|dvw|dvh|cm|mm|q|in|pt|pc)|(?:calc|min|max|clamp|var)\([^;{}]+\))$/,SAFE_INSET_FALLBACK=/^(?:(?:auto|[-+]?(?:\d+|\d*\.\d+)(?:px|em|rem|%|ch|vw|vh|vmin|vmax)|var\(--[\w-]+(?:\s*,[^;{}]+)?\))(?:\s+|$)){1,4}$/;function structurallySafe(value){return typeof value=="string"&&value.trim()!==""&&!UNSAFE_CSS_STRUCTURE.test(value)&&!URL_FUNCTION.test(value)}function propertyAccepts(property,value,fallback){return typeof CSS<"u"&&typeof CSS.supports=="function"?CSS.supports(property,value.trim()):fallback.test(value.trim())}function sanitizeCssColor(color){if(structurallySafe(color))return propertyAccepts("color",color,SAFE_SWATCH_COLOR_FALLBACK)?color:void 0}function sanitizeCssLength(value,property="max-height"){if(structurallySafe(value))return propertyAccepts(property,value,SAFE_LENGTH_FALLBACK)?value:void 0}function sanitizeCssInset(value){if(structurallySafe(value))return propertyAccepts("inset",value,SAFE_INSET_FALLBACK)?value:void 0}function sanitizeCssResize(value,fallback){return value==="none"||value==="both"||value==="horizontal"||value==="vertical"?value:fallback}function sanitizePercentRect(value){if(typeof value!="object"||value===null)return;const
|
|
1
|
+
import{getOwnDataDescriptor,MISSING_OWN_DATA_DESCRIPTOR,UNSAFE_OWN_DATA_DESCRIPTOR}from"./data-descriptors.js";const UNSAFE_CSS_STRUCTURE=/[;{}]/,URL_FUNCTION=/url\s*\(/i,SAFE_SWATCH_COLOR_FALLBACK=/^(?:#[0-9a-fA-F]{3,8}|[a-zA-Z]+|(?:rgb|rgba|hsl|hsla|hwb|lab|lch|oklab|oklch|color|color-mix)\([^;{}]*\)|var\(--[\w-]+(?:\s*,[^;{}]+)?\))$/,SAFE_LENGTH_FALLBACK=/^(?:auto|none|fit-content|max-content|min-content|stretch|[-+]?(?:\d+|\d*\.\d+)(?:px|em|rem|%|ch|ex|cap|ic|lh|rlh|vw|vh|vi|vb|vmin|vmax|svw|svh|lvw|lvh|dvw|dvh|cm|mm|q|in|pt|pc)|(?:calc|min|max|clamp|var)\([^;{}]+\))$/,SAFE_INSET_FALLBACK=/^(?:(?:auto|[-+]?(?:\d+|\d*\.\d+)(?:px|em|rem|%|ch|vw|vh|vmin|vmax)|var\(--[\w-]+(?:\s*,[^;{}]+)?\))(?:\s+|$)){1,4}$/;function structurallySafe(value){return typeof value=="string"&&value.trim()!==""&&!UNSAFE_CSS_STRUCTURE.test(value)&&!URL_FUNCTION.test(value)}function propertyAccepts(property,value,fallback){return typeof CSS<"u"&&typeof CSS.supports=="function"?CSS.supports(property,value.trim()):fallback.test(value.trim())}function sanitizeCssColor(color){if(structurallySafe(color))return propertyAccepts("color",color,SAFE_SWATCH_COLOR_FALLBACK)?color:void 0}function sanitizeCssLength(value,property="max-height"){if(structurallySafe(value))return propertyAccepts(property,value,SAFE_LENGTH_FALLBACK)?value:void 0}function sanitizeCssInset(value){if(structurallySafe(value))return propertyAccepts("inset",value,SAFE_INSET_FALLBACK)?value:void 0}function sanitizeCssResize(value,fallback){return value==="none"||value==="both"||value==="horizontal"||value==="vertical"?value:fallback}function sanitizePercentRect(value){try{if(typeof value!="object"||value===null||Array.isArray(value))return;const read=key=>{const descriptor=getOwnDataDescriptor(value,key);if(!(descriptor===MISSING_OWN_DATA_DESCRIPTOR||descriptor===UNSAFE_OWN_DATA_DESCRIPTOR))return descriptor.value},x=read("x"),y=read("y"),width=read("width"),height=read("height");return typeof x!="number"||typeof y!="number"||typeof width!="number"||typeof height!="number"||!Number.isFinite(x)||!Number.isFinite(y)||!Number.isFinite(width)||!Number.isFinite(height)||width<0||height<0?void 0:{x,y,width,height}}catch{return}}export{sanitizeCssColor,sanitizeCssInset,sanitizeCssLength,sanitizeCssResize,sanitizePercentRect};
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Snaps a finite value to a low-end-anchored step grid, then applies the
|
|
3
|
+
* finite inclusive range clamp. The final clamp deliberately follows the
|
|
4
|
+
* snap so a non-grid endpoint remains reachable.
|
|
5
|
+
*/
|
|
6
|
+
export declare function clampSteppedValue(raw:number,min:number,max:number,step:number):number;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{decimalPlaces,finiteNumber,finiteRange}from"./numbers.js";function clampSteppedValue(raw,min,max,step){const safeMin=finiteNumber(min,0),safeMax=finiteNumber(max,safeMin),lo=Math.min(safeMin,safeMax),hi=Math.max(safeMin,safeMax),safeRaw=finiteNumber(raw,lo),safeStep=finiteRange(step,0,0);if(safeRaw===lo||safeRaw===hi)return safeRaw;const resolutionFloor=Number.EPSILON*Math.max(Math.abs(lo),Math.abs(safeRaw),safeStep)*4;if(safeStep<=resolutionFloor)return finiteRange(safeRaw,lo,lo,hi);let stepped=safeRaw;if(safeStep>0){const stepsFromLo=Math.round((safeRaw-lo)/safeStep);if(Number.isFinite(stepsFromLo)){const candidate=lo+stepsFromLo*safeStep;if(Number.isFinite(candidate)){stepped=candidate;const precision=Math.max(decimalPlaces(lo),decimalPlaces(safeStep));if(precision<=15){const factor=10**precision,rounded=Math.round(candidate*factor);Number.isSafeInteger(rounded)&&(stepped=rounded/factor)}}}}return finiteRange(stepped,lo,lo,hi)}export{clampSteppedValue};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{TEXT_QUOTE_CONTEXT_CHARS}from"../components/viewers/document-viewer/anchors.js";import{getSegmenter,resolveIntlLocale}from"./intl-cache.js";const SOFT_HYPHEN="\xAD",WHITESPACE_CHAR_RE=/\s/u,NORMALIZATION_SPECIAL_CHAR_RE=/[\s]/u,TEXT_QUOTE_LIMITS=Object.freeze({maxCorpusCodeUnits:1e6,maxNodes:2e4,maxTraversalNodes:2e4,maxNodeCodeUnits:1e6,maxNormalizationWorkCodeUnits:2e6,maxQueryCodeUnits:4096,maxMatches:1e4,maxSearchWorkCodeUnits:4e6,maxCacheEntries:64});function resolvedLimits(overrides){const boundedInteger=(value,hardMaximum)=>Number.isFinite(value)?Math.min(hardMaximum,Math.max(0,Math.floor(value))):hardMaximum;return{maxCorpusCodeUnits:boundedInteger(overrides?.maxCorpusCodeUnits,TEXT_QUOTE_LIMITS.maxCorpusCodeUnits),maxNodes:boundedInteger(overrides?.maxNodes,TEXT_QUOTE_LIMITS.maxNodes),maxTraversalNodes:boundedInteger(overrides?.maxTraversalNodes,TEXT_QUOTE_LIMITS.maxTraversalNodes),maxNodeCodeUnits:boundedInteger(overrides?.maxNodeCodeUnits,TEXT_QUOTE_LIMITS.maxNodeCodeUnits),maxNormalizationWorkCodeUnits:boundedInteger(overrides?.maxNormalizationWorkCodeUnits,TEXT_QUOTE_LIMITS.maxNormalizationWorkCodeUnits),maxQueryCodeUnits:boundedInteger(overrides?.maxQueryCodeUnits,TEXT_QUOTE_LIMITS.maxQueryCodeUnits),maxMatches:boundedInteger(overrides?.maxMatches,TEXT_QUOTE_LIMITS.maxMatches),maxSearchWorkCodeUnits:boundedInteger(overrides?.maxSearchWorkCodeUnits,TEXT_QUOTE_LIMITS.maxSearchWorkCodeUnits),maxCacheEntries:boundedInteger(overrides?.maxCacheEntries,TEXT_QUOTE_LIMITS.maxCacheEntries)}}function normalizeQuoteText(s){return collapseWhitespaceAndSoftHyphen(s.normalize("NFC")).trim()}function collapseWhitespaceAndSoftHyphen(s){let out="",lastWasSpace=!1;for(const ch of s)if(ch!==SOFT_HYPHEN)if(WHITESPACE_CHAR_RE.test(ch)){if(lastWasSpace)continue;lastWasSpace=!0,out+=" "}else lastWasSpace=!1,out+=ch;return out}const scopeRoots=new WeakMap;function trackScopeRoot(scope,root,includesRootPrefix=!1,includesRootSuffix=!1){const first=scope.segments[0]?.node,last=scope.segments.at(-1)?.node;if(!first||!last)return scope;let node=includesRootPrefix?nextNodeWithin(root,root,!0):first;const textInterval=[],textValues=[];let segmentIndex=0,traversed=0,reachedLast=!1,unexpectedItemText=!1;for(;node&&traversed++<TEXT_QUOTE_LIMITS.maxTraversalNodes;){if(node.nodeType===Node.TEXT_NODE){const text=node;if(textInterval.push(text),textValues.push(text.data),text===scope.segments[segmentIndex]?.node?segmentIndex++:includesRootPrefix||(unexpectedItemText=!0),node===last&&(reachedLast=!0,!includesRootSuffix))break}const descend=!includesRootPrefix||node.nodeType!==Node.ELEMENT_NODE||!SKIP_TAGS.has(node.tagName);node=nextNodeWithin(root,node,descend)}return scopeRoots.set(scope,{root,textInterval,valid:reachedLast&&segmentIndex===scope.segments.length&&!unexpectedItemText&&(!includesRootSuffix||node===null),textValues,includesRootPrefix,includesRootSuffix}),scope}const MARK_RE=/\p{Mark}/u;function hangulSyllableType(character){const codePoint=character.codePointAt(0);return codePoint===void 0?null:codePoint>=4352&&codePoint<=4447||codePoint>=43360&&codePoint<=43388?"L":codePoint>=4448&&codePoint<=4519||codePoint>=55216&&codePoint<=55238?"V":codePoint>=4520&&codePoint<=4607||codePoint>=55243&&codePoint<=55291?"T":codePoint<44032||codePoint>55203?null:(codePoint-44032)%28===0?"LV":"LVT"}function continuesHangulSyllable(previous,next){const previousType=hangulSyllableType(previous),nextType=hangulSyllableType(next);return previousType==="L"?nextType==="L"||nextType==="V"||nextType==="LV"||nextType==="LVT":previousType==="LV"||previousType==="V"?nextType==="V"||nextType==="T":(previousType==="LVT"||previousType==="T")&&nextType==="T"}function lastCodePoint(value){if(value.length===0)return;const last=value.charCodeAt(value.length-1),start=last>=56320&&last<=57343&&value.length>1&&value.charCodeAt(value.length-2)>=55296&&value.charCodeAt(value.length-2)<=56319?value.length-2:value.length-1;return value.slice(start)}function firstVisibleCodePoint(value){for(const character of value)if(character!==SOFT_HYPHEN)return WHITESPACE_CHAR_RE.test(character)?" ":character}function continuesPreviousGrapheme(previousCharacter,firstCharacter){if(firstCharacter===void 0)return!1;const composesAcrossBoundary=previousCharacter!==void 0&&`${previousCharacter}${firstCharacter}`.normalize("NFC")!==`${previousCharacter.normalize("NFC")}${firstCharacter.normalize("NFC")}`;return MARK_RE.test(firstCharacter)||firstCharacter==="\uFE0F"||firstCharacter==="\u200D"||previousCharacter==="\u200D"||previousCharacter!==void 0&&continuesHangulSyllable(previousCharacter,firstCharacter)||composesAcrossBoundary}function*normalizationClusters(value){if(typeof Intl.Segmenter=="function"){for(const{segment,index}of segmenterFor().segment(value))yield{text:segment,rawStart:index,rawEnd:index+segment.length};return}let cluster="",rawStart=0,rawEnd=0,joinsNext=!1,previousCharacter="";for(const char of value)!(cluster!==""&&(MARK_RE.test(char)||char==="\uFE0F"||joinsNext||continuesHangulSyllable(previousCharacter,char)))&&cluster&&(yield{text:cluster,rawStart,rawEnd},cluster="",rawStart=rawEnd),cluster+=char,rawEnd+=char.length,joinsNext=char==="\u200D",previousCharacter=char;cluster&&(yield{text:cluster,rawStart,rawEnd})}function normalizeScopeGlobally(scope){if(scope.text.normalize("NFC")===scope.text)return scope;const expansions=[],chunks=[];let mappedStart=0;for(const cluster of normalizationClusters(scope.text)){const mapped=cluster.text.normalize("NFC"),mappedEnd=mappedStart+mapped.length;mapped!==cluster.text&&expansions.push(cluster.rawStart,cluster.rawEnd,mappedStart,mappedEnd),chunks.push(mapped),mappedStart=mappedEnd}const mapping={text:chunks.join(""),expansions:Uint32Array.from(expansions)};return scope.text=mapping.text,scope.globalNormalization=mapping,scope}function normalizeSegment(raw,maxOutputCodeUnits,maxWorkCodeUnits,initialLastWasSpace=!1){const inspectedLength=Math.min(raw.length,maxWorkCodeUnits),inspected=raw.slice(0,inspectedLength),nfc=inspected.normalize("NFC"),chunks=[];let chunk="",normalizedLength=0;const rawOffsetRuns=[],rawClusterRuns=[];let currentDelta=0,lastWasSpace=initialLastWasSpace,outputTruncated=!1;if(nfc===inspected&&!NORMALIZATION_SPECIAL_CHAR_RE.test(inspected)){const retainedLength=Math.min(inspected.length,maxOutputCodeUnits),terminalRuns=retainedLength<inspected.length?new Uint32Array([retainedLength,inspected.length]):new Uint32Array;return{text:inspected.slice(0,retainedLength),rawOffsetRuns:terminalRuns,rawClusterRuns:new Uint32Array,workCodeUnits:inspectedLength,truncated:retainedLength<inspected.length||inspectedLength<raw.length,lastWasSpace:inspected.length===0?initialLastWasSpace:!1}}const appendUnit=(ch,rawIndex)=>{if(ch===SOFT_HYPHEN)return!0;if(WHITESPACE_CHAR_RE.test(ch)){if(lastWasSpace)return!0;if(lastWasSpace=!0,normalizedLength>=maxOutputCodeUnits)return!1;const delta=rawIndex-normalizedLength;delta!==currentDelta&&(rawOffsetRuns.push(normalizedLength,rawIndex),currentDelta=delta),chunk+=" ",normalizedLength++}else{if(lastWasSpace=!1,normalizedLength>=maxOutputCodeUnits)return!1;const delta=rawIndex-normalizedLength;delta!==currentDelta&&(rawOffsetRuns.push(normalizedLength,rawIndex),currentDelta=delta),chunk+=ch,normalizedLength++}return chunk.length>=4096&&(chunks.push(chunk),chunk=""),!0};if(nfc===inspected){for(let rawIndex=0;rawIndex<inspected.length;rawIndex++)if(!appendUnit(inspected[rawIndex],rawIndex)){outputTruncated=!0;break}}else for(const cluster of normalizationClusters(inspected)){const normalizedCluster=cluster.text.normalize("NFC");if(normalizedCluster===cluster.text){for(let local=0;local<cluster.text.length;local++)if(!appendUnit(cluster.text[local],cluster.rawStart+local)){outputTruncated=!0;break}if(outputTruncated)break;continue}const normalizedVisible=collapseWhitespaceAndSoftHyphen(normalizedCluster);if(!normalizedVisible)continue;if(normalizedLength+normalizedVisible.length>maxOutputCodeUnits){outputTruncated=!0;break}const normalizedStart=normalizedLength;chunk+=normalizedVisible,normalizedLength+=normalizedVisible.length,lastWasSpace=normalizedVisible.endsWith(" "),rawClusterRuns.push(normalizedStart,normalizedLength,cluster.rawStart,cluster.rawEnd),chunk.length>=4096&&(chunks.push(chunk),chunk="")}return inspectedLength-normalizedLength!==currentDelta&&rawOffsetRuns.push(normalizedLength,inspectedLength),{text:chunks.join("")+chunk,rawOffsetRuns:Uint32Array.from(rawOffsetRuns),rawClusterRuns:Uint32Array.from(rawClusterRuns),workCodeUnits:inspectedLength,truncated:outputTruncated||inspectedLength<raw.length,lastWasSpace}}const SKIP_TAGS=new Set(["SCRIPT","STYLE","TEMPLATE","NOSCRIPT"]);function nextNodeWithin(root,node,descend){if(descend&&node.firstChild)return node.firstChild;let current=node;for(;current&¤t!==root;){if(current.nextSibling)return current.nextSibling;current=current.parentNode}return null}function scopeFromElement(root,limitOverrides){const limits=resolvedLimits(limitOverrides),segments=[],textChunks=[];let textLength=0,textNodesVisited=0,traversalNodesVisited=0,workCodeUnits=0,lastWasSpace=!1,truncated=!1,node=root.firstChild;for(;node;){if(traversalNodesVisited>=limits.maxTraversalNodes){truncated=!0;break}traversalNodesVisited++;const skipChildren=node.nodeType===Node.ELEMENT_NODE&&SKIP_TAGS.has(node.tagName),next=nextNodeWithin(root,node,!skipChildren);if(node.nodeType!==Node.TEXT_NODE){node=next;continue}if(textNodesVisited>=limits.maxNodes){truncated=!0;break}textNodesVisited++;const textNode=node,workRemaining=Math.max(0,limits.maxNormalizationWorkCodeUnits-workCodeUnits);if(workRemaining===0){truncated=!0;break}const nodeWork=Math.min(limits.maxNodeCodeUnits,workRemaining),{text:segText,rawOffsetRuns,rawClusterRuns,workCodeUnits:used,truncated:segmentTruncated,lastWasSpace:nextLastWasSpace}=normalizeSegment(textNode.data,Math.max(0,limits.maxCorpusCodeUnits-textLength),nodeWork,lastWasSpace);if(workCodeUnits+=used,lastWasSpace=nextLastWasSpace,segText.length===0){if(segmentTruncated){truncated=!0;break}node=next;continue}if(segments.push({node:textNode,normalizedStart:textLength,normalizedLength:segText.length,rawOffsetRuns,rawClusterRuns,rawLength:textNode.data.length,rawText:textNode.data,parentNode:textNode.parentNode,previousSibling:textNode.previousSibling,nextSibling:textNode.nextSibling}),textChunks.push(segText),textLength+=segText.length,segmentTruncated){truncated=!0;break}if(textLength===limits.maxCorpusCodeUnits){truncated=next!==null;break}node=next}const scope=normalizeScopeGlobally({text:textChunks.join(""),segments,truncated});return trackScopeRoot(scope,root,!0,!scope.truncated)}function firstTextNode(element,traversalRemaining){let inspected=0,child=element.firstChild;for(;child&&inspected<traversalRemaining;){if(inspected++,child.nodeType===Node.TEXT_NODE)return{node:child,inspected,truncated:!1};child=child.nextSibling}return{node:null,inspected,truncated:child!==null}}function scopeFromItems(items,limitOverrides){const limits=resolvedLimits(limitOverrides),segments=[],textChunks=[];let textLength=0,workCodeUnits=0,traversalNodesVisited=0,lastWasSpace=!1,truncated=!1;for(let itemIndex=0;itemIndex<items.length;itemIndex++){if(itemIndex>=limits.maxNodes){truncated=!0;break}const item=items[itemIndex],located=item.node?{node:item.node,inspected:1,truncated:!1}:firstTextNode(item.element,Math.max(0,limits.maxTraversalNodes-traversalNodesVisited));if(traversalNodesVisited+=located.inspected,located.truncated||traversalNodesVisited>limits.maxTraversalNodes){truncated=!0;break}const node=located.node;if(!node){if(item.text!==""){truncated=!0;break}continue}if(item.node&&item.node.parentElement!==item.element){truncated=!0;break}if(item.text!==node.data){truncated=!0;break}const workRemaining=Math.max(0,limits.maxNormalizationWorkCodeUnits-workCodeUnits);if(workRemaining===0){truncated=!0;break}const previousCharacter=lastCodePoint(textChunks.at(-1)??""),rawFirstCharacter=firstVisibleCodePoint(item.text),reservesSyntheticJoin=item.joinBefore!==!1&&textLength>0&&!lastWasSpace&&rawFirstCharacter!==" "&&!continuesPreviousGrapheme(previousCharacter,rawFirstCharacter),{text:segText,rawOffsetRuns,rawClusterRuns,workCodeUnits:used,truncated:segmentTruncated,lastWasSpace:nextLastWasSpace}=normalizeSegment(item.text,Math.max(0,limits.maxCorpusCodeUnits-textLength-(reservesSyntheticJoin?1:0)),Math.min(limits.maxNodeCodeUnits,workRemaining),lastWasSpace);workCodeUnits+=used;const firstCharacter=segText[Symbol.iterator]().next().value,continuesPreviousCluster=continuesPreviousGrapheme(previousCharacter,firstCharacter),needsSyntheticJoin=textLength>0&&item.joinBefore!==!1&&!lastWasSpace&&!segText.startsWith(" ")&&!continuesPreviousCluster;if(lastWasSpace=nextLastWasSpace,segText.length===0){if(segmentTruncated){truncated=!0;break}continue}if(needsSyntheticJoin){if(textLength>=limits.maxCorpusCodeUnits){truncated=!0;break}textChunks.push(" "),textLength++}if(segments.push({node,normalizedStart:textLength,normalizedLength:segText.length,rawOffsetRuns,rawClusterRuns,rawLength:node.data.length,rawText:node.data,parentNode:node.parentNode,previousSibling:node.previousSibling,nextSibling:node.nextSibling}),textChunks.push(segText),textLength+=segText.length,segmentTruncated){truncated=!0;break}if(textLength===limits.maxCorpusCodeUnits){truncated=itemIndex+1<items.length;break}}const scope=normalizeScopeGlobally({text:textChunks.join(""),segments,truncated}),commonRoot=commonAncestorOfSegments(segments);return commonRoot?trackScopeRoot(scope,commonRoot):(segments.length>0&&(scope.truncated=!0,scopeRoots.set(scope,{root:segments[0].node,textInterval:[],textValues:[],valid:!1,includesRootPrefix:!1,includesRootSuffix:!1})),scope)}function commonAncestorOfSegments(segments){const first=segments[0]?.node,last=segments.at(-1)?.node;if(!first||!last)return null;const ancestors=new Set;let cursor=first,visited=0;for(;cursor&&visited++<TEXT_QUOTE_LIMITS.maxTraversalNodes;)ancestors.add(cursor),cursor=cursor.parentNode;if(cursor)return null;for(cursor=last,visited=0;cursor&&!ancestors.has(cursor)&&visited++<TEXT_QUOTE_LIMITS.maxTraversalNodes;)cursor=cursor.parentNode;return cursor&&ancestors.has(cursor)?cursor:null}function caseFold(value,locale){let lowered;return locale?lowered=value.toLocaleLowerCase(resolveIntlLocale(locale)):lowered=value.toLowerCase(),lowered.replaceAll("\u03C2","\u03C3")}function segmenterFor(locale){try{return getSegmenter(locale,{granularity:"grapheme"})}catch(error){if(error instanceof RangeError)return getSegmenter(void 0,{granularity:"grapheme"});throw error}}function*caseMappingSegments(value,locale){if(typeof Intl.Segmenter=="function"){for(const{segment,index}of segmenterFor(locale).segment(value))yield{text:segment,rawStart:index,rawEnd:index+segment.length};return}let rawStart=0;for(const text of value)yield{text,rawStart,rawEnd:rawStart+text.length},rawStart+=text.length}function foldText(value,locale){const text=caseFold(value,locale);if(text.length===value.length)return{text,expansions:new Uint32Array};let expansions=new Uint32Array(Math.min(64,Math.max(1,value.length))*4),expansionCount=0;const appendExpansion=(rawStart,rawEnd,foldedStart2,foldedEnd)=>{if(expansionCount*4===expansions.length){const nextCapacity=Math.min(value.length,Math.max(1,(expansions.length>>2)*2)),next=new Uint32Array(nextCapacity*4);next.set(expansions),expansions=next}const offset=expansionCount*4;expansions[offset]=rawStart,expansions[offset+1]=rawEnd,expansions[offset+2]=foldedStart2,expansions[offset+3]=foldedEnd,expansionCount++};let foldedStart=0;for(const segment of caseMappingSegments(value,locale)){const isolatedLength=caseFold(segment.text,locale).length,foldedEnd=segment.rawEnd===value.length?text.length:Math.min(text.length,foldedStart+isolatedLength);foldedEnd-foldedStart!==segment.rawEnd-segment.rawStart&&appendExpansion(segment.rawStart,segment.rawEnd,foldedStart,foldedEnd),foldedStart=foldedEnd}return{text,expansions:expansions.slice(0,expansionCount*4)}}function rawStartForFoldedOffset(folded,foldedOffset){let lo=0,hi=(folded.expansions.length>>2)-1,found=-1;for(;lo<=hi;){const mid=lo+hi>>1;folded.expansions[mid*4+2]<=foldedOffset?(found=mid,lo=mid+1):hi=mid-1}if(found<0)return foldedOffset;const offset=found*4,rawStart=folded.expansions[offset],rawEnd=folded.expansions[offset+1],foldedEnd=folded.expansions[offset+3];return foldedOffset<foldedEnd?rawStart:foldedOffset-(foldedEnd-rawEnd)}function rawEndForFoldedOffset(folded,foldedOffset){let lo=0,hi=(folded.expansions.length>>2)-1,found=-1;for(;lo<=hi;){const mid=lo+hi>>1;folded.expansions[mid*4+2]<foldedOffset?(found=mid,lo=mid+1):hi=mid-1}if(found<0)return foldedOffset;const offset=found*4,rawEnd=folded.expansions[offset+1],foldedEnd=folded.expansions[offset+3];return foldedOffset<=foldedEnd?rawEnd:foldedOffset-(foldedEnd-rawEnd)}class PackedTextQuoteMatches{constructor(packedOffsets,matchCountExact,scanComplete){this.packedOffsets=packedOffsets,this.matchCountExact=matchCountExact,this.scanComplete=scanComplete}get length(){return this.packedOffsets.length>>1}at(index){if(!(!Number.isInteger(index)||index<0||index>=this.length))return{start:this.packedOffsets[index*2],end:this.packedOffsets[index*2+1]}}*[Symbol.iterator](){for(let index=0;index<this.length;index++)yield this.at(index)}}function emptyMatches(matchCountExact,scanComplete=matchCountExact){return new PackedTextQuoteMatches(new Uint32Array,matchCountExact,scanComplete)}function emptyTextQuoteMatches(){return emptyMatches(!0,!0)}function scanOccurrences(haystack,needle,foldedHaystack,maxMatches,scopeTruncated){const packed=new Uint32Array(maxMatches*2);let count=0,scanComplete=!0,from=0;for(;;){const index=haystack.indexOf(needle,from);if(index===-1)break;if(count>=maxMatches){scanComplete=!1;break}foldedHaystack?(packed[count*2]=rawStartForFoldedOffset(foldedHaystack,index),packed[count*2+1]=rawEndForFoldedOffset(foldedHaystack,index+needle.length)):(packed[count*2]=index,packed[count*2+1]=index+needle.length),count++,from=index+1}return new PackedTextQuoteMatches(packed.slice(0,count*2),scanComplete&&!scopeTruncated,scanComplete)}function foldedStartForRawOffset(folded,rawOffset){let lo=0,hi=(folded.expansions.length>>2)-1,found=-1;for(;lo<=hi;){const mid=lo+hi>>1;folded.expansions[mid*4]<=rawOffset?(found=mid,lo=mid+1):hi=mid-1}if(found<0)return rawOffset;const offset=found*4,rawEnd=folded.expansions[offset+1],foldedStart=folded.expansions[offset+2],foldedEnd=folded.expansions[offset+3];return rawOffset<rawEnd?foldedStart:rawOffset+(foldedEnd-rawEnd)}function foldedEndForRawOffset(folded,rawOffset){let lo=0,hi=(folded.expansions.length>>2)-1,found=-1;for(;lo<=hi;){const mid=lo+hi>>1;folded.expansions[mid*4]<rawOffset?(found=mid,lo=mid+1):hi=mid-1}if(found<0)return rawOffset;const offset=found*4,rawEnd=folded.expansions[offset+1],foldedEnd=folded.expansions[offset+3];return rawOffset<=rawEnd?foldedEnd:rawOffset+(foldedEnd-rawEnd)}function rawOffsetAt(segment,normalizedOffset){const runs=segment.rawOffsetRuns;let lo=0,hi=(runs.length>>1)-1,found=-1;for(;lo<=hi;){const mid=lo+hi>>1;runs[mid*2]<=normalizedOffset?(found=mid,lo=mid+1):hi=mid-1}if(found<0)return normalizedOffset;const normalizedStart=runs[found*2];return runs[found*2+1]+normalizedOffset-normalizedStart}function clusterAtNormalizedOffset(segment,normalizedOffset){const runs=segment.rawClusterRuns??new Uint32Array;let lo=0,hi=(runs.length>>2)-1,found=-1;for(;lo<=hi;){const mid=lo+hi>>1;runs[mid*4]<=normalizedOffset?(found=mid,lo=mid+1):hi=mid-1}return found<0||normalizedOffset>=runs[found*4+1]?null:{normalizedStart:runs[found*4],normalizedEnd:runs[found*4+1],rawStart:runs[found*4+2],rawEnd:runs[found*4+3]}}function clusterAtRawOffset(segment,rawOffset){const runs=segment.rawClusterRuns??new Uint32Array;let lo=0,hi=(runs.length>>2)-1,found=-1;for(;lo<=hi;){const mid=lo+hi>>1;runs[mid*4+2]<=rawOffset?(found=mid,lo=mid+1):hi=mid-1}return found<0||rawOffset>=runs[found*4+3]?null:{normalizedStart:runs[found*4],normalizedEnd:runs[found*4+1],rawStart:runs[found*4+2],rawEnd:runs[found*4+3]}}function normalizedOffsetAtOrAfterRaw(segment,rawOffset){let lo=0,hi=segment.normalizedLength;for(;lo<hi;){const mid=lo+hi>>1;rawOffsetAt(segment,mid)<rawOffset?lo=mid+1:hi=mid}return lo}function normalizedBoundaryAtRaw(segment,rawOffset,endBoundary){const cluster=clusterAtRawOffset(segment,rawOffset);return cluster?rawOffset===cluster.rawStart?cluster.normalizedStart:endBoundary?cluster.normalizedEnd:cluster.normalizedStart:normalizedOffsetAtOrAfterRaw(segment,rawOffset)}function segmentIndexAt(scope,normalizedOffset){let lo=0,hi=scope.segments.length-1,found=-1;for(;lo<=hi;){const mid=lo+hi>>1;scope.segments[mid].normalizedStart<=normalizedOffset?(found=mid,lo=mid+1):hi=mid-1}return found}function segmentIsFresh(segment){return!(segment.rawLength!==void 0&&segment.node.data.length!==segment.rawLength||segment.rawText!==void 0&&segment.node.data!==segment.rawText||segment.parentNode!==void 0&&segment.node.parentNode!==segment.parentNode||segment.previousSibling!==void 0&&segment.node.previousSibling!==segment.previousSibling||segment.nextSibling!==void 0&&segment.node.nextSibling!==segment.nextSibling)}function scopeStructureIsFresh(scope){const tracked=scopeRoots.get(scope);if(tracked&&!tracked.valid)return!1;for(const segment of scope.segments)if(!segmentIsFresh(segment))return!1;if(!tracked)return!0;const first=tracked.textInterval[0],last=tracked.textInterval.at(-1);if(!first||!last||!tracked.root.contains(first)||!tracked.root.contains(last))return!1;let node=tracked.includesRootPrefix?nextNodeWithin(tracked.root,tracked.root,!0):first,textIndex=0,traversed=0;for(;node&&traversed++<TEXT_QUOTE_LIMITS.maxTraversalNodes;){if(node.nodeType===Node.TEXT_NODE){if(node!==tracked.textInterval[textIndex]||node.data!==tracked.textValues[textIndex])return!1;if(textIndex++,!tracked.includesRootSuffix&&node===last)break}const descend=!tracked.includesRootPrefix||node.nodeType!==Node.ELEMENT_NODE||!SKIP_TAGS.has(node.tagName);node=nextNodeWithin(tracked.root,node,descend)}return(tracked.includesRootSuffix?node===null:node===last)&&textIndex===tracked.textInterval.length}function sourceStartForScopeOffset(scope,offset){return scope.globalNormalization?rawStartForFoldedOffset(scope.globalNormalization,offset):offset}function sourceEndForScopeOffset(scope,offset){return scope.globalNormalization?rawEndForFoldedOffset(scope.globalNormalization,offset):offset}function scopeStartForSourceOffset(scope,offset){return scope.globalNormalization?foldedStartForRawOffset(scope.globalNormalization,offset):offset}function scopeEndForSourceOffset(scope,offset){return scope.globalNormalization?foldedEndForRawOffset(scope.globalNormalization,offset):offset}function locate(scope,normalizedOffset,endCharacter){if(!Number.isInteger(normalizedOffset)||normalizedOffset<0||normalizedOffset>=scope.text.length)return null;const sourceOffset=endCharacter?sourceEndForScopeOffset(scope,normalizedOffset+1)-1:sourceStartForScopeOffset(scope,normalizedOffset),found=segmentIndexAt(scope,sourceOffset);if(found===-1)return null;const segment=scope.segments[found],local=sourceOffset-segment.normalizedStart;if(local<0||local>=segment.normalizedLength)return null;const cluster=clusterAtNormalizedOffset(segment,local),offset=cluster?endCharacter?cluster.rawEnd-1:cluster.rawStart:rawOffsetAt(segment,local),rawLength=segment.rawLength??segment.node.data.length;return offset>=0&&offset<rawLength?{node:segment.node,offset}:null}function rangeFromOffsets(scope,start,end,validateScope=!0){if(!Number.isInteger(start)||!Number.isInteger(end)||start<0||end<=start||end>scope.text.length)return null;const sourceStart=sourceStartForScopeOffset(scope,start),sourceEnd=sourceEndForScopeOffset(scope,end),startSegment=segmentIndexAt(scope,sourceStart),endSegment=segmentIndexAt(scope,sourceEnd-1);if(startSegment<0||endSegment<startSegment||endSegment-startSegment+1>TEXT_QUOTE_LIMITS.maxNodes||validateScope&&!scopeStructureIsFresh(scope))return null;const startPos=locate(scope,start,!1),endPos=locate(scope,end-1,!0);if(!startPos||!endPos||startPos.node.ownerDocument!==endPos.node.ownerDocument)return null;try{const range=startPos.node.ownerDocument.createRange();return range.setStart(startPos.node,startPos.offset),range.setEnd(endPos.node,endPos.offset+1),range.collapsed?null:range}catch{return null}}class TextQuoteIndex{constructor(scope,locale,limitOverrides){this.locale=locale,this.occurrenceCache=new Map,this._scanCount=0,this._scope=scope,this.limits=resolvedLimits(limitOverrides)}get scope(){return this._scope}rebindScope(scope){return scope.text!==this._scope.text||scope.truncated!==this._scope.truncated?!1:(this._scope=scope,!0)}get scanCount(){return this._scanCount}createWorkBudget(maxCodeUnits=this.limits.maxSearchWorkCodeUnits){return{remainingCodeUnits:Number.isFinite(maxCodeUnits)?Math.min(this.limits.maxSearchWorkCodeUnits,Math.max(0,Math.floor(maxCodeUnits))):this.limits.maxSearchWorkCodeUnits}}consumeWork(budget,amount){return!Number.isFinite(budget.remainingCodeUnits)||budget.remainingCodeUnits<amount?!1:(budget.remainingCodeUnits-=amount,!0)}boundedQuery(value){if(value===void 0)return;if(value.length>this.limits.maxQueryCodeUnits)return null;const normalized=normalizeQuoteText(value);return normalized.length<=this.limits.maxQueryCodeUnits?normalized:null}foldedFor(budget){return this.foldedScope?this.foldedScope:this.consumeWork(budget,this.scope.text.length)?(this.foldedScope=foldText(this.scope.text,this.locale),this.foldedScope):null}cache(key,matches){if(this.limits.maxCacheEntries!==0){if(this.occurrenceCache.size>=this.limits.maxCacheEntries){const oldest=this.occurrenceCache.keys().next().value;oldest!==void 0&&this.occurrenceCache.delete(oldest)}this.occurrenceCache.set(key,matches)}}occurrences(needle,caseInsensitive,budget){const searchableNeedle=caseInsensitive?caseFold(needle,this.locale):needle;if(searchableNeedle.length>this.limits.maxQueryCodeUnits)return emptyMatches(!1,!1);const folded=caseInsensitive?this.foldedFor(budget)??void 0:void 0;if(caseInsensitive&&!folded)return emptyMatches(!1,!1);const haystack=folded?.text??this.scope.text,key=`${caseInsensitive?"i":"s"}:${searchableNeedle}`,cached=this.occurrenceCache.get(key);if(cached)return cached;if(searchableNeedle.length===0)return emptyMatches(!this.scope.truncated,!0);if(searchableNeedle.length>haystack.length){const result2=emptyMatches(!this.scope.truncated,!0);return this.cache(key,result2),result2}if(!this.consumeWork(budget,haystack.length))return emptyMatches(!1,!1);this._scanCount++;const result=scanOccurrences(haystack,searchableNeedle,folded,this.limits.maxMatches,this.scope.truncated);return this.cache(key,result),result}search(query,budget=this.createWorkBudget()){const needle=this.boundedQuery(query);return needle===null?emptyMatches(!1,!1):needle?this.occurrences(needle,!0,budget):emptyMatches(!0,!0)}resolve(anchor,budget=this.createWorkBudget()){const quote=this.boundedQuery(anchor.quote),prefix=this.boundedQuery(anchor.prefix),suffix=this.boundedQuery(anchor.suffix);if(!quote||prefix===null||suffix===null)return null;let candidates=this.occurrences(quote,!1,budget);candidates.length===0&&candidates.scanComplete&&(candidates=this.occurrences(quote,!0,budget));const first=candidates.at(0);if(!first||!prefix&&!suffix)return first??null;if(!candidates.matchCountExact)return null;const foldedScope=this.foldedFor(budget);if(!foldedScope)return null;const foldedPrefix=prefix?caseFold(prefix,this.locale):void 0,foldedSuffix=suffix?caseFold(suffix,this.locale):void 0;let best=first,bestScore=-1;for(const candidate of candidates){const contextWork=(foldedPrefix?.length??0)+(foldedSuffix?.length??0);if(!this.consumeWork(budget,contextWork))return null;let score=0;const foldedStart=foldedStartForRawOffset(foldedScope,candidate.start),foldedEnd=foldedEndForRawOffset(foldedScope,candidate.end);if(foldedPrefix){let beforeEnd=foldedStart;for(;beforeEnd>0&&WHITESPACE_CHAR_RE.test(foldedScope.text[beforeEnd-1]);){if(!this.consumeWork(budget,1))return null;beforeEnd--}foldedScope.text.endsWith(foldedPrefix,beforeEnd)&&score++}if(foldedSuffix){let afterStart=foldedEnd;for(;afterStart<foldedScope.text.length&&WHITESPACE_CHAR_RE.test(foldedScope.text[afterStart]);){if(!this.consumeWork(budget,1))return null;afterStart++}foldedScope.text.startsWith(foldedSuffix,afterStart)&&score++}score>bestScore&&(bestScore=score,best=candidate)}return best}}function createTextQuoteIndex(scope,locale,limitOverrides){return new TextQuoteIndex(scope,locale,limitOverrides)}function resolveTextQuote(scope,anchor,locale){const match=createTextQuoteIndex(scope,locale).resolve(anchor);return match?rangeFromOffsets(scope,match.start,match.end):null}function findTextQuoteMatches(scope,query,locale,limitOverrides){return createTextQuoteIndex(scope,locale,limitOverrides).search(query)}function rangeFromTextQuoteMatch(scope,match){if(!match||typeof match!="object")return null;try{return rangeFromOffsets(scope,match.start,match.end)}catch{return null}}function rangesFromTextQuoteMatches(scope,matches){let inputLength;try{inputLength=matches.length}catch{return[]}if(!Number.isInteger(inputLength)||inputLength<0)return[];const count=Math.min(inputLength,TEXT_QUOTE_LIMITS.maxMatches),offsets=new Float64Array(count*2),present=new Uint8Array(count);for(let index=0;index<count;index++)try{const match=matches[index];if(!match||typeof match!="object")continue;offsets[index*2]=match.start,offsets[index*2+1]=match.end,present[index]=1}catch{}const ranges=Array(count).fill(null);try{if(!scopeStructureIsFresh(scope))return ranges;for(let index=0;index<count;index++)present[index]!==0&&(ranges[index]=rangeFromOffsets(scope,offsets[index*2],offsets[index*2+1],!1))}catch{ranges.fill(null)}return ranges}function findTextQuoteRanges(scope,query,locale){const ranges=[],matches=findTextQuoteMatches(scope,query,locale);try{if(!scopeStructureIsFresh(scope))return ranges}catch{return ranges}for(let index=0;index<matches.length;index++){const range=rangeFromOffsets(scope,matches.packedOffsets[index*2],matches.packedOffsets[index*2+1],!1);range&&ranges.push(range)}return ranges}function resolveBoundaryTextNode(container,offset,scope){if(container.nodeType===Node.TEXT_NODE)return{node:container,offset};const child=container.childNodes[offset];if(!child)return null;let traversalRemaining=TEXT_QUOTE_LIMITS.maxTraversalNodes;for(const segment of scope.segments){let cursor=segment.node;for(;cursor&&traversalRemaining>0;){if(traversalRemaining--,cursor===child)return{node:segment.node,offset:0};if(cursor===container)break;cursor=cursor.parentNode}if(traversalRemaining===0)return null}return null}function findRangeStartInScope(scope,range){const boundary=resolveBoundaryTextNode(range.startContainer,range.startOffset,scope);if(!boundary)return null;const segment=scope.segments.find(s=>s.node===boundary.node);if(!segment||boundary.offset<0||boundary.offset>boundary.node.data.length)return null;const local=normalizedBoundaryAtRaw(segment,boundary.offset,!1);return scopeStartForSourceOffset(scope,segment.normalizedStart+local)}function resolveEndBoundaryTextNode(container,offset,scope){if(container.nodeType===Node.TEXT_NODE)return{node:container,offset};const child=container.childNodes[offset-1];if(!child)return null;let traversalRemaining=TEXT_QUOTE_LIMITS.maxTraversalNodes;for(let index=scope.segments.length-1;index>=0;index--){const segment=scope.segments[index];let cursor=segment.node;for(;cursor&&traversalRemaining>0;){if(traversalRemaining--,cursor===child)return{node:segment.node,offset:segment.node.data.length};if(cursor===container)break;cursor=cursor.parentNode}if(traversalRemaining===0)return null}return null}function findRangeEndInScope(scope,range){const boundary=resolveEndBoundaryTextNode(range.endContainer,range.endOffset,scope);if(!boundary)return null;const segment=scope.segments.find(s=>s.node===boundary.node);if(!segment||boundary.offset<0||boundary.offset>boundary.node.data.length)return null;const local=normalizedBoundaryAtRaw(segment,boundary.offset,!0);return scopeEndForSourceOffset(scope,segment.normalizedStart+local)}function boundedRangeText(range,maxCodeUnits){if(maxCodeUnits<=0)return"";if(range.startContainer===range.endContainer&&range.startContainer.nodeType===Node.TEXT_NODE)return range.startContainer.data.slice(range.startOffset,Math.min(range.endOffset,range.startOffset+maxCodeUnits));const root=range.commonAncestorContainer;let node=root.nodeType===Node.TEXT_NODE?root:root.firstChild,visited=0,text="";for(;node&&visited<TEXT_QUOTE_LIMITS.maxTraversalNodes&&text.length<maxCodeUnits;){visited++;const next=node===root?null:nextNodeWithin(root,node,!0);if(node.nodeType===Node.TEXT_NODE){let included=!1;try{included=range.intersectsNode(node)}catch{return text}if(included){const value=node.data,start=node===range.startContainer?range.startOffset:0,end=node===range.endContainer?range.endOffset:value.length;text+=value.slice(start,Math.min(end,start+maxCodeUnits-text.length))}}node=next}return text}function boundedSelectionText(range,maxCodeUnits=TEXT_QUOTE_LIMITS.maxQueryCodeUnits){const bounded=Number.isFinite(maxCodeUnits)?Math.min(TEXT_QUOTE_LIMITS.maxQueryCodeUnits,Math.max(0,Math.floor(maxCodeUnits))):TEXT_QUOTE_LIMITS.maxQueryCodeUnits;return normalizeQuoteText(boundedRangeText(range,bounded))}const TEXT_SELECTION_RECT_LIMIT=1e3;function boundedSelectionRects(range,maxRects=TEXT_SELECTION_RECT_LIMIT){const bounded=Number.isFinite(maxRects)?Math.min(TEXT_SELECTION_RECT_LIMIT,Math.max(0,Math.floor(maxRects))):TEXT_SELECTION_RECT_LIMIT,output=[];for(const rect of range.getClientRects()){if(output.length>=bounded)break;const finite=value=>Number.isFinite(value)?value:0;output.push(Object.freeze({x:finite(rect.x),y:finite(rect.y),width:finite(rect.width),height:finite(rect.height),top:finite(rect.top),right:finite(rect.right),bottom:finite(rect.bottom),left:finite(rect.left)}))}return Object.freeze(output)}function buildQuoteAnchor(range,scope){const startOffset=findRangeStartInScope(scope,range),endOffset=findRangeEndInScope(scope,range),mappedQuote=startOffset!=null&&endOffset!=null&&endOffset>startOffset?scope.text.slice(startOffset,Math.min(endOffset,startOffset+TEXT_QUOTE_LIMITS.maxQueryCodeUnits)):"",fallbackText=mappedQuote?"":boundedRangeText(range,TEXT_QUOTE_LIMITS.maxQueryCodeUnits),quote=normalizeQuoteText((mappedQuote||fallbackText).slice(0,TEXT_QUOTE_LIMITS.maxQueryCodeUnits));let prefix,suffix;return startOffset!=null&&(prefix=scope.text.slice(Math.max(0,startOffset-TEXT_QUOTE_CONTEXT_CHARS),startOffset).trim()||void 0),endOffset!=null&&(suffix=scope.text.slice(endOffset,endOffset+TEXT_QUOTE_CONTEXT_CHARS).trim()||void 0),{kind:"text-quote",quote,...prefix?{prefix}:{},...suffix?{suffix}:{}}}export{TEXT_QUOTE_LIMITS,TEXT_SELECTION_RECT_LIMIT,TextQuoteIndex,boundedSelectionRects,boundedSelectionText,buildQuoteAnchor,createTextQuoteIndex,emptyTextQuoteMatches,findTextQuoteMatches,findTextQuoteRanges,normalizeQuoteText,rangeFromTextQuoteMatch,rangesFromTextQuoteMatches,resolveTextQuote,scopeFromElement,scopeFromItems};
|
|
1
|
+
import{TEXT_QUOTE_CONTEXT_CHARS}from"../components/viewers/document-viewer/anchors.js";import{getSegmenter,resolveIntlLocale}from"./intl-cache.js";const SOFT_HYPHEN="",WHITESPACE_CHAR_RE=/\s/u,NORMALIZATION_SPECIAL_CHAR_RE=/[\s]/u,TEXT_QUOTE_LIMITS=Object.freeze({maxCorpusCodeUnits:1e6,maxNodes:2e4,maxTraversalNodes:2e4,maxNodeCodeUnits:1e6,maxNormalizationWorkCodeUnits:2e6,maxQueryCodeUnits:4096,maxMatches:1e4,maxSearchWorkCodeUnits:4e6,maxCacheEntries:64});function resolvedLimits(overrides){const boundedInteger=(value,hardMaximum)=>Number.isFinite(value)?Math.min(hardMaximum,Math.max(0,Math.floor(value))):hardMaximum;return{maxCorpusCodeUnits:boundedInteger(overrides?.maxCorpusCodeUnits,TEXT_QUOTE_LIMITS.maxCorpusCodeUnits),maxNodes:boundedInteger(overrides?.maxNodes,TEXT_QUOTE_LIMITS.maxNodes),maxTraversalNodes:boundedInteger(overrides?.maxTraversalNodes,TEXT_QUOTE_LIMITS.maxTraversalNodes),maxNodeCodeUnits:boundedInteger(overrides?.maxNodeCodeUnits,TEXT_QUOTE_LIMITS.maxNodeCodeUnits),maxNormalizationWorkCodeUnits:boundedInteger(overrides?.maxNormalizationWorkCodeUnits,TEXT_QUOTE_LIMITS.maxNormalizationWorkCodeUnits),maxQueryCodeUnits:boundedInteger(overrides?.maxQueryCodeUnits,TEXT_QUOTE_LIMITS.maxQueryCodeUnits),maxMatches:boundedInteger(overrides?.maxMatches,TEXT_QUOTE_LIMITS.maxMatches),maxSearchWorkCodeUnits:boundedInteger(overrides?.maxSearchWorkCodeUnits,TEXT_QUOTE_LIMITS.maxSearchWorkCodeUnits),maxCacheEntries:boundedInteger(overrides?.maxCacheEntries,TEXT_QUOTE_LIMITS.maxCacheEntries)}}function normalizeQuoteText(s){return collapseWhitespaceAndSoftHyphen(s.normalize("NFC")).trim()}function collapseWhitespaceAndSoftHyphen(s){let out="",lastWasSpace=!1;for(const ch of s)if(ch!==SOFT_HYPHEN)if(WHITESPACE_CHAR_RE.test(ch)){if(lastWasSpace)continue;lastWasSpace=!0,out+=" "}else lastWasSpace=!1,out+=ch;return out}const scopeRoots=new WeakMap;function trackScopeRoot(scope,root,includesRootPrefix=!1,includesRootSuffix=!1){const first=scope.segments[0]?.node,last=scope.segments.at(-1)?.node;if(!first||!last)return scope;let node=includesRootPrefix?nextNodeWithin(root,root,!0):first;const textInterval=[],textValues=[];let segmentIndex=0,traversed=0,reachedLast=!1,unexpectedItemText=!1;for(;node&&traversed++<TEXT_QUOTE_LIMITS.maxTraversalNodes;){if(node.nodeType===Node.TEXT_NODE){const text=node;if(textInterval.push(text),textValues.push(text.data),text===scope.segments[segmentIndex]?.node?segmentIndex++:includesRootPrefix||(unexpectedItemText=!0),node===last&&(reachedLast=!0,!includesRootSuffix))break}const descend=!includesRootPrefix||node.nodeType!==Node.ELEMENT_NODE||!SKIP_TAGS.has(node.tagName);node=nextNodeWithin(root,node,descend)}return scopeRoots.set(scope,{root,textInterval,valid:reachedLast&&segmentIndex===scope.segments.length&&!unexpectedItemText&&(!includesRootSuffix||node===null),textValues,includesRootPrefix,includesRootSuffix}),scope}const MARK_RE=/\p{Mark}/u;function hangulSyllableType(character){const codePoint=character.codePointAt(0);return codePoint===void 0?null:codePoint>=4352&&codePoint<=4447||codePoint>=43360&&codePoint<=43388?"L":codePoint>=4448&&codePoint<=4519||codePoint>=55216&&codePoint<=55238?"V":codePoint>=4520&&codePoint<=4607||codePoint>=55243&&codePoint<=55291?"T":codePoint<44032||codePoint>55203?null:(codePoint-44032)%28===0?"LV":"LVT"}function continuesHangulSyllable(previous,next){const previousType=hangulSyllableType(previous),nextType=hangulSyllableType(next);return previousType==="L"?nextType==="L"||nextType==="V"||nextType==="LV"||nextType==="LVT":previousType==="LV"||previousType==="V"?nextType==="V"||nextType==="T":(previousType==="LVT"||previousType==="T")&&nextType==="T"}function lastCodePoint(value){if(value.length===0)return;const last=value.charCodeAt(value.length-1),start=last>=56320&&last<=57343&&value.length>1&&value.charCodeAt(value.length-2)>=55296&&value.charCodeAt(value.length-2)<=56319?value.length-2:value.length-1;return value.slice(start)}function firstVisibleCodePoint(value){for(const character of value)if(character!==SOFT_HYPHEN)return WHITESPACE_CHAR_RE.test(character)?" ":character}function continuesPreviousGrapheme(previousCharacter,firstCharacter){if(firstCharacter===void 0)return!1;const composesAcrossBoundary=previousCharacter!==void 0&&`${previousCharacter}${firstCharacter}`.normalize("NFC")!==`${previousCharacter.normalize("NFC")}${firstCharacter.normalize("NFC")}`;return MARK_RE.test(firstCharacter)||firstCharacter==="️"||firstCharacter===""||previousCharacter===""||previousCharacter!==void 0&&continuesHangulSyllable(previousCharacter,firstCharacter)||composesAcrossBoundary}function*normalizationClusters(value){if(typeof Intl.Segmenter=="function"){for(const{segment,index}of segmenterFor().segment(value))yield{text:segment,rawStart:index,rawEnd:index+segment.length};return}let cluster="",rawStart=0,rawEnd=0,joinsNext=!1,previousCharacter="";for(const char of value)!(cluster!==""&&(MARK_RE.test(char)||char==="️"||joinsNext||continuesHangulSyllable(previousCharacter,char)))&&cluster&&(yield{text:cluster,rawStart,rawEnd},cluster="",rawStart=rawEnd),cluster+=char,rawEnd+=char.length,joinsNext=char==="",previousCharacter=char;cluster&&(yield{text:cluster,rawStart,rawEnd})}function normalizeScopeGlobally(scope){if(scope.text.normalize("NFC")===scope.text)return scope;const expansions=[],chunks=[];let mappedStart=0;for(const cluster of normalizationClusters(scope.text)){const mapped=cluster.text.normalize("NFC"),mappedEnd=mappedStart+mapped.length;mapped!==cluster.text&&expansions.push(cluster.rawStart,cluster.rawEnd,mappedStart,mappedEnd),chunks.push(mapped),mappedStart=mappedEnd}const mapping={text:chunks.join(""),expansions:Uint32Array.from(expansions)};return scope.text=mapping.text,scope.globalNormalization=mapping,scope}function normalizeSegment(raw,maxOutputCodeUnits,maxWorkCodeUnits,initialLastWasSpace=!1){const inspectedLength=Math.min(raw.length,maxWorkCodeUnits),inspected=raw.slice(0,inspectedLength),nfc=inspected.normalize("NFC"),chunks=[];let chunk="",normalizedLength=0;const rawOffsetRuns=[],rawClusterRuns=[];let currentDelta=0,lastWasSpace=initialLastWasSpace,outputTruncated=!1;if(nfc===inspected&&!NORMALIZATION_SPECIAL_CHAR_RE.test(inspected)){const retainedLength=Math.min(inspected.length,maxOutputCodeUnits),terminalRuns=retainedLength<inspected.length?new Uint32Array([retainedLength,inspected.length]):new Uint32Array;return{text:inspected.slice(0,retainedLength),rawOffsetRuns:terminalRuns,rawClusterRuns:new Uint32Array,workCodeUnits:inspectedLength,truncated:retainedLength<inspected.length||inspectedLength<raw.length,lastWasSpace:inspected.length===0?initialLastWasSpace:!1}}const appendUnit=(ch,rawIndex)=>{if(ch===SOFT_HYPHEN)return!0;if(WHITESPACE_CHAR_RE.test(ch)){if(lastWasSpace)return!0;if(lastWasSpace=!0,normalizedLength>=maxOutputCodeUnits)return!1;const delta=rawIndex-normalizedLength;delta!==currentDelta&&(rawOffsetRuns.push(normalizedLength,rawIndex),currentDelta=delta),chunk+=" ",normalizedLength++}else{if(lastWasSpace=!1,normalizedLength>=maxOutputCodeUnits)return!1;const delta=rawIndex-normalizedLength;delta!==currentDelta&&(rawOffsetRuns.push(normalizedLength,rawIndex),currentDelta=delta),chunk+=ch,normalizedLength++}return chunk.length>=4096&&(chunks.push(chunk),chunk=""),!0};if(nfc===inspected){for(let rawIndex=0;rawIndex<inspected.length;rawIndex++)if(!appendUnit(inspected[rawIndex],rawIndex)){outputTruncated=!0;break}}else for(const cluster of normalizationClusters(inspected)){const normalizedCluster=cluster.text.normalize("NFC");if(normalizedCluster===cluster.text){for(let local=0;local<cluster.text.length;local++)if(!appendUnit(cluster.text[local],cluster.rawStart+local)){outputTruncated=!0;break}if(outputTruncated)break;continue}const normalizedVisible=collapseWhitespaceAndSoftHyphen(normalizedCluster);if(!normalizedVisible)continue;if(normalizedLength+normalizedVisible.length>maxOutputCodeUnits){outputTruncated=!0;break}const normalizedStart=normalizedLength;chunk+=normalizedVisible,normalizedLength+=normalizedVisible.length,lastWasSpace=normalizedVisible.endsWith(" "),rawClusterRuns.push(normalizedStart,normalizedLength,cluster.rawStart,cluster.rawEnd),chunk.length>=4096&&(chunks.push(chunk),chunk="")}return inspectedLength-normalizedLength!==currentDelta&&rawOffsetRuns.push(normalizedLength,inspectedLength),{text:chunks.join("")+chunk,rawOffsetRuns:Uint32Array.from(rawOffsetRuns),rawClusterRuns:Uint32Array.from(rawClusterRuns),workCodeUnits:inspectedLength,truncated:outputTruncated||inspectedLength<raw.length,lastWasSpace}}const SKIP_TAGS=new Set(["SCRIPT","STYLE","TEMPLATE","NOSCRIPT"]);function nextNodeWithin(root,node,descend){if(descend&&node.firstChild)return node.firstChild;let current=node;for(;current&¤t!==root;){if(current.nextSibling)return current.nextSibling;current=current.parentNode}return null}function scopeFromElement(root,limitOverrides){const limits=resolvedLimits(limitOverrides),segments=[],textChunks=[];let textLength=0,textNodesVisited=0,traversalNodesVisited=0,workCodeUnits=0,lastWasSpace=!1,truncated=!1,node=root.firstChild;for(;node;){if(traversalNodesVisited>=limits.maxTraversalNodes){truncated=!0;break}traversalNodesVisited++;const skipChildren=node.nodeType===Node.ELEMENT_NODE&&SKIP_TAGS.has(node.tagName),next=nextNodeWithin(root,node,!skipChildren);if(node.nodeType!==Node.TEXT_NODE){node=next;continue}if(textNodesVisited>=limits.maxNodes){truncated=!0;break}textNodesVisited++;const textNode=node,workRemaining=Math.max(0,limits.maxNormalizationWorkCodeUnits-workCodeUnits);if(workRemaining===0){truncated=!0;break}const nodeWork=Math.min(limits.maxNodeCodeUnits,workRemaining),{text:segText,rawOffsetRuns,rawClusterRuns,workCodeUnits:used,truncated:segmentTruncated,lastWasSpace:nextLastWasSpace}=normalizeSegment(textNode.data,Math.max(0,limits.maxCorpusCodeUnits-textLength),nodeWork,lastWasSpace);if(workCodeUnits+=used,lastWasSpace=nextLastWasSpace,segText.length===0){if(segmentTruncated){truncated=!0;break}node=next;continue}if(segments.push({node:textNode,normalizedStart:textLength,normalizedLength:segText.length,rawOffsetRuns,rawClusterRuns,rawLength:textNode.data.length,rawText:textNode.data,parentNode:textNode.parentNode,previousSibling:textNode.previousSibling,nextSibling:textNode.nextSibling}),textChunks.push(segText),textLength+=segText.length,segmentTruncated){truncated=!0;break}if(textLength===limits.maxCorpusCodeUnits){truncated=next!==null;break}node=next}const scope=normalizeScopeGlobally({text:textChunks.join(""),segments,truncated});return trackScopeRoot(scope,root,!0,!scope.truncated)}function firstTextNode(element,traversalRemaining){let inspected=0,child=element.firstChild;for(;child&&inspected<traversalRemaining;){if(inspected++,child.nodeType===Node.TEXT_NODE)return{node:child,inspected,truncated:!1};child=child.nextSibling}return{node:null,inspected,truncated:child!==null}}function scopeFromItems(items,limitOverrides){const limits=resolvedLimits(limitOverrides),segments=[],textChunks=[];let textLength=0,workCodeUnits=0,traversalNodesVisited=0,lastWasSpace=!1,truncated=!1;for(let itemIndex=0;itemIndex<items.length;itemIndex++){if(itemIndex>=limits.maxNodes){truncated=!0;break}const item=items[itemIndex],located=item.node?{node:item.node,inspected:1,truncated:!1}:firstTextNode(item.element,Math.max(0,limits.maxTraversalNodes-traversalNodesVisited));if(traversalNodesVisited+=located.inspected,located.truncated||traversalNodesVisited>limits.maxTraversalNodes){truncated=!0;break}const node=located.node;if(!node){if(item.text!==""){truncated=!0;break}continue}if(item.node&&item.node.parentElement!==item.element){truncated=!0;break}if(item.text!==node.data){truncated=!0;break}const workRemaining=Math.max(0,limits.maxNormalizationWorkCodeUnits-workCodeUnits);if(workRemaining===0){truncated=!0;break}const previousCharacter=lastCodePoint(textChunks.at(-1)??""),rawFirstCharacter=firstVisibleCodePoint(item.text),reservesSyntheticJoin=item.joinBefore!==!1&&textLength>0&&!lastWasSpace&&rawFirstCharacter!==" "&&!continuesPreviousGrapheme(previousCharacter,rawFirstCharacter),{text:segText,rawOffsetRuns,rawClusterRuns,workCodeUnits:used,truncated:segmentTruncated,lastWasSpace:nextLastWasSpace}=normalizeSegment(item.text,Math.max(0,limits.maxCorpusCodeUnits-textLength-(reservesSyntheticJoin?1:0)),Math.min(limits.maxNodeCodeUnits,workRemaining),lastWasSpace);workCodeUnits+=used;const firstCharacter=segText[Symbol.iterator]().next().value,continuesPreviousCluster=continuesPreviousGrapheme(previousCharacter,firstCharacter),needsSyntheticJoin=textLength>0&&item.joinBefore!==!1&&!lastWasSpace&&!segText.startsWith(" ")&&!continuesPreviousCluster;if(lastWasSpace=nextLastWasSpace,segText.length===0){if(segmentTruncated){truncated=!0;break}continue}if(needsSyntheticJoin){if(textLength>=limits.maxCorpusCodeUnits){truncated=!0;break}textChunks.push(" "),textLength++}if(segments.push({node,normalizedStart:textLength,normalizedLength:segText.length,rawOffsetRuns,rawClusterRuns,rawLength:node.data.length,rawText:node.data,parentNode:node.parentNode,previousSibling:node.previousSibling,nextSibling:node.nextSibling}),textChunks.push(segText),textLength+=segText.length,segmentTruncated){truncated=!0;break}if(textLength===limits.maxCorpusCodeUnits){truncated=itemIndex+1<items.length;break}}const scope=normalizeScopeGlobally({text:textChunks.join(""),segments,truncated}),commonRoot=commonAncestorOfSegments(segments);return commonRoot?trackScopeRoot(scope,commonRoot):(segments.length>0&&(scope.truncated=!0,scopeRoots.set(scope,{root:segments[0].node,textInterval:[],textValues:[],valid:!1,includesRootPrefix:!1,includesRootSuffix:!1})),scope)}function commonAncestorOfSegments(segments){const first=segments[0]?.node,last=segments.at(-1)?.node;if(!first||!last)return null;const ancestors=new Set;let cursor=first,visited=0;for(;cursor&&visited++<TEXT_QUOTE_LIMITS.maxTraversalNodes;)ancestors.add(cursor),cursor=cursor.parentNode;if(cursor)return null;for(cursor=last,visited=0;cursor&&!ancestors.has(cursor)&&visited++<TEXT_QUOTE_LIMITS.maxTraversalNodes;)cursor=cursor.parentNode;return cursor&&ancestors.has(cursor)?cursor:null}function caseFold(value,locale){let lowered;return locale?lowered=value.toLocaleLowerCase(resolveIntlLocale(locale)):lowered=value.toLowerCase(),lowered.replaceAll("ς","σ")}function segmenterFor(locale){try{return getSegmenter(locale,{granularity:"grapheme"})}catch(error){if(error instanceof RangeError)return getSegmenter(void 0,{granularity:"grapheme"});throw error}}function*caseMappingSegments(value,locale){if(typeof Intl.Segmenter=="function"){for(const{segment,index}of segmenterFor(locale).segment(value))yield{text:segment,rawStart:index,rawEnd:index+segment.length};return}let rawStart=0;for(const text of value)yield{text,rawStart,rawEnd:rawStart+text.length},rawStart+=text.length}function foldText(value,locale){const text=caseFold(value,locale);if(text.length===value.length)return{text,expansions:new Uint32Array};let expansions=new Uint32Array(Math.min(64,Math.max(1,value.length))*4),expansionCount=0;const appendExpansion=(rawStart,rawEnd,foldedStart2,foldedEnd)=>{if(expansionCount*4===expansions.length){const nextCapacity=Math.min(value.length,Math.max(1,(expansions.length>>2)*2)),next=new Uint32Array(nextCapacity*4);next.set(expansions),expansions=next}const offset=expansionCount*4;expansions[offset]=rawStart,expansions[offset+1]=rawEnd,expansions[offset+2]=foldedStart2,expansions[offset+3]=foldedEnd,expansionCount++};let foldedStart=0;for(const segment of caseMappingSegments(value,locale)){const isolatedLength=caseFold(segment.text,locale).length,foldedEnd=segment.rawEnd===value.length?text.length:Math.min(text.length,foldedStart+isolatedLength);foldedEnd-foldedStart!==segment.rawEnd-segment.rawStart&&appendExpansion(segment.rawStart,segment.rawEnd,foldedStart,foldedEnd),foldedStart=foldedEnd}return{text,expansions:expansions.slice(0,expansionCount*4)}}function rawStartForFoldedOffset(folded,foldedOffset){let lo=0,hi=(folded.expansions.length>>2)-1,found=-1;for(;lo<=hi;){const mid=lo+hi>>1;folded.expansions[mid*4+2]<=foldedOffset?(found=mid,lo=mid+1):hi=mid-1}if(found<0)return foldedOffset;const offset=found*4,rawStart=folded.expansions[offset],rawEnd=folded.expansions[offset+1],foldedEnd=folded.expansions[offset+3];return foldedOffset<foldedEnd?rawStart:foldedOffset-(foldedEnd-rawEnd)}function rawEndForFoldedOffset(folded,foldedOffset){let lo=0,hi=(folded.expansions.length>>2)-1,found=-1;for(;lo<=hi;){const mid=lo+hi>>1;folded.expansions[mid*4+2]<foldedOffset?(found=mid,lo=mid+1):hi=mid-1}if(found<0)return foldedOffset;const offset=found*4,rawEnd=folded.expansions[offset+1],foldedEnd=folded.expansions[offset+3];return foldedOffset<=foldedEnd?rawEnd:foldedOffset-(foldedEnd-rawEnd)}class PackedTextQuoteMatches{constructor(packedOffsets,matchCountExact,scanComplete){this.packedOffsets=packedOffsets,this.matchCountExact=matchCountExact,this.scanComplete=scanComplete}get length(){return this.packedOffsets.length>>1}at(index){if(!(!Number.isInteger(index)||index<0||index>=this.length))return{start:this.packedOffsets[index*2],end:this.packedOffsets[index*2+1]}}*[Symbol.iterator](){for(let index=0;index<this.length;index++)yield this.at(index)}}function emptyMatches(matchCountExact,scanComplete=matchCountExact){return new PackedTextQuoteMatches(new Uint32Array,matchCountExact,scanComplete)}function emptyTextQuoteMatches(){return emptyMatches(!0,!0)}function scanOccurrences(haystack,needle,foldedHaystack,maxMatches,scopeTruncated){const packed=new Uint32Array(maxMatches*2);let count=0,scanComplete=!0,from=0;for(;;){const index=haystack.indexOf(needle,from);if(index===-1)break;if(count>=maxMatches){scanComplete=!1;break}foldedHaystack?(packed[count*2]=rawStartForFoldedOffset(foldedHaystack,index),packed[count*2+1]=rawEndForFoldedOffset(foldedHaystack,index+needle.length)):(packed[count*2]=index,packed[count*2+1]=index+needle.length),count++,from=index+1}return new PackedTextQuoteMatches(packed.slice(0,count*2),scanComplete&&!scopeTruncated,scanComplete)}function foldedStartForRawOffset(folded,rawOffset){let lo=0,hi=(folded.expansions.length>>2)-1,found=-1;for(;lo<=hi;){const mid=lo+hi>>1;folded.expansions[mid*4]<=rawOffset?(found=mid,lo=mid+1):hi=mid-1}if(found<0)return rawOffset;const offset=found*4,rawEnd=folded.expansions[offset+1],foldedStart=folded.expansions[offset+2],foldedEnd=folded.expansions[offset+3];return rawOffset<rawEnd?foldedStart:rawOffset+(foldedEnd-rawEnd)}function foldedEndForRawOffset(folded,rawOffset){let lo=0,hi=(folded.expansions.length>>2)-1,found=-1;for(;lo<=hi;){const mid=lo+hi>>1;folded.expansions[mid*4]<rawOffset?(found=mid,lo=mid+1):hi=mid-1}if(found<0)return rawOffset;const offset=found*4,rawEnd=folded.expansions[offset+1],foldedEnd=folded.expansions[offset+3];return rawOffset<=rawEnd?foldedEnd:rawOffset+(foldedEnd-rawEnd)}function rawOffsetAt(segment,normalizedOffset){const runs=segment.rawOffsetRuns;let lo=0,hi=(runs.length>>1)-1,found=-1;for(;lo<=hi;){const mid=lo+hi>>1;runs[mid*2]<=normalizedOffset?(found=mid,lo=mid+1):hi=mid-1}if(found<0)return normalizedOffset;const normalizedStart=runs[found*2];return runs[found*2+1]+normalizedOffset-normalizedStart}function clusterAtNormalizedOffset(segment,normalizedOffset){const runs=segment.rawClusterRuns??new Uint32Array;let lo=0,hi=(runs.length>>2)-1,found=-1;for(;lo<=hi;){const mid=lo+hi>>1;runs[mid*4]<=normalizedOffset?(found=mid,lo=mid+1):hi=mid-1}return found<0||normalizedOffset>=runs[found*4+1]?null:{normalizedStart:runs[found*4],normalizedEnd:runs[found*4+1],rawStart:runs[found*4+2],rawEnd:runs[found*4+3]}}function clusterAtRawOffset(segment,rawOffset){const runs=segment.rawClusterRuns??new Uint32Array;let lo=0,hi=(runs.length>>2)-1,found=-1;for(;lo<=hi;){const mid=lo+hi>>1;runs[mid*4+2]<=rawOffset?(found=mid,lo=mid+1):hi=mid-1}return found<0||rawOffset>=runs[found*4+3]?null:{normalizedStart:runs[found*4],normalizedEnd:runs[found*4+1],rawStart:runs[found*4+2],rawEnd:runs[found*4+3]}}function normalizedOffsetAtOrAfterRaw(segment,rawOffset){let lo=0,hi=segment.normalizedLength;for(;lo<hi;){const mid=lo+hi>>1;rawOffsetAt(segment,mid)<rawOffset?lo=mid+1:hi=mid}return lo}function normalizedBoundaryAtRaw(segment,rawOffset,endBoundary){const cluster=clusterAtRawOffset(segment,rawOffset);return cluster?rawOffset===cluster.rawStart?cluster.normalizedStart:endBoundary?cluster.normalizedEnd:cluster.normalizedStart:normalizedOffsetAtOrAfterRaw(segment,rawOffset)}function segmentIndexAt(scope,normalizedOffset){let lo=0,hi=scope.segments.length-1,found=-1;for(;lo<=hi;){const mid=lo+hi>>1;scope.segments[mid].normalizedStart<=normalizedOffset?(found=mid,lo=mid+1):hi=mid-1}return found}function segmentIsFresh(segment){return!(segment.rawLength!==void 0&&segment.node.data.length!==segment.rawLength||segment.rawText!==void 0&&segment.node.data!==segment.rawText||segment.parentNode!==void 0&&segment.node.parentNode!==segment.parentNode||segment.previousSibling!==void 0&&segment.node.previousSibling!==segment.previousSibling||segment.nextSibling!==void 0&&segment.node.nextSibling!==segment.nextSibling)}function scopeStructureIsFresh(scope){const tracked=scopeRoots.get(scope);if(tracked&&!tracked.valid)return!1;for(const segment of scope.segments)if(!segmentIsFresh(segment))return!1;if(!tracked)return!0;const first=tracked.textInterval[0],last=tracked.textInterval.at(-1);if(!first||!last||!tracked.root.contains(first)||!tracked.root.contains(last))return!1;let node=tracked.includesRootPrefix?nextNodeWithin(tracked.root,tracked.root,!0):first,textIndex=0,traversed=0;for(;node&&traversed++<TEXT_QUOTE_LIMITS.maxTraversalNodes;){if(node.nodeType===Node.TEXT_NODE){if(node!==tracked.textInterval[textIndex]||node.data!==tracked.textValues[textIndex])return!1;if(textIndex++,!tracked.includesRootSuffix&&node===last)break}const descend=!tracked.includesRootPrefix||node.nodeType!==Node.ELEMENT_NODE||!SKIP_TAGS.has(node.tagName);node=nextNodeWithin(tracked.root,node,descend)}return(tracked.includesRootSuffix?node===null:node===last)&&textIndex===tracked.textInterval.length}function sourceStartForScopeOffset(scope,offset){return scope.globalNormalization?rawStartForFoldedOffset(scope.globalNormalization,offset):offset}function sourceEndForScopeOffset(scope,offset){return scope.globalNormalization?rawEndForFoldedOffset(scope.globalNormalization,offset):offset}function scopeStartForSourceOffset(scope,offset){return scope.globalNormalization?foldedStartForRawOffset(scope.globalNormalization,offset):offset}function scopeEndForSourceOffset(scope,offset){return scope.globalNormalization?foldedEndForRawOffset(scope.globalNormalization,offset):offset}function locate(scope,normalizedOffset,endCharacter){if(!Number.isInteger(normalizedOffset)||normalizedOffset<0||normalizedOffset>=scope.text.length)return null;const sourceOffset=endCharacter?sourceEndForScopeOffset(scope,normalizedOffset+1)-1:sourceStartForScopeOffset(scope,normalizedOffset),found=segmentIndexAt(scope,sourceOffset);if(found===-1)return null;const segment=scope.segments[found],local=sourceOffset-segment.normalizedStart;if(local<0||local>=segment.normalizedLength)return null;const cluster=clusterAtNormalizedOffset(segment,local),offset=cluster?endCharacter?cluster.rawEnd-1:cluster.rawStart:rawOffsetAt(segment,local),rawLength=segment.rawLength??segment.node.data.length;return offset>=0&&offset<rawLength?{node:segment.node,offset}:null}function rangeFromOffsets(scope,start,end,validateScope=!0){if(!Number.isInteger(start)||!Number.isInteger(end)||start<0||end<=start||end>scope.text.length)return null;const sourceStart=sourceStartForScopeOffset(scope,start),sourceEnd=sourceEndForScopeOffset(scope,end),startSegment=segmentIndexAt(scope,sourceStart),endSegment=segmentIndexAt(scope,sourceEnd-1);if(startSegment<0||endSegment<startSegment||endSegment-startSegment+1>TEXT_QUOTE_LIMITS.maxNodes||validateScope&&!scopeStructureIsFresh(scope))return null;const startPos=locate(scope,start,!1),endPos=locate(scope,end-1,!0);if(!startPos||!endPos||startPos.node.ownerDocument!==endPos.node.ownerDocument)return null;try{const range=startPos.node.ownerDocument.createRange();return range.setStart(startPos.node,startPos.offset),range.setEnd(endPos.node,endPos.offset+1),range.collapsed?null:range}catch{return null}}class TextQuoteIndex{constructor(scope,locale,limitOverrides){this.locale=locale,this.occurrenceCache=new Map,this._scanCount=0,this._scope=scope,this.limits=resolvedLimits(limitOverrides)}get scope(){return this._scope}rebindScope(scope){return scope.text!==this._scope.text||scope.truncated!==this._scope.truncated?!1:(this._scope=scope,!0)}get scanCount(){return this._scanCount}createWorkBudget(maxCodeUnits=this.limits.maxSearchWorkCodeUnits){return{remainingCodeUnits:Number.isFinite(maxCodeUnits)?Math.min(this.limits.maxSearchWorkCodeUnits,Math.max(0,Math.floor(maxCodeUnits))):this.limits.maxSearchWorkCodeUnits}}consumeWork(budget,amount){return!Number.isFinite(budget.remainingCodeUnits)||budget.remainingCodeUnits<amount?!1:(budget.remainingCodeUnits-=amount,!0)}boundedQuery(value){if(value===void 0)return;if(value.length>this.limits.maxQueryCodeUnits)return null;const normalized=normalizeQuoteText(value);return normalized.length<=this.limits.maxQueryCodeUnits?normalized:null}foldedFor(budget){return this.foldedScope?this.foldedScope:this.consumeWork(budget,this.scope.text.length)?(this.foldedScope=foldText(this.scope.text,this.locale),this.foldedScope):null}cache(key,matches){if(this.limits.maxCacheEntries!==0){if(this.occurrenceCache.size>=this.limits.maxCacheEntries){const oldest=this.occurrenceCache.keys().next().value;oldest!==void 0&&this.occurrenceCache.delete(oldest)}this.occurrenceCache.set(key,matches)}}occurrences(needle,caseInsensitive,budget){const searchableNeedle=caseInsensitive?caseFold(needle,this.locale):needle;if(searchableNeedle.length>this.limits.maxQueryCodeUnits)return emptyMatches(!1,!1);const folded=caseInsensitive?this.foldedFor(budget)??void 0:void 0;if(caseInsensitive&&!folded)return emptyMatches(!1,!1);const haystack=folded?.text??this.scope.text,key=`${caseInsensitive?"i":"s"}:${searchableNeedle}`,cached=this.occurrenceCache.get(key);if(cached)return cached;if(searchableNeedle.length===0)return emptyMatches(!this.scope.truncated,!0);if(searchableNeedle.length>haystack.length){const result2=emptyMatches(!this.scope.truncated,!0);return this.cache(key,result2),result2}if(!this.consumeWork(budget,haystack.length))return emptyMatches(!1,!1);this._scanCount++;const result=scanOccurrences(haystack,searchableNeedle,folded,this.limits.maxMatches,this.scope.truncated);return this.cache(key,result),result}search(query,budget=this.createWorkBudget()){const needle=this.boundedQuery(query);return needle===null?emptyMatches(!1,!1):needle?this.occurrences(needle,!0,budget):emptyMatches(!0,!0)}resolve(anchor,budget=this.createWorkBudget()){const quote=this.boundedQuery(anchor.quote),prefix=this.boundedQuery(anchor.prefix),suffix=this.boundedQuery(anchor.suffix);if(!quote||prefix===null||suffix===null)return null;let candidates=this.occurrences(quote,!1,budget);candidates.length===0&&candidates.scanComplete&&(candidates=this.occurrences(quote,!0,budget));const first=candidates.at(0);if(!first||!prefix&&!suffix)return first??null;if(!candidates.matchCountExact)return null;const foldedScope=this.foldedFor(budget);if(!foldedScope)return null;const foldedPrefix=prefix?caseFold(prefix,this.locale):void 0,foldedSuffix=suffix?caseFold(suffix,this.locale):void 0;let best=first,bestScore=-1;for(const candidate of candidates){const contextWork=(foldedPrefix?.length??0)+(foldedSuffix?.length??0);if(!this.consumeWork(budget,contextWork))return null;let score=0;const foldedStart=foldedStartForRawOffset(foldedScope,candidate.start),foldedEnd=foldedEndForRawOffset(foldedScope,candidate.end);if(foldedPrefix){let beforeEnd=foldedStart;for(;beforeEnd>0&&WHITESPACE_CHAR_RE.test(foldedScope.text[beforeEnd-1]);){if(!this.consumeWork(budget,1))return null;beforeEnd--}foldedScope.text.endsWith(foldedPrefix,beforeEnd)&&score++}if(foldedSuffix){let afterStart=foldedEnd;for(;afterStart<foldedScope.text.length&&WHITESPACE_CHAR_RE.test(foldedScope.text[afterStart]);){if(!this.consumeWork(budget,1))return null;afterStart++}foldedScope.text.startsWith(foldedSuffix,afterStart)&&score++}score>bestScore&&(bestScore=score,best=candidate)}return best}}function createTextQuoteIndex(scope,locale,limitOverrides){return new TextQuoteIndex(scope,locale,limitOverrides)}function resolveTextQuote(scope,anchor,locale){const match=createTextQuoteIndex(scope,locale).resolve(anchor);return match?rangeFromOffsets(scope,match.start,match.end):null}function findTextQuoteMatches(scope,query,locale,limitOverrides){return createTextQuoteIndex(scope,locale,limitOverrides).search(query)}function rangeFromTextQuoteMatch(scope,match){if(!match||typeof match!="object")return null;try{return rangeFromOffsets(scope,match.start,match.end)}catch{return null}}function rangesFromTextQuoteMatches(scope,matches){let inputLength;try{inputLength=matches.length}catch{return[]}if(!Number.isInteger(inputLength)||inputLength<0)return[];const count=Math.min(inputLength,TEXT_QUOTE_LIMITS.maxMatches),offsets=new Float64Array(count*2),present=new Uint8Array(count);for(let index=0;index<count;index++)try{const match=matches[index];if(!match||typeof match!="object")continue;offsets[index*2]=match.start,offsets[index*2+1]=match.end,present[index]=1}catch{}const ranges=Array(count).fill(null);try{if(!scopeStructureIsFresh(scope))return ranges;for(let index=0;index<count;index++)present[index]!==0&&(ranges[index]=rangeFromOffsets(scope,offsets[index*2],offsets[index*2+1],!1))}catch{ranges.fill(null)}return ranges}function findTextQuoteRanges(scope,query,locale){const ranges=[],matches=findTextQuoteMatches(scope,query,locale);try{if(!scopeStructureIsFresh(scope))return ranges}catch{return ranges}for(let index=0;index<matches.length;index++){const range=rangeFromOffsets(scope,matches.packedOffsets[index*2],matches.packedOffsets[index*2+1],!1);range&&ranges.push(range)}return ranges}function resolveBoundaryTextNode(container,offset,scope){if(container.nodeType===Node.TEXT_NODE)return{node:container,offset};const child=container.childNodes[offset];if(!child)return null;let traversalRemaining=TEXT_QUOTE_LIMITS.maxTraversalNodes;for(const segment of scope.segments){let cursor=segment.node;for(;cursor&&traversalRemaining>0;){if(traversalRemaining--,cursor===child)return{node:segment.node,offset:0};if(cursor===container)break;cursor=cursor.parentNode}if(traversalRemaining===0)return null}return null}function findRangeStartInScope(scope,range){const boundary=resolveBoundaryTextNode(range.startContainer,range.startOffset,scope);if(!boundary)return null;const segment=scope.segments.find(s=>s.node===boundary.node);if(!segment||boundary.offset<0||boundary.offset>boundary.node.data.length)return null;const local=normalizedBoundaryAtRaw(segment,boundary.offset,!1);return scopeStartForSourceOffset(scope,segment.normalizedStart+local)}function resolveEndBoundaryTextNode(container,offset,scope){if(container.nodeType===Node.TEXT_NODE)return{node:container,offset};const child=container.childNodes[offset-1];if(!child)return null;let traversalRemaining=TEXT_QUOTE_LIMITS.maxTraversalNodes;for(let index=scope.segments.length-1;index>=0;index--){const segment=scope.segments[index];let cursor=segment.node;for(;cursor&&traversalRemaining>0;){if(traversalRemaining--,cursor===child)return{node:segment.node,offset:segment.node.data.length};if(cursor===container)break;cursor=cursor.parentNode}if(traversalRemaining===0)return null}return null}function findRangeEndInScope(scope,range){const boundary=resolveEndBoundaryTextNode(range.endContainer,range.endOffset,scope);if(!boundary)return null;const segment=scope.segments.find(s=>s.node===boundary.node);if(!segment||boundary.offset<0||boundary.offset>boundary.node.data.length)return null;const local=normalizedBoundaryAtRaw(segment,boundary.offset,!0);return scopeEndForSourceOffset(scope,segment.normalizedStart+local)}function boundedRangeText(range,maxCodeUnits){if(maxCodeUnits<=0)return"";if(range.startContainer===range.endContainer&&range.startContainer.nodeType===Node.TEXT_NODE)return range.startContainer.data.slice(range.startOffset,Math.min(range.endOffset,range.startOffset+maxCodeUnits));const root=range.commonAncestorContainer;let node=root.nodeType===Node.TEXT_NODE?root:root.firstChild,visited=0,text="";for(;node&&visited<TEXT_QUOTE_LIMITS.maxTraversalNodes&&text.length<maxCodeUnits;){visited++;const next=node===root?null:nextNodeWithin(root,node,!0);if(node.nodeType===Node.TEXT_NODE){let included=!1;try{included=range.intersectsNode(node)}catch{return text}if(included){const value=node.data,start=node===range.startContainer?range.startOffset:0,end=node===range.endContainer?range.endOffset:value.length;text+=value.slice(start,Math.min(end,start+maxCodeUnits-text.length))}}node=next}return text}function boundedSelectionText(range,maxCodeUnits=TEXT_QUOTE_LIMITS.maxQueryCodeUnits){const bounded=Number.isFinite(maxCodeUnits)?Math.min(TEXT_QUOTE_LIMITS.maxQueryCodeUnits,Math.max(0,Math.floor(maxCodeUnits))):TEXT_QUOTE_LIMITS.maxQueryCodeUnits;return normalizeQuoteText(boundedRangeText(range,bounded))}const TEXT_SELECTION_RECT_LIMIT=1e3;function boundedSelectionRects(range,maxRects=TEXT_SELECTION_RECT_LIMIT){const bounded=Number.isFinite(maxRects)?Math.min(TEXT_SELECTION_RECT_LIMIT,Math.max(0,Math.floor(maxRects))):TEXT_SELECTION_RECT_LIMIT,output=[];for(const rect of range.getClientRects()){if(output.length>=bounded)break;const finite=value=>Number.isFinite(value)?value:0;output.push(Object.freeze({x:finite(rect.x),y:finite(rect.y),width:finite(rect.width),height:finite(rect.height),top:finite(rect.top),right:finite(rect.right),bottom:finite(rect.bottom),left:finite(rect.left)}))}return Object.freeze(output)}function buildQuoteAnchor(range,scope){const startOffset=findRangeStartInScope(scope,range),endOffset=findRangeEndInScope(scope,range),mappedQuote=startOffset!=null&&endOffset!=null&&endOffset>startOffset?scope.text.slice(startOffset,Math.min(endOffset,startOffset+TEXT_QUOTE_LIMITS.maxQueryCodeUnits)):"",fallbackText=mappedQuote?"":boundedRangeText(range,TEXT_QUOTE_LIMITS.maxQueryCodeUnits),quote=normalizeQuoteText((mappedQuote||fallbackText).slice(0,TEXT_QUOTE_LIMITS.maxQueryCodeUnits));let prefix,suffix;return startOffset!=null&&(prefix=scope.text.slice(Math.max(0,startOffset-TEXT_QUOTE_CONTEXT_CHARS),startOffset).trim()||void 0),endOffset!=null&&(suffix=scope.text.slice(endOffset,endOffset+TEXT_QUOTE_CONTEXT_CHARS).trim()||void 0),{kind:"text-quote",quote,...prefix?{prefix}:{},...suffix?{suffix}:{}}}export{TEXT_QUOTE_LIMITS,TEXT_SELECTION_RECT_LIMIT,TextQuoteIndex,boundedSelectionRects,boundedSelectionText,buildQuoteAnchor,createTextQuoteIndex,emptyTextQuoteMatches,findTextQuoteMatches,findTextQuoteRanges,normalizeQuoteText,rangeFromTextQuoteMatch,rangesFromTextQuoteMatches,resolveTextQuote,scopeFromElement,scopeFromItems};
|