@aceshooting/lyra-ui 19.0.1 → 20.0.1

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 (418) hide show
  1. package/CHANGELOG.md +159 -0
  2. package/custom-elements.json +1 -1
  3. package/dist/cli/migration-contract.json +1 -1
  4. package/dist/components/agent-tools/activity-feed/activity-feed.class.d.ts +14 -4
  5. package/dist/components/agent-tools/activity-feed/activity-feed.styles.js +1 -1
  6. package/dist/components/agent-tools/approval-queue/approval-queue.class.d.ts +1 -0
  7. package/dist/components/agent-tools/approval-queue/approval-queue.class.js +4 -3
  8. package/dist/components/agent-tools/approval-queue/approval-queue.styles.js +1 -1
  9. package/dist/components/agent-tools/artifact-panel/artifact-panel.class.d.ts +3 -1
  10. package/dist/components/agent-tools/context-inspector/context-inspector.class.d.ts +1 -0
  11. package/dist/components/agent-tools/context-inspector/context-inspector.class.js +4 -3
  12. package/dist/components/agent-tools/context-inspector/context-inspector.styles.js +1 -1
  13. package/dist/components/agent-tools/eval-dataset/eval-dataset.class.js +1 -1
  14. package/dist/components/agent-tools/eval-result/eval-result.class.js +1 -1
  15. package/dist/components/agent-tools/evaluation-run/evaluation-run.class.d.ts +1 -0
  16. package/dist/components/agent-tools/evaluation-run/evaluation-run.class.js +4 -3
  17. package/dist/components/agent-tools/evaluation-run/evaluation-run.styles.js +1 -1
  18. package/dist/components/agent-tools/policy-summary/policy-summary.class.d.ts +1 -0
  19. package/dist/components/agent-tools/policy-summary/policy-summary.class.js +4 -3
  20. package/dist/components/agent-tools/policy-summary/policy-summary.styles.js +1 -1
  21. package/dist/components/agent-tools/prompt-studio/prompt-studio.class.js +1 -1
  22. package/dist/components/agent-tools/schema-viewer/schema-viewer.class.d.ts +10 -1
  23. package/dist/components/agent-tools/schema-viewer/schema-viewer.class.js +3 -3
  24. package/dist/components/agent-tools/subagent-panel/subagent-panel.class.js +1 -1
  25. package/dist/components/agent-tools/thinking-panel/thinking-panel.class.d.ts +6 -3
  26. package/dist/components/agent-tools/thinking-panel/thinking-panel.styles.js +1 -1
  27. package/dist/components/agent-tools/tool-call-chip/tool-call-chip.class.d.ts +14 -3
  28. package/dist/components/agent-tools/tool-call-chip/tool-call-chip.class.js +2 -2
  29. package/dist/components/agent-tools/tool-param-form/tool-param-form.class.d.ts +12 -2
  30. package/dist/components/agent-tools/tool-param-form/tool-param-form.class.js +3 -1
  31. package/dist/components/charts/chart/box-plot.class.d.ts +15 -3
  32. package/dist/components/charts/chart/box-plot.class.js +3 -3
  33. package/dist/components/charts/chart/box-plot.styles.js +1 -1
  34. package/dist/components/charts/chart/chart.class.d.ts +23 -5
  35. package/dist/components/charts/chart/chart.class.js +2 -2
  36. package/dist/components/charts/chart/chart.styles.js +1 -1
  37. package/dist/components/charts/chart/lite-chart.class.js +1 -1
  38. package/dist/components/charts/chart/lite-chart.styles.js +1 -1
  39. package/dist/components/conversation/audio-visualizer/audio-visualizer.class.d.ts +4 -2
  40. package/dist/components/conversation/audio-visualizer/audio-visualizer.class.js +1 -1
  41. package/dist/components/conversation/branch-picker/branch-picker.class.d.ts +4 -2
  42. package/dist/components/conversation/branch-picker/branch-picker.class.js +1 -1
  43. package/dist/components/conversation/chat-viewport/chat-viewport.class.d.ts +4 -3
  44. package/dist/components/conversation/chat-viewport/chat-viewport.class.js +1 -1
  45. package/dist/components/conversation/code-block/code-block-core.class.d.ts +6 -11
  46. package/dist/components/conversation/code-block/code-block-core.class.js +1 -1
  47. package/dist/components/conversation/code-block/code-block-shared.d.ts +29 -1
  48. package/dist/components/conversation/code-block/code-block-shared.js +1 -1
  49. package/dist/components/conversation/code-block/code-block.class.d.ts +6 -11
  50. package/dist/components/conversation/code-block/code-block.class.js +1 -1
  51. package/dist/components/conversation/markdown/markdown-shared.js +2 -2
  52. package/dist/components/conversation/message-actions/message-actions.class.d.ts +4 -2
  53. package/dist/components/conversation/message-actions/message-actions.class.js +2 -2
  54. package/dist/components/conversation/message-parts/message-parts.class.d.ts +17 -2
  55. package/dist/components/conversation/model-select/model-select.class.js +1 -0
  56. package/dist/components/conversation/model-select/model-select.styles.js +1 -1
  57. package/dist/components/conversation/prompt-input/prompt-input.class.d.ts +5 -1
  58. package/dist/components/conversation/prompt-input/prompt-input.class.js +2 -2
  59. package/dist/components/conversation/prompt-queue/prompt-queue.class.d.ts +6 -1
  60. package/dist/components/conversation/prompt-queue/prompt-queue.class.js +2 -2
  61. package/dist/components/conversation/realtime-session/realtime-session.class.d.ts +5 -1
  62. package/dist/components/conversation/realtime-session/realtime-session.class.js +1 -1
  63. package/dist/components/conversation/selection-toolbar/selection-toolbar.class.d.ts +5 -1
  64. package/dist/components/conversation/selection-toolbar/selection-toolbar.class.js +1 -1
  65. package/dist/components/conversation/voice-picker/voice-picker.class.d.ts +13 -2
  66. package/dist/components/conversation/voice-picker/voice-picker.class.js +5 -3
  67. package/dist/components/conversation/voice-picker/voice-picker.styles.js +1 -1
  68. package/dist/components/data/calendar/calendar.class.d.ts +9 -0
  69. package/dist/components/data/calendar/calendar.class.js +2 -2
  70. package/dist/components/data/calendar/calendar.styles.js +1 -1
  71. package/dist/components/data/condition-builder/condition-builder.class.d.ts +5 -1
  72. package/dist/components/data/context-meter/context-meter.class.d.ts +4 -0
  73. package/dist/components/data/context-meter/context-meter.styles.js +1 -1
  74. package/dist/components/data/data-grid/data-grid.class.d.ts +8 -2
  75. package/dist/components/data/data-grid/data-grid.class.js +1 -2
  76. package/dist/components/data/flow-node/flow-node.class.d.ts +7 -4
  77. package/dist/components/data/flow-node/flow-node.styles.js +1 -1
  78. package/dist/components/data/funnel/funnel.class.d.ts +5 -0
  79. package/dist/components/data/funnel/funnel.class.js +4 -3
  80. package/dist/components/data/funnel/funnel.styles.js +1 -1
  81. package/dist/components/data/gauge/gauge.class.d.ts +12 -1
  82. package/dist/components/data/gauge/gauge.styles.js +1 -1
  83. package/dist/components/data/graph-query-builder/graph-query-builder.class.d.ts +50 -13
  84. package/dist/components/data/graph-query-builder/graph-query-builder.class.js +2 -2
  85. package/dist/components/data/graph-query-builder/graph-query-builder.styles.js +1 -1
  86. package/dist/components/data/heatmap/heatmap.class.d.ts +27 -9
  87. package/dist/components/data/heatmap/heatmap.class.js +5 -3
  88. package/dist/components/data/sequence-strip/sequence-strip.class.d.ts +2 -0
  89. package/dist/components/data/sequence-strip/sequence-strip.styles.js +1 -1
  90. package/dist/components/data/table/table.class.d.ts +8 -0
  91. package/dist/components/data/table/table.class.js +2 -1
  92. package/dist/components/data/tree/tree.class.d.ts +20 -1
  93. package/dist/components/data/tree/tree.class.js +1 -1
  94. package/dist/components/data/word-cloud/word-cloud.class.d.ts +4 -1
  95. package/dist/components/data/word-cloud/word-cloud.class.js +2 -2
  96. package/dist/components/forms/button/button.class.js +1 -1
  97. package/dist/components/forms/checkbox/checkbox.class.d.ts +11 -8
  98. package/dist/components/forms/checkbox/checkbox.class.js +1 -1
  99. package/dist/components/forms/checkbox/checkbox.styles.js +1 -1
  100. package/dist/components/forms/checkbox-group/checkbox-group.class.d.ts +2 -2
  101. package/dist/components/forms/checkbox-group/checkbox-group.class.js +1 -1
  102. package/dist/components/forms/code-editor/code-editor.class.d.ts +2 -0
  103. package/dist/components/forms/code-editor/code-editor.class.js +1 -1
  104. package/dist/components/forms/code-editor/code-editor.styles.js +1 -1
  105. package/dist/components/forms/color-picker/color-picker.class.d.ts +11 -1
  106. package/dist/components/forms/color-picker/color-picker.class.js +4 -3
  107. package/dist/components/forms/combobox/combobox.class.d.ts +67 -18
  108. package/dist/components/forms/combobox/combobox.class.js +7 -6
  109. package/dist/components/forms/combobox/combobox.styles.js +1 -1
  110. package/dist/components/forms/date-picker/date-input.class.d.ts +22 -2
  111. package/dist/components/forms/date-picker/date-input.class.js +4 -2
  112. package/dist/components/forms/date-picker/date-input.styles.js +1 -1
  113. package/dist/components/forms/emoji-picker/emoji-data-loader.d.ts +18 -4
  114. package/dist/components/forms/emoji-picker/emoji-data-loader.js +1 -1
  115. package/dist/components/forms/emoji-picker/emoji-picker.class.d.ts +18 -4
  116. package/dist/components/forms/emoji-picker/emoji-picker.class.js +1 -1
  117. package/dist/components/forms/emoji-picker/emoji-picker.styles.js +1 -1
  118. package/dist/components/forms/icon-button/icon-button.class.d.ts +1 -1
  119. package/dist/components/forms/input/time-input.class.d.ts +11 -1
  120. package/dist/components/forms/input/time-input.class.js +4 -3
  121. package/dist/components/forms/input/time-input.styles.js +1 -1
  122. package/dist/components/forms/locale-picker/locale-picker.class.d.ts +17 -3
  123. package/dist/components/forms/locale-picker/locale-picker.class.js +3 -2
  124. package/dist/components/forms/locale-picker/locale-picker.styles.js +1 -1
  125. package/dist/components/forms/otp-input/otp-input.class.d.ts +13 -5
  126. package/dist/components/forms/otp-input/otp-input.class.js +2 -2
  127. package/dist/components/forms/otp-input/otp-input.styles.js +1 -1
  128. package/dist/components/forms/phone-input/phone-input.class.d.ts +10 -3
  129. package/dist/components/forms/phone-input/phone-input.class.js +6 -2
  130. package/dist/components/forms/phone-input/phone-input.styles.js +1 -1
  131. package/dist/components/forms/radio/radio-group.class.d.ts +1 -1
  132. package/dist/components/forms/radio/radio-group.class.js +2 -2
  133. package/dist/components/forms/rubric-form/rubric-form.class.d.ts +9 -1
  134. package/dist/components/forms/rubric-form/rubric-form.class.js +5 -3
  135. package/dist/components/forms/select/select.class.d.ts +4 -0
  136. package/dist/components/forms/select/select.styles.js +1 -1
  137. package/dist/components/forms/slider/slider.class.d.ts +5 -1
  138. package/dist/components/forms/slider/slider.class.js +3 -3
  139. package/dist/components/forms/switch/switch.class.d.ts +6 -5
  140. package/dist/components/forms/switch/switch.class.js +1 -1
  141. package/dist/components/forms/time-range/time-range.class.d.ts +2 -2
  142. package/dist/components/forms/token-input/token-input.class.d.ts +13 -3
  143. package/dist/components/forms/token-input/token-input.class.js +3 -1
  144. package/dist/components/layout/carousel/carousel.class.d.ts +4 -1
  145. package/dist/components/layout/carousel/carousel.class.js +1 -1
  146. package/dist/components/layout/command-palette/command-palette.class.d.ts +8 -2
  147. package/dist/components/layout/command-palette/command-palette.class.js +1 -1
  148. package/dist/components/layout/command-palette/command-palette.styles.js +1 -1
  149. package/dist/components/layout/details/accordion.class.js +1 -1
  150. package/dist/components/layout/dock-panel/dock-panel.class.d.ts +10 -7
  151. package/dist/components/layout/dock-panel/dock-panel.class.js +2 -2
  152. package/dist/components/layout/dock-panel/dock-panel.styles.js +1 -1
  153. package/dist/components/layout/menu/menu.class.d.ts +13 -3
  154. package/dist/components/layout/menu/menu.class.js +4 -3
  155. package/dist/components/layout/menu/menu.styles.js +1 -1
  156. package/dist/components/layout/page/page.class.d.ts +7 -1
  157. package/dist/components/layout/reorder-list/reorder-list.class.d.ts +1 -1
  158. package/dist/components/layout/reorder-list/reorder-list.class.js +1 -1
  159. package/dist/components/layout/segmented/segmented.class.d.ts +2 -0
  160. package/dist/components/layout/segmented/segmented.styles.js +1 -1
  161. package/dist/components/layout/virtual-list/virtual-list.styles.js +1 -1
  162. package/dist/components/layout/widget/widget.class.d.ts +15 -2
  163. package/dist/components/layout/widget/widget.class.js +1 -1
  164. package/dist/components/layout/widget/widget.styles.js +1 -1
  165. package/dist/components/media/avatar/avatar.class.d.ts +4 -0
  166. package/dist/components/media/avatar/avatar.styles.js +1 -1
  167. package/dist/components/media/avatar-group/avatar-group.class.d.ts +8 -1
  168. package/dist/components/media/avatar-group/avatar-group.styles.js +1 -1
  169. package/dist/components/media/drop-zone/drop-zone.class.d.ts +10 -4
  170. package/dist/components/media/drop-zone/drop-zone.class.js +2 -2
  171. package/dist/components/media/drop-zone/drop-zone.styles.js +1 -1
  172. package/dist/components/media/flag/flag.class.js +1 -1
  173. package/dist/components/media/map/map.class.d.ts +19 -5
  174. package/dist/components/media/map/map.class.js +3 -3
  175. package/dist/components/media/video-playlist/video-playlist.class.d.ts +6 -3
  176. package/dist/components/media/video-playlist/video-playlist.class.js +1 -1
  177. package/dist/components/overlays/callout/callout.class.d.ts +4 -1
  178. package/dist/components/overlays/dialog/dialog.class.d.ts +4 -1
  179. package/dist/components/overlays/overlay/overlay.styles.js +1 -1
  180. package/dist/components/overlays/overlay/popover.class.d.ts +9 -1
  181. package/dist/components/overlays/overlay/popover.class.js +3 -2
  182. package/dist/components/overlays/overlay/tooltip.class.d.ts +14 -4
  183. package/dist/components/overlays/overlay/tooltip.class.js +3 -2
  184. package/dist/components/overlays/popup/popup.class.d.ts +15 -1
  185. package/dist/components/overlays/popup/popup.class.js +3 -3
  186. package/dist/components/overlays/popup/popup.styles.js +1 -1
  187. package/dist/components/overlays/progress/progress-bar.class.d.ts +2 -0
  188. package/dist/components/overlays/progress/progress.styles.js +1 -1
  189. package/dist/components/retrieval/citation-badge/citation-badge.class.d.ts +4 -2
  190. package/dist/components/retrieval/citation-badge/citation-badge.class.js +1 -1
  191. package/dist/components/retrieval/claim-evidence/claim-evidence.class.d.ts +4 -0
  192. package/dist/components/retrieval/claim-evidence/claim-evidence.class.js +4 -3
  193. package/dist/components/retrieval/claim-evidence/claim-evidence.styles.js +1 -1
  194. package/dist/components/retrieval/community-card/community-card.class.d.ts +6 -1
  195. package/dist/components/retrieval/community-card/community-card.styles.js +1 -1
  196. package/dist/components/retrieval/embedding-explorer/embedding-explorer.class.d.ts +9 -1
  197. package/dist/components/retrieval/embedding-explorer/embedding-explorer.class.js +4 -3
  198. package/dist/components/retrieval/entity-card/entity-card.styles.js +1 -1
  199. package/dist/components/retrieval/entity-chip/entity-chip.class.d.ts +4 -2
  200. package/dist/components/retrieval/entity-chip/entity-chip.class.js +1 -1
  201. package/dist/components/retrieval/entity-dossier/entity-dossier.class.js +2 -2
  202. package/dist/components/retrieval/graph-legend/graph-legend.class.d.ts +18 -4
  203. package/dist/components/retrieval/graph-legend/graph-legend.class.js +2 -2
  204. package/dist/components/retrieval/grounding-summary/grounding-summary.class.d.ts +7 -0
  205. package/dist/components/retrieval/grounding-summary/grounding-summary.class.js +4 -3
  206. package/dist/components/retrieval/grounding-summary/grounding-summary.styles.js +1 -1
  207. package/dist/components/retrieval/memory-panel/memory-panel.class.d.ts +6 -0
  208. package/dist/components/retrieval/memory-panel/memory-panel.class.js +4 -3
  209. package/dist/components/retrieval/memory-panel/memory-panel.styles.js +1 -1
  210. package/dist/components/retrieval/mind-map/mind-map-layout.d.ts +17 -1
  211. package/dist/components/retrieval/mind-map/mind-map-layout.js +1 -1
  212. package/dist/components/retrieval/mind-map/mind-map.class.d.ts +8 -1
  213. package/dist/components/retrieval/mind-map/mind-map.class.js +3 -2
  214. package/dist/components/retrieval/rag-eval-dashboard/rag-eval-dashboard.class.d.ts +5 -0
  215. package/dist/components/retrieval/rag-eval-dashboard/rag-eval-dashboard.class.js +6 -5
  216. package/dist/components/retrieval/rag-eval-dashboard/rag-eval-dashboard.styles.js +1 -1
  217. package/dist/components/retrieval/retrieval-compare/retrieval-compare.class.js +5 -5
  218. package/dist/components/retrieval/retrieval-compare/retrieval-compare.styles.js +1 -1
  219. package/dist/components/retrieval/source-list/source-list.class.d.ts +21 -2
  220. package/dist/components/retrieval/source-list/source-list.class.js +2 -2
  221. package/dist/components/retrieval/source-list/source-list.styles.js +1 -1
  222. package/dist/components/retrieval/source-picker/source-picker.class.d.ts +3 -1
  223. package/dist/components/retrieval/source-picker/source-picker.class.js +2 -2
  224. package/dist/components/utility/diff-view/diff-view.class.d.ts +105 -8
  225. package/dist/components/utility/diff-view/diff-view.class.js +21 -5
  226. package/dist/components/utility/diff-view/diff-view.styles.js +1 -1
  227. package/dist/components/utility/export-button/export-button.class.d.ts +26 -2
  228. package/dist/components/utility/export-button/export-button.class.js +4 -2
  229. package/dist/components/utility/export-button/export-button.styles.js +1 -1
  230. package/dist/components/utility/mention-popover/mention-popover.class.d.ts +19 -1
  231. package/dist/components/utility/mention-popover/mention-popover.class.js +3 -2
  232. package/dist/components/utility/mention-popover/mention-popover.styles.js +1 -1
  233. package/dist/components/utility/tour/tour.class.d.ts +1 -3
  234. package/dist/components/utility/tour/tour.class.js +1 -1
  235. package/dist/components/viewers/archive-viewer/archive-viewer.class.d.ts +20 -3
  236. package/dist/components/viewers/archive-viewer/archive-viewer.class.js +1 -1
  237. package/dist/components/viewers/ebook-viewer/ebook-viewer.class.js +1 -1
  238. package/dist/components/viewers/geojson-view/geojson-view.styles.js +1 -1
  239. package/dist/components/viewers/geojson-view/geojson-viewer.class.d.ts +5 -0
  240. package/dist/components/viewers/geojson-view/geojson-viewer.class.js +6 -3
  241. package/dist/components/viewers/pdf-viewer/pdf-viewer.class.d.ts +7 -1
  242. package/dist/components/viewers/pdf-viewer/pdf-viewer.class.js +1 -1
  243. package/dist/components/viewers/pptx-viewer/pptx-viewer.class.d.ts +7 -1
  244. package/dist/components/viewers/pptx-viewer/pptx-viewer.class.js +1 -1
  245. package/dist/components/viewers/xml-viewer/xml-viewer.class.d.ts +5 -0
  246. package/dist/components/viewers/xml-viewer/xml-viewer.class.js +1 -1
  247. package/dist/custom-elements-jsx.d.ts +1 -1
  248. package/dist/events.d.ts +79 -30
  249. package/dist/internal/accessibility-visibility.js +1 -1
  250. package/dist/internal/aria-reflection.js +1 -1
  251. package/dist/internal/catalog-picker.d.ts +14 -3
  252. package/dist/internal/catalog-picker.js +1 -1
  253. package/dist/internal/default-strings.generated.d.ts +1 -1
  254. package/dist/internal/default-strings.generated.js +2 -2
  255. package/dist/internal/localization-types.d.ts +1 -1
  256. package/dist/internal/localization.js +2 -2
  257. package/dist/internal/lyra-element.d.ts +17 -0
  258. package/dist/internal/lyra-element.js +2 -2
  259. package/dist/internal/package-metadata.d.ts +1 -1
  260. package/dist/internal/package-metadata.js +1 -1
  261. package/dist/svelte.d.ts +1 -1
  262. package/dist/testing/lyra-tag-event-map.js +1 -1
  263. package/dist/translations/ar/agent-tools.js +1 -1
  264. package/dist/translations/ar/data.js +1 -1
  265. package/dist/translations/ar/retrieval.js +1 -1
  266. package/dist/translations/ar/shared.js +1 -1
  267. package/dist/translations/ar/viewers.js +1 -1
  268. package/dist/translations/de/agent-tools.js +1 -1
  269. package/dist/translations/de/data.js +1 -1
  270. package/dist/translations/de/retrieval.js +1 -1
  271. package/dist/translations/de/shared.js +1 -1
  272. package/dist/translations/de/viewers.js +1 -1
  273. package/dist/translations/es/agent-tools.js +1 -1
  274. package/dist/translations/es/data.js +1 -1
  275. package/dist/translations/es/retrieval.js +1 -1
  276. package/dist/translations/es/shared.js +1 -1
  277. package/dist/translations/es/viewers.js +1 -1
  278. package/dist/translations/fa/agent-tools.js +1 -1
  279. package/dist/translations/fa/data.js +1 -1
  280. package/dist/translations/fa/retrieval.js +1 -1
  281. package/dist/translations/fa/shared.js +1 -1
  282. package/dist/translations/fa/viewers.js +1 -1
  283. package/dist/translations/fr/agent-tools.js +1 -1
  284. package/dist/translations/fr/data.js +1 -1
  285. package/dist/translations/fr/retrieval.js +1 -1
  286. package/dist/translations/fr/shared.js +1 -1
  287. package/dist/translations/fr/viewers.js +1 -1
  288. package/dist/translations/he/agent-tools.js +1 -1
  289. package/dist/translations/he/data.js +1 -1
  290. package/dist/translations/he/retrieval.js +1 -1
  291. package/dist/translations/he/shared.js +1 -1
  292. package/dist/translations/he/viewers.js +1 -1
  293. package/dist/translations/it/agent-tools.js +1 -1
  294. package/dist/translations/it/data.js +1 -1
  295. package/dist/translations/it/retrieval.js +1 -1
  296. package/dist/translations/it/shared.js +1 -1
  297. package/dist/translations/it/viewers.js +1 -1
  298. package/dist/translations/ja/agent-tools.js +1 -1
  299. package/dist/translations/ja/data.js +1 -1
  300. package/dist/translations/ja/retrieval.js +1 -1
  301. package/dist/translations/ja/shared.js +1 -1
  302. package/dist/translations/ja/viewers.js +1 -1
  303. package/dist/translations/pt-BR/agent-tools.js +1 -1
  304. package/dist/translations/pt-BR/data.js +1 -1
  305. package/dist/translations/pt-BR/retrieval.js +1 -1
  306. package/dist/translations/pt-BR/shared.js +1 -1
  307. package/dist/translations/pt-BR/viewers.js +1 -1
  308. package/dist/translations/ro/agent-tools.js +1 -1
  309. package/dist/translations/ro/data.js +1 -1
  310. package/dist/translations/ro/retrieval.js +1 -1
  311. package/dist/translations/ro/shared.js +1 -1
  312. package/dist/translations/ro/viewers.js +1 -1
  313. package/dist/translations/ru/agent-tools.js +1 -1
  314. package/dist/translations/ru/data.js +1 -1
  315. package/dist/translations/ru/retrieval.js +1 -1
  316. package/dist/translations/ru/shared.js +1 -1
  317. package/dist/translations/ru/viewers.js +1 -1
  318. package/dist/translations/zh-CN/agent-tools.js +1 -1
  319. package/dist/translations/zh-CN/data.js +1 -1
  320. package/dist/translations/zh-CN/retrieval.js +1 -1
  321. package/dist/translations/zh-CN/shared.js +1 -1
  322. package/dist/translations/zh-CN/viewers.js +1 -1
  323. package/dist/vue.d.ts +1 -1
  324. package/llms/components/lr-activity-feed.md +20 -9
  325. package/llms/components/lr-approval-queue.md +3 -2
  326. package/llms/components/lr-archive-viewer.md +8 -1
  327. package/llms/components/lr-artifact-panel.md +3 -1
  328. package/llms/components/lr-audio-visualizer.md +3 -1
  329. package/llms/components/lr-avatar-group.md +13 -6
  330. package/llms/components/lr-avatar.md +6 -2
  331. package/llms/components/lr-bar-chart.md +6 -3
  332. package/llms/components/lr-box-plot.md +6 -2
  333. package/llms/components/lr-branch-picker.md +3 -1
  334. package/llms/components/lr-bubble-chart.md +6 -3
  335. package/llms/components/lr-calendar.md +10 -3
  336. package/llms/components/lr-carousel.md +4 -2
  337. package/llms/components/lr-chart.md +12 -4
  338. package/llms/components/lr-chat-viewport.md +3 -2
  339. package/llms/components/lr-checkbox.md +8 -5
  340. package/llms/components/lr-citation-badge.md +2 -0
  341. package/llms/components/lr-claim-evidence.md +6 -2
  342. package/llms/components/lr-code-editor.md +3 -1
  343. package/llms/components/lr-color-picker.md +20 -8
  344. package/llms/components/lr-combobox.md +26 -3
  345. package/llms/components/lr-command-palette.md +6 -3
  346. package/llms/components/lr-community-card.md +7 -4
  347. package/llms/components/lr-context-inspector.md +3 -2
  348. package/llms/components/lr-context-meter.md +13 -5
  349. package/llms/components/lr-data-grid.md +2 -0
  350. package/llms/components/lr-date-input.md +12 -3
  351. package/llms/components/lr-date-picker.md +11 -2
  352. package/llms/components/lr-diff-view.md +46 -5
  353. package/llms/components/lr-doughnut-chart.md +6 -3
  354. package/llms/components/lr-drop-zone.md +7 -3
  355. package/llms/components/lr-embedding-explorer.md +8 -2
  356. package/llms/components/lr-emoji-picker.md +5 -1
  357. package/llms/components/lr-entity-chip.md +2 -0
  358. package/llms/components/lr-eval-run.md +3 -2
  359. package/llms/components/lr-export-button.md +5 -2
  360. package/llms/components/lr-flow-node.md +7 -4
  361. package/llms/components/lr-funnel.md +7 -2
  362. package/llms/components/lr-gauge.md +7 -2
  363. package/llms/components/lr-geojson-view.md +10 -2
  364. package/llms/components/lr-geojson-viewer.md +10 -2
  365. package/llms/components/lr-graph-legend.md +6 -3
  366. package/llms/components/lr-graph-query-builder.md +21 -11
  367. package/llms/components/lr-grounding-summary.md +8 -2
  368. package/llms/components/lr-heatmap.md +5 -2
  369. package/llms/components/lr-histogram.md +4 -2
  370. package/llms/components/lr-json-schema-viewer.md +7 -5
  371. package/llms/components/lr-line-chart.md +6 -3
  372. package/llms/components/lr-locale-picker.md +4 -1
  373. package/llms/components/lr-map.md +5 -3
  374. package/llms/components/lr-memory-panel.md +6 -2
  375. package/llms/components/lr-mention-popover.md +7 -4
  376. package/llms/components/lr-message-actions.md +3 -1
  377. package/llms/components/lr-message-parts.md +8 -2
  378. package/llms/components/lr-mind-map.md +11 -2
  379. package/llms/components/lr-option.md +25 -2
  380. package/llms/components/lr-otp-input.md +3 -1
  381. package/llms/components/lr-phone-input.md +9 -5
  382. package/llms/components/lr-pie-chart.md +6 -3
  383. package/llms/components/lr-polar-area-chart.md +6 -3
  384. package/llms/components/lr-policy-summary.md +3 -2
  385. package/llms/components/lr-progress-bar.md +4 -1
  386. package/llms/components/lr-prompt-input.md +4 -1
  387. package/llms/components/lr-prompt-queue.md +5 -2
  388. package/llms/components/lr-radar-chart.md +6 -3
  389. package/llms/components/lr-rag-eval-dashboard.md +7 -2
  390. package/llms/components/lr-realtime-session.md +3 -1
  391. package/llms/components/lr-rubric-form.md +6 -1
  392. package/llms/components/lr-scatter-chart.md +6 -3
  393. package/llms/components/lr-segmented.md +3 -1
  394. package/llms/components/lr-select.md +7 -1
  395. package/llms/components/lr-selection-toolbar.md +4 -1
  396. package/llms/components/lr-sequence-strip.md +7 -3
  397. package/llms/components/lr-source-card.md +16 -1
  398. package/llms/components/lr-source-list.md +17 -2
  399. package/llms/components/lr-source-picker.md +3 -1
  400. package/llms/components/lr-subagent-panel.md +6 -3
  401. package/llms/components/lr-switch.md +4 -3
  402. package/llms/components/lr-table.md +6 -1
  403. package/llms/components/lr-thinking-panel.md +8 -5
  404. package/llms/components/lr-token-input.md +15 -1
  405. package/llms/components/lr-tool-call-chip.md +2 -0
  406. package/llms/components/lr-tool-param-form.md +15 -4
  407. package/llms/components/lr-tooltip.md +8 -4
  408. package/llms/components/lr-trace-tree.md +7 -4
  409. package/llms/components/lr-video-playlist.md +7 -5
  410. package/llms/components/lr-voice-picker.md +7 -4
  411. package/llms/components/lr-widget.md +15 -2
  412. package/llms/migration.md +4 -4
  413. package/llms-full.txt +552 -159
  414. package/package.json +11 -9
  415. package/registrations.json +1 -1
  416. package/vscode-css-data.json +1 -1
  417. package/vscode-html-data.json +1 -1
  418. package/web-types.json +1 -1
