@aceshooting/lyra-ui 9.1.1 → 11.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (585) hide show
  1. package/CHANGELOG.md +785 -0
  2. package/custom-elements.json +1 -1
  3. package/design-tokens.json +13 -0
  4. package/dist/cli/migrate-wa.mjs +216 -1
  5. package/dist/cli/migration-contract.json +1 -1
  6. package/dist/components/agent-tools/activity-feed/activity-feed.class.js +1 -1
  7. package/dist/components/agent-tools/activity-feed/activity-feed.styles.js +0 -16
  8. package/dist/components/agent-tools/agent-eval-dashboard/agent-eval-dashboard.class.js +1 -1
  9. package/dist/components/agent-tools/agent-eval-dashboard/agent-eval-dashboard.styles.js +7 -5
  10. package/dist/components/agent-tools/agent-run/agent-run.class.js +2 -2
  11. package/dist/components/agent-tools/agent-run/agent-run.styles.js +0 -13
  12. package/dist/components/agent-tools/agent-trace/agent-trace.styles.js +7 -4
  13. package/dist/components/agent-tools/approval-queue/approval-queue.styles.js +7 -5
  14. package/dist/components/agent-tools/artifact-panel/artifact-panel.styles.js +0 -3
  15. package/dist/components/agent-tools/browser-frame/browser-frame.styles.js +3 -5
  16. package/dist/components/agent-tools/commit-card/commit-card.styles.js +0 -10
  17. package/dist/components/agent-tools/compare-panel/compare-panel.styles.js +11 -6
  18. package/dist/components/agent-tools/confirm-bar/confirm-bar.styles.js +0 -46
  19. package/dist/components/agent-tools/eval-dataset/eval-dataset.styles.js +0 -7
  20. package/dist/components/agent-tools/evaluation-run/evaluation-run.class.js +2 -2
  21. package/dist/components/agent-tools/prompt-studio/prompt-studio.styles.js +0 -15
  22. package/dist/components/agent-tools/result-card/result-card.styles.js +0 -7
  23. package/dist/components/agent-tools/result-card/result-field.styles.js +0 -5
  24. package/dist/components/agent-tools/schema-viewer/schema-viewer.styles.js +0 -3
  25. package/dist/components/agent-tools/span-waterfall/span-waterfall.styles.js +0 -15
  26. package/dist/components/agent-tools/stack-trace/stack-trace.styles.js +0 -20
  27. package/dist/components/agent-tools/subagent-panel/subagent-panel.class.js +2 -2
  28. package/dist/components/agent-tools/subagent-panel/subagent-panel.styles.js +0 -3
  29. package/dist/components/agent-tools/task-list/task-list.styles.js +0 -15
  30. package/dist/components/agent-tools/terminal/terminal.class.d.ts +11 -6
  31. package/dist/components/agent-tools/terminal/terminal.class.js +4 -4
  32. package/dist/components/agent-tools/terminal/terminal.styles.js +0 -46
  33. package/dist/components/agent-tools/test-results/test-results.class.js +2 -2
  34. package/dist/components/agent-tools/test-results/test-results.styles.js +0 -5
  35. package/dist/components/agent-tools/thinking-panel/thinking-panel.styles.js +0 -41
  36. package/dist/components/agent-tools/tool-approval-dialog/tool-approval-dialog.styles.js +0 -41
  37. package/dist/components/agent-tools/tool-call-chip/tool-call-chip.styles.js +0 -30
  38. package/dist/components/agent-tools/tool-param-form/tool-param-form.class.js +6 -6
  39. package/dist/components/agent-tools/tool-param-form/tool-param-form.styles.js +0 -5
  40. package/dist/components/agent-tools/tool-result-dialog/tool-result-dialog.styles.js +0 -20
  41. package/dist/components/agent-tools/tool-result-view/tool-result-view.styles.js +0 -4
  42. package/dist/components/agent-tools/tool-select-dialog/tool-select-dialog.styles.js +0 -21
  43. package/dist/components/agent-tools/trace-tree/trace-tree.styles.js +7 -31
  44. package/dist/components/charts/chart/box-plot.class.d.ts +27 -0
  45. package/dist/components/charts/chart/box-plot.class.js +14 -4
  46. package/dist/components/charts/chart/box-plot.styles.js +28 -20
  47. package/dist/components/charts/chart/chart-colors.d.ts +1 -1
  48. package/dist/components/charts/chart/chart-colors.js +1 -1
  49. package/dist/components/charts/chart/chart-core-loader.d.ts +1 -0
  50. package/dist/components/charts/chart/chart-core-loader.js +1 -1
  51. package/dist/components/charts/chart/chart-feature-loader.d.ts +35 -0
  52. package/dist/components/charts/chart/chart-feature-loader.js +1 -1
  53. package/dist/components/charts/chart/chart.class.d.ts +120 -0
  54. package/dist/components/charts/chart/chart.class.js +16 -6
  55. package/dist/components/charts/chart/chart.styles.js +28 -27
  56. package/dist/components/charts/chart/lite-chart.class.d.ts +20 -1
  57. package/dist/components/charts/chart/lite-chart.class.js +4 -4
  58. package/dist/components/charts/chart/lite-chart.styles.js +0 -27
  59. package/dist/components/conversation/agent-workspace/agent-workspace.class.d.ts +20 -0
  60. package/dist/components/conversation/agent-workspace/agent-workspace.class.js +3 -1
  61. package/dist/components/conversation/agent-workspace/agent-workspace.styles.js +3 -0
  62. package/dist/components/conversation/audio-visualizer/audio-visualizer.styles.js +0 -7
  63. package/dist/components/conversation/branch-picker/branch-picker.styles.js +0 -3
  64. package/dist/components/conversation/chat-composer/chat-composer.styles.js +0 -51
  65. package/dist/components/conversation/chat-message/chat-message.styles.js +7 -35
  66. package/dist/components/conversation/chat-viewport/chat-viewport.class.js +1 -1
  67. package/dist/components/conversation/chat-viewport/chat-viewport.styles.js +0 -33
  68. package/dist/components/conversation/checkpoint/checkpoint.class.js +1 -1
  69. package/dist/components/conversation/checkpoint/checkpoint.styles.js +0 -3
  70. package/dist/components/conversation/code-block/code-block-shared.d.ts +5 -2
  71. package/dist/components/conversation/code-block/code-block.class.js +1 -1
  72. package/dist/components/conversation/code-block/code-block.styles.js +4 -95
  73. package/dist/components/conversation/code-block/code-loader.d.ts +11 -0
  74. package/dist/components/conversation/code-block/code-loader.js +1 -1
  75. package/dist/components/conversation/code-block/shiki-types.d.ts +12 -0
  76. package/dist/components/conversation/code-block/shiki-types.js +1 -1
  77. package/dist/components/conversation/conversation-item/conversation-item.styles.js +8 -54
  78. package/dist/components/conversation/generation-metrics/generation-metrics.class.js +2 -2
  79. package/dist/components/conversation/generation-metrics/generation-metrics.styles.js +0 -17
  80. package/dist/components/conversation/markdown/markdown-base.class.js +1 -1
  81. package/dist/components/conversation/markdown/markdown.styles.js +0 -41
  82. package/dist/components/conversation/message-actions/message-actions.styles.js +0 -3
  83. package/dist/components/conversation/message-feedback/message-feedback.styles.js +0 -35
  84. package/dist/components/conversation/message-parts/message-parts.class.d.ts +1 -1
  85. package/dist/components/conversation/message-parts/message-parts.styles.js +0 -5
  86. package/dist/components/conversation/model-select/model-select.class.js +3 -3
  87. package/dist/components/conversation/model-select/model-select.styles.js +12 -47
  88. package/dist/components/conversation/model-settings-panel/model-settings-panel.styles.js +0 -6
  89. package/dist/components/conversation/prompt-input/prompt-input.class.d.ts +3 -0
  90. package/dist/components/conversation/prompt-input/prompt-input.styles.js +0 -10
  91. package/dist/components/conversation/push-to-talk/push-to-talk.styles.js +0 -8
  92. package/dist/components/conversation/selection-toolbar/selection-toolbar.styles.js +1 -11
  93. package/dist/components/conversation/stream-status/stream-status.styles.js +0 -16
  94. package/dist/components/conversation/streaming-text/streaming-text.styles.js +0 -15
  95. package/dist/components/conversation/suggestion-chips/suggestion-chips.styles.js +0 -5
  96. package/dist/components/conversation/thread-list/thread-list.styles.js +0 -23
  97. package/dist/components/conversation/transcript-feed/transcript-feed.class.d.ts +16 -4
  98. package/dist/components/conversation/transcript-feed/transcript-feed.class.js +1 -1
  99. package/dist/components/conversation/transcript-feed/transcript-feed.styles.js +0 -1
  100. package/dist/components/conversation/typing-indicator/typing-indicator.styles.js +0 -23
  101. package/dist/components/conversation/usage-badge/usage-badge.styles.js +0 -3
  102. package/dist/components/conversation/voice-picker/voice-picker.class.js +3 -3
  103. package/dist/components/conversation/voice-picker/voice-picker.styles.js +9 -29
  104. package/dist/components/conversation/widget-renderer/resolve.d.ts +2 -0
  105. package/dist/components/conversation/widget-renderer/resolve.js +1 -1
  106. package/dist/components/data/calendar/calendar.class.d.ts +15 -2
  107. package/dist/components/data/calendar/calendar.class.js +2 -2
  108. package/dist/components/data/calendar/calendar.styles.js +2 -28
  109. package/dist/components/data/condition-builder/condition-builder.class.d.ts +10 -6
  110. package/dist/components/data/condition-builder/condition-builder.class.js +2 -2
  111. package/dist/components/data/condition-builder/condition-builder.styles.js +0 -6
  112. package/dist/components/data/context-meter/context-meter.styles.js +0 -24
  113. package/dist/components/data/data-grid/data-grid.class.js +3 -3
  114. package/dist/components/data/data-grid/data-grid.styles.js +0 -22
  115. package/dist/components/data/document-library/document-library.class.js +2 -2
  116. package/dist/components/data/document-library/document-library.styles.js +0 -4
  117. package/dist/components/data/env-list/env-list.class.js +1 -1
  118. package/dist/components/data/env-list/env-list.styles.js +7 -4
  119. package/dist/components/data/file-tree/file-tree.class.d.ts +12 -0
  120. package/dist/components/data/flow-canvas/flow-canvas.styles.js +12 -19
  121. package/dist/components/data/flow-controls/flow-controls.class.js +2 -2
  122. package/dist/components/data/flow-controls/flow-controls.styles.js +3 -36
  123. package/dist/components/data/flow-minimap/flow-minimap.class.js +1 -1
  124. package/dist/components/data/flow-minimap/flow-minimap.styles.js +0 -9
  125. package/dist/components/data/flow-node/flow-node.styles.js +0 -23
  126. package/dist/components/data/flow-run-status/flow-run-status.class.js +1 -1
  127. package/dist/components/data/flow-run-status/flow-run-status.styles.js +0 -7
  128. package/dist/components/data/graph-query-builder/graph-query-builder.class.d.ts +0 -7
  129. package/dist/components/data/graph-query-builder/graph-query-builder.class.js +1 -1
  130. package/dist/components/data/graph-query-builder/graph-query-builder.styles.js +0 -10
  131. package/dist/components/data/heatmap/heatmap-scale.d.ts +20 -0
  132. package/dist/components/data/heatmap/heatmap-scale.js +1 -1
  133. package/dist/components/data/heatmap/heatmap.class.d.ts +117 -1
  134. package/dist/components/data/heatmap/heatmap.class.js +2 -2
  135. package/dist/components/data/heatmap/heatmap.styles.js +0 -54
  136. package/dist/components/data/pagination/pagination.styles.js +23 -46
  137. package/dist/components/data/sequence-strip/sequence-strip.class.d.ts +34 -1
  138. package/dist/components/data/sequence-strip/sequence-strip.class.js +5 -2
  139. package/dist/components/data/sequence-strip/sequence-strip.styles.js +14 -20
  140. package/dist/components/data/sparkline/sparkline.class.js +1 -1
  141. package/dist/components/data/stat/stat.styles.js +0 -67
  142. package/dist/components/data/table/table.class.d.ts +42 -3
  143. package/dist/components/data/table/table.class.js +4 -4
  144. package/dist/components/data/table/table.styles.js +20 -91
  145. package/dist/components/data/timeline/timeline-item.styles.js +0 -30
  146. package/dist/components/data/timeline/timeline.class.d.ts +89 -1
  147. package/dist/components/data/timeline/timeline.class.js +2 -2
  148. package/dist/components/data/timeline/timeline.styles.js +111 -31
  149. package/dist/components/data/tree/tree-item.styles.js +1 -28
  150. package/dist/components/data/tree/tree.class.js +2 -2
  151. package/dist/components/data/tree/tree.styles.js +0 -6
  152. package/dist/components/data/word-cloud/word-cloud.styles.js +0 -5
  153. package/dist/components/forms/button/button.class.js +1 -1
  154. package/dist/components/forms/button/button.styles.js +0 -105
  155. package/dist/components/forms/checkbox/checkbox.class.d.ts +3 -0
  156. package/dist/components/forms/checkbox/checkbox.class.js +1 -1
  157. package/dist/components/forms/checkbox/checkbox.styles.js +0 -39
  158. package/dist/components/forms/checkbox-group/checkbox-group.class.d.ts +21 -2
  159. package/dist/components/forms/checkbox-group/checkbox-group.class.js +1 -1
  160. package/dist/components/forms/checkbox-group/checkbox-group.styles.js +0 -18
  161. package/dist/components/forms/code-editor/code-editor.styles.js +0 -30
  162. package/dist/components/forms/color-picker/color-picker.class.js +2 -2
  163. package/dist/components/forms/color-picker/color-picker.styles.js +0 -69
  164. package/dist/components/forms/combobox/combobox.class.d.ts +71 -3
  165. package/dist/components/forms/combobox/combobox.class.js +5 -3
  166. package/dist/components/forms/combobox/combobox.styles.js +31 -111
  167. package/dist/components/forms/combobox/option.styles.js +7 -1
  168. package/dist/components/forms/date-picker/date-input.class.js +1 -1
  169. package/dist/components/forms/date-picker/date-input.styles.js +12 -67
  170. package/dist/components/forms/date-picker/date-picker.class.d.ts +47 -0
  171. package/dist/components/forms/date-picker/date-picker.class.js +36 -22
  172. package/dist/components/forms/date-picker/date-picker.styles.js +82 -29
  173. package/dist/components/forms/emoji-picker/emoji-data-loader.d.ts +6 -3
  174. package/dist/components/forms/emoji-picker/emoji-data-loader.js +1 -1
  175. package/dist/components/forms/emoji-picker/emoji-picker.class.d.ts +8 -1
  176. package/dist/components/forms/emoji-picker/emoji-picker.class.js +1 -1
  177. package/dist/components/forms/emoji-picker/emoji-picker.styles.js +3 -41
  178. package/dist/components/forms/icon-button/icon-button.class.js +1 -1
  179. package/dist/components/forms/icon-button/icon-button.styles.js +0 -16
  180. package/dist/components/forms/input/input.styles.js +0 -54
  181. package/dist/components/forms/input/number-input.styles.d.ts +4 -5
  182. package/dist/components/forms/input/number-input.styles.js +0 -11
  183. package/dist/components/forms/input/time-input-shared.d.ts +11 -0
  184. package/dist/components/forms/input/time-input-shared.js +1 -1
  185. package/dist/components/forms/input/time-input.class.d.ts +11 -2
  186. package/dist/components/forms/input/time-input.class.js +1 -1
  187. package/dist/components/forms/input/time-input.styles.js +0 -6
  188. package/dist/components/forms/locale-picker/locale-picker.class.js +2 -2
  189. package/dist/components/forms/locale-picker/locale-picker.styles.js +1 -26
  190. package/dist/components/forms/otp-input/otp-input.class.js +3 -3
  191. package/dist/components/forms/otp-input/otp-input.styles.js +0 -16
  192. package/dist/components/forms/phone-input/phone-input.class.d.ts +9 -1
  193. package/dist/components/forms/phone-input/phone-input.class.js +2 -2
  194. package/dist/components/forms/phone-input/phone-input.styles.js +0 -37
  195. package/dist/components/forms/radio/radio-button.styles.js +1 -30
  196. package/dist/components/forms/radio/radio-group.styles.js +0 -4
  197. package/dist/components/forms/radio/radio.styles.js +0 -44
  198. package/dist/components/forms/rubric-form/rubric-form.styles.js +0 -5
  199. package/dist/components/forms/select/select.class.js +1 -1
  200. package/dist/components/forms/select/select.styles.js +14 -114
  201. package/dist/components/forms/slider/slider.styles.js +0 -55
  202. package/dist/components/forms/swatch-picker/swatch-picker.class.d.ts +0 -11
  203. package/dist/components/forms/swatch-picker/swatch-picker.class.js +2 -2
  204. package/dist/components/forms/swatch-picker/swatch-picker.styles.js +0 -77
  205. package/dist/components/forms/switch/switch.class.d.ts +3 -0
  206. package/dist/components/forms/switch/switch.class.js +1 -1
  207. package/dist/components/forms/switch/switch.styles.js +0 -37
  208. package/dist/components/forms/textarea/textarea.styles.js +0 -28
  209. package/dist/components/forms/time-range/time-range.styles.js +12 -84
  210. package/dist/components/forms/token-input/token-input.class.d.ts +23 -9
  211. package/dist/components/forms/token-input/token-input.class.js +1 -1
  212. package/dist/components/forms/token-input/token-input.styles.js +1 -54
  213. package/dist/components/layout/app-rail/app-rail-item.class.js +2 -2
  214. package/dist/components/layout/app-rail/app-rail-item.styles.js +0 -13
  215. package/dist/components/layout/app-rail/app-rail.class.d.ts +5 -0
  216. package/dist/components/layout/app-rail/app-rail.class.js +1 -1
  217. package/dist/components/layout/app-rail/app-rail.styles.js +0 -46
  218. package/dist/components/layout/button-group/button-group.styles.js +0 -6
  219. package/dist/components/layout/card/card.class.d.ts +12 -0
  220. package/dist/components/layout/card/card.styles.js +3 -11
  221. package/dist/components/layout/carousel/carousel.styles.js +0 -1
  222. package/dist/components/layout/command-palette/command-palette.class.d.ts +8 -0
  223. package/dist/components/layout/command-palette/command-palette.class.js +3 -1
  224. package/dist/components/layout/command-palette/command-palette.styles.js +1 -13
  225. package/dist/components/layout/control-group/control-group.styles.js +0 -7
  226. package/dist/components/layout/dashboard-grid/dashboard-grid.styles.js +6 -25
  227. package/dist/components/layout/details/accordion.class.d.ts +13 -0
  228. package/dist/components/layout/details/accordion.class.js +1 -1
  229. package/dist/components/layout/details/details.class.js +1 -1
  230. package/dist/components/layout/details/details.styles.js +0 -12
  231. package/dist/components/layout/dock-panel/dock-panel.styles.js +0 -45
  232. package/dist/components/layout/drilldown-panel/drilldown-panel.class.d.ts +2 -0
  233. package/dist/components/layout/drilldown-panel/drilldown-panel.class.js +2 -2
  234. package/dist/components/layout/drilldown-panel/drilldown-panel.styles.js +0 -4
  235. package/dist/components/layout/filter-bar/filter-bar.class.js +1 -1
  236. package/dist/components/layout/filter-bar/filter-bar.styles.js +0 -9
  237. package/dist/components/layout/menu/menu-item.class.d.ts +5 -0
  238. package/dist/components/layout/menu/menu-item.class.js +1 -1
  239. package/dist/components/layout/menu/menu-item.styles.js +0 -49
  240. package/dist/components/layout/menu/menu-label.styles.js +0 -2
  241. package/dist/components/layout/menu/menu.styles.js +0 -18
  242. package/dist/components/layout/multi-split/multi-split.styles.js +0 -63
  243. package/dist/components/layout/page/page.class.d.ts +4 -0
  244. package/dist/components/layout/page/page.class.js +1 -1
  245. package/dist/components/layout/reorder-list/reorder-item.styles.js +0 -4
  246. package/dist/components/layout/responsive-panel/responsive-panel.styles.js +0 -27
  247. package/dist/components/layout/scroller/scroller.styles.js +0 -20
  248. package/dist/components/layout/segmented/segmented.class.d.ts +7 -1
  249. package/dist/components/layout/segmented/segmented.class.js +1 -1
  250. package/dist/components/layout/segmented/segmented.styles.js +69 -37
  251. package/dist/components/layout/split-panel/split-panel.styles.js +1 -7
  252. package/dist/components/layout/stepper/stepper.class.d.ts +8 -1
  253. package/dist/components/layout/stepper/stepper.class.js +1 -1
  254. package/dist/components/layout/stepper/stepper.styles.js +140 -41
  255. package/dist/components/layout/tab-group/tab-group.class.d.ts +4 -1
  256. package/dist/components/layout/tab-group/tab-group.styles.js +9 -75
  257. package/dist/components/layout/tab-group/tab.styles.js +0 -2
  258. package/dist/components/layout/virtual-list/virtual-list.class.d.ts +4 -4
  259. package/dist/components/layout/virtual-list/virtual-list.class.js +1 -1
  260. package/dist/components/layout/virtual-list/virtual-list.styles.js +0 -68
  261. package/dist/components/layout/widget/widget.class.d.ts +5 -1
  262. package/dist/components/layout/widget/widget.class.js +1 -1
  263. package/dist/components/layout/widget/widget.styles.js +97 -40
  264. package/dist/components/media/animated-image/animated-image.class.d.ts +3 -0
  265. package/dist/components/media/animated-image/animated-image.class.js +1 -1
  266. package/dist/components/media/animated-image/animated-image.styles.js +0 -28
  267. package/dist/components/media/attachment-chip/attachment-chip.class.d.ts +1 -1
  268. package/dist/components/media/attachment-chip/attachment-chip.class.js +1 -1
  269. package/dist/components/media/attachment-chip/attachment-chip.styles.js +0 -31
  270. package/dist/components/media/attachment-trigger/attachment-trigger.class.js +3 -3
  271. package/dist/components/media/attachment-trigger/attachment-trigger.styles.js +0 -40
  272. package/dist/components/media/av-player/av-player.class.d.ts +5 -6
  273. package/dist/components/media/av-player/av-player.class.js +1 -1
  274. package/dist/components/media/av-player/av-player.styles.js +0 -45
  275. package/dist/components/media/avatar/avatar.styles.js +3 -16
  276. package/dist/components/media/file-icon/file-icon.class.d.ts +1 -2
  277. package/dist/components/media/file-icon/file-icon.class.js +1 -1
  278. package/dist/components/media/file-input/file-input.class.d.ts +12 -0
  279. package/dist/components/media/file-input/file-input.styles.js +3 -24
  280. package/dist/components/media/flag/flag.class.d.ts +23 -1
  281. package/dist/components/media/flag/flag.class.js +4 -2
  282. package/dist/components/media/flag/flag.styles.js +7 -1
  283. package/dist/components/media/flag/language-map.d.ts +10 -0
  284. package/dist/components/media/flag/language-map.js +1 -1
  285. package/dist/components/media/image-comparer/image-comparer.styles.js +4 -33
  286. package/dist/components/media/image-viewer/image-viewer.class.js +0 -2
  287. package/dist/components/media/image-viewer/image-viewer.styles.js +7 -27
  288. package/dist/components/media/lightbox/lightbox.class.js +0 -2
  289. package/dist/components/media/lightbox/lightbox.styles.js +0 -21
  290. package/dist/components/media/map/map-loader.d.ts +19 -1
  291. package/dist/components/media/map/map-loader.js +1 -1
  292. package/dist/components/media/map/map.class.d.ts +178 -1
  293. package/dist/components/media/map/map.class.js +15 -3
  294. package/dist/components/media/map/map.styles.js +20 -17
  295. package/dist/components/media/media-card/media-card.class.d.ts +14 -3
  296. package/dist/components/media/media-card/media-card.class.js +1 -1
  297. package/dist/components/media/media-card/media-card.styles.js +2 -28
  298. package/dist/components/media/pan-zoom/pan-zoom.styles.js +0 -3
  299. package/dist/components/media/qr-code/qr-code.class.d.ts +3 -2
  300. package/dist/components/media/qr-code/qr-code.class.js +2 -2
  301. package/dist/components/media/qr-code/qr-code.styles.js +0 -3
  302. package/dist/components/media/sequence-playback/sequence-playback.class.d.ts +2 -0
  303. package/dist/components/media/sequence-playback/sequence-playback.class.js +2 -1
  304. package/dist/components/media/sequence-playback/sequence-playback.styles.js +0 -19
  305. package/dist/components/media/video/video.class.d.ts +23 -2
  306. package/dist/components/media/video/video.class.js +3 -3
  307. package/dist/components/media/video/video.styles.js +4 -2
  308. package/dist/components/media/zoomable-frame/zoomable-frame.class.d.ts +3 -2
  309. package/dist/components/media/zoomable-frame/zoomable-frame.class.js +2 -2
  310. package/dist/components/media/zoomable-frame/zoomable-frame.styles.js +0 -5
  311. package/dist/components/overlays/alert/alert.styles.js +4 -2
  312. package/dist/components/overlays/badge/badge.styles.js +4 -48
  313. package/dist/components/overlays/badge/tag.styles.js +0 -14
  314. package/dist/components/overlays/callout/callout.styles.js +0 -11
  315. package/dist/components/overlays/chip/chip-group.styles.js +0 -18
  316. package/dist/components/overlays/chip/chip.styles.js +6 -69
  317. package/dist/components/overlays/dialog/confirm.d.ts +1 -4
  318. package/dist/components/overlays/dialog/confirm.js +1 -1
  319. package/dist/components/overlays/dialog/dialog.class.d.ts +32 -9
  320. package/dist/components/overlays/dialog/dialog.class.js +1 -1
  321. package/dist/components/overlays/dialog/dialog.styles.js +0 -43
  322. package/dist/components/overlays/drawer/drawer.class.d.ts +2 -2
  323. package/dist/components/overlays/drawer/drawer.styles.js +0 -9
  324. package/dist/components/overlays/empty/empty.styles.js +0 -12
  325. package/dist/components/overlays/kbd/kbd.styles.js +0 -8
  326. package/dist/components/overlays/overlay/dropdown.class.d.ts +1 -6
  327. package/dist/components/overlays/overlay/dropdown.class.js +2 -2
  328. package/dist/components/overlays/overlay/overlay.styles.js +0 -28
  329. package/dist/components/overlays/overlay/popover.class.d.ts +28 -4
  330. package/dist/components/overlays/overlay/popover.class.js +2 -2
  331. package/dist/components/overlays/overlay/tooltip.class.d.ts +10 -0
  332. package/dist/components/overlays/overlay/tooltip.class.js +1 -1
  333. package/dist/components/overlays/popup/popup.class.d.ts +1 -0
  334. package/dist/components/overlays/popup/popup.class.js +1 -1
  335. package/dist/components/overlays/popup/popup.styles.js +0 -15
  336. package/dist/components/overlays/progress/progress-ring.class.d.ts +9 -1
  337. package/dist/components/overlays/progress/progress-ring.class.js +3 -3
  338. package/dist/components/overlays/progress/progress.styles.js +0 -21
  339. package/dist/components/overlays/rating/rating.styles.js +0 -25
  340. package/dist/components/overlays/skeleton/skeleton.styles.js +0 -4
  341. package/dist/components/overlays/spinner/spinner.styles.js +0 -3
  342. package/dist/components/overlays/toast/toast-item.styles.js +3 -45
  343. package/dist/components/retrieval/chunk-inspector/chunk-inspector.styles.js +0 -35
  344. package/dist/components/retrieval/citation-badge/citation-badge.class.d.ts +2 -2
  345. package/dist/components/retrieval/citation-badge/citation-badge.class.js +3 -3
  346. package/dist/components/retrieval/citation-badge/citation-badge.styles.js +0 -20
  347. package/dist/components/retrieval/claim-evidence/claim-evidence.styles.js +0 -8
  348. package/dist/components/retrieval/community-card/community-card.class.d.ts +1 -0
  349. package/dist/components/retrieval/community-card/community-card.styles.js +0 -6
  350. package/dist/components/retrieval/embedding-explorer/embedding-explorer.styles.js +8 -12
  351. package/dist/components/retrieval/entity-card/entity-card.class.d.ts +4 -3
  352. package/dist/components/retrieval/entity-card/entity-card.class.js +1 -1
  353. package/dist/components/retrieval/entity-card/entity-card.styles.js +0 -12
  354. package/dist/components/retrieval/entity-chip/entity-chip.class.d.ts +10 -4
  355. package/dist/components/retrieval/entity-chip/entity-chip.class.js +3 -3
  356. package/dist/components/retrieval/entity-chip/entity-chip.styles.js +6 -9
  357. package/dist/components/retrieval/entity-dossier/entity-dossier.class.d.ts +19 -5
  358. package/dist/components/retrieval/graph/graph.class.d.ts +5 -0
  359. package/dist/components/retrieval/graph/graph.class.js +1 -1
  360. package/dist/components/retrieval/graph/graph.styles.js +0 -30
  361. package/dist/components/retrieval/graph-legend/graph-legend.styles.js +0 -3
  362. package/dist/components/retrieval/ingestion-queue/ingestion-queue.styles.js +0 -25
  363. package/dist/components/retrieval/knowledge-base-admin/knowledge-base-admin.class.d.ts +2 -0
  364. package/dist/components/retrieval/knowledge-base-admin/knowledge-base-admin.styles.js +0 -7
  365. package/dist/components/retrieval/knowledge-graph-explorer/knowledge-graph-explorer.class.d.ts +20 -6
  366. package/dist/components/retrieval/knowledge-graph-explorer/knowledge-graph-explorer.class.js +2 -2
  367. package/dist/components/retrieval/knowledge-graph-explorer/knowledge-graph-explorer.styles.js +0 -16
  368. package/dist/components/retrieval/mind-map/mind-map.class.d.ts +5 -3
  369. package/dist/components/retrieval/mind-map/mind-map.class.js +1 -1
  370. package/dist/components/retrieval/mind-map/mind-map.styles.js +0 -2
  371. package/dist/components/retrieval/neighbor-list/neighbor-list.class.d.ts +3 -2
  372. package/dist/components/retrieval/neighbor-list/neighbor-list.class.js +1 -1
  373. package/dist/components/retrieval/neighbor-list/neighbor-list.styles.js +0 -30
  374. package/dist/components/retrieval/node-palette/node-palette.styles.js +0 -11
  375. package/dist/components/retrieval/path-strip/path-strip.styles.js +0 -10
  376. package/dist/components/retrieval/provenance-panel/provenance-panel.class.d.ts +12 -3
  377. package/dist/components/retrieval/provenance-panel/provenance-panel.styles.js +0 -2
  378. package/dist/components/retrieval/rag-eval-dashboard/rag-eval-dashboard.class.d.ts +3 -2
  379. package/dist/components/retrieval/rag-eval-dashboard/rag-eval-dashboard.class.js +2 -2
  380. package/dist/components/retrieval/retrieval-results/retrieval-results.styles.js +0 -28
  381. package/dist/components/retrieval/retrieval-search/retrieval-search.styles.js +0 -4
  382. package/dist/components/retrieval/retrieval-trace/retrieval-trace.styles.js +0 -2
  383. package/dist/components/retrieval/source-card/source-card.styles.js +0 -13
  384. package/dist/components/retrieval/source-list/source-list.styles.js +0 -7
  385. package/dist/components/retrieval/source-picker/source-picker.styles.js +0 -7
  386. package/dist/components/utility/copy-button/copy-button.styles.js +0 -10
  387. package/dist/components/utility/diff-view/diff-view.styles.js +0 -14
  388. package/dist/components/utility/export-button/export-button.styles.js +0 -22
  389. package/dist/components/utility/icon/icon.styles.js +0 -6
  390. package/dist/components/utility/json-viewer/json-viewer.styles.js +2 -48
  391. package/dist/components/utility/known-date/known-date.class.d.ts +7 -3
  392. package/dist/components/utility/known-date/known-date.styles.js +10 -51
  393. package/dist/components/utility/live-region/live-region.styles.js +0 -4
  394. package/dist/components/utility/mention-popover/mention-popover.styles.js +0 -25
  395. package/dist/components/utility/poll-status/poll-status.styles.js +0 -4
  396. package/dist/components/utility/random-content/random-content.class.d.ts +22 -0
  397. package/dist/components/utility/random-content/random-content.class.js +3 -2
  398. package/dist/components/utility/random-content/random-content.styles.js +6 -13
  399. package/dist/components/utility/tour/tour.class.d.ts +4 -2
  400. package/dist/components/utility/tour/tour.class.js +3 -3
  401. package/dist/components/utility/tour/tour.styles.js +0 -13
  402. package/dist/components/utility/visually-hidden/visually-hidden.styles.js +0 -5
  403. package/dist/components/viewers/archive-viewer/archive-viewer.class.js +1 -1
  404. package/dist/components/viewers/archive-viewer/archive-viewer.styles.d.ts +2 -2
  405. package/dist/components/viewers/archive-viewer/archive-viewer.styles.js +0 -10
  406. package/dist/components/viewers/csv-viewer/csv-viewer.class.js +1 -1
  407. package/dist/components/viewers/csv-viewer/csv-viewer.styles.js +0 -19
  408. package/dist/components/viewers/dataset-viewer/dataset-viewer.class.js +1 -1
  409. package/dist/components/viewers/dataset-viewer/dataset-viewer.styles.js +0 -15
  410. package/dist/components/viewers/document-compare/document-compare.styles.js +0 -3
  411. package/dist/components/viewers/document-preview/document-preview.styles.js +0 -25
  412. package/dist/components/viewers/document-viewer/document-viewer.class.d.ts +2 -1
  413. package/dist/components/viewers/document-viewer/document-viewer.class.js +1 -1
  414. package/dist/components/viewers/document-viewer/document-viewer.styles.js +0 -5
  415. package/dist/components/viewers/docx-viewer/docx-viewer.styles.js +0 -17
  416. package/dist/components/viewers/ebook-viewer/ebook-viewer.styles.js +0 -4
  417. package/dist/components/viewers/email-viewer/email-viewer.styles.js +0 -7
  418. package/dist/components/viewers/geojson-view/geojson-view.styles.js +0 -5
  419. package/dist/components/viewers/highlight-layer/highlight-layer.styles.js +0 -3
  420. package/dist/components/viewers/notebook-viewer/notebook-viewer.class.js +1 -1
  421. package/dist/components/viewers/notebook-viewer/notebook-viewer.styles.js +0 -38
  422. package/dist/components/viewers/page-rail/page-rail.class.js +1 -1
  423. package/dist/components/viewers/page-rail/page-rail.styles.js +0 -13
  424. package/dist/components/viewers/pdf-viewer/pdf-loader.d.ts +13 -2
  425. package/dist/components/viewers/pdf-viewer/pdf-loader.js +1 -1
  426. package/dist/components/viewers/pdf-viewer/pdf-viewer.class.d.ts +32 -2
  427. package/dist/components/viewers/pdf-viewer/pdf-viewer.class.js +4 -4
  428. package/dist/components/viewers/pdf-viewer/pdf-viewer.styles.js +1 -27
  429. package/dist/components/viewers/pptx-viewer/pptx-viewer.styles.js +0 -3
  430. package/dist/components/viewers/spreadsheet-viewer/spreadsheet-viewer.class.js +1 -1
  431. package/dist/components/viewers/spreadsheet-viewer/spreadsheet-viewer.styles.js +0 -14
  432. package/dist/components/viewers/svg-viewer/svg-viewer.styles.js +0 -7
  433. package/dist/components/viewers/xml-viewer/xml-viewer.styles.js +2 -24
  434. package/dist/custom-elements-jsx.d.ts +72 -40
  435. package/dist/events.d.ts +43 -33
  436. package/dist/internal/agent-status-variants.d.ts +18 -0
  437. package/dist/internal/agent-status-variants.js +1 -0
  438. package/dist/internal/announcer.d.ts +8 -3
  439. package/dist/internal/announcer.js +1 -1
  440. package/dist/internal/autoloader-manifest.js +1 -1
  441. package/dist/internal/canvas-color.d.ts +16 -0
  442. package/dist/internal/canvas-color.js +1 -1
  443. package/dist/internal/catalog-picker.d.ts +0 -1
  444. package/dist/internal/catalog-picker.js +1 -1
  445. package/dist/internal/default-strings.generated.d.ts +1 -0
  446. package/dist/internal/default-strings.generated.js +1 -1
  447. package/dist/internal/dev-mode-attribute-warning.d.ts +27 -4
  448. package/dist/internal/dev-mode-attribute-warning.js +1 -1
  449. package/dist/internal/localization-runtime.js +1 -1
  450. package/dist/internal/localization-types.d.ts +1 -1
  451. package/dist/internal/localization.js +1 -1
  452. package/dist/internal/lyra-element.d.ts +13 -0
  453. package/dist/internal/lyra-element.js +1 -1
  454. package/dist/internal/media-controller.js +1 -1
  455. package/dist/internal/package-metadata.d.ts +1 -1
  456. package/dist/internal/package-metadata.js +1 -1
  457. package/dist/internal/scroll-overflow.d.ts +35 -13
  458. package/dist/internal/scroll-overflow.js +1 -1
  459. package/dist/internal/sizes.styles.js +0 -2
  460. package/dist/internal/specialist-tokens.styles.js +6 -11
  461. package/dist/internal/text-highlights.d.ts +4 -1
  462. package/dist/internal/text-highlights.js +1 -1
  463. package/dist/internal/tokens/palette.styles.js +0 -15
  464. package/dist/internal/tokens.styles.js +20 -113
  465. package/dist/lyra.d.ts +9 -6
  466. package/dist/styles/reservations.css +82 -0
  467. package/dist/svelte.d.ts +72 -40
  468. package/dist/translations/ar.js +1 -1
  469. package/dist/translations/de.js +1 -1
  470. package/dist/translations/es.js +1 -1
  471. package/dist/translations/fa.js +1 -1
  472. package/dist/translations/fr.js +1 -1
  473. package/dist/translations/he.js +1 -1
  474. package/dist/translations/ja.js +1 -1
  475. package/dist/translations/pt-BR.js +1 -1
  476. package/dist/translations/ru.js +1 -1
  477. package/dist/translations/zh-CN.js +1 -1
  478. package/dist/vue.d.ts +72 -40
  479. package/llms/components/lr-accordion-item.md +12 -3
  480. package/llms/components/lr-accordion.md +11 -2
  481. package/llms/components/lr-agent-eval-dashboard.md +1 -1
  482. package/llms/components/lr-agent-trace.md +3 -1
  483. package/llms/components/lr-agent-workspace.md +20 -0
  484. package/llms/components/lr-artifact-panel.md +10 -4
  485. package/llms/components/lr-attachment-chip.md +7 -4
  486. package/llms/components/lr-attachment-trigger.md +7 -4
  487. package/llms/components/lr-av-player.md +3 -1
  488. package/llms/components/lr-avatar.md +6 -6
  489. package/llms/components/lr-bar-chart.md +8 -6
  490. package/llms/components/lr-box-plot.md +15 -4
  491. package/llms/components/lr-browser-frame.md +7 -3
  492. package/llms/components/lr-bubble-chart.md +8 -6
  493. package/llms/components/lr-calendar.md +9 -2
  494. package/llms/components/lr-card.md +24 -0
  495. package/llms/components/lr-chart.md +45 -11
  496. package/llms/components/lr-chat-viewport.md +7 -2
  497. package/llms/components/lr-checkbox-group.md +13 -5
  498. package/llms/components/lr-checkbox.md +5 -2
  499. package/llms/components/lr-checkpoint.md +6 -2
  500. package/llms/components/lr-combobox.md +47 -8
  501. package/llms/components/lr-command-palette.md +4 -1
  502. package/llms/components/lr-confirm-bar.md +7 -3
  503. package/llms/components/lr-context-meter.md +12 -11
  504. package/llms/components/lr-conversation-item.md +7 -4
  505. package/llms/components/lr-date-input.md +22 -2
  506. package/llms/components/lr-date-picker.md +23 -3
  507. package/llms/components/lr-details.md +11 -2
  508. package/llms/components/lr-dialog.md +16 -10
  509. package/llms/components/lr-dock-panel.md +7 -10
  510. package/llms/components/lr-document-preview.md +6 -1
  511. package/llms/components/lr-document-viewer.md +3 -2
  512. package/llms/components/lr-doughnut-chart.md +8 -6
  513. package/llms/components/lr-drawer.md +3 -3
  514. package/llms/components/lr-entity-card.md +3 -3
  515. package/llms/components/lr-entity-chip.md +1 -1
  516. package/llms/components/lr-entity-dossier.md +4 -1
  517. package/llms/components/lr-file-input.md +2 -2
  518. package/llms/components/lr-flag.md +30 -8
  519. package/llms/components/lr-heatmap.md +46 -0
  520. package/llms/components/lr-histogram.md +7 -4
  521. package/llms/components/lr-icon.md +1 -1
  522. package/llms/components/lr-json-schema-viewer.md +2 -1
  523. package/llms/components/lr-knowledge-graph-explorer.md +8 -3
  524. package/llms/components/lr-known-date.md +4 -2
  525. package/llms/components/lr-line-chart.md +8 -6
  526. package/llms/components/lr-lite-chart.md +16 -6
  527. package/llms/components/lr-map.md +91 -10
  528. package/llms/components/lr-markdown-core.md +3 -2
  529. package/llms/components/lr-media-card.md +28 -12
  530. package/llms/components/lr-message-parts.md +2 -1
  531. package/llms/components/lr-model-select.md +9 -10
  532. package/llms/components/lr-model-settings-panel.md +9 -9
  533. package/llms/components/lr-neighbor-list.md +1 -1
  534. package/llms/components/lr-notebook-viewer.md +6 -3
  535. package/llms/components/lr-option.md +46 -7
  536. package/llms/components/lr-pdf-viewer.md +62 -2
  537. package/llms/components/lr-pie-chart.md +8 -6
  538. package/llms/components/lr-polar-area-chart.md +8 -6
  539. package/llms/components/lr-popover.md +25 -1
  540. package/llms/components/lr-progress-ring.md +8 -1
  541. package/llms/components/lr-prompt-studio.md +1 -1
  542. package/llms/components/lr-provenance-panel.md +4 -2
  543. package/llms/components/lr-qr-code.md +1 -1
  544. package/llms/components/lr-radar-chart.md +8 -6
  545. package/llms/components/lr-rag-eval-dashboard.md +2 -2
  546. package/llms/components/lr-random-content.md +13 -0
  547. package/llms/components/lr-reorder-item.md +6 -1
  548. package/llms/components/lr-reorder-list.md +6 -1
  549. package/llms/components/lr-responsive-panel.md +11 -7
  550. package/llms/components/lr-scatter-chart.md +8 -6
  551. package/llms/components/lr-sequence-strip.md +16 -2
  552. package/llms/components/lr-slider.md +12 -5
  553. package/llms/components/lr-sparkline.md +1 -1
  554. package/llms/components/lr-suggestion-chips.md +7 -2
  555. package/llms/components/lr-swatch-picker.md +5 -5
  556. package/llms/components/lr-switch.md +5 -2
  557. package/llms/components/lr-table.md +30 -4
  558. package/llms/components/lr-terminal.md +3 -1
  559. package/llms/components/lr-thread-list.md +8 -8
  560. package/llms/components/lr-time-input.md +6 -1
  561. package/llms/components/lr-timeline-item.md +24 -0
  562. package/llms/components/lr-timeline.md +25 -1
  563. package/llms/components/lr-token-input.md +7 -2
  564. package/llms/components/lr-tool-approval-dialog.md +7 -8
  565. package/llms/components/lr-tool-call-chip.md +5 -1
  566. package/llms/components/lr-tool-param-form.md +14 -12
  567. package/llms/components/lr-tool-result-dialog.md +11 -9
  568. package/llms/components/lr-tool-result-view.md +7 -6
  569. package/llms/components/lr-tool-select-dialog.md +18 -16
  570. package/llms/components/lr-trace-tree.md +3 -1
  571. package/llms/components/lr-usage-badge.md +4 -1
  572. package/llms/components/lr-video-playlist.md +1 -1
  573. package/llms/components/lr-virtual-list.md +22 -14
  574. package/llms/components/lr-voice-picker.md +8 -5
  575. package/llms/components/lr-widget-renderer.md +3 -3
  576. package/llms/components/lr-widget.md +1 -1
  577. package/llms/components/lr-word-cloud.md +6 -2
  578. package/llms/peers.md +12 -2
  579. package/llms/shared.md +70 -2
  580. package/llms/tokens.md +15 -1
  581. package/llms-full.txt +1335 -306
  582. package/package.json +17 -5
  583. package/vscode-css-data.json +93 -2
  584. package/vscode-html-data.json +513 -59
  585. package/web-types.json +457 -72
