@aceshooting/lyra-ui 26.0.0 → 28.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.
Files changed (1677) hide show
  1. package/CHANGELOG.md +55 -675
  2. package/README.md +285 -1130
  3. package/design-tokens.json +1 -1
  4. package/dist/ai/types.d.ts +5 -5
  5. package/dist/autoloader.js +1 -1
  6. package/dist/cli/agent-registry.mjs +1 -0
  7. package/dist/cli/component-inventory.mjs +1 -1
  8. package/dist/cli/css-declarations.mjs +1 -0
  9. package/dist/cli/init-agents.mjs +40 -0
  10. package/dist/cli/is-main-module.mjs +1 -0
  11. package/dist/cli/lyra-rename-ledger.mjs +1 -1
  12. package/dist/cli/lyra-ui.mjs +11 -0
  13. package/dist/cli/migrate-wa.mjs +12 -5
  14. package/dist/cli/migration-contract.json +1 -1
  15. package/dist/cli/migration-renames.mjs +2 -2
  16. package/dist/cli/migration-theme-scopes.mjs +3 -0
  17. package/dist/cli/theme-scope-vocabulary.generated.mjs +1 -0
  18. package/dist/components/agent-tools/activity-feed/activity-feed.class.js +1 -1
  19. package/dist/components/agent-tools/agent-eval-dashboard/agent-eval-dashboard.class.d.ts +1 -1
  20. package/dist/components/agent-tools/agent-eval-dashboard/agent-eval-dashboard.class.js +2 -2
  21. package/dist/components/agent-tools/agent-question/agent-question.class.js +1 -1
  22. package/dist/components/agent-tools/agent-run/agent-run.class.js +1 -1
  23. package/dist/components/agent-tools/agent-trace/agent-trace.class.js +1 -1
  24. package/dist/components/agent-tools/approval-queue/approval-queue.class.js +1 -1
  25. package/dist/components/agent-tools/artifact-panel/artifact-panel.class.js +1 -1
  26. package/dist/components/agent-tools/background-runs/background-runs.class.js +1 -1
  27. package/dist/components/agent-tools/browser-frame/browser-frame.class.js +1 -1
  28. package/dist/components/agent-tools/budget-meter/budget-meter.class.js +1 -1
  29. package/dist/components/agent-tools/change-review/change-review.class.js +1 -1
  30. package/dist/components/agent-tools/commit-card/commit-card.class.js +1 -1
  31. package/dist/components/agent-tools/compare-panel/compare-panel.class.js +1 -1
  32. package/dist/components/agent-tools/confirm-bar/confirm-bar.class.d.ts +2 -2
  33. package/dist/components/agent-tools/confirm-bar/confirm-bar.class.js +2 -2
  34. package/dist/components/agent-tools/connector-manager/connector-manager.class.d.ts +4 -2
  35. package/dist/components/agent-tools/connector-manager/connector-manager.class.js +6 -3
  36. package/dist/components/agent-tools/connector-manager/connector-manager.d.ts +1 -1
  37. package/dist/components/agent-tools/connector-manager/connector-manager.js +1 -1
  38. package/dist/components/agent-tools/connector-manager/connector-manager.styles.js +1 -1
  39. package/dist/components/agent-tools/context-inspector/context-inspector.class.d.ts +2 -2
  40. package/dist/components/agent-tools/context-inspector/context-inspector.class.js +6 -6
  41. package/dist/components/agent-tools/eval-dataset/eval-dataset.class.d.ts +8 -33
  42. package/dist/components/agent-tools/eval-dataset/eval-dataset.class.js +27 -4
  43. package/dist/components/agent-tools/eval-dataset/eval-dataset.d.ts +1 -1
  44. package/dist/components/agent-tools/eval-dataset/eval-dataset.js +1 -1
  45. package/dist/components/agent-tools/eval-dataset/eval-dataset.styles.js +1 -1
  46. package/dist/components/agent-tools/eval-result/eval-result.class.js +1 -1
  47. package/dist/components/agent-tools/evaluation-run/evaluation-run.class.js +1 -1
  48. package/dist/components/agent-tools/mcp-app/mcp-app.class.js +1 -1
  49. package/dist/components/agent-tools/permission-grant/permission-grant.class.d.ts +4 -2
  50. package/dist/components/agent-tools/permission-grant/permission-grant.class.js +6 -3
  51. package/dist/components/agent-tools/permission-grant/permission-grant.d.ts +1 -1
  52. package/dist/components/agent-tools/permission-grant/permission-grant.js +1 -1
  53. package/dist/components/agent-tools/permission-grant/permission-grant.styles.js +1 -1
  54. package/dist/components/agent-tools/permission-rules/permission-rules.class.js +1 -1
  55. package/dist/components/agent-tools/policy-summary/policy-summary.class.js +1 -1
  56. package/dist/components/agent-tools/prompt-studio/prompt-studio.class.d.ts +1 -1
  57. package/dist/components/agent-tools/prompt-studio/prompt-studio.class.js +2 -2
  58. package/dist/components/agent-tools/result-card/result-field.class.js +1 -1
  59. package/dist/components/agent-tools/schema-viewer/schema-viewer.class.d.ts +3 -1
  60. package/dist/components/agent-tools/schema-viewer/schema-viewer.class.js +1 -1
  61. package/dist/components/agent-tools/span-waterfall/span-waterfall.class.js +1 -1
  62. package/dist/components/agent-tools/stack-trace/stack-trace.class.js +1 -1
  63. package/dist/components/agent-tools/subagent-panel/subagent-panel.class.js +2 -2
  64. package/dist/components/agent-tools/task-list/task-list.class.d.ts +2 -2
  65. package/dist/components/agent-tools/task-list/task-list.class.js +2 -2
  66. package/dist/components/agent-tools/terminal/terminal.class.d.ts +1 -1
  67. package/dist/components/agent-tools/terminal/terminal.class.js +4 -4
  68. package/dist/components/agent-tools/test-results/test-results.class.js +1 -1
  69. package/dist/components/agent-tools/thinking-panel/thinking-panel.class.js +1 -1
  70. package/dist/components/agent-tools/tool-approval-dialog/tool-approval-dialog.class.d.ts +15 -9
  71. package/dist/components/agent-tools/tool-approval-dialog/tool-approval-dialog.class.js +1 -1
  72. package/dist/components/agent-tools/tool-call-block/tool-call-block.class.d.ts +2 -2
  73. package/dist/components/agent-tools/tool-call-block/tool-call-block.class.js +1 -1
  74. package/dist/components/agent-tools/tool-call-block/tool-call-block.styles.js +1 -1
  75. package/dist/components/agent-tools/tool-call-chip/tool-call-chip.class.d.ts +2 -7
  76. package/dist/components/agent-tools/tool-call-chip/tool-call-chip.class.js +1 -1
  77. package/dist/components/agent-tools/tool-call-chip/tool-call-chip.styles.js +1 -1
  78. package/dist/components/agent-tools/tool-param-form/tool-param-constraints.js +1 -1
  79. package/dist/components/agent-tools/tool-param-form/tool-param-form.class.d.ts +3 -5
  80. package/dist/components/agent-tools/tool-param-form/tool-param-form.class.js +1 -1
  81. package/dist/components/agent-tools/tool-result-dialog/tool-result-dialog.class.d.ts +2 -5
  82. package/dist/components/agent-tools/tool-result-dialog/tool-result-dialog.class.js +1 -1
  83. package/dist/components/agent-tools/tool-result-dialog/tool-result-dialog.styles.js +1 -1
  84. package/dist/components/agent-tools/tool-result-view/registry.d.ts +4 -12
  85. package/dist/components/agent-tools/tool-result-view/tool-result-view.class.d.ts +2 -2
  86. package/dist/components/agent-tools/tool-result-view/tool-result-view.class.js +1 -1
  87. package/dist/components/agent-tools/tool-select-dialog/tool-select-dialog.class.js +1 -1
  88. package/dist/components/agent-tools/tool-status.d.ts +7 -0
  89. package/dist/components/agent-tools/tool-status.styles.js +1 -0
  90. package/dist/components/agent-tools/tool-timeline/tool-timeline.class.js +1 -1
  91. package/dist/components/agent-tools/tool-timeline/tool-timeline.d.ts +1 -1
  92. package/dist/components/agent-tools/tool-timeline/tool-timeline.js +1 -1
  93. package/dist/components/agent-tools/trace-tree/trace-tree.class.js +2 -2
  94. package/dist/components/charts/chart/box-plot.class.d.ts +1 -1
  95. package/dist/components/charts/chart/box-plot.class.js +1 -1
  96. package/dist/components/charts/chart/box-plot.styles.js +1 -1
  97. package/dist/components/charts/chart/chart-surface-shared.js +1 -0
  98. package/dist/components/charts/chart/chart-surface.styles.js +1 -1
  99. package/dist/components/charts/chart/chart-table-sampling.js +1 -1
  100. package/dist/components/charts/chart/chart-token-cache.js +2 -2
  101. package/dist/components/charts/chart/chart.class.d.ts +3 -3
  102. package/dist/components/charts/chart/chart.class.js +3 -3
  103. package/dist/components/charts/chart/chart.styles.js +1 -1
  104. package/dist/components/charts/chart/histogram.class.js +1 -1
  105. package/dist/components/charts/chart/lite-chart.class.d.ts +1 -1
  106. package/dist/components/charts/chart/lite-chart.class.js +4 -4
  107. package/dist/components/conversation/agent-workspace/agent-workspace.class.js +1 -1
  108. package/dist/components/conversation/audio-visualizer/audio-visualizer.class.js +1 -1
  109. package/dist/components/conversation/branch-picker/branch-picker.class.js +1 -1
  110. package/dist/components/conversation/catalog-picker-element.d.ts +28 -13
  111. package/dist/components/conversation/catalog-picker-element.js +1 -1
  112. package/dist/components/conversation/catalog-picker-trigger.styles.js +1 -0
  113. package/dist/components/conversation/chat-composer/chat-composer.class.js +1 -1
  114. package/dist/components/conversation/chat-message/chat-message.class.js +1 -1
  115. package/dist/components/conversation/chat-message/chat-message.styles.js +1 -1
  116. package/dist/components/conversation/chat-viewport/chat-viewport.class.d.ts +1 -1
  117. package/dist/components/conversation/chat-viewport/chat-viewport.class.js +1 -1
  118. package/dist/components/conversation/checkpoint/checkpoint.class.js +1 -1
  119. package/dist/components/conversation/code-block/code-block-base.class.js +1 -1
  120. package/dist/components/conversation/code-block/code-block-core.class.js +1 -1
  121. package/dist/components/conversation/code-block/code-block-shared.js +1 -1
  122. package/dist/components/conversation/code-block/code-block.class.js +1 -1
  123. package/dist/components/conversation/conversation-item/conversation-item.class.js +1 -1
  124. package/dist/components/conversation/generation-metrics/generation-metrics.class.js +2 -2
  125. package/dist/components/conversation/handoff-divider/handoff-divider.class.js +1 -1
  126. package/dist/components/conversation/markdown/markdown-base.class.js +1 -1
  127. package/dist/components/conversation/markdown/markdown-code-header.js +1 -1
  128. package/dist/components/conversation/markdown/markdown-core.class.js +1 -1
  129. package/dist/components/conversation/markdown/markdown.class.js +1 -1
  130. package/dist/components/conversation/message-actions/message-actions.class.js +1 -1
  131. package/dist/components/conversation/message-feedback/message-feedback.class.js +1 -1
  132. package/dist/components/conversation/message-parts/message-parts.class.js +1 -1
  133. package/dist/components/conversation/model-select/model-select.class.d.ts +7 -34
  134. package/dist/components/conversation/model-select/model-select.class.js +3 -3
  135. package/dist/components/conversation/model-select/model-select.styles.js +1 -1
  136. package/dist/components/conversation/model-settings-panel/model-settings-panel.class.js +1 -1
  137. package/dist/components/conversation/prompt-input/prompt-input.class.d.ts +7 -2
  138. package/dist/components/conversation/prompt-input/prompt-input.class.js +5 -2
  139. package/dist/components/conversation/prompt-queue/prompt-queue.class.js +1 -1
  140. package/dist/components/conversation/push-to-talk/push-to-talk.class.js +1 -1
  141. package/dist/components/conversation/realtime-session/realtime-session.class.js +1 -1
  142. package/dist/components/conversation/selection-toolbar/selection-toolbar.class.js +1 -1
  143. package/dist/components/conversation/stream-status/stream-status.class.js +1 -1
  144. package/dist/components/conversation/suggestion-chips/suggestion-chips.class.js +1 -1
  145. package/dist/components/conversation/thread-list/thread-list.class.js +1 -1
  146. package/dist/components/conversation/transcript-feed/transcript-feed.class.js +1 -1
  147. package/dist/components/conversation/typing-indicator/typing-indicator.class.js +1 -1
  148. package/dist/components/conversation/usage-badge/usage-badge.class.js +1 -1
  149. package/dist/components/conversation/voice-picker/voice-picker.class.d.ts +10 -27
  150. package/dist/components/conversation/voice-picker/voice-picker.class.js +3 -3
  151. package/dist/components/conversation/voice-picker/voice-picker.styles.js +1 -1
  152. package/dist/components/data/calendar/calendar.class.js +1 -1
  153. package/dist/components/data/condition-builder/condition-builder.class.js +1 -1
  154. package/dist/components/data/context-meter/context-meter.class.js +1 -1
  155. package/dist/components/data/data-grid/data-grid.class.d.ts +2 -2
  156. package/dist/components/data/data-grid/data-grid.class.js +3 -3
  157. package/dist/components/data/document-library/document-library.class.d.ts +2 -2
  158. package/dist/components/data/document-library/document-library.class.js +2 -2
  159. package/dist/components/data/env-list/env-list.class.js +1 -1
  160. package/dist/components/data/file-tree/file-tree.class.d.ts +2 -2
  161. package/dist/components/data/file-tree/file-tree.class.js +1 -1
  162. package/dist/components/data/flow-canvas/flow-canvas.class.js +1 -1
  163. package/dist/components/data/flow-controls/flow-controls.class.js +1 -1
  164. package/dist/components/data/flow-minimap/flow-minimap.class.js +1 -1
  165. package/dist/components/data/flow-node/flow-node.class.js +1 -1
  166. package/dist/components/data/flow-run-status/flow-run-status.class.js +1 -1
  167. package/dist/components/data/funnel/funnel.class.js +1 -1
  168. package/dist/components/data/gauge/gauge.class.js +1 -1
  169. package/dist/components/data/graph-query-builder/graph-query-builder.class.d.ts +3 -3
  170. package/dist/components/data/graph-query-builder/graph-query-builder.class.js +1 -1
  171. package/dist/components/data/heatmap/heatmap.class.js +2 -2
  172. package/dist/components/data/pagination/pagination.class.d.ts +2 -0
  173. package/dist/components/data/pagination/pagination.class.js +1 -1
  174. package/dist/components/data/pagination/pagination.styles.js +1 -1
  175. package/dist/components/data/sequence-strip/sequence-strip.class.d.ts +1 -1
  176. package/dist/components/data/sequence-strip/sequence-strip.class.js +1 -1
  177. package/dist/components/data/sparkline/sparkline.class.js +1 -1
  178. package/dist/components/data/stat/stat.class.js +1 -1
  179. package/dist/components/data/table/table.class.d.ts +33 -197
  180. package/dist/components/data/table/table.class.js +6 -4
  181. package/dist/components/data/table/table.styles.js +1 -1
  182. package/dist/components/data/timeline/timeline.class.js +1 -1
  183. package/dist/components/data/tree/tree.class.js +1 -1
  184. package/dist/components/data/word-cloud/word-cloud.class.js +1 -1
  185. package/dist/components/forms/button/button.class.d.ts +3 -3
  186. package/dist/components/forms/button/button.class.js +1 -1
  187. package/dist/components/forms/catalog-picker-base.js +1 -1
  188. package/dist/components/forms/checkbox/checkbox.class.d.ts +13 -34
  189. package/dist/components/forms/checkbox/checkbox.class.js +3 -3
  190. package/dist/components/forms/checkbox-group/checkbox-group.class.d.ts +3 -3
  191. package/dist/components/forms/checkbox-group/checkbox-group.class.js +1 -1
  192. package/dist/components/forms/code-editor/code-editor.class.js +1 -1
  193. package/dist/components/forms/color-picker/color-picker.class.d.ts +8 -4
  194. package/dist/components/forms/color-picker/color-picker.class.js +2 -2
  195. package/dist/components/forms/combobox/combobox.class.d.ts +6 -6
  196. package/dist/components/forms/combobox/combobox.class.js +3 -2
  197. package/dist/components/forms/combobox/option.class.d.ts +3 -0
  198. package/dist/components/forms/combobox/option.class.js +2 -2
  199. package/dist/components/forms/country-picker/country-picker.class.js +1 -1
  200. package/dist/components/forms/currency-picker/currency-picker.class.js +1 -1
  201. package/dist/components/forms/date-picker/date-input.class.d.ts +10 -11
  202. package/dist/components/forms/date-picker/date-input.class.js +4 -3
  203. package/dist/components/forms/date-picker/date-input.styles.js +1 -1
  204. package/dist/components/forms/date-picker/date-picker.class.d.ts +6 -0
  205. package/dist/components/forms/date-picker/date-picker.class.js +1 -1
  206. package/dist/components/forms/date-picker/date-picker.styles.js +1 -1
  207. package/dist/components/forms/emoji-picker/emoji-data-loader.js +1 -1
  208. package/dist/components/forms/emoji-picker/emoji-picker.class.d.ts +7 -4
  209. package/dist/components/forms/emoji-picker/emoji-picker.class.js +5 -5
  210. package/dist/components/forms/icon-button/icon-button.class.d.ts +4 -0
  211. package/dist/components/forms/icon-button/icon-button.class.js +1 -1
  212. package/dist/components/forms/icon-button/icon-button.styles.js +1 -1
  213. package/dist/components/forms/input/input-shared.js +1 -1
  214. package/dist/components/forms/input/input.class.js +1 -1
  215. package/dist/components/forms/input/input.styles.js +1 -1
  216. package/dist/components/forms/input/native-time-input.class.js +1 -1
  217. package/dist/components/forms/input/number-input.class.js +1 -1
  218. package/dist/components/forms/input/time-input.class.d.ts +1 -1
  219. package/dist/components/forms/input/time-input.class.js +1 -1
  220. package/dist/components/forms/input/time-input.styles.js +1 -1
  221. package/dist/components/forms/locale-picker/locale-picker.class.d.ts +5 -5
  222. package/dist/components/forms/locale-picker/locale-picker.class.js +1 -1
  223. package/dist/components/forms/otp-input/otp-input.class.js +2 -1
  224. package/dist/components/forms/phone-input/phone-input.class.d.ts +7 -9
  225. package/dist/components/forms/phone-input/phone-input.class.js +6 -5
  226. package/dist/components/forms/phone-input/phone-input.styles.js +1 -1
  227. package/dist/components/forms/radio/radio-group.class.d.ts +4 -4
  228. package/dist/components/forms/radio/radio-group.class.js +1 -1
  229. package/dist/components/forms/radio/radio.class.d.ts +11 -19
  230. package/dist/components/forms/radio/radio.class.js +2 -2
  231. package/dist/components/forms/rubric-form/rubric-form.class.d.ts +3 -5
  232. package/dist/components/forms/rubric-form/rubric-form.class.js +4 -4
  233. package/dist/components/forms/select/select.class.d.ts +5 -7
  234. package/dist/components/forms/select/select.class.js +3 -2
  235. package/dist/components/forms/signature-pad/signature-pad.class.js +1 -1
  236. package/dist/components/forms/slider/slider.class.d.ts +3 -3
  237. package/dist/components/forms/slider/slider.class.js +1 -1
  238. package/dist/components/forms/slider/slider.styles.js +1 -1
  239. package/dist/components/forms/swatch-picker/swatch-picker.class.js +1 -1
  240. package/dist/components/forms/switch/switch.class.d.ts +11 -36
  241. package/dist/components/forms/switch/switch.class.js +2 -2
  242. package/dist/components/forms/textarea/textarea.class.js +2 -1
  243. package/dist/components/forms/textarea/textarea.styles.js +1 -1
  244. package/dist/components/forms/time-range/time-range.class.d.ts +5 -3
  245. package/dist/components/forms/time-range/time-range.class.js +1 -1
  246. package/dist/components/forms/time-range/time-range.styles.js +1 -1
  247. package/dist/components/forms/time-zone-picker/time-zone-picker.class.js +1 -1
  248. package/dist/components/forms/toggle-group/toggle-group.class.d.ts +2 -2
  249. package/dist/components/forms/toggle-group/toggle-group.class.js +1 -1
  250. package/dist/components/forms/token-input/token-input.class.d.ts +3 -3
  251. package/dist/components/forms/token-input/token-input.class.js +1 -1
  252. package/dist/components/forms/unit-picker/unit-picker.class.js +1 -1
  253. package/dist/components/layout/app-rail/app-rail-item.class.js +1 -1
  254. package/dist/components/layout/app-rail/app-rail.class.d.ts +71 -8
  255. package/dist/components/layout/app-rail/app-rail.class.js +16 -4
  256. package/dist/components/layout/app-rail/app-rail.styles.js +1 -1
  257. package/dist/components/layout/app-rail-group/app-rail-group.class.js +1 -1
  258. package/dist/components/layout/breadcrumb/breadcrumb-item.class.js +1 -1
  259. package/dist/components/layout/breadcrumb/breadcrumb.class.js +1 -1
  260. package/dist/components/layout/card/card.class.js +1 -1
  261. package/dist/components/layout/carousel/carousel.class.js +1 -1
  262. package/dist/components/layout/command-palette/command-palette.class.d.ts +6 -2
  263. package/dist/components/layout/command-palette/command-palette.class.js +1 -1
  264. package/dist/components/layout/dashboard-grid/dashboard-grid.class.js +1 -1
  265. package/dist/components/layout/details/accordion-item.class.js +1 -1
  266. package/dist/components/layout/details/accordion.class.js +1 -1
  267. package/dist/components/layout/details/details.class.js +1 -1
  268. package/dist/components/layout/dock-panel/dock-panel.class.d.ts +1 -1
  269. package/dist/components/layout/dock-panel/dock-panel.class.js +1 -1
  270. package/dist/components/layout/drilldown-panel/drilldown-panel.class.js +2 -2
  271. package/dist/components/layout/filter-bar/filter-bar.class.d.ts +3 -2
  272. package/dist/components/layout/filter-bar/filter-bar.class.js +18 -15
  273. package/dist/components/layout/filter-bar/filter-bar.styles.js +1 -1
  274. package/dist/components/layout/menu/menu.class.d.ts +1 -1
  275. package/dist/components/layout/menu/menu.class.js +1 -1
  276. package/dist/components/layout/menubar/menubar.class.js +1 -1
  277. package/dist/components/layout/multi-split/multi-split.class.d.ts +1 -1
  278. package/dist/components/layout/multi-split/multi-split.class.js +1 -1
  279. package/dist/components/layout/navigation-menu/navigation-menu.class.js +1 -1
  280. package/dist/components/layout/navigation-menu-item/navigation-menu-item.class.js +1 -1
  281. package/dist/components/layout/page/page.class.d.ts +1 -1
  282. package/dist/components/layout/page/page.class.js +1 -1
  283. package/dist/components/layout/reorder-list/reorder-item.class.js +1 -1
  284. package/dist/components/layout/reorder-list/reorder-list.class.js +1 -1
  285. package/dist/components/layout/responsive-panel/responsive-panel.class.d.ts +1 -1
  286. package/dist/components/layout/responsive-panel/responsive-panel.class.js +1 -1
  287. package/dist/components/layout/scroller/scroller.class.js +1 -1
  288. package/dist/components/layout/segmented/segmented.class.d.ts +7 -4
  289. package/dist/components/layout/segmented/segmented.class.js +1 -1
  290. package/dist/components/layout/segmented/segmented.styles.js +1 -1
  291. package/dist/components/layout/split-panel/split-panel.class.js +1 -1
  292. package/dist/components/layout/stepper/stepper.class.js +2 -2
  293. package/dist/components/layout/tab-group/tab-group.class.js +1 -1
  294. package/dist/components/layout/tab-group/tab.class.js +1 -1
  295. package/dist/components/layout/virtual-list/virtual-list.class.d.ts +1 -1
  296. package/dist/components/layout/virtual-list/virtual-list.class.js +1 -1
  297. package/dist/components/layout/virtual-list/virtual-list.styles.js +1 -1
  298. package/dist/components/layout/widget/widget.class.d.ts +1 -1
  299. package/dist/components/layout/widget/widget.class.js +3 -3
  300. package/dist/components/media/animated-image/animated-image.class.js +1 -1
  301. package/dist/components/media/attachment-chip/attachment-chip.class.js +1 -1
  302. package/dist/components/media/attachment-trigger/attachment-trigger.class.js +2 -2
  303. package/dist/components/media/av-player/av-player.class.js +1 -1
  304. package/dist/components/media/avatar-group/avatar-group.class.js +1 -1
  305. package/dist/components/media/drop-zone/drop-zone.class.d.ts +10 -0
  306. package/dist/components/media/drop-zone/drop-zone.class.js +2 -2
  307. package/dist/components/media/file-icon/file-icon.class.js +1 -1
  308. package/dist/components/media/file-input/file-input.class.d.ts +3 -3
  309. package/dist/components/media/file-input/file-input.class.js +2 -2
  310. package/dist/components/media/file-input/file-intake.d.ts +5 -1
  311. package/dist/components/media/file-input/file-intake.js +1 -1
  312. package/dist/components/media/flag/flag.class.js +1 -1
  313. package/dist/components/media/image-comparer/image-comparer.class.js +1 -1
  314. package/dist/components/media/image-viewer/image-viewer.class.d.ts +2 -1
  315. package/dist/components/media/image-viewer/image-viewer.class.js +4 -2
  316. package/dist/components/media/image-viewer/image-viewer.styles.js +1 -1
  317. package/dist/components/media/lightbox/lightbox.class.js +1 -1
  318. package/dist/components/media/map/map.class.js +2 -2
  319. package/dist/components/media/media-card/media-card.class.js +1 -1
  320. package/dist/components/media/pan-zoom/pan-zoom.class.js +1 -1
  321. package/dist/components/media/qr-code/qr-code-loader.js +1 -1
  322. package/dist/components/media/qr-code/qr-code.class.d.ts +2 -2
  323. package/dist/components/media/qr-code/qr-code.class.js +1 -1
  324. package/dist/components/media/sequence-playback/sequence-playback.class.js +1 -1
  325. package/dist/components/media/video/video.class.js +3 -3
  326. package/dist/components/media/video-playlist/video-playlist.class.js +1 -1
  327. package/dist/components/media/zoomable-frame/zoomable-frame.class.d.ts +2 -2
  328. package/dist/components/media/zoomable-frame/zoomable-frame.class.js +1 -1
  329. package/dist/components/overlays/alert/alert.class.d.ts +3 -3
  330. package/dist/components/overlays/alert/alert.class.js +1 -1
  331. package/dist/components/overlays/badge/badge.class.d.ts +2 -2
  332. package/dist/components/overlays/badge/badge.class.js +1 -1
  333. package/dist/components/overlays/badge/tag.class.d.ts +3 -1
  334. package/dist/components/overlays/badge/tag.class.js +3 -2
  335. package/dist/components/overlays/badge/tag.styles.js +1 -1
  336. package/dist/components/overlays/callout/callout.class.d.ts +2 -2
  337. package/dist/components/overlays/callout/callout.class.js +1 -1
  338. package/dist/components/overlays/chip/chip-group.class.js +1 -1
  339. package/dist/components/overlays/chip/chip.class.d.ts +4 -2
  340. package/dist/components/overlays/chip/chip.class.js +2 -2
  341. package/dist/components/overlays/context-menu/context-menu.class.js +1 -1
  342. package/dist/components/overlays/dialog/confirm.js +1 -1
  343. package/dist/components/overlays/dialog/dialog.class.d.ts +1 -1
  344. package/dist/components/overlays/dialog/dialog.class.js +1 -1
  345. package/dist/components/overlays/kbd/kbd.class.js +1 -1
  346. package/dist/components/overlays/overlay/overlay-shared.d.ts +9 -0
  347. package/dist/components/overlays/overlay/overlay-shared.js +1 -1
  348. package/dist/components/overlays/overlay/popover.class.d.ts +2 -2
  349. package/dist/components/overlays/overlay/popover.class.js +1 -1
  350. package/dist/components/overlays/overlay/tooltip.class.d.ts +1 -1
  351. package/dist/components/overlays/overlay/tooltip.class.js +1 -1
  352. package/dist/components/overlays/progress/progress-bar.class.d.ts +5 -22
  353. package/dist/components/overlays/progress/progress-bar.class.js +4 -4
  354. package/dist/components/overlays/progress/progress-base.d.ts +25 -0
  355. package/dist/components/overlays/progress/progress-base.js +1 -0
  356. package/dist/components/overlays/progress/progress-ring.class.d.ts +3 -24
  357. package/dist/components/overlays/progress/progress-ring.class.js +4 -4
  358. package/dist/components/overlays/rating/rating.class.d.ts +3 -3
  359. package/dist/components/overlays/rating/rating.class.js +1 -1
  360. package/dist/components/overlays/skeleton/skeleton.class.js +1 -1
  361. package/dist/components/overlays/spinner/spinner.class.js +1 -1
  362. package/dist/components/overlays/toast/toast-item.class.js +1 -1
  363. package/dist/components/overlays/toast/toast.class.js +1 -1
  364. package/dist/components/retrieval/chunk-inspector/chunk-inspector.class.d.ts +4 -2
  365. package/dist/components/retrieval/chunk-inspector/chunk-inspector.class.js +4 -4
  366. package/dist/components/retrieval/citation-badge/citation-badge.class.js +1 -1
  367. package/dist/components/retrieval/claim-evidence/claim-evidence.class.js +1 -1
  368. package/dist/components/retrieval/community-card/community-card.class.js +1 -1
  369. package/dist/components/retrieval/embedding-explorer/embedding-explorer.class.js +1 -1
  370. package/dist/components/retrieval/entity-card/entity-card.class.js +1 -1
  371. package/dist/components/retrieval/entity-chip/entity-chip.class.js +1 -1
  372. package/dist/components/retrieval/entity-dossier/entity-dossier.class.d.ts +1 -1
  373. package/dist/components/retrieval/entity-dossier/entity-dossier.class.js +1 -1
  374. package/dist/components/retrieval/graph/graph-canvas.js +1 -1
  375. package/dist/components/retrieval/graph/graph-model.js +1 -1
  376. package/dist/components/retrieval/graph/graph.class.d.ts +1 -3
  377. package/dist/components/retrieval/graph/graph.class.js +1 -1
  378. package/dist/components/retrieval/graph-legend/graph-legend.class.js +1 -1
  379. package/dist/components/retrieval/grounding-summary/grounding-summary.class.d.ts +1 -1
  380. package/dist/components/retrieval/grounding-summary/grounding-summary.class.js +2 -2
  381. package/dist/components/retrieval/ingestion-queue/ingestion-queue.class.js +1 -1
  382. package/dist/components/retrieval/knowledge-base/knowledge-base.class.d.ts +1 -1
  383. package/dist/components/retrieval/knowledge-base/knowledge-base.class.js +2 -2
  384. package/dist/components/retrieval/knowledge-base-admin/knowledge-base-admin.class.js +1 -1
  385. package/dist/components/retrieval/knowledge-graph-explorer/knowledge-graph-explorer.class.d.ts +1 -0
  386. package/dist/components/retrieval/knowledge-graph-explorer/knowledge-graph-explorer.class.js +2 -1
  387. package/dist/components/retrieval/memory-panel/memory-panel.class.d.ts +6 -2
  388. package/dist/components/retrieval/memory-panel/memory-panel.class.js +2 -2
  389. package/dist/components/retrieval/memory-panel/memory-panel.styles.js +1 -1
  390. package/dist/components/retrieval/mind-map/mind-map.class.js +1 -1
  391. package/dist/components/retrieval/neighbor-list/neighbor-list.class.js +1 -1
  392. package/dist/components/retrieval/node-palette/node-palette.class.js +1 -1
  393. package/dist/components/retrieval/path-strip/path-strip.class.js +1 -1
  394. package/dist/components/retrieval/provenance-panel/provenance-panel.class.d.ts +1 -1
  395. package/dist/components/retrieval/provenance-panel/provenance-panel.class.js +1 -1
  396. package/dist/components/retrieval/rag-answer/rag-answer.class.js +1 -1
  397. package/dist/components/retrieval/rag-eval-dashboard/rag-eval-dashboard.class.js +1 -1
  398. package/dist/components/retrieval/research-progress/research-progress.class.d.ts +5 -1
  399. package/dist/components/retrieval/research-progress/research-progress.class.js +3 -3
  400. package/dist/components/retrieval/research-progress/research-progress.d.ts +1 -1
  401. package/dist/components/retrieval/research-progress/research-progress.js +1 -1
  402. package/dist/components/retrieval/research-progress/research-progress.styles.js +1 -1
  403. package/dist/components/retrieval/retrieval-compare/retrieval-compare.class.d.ts +6 -2
  404. package/dist/components/retrieval/retrieval-compare/retrieval-compare.class.js +2 -2
  405. package/dist/components/retrieval/retrieval-compare/retrieval-compare.styles.js +1 -1
  406. package/dist/components/retrieval/retrieval-results/retrieval-results.class.d.ts +2 -2
  407. package/dist/components/retrieval/retrieval-results/retrieval-results.class.js +3 -2
  408. package/dist/components/retrieval/retrieval-search/retrieval-search.class.js +3 -3
  409. package/dist/components/retrieval/retrieval-trace/retrieval-trace.class.d.ts +6 -2
  410. package/dist/components/retrieval/retrieval-trace/retrieval-trace.class.js +2 -2
  411. package/dist/components/retrieval/retrieval-trace/retrieval-trace.styles.js +1 -1
  412. package/dist/components/retrieval/source-card/source-card.class.js +1 -1
  413. package/dist/components/retrieval/source-list/source-list.class.js +1 -1
  414. package/dist/components/retrieval/source-picker/source-picker.class.js +1 -1
  415. package/dist/components/utility/copy-button/copy-button.class.js +1 -1
  416. package/dist/components/utility/diff-view/diff-view.class.js +1 -1
  417. package/dist/components/utility/export-button/export-button.class.d.ts +1 -1
  418. package/dist/components/utility/export-button/export-button.class.js +1 -1
  419. package/dist/components/utility/icon/dompurify-loader.js +1 -1
  420. package/dist/components/utility/icon/icon.class.js +1 -1
  421. package/dist/components/utility/json-viewer/json-viewer.class.js +2 -2
  422. package/dist/components/utility/known-date/known-date.class.js +1 -1
  423. package/dist/components/utility/mention-popover/mention-popover.class.js +1 -1
  424. package/dist/components/utility/mutation-observer/mutation-observer.class.js +1 -1
  425. package/dist/components/utility/poll-status/poll-status.class.js +1 -1
  426. package/dist/components/utility/random-content/random-content.class.d.ts +1 -1
  427. package/dist/components/utility/random-content/random-content.class.js +1 -1
  428. package/dist/components/utility/tour/tour.class.d.ts +1 -1
  429. package/dist/components/utility/tour/tour.class.js +1 -1
  430. package/dist/components/viewers/archive-viewer/archive-viewer.class.js +1 -1
  431. package/dist/components/viewers/archive-viewer/archive-viewer.styles.js +1 -1
  432. package/dist/components/viewers/calendar-viewer/calendar-viewer.class.d.ts +3 -1
  433. package/dist/components/viewers/calendar-viewer/calendar-viewer.class.js +1 -1
  434. package/dist/components/viewers/contact-viewer/contact-viewer.class.d.ts +3 -1
  435. package/dist/components/viewers/contact-viewer/contact-viewer.class.js +2 -2
  436. package/dist/components/viewers/csv-viewer/csv-viewer.class.d.ts +2 -2
  437. package/dist/components/viewers/csv-viewer/csv-viewer.class.js +4 -18
  438. package/dist/components/viewers/csv-viewer/csv-viewer.styles.js +1 -1
  439. package/dist/components/viewers/dataset-viewer/dataset-viewer.class.d.ts +2 -2
  440. package/dist/components/viewers/dataset-viewer/dataset-viewer.class.js +4 -18
  441. package/dist/components/viewers/dataset-viewer/dataset-viewer.styles.js +1 -1
  442. package/dist/components/viewers/document-compare/document-compare.class.js +1 -1
  443. package/dist/components/viewers/document-preview/document-preview.class.d.ts +1 -1
  444. package/dist/components/viewers/document-preview/document-preview.class.js +3 -16
  445. package/dist/components/viewers/document-viewer/document-viewer.class.js +1 -1
  446. package/dist/components/viewers/document-viewer/ooxml-part-guard.js +1 -0
  447. package/dist/components/viewers/docx-viewer/docx-loader.js +1 -1
  448. package/dist/components/viewers/docx-viewer/docx-resource-guard.js +1 -1
  449. package/dist/components/viewers/docx-viewer/docx-viewer.class.d.ts +3 -3
  450. package/dist/components/viewers/docx-viewer/docx-viewer.class.js +3 -3
  451. package/dist/components/viewers/ebook-viewer/ebook-loader.js +1 -1
  452. package/dist/components/viewers/ebook-viewer/ebook-viewer.class.d.ts +1 -1
  453. package/dist/components/viewers/ebook-viewer/ebook-viewer.class.js +2 -1
  454. package/dist/components/viewers/ebook-viewer/epub-resource-guard.js +1 -1
  455. package/dist/components/viewers/email-viewer/email-viewer.class.d.ts +1 -1
  456. package/dist/components/viewers/email-viewer/email-viewer.class.js +2 -2
  457. package/dist/components/viewers/geojson-view/geojson-view.class.js +1 -1
  458. package/dist/components/viewers/geojson-view/geojson-viewer.class.d.ts +1 -4
  459. package/dist/components/viewers/geojson-view/geojson-viewer.class.js +1 -1
  460. package/dist/components/viewers/highlight-layer/highlight-layer.class.js +1 -1
  461. package/dist/components/viewers/html-viewer/html-viewer.class.d.ts +3 -1
  462. package/dist/components/viewers/html-viewer/html-viewer.class.js +1 -1
  463. package/dist/components/viewers/html-viewer/html-viewer.styles.js +1 -1
  464. package/dist/components/viewers/include/include.class.js +1 -1
  465. package/dist/components/viewers/notebook-viewer/dompurify-loader.js +1 -1
  466. package/dist/components/viewers/notebook-viewer/notebook-viewer.class.js +2 -2
  467. package/dist/components/viewers/page-rail/page-rail.class.d.ts +1 -1
  468. package/dist/components/viewers/page-rail/page-rail.class.js +3 -3
  469. package/dist/components/viewers/passive-markup.js +1 -1
  470. package/dist/components/viewers/pdf-viewer/pdf-loader.js +1 -1
  471. package/dist/components/viewers/pdf-viewer/pdf-viewer.class.d.ts +3 -3
  472. package/dist/components/viewers/pdf-viewer/pdf-viewer.class.js +4 -4
  473. package/dist/components/viewers/pptx-viewer/pptx-loader.js +1 -1
  474. package/dist/components/viewers/pptx-viewer/pptx-resource-guard.js +1 -1
  475. package/dist/components/viewers/pptx-viewer/pptx-viewer.class.js +1 -1
  476. package/dist/components/viewers/region-highlight-layer.js +15 -2
  477. package/dist/components/viewers/spreadsheet-viewer/spreadsheet-viewer.class.d.ts +2 -2
  478. package/dist/components/viewers/spreadsheet-viewer/spreadsheet-viewer.class.js +4 -18
  479. package/dist/components/viewers/spreadsheet-viewer/spreadsheet-viewer.styles.js +1 -1
  480. package/dist/components/viewers/svg-viewer/svg-viewer.class.d.ts +1 -1
  481. package/dist/components/viewers/svg-viewer/svg-viewer.class.js +2 -15
  482. package/dist/components/viewers/svg-viewer/svg-viewer.styles.js +1 -1
  483. package/dist/components/viewers/table-viewer-shared.js +15 -1
  484. package/dist/components/viewers/table-viewer-shared.styles.js +1 -0
  485. package/dist/components/viewers/xml-viewer/xml-viewer.class.js +1 -1
  486. package/dist/events.d.ts +25 -19
  487. package/dist/framework-types.d.ts +1 -1
  488. package/dist/internal/accessibility-visibility.d.ts +3 -1
  489. package/dist/internal/accessibility-visibility.js +1 -1
  490. package/dist/internal/accessible-text-controller.js +1 -1
  491. package/dist/internal/active-element.d.ts +11 -0
  492. package/dist/internal/active-element.js +1 -1
  493. package/dist/internal/adjacent-runs.js +1 -1
  494. package/dist/internal/approval-wait-until.d.ts +7 -0
  495. package/dist/internal/approval-wait-until.js +1 -0
  496. package/dist/internal/aria-controls.js +1 -1
  497. package/dist/internal/catalog-picker.d.ts +2 -2
  498. package/dist/internal/catalog-picker.js +1 -1
  499. package/dist/internal/collection-snapshot.js +1 -1
  500. package/dist/internal/composed-tree.d.ts +18 -0
  501. package/dist/internal/composed-tree.js +1 -1
  502. package/dist/internal/copy-feedback.js +1 -0
  503. package/dist/internal/css-length.js +1 -1
  504. package/dist/internal/css-motion-time.js +1 -1
  505. package/dist/internal/css-number.js +1 -0
  506. package/dist/internal/default-strings/agent-tools.generated.js +1 -0
  507. package/dist/internal/default-strings/charts.generated.js +1 -0
  508. package/dist/internal/default-strings/conversation.generated.js +1 -0
  509. package/dist/internal/default-strings/data.generated.js +1 -0
  510. package/dist/internal/default-strings/forms.generated.js +1 -0
  511. package/dist/internal/default-strings/layout.generated.js +1 -0
  512. package/dist/internal/default-strings/media.generated.js +1 -0
  513. package/dist/internal/default-strings/overlays.generated.js +1 -0
  514. package/dist/internal/default-strings/retrieval.generated.js +1 -0
  515. package/dist/internal/default-strings/shared.generated.js +1 -0
  516. package/dist/internal/default-strings/utility.generated.js +1 -0
  517. package/dist/internal/default-strings/viewers.generated.js +5 -0
  518. package/dist/internal/deferred-focus-return.d.ts +33 -0
  519. package/dist/internal/deferred-focus-return.js +1 -1
  520. package/dist/internal/dev-mode-attribute-warning.development.js +1 -1
  521. package/dist/internal/dev-mode-attribute-warning.production.js +1 -1
  522. package/dist/internal/document-tokens.d.ts +11 -0
  523. package/dist/internal/document-tokens.generated.js +15 -0
  524. package/dist/internal/document-tokens.js +3 -0
  525. package/dist/internal/fixed-containing-block.js +1 -1
  526. package/dist/internal/form-associated.d.ts +39 -3
  527. package/dist/internal/form-associated.js +1 -1
  528. package/dist/internal/form-control-element.d.ts +13 -0
  529. package/dist/internal/form-control-element.js +1 -0
  530. package/dist/internal/form-control.styles.js +1 -1
  531. package/dist/internal/glass-surface.styles.js +1 -1
  532. package/dist/internal/host-tokens.styles.js +1 -0
  533. package/dist/internal/image-zoom.js +1 -0
  534. package/dist/internal/inherited-attribute-hub.js +1 -1
  535. package/dist/internal/intl-cache.js +1 -1
  536. package/dist/internal/locale-loaders.generated.js +1 -1
  537. package/dist/internal/localization-types.d.ts +1 -1
  538. package/dist/internal/localization.js +2 -2
  539. package/dist/internal/lyra-element.d.ts +4 -2
  540. package/dist/internal/lyra-element.js +2 -2
  541. package/dist/internal/modal-surface-controller.js +1 -1
  542. package/dist/internal/object-guards.js +1 -1
  543. package/dist/internal/opaque-content-border.styles.js +1 -1
  544. package/dist/internal/open-overlay-raise.styles.js +1 -0
  545. package/dist/internal/optional-peer-capabilities.d.ts +3 -1
  546. package/dist/internal/optional-peer-capabilities.js +1 -1
  547. package/dist/internal/optional-peer-failure.js +1 -0
  548. package/dist/internal/orientation-breakpoint.js +1 -1
  549. package/dist/internal/overlay-manager.d.ts +6 -1
  550. package/dist/internal/overlay-manager.js +1 -1
  551. package/dist/internal/overlay-stack.d.ts +7 -3
  552. package/dist/internal/overlay-stack.js +1 -1
  553. package/dist/internal/package-metadata.js +1 -1
  554. package/dist/internal/persisted-restore.js +1 -1
  555. package/dist/internal/popup-controller.js +1 -0
  556. package/dist/internal/prefix.js +1 -1
  557. package/dist/internal/rendered-tree-traversal.d.ts +3 -1
  558. package/dist/internal/rendered-tree-traversal.js +1 -1
  559. package/dist/internal/retry-forwarder.js +1 -0
  560. package/dist/internal/roving-toolbar.js +1 -1
  561. package/dist/internal/scoped-definitions.generated.js +1 -1
  562. package/dist/internal/score-tiers.d.ts +4 -0
  563. package/dist/internal/score-tiers.js +1 -0
  564. package/dist/internal/semantic-variant.d.ts +7 -0
  565. package/dist/internal/semantic-variant.js +1 -0
  566. package/dist/internal/shared-unions.d.ts +1 -1
  567. package/dist/internal/specialist-host-tokens.styles.js +1 -0
  568. package/dist/internal/specialist-tokens.generated.js +2 -0
  569. package/dist/internal/step-value.js +1 -1
  570. package/dist/internal/theme-observation.js +1 -1
  571. package/dist/internal/theme-scopes.d.ts +11 -0
  572. package/dist/internal/theme-scopes.js +1 -0
  573. package/dist/internal/viewer-search.js +1 -1
  574. package/dist/looks/shadcn.css +1 -1
  575. package/dist/lyra.d.ts +1 -1
  576. package/dist/lyra.js +1 -1
  577. package/dist/styles/design-tokens.css +1 -1
  578. package/dist/styles/tokens-root.css +1 -1
  579. package/dist/surfaces/glass.css +1 -1
  580. package/dist/testing/happy-dom-shims.d.ts +37 -0
  581. package/dist/testing/happy-dom-shims.js +1 -1
  582. package/dist/testing/index.d.ts +1 -1
  583. package/dist/testing/index.js +1 -1
  584. package/dist/testing/interaction-drivers.d.ts +66 -7
  585. package/dist/testing/interaction-drivers.js +1 -1
  586. package/dist/testing/jsdom-shims.d.ts +70 -0
  587. package/dist/testing/jsdom-shims.js +1 -0
  588. package/dist/theme/look-inputs.d.ts +1 -1
  589. package/dist/theme/look-inputs.js +37 -41
  590. package/dist/theme/theme.d.ts +13 -0
  591. package/dist/theme/theme.js +1 -1
  592. package/dist/theme.css +1 -1
  593. package/dist/utilities/index.d.ts +1 -1
  594. package/dist/utilities/index.js +1 -1
  595. package/dist/utilities/scoped-registry.d.ts +3 -0
  596. package/dist/utilities/scoped-registry.js +1 -1
  597. package/dist/utilities/theme-scopes.d.ts +1 -0
  598. package/dist/utilities/theme-scopes.js +1 -0
  599. package/dist/utilities/tokens.d.ts +1 -0
  600. package/dist/utilities/tokens.js +1 -0
  601. package/llms/components/lr-accordion-item.md +1 -1
  602. package/llms/components/lr-accordion.md +1 -1
  603. package/llms/components/lr-alert.md +2 -2
  604. package/llms/components/lr-app-rail-group.md +1 -1
  605. package/llms/components/lr-app-rail-item.md +1 -1
  606. package/llms/components/lr-app-rail.md +52 -5
  607. package/llms/components/lr-attachment-chip.md +1 -10
  608. package/llms/components/lr-attachment-trigger.md +0 -10
  609. package/llms/components/lr-avatar.md +4 -8
  610. package/llms/components/lr-badge.md +16 -20
  611. package/llms/components/lr-box-plot.md +1 -1
  612. package/llms/components/lr-breadcrumb-item.md +1 -1
  613. package/llms/components/lr-breadcrumb.md +1 -1
  614. package/llms/components/lr-button-group.md +1 -1
  615. package/llms/components/lr-button.md +1 -1
  616. package/llms/components/lr-calendar.md +1 -1
  617. package/llms/components/lr-callout.md +3 -13
  618. package/llms/components/lr-card.md +1 -1
  619. package/llms/components/lr-carousel-item.md +1 -1
  620. package/llms/components/lr-carousel.md +1 -1
  621. package/llms/components/lr-chart.md +5 -7
  622. package/llms/components/lr-checkbox-group.md +1 -1
  623. package/llms/components/lr-checkbox.md +2 -1
  624. package/llms/components/lr-chip.md +3 -17
  625. package/llms/components/lr-chunk-inspector.md +2 -1
  626. package/llms/components/lr-citation-badge.md +2 -2
  627. package/llms/components/lr-code-block.md +0 -10
  628. package/llms/components/lr-code-editor.md +1 -1
  629. package/llms/components/lr-color-picker.md +1 -1
  630. package/llms/components/lr-combobox.md +6 -3
  631. package/llms/components/lr-command-palette.md +5 -2
  632. package/llms/components/lr-commit-card.md +1 -3
  633. package/llms/components/lr-condition-builder.md +1 -1
  634. package/llms/components/lr-confirm-bar.md +7 -13
  635. package/llms/components/lr-connector-manager.md +3 -1
  636. package/llms/components/lr-context-inspector.md +1 -1
  637. package/llms/components/lr-context-meter.md +1 -1
  638. package/llms/components/lr-control-group.md +1 -1
  639. package/llms/components/lr-copy-button.md +8 -10
  640. package/llms/components/lr-country-picker.md +1 -1
  641. package/llms/components/lr-currency-picker.md +1 -1
  642. package/llms/components/lr-dashboard-grid.md +1 -1
  643. package/llms/components/lr-data-grid.md +1 -1
  644. package/llms/components/lr-date-input.md +1 -1
  645. package/llms/components/lr-date-picker.md +11 -4
  646. package/llms/components/lr-details.md +1 -1
  647. package/llms/components/lr-dialog.md +8 -31
  648. package/llms/components/lr-diff-view.md +1 -1
  649. package/llms/components/lr-divider.md +1 -1
  650. package/llms/components/lr-dock-panel.md +1 -1
  651. package/llms/components/lr-document-library.md +1 -1
  652. package/llms/components/lr-drawer.md +1 -13
  653. package/llms/components/lr-drilldown-panel.md +1 -1
  654. package/llms/components/lr-drop-zone.md +4 -0
  655. package/llms/components/lr-dropdown-item.md +1 -1
  656. package/llms/components/lr-ebook-viewer.md +4 -3
  657. package/llms/components/lr-emoji-picker.md +14 -9
  658. package/llms/components/lr-entity-chip.md +2 -2
  659. package/llms/components/lr-env-list.md +1 -1
  660. package/llms/components/lr-eval-dataset.md +4 -19
  661. package/llms/components/lr-export-button.md +3 -3
  662. package/llms/components/lr-file-icon.md +0 -5
  663. package/llms/components/lr-file-input.md +3 -5
  664. package/llms/components/lr-file-tree.md +1 -1
  665. package/llms/components/lr-filter-bar.md +5 -1
  666. package/llms/components/lr-flag.md +1 -2
  667. package/llms/components/lr-flow-canvas.md +1 -1
  668. package/llms/components/lr-flow-controls.md +1 -1
  669. package/llms/components/lr-flow-minimap.md +2 -2
  670. package/llms/components/lr-flow-node.md +1 -1
  671. package/llms/components/lr-flow-run-status.md +1 -1
  672. package/llms/components/lr-format-bytes.md +2 -3
  673. package/llms/components/lr-format-date.md +2 -3
  674. package/llms/components/lr-format-number.md +1 -1
  675. package/llms/components/lr-funnel.md +1 -1
  676. package/llms/components/lr-gauge.md +1 -1
  677. package/llms/components/lr-generation-metrics.md +1 -1
  678. package/llms/components/lr-graph-query-builder.md +1 -1
  679. package/llms/components/lr-heatmap.md +1 -1
  680. package/llms/components/lr-icon-button.md +14 -2
  681. package/llms/components/lr-icon.md +1 -1
  682. package/llms/components/lr-image-viewer.md +8 -0
  683. package/llms/components/lr-input.md +1 -1
  684. package/llms/components/lr-intersection-observer.md +1 -1
  685. package/llms/components/lr-json-viewer.md +1 -1
  686. package/llms/components/lr-knowledge-graph-explorer.md +2 -2
  687. package/llms/components/lr-known-date.md +1 -1
  688. package/llms/components/lr-lite-chart.md +3 -4
  689. package/llms/components/lr-live-region.md +1 -1
  690. package/llms/components/lr-locale-picker.md +1 -1
  691. package/llms/components/lr-map.md +1 -3
  692. package/llms/components/lr-media-card.md +1 -10
  693. package/llms/components/lr-memory-panel.md +2 -0
  694. package/llms/components/lr-mention-popover.md +3 -3
  695. package/llms/components/lr-menu-item.md +1 -1
  696. package/llms/components/lr-menu-label.md +1 -1
  697. package/llms/components/lr-menu.md +1 -1
  698. package/llms/components/lr-menubar-item.md +1 -1
  699. package/llms/components/lr-menubar.md +1 -1
  700. package/llms/components/lr-message-actions.md +1 -11
  701. package/llms/components/lr-message-parts.md +3 -5
  702. package/llms/components/lr-model-select.md +2 -4
  703. package/llms/components/lr-multi-split.md +1 -1
  704. package/llms/components/lr-mutation-observer.md +2 -2
  705. package/llms/components/lr-native-time-input.md +1 -1
  706. package/llms/components/lr-navigation-menu-item.md +1 -1
  707. package/llms/components/lr-navigation-menu.md +1 -1
  708. package/llms/components/lr-number-input.md +1 -1
  709. package/llms/components/lr-option.md +1 -1
  710. package/llms/components/lr-otp-input.md +1 -1
  711. package/llms/components/lr-page.md +1 -1
  712. package/llms/components/lr-pagination.md +5 -3
  713. package/llms/components/lr-pan-zoom.md +1 -3
  714. package/llms/components/lr-permission-grant.md +3 -1
  715. package/llms/components/lr-phone-input.md +7 -5
  716. package/llms/components/lr-poll-status.md +1 -1
  717. package/llms/components/lr-popover.md +5 -9
  718. package/llms/components/lr-popup.md +1 -3
  719. package/llms/components/lr-progress-bar.md +2 -1
  720. package/llms/components/lr-progress-ring.md +4 -8
  721. package/llms/components/lr-prompt-input.md +3 -1
  722. package/llms/components/lr-prompt-studio.md +4 -4
  723. package/llms/components/lr-radio-button.md +2 -2
  724. package/llms/components/lr-radio-group.md +1 -1
  725. package/llms/components/lr-radio.md +3 -2
  726. package/llms/components/lr-random-content.md +1 -1
  727. package/llms/components/lr-rating.md +2 -3
  728. package/llms/components/lr-relative-time.md +2 -3
  729. package/llms/components/lr-reorder-item.md +1 -1
  730. package/llms/components/lr-reorder-list.md +1 -1
  731. package/llms/components/lr-research-progress.md +2 -0
  732. package/llms/components/lr-resize-observer.md +1 -1
  733. package/llms/components/lr-responsive-panel.md +1 -1
  734. package/llms/components/lr-retrieval-compare.md +2 -0
  735. package/llms/components/lr-retrieval-trace.md +2 -0
  736. package/llms/components/lr-rubric-form.md +1 -1
  737. package/llms/components/lr-scroller.md +1 -1
  738. package/llms/components/lr-segmented.md +8 -4
  739. package/llms/components/lr-select.md +1 -1
  740. package/llms/components/lr-sequence-playback.md +1 -2
  741. package/llms/components/lr-sequence-strip.md +1 -1
  742. package/llms/components/lr-signature-pad.md +1 -1
  743. package/llms/components/lr-skeleton.md +2 -4
  744. package/llms/components/lr-slider.md +1 -1
  745. package/llms/components/lr-sparkline.md +1 -1
  746. package/llms/components/lr-split-panel.md +1 -1
  747. package/llms/components/lr-stat.md +1 -1
  748. package/llms/components/lr-stepper.md +1 -1
  749. package/llms/components/lr-swatch-picker.md +1 -1
  750. package/llms/components/lr-switch.md +2 -1
  751. package/llms/components/lr-tab-group.md +1 -1
  752. package/llms/components/lr-tab-panel.md +1 -1
  753. package/llms/components/lr-tab.md +1 -1
  754. package/llms/components/lr-table.md +16 -14
  755. package/llms/components/lr-task-list.md +3 -3
  756. package/llms/components/lr-test-results.md +2 -4
  757. package/llms/components/lr-textarea.md +1 -1
  758. package/llms/components/lr-thread-list.md +4 -3
  759. package/llms/components/lr-time-input.md +1 -1
  760. package/llms/components/lr-time-range.md +5 -4
  761. package/llms/components/lr-time-zone-picker.md +1 -1
  762. package/llms/components/lr-timeline-item.md +1 -1
  763. package/llms/components/lr-timeline.md +1 -1
  764. package/llms/components/lr-toggle-group.md +1 -1
  765. package/llms/components/lr-toggle.md +1 -1
  766. package/llms/components/lr-token-input.md +1 -1
  767. package/llms/components/lr-tool-approval-dialog.md +12 -10
  768. package/llms/components/lr-tool-call-block.md +1 -1
  769. package/llms/components/lr-tool-call-chip.md +1 -3
  770. package/llms/components/lr-tool-result-view.md +3 -3
  771. package/llms/components/lr-tool-timeline.md +2 -2
  772. package/llms/components/lr-tooltip.md +8 -11
  773. package/llms/components/lr-tour.md +2 -2
  774. package/llms/components/lr-tree-item.md +1 -1
  775. package/llms/components/lr-tree.md +1 -1
  776. package/llms/components/lr-unit-picker.md +1 -1
  777. package/llms/components/lr-usage-badge.md +1 -3
  778. package/llms/components/lr-video.md +1 -2
  779. package/llms/components/lr-virtual-list.md +1 -1
  780. package/llms/components/lr-visually-hidden.md +1 -1
  781. package/llms/components/lr-voice-picker.md +1 -1
  782. package/llms/components/lr-widget.md +1 -1
  783. package/llms/components/lr-word-cloud.md +1 -1
  784. package/llms/components/lr-zoomable-frame.md +1 -6
  785. package/llms/migration.md +105 -2
  786. package/llms/peers.md +3 -2
  787. package/llms/shared/ai-and-peers.md +2 -2
  788. package/llms/shared/events-and-types.md +45 -1
  789. package/llms/shared/frameworks-and-ssr.md +16 -0
  790. package/llms/shared/imports-and-registration.md +6 -5
  791. package/llms/shared/localization-and-rtl.md +18 -18
  792. package/llms/shared/native-styles-and-utilities.md +38 -3
  793. package/llms/shared/styles-and-tokens.md +243 -103
  794. package/llms/shared/testing-and-utilities.md +134 -49
  795. package/llms/shared.md +502 -181
  796. package/llms/tokens.md +31 -49
  797. package/llms.txt +14 -12
  798. package/locales.json +1002 -1002
  799. package/package.json +28 -6884
  800. package/registrations.json +1 -1
  801. package/skills/compose-lyra-interfaces/SKILL.md +60 -0
  802. package/skills/compose-lyra-interfaces/agents/openai.yaml +4 -0
  803. package/skills/compose-lyra-interfaces/references/composition-patterns.md +77 -0
  804. package/skills/lyra-ui/SKILL.md +145 -0
  805. package/skills/lyra-ui/commands/frontend.md +37 -0
  806. package/skills/lyra-ui/commands/migrate.md +44 -0
  807. package/skills/lyra-ui/commands/new-component.md +19 -0
  808. package/skills/lyra-ui/commands/review.md +247 -0
  809. package/skills/lyra-ui/commands/update.md +30 -0
  810. package/skills/lyra-ui/reporting.md +137 -0
  811. package/custom-elements.json +0 -1
  812. package/dist/internal/default-strings.generated.js +0 -5
  813. package/dist/internal/side-effect-only.d.ts +0 -1
  814. package/dist/internal/specialist-tokens.styles.js +0 -1
  815. package/dist/internal/tokens/palette.styles.js +0 -1
  816. package/dist/internal/tokens.styles.js +0 -1
  817. package/dist/translations/am/agent-tools.js +0 -1
  818. package/dist/translations/am/charts.js +0 -1
  819. package/dist/translations/am/conversation.js +0 -1
  820. package/dist/translations/am/data.js +0 -1
  821. package/dist/translations/am/forms.js +0 -1
  822. package/dist/translations/am/layout.js +0 -1
  823. package/dist/translations/am/media.js +0 -1
  824. package/dist/translations/am/overlays.js +0 -1
  825. package/dist/translations/am/retrieval.js +0 -1
  826. package/dist/translations/am/shared.js +0 -1
  827. package/dist/translations/am/utility.js +0 -1
  828. package/dist/translations/am/viewers.js +0 -5
  829. package/dist/translations/am.js +0 -1
  830. package/dist/translations/ar/agent-tools.js +0 -1
  831. package/dist/translations/ar/charts.js +0 -1
  832. package/dist/translations/ar/conversation.js +0 -1
  833. package/dist/translations/ar/data.js +0 -1
  834. package/dist/translations/ar/forms.js +0 -1
  835. package/dist/translations/ar/layout.js +0 -1
  836. package/dist/translations/ar/media.js +0 -1
  837. package/dist/translations/ar/overlays.js +0 -1
  838. package/dist/translations/ar/retrieval.js +0 -1
  839. package/dist/translations/ar/shared.js +0 -1
  840. package/dist/translations/ar/utility.js +0 -1
  841. package/dist/translations/ar/viewers.js +0 -5
  842. package/dist/translations/ar.js +0 -1
  843. package/dist/translations/bho/agent-tools.js +0 -1
  844. package/dist/translations/bho/charts.js +0 -1
  845. package/dist/translations/bho/conversation.js +0 -1
  846. package/dist/translations/bho/data.js +0 -1
  847. package/dist/translations/bho/forms.js +0 -1
  848. package/dist/translations/bho/layout.js +0 -1
  849. package/dist/translations/bho/media.js +0 -1
  850. package/dist/translations/bho/overlays.js +0 -1
  851. package/dist/translations/bho/retrieval.js +0 -1
  852. package/dist/translations/bho/shared.js +0 -1
  853. package/dist/translations/bho/utility.js +0 -1
  854. package/dist/translations/bho/viewers.js +0 -5
  855. package/dist/translations/bho.js +0 -1
  856. package/dist/translations/bn/agent-tools.js +0 -1
  857. package/dist/translations/bn/charts.js +0 -1
  858. package/dist/translations/bn/conversation.js +0 -1
  859. package/dist/translations/bn/data.js +0 -1
  860. package/dist/translations/bn/forms.js +0 -1
  861. package/dist/translations/bn/layout.js +0 -1
  862. package/dist/translations/bn/media.js +0 -1
  863. package/dist/translations/bn/overlays.js +0 -1
  864. package/dist/translations/bn/retrieval.js +0 -1
  865. package/dist/translations/bn/shared.js +0 -1
  866. package/dist/translations/bn/utility.js +0 -1
  867. package/dist/translations/bn/viewers.js +0 -5
  868. package/dist/translations/bn.js +0 -1
  869. package/dist/translations/cs/agent-tools.js +0 -1
  870. package/dist/translations/cs/charts.js +0 -1
  871. package/dist/translations/cs/conversation.js +0 -1
  872. package/dist/translations/cs/data.js +0 -1
  873. package/dist/translations/cs/forms.js +0 -1
  874. package/dist/translations/cs/layout.js +0 -1
  875. package/dist/translations/cs/media.js +0 -1
  876. package/dist/translations/cs/overlays.js +0 -1
  877. package/dist/translations/cs/retrieval.js +0 -1
  878. package/dist/translations/cs/shared.js +0 -1
  879. package/dist/translations/cs/utility.js +0 -1
  880. package/dist/translations/cs/viewers.js +0 -5
  881. package/dist/translations/cs.js +0 -1
  882. package/dist/translations/da/agent-tools.js +0 -1
  883. package/dist/translations/da/charts.js +0 -1
  884. package/dist/translations/da/conversation.js +0 -1
  885. package/dist/translations/da/data.js +0 -1
  886. package/dist/translations/da/forms.js +0 -1
  887. package/dist/translations/da/layout.js +0 -1
  888. package/dist/translations/da/media.js +0 -1
  889. package/dist/translations/da/overlays.js +0 -1
  890. package/dist/translations/da/retrieval.js +0 -1
  891. package/dist/translations/da/shared.js +0 -1
  892. package/dist/translations/da/utility.js +0 -1
  893. package/dist/translations/da/viewers.js +0 -5
  894. package/dist/translations/da.js +0 -1
  895. package/dist/translations/de/agent-tools.js +0 -1
  896. package/dist/translations/de/charts.js +0 -1
  897. package/dist/translations/de/conversation.js +0 -1
  898. package/dist/translations/de/data.js +0 -1
  899. package/dist/translations/de/forms.js +0 -1
  900. package/dist/translations/de/layout.js +0 -1
  901. package/dist/translations/de/media.js +0 -1
  902. package/dist/translations/de/overlays.js +0 -1
  903. package/dist/translations/de/retrieval.js +0 -1
  904. package/dist/translations/de/shared.js +0 -1
  905. package/dist/translations/de/utility.js +0 -1
  906. package/dist/translations/de/viewers.js +0 -5
  907. package/dist/translations/de-CH/agent-tools.js +0 -1
  908. package/dist/translations/de-CH/charts.js +0 -1
  909. package/dist/translations/de-CH/conversation.js +0 -1
  910. package/dist/translations/de-CH/data.js +0 -1
  911. package/dist/translations/de-CH/forms.js +0 -1
  912. package/dist/translations/de-CH/layout.js +0 -1
  913. package/dist/translations/de-CH/media.js +0 -1
  914. package/dist/translations/de-CH/overlays.js +0 -1
  915. package/dist/translations/de-CH/retrieval.js +0 -1
  916. package/dist/translations/de-CH/shared.js +0 -1
  917. package/dist/translations/de-CH/utility.js +0 -1
  918. package/dist/translations/de-CH/viewers.js +0 -1
  919. package/dist/translations/de-CH.js +0 -1
  920. package/dist/translations/de.js +0 -1
  921. package/dist/translations/el/agent-tools.js +0 -1
  922. package/dist/translations/el/charts.js +0 -1
  923. package/dist/translations/el/conversation.js +0 -1
  924. package/dist/translations/el/data.js +0 -1
  925. package/dist/translations/el/forms.js +0 -1
  926. package/dist/translations/el/layout.js +0 -1
  927. package/dist/translations/el/media.js +0 -1
  928. package/dist/translations/el/overlays.js +0 -1
  929. package/dist/translations/el/retrieval.js +0 -1
  930. package/dist/translations/el/shared.js +0 -1
  931. package/dist/translations/el/utility.js +0 -1
  932. package/dist/translations/el/viewers.js +0 -5
  933. package/dist/translations/el.js +0 -1
  934. package/dist/translations/es/agent-tools.js +0 -1
  935. package/dist/translations/es/charts.js +0 -1
  936. package/dist/translations/es/conversation.js +0 -1
  937. package/dist/translations/es/data.js +0 -1
  938. package/dist/translations/es/forms.js +0 -1
  939. package/dist/translations/es/layout.js +0 -1
  940. package/dist/translations/es/media.js +0 -1
  941. package/dist/translations/es/overlays.js +0 -1
  942. package/dist/translations/es/retrieval.js +0 -1
  943. package/dist/translations/es/shared.js +0 -1
  944. package/dist/translations/es/utility.js +0 -1
  945. package/dist/translations/es/viewers.js +0 -5
  946. package/dist/translations/es.js +0 -1
  947. package/dist/translations/fa/agent-tools.js +0 -1
  948. package/dist/translations/fa/charts.js +0 -1
  949. package/dist/translations/fa/conversation.js +0 -1
  950. package/dist/translations/fa/data.js +0 -1
  951. package/dist/translations/fa/forms.js +0 -1
  952. package/dist/translations/fa/layout.js +0 -1
  953. package/dist/translations/fa/media.js +0 -1
  954. package/dist/translations/fa/overlays.js +0 -1
  955. package/dist/translations/fa/retrieval.js +0 -1
  956. package/dist/translations/fa/shared.js +0 -1
  957. package/dist/translations/fa/utility.js +0 -1
  958. package/dist/translations/fa/viewers.js +0 -5
  959. package/dist/translations/fa-AF/agent-tools.js +0 -1
  960. package/dist/translations/fa-AF/charts.js +0 -1
  961. package/dist/translations/fa-AF/conversation.js +0 -1
  962. package/dist/translations/fa-AF/data.js +0 -1
  963. package/dist/translations/fa-AF/forms.js +0 -1
  964. package/dist/translations/fa-AF/layout.js +0 -1
  965. package/dist/translations/fa-AF/media.js +0 -1
  966. package/dist/translations/fa-AF/overlays.js +0 -1
  967. package/dist/translations/fa-AF/retrieval.js +0 -1
  968. package/dist/translations/fa-AF/shared.js +0 -1
  969. package/dist/translations/fa-AF/utility.js +0 -1
  970. package/dist/translations/fa-AF/viewers.js +0 -5
  971. package/dist/translations/fa-AF.js +0 -1
  972. package/dist/translations/fa.js +0 -1
  973. package/dist/translations/fi/agent-tools.js +0 -1
  974. package/dist/translations/fi/charts.js +0 -1
  975. package/dist/translations/fi/conversation.js +0 -1
  976. package/dist/translations/fi/data.js +0 -1
  977. package/dist/translations/fi/forms.js +0 -1
  978. package/dist/translations/fi/layout.js +0 -1
  979. package/dist/translations/fi/media.js +0 -1
  980. package/dist/translations/fi/overlays.js +0 -1
  981. package/dist/translations/fi/retrieval.js +0 -1
  982. package/dist/translations/fi/shared.js +0 -1
  983. package/dist/translations/fi/utility.js +0 -1
  984. package/dist/translations/fi/viewers.js +0 -5
  985. package/dist/translations/fi.js +0 -1
  986. package/dist/translations/fr/agent-tools.js +0 -1
  987. package/dist/translations/fr/charts.js +0 -1
  988. package/dist/translations/fr/conversation.js +0 -1
  989. package/dist/translations/fr/data.js +0 -1
  990. package/dist/translations/fr/forms.js +0 -1
  991. package/dist/translations/fr/layout.js +0 -1
  992. package/dist/translations/fr/media.js +0 -1
  993. package/dist/translations/fr/overlays.js +0 -1
  994. package/dist/translations/fr/retrieval.js +0 -1
  995. package/dist/translations/fr/shared.js +0 -1
  996. package/dist/translations/fr/utility.js +0 -1
  997. package/dist/translations/fr/viewers.js +0 -5
  998. package/dist/translations/fr.js +0 -1
  999. package/dist/translations/gu/agent-tools.js +0 -1
  1000. package/dist/translations/gu/charts.js +0 -1
  1001. package/dist/translations/gu/conversation.js +0 -1
  1002. package/dist/translations/gu/data.js +0 -1
  1003. package/dist/translations/gu/forms.js +0 -1
  1004. package/dist/translations/gu/layout.js +0 -1
  1005. package/dist/translations/gu/media.js +0 -1
  1006. package/dist/translations/gu/overlays.js +0 -1
  1007. package/dist/translations/gu/retrieval.js +0 -1
  1008. package/dist/translations/gu/shared.js +0 -1
  1009. package/dist/translations/gu/utility.js +0 -1
  1010. package/dist/translations/gu/viewers.js +0 -5
  1011. package/dist/translations/gu.js +0 -1
  1012. package/dist/translations/ha/agent-tools.js +0 -1
  1013. package/dist/translations/ha/charts.js +0 -1
  1014. package/dist/translations/ha/conversation.js +0 -1
  1015. package/dist/translations/ha/data.js +0 -1
  1016. package/dist/translations/ha/forms.js +0 -1
  1017. package/dist/translations/ha/layout.js +0 -1
  1018. package/dist/translations/ha/media.js +0 -1
  1019. package/dist/translations/ha/overlays.js +0 -1
  1020. package/dist/translations/ha/retrieval.js +0 -1
  1021. package/dist/translations/ha/shared.js +0 -1
  1022. package/dist/translations/ha/utility.js +0 -1
  1023. package/dist/translations/ha/viewers.js +0 -5
  1024. package/dist/translations/ha.js +0 -1
  1025. package/dist/translations/he/agent-tools.js +0 -1
  1026. package/dist/translations/he/charts.js +0 -1
  1027. package/dist/translations/he/conversation.js +0 -1
  1028. package/dist/translations/he/data.js +0 -1
  1029. package/dist/translations/he/forms.js +0 -1
  1030. package/dist/translations/he/layout.js +0 -1
  1031. package/dist/translations/he/media.js +0 -1
  1032. package/dist/translations/he/overlays.js +0 -1
  1033. package/dist/translations/he/retrieval.js +0 -1
  1034. package/dist/translations/he/shared.js +0 -1
  1035. package/dist/translations/he/utility.js +0 -1
  1036. package/dist/translations/he/viewers.js +0 -5
  1037. package/dist/translations/he.js +0 -1
  1038. package/dist/translations/hi/agent-tools.js +0 -1
  1039. package/dist/translations/hi/charts.js +0 -1
  1040. package/dist/translations/hi/conversation.js +0 -1
  1041. package/dist/translations/hi/data.js +0 -1
  1042. package/dist/translations/hi/forms.js +0 -1
  1043. package/dist/translations/hi/layout.js +0 -1
  1044. package/dist/translations/hi/media.js +0 -1
  1045. package/dist/translations/hi/overlays.js +0 -1
  1046. package/dist/translations/hi/retrieval.js +0 -1
  1047. package/dist/translations/hi/shared.js +0 -1
  1048. package/dist/translations/hi/utility.js +0 -1
  1049. package/dist/translations/hi/viewers.js +0 -5
  1050. package/dist/translations/hi.js +0 -1
  1051. package/dist/translations/hr/agent-tools.js +0 -1
  1052. package/dist/translations/hr/charts.js +0 -1
  1053. package/dist/translations/hr/conversation.js +0 -1
  1054. package/dist/translations/hr/data.js +0 -1
  1055. package/dist/translations/hr/forms.js +0 -1
  1056. package/dist/translations/hr/layout.js +0 -1
  1057. package/dist/translations/hr/media.js +0 -1
  1058. package/dist/translations/hr/overlays.js +0 -1
  1059. package/dist/translations/hr/retrieval.js +0 -1
  1060. package/dist/translations/hr/shared.js +0 -1
  1061. package/dist/translations/hr/utility.js +0 -1
  1062. package/dist/translations/hr/viewers.js +0 -5
  1063. package/dist/translations/hr.js +0 -1
  1064. package/dist/translations/hu/agent-tools.js +0 -1
  1065. package/dist/translations/hu/charts.js +0 -1
  1066. package/dist/translations/hu/conversation.js +0 -1
  1067. package/dist/translations/hu/data.js +0 -1
  1068. package/dist/translations/hu/forms.js +0 -1
  1069. package/dist/translations/hu/layout.js +0 -1
  1070. package/dist/translations/hu/media.js +0 -1
  1071. package/dist/translations/hu/overlays.js +0 -1
  1072. package/dist/translations/hu/retrieval.js +0 -1
  1073. package/dist/translations/hu/shared.js +0 -1
  1074. package/dist/translations/hu/utility.js +0 -1
  1075. package/dist/translations/hu/viewers.js +0 -5
  1076. package/dist/translations/hu.js +0 -1
  1077. package/dist/translations/id/agent-tools.js +0 -1
  1078. package/dist/translations/id/charts.js +0 -1
  1079. package/dist/translations/id/conversation.js +0 -1
  1080. package/dist/translations/id/data.js +0 -1
  1081. package/dist/translations/id/forms.js +0 -1
  1082. package/dist/translations/id/layout.js +0 -1
  1083. package/dist/translations/id/media.js +0 -1
  1084. package/dist/translations/id/overlays.js +0 -1
  1085. package/dist/translations/id/retrieval.js +0 -1
  1086. package/dist/translations/id/shared.js +0 -1
  1087. package/dist/translations/id/utility.js +0 -1
  1088. package/dist/translations/id/viewers.js +0 -5
  1089. package/dist/translations/id.js +0 -1
  1090. package/dist/translations/ig/agent-tools.js +0 -1
  1091. package/dist/translations/ig/charts.js +0 -1
  1092. package/dist/translations/ig/conversation.js +0 -1
  1093. package/dist/translations/ig/data.js +0 -1
  1094. package/dist/translations/ig/forms.js +0 -1
  1095. package/dist/translations/ig/layout.js +0 -1
  1096. package/dist/translations/ig/media.js +0 -1
  1097. package/dist/translations/ig/overlays.js +0 -1
  1098. package/dist/translations/ig/retrieval.js +0 -1
  1099. package/dist/translations/ig/shared.js +0 -1
  1100. package/dist/translations/ig/utility.js +0 -1
  1101. package/dist/translations/ig/viewers.js +0 -5
  1102. package/dist/translations/ig.js +0 -1
  1103. package/dist/translations/it/agent-tools.js +0 -1
  1104. package/dist/translations/it/charts.js +0 -1
  1105. package/dist/translations/it/conversation.js +0 -1
  1106. package/dist/translations/it/data.js +0 -1
  1107. package/dist/translations/it/forms.js +0 -1
  1108. package/dist/translations/it/layout.js +0 -1
  1109. package/dist/translations/it/media.js +0 -1
  1110. package/dist/translations/it/overlays.js +0 -1
  1111. package/dist/translations/it/retrieval.js +0 -1
  1112. package/dist/translations/it/shared.js +0 -1
  1113. package/dist/translations/it/utility.js +0 -1
  1114. package/dist/translations/it/viewers.js +0 -5
  1115. package/dist/translations/it.js +0 -1
  1116. package/dist/translations/ja/agent-tools.js +0 -1
  1117. package/dist/translations/ja/charts.js +0 -1
  1118. package/dist/translations/ja/conversation.js +0 -1
  1119. package/dist/translations/ja/data.js +0 -1
  1120. package/dist/translations/ja/forms.js +0 -1
  1121. package/dist/translations/ja/layout.js +0 -1
  1122. package/dist/translations/ja/media.js +0 -1
  1123. package/dist/translations/ja/overlays.js +0 -1
  1124. package/dist/translations/ja/retrieval.js +0 -1
  1125. package/dist/translations/ja/shared.js +0 -1
  1126. package/dist/translations/ja/utility.js +0 -1
  1127. package/dist/translations/ja/viewers.js +0 -4
  1128. package/dist/translations/ja.js +0 -1
  1129. package/dist/translations/jv/agent-tools.js +0 -1
  1130. package/dist/translations/jv/charts.js +0 -1
  1131. package/dist/translations/jv/conversation.js +0 -1
  1132. package/dist/translations/jv/data.js +0 -1
  1133. package/dist/translations/jv/forms.js +0 -1
  1134. package/dist/translations/jv/layout.js +0 -1
  1135. package/dist/translations/jv/media.js +0 -1
  1136. package/dist/translations/jv/overlays.js +0 -1
  1137. package/dist/translations/jv/retrieval.js +0 -1
  1138. package/dist/translations/jv/shared.js +0 -1
  1139. package/dist/translations/jv/utility.js +0 -1
  1140. package/dist/translations/jv/viewers.js +0 -5
  1141. package/dist/translations/jv.js +0 -1
  1142. package/dist/translations/kk/agent-tools.js +0 -1
  1143. package/dist/translations/kk/charts.js +0 -1
  1144. package/dist/translations/kk/conversation.js +0 -1
  1145. package/dist/translations/kk/data.js +0 -1
  1146. package/dist/translations/kk/forms.js +0 -1
  1147. package/dist/translations/kk/layout.js +0 -1
  1148. package/dist/translations/kk/media.js +0 -1
  1149. package/dist/translations/kk/overlays.js +0 -1
  1150. package/dist/translations/kk/retrieval.js +0 -1
  1151. package/dist/translations/kk/shared.js +0 -1
  1152. package/dist/translations/kk/utility.js +0 -1
  1153. package/dist/translations/kk/viewers.js +0 -5
  1154. package/dist/translations/kk.js +0 -1
  1155. package/dist/translations/kn/agent-tools.js +0 -1
  1156. package/dist/translations/kn/charts.js +0 -1
  1157. package/dist/translations/kn/conversation.js +0 -1
  1158. package/dist/translations/kn/data.js +0 -1
  1159. package/dist/translations/kn/forms.js +0 -1
  1160. package/dist/translations/kn/layout.js +0 -1
  1161. package/dist/translations/kn/media.js +0 -1
  1162. package/dist/translations/kn/overlays.js +0 -1
  1163. package/dist/translations/kn/retrieval.js +0 -1
  1164. package/dist/translations/kn/shared.js +0 -1
  1165. package/dist/translations/kn/utility.js +0 -1
  1166. package/dist/translations/kn/viewers.js +0 -5
  1167. package/dist/translations/kn.js +0 -1
  1168. package/dist/translations/ko/agent-tools.js +0 -1
  1169. package/dist/translations/ko/charts.js +0 -1
  1170. package/dist/translations/ko/conversation.js +0 -1
  1171. package/dist/translations/ko/data.js +0 -1
  1172. package/dist/translations/ko/forms.js +0 -1
  1173. package/dist/translations/ko/layout.js +0 -1
  1174. package/dist/translations/ko/media.js +0 -1
  1175. package/dist/translations/ko/overlays.js +0 -1
  1176. package/dist/translations/ko/retrieval.js +0 -1
  1177. package/dist/translations/ko/shared.js +0 -1
  1178. package/dist/translations/ko/utility.js +0 -1
  1179. package/dist/translations/ko/viewers.js +0 -5
  1180. package/dist/translations/ko.js +0 -1
  1181. package/dist/translations/ln/agent-tools.js +0 -1
  1182. package/dist/translations/ln/charts.js +0 -1
  1183. package/dist/translations/ln/conversation.js +0 -1
  1184. package/dist/translations/ln/data.js +0 -1
  1185. package/dist/translations/ln/forms.js +0 -1
  1186. package/dist/translations/ln/layout.js +0 -1
  1187. package/dist/translations/ln/media.js +0 -1
  1188. package/dist/translations/ln/overlays.js +0 -1
  1189. package/dist/translations/ln/retrieval.js +0 -1
  1190. package/dist/translations/ln/shared.js +0 -1
  1191. package/dist/translations/ln/utility.js +0 -1
  1192. package/dist/translations/ln/viewers.js +0 -5
  1193. package/dist/translations/ln.js +0 -1
  1194. package/dist/translations/ml/agent-tools.js +0 -1
  1195. package/dist/translations/ml/charts.js +0 -1
  1196. package/dist/translations/ml/conversation.js +0 -1
  1197. package/dist/translations/ml/data.js +0 -1
  1198. package/dist/translations/ml/forms.js +0 -1
  1199. package/dist/translations/ml/layout.js +0 -1
  1200. package/dist/translations/ml/media.js +0 -1
  1201. package/dist/translations/ml/overlays.js +0 -1
  1202. package/dist/translations/ml/retrieval.js +0 -1
  1203. package/dist/translations/ml/shared.js +0 -1
  1204. package/dist/translations/ml/utility.js +0 -1
  1205. package/dist/translations/ml/viewers.js +0 -5
  1206. package/dist/translations/ml.js +0 -1
  1207. package/dist/translations/mr/agent-tools.js +0 -1
  1208. package/dist/translations/mr/charts.js +0 -1
  1209. package/dist/translations/mr/conversation.js +0 -1
  1210. package/dist/translations/mr/data.js +0 -1
  1211. package/dist/translations/mr/forms.js +0 -1
  1212. package/dist/translations/mr/layout.js +0 -1
  1213. package/dist/translations/mr/media.js +0 -1
  1214. package/dist/translations/mr/overlays.js +0 -1
  1215. package/dist/translations/mr/retrieval.js +0 -1
  1216. package/dist/translations/mr/shared.js +0 -1
  1217. package/dist/translations/mr/utility.js +0 -1
  1218. package/dist/translations/mr/viewers.js +0 -5
  1219. package/dist/translations/mr.js +0 -1
  1220. package/dist/translations/ms/agent-tools.js +0 -1
  1221. package/dist/translations/ms/charts.js +0 -1
  1222. package/dist/translations/ms/conversation.js +0 -1
  1223. package/dist/translations/ms/data.js +0 -1
  1224. package/dist/translations/ms/forms.js +0 -1
  1225. package/dist/translations/ms/layout.js +0 -1
  1226. package/dist/translations/ms/media.js +0 -1
  1227. package/dist/translations/ms/overlays.js +0 -1
  1228. package/dist/translations/ms/retrieval.js +0 -1
  1229. package/dist/translations/ms/shared.js +0 -1
  1230. package/dist/translations/ms/utility.js +0 -1
  1231. package/dist/translations/ms/viewers.js +0 -5
  1232. package/dist/translations/ms.js +0 -1
  1233. package/dist/translations/my/agent-tools.js +0 -1
  1234. package/dist/translations/my/charts.js +0 -1
  1235. package/dist/translations/my/conversation.js +0 -1
  1236. package/dist/translations/my/data.js +0 -1
  1237. package/dist/translations/my/forms.js +0 -1
  1238. package/dist/translations/my/layout.js +0 -1
  1239. package/dist/translations/my/media.js +0 -1
  1240. package/dist/translations/my/overlays.js +0 -1
  1241. package/dist/translations/my/retrieval.js +0 -1
  1242. package/dist/translations/my/shared.js +0 -1
  1243. package/dist/translations/my/utility.js +0 -1
  1244. package/dist/translations/my/viewers.js +0 -5
  1245. package/dist/translations/my.js +0 -1
  1246. package/dist/translations/nb/agent-tools.js +0 -1
  1247. package/dist/translations/nb/charts.js +0 -1
  1248. package/dist/translations/nb/conversation.js +0 -1
  1249. package/dist/translations/nb/data.js +0 -1
  1250. package/dist/translations/nb/forms.js +0 -1
  1251. package/dist/translations/nb/layout.js +0 -1
  1252. package/dist/translations/nb/media.js +0 -1
  1253. package/dist/translations/nb/overlays.js +0 -1
  1254. package/dist/translations/nb/retrieval.js +0 -1
  1255. package/dist/translations/nb/shared.js +0 -1
  1256. package/dist/translations/nb/utility.js +0 -1
  1257. package/dist/translations/nb/viewers.js +0 -5
  1258. package/dist/translations/nb.js +0 -1
  1259. package/dist/translations/ne/agent-tools.js +0 -1
  1260. package/dist/translations/ne/charts.js +0 -1
  1261. package/dist/translations/ne/conversation.js +0 -1
  1262. package/dist/translations/ne/data.js +0 -1
  1263. package/dist/translations/ne/forms.js +0 -1
  1264. package/dist/translations/ne/layout.js +0 -1
  1265. package/dist/translations/ne/media.js +0 -1
  1266. package/dist/translations/ne/overlays.js +0 -1
  1267. package/dist/translations/ne/retrieval.js +0 -1
  1268. package/dist/translations/ne/shared.js +0 -1
  1269. package/dist/translations/ne/utility.js +0 -1
  1270. package/dist/translations/ne/viewers.js +0 -5
  1271. package/dist/translations/ne.js +0 -1
  1272. package/dist/translations/nl/agent-tools.js +0 -1
  1273. package/dist/translations/nl/charts.js +0 -1
  1274. package/dist/translations/nl/conversation.js +0 -1
  1275. package/dist/translations/nl/data.js +0 -1
  1276. package/dist/translations/nl/forms.js +0 -1
  1277. package/dist/translations/nl/layout.js +0 -1
  1278. package/dist/translations/nl/media.js +0 -1
  1279. package/dist/translations/nl/overlays.js +0 -1
  1280. package/dist/translations/nl/retrieval.js +0 -1
  1281. package/dist/translations/nl/shared.js +0 -1
  1282. package/dist/translations/nl/utility.js +0 -1
  1283. package/dist/translations/nl/viewers.js +0 -5
  1284. package/dist/translations/nl.js +0 -1
  1285. package/dist/translations/nn/agent-tools.js +0 -1
  1286. package/dist/translations/nn/charts.js +0 -1
  1287. package/dist/translations/nn/conversation.js +0 -1
  1288. package/dist/translations/nn/data.js +0 -1
  1289. package/dist/translations/nn/forms.js +0 -1
  1290. package/dist/translations/nn/layout.js +0 -1
  1291. package/dist/translations/nn/media.js +0 -1
  1292. package/dist/translations/nn/overlays.js +0 -1
  1293. package/dist/translations/nn/retrieval.js +0 -1
  1294. package/dist/translations/nn/shared.js +0 -1
  1295. package/dist/translations/nn/utility.js +0 -1
  1296. package/dist/translations/nn/viewers.js +0 -5
  1297. package/dist/translations/nn.js +0 -1
  1298. package/dist/translations/om/agent-tools.js +0 -1
  1299. package/dist/translations/om/charts.js +0 -1
  1300. package/dist/translations/om/conversation.js +0 -1
  1301. package/dist/translations/om/data.js +0 -1
  1302. package/dist/translations/om/forms.js +0 -1
  1303. package/dist/translations/om/layout.js +0 -1
  1304. package/dist/translations/om/media.js +0 -1
  1305. package/dist/translations/om/overlays.js +0 -1
  1306. package/dist/translations/om/retrieval.js +0 -1
  1307. package/dist/translations/om/shared.js +0 -1
  1308. package/dist/translations/om/utility.js +0 -1
  1309. package/dist/translations/om/viewers.js +0 -5
  1310. package/dist/translations/om.js +0 -1
  1311. package/dist/translations/or/agent-tools.js +0 -1
  1312. package/dist/translations/or/charts.js +0 -1
  1313. package/dist/translations/or/conversation.js +0 -1
  1314. package/dist/translations/or/data.js +0 -1
  1315. package/dist/translations/or/forms.js +0 -1
  1316. package/dist/translations/or/layout.js +0 -1
  1317. package/dist/translations/or/media.js +0 -1
  1318. package/dist/translations/or/overlays.js +0 -1
  1319. package/dist/translations/or/retrieval.js +0 -1
  1320. package/dist/translations/or/shared.js +0 -1
  1321. package/dist/translations/or/utility.js +0 -1
  1322. package/dist/translations/or/viewers.js +0 -5
  1323. package/dist/translations/or.js +0 -1
  1324. package/dist/translations/pa/agent-tools.js +0 -1
  1325. package/dist/translations/pa/charts.js +0 -1
  1326. package/dist/translations/pa/conversation.js +0 -1
  1327. package/dist/translations/pa/data.js +0 -1
  1328. package/dist/translations/pa/forms.js +0 -1
  1329. package/dist/translations/pa/layout.js +0 -1
  1330. package/dist/translations/pa/media.js +0 -1
  1331. package/dist/translations/pa/overlays.js +0 -1
  1332. package/dist/translations/pa/retrieval.js +0 -1
  1333. package/dist/translations/pa/shared.js +0 -1
  1334. package/dist/translations/pa/utility.js +0 -1
  1335. package/dist/translations/pa/viewers.js +0 -5
  1336. package/dist/translations/pa.js +0 -1
  1337. package/dist/translations/pcm/agent-tools.js +0 -1
  1338. package/dist/translations/pcm/charts.js +0 -1
  1339. package/dist/translations/pcm/conversation.js +0 -1
  1340. package/dist/translations/pcm/data.js +0 -1
  1341. package/dist/translations/pcm/forms.js +0 -1
  1342. package/dist/translations/pcm/layout.js +0 -1
  1343. package/dist/translations/pcm/media.js +0 -1
  1344. package/dist/translations/pcm/overlays.js +0 -1
  1345. package/dist/translations/pcm/retrieval.js +0 -1
  1346. package/dist/translations/pcm/shared.js +0 -1
  1347. package/dist/translations/pcm/utility.js +0 -1
  1348. package/dist/translations/pcm/viewers.js +0 -5
  1349. package/dist/translations/pcm.js +0 -1
  1350. package/dist/translations/pl/agent-tools.js +0 -1
  1351. package/dist/translations/pl/charts.js +0 -1
  1352. package/dist/translations/pl/conversation.js +0 -1
  1353. package/dist/translations/pl/data.js +0 -1
  1354. package/dist/translations/pl/forms.js +0 -1
  1355. package/dist/translations/pl/layout.js +0 -1
  1356. package/dist/translations/pl/media.js +0 -1
  1357. package/dist/translations/pl/overlays.js +0 -1
  1358. package/dist/translations/pl/retrieval.js +0 -1
  1359. package/dist/translations/pl/shared.js +0 -1
  1360. package/dist/translations/pl/utility.js +0 -1
  1361. package/dist/translations/pl/viewers.js +0 -5
  1362. package/dist/translations/pl.js +0 -1
  1363. package/dist/translations/pnb/agent-tools.js +0 -1
  1364. package/dist/translations/pnb/charts.js +0 -1
  1365. package/dist/translations/pnb/conversation.js +0 -1
  1366. package/dist/translations/pnb/data.js +0 -1
  1367. package/dist/translations/pnb/forms.js +0 -1
  1368. package/dist/translations/pnb/layout.js +0 -1
  1369. package/dist/translations/pnb/media.js +0 -1
  1370. package/dist/translations/pnb/overlays.js +0 -1
  1371. package/dist/translations/pnb/retrieval.js +0 -1
  1372. package/dist/translations/pnb/shared.js +0 -1
  1373. package/dist/translations/pnb/utility.js +0 -1
  1374. package/dist/translations/pnb/viewers.js +0 -5
  1375. package/dist/translations/pnb.js +0 -1
  1376. package/dist/translations/ps/agent-tools.js +0 -1
  1377. package/dist/translations/ps/charts.js +0 -1
  1378. package/dist/translations/ps/conversation.js +0 -1
  1379. package/dist/translations/ps/data.js +0 -1
  1380. package/dist/translations/ps/forms.js +0 -1
  1381. package/dist/translations/ps/layout.js +0 -1
  1382. package/dist/translations/ps/media.js +0 -1
  1383. package/dist/translations/ps/overlays.js +0 -1
  1384. package/dist/translations/ps/retrieval.js +0 -1
  1385. package/dist/translations/ps/shared.js +0 -1
  1386. package/dist/translations/ps/utility.js +0 -1
  1387. package/dist/translations/ps/viewers.js +0 -5
  1388. package/dist/translations/ps.js +0 -1
  1389. package/dist/translations/pt-BR/agent-tools.js +0 -1
  1390. package/dist/translations/pt-BR/charts.js +0 -1
  1391. package/dist/translations/pt-BR/conversation.js +0 -1
  1392. package/dist/translations/pt-BR/data.js +0 -1
  1393. package/dist/translations/pt-BR/forms.js +0 -1
  1394. package/dist/translations/pt-BR/layout.js +0 -1
  1395. package/dist/translations/pt-BR/media.js +0 -1
  1396. package/dist/translations/pt-BR/overlays.js +0 -1
  1397. package/dist/translations/pt-BR/retrieval.js +0 -1
  1398. package/dist/translations/pt-BR/shared.js +0 -1
  1399. package/dist/translations/pt-BR/utility.js +0 -1
  1400. package/dist/translations/pt-BR/viewers.js +0 -5
  1401. package/dist/translations/pt-BR.js +0 -1
  1402. package/dist/translations/pt-PT/agent-tools.js +0 -1
  1403. package/dist/translations/pt-PT/charts.js +0 -1
  1404. package/dist/translations/pt-PT/conversation.js +0 -1
  1405. package/dist/translations/pt-PT/data.js +0 -1
  1406. package/dist/translations/pt-PT/forms.js +0 -1
  1407. package/dist/translations/pt-PT/layout.js +0 -1
  1408. package/dist/translations/pt-PT/media.js +0 -1
  1409. package/dist/translations/pt-PT/overlays.js +0 -1
  1410. package/dist/translations/pt-PT/retrieval.js +0 -1
  1411. package/dist/translations/pt-PT/shared.js +0 -1
  1412. package/dist/translations/pt-PT/utility.js +0 -1
  1413. package/dist/translations/pt-PT/viewers.js +0 -5
  1414. package/dist/translations/pt-PT.js +0 -1
  1415. package/dist/translations/ro/agent-tools.js +0 -1
  1416. package/dist/translations/ro/charts.js +0 -1
  1417. package/dist/translations/ro/conversation.js +0 -1
  1418. package/dist/translations/ro/data.js +0 -1
  1419. package/dist/translations/ro/forms.js +0 -1
  1420. package/dist/translations/ro/layout.js +0 -1
  1421. package/dist/translations/ro/media.js +0 -1
  1422. package/dist/translations/ro/overlays.js +0 -1
  1423. package/dist/translations/ro/retrieval.js +0 -1
  1424. package/dist/translations/ro/shared.js +0 -1
  1425. package/dist/translations/ro/utility.js +0 -1
  1426. package/dist/translations/ro/viewers.js +0 -5
  1427. package/dist/translations/ro.js +0 -1
  1428. package/dist/translations/ru/agent-tools.js +0 -1
  1429. package/dist/translations/ru/charts.js +0 -1
  1430. package/dist/translations/ru/conversation.js +0 -1
  1431. package/dist/translations/ru/data.js +0 -1
  1432. package/dist/translations/ru/forms.js +0 -1
  1433. package/dist/translations/ru/layout.js +0 -1
  1434. package/dist/translations/ru/media.js +0 -1
  1435. package/dist/translations/ru/overlays.js +0 -1
  1436. package/dist/translations/ru/retrieval.js +0 -1
  1437. package/dist/translations/ru/shared.js +0 -1
  1438. package/dist/translations/ru/utility.js +0 -1
  1439. package/dist/translations/ru/viewers.js +0 -5
  1440. package/dist/translations/ru.js +0 -1
  1441. package/dist/translations/sd/agent-tools.js +0 -1
  1442. package/dist/translations/sd/charts.js +0 -1
  1443. package/dist/translations/sd/conversation.js +0 -1
  1444. package/dist/translations/sd/data.js +0 -1
  1445. package/dist/translations/sd/forms.js +0 -1
  1446. package/dist/translations/sd/layout.js +0 -1
  1447. package/dist/translations/sd/media.js +0 -1
  1448. package/dist/translations/sd/overlays.js +0 -1
  1449. package/dist/translations/sd/retrieval.js +0 -1
  1450. package/dist/translations/sd/shared.js +0 -1
  1451. package/dist/translations/sd/utility.js +0 -1
  1452. package/dist/translations/sd/viewers.js +0 -5
  1453. package/dist/translations/sd.js +0 -1
  1454. package/dist/translations/sl/agent-tools.js +0 -1
  1455. package/dist/translations/sl/charts.js +0 -1
  1456. package/dist/translations/sl/conversation.js +0 -1
  1457. package/dist/translations/sl/data.js +0 -1
  1458. package/dist/translations/sl/forms.js +0 -1
  1459. package/dist/translations/sl/layout.js +0 -1
  1460. package/dist/translations/sl/media.js +0 -1
  1461. package/dist/translations/sl/overlays.js +0 -1
  1462. package/dist/translations/sl/retrieval.js +0 -1
  1463. package/dist/translations/sl/shared.js +0 -1
  1464. package/dist/translations/sl/utility.js +0 -1
  1465. package/dist/translations/sl/viewers.js +0 -5
  1466. package/dist/translations/sl.js +0 -1
  1467. package/dist/translations/su/agent-tools.js +0 -1
  1468. package/dist/translations/su/charts.js +0 -1
  1469. package/dist/translations/su/conversation.js +0 -1
  1470. package/dist/translations/su/data.js +0 -1
  1471. package/dist/translations/su/forms.js +0 -1
  1472. package/dist/translations/su/layout.js +0 -1
  1473. package/dist/translations/su/media.js +0 -1
  1474. package/dist/translations/su/overlays.js +0 -1
  1475. package/dist/translations/su/retrieval.js +0 -1
  1476. package/dist/translations/su/shared.js +0 -1
  1477. package/dist/translations/su/utility.js +0 -1
  1478. package/dist/translations/su/viewers.js +0 -5
  1479. package/dist/translations/su.js +0 -1
  1480. package/dist/translations/sv/agent-tools.js +0 -1
  1481. package/dist/translations/sv/charts.js +0 -1
  1482. package/dist/translations/sv/conversation.js +0 -1
  1483. package/dist/translations/sv/data.js +0 -1
  1484. package/dist/translations/sv/forms.js +0 -1
  1485. package/dist/translations/sv/layout.js +0 -1
  1486. package/dist/translations/sv/media.js +0 -1
  1487. package/dist/translations/sv/overlays.js +0 -1
  1488. package/dist/translations/sv/retrieval.js +0 -1
  1489. package/dist/translations/sv/shared.js +0 -1
  1490. package/dist/translations/sv/utility.js +0 -1
  1491. package/dist/translations/sv/viewers.js +0 -5
  1492. package/dist/translations/sv.js +0 -1
  1493. package/dist/translations/sw/agent-tools.js +0 -1
  1494. package/dist/translations/sw/charts.js +0 -1
  1495. package/dist/translations/sw/conversation.js +0 -1
  1496. package/dist/translations/sw/data.js +0 -1
  1497. package/dist/translations/sw/forms.js +0 -1
  1498. package/dist/translations/sw/layout.js +0 -1
  1499. package/dist/translations/sw/media.js +0 -1
  1500. package/dist/translations/sw/overlays.js +0 -1
  1501. package/dist/translations/sw/retrieval.js +0 -1
  1502. package/dist/translations/sw/shared.js +0 -1
  1503. package/dist/translations/sw/utility.js +0 -1
  1504. package/dist/translations/sw/viewers.js +0 -5
  1505. package/dist/translations/sw.js +0 -1
  1506. package/dist/translations/ta/agent-tools.js +0 -1
  1507. package/dist/translations/ta/charts.js +0 -1
  1508. package/dist/translations/ta/conversation.js +0 -1
  1509. package/dist/translations/ta/data.js +0 -1
  1510. package/dist/translations/ta/forms.js +0 -1
  1511. package/dist/translations/ta/layout.js +0 -1
  1512. package/dist/translations/ta/media.js +0 -1
  1513. package/dist/translations/ta/overlays.js +0 -1
  1514. package/dist/translations/ta/retrieval.js +0 -1
  1515. package/dist/translations/ta/shared.js +0 -1
  1516. package/dist/translations/ta/utility.js +0 -1
  1517. package/dist/translations/ta/viewers.js +0 -5
  1518. package/dist/translations/ta.js +0 -1
  1519. package/dist/translations/te/agent-tools.js +0 -1
  1520. package/dist/translations/te/charts.js +0 -1
  1521. package/dist/translations/te/conversation.js +0 -1
  1522. package/dist/translations/te/data.js +0 -1
  1523. package/dist/translations/te/forms.js +0 -1
  1524. package/dist/translations/te/layout.js +0 -1
  1525. package/dist/translations/te/media.js +0 -1
  1526. package/dist/translations/te/overlays.js +0 -1
  1527. package/dist/translations/te/retrieval.js +0 -1
  1528. package/dist/translations/te/shared.js +0 -1
  1529. package/dist/translations/te/utility.js +0 -1
  1530. package/dist/translations/te/viewers.js +0 -5
  1531. package/dist/translations/te.js +0 -1
  1532. package/dist/translations/th/agent-tools.js +0 -1
  1533. package/dist/translations/th/charts.js +0 -1
  1534. package/dist/translations/th/conversation.js +0 -1
  1535. package/dist/translations/th/data.js +0 -1
  1536. package/dist/translations/th/forms.js +0 -1
  1537. package/dist/translations/th/layout.js +0 -1
  1538. package/dist/translations/th/media.js +0 -1
  1539. package/dist/translations/th/overlays.js +0 -1
  1540. package/dist/translations/th/retrieval.js +0 -1
  1541. package/dist/translations/th/shared.js +0 -1
  1542. package/dist/translations/th/utility.js +0 -1
  1543. package/dist/translations/th/viewers.js +0 -5
  1544. package/dist/translations/th.js +0 -1
  1545. package/dist/translations/tl/agent-tools.js +0 -1
  1546. package/dist/translations/tl/charts.js +0 -1
  1547. package/dist/translations/tl/conversation.js +0 -1
  1548. package/dist/translations/tl/data.js +0 -1
  1549. package/dist/translations/tl/forms.js +0 -1
  1550. package/dist/translations/tl/layout.js +0 -1
  1551. package/dist/translations/tl/media.js +0 -1
  1552. package/dist/translations/tl/overlays.js +0 -1
  1553. package/dist/translations/tl/retrieval.js +0 -1
  1554. package/dist/translations/tl/shared.js +0 -1
  1555. package/dist/translations/tl/utility.js +0 -1
  1556. package/dist/translations/tl/viewers.js +0 -5
  1557. package/dist/translations/tl.js +0 -1
  1558. package/dist/translations/tr/agent-tools.js +0 -1
  1559. package/dist/translations/tr/charts.js +0 -1
  1560. package/dist/translations/tr/conversation.js +0 -1
  1561. package/dist/translations/tr/data.js +0 -1
  1562. package/dist/translations/tr/forms.js +0 -1
  1563. package/dist/translations/tr/layout.js +0 -1
  1564. package/dist/translations/tr/media.js +0 -1
  1565. package/dist/translations/tr/overlays.js +0 -1
  1566. package/dist/translations/tr/retrieval.js +0 -1
  1567. package/dist/translations/tr/shared.js +0 -1
  1568. package/dist/translations/tr/utility.js +0 -1
  1569. package/dist/translations/tr/viewers.js +0 -5
  1570. package/dist/translations/tr.js +0 -1
  1571. package/dist/translations/uk/agent-tools.js +0 -1
  1572. package/dist/translations/uk/charts.js +0 -1
  1573. package/dist/translations/uk/conversation.js +0 -1
  1574. package/dist/translations/uk/data.js +0 -1
  1575. package/dist/translations/uk/forms.js +0 -1
  1576. package/dist/translations/uk/layout.js +0 -1
  1577. package/dist/translations/uk/media.js +0 -1
  1578. package/dist/translations/uk/overlays.js +0 -1
  1579. package/dist/translations/uk/retrieval.js +0 -1
  1580. package/dist/translations/uk/shared.js +0 -1
  1581. package/dist/translations/uk/utility.js +0 -1
  1582. package/dist/translations/uk/viewers.js +0 -5
  1583. package/dist/translations/uk.js +0 -1
  1584. package/dist/translations/ur/agent-tools.js +0 -1
  1585. package/dist/translations/ur/charts.js +0 -1
  1586. package/dist/translations/ur/conversation.js +0 -1
  1587. package/dist/translations/ur/data.js +0 -1
  1588. package/dist/translations/ur/forms.js +0 -1
  1589. package/dist/translations/ur/layout.js +0 -1
  1590. package/dist/translations/ur/media.js +0 -1
  1591. package/dist/translations/ur/overlays.js +0 -1
  1592. package/dist/translations/ur/retrieval.js +0 -1
  1593. package/dist/translations/ur/shared.js +0 -1
  1594. package/dist/translations/ur/utility.js +0 -1
  1595. package/dist/translations/ur/viewers.js +0 -5
  1596. package/dist/translations/ur.js +0 -1
  1597. package/dist/translations/uz/agent-tools.js +0 -1
  1598. package/dist/translations/uz/charts.js +0 -1
  1599. package/dist/translations/uz/conversation.js +0 -1
  1600. package/dist/translations/uz/data.js +0 -1
  1601. package/dist/translations/uz/forms.js +0 -1
  1602. package/dist/translations/uz/layout.js +0 -1
  1603. package/dist/translations/uz/media.js +0 -1
  1604. package/dist/translations/uz/overlays.js +0 -1
  1605. package/dist/translations/uz/retrieval.js +0 -1
  1606. package/dist/translations/uz/shared.js +0 -1
  1607. package/dist/translations/uz/utility.js +0 -1
  1608. package/dist/translations/uz/viewers.js +0 -5
  1609. package/dist/translations/uz.js +0 -1
  1610. package/dist/translations/vi/agent-tools.js +0 -1
  1611. package/dist/translations/vi/charts.js +0 -1
  1612. package/dist/translations/vi/conversation.js +0 -1
  1613. package/dist/translations/vi/data.js +0 -1
  1614. package/dist/translations/vi/forms.js +0 -1
  1615. package/dist/translations/vi/layout.js +0 -1
  1616. package/dist/translations/vi/media.js +0 -1
  1617. package/dist/translations/vi/overlays.js +0 -1
  1618. package/dist/translations/vi/retrieval.js +0 -1
  1619. package/dist/translations/vi/shared.js +0 -1
  1620. package/dist/translations/vi/utility.js +0 -1
  1621. package/dist/translations/vi/viewers.js +0 -5
  1622. package/dist/translations/vi.js +0 -1
  1623. package/dist/translations/yo/agent-tools.js +0 -1
  1624. package/dist/translations/yo/charts.js +0 -1
  1625. package/dist/translations/yo/conversation.js +0 -1
  1626. package/dist/translations/yo/data.js +0 -1
  1627. package/dist/translations/yo/forms.js +0 -1
  1628. package/dist/translations/yo/layout.js +0 -1
  1629. package/dist/translations/yo/media.js +0 -1
  1630. package/dist/translations/yo/overlays.js +0 -1
  1631. package/dist/translations/yo/retrieval.js +0 -1
  1632. package/dist/translations/yo/shared.js +0 -1
  1633. package/dist/translations/yo/utility.js +0 -1
  1634. package/dist/translations/yo/viewers.js +0 -5
  1635. package/dist/translations/yo.js +0 -1
  1636. package/dist/translations/zh-CN/agent-tools.js +0 -1
  1637. package/dist/translations/zh-CN/charts.js +0 -1
  1638. package/dist/translations/zh-CN/conversation.js +0 -1
  1639. package/dist/translations/zh-CN/data.js +0 -1
  1640. package/dist/translations/zh-CN/forms.js +0 -1
  1641. package/dist/translations/zh-CN/layout.js +0 -1
  1642. package/dist/translations/zh-CN/media.js +0 -1
  1643. package/dist/translations/zh-CN/overlays.js +0 -1
  1644. package/dist/translations/zh-CN/retrieval.js +0 -1
  1645. package/dist/translations/zh-CN/shared.js +0 -1
  1646. package/dist/translations/zh-CN/utility.js +0 -1
  1647. package/dist/translations/zh-CN/viewers.js +0 -5
  1648. package/dist/translations/zh-CN.js +0 -1
  1649. package/dist/translations/zh-TW/agent-tools.js +0 -1
  1650. package/dist/translations/zh-TW/charts.js +0 -1
  1651. package/dist/translations/zh-TW/conversation.js +0 -1
  1652. package/dist/translations/zh-TW/data.js +0 -1
  1653. package/dist/translations/zh-TW/forms.js +0 -1
  1654. package/dist/translations/zh-TW/layout.js +0 -1
  1655. package/dist/translations/zh-TW/media.js +0 -1
  1656. package/dist/translations/zh-TW/overlays.js +0 -1
  1657. package/dist/translations/zh-TW/retrieval.js +0 -1
  1658. package/dist/translations/zh-TW/shared.js +0 -1
  1659. package/dist/translations/zh-TW/utility.js +0 -1
  1660. package/dist/translations/zh-TW/viewers.js +0 -5
  1661. package/dist/translations/zh-TW.js +0 -1
  1662. package/dist/translations/zu/agent-tools.js +0 -1
  1663. package/dist/translations/zu/charts.js +0 -1
  1664. package/dist/translations/zu/conversation.js +0 -1
  1665. package/dist/translations/zu/data.js +0 -1
  1666. package/dist/translations/zu/forms.js +0 -1
  1667. package/dist/translations/zu/layout.js +0 -1
  1668. package/dist/translations/zu/media.js +0 -1
  1669. package/dist/translations/zu/overlays.js +0 -1
  1670. package/dist/translations/zu/retrieval.js +0 -1
  1671. package/dist/translations/zu/shared.js +0 -1
  1672. package/dist/translations/zu/utility.js +0 -1
  1673. package/dist/translations/zu/viewers.js +0 -5
  1674. package/dist/translations/zu.js +0 -1
  1675. package/vscode-css-data.json +0 -1
  1676. package/vscode-html-data.json +0 -1
  1677. 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{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_qrCodeGenerationFailed,LYRA_DEFAULT_qrCodeMissingLibrary}from"../../../internal/default-strings/media.generated.js";import{LYRA_DEFAULT_collapse,LYRA_DEFAULT_details,LYRA_DEFAULT_loading,LYRA_DEFAULT_map,LYRA_DEFAULT_noData,LYRA_DEFAULT_open}from"../../../internal/default-strings/shared.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.clearEmbeddedImage(),this.clearVisibilityObserver(),this.visible=!1,this.visibilityKnown=!1,this.pendingLoadingAnnouncement=!1,super.disconnectedCallback()}adoptedCallback(){super.adoptedCallback(),this.generation++,this.clearEmbeddedImage(),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),(!this.value||changed.has("image")&&this.embeddedImage?.src!==safeMediaSrc(this.image))&&this.clearEmbeddedImage(),(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.clearEmbeddedImage(),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"))}}clearEmbeddedImage(){const operation=this.embeddedImage;this.embeddedImage=void 0,operation?.cancel(),this.loadState.kind==="ready"&&this.loadState.image&&this.transitionTo({kind:"ready",modules:this.loadState.modules})}loadEmbeddedImage(src){const owner=this.ownerDocument;if(this.embeddedImage?.src===src&&this.embeddedImage.owner===owner)return this.embeddedImage.promise;this.clearEmbeddedImage();const ImageCtor=owner.defaultView?.Image;if(!ImageCtor)return Promise.resolve(void 0);const image=new ImageCtor;image.decoding="async";let settle;const promise=new Promise(resolve=>{settle=resolve});let pending=!0;const cleanup=()=>{image.removeEventListener("load",onLoad),image.removeEventListener("error",onError)},finish=loaded=>{if(!pending)return;pending=!1,cleanup();const valid=loaded&&image.naturalWidth>0&&image.naturalHeight>0;!valid&&this.embeddedImage===operation&&(this.embeddedImage=void 0),settle(valid?image:void 0)},onLoad=()=>finish(!0),onError=()=>finish(!1),operation={src,owner,promise,cancel:()=>{pending&&(finish(!1),image.removeAttribute("src"))}};this.embeddedImage=operation,image.addEventListener("load",onLoad),image.addEventListener("error",onError);try{image.src=src}catch{finish(!1)}return promise}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,4 +1,4 @@
