@aceshooting/lyra-ui 13.0.1 → 14.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (723) hide show
  1. package/CHANGELOG.md +329 -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 +23 -15
  5. package/dist/components/agent-tools/activity-feed/activity-feed.class.js +9 -6
  6. package/dist/components/agent-tools/agent-trace/agent-trace.class.d.ts +12 -3
  7. package/dist/components/agent-tools/agent-trace/agent-trace.class.js +2 -1
  8. package/dist/components/agent-tools/approval-queue/approval-queue.class.d.ts +4 -2
  9. package/dist/components/agent-tools/approval-queue/approval-queue.class.js +1 -1
  10. package/dist/components/agent-tools/artifact-panel/artifact-panel.styles.js +1 -1
  11. package/dist/components/agent-tools/commit-card/commit-card.class.d.ts +3 -1
  12. package/dist/components/agent-tools/commit-card/commit-card.class.js +2 -2
  13. package/dist/components/agent-tools/compare-panel/compare-panel.class.d.ts +2 -1
  14. package/dist/components/agent-tools/compare-panel/compare-panel.styles.js +1 -1
  15. package/dist/components/agent-tools/prompt-studio/prompt-studio.class.d.ts +6 -2
  16. package/dist/components/agent-tools/prompt-studio/prompt-studio.class.js +8 -8
  17. package/dist/components/agent-tools/result-card/result-card.class.d.ts +1 -1
  18. package/dist/components/agent-tools/result-card/result-card.class.js +1 -1
  19. package/dist/components/agent-tools/result-card/result-field.class.d.ts +1 -1
  20. package/dist/components/agent-tools/result-card/result-field.class.js +1 -1
  21. package/dist/components/agent-tools/schema-viewer/schema-viewer.class.d.ts +5 -5
  22. package/dist/components/agent-tools/schema-viewer/schema-viewer.class.js +23 -10
  23. package/dist/components/agent-tools/span-waterfall/span-waterfall.class.d.ts +13 -6
  24. package/dist/components/agent-tools/span-waterfall/span-waterfall.class.js +3 -3
  25. package/dist/components/agent-tools/span-waterfall/span-waterfall.styles.js +1 -1
  26. package/dist/components/agent-tools/stack-trace/stack-trace-parse.js +3 -3
  27. package/dist/components/agent-tools/stack-trace/stack-trace.class.d.ts +1 -1
  28. package/dist/components/agent-tools/stack-trace/stack-trace.class.js +1 -1
  29. package/dist/components/agent-tools/subagent-panel/subagent-panel.class.js +1 -1
  30. package/dist/components/agent-tools/subagent-panel/subagent-panel.styles.js +1 -1
  31. package/dist/components/agent-tools/task-list/task-list.class.d.ts +1 -2
  32. package/dist/components/agent-tools/task-list/task-list.class.js +2 -2
  33. package/dist/components/agent-tools/terminal/terminal.class.d.ts +11 -2
  34. package/dist/components/agent-tools/terminal/terminal.class.js +5 -5
  35. package/dist/components/agent-tools/terminal/terminal.styles.js +1 -1
  36. package/dist/components/agent-tools/test-results/test-results.class.d.ts +4 -2
  37. package/dist/components/agent-tools/test-results/test-results.class.js +2 -2
  38. package/dist/components/agent-tools/thinking-panel/thinking-panel.class.d.ts +2 -0
  39. package/dist/components/agent-tools/thinking-panel/thinking-panel.styles.js +1 -1
  40. package/dist/components/agent-tools/tool-approval-dialog/tool-approval-dialog.class.js +1 -1
  41. package/dist/components/agent-tools/tool-call-chip/tool-call-chip.class.d.ts +2 -2
  42. package/dist/components/agent-tools/tool-call-chip/tool-call-chip.class.js +1 -1
  43. package/dist/components/agent-tools/tool-param-form/tool-param-form.class.js +3 -2
  44. package/dist/components/agent-tools/tool-param-form/tool-param-form.d.ts +1 -1
  45. package/dist/components/agent-tools/tool-param-form/tool-param-form.js +1 -1
  46. package/dist/components/agent-tools/tool-result-dialog/tool-result-dialog.class.js +2 -2
  47. package/dist/components/agent-tools/tool-result-dialog/tool-result-dialog.styles.js +1 -1
  48. package/dist/components/agent-tools/tool-result-view/registry.d.ts +2 -1
  49. package/dist/components/agent-tools/tool-result-view/tool-result-view.class.d.ts +1 -1
  50. package/dist/components/agent-tools/tool-result-view/tool-result-view.class.js +1 -1
  51. package/dist/components/agent-tools/tool-select-dialog/tool-select-dialog.class.d.ts +18 -12
  52. package/dist/components/agent-tools/tool-select-dialog/tool-select-dialog.class.js +7 -7
  53. package/dist/components/agent-tools/tool-timeline/tool-timeline.class.d.ts +9 -3
  54. package/dist/components/agent-tools/tool-timeline/tool-timeline.class.js +1 -1
  55. package/dist/components/agent-tools/trace-tree/span.d.ts +3 -1
  56. package/dist/components/agent-tools/trace-tree/span.js +1 -1
  57. package/dist/components/agent-tools/trace-tree/trace-tree.styles.js +1 -1
  58. package/dist/components/charts/chart/box-plot.class.d.ts +12 -3
  59. package/dist/components/charts/chart/box-plot.class.js +9 -9
  60. package/dist/components/charts/chart/box-plot.styles.js +1 -1
  61. package/dist/components/charts/chart/chart-core-loader.js +1 -1
  62. package/dist/components/charts/chart/chart-feature-loader.js +1 -1
  63. package/dist/components/charts/chart/chart-preload.d.ts +1 -1
  64. package/dist/components/charts/chart/chart-preload.js +1 -1
  65. package/dist/components/charts/chart/chart.class.d.ts +33 -10
  66. package/dist/components/charts/chart/chart.class.js +23 -14
  67. package/dist/components/charts/chart/chart.styles.js +1 -1
  68. package/dist/components/charts/chart/histogram-bin.js +1 -1
  69. package/dist/components/charts/chart/lite-chart.class.d.ts +20 -11
  70. package/dist/components/charts/chart/lite-chart.class.js +17 -11
  71. package/dist/components/charts/chart/lite-chart.styles.js +1 -1
  72. package/dist/components/conversation/agent-workspace/agent-workspace.class.d.ts +1 -1
  73. package/dist/components/conversation/agent-workspace/agent-workspace.class.js +2 -2
  74. package/dist/components/conversation/audio-visualizer/audio-visualizer.class.d.ts +10 -5
  75. package/dist/components/conversation/audio-visualizer/audio-visualizer.class.js +1 -1
  76. package/dist/components/conversation/branch-picker/branch-picker.class.d.ts +4 -2
  77. package/dist/components/conversation/branch-picker/branch-picker.class.js +1 -1
  78. package/dist/components/conversation/branch-picker/branch-picker.styles.js +1 -1
  79. package/dist/components/conversation/chat-composer/chat-composer.class.d.ts +6 -2
  80. package/dist/components/conversation/chat-composer/chat-composer.class.js +3 -3
  81. package/dist/components/conversation/chat-composer/chat-composer.styles.js +1 -1
  82. package/dist/components/conversation/chat-message/chat-message.class.d.ts +4 -3
  83. package/dist/components/conversation/chat-message/chat-message.class.js +2 -2
  84. package/dist/components/conversation/chat-message/chat-message.styles.js +1 -1
  85. package/dist/components/conversation/chat-viewport/chat-viewport.styles.js +1 -1
  86. package/dist/components/conversation/code-block/code-block-core.class.d.ts +4 -3
  87. package/dist/components/conversation/code-block/code-block-core.class.js +1 -1
  88. package/dist/components/conversation/code-block/code-block-shared.d.ts +3 -3
  89. package/dist/components/conversation/code-block/code-block-shared.js +2 -2
  90. package/dist/components/conversation/code-block/code-block.class.d.ts +4 -3
  91. package/dist/components/conversation/code-block/code-block.class.js +1 -1
  92. package/dist/components/conversation/code-block/code-block.styles.js +1 -1
  93. package/dist/components/conversation/code-block/code-loader.d.ts +1 -1
  94. package/dist/components/conversation/code-block/code-loader.js +1 -1
  95. package/dist/components/conversation/code-block/shiki-types.d.ts +2 -0
  96. package/dist/components/conversation/code-block/shiki-types.js +1 -1
  97. package/dist/components/conversation/conversation-item/conversation-item.class.js +1 -1
  98. package/dist/components/conversation/conversation-item/conversation-item.styles.js +1 -1
  99. package/dist/components/conversation/generation-metrics/generation-metrics.styles.js +1 -1
  100. package/dist/components/conversation/markdown/katex-loader.d.ts +4 -4
  101. package/dist/components/conversation/markdown/katex-loader.js +1 -1
  102. package/dist/components/conversation/markdown/markdown-base.class.js +1 -1
  103. package/dist/components/conversation/markdown/markdown-core.class.d.ts +1 -1
  104. package/dist/components/conversation/markdown/markdown-loader.d.ts +1 -1
  105. package/dist/components/conversation/markdown/markdown-loader.js +1 -1
  106. package/dist/components/conversation/markdown/markdown-shared.d.ts +6 -1
  107. package/dist/components/conversation/markdown/markdown-shared.js +5 -4
  108. package/dist/components/conversation/markdown/markdown.class.d.ts +1 -1
  109. package/dist/components/conversation/message-actions/message-actions.class.d.ts +18 -3
  110. package/dist/components/conversation/message-actions/message-actions.class.js +2 -2
  111. package/dist/components/conversation/message-actions/message-actions.styles.js +1 -1
  112. package/dist/components/conversation/message-actions/toolbar-actions.d.ts +3 -1
  113. package/dist/components/conversation/message-actions/toolbar-actions.js +1 -1
  114. package/dist/components/conversation/message-feedback/message-feedback.class.d.ts +40 -15
  115. package/dist/components/conversation/message-feedback/message-feedback.class.js +7 -3
  116. package/dist/components/conversation/message-feedback/message-feedback.styles.js +1 -1
  117. package/dist/components/conversation/message-parts/message-parts.class.d.ts +10 -4
  118. package/dist/components/conversation/message-parts/message-parts.class.js +2 -2
  119. package/dist/components/conversation/message-parts/message-parts.styles.js +1 -1
  120. package/dist/components/conversation/model-select/model-select.class.d.ts +5 -2
  121. package/dist/components/conversation/model-select/model-select.class.js +8 -5
  122. package/dist/components/conversation/model-settings-panel/model-settings-panel.class.d.ts +3 -5
  123. package/dist/components/conversation/model-settings-panel/model-settings-panel.class.js +2 -1
  124. package/dist/components/conversation/prompt-input/prompt-input.class.d.ts +9 -2
  125. package/dist/components/conversation/prompt-input/prompt-input.class.js +3 -3
  126. package/dist/components/conversation/prompt-input/prompt-input.styles.js +1 -1
  127. package/dist/components/conversation/prompt-queue/prompt-queue.class.d.ts +20 -4
  128. package/dist/components/conversation/prompt-queue/prompt-queue.class.js +1 -1
  129. package/dist/components/conversation/prompt-queue/prompt-queue.styles.js +1 -1
  130. package/dist/components/conversation/push-to-talk/push-to-talk.class.d.ts +17 -8
  131. package/dist/components/conversation/push-to-talk/push-to-talk.class.js +1 -1
  132. package/dist/components/conversation/push-to-talk/push-to-talk.styles.js +1 -1
  133. package/dist/components/conversation/selection-toolbar/selection-toolbar.class.d.ts +6 -3
  134. package/dist/components/conversation/selection-toolbar/selection-toolbar.class.js +1 -1
  135. package/dist/components/conversation/selection-toolbar/selection-toolbar.styles.js +1 -1
  136. package/dist/components/conversation/thread-list/thread-list.class.d.ts +14 -4
  137. package/dist/components/conversation/thread-list/thread-list.class.js +11 -11
  138. package/dist/components/conversation/thread-list/thread-list.styles.js +1 -1
  139. package/dist/components/conversation/transcript-feed/transcript-feed.class.d.ts +2 -0
  140. package/dist/components/conversation/transcript-feed/transcript-feed.class.js +1 -1
  141. package/dist/components/conversation/transcript-feed/transcript-feed.styles.js +1 -1
  142. package/dist/components/conversation/typing-indicator/typing-indicator.class.d.ts +2 -1
  143. package/dist/components/conversation/typing-indicator/typing-indicator.class.js +1 -1
  144. package/dist/components/conversation/usage-badge/usage-badge-overlay-runtime.d.ts +3 -0
  145. package/dist/components/conversation/usage-badge/usage-badge-overlay-runtime.js +1 -0
  146. package/dist/components/conversation/usage-badge/usage-badge.class.d.ts +4 -2
  147. package/dist/components/conversation/usage-badge/usage-badge.class.js +1 -1
  148. package/dist/components/conversation/voice-picker/voice-picker.class.d.ts +12 -4
  149. package/dist/components/conversation/voice-picker/voice-picker.class.js +8 -5
  150. package/dist/components/conversation/voice-picker/voice-picker.styles.js +1 -1
  151. package/dist/components/conversation/widget-renderer/resolve.d.ts +4 -6
  152. package/dist/components/conversation/widget-renderer/resolve.js +1 -1
  153. package/dist/components/data/calendar/calendar.class.d.ts +16 -5
  154. package/dist/components/data/calendar/calendar.class.js +2 -2
  155. package/dist/components/data/calendar/calendar.styles.js +1 -1
  156. package/dist/components/data/condition-builder/condition-builder.class.d.ts +3 -1
  157. package/dist/components/data/condition-builder/condition-builder.class.js +15 -1
  158. package/dist/components/data/context-meter/context-meter.class.d.ts +3 -1
  159. package/dist/components/data/context-meter/context-meter.class.js +4 -4
  160. package/dist/components/data/data-grid/data-grid.class.d.ts +51 -6
  161. package/dist/components/data/data-grid/data-grid.class.js +25 -11
  162. package/dist/components/data/data-grid/data-grid.styles.js +1 -1
  163. package/dist/components/data/document-library/document-library.class.d.ts +5 -2
  164. package/dist/components/data/document-library/document-library.class.js +1 -1
  165. package/dist/components/data/env-list/env-list.class.js +1 -1
  166. package/dist/components/data/file-tree/file-tree.class.d.ts +2 -1
  167. package/dist/components/data/file-tree/file-tree.class.js +1 -1
  168. package/dist/components/data/flow-canvas/flow-canvas.class.d.ts +24 -14
  169. package/dist/components/data/flow-canvas/flow-canvas.class.js +1 -2
  170. package/dist/components/data/flow-canvas/flow-canvas.styles.js +1 -1
  171. package/dist/components/data/flow-canvas/flow-model.js +1 -1
  172. package/dist/components/data/flow-canvas/flow-types.d.ts +2 -1
  173. package/dist/components/data/flow-controls/flow-controls.styles.js +1 -1
  174. package/dist/components/data/flow-run-status/flow-run-status.class.js +1 -1
  175. package/dist/components/data/funnel/funnel.class.d.ts +1 -0
  176. package/dist/components/data/funnel/funnel.class.js +1 -1
  177. package/dist/components/data/gauge/gauge.class.d.ts +4 -1
  178. package/dist/components/data/gauge/gauge.class.js +6 -6
  179. package/dist/components/data/graph-query-builder/graph-query-builder.class.d.ts +5 -2
  180. package/dist/components/data/graph-query-builder/graph-query-builder.class.js +15 -1
  181. package/dist/components/data/graph-query-builder/graph-query-builder.styles.js +1 -1
  182. package/dist/components/data/heatmap/heatmap.class.d.ts +7 -4
  183. package/dist/components/data/heatmap/heatmap.class.js +1 -1
  184. package/dist/components/data/sequence-strip/sequence-strip.class.js +1 -1
  185. package/dist/components/data/sparkline/sparkline.class.d.ts +2 -1
  186. package/dist/components/data/sparkline/sparkline.class.js +1 -1
  187. package/dist/components/data/stat/stat.class.d.ts +6 -2
  188. package/dist/components/data/stat/stat.class.js +1 -1
  189. package/dist/components/data/table/table.class.d.ts +15 -16
  190. package/dist/components/data/table/table.class.js +5 -4
  191. package/dist/components/data/table/table.styles.js +1 -1
  192. package/dist/components/data/timeline/timeline.class.d.ts +7 -2
  193. package/dist/components/data/timeline/timeline.class.js +1 -1
  194. package/dist/components/data/timeline/timeline.styles.js +1 -1
  195. package/dist/components/data/tree/tree-item.class.d.ts +3 -1
  196. package/dist/components/data/tree/tree-item.class.js +1 -1
  197. package/dist/components/data/tree/tree-item.styles.js +1 -1
  198. package/dist/components/data/tree/tree.class.d.ts +4 -1
  199. package/dist/components/data/tree/tree.class.js +1 -1
  200. package/dist/components/data/word-cloud/word-cloud-layout.d.ts +2 -1
  201. package/dist/components/data/word-cloud/word-cloud-layout.js +1 -1
  202. package/dist/components/data/word-cloud/word-cloud.class.d.ts +2 -1
  203. package/dist/components/data/word-cloud/word-cloud.class.js +1 -1
  204. package/dist/components/forms/button/button.class.d.ts +5 -3
  205. package/dist/components/forms/button/button.class.js +1 -1
  206. package/dist/components/forms/checkbox/checkbox.class.d.ts +3 -0
  207. package/dist/components/forms/checkbox/checkbox.class.js +1 -1
  208. package/dist/components/forms/checkbox-group/checkbox-group.class.d.ts +7 -2
  209. package/dist/components/forms/checkbox-group/checkbox-group.class.js +1 -1
  210. package/dist/components/forms/code-editor/code-editor.class.d.ts +16 -4
  211. package/dist/components/forms/code-editor/code-editor.class.js +19 -9
  212. package/dist/components/forms/code-editor/code-editor.styles.js +1 -1
  213. package/dist/components/forms/color-picker/color-picker.class.d.ts +6 -2
  214. package/dist/components/forms/color-picker/color-picker.class.js +4 -4
  215. package/dist/components/forms/combobox/combobox.class.d.ts +19 -8
  216. package/dist/components/forms/combobox/combobox.class.js +3 -3
  217. package/dist/components/forms/combobox/combobox.styles.js +1 -1
  218. package/dist/components/forms/combobox/option.class.d.ts +4 -0
  219. package/dist/components/forms/combobox/option.class.js +2 -2
  220. package/dist/components/forms/date-picker/calendar-core.d.ts +1 -1
  221. package/dist/components/forms/date-picker/calendar-core.js +1 -1
  222. package/dist/components/forms/date-picker/date-input.class.d.ts +20 -10
  223. package/dist/components/forms/date-picker/date-input.class.js +4 -4
  224. package/dist/components/forms/date-picker/date-picker.class.d.ts +33 -15
  225. package/dist/components/forms/date-picker/date-picker.class.js +8 -8
  226. package/dist/components/forms/date-picker/date-picker.styles.js +1 -1
  227. package/dist/components/forms/emoji-picker/emoji-data-loader.js +1 -1
  228. package/dist/components/forms/emoji-picker/emoji-picker.class.d.ts +11 -3
  229. package/dist/components/forms/emoji-picker/emoji-picker.class.js +3 -3
  230. package/dist/components/forms/emoji-picker/emoji-types.d.ts +2 -2
  231. package/dist/components/forms/icon-button/icon-button.class.d.ts +4 -2
  232. package/dist/components/forms/icon-button/icon-button.class.js +1 -1
  233. package/dist/components/forms/input/input.class.d.ts +16 -5
  234. package/dist/components/forms/input/input.class.js +7 -1
  235. package/dist/components/forms/input/native-time-input.class.d.ts +3 -0
  236. package/dist/components/forms/input/number-input.class.d.ts +3 -0
  237. package/dist/components/forms/input/time-input.class.d.ts +11 -2
  238. package/dist/components/forms/input/time-input.class.js +2 -2
  239. package/dist/components/forms/locale-picker/locale-picker.class.d.ts +22 -4
  240. package/dist/components/forms/locale-picker/locale-picker.class.js +2 -2
  241. package/dist/components/forms/locale-picker/locale-picker.styles.js +1 -1
  242. package/dist/components/forms/otp-input/otp-input.class.d.ts +5 -1
  243. package/dist/components/forms/otp-input/otp-input.class.js +1 -1
  244. package/dist/components/forms/phone-input/phone-input.class.d.ts +21 -8
  245. package/dist/components/forms/phone-input/phone-input.class.js +1 -1
  246. package/dist/components/forms/radio/radio-button.class.d.ts +4 -0
  247. package/dist/components/forms/radio/radio-group.class.d.ts +4 -1
  248. package/dist/components/forms/radio/radio-group.class.js +1 -1
  249. package/dist/components/forms/radio/radio.class.d.ts +6 -2
  250. package/dist/components/forms/radio/radio.class.js +1 -1
  251. package/dist/components/forms/rubric-form/rubric-form.class.d.ts +7 -1
  252. package/dist/components/forms/rubric-form/rubric-form.class.js +3 -3
  253. package/dist/components/forms/select/select.class.d.ts +8 -2
  254. package/dist/components/forms/select/select.class.js +2 -2
  255. package/dist/components/forms/select/select.styles.js +1 -1
  256. package/dist/components/forms/slider/slider.class.d.ts +12 -6
  257. package/dist/components/forms/slider/slider.class.js +2 -2
  258. package/dist/components/forms/swatch-picker/swatch-picker.class.d.ts +4 -0
  259. package/dist/components/forms/swatch-picker/swatch-picker.class.js +1 -1
  260. package/dist/components/forms/switch/switch.class.d.ts +5 -1
  261. package/dist/components/forms/switch/switch.class.js +1 -1
  262. package/dist/components/forms/textarea/textarea.class.d.ts +3 -0
  263. package/dist/components/forms/textarea/textarea.class.js +1 -1
  264. package/dist/components/forms/time-range/time-range.class.d.ts +3 -0
  265. package/dist/components/forms/time-range/time-range.class.js +1 -1
  266. package/dist/components/forms/token-input/token-input.class.d.ts +8 -2
  267. package/dist/components/forms/token-input/token-input.class.js +2 -2
  268. package/dist/components/forms/token-input/token-input.styles.js +1 -1
  269. package/dist/components/layout/app-rail/app-rail.class.d.ts +9 -5
  270. package/dist/components/layout/app-rail/app-rail.class.js +4 -3
  271. package/dist/components/layout/app-rail/app-rail.styles.js +1 -1
  272. package/dist/components/layout/carousel/carousel.class.d.ts +3 -2
  273. package/dist/components/layout/carousel/carousel.class.js +1 -1
  274. package/dist/components/layout/command-palette/command-palette.class.d.ts +2 -2
  275. package/dist/components/layout/command-palette/command-palette.class.js +1 -1
  276. package/dist/components/layout/command-palette/command-palette.styles.js +1 -1
  277. package/dist/components/layout/dashboard-grid/dashboard-grid.class.d.ts +2 -0
  278. package/dist/components/layout/dashboard-grid/dashboard-grid.class.js +1 -1
  279. package/dist/components/layout/details/details.class.d.ts +16 -15
  280. package/dist/components/layout/details/details.class.js +43 -34
  281. package/dist/components/layout/details/details.styles.js +1 -1
  282. package/dist/components/layout/dock-panel/dock-panel.class.d.ts +4 -3
  283. package/dist/components/layout/dock-panel/dock-panel.class.js +2 -1
  284. package/dist/components/layout/filter-bar/filter-bar.class.d.ts +3 -1
  285. package/dist/components/layout/filter-bar/filter-bar.class.js +2 -2
  286. package/dist/components/layout/menu/menu-item.class.js +2 -2
  287. package/dist/components/layout/menu/menu-label.class.d.ts +3 -3
  288. package/dist/components/layout/menu/menu.class.d.ts +4 -1
  289. package/dist/components/layout/menu/menu.class.js +1 -1
  290. package/dist/components/layout/multi-split/multi-split.class.d.ts +19 -8
  291. package/dist/components/layout/multi-split/multi-split.class.js +2 -1
  292. package/dist/components/layout/multi-split/multi-split.styles.js +1 -1
  293. package/dist/components/layout/reorder-list/reorder-item.class.d.ts +2 -1
  294. package/dist/components/layout/reorder-list/reorder-item.class.js +1 -1
  295. package/dist/components/layout/reorder-list/reorder-list.class.js +1 -1
  296. package/dist/components/layout/reorder-list/reorder-owner.js +1 -1
  297. package/dist/components/layout/scroller/scroller.class.d.ts +4 -4
  298. package/dist/components/layout/scroller/scroller.styles.js +1 -1
  299. package/dist/components/layout/split-panel/split-panel.class.d.ts +5 -3
  300. package/dist/components/layout/split-panel/split-panel.class.js +3 -2
  301. package/dist/components/layout/tab-group/tab-group.class.d.ts +3 -1
  302. package/dist/components/layout/tab-group/tab-group.class.js +1 -1
  303. package/dist/components/layout/tab-group/tab-group.styles.js +1 -1
  304. package/dist/components/layout/virtual-list/virtual-list.class.js +2 -2
  305. package/dist/components/layout/widget/widget.class.d.ts +6 -2
  306. package/dist/components/layout/widget/widget.class.js +1 -1
  307. package/dist/components/layout/widget/widget.styles.js +1 -1
  308. package/dist/components/media/animation/animation.class.d.ts +3 -2
  309. package/dist/components/media/animation/animation.class.js +1 -1
  310. package/dist/components/media/attachment-chip/attachment-chip.class.d.ts +4 -3
  311. package/dist/components/media/attachment-chip/attachment-chip.class.js +1 -1
  312. package/dist/components/media/av-player/av-metadata.d.ts +3 -2
  313. package/dist/components/media/av-player/av-player.class.d.ts +4 -3
  314. package/dist/components/media/av-player/av-player.class.js +3 -3
  315. package/dist/components/media/av-player/av-player.styles.js +1 -1
  316. package/dist/components/media/avatar/avatar.class.d.ts +2 -1
  317. package/dist/components/media/avatar/avatar.class.js +1 -1
  318. package/dist/components/media/file-input/file-input.class.d.ts +4 -2
  319. package/dist/components/media/file-input/file-input.class.js +1 -1
  320. package/dist/components/media/file-input/file-input.styles.js +1 -1
  321. package/dist/components/media/flag/flag.class.js +1 -1
  322. package/dist/components/media/image-viewer/image-viewer.class.d.ts +2 -1
  323. package/dist/components/media/image-viewer/image-viewer.class.js +1 -1
  324. package/dist/components/media/image-viewer/image-viewer.styles.js +1 -1
  325. package/dist/components/media/lightbox/lightbox.styles.js +1 -1
  326. package/dist/components/media/map/map-loader.js +1 -1
  327. package/dist/components/media/map/map.class.d.ts +22 -34
  328. package/dist/components/media/map/map.class.js +1 -1
  329. package/dist/components/media/map/map.styles.js +1 -1
  330. package/dist/components/media/media-card/media-card.class.d.ts +1 -1
  331. package/dist/components/media/media-card/media-card.class.js +1 -1
  332. package/dist/components/media/pan-zoom/pan-zoom.class.js +1 -1
  333. package/dist/components/media/qr-code/qr-code-loader.js +1 -1
  334. package/dist/components/media/qr-code/qr-code.class.d.ts +5 -2
  335. package/dist/components/media/qr-code/qr-code.class.js +2 -2
  336. package/dist/components/media/sequence-playback/sequence-playback.class.d.ts +3 -3
  337. package/dist/components/media/sequence-playback/sequence-playback.class.js +1 -1
  338. package/dist/components/media/sequence-playback/sequence-playback.styles.js +1 -1
  339. package/dist/components/media/video/video.class.d.ts +2 -1
  340. package/dist/components/media/video/video.styles.js +1 -1
  341. package/dist/components/media/zoomable-frame/zoomable-frame.class.d.ts +3 -2
  342. package/dist/components/media/zoomable-frame/zoomable-frame.class.js +2 -2
  343. package/dist/components/overlays/alert/alert.styles.js +1 -1
  344. package/dist/components/overlays/callout/callout.styles.js +1 -1
  345. package/dist/components/overlays/chip/chip-group.class.d.ts +2 -0
  346. package/dist/components/overlays/chip/chip-group.class.js +1 -1
  347. package/dist/components/overlays/dialog/dialog.class.d.ts +2 -0
  348. package/dist/components/overlays/dialog/dialog.class.js +1 -1
  349. package/dist/components/overlays/dialog/dialog.styles.js +1 -1
  350. package/dist/components/overlays/empty/empty.class.d.ts +2 -0
  351. package/dist/components/overlays/empty/empty.class.js +1 -1
  352. package/dist/components/overlays/kbd/kbd.class.d.ts +2 -0
  353. package/dist/components/overlays/kbd/kbd.class.js +1 -1
  354. package/dist/components/overlays/overlay/popover.class.d.ts +3 -1
  355. package/dist/components/overlays/overlay/popover.class.js +1 -1
  356. package/dist/components/overlays/overlay/tooltip.class.d.ts +3 -1
  357. package/dist/components/overlays/overlay/tooltip.class.js +1 -1
  358. package/dist/components/overlays/rating/rating.class.d.ts +2 -0
  359. package/dist/components/overlays/rating/rating.class.js +1 -1
  360. package/dist/components/overlays/toast/toast-item.class.js +1 -1
  361. package/dist/components/retrieval/claim-evidence/claim-evidence.class.d.ts +11 -5
  362. package/dist/components/retrieval/claim-evidence/claim-evidence.class.js +3 -3
  363. package/dist/components/retrieval/embedding-explorer/embedding-explorer.class.js +2 -2
  364. package/dist/components/retrieval/entity-card/entity-card.class.d.ts +5 -2
  365. package/dist/components/retrieval/entity-card/entity-card.class.js +1 -1
  366. package/dist/components/retrieval/entity-chip/entity-chip.class.d.ts +4 -2
  367. package/dist/components/retrieval/entity-chip/entity-chip.class.js +1 -1
  368. package/dist/components/retrieval/graph/graph-canvas.js +1 -1
  369. package/dist/components/retrieval/graph/graph-loader.js +1 -1
  370. package/dist/components/retrieval/graph/graph.class.d.ts +10 -8
  371. package/dist/components/retrieval/graph/graph.class.js +10 -10
  372. package/dist/components/retrieval/graph-legend/graph-legend.class.d.ts +4 -2
  373. package/dist/components/retrieval/graph-legend/graph-legend.class.js +1 -1
  374. package/dist/components/retrieval/grounding-summary/grounding-summary.class.d.ts +15 -9
  375. package/dist/components/retrieval/grounding-summary/grounding-summary.class.js +7 -5
  376. package/dist/components/retrieval/ingestion-queue/ingestion-queue.class.d.ts +2 -0
  377. package/dist/components/retrieval/ingestion-queue/ingestion-queue.class.js +1 -1
  378. package/dist/components/retrieval/knowledge-base/knowledge-base.class.d.ts +3 -2
  379. package/dist/components/retrieval/knowledge-base/knowledge-base.class.js +4 -3
  380. package/dist/components/retrieval/knowledge-base/knowledge-base.styles.js +1 -1
  381. package/dist/components/retrieval/knowledge-graph-explorer/knowledge-graph-explorer.class.d.ts +7 -3
  382. package/dist/components/retrieval/knowledge-graph-explorer/knowledge-graph-explorer.class.js +8 -3
  383. package/dist/components/retrieval/knowledge-graph-explorer/knowledge-graph-explorer.styles.js +1 -1
  384. package/dist/components/retrieval/memory-panel/memory-panel.class.d.ts +15 -6
  385. package/dist/components/retrieval/memory-panel/memory-panel.class.js +1 -1
  386. package/dist/components/retrieval/neighbor-list/neighbor-list.class.js +1 -1
  387. package/dist/components/retrieval/neighbor-list/neighbor-list.styles.js +1 -1
  388. package/dist/components/retrieval/node-palette/node-palette.class.d.ts +17 -12
  389. package/dist/components/retrieval/node-palette/node-palette.class.js +2 -2
  390. package/dist/components/retrieval/node-palette/node-palette.styles.js +1 -1
  391. package/dist/components/retrieval/path-strip/path-strip.class.js +1 -1
  392. package/dist/components/retrieval/provenance-panel/provenance-panel.class.d.ts +2 -1
  393. package/dist/components/retrieval/provenance-panel/provenance-panel.class.js +1 -1
  394. package/dist/components/retrieval/retrieval-results/retrieval-results.class.d.ts +1 -1
  395. package/dist/components/retrieval/retrieval-results/retrieval-results.class.js +5 -5
  396. package/dist/components/retrieval/retrieval-trace/retrieval-trace.class.js +1 -1
  397. package/dist/components/retrieval/source-picker/source-picker.class.d.ts +2 -1
  398. package/dist/components/retrieval/source-picker/source-picker.class.js +2 -2
  399. package/dist/components/utility/copy-button/copy-button.class.d.ts +2 -1
  400. package/dist/components/utility/copy-button/copy-button.class.js +1 -1
  401. package/dist/components/utility/diff-view/diff-view.class.d.ts +4 -1
  402. package/dist/components/utility/diff-view/diff-view.class.js +1 -1
  403. package/dist/components/utility/export-button/export-button.class.d.ts +2 -2
  404. package/dist/components/utility/export-button/export-button.class.js +1 -1
  405. package/dist/components/utility/export-button/export-button.styles.js +1 -1
  406. package/dist/components/utility/format/format-date.class.js +1 -1
  407. package/dist/components/utility/format/format-number.class.d.ts +3 -1
  408. package/dist/components/utility/format/format-options.js +1 -1
  409. package/dist/components/utility/format/relative-time.class.js +1 -1
  410. package/dist/components/utility/icon/dompurify-loader.js +1 -1
  411. package/dist/components/utility/icon/icon-library.js +1 -1
  412. package/dist/components/utility/intersection-observer/intersection-observer.class.js +1 -1
  413. package/dist/components/utility/json-viewer/json-viewer.class.d.ts +6 -3
  414. package/dist/components/utility/json-viewer/json-viewer.class.js +5 -5
  415. package/dist/components/utility/known-date/known-date.class.d.ts +9 -5
  416. package/dist/components/utility/known-date/known-date.class.js +2 -2
  417. package/dist/components/utility/known-date/known-date.styles.js +1 -1
  418. package/dist/components/utility/mention-popover/mention-popover.class.d.ts +32 -45
  419. package/dist/components/utility/mention-popover/mention-popover.class.js +1 -1
  420. package/dist/components/utility/mutation-observer/mutation-observer.class.js +1 -1
  421. package/dist/components/utility/poll-status/poll-status.class.d.ts +3 -0
  422. package/dist/components/utility/poll-status/poll-status.styles.js +1 -1
  423. package/dist/components/viewers/calendar-viewer/calendar-loader.js +1 -1
  424. package/dist/components/viewers/calendar-viewer/calendar-viewer.class.d.ts +1 -0
  425. package/dist/components/viewers/calendar-viewer/calendar-viewer.class.js +1 -1
  426. package/dist/components/viewers/dataset-viewer/dataset-viewer.class.d.ts +2 -1
  427. package/dist/components/viewers/dataset-viewer/dataset-viewer.styles.js +1 -1
  428. package/dist/components/viewers/document-compare/document-compare.class.d.ts +11 -8
  429. package/dist/components/viewers/document-compare/document-compare.class.js +2 -2
  430. package/dist/components/viewers/document-preview/document-preview.class.d.ts +8 -4
  431. package/dist/components/viewers/document-preview/document-preview.class.js +4 -4
  432. package/dist/components/viewers/document-preview/document-preview.styles.js +1 -1
  433. package/dist/components/viewers/document-viewer/document-viewer.class.d.ts +5 -2
  434. package/dist/components/viewers/document-viewer/document-viewer.class.js +2 -2
  435. package/dist/components/viewers/document-viewer/document-viewer.styles.js +1 -1
  436. package/dist/components/viewers/document-viewer/registry-ownership.d.ts +1 -0
  437. package/dist/components/viewers/document-viewer/registry-ownership.js +1 -0
  438. package/dist/components/viewers/document-viewer/registry.js +1 -1
  439. package/dist/components/viewers/docx-viewer/docx-loader.js +1 -1
  440. package/dist/components/viewers/docx-viewer/docx-viewer.class.js +1 -1
  441. package/dist/components/viewers/ebook-viewer/ebook-loader.d.ts +1 -1
  442. package/dist/components/viewers/ebook-viewer/ebook-viewer.class.d.ts +8 -2
  443. package/dist/components/viewers/ebook-viewer/ebook-viewer.class.js +1 -1
  444. package/dist/components/viewers/email-viewer/email-loader.js +1 -1
  445. package/dist/components/viewers/email-viewer/email-viewer.class.d.ts +3 -2
  446. package/dist/components/viewers/email-viewer/email-viewer.class.js +2 -2
  447. package/dist/components/viewers/html-viewer/dompurify-loader.js +1 -1
  448. package/dist/components/viewers/include/include-resource.js +1 -1
  449. package/dist/components/viewers/include/include.class.d.ts +3 -1
  450. package/dist/components/viewers/notebook-viewer/dompurify-loader.js +1 -1
  451. package/dist/components/viewers/notebook-viewer/notebook-viewer.class.d.ts +4 -2
  452. package/dist/components/viewers/notebook-viewer/notebook-viewer.class.js +4 -4
  453. package/dist/components/viewers/notebook-viewer/notebook-viewer.styles.js +1 -1
  454. package/dist/components/viewers/passive-markup.js +1 -1
  455. package/dist/components/viewers/pdf-viewer/pdf-loader.js +1 -1
  456. package/dist/components/viewers/pptx-viewer/pptx-loader.js +1 -1
  457. package/dist/components/viewers/spreadsheet-viewer/spreadsheet-loader.js +1 -1
  458. package/dist/components/viewers/svg-viewer/dompurify-loader.js +1 -1
  459. package/dist/components/viewers/svg-viewer/svg-viewer.class.d.ts +2 -1
  460. package/dist/components/viewers/svg-viewer/svg-viewer.styles.js +1 -1
  461. package/dist/components/viewers/viewer-loading.js +1 -1
  462. package/dist/components/viewers/viewer-search-limits.d.ts +2 -0
  463. package/dist/components/viewers/viewer-search-limits.js +1 -1
  464. package/dist/components/viewers/xml-viewer/xml-viewer.class.d.ts +2 -1
  465. package/dist/components/viewers/xml-viewer/xml-viewer.class.js +1 -1
  466. package/dist/components/viewers/xml-viewer/xml-viewer.js +1 -1
  467. package/dist/custom-elements-jsx.d.ts +1 -1
  468. package/dist/events.d.ts +13 -6
  469. package/dist/internal/aria-controls.d.ts +16 -13
  470. package/dist/internal/aria-controls.js +1 -1
  471. package/dist/internal/aria-reflection.js +1 -1
  472. package/dist/internal/catalog-picker.d.ts +2 -2
  473. package/dist/internal/catalog-picker.js +1 -1
  474. package/dist/internal/chart-annotation-registration.d.ts +1 -0
  475. package/dist/internal/chart-annotation-registration.js +1 -0
  476. package/dist/internal/data-descriptors.d.ts +13 -0
  477. package/dist/internal/data-descriptors.js +1 -0
  478. package/dist/internal/default-strings.generated.d.ts +1 -1
  479. package/dist/internal/default-strings.generated.js +2 -2
  480. package/dist/internal/dev-mode-attribute-warning.d.ts +3 -0
  481. package/dist/internal/dev-mode-attribute-warning.js +1 -1
  482. package/dist/internal/element-internals.d.ts +4 -3
  483. package/dist/internal/element-internals.js +1 -1
  484. package/dist/internal/form-associated.js +1 -1
  485. package/dist/internal/highlight-collection.d.ts +2 -0
  486. package/dist/internal/highlight-collection.js +1 -1
  487. package/dist/internal/localization-types.d.ts +1 -1
  488. package/dist/internal/localization.js +2 -2
  489. package/dist/internal/lyra-element.d.ts +10 -1
  490. package/dist/internal/lyra-element.js +2 -1
  491. package/dist/internal/native-control-description.d.ts +7 -0
  492. package/dist/internal/native-control-description.js +1 -0
  493. package/dist/internal/option-selection.js +1 -1
  494. package/dist/internal/overlay-order.d.ts +6 -0
  495. package/dist/internal/overlay-order.js +1 -0
  496. package/dist/internal/overlay-stack.d.ts +1 -1
  497. package/dist/internal/overlay-stack.js +1 -1
  498. package/dist/internal/package-metadata.d.ts +1 -1
  499. package/dist/internal/package-metadata.js +1 -1
  500. package/dist/internal/papaparse-loader.js +1 -1
  501. package/dist/internal/positioner.d.ts +5 -4
  502. package/dist/internal/pseudo-localization.js +1 -1
  503. package/dist/internal/reactive-property-writes.d.ts +1 -0
  504. package/dist/internal/reactive-property-writes.js +1 -0
  505. package/dist/internal/safe-css.js +1 -1
  506. package/dist/internal/step-value.d.ts +6 -0
  507. package/dist/internal/step-value.js +1 -0
  508. package/dist/internal/svg-title.d.ts +3 -0
  509. package/dist/internal/svg-title.js +1 -0
  510. package/dist/internal/text-quote.js +1 -1
  511. package/dist/lyra.d.ts +1 -1
  512. package/dist/svelte.d.ts +1 -1
  513. package/dist/translations/ar.js +2 -2
  514. package/dist/translations/de.js +2 -2
  515. package/dist/translations/es.js +2 -2
  516. package/dist/translations/fa.js +2 -2
  517. package/dist/translations/fr.js +2 -2
  518. package/dist/translations/he.js +2 -2
  519. package/dist/translations/ja.js +2 -2
  520. package/dist/translations/pseudo/ar-XB.js +1 -1
  521. package/dist/translations/pt-BR.js +2 -2
  522. package/dist/translations/ru.js +2 -2
  523. package/dist/translations/zh-CN.js +2 -2
  524. package/dist/vue.d.ts +1 -1
  525. package/llms/components/lr-accordion-item.md +10 -5
  526. package/llms/components/lr-accordion.md +10 -5
  527. package/llms/components/lr-activity-feed.md +6 -5
  528. package/llms/components/lr-agent-run.md +1 -1
  529. package/llms/components/lr-agent-trace.md +3 -0
  530. package/llms/components/lr-agent-workspace.md +3 -2
  531. package/llms/components/lr-animation.md +4 -0
  532. package/llms/components/lr-app-rail-item.md +4 -2
  533. package/llms/components/lr-app-rail.md +4 -2
  534. package/llms/components/lr-attachment-chip.md +8 -3
  535. package/llms/components/lr-audio-visualizer.md +9 -6
  536. package/llms/components/lr-av-player.md +14 -0
  537. package/llms/components/lr-avatar.md +4 -0
  538. package/llms/components/lr-bar-chart.md +2 -2
  539. package/llms/components/lr-box-plot.md +15 -6
  540. package/llms/components/lr-bubble-chart.md +2 -2
  541. package/llms/components/lr-button.md +11 -3
  542. package/llms/components/lr-calendar-viewer.md +4 -0
  543. package/llms/components/lr-calendar.md +15 -4
  544. package/llms/components/lr-carousel.md +5 -0
  545. package/llms/components/lr-chart.md +24 -9
  546. package/llms/components/lr-chat-composer.md +2 -1
  547. package/llms/components/lr-chat-message.md +4 -0
  548. package/llms/components/lr-checkbox.md +3 -0
  549. package/llms/components/lr-chip-group.md +3 -0
  550. package/llms/components/lr-chip.md +3 -0
  551. package/llms/components/lr-chunk-inspector.md +2 -2
  552. package/llms/components/lr-code-block-core.md +20 -8
  553. package/llms/components/lr-code-block.md +17 -14
  554. package/llms/components/lr-code-editor.md +20 -5
  555. package/llms/components/lr-color-picker.md +9 -0
  556. package/llms/components/lr-combobox.md +35 -4
  557. package/llms/components/lr-command-palette.md +4 -0
  558. package/llms/components/lr-commit-card.md +3 -0
  559. package/llms/components/lr-compare-panel.md +7 -0
  560. package/llms/components/lr-condition-builder.md +5 -0
  561. package/llms/components/lr-conversation-item.md +3 -0
  562. package/llms/components/lr-copy-button.md +10 -1
  563. package/llms/components/lr-dashboard-grid.md +5 -0
  564. package/llms/components/lr-data-grid.md +22 -3
  565. package/llms/components/lr-dataset-viewer.md +3 -2
  566. package/llms/components/lr-date-input.md +50 -6
  567. package/llms/components/lr-date-picker.md +51 -7
  568. package/llms/components/lr-details.md +10 -5
  569. package/llms/components/lr-dialog.md +4 -0
  570. package/llms/components/lr-diff-view.md +6 -0
  571. package/llms/components/lr-document-compare.md +6 -2
  572. package/llms/components/lr-document-library.md +4 -0
  573. package/llms/components/lr-document-preview.md +18 -4
  574. package/llms/components/lr-document-viewer.md +14 -4
  575. package/llms/components/lr-docx-viewer.md +6 -0
  576. package/llms/components/lr-doughnut-chart.md +2 -2
  577. package/llms/components/lr-dropdown-item.md +4 -0
  578. package/llms/components/lr-dropdown.md +3 -0
  579. package/llms/components/lr-ebook-viewer.md +12 -3
  580. package/llms/components/lr-email-viewer.md +10 -0
  581. package/llms/components/lr-emoji-picker.md +17 -3
  582. package/llms/components/lr-empty.md +3 -0
  583. package/llms/components/lr-entity-card.md +3 -0
  584. package/llms/components/lr-entity-chip.md +4 -0
  585. package/llms/components/lr-eval-dataset.md +2 -2
  586. package/llms/components/lr-export-button.md +9 -0
  587. package/llms/components/lr-file-input.md +12 -8
  588. package/llms/components/lr-file-tree.md +5 -1
  589. package/llms/components/lr-filter-bar.md +5 -0
  590. package/llms/components/lr-flow-canvas.md +8 -1
  591. package/llms/components/lr-flow-node.md +2 -1
  592. package/llms/components/lr-flow-run-status.md +1 -1
  593. package/llms/components/lr-format-date.md +3 -1
  594. package/llms/components/lr-format-number.md +4 -0
  595. package/llms/components/lr-funnel.md +4 -0
  596. package/llms/components/lr-gauge.md +4 -0
  597. package/llms/components/lr-generation-metrics.md +5 -0
  598. package/llms/components/lr-graph-legend.md +4 -2
  599. package/llms/components/lr-graph-query-builder.md +6 -0
  600. package/llms/components/lr-graph.md +8 -2
  601. package/llms/components/lr-grounding-summary.md +8 -8
  602. package/llms/components/lr-heatmap.md +13 -0
  603. package/llms/components/lr-histogram.md +2 -2
  604. package/llms/components/lr-icon-button.md +7 -0
  605. package/llms/components/lr-image-viewer.md +9 -0
  606. package/llms/components/lr-include.md +5 -0
  607. package/llms/components/lr-ingestion-queue.md +5 -1
  608. package/llms/components/lr-input.md +22 -8
  609. package/llms/components/lr-intersection-observer.md +9 -0
  610. package/llms/components/lr-json-viewer.md +10 -1
  611. package/llms/components/lr-kbd.md +3 -0
  612. package/llms/components/lr-knowledge-base.md +10 -1
  613. package/llms/components/lr-knowledge-graph-explorer.md +7 -0
  614. package/llms/components/lr-known-date.md +7 -0
  615. package/llms/components/lr-line-chart.md +2 -2
  616. package/llms/components/lr-lite-chart.md +29 -9
  617. package/llms/components/lr-live-region.md +3 -0
  618. package/llms/components/lr-locale-picker.md +12 -0
  619. package/llms/components/lr-map.md +23 -5
  620. package/llms/components/lr-markdown-core.md +4 -0
  621. package/llms/components/lr-markdown.md +15 -8
  622. package/llms/components/lr-media-card.md +5 -8
  623. package/llms/components/lr-mention-popover.md +17 -10
  624. package/llms/components/lr-menu-item.md +4 -0
  625. package/llms/components/lr-menu-label.md +4 -3
  626. package/llms/components/lr-menu.md +4 -0
  627. package/llms/components/lr-message-actions.md +13 -3
  628. package/llms/components/lr-message-feedback.md +24 -7
  629. package/llms/components/lr-message-parts.md +6 -3
  630. package/llms/components/lr-model-select.md +13 -2
  631. package/llms/components/lr-multi-split.md +20 -7
  632. package/llms/components/lr-mutation-observer.md +8 -0
  633. package/llms/components/lr-native-time-input.md +10 -0
  634. package/llms/components/lr-node-palette.md +8 -2
  635. package/llms/components/lr-notebook-viewer.md +4 -1
  636. package/llms/components/lr-number-input.md +12 -1
  637. package/llms/components/lr-option.md +35 -4
  638. package/llms/components/lr-otp-input.md +10 -0
  639. package/llms/components/lr-pan-zoom.md +1 -2
  640. package/llms/components/lr-phone-input.md +20 -5
  641. package/llms/components/lr-pie-chart.md +2 -2
  642. package/llms/components/lr-polar-area-chart.md +2 -2
  643. package/llms/components/lr-poll-status.md +4 -0
  644. package/llms/components/lr-popover.md +3 -0
  645. package/llms/components/lr-popup.md +3 -2
  646. package/llms/components/lr-prompt-input.md +7 -3
  647. package/llms/components/lr-prompt-queue.md +6 -0
  648. package/llms/components/lr-prompt-studio.md +7 -0
  649. package/llms/components/lr-provenance-panel.md +3 -0
  650. package/llms/components/lr-push-to-talk.md +8 -0
  651. package/llms/components/lr-qr-code.md +6 -0
  652. package/llms/components/lr-radar-chart.md +2 -2
  653. package/llms/components/lr-radio-button.md +13 -4
  654. package/llms/components/lr-radio-group.md +5 -0
  655. package/llms/components/lr-radio.md +9 -0
  656. package/llms/components/lr-rating.md +8 -0
  657. package/llms/components/lr-relative-time.md +2 -0
  658. package/llms/components/lr-reorder-item.md +6 -0
  659. package/llms/components/lr-reorder-list.md +6 -0
  660. package/llms/components/lr-result-card.md +6 -3
  661. package/llms/components/lr-result-field.md +6 -3
  662. package/llms/components/lr-retrieval-results.md +1 -1
  663. package/llms/components/lr-rubric-form.md +12 -0
  664. package/llms/components/lr-scatter-chart.md +2 -2
  665. package/llms/components/lr-scroller.md +5 -5
  666. package/llms/components/lr-select.md +9 -0
  667. package/llms/components/lr-sequence-playback.md +5 -2
  668. package/llms/components/lr-slider.md +19 -5
  669. package/llms/components/lr-source-picker.md +4 -0
  670. package/llms/components/lr-span-waterfall.md +3 -0
  671. package/llms/components/lr-sparkline.md +4 -0
  672. package/llms/components/lr-split-panel.md +4 -0
  673. package/llms/components/lr-stack-trace.md +3 -0
  674. package/llms/components/lr-stat.md +10 -0
  675. package/llms/components/lr-streaming-text.md +2 -3
  676. package/llms/components/lr-subagent-panel.md +3 -2
  677. package/llms/components/lr-svg-viewer.md +3 -0
  678. package/llms/components/lr-swatch-picker.md +4 -0
  679. package/llms/components/lr-switch.md +6 -0
  680. package/llms/components/lr-tab-group.md +4 -0
  681. package/llms/components/lr-table.md +10 -2
  682. package/llms/components/lr-terminal.md +17 -5
  683. package/llms/components/lr-textarea.md +9 -0
  684. package/llms/components/lr-thinking-panel.md +3 -1
  685. package/llms/components/lr-thread-list.md +26 -4
  686. package/llms/components/lr-time-input.md +3 -0
  687. package/llms/components/lr-time-range.md +5 -0
  688. package/llms/components/lr-timeline-item.md +6 -0
  689. package/llms/components/lr-timeline.md +6 -0
  690. package/llms/components/lr-token-input.md +14 -0
  691. package/llms/components/lr-tool-call-chip.md +7 -5
  692. package/llms/components/lr-tool-param-form.md +6 -2
  693. package/llms/components/lr-tool-result-dialog.md +4 -0
  694. package/llms/components/lr-tool-result-view.md +2 -3
  695. package/llms/components/lr-tool-select-dialog.md +6 -2
  696. package/llms/components/lr-tooltip.md +6 -0
  697. package/llms/components/lr-trace-tree.md +3 -0
  698. package/llms/components/lr-transcript-feed.md +3 -0
  699. package/llms/components/lr-tree-item.md +12 -5
  700. package/llms/components/lr-tree.md +12 -5
  701. package/llms/components/lr-typing-indicator.md +3 -0
  702. package/llms/components/lr-usage-badge.md +4 -0
  703. package/llms/components/lr-video.md +8 -2
  704. package/llms/components/lr-virtual-list.md +5 -3
  705. package/llms/components/lr-voice-picker.md +15 -2
  706. package/llms/components/lr-widget-renderer.md +21 -13
  707. package/llms/components/lr-widget.md +4 -2
  708. package/llms/components/lr-word-cloud.md +4 -0
  709. package/llms/components/lr-xml-viewer.md +9 -2
  710. package/llms/components/lr-zoomable-frame.md +6 -3
  711. package/llms/peers.md +5 -5
  712. package/llms/shared.md +74 -63
  713. package/llms-full.txt +4705 -2954
  714. package/package.json +19 -14
  715. package/vscode-css-data.json +1 -1
  716. package/vscode-html-data.json +1 -1
  717. package/web-types.json +1 -1
  718. package/dist/components/viewers/docx-viewer/fixtures/minimal-docx-fixture.d.ts +0 -1
  719. package/dist/components/viewers/docx-viewer/fixtures/minimal-docx-fixture.js +0 -1
  720. package/dist/components/viewers/ebook-viewer/fixtures/minimal-epub-fixture.d.ts +0 -1
  721. package/dist/components/viewers/ebook-viewer/fixtures/minimal-epub-fixture.js +0 -1
  722. package/dist/components/viewers/spreadsheet-viewer/fixtures/minimal-xlsx-fixture.d.ts +0 -1
  723. package/dist/components/viewers/spreadsheet-viewer/fixtures/minimal-xlsx-fixture.js +0 -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{unsafeHTML}from"lit/directives/unsafe-html.js";import{unsafeSVG}from"lit/directives/unsafe-svg.js";import{styleMap}from"lit/directives/style-map.js";import{LyraElement}from"../../../internal/lyra-element.js";import{specialistTokens}from"../../../internal/specialist-tokens.styles.js";import{DocumentAnchorTarget,prioritizedHighlightCandidates}from"../../../internal/anchor-target.js";import{isAbortError,isResourceLimitError,LyraUserFacingError,readResponseText,resolveOwnerFetchTarget}from"../../../internal/resource-loader.js";import{srOnly}from"../../../internal/a11y.js";import{finiteCount}from"../../../internal/numbers.js";import{getNumberFormat}from"../../../internal/intl-cache.js";import{createAnsiParser}from"../../../internal/ansi.js";import{loadNotebookSanitizer}from"./dompurify-loader.js";import{styles}from"./notebook-viewer.styles.js";import{sanitizeCssColor,sanitizeCssLength}from"../../../internal/safe-css.js";import{ViewerAnnouncementController}from"../viewer-announcements.js";import{sanitizePassiveMarkup}from"../passive-markup.js";import{viewerSemanticLabel,viewerSemanticRole}from"../viewer-semantic-owner.js";import{resolveViewerSource}from"../viewer-source.js";import{renderViewerLoading,viewerLoadingStyles}from"../viewer-loading.js";import{boundedViewerSearchQuery,ViewerSearchWorkBudget}from"../viewer-search-limits.js";import{LYRA_DEFAULT_anchorJumped,LYRA_DEFAULT_anchorJumpedToPage,LYRA_DEFAULT_anchorNotFound,LYRA_DEFAULT_documentPreviewEmpty,LYRA_DEFAULT_documentPreviewFailedToLoad,LYRA_DEFAULT_documentPreviewResourceTooLarge,LYRA_DEFAULT_documentPreviewTypeDocument,LYRA_DEFAULT_documentPreviewUrlNotAllowed,LYRA_DEFAULT_documentViewerMissingSanitizer,LYRA_DEFAULT_loadingDocument,LYRA_DEFAULT_notebookViewerCodeCell,LYRA_DEFAULT_notebookViewerCollapseOutput,LYRA_DEFAULT_notebookViewerErrorOutput,LYRA_DEFAULT_notebookViewerInPrompt,LYRA_DEFAULT_notebookViewerInPromptEmpty,LYRA_DEFAULT_notebookViewerInvalid,LYRA_DEFAULT_notebookViewerLabel,LYRA_DEFAULT_notebookViewerMarkdownCell,LYRA_DEFAULT_notebookViewerRawCell,LYRA_DEFAULT_notebookViewerShowAllOutput,LYRA_DEFAULT_notebookViewerTooManyCells,LYRA_DEFAULT_notebookViewerUnrenderedOutput,LYRA_DEFAULT_notebookViewerUnsupportedVersion}from"../../../internal/default-strings.generated.js";const MAX_CELLS=2e3,MAX_OUTPUTS=2e4,MAX_JSON_NODES=1e5,SUPPORTED_MAJOR=4,SUPPORTED_MINORS=[0,1,2,3,4,5],MAX_NOTEBOOK_PAINTED_HIGHLIGHTS=100,OMIT_NOTEBOOK_SNAPSHOT=Symbol("omit-notebook-snapshot");function invalidNotebookSnapshot(){return Object.freeze({})}function isNotebookDataRecord(value){try{const prototype=Object.getPrototypeOf(value);if(prototype===null)return!0;const parent=Object.getPrototypeOf(prototype),constructor=Object.getOwnPropertyDescriptor(prototype,"constructor");if(parent===null)return!constructor||"value"in constructor&&typeof constructor.value=="function"&&constructor.value.name==="Object";if(constructor)return!1;const parentConstructor=Object.getOwnPropertyDescriptor(parent,"constructor");return!!(Object.getPrototypeOf(parent)===null&&parentConstructor&&"value"in parentConstructor&&typeof parentConstructor.value=="function"&&parentConstructor.value.name==="Object")}catch{return!1}}function snapshotNotebookDocument(value){if(value===null||typeof value!="object"||Array.isArray(value))return OMIT_NOTEBOOK_SNAPSHOT;let remaining=MAX_JSON_NODES;const seen=new WeakSet,created=[],pending=[],createContainer=source=>{let array=!1;try{array=Array.isArray(source)}catch{return OMIT_NOTEBOOK_SNAPSHOT}let keys,target;if(array){let lengthDescriptor;try{lengthDescriptor=Object.getOwnPropertyDescriptor(source,"length")}catch{return OMIT_NOTEBOOK_SNAPSHOT}if(!lengthDescriptor||!("value"in lengthDescriptor)||typeof lengthDescriptor.value!="number"||!Number.isSafeInteger(lengthDescriptor.value)||lengthDescriptor.value<0||lengthDescriptor.value>remaining)return OMIT_NOTEBOOK_SNAPSHOT;keys=Array.from({length:lengthDescriptor.value},(_,index)=>String(index)),target=new Array(lengthDescriptor.value)}else{if(!isNotebookDataRecord(source))return OMIT_NOTEBOOK_SNAPSHOT;try{keys=Object.keys(source)}catch{return OMIT_NOTEBOOK_SNAPSHOT}if(keys.length>remaining)return OMIT_NOTEBOOK_SNAPSHOT;target={}}return seen.add(source),created.push(target),pending.push({source,target,keys,array}),target};remaining-=1;const root=createContainer(value);if(root===OMIT_NOTEBOOK_SNAPSHOT)return root;for(;pending.length;){const task=pending.pop();for(const key of task.keys){let descriptor;try{descriptor=Object.getOwnPropertyDescriptor(task.source,key)}catch{return OMIT_NOTEBOOK_SNAPSHOT}if(!descriptor){if(task.array)continue;return OMIT_NOTEBOOK_SNAPSHOT}if(!descriptor.enumerable||!("value"in descriptor)||remaining<=0)return OMIT_NOTEBOOK_SNAPSHOT;remaining-=1;const entry=descriptor.value;let snapshot=entry;if(entry!==null&&(typeof entry=="object"||typeof entry=="function")){if(typeof entry=="function"||seen.has(entry))return OMIT_NOTEBOOK_SNAPSHOT;if(snapshot=createContainer(entry),snapshot===OMIT_NOTEBOOK_SNAPSHOT)return snapshot}Object.defineProperty(task.target,key,{value:snapshot,enumerable:!0,configurable:!1,writable:!1})}}for(let index=created.length-1;index>=0;index-=1)Object.freeze(created[index]);return root}function joinSource(source){return typeof source=="string"?source:source?.join("")??""}function isDenseArray(value){for(let index=0;index<value.length;index++)if(!Object.prototype.hasOwnProperty.call(value,index))return!1;return!0}function joinText(text){return typeof text=="string"?text:Array.isArray(text)&&isDenseArray(text)&&text.every(item=>typeof item=="string")?text.join(""):""}function*notebookSearchTextParts(text){if(typeof text=="string"){yield text;return}if(!(!Array.isArray(text)||!isDenseArray(text)))for(const part of text)typeof part=="string"&&(yield part)}function*notebookOutputSearchParts(outputs){for(const output of outputs){yield*notebookSearchTextParts(output.text);const data=output.data;if(data)for(const key in data)Object.prototype.hasOwnProperty.call(data,key)&&(yield*notebookSearchTextParts(data[key]));yield" "}}function isTextValue(value){return typeof value=="string"||Array.isArray(value)&&isDenseArray(value)&&value.every(item=>typeof item=="string")}function isJsonValue(value){const pending=[value];let nodes=0;for(;pending.length;){const current=pending.pop();if(++nodes>MAX_JSON_NODES)return!1;if(!(current===null||typeof current=="string"||typeof current=="boolean")){if(typeof current=="number"){if(!Number.isFinite(current))return!1;continue}if(Array.isArray(current)){if(current.length>MAX_JSON_NODES-nodes-pending.length)return!1;for(let index=current.length-1;index>=0;index--)pending.push(current[index]);continue}if(typeof current!="object")return!1;for(const key in current)if(Object.prototype.hasOwnProperty.call(current,key)){if(pending.length>=MAX_JSON_NODES-nodes)return!1;pending.push(current[key])}}}return!0}function isNotebookOutput(value){if(typeof value!="object"||value===null)return!1;const output=value;if(!["stream","error","display_data","execute_result"].includes(String(output.output_type))||output.text!==void 0&&!isTextValue(output.text)||output.traceback!==void 0&&!isTextValue(output.traceback)||output.ename!==void 0&&typeof output.ename!="string"||output.evalue!==void 0&&typeof output.evalue!="string"||output.name!==void 0&&output.name!=="stdout"&&output.name!=="stderr")return!1;const data=output.data;if(data===void 0)return!0;if(typeof data!="object"||data===null||Array.isArray(data))return!1;const mimeData=data;for(const[mime,payload]of Object.entries(mimeData))if(mime==="application/json"){if(typeof payload=="string")try{if(!isJsonValue(JSON.parse(payload)))return!1}catch{return!1}else if(!isJsonValue(payload))return!1}else if(!isTextValue(payload)&&!isJsonValue(payload))return!1;return!0}function isNotebookShape(value){if(typeof value!="object"||value===null)return!1;const v=value;if(!Number.isInteger(v.nbformat)||!Number.isInteger(v.nbformat_minor)||!Array.isArray(v.cells))return!1;const cells=v.cells;let outputCount=0;for(let index=0;index<cells.length;index++){if(!Object.prototype.hasOwnProperty.call(cells,index))return!1;const value2=cells[index];if(typeof value2!="object"||value2===null)return!1;const cell=value2;if(!["markdown","code","raw"].includes(String(cell.cell_type))||!isTextValue(cell.source)||cell.id!==void 0&&typeof cell.id!="string"||cell.execution_count!==void 0&&cell.execution_count!==null&&(!Number.isInteger(cell.execution_count)||cell.execution_count<0))return!1;if(cell.outputs!==void 0&&(!Array.isArray(cell.outputs)||!isDenseArray(cell.outputs)||(outputCount+=cell.outputs.length,outputCount>MAX_OUTPUTS||!cell.outputs.every(isNotebookOutput))))return!1}return!0}class LyraNotebookViewerBase extends LyraElement{}class LyraNotebookViewer extends DocumentAnchorTarget(LyraNotebookViewerBase){constructor(){super(...arguments),this.src="",this.name="",this.outputCollapseLines=40,this.maxHeight="",this.anchorKinds=["node-path","fragment"],this.loadState={kind:"idle"},this.expandedOutputs=new Set,this.activeCellIndex=null,this.searchQuery="",this.searchMatches=[],this.searchMatchCountExact=!0,this.activeSearchIndex=-1,this.highlightedCells=new Map,this.generation=0,this.lastSearchLocale="",this.sanitizerGeneration=0,this.sanitizerFailureReported=!1,this.sourceLoadScheduled=!1,this.announcements=new ViewerAnnouncementController(this),this.sanitizedOutputCache=new Map,this.sanitizationTasks=new Map,this.renderCell=(cell,index)=>{const c=cell,numberFormat=getNumberFormat(this.effectiveLocale),inCount=c.execution_count==null?this.localize("notebookViewerInPromptEmpty"):this.localize("notebookViewerInPrompt",void 0,{count:numberFormat.format(c.execution_count)}),rowLabel=c.cell_type==="code"?this.localize("notebookViewerCodeCell",void 0,{index:numberFormat.format(index+1)}):c.cell_type==="markdown"?this.localize("notebookViewerMarkdownCell",void 0,{index:numberFormat.format(index+1)}):this.localize("notebookViewerRawCell",void 0,{index:numberFormat.format(index+1)}),active=this.activeCellIndex===index,highlight=this.highlightedCells.get(index),highlighted=highlight!==void 0,parts=["cell"];return active&&parts.push("cell-active"),highlighted&&(parts.push("cell-highlighted",`cell-highlighted-${highlight.tone??"accent"}`),highlight.id===this.activeHighlightId&&parts.push("cell-highlight-active")),html`<div part=${parts.join(" ")} role="group" aria-label=${rowLabel} data-cell-type=${c.cell_type} ?data-active=${active} ?data-highlighted=${highlighted}>
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{unsafeHTML}from"lit/directives/unsafe-html.js";import{unsafeSVG}from"lit/directives/unsafe-svg.js";import{styleMap}from"lit/directives/style-map.js";import{LyraElement}from"../../../internal/lyra-element.js";import{specialistTokens}from"../../../internal/specialist-tokens.styles.js";import{DocumentAnchorTarget,prioritizedHighlightCandidates}from"../../../internal/anchor-target.js";import{isAbortError,isResourceLimitError,LyraUserFacingError,readResponseText,resolveOwnerFetchTarget}from"../../../internal/resource-loader.js";import{srOnly}from"../../../internal/a11y.js";import{finiteCount}from"../../../internal/numbers.js";import{getNumberFormat}from"../../../internal/intl-cache.js";import{createAnsiParser}from"../../../internal/ansi.js";import{loadNotebookSanitizer}from"./dompurify-loader.js";import{styles}from"./notebook-viewer.styles.js";import{sanitizeCssColor,sanitizeCssLength}from"../../../internal/safe-css.js";import{ViewerAnnouncementController}from"../viewer-announcements.js";import{sanitizePassiveMarkup}from"../passive-markup.js";import{viewerSemanticLabel,viewerSemanticRole}from"../viewer-semantic-owner.js";import{resolveViewerSource}from"../viewer-source.js";import{renderViewerLoading,viewerLoadingStyles}from"../viewer-loading.js";import{boundedViewerSearchQuery,ViewerSearchWorkBudget}from"../viewer-search-limits.js";import{LYRA_DEFAULT_anchorJumped,LYRA_DEFAULT_anchorJumpedToPage,LYRA_DEFAULT_anchorNotFound,LYRA_DEFAULT_documentPreviewEmpty,LYRA_DEFAULT_documentPreviewFailedToLoad,LYRA_DEFAULT_documentPreviewResourceTooLarge,LYRA_DEFAULT_documentPreviewTypeDocument,LYRA_DEFAULT_documentPreviewUrlNotAllowed,LYRA_DEFAULT_documentViewerMissingSanitizer,LYRA_DEFAULT_loadingDocument,LYRA_DEFAULT_notebookViewerCodeCell,LYRA_DEFAULT_notebookViewerCollapseOutput,LYRA_DEFAULT_notebookViewerErrorOutput,LYRA_DEFAULT_notebookViewerInPrompt,LYRA_DEFAULT_notebookViewerInPromptEmpty,LYRA_DEFAULT_notebookViewerInvalid,LYRA_DEFAULT_notebookViewerLabel,LYRA_DEFAULT_notebookViewerMarkdownCell,LYRA_DEFAULT_notebookViewerRawCell,LYRA_DEFAULT_notebookViewerShowAllOutput,LYRA_DEFAULT_notebookViewerTooManyCells,LYRA_DEFAULT_notebookViewerUnrenderedOutput,LYRA_DEFAULT_notebookViewerUnsupportedVersion}from"../../../internal/default-strings.generated.js";const MAX_CELLS=2e3,MAX_OUTPUTS=2e4,MAX_JSON_NODES=1e5,SUPPORTED_MAJOR=4,SUPPORTED_MINORS=[0,1,2,3,4,5],MAX_NOTEBOOK_PAINTED_HIGHLIGHTS=100,OMIT_NOTEBOOK_SNAPSHOT=Symbol("omit-notebook-snapshot");function invalidNotebookSnapshot(){return Object.freeze({})}function isNotebookDataRecord(value){try{const prototype=Object.getPrototypeOf(value);if(prototype===null)return!0;const parent=Object.getPrototypeOf(prototype),constructor=Object.getOwnPropertyDescriptor(prototype,"constructor");if(parent===null)return!constructor||"value"in constructor&&typeof constructor.value=="function"&&constructor.value.name==="Object";if(constructor)return!1;const parentConstructor=Object.getOwnPropertyDescriptor(parent,"constructor");return!!(Object.getPrototypeOf(parent)===null&&parentConstructor&&"value"in parentConstructor&&typeof parentConstructor.value=="function"&&parentConstructor.value.name==="Object")}catch{return!1}}function snapshotNotebookDocument(value){if(value===null||typeof value!="object"||Array.isArray(value))return OMIT_NOTEBOOK_SNAPSHOT;let remaining=MAX_JSON_NODES;const seen=new WeakSet,created=[],pending=[],createContainer=source=>{let array=!1;try{array=Array.isArray(source)}catch{return OMIT_NOTEBOOK_SNAPSHOT}let keys,target;if(array){let lengthDescriptor;try{lengthDescriptor=Object.getOwnPropertyDescriptor(source,"length")}catch{return OMIT_NOTEBOOK_SNAPSHOT}if(!lengthDescriptor||!("value"in lengthDescriptor)||typeof lengthDescriptor.value!="number"||!Number.isSafeInteger(lengthDescriptor.value)||lengthDescriptor.value<0||lengthDescriptor.value>remaining)return OMIT_NOTEBOOK_SNAPSHOT;keys=Array.from({length:lengthDescriptor.value},(_,index)=>String(index)),target=new Array(lengthDescriptor.value)}else{if(!isNotebookDataRecord(source))return OMIT_NOTEBOOK_SNAPSHOT;try{keys=Object.keys(source)}catch{return OMIT_NOTEBOOK_SNAPSHOT}if(keys.length>remaining)return OMIT_NOTEBOOK_SNAPSHOT;target={}}return seen.add(source),created.push(target),pending.push({source,target,keys,array}),target};remaining-=1;const root=createContainer(value);if(root===OMIT_NOTEBOOK_SNAPSHOT)return root;for(;pending.length;){const task=pending.pop();for(const key of task.keys){let descriptor;try{descriptor=Object.getOwnPropertyDescriptor(task.source,key)}catch{return OMIT_NOTEBOOK_SNAPSHOT}if(!descriptor){if(task.array)continue;return OMIT_NOTEBOOK_SNAPSHOT}if(!descriptor.enumerable||!("value"in descriptor)||remaining<=0)return OMIT_NOTEBOOK_SNAPSHOT;remaining-=1;const entry=descriptor.value;let snapshot=entry;if(entry!==null&&(typeof entry=="object"||typeof entry=="function")){if(typeof entry=="function"||seen.has(entry))return OMIT_NOTEBOOK_SNAPSHOT;if(snapshot=createContainer(entry),snapshot===OMIT_NOTEBOOK_SNAPSHOT)return snapshot}Object.defineProperty(task.target,key,{value:snapshot,enumerable:!0,configurable:!1,writable:!1})}}for(let index=created.length-1;index>=0;index-=1)Object.freeze(created[index]);return root}function joinSource(source){return typeof source=="string"?source:source?.join("")??""}function isDenseArray(value){for(let index=0;index<value.length;index++)if(!Object.prototype.hasOwnProperty.call(value,index))return!1;return!0}function joinText(text){return typeof text=="string"?text:Array.isArray(text)&&isDenseArray(text)&&text.every(item=>typeof item=="string")?text.join(""):""}function*notebookSearchTextParts(text){if(typeof text=="string"){yield text;return}if(!(!Array.isArray(text)||!isDenseArray(text)))for(const part of text)typeof part=="string"&&(yield part)}function*notebookOutputSearchParts(outputs){for(const output of outputs){yield*notebookSearchTextParts(output.text);const data=output.data;if(data)for(const key in data)Object.prototype.hasOwnProperty.call(data,key)&&(yield*notebookSearchTextParts(data[key]));yield" "}}function isTextValue(value){return typeof value=="string"||Array.isArray(value)&&isDenseArray(value)&&value.every(item=>typeof item=="string")}function isJsonValue(value){const pending=[value];let nodes=0;for(;pending.length;){const current=pending.pop();if(++nodes>MAX_JSON_NODES)return!1;if(!(current===null||typeof current=="string"||typeof current=="boolean")){if(typeof current=="number"){if(!Number.isFinite(current))return!1;continue}if(Array.isArray(current)){if(current.length>MAX_JSON_NODES-nodes-pending.length)return!1;for(let index=current.length-1;index>=0;index--)pending.push(current[index]);continue}if(typeof current!="object")return!1;for(const key in current)if(Object.prototype.hasOwnProperty.call(current,key)){if(pending.length>=MAX_JSON_NODES-nodes)return!1;pending.push(current[key])}}}return!0}function isNotebookOutput(value){if(typeof value!="object"||value===null)return!1;const output=value;if(!["stream","error","display_data","execute_result"].includes(String(output.output_type))||output.text!==void 0&&!isTextValue(output.text)||output.traceback!==void 0&&!isTextValue(output.traceback)||output.ename!==void 0&&typeof output.ename!="string"||output.evalue!==void 0&&typeof output.evalue!="string"||output.name!==void 0&&output.name!=="stdout"&&output.name!=="stderr")return!1;const data=output.data;if(data===void 0)return!0;if(typeof data!="object"||data===null||Array.isArray(data))return!1;const mimeData=data;for(const[mime,payload]of Object.entries(mimeData))if(mime==="application/json"){if(typeof payload=="string")try{if(!isJsonValue(JSON.parse(payload)))return!1}catch{return!1}else if(!isJsonValue(payload))return!1}else if(!isTextValue(payload)&&!isJsonValue(payload))return!1;return!0}function isNotebookShape(value){if(typeof value!="object"||value===null)return!1;const v=value;if(!Number.isInteger(v.nbformat)||!Number.isInteger(v.nbformat_minor)||!Array.isArray(v.cells))return!1;const cells=v.cells;let outputCount=0;for(let index=0;index<cells.length;index++){if(!Object.prototype.hasOwnProperty.call(cells,index))return!1;const value2=cells[index];if(typeof value2!="object"||value2===null)return!1;const cell=value2;if(!["markdown","code","raw"].includes(String(cell.cell_type))||!isTextValue(cell.source)||cell.id!==void 0&&typeof cell.id!="string"||cell.execution_count!==void 0&&cell.execution_count!==null&&(!Number.isInteger(cell.execution_count)||cell.execution_count<0))return!1;if(cell.outputs!==void 0&&(!Array.isArray(cell.outputs)||!isDenseArray(cell.outputs)||(outputCount+=cell.outputs.length,outputCount>MAX_OUTPUTS||!cell.outputs.every(isNotebookOutput))))return!1}return!0}class LyraNotebookViewerBase extends LyraElement{}class LyraNotebookViewer extends DocumentAnchorTarget(LyraNotebookViewerBase){constructor(){super(...arguments),this.src="",this.name="",this.outputCollapseLines=40,this.maxHeight="",this.anchorKinds=["node-path","fragment"],this.loadState={kind:"idle"},this.expandedOutputs=new Set,this.activeCellIndex=null,this.searchQuery="",this.searchMatches=[],this.searchMatchCountExact=!0,this.activeSearchIndex=-1,this.cellKey=(item,index)=>item.id??index,this.highlightedCells=new Map,this.generation=0,this.lastSearchLocale="",this.sanitizerGeneration=0,this.sanitizerFailureReported=!1,this.sourceLoadScheduled=!1,this.announcements=new ViewerAnnouncementController(this),this.sanitizedOutputCache=new Map,this.sanitizationTasks=new Map,this.renderCell=(cell,index)=>{const c=cell,numberFormat=getNumberFormat(this.effectiveLocale),inCount=c.execution_count==null?this.localize("notebookViewerInPromptEmpty"):this.localize("notebookViewerInPrompt",void 0,{count:numberFormat.format(c.execution_count)}),rowLabel=c.cell_type==="code"?this.localize("notebookViewerCodeCell",void 0,{index:numberFormat.format(index+1)}):c.cell_type==="markdown"?this.localize("notebookViewerMarkdownCell",void 0,{index:numberFormat.format(index+1)}):this.localize("notebookViewerRawCell",void 0,{index:numberFormat.format(index+1)}),active=this.activeCellIndex===index,highlight=this.highlightedCells.get(index),highlighted=highlight!==void 0,parts=["cell"];return active&&parts.push("cell-active"),highlighted&&(parts.push("cell-highlighted",`cell-highlighted-${highlight.tone??"accent"}`),highlight.id===this.activeHighlightId&&parts.push("cell-highlight-active")),html`<div part=${parts.join(" ")} role="group" aria-label=${rowLabel} data-cell-type=${c.cell_type} ?data-active=${active} ?data-highlighted=${highlighted}>
2
2
  <div part="cell-gutter">${c.cell_type==="code"?inCount:""}</div>
3
3
  <div part="cell-source">
4
4
  ${c.cell_type==="markdown"?html`<lr-markdown
@@ -23,7 +23,7 @@ var __decorate=function(decorators,target,key,desc){var c=arguments.length,r=c<3
23
23
  ></lr-code-block>`:html`<pre part="raw-source" tabindex="0">${joinSource(c.source)}</pre>`}
24
24
  ${c.cell_type==="code"&&c.outputs?.length?html`<div part="outputs">${c.outputs.map((o,i)=>this.renderOutput(index,o,i))}</div>`:nothing}
25
25
  </div>
26
- </div>`}}static{this.defaultStrings={...super.defaultStrings,anchorJumped:LYRA_DEFAULT_anchorJumped,anchorJumpedToPage:LYRA_DEFAULT_anchorJumpedToPage,anchorNotFound:LYRA_DEFAULT_anchorNotFound,documentPreviewEmpty:LYRA_DEFAULT_documentPreviewEmpty,documentPreviewFailedToLoad:LYRA_DEFAULT_documentPreviewFailedToLoad,documentPreviewResourceTooLarge:LYRA_DEFAULT_documentPreviewResourceTooLarge,documentPreviewTypeDocument:LYRA_DEFAULT_documentPreviewTypeDocument,documentPreviewUrlNotAllowed:LYRA_DEFAULT_documentPreviewUrlNotAllowed,documentViewerMissingSanitizer:LYRA_DEFAULT_documentViewerMissingSanitizer,loadingDocument:LYRA_DEFAULT_loadingDocument,notebookViewerCodeCell:LYRA_DEFAULT_notebookViewerCodeCell,notebookViewerCollapseOutput:LYRA_DEFAULT_notebookViewerCollapseOutput,notebookViewerErrorOutput:LYRA_DEFAULT_notebookViewerErrorOutput,notebookViewerInPrompt:LYRA_DEFAULT_notebookViewerInPrompt,notebookViewerInPromptEmpty:LYRA_DEFAULT_notebookViewerInPromptEmpty,notebookViewerInvalid:LYRA_DEFAULT_notebookViewerInvalid,notebookViewerLabel:LYRA_DEFAULT_notebookViewerLabel,notebookViewerMarkdownCell:LYRA_DEFAULT_notebookViewerMarkdownCell,notebookViewerRawCell:LYRA_DEFAULT_notebookViewerRawCell,notebookViewerShowAllOutput:LYRA_DEFAULT_notebookViewerShowAllOutput,notebookViewerTooManyCells:LYRA_DEFAULT_notebookViewerTooManyCells,notebookViewerUnrenderedOutput:LYRA_DEFAULT_notebookViewerUnrenderedOutput,notebookViewerUnsupportedVersion:LYRA_DEFAULT_notebookViewerUnsupportedVersion}}static{this.ownedCollectionProperties=Object.freeze(["notebook"])}static{this.identityCollectionObjectProperties=Object.freeze(["notebook"])}static{this.styles=[LyraElement.styles,specialistTokens,styles,srOnly,viewerLoadingStyles]}get notebook(){return this._notebook}set notebook(value){const old=this._notebook,next=typeof value=="string"||value===void 0?value:(()=>{const snapshot=snapshotNotebookDocument(value);return snapshot===OMIT_NOTEBOOK_SNAPSHOT?invalidNotebookSnapshot():snapshot})();Object.is(old,next)||(this._notebook=next,this.requestUpdate("notebook",old),next===void 0?(this.beginSourceTransition(this.src?"loading":"idle"),this.isConnected&&this.scheduleSourceLoad()):this.parseInline())}get source(){return resolveViewerSource(this.src,this._notebook)}get effectiveOutputCollapseLines(){return finiteCount(this.outputCollapseLines,40)}updated(changed){super.updated(changed),this.announcements.transition("load",this.loadState.kind,this.loadState.kind==="error"?this.loadState.message:this.localize("loadingDocument")),changed.has("src")&&this._notebook===void 0&&this.scheduleSourceLoad();const locale=this.effectiveLocale;if(locale!==this.lastSearchLocale){const shouldRecompute=this.searchQuery!=="";this.lastSearchLocale=locale,shouldRecompute&&this.scheduleAfterUpdate(()=>{this.search(this.searchQuery)},"search")}}willUpdate(changed){super.willUpdate(changed),changed.has("src")&&this._notebook===void 0&&this.beginSourceTransition(this.src?"loading":"idle"),(changed.has("highlights")||changed.has("activeHighlightId")||changed.has("loadState"))&&this.repaintHighlights()}connectedCallback(){super.connectedCallback(),this.announcements.connect(),this.hasUpdated&&this.src&&this._notebook===void 0&&this.scheduleSourceLoad(),this.hasUpdated&&this._notebook!==void 0&&this.loadState.kind==="loaded"&&this.requestUpdate()}disconnectedCallback(){this.generation++,this.sanitizerGeneration++,this.beginAbortableLoad(),this.sanitizedOutputCache.clear(),this.sanitizationTasks.clear(),this.sanitizerFailureReported=!1,this.sourceLoadScheduled=!1,this._notebook===void 0&&(this.loadState={kind:"idle"}),this.announcements.disconnect(),super.disconnectedCallback()}adoptedCallback(){super.adoptedCallback(),this.announcements.adopted()}parseInline(){if(this._notebook===void 0)return;const generation=++this.generation;this.beginAbortableLoad(),this.resetParsedState(),this.loadState={kind:"idle"};try{const raw=typeof this._notebook=="string"?JSON.parse(this._notebook):this._notebook;this.setDoc(raw,generation)}catch(error){this.loadState={kind:"error",message:this.localize("notebookViewerInvalid")},this.emit("lr-render-error",{error})}}resetParsedState(){const shouldEmitSearchReset=this.searchQuery!==""||this.searchMatches.length>0||!this.searchMatchCountExact||this.activeSearchIndex!==-1;this.sanitizerGeneration++,this.sanitizedOutputCache.clear(),this.sanitizationTasks.clear(),this.sanitizerFailureReported=!1,this.expandedOutputs=new Set,this.clearSearchState(),this.activeCellIndex=null,shouldEmitSearchReset&&this.emitSearchChange()}beginSourceTransition(kind){this.generation++,this.beginAbortableLoad(),this.resetParsedState(),this.loadState={kind}}scheduleSourceLoad(){this.sourceLoadScheduled||(this.sourceLoadScheduled=!0,this.scheduleAfterUpdate(()=>{this.sourceLoadScheduled=!1,this.isConnected&&this._notebook===void 0&&this.loadFromSrc()}))}async loadFromSrc(){if(!this.isConnected||this._notebook!==void 0)return;const generation=++this.generation,signal=this.beginAbortableLoad();if(!this.src){this.loadState={kind:"idle"};return}const fetchTarget=resolveOwnerFetchTarget(this,this.src);if(!fetchTarget){const error=new LyraUserFacingError(this.localize("documentPreviewUrlNotAllowed"));this.loadState={kind:"error",message:error.message},this.emit("lr-render-error",{error});return}this.loadState={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(JSON.parse(text),generation)}catch(error){if(isAbortError(error)||!this.isConnected||generation!==this.generation)return;this.loadState={kind:"error",message:error instanceof LyraUserFacingError?error.message:this.localize(isResourceLimitError(error)?"documentPreviewResourceTooLarge":"documentPreviewFailedToLoad")},this.emit("lr-render-error",{error})}}setDoc(raw,generation){if(generation!==this.generation)return;if(!isNotebookShape(raw)){this.loadState={kind:"error",message:this.localize("notebookViewerInvalid")},this.emit("lr-render-error",{error:new Error("invalid notebook shape")});return}if(raw.nbformat!==SUPPORTED_MAJOR||!SUPPORTED_MINORS.includes(raw.nbformat_minor)){this.loadState={kind:"error",message:this.localize("notebookViewerUnsupportedVersion",void 0,{version:`${raw.nbformat}.${raw.nbformat_minor}`})},this.emit("lr-render-error",{error:new Error("unsupported nbformat version")});return}if(raw.cells.length>MAX_CELLS){this.loadState={kind:"error",message:this.localize("notebookViewerTooManyCells")},this.emit("lr-render-error",{error:new Error("too many cells")});return}this.resetParsedState(),this.loadState={kind:"loaded",doc:raw};const language=raw.metadata?.language_info?.name??raw.metadata?.kernelspec?.language??"";this.emit("lr-load",{cellCount:raw.cells.length,language})}async applyAnchor(anchor){const index=this.resolveAnchorCellIndex(anchor);return index<0?!1:(this.activeCellIndex=index,!0)}resolveAnchorCellIndex(anchor){if(this.loadState.kind!=="loaded")return-1;const cells=this.loadState.doc.cells;let index=-1;if(anchor.kind==="node-path"&&Number.isInteger(anchor.path[0]))index=anchor.path[0];else if(anchor.kind==="fragment")index=cells.findIndex(c=>c.id===anchor.id);else return-1;return index<0||index>=cells.length?-1:index}repaintHighlights(){if(this.loadState.kind!=="loaded"){this.highlightedCells.size>0&&(this.highlightedCells=new Map);return}const next=new Map;let considered=0;for(const highlight of prioritizedHighlightCandidates(this.highlights,this.activeHighlightId)){if(considered>=MAX_NOTEBOOK_PAINTED_HIGHLIGHTS)break;considered++;const index=this.resolveAnchorCellIndex(highlight.anchor);index<0||next.has(index)||next.set(index,highlight)}this.highlightedCells=next}async search(query2){const boundedQuery=boundedViewerSearchQuery(query2,this.effectiveLocale),q=boundedQuery.needle;if(this.searchQuery=query2,this.lastSearchLocale=this.effectiveLocale,this.searchMatchCountExact=boundedQuery.accepted,this.loadState.kind!=="loaded"||!q||!boundedQuery.accepted)this.searchMatches=[];else{const budget=new ViewerSearchWorkBudget,matches=[];for(let index=0;index<this.loadState.doc.cells.length;index++){const cell=this.loadState.doc.cells[index],sourceParts=typeof cell.source=="string"?[cell.source]:cell.source,sourceMatch=budget.includesJoined(sourceParts,q,this.effectiveLocale),outputMatch=sourceMatch?!1:budget.includesJoined(notebookOutputSearchParts(cell.outputs??[]),q,this.effectiveLocale);if((sourceMatch||outputMatch)&&matches.push(index),!budget.complete){this.searchMatchCountExact=!1;break}}this.searchMatches=matches}return this.activeSearchIndex=this.searchMatches.length?0:-1,this.activateSearchMatch(),this.emitSearchChange(),this.searchMatches.length}async searchNext(){return this.searchMatches.length?(this.activeSearchIndex=(this.activeSearchIndex+1)%this.searchMatches.length,this.activateSearchMatch(),this.emitSearchChange(),!0):!1}async searchPrevious(){return this.searchMatches.length?(this.activeSearchIndex=(this.activeSearchIndex-1+this.searchMatches.length)%this.searchMatches.length,this.activateSearchMatch(),this.emitSearchChange(),!0):!1}clearSearch(){this.clearSearchState(),this.emitSearchChange()}clearSearchState(){this.searchQuery="",this.searchMatches=[],this.searchMatchCountExact=!0,this.activeSearchIndex=-1}activateSearchMatch(){const index=this.searchMatches[this.activeSearchIndex];index!==void 0&&(this.activeCellIndex=index,this.scheduleAfterUpdate(()=>{this.virtualListEl?.scrollToIndex(index,{align:"auto",behavior:"auto"})}))}emitSearchChange(){this.emit("lr-search-change",{query:this.searchQuery,matchCount:this.searchMatches.length,matchCountExact:this.searchMatchCountExact,activeIndex:this.activeSearchIndex})}toggleOutput(index){const next=new Set(this.expandedOutputs);next.has(index)?next.delete(index):next.add(index),this.expandedOutputs=next}renderAnsiText(text){const segments=createAnsiParser().push(text);return html`${segments.map(seg=>html`<span style=${styleMap(this.segmentStyle(seg.styles))}>${seg.text}</span>`)}`}segmentStyle(s){const fg=sanitizeCssColor(s.fg)??"var(--lr-color-text)",bg=sanitizeCssColor(s.bg)??"transparent";return{"font-weight":s.bold?"bold":"normal",opacity:s.dim?"0.7":"1","font-style":s.italic?"italic":"normal","text-decoration":s.underline?"underline":"none",color:s.inverse?bg:fg,"background-color":s.inverse?fg:bg}}renderTextOutput(index,text,tone){const lines=text.split(`
26
+ </div>`}}static{this.defaultStrings={...super.defaultStrings,anchorJumped:LYRA_DEFAULT_anchorJumped,anchorJumpedToPage:LYRA_DEFAULT_anchorJumpedToPage,anchorNotFound:LYRA_DEFAULT_anchorNotFound,documentPreviewEmpty:LYRA_DEFAULT_documentPreviewEmpty,documentPreviewFailedToLoad:LYRA_DEFAULT_documentPreviewFailedToLoad,documentPreviewResourceTooLarge:LYRA_DEFAULT_documentPreviewResourceTooLarge,documentPreviewTypeDocument:LYRA_DEFAULT_documentPreviewTypeDocument,documentPreviewUrlNotAllowed:LYRA_DEFAULT_documentPreviewUrlNotAllowed,documentViewerMissingSanitizer:LYRA_DEFAULT_documentViewerMissingSanitizer,loadingDocument:LYRA_DEFAULT_loadingDocument,notebookViewerCodeCell:LYRA_DEFAULT_notebookViewerCodeCell,notebookViewerCollapseOutput:LYRA_DEFAULT_notebookViewerCollapseOutput,notebookViewerErrorOutput:LYRA_DEFAULT_notebookViewerErrorOutput,notebookViewerInPrompt:LYRA_DEFAULT_notebookViewerInPrompt,notebookViewerInPromptEmpty:LYRA_DEFAULT_notebookViewerInPromptEmpty,notebookViewerInvalid:LYRA_DEFAULT_notebookViewerInvalid,notebookViewerLabel:LYRA_DEFAULT_notebookViewerLabel,notebookViewerMarkdownCell:LYRA_DEFAULT_notebookViewerMarkdownCell,notebookViewerRawCell:LYRA_DEFAULT_notebookViewerRawCell,notebookViewerShowAllOutput:LYRA_DEFAULT_notebookViewerShowAllOutput,notebookViewerTooManyCells:LYRA_DEFAULT_notebookViewerTooManyCells,notebookViewerUnrenderedOutput:LYRA_DEFAULT_notebookViewerUnrenderedOutput,notebookViewerUnsupportedVersion:LYRA_DEFAULT_notebookViewerUnsupportedVersion}}static{this.ownedCollectionProperties=Object.freeze(["notebook"])}static{this.identityCollectionObjectProperties=Object.freeze(["notebook"])}static{this.styles=[LyraElement.styles,specialistTokens,styles,srOnly,viewerLoadingStyles]}get notebook(){return this._notebook}set notebook(value){const old=this._notebook,next=typeof value=="string"||value===void 0?value:(()=>{const snapshot=snapshotNotebookDocument(value);return snapshot===OMIT_NOTEBOOK_SNAPSHOT?invalidNotebookSnapshot():snapshot})();Object.is(old,next)||(this._notebook=next,this.requestUpdate("notebook",old),next===void 0?(this.beginSourceTransition(this.src?"loading":"idle"),this.isConnected&&this.scheduleSourceLoad()):this.parseInline())}get source(){return resolveViewerSource(this.src,this._notebook)}get effectiveOutputCollapseLines(){return finiteCount(this.outputCollapseLines,40)}updated(changed){super.updated(changed),this.announcements.transition("load",this.loadState.kind,this.loadState.kind==="error"?this.loadState.message:this.localize("loadingDocument")),changed.has("src")&&this._notebook===void 0&&this.scheduleSourceLoad();const locale=this.effectiveLocale;if(locale!==this.lastSearchLocale){const shouldRecompute=this.searchQuery!=="";this.lastSearchLocale=locale,shouldRecompute&&this.scheduleAfterUpdate(()=>{this.search(this.searchQuery)},"search")}}willUpdate(changed){super.willUpdate(changed),changed.has("src")&&this._notebook===void 0&&this.beginSourceTransition(this.src?"loading":"idle"),(changed.has("highlights")||changed.has("activeHighlightId")||changed.has("loadState"))&&this.repaintHighlights()}connectedCallback(){super.connectedCallback(),this.announcements.connect(),this.hasUpdated&&this.src&&this._notebook===void 0&&this.scheduleSourceLoad(),this.hasUpdated&&this._notebook!==void 0&&this.loadState.kind==="loaded"&&this.requestUpdate()}disconnectedCallback(){this.generation++,this.sanitizerGeneration++,this.beginAbortableLoad(),this.sanitizedOutputCache.clear(),this.sanitizationTasks.clear(),this.sanitizerFailureReported=!1,this.sourceLoadScheduled=!1,this._notebook===void 0&&(this.loadState={kind:"idle"}),this.announcements.disconnect(),super.disconnectedCallback()}adoptedCallback(){super.adoptedCallback(),this.announcements.adopted()}parseInline(){if(this._notebook===void 0)return;const generation=++this.generation;this.beginAbortableLoad(),this.resetParsedState(),this.loadState={kind:"idle"};try{const raw=typeof this._notebook=="string"?JSON.parse(this._notebook):this._notebook;this.setDoc(raw,generation)}catch(error){this.loadState={kind:"error",message:this.localize("notebookViewerInvalid")},this.emit("lr-render-error",{error})}}resetParsedState(){const shouldEmitSearchReset=this.searchQuery!==""||this.searchMatches.length>0||!this.searchMatchCountExact||this.activeSearchIndex!==-1;this.sanitizerGeneration++,this.sanitizedOutputCache.clear(),this.sanitizationTasks.clear(),this.sanitizerFailureReported=!1,this.expandedOutputs=new Set,this.clearSearchState(),this.activeCellIndex=null,shouldEmitSearchReset&&this.emitSearchChange()}beginSourceTransition(kind){this.generation++,this.beginAbortableLoad(),this.resetParsedState(),this.loadState={kind}}scheduleSourceLoad(){this.sourceLoadScheduled||(this.sourceLoadScheduled=!0,this.scheduleAfterUpdate(()=>{this.sourceLoadScheduled=!1,this.isConnected&&this._notebook===void 0&&this.loadFromSrc()}))}async loadFromSrc(){if(!this.isConnected||this._notebook!==void 0)return;const generation=++this.generation,signal=this.beginAbortableLoad();if(!this.src){this.loadState={kind:"idle"};return}const fetchTarget=resolveOwnerFetchTarget(this,this.src);if(!fetchTarget){const error=new LyraUserFacingError(this.localize("documentPreviewUrlNotAllowed"));this.loadState={kind:"error",message:error.message},this.emit("lr-render-error",{error});return}this.loadState={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(JSON.parse(text),generation)}catch(error){if(isAbortError(error)||!this.isConnected||generation!==this.generation)return;this.loadState={kind:"error",message:error instanceof LyraUserFacingError?error.message:this.localize(isResourceLimitError(error)?"documentPreviewResourceTooLarge":"documentPreviewFailedToLoad")},this.emit("lr-render-error",{error})}}setDoc(raw,generation){if(generation!==this.generation)return;if(!isNotebookShape(raw)){this.loadState={kind:"error",message:this.localize("notebookViewerInvalid")},this.emit("lr-render-error",{error:new Error("invalid notebook shape")});return}if(raw.nbformat!==SUPPORTED_MAJOR||!SUPPORTED_MINORS.includes(raw.nbformat_minor)){this.loadState={kind:"error",message:this.localize("notebookViewerUnsupportedVersion",void 0,{version:`${raw.nbformat}.${raw.nbformat_minor}`})},this.emit("lr-render-error",{error:new Error("unsupported nbformat version")});return}if(raw.cells.length>MAX_CELLS){this.loadState={kind:"error",message:this.localize("notebookViewerTooManyCells")},this.emit("lr-render-error",{error:new Error("too many cells")});return}this.resetParsedState(),this.loadState={kind:"loaded",doc:raw};const language=raw.metadata?.language_info?.name??raw.metadata?.kernelspec?.language??"";this.emit("lr-load",{cellCount:raw.cells.length,language})}async applyAnchor(anchor){const index=this.resolveAnchorCellIndex(anchor);return index<0?!1:this.activateCell(index,"start")}async activateCell(index,align){const generation=this.generation,ownerDocument=this.ownerDocument;if(this.activeCellIndex=index,!this.isConnected||(await this.updateComplete,!this.isConnected||this.ownerDocument!==ownerDocument||generation!==this.generation||this.activeCellIndex!==index))return!1;const list=this.virtualListEl;return!list||(await list.updateComplete,!this.isConnected||this.ownerDocument!==ownerDocument||generation!==this.generation||this.activeCellIndex!==index)?!1:(list.scrollToIndex(index,{align,behavior:"auto"}),await list.updateComplete,this.isConnected&&this.ownerDocument===ownerDocument&&generation===this.generation&&this.activeCellIndex===index)}resolveAnchorCellIndex(anchor){if(this.loadState.kind!=="loaded")return-1;const cells=this.loadState.doc.cells;let index=-1;if(anchor.kind==="node-path"&&Number.isInteger(anchor.path[0]))index=anchor.path[0];else if(anchor.kind==="fragment")index=cells.findIndex(c=>c.id===anchor.id);else return-1;return index<0||index>=cells.length?-1:index}repaintHighlights(){if(this.loadState.kind!=="loaded"){this.highlightedCells.size>0&&(this.highlightedCells=new Map);return}const next=new Map;let considered=0;for(const highlight of prioritizedHighlightCandidates(this.highlights,this.activeHighlightId)){if(considered>=MAX_NOTEBOOK_PAINTED_HIGHLIGHTS)break;considered++;const index=this.resolveAnchorCellIndex(highlight.anchor);index<0||next.has(index)||next.set(index,highlight)}this.highlightedCells=next}async search(query2){const boundedQuery=boundedViewerSearchQuery(query2,this.effectiveLocale),q=boundedQuery.needle;if(this.searchQuery=query2,this.lastSearchLocale=this.effectiveLocale,this.searchMatchCountExact=boundedQuery.accepted,this.loadState.kind!=="loaded"||!q||!boundedQuery.accepted)this.searchMatches=[];else{const budget=new ViewerSearchWorkBudget,matches=[];for(let index=0;index<this.loadState.doc.cells.length;index++){const cell=this.loadState.doc.cells[index],sourceParts=typeof cell.source=="string"?[cell.source]:cell.source,sourceMatch=budget.includesJoined(sourceParts,q,this.effectiveLocale),outputMatch=sourceMatch?!1:budget.includesJoined(notebookOutputSearchParts(cell.outputs??[]),q,this.effectiveLocale);if((sourceMatch||outputMatch)&&matches.push(index),!budget.complete){this.searchMatchCountExact=!1;break}}this.searchMatches=matches}return this.activeSearchIndex=this.searchMatches.length?0:-1,await this.activateSearchMatch(),this.emitSearchChange(),this.searchMatches.length}async searchNext(){return this.searchMatches.length?(this.activeSearchIndex=(this.activeSearchIndex+1)%this.searchMatches.length,await this.activateSearchMatch(),this.emitSearchChange(),!0):!1}async searchPrevious(){return this.searchMatches.length?(this.activeSearchIndex=(this.activeSearchIndex-1+this.searchMatches.length)%this.searchMatches.length,await this.activateSearchMatch(),this.emitSearchChange(),!0):!1}clearSearch(){this.clearSearchState(),this.emitSearchChange()}clearSearchState(){this.searchQuery="",this.searchMatches=[],this.searchMatchCountExact=!0,this.activeSearchIndex=-1}async activateSearchMatch(){const index=this.searchMatches[this.activeSearchIndex];index!==void 0&&await this.activateCell(index,"auto")}emitSearchChange(){this.emit("lr-search-change",{query:this.searchQuery,matchCount:this.searchMatches.length,matchCountExact:this.searchMatchCountExact,activeIndex:this.activeSearchIndex})}toggleOutput(index){const next=new Set(this.expandedOutputs);next.has(index)?next.delete(index):next.add(index),this.expandedOutputs=next}renderAnsiText(text){const segments=createAnsiParser().push(text);return html`${segments.map(seg=>html`<span style=${styleMap(this.segmentStyle(seg.styles))}>${seg.text}</span>`)}`}segmentStyle(s){const fg=sanitizeCssColor(s.fg)??"var(--lr-color-text)",bg=sanitizeCssColor(s.bg)??"transparent";return{"font-weight":s.bold?"bold":"normal",opacity:s.dim?"0.7":"1","font-style":s.italic?"italic":"normal","text-decoration":s.underline?"underline":"none",color:s.inverse?bg:fg,"background-color":s.inverse?fg:bg}}renderTextOutput(index,text,tone){const lines=text.split(`
27
27
  `),outputCollapseLines=this.effectiveOutputCollapseLines,collapsible=outputCollapseLines>0&&lines.length>outputCollapseLines,expanded=this.expandedOutputs.has(index)||!collapsible,shown=expanded?text:lines.slice(0,outputCollapseLines).join(`
28
28
  `);return html`<div part=${tone==="danger"?"output output-error":"output"} data-output-type="stream" data-stream=${tone==="danger"?"stderr":"stdout"}
29
29
  >${this.renderAnsiText(shown)}${collapsible?html`<button
@@ -53,8 +53,8 @@ var __decorate=function(decorators,target,key,desc){var c=arguments.length,r=c<3
53
53
  exportparts="cell:cell, cell-active:cell-active, cell-highlighted:cell-highlighted, cell-highlighted-accent:cell-highlighted-accent, cell-highlighted-success:cell-highlighted-success, cell-highlighted-warning:cell-highlighted-warning, cell-highlighted-danger:cell-highlighted-danger, cell-highlighted-neutral:cell-highlighted-neutral, cell-highlight-active:cell-highlight-active, cell-gutter:cell-gutter, cell-source:cell-source, raw-source:raw-source, outputs:outputs, output:output, output-error:output-error, error-output-label:error-output-label, output-toggle:output-toggle"
54
54
  .items=${this.loadState.doc.cells}
55
55
  .renderItem=${this.renderCell}
56
- .keyFunction=${(item,i)=>item.id??i}
57
- .activeItemId=${this.activeCellIndex??""}
56
+ .keyFunction=${this.cellKey}
57
+ .activeItemId=${this.activeCellIndex===null?"":this.loadState.doc.cells[this.activeCellIndex]?.id??this.activeCellIndex}
58
58
  @lr-visible-range-change=${this.stopOwnedEvent}
59
59
  @lr-virtual-scroll=${this.stopOwnedEvent}
60
60
  ></lr-virtual-list>`:this.loadState.kind==="loading"?renderViewerLoading(this.localize("loadingDocument")):this.loadState.kind==="error"?html`<div part="error">${this.loadState.message}</div>`:html`<p>${this.localize("documentPreviewEmpty",void 0,{type:this.localize("documentPreviewTypeDocument")})}</p>`}
@@ -1 +1 @@
1
- import{css}from"lit";const styles=css`:host{contain-intrinsic-inline-size:var(--lr-size-20rem);min-inline-size:0;display:block;container-type:inline-size}[part=base]{max-block-size:var(--lr-notebook-viewer-max-height,none);border:var(--lr-border-width-thin) solid var(--lr-color-border);border-radius:var(--lr-radius);display:block;overflow:auto}lr-virtual-list::part(cell){gap:var(--lr-space-s);padding:var(--lr-space-s);border-block-end:var(--lr-border-width-thin) solid var(--lr-color-border);grid-template-columns:auto 1fr;display:grid}lr-virtual-list::part(cell-active){background:var(--lr-notebook-viewer-active-bg,var(--lr-color-brand-quiet))}lr-virtual-list::part(cell-highlighted){--_lr-notebook-viewer-highlight-background:var(--lr-notebook-viewer-highlight-accent-background,var(--lr-color-brand-quiet));background:var(--_lr-notebook-viewer-highlight-background)}lr-virtual-list::part(cell-highlighted-success){--_lr-notebook-viewer-highlight-background:var(--lr-notebook-viewer-highlight-success-background,var(--lr-color-success-quiet))}lr-virtual-list::part(cell-highlighted-warning){--_lr-notebook-viewer-highlight-background:var(--lr-notebook-viewer-highlight-warning-background,var(--lr-color-warning-quiet))}lr-virtual-list::part(cell-highlighted-danger){--_lr-notebook-viewer-highlight-background:var(--lr-notebook-viewer-highlight-danger-background,var(--lr-color-danger-quiet))}lr-virtual-list::part(cell-highlighted-neutral){--_lr-notebook-viewer-highlight-background:var(--lr-notebook-viewer-highlight-neutral-background,var(--lr-color-surface-raised))}lr-virtual-list::part(cell-highlight-active){outline:var(--lr-focus-ring-width) solid var(--lr-notebook-viewer-highlight-active-outline,var(--lr-focus-ring-color));outline-offset:calc(-1 * var(--lr-focus-ring-width))}lr-virtual-list::part(cell-gutter){min-inline-size:var(--lr-size-4rem);color:var(--lr-color-text-quiet);font-family:var(--lr-font-mono);font-size:var(--lr-font-size-xs);text-align:end}lr-virtual-list::part(cell-source){min-inline-size:0}lr-virtual-list::part(raw-source){box-sizing:border-box;min-inline-size:var(--lr-icon-button-size);min-block-size:var(--lr-icon-button-size);max-inline-size:100%;overflow:auto}lr-virtual-list::part(raw-source):hover{background:var(--lr-color-surface-raised)}lr-virtual-list::part(raw-source):focus-visible{outline:var(--lr-focus-ring);outline-offset:var(--lr-focus-ring-offset)}lr-virtual-list::part(outputs){gap:var(--lr-space-xs);flex-direction:column;margin-block-start:var(--lr-space-xs);display:flex}lr-virtual-list::part(output){font-family:var(--lr-font-mono);font-size:var(--lr-font-size-sm);white-space:pre-wrap;direction:ltr;unicode-bidi:isolate}lr-virtual-list::part(output-error){color:var(--lr-color-danger)}lr-virtual-list::part(error-output-label){font-weight:var(--lr-font-weight-semibold);display:block}lr-virtual-list::part(output-toggle){color:var(--lr-color-brand);cursor:pointer;font:inherit;background:0 0;border:none;align-self:flex-start;padding:0}lr-virtual-list::part(output-toggle):hover{text-decoration:underline}lr-virtual-list::part(output-toggle):active{color:color-mix(in oklab, var(--lr-color-brand), var(--lr-color-mix-partner) var(--lr-color-mix-active));text-decoration:underline}lr-virtual-list::part(output-toggle):focus-visible{outline:var(--lr-focus-ring);outline-offset:var(--lr-focus-ring-offset)}[part=error]{color:var(--lr-color-danger);padding:var(--lr-space-l);text-align:center}@container (inline-size<=30rem){lr-virtual-list::part(cell){grid-template-columns:1fr}lr-virtual-list::part(cell-gutter){text-align:start}}`;export{styles};
1
+ import{css}from"lit";const styles=css`:host{contain-intrinsic-inline-size:var(--lr-size-20rem);min-inline-size:0;display:block;container-type:inline-size}[part=base]{max-block-size:var(--lr-notebook-viewer-max-height,none);border:var(--lr-border-width-thin) solid var(--lr-color-border);border-radius:var(--lr-radius);display:block;overflow:auto}lr-virtual-list::part(base){max-block-size:calc(var(--lr-notebook-viewer-max-height,none) - 2 * var(--lr-border-width-thin))}lr-virtual-list::part(cell){gap:var(--lr-space-s);padding:var(--lr-space-s);border-block-end:var(--lr-border-width-thin) solid var(--lr-color-border);grid-template-columns:auto 1fr;display:grid}lr-virtual-list::part(cell-active){background:var(--lr-notebook-viewer-active-bg,var(--lr-color-brand-quiet))}lr-virtual-list::part(cell-highlighted){--_lr-notebook-viewer-highlight-background:var(--lr-notebook-viewer-highlight-accent-background,var(--lr-color-brand-quiet));background:var(--_lr-notebook-viewer-highlight-background)}lr-virtual-list::part(cell-highlighted-success){--_lr-notebook-viewer-highlight-background:var(--lr-notebook-viewer-highlight-success-background,var(--lr-color-success-quiet))}lr-virtual-list::part(cell-highlighted-warning){--_lr-notebook-viewer-highlight-background:var(--lr-notebook-viewer-highlight-warning-background,var(--lr-color-warning-quiet))}lr-virtual-list::part(cell-highlighted-danger){--_lr-notebook-viewer-highlight-background:var(--lr-notebook-viewer-highlight-danger-background,var(--lr-color-danger-quiet))}lr-virtual-list::part(cell-highlighted-neutral){--_lr-notebook-viewer-highlight-background:var(--lr-notebook-viewer-highlight-neutral-background,var(--lr-color-surface-raised))}lr-virtual-list::part(cell-highlight-active){outline:var(--lr-focus-ring-width) solid var(--lr-notebook-viewer-highlight-active-outline,var(--lr-focus-ring-color));outline-offset:calc(-1 * var(--lr-focus-ring-width))}lr-virtual-list::part(cell-gutter){min-inline-size:var(--lr-size-4rem);color:var(--lr-color-text-quiet);font-family:var(--lr-font-mono);font-size:var(--lr-font-size-xs);text-align:end}lr-virtual-list::part(cell-source){min-inline-size:0}lr-virtual-list::part(raw-source){box-sizing:border-box;min-inline-size:var(--lr-icon-button-size);min-block-size:var(--lr-icon-button-size);max-inline-size:100%;overflow:auto}lr-virtual-list::part(raw-source):hover{background:var(--lr-color-surface-raised)}lr-virtual-list::part(raw-source):focus-visible{outline:var(--lr-focus-ring);outline-offset:var(--lr-focus-ring-offset)}lr-virtual-list::part(outputs){gap:var(--lr-space-xs);flex-direction:column;margin-block-start:var(--lr-space-xs);display:flex}lr-virtual-list::part(output){font-family:var(--lr-font-mono);font-size:var(--lr-font-size-sm);white-space:pre-wrap;direction:ltr;unicode-bidi:isolate}lr-virtual-list::part(output-error){color:var(--lr-color-danger)}lr-virtual-list::part(error-output-label){font-weight:var(--lr-font-weight-semibold);display:block}lr-virtual-list::part(output-toggle){color:var(--lr-color-brand);cursor:pointer;font:inherit;background:0 0;border:none;align-self:flex-start;padding:0}lr-virtual-list::part(output-toggle):hover{text-decoration:underline}lr-virtual-list::part(output-toggle):active{color:color-mix(in oklab, var(--lr-color-brand), var(--lr-color-mix-partner) var(--lr-color-mix-active));text-decoration:underline}lr-virtual-list::part(output-toggle):focus-visible{outline:var(--lr-focus-ring);outline-offset:var(--lr-focus-ring-offset)}[part=error]{color:var(--lr-color-danger);padding:var(--lr-space-l);text-align:center}@container (inline-size<=30rem){lr-virtual-list::part(cell){grid-template-columns:1fr}lr-virtual-list::part(cell-gutter){text-align:start}}`;export{styles};
@@ -1 +1 @@
1
- const REMOVED_WITH_CONTENT=new Set(["a","button","details","dialog","fieldset","form","label","select","summary","textarea"]),REMOVED_ENTIRELY=new Set(["animate","animatemotion","animatetransform","applet","audio","base","canvas","embed","fencedframe","frame","iframe","input","link","meta","noscript","object","option","optgroup","picture","portal","script","set","discard","source","style","track","video"]),NETWORK_ATTRIBUTES=new Set(["action","background","cite","data","formaction","href","manifest","ping","poster","profile","src","srcdoc","srcset","usemap","xlink:href"]),INTERACTION_ATTRIBUTES=new Set(["autofocus","contenteditable","download","draggable","form","formaction","popover","tabindex","target"]),SVG_FRAGMENT_ATTRIBUTES=new Set(["clip-path","color-profile","cursor","fill","filter","marker","marker-end","marker-mid","marker-start","mask","stroke"]),LOCAL_FRAGMENT=/^#[A-Za-z_][\w:.-]*$/,LOCAL_FRAGMENT_URL=/^\s*url\(\s*(['"]?)#([A-Za-z_][\w:.-]*)\1\s*\)\s*$/i,INLINE_RASTER_DATA=/^data:image\/(?:gif|jpeg|png|webp);base64,[a-z\d+/=\s]+$/i;function replaceWithContents(element){const parent=element.parentNode;if(parent){for(;element.firstChild;)parent.insertBefore(element.firstChild,element);element.remove()}}function isSvgElement(element){return element.namespaceURI==="http://www.w3.org/2000/svg"}function sanitizePassiveMarkup(sanitizer,raw,ownerDocument,profile="passive-document"){const purified=String(sanitizer.sanitize(raw,profile==="passive-svg"?{USE_PROFILES:{svg:!0,svgFilters:!0},ADD_TAGS:["use"],ADD_ATTR:["href","xlink:href"]}:void 0)),template=ownerDocument.createElement("template");template.innerHTML=purified;for(const element of[...template.content.querySelectorAll("*")]){const localName=element.localName.toLowerCase();if(REMOVED_ENTIRELY.has(localName)){element.remove();continue}const retainedTransclusionAnchor=profile==="transclusion"&&localName==="a";if(REMOVED_WITH_CONTENT.has(localName)&&!retainedTransclusionAnchor){replaceWithContents(element);continue}if(localName.includes("-")){replaceWithContents(element);continue}for(const attributeName of element.getAttributeNames()){const name=attributeName.toLowerCase(),value=element.getAttribute(attributeName)??"";if(name==="style"||name==="part"||name==="exportparts"||name.startsWith("on")||INTERACTION_ATTRIBUTES.has(name)){element.removeAttribute(attributeName);continue}if(NETWORK_ATTRIBUTES.has(name)){const keepSvgFragment=isSvgElement(element)&&(name==="href"||name==="xlink:href")&&LOCAL_FRAGMENT.test(value.trim()),keepInlineSvgRaster=profile==="passive-svg"&&isSvgElement(element)&&element.localName.toLowerCase()==="image"&&(name==="href"||name==="xlink:href"||name==="src")&&INLINE_RASTER_DATA.test(value.trim()),keepInlineDocumentRaster=profile==="passive-document"&&element.localName.toLowerCase()==="img"&&name==="src"&&INLINE_RASTER_DATA.test(value.trim()),keepTransclusionFragment=profile==="transclusion"&&name==="href"&&LOCAL_FRAGMENT.test(value.trim());!keepSvgFragment&&!keepInlineSvgRaster&&!keepInlineDocumentRaster&&!keepTransclusionFragment&&element.removeAttribute(attributeName);continue}SVG_FRAGMENT_ATTRIBUTES.has(name)&&/url\s*\(|\\/i.test(value)&&(!isSvgElement(element)||!LOCAL_FRAGMENT_URL.test(value))&&element.removeAttribute(attributeName)}profile==="passive-svg"&&!isSvgElement(element)&&replaceWithContents(element)}return template.innerHTML}export{sanitizePassiveMarkup};
1
+ const REMOVED_WITH_CONTENT=new Set(["a","button","details","dialog","fieldset","form","label","select","summary","textarea"]),REMOVED_ENTIRELY=new Set(["animate","animatemotion","animatetransform","applet","audio","base","canvas","embed","fencedframe","frame","iframe","input","link","meta","noscript","object","option","optgroup","picture","portal","script","set","discard","source","style","track","video"]),NETWORK_ATTRIBUTES=new Set(["action","background","cite","data","formaction","href","manifest","ping","poster","profile","src","srcdoc","srcset","usemap","xlink:href"]),INTERACTION_ATTRIBUTES=new Set(["autofocus","contenteditable","download","draggable","form","formaction","popover","tabindex","target"]),SVG_FRAGMENT_ATTRIBUTES=new Set(["clip-path","color-profile","cursor","fill","filter","marker","marker-end","marker-mid","marker-start","mask","stroke"]),LOCAL_FRAGMENT=/^#[A-Za-z_][\w:.-]*$/,LOCAL_FRAGMENT_URL=/^\s*url\(\s*(['"]?)#([A-Za-z_][\w:.-]*)\1\s*\)\s*$/i,INLINE_RASTER_DATA=/^data:image\/(?:gif|jpeg|png|webp);base64,[a-z\d+/=\s]+$/i;function replaceWithContents(element){const parent=element.parentNode;if(parent){for(;element.firstChild;)parent.insertBefore(element.firstChild,element);element.remove()}}function isSvgElement(element){return element.namespaceURI==="http://www.w3.org/2000/svg"}function elementsIncludingTemplateContents(root){const elements=[...root.querySelectorAll("*")];for(let index=0;index<elements.length;index++){const element=elements[index];if(element.localName==="template"&&"content"in element)for(const child of element.content.querySelectorAll("*"))elements.push(child)}return elements}function sanitizePassiveMarkup(sanitizer,raw,ownerDocument,profile="passive-document"){const purified=String(sanitizer.sanitize(raw,profile==="passive-svg"?{USE_PROFILES:{svg:!0,svgFilters:!0},ADD_TAGS:["use"],ADD_ATTR:["href","xlink:href"]}:void 0)),template=ownerDocument.createElement("template");template.innerHTML=purified;for(const element of elementsIncludingTemplateContents(template.content)){const localName=element.localName.toLowerCase();if(REMOVED_ENTIRELY.has(localName)){element.remove();continue}const retainedTransclusionAnchor=profile==="transclusion"&&localName==="a";if(REMOVED_WITH_CONTENT.has(localName)&&!retainedTransclusionAnchor){replaceWithContents(element);continue}if(localName.includes("-")){replaceWithContents(element);continue}for(const attributeName of element.getAttributeNames()){const name=attributeName.toLowerCase(),value=element.getAttribute(attributeName)??"";if(name==="style"||name==="part"||name==="exportparts"||name.startsWith("on")||INTERACTION_ATTRIBUTES.has(name)){element.removeAttribute(attributeName);continue}if(NETWORK_ATTRIBUTES.has(name)){const keepSvgFragment=isSvgElement(element)&&(name==="href"||name==="xlink:href")&&LOCAL_FRAGMENT.test(value.trim()),keepInlineSvgRaster=profile==="passive-svg"&&isSvgElement(element)&&element.localName.toLowerCase()==="image"&&(name==="href"||name==="xlink:href"||name==="src")&&INLINE_RASTER_DATA.test(value.trim()),keepInlineDocumentRaster=profile==="passive-document"&&element.localName.toLowerCase()==="img"&&name==="src"&&INLINE_RASTER_DATA.test(value.trim()),keepTransclusionFragment=profile==="transclusion"&&name==="href"&&LOCAL_FRAGMENT.test(value.trim());!keepSvgFragment&&!keepInlineSvgRaster&&!keepInlineDocumentRaster&&!keepTransclusionFragment&&element.removeAttribute(attributeName);continue}SVG_FRAGMENT_ATTRIBUTES.has(name)&&/url\s*\(|\\/i.test(value)&&(!isSvgElement(element)||!LOCAL_FRAGMENT_URL.test(value))&&element.removeAttribute(attributeName)}profile==="passive-svg"&&!isSvgElement(element)&&replaceWithContents(element)}return template.innerHTML}export{sanitizePassiveMarkup};
@@ -1 +1 @@
1
- import{unwrapOptionalPeerDefault}from"../../../internal/optional-peer-capabilities.js";function isPdfJsApi(value){return(typeof value=="object"||typeof value=="function")&&value!==null&&"getDocument"in value&&typeof value.getDocument=="function"&&"GlobalWorkerOptions"in value&&(typeof value.GlobalWorkerOptions=="object"||typeof value.GlobalWorkerOptions=="function")&&value.GlobalWorkerOptions!==null}let pdfjs;const PDF_WORKER_MODULE_SPECIFIER="pdfjs-dist/build/pdf.worker.min.mjs",ALLOWED_WORKER_PROTOCOLS=["http:","https:","blob:","file:"];function defaultWorkerModuleResolver(specifier){const resolver=import.meta.resolve;if(!resolver)return null;try{return resolver(specifier)}catch{return null}}function safeWorkerModuleUrl(value){if(!value)return null;try{const url=new URL(value);return ALLOWED_WORKER_PROTOCOLS.includes(url.protocol)?url.href:null}catch{return null}}function safeAuthoredWorkerUrl(value){if(!value)return null;try{const url=new URL(value,typeof document>"u"?void 0:document.baseURI);return ALLOWED_WORKER_PROTOCOLS.includes(url.protocol)?url.href:null}catch{return null}}function configurePdfJsWorker(pdfjsLib,authoredWorkerSrc,resolveWorkerModule){if(pdfjsLib.GlobalWorkerOptions.workerSrc)return;const workerSrc=safeAuthoredWorkerUrl(authoredWorkerSrc)??safeWorkerModuleUrl(resolveWorkerModule(PDF_WORKER_MODULE_SPECIFIER));workerSrc&&(pdfjsLib.GlobalWorkerOptions.workerSrc=workerSrc)}async function loadPdfJsDeps(importPdfjs=()=>import("pdfjs-dist"),resolveWorkerModule=defaultWorkerModuleResolver,workerSrc){try{const module=await importPdfjs(),direct=isPdfJsApi(module)?module:void 0,defaultExport=unwrapOptionalPeerDefault(module),pdfjsLib=direct??(isPdfJsApi(defaultExport)?defaultExport:null);return pdfjsLib?(configurePdfJsWorker(pdfjsLib,workerSrc,resolveWorkerModule),pdfjsLib):null}catch(error){return console.warn("<lr-pdf-viewer> needs the optional peer dependency `pdfjs-dist` to render PDF documents \u2014 install it with `pnpm add pdfjs-dist`:",error),null}}function loadPdfJs(workerSrc){return pdfjs?pdfjs.then(pdfjsLib=>(pdfjsLib&&configurePdfJsWorker(pdfjsLib,workerSrc,defaultWorkerModuleResolver),pdfjsLib)):(pdfjs=loadPdfJsDeps(void 0,void 0,workerSrc),pdfjs)}function clearPdfJsCache(){pdfjs=void 0}export{clearPdfJsCache,loadPdfJs,loadPdfJsDeps};
1
+ import{unwrapOptionalPeerDefault}from"../../../internal/optional-peer-capabilities.js";import{devWarnOnce}from"../../../internal/dev-mode-attribute-warning.js";const PDF_JS_WARNING_KEY="lyra-pdf-viewer-pdfjs-unavailable",PDF_JS_WARNING="<lr-pdf-viewer> could not load its optional pdfjs-dist peer.";function isPdfJsApi(value){return(typeof value=="object"||typeof value=="function")&&value!==null&&"getDocument"in value&&typeof value.getDocument=="function"&&"GlobalWorkerOptions"in value&&(typeof value.GlobalWorkerOptions=="object"||typeof value.GlobalWorkerOptions=="function")&&value.GlobalWorkerOptions!==null}let pdfjs;const PDF_WORKER_MODULE_SPECIFIER="pdfjs-dist/build/pdf.worker.min.mjs",ALLOWED_WORKER_PROTOCOLS=["http:","https:","blob:","file:"];function defaultWorkerModuleResolver(specifier){const resolver=import.meta.resolve;if(!resolver)return null;try{return resolver(specifier)}catch{return null}}function safeWorkerModuleUrl(value){if(!value)return null;try{const url=new URL(value);return ALLOWED_WORKER_PROTOCOLS.includes(url.protocol)?url.href:null}catch{return null}}function safeAuthoredWorkerUrl(value){if(!value)return null;try{const url=new URL(value,typeof document>"u"?void 0:document.baseURI);return ALLOWED_WORKER_PROTOCOLS.includes(url.protocol)?url.href:null}catch{return null}}function configurePdfJsWorker(pdfjsLib,authoredWorkerSrc,resolveWorkerModule){if(pdfjsLib.GlobalWorkerOptions.workerSrc)return;const workerSrc=safeAuthoredWorkerUrl(authoredWorkerSrc)??safeWorkerModuleUrl(resolveWorkerModule(PDF_WORKER_MODULE_SPECIFIER));workerSrc&&(pdfjsLib.GlobalWorkerOptions.workerSrc=workerSrc)}async function loadPdfJsDeps(importPdfjs=()=>import("pdfjs-dist"),resolveWorkerModule=defaultWorkerModuleResolver,workerSrc){try{const module=await importPdfjs(),direct=isPdfJsApi(module)?module:void 0,defaultExport=unwrapOptionalPeerDefault(module),pdfjsLib=direct??(isPdfJsApi(defaultExport)?defaultExport:null);return pdfjsLib?(configurePdfJsWorker(pdfjsLib,workerSrc,resolveWorkerModule),pdfjsLib):null}catch{return devWarnOnce(PDF_JS_WARNING_KEY,PDF_JS_WARNING),null}}function loadPdfJs(workerSrc){return pdfjs?pdfjs.then(pdfjsLib=>(pdfjsLib&&configurePdfJsWorker(pdfjsLib,workerSrc,defaultWorkerModuleResolver),pdfjsLib)):(pdfjs=loadPdfJsDeps(void 0,void 0,workerSrc),pdfjs)}function clearPdfJsCache(){pdfjs=void 0}export{clearPdfJsCache,loadPdfJs,loadPdfJsDeps};
@@ -1 +1 @@
1
- import{resolveOptionalPeerCapability}from"../../../internal/optional-peer-capabilities.js";const MAX_SAFE_PPTX_ZIP_LIMITS={maxEntries:4e3,maxEntryUncompressedBytes:32*1024*1024,maxTotalUncompressedBytes:256*1024*1024,maxMediaBytes:192*1024*1024,maxConcurrency:8};let modulePromise;function hasPptxOpenCapability(value){if(typeof value!="object"&&typeof value!="function"||value===null)return!1;const viewer=value.PptxViewer;if(typeof viewer!="object"&&typeof viewer!="function"||viewer===null||typeof viewer.open!="function")return!1;const limits=value.RECOMMENDED_ZIP_LIMITS;return typeof limits!="object"||limits===null?!1:Object.keys(MAX_SAFE_PPTX_ZIP_LIMITS).every(key=>{const candidate=limits[key];return Number.isSafeInteger(candidate)&&candidate>0&&candidate<=MAX_SAFE_PPTX_ZIP_LIMITS[key]})}function adaptPptxViewer(value){if(typeof value!="object"&&typeof value!="function"||value===null)return null;const candidate=value;if(!Number.isSafeInteger(candidate.slideCount)||candidate.slideCount<0||!Number.isSafeInteger(candidate.currentSlideIndex)||typeof candidate.goToSlide!="function"||typeof candidate.searchText!="function"||typeof candidate.highlightSearchResult!="function"||typeof candidate.renderThumbnailToContainer!="function"||typeof candidate.clearSearchHighlights!="function"||typeof candidate.destroy!="function"||typeof candidate.addEventListener!="function"||typeof candidate.removeEventListener!="function")return null;const viewer=candidate,listeners=new Set;let destroyed=!1;const emit=event=>{for(const listener of listeners)listener(event)},onSlideChange=event=>{const index=event.detail?.index;typeof index=="number"&&Number.isSafeInteger(index)&&index>=0&&index<viewer.slideCount&&emit(Object.freeze({kind:"slide-change",index}))},onSlideError=event=>{const detail=event.detail,page=typeof detail?.index=="number"&&Number.isSafeInteger(detail.index)&&detail.index>=0&&detail.index<viewer.slideCount?detail.index+1:void 0,normalized={kind:"diagnostic",code:"pptx-slide-render-error",cause:detail?.error,fatal:detail?.fatal===!0,...page===void 0?{}:{page}};emit(Object.freeze(normalized))},onNodeError=event=>{const detail=event.detail,nodeId=typeof detail?.nodeId=="string"&&detail.nodeId.length<=1024?detail.nodeId:void 0,normalized={kind:"diagnostic",code:"pptx-node-render-error",cause:detail?.error,fatal:detail?.fatal===!0,...nodeId===void 0?{}:{nodeId}};emit(Object.freeze(normalized))};return viewer.addEventListener("slidechange",onSlideChange),viewer.addEventListener("slideerror",onSlideError),viewer.addEventListener("nodeerror",onNodeError),Object.freeze({get slideCount(){return viewer.slideCount},get currentSlideIndex(){return viewer.currentSlideIndex},goToSlide:async index=>{await viewer.goToSlide(index)},searchText:(query,options)=>viewer.searchText(query,options),highlightSearchResult:async(result,options)=>viewer.highlightSearchResult(result,options),renderThumbnailToContainer(index,container,options){if(!Number.isSafeInteger(index)||index<0||index>=viewer.slideCount)return null;const width=options?.width;if(width!==void 0&&(!Number.isFinite(width)||width<=0))return null;const raw=viewer.renderThumbnailToContainer(index,container,options);if(!raw||typeof raw.dispose!="function"||typeof raw.ready?.then!="function")return null;let disposed=!1;return Object.freeze({ready:Promise.resolve(raw.ready),dispose(){disposed||(disposed=!0,raw.dispose())}})},clearSearchHighlights:()=>viewer.clearSearchHighlights(),subscribe(listener){return destroyed?()=>{}:(listeners.add(listener),()=>listeners.delete(listener))},destroy(){destroyed||(destroyed=!0,viewer.removeEventListener("slidechange",onSlideChange),viewer.removeEventListener("slideerror",onSlideError),viewer.removeEventListener("nodeerror",onNodeError),listeners.clear(),viewer.destroy())}})}async function loadPptxRenderer(importer=()=>import("@aiden0z/pptx-renderer")){try{const module=await importer();return resolveOptionalPeerCapability(module,hasPptxOpenCapability)}catch(error){return console.warn("The optional `@aiden0z/pptx-renderer` peer is required to render PPTX files.",error),null}}function getPptxRenderer(){return modulePromise||(modulePromise=loadPptxRenderer()),modulePromise}function __setPptxRendererForTesting(module){modulePromise=module===void 0?void 0:Promise.resolve(module)}export{__setPptxRendererForTesting,adaptPptxViewer,getPptxRenderer,loadPptxRenderer};
1
+ import{resolveOptionalPeerCapability}from"../../../internal/optional-peer-capabilities.js";import{devWarnOnce}from"../../../internal/dev-mode-attribute-warning.js";const PPTX_RENDERER_WARNING_KEY="lyra-pptx-viewer-renderer-unavailable",PPTX_RENDERER_WARNING="<lr-pptx-viewer> could not load its optional @aiden0z/pptx-renderer peer.",MAX_SAFE_PPTX_ZIP_LIMITS={maxEntries:4e3,maxEntryUncompressedBytes:32*1024*1024,maxTotalUncompressedBytes:256*1024*1024,maxMediaBytes:192*1024*1024,maxConcurrency:8};let modulePromise;function hasPptxOpenCapability(value){if(typeof value!="object"&&typeof value!="function"||value===null)return!1;const viewer=value.PptxViewer;if(typeof viewer!="object"&&typeof viewer!="function"||viewer===null||typeof viewer.open!="function")return!1;const limits=value.RECOMMENDED_ZIP_LIMITS;return typeof limits!="object"||limits===null?!1:Object.keys(MAX_SAFE_PPTX_ZIP_LIMITS).every(key=>{const candidate=limits[key];return Number.isSafeInteger(candidate)&&candidate>0&&candidate<=MAX_SAFE_PPTX_ZIP_LIMITS[key]})}function adaptPptxViewer(value){if(typeof value!="object"&&typeof value!="function"||value===null)return null;const candidate=value;if(!Number.isSafeInteger(candidate.slideCount)||candidate.slideCount<0||!Number.isSafeInteger(candidate.currentSlideIndex)||typeof candidate.goToSlide!="function"||typeof candidate.searchText!="function"||typeof candidate.highlightSearchResult!="function"||typeof candidate.renderThumbnailToContainer!="function"||typeof candidate.clearSearchHighlights!="function"||typeof candidate.destroy!="function"||typeof candidate.addEventListener!="function"||typeof candidate.removeEventListener!="function")return null;const viewer=candidate,listeners=new Set;let destroyed=!1;const emit=event=>{for(const listener of listeners)listener(event)},onSlideChange=event=>{const index=event.detail?.index;typeof index=="number"&&Number.isSafeInteger(index)&&index>=0&&index<viewer.slideCount&&emit(Object.freeze({kind:"slide-change",index}))},onSlideError=event=>{const detail=event.detail,page=typeof detail?.index=="number"&&Number.isSafeInteger(detail.index)&&detail.index>=0&&detail.index<viewer.slideCount?detail.index+1:void 0,normalized={kind:"diagnostic",code:"pptx-slide-render-error",cause:detail?.error,fatal:detail?.fatal===!0,...page===void 0?{}:{page}};emit(Object.freeze(normalized))},onNodeError=event=>{const detail=event.detail,nodeId=typeof detail?.nodeId=="string"&&detail.nodeId.length<=1024?detail.nodeId:void 0,normalized={kind:"diagnostic",code:"pptx-node-render-error",cause:detail?.error,fatal:detail?.fatal===!0,...nodeId===void 0?{}:{nodeId}};emit(Object.freeze(normalized))};return viewer.addEventListener("slidechange",onSlideChange),viewer.addEventListener("slideerror",onSlideError),viewer.addEventListener("nodeerror",onNodeError),Object.freeze({get slideCount(){return viewer.slideCount},get currentSlideIndex(){return viewer.currentSlideIndex},goToSlide:async index=>{await viewer.goToSlide(index)},searchText:(query,options)=>viewer.searchText(query,options),highlightSearchResult:async(result,options)=>viewer.highlightSearchResult(result,options),renderThumbnailToContainer(index,container,options){if(!Number.isSafeInteger(index)||index<0||index>=viewer.slideCount)return null;const width=options?.width;if(width!==void 0&&(!Number.isFinite(width)||width<=0))return null;const raw=viewer.renderThumbnailToContainer(index,container,options);if(!raw||typeof raw.dispose!="function"||typeof raw.ready?.then!="function")return null;let disposed=!1;return Object.freeze({ready:Promise.resolve(raw.ready),dispose(){disposed||(disposed=!0,raw.dispose())}})},clearSearchHighlights:()=>viewer.clearSearchHighlights(),subscribe(listener){return destroyed?()=>{}:(listeners.add(listener),()=>listeners.delete(listener))},destroy(){destroyed||(destroyed=!0,viewer.removeEventListener("slidechange",onSlideChange),viewer.removeEventListener("slideerror",onSlideError),viewer.removeEventListener("nodeerror",onNodeError),listeners.clear(),viewer.destroy())}})}async function loadPptxRenderer(importer=()=>import("@aiden0z/pptx-renderer")){try{const module=await importer();return resolveOptionalPeerCapability(module,hasPptxOpenCapability)}catch{return devWarnOnce(PPTX_RENDERER_WARNING_KEY,PPTX_RENDERER_WARNING),null}}function getPptxRenderer(){return modulePromise||(modulePromise=loadPptxRenderer()),modulePromise}function __setPptxRendererForTesting(module){modulePromise=module===void 0?void 0:Promise.resolve(module)}export{__setPptxRendererForTesting,adaptPptxViewer,getPptxRenderer,loadPptxRenderer};
@@ -1 +1 @@
1
- import{unwrapOptionalPeerDefault}from"../../../internal/optional-peer-capabilities.js";let cached;function isSheetJsApi(candidate){const api=candidate;return!!(api&&typeof api.read=="function"&&typeof api.utils?.sheet_to_json=="function")}async function loadSheetJs(importXlsx=()=>import("xlsx")){try{const module=await importXlsx();if(isSheetJsApi(module))return module;const candidate=unwrapOptionalPeerDefault(module);return isSheetJsApi(candidate)?candidate:null}catch(error){return console.warn("<lr-spreadsheet-viewer> needs the optional peer dependency `xlsx` to parse workbooks \u2014 install it with `pnpm add https://cdn.sheetjs.com/xlsx-0.20.3/xlsx-0.20.3.tgz`:",error),null}}function loadSheetJsCached(){return cached||(cached=loadSheetJs()),cached}function clearSheetJsCache(){cached=void 0}export{clearSheetJsCache,loadSheetJs,loadSheetJsCached};
1
+ import{unwrapOptionalPeerDefault}from"../../../internal/optional-peer-capabilities.js";import{devWarnOnce}from"../../../internal/dev-mode-attribute-warning.js";const SPREADSHEET_WARNING_KEY="lyra-spreadsheet-viewer-xlsx-unavailable",SPREADSHEET_WARNING="<lr-spreadsheet-viewer> could not load its optional xlsx peer.";let cached;function isSheetJsApi(candidate){const api=candidate;return!!(api&&typeof api.read=="function"&&typeof api.utils?.sheet_to_json=="function")}async function loadSheetJs(importXlsx=()=>import("xlsx")){try{const module=await importXlsx();if(isSheetJsApi(module))return module;const candidate=unwrapOptionalPeerDefault(module);return isSheetJsApi(candidate)?candidate:null}catch{return devWarnOnce(SPREADSHEET_WARNING_KEY,SPREADSHEET_WARNING),null}}function loadSheetJsCached(){return cached||(cached=loadSheetJs()),cached}function clearSheetJsCache(){cached=void 0}export{clearSheetJsCache,loadSheetJs,loadSheetJsCached};
@@ -1 +1 @@
1
- import{isHtmlSanitizer,resolveOptionalPeerCapability}from"../../../internal/optional-peer-capabilities.js";let sanitizer;async function loadSvgSanitizerDeps(importDompurify=()=>import("dompurify")){try{const module=await importDompurify();return resolveOptionalPeerCapability(module,isHtmlSanitizer)}catch(error){return console.warn("<lr-svg-viewer> needs the optional peer dependency `dompurify` to sanitize rendered SVG markup \u2014 install it with `pnpm add dompurify`:",error),null}}function loadSvgSanitizer(){return sanitizer||(sanitizer=loadSvgSanitizerDeps()),sanitizer}function clearSvgSanitizerCache(){sanitizer=void 0}export{clearSvgSanitizerCache,loadSvgSanitizer,loadSvgSanitizerDeps};
1
+ import{isHtmlSanitizer,resolveOptionalPeerCapability}from"../../../internal/optional-peer-capabilities.js";import{devWarnOnce}from"../../../internal/dev-mode-attribute-warning.js";const SVG_SANITIZER_WARNING_KEY="lyra-svg-viewer-sanitizer-unavailable",SVG_SANITIZER_WARNING="<lr-svg-viewer> could not load its optional dompurify peer.";let sanitizer;async function loadSvgSanitizerDeps(importDompurify=()=>import("dompurify")){try{const module=await importDompurify();return resolveOptionalPeerCapability(module,isHtmlSanitizer)}catch{return devWarnOnce(SVG_SANITIZER_WARNING_KEY,SVG_SANITIZER_WARNING),null}}function loadSvgSanitizer(){return sanitizer||(sanitizer=loadSvgSanitizerDeps()),sanitizer}function clearSvgSanitizerCache(){sanitizer=void 0}export{clearSvgSanitizerCache,loadSvgSanitizer,loadSvgSanitizerDeps};
@@ -56,7 +56,8 @@ src:string;
56
56
  /** Accessible name for the rendered SVG surface. The surface is an image while passive and a
57
57
  * region when zoom controls or highlight actions make it interactive. */
58
58
  name:string;
59
- /** CSS length that caps the scrollable body. Invalid values are ignored. */
59
+ /** CSS length that caps the scrollable body. Fitting content stays centered; overflowing
60
+ * SVG content starts inside the reachable scroll range. Invalid values are ignored. */
60
61
  maxHeight:string;
61
62
  /** Wraps the rendered content in an internal `<lr-pan-zoom>`. `false` (the default)
62
63
  * preserves today's exact DOM -- an inline thumbnail (e.g. in a chat stream) must not
@@ -1 +1 @@
1
- import{css}from"lit";const styles=css`:host{--_lr-svg-viewer-max-height:none;min-inline-size:0;max-inline-size:100%;display:block}[part=base]{box-sizing:border-box;border:var(--lr-border-width-thin) solid var(--lr-color-border);border-radius:var(--lr-radius);background:var(--lr-color-surface);flex-direction:column;display:flex;overflow:hidden}[part=body]{min-block-size:var(--lr-size-10rem);max-block-size:var(--lr-svg-viewer-max-height,var(--_lr-svg-viewer-max-height));box-sizing:border-box;padding:var(--lr-space-m);justify-content:center;align-items:center;display:flex;overflow:auto}[part=svg],[part=svg] svg{max-block-size:100%;max-inline-size:100%;display:flex}[part=svg] svg{display:block}.empty-note,[part=error]{color:var(--lr-color-text-quiet);font-size:var(--lr-font-size-md-sm);text-align:center;margin:0}[part=error]{color:var(--lr-color-danger)}[part=spinner]{justify-content:center;display:flex}.zoom-content{position:relative}[part=highlight-layer]{pointer-events:none;position:absolute;inset:0}[part=region-highlight]{--_lr-svg-viewer-highlight-color:var(--lr-svg-viewer-highlight-accent-color,var(--lr-color-brand));pointer-events:none;border:var(--lr-border-width-thick) solid var(--_lr-svg-viewer-highlight-color);border-radius:var(--lr-radius-xs);position:absolute}[part=region-highlight-target]{z-index:var(--lr-layer-content);box-sizing:border-box;pointer-events:auto;cursor:pointer;min-inline-size:var(--lr-icon-button-size);min-block-size:var(--lr-icon-button-size);background:0 0;border:0;position:absolute;transform:translate(-50%,-50%)}[part=region-highlight]:where([data-tone=success]){--_lr-svg-viewer-highlight-color:var(--lr-svg-viewer-highlight-success-color,var(--lr-color-success))}[part=region-highlight]:where([data-tone=warning]){--_lr-svg-viewer-highlight-color:var(--lr-svg-viewer-highlight-warning-color,var(--lr-color-warning))}[part=region-highlight]:where([data-tone=danger]){--_lr-svg-viewer-highlight-color:var(--lr-svg-viewer-highlight-danger-color,var(--lr-color-danger))}[part=region-highlight]:where([data-tone=neutral]){--_lr-svg-viewer-highlight-color:var(--lr-svg-viewer-highlight-neutral-color,var(--lr-color-neutral))}[part=region-highlight-target]:hover+[part=region-highlight]{background:color-mix(in srgb, var(--_lr-svg-viewer-highlight-color) 20%, transparent)}[part=region-highlight-target]:active+[part=region-highlight]{background:color-mix(in oklab, color-mix(in srgb, var(--_lr-svg-viewer-highlight-color) 20%, transparent), var(--lr-color-mix-partner) var(--lr-color-mix-active))}[part=region-highlight-target]:focus-visible{outline:var(--lr-focus-ring);outline-offset:var(--lr-focus-ring-offset)}[part=region-highlight]:where([data-active]){border-color:var(--lr-svg-viewer-active-border,var(--lr-color-warning,var(--lr-color-brand)))}[part=highlight-actions]{gap:var(--lr-space-xs);inline-size:100%;display:grid}[part=region-highlight-action]{min-inline-size:var(--lr-icon-button-size);min-block-size:var(--lr-icon-button-size);border:var(--lr-border-width-thin) solid var(--lr-color-border);border-radius:var(--lr-radius-xs);color:var(--lr-color-text);background:var(--lr-color-surface);cursor:pointer}[part=region-highlight-action]:hover{background:var(--lr-color-surface-raised)}[part=region-highlight-action]:active{background:color-mix(in oklab, var(--lr-color-surface-raised), var(--lr-color-mix-partner) var(--lr-color-mix-active))}[part=region-highlight-action]:focus-visible{outline:var(--lr-focus-ring);outline-offset:var(--lr-focus-ring-offset)}`;export{styles};
1
+ import{css}from"lit";const styles=css`:host{--_lr-svg-viewer-max-height:none;min-inline-size:0;max-inline-size:100%;display:block}[part=base]{box-sizing:border-box;border:var(--lr-border-width-thin) solid var(--lr-color-border);border-radius:var(--lr-radius);background:var(--lr-color-surface);flex-direction:column;display:flex;overflow:hidden}[part=body]{min-block-size:var(--lr-size-10rem);max-block-size:var(--lr-svg-viewer-max-height,var(--_lr-svg-viewer-max-height));box-sizing:border-box;padding:var(--lr-space-m);justify-content:safe center;align-items:safe center;display:flex;overflow:auto}[part=svg],[part=svg] svg{max-block-size:100%;max-inline-size:100%;display:flex}[part=svg] svg{display:block}.empty-note,[part=error]{color:var(--lr-color-text-quiet);font-size:var(--lr-font-size-md-sm);text-align:center;margin:0}[part=error]{color:var(--lr-color-danger)}[part=spinner]{justify-content:center;display:flex}.zoom-content{position:relative}[part=highlight-layer]{pointer-events:none;position:absolute;inset:0}[part=region-highlight]{--_lr-svg-viewer-highlight-color:var(--lr-svg-viewer-highlight-accent-color,var(--lr-color-brand));pointer-events:none;border:var(--lr-border-width-thick) solid var(--_lr-svg-viewer-highlight-color);border-radius:var(--lr-radius-xs);position:absolute}[part=region-highlight-target]{z-index:var(--lr-layer-content);box-sizing:border-box;pointer-events:auto;cursor:pointer;min-inline-size:var(--lr-icon-button-size);min-block-size:var(--lr-icon-button-size);background:0 0;border:0;position:absolute;transform:translate(-50%,-50%)}[part=region-highlight]:where([data-tone=success]){--_lr-svg-viewer-highlight-color:var(--lr-svg-viewer-highlight-success-color,var(--lr-color-success))}[part=region-highlight]:where([data-tone=warning]){--_lr-svg-viewer-highlight-color:var(--lr-svg-viewer-highlight-warning-color,var(--lr-color-warning))}[part=region-highlight]:where([data-tone=danger]){--_lr-svg-viewer-highlight-color:var(--lr-svg-viewer-highlight-danger-color,var(--lr-color-danger))}[part=region-highlight]:where([data-tone=neutral]){--_lr-svg-viewer-highlight-color:var(--lr-svg-viewer-highlight-neutral-color,var(--lr-color-neutral))}[part=region-highlight-target]:hover+[part=region-highlight]{background:color-mix(in srgb, var(--_lr-svg-viewer-highlight-color) 20%, transparent)}[part=region-highlight-target]:active+[part=region-highlight]{background:color-mix(in oklab, color-mix(in srgb, var(--_lr-svg-viewer-highlight-color) 20%, transparent), var(--lr-color-mix-partner) var(--lr-color-mix-active))}[part=region-highlight-target]:focus-visible{outline:var(--lr-focus-ring);outline-offset:var(--lr-focus-ring-offset)}[part=region-highlight]:where([data-active]){border-color:var(--lr-svg-viewer-active-border,var(--lr-color-warning,var(--lr-color-brand)))}[part=highlight-actions]{gap:var(--lr-space-xs);inline-size:100%;display:grid}[part=region-highlight-action]{min-inline-size:var(--lr-icon-button-size);min-block-size:var(--lr-icon-button-size);border:var(--lr-border-width-thin) solid var(--lr-color-border);border-radius:var(--lr-radius-xs);color:var(--lr-color-text);background:var(--lr-color-surface);cursor:pointer}[part=region-highlight-action]:hover{background:var(--lr-color-surface-raised)}[part=region-highlight-action]:active{background:color-mix(in oklab, var(--lr-color-surface-raised), var(--lr-color-mix-partner) var(--lr-color-mix-active))}[part=region-highlight-action]:focus-visible{outline:var(--lr-focus-ring);outline-offset:var(--lr-focus-ring-offset)}`;export{styles};
@@ -1,4 +1,4 @@
1
- import{css,html}from"lit";const viewerLoadingStyles=css`.viewer-loading{box-sizing:border-box;justify-content:center;align-items:center;gap:var(--lr-space-s);min-block-size:var(--lr-size-6rem);padding:var(--lr-space-l);color:var(--lr-color-text-quiet);font-size:var(--lr-font-size-sm);text-align:center;flex-direction:column;display:flex}.viewer-loading-indicator{box-sizing:border-box;inline-size:var(--lr-size-2rem);block-size:var(--lr-size-2rem);border:var(--lr-border-width-thick) solid var(--lr-color-border);border-block-start-color:var(--lr-color-brand);animation:lr-viewer-loading-spin var(--lr-duration-icon) var(--lr-easing-linear) infinite;border-radius:50%;display:block}@keyframes lr-viewer-loading-spin{to{transform:rotate(1turn)}}@media (prefers-reduced-motion:reduce){.viewer-loading-indicator{animation:none!important}}`;function renderViewerLoading(label){return html`<div part="spinner" class="viewer-loading">
1
+ import{css,html}from"lit";const viewerLoadingStyles=css`.viewer-loading{box-sizing:border-box;justify-content:center;align-items:center;gap:var(--lr-space-s);min-block-size:var(--lr-size-6rem);padding:var(--lr-space-l);color:var(--lr-color-text-quiet);font-size:var(--lr-font-size-sm);text-align:center;flex-direction:column;display:flex}.viewer-loading-indicator{box-sizing:border-box;inline-size:var(--lr-size-2rem);block-size:var(--lr-size-2rem);border:var(--lr-border-width-thick) solid var(--lr-color-border);border-block-start-color:var(--lr-color-brand);animation:lr-viewer-loading-spin var(--lr-duration-ambient) var(--lr-easing-linear) infinite;border-radius:50%;display:block}@keyframes lr-viewer-loading-spin{to{transform:rotate(1turn)}}@media (prefers-reduced-motion:reduce){.viewer-loading-indicator{animation:none!important}}`;function renderViewerLoading(label){return html`<div part="spinner" class="viewer-loading">
2
2
  <span class="viewer-loading-indicator" aria-hidden="true"></span>
3
3
  <span class="viewer-loading-label">${label}</span>
4
4
  </div>`}export{renderViewerLoading,viewerLoadingStyles};
@@ -4,5 +4,7 @@ export declare const VIEWER_SEARCH_QUERY_LIMIT:number;export declare const VIEWE
4
4
  export declare class ViewerSearchWorkBudget{private remaining;complete:boolean;constructor(maxWork?:number);includes(value:string,needle:string,locale:string):boolean;
5
5
  /** Charges a validation-only field without copying or locale-folding its contents. */
6
6
  consume(value:string):boolean;
7
+ /** Reports whether a complete field can be admitted without mutating the remaining budget. */
8
+ canConsume(value:string):boolean;
7
9
  /** Searches logical concatenation without first joining an attacker-sized string collection. */
8
10
  includesJoined(values:Iterable<string>,needle:string,locale:string):boolean;get exhausted():boolean;}
@@ -1 +1 @@
1
- import{TEXT_QUOTE_LIMITS}from"../../internal/text-quote.js";import{resolveIntlLocale}from"../../internal/intl-cache.js";const VIEWER_SEARCH_QUERY_LIMIT=TEXT_QUOTE_LIMITS.maxQueryCodeUnits,VIEWER_SEARCH_WORK_LIMIT=TEXT_QUOTE_LIMITS.maxSearchWorkCodeUnits;function boundedViewerSearchQuery(query,locale){if(query.length>VIEWER_SEARCH_QUERY_LIMIT)return{needle:"",accepted:!1};const needle=query.trim().toLocaleLowerCase(resolveIntlLocale(locale));return needle.length<=VIEWER_SEARCH_QUERY_LIMIT?{needle,accepted:!0}:{needle:"",accepted:!1}}class ViewerSearchWorkBudget{constructor(maxWork=VIEWER_SEARCH_WORK_LIMIT){this.complete=!0,this.remaining=Number.isFinite(maxWork)?Math.min(VIEWER_SEARCH_WORK_LIMIT,Math.max(0,Math.floor(maxWork))):VIEWER_SEARCH_WORK_LIMIT}includes(value,needle,locale){return this.includesJoined([value],needle,locale)}consume(value){if(this.remaining<=0)return this.complete=!1,!1;const cost=Math.max(1,value.length);return cost>this.remaining?(this.remaining=0,this.complete=!1,!1):(this.remaining-=cost,!0)}includesJoined(values,needle,locale){const chunks=[],availableWork=this.remaining;let retainedCodeUnits=0,asciiOnly=!0,inspectedAny=!1;for(const value of values){if(inspectedAny=!0,this.remaining<=0){this.complete=!1;break}if(value.length===0){this.remaining--;continue}const retainedLength=Math.min(value.length,this.remaining),chunk=value.slice(0,retainedLength);if(chunks.push(chunk),retainedCodeUnits+=retainedLength,asciiOnly&&/[^\x00-\x7f]/u.test(chunk)&&(asciiOnly=!1),this.remaining-=retainedLength,retainedLength!==value.length){this.complete=!1;break}}inspectedAny||(this.remaining<=0?this.complete=!1:this.remaining--);const maximumFoldedCodeUnits=asciiOnly?retainedCodeUnits:retainedCodeUnits*4;if(retainedCodeUnits+maximumFoldedCodeUnits>availableWork)return this.remaining=0,this.complete=!1,!1;const folded=chunks.join("").toLocaleLowerCase(resolveIntlLocale(locale));return folded.length>this.remaining?(this.remaining=0,this.complete=!1,!1):(this.remaining-=folded.length,folded.includes(needle))}get exhausted(){return this.remaining<=0}}export{VIEWER_SEARCH_QUERY_LIMIT,VIEWER_SEARCH_WORK_LIMIT,ViewerSearchWorkBudget,boundedViewerSearchQuery};
1
+ import{TEXT_QUOTE_LIMITS}from"../../internal/text-quote.js";import{resolveIntlLocale}from"../../internal/intl-cache.js";const VIEWER_SEARCH_QUERY_LIMIT=TEXT_QUOTE_LIMITS.maxQueryCodeUnits,VIEWER_SEARCH_WORK_LIMIT=TEXT_QUOTE_LIMITS.maxSearchWorkCodeUnits;function boundedViewerSearchQuery(query,locale){if(query.length>VIEWER_SEARCH_QUERY_LIMIT)return{needle:"",accepted:!1};const needle=query.trim().toLocaleLowerCase(resolveIntlLocale(locale));return needle.length<=VIEWER_SEARCH_QUERY_LIMIT?{needle,accepted:!0}:{needle:"",accepted:!1}}class ViewerSearchWorkBudget{constructor(maxWork=VIEWER_SEARCH_WORK_LIMIT){this.complete=!0,this.remaining=Number.isFinite(maxWork)?Math.min(VIEWER_SEARCH_WORK_LIMIT,Math.max(0,Math.floor(maxWork))):VIEWER_SEARCH_WORK_LIMIT}includes(value,needle,locale){return this.includesJoined([value],needle,locale)}consume(value){if(this.remaining<=0)return this.complete=!1,!1;const cost=Math.max(1,value.length);return cost>this.remaining?(this.remaining=0,this.complete=!1,!1):(this.remaining-=cost,!0)}canConsume(value){return this.remaining>0&&Math.max(1,value.length)<=this.remaining}includesJoined(values,needle,locale){const chunks=[],availableWork=this.remaining;let retainedCodeUnits=0,asciiOnly=!0,inspectedAny=!1;for(const value of values){if(inspectedAny=!0,this.remaining<=0){this.complete=!1;break}if(value.length===0){this.remaining--;continue}const retainedLength=Math.min(value.length,this.remaining),chunk=value.slice(0,retainedLength);if(chunks.push(chunk),retainedCodeUnits+=retainedLength,asciiOnly&&/[^\x00-\x7f]/u.test(chunk)&&(asciiOnly=!1),this.remaining-=retainedLength,retainedLength!==value.length){this.complete=!1;break}}inspectedAny||(this.remaining<=0?this.complete=!1:this.remaining--);const maximumFoldedCodeUnits=asciiOnly?retainedCodeUnits:retainedCodeUnits*4;if(retainedCodeUnits+maximumFoldedCodeUnits>availableWork)return this.remaining=0,this.complete=!1,!1;const folded=chunks.join("").toLocaleLowerCase(resolveIntlLocale(locale));return folded.length>this.remaining?(this.remaining=0,this.complete=!1,!1):(this.remaining-=folded.length,folded.includes(needle))}get exhausted(){return this.remaining<=0}}export{VIEWER_SEARCH_QUERY_LIMIT,VIEWER_SEARCH_WORK_LIMIT,ViewerSearchWorkBudget,boundedViewerSearchQuery};
@@ -162,7 +162,8 @@ private highlightActionLabel;private expandAncestors;
162
162
  * units, scans at most 4,000,000 code units, resolves at most 10,000 retained matches, and fires
163
163
  * `lr-search-change`; `detail.matchCountExact=false` identifies a ceiling-truncated lower
164
164
  * bound. Replacing the source invalidates document-relative matches and emits the canonical
165
- * empty `lr-search-change` reset. */
165
+ * empty `lr-search-change` reset. Imperative navigation reopens the active match and its
166
+ * ancestors, including manually collapsed nodes; later manual collapse still takes precedence. */
166
167
  search(query:string):Promise<number>;
167
168
  /** Advances to the next match, wrapping to the first after the last. Resolves `true` once the
168
169
  * active match moved, `false` when there are no matches -- the shape the shared
@@ -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){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);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(){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)}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"
@@ -1,4 +1,4 @@
1
- export*from"./xml-viewer.class.js";import{html}from"lit";import{LyraXmlViewer}from"./xml-viewer.class.js";import{defineElement}from"../../../internal/prefix.js";import{registerDocumentRenderer}from"../document-viewer/registry.js";defineElement("xml-viewer",LyraXmlViewer);const XML_EXTENSIONS=[".xml",".xsd",".xsl",".xslt",".rss",".atom"],xmlRendererDef={matches:file=>file.mimeType.toLowerCase().endsWith("+xml")||XML_EXTENSIONS.some(ext=>file.name.toLowerCase().endsWith(ext)),capabilities:{anchors:["node-path"],search:!0},render:file=>html`<lr-xml-viewer
1
+ export*from"./xml-viewer.class.js";import{html}from"lit";import{LyraXmlViewer}from"./xml-viewer.class.js";import{defineElement}from"../../../internal/prefix.js";import{registerDocumentRenderer}from"../document-viewer/registry.js";defineElement("xml-viewer",LyraXmlViewer);const XML_EXTENSIONS=[".xml",".xsd",".xsl",".xslt",".rss",".atom"],xmlRendererDef={matches:file=>file.mimeType.split(";",1)[0].trim().toLowerCase().endsWith("+xml")||XML_EXTENSIONS.some(ext=>file.name.toLowerCase().endsWith(ext)),capabilities:{anchors:["node-path"],search:!0},render:file=>html`<lr-xml-viewer
2
2
  src=${file.src}
3
3
  name=${file.name}
4
4
  .anchor=${file.anchor??null}