@@ -1,16 +1,6 @@
1
1
  import{css}from"lit";const styles=css`
2
2
  :host {
3
- /* Backdrop scrim color -- component-specific so a host can retheme it
4
- without a raw literal leaking into the public API (no shared
5
- --lr-*-overlay token exists in the design system to resolve through,
6
- same rationale as lr-dialog's --lr-dialog-overlay-color and
7
- lr-tool-select-dialog's --lr-tool-select-dialog-overlay-color). */
8
3
  --_lr-tool-approval-dialog-overlay-color: var(--lr-color-overlay);
9
- /* Contained here (rather than a bare font-family literal on the
10
- textarea) so a host page can retheme it -- same rationale as
11
- lr-json-viewer's --lr-json-viewer-font; raw args are code, not
12
- prose, so the editor gets the same monospace treatment as that
13
- viewer's own tree rendering. */
14
4
  --_lr-tool-approval-dialog-mono-font: var(--lr-font-mono);
15
5
  display: none;
16
6
  position: fixed;
@@ -43,13 +33,9 @@ import{css}from"lit";const styles=css`
43
33
  flex-direction: column;
44
34
  inline-size: min(var(--lr-size-32rem), 100%);
45
35
  max-block-size: min(var(--lr-size-36rem), 100%);
46
- /* Modal-panel surface, not the page surface -- in dark mode the two resolve to the same
47
- near-black and the dialog reads as a scrim with floating text instead of a panel. */
48
36
  background: var(--lr-color-surface-overlay);
