@aceshooting/lyra-ui 13.0.1 → 14.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +329 -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/commit-card/commit-card.class.d.ts +3 -1
- package/dist/components/agent-tools/commit-card/commit-card.class.js +2 -2
- package/dist/components/agent-tools/compare-panel/compare-panel.class.d.ts +2 -1
- package/dist/components/agent-tools/compare-panel/compare-panel.styles.js +1 -1
- package/dist/components/agent-tools/prompt-studio/prompt-studio.class.d.ts +6 -2
- package/dist/components/agent-tools/prompt-studio/prompt-studio.class.js +8 -8
- package/dist/components/agent-tools/result-card/result-card.class.d.ts +1 -1
- package/dist/components/agent-tools/result-card/result-card.class.js +1 -1
- package/dist/components/agent-tools/result-card/result-field.class.d.ts +1 -1
- package/dist/components/agent-tools/result-card/result-field.class.js +1 -1
- package/dist/components/agent-tools/schema-viewer/schema-viewer.class.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/stack-trace/stack-trace.class.d.ts +1 -1
- package/dist/components/agent-tools/stack-trace/stack-trace.class.js +1 -1
- package/dist/components/agent-tools/subagent-panel/subagent-panel.class.js +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 +11 -2
- package/dist/components/agent-tools/terminal/terminal.class.js +5 -5
- 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.d.ts +2 -2
- 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.class.js +2 -2
- 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 +7 -7
- 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.d.ts +3 -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 +12 -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 +33 -10
- 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.d.ts +20 -11
- package/dist/components/charts/chart/lite-chart.class.js +17 -11
- 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.d.ts +4 -3
- 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-core.class.d.ts +4 -3
- package/dist/components/conversation/code-block/code-block-core.class.js +1 -1
- package/dist/components/conversation/code-block/code-block-shared.d.ts +3 -3
- package/dist/components/conversation/code-block/code-block-shared.js +2 -2
- package/dist/components/conversation/code-block/code-block.class.d.ts +4 -3
- package/dist/components/conversation/code-block/code-block.class.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.d.ts +2 -0
- package/dist/components/conversation/code-block/shiki-types.js +1 -1
- package/dist/components/conversation/conversation-item/conversation-item.class.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-core.class.d.ts +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/markdown/markdown.class.d.ts +1 -1
- package/dist/components/conversation/message-actions/message-actions.class.d.ts +18 -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 +40 -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 +10 -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 +8 -5
- 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.class.d.ts +2 -0
- package/dist/components/conversation/transcript-feed/transcript-feed.class.js +1 -1
- package/dist/components/conversation/transcript-feed/transcript-feed.styles.js +1 -1
- package/dist/components/conversation/typing-indicator/typing-indicator.class.d.ts +2 -1
- package/dist/components/conversation/typing-indicator/typing-indicator.class.js +1 -1
- package/dist/components/conversation/usage-badge/usage-badge-overlay-runtime.d.ts +3 -0
- package/dist/components/conversation/usage-badge/usage-badge-overlay-runtime.js +1 -0
- package/dist/components/conversation/usage-badge/usage-badge.class.d.ts +4 -2
- package/dist/components/conversation/usage-badge/usage-badge.class.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 +8 -5
- package/dist/components/conversation/voice-picker/voice-picker.styles.js +1 -1
- package/dist/components/conversation/widget-renderer/resolve.d.ts +4 -6
- package/dist/components/conversation/widget-renderer/resolve.js +1 -1
- package/dist/components/data/calendar/calendar.class.d.ts +16 -5
- package/dist/components/data/calendar/calendar.class.js +2 -2
- package/dist/components/data/calendar/calendar.styles.js +1 -1
- package/dist/components/data/condition-builder/condition-builder.class.d.ts +3 -1
- package/dist/components/data/condition-builder/condition-builder.class.js +15 -1
- package/dist/components/data/context-meter/context-meter.class.d.ts +3 -1
- package/dist/components/data/context-meter/context-meter.class.js +4 -4
- package/dist/components/data/data-grid/data-grid.class.d.ts +51 -6
- 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.d.ts +5 -2
- package/dist/components/data/document-library/document-library.class.js +1 -1
- package/dist/components/data/env-list/env-list.class.js +1 -1
- package/dist/components/data/file-tree/file-tree.class.d.ts +2 -1
- package/dist/components/data/file-tree/file-tree.class.js +1 -1
- package/dist/components/data/flow-canvas/flow-canvas.class.d.ts +24 -14
- package/dist/components/data/flow-canvas/flow-canvas.class.js +1 -2
- package/dist/components/data/flow-canvas/flow-canvas.styles.js +1 -1
- package/dist/components/data/flow-canvas/flow-model.js +1 -1
- package/dist/components/data/flow-canvas/flow-types.d.ts +2 -1
- 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/funnel/funnel.class.d.ts +1 -0
- package/dist/components/data/funnel/funnel.class.js +1 -1
- package/dist/components/data/gauge/gauge.class.d.ts +4 -1
- package/dist/components/data/gauge/gauge.class.js +6 -6
- package/dist/components/data/graph-query-builder/graph-query-builder.class.d.ts +5 -2
- package/dist/components/data/graph-query-builder/graph-query-builder.class.js +15 -1
- package/dist/components/data/graph-query-builder/graph-query-builder.styles.js +1 -1
- package/dist/components/data/heatmap/heatmap.class.d.ts +7 -4
- 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/sparkline/sparkline.class.d.ts +2 -1
- package/dist/components/data/sparkline/sparkline.class.js +1 -1
- package/dist/components/data/stat/stat.class.d.ts +6 -2
- package/dist/components/data/stat/stat.class.js +1 -1
- package/dist/components/data/table/table.class.d.ts +15 -16
- package/dist/components/data/table/table.class.js +5 -4
- package/dist/components/data/table/table.styles.js +1 -1
- package/dist/components/data/timeline/timeline.class.d.ts +7 -2
- package/dist/components/data/timeline/timeline.class.js +1 -1
- package/dist/components/data/timeline/timeline.styles.js +1 -1
- package/dist/components/data/tree/tree-item.class.d.ts +3 -1
- package/dist/components/data/tree/tree-item.class.js +1 -1
- package/dist/components/data/tree/tree-item.styles.js +1 -1
- package/dist/components/data/tree/tree.class.d.ts +4 -1
- package/dist/components/data/tree/tree.class.js +1 -1
- package/dist/components/data/word-cloud/word-cloud-layout.d.ts +2 -1
- package/dist/components/data/word-cloud/word-cloud-layout.js +1 -1
- package/dist/components/data/word-cloud/word-cloud.class.d.ts +2 -1
- package/dist/components/data/word-cloud/word-cloud.class.js +1 -1
- package/dist/components/forms/button/button.class.d.ts +5 -3
- package/dist/components/forms/button/button.class.js +1 -1
- package/dist/components/forms/checkbox/checkbox.class.d.ts +3 -0
- package/dist/components/forms/checkbox/checkbox.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 +16 -4
- package/dist/components/forms/code-editor/code-editor.class.js +19 -9
- package/dist/components/forms/code-editor/code-editor.styles.js +1 -1
- package/dist/components/forms/color-picker/color-picker.class.d.ts +6 -2
- package/dist/components/forms/color-picker/color-picker.class.js +4 -4
- package/dist/components/forms/combobox/combobox.class.d.ts +19 -8
- package/dist/components/forms/combobox/combobox.class.js +3 -3
- package/dist/components/forms/combobox/combobox.styles.js +1 -1
- package/dist/components/forms/combobox/option.class.d.ts +4 -0
- package/dist/components/forms/combobox/option.class.js +2 -2
- package/dist/components/forms/date-picker/calendar-core.d.ts +1 -1
- package/dist/components/forms/date-picker/calendar-core.js +1 -1
- package/dist/components/forms/date-picker/date-input.class.d.ts +20 -10
- package/dist/components/forms/date-picker/date-input.class.js +4 -4
- package/dist/components/forms/date-picker/date-picker.class.d.ts +33 -15
- package/dist/components/forms/date-picker/date-picker.class.js +8 -8
- 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.d.ts +11 -3
- package/dist/components/forms/emoji-picker/emoji-picker.class.js +3 -3
- package/dist/components/forms/emoji-picker/emoji-types.d.ts +2 -2
- package/dist/components/forms/icon-button/icon-button.class.d.ts +4 -2
- package/dist/components/forms/icon-button/icon-button.class.js +1 -1
- package/dist/components/forms/input/input.class.d.ts +16 -5
- package/dist/components/forms/input/input.class.js +7 -1
- package/dist/components/forms/input/native-time-input.class.d.ts +3 -0
- package/dist/components/forms/input/number-input.class.d.ts +3 -0
- package/dist/components/forms/input/time-input.class.d.ts +11 -2
- package/dist/components/forms/input/time-input.class.js +2 -2
- package/dist/components/forms/locale-picker/locale-picker.class.d.ts +22 -4
- package/dist/components/forms/locale-picker/locale-picker.class.js +2 -2
- package/dist/components/forms/locale-picker/locale-picker.styles.js +1 -1
- package/dist/components/forms/otp-input/otp-input.class.d.ts +5 -1
- package/dist/components/forms/otp-input/otp-input.class.js +1 -1
- package/dist/components/forms/phone-input/phone-input.class.d.ts +21 -8
- package/dist/components/forms/phone-input/phone-input.class.js +1 -1
- package/dist/components/forms/radio/radio-button.class.d.ts +4 -0
- package/dist/components/forms/radio/radio-group.class.d.ts +4 -1
- package/dist/components/forms/radio/radio-group.class.js +1 -1
- package/dist/components/forms/radio/radio.class.d.ts +6 -2
- package/dist/components/forms/radio/radio.class.js +1 -1
- package/dist/components/forms/rubric-form/rubric-form.class.d.ts +7 -1
- package/dist/components/forms/rubric-form/rubric-form.class.js +3 -3
- package/dist/components/forms/select/select.class.d.ts +8 -2
- package/dist/components/forms/select/select.class.js +2 -2
- package/dist/components/forms/select/select.styles.js +1 -1
- package/dist/components/forms/slider/slider.class.d.ts +12 -6
- package/dist/components/forms/slider/slider.class.js +2 -2
- package/dist/components/forms/swatch-picker/swatch-picker.class.d.ts +4 -0
- package/dist/components/forms/swatch-picker/swatch-picker.class.js +1 -1
- package/dist/components/forms/switch/switch.class.d.ts +5 -1
- package/dist/components/forms/switch/switch.class.js +1 -1
- package/dist/components/forms/textarea/textarea.class.d.ts +3 -0
- package/dist/components/forms/textarea/textarea.class.js +1 -1
- package/dist/components/forms/time-range/time-range.class.d.ts +3 -0
- package/dist/components/forms/time-range/time-range.class.js +1 -1
- package/dist/components/forms/token-input/token-input.class.d.ts +8 -2
- package/dist/components/forms/token-input/token-input.class.js +2 -2
- package/dist/components/forms/token-input/token-input.styles.js +1 -1
- package/dist/components/layout/app-rail/app-rail.class.d.ts +9 -5
- 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/carousel/carousel.class.d.ts +3 -2
- package/dist/components/layout/carousel/carousel.class.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.d.ts +2 -0
- package/dist/components/layout/dashboard-grid/dashboard-grid.class.js +1 -1
- package/dist/components/layout/details/details.class.d.ts +16 -15
- 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.d.ts +3 -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-label.class.d.ts +3 -3
- package/dist/components/layout/menu/menu.class.d.ts +4 -1
- package/dist/components/layout/menu/menu.class.js +1 -1
- package/dist/components/layout/multi-split/multi-split.class.d.ts +19 -8
- package/dist/components/layout/multi-split/multi-split.class.js +2 -1
- package/dist/components/layout/multi-split/multi-split.styles.js +1 -1
- package/dist/components/layout/reorder-list/reorder-item.class.d.ts +2 -1
- package/dist/components/layout/reorder-list/reorder-item.class.js +1 -1
- package/dist/components/layout/reorder-list/reorder-list.class.js +1 -1
- package/dist/components/layout/reorder-list/reorder-owner.js +1 -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 +5 -3
- package/dist/components/layout/split-panel/split-panel.class.js +3 -2
- package/dist/components/layout/tab-group/tab-group.class.d.ts +3 -1
- package/dist/components/layout/tab-group/tab-group.class.js +1 -1
- 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.class.d.ts +6 -2
- package/dist/components/layout/widget/widget.class.js +1 -1
- package/dist/components/layout/widget/widget.styles.js +1 -1
- package/dist/components/media/animation/animation.class.d.ts +3 -2
- package/dist/components/media/animation/animation.class.js +1 -1
- package/dist/components/media/attachment-chip/attachment-chip.class.d.ts +4 -3
- package/dist/components/media/attachment-chip/attachment-chip.class.js +1 -1
- package/dist/components/media/av-player/av-metadata.d.ts +3 -2
- package/dist/components/media/av-player/av-player.class.d.ts +4 -3
- package/dist/components/media/av-player/av-player.class.js +3 -3
- package/dist/components/media/av-player/av-player.styles.js +1 -1
- package/dist/components/media/avatar/avatar.class.d.ts +2 -1
- package/dist/components/media/avatar/avatar.class.js +1 -1
- package/dist/components/media/file-input/file-input.class.d.ts +4 -2
- package/dist/components/media/file-input/file-input.class.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/image-viewer/image-viewer.class.d.ts +2 -1
- package/dist/components/media/image-viewer/image-viewer.class.js +1 -1
- package/dist/components/media/image-viewer/image-viewer.styles.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 +22 -34
- package/dist/components/media/map/map.class.js +1 -1
- package/dist/components/media/map/map.styles.js +1 -1
- package/dist/components/media/media-card/media-card.class.d.ts +1 -1
- package/dist/components/media/media-card/media-card.class.js +1 -1
- package/dist/components/media/pan-zoom/pan-zoom.class.js +1 -1
- package/dist/components/media/qr-code/qr-code-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 +3 -3
- package/dist/components/media/sequence-playback/sequence-playback.class.js +1 -1
- package/dist/components/media/sequence-playback/sequence-playback.styles.js +1 -1
- package/dist/components/media/video/video.class.d.ts +2 -1
- package/dist/components/media/video/video.styles.js +1 -1
- package/dist/components/media/zoomable-frame/zoomable-frame.class.d.ts +3 -2
- package/dist/components/media/zoomable-frame/zoomable-frame.class.js +2 -2
- package/dist/components/overlays/alert/alert.styles.js +1 -1
- package/dist/components/overlays/callout/callout.styles.js +1 -1
- package/dist/components/overlays/chip/chip-group.class.d.ts +2 -0
- package/dist/components/overlays/chip/chip-group.class.js +1 -1
- package/dist/components/overlays/dialog/dialog.class.d.ts +2 -0
- package/dist/components/overlays/dialog/dialog.class.js +1 -1
- package/dist/components/overlays/dialog/dialog.styles.js +1 -1
- package/dist/components/overlays/empty/empty.class.d.ts +2 -0
- package/dist/components/overlays/empty/empty.class.js +1 -1
- package/dist/components/overlays/kbd/kbd.class.d.ts +2 -0
- package/dist/components/overlays/kbd/kbd.class.js +1 -1
- package/dist/components/overlays/overlay/popover.class.d.ts +3 -1
- package/dist/components/overlays/overlay/popover.class.js +1 -1
- package/dist/components/overlays/overlay/tooltip.class.d.ts +3 -1
- package/dist/components/overlays/overlay/tooltip.class.js +1 -1
- package/dist/components/overlays/rating/rating.class.d.ts +2 -0
- 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/embedding-explorer/embedding-explorer.class.js +2 -2
- package/dist/components/retrieval/entity-card/entity-card.class.d.ts +5 -2
- package/dist/components/retrieval/entity-card/entity-card.class.js +1 -1
- package/dist/components/retrieval/entity-chip/entity-chip.class.d.ts +4 -2
- package/dist/components/retrieval/entity-chip/entity-chip.class.js +1 -1
- package/dist/components/retrieval/graph/graph-canvas.js +1 -1
- package/dist/components/retrieval/graph/graph-loader.js +1 -1
- package/dist/components/retrieval/graph/graph.class.d.ts +10 -8
- 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 +15 -9
- package/dist/components/retrieval/grounding-summary/grounding-summary.class.js +7 -5
- package/dist/components/retrieval/ingestion-queue/ingestion-queue.class.d.ts +2 -0
- package/dist/components/retrieval/ingestion-queue/ingestion-queue.class.js +1 -1
- 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 +7 -3
- package/dist/components/retrieval/knowledge-graph-explorer/knowledge-graph-explorer.class.js +8 -3
- 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/provenance-panel/provenance-panel.class.d.ts +2 -1
- package/dist/components/retrieval/provenance-panel/provenance-panel.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.d.ts +2 -1
- package/dist/components/retrieval/source-picker/source-picker.class.js +2 -2
- 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/format-number.class.d.ts +3 -1
- package/dist/components/utility/format/format-options.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 +6 -3
- package/dist/components/utility/json-viewer/json-viewer.class.js +5 -5
- package/dist/components/utility/known-date/known-date.class.d.ts +9 -5
- package/dist/components/utility/known-date/known-date.class.js +2 -2
- package/dist/components/utility/known-date/known-date.styles.js +1 -1
- package/dist/components/utility/mention-popover/mention-popover.class.d.ts +32 -45
- 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/utility/poll-status/poll-status.class.d.ts +3 -0
- package/dist/components/utility/poll-status/poll-status.styles.js +1 -1
- package/dist/components/viewers/calendar-viewer/calendar-loader.js +1 -1
- package/dist/components/viewers/calendar-viewer/calendar-viewer.class.d.ts +1 -0
- package/dist/components/viewers/calendar-viewer/calendar-viewer.class.js +1 -1
- package/dist/components/viewers/dataset-viewer/dataset-viewer.class.d.ts +2 -1
- package/dist/components/viewers/dataset-viewer/dataset-viewer.styles.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 +8 -4
- 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 +5 -2
- package/dist/components/viewers/document-viewer/document-viewer.class.js +2 -2
- package/dist/components/viewers/document-viewer/document-viewer.styles.js +1 -1
- package/dist/components/viewers/document-viewer/registry-ownership.d.ts +1 -0
- package/dist/components/viewers/document-viewer/registry-ownership.js +1 -0
- package/dist/components/viewers/document-viewer/registry.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 +8 -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 +3 -2
- 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/include/include-resource.js +1 -1
- package/dist/components/viewers/include/include.class.d.ts +3 -1
- package/dist/components/viewers/notebook-viewer/dompurify-loader.js +1 -1
- package/dist/components/viewers/notebook-viewer/notebook-viewer.class.d.ts +4 -2
- package/dist/components/viewers/notebook-viewer/notebook-viewer.class.js +4 -4
- package/dist/components/viewers/notebook-viewer/notebook-viewer.styles.js +1 -1
- package/dist/components/viewers/passive-markup.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/svg-viewer/svg-viewer.class.d.ts +2 -1
- package/dist/components/viewers/svg-viewer/svg-viewer.styles.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/components/viewers/xml-viewer/xml-viewer.class.d.ts +2 -1
- package/dist/components/viewers/xml-viewer/xml-viewer.class.js +1 -1
- package/dist/components/viewers/xml-viewer/xml-viewer.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.d.ts +3 -0
- 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/form-associated.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/native-control-description.d.ts +7 -0
- package/dist/internal/native-control-description.js +1 -0
- package/dist/internal/option-selection.js +1 -1
- package/dist/internal/overlay-order.d.ts +6 -0
- package/dist/internal/overlay-order.js +1 -0
- package/dist/internal/overlay-stack.d.ts +1 -1
- package/dist/internal/overlay-stack.js +1 -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/positioner.d.ts +5 -4
- package/dist/internal/pseudo-localization.js +1 -1
- package/dist/internal/reactive-property-writes.d.ts +1 -0
- package/dist/internal/reactive-property-writes.js +1 -0
- 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/svg-title.d.ts +3 -0
- package/dist/internal/svg-title.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 +10 -5
- package/llms/components/lr-accordion.md +10 -5
- package/llms/components/lr-activity-feed.md +6 -5
- package/llms/components/lr-agent-run.md +1 -1
- package/llms/components/lr-agent-trace.md +3 -0
- package/llms/components/lr-agent-workspace.md +3 -2
- package/llms/components/lr-animation.md +4 -0
- package/llms/components/lr-app-rail-item.md +4 -2
- package/llms/components/lr-app-rail.md +4 -2
- package/llms/components/lr-attachment-chip.md +8 -3
- package/llms/components/lr-audio-visualizer.md +9 -6
- package/llms/components/lr-av-player.md +14 -0
- package/llms/components/lr-avatar.md +4 -0
- package/llms/components/lr-bar-chart.md +2 -2
- package/llms/components/lr-box-plot.md +15 -6
- package/llms/components/lr-bubble-chart.md +2 -2
- package/llms/components/lr-button.md +11 -3
- package/llms/components/lr-calendar-viewer.md +4 -0
- package/llms/components/lr-calendar.md +15 -4
- package/llms/components/lr-carousel.md +5 -0
- package/llms/components/lr-chart.md +24 -9
- package/llms/components/lr-chat-composer.md +2 -1
- package/llms/components/lr-chat-message.md +4 -0
- package/llms/components/lr-checkbox.md +3 -0
- package/llms/components/lr-chip-group.md +3 -0
- package/llms/components/lr-chip.md +3 -0
- package/llms/components/lr-chunk-inspector.md +2 -2
- package/llms/components/lr-code-block-core.md +20 -8
- package/llms/components/lr-code-block.md +17 -14
- package/llms/components/lr-code-editor.md +20 -5
- package/llms/components/lr-color-picker.md +9 -0
- package/llms/components/lr-combobox.md +35 -4
- package/llms/components/lr-command-palette.md +4 -0
- package/llms/components/lr-commit-card.md +3 -0
- package/llms/components/lr-compare-panel.md +7 -0
- package/llms/components/lr-condition-builder.md +5 -0
- package/llms/components/lr-conversation-item.md +3 -0
- package/llms/components/lr-copy-button.md +10 -1
- package/llms/components/lr-dashboard-grid.md +5 -0
- package/llms/components/lr-data-grid.md +22 -3
- package/llms/components/lr-dataset-viewer.md +3 -2
- package/llms/components/lr-date-input.md +50 -6
- package/llms/components/lr-date-picker.md +51 -7
- package/llms/components/lr-details.md +10 -5
- package/llms/components/lr-dialog.md +4 -0
- package/llms/components/lr-diff-view.md +6 -0
- package/llms/components/lr-document-compare.md +6 -2
- package/llms/components/lr-document-library.md +4 -0
- package/llms/components/lr-document-preview.md +18 -4
- package/llms/components/lr-document-viewer.md +14 -4
- package/llms/components/lr-docx-viewer.md +6 -0
- package/llms/components/lr-doughnut-chart.md +2 -2
- package/llms/components/lr-dropdown-item.md +4 -0
- package/llms/components/lr-dropdown.md +3 -0
- package/llms/components/lr-ebook-viewer.md +12 -3
- package/llms/components/lr-email-viewer.md +10 -0
- package/llms/components/lr-emoji-picker.md +17 -3
- package/llms/components/lr-empty.md +3 -0
- package/llms/components/lr-entity-card.md +3 -0
- package/llms/components/lr-entity-chip.md +4 -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 +12 -8
- package/llms/components/lr-file-tree.md +5 -1
- package/llms/components/lr-filter-bar.md +5 -0
- package/llms/components/lr-flow-canvas.md +8 -1
- package/llms/components/lr-flow-node.md +2 -1
- package/llms/components/lr-flow-run-status.md +1 -1
- package/llms/components/lr-format-date.md +3 -1
- package/llms/components/lr-format-number.md +4 -0
- package/llms/components/lr-funnel.md +4 -0
- package/llms/components/lr-gauge.md +4 -0
- package/llms/components/lr-generation-metrics.md +5 -0
- package/llms/components/lr-graph-legend.md +4 -2
- package/llms/components/lr-graph-query-builder.md +6 -0
- package/llms/components/lr-graph.md +8 -2
- package/llms/components/lr-grounding-summary.md +8 -8
- package/llms/components/lr-heatmap.md +13 -0
- package/llms/components/lr-histogram.md +2 -2
- package/llms/components/lr-icon-button.md +7 -0
- package/llms/components/lr-image-viewer.md +9 -0
- package/llms/components/lr-include.md +5 -0
- package/llms/components/lr-ingestion-queue.md +5 -1
- package/llms/components/lr-input.md +22 -8
- package/llms/components/lr-intersection-observer.md +9 -0
- package/llms/components/lr-json-viewer.md +10 -1
- package/llms/components/lr-kbd.md +3 -0
- package/llms/components/lr-knowledge-base.md +10 -1
- package/llms/components/lr-knowledge-graph-explorer.md +7 -0
- package/llms/components/lr-known-date.md +7 -0
- package/llms/components/lr-line-chart.md +2 -2
- package/llms/components/lr-lite-chart.md +29 -9
- package/llms/components/lr-live-region.md +3 -0
- package/llms/components/lr-locale-picker.md +12 -0
- package/llms/components/lr-map.md +23 -5
- package/llms/components/lr-markdown-core.md +4 -0
- package/llms/components/lr-markdown.md +15 -8
- package/llms/components/lr-media-card.md +5 -8
- package/llms/components/lr-mention-popover.md +17 -10
- package/llms/components/lr-menu-item.md +4 -0
- package/llms/components/lr-menu-label.md +4 -3
- package/llms/components/lr-menu.md +4 -0
- package/llms/components/lr-message-actions.md +13 -3
- package/llms/components/lr-message-feedback.md +24 -7
- package/llms/components/lr-message-parts.md +6 -3
- package/llms/components/lr-model-select.md +13 -2
- package/llms/components/lr-multi-split.md +20 -7
- package/llms/components/lr-mutation-observer.md +8 -0
- package/llms/components/lr-native-time-input.md +10 -0
- package/llms/components/lr-node-palette.md +8 -2
- package/llms/components/lr-notebook-viewer.md +4 -1
- package/llms/components/lr-number-input.md +12 -1
- package/llms/components/lr-option.md +35 -4
- package/llms/components/lr-otp-input.md +10 -0
- package/llms/components/lr-pan-zoom.md +1 -2
- package/llms/components/lr-phone-input.md +20 -5
- package/llms/components/lr-pie-chart.md +2 -2
- package/llms/components/lr-polar-area-chart.md +2 -2
- package/llms/components/lr-poll-status.md +4 -0
- package/llms/components/lr-popover.md +3 -0
- package/llms/components/lr-popup.md +3 -2
- package/llms/components/lr-prompt-input.md +7 -3
- package/llms/components/lr-prompt-queue.md +6 -0
- package/llms/components/lr-prompt-studio.md +7 -0
- package/llms/components/lr-provenance-panel.md +3 -0
- package/llms/components/lr-push-to-talk.md +8 -0
- package/llms/components/lr-qr-code.md +6 -0
- package/llms/components/lr-radar-chart.md +2 -2
- package/llms/components/lr-radio-button.md +13 -4
- package/llms/components/lr-radio-group.md +5 -0
- package/llms/components/lr-radio.md +9 -0
- package/llms/components/lr-rating.md +8 -0
- package/llms/components/lr-relative-time.md +2 -0
- package/llms/components/lr-reorder-item.md +6 -0
- package/llms/components/lr-reorder-list.md +6 -0
- package/llms/components/lr-result-card.md +6 -3
- package/llms/components/lr-result-field.md +6 -3
- package/llms/components/lr-retrieval-results.md +1 -1
- package/llms/components/lr-rubric-form.md +12 -0
- package/llms/components/lr-scatter-chart.md +2 -2
- package/llms/components/lr-scroller.md +5 -5
- package/llms/components/lr-select.md +9 -0
- package/llms/components/lr-sequence-playback.md +5 -2
- package/llms/components/lr-slider.md +19 -5
- package/llms/components/lr-source-picker.md +4 -0
- package/llms/components/lr-span-waterfall.md +3 -0
- package/llms/components/lr-sparkline.md +4 -0
- package/llms/components/lr-split-panel.md +4 -0
- package/llms/components/lr-stack-trace.md +3 -0
- package/llms/components/lr-stat.md +10 -0
- package/llms/components/lr-streaming-text.md +2 -3
- package/llms/components/lr-subagent-panel.md +3 -2
- package/llms/components/lr-svg-viewer.md +3 -0
- package/llms/components/lr-swatch-picker.md +4 -0
- package/llms/components/lr-switch.md +6 -0
- package/llms/components/lr-tab-group.md +4 -0
- package/llms/components/lr-table.md +10 -2
- package/llms/components/lr-terminal.md +17 -5
- package/llms/components/lr-textarea.md +9 -0
- package/llms/components/lr-thinking-panel.md +3 -1
- package/llms/components/lr-thread-list.md +26 -4
- package/llms/components/lr-time-input.md +3 -0
- package/llms/components/lr-time-range.md +5 -0
- package/llms/components/lr-timeline-item.md +6 -0
- package/llms/components/lr-timeline.md +6 -0
- package/llms/components/lr-token-input.md +14 -0
- package/llms/components/lr-tool-call-chip.md +7 -5
- package/llms/components/lr-tool-param-form.md +6 -2
- package/llms/components/lr-tool-result-dialog.md +4 -0
- package/llms/components/lr-tool-result-view.md +2 -3
- package/llms/components/lr-tool-select-dialog.md +6 -2
- package/llms/components/lr-tooltip.md +6 -0
- package/llms/components/lr-trace-tree.md +3 -0
- package/llms/components/lr-transcript-feed.md +3 -0
- package/llms/components/lr-tree-item.md +12 -5
- package/llms/components/lr-tree.md +12 -5
- package/llms/components/lr-typing-indicator.md +3 -0
- package/llms/components/lr-usage-badge.md +4 -0
- package/llms/components/lr-video.md +8 -2
- package/llms/components/lr-virtual-list.md +5 -3
- package/llms/components/lr-voice-picker.md +15 -2
- package/llms/components/lr-widget-renderer.md +21 -13
- package/llms/components/lr-widget.md +4 -2
- package/llms/components/lr-word-cloud.md +4 -0
- package/llms/components/lr-xml-viewer.md +9 -2
- package/llms/components/lr-zoomable-frame.md +6 -3
- package/llms/peers.md +5 -5
- package/llms/shared.md +74 -63
- package/llms-full.txt +4705 -2954
- package/package.json +19 -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
|
@@ -7,10 +7,11 @@ placement:Placement;
|
|
|
7
7
|
/** Arrow offsets within the popup, present only when an `arrow` element was supplied. */
|
|
8
8
|
arrow?:{x?:number;y?:number;};}
|
|
9
9
|
/**
|
|
10
|
-
* Which CSS positioning scheme the popup is laid out with. `fixed` (this library's default)
|
|
11
|
-
*
|
|
12
|
-
*
|
|
13
|
-
*
|
|
10
|
+
* Which CSS positioning scheme the popup is laid out with. `fixed` (this library's default)
|
|
11
|
+
* normally positions against the viewport, but transformed, filtered or containing ancestors can
|
|
12
|
+
* establish its containing block and clipping still applies. It does not guarantee escape from
|
|
13
|
+
* every ancestor. `absolute` positions against its containing block and can scroll with that
|
|
14
|
+
* content; choose the strategy to match the surrounding layout.
|
|
14
15
|
*/
|
|
15
16
|
export type PlaceStrategy='absolute'|'fixed';
|
|
16
17
|
/** Which axes `autoSize` re-measures against its own boundary and padding. */
|
|
@@ -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};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export{};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
const observedSetters=new WeakSet;function observeReactivePropertyWrites(prototype,names,onWrite){for(const name of names){let owner=prototype,descriptor;for(;owner&&!descriptor;)descriptor=Object.getOwnPropertyDescriptor(owner,name),owner=Object.getPrototypeOf(owner);const originalSet=descriptor?.set;if(!originalSet||observedSetters.has(originalSet))continue;const set=function(value){originalSet.call(this,value),onWrite(this,name,value)};observedSetters.add(set),Object.defineProperty(prototype,name,{...descriptor,set})}}export{observeReactivePropertyWrites};
|
|
@@ -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};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{unsafeSVG}from"lit/directives/unsafe-svg.js";function nativeSvgTitle(text){const escaped=text.replaceAll("&","&").replaceAll("<","<").replaceAll(">",">").replaceAll("\r"," ");return unsafeSVG(`<title>${escaped}</title>`)}export{nativeSvgTitle};
|
|
@@ -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};
|