@aceshooting/lyra-ui 26.0.0 → 27.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +63 -675
- package/README.md +281 -1130
- package/design-tokens.json +1 -1
- package/dist/ai/types.d.ts +5 -5
- package/dist/autoloader.js +1 -1
- package/dist/cli/agent-registry.mjs +1 -0
- package/dist/cli/component-inventory.mjs +1 -1
- package/dist/cli/init-agents.mjs +40 -0
- package/dist/cli/is-main-module.mjs +1 -0
- package/dist/cli/lyra-rename-ledger.mjs +1 -1
- package/dist/cli/lyra-ui.mjs +11 -0
- package/dist/cli/migrate-wa.mjs +4 -2
- package/dist/cli/migration-contract.json +1 -1
- package/dist/cli/migration-renames.mjs +1 -1
- package/dist/components/agent-tools/agent-eval-dashboard/agent-eval-dashboard.class.d.ts +1 -1
- package/dist/components/agent-tools/agent-eval-dashboard/agent-eval-dashboard.class.js +2 -2
- package/dist/components/agent-tools/approval-queue/approval-queue.class.js +1 -1
- package/dist/components/agent-tools/confirm-bar/confirm-bar.class.d.ts +2 -2
- package/dist/components/agent-tools/confirm-bar/confirm-bar.class.js +2 -2
- package/dist/components/agent-tools/connector-manager/connector-manager.class.d.ts +4 -2
- package/dist/components/agent-tools/connector-manager/connector-manager.class.js +6 -3
- package/dist/components/agent-tools/connector-manager/connector-manager.d.ts +1 -1
- package/dist/components/agent-tools/connector-manager/connector-manager.js +1 -1
- package/dist/components/agent-tools/connector-manager/connector-manager.styles.js +1 -1
- package/dist/components/agent-tools/context-inspector/context-inspector.class.d.ts +2 -2
- package/dist/components/agent-tools/context-inspector/context-inspector.class.js +6 -6
- package/dist/components/agent-tools/eval-dataset/eval-dataset.class.d.ts +8 -33
- package/dist/components/agent-tools/eval-dataset/eval-dataset.class.js +27 -4
- package/dist/components/agent-tools/eval-dataset/eval-dataset.d.ts +1 -1
- package/dist/components/agent-tools/eval-dataset/eval-dataset.js +1 -1
- package/dist/components/agent-tools/eval-dataset/eval-dataset.styles.js +1 -1
- package/dist/components/agent-tools/evaluation-run/evaluation-run.class.js +1 -1
- package/dist/components/agent-tools/permission-grant/permission-grant.class.d.ts +4 -2
- package/dist/components/agent-tools/permission-grant/permission-grant.class.js +6 -3
- package/dist/components/agent-tools/permission-grant/permission-grant.d.ts +1 -1
- package/dist/components/agent-tools/permission-grant/permission-grant.js +1 -1
- package/dist/components/agent-tools/permission-grant/permission-grant.styles.js +1 -1
- package/dist/components/agent-tools/prompt-studio/prompt-studio.class.d.ts +1 -1
- package/dist/components/agent-tools/prompt-studio/prompt-studio.class.js +2 -2
- package/dist/components/agent-tools/schema-viewer/schema-viewer.class.d.ts +3 -1
- package/dist/components/agent-tools/schema-viewer/schema-viewer.class.js +1 -1
- package/dist/components/agent-tools/stack-trace/stack-trace.class.js +1 -1
- package/dist/components/agent-tools/task-list/task-list.class.d.ts +2 -2
- package/dist/components/agent-tools/task-list/task-list.class.js +2 -2
- package/dist/components/agent-tools/terminal/terminal.class.d.ts +1 -1
- package/dist/components/agent-tools/terminal/terminal.class.js +4 -4
- package/dist/components/agent-tools/tool-approval-dialog/tool-approval-dialog.class.d.ts +15 -9
- package/dist/components/agent-tools/tool-approval-dialog/tool-approval-dialog.class.js +1 -1
- package/dist/components/agent-tools/tool-call-block/tool-call-block.class.d.ts +2 -2
- package/dist/components/agent-tools/tool-call-block/tool-call-block.class.js +1 -1
- package/dist/components/agent-tools/tool-call-block/tool-call-block.styles.js +1 -1
- package/dist/components/agent-tools/tool-call-chip/tool-call-chip.class.d.ts +2 -7
- package/dist/components/agent-tools/tool-call-chip/tool-call-chip.styles.js +1 -1
- package/dist/components/agent-tools/tool-param-form/tool-param-constraints.js +1 -1
- package/dist/components/agent-tools/tool-param-form/tool-param-form.class.d.ts +3 -5
- package/dist/components/agent-tools/tool-param-form/tool-param-form.class.js +1 -1
- package/dist/components/agent-tools/tool-result-dialog/tool-result-dialog.class.d.ts +2 -5
- 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 +4 -12
- package/dist/components/agent-tools/tool-result-view/tool-result-view.class.d.ts +2 -2
- package/dist/components/agent-tools/tool-result-view/tool-result-view.class.js +1 -1
- package/dist/components/agent-tools/tool-status.d.ts +7 -0
- package/dist/components/agent-tools/tool-status.styles.js +1 -0
- package/dist/components/agent-tools/tool-timeline/tool-timeline.class.js +1 -1
- package/dist/components/agent-tools/tool-timeline/tool-timeline.d.ts +1 -1
- package/dist/components/agent-tools/tool-timeline/tool-timeline.js +1 -1
- package/dist/components/agent-tools/trace-tree/trace-tree.class.js +2 -2
- package/dist/components/charts/chart/box-plot.class.d.ts +1 -1
- package/dist/components/charts/chart/box-plot.class.js +1 -1
- package/dist/components/charts/chart/box-plot.styles.js +1 -1
- package/dist/components/charts/chart/chart-surface-shared.js +1 -0
- package/dist/components/charts/chart/chart-surface.styles.js +1 -1
- package/dist/components/charts/chart/chart-table-sampling.js +1 -1
- package/dist/components/charts/chart/chart.class.d.ts +2 -2
- package/dist/components/charts/chart/chart.class.js +2 -2
- package/dist/components/charts/chart/chart.styles.js +1 -1
- package/dist/components/charts/chart/histogram.class.js +1 -1
- package/dist/components/charts/chart/lite-chart.class.d.ts +1 -1
- package/dist/components/charts/chart/lite-chart.class.js +4 -4
- package/dist/components/conversation/catalog-picker-element.d.ts +28 -13
- package/dist/components/conversation/catalog-picker-element.js +1 -1
- package/dist/components/conversation/catalog-picker-trigger.styles.js +1 -0
- package/dist/components/conversation/chat-message/chat-message.class.js +1 -1
- package/dist/components/conversation/chat-message/chat-message.styles.js +1 -1
- package/dist/components/conversation/chat-viewport/chat-viewport.class.d.ts +1 -1
- package/dist/components/conversation/chat-viewport/chat-viewport.class.js +1 -1
- package/dist/components/conversation/code-block/code-block-shared.js +1 -1
- package/dist/components/conversation/conversation-item/conversation-item.class.js +1 -1
- package/dist/components/conversation/generation-metrics/generation-metrics.class.js +2 -2
- package/dist/components/conversation/markdown/markdown-base.class.js +1 -1
- package/dist/components/conversation/markdown/markdown-code-header.js +1 -1
- package/dist/components/conversation/message-actions/message-actions.class.js +1 -1
- package/dist/components/conversation/model-select/model-select.class.d.ts +7 -34
- package/dist/components/conversation/model-select/model-select.class.js +3 -3
- package/dist/components/conversation/model-select/model-select.styles.js +1 -1
- package/dist/components/conversation/prompt-input/prompt-input.class.d.ts +7 -2
- package/dist/components/conversation/prompt-input/prompt-input.class.js +5 -2
- package/dist/components/conversation/prompt-queue/prompt-queue.class.js +1 -1
- package/dist/components/conversation/realtime-session/realtime-session.class.js +1 -1
- package/dist/components/conversation/selection-toolbar/selection-toolbar.class.js +1 -1
- package/dist/components/conversation/stream-status/stream-status.class.js +1 -1
- package/dist/components/conversation/voice-picker/voice-picker.class.d.ts +10 -27
- package/dist/components/conversation/voice-picker/voice-picker.class.js +3 -3
- package/dist/components/conversation/voice-picker/voice-picker.styles.js +1 -1
- package/dist/components/data/condition-builder/condition-builder.class.js +1 -1
- package/dist/components/data/data-grid/data-grid.class.js +1 -1
- package/dist/components/data/document-library/document-library.class.d.ts +2 -2
- package/dist/components/data/document-library/document-library.class.js +2 -2
- package/dist/components/data/graph-query-builder/graph-query-builder.class.d.ts +3 -3
- package/dist/components/data/graph-query-builder/graph-query-builder.class.js +1 -1
- package/dist/components/data/heatmap/heatmap.class.js +2 -2
- package/dist/components/data/sequence-strip/sequence-strip.class.d.ts +1 -1
- package/dist/components/data/sequence-strip/sequence-strip.class.js +1 -1
- package/dist/components/data/table/table.class.d.ts +10 -195
- package/dist/components/data/table/table.class.js +2 -2
- package/dist/components/data/table/table.styles.js +1 -1
- package/dist/components/data/timeline/timeline.class.js +1 -1
- package/dist/components/data/tree/tree.class.js +1 -1
- package/dist/components/forms/button/button.class.d.ts +3 -3
- package/dist/components/forms/button/button.class.js +1 -1
- package/dist/components/forms/catalog-picker-base.js +1 -1
- package/dist/components/forms/checkbox/checkbox.class.d.ts +13 -34
- package/dist/components/forms/checkbox/checkbox.class.js +3 -3
- package/dist/components/forms/checkbox-group/checkbox-group.class.d.ts +3 -3
- package/dist/components/forms/checkbox-group/checkbox-group.class.js +1 -1
- package/dist/components/forms/code-editor/code-editor.class.js +1 -1
- package/dist/components/forms/color-picker/color-picker.class.js +1 -1
- package/dist/components/forms/combobox/combobox.class.d.ts +6 -6
- package/dist/components/forms/combobox/combobox.class.js +3 -2
- package/dist/components/forms/combobox/option.class.d.ts +3 -0
- package/dist/components/forms/combobox/option.class.js +2 -2
- package/dist/components/forms/date-picker/date-input.class.d.ts +10 -11
- package/dist/components/forms/date-picker/date-input.class.js +4 -3
- package/dist/components/forms/date-picker/date-input.styles.js +1 -1
- package/dist/components/forms/date-picker/date-picker.class.d.ts +6 -0
- package/dist/components/forms/date-picker/date-picker.class.js +1 -1
- package/dist/components/forms/date-picker/date-picker.styles.js +1 -1
- package/dist/components/forms/emoji-picker/emoji-data-loader.js +1 -1
- package/dist/components/forms/emoji-picker/emoji-picker.class.js +1 -1
- package/dist/components/forms/input/input.styles.js +1 -1
- package/dist/components/forms/input/time-input.class.d.ts +1 -1
- package/dist/components/forms/input/time-input.class.js +1 -1
- package/dist/components/forms/input/time-input.styles.js +1 -1
- package/dist/components/forms/locale-picker/locale-picker.class.d.ts +5 -5
- package/dist/components/forms/locale-picker/locale-picker.class.js +1 -1
- package/dist/components/forms/otp-input/otp-input.class.js +1 -0
- package/dist/components/forms/phone-input/phone-input.class.d.ts +7 -9
- package/dist/components/forms/phone-input/phone-input.class.js +6 -5
- package/dist/components/forms/phone-input/phone-input.styles.js +1 -1
- package/dist/components/forms/radio/radio-group.class.d.ts +4 -4
- package/dist/components/forms/radio/radio-group.class.js +1 -1
- package/dist/components/forms/radio/radio.class.d.ts +11 -19
- package/dist/components/forms/radio/radio.class.js +2 -2
- package/dist/components/forms/rubric-form/rubric-form.class.d.ts +3 -5
- package/dist/components/forms/rubric-form/rubric-form.class.js +1 -1
- package/dist/components/forms/select/select.class.d.ts +5 -7
- package/dist/components/forms/select/select.class.js +3 -2
- package/dist/components/forms/slider/slider.class.d.ts +3 -3
- package/dist/components/forms/slider/slider.class.js +1 -1
- package/dist/components/forms/slider/slider.styles.js +1 -1
- package/dist/components/forms/swatch-picker/swatch-picker.class.js +1 -1
- package/dist/components/forms/switch/switch.class.d.ts +11 -36
- package/dist/components/forms/switch/switch.class.js +2 -2
- package/dist/components/forms/textarea/textarea.class.js +1 -0
- package/dist/components/forms/textarea/textarea.styles.js +1 -1
- package/dist/components/forms/time-range/time-range.class.d.ts +5 -3
- package/dist/components/forms/time-range/time-range.class.js +1 -1
- package/dist/components/forms/time-range/time-range.styles.js +1 -1
- package/dist/components/forms/toggle-group/toggle-group.class.d.ts +2 -2
- package/dist/components/forms/toggle-group/toggle-group.class.js +1 -1
- package/dist/components/forms/token-input/token-input.class.d.ts +3 -3
- package/dist/components/forms/token-input/token-input.class.js +1 -1
- package/dist/components/layout/app-rail/app-rail-item.class.js +1 -1
- package/dist/components/layout/app-rail/app-rail.class.d.ts +2 -2
- package/dist/components/layout/app-rail/app-rail.class.js +1 -1
- package/dist/components/layout/breadcrumb/breadcrumb-item.class.js +1 -1
- package/dist/components/layout/card/card.class.js +1 -1
- package/dist/components/layout/carousel/carousel.class.js +1 -1
- package/dist/components/layout/command-palette/command-palette.class.d.ts +6 -2
- package/dist/components/layout/command-palette/command-palette.class.js +1 -1
- package/dist/components/layout/dashboard-grid/dashboard-grid.class.js +1 -1
- package/dist/components/layout/details/accordion.class.js +1 -1
- package/dist/components/layout/dock-panel/dock-panel.class.d.ts +1 -1
- package/dist/components/layout/dock-panel/dock-panel.class.js +1 -1
- package/dist/components/layout/drilldown-panel/drilldown-panel.class.js +2 -2
- package/dist/components/layout/filter-bar/filter-bar.class.d.ts +3 -2
- package/dist/components/layout/filter-bar/filter-bar.class.js +18 -15
- package/dist/components/layout/filter-bar/filter-bar.styles.js +1 -1
- package/dist/components/layout/menu/menu.class.d.ts +1 -1
- package/dist/components/layout/menu/menu.class.js +1 -1
- package/dist/components/layout/multi-split/multi-split.class.d.ts +1 -1
- package/dist/components/layout/multi-split/multi-split.class.js +1 -1
- package/dist/components/layout/navigation-menu-item/navigation-menu-item.class.js +1 -1
- package/dist/components/layout/page/page.class.d.ts +1 -1
- package/dist/components/layout/page/page.class.js +1 -1
- package/dist/components/layout/responsive-panel/responsive-panel.class.d.ts +1 -1
- package/dist/components/layout/responsive-panel/responsive-panel.class.js +1 -1
- package/dist/components/layout/scroller/scroller.class.js +1 -1
- package/dist/components/layout/segmented/segmented.class.js +1 -1
- package/dist/components/layout/stepper/stepper.class.js +2 -2
- package/dist/components/layout/tab-group/tab-group.class.js +1 -1
- package/dist/components/layout/virtual-list/virtual-list.class.d.ts +1 -1
- package/dist/components/layout/virtual-list/virtual-list.class.js +1 -1
- package/dist/components/layout/widget/widget.class.d.ts +1 -1
- package/dist/components/layout/widget/widget.class.js +3 -3
- package/dist/components/media/drop-zone/drop-zone.class.d.ts +10 -0
- package/dist/components/media/drop-zone/drop-zone.class.js +2 -2
- package/dist/components/media/file-input/file-input.class.d.ts +3 -3
- package/dist/components/media/file-input/file-input.class.js +2 -2
- package/dist/components/media/file-input/file-intake.d.ts +5 -1
- package/dist/components/media/file-input/file-intake.js +1 -1
- package/dist/components/media/flag/flag.class.js +1 -1
- package/dist/components/media/image-viewer/image-viewer.styles.js +1 -1
- package/dist/components/media/lightbox/lightbox.class.js +1 -1
- package/dist/components/media/map/map.class.js +2 -2
- package/dist/components/media/qr-code/qr-code-loader.js +1 -1
- package/dist/components/media/qr-code/qr-code.class.js +1 -1
- package/dist/components/media/video/video.class.js +3 -3
- package/dist/components/media/video-playlist/video-playlist.class.js +1 -1
- package/dist/components/media/zoomable-frame/zoomable-frame.class.d.ts +2 -2
- package/dist/components/media/zoomable-frame/zoomable-frame.class.js +1 -1
- package/dist/components/overlays/alert/alert.class.d.ts +3 -3
- package/dist/components/overlays/alert/alert.class.js +1 -1
- package/dist/components/overlays/badge/badge.class.d.ts +2 -2
- package/dist/components/overlays/badge/badge.class.js +1 -1
- package/dist/components/overlays/badge/tag.class.d.ts +3 -1
- package/dist/components/overlays/badge/tag.class.js +3 -2
- package/dist/components/overlays/badge/tag.styles.js +1 -1
- package/dist/components/overlays/callout/callout.class.d.ts +2 -2
- package/dist/components/overlays/callout/callout.class.js +1 -1
- package/dist/components/overlays/chip/chip.class.d.ts +4 -2
- package/dist/components/overlays/chip/chip.class.js +2 -2
- package/dist/components/overlays/dialog/dialog.class.d.ts +1 -1
- package/dist/components/overlays/dialog/dialog.class.js +1 -1
- package/dist/components/overlays/overlay/overlay-shared.d.ts +9 -0
- package/dist/components/overlays/overlay/overlay-shared.js +1 -1
- package/dist/components/overlays/overlay/popover.class.d.ts +2 -2
- package/dist/components/overlays/overlay/popover.class.js +1 -1
- package/dist/components/overlays/overlay/tooltip.class.d.ts +1 -1
- package/dist/components/overlays/overlay/tooltip.class.js +1 -1
- package/dist/components/overlays/progress/progress-bar.class.d.ts +5 -22
- package/dist/components/overlays/progress/progress-bar.class.js +4 -4
- package/dist/components/overlays/progress/progress-base.d.ts +25 -0
- package/dist/components/overlays/progress/progress-base.js +1 -0
- package/dist/components/overlays/progress/progress-ring.class.d.ts +3 -24
- package/dist/components/overlays/progress/progress-ring.class.js +4 -4
- package/dist/components/overlays/rating/rating.class.d.ts +3 -3
- package/dist/components/overlays/rating/rating.class.js +1 -1
- package/dist/components/retrieval/chunk-inspector/chunk-inspector.class.d.ts +4 -2
- package/dist/components/retrieval/chunk-inspector/chunk-inspector.class.js +4 -4
- package/dist/components/retrieval/embedding-explorer/embedding-explorer.class.js +1 -1
- package/dist/components/retrieval/entity-dossier/entity-dossier.class.d.ts +1 -1
- package/dist/components/retrieval/graph/graph-canvas.js +1 -1
- package/dist/components/retrieval/graph/graph-model.js +1 -1
- package/dist/components/retrieval/graph/graph.class.d.ts +1 -3
- package/dist/components/retrieval/graph/graph.class.js +1 -1
- package/dist/components/retrieval/grounding-summary/grounding-summary.class.d.ts +1 -1
- package/dist/components/retrieval/grounding-summary/grounding-summary.class.js +2 -2
- package/dist/components/retrieval/knowledge-base/knowledge-base.class.d.ts +1 -1
- package/dist/components/retrieval/knowledge-base/knowledge-base.class.js +2 -2
- package/dist/components/retrieval/knowledge-base-admin/knowledge-base-admin.class.js +1 -1
- package/dist/components/retrieval/knowledge-graph-explorer/knowledge-graph-explorer.class.d.ts +1 -0
- package/dist/components/retrieval/knowledge-graph-explorer/knowledge-graph-explorer.class.js +2 -1
- package/dist/components/retrieval/memory-panel/memory-panel.class.d.ts +6 -2
- package/dist/components/retrieval/memory-panel/memory-panel.class.js +2 -2
- package/dist/components/retrieval/memory-panel/memory-panel.styles.js +1 -1
- package/dist/components/retrieval/node-palette/node-palette.class.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 +1 -1
- package/dist/components/retrieval/research-progress/research-progress.class.d.ts +5 -1
- package/dist/components/retrieval/research-progress/research-progress.class.js +3 -3
- package/dist/components/retrieval/research-progress/research-progress.d.ts +1 -1
- package/dist/components/retrieval/research-progress/research-progress.js +1 -1
- package/dist/components/retrieval/research-progress/research-progress.styles.js +1 -1
- package/dist/components/retrieval/retrieval-compare/retrieval-compare.class.d.ts +6 -2
- package/dist/components/retrieval/retrieval-compare/retrieval-compare.class.js +2 -2
- package/dist/components/retrieval/retrieval-compare/retrieval-compare.styles.js +1 -1
- package/dist/components/retrieval/retrieval-results/retrieval-results.class.d.ts +2 -2
- package/dist/components/retrieval/retrieval-results/retrieval-results.class.js +3 -2
- package/dist/components/retrieval/retrieval-search/retrieval-search.class.js +3 -3
- package/dist/components/retrieval/retrieval-trace/retrieval-trace.class.d.ts +6 -2
- package/dist/components/retrieval/retrieval-trace/retrieval-trace.class.js +2 -2
- package/dist/components/retrieval/retrieval-trace/retrieval-trace.styles.js +1 -1
- package/dist/components/retrieval/source-picker/source-picker.class.js +1 -1
- package/dist/components/utility/copy-button/copy-button.class.js +1 -1
- package/dist/components/utility/diff-view/diff-view.class.js +1 -1
- package/dist/components/utility/export-button/export-button.class.d.ts +1 -1
- package/dist/components/utility/export-button/export-button.class.js +1 -1
- package/dist/components/utility/icon/dompurify-loader.js +1 -1
- package/dist/components/utility/json-viewer/json-viewer.class.js +2 -2
- package/dist/components/utility/known-date/known-date.class.js +1 -1
- 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/random-content/random-content.class.d.ts +1 -1
- package/dist/components/utility/random-content/random-content.class.js +1 -1
- package/dist/components/utility/tour/tour.class.d.ts +1 -1
- package/dist/components/utility/tour/tour.class.js +1 -1
- package/dist/components/viewers/archive-viewer/archive-viewer.class.js +1 -1
- package/dist/components/viewers/archive-viewer/archive-viewer.styles.js +1 -1
- package/dist/components/viewers/calendar-viewer/calendar-viewer.class.d.ts +3 -1
- package/dist/components/viewers/calendar-viewer/calendar-viewer.class.js +1 -1
- package/dist/components/viewers/contact-viewer/contact-viewer.class.d.ts +3 -1
- package/dist/components/viewers/contact-viewer/contact-viewer.class.js +1 -1
- package/dist/components/viewers/csv-viewer/csv-viewer.class.d.ts +2 -2
- package/dist/components/viewers/csv-viewer/csv-viewer.class.js +4 -18
- package/dist/components/viewers/csv-viewer/csv-viewer.styles.js +1 -1
- package/dist/components/viewers/dataset-viewer/dataset-viewer.class.d.ts +2 -2
- package/dist/components/viewers/dataset-viewer/dataset-viewer.class.js +4 -18
- package/dist/components/viewers/dataset-viewer/dataset-viewer.styles.js +1 -1
- package/dist/components/viewers/document-preview/document-preview.class.d.ts +1 -1
- package/dist/components/viewers/document-preview/document-preview.class.js +3 -16
- package/dist/components/viewers/document-viewer/ooxml-part-guard.js +1 -0
- package/dist/components/viewers/docx-viewer/docx-loader.js +1 -1
- package/dist/components/viewers/docx-viewer/docx-resource-guard.js +1 -1
- package/dist/components/viewers/docx-viewer/docx-viewer.class.d.ts +3 -3
- package/dist/components/viewers/docx-viewer/docx-viewer.class.js +3 -3
- package/dist/components/viewers/ebook-viewer/ebook-loader.js +1 -1
- package/dist/components/viewers/ebook-viewer/ebook-viewer.class.d.ts +1 -1
- package/dist/components/viewers/ebook-viewer/ebook-viewer.class.js +2 -1
- package/dist/components/viewers/ebook-viewer/epub-resource-guard.js +1 -1
- package/dist/components/viewers/email-viewer/email-viewer.class.d.ts +1 -1
- package/dist/components/viewers/email-viewer/email-viewer.class.js +2 -2
- package/dist/components/viewers/geojson-view/geojson-viewer.class.d.ts +1 -4
- package/dist/components/viewers/geojson-view/geojson-viewer.class.js +1 -1
- package/dist/components/viewers/highlight-layer/highlight-layer.class.js +1 -1
- package/dist/components/viewers/html-viewer/html-viewer.class.d.ts +3 -1
- package/dist/components/viewers/html-viewer/html-viewer.class.js +1 -1
- package/dist/components/viewers/html-viewer/html-viewer.styles.js +1 -1
- package/dist/components/viewers/notebook-viewer/dompurify-loader.js +1 -1
- package/dist/components/viewers/notebook-viewer/notebook-viewer.class.js +1 -1
- package/dist/components/viewers/page-rail/page-rail.class.js +2 -2
- package/dist/components/viewers/passive-markup.js +1 -1
- package/dist/components/viewers/pdf-viewer/pdf-loader.js +1 -1
- package/dist/components/viewers/pdf-viewer/pdf-viewer.class.d.ts +2 -2
- package/dist/components/viewers/pdf-viewer/pdf-viewer.class.js +4 -4
- package/dist/components/viewers/pptx-viewer/pptx-loader.js +1 -1
- package/dist/components/viewers/pptx-viewer/pptx-resource-guard.js +1 -1
- package/dist/components/viewers/pptx-viewer/pptx-viewer.class.js +1 -1
- package/dist/components/viewers/region-highlight-layer.js +15 -2
- package/dist/components/viewers/spreadsheet-viewer/spreadsheet-viewer.class.d.ts +2 -2
- package/dist/components/viewers/spreadsheet-viewer/spreadsheet-viewer.class.js +4 -18
- package/dist/components/viewers/spreadsheet-viewer/spreadsheet-viewer.styles.js +1 -1
- package/dist/components/viewers/svg-viewer/svg-viewer.class.d.ts +1 -1
- package/dist/components/viewers/svg-viewer/svg-viewer.class.js +2 -15
- package/dist/components/viewers/svg-viewer/svg-viewer.styles.js +1 -1
- package/dist/components/viewers/table-viewer-shared.js +15 -1
- package/dist/components/viewers/table-viewer-shared.styles.js +1 -0
- package/dist/events.d.ts +19 -18
- package/dist/framework-types.d.ts +1 -1
- package/dist/internal/accessibility-visibility.d.ts +3 -1
- package/dist/internal/accessibility-visibility.js +1 -1
- package/dist/internal/accessible-text-controller.js +1 -1
- package/dist/internal/active-element.d.ts +11 -0
- package/dist/internal/active-element.js +1 -1
- package/dist/internal/adjacent-runs.js +1 -1
- package/dist/internal/approval-wait-until.d.ts +7 -0
- package/dist/internal/approval-wait-until.js +1 -0
- package/dist/internal/aria-controls.js +1 -1
- package/dist/internal/catalog-picker.d.ts +2 -2
- package/dist/internal/catalog-picker.js +1 -1
- package/dist/internal/composed-tree.d.ts +18 -0
- package/dist/internal/composed-tree.js +1 -1
- package/dist/internal/copy-feedback.js +1 -0
- package/dist/internal/css-length.js +1 -1
- package/dist/internal/css-motion-time.js +1 -1
- package/dist/internal/css-number.js +1 -0
- package/dist/internal/default-strings.generated.js +1 -1
- package/dist/internal/deferred-focus-return.d.ts +33 -0
- package/dist/internal/deferred-focus-return.js +1 -1
- package/dist/internal/fixed-containing-block.js +1 -1
- package/dist/internal/form-associated.d.ts +38 -2
- package/dist/internal/form-associated.js +1 -1
- package/dist/internal/form-control-element.d.ts +13 -0
- package/dist/internal/form-control-element.js +1 -0
- package/dist/internal/form-control.styles.js +1 -1
- package/dist/internal/inherited-attribute-hub.js +1 -1
- package/dist/internal/locale-loaders.generated.js +1 -1
- package/dist/internal/localization-types.d.ts +1 -1
- package/dist/internal/localization.js +1 -1
- package/dist/internal/modal-surface-controller.js +1 -1
- package/dist/internal/object-guards.js +1 -1
- package/dist/internal/optional-peer-capabilities.d.ts +3 -1
- package/dist/internal/optional-peer-capabilities.js +1 -1
- package/dist/internal/orientation-breakpoint.js +1 -1
- package/dist/internal/overlay-manager.d.ts +6 -1
- package/dist/internal/overlay-manager.js +1 -1
- package/dist/internal/overlay-stack.d.ts +7 -3
- package/dist/internal/overlay-stack.js +1 -1
- package/dist/internal/package-metadata.js +1 -1
- package/dist/internal/persisted-restore.js +1 -1
- package/dist/internal/popup-controller.js +1 -0
- package/dist/internal/rendered-tree-traversal.d.ts +3 -1
- package/dist/internal/rendered-tree-traversal.js +1 -1
- package/dist/internal/retry-forwarder.js +1 -0
- package/dist/internal/roving-toolbar.js +1 -1
- package/dist/internal/scoped-definitions.generated.js +1 -1
- package/dist/internal/score-tiers.d.ts +4 -0
- package/dist/internal/score-tiers.js +1 -0
- package/dist/internal/semantic-variant.d.ts +7 -0
- package/dist/internal/semantic-variant.js +1 -0
- package/dist/internal/shared-unions.d.ts +1 -1
- package/dist/internal/viewer-search.js +1 -1
- package/dist/lyra.d.ts +1 -1
- package/dist/testing/happy-dom-shims.d.ts +18 -0
- package/dist/testing/happy-dom-shims.js +1 -1
- package/dist/testing/index.d.ts +1 -1
- package/dist/testing/index.js +1 -1
- package/llms/components/lr-accordion-item.md +1 -1
- package/llms/components/lr-accordion.md +1 -1
- package/llms/components/lr-alert.md +2 -2
- package/llms/components/lr-app-rail-group.md +1 -1
- package/llms/components/lr-app-rail-item.md +1 -1
- package/llms/components/lr-app-rail.md +1 -1
- package/llms/components/lr-attachment-chip.md +1 -10
- package/llms/components/lr-attachment-trigger.md +0 -10
- package/llms/components/lr-avatar.md +4 -8
- package/llms/components/lr-badge.md +16 -20
- package/llms/components/lr-box-plot.md +1 -1
- package/llms/components/lr-breadcrumb-item.md +1 -1
- package/llms/components/lr-breadcrumb.md +1 -1
- package/llms/components/lr-button-group.md +1 -1
- package/llms/components/lr-button.md +1 -1
- package/llms/components/lr-calendar.md +1 -1
- package/llms/components/lr-callout.md +3 -13
- package/llms/components/lr-card.md +1 -1
- package/llms/components/lr-carousel-item.md +1 -1
- package/llms/components/lr-carousel.md +1 -1
- package/llms/components/lr-chart.md +5 -7
- package/llms/components/lr-checkbox-group.md +1 -1
- package/llms/components/lr-checkbox.md +2 -1
- package/llms/components/lr-chip.md +3 -17
- package/llms/components/lr-chunk-inspector.md +2 -1
- package/llms/components/lr-citation-badge.md +2 -2
- package/llms/components/lr-code-block.md +0 -10
- package/llms/components/lr-code-editor.md +1 -1
- package/llms/components/lr-color-picker.md +1 -1
- package/llms/components/lr-combobox.md +6 -3
- package/llms/components/lr-command-palette.md +5 -2
- package/llms/components/lr-commit-card.md +1 -3
- package/llms/components/lr-condition-builder.md +1 -1
- package/llms/components/lr-confirm-bar.md +7 -13
- package/llms/components/lr-connector-manager.md +3 -1
- package/llms/components/lr-context-inspector.md +1 -1
- package/llms/components/lr-context-meter.md +1 -1
- package/llms/components/lr-control-group.md +1 -1
- package/llms/components/lr-copy-button.md +8 -10
- package/llms/components/lr-country-picker.md +1 -1
- package/llms/components/lr-currency-picker.md +1 -1
- package/llms/components/lr-dashboard-grid.md +1 -1
- package/llms/components/lr-data-grid.md +1 -1
- package/llms/components/lr-date-input.md +1 -1
- package/llms/components/lr-date-picker.md +11 -4
- package/llms/components/lr-details.md +1 -1
- package/llms/components/lr-dialog.md +8 -31
- package/llms/components/lr-diff-view.md +1 -1
- package/llms/components/lr-divider.md +1 -1
- package/llms/components/lr-dock-panel.md +1 -1
- package/llms/components/lr-document-library.md +1 -1
- package/llms/components/lr-drawer.md +1 -13
- package/llms/components/lr-drilldown-panel.md +1 -1
- package/llms/components/lr-drop-zone.md +4 -0
- package/llms/components/lr-dropdown-item.md +1 -1
- package/llms/components/lr-ebook-viewer.md +4 -3
- package/llms/components/lr-emoji-picker.md +1 -1
- package/llms/components/lr-entity-chip.md +2 -2
- package/llms/components/lr-env-list.md +1 -1
- package/llms/components/lr-eval-dataset.md +4 -19
- package/llms/components/lr-export-button.md +3 -3
- package/llms/components/lr-file-icon.md +0 -5
- package/llms/components/lr-file-input.md +3 -5
- package/llms/components/lr-file-tree.md +1 -1
- package/llms/components/lr-filter-bar.md +5 -1
- package/llms/components/lr-flag.md +1 -2
- package/llms/components/lr-flow-canvas.md +1 -1
- package/llms/components/lr-flow-controls.md +1 -1
- package/llms/components/lr-flow-minimap.md +2 -2
- package/llms/components/lr-flow-node.md +1 -1
- package/llms/components/lr-flow-run-status.md +1 -1
- package/llms/components/lr-format-bytes.md +2 -3
- package/llms/components/lr-format-date.md +2 -3
- package/llms/components/lr-format-number.md +1 -1
- package/llms/components/lr-funnel.md +1 -1
- package/llms/components/lr-gauge.md +1 -1
- package/llms/components/lr-generation-metrics.md +1 -1
- package/llms/components/lr-graph-query-builder.md +1 -1
- package/llms/components/lr-heatmap.md +1 -1
- package/llms/components/lr-icon-button.md +1 -1
- package/llms/components/lr-icon.md +1 -1
- package/llms/components/lr-input.md +1 -1
- package/llms/components/lr-intersection-observer.md +1 -1
- package/llms/components/lr-json-viewer.md +1 -1
- package/llms/components/lr-knowledge-graph-explorer.md +2 -2
- package/llms/components/lr-known-date.md +1 -1
- package/llms/components/lr-lite-chart.md +3 -4
- package/llms/components/lr-live-region.md +1 -1
- package/llms/components/lr-locale-picker.md +1 -1
- package/llms/components/lr-map.md +1 -3
- package/llms/components/lr-media-card.md +1 -10
- package/llms/components/lr-memory-panel.md +2 -0
- package/llms/components/lr-mention-popover.md +3 -3
- package/llms/components/lr-menu-item.md +1 -1
- package/llms/components/lr-menu-label.md +1 -1
- package/llms/components/lr-menu.md +1 -1
- package/llms/components/lr-menubar-item.md +1 -1
- package/llms/components/lr-menubar.md +1 -1
- package/llms/components/lr-message-actions.md +1 -11
- package/llms/components/lr-message-parts.md +3 -5
- package/llms/components/lr-model-select.md +2 -4
- package/llms/components/lr-multi-split.md +1 -1
- package/llms/components/lr-mutation-observer.md +2 -2
- package/llms/components/lr-native-time-input.md +1 -1
- package/llms/components/lr-navigation-menu-item.md +1 -1
- package/llms/components/lr-navigation-menu.md +1 -1
- package/llms/components/lr-number-input.md +1 -1
- package/llms/components/lr-option.md +1 -1
- package/llms/components/lr-otp-input.md +1 -1
- package/llms/components/lr-page.md +1 -1
- package/llms/components/lr-pagination.md +1 -1
- package/llms/components/lr-pan-zoom.md +1 -3
- package/llms/components/lr-permission-grant.md +3 -1
- package/llms/components/lr-phone-input.md +7 -5
- package/llms/components/lr-poll-status.md +1 -1
- package/llms/components/lr-popover.md +5 -9
- package/llms/components/lr-popup.md +1 -3
- package/llms/components/lr-progress-bar.md +2 -1
- package/llms/components/lr-progress-ring.md +4 -8
- package/llms/components/lr-prompt-input.md +3 -1
- package/llms/components/lr-prompt-studio.md +4 -4
- package/llms/components/lr-radio-button.md +2 -2
- package/llms/components/lr-radio-group.md +1 -1
- package/llms/components/lr-radio.md +3 -2
- package/llms/components/lr-random-content.md +1 -1
- package/llms/components/lr-rating.md +2 -3
- package/llms/components/lr-relative-time.md +2 -3
- package/llms/components/lr-reorder-item.md +1 -1
- package/llms/components/lr-reorder-list.md +1 -1
- package/llms/components/lr-research-progress.md +2 -0
- package/llms/components/lr-resize-observer.md +1 -1
- package/llms/components/lr-responsive-panel.md +1 -1
- package/llms/components/lr-retrieval-compare.md +2 -0
- package/llms/components/lr-retrieval-trace.md +2 -0
- package/llms/components/lr-rubric-form.md +1 -1
- package/llms/components/lr-scroller.md +1 -1
- package/llms/components/lr-segmented.md +1 -1
- package/llms/components/lr-select.md +1 -1
- package/llms/components/lr-sequence-playback.md +1 -2
- package/llms/components/lr-sequence-strip.md +1 -1
- package/llms/components/lr-signature-pad.md +1 -1
- package/llms/components/lr-skeleton.md +2 -4
- package/llms/components/lr-slider.md +1 -1
- package/llms/components/lr-sparkline.md +1 -1
- package/llms/components/lr-split-panel.md +1 -1
- package/llms/components/lr-stat.md +1 -1
- package/llms/components/lr-stepper.md +1 -1
- package/llms/components/lr-swatch-picker.md +1 -1
- package/llms/components/lr-switch.md +2 -1
- package/llms/components/lr-tab-group.md +1 -1
- package/llms/components/lr-tab-panel.md +1 -1
- package/llms/components/lr-tab.md +1 -1
- package/llms/components/lr-table.md +3 -3
- package/llms/components/lr-task-list.md +3 -3
- package/llms/components/lr-test-results.md +2 -4
- package/llms/components/lr-textarea.md +1 -1
- package/llms/components/lr-time-input.md +1 -1
- package/llms/components/lr-time-range.md +5 -4
- package/llms/components/lr-time-zone-picker.md +1 -1
- package/llms/components/lr-timeline-item.md +1 -1
- package/llms/components/lr-timeline.md +1 -1
- package/llms/components/lr-toggle-group.md +1 -1
- package/llms/components/lr-toggle.md +1 -1
- package/llms/components/lr-token-input.md +1 -1
- package/llms/components/lr-tool-approval-dialog.md +12 -10
- package/llms/components/lr-tool-call-block.md +1 -1
- package/llms/components/lr-tool-call-chip.md +1 -3
- package/llms/components/lr-tool-result-view.md +3 -3
- package/llms/components/lr-tool-timeline.md +2 -2
- package/llms/components/lr-tooltip.md +8 -11
- package/llms/components/lr-tour.md +2 -2
- package/llms/components/lr-tree-item.md +1 -1
- package/llms/components/lr-tree.md +1 -1
- package/llms/components/lr-unit-picker.md +1 -1
- package/llms/components/lr-usage-badge.md +1 -3
- package/llms/components/lr-video.md +1 -2
- package/llms/components/lr-virtual-list.md +1 -1
- package/llms/components/lr-visually-hidden.md +1 -1
- package/llms/components/lr-voice-picker.md +1 -1
- package/llms/components/lr-widget.md +1 -1
- package/llms/components/lr-word-cloud.md +1 -1
- package/llms/components/lr-zoomable-frame.md +1 -6
- package/llms/migration.md +96 -2
- package/llms/peers.md +3 -2
- package/llms/shared/ai-and-peers.md +2 -2
- package/llms/shared/events-and-types.md +4 -1
- package/llms/shared/imports-and-registration.md +2 -2
- package/llms/shared/localization-and-rtl.md +18 -18
- package/llms/shared/styles-and-tokens.md +1 -1
- package/llms/shared/testing-and-utilities.md +44 -43
- package/llms/shared.md +71 -67
- package/llms.txt +14 -12
- package/locales.json +1002 -1002
- package/package.json +16 -6879
- package/registrations.json +1 -1
- package/skills/compose-lyra-interfaces/SKILL.md +60 -0
- package/skills/compose-lyra-interfaces/agents/openai.yaml +4 -0
- package/skills/compose-lyra-interfaces/references/composition-patterns.md +77 -0
- package/skills/lyra-ui/SKILL.md +145 -0
- package/skills/lyra-ui/commands/frontend.md +37 -0
- package/skills/lyra-ui/commands/migrate.md +44 -0
- package/skills/lyra-ui/commands/new-component.md +19 -0
- package/skills/lyra-ui/commands/review.md +247 -0
- package/skills/lyra-ui/commands/update.md +30 -0
- package/skills/lyra-ui/reporting.md +137 -0
- package/custom-elements.json +0 -1
- package/dist/internal/side-effect-only.d.ts +0 -1
- package/dist/translations/am/agent-tools.js +0 -1
- package/dist/translations/am/charts.js +0 -1
- package/dist/translations/am/conversation.js +0 -1
- package/dist/translations/am/data.js +0 -1
- package/dist/translations/am/forms.js +0 -1
- package/dist/translations/am/layout.js +0 -1
- package/dist/translations/am/media.js +0 -1
- package/dist/translations/am/overlays.js +0 -1
- package/dist/translations/am/retrieval.js +0 -1
- package/dist/translations/am/shared.js +0 -1
- package/dist/translations/am/utility.js +0 -1
- package/dist/translations/am/viewers.js +0 -5
- package/dist/translations/am.js +0 -1
- package/dist/translations/ar/agent-tools.js +0 -1
- package/dist/translations/ar/charts.js +0 -1
- package/dist/translations/ar/conversation.js +0 -1
- package/dist/translations/ar/data.js +0 -1
- package/dist/translations/ar/forms.js +0 -1
- package/dist/translations/ar/layout.js +0 -1
- package/dist/translations/ar/media.js +0 -1
- package/dist/translations/ar/overlays.js +0 -1
- package/dist/translations/ar/retrieval.js +0 -1
- package/dist/translations/ar/shared.js +0 -1
- package/dist/translations/ar/utility.js +0 -1
- package/dist/translations/ar/viewers.js +0 -5
- package/dist/translations/ar.js +0 -1
- package/dist/translations/bho/agent-tools.js +0 -1
- package/dist/translations/bho/charts.js +0 -1
- package/dist/translations/bho/conversation.js +0 -1
- package/dist/translations/bho/data.js +0 -1
- package/dist/translations/bho/forms.js +0 -1
- package/dist/translations/bho/layout.js +0 -1
- package/dist/translations/bho/media.js +0 -1
- package/dist/translations/bho/overlays.js +0 -1
- package/dist/translations/bho/retrieval.js +0 -1
- package/dist/translations/bho/shared.js +0 -1
- package/dist/translations/bho/utility.js +0 -1
- package/dist/translations/bho/viewers.js +0 -5
- package/dist/translations/bho.js +0 -1
- package/dist/translations/bn/agent-tools.js +0 -1
- package/dist/translations/bn/charts.js +0 -1
- package/dist/translations/bn/conversation.js +0 -1
- package/dist/translations/bn/data.js +0 -1
- package/dist/translations/bn/forms.js +0 -1
- package/dist/translations/bn/layout.js +0 -1
- package/dist/translations/bn/media.js +0 -1
- package/dist/translations/bn/overlays.js +0 -1
- package/dist/translations/bn/retrieval.js +0 -1
- package/dist/translations/bn/shared.js +0 -1
- package/dist/translations/bn/utility.js +0 -1
- package/dist/translations/bn/viewers.js +0 -5
- package/dist/translations/bn.js +0 -1
- package/dist/translations/cs/agent-tools.js +0 -1
- package/dist/translations/cs/charts.js +0 -1
- package/dist/translations/cs/conversation.js +0 -1
- package/dist/translations/cs/data.js +0 -1
- package/dist/translations/cs/forms.js +0 -1
- package/dist/translations/cs/layout.js +0 -1
- package/dist/translations/cs/media.js +0 -1
- package/dist/translations/cs/overlays.js +0 -1
- package/dist/translations/cs/retrieval.js +0 -1
- package/dist/translations/cs/shared.js +0 -1
- package/dist/translations/cs/utility.js +0 -1
- package/dist/translations/cs/viewers.js +0 -5
- package/dist/translations/cs.js +0 -1
- package/dist/translations/da/agent-tools.js +0 -1
- package/dist/translations/da/charts.js +0 -1
- package/dist/translations/da/conversation.js +0 -1
- package/dist/translations/da/data.js +0 -1
- package/dist/translations/da/forms.js +0 -1
- package/dist/translations/da/layout.js +0 -1
- package/dist/translations/da/media.js +0 -1
- package/dist/translations/da/overlays.js +0 -1
- package/dist/translations/da/retrieval.js +0 -1
- package/dist/translations/da/shared.js +0 -1
- package/dist/translations/da/utility.js +0 -1
- package/dist/translations/da/viewers.js +0 -5
- package/dist/translations/da.js +0 -1
- package/dist/translations/de/agent-tools.js +0 -1
- package/dist/translations/de/charts.js +0 -1
- package/dist/translations/de/conversation.js +0 -1
- package/dist/translations/de/data.js +0 -1
- package/dist/translations/de/forms.js +0 -1
- package/dist/translations/de/layout.js +0 -1
- package/dist/translations/de/media.js +0 -1
- package/dist/translations/de/overlays.js +0 -1
- package/dist/translations/de/retrieval.js +0 -1
- package/dist/translations/de/shared.js +0 -1
- package/dist/translations/de/utility.js +0 -1
- package/dist/translations/de/viewers.js +0 -5
- package/dist/translations/de-CH/agent-tools.js +0 -1
- package/dist/translations/de-CH/charts.js +0 -1
- package/dist/translations/de-CH/conversation.js +0 -1
- package/dist/translations/de-CH/data.js +0 -1
- package/dist/translations/de-CH/forms.js +0 -1
- package/dist/translations/de-CH/layout.js +0 -1
- package/dist/translations/de-CH/media.js +0 -1
- package/dist/translations/de-CH/overlays.js +0 -1
- package/dist/translations/de-CH/retrieval.js +0 -1
- package/dist/translations/de-CH/shared.js +0 -1
- package/dist/translations/de-CH/utility.js +0 -1
- package/dist/translations/de-CH/viewers.js +0 -1
- package/dist/translations/de-CH.js +0 -1
- package/dist/translations/de.js +0 -1
- package/dist/translations/el/agent-tools.js +0 -1
- package/dist/translations/el/charts.js +0 -1
- package/dist/translations/el/conversation.js +0 -1
- package/dist/translations/el/data.js +0 -1
- package/dist/translations/el/forms.js +0 -1
- package/dist/translations/el/layout.js +0 -1
- package/dist/translations/el/media.js +0 -1
- package/dist/translations/el/overlays.js +0 -1
- package/dist/translations/el/retrieval.js +0 -1
- package/dist/translations/el/shared.js +0 -1
- package/dist/translations/el/utility.js +0 -1
- package/dist/translations/el/viewers.js +0 -5
- package/dist/translations/el.js +0 -1
- package/dist/translations/es/agent-tools.js +0 -1
- package/dist/translations/es/charts.js +0 -1
- package/dist/translations/es/conversation.js +0 -1
- package/dist/translations/es/data.js +0 -1
- package/dist/translations/es/forms.js +0 -1
- package/dist/translations/es/layout.js +0 -1
- package/dist/translations/es/media.js +0 -1
- package/dist/translations/es/overlays.js +0 -1
- package/dist/translations/es/retrieval.js +0 -1
- package/dist/translations/es/shared.js +0 -1
- package/dist/translations/es/utility.js +0 -1
- package/dist/translations/es/viewers.js +0 -5
- package/dist/translations/es.js +0 -1
- package/dist/translations/fa/agent-tools.js +0 -1
- package/dist/translations/fa/charts.js +0 -1
- package/dist/translations/fa/conversation.js +0 -1
- package/dist/translations/fa/data.js +0 -1
- package/dist/translations/fa/forms.js +0 -1
- package/dist/translations/fa/layout.js +0 -1
- package/dist/translations/fa/media.js +0 -1
- package/dist/translations/fa/overlays.js +0 -1
- package/dist/translations/fa/retrieval.js +0 -1
- package/dist/translations/fa/shared.js +0 -1
- package/dist/translations/fa/utility.js +0 -1
- package/dist/translations/fa/viewers.js +0 -5
- package/dist/translations/fa-AF/agent-tools.js +0 -1
- package/dist/translations/fa-AF/charts.js +0 -1
- package/dist/translations/fa-AF/conversation.js +0 -1
- package/dist/translations/fa-AF/data.js +0 -1
- package/dist/translations/fa-AF/forms.js +0 -1
- package/dist/translations/fa-AF/layout.js +0 -1
- package/dist/translations/fa-AF/media.js +0 -1
- package/dist/translations/fa-AF/overlays.js +0 -1
- package/dist/translations/fa-AF/retrieval.js +0 -1
- package/dist/translations/fa-AF/shared.js +0 -1
- package/dist/translations/fa-AF/utility.js +0 -1
- package/dist/translations/fa-AF/viewers.js +0 -5
- package/dist/translations/fa-AF.js +0 -1
- package/dist/translations/fa.js +0 -1
- package/dist/translations/fi/agent-tools.js +0 -1
- package/dist/translations/fi/charts.js +0 -1
- package/dist/translations/fi/conversation.js +0 -1
- package/dist/translations/fi/data.js +0 -1
- package/dist/translations/fi/forms.js +0 -1
- package/dist/translations/fi/layout.js +0 -1
- package/dist/translations/fi/media.js +0 -1
- package/dist/translations/fi/overlays.js +0 -1
- package/dist/translations/fi/retrieval.js +0 -1
- package/dist/translations/fi/shared.js +0 -1
- package/dist/translations/fi/utility.js +0 -1
- package/dist/translations/fi/viewers.js +0 -5
- package/dist/translations/fi.js +0 -1
- package/dist/translations/fr/agent-tools.js +0 -1
- package/dist/translations/fr/charts.js +0 -1
- package/dist/translations/fr/conversation.js +0 -1
- package/dist/translations/fr/data.js +0 -1
- package/dist/translations/fr/forms.js +0 -1
- package/dist/translations/fr/layout.js +0 -1
- package/dist/translations/fr/media.js +0 -1
- package/dist/translations/fr/overlays.js +0 -1
- package/dist/translations/fr/retrieval.js +0 -1
- package/dist/translations/fr/shared.js +0 -1
- package/dist/translations/fr/utility.js +0 -1
- package/dist/translations/fr/viewers.js +0 -5
- package/dist/translations/fr.js +0 -1
- package/dist/translations/gu/agent-tools.js +0 -1
- package/dist/translations/gu/charts.js +0 -1
- package/dist/translations/gu/conversation.js +0 -1
- package/dist/translations/gu/data.js +0 -1
- package/dist/translations/gu/forms.js +0 -1
- package/dist/translations/gu/layout.js +0 -1
- package/dist/translations/gu/media.js +0 -1
- package/dist/translations/gu/overlays.js +0 -1
- package/dist/translations/gu/retrieval.js +0 -1
- package/dist/translations/gu/shared.js +0 -1
- package/dist/translations/gu/utility.js +0 -1
- package/dist/translations/gu/viewers.js +0 -5
- package/dist/translations/gu.js +0 -1
- package/dist/translations/ha/agent-tools.js +0 -1
- package/dist/translations/ha/charts.js +0 -1
- package/dist/translations/ha/conversation.js +0 -1
- package/dist/translations/ha/data.js +0 -1
- package/dist/translations/ha/forms.js +0 -1
- package/dist/translations/ha/layout.js +0 -1
- package/dist/translations/ha/media.js +0 -1
- package/dist/translations/ha/overlays.js +0 -1
- package/dist/translations/ha/retrieval.js +0 -1
- package/dist/translations/ha/shared.js +0 -1
- package/dist/translations/ha/utility.js +0 -1
- package/dist/translations/ha/viewers.js +0 -5
- package/dist/translations/ha.js +0 -1
- package/dist/translations/he/agent-tools.js +0 -1
- package/dist/translations/he/charts.js +0 -1
- package/dist/translations/he/conversation.js +0 -1
- package/dist/translations/he/data.js +0 -1
- package/dist/translations/he/forms.js +0 -1
- package/dist/translations/he/layout.js +0 -1
- package/dist/translations/he/media.js +0 -1
- package/dist/translations/he/overlays.js +0 -1
- package/dist/translations/he/retrieval.js +0 -1
- package/dist/translations/he/shared.js +0 -1
- package/dist/translations/he/utility.js +0 -1
- package/dist/translations/he/viewers.js +0 -5
- package/dist/translations/he.js +0 -1
- package/dist/translations/hi/agent-tools.js +0 -1
- package/dist/translations/hi/charts.js +0 -1
- package/dist/translations/hi/conversation.js +0 -1
- package/dist/translations/hi/data.js +0 -1
- package/dist/translations/hi/forms.js +0 -1
- package/dist/translations/hi/layout.js +0 -1
- package/dist/translations/hi/media.js +0 -1
- package/dist/translations/hi/overlays.js +0 -1
- package/dist/translations/hi/retrieval.js +0 -1
- package/dist/translations/hi/shared.js +0 -1
- package/dist/translations/hi/utility.js +0 -1
- package/dist/translations/hi/viewers.js +0 -5
- package/dist/translations/hi.js +0 -1
- package/dist/translations/hr/agent-tools.js +0 -1
- package/dist/translations/hr/charts.js +0 -1
- package/dist/translations/hr/conversation.js +0 -1
- package/dist/translations/hr/data.js +0 -1
- package/dist/translations/hr/forms.js +0 -1
- package/dist/translations/hr/layout.js +0 -1
- package/dist/translations/hr/media.js +0 -1
- package/dist/translations/hr/overlays.js +0 -1
- package/dist/translations/hr/retrieval.js +0 -1
- package/dist/translations/hr/shared.js +0 -1
- package/dist/translations/hr/utility.js +0 -1
- package/dist/translations/hr/viewers.js +0 -5
- package/dist/translations/hr.js +0 -1
- package/dist/translations/hu/agent-tools.js +0 -1
- package/dist/translations/hu/charts.js +0 -1
- package/dist/translations/hu/conversation.js +0 -1
- package/dist/translations/hu/data.js +0 -1
- package/dist/translations/hu/forms.js +0 -1
- package/dist/translations/hu/layout.js +0 -1
- package/dist/translations/hu/media.js +0 -1
- package/dist/translations/hu/overlays.js +0 -1
- package/dist/translations/hu/retrieval.js +0 -1
- package/dist/translations/hu/shared.js +0 -1
- package/dist/translations/hu/utility.js +0 -1
- package/dist/translations/hu/viewers.js +0 -5
- package/dist/translations/hu.js +0 -1
- package/dist/translations/id/agent-tools.js +0 -1
- package/dist/translations/id/charts.js +0 -1
- package/dist/translations/id/conversation.js +0 -1
- package/dist/translations/id/data.js +0 -1
- package/dist/translations/id/forms.js +0 -1
- package/dist/translations/id/layout.js +0 -1
- package/dist/translations/id/media.js +0 -1
- package/dist/translations/id/overlays.js +0 -1
- package/dist/translations/id/retrieval.js +0 -1
- package/dist/translations/id/shared.js +0 -1
- package/dist/translations/id/utility.js +0 -1
- package/dist/translations/id/viewers.js +0 -5
- package/dist/translations/id.js +0 -1
- package/dist/translations/ig/agent-tools.js +0 -1
- package/dist/translations/ig/charts.js +0 -1
- package/dist/translations/ig/conversation.js +0 -1
- package/dist/translations/ig/data.js +0 -1
- package/dist/translations/ig/forms.js +0 -1
- package/dist/translations/ig/layout.js +0 -1
- package/dist/translations/ig/media.js +0 -1
- package/dist/translations/ig/overlays.js +0 -1
- package/dist/translations/ig/retrieval.js +0 -1
- package/dist/translations/ig/shared.js +0 -1
- package/dist/translations/ig/utility.js +0 -1
- package/dist/translations/ig/viewers.js +0 -5
- package/dist/translations/ig.js +0 -1
- package/dist/translations/it/agent-tools.js +0 -1
- package/dist/translations/it/charts.js +0 -1
- package/dist/translations/it/conversation.js +0 -1
- package/dist/translations/it/data.js +0 -1
- package/dist/translations/it/forms.js +0 -1
- package/dist/translations/it/layout.js +0 -1
- package/dist/translations/it/media.js +0 -1
- package/dist/translations/it/overlays.js +0 -1
- package/dist/translations/it/retrieval.js +0 -1
- package/dist/translations/it/shared.js +0 -1
- package/dist/translations/it/utility.js +0 -1
- package/dist/translations/it/viewers.js +0 -5
- package/dist/translations/it.js +0 -1
- package/dist/translations/ja/agent-tools.js +0 -1
- package/dist/translations/ja/charts.js +0 -1
- package/dist/translations/ja/conversation.js +0 -1
- package/dist/translations/ja/data.js +0 -1
- package/dist/translations/ja/forms.js +0 -1
- package/dist/translations/ja/layout.js +0 -1
- package/dist/translations/ja/media.js +0 -1
- package/dist/translations/ja/overlays.js +0 -1
- package/dist/translations/ja/retrieval.js +0 -1
- package/dist/translations/ja/shared.js +0 -1
- package/dist/translations/ja/utility.js +0 -1
- package/dist/translations/ja/viewers.js +0 -4
- package/dist/translations/ja.js +0 -1
- package/dist/translations/jv/agent-tools.js +0 -1
- package/dist/translations/jv/charts.js +0 -1
- package/dist/translations/jv/conversation.js +0 -1
- package/dist/translations/jv/data.js +0 -1
- package/dist/translations/jv/forms.js +0 -1
- package/dist/translations/jv/layout.js +0 -1
- package/dist/translations/jv/media.js +0 -1
- package/dist/translations/jv/overlays.js +0 -1
- package/dist/translations/jv/retrieval.js +0 -1
- package/dist/translations/jv/shared.js +0 -1
- package/dist/translations/jv/utility.js +0 -1
- package/dist/translations/jv/viewers.js +0 -5
- package/dist/translations/jv.js +0 -1
- package/dist/translations/kk/agent-tools.js +0 -1
- package/dist/translations/kk/charts.js +0 -1
- package/dist/translations/kk/conversation.js +0 -1
- package/dist/translations/kk/data.js +0 -1
- package/dist/translations/kk/forms.js +0 -1
- package/dist/translations/kk/layout.js +0 -1
- package/dist/translations/kk/media.js +0 -1
- package/dist/translations/kk/overlays.js +0 -1
- package/dist/translations/kk/retrieval.js +0 -1
- package/dist/translations/kk/shared.js +0 -1
- package/dist/translations/kk/utility.js +0 -1
- package/dist/translations/kk/viewers.js +0 -5
- package/dist/translations/kk.js +0 -1
- package/dist/translations/kn/agent-tools.js +0 -1
- package/dist/translations/kn/charts.js +0 -1
- package/dist/translations/kn/conversation.js +0 -1
- package/dist/translations/kn/data.js +0 -1
- package/dist/translations/kn/forms.js +0 -1
- package/dist/translations/kn/layout.js +0 -1
- package/dist/translations/kn/media.js +0 -1
- package/dist/translations/kn/overlays.js +0 -1
- package/dist/translations/kn/retrieval.js +0 -1
- package/dist/translations/kn/shared.js +0 -1
- package/dist/translations/kn/utility.js +0 -1
- package/dist/translations/kn/viewers.js +0 -5
- package/dist/translations/kn.js +0 -1
- package/dist/translations/ko/agent-tools.js +0 -1
- package/dist/translations/ko/charts.js +0 -1
- package/dist/translations/ko/conversation.js +0 -1
- package/dist/translations/ko/data.js +0 -1
- package/dist/translations/ko/forms.js +0 -1
- package/dist/translations/ko/layout.js +0 -1
- package/dist/translations/ko/media.js +0 -1
- package/dist/translations/ko/overlays.js +0 -1
- package/dist/translations/ko/retrieval.js +0 -1
- package/dist/translations/ko/shared.js +0 -1
- package/dist/translations/ko/utility.js +0 -1
- package/dist/translations/ko/viewers.js +0 -5
- package/dist/translations/ko.js +0 -1
- package/dist/translations/ln/agent-tools.js +0 -1
- package/dist/translations/ln/charts.js +0 -1
- package/dist/translations/ln/conversation.js +0 -1
- package/dist/translations/ln/data.js +0 -1
- package/dist/translations/ln/forms.js +0 -1
- package/dist/translations/ln/layout.js +0 -1
- package/dist/translations/ln/media.js +0 -1
- package/dist/translations/ln/overlays.js +0 -1
- package/dist/translations/ln/retrieval.js +0 -1
- package/dist/translations/ln/shared.js +0 -1
- package/dist/translations/ln/utility.js +0 -1
- package/dist/translations/ln/viewers.js +0 -5
- package/dist/translations/ln.js +0 -1
- package/dist/translations/ml/agent-tools.js +0 -1
- package/dist/translations/ml/charts.js +0 -1
- package/dist/translations/ml/conversation.js +0 -1
- package/dist/translations/ml/data.js +0 -1
- package/dist/translations/ml/forms.js +0 -1
- package/dist/translations/ml/layout.js +0 -1
- package/dist/translations/ml/media.js +0 -1
- package/dist/translations/ml/overlays.js +0 -1
- package/dist/translations/ml/retrieval.js +0 -1
- package/dist/translations/ml/shared.js +0 -1
- package/dist/translations/ml/utility.js +0 -1
- package/dist/translations/ml/viewers.js +0 -5
- package/dist/translations/ml.js +0 -1
- package/dist/translations/mr/agent-tools.js +0 -1
- package/dist/translations/mr/charts.js +0 -1
- package/dist/translations/mr/conversation.js +0 -1
- package/dist/translations/mr/data.js +0 -1
- package/dist/translations/mr/forms.js +0 -1
- package/dist/translations/mr/layout.js +0 -1
- package/dist/translations/mr/media.js +0 -1
- package/dist/translations/mr/overlays.js +0 -1
- package/dist/translations/mr/retrieval.js +0 -1
- package/dist/translations/mr/shared.js +0 -1
- package/dist/translations/mr/utility.js +0 -1
- package/dist/translations/mr/viewers.js +0 -5
- package/dist/translations/mr.js +0 -1
- package/dist/translations/ms/agent-tools.js +0 -1
- package/dist/translations/ms/charts.js +0 -1
- package/dist/translations/ms/conversation.js +0 -1
- package/dist/translations/ms/data.js +0 -1
- package/dist/translations/ms/forms.js +0 -1
- package/dist/translations/ms/layout.js +0 -1
- package/dist/translations/ms/media.js +0 -1
- package/dist/translations/ms/overlays.js +0 -1
- package/dist/translations/ms/retrieval.js +0 -1
- package/dist/translations/ms/shared.js +0 -1
- package/dist/translations/ms/utility.js +0 -1
- package/dist/translations/ms/viewers.js +0 -5
- package/dist/translations/ms.js +0 -1
- package/dist/translations/my/agent-tools.js +0 -1
- package/dist/translations/my/charts.js +0 -1
- package/dist/translations/my/conversation.js +0 -1
- package/dist/translations/my/data.js +0 -1
- package/dist/translations/my/forms.js +0 -1
- package/dist/translations/my/layout.js +0 -1
- package/dist/translations/my/media.js +0 -1
- package/dist/translations/my/overlays.js +0 -1
- package/dist/translations/my/retrieval.js +0 -1
- package/dist/translations/my/shared.js +0 -1
- package/dist/translations/my/utility.js +0 -1
- package/dist/translations/my/viewers.js +0 -5
- package/dist/translations/my.js +0 -1
- package/dist/translations/nb/agent-tools.js +0 -1
- package/dist/translations/nb/charts.js +0 -1
- package/dist/translations/nb/conversation.js +0 -1
- package/dist/translations/nb/data.js +0 -1
- package/dist/translations/nb/forms.js +0 -1
- package/dist/translations/nb/layout.js +0 -1
- package/dist/translations/nb/media.js +0 -1
- package/dist/translations/nb/overlays.js +0 -1
- package/dist/translations/nb/retrieval.js +0 -1
- package/dist/translations/nb/shared.js +0 -1
- package/dist/translations/nb/utility.js +0 -1
- package/dist/translations/nb/viewers.js +0 -5
- package/dist/translations/nb.js +0 -1
- package/dist/translations/ne/agent-tools.js +0 -1
- package/dist/translations/ne/charts.js +0 -1
- package/dist/translations/ne/conversation.js +0 -1
- package/dist/translations/ne/data.js +0 -1
- package/dist/translations/ne/forms.js +0 -1
- package/dist/translations/ne/layout.js +0 -1
- package/dist/translations/ne/media.js +0 -1
- package/dist/translations/ne/overlays.js +0 -1
- package/dist/translations/ne/retrieval.js +0 -1
- package/dist/translations/ne/shared.js +0 -1
- package/dist/translations/ne/utility.js +0 -1
- package/dist/translations/ne/viewers.js +0 -5
- package/dist/translations/ne.js +0 -1
- package/dist/translations/nl/agent-tools.js +0 -1
- package/dist/translations/nl/charts.js +0 -1
- package/dist/translations/nl/conversation.js +0 -1
- package/dist/translations/nl/data.js +0 -1
- package/dist/translations/nl/forms.js +0 -1
- package/dist/translations/nl/layout.js +0 -1
- package/dist/translations/nl/media.js +0 -1
- package/dist/translations/nl/overlays.js +0 -1
- package/dist/translations/nl/retrieval.js +0 -1
- package/dist/translations/nl/shared.js +0 -1
- package/dist/translations/nl/utility.js +0 -1
- package/dist/translations/nl/viewers.js +0 -5
- package/dist/translations/nl.js +0 -1
- package/dist/translations/nn/agent-tools.js +0 -1
- package/dist/translations/nn/charts.js +0 -1
- package/dist/translations/nn/conversation.js +0 -1
- package/dist/translations/nn/data.js +0 -1
- package/dist/translations/nn/forms.js +0 -1
- package/dist/translations/nn/layout.js +0 -1
- package/dist/translations/nn/media.js +0 -1
- package/dist/translations/nn/overlays.js +0 -1
- package/dist/translations/nn/retrieval.js +0 -1
- package/dist/translations/nn/shared.js +0 -1
- package/dist/translations/nn/utility.js +0 -1
- package/dist/translations/nn/viewers.js +0 -5
- package/dist/translations/nn.js +0 -1
- package/dist/translations/om/agent-tools.js +0 -1
- package/dist/translations/om/charts.js +0 -1
- package/dist/translations/om/conversation.js +0 -1
- package/dist/translations/om/data.js +0 -1
- package/dist/translations/om/forms.js +0 -1
- package/dist/translations/om/layout.js +0 -1
- package/dist/translations/om/media.js +0 -1
- package/dist/translations/om/overlays.js +0 -1
- package/dist/translations/om/retrieval.js +0 -1
- package/dist/translations/om/shared.js +0 -1
- package/dist/translations/om/utility.js +0 -1
- package/dist/translations/om/viewers.js +0 -5
- package/dist/translations/om.js +0 -1
- package/dist/translations/or/agent-tools.js +0 -1
- package/dist/translations/or/charts.js +0 -1
- package/dist/translations/or/conversation.js +0 -1
- package/dist/translations/or/data.js +0 -1
- package/dist/translations/or/forms.js +0 -1
- package/dist/translations/or/layout.js +0 -1
- package/dist/translations/or/media.js +0 -1
- package/dist/translations/or/overlays.js +0 -1
- package/dist/translations/or/retrieval.js +0 -1
- package/dist/translations/or/shared.js +0 -1
- package/dist/translations/or/utility.js +0 -1
- package/dist/translations/or/viewers.js +0 -5
- package/dist/translations/or.js +0 -1
- package/dist/translations/pa/agent-tools.js +0 -1
- package/dist/translations/pa/charts.js +0 -1
- package/dist/translations/pa/conversation.js +0 -1
- package/dist/translations/pa/data.js +0 -1
- package/dist/translations/pa/forms.js +0 -1
- package/dist/translations/pa/layout.js +0 -1
- package/dist/translations/pa/media.js +0 -1
- package/dist/translations/pa/overlays.js +0 -1
- package/dist/translations/pa/retrieval.js +0 -1
- package/dist/translations/pa/shared.js +0 -1
- package/dist/translations/pa/utility.js +0 -1
- package/dist/translations/pa/viewers.js +0 -5
- package/dist/translations/pa.js +0 -1
- package/dist/translations/pcm/agent-tools.js +0 -1
- package/dist/translations/pcm/charts.js +0 -1
- package/dist/translations/pcm/conversation.js +0 -1
- package/dist/translations/pcm/data.js +0 -1
- package/dist/translations/pcm/forms.js +0 -1
- package/dist/translations/pcm/layout.js +0 -1
- package/dist/translations/pcm/media.js +0 -1
- package/dist/translations/pcm/overlays.js +0 -1
- package/dist/translations/pcm/retrieval.js +0 -1
- package/dist/translations/pcm/shared.js +0 -1
- package/dist/translations/pcm/utility.js +0 -1
- package/dist/translations/pcm/viewers.js +0 -5
- package/dist/translations/pcm.js +0 -1
- package/dist/translations/pl/agent-tools.js +0 -1
- package/dist/translations/pl/charts.js +0 -1
- package/dist/translations/pl/conversation.js +0 -1
- package/dist/translations/pl/data.js +0 -1
- package/dist/translations/pl/forms.js +0 -1
- package/dist/translations/pl/layout.js +0 -1
- package/dist/translations/pl/media.js +0 -1
- package/dist/translations/pl/overlays.js +0 -1
- package/dist/translations/pl/retrieval.js +0 -1
- package/dist/translations/pl/shared.js +0 -1
- package/dist/translations/pl/utility.js +0 -1
- package/dist/translations/pl/viewers.js +0 -5
- package/dist/translations/pl.js +0 -1
- package/dist/translations/pnb/agent-tools.js +0 -1
- package/dist/translations/pnb/charts.js +0 -1
- package/dist/translations/pnb/conversation.js +0 -1
- package/dist/translations/pnb/data.js +0 -1
- package/dist/translations/pnb/forms.js +0 -1
- package/dist/translations/pnb/layout.js +0 -1
- package/dist/translations/pnb/media.js +0 -1
- package/dist/translations/pnb/overlays.js +0 -1
- package/dist/translations/pnb/retrieval.js +0 -1
- package/dist/translations/pnb/shared.js +0 -1
- package/dist/translations/pnb/utility.js +0 -1
- package/dist/translations/pnb/viewers.js +0 -5
- package/dist/translations/pnb.js +0 -1
- package/dist/translations/ps/agent-tools.js +0 -1
- package/dist/translations/ps/charts.js +0 -1
- package/dist/translations/ps/conversation.js +0 -1
- package/dist/translations/ps/data.js +0 -1
- package/dist/translations/ps/forms.js +0 -1
- package/dist/translations/ps/layout.js +0 -1
- package/dist/translations/ps/media.js +0 -1
- package/dist/translations/ps/overlays.js +0 -1
- package/dist/translations/ps/retrieval.js +0 -1
- package/dist/translations/ps/shared.js +0 -1
- package/dist/translations/ps/utility.js +0 -1
- package/dist/translations/ps/viewers.js +0 -5
- package/dist/translations/ps.js +0 -1
- package/dist/translations/pt-BR/agent-tools.js +0 -1
- package/dist/translations/pt-BR/charts.js +0 -1
- package/dist/translations/pt-BR/conversation.js +0 -1
- package/dist/translations/pt-BR/data.js +0 -1
- package/dist/translations/pt-BR/forms.js +0 -1
- package/dist/translations/pt-BR/layout.js +0 -1
- package/dist/translations/pt-BR/media.js +0 -1
- package/dist/translations/pt-BR/overlays.js +0 -1
- package/dist/translations/pt-BR/retrieval.js +0 -1
- package/dist/translations/pt-BR/shared.js +0 -1
- package/dist/translations/pt-BR/utility.js +0 -1
- package/dist/translations/pt-BR/viewers.js +0 -5
- package/dist/translations/pt-BR.js +0 -1
- package/dist/translations/pt-PT/agent-tools.js +0 -1
- package/dist/translations/pt-PT/charts.js +0 -1
- package/dist/translations/pt-PT/conversation.js +0 -1
- package/dist/translations/pt-PT/data.js +0 -1
- package/dist/translations/pt-PT/forms.js +0 -1
- package/dist/translations/pt-PT/layout.js +0 -1
- package/dist/translations/pt-PT/media.js +0 -1
- package/dist/translations/pt-PT/overlays.js +0 -1
- package/dist/translations/pt-PT/retrieval.js +0 -1
- package/dist/translations/pt-PT/shared.js +0 -1
- package/dist/translations/pt-PT/utility.js +0 -1
- package/dist/translations/pt-PT/viewers.js +0 -5
- package/dist/translations/pt-PT.js +0 -1
- package/dist/translations/ro/agent-tools.js +0 -1
- package/dist/translations/ro/charts.js +0 -1
- package/dist/translations/ro/conversation.js +0 -1
- package/dist/translations/ro/data.js +0 -1
- package/dist/translations/ro/forms.js +0 -1
- package/dist/translations/ro/layout.js +0 -1
- package/dist/translations/ro/media.js +0 -1
- package/dist/translations/ro/overlays.js +0 -1
- package/dist/translations/ro/retrieval.js +0 -1
- package/dist/translations/ro/shared.js +0 -1
- package/dist/translations/ro/utility.js +0 -1
- package/dist/translations/ro/viewers.js +0 -5
- package/dist/translations/ro.js +0 -1
- package/dist/translations/ru/agent-tools.js +0 -1
- package/dist/translations/ru/charts.js +0 -1
- package/dist/translations/ru/conversation.js +0 -1
- package/dist/translations/ru/data.js +0 -1
- package/dist/translations/ru/forms.js +0 -1
- package/dist/translations/ru/layout.js +0 -1
- package/dist/translations/ru/media.js +0 -1
- package/dist/translations/ru/overlays.js +0 -1
- package/dist/translations/ru/retrieval.js +0 -1
- package/dist/translations/ru/shared.js +0 -1
- package/dist/translations/ru/utility.js +0 -1
- package/dist/translations/ru/viewers.js +0 -5
- package/dist/translations/ru.js +0 -1
- package/dist/translations/sd/agent-tools.js +0 -1
- package/dist/translations/sd/charts.js +0 -1
- package/dist/translations/sd/conversation.js +0 -1
- package/dist/translations/sd/data.js +0 -1
- package/dist/translations/sd/forms.js +0 -1
- package/dist/translations/sd/layout.js +0 -1
- package/dist/translations/sd/media.js +0 -1
- package/dist/translations/sd/overlays.js +0 -1
- package/dist/translations/sd/retrieval.js +0 -1
- package/dist/translations/sd/shared.js +0 -1
- package/dist/translations/sd/utility.js +0 -1
- package/dist/translations/sd/viewers.js +0 -5
- package/dist/translations/sd.js +0 -1
- package/dist/translations/sl/agent-tools.js +0 -1
- package/dist/translations/sl/charts.js +0 -1
- package/dist/translations/sl/conversation.js +0 -1
- package/dist/translations/sl/data.js +0 -1
- package/dist/translations/sl/forms.js +0 -1
- package/dist/translations/sl/layout.js +0 -1
- package/dist/translations/sl/media.js +0 -1
- package/dist/translations/sl/overlays.js +0 -1
- package/dist/translations/sl/retrieval.js +0 -1
- package/dist/translations/sl/shared.js +0 -1
- package/dist/translations/sl/utility.js +0 -1
- package/dist/translations/sl/viewers.js +0 -5
- package/dist/translations/sl.js +0 -1
- package/dist/translations/su/agent-tools.js +0 -1
- package/dist/translations/su/charts.js +0 -1
- package/dist/translations/su/conversation.js +0 -1
- package/dist/translations/su/data.js +0 -1
- package/dist/translations/su/forms.js +0 -1
- package/dist/translations/su/layout.js +0 -1
- package/dist/translations/su/media.js +0 -1
- package/dist/translations/su/overlays.js +0 -1
- package/dist/translations/su/retrieval.js +0 -1
- package/dist/translations/su/shared.js +0 -1
- package/dist/translations/su/utility.js +0 -1
- package/dist/translations/su/viewers.js +0 -5
- package/dist/translations/su.js +0 -1
- package/dist/translations/sv/agent-tools.js +0 -1
- package/dist/translations/sv/charts.js +0 -1
- package/dist/translations/sv/conversation.js +0 -1
- package/dist/translations/sv/data.js +0 -1
- package/dist/translations/sv/forms.js +0 -1
- package/dist/translations/sv/layout.js +0 -1
- package/dist/translations/sv/media.js +0 -1
- package/dist/translations/sv/overlays.js +0 -1
- package/dist/translations/sv/retrieval.js +0 -1
- package/dist/translations/sv/shared.js +0 -1
- package/dist/translations/sv/utility.js +0 -1
- package/dist/translations/sv/viewers.js +0 -5
- package/dist/translations/sv.js +0 -1
- package/dist/translations/sw/agent-tools.js +0 -1
- package/dist/translations/sw/charts.js +0 -1
- package/dist/translations/sw/conversation.js +0 -1
- package/dist/translations/sw/data.js +0 -1
- package/dist/translations/sw/forms.js +0 -1
- package/dist/translations/sw/layout.js +0 -1
- package/dist/translations/sw/media.js +0 -1
- package/dist/translations/sw/overlays.js +0 -1
- package/dist/translations/sw/retrieval.js +0 -1
- package/dist/translations/sw/shared.js +0 -1
- package/dist/translations/sw/utility.js +0 -1
- package/dist/translations/sw/viewers.js +0 -5
- package/dist/translations/sw.js +0 -1
- package/dist/translations/ta/agent-tools.js +0 -1
- package/dist/translations/ta/charts.js +0 -1
- package/dist/translations/ta/conversation.js +0 -1
- package/dist/translations/ta/data.js +0 -1
- package/dist/translations/ta/forms.js +0 -1
- package/dist/translations/ta/layout.js +0 -1
- package/dist/translations/ta/media.js +0 -1
- package/dist/translations/ta/overlays.js +0 -1
- package/dist/translations/ta/retrieval.js +0 -1
- package/dist/translations/ta/shared.js +0 -1
- package/dist/translations/ta/utility.js +0 -1
- package/dist/translations/ta/viewers.js +0 -5
- package/dist/translations/ta.js +0 -1
- package/dist/translations/te/agent-tools.js +0 -1
- package/dist/translations/te/charts.js +0 -1
- package/dist/translations/te/conversation.js +0 -1
- package/dist/translations/te/data.js +0 -1
- package/dist/translations/te/forms.js +0 -1
- package/dist/translations/te/layout.js +0 -1
- package/dist/translations/te/media.js +0 -1
- package/dist/translations/te/overlays.js +0 -1
- package/dist/translations/te/retrieval.js +0 -1
- package/dist/translations/te/shared.js +0 -1
- package/dist/translations/te/utility.js +0 -1
- package/dist/translations/te/viewers.js +0 -5
- package/dist/translations/te.js +0 -1
- package/dist/translations/th/agent-tools.js +0 -1
- package/dist/translations/th/charts.js +0 -1
- package/dist/translations/th/conversation.js +0 -1
- package/dist/translations/th/data.js +0 -1
- package/dist/translations/th/forms.js +0 -1
- package/dist/translations/th/layout.js +0 -1
- package/dist/translations/th/media.js +0 -1
- package/dist/translations/th/overlays.js +0 -1
- package/dist/translations/th/retrieval.js +0 -1
- package/dist/translations/th/shared.js +0 -1
- package/dist/translations/th/utility.js +0 -1
- package/dist/translations/th/viewers.js +0 -5
- package/dist/translations/th.js +0 -1
- package/dist/translations/tl/agent-tools.js +0 -1
- package/dist/translations/tl/charts.js +0 -1
- package/dist/translations/tl/conversation.js +0 -1
- package/dist/translations/tl/data.js +0 -1
- package/dist/translations/tl/forms.js +0 -1
- package/dist/translations/tl/layout.js +0 -1
- package/dist/translations/tl/media.js +0 -1
- package/dist/translations/tl/overlays.js +0 -1
- package/dist/translations/tl/retrieval.js +0 -1
- package/dist/translations/tl/shared.js +0 -1
- package/dist/translations/tl/utility.js +0 -1
- package/dist/translations/tl/viewers.js +0 -5
- package/dist/translations/tl.js +0 -1
- package/dist/translations/tr/agent-tools.js +0 -1
- package/dist/translations/tr/charts.js +0 -1
- package/dist/translations/tr/conversation.js +0 -1
- package/dist/translations/tr/data.js +0 -1
- package/dist/translations/tr/forms.js +0 -1
- package/dist/translations/tr/layout.js +0 -1
- package/dist/translations/tr/media.js +0 -1
- package/dist/translations/tr/overlays.js +0 -1
- package/dist/translations/tr/retrieval.js +0 -1
- package/dist/translations/tr/shared.js +0 -1
- package/dist/translations/tr/utility.js +0 -1
- package/dist/translations/tr/viewers.js +0 -5
- package/dist/translations/tr.js +0 -1
- package/dist/translations/uk/agent-tools.js +0 -1
- package/dist/translations/uk/charts.js +0 -1
- package/dist/translations/uk/conversation.js +0 -1
- package/dist/translations/uk/data.js +0 -1
- package/dist/translations/uk/forms.js +0 -1
- package/dist/translations/uk/layout.js +0 -1
- package/dist/translations/uk/media.js +0 -1
- package/dist/translations/uk/overlays.js +0 -1
- package/dist/translations/uk/retrieval.js +0 -1
- package/dist/translations/uk/shared.js +0 -1
- package/dist/translations/uk/utility.js +0 -1
- package/dist/translations/uk/viewers.js +0 -5
- package/dist/translations/uk.js +0 -1
- package/dist/translations/ur/agent-tools.js +0 -1
- package/dist/translations/ur/charts.js +0 -1
- package/dist/translations/ur/conversation.js +0 -1
- package/dist/translations/ur/data.js +0 -1
- package/dist/translations/ur/forms.js +0 -1
- package/dist/translations/ur/layout.js +0 -1
- package/dist/translations/ur/media.js +0 -1
- package/dist/translations/ur/overlays.js +0 -1
- package/dist/translations/ur/retrieval.js +0 -1
- package/dist/translations/ur/shared.js +0 -1
- package/dist/translations/ur/utility.js +0 -1
- package/dist/translations/ur/viewers.js +0 -5
- package/dist/translations/ur.js +0 -1
- package/dist/translations/uz/agent-tools.js +0 -1
- package/dist/translations/uz/charts.js +0 -1
- package/dist/translations/uz/conversation.js +0 -1
- package/dist/translations/uz/data.js +0 -1
- package/dist/translations/uz/forms.js +0 -1
- package/dist/translations/uz/layout.js +0 -1
- package/dist/translations/uz/media.js +0 -1
- package/dist/translations/uz/overlays.js +0 -1
- package/dist/translations/uz/retrieval.js +0 -1
- package/dist/translations/uz/shared.js +0 -1
- package/dist/translations/uz/utility.js +0 -1
- package/dist/translations/uz/viewers.js +0 -5
- package/dist/translations/uz.js +0 -1
- package/dist/translations/vi/agent-tools.js +0 -1
- package/dist/translations/vi/charts.js +0 -1
- package/dist/translations/vi/conversation.js +0 -1
- package/dist/translations/vi/data.js +0 -1
- package/dist/translations/vi/forms.js +0 -1
- package/dist/translations/vi/layout.js +0 -1
- package/dist/translations/vi/media.js +0 -1
- package/dist/translations/vi/overlays.js +0 -1
- package/dist/translations/vi/retrieval.js +0 -1
- package/dist/translations/vi/shared.js +0 -1
- package/dist/translations/vi/utility.js +0 -1
- package/dist/translations/vi/viewers.js +0 -5
- package/dist/translations/vi.js +0 -1
- package/dist/translations/yo/agent-tools.js +0 -1
- package/dist/translations/yo/charts.js +0 -1
- package/dist/translations/yo/conversation.js +0 -1
- package/dist/translations/yo/data.js +0 -1
- package/dist/translations/yo/forms.js +0 -1
- package/dist/translations/yo/layout.js +0 -1
- package/dist/translations/yo/media.js +0 -1
- package/dist/translations/yo/overlays.js +0 -1
- package/dist/translations/yo/retrieval.js +0 -1
- package/dist/translations/yo/shared.js +0 -1
- package/dist/translations/yo/utility.js +0 -1
- package/dist/translations/yo/viewers.js +0 -5
- package/dist/translations/yo.js +0 -1
- package/dist/translations/zh-CN/agent-tools.js +0 -1
- package/dist/translations/zh-CN/charts.js +0 -1
- package/dist/translations/zh-CN/conversation.js +0 -1
- package/dist/translations/zh-CN/data.js +0 -1
- package/dist/translations/zh-CN/forms.js +0 -1
- package/dist/translations/zh-CN/layout.js +0 -1
- package/dist/translations/zh-CN/media.js +0 -1
- package/dist/translations/zh-CN/overlays.js +0 -1
- package/dist/translations/zh-CN/retrieval.js +0 -1
- package/dist/translations/zh-CN/shared.js +0 -1
- package/dist/translations/zh-CN/utility.js +0 -1
- package/dist/translations/zh-CN/viewers.js +0 -5
- package/dist/translations/zh-CN.js +0 -1
- package/dist/translations/zh-TW/agent-tools.js +0 -1
- package/dist/translations/zh-TW/charts.js +0 -1
- package/dist/translations/zh-TW/conversation.js +0 -1
- package/dist/translations/zh-TW/data.js +0 -1
- package/dist/translations/zh-TW/forms.js +0 -1
- package/dist/translations/zh-TW/layout.js +0 -1
- package/dist/translations/zh-TW/media.js +0 -1
- package/dist/translations/zh-TW/overlays.js +0 -1
- package/dist/translations/zh-TW/retrieval.js +0 -1
- package/dist/translations/zh-TW/shared.js +0 -1
- package/dist/translations/zh-TW/utility.js +0 -1
- package/dist/translations/zh-TW/viewers.js +0 -5
- package/dist/translations/zh-TW.js +0 -1
- package/dist/translations/zu/agent-tools.js +0 -1
- package/dist/translations/zu/charts.js +0 -1
- package/dist/translations/zu/conversation.js +0 -1
- package/dist/translations/zu/data.js +0 -1
- package/dist/translations/zu/forms.js +0 -1
- package/dist/translations/zu/layout.js +0 -1
- package/dist/translations/zu/media.js +0 -1
- package/dist/translations/zu/overlays.js +0 -1
- package/dist/translations/zu/retrieval.js +0 -1
- package/dist/translations/zu/shared.js +0 -1
- package/dist/translations/zu/utility.js +0 -1
- package/dist/translations/zu/viewers.js +0 -5
- package/dist/translations/zu.js +0 -1
- package/vscode-css-data.json +0 -1
- package/vscode-html-data.json +0 -1
- package/web-types.json +0 -1
|
@@ -55,6 +55,8 @@ export declare function isAccessibilityExcluded(element:Element):boolean;
|
|
|
55
55
|
* next bind records the baseline. A callback that gets `false` can skip rebinding and recomputing.
|
|
56
56
|
*/
|
|
57
57
|
export declare function accessibleTextRecordsMatter(observer:MutationObserver,records:readonly MutationRecord[]):boolean;
|
|
58
|
+
/** Opt-in tracking of `aria-labelledby` targets: their releases and the change callback. */
|
|
59
|
+
export interface AccessibleTextReferences{readonly releases:Array<()=>void>;readonly changed:()=>void;}export declare function releaseAccessibleTextReferences(references:AccessibleTextReferences):void;export declare function labelReferenceRecordsMatter(records:readonly MutationRecord[],ids:ReadonlySet<string>,referenced:ReadonlySet<Element>):boolean;
|
|
58
60
|
/**
|
|
59
61
|
* Observes a host's label content, assigned nodes, and composed ancestors for accessible text.
|
|
60
62
|
*
|
|
@@ -66,7 +68,7 @@ export declare function accessibleTextRecordsMatter(observer:MutationObserver,re
|
|
|
66
68
|
* also listen for. Components whose accessible text does not depend on slot assignment pass nothing
|
|
67
69
|
* and keep the narrower filter, so widening it here changes nothing for them.
|
|
68
70
|
*/
|
|
69
|
-
export declare function bindAccessibleTextObserver(observer:MutationObserver|undefined,host:Element,extraAttributes?:readonly string[],upgrades?:CustomElementUpgradeObserver):void;
|
|
71
|
+
export declare function bindAccessibleTextObserver(observer:MutationObserver|undefined,host:Element,extraAttributes?:readonly string[],upgrades?:CustomElementUpgradeObserver,references?:AccessibleTextReferences):void;
|
|
70
72
|
/**
|
|
71
73
|
* Iteratively extracts a bounded accessible name/text projection through slots and open shadow
|
|
72
74
|
* roots. The result reports every ceiling it reached so authoritative-name, announcement and
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{composedParentElement}from"./active-element.js";import{asciiWhitespaceTokens}from"./ascii-whitespace.js";import{imageMapImageFor}from"./dom-guards.js";import{composedParentElement as composedParentElement2}from"./active-element.js";const NON_CONTENT_ELEMENTS=new Set(["script","style","template"]),DEFAULT_ACCESSIBILITY_TEXT_MAX_CHARACTERS=4096,DEFAULT_ACCESSIBILITY_TEXT_MAX_DEPTH=256,DEFAULT_ACCESSIBILITY_TEXT_MAX_NODES=4096,DEFAULT_ACCESSIBILITY_VISIBILITY_MAX_NODES=512,MAX_CONFIGURED_ACCESSIBILITY_TEXT_LIMIT=1e5;function isAriaTrue(value){return value?.trim().toLowerCase()==="true"}function accessibilityElementState(element,imageMapImage=imageMapImageFor(element),ignoreSemanticExclusion=!1){let rendered;try{rendered=element.ownerDocument.defaultView?.getComputedStyle(element)}catch{}const visibility=rendered?.visibility;return{display:rendered?.display,subtreeExcluded:element.hasAttribute("hidden")||!ignoreSemanticExclusion&&(element.hasAttribute("inert")||isAriaTrue(element.getAttribute("aria-hidden")))||!imageMapImage&&(rendered?.display==="none"||rendered?.contentVisibility==="hidden"),visibilityHidden:visibility==="hidden"||visibility==="collapse"}}function isAccessibilitySubtreeExcluded(element){return accessibilityElementState(element).subtreeExcluded}function isAccessibilityVisibilityHidden(element){return accessibilityElementState(element).visibilityHidden}function isAccessibilityExcluded(element){return isAccessibilitySubtreeExcluded(element)||isAccessibilityVisibilityHidden(element)}const CONTENT_NODE_ATTRIBUTES=["alt","aria-hidden","aria-label","aria-labelledby","class","hidden","id","inert","open","style"],ANCESTOR_ATTRIBUTES=["aria-hidden","class","hidden","inert","open","style"];function observeAccessibleTextNode(observer,node,extraAttributes){if(node.nodeType===3){observer.observe(node,{characterData:!0});return}node.nodeType!==1&&node.nodeType!==11||observer.observe(node,{attributes:!0,attributeFilter:[...new Set([...CONTENT_NODE_ATTRIBUTES,...extraAttributes])],childList:!0,characterData:!0,subtree:!0})}const filteringObservers=new WeakSet,ancestorVisibilityBaselines=new WeakMap,contentVisibilityBaselines=new WeakMap;function visibilityKey(element,state=accessibilityElementState(element)){return[state.subtreeExcluded,state.visibilityHidden,state.display,element.hasAttribute("open")].join("|")}function ancestorPresentationKey(element){const style=element.style,customProperties=style?Array.from(style).filter(name=>name.startsWith("--")).sort().map(name=>`${name}:${style.getPropertyValue(name)}!${style.getPropertyPriority(name)}`):[];return[element.getAttribute("class")??"",...customProperties].join("|")}function ancestorVisibilityBaseline(element){return{visibility:visibilityKey(element),presentation:ancestorPresentationKey(element)}}function accessibleTextRecordsMatter(observer,records){const baseline=ancestorVisibilityBaselines.get(observer);if(!filteringObservers.has(observer)||!baseline)return filteringObservers.add(observer),!0;for(const record of records){const target=record.target;if(record.type!=="attributes"||!baseline.has(target))return!0;const previous=baseline.get(target);if(visibilityKey(target)!==previous.visibility)return!0;const presentation=ancestorPresentationKey(target);if(presentation!==previous.presentation){const content=contentVisibilityBaselines.get(observer);if(content?.incomplete)return!0;for(const[element,visibility]of content?.elements??[])if(visibilityKey(element)!==visibility)return!0;previous.presentation=presentation}}return!1}function bindAccessibleTextObserver(observer,host,extraAttributes=[],upgrades){if(!observer)return;observer.disconnect(),observeAccessibleTextNode(observer,host,extraAttributes);const baseline=filteringObservers.has(observer)?new Map:void 0;let ancestor=composedParentElement(host);for(;ancestor;)observer.observe(ancestor,{attributes:!0,attributeFilter:ANCESTOR_ATTRIBUTES}),baseline?.set(ancestor,ancestorVisibilityBaseline(ancestor)),ancestor=composedParentElement(ancestor);baseline&&ancestorVisibilityBaselines.set(observer,baseline);for(const slot of host.querySelectorAll("slot"))for(const assigned of slot.assignedNodes({flatten:!0})){observeAccessibleTextNode(observer,assigned,extraAttributes);let ancestor2=assigned.nodeType===1?composedParentElement(assigned):assigned.parentElement;for(;ancestor2;)ancestor2!==host&&!host.contains(ancestor2)&&ancestor2.getRootNode()!==host.shadowRoot&&(observer.observe(ancestor2,{attributes:!0,attributeFilter:ANCESTOR_ATTRIBUTES}),baseline?.set(ancestor2,ancestorVisibilityBaseline(ancestor2))),ancestor2=composedParentElement(ancestor2)}const contentBaseline=baseline?{elements:new Map,incomplete:!1}:void 0,observationExclusions=new Map,result=composedAccessibilityTextResult(host.childNodes,{requireRendered:!1,isSubtreeExcluded:element=>observationExclusions.get(element)??isAccessibilitySubtreeExcluded(element),onElementState:(element,state)=>{const ownedWrapper=element.getRootNode()===host.shadowRoot,excluded=ownedWrapper&&state.subtreeExcluded?accessibilityElementState(element,void 0,!0).subtreeExcluded:state.subtreeExcluded;observationExclusions.set(element,excluded),contentBaseline&&(contentBaseline.elements.set(element,visibilityKey(element,state)),excluded&&ownedWrapper&&(contentBaseline.incomplete=!0))},shouldPrune:element=>(upgrades?.observeElement(element),!1)});contentBaseline&&(contentBaseline.incomplete||=result.truncated,contentVisibilityBaselines.set(observer,contentBaseline));for(const root of result.traversedShadowRoots)root!==host.shadowRoot&&observeAccessibleTextNode(observer,root,extraAttributes)}function finiteTextLimit(value,fallback){return Number.isFinite(value)?Math.min(MAX_CONFIGURED_ACCESSIBILITY_TEXT_LIMIT,Math.max(0,Math.floor(value))):fallback}function isNodeValue(value){if(typeof value!="object"&&typeof value!="function"||value===null)return!1;try{return typeof value.nodeType=="number"&&typeof value.getRootNode=="function"}catch{return!1}}function consumeNodeWork(context){return context.workUnits>=context.maxNodes?(context.reasons.add("nodes"),!1):(context.workUnits+=1,!0)}function cachedElementState(context,element){let state=context.elementStates.get(element);return state||(state=accessibilityElementState(element,cachedImageMapImage(context,element)),context.elementStates.set(element,state),context.onElementState?.(element,state)),state}function cachedImageMapImage(context,element){if(context.imageMapImages.has(element))return context.imageMapImages.get(element);const image=imageMapImageFor(element,{consume:()=>consumeNodeWork(context)});return context.imageMapImages.set(element,image),image}function cachedSubtreeExcluded(context,element){if(context.excludedElements.has(element))return context.excludedElements.get(element);const excluded=context.isSubtreeExcluded?context.isSubtreeExcluded(element):cachedElementState(context,element).subtreeExcluded;return context.excludedElements.set(element,excluded),excluded}function addLabelReferenceRoot(context,node){const root=node.getRootNode();(root.nodeType===9||root.nodeType===11&&"host"in root)&&context.labelReferenceRoots.add(root)}function appendBoundedText(context,value){if(value==="")return;if(context.outputLength>=context.maxCharacters){context.reasons.add("characters"),context.stack.length=0;return}const remaining=context.maxCharacters-context.outputLength;if(value.length>remaining){context.output.push(value.slice(0,remaining)),context.outputLength+=remaining,context.reasons.add("characters"),context.stack.length=0;return}context.output.push(value),context.outputLength+=value.length}function composedAncestorState(context,node){const slottable=node;let branch=node.nodeType===1?node:slottable.assignedSlot??node.parentElement,ancestor=node.nodeType===1?composedParentElement(node):slottable.assignedSlot??node.parentElement,depth=0,inheritedTextVisible=!0,firstAncestor=!0;for(;ancestor;){if(!consumeNodeWork(context))return{available:!1,inheritedTextVisible};const state=cachedElementState(context,ancestor);if(firstAncestor&&(inheritedTextVisible=!state.visibilityHidden,firstAncestor=!1),cachedSubtreeExcluded(context,ancestor)||isClosedDetailsContentBranchBounded(context,ancestor,branch))return{available:!1,inheritedTextVisible};if(ancestor===context.ancestorBoundary)return{available:!0,inheritedTextVisible};if(depth+=1,depth>context.maxDepth)return context.reasons.add("ancestors"),{available:!1,inheritedTextVisible};branch=ancestor,ancestor=composedParentElement(ancestor)}return{available:!0,inheritedTextVisible}}function inheritedVisibilityHidden(context,node){const slottable=node,ancestor=node.nodeType===1?composedParentElement(node):slottable.assignedSlot??node.parentElement;return ancestor?cachedElementState(context,ancestor).visibilityHidden:!1}function scheduleNode(context,node,depth,inheritedTextVisible,referenced,available,workCharged=!1){return depth>context.maxDepth?(context.reasons.add("depth"),!1):(context.stack.push({available,depth,inheritedTextVisible,kind:"node",node,referenced,workCharged}),!0)}function scheduleNodeList(context,nodes,depth,inheritedTextVisible,referenced,available){if(nodes.length!==0){if(depth>context.maxDepth){context.reasons.add("depth");return}context.stack.push({available,depth,index:0,inheritedTextVisible,kind:"nodes",nodes,referenced})}}function scheduleRenderedChildNodes(context,element,depth,inheritedTextVisible,referenced,available){if(element.localName==="slot"){const slot=element,root=slot.getRootNode(),candidates=root.nodeType===11&&"host"in root?root.host.childNodes:[];if(depth>context.maxDepth){(candidates.length>0||slot.childNodes.length>0)&&context.reasons.add("depth");return}context.stack.push({available,candidates,depth,fallback:slot.childNodes,foundAssigned:!1,index:0,inheritedTextVisible,kind:"slot",referenced,slot});return}if(element.localName==="details"&&!element.hasAttribute("open")){for(const child of element.children){if(!consumeNodeWork(context))return;if(child.localName==="summary"){scheduleNode(context,child,depth,inheritedTextVisible,referenced,available,!0);return}}return}const shadowRoot=element.shadowRoot,childNodes=shadowRoot?.childNodes??element.childNodes;shadowRoot&&(childNodes.length===0||depth<=context.maxDepth)&&context.traversedShadowRoots.add(shadowRoot),scheduleNodeList(context,childNodes,depth,inheritedTextVisible,referenced,available)}function labelledByElements(context,element){const value=element.getAttribute("aria-labelledby");if(value===null)return{authoritative:!1,elements:[]};addLabelReferenceRoot(context,element);const root=element.getRootNode(),canResolveSerialized=typeof root.getElementById=="function",serializedReferences=[];let sawSerializedToken=!1;for(const id of asciiWhitespaceTokens(value,()=>consumeNodeWork(context))){if(sawSerializedToken=!0,context.labelReferenceIds.add(id),!consumeNodeWork(context))return{authoritative:!0,elements:serializedReferences};const reference=canResolveSerialized?root.getElementById(id):null;reference&&serializedReferences.push(reference)}if(sawSerializedToken)return{authoritative:serializedReferences.length>0,elements:serializedReferences};if(context.workUnits>=context.maxNodes||!consumeNodeWork(context))return context.reasons.add("nodes"),{authoritative:!0,elements:[]};if(context.workUnits>=context.maxNodes)return context.reasons.add("nodes"),{authoritative:!0,elements:[]};try{const ElementConstructor=element.ownerDocument.defaultView?.Element,descriptor=ElementConstructor?Object.getOwnPropertyDescriptor(ElementConstructor.prototype,"ariaLabelledByElements"):void 0,reflected=typeof descriptor?.get=="function"?descriptor.get.call(element):void 0;if(reflected?.length){const result=[];for(let index=0;index<reflected.length&&consumeNodeWork(context);index+=1){const reference=reflected[index];!reference||reference.nodeType!==1||(result.push(reference),addLabelReferenceRoot(context,reference))}return{authoritative:!0,elements:result}}}catch{}return{authoritative:!1,elements:[]}}const OWNED_CLOSED_POPUP_SELECTOR='[part~="popup"], .submenu-surface';function hasOwnedClosedPopupAncestor(node){let current=composedParentElement(node);for(;current;){if(current.hidden&¤t.matches(OWNED_CLOSED_POPUP_SELECTOR))return!0;current=composedParentElement(current)}return!1}function isAncestorBoundaryExternallyUnrendered(context){if(context.externallyUnrenderedBoundary!==void 0)return context.externallyUnrenderedBoundary;const boundary=context.ancestorBoundary;let result=!1;if(boundary&&!cachedSubtreeExcluded(context,boundary)){const candidate=boundary;if(typeof candidate.checkVisibility=="function")try{result=!candidate.checkVisibility({contentVisibilityAuto:!0})&&hasOwnedClosedPopupAncestor(boundary)}catch{result=!1}}return context.externallyUnrenderedBoundary=result,result}function isRenderedAccessibilityBranch(context,element,display){const imageMapImage=cachedImageMapImage(context,element);if(imageMapImage)return isRenderedAccessibilityBranch(context,imageMapImage,cachedElementState(context,imageMapImage).display);if(!element.isConnected||display==="contents")return!0;const candidate=element;if(typeof candidate.checkVisibility!="function")return!0;try{return candidate.checkVisibility({contentVisibilityAuto:!0})?!0:context.ignoreInheritedVisibility&&isAncestorBoundaryExternallyUnrendered(context)}catch{return!1}}function processAccessibilityTextWork(context){for(;context.stack.length>0;){const work=context.stack.pop();if(work.kind==="text"){appendBoundedText(context,work.value);continue}if(work.kind==="slot"){if(work.index>=work.candidates.length){work.foundAssigned||scheduleNodeList(context,work.fallback,work.depth,work.inheritedTextVisible,work.referenced,work.available);continue}if(!consumeNodeWork(context)){context.stack.length=0;break}const node=work.candidates[work.index],assigned=!!(node&&node.assignedSlot===work.slot);context.stack.push({...work,foundAssigned:work.foundAssigned||assigned,index:work.index+1}),node&&assigned&&(scheduleNode(context,node,work.depth,work.inheritedTextVisible,work.referenced,work.available,!0),work.foundAssigned&&context.stack.push({kind:"text",value:" "}));continue}if(work.kind==="nodes"){if(work.index>=work.nodes.length)continue;const node=work.nodes[work.index];if(!node)continue;context.stack.push({...work,index:work.index+1}),scheduleNode(context,node,work.depth,work.inheritedTextVisible,work.referenced,work.available),work.index>0&&context.stack.push({kind:"text",value:" "});continue}if(context.visited.has(work.node))continue;if(!work.workCharged&&!consumeNodeWork(context)){context.stack.length=0;break}if(context.visited.add(work.node),context.visitedNodes+=1,!work.referenced&&context.shouldPruneNode?.(work.node))continue;if(work.node.nodeType===3){(work.referenced||work.available&&work.inheritedTextVisible)&&appendBoundedText(context,work.node.textContent??"");continue}if(work.node.nodeType===11){"host"in work.node&&context.traversedShadowRoots.add(work.node),scheduleNodeList(context,work.node.childNodes,work.depth+1,work.inheritedTextVisible,work.referenced,work.available);continue}if(work.node.nodeType!==1)continue;const element=work.node;if(NON_CONTENT_ELEMENTS.has(element.localName)||context.shouldPrune?.(element))continue;const state=cachedElementState(context,element),excluded=cachedSubtreeExcluded(context,element),available=work.referenced||work.available&&!excluded;if(!available||!work.referenced&&context.requireRendered&&!isRenderedAccessibilityBranch(context,element,state.display))continue;const ownTextVisible=work.referenced||!state.visibilityHidden||context.visibilityBaselineHidden,labelledBy=ownTextVisible?labelledByElements(context,element):{authoritative:!1,elements:[]};if(labelledBy.elements.length>0){for(const reference of labelledBy.elements)context.referencedElements.add(reference);scheduleNodeList(context,labelledBy.elements,work.depth+1,!0,!0,!0);continue}if(labelledBy.authoritative)continue;const ariaLabel=ownTextVisible?element.getAttribute("aria-label"):null;if(ariaLabel?.trim()){appendBoundedText(context,ariaLabel.trim());continue}if(ownTextVisible&&(element.localName==="img"||element.localName==="area")){const alt=element.getAttribute("alt");if(alt?.trim()){appendBoundedText(context,alt.trim());continue}}scheduleRenderedChildNodes(context,element,work.depth+1,ownTextVisible,work.referenced,available)}}function normalizedTextOptions(options){const resolved=typeof options=="boolean"?{inheritedTextVisible:options}:options??{};return{...resolved,inheritedTextVisible:resolved.inheritedTextVisible??!0,maxCharacters:finiteTextLimit(resolved.maxCharacters,DEFAULT_ACCESSIBILITY_TEXT_MAX_CHARACTERS),maxDepth:finiteTextLimit(resolved.maxDepth,DEFAULT_ACCESSIBILITY_TEXT_MAX_DEPTH),maxNodes:finiteTextLimit(resolved.maxNodes,DEFAULT_ACCESSIBILITY_TEXT_MAX_NODES)}}function composedAccessibilityTextResult(input,options){const resolved=normalizedTextOptions(options),context={ancestorBoundary:resolved.ancestorBoundary??null,elementStates:new Map,excludedElements:new Map,imageMapImages:new Map,isSubtreeExcluded:resolved.isSubtreeExcluded,onElementState:resolved.onElementState,ignoreInheritedVisibility:resolved.skipRootAncestorValidation===!0||resolved.ignoreInheritedVisibility===!0,labelReferenceRoots:new Set,labelReferenceIds:new Set,maxCharacters:resolved.maxCharacters,maxDepth:resolved.maxDepth,maxNodes:resolved.maxNodes,output:[],outputLength:0,reasons:new Set,referencedElements:new Set,requireRendered:resolved.requireRendered!==!1,shouldPrune:resolved.shouldPrune,shouldPruneNode:resolved.shouldPruneNode,stack:[],traversedShadowRoots:new Set,visibilityBaselineHidden:!1,visited:new Set,visitedNodes:0,workUnits:0};if(context.maxNodes===0)return context.reasons.add("nodes"),{labelReferenceRoots:context.labelReferenceRoots,labelReferenceIds:context.labelReferenceIds,referencedElements:context.referencedElements,text:"",traversedShadowRoots:context.traversedShadowRoots,truncated:!0,truncationReasons:[...context.reasons],visitedNodes:0};const roots=isNodeValue(input)?[input]:input;let rootCount=0;for(const root of roots){if(!isNodeValue(root))continue;if(context.workUnits>=context.maxNodes){context.reasons.add("nodes");break}if(rootCount>0&&appendBoundedText(context," "),context.reasons.has("characters"))break;const validated=resolved.skipRootAncestorValidation?{available:!0,inheritedTextVisible:!0}:composedAncestorState(context,root);context.visibilityBaselineHidden=(root.nodeType===1||!resolved.skipRootAncestorValidation)&&context.ignoreInheritedVisibility&&inheritedVisibilityHidden(context,root);const ancestorState=context.visibilityBaselineHidden?{available:validated.available,inheritedTextVisible:!0}:validated;if(scheduleNode(context,root,0,resolved.inheritedTextVisible&&ancestorState.inheritedTextVisible,!1,ancestorState.available),processAccessibilityTextWork(context),rootCount+=1,context.reasons.has("characters")||context.reasons.has("nodes")&&context.workUnits>=context.maxNodes)break}return{labelReferenceRoots:context.labelReferenceRoots,labelReferenceIds:context.labelReferenceIds,referencedElements:context.referencedElements,text:context.output.join(""),traversedShadowRoots:context.traversedShadowRoots,truncated:context.reasons.size>0,truncationReasons:[...context.reasons],visitedNodes:context.visitedNodes}}function composedAccessibilityText(input,options){return composedAccessibilityTextResult(input,options).text}function composedAccessibleVisibleText(node){return composedAccessibilityText(node)}function isClosedDetailsContentBranchWithin(details,branch,consume){if(details.localName!=="details"||details.hasAttribute("open")||branch===null)return!1;let summary=null;for(const child of details.children){if(!consume())return!0;if(child.localName==="summary"){summary=child;break}}return branch!==summary}function isClosedDetailsContentBranchBounded(context,details,branch){if(details.localName!=="details"||details.hasAttribute("open")||branch===null)return!1;for(const child of details.children){if(!consumeNodeWork(context))return!0;if(child.localName==="summary")return child!==branch}return!0}function isAccessibilityVisible(element,options={}){if(!element.isConnected)return!1;const maxDepth=finiteTextLimit(options.maxDepth,DEFAULT_ACCESSIBILITY_TEXT_MAX_DEPTH),maxNodes=finiteTextLimit(options.maxNodes,DEFAULT_ACCESSIBILITY_VISIBILITY_MAX_NODES);let workUnits=0;const consume=()=>workUnits>=maxNodes?!1:(workUnits+=1,!0);let current=element,composedChild=null,depth=0,targetState,renderedSource=element;for(;current;){if(depth>maxDepth||!consume())return!1;const imageMapImage=imageMapImageFor(current,{consume}),state=accessibilityElementState(current,imageMapImage);if(current===element&&(targetState=state,renderedSource=imageMapImage??element),!options.ignorePresentation?.(current)&&(state.subtreeExcluded||isClosedDetailsContentBranchWithin(current,composedChild,consume)||current===element&&state.visibilityHidden))return!1;composedChild=current,current=composedParentElement(current),depth+=1}if(renderedSource!==element)for(current=renderedSource,composedChild=null,depth=0;current;){if(depth>maxDepth||!consume())return!1;const state=accessibilityElementState(current,imageMapImageFor(current,{consume}));if(current===renderedSource&&(targetState=state),!options.ignorePresentation?.(current)&&(state.subtreeExcluded||isClosedDetailsContentBranchWithin(current,composedChild,consume)||current===renderedSource&&state.visibilityHidden))return!1;composedChild=current,current=composedParentElement(current),depth+=1}if(targetState?.display==="contents")return!0;const visibilityTarget=renderedSource;if(!consume())return!1;try{return typeof visibilityTarget.checkVisibility=="function"?visibilityTarget.checkVisibility({contentVisibilityAuto:!0}):!0}catch{return!1}}export{accessibleTextRecordsMatter,bindAccessibleTextObserver,composedAccessibilityText,composedAccessibilityTextResult,composedAccessibleVisibleText,composedParentElement2 as composedParentElement,isAccessibilityExcluded,isAccessibilitySubtreeExcluded,isAccessibilityVisibilityHidden,isAccessibilityVisible,isAriaTrue};
|
|
1
|
+
import{composedParentElement}from"./active-element.js";import{assignedSlotOf}from"./composed-tree.js";import{asciiWhitespaceTokens}from"./ascii-whitespace.js";import{imageMapImageFor}from"./dom-guards.js";import{subscribeInheritedAttributes}from"./inherited-attribute-hub.js";import{composedParentElement as composedParentElement2}from"./active-element.js";const NON_CONTENT_ELEMENTS=new Set(["script","style","template"]),DEFAULT_ACCESSIBILITY_TEXT_MAX_CHARACTERS=4096,DEFAULT_ACCESSIBILITY_TEXT_MAX_DEPTH=256,DEFAULT_ACCESSIBILITY_TEXT_MAX_NODES=4096,DEFAULT_ACCESSIBILITY_VISIBILITY_MAX_NODES=512,MAX_CONFIGURED_ACCESSIBILITY_TEXT_LIMIT=1e5;function isAriaTrue(value){return value?.trim().toLowerCase()==="true"}function accessibilityElementState(element,imageMapImage=imageMapImageFor(element),ignoreSemanticExclusion=!1){let rendered;try{rendered=element.ownerDocument.defaultView?.getComputedStyle(element)}catch{}const visibility=rendered?.visibility;return{display:rendered?.display,subtreeExcluded:element.hasAttribute("hidden")||!ignoreSemanticExclusion&&(element.hasAttribute("inert")||isAriaTrue(element.getAttribute("aria-hidden")))||!imageMapImage&&(rendered?.display==="none"||rendered?.contentVisibility==="hidden"),visibilityHidden:visibility==="hidden"||visibility==="collapse"}}function isAccessibilitySubtreeExcluded(element){return accessibilityElementState(element).subtreeExcluded}function isAccessibilityVisibilityHidden(element){return accessibilityElementState(element).visibilityHidden}function isAccessibilityExcluded(element){return isAccessibilitySubtreeExcluded(element)||isAccessibilityVisibilityHidden(element)}const CONTENT_NODE_ATTRIBUTES=["alt","aria-hidden","aria-label","aria-labelledby","class","hidden","id","inert","open","style"],ANCESTOR_ATTRIBUTES=["aria-hidden","class","hidden","inert","open","style"];function observeAccessibleTextNode(observer,node,extraAttributes){if(node.nodeType===3){observer.observe(node,{characterData:!0});return}node.nodeType!==1&&node.nodeType!==11||observer.observe(node,{attributes:!0,attributeFilter:[...new Set([...CONTENT_NODE_ATTRIBUTES,...extraAttributes])],childList:!0,characterData:!0,subtree:!0})}const filteringObservers=new WeakSet,ancestorVisibilityBaselines=new WeakMap,contentVisibilityBaselines=new WeakMap;function visibilityKey(element,state=accessibilityElementState(element)){return[state.subtreeExcluded,state.visibilityHidden,state.display,element.hasAttribute("open")].join("|")}function ancestorPresentationKey(element){const style=element.style,customProperties=style?Array.from(style).filter(name=>name.startsWith("--")).sort().map(name=>`${name}:${style.getPropertyValue(name)}!${style.getPropertyPriority(name)}`):[];return[element.getAttribute("class")??"",...customProperties].join("|")}function ancestorVisibilityBaseline(element){return{visibility:visibilityKey(element),presentation:ancestorPresentationKey(element)}}function accessibleTextRecordsMatter(observer,records){const baseline=ancestorVisibilityBaselines.get(observer);if(!filteringObservers.has(observer)||!baseline)return filteringObservers.add(observer),!0;for(const record of records){const target=record.target;if(record.type!=="attributes"||!baseline.has(target))return!0;const previous=baseline.get(target);if(visibilityKey(target)!==previous.visibility)return!0;const presentation=ancestorPresentationKey(target);if(presentation!==previous.presentation){const content=contentVisibilityBaselines.get(observer);if(content?.incomplete)return!0;for(const[element,visibility]of content?.elements??[])if(visibilityKey(element)!==visibility)return!0;previous.presentation=presentation}}return!1}function releaseAccessibleTextReferences(references){for(const release of references.releases.splice(0))release()}function labelReferenceRecordsMatter(records,ids,referenced){const affects=node=>{if(node.nodeType!==1)return!1;const element=node;if(referenced.has(element)||ids.has(element.id))return!0;for(const reference of referenced)if(element.contains(reference))return!0;const pending=[element];let visited=0;for(;pending.length;){if(++visited>4096)return!0;const descendant=pending.pop();if(ids.has(descendant.id))return!0;for(const child of descendant.children){if(pending.length>4096)return!0;pending.push(child)}}return!1};return records.some(record=>record.type==="attributes"?referenced.has(record.target)||ids.has(record.target.id):[...record.addedNodes,...record.removedNodes].some(affects))}function bindAccessibleTextObserver(observer,host,extraAttributes=[],upgrades,references){if(!observer)return;observer.disconnect(),references&&releaseAccessibleTextReferences(references),observeAccessibleTextNode(observer,host,extraAttributes);const baseline=filteringObservers.has(observer)?new Map:void 0;let ancestor=composedParentElement(host);for(;ancestor;)observer.observe(ancestor,{attributes:!0,attributeFilter:ANCESTOR_ATTRIBUTES}),baseline?.set(ancestor,ancestorVisibilityBaseline(ancestor)),ancestor=composedParentElement(ancestor);baseline&&ancestorVisibilityBaselines.set(observer,baseline);for(const slot of host.querySelectorAll("slot"))for(const assigned of slot.assignedNodes({flatten:!0})){observeAccessibleTextNode(observer,assigned,extraAttributes);let ancestor2=assigned.nodeType===1?composedParentElement(assigned):assigned.parentElement;for(;ancestor2;)ancestor2!==host&&!host.contains(ancestor2)&&ancestor2.getRootNode()!==host.shadowRoot&&(observer.observe(ancestor2,{attributes:!0,attributeFilter:ANCESTOR_ATTRIBUTES}),baseline?.set(ancestor2,ancestorVisibilityBaseline(ancestor2))),ancestor2=composedParentElement(ancestor2)}const contentBaseline=baseline?{elements:new Map,incomplete:!1}:void 0,observationExclusions=new Map,result=composedAccessibilityTextResult(host.childNodes,{requireRendered:!1,isSubtreeExcluded:element=>observationExclusions.get(element)??isAccessibilitySubtreeExcluded(element),onElementState:(element,state)=>{const ownedWrapper=element.getRootNode()===host.shadowRoot,excluded=ownedWrapper&&state.subtreeExcluded?accessibilityElementState(element,void 0,!0).subtreeExcluded:state.subtreeExcluded;observationExclusions.set(element,excluded),contentBaseline&&(contentBaseline.elements.set(element,visibilityKey(element,state)),excluded&&ownedWrapper&&(contentBaseline.incomplete=!0))},shouldPrune:element=>(upgrades?.observeElement(element),!1)});contentBaseline&&(contentBaseline.incomplete||=result.truncated,contentVisibilityBaselines.set(observer,contentBaseline));for(const root of result.traversedShadowRoots)root!==host.shadowRoot&&observeAccessibleTextNode(observer,root,extraAttributes);if(!references)return;for(const reference of result.referencedElements)observeAccessibleTextNode(observer,reference,extraAttributes);if(!result.labelReferenceIds.size)return;const Observer=host.ownerDocument.defaultView?.MutationObserver;for(const root of result.labelReferenceRoots){const release=subscribeInheritedAttributes(root,Observer,{attributes:["id"],childList:!0,changed:records=>{labelReferenceRecordsMatter(records,result.labelReferenceIds,result.referencedElements)&&references.changed()}});release&&references.releases.push(release)}}function finiteTextLimit(value,fallback){return Number.isFinite(value)?Math.min(MAX_CONFIGURED_ACCESSIBILITY_TEXT_LIMIT,Math.max(0,Math.floor(value))):fallback}function isNodeValue(value){if(typeof value!="object"&&typeof value!="function"||value===null)return!1;try{return typeof value.nodeType=="number"&&typeof value.getRootNode=="function"}catch{return!1}}function consumeNodeWork(context){return context.workUnits>=context.maxNodes?(context.reasons.add("nodes"),!1):(context.workUnits+=1,!0)}function cachedElementState(context,element){let state=context.elementStates.get(element);return state||(state=accessibilityElementState(element,cachedImageMapImage(context,element)),context.elementStates.set(element,state),context.onElementState?.(element,state)),state}function cachedImageMapImage(context,element){if(context.imageMapImages.has(element))return context.imageMapImages.get(element);const image=imageMapImageFor(element,{consume:()=>consumeNodeWork(context)});return context.imageMapImages.set(element,image),image}function cachedSubtreeExcluded(context,element){if(context.excludedElements.has(element))return context.excludedElements.get(element);const excluded=context.isSubtreeExcluded?context.isSubtreeExcluded(element):cachedElementState(context,element).subtreeExcluded;return context.excludedElements.set(element,excluded),excluded}function addLabelReferenceRoot(context,node){const root=node.getRootNode();(root.nodeType===9||root.nodeType===11&&"host"in root)&&context.labelReferenceRoots.add(root)}function appendBoundedText(context,value){if(value==="")return;if(context.outputLength>=context.maxCharacters){context.reasons.add("characters"),context.stack.length=0;return}const remaining=context.maxCharacters-context.outputLength;if(value.length>remaining){context.output.push(value.slice(0,remaining)),context.outputLength+=remaining,context.reasons.add("characters"),context.stack.length=0;return}context.output.push(value),context.outputLength+=value.length}function composedAncestorState(context,node){let branch=node.nodeType===1?node:assignedSlotOf(node)??node.parentElement,ancestor=node.nodeType===1?composedParentElement(node):assignedSlotOf(node)??node.parentElement,depth=0,inheritedTextVisible=!0,firstAncestor=!0;for(;ancestor;){if(!consumeNodeWork(context))return{available:!1,inheritedTextVisible};const state=cachedElementState(context,ancestor);if(firstAncestor&&(inheritedTextVisible=!state.visibilityHidden,firstAncestor=!1),cachedSubtreeExcluded(context,ancestor)||isClosedDetailsContentBranchBounded(context,ancestor,branch))return{available:!1,inheritedTextVisible};if(ancestor===context.ancestorBoundary)return{available:!0,inheritedTextVisible};if(depth+=1,depth>context.maxDepth)return context.reasons.add("ancestors"),{available:!1,inheritedTextVisible};branch=ancestor,ancestor=composedParentElement(ancestor)}return{available:!0,inheritedTextVisible}}function inheritedVisibilityHidden(context,node){const ancestor=node.nodeType===1?composedParentElement(node):assignedSlotOf(node)??node.parentElement;return ancestor?cachedElementState(context,ancestor).visibilityHidden:!1}function scheduleNode(context,node,depth,inheritedTextVisible,referenced,available,workCharged=!1){return depth>context.maxDepth?(context.reasons.add("depth"),!1):(context.stack.push({available,depth,inheritedTextVisible,kind:"node",node,referenced,workCharged}),!0)}function scheduleNodeList(context,nodes,depth,inheritedTextVisible,referenced,available){if(nodes.length!==0){if(depth>context.maxDepth){context.reasons.add("depth");return}context.stack.push({available,depth,index:0,inheritedTextVisible,kind:"nodes",nodes,referenced})}}function scheduleRenderedChildNodes(context,element,depth,inheritedTextVisible,referenced,available){if(element.localName==="slot"){const slot=element,root=slot.getRootNode(),candidates=root.nodeType===11&&"host"in root?root.host.childNodes:[];if(depth>context.maxDepth){(candidates.length>0||slot.childNodes.length>0)&&context.reasons.add("depth");return}context.stack.push({available,candidates,depth,fallback:slot.childNodes,foundAssigned:!1,index:0,inheritedTextVisible,kind:"slot",referenced,slot});return}if(element.localName==="details"&&!element.hasAttribute("open")){for(const child of element.children){if(!consumeNodeWork(context))return;if(child.localName==="summary"){scheduleNode(context,child,depth,inheritedTextVisible,referenced,available,!0);return}}return}const shadowRoot=element.shadowRoot,childNodes=shadowRoot?.childNodes??element.childNodes;shadowRoot&&(childNodes.length===0||depth<=context.maxDepth)&&context.traversedShadowRoots.add(shadowRoot),scheduleNodeList(context,childNodes,depth,inheritedTextVisible,referenced,available)}function labelledByElements(context,element){const value=element.getAttribute("aria-labelledby");if(value===null)return{authoritative:!1,elements:[]};addLabelReferenceRoot(context,element);const root=element.getRootNode(),canResolveSerialized=typeof root.getElementById=="function",serializedReferences=[];let sawSerializedToken=!1;for(const id of asciiWhitespaceTokens(value,()=>consumeNodeWork(context))){if(sawSerializedToken=!0,context.labelReferenceIds.add(id),!consumeNodeWork(context))return{authoritative:!0,elements:serializedReferences};const reference=canResolveSerialized?root.getElementById(id):null;reference&&serializedReferences.push(reference)}if(sawSerializedToken)return{authoritative:serializedReferences.length>0,elements:serializedReferences};if(context.workUnits>=context.maxNodes||!consumeNodeWork(context))return context.reasons.add("nodes"),{authoritative:!0,elements:[]};if(context.workUnits>=context.maxNodes)return context.reasons.add("nodes"),{authoritative:!0,elements:[]};try{const ElementConstructor=element.ownerDocument.defaultView?.Element,descriptor=ElementConstructor?Object.getOwnPropertyDescriptor(ElementConstructor.prototype,"ariaLabelledByElements"):void 0,reflected=typeof descriptor?.get=="function"?descriptor.get.call(element):void 0;if(reflected?.length){const result=[];for(let index=0;index<reflected.length&&consumeNodeWork(context);index+=1){const reference=reflected[index];!reference||reference.nodeType!==1||(result.push(reference),addLabelReferenceRoot(context,reference))}return{authoritative:!0,elements:result}}}catch{}return{authoritative:!1,elements:[]}}const OWNED_CLOSED_POPUP_SELECTOR='[part~="popup"], .submenu-surface';function hasOwnedClosedPopupAncestor(node){let current=composedParentElement(node);for(;current;){if(current.hidden&¤t.matches(OWNED_CLOSED_POPUP_SELECTOR))return!0;current=composedParentElement(current)}return!1}function isAncestorBoundaryExternallyUnrendered(context){if(context.externallyUnrenderedBoundary!==void 0)return context.externallyUnrenderedBoundary;const boundary=context.ancestorBoundary;let result=!1;if(boundary&&!cachedSubtreeExcluded(context,boundary)){const candidate=boundary;if(typeof candidate.checkVisibility=="function")try{result=!candidate.checkVisibility({contentVisibilityAuto:!0})&&hasOwnedClosedPopupAncestor(boundary)}catch{result=!1}}return context.externallyUnrenderedBoundary=result,result}function isRenderedAccessibilityBranch(context,element,display){const imageMapImage=cachedImageMapImage(context,element);if(imageMapImage)return isRenderedAccessibilityBranch(context,imageMapImage,cachedElementState(context,imageMapImage).display);if(!element.isConnected||display==="contents")return!0;const candidate=element;if(typeof candidate.checkVisibility!="function")return!0;try{return candidate.checkVisibility({contentVisibilityAuto:!0})?!0:context.ignoreInheritedVisibility&&isAncestorBoundaryExternallyUnrendered(context)}catch{return!1}}function processAccessibilityTextWork(context){for(;context.stack.length>0;){const work=context.stack.pop();if(work.kind==="text"){appendBoundedText(context,work.value);continue}if(work.kind==="slot"){if(work.index>=work.candidates.length){work.foundAssigned||scheduleNodeList(context,work.fallback,work.depth,work.inheritedTextVisible,work.referenced,work.available);continue}if(!consumeNodeWork(context)){context.stack.length=0;break}const node=work.candidates[work.index],assigned=!!(node&&assignedSlotOf(node)===work.slot);context.stack.push({...work,foundAssigned:work.foundAssigned||assigned,index:work.index+1}),node&&assigned&&(scheduleNode(context,node,work.depth,work.inheritedTextVisible,work.referenced,work.available,!0),work.foundAssigned&&context.stack.push({kind:"text",value:" "}));continue}if(work.kind==="nodes"){if(work.index>=work.nodes.length)continue;const node=work.nodes[work.index];if(!node)continue;context.stack.push({...work,index:work.index+1}),scheduleNode(context,node,work.depth,work.inheritedTextVisible,work.referenced,work.available),work.index>0&&context.stack.push({kind:"text",value:" "});continue}if(context.visited.has(work.node))continue;if(!work.workCharged&&!consumeNodeWork(context)){context.stack.length=0;break}if(context.visited.add(work.node),context.visitedNodes+=1,!work.referenced&&context.shouldPruneNode?.(work.node))continue;if(work.node.nodeType===3){(work.referenced||work.available&&work.inheritedTextVisible)&&appendBoundedText(context,work.node.textContent??"");continue}if(work.node.nodeType===11){"host"in work.node&&context.traversedShadowRoots.add(work.node),scheduleNodeList(context,work.node.childNodes,work.depth+1,work.inheritedTextVisible,work.referenced,work.available);continue}if(work.node.nodeType!==1)continue;const element=work.node;if(NON_CONTENT_ELEMENTS.has(element.localName)||context.shouldPrune?.(element))continue;const state=cachedElementState(context,element),excluded=cachedSubtreeExcluded(context,element),available=work.referenced||work.available&&!excluded;if(!available||!work.referenced&&context.requireRendered&&!isRenderedAccessibilityBranch(context,element,state.display))continue;const ownTextVisible=work.referenced||!state.visibilityHidden||context.visibilityBaselineHidden,labelledBy=ownTextVisible?labelledByElements(context,element):{authoritative:!1,elements:[]};if(labelledBy.elements.length>0){for(const reference of labelledBy.elements)context.referencedElements.add(reference);scheduleNodeList(context,labelledBy.elements,work.depth+1,!0,!0,!0);continue}if(labelledBy.authoritative)continue;const ariaLabel=ownTextVisible?element.getAttribute("aria-label"):null;if(ariaLabel?.trim()){appendBoundedText(context,ariaLabel.trim());continue}if(ownTextVisible&&(element.localName==="img"||element.localName==="area")){const alt=element.getAttribute("alt");if(alt?.trim()){appendBoundedText(context,alt.trim());continue}}scheduleRenderedChildNodes(context,element,work.depth+1,ownTextVisible,work.referenced,available)}}function normalizedTextOptions(options){const resolved=typeof options=="boolean"?{inheritedTextVisible:options}:options??{};return{...resolved,inheritedTextVisible:resolved.inheritedTextVisible??!0,maxCharacters:finiteTextLimit(resolved.maxCharacters,DEFAULT_ACCESSIBILITY_TEXT_MAX_CHARACTERS),maxDepth:finiteTextLimit(resolved.maxDepth,DEFAULT_ACCESSIBILITY_TEXT_MAX_DEPTH),maxNodes:finiteTextLimit(resolved.maxNodes,DEFAULT_ACCESSIBILITY_TEXT_MAX_NODES)}}function composedAccessibilityTextResult(input,options){const resolved=normalizedTextOptions(options),context={ancestorBoundary:resolved.ancestorBoundary??null,elementStates:new Map,excludedElements:new Map,imageMapImages:new Map,isSubtreeExcluded:resolved.isSubtreeExcluded,onElementState:resolved.onElementState,ignoreInheritedVisibility:resolved.skipRootAncestorValidation===!0||resolved.ignoreInheritedVisibility===!0,labelReferenceRoots:new Set,labelReferenceIds:new Set,maxCharacters:resolved.maxCharacters,maxDepth:resolved.maxDepth,maxNodes:resolved.maxNodes,output:[],outputLength:0,reasons:new Set,referencedElements:new Set,requireRendered:resolved.requireRendered!==!1,shouldPrune:resolved.shouldPrune,shouldPruneNode:resolved.shouldPruneNode,stack:[],traversedShadowRoots:new Set,visibilityBaselineHidden:!1,visited:new Set,visitedNodes:0,workUnits:0};if(context.maxNodes===0)return context.reasons.add("nodes"),{labelReferenceRoots:context.labelReferenceRoots,labelReferenceIds:context.labelReferenceIds,referencedElements:context.referencedElements,text:"",traversedShadowRoots:context.traversedShadowRoots,truncated:!0,truncationReasons:[...context.reasons],visitedNodes:0};const roots=isNodeValue(input)?[input]:input;let rootCount=0;for(const root of roots){if(!isNodeValue(root))continue;if(context.workUnits>=context.maxNodes){context.reasons.add("nodes");break}if(rootCount>0&&appendBoundedText(context," "),context.reasons.has("characters"))break;const validated=resolved.skipRootAncestorValidation?{available:!0,inheritedTextVisible:!0}:composedAncestorState(context,root);context.visibilityBaselineHidden=(root.nodeType===1||!resolved.skipRootAncestorValidation)&&context.ignoreInheritedVisibility&&inheritedVisibilityHidden(context,root);const ancestorState=context.visibilityBaselineHidden?{available:validated.available,inheritedTextVisible:!0}:validated;if(scheduleNode(context,root,0,resolved.inheritedTextVisible&&ancestorState.inheritedTextVisible,!1,ancestorState.available),processAccessibilityTextWork(context),rootCount+=1,context.reasons.has("characters")||context.reasons.has("nodes")&&context.workUnits>=context.maxNodes)break}return{labelReferenceRoots:context.labelReferenceRoots,labelReferenceIds:context.labelReferenceIds,referencedElements:context.referencedElements,text:context.output.join(""),traversedShadowRoots:context.traversedShadowRoots,truncated:context.reasons.size>0,truncationReasons:[...context.reasons],visitedNodes:context.visitedNodes}}function composedAccessibilityText(input,options){return composedAccessibilityTextResult(input,options).text}function composedAccessibleVisibleText(node){return composedAccessibilityText(node)}function isClosedDetailsContentBranchWithin(details,branch,consume){if(details.localName!=="details"||details.hasAttribute("open")||branch===null)return!1;let summary=null;for(const child of details.children){if(!consume())return!0;if(child.localName==="summary"){summary=child;break}}return branch!==summary}function isClosedDetailsContentBranchBounded(context,details,branch){if(details.localName!=="details"||details.hasAttribute("open")||branch===null)return!1;for(const child of details.children){if(!consumeNodeWork(context))return!0;if(child.localName==="summary")return child!==branch}return!0}function isAccessibilityVisible(element,options={}){if(!element.isConnected)return!1;const maxDepth=finiteTextLimit(options.maxDepth,DEFAULT_ACCESSIBILITY_TEXT_MAX_DEPTH),maxNodes=finiteTextLimit(options.maxNodes,DEFAULT_ACCESSIBILITY_VISIBILITY_MAX_NODES);let workUnits=0;const consume=()=>workUnits>=maxNodes?!1:(workUnits+=1,!0);let current=element,composedChild=null,depth=0,targetState,renderedSource=element;for(;current;){if(depth>maxDepth||!consume())return!1;const imageMapImage=imageMapImageFor(current,{consume}),state=accessibilityElementState(current,imageMapImage);if(current===element&&(targetState=state,renderedSource=imageMapImage??element),!options.ignorePresentation?.(current)&&(state.subtreeExcluded||isClosedDetailsContentBranchWithin(current,composedChild,consume)||current===element&&state.visibilityHidden))return!1;composedChild=current,current=composedParentElement(current),depth+=1}if(renderedSource!==element)for(current=renderedSource,composedChild=null,depth=0;current;){if(depth>maxDepth||!consume())return!1;const state=accessibilityElementState(current,imageMapImageFor(current,{consume}));if(current===renderedSource&&(targetState=state),!options.ignorePresentation?.(current)&&(state.subtreeExcluded||isClosedDetailsContentBranchWithin(current,composedChild,consume)||current===renderedSource&&state.visibilityHidden))return!1;composedChild=current,current=composedParentElement(current),depth+=1}if(targetState?.display==="contents")return!0;const visibilityTarget=renderedSource;if(!consume())return!1;try{return typeof visibilityTarget.checkVisibility=="function"?visibilityTarget.checkVisibility({contentVisibilityAuto:!0}):!0}catch{return!1}}export{accessibleTextRecordsMatter,bindAccessibleTextObserver,composedAccessibilityText,composedAccessibilityTextResult,composedAccessibleVisibleText,composedParentElement2 as composedParentElement,isAccessibilityExcluded,isAccessibilitySubtreeExcluded,isAccessibilityVisibilityHidden,isAccessibilityVisible,isAriaTrue,labelReferenceRecordsMatter,releaseAccessibleTextReferences};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{accessibleTextRecordsMatter,bindAccessibleTextObserver,composedAccessibilityText}from"./accessibility-visibility.js";import{CustomElementUpgradeObserver}from"./custom-element-upgrade-observer.js";import{OwnedFrame,OwnedTimeout}from"./owned-timer.js";class AccessibleTextController{constructor(host,slots,onChange,extraAttributes=[],enabled=!0){this.host=host,this.slots=slots,this.onChange=onChange,this.extraAttributes=extraAttributes,this.enabled=enabled,this.upgrades=new CustomElementUpgradeObserver(()=>this.changed()),this.active=!1,this.onSlotChange=event=>{const slot=event.composedPath().find(target=>target.localName==="slot"&&target.getRootNode()===this.slotRoot);!slot||!this.slots.includes(slot.name)||this.changed()},this.visibilityFrame=new OwnedFrame(host),this.visibilityTimer=new OwnedTimeout(host),host.addController(this)}hostConnected(){this.active=!0,this.enabled&&(this.bindSlotRoot(),this.rebuild())}hostUpdated(){if(this.active&&this.enabled){const observer=this.observer,pending=observer?.takeRecords()??[],relevant=observer&&pending.length>0&&this.recordsMatter(pending)&&accessibleTextRecordsMatter(observer,pending);this.bindSlotRoot(),this.bind(),relevant&&queueMicrotask(()=>{this.active&&this.enabled&&this.observer===observer&&this.host.isConnected&&this.notify(pending)})}}hostDisconnected(){this.active=!1,this.cancelVisibilityRefresh(),this.slotRoot?.removeEventListener("slotchange",this.onSlotChange),this.slotRoot=void 0,this.observer?.disconnect(),this.observer=void 0,this.upgrades.disconnect()}adopted(){this.active&&this.enabled&&this.rebuild()}setEnabled(enabled){this.enabled!==enabled&&(this.enabled=enabled,this.active&&(enabled?(this.bindSlotRoot(),this.rebuild()):(this.cancelVisibilityRefresh(),this.slotRoot?.removeEventListener("slotchange",this.onSlotChange),this.slotRoot=void 0,this.observer?.disconnect(),this.observer=void 0,this.upgrades.disconnect())))}bind(){bindAccessibleTextObserver(this.observer,this.host,this.extraAttributes,this.upgrades)}takeRecords(){return this.observer?.takeRecords()??[]}text(){const root=this.host.shadowRoot,slots=root?[...root.querySelectorAll("slot")].filter(slot=>this.slots.includes(slot.name)):[],nodes=slots.length?slots.flatMap(slot=>[...slot.assignedNodes({flatten:!0})]):[...this.host.childNodes].filter(node=>node.nodeType!==1||this.slots.includes(node.getAttribute("slot")??""));return composedAccessibilityText(nodes)}hasContent(){return this.text().trim().length>0}rebuild(){this.cancelVisibilityRefresh(),this.observer?.disconnect(),this.upgrades.disconnect();const Observer=this.host.ownerDocument.defaultView?.MutationObserver;this.observer=Observer?new Observer((records,observer)=>{this.observer===observer&&this.recordsMatter(records)&&accessibleTextRecordsMatter(observer,records)&&this.changed(records)}):void 0,this.bind()}bindSlotRoot(){const root=this.host.shadowRoot??void 0;this.slotRoot!==root&&(this.slotRoot?.removeEventListener("slotchange",this.onSlotChange),this.slotRoot=root,root?.addEventListener("slotchange",this.onSlotChange))}recordsMatter(records){if(this.slots.length===0)return!0;const feedsSlot=start=>{const visited=new Set;let node=start;for(;node&&node!==this.host&&!visited.has(node);){if(visited.add(node),node.parentNode===this.host){const name=node.nodeType===1?node.getAttribute("slot")??"":"";return this.slots.includes(name)}node=node
|
|
1
|
+
import{accessibleTextRecordsMatter,bindAccessibleTextObserver,composedAccessibilityText,releaseAccessibleTextReferences}from"./accessibility-visibility.js";import{assignedSlotOf}from"./composed-tree.js";import{CustomElementUpgradeObserver}from"./custom-element-upgrade-observer.js";import{OwnedFrame,OwnedTimeout}from"./owned-timer.js";class AccessibleTextController{constructor(host,slots,onChange,extraAttributes=[],enabled=!0,trackReferences=!1){this.host=host,this.slots=slots,this.onChange=onChange,this.extraAttributes=extraAttributes,this.enabled=enabled,this.upgrades=new CustomElementUpgradeObserver(()=>this.changed()),this.active=!1,this.onSlotChange=event=>{const slot=event.composedPath().find(target=>target.localName==="slot"&&target.getRootNode()===this.slotRoot);!slot||!this.slots.includes(slot.name)||this.changed()},trackReferences&&(this.references={releases:[],changed:()=>this.changed()}),this.visibilityFrame=new OwnedFrame(host),this.visibilityTimer=new OwnedTimeout(host),host.addController(this)}hostConnected(){this.active=!0,this.enabled&&(this.bindSlotRoot(),this.rebuild())}hostUpdated(){if(this.active&&this.enabled){const observer=this.observer,pending=observer?.takeRecords()??[],relevant=observer&&pending.length>0&&this.recordsMatter(pending)&&accessibleTextRecordsMatter(observer,pending);this.bindSlotRoot(),this.bind(),relevant&&queueMicrotask(()=>{this.active&&this.enabled&&this.observer===observer&&this.host.isConnected&&this.notify(pending)})}}hostDisconnected(){this.active=!1,this.cancelVisibilityRefresh(),this.slotRoot?.removeEventListener("slotchange",this.onSlotChange),this.slotRoot=void 0,this.observer?.disconnect(),this.observer=void 0,this.upgrades.disconnect(),this.references&&releaseAccessibleTextReferences(this.references)}adopted(){this.active&&this.enabled&&this.rebuild()}setEnabled(enabled){this.enabled!==enabled&&(this.enabled=enabled,this.active&&(enabled?(this.bindSlotRoot(),this.rebuild()):(this.cancelVisibilityRefresh(),this.slotRoot?.removeEventListener("slotchange",this.onSlotChange),this.slotRoot=void 0,this.observer?.disconnect(),this.observer=void 0,this.upgrades.disconnect(),this.references&&releaseAccessibleTextReferences(this.references))))}bind(){bindAccessibleTextObserver(this.observer,this.host,this.extraAttributes,this.upgrades,this.references)}takeRecords(){return this.observer?.takeRecords()??[]}text(){const root=this.host.shadowRoot,slots=root?[...root.querySelectorAll("slot")].filter(slot=>this.slots.includes(slot.name)):[],nodes=slots.length?slots.flatMap(slot=>[...slot.assignedNodes({flatten:!0})]):[...this.host.childNodes].filter(node=>node.nodeType!==1||this.slots.includes(node.getAttribute("slot")??""));return composedAccessibilityText(nodes)}hasContent(){return this.text().trim().length>0}rebuild(){this.cancelVisibilityRefresh(),this.observer?.disconnect(),this.upgrades.disconnect(),this.references&&releaseAccessibleTextReferences(this.references);const Observer=this.host.ownerDocument.defaultView?.MutationObserver;this.observer=Observer?new Observer((records,observer)=>{this.observer===observer&&this.recordsMatter(records)&&accessibleTextRecordsMatter(observer,records)&&this.changed(records)}):void 0,this.bind()}bindSlotRoot(){const root=this.host.shadowRoot??void 0;this.slotRoot!==root&&(this.slotRoot?.removeEventListener("slotchange",this.onSlotChange),this.slotRoot=root,root?.addEventListener("slotchange",this.onSlotChange))}recordsMatter(records){if(this.slots.length===0)return!0;const feedsSlot=start=>{const visited=new Set;let node=start;for(;node&&node!==this.host&&!visited.has(node);){if(visited.add(node),node.parentNode===this.host){const name=node.nodeType===1?node.getAttribute("slot")??"":"";return this.slots.includes(name)}node=assignedSlotOf(node)??node.parentNode??node.host??null}return!0};return records.some(record=>record.type==="attributes"&&record.attributeName==="slot"?!0:record.target===this.host&&record.type==="childList"?[...record.addedNodes,...record.removedNodes].some(node=>node.nodeType!==1?this.slots.includes(""):this.slots.includes(node.getAttribute("slot")??"")):feedsSlot(record.target))}changed(records=[]){!this.active||!this.enabled||!this.host.isConnected||(this.bind(),this.notify(records))}notify(records){this.onChange(records),records.some(record=>record.type==="attributes"&&["class","style","hidden"].includes(record.attributeName??""))&&(this.visibilityFrame.pending||this.visibilityTimer.pending||this.visibilityFrame.schedule(()=>{this.visibilityTimer.schedule(0,()=>{this.active&&this.enabled&&this.onChange([])})}))}cancelVisibilityRefresh(){this.visibilityFrame.cancel(),this.visibilityTimer.cancel()}}export{AccessibleTextController};
|
|
@@ -24,6 +24,11 @@
|
|
|
24
24
|
*/
|
|
25
25
|
export declare function activeElementIn(root:DocumentOrShadowRoot|null|undefined):Element|null;
|
|
26
26
|
/**
|
|
27
|
+
* Returns the element focused inside `host`'s own shadow root, or `null` when the host is
|
|
28
|
+
* disconnected (a detached host cannot hold focus, and some DOMs throw on that read) or has no root.
|
|
29
|
+
*/
|
|
30
|
+
export declare function shadowFocusTarget(host:Element):Element|null;
|
|
31
|
+
/**
|
|
27
32
|
* Walks the `activeElement` chain down through nested shadow roots to the innermost focused node.
|
|
28
33
|
*
|
|
29
34
|
* `document.activeElement` (and any given root's) reports only the outermost element in *its* tree
|
|
@@ -38,5 +43,11 @@ export declare function activeElementIn(root:DocumentOrShadowRoot|null|undefined
|
|
|
38
43
|
* walk, or a specific shadow root to stay inside one component.
|
|
39
44
|
*/
|
|
40
45
|
export declare function deepActiveElementIn(root:DocumentOrShadowRoot|null|undefined):Element|null;
|
|
46
|
+
/** Browser active-element getters are typed as Element but partial DOMs can return structural
|
|
47
|
+
* lookalikes. Brand-check before focus repair or composed containment traverses a candidate. */
|
|
48
|
+
export declare function isUsableActiveElement(value:unknown):value is Element;
|
|
49
|
+
/** Descends only across genuine active-element values; an invalid nested answer makes focus
|
|
50
|
+
* ownership unknowable, so cluster repair fails closed instead of forwarding it to shared walks. */
|
|
51
|
+
export declare function safeDeepActiveElement(root:Document|ShadowRoot|null|undefined):Element|null;
|
|
41
52
|
/** Returns an element's composed parent, crossing assigned slots and shadow-root hosts. */
|
|
42
53
|
export declare function composedParentElement(element:Element):Element|null;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{flattenedParentElement}from"./composed-tree.js";function activeElementIn(root){if(!root)return null;try{return root.activeElement}catch{return null}}function deepActiveElementIn(root){let active=activeElementIn(root);for(;active?.shadowRoot;){const inner=activeElementIn(active.shadowRoot);if(!inner)break;active=inner}return active}function composedParentElement(element){return flattenedParentElement(element)}export{activeElementIn,composedParentElement,deepActiveElementIn};
|
|
1
|
+
import{flattenedParentElement}from"./composed-tree.js";function activeElementIn(root){if(!root)return null;try{return root.activeElement}catch{return null}}function shadowFocusTarget(host){return host.isConnected?activeElementIn(host.shadowRoot):null}function deepActiveElementIn(root){let active=activeElementIn(root);for(;active?.shadowRoot;){const inner=activeElementIn(active.shadowRoot);if(!inner)break;active=inner}return active}function isUsableActiveElement(value){if(typeof value!="object"&&typeof value!="function"||value===null)return!1;try{const candidate=value;if(candidate.nodeType!==1)return!1;const NodeConstructor=candidate.ownerDocument?.defaultView?.Node??(typeof Node>"u"?void 0:Node);return NodeConstructor?(NodeConstructor.prototype.getRootNode.call(candidate),!0):!1}catch{return!1}}function safeDeepActiveElement(root){const initial=activeElementIn(root);if(!isUsableActiveElement(initial))return null;let active=initial;for(;;){let shadowRoot;try{shadowRoot=active.shadowRoot}catch{return null}if(!shadowRoot)return active;const nested=activeElementIn(shadowRoot);if(nested===null)return active;if(!isUsableActiveElement(nested))return null;active=nested}}function composedParentElement(element){return flattenedParentElement(element)}export{activeElementIn,composedParentElement,deepActiveElementIn,isUsableActiveElement,safeDeepActiveElement,shadowFocusTarget};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
function areActuallyAdjacent(first,second,direction){const firstRect=first.getBoundingClientRect(),secondRect=second.getBoundingClientRect();if(firstRect.width<=0||firstRect.height<=0||secondRect.width<=0||secondRect.height<=0||!(Math.abs(firstRect.top-secondRect.top)<=1&&Math.abs(firstRect.bottom-secondRect.bottom)<=1))return!1;const gap=direction==="rtl"?firstRect.left-secondRect.right:secondRect.left-firstRect.right;return gap>=-2&&gap<=1}function measureAdjacentRuns(items,options){const{direction,joinable}=options,eligible=items.map((item,index)=>joinable(item,index)),joinsPrevious=items.map(()=>!1);for(let index=1;index<items.length;index+=1)joinsPrevious[index]=eligible[index-1]&&eligible[index]&&areActuallyAdjacent(items[index-1],items[index],direction);return items.map((_,index)=>{const joinsBefore=joinsPrevious[index]??!1,joinsAfter=joinsPrevious[index+1]??!1;return joinsBefore?joinsAfter?"middle":"end":joinsAfter?"start":"standalone"})}export{measureAdjacentRuns};
|
|
1
|
+
function areActuallyAdjacent(first,second,direction){const firstRect=first.getBoundingClientRect(),secondRect=second.getBoundingClientRect();if(firstRect.width<=0||firstRect.height<=0||secondRect.width<=0||secondRect.height<=0||!(Math.abs(firstRect.top-secondRect.top)<=1&&Math.abs(firstRect.bottom-secondRect.bottom)<=1))return!1;const gap=direction==="rtl"?firstRect.left-secondRect.right:secondRect.left-firstRect.right;return gap>=-2&&gap<=1}function measureAdjacentRuns(items,options){const{direction,joinable}=options,eligible=items.map((item,index)=>joinable(item,index)),joinsPrevious=items.map(()=>!1);for(let index=1;index<items.length;index+=1)joinsPrevious[index]=eligible[index-1]&&eligible[index]&&areActuallyAdjacent(items[index-1],items[index],direction);return items.map((_,index)=>{const joinsBefore=joinsPrevious[index]??!1,joinsAfter=joinsPrevious[index+1]??!1;return joinsBefore?joinsAfter?"middle":"end":joinsAfter?"start":"standalone"})}class AdjacentRunScheduler{constructor(host,measure){this.host=host,this.measure=measure,this.observed=[]}schedule(){const ownerWindow=this.host.ownerDocument?.defaultView;!ownerWindow||!this.host.isConnected||this.frame!==void 0||(this.frame=ownerWindow.requestAnimationFrame(()=>{this.frame=void 0,this.host.isConnected&&this.measure()}))}observe(items){const ResizeObserverCtor=this.host.ownerDocument?.defaultView?.ResizeObserver;if(!ResizeObserverCtor||!this.host.isConnected||this.observer&&items.length===this.observed.length&&items.every((item,index)=>this.observed[index]===item))return;this.observed=[...items],this.observer?.disconnect();const observer=new ResizeObserverCtor(()=>{this.observer===observer&&this.schedule()});this.observer=observer,observer.observe(this.host);for(const item of items)observer.observe(item)}dispose(){this.observer?.disconnect(),this.observer=void 0,this.observed=[],this.frame!==void 0&&this.host.ownerDocument?.defaultView?.cancelAnimationFrame(this.frame),this.frame=void 0}}export{AdjacentRunScheduler,measureAdjacentRuns};
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
/** The ExtendableEvent-style resolver an approval request's detail carries (see `createWaitUntil`). */
|
|
2
|
+
export type ApprovalWaitUntil=(promise:Promise<unknown>)=>void;
|
|
3
|
+
/**
|
|
4
|
+
* A `waitUntil()` collector for one request dispatch. Calls are honored only until `seal()`;
|
|
5
|
+
* later ones warn and do nothing. `deferrals` holds every accepted promise.
|
|
6
|
+
*/
|
|
7
|
+
export declare function createWaitUntil(tag:string):{waitUntil:ApprovalWaitUntil;deferrals:Promise<unknown>[];seal:()=>void;};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{devWarnOnce}from"./dev-mode-attribute-warning.js";function createWaitUntil(tag){const deferrals=[];let open=!0;return{waitUntil:promise=>{if(!open){devWarnOnce(`lyra-${tag}-wait-until-after-dispatch`,`<lr-${tag}>: waitUntil() was called after its lr-approve-request/lr-deny-request dispatch had finished, so it did nothing. Call it synchronously from the listener; the promise it receives may settle whenever it likes.`);return}deferrals.push(Promise.resolve(promise))},deferrals,seal:()=>{open=!1}}}export{createWaitUntil};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{asciiWhitespaceTokens,isSingleAsciiWhitespaceToken}from"./ascii-whitespace.js";import{sharedRealmRegistry}from"./a11y.js";import{registerDescriptionBaselineUpdater,resolveIdReferencesIn}from"./aria-reflection.js";import{syncAriaControlsElements,syncAriaDescribedByElements}from"./aria-reflection.js";const DESCRIPTION_RELATIONSHIP={attribute:"aria-describedby",property:"ariaDescribedByElements"},LABEL_RELATIONSHIP={attribute:"aria-labelledby",property:"ariaLabelledByElements"},CONTROLS_RELATIONSHIP={attribute:"aria-controls",property:"ariaControlsElements"},DESCRIPTION_OWNERSHIP=Symbol.for("@aceshooting/lyra-ui.aria-description-ownership.v1"),LABEL_OWNERSHIP=Symbol.for("@aceshooting/lyra-ui.aria-label-ownership.v1"),CONTROLS_OWNERSHIP=Symbol.for("@aceshooting/lyra-ui.aria-controls-relationship-ownership.v1"),fallbackDescriptionOwnership=new WeakMap,fallbackLabelOwnership=new WeakMap,fallbackControlsOwnership=new WeakMap,descriptionOwnership=sharedRealmRegistry(DESCRIPTION_OWNERSHIP,()=>new WeakMap,fallbackDescriptionOwnership),labelOwnership=sharedRealmRegistry(LABEL_OWNERSHIP,()=>new WeakMap,fallbackLabelOwnership),controlsOwnership=sharedRealmRegistry(CONTROLS_OWNERSHIP,()=>new WeakMap,fallbackControlsOwnership);function relationshipDefinition(relationship){return relationship==="aria-describedby"?DESCRIPTION_RELATIONSHIP:LABEL_RELATIONSHIP}function relationshipOwnership(relationship){return relationship==="aria-describedby"?descriptionOwnership:relationship==="aria-labelledby"?labelOwnership:controlsOwnership}function reflectedRelationshipElements(target,definition){if(!(definition.property in target))return null;try{const reflected=Reflect.get(target,definition.property);return reflected===null?null:[...reflected]}catch{return null}}function relationshipSnapshot(target,definition){return{elements:reflectedRelationshipElements(target,definition),had:target.hasAttribute(definition.attribute),value:target.getAttribute(definition.attribute)}}function setLastApplied(state,definition){state.lastApplied=relationshipSnapshot(state.target,definition),state.lastAppliedDocument=state.target.ownerDocument,state.lastAppliedEndpointRoots=new Map(projectedRelationshipElements(state).map(element=>[element,element.getRootNode()])),state.lastAppliedResolvability=new Map(projectedRelationshipElements(state).map(element=>[element,isIdResolvableFromTarget(state.target,element)])),state.lastAppliedRoot=state.target.getRootNode(),state.lastAppliedUnresolvedBaselineIds=state.baseline.kind==="attribute"?[...asciiWhitespaceTokens(state.baseline.value)].filter(id=>!isIdResolvableIdFromTarget(state.target,id)):[]}function sameElements(first,second){return first===null||second===null?first===second:first.length===second.length&&first.every((element,index)=>element===second[index])}function sameRelationshipSnapshot(first,second){return first.had===second.had&&first.value===second.value&&sameElements(first.elements,second.elements)}function baselineFromSnapshot(snapshot){return snapshot.value===""&&snapshot.elements!==null?{elements:snapshot.elements,kind:"elements"}:{had:snapshot.had,kind:"attribute",value:snapshot.value}}function baselineElements(state){if(state.baseline.kind==="elements")return[...state.baseline.elements];try{return resolveIdReferencesIn(state.target.getRootNode(),state.baseline.value)}catch{return[]}}function relationshipElements(state,position){const elements=[],seen=new Set;for(const record of state.leases.values())if(record.position===position)for(const element of record.elements)seen.has(element)||(seen.add(element),elements.push(element));return elements}function projectedRelationshipElements(state){const elements=[],seen=new Set;for(const element of[...relationshipElements(state,"before"),...baselineElements(state),...relationshipElements(state,"after")])seen.has(element)||(seen.add(element),elements.push(element));return elements}function managedRelationshipElements(state){const elements=[],seen=new Set;for(const element of[...baselineElements(state),...relationshipElements(state,"before"),...relationshipElements(state,"after")])seen.has(element)||(seen.add(element),elements.push(element));return elements}function isIdResolvableFromTarget(target,element){if(!isSingleAsciiWhitespaceToken(element.id))return!1;try{const root=target.getRootNode();return"getElementById"in root&&root.getElementById(element.id)===element}catch{return!1}}function isIdResolvableIdFromTarget(target,id){if(!isSingleAsciiWhitespaceToken(id))return!1;try{const root=target.getRootNode();return"getElementById"in root&&root.getElementById(id)!==null}catch{return!1}}function setReflectedRelationshipElements(state,definition,elements){try{return state.writing+=1,Reflect.set(state.target,definition.property,elements===null?null:[...elements])}catch{return!1}finally{state.writing-=1}}function serializedRelationshipIds(state){const ids=[],seen=new Set,add=id=>{!id||seen.has(id)||(seen.add(id),ids.push(id))};for(const element of relationshipElements(state,"before"))isIdResolvableFromTarget(state.target,element)&&add(element.id);if(state.baseline.kind==="attribute")for(const id of asciiWhitespaceTokens(state.baseline.value))add(id);else for(const element of state.baseline.elements)isIdResolvableFromTarget(state.target,element)&&add(element.id);for(const element of relationshipElements(state,"after"))isIdResolvableFromTarget(state.target,element)&&add(element.id);return ids}function applyLatestRelationshipOwnership(state,definition,ownership){ownership.get(state.target)===state&&applyRelationshipOwnership(state,definition)}function applyRelationshipOwnership(state,definition){const before=relationshipElements(state,"before"),after=relationshipElements(state,"after");if(before.length===0&&after.length===0){restoreRelationshipBaseline(state,definition);return}const elements=projectedRelationshipElements(state),canReflect=definition.property in state.target,needsElementReferences=state.baseline.kind==="elements"||[...before,...after].some(element=>!isIdResolvableFromTarget(state.target,element));if(canReflect&&needsElementReferences&&setReflectedRelationshipElements(state,definition,elements)){setLastApplied(state,definition);return}canReflect&&state.lastApplied.value===""&&setReflectedRelationshipElements(state,definition,null);const ids=serializedRelationshipIds(state);try{state.writing+=1,ids.length>0?state.target.setAttribute(definition.attribute,ids.join(" ")):state.baseline.kind==="attribute"&&state.baseline.had?state.target.setAttribute(definition.attribute,""):state.target.removeAttribute(definition.attribute)}finally{state.writing-=1}setLastApplied(state,definition)}function restoreRelationshipBaseline(state,definition){if(state.baseline.kind==="elements"&&definition.property in state.target&&setReflectedRelationshipElements(state,definition,state.baseline.elements)){setLastApplied(state,definition);return}definition.property in state.target&&state.lastApplied.value===""&&setReflectedRelationshipElements(state,definition,null);try{state.writing+=1,state.baseline.kind==="attribute"&&state.baseline.had?state.target.setAttribute(definition.attribute,state.baseline.value??""):state.target.removeAttribute(definition.attribute)}finally{state.writing-=1}setLastApplied(state,definition)}function adoptExternalRelationshipBaseline(state,definition,force=!1){if(state.writing>0)return!1;const current=relationshipSnapshot(state.target,definition);if(!force&&sameRelationshipSnapshot(current,state.lastApplied))return!1;if(!force&¤t.had===state.lastApplied.had&¤t.value===state.lastApplied.value)try{if(state.target.ownerDocument!==state.lastAppliedDocument||state.target.getRootNode()!==state.lastAppliedRoot||state.lastAppliedUnresolvedBaselineIds.some(id=>isIdResolvableIdFromTarget(state.target,id)))return!1;for(const[element,root]of state.lastAppliedEndpointRoots)if(element.getRootNode()!==root)return!1;for(const[element,wasResolvable]of state.lastAppliedResolvability)if(wasResolvable&&!isIdResolvableFromTarget(state.target,element))return!1}catch{return!1}return state.baseline=baselineFromSnapshot(current),!0}function sameElementLists(first,second){return first.length===second.length&&first.every((element,index)=>element===second[index])}function clearRelationshipObserver(state,observer=state.observer){state.observer===observer&&(state.observerGeneration+=1,state.observer=void 0,state.observerDocument=void 0,state.observerRoot=void 0,state.observerElements=[]);try{observer?.disconnect()}catch{}}function processRelationshipRecords(state,definition,ownership,records){if(ownership.get(state.target)!==state||records.length===0)return;const targetChanged=records.some(record=>record.target===state.target&&record.type==="attributes"&&record.attributeName===definition.attribute);targetChanged&&adoptExternalRelationshipBaseline(state,definition,!0),(state.leases.size>0||targetChanged)&&(applyLatestRelationshipOwnership(state,definition,ownership),observeRelationshipOwnership(state,definition,ownership,!0))}function drainRelationshipObserver(state,definition,ownership){const observer=state.observer;if(!observer)return;let records;try{records=observer.takeRecords()}catch{clearRelationshipObserver(state,observer);return}processRelationshipRecords(state,definition,ownership,records)}function observeRelationshipOwnership(state,definition,ownership,force=!1){if(ownership.get(state.target)!==state||state.leases.size===0)return;let ownerDocument,root;try{ownerDocument=state.target.ownerDocument,root=state.target.getRootNode()}catch{return}const elements=managedRelationshipElements(state);if(!force&&state.observer&&state.observerDocument===ownerDocument&&state.observerRoot===root&&sameElementLists(state.observerElements,elements))return;const previousObserver=state.observer,generation=state.observerGeneration+1;state.observerGeneration=generation,state.observer=void 0,state.observerDocument=void 0,state.observerRoot=void 0,state.observerElements=[];try{previousObserver?.disconnect()}catch{}let Observer;try{Observer=ownerDocument.defaultView?.MutationObserver}catch{return}if(!Observer||ownership.get(state.target)!==state||state.leases.size===0||state.observerGeneration!==generation)return;let observer;try{observer=new Observer(records=>{state.observer!==observer||state.observerGeneration!==generation||ownership.get(state.target)!==state||processRelationshipRecords(state,definition,ownership,records)})}catch{return}if(ownership.get(state.target)!==state||state.leases.size===0||state.observerGeneration!==generation){try{observer.disconnect()}catch{}return}state.observer=observer,state.observerDocument=ownerDocument,state.observerRoot=root,state.observerElements=elements;try{observer.observe(state.target,{attributes:!0,attributeFilter:[definition.attribute]});for(const element of elements)element!==state.target&&observer.observe(element,{attributes:!0,attributeFilter:["id"]})}catch{clearRelationshipObserver(state,observer)}}function isRelationshipCurrent(state,definition){try{if(state.target.ownerDocument!==state.lastAppliedDocument||state.target.getRootNode()!==state.lastAppliedRoot||!sameRelationshipSnapshot(relationshipSnapshot(state.target,definition),state.lastApplied))return!1;for(const[element,root]of state.lastAppliedEndpointRoots)if(element.getRootNode()!==root)return!1;for(const[element,wasResolvable]of state.lastAppliedResolvability)if(isIdResolvableFromTarget(state.target,element)!==wasResolvable)return!1;return!state.lastAppliedUnresolvedBaselineIds.some(id=>isIdResolvableIdFromTarget(state.target,id))}catch{return!1}}function acquireFixedRelationship(target,elements,definition,position){const ownership=relationshipOwnership(definition.attribute);let state=ownership.get(target);if(state)drainRelationshipObserver(state,definition,ownership),adoptExternalRelationshipBaseline(state,definition);else{const initial=relationshipSnapshot(target,definition);state={baseline:baselineFromSnapshot(initial),lastApplied:initial,lastAppliedDocument:target.ownerDocument,lastAppliedEndpointRoots:new Map,lastAppliedResolvability:new Map,lastAppliedRoot:target.getRootNode(),lastAppliedUnresolvedBaselineIds:[],leases:new Map,observerElements:[],observerGeneration:0,target,writing:0},ownership.set(target,state)}const token=Symbol(`aria-${definition.attribute}-owner`),record={elements:[...elements],position};state.leases.set(token,record),applyLatestRelationshipOwnership(state,definition,ownership),observeRelationshipOwnership(state,definition,ownership,!0);let active=!0;return{target,update(nextElements){if(!active||ownership.get(target)!==state)return;if(drainRelationshipObserver(state,definition,ownership),!adoptExternalRelationshipBaseline(state,definition)&&sameElementLists(record.elements,nextElements)&&isRelationshipCurrent(state,definition)){observeRelationshipOwnership(state,definition,ownership);return}record.elements=[...nextElements],applyLatestRelationshipOwnership(state,definition,ownership),observeRelationshipOwnership(state,definition,ownership,!0)},release(){active&&(active=!1,ownership.get(target)===state&&(drainRelationshipObserver(state,definition,ownership),adoptExternalRelationshipBaseline(state,definition),state.leases.delete(token),applyLatestRelationshipOwnership(state,definition,ownership),state.leases.size===0?(clearRelationshipObserver(state),ownership.delete(target)):observeRelationshipOwnership(state,definition,ownership,!0)))}}}function updateExternalDescriptionBaseline(target,update){const state=descriptionOwnership.get(target);if(!state){update();return}drainRelationshipObserver(state,DESCRIPTION_RELATIONSHIP,descriptionOwnership),adoptExternalRelationshipBaseline(state,DESCRIPTION_RELATIONSHIP),update(),adoptExternalRelationshipBaseline(state,DESCRIPTION_RELATIONSHIP),applyLatestRelationshipOwnership(state,DESCRIPTION_RELATIONSHIP,descriptionOwnership),observeRelationshipOwnership(state,DESCRIPTION_RELATIONSHIP,descriptionOwnership,!0)}registerDescriptionBaselineUpdater(updateExternalDescriptionBaseline);function acquireAriaDescription(target,descriptions){return acquireFixedRelationship(target,descriptions,DESCRIPTION_RELATIONSHIP,"after")}function acquireAriaControls(target,controls){return acquireFixedRelationship(target,controls,CONTROLS_RELATIONSHIP,"after")}function clearResolvedRelationshipObserver(state){const observer=state.observer;state.observerGeneration+=1,state.observer=void 0,state.observerDocument=void 0,state.observerRoot=void 0,state.observerWatchesRoot=!1;try{observer?.disconnect()}catch{}}function resolvedRelationshipElements(state){try{return resolveIdReferencesIn(state.host.getRootNode(),state.host.getAttribute(state.relationship))}catch{return[]}}function refreshResolvedRelationship(state){!state.active||!state.target||!state.fixed||state.fixed.update(resolvedRelationshipElements(state))}function observeResolvedRelationship(state){if(!state.active)return;let ownerDocument,root;try{ownerDocument=state.host.ownerDocument,root=state.host.getRootNode()}catch{return}const watchesRoot=root!==state.host&&!asciiWhitespaceTokens(state.host.getAttribute(state.relationship)).next().done;if(state.observer&&state.observerDocument===ownerDocument&&state.observerRoot===root&&state.observerWatchesRoot===watchesRoot)return;const previousObserver=state.observer,generation=state.observerGeneration+1;state.observerGeneration=generation,state.observer=void 0,state.observerDocument=void 0,state.observerRoot=void 0,state.observerWatchesRoot=!1;try{previousObserver?.disconnect()}catch{}let Observer;try{Observer=ownerDocument.defaultView?.MutationObserver}catch{return}if(!Observer||!state.active||state.observerGeneration!==generation)return;let observer;try{observer=new Observer(()=>{!state.active||state.observer!==observer||state.observerGeneration!==generation||(refreshResolvedRelationship(state),observeResolvedRelationship(state))})}catch{return}if(!state.active||state.observerGeneration!==generation){try{observer.disconnect()}catch{}return}state.observer=observer,state.observerDocument=ownerDocument,state.observerRoot=root,state.observerWatchesRoot=watchesRoot;try{observer.observe(state.host,{attributes:!0,attributeFilter:[state.relationship]}),watchesRoot&&observer.observe(root,{attributes:!0,attributeFilter:["id"],childList:!0,subtree:!0})}catch{clearResolvedRelationshipObserver(state)}}function acquireResolvedAriaRelationship(host,initialTarget,relationship){const state={active:!0,host,observerGeneration:0,observerWatchesRoot:!1,relationship,target:null},definition=relationshipDefinition(relationship),update=nextTarget=>{if(state.active){if(state.target!==nextTarget){const previousFixed=state.fixed;state.fixed=void 0,state.target=nextTarget,previousFixed?.release(),nextTarget&&(state.fixed=acquireFixedRelationship(nextTarget,resolvedRelationshipElements(state),definition,"before"))}else refreshResolvedRelationship(state);observeResolvedRelationship(state)}},lease={host,relationship,get target(){return state.target},update,release(){if(!state.active)return;state.active=!1,clearResolvedRelationshipObserver(state);const fixed=state.fixed;state.fixed=void 0,state.target=null,fixed?.release()}};return update(initialTarget),lease}class HostDescriptionController{constructor(host,target,requiredDescriptions=()=>[]){this.host=host,this.target=target,this.requiredDescriptions=requiredDescriptions,host.addController(this)}hostConnected(){this.refresh()}hostUpdated(){this.refresh()}adopted(){this.release(),this.refresh()}hostDisconnected(){this.release()}refresh(){if(!this.host.isConnected)return;const target=this.target();if(this.external?this.external.update(target):this.external=acquireResolvedAriaRelationship(this.host,target,"aria-describedby"),!target){this.required?.release(),this.required=void 0;return}const descriptions=this.requiredDescriptions();if(!descriptions.length){this.required?.release(),this.required=void 0;return}this.required?.target!==target?(this.required?.release(),this.required=acquireAriaDescription(target,descriptions)):this.required.update(descriptions)}release(){this.required?.release(),this.required=void 0,this.external?.release(),this.external=void 0}}export{HostDescriptionController,acquireAriaControls,acquireAriaDescription,acquireResolvedAriaRelationship,syncAriaControlsElements,syncAriaDescribedByElements};
|
|
1
|
+
import{subscribeInheritedAttributes}from"./inherited-attribute-hub.js";import{asciiWhitespaceTokens,isSingleAsciiWhitespaceToken}from"./ascii-whitespace.js";import{sharedRealmRegistry}from"./a11y.js";import{registerDescriptionBaselineUpdater,resolveIdReferencesIn}from"./aria-reflection.js";import{syncAriaControlsElements,syncAriaDescribedByElements}from"./aria-reflection.js";const DESCRIPTION_RELATIONSHIP={attribute:"aria-describedby",property:"ariaDescribedByElements"},LABEL_RELATIONSHIP={attribute:"aria-labelledby",property:"ariaLabelledByElements"},CONTROLS_RELATIONSHIP={attribute:"aria-controls",property:"ariaControlsElements"},DESCRIPTION_OWNERSHIP=Symbol.for("@aceshooting/lyra-ui.aria-description-ownership.v1"),LABEL_OWNERSHIP=Symbol.for("@aceshooting/lyra-ui.aria-label-ownership.v1"),CONTROLS_OWNERSHIP=Symbol.for("@aceshooting/lyra-ui.aria-controls-relationship-ownership.v1"),fallbackDescriptionOwnership=new WeakMap,fallbackLabelOwnership=new WeakMap,fallbackControlsOwnership=new WeakMap,descriptionOwnership=sharedRealmRegistry(DESCRIPTION_OWNERSHIP,()=>new WeakMap,fallbackDescriptionOwnership),labelOwnership=sharedRealmRegistry(LABEL_OWNERSHIP,()=>new WeakMap,fallbackLabelOwnership),controlsOwnership=sharedRealmRegistry(CONTROLS_OWNERSHIP,()=>new WeakMap,fallbackControlsOwnership);function relationshipDefinition(relationship){return relationship==="aria-describedby"?DESCRIPTION_RELATIONSHIP:LABEL_RELATIONSHIP}function relationshipOwnership(relationship){return relationship==="aria-describedby"?descriptionOwnership:relationship==="aria-labelledby"?labelOwnership:controlsOwnership}function reflectedRelationshipElements(target,definition){if(!(definition.property in target))return null;try{const reflected=Reflect.get(target,definition.property);return reflected===null?null:[...reflected]}catch{return null}}function relationshipSnapshot(target,definition){return{elements:reflectedRelationshipElements(target,definition),had:target.hasAttribute(definition.attribute),value:target.getAttribute(definition.attribute)}}function setLastApplied(state,definition){state.lastApplied=relationshipSnapshot(state.target,definition),state.lastAppliedDocument=state.target.ownerDocument,state.lastAppliedEndpointRoots=new Map(projectedRelationshipElements(state).map(element=>[element,element.getRootNode()])),state.lastAppliedResolvability=new Map(projectedRelationshipElements(state).map(element=>[element,isIdResolvableFromTarget(state.target,element)])),state.lastAppliedRoot=state.target.getRootNode(),state.lastAppliedUnresolvedBaselineIds=state.baseline.kind==="attribute"?[...asciiWhitespaceTokens(state.baseline.value)].filter(id=>!isIdResolvableIdFromTarget(state.target,id)):[]}function sameElements(first,second){return first===null||second===null?first===second:first.length===second.length&&first.every((element,index)=>element===second[index])}function sameRelationshipSnapshot(first,second){return first.had===second.had&&first.value===second.value&&sameElements(first.elements,second.elements)}function baselineFromSnapshot(snapshot){return snapshot.value===""&&snapshot.elements!==null?{elements:snapshot.elements,kind:"elements"}:{had:snapshot.had,kind:"attribute",value:snapshot.value}}function baselineElements(state){if(state.baseline.kind==="elements")return[...state.baseline.elements];try{return resolveIdReferencesIn(state.target.getRootNode(),state.baseline.value)}catch{return[]}}function relationshipElements(state,position){const elements=[],seen=new Set;for(const record of state.leases.values())if(record.position===position)for(const element of record.elements)seen.has(element)||(seen.add(element),elements.push(element));return elements}function projectedRelationshipElements(state){const elements=[],seen=new Set;for(const element of[...relationshipElements(state,"before"),...baselineElements(state),...relationshipElements(state,"after")])seen.has(element)||(seen.add(element),elements.push(element));return elements}function managedRelationshipElements(state){const elements=[],seen=new Set;for(const element of[...baselineElements(state),...relationshipElements(state,"before"),...relationshipElements(state,"after")])seen.has(element)||(seen.add(element),elements.push(element));return elements}function isIdResolvableFromTarget(target,element){if(!isSingleAsciiWhitespaceToken(element.id))return!1;try{const root=target.getRootNode();return"getElementById"in root&&root.getElementById(element.id)===element}catch{return!1}}function isIdResolvableIdFromTarget(target,id){if(!isSingleAsciiWhitespaceToken(id))return!1;try{const root=target.getRootNode();return"getElementById"in root&&root.getElementById(id)!==null}catch{return!1}}function setReflectedRelationshipElements(state,definition,elements){try{return state.writing+=1,Reflect.set(state.target,definition.property,elements===null?null:[...elements])}catch{return!1}finally{state.writing-=1}}function serializedRelationshipIds(state){const ids=[],seen=new Set,add=id=>{!id||seen.has(id)||(seen.add(id),ids.push(id))};for(const element of relationshipElements(state,"before"))isIdResolvableFromTarget(state.target,element)&&add(element.id);if(state.baseline.kind==="attribute")for(const id of asciiWhitespaceTokens(state.baseline.value))add(id);else for(const element of state.baseline.elements)isIdResolvableFromTarget(state.target,element)&&add(element.id);for(const element of relationshipElements(state,"after"))isIdResolvableFromTarget(state.target,element)&&add(element.id);return ids}function applyLatestRelationshipOwnership(state,definition,ownership){ownership.get(state.target)===state&&applyRelationshipOwnership(state,definition)}function applyRelationshipOwnership(state,definition){const before=relationshipElements(state,"before"),after=relationshipElements(state,"after");if(before.length===0&&after.length===0){restoreRelationshipBaseline(state,definition);return}const elements=projectedRelationshipElements(state),canReflect=definition.property in state.target,needsElementReferences=state.baseline.kind==="elements"||[...before,...after].some(element=>!isIdResolvableFromTarget(state.target,element));if(canReflect&&needsElementReferences&&setReflectedRelationshipElements(state,definition,elements)){setLastApplied(state,definition);return}canReflect&&state.lastApplied.value===""&&setReflectedRelationshipElements(state,definition,null);const ids=serializedRelationshipIds(state);try{state.writing+=1,ids.length>0?state.target.setAttribute(definition.attribute,ids.join(" ")):state.baseline.kind==="attribute"&&state.baseline.had?state.target.setAttribute(definition.attribute,""):state.target.removeAttribute(definition.attribute)}finally{state.writing-=1}setLastApplied(state,definition)}function restoreRelationshipBaseline(state,definition){if(state.baseline.kind==="elements"&&definition.property in state.target&&setReflectedRelationshipElements(state,definition,state.baseline.elements)){setLastApplied(state,definition);return}definition.property in state.target&&state.lastApplied.value===""&&setReflectedRelationshipElements(state,definition,null);try{state.writing+=1,state.baseline.kind==="attribute"&&state.baseline.had?state.target.setAttribute(definition.attribute,state.baseline.value??""):state.target.removeAttribute(definition.attribute)}finally{state.writing-=1}setLastApplied(state,definition)}function adoptExternalRelationshipBaseline(state,definition,force=!1){if(state.writing>0)return!1;const current=relationshipSnapshot(state.target,definition);if(!force&&sameRelationshipSnapshot(current,state.lastApplied))return!1;if(!force&¤t.had===state.lastApplied.had&¤t.value===state.lastApplied.value)try{if(state.target.ownerDocument!==state.lastAppliedDocument||state.target.getRootNode()!==state.lastAppliedRoot||state.lastAppliedUnresolvedBaselineIds.some(id=>isIdResolvableIdFromTarget(state.target,id)))return!1;for(const[element,root]of state.lastAppliedEndpointRoots)if(element.getRootNode()!==root)return!1;for(const[element,wasResolvable]of state.lastAppliedResolvability)if(wasResolvable&&!isIdResolvableFromTarget(state.target,element))return!1}catch{return!1}return state.baseline=baselineFromSnapshot(current),!0}function sameElementLists(first,second){return first.length===second.length&&first.every((element,index)=>element===second[index])}function clearRelationshipObserver(state,observer=state.observer){state.observer===observer&&(state.observerGeneration+=1,state.observer=void 0,state.observerDocument=void 0,state.observerRoot=void 0,state.observerElements=[]);try{observer?.disconnect()}catch{}}function processRelationshipRecords(state,definition,ownership,records){if(ownership.get(state.target)!==state||records.length===0)return;const targetChanged=records.some(record=>record.target===state.target&&record.type==="attributes"&&record.attributeName===definition.attribute);targetChanged&&adoptExternalRelationshipBaseline(state,definition,!0),(state.leases.size>0||targetChanged)&&(applyLatestRelationshipOwnership(state,definition,ownership),observeRelationshipOwnership(state,definition,ownership,!0))}function drainRelationshipObserver(state,definition,ownership){const observer=state.observer;if(!observer)return;let records;try{records=observer.takeRecords()}catch{clearRelationshipObserver(state,observer);return}processRelationshipRecords(state,definition,ownership,records)}function observeRelationshipOwnership(state,definition,ownership,force=!1){if(ownership.get(state.target)!==state||state.leases.size===0)return;let ownerDocument,root;try{ownerDocument=state.target.ownerDocument,root=state.target.getRootNode()}catch{return}const elements=managedRelationshipElements(state);if(!force&&state.observer&&state.observerDocument===ownerDocument&&state.observerRoot===root&&sameElementLists(state.observerElements,elements))return;const previousObserver=state.observer,generation=state.observerGeneration+1;state.observerGeneration=generation,state.observer=void 0,state.observerDocument=void 0,state.observerRoot=void 0,state.observerElements=[];try{previousObserver?.disconnect()}catch{}let Observer;try{Observer=ownerDocument.defaultView?.MutationObserver}catch{return}if(!Observer||ownership.get(state.target)!==state||state.leases.size===0||state.observerGeneration!==generation)return;let observer;try{observer=new Observer(records=>{state.observer!==observer||state.observerGeneration!==generation||ownership.get(state.target)!==state||processRelationshipRecords(state,definition,ownership,records)})}catch{return}if(ownership.get(state.target)!==state||state.leases.size===0||state.observerGeneration!==generation){try{observer.disconnect()}catch{}return}state.observer=observer,state.observerDocument=ownerDocument,state.observerRoot=root,state.observerElements=elements;try{observer.observe(state.target,{attributes:!0,attributeFilter:[definition.attribute]});for(const element of elements)element!==state.target&&observer.observe(element,{attributes:!0,attributeFilter:["id"]})}catch{clearRelationshipObserver(state,observer)}}function isRelationshipCurrent(state,definition){try{if(state.target.ownerDocument!==state.lastAppliedDocument||state.target.getRootNode()!==state.lastAppliedRoot||!sameRelationshipSnapshot(relationshipSnapshot(state.target,definition),state.lastApplied))return!1;for(const[element,root]of state.lastAppliedEndpointRoots)if(element.getRootNode()!==root)return!1;for(const[element,wasResolvable]of state.lastAppliedResolvability)if(isIdResolvableFromTarget(state.target,element)!==wasResolvable)return!1;return!state.lastAppliedUnresolvedBaselineIds.some(id=>isIdResolvableIdFromTarget(state.target,id))}catch{return!1}}function acquireFixedRelationship(target,elements,definition,position){const ownership=relationshipOwnership(definition.attribute);let state=ownership.get(target);if(state)drainRelationshipObserver(state,definition,ownership),adoptExternalRelationshipBaseline(state,definition);else{const initial=relationshipSnapshot(target,definition);state={baseline:baselineFromSnapshot(initial),lastApplied:initial,lastAppliedDocument:target.ownerDocument,lastAppliedEndpointRoots:new Map,lastAppliedResolvability:new Map,lastAppliedRoot:target.getRootNode(),lastAppliedUnresolvedBaselineIds:[],leases:new Map,observerElements:[],observerGeneration:0,target,writing:0},ownership.set(target,state)}const token=Symbol(`aria-${definition.attribute}-owner`),record={elements:[...elements],position};state.leases.set(token,record),applyLatestRelationshipOwnership(state,definition,ownership),observeRelationshipOwnership(state,definition,ownership,!0);let active=!0;return{target,update(nextElements){if(!active||ownership.get(target)!==state)return;if(drainRelationshipObserver(state,definition,ownership),!adoptExternalRelationshipBaseline(state,definition)&&sameElementLists(record.elements,nextElements)&&isRelationshipCurrent(state,definition)){observeRelationshipOwnership(state,definition,ownership);return}record.elements=[...nextElements],applyLatestRelationshipOwnership(state,definition,ownership),observeRelationshipOwnership(state,definition,ownership,!0)},release(){active&&(active=!1,ownership.get(target)===state&&(drainRelationshipObserver(state,definition,ownership),adoptExternalRelationshipBaseline(state,definition),state.leases.delete(token),applyLatestRelationshipOwnership(state,definition,ownership),state.leases.size===0?(clearRelationshipObserver(state),ownership.delete(target)):observeRelationshipOwnership(state,definition,ownership,!0)))}}}function updateExternalDescriptionBaseline(target,update){const state=descriptionOwnership.get(target);if(!state){update();return}drainRelationshipObserver(state,DESCRIPTION_RELATIONSHIP,descriptionOwnership),adoptExternalRelationshipBaseline(state,DESCRIPTION_RELATIONSHIP),update(),adoptExternalRelationshipBaseline(state,DESCRIPTION_RELATIONSHIP),applyLatestRelationshipOwnership(state,DESCRIPTION_RELATIONSHIP,descriptionOwnership),observeRelationshipOwnership(state,DESCRIPTION_RELATIONSHIP,descriptionOwnership,!0)}registerDescriptionBaselineUpdater(updateExternalDescriptionBaseline);function acquireAriaDescription(target,descriptions){return acquireFixedRelationship(target,descriptions,DESCRIPTION_RELATIONSHIP,"after")}function acquireAriaControls(target,controls){return acquireFixedRelationship(target,controls,CONTROLS_RELATIONSHIP,"after")}function clearResolvedRelationshipObserver(state){const observer=state.observer;state.observerGeneration+=1,state.observer=void 0,state.observerDocument=void 0,state.observerRoot=void 0,state.observerWatchesRoot=!1,state.stopRootObservation?.(),state.stopRootObservation=void 0;try{observer?.disconnect()}catch{}}function resolvedRelationshipElements(state){try{return resolveIdReferencesIn(state.host.getRootNode(),state.host.getAttribute(state.relationship))}catch{return[]}}function refreshResolvedRelationship(state){!state.active||!state.target||!state.fixed||state.fixed.update(resolvedRelationshipElements(state))}function observeResolvedRelationship(state){if(!state.active)return;let ownerDocument,root;try{ownerDocument=state.host.ownerDocument,root=state.host.getRootNode()}catch{return}const watchesRoot=root!==state.host&&!asciiWhitespaceTokens(state.host.getAttribute(state.relationship)).next().done;if(state.observer&&state.observerDocument===ownerDocument&&state.observerRoot===root&&state.observerWatchesRoot===watchesRoot)return;const previousObserver=state.observer,generation=state.observerGeneration+1;state.observerGeneration=generation,state.observer=void 0,state.observerDocument=void 0,state.observerRoot=void 0,state.observerWatchesRoot=!1,state.stopRootObservation?.(),state.stopRootObservation=void 0;try{previousObserver?.disconnect()}catch{}let Observer;try{Observer=ownerDocument.defaultView?.MutationObserver}catch{return}if(!Observer||!state.active||state.observerGeneration!==generation)return;let observer;try{observer=new Observer(()=>{!state.active||state.observer!==observer||state.observerGeneration!==generation||(refreshResolvedRelationship(state),observeResolvedRelationship(state))})}catch{return}if(!state.active||state.observerGeneration!==generation){try{observer.disconnect()}catch{}return}state.observer=observer,state.observerDocument=ownerDocument,state.observerRoot=root,state.observerWatchesRoot=watchesRoot;try{observer.observe(state.host,{attributes:!0,attributeFilter:[state.relationship]}),watchesRoot&&(state.stopRootObservation=subscribeInheritedAttributes(root,Observer,{attributes:["id"],childList:!0,changed:()=>{!state.active||state.observer!==observer||state.observerGeneration!==generation||(refreshResolvedRelationship(state),observeResolvedRelationship(state))}}))}catch{clearResolvedRelationshipObserver(state)}}function acquireResolvedAriaRelationship(host,initialTarget,relationship){const state={active:!0,host,observerGeneration:0,observerWatchesRoot:!1,relationship,target:null},definition=relationshipDefinition(relationship),update=nextTarget=>{if(state.active){if(state.target!==nextTarget){const previousFixed=state.fixed;state.fixed=void 0,state.target=nextTarget,previousFixed?.release(),nextTarget&&(state.fixed=acquireFixedRelationship(nextTarget,resolvedRelationshipElements(state),definition,"before"))}else refreshResolvedRelationship(state);observeResolvedRelationship(state)}},lease={host,relationship,get target(){return state.target},update,release(){if(!state.active)return;state.active=!1,clearResolvedRelationshipObserver(state);const fixed=state.fixed;state.fixed=void 0,state.target=null,fixed?.release()}};return update(initialTarget),lease}class HostDescriptionController{constructor(host,target,requiredDescriptions=()=>[]){this.host=host,this.target=target,this.requiredDescriptions=requiredDescriptions,host.addController(this)}hostConnected(){this.refresh()}hostUpdated(){this.refresh()}adopted(){this.release(),this.refresh()}hostDisconnected(){this.release()}refresh(){if(!this.host.isConnected)return;const target=this.target();if(this.external?this.external.update(target):this.external=acquireResolvedAriaRelationship(this.host,target,"aria-describedby"),!target){this.required?.release(),this.required=void 0;return}const descriptions=this.requiredDescriptions();if(!descriptions.length){this.required?.release(),this.required=void 0;return}this.required?.target!==target?(this.required?.release(),this.required=acquireAriaDescription(target,descriptions)):this.required.update(descriptions)}release(){this.required?.release(),this.required=void 0,this.external?.release(),this.external=void 0}}export{HostDescriptionController,acquireAriaControls,acquireAriaDescription,acquireResolvedAriaRelationship,syncAriaControlsElements,syncAriaDescribedByElements};
|
|
@@ -40,7 +40,7 @@ export declare function withSyntheticCatalogValue<T extends LyraCatalogEntry>(ca
|
|
|
40
40
|
* component-specific behavior stay on the host; catalog normalization, editing state, keyboard
|
|
41
41
|
* transitions, popup ownership, commits, and native/prefixed event relays have one authority.
|
|
42
42
|
*/
|
|
43
|
-
export declare class CatalogPickerController<T extends LyraCatalogEntry>{private readonly host;private readonly options;private readonly popupPosition;private overlay?;private readonly
|
|
43
|
+
export declare class CatalogPickerController<T extends LyraCatalogEntry>{private readonly host;private readonly options;private readonly popupPosition;private overlay?;private readonly popupController;private _activeIndex;private revealPending;private _query;private _open;private _value;private _defaultValue;private valueDirty;private settingDefaultValue;private reflectingDefaultValue;private _listboxHidden;private listboxHideWatcher?;suppressControlEvents:boolean;private readonly typeBuffer;constructor(host:CatalogPickerHost,options:CatalogPickerControllerOptions<T>);private normalizedMemo?;private effectiveMemo?;private searchKeysMemo?;private filteredMemo?;get normalizedCatalog():T[];get closedMode():boolean;private get isReadonly();get effectiveEntries():DisplayCatalogEntry<T>[];get filteredEntries():DisplayCatalogEntry<T>[];get visibleEntries():DisplayCatalogEntry<T>[];
|
|
44
44
|
/** The display label for a committed id, falling back to the raw id when no row claims it.
|
|
45
45
|
* The `!id` short-circuit is behaviour-identical to letting the lookup run -- no row can carry a
|
|
46
46
|
* blank id (see `normalizeCatalog`), so the find would miss and `?? id` would return `''` too --
|
|
@@ -56,4 +56,4 @@ get listboxHidden():boolean;private setListboxHidden;private cancelListboxHideWa
|
|
|
56
56
|
/** A `disabled` row can never be committed -- by pointer or by keyboard -- and activating one
|
|
57
57
|
* emits nothing and changes no state, matching every other declared-non-actionable entry in
|
|
58
58
|
* this library. */
|
|
59
|
-
selectEntry(entry:DisplayCatalogEntry<T>):void;reconcileRows(activeValue:string|undefined,rebaseQuery:boolean,clampMissing?:boolean):void;private typeAhead;private moveIndex;handleTriggerKeyDown(event:KeyboardEvent):void;handleInputKeyDown(event:KeyboardEvent):void;handleInput(event:Event):void;handleInputFocus(event:FocusEvent):void;handleControlFocus(event:FocusEvent):void;handleControlBlur(event:FocusEvent):void;handleComboMouseDown(event:MouseEvent):void;handleListboxMouseDown(event:MouseEvent):void;handleListboxClick(event:MouseEvent):void;get input():HTMLInputElement|null;click():void;focus(options?:FocusOptions):void;blur():void;select():void;setSelectionRange(start:number|null,end:number|null,direction?:'forward'|'backward'|'none'):void;setRangeText(replacement:string,start?:number,end?:number,selectMode?:SelectionMode):void;connected(hasUpdated:boolean):void;disconnected():void;adopted():void;updated(reposition:boolean):void;private containsFocusTarget;private
|
|
59
|
+
selectEntry(entry:DisplayCatalogEntry<T>):void;reconcileRows(activeValue:string|undefined,rebaseQuery:boolean,clampMissing?:boolean):void;private typeAhead;private moveIndex;handleTriggerKeyDown(event:KeyboardEvent):void;handleInputKeyDown(event:KeyboardEvent):void;handleInput(event:Event):void;handleInputFocus(event:FocusEvent):void;handleControlFocus(event:FocusEvent):void;handleControlBlur(event:FocusEvent):void;handleComboMouseDown(event:MouseEvent):void;handleListboxMouseDown(event:MouseEvent):void;handleListboxClick(event:MouseEvent):void;get input():HTMLInputElement|null;click():void;focus(options?:FocusOptions):void;blur():void;select():void;setSelectionRange(start:number|null,end:number|null,direction?:'forward'|'backward'|'none'):void;setRangeText(replacement:string,start?:number,end?:number,selectMode?:SelectionMode):void;connected(hasUpdated:boolean):void;disconnected():void;adopted():void;updated(reposition:boolean):void;private containsFocusTarget;private activatePopupOverlay;private deactivateOverlay;private dismissFromEscape;private syncPopup;}export{};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{setNativeRangeText}from"./native-text-control.js";import{waitForTransitionSettle}from"./css-motion-time.js";import{getOwnDataDescriptor}from"./data-descriptors.js";import{CATALOG_ROW_LIMIT}from"./selection-catalog.js";import{AnchoredPopoverController}from"./anchored-popover-controller.js";import{deferredPlace}from"./anchored-overlay-runtime.js";import{resolveIntlLocale}from"./intl-cache.js";import{prefersReducedMotion}from"./motion.js";import{dispatchNativeEvent,relayNativeEvent}from"./native-event-relay.js";import{activateNonmodalOverlay}from"./nonmodal-overlay-manager.js";import{resolveEffectivePositioningStrategy}from"./positioning-strategy.js";import{TypeAheadBuffer}from"./type-ahead-buffer.js";import{resolveListMove}from"./list-navigation.js";import{DocumentPointerListener}from"./document-pointer.js";const normalizedCatalogs=new WeakMap;function ownDataValue(target,key){const descriptor=getOwnDataDescriptor(target,key);return typeof descriptor=="symbol"?void 0:descriptor.value}function normalizeCatalog(catalog){let frozen;try{if(!Array.isArray(catalog))return[];frozen=Object.isFrozen(catalog)}catch{return[]}const known=frozen?normalizedCatalogs.get(catalog):void 0;if(known)return known;const normalized=[],seen=new Set,length=ownDataValue(catalog,"length"),count=typeof length=="number"?Math.min(length,CATALOG_ROW_LIMIT):0;for(let index=0;index<count;index+=1){const entry=ownDataValue(catalog,String(index));let record,id,label;if(typeof entry=="string")record={id:entry,label:entry},id=label=entry;else if(entry!==null&&typeof entry=="object")record=entry,id=ownDataValue(entry,"id"),label=ownDataValue(entry,"label");else continue;typeof id!="string"||id.trim()===""||typeof label!="string"||label.trim()===""||seen.has(id)||(seen.add(id),normalized.push(record))}return frozen&&normalizedCatalogs.set(catalog,Object.freeze(normalized)),normalized}function withSyntheticCatalogValue(catalog,value){const entries=catalog.map(entry=>({...entry,synthetic:!1}));return catalog.length&&value.trim()!==""&&!catalog.some(entry=>entry.id===value)&&entries.push({id:value,label:value,synthetic:!0}),entries}function filterCatalogEntries(entries,query,locale,fields){const intlLocale=resolveIntlLocale(locale),normalized=query.trim().toLocaleLowerCase(intlLocale);return normalized?entries.filter(entry=>fields(entry).some(value=>value.toLocaleLowerCase(intlLocale).includes(normalized))):[...entries]}class CatalogPickerController{constructor(host,options){this.host=host,this.options=options,this._activeIndex=-1,this.revealPending=!1,this._query="",this._open=!1,this._value="",this._defaultValue="",this.valueDirty=!1,this.settingDefaultValue=!1,this.reflectingDefaultValue=!1,this._listboxHidden=!0,this.suppressControlEvents=!1,this.typeBuffer=new TypeAheadBuffer(host),this.pointer=new DocumentPointerListener(host,event=>{event.composedPath().includes(host)||this.overlay?.dismissBackdrop()}),this.popupPosition=new AnchoredPopoverController((anchor,popup)=>deferredPlace(anchor,popup,{strategy:resolveEffectivePositioningStrategy(this.host,void 0,"fixed")}))}get normalizedCatalog(){const source=this.options.catalog(),memo=this.normalizedMemo;if(memo&&memo.source===source)return memo.rows;const rows=normalizeCatalog(source);return this.normalizedMemo={source,rows},rows}get closedMode(){return this.normalizedCatalog.length>0&&!this.options.allowCustom()}get isReadonly(){return this.options.isReadonly()}get effectiveEntries(){const rows=this.normalizedCatalog,memo=this.effectiveMemo;if(memo&&memo.rows===rows&&memo.value===this._value)return memo.entries;const entries=withSyntheticCatalogValue(rows,this._value);return this.effectiveMemo={rows,value:this._value,entries},entries}get filteredEntries(){const entries=this.effectiveEntries,query=this._query,locale=this.options.locale(),memo=this.filteredMemo;if(memo&&memo.entries===entries&&memo.query===query&&memo.locale===locale)return memo.result;const intlLocale=resolveIntlLocale(locale),needle=query.trim().toLocaleLowerCase(intlLocale);let result;if(!needle)result=[...entries];else{let keys=this.searchKeysMemo;(!keys||keys.entries!==entries||keys.locale!==intlLocale)&&(keys={entries,locale:intlLocale,keys:entries.map(entry=>this.options.searchableFields(entry).map(value=>value.toLocaleLowerCase(intlLocale)))},this.searchKeysMemo=keys);const rowKeys=keys.keys;result=entries.filter((_,index)=>rowKeys[index].some(value=>value.includes(needle)))}return this.filteredMemo={entries,query,locale,result},result}get visibleEntries(){return this.closedMode?this.effectiveEntries:this.filteredEntries}labelFor(id){return id?this.effectiveEntries.find(entry=>entry.id===id)?.label??id:""}get activeIndex(){return this._activeIndex}setActiveIndex(next){if(next===this._activeIndex)return;const old=this._activeIndex;this.options.beforeActiveIndexChange?.(next,old),this._activeIndex=next,this.revealPending=!0,this.options.onStateChange("activeIndex",old)}revealActiveRow(){const listbox=this.host.renderRoot.querySelector('[part="listbox"]'),row=listbox?.querySelector('[part="option"][data-active]');if(!listbox||row?.offsetParent!==listbox)return;const top=row.offsetTop,bottom=top+row.offsetHeight;top<listbox.scrollTop?listbox.scrollTop=top:bottom>listbox.scrollTop+listbox.clientHeight&&(listbox.scrollTop=bottom-listbox.clientHeight)}get query(){return this._query}setQuery(next){if(next===this._query)return;const old=this._query;this._query=next,this.options.afterQueryChange?.(next,old),this.options.onStateChange("query",old)}get open(){return this._open}get listboxHidden(){return this._listboxHidden}setListboxHidden(next){if(next===this._listboxHidden)return;const old=this._listboxHidden;this._listboxHidden=next,this.options.onStateChange("listboxHidden",old)}cancelListboxHideWatch(){this.listboxHideWatcher?.(),this.listboxHideWatcher=void 0}scheduleListboxHide(){this.cancelListboxHideWatch();const listbox=this.host.renderRoot.querySelector('[part="listbox"]'),watch=waitForTransitionSettle(listbox,this.host,{reducedMotion:prefersReducedMotion(this.host)});if(!watch.pending){this.setListboxHidden(!0);return}const cancel=()=>watch.cancel();this.listboxHideWatcher=cancel,watch.finished.then(()=>{this.listboxHideWatcher===cancel&&(this.listboxHideWatcher=void 0,this.setListboxHidden(!0))})}setOpen(next){const liveDisabled=this.host.effectiveDisabled||typeof this.host.matches=="function"&&this.host.matches(":disabled"),resolved=!!next&&!liveDisabled;if(resolved===this._open){resolved||this.deactivateOverlay(!1),next&&!resolved&&this.host.hasAttribute("open")&&this.host.removeAttribute("open");return}const old=this._open;resolved||(this.setActiveIndex(-1),this.deactivateOverlay(!1)),this._open=resolved,resolved?(this.cancelListboxHideWatch(),this.setListboxHidden(!1),this.closedMode&&this.setActiveIndex(this.effectiveEntries.findIndex(entry=>entry.id===this._value&&entry.disabled!==!0))):this.host.updateComplete.then(()=>{this._open||!this.host.isConnected||this.scheduleListboxHide()}),this.options.onStateChange("open",old)}show(){!this._open&&!this.host.effectiveDisabled&&this.setOpen(!0)}hide(){this._open&&this.setOpen(!1)}get value(){return this._value}set value(next){const normalized=next??"";if(this.options.beforeValueChange?.(normalized,this._value),normalized===this._value){this.settingDefaultValue||(this.valueDirty=!0);return}const old=this._value;this.settingDefaultValue||(this.valueDirty=!0),this._value=normalized,this.options.onValueChange(normalized,old)}get defaultValue(){return this._defaultValue}set defaultValue(next){if(this.reflectingDefaultValue)return;const normalized=next??"",old=this._defaultValue;this._defaultValue=normalized,this.reflectDefaultValue(),this.valueDirty||this.restoreLiveValueFromDefault(),this.options.onDefaultValueChange(normalized,old)}resetValue(){this.restoreLiveValueFromDefault()}restoreState(state){this.value=typeof state=="string"?state:""}restoreLiveValueFromDefault(){this.settingDefaultValue=!0;try{this.value=this._defaultValue}finally{this.settingDefaultValue=!1}this.valueDirty=!1}reflectDefaultValue(){this.reflectingDefaultValue=!0;try{this._defaultValue?this.host.setAttribute("value",this._defaultValue):this.host.removeAttribute("value")}finally{this.reflectingDefaultValue=!1}}commitValue(next){if(this.isReadonly)return;const inCatalog=this.normalizedCatalog.some(entry=>entry.id===next);this.value=next,this.hide(),this.options.emitChange({value:next,inCatalog}),this.emitValueEvents({value:next,inCatalog})}emitValueEvents(detail={value:this._value,inCatalog:this.normalizedCatalog.some(entry=>entry.id===this._value)}){dispatchNativeEvent(this.host,"input"),this.options.emitInput(detail),dispatchNativeEvent(this.host,"change")}commitFreeText(){const active=this.filteredEntries[this._activeIndex],useActive=this._activeIndex>=0&&!!active&&active?.disabled!==!0;this.commitValue(useActive?active.id:this._query.trim())}selectEntry(entry){entry.disabled!==!0&&this.commitValue(entry.id)}reconcileRows(activeValue,rebaseQuery,clampMissing=!0){const rows=this.visibleEntries,remapped=activeValue?rows.findIndex(entry=>entry.id===activeValue):-1;this.setActiveIndex(remapped>=0?remapped:clampMissing?Math.min(this._activeIndex,Math.max(-1,rows.length-1)):-1),rebaseQuery&&this.setQuery(this.labelFor(this._value))}typeAhead(event){const{key}=event;if(!this.typeBuffer.accepts(event)||key===" "&&this.typeBuffer.text==="")return!1;key===" "&&event.preventDefault();const locale=this.options.locale();this.typeBuffer.add(key,locale);const rows=this.effectiveEntries,current=this._open?this._activeIndex:rows.findIndex(entry=>entry.id===this._value),index=this.typeBuffer.match(rows,current,row=>row.label,locale,row=>row.disabled!==!0);if(index!==null){const row=rows[index];this._open?this.setActiveIndex(index):this.selectEntry(row)}return!0}moveIndex(rows,event){return resolveListMove(event,{count:rows.length,current:this._activeIndex,orientation:"vertical",wrap:!1,clamp:!0,backwardFromMissing:"first",isAvailable:index=>rows[index]?.disabled!==!0})??-1}handleTriggerKeyDown(event){if(event.isComposing||event.keyCode===229||event.altKey||event.ctrlKey||event.metaKey||this.typeAhead(event))return;const rows=this.effectiveEntries;switch(event.key){case"ArrowDown":if(event.preventDefault(),!this._open)return this.show();this.setActiveIndex(this.moveIndex(rows,event));break;case"ArrowUp":if(event.preventDefault(),!this._open)return this.show();this.setActiveIndex(this.moveIndex(rows,event));break;case"Enter":case" ":if(this._open){event.preventDefault();const active=rows[this._activeIndex];this._activeIndex>=0&&active?this.selectEntry(active):this.hide()}break;case"Home":this._open&&(event.preventDefault(),this.setActiveIndex(this.moveIndex(rows,event)));break;case"End":this._open&&(event.preventDefault(),this.setActiveIndex(this.moveIndex(rows,event)));break}}handleInputKeyDown(event){if(event.isComposing||event.keyCode===229)return;const rows=this.filteredEntries;switch(event.key){case"ArrowDown":if(event.preventDefault(),!this._open)return this.show();this.setActiveIndex(this.moveIndex(rows,event));break;case"ArrowUp":if(event.preventDefault(),!this._open)return this.show();this.setActiveIndex(this.moveIndex(rows,event));break;case"Enter":this._open&&(event.preventDefault(),this.commitFreeText());break;case"Home":this._open&&(event.preventDefault(),this.setActiveIndex(this.moveIndex(rows,event)));break;case"End":this._open&&(event.preventDefault(),this.setActiveIndex(this.moveIndex(rows,event)));break}}handleInput(event){const input=event.currentTarget;if(!input)return;if(this.isReadonly){input.value=this._open?this._query:this.labelFor(this._value),event.stopPropagation();return}this.setQuery(input.value),this.setActiveIndex(-1),this.show();const detail={value:this._value,inCatalog:this.normalizedCatalog.some(entry=>entry.id===this._value)};relayNativeEvent(this.host,event),this.options.emitInput(detail)}handleInputFocus(event){if(this.suppressControlEvents){event.stopPropagation();return}this._open||this.setQuery(this.labelFor(this._value)),this.show(),this.handleControlFocus(event)}handleControlFocus(event){if(this.suppressControlEvents){event.stopPropagation();return}if(this.containsFocusTarget(event.relatedTarget)){event.stopPropagation();return}this.options.onControlFocus?.(event),relayNativeEvent(this.host,event)}handleControlBlur(event){if(this.suppressControlEvents){event.stopPropagation();return}if(this.containsFocusTarget(event.relatedTarget)){event.stopPropagation();return}this.options.onControlBlur?.(event),this.hide(),relayNativeEvent(this.host,event)}handleComboMouseDown(event){this.host.effectiveDisabled||event.composedPath()[0]!==this.input&&(event.preventDefault(),this.input?.focus())}handleListboxMouseDown(event){event.target.closest('[part="option"]')&&event.preventDefault()}handleListboxClick(event){if(this.host.effectiveDisabled)return;const value=event.target.closest('[part="option"]')?.dataset.value;if(value===void 0)return;const entry=this.visibleEntries.find(candidate=>candidate.id===value);entry&&this.selectEntry(entry)}get input(){return this.host.renderRoot?.querySelector('[part="combobox-input"]')??null}click(){if(this.host.effectiveDisabled)return;const trigger=this.host.renderRoot?.querySelector('[part="trigger"]');if(trigger){trigger.click();return}const input=this.input;this.options.forwardFreeInputClick&&input?.click(),input?.focus()}focus(options){if(this.host.effectiveDisabled)return;this.host.renderRoot?.querySelector('[part="trigger"], [part="combobox-input"]')?.focus(options)}blur(){this.host.renderRoot?.querySelector('[part="trigger"], [part="combobox-input"]')?.blur()}select(){this.input?.select()}setSelectionRange(start,end,direction){this.input?.setSelectionRange(start,end,direction)}setRangeText(replacement,start,end,selectMode){const input=this.input;input&&(setNativeRangeText(input,replacement,start,end,selectMode),this.setQuery(input.value),this.setActiveIndex(-1),this.value=input.value)}connected(hasUpdated){hasUpdated&&this._open&&queueMicrotask(()=>this.syncPopup())}disconnected(){this.typeBuffer.clear(),this.popupPosition.disconnect(),this.deactivateOverlay(!1),this.cancelListboxHideWatch(),this.setListboxHidden(!0),this.setOpen(!1)}adopted(){this.typeBuffer.clear(),this.popupPosition.disconnect(),this.unbindDocumentPointer(),this.overlay?.suspend(),this._open&&queueMicrotask(()=>this.syncPopup())}updated(reposition){reposition&&this.syncPopup(),this.revealPending&&this._open&&this.revealActiveRow(),this.revealPending=!1}containsFocusTarget(target){if(this.options.containsFocusTarget)return this.options.containsFocusTarget(target);if(!target||typeof target.nodeType!="number")return!1;const node=target;return this.host.renderRoot.contains(node)||this.host.contains(node)}bindDocumentPointer(){this.host.isConnected&&this.pointer.bind()}unbindDocumentPointer(){this.pointer.unbind()}activatePopupOverlay(){if(this.overlay?.isActive()){this.overlay.resume();return}this.overlay=activateNonmodalOverlay({host:this.host,panel:()=>this.host.renderRoot.querySelector('[part="listbox"]')??null,onEscape:()=>this.dismissFromEscape(),onBackdrop:()=>this.hide()})}deactivateOverlay(restoreFocus){const overlay=this.overlay;this.overlay=void 0,overlay?.deactivate({restoreFocus}),this.unbindDocumentPointer()}dismissFromEscape(){this._open&&(this.closedMode||this.setQuery(this.labelFor(this._value)),this.deactivateOverlay(!0),this.setOpen(!1))}syncPopup(){if(this.popupPosition.disconnect(),!this._open||!this.host.isConnected){this.deactivateOverlay(!1);return}this.activatePopupOverlay(),this.bindDocumentPointer();const anchor=this.host.renderRoot.querySelector(this.closedMode?'[part="trigger"]':'[part="combobox"]'),listbox=this.host.renderRoot.querySelector('[part="listbox"]');anchor&&listbox&&this.popupPosition.reposition(anchor,listbox)}}export{CatalogPickerController,filterCatalogEntries,normalizeCatalog,withSyntheticCatalogValue};
|
|
1
|
+
import{setNativeRangeText}from"./native-text-control.js";import{waitForTransitionSettle}from"./css-motion-time.js";import{getOwnDataDescriptor}from"./data-descriptors.js";import{CATALOG_ROW_LIMIT}from"./selection-catalog.js";import{AnchoredPopoverController}from"./anchored-popover-controller.js";import{deferredPlace}from"./anchored-overlay-runtime.js";import{resolveIntlLocale}from"./intl-cache.js";import{prefersReducedMotion}from"./motion.js";import{dispatchNativeEvent,relayNativeEvent}from"./native-event-relay.js";import{activateNonmodalOverlay}from"./nonmodal-overlay-manager.js";import{resolveEffectivePositioningStrategy}from"./positioning-strategy.js";import{TypeAheadBuffer}from"./type-ahead-buffer.js";import{resolveListMove}from"./list-navigation.js";import{PopupController}from"./popup-controller.js";const normalizedCatalogs=new WeakMap;function ownDataValue(target,key){const descriptor=getOwnDataDescriptor(target,key);return typeof descriptor=="symbol"?void 0:descriptor.value}function ownDataCopy(entry){const copy={};let keys=[];try{keys=Object.keys(entry)}catch{}for(const key of keys){const descriptor=getOwnDataDescriptor(entry,key);typeof descriptor!="symbol"&&(copy[key]=descriptor.value)}return Object.freeze(copy)}function normalizeCatalog(catalog){let frozen;try{if(!Array.isArray(catalog))return[];frozen=Object.isFrozen(catalog)}catch{return[]}const known=frozen?normalizedCatalogs.get(catalog):void 0;if(known)return known;const normalized=[],seen=new Set,length=ownDataValue(catalog,"length"),count=typeof length=="number"?Math.min(length,CATALOG_ROW_LIMIT):0;for(let index=0;index<count;index+=1){const entry=ownDataValue(catalog,String(index));let record,id,label;if(typeof entry=="string")record={id:entry,label:entry},id=label=entry;else if(entry!==null&&typeof entry=="object")record=ownDataCopy(entry),id=ownDataValue(entry,"id"),label=ownDataValue(entry,"label");else continue;typeof id!="string"||id.trim()===""||typeof label!="string"||label.trim()===""||seen.has(id)||(seen.add(id),normalized.push(record))}return frozen&&normalizedCatalogs.set(catalog,Object.freeze(normalized)),normalized}function withSyntheticCatalogValue(catalog,value){const entries=catalog.map(entry=>({...entry,synthetic:!1}));return catalog.length&&value.trim()!==""&&!catalog.some(entry=>entry.id===value)&&entries.push({id:value,label:value,synthetic:!0}),entries}function filterCatalogEntries(entries,query,locale,fields){const intlLocale=resolveIntlLocale(locale),normalized=query.trim().toLocaleLowerCase(intlLocale);return normalized?entries.filter(entry=>fields(entry).some(value=>value.toLocaleLowerCase(intlLocale).includes(normalized))):[...entries]}class CatalogPickerController{constructor(host,options){this.host=host,this.options=options,this._activeIndex=-1,this.revealPending=!1,this._query="",this._open=!1,this._value="",this._defaultValue="",this.valueDirty=!1,this.settingDefaultValue=!1,this.reflectingDefaultValue=!1,this._listboxHidden=!0,this.suppressControlEvents=!1,this.typeBuffer=new TypeAheadBuffer(host),this.popupController=new PopupController({host,onPointer:event=>{event.composedPath().includes(host)||this.overlay?.dismissBackdrop()}}),this.popupPosition=new AnchoredPopoverController((anchor,popup)=>deferredPlace(anchor,popup,{strategy:resolveEffectivePositioningStrategy(this.host,void 0,"fixed")}))}get normalizedCatalog(){const source=this.options.catalog(),memo=this.normalizedMemo;if(memo&&memo.source===source)return memo.rows;const rows=normalizeCatalog(source);return this.normalizedMemo={source,rows},rows}get closedMode(){return this.normalizedCatalog.length>0&&!this.options.allowCustom()}get isReadonly(){return this.options.isReadonly()}get effectiveEntries(){const rows=this.normalizedCatalog,memo=this.effectiveMemo;if(memo&&memo.rows===rows&&memo.value===this._value)return memo.entries;const entries=withSyntheticCatalogValue(rows,this._value);return this.effectiveMemo={rows,value:this._value,entries},entries}get filteredEntries(){const entries=this.effectiveEntries,query=this._query,locale=this.options.locale(),memo=this.filteredMemo;if(memo&&memo.entries===entries&&memo.query===query&&memo.locale===locale)return memo.result;const intlLocale=resolveIntlLocale(locale),needle=query.trim().toLocaleLowerCase(intlLocale);let result;if(!needle)result=[...entries];else{let keys=this.searchKeysMemo;(!keys||keys.entries!==entries||keys.locale!==intlLocale)&&(keys={entries,locale:intlLocale,keys:entries.map(entry=>this.options.searchableFields(entry).map(value=>value.toLocaleLowerCase(intlLocale)))},this.searchKeysMemo=keys);const rowKeys=keys.keys;result=entries.filter((_,index)=>rowKeys[index].some(value=>value.includes(needle)))}return this.filteredMemo={entries,query,locale,result},result}get visibleEntries(){return this.closedMode?this.effectiveEntries:this.filteredEntries}labelFor(id){return id?this.effectiveEntries.find(entry=>entry.id===id)?.label??id:""}get activeIndex(){return this._activeIndex}setActiveIndex(next){if(next===this._activeIndex)return;const old=this._activeIndex;this.options.beforeActiveIndexChange?.(next,old),this._activeIndex=next,this.revealPending=!0,this.options.onStateChange("activeIndex",old)}revealActiveRow(){const listbox=this.host.renderRoot.querySelector('[part="listbox"]'),row=listbox?.querySelector('[part="option"][data-active]');if(!listbox||row?.offsetParent!==listbox)return;const top=row.offsetTop,bottom=top+row.offsetHeight;top<listbox.scrollTop?listbox.scrollTop=top:bottom>listbox.scrollTop+listbox.clientHeight&&(listbox.scrollTop=bottom-listbox.clientHeight)}get query(){return this._query}setQuery(next){if(next===this._query)return;const old=this._query;this._query=next,this.options.afterQueryChange?.(next,old),this.options.onStateChange("query",old)}get open(){return this._open}get listboxHidden(){return this._listboxHidden}setListboxHidden(next){if(next===this._listboxHidden)return;const old=this._listboxHidden;this._listboxHidden=next,this.options.onStateChange("listboxHidden",old)}cancelListboxHideWatch(){this.listboxHideWatcher?.(),this.listboxHideWatcher=void 0}scheduleListboxHide(){this.cancelListboxHideWatch();const listbox=this.host.renderRoot.querySelector('[part="listbox"]'),watch=waitForTransitionSettle(listbox,this.host,{reducedMotion:prefersReducedMotion(this.host)});if(!watch.pending){this.setListboxHidden(!0);return}const cancel=()=>watch.cancel();this.listboxHideWatcher=cancel,watch.finished.then(()=>{this.listboxHideWatcher===cancel&&(this.listboxHideWatcher=void 0,this.setListboxHidden(!0))})}setOpen(next){const liveDisabled=this.host.effectiveDisabled||typeof this.host.matches=="function"&&this.host.matches(":disabled"),resolved=!!next&&!liveDisabled;if(resolved===this._open){resolved||this.deactivateOverlay(!1),next&&!resolved&&this.host.hasAttribute("open")&&this.host.removeAttribute("open");return}const old=this._open;resolved||(this.setActiveIndex(-1),this.deactivateOverlay(!1)),this._open=resolved,resolved?(this.cancelListboxHideWatch(),this.setListboxHidden(!1),this.closedMode&&this.setActiveIndex(this.effectiveEntries.findIndex(entry=>entry.id===this._value&&entry.disabled!==!0))):this.host.updateComplete.then(()=>{this._open||!this.host.isConnected||this.scheduleListboxHide()}),this.options.onStateChange("open",old)}show(){!this._open&&!this.host.effectiveDisabled&&this.setOpen(!0)}hide(){this._open&&this.setOpen(!1)}get value(){return this._value}set value(next){const normalized=next??"";if(this.options.beforeValueChange?.(normalized,this._value),normalized===this._value){this.settingDefaultValue||(this.valueDirty=!0);return}const old=this._value;this.settingDefaultValue||(this.valueDirty=!0),this._value=normalized,this.options.onValueChange(normalized,old)}get defaultValue(){return this._defaultValue}set defaultValue(next){if(this.reflectingDefaultValue)return;const normalized=next??"",old=this._defaultValue;this._defaultValue=normalized,this.reflectDefaultValue(),this.valueDirty||this.restoreLiveValueFromDefault(),this.options.onDefaultValueChange(normalized,old)}resetValue(){this.restoreLiveValueFromDefault()}restoreState(state){this.value=typeof state=="string"?state:""}restoreLiveValueFromDefault(){this.settingDefaultValue=!0;try{this.value=this._defaultValue}finally{this.settingDefaultValue=!1}this.valueDirty=!1}reflectDefaultValue(){this.reflectingDefaultValue=!0;try{this._defaultValue?this.host.setAttribute("value",this._defaultValue):this.host.removeAttribute("value")}finally{this.reflectingDefaultValue=!1}}commitValue(next){if(this.isReadonly)return;const inCatalog=this.normalizedCatalog.some(entry=>entry.id===next);this.value=next,this.hide(),this.options.emitChange({value:next,inCatalog}),this.emitValueEvents({value:next,inCatalog})}emitValueEvents(detail={value:this._value,inCatalog:this.normalizedCatalog.some(entry=>entry.id===this._value)}){dispatchNativeEvent(this.host,"input"),this.options.emitInput(detail),dispatchNativeEvent(this.host,"change")}commitFreeText(){const active=this.filteredEntries[this._activeIndex],useActive=this._activeIndex>=0&&!!active&&active?.disabled!==!0;this.commitValue(useActive?active.id:this._query.trim())}selectEntry(entry){entry.disabled!==!0&&this.commitValue(entry.id)}reconcileRows(activeValue,rebaseQuery,clampMissing=!0){const rows=this.visibleEntries,remapped=activeValue?rows.findIndex(entry=>entry.id===activeValue):-1;this.setActiveIndex(remapped>=0?remapped:clampMissing?Math.min(this._activeIndex,Math.max(-1,rows.length-1)):-1),rebaseQuery&&this.setQuery(this.labelFor(this._value))}typeAhead(event){const{key}=event;if(!this.typeBuffer.accepts(event)||key===" "&&this.typeBuffer.text==="")return!1;key===" "&&event.preventDefault();const locale=this.options.locale();this.typeBuffer.add(key,locale);const rows=this.effectiveEntries,current=this._open?this._activeIndex:rows.findIndex(entry=>entry.id===this._value),index=this.typeBuffer.match(rows,current,row=>row.label,locale,row=>row.disabled!==!0);if(index!==null){const row=rows[index];this._open?this.setActiveIndex(index):this.selectEntry(row)}return!0}moveIndex(rows,event){return resolveListMove(event,{count:rows.length,current:this._activeIndex,orientation:"vertical",wrap:!1,clamp:!0,backwardFromMissing:"first",isAvailable:index=>rows[index]?.disabled!==!0})??-1}handleTriggerKeyDown(event){if(event.isComposing||event.keyCode===229||event.altKey||event.ctrlKey||event.metaKey||this.typeAhead(event))return;const rows=this.effectiveEntries;switch(event.key){case"ArrowDown":if(event.preventDefault(),!this._open)return this.show();this.setActiveIndex(this.moveIndex(rows,event));break;case"ArrowUp":if(event.preventDefault(),!this._open)return this.show();this.setActiveIndex(this.moveIndex(rows,event));break;case"Enter":case" ":if(this._open){event.preventDefault();const active=rows[this._activeIndex];this._activeIndex>=0&&active?this.selectEntry(active):this.hide()}break;case"Home":this._open&&(event.preventDefault(),this.setActiveIndex(this.moveIndex(rows,event)));break;case"End":this._open&&(event.preventDefault(),this.setActiveIndex(this.moveIndex(rows,event)));break}}handleInputKeyDown(event){if(event.isComposing||event.keyCode===229)return;const rows=this.filteredEntries;switch(event.key){case"ArrowDown":if(event.preventDefault(),!this._open)return this.show();this.setActiveIndex(this.moveIndex(rows,event));break;case"ArrowUp":if(event.preventDefault(),!this._open)return this.show();this.setActiveIndex(this.moveIndex(rows,event));break;case"Enter":this._open&&(event.preventDefault(),this.commitFreeText());break;case"Home":this._open&&(event.preventDefault(),this.setActiveIndex(this.moveIndex(rows,event)));break;case"End":this._open&&(event.preventDefault(),this.setActiveIndex(this.moveIndex(rows,event)));break}}handleInput(event){const input=event.currentTarget;if(!input)return;if(this.isReadonly){input.value=this._open?this._query:this.labelFor(this._value),event.stopPropagation();return}this.setQuery(input.value),this.setActiveIndex(-1),this.show();const detail={value:this._value,inCatalog:this.normalizedCatalog.some(entry=>entry.id===this._value)};relayNativeEvent(this.host,event),this.options.emitInput(detail)}handleInputFocus(event){if(this.suppressControlEvents){event.stopPropagation();return}this._open||this.setQuery(this.labelFor(this._value)),this.show(),this.handleControlFocus(event)}handleControlFocus(event){if(this.suppressControlEvents){event.stopPropagation();return}if(this.containsFocusTarget(event.relatedTarget)){event.stopPropagation();return}this.options.onControlFocus?.(event),relayNativeEvent(this.host,event)}handleControlBlur(event){if(this.suppressControlEvents){event.stopPropagation();return}if(this.containsFocusTarget(event.relatedTarget)){event.stopPropagation();return}this.options.onControlBlur?.(event),this.hide(),relayNativeEvent(this.host,event)}handleComboMouseDown(event){this.host.effectiveDisabled||event.composedPath()[0]!==this.input&&(event.preventDefault(),this.input?.focus())}handleListboxMouseDown(event){event.target.closest('[part="option"]')&&event.preventDefault()}handleListboxClick(event){if(this.host.effectiveDisabled)return;const value=event.target.closest('[part="option"]')?.dataset.value;if(value===void 0)return;const entry=this.visibleEntries.find(candidate=>candidate.id===value);entry&&this.selectEntry(entry)}get input(){return this.host.renderRoot?.querySelector('[part="combobox-input"]')??null}click(){if(this.host.effectiveDisabled)return;const trigger=this.host.renderRoot?.querySelector('[part="trigger"]');if(trigger){trigger.click();return}const input=this.input;this.options.forwardFreeInputClick&&input?.click(),input?.focus()}focus(options){if(this.host.effectiveDisabled)return;this.host.renderRoot?.querySelector('[part="trigger"], [part="combobox-input"]')?.focus(options)}blur(){this.host.renderRoot?.querySelector('[part="trigger"], [part="combobox-input"]')?.blur()}select(){this.input?.select()}setSelectionRange(start,end,direction){this.input?.setSelectionRange(start,end,direction)}setRangeText(replacement,start,end,selectMode){const input=this.input;input&&(setNativeRangeText(input,replacement,start,end,selectMode),this.setQuery(input.value),this.setActiveIndex(-1),this.value=input.value)}connected(hasUpdated){hasUpdated&&this._open&&queueMicrotask(()=>this.syncPopup())}disconnected(){this.typeBuffer.clear(),this.popupPosition.disconnect(),this.deactivateOverlay(!1),this.cancelListboxHideWatch(),this.setListboxHidden(!0),this.setOpen(!1)}adopted(){this.typeBuffer.clear(),this.popupPosition.disconnect(),this.popupController.unbindPointer(),this.overlay?.suspend(),this._open&&queueMicrotask(()=>this.syncPopup())}updated(reposition){reposition&&this.syncPopup(),this.revealPending&&this._open&&this.revealActiveRow(),this.revealPending=!1}containsFocusTarget(target){if(this.options.containsFocusTarget)return this.options.containsFocusTarget(target);if(!target||typeof target.nodeType!="number")return!1;const node=target;return this.host.renderRoot.contains(node)||this.host.contains(node)}activatePopupOverlay(){if(this.overlay?.isActive()){this.overlay.resume();return}this.overlay=activateNonmodalOverlay({host:this.host,panel:()=>this.host.renderRoot.querySelector('[part="listbox"]')??null,onEscape:()=>this.dismissFromEscape(),onBackdrop:()=>this.hide()})}deactivateOverlay(restoreFocus){const overlay=this.overlay;this.overlay=void 0,overlay?.deactivate({restoreFocus}),this.popupController.unbindPointer()}dismissFromEscape(){this._open&&(this.closedMode||this.setQuery(this.labelFor(this._value)),this.deactivateOverlay(!0),this.setOpen(!1))}syncPopup(){if(this.popupPosition.disconnect(),!this._open||!this.host.isConnected){this.deactivateOverlay(!1);return}this.activatePopupOverlay(),this.popupController.bindPointer();const anchor=this.host.renderRoot.querySelector(this.closedMode?'[part="trigger"]':'[part="combobox"]'),listbox=this.host.renderRoot.querySelector('[part="listbox"]');anchor&&listbox&&this.popupPosition.reposition(anchor,listbox)}}export{CatalogPickerController,filterCatalogEntries,normalizeCatalog,withSyntheticCatalogValue};
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The two parent walks of the composed tree, shared by locale, direction and theme observation.
|
|
3
|
+
* Shapes are checked structurally rather than with `instanceof`, because a host adopted into an
|
|
4
|
+
* iframe keeps nodes whose constructors belong to another realm.
|
|
5
|
+
*/
|
|
6
|
+
/** The slot an element or text node is assigned to, when its shadow root exposes one. Closed roots
|
|
7
|
+
* hide it. */
|
|
8
|
+
export declare function assignedSlotOf(element:Node):Element|null;
|
|
9
|
+
/** The DOM-tree parent, continuing at the host of a shadow root. `lang`/`locale` inherit this way. */
|
|
10
|
+
export declare function domParentElement(element:Element):Element|null;
|
|
11
|
+
/** The flattened-tree parent: an assigned slot first. CSS properties (direction, theme tokens)
|
|
12
|
+
* inherit this way. */
|
|
13
|
+
export declare function flattenedParentElement(element:Element):Element|null;
|
|
14
|
+
/** Whether `candidate` is `container` or inside it along the flattened tree. */
|
|
15
|
+
export declare function composedContains(container:Element,candidate:Element|null):boolean;
|
|
16
|
+
/** The element's owner window: `null` for a document without a browsing context, `undefined` when
|
|
17
|
+
* reading it throws (a discarded or hostile owner document). */
|
|
18
|
+
export declare function ownerView(host:Element):(Window&typeof globalThis)|null|undefined;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
function isElementLike(candidate){return candidate!==null&&typeof candidate=="object"&&typeof candidate.getAttribute=="function"}function shadowRootHost(root){const candidate=root.host;return root.nodeType===11&&isElementLike(candidate)?candidate:null}function assignedSlotOf(element){const candidate=element.assignedSlot;return isElementLike(candidate)?candidate:null}function domParentElement(element){return element.parentElement??shadowRootHost(element.getRootNode())}function flattenedParentElement(element){return assignedSlotOf(element)??domParentElement(element)}function ownerView(host){try{return host.ownerDocument.defaultView}catch{return}}export{assignedSlotOf,domParentElement,flattenedParentElement,ownerView};
|
|
1
|
+
function isElementLike(candidate){return candidate!==null&&typeof candidate=="object"&&typeof candidate.getAttribute=="function"}function shadowRootHost(root){const candidate=root.host;return root.nodeType===11&&isElementLike(candidate)?candidate:null}function assignedSlotOf(element){const candidate=element.assignedSlot;return isElementLike(candidate)?candidate:null}function domParentElement(element){return element.parentElement??shadowRootHost(element.getRootNode())}function flattenedParentElement(element){return assignedSlotOf(element)??domParentElement(element)}function composedContains(container,candidate){let current=candidate;for(;current;){if(current===container)return!0;current=flattenedParentElement(current)}return!1}function ownerView(host){try{return host.ownerDocument.defaultView}catch{return}}export{assignedSlotOf,composedContains,domParentElement,flattenedParentElement,ownerView};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
const COPY_FEEDBACK_MS=1500;export{COPY_FEEDBACK_MS};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
const FALLBACK_FONT_SIZE_PX=16,CSS_LENGTH_RE
|
|
1
|
+
import{CSS_NUMBER_SOURCE}from"./css-number.js";const FALLBACK_FONT_SIZE_PX=16,CSS_LENGTH_RE=new RegExp(`^(${CSS_NUMBER_SOURCE})(px|rem|em|vw|vh|%)?$`,"i");function fontSizePx(element,view){const size=Number.parseFloat(view.getComputedStyle(element).fontSize);return Number.isFinite(size)&&size>0?size:FALLBACK_FONT_SIZE_PX}function resolveCssLength(value,options){if(value==null)return;if(typeof value=="number")return Number.isFinite(value)?value:void 0;const match=CSS_LENGTH_RE.exec(value.trim());if(match===null)return;const length=Number.parseFloat(match[1]);if(!Number.isFinite(length))return;const host=options?.host,ownerDocument=host?.ownerDocument??(typeof document>"u"?void 0:document),ownerWindow=ownerDocument?.defaultView;switch(match[2]?.toLowerCase()){case"rem":return!ownerDocument||!ownerWindow?void 0:length*fontSizePx(ownerDocument.documentElement,ownerWindow);case"em":return!ownerDocument||!ownerWindow?void 0:length*fontSizePx(host&&ownerWindow.getComputedStyle(host).fontSize?host:ownerDocument.documentElement,ownerWindow);case"%":{const base=options?.percentBase;return typeof base=="number"&&Number.isFinite(base)?length/100*base:void 0}case"vw":case"vh":{const basis=options?.viewportBasis??ownerWindow;if(!basis)return;const dimension=match[2].toLowerCase()==="vw"?"innerWidth"in basis?basis.innerWidth:basis.inlineSize:"innerHeight"in basis?basis.innerHeight:basis.blockSize;return Number.isFinite(dimension)?length/100*dimension:void 0}default:return length}}export{resolveCssLength};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
function parseCssTime(value){const trimmed=value.trim(),parsed=trimmed.endsWith("ms")?Number.parseFloat(trimmed):trimmed.endsWith("s")?Number.parseFloat(trimmed)*1e3:0;return Number.isFinite(parsed)?parsed:0}function maxCssTime(value){return Math.max(0,...value.split(",").map(parseCssTime))}function waitForTransitionSettle(surface,host,options={}){const view=host.ownerDocument.defaultView;if(!surface||!view||options.reducedMotion)return{pending:!1,finished:Promise.resolve(),cancel:()=>{}};const computed=view.getComputedStyle(surface),transitionMs=maxCssTime(computed.transitionDuration)+maxCssTime(computed.transitionDelay),animationMs=options.includeAnimation?maxCssTime(computed.animationDuration)+maxCssTime(computed.animationDelay):0,durationMs=Math.max(transitionMs,animationMs);if(durationMs<=0)return{pending:!1,finished:Promise.resolve(),cancel:()=>{}};let finish=()=>{};return{pending:!0,finished:new Promise(resolve=>{let settled=!1,timeout;const onEnd=event=>{event.target===surface&&finish()};finish=()=>{settled||(settled=!0,timeout!==void 0&&view.clearTimeout(timeout),surface.removeEventListener("transitionend",onEnd),surface.removeEventListener("transitioncancel",onEnd),surface.removeEventListener("animationend",onEnd),surface.removeEventListener("animationcancel",onEnd),resolve())},surface.addEventListener("transitionend",onEnd),surface.addEventListener("transitioncancel",onEnd),options.includeAnimation&&(surface.addEventListener("animationend",onEnd),surface.addEventListener("animationcancel",onEnd)),timeout=view.setTimeout(finish,durationMs+50)}),cancel:()=>finish()}}const CSS_TIME_TOKEN
|
|
1
|
+
import{CSS_NUMBER_SOURCE}from"./css-number.js";function parseCssTime(value){const trimmed=value.trim(),parsed=trimmed.endsWith("ms")?Number.parseFloat(trimmed):trimmed.endsWith("s")?Number.parseFloat(trimmed)*1e3:0;return Number.isFinite(parsed)?parsed:0}function maxCssTime(value){return Math.max(0,...value.split(",").map(parseCssTime))}function waitForTransitionSettle(surface,host,options={}){const view=host.ownerDocument.defaultView;if(!surface||!view||options.reducedMotion)return{pending:!1,finished:Promise.resolve(),cancel:()=>{}};const computed=view.getComputedStyle(surface),transitionMs=maxCssTime(computed.transitionDuration)+maxCssTime(computed.transitionDelay),animationMs=options.includeAnimation?maxCssTime(computed.animationDuration)+maxCssTime(computed.animationDelay):0,durationMs=Math.max(transitionMs,animationMs);if(durationMs<=0)return{pending:!1,finished:Promise.resolve(),cancel:()=>{}};let finish=()=>{};return{pending:!0,finished:new Promise(resolve=>{let settled=!1,timeout;const onEnd=event=>{event.target===surface&&finish()};finish=()=>{settled||(settled=!0,timeout!==void 0&&view.clearTimeout(timeout),surface.removeEventListener("transitionend",onEnd),surface.removeEventListener("transitioncancel",onEnd),surface.removeEventListener("animationend",onEnd),surface.removeEventListener("animationcancel",onEnd),resolve())},surface.addEventListener("transitionend",onEnd),surface.addEventListener("transitioncancel",onEnd),options.includeAnimation&&(surface.addEventListener("animationend",onEnd),surface.addEventListener("animationcancel",onEnd)),timeout=view.setTimeout(finish,durationMs+50)}),cancel:()=>finish()}}const CSS_TIME_TOKEN=new RegExp(`^(${CSS_NUMBER_SOURCE}(?:e[+-]?\\d+)?)(ms|s)(?:\\s+(.*))?$`,"i");function parseCssTimeToken(value){const match=CSS_TIME_TOKEN.exec(value.trim()),ms=match&&Number(match[1])*(match[2].toLowerCase()==="s"?1e3:1);return match&&Number.isFinite(ms)?{ms,rest:match[3]?.trim()??""}:void 0}export{maxCssTime,parseCssTime,parseCssTimeToken,waitForTransitionSettle};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
const CSS_NUMBER_SOURCE="[+-]?(?:\\d+(?:\\.\\d+)?|\\.\\d+)";export{CSS_NUMBER_SOURCE};
|