49
37
  border: var(--lr-border-width-thin) solid var(--lr-color-border);
50
38
  border-radius: var(--lr-radius);
51
- /* Modal layer, top step: a centered, scrimmed dialog floating free on all four edges --
52
- the same role as lr-dialog, so the same elevation. */
53
39
  box-shadow: var(--lr-shadow-xl);
54
40
  overflow: hidden;
55
41
  }
@@ -81,11 +67,6 @@ import{css}from"lit";const styles=css`
81
67
  overflow: auto;
82
68
  }
83
69
  [part="args-view"] {
84
- /* lr-json-viewer grows with its content by default (its own
85
- max-height is 'none'); this component's [part='body'] is what caps
86
- and scrolls it instead, so it stays consistent with the plain
87
- [part='args-editor'] textarea below, which has no scroll cap of its
88
- own either. */
89
70
  flex: 1 1 auto;
90
71
  min-block-size: 0;
91
72
  }
@@ -110,16 +91,6 @@ import{css}from"lit";const styles=css`
110
91
  outline: var(--lr-focus-ring-width) solid var(--lr-focus-ring-color);
111
92
  outline-offset: var(--lr-focus-ring-offset);
112
93
  }
113
- /* Gives mouse users the same 'this is interactive' cue the :focus-visible ring above already
114
- gives keyboard users -- mirrors lr-textarea's [part='textarea']:hover pattern, gated via
115
- :host(:not([pending])) rather than :not(:disabled) since this raw <textarea> is not a
116
- form-associated control and carries no disabled state of its own; a decision in flight
117
- (pending reflected) freezes it to readonly instead, so hover shouldn't relight it. */
118
- /* no-pressed-state: pressing inside a text surface places a caret, it does not actuate anything.
119
- The mousedown that would match :active is the same gesture that focuses the field, so a pressed
120
- treatment would render for one frame between the hover border and the focus ring and read as a
121
- flicker; focus is this control's real "you are acting on me" state (mirrors lr-textarea's
122
- identical reasoning for its own [part='textarea']). */
123
94
  :host(:not([pending])) [part="args-editor"]:not([aria-invalid="true"]):hover {
124
95
  border-color: var(
125
96
  --lr-tool-approval-dialog-hover-border-color,
@@ -151,17 +122,9 @@ import{css}from"lit";const styles=css`
151
122
  border-block-start: var(--lr-border-width-thin) solid var(--lr-color-border);
152
123
  }
153
124
  [part="footer"] ::slotted(*) {
154
- /* Any consumer-supplied footer content sits ahead of the built-in
155
- buttons and soaks up the row's remaining space, so it reads as
156
- start-aligned while Deny/Edit/Approve stay pinned to the end (the
157
- row itself is justify-content: flex-end for the empty-slot case). */
158
125
  margin-inline-end: auto;
159
126
  }
160
127
 
161
- /* deny-button/approve-button are <lr-button> hosts (see tool-approval-dialog.class.ts's
162
- render()); their own padding/border/background/color/hover/focus-visible/disabled chrome now
163
- lives entirely inside lr-button's own styles.ts. edit-button alone stays a raw <button> and
164
- keeps its own rules below. */
165
128
  [part="edit-button"] {
166
129
  font: inherit;
167
130
  font-size: var(--lr-font-size-md-sm);
@@ -175,10 +138,6 @@ import{css}from"lit";const styles=css`
175
138
  :where([part="edit-button"]):not(:disabled):hover {
176
139
  background: var(--lr-color-brand-quiet);
177
140
  }
178
- /* Pressed is the hovered tint pushed a further --lr-color-mix-active toward
179
- --lr-color-mix-partner (which follows the text colour), so it reads as a distinctly deeper step
180
- than hover in both light and dark themes rather than repeating it. The lr-button-hosted
181
- Deny/Approve siblings get the equivalent step from lr-button's own styles. */
182
141
  :where([part="edit-button"]):not(:disabled):active {
183
142
  background: color-mix(
184
143
  in oklab,
@@ -2,10 +2,6 @@ import{css}from"lit";const styles=css`
2
2
  :host {
3
3
  display: inline-flex;
4
4
  max-inline-size: 100%;
5
- /* Per-status accent -- one custom property swapped by the :host([status])
6
- rules below rather than repeating background/color per part per status.
7
- Defaults to the 'pending' tone so an unset/unknown status still reads
8
- as neutral instead of unstyled. */
9
5
  --_lr-tool-call-chip-accent: var(--lr-color-text-quiet);
10
6
  --_lr-tool-call-chip-bg: var(--lr-color-surface);
11
7
  --_lr-tool-call-chip-border: var(--lr-color-border);
@@ -27,10 +23,6 @@ import{css}from"lit";const styles=css`
27
23
  --_lr-tool-call-chip-bg: var(--lr-color-danger-quiet);
28
24
  --_lr-tool-call-chip-border: transparent;
29
25
  }
30
- /* 'denied' reads as a policy rejection, not a runtime failure -- the
31
- warning (not danger) tint keeps it visually distinct from 'error',
32
- matching lr-tool-result-dialog's identical status vocabulary/tone so
33
- the two components agree on what "denied" looks like. */
34
26
  :host([status="denied"]) {
35
27
  --_lr-tool-call-chip-accent: var(--lr-color-warning);
36
28
  --_lr-tool-call-chip-bg: var(--lr-color-warning-quiet);
@@ -62,10 +54,6 @@ import{css}from"lit";const styles=css`
62
54
  [part="base"]:hover {
63
55
  border-color: var(--lr-color-brand);
64
56
  }
65
- /* The hover moves the border only, which leaves the pressed step nothing to deepen -- so pressed
66
- tints the chip's own fill toward --lr-color-mix-partner (which follows the text colour). The
67
- fill is already a custom property, so this one declaration covers all five status tints without
68
- restating any of them, and darkens in a light theme while lightening in a dark one. */
69
57
  [part="base"]:active {
70
58
  background: color-mix(
71
59
  in oklab,
@@ -88,16 +76,10 @@ import{css}from"lit";const styles=css`
88
76
  [part="icon"] svg {
89
77
  display: block;
90
78
  }
91
- /* A three-quarter arc (not a full ring) is what actually reads as
92
- spinning once rotated -- a full circle looks identical at every
93
- rotation frame. */
94
79
  :host([status="running"]) [part="icon"] svg {
95
80
  animation: lr-tool-call-chip-spin
96
81
  var(--lr-tool-call-chip-spin, var(--_lr-tool-call-chip-spin)) infinite;
97
82
  }
98
- /* Subtler than the spin -- a slow opacity breathe, so a list of several
99
- still-queued chips doesn't compete visually with any 'running' ones
100
- next to it. */
101
83
  :host([status="pending"]) [part="icon"] svg {
102
84
  animation: lr-tool-call-chip-pulse var(--lr-transition-ambient) infinite;
103
85
  }
@@ -116,11 +98,6 @@ import{css}from"lit";const styles=css`
116
98
  overflow: hidden;
117
99
  text-overflow: ellipsis;
118
100
  white-space: nowrap;
119
- /* Full-strength text, not --lr-color-text-quiet -- this sits on top of
120
- the per-status *-quiet tint backgrounds above (e.g. success-quiet),
121
- and text-quiet's gray fails WCAG AA contrast against several of those
122
- tints even though it comfortably passes against the plain surface
123
- background used by the resting/denied states. */
124
101
  color: var(--lr-color-text);
125
102
  font-size: var(--lr-size-0-6875rem);
126
103
  font-weight: var(--lr-font-weight-semibold);
@@ -145,7 +122,6 @@ import{css}from"lit";const styles=css`
145
122
  overflow: hidden;
146
123
  text-overflow: ellipsis;
147
124
  white-space: nowrap;
148
- /* See [part='category']'s comment above -- same contrast rationale. */
149
125
  color: var(--lr-color-text);
150
126
  }
151
127
  [part="summary"]::before {
@@ -176,17 +152,11 @@ import{css}from"lit";const styles=css`
176
152
  text-align: end;
177
153
  }
178
154
  [part="duration"] {
179
- /* See [part='category']'s comment above -- same contrast rationale. */
180
155
  color: var(--lr-color-text);
181
156
  font-variant-numeric: tabular-nums;
182
157
  white-space: nowrap;
183
158
  }
184
159
 
185
- /* Positioned by internal/positioner.js's place() -- see combobox's
186
- [part='listbox'] for the identical fixed/z-index/max-size shape. Unlike
187
- that popup this one has no open/close transition: a tooltip that
188
- tracks the pointer/focus target benefits from appearing instantly, not
189
- chasing a fade. */
190
160
  [part="tooltip"] {
191
161
  position: fixed;
192
162
  z-index: var(--lr-layer-dropdown);
@@ -4,7 +4,7 @@ var __decorate=function(decorators,target,key,desc){var c=arguments.length,r=c<3
4
4
  .hint=${prop.description??""}
5
5
  .errorText=${errorMessage}
6
6
  .required=${!1}
7
- aria-required=${required?"true":nothing}
7
+ aria-required=${required?"true":"false"}
8
8
  .value=${typeof effective=="string"?effective:""}
9
9
  ?disabled=${this.effectiveDisabled}
10
10
  @input=${this.stopNestedControlEvent}
@@ -22,8 +22,8 @@ var __decorate=function(decorators,target,key,desc){var c=arguments.length,r=c<3
22
22
  type="text"
23
23
  id=${fieldId}
24
24
  aria-describedby=${describedBy||nothing}
25
- aria-required=${required?"true":nothing}
26
- aria-invalid=${errorMessage?"true":nothing}
25
+ aria-required=${required?"true":"false"}
26
+ aria-invalid=${errorMessage?"true":"false"}
27
27
  autocomplete=${prop.autocomplete||nothing}
28
28
  .spellcheck=${prop.spellcheck??!0}
29
29
  autocapitalize=${prop.autocapitalize||nothing}
@@ -42,8 +42,8 @@ var __decorate=function(decorators,target,key,desc){var c=arguments.length,r=c<3
42
42
  id=${fieldId}
43
43
  step=${prop.type==="integer"?"1":"any"}
44
44
  aria-describedby=${describedBy||nothing}
45
- aria-required=${required?"true":nothing}
46
- aria-invalid=${errorMessage?"true":nothing}
45
+ aria-required=${required?"true":"false"}
46
+ aria-invalid=${errorMessage?"true":"false"}
47
47
  .value=${numValue}
48
48
  ?disabled=${this.effectiveDisabled}
49
49
  @input=${e=>this.onNumberInput(key,e)}
@@ -55,7 +55,7 @@ var __decorate=function(decorators,target,key,desc){var c=arguments.length,r=c<3
55
55
  .hint=${prop.description??""}
56
56
  .errorText=${errorMessage}
57
57
  .required=${!1}
58
- aria-required=${required?"true":nothing}
58
+ aria-required=${required?"true":"false"}
59
59
  .value=${selected}
60
60
  ?disabled=${this.effectiveDisabled}
61
61
  @input=${this.stopNestedControlEvent}
@@ -30,11 +30,6 @@ import{css}from"lit";import{formControlRequiredMarker}from"../../../internal/for
30
30
  font-size: var(--lr-font-size-md-sm);
31
31
  font-weight: var(--lr-font-weight-semibold);
32
32
  }
33
- /* The shared required marker (internal/form-control.styles.ts). This is the
34
- one component where "required" is per FIELD rather than per host, which is
35
- why that sheet carries a second selector keyed on
36
- [part="field"][data-required] alongside the usual :host([required]) one.
37
- Boolean and enum labels are owned by their nested <lr-select> instead. */
38
33
  ${formControlRequiredMarker}
39
34
 
40
35
  [part='field'] > lr-select,
@@ -1,14 +1,6 @@
1
1
  import{css}from"lit";const styles=css`
2
2
  :host {
3
- /* Backdrop scrim color -- component-specific so a host can retheme it
4
- without a raw literal leaking into the public API (no shared
5
- --lr-*-overlay token exists in the design system to resolve through,
6
- same rationale as lr-dialog's --lr-dialog-overlay-color and
7
- lr-widget's --lr-widget-overlay-color). */
8
3
  --_lr-tool-result-dialog-overlay-color: var(--lr-color-overlay);
9
- /* Inset applied to the panel while [maximized] -- overridable the same
10
- way lr-widget's --lr-widget-fullscreen-inset is, e.g. to leave a
11
- persistent app rail visible. */
12
4
  --_lr-tool-result-dialog-maximized-inset: max(
13
5
  var(--lr-space-l),
14
6
  var(--lr-safe-area-top)
@@ -60,13 +52,9 @@ import{css}from"lit";const styles=css`
60
52
  min-inline-size: 0;
61
53
  max-block-size: 100%;
62
54
  box-sizing: border-box;
63
- /* Modal-panel surface, not the page surface -- in dark mode the two resolve to the same
64
- near-black and the dialog reads as a scrim with floating text instead of a panel. */
65
55
  background: var(--lr-color-surface-overlay);
66
56
  border: var(--lr-border-width-thin) solid var(--lr-color-border);
67
57
  border-radius: var(--lr-radius);
68
- /* Modal layer, top step: a centered, scrimmed dialog floating free on all four edges --
69
- the same role as lr-dialog, so the same elevation. */
70
58
  box-shadow: var(--lr-shadow-xl);
71
59
  overflow: hidden;
72
60
  transition: inline-size var(--lr-transition-base),
@@ -142,8 +130,6 @@ import{css}from"lit";const styles=css`
142
130
  min-inline-size: 0;
143
131
  overflow-wrap: anywhere;
144
132
  }
145
- /* Pending is the resting state before a tool call has done anything worth
146
- calling out; its foreground and background remain independently themeable. */
147
133
  :host([status="running"]) [part="status"] {
148
134
  color: var(
149
135
  --lr-tool-result-dialog-running-color,
@@ -174,9 +160,6 @@ import{css}from"lit";const styles=css`
174
160
  var(--_lr-tool-result-dialog-error-bg)
175
161
  );
176
162
  }
177
- /* 'denied' is a policy rejection, not a runtime failure -- the warning
178
- (not danger) tinted-background reads that distinction without relying on
179
- the status text alone. */
180
163
  :host([status="denied"]) [part="status"] {
181
164
  color: var(
182
165
  --lr-tool-result-dialog-denied-color,
@@ -224,9 +207,6 @@ import{css}from"lit";const styles=css`
224
207
  background: var(--lr-color-brand-quiet);
225
208
  color: var(--lr-color-brand);
226
209
  }
227
- /* Pressed is the hovered tint pushed a further --lr-color-mix-active toward
228
- --lr-color-mix-partner (which follows the text colour), so it reads as a distinctly deeper step
229
- than hover in both light and dark themes rather than repeating it. */
230
210
  [part="maximize-button"]:active,
231
211
  [part="close-button"]:active {
232
212
  background: color-mix(
@@ -1,10 +1,6 @@
1
1
  import{css}from"lit";const styles=css`
2
2
  :host {
3
3
  display: block;
4
- /* Chains through the shared monospace token (like lr-json-viewer's
5
- --lr-json-viewer-font and lr-tool-approval-dialog's mono font) so a
6
- consumer retheming --lr-theme-font-family-mono also repaints the plain-text
7
- fallback view, instead of it being stuck on the hardcoded system stack. */
8
4
  --_lr-tool-result-view-font: var(--lr-font-mono);
9
5
  }
10
6
  [part="base"] {
@@ -1,10 +1,5 @@
1
1
  import{css}from"lit";const styles=css`
2
2
  :host {
3
- /* Backdrop scrim color -- component-specific so a host can retheme it
4
- without a raw literal leaking into the public API (no shared
5
- --lr-*-overlay token exists in the design system to resolve through,
6
- same rationale as lr-dialog's --lr-dialog-overlay-color and
7
- lr-tool-result-dialog's --lr-tool-result-dialog-overlay-color). */
8
3
  --_lr-tool-select-dialog-overlay-color: var(--lr-color-overlay);
9
4
  display: none;
10
5
  position: fixed;
@@ -39,13 +34,9 @@ import{css}from"lit";const styles=css`
39
34
  min-inline-size: 0;
40
35
  max-inline-size: 100%;
41
36
  block-size: min(var(--lr-size-38rem), 100%);
42
- /* Modal-panel surface, not the page surface -- in dark mode the two resolve to the same
43
- near-black and the dialog reads as a scrim with floating text instead of a panel. */
44
37
  background: var(--lr-color-surface-overlay);
45
38
  border: var(--lr-border-width-thin) solid var(--lr-color-border);
46
39
  border-radius: var(--lr-radius);
47
- /* Modal layer, top step: a centered, scrimmed dialog floating free on all four edges --
48
- the same role as lr-dialog, so the same elevation. */
49
40
  box-shadow: var(--lr-shadow-xl);
50
41
  overflow: hidden;
51
42
  }
@@ -89,9 +80,6 @@ import{css}from"lit";const styles=css`
89
80
  outline: var(--lr-focus-ring-width) solid var(--lr-focus-ring-color);
90
81
  outline-offset: var(--lr-focus-ring-offset);
91
82
  }
92
- /* no-pressed-state: a search field is a caret target, not a push target -- pointer-down places an
93
- insertion point and hands the affordance to :focus-visible, so a pressed tint would flash for
94
- one frame and then be contradicted by the focus ring. */
95
83
  :where([part="search-input"]):hover {
96
84
  border-color: var(--lr-color-brand);
97
85
  }
@@ -113,12 +101,6 @@ import{css}from"lit";const styles=css`
113
101
  }
114
102
  [part="defaults-hint"] {
115
103
  margin: 0;
116
- /* Lines the hint up under the switch's label text, not its track --
117
- lr-switch's own [part="base"] uses a fixed 2.25rem track
118
- inline-size plus a --lr-space-s gap before its label (both defined
119
- in switch.styles.ts, not exposed as tokens), so this indent is
120
- coupled to that fixed geometry rather than derived from an unrelated
121
- component's token. */
122
104
  padding-inline-start: calc(var(--lr-size-2-25rem) + var(--lr-space-s));
123
105
  font-size: var(--lr-font-size-xs);
124
106
  color: var(--lr-color-text-quiet);
@@ -136,7 +118,6 @@ import{css}from"lit";const styles=css`
136
118
  outline: var(--lr-focus-ring-width) solid var(--lr-focus-ring-color);
137
119
  outline-offset: calc(-1 * var(--lr-focus-ring-width));
138
120
  }
139
- /* no-pressed-state: the focusable body is a scroll viewport, not an activation target. */
140
121
  :where([part="body"]):hover {
141
122
  outline: var(--lr-border-width-thin) solid var(--lr-color-border);
142
123
  outline-offset: calc(-1 * var(--lr-border-width-thin));
@@ -284,8 +265,6 @@ import{css}from"lit";const styles=css`
284
265
  color: var(--lr-color-text-quiet);
285
266
  }
286
267
  [part="tool-disabled-reason"] {
287
- /* Slotted into lr-checkbox's owned hint surface alongside tool-description, so the stable
288
- checkbox-hint bridge describes the control without lengthening its accessible name. */
289
268
  display: block;
290
269
  min-inline-size: 0;
291
270
  max-inline-size: 100%;
@@ -71,39 +71,23 @@ import{css}from"lit";const styles=css`
71
71
  [part='row'][data-active] {
72
72
  background: var(--lr-trace-tree-row-active-bg, var(--lr-color-brand-quiet));
73
73
  }
74
- /* The row itself is the click target (it selects a span; the nested [part='toggle'] only expands
75
- it), so it earns a pressed state. Mixing the hovered tint a further --lr-color-mix-active toward
76
- --lr-color-mix-partner keeps it a distinctly deeper step than hover in both themes. It must stay
77
- after the [data-active] rule: the two selectors are both (0,2,0), so source order alone decides
78
- whether pressing the already-selected row shows any feedback at all. */
74
+ [part='row']:where([data-active]):hover {
75
+ background: color-mix(
76
+ in oklab,
77
+ var(--lr-trace-tree-row-active-bg, var(--lr-color-brand-quiet)),
78
+ var(--lr-color-mix-partner) var(--lr-color-mix-hover)
79
+ );
80
+ }
79
81
  [part='row']:active {
80
82
  background: color-mix(in oklab, var(--lr-color-surface-raised), var(--lr-color-mix-partner) var(--lr-color-mix-active));
81
83
  }
82
84
 
83
- /* text-quiet's contrast ratio against brand-quiet lands at ~4.25:1 -- just under the WCAG AA
84
- 4.5:1 floor for normal-size text -- even though it comfortably passes against the plain
85
- (non-active) row background used the rest of the time. Darkening the active tint instead would
86
- make it worse, since every failing foreground here is dark text; the fix is to raise the
87
- foreground to full strength once the row is active, as lr-conversation-item does for the same
88
- bug. --lr-color-text flips with the color scheme, so this raises contrast in both.
89
- [data-status='pending'] is included because its color *is* --lr-color-text-quiet: same failure,
90
- same fix. The other statuses keep their semantic hue -- see the mix below. */
91
85
  [part='row'][data-active]
92
86
  :is([part='detail'], [part='duration'], [part='tokens-in'], [part='tokens-out'], [part='cost']),
93
87
  [part='row'][data-active] [part='status-text'][data-status='pending'] {
94
88
  color: var(--lr-trace-tree-row-active-color, var(--lr-color-text));
95
89
  }
96
90
 
97
- /* The semantic status labels keep their hue on the active row -- an error row that stops being
98
- red once selected is an information-design regression, and the hue is the fastest scan signal
99
- in a trace list -- but get pulled 25% toward the text color so they clear the same AA floor
100
- (success 4.46 -> 6.18, denied/warning 4.28 -> 5.96 against the default tint). Applied to every
101
- tone rather than only the two that fail at the shipped defaults: a per-status carve-out is
102
- theme-fragile, since a consumer retheming one --lr-color-* moves that ratio and would silently
103
- re-break. The mix is theme-symmetric by construction -- --lr-color-text flips with the scheme,
104
- so the same declaration darkens in light mode and lightens in dark mode.
105
- Scoped to [part='status-text'] rather than redefining the tokens inside the active row, which
106
- would silently re-point a consumer's own token override and drag [part='bar'] along with it. */
107
91
  [part='row'][data-active] [part='status-text'][data-status='success'] {
108
92
  color: color-mix(
109
93
  in srgb,
@@ -134,9 +118,6 @@ import{css}from"lit";const styles=css`
134
118
  }
135
119
 
136
120
  [part='toggle'] {
137
- /* Keep the chevron glyph compact while giving the interactive box the shared minimum
138
- tappable size -- same "small glyph, padded hit box" pattern as lr-code-block's/
139
- lr-json-viewer's own [part='toggle']. */
140
121
  flex: 0 0 auto;
141
122
  inline-size: var(--lr-size-1-25rem);
142
123
  block-size: var(--lr-size-1-25rem);
@@ -254,15 +235,10 @@ import{css}from"lit";const styles=css`
254
235
  background-size: 200% 100%;
255
236
  animation: lr-trace-tree-stripe var(--lr-transition-ambient) infinite;
256
237
  }
257
- /* background-position animates in physical coordinates, so the sweep needs
258
- an explicit mirrored keyframe track to travel inline-start -> inline-end
259
- in RTL as well. */
260
238
  :host(:dir(rtl)) [part='bar'][data-status='running'] {
261
239
  animation-name: lr-trace-tree-stripe-rtl;
262
240
  }
263
241
  @media (prefers-reduced-motion: reduce) {
264
- /* the RTL selector outranks the bare one, so it must be silenced here
265
- explicitly or its animation-name would win over 'animation: none' */
266
242
  [part='bar'][data-status='running'],
267
243
  :host(:dir(rtl)) [part='bar'][data-status='running'] {
268
244
  animation: none;
@@ -49,6 +49,12 @@ export interface LyraBoxPlotEventMap {
49
49
  * @csspart legend-swatch - The resolved series-color swatch in a legend item.
50
50
  * @csspart description - The accessible box-plot summary.
51
51
  * @csspart data-table - The optional generated or slotted data table.
52
+ * @csspart data-table-toggle - The disclosure button rendered by `dataTableToggle`.
53
+ * @cssprop [--lr-box-plot-data-table-toggle-hover-bg=var(--lr-color-brand-quiet)] - Hover
54
+ * background of the `dataTableToggle` disclosure button.
55
+ * @cssprop --lr-box-plot-data-table-toggle-active-bg - Pressed background of the `dataTableToggle`
56
+ * disclosure button; defaults to a mix of the hover background with the shared active mix
57
+ * partner.
52
58
  * @csspart error - Static visible error shown instead of the canvas when the optional box-plot
53
59
  * peer fails to load; its transition is announced through a shared light-DOM alert.
54
60
  * @csspart data-truncation - Explanation shown when the generated accessible alternative samples
@@ -104,6 +110,27 @@ export declare class LyraBoxPlot extends LyraElement<LyraBoxPlotEventMap> {
104
110
  description: string | null;
105
111
  /** Makes the generated data table visible; it remains screen-reader available when false. */
106
112
  showDataTable: boolean;
113
+ /**
114
+ * Render a disclosure button above the accessible data table so a sighted reader can reveal the
115
+ * numbers behind the plot on demand. `showDataTable` alone is all-or-nothing -- the table is
116
+ * either permanently screen-reader-only or permanently visible -- which left a consumer wrapping
117
+ * a duplicated table in their own `<details>`.
118
+ *
119
+ * With this set, `showDataTable` becomes the disclosure's *initial* state rather than its whole
120
+ * behavior. The table stays in the DOM in both states, so assistive technology never loses it.
121
+ * @default false
122
+ */
123
+ dataTableToggle: boolean;
124
+ /**
125
+ * Live disclosure state. Null until the reader actually toggles, so an untouched control keeps
126
+ * following `showDataTable` (including a later change to it) instead of freezing a seeded copy.
127
+ */
128
+ private dataTableExpandedOverride;
129
+ private readonly dataTableId;
130
+ /** Whether the data table is currently visible. Identical to `showDataTable` whenever
131
+ * `dataTableToggle` is off, which is what keeps the unset path byte-identical to before. */
132
+ private get dataTableVisible();
133
+ private toggleDataTable;
107
134
  /** Formats numeric axes, tooltips, generated table cells, summaries, and CSV export. */
108
135
  valueFormatter?: LyraChartValueFormatter;
109
136
  /** Unified context-object formatter shared with the other chart surfaces. */
@@ -1,6 +1,6 @@
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{LyraElement}from"../../../internal/lyra-element.js";import{nextId,srOnly}from"../../../internal/a11y.js";import{prefersReducedMotion}from"../../../internal/motion.js";import{loadChartJs}from"./chart-core-loader.js";import{styles}from"./box-plot.styles.js";import"../../overlays/skeleton/skeleton.class.js";import{getListFormat,getNumberFormat}from"../../../internal/intl-cache.js";import{trueDefaultBooleanFromAttributeConverter as trueDefaultBooleanConverter}from"../../../internal/converters.js";import{sanitizeCssLength}from"../../../internal/safe-css.js";import{resolveCanvasColor,seriesPalette}from"./chart-colors.js";import{createForcedColorPattern,forcedColorEncoding,forcedColorsActive}from"./chart-forced-colors.js";import{specialistTokens}from"../../../internal/specialist-tokens.styles.js";import{ThemeWatcher}from"../../../internal/theme-watcher.js";import{resolveOptionalPeerCapability,unwrapOptionalPeerDefault}from"../../../internal/optional-peer-capabilities.js";import{acquireAnnouncementSink}from"../../../internal/announcer.js";import{legendVisibilityDetail,normalizeHiddenDatasets}from"./chart-legend-visibility.js";import{sampleChartTableIndexes}from"./chart-table-sampling.js";import{escapeCsvField}from"../../utility/export-button/csv.js";import{chartChromeLegendPlacement,normalizeChartChromeLegendPosition}from"./chart-chrome.js";import{LYRA_DEFAULT_boxPlot,LYRA_DEFAULT_boxPlotData,LYRA_DEFAULT_boxPlotMax,LYRA_DEFAULT_boxPlotMedian,LYRA_DEFAULT_boxPlotMin,LYRA_DEFAULT_boxPlotMissingLibrary,LYRA_DEFAULT_boxPlotQ1,LYRA_DEFAULT_boxPlotQ3,LYRA_DEFAULT_boxPlotSeriesSummary,LYRA_DEFAULT_boxPlotSummaryEmpty,LYRA_DEFAULT_boxPlotSummaryWithData,LYRA_DEFAULT_chartCategory,LYRA_DEFAULT_chartDataSampled,LYRA_DEFAULT_chartPointLabel,LYRA_DEFAULT_chartSeriesLabel,LYRA_DEFAULT_chartSeriesNoData,LYRA_DEFAULT_chartSummarySeparator,LYRA_DEFAULT_chartTrendDecreasing,LYRA_DEFAULT_chartTrendFlat,LYRA_DEFAULT_chartTrendIncreasing,LYRA_DEFAULT_chartValueLabel,LYRA_DEFAULT_liteChartMarkSummary,LYRA_DEFAULT_loading}from"../../../internal/default-strings.generated.js";const FALLBACK_GRID_COLOR="#8a8a90",FALLBACK_TICK_COLOR="#6b7280",FALLBACK_LEGEND_COLOR="#1a1a1a",FALLBACK_TOOLTIP_BG="#fff",FALLBACK_TOOLTIP_TEXT="#1a1a1a";function summaryOf(point){return{min:point.min,q1:point.q1,median:point.median,q3:point.q3,max:point.max}}let boxPlotPlugin;function isConstructor(value){if(typeof value!="function")return!1;try{return Reflect.construct(Object,[],value),!0}catch{return!1}}function missingBoxPlotCapability(candidate){if(typeof candidate!="object"&&typeof candidate!="function"||candidate===null)return"module namespace";const module=candidate;if(!isConstructor(module.BoxPlotController))return"BoxPlotController";if(!isConstructor(module.BoxAndWiskers))return"BoxAndWiskers"}function isBoxPlotModule(candidate){return missingBoxPlotCapability(candidate)===void 0}function resolveBoxPlotModule(value){const module=resolveOptionalPeerCapability(value,isBoxPlotModule);if(module)return module;const candidate=unwrapOptionalPeerDefault(value),missing=missingBoxPlotCapability(candidate)??"module namespace";throw new Error(`Invalid optional peer \`@sgratzl/chartjs-chart-boxplot\`: missing or invalid \`${missing}\` constructor.`)}async function loadBoxPlotAndRegister(loadChart=loadChartJs,importBoxPlot=()=>import("@sgratzl/chartjs-chart-boxplot")){try{const[chartMod,imported]=await Promise.all([loadChart(),importBoxPlot()]);if(!chartMod)return null;const boxMod=resolveBoxPlotModule(imported);return chartMod.Chart.register(boxMod.BoxPlotController,boxMod.BoxAndWiskers),boxMod}catch(error){return console.warn("<lr-box-plot> needs the optional peer dependency `@sgratzl/chartjs-chart-boxplot` \u2014 install it with `pnpm add @sgratzl/chartjs-chart-boxplot`.",error),null}}function loadBoxPlotPlugin(){return boxPlotPlugin||(boxPlotPlugin=loadBoxPlotAndRegister()),boxPlotPlugin}class LyraBoxPlot extends LyraElement{static{this.defaultStrings={...super.defaultStrings,boxPlot:LYRA_DEFAULT_boxPlot,boxPlotData:LYRA_DEFAULT_boxPlotData,boxPlotMax:LYRA_DEFAULT_boxPlotMax,boxPlotMedian:LYRA_DEFAULT_boxPlotMedian,boxPlotMin:LYRA_DEFAULT_boxPlotMin,boxPlotMissingLibrary:LYRA_DEFAULT_boxPlotMissingLibrary,boxPlotQ1:LYRA_DEFAULT_boxPlotQ1,boxPlotQ3:LYRA_DEFAULT_boxPlotQ3,boxPlotSeriesSummary:LYRA_DEFAULT_boxPlotSeriesSummary,boxPlotSummaryEmpty:LYRA_DEFAULT_boxPlotSummaryEmpty,boxPlotSummaryWithData:LYRA_DEFAULT_boxPlotSummaryWithData,chartCategory:LYRA_DEFAULT_chartCategory,chartDataSampled:LYRA_DEFAULT_chartDataSampled,chartPointLabel:LYRA_DEFAULT_chartPointLabel,chartSeriesLabel:LYRA_DEFAULT_chartSeriesLabel,chartSeriesNoData:LYRA_DEFAULT_chartSeriesNoData,chartSummarySeparator:LYRA_DEFAULT_chartSummarySeparator,chartTrendDecreasing:LYRA_DEFAULT_chartTrendDecreasing,chartTrendFlat:LYRA_DEFAULT_chartTrendFlat,chartTrendIncreasing:LYRA_DEFAULT_chartTrendIncreasing,chartValueLabel:LYRA_DEFAULT_chartValueLabel,liteChartMarkSummary:LYRA_DEFAULT_liteChartMarkSummary,loading:LYRA_DEFAULT_loading}}static{this.ownedCollectionProperties=Object.freeze(["labels","datasets","hiddenDatasets"])}static{this.styles=[LyraElement.styles,specialistTokens,styles,srOnly]}static{this.immutableEventDetails=Object.freeze(["lr-before-legend-visibility-change","lr-legend-visibility-change"])}constructor(){super(),this.labels=[],this.datasets=[],this.legend=!1,this.legendPosition="bottom",this.height="280px",this.yLabel="",this.beginAtZero=!0,this.label=null,this.description=null,this.showDataTable=!1,this.loading=!0,this.loadFailed=!1,this.visible=!0,this.keyboardDatumIndex=0,this.keyboardDatumAnnouncement="",this.intersectionGeneration=0,this.loadGeneration=0,this.descriptionId=nextId("box-plot-description"),this.lastDataTruncationAnnouncement="",this.isMounting=!0,this.onReducedMotionChange=()=>{!this.isConnected||this.ownerWindow!==this.reducedMotionWindow||this.drawIfVisible()},new ThemeWatcher(this,()=>{this.chart&&this.refreshTheme()})}connectedCallback(){super.connectedCallback(),this.syncAnnouncementSinks(),this.visible=!0,this.armReducedMotionWatcher();const generation=++this.loadGeneration;loadBoxPlotPlugin().then(boxMod=>this.onBoxPlotPluginLoaded(boxMod,generation));const IntersectionObserverCtor=this.ownerWindow?.IntersectionObserver;if(IntersectionObserverCtor){const ownerWindow=this.ownerWindow,observerGeneration=++this.intersectionGeneration,observer=new IntersectionObserverCtor(entries=>{if(observerGeneration!==this.intersectionGeneration||this.intersectionObserver!==observer||!this.isConnected||this.ownerWindow!==ownerWindow)return;const wasVisible=this.visible;this.visible=entries[0]?.isIntersecting??!0,this.visible&&!wasVisible&&this.drawIfVisible()});this.intersectionObserver=observer,observer.observe(this)}}async onBoxPlotPluginLoaded(boxMod,generation=this.loadGeneration){if(generation!==this.loadGeneration||!this.isConnected)return;try{await this.updateComplete}catch{return}if(await new Promise(resolve=>this.updateBrowserDerivedState(resolve)),generation!==this.loadGeneration||!this.isConnected)return;if(this.loading=!1,!boxMod){this.loadFailed=!0,this.chart?.destroy(),this.chart=void 0,this.chartJsModule=void 0;return}this.loadFailed=!1;const chartMod=await loadChartJs();generation!==this.loadGeneration||!this.isConnected||(this.chartJsModule=chartMod??void 0,this.drawIfVisible())}disconnectedCallback(){super.disconnectedCallback(),this.releaseAnnouncementSinks(),this.lastDataTruncationAnnouncement="",this.isMounting=!0,this.loadGeneration+=1,this.chart?.destroy(),this.chart=void 0,this.intersectionObserver?.disconnect(),this.intersectionObserver=void 0,this.intersectionGeneration+=1,this.visible=!0,this.disarmReducedMotionWatcher()}adoptedCallback(){super.adoptedCallback(),this.releaseAnnouncementSinks(),this.syncAnnouncementSinks(),this.armReducedMotionWatcher()}armReducedMotionWatcher(){const ownerWindow=this.ownerWindow;ownerWindow?.matchMedia&&(this.reducedMotionWindow===ownerWindow&&this.reducedMotionQuery||(this.disarmReducedMotionWatcher(),this.reducedMotionWindow=ownerWindow,this.reducedMotionQuery=ownerWindow.matchMedia("(prefers-reduced-motion: reduce)"),this.reducedMotionQuery.addEventListener("change",this.onReducedMotionChange)))}disarmReducedMotionWatcher(){this.reducedMotionQuery?.removeEventListener("change",this.onReducedMotionChange),this.reducedMotionQuery=void 0,this.reducedMotionWindow=void 0}syncAnnouncementSinks(){this.isConnected&&(this.politeAnnouncementSink?.element.ownerDocument===this.ownerDocument&&this.assertiveAnnouncementSink?.element.ownerDocument===this.ownerDocument||(this.releaseAnnouncementSinks(),this.politeAnnouncementSink=acquireAnnouncementSink("polite",{document:this.ownerDocument,source:this}),this.assertiveAnnouncementSink=acquireAnnouncementSink("assertive",{document:this.ownerDocument,source:this})))}releaseAnnouncementSinks(){this.politeAnnouncementSink?.release(),this.politeAnnouncementSink=void 0,this.assertiveAnnouncementSink?.release(),this.assertiveAnnouncementSink=void 0}get ownerWindow(){return this.ownerDocument?.defaultView??void 0}effectiveHiddenDatasetIndexes(){return normalizeHiddenDatasets(this.hiddenDatasets,this.datasets.length)??[]}applyDatasetVisibility(){if(!this.chart)return!1;const datasetCount=this.chart.data.datasets?.length??0,sourceSeriesIndexes=this.dataTableSample().seriesIndexes,controlled=normalizeHiddenDatasets(this.hiddenDatasets,this.datasets.length);if(controlled===void 0){for(let index=0;index<datasetCount;index++){const metadata=this.chart.getDatasetMeta?.(index);metadata&&(metadata.hidden=null)}return datasetCount>0}const hidden=new Set(controlled);for(let index=0;index<datasetCount;index++)this.chart.setDatasetVisibility(index,!hidden.has(sourceSeriesIndexes[index]??index));return datasetCount>0}updated(changed){if(super.updated(changed),!this.isConnected)return;const wasMounting=this.isMounting;this.isMounting=!1,changed.has("keyboardDatumAnnouncement")&&changed.get("keyboardDatumAnnouncement")!==void 0&&this.keyboardDatumAnnouncement!==""&&this.politeAnnouncementSink?.announce(this.keyboardDatumAnnouncement),changed.has("loadFailed")&&changed.get("loadFailed")!==void 0&&this.loadFailed&&this.assertiveAnnouncementSink?.announce(this.localize("boxPlotMissingLibrary"));const dataTruncation=this.dataTruncationMessage();if(wasMounting&&(this.lastDataTruncationAnnouncement=dataTruncation),!this.loading&&!this.loadFailed&&!wasMounting&&dataTruncation!==this.lastDataTruncationAnnouncement&&(this.lastDataTruncationAnnouncement=dataTruncation,dataTruncation&&this.politeAnnouncementSink?.announce(dataTruncation)),this.setAttribute("aria-busy",String(this.loading)),changed.has("height")){const height=sanitizeCssLength(this.height,"height");height?this.style.setProperty("--_lr-chart-height",height):this.style.removeProperty("--_lr-chart-height")}if(this.loading)return;const contentChanged=["labels","datasets","hiddenDatasets","legend","legendPosition","height","yLabel","beginAtZero","label","description","valueFormatter","formatter","locale","strings","loading"].some(name=>changed.has(name)),direction=this.effectiveDirection,locale=this.effectiveLocale,contextChanged=this.lastDrawnDirection!==void 0&&this.lastDrawnDirection!==direction||this.lastDrawnLocale!==void 0&&this.lastDrawnLocale!==locale;this.lastDrawnDirection=direction,this.lastDrawnLocale=locale,!(!contentChanged&&!contextChanged)&&this.drawIfVisible()}themeColors(){const view=this.ownerWindow,cs=view?view.getComputedStyle(this):this.style;return{grid:resolveCanvasColor(this,cs.getPropertyValue("--lr-chart-grid-color").trim()||cs.getPropertyValue("--_lr-chart-grid-color").trim(),FALLBACK_GRID_COLOR),tick:resolveCanvasColor(this,cs.getPropertyValue("--lr-chart-tick-color").trim()||cs.getPropertyValue("--_lr-chart-tick-color").trim(),FALLBACK_TICK_COLOR),legend:resolveCanvasColor(this,cs.getPropertyValue("--lr-chart-legend-color").trim()||cs.getPropertyValue("--_lr-chart-legend-color").trim(),FALLBACK_LEGEND_COLOR),tooltipBg:resolveCanvasColor(this,cs.getPropertyValue("--lr-chart-tooltip-bg").trim()||cs.getPropertyValue("--_lr-chart-tooltip-bg").trim(),FALLBACK_TOOLTIP_BG),tooltipText:resolveCanvasColor(this,cs.getPropertyValue("--lr-chart-tooltip-text").trim()||cs.getPropertyValue("--_lr-chart-tooltip-text").trim(),FALLBACK_TOOLTIP_TEXT)}}seriesColor(index,palette=seriesPalette(this)){const fallback=palette[index%palette.length]??"transparent",series=this.datasets[index];return series?.color?resolveCanvasColor(this,series.color,fallback):fallback}forcedColorFill(index,background){return!this.ownerWindow||!forcedColorsActive(this.ownerWindow)?background:createForcedColorPattern(this.ownerDocument,index,background,this.styleColor("--lr-color-surface",FALLBACK_TOOLTIP_BG))}styleColor(name,fallback){const view=this.ownerWindow,value=(view?view.getComputedStyle(this):this.style).getPropertyValue(name).trim();return value?resolveCanvasColor(this,value,fallback):fallback}buildConfig(){const theme=this.themeColors(),palette=seriesPalette(this),sample=this.dataTableSample();return{type:"boxplot",data:{labels:sample.rowIndexes.map(index=>this.labels[index]??""),datasets:sample.seriesIndexes.map(sourceIndex=>{const s=this.datasets[sourceIndex],color=this.seriesColor(sourceIndex,palette);return{label:s.label,data:sample.rowIndexes.map(index=>{const point=s.data[index];return this.validPoint(point)?summaryOf(point):null}),backgroundColor:this.forcedColorFill(sourceIndex,color),borderColor:color}})},options:{locale:this.effectiveLocale,responsive:!0,maintainAspectRatio:!1,animation:prefersReducedMotion(this.ownerWindow)?!1:void 0,onClick:(event,_elements,chart)=>this.handlePointClick(event,chart),plugins:{legend:{display:!1,labels:{color:theme.legend}},tooltip:{backgroundColor:theme.tooltipBg,titleColor:theme.tooltipText,bodyColor:theme.tooltipText,...this.formatter||this.valueFormatter?{callbacks:{label:context=>{const raw=context.raw,point=this.validPoint(raw)?raw:void 0;if(!point)return;const value=this.formatValue(point.median,"tooltip"),label=String(context.dataset?.label??"");return label?this.localize("chartValueLabel",void 0,{label,value}):value}}}:{}}},scales:{y:{position:this.effectiveDirection==="rtl"?"right":"left",beginAtZero:this.beginAtZero,title:{display:!!this.yLabel,text:this.yLabel,color:theme.tick},ticks:{color:theme.tick,...this.formatter||this.valueFormatter?{callback:value=>this.formatValue(Number(value),"tick")}:{}},grid:{color:theme.grid}}}}}}draw(){if(!this.chartJsModule||!this.canvasEl)return;const config=this.buildConfig();if(this.chart){this.chart.data=config.data,this.chart.options=config.options??{},this.applyDatasetVisibility(),this.chart.update("none");return}this.chart=new this.chartJsModule.Chart(this.canvasEl,config),this.hiddenDatasets!==void 0&&(this.applyDatasetVisibility(),this.chart.update("none"))}drawIfVisible(){!this.isConnected||!this.visible||this.draw()}refreshTheme(){this.drawIfVisible(),this.legend&&this.requestUpdate()}formatValue(value,context){return this.formatter?.({value,surface:context})??this.valueFormatter?.(value,context)??getNumberFormat(this.effectiveLocale).format(value)}exportData(format){if(format==="png")return this.chart?.toBase64Image?.()??"";const header=["category","series","min","q1","median","q3","max"].map(escapeCsvField).join(","),rows=[];return this.datasets.forEach(series=>{series.data.forEach((point,index)=>{this.validPoint(point)&&rows.push([this.labels[index]??"",series.label,this.formatValue(point.min,"table"),this.formatValue(point.q1,"table"),this.formatValue(point.median,"table"),this.formatValue(point.q3,"table"),this.formatValue(point.max,"table")].map(escapeCsvField).join(","))})}),[header,...rows].join(`\r
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{LyraElement}from"../../../internal/lyra-element.js";import{nextId,srOnly}from"../../../internal/a11y.js";import{prefersReducedMotion}from"../../../internal/motion.js";import{loadChartJs}from"./chart-core-loader.js";import{styles}from"./box-plot.styles.js";import"../../overlays/skeleton/skeleton.class.js";import{getListFormat,getNumberFormat}from"../../../internal/intl-cache.js";import{trueDefaultBooleanFromAttributeConverter as trueDefaultBooleanConverter}from"../../../internal/converters.js";import{sanitizeCssLength}from"../../../internal/safe-css.js";import{resolveCanvasColor,seriesPalette}from"./chart-colors.js";import{createForcedColorPattern,forcedColorEncoding,forcedColorsActive}from"./chart-forced-colors.js";import{specialistTokens}from"../../../internal/specialist-tokens.styles.js";import{ThemeWatcher}from"../../../internal/theme-watcher.js";import{resolveOptionalPeerCapability,unwrapOptionalPeerDefault}from"../../../internal/optional-peer-capabilities.js";import{acquireAnnouncementSink}from"../../../internal/announcer.js";import{legendVisibilityDetail,normalizeHiddenDatasets}from"./chart-legend-visibility.js";import{sampleChartTableIndexes}from"./chart-table-sampling.js";import{escapeCsvField}from"../../utility/export-button/csv.js";import{chartChromeLegendPlacement,normalizeChartChromeLegendPosition}from"./chart-chrome.js";import{LYRA_DEFAULT_boxPlot,LYRA_DEFAULT_boxPlotData,LYRA_DEFAULT_boxPlotMax,LYRA_DEFAULT_boxPlotMedian,LYRA_DEFAULT_boxPlotMin,LYRA_DEFAULT_boxPlotMissingLibrary,LYRA_DEFAULT_boxPlotQ1,LYRA_DEFAULT_boxPlotQ3,LYRA_DEFAULT_boxPlotSeriesSummary,LYRA_DEFAULT_boxPlotSummaryEmpty,LYRA_DEFAULT_boxPlotSummaryWithData,LYRA_DEFAULT_chartCategory,LYRA_DEFAULT_chartDataSampled,LYRA_DEFAULT_chartPointLabel,LYRA_DEFAULT_chartSeriesLabel,LYRA_DEFAULT_chartSeriesNoData,LYRA_DEFAULT_chartSummarySeparator,LYRA_DEFAULT_chartTrendDecreasing,LYRA_DEFAULT_chartTrendFlat,LYRA_DEFAULT_chartTrendIncreasing,LYRA_DEFAULT_chartValueLabel,LYRA_DEFAULT_liteChartMarkSummary,LYRA_DEFAULT_loading}from"../../../internal/default-strings.generated.js";const FALLBACK_GRID_COLOR="#8a8a90",FALLBACK_TICK_COLOR="#6b7280",FALLBACK_LEGEND_COLOR="#1a1a1a",FALLBACK_TOOLTIP_BG="#fff",FALLBACK_TOOLTIP_TEXT="#1a1a1a";function summaryOf(point){return{min:point.min,q1:point.q1,median:point.median,q3:point.q3,max:point.max}}let boxPlotPlugin;function isConstructor(value){if(typeof value!="function")return!1;try{return Reflect.construct(Object,[],value),!0}catch{return!1}}function missingBoxPlotCapability(candidate){if(typeof candidate!="object"&&typeof candidate!="function"||candidate===null)return"module namespace";const module=candidate;if(!isConstructor(module.BoxPlotController))return"BoxPlotController";if(!isConstructor(module.BoxAndWiskers))return"BoxAndWiskers"}function isBoxPlotModule(candidate){return missingBoxPlotCapability(candidate)===void 0}function resolveBoxPlotModule(value){const module=resolveOptionalPeerCapability(value,isBoxPlotModule);if(module)return module;const candidate=unwrapOptionalPeerDefault(value),missing=missingBoxPlotCapability(candidate)??"module namespace";throw new Error(`Invalid optional peer \`@sgratzl/chartjs-chart-boxplot\`: missing or invalid \`${missing}\` constructor.`)}async function loadBoxPlotAndRegister(loadChart=loadChartJs,importBoxPlot=()=>import("@sgratzl/chartjs-chart-boxplot")){try{const[chartMod,imported]=await Promise.all([loadChart(),importBoxPlot()]);if(!chartMod)return null;const boxMod=resolveBoxPlotModule(imported);return chartMod.Chart.register(boxMod.BoxPlotController,boxMod.BoxAndWiskers),boxMod}catch(error){return console.warn("<lr-box-plot> needs the optional peer dependency `@sgratzl/chartjs-chart-boxplot` \u2014 install it with `pnpm add @sgratzl/chartjs-chart-boxplot`.",error),null}}function loadBoxPlotPlugin(){return boxPlotPlugin||(boxPlotPlugin=loadBoxPlotAndRegister()),boxPlotPlugin}class LyraBoxPlot extends LyraElement{static{this.defaultStrings={...super.defaultStrings,boxPlot:LYRA_DEFAULT_boxPlot,boxPlotData:LYRA_DEFAULT_boxPlotData,boxPlotMax:LYRA_DEFAULT_boxPlotMax,boxPlotMedian:LYRA_DEFAULT_boxPlotMedian,boxPlotMin:LYRA_DEFAULT_boxPlotMin,boxPlotMissingLibrary:LYRA_DEFAULT_boxPlotMissingLibrary,boxPlotQ1:LYRA_DEFAULT_boxPlotQ1,boxPlotQ3:LYRA_DEFAULT_boxPlotQ3,boxPlotSeriesSummary:LYRA_DEFAULT_boxPlotSeriesSummary,boxPlotSummaryEmpty:LYRA_DEFAULT_boxPlotSummaryEmpty,boxPlotSummaryWithData:LYRA_DEFAULT_boxPlotSummaryWithData,chartCategory:LYRA_DEFAULT_chartCategory,chartDataSampled:LYRA_DEFAULT_chartDataSampled,chartPointLabel:LYRA_DEFAULT_chartPointLabel,chartSeriesLabel:LYRA_DEFAULT_chartSeriesLabel,chartSeriesNoData:LYRA_DEFAULT_chartSeriesNoData,chartSummarySeparator:LYRA_DEFAULT_chartSummarySeparator,chartTrendDecreasing:LYRA_DEFAULT_chartTrendDecreasing,chartTrendFlat:LYRA_DEFAULT_chartTrendFlat,chartTrendIncreasing:LYRA_DEFAULT_chartTrendIncreasing,chartValueLabel:LYRA_DEFAULT_chartValueLabel,liteChartMarkSummary:LYRA_DEFAULT_liteChartMarkSummary,loading:LYRA_DEFAULT_loading}}static{this.ownedCollectionProperties=Object.freeze(["labels","datasets","hiddenDatasets"])}static{this.styles=[LyraElement.styles,specialistTokens,styles,srOnly]}static{this.immutableEventDetails=Object.freeze(["lr-before-legend-visibility-change","lr-legend-visibility-change"])}constructor(){super(),this.labels=[],this.datasets=[],this.legend=!1,this.legendPosition="bottom",this.height="280px",this.yLabel="",this.beginAtZero=!0,this.label=null,this.description=null,this.showDataTable=!1,this.dataTableToggle=!1,this.dataTableExpandedOverride=null,this.dataTableId=nextId("box-plot-data-table"),this.loading=!0,this.loadFailed=!1,this.visible=!0,this.keyboardDatumIndex=0,this.keyboardDatumAnnouncement="",this.intersectionGeneration=0,this.loadGeneration=0,this.descriptionId=nextId("box-plot-description"),this.lastDataTruncationAnnouncement="",this.isMounting=!0,this.onReducedMotionChange=()=>{!this.isConnected||this.ownerWindow!==this.reducedMotionWindow||this.drawIfVisible()},new ThemeWatcher(this,()=>{this.chart&&this.refreshTheme()})}get dataTableVisible(){return this.dataTableToggle?this.dataTableExpandedOverride??this.showDataTable:this.showDataTable}toggleDataTable(){this.dataTableExpandedOverride=!this.dataTableVisible}connectedCallback(){super.connectedCallback(),this.syncAnnouncementSinks(),this.visible=!0,this.armReducedMotionWatcher();const generation=++this.loadGeneration;loadBoxPlotPlugin().then(boxMod=>this.onBoxPlotPluginLoaded(boxMod,generation));const IntersectionObserverCtor=this.ownerWindow?.IntersectionObserver;if(IntersectionObserverCtor){const ownerWindow=this.ownerWindow,observerGeneration=++this.intersectionGeneration,observer=new IntersectionObserverCtor(entries=>{if(observerGeneration!==this.intersectionGeneration||this.intersectionObserver!==observer||!this.isConnected||this.ownerWindow!==ownerWindow)return;const wasVisible=this.visible;this.visible=entries[0]?.isIntersecting??!0,this.visible&&!wasVisible&&this.drawIfVisible()});this.intersectionObserver=observer,observer.observe(this)}}async onBoxPlotPluginLoaded(boxMod,generation=this.loadGeneration){if(generation!==this.loadGeneration||!this.isConnected)return;try{await this.updateComplete}catch{return}if(await new Promise(resolve=>this.updateBrowserDerivedState(resolve)),generation!==this.loadGeneration||!this.isConnected)return;if(this.loading=!1,!boxMod){this.loadFailed=!0,this.chart?.destroy(),this.chart=void 0,this.chartJsModule=void 0;return}this.loadFailed=!1;const chartMod=await loadChartJs();generation!==this.loadGeneration||!this.isConnected||(this.chartJsModule=chartMod??void 0,this.drawIfVisible())}disconnectedCallback(){super.disconnectedCallback(),this.releaseAnnouncementSinks(),this.lastDataTruncationAnnouncement="",this.isMounting=!0,this.loadGeneration+=1,this.chart?.destroy(),this.chart=void 0,this.intersectionObserver?.disconnect(),this.intersectionObserver=void 0,this.intersectionGeneration+=1,this.visible=!0,this.disarmReducedMotionWatcher()}adoptedCallback(){super.adoptedCallback(),this.releaseAnnouncementSinks(),this.syncAnnouncementSinks(),this.armReducedMotionWatcher()}armReducedMotionWatcher(){const ownerWindow=this.ownerWindow;ownerWindow?.matchMedia&&(this.reducedMotionWindow===ownerWindow&&this.reducedMotionQuery||(this.disarmReducedMotionWatcher(),this.reducedMotionWindow=ownerWindow,this.reducedMotionQuery=ownerWindow.matchMedia("(prefers-reduced-motion: reduce)"),this.reducedMotionQuery.addEventListener("change",this.onReducedMotionChange)))}disarmReducedMotionWatcher(){this.reducedMotionQuery?.removeEventListener("change",this.onReducedMotionChange),this.reducedMotionQuery=void 0,this.reducedMotionWindow=void 0}syncAnnouncementSinks(){this.isConnected&&(this.politeAnnouncementSink?.element.ownerDocument===this.ownerDocument&&this.assertiveAnnouncementSink?.element.ownerDocument===this.ownerDocument||(this.releaseAnnouncementSinks(),this.politeAnnouncementSink=acquireAnnouncementSink("polite",{document:this.ownerDocument,source:this}),this.assertiveAnnouncementSink=acquireAnnouncementSink("assertive",{document:this.ownerDocument,source:this})))}releaseAnnouncementSinks(){this.politeAnnouncementSink?.release(),this.politeAnnouncementSink=void 0,this.assertiveAnnouncementSink?.release(),this.assertiveAnnouncementSink=void 0}get ownerWindow(){return this.ownerDocument?.defaultView??void 0}effectiveHiddenDatasetIndexes(){return normalizeHiddenDatasets(this.hiddenDatasets,this.datasets.length)??[]}applyDatasetVisibility(){if(!this.chart)return!1;const datasetCount=this.chart.data.datasets?.length??0,sourceSeriesIndexes=this.dataTableSample().seriesIndexes,controlled=normalizeHiddenDatasets(this.hiddenDatasets,this.datasets.length);if(controlled===void 0){for(let index=0;index<datasetCount;index++){const metadata=this.chart.getDatasetMeta?.(index);metadata&&(metadata.hidden=null)}return datasetCount>0}const hidden=new Set(controlled);for(let index=0;index<datasetCount;index++)this.chart.setDatasetVisibility(index,!hidden.has(sourceSeriesIndexes[index]??index));return datasetCount>0}updated(changed){if(super.updated(changed),!this.isConnected)return;const wasMounting=this.isMounting;this.isMounting=!1,changed.has("keyboardDatumAnnouncement")&&changed.get("keyboardDatumAnnouncement")!==void 0&&this.keyboardDatumAnnouncement!==""&&this.politeAnnouncementSink?.announce(this.keyboardDatumAnnouncement),changed.has("loadFailed")&&changed.get("loadFailed")!==void 0&&this.loadFailed&&this.assertiveAnnouncementSink?.announce(this.localize("boxPlotMissingLibrary"));const dataTruncation=this.dataTruncationMessage();if(wasMounting&&(this.lastDataTruncationAnnouncement=dataTruncation),!this.loading&&!this.loadFailed&&!wasMounting&&dataTruncation!==this.lastDataTruncationAnnouncement&&(this.lastDataTruncationAnnouncement=dataTruncation,dataTruncation&&this.politeAnnouncementSink?.announce(dataTruncation)),this.setAttribute("aria-busy",String(this.loading)),changed.has("height")){const height=sanitizeCssLength(this.height,"height");height?this.style.setProperty("--_lr-chart-height",height):this.style.removeProperty("--_lr-chart-height")}if(this.loading)return;const contentChanged=["labels","datasets","hiddenDatasets","legend","legendPosition","height","yLabel","beginAtZero","label","description","valueFormatter","formatter","locale","strings","loading"].some(name=>changed.has(name)),direction=this.effectiveDirection,locale=this.effectiveLocale,contextChanged=this.lastDrawnDirection!==void 0&&this.lastDrawnDirection!==direction||this.lastDrawnLocale!==void 0&&this.lastDrawnLocale!==locale;this.lastDrawnDirection=direction,this.lastDrawnLocale=locale,!(!contentChanged&&!contextChanged)&&this.drawIfVisible()}themeColors(){const view=this.ownerWindow,cs=view?view.getComputedStyle(this):this.style;return{grid:resolveCanvasColor(this,cs.getPropertyValue("--lr-chart-grid-color").trim()||cs.getPropertyValue("--_lr-chart-grid-color").trim(),FALLBACK_GRID_COLOR),tick:resolveCanvasColor(this,cs.getPropertyValue("--lr-chart-tick-color").trim()||cs.getPropertyValue("--_lr-chart-tick-color").trim(),FALLBACK_TICK_COLOR),legend:resolveCanvasColor(this,cs.getPropertyValue("--lr-chart-legend-color").trim()||cs.getPropertyValue("--_lr-chart-legend-color").trim(),FALLBACK_LEGEND_COLOR),tooltipBg:resolveCanvasColor(this,cs.getPropertyValue("--lr-chart-tooltip-bg").trim()||cs.getPropertyValue("--_lr-chart-tooltip-bg").trim(),FALLBACK_TOOLTIP_BG),tooltipText:resolveCanvasColor(this,cs.getPropertyValue("--lr-chart-tooltip-text").trim()||cs.getPropertyValue("--_lr-chart-tooltip-text").trim(),FALLBACK_TOOLTIP_TEXT)}}seriesColor(index,palette=seriesPalette(this)){const fallback=palette[index%palette.length]??"transparent",series=this.datasets[index];return series?.color?resolveCanvasColor(this,series.color,fallback):fallback}forcedColorFill(index,background){return!this.ownerWindow||!forcedColorsActive(this.ownerWindow)?background:createForcedColorPattern(this.ownerDocument,index,background,this.styleColor("--lr-color-surface",FALLBACK_TOOLTIP_BG))}styleColor(name,fallback){const view=this.ownerWindow,value=(view?view.getComputedStyle(this):this.style).getPropertyValue(name).trim();return value?resolveCanvasColor(this,value,fallback):fallback}buildConfig(){const theme=this.themeColors(),palette=seriesPalette(this),sample=this.dataTableSample();return{type:"boxplot",data:{labels:sample.rowIndexes.map(index=>this.labels[index]??""),datasets:sample.seriesIndexes.map(sourceIndex=>{const s=this.datasets[sourceIndex],color=this.seriesColor(sourceIndex,palette);return{label:s.label,data:sample.rowIndexes.map(index=>{const point=s.data[index];return this.validPoint(point)?summaryOf(point):null}),backgroundColor:this.forcedColorFill(sourceIndex,color),borderColor:color}})},options:{locale:this.effectiveLocale,responsive:!0,maintainAspectRatio:!1,animation:prefersReducedMotion(this.ownerWindow)?!1:void 0,onClick:(event,_elements,chart)=>this.handlePointClick(event,chart),plugins:{legend:{display:!1,labels:{color:theme.legend}},tooltip:{backgroundColor:theme.tooltipBg,titleColor:theme.tooltipText,bodyColor:theme.tooltipText,...this.formatter||this.valueFormatter?{callbacks:{label:context=>{const raw=context.raw,point=this.validPoint(raw)?raw:void 0;if(!point)return;const value=this.formatValue(point.median,"tooltip"),label=String(context.dataset?.label??"");return label?this.localize("chartValueLabel",void 0,{label,value}):value}}}:{}}},scales:{y:{position:this.effectiveDirection==="rtl"?"right":"left",beginAtZero:this.beginAtZero,title:{display:!!this.yLabel,text:this.yLabel,color:theme.tick},ticks:{color:theme.tick,...this.formatter||this.valueFormatter?{callback:value=>this.formatValue(Number(value),"tick")}:{}},grid:{color:theme.grid}}}}}}draw(){if(!this.chartJsModule||!this.canvasEl)return;const config=this.buildConfig();if(this.chart){this.chart.data=config.data,this.chart.options=config.options??{},this.applyDatasetVisibility(),this.chart.update("none");return}this.chart=new this.chartJsModule.Chart(this.canvasEl,config),this.hiddenDatasets!==void 0&&(this.applyDatasetVisibility(),this.chart.update("none"))}drawIfVisible(){!this.isConnected||!this.visible||this.draw()}refreshTheme(){this.drawIfVisible(),this.legend&&this.requestUpdate()}formatValue(value,context){return this.formatter?.({value,surface:context})??this.valueFormatter?.(value,context)??getNumberFormat(this.effectiveLocale).format(value)}exportData(format){if(format==="png")return this.chart?.toBase64Image?.()??"";const header=["category","series","min","q1","median","q3","max"].map(escapeCsvField).join(","),rows=[];return this.datasets.forEach(series=>{series.data.forEach((point,index)=>{this.validPoint(point)&&rows.push([this.labels[index]??"",series.label,this.formatValue(point.min,"table"),this.formatValue(point.q1,"table"),this.formatValue(point.median,"table"),this.formatValue(point.q3,"table"),this.formatValue(point.max,"table")].map(escapeCsvField).join(","))})}),[header,...rows].join(`\r
2
2
  `)}boxPlotDescription(){if(this.description)return this.description;const summaries=this.dataTableSample().seriesIndexes.map(index=>{const series=this.datasets[index];let count=0,first=0,last=0,min=0,max=0;for(const point of series.data)this.validPoint(point)&&(count===0&&(first=point.median,min=point.median,max=point.median),last=point.median,min=Math.min(min,point.median),max=Math.max(max,point.median),count++);if(count===0)return this.localize("chartSeriesNoData",void 0,{label:series.label});const trend=last>first?this.localize("chartTrendIncreasing"):last<first?this.localize("chartTrendDecreasing"):this.localize("chartTrendFlat");return this.localize("boxPlotSeriesSummary",void 0,{label:series.label,count:getNumberFormat(this.effectiveLocale).format(count),min:this.formatValue(min,"table"),max:this.formatValue(max,"table"),trend})});return summaries.length?this.localize("boxPlotSummaryWithData",void 0,{summaries:summaries.join(this.localize("chartSummarySeparator"))}):this.localize("boxPlotSummaryEmpty")}boxDatums(){const sample=this.dataTableSample(),datums=[];for(const datasetIndex of sample.seriesIndexes){const series=this.datasets[datasetIndex];if(series)for(const index of sample.rowIndexes){const point=series.data[index];this.validPoint(point)&&datums.push({datasetIndex,index,label:this.labels[index]||void 0,value:summaryOf(point)})}}return datums}boxAnnouncement(datum,position,total){const numberFormat=getNumberFormat(this.effectiveLocale),point=datum.value,summary=(point?[[this.localize("boxPlotMin"),point.min],[this.localize("boxPlotQ1"),point.q1],[this.localize("boxPlotMedian"),point.median],[this.localize("boxPlotQ3"),point.q3],[this.localize("boxPlotMax"),point.max]]:[]).filter(([,value])=>Number.isFinite(value)).map(([label,value])=>this.localize("chartValueLabel",void 0,{label,value:numberFormat.format(value)})).join(this.localize("chartSummarySeparator"));return this.localize("liteChartMarkSummary",void 0,{series:this.datasets[datum.datasetIndex]?.label||this.localize("chartSeriesLabel"),label:datum.label??this.localize("chartPointLabel",void 0,{n:numberFormat.format(datum.index+1)}),value:summary,index:numberFormat.format(position+1),total:numberFormat.format(total)})}activateBox(datum){const datums=this.boxDatums(),position=datums.findIndex(candidate=>candidate.datasetIndex===datum.datasetIndex&&candidate.index===datum.index);position>=0&&(this.keyboardDatumIndex=position,this.keyboardDatumAnnouncement=this.boxAnnouncement(datum,position,datums.length)),this.emit("lr-datum-activate",{...datum,kind:"box"}),this.emit("lr-point-click",datum)}handlePointClick(event,chart){const hit=chart.getElementsAtEventForMode?.(event,"nearest",{intersect:!0},!0)?.[0];if(!hit)return;const sample=this.dataTableSample(),datasetIndex=sample.seriesIndexes[hit.datasetIndex],index=sample.rowIndexes[hit.index];if(datasetIndex===void 0||index===void 0)return;const point=this.datasets[datasetIndex]?.data[index];this.activateBox({datasetIndex,index,label:this.labels[index]||void 0,value:this.validPoint(point)?summaryOf(point):null})}onCanvasFocus(){const datums=this.boxDatums();datums.length&&(this.keyboardDatumIndex=Math.min(this.keyboardDatumIndex,datums.length-1),this.keyboardDatumAnnouncement=this.boxAnnouncement(datums[this.keyboardDatumIndex],this.keyboardDatumIndex,datums.length))}onCanvasKeyDown(event){const datums=this.boxDatums();if(!datums.length)return;if(this.keyboardDatumIndex=Math.min(this.keyboardDatumIndex,datums.length-1),event.key==="Enter"||event.key===" "){event.preventDefault(),this.activateBox(datums[this.keyboardDatumIndex]);return}const rtl=this.effectiveDirection==="rtl",forward=rtl?"ArrowLeft":"ArrowRight",backward=rtl?"ArrowRight":"ArrowLeft";let next=this.keyboardDatumIndex;if(event.key===forward||event.key==="ArrowDown")next=Math.min(datums.length-1,next+1);else if(event.key===backward||event.key==="ArrowUp")next=Math.max(0,next-1);else if(event.key==="Home")next=0;else if(event.key==="End")next=datums.length-1;else return;event.preventDefault(),this.keyboardDatumIndex=next,this.keyboardDatumAnnouncement=this.boxAnnouncement(datums[next],next,datums.length)}validPoint(point){return!!point&&[point.min,point.q1,point.median,point.q3,point.max].every(Number.isFinite)&&point.min<=point.q1&&point.q1<=point.median&&point.median<=point.q3&&point.q3<=point.max}accessibleName(fallback){return this.getAttribute("aria-label")??this.label??fallback}dataTableSample(){let rowCount=this.labels.length;for(const series of this.datasets)rowCount=Math.max(rowCount,series.data.length);const indexes=sampleChartTableIndexes(rowCount,this.datasets.length);return{rowCount,seriesCount:this.datasets.length,...indexes}}generatedDataIsSampled(){if(this.hasCustomDataTable())return!1;const sample=this.dataTableSample();return sample.rowCount===0||sample.seriesCount===0?!1:sample.rowIndexes.length<sample.rowCount||sample.seriesIndexes.length<sample.seriesCount}dataTruncationMessage(){return this.generatedDataIsSampled()?this.localize("chartDataSampled"):""}renderDataTable(){const numberFormat=getNumberFormat(this.effectiveLocale),sample=this.dataTableSample();return html`
3
- <table class=${this.showDataTable?"":"sr-only"}>
3
+ <table class=${this.dataTableVisible?"":"sr-only"}>
4
4
  <caption>${this.accessibleName(this.localize("boxPlotData"))}</caption>
5
5
  <thead>
6
6
  <tr>
@@ -75,12 +75,22 @@ var __decorate=function(decorators,target,key,desc){var c=arguments.length,r=c<3
75
75
  <p part="description" id=${this.descriptionId} class="sr-only">${description}</p>
76
76
  <p class="sr-only" aria-hidden="true">${this.keyboardDatumAnnouncement}</p>
77
77
  ${this.dataTruncationMessage()?html`<p part="data-truncation">${this.dataTruncationMessage()}</p>`:nothing}
78
+ ${this.dataTableToggle?html`<button
79
+ part="data-table-toggle"
80
+ type="button"
81
+ aria-expanded=${this.dataTableVisible?"true":"false"}
82
+ aria-controls=${this.dataTableId}
83
+ @click=${()=>this.toggleDataTable()}
84
+ >
85
+ ${this.localize("boxPlotData")}
86
+ </button>`:nothing}
78
87
  <div
88
+ id=${this.dataTableId}
79
89
  part="data-table"
80
- ?data-visually-hidden=${!hasCustomDataTable&&!this.showDataTable}
90
+ ?data-visually-hidden=${!hasCustomDataTable&&!this.dataTableVisible}
81
91
  >
82
92
  <slot name="data-table" @slotchange=${()=>this.requestUpdate()}></slot>
83
93
  ${hasCustomDataTable?nothing:this.renderDataTable()}
84
94
  </div>
85
95
  </div>
86
- `}}__decorate([property({attribute:!1})],LyraBoxPlot.prototype,"labels",void 0),__decorate([property({attribute:!1})],LyraBoxPlot.prototype,"datasets",void 0),__decorate([property({attribute:!1})],LyraBoxPlot.prototype,"hiddenDatasets",void 0),__decorate([property({type:Boolean})],LyraBoxPlot.prototype,"legend",void 0),__decorate([property({attribute:"legend-position",converter:{fromAttribute:normalizeChartChromeLegendPosition}})],LyraBoxPlot.prototype,"legendPosition",void 0),__decorate([property()],LyraBoxPlot.prototype,"height",void 0),__decorate([property({attribute:"y-label"})],LyraBoxPlot.prototype,"yLabel",void 0),__decorate([property({type:Boolean,attribute:"begin-at-zero",converter:trueDefaultBooleanConverter})],LyraBoxPlot.prototype,"beginAtZero",void 0),__decorate([property()],LyraBoxPlot.prototype,"label",void 0),__decorate([property()],LyraBoxPlot.prototype,"description",void 0),__decorate([property({type:Boolean,attribute:"show-data-table"})],LyraBoxPlot.prototype,"showDataTable",void 0),__decorate([property({attribute:!1})],LyraBoxPlot.prototype,"valueFormatter",void 0),__decorate([property({attribute:!1})],LyraBoxPlot.prototype,"formatter",void 0),__decorate([state()],LyraBoxPlot.prototype,"loading",void 0),__decorate([state()],LyraBoxPlot.prototype,"loadFailed",void 0),__decorate([state()],LyraBoxPlot.prototype,"visible",void 0),__decorate([state()],LyraBoxPlot.prototype,"keyboardDatumAnnouncement",void 0),__decorate([query("canvas")],LyraBoxPlot.prototype,"canvasEl",void 0);export{LyraBoxPlot,loadBoxPlotAndRegister};
96
+ `}}__decorate([property({attribute:!1})],LyraBoxPlot.prototype,"labels",void 0),__decorate([property({attribute:!1})],LyraBoxPlot.prototype,"datasets",void 0),__decorate([property({attribute:!1})],LyraBoxPlot.prototype,"hiddenDatasets",void 0),__decorate([property({type:Boolean})],LyraBoxPlot.prototype,"legend",void 0),__decorate([property({attribute:"legend-position",converter:{fromAttribute:normalizeChartChromeLegendPosition}})],LyraBoxPlot.prototype,"legendPosition",void 0),__decorate([property()],LyraBoxPlot.prototype,"height",void 0),__decorate([property({attribute:"y-label"})],LyraBoxPlot.prototype,"yLabel",void 0),__decorate([property({type:Boolean,attribute:"begin-at-zero",converter:trueDefaultBooleanConverter})],LyraBoxPlot.prototype,"beginAtZero",void 0),__decorate([property()],LyraBoxPlot.prototype,"label",void 0),__decorate([property()],LyraBoxPlot.prototype,"description",void 0),__decorate([property({type:Boolean,attribute:"show-data-table"})],LyraBoxPlot.prototype,"showDataTable",void 0),__decorate([property({type:Boolean,attribute:"data-table-toggle"})],LyraBoxPlot.prototype,"dataTableToggle",void 0),__decorate([state()],LyraBoxPlot.prototype,"dataTableExpandedOverride",void 0),__decorate([property({attribute:!1})],LyraBoxPlot.prototype,"valueFormatter",void 0),__decorate([property({attribute:!1})],LyraBoxPlot.prototype,"formatter",void 0),__decorate([state()],LyraBoxPlot.prototype,"loading",void 0),__decorate([state()],LyraBoxPlot.prototype,"loadFailed",void 0),__decorate([state()],LyraBoxPlot.prototype,"visible",void 0),__decorate([state()],LyraBoxPlot.prototype,"keyboardDatumAnnouncement",void 0),__decorate([query("canvas")],LyraBoxPlot.prototype,"canvasEl",void 0);export{LyraBoxPlot,loadBoxPlotAndRegister};