@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
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import{__decorate}from"tslib";import{html,nothing}from"lit";import{property,state}from"lit/decorators.js";import{keyed}from"lit/directives/keyed.js";import{LyraElement}from"../../../internal/lyra-element.js";import{getDisplayNames}from"../../../internal/intl-cache.js";import{hostAriaLabel,srOnly}from"../../../internal/a11y.js";import{safeMediaSrc}from"../../../internal/safe-url.js";import{styles}from"./flag.styles.js";import{ALPHA2_RE,alpha3ToAlpha2,languageToCountry}from"./language-map.js";import"../../overlays/skeleton/skeleton.class.js";import{AnnouncementSinkController}from"../../../internal/announcer.js";import{devWarnOnce}from"../../../internal/dev-mode-attribute-warning.js";import{getFlagResolverGeneration,subscribeFlagResolver,loadFlagUrlResolver,warnMissingFlagResolver}from"./flag-url-resolver.js";import{LYRA_DEFAULT_collapse,LYRA_DEFAULT_details,LYRA_DEFAULT_flagLoadError,LYRA_DEFAULT_loading,LYRA_DEFAULT_map,LYRA_DEFAULT_navigation,LYRA_DEFAULT_open,LYRA_DEFAULT_search,LYRA_DEFAULT_select}from"../../../internal/default-strings.generated.js";import{loadFlagUrl,loadBulkFlagUrl,setFlagUrlResolver}from"./flag-url-resolver.js";const FLAG_LOAD_ERROR_KEY="flagLoadError",FLAG_FIDELITIES=new Set(["compact","standard","detailed"]),FLAG_SHAPES=new Set(["rect","circle"]);function normalizeFlagFidelity(value){return FLAG_FIDELITIES.has(value)?value:"standard"}function normalizeFlagShape(value){return FLAG_SHAPES.has(value)?value:"rect"}function displayNameFor(code,locale){try{return getDisplayNames(locale,{type:"region"}).of(code.toUpperCase())??code.toUpperCase()}catch{return code.toUpperCase()}}class LyraFlag extends LyraElement{constructor(){super(...arguments),this._shape="rect",this._fidelity="standard",this.sourceState=Object.freeze({status:"idle",identity:"idle"}),this.resolverGeneration=getFlagResolverGeneration(),this.announcements=new AnnouncementSinkController(this
|
|
1
|
+
import{__decorate}from"tslib";import{html,nothing}from"lit";import{property,state}from"lit/decorators.js";import{keyed}from"lit/directives/keyed.js";import{LyraElement}from"../../../internal/lyra-element.js";import{getDisplayNames}from"../../../internal/intl-cache.js";import{hostAriaLabel,srOnly}from"../../../internal/a11y.js";import{safeMediaSrc}from"../../../internal/safe-url.js";import{styles}from"./flag.styles.js";import{ALPHA2_RE,alpha3ToAlpha2,languageToCountry}from"./language-map.js";import"../../overlays/skeleton/skeleton.class.js";import{AnnouncementSinkController}from"../../../internal/announcer.js";import{devWarnOnce}from"../../../internal/dev-mode-attribute-warning.js";import{getFlagResolverGeneration,subscribeFlagResolver,loadFlagUrlResolver,warnMissingFlagResolver}from"./flag-url-resolver.js";import{LYRA_DEFAULT_collapse,LYRA_DEFAULT_details,LYRA_DEFAULT_flagLoadError,LYRA_DEFAULT_loading,LYRA_DEFAULT_map,LYRA_DEFAULT_navigation,LYRA_DEFAULT_open,LYRA_DEFAULT_search,LYRA_DEFAULT_select}from"../../../internal/default-strings.generated.js";import{loadFlagUrl,loadBulkFlagUrl,setFlagUrlResolver}from"./flag-url-resolver.js";const FLAG_LOAD_ERROR_KEY="flagLoadError",FLAG_FIDELITIES=new Set(["compact","standard","detailed"]),FLAG_SHAPES=new Set(["rect","circle"]);function normalizeFlagFidelity(value){return FLAG_FIDELITIES.has(value)?value:"standard"}function normalizeFlagShape(value){return FLAG_SHAPES.has(value)?value:"rect"}function displayNameFor(code,locale){try{return getDisplayNames(locale,{type:"region"}).of(code.toUpperCase())??code.toUpperCase()}catch{return code.toUpperCase()}}class LyraFlag extends LyraElement{constructor(){super(...arguments),this._shape="rect",this._fidelity="standard",this.sourceState=Object.freeze({status:"idle",identity:"idle"}),this.resolverGeneration=getFlagResolverGeneration(),this.announcements=new AnnouncementSinkController(this),this.sourceRestartPending=!0,this.activeSourceRequest=0,this.resolveToken=0,this.onResolverGeneration=generation=>{!this.isConnected||generation===this.resolverGeneration||(this.resolverGeneration=generation)}}static{this.defaultStrings={...super.defaultStrings,collapse:LYRA_DEFAULT_collapse,details:LYRA_DEFAULT_details,flagLoadError:LYRA_DEFAULT_flagLoadError,loading:LYRA_DEFAULT_loading,map:LYRA_DEFAULT_map,navigation:LYRA_DEFAULT_navigation,open:LYRA_DEFAULT_open,search:LYRA_DEFAULT_search,select:LYRA_DEFAULT_select}}static{this.styles=[LyraElement.styles,styles,srOnly]}get shape(){return this._shape}set shape(value){const old=this._shape;this._shape=normalizeFlagShape(value),this.requestUpdate("shape",old)}get fidelity(){return this._fidelity}set fidelity(value){const old=this._fidelity;this._fidelity=normalizeFlagFidelity(value),this.requestUpdate("fidelity",old)}get effectiveFidelity(){return normalizeFlagFidelity(this.fidelity)}get loading(){return this.sourceState.status==="loading"}get code(){if(this.country)return ALPHA2_RE.test(this.country)?this.country.toLowerCase():alpha3ToAlpha2(this.country);if(this.language)return languageToCountry(this.language)}get unresolved(){return this.src||!this.country&&!this.language?!1:this.code===void 0}connectedCallback(){super.connectedCallback(),this.sourceRestartPending=!0,this.stopFlagResolverSubscription=subscribeFlagResolver(this.onResolverGeneration),this.resolverGeneration!==getFlagResolverGeneration()&&(this.resolverGeneration=getFlagResolverGeneration()),this.requestUpdate()}disconnectedCallback(){this.resolveToken++,this.sourceRestartPending=!0,this.stopFlagResolverSubscription?.(),this.stopFlagResolverSubscription=void 0,super.disconnectedCallback()}adoptedCallback(){super.adoptedCallback(),this.resolveToken++,this.sourceRestartPending=!0,this.announcements.adopted(),this.requestUpdate()}announceLoadError(){this.announcements.announceAssertive(this.localize(FLAG_LOAD_ERROR_KEY))}setSourceState(state2,announceError=!1){this.sourceState=Object.freeze(state2),this.toggleAttribute("data-error",state2.status==="error"),this.toggleAttribute("data-unresolved",this.unresolved),this.setAttribute("aria-busy",String(state2.status==="loading")),announceError&&this.isConnected&&this.announceLoadError()}failSource(identity,announce=!0){this.setSourceState({status:"error",identity},announce)}onImageLoad(event,identity,url,request){const image=event.currentTarget;!this.isConnected||request!==this.activeSourceRequest||!image||image!==this.renderRoot.querySelector('[part="image"]')||this.sourceState.status!=="loading"||this.sourceState.identity!==identity||this.sourceState.url!==url||this.setSourceState({status:"loaded",identity,url})}onImageError(event,identity,request){const image=event.currentTarget;!this.isConnected||request!==this.activeSourceRequest||!image||image!==this.renderRoot.querySelector('[part="image"]')||this.sourceState.status!=="loading"||this.sourceState.identity!==identity||this.failSource(identity)}willUpdate(changed){super.willUpdate(changed);const sourceChanged=changed.has("country")||changed.has("language")||changed.has("src")||changed.has("fidelity")||changed.has("resolverGeneration");if(typeof Node<"u"&&!this.isConnected){sourceChanged&&(this.resolveToken++,this.sourceRestartPending=!0);return}if(this.hasUpdated&&!sourceChanged&&!this.sourceRestartPending)return;const connectionBaseline=this.sourceRestartPending;this.sourceRestartPending=!1;const token=++this.resolveToken,request=++this.activeSourceRequest,URLCtor=this.ownerDocument?.defaultView?.URL??globalThis.URL,directValue=typeof this.src=="string"?this.src.trim():"";if((directValue||this.code)&&this.announcements.current("assertive"),directValue){const identity2=`direct:${directValue}`,url=safeMediaSrc(directValue,URLCtor);if(!url){this.failSource(identity2,!connectionBaseline);return}this.setSourceState({status:"loading",identity:identity2,url});return}const code=this.code;if(!code){this.setSourceState({status:"idle",identity:"idle"});return}const fidelity=this.effectiveFidelity,identity=`peer:${code}:${fidelity}:${this.resolverGeneration}`;this.setSourceState({status:"loading",identity}),loadFlagUrlResolver().then(async resolve=>{if(token!==this.resolveToken||request!==this.activeSourceRequest||!this.isConnected)return;if(typeof resolve!="function"){warnMissingFlagResolver(code),this.failSource(identity);return}const candidate=await resolve(code,fidelity==="standard"?void 0:{variant:fidelity});if(token!==this.resolveToken||request!==this.activeSourceRequest||!this.isConnected)return;if(candidate===void 0){this.setSourceState({status:"idle",identity});return}const url=safeMediaSrc(candidate,URLCtor);if(!url){this.failSource(identity);return}this.setSourceState({status:"loading",identity,url})}).catch(err=>{token!==this.resolveToken||request!==this.activeSourceRequest||!this.isConnected||(devWarnOnce("lyra-flag-resolve-failed",`<lr-flag> failed to resolve a flag URL for "${code}": ${err}`),this.failSource(identity))})}updated(changed){super.updated(changed),this.setAttribute("aria-busy",String(this.sourceState.status==="loading")),this.toggleAttribute("data-unresolved",this.unresolved)}render(){const state2=this.sourceState,request=this.activeSourceRequest;if(this.unresolved){const fallbackUrl=this.fallback?safeMediaSrc(this.fallback,this.ownerDocument?.defaultView?.URL??globalThis.URL):null,fallbackAlt=hostAriaLabel(this)??this.label??"";return html`<slot name="fallback"
|
|
2
2
|
>${fallbackUrl?html`<img part="fallback-image" src=${fallbackUrl} alt=${fallbackAlt} />`:nothing}</slot
|
|
3
3
|
>`}if(state2.status==="error")return html`<span part="error">${this.localize(FLAG_LOAD_ERROR_KEY)}</span>`;const url=state2.status==="loading"||state2.status==="loaded"?state2.url:void 0;if(!url&&state2.status!=="loading")return html``;const code=this.code,alt=hostAriaLabel(this)??this.label??(code?displayNameFor(code,this.effectiveLocale):"");return html`
|
|
4
4
|
${state2.status==="loading"?html`
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{iconHitTarget}from"../../../internal/interactive-control.styles.js";import{css}from"lit";const styles=css` :host { display: block; min-inline-size: 0; } [part="base"] { display: flex; flex-direction: column; gap: var(--lr-space-s); min-inline-size: 0; max-inline-size: 100%; block-size: 100%; } [part="frame"] { flex: 1 1 auto; min-block-size: 0; } [part="frame"]::part(base) { block-size: 100%; grid-template-rows: minmax(0, 1fr) auto; } :host([fit="contain"]) [part="frame"]::part(viewport) { container-type: size; } :host([fit="width"]) [part="frame"]::part(viewport) { container-type: inline-size; contain-intrinsic-inline-size: var(--lr-size-20rem); } [part="toolbar"] { display: flex; flex-wrap: wrap; align-items: center; gap: var(--lr-space-xs); } .fit-control-wrapper { position: relative; display: inline-flex; align-items: center; min-inline-size: 0; max-inline-size: 100%; } [part="fit-control"], [part="rotate-button"], [part="annotate-toggle"] { ${iconHitTarget} border: var(--lr-border-width-thin) solid var(--lr-color-border); border-radius: var(--lr-radius); background: var(--lr-color-surface); color: var(--lr-color-text); font: inherit; cursor: pointer; } [part="fit-control"]:disabled, [part="rotate-button"]:disabled, [part="annotate-toggle"]:disabled { opacity: var(--lr-opacity-disabled); cursor: not-allowed; } [part="fit-control"] { appearance: none; max-inline-size: 100%; padding-inline: var(--lr-space-s) var(--lr-space-l); overflow: hidden; text-overflow: ellipsis; white-space: nowrap; } [part="fit-control"] option { background: var(--lr-color-surface); color: var(--lr-color-text); } [part="fit-control"]:where(:not(:disabled)):hover, [part="rotate-button"]:where(:not(:disabled)):hover, [part="annotate-toggle"]:where(:not(:disabled)):hover { background: var(--lr-color-brand-quiet); } [part="fit-control"]:where(:not(:disabled)):active, [part="rotate-button"]:where(:not(:disabled)):active, [part="annotate-toggle"]:where(:not(:disabled)):active { background: color-mix( in oklab, var(--lr-color-brand-quiet), var(--lr-color-mix-partner) var(--lr-color-mix-active) ); } [part="fit-control"]:focus-visible, [part="rotate-button"]:focus-visible, [part="annotate-toggle"]:focus-visible { outline: var(--lr-focus-ring); outline-offset: var(--lr-focus-ring-offset); } .fit-control-chevron { position: absolute; inset-inline-end: var(--lr-space-xs); display: inline-flex; color: var(--lr-color-text-quiet); line-height: var(--lr-line-height-none); pointer-events: none; } .fit-control-chevron svg { transform: rotate(90deg); } [part="annotate-toggle"][aria-pressed="true"] { background: var( --lr-image-viewer-annotate-active-bg, var(--lr-color-brand-quiet) ); border-color: var( --lr-image-viewer-annotate-active-border, var(--lr-color-brand) ); } [part="annotate-toggle"][aria-pressed="true"]:where(:not(:disabled)):active { background: color-mix( in oklab, var(--lr-image-viewer-annotate-active-bg, var(--lr-color-brand-quiet)), var(--lr-color-mix-partner) var(--lr-color-mix-active) ); } [part="rotation-frame"] { position: relative; display: inline-block; max-inline-size: 100%; } :host([fit="actual"]) [part="rotation-frame"] { max-inline-size: none; } [part="rotation-frame"][data-measured] [part="image-wrapper"] { position: absolute; left: 50%; top: 50%; inline-size: max-content; max-inline-size: none; } [part="image-wrapper"] { position: relative; display: inline-block; max-inline-size: 100%; transition: transform var(--lr-transition-base); outline: none; } [part="image-wrapper"]:focus-visible { outline: var(--lr-focus-ring); outline-offset: calc(-1 * max(var(--lr-focus-ring-width) + 2 * var(--lr-border-width-thin), var(--lr-focus-ring-width) + var(--lr-focus-ring-offset))); } :host([fit="actual"]) [part="image-wrapper"] { max-inline-size: none; }
|
|
1
|
+
import{iconHitTarget}from"../../../internal/interactive-control.styles.js";import{css}from"lit";const styles=css` :host { display: block; min-inline-size: 0; } [part="base"] { display: flex; flex-direction: column; gap: var(--lr-space-s); min-inline-size: 0; max-inline-size: 100%; block-size: 100%; } [part="frame"] { flex: 1 1 auto; min-block-size: 0; } [part="frame"]::part(base) { block-size: 100%; grid-template-rows: minmax(0, 1fr) auto; } :host([fit="contain"]) [part="frame"]::part(viewport) { container-type: size; } :host([fit="width"]) [part="frame"]::part(viewport) { container-type: inline-size; contain-intrinsic-inline-size: var(--lr-size-20rem); } [part="toolbar"] { display: flex; flex-wrap: wrap; align-items: center; gap: var(--lr-space-xs); } .fit-control-wrapper { position: relative; display: inline-flex; align-items: center; min-inline-size: 0; max-inline-size: 100%; } [part="fit-control"], [part="rotate-button"], [part="annotate-toggle"] { ${iconHitTarget} border: var(--lr-border-width-thin) solid var(--lr-color-border); border-radius: var(--lr-radius); background: var(--lr-color-surface); color: var(--lr-color-text); font: inherit; cursor: pointer; } [part="fit-control"]:disabled, [part="rotate-button"]:disabled, [part="annotate-toggle"]:disabled { opacity: var(--lr-opacity-disabled); cursor: not-allowed; } [part="fit-control"] { appearance: none; max-inline-size: 100%; padding-inline: var(--lr-space-s) var(--lr-space-l); overflow: hidden; text-overflow: ellipsis; white-space: nowrap; } [part="fit-control"] option { background: var(--lr-color-surface); color: var(--lr-color-text); } [part="fit-control"]:where(:not(:disabled)):hover, [part="rotate-button"]:where(:not(:disabled)):hover, [part="annotate-toggle"]:where(:not(:disabled)):hover { background: var(--lr-color-brand-quiet); } [part="fit-control"]:where(:not(:disabled)):active, [part="rotate-button"]:where(:not(:disabled)):active, [part="annotate-toggle"]:where(:not(:disabled)):active { background: color-mix( in oklab, var(--lr-color-brand-quiet), var(--lr-color-mix-partner) var(--lr-color-mix-active) ); } [part="fit-control"]:focus-visible, [part="rotate-button"]:focus-visible, [part="annotate-toggle"]:focus-visible { outline: var(--lr-focus-ring); outline-offset: var(--lr-focus-ring-offset); } .fit-control-chevron { position: absolute; inset-inline-end: var(--lr-space-xs); display: inline-flex; color: var(--lr-color-text-quiet); line-height: var(--lr-line-height-none); pointer-events: none; } .fit-control-chevron svg { transform: rotate(90deg); } [part="annotate-toggle"][aria-pressed="true"] { background: var( --lr-image-viewer-annotate-active-bg, var(--lr-color-brand-quiet) ); border-color: var( --lr-image-viewer-annotate-active-border, var(--lr-color-brand) ); } [part="annotate-toggle"][aria-pressed="true"]:where(:not(:disabled)):active { background: color-mix( in oklab, var(--lr-image-viewer-annotate-active-bg, var(--lr-color-brand-quiet)), var(--lr-color-mix-partner) var(--lr-color-mix-active) ); } [part="rotation-frame"] { position: relative; display: inline-block; max-inline-size: 100%; } :host([fit="actual"]) [part="rotation-frame"] { max-inline-size: none; } [part="rotation-frame"][data-measured] [part="image-wrapper"] { position: absolute; left: 50%; top: 50%; inline-size: max-content; max-inline-size: none; } [part="image-wrapper"] { position: relative; display: inline-block; max-inline-size: 100%; transition: transform var(--lr-transition-base); outline: none; } [part="image-wrapper"]:focus-visible { outline: var(--lr-focus-ring); outline-offset: calc(-1 * max(var(--lr-focus-ring-width) + 2 * var(--lr-border-width-thin), var(--lr-focus-ring-width) + var(--lr-focus-ring-offset))); } :host([fit="actual"]) [part="image-wrapper"] { max-inline-size: none; } :host([fit="contain"]) [part="frame"]::part(content), :host([fit="width"]) [part="frame"]::part(content) { inline-size: 100%; } [part="image"] { display: block; } :host([fit="width"]) [part="image"] { inline-size: 100cqi; block-size: auto; } :host([fit="width"]) :is([data-rotation="90"], [data-rotation="270"]) [part="image"] { inline-size: auto; block-size: 100cqi; } :host([fit="contain"]) [part="image"] { max-inline-size: 100cqi; max-block-size: 100cqb; block-size: auto; object-fit: contain; } :host([fit="contain"]) :is([data-rotation="90"], [data-rotation="270"]) [part="image"] { max-inline-size: 100cqb; max-block-size: 100cqi; } [part="highlight-layer"] { position: absolute; inset: 0; } [part="highlight"] { position: absolute; ${iconHitTarget} border: var(--lr-border-width-medium) solid var(--lr-image-viewer-highlight-border, var(--lr-color-brand)); --_lr-image-viewer-highlight-fill: var( --lr-image-viewer-highlight-bg, color-mix(in srgb, var(--lr-color-brand) 20%, transparent) ); background: var( --lr-image-viewer-highlight-fill, var(--_lr-image-viewer-highlight-fill) ); cursor: pointer; padding: 0; } [part="highlight"]:where([data-tone="success"]) { border-style: double; border-color: var( --lr-image-viewer-highlight-success-border, var(--lr-color-success) ); --_lr-image-viewer-highlight-fill: var( --lr-image-viewer-highlight-success-bg, color-mix(in srgb, var(--lr-color-success) 20%, transparent) ); } [part="highlight"]:where([data-tone="warning"]) { border-style: dashed; border-color: var( --lr-image-viewer-highlight-warning-border, var(--lr-color-warning) ); --_lr-image-viewer-highlight-fill: var( --lr-image-viewer-highlight-warning-bg, color-mix(in srgb, var(--lr-color-warning) 20%, transparent) ); } [part="highlight"]:where([data-tone="danger"]) { border-style: dotted; border-color: var( --lr-image-viewer-highlight-danger-border, var(--lr-color-danger) ); --_lr-image-viewer-highlight-fill: var( --lr-image-viewer-highlight-danger-bg, color-mix(in srgb, var(--lr-color-danger) 20%, transparent) ); } [part="highlight"]:where([data-tone="neutral"]) { border-style: groove; border-color: var( --lr-image-viewer-highlight-neutral-border, var(--lr-color-border) ); --_lr-image-viewer-highlight-fill: var( --lr-image-viewer-highlight-neutral-bg, color-mix(in srgb, var(--lr-color-text) 12%, transparent) ); } [part="highlight"]:where([data-active]) { border-width: var( --lr-image-viewer-highlight-active-border-width, var(--lr-border-width-thick) ); outline: var( --lr-image-viewer-highlight-active-outline-width, var(--lr-focus-ring-width) ) solid var(--lr-image-viewer-highlight-active-color, var(--lr-color-brand)); outline-offset: var( --lr-image-viewer-highlight-active-outline-offset, var(--lr-focus-ring-offset) ); } [part="highlight"]:hover { background: color-mix( in oklab, var( --lr-image-viewer-highlight-fill, var(--_lr-image-viewer-highlight-fill) ), var(--lr-color-mix-partner) var(--lr-color-mix-hover) ); } [part="highlight"]:active { background: color-mix( in oklab, var( --lr-image-viewer-highlight-fill, var(--_lr-image-viewer-highlight-fill) ), var(--lr-color-mix-partner) var(--lr-color-mix-active) ); } [part="highlight"]:focus-visible { outline: var(--lr-focus-ring); outline-offset: var(--lr-focus-ring-offset); } [part="highlight-label"] { position: absolute; inset-block-start: calc(var(--lr-size-1-5em) * -1); left: 0; font-size: var(--lr-font-size-xs); color: var(--lr-color-text); background: var(--lr-color-surface); padding-inline: var(--lr-space-2xs); max-inline-size: min(var(--lr-size-16rem), 100%); white-space: normal; overflow-wrap: anywhere; } [part="annotation-box"] { position: absolute; border: var(--lr-border-width-medium) dashed var(--lr-image-viewer-annotation-box-border, var(--lr-color-brand)); background: var( --lr-image-viewer-annotation-box-bg, color-mix(in srgb, var(--lr-color-brand) 15%, transparent) ); pointer-events: none; } .reveal-target { position: absolute; pointer-events: none; } @media (forced-colors: active) { [part="fit-control"]:hover:not(:disabled), [part="rotate-button"]:hover:not(:disabled), [part="annotate-toggle"]:hover:not(:disabled) { outline: var(--lr-border-width-thin) dashed Highlight; outline-offset: calc(-1 * var(--lr-border-width-thin)); } [part="fit-control"]:active:not(:disabled), [part="rotate-button"]:active:not(:disabled), [part="annotate-toggle"]:active:not(:disabled) { outline-style: double; outline-width: var(--lr-border-width-medium); } [part="annotate-toggle"][aria-pressed="true"] { border-color: Highlight; border-style: double; } [part="highlight"] { background: transparent; border-color: CanvasText; forced-color-adjust: none; } [part="highlight"]:where([data-active]) { outline-color: Highlight; } } .empty-note, [part="error"] { margin: 0; color: var(--lr-color-text-quiet); font-size: var(--lr-font-size-md-sm); text-align: center; padding: var(--lr-space-l); } [part="error"] { color: var(--lr-color-danger); } `;export{styles};
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import{__decorate}from"tslib";import{NativeModalCarrier}from"../../../internal/native-modal-carrier.js";import{ModalSurfaceController}from"../../../internal/modal-surface-controller.js";import{nativeModalCarrierStyles}from"../../../internal/native-modal-carrier.styles.js";import{html,nothing}from"lit";import{property,query,state}from"lit/decorators.js";import{acquireAnnouncementSink}from"../../../internal/announcer.js";import{LyraElement}from"../../../internal/lyra-element.js";import{HostDescriptionController}from"../../../internal/aria-controls.js";import{activateOverlay}from"../../../internal/overlay-manager.js";import{isAccessibilityVisible,nextId,srOnly}from"../../../internal/a11y.js";import{closeIcon,chevronIcon}from"../../../internal/icons.js";import{getNumberFormat}from"../../../internal/intl-cache.js";import{finiteCount,finiteInteger}from"../../../internal/numbers.js";import{normalizeImageFit}from"../../../internal/image-fit.js";import{SlotPresenceController}from"../../../internal/slot-presence-controller.js";import{styles}from"./lightbox.styles.js";import"../pan-zoom/pan-zoom.class.js";import{keyEventOwnedByInnerControl}from"../../../internal/hotkey.js";import{LYRA_DEFAULT_close,LYRA_DEFAULT_lightboxImagePosition,LYRA_DEFAULT_lightboxLabel,LYRA_DEFAULT_next,LYRA_DEFAULT_previous}from"../../../internal/default-strings.generated.js";const MAX_LIGHTBOX_IMAGES=1e4,EMPTY_LIGHTBOX_IMAGES=Object.freeze([]);function snapshotLightboxImages(value){try{if(!Array.isArray(value))return EMPTY_LIGHTBOX_IMAGES;const count=Math.min(value.length,MAX_LIGHTBOX_IMAGES),images=[];for(let index=0;index<count;index++)try{const candidate=value[index];if(typeof candidate!="object"||candidate===null)continue;const src=candidate.src;if(typeof src!="string")continue;const alt=candidate.alt,caption=candidate.caption;images.push(Object.freeze({src,...typeof alt=="string"?{alt}:{},...typeof caption=="string"?{caption}:{}}))}catch{}return images.length?Object.freeze(images):EMPTY_LIGHTBOX_IMAGES}catch{return EMPTY_LIGHTBOX_IMAGES}}function queueDocumentMicrotask(ownerDocument,callback){const ownerWindow=ownerDocument.defaultView;if(ownerWindow){ownerWindow.queueMicrotask(callback);return}Promise.resolve().then(callback)}class LyraLightbox extends LyraElement{constructor(){super(...arguments),this.hostDescription=new HostDescriptionController(this,()=>this.renderRoot.querySelector(this.nativeModal.requested?"dialog[data-native-modal-carrier]":'[part="panel"][role="dialog"]')),this._open=!1,this._images=EMPTY_LIGHTBOX_IMAGES,this._fit="actual",this.index=0,this.loop=!1,this.lightDismiss=!1,this.withoutCounter=!1,this.minZoom=.5,this.maxZoom=4,this.zoomStep=.25,this.accessibleLabel=null,this.slotPresence=new SlotPresenceController(this),this.liveText="",this.nativeModal=new NativeModalCarrier(this,{onCancel:()=>{this.overlay?.isTopmost()&&this.closeFrom("escape",this.renderRoot.querySelector('[part="panel"]')??this)},onUnexpectedClose:()=>{this.hide().then(()=>{this.open&&this.modalSurface.show()})}}),this.modalSurface=new ModalSurfaceController(this,this.nativeModal),this.connectionGeneration=0,this.transitionGeneration=0,this.captionId=nextId("lightbox-caption"),this.onBackdropClick=()=>{this.lightDismiss&&this.overlay?.dismissBackdrop()},this.onCloseButtonClick=()=>{const button=this.renderRoot.querySelector('[part="close-button"]')??this;this.closeFrom("close-button",button)},this.onPanelKeyDown=event=>{if(keyEventOwnedByInnerControl(event,{container:this,ownerTag:"lr-pan-zoom"}))return;const rtl=this.effectiveDirection==="rtl",forwardKey=rtl?"ArrowLeft":"ArrowRight",backwardKey=rtl?"ArrowRight":"ArrowLeft";event.key===forwardKey?(event.preventDefault(),this.next()):event.key===backwardKey?(event.preventDefault(),this.previous()):event.key==="Home"?(event.preventDefault(),this.goTo(0)):event.key==="End"&&(event.preventDefault(),this.goTo(this.images.length-1))}}static{this.defaultStrings={...super.defaultStrings,close:LYRA_DEFAULT_close,lightboxImagePosition:LYRA_DEFAULT_lightboxImagePosition,lightboxLabel:LYRA_DEFAULT_lightboxLabel,next:LYRA_DEFAULT_next,previous:LYRA_DEFAULT_previous}}static{this.styles=[LyraElement.styles,nativeModalCarrierStyles,srOnly,styles]}adoptedCallback(){super.adoptedCallback(),this.hostDescription.adopted()}get open(){return this._open}set open(next){const normalized=!!next;if(!this.coalesceOpenRequest(normalized)&&normalized!==this._open){if(!this.hasUpdated){this.applyOpenState(normalized);return}normalized?this.show():this.close("api")}}get images(){return this._images}set images(value){if(value===this._imagesSource||value===this._images)return;this._imagesSource=value;const old=this._images;this._images=snapshotLightboxImages(value),this.requestUpdate("images",old)}get fit(){return this._fit}set fit(value){const old=this._fit;this._fit=normalizeImageFit(value,"actual"),this.requestUpdate("fit",old)}currentIndex(){const count=this.images.length;return count===0?0:finiteCount(this.index,0,count-1)}syncImages(){const current=this.currentIndex();this.index!==current&&(this.index=current)}changeTo(index){const count=this.images.length;if(count===0||!Number.isFinite(index))return;const requested=finiteInteger(index,0),next=this.loop?(requested%count+count)%count:Math.min(count-1,Math.max(0,requested));next!==this.currentIndex()&&(this.index=next,this.emit("lr-index-change",{index:next}))}next(){this.changeTo(this.currentIndex()+1)}previous(){this.changeTo(this.currentIndex()-1)}goTo(index){this.changeTo(index)}async show(){if(this.coalesceOpenRequest(!0)||this._open)return;this.beginOpenRequest(!0);const prevented=this.emit("lr-show",null,{cancelable:!0}).defaultPrevented,superseded=this.openRequestWasSuperseded(!0);if(this.finishOpenRequest(),prevented||superseded){this.syncOpenAttribute();return}this.applyOpenState(!0);const generation=++this.transitionGeneration;await this.updateComplete,generation===this.transitionGeneration&&this._open&&this.emit("lr-after-show",null)}hide(){return this.close("api")}async close(reason="api"){return this.closeFrom(reason,this)}async closeFrom(reason,source){if(this.coalesceOpenRequest(!1)||!this._open)return;if(this.beginOpenRequest(!1),this.emit("lr-hide",{source},{cancelable:!0}).defaultPrevented||this.openRequestWasSuperseded(!1)){this.finishOpenRequest(),this.syncOpenAttribute();return}if(this.emit("lr-close-request",{reason},{cancelable:!0}).defaultPrevented||this.openRequestWasSuperseded(!1)){this.finishOpenRequest(),this.syncOpenAttribute();return}this.finishOpenRequest(),this.applyOpenState(!1);const generation=++this.transitionGeneration;this.emit("lr-close",{reason}),await this.updateComplete,generation===this.transitionGeneration&&!this._open&&this.emit("lr-after-hide",null)}coalesceOpenRequest(next){return this.openRequestTarget===void 0?!1:(this.openRequestDuringPreflight=next,!0)}beginOpenRequest(next){this.openRequestTarget=next,this.openRequestDuringPreflight=void 0}openRequestWasSuperseded(next){return this.openRequestDuringPreflight!==void 0&&this.openRequestDuringPreflight!==next}finishOpenRequest(){this.openRequestTarget=void 0,this.openRequestDuringPreflight=void 0}applyOpenState(next){const old=this._open;this._open=next,this.requestUpdate("open",old)}syncOpenAttribute(){this.toggleAttribute("open",this._open)}updateLiveRegion(){const count=this.images.length,formatter=getNumberFormat(this.effectiveLocale,{maximumFractionDigits:0,useGrouping:!1});this.liveText=count===0?"":this.localize("lightboxImagePosition",void 0,{index:formatter.format(this.currentIndex()+1),total:formatter.format(count)})}captureAnnouncementBaseline(){this.announcementBaseline={index:this.currentIndex(),images:this.images}}willUpdate(changed){if(super.willUpdate(changed),changed.has("images")||changed.has("index")){const index=changed.has("index")?void 0:this.index;this.syncImages(),index!==void 0&&this.index!==index&&this.emit("lr-index-change",{index:this.index})}if((changed.has("index")||changed.has("images")||changed.has("strings")||changed.has("locale"))&&this.updateLiveRegion(),changed.has("open"))if(this.open)this.modalSurface.open(()=>this.activateOverlay());else{const hadOverlay=this.overlay!==void 0;this.modalSurface.close(hadOverlay,()=>this.deactivateOverlay(),()=>!this.open)}}updated(changed){super.updated(changed),!(this.announcementBaseline?.index===this.currentIndex()&&this.announcementBaseline.images===this.images)&&this.open&&this.liveText!==""&&isAccessibilityVisible(this)&&(changed.has("index")||changed.has("images"))&&this.announcementSink?.announce(this.liveText),this.isConnected&&this.captureAnnouncementBaseline(),changed.has("open")&&this.open&&(this.modalSurface.show(),this.overlay?.focusInitial());let currentSourceChanged=!1;if(changed.has("images")){const previousImages=changed.get("images"),previousIndex=changed.has("index")?changed.get("index")??0:this.index;currentSourceChanged=previousImages?.[previousImages.length>0?finiteCount(previousIndex,0,previousImages.length-1):0]?.src!==this.images[this.currentIndex()]?.src}this.open&&(changed.has("index")||currentSourceChanged)&&this.frameEl?.resetView()}connectedCallback(){super.connectedCallback();const generation=++this.connectionGeneration,connectionDocument=this.ownerDocument;this.announcementSink??=acquireAnnouncementSink("polite",{document:this.ownerDocument,source:this}),this.captureAnnouncementBaseline(),this.hasUpdated&&this.open&&(this.overlay?.isActive()?this.overlay.resume():this.activateOverlay(),queueDocumentMicrotask(connectionDocument,()=>{this.connectionGeneration===generation&&this.ownerDocument===connectionDocument&&this.isConnected&&this.open&&(this.modalSurface.show(),this.overlay?.focusInitial())}))}disconnectedCallback(){const generation=++this.connectionGeneration,connectionDocument=this.ownerDocument;this.announcementSink?.release(),this.announcementSink=void 0,this.announcementBaseline=void 0,super.disconnectedCallback(),this.modalSurface.disconnect(),this.overlay?.suspend(),this.open&&queueDocumentMicrotask(connectionDocument,()=>{this.connectionGeneration===generation&&this.ownerDocument===connectionDocument&&!this.isConnected&&this.open&&(this.transitionGeneration++,this.emit("lr-hide",{source:this}),this.applyOpenState(!1),this.emit("lr-close",{reason:"unmount"}),this.emit("lr-after-hide",null))})}activateOverlay(){this.overlay?.isActive()||(this.overlay=activateOverlay({host:this,panel:()=>this.shadowRoot?.querySelector('[part="panel"]')??null,onEscape:()=>{const panel=this.renderRoot.querySelector('[part="panel"]')??this;this.closeFrom("escape",panel)},onBackdrop:()=>{const backdrop=this.renderRoot.querySelector('[part="backdrop"]')??this;this.closeFrom("backdrop",backdrop)},preferredInitialFocus:()=>this.shadowRoot?.querySelector('[part="close-button"]')??null,lockScroll:!0,suspendWhenUnrendered:!0}))}deactivateOverlay(){this.overlay?.deactivate(),this.overlay=void 0}render(){const count=this.images.length,current=this.currentIndex(),image=count>0?this.images[current]:void 0,label=this.accessibleLabel??this.localize("lightboxLabel"),hasCaption=!!image?.caption,formatter=getNumberFormat(this.effectiveLocale,{maximumFractionDigits:0,useGrouping:!1}),positionText=count>0?this.localize("lightboxImagePosition",void 0,{index:formatter.format(current+1),total:formatter.format(count)}):"";return this.nativeModal.render(html`
|
|
1
|
+
import{__decorate}from"tslib";import{NativeModalCarrier}from"../../../internal/native-modal-carrier.js";import{ModalSurfaceController}from"../../../internal/modal-surface-controller.js";import{nativeModalCarrierStyles}from"../../../internal/native-modal-carrier.styles.js";import{html,nothing}from"lit";import{property,query,state}from"lit/decorators.js";import{acquireAnnouncementSink}from"../../../internal/announcer.js";import{LyraElement}from"../../../internal/lyra-element.js";import{HostDescriptionController}from"../../../internal/aria-controls.js";import{activateOverlay}from"../../../internal/overlay-manager.js";import{isAccessibilityVisible,nextId,srOnly}from"../../../internal/a11y.js";import{closeIcon,chevronIcon}from"../../../internal/icons.js";import{getNumberFormat}from"../../../internal/intl-cache.js";import{finiteCount,finiteInteger}from"../../../internal/numbers.js";import{normalizeImageFit}from"../../../internal/image-fit.js";import{SlotPresenceController}from"../../../internal/slot-presence-controller.js";import{styles}from"./lightbox.styles.js";import"../pan-zoom/pan-zoom.class.js";import{keyEventOwnedByInnerControl}from"../../../internal/hotkey.js";import{LYRA_DEFAULT_close,LYRA_DEFAULT_lightboxImagePosition,LYRA_DEFAULT_lightboxLabel,LYRA_DEFAULT_next,LYRA_DEFAULT_previous}from"../../../internal/default-strings.generated.js";const MAX_LIGHTBOX_IMAGES=1e4,EMPTY_LIGHTBOX_IMAGES=Object.freeze([]);function snapshotLightboxImages(value){try{if(!Array.isArray(value))return EMPTY_LIGHTBOX_IMAGES;const count=Math.min(value.length,MAX_LIGHTBOX_IMAGES),images=[];for(let index=0;index<count;index++)try{const candidate=value[index];if(typeof candidate!="object"||candidate===null)continue;const src=candidate.src;if(typeof src!="string")continue;const alt=candidate.alt,caption=candidate.caption;images.push(Object.freeze({src,...typeof alt=="string"?{alt}:{},...typeof caption=="string"?{caption}:{}}))}catch{}return images.length?Object.freeze(images):EMPTY_LIGHTBOX_IMAGES}catch{return EMPTY_LIGHTBOX_IMAGES}}function queueDocumentMicrotask(ownerDocument,callback){const ownerWindow=ownerDocument.defaultView;if(ownerWindow){ownerWindow.queueMicrotask(callback);return}Promise.resolve().then(callback)}class LyraLightbox extends LyraElement{constructor(){super(...arguments),this.hostDescription=new HostDescriptionController(this,()=>this.renderRoot.querySelector(this.nativeModal.requested?"dialog[data-native-modal-carrier]":'[part="panel"][role="dialog"]')),this._open=!1,this._images=EMPTY_LIGHTBOX_IMAGES,this._fit="actual",this.index=0,this.loop=!1,this.lightDismiss=!1,this.withoutCounter=!1,this.minZoom=.5,this.maxZoom=4,this.zoomStep=.25,this.accessibleLabel=null,this.slotPresence=new SlotPresenceController(this),this.liveText="",this.nativeModal=new NativeModalCarrier(this,{onCancel:()=>{this.overlay?.isTopmost()&&this.closeFrom("escape",this.renderRoot.querySelector('[part="panel"]')??this)},onUnexpectedClose:()=>{this.hide().then(()=>{this.open&&this.modalSurface.show()})}}),this.modalSurface=new ModalSurfaceController(this,this.nativeModal),this.connectionGeneration=0,this.transitionGeneration=0,this.captionId=nextId("lightbox-caption"),this.onBackdropClick=()=>{this.lightDismiss&&this.overlay?.dismissBackdrop()},this.onCloseButtonClick=()=>{const button=this.renderRoot.querySelector('[part="close-button"]')??this;this.closeFrom("close-button",button)},this.onPanelKeyDown=event=>{for(const target of event.composedPath()){if(target===this)break;if(target instanceof Element&&target.getRootNode()!==this.shadowRoot&&target.matches('a[href], button, [role="button"], [role="link"]'))return}if(keyEventOwnedByInnerControl(event,{container:this,ownerTag:"lr-pan-zoom"}))return;const rtl=this.effectiveDirection==="rtl",forwardKey=rtl?"ArrowLeft":"ArrowRight",backwardKey=rtl?"ArrowRight":"ArrowLeft";event.key===forwardKey?(event.preventDefault(),this.next()):event.key===backwardKey?(event.preventDefault(),this.previous()):event.key==="Home"?(event.preventDefault(),this.goTo(0)):event.key==="End"&&(event.preventDefault(),this.goTo(this.images.length-1))}}static{this.defaultStrings={...super.defaultStrings,close:LYRA_DEFAULT_close,lightboxImagePosition:LYRA_DEFAULT_lightboxImagePosition,lightboxLabel:LYRA_DEFAULT_lightboxLabel,next:LYRA_DEFAULT_next,previous:LYRA_DEFAULT_previous}}static{this.styles=[LyraElement.styles,nativeModalCarrierStyles,srOnly,styles]}adoptedCallback(){super.adoptedCallback(),this.hostDescription.adopted()}get open(){return this._open}set open(next){const normalized=!!next;if(!this.coalesceOpenRequest(normalized)&&normalized!==this._open){if(!this.hasUpdated){this.applyOpenState(normalized);return}normalized?this.show():this.close("api")}}get images(){return this._images}set images(value){if(value===this._imagesSource||value===this._images)return;this._imagesSource=value;const old=this._images;this._images=snapshotLightboxImages(value),this.requestUpdate("images",old)}get fit(){return this._fit}set fit(value){const old=this._fit;this._fit=normalizeImageFit(value,"actual"),this.requestUpdate("fit",old)}currentIndex(){const count=this.images.length;return count===0?0:finiteCount(this.index,0,count-1)}syncImages(){const current=this.currentIndex();this.index!==current&&(this.index=current)}changeTo(index){const count=this.images.length;if(count===0||!Number.isFinite(index))return;const requested=finiteInteger(index,0),next=this.loop?(requested%count+count)%count:Math.min(count-1,Math.max(0,requested));next!==this.currentIndex()&&(this.index=next,this.emit("lr-index-change",{index:next}))}next(){this.changeTo(this.currentIndex()+1)}previous(){this.changeTo(this.currentIndex()-1)}goTo(index){this.changeTo(index)}async show(){if(this.coalesceOpenRequest(!0)||this._open)return;this.beginOpenRequest(!0);const prevented=this.emit("lr-show",null,{cancelable:!0}).defaultPrevented,superseded=this.openRequestWasSuperseded(!0);if(this.finishOpenRequest(),prevented||superseded){this.syncOpenAttribute();return}this.applyOpenState(!0);const generation=++this.transitionGeneration;await this.updateComplete,generation===this.transitionGeneration&&this._open&&this.emit("lr-after-show",null)}hide(){return this.close("api")}async close(reason="api"){return this.closeFrom(reason,this)}async closeFrom(reason,source){if(this.coalesceOpenRequest(!1)||!this._open)return;if(this.beginOpenRequest(!1),this.emit("lr-hide",{source},{cancelable:!0}).defaultPrevented||this.openRequestWasSuperseded(!1)){this.finishOpenRequest(),this.syncOpenAttribute();return}if(this.emit("lr-close-request",{reason},{cancelable:!0}).defaultPrevented||this.openRequestWasSuperseded(!1)){this.finishOpenRequest(),this.syncOpenAttribute();return}this.finishOpenRequest(),this.applyOpenState(!1);const generation=++this.transitionGeneration;this.emit("lr-close",{reason}),await this.updateComplete,generation===this.transitionGeneration&&!this._open&&this.emit("lr-after-hide",null)}coalesceOpenRequest(next){return this.openRequestTarget===void 0?!1:(this.openRequestDuringPreflight=next,!0)}beginOpenRequest(next){this.openRequestTarget=next,this.openRequestDuringPreflight=void 0}openRequestWasSuperseded(next){return this.openRequestDuringPreflight!==void 0&&this.openRequestDuringPreflight!==next}finishOpenRequest(){this.openRequestTarget=void 0,this.openRequestDuringPreflight=void 0}applyOpenState(next){const old=this._open;this._open=next,this.requestUpdate("open",old)}syncOpenAttribute(){this.toggleAttribute("open",this._open)}updateLiveRegion(){const count=this.images.length,formatter=getNumberFormat(this.effectiveLocale,{maximumFractionDigits:0,useGrouping:!1});this.liveText=count===0?"":this.localize("lightboxImagePosition",void 0,{index:formatter.format(this.currentIndex()+1),total:formatter.format(count)})}captureAnnouncementBaseline(){this.announcementBaseline={index:this.currentIndex(),images:this.images}}willUpdate(changed){if(super.willUpdate(changed),changed.has("images")||changed.has("index")){const index=changed.has("index")?void 0:this.index;this.syncImages(),index!==void 0&&this.index!==index&&this.emit("lr-index-change",{index:this.index})}if((changed.has("index")||changed.has("images")||changed.has("strings")||changed.has("locale"))&&this.updateLiveRegion(),changed.has("open"))if(this.open)this.modalSurface.open(()=>this.activateOverlay());else{const hadOverlay=this.overlay!==void 0;this.modalSurface.close(hadOverlay,()=>this.deactivateOverlay(),()=>!this.open)}}updated(changed){super.updated(changed),!(this.announcementBaseline?.index===this.currentIndex()&&this.announcementBaseline.images===this.images)&&this.open&&this.liveText!==""&&isAccessibilityVisible(this)&&(changed.has("index")||changed.has("images"))&&this.announcementSink?.announce(this.liveText),this.isConnected&&this.captureAnnouncementBaseline(),changed.has("open")&&this.open&&(this.modalSurface.show(),this.overlay?.focusInitial());let currentSourceChanged=!1;if(changed.has("images")){const previousImages=changed.get("images"),previousIndex=changed.has("index")?changed.get("index")??0:this.index;currentSourceChanged=previousImages?.[previousImages.length>0?finiteCount(previousIndex,0,previousImages.length-1):0]?.src!==this.images[this.currentIndex()]?.src}this.open&&(changed.has("index")||currentSourceChanged)&&this.frameEl?.resetView()}connectedCallback(){super.connectedCallback();const generation=++this.connectionGeneration,connectionDocument=this.ownerDocument;this.announcementSink??=acquireAnnouncementSink("polite",{document:this.ownerDocument,source:this}),this.captureAnnouncementBaseline(),this.hasUpdated&&this.open&&(this.overlay?.isActive()?this.overlay.resume():this.activateOverlay(),queueDocumentMicrotask(connectionDocument,()=>{this.connectionGeneration===generation&&this.ownerDocument===connectionDocument&&this.isConnected&&this.open&&(this.modalSurface.show(),this.overlay?.focusInitial())}))}disconnectedCallback(){const generation=++this.connectionGeneration,connectionDocument=this.ownerDocument;this.announcementSink?.release(),this.announcementSink=void 0,this.announcementBaseline=void 0,super.disconnectedCallback(),this.modalSurface.disconnect(),this.overlay?.suspend(),this.open&&queueDocumentMicrotask(connectionDocument,()=>{this.connectionGeneration===generation&&this.ownerDocument===connectionDocument&&!this.isConnected&&this.open&&(this.transitionGeneration++,this.emit("lr-hide",{source:this}),this.applyOpenState(!1),this.emit("lr-close",{reason:"unmount"}),this.emit("lr-after-hide",null))})}activateOverlay(){this.overlay?.isActive()||(this.overlay=activateOverlay({host:this,panel:()=>this.shadowRoot?.querySelector('[part="panel"]')??null,onEscape:()=>{const panel=this.renderRoot.querySelector('[part="panel"]')??this;this.closeFrom("escape",panel)},onBackdrop:()=>{const backdrop=this.renderRoot.querySelector('[part="backdrop"]')??this;this.closeFrom("backdrop",backdrop)},preferredInitialFocus:()=>this.shadowRoot?.querySelector('[part="close-button"]')??null,lockScroll:!0,suspendWhenUnrendered:!0}))}deactivateOverlay(){this.overlay?.deactivate(),this.overlay=void 0}render(){const count=this.images.length,current=this.currentIndex(),image=count>0?this.images[current]:void 0,label=this.accessibleLabel??this.localize("lightboxLabel"),hasCaption=!!image?.caption,formatter=getNumberFormat(this.effectiveLocale,{maximumFractionDigits:0,useGrouping:!1}),positionText=count>0?this.localize("lightboxImagePosition",void 0,{index:formatter.format(current+1),total:formatter.format(count)}):"";return this.nativeModal.render(html`
|
|
2
2
|
<div part="backdrop" @click=${this.onBackdropClick}></div>
|
|
3
3
|
<div
|
|
4
4
|
part="panel"
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import{__decorate}from"tslib";import{collectionSupport}from"../../../internal/collection-snapshot.js";import{html,nothing}from"lit";import{property,query,state}from"lit/decorators.js";import{styleMap}from"lit/directives/style-map.js";import{LyraElement}from"../../../internal/lyra-element.js";import{HostDescriptionController}from"../../../internal/aria-controls.js";import{GlassScrollLayer}from"../../../internal/glass-scroll-layer.js";import{getOwnDataDescriptor,MISSING_OWN_DATA_DESCRIPTOR,UNSAFE_OWN_DATA_DESCRIPTOR}from"../../../internal/data-descriptors.js";import{literalSetConverter,trueDefaultBooleanConverter}from"../../../internal/converters.js";import{devWarnOnce}from"../../../internal/dev-mode-attribute-warning.js";import{litDevWarnings}from"../../../internal/dev-warning.js";import{chevronIcon}from"../../../internal/icons.js";import{sanitizeCssColor}from"../../../internal/safe-css.js";import{DEFAULT_CANVAS_COLOR,resolveCanvasColor}from"../../../internal/canvas-color.js";import{finiteRange}from"../../../internal/numbers.js";import{prefersReducedMotion}from"../../../internal/motion.js";import{getNumberFormat}from"../../../internal/intl-cache.js";import{notifyMapCanvasReady}from"../../../internal/map-canvas-ready.js";import{AnnouncementSinkController}from"../../../internal/announcer.js";import{hostAriaLabel,srOnly}from"../../../internal/a11y.js";import{ThemeWatcher}from"../../../internal/theme-watcher.js";import{loadMaplibre}from"./map-loader.js";import{styles}from"./map.styles.js";import{projectGeoJson,projectAdmittedGeoJson,buildProjectedGeoJsonPropertyDiff}from"./map-geojson-diff.js";import{buildGeoJsonPropertyDiff}from"./map-geojson-diff.js";import{clusterColorExpression,heatmapColorExpression,heatmapWeightExpression,heatmapZoomValue,lineColorExpression,mutedCategoryOpacityExpression,pointColorExpression,pointRadiusExpression,stepExpression}from"./map-data-layers.js";import"../../overlays/skeleton/skeleton.class.js";import{LYRA_DEFAULT_close,LYRA_DEFAULT_items,LYRA_DEFAULT_legendTypeHidden,LYRA_DEFAULT_legendTypeShown,LYRA_DEFAULT_loading,LYRA_DEFAULT_map,LYRA_DEFAULT_mapFeedback,LYRA_DEFAULT_mapInitializationFailed,LYRA_DEFAULT_mapLegend,LYRA_DEFAULT_mapMarker,LYRA_DEFAULT_mapMissingLibrary,LYRA_DEFAULT_mapResetNorth,LYRA_DEFAULT_mapStyleRequired,LYRA_DEFAULT_mapToggleAttribution,LYRA_DEFAULT_mapWebglUnavailable,LYRA_DEFAULT_paginationSummary,LYRA_DEFAULT_zoomIn,LYRA_DEFAULT_zoomOut}from"../../../internal/default-strings.generated.js";function supportsWebGL2(host){try{const context=host.ownerDocument.createElement("canvas").getContext("webgl2");if(!context)return!1;try{context.getExtension("WEBGL_lose_context")?.loseContext()}catch{}return!0}catch{return!1}}function hasMapStyle(style){return typeof style=="string"?style.trim().length>0:style!==void 0}const LEGEND_CONTROL_ROLE=literalSetConverter(["button","checkbox"],"button"),MAX_MAP_LEGEND_GRADIENT_STOPS=64;function isRuntimeArray(value){try{return Array.isArray(value)}catch{return!1}}function isRuntimeRecord(value){try{return value!==null&&typeof value=="object"&&!Array.isArray(value)}catch{return!1}}function boundedOwnArrayLength(value,limit){if(!isRuntimeArray(value))return;const descriptor=getOwnDataDescriptor(value,"length");if(!(descriptor===MISSING_OWN_DATA_DESCRIPTOR||descriptor===UNSAFE_OWN_DATA_DESCRIPTOR||typeof descriptor.value!="number"||!Number.isSafeInteger(descriptor.value)||descriptor.value<0))return Math.min(descriptor.value,limit)}function
|
|
1
|
+
import{__decorate}from"tslib";import{collectionSupport}from"../../../internal/collection-snapshot.js";import{html,nothing}from"lit";import{property,query,state}from"lit/decorators.js";import{styleMap}from"lit/directives/style-map.js";import{LyraElement}from"../../../internal/lyra-element.js";import{HostDescriptionController}from"../../../internal/aria-controls.js";import{GlassScrollLayer}from"../../../internal/glass-scroll-layer.js";import{getOwnDataDescriptor,MISSING_OWN_DATA_DESCRIPTOR,UNSAFE_OWN_DATA_DESCRIPTOR}from"../../../internal/data-descriptors.js";import{literalSetConverter,trueDefaultBooleanConverter}from"../../../internal/converters.js";import{devWarnOnce}from"../../../internal/dev-mode-attribute-warning.js";import{litDevWarnings}from"../../../internal/dev-warning.js";import{chevronIcon}from"../../../internal/icons.js";import{sanitizeCssColor}from"../../../internal/safe-css.js";import{DEFAULT_CANVAS_COLOR,resolveCanvasColor}from"../../../internal/canvas-color.js";import{finiteRange}from"../../../internal/numbers.js";import{prefersReducedMotion}from"../../../internal/motion.js";import{getNumberFormat}from"../../../internal/intl-cache.js";import{notifyMapCanvasReady}from"../../../internal/map-canvas-ready.js";import{AnnouncementSinkController}from"../../../internal/announcer.js";import{hostAriaLabel,srOnly}from"../../../internal/a11y.js";import{ThemeWatcher}from"../../../internal/theme-watcher.js";import{loadMaplibre}from"./map-loader.js";import{styles}from"./map.styles.js";import{projectGeoJson,projectAdmittedGeoJson,buildProjectedGeoJsonPropertyDiff}from"./map-geojson-diff.js";import{buildGeoJsonPropertyDiff}from"./map-geojson-diff.js";import{clusterColorExpression,heatmapColorExpression,heatmapWeightExpression,heatmapZoomValue,lineColorExpression,mutedCategoryOpacityExpression,pointColorExpression,pointRadiusExpression,stepExpression}from"./map-data-layers.js";import"../../overlays/skeleton/skeleton.class.js";import{LYRA_DEFAULT_close,LYRA_DEFAULT_items,LYRA_DEFAULT_legendTypeHidden,LYRA_DEFAULT_legendTypeShown,LYRA_DEFAULT_loading,LYRA_DEFAULT_map,LYRA_DEFAULT_mapFeedback,LYRA_DEFAULT_mapInitializationFailed,LYRA_DEFAULT_mapLegend,LYRA_DEFAULT_mapMarker,LYRA_DEFAULT_mapMissingLibrary,LYRA_DEFAULT_mapResetNorth,LYRA_DEFAULT_mapStyleRequired,LYRA_DEFAULT_mapToggleAttribution,LYRA_DEFAULT_mapWebglUnavailable,LYRA_DEFAULT_paginationSummary,LYRA_DEFAULT_zoomIn,LYRA_DEFAULT_zoomOut}from"../../../internal/default-strings.generated.js";function supportsWebGL2(host){try{const context=host.ownerDocument.createElement("canvas").getContext("webgl2");if(!context)return!1;try{context.getExtension("WEBGL_lose_context")?.loseContext()}catch{}return!0}catch{return!1}}function hasMapStyle(style){return typeof style=="string"?style.trim().length>0:style!==void 0}const LEGEND_CONTROL_ROLE=literalSetConverter(["button","checkbox"],"button"),MAX_MAP_LEGEND_GRADIENT_STOPS=64;function isRuntimeArray(value){try{return Array.isArray(value)}catch{return!1}}function isRuntimeRecord(value){try{return value!==null&&typeof value=="object"&&!Array.isArray(value)}catch{return!1}}function boundedOwnArrayLength(value,limit){if(!isRuntimeArray(value))return;const descriptor=getOwnDataDescriptor(value,"length");if(!(descriptor===MISSING_OWN_DATA_DESCRIPTOR||descriptor===UNSAFE_OWN_DATA_DESCRIPTOR||typeof descriptor.value!="number"||!Number.isSafeInteger(descriptor.value)||descriptor.value<0))return Math.min(descriptor.value,limit)}function isUnsafeDescriptor(descriptor){return descriptor===UNSAFE_OWN_DATA_DESCRIPTOR}function optionalDescriptorValue(descriptor){return descriptor===MISSING_OWN_DATA_DESCRIPTOR||isUnsafeDescriptor(descriptor)?void 0:descriptor.value}function normalizeMapLegendGradient(value){try{const scanCount=boundedOwnArrayLength(value,MAX_MAP_LEGEND_GRADIENT_STOPS);if(scanCount===void 0)return[];const usable=[];for(let index=0;index<scanCount;index+=1){const stopDescriptor=getOwnDataDescriptor(value,String(index));if(stopDescriptor===MISSING_OWN_DATA_DESCRIPTOR||isUnsafeDescriptor(stopDescriptor))continue;const stop=stopDescriptor.value,stopLength=boundedOwnArrayLength(stop,2);if(stopLength===void 0||stopLength<2)continue;const valueDescriptor=getOwnDataDescriptor(stop,"0"),colorDescriptor=getOwnDataDescriptor(stop,"1");if(valueDescriptor===MISSING_OWN_DATA_DESCRIPTOR||colorDescriptor===MISSING_OWN_DATA_DESCRIPTOR||isUnsafeDescriptor(valueDescriptor)||isUnsafeDescriptor(colorDescriptor)||typeof valueDescriptor.value!="number"||!Number.isFinite(valueDescriptor.value)||typeof colorDescriptor.value!="string")continue;const color=sanitizeCssColor(colorDescriptor.value);color&&usable.push([valueDescriptor.value,color])}return usable.length<2?[]:Object.freeze([...usable].sort((a,b)=>a[0]-b[0]))}catch{return[]}}const MAP_LEGEND_ITEM_LIMIT=100,MAP_LEGEND_SCAN_LIMIT=1e3,MAP_LEGEND_LABEL_LIMIT=256,MAP_LEGEND_TOTAL_LABEL_LIMIT=8192,MAP_LEGEND_COLOR_LIMIT=256,MAP_LEGEND_VALUE_LIMIT=256,MAP_LEGEND_PATTERNS=new Set(["solid","diagonal","dots","crosshatch"]),EMPTY_MAP_LEGEND=Object.freeze([]),EMPTY_MAP_LEGEND_PROJECTION=Object.freeze({inputCount:0,renderedCount:0,omittedCount:0,truncatedLabelCount:0,truncated:!1});function boundedLegendText(value,limit){return value.length<=limit?value:`${value.slice(0,Math.max(0,limit-1))}…`}function normalizeMapLegend(value){let input;try{input=Array.isArray(value)?value:[]}catch{input=[]}let inputCount=0;try{inputCount=Math.max(0,Math.min(Number.MAX_SAFE_INTEGER,input.length))}catch{inputCount=0}const entries=[];let labelCharacters=0,truncatedLabelCount=0;const scanCount=Math.min(inputCount,MAP_LEGEND_SCAN_LIMIT);for(let index=0;index<scanCount&&entries.length<MAP_LEGEND_ITEM_LIMIT;index++)try{const candidate=input[index];if(!candidate||typeof candidate!="object")continue;const rawColor=candidate.color,rawLabel=candidate.label,rawPattern=candidate.pattern;if(typeof rawColor!="string"||typeof rawLabel!="string"||typeof rawPattern!="string"||!MAP_LEGEND_PATTERNS.has(rawPattern))continue;const remaining=MAP_LEGEND_TOTAL_LABEL_LIMIT-labelCharacters;if(remaining<=0)break;const labelLimit=Math.min(MAP_LEGEND_LABEL_LIMIT,remaining),label=boundedLegendText(rawLabel,labelLimit);if(!label.trim())continue;rawLabel.length>labelLimit&&truncatedLabelCount++,labelCharacters+=label.length;const rawValue=candidate.value,trimmedValue=typeof rawValue=="string"?rawValue.trim():"",value2=trimmedValue?trimmedValue.slice(0,MAP_LEGEND_VALUE_LIMIT):void 0,rawGroup=candidate.group,trimmedGroup=typeof rawGroup=="string"?rawGroup.trim():"",group=trimmedGroup?boundedLegendText(trimmedGroup,MAP_LEGEND_LABEL_LIMIT):void 0,rawIcon=candidate.icon,icon=isRuntimeRecord(rawIcon)?projectIconPaint(rawIcon):void 0;entries.push(Object.freeze({color:rawColor.slice(0,MAP_LEGEND_COLOR_LIMIT),label,pattern:rawPattern,...value2?{value:value2}:{},...group?{group}:{},...icon?{icon}:{}}))}catch{}const frozenEntries=entries.length?Object.freeze(entries):EMPTY_MAP_LEGEND,omittedCount=Math.max(0,inputCount-frozenEntries.length),projection=Object.freeze({inputCount,renderedCount:frozenEntries.length,omittedCount,truncatedLabelCount,truncated:omittedCount>0||truncatedLabelCount>0});return{entries:frozenEntries,projection,grouped:frozenEntries.some(entry=>entry.group!==void 0)}}const EMPTY_HIDDEN_CATEGORIES=Object.freeze([]);function normalizeMapHiddenCategories(value){let input,length=0;try{input=Array.isArray(value)?value:[],length=Math.max(0,Math.min(MAP_LEGEND_SCAN_LIMIT,input.length))}catch{return EMPTY_HIDDEN_CATEGORIES}const keys=[];for(let index=0;index<length&&keys.length<MAP_LEGEND_ITEM_LIMIT;index++)try{const candidate=input[index];if(typeof candidate!="string")continue;const key=candidate.trim().slice(0,MAP_LEGEND_VALUE_LIMIT);if(!key||keys.includes(key))continue;keys.push(key)}catch{}return keys.length?Object.freeze(keys):EMPTY_HIDDEN_CATEGORIES}function renderLegendIcon(icon){const[x,y,width,height]=icon.viewBox??DEFAULT_ICON_VIEW_BOX,mode=icon.mode??"fill";return html`<svg
|
|
2
2
|
class="legend-icon"
|
|
3
3
|
viewBox=${`${x} ${y} ${width} ${height}`}
|
|
4
4
|
focusable="false"
|
|
@@ -9,7 +9,7 @@ import{__decorate}from"tslib";import{collectionSupport}from"../../../internal/co
|
|
|
9
9
|
stroke-width=${icon.strokeWidth??DEFAULT_ICON_STROKE_WIDTH}
|
|
10
10
|
stroke-linecap=${icon.lineCap??"round"}
|
|
11
11
|
stroke-linejoin=${icon.lineJoin??"round"}
|
|
12
|
-
></path></svg>`}function addPartToken(element,token){const tokens=new Set((element.getAttribute("part")??"").split(/\s+/).filter(Boolean));tokens.add(token),element.setAttribute("part",[...tokens].join(" "))}const CHOROPLETH_LOG_INTERPOLATION_BASE=.25,CHOROPLETH_LEGEND_SAMPLES_PER_INTERVAL=8;function choroplethLogInterpolationFactor(input,lower,upper){const difference=upper-lower;if(difference===0)return 0;const progress=input-lower;return(Math.pow(CHOROPLETH_LOG_INTERPOLATION_BASE,progress)-1)/(Math.pow(CHOROPLETH_LOG_INTERPOLATION_BASE,difference)-1)}function compactGradientPercent(value){return String(Math.round(Math.min(100,Math.max(0,value))*1e4)/1e4)}function choroplethLegendGradientImage(stops,interpolation){const lo=stops[0],span=stops[stops.length-1][0]-lo[0],stopPercent=(value,index)=>span>0?(value-lo[0])/span*100:index/(stops.length-1)*100;if(interpolation!=="logarithmic"||span<=0)return`linear-gradient(to right, ${stops.map(([value,color],index)=>`${color} ${compactGradientPercent(stopPercent(value,index))}%`).join(", ")})`;const image=[`${lo[1]} 0%`];for(let index=1;index<stops.length;index+=1){const lower=stops[index-1],upper=stops[index],interval=upper[0]-lower[0];if(interval<=0){image.push(`${upper[1]} ${compactGradientPercent(stopPercent(upper[0],index))}%`);continue}for(let sample=1;sample<=CHOROPLETH_LEGEND_SAMPLES_PER_INTERVAL;sample+=1){const intervalProgress=sample/CHOROPLETH_LEGEND_SAMPLES_PER_INTERVAL,input=lower[0]+interval*intervalProgress,position=(input-lo[0])/span*100;if(sample===CHOROPLETH_LEGEND_SAMPLES_PER_INTERVAL){image.push(`${upper[1]} ${compactGradientPercent(position)}%`);continue}const factor=Math.min(1,Math.max(0,choroplethLogInterpolationFactor(input,lower[0],upper[0]))),lowerWeight=compactGradientPercent((1-factor)*100),upperWeight=compactGradientPercent(factor*100);image.push(`color-mix(in srgb, ${lower[1]} ${lowerWeight}%, ${upper[1]} ${upperWeight}%) ${compactGradientPercent(position)}%`)}}return`linear-gradient(to right, ${image.join(", ")})`}const MAX_MAP_MARKERS=2e3;function popupText(host,markup){const template=host.ownerDocument.createElement("template");template.innerHTML=markup;for(const hidden of template.content.querySelectorAll('script, style, template, [hidden], [aria-hidden="true"]'))hidden.remove();return(template.content.textContent??"").replace(/\s+/gu," ").trim()}function markerPopupText(host,markup){return typeof markup=="string"&&markup?popupText(host,markup):""}const MAX_MAP_DATA_LAYERS=100,EMPTY_CANONICAL_MAP_DATA_LAYERS=Object.freeze([]);function mapTone(value){switch(value){case"accent":case"success":case"warning":case"danger":case"neutral":return value;default:return}}function projectMapDataLayer(value){try{if(!isRuntimeRecord(value))return;const sourceIdDescriptor=ownDataValue(value,"sourceId"),geojsonDescriptor=ownDataValue(value,"geojson"),toneDescriptor=ownDataValue(value,"tone"),colorDescriptor=ownDataValue(value,"color"),strokeColorDescriptor=ownDataValue(value,"strokeColor"),lineDescriptor=ownDataValue(value,"line"),kindDescriptor=ownDataValue(value,"kind"),heatmapDescriptor=ownDataValue(value,"heatmap"),clusterDescriptor=ownDataValue(value,"cluster");if(sourceIdDescriptor===MISSING_OWN_DATA_DESCRIPTOR||geojsonDescriptor===MISSING_OWN_DATA_DESCRIPTOR||isUnsafeDescriptor(sourceIdDescriptor)||isUnsafeDescriptor(geojsonDescriptor))return;const sourceId=sourceIdDescriptor.value,geojson=geojsonDescriptor.value;if(typeof sourceId!="string"||sourceId.trim().length===0||!isRuntimeRecord(geojson))return;const tone=mapTone(optionalDescriptorValue(toneDescriptor)),colorValue=optionalDescriptorValue(colorDescriptor),strokeColorValue=optionalDescriptorValue(strokeColorDescriptor),kindValue=optionalDescriptorValue(kindDescriptor),heatmapValue=optionalDescriptorValue(heatmapDescriptor),clusterValue=optionalDescriptorValue(clusterDescriptor),kind=kindValue==="heatmap"?"heatmap":"auto";return Object.freeze({sourceId:sourceId.trim(),geojson,geojsonProjection:projectAdmittedGeoJson(geojson),tone,color:typeof colorValue=="string"?colorValue:void 0,strokeColor:typeof strokeColorValue=="string"?strokeColorValue:void 0,line:kind==="auto"?projectLineOptions(optionalDescriptorValue(lineDescriptor)):void 0,point:kind==="auto"?projectPointOptions(optionalDescriptorValue(ownDataValue(value,"point"))):void 0,kind,heatmap:kind==="heatmap"?projectHeatmapOptions(heatmapValue):void 0,cluster:kind==="auto"?normalizedClusterOptions(clusterValue):void 0})}catch{return}}function projectMapDataLayers(value){try{const scanCount=boundedOwnArrayLength(value,MAX_MAP_DATA_LAYERS);if(scanCount===void 0)return EMPTY_CANONICAL_MAP_DATA_LAYERS;const output=[],seenSourceIds=new Set;for(let index=0;index<scanCount;index+=1){const descriptor=ownDataValue(value,String(index));if(descriptor===MISSING_OWN_DATA_DESCRIPTOR||isUnsafeDescriptor(descriptor))continue;const layer=projectMapDataLayer(descriptor.value);!layer||seenSourceIds.has(layer.sourceId)||(seenSourceIds.add(layer.sourceId),output.push(layer))}return output.length?Object.freeze(output):EMPTY_CANONICAL_MAP_DATA_LAYERS}catch{return EMPTY_CANONICAL_MAP_DATA_LAYERS}}const DATA_LAYER_SUFFIXES=["-fill","-line","-circle","-point-icon","-cluster","-cluster-count","-heatmap"],QUERYABLE_DATA_LAYER_SUFFIXES=["-fill","-line","-circle","-cluster","-point-icon"],MAX_MAP_STEP_STOPS=32;function normalizedSteps(value,isOutput,clampThreshold=threshold=>threshold){try{const scanCount=boundedOwnArrayLength(value,MAX_MAP_STEP_STOPS);if(scanCount===void 0)return Object.freeze([]);const usable=[];for(let index=0;index<scanCount;index+=1){const stopDescriptor=ownDataValue(value,String(index));if(stopDescriptor===MISSING_OWN_DATA_DESCRIPTOR||isUnsafeDescriptor(stopDescriptor))continue;const stop=stopDescriptor.value,stopLength=boundedOwnArrayLength(stop,2);if(stopLength===void 0||stopLength<2)continue;const thresholdDescriptor=ownDataValue(stop,"0"),outputDescriptor=ownDataValue(stop,"1");thresholdDescriptor===MISSING_OWN_DATA_DESCRIPTOR||outputDescriptor===MISSING_OWN_DATA_DESCRIPTOR||isUnsafeDescriptor(thresholdDescriptor)||isUnsafeDescriptor(outputDescriptor)||typeof thresholdDescriptor.value!="number"||!Number.isFinite(thresholdDescriptor.value)||!isOutput(outputDescriptor.value)||usable.push([clampThreshold(thresholdDescriptor.value),outputDescriptor.value])}usable.sort((a,b)=>a[0]-b[0]);const deduplicated=usable.filter((stop,index)=>index===0||stop[0]>usable[index-1][0]);return Object.freeze(deduplicated.map(stop=>Object.freeze(stop)))}catch{return Object.freeze([])}}const isFiniteOutput=candidate=>typeof candidate=="number"&&Number.isFinite(candidate),isColorOutput=candidate=>typeof candidate=="string"&&candidate.trim().length>0,DEFAULT_CLUSTER_RADIUS=50,DEFAULT_CLUSTER_MAX_ZOOM=14,DEFAULT_CLUSTER_RADIUS_STEPS=Object.freeze([[0,14],[10,18],[50,24]]),DEFAULT_HEATMAP_RADIUS=30,DEFAULT_HEATMAP_INTENSITY=1,MAX_CLUSTER_COUNT_FONTS=8;function normalizedClusterOptions(value){try{if(!isRuntimeRecord(value))return;const radiusDescriptor=ownDataValue(value,"radius"),maxZoomDescriptor=ownDataValue(value,"maxZoom"),radiusStepsDescriptor=ownDataValue(value,"radiusSteps"),colorStepsDescriptor=ownDataValue(value,"colorSteps"),strokeColorDescriptor=ownDataValue(value,"strokeColor"),countFontDescriptor=ownDataValue(value,"countFont"),countColorDescriptor=ownDataValue(value,"countColor"),countHaloColorDescriptor=ownDataValue(value,"countHaloColor"),countHaloWidthDescriptor=ownDataValue(value,"countHaloWidth"),radiusValue=optionalDescriptorValue(radiusDescriptor),maxZoomValue=optionalDescriptorValue(maxZoomDescriptor),radiusSteps=normalizedSteps(optionalDescriptorValue(radiusStepsDescriptor),isFiniteOutput),colorSteps=normalizedSteps(optionalDescriptorValue(colorStepsDescriptor),isColorOutput),fonts=normalizedClusterFonts(optionalDescriptorValue(countFontDescriptor)),countHaloWidthValue=optionalDescriptorValue(countHaloWidthDescriptor);return Object.freeze({radius:finiteRange(typeof radiusValue=="number"?radiusValue:Number.NaN,DEFAULT_CLUSTER_RADIUS,1,1e3),maxZoom:finiteRange(typeof maxZoomValue=="number"?maxZoomValue:Number.NaN,DEFAULT_CLUSTER_MAX_ZOOM,0,24),radiusSteps:radiusSteps.length?radiusSteps:DEFAULT_CLUSTER_RADIUS_STEPS,colorSteps,strokeColor:sanitizeCssColor(optionalDescriptorValue(strokeColorDescriptor)),countFont:fonts.length?fonts:void 0,countColor:sanitizeCssColor(optionalDescriptorValue(countColorDescriptor)),countHaloColor:sanitizeCssColor(optionalDescriptorValue(countHaloColorDescriptor)),countHaloWidth:countHaloWidthValue===void 0?1:finiteRange(typeof countHaloWidthValue=="number"?countHaloWidthValue:Number.NaN,1,0,3)})}catch{return}}function normalizedClusterFonts(value){try{const length=boundedOwnArrayLength(value,MAX_CLUSTER_COUNT_FONTS);if(length===void 0)return Object.freeze([]);const fonts=[];for(let index=0;index<length;index+=1){const descriptor=ownDataValue(value,String(index));descriptor===MISSING_OWN_DATA_DESCRIPTOR||isUnsafeDescriptor(descriptor)||typeof descriptor.value!="string"||descriptor.value.trim().length===0||fonts.push(descriptor.value)}return Object.freeze(fonts)}catch{return Object.freeze([])}}const DEFAULT_ICON_VIEW_BOX=Object.freeze([0,0,24,24]),DEFAULT_ICON_STROKE_WIDTH=2,ICON_PATH_GRAMMAR=/^[MmLlHhVvCcSsQqTtAaZz\d.eE+,\s-]+$/u,MAX_ICON_PATH_LENGTH=8192;function projectIconPaint(row){const path=optionalDescriptorValue(ownDataValue(row,"path"));if(typeof path!="string"||path.length===0||path.length>MAX_ICON_PATH_LENGTH||!ICON_PATH_GRAMMAR.test(path))return;const rawBox=optionalDescriptorValue(ownDataValue(row,"viewBox")),box=[];if(rawBox===void 0)box.push(...DEFAULT_ICON_VIEW_BOX);else{if(boundedOwnArrayLength(rawBox,4)!==4)return;for(let index=0;index<4;index++){const coordinate=optionalDescriptorValue(ownDataValue(rawBox,String(index)));if(typeof coordinate!="number"||!Number.isFinite(coordinate)||Math.abs(coordinate)>1e4)return;box.push(coordinate)}if(box[2]<.001||box[3]<.001)return}const mode=optionalDescriptorValue(ownDataValue(row,"mode")),strokeWidth=optionalDescriptorValue(ownDataValue(row,"strokeWidth")),lineCap=optionalDescriptorValue(ownDataValue(row,"lineCap")),lineJoin=optionalDescriptorValue(ownDataValue(row,"lineJoin"));return Object.freeze({path,viewBox:Object.freeze(box),mode:mode==="stroke"||mode==="fill-stroke"?mode:"fill",strokeWidth:finiteRange(typeof strokeWidth=="number"?strokeWidth:NaN,DEFAULT_ICON_STROKE_WIDTH,0,200),lineCap:lineCap==="butt"||lineCap==="square"?lineCap:"round",lineJoin:lineJoin==="miter"||lineJoin==="bevel"?lineJoin:"round"})}function projectPointRadius(value){if(!isRuntimeRecord(value))return finiteRange(typeof value=="number"?value:NaN,5,0,200);const read=key=>optionalDescriptorValue(ownDataValue(value,key)),field=read("field"),rawFallback=read("fallback"),fallback=finiteRange(typeof rawFallback=="number"?rawFallback:NaN,5,0,200),stops=normalizedSteps(read("stops"),isFiniteOutput).map(([threshold,radius])=>Object.freeze([threshold,finiteRange(radius,5,0,200)]));return typeof field!="string"||!field.trim()||!stops.length?fallback:Object.freeze({field:field.trim(),stops:Object.freeze(stops),fallback,interpolation:read("interpolation")==="linear"?"linear":"step"})}function projectPointOptions(value){if(!isRuntimeRecord(value))return;const read=key=>optionalDescriptorValue(ownDataValue(value,key)),string=key=>{const candidate=read(key);return typeof candidate=="string"&&candidate.trim()?candidate:void 0},number=(key,fallback,min,max)=>{const candidate=read(key);return finiteRange(typeof candidate=="number"?candidate:NaN,fallback,min,max)},colors=[],icons=[],project=(input,accept)=>{const length=boundedOwnArrayLength(input,MAX_MAP_STEP_STOPS)??0;for(let index=0;index<length;index++){const row=optionalDescriptorValue(ownDataValue(input,String(index)));row!==null&&typeof row=="object"&&accept(row)}};return project(read("colors"),row=>{const key=optionalDescriptorValue(ownDataValue(row,"0")),color=optionalDescriptorValue(ownDataValue(row,"1"));typeof key!="string"||typeof color!="string"||!sanitizeCssColor(color)||colors.some(([existing])=>existing===key)||colors.push(Object.freeze([key,color]))}),project(read("icons"),row=>{const key=optionalDescriptorValue(ownDataValue(row,"value"));if(typeof key!="string"||icons.some(icon=>icon.value===key))return;const paint=projectIconPaint(row);paint&&icons.push(Object.freeze({value:key,...paint}))}),Object.freeze({field:string("field"),colors:Object.freeze(colors),radius:projectPointRadius(read("radius")),strokeWidth:number("strokeWidth",0,0,200),strokeColor:string("strokeColor"),iconField:string("iconField")??string("field"),icons:Object.freeze(icons),iconColor:string("iconColor"),iconSize:number("iconSize",16,1,200)})}const POINT_ICON_RASTER_SIZE=64;function rasterPointIcon(host,icon,color){try{const canvas=host.ownerDocument.createElement("canvas");canvas.width=canvas.height=POINT_ICON_RASTER_SIZE;const context=canvas.getContext("2d"),Path=host.ownerDocument.defaultView?.Path2D;if(!context||!Path)return;const[x,y,width,height]=icon.viewBox,scale=POINT_ICON_RASTER_SIZE/Math.max(width,height);context.translate((POINT_ICON_RASTER_SIZE-width*scale)/2,(POINT_ICON_RASTER_SIZE-height*scale)/2),context.scale(scale,scale),context.translate(-x,-y);const path=new Path(icon.path);return icon.mode!=="stroke"&&(context.fillStyle=color,context.fill(path)),icon.mode!=="fill"&&icon.strokeWidth>0&&(context.strokeStyle=color,context.lineWidth=icon.strokeWidth,context.lineCap=icon.lineCap,context.lineJoin=icon.lineJoin,context.stroke(path)),context.getImageData(0,0,POINT_ICON_RASTER_SIZE,POINT_ICON_RASTER_SIZE)}catch{return}}function projectLineOptions(value){try{if(!isRuntimeRecord(value))return;const field=optionalDescriptorValue(ownDataValue(value,"field")),width=optionalDescriptorValue(ownDataValue(value,"width")),opacity=optionalDescriptorValue(ownDataValue(value,"opacity"));return Object.freeze({field:typeof field=="string"&&field.trim()?field.trim():void 0,stops:Object.freeze(normalizeMapLegendGradient(optionalDescriptorValue(ownDataValue(value,"stops"))).filter((stop,index,stops)=>index===0||stop[0]>stops[index-1][0]).map(stop=>Object.freeze(stop))),width:typeof width=="number"?finiteRange(width,2,0,200):2,opacity:typeof opacity=="number"?finiteRange(opacity,1,0,1):1})}catch{return}}function projectedHeatmapRange(value){try{const length=boundedOwnArrayLength(value,2);if(length===void 0||length<2)return;const minDescriptor=ownDataValue(value,"0"),maxDescriptor=ownDataValue(value,"1");return minDescriptor===MISSING_OWN_DATA_DESCRIPTOR||maxDescriptor===MISSING_OWN_DATA_DESCRIPTOR||isUnsafeDescriptor(minDescriptor)||isUnsafeDescriptor(maxDescriptor)||typeof minDescriptor.value!="number"||typeof maxDescriptor.value!="number"||!Number.isFinite(minDescriptor.value)||!Number.isFinite(maxDescriptor.value)?void 0:Object.freeze([minDescriptor.value,maxDescriptor.value])}catch{return}}function projectedHeatmapZoomValue(value){if(typeof value=="number"&&Number.isFinite(value))return value;if(isRuntimeArray(value))return normalizedSteps(value,isFiniteOutput,zoom=>finiteRange(zoom,0,0,24))}function projectHeatmapOptions(value){try{if(!isRuntimeRecord(value))return;const weightFieldDescriptor=ownDataValue(value,"weightField"),weightRangeDescriptor=ownDataValue(value,"weightRange"),stopsDescriptor=ownDataValue(value,"stops"),radiusDescriptor=ownDataValue(value,"radius"),intensityDescriptor=ownDataValue(value,"intensity"),opacityDescriptor=ownDataValue(value,"opacity"),weightFieldValue=optionalDescriptorValue(weightFieldDescriptor),opacityValue=optionalDescriptorValue(opacityDescriptor);return Object.freeze({weightField:typeof weightFieldValue=="string"&&weightFieldValue.trim().length>0?weightFieldValue.trim():void 0,weightRange:projectedHeatmapRange(optionalDescriptorValue(weightRangeDescriptor)),stops:normalizedSteps(optionalDescriptorValue(stopsDescriptor),isColorOutput,density=>finiteRange(density,0,0,1)),radius:projectedHeatmapZoomValue(optionalDescriptorValue(radiusDescriptor)),intensity:projectedHeatmapZoomValue(optionalDescriptorValue(intensityDescriptor)),opacity:typeof opacityValue=="number"&&Number.isFinite(opacityValue)?opacityValue:void 0})}catch{return}}function dataLayerShape(layer){if(layer.kind==="heatmap")return"heatmap";const cluster=layer.cluster;return cluster?`cluster:${cluster.radius}:${cluster.maxZoom}:${cluster.countFont?.join(",")??""}`:"auto"}function projectMapChoropleth(value){try{if(!isRuntimeRecord(value))return;const sourceIdDescriptor=ownDataValue(value,"sourceId"),geojsonDescriptor=ownDataValue(value,"geojson"),fieldDescriptor=ownDataValue(value,"field"),stopsDescriptor=ownDataValue(value,"stops"),interpolationDescriptor=ownDataValue(value,"interpolation"),stepBaseColorDescriptor=ownDataValue(value,"stepBaseColor");if(sourceIdDescriptor===MISSING_OWN_DATA_DESCRIPTOR||geojsonDescriptor===MISSING_OWN_DATA_DESCRIPTOR||fieldDescriptor===MISSING_OWN_DATA_DESCRIPTOR||isUnsafeDescriptor(sourceIdDescriptor)||isUnsafeDescriptor(geojsonDescriptor)||isUnsafeDescriptor(fieldDescriptor))return;const sourceId=sourceIdDescriptor.value,geojson=geojsonDescriptor.value,field=fieldDescriptor.value;if(typeof sourceId!="string"||sourceId.trim().length===0||!isRuntimeRecord(geojson)||typeof field!="string"||field.trim().length===0)return;const interpolationValue=optionalDescriptorValue(interpolationDescriptor),stepBaseColorValue=optionalDescriptorValue(stepBaseColorDescriptor),interpolation=interpolationValue==="logarithmic"||interpolationValue==="step"?interpolationValue:"linear";return Object.freeze({sourceId:sourceId.trim(),geojson,geojsonProjection:projectAdmittedGeoJson(geojson),field:field.trim(),stops:normalizedSteps(optionalDescriptorValue(stopsDescriptor),isColorOutput),interpolation,stepBaseColor:typeof stepBaseColorValue=="string"&&stepBaseColorValue.trim().length>0?stepBaseColorValue:void 0})}catch{return}}const EMPTY_CANONICAL_MAP_MARKERS=Object.freeze([]),UNPROJECTED_MAP_VALUE=Symbol("unprojected-map-value");function projectMarkerLngLat(value){try{const length=boundedOwnArrayLength(value,2);if(length===void 0||length<2)return;const lngDescriptor=ownDataValue(value,"0"),latDescriptor=ownDataValue(value,"1");return lngDescriptor===MISSING_OWN_DATA_DESCRIPTOR||latDescriptor===MISSING_OWN_DATA_DESCRIPTOR||isUnsafeDescriptor(lngDescriptor)||isUnsafeDescriptor(latDescriptor)||typeof lngDescriptor.value!="number"||typeof latDescriptor.value!="number"||!Number.isFinite(lngDescriptor.value)||!Number.isFinite(latDescriptor.value)||latDescriptor.value<-90||latDescriptor.value>90?void 0:Object.freeze([lngDescriptor.value,latDescriptor.value])}catch{return}}function projectMapMarker(value){try{if(!isRuntimeRecord(value))return;const idDescriptor=ownDataValue(value,"id"),lngLatDescriptor=ownDataValue(value,"lngLat"),colorDescriptor=ownDataValue(value,"color"),labelDescriptor=ownDataValue(value,"label"),unsafeHtmlDescriptor=ownDataValue(value,"unsafeHtml");if(lngLatDescriptor===MISSING_OWN_DATA_DESCRIPTOR||isUnsafeDescriptor(idDescriptor)||isUnsafeDescriptor(lngLatDescriptor)||isUnsafeDescriptor(colorDescriptor)||isUnsafeDescriptor(labelDescriptor)||isUnsafeDescriptor(unsafeHtmlDescriptor))return;const lngLat=projectMarkerLngLat(lngLatDescriptor.value),idValue=optionalDescriptorValue(idDescriptor),labelValue=optionalDescriptorValue(labelDescriptor);if(!lngLat||idValue!==void 0&&typeof idValue!="string"||typeof idValue=="string"&&idValue.trim().length===0||labelValue!==void 0&&typeof labelValue!="string")return;const colorValue=optionalDescriptorValue(colorDescriptor);return Object.freeze({id:typeof idValue=="string"?idValue.trim():void 0,lngLat,color:typeof colorValue=="string"?colorValue:void 0,label:typeof labelValue=="string"?labelValue:void 0,unsafeHtml:optionalDescriptorValue(unsafeHtmlDescriptor)})}catch{return}}function projectMapMarkers(value){try{const scanCount=boundedOwnArrayLength(value,MAX_MAP_MARKERS);if(scanCount===void 0)return EMPTY_CANONICAL_MAP_MARKERS;const output=[],explicitIds=new Set;for(let index=0;index<scanCount;index+=1){const descriptor=ownDataValue(value,String(index));if(descriptor===MISSING_OWN_DATA_DESCRIPTOR||isUnsafeDescriptor(descriptor))continue;const marker=projectMapMarker(descriptor.value);!marker||marker.id!==void 0&&explicitIds.has(marker.id)||(marker.id!==void 0&&explicitIds.add(marker.id),output.push(marker))}return output.length?Object.freeze(output):EMPTY_CANONICAL_MAP_MARKERS}catch{return EMPTY_CANONICAL_MAP_MARKERS}}function setPopupContent(popup,marker){const options=popup.options,focus=options?.focusAfterOpen;return options&&(options.focusAfterOpen=!1),marker.unsafeHtml?popup.setHTML(marker.unsafeHtml):popup.setText(marker.label),options&&(options.focusAfterOpen=focus),popup}const FIT_EVENT_KEY="lyraMapFit";function snapshotCenter(center){return Array.isArray(center)?[center[0],center[1]]:center}function sameCenterValue(a,b){return Array.isArray(a)&&Array.isArray(b)?Object.is(a[0],b[0])&&Object.is(a[1],b[1]):Object.is(a,b)}function isFiniteCoordinate(value){return typeof value=="number"&&Number.isFinite(value)}function normalizeFitBounds(bounds){if(!Array.isArray(bounds)||bounds.length!==2)return;const[southWest,northEast]=bounds;if(!Array.isArray(southWest)||!Array.isArray(northEast)||southWest.length!==2||northEast.length!==2)return;const[west,south]=southWest,[east,north]=northEast;if(!(!isFiniteCoordinate(west)||!isFiniteCoordinate(south)||!isFiniteCoordinate(east)||!isFiniteCoordinate(north))&&!(west<-180||west>180||east<-180||east>west+360)&&!(south<-90||north>90||south>north))return Object.freeze([Object.freeze([west,south]),Object.freeze([west>east?east+360:east,north])])}function normalizeFitPadding(padding){const side=value=>finiteRange(typeof value=="number"?value:0,0,0);if(typeof padding=="number"){const all=side(padding);return Object.freeze({top:all,right:all,bottom:all,left:all})}const record=typeof padding=="object"&&padding!==null?padding:{};return Object.freeze({top:side(record.top),right:side(record.right),bottom:side(record.bottom),left:side(record.left)})}function wrapLongitude(longitude){if(longitude>=-180&&longitude<=180)return longitude;const wrapped=((longitude+180)%360+360)%360-180;return wrapped===-180?180:wrapped}function readPeerCamera(map){let longitude,latitude,zoom;try{({lng:longitude,lat:latitude}=map.getCenter()),zoom=map.getZoom()}catch{return}if(!(!isFiniteCoordinate(longitude)||!isFiniteCoordinate(latitude)||!isFiniteCoordinate(zoom)))return{center:[wrapLongitude(longitude),finiteRange(latitude,0,-90,90)],zoom}}const FALLBACK_FILL_OPACITY=.75;function ownerWindow(host){return host.ownerDocument?.defaultView??null}function choroplethFillOpacity(host){const raw=ownerWindow(host)?.getComputedStyle(host).getPropertyValue("--lr-map-choropleth-fill-opacity").trim()??"",parsed=Number.parseFloat(raw);return Number.isFinite(parsed)?parsed:FALLBACK_FILL_OPACITY}const FALLBACK_HIDDEN_CATEGORY_OPACITY=.15;function hiddenCategoryOpacity(host){const raw=ownerWindow(host)?.getComputedStyle(host).getPropertyValue("--lr-map-hidden-category-opacity").trim()??"";return finiteRange(Number.parseFloat(raw),FALLBACK_HIDDEN_CATEGORY_OPACITY,0,1)}const TONE_TOKEN={accent:"--lr-color-brand",success:"--lr-color-success",warning:"--lr-color-warning",danger:"--lr-color-danger",neutral:"--lr-color-text-quiet"},ON_TONE_TOKEN={accent:"--lr-color-on-brand",success:"--lr-color-on-success",warning:"--lr-color-on-warning",danger:"--lr-color-on-danger",neutral:"--lr-color-on-neutral"},HEATMAP_RAMP_TOKENS=Object.freeze([[.25,"--lr-color-brand"],[.5,"--lr-color-success"],[.75,"--lr-color-warning"],[1,"--lr-color-danger"]]);function dataLayerColor(host,tone){const token=TONE_TOKEN[tone??"accent"];return(ownerWindow(host)?.getComputedStyle(host).getPropertyValue(token).trim()??"")||DEFAULT_CANVAS_COLOR}const BASIC_MAP_PAINT_COLOR_NAMES=new Set(["aqua","black","blue","fuchsia","gray","green","lime","maroon","navy","olive","purple","red","silver","teal","white","yellow","transparent"]);function resolvedMapPaintColor(host,color,preserveLegacy){const candidate=typeof color=="string"?color.trim():"";if(!candidate)return;if(preserveLegacy){const reference=/^var\(\s*(--[\w-]+)\s*\)$/.exec(candidate),plain=reference?ownerWindow(host)?.getComputedStyle(host).getPropertyValue(reference[1]).trim()??"":candidate,namedPeerColor=BASIC_MAP_PAINT_COLOR_NAMES.has(plain.toLowerCase());if(/^#(?:[\da-f]{3,4}|[\da-f]{6}|[\da-f]{8})$/i.test(plain)||(/^rgba?\([\d\s.,/]+\)$/i.test(plain)||namedPeerColor)&&typeof CSS<"u"&&CSS.supports("color",plain))return plain}const resolved=resolveCanvasColor(host,candidate,"");if(!resolved)return;if(/^rgba?\(/i.test(resolved))return resolved;const canvas=host.ownerDocument.createElement("canvas");canvas.width=1,canvas.height=1;try{const context=canvas.getContext("2d",{colorSpace:"srgb",willReadFrequently:!0});if(!context)return;let accepted=!1;for(const sentinel of["rgb(1, 2, 3)","rgb(4, 5, 6)"]){context.fillStyle=sentinel;const before=context.fillStyle;if(context.fillStyle=resolved,context.fillStyle!==before){accepted=!0;break}}if(!accepted)return;context.fillRect(0,0,1,1);const[r=0,g=0,b=0,a=0]=context.getImageData(0,0,1,1).data;return a===255?`rgb(${r}, ${g}, ${b})`:`rgba(${r}, ${g}, ${b}, ${Math.round(a/255*1e3)/1e3})`}catch{return}}function resolvedLayerColor(host,explicit,tone){return resolvedMapPaintColor(host,explicit,!0)??resolvedMapPaintColor(host,dataLayerColor(host,tone),!0)??DEFAULT_CANVAS_COLOR}function resolvedClusterCountColor(host,color){return resolvedMapPaintColor(host,color,!1)}function resolvedClusterStrokeColor(host,clusterStroke,layer){return resolvedMapPaintColor(host,clusterStroke,!0)??resolvedLayerColor(host,layer.strokeColor??layer.color,layer.tone)}function warnOnUntileableProperties(projection,sourceLabel){if(litDevWarnings())for(const feature of projection.diagnostics)for(const[key,value]of feature.properties){if(typeof value!="number"||!Number.isFinite(value)||Math.abs(value)<=Number.MAX_SAFE_INTEGER)continue;const identity=feature.id??`index ${feature.index}`;devWarnOnce(`lyra-map-untileable-property:${sourceLabel}:${key}`,`<lr-map>: feature ${String(identity)} in "${sourceLabel}" carries ${key}=${value}, which is too large to survive maplibre-gl's vector-tile encoding. Tiling happens in a worker, so the failure would reach you only as an opaque "Given varint doesn't fit into 10 bytes" error while the rest of the layer still paints. Carry a reduced figure in the feature and keep the exact value in your own data.`)}}class LyraMap extends LyraElement{static{this.defaultStrings={...super.defaultStrings,close:LYRA_DEFAULT_close,items:LYRA_DEFAULT_items,legendTypeHidden:LYRA_DEFAULT_legendTypeHidden,legendTypeShown:LYRA_DEFAULT_legendTypeShown,loading:LYRA_DEFAULT_loading,map:LYRA_DEFAULT_map,mapFeedback:LYRA_DEFAULT_mapFeedback,mapInitializationFailed:LYRA_DEFAULT_mapInitializationFailed,mapLegend:LYRA_DEFAULT_mapLegend,mapMarker:LYRA_DEFAULT_mapMarker,mapMissingLibrary:LYRA_DEFAULT_mapMissingLibrary,mapResetNorth:LYRA_DEFAULT_mapResetNorth,mapStyleRequired:LYRA_DEFAULT_mapStyleRequired,mapToggleAttribution:LYRA_DEFAULT_mapToggleAttribution,mapWebglUnavailable:LYRA_DEFAULT_mapWebglUnavailable,paginationSummary:LYRA_DEFAULT_paginationSummary,zoomIn:LYRA_DEFAULT_zoomIn,zoomOut:LYRA_DEFAULT_zoomOut}}static{this.collectionSupport=collectionSupport}static{this.immutableEventDetails=Object.freeze(["lr-map-click","lr-map-legend-panel-toggle-request","lr-map-legend-toggle-request","lr-map-marker-activate","lr-map-view-change"])}static{this.identityEventDetailProperties=Object.freeze({"lr-map-click":Object.freeze(["feature"]),"lr-map-marker-activate":Object.freeze(["marker"])})}static{this.ownedCollectionProperties=Object.freeze(["center","mapStyle","choropleth","markers","dataLayers"])}static{this.identityCollectionProperties=Object.freeze(["markers","dataLayers"])}static{this.identityCollectionObjectProperties=Object.freeze(["choropleth"])}static{this.styles=[LyraElement.styles,styles,srOnly]}static preload(){return loadMaplibre().then(module=>module!==null)}constructor(){super(),this.hostDescription=new HostDescriptionController(this,()=>this._map?.getCanvas?.()??null),this._center=Object.freeze([0,0]),this.zoom=2,this.fitToken=Object.freeze({}),this.semanticsStale=!0,this.boxZoomSettling=!1,this.writingCamera=!1,this.maxBounds=null,this._legend=EMPTY_MAP_LEGEND,this._legendProjection=EMPTY_MAP_LEGEND_PROJECTION,this._legendGrouped=!1,this.hasLegendSlot=!1,this.hasLegendStartSlot=!1,this._legendGradient=Object.freeze([]),this.legendIsLine=!1,this.legendGradientLoLabel=null,this.legendGradientHiLabel=null,this.legendInteractive=!1,this._legendControlRole="button",this.legendCollapsible=!1,this.legendOpen=!0,this._hiddenCategories=EMPTY_HIDDEN_CATEGORIES,this.markers=[],this.dataLayers=[],this._canonicalChoroplethSource=UNPROJECTED_MAP_VALUE,this._canonicalDataLayersSource=UNPROJECTED_MAP_VALUE,this._canonicalDataLayers=EMPTY_CANONICAL_MAP_DATA_LAYERS,this._canonicalMarkersSource=UNPROJECTED_MAP_VALUE,this._canonicalMarkers=EMPTY_CANONICAL_MAP_MARKERS,this.loading=!0,this.announcements=new AnnouncementSinkController(this,{eager:["assertive"]}),this.loadLibrary=loadMaplibre,this.visible=ownerWindow(this)?.IntersectionObserver===void 0,this._styleLoaded=!1,this._appliedDataLayerIds=new Map,this._appliedDataLayerShapes=new Map,this._appliedGeoJson=new Map,this._nextDataLayerId=0,this.nextPointIconId=0,this.appliedPointPaint=new Set,this.appliedPointMuting=new Set,this.appliedPointIcons=new Map,this._webglReady=!1,this._markerInstances=new Map,this._markerLabels=new Map,this._markerPopupIds=new Map,this.markerActivationDetails=new WeakMap,this._configuredPopups=new WeakSet,this._nextPopupId=0,this._markerColors=new Map,this._markerSources=new Map,this._connectGeneration=0,this._styleGeneration=0,this.configuredMarkerElements=new WeakSet,this.onLegendSlotChange=event=>{const slot=event.target,filled=slot.assignedNodes({flatten:!0}).some(node=>node.nodeType===Node.ELEMENT_NODE||(node.textContent??"").trim().length>0);slot.name==="legend-start"?this.hasLegendStartSlot=filled:this.hasLegendSlot=filled},new ThemeWatcher(this,()=>{this.refreshThemePaint(),this.legendIsLine=this.legendDescribesLine(),this.applyMarkers()}),new GlassScrollLayer(this,'[part="legend"]')}get center(){return this._center}set center(value){this._center=value}get legend(){return this._legend}set legend(value){if(value===this._legendSource||value===this._legend)return;this._legendSource=value;const previous=this._legend,normalized=normalizeMapLegend(value);this._legend=normalized.entries,this._legendProjection=normalized.projection,this._legendGrouped=normalized.grouped,this.requestUpdate("legend",previous)}probeLegendSlot(name){for(const child of Array.from(this.children))if(child.getAttribute("slot")===name)return!0;return!1}get legendGradient(){return this._legendGradient}set legendGradient(value){if(value===this._legendGradientSource||value===this._legendGradient)return;this._legendGradientSource=value;const previous=this._legendGradient;this._legendGradient=normalizeMapLegendGradient(value),this.requestUpdate("legendGradient",previous)}warnOnLegendChoroplethMismatch(){if(!litDevWarnings()||this.legendIsLine)return;const layer=this.canonicalChoropleth,legend=this.legendGradient;!layer||legend.length===0||layer.stops.length===0||legend.length===layer.stops.length&&legend.every(([legendValue,legendColor],index)=>{const layerStop=layer.stops[index];return layerStop!==void 0&&layerStop[0]===legendValue&&resolvedLayerColor(this,layerStop[1],void 0)===resolvedLayerColor(this,legendColor,void 0)})||devWarnOnce("lyra-map-legend-choropleth-mismatch",`<${this.localName}>: legendGradient does not match choropleth.stops, so the visible key may misdescribe the map. Assign the same stops array to both, or derive both from one source.`)}legendDescribesLine(){const stops=this.legendGradient;return stops.length<2?!1:this.canonicalDataLayers.some(layer=>layer.kind==="auto"&&!layer.cluster&&layer.line?.field&&layer.line.stops.length===stops.length&&layer.line.stops.every(([value,color],index)=>value===stops[index][0]&&resolvedLayerColor(this,color,layer.tone)===resolvedLayerColor(this,stops[index][1],layer.tone)))}get legendProjection(){return this._legendProjection}set legendProjection(_value){}get legendControlRole(){return this._legendControlRole}set legendControlRole(next){const normalized=LEGEND_CONTROL_ROLE.normalizeReflected(this,"legend-control-role",next),old=this._legendControlRole;old!==normalized&&(this._legendControlRole=normalized,this.requestUpdate("legendControlRole",old))}get legendCollapsed(){return this.legendCollapsible&&!this.legendOpen}toggleLegendPanel(){if(!this.legendCollapsible)return;const open=!this.legendOpen;this.emit("lr-map-legend-panel-toggle-request",{open},{cancelable:!0}).defaultPrevented||(this.legendOpen=open)}renderLegendDisclosure(){return this.legendCollapsible?html`<button
|
|
12
|
+
></path></svg>`}function addPartToken(element,token){const tokens=new Set((element.getAttribute("part")??"").split(/\s+/).filter(Boolean));tokens.add(token),element.setAttribute("part",[...tokens].join(" "))}const CHOROPLETH_LOG_INTERPOLATION_BASE=.25,CHOROPLETH_LEGEND_SAMPLES_PER_INTERVAL=8;function choroplethLogInterpolationFactor(input,lower,upper){const difference=upper-lower;if(difference===0)return 0;const progress=input-lower;return(Math.pow(CHOROPLETH_LOG_INTERPOLATION_BASE,progress)-1)/(Math.pow(CHOROPLETH_LOG_INTERPOLATION_BASE,difference)-1)}function compactGradientPercent(value){return String(Math.round(Math.min(100,Math.max(0,value))*1e4)/1e4)}function choroplethLegendGradientImage(stops,interpolation){const lo=stops[0],span=stops[stops.length-1][0]-lo[0],stopPercent=(value,index)=>span>0?(value-lo[0])/span*100:index/(stops.length-1)*100;if(interpolation!=="logarithmic"||span<=0)return`linear-gradient(to right, ${stops.map(([value,color],index)=>`${color} ${compactGradientPercent(stopPercent(value,index))}%`).join(", ")})`;const image=[`${lo[1]} 0%`];for(let index=1;index<stops.length;index+=1){const lower=stops[index-1],upper=stops[index],interval=upper[0]-lower[0];if(interval<=0){image.push(`${upper[1]} ${compactGradientPercent(stopPercent(upper[0],index))}%`);continue}for(let sample=1;sample<=CHOROPLETH_LEGEND_SAMPLES_PER_INTERVAL;sample+=1){const intervalProgress=sample/CHOROPLETH_LEGEND_SAMPLES_PER_INTERVAL,input=lower[0]+interval*intervalProgress,position=(input-lo[0])/span*100;if(sample===CHOROPLETH_LEGEND_SAMPLES_PER_INTERVAL){image.push(`${upper[1]} ${compactGradientPercent(position)}%`);continue}const factor=Math.min(1,Math.max(0,choroplethLogInterpolationFactor(input,lower[0],upper[0]))),lowerWeight=compactGradientPercent((1-factor)*100),upperWeight=compactGradientPercent(factor*100);image.push(`color-mix(in srgb, ${lower[1]} ${lowerWeight}%, ${upper[1]} ${upperWeight}%) ${compactGradientPercent(position)}%`)}}return`linear-gradient(to right, ${image.join(", ")})`}const MAX_MAP_MARKERS=2e3;function popupText(host,markup){const template=host.ownerDocument.createElement("template");template.innerHTML=markup;for(const hidden of template.content.querySelectorAll('script, style, template, [hidden], [aria-hidden="true"]'))hidden.remove();return(template.content.textContent??"").replace(/\s+/gu," ").trim()}function markerPopupText(host,markup){return typeof markup=="string"&&markup?popupText(host,markup):""}const MAX_MAP_DATA_LAYERS=100,EMPTY_CANONICAL_MAP_DATA_LAYERS=Object.freeze([]);function mapTone(value){switch(value){case"accent":case"success":case"warning":case"danger":case"neutral":return value;default:return}}function projectMapDataLayer(value){try{if(!isRuntimeRecord(value))return;const sourceIdDescriptor=getOwnDataDescriptor(value,"sourceId"),geojsonDescriptor=getOwnDataDescriptor(value,"geojson"),toneDescriptor=getOwnDataDescriptor(value,"tone"),colorDescriptor=getOwnDataDescriptor(value,"color"),strokeColorDescriptor=getOwnDataDescriptor(value,"strokeColor"),lineDescriptor=getOwnDataDescriptor(value,"line"),kindDescriptor=getOwnDataDescriptor(value,"kind"),heatmapDescriptor=getOwnDataDescriptor(value,"heatmap"),clusterDescriptor=getOwnDataDescriptor(value,"cluster");if(sourceIdDescriptor===MISSING_OWN_DATA_DESCRIPTOR||geojsonDescriptor===MISSING_OWN_DATA_DESCRIPTOR||isUnsafeDescriptor(sourceIdDescriptor)||isUnsafeDescriptor(geojsonDescriptor))return;const sourceId=sourceIdDescriptor.value,geojson=geojsonDescriptor.value;if(typeof sourceId!="string"||sourceId.trim().length===0||!isRuntimeRecord(geojson))return;const tone=mapTone(optionalDescriptorValue(toneDescriptor)),colorValue=optionalDescriptorValue(colorDescriptor),strokeColorValue=optionalDescriptorValue(strokeColorDescriptor),kindValue=optionalDescriptorValue(kindDescriptor),heatmapValue=optionalDescriptorValue(heatmapDescriptor),clusterValue=optionalDescriptorValue(clusterDescriptor),kind=kindValue==="heatmap"?"heatmap":"auto";return Object.freeze({sourceId:sourceId.trim(),geojson,geojsonProjection:projectAdmittedGeoJson(geojson),tone,color:typeof colorValue=="string"?colorValue:void 0,strokeColor:typeof strokeColorValue=="string"?strokeColorValue:void 0,line:kind==="auto"?projectLineOptions(optionalDescriptorValue(lineDescriptor)):void 0,point:kind==="auto"?projectPointOptions(optionalDescriptorValue(getOwnDataDescriptor(value,"point"))):void 0,kind,heatmap:kind==="heatmap"?projectHeatmapOptions(heatmapValue):void 0,cluster:kind==="auto"?normalizedClusterOptions(clusterValue):void 0})}catch{return}}function projectMapDataLayers(value){try{const scanCount=boundedOwnArrayLength(value,MAX_MAP_DATA_LAYERS);if(scanCount===void 0)return EMPTY_CANONICAL_MAP_DATA_LAYERS;const output=[],seenSourceIds=new Set;for(let index=0;index<scanCount;index+=1){const descriptor=getOwnDataDescriptor(value,String(index));if(descriptor===MISSING_OWN_DATA_DESCRIPTOR||isUnsafeDescriptor(descriptor))continue;const layer=projectMapDataLayer(descriptor.value);!layer||seenSourceIds.has(layer.sourceId)||(seenSourceIds.add(layer.sourceId),output.push(layer))}return output.length?Object.freeze(output):EMPTY_CANONICAL_MAP_DATA_LAYERS}catch{return EMPTY_CANONICAL_MAP_DATA_LAYERS}}const DATA_LAYER_SUFFIXES=["-fill","-line","-circle","-point-icon","-cluster","-cluster-count","-heatmap"],QUERYABLE_DATA_LAYER_SUFFIXES=["-fill","-line","-circle","-cluster","-point-icon"],MAX_MAP_STEP_STOPS=32;function normalizedSteps(value,isOutput,clampThreshold=threshold=>threshold){try{const scanCount=boundedOwnArrayLength(value,MAX_MAP_STEP_STOPS);if(scanCount===void 0)return Object.freeze([]);const usable=[];for(let index=0;index<scanCount;index+=1){const stopDescriptor=getOwnDataDescriptor(value,String(index));if(stopDescriptor===MISSING_OWN_DATA_DESCRIPTOR||isUnsafeDescriptor(stopDescriptor))continue;const stop=stopDescriptor.value,stopLength=boundedOwnArrayLength(stop,2);if(stopLength===void 0||stopLength<2)continue;const thresholdDescriptor=getOwnDataDescriptor(stop,"0"),outputDescriptor=getOwnDataDescriptor(stop,"1");thresholdDescriptor===MISSING_OWN_DATA_DESCRIPTOR||outputDescriptor===MISSING_OWN_DATA_DESCRIPTOR||isUnsafeDescriptor(thresholdDescriptor)||isUnsafeDescriptor(outputDescriptor)||typeof thresholdDescriptor.value!="number"||!Number.isFinite(thresholdDescriptor.value)||!isOutput(outputDescriptor.value)||usable.push([clampThreshold(thresholdDescriptor.value),outputDescriptor.value])}usable.sort((a,b)=>a[0]-b[0]);const deduplicated=usable.filter((stop,index)=>index===0||stop[0]>usable[index-1][0]);return Object.freeze(deduplicated.map(stop=>Object.freeze(stop)))}catch{return Object.freeze([])}}const isFiniteOutput=candidate=>typeof candidate=="number"&&Number.isFinite(candidate),isColorOutput=candidate=>typeof candidate=="string"&&candidate.trim().length>0,DEFAULT_CLUSTER_RADIUS=50,DEFAULT_CLUSTER_MAX_ZOOM=14,DEFAULT_CLUSTER_RADIUS_STEPS=Object.freeze([[0,14],[10,18],[50,24]]),DEFAULT_HEATMAP_RADIUS=30,DEFAULT_HEATMAP_INTENSITY=1,MAX_CLUSTER_COUNT_FONTS=8;function normalizedClusterOptions(value){try{if(!isRuntimeRecord(value))return;const radiusDescriptor=getOwnDataDescriptor(value,"radius"),maxZoomDescriptor=getOwnDataDescriptor(value,"maxZoom"),radiusStepsDescriptor=getOwnDataDescriptor(value,"radiusSteps"),colorStepsDescriptor=getOwnDataDescriptor(value,"colorSteps"),strokeColorDescriptor=getOwnDataDescriptor(value,"strokeColor"),countFontDescriptor=getOwnDataDescriptor(value,"countFont"),countColorDescriptor=getOwnDataDescriptor(value,"countColor"),countHaloColorDescriptor=getOwnDataDescriptor(value,"countHaloColor"),countHaloWidthDescriptor=getOwnDataDescriptor(value,"countHaloWidth"),radiusValue=optionalDescriptorValue(radiusDescriptor),maxZoomValue=optionalDescriptorValue(maxZoomDescriptor),radiusSteps=normalizedSteps(optionalDescriptorValue(radiusStepsDescriptor),isFiniteOutput),colorSteps=normalizedSteps(optionalDescriptorValue(colorStepsDescriptor),isColorOutput),fonts=normalizedClusterFonts(optionalDescriptorValue(countFontDescriptor)),countHaloWidthValue=optionalDescriptorValue(countHaloWidthDescriptor);return Object.freeze({radius:finiteRange(typeof radiusValue=="number"?radiusValue:Number.NaN,DEFAULT_CLUSTER_RADIUS,1,1e3),maxZoom:finiteRange(typeof maxZoomValue=="number"?maxZoomValue:Number.NaN,DEFAULT_CLUSTER_MAX_ZOOM,0,24),radiusSteps:radiusSteps.length?radiusSteps:DEFAULT_CLUSTER_RADIUS_STEPS,colorSteps,strokeColor:sanitizeCssColor(optionalDescriptorValue(strokeColorDescriptor)),countFont:fonts.length?fonts:void 0,countColor:sanitizeCssColor(optionalDescriptorValue(countColorDescriptor)),countHaloColor:sanitizeCssColor(optionalDescriptorValue(countHaloColorDescriptor)),countHaloWidth:countHaloWidthValue===void 0?1:finiteRange(typeof countHaloWidthValue=="number"?countHaloWidthValue:Number.NaN,1,0,3)})}catch{return}}function normalizedClusterFonts(value){try{const length=boundedOwnArrayLength(value,MAX_CLUSTER_COUNT_FONTS);if(length===void 0)return Object.freeze([]);const fonts=[];for(let index=0;index<length;index+=1){const descriptor=getOwnDataDescriptor(value,String(index));descriptor===MISSING_OWN_DATA_DESCRIPTOR||isUnsafeDescriptor(descriptor)||typeof descriptor.value!="string"||descriptor.value.trim().length===0||fonts.push(descriptor.value)}return Object.freeze(fonts)}catch{return Object.freeze([])}}const DEFAULT_ICON_VIEW_BOX=Object.freeze([0,0,24,24]),DEFAULT_ICON_STROKE_WIDTH=2,ICON_PATH_GRAMMAR=/^[MmLlHhVvCcSsQqTtAaZz\d.eE+,\s-]+$/u,MAX_ICON_PATH_LENGTH=8192;function projectIconPaint(row){const path=optionalDescriptorValue(getOwnDataDescriptor(row,"path"));if(typeof path!="string"||path.length===0||path.length>MAX_ICON_PATH_LENGTH||!ICON_PATH_GRAMMAR.test(path))return;const rawBox=optionalDescriptorValue(getOwnDataDescriptor(row,"viewBox")),box=[];if(rawBox===void 0)box.push(...DEFAULT_ICON_VIEW_BOX);else{if(boundedOwnArrayLength(rawBox,4)!==4)return;for(let index=0;index<4;index++){const coordinate=optionalDescriptorValue(getOwnDataDescriptor(rawBox,String(index)));if(typeof coordinate!="number"||!Number.isFinite(coordinate)||Math.abs(coordinate)>1e4)return;box.push(coordinate)}if(box[2]<.001||box[3]<.001)return}const mode=optionalDescriptorValue(getOwnDataDescriptor(row,"mode")),strokeWidth=optionalDescriptorValue(getOwnDataDescriptor(row,"strokeWidth")),lineCap=optionalDescriptorValue(getOwnDataDescriptor(row,"lineCap")),lineJoin=optionalDescriptorValue(getOwnDataDescriptor(row,"lineJoin"));return Object.freeze({path,viewBox:Object.freeze(box),mode:mode==="stroke"||mode==="fill-stroke"?mode:"fill",strokeWidth:finiteRange(typeof strokeWidth=="number"?strokeWidth:NaN,DEFAULT_ICON_STROKE_WIDTH,0,200),lineCap:lineCap==="butt"||lineCap==="square"?lineCap:"round",lineJoin:lineJoin==="miter"||lineJoin==="bevel"?lineJoin:"round"})}function projectPointRadius(value){if(!isRuntimeRecord(value))return finiteRange(typeof value=="number"?value:NaN,5,0,200);const read=key=>optionalDescriptorValue(getOwnDataDescriptor(value,key)),field=read("field"),rawFallback=read("fallback"),fallback=finiteRange(typeof rawFallback=="number"?rawFallback:NaN,5,0,200),stops=normalizedSteps(read("stops"),isFiniteOutput).map(([threshold,radius])=>Object.freeze([threshold,finiteRange(radius,5,0,200)]));return typeof field!="string"||!field.trim()||!stops.length?fallback:Object.freeze({field:field.trim(),stops:Object.freeze(stops),fallback,interpolation:read("interpolation")==="linear"?"linear":"step"})}function projectPointOptions(value){if(!isRuntimeRecord(value))return;const read=key=>optionalDescriptorValue(getOwnDataDescriptor(value,key)),string=key=>{const candidate=read(key);return typeof candidate=="string"&&candidate.trim()?candidate:void 0},number=(key,fallback,min,max)=>{const candidate=read(key);return finiteRange(typeof candidate=="number"?candidate:NaN,fallback,min,max)},colors=[],icons=[],project=(input,accept)=>{const length=boundedOwnArrayLength(input,MAX_MAP_STEP_STOPS)??0;for(let index=0;index<length;index++){const row=optionalDescriptorValue(getOwnDataDescriptor(input,String(index)));row!==null&&typeof row=="object"&&accept(row)}};return project(read("colors"),row=>{const key=optionalDescriptorValue(getOwnDataDescriptor(row,"0")),color=optionalDescriptorValue(getOwnDataDescriptor(row,"1"));typeof key!="string"||typeof color!="string"||!sanitizeCssColor(color)||colors.some(([existing])=>existing===key)||colors.push(Object.freeze([key,color]))}),project(read("icons"),row=>{const key=optionalDescriptorValue(getOwnDataDescriptor(row,"value"));if(typeof key!="string"||icons.some(icon=>icon.value===key))return;const paint=projectIconPaint(row);paint&&icons.push(Object.freeze({value:key,...paint}))}),Object.freeze({field:string("field"),colors:Object.freeze(colors),radius:projectPointRadius(read("radius")),strokeWidth:number("strokeWidth",0,0,200),strokeColor:string("strokeColor"),iconField:string("iconField")??string("field"),icons:Object.freeze(icons),iconColor:string("iconColor"),iconSize:number("iconSize",16,1,200)})}const POINT_ICON_RASTER_SIZE=64;function rasterPointIcon(host,icon,color){try{const canvas=host.ownerDocument.createElement("canvas");canvas.width=canvas.height=POINT_ICON_RASTER_SIZE;const context=canvas.getContext("2d"),Path=host.ownerDocument.defaultView?.Path2D;if(!context||!Path)return;const[x,y,width,height]=icon.viewBox,scale=POINT_ICON_RASTER_SIZE/Math.max(width,height);context.translate((POINT_ICON_RASTER_SIZE-width*scale)/2,(POINT_ICON_RASTER_SIZE-height*scale)/2),context.scale(scale,scale),context.translate(-x,-y);const path=new Path(icon.path);return icon.mode!=="stroke"&&(context.fillStyle=color,context.fill(path)),icon.mode!=="fill"&&icon.strokeWidth>0&&(context.strokeStyle=color,context.lineWidth=icon.strokeWidth,context.lineCap=icon.lineCap,context.lineJoin=icon.lineJoin,context.stroke(path)),context.getImageData(0,0,POINT_ICON_RASTER_SIZE,POINT_ICON_RASTER_SIZE)}catch{return}}function projectLineOptions(value){try{if(!isRuntimeRecord(value))return;const field=optionalDescriptorValue(getOwnDataDescriptor(value,"field")),width=optionalDescriptorValue(getOwnDataDescriptor(value,"width")),opacity=optionalDescriptorValue(getOwnDataDescriptor(value,"opacity"));return Object.freeze({field:typeof field=="string"&&field.trim()?field.trim():void 0,stops:Object.freeze(normalizeMapLegendGradient(optionalDescriptorValue(getOwnDataDescriptor(value,"stops"))).filter((stop,index,stops)=>index===0||stop[0]>stops[index-1][0]).map(stop=>Object.freeze(stop))),width:typeof width=="number"?finiteRange(width,2,0,200):2,opacity:typeof opacity=="number"?finiteRange(opacity,1,0,1):1})}catch{return}}function projectedHeatmapRange(value){try{const length=boundedOwnArrayLength(value,2);if(length===void 0||length<2)return;const minDescriptor=getOwnDataDescriptor(value,"0"),maxDescriptor=getOwnDataDescriptor(value,"1");return minDescriptor===MISSING_OWN_DATA_DESCRIPTOR||maxDescriptor===MISSING_OWN_DATA_DESCRIPTOR||isUnsafeDescriptor(minDescriptor)||isUnsafeDescriptor(maxDescriptor)||typeof minDescriptor.value!="number"||typeof maxDescriptor.value!="number"||!Number.isFinite(minDescriptor.value)||!Number.isFinite(maxDescriptor.value)?void 0:Object.freeze([minDescriptor.value,maxDescriptor.value])}catch{return}}function projectedHeatmapZoomValue(value){if(typeof value=="number"&&Number.isFinite(value))return value;if(isRuntimeArray(value))return normalizedSteps(value,isFiniteOutput,zoom=>finiteRange(zoom,0,0,24))}function projectHeatmapOptions(value){try{if(!isRuntimeRecord(value))return;const weightFieldDescriptor=getOwnDataDescriptor(value,"weightField"),weightRangeDescriptor=getOwnDataDescriptor(value,"weightRange"),stopsDescriptor=getOwnDataDescriptor(value,"stops"),radiusDescriptor=getOwnDataDescriptor(value,"radius"),intensityDescriptor=getOwnDataDescriptor(value,"intensity"),opacityDescriptor=getOwnDataDescriptor(value,"opacity"),weightFieldValue=optionalDescriptorValue(weightFieldDescriptor),opacityValue=optionalDescriptorValue(opacityDescriptor);return Object.freeze({weightField:typeof weightFieldValue=="string"&&weightFieldValue.trim().length>0?weightFieldValue.trim():void 0,weightRange:projectedHeatmapRange(optionalDescriptorValue(weightRangeDescriptor)),stops:normalizedSteps(optionalDescriptorValue(stopsDescriptor),isColorOutput,density=>finiteRange(density,0,0,1)),radius:projectedHeatmapZoomValue(optionalDescriptorValue(radiusDescriptor)),intensity:projectedHeatmapZoomValue(optionalDescriptorValue(intensityDescriptor)),opacity:typeof opacityValue=="number"&&Number.isFinite(opacityValue)?opacityValue:void 0})}catch{return}}function dataLayerShape(layer){if(layer.kind==="heatmap")return"heatmap";const cluster=layer.cluster;return cluster?`cluster:${cluster.radius}:${cluster.maxZoom}:${cluster.countFont?.join(",")??""}`:"auto"}function projectMapChoropleth(value){try{if(!isRuntimeRecord(value))return;const sourceIdDescriptor=getOwnDataDescriptor(value,"sourceId"),geojsonDescriptor=getOwnDataDescriptor(value,"geojson"),fieldDescriptor=getOwnDataDescriptor(value,"field"),stopsDescriptor=getOwnDataDescriptor(value,"stops"),interpolationDescriptor=getOwnDataDescriptor(value,"interpolation"),stepBaseColorDescriptor=getOwnDataDescriptor(value,"stepBaseColor");if(sourceIdDescriptor===MISSING_OWN_DATA_DESCRIPTOR||geojsonDescriptor===MISSING_OWN_DATA_DESCRIPTOR||fieldDescriptor===MISSING_OWN_DATA_DESCRIPTOR||isUnsafeDescriptor(sourceIdDescriptor)||isUnsafeDescriptor(geojsonDescriptor)||isUnsafeDescriptor(fieldDescriptor))return;const sourceId=sourceIdDescriptor.value,geojson=geojsonDescriptor.value,field=fieldDescriptor.value;if(typeof sourceId!="string"||sourceId.trim().length===0||!isRuntimeRecord(geojson)||typeof field!="string"||field.trim().length===0)return;const interpolationValue=optionalDescriptorValue(interpolationDescriptor),stepBaseColorValue=optionalDescriptorValue(stepBaseColorDescriptor),interpolation=interpolationValue==="logarithmic"||interpolationValue==="step"?interpolationValue:"linear";return Object.freeze({sourceId:sourceId.trim(),geojson,geojsonProjection:projectAdmittedGeoJson(geojson),field:field.trim(),stops:normalizedSteps(optionalDescriptorValue(stopsDescriptor),isColorOutput),interpolation,stepBaseColor:typeof stepBaseColorValue=="string"&&stepBaseColorValue.trim().length>0?stepBaseColorValue:void 0})}catch{return}}const EMPTY_CANONICAL_MAP_MARKERS=Object.freeze([]),UNPROJECTED_MAP_VALUE=Symbol("unprojected-map-value");function projectMarkerLngLat(value){try{const length=boundedOwnArrayLength(value,2);if(length===void 0||length<2)return;const lngDescriptor=getOwnDataDescriptor(value,"0"),latDescriptor=getOwnDataDescriptor(value,"1");return lngDescriptor===MISSING_OWN_DATA_DESCRIPTOR||latDescriptor===MISSING_OWN_DATA_DESCRIPTOR||isUnsafeDescriptor(lngDescriptor)||isUnsafeDescriptor(latDescriptor)||typeof lngDescriptor.value!="number"||typeof latDescriptor.value!="number"||!Number.isFinite(lngDescriptor.value)||!Number.isFinite(latDescriptor.value)||latDescriptor.value<-90||latDescriptor.value>90?void 0:Object.freeze([lngDescriptor.value,latDescriptor.value])}catch{return}}function projectMapMarker(value){try{if(!isRuntimeRecord(value))return;const idDescriptor=getOwnDataDescriptor(value,"id"),lngLatDescriptor=getOwnDataDescriptor(value,"lngLat"),colorDescriptor=getOwnDataDescriptor(value,"color"),labelDescriptor=getOwnDataDescriptor(value,"label"),unsafeHtmlDescriptor=getOwnDataDescriptor(value,"unsafeHtml");if(lngLatDescriptor===MISSING_OWN_DATA_DESCRIPTOR||isUnsafeDescriptor(idDescriptor)||isUnsafeDescriptor(lngLatDescriptor)||isUnsafeDescriptor(colorDescriptor)||isUnsafeDescriptor(labelDescriptor)||isUnsafeDescriptor(unsafeHtmlDescriptor))return;const lngLat=projectMarkerLngLat(lngLatDescriptor.value),idValue=optionalDescriptorValue(idDescriptor),labelValue=optionalDescriptorValue(labelDescriptor);if(!lngLat||idValue!==void 0&&typeof idValue!="string"||typeof idValue=="string"&&idValue.trim().length===0||labelValue!==void 0&&typeof labelValue!="string")return;const colorValue=optionalDescriptorValue(colorDescriptor);return Object.freeze({id:typeof idValue=="string"?idValue.trim():void 0,lngLat,color:typeof colorValue=="string"?colorValue:void 0,label:typeof labelValue=="string"?labelValue:void 0,unsafeHtml:optionalDescriptorValue(unsafeHtmlDescriptor)})}catch{return}}function projectMapMarkers(value){try{const scanCount=boundedOwnArrayLength(value,MAX_MAP_MARKERS);if(scanCount===void 0)return EMPTY_CANONICAL_MAP_MARKERS;const output=[],explicitIds=new Set;for(let index=0;index<scanCount;index+=1){const descriptor=getOwnDataDescriptor(value,String(index));if(descriptor===MISSING_OWN_DATA_DESCRIPTOR||isUnsafeDescriptor(descriptor))continue;const marker=projectMapMarker(descriptor.value);!marker||marker.id!==void 0&&explicitIds.has(marker.id)||(marker.id!==void 0&&explicitIds.add(marker.id),output.push(marker))}return output.length?Object.freeze(output):EMPTY_CANONICAL_MAP_MARKERS}catch{return EMPTY_CANONICAL_MAP_MARKERS}}function setPopupContent(popup,marker){const options=popup.options,focus=options?.focusAfterOpen;return options&&(options.focusAfterOpen=!1),marker.unsafeHtml?popup.setHTML(marker.unsafeHtml):popup.setText(marker.label),options&&(options.focusAfterOpen=focus),popup}const FIT_EVENT_KEY="lyraMapFit";function snapshotCenter(center){return Array.isArray(center)?[center[0],center[1]]:center}function sameCenterValue(a,b){return Array.isArray(a)&&Array.isArray(b)?Object.is(a[0],b[0])&&Object.is(a[1],b[1]):Object.is(a,b)}function isFiniteCoordinate(value){return typeof value=="number"&&Number.isFinite(value)}function normalizeFitBounds(bounds){if(!Array.isArray(bounds)||bounds.length!==2)return;const[southWest,northEast]=bounds;if(!Array.isArray(southWest)||!Array.isArray(northEast)||southWest.length!==2||northEast.length!==2)return;const[west,south]=southWest,[east,north]=northEast;if(!(!isFiniteCoordinate(west)||!isFiniteCoordinate(south)||!isFiniteCoordinate(east)||!isFiniteCoordinate(north))&&!(west<-180||west>180||east<-180||east>west+360)&&!(south<-90||north>90||south>north))return Object.freeze([Object.freeze([west,south]),Object.freeze([west>east?east+360:east,north])])}function normalizeFitPadding(padding){const side=value=>finiteRange(typeof value=="number"?value:0,0,0);if(typeof padding=="number"){const all=side(padding);return Object.freeze({top:all,right:all,bottom:all,left:all})}const record=typeof padding=="object"&&padding!==null?padding:{};return Object.freeze({top:side(record.top),right:side(record.right),bottom:side(record.bottom),left:side(record.left)})}function wrapLongitude(longitude){if(longitude>=-180&&longitude<=180)return longitude;const wrapped=((longitude+180)%360+360)%360-180;return wrapped===-180?180:wrapped}function readPeerCamera(map){let longitude,latitude,zoom;try{({lng:longitude,lat:latitude}=map.getCenter()),zoom=map.getZoom()}catch{return}if(!(!isFiniteCoordinate(longitude)||!isFiniteCoordinate(latitude)||!isFiniteCoordinate(zoom)))return{center:[wrapLongitude(longitude),finiteRange(latitude,0,-90,90)],zoom}}const FALLBACK_FILL_OPACITY=.75;function ownerWindow(host){return host.ownerDocument?.defaultView??null}function choroplethFillOpacity(host){const raw=ownerWindow(host)?.getComputedStyle(host).getPropertyValue("--lr-map-choropleth-fill-opacity").trim()??"",parsed=Number.parseFloat(raw);return Number.isFinite(parsed)?parsed:FALLBACK_FILL_OPACITY}const FALLBACK_HIDDEN_CATEGORY_OPACITY=.15;function hiddenCategoryOpacity(host){const raw=ownerWindow(host)?.getComputedStyle(host).getPropertyValue("--lr-map-hidden-category-opacity").trim()??"";return finiteRange(Number.parseFloat(raw),FALLBACK_HIDDEN_CATEGORY_OPACITY,0,1)}const TONE_TOKEN={accent:"--lr-color-brand",success:"--lr-color-success",warning:"--lr-color-warning",danger:"--lr-color-danger",neutral:"--lr-color-text-quiet"},ON_TONE_TOKEN={accent:"--lr-color-on-brand",success:"--lr-color-on-success",warning:"--lr-color-on-warning",danger:"--lr-color-on-danger",neutral:"--lr-color-on-neutral"},HEATMAP_RAMP_TOKENS=Object.freeze([[.25,"--lr-color-brand"],[.5,"--lr-color-success"],[.75,"--lr-color-warning"],[1,"--lr-color-danger"]]);function dataLayerColor(host,tone){const token=TONE_TOKEN[tone??"accent"];return(ownerWindow(host)?.getComputedStyle(host).getPropertyValue(token).trim()??"")||DEFAULT_CANVAS_COLOR}const BASIC_MAP_PAINT_COLOR_NAMES=new Set(["aqua","black","blue","fuchsia","gray","green","lime","maroon","navy","olive","purple","red","silver","teal","white","yellow","transparent"]);function resolvedMapPaintColor(host,color,preserveLegacy){const candidate=typeof color=="string"?color.trim():"";if(!candidate)return;if(preserveLegacy){const reference=/^var\(\s*(--[\w-]+)\s*\)$/.exec(candidate),plain=reference?ownerWindow(host)?.getComputedStyle(host).getPropertyValue(reference[1]).trim()??"":candidate,namedPeerColor=BASIC_MAP_PAINT_COLOR_NAMES.has(plain.toLowerCase());if(/^#(?:[\da-f]{3,4}|[\da-f]{6}|[\da-f]{8})$/i.test(plain)||(/^rgba?\([\d\s.,/]+\)$/i.test(plain)||namedPeerColor)&&typeof CSS<"u"&&CSS.supports("color",plain))return plain}const resolved=resolveCanvasColor(host,candidate,"");if(!resolved)return;if(/^rgba?\(/i.test(resolved))return resolved;const canvas=host.ownerDocument.createElement("canvas");canvas.width=1,canvas.height=1;try{const context=canvas.getContext("2d",{colorSpace:"srgb",willReadFrequently:!0});if(!context)return;let accepted=!1;for(const sentinel of["rgb(1, 2, 3)","rgb(4, 5, 6)"]){context.fillStyle=sentinel;const before=context.fillStyle;if(context.fillStyle=resolved,context.fillStyle!==before){accepted=!0;break}}if(!accepted)return;context.fillRect(0,0,1,1);const[r=0,g=0,b=0,a=0]=context.getImageData(0,0,1,1).data;return a===255?`rgb(${r}, ${g}, ${b})`:`rgba(${r}, ${g}, ${b}, ${Math.round(a/255*1e3)/1e3})`}catch{return}}function resolvedLayerColor(host,explicit,tone){return resolvedMapPaintColor(host,explicit,!0)??resolvedMapPaintColor(host,dataLayerColor(host,tone),!0)??DEFAULT_CANVAS_COLOR}function resolvedClusterCountColor(host,color){return resolvedMapPaintColor(host,color,!1)}function resolvedClusterStrokeColor(host,clusterStroke,layer){return resolvedMapPaintColor(host,clusterStroke,!0)??resolvedLayerColor(host,layer.strokeColor??layer.color,layer.tone)}function warnOnUntileableProperties(projection,sourceLabel){if(litDevWarnings())for(const feature of projection.diagnostics)for(const[key,value]of feature.properties){if(typeof value!="number"||!Number.isFinite(value)||Math.abs(value)<=Number.MAX_SAFE_INTEGER)continue;const identity=feature.id??`index ${feature.index}`;devWarnOnce(`lyra-map-untileable-property:${sourceLabel}:${key}`,`<lr-map>: feature ${String(identity)} in "${sourceLabel}" carries ${key}=${value}, which is too large to survive maplibre-gl's vector-tile encoding. Tiling happens in a worker, so the failure would reach you only as an opaque "Given varint doesn't fit into 10 bytes" error while the rest of the layer still paints. Carry a reduced figure in the feature and keep the exact value in your own data.`)}}class LyraMap extends LyraElement{static{this.defaultStrings={...super.defaultStrings,close:LYRA_DEFAULT_close,items:LYRA_DEFAULT_items,legendTypeHidden:LYRA_DEFAULT_legendTypeHidden,legendTypeShown:LYRA_DEFAULT_legendTypeShown,loading:LYRA_DEFAULT_loading,map:LYRA_DEFAULT_map,mapFeedback:LYRA_DEFAULT_mapFeedback,mapInitializationFailed:LYRA_DEFAULT_mapInitializationFailed,mapLegend:LYRA_DEFAULT_mapLegend,mapMarker:LYRA_DEFAULT_mapMarker,mapMissingLibrary:LYRA_DEFAULT_mapMissingLibrary,mapResetNorth:LYRA_DEFAULT_mapResetNorth,mapStyleRequired:LYRA_DEFAULT_mapStyleRequired,mapToggleAttribution:LYRA_DEFAULT_mapToggleAttribution,mapWebglUnavailable:LYRA_DEFAULT_mapWebglUnavailable,paginationSummary:LYRA_DEFAULT_paginationSummary,zoomIn:LYRA_DEFAULT_zoomIn,zoomOut:LYRA_DEFAULT_zoomOut}}static{this.collectionSupport=collectionSupport}static{this.immutableEventDetails=Object.freeze(["lr-map-click","lr-map-legend-panel-toggle-request","lr-map-legend-toggle-request","lr-map-marker-activate","lr-map-view-change"])}static{this.identityEventDetailProperties=Object.freeze({"lr-map-click":Object.freeze(["feature"]),"lr-map-marker-activate":Object.freeze(["marker"])})}static{this.ownedCollectionProperties=Object.freeze(["center","mapStyle","choropleth","markers","dataLayers"])}static{this.identityCollectionProperties=Object.freeze(["markers","dataLayers"])}static{this.identityCollectionObjectProperties=Object.freeze(["choropleth"])}static{this.styles=[LyraElement.styles,styles,srOnly]}static preload(){return loadMaplibre().then(module=>module!==null)}constructor(){super(),this.hostDescription=new HostDescriptionController(this,()=>this._map?.getCanvas?.()??null),this._center=Object.freeze([0,0]),this.zoom=2,this.fitToken=Object.freeze({}),this.semanticsStale=!0,this.boxZoomSettling=!1,this.writingCamera=!1,this.maxBounds=null,this._legend=EMPTY_MAP_LEGEND,this._legendProjection=EMPTY_MAP_LEGEND_PROJECTION,this._legendGrouped=!1,this.hasLegendSlot=!1,this.hasLegendStartSlot=!1,this._legendGradient=Object.freeze([]),this.legendIsLine=!1,this.legendGradientLoLabel=null,this.legendGradientHiLabel=null,this.legendInteractive=!1,this._legendControlRole="button",this.legendCollapsible=!1,this.legendOpen=!0,this._hiddenCategories=EMPTY_HIDDEN_CATEGORIES,this.markers=[],this.dataLayers=[],this._canonicalChoroplethSource=UNPROJECTED_MAP_VALUE,this._canonicalDataLayersSource=UNPROJECTED_MAP_VALUE,this._canonicalDataLayers=EMPTY_CANONICAL_MAP_DATA_LAYERS,this._canonicalMarkersSource=UNPROJECTED_MAP_VALUE,this._canonicalMarkers=EMPTY_CANONICAL_MAP_MARKERS,this.loading=!0,this.announcements=new AnnouncementSinkController(this,{eager:["assertive"]}),this.loadLibrary=loadMaplibre,this.visible=ownerWindow(this)?.IntersectionObserver===void 0,this._styleLoaded=!1,this._appliedDataLayerIds=new Map,this._appliedDataLayerShapes=new Map,this._appliedGeoJson=new Map,this._nextDataLayerId=0,this.nextPointIconId=0,this.appliedPointPaint=new Set,this.appliedPointMuting=new Set,this.appliedPointIcons=new Map,this._webglReady=!1,this._markerInstances=new Map,this._markerLabels=new Map,this._markerPopupIds=new Map,this.markerActivationDetails=new WeakMap,this._configuredPopups=new WeakSet,this._nextPopupId=0,this._markerColors=new Map,this._markerSources=new Map,this._connectGeneration=0,this._styleGeneration=0,this.configuredMarkerElements=new WeakSet,this.onLegendSlotChange=event=>{const slot=event.target,filled=slot.assignedNodes({flatten:!0}).some(node=>node.nodeType===Node.ELEMENT_NODE||(node.textContent??"").trim().length>0);slot.name==="legend-start"?this.hasLegendStartSlot=filled:this.hasLegendSlot=filled},new ThemeWatcher(this,()=>{this.refreshThemePaint(),this.legendIsLine=this.legendDescribesLine(),this.applyMarkers()}),new GlassScrollLayer(this,'[part="legend"]')}get center(){return this._center}set center(value){this._center=value}get legend(){return this._legend}set legend(value){if(value===this._legendSource||value===this._legend)return;this._legendSource=value;const previous=this._legend,normalized=normalizeMapLegend(value);this._legend=normalized.entries,this._legendProjection=normalized.projection,this._legendGrouped=normalized.grouped,this.requestUpdate("legend",previous)}probeLegendSlot(name){for(const child of Array.from(this.children))if(child.getAttribute("slot")===name)return!0;return!1}get legendGradient(){return this._legendGradient}set legendGradient(value){if(value===this._legendGradientSource||value===this._legendGradient)return;this._legendGradientSource=value;const previous=this._legendGradient;this._legendGradient=normalizeMapLegendGradient(value),this.requestUpdate("legendGradient",previous)}warnOnLegendChoroplethMismatch(){if(!litDevWarnings()||this.legendIsLine)return;const layer=this.canonicalChoropleth,legend=this.legendGradient;!layer||legend.length===0||layer.stops.length===0||legend.length===layer.stops.length&&legend.every(([legendValue,legendColor],index)=>{const layerStop=layer.stops[index];return layerStop!==void 0&&layerStop[0]===legendValue&&resolvedLayerColor(this,layerStop[1],void 0)===resolvedLayerColor(this,legendColor,void 0)})||devWarnOnce("lyra-map-legend-choropleth-mismatch",`<${this.localName}>: legendGradient does not match choropleth.stops, so the visible key may misdescribe the map. Assign the same stops array to both, or derive both from one source.`)}legendDescribesLine(){const stops=this.legendGradient;return stops.length<2?!1:this.canonicalDataLayers.some(layer=>layer.kind==="auto"&&!layer.cluster&&layer.line?.field&&layer.line.stops.length===stops.length&&layer.line.stops.every(([value,color],index)=>value===stops[index][0]&&resolvedLayerColor(this,color,layer.tone)===resolvedLayerColor(this,stops[index][1],layer.tone)))}get legendProjection(){return this._legendProjection}set legendProjection(_value){}get legendControlRole(){return this._legendControlRole}set legendControlRole(next){const normalized=LEGEND_CONTROL_ROLE.normalizeReflected(this,"legend-control-role",next),old=this._legendControlRole;old!==normalized&&(this._legendControlRole=normalized,this.requestUpdate("legendControlRole",old))}get legendCollapsed(){return this.legendCollapsible&&!this.legendOpen}toggleLegendPanel(){if(!this.legendCollapsible)return;const open=!this.legendOpen;this.emit("lr-map-legend-panel-toggle-request",{open},{cancelable:!0}).defaultPrevented||(this.legendOpen=open)}renderLegendDisclosure(){return this.legendCollapsible?html`<button
|
|
13
13
|
part="legend-disclosure"
|
|
14
14
|
type="button"
|
|
15
15
|
aria-expanded=${this.legendOpen?"true":"false"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{
|
|
1
|
+
import{createOptionalPeerLoader}from"../../../internal/optional-peer-capabilities.js";const QR_CODE_PEER_WARNING_KEY="lyra-qr-code-peer-unavailable",QR_CODE_PEER_WARNING="<lr-qr-code> could not load its optional qrcode peer.";function isQrCodeApi(value){return(typeof value=="object"||typeof value=="function")&&value!==null&&"create"in value&&typeof value.create=="function"}const qrCode=createOptionalPeerLoader({load:()=>import("qrcode"),isCapability:candidate=>{try{return isQrCodeApi(candidate)}catch{return!1}},warningKey:QR_CODE_PEER_WARNING_KEY,warning:QR_CODE_PEER_WARNING});function loadQrCode(importQrCode){return qrCode.loadWith(importQrCode)}function loadQrCodeCached(){return qrCode.get()}function clearQrCodeCache(){qrCode.clear()}export{clearQrCodeCache,loadQrCode,loadQrCodeCached};
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import{__decorate}from"tslib";import{html,nothing}from"lit";import{property,state}from"lit/decorators.js";import{styleMap}from"lit/directives/style-map.js";import{resolveBoundedCanvasAllocation}from"../../../internal/canvas.js";import{LyraElement}from"../../../internal/lyra-element.js";import{devWarnOnce}from"../../../internal/dev-mode-attribute-warning.js";import{resolveCanvasColor}from"../../../internal/canvas-color.js";import{finiteRange}from"../../../internal/numbers.js";import{safeMediaSrc}from"../../../internal/safe-url.js";import{ThemeWatcher}from"../../../internal/theme-watcher.js";import{loadQrCodeCached}from"./qr-code-loader.js";import{styles}from"./qr-code.styles.js";import{AnnouncementSinkController}from"../../../internal/announcer.js";import{LYRA_DEFAULT_collapse,LYRA_DEFAULT_details,LYRA_DEFAULT_loading,LYRA_DEFAULT_map,LYRA_DEFAULT_noData,LYRA_DEFAULT_open,LYRA_DEFAULT_qrCodeGenerationFailed,LYRA_DEFAULT_qrCodeMissingLibrary}from"../../../internal/default-strings.generated.js";const DEFAULT_SIZE=128,MIN_SIZE=1,MAX_SIZE=2048,QR_BACKING_SCALE=2,MAX_CANVAS_DIMENSION=4096,MAX_CANVAS_PIXELS=8388608,MAX_QR_MODULE_COUNT=177,DEFAULT_RADIUS=0,MIN_RADIUS=0,MAX_RADIUS=.5,DEFAULT_IMAGE_COVERAGE=.5,DEFAULT_IMAGE_PADDING=0,DEFAULT_ERROR_CORRECTION="H",ERROR_CORRECTION_LEVELS=new Set(["L","M","Q","H"]),FALLBACK_FILL="#000000",FALLBACK_BACKGROUND="transparent",INVALID_COLOR_WARNING_KEY="lyra-qr-code-invalid-color",INVALID_COLOR_WARNING="<lr-qr-code> received an invalid color and used its fallback color.";function isObjectLike(value){return(typeof value=="object"||typeof value=="function")&&value!==null}function readIntersectionState(entries,target){try{if(!Array.isArray(entries))return;for(const candidate of entries)if(isObjectLike(candidate))try{const entry=candidate;if(entry.target!==target)continue;const isIntersecting=entry.isIntersecting;if(typeof isIntersecting=="boolean")return isIntersecting}catch{}}catch{}}function normalizeQrModules(result){if(!isObjectLike(result))throw new TypeError("QR result must be an object.");const modules=result.modules;if(!isObjectLike(modules))throw new TypeError("QR result has no module matrix.");const size=modules.size,get=modules.get;if(!Number.isSafeInteger(size)||size<1||size>MAX_QR_MODULE_COUNT)throw new TypeError("QR module count is invalid.");if(typeof get!="function")throw new TypeError("QR module reader is invalid.");const moduleCount=size,bits=new Uint8Array(moduleCount*moduleCount);for(let row=0;row<moduleCount;row++)for(let col=0;col<moduleCount;col++){const value=Reflect.apply(get,modules,[row,col]);if(value!==0&&value!==1&&value!==!1&&value!==!0)throw new TypeError("QR module value is invalid.");bits[row*moduleCount+col]=value===1||value===!0?1:0}return Object.freeze({size:moduleCount,get(row,col){return!Number.isInteger(row)||!Number.isInteger(col)||row<0||col<0||row>=moduleCount||col>=moduleCount?0:bits[row*moduleCount+col]===1?1:0}})}function normalizeErrorCorrection(value){const upper=value.toUpperCase();return ERROR_CORRECTION_LEVELS.has(upper)?upper:DEFAULT_ERROR_CORRECTION}const errorCorrectionConverter={fromAttribute(value){return value===null?DEFAULT_ERROR_CORRECTION:normalizeErrorCorrection(value)}};class LyraQrCode extends LyraElement{static{this.defaultStrings={...super.defaultStrings,collapse:LYRA_DEFAULT_collapse,details:LYRA_DEFAULT_details,loading:LYRA_DEFAULT_loading,map:LYRA_DEFAULT_map,noData:LYRA_DEFAULT_noData,open:LYRA_DEFAULT_open,qrCodeGenerationFailed:LYRA_DEFAULT_qrCodeGenerationFailed,qrCodeMissingLibrary:LYRA_DEFAULT_qrCodeMissingLibrary}}static{this.styles=[LyraElement.styles,styles]}static preload(){return loadQrCodeCached().then(api=>api!==null)}get size(){return this._size}set size(value){const oldValue=this._size;this._size=finiteRange(value,DEFAULT_SIZE,MIN_SIZE,MAX_SIZE),this.requestUpdate("size",oldValue)}get radius(){return this._radius}set radius(value){const oldValue=this._radius;this._radius=finiteRange(value,DEFAULT_RADIUS,MIN_RADIUS,MAX_RADIUS),this.requestUpdate("radius",oldValue)}get errorCorrection(){return this._errorCorrection}set errorCorrection(value){const oldValue=this._errorCorrection;this._errorCorrection=normalizeErrorCorrection(value),this.requestUpdate("errorCorrection",oldValue)}get canvas(){return this.renderRoot?.querySelector("canvas")}constructor(){super(),this.value="",this.label="",this.fill="",this.background="",this.image=null,this.imageBackground=null,this.imageCoverage=null,this.imagePadding=null,this._size=DEFAULT_SIZE,this._radius=DEFAULT_RADIUS,this._errorCorrection=DEFAULT_ERROR_CORRECTION,this.loadState={kind:"empty"},this.announcements=new AnnouncementSinkController(this,{eager:["assertive","polite"]}),this.pendingLoadingAnnouncement=!1,this.visible=!0,this.visibilityKnown=!0,this.intersectionGeneration=0,this.loadLibrary=loadQrCodeCached,this.generation=0;try{this.accessibilityInternals=this.attachInternals()}catch{this.accessibilityInternals=void 0}this.syncSemanticOwner(),new ThemeWatcher(this,()=>this.refreshTheme())}connectedCallback(){this.value&&this.loadState.kind==="empty"?this.transitionTo({kind:"loading"}):this.setAttribute("aria-busy",this.loadState.kind==="loading"?"true":"false"),super.connectedCallback(),this.bindVisibilityObserver(),this.hasUpdated&&this.value&&(this.loadState.kind==="loading"||this.image&&this.loadState.kind==="ready"&&!this.loadState.image)&&this.generate()}disconnectedCallback(){this.generation++,this.clearVisibilityObserver(),this.visible=!1,this.visibilityKnown=!1,this.pendingLoadingAnnouncement=!1,super.disconnectedCallback()}adoptedCallback(){super.adoptedCallback(),this.clearVisibilityObserver(),this.visible=!1,this.visibilityKnown=!1,this.announcements.adopted()}bindVisibilityObserver(){this.clearVisibilityObserver();const owner=this.ownerDocument.defaultView;if(!owner){this.restoreImmediateVisibility();return}let IntersectionObserverCtor;try{IntersectionObserverCtor=owner.IntersectionObserver}catch{this.restoreImmediateVisibility();return}if(typeof IntersectionObserverCtor!="function"){this.restoreImmediateVisibility();return}this.visible=!1,this.visibilityKnown=!1;const generation=++this.intersectionGeneration;let observer;try{observer=new IntersectionObserverCtor(entries=>{if(generation!==this.intersectionGeneration||!this.isConnected||this.ownerDocument.defaultView!==owner||this.intersectionObserver!==observer)return;const isIntersecting=readIntersectionState(entries,this);if(isIntersecting===void 0)return;const wasPaintable=this.visibilityKnown&&this.visible;this.visibilityKnown=!0,this.visible=isIntersecting,this.visible&&!wasPaintable&&this.draw()}),this.intersectionObserver=observer,observer.observe(this)}catch{try{observer?.disconnect()}catch{}if(generation!==this.intersectionGeneration)return;this.intersectionObserver=void 0,this.intersectionGeneration++,this.restoreImmediateVisibility()}}clearVisibilityObserver(){this.intersectionGeneration++;try{this.intersectionObserver?.disconnect()}catch{}this.intersectionObserver=void 0}restoreImmediateVisibility(){this.visible=!0,this.visibilityKnown=!0,this.isConnected&&this.draw()}transitionTo(next){const announcesLoading=next.kind==="loading"&&this.loadState.kind!=="loading"&&this.hasUpdated&&this.isConnected;this.loadState=next,this.setAttribute("aria-busy",next.kind==="loading"?"true":"false"),this.syncSemanticOwner(),announcesLoading&&(this.pendingLoadingAnnouncement=!0)}syncSemanticOwner(){const semantic=this.loadState.kind==="loading"||this.loadState.kind==="ready";this.accessibilityInternals&&(this.accessibilityInternals.role=semantic?"img":null,this.accessibilityInternals.ariaLabel=semantic?this.label||this.value:null)}updated(changed){if(super.updated(changed),this.syncSemanticOwner(),this.pendingLoadingAnnouncement&&(this.pendingLoadingAnnouncement=!1,this.announcements.announcePolite(this.localize("loading"))),changed.has("value")||changed.has("errorCorrection")||changed.has("image")||!this.hasUpdated){this.scheduleAfterUpdate(()=>{this.generate()});return}this.loadState.kind==="ready"&&(changed.has("size")||changed.has("radius")||changed.has("fill")||changed.has("background")||changed.has("imageBackground")||changed.has("imageCoverage")||changed.has("imagePadding")||changed.has("loadState"))&&this.draw()}willUpdate(changed){super.willUpdate(changed),(changed.has("value")||changed.has("errorCorrection")||changed.has("image"))&&this.transitionTo(this.value?{kind:"loading"}:{kind:"empty"})}generate(){this.generateCurrentValue()}async generateCurrentValue(){const generation=++this.generation;if(!this.value){this.transitionTo({kind:"empty"});return}this.transitionTo({kind:"loading"});try{const api=await this.loadLibrary();if(generation!==this.generation||!this.isConnected)return;if(!api){this.transitionTo({kind:"error",key:"qrCodeMissingLibrary"}),this.announcements.announceAssertive(this.localize("qrCodeMissingLibrary"));return}const imageSource=safeMediaSrc(this.image),result=api.create(this.value,{errorCorrectionLevel:imageSource?"H":this.errorCorrection}),modules=normalizeQrModules(result);if(generation!==this.generation)return;if(this.transitionTo({kind:"ready",modules}),imageSource){const image=await this.loadEmbeddedImage(imageSource);if(generation!==this.generation||!this.isConnected||!image)return;this.transitionTo({kind:"ready",modules,image})}}catch{if(generation!==this.generation||!this.isConnected)return;this.transitionTo({kind:"error",key:"qrCodeGenerationFailed"}),this.announcements.announceAssertive(this.localize("qrCodeGenerationFailed"))}}async loadEmbeddedImage(src){const ImageCtor=this.ownerDocument.defaultView?.Image;if(!ImageCtor)return;const image=new ImageCtor;return image.decoding="async",await new Promise(resolve=>{image.addEventListener("load",()=>resolve(!0),{once:!0}),image.addEventListener("error",()=>resolve(!1),{once:!0}),image.src=src})&&image.naturalWidth>0&&image.naturalHeight>0?image:void 0}refreshTheme(){this.draw()}resolveColor(value,fallback){const resolved=resolveCanvasColor(this,value,fallback);return resolved===fallback&&devWarnOnce(INVALID_COLOR_WARNING_KEY,INVALID_COLOR_WARNING),resolved}fillColor(){const computed=this.ownerDocument.defaultView?.getComputedStyle(this);return this.resolveColor(this.fill.trim()||computed?.color?.trim()||FALLBACK_FILL,FALLBACK_FILL)}backgroundColor(){const computed=this.ownerDocument.defaultView?.getComputedStyle(this);return this.resolveColor(this.background.trim()||computed?.backgroundColor?.trim()||FALLBACK_BACKGROUND,FALLBACK_BACKGROUND)}draw(){if(this.loadState.kind!=="ready"||!this.visibilityKnown||!this.visible)return;const canvas=this.canvas;if(!canvas)return;const{modules}=this.loadState,size=this.size,allocation=LyraQrCode.canvasAllocation(size);canvas.width=allocation.pixelWidth,canvas.height=allocation.pixelHeight,canvas.style.width=`${size}px`,canvas.style.height=`${size}px`;const ctx=canvas.getContext("2d");if(!ctx)return;ctx.scale(allocation.scaleX,allocation.scaleY);const background=this.backgroundColor(),fill=this.fillColor();ctx.fillStyle=background,ctx.fillRect(0,0,size,size);const moduleCount=modules.size,moduleSize=size/moduleCount,radiusPx=this.radius*moduleSize,canRoundRect=typeof ctx.roundRect=="function";ctx.fillStyle=fill;for(let row=0;row<moduleCount;row++)for(let col=0;col<moduleCount;col++){if(!modules.get(row,col))continue;const x=col*moduleSize,y=row*moduleSize;this.radius>0&&canRoundRect?(ctx.beginPath(),ctx.roundRect(x,y,moduleSize,moduleSize,radiusPx),ctx.fill()):ctx.fillRect(x,y,moduleSize,moduleSize)}this.loadState.image&&this.drawEmbeddedImage(ctx,this.loadState.image,size)}static canvasAllocation(cssSize){return resolveBoundedCanvasAllocation({cssWidth:cssSize,cssHeight:cssSize,desiredScale:QR_BACKING_SCALE,maxDimension:MAX_CANVAS_DIMENSION,maxPixels:MAX_CANVAS_PIXELS})}drawEmbeddedImage(ctx,image,size){const coverage=finiteRange(this.imageCoverage??DEFAULT_IMAGE_COVERAGE,DEFAULT_IMAGE_COVERAGE,0,1),boxSize=size*coverage;if(boxSize<=0)return;const padding=finiteRange(this.imagePadding??DEFAULT_IMAGE_PADDING,DEFAULT_IMAGE_PADDING,0,boxSize/2),contentSize=boxSize-padding*2,boxStart=(size-boxSize)/2;if(this.imageBackground?.trim()&&(ctx.fillStyle=resolveCanvasColor(this,this.imageBackground.trim(),this.backgroundColor()),ctx.fillRect(boxStart,boxStart,boxSize,boxSize)),contentSize<=0)return;const scale=Math.min(contentSize/image.naturalWidth,contentSize/image.naturalHeight),width=image.naturalWidth*scale,height=image.naturalHeight*scale;ctx.drawImage(image,(size-width)/2,(size-height)/2,width,height)}accessibleName(){return this.getAttribute("aria-label")??(this.label||this.value)}renderBody(){switch(this.loadState.kind){case"empty":return html`<div part="empty">${this.localize("noData")}</div>`;case"loading":return html`<div part="loading">${this.localize("loading")}</div>`;case"error":return html`<div part="error">${this.localize(this.loadState.key)}</div>`;case"ready":return nothing}}render(){const ready=this.loadState.kind==="ready",fallbackSemantics=!this.accessibilityInternals&&ready;return html`<div part="base qr-code" style=${styleMap({inlineSize:`${this.size}px`,blockSize:`${this.size}px`})}>
|
|
1
|
+
import{__decorate}from"tslib";import{html,nothing}from"lit";import{property,state}from"lit/decorators.js";import{styleMap}from"lit/directives/style-map.js";import{resolveBoundedCanvasAllocation}from"../../../internal/canvas.js";import{LyraElement}from"../../../internal/lyra-element.js";import{devWarnOnce}from"../../../internal/dev-mode-attribute-warning.js";import{resolveCanvasColor}from"../../../internal/canvas-color.js";import{finiteRange}from"../../../internal/numbers.js";import{safeMediaSrc}from"../../../internal/safe-url.js";import{ThemeWatcher}from"../../../internal/theme-watcher.js";import{loadQrCodeCached}from"./qr-code-loader.js";import{styles}from"./qr-code.styles.js";import{AnnouncementSinkController}from"../../../internal/announcer.js";import{LYRA_DEFAULT_collapse,LYRA_DEFAULT_details,LYRA_DEFAULT_loading,LYRA_DEFAULT_map,LYRA_DEFAULT_noData,LYRA_DEFAULT_open,LYRA_DEFAULT_qrCodeGenerationFailed,LYRA_DEFAULT_qrCodeMissingLibrary}from"../../../internal/default-strings.generated.js";const DEFAULT_SIZE=128,MIN_SIZE=1,MAX_SIZE=2048,QR_BACKING_SCALE=2,MAX_CANVAS_DIMENSION=4096,MAX_CANVAS_PIXELS=8388608,MAX_QR_MODULE_COUNT=177,DEFAULT_RADIUS=0,MIN_RADIUS=0,MAX_RADIUS=.5,DEFAULT_IMAGE_COVERAGE=.5,DEFAULT_IMAGE_PADDING=0,DEFAULT_ERROR_CORRECTION="H",ERROR_CORRECTION_LEVELS=new Set(["L","M","Q","H"]),FALLBACK_FILL="#000000",FALLBACK_BACKGROUND="transparent",INVALID_COLOR_WARNING_KEY="lyra-qr-code-invalid-color",INVALID_COLOR_WARNING="<lr-qr-code> received an invalid color and used its fallback color.";function isObjectLike(value){return(typeof value=="object"||typeof value=="function")&&value!==null}function readIntersectionState(entries,target){try{if(!Array.isArray(entries))return;for(const candidate of entries)if(isObjectLike(candidate))try{const entry=candidate;if(entry.target!==target)continue;const isIntersecting=entry.isIntersecting;if(typeof isIntersecting=="boolean")return isIntersecting}catch{}}catch{}}function normalizeQrModules(result){if(!isObjectLike(result))throw new TypeError("QR result must be an object.");const modules=result.modules;if(!isObjectLike(modules))throw new TypeError("QR result has no module matrix.");const size=modules.size,get=modules.get;if(!Number.isSafeInteger(size)||size<1||size>MAX_QR_MODULE_COUNT)throw new TypeError("QR module count is invalid.");if(typeof get!="function")throw new TypeError("QR module reader is invalid.");const moduleCount=size,bits=new Uint8Array(moduleCount*moduleCount);for(let row=0;row<moduleCount;row++)for(let col=0;col<moduleCount;col++){const value=Reflect.apply(get,modules,[row,col]);if(value!==0&&value!==1&&value!==!1&&value!==!0)throw new TypeError("QR module value is invalid.");bits[row*moduleCount+col]=value===1||value===!0?1:0}return Object.freeze({size:moduleCount,get(row,col){return!Number.isInteger(row)||!Number.isInteger(col)||row<0||col<0||row>=moduleCount||col>=moduleCount?0:bits[row*moduleCount+col]===1?1:0}})}function normalizeErrorCorrection(value){const upper=value.toUpperCase();return ERROR_CORRECTION_LEVELS.has(upper)?upper:DEFAULT_ERROR_CORRECTION}const errorCorrectionConverter={fromAttribute(value){return value===null?DEFAULT_ERROR_CORRECTION:normalizeErrorCorrection(value)}};class LyraQrCode extends LyraElement{static{this.defaultStrings={...super.defaultStrings,collapse:LYRA_DEFAULT_collapse,details:LYRA_DEFAULT_details,loading:LYRA_DEFAULT_loading,map:LYRA_DEFAULT_map,noData:LYRA_DEFAULT_noData,open:LYRA_DEFAULT_open,qrCodeGenerationFailed:LYRA_DEFAULT_qrCodeGenerationFailed,qrCodeMissingLibrary:LYRA_DEFAULT_qrCodeMissingLibrary}}static{this.styles=[LyraElement.styles,styles]}static preload(){return loadQrCodeCached().then(api=>api!==null)}get size(){return this._size}set size(value){const oldValue=this._size;this._size=finiteRange(value,DEFAULT_SIZE,MIN_SIZE,MAX_SIZE),this.requestUpdate("size",oldValue)}get radius(){return this._radius}set radius(value){const oldValue=this._radius;this._radius=finiteRange(value,DEFAULT_RADIUS,MIN_RADIUS,MAX_RADIUS),this.requestUpdate("radius",oldValue)}get errorCorrection(){return this._errorCorrection}set errorCorrection(value){const oldValue=this._errorCorrection;this._errorCorrection=normalizeErrorCorrection(value),this.requestUpdate("errorCorrection",oldValue)}get canvas(){return this.renderRoot?.querySelector("canvas")}constructor(){super(),this.value="",this.label="",this.fill="",this.background="",this.image=null,this.imageBackground=null,this.imageCoverage=null,this.imagePadding=null,this._size=DEFAULT_SIZE,this._radius=DEFAULT_RADIUS,this._errorCorrection=DEFAULT_ERROR_CORRECTION,this.loadState={kind:"empty"},this.announcements=new AnnouncementSinkController(this),this.pendingLoadingAnnouncement=!1,this.visible=!0,this.visibilityKnown=!0,this.intersectionGeneration=0,this.loadLibrary=loadQrCodeCached,this.generation=0;try{this.accessibilityInternals=this.attachInternals()}catch{this.accessibilityInternals=void 0}this.syncSemanticOwner(),new ThemeWatcher(this,()=>this.refreshTheme())}connectedCallback(){this.value&&this.loadState.kind==="empty"?this.transitionTo({kind:"loading"}):this.setAttribute("aria-busy",this.loadState.kind==="loading"?"true":"false"),super.connectedCallback(),this.bindVisibilityObserver(),this.hasUpdated&&this.value&&(this.loadState.kind==="loading"||this.image&&this.loadState.kind==="ready"&&!this.loadState.image)&&this.generate()}disconnectedCallback(){this.generation++,this.clearVisibilityObserver(),this.visible=!1,this.visibilityKnown=!1,this.pendingLoadingAnnouncement=!1,super.disconnectedCallback()}adoptedCallback(){super.adoptedCallback(),this.clearVisibilityObserver(),this.visible=!1,this.visibilityKnown=!1,this.announcements.adopted()}bindVisibilityObserver(){this.clearVisibilityObserver();const owner=this.ownerDocument.defaultView;if(!owner){this.restoreImmediateVisibility();return}let IntersectionObserverCtor;try{IntersectionObserverCtor=owner.IntersectionObserver}catch{this.restoreImmediateVisibility();return}if(typeof IntersectionObserverCtor!="function"){this.restoreImmediateVisibility();return}this.visible=!1,this.visibilityKnown=!1;const generation=++this.intersectionGeneration;let observer;try{observer=new IntersectionObserverCtor(entries=>{if(generation!==this.intersectionGeneration||!this.isConnected||this.ownerDocument.defaultView!==owner||this.intersectionObserver!==observer)return;const isIntersecting=readIntersectionState(entries,this);if(isIntersecting===void 0)return;const wasPaintable=this.visibilityKnown&&this.visible;this.visibilityKnown=!0,this.visible=isIntersecting,this.visible&&!wasPaintable&&this.draw()}),this.intersectionObserver=observer,observer.observe(this)}catch{try{observer?.disconnect()}catch{}if(generation!==this.intersectionGeneration)return;this.intersectionObserver=void 0,this.intersectionGeneration++,this.restoreImmediateVisibility()}}clearVisibilityObserver(){this.intersectionGeneration++;try{this.intersectionObserver?.disconnect()}catch{}this.intersectionObserver=void 0}restoreImmediateVisibility(){this.visible=!0,this.visibilityKnown=!0,this.isConnected&&this.draw()}transitionTo(next){const announcesLoading=next.kind==="loading"&&this.loadState.kind!=="loading"&&this.hasUpdated&&this.isConnected;this.loadState=next,this.setAttribute("aria-busy",next.kind==="loading"?"true":"false"),this.syncSemanticOwner(),announcesLoading&&(this.pendingLoadingAnnouncement=!0)}syncSemanticOwner(){const semantic=this.loadState.kind==="loading"||this.loadState.kind==="ready";this.accessibilityInternals&&(this.accessibilityInternals.role=semantic?"img":null,this.accessibilityInternals.ariaLabel=semantic?this.label||this.value:null)}updated(changed){if(super.updated(changed),this.syncSemanticOwner(),this.pendingLoadingAnnouncement&&(this.pendingLoadingAnnouncement=!1,this.announcements.announcePolite(this.localize("loading"))),changed.has("value")||changed.has("errorCorrection")||changed.has("image")||!this.hasUpdated){this.scheduleAfterUpdate(()=>{this.generate()});return}this.loadState.kind==="ready"&&(changed.has("size")||changed.has("radius")||changed.has("fill")||changed.has("background")||changed.has("imageBackground")||changed.has("imageCoverage")||changed.has("imagePadding")||changed.has("loadState"))&&this.draw()}willUpdate(changed){super.willUpdate(changed),(changed.has("value")||changed.has("errorCorrection")||changed.has("image"))&&this.transitionTo(this.value?{kind:"loading"}:{kind:"empty"})}generate(){this.generateCurrentValue()}async generateCurrentValue(){const generation=++this.generation;if(!this.value){this.transitionTo({kind:"empty"});return}this.announcements.current("assertive"),this.announcements.current("polite"),this.transitionTo({kind:"loading"});try{const api=await this.loadLibrary();if(generation!==this.generation||!this.isConnected)return;if(!api){this.transitionTo({kind:"error",key:"qrCodeMissingLibrary"}),this.announcements.announceAssertive(this.localize("qrCodeMissingLibrary"));return}const imageSource=safeMediaSrc(this.image),result=api.create(this.value,{errorCorrectionLevel:imageSource?"H":this.errorCorrection}),modules=normalizeQrModules(result);if(generation!==this.generation)return;if(this.transitionTo({kind:"ready",modules}),imageSource){const image=await this.loadEmbeddedImage(imageSource);if(generation!==this.generation||!this.isConnected||!image)return;this.transitionTo({kind:"ready",modules,image})}}catch{if(generation!==this.generation||!this.isConnected)return;this.transitionTo({kind:"error",key:"qrCodeGenerationFailed"}),this.announcements.announceAssertive(this.localize("qrCodeGenerationFailed"))}}async loadEmbeddedImage(src){const ImageCtor=this.ownerDocument.defaultView?.Image;if(!ImageCtor)return;const image=new ImageCtor;return image.decoding="async",await new Promise(resolve=>{image.addEventListener("load",()=>resolve(!0),{once:!0}),image.addEventListener("error",()=>resolve(!1),{once:!0}),image.src=src})&&image.naturalWidth>0&&image.naturalHeight>0?image:void 0}refreshTheme(){this.draw()}resolveColor(value,fallback){const resolved=resolveCanvasColor(this,value,fallback);return resolved===fallback&&devWarnOnce(INVALID_COLOR_WARNING_KEY,INVALID_COLOR_WARNING),resolved}fillColor(){const computed=this.ownerDocument.defaultView?.getComputedStyle(this);return this.resolveColor(this.fill.trim()||computed?.color?.trim()||FALLBACK_FILL,FALLBACK_FILL)}backgroundColor(){const computed=this.ownerDocument.defaultView?.getComputedStyle(this);return this.resolveColor(this.background.trim()||computed?.backgroundColor?.trim()||FALLBACK_BACKGROUND,FALLBACK_BACKGROUND)}draw(){if(this.loadState.kind!=="ready"||!this.visibilityKnown||!this.visible)return;const canvas=this.canvas;if(!canvas)return;const{modules}=this.loadState,size=this.size,allocation=LyraQrCode.canvasAllocation(size);canvas.width=allocation.pixelWidth,canvas.height=allocation.pixelHeight,canvas.style.width=`${size}px`,canvas.style.height=`${size}px`;const ctx=canvas.getContext("2d");if(!ctx)return;ctx.scale(allocation.scaleX,allocation.scaleY);const background=this.backgroundColor(),fill=this.fillColor();ctx.fillStyle=background,ctx.fillRect(0,0,size,size);const moduleCount=modules.size,moduleSize=size/moduleCount,radiusPx=this.radius*moduleSize,canRoundRect=typeof ctx.roundRect=="function";ctx.fillStyle=fill;for(let row=0;row<moduleCount;row++)for(let col=0;col<moduleCount;col++){if(!modules.get(row,col))continue;const x=col*moduleSize,y=row*moduleSize;this.radius>0&&canRoundRect?(ctx.beginPath(),ctx.roundRect(x,y,moduleSize,moduleSize,radiusPx),ctx.fill()):ctx.fillRect(x,y,moduleSize,moduleSize)}this.loadState.image&&this.drawEmbeddedImage(ctx,this.loadState.image,size)}static canvasAllocation(cssSize){return resolveBoundedCanvasAllocation({cssWidth:cssSize,cssHeight:cssSize,desiredScale:QR_BACKING_SCALE,maxDimension:MAX_CANVAS_DIMENSION,maxPixels:MAX_CANVAS_PIXELS})}drawEmbeddedImage(ctx,image,size){const coverage=finiteRange(this.imageCoverage??DEFAULT_IMAGE_COVERAGE,DEFAULT_IMAGE_COVERAGE,0,1),boxSize=size*coverage;if(boxSize<=0)return;const padding=finiteRange(this.imagePadding??DEFAULT_IMAGE_PADDING,DEFAULT_IMAGE_PADDING,0,boxSize/2),contentSize=boxSize-padding*2,boxStart=(size-boxSize)/2;if(this.imageBackground?.trim()&&(ctx.fillStyle=resolveCanvasColor(this,this.imageBackground.trim(),this.backgroundColor()),ctx.fillRect(boxStart,boxStart,boxSize,boxSize)),contentSize<=0)return;const scale=Math.min(contentSize/image.naturalWidth,contentSize/image.naturalHeight),width=image.naturalWidth*scale,height=image.naturalHeight*scale;ctx.drawImage(image,(size-width)/2,(size-height)/2,width,height)}accessibleName(){return this.getAttribute("aria-label")??(this.label||this.value)}renderBody(){switch(this.loadState.kind){case"empty":return html`<div part="empty">${this.localize("noData")}</div>`;case"loading":return html`<div part="loading">${this.localize("loading")}</div>`;case"error":return html`<div part="error">${this.localize(this.loadState.key)}</div>`;case"ready":return nothing}}render(){const ready=this.loadState.kind==="ready",fallbackSemantics=!this.accessibilityInternals&&ready;return html`<div part="base qr-code" style=${styleMap({inlineSize:`${this.size}px`,blockSize:`${this.size}px`})}>
|
|
2
2
|
<canvas
|
|
3
3
|
part="canvas"
|
|
4
4
|
?hidden=${!ready}
|
|
@@ -1,8 +1,8 @@
|
|
|
1
|
-
import{__decorate}from"tslib";import{html,nothing}from"lit";import{property,query,state}from"lit/decorators.js";import{ref}from"lit/directives/ref.js";import{styleMap}from"lit/directives/style-map.js";import{LyraElement}from"../../../internal/lyra-element.js";import{hostAriaLabel,srOnly}from"../../../internal/a11y.js";import{getNumberFormat}from"../../../internal/intl-cache.js";import{formatMediaTime}from"../../../internal/media-time.js";import{MAX_NATIVE_PLAYBACK_RATE,MIN_NATIVE_PLAYBACK_RATE,NATIVE_MEDIA_RELAY_EVENTS,NativeMediaController,canExitFullscreen,canRequestFullscreen,canRequestPictureInPicture,safeNativeMediaSource}from"../../../internal/media-controller.js";import{finiteRange}from"../../../internal/numbers.js";import{relayNativeEvent}from"../../../internal/native-event-relay.js";import{readResponseText,resolveOwnerFetchTarget}from"../../../internal/resource-loader.js";import{safeMediaSrc}from"../../../internal/safe-url.js";import{styles}from"./video.styles.js";import{LYRA_DEFAULT_avPlayerPosition,LYRA_DEFAULT_avPlayerRateOption,LYRA_DEFAULT_pause,LYRA_DEFAULT_play,LYRA_DEFAULT_playbackPosition,LYRA_DEFAULT_videoCaptions,LYRA_DEFAULT_videoCaptionsOff,LYRA_DEFAULT_videoEnterFullscreen,LYRA_DEFAULT_videoExitFullscreen,LYRA_DEFAULT_videoExitPictureInPicture,LYRA_DEFAULT_videoMute,LYRA_DEFAULT_videoPictureInPicture,
|
|
1
|
+
import{__decorate}from"tslib";import{html,nothing}from"lit";import{property,query,state}from"lit/decorators.js";import{ref}from"lit/directives/ref.js";import{styleMap}from"lit/directives/style-map.js";import{LyraElement}from"../../../internal/lyra-element.js";import{hostAriaLabel,srOnly}from"../../../internal/a11y.js";import{getNumberFormat}from"../../../internal/intl-cache.js";import{formatMediaTime}from"../../../internal/media-time.js";import{MAX_NATIVE_PLAYBACK_RATE,MIN_NATIVE_PLAYBACK_RATE,NATIVE_MEDIA_RELAY_EVENTS,NativeMediaController,canExitFullscreen,canRequestFullscreen,canRequestPictureInPicture,safeNativeMediaSource}from"../../../internal/media-controller.js";import{finiteRange}from"../../../internal/numbers.js";import{relayNativeEvent}from"../../../internal/native-event-relay.js";import{readResponseText,resolveOwnerFetchTarget}from"../../../internal/resource-loader.js";import{safeMediaSrc}from"../../../internal/safe-url.js";import{styles}from"./video.styles.js";import{LYRA_DEFAULT_avPlayerPlaybackRate,LYRA_DEFAULT_avPlayerPosition,LYRA_DEFAULT_avPlayerRateOption,LYRA_DEFAULT_pause,LYRA_DEFAULT_play,LYRA_DEFAULT_playbackPosition,LYRA_DEFAULT_videoCaptions,LYRA_DEFAULT_videoCaptionsOff,LYRA_DEFAULT_videoEnterFullscreen,LYRA_DEFAULT_videoExitFullscreen,LYRA_DEFAULT_videoExitPictureInPicture,LYRA_DEFAULT_videoMute,LYRA_DEFAULT_videoPictureInPicture,LYRA_DEFAULT_videoPlayerLabel,LYRA_DEFAULT_videoUnmute,LYRA_DEFAULT_videoVolume}from"../../../internal/default-strings.generated.js";const MAX_THUMBNAIL_BYTES=256*1024,MAX_THUMBNAIL_CUES=2e3,PLAYBACK_RATES=[.5,.75,1,1.25,1.5,2];function safeControls(value){return value==="none"||value==="full"?value:"standard"}function safePreload(value){return value==="auto"||value==="none"?value:"metadata"}function parseVttTime(source){const parts=source.trim().split(":").map(Number);if(parts.length<2||parts.length>3||parts.some(part=>!Number.isFinite(part)))return null;const seconds=parts.length===3?parts[0]*3600+parts[1]*60+parts[2]:parts[0]*60+parts[1];return seconds>=0?seconds:null}function parseThumbnailUrl(source,baseUrl,URLCtor){const trimmed=source.trim();if(!trimmed)return null;try{const resolved=new URLCtor(trimmed,baseUrl),sprite=/^#xywh=(\d+),(\d+),(\d+),(\d+)$/u.exec(resolved.hash);resolved.hash="";const src=safeMediaSrc(resolved.href,URLCtor);if(!src)return null;if(!sprite)return{src};const[x,y,width,height]=sprite.slice(1).map(Number);return!Number.isFinite(x)||!Number.isFinite(y)||!Number.isFinite(width)||!Number.isFinite(height)||width<=0||height<=0?null:{src,x,y,width,height}}catch{return null}}function parseThumbnailVtt(source,sourceUrl,URLCtor){const cues=[],normalized=source.replace(/^\uFEFF/u,"").replaceAll(`\r
|
|
2
2
|
`,`
|
|
3
3
|
`).replaceAll("\r",`
|
|
4
4
|
`);for(const block of normalized.split(/\n{2,}/u)){if(cues.length>=MAX_THUMBNAIL_CUES)break;const lines=block.split(`
|
|
5
|
-
`).map(line=>line.trim()).filter(Boolean),timingIndex=lines.findIndex(line=>line.includes("-->"));if(timingIndex<0||!lines[timingIndex+1])continue;const match=/^(\S+)\s+-->\s+(\S+)/u.exec(lines[timingIndex]);if(!match)continue;const start=parseVttTime(match[1]),end=parseVttTime(match[2]),thumbnail=parseThumbnailUrl(lines[timingIndex+1],sourceUrl,URLCtor);start===null||end===null||end<=start||!thumbnail||cues.push({start,end,...thumbnail})}return cues}function unsupportedPromise(host,message){const DOMExceptionConstructor=host.ownerDocument.defaultView?.DOMException??DOMException;return Promise.reject(new DOMExceptionConstructor(message,"NotSupportedError"))}class LyraVideo extends LyraElement{constructor(){super(...arguments),this.autoplay=!1,this.autoplayMuted=!1,this.autoplayOnVisible=!1,this.controls="standard",this.currentTime=0,this.duration=0,this.iconLibrary="system",this.loop=!1,this.muted=!1,this.isPlaying=!1,this.poster="",this.preload="metadata",this.src="",this.thumbnails="",this.title="",this.volume=1,this.playbackRate=1,this.posterVisible=!0,this.captionText="",this.captionTracks=[],this.fullscreen=!1,this.pictureInPicture=!1,this.thumbnailCues=[],this.thumbnailPosition=50,this.mediaController=new NativeMediaController(this,{selectedTrackMode:"hidden",relayEvents:NATIVE_MEDIA_RELAY_EVENTS.filter(type=>type!=="timeupdate"),onEvent:event=>this.onNativeMediaEvent(event)}),this.pendingNativeEcho={timeupdate:!1,muted:!1},this.thumbnailGeneration=0,this.visibilityPaused=!1,this.captionListeners=[],this.onControlFocus=event=>{relayNativeEvent(this,event)},this.onControlBlur=event=>{relayNativeEvent(this,event)},this.mediaRef=element=>{const video=element?.localName==="video"?element:void 0;this.mediaController.attach(video),video&&(this.mediaController.volume=finiteRange(this.volume,1,0,1),this.autoplayMuted&&!this.muted?this.forceAutoplayMuted():this.mediaController.muted=this.muted,this.mediaController.playbackRate=this.playbackRate)},this.onSourceSlotChange=()=>this.syncSources(),this.onTimelineInput=event=>{const input=event.currentTarget;this.seek(Number(input.value))},this.onVolumeInput=event=>{this.setVolume(Number(event.currentTarget.value))},this.onRateChange=event=>{this.setPlaybackRate(Number(event.currentTarget.value))},this.onPosterPlay=()=>{this.play().catch(()=>{})},this.onFullscreenButton=()=>{(this.fullscreen?this.exitFullscreen():this.requestFullscreen()).catch(()=>{})},this.onFullscreenChange=()=>{this.fullscreen=this.ownerDocument.fullscreenElement===this.wrapperEl},this.onPictureInPictureChange=()=>{const documentRef=this.ownerDocument;this.pictureInPicture=documentRef.pictureInPictureElement===this.videoEl},this.togglePictureInPicture=()=>{const video=this.videoEl,documentRef=this.ownerDocument;if(!video||!canRequestPictureInPicture(video))return;(documentRef.pictureInPictureElement===video?documentRef.exitPictureInPicture?.():video.requestPictureInPicture().then(()=>{}))?.catch(()=>{})},this.onCaptionChange=event=>{const selected=Number(event.currentTarget.value);this.captionTracks.forEach(({track},index)=>{track.mode=index===selected?"hidden":"disabled"}),this.syncActiveCaption()},this.onTimelinePointerMove=event=>{const rect=event.currentTarget.getBoundingClientRect();if(rect.width<=0||this.duration<=0){this.activeThumbnail=void 0;return}const ratio=finiteRange((event.clientX-rect.left)/rect.width,0,0,1),time=ratio*this.duration;this.activeThumbnail=this.thumbnailCues.find(cue=>time>=cue.start&&time<cue.end),this.thumbnailPosition=ratio*100},this.onTimelinePointerLeave=()=>{this.activeThumbnail=void 0}}static{this.defaultStrings={...super.defaultStrings,avPlayerPosition:LYRA_DEFAULT_avPlayerPosition,avPlayerRateOption:LYRA_DEFAULT_avPlayerRateOption,pause:LYRA_DEFAULT_pause,play:LYRA_DEFAULT_play,playbackPosition:LYRA_DEFAULT_playbackPosition,videoCaptions:LYRA_DEFAULT_videoCaptions,videoCaptionsOff:LYRA_DEFAULT_videoCaptionsOff,videoEnterFullscreen:LYRA_DEFAULT_videoEnterFullscreen,videoExitFullscreen:LYRA_DEFAULT_videoExitFullscreen,videoExitPictureInPicture:LYRA_DEFAULT_videoExitPictureInPicture,videoMute:LYRA_DEFAULT_videoMute,videoPictureInPicture:LYRA_DEFAULT_videoPictureInPicture,videoPlaybackSpeed:LYRA_DEFAULT_videoPlaybackSpeed,videoPlayerLabel:LYRA_DEFAULT_videoPlayerLabel,videoUnmute:LYRA_DEFAULT_videoUnmute,videoVolume:LYRA_DEFAULT_videoVolume}}static{this.styles=[LyraElement.styles,styles,srOnly]}static{this.knownUnobservedAttributes=["playing"]}static get observedAttributes(){return[...new Set([...super.observedAttributes,"currenttime","current-time"])]}get playing(){return this.isPlaying}attributeChangedCallback(name,oldValue,newValue){if(name==="currenttime"||name==="current-time"){oldValue!==newValue&&(this.currentTime=finiteRange(Number(newValue??0),0,0));return}super.attributeChangedCallback(name,oldValue,newValue)}get videoEl(){const media=this.mediaController.element;return media?.localName==="video"?media:void 0}get playControl(){return this.renderRoot.querySelector('[part="poster-play-button"], [data-control="play"]')}focus(options){this.playControl?.focus(options)}blur(){this.playControl?.blur()}click(){this.playControl?.click()}connectedCallback(){super.connectedCallback(),this.mediaController.reconnect();const doc=this.listenerDocument=this.ownerDocument;doc.addEventListener("fullscreenchange",this.onFullscreenChange),doc.addEventListener("enterpictureinpicture",this.onPictureInPictureChange,!0),doc.addEventListener("leavepictureinpicture",this.onPictureInPictureChange,!0),this.hasUpdated&&(this.scheduleAfterUpdate(()=>this.bindCaptionTracks(),"video-caption-reconnect"),this.scheduleAfterUpdate(()=>this.configureVisibilityObserver(),"video-visibility-reconnect"),this.thumbnails&&this.scheduleAfterUpdate(()=>{this.loadThumbnails()},"video-thumbnails-reconnect"))}firstUpdated(changed){super.firstUpdated(changed),this.syncSources(),this.configureVisibilityObserver(),this.loadThumbnails()}disconnectedCallback(){this.mediaController.disconnect(),this.thumbnailGeneration+=1,this.thumbnailAbort?.abort(),this.thumbnailAbort=void 0,this.intersectionObserver?.disconnect(),this.intersectionObserver=void 0,this.unbindCaptionTracks(),this.captionTracks.length&&(this.captionTracks=[]),this.captionText&&(this.captionText=""),this.activeThumbnail&&(this.activeThumbnail=void 0),this.isPlaying&&(this.isPlaying=!1),this.fullscreen&&(this.fullscreen=!1),this.pictureInPicture&&(this.pictureInPicture=!1);const doc=this.listenerDocument;doc?.removeEventListener("fullscreenchange",this.onFullscreenChange),doc?.removeEventListener("enterpictureinpicture",this.onPictureInPictureChange,!0),doc?.removeEventListener("leavepictureinpicture",this.onPictureInPictureChange,!0),super.disconnectedCallback()}willUpdate(changed){if(super.willUpdate(changed),changed.has("controls")&&(this.controls=safeControls(this.controls)),changed.has("preload")&&(this.preload=safePreload(this.preload)),changed.has("volume")){const next=finiteRange(this.volume,this.mediaController.volume,0,1);Object.is(next,this.volume)||(this.volume=next),this.mediaController.volume=next}if(changed.has("isPlaying")&&this.toggleAttribute("playing",this.isPlaying),changed.has("muted")&&(this.mediaController.muted=this.muted),changed.has("autoplayMuted")&&this.autoplayMuted&&this.forceAutoplayMuted(),changed.has("currentTime")){const max=this.mediaController.duration>0?this.mediaController.duration:Number.POSITIVE_INFINITY,next=finiteRange(this.currentTime,0,0,max);Object.is(next,this.currentTime)||(this.currentTime=next),next!==this.mediaController.currentTime&&(this.mediaController.currentTime=next)}if(changed.has("duration")){const next=finiteRange(this.duration,0,0);Object.is(next,this.duration)||(this.duration=next)}changed.has("src")&&(this.visibilityPaused=!1,this.posterVisible=!0,this.hasUpdated&&(this.isPlaying=!1,this.duration=0,this.currentTime=0,this.scheduleAfterUpdate(()=>this.syncSources(),"video-sources"))),changed.has("thumbnails")&&this.hasUpdated&&this.scheduleAfterUpdate(()=>{this.loadThumbnails()},"video-thumbnails"),changed.has("autoplayOnVisible")&&this.hasUpdated&&this.scheduleAfterUpdate(()=>this.configureVisibilityObserver(),"video-visibility")}forceAutoplayMuted(){this.pendingNativeEcho.muted=!0,this.mediaController.muted=!0}sourceSignature(){const nodes=[...this.children].filter(child=>child.localName==="source"||child.localName==="track").map(child=>({tag:child.localName,src:child.getAttribute("src"),type:child.getAttribute("type"),media:child.getAttribute("media"),kind:child.getAttribute("kind"),srclang:child.getAttribute("srclang"),label:child.getAttribute("label"),default:child.hasAttribute("default")}));return JSON.stringify({src:this.src,nodes})}syncSources(force=!1){if(!this.videoEl)return;const signature=this.sourceSignature();!force&&signature===this.lastSourceSignature||(this.lastSourceSignature=signature,this.visibilityPaused=!1,this.unbindCaptionTracks(),this.captionTracks.length&&(this.captionTracks=[]),this.captionText&&(this.captionText=""),this.mediaController.setSources({src:this.src,nodes:this.children}),this.mediaController.currentTime=this.currentTime)}getVideoElement(){return this.videoEl}getState(){const video=this.videoEl;return{playing:!!(video&&!video.paused&&!video.ended),currentTime:this.mediaController.currentTime,duration:this.mediaController.duration,volume:this.mediaController.volume,muted:this.mediaController.muted,playbackRate:this.mediaController.playbackRate}}play(){return this.mediaController.play()}pause(){this.visibilityPaused=!1,this.mediaController.pause()}load(){this.visibilityPaused=!1,this.currentTime=0,this.syncSources(!0)}unloadMedia(){const native=this.videoEl;!native||!native.hasAttribute("src")&&![...native.children].some(child=>child.localName==="source"||child.localName==="track")||(this.visibilityPaused=!1,this.mediaController.unload(),this.currentTime=0,this.lastSourceSignature=void 0,this.unbindCaptionTracks(),this.captionTracks=[],this.captionText="")}captureMediaPreferences(native=this.videoEl){return this.mediaController.captureUserPreferences(native)}applyMediaPreferences(preferences){this.mediaController.applyUserPreferences(preferences);const state2=this.getState();this.volume=state2.volume,this.muted=state2.muted,this.playbackRate=state2.playbackRate}seek(time){const max=this.mediaController.duration>0?this.mediaController.duration:Number.POSITIVE_INFINITY,next=finiteRange(time,0,0,max);this.mediaController.currentTime=next,this.currentTime=this.mediaController.currentTime,this.pendingNativeEcho.timeupdate=!0,this.dispatchHostTimeupdate()}dispatchHostTimeupdate(){const EventConstructor=this.ownerDocument.defaultView?.Event??Event;this.dispatchEvent(new EventConstructor("timeupdate"))}setPlaybackRate(rate){const next=finiteRange(rate,1,MIN_NATIVE_PLAYBACK_RATE,MAX_NATIVE_PLAYBACK_RATE);this.playbackRate=next,this.mediaController.playbackRate=next}rateSelectOptions(){const rates=PLAYBACK_RATES;return rates.includes(this.playbackRate)?rates:[...rates,this.playbackRate].sort((a,b)=>a-b)}renderRateOptions(){const format=getNumberFormat(this.effectiveLocale,{maximumFractionDigits:2});return this.rateSelectOptions().map(rate=>html`<option value=${String(rate)} ?selected=${rate===this.playbackRate}>${this.localize("avPlayerRateOption",void 0,{rate:format.format(rate)})}</option>`)}setVolume(volume){const next=finiteRange(volume,this.mediaController.volume,0,1);this.volume=next,this.mediaController.volume=next}toggleMute(){const next=!this.mediaController.muted;this.muted=next,this.mediaController.muted=next}togglePlay(){this.videoEl?.paused??!0?this.play().catch(()=>{}):this.pause()}requestFullscreen(){return canRequestFullscreen(this.wrapperEl)?this.wrapperEl.requestFullscreen():unsupportedPromise(this,"Fullscreen is unavailable for this video.")}exitFullscreen(){return canExitFullscreen(this.ownerDocument)?this.ownerDocument.exitFullscreen():unsupportedPromise(this,"Fullscreen exit is unavailable for this video.")}onNativeMediaEvent(event){if(this.videoEl)switch(event.type){case"loadedmetadata":case"durationchange":this.duration=this.mediaController.duration,this.currentTime=this.mediaController.currentTime,this.bindCaptionTracks();break;case"play":this.isPlaying=!0,this.posterVisible=!1;break;case"pause":case"ended":this.isPlaying=!1;break;case"error":this.isPlaying=!1,this.duration=0,this.currentTime=0;break;case"timeupdate":this.currentTime=this.mediaController.currentTime,this.pendingNativeEcho.timeupdate?this.pendingNativeEcho.timeupdate=!1:this.dispatchHostTimeupdate();break;case"seeked":this.currentTime=this.mediaController.currentTime,this.pendingNativeEcho.timeupdate=!1;break;case"volumechange":this.volume=this.mediaController.volume,this.pendingNativeEcho.muted?this.pendingNativeEcho.muted=!1:this.muted=this.mediaController.muted;break;case"ratechange":this.playbackRate=this.mediaController.playbackRate;break}}canRenderFullscreen(){return typeof this.ownerDocument.defaultView?.HTMLElement.prototype.requestFullscreen=="function"&&this.ownerDocument.fullscreenEnabled!==!1}canRenderPictureInPicture(){const ownerWindow=this.ownerDocument.defaultView,documentRef=this.ownerDocument;return this.controls==="full"&&typeof ownerWindow?.HTMLVideoElement.prototype.requestPictureInPicture=="function"&&documentRef.pictureInPictureEnabled!==!1}pauseForVisibility(){this.visibilityPaused=!0,this.mediaController.pause()}configureVisibilityObserver(){const visibilityOwnedPause=this.visibilityPaused;this.intersectionObserver?.disconnect(),this.intersectionObserver=void 0;const ownerWindow=this.ownerDocument.defaultView,IntersectionObserverCtor=ownerWindow?.IntersectionObserver;if(!this.autoplayOnVisible||!IntersectionObserverCtor){visibilityOwnedPause&&(this.visibilityPaused=!1,this.mediaController.play().catch(()=>{}));return}this.visibilityPaused=visibilityOwnedPause;let observer;observer=new IntersectionObserverCtor(entries=>{if(!observer||!this.isConnected||this.intersectionObserver!==observer||this.ownerDocument.defaultView!==ownerWindow)return;const visible=entries[0]?.isIntersecting??!0,video=this.videoEl;if(video){if(!visible){video.paused||this.pauseForVisibility();return}this.visibilityPaused&&(this.visibilityPaused=!1,this.mediaController.play().catch(()=>{}))}}),this.intersectionObserver=observer,observer.observe(this)}unbindCaptionTracks(){for(const{track,listener}of this.captionListeners)track.removeEventListener("cuechange",listener);this.captionListeners=[]}bindCaptionTracks(){this.unbindCaptionTracks();const selectable=Array.from(this.videoEl?.textTracks??[]).filter(track=>track.kind==="captions"||track.kind==="subtitles");for(const track of selectable)track.mode==="showing"&&(track.mode="hidden");this.captionTracks=selectable.map(track=>({track,label:track.label||track.language||this.localize("videoCaptions"),language:track.language}));for(const track of selectable){const listener=()=>this.syncActiveCaption();track.addEventListener("cuechange",listener),this.captionListeners.push({track,listener})}this.syncActiveCaption()}syncActiveCaption(){const lines=[];for(const{track}of this.captionTracks)if(!(track.mode!=="hidden"||!track.activeCues))for(let index=0;index<track.activeCues.length;index+=1){const cue=track.activeCues[index];cue&&typeof cue.text=="string"&&lines.push(cue.text)}this.captionText=lines.join(`
|
|
5
|
+
`).map(line=>line.trim()).filter(Boolean),timingIndex=lines.findIndex(line=>line.includes("-->"));if(timingIndex<0||!lines[timingIndex+1])continue;const match=/^(\S+)\s+-->\s+(\S+)/u.exec(lines[timingIndex]);if(!match)continue;const start=parseVttTime(match[1]),end=parseVttTime(match[2]),thumbnail=parseThumbnailUrl(lines[timingIndex+1],sourceUrl,URLCtor);start===null||end===null||end<=start||!thumbnail||cues.push({start,end,...thumbnail})}return cues}function unsupportedPromise(host,message){const DOMExceptionConstructor=host.ownerDocument.defaultView?.DOMException??DOMException;return Promise.reject(new DOMExceptionConstructor(message,"NotSupportedError"))}class LyraVideo extends LyraElement{constructor(){super(...arguments),this.autoplay=!1,this.autoplayMuted=!1,this.autoplayOnVisible=!1,this.controls="standard",this.currentTime=0,this.duration=0,this.iconLibrary="system",this.loop=!1,this.muted=!1,this.isPlaying=!1,this.poster="",this.preload="metadata",this.src="",this.thumbnails="",this.title="",this.volume=1,this.playbackRate=1,this.posterVisible=!0,this.captionText="",this.captionTracks=[],this.fullscreen=!1,this.pictureInPicture=!1,this.thumbnailCues=[],this.thumbnailPosition=50,this.mediaController=new NativeMediaController(this,{selectedTrackMode:"hidden",relayEvents:NATIVE_MEDIA_RELAY_EVENTS.filter(type=>type!=="timeupdate"),onEvent:event=>this.onNativeMediaEvent(event)}),this.pendingNativeEcho={timeupdate:!1,muted:!1},this.thumbnailGeneration=0,this.visibilityPaused=!1,this.captionListeners=[],this.onControlFocus=event=>{relayNativeEvent(this,event)},this.onControlBlur=event=>{relayNativeEvent(this,event)},this.mediaRef=element=>{const video=element?.localName==="video"?element:void 0;this.mediaController.attach(video),video&&(this.mediaController.volume=finiteRange(this.volume,1,0,1),this.autoplayMuted&&!this.muted?this.forceAutoplayMuted():this.mediaController.muted=this.muted,this.mediaController.playbackRate=this.playbackRate)},this.onSourceSlotChange=()=>this.syncSources(),this.onTimelineInput=event=>{const input=event.currentTarget;this.seek(Number(input.value))},this.onVolumeInput=event=>{this.setVolume(Number(event.currentTarget.value))},this.onRateChange=event=>{this.setPlaybackRate(Number(event.currentTarget.value))},this.onPosterPlay=()=>{this.play().catch(()=>{})},this.onFullscreenButton=()=>{(this.fullscreen?this.exitFullscreen():this.requestFullscreen()).catch(()=>{})},this.onFullscreenChange=()=>{this.fullscreen=this.ownerDocument.fullscreenElement===this.wrapperEl},this.onPictureInPictureChange=()=>{const documentRef=this.ownerDocument;this.pictureInPicture=documentRef.pictureInPictureElement===this.videoEl},this.togglePictureInPicture=()=>{const video=this.videoEl,documentRef=this.ownerDocument;if(!video||!canRequestPictureInPicture(video))return;(documentRef.pictureInPictureElement===video?documentRef.exitPictureInPicture?.():video.requestPictureInPicture().then(()=>{}))?.catch(()=>{})},this.onCaptionChange=event=>{const selected=Number(event.currentTarget.value);this.captionTracks.forEach(({track},index)=>{track.mode=index===selected?"hidden":"disabled"}),this.syncActiveCaption()},this.onTimelinePointerMove=event=>{const rect=event.currentTarget.getBoundingClientRect();if(rect.width<=0||this.duration<=0){this.activeThumbnail=void 0;return}const ratio=finiteRange((event.clientX-rect.left)/rect.width,0,0,1),time=ratio*this.duration;this.activeThumbnail=this.thumbnailCues.find(cue=>time>=cue.start&&time<cue.end),this.thumbnailPosition=ratio*100},this.onTimelinePointerLeave=()=>{this.activeThumbnail=void 0}}static{this.defaultStrings={...super.defaultStrings,avPlayerPlaybackRate:LYRA_DEFAULT_avPlayerPlaybackRate,avPlayerPosition:LYRA_DEFAULT_avPlayerPosition,avPlayerRateOption:LYRA_DEFAULT_avPlayerRateOption,pause:LYRA_DEFAULT_pause,play:LYRA_DEFAULT_play,playbackPosition:LYRA_DEFAULT_playbackPosition,videoCaptions:LYRA_DEFAULT_videoCaptions,videoCaptionsOff:LYRA_DEFAULT_videoCaptionsOff,videoEnterFullscreen:LYRA_DEFAULT_videoEnterFullscreen,videoExitFullscreen:LYRA_DEFAULT_videoExitFullscreen,videoExitPictureInPicture:LYRA_DEFAULT_videoExitPictureInPicture,videoMute:LYRA_DEFAULT_videoMute,videoPictureInPicture:LYRA_DEFAULT_videoPictureInPicture,videoPlayerLabel:LYRA_DEFAULT_videoPlayerLabel,videoUnmute:LYRA_DEFAULT_videoUnmute,videoVolume:LYRA_DEFAULT_videoVolume}}static{this.styles=[LyraElement.styles,styles,srOnly]}static{this.knownUnobservedAttributes=["playing"]}static get observedAttributes(){return[...new Set([...super.observedAttributes,"currenttime","current-time"])]}get playing(){return this.isPlaying}attributeChangedCallback(name,oldValue,newValue){if(name==="currenttime"||name==="current-time"){oldValue!==newValue&&(this.currentTime=finiteRange(Number(newValue??0),0,0));return}super.attributeChangedCallback(name,oldValue,newValue)}get videoEl(){const media=this.mediaController.element;return media?.localName==="video"?media:void 0}get playControl(){return this.renderRoot.querySelector('[part="poster-play-button"], [data-control="play"]')}focus(options){this.playControl?.focus(options)}blur(){this.playControl?.blur()}click(){this.playControl?.click()}connectedCallback(){super.connectedCallback(),this.mediaController.reconnect();const doc=this.listenerDocument=this.ownerDocument;doc.addEventListener("fullscreenchange",this.onFullscreenChange),doc.addEventListener("enterpictureinpicture",this.onPictureInPictureChange,!0),doc.addEventListener("leavepictureinpicture",this.onPictureInPictureChange,!0),this.hasUpdated&&(this.scheduleAfterUpdate(()=>this.bindCaptionTracks(),"video-caption-reconnect"),this.scheduleAfterUpdate(()=>this.configureVisibilityObserver(),"video-visibility-reconnect"),this.thumbnails&&this.scheduleAfterUpdate(()=>{this.loadThumbnails()},"video-thumbnails-reconnect"))}firstUpdated(changed){super.firstUpdated(changed),this.syncSources(),this.configureVisibilityObserver(),this.loadThumbnails()}disconnectedCallback(){this.mediaController.disconnect(),this.thumbnailGeneration+=1,this.thumbnailAbort?.abort(),this.thumbnailAbort=void 0,this.intersectionObserver?.disconnect(),this.intersectionObserver=void 0,this.unbindCaptionTracks(),this.captionTracks.length&&(this.captionTracks=[]),this.captionText&&(this.captionText=""),this.activeThumbnail&&(this.activeThumbnail=void 0),this.isPlaying&&(this.isPlaying=!1),this.fullscreen&&(this.fullscreen=!1),this.pictureInPicture&&(this.pictureInPicture=!1);const doc=this.listenerDocument;doc?.removeEventListener("fullscreenchange",this.onFullscreenChange),doc?.removeEventListener("enterpictureinpicture",this.onPictureInPictureChange,!0),doc?.removeEventListener("leavepictureinpicture",this.onPictureInPictureChange,!0),super.disconnectedCallback()}willUpdate(changed){if(super.willUpdate(changed),changed.has("controls")&&(this.controls=safeControls(this.controls)),changed.has("preload")&&(this.preload=safePreload(this.preload)),changed.has("volume")){const next=finiteRange(this.volume,this.mediaController.volume,0,1);Object.is(next,this.volume)||(this.volume=next),this.mediaController.volume=next}if(changed.has("isPlaying")&&this.toggleAttribute("playing",this.isPlaying),changed.has("muted")&&(this.mediaController.muted=this.muted),changed.has("autoplayMuted")&&this.autoplayMuted&&this.forceAutoplayMuted(),changed.has("currentTime")){const max=this.mediaController.duration>0?this.mediaController.duration:Number.POSITIVE_INFINITY,next=finiteRange(this.currentTime,0,0,max);Object.is(next,this.currentTime)||(this.currentTime=next),next!==this.mediaController.currentTime&&(this.mediaController.currentTime=next)}if(changed.has("duration")){const next=finiteRange(this.duration,0,0);Object.is(next,this.duration)||(this.duration=next)}changed.has("src")&&(this.visibilityPaused=!1,this.posterVisible=!0,this.hasUpdated&&(this.isPlaying=!1,this.duration=0,this.currentTime=0,this.scheduleAfterUpdate(()=>this.syncSources(),"video-sources"))),changed.has("thumbnails")&&this.hasUpdated&&this.scheduleAfterUpdate(()=>{this.loadThumbnails()},"video-thumbnails"),changed.has("autoplayOnVisible")&&this.hasUpdated&&this.scheduleAfterUpdate(()=>this.configureVisibilityObserver(),"video-visibility")}forceAutoplayMuted(){this.pendingNativeEcho.muted=!0,this.mediaController.muted=!0}sourceSignature(){const nodes=[...this.children].filter(child=>child.localName==="source"||child.localName==="track").map(child=>({tag:child.localName,src:child.getAttribute("src"),type:child.getAttribute("type"),media:child.getAttribute("media"),kind:child.getAttribute("kind"),srclang:child.getAttribute("srclang"),label:child.getAttribute("label"),default:child.hasAttribute("default")}));return JSON.stringify({src:this.src,nodes})}syncSources(force=!1){if(!this.videoEl)return;const signature=this.sourceSignature();!force&&signature===this.lastSourceSignature||(this.lastSourceSignature=signature,this.visibilityPaused=!1,this.unbindCaptionTracks(),this.captionTracks.length&&(this.captionTracks=[]),this.captionText&&(this.captionText=""),this.mediaController.setSources({src:this.src,nodes:this.children}),this.mediaController.currentTime=this.currentTime)}getVideoElement(){return this.videoEl}getState(){const video=this.videoEl;return{playing:!!(video&&!video.paused&&!video.ended),currentTime:this.mediaController.currentTime,duration:this.mediaController.duration,volume:this.mediaController.volume,muted:this.mediaController.muted,playbackRate:this.mediaController.playbackRate}}play(){return this.mediaController.play()}pause(){this.visibilityPaused=!1,this.mediaController.pause()}load(){this.visibilityPaused=!1,this.currentTime=0,this.syncSources(!0)}unloadMedia(){const native=this.videoEl;!native||!native.hasAttribute("src")&&![...native.children].some(child=>child.localName==="source"||child.localName==="track")||(this.visibilityPaused=!1,this.mediaController.unload(),this.currentTime=0,this.lastSourceSignature=void 0,this.unbindCaptionTracks(),this.captionTracks=[],this.captionText="")}captureMediaPreferences(native=this.videoEl){return this.mediaController.captureUserPreferences(native)}applyMediaPreferences(preferences){this.mediaController.applyUserPreferences(preferences);const state2=this.getState();this.volume=state2.volume,this.muted=state2.muted,this.playbackRate=state2.playbackRate}seek(time){const max=this.mediaController.duration>0?this.mediaController.duration:Number.POSITIVE_INFINITY,next=finiteRange(time,0,0,max);this.mediaController.currentTime=next,this.currentTime=this.mediaController.currentTime,this.pendingNativeEcho.timeupdate=!0,this.dispatchHostTimeupdate()}dispatchHostTimeupdate(){const EventConstructor=this.ownerDocument.defaultView?.Event??Event;this.dispatchEvent(new EventConstructor("timeupdate"))}setPlaybackRate(rate){const next=finiteRange(rate,1,MIN_NATIVE_PLAYBACK_RATE,MAX_NATIVE_PLAYBACK_RATE);this.playbackRate=next,this.mediaController.playbackRate=next}rateSelectOptions(){const rates=PLAYBACK_RATES;return rates.includes(this.playbackRate)?rates:[...rates,this.playbackRate].sort((a,b)=>a-b)}renderRateOptions(){const format=getNumberFormat(this.effectiveLocale,{maximumFractionDigits:2});return this.rateSelectOptions().map(rate=>html`<option value=${String(rate)} ?selected=${rate===this.playbackRate}>${this.localize("avPlayerRateOption",void 0,{rate:format.format(rate)})}</option>`)}setVolume(volume){const next=finiteRange(volume,this.mediaController.volume,0,1);this.volume=next,this.mediaController.volume=next}toggleMute(){const next=!this.mediaController.muted;this.muted=next,this.mediaController.muted=next}togglePlay(){this.videoEl?.paused??!0?this.play().catch(()=>{}):this.pause()}requestFullscreen(){return canRequestFullscreen(this.wrapperEl)?this.wrapperEl.requestFullscreen():unsupportedPromise(this,"Fullscreen is unavailable for this video.")}exitFullscreen(){return canExitFullscreen(this.ownerDocument)?this.ownerDocument.exitFullscreen():unsupportedPromise(this,"Fullscreen exit is unavailable for this video.")}onNativeMediaEvent(event){if(this.videoEl)switch(event.type){case"loadedmetadata":case"durationchange":this.duration=this.mediaController.duration,this.currentTime=this.mediaController.currentTime,this.bindCaptionTracks();break;case"play":this.isPlaying=!0,this.posterVisible=!1;break;case"pause":case"ended":this.isPlaying=!1;break;case"error":this.isPlaying=!1,this.duration=0,this.currentTime=0;break;case"timeupdate":this.currentTime=this.mediaController.currentTime,this.pendingNativeEcho.timeupdate?this.pendingNativeEcho.timeupdate=!1:this.dispatchHostTimeupdate();break;case"seeked":this.currentTime=this.mediaController.currentTime,this.pendingNativeEcho.timeupdate=!1;break;case"volumechange":this.volume=this.mediaController.volume,this.pendingNativeEcho.muted?this.pendingNativeEcho.muted=!1:this.muted=this.mediaController.muted;break;case"ratechange":this.playbackRate=this.mediaController.playbackRate;break}}canRenderFullscreen(){return typeof this.ownerDocument.defaultView?.HTMLElement.prototype.requestFullscreen=="function"&&this.ownerDocument.fullscreenEnabled!==!1}canRenderPictureInPicture(){const ownerWindow=this.ownerDocument.defaultView,documentRef=this.ownerDocument;return this.controls==="full"&&typeof ownerWindow?.HTMLVideoElement.prototype.requestPictureInPicture=="function"&&documentRef.pictureInPictureEnabled!==!1}pauseForVisibility(){this.visibilityPaused=!0,this.mediaController.pause()}configureVisibilityObserver(){const visibilityOwnedPause=this.visibilityPaused;this.intersectionObserver?.disconnect(),this.intersectionObserver=void 0;const ownerWindow=this.ownerDocument.defaultView,IntersectionObserverCtor=ownerWindow?.IntersectionObserver;if(!this.autoplayOnVisible||!IntersectionObserverCtor){visibilityOwnedPause&&(this.visibilityPaused=!1,this.mediaController.play().catch(()=>{}));return}this.visibilityPaused=visibilityOwnedPause;let observer;observer=new IntersectionObserverCtor(entries=>{if(!observer||!this.isConnected||this.intersectionObserver!==observer||this.ownerDocument.defaultView!==ownerWindow)return;const visible=entries[0]?.isIntersecting??!0,video=this.videoEl;if(video){if(!visible){video.paused||this.pauseForVisibility();return}this.visibilityPaused&&(this.visibilityPaused=!1,this.mediaController.play().catch(()=>{}))}}),this.intersectionObserver=observer,observer.observe(this)}unbindCaptionTracks(){for(const{track,listener}of this.captionListeners)track.removeEventListener("cuechange",listener);this.captionListeners=[]}bindCaptionTracks(){this.unbindCaptionTracks();const selectable=Array.from(this.videoEl?.textTracks??[]).filter(track=>track.kind==="captions"||track.kind==="subtitles");for(const track of selectable)track.mode==="showing"&&(track.mode="hidden");this.captionTracks=selectable.map(track=>({track,label:track.label||track.language||this.localize("videoCaptions"),language:track.language}));for(const track of selectable){const listener=()=>this.syncActiveCaption();track.addEventListener("cuechange",listener),this.captionListeners.push({track,listener})}this.syncActiveCaption()}syncActiveCaption(){const lines=[];for(const{track}of this.captionTracks)if(!(track.mode!=="hidden"||!track.activeCues))for(let index=0;index<track.activeCues.length;index+=1){const cue=track.activeCues[index];cue&&typeof cue.text=="string"&&lines.push(cue.text)}this.captionText=lines.join(`
|
|
6
6
|
`)}async loadThumbnails(){const generation=++this.thumbnailGeneration;this.thumbnailAbort?.abort(),this.thumbnailAbort=void 0,this.thumbnailCues.length&&(this.thumbnailCues=[]),this.activeThumbnail&&(this.activeThumbnail=void 0);const fetchTarget=resolveOwnerFetchTarget(this,this.thumbnails),AbortControllerCtor=fetchTarget?.view.AbortController;if(!fetchTarget||!AbortControllerCtor)return;const controller=new AbortControllerCtor;this.thumbnailAbort=controller;try{const response=await fetchTarget.view.fetch(fetchTarget.url,{signal:controller.signal});if(generation!==this.thumbnailGeneration||!this.isConnected||this.ownerDocument.defaultView!==fetchTarget.view||!response.ok)return;const text=await readResponseText(response,MAX_THUMBNAIL_BYTES);if(generation!==this.thumbnailGeneration||!this.isConnected||this.ownerDocument.defaultView!==fetchTarget.view)return;this.thumbnailCues=parseThumbnailVtt(text,fetchTarget.url,fetchTarget.view.URL)}catch{if(generation!==this.thumbnailGeneration||!this.isConnected)return;this.thumbnailCues=[],this.activeThumbnail=void 0}finally{generation===this.thumbnailGeneration&&(this.thumbnailAbort=void 0)}}renderIcon(name,path){return html`<lr-icon library=${this.iconLibrary} name=${name} aria-hidden="true">
|
|
7
7
|
<path d=${path}></path>
|
|
8
8
|
</lr-icon>`}renderDecorativeIconLayer(content){return html`<span class="control-icon-layer" aria-hidden="true" inert>${content}</span>`}renderPlaySlots(){return html`
|
|
@@ -120,7 +120,7 @@ import{__decorate}from"tslib";import{html,nothing}from"lit";import{property,quer
|
|
|
120
120
|
${this.controls==="full"?html`<span class="select-control">
|
|
121
121
|
<select
|
|
122
122
|
data-control="rate"
|
|
123
|
-
aria-label=${this.localize("
|
|
123
|
+
aria-label=${this.localize("avPlayerPlaybackRate")}
|
|
124
124
|
@change=${this.onRateChange}
|
|
125
125
|
>
|
|
126
126
|
${this.renderRateOptions()}
|