@@ -1,4 +1,4 @@
1
- var __decorate=function(decorators,target,key,desc){var c=arguments.length,r=c<3?target:desc===null?desc=Object.getOwnPropertyDescriptor(target,key):desc,d;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")r=Reflect.decorate(decorators,target,key,desc);else for(var i=decorators.length-1;i>=0;i--)(d=decorators[i])&&(r=(c<3?d(r):c>3?d(target,key,r):d(target,key))||r);return c>3&&r&&Object.defineProperty(target,key,r),r};import{html,nothing}from"lit";import{property,query,state}from"lit/decorators.js";import{styleMap}from"lit/directives/style-map.js";import{LyraElement}from"../../../internal/lyra-element.js";import{srOnly}from"../../../internal/a11y.js";import{finiteInteger}from"../../../internal/numbers.js";import{TextViewerTarget}from"../../../internal/text-viewer-target.js";import{isAbortError,isResourceLimitError,readResponseArrayBuffer,resolveOwnerFetchTarget}from"../../../internal/resource-loader.js";import{sanitizeCssLength}from"../../../internal/safe-css.js";import{chevronIcon}from"../../../internal/icons.js";import{adaptPptxViewer,getPptxRenderer}from"./pptx-loader.js";import{assertPptxArchiveWithinLimits}from"./pptx-resource-guard.js";import{styles}from"./pptx-viewer.styles.js";import{getNumberFormat}from"../../../internal/intl-cache.js";import{ViewerAnnouncementController}from"../viewer-announcements.js";import{viewerSemanticLabel,viewerSemanticRole}from"../viewer-semantic-owner.js";import{boundedViewerSearchQuery,ViewerSearchWorkBudget}from"../viewer-search-limits.js";import{LYRA_DEFAULT_anchorJumped,LYRA_DEFAULT_anchorJumpedToPage,LYRA_DEFAULT_anchorNotFound,LYRA_DEFAULT_documentPreviewFailedToLoad,LYRA_DEFAULT_documentPreviewResourceTooLarge,LYRA_DEFAULT_documentPreviewUrlNotAllowed,LYRA_DEFAULT_loading,LYRA_DEFAULT_pptxViewerFidelityNotice,LYRA_DEFAULT_pptxViewerLabel,LYRA_DEFAULT_pptxViewerNextSlide,LYRA_DEFAULT_pptxViewerPreviousSlide,LYRA_DEFAULT_pptxViewerRenderError,LYRA_DEFAULT_pptxViewerSlideOf}from"../../../internal/default-strings.generated.js";const MAX_PPTX_SEARCH_MATCHES=1e4,MAX_PPTX_THUMBNAIL_WIDTH=2048;class LyraPptxViewerBase extends LyraElement{}class LyraPptxViewer extends TextViewerTarget(LyraPptxViewerBase){constructor(){super(...arguments),this.src="",this.name="",this.page=1,this.maxHeight="",this.phase="idle",this.errorMessage="",this.slideCount=0,this.currentSlideIndex=0,this.loadRenderer=getPptxRenderer,this.generation=0,this.announcements=new ViewerAnnouncementController(this),this.pptxSearchQuery="",this.lastSearchLocale="",this.pptxSearchMatches=[],this.pendingSearchResetEvent=!1,this.pptxSearchMatchCountExact=!0,this.pptxSearchActiveIndex=-1,this.pptxSearchGeneration=0,this.pageViewerIdentity=0,this.pageViewerSnapshotValue=Object.freeze({identity:0,status:"idle",page:1,pageCount:0}),this.onViewerEvent=event=>{if(event.kind==="slide-change"){this.commitSlide(event.index);return}this.reportPeerDiagnostic(event.code,event.cause,{page:event.page,nodeId:event.nodeId},event.fatal)}}static{this.defaultStrings={...super.defaultStrings,anchorJumped:LYRA_DEFAULT_anchorJumped,anchorJumpedToPage:LYRA_DEFAULT_anchorJumpedToPage,anchorNotFound:LYRA_DEFAULT_anchorNotFound,documentPreviewFailedToLoad:LYRA_DEFAULT_documentPreviewFailedToLoad,documentPreviewResourceTooLarge:LYRA_DEFAULT_documentPreviewResourceTooLarge,documentPreviewUrlNotAllowed:LYRA_DEFAULT_documentPreviewUrlNotAllowed,loading:LYRA_DEFAULT_loading,pptxViewerFidelityNotice:LYRA_DEFAULT_pptxViewerFidelityNotice,pptxViewerLabel:LYRA_DEFAULT_pptxViewerLabel,pptxViewerNextSlide:LYRA_DEFAULT_pptxViewerNextSlide,pptxViewerPreviousSlide:LYRA_DEFAULT_pptxViewerPreviousSlide,pptxViewerRenderError:LYRA_DEFAULT_pptxViewerRenderError,pptxViewerSlideOf:LYRA_DEFAULT_pptxViewerSlideOf}}static{this.styles=[LyraElement.styles,styles,srOnly]}async search(query2){const generation=++this.pptxSearchGeneration,viewer=this.viewer,boundedQuery=boundedViewerSearchQuery(query2,this.effectiveLocale);if(this.pptxSearchQuery=query2,this.lastSearchLocale=this.effectiveLocale,this.disposeSearchHighlight(),viewer?.clearSearchHighlights(),!boundedQuery.accepted)return this.pptxSearchMatches=[],this.pptxSearchMatchCountExact=!1,this.pptxSearchActiveIndex=-1,this.emitPptxSearchChange(),0;if(!viewer||!boundedQuery.needle)return this.pptxSearchMatches=[],this.pptxSearchMatchCountExact=!0,this.pptxSearchActiveIndex=-1,this.emitPptxSearchChange(),0;try{const raw=viewer.searchText(query2.trim(),{matchCase:!1});if(generation!==this.pptxSearchGeneration||viewer!==this.viewer)return this.pptxSearchMatches.length;const normalized=this.normalizeSearchResults(raw,viewer.slideCount);return this.pptxSearchMatches=normalized.matches,this.pptxSearchMatchCountExact=normalized.matchCountExact,this.pptxSearchActiveIndex=this.pptxSearchMatches.length>0?0:-1,this.emitPptxSearchChange(),this.pptxSearchActiveIndex>=0&&await this.focusPptxSearchMatch(this.pptxSearchActiveIndex,generation,viewer),this.pptxSearchMatches.length}catch(cause){return generation!==this.pptxSearchGeneration||viewer!==this.viewer||(this.pptxSearchMatches=[],this.pptxSearchMatchCountExact=!1,this.pptxSearchActiveIndex=-1,this.reportPeerDiagnostic("pptx-search-error",cause),this.emitPptxSearchChange()),0}}async searchNext(){const viewer=this.viewer;if(!viewer||this.pptxSearchMatches.length===0)return!1;const generation=++this.pptxSearchGeneration;return this.pptxSearchActiveIndex=(this.pptxSearchActiveIndex+1)%this.pptxSearchMatches.length,this.emitPptxSearchChange(),await this.focusPptxSearchMatch(this.pptxSearchActiveIndex,generation,viewer),generation===this.pptxSearchGeneration}async searchPrevious(){const viewer=this.viewer;if(!viewer||this.pptxSearchMatches.length===0)return!1;const generation=++this.pptxSearchGeneration;return this.pptxSearchActiveIndex=(this.pptxSearchActiveIndex-1+this.pptxSearchMatches.length)%this.pptxSearchMatches.length,this.emitPptxSearchChange(),await this.focusPptxSearchMatch(this.pptxSearchActiveIndex,generation,viewer),generation===this.pptxSearchGeneration}clearSearch(){this.pptxSearchGeneration++,this.pptxSearchQuery="",this.pptxSearchMatches=[],this.pptxSearchMatchCountExact=!0,this.pptxSearchActiveIndex=-1,this.disposeSearchHighlight(),this.viewer?.clearSearchHighlights(),this.emitPptxSearchChange()}get pageViewerSnapshot(){return this.pageViewerSnapshotValue}textContentRoot(){return this.renderRoot.querySelector('[part="container"]')??this.renderRoot.querySelector('[part="base"]')}updated(changed){if(super.updated(changed),this.announcements.transition("load",this.phase,this.phase==="error"?this.errorMessage:this.localize("loading")),changed.has("src")&&this.scheduleAfterUpdate(()=>{this.mount()}),changed.has("src")&&this.pendingSearchResetEvent&&(this.pendingSearchResetEvent=!1,this.emitPptxSearchChange()),changed.has("page")&&this.viewer&&this.page-1!==this.currentSlideIndex){const page=this.page;this.scheduleAfterUpdate(()=>{this.page===page&&this.goToSlide(page-1)},"page-navigation")}const locale=this.effectiveLocale;if(locale!==this.lastSearchLocale){const shouldRecompute=this.pptxSearchQuery!=="";this.lastSearchLocale=locale,shouldRecompute&&this.scheduleAfterUpdate(()=>{this.search(this.pptxSearchQuery)},"search")}}willUpdate(changed){super.willUpdate(changed),changed.has("src")&&(this.pendingSearchResetEvent||=this.hasPptxSearchState(),this.resetPptxSearchState()),(changed.has("page")||changed.has("slideCount"))&&(this.page=finiteInteger(this.page,1,1,Math.max(1,this.slideCount)))}connectedCallback(){super.connectedCallback(),this.announcements.connect(),this.hasUpdated&&this.src&&this.scheduleAfterUpdate(()=>{this.mount()})}disconnectedCallback(){this.teardown(),this.phase="idle",this.slideCount=0,this.currentSlideIndex=0,this.page=1,this.pageViewerIdentity++,this.pageViewerSnapshotValue=Object.freeze({identity:this.pageViewerIdentity,status:"idle",page:1,pageCount:0}),this.announcements.disconnect(),super.disconnectedCallback()}adoptedCallback(){super.adoptedCallback(),this.announcements.adopted()}async goToSlide(index){const viewer=this.viewer;if(!viewer||!Number.isSafeInteger(index)||index<0||index>=viewer.slideCount)return;const generation=this.generation;try{await viewer.goToSlide(index)}catch(error){if(isAbortError(error)||!this.isConnected||generation!==this.generation||viewer!==this.viewer)return;this.teardown(),this.phase="error",this.slideCount=0,this.currentSlideIndex=0,this.page=1,this.errorMessage=this.localize("pptxViewerRenderError"),this.publishPageViewerSnapshot("error",0),this.emit("lr-render-error",{error});return}viewer===this.viewer&&viewer.currentSlideIndex!==this.currentSlideIndex&&this.commitSlide(viewer.currentSlideIndex)}async renderPageThumbnailToContainer(page,container,options){const viewer=this.viewer,generation=this.generation,width=options?.width??96;if(!viewer||!Number.isSafeInteger(page)||page<1||page>viewer.slideCount||!Number.isFinite(width)||width<=0||width>MAX_PPTX_THUMBNAIL_WIDTH)return!1;const previousChildren=[...container.childNodes],restorePreviousChildren=()=>{container.replaceChildren(...previousChildren)};let handle;try{handle=viewer.renderThumbnailToContainer(page-1,container,{width})}catch{return restorePreviousChildren(),!1}if(!handle)return restorePreviousChildren(),!1;try{await handle.ready}catch{return handle.dispose(),restorePreviousChildren(),!1}if(generation!==this.generation||viewer!==this.viewer||!container.isConnected)return handle.dispose(),restorePreviousChildren(),!1;for(const child of previousChildren)child.parentNode===container&&child.remove();return handle}isValidSlideIndex(index){return Number.isSafeInteger(index)&&index>=0&&index<this.slideCount}commitSlide(index){if(!this.isValidSlideIndex(index))return;const changed=index!==this.currentSlideIndex;this.currentSlideIndex=index,this.page=index+1,this.publishPageViewerSnapshot("ready",this.slideCount),changed&&this.emit("lr-slide-change",{index,count:this.slideCount})}publishPageViewerSnapshot(status,pageCount){const snapshot=Object.freeze({identity:this.pageViewerIdentity,status,page:status==="ready"?finiteInteger(this.page,1,1,Math.max(1,pageCount)):1,pageCount:status==="ready"?finiteInteger(pageCount,0,0,Number.MAX_SAFE_INTEGER):0}),previous=this.pageViewerSnapshotValue;previous.identity===snapshot.identity&&previous.status===snapshot.status&&previous.page===snapshot.page&&previous.pageCount===snapshot.pageCount||(this.pageViewerSnapshotValue=snapshot,this.isConnected&&this.emit("lr-page-viewer-state-change",{snapshot}))}teardown(){const shouldEmitSearchReset=this.hasPptxSearchState();this.generation++,this.viewerUnsubscribe?.(),this.viewerUnsubscribe=void 0,this.viewer?.destroy(),this.viewer=void 0,this.resetPptxSearchState(),shouldEmitSearchReset&&this.emitPptxSearchChange()}hasPptxSearchState(){return this.pptxSearchQuery!==""||this.pptxSearchMatches.length>0||!this.pptxSearchMatchCountExact||this.pptxSearchActiveIndex!==-1}resetPptxSearchState(){this.pptxSearchGeneration++,this.disposeSearchHighlight(),this.viewer?.clearSearchHighlights(),this.pptxSearchQuery="",this.pptxSearchMatches=[],this.pptxSearchMatchCountExact=!0,this.pptxSearchActiveIndex=-1}normalizeSearchResults(value,slideCount){if(!Array.isArray(value))throw new TypeError("PPTX search returned a non-array result.");const matches=[],work=new ViewerSearchWorkBudget;let matchCountExact=!0;for(const candidate of value){if(!work.consume("")){matchCountExact=!1;break}if(!candidate||typeof candidate!="object")continue;const result=candidate;if(!(!Number.isSafeInteger(result.slideIndex)||result.slideIndex<0||result.slideIndex>=slideCount||typeof result.nodeId!="string"||typeof result.text!="string"||!Number.isSafeInteger(result.matchStart)||!Number.isSafeInteger(result.matchEnd)||result.matchStart<0||result.matchEnd<result.matchStart||result.matchEnd>result.text.length)){if(!work.consume(result.nodeId)||!work.consume(result.text)){matchCountExact=!1;break}if(matches.length===MAX_PPTX_SEARCH_MATCHES){matchCountExact=!1;break}matches.push(candidate)}}return{matches,matchCountExact:matchCountExact&&work.complete}}async focusPptxSearchMatch(index,generation,viewer){const match=this.pptxSearchMatches[index];if(match){this.disposeSearchHighlight(),viewer.clearSearchHighlights();try{if(await viewer.goToSlide(match.slideIndex),generation!==this.pptxSearchGeneration||viewer!==this.viewer)return;const highlight=await viewer.highlightSearchResult(match,{scrollIntoView:!1});if(generation!==this.pptxSearchGeneration||viewer!==this.viewer){highlight?.dispose();return}this.searchHighlight=highlight??void 0}catch(cause){generation===this.pptxSearchGeneration&&viewer===this.viewer&&this.reportPeerDiagnostic("pptx-search-error",cause,{page:match.slideIndex+1})}}}disposeSearchHighlight(){this.searchHighlight?.dispose(),this.searchHighlight=void 0}emitPptxSearchChange(){this.emit("lr-search-change",{query:this.pptxSearchQuery,matchCount:this.pptxSearchMatches.length,matchCountExact:this.pptxSearchMatchCountExact,activeIndex:this.pptxSearchActiveIndex})}reportPeerDiagnostic(code,cause,location={},fatal=!1){this.emit("lr-viewer-diagnostic",{diagnostic:Object.freeze({code,severity:"error",fatal,source:"pptx-renderer",cause,...location})}),fatal&&(this.teardown(),this.phase="error",this.slideCount=0,this.currentSlideIndex=0,this.page=1,this.errorMessage=this.localize("pptxViewerRenderError"),this.publishPageViewerSnapshot("error",0),this.emit("lr-render-error",{error:cause}))}async mount(){this.teardown(),this.pageViewerIdentity++;const signal=this.beginAbortableLoad(),generation=this.generation;if(this.slideCount=0,this.currentSlideIndex=0,this.page=1,!this.src){this.phase="idle",this.publishPageViewerSnapshot("idle",0);return}const fetchTarget=resolveOwnerFetchTarget(this,this.src);if(!fetchTarget){const error=new Error(this.localize("documentPreviewUrlNotAllowed"));this.phase="error",this.errorMessage=error.message,this.publishPageViewerSnapshot("error",0),this.emit("lr-render-error",{error});return}this.phase="loading",this.publishPageViewerSnapshot("loading",0);let module,response;try{[module,response]=await Promise.all([this.loadRenderer(),fetchTarget.view.fetch(fetchTarget.url,signal?{signal}:void 0)])}catch(error){if(isAbortError(error)||!this.isConnected||generation!==this.generation)return;this.phase="error",this.errorMessage=this.localize(isResourceLimitError(error)?"documentPreviewResourceTooLarge":"documentPreviewFailedToLoad"),this.publishPageViewerSnapshot("error",0),this.emit("lr-render-error",{error});return}if(!this.isConnected||generation!==this.generation)return;if(!module||!response.ok){const error=new Error(this.localize(module?"documentPreviewFailedToLoad":"pptxViewerRenderError"));this.phase="error",this.errorMessage=error.message,this.publishPageViewerSnapshot("error",0),this.emit("lr-render-error",{error});return}let buffer;try{if(buffer=await readResponseArrayBuffer(response),!this.isConnected||generation!==this.generation)return;await assertPptxArchiveWithinLimits(buffer,{signal})}catch(error){if(isAbortError(error)||!this.isConnected||generation!==this.generation)return;this.phase="error",this.errorMessage=this.localize(isResourceLimitError(error)?"documentPreviewResourceTooLarge":"documentPreviewFailedToLoad"),this.publishPageViewerSnapshot("error",0),this.emit("lr-render-error",{error});return}if(!(!this.isConnected||generation!==this.generation)&&(this.phase="mounted",await this.updateComplete,!(!this.isConnected||generation!==this.generation||!this.containerEl)))try{const openedViewer=await module.PptxViewer.open(buffer,this.containerEl,{zipLimits:module.RECOMMENDED_ZIP_LIMITS,listOptions:{windowed:!0}});if(!this.isConnected||generation!==this.generation){openedViewer.destroy();return}const viewer=adaptPptxViewer(openedViewer);if(!viewer)throw openedViewer.destroy(),new TypeError("The PPTX renderer did not expose the required viewer capabilities.");this.viewer=viewer,this.viewerUnsubscribe=viewer.subscribe(this.onViewerEvent),this.slideCount=viewer.slideCount,this.isValidSlideIndex(viewer.currentSlideIndex)&&(this.currentSlideIndex=viewer.currentSlideIndex,this.page=viewer.currentSlideIndex+1),this.publishPageViewerSnapshot("ready",viewer.slideCount),this.emit("lr-load",{slideCount:viewer.slideCount})}catch(error){if(isAbortError(error)||!this.isConnected||generation!==this.generation)return;this.phase="error",this.errorMessage=this.localize("pptxViewerRenderError"),this.publishPageViewerSnapshot("error",0),this.emit("lr-render-error",{error})}}renderBody(){return this.phase==="loading"?html`
1
+ var __decorate=function(decorators,target,key,desc){var c=arguments.length,r=c<3?target:desc===null?desc=Object.getOwnPropertyDescriptor(target,key):desc,d;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")r=Reflect.decorate(decorators,target,key,desc);else for(var i=decorators.length-1;i>=0;i--)(d=decorators[i])&&(r=(c<3?d(r):c>3?d(target,key,r):d(target,key))||r);return c>3&&r&&Object.defineProperty(target,key,r),r};import{html,nothing}from"lit";import{property,query,state}from"lit/decorators.js";import{styleMap}from"lit/directives/style-map.js";import{LyraElement}from"../../../internal/lyra-element.js";import{srOnly}from"../../../internal/a11y.js";import{finiteInteger}from"../../../internal/numbers.js";import{TextViewerTarget}from"../../../internal/text-viewer-target.js";import{isAbortError,isResourceLimitError,readResponseArrayBuffer,resolveOwnerFetchTarget}from"../../../internal/resource-loader.js";import{sanitizeCssLength}from"../../../internal/safe-css.js";import{chevronIcon}from"../../../internal/icons.js";import{adaptPptxViewer,getPptxRenderer}from"./pptx-loader.js";import{assertPptxArchiveWithinLimits}from"./pptx-resource-guard.js";import{styles}from"./pptx-viewer.styles.js";import{getNumberFormat}from"../../../internal/intl-cache.js";import{ViewerAnnouncementController}from"../viewer-announcements.js";import{viewerSemanticLabel,viewerSemanticRole}from"../viewer-semantic-owner.js";import{boundedViewerSearchQuery,ViewerSearchWorkBudget}from"../viewer-search-limits.js";import{LYRA_DEFAULT_anchorJumped,LYRA_DEFAULT_anchorJumpedToPage,LYRA_DEFAULT_anchorNotFound,LYRA_DEFAULT_documentPreviewFailedToLoad,LYRA_DEFAULT_documentPreviewResourceTooLarge,LYRA_DEFAULT_documentPreviewUrlNotAllowed,LYRA_DEFAULT_loading,LYRA_DEFAULT_pptxViewerFidelityNotice,LYRA_DEFAULT_pptxViewerLabel,LYRA_DEFAULT_pptxViewerNextSlide,LYRA_DEFAULT_pptxViewerPreviousSlide,LYRA_DEFAULT_pptxViewerRenderError,LYRA_DEFAULT_pptxViewerSlideOf}from"../../../internal/default-strings.generated.js";const MAX_PPTX_SEARCH_MATCHES=1e4,MAX_PPTX_THUMBNAIL_WIDTH=2048;class LyraPptxViewerBase extends LyraElement{}class LyraPptxViewer extends TextViewerTarget(LyraPptxViewerBase){constructor(){super(...arguments),this.src="",this.name="",this.page=1,this.maxHeight="",this.phase="idle",this.errorMessage="",this.slideCount=0,this.currentSlideIndex=0,this.loadRenderer=getPptxRenderer,this.generation=0,this.announcements=new ViewerAnnouncementController(this),this.pptxSearchQuery="",this.lastSearchLocale="",this.pptxSearchMatches=[],this.pendingSearchResetEvent=!1,this.pptxSearchMatchCountExact=!0,this.pptxSearchActiveIndex=-1,this.pptxSearchGeneration=0,this.pageViewerIdentity=0,this.pageViewerSnapshotValue=Object.freeze({identity:0,status:"idle",page:1,pageCount:0}),this.onViewerEvent=event=>{if(event.kind==="slide-change"){this.commitSlide(event.index);return}this.reportPeerDiagnostic(event.code,event.cause,{page:event.page,nodeId:event.nodeId},event.fatal)}}static{this.defaultStrings={...super.defaultStrings,anchorJumped:LYRA_DEFAULT_anchorJumped,anchorJumpedToPage:LYRA_DEFAULT_anchorJumpedToPage,anchorNotFound:LYRA_DEFAULT_anchorNotFound,documentPreviewFailedToLoad:LYRA_DEFAULT_documentPreviewFailedToLoad,documentPreviewResourceTooLarge:LYRA_DEFAULT_documentPreviewResourceTooLarge,documentPreviewUrlNotAllowed:LYRA_DEFAULT_documentPreviewUrlNotAllowed,loading:LYRA_DEFAULT_loading,pptxViewerFidelityNotice:LYRA_DEFAULT_pptxViewerFidelityNotice,pptxViewerLabel:LYRA_DEFAULT_pptxViewerLabel,pptxViewerNextSlide:LYRA_DEFAULT_pptxViewerNextSlide,pptxViewerPreviousSlide:LYRA_DEFAULT_pptxViewerPreviousSlide,pptxViewerRenderError:LYRA_DEFAULT_pptxViewerRenderError,pptxViewerSlideOf:LYRA_DEFAULT_pptxViewerSlideOf}}static{this.styles=[LyraElement.styles,styles,srOnly]}async search(query2){const generation=++this.pptxSearchGeneration,viewer=this.viewer,boundedQuery=boundedViewerSearchQuery(query2,this.effectiveLocale);if(this.pptxSearchQuery=query2,this.lastSearchLocale=this.effectiveLocale,this.disposeSearchHighlight(),viewer?.clearSearchHighlights(),!boundedQuery.accepted)return this.pptxSearchMatches=[],this.pptxSearchMatchCountExact=!1,this.pptxSearchActiveIndex=-1,this.emitPptxSearchChange(),0;if(!viewer||!boundedQuery.needle)return this.pptxSearchMatches=[],this.pptxSearchMatchCountExact=!0,this.pptxSearchActiveIndex=-1,this.emitPptxSearchChange(),0;try{const raw=viewer.searchText(query2.trim(),{matchCase:!1});if(generation!==this.pptxSearchGeneration||viewer!==this.viewer)return this.pptxSearchMatches.length;const normalized=this.normalizeSearchResults(raw,viewer.slideCount);return this.pptxSearchMatches=normalized.matches,this.pptxSearchMatchCountExact=normalized.matchCountExact,this.pptxSearchActiveIndex=this.pptxSearchMatches.length>0?0:-1,this.emitPptxSearchChange(),this.pptxSearchActiveIndex>=0&&await this.focusPptxSearchMatch(this.pptxSearchActiveIndex,generation,viewer),this.pptxSearchMatches.length}catch(cause){return generation!==this.pptxSearchGeneration||viewer!==this.viewer||(this.pptxSearchMatches=[],this.pptxSearchMatchCountExact=!1,this.pptxSearchActiveIndex=-1,this.reportPeerDiagnostic("pptx-search-error",cause),this.emitPptxSearchChange()),0}}async searchNext(){const viewer=this.viewer;if(!viewer||this.pptxSearchMatches.length===0)return!1;const generation=++this.pptxSearchGeneration;return this.pptxSearchActiveIndex=(this.pptxSearchActiveIndex+1)%this.pptxSearchMatches.length,this.emitPptxSearchChange(),await this.focusPptxSearchMatch(this.pptxSearchActiveIndex,generation,viewer),generation===this.pptxSearchGeneration}async searchPrevious(){const viewer=this.viewer;if(!viewer||this.pptxSearchMatches.length===0)return!1;const generation=++this.pptxSearchGeneration;return this.pptxSearchActiveIndex=(this.pptxSearchActiveIndex-1+this.pptxSearchMatches.length)%this.pptxSearchMatches.length,this.emitPptxSearchChange(),await this.focusPptxSearchMatch(this.pptxSearchActiveIndex,generation,viewer),generation===this.pptxSearchGeneration}clearSearch(){this.pptxSearchGeneration++,this.pptxSearchQuery="",this.pptxSearchMatches=[],this.pptxSearchMatchCountExact=!0,this.pptxSearchActiveIndex=-1,this.disposeSearchHighlight(),this.viewer?.clearSearchHighlights(),this.emitPptxSearchChange()}get pageViewerSnapshot(){return this.pageViewerSnapshotValue}set pageViewerSnapshot(_value){}textContentRoot(){return this.renderRoot.querySelector('[part="container"]')??this.renderRoot.querySelector('[part="base"]')}updated(changed){if(super.updated(changed),this.announcements.transition("load",this.phase,this.phase==="error"?this.errorMessage:this.localize("loading")),changed.has("src")&&this.scheduleAfterUpdate(()=>{this.mount()}),changed.has("src")&&this.pendingSearchResetEvent&&(this.pendingSearchResetEvent=!1,this.emitPptxSearchChange()),changed.has("page")&&this.viewer&&this.page-1!==this.currentSlideIndex){const page=this.page;this.scheduleAfterUpdate(()=>{this.page===page&&this.goToSlide(page-1)},"page-navigation")}const locale=this.effectiveLocale;if(locale!==this.lastSearchLocale){const shouldRecompute=this.pptxSearchQuery!=="";this.lastSearchLocale=locale,shouldRecompute&&this.scheduleAfterUpdate(()=>{this.search(this.pptxSearchQuery)},"search")}}willUpdate(changed){super.willUpdate(changed),changed.has("src")&&(this.pendingSearchResetEvent||=this.hasPptxSearchState(),this.resetPptxSearchState()),(changed.has("page")||changed.has("slideCount"))&&(this.page=finiteInteger(this.page,1,1,Math.max(1,this.slideCount)))}connectedCallback(){super.connectedCallback(),this.announcements.connect(),this.hasUpdated&&this.src&&this.scheduleAfterUpdate(()=>{this.mount()})}disconnectedCallback(){this.teardown(),this.phase="idle",this.slideCount=0,this.currentSlideIndex=0,this.page=1,this.pageViewerIdentity++,this.pageViewerSnapshotValue=Object.freeze({identity:this.pageViewerIdentity,status:"idle",page:1,pageCount:0}),this.announcements.disconnect(),super.disconnectedCallback()}adoptedCallback(){super.adoptedCallback(),this.announcements.adopted()}async goToSlide(index){const viewer=this.viewer;if(!viewer||!Number.isSafeInteger(index)||index<0||index>=viewer.slideCount)return;const generation=this.generation;try{await viewer.goToSlide(index)}catch(error){if(isAbortError(error)||!this.isConnected||generation!==this.generation||viewer!==this.viewer)return;this.teardown(),this.phase="error",this.slideCount=0,this.currentSlideIndex=0,this.page=1,this.errorMessage=this.localize("pptxViewerRenderError"),this.publishPageViewerSnapshot("error",0),this.emit("lr-render-error",{error});return}viewer===this.viewer&&viewer.currentSlideIndex!==this.currentSlideIndex&&this.commitSlide(viewer.currentSlideIndex)}async renderPageThumbnailToContainer(page,container,options){const viewer=this.viewer,generation=this.generation,width=options?.width??96;if(!viewer||!Number.isSafeInteger(page)||page<1||page>viewer.slideCount||!Number.isFinite(width)||width<=0||width>MAX_PPTX_THUMBNAIL_WIDTH)return!1;const previousChildren=[...container.childNodes],restorePreviousChildren=()=>{container.replaceChildren(...previousChildren)};let handle;try{handle=viewer.renderThumbnailToContainer(page-1,container,{width})}catch{return restorePreviousChildren(),!1}if(!handle)return restorePreviousChildren(),!1;try{await handle.ready}catch{return handle.dispose(),restorePreviousChildren(),!1}if(generation!==this.generation||viewer!==this.viewer||!container.isConnected)return handle.dispose(),restorePreviousChildren(),!1;for(const child of previousChildren)child.parentNode===container&&child.remove();return handle}isValidSlideIndex(index){return Number.isSafeInteger(index)&&index>=0&&index<this.slideCount}commitSlide(index){if(!this.isValidSlideIndex(index))return;const changed=index!==this.currentSlideIndex;this.currentSlideIndex=index,this.page=index+1,this.publishPageViewerSnapshot("ready",this.slideCount),changed&&this.emit("lr-slide-change",{index,count:this.slideCount})}publishPageViewerSnapshot(status,pageCount){const snapshot=Object.freeze({identity:this.pageViewerIdentity,status,page:status==="ready"?finiteInteger(this.page,1,1,Math.max(1,pageCount)):1,pageCount:status==="ready"?finiteInteger(pageCount,0,0,Number.MAX_SAFE_INTEGER):0}),previous=this.pageViewerSnapshotValue;previous.identity===snapshot.identity&&previous.status===snapshot.status&&previous.page===snapshot.page&&previous.pageCount===snapshot.pageCount||(this.pageViewerSnapshotValue=snapshot,this.isConnected&&this.emit("lr-page-viewer-state-change",{snapshot}))}teardown(){const shouldEmitSearchReset=this.hasPptxSearchState();this.generation++,this.viewerUnsubscribe?.(),this.viewerUnsubscribe=void 0,this.viewer?.destroy(),this.viewer=void 0,this.resetPptxSearchState(),shouldEmitSearchReset&&this.emitPptxSearchChange()}hasPptxSearchState(){return this.pptxSearchQuery!==""||this.pptxSearchMatches.length>0||!this.pptxSearchMatchCountExact||this.pptxSearchActiveIndex!==-1}resetPptxSearchState(){this.pptxSearchGeneration++,this.disposeSearchHighlight(),this.viewer?.clearSearchHighlights(),this.pptxSearchQuery="",this.pptxSearchMatches=[],this.pptxSearchMatchCountExact=!0,this.pptxSearchActiveIndex=-1}normalizeSearchResults(value,slideCount){if(!Array.isArray(value))throw new TypeError("PPTX search returned a non-array result.");const matches=[],work=new ViewerSearchWorkBudget;let matchCountExact=!0;for(const candidate of value){if(!work.consume("")){matchCountExact=!1;break}if(!candidate||typeof candidate!="object")continue;const result=candidate;if(!(!Number.isSafeInteger(result.slideIndex)||result.slideIndex<0||result.slideIndex>=slideCount||typeof result.nodeId!="string"||typeof result.text!="string"||!Number.isSafeInteger(result.matchStart)||!Number.isSafeInteger(result.matchEnd)||result.matchStart<0||result.matchEnd<result.matchStart||result.matchEnd>result.text.length)){if(!work.consume(result.nodeId)||!work.consume(result.text)){matchCountExact=!1;break}if(matches.length===MAX_PPTX_SEARCH_MATCHES){matchCountExact=!1;break}matches.push(candidate)}}return{matches,matchCountExact:matchCountExact&&work.complete}}async focusPptxSearchMatch(index,generation,viewer){const match=this.pptxSearchMatches[index];if(match){this.disposeSearchHighlight(),viewer.clearSearchHighlights();try{if(await viewer.goToSlide(match.slideIndex),generation!==this.pptxSearchGeneration||viewer!==this.viewer)return;const highlight=await viewer.highlightSearchResult(match,{scrollIntoView:!1});if(generation!==this.pptxSearchGeneration||viewer!==this.viewer){highlight?.dispose();return}this.searchHighlight=highlight??void 0}catch(cause){generation===this.pptxSearchGeneration&&viewer===this.viewer&&this.reportPeerDiagnostic("pptx-search-error",cause,{page:match.slideIndex+1})}}}disposeSearchHighlight(){this.searchHighlight?.dispose(),this.searchHighlight=void 0}emitPptxSearchChange(){this.emit("lr-search-change",{query:this.pptxSearchQuery,matchCount:this.pptxSearchMatches.length,matchCountExact:this.pptxSearchMatchCountExact,activeIndex:this.pptxSearchActiveIndex})}reportPeerDiagnostic(code,cause,location={},fatal=!1){this.emit("lr-viewer-diagnostic",{diagnostic:Object.freeze({code,severity:"error",fatal,source:"pptx-renderer",cause,...location})}),fatal&&(this.teardown(),this.phase="error",this.slideCount=0,this.currentSlideIndex=0,this.page=1,this.errorMessage=this.localize("pptxViewerRenderError"),this.publishPageViewerSnapshot("error",0),this.emit("lr-render-error",{error:cause}))}async mount(){this.teardown(),this.pageViewerIdentity++;const signal=this.beginAbortableLoad(),generation=this.generation;if(this.slideCount=0,this.currentSlideIndex=0,this.page=1,!this.src){this.phase="idle",this.publishPageViewerSnapshot("idle",0);return}const fetchTarget=resolveOwnerFetchTarget(this,this.src);if(!fetchTarget){const error=new Error(this.localize("documentPreviewUrlNotAllowed"));this.phase="error",this.errorMessage=error.message,this.publishPageViewerSnapshot("error",0),this.emit("lr-render-error",{error});return}this.phase="loading",this.publishPageViewerSnapshot("loading",0);let module,response;try{[module,response]=await Promise.all([this.loadRenderer(),fetchTarget.view.fetch(fetchTarget.url,signal?{signal}:void 0)])}catch(error){if(isAbortError(error)||!this.isConnected||generation!==this.generation)return;this.phase="error",this.errorMessage=this.localize(isResourceLimitError(error)?"documentPreviewResourceTooLarge":"documentPreviewFailedToLoad"),this.publishPageViewerSnapshot("error",0),this.emit("lr-render-error",{error});return}if(!this.isConnected||generation!==this.generation)return;if(!module||!response.ok){const error=new Error(this.localize(module?"documentPreviewFailedToLoad":"pptxViewerRenderError"));this.phase="error",this.errorMessage=error.message,this.publishPageViewerSnapshot("error",0),this.emit("lr-render-error",{error});return}let buffer;try{if(buffer=await readResponseArrayBuffer(response),!this.isConnected||generation!==this.generation)return;await assertPptxArchiveWithinLimits(buffer,{signal})}catch(error){if(isAbortError(error)||!this.isConnected||generation!==this.generation)return;this.phase="error",this.errorMessage=this.localize(isResourceLimitError(error)?"documentPreviewResourceTooLarge":"documentPreviewFailedToLoad"),this.publishPageViewerSnapshot("error",0),this.emit("lr-render-error",{error});return}if(!(!this.isConnected||generation!==this.generation)&&(this.phase="mounted",await this.updateComplete,!(!this.isConnected||generation!==this.generation||!this.containerEl)))try{const openedViewer=await module.PptxViewer.open(buffer,this.containerEl,{zipLimits:module.RECOMMENDED_ZIP_LIMITS,listOptions:{windowed:!0}});if(!this.isConnected||generation!==this.generation){openedViewer.destroy();return}const viewer=adaptPptxViewer(openedViewer);if(!viewer)throw openedViewer.destroy(),new TypeError("The PPTX renderer did not expose the required viewer capabilities.");this.viewer=viewer,this.viewerUnsubscribe=viewer.subscribe(this.onViewerEvent),this.slideCount=viewer.slideCount,this.isValidSlideIndex(viewer.currentSlideIndex)&&(this.currentSlideIndex=viewer.currentSlideIndex,this.page=viewer.currentSlideIndex+1),this.publishPageViewerSnapshot("ready",viewer.slideCount),this.emit("lr-load",{slideCount:viewer.slideCount})}catch(error){if(isAbortError(error)||!this.isConnected||generation!==this.generation)return;this.phase="error",this.errorMessage=this.localize("pptxViewerRenderError"),this.publishPageViewerSnapshot("error",0),this.emit("lr-render-error",{error})}}renderBody(){return this.phase==="loading"?html`
2
2
  <lr-skeleton shape="rect" .announce=${!1}></lr-skeleton>
3
3
  <span class="sr-only">${this.localize("loading")}</span>
4
4
  `:this.phase==="error"?html`<div part="error">${this.errorMessage}</div>`:this.phase!=="mounted"?nothing:html`
@@ -113,6 +113,11 @@ src:string;
113
113
  get xml():string|undefined;set xml(value:string|undefined);private _xml?;
114
114
  /** Readonly discriminated snapshot of the effective source authority. */
115
115
  get source():LyraXmlViewerSource;
116
+ /** Intentionally inert -- `source` is always derived live from `src`/`xml`. A getter with no
117
+ * setter throws (in strict-mode module code, which every consumer runs) the moment anything
118
+ * assigns to it, including a stray `.source=${x}` template binding; this no-op keeps that
119
+ * assignment harmless instead of throwing from inside framework internals. */
120
+ set source(_value:LyraXmlViewerSource);
116
121
  /** Display name used as the viewer's accessible label. */
117
122
  name:string;
118
123
  /** Elements at or beyond this nesting depth (root = 0) start collapsed. Omit/undefined:
@@ -1,4 +1,4 @@
1
- var __decorate=function(decorators,target,key,desc){var c=arguments.length,r=c<3?target:desc===null?desc=Object.getOwnPropertyDescriptor(target,key):desc,d;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")r=Reflect.decorate(decorators,target,key,desc);else for(var i=decorators.length-1;i>=0;i--)(d=decorators[i])&&(r=(c<3?d(r):c>3?d(target,key,r):d(target,key))||r);return c>3&&r&&Object.defineProperty(target,key,r),r};import{html,nothing}from"lit";import{property,state}from"lit/decorators.js";import{styleMap}from"lit/directives/style-map.js";import{LyraElement}from"../../../internal/lyra-element.js";import{srOnly}from"../../../internal/a11y.js";import{specialistTokens}from"../../../internal/specialist-tokens.styles.js";import{DocumentAnchorTarget,prioritizedHighlightCandidates}from"../../../internal/anchor-target.js";import{isAbortError,isResourceLimitError,readResponseText,LyraResourceLimitError,LyraUserFacingError,resolveOwnerFetchTarget}from"../../../internal/resource-loader.js";import{chevronIcon}from"../../../internal/icons.js";import{prefersReducedMotion}from"../../../internal/motion.js";import{finiteCount}from"../../../internal/numbers.js";import{styles}from"./xml-viewer.styles.js";import{getNumberFormat}from"../../../internal/intl-cache.js";import{sanitizeCssLength}from"../../../internal/safe-css.js";import{viewerSemanticLabel,viewerSemanticRole}from"../viewer-semantic-owner.js";import{resolveViewerSource}from"../viewer-source.js";import{writeClipboardText}from"../../../internal/clipboard.js";import{renderViewerLoading,viewerLoadingStyles}from"../viewer-loading.js";import{ViewerAnnouncementController}from"../viewer-announcements.js";import{boundedViewerSearchQuery,ViewerSearchWorkBudget}from"../viewer-search-limits.js";import{LYRA_DEFAULT_anchorJumped,LYRA_DEFAULT_anchorJumpedToPage,LYRA_DEFAULT_anchorNotFound,LYRA_DEFAULT_copied,LYRA_DEFAULT_copy,LYRA_DEFAULT_copyFailed,LYRA_DEFAULT_documentPreviewEmpty,LYRA_DEFAULT_documentPreviewFailedToLoad,LYRA_DEFAULT_documentPreviewResourceTooLarge,LYRA_DEFAULT_documentPreviewTypeDocument,LYRA_DEFAULT_documentPreviewUrlNotAllowed,LYRA_DEFAULT_highlightOfTotal,LYRA_DEFAULT_highlightWithLabel,LYRA_DEFAULT_loadingDocument,LYRA_DEFAULT_xmlViewerChildCount,LYRA_DEFAULT_xmlViewerCollapseNode,LYRA_DEFAULT_xmlViewerCopyDocument,LYRA_DEFAULT_xmlViewerCopyNode,LYRA_DEFAULT_xmlViewerExpandNode,LYRA_DEFAULT_xmlViewerLabel,LYRA_DEFAULT_xmlViewerParseError,LYRA_DEFAULT_xmlViewerTooManyNodes}from"../../../internal/default-strings.generated.js";const MAX_NODES=5e4,MAX_DEPTH=256,MAX_SEARCH_MATCHES=1e4,MAX_PAINTED_HIGHLIGHTS=100;function attrKey(pathKey,attrName){return`${pathKey}\0${attrName}`}const EMPTY_SEARCH={matches:new Set,tagMatches:new Set,attrMatches:new Set,textMatches:new Set,forceExpand:new Set,paths:new Set,ordered:[],matchCountExact:!0};function elementChildren(node){return Array.from(node.children)}function findParserError(doc){const root=doc.documentElement,onRoot=root?.tagName==="parsererror",onFirstChild=root?.firstElementChild?.tagName==="parsererror",errorEl=onRoot?root:onFirstChild?root.firstElementChild:null;return errorEl?errorEl.textContent??"XML parse error":null}class XmlDoctypeError extends Error{constructor(){super("XML document type declarations are not supported."),this.name="XmlDoctypeError"}}function containsXmlDoctype(raw){for(let offset=0;offset<raw.length;){if(raw.startsWith("<!--",offset)){const end=raw.indexOf("-->",offset+4);if(end<0)return!1;offset=end+3;continue}if(raw.startsWith("<![CDATA[",offset)){const end=raw.indexOf("]]>",offset+9);if(end<0)return!1;offset=end+3;continue}if(raw.slice(offset,offset+9).toUpperCase()==="<!DOCTYPE")return!0;offset++}return!1}function parseXmlDocument(raw,ownerDocument){if(containsXmlDoctype(raw))throw new XmlDoctypeError;const DOMParserCtor=ownerDocument.defaultView?.DOMParser;if(!DOMParserCtor)throw new Error("DOMParser is unavailable without a browsing context.");return new DOMParserCtor().parseFromString(raw,"application/xml")}function validateDocumentComplexity(node){const pending=[{node,depth:0}];let count=0;for(;pending.length;){const current=pending.pop();if(count++,count>MAX_NODES||current.depth>MAX_DEPTH)throw new LyraResourceLimitError;let child=current.node.lastChild;for(;child;){if(count+pending.length>=MAX_NODES)throw new LyraResourceLimitError;pending.push({node:child,depth:current.depth+1}),child=child.previousSibling}}}function resolvePath(root,path,budget){if(!Array.isArray(path)||budget&&budget.remaining--<=0)return null;let current=root;for(let i=0;i<path.length;i++){if(budget&&budget.remaining--<=0)return null;const segment=path[i];if(typeof segment=="string"){if(!segment.startsWith("@")||i!==path.length-1)return null;const attr=segment.slice(1);return!attr||!current.hasAttribute(attr)?null:{element:current,attr}}const children=current.children;if(!Number.isInteger(segment)||segment<0||segment>=children.length)return null;const child=children.item(segment);if(!child)return null;current=child}return{element:current}}class LyraXmlViewerBase extends LyraElement{}class LyraXmlViewer extends DocumentAnchorTarget(LyraXmlViewerBase){constructor(){super(...arguments),this.src="",this.name="",this.copyable=!1,this.maxHeight="",this.anchorKinds=["node-path"],this.xmlState={kind:"idle"},this.expandedOverrides=new Map,this.activePath=null,this.activeAttr=null,this.activeSearchIndex=-1,this.searchQuery="",this.renderedHighlights=new Map,this.searchState=EMPTY_SEARCH,this.lastSearchLocale="",this.pendingSearchStateEvent=!1,this.generation=0,this.announcements=new ViewerAnnouncementController(this),this.copyFeedback=null,this.copyGeneration=0}static{this.defaultStrings={...super.defaultStrings,anchorJumped:LYRA_DEFAULT_anchorJumped,anchorJumpedToPage:LYRA_DEFAULT_anchorJumpedToPage,anchorNotFound:LYRA_DEFAULT_anchorNotFound,copied:LYRA_DEFAULT_copied,copy:LYRA_DEFAULT_copy,copyFailed:LYRA_DEFAULT_copyFailed,documentPreviewEmpty:LYRA_DEFAULT_documentPreviewEmpty,documentPreviewFailedToLoad:LYRA_DEFAULT_documentPreviewFailedToLoad,documentPreviewResourceTooLarge:LYRA_DEFAULT_documentPreviewResourceTooLarge,documentPreviewTypeDocument:LYRA_DEFAULT_documentPreviewTypeDocument,documentPreviewUrlNotAllowed:LYRA_DEFAULT_documentPreviewUrlNotAllowed,highlightOfTotal:LYRA_DEFAULT_highlightOfTotal,highlightWithLabel:LYRA_DEFAULT_highlightWithLabel,loadingDocument:LYRA_DEFAULT_loadingDocument,xmlViewerChildCount:LYRA_DEFAULT_xmlViewerChildCount,xmlViewerCollapseNode:LYRA_DEFAULT_xmlViewerCollapseNode,xmlViewerCopyDocument:LYRA_DEFAULT_xmlViewerCopyDocument,xmlViewerCopyNode:LYRA_DEFAULT_xmlViewerCopyNode,xmlViewerExpandNode:LYRA_DEFAULT_xmlViewerExpandNode,xmlViewerLabel:LYRA_DEFAULT_xmlViewerLabel,xmlViewerParseError:LYRA_DEFAULT_xmlViewerParseError,xmlViewerTooManyNodes:LYRA_DEFAULT_xmlViewerTooManyNodes}}static{this.styles=[LyraElement.styles,specialistTokens,styles,viewerLoadingStyles,srOnly]}get xml(){return this._xml}set xml(value){const old=this._xml;this._xml=value,this.requestUpdate("xml",old),value!==void 0&&this.parseInline(value)}get source(){return resolveViewerSource(this.src,this._xml)}get safeCollapsedDepth(){return this.collapsedDepth===void 0?void 0:finiteCount(this.collapsedDepth)}willUpdate(changed){super.willUpdate(changed),this.hasUpdated&&(changed.has("src")||changed.has("xml"))&&this.resetCopyFeedback(),(changed.has("src")||changed.has("xml"))&&(this.pendingSearchStateEvent||=this.resetSearchForSourceReplacement());const locale=this.effectiveLocale;this.lastSearchLocale&&locale!==this.lastSearchLocale&&this.xmlState.kind==="loaded"&&(this.searchState=this.computeSearch(this.xmlState.doc),this.activeSearchIndex=this.searchState.ordered.length?Math.min(Math.max(0,this.activeSearchIndex),this.searchState.ordered.length-1):-1,this.searchQuery!==""&&(this.pendingSearchStateEvent=!0)),this.lastSearchLocale=locale}updated(changed){super.updated(changed),this.announcements.transition("load",this.xmlState.kind,this.xmlState.kind==="error"?this.xmlState.message:this.localize("loadingDocument")),(changed.has("src")||changed.has("xml"))&&this._xml===void 0&&this.scheduleAfterUpdate(()=>{this.loadFromSrc()}),this.pendingSearchStateEvent&&(this.pendingSearchStateEvent=!1,this.emitSearchChange())}connectedCallback(){super.connectedCallback(),this.announcements.connect(),this.hasUpdated&&this.src&&this._xml===void 0&&this.scheduleAfterUpdate(()=>{this.loadFromSrc()})}disconnectedCallback(){this.generation++,this.beginAbortableLoad(),this._xml===void 0&&(this.xmlState={kind:"idle"}),this.announcements.disconnect(),this.resetCopyFeedback(),super.disconnectedCallback()}adoptedCallback(){super.adoptedCallback(),this.announcements.adopted(),this.resetCopyFeedback()}parseInline(raw){const generation=++this.generation;this.pendingSearchStateEvent||=this.resetSearchForSourceReplacement();try{this.setDoc(parseXmlDocument(raw,this.ownerDocument),generation)}catch(error){this.xmlState={kind:"error",message:this.localize("xmlViewerParseError")},this.emit("lr-render-error",{error})}}async loadFromSrc(){if(this._xml!==void 0)return;const generation=++this.generation,signal=this.beginAbortableLoad();if(this.pendingSearchStateEvent||=this.resetSearchForSourceReplacement(),!this.src){this.xmlState={kind:"idle"};return}const fetchTarget=resolveOwnerFetchTarget(this,this.src);if(!fetchTarget){const error=new LyraUserFacingError(this.localize("documentPreviewUrlNotAllowed"));this.xmlState={kind:"error",message:error.message},this.emit("lr-render-error",{error});return}this.xmlState={kind:"loading"};try{const response=await fetchTarget.view.fetch(fetchTarget.url,signal?{signal}:void 0);if(!this.isConnected||generation!==this.generation)return;if(!response.ok)throw new Error(`${response.status} ${response.statusText}`);const text=await readResponseText(response);if(!this.isConnected||generation!==this.generation)return;this.setDoc(parseXmlDocument(text,this.ownerDocument),generation)}catch(error){if(isAbortError(error)||!this.isConnected||generation!==this.generation)return;this.xmlState={kind:"error",message:this.localize(error instanceof XmlDoctypeError?"xmlViewerParseError":isResourceLimitError(error)?"documentPreviewResourceTooLarge":"documentPreviewFailedToLoad")},this.emit("lr-render-error",{error})}}resetSearchForSourceReplacement(){const changed=this.searchQuery!==""||this.searchState.ordered.length>0||!this.searchState.matchCountExact||this.activeSearchIndex!==-1;return this.searchQuery="",this.searchState=EMPTY_SEARCH,this.activeSearchIndex=-1,changed}setDoc(doc,generation){if(generation!==this.generation)return;const parseError=findParserError(doc);if(parseError){this.xmlState={kind:"error",message:this.localize("xmlViewerParseError")},this.emit("lr-render-error",{error:new Error(parseError)});return}try{validateDocumentComplexity(doc)}catch(error){this.xmlState={kind:"error",message:this.localize("xmlViewerTooManyNodes")},this.emit("lr-render-error",{error});return}this.xmlState={kind:"loaded",doc};const next=this.computeSearch(doc);if(this.searchState=next,this.searchQuery.trim()&&(this.activeSearchIndex=next.ordered.length?Math.min(Math.max(this.activeSearchIndex,0),next.ordered.length-1):-1,this.emitSearchChange()),this.expandedOverrides.size){let pruned=null;for(const key of this.expandedOverrides.keys())next.paths.has(key)||(pruned??=new Map(this.expandedOverrides),pruned.delete(key));pruned&&(this.expandedOverrides=pruned)}}computeSearch(doc){const locale=this.effectiveLocale,boundedQuery=boundedViewerSearchQuery(this.searchQuery,locale),query=boundedQuery.needle,budget=new ViewerSearchWorkBudget,matches=new Set,tagMatches=new Set,attrMatches=new Set,textMatches=new Set,forceExpand=new Set,paths=new Set,ordered=[];let matchCountExact=boundedQuery.accepted;const markAncestors=path=>{for(let i=path.length-1;i>=0;i--)forceExpand.add(JSON.stringify(path.slice(0,i)))},walk=(el,path)=>{const pathKey=JSON.stringify(path);if(paths.add(pathKey),query&&matchCountExact){let hit=!1;budget.includes(el.tagName,query,locale)&&(tagMatches.add(pathKey),hit=!0);for(const attr of el.attributes)if((budget.includes(attr.name,query,locale)||budget.includes(attr.value,query,locale))&&(attrMatches.add(attrKey(pathKey,attr.name)),hit=!0),!budget.complete)break;const ownTextParts=function*(){for(const child of el.childNodes)child.nodeType===Node.TEXT_NODE&&(yield child.textContent??"")};if(budget.complete&&budget.includesJoined(ownTextParts(),query,locale)&&(textMatches.add(pathKey),hit=!0),budget.complete||(matchCountExact=!1),hit)if(ordered.length===MAX_SEARCH_MATCHES){matchCountExact=!1,tagMatches.delete(pathKey),textMatches.delete(pathKey);for(const attr of el.attributes)attrMatches.delete(attrKey(pathKey,attr.name))}else matches.add(pathKey),ordered.push(pathKey),forceExpand.add(pathKey),markAncestors(path)}elementChildren(el).forEach((child,i)=>walk(child,[...path,i]))};return doc.documentElement&&walk(doc.documentElement,[]),{matches,tagMatches,attrMatches,textMatches,forceExpand,paths,ordered,matchCountExact}}async applyAnchor(anchor){if(anchor.kind!=="node-path"||this.xmlState.kind!=="loaded"||!this.xmlState.doc.documentElement)return!1;const resolved=resolvePath(this.xmlState.doc.documentElement,anchor.path);if(!resolved?.element)return!1;const numericPath=anchor.path.filter(s=>typeof s=="number");this.expandAncestors(anchor.path);const pathKey=JSON.stringify(numericPath);return this.activePath=pathKey,this.activeAttr=resolved.attr?attrKey(pathKey,resolved.attr):null,!0}resolveHighlights(){const byPath=new Map;if(this.xmlState.kind!=="loaded")return byPath;const root=this.xmlState.doc.documentElement;if(!root)return byPath;const seen=new Set,resolved=[],candidates=prioritizedHighlightCandidates(this.highlights,this.activeHighlightId),resolutionBudget={remaining:MAX_NODES};for(const highlight of candidates)if(!seen.has(highlight.id)&&(seen.add(highlight.id),highlight.anchor.kind==="node-path"&&resolvePath(root,highlight.anchor.path,resolutionBudget)&&(resolved.push({highlight,pathKey:JSON.stringify(highlight.anchor.path.filter(s=>typeof s=="number"))}),resolved.length>=MAX_PAINTED_HIGHLIGHTS)))break;return resolved.forEach(({highlight,pathKey},index)=>{byPath.has(pathKey)||byPath.set(pathKey,{highlight,index,total:resolved.length})}),byPath}highlightActionLabel(highlight,index,total){if(highlight.label)return this.localize("highlightWithLabel",void 0,{label:highlight.label});const numberFormat=getNumberFormat(this.effectiveLocale);return this.localize("highlightOfTotal",void 0,{index:numberFormat.format(index+1),total:numberFormat.format(total)})}expandAncestors(path,includeSelf=!1){const next=new Map(this.expandedOverrides);for(let i=0;i<path.length;i++)typeof path[i]=="number"&&next.set(JSON.stringify(path.slice(0,i)),!0);includeSelf&&next.set(JSON.stringify(path),!0),this.expandedOverrides=next}async search(query){return this.searchQuery=query,this.searchState=this.xmlState.kind==="loaded"?this.computeSearch(this.xmlState.doc):EMPTY_SEARCH,this.activeSearchIndex=this.searchState.ordered.length?0:-1,this.requestUpdate(),this.emitSearchChange(),this.activeSearchIndex>=0&&await this.scrollActiveMatchIntoView(),this.searchState.ordered.length}async searchNext(){return this.searchState.ordered.length?(this.activeSearchIndex=(this.activeSearchIndex+1)%this.searchState.ordered.length,this.emitSearchChange(),await this.scrollActiveMatchIntoView(),!0):!1}async searchPrevious(){return this.searchState.ordered.length?(this.activeSearchIndex=(this.activeSearchIndex-1+this.searchState.ordered.length)%this.searchState.ordered.length,this.emitSearchChange(),await this.scrollActiveMatchIntoView(),!0):!1}clearSearch(){this.searchQuery="",this.searchState=this.xmlState.kind==="loaded"?this.computeSearch(this.xmlState.doc):EMPTY_SEARCH,this.activeSearchIndex=-1,this.requestUpdate(),this.emitSearchChange()}async scrollActiveMatchIntoView(){const pathKey=this.searchState.ordered[this.activeSearchIndex];if(pathKey===void 0)return;this.expandAncestors(JSON.parse(pathKey),!0),await this.updateComplete,this.renderRoot.querySelector("[data-active-match]")?.scrollIntoView({behavior:prefersReducedMotion(this.ownerDocument.defaultView)?"auto":"smooth",block:"center"})}emitSearchChange(){this.emit("lr-search-change",{query:this.searchQuery,matchCount:this.searchState.ordered.length,matchCountExact:this.searchState.matchCountExact,activeIndex:this.activeSearchIndex})}toggleNode(pathKey,expanded){const next=new Map(this.expandedOverrides);next.set(pathKey,!expanded),this.expandedOverrides=next}isExpanded(pathKey,depth){const override=this.expandedOverrides.get(pathKey);if(override!==void 0)return override;if(this.searchState.forceExpand.has(pathKey))return!0;const collapsedDepth=this.safeCollapsedDepth;return!(collapsedDepth!==void 0&&depth>=collapsedDepth)}cancelCopyTimer(){const timer=this.copyTimer;this.copyTimer=void 0,timer&&timer.owner.clearTimeout(timer.handle)}resetCopyFeedback(){this.copyGeneration++,this.cancelCopyTimer(),this.copyFeedback=null}showCopyFeedback(key,status,generation,owner){this.copyFeedback={key,status},this.cancelCopyTimer();let handle=0;handle=owner.setTimeout(()=>{this.copyTimer?.owner!==owner||this.copyTimer.handle!==handle||this.copyTimer.generation!==generation||generation!==this.copyGeneration||!this.isConnected||this.ownerDocument.defaultView!==owner||(this.copyTimer=void 0,this.copyFeedback=null)},1500),this.copyTimer={owner,handle,generation}}async copyText(text,key){const owner=this.isConnected?this.ownerDocument.defaultView:null,generation=++this.copyGeneration;this.cancelCopyTimer(),this.copyFeedback=null;const outcome=await writeClipboardText(owner,text);if(!(!owner||!this.isConnected||generation!==this.copyGeneration||this.ownerDocument.defaultView!==owner)){if(outcome.ok){this.showCopyFeedback(key,"success",generation,owner),this.emit("lr-copy",outcome);return}this.showCopyFeedback(key,"error",generation,owner),this.emit("lr-error"),this.emit("lr-copy-error",outcome)}}serializeXml(node){const XMLSerializerCtor=this.isConnected?this.ownerDocument.defaultView?.XMLSerializer:void 0;return XMLSerializerCtor?new XMLSerializerCtor().serializeToString(node):null}copySerializedXml(node,key){const text=this.serializeXml(node);text!==null&&this.copyText(text,key)}copyButtonLabel(key,rest){const feedback=this.copyFeedback?.key===key?this.copyFeedback.status:void 0;return feedback==="success"?this.localize("copied"):feedback==="error"?this.localize("copyFailed"):rest}renderCopyButton(getNode,name,key){if(!this.copyable)return nothing;const label=this.copyButtonLabel(key,this.localize("xmlViewerCopyNode",void 0,{name}));return html`
1
+ var __decorate=function(decorators,target,key,desc){var c=arguments.length,r=c<3?target:desc===null?desc=Object.getOwnPropertyDescriptor(target,key):desc,d;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")r=Reflect.decorate(decorators,target,key,desc);else for(var i=decorators.length-1;i>=0;i--)(d=decorators[i])&&(r=(c<3?d(r):c>3?d(target,key,r):d(target,key))||r);return c>3&&r&&Object.defineProperty(target,key,r),r};import{html,nothing}from"lit";import{property,state}from"lit/decorators.js";import{styleMap}from"lit/directives/style-map.js";import{LyraElement}from"../../../internal/lyra-element.js";import{srOnly}from"../../../internal/a11y.js";import{specialistTokens}from"../../../internal/specialist-tokens.styles.js";import{DocumentAnchorTarget,prioritizedHighlightCandidates}from"../../../internal/anchor-target.js";import{isAbortError,isResourceLimitError,readResponseText,LyraResourceLimitError,LyraUserFacingError,resolveOwnerFetchTarget}from"../../../internal/resource-loader.js";import{chevronIcon}from"../../../internal/icons.js";import{prefersReducedMotion}from"../../../internal/motion.js";import{finiteCount}from"../../../internal/numbers.js";import{styles}from"./xml-viewer.styles.js";import{getNumberFormat}from"../../../internal/intl-cache.js";import{sanitizeCssLength}from"../../../internal/safe-css.js";import{viewerSemanticLabel,viewerSemanticRole}from"../viewer-semantic-owner.js";import{resolveViewerSource}from"../viewer-source.js";import{writeClipboardText}from"../../../internal/clipboard.js";import{renderViewerLoading,viewerLoadingStyles}from"../viewer-loading.js";import{ViewerAnnouncementController}from"../viewer-announcements.js";import{boundedViewerSearchQuery,ViewerSearchWorkBudget}from"../viewer-search-limits.js";import{LYRA_DEFAULT_anchorJumped,LYRA_DEFAULT_anchorJumpedToPage,LYRA_DEFAULT_anchorNotFound,LYRA_DEFAULT_copied,LYRA_DEFAULT_copy,LYRA_DEFAULT_copyFailed,LYRA_DEFAULT_documentPreviewEmpty,LYRA_DEFAULT_documentPreviewFailedToLoad,LYRA_DEFAULT_documentPreviewResourceTooLarge,LYRA_DEFAULT_documentPreviewTypeDocument,LYRA_DEFAULT_documentPreviewUrlNotAllowed,LYRA_DEFAULT_highlightOfTotal,LYRA_DEFAULT_highlightWithLabel,LYRA_DEFAULT_loadingDocument,LYRA_DEFAULT_xmlViewerChildCount,LYRA_DEFAULT_xmlViewerCollapseNode,LYRA_DEFAULT_xmlViewerCopyDocument,LYRA_DEFAULT_xmlViewerCopyNode,LYRA_DEFAULT_xmlViewerExpandNode,LYRA_DEFAULT_xmlViewerLabel,LYRA_DEFAULT_xmlViewerParseError,LYRA_DEFAULT_xmlViewerTooManyNodes}from"../../../internal/default-strings.generated.js";const MAX_NODES=5e4,MAX_DEPTH=256,MAX_SEARCH_MATCHES=1e4,MAX_PAINTED_HIGHLIGHTS=100;function attrKey(pathKey,attrName){return`${pathKey}\0${attrName}`}const EMPTY_SEARCH={matches:new Set,tagMatches:new Set,attrMatches:new Set,textMatches:new Set,forceExpand:new Set,paths:new Set,ordered:[],matchCountExact:!0};function elementChildren(node){return Array.from(node.children)}function findParserError(doc){const root=doc.documentElement,onRoot=root?.tagName==="parsererror",onFirstChild=root?.firstElementChild?.tagName==="parsererror",errorEl=onRoot?root:onFirstChild?root.firstElementChild:null;return errorEl?errorEl.textContent??"XML parse error":null}class XmlDoctypeError extends Error{constructor(){super("XML document type declarations are not supported."),this.name="XmlDoctypeError"}}function containsXmlDoctype(raw){for(let offset=0;offset<raw.length;){if(raw.startsWith("<!--",offset)){const end=raw.indexOf("-->",offset+4);if(end<0)return!1;offset=end+3;continue}if(raw.startsWith("<![CDATA[",offset)){const end=raw.indexOf("]]>",offset+9);if(end<0)return!1;offset=end+3;continue}if(raw.slice(offset,offset+9).toUpperCase()==="<!DOCTYPE")return!0;offset++}return!1}function parseXmlDocument(raw,ownerDocument){if(containsXmlDoctype(raw))throw new XmlDoctypeError;const DOMParserCtor=ownerDocument.defaultView?.DOMParser;if(!DOMParserCtor)throw new Error("DOMParser is unavailable without a browsing context.");return new DOMParserCtor().parseFromString(raw,"application/xml")}function validateDocumentComplexity(node){const pending=[{node,depth:0}];let count=0;for(;pending.length;){const current=pending.pop();if(count++,count>MAX_NODES||current.depth>MAX_DEPTH)throw new LyraResourceLimitError;let child=current.node.lastChild;for(;child;){if(count+pending.length>=MAX_NODES)throw new LyraResourceLimitError;pending.push({node:child,depth:current.depth+1}),child=child.previousSibling}}}function resolvePath(root,path,budget){if(!Array.isArray(path)||budget&&budget.remaining--<=0)return null;let current=root;for(let i=0;i<path.length;i++){if(budget&&budget.remaining--<=0)return null;const segment=path[i];if(typeof segment=="string"){if(!segment.startsWith("@")||i!==path.length-1)return null;const attr=segment.slice(1);return!attr||!current.hasAttribute(attr)?null:{element:current,attr}}const children=current.children;if(!Number.isInteger(segment)||segment<0||segment>=children.length)return null;const child=children.item(segment);if(!child)return null;current=child}return{element:current}}class LyraXmlViewerBase extends LyraElement{}class LyraXmlViewer extends DocumentAnchorTarget(LyraXmlViewerBase){constructor(){super(...arguments),this.src="",this.name="",this.copyable=!1,this.maxHeight="",this.anchorKinds=["node-path"],this.xmlState={kind:"idle"},this.expandedOverrides=new Map,this.activePath=null,this.activeAttr=null,this.activeSearchIndex=-1,this.searchQuery="",this.renderedHighlights=new Map,this.searchState=EMPTY_SEARCH,this.lastSearchLocale="",this.pendingSearchStateEvent=!1,this.generation=0,this.announcements=new ViewerAnnouncementController(this),this.copyFeedback=null,this.copyGeneration=0}static{this.defaultStrings={...super.defaultStrings,anchorJumped:LYRA_DEFAULT_anchorJumped,anchorJumpedToPage:LYRA_DEFAULT_anchorJumpedToPage,anchorNotFound:LYRA_DEFAULT_anchorNotFound,copied:LYRA_DEFAULT_copied,copy:LYRA_DEFAULT_copy,copyFailed:LYRA_DEFAULT_copyFailed,documentPreviewEmpty:LYRA_DEFAULT_documentPreviewEmpty,documentPreviewFailedToLoad:LYRA_DEFAULT_documentPreviewFailedToLoad,documentPreviewResourceTooLarge:LYRA_DEFAULT_documentPreviewResourceTooLarge,documentPreviewTypeDocument:LYRA_DEFAULT_documentPreviewTypeDocument,documentPreviewUrlNotAllowed:LYRA_DEFAULT_documentPreviewUrlNotAllowed,highlightOfTotal:LYRA_DEFAULT_highlightOfTotal,highlightWithLabel:LYRA_DEFAULT_highlightWithLabel,loadingDocument:LYRA_DEFAULT_loadingDocument,xmlViewerChildCount:LYRA_DEFAULT_xmlViewerChildCount,xmlViewerCollapseNode:LYRA_DEFAULT_xmlViewerCollapseNode,xmlViewerCopyDocument:LYRA_DEFAULT_xmlViewerCopyDocument,xmlViewerCopyNode:LYRA_DEFAULT_xmlViewerCopyNode,xmlViewerExpandNode:LYRA_DEFAULT_xmlViewerExpandNode,xmlViewerLabel:LYRA_DEFAULT_xmlViewerLabel,xmlViewerParseError:LYRA_DEFAULT_xmlViewerParseError,xmlViewerTooManyNodes:LYRA_DEFAULT_xmlViewerTooManyNodes}}static{this.styles=[LyraElement.styles,specialistTokens,styles,viewerLoadingStyles,srOnly]}get xml(){return this._xml}set xml(value){const old=this._xml;this._xml=value,this.requestUpdate("xml",old),value!==void 0&&this.parseInline(value)}get source(){return resolveViewerSource(this.src,this._xml)}set source(_value){}get safeCollapsedDepth(){return this.collapsedDepth===void 0?void 0:finiteCount(this.collapsedDepth)}willUpdate(changed){super.willUpdate(changed),this.hasUpdated&&(changed.has("src")||changed.has("xml"))&&this.resetCopyFeedback(),(changed.has("src")||changed.has("xml"))&&(this.pendingSearchStateEvent||=this.resetSearchForSourceReplacement());const locale=this.effectiveLocale;this.lastSearchLocale&&locale!==this.lastSearchLocale&&this.xmlState.kind==="loaded"&&(this.searchState=this.computeSearch(this.xmlState.doc),this.activeSearchIndex=this.searchState.ordered.length?Math.min(Math.max(0,this.activeSearchIndex),this.searchState.ordered.length-1):-1,this.searchQuery!==""&&(this.pendingSearchStateEvent=!0)),this.lastSearchLocale=locale}updated(changed){super.updated(changed),this.announcements.transition("load",this.xmlState.kind,this.xmlState.kind==="error"?this.xmlState.message:this.localize("loadingDocument")),(changed.has("src")||changed.has("xml"))&&this._xml===void 0&&this.scheduleAfterUpdate(()=>{this.loadFromSrc()}),this.pendingSearchStateEvent&&(this.pendingSearchStateEvent=!1,this.emitSearchChange())}connectedCallback(){super.connectedCallback(),this.announcements.connect(),this.hasUpdated&&this.src&&this._xml===void 0&&this.scheduleAfterUpdate(()=>{this.loadFromSrc()})}disconnectedCallback(){this.generation++,this.beginAbortableLoad(),this._xml===void 0&&(this.xmlState={kind:"idle"}),this.announcements.disconnect(),this.resetCopyFeedback(),super.disconnectedCallback()}adoptedCallback(){super.adoptedCallback(),this.announcements.adopted(),this.resetCopyFeedback()}parseInline(raw){const generation=++this.generation;this.pendingSearchStateEvent||=this.resetSearchForSourceReplacement();try{this.setDoc(parseXmlDocument(raw,this.ownerDocument),generation)}catch(error){this.xmlState={kind:"error",message:this.localize("xmlViewerParseError")},this.emit("lr-render-error",{error})}}async loadFromSrc(){if(this._xml!==void 0)return;const generation=++this.generation,signal=this.beginAbortableLoad();if(this.pendingSearchStateEvent||=this.resetSearchForSourceReplacement(),!this.src){this.xmlState={kind:"idle"};return}const fetchTarget=resolveOwnerFetchTarget(this,this.src);if(!fetchTarget){const error=new LyraUserFacingError(this.localize("documentPreviewUrlNotAllowed"));this.xmlState={kind:"error",message:error.message},this.emit("lr-render-error",{error});return}this.xmlState={kind:"loading"};try{const response=await fetchTarget.view.fetch(fetchTarget.url,signal?{signal}:void 0);if(!this.isConnected||generation!==this.generation)return;if(!response.ok)throw new Error(`${response.status} ${response.statusText}`);const text=await readResponseText(response);if(!this.isConnected||generation!==this.generation)return;this.setDoc(parseXmlDocument(text,this.ownerDocument),generation)}catch(error){if(isAbortError(error)||!this.isConnected||generation!==this.generation)return;this.xmlState={kind:"error",message:this.localize(error instanceof XmlDoctypeError?"xmlViewerParseError":isResourceLimitError(error)?"documentPreviewResourceTooLarge":"documentPreviewFailedToLoad")},this.emit("lr-render-error",{error})}}resetSearchForSourceReplacement(){const changed=this.searchQuery!==""||this.searchState.ordered.length>0||!this.searchState.matchCountExact||this.activeSearchIndex!==-1;return this.searchQuery="",this.searchState=EMPTY_SEARCH,this.activeSearchIndex=-1,changed}setDoc(doc,generation){if(generation!==this.generation)return;const parseError=findParserError(doc);if(parseError){this.xmlState={kind:"error",message:this.localize("xmlViewerParseError")},this.emit("lr-render-error",{error:new Error(parseError)});return}try{validateDocumentComplexity(doc)}catch(error){this.xmlState={kind:"error",message:this.localize("xmlViewerTooManyNodes")},this.emit("lr-render-error",{error});return}this.xmlState={kind:"loaded",doc};const next=this.computeSearch(doc);if(this.searchState=next,this.searchQuery.trim()&&(this.activeSearchIndex=next.ordered.length?Math.min(Math.max(this.activeSearchIndex,0),next.ordered.length-1):-1,this.emitSearchChange()),this.expandedOverrides.size){let pruned=null;for(const key of this.expandedOverrides.keys())next.paths.has(key)||(pruned??=new Map(this.expandedOverrides),pruned.delete(key));pruned&&(this.expandedOverrides=pruned)}}computeSearch(doc){const locale=this.effectiveLocale,boundedQuery=boundedViewerSearchQuery(this.searchQuery,locale),query=boundedQuery.needle,budget=new ViewerSearchWorkBudget,matches=new Set,tagMatches=new Set,attrMatches=new Set,textMatches=new Set,forceExpand=new Set,paths=new Set,ordered=[];let matchCountExact=boundedQuery.accepted;const markAncestors=path=>{for(let i=path.length-1;i>=0;i--)forceExpand.add(JSON.stringify(path.slice(0,i)))},walk=(el,path)=>{const pathKey=JSON.stringify(path);if(paths.add(pathKey),query&&matchCountExact){let hit=!1;budget.includes(el.tagName,query,locale)&&(tagMatches.add(pathKey),hit=!0);for(const attr of el.attributes)if((budget.includes(attr.name,query,locale)||budget.includes(attr.value,query,locale))&&(attrMatches.add(attrKey(pathKey,attr.name)),hit=!0),!budget.complete)break;const ownTextParts=function*(){for(const child of el.childNodes)child.nodeType===Node.TEXT_NODE&&(yield child.textContent??"")};if(budget.complete&&budget.includesJoined(ownTextParts(),query,locale)&&(textMatches.add(pathKey),hit=!0),budget.complete||(matchCountExact=!1),hit)if(ordered.length===MAX_SEARCH_MATCHES){matchCountExact=!1,tagMatches.delete(pathKey),textMatches.delete(pathKey);for(const attr of el.attributes)attrMatches.delete(attrKey(pathKey,attr.name))}else matches.add(pathKey),ordered.push(pathKey),forceExpand.add(pathKey),markAncestors(path)}elementChildren(el).forEach((child,i)=>walk(child,[...path,i]))};return doc.documentElement&&walk(doc.documentElement,[]),{matches,tagMatches,attrMatches,textMatches,forceExpand,paths,ordered,matchCountExact}}async applyAnchor(anchor){if(anchor.kind!=="node-path"||this.xmlState.kind!=="loaded"||!this.xmlState.doc.documentElement)return!1;const resolved=resolvePath(this.xmlState.doc.documentElement,anchor.path);if(!resolved?.element)return!1;const numericPath=anchor.path.filter(s=>typeof s=="number");this.expandAncestors(anchor.path);const pathKey=JSON.stringify(numericPath);return this.activePath=pathKey,this.activeAttr=resolved.attr?attrKey(pathKey,resolved.attr):null,!0}resolveHighlights(){const byPath=new Map;if(this.xmlState.kind!=="loaded")return byPath;const root=this.xmlState.doc.documentElement;if(!root)return byPath;const seen=new Set,resolved=[],candidates=prioritizedHighlightCandidates(this.highlights,this.activeHighlightId),resolutionBudget={remaining:MAX_NODES};for(const highlight of candidates)if(!seen.has(highlight.id)&&(seen.add(highlight.id),highlight.anchor.kind==="node-path"&&resolvePath(root,highlight.anchor.path,resolutionBudget)&&(resolved.push({highlight,pathKey:JSON.stringify(highlight.anchor.path.filter(s=>typeof s=="number"))}),resolved.length>=MAX_PAINTED_HIGHLIGHTS)))break;return resolved.forEach(({highlight,pathKey},index)=>{byPath.has(pathKey)||byPath.set(pathKey,{highlight,index,total:resolved.length})}),byPath}highlightActionLabel(highlight,index,total){if(highlight.label)return this.localize("highlightWithLabel",void 0,{label:highlight.label});const numberFormat=getNumberFormat(this.effectiveLocale);return this.localize("highlightOfTotal",void 0,{index:numberFormat.format(index+1),total:numberFormat.format(total)})}expandAncestors(path,includeSelf=!1){const next=new Map(this.expandedOverrides);for(let i=0;i<path.length;i++)typeof path[i]=="number"&&next.set(JSON.stringify(path.slice(0,i)),!0);includeSelf&&next.set(JSON.stringify(path),!0),this.expandedOverrides=next}async search(query){return this.searchQuery=query,this.searchState=this.xmlState.kind==="loaded"?this.computeSearch(this.xmlState.doc):EMPTY_SEARCH,this.activeSearchIndex=this.searchState.ordered.length?0:-1,this.requestUpdate(),this.emitSearchChange(),this.activeSearchIndex>=0&&await this.scrollActiveMatchIntoView(),this.searchState.ordered.length}async searchNext(){return this.searchState.ordered.length?(this.activeSearchIndex=(this.activeSearchIndex+1)%this.searchState.ordered.length,this.emitSearchChange(),await this.scrollActiveMatchIntoView(),!0):!1}async searchPrevious(){return this.searchState.ordered.length?(this.activeSearchIndex=(this.activeSearchIndex-1+this.searchState.ordered.length)%this.searchState.ordered.length,this.emitSearchChange(),await this.scrollActiveMatchIntoView(),!0):!1}clearSearch(){this.searchQuery="",this.searchState=this.xmlState.kind==="loaded"?this.computeSearch(this.xmlState.doc):EMPTY_SEARCH,this.activeSearchIndex=-1,this.requestUpdate(),this.emitSearchChange()}async scrollActiveMatchIntoView(){const pathKey=this.searchState.ordered[this.activeSearchIndex];if(pathKey===void 0)return;this.expandAncestors(JSON.parse(pathKey),!0),await this.updateComplete,this.renderRoot.querySelector("[data-active-match]")?.scrollIntoView({behavior:prefersReducedMotion(this.ownerDocument.defaultView)?"auto":"smooth",block:"center"})}emitSearchChange(){this.emit("lr-search-change",{query:this.searchQuery,matchCount:this.searchState.ordered.length,matchCountExact:this.searchState.matchCountExact,activeIndex:this.activeSearchIndex})}toggleNode(pathKey,expanded){const next=new Map(this.expandedOverrides);next.set(pathKey,!expanded),this.expandedOverrides=next}isExpanded(pathKey,depth){const override=this.expandedOverrides.get(pathKey);if(override!==void 0)return override;if(this.searchState.forceExpand.has(pathKey))return!0;const collapsedDepth=this.safeCollapsedDepth;return!(collapsedDepth!==void 0&&depth>=collapsedDepth)}cancelCopyTimer(){const timer=this.copyTimer;this.copyTimer=void 0,timer&&timer.owner.clearTimeout(timer.handle)}resetCopyFeedback(){this.copyGeneration++,this.cancelCopyTimer(),this.copyFeedback=null}showCopyFeedback(key,status,generation,owner){this.copyFeedback={key,status},this.cancelCopyTimer();let handle=0;handle=owner.setTimeout(()=>{this.copyTimer?.owner!==owner||this.copyTimer.handle!==handle||this.copyTimer.generation!==generation||generation!==this.copyGeneration||!this.isConnected||this.ownerDocument.defaultView!==owner||(this.copyTimer=void 0,this.copyFeedback=null)},1500),this.copyTimer={owner,handle,generation}}async copyText(text,key){const owner=this.isConnected?this.ownerDocument.defaultView:null,generation=++this.copyGeneration;this.cancelCopyTimer(),this.copyFeedback=null;const outcome=await writeClipboardText(owner,text);if(!(!owner||!this.isConnected||generation!==this.copyGeneration||this.ownerDocument.defaultView!==owner)){if(outcome.ok){this.showCopyFeedback(key,"success",generation,owner),this.emit("lr-copy",outcome);return}this.showCopyFeedback(key,"error",generation,owner),this.emit("lr-error"),this.emit("lr-copy-error",outcome)}}serializeXml(node){const XMLSerializerCtor=this.isConnected?this.ownerDocument.defaultView?.XMLSerializer:void 0;return XMLSerializerCtor?new XMLSerializerCtor().serializeToString(node):null}copySerializedXml(node,key){const text=this.serializeXml(node);text!==null&&this.copyText(text,key)}copyButtonLabel(key,rest){const feedback=this.copyFeedback?.key===key?this.copyFeedback.status:void 0;return feedback==="success"?this.localize("copied"):feedback==="error"?this.localize("copyFailed"):rest}renderCopyButton(getNode,name,key){if(!this.copyable)return nothing;const label=this.copyButtonLabel(key,this.localize("xmlViewerCopyNode",void 0,{name}));return html`
2
2
  <button
3
3
  part="copy-button"
4
4
  type="button"