1
- import{__decorate}from"tslib";import{html}from"lit";import{property,query}from"lit/decorators.js";import{getNumberFormat}from"../../../internal/intl-cache.js";import{LyraElement}from"../../../internal/lyra-element.js";import{playIcon,pauseIcon}from"../../../internal/icons.js";import{devWarnOnce}from"../../../internal/dev-mode-attribute-warning.js";import{finiteCount,finiteDuration}from"../../../internal/numbers.js";import{relayNativeEvent}from"../../../internal/native-event-relay.js";import{styles}from"./sequence-playback.styles.js";import{LYRA_DEFAULT_pause,LYRA_DEFAULT_play,LYRA_DEFAULT_playbackPosition,LYRA_DEFAULT_playbackStepPosition}from"../../../internal/default-strings.generated.js";const MIN_INTERVAL_MS=16,INVALID_INTERVAL_WARNING_KEY="lyra-sequence-playback-invalid-interval",INVALID_INTERVAL_WARNING="<lr-sequence-playback>: interval-ms is outside the supported timer range and the timer delay was clamped.";function warnInvalidInterval(){devWarnOnce(INVALID_INTERVAL_WARNING_KEY,INVALID_INTERVAL_WARNING)}class LyraSequencePlayback extends LyraElement{constructor(){super(...arguments),this.itemCount=0,this.currentIndex=0,this.intervalMs=900,this.withoutLoop=!1,this.hidden=!1,this._playing=!1,this.onControlFocus=event=>{relayNativeEvent(this,event)},this.onControlBlur=event=>{relayNativeEvent(this,event)},this.onSliderKeyDown=event=>{const delta=this.keyboardStepDelta(event.key);delta!==void 0&&(event.preventDefault(),this.goTo(finiteCount(this.currentIndex,0,this.maxIndex)+delta))}}static{this.defaultStrings={...super.defaultStrings,pause:LYRA_DEFAULT_pause,play:LYRA_DEFAULT_play,playbackPosition:LYRA_DEFAULT_playbackPosition,playbackStepPosition:LYRA_DEFAULT_playbackStepPosition}}static{this.styles=[LyraElement.styles,styles]}static{this.knownUnobservedAttributes=["playing"]}get playing(){return this._playing}setPlaying(next){next===this._playing||next&&finiteCount(this.itemCount)<=1||(this._playing=next,this.toggleAttribute("playing",next),this.requestUpdate(),next?(this.emit("lr-play"),this._playing&&this.scheduleTick()):(this.clearTimer(),this.emit("lr-pause")))}get maxIndex(){return Math.max(0,finiteCount(this.itemCount)-1)}disconnectedCallback(){this.pause(),this.clearTimer(),super.disconnectedCallback()}willUpdate(changed){super.willUpdate(changed),changed.has("hidden")&&this.hidden&&this.pause();const itemCount=finiteCount(this.itemCount),currentIndex=finiteCount(this.currentIndex);itemCount!==this.itemCount&&(this.itemCount=itemCount),currentIndex!==this.currentIndex&&(this.currentIndex=currentIndex),changed.has("currentIndex")&&!changed.has("itemCount")&&currentIndex>this.maxIndex&&(this.currentIndex=this.maxIndex),changed.has("itemCount")&&(this.itemCount<=1&&this.pause(),this.currentIndex>this.maxIndex&&this.setIndex(this.maxIndex))}play(){this.setPlaying(!0)}pause(){this.setPlaying(!1)}toggle(){this.setPlaying(!this._playing)}scheduleTick(){const rawDelay=this.intervalMs,delay=finiteDuration(rawDelay,MIN_INTERVAL_MS,MIN_INTERVAL_MS);delay!==rawDelay&&warnInvalidInterval();const timerWindow=this.ownerDocument.defaultView;if(!timerWindow)return;const id=timerWindow.setTimeout(()=>{this.timer!==id||this.timerWindow!==timerWindow||(this.tick(),this.playing&&this.timer===id&&this.timerWindow===timerWindow&&this.scheduleTick())},delay);this.timer=id,this.timerWindow=timerWindow}clearTimer(){this.timer!==void 0&&this.timerWindow?.clearTimeout(this.timer),this.timer=void 0,this.timerWindow=void 0}tick(){const itemCount=finiteCount(this.itemCount),next=finiteCount(this.currentIndex)+1;next>=itemCount?this.withoutLoop?(this.setIndex(itemCount-1),this.pause()):this.setIndex(0):this.setIndex(next)}setIndex(i){this.currentIndex=finiteCount(i,0,this.maxIndex),this.emit("lr-sequence-step",{currentIndex:this.currentIndex})}next(){const currentIndex=finiteCount(this.currentIndex);currentIndex+1<finiteCount(this.itemCount)&&this.setIndex(currentIndex+1)}previous(){const currentIndex=finiteCount(this.currentIndex);currentIndex>0&&this.setIndex(currentIndex-1)}goTo(currentIndex){this.pause(),this.setIndex(finiteCount(currentIndex,0,this.maxIndex))}focus(options){this.playButton?.focus(options)}blur(){this.playButton?.blur()}click(){this.playButton?.click()}keyboardStepDelta(key){const rtl=this.effectiveDirection==="rtl";if(key==="ArrowLeft")return rtl?1:-1;if(key==="ArrowRight")return rtl?-1:1}render(){const maxIndex=this.maxIndex,currentIndex=finiteCount(this.currentIndex,0,maxIndex),disabled=finiteCount(this.itemCount)<=1;return html`
1
+ import{__decorate}from"tslib";import{html}from"lit";import{property,query}from"lit/decorators.js";import{getNumberFormat}from"../../../internal/intl-cache.js";import{LyraElement}from"../../../internal/lyra-element.js";import{playIcon,pauseIcon}from"../../../internal/icons.js";import{devWarnOnce}from"../../../internal/dev-mode-attribute-warning.js";import{finiteCount,finiteDuration}from"../../../internal/numbers.js";import{relayNativeEvent}from"../../../internal/native-event-relay.js";import{styles}from"./sequence-playback.styles.js";import{LYRA_DEFAULT_pause,LYRA_DEFAULT_play,LYRA_DEFAULT_playbackPosition,LYRA_DEFAULT_playbackStepPosition}from"../../../internal/default-strings/media.generated.js";const MIN_INTERVAL_MS=16,INVALID_INTERVAL_WARNING_KEY="lyra-sequence-playback-invalid-interval",INVALID_INTERVAL_WARNING="<lr-sequence-playback>: interval-ms is outside the supported timer range and the timer delay was clamped.";function warnInvalidInterval(){devWarnOnce(INVALID_INTERVAL_WARNING_KEY,INVALID_INTERVAL_WARNING)}class LyraSequencePlayback extends LyraElement{constructor(){super(...arguments),this.itemCount=0,this.currentIndex=0,this.intervalMs=900,this.withoutLoop=!1,this.hidden=!1,this._playing=!1,this.onControlFocus=event=>{relayNativeEvent(this,event)},this.onControlBlur=event=>{relayNativeEvent(this,event)},this.onSliderKeyDown=event=>{const delta=this.keyboardStepDelta(event.key);delta!==void 0&&(event.preventDefault(),this.goTo(finiteCount(this.currentIndex,0,this.maxIndex)+delta))}}static{this.defaultStrings={...super.defaultStrings,pause:LYRA_DEFAULT_pause,play:LYRA_DEFAULT_play,playbackPosition:LYRA_DEFAULT_playbackPosition,playbackStepPosition:LYRA_DEFAULT_playbackStepPosition}}static{this.styles=[LyraElement.styles,styles]}static{this.knownUnobservedAttributes=["playing"]}get playing(){return this._playing}setPlaying(next){next===this._playing||next&&finiteCount(this.itemCount)<=1||(this._playing=next,this.toggleAttribute("playing",next),this.requestUpdate(),next?(this.emit("lr-play"),this._playing&&this.scheduleTick()):(this.clearTimer(),this.emit("lr-pause")))}get maxIndex(){return Math.max(0,finiteCount(this.itemCount)-1)}disconnectedCallback(){this.pause(),this.clearTimer(),super.disconnectedCallback()}willUpdate(changed){super.willUpdate(changed),changed.has("hidden")&&this.hidden&&this.pause();const itemCount=finiteCount(this.itemCount),currentIndex=finiteCount(this.currentIndex);itemCount!==this.itemCount&&(this.itemCount=itemCount),currentIndex!==this.currentIndex&&(this.currentIndex=currentIndex),changed.has("currentIndex")&&!changed.has("itemCount")&&currentIndex>this.maxIndex&&(this.currentIndex=this.maxIndex),changed.has("itemCount")&&(this.itemCount<=1&&this.pause(),this.currentIndex>this.maxIndex&&this.setIndex(this.maxIndex))}play(){this.setPlaying(!0)}pause(){this.setPlaying(!1)}toggle(){this.setPlaying(!this._playing)}scheduleTick(){const rawDelay=this.intervalMs,delay=finiteDuration(rawDelay,MIN_INTERVAL_MS,MIN_INTERVAL_MS);delay!==rawDelay&&warnInvalidInterval();const timerWindow=this.ownerDocument.defaultView;if(!timerWindow)return;const id=timerWindow.setTimeout(()=>{this.timer!==id||this.timerWindow!==timerWindow||(this.tick(),this.playing&&this.timer===id&&this.timerWindow===timerWindow&&this.scheduleTick())},delay);this.timer=id,this.timerWindow=timerWindow}clearTimer(){this.timer!==void 0&&this.timerWindow?.clearTimeout(this.timer),this.timer=void 0,this.timerWindow=void 0}tick(){const itemCount=finiteCount(this.itemCount),next=finiteCount(this.currentIndex)+1;next>=itemCount?this.withoutLoop?(this.setIndex(itemCount-1),this.pause()):this.setIndex(0):this.setIndex(next)}setIndex(i){this.currentIndex=finiteCount(i,0,this.maxIndex),this.emit("lr-sequence-step",{currentIndex:this.currentIndex})}next(){const currentIndex=finiteCount(this.currentIndex);currentIndex+1<finiteCount(this.itemCount)&&this.setIndex(currentIndex+1)}previous(){const currentIndex=finiteCount(this.currentIndex);currentIndex>0&&this.setIndex(currentIndex-1)}goTo(currentIndex){this.pause(),this.setIndex(finiteCount(currentIndex,0,this.maxIndex))}focus(options){this.playButton?.focus(options)}blur(){this.playButton?.blur()}click(){this.playButton?.click()}keyboardStepDelta(key){const rtl=this.effectiveDirection==="rtl";if(key==="ArrowLeft")return rtl?1:-1;if(key==="ArrowRight")return rtl?-1:1}render(){const maxIndex=this.maxIndex,currentIndex=finiteCount(this.currentIndex,0,maxIndex),disabled=finiteCount(this.itemCount)<=1;return html`
2
2
  <div part="base">
3
3
  <button
4
4
  part="play-button"
@@ -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,LYRA_DEFAULT_videoPlaybackSpeed,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
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/media.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("videoPlaybackSpeed")}
123
+ aria-label=${this.localize("avPlayerPlaybackRate")}
124
124
  @change=${this.onRateChange}
125
125
  >
126
126
  ${this.renderRateOptions()}
@@ -1,4 +1,4 @@
1
- import{__decorate}from"tslib";import{eventCollectionSupport}from"../../../internal/collection-snapshot.js";import{html,nothing}from"lit";import{property,state}from"lit/decorators.js";import{getNumberFormat}from"../../../internal/intl-cache.js";import{formatMediaTime}from"../../../internal/media-time.js";import{LyraElement}from"../../../internal/lyra-element.js";import{hostAriaLabel}from"../../../internal/a11y.js";import{activeElementIn}from"../../../internal/active-element.js";import{finiteRange}from"../../../internal/numbers.js";import{relayNativeEvent}from"../../../internal/native-event-relay.js";import{tag}from"../../../internal/prefix.js";import{safeMediaSrc}from"../../../internal/safe-url.js";import{styles}from"./video-playlist.styles.js";import{LYRA_DEFAULT_videoPlaylistLabel,LYRA_DEFAULT_videoPlaylistUntitled}from"../../../internal/default-strings.generated.js";function safeControls(value){return value==="none"||value==="standard"?value:"full"}function safeRepeat(value){return value==="one"||value==="all"?value:"none"}function sameVideos(left,right){return left.length===right.length&&left.every((video,index)=>video===right[index])}function sourceSnapshot(src,type,media){return{src,type,media}}function trackSnapshot(src,kind,srclang,label,isDefault){return{src,kind,srclang,label,default:isDefault}}class LyraVideoPlaylist extends LyraElement{constructor(){super(...arguments),this.controls="full",this.iconLibrary="system",this.withoutAutoAdvance=!1,this.repeat="none",this.items=[],this.playlistVideos=[],this.liveChildrenReady=!1,this.activeIndex=-1,this.navigationIndex=-1,this.listeners=new Map,this.lastKnownPlaying=new WeakMap,this.nativeVideos=new WeakMap,this.needsReload=new WeakSet,this.ownedVideoState=new WeakMap,this.preferences={},this.activationGeneration=0,this.reconcileGeneration=0,this.onSlotChange=()=>this.reconcileChildren(),this.onItemFocus=event=>{relayNativeEvent(this,event)},this.onItemBlur=event=>{relayNativeEvent(this,event)}}static{this.defaultStrings={...super.defaultStrings,videoPlaylistLabel:LYRA_DEFAULT_videoPlaylistLabel,videoPlaylistUntitled:LYRA_DEFAULT_videoPlaylistUntitled}}static{this.collectionSupport=eventCollectionSupport}static{this.immutableEventDetails=Object.freeze(["lr-video-change"])}static{this.styles=[LyraElement.styles,styles]}connectedCallback(){super.connectedCallback(),this.observeChildren(),this.hasUpdated?this.scheduleAfterUpdate(()=>this.reconcileChildren(),"video-playlist-reconcile"):this.seedFirstRenderState(()=>{this.directVideos().length>0&&this.reconcileChildren()})}disconnectedCallback(){this.activationGeneration+=1,this.reconcileGeneration+=1,this.pendingPlay=void 0,this.mutationObserver?.disconnect(),this.mutationObserver=void 0;for(const video of this.playlistVideos)this.unbindVideo(video),video.hidden=!0,this.pauseAndUnload(video);super.disconnectedCallback()}willUpdate(changed){super.willUpdate(changed),changed.has("controls")&&(this.controls=safeControls(this.controls)),changed.has("repeat")&&(this.repeat=safeRepeat(this.repeat)),(changed.has("controls")||changed.has("iconLibrary"))&&this.scheduleAfterUpdate(()=>this.reconcileChildren(),"video-playlist-reconcile")}observeChildren(){this.mutationObserver?.disconnect(),this.mutationObserver=void 0;const MutationObserverCtor=this.ownerDocument.defaultView?.MutationObserver;MutationObserverCtor&&(this.mutationObserver=new MutationObserverCtor(()=>{this.scheduleAfterUpdate(()=>{this.reconcileChildren(),this.requestUpdate()},"video-playlist-reconcile")}),this.mutationObserver.observe(this,{childList:!0,subtree:!0,attributes:!0,attributeFilter:["default","inert","kind","label","media","poster","src","srclang","title","type"]}))}directVideos(){const videoTag=tag("video");return[...this.children].filter(child=>child.localName===videoTag)}isEnabled(video){return!video.inert}nearestEnabledIndex(videos,preferred){if(!videos.length)return-1;const start=Math.min(Math.max(preferred,0),videos.length-1);for(let index=start;index<videos.length;index+=1)if(this.isEnabled(videos[index]))return index;for(let index=start-1;index>=0;index-=1)if(this.isEnabled(videos[index]))return index;return-1}reconcileChildren(){if(!this.isConnected)return;const previousVideos=this.playlistVideos,previousActive=this.activeVideo,previousIndex=this.activeIndex,previousNavigation=previousVideos[this.navigationIndex],navigationHadFocus=activeElementIn(this.shadowRoot)?.getAttribute("part")==="playlist-item",videos=this.directVideos();(videos.length>0||this.liveChildrenReady)&&(this.liveChildrenReady=!0);let active=previousActive&&videos.includes(previousActive)&&this.isEnabled(previousActive)?previousActive:void 0,nextIndex=active?videos.indexOf(active):this.nearestEnabledIndex(videos,previousIndex);!active&&nextIndex>=0&&(active=videos[nextIndex]),active||(nextIndex=-1);const activeChanged=active!==previousActive,outgoingWasRemoved=!!(previousActive&&!videos.includes(previousActive)),resumePlayback=activeChanged&&previousActive?outgoingWasRemoved?this.lastKnownPlaying.get(previousActive)??previousActive.getState().playing:previousActive.getState().playing:!1,outgoingPreferences=activeChanged&&previousActive?outgoingWasRemoved?this.capturePreferences(previousActive,this.nativeVideos.get(previousActive)):this.capturePreferences(previousActive):void 0;for(const video of previousVideos)videos.includes(video)||this.releaseVideo(video);for(const video of videos)this.claimVideo(video),this.bindVideo(video);activeChanged&&previousActive?(this.preferences=outgoingPreferences??{},outgoingWasRemoved||this.pauseAndUnload(previousActive),this.activationGeneration+=1):activeChanged&&(this.activationGeneration+=1),this.activeVideo=active,this.activeIndex=nextIndex,sameVideos(previousVideos,videos)||(this.playlistVideos=videos);for(const video of videos){video.controls!==this.controls&&(video.controls=this.controls),video.iconLibrary!==this.iconLibrary&&(video.iconLibrary=this.iconLibrary);const isActive=video===active;video.hidden=!isActive,isActive||this.pauseAndUnload(video)}active?(activeChanged||this.needsReload.has(active))&&this.activateVideo(active,resumePlayback,this.activationGeneration):this.pendingPlay=void 0;const keptNavigation=previousNavigation&&videos.includes(previousNavigation)&&this.isEnabled(previousNavigation)?videos.indexOf(previousNavigation):-1;this.navigationIndex=keptNavigation>=0?keptNavigation:nextIndex,navigationHadFocus&&keptNavigation<0&&this.navigationIndex>=0&&this.focusItem(this.navigationIndex),activeChanged&&previousActive&&this.emitChange(previousIndex,nextIndex,active??null),this.scheduleChildrenReady(videos)}scheduleChildrenReady(videos){const reconcileGeneration=++this.reconcileGeneration;Promise.all(videos.map(video=>video.updateComplete)).then(()=>{if(!this.isConnected||reconcileGeneration!==this.reconcileGeneration)return;for(const video of this.playlistVideos)this.rememberNativeVideo(video);for(const video of this.playlistVideos)video!==this.activeVideo&&this.pauseAndUnload(video);const active=this.activeVideo;if(!active||!this.needsReload.has(active))return;const shouldPlay=this.pendingPlay?.video===active&&this.pendingPlay.generation===this.activationGeneration;this.activateVideo(active,shouldPlay,this.activationGeneration)})}bindVideo(video){if(this.listeners.has(video))return;const listeners={ended:()=>{this.rememberNativeVideo(video),this.lastKnownPlaying.set(video,!1),this.handleCompletion(video)},error:()=>{this.rememberNativeVideo(video),this.lastKnownPlaying.set(video,!1)},loadedmetadata:()=>{this.rememberNativeVideo(video),this.handleLoadedMetadata(video)},pause:()=>{this.rememberNativeVideo(video),this.lastKnownPlaying.set(video,!1)},play:()=>{this.rememberNativeVideo(video),this.lastKnownPlaying.set(video,!0),video!==this.activeVideo&&this.pauseAndUnload(video)}};this.lastKnownPlaying.set(video,video.getState().playing),this.rememberNativeVideo(video),this.listeners.set(video,listeners),video.addEventListener("ended",listeners.ended),video.addEventListener("error",listeners.error),video.addEventListener("loadedmetadata",listeners.loadedmetadata),video.addEventListener("pause",listeners.pause),video.addEventListener("play",listeners.play)}unbindVideo(video){const listeners=this.listeners.get(video);listeners&&(video.removeEventListener("ended",listeners.ended),video.removeEventListener("error",listeners.error),video.removeEventListener("loadedmetadata",listeners.loadedmetadata),video.removeEventListener("pause",listeners.pause),video.removeEventListener("play",listeners.play),this.listeners.delete(video))}claimVideo(video){this.ownedVideoState.has(video)||this.ownedVideoState.set(video,{controls:video.controls,iconLibrary:video.iconLibrary,hidden:!!video.hidden})}releaseVideo(video){const authored=this.ownedVideoState.get(video);this.unbindVideo(video),this.pauseAndUnload(video),authored&&(video.controls=authored.controls,video.iconLibrary=authored.iconLibrary,video.hidden=authored.hidden,this.ownedVideoState.delete(video),video.isConnected&&video.load())}rememberNativeVideo(video){const native=video.getVideoElement();native&&this.nativeVideos.set(video,native)}pauseAndUnload(video){video.pause(),video.hidden=!0,this.needsReload.add(video),video.unloadMedia()}activateVideo(video,shouldPlay,generation){if(video.hidden=!1,!video.getVideoElement()){this.needsReload.add(video),shouldPlay&&(this.pendingPlay={video,generation});return}if(this.rememberNativeVideo(video),video.load(),this.needsReload.delete(video),this.applyPreferences(video,this.preferences),!shouldPlay){this.pendingPlay?.video===video&&(this.pendingPlay=void 0);return}this.pendingPlay=void 0,video.play().catch(()=>{generation!==this.activationGeneration||this.activeVideo})}capturePreferences(video,native=video.getVideoElement()){return video.captureMediaPreferences(native)}applyPreferences(video,preferences){video.applyMediaPreferences(preferences)}handleLoadedMetadata(video){video===this.activeVideo&&(this.applyPreferences(video,this.preferences),this.requestUpdate())}handleCompletion(video){if(video!==this.activeVideo||this.withoutAutoAdvance)return;if(this.repeat==="one"){video.seek(0);const generation=this.activationGeneration;video.play().catch(()=>{generation!==this.activationGeneration||this.activeVideo});return}const nextIndex=this.nearestEnabledIndex(this.playlistVideos,this.activeIndex+1);if(nextIndex>this.activeIndex){this.switchTo(nextIndex,!0);return}if(this.repeat==="all"){const first=this.nearestEnabledIndex(this.playlistVideos,0);if(first>=0&&first!==this.activeIndex)this.switchTo(first,!0);else if(first===this.activeIndex){video.seek(0);const generation=this.activationGeneration;video.play().catch(()=>{generation!==this.activationGeneration||this.activeVideo})}}}snapshotVideo(video){const sources=[],directSrc=video.src.trim();directSrc&&sources.push(sourceSnapshot(directSrc,"",""));const tracks=[];for(const child of video.children)if(child.localName==="source"){const src=child.getAttribute("src")?.trim()??"";src&&sources.push(sourceSnapshot(src,child.getAttribute("type")??"",child.getAttribute("media")??""))}else if(child.localName==="track"){const src=child.getAttribute("src")?.trim()??"";src&&tracks.push(trackSnapshot(src,child.getAttribute("kind")??"",child.getAttribute("srclang")??"",child.getAttribute("label")??"",child.hasAttribute("default")))}return{title:video.title,poster:video.poster,sources,tracks}}emitChange(previousIndex,currentIndex,video){this.emit("lr-video-change",{previousIndex,currentIndex,video:video?this.snapshotVideo(video):null})}switchTo(index,forcePlay=!1){const incoming=this.playlistVideos[index];if(!incoming||!this.isEnabled(incoming))return;const previousIndex=this.activeIndex,outgoing=this.activeVideo;if(incoming===outgoing){if(this.navigationIndex=index,this.requestUpdate(),forcePlay){const generation=this.activationGeneration;incoming.play().catch(()=>{generation!==this.activationGeneration||this.activeVideo})}this.emitChange(previousIndex,index,incoming);return}const wasPlaying=forcePlay||!!outgoing?.getState().playing;outgoing&&(this.preferences=this.capturePreferences(outgoing),this.pauseAndUnload(outgoing)),this.activationGeneration+=1,this.activeVideo=incoming,this.activeIndex=index,this.navigationIndex=index;for(const video of this.playlistVideos){const isActive=video===incoming;video.hidden=!isActive,!isActive&&video!==outgoing&&this.pauseAndUnload(video)}this.activateVideo(incoming,wasPlaying,this.activationGeneration),this.requestUpdate(),this.emitChange(previousIndex,index,incoming)}goTo(index){!Number.isFinite(index)||!Number.isInteger(index)||index<0||index>=this.playlistVideos.length||this.switchTo(index)}next(){const index=this.nearestEnabledIndex(this.playlistVideos,this.activeIndex+1);index>this.activeIndex&&this.switchTo(index)}previous(){for(let index=this.activeIndex-1;index>=0;index-=1)if(this.isEnabled(this.playlistVideos[index])){this.switchTo(index);return}}onItemClick(event){const button=event.currentTarget,index=Number(button.dataset.index);Number.isInteger(index)&&(this.navigationIndex=index,this.goTo(index))}enabledIndices(){const result=[];for(let index=0;index<this.playlistVideos.length;index+=1)this.isEnabled(this.playlistVideos[index])&&result.push(index);return result}moveNavigation(from,direction){const enabled=this.enabledIndices(),position=enabled.indexOf(from);if(position<0)return;const next=enabled[position+direction];next!==void 0&&this.focusItem(next)}get navigationItem(){const rows=[...this.renderRoot.querySelectorAll('[part~="playlist-item"]')];return rows.find(row=>!row.disabled&&row.getAttribute("aria-current")==="true")??rows.find(row=>!row.disabled)??null}focus(options){this.navigationItem?.focus(options)}blur(){this.navigationItem?.blur()}click(){this.navigationItem?.click()}focusItem(index){this.isEnabled(this.playlistVideos[index])&&(this.navigationIndex=index,this.requestUpdate(),this.updateComplete.then(()=>{this.navigationIndex===index&&this.shadowRoot?.querySelector(`[data-index="${index}"]`)?.focus()}))}onItemKeyDown(event){const button=event.currentTarget,index=Number(button.dataset.index);if(!Number.isInteger(index)||button.disabled)return;const forward=this.effectiveDirection==="rtl"?"ArrowLeft":"ArrowRight",backward=this.effectiveDirection==="rtl"?"ArrowRight":"ArrowLeft";if(event.key==="Enter"||event.key===" ")event.preventDefault(),this.navigationIndex=index,this.goTo(index);else if(event.key==="ArrowDown"||event.key===forward)event.preventDefault(),this.moveNavigation(index,1);else if(event.key==="ArrowUp"||event.key===backward)event.preventDefault(),this.moveNavigation(index,-1);else if(event.key==="Home"){event.preventDefault();const first=this.enabledIndices()[0];first!==void 0&&this.focusItem(first)}else if(event.key==="End"){event.preventDefault();const enabled=this.enabledIndices(),last=enabled[enabled.length-1];last!==void 0&&this.focusItem(last)}}itemTitle(value,index){const title=typeof value=="string"?value.trim():"";if(title)return title;const position=getNumberFormat(this.effectiveLocale).format(index+1);return this.localize("videoPlaylistUntitled",void 0,{position})}renderItem(item,index,current,disabled){const title=this.itemTitle(item.title,index),poster=safeMediaSrc(typeof item.poster=="string"?item.poster:""),duration=finiteRange(typeof item.duration=="number"?item.duration:0,0,0),durationId=`playlist-duration-${index}`;return html`
1
+ import{__decorate}from"tslib";import{eventCollectionSupport}from"../../../internal/collection-snapshot.js";import{html,nothing}from"lit";import{property,state}from"lit/decorators.js";import{getNumberFormat}from"../../../internal/intl-cache.js";import{formatMediaTime}from"../../../internal/media-time.js";import{LyraElement}from"../../../internal/lyra-element.js";import{hostAriaLabel}from"../../../internal/a11y.js";import{shadowFocusTarget}from"../../../internal/active-element.js";import{finiteRange}from"../../../internal/numbers.js";import{relayNativeEvent}from"../../../internal/native-event-relay.js";import{tag}from"../../../internal/prefix.js";import{safeMediaSrc}from"../../../internal/safe-url.js";import{styles}from"./video-playlist.styles.js";import{LYRA_DEFAULT_videoPlaylistLabel,LYRA_DEFAULT_videoPlaylistUntitled}from"../../../internal/default-strings/media.generated.js";function safeControls(value){return value==="none"||value==="standard"?value:"full"}function safeRepeat(value){return value==="one"||value==="all"?value:"none"}function sameVideos(left,right){return left.length===right.length&&left.every((video,index)=>video===right[index])}function sourceSnapshot(src,type,media){return{src,type,media}}function trackSnapshot(src,kind,srclang,label,isDefault){return{src,kind,srclang,label,default:isDefault}}class LyraVideoPlaylist extends LyraElement{constructor(){super(...arguments),this.controls="full",this.iconLibrary="system",this.withoutAutoAdvance=!1,this.repeat="none",this.items=[],this.playlistVideos=[],this.liveChildrenReady=!1,this.activeIndex=-1,this.navigationIndex=-1,this.listeners=new Map,this.lastKnownPlaying=new WeakMap,this.nativeVideos=new WeakMap,this.needsReload=new WeakSet,this.ownedVideoState=new WeakMap,this.preferences={},this.activationGeneration=0,this.reconcileGeneration=0,this.onSlotChange=()=>this.reconcileChildren(),this.onItemFocus=event=>{relayNativeEvent(this,event)},this.onItemBlur=event=>{relayNativeEvent(this,event)}}static{this.defaultStrings={...super.defaultStrings,videoPlaylistLabel:LYRA_DEFAULT_videoPlaylistLabel,videoPlaylistUntitled:LYRA_DEFAULT_videoPlaylistUntitled}}static{this.collectionSupport=eventCollectionSupport}static{this.immutableEventDetails=Object.freeze(["lr-video-change"])}static{this.styles=[LyraElement.styles,styles]}connectedCallback(){super.connectedCallback(),this.observeChildren(),this.hasUpdated?this.scheduleAfterUpdate(()=>this.reconcileChildren(),"video-playlist-reconcile"):this.seedFirstRenderState(()=>{this.directVideos().length>0&&this.reconcileChildren()})}disconnectedCallback(){this.activationGeneration+=1,this.reconcileGeneration+=1,this.pendingPlay=void 0,this.mutationObserver?.disconnect(),this.mutationObserver=void 0;for(const video of this.playlistVideos)this.unbindVideo(video),video.hidden=!0,this.pauseAndUnload(video);super.disconnectedCallback()}willUpdate(changed){super.willUpdate(changed),changed.has("controls")&&(this.controls=safeControls(this.controls)),changed.has("repeat")&&(this.repeat=safeRepeat(this.repeat)),(changed.has("controls")||changed.has("iconLibrary"))&&this.scheduleAfterUpdate(()=>this.reconcileChildren(),"video-playlist-reconcile")}observeChildren(){this.mutationObserver?.disconnect(),this.mutationObserver=void 0;const MutationObserverCtor=this.ownerDocument.defaultView?.MutationObserver;MutationObserverCtor&&(this.mutationObserver=new MutationObserverCtor(()=>{this.scheduleAfterUpdate(()=>{this.reconcileChildren(),this.requestUpdate()},"video-playlist-reconcile")}),this.mutationObserver.observe(this,{childList:!0,subtree:!0,attributes:!0,attributeFilter:["default","inert","kind","label","media","poster","src","srclang","title","type"]}))}directVideos(){const videoTag=tag("video");return[...this.children].filter(child=>child.localName===videoTag)}isEnabled(video){return!video.inert}nearestEnabledIndex(videos,preferred){if(!videos.length)return-1;const start=Math.min(Math.max(preferred,0),videos.length-1);for(let index=start;index<videos.length;index+=1)if(this.isEnabled(videos[index]))return index;for(let index=start-1;index>=0;index-=1)if(this.isEnabled(videos[index]))return index;return-1}reconcileChildren(){if(!this.isConnected)return;const previousVideos=this.playlistVideos,previousActive=this.activeVideo,previousIndex=this.activeIndex,previousNavigation=previousVideos[this.navigationIndex],navigationHadFocus=shadowFocusTarget(this)?.getAttribute("part")==="playlist-item",videos=this.directVideos();(videos.length>0||this.liveChildrenReady)&&(this.liveChildrenReady=!0);let active=previousActive&&videos.includes(previousActive)&&this.isEnabled(previousActive)?previousActive:void 0,nextIndex=active?videos.indexOf(active):this.nearestEnabledIndex(videos,previousIndex);!active&&nextIndex>=0&&(active=videos[nextIndex]),active||(nextIndex=-1);const activeChanged=active!==previousActive,outgoingWasRemoved=!!(previousActive&&!videos.includes(previousActive)),resumePlayback=activeChanged&&previousActive?outgoingWasRemoved?this.lastKnownPlaying.get(previousActive)??previousActive.getState().playing:previousActive.getState().playing:!1,outgoingPreferences=activeChanged&&previousActive?outgoingWasRemoved?this.capturePreferences(previousActive,this.nativeVideos.get(previousActive)):this.capturePreferences(previousActive):void 0;for(const video of previousVideos)videos.includes(video)||this.releaseVideo(video);for(const video of videos)this.claimVideo(video),this.bindVideo(video);activeChanged&&previousActive?(this.preferences=outgoingPreferences??{},outgoingWasRemoved||this.pauseAndUnload(previousActive),this.activationGeneration+=1):activeChanged&&(this.activationGeneration+=1),this.activeVideo=active,this.activeIndex=nextIndex,sameVideos(previousVideos,videos)||(this.playlistVideos=videos);for(const video of videos){video.controls!==this.controls&&(video.controls=this.controls),video.iconLibrary!==this.iconLibrary&&(video.iconLibrary=this.iconLibrary);const isActive=video===active;video.hidden=!isActive,isActive||this.pauseAndUnload(video)}active?(activeChanged||this.needsReload.has(active))&&this.activateVideo(active,resumePlayback,this.activationGeneration):this.pendingPlay=void 0;const keptNavigation=previousNavigation&&videos.includes(previousNavigation)&&this.isEnabled(previousNavigation)?videos.indexOf(previousNavigation):-1;this.navigationIndex=keptNavigation>=0?keptNavigation:nextIndex,navigationHadFocus&&keptNavigation<0&&this.navigationIndex>=0&&this.focusItem(this.navigationIndex),activeChanged&&previousActive&&this.emitChange(previousIndex,nextIndex,active??null),this.scheduleChildrenReady(videos)}scheduleChildrenReady(videos){const reconcileGeneration=++this.reconcileGeneration;Promise.all(videos.map(video=>video.updateComplete)).then(()=>{if(!this.isConnected||reconcileGeneration!==this.reconcileGeneration)return;for(const video of this.playlistVideos)this.rememberNativeVideo(video);for(const video of this.playlistVideos)video!==this.activeVideo&&this.pauseAndUnload(video);const active=this.activeVideo;if(!active||!this.needsReload.has(active))return;const shouldPlay=this.pendingPlay?.video===active&&this.pendingPlay.generation===this.activationGeneration;this.activateVideo(active,shouldPlay,this.activationGeneration)})}bindVideo(video){if(this.listeners.has(video))return;const listeners={ended:()=>{this.rememberNativeVideo(video),this.lastKnownPlaying.set(video,!1),this.handleCompletion(video)},error:()=>{this.rememberNativeVideo(video),this.lastKnownPlaying.set(video,!1)},loadedmetadata:()=>{this.rememberNativeVideo(video),this.handleLoadedMetadata(video)},pause:()=>{this.rememberNativeVideo(video),this.lastKnownPlaying.set(video,!1)},play:()=>{this.rememberNativeVideo(video),this.lastKnownPlaying.set(video,!0),video!==this.activeVideo&&this.pauseAndUnload(video)}};this.lastKnownPlaying.set(video,video.getState().playing),this.rememberNativeVideo(video),this.listeners.set(video,listeners),video.addEventListener("ended",listeners.ended),video.addEventListener("error",listeners.error),video.addEventListener("loadedmetadata",listeners.loadedmetadata),video.addEventListener("pause",listeners.pause),video.addEventListener("play",listeners.play)}unbindVideo(video){const listeners=this.listeners.get(video);listeners&&(video.removeEventListener("ended",listeners.ended),video.removeEventListener("error",listeners.error),video.removeEventListener("loadedmetadata",listeners.loadedmetadata),video.removeEventListener("pause",listeners.pause),video.removeEventListener("play",listeners.play),this.listeners.delete(video))}claimVideo(video){this.ownedVideoState.has(video)||this.ownedVideoState.set(video,{controls:video.controls,iconLibrary:video.iconLibrary,hidden:!!video.hidden})}releaseVideo(video){const authored=this.ownedVideoState.get(video);this.unbindVideo(video),this.pauseAndUnload(video),authored&&(video.controls=authored.controls,video.iconLibrary=authored.iconLibrary,video.hidden=authored.hidden,this.ownedVideoState.delete(video),video.isConnected&&video.load())}rememberNativeVideo(video){const native=video.getVideoElement();native&&this.nativeVideos.set(video,native)}pauseAndUnload(video){video.pause(),video.hidden=!0,this.needsReload.add(video),video.unloadMedia()}activateVideo(video,shouldPlay,generation){if(video.hidden=!1,!video.getVideoElement()){this.needsReload.add(video),shouldPlay&&(this.pendingPlay={video,generation});return}if(this.rememberNativeVideo(video),video.load(),this.needsReload.delete(video),this.applyPreferences(video,this.preferences),!shouldPlay){this.pendingPlay?.video===video&&(this.pendingPlay=void 0);return}this.pendingPlay=void 0,video.play().catch(()=>{generation!==this.activationGeneration||this.activeVideo})}capturePreferences(video,native=video.getVideoElement()){return video.captureMediaPreferences(native)}applyPreferences(video,preferences){video.applyMediaPreferences(preferences)}handleLoadedMetadata(video){video===this.activeVideo&&(this.applyPreferences(video,this.preferences),this.requestUpdate())}handleCompletion(video){if(video!==this.activeVideo||this.withoutAutoAdvance)return;if(this.repeat==="one"){video.seek(0);const generation=this.activationGeneration;video.play().catch(()=>{generation!==this.activationGeneration||this.activeVideo});return}const nextIndex=this.nearestEnabledIndex(this.playlistVideos,this.activeIndex+1);if(nextIndex>this.activeIndex){this.switchTo(nextIndex,!0);return}if(this.repeat==="all"){const first=this.nearestEnabledIndex(this.playlistVideos,0);if(first>=0&&first!==this.activeIndex)this.switchTo(first,!0);else if(first===this.activeIndex){video.seek(0);const generation=this.activationGeneration;video.play().catch(()=>{generation!==this.activationGeneration||this.activeVideo})}}}snapshotVideo(video){const sources=[],directSrc=video.src.trim();directSrc&&sources.push(sourceSnapshot(directSrc,"",""));const tracks=[];for(const child of video.children)if(child.localName==="source"){const src=child.getAttribute("src")?.trim()??"";src&&sources.push(sourceSnapshot(src,child.getAttribute("type")??"",child.getAttribute("media")??""))}else if(child.localName==="track"){const src=child.getAttribute("src")?.trim()??"";src&&tracks.push(trackSnapshot(src,child.getAttribute("kind")??"",child.getAttribute("srclang")??"",child.getAttribute("label")??"",child.hasAttribute("default")))}return{title:video.title,poster:video.poster,sources,tracks}}emitChange(previousIndex,currentIndex,video){this.emit("lr-video-change",{previousIndex,currentIndex,video:video?this.snapshotVideo(video):null})}switchTo(index,forcePlay=!1){const incoming=this.playlistVideos[index];if(!incoming||!this.isEnabled(incoming))return;const previousIndex=this.activeIndex,outgoing=this.activeVideo;if(incoming===outgoing){if(this.navigationIndex=index,this.requestUpdate(),forcePlay){const generation=this.activationGeneration;incoming.play().catch(()=>{generation!==this.activationGeneration||this.activeVideo})}this.emitChange(previousIndex,index,incoming);return}const wasPlaying=forcePlay||!!outgoing?.getState().playing;outgoing&&(this.preferences=this.capturePreferences(outgoing),this.pauseAndUnload(outgoing)),this.activationGeneration+=1,this.activeVideo=incoming,this.activeIndex=index,this.navigationIndex=index;for(const video of this.playlistVideos){const isActive=video===incoming;video.hidden=!isActive,!isActive&&video!==outgoing&&this.pauseAndUnload(video)}this.activateVideo(incoming,wasPlaying,this.activationGeneration),this.requestUpdate(),this.emitChange(previousIndex,index,incoming)}goTo(index){!Number.isFinite(index)||!Number.isInteger(index)||index<0||index>=this.playlistVideos.length||this.switchTo(index)}next(){const index=this.nearestEnabledIndex(this.playlistVideos,this.activeIndex+1);index>this.activeIndex&&this.switchTo(index)}previous(){for(let index=this.activeIndex-1;index>=0;index-=1)if(this.isEnabled(this.playlistVideos[index])){this.switchTo(index);return}}onItemClick(event){const button=event.currentTarget,index=Number(button.dataset.index);Number.isInteger(index)&&(this.navigationIndex=index,this.goTo(index))}enabledIndices(){const result=[];for(let index=0;index<this.playlistVideos.length;index+=1)this.isEnabled(this.playlistVideos[index])&&result.push(index);return result}moveNavigation(from,direction){const enabled=this.enabledIndices(),position=enabled.indexOf(from);if(position<0)return;const next=enabled[position+direction];next!==void 0&&this.focusItem(next)}get navigationItem(){const rows=[...this.renderRoot.querySelectorAll('[part~="playlist-item"]')];return rows.find(row=>!row.disabled&&row.getAttribute("aria-current")==="true")??rows.find(row=>!row.disabled)??null}focus(options){this.navigationItem?.focus(options)}blur(){this.navigationItem?.blur()}click(){this.navigationItem?.click()}focusItem(index){this.isEnabled(this.playlistVideos[index])&&(this.navigationIndex=index,this.requestUpdate(),this.updateComplete.then(()=>{this.navigationIndex===index&&this.shadowRoot?.querySelector(`[data-index="${index}"]`)?.focus()}))}onItemKeyDown(event){const button=event.currentTarget,index=Number(button.dataset.index);if(!Number.isInteger(index)||button.disabled)return;const forward=this.effectiveDirection==="rtl"?"ArrowLeft":"ArrowRight",backward=this.effectiveDirection==="rtl"?"ArrowRight":"ArrowLeft";if(event.key==="Enter"||event.key===" ")event.preventDefault(),this.navigationIndex=index,this.goTo(index);else if(event.key==="ArrowDown"||event.key===forward)event.preventDefault(),this.moveNavigation(index,1);else if(event.key==="ArrowUp"||event.key===backward)event.preventDefault(),this.moveNavigation(index,-1);else if(event.key==="Home"){event.preventDefault();const first=this.enabledIndices()[0];first!==void 0&&this.focusItem(first)}else if(event.key==="End"){event.preventDefault();const enabled=this.enabledIndices(),last=enabled[enabled.length-1];last!==void 0&&this.focusItem(last)}}itemTitle(value,index){const title=typeof value=="string"?value.trim():"";if(title)return title;const position=getNumberFormat(this.effectiveLocale).format(index+1);return this.localize("videoPlaylistUntitled",void 0,{position})}renderItem(item,index,current,disabled){const title=this.itemTitle(item.title,index),poster=safeMediaSrc(typeof item.poster=="string"?item.poster:""),duration=finiteRange(typeof item.duration=="number"?item.duration:0,0,0),durationId=`playlist-duration-${index}`;return html`
2
2
  <li>
3
3
  <button
4
4
  type="button"
@@ -78,11 +78,11 @@ accessibleLabel:string|null;
78
78
  * than `@query`) so the generated manifest marks it readonly, not merely by convention. */
79
79
  get iframe():HTMLIFrameElement|undefined;private cachedZoomLevelsSource;private cachedZoomLevels;
80
80
  /** Focus the internal iframe when interaction is enabled and a live frame is connected. */
81
- focus(options?:FocusOptions):void;
81
+ focus(options?:FocusOptions):void;private releaseFrameFocus;
82
82
  /** Blur the internal iframe. Does not blur a focused zoom control. */
83
83
  blur():void;
84
84
  /** Activate the internal iframe only while interaction is enabled. */
85
- click():void;private hasEmittedFocus;private frameIsActive;private frameOwnsFocus;private setFrameFocused;private dispatchHostFocusEvent;private emitHostFocus;private emitHostBlur;private onFrameFocus;private onFrameBlur;private focusReconciliationGeneration;private scheduleFrameFocusReconciliation;private focusBoundaryDocument?;private onFocusBoundaryKeyDown;private resetFocusBoundaryDocument;private bindFocusBoundaryDocument;private navigationGeneration;private needsReconnectFrame;private syncedThemeClasses;private syncedThemeProperties;private themeSyncState?;private themeWatcher?;connectedCallback():void;disconnectedCallback():void;attributeChangedCallback(name:string,oldValue:string|null,value:string|null):void;protected willUpdate(changed:PropertyValues<this>):void;protected updated(changed:PropertyValues<this>):void;
85
+ click():void;private hasEmittedFocus;private frameIsActive;private frameOwnsFocus;private setFrameFocused;private dispatchHostFocusEvent;private emitHostFocus;private emitHostBlur;private onFrameFocus;private onFrameBlur;private focusReconciliationGeneration;private scheduleFrameFocusReconciliation;private focusBoundaryDocument?;private onFocusBoundaryKeyDown;private leaveFocusBoundaryHub?;private resetFocusBoundaryDocument;private bindFocusBoundaryDocument;private navigationGeneration;private needsReconnectFrame;private syncedThemeClasses;private syncedThemeProperties;private themeSyncState?;private themeWatcher?;connectedCallback():void;disconnectedCallback():void;attributeChangedCallback(name:string,oldValue:string|null,value:string|null):void;protected willUpdate(changed:PropertyValues<this>):void;protected updated(changed:PropertyValues<this>):void;
86
86
  /** Returns the current iframe window while connected. Cross-origin windows are still opaque. */
87
87
  get contentWindow():Window|null;
88
88
  /** Returns the current same-origin iframe document, or `null` when detached/cross-origin. */
@@ -1,4 +1,4 @@
1
- import{__decorate}from"tslib";import{html,nothing}from"lit";import{property}from"lit/decorators.js";import{keyed}from"lit/directives/keyed.js";import{activeElementIn}from"../../../internal/active-element.js";import{hostAriaLabel}from"../../../internal/a11y.js";import{LyraElement}from"../../../internal/lyra-element.js";import{HostDescriptionController}from"../../../internal/aria-controls.js";import{finiteRange}from"../../../internal/numbers.js";import{relayNativeEvent}from"../../../internal/native-event-relay.js";import{safeDownloadHref}from"../../../internal/safe-url.js";import{ThemeWatcher}from"../../../internal/theme-watcher.js";import{styles}from"./zoomable-frame.styles.js";import{LYRA_DEFAULT_zoomControls,LYRA_DEFAULT_zoomIn,LYRA_DEFAULT_zoomOut,LYRA_DEFAULT_zoomableFrameLabel}from"../../../internal/default-strings.generated.js";const DEFAULT_ZOOM_LEVELS="25% 50% 75% 100% 125% 150% 175% 200%",DEFAULT_IFRAME_SANDBOX="allow-same-origin",DEFAULT_ZOOM_LEVEL_VALUES=[.25,.5,.75,1,1.25,1.5,1.75,2],MIN_ZOOM=.01,MAX_ZOOM=1e3,MAX_ZOOM_LEVEL_SOURCE_CODE_UNITS=16384,MAX_ZOOM_LEVEL_TOKENS=256,SANDBOX_TOKENS=new Set(["allow-downloads","allow-forms","allow-modals","allow-orientation-lock","allow-pointer-lock","allow-popups","allow-popups-to-escape-sandbox","allow-presentation","allow-same-origin","allow-scripts","allow-storage-access-by-user-activation","allow-top-navigation","allow-top-navigation-by-user-activation","allow-top-navigation-to-custom-protocols"]),REFERRER_POLICIES=new Set(["no-referrer","no-referrer-when-downgrade","origin","origin-when-cross-origin","same-origin","strict-origin","strict-origin-when-cross-origin","unsafe-url"]),THEME_ATTRIBUTES=["data-lr-theme","data-theme","data-color-scheme"];function isLyraThemeClass(value){return value==="lr-light"||value==="lr-dark"||value.startsWith("lr-theme-")||value.startsWith("lr-brand-")||value.startsWith("lr-palette-")}function safeZoomableFrameSrc(value){return typeof value=="string"&&value.trim().toLowerCase()==="about:blank"?value.trim():safeDownloadHref(value)}function safeZoomableFrameSandbox(value){if(typeof value!="string")return"";const tokens=[...new Set(value.toLowerCase().split(/\s+/).filter(token=>SANDBOX_TOKENS.has(token)))];return tokens.includes("allow-scripts")&&tokens.includes("allow-same-origin")?tokens.filter(token=>token!=="allow-same-origin").join(" "):tokens.join(" ")}function safeLoading(value){return value==="lazy"?"lazy":"eager"}function safeReferrerPolicy(value){return value===""||value==null?null:typeof value=="string"&&REFERRER_POLICIES.has(value)?value:"no-referrer"}function parseZoomLevels(value){if(typeof value!="string")return DEFAULT_ZOOM_LEVEL_VALUES;const source=value.slice(0,MAX_ZOOM_LEVEL_SOURCE_CODE_UNITS),finalTokenContinues=value.length>MAX_ZOOM_LEVEL_SOURCE_CODE_UNITS&&/\S/u.test(source.at(-1)??"")&&/\S/u.test(value[MAX_ZOOM_LEVEL_SOURCE_CODE_UNITS]??""),tokenPattern=/\S+/g,unique=new Set;let tokenCount=0,match;for(;tokenCount<MAX_ZOOM_LEVEL_TOKENS&&(match=tokenPattern.exec(source))!==null&&!(finalTokenContinues&&tokenPattern.lastIndex===source.length);){tokenCount+=1;const token=match[0],percent=token.endsWith("%"),parsed=Number(percent?token.slice(0,-1):token),level=percent?parsed/100:parsed;Number.isFinite(level)&&level>=MIN_ZOOM&&level<=MAX_ZOOM&&unique.add(level)}return unique.size===0?DEFAULT_ZOOM_LEVEL_VALUES:Object.freeze([...unique].sort((left,right)=>left-right))}class LyraZoomableFrame extends LyraElement{constructor(){super(...arguments),this.hostDescription=new HostDescriptionController(this,()=>this.renderRoot.querySelector('[part="iframe"]')),this.src="",this.srcdoc="",this.allowfullscreen=!1,this.loading="eager",this.referrerpolicy="",this.sandbox=DEFAULT_IFRAME_SANDBOX,this.zoom=1,this.zoomLevels=DEFAULT_ZOOM_LEVELS,this.withoutControls=!1,this.withoutInteraction=!1,this.withThemeSync=!1,this.accessibleLabel=null,this.cachedZoomLevelsSource=Symbol("uncached zoom levels"),this.cachedZoomLevels=DEFAULT_ZOOM_LEVEL_VALUES,this.hasEmittedFocus=!1,this.onFrameFocus=event=>{event.stopPropagation(),this.frameOwnsFocus(event.currentTarget)&&this.emitHostFocus(event)},this.onFrameBlur=event=>{event.stopPropagation(),!this.frameOwnsFocus(event.currentTarget)&&this.emitHostBlur(event)},this.focusReconciliationGeneration=0,this.scheduleFrameFocusReconciliation=()=>{const view=this.ownerDocument.defaultView;if(!view)return;const generation=++this.focusReconciliationGeneration;view.setTimeout(()=>{generation!==this.focusReconciliationGeneration||!this.isConnected||(this.frameOwnsFocus()?this.emitHostFocus():this.emitHostBlur(void 0,activeElementIn(this.ownerDocument)))},0)},this.onFocusBoundaryKeyDown=event=>{event.key==="Tab"&&this.scheduleFrameFocusReconciliation()},this.navigationGeneration=0,this.needsReconnectFrame=!1,this.syncedThemeClasses=new Set,this.syncedThemeProperties=new Set,this.onControlsKeyDown=event=>{event.altKey||event.ctrlKey||event.metaKey||(event.key==="+"||event.key==="="?(event.preventDefault(),this.zoomIn()):(event.key==="-"||event.key==="_")&&(event.preventDefault(),this.zoomOut()))}}static{this.defaultStrings={...super.defaultStrings,zoomControls:LYRA_DEFAULT_zoomControls,zoomIn:LYRA_DEFAULT_zoomIn,zoomOut:LYRA_DEFAULT_zoomOut,zoomableFrameLabel:LYRA_DEFAULT_zoomableFrameLabel}}static{this.styles=[LyraElement.styles,styles]}adoptedCallback(){super.adoptedCallback(),this.hostDescription.adopted()}get iframe(){return this.renderRoot?.querySelector("iframe")??void 0}focus(options){const frame=this.iframe;if(!frame||!this.isConnected||this.withoutInteraction||frame.inert)return;const previous=activeElementIn(this.ownerDocument),wasFocused=this.frameOwnsFocus(frame);frame.focus(options),!wasFocused&&this.frameOwnsFocus(frame)&&this.emitHostFocus(void 0,previous)}blur(){const frame=this.iframe;!frame||!this.frameOwnsFocus(frame)||(frame.blur(),this.frameOwnsFocus(frame)||this.emitHostBlur(void 0,activeElementIn(this.ownerDocument)))}click(){this.isConnected&&!this.withoutInteraction&&!this.iframe?.inert&&this.iframe?.click()}frameIsActive(frame=this.iframe){return!!(frame&&this.isConnected&&activeElementIn(this.shadowRoot)===frame)}frameOwnsFocus(frame=this.iframe){return!!(frame&&!frame.inert&&!this.withoutInteraction&&this.frameIsActive(frame))}setFrameFocused(focused){this.toggleAttribute("data-frame-focused",focused)}dispatchHostFocusEvent(type,source,relatedTarget=null){const view=this.ownerDocument.defaultView;if(!view)return;const related=source?.relatedTarget??relatedTarget,relatedNode=related,internalRelated=related===this||relatedNode?.nodeType!==void 0&&this.shadowRoot?.contains(relatedNode),nativeSource=new view.FocusEvent(type,{relatedTarget:internalRelated?null:related,view,detail:source?.detail??0});relayNativeEvent(this,nativeSource)}emitHostFocus(source,relatedTarget=null){this.hasEmittedFocus||(this.hasEmittedFocus=!0,this.setFrameFocused(!0),this.dispatchHostFocusEvent("focus",source,relatedTarget))}emitHostBlur(source,relatedTarget=null){this.hasEmittedFocus&&(this.hasEmittedFocus=!1,this.setFrameFocused(!1),this.dispatchHostFocusEvent("blur",source,relatedTarget))}resetFocusBoundaryDocument(){this.focusBoundaryDocument?.removeEventListener("keydown",this.onFocusBoundaryKeyDown,!0),this.focusBoundaryDocument?.removeEventListener("pointerdown",this.scheduleFrameFocusReconciliation,!0),this.focusBoundaryDocument=void 0}bindFocusBoundaryDocument(){let target=null;try{target=this.contentDocument}catch{}!target||target===this.focusBoundaryDocument||(this.resetFocusBoundaryDocument(),this.focusBoundaryDocument=target,target.addEventListener("keydown",this.onFocusBoundaryKeyDown,!0),target.addEventListener("pointerdown",this.scheduleFrameFocusReconciliation,!0))}connectedCallback(){super.connectedCallback(),this.ownerDocument.addEventListener("focusin",this.scheduleFrameFocusReconciliation,!0),this.ownerDocument.addEventListener("focusout",this.scheduleFrameFocusReconciliation,!0),this.ownerDocument.addEventListener("keydown",this.onFocusBoundaryKeyDown,!0),this.ownerDocument.defaultView?.addEventListener("focus",this.scheduleFrameFocusReconciliation),this.ownerDocument.defaultView?.addEventListener("blur",this.scheduleFrameFocusReconciliation),this.needsReconnectFrame&&(this.needsReconnectFrame=!1,this.requestUpdate())}disconnectedCallback(){this.focusReconciliationGeneration++,this.ownerDocument.removeEventListener("focusin",this.scheduleFrameFocusReconciliation,!0),this.ownerDocument.removeEventListener("focusout",this.scheduleFrameFocusReconciliation,!0),this.ownerDocument.removeEventListener("keydown",this.onFocusBoundaryKeyDown,!0),this.ownerDocument.defaultView?.removeEventListener("focus",this.scheduleFrameFocusReconciliation),this.ownerDocument.defaultView?.removeEventListener("blur",this.scheduleFrameFocusReconciliation),this.navigationGeneration++,this.needsReconnectFrame=!0,this.hasEmittedFocus=!1,this.setFrameFocused(!1),this.resetFocusBoundaryDocument(),this.resetThemeSyncState(),super.disconnectedCallback()}attributeChangedCallback(name,oldValue,value){super.attributeChangedCallback(name,oldValue,value),name==="srcdoc"&&oldValue===null!=(value===null)&&(this.navigationGeneration++,this.requestUpdate())}willUpdate(changed){if(super.willUpdate(changed),changed.has("src")||changed.has("srcdoc")||changed.has("allowfullscreen")||changed.has("loading")||changed.has("referrerpolicy")||changed.has("sandbox")){const frame=this.iframe,wasFocused=this.frameIsActive(frame);frame?.blur(),wasFocused&&!this.frameIsActive(frame)&&this.emitHostBlur(void 0,activeElementIn(this.ownerDocument)),this.setFrameFocused(!1),this.resetFocusBoundaryDocument(),this.navigationGeneration++}if(changed.has("withoutInteraction")&&this.withoutInteraction){const frame=this.iframe,wasFocused=this.frameIsActive(frame);frame?.blur(),wasFocused&&this.emitHostBlur(void 0,activeElementIn(this.ownerDocument)),this.setFrameFocused(!1)}}updated(changed){super.updated(changed),changed.has("withThemeSync")&&(this.withThemeSync?(this.themeWatcher??=new ThemeWatcher(this,()=>this.syncTheme()),this.syncTheme()):this.restoreTheme())}get contentWindow(){return this.isConnected?this.iframe?.contentWindow??null:null}get contentDocument(){if(!this.isConnected)return null;try{return this.iframe?.contentDocument??null}catch{return null}}get safeZoom(){return finiteRange(this.zoom,1,MIN_ZOOM,MAX_ZOOM)}get availableZoomLevels(){const source=this.zoomLevels;return source===this.cachedZoomLevelsSource?this.cachedZoomLevels:(this.cachedZoomLevelsSource=source,this.cachedZoomLevels=parseZoomLevels(source),this.cachedZoomLevels)}get hasInlineDocument(){return this.hasAttribute("srcdoc")||typeof this.srcdoc=="string"&&this.srcdoc!==""}get hasNavigation(){return this.hasInlineDocument||safeZoomableFrameSrc(this.src)!==null}navigationSignature(){const inline=this.hasInlineDocument;return JSON.stringify([inline,inline?this.srcdoc:safeZoomableFrameSrc(this.src),this.allowfullscreen,safeLoading(this.loading),safeReferrerPolicy(this.referrerpolicy),safeZoomableFrameSandbox(this.sandbox)])}zoomIn(){const current=this.safeZoom,next=this.availableZoomLevels.find(level=>level>current);next!==void 0&&this.zoomTo(next)}zoomOut(){const current=this.safeZoom,levels=this.availableZoomLevels;for(let index=levels.length-1;index>=0;index--){const previous=levels[index];if(previous!==void 0&&previous<current){this.zoomTo(previous);return}}}zoomTo(zoom){this.zoom=zoom,this.emit("lr-zoom-change",{zoom})}isZoomInDisabled(){return!this.availableZoomLevels.some(level=>level>this.safeZoom)}isZoomOutDisabled(){return!this.availableZoomLevels.some(level=>level<this.safeZoom)}dispatchFrameEvent(type){const EventConstructor=this.ownerDocument.defaultView?.Event??Event;type==="load"?this.dispatchEvent(new EventConstructor("load",{bubbles:!1,composed:!1})):this.dispatchEvent(new EventConstructor("error",{bubbles:!1,composed:!1}))}onFrameEvent(type,source,generation,navigationSignature){source.stopPropagation(),!(!this.isConnected||!this.hasNavigation||generation!==this.navigationGeneration||navigationSignature!==this.navigationSignature()||source.currentTarget!==this.iframe)&&(type==="load"&&(this.bindFocusBoundaryDocument(),this.syncTheme()),this.dispatchFrameEvent(type))}syncTheme(){if(!this.withThemeSync||!this.isConnected)return;const target=this.contentDocument?.documentElement,source=this.ownerDocument.documentElement;if(!(!target||!source))try{const state=this.themeStateFor(target),nextClasses=new Set([...source.classList].filter(isLyraThemeClass));for(const className of this.syncedThemeClasses)nextClasses.has(className)||this.setSyncedThemeClass(state,className,!1);for(const className of nextClasses)this.setSyncedThemeClass(state,className,!0);this.syncedThemeClasses=nextClasses;for(const attribute of THEME_ATTRIBUTES){const value=source.getAttribute(attribute);this.setSyncedThemeAttribute(state,attribute,value)}const computed=this.ownerDocument.defaultView?.getComputedStyle(this);if(!computed)return;const nextProperties=new Set;for(let index=0;index<computed.length;index++){const property2=computed.item(index);property2.startsWith("--lr-theme-")&&(this.setSyncedThemeProperty(state,property2,computed.getPropertyValue(property2)),nextProperties.add(property2))}for(const property2 of this.syncedThemeProperties)nextProperties.has(property2)||this.setSyncedThemeProperty(state,property2,null);this.syncedThemeProperties=nextProperties,this.setSyncedThemeProperty(state,"color-scheme",computed.colorScheme)}catch{}}themeStateFor(target){if(this.themeSyncState?.target===target)return this.themeSyncState;this.resetThemeSyncState();const state={target,classes:new Map,attributes:new Map,properties:new Map};return this.themeSyncState=state,state}setSyncedThemeClass(state,className,present){let mutation=state.classes.get(className);mutation||(mutation={original:state.target.classList.contains(className),applied:state.target.classList.contains(className)},state.classes.set(className,mutation)),state.target.classList.toggle(className,present),mutation.applied=state.target.classList.contains(className)}setSyncedThemeAttribute(state,attribute,value){let mutation=state.attributes.get(attribute);if(!mutation){const original=state.target.getAttribute(attribute);mutation={original,applied:original},state.attributes.set(attribute,mutation)}value===null?state.target.removeAttribute(attribute):state.target.setAttribute(attribute,value),mutation.applied=state.target.getAttribute(attribute)}setSyncedThemeProperty(state,property2,value){let mutation=state.properties.get(property2);mutation||(mutation={original:state.target.style.getPropertyValue(property2),originalPriority:state.target.style.getPropertyPriority(property2),applied:state.target.style.getPropertyValue(property2),appliedPriority:state.target.style.getPropertyPriority(property2)},state.properties.set(property2,mutation)),value===null?state.target.style.removeProperty(property2):state.target.style.setProperty(property2,value),mutation.applied=state.target.style.getPropertyValue(property2),mutation.appliedPriority=state.target.style.getPropertyPriority(property2)}restoreTheme(){const state=this.themeSyncState;if(state)try{if(this.contentDocument?.documentElement!==state.target)return;for(const[className,mutation]of state.classes)state.target.classList.contains(className)===mutation.applied&&state.target.classList.toggle(className,mutation.original);for(const[attribute,mutation]of state.attributes)state.target.getAttribute(attribute)===mutation.applied&&(mutation.original===null?state.target.removeAttribute(attribute):state.target.setAttribute(attribute,mutation.original));for(const[property2,mutation]of state.properties)state.target.style.getPropertyValue(property2)!==mutation.applied||state.target.style.getPropertyPriority(property2)!==mutation.appliedPriority||(mutation.original?state.target.style.setProperty(property2,mutation.original,mutation.originalPriority):state.target.style.removeProperty(property2))}catch{}finally{this.resetThemeSyncState()}}resetThemeSyncState(){this.themeSyncState=void 0,this.syncedThemeClasses.clear(),this.syncedThemeProperties.clear()}renderControls(){return this.withoutControls?nothing:html`<div
1
+ import{__decorate}from"tslib";import{html,nothing}from"lit";import{property}from"lit/decorators.js";import{keyed}from"lit/directives/keyed.js";import{activeElementIn,shadowFocusTarget}from"../../../internal/active-element.js";import{hostAriaLabel}from"../../../internal/a11y.js";import{LyraElement}from"../../../internal/lyra-element.js";import{HostDescriptionController}from"../../../internal/aria-controls.js";import{finiteRange}from"../../../internal/numbers.js";import{relayNativeEvent}from"../../../internal/native-event-relay.js";import{safeDownloadHref}from"../../../internal/safe-url.js";import{ThemeWatcher}from"../../../internal/theme-watcher.js";import{styles}from"./zoomable-frame.styles.js";import{LYRA_DEFAULT_zoomControls,LYRA_DEFAULT_zoomableFrameLabel}from"../../../internal/default-strings/media.generated.js";import{LYRA_DEFAULT_zoomIn,LYRA_DEFAULT_zoomOut}from"../../../internal/default-strings/shared.generated.js";const focusBoundaryHubs=new WeakMap;function joinFocusBoundaryHub(doc,member){let hub=focusBoundaryHubs.get(doc);if(!hub){const members=new Set,view=doc.defaultView,onEvent=event=>{for(const m of[...members])m.onOwnerFocusBoundary(event)};doc.addEventListener("focusin",onEvent,!0),doc.addEventListener("focusout",onEvent,!0),doc.addEventListener("keydown",onEvent,!0),view?.addEventListener("focus",onEvent),view?.addEventListener("blur",onEvent),hub={members,dispose:()=>{doc.removeEventListener("focusin",onEvent,!0),doc.removeEventListener("focusout",onEvent,!0),doc.removeEventListener("keydown",onEvent,!0),view?.removeEventListener("focus",onEvent),view?.removeEventListener("blur",onEvent)}},focusBoundaryHubs.set(doc,hub)}hub.members.add(member);const joined=hub;return()=>{joined.members.delete(member),!joined.members.size&&focusBoundaryHubs.get(doc)===joined&&(joined.dispose(),focusBoundaryHubs.delete(doc))}}const DEFAULT_ZOOM_LEVELS="25% 50% 75% 100% 125% 150% 175% 200%",DEFAULT_IFRAME_SANDBOX="allow-same-origin",DEFAULT_ZOOM_LEVEL_VALUES=[.25,.5,.75,1,1.25,1.5,1.75,2],MIN_ZOOM=.01,MAX_ZOOM=1e3,MAX_ZOOM_LEVEL_SOURCE_CODE_UNITS=16384,MAX_ZOOM_LEVEL_TOKENS=256,SANDBOX_TOKENS=new Set(["allow-downloads","allow-forms","allow-modals","allow-orientation-lock","allow-pointer-lock","allow-popups","allow-popups-to-escape-sandbox","allow-presentation","allow-same-origin","allow-scripts","allow-storage-access-by-user-activation","allow-top-navigation","allow-top-navigation-by-user-activation","allow-top-navigation-to-custom-protocols"]),REFERRER_POLICIES=new Set(["no-referrer","no-referrer-when-downgrade","origin","origin-when-cross-origin","same-origin","strict-origin","strict-origin-when-cross-origin","unsafe-url"]),THEME_ATTRIBUTES=["data-lr-theme","data-theme","data-color-scheme"];function isLyraThemeClass(value){return value==="lr-light"||value==="lr-dark"||value.startsWith("lr-theme-")||value.startsWith("lr-brand-")||value.startsWith("lr-palette-")}function safeZoomableFrameSrc(value){return typeof value=="string"&&value.trim().toLowerCase()==="about:blank"?value.trim():safeDownloadHref(value)}function safeZoomableFrameSandbox(value){if(typeof value!="string")return"";const tokens=[...new Set(value.toLowerCase().split(/\s+/).filter(token=>SANDBOX_TOKENS.has(token)))];return tokens.includes("allow-scripts")&&tokens.includes("allow-same-origin")?tokens.filter(token=>token!=="allow-same-origin").join(" "):tokens.join(" ")}function safeLoading(value){return value==="lazy"?"lazy":"eager"}function safeReferrerPolicy(value){return value===""||value==null?null:typeof value=="string"&&REFERRER_POLICIES.has(value)?value:"no-referrer"}function parseZoomLevels(value){if(typeof value!="string")return DEFAULT_ZOOM_LEVEL_VALUES;const source=value.slice(0,MAX_ZOOM_LEVEL_SOURCE_CODE_UNITS),finalTokenContinues=value.length>MAX_ZOOM_LEVEL_SOURCE_CODE_UNITS&&/\S/u.test(source.at(-1)??"")&&/\S/u.test(value[MAX_ZOOM_LEVEL_SOURCE_CODE_UNITS]??""),tokenPattern=/\S+/g,unique=new Set;let tokenCount=0,match;for(;tokenCount<MAX_ZOOM_LEVEL_TOKENS&&(match=tokenPattern.exec(source))!==null&&!(finalTokenContinues&&tokenPattern.lastIndex===source.length);){tokenCount+=1;const token=match[0],percent=token.endsWith("%"),parsed=Number(percent?token.slice(0,-1):token),level=percent?parsed/100:parsed;Number.isFinite(level)&&level>=MIN_ZOOM&&level<=MAX_ZOOM&&unique.add(level)}return unique.size===0?DEFAULT_ZOOM_LEVEL_VALUES:Object.freeze([...unique].sort((left,right)=>left-right))}class LyraZoomableFrame extends LyraElement{constructor(){super(...arguments),this.hostDescription=new HostDescriptionController(this,()=>this.renderRoot.querySelector('[part="iframe"]')),this.src="",this.srcdoc="",this.allowfullscreen=!1,this.loading="eager",this.referrerpolicy="",this.sandbox=DEFAULT_IFRAME_SANDBOX,this.zoom=1,this.zoomLevels=DEFAULT_ZOOM_LEVELS,this.withoutControls=!1,this.withoutInteraction=!1,this.withThemeSync=!1,this.accessibleLabel=null,this.cachedZoomLevelsSource=Symbol("uncached zoom levels"),this.cachedZoomLevels=DEFAULT_ZOOM_LEVEL_VALUES,this.hasEmittedFocus=!1,this.onFrameFocus=event=>{event.stopPropagation(),this.frameOwnsFocus(event.currentTarget)&&this.emitHostFocus(event)},this.onFrameBlur=event=>{event.stopPropagation(),!this.frameOwnsFocus(event.currentTarget)&&this.emitHostBlur(event)},this.focusReconciliationGeneration=0,this.scheduleFrameFocusReconciliation=()=>{const view=this.ownerDocument.defaultView;if(!view)return;const generation=++this.focusReconciliationGeneration;view.setTimeout(()=>{generation!==this.focusReconciliationGeneration||!this.isConnected||(this.frameOwnsFocus()?this.emitHostFocus():this.emitHostBlur(void 0,activeElementIn(this.ownerDocument)))},0)},this.onFocusBoundaryKeyDown=event=>{event.key==="Tab"&&this.scheduleFrameFocusReconciliation()},this.navigationGeneration=0,this.needsReconnectFrame=!1,this.syncedThemeClasses=new Set,this.syncedThemeProperties=new Set,this.onControlsKeyDown=event=>{event.altKey||event.ctrlKey||event.metaKey||(event.key==="+"||event.key==="="?(event.preventDefault(),this.zoomIn()):(event.key==="-"||event.key==="_")&&(event.preventDefault(),this.zoomOut()))}}static{this.defaultStrings={...super.defaultStrings,zoomControls:LYRA_DEFAULT_zoomControls,zoomIn:LYRA_DEFAULT_zoomIn,zoomOut:LYRA_DEFAULT_zoomOut,zoomableFrameLabel:LYRA_DEFAULT_zoomableFrameLabel}}static{this.styles=[LyraElement.styles,styles]}adoptedCallback(){super.adoptedCallback(),this.hostDescription.adopted()}get iframe(){return this.renderRoot?.querySelector("iframe")??void 0}focus(options){const frame=this.iframe;if(!frame||!this.isConnected||this.withoutInteraction||frame.inert)return;const previous=activeElementIn(this.ownerDocument),wasFocused=this.frameOwnsFocus(frame);frame.focus(options),!wasFocused&&this.frameOwnsFocus(frame)&&this.emitHostFocus(void 0,previous)}releaseFrameFocus(frame){if(frame&&(frame.blur(),!!this.frameIsActive(frame))){try{frame.contentWindow?.blur()}catch{}frame.blur()}}blur(){const frame=this.iframe;!frame||!this.frameOwnsFocus(frame)||(this.releaseFrameFocus(frame),this.frameOwnsFocus(frame)||this.emitHostBlur(void 0,activeElementIn(this.ownerDocument)))}click(){this.isConnected&&!this.withoutInteraction&&!this.iframe?.inert&&this.iframe?.click()}frameIsActive(frame=this.iframe){return!!(frame&&this.isConnected&&shadowFocusTarget(this)===frame)}frameOwnsFocus(frame=this.iframe){return!!(frame&&!frame.inert&&!this.withoutInteraction&&this.frameIsActive(frame))}setFrameFocused(focused){this.toggleAttribute("data-frame-focused",focused)}dispatchHostFocusEvent(type,source,relatedTarget=null){const view=this.ownerDocument.defaultView;if(!view)return;const related=source?.relatedTarget??relatedTarget,relatedNode=related,internalRelated=related===this||relatedNode?.nodeType!==void 0&&this.shadowRoot?.contains(relatedNode),nativeSource=new view.FocusEvent(type,{relatedTarget:internalRelated?null:related,view,detail:source?.detail??0});relayNativeEvent(this,nativeSource)}emitHostFocus(source,relatedTarget=null){this.hasEmittedFocus||(this.hasEmittedFocus=!0,this.setFrameFocused(!0),this.dispatchHostFocusEvent("focus",source,relatedTarget))}emitHostBlur(source,relatedTarget=null){this.hasEmittedFocus&&(this.hasEmittedFocus=!1,this.setFrameFocused(!1),this.dispatchHostFocusEvent("blur",source,relatedTarget))}onOwnerFocusBoundary(event){event.type==="keydown"?this.onFocusBoundaryKeyDown(event):(this.hasEmittedFocus||this.frameOwnsFocus())&&this.scheduleFrameFocusReconciliation()}resetFocusBoundaryDocument(){this.focusBoundaryDocument?.removeEventListener("keydown",this.onFocusBoundaryKeyDown,!0),this.focusBoundaryDocument?.removeEventListener("pointerdown",this.scheduleFrameFocusReconciliation,!0),this.focusBoundaryDocument=void 0}bindFocusBoundaryDocument(){let target=null;try{target=this.contentDocument}catch{}!target||target===this.focusBoundaryDocument||(this.resetFocusBoundaryDocument(),this.focusBoundaryDocument=target,target.addEventListener("keydown",this.onFocusBoundaryKeyDown,!0),target.addEventListener("pointerdown",this.scheduleFrameFocusReconciliation,!0))}connectedCallback(){super.connectedCallback(),this.leaveFocusBoundaryHub?.(),this.leaveFocusBoundaryHub=joinFocusBoundaryHub(this.ownerDocument,this),this.needsReconnectFrame&&(this.needsReconnectFrame=!1,this.requestUpdate())}disconnectedCallback(){this.focusReconciliationGeneration++,this.leaveFocusBoundaryHub?.(),this.leaveFocusBoundaryHub=void 0,this.navigationGeneration++,this.needsReconnectFrame=!0,this.hasEmittedFocus=!1,this.setFrameFocused(!1),this.resetFocusBoundaryDocument(),this.resetThemeSyncState(),super.disconnectedCallback()}attributeChangedCallback(name,oldValue,value){super.attributeChangedCallback(name,oldValue,value),name==="srcdoc"&&oldValue===null!=(value===null)&&(this.navigationGeneration++,this.requestUpdate())}willUpdate(changed){if(super.willUpdate(changed),changed.has("src")||changed.has("srcdoc")||changed.has("allowfullscreen")||changed.has("loading")||changed.has("referrerpolicy")||changed.has("sandbox")){const frame=this.iframe,wasFocused=this.frameIsActive(frame);this.releaseFrameFocus(frame),wasFocused&&!this.frameIsActive(frame)&&this.emitHostBlur(void 0,activeElementIn(this.ownerDocument)),this.setFrameFocused(!1),this.resetFocusBoundaryDocument(),this.navigationGeneration++}if(changed.has("withoutInteraction")&&this.withoutInteraction){const frame=this.iframe,wasFocused=this.frameIsActive(frame);this.releaseFrameFocus(frame),wasFocused&&this.emitHostBlur(void 0,activeElementIn(this.ownerDocument)),this.setFrameFocused(!1)}}updated(changed){super.updated(changed),changed.has("withThemeSync")&&(this.withThemeSync?(this.themeWatcher??=new ThemeWatcher(this,()=>this.syncTheme()),this.syncTheme()):(this.themeWatcher&&(this.themeWatcher.hostDisconnected(),this.removeController(this.themeWatcher),this.themeWatcher=void 0),this.restoreTheme()))}get contentWindow(){return this.isConnected?this.iframe?.contentWindow??null:null}get contentDocument(){if(!this.isConnected)return null;try{return this.iframe?.contentDocument??null}catch{return null}}get safeZoom(){return finiteRange(this.zoom,1,MIN_ZOOM,MAX_ZOOM)}get availableZoomLevels(){const source=this.zoomLevels;return source===this.cachedZoomLevelsSource?this.cachedZoomLevels:(this.cachedZoomLevelsSource=source,this.cachedZoomLevels=parseZoomLevels(source),this.cachedZoomLevels)}get hasInlineDocument(){return this.hasAttribute("srcdoc")||typeof this.srcdoc=="string"&&this.srcdoc!==""}get hasNavigation(){return this.hasInlineDocument||safeZoomableFrameSrc(this.src)!==null}navigationSignature(){const inline=this.hasInlineDocument;return JSON.stringify([inline,inline?this.srcdoc:safeZoomableFrameSrc(this.src),this.allowfullscreen,safeLoading(this.loading),safeReferrerPolicy(this.referrerpolicy),safeZoomableFrameSandbox(this.sandbox)])}zoomIn(){const current=this.safeZoom,next=this.availableZoomLevels.find(level=>level>current);next!==void 0&&this.zoomTo(next)}zoomOut(){const current=this.safeZoom,levels=this.availableZoomLevels;for(let index=levels.length-1;index>=0;index--){const previous=levels[index];if(previous!==void 0&&previous<current){this.zoomTo(previous);return}}}zoomTo(zoom){this.zoom=zoom,this.emit("lr-zoom-change",{zoom})}isZoomInDisabled(){return!this.availableZoomLevels.some(level=>level>this.safeZoom)}isZoomOutDisabled(){return!this.availableZoomLevels.some(level=>level<this.safeZoom)}dispatchFrameEvent(type){const EventConstructor=this.ownerDocument.defaultView?.Event??Event;type==="load"?this.dispatchEvent(new EventConstructor("load",{bubbles:!1,composed:!1})):this.dispatchEvent(new EventConstructor("error",{bubbles:!1,composed:!1}))}onFrameEvent(type,source,generation,navigationSignature){source.stopPropagation(),!(!this.isConnected||!this.hasNavigation||generation!==this.navigationGeneration||navigationSignature!==this.navigationSignature()||source.currentTarget!==this.iframe)&&(type==="load"&&(this.bindFocusBoundaryDocument(),this.syncTheme()),this.dispatchFrameEvent(type))}syncTheme(){if(!this.withThemeSync||!this.isConnected)return;const target=this.contentDocument?.documentElement,source=this.ownerDocument.documentElement;if(!(!target||!source))try{const state=this.themeStateFor(target),nextClasses=new Set([...source.classList].filter(isLyraThemeClass));for(const className of this.syncedThemeClasses)nextClasses.has(className)||this.setSyncedThemeClass(state,className,!1);for(const className of nextClasses)this.setSyncedThemeClass(state,className,!0);this.syncedThemeClasses=nextClasses;for(const attribute of THEME_ATTRIBUTES){const value=source.getAttribute(attribute);this.setSyncedThemeAttribute(state,attribute,value)}const computed=this.ownerDocument.defaultView?.getComputedStyle(this);if(!computed)return;const nextProperties=new Set;for(let index=0;index<computed.length;index++){const property2=computed.item(index);property2.startsWith("--lr-theme-")&&(this.setSyncedThemeProperty(state,property2,computed.getPropertyValue(property2)),nextProperties.add(property2))}for(const property2 of this.syncedThemeProperties)nextProperties.has(property2)||this.setSyncedThemeProperty(state,property2,null);this.syncedThemeProperties=nextProperties,this.setSyncedThemeProperty(state,"color-scheme",computed.colorScheme)}catch{}}themeStateFor(target){if(this.themeSyncState?.target===target)return this.themeSyncState;this.resetThemeSyncState();const state={target,classes:new Map,attributes:new Map,properties:new Map};return this.themeSyncState=state,state}setSyncedThemeClass(state,className,present){let mutation=state.classes.get(className);mutation||(mutation={original:state.target.classList.contains(className),applied:state.target.classList.contains(className)},state.classes.set(className,mutation)),state.target.classList.toggle(className,present),mutation.applied=state.target.classList.contains(className)}setSyncedThemeAttribute(state,attribute,value){let mutation=state.attributes.get(attribute);if(!mutation){const original=state.target.getAttribute(attribute);mutation={original,applied:original},state.attributes.set(attribute,mutation)}value===null?state.target.removeAttribute(attribute):state.target.setAttribute(attribute,value),mutation.applied=state.target.getAttribute(attribute)}setSyncedThemeProperty(state,property2,value){let mutation=state.properties.get(property2);mutation||(mutation={original:state.target.style.getPropertyValue(property2),originalPriority:state.target.style.getPropertyPriority(property2),applied:state.target.style.getPropertyValue(property2),appliedPriority:state.target.style.getPropertyPriority(property2)},state.properties.set(property2,mutation)),value===null?state.target.style.removeProperty(property2):state.target.style.setProperty(property2,value),mutation.applied=state.target.style.getPropertyValue(property2),mutation.appliedPriority=state.target.style.getPropertyPriority(property2)}restoreTheme(){const state=this.themeSyncState;if(state)try{if(this.contentDocument?.documentElement!==state.target)return;for(const[className,mutation]of state.classes)state.target.classList.contains(className)===mutation.applied&&state.target.classList.toggle(className,mutation.original);for(const[attribute,mutation]of state.attributes)state.target.getAttribute(attribute)===mutation.applied&&(mutation.original===null?state.target.removeAttribute(attribute):state.target.setAttribute(attribute,mutation.original));for(const[property2,mutation]of state.properties)state.target.style.getPropertyValue(property2)!==mutation.applied||state.target.style.getPropertyPriority(property2)!==mutation.appliedPriority||(mutation.original?state.target.style.setProperty(property2,mutation.original,mutation.originalPriority):state.target.style.removeProperty(property2))}catch{}finally{this.resetThemeSyncState()}}resetThemeSyncState(){this.themeSyncState=void 0,this.syncedThemeClasses.clear(),this.syncedThemeProperties.clear()}renderControls(){return this.withoutControls?nothing:html`<div
2
2
  part="controls"
3
3
  role="group"
4
4
  aria-label=${this.localize("zoomControls")}
@@ -1,8 +1,8 @@
1
- import{type PropertyValues,type TemplateResult}from'lit';import{LyraElement}from'../../../internal/lyra-element.js';import{type LyraSize,type LyraVariant}from'../../../internal/variants.js';
1
+ import{type PropertyValues,type TemplateResult}from'lit';import{LyraElement}from'../../../internal/lyra-element.js';import{type LyraSize}from'../../../internal/variants.js';import{type SemanticVariant}from'../../../internal/semantic-variant.js';
2
2
  /** Shoelace's physical countdown direction. */
3
3
  export type AlertCountdown='rtl'|'ltr'|undefined;
4
- /** Shoelace's alert tones; `primary` resolves through Lyra's shared brand row. */
5
- export type AlertVariant=Exclude<LyraVariant,'brand'> |'primary';export interface LyraAlertEventMap{'lr-show':CustomEvent<null>;'lr-after-show':CustomEvent<null>;'lr-hide':CustomEvent<null>;'lr-after-hide':CustomEvent<null>;}
4
+ /** Alert tones; `primary` and `brand` resolve through Lyra's shared brand row. */
5
+ export type AlertVariant=SemanticVariant;export interface LyraAlertEventMap{'lr-show':CustomEvent<null>;'lr-after-show':CustomEvent<null>;'lr-hide':CustomEvent<null>;'lr-after-hide':CustomEvent<null>;}
6
6
  /**
7
7
  * `<lr-alert>` — a closed-by-default inline alert that can also move into the shared toast stack.
8
8
  * It mirrors the public `<sl-alert>` contract under the `lr-` prefix. `lr-show`/`lr-hide` are
@@ -1,4 +1,4 @@
1
- import{__decorate}from"tslib";import{html,nothing}from"lit";import{property}from"lit/decorators.js";import{closeIcon}from"../../../internal/icons.js";import{applyComposedFocusRepair,captureComposedFocusRepair,nearestExternalFocusTarget}from"../../../internal/focus-navigation.js";import{renderInertPresentation}from"../../../internal/inert-presentation.js";import{LyraElement}from"../../../internal/lyra-element.js";import{tag}from"../../../internal/prefix.js";import{prefersReducedMotion}from"../../../internal/motion.js";import{finiteDuration}from"../../../internal/numbers.js";import{composedContains,deepActiveElement}from"../../../internal/overlay-manager.js";import{SlotPresenceController}from"../../../internal/slot-presence-controller.js";import{literalSetConverter,optionalLiteralSetConverter}from"../../../internal/converters.js";import{normalizeReflectedOptionalSize,optionalSizeConverter}from"../../../internal/variants.js";import{contextualSizes}from"../../../internal/contextual-vocabulary.styles.js";import{variants}from"../../../internal/variants.styles.js";import{getToastRegion}from"../toast/toast-region.js";import{TOAST_REGION_ENQUEUE,TOAST_REGION_EVICT,TOAST_REGION_REJECT,TOAST_REGION_SET_ACTIVE,toastRegionControllerFor}from"../toast/toast-region-protocol.js";import{styles}from"./alert.styles.js";import{LYRA_DEFAULT_close}from"../../../internal/default-strings.generated.js";const ALERT_VARIANT=literalSetConverter(["neutral","primary","success","warning","danger"],"primary"),ALERT_COUNTDOWN=optionalLiteralSetConverter(["rtl","ltr"]);class LyraAlert extends LyraElement{static{this.defaultStrings={...super.defaultStrings,close:LYRA_DEFAULT_close}}static{this.styles=[LyraElement.styles,variants,contextualSizes,styles]}get open(){return this._open}set open(next){this.requestOpenState(!!next)}requestOpenState(normalized){if(normalized===this._open)return!0;if(this.openRequest)return this.openRequest.target===normalized;const repair=normalized?null:captureComposedFocusRepair(this,()=>nearestExternalFocusTarget(this));let request;if(this.hasUpdated){let resolve,reject;const completion=new Promise((resolveCompletion,rejectCompletion)=>{resolve=resolveCompletion,reject=rejectCompletion});if(request={target:normalized,completion,resolve,reject,settled:!1,cancelled:!1},this.openRequest=request,this.transitionPromise=completion,this.emit(normalized?"lr-show":"lr-hide",null,{cancelable:!0}).defaultPrevented)return this.toggleAttribute("open",this._open),this.openRequest===request&&(this.openRequest=void 0),this.cancelTransition(request),!1}this.transitionRequest&&this.cancelTransition(this.transitionRequest);const previous=this._open;return repair&&applyComposedFocusRepair(repair),this._open=normalized,this.requestUpdate("open",previous),request&&(this.openRequest===request&&(this.openRequest=void 0),this.transitionRequest=request,this.runTransition(request)),!0}get size(){return this._size}set size(next){const normalized=normalizeReflectedOptionalSize(this,next),old=this._size;old!==normalized&&(this._size=normalized,this.requestUpdate("size",old))}get countdown(){return this._countdown}set countdown(next){const normalized=ALERT_COUNTDOWN.normalizeReflected(this,"countdown",next),old=this._countdown;old!==normalized&&(this._countdown=normalized,this.requestUpdate("countdown",old))}get variant(){return this._variant}set variant(next){const normalized=ALERT_VARIANT.normalizeReflected(this,"variant",next),old=this._variant;old!==normalized&&(this._variant=normalized,this.requestUpdate("variant",old))}constructor(){super(),this.role="alert",this._open=!1,this.closable=!1,this.duration=1/0,this._variant="primary",this.slotPresence=new SlotPresenceController(this),this.transitionToken=0,this.transitionPromise=Promise.resolve(),this.hovering=!1,this.focused=!1,this.toastConnectionGeneration=0,this.toastLifecycleGeneration=0,this.toastRegionActive=!1,this.toastActivationStarted=!1,this.onPointerEnter=()=>{this.hovering=!0,this.clearAutoHide()},this.onPointerLeave=()=>{this.hovering=!1,this.focused||this.restartAutoHide()},this.onFocusIn=event=>{const previous=event.relatedTarget;previous?.nodeType===1&&!composedContains(this,previous)&&previous.isConnected&&(this.focusReturnTarget=previous);const activeElement=deepActiveElement(this.ownerDocument);this.pendingFocusRepair=activeElement&&typeof activeElement.focus=="function"?captureComposedFocusRepair(this,activeElement)??void 0:void 0,this.focused=!0,this.clearAutoHide()},this.onFocusOut=event=>{const next=event.relatedTarget;if(!(next!==null&&next.nodeType===1&&composedContains(this,next))){if(next===null){const parent=this.parentElement,clearIfStillOwned=()=>{this.isConnected&&this.parentElement===parent&&(this.pendingFocusRepair=void 0)},view=this.ownerDocument.defaultView;view?view.queueMicrotask(clearIfStillOwned):queueMicrotask(clearIfStillOwned)}else{const external=next;external.isConnected&&(this.focusReturnTarget=external),this.pendingFocusRepair=void 0}this.focused=!1,this.hovering||this.restartAutoHide()}},this.close=()=>{this.hide()},this.addEventListener("pointerenter",this.onPointerEnter),this.addEventListener("pointerleave",this.onPointerLeave),this.addEventListener("focusin",event=>this.onFocusIn(event)),this.addEventListener("focusout",event=>this.onFocusOut(event))}connectedCallback(){if(super.connectedCallback(),this.toastConnectionGeneration+=1,this.hasAttribute("role")||this.setAttribute("role","alert"),this.toastPromise){const currentController=toastRegionControllerFor(this);currentController&&currentController!==this.toastRegionOwner&&currentController[TOAST_REGION_ENQUEUE](this);const completion=this.toastPromise,generation=this.toastLifecycleGeneration,owner=this.toastRegionOwner;if(owner&&this.parentElement!==owner){const settleLostOwnership=()=>{this.toastPromise===completion&&this.toastLifecycleGeneration===generation&&this.parentElement!==owner&&this.finishToast()},view=this.ownerDocument.defaultView;view?view.queueMicrotask(settleLostOwnership):queueMicrotask(settleLostOwnership)}if(!this.toastRegionActive)return;this.beginToastActivation()}if(this.transitionRequest){this.runTransition(this.transitionRequest);return}if(!this.hasUpdated||!this.open)return;this.removeAttribute("data-alert-showing"),this.removeAttribute("data-alert-hiding");const ownerDocument=this.ownerDocument;ownerDocument.defaultView?.queueMicrotask(()=>{this.isConnected&&this.ownerDocument===ownerDocument&&this.open&&this.restartAutoHide()})}disconnectedCallback(){const activeElement=deepActiveElement(this.ownerDocument);!this.pendingFocusRepair&&activeElement&&typeof activeElement.focus=="function"&&(this.pendingFocusRepair=captureComposedFocusRepair(this,activeElement)??void 0);const toastConnectionGeneration=++this.toastConnectionGeneration,transitionBelongedToToast=!!this.toastPromise;this.transitionToken++,this.clearAutoHide(),this.removeAttribute("data-alert-showing"),this.removeAttribute("data-alert-hiding"),this.hovering=!1,this.focused=!1;const settleLastingToastDisconnect=()=>{toastConnectionGeneration===this.toastConnectionGeneration&&!this.isConnected&&this.toastPromise&&this.finishToast(),toastConnectionGeneration===this.toastConnectionGeneration&&!this.isConnected&&this.transitionRequest&&(transitionBelongedToToast?this.cancelTransition(this.transitionRequest):this.settleTransitionCompletion(this.transitionRequest))},view=this.ownerDocument.defaultView;view?view.queueMicrotask(settleLastingToastDisconnect):queueMicrotask(settleLastingToastDisconnect),super.disconnectedCallback()}firstUpdated(changed){super.firstUpdated(changed),this.open&&this.restartAutoHide()}updated(changed){super.updated(changed),this.open&&!changed.has("open")&&(changed.has("duration")||changed.has("countdown"))&&this.restartAutoHide()}async show(){this.hasUpdated||await this.updateComplete,this.open||this.requestOpenState(!0),await this.transitionPromise}async hide(){this.hasUpdated||await this.updateComplete,this.open&&this.requestOpenState(!1),await this.transitionPromise}toast(){if(this.toastPromise)return this.toastPromise;let resolveCompletion;const completion=new Promise(resolve=>{resolveCompletion=resolve});this.toastPromise=completion,this.toastResolve=resolveCompletion,this.toastLifecycleGeneration+=1,this.toastActivationStarted=!1;const onAfterHide=()=>{this.toastRegionOwner&&this.parentElement===this.toastRegionOwner&&this.remove(),this.finishToast()};this.toastAfterHide=onAfterHide,this.addEventListener("lr-after-hide",onAfterHide,{once:!0});const enqueue=()=>{if(this.toastPromise!==completion)return;const region=getToastRegion(void 0,this.ownerDocument),controller=region;typeof controller[TOAST_REGION_ENQUEUE]=="function"?controller[TOAST_REGION_ENQUEUE](this):(region.childElementCount===0&&region.remove(),this.remove(),this.finishToast())};return this.ownerDocument.defaultView?.customElements.get(tag("toast"))?enqueue():import("../toast/toast.js").then(enqueue,enqueue),completion}[TOAST_REGION_SET_ACTIVE](owner,active){if(this.parentElement!==owner)return;let resolvedFocusTarget;const focusTarget=()=>(resolvedFocusTarget!==void 0||(resolvedFocusTarget=this.focusReturnTarget?.isConnected&&!composedContains(this,this.focusReturnTarget)?this.focusReturnTarget:nearestExternalFocusTarget(this)),resolvedFocusTarget),focusRepair=active?this.pendingFocusRepair:this.pendingFocusRepair??captureComposedFocusRepair(this,focusTarget),returnFocusTarget=!active&&focusRepair?focusTarget():null;this.toastRegionOwner=owner,this.toastRegionActive=active,this.toggleAttribute("data-toast-queued",!active);const base=this.base;base&&(base.hidden=!active,base.inert=!active),this.requestUpdate(),active?(focusRepair&&applyComposedFocusRepair(focusRepair),this.pendingFocusRepair=void 0,this.transitionRequest&&this.runTransition(this.transitionRequest),this.beginToastActivation()):(this.transitionToken+=1,focusRepair&&applyComposedFocusRepair(focusRepair,returnFocusTarget),this.pendingFocusRepair=void 0,this.clearAutoHide())}[TOAST_REGION_EVICT](owner,_reason){this.toastRegionOwner===owner&&(this.toastRegionOwner=void 0,this.toastRegionActive=!1,this.removeAttribute("data-toast-queued"),this.parentElement===owner&&this.remove(),this.finishToast())}beginToastActivation(){const completion=this.toastPromise,owner=this.toastRegionOwner;if(!completion||!owner||!this.toastRegionActive||this.toastActivationStarted)return;this.toastActivationStarted=!0;const generation=this.toastLifecycleGeneration;this.updateComplete.then(()=>{if(this.toastPromise!==completion||this.toastLifecycleGeneration!==generation||this.toastRegionOwner!==owner||!this.toastRegionActive||!this.isConnected||this.parentElement!==owner)return;if(this.open){this.restartAutoHide();return}if(!this.requestOpenState(!0))if(this.toastPromise===completion&&this.toastLifecycleGeneration===generation&&this.toastRegionOwner===owner&&this.parentElement===owner){const controller=owner;typeof controller[TOAST_REGION_REJECT]=="function"?controller[TOAST_REGION_REJECT](this):(this.parentElement===owner&&this.remove(),this.finishToast())}else this.toastPromise===completion&&this.finishToast()})}finishToast(){this.toastAfterHide&&this.removeEventListener("lr-after-hide",this.toastAfterHide);const resolve=this.toastResolve;if(this.toastAfterHide=void 0,this.toastResolve=void 0,this.toastPromise=void 0,this.toastRegionOwner=void 0,this.toastRegionActive=!1,this.toastActivationStarted=!1,this.toastLifecycleGeneration+=1,this.removeAttribute("data-toast-queued"),this.requestUpdate(),this.isConnected){const base=this.base;base&&(base.hidden=!1,base.inert=!1),this.pendingFocusRepair&&(applyComposedFocusRepair(this.pendingFocusRepair),this.pendingFocusRepair=void 0)}resolve?.()}settleTransitionCompletion(request){request.settled||(request.settled=!0,request.resolve())}cancelTransition(request){request.cancelled=!0,this.transitionRequest===request&&(this.transitionRequest=void 0),this.openRequest===request&&(this.openRequest=void 0),this.settleTransitionCompletion(request)}finishTransition(request){request.cancelled||(this.transitionRequest===request&&(this.transitionRequest=void 0),this.openRequest===request&&(this.openRequest=void 0),this.settleTransitionCompletion(request))}async runTransition(request){if(request.cancelled||this.transitionRequest!==request||this.toastPromise&&!this.toastRegionActive)return;const opening=request.target,token=++this.transitionToken;if(this.clearAutoHide(),opening)this.removeAttribute("data-alert-hiding"),this.setAttribute("data-alert-showing","");else{const base2=this.base;base2&&base2.offsetWidth,this.removeAttribute("data-alert-showing"),this.setAttribute("data-alert-hiding","")}if(await this.updateComplete,!this.isConnected||token!==this.transitionToken||this.transitionRequest!==request)return;const base=this.base;if(opening){if(base&&base.offsetWidth,await this.nextFrame(),!this.isConnected||token!==this.transitionToken||this.transitionRequest!==request)return;this.removeAttribute("data-alert-showing")}await this.waitForMotion(base),!(!this.isConnected||token!==this.transitionToken||this.transitionRequest!==request)&&(opening?(this.emit("lr-after-show"),this.restartAutoHide()):(this.removeAttribute("data-alert-hiding"),this.emit("lr-after-hide")),this.finishTransition(request))}get base(){return this.shadowRoot?.querySelector('[part="base"]')??null}nextFrame(){const view=this.ownerDocument.defaultView;return!view||prefersReducedMotion(this)?Promise.resolve():new Promise(resolve=>view.requestAnimationFrame(()=>resolve()))}async waitForMotion(base){const view=this.ownerDocument.defaultView;if(!base||!view||prefersReducedMotion(this))return;view.getComputedStyle(base).opacity;const animations=base.getAnimations({subtree:!0});await Promise.all(animations.map(animation=>animation.finished.catch(()=>{})))}get safeDuration(){return this.duration===1/0?1/0:finiteDuration(this.duration,0,0)}clearAutoHide(){this.timer!==void 0&&this.timerOwner?.clearTimeout(this.timer),this.timer=void 0,this.timerOwner=void 0,this.countdownAnimation?.cancel(),this.countdownAnimation=void 0}restartAutoHide(){if(this.clearAutoHide(),this.toastPromise&&!this.toastRegionActive||!this.open||this.hovering||this.focused)return;const duration=this.safeDuration;if(duration===1/0)return;if(duration<=0){const ownerDocument=this.ownerDocument;ownerDocument.defaultView?.queueMicrotask(()=>{this.isConnected&&this.ownerDocument===ownerDocument&&this.open&&!this.hovering&&!this.focused&&this.hide()});return}const view=this.ownerDocument.defaultView;view&&(this.timerOwner=view,this.timer=view.setTimeout(()=>{this.timer=void 0,this.timerOwner=void 0,this.hide()},duration),this.startCountdown(duration))}startCountdown(duration){if(prefersReducedMotion(this)||this.countdown!=="ltr"&&this.countdown!=="rtl")return;const indicator=this.shadowRoot?.querySelector(".countdown");indicator&&(this.countdownAnimation=indicator.animate([{transform:"scaleX(1)"},{transform:"scaleX(0)"}],{duration,easing:"linear",fill:"forwards"}))}render(){const hasCountdown=this.countdown==="ltr"||this.countdown==="rtl",countdownOrigin=this.countdown==="rtl"?"right center":"left center";return html`
1
+ import{__decorate}from"tslib";import{html,nothing}from"lit";import{property}from"lit/decorators.js";import{closeIcon}from"../../../internal/icons.js";import{applyComposedFocusRepair,captureComposedFocusRepair,nearestExternalFocusTarget}from"../../../internal/focus-navigation.js";import{renderInertPresentation}from"../../../internal/inert-presentation.js";import{LyraElement}from"../../../internal/lyra-element.js";import{tag}from"../../../internal/prefix.js";import{prefersReducedMotion}from"../../../internal/motion.js";import{finiteDuration}from"../../../internal/numbers.js";import{composedContains,deepActiveElement}from"../../../internal/overlay-manager.js";import{SlotPresenceController}from"../../../internal/slot-presence-controller.js";import{optionalLiteralSetConverter}from"../../../internal/converters.js";import{normalizeReflectedOptionalSize,optionalSizeConverter}from"../../../internal/variants.js";import{contextualSizes}from"../../../internal/contextual-vocabulary.styles.js";import{semanticVariantConverter}from"../../../internal/semantic-variant.js";import{variants}from"../../../internal/variants.styles.js";import{getToastRegion}from"../toast/toast-region.js";import{TOAST_REGION_ENQUEUE,TOAST_REGION_EVICT,TOAST_REGION_REJECT,TOAST_REGION_SET_ACTIVE,toastRegionControllerFor}from"../toast/toast-region-protocol.js";import{styles}from"./alert.styles.js";import{LYRA_DEFAULT_close}from"../../../internal/default-strings/shared.generated.js";const ALERT_VARIANT=semanticVariantConverter("primary"),ALERT_COUNTDOWN=optionalLiteralSetConverter(["rtl","ltr"]);class LyraAlert extends LyraElement{static{this.defaultStrings={...super.defaultStrings,close:LYRA_DEFAULT_close}}static{this.styles=[LyraElement.styles,variants,contextualSizes,styles]}get open(){return this._open}set open(next){this.requestOpenState(!!next)}requestOpenState(normalized){if(normalized===this._open)return!0;if(this.openRequest)return this.openRequest.target===normalized;const repair=normalized?null:captureComposedFocusRepair(this,()=>nearestExternalFocusTarget(this));let request;if(this.hasUpdated){let resolve,reject;const completion=new Promise((resolveCompletion,rejectCompletion)=>{resolve=resolveCompletion,reject=rejectCompletion});if(request={target:normalized,completion,resolve,reject,settled:!1,cancelled:!1},this.openRequest=request,this.transitionPromise=completion,this.emit(normalized?"lr-show":"lr-hide",null,{cancelable:!0}).defaultPrevented)return this.toggleAttribute("open",this._open),this.openRequest===request&&(this.openRequest=void 0),this.cancelTransition(request),!1}this.transitionRequest&&this.cancelTransition(this.transitionRequest);const previous=this._open;return repair&&applyComposedFocusRepair(repair),this._open=normalized,this.requestUpdate("open",previous),request&&(this.openRequest===request&&(this.openRequest=void 0),this.transitionRequest=request,this.runTransition(request)),!0}get size(){return this._size}set size(next){const normalized=normalizeReflectedOptionalSize(this,next),old=this._size;old!==normalized&&(this._size=normalized,this.requestUpdate("size",old))}get countdown(){return this._countdown}set countdown(next){const normalized=ALERT_COUNTDOWN.normalizeReflected(this,"countdown",next),old=this._countdown;old!==normalized&&(this._countdown=normalized,this.requestUpdate("countdown",old))}get variant(){return this._variant}set variant(next){const normalized=ALERT_VARIANT.normalizeReflected(this,"variant",next),old=this._variant;old!==normalized&&(this._variant=normalized,this.requestUpdate("variant",old))}constructor(){super(),this.role="alert",this._open=!1,this.closable=!1,this.duration=1/0,this._variant="primary",this.slotPresence=new SlotPresenceController(this),this.transitionToken=0,this.transitionPromise=Promise.resolve(),this.hovering=!1,this.focused=!1,this.toastConnectionGeneration=0,this.toastLifecycleGeneration=0,this.toastRegionActive=!1,this.toastActivationStarted=!1,this.onPointerEnter=()=>{this.hovering=!0,this.clearAutoHide()},this.onPointerLeave=()=>{this.hovering=!1,this.focused||this.restartAutoHide()},this.onFocusIn=event=>{const previous=event.relatedTarget;previous?.nodeType===1&&!composedContains(this,previous)&&previous.isConnected&&(this.focusReturnTarget=previous);const activeElement=deepActiveElement(this.ownerDocument);this.pendingFocusRepair=activeElement&&typeof activeElement.focus=="function"?captureComposedFocusRepair(this,activeElement)??void 0:void 0,this.focused=!0,this.clearAutoHide()},this.onFocusOut=event=>{const next=event.relatedTarget;if(!(next!==null&&next.nodeType===1&&composedContains(this,next))){if(next===null){const parent=this.parentElement,clearIfStillOwned=()=>{this.isConnected&&this.parentElement===parent&&(this.pendingFocusRepair=void 0)},view=this.ownerDocument.defaultView;view?view.queueMicrotask(clearIfStillOwned):queueMicrotask(clearIfStillOwned)}else{const external=next;external.isConnected&&(this.focusReturnTarget=external),this.pendingFocusRepair=void 0}this.focused=!1,this.hovering||this.restartAutoHide()}},this.close=()=>{this.hide()},this.addEventListener("pointerenter",this.onPointerEnter),this.addEventListener("pointerleave",this.onPointerLeave),this.addEventListener("focusin",event=>this.onFocusIn(event)),this.addEventListener("focusout",event=>this.onFocusOut(event))}connectedCallback(){if(super.connectedCallback(),this.toastConnectionGeneration+=1,this.hasAttribute("role")||this.setAttribute("role","alert"),this.toastPromise){const currentController=toastRegionControllerFor(this);currentController&&currentController!==this.toastRegionOwner&&currentController[TOAST_REGION_ENQUEUE](this);const completion=this.toastPromise,generation=this.toastLifecycleGeneration,owner=this.toastRegionOwner;if(owner&&this.parentElement!==owner){const settleLostOwnership=()=>{this.toastPromise===completion&&this.toastLifecycleGeneration===generation&&this.parentElement!==owner&&this.finishToast()},view=this.ownerDocument.defaultView;view?view.queueMicrotask(settleLostOwnership):queueMicrotask(settleLostOwnership)}if(!this.toastRegionActive)return;this.beginToastActivation()}if(this.transitionRequest){this.runTransition(this.transitionRequest);return}if(!this.hasUpdated||!this.open)return;this.removeAttribute("data-alert-showing"),this.removeAttribute("data-alert-hiding");const ownerDocument=this.ownerDocument;ownerDocument.defaultView?.queueMicrotask(()=>{this.isConnected&&this.ownerDocument===ownerDocument&&this.open&&this.restartAutoHide()})}disconnectedCallback(){const activeElement=deepActiveElement(this.ownerDocument);!this.pendingFocusRepair&&activeElement&&typeof activeElement.focus=="function"&&(this.pendingFocusRepair=captureComposedFocusRepair(this,activeElement)??void 0);const toastConnectionGeneration=++this.toastConnectionGeneration,transitionBelongedToToast=!!this.toastPromise;this.transitionToken++,this.clearAutoHide(),this.removeAttribute("data-alert-showing"),this.removeAttribute("data-alert-hiding"),this.hovering=!1,this.focused=!1;const settleLastingToastDisconnect=()=>{toastConnectionGeneration===this.toastConnectionGeneration&&!this.isConnected&&this.toastPromise&&this.finishToast(),toastConnectionGeneration===this.toastConnectionGeneration&&!this.isConnected&&this.transitionRequest&&(transitionBelongedToToast?this.cancelTransition(this.transitionRequest):this.settleTransitionCompletion(this.transitionRequest))},view=this.ownerDocument.defaultView;view?view.queueMicrotask(settleLastingToastDisconnect):queueMicrotask(settleLastingToastDisconnect),super.disconnectedCallback()}firstUpdated(changed){super.firstUpdated(changed),this.open&&this.restartAutoHide()}updated(changed){super.updated(changed),this.open&&!changed.has("open")&&(changed.has("duration")||changed.has("countdown"))&&this.restartAutoHide()}async show(){this.hasUpdated||await this.updateComplete,this.open||this.requestOpenState(!0),await this.transitionPromise}async hide(){this.hasUpdated||await this.updateComplete,this.open&&this.requestOpenState(!1),await this.transitionPromise}toast(){if(this.toastPromise)return this.toastPromise;let resolveCompletion;const completion=new Promise(resolve=>{resolveCompletion=resolve});this.toastPromise=completion,this.toastResolve=resolveCompletion,this.toastLifecycleGeneration+=1,this.toastActivationStarted=!1;const onAfterHide=()=>{this.toastRegionOwner&&this.parentElement===this.toastRegionOwner&&this.remove(),this.finishToast()};this.toastAfterHide=onAfterHide,this.addEventListener("lr-after-hide",onAfterHide,{once:!0});const enqueue=()=>{if(this.toastPromise!==completion)return;const region=getToastRegion(void 0,this.ownerDocument),controller=region;typeof controller[TOAST_REGION_ENQUEUE]=="function"?controller[TOAST_REGION_ENQUEUE](this):(region.childElementCount===0&&region.remove(),this.remove(),this.finishToast())};return this.ownerDocument.defaultView?.customElements.get(tag("toast"))?enqueue():import("../toast/toast.js").then(enqueue,enqueue),completion}[TOAST_REGION_SET_ACTIVE](owner,active){if(this.parentElement!==owner)return;let resolvedFocusTarget;const focusTarget=()=>(resolvedFocusTarget!==void 0||(resolvedFocusTarget=this.focusReturnTarget?.isConnected&&!composedContains(this,this.focusReturnTarget)?this.focusReturnTarget:nearestExternalFocusTarget(this)),resolvedFocusTarget),focusRepair=active?this.pendingFocusRepair:this.pendingFocusRepair??captureComposedFocusRepair(this,focusTarget),returnFocusTarget=!active&&focusRepair?focusTarget():null;this.toastRegionOwner=owner,this.toastRegionActive=active,this.toggleAttribute("data-toast-queued",!active);const base=this.base;base&&(base.hidden=!active,base.inert=!active),this.requestUpdate(),active?(focusRepair&&applyComposedFocusRepair(focusRepair),this.pendingFocusRepair=void 0,this.transitionRequest&&this.runTransition(this.transitionRequest),this.beginToastActivation()):(this.transitionToken+=1,focusRepair&&applyComposedFocusRepair(focusRepair,returnFocusTarget),this.pendingFocusRepair=void 0,this.clearAutoHide())}[TOAST_REGION_EVICT](owner,_reason){this.toastRegionOwner===owner&&(this.toastRegionOwner=void 0,this.toastRegionActive=!1,this.removeAttribute("data-toast-queued"),this.parentElement===owner&&this.remove(),this.finishToast())}beginToastActivation(){const completion=this.toastPromise,owner=this.toastRegionOwner;if(!completion||!owner||!this.toastRegionActive||this.toastActivationStarted)return;this.toastActivationStarted=!0;const generation=this.toastLifecycleGeneration;this.updateComplete.then(()=>{if(this.toastPromise!==completion||this.toastLifecycleGeneration!==generation||this.toastRegionOwner!==owner||!this.toastRegionActive||!this.isConnected||this.parentElement!==owner)return;if(this.open){this.restartAutoHide();return}if(!this.requestOpenState(!0))if(this.toastPromise===completion&&this.toastLifecycleGeneration===generation&&this.toastRegionOwner===owner&&this.parentElement===owner){const controller=owner;typeof controller[TOAST_REGION_REJECT]=="function"?controller[TOAST_REGION_REJECT](this):(this.parentElement===owner&&this.remove(),this.finishToast())}else this.toastPromise===completion&&this.finishToast()})}finishToast(){this.toastAfterHide&&this.removeEventListener("lr-after-hide",this.toastAfterHide);const resolve=this.toastResolve;if(this.toastAfterHide=void 0,this.toastResolve=void 0,this.toastPromise=void 0,this.toastRegionOwner=void 0,this.toastRegionActive=!1,this.toastActivationStarted=!1,this.toastLifecycleGeneration+=1,this.removeAttribute("data-toast-queued"),this.requestUpdate(),this.isConnected){const base=this.base;base&&(base.hidden=!1,base.inert=!1),this.pendingFocusRepair&&(applyComposedFocusRepair(this.pendingFocusRepair),this.pendingFocusRepair=void 0)}resolve?.()}settleTransitionCompletion(request){request.settled||(request.settled=!0,request.resolve())}cancelTransition(request){request.cancelled=!0,this.transitionRequest===request&&(this.transitionRequest=void 0),this.openRequest===request&&(this.openRequest=void 0),this.settleTransitionCompletion(request)}finishTransition(request){request.cancelled||(this.transitionRequest===request&&(this.transitionRequest=void 0),this.openRequest===request&&(this.openRequest=void 0),this.settleTransitionCompletion(request))}async runTransition(request){if(request.cancelled||this.transitionRequest!==request||this.toastPromise&&!this.toastRegionActive)return;const opening=request.target,token=++this.transitionToken;if(this.clearAutoHide(),opening)this.removeAttribute("data-alert-hiding"),this.setAttribute("data-alert-showing","");else{const base2=this.base;base2&&base2.offsetWidth,this.removeAttribute("data-alert-showing"),this.setAttribute("data-alert-hiding","")}if(await this.updateComplete,!this.isConnected||token!==this.transitionToken||this.transitionRequest!==request)return;const base=this.base;if(opening){if(base&&base.offsetWidth,await this.nextFrame(),!this.isConnected||token!==this.transitionToken||this.transitionRequest!==request)return;this.removeAttribute("data-alert-showing")}await this.waitForMotion(base),!(!this.isConnected||token!==this.transitionToken||this.transitionRequest!==request)&&(opening?(this.emit("lr-after-show"),this.restartAutoHide()):(this.removeAttribute("data-alert-hiding"),this.emit("lr-after-hide")),this.finishTransition(request))}get base(){return this.shadowRoot?.querySelector('[part="base"]')??null}nextFrame(){const view=this.ownerDocument.defaultView;return!view||prefersReducedMotion(this)?Promise.resolve():new Promise(resolve=>view.requestAnimationFrame(()=>resolve()))}async waitForMotion(base){const view=this.ownerDocument.defaultView;if(!base||!view||prefersReducedMotion(this))return;view.getComputedStyle(base).opacity;const animations=base.getAnimations({subtree:!0});await Promise.all(animations.map(animation=>animation.finished.catch(()=>{})))}get safeDuration(){return this.duration===1/0?1/0:finiteDuration(this.duration,0,0)}clearAutoHide(){this.timer!==void 0&&this.timerOwner?.clearTimeout(this.timer),this.timer=void 0,this.timerOwner=void 0,this.countdownAnimation?.cancel(),this.countdownAnimation=void 0}restartAutoHide(){if(this.clearAutoHide(),this.toastPromise&&!this.toastRegionActive||!this.open||this.hovering||this.focused)return;const duration=this.safeDuration;if(duration===1/0)return;if(duration<=0){const ownerDocument=this.ownerDocument;ownerDocument.defaultView?.queueMicrotask(()=>{this.isConnected&&this.ownerDocument===ownerDocument&&this.open&&!this.hovering&&!this.focused&&this.hide()});return}const view=this.ownerDocument.defaultView;view&&(this.timerOwner=view,this.timer=view.setTimeout(()=>{this.timer=void 0,this.timerOwner=void 0,this.hide()},duration),this.startCountdown(duration))}startCountdown(duration){if(prefersReducedMotion(this)||this.countdown!=="ltr"&&this.countdown!=="rtl")return;const indicator=this.shadowRoot?.querySelector(".countdown");indicator&&(this.countdownAnimation=indicator.animate([{transform:"scaleX(1)"},{transform:"scaleX(0)"}],{duration,easing:"linear",fill:"forwards"}))}render(){const hasCountdown=this.countdown==="ltr"||this.countdown==="rtl",countdownOrigin=this.countdown==="rtl"?"right center":"left center";return html`
2
2
  <div
3
3
  part="base"
4
4
  ?hidden=${!!(this.toastPromise&&!this.toastRegionActive)}
@@ -1,6 +1,6 @@
1
- import{type PropertyValues,type TemplateResult}from'lit';import{LyraElement,type LyraEventMap}from'../../../internal/lyra-element.js';import{type LyraAppearance,type LyraSize,type LyraSizeStep,type LyraVariant}from'../../../internal/variants.js';
1
+ import{type PropertyValues,type TemplateResult}from'lit';import{LyraElement,type LyraEventMap}from'../../../internal/lyra-element.js';import{type LyraAppearance,type LyraSize,type LyraSizeStep,type LyraVariant}from'../../../internal/variants.js';import{type SemanticVariant}from'../../../internal/semantic-variant.js';
2
2
  /** The library's semantic-tone vocabulary plus Shoelace's spelling for the brand tone. */
3
- export type BadgeVariant=LyraVariant|'primary';
3
+ export type BadgeVariant=SemanticVariant;
4
4
  /** The library's one size ladder, including both upstream long-form spellings. */
5
5
  export type BadgeSize=LyraSize;
6
6
  /** Visual treatment of a labelled surface: how much of the variant palette is spent on fill,
@@ -1,4 +1,4 @@
1
- import{__decorate}from"tslib";import{html,nothing}from"lit";import{property}from"lit/decorators.js";import{LyraElement}from"../../../internal/lyra-element.js";import{normalizeSize}from"../../../internal/variants.js";import{variants}from"../../../internal/variants.styles.js";import{SlotPresenceController}from"../../../internal/slot-presence-controller.js";import{styles}from"./badge.styles.js";class LyraBadge extends LyraElement{constructor(){super(...arguments),this.variant="neutral",this.size="m",this.appearance="filled-outlined",this.pill=!1,this.attention="none",this.pulse=!1,this.slotPresence=new SlotPresenceController(this)}static{this.styles=[LyraElement.styles,variants,styles]}get effectiveVariant(){const value=this.variant;return value==="primary"?"brand":["neutral","brand","success","warning","danger"].includes(value)?value:"neutral"}get effectiveSize(){const value=this.size;return["2xs","xs","s","m","l","xl","small","medium","large"].includes(value)?normalizeSize(value):"m"}willUpdate(changed){super.willUpdate(changed),this.setAttribute("data-effective-variant",this.effectiveVariant),this.setAttribute("data-effective-size",this.effectiveSize)}renderTrailing(){return nothing}render(){return html`<span part="base badge">
1
+ import{__decorate}from"tslib";import{html,nothing}from"lit";import{property}from"lit/decorators.js";import{LyraElement}from"../../../internal/lyra-element.js";import{normalizeSize}from"../../../internal/variants.js";import{effectiveSemanticVariant}from"../../../internal/semantic-variant.js";import{variants}from"../../../internal/variants.styles.js";import{SlotPresenceController}from"../../../internal/slot-presence-controller.js";import{styles}from"./badge.styles.js";class LyraBadge extends LyraElement{constructor(){super(...arguments),this.variant="neutral",this.size="m",this.appearance="filled-outlined",this.pill=!1,this.attention="none",this.pulse=!1,this.slotPresence=new SlotPresenceController(this)}static{this.styles=[LyraElement.styles,variants,styles]}get effectiveVariant(){return effectiveSemanticVariant(this.variant)}get effectiveSize(){const value=this.size;return["2xs","xs","s","m","l","xl","small","medium","large"].includes(value)?normalizeSize(value):"m"}willUpdate(changed){super.willUpdate(changed),this.setAttribute("data-effective-variant",this.effectiveVariant),this.setAttribute("data-effective-size",this.effectiveSize)}renderTrailing(){return nothing}render(){return html`<span part="base badge">
2
2
  <span part="start" ?hidden=${!this.slotPresence.has("start")}>
3
3
  <slot name="start"></slot>
4
4
  </span>
@@ -37,7 +37,9 @@ export type TagVariant=BadgeVariant|'text';
37
37
  export declare class LyraTag extends LyraBadge<LyraTagEventMap,TagVariant>{static styles:import("lit").CSSResultGroup[];static properties:{withRemove:{attribute:string;type:BooleanConstructor;noAccessor:boolean;};removable:{attribute:string;type:BooleanConstructor;noAccessor:boolean;};};protected get effectiveVariant():LyraVariant;
38
38
  /** Opaque consumer bookkeeping value, echoed verbatim in `lr-remove`'s detail (`undefined` when
39
39
  * never set) -- never read, validated or rendered by the tag itself. */
40
- value?:string;private removeEnabled;private changingRemoveAliasAttribute;
40
+ value?:string;
41
+ /** Disables the remove button and suppresses `lr-remove`; a plain tag has no action to gate. */
42
+ disabled:boolean;private removeEnabled;private changingRemoveAliasAttribute;
41
43
  /** Renders the remove affordance. Either mirrored attribute enables the shared state; assigning
42
44
  * false through either property clears both attributes so the write reads back truthfully. */
43
45
  get withRemove():boolean;set withRemove(next:boolean);