@aceshooting/lyra-ui 13.0.0 → 14.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 (421) hide show
  1. package/CHANGELOG.md +212 -0
  2. package/custom-elements.json +1 -1
  3. package/dist/cli/migration-contract.json +1 -1
  4. package/dist/components/agent-tools/activity-feed/activity-feed.class.d.ts +23 -15
  5. package/dist/components/agent-tools/activity-feed/activity-feed.class.js +9 -6
  6. package/dist/components/agent-tools/agent-trace/agent-trace.class.d.ts +12 -3
  7. package/dist/components/agent-tools/agent-trace/agent-trace.class.js +2 -1
  8. package/dist/components/agent-tools/approval-queue/approval-queue.class.d.ts +4 -2
  9. package/dist/components/agent-tools/approval-queue/approval-queue.class.js +1 -1
  10. package/dist/components/agent-tools/artifact-panel/artifact-panel.styles.js +1 -1
  11. package/dist/components/agent-tools/prompt-studio/prompt-studio.class.d.ts +1 -1
  12. package/dist/components/agent-tools/prompt-studio/prompt-studio.class.js +7 -7
  13. package/dist/components/agent-tools/schema-viewer/schema-viewer.class.d.ts +5 -5
  14. package/dist/components/agent-tools/schema-viewer/schema-viewer.class.js +23 -10
  15. package/dist/components/agent-tools/span-waterfall/span-waterfall.class.d.ts +13 -6
  16. package/dist/components/agent-tools/span-waterfall/span-waterfall.class.js +3 -3
  17. package/dist/components/agent-tools/span-waterfall/span-waterfall.styles.js +1 -1
  18. package/dist/components/agent-tools/stack-trace/stack-trace-parse.js +3 -3
  19. package/dist/components/agent-tools/subagent-panel/subagent-panel.class.js +1 -1
  20. package/dist/components/agent-tools/subagent-panel/subagent-panel.styles.js +1 -1
  21. package/dist/components/agent-tools/task-list/task-list.class.d.ts +1 -2
  22. package/dist/components/agent-tools/task-list/task-list.class.js +2 -2
  23. package/dist/components/agent-tools/terminal/terminal.class.d.ts +10 -1
  24. package/dist/components/agent-tools/terminal/terminal.class.js +3 -3
  25. package/dist/components/agent-tools/terminal/terminal.styles.js +1 -1
  26. package/dist/components/agent-tools/test-results/test-results.class.d.ts +4 -2
  27. package/dist/components/agent-tools/test-results/test-results.class.js +2 -2
  28. package/dist/components/agent-tools/thinking-panel/thinking-panel.class.d.ts +2 -0
  29. package/dist/components/agent-tools/thinking-panel/thinking-panel.styles.js +1 -1
  30. package/dist/components/agent-tools/tool-approval-dialog/tool-approval-dialog.class.js +1 -1
  31. package/dist/components/agent-tools/tool-call-chip/tool-call-chip.class.js +1 -1
  32. package/dist/components/agent-tools/tool-param-form/tool-param-form.class.js +3 -2
  33. package/dist/components/agent-tools/tool-param-form/tool-param-form.d.ts +1 -1
  34. package/dist/components/agent-tools/tool-param-form/tool-param-form.js +1 -1
  35. package/dist/components/agent-tools/tool-result-dialog/tool-result-dialog.styles.js +1 -1
  36. package/dist/components/agent-tools/tool-result-view/registry.d.ts +2 -1
  37. package/dist/components/agent-tools/tool-result-view/tool-result-view.class.d.ts +1 -1
  38. package/dist/components/agent-tools/tool-result-view/tool-result-view.class.js +1 -1
  39. package/dist/components/agent-tools/tool-select-dialog/tool-select-dialog.class.d.ts +18 -12
  40. package/dist/components/agent-tools/tool-select-dialog/tool-select-dialog.class.js +6 -6
  41. package/dist/components/agent-tools/tool-timeline/tool-timeline.class.d.ts +9 -3
  42. package/dist/components/agent-tools/tool-timeline/tool-timeline.class.js +1 -1
  43. package/dist/components/agent-tools/trace-tree/span.js +1 -1
  44. package/dist/components/agent-tools/trace-tree/trace-tree.styles.js +1 -1
  45. package/dist/components/charts/chart/box-plot.class.d.ts +10 -3
  46. package/dist/components/charts/chart/box-plot.class.js +9 -9
  47. package/dist/components/charts/chart/box-plot.styles.js +1 -1
  48. package/dist/components/charts/chart/chart-core-loader.js +1 -1
  49. package/dist/components/charts/chart/chart-feature-loader.js +1 -1
  50. package/dist/components/charts/chart/chart-preload.d.ts +1 -1
  51. package/dist/components/charts/chart/chart-preload.js +1 -1
  52. package/dist/components/charts/chart/chart.class.d.ts +27 -9
  53. package/dist/components/charts/chart/chart.class.js +23 -14
  54. package/dist/components/charts/chart/chart.styles.js +1 -1
  55. package/dist/components/charts/chart/histogram-bin.js +1 -1
  56. package/dist/components/charts/chart/lite-chart.class.js +7 -3
  57. package/dist/components/charts/chart/lite-chart.styles.js +1 -1
  58. package/dist/components/conversation/agent-workspace/agent-workspace.class.d.ts +1 -1
  59. package/dist/components/conversation/agent-workspace/agent-workspace.class.js +2 -2
  60. package/dist/components/conversation/audio-visualizer/audio-visualizer.class.d.ts +10 -5
  61. package/dist/components/conversation/audio-visualizer/audio-visualizer.class.js +1 -1
  62. package/dist/components/conversation/branch-picker/branch-picker.class.d.ts +4 -2
  63. package/dist/components/conversation/branch-picker/branch-picker.class.js +1 -1
  64. package/dist/components/conversation/branch-picker/branch-picker.styles.js +1 -1
  65. package/dist/components/conversation/chat-composer/chat-composer.class.d.ts +6 -2
  66. package/dist/components/conversation/chat-composer/chat-composer.class.js +3 -3
  67. package/dist/components/conversation/chat-composer/chat-composer.styles.js +1 -1
  68. package/dist/components/conversation/chat-message/chat-message.class.js +2 -2
  69. package/dist/components/conversation/chat-message/chat-message.styles.js +1 -1
  70. package/dist/components/conversation/chat-viewport/chat-viewport.styles.js +1 -1
  71. package/dist/components/conversation/code-block/code-block-shared.js +1 -1
  72. package/dist/components/conversation/code-block/code-block.styles.js +1 -1
  73. package/dist/components/conversation/code-block/code-loader.d.ts +1 -1
  74. package/dist/components/conversation/code-block/code-loader.js +1 -1
  75. package/dist/components/conversation/code-block/shiki-types.js +1 -1
  76. package/dist/components/conversation/conversation-item/conversation-item.styles.js +1 -1
  77. package/dist/components/conversation/generation-metrics/generation-metrics.styles.js +1 -1
  78. package/dist/components/conversation/markdown/katex-loader.d.ts +4 -4
  79. package/dist/components/conversation/markdown/katex-loader.js +1 -1
  80. package/dist/components/conversation/markdown/markdown-base.class.js +1 -1
  81. package/dist/components/conversation/markdown/markdown-loader.d.ts +1 -1
  82. package/dist/components/conversation/markdown/markdown-loader.js +1 -1
  83. package/dist/components/conversation/markdown/markdown-shared.d.ts +6 -1
  84. package/dist/components/conversation/markdown/markdown-shared.js +5 -4
  85. package/dist/components/conversation/message-actions/message-actions.class.d.ts +16 -3
  86. package/dist/components/conversation/message-actions/message-actions.class.js +2 -2
  87. package/dist/components/conversation/message-actions/message-actions.styles.js +1 -1
  88. package/dist/components/conversation/message-actions/toolbar-actions.d.ts +3 -1
  89. package/dist/components/conversation/message-actions/toolbar-actions.js +1 -1
  90. package/dist/components/conversation/message-feedback/message-feedback.class.d.ts +38 -15
  91. package/dist/components/conversation/message-feedback/message-feedback.class.js +7 -3
  92. package/dist/components/conversation/message-feedback/message-feedback.styles.js +1 -1
  93. package/dist/components/conversation/message-parts/message-parts.class.d.ts +7 -4
  94. package/dist/components/conversation/message-parts/message-parts.class.js +2 -2
  95. package/dist/components/conversation/message-parts/message-parts.styles.js +1 -1
  96. package/dist/components/conversation/model-select/model-select.class.d.ts +5 -2
  97. package/dist/components/conversation/model-select/model-select.class.js +5 -2
  98. package/dist/components/conversation/model-settings-panel/model-settings-panel.class.d.ts +3 -5
  99. package/dist/components/conversation/model-settings-panel/model-settings-panel.class.js +2 -1
  100. package/dist/components/conversation/prompt-input/prompt-input.class.d.ts +9 -2
  101. package/dist/components/conversation/prompt-input/prompt-input.class.js +3 -3
  102. package/dist/components/conversation/prompt-input/prompt-input.styles.js +1 -1
  103. package/dist/components/conversation/prompt-queue/prompt-queue.class.d.ts +20 -4
  104. package/dist/components/conversation/prompt-queue/prompt-queue.class.js +1 -1
  105. package/dist/components/conversation/prompt-queue/prompt-queue.styles.js +1 -1
  106. package/dist/components/conversation/push-to-talk/push-to-talk.class.d.ts +17 -8
  107. package/dist/components/conversation/push-to-talk/push-to-talk.class.js +1 -1
  108. package/dist/components/conversation/push-to-talk/push-to-talk.styles.js +1 -1
  109. package/dist/components/conversation/selection-toolbar/selection-toolbar.class.d.ts +6 -3
  110. package/dist/components/conversation/selection-toolbar/selection-toolbar.class.js +1 -1
  111. package/dist/components/conversation/selection-toolbar/selection-toolbar.styles.js +1 -1
  112. package/dist/components/conversation/thread-list/thread-list.class.d.ts +14 -4
  113. package/dist/components/conversation/thread-list/thread-list.class.js +11 -11
  114. package/dist/components/conversation/thread-list/thread-list.styles.js +1 -1
  115. package/dist/components/conversation/transcript-feed/transcript-feed.styles.js +1 -1
  116. package/dist/components/conversation/voice-picker/voice-picker.class.d.ts +12 -4
  117. package/dist/components/conversation/voice-picker/voice-picker.class.js +5 -2
  118. package/dist/components/conversation/voice-picker/voice-picker.styles.js +1 -1
  119. package/dist/components/data/calendar/calendar.class.d.ts +12 -4
  120. package/dist/components/data/calendar/calendar.class.js +2 -2
  121. package/dist/components/data/calendar/calendar.styles.js +1 -1
  122. package/dist/components/data/context-meter/context-meter.class.d.ts +3 -1
  123. package/dist/components/data/context-meter/context-meter.class.js +3 -3
  124. package/dist/components/data/data-grid/data-grid.class.d.ts +45 -4
  125. package/dist/components/data/data-grid/data-grid.class.js +25 -11
  126. package/dist/components/data/data-grid/data-grid.styles.js +1 -1
  127. package/dist/components/data/document-library/document-library.class.js +1 -1
  128. package/dist/components/data/env-list/env-list.class.js +1 -1
  129. package/dist/components/data/flow-canvas/flow-canvas.class.d.ts +19 -12
  130. package/dist/components/data/flow-canvas/flow-canvas.class.js +1 -2
  131. package/dist/components/data/flow-controls/flow-controls.styles.js +1 -1
  132. package/dist/components/data/flow-run-status/flow-run-status.class.js +1 -1
  133. package/dist/components/data/gauge/gauge.class.js +1 -1
  134. package/dist/components/data/graph-query-builder/graph-query-builder.styles.js +1 -1
  135. package/dist/components/data/heatmap/heatmap.class.js +1 -1
  136. package/dist/components/data/sequence-strip/sequence-strip.class.js +1 -1
  137. package/dist/components/data/stat/stat.class.js +1 -1
  138. package/dist/components/data/table/table.class.d.ts +10 -14
  139. package/dist/components/data/table/table.class.js +4 -3
  140. package/dist/components/data/table/table.styles.js +1 -1
  141. package/dist/components/data/timeline/timeline.class.js +1 -1
  142. package/dist/components/data/tree/tree-item.styles.js +1 -1
  143. package/dist/components/data/word-cloud/word-cloud.class.js +1 -1
  144. package/dist/components/forms/checkbox-group/checkbox-group.class.d.ts +7 -2
  145. package/dist/components/forms/checkbox-group/checkbox-group.class.js +1 -1
  146. package/dist/components/forms/code-editor/code-editor.class.d.ts +8 -4
  147. package/dist/components/forms/code-editor/code-editor.class.js +16 -5
  148. package/dist/components/forms/code-editor/code-editor.styles.js +1 -1
  149. package/dist/components/forms/color-picker/color-picker.class.d.ts +1 -1
  150. package/dist/components/forms/color-picker/color-picker.class.js +1 -1
  151. package/dist/components/forms/combobox/combobox.styles.js +1 -1
  152. package/dist/components/forms/date-picker/date-input.class.js +1 -1
  153. package/dist/components/forms/date-picker/date-picker.class.d.ts +9 -2
  154. package/dist/components/forms/date-picker/date-picker.class.js +4 -4
  155. package/dist/components/forms/date-picker/date-picker.styles.js +1 -1
  156. package/dist/components/forms/emoji-picker/emoji-data-loader.js +1 -1
  157. package/dist/components/forms/emoji-picker/emoji-picker.class.js +1 -1
  158. package/dist/components/forms/input/input.class.d.ts +11 -4
  159. package/dist/components/forms/input/input.class.js +7 -1
  160. package/dist/components/forms/input/time-input.class.d.ts +8 -2
  161. package/dist/components/forms/input/time-input.class.js +1 -1
  162. package/dist/components/forms/locale-picker/locale-picker.class.d.ts +17 -3
  163. package/dist/components/forms/locale-picker/locale-picker.class.js +1 -1
  164. package/dist/components/forms/locale-picker/locale-picker.styles.js +1 -1
  165. package/dist/components/forms/rubric-form/rubric-form.class.js +1 -1
  166. package/dist/components/forms/select/select.styles.js +1 -1
  167. package/dist/components/forms/slider/slider.class.js +1 -1
  168. package/dist/components/forms/swatch-picker/swatch-picker.class.js +1 -1
  169. package/dist/components/forms/token-input/token-input.class.js +1 -1
  170. package/dist/components/forms/token-input/token-input.styles.js +1 -1
  171. package/dist/components/layout/app-rail/app-rail.class.d.ts +6 -4
  172. package/dist/components/layout/app-rail/app-rail.class.js +4 -3
  173. package/dist/components/layout/app-rail/app-rail.styles.js +1 -1
  174. package/dist/components/layout/command-palette/command-palette.class.d.ts +2 -2
  175. package/dist/components/layout/command-palette/command-palette.class.js +1 -1
  176. package/dist/components/layout/command-palette/command-palette.styles.js +1 -1
  177. package/dist/components/layout/dashboard-grid/dashboard-grid.class.js +1 -1
  178. package/dist/components/layout/details/details.class.d.ts +13 -12
  179. package/dist/components/layout/details/details.class.js +43 -34
  180. package/dist/components/layout/details/details.styles.js +1 -1
  181. package/dist/components/layout/dock-panel/dock-panel.class.d.ts +4 -3
  182. package/dist/components/layout/dock-panel/dock-panel.class.js +2 -1
  183. package/dist/components/layout/filter-bar/filter-bar.class.js +2 -2
  184. package/dist/components/layout/menu/menu-item.class.js +2 -2
  185. package/dist/components/layout/menu/menu.class.js +1 -1
  186. package/dist/components/layout/multi-split/multi-split.class.d.ts +10 -5
  187. package/dist/components/layout/multi-split/multi-split.class.js +2 -1
  188. package/dist/components/layout/scroller/scroller.class.d.ts +4 -4
  189. package/dist/components/layout/scroller/scroller.styles.js +1 -1
  190. package/dist/components/layout/split-panel/split-panel.class.d.ts +3 -2
  191. package/dist/components/layout/split-panel/split-panel.class.js +3 -2
  192. package/dist/components/layout/tab-group/tab-group.styles.js +1 -1
  193. package/dist/components/layout/virtual-list/virtual-list.class.js +2 -2
  194. package/dist/components/layout/widget/widget.styles.js +1 -1
  195. package/dist/components/media/file-input/file-input.styles.js +1 -1
  196. package/dist/components/media/flag/flag.class.js +1 -1
  197. package/dist/components/media/lightbox/lightbox.styles.js +1 -1
  198. package/dist/components/media/map/map-loader.js +1 -1
  199. package/dist/components/media/map/map.class.d.ts +17 -31
  200. package/dist/components/media/map/map.class.js +1 -1
  201. package/dist/components/media/qr-code/qr-code-loader.js +1 -1
  202. package/dist/components/media/qr-code/qr-code.class.d.ts +5 -2
  203. package/dist/components/media/qr-code/qr-code.class.js +2 -2
  204. package/dist/components/media/sequence-playback/sequence-playback.class.d.ts +2 -2
  205. package/dist/components/media/sequence-playback/sequence-playback.class.js +1 -1
  206. package/dist/components/overlays/alert/alert.styles.js +1 -1
  207. package/dist/components/overlays/callout/callout.styles.js +1 -1
  208. package/dist/components/overlays/dialog/dialog.styles.js +1 -1
  209. package/dist/components/overlays/kbd/kbd.class.js +1 -1
  210. package/dist/components/overlays/overlay/popover.class.js +1 -1
  211. package/dist/components/overlays/overlay/tooltip.class.js +1 -1
  212. package/dist/components/overlays/rating/rating.class.js +1 -1
  213. package/dist/components/overlays/toast/toast-item.class.js +1 -1
  214. package/dist/components/retrieval/claim-evidence/claim-evidence.class.d.ts +11 -5
  215. package/dist/components/retrieval/claim-evidence/claim-evidence.class.js +3 -3
  216. package/dist/components/retrieval/graph/graph-loader.js +1 -1
  217. package/dist/components/retrieval/graph/graph.class.d.ts +1 -1
  218. package/dist/components/retrieval/graph/graph.class.js +10 -10
  219. package/dist/components/retrieval/graph-legend/graph-legend.class.d.ts +4 -2
  220. package/dist/components/retrieval/graph-legend/graph-legend.class.js +1 -1
  221. package/dist/components/retrieval/grounding-summary/grounding-summary.class.d.ts +14 -6
  222. package/dist/components/retrieval/grounding-summary/grounding-summary.class.js +7 -5
  223. package/dist/components/retrieval/knowledge-base/knowledge-base.class.d.ts +3 -2
  224. package/dist/components/retrieval/knowledge-base/knowledge-base.class.js +4 -3
  225. package/dist/components/retrieval/knowledge-base/knowledge-base.styles.js +1 -1
  226. package/dist/components/retrieval/knowledge-graph-explorer/knowledge-graph-explorer.class.d.ts +4 -1
  227. package/dist/components/retrieval/knowledge-graph-explorer/knowledge-graph-explorer.class.js +2 -1
  228. package/dist/components/retrieval/knowledge-graph-explorer/knowledge-graph-explorer.styles.js +1 -1
  229. package/dist/components/retrieval/memory-panel/memory-panel.class.d.ts +15 -6
  230. package/dist/components/retrieval/memory-panel/memory-panel.class.js +1 -1
  231. package/dist/components/retrieval/neighbor-list/neighbor-list.class.js +1 -1
  232. package/dist/components/retrieval/neighbor-list/neighbor-list.styles.js +1 -1
  233. package/dist/components/retrieval/node-palette/node-palette.class.d.ts +17 -12
  234. package/dist/components/retrieval/node-palette/node-palette.class.js +2 -2
  235. package/dist/components/retrieval/node-palette/node-palette.styles.js +1 -1
  236. package/dist/components/retrieval/path-strip/path-strip.class.js +1 -1
  237. package/dist/components/retrieval/retrieval-results/retrieval-results.class.d.ts +1 -1
  238. package/dist/components/retrieval/retrieval-results/retrieval-results.class.js +5 -5
  239. package/dist/components/retrieval/retrieval-trace/retrieval-trace.class.js +1 -1
  240. package/dist/components/retrieval/source-picker/source-picker.class.js +1 -1
  241. package/dist/components/utility/copy-button/copy-button.class.d.ts +2 -1
  242. package/dist/components/utility/copy-button/copy-button.class.js +1 -1
  243. package/dist/components/utility/diff-view/diff-view.class.d.ts +4 -1
  244. package/dist/components/utility/diff-view/diff-view.class.js +1 -1
  245. package/dist/components/utility/export-button/export-button.class.d.ts +2 -2
  246. package/dist/components/utility/export-button/export-button.class.js +1 -1
  247. package/dist/components/utility/export-button/export-button.styles.js +1 -1
  248. package/dist/components/utility/format/format-date.class.js +1 -1
  249. package/dist/components/utility/format/relative-time.class.js +1 -1
  250. package/dist/components/utility/icon/dompurify-loader.js +1 -1
  251. package/dist/components/utility/icon/icon-library.js +1 -1
  252. package/dist/components/utility/intersection-observer/intersection-observer.class.js +1 -1
  253. package/dist/components/utility/json-viewer/json-viewer.class.d.ts +3 -1
  254. package/dist/components/utility/json-viewer/json-viewer.class.js +5 -5
  255. package/dist/components/utility/known-date/known-date.class.js +1 -1
  256. package/dist/components/utility/mention-popover/mention-popover.class.d.ts +29 -44
  257. package/dist/components/utility/mention-popover/mention-popover.class.js +1 -1
  258. package/dist/components/utility/mutation-observer/mutation-observer.class.js +1 -1
  259. package/dist/components/viewers/calendar-viewer/calendar-loader.js +1 -1
  260. package/dist/components/viewers/document-compare/document-compare.class.d.ts +11 -8
  261. package/dist/components/viewers/document-compare/document-compare.class.js +2 -2
  262. package/dist/components/viewers/document-preview/document-preview.class.d.ts +4 -2
  263. package/dist/components/viewers/document-preview/document-preview.class.js +4 -4
  264. package/dist/components/viewers/document-preview/document-preview.styles.js +1 -1
  265. package/dist/components/viewers/document-viewer/document-viewer.class.d.ts +2 -0
  266. package/dist/components/viewers/document-viewer/document-viewer.styles.js +1 -1
  267. package/dist/components/viewers/docx-viewer/docx-loader.js +1 -1
  268. package/dist/components/viewers/docx-viewer/docx-viewer.class.js +1 -1
  269. package/dist/components/viewers/ebook-viewer/ebook-loader.d.ts +1 -1
  270. package/dist/components/viewers/ebook-viewer/ebook-viewer.class.d.ts +2 -2
  271. package/dist/components/viewers/ebook-viewer/ebook-viewer.class.js +1 -1
  272. package/dist/components/viewers/email-viewer/email-loader.js +1 -1
  273. package/dist/components/viewers/email-viewer/email-viewer.class.d.ts +1 -1
  274. package/dist/components/viewers/email-viewer/email-viewer.class.js +2 -2
  275. package/dist/components/viewers/html-viewer/dompurify-loader.js +1 -1
  276. package/dist/components/viewers/notebook-viewer/dompurify-loader.js +1 -1
  277. package/dist/components/viewers/pdf-viewer/pdf-loader.js +1 -1
  278. package/dist/components/viewers/pptx-viewer/pptx-loader.js +1 -1
  279. package/dist/components/viewers/spreadsheet-viewer/spreadsheet-loader.js +1 -1
  280. package/dist/components/viewers/svg-viewer/dompurify-loader.js +1 -1
  281. package/dist/components/viewers/viewer-loading.js +1 -1
  282. package/dist/components/viewers/viewer-search-limits.d.ts +2 -0
  283. package/dist/components/viewers/viewer-search-limits.js +1 -1
  284. package/dist/custom-elements-jsx.d.ts +1 -1
  285. package/dist/events.d.ts +13 -6
  286. package/dist/internal/aria-controls.d.ts +16 -13
  287. package/dist/internal/aria-controls.js +1 -1
  288. package/dist/internal/aria-reflection.js +1 -1
  289. package/dist/internal/catalog-picker.d.ts +2 -2
  290. package/dist/internal/catalog-picker.js +1 -1
  291. package/dist/internal/chart-annotation-registration.d.ts +1 -0
  292. package/dist/internal/chart-annotation-registration.js +1 -0
  293. package/dist/internal/data-descriptors.d.ts +13 -0
  294. package/dist/internal/data-descriptors.js +1 -0
  295. package/dist/internal/default-strings.generated.d.ts +1 -1
  296. package/dist/internal/default-strings.generated.js +2 -2
  297. package/dist/internal/dev-mode-attribute-warning.js +1 -1
  298. package/dist/internal/element-internals.d.ts +4 -3
  299. package/dist/internal/element-internals.js +1 -1
  300. package/dist/internal/highlight-collection.d.ts +2 -0
  301. package/dist/internal/highlight-collection.js +1 -1
  302. package/dist/internal/localization-types.d.ts +1 -1
  303. package/dist/internal/localization.js +2 -2
  304. package/dist/internal/lyra-element.d.ts +10 -1
  305. package/dist/internal/lyra-element.js +2 -1
  306. package/dist/internal/package-metadata.d.ts +1 -1
  307. package/dist/internal/package-metadata.js +1 -1
  308. package/dist/internal/papaparse-loader.js +1 -1
  309. package/dist/internal/pseudo-localization.js +1 -1
  310. package/dist/internal/safe-css.js +1 -1
  311. package/dist/internal/step-value.d.ts +6 -0
  312. package/dist/internal/step-value.js +1 -0
  313. package/dist/internal/text-quote.js +1 -1
  314. package/dist/lyra.d.ts +1 -1
  315. package/dist/svelte.d.ts +1 -1
  316. package/dist/translations/ar.js +2 -2
  317. package/dist/translations/de.js +2 -2
  318. package/dist/translations/es.js +2 -2
  319. package/dist/translations/fa.js +2 -2
  320. package/dist/translations/fr.js +2 -2
  321. package/dist/translations/he.js +2 -2
  322. package/dist/translations/ja.js +2 -2
  323. package/dist/translations/pseudo/ar-XB.js +1 -1
  324. package/dist/translations/pt-BR.js +2 -2
  325. package/dist/translations/ru.js +2 -2
  326. package/dist/translations/zh-CN.js +2 -2
  327. package/dist/vue.d.ts +1 -1
  328. package/llms/components/lr-accordion-item.md +6 -5
  329. package/llms/components/lr-accordion.md +6 -5
  330. package/llms/components/lr-activity-feed.md +6 -5
  331. package/llms/components/lr-agent-run.md +1 -1
  332. package/llms/components/lr-agent-workspace.md +3 -2
  333. package/llms/components/lr-attachment-chip.md +2 -3
  334. package/llms/components/lr-audio-visualizer.md +9 -6
  335. package/llms/components/lr-bar-chart.md +2 -2
  336. package/llms/components/lr-box-plot.md +9 -6
  337. package/llms/components/lr-bubble-chart.md +2 -2
  338. package/llms/components/lr-calendar.md +10 -4
  339. package/llms/components/lr-chart.md +11 -5
  340. package/llms/components/lr-chat-composer.md +2 -1
  341. package/llms/components/lr-chunk-inspector.md +2 -2
  342. package/llms/components/lr-code-block-core.md +4 -4
  343. package/llms/components/lr-code-block.md +10 -14
  344. package/llms/components/lr-code-editor.md +2 -0
  345. package/llms/components/lr-copy-button.md +4 -1
  346. package/llms/components/lr-data-grid.md +11 -2
  347. package/llms/components/lr-date-input.md +4 -0
  348. package/llms/components/lr-date-picker.md +5 -1
  349. package/llms/components/lr-details.md +6 -5
  350. package/llms/components/lr-diff-view.md +6 -0
  351. package/llms/components/lr-document-compare.md +6 -2
  352. package/llms/components/lr-document-preview.md +11 -3
  353. package/llms/components/lr-document-viewer.md +5 -1
  354. package/llms/components/lr-docx-viewer.md +6 -0
  355. package/llms/components/lr-doughnut-chart.md +2 -2
  356. package/llms/components/lr-ebook-viewer.md +8 -3
  357. package/llms/components/lr-email-viewer.md +5 -0
  358. package/llms/components/lr-eval-dataset.md +2 -2
  359. package/llms/components/lr-export-button.md +9 -0
  360. package/llms/components/lr-file-input.md +5 -8
  361. package/llms/components/lr-format-date.md +3 -1
  362. package/llms/components/lr-graph-legend.md +4 -2
  363. package/llms/components/lr-grounding-summary.md +8 -8
  364. package/llms/components/lr-histogram.md +2 -2
  365. package/llms/components/lr-ingestion-queue.md +1 -1
  366. package/llms/components/lr-intersection-observer.md +9 -0
  367. package/llms/components/lr-json-viewer.md +6 -1
  368. package/llms/components/lr-knowledge-base.md +10 -1
  369. package/llms/components/lr-line-chart.md +2 -2
  370. package/llms/components/lr-lite-chart.md +8 -5
  371. package/llms/components/lr-locale-picker.md +6 -0
  372. package/llms/components/lr-map.md +15 -5
  373. package/llms/components/lr-markdown.md +7 -4
  374. package/llms/components/lr-media-card.md +0 -6
  375. package/llms/components/lr-mention-popover.md +12 -10
  376. package/llms/components/lr-message-actions.md +10 -3
  377. package/llms/components/lr-message-feedback.md +20 -7
  378. package/llms/components/lr-message-parts.md +3 -1
  379. package/llms/components/lr-model-select.md +5 -2
  380. package/llms/components/lr-multi-split.md +5 -1
  381. package/llms/components/lr-mutation-observer.md +8 -0
  382. package/llms/components/lr-node-palette.md +5 -2
  383. package/llms/components/lr-pie-chart.md +2 -2
  384. package/llms/components/lr-polar-area-chart.md +2 -2
  385. package/llms/components/lr-prompt-input.md +7 -3
  386. package/llms/components/lr-prompt-queue.md +6 -0
  387. package/llms/components/lr-push-to-talk.md +5 -0
  388. package/llms/components/lr-qr-code.md +6 -0
  389. package/llms/components/lr-radar-chart.md +2 -2
  390. package/llms/components/lr-rating.md +5 -0
  391. package/llms/components/lr-relative-time.md +2 -0
  392. package/llms/components/lr-result-card.md +3 -3
  393. package/llms/components/lr-result-field.md +3 -3
  394. package/llms/components/lr-retrieval-results.md +1 -1
  395. package/llms/components/lr-scatter-chart.md +2 -2
  396. package/llms/components/lr-scroller.md +5 -5
  397. package/llms/components/lr-sequence-playback.md +1 -2
  398. package/llms/components/lr-slider.md +3 -1
  399. package/llms/components/lr-streaming-text.md +2 -3
  400. package/llms/components/lr-terminal.md +14 -5
  401. package/llms/components/lr-thinking-panel.md +3 -1
  402. package/llms/components/lr-thread-list.md +20 -1
  403. package/llms/components/lr-tool-call-chip.md +2 -2
  404. package/llms/components/lr-tool-param-form.md +2 -2
  405. package/llms/components/lr-tool-result-view.md +2 -3
  406. package/llms/components/lr-tool-select-dialog.md +2 -2
  407. package/llms/components/lr-voice-picker.md +7 -2
  408. package/llms/components/lr-widget-renderer.md +12 -13
  409. package/llms/peers.md +5 -5
  410. package/llms/shared.md +74 -63
  411. package/llms-full.txt +629 -247
  412. package/package.json +21 -14
  413. package/vscode-css-data.json +1 -1
  414. package/vscode-html-data.json +1 -1
  415. package/web-types.json +1 -1
  416. package/dist/components/viewers/docx-viewer/fixtures/minimal-docx-fixture.d.ts +0 -1
  417. package/dist/components/viewers/docx-viewer/fixtures/minimal-docx-fixture.js +0 -1
  418. package/dist/components/viewers/ebook-viewer/fixtures/minimal-epub-fixture.d.ts +0 -1
  419. package/dist/components/viewers/ebook-viewer/fixtures/minimal-epub-fixture.js +0 -1
  420. package/dist/components/viewers/spreadsheet-viewer/fixtures/minimal-xlsx-fixture.d.ts +0 -1
  421. package/dist/components/viewers/spreadsheet-viewer/fixtures/minimal-xlsx-fixture.js +0 -1
@@ -1,5 +1,5 @@
1
- var __decorate=function(decorators,target,key,desc){var c=arguments.length,r=c<3?target:desc===null?desc=Object.getOwnPropertyDescriptor(target,key):desc,d;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")r=Reflect.decorate(decorators,target,key,desc);else for(var i=decorators.length-1;i>=0;i--)(d=decorators[i])&&(r=(c<3?d(r):c>3?d(target,key,r):d(target,key))||r);return c>3&&r&&Object.defineProperty(target,key,r),r};import{html,nothing}from"lit";import{property,query,state}from"lit/decorators.js";import{styleMap}from"lit/directives/style-map.js";import{LyraElement}from"../../../internal/lyra-element.js";import{specialistTokens}from"../../../internal/specialist-tokens.styles.js";import{nextId,srOnly}from"../../../internal/a11y.js";import{prefersReducedMotion}from"../../../internal/motion.js";import{ThemeWatcher}from"../../../internal/theme-watcher.js";import{loadChartJs}from"./chart-core-loader.js";import{loadChartJsWithZoom,loadChartJsWithZoomResult,loadChartJsWithDataLabelsResult,loadChartJsWithAnnotationResult}from"./chart-feature-loader.js";import{styles}from"./chart.styles.js";import"../../overlays/skeleton/skeleton.class.js";import{getListFormat,getNumberFormat}from"../../../internal/intl-cache.js";import{escapeCsvField}from"../../utility/export-button/csv.js";import{trueDefaultBooleanFromAttributeConverter as trueDefaultBooleanConverter}from"../../../internal/converters.js";import{finiteAdd,finiteNumber}from"../../../internal/numbers.js";import{sanitizeCssLength}from"../../../internal/safe-css.js";import{acquireAnnouncementSink}from"../../../internal/announcer.js";import{resolveCanvasColor,resolveCanvasColors,seriesPalette,translucentAreaColor}from"./chart-colors.js";import{createForcedColorPattern,forcedColorEncoding,forcedColorsActive}from"./chart-forced-colors.js";import{legendVisibilityDetail,normalizeHiddenDatasets}from"./chart-legend-visibility.js";import{sampleChartTableIndexes}from"./chart-table-sampling.js";import{LYRA_DEFAULT_chart,LYRA_DEFAULT_chartAnnotationsUnavailable,LYRA_DEFAULT_chartAxisTotal,LYRA_DEFAULT_chartBubblePointCoordinates,LYRA_DEFAULT_chartCategory,LYRA_DEFAULT_chartData,LYRA_DEFAULT_chartDataLabelsUnavailable,LYRA_DEFAULT_chartDataSampled,LYRA_DEFAULT_chartLabeledPoint,LYRA_DEFAULT_chartMissingLibrary,LYRA_DEFAULT_chartPointCoordinates,LYRA_DEFAULT_chartPointLabel,LYRA_DEFAULT_chartPrimaryAxis,LYRA_DEFAULT_chartSecondaryAxis,LYRA_DEFAULT_chartSeriesLabel,LYRA_DEFAULT_chartSeriesNoData,LYRA_DEFAULT_chartStackTotalsUnavailable,LYRA_DEFAULT_chartSummary,LYRA_DEFAULT_chartSummaryEmpty,LYRA_DEFAULT_chartSummarySeparator,LYRA_DEFAULT_chartSummaryWithData,LYRA_DEFAULT_chartTotal,LYRA_DEFAULT_chartTrendDecreasing,LYRA_DEFAULT_chartTrendFlat,LYRA_DEFAULT_chartTrendIncreasing,LYRA_DEFAULT_chartTypeBar,LYRA_DEFAULT_chartTypeBubble,LYRA_DEFAULT_chartTypeDoughnut,LYRA_DEFAULT_chartTypeLine,LYRA_DEFAULT_chartTypePie,LYRA_DEFAULT_chartTypePolarArea,LYRA_DEFAULT_chartTypeRadar,LYRA_DEFAULT_chartTypeScatter,LYRA_DEFAULT_chartValueLabel,LYRA_DEFAULT_chartZoomUnavailable,LYRA_DEFAULT_collapse,LYRA_DEFAULT_details,LYRA_DEFAULT_liteChartMarkSummary,LYRA_DEFAULT_loading,LYRA_DEFAULT_map,LYRA_DEFAULT_navigation,LYRA_DEFAULT_noData,LYRA_DEFAULT_open,LYRA_DEFAULT_popover,LYRA_DEFAULT_resetZoom,LYRA_DEFAULT_search,LYRA_DEFAULT_select}from"../../../internal/default-strings.generated.js";import{seriesPalette as seriesPalette2}from"./chart-colors.js";const CHART_TYPES=new Set(["line","bar","scatter","pie","doughnut","radar","polarArea","bubble"]),CHART_TYPE_MESSAGE_KEYS={line:"chartTypeLine",bar:"chartTypeBar",scatter:"chartTypeScatter",pie:"chartTypePie",doughnut:"chartTypeDoughnut",radar:"chartTypeRadar",polarArea:"chartTypePolarArea",bubble:"chartTypeBubble"};function normalizeChartType(value){return typeof value=="string"&&CHART_TYPES.has(value)?value:"bar"}function normalizeChartGrid(value){return value==="x"||value==="y"||value==="none"||value==="both"?value:"both"}function normalizeLegendPosition(value){return value==="left"||value==="top"||value==="right"||value==="bottom"||value==="center"||value==="chartArea"||value==="start"||value==="end"||value==="auto"||isPlainObject(value)&&Object.values(value).every(candidate=>typeof candidate=="number"&&Number.isFinite(candidate))?value:"top"}function isPlainObject(value){return typeof value=="object"&&value!==null&&!Array.isArray(value)}function isChartSeriesRecord(value){try{return isPlainObject(value)}catch{return!1}}function normalizeChartSeries(value){try{return Object.freeze(Array.isArray(value)?value.filter(isChartSeriesRecord):[])}catch{return Object.freeze([])}}const UNSAFE_KEYS=new Set(["__proto__","constructor","prototype"]),FALLBACK_GRID_COLOR="#8a8a90",FALLBACK_TICK_COLOR="#6b7280",FALLBACK_LEGEND_COLOR="#1a1a1a",FALLBACK_TOOLTIP_BG="#fff",FALLBACK_TOOLTIP_TEXT="#1a1a1a";function deepMerge(base,override,seen=new WeakMap){if(typeof override=="object"&&override!==null){const previous=seen.get(override);if(previous!==void 0)return previous}if(!isPlainObject(base)||!isPlainObject(override))return override===void 0?base:override;const result={...base};seen.set(override,result);try{for(const key of Object.keys(override))UNSAFE_KEYS.has(key)||(result[key]=deepMerge(base[key],override[key],seen))}finally{seen.delete(override)}return result}function isChartPoint(value){return isPlainObject(value)?Number.isFinite(value.x)&&Number.isFinite(value.y):!1}function normalizedChartPoint(value){if(!isChartPoint(value))return null;const radius=value.r;return{x:value.x,y:value.y,...typeof radius=="number"&&Number.isFinite(radius)&&radius>=0?{r:radius}:{},...typeof value.label=="string"?{label:value.label}:{}}}function nonNegativeFinite(value,fallback){return typeof value=="number"&&Number.isFinite(value)&&value>=0?value:fallback}function labelText(value){return value==null?"":Array.isArray(value)?value.map(labelText).join(" "):String(value)}class LyraChart extends LyraElement{static{this.defaultStrings={...super.defaultStrings,chart:LYRA_DEFAULT_chart,chartAnnotationsUnavailable:LYRA_DEFAULT_chartAnnotationsUnavailable,chartAxisTotal:LYRA_DEFAULT_chartAxisTotal,chartBubblePointCoordinates:LYRA_DEFAULT_chartBubblePointCoordinates,chartCategory:LYRA_DEFAULT_chartCategory,chartData:LYRA_DEFAULT_chartData,chartDataLabelsUnavailable:LYRA_DEFAULT_chartDataLabelsUnavailable,chartDataSampled:LYRA_DEFAULT_chartDataSampled,chartLabeledPoint:LYRA_DEFAULT_chartLabeledPoint,chartMissingLibrary:LYRA_DEFAULT_chartMissingLibrary,chartPointCoordinates:LYRA_DEFAULT_chartPointCoordinates,chartPointLabel:LYRA_DEFAULT_chartPointLabel,chartPrimaryAxis:LYRA_DEFAULT_chartPrimaryAxis,chartSecondaryAxis:LYRA_DEFAULT_chartSecondaryAxis,chartSeriesLabel:LYRA_DEFAULT_chartSeriesLabel,chartSeriesNoData:LYRA_DEFAULT_chartSeriesNoData,chartStackTotalsUnavailable:LYRA_DEFAULT_chartStackTotalsUnavailable,chartSummary:LYRA_DEFAULT_chartSummary,chartSummaryEmpty:LYRA_DEFAULT_chartSummaryEmpty,chartSummarySeparator:LYRA_DEFAULT_chartSummarySeparator,chartSummaryWithData:LYRA_DEFAULT_chartSummaryWithData,chartTotal:LYRA_DEFAULT_chartTotal,chartTrendDecreasing:LYRA_DEFAULT_chartTrendDecreasing,chartTrendFlat:LYRA_DEFAULT_chartTrendFlat,chartTrendIncreasing:LYRA_DEFAULT_chartTrendIncreasing,chartTypeBar:LYRA_DEFAULT_chartTypeBar,chartTypeBubble:LYRA_DEFAULT_chartTypeBubble,chartTypeDoughnut:LYRA_DEFAULT_chartTypeDoughnut,chartTypeLine:LYRA_DEFAULT_chartTypeLine,chartTypePie:LYRA_DEFAULT_chartTypePie,chartTypePolarArea:LYRA_DEFAULT_chartTypePolarArea,chartTypeRadar:LYRA_DEFAULT_chartTypeRadar,chartTypeScatter:LYRA_DEFAULT_chartTypeScatter,chartValueLabel:LYRA_DEFAULT_chartValueLabel,chartZoomUnavailable:LYRA_DEFAULT_chartZoomUnavailable,collapse:LYRA_DEFAULT_collapse,details:LYRA_DEFAULT_details,liteChartMarkSummary:LYRA_DEFAULT_liteChartMarkSummary,loading:LYRA_DEFAULT_loading,map:LYRA_DEFAULT_map,navigation:LYRA_DEFAULT_navigation,noData:LYRA_DEFAULT_noData,open:LYRA_DEFAULT_open,popover:LYRA_DEFAULT_popover,resetZoom:LYRA_DEFAULT_resetZoom,search:LYRA_DEFAULT_search,select:LYRA_DEFAULT_select}}static{this.immutableEventDetails=Object.freeze(["lr-before-legend-visibility-change","lr-legend-visibility-change"])}static{this.styles=[LyraElement.styles,specialistTokens,styles,srOnly]}constructor(){super(),this.type="bar",this.labels=[],this._datasets=Object.freeze([]),this.datasetsSource=this._datasets,this.description=null,this.grid="both",this.indexAxis="x",this.label=null,this.legendPosition="top",this.scaleType="linear",this.annotations=[],this.max=null,this.min=null,this.plugins=[],this.area=!1,this.zoom=!1,this.height="280px",this.xLabel=null,this.yLabel=null,this.y2Label="",this.beginAtZero=!0,this.showDataTable=!1,this.dataTableToggle=!1,this.dataTableExpandedOverride=null,this.dataTableId=nextId("chart-data-table"),this.stacked=!1,this.withoutAnimation=!1,this.withoutLegend=!1,this.withoutTooltip=!1,this.dataLabels=!1,this.stackTotals=!1,this.loading=!0,this.loadFailed=!1,this.loadLibrary=withZoom=>withZoom?loadChartJsWithZoom():loadChartJs(),this.loadZoomFeature=()=>loadChartJsWithZoomResult(),this.loadDataLabelsFeature=()=>loadChartJsWithDataLabelsResult(),this.loadAnnotationFeature=()=>loadChartJsWithAnnotationResult(),this.loadGeneration=0,this.zoomLoadGeneration=0,this.dataLabelsLoadGeneration=0,this.annotationLoadGeneration=0,this.zoomFeatureState="idle",this.dataLabelsFeatureState="idle",this.annotationFeatureState="idle",this.zoomed=!1,this.visible=!0,this.intersectionGeneration=0,this.autoLegendPosition="right",this.chartAreaUpdateQueued=!1,this.builtPlugins=[],this.suppressZoomComplete=!1,this.descriptionId=nextId("chart-description"),this.keyboardDatumIndex=0,this.keyboardDatumAnnouncement="",this.lastDataTruncationAnnouncement="",this.isMounting=!0,this.announcedFeatureWarnings=new Set,this.onReducedMotionChange=()=>{!this.isConnected||this.ownerWindow!==this.reducedMotionWindow||this.drawIfVisible()},new ThemeWatcher(this,()=>{this.chart&&this.refreshTheme()})}get datasets(){return this._datasets}set datasets(value){if(Object.is(value,this.datasetsSource)||Object.is(value,this._datasets))return;const previous=this._datasets;this._datasets=normalizeChartSeries(value),this.datasetsSource=value,this.requestUpdate("datasets",previous)}get dataTableVisible(){return this.dataTableToggle?this.dataTableExpandedOverride??this.showDataTable:this.showDataTable}toggleDataTable(){this.dataTableExpandedOverride=!this.dataTableVisible}normalizeEffectiveConfig(config){return config}effectiveConfig(){return this.normalizeEffectiveConfig(this.config??this.slottedConfig)}onConfigSlotChange(event){const script=event.currentTarget.assignedElements({flatten:!0}).find(element=>element.localName==="script"&&element.type.trim().toLowerCase()==="application/json");let next;if(script)try{const parsed=JSON.parse(script.textContent??"");isPlainObject(parsed)&&(next=parsed)}catch{next=void 0}this.slottedConfig=next}effectiveData(){const generated={labels:this.labels,datasets:this.datasets.map(series=>({...series,data:[...series.points??series.data??[]],yAxisID:series.axis==="y2"?"y2":"y"}))},override=this.effectiveConfig()?.data,merged=isPlainObject(override)?deepMerge(generated,override):generated;return{labels:Array.isArray(merged.labels)?merged.labels:[],datasets:Array.isArray(merged.datasets)?merged.datasets.filter(isPlainObject):[]}}effectiveHiddenDatasetIndexes(){const effective=this.effectiveData(),controlled=normalizeHiddenDatasets(this.hiddenDatasets,effective.datasets.length);return controlled!==void 0?controlled:effective.datasets.flatMap((dataset,index)=>dataset.hidden===!0?[index]:[])}applyDatasetVisibility(){if(!this.chart)return!1;const datasetCount=this.chart.data.datasets?.length??0,sourceDatasetCount=this.effectiveData().datasets.length,controlled=normalizeHiddenDatasets(this.hiddenDatasets,sourceDatasetCount);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++){const sourceIndex=this.visualDatasetSourceIndexes?.[index]??index;this.chart.setDatasetVisibility(index,!hidden.has(sourceIndex))}return datasetCount>0}hasExplicitConfigData(){const config=this.effectiveConfig();return isPlainObject(config)&&Object.prototype.hasOwnProperty.call(config,"data")}datasetLabel(dataset,index){return labelText(dataset.label)||this.localize("chartPointLabel",void 0,{n:getNumberFormat(this.effectiveLocale).format(index+1)})}datasetValues(dataset){return Array.isArray(dataset.data)?dataset.data:[]}isPointDataset(dataset){const values=this.datasetValues(dataset);return this.effectiveType()==="scatter"||this.effectiveType()==="bubble"||values.some(isChartPoint)}appendData(label,values,maxPoints=0){const limit=Number.isFinite(maxPoints)?Math.max(0,Math.floor(maxPoints)):0;if(this.hasExplicitConfigData()){const effective=this.effectiveData();let domainLength2=effective.labels.length;for(const dataset of effective.datasets)this.isPointDataset(dataset)||(domainLength2=Math.max(domainLength2,this.datasetValues(dataset).length));const labels2=[...effective.labels,...Array.from({length:Math.max(0,domainLength2-effective.labels.length)},()=>""),label],effectiveConfig=this.effectiveConfig(),currentData=isPlainObject(effectiveConfig?.data)?effectiveConfig.data:{},explicitLabels=Array.isArray(currentData.labels),explicitDatasets=Array.isArray(currentData.datasets),nextLabels=limit>0?labels2.slice(-limit):labels2;if(explicitLabels||(this.labels=nextLabels.map(labelText)),!explicitDatasets){const datasets2=this.datasets.map((series,index)=>{if(series.points)return series;const current=series.data??[],data=[...current,...Array.from({length:Math.max(0,domainLength2-current.length)},()=>null),values[index]??null];return{...series,data:limit>0?data.slice(-limit):data}});this.datasets=datasets2}if(explicitLabels||explicitDatasets){const nextData={...currentData};explicitLabels&&(nextData.labels=nextLabels),explicitDatasets&&(nextData.datasets=effective.datasets.map((dataset,index)=>{if(this.isPointDataset(dataset))return dataset;const current=this.datasetValues(dataset),data=[...current,...Array.from({length:Math.max(0,domainLength2-current.length)},()=>null),values[index]??null];return{...dataset,data:limit>0?data.slice(-limit):data}})),this.config={...effectiveConfig,data:nextData}}return}let domainLength=this.labels.length;for(const series of this.datasets)series.points||(domainLength=Math.max(domainLength,series.data?.length??0));const labels=[...this.labels,...Array.from({length:Math.max(0,domainLength-this.labels.length)},()=>""),label],datasets=this.datasets.map((series,index)=>series.points?series:{...series,data:[...series.data??[],...Array.from({length:Math.max(0,domainLength-(series.data?.length??0))},()=>null),values[index]??null]});this.labels=limit>0?labels.slice(-limit):labels,this.datasets=limit>0?datasets.map(series=>series.points?series:{...series,data:series.data?.slice(-limit)}):datasets}exportData(format){if(format==="png")return this.chart?.toBase64Image?.()??"";const effective=this.effectiveData(),columns=effective.datasets.map((dataset,datasetIndex)=>{const values=this.datasetValues(dataset),label=this.datasetLabel(dataset,datasetIndex),points=values.filter(isChartPoint);return{dataset,label,point:this.isPointDataset(dataset),radius:points.some(point=>point.r!=null),pointLabel:points.some(point=>point.label!=null)}}),header=["label",...columns.flatMap(column=>column.point?[`${column.label} x`,`${column.label} y`,...column.radius?[`${column.label} r`]:[],...column.pointLabel?[`${column.label} label`]:[]]:[column.label])].map(escapeCsvField).join(",");let rowCount=effective.labels.length;for(const dataset of effective.datasets)rowCount=Math.max(rowCount,this.datasetValues(dataset).length);const exportCell=value=>typeof value!="number"||!Number.isFinite(value)?value??"":this.formatExportValue(value)??value,rows=Array.from({length:rowCount},(_,index)=>{const firstPoint=effective.datasets.map(dataset=>this.datasetValues(dataset)[index]).find(isChartPoint);return[labelText(effective.labels[index])||firstPoint?.label||"",...columns.flatMap(column=>{const value=this.datasetValues(column.dataset)[index];return column.point?isChartPoint(value)?[exportCell(value.x),exportCell(value.y),...column.radius?[value.r==null?"":exportCell(value.r)]:[],...column.pointLabel?[value.label??""]:[]]:["","",...column.radius?[""]:[],...column.pointLabel?[""]:[]]:[exportCell(value)]})].map(escapeCsvField).join(",")});return[header,...rows].join(`\r
2
- `)}connectedCallback(){super.connectedCallback(),this.syncAnnouncementSinks(),this.visible=!0,this.armReducedMotionWatcher();const ownerWindow=this.ownerWindow,ResizeObserverCtor=ownerWindow?.ResizeObserver;ResizeObserverCtor&&(this.resizeObserver=new ResizeObserverCtor(entries=>{const width=entries[0]?.contentRect.width??this.getBoundingClientRect().width;if(Number.isFinite(width)&&this.lastObservedInlineSize!==void 0&&Math.abs(width-this.lastObservedInlineSize)<.5||(this.lastObservedInlineSize=width,this.resizeDrawFrame!==void 0))return;const frameOwner=this.ownerWindow;frameOwner&&(this.resizeDrawFrameOwner=frameOwner,this.resizeDrawFrame=frameOwner.requestAnimationFrame(()=>{this.resizeDrawFrame=void 0,this.resizeDrawFrameOwner=void 0,!(!this.isConnected||this.ownerWindow!==frameOwner)&&(this.updateAutoLegendPosition()||this.drawIfVisible())}))}),this.resizeObserver.observe(this)),this.updateAutoLegendPosition();const generation=++this.loadGeneration;this.zoom&&this.requestZoomFeature(),this.loadLibrary(this.zoom).then(async mod=>{try{await this.updateComplete}catch{return}if(await new Promise(resolve=>this.updateBrowserDerivedState(resolve)),!(generation!==this.loadGeneration||!this.isConnected)){if(this.loading=!1,!mod){this.loadFailed=!0;return}this.loadFailed=!1,this.chartJsModule=mod,this.drawIfVisible()}}),this.needsDataLabels&&this.requestDataLabelsFeature(),this.needsAnnotations&&this.requestAnnotationFeature();const IntersectionObserverCtor=ownerWindow?.IntersectionObserver;if(IntersectionObserverCtor){const 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)}}disconnectedCallback(){super.disconnectedCallback(),this.releaseAnnouncementSinks(),this.lastDataTruncationAnnouncement="",this.isMounting=!0,this.announcedFeatureWarnings.clear(),this.resizeObserver?.disconnect(),this.resizeObserver=void 0,this.resizeDrawFrame!==void 0&&this.resizeDrawFrameOwner?.cancelAnimationFrame(this.resizeDrawFrame),this.resizeDrawFrame=void 0,this.resizeDrawFrameOwner=void 0,this.lastObservedInlineSize=void 0,this.loadGeneration+=1,this.zoomLoadGeneration+=1,this.dataLabelsLoadGeneration+=1,this.annotationLoadGeneration+=1,this.discardChart(!1),this.builtPlugins=[],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}computedStyle(element=this){const view=this.ownerWindow;return view?view.getComputedStyle(element):"style"in element?element.style:this.style}applyDataLabelsPlugin(plugin){this.dataLabelsPlugin=plugin;let rebuilt=!1;plugin&&this.needsDataLabels&&this.chart&&(this.discardChart(!0),this.builtType=void 0,this.builtPlugins=[],rebuilt=!0),this.drawIfVisible(),rebuilt&&this.showsLegend&&this.requestUpdate()}get zoomFeatureAvailable(){return this.zoom&&this.zoomFeatureState==="available"}featureWarningMessages(){if(this.loading||this.loadFailed)return[];const messages=[];return this.zoom&&this.zoomFeatureState==="unavailable"&&messages.push(this.localize("chartZoomUnavailable")),this.dataLabelsFeatureState==="unavailable"&&(this.dataLabels&&messages.push(this.localize("chartDataLabelsUnavailable")),this.stackTotals&&messages.push(this.localize("chartStackTotalsUnavailable"))),this.needsAnnotations&&this.annotationFeatureState==="unavailable"&&messages.push(this.localize("chartAnnotationsUnavailable")),messages}requestZoomFeature(){const generation=++this.zoomLoadGeneration;if(!this.zoom){this.zoomFeatureState="idle";return}this.zoomFeatureState="loading",this.loadZoomFeature().then(result=>{generation!==this.zoomLoadGeneration||!this.isConnected||!this.zoom||(this.zoomFeatureState=result.kind==="available"?"available":"unavailable",result.kind!=="core-unavailable"&&!this.loading&&!this.chartJsModule&&(this.chartJsModule=result.mod),this.drawIfVisible(),this.requestUpdate())})}requestAnnotationFeature(){const generation=++this.annotationLoadGeneration;if(!this.needsAnnotations){this.annotationFeatureState="idle";return}this.annotationFeatureState="loading",this.loadAnnotationFeature().then(result=>{generation!==this.annotationLoadGeneration||!this.isConnected||!this.needsAnnotations||(result.kind!=="core-unavailable"&&!this.loading&&!this.chartJsModule&&(this.chartJsModule=result.mod),this.annotationFeatureState=result.kind==="available"?"available":"unavailable",this.applyAnnotationPlugin(result.kind==="available"?result.plugin:void 0),this.requestUpdate())})}applyAnnotationPlugin(plugin){this.annotationPlugin=plugin,plugin&&this.needsAnnotations&&this.chart&&(this.discardChart(!0),this.builtType=void 0,this.builtPlugins=[]),this.drawIfVisible()}requestDataLabelsFeature(){const generation=++this.dataLabelsLoadGeneration;if(!this.needsDataLabels){this.dataLabelsFeatureState="idle";return}this.dataLabelsFeatureState="loading",this.loadDataLabelsFeature().then(result=>{generation!==this.dataLabelsLoadGeneration||!this.isConnected||!this.needsDataLabels||(this.dataLabelsFeatureState=result.kind==="available"?"available":"unavailable",result.kind!=="core-unavailable"&&!this.loading&&!this.chartJsModule&&(this.chartJsModule=result.mod),this.applyDataLabelsPlugin(result.kind==="available"?result.plugin:void 0),this.requestUpdate())})}willUpdate(changed){super.willUpdate(changed),this.zoomed&&this.effectiveType()!==this.builtType&&(this.zoomed=!1,this.emit("lr-zoom",{zoomed:!1}))}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("chartMissingLibrary"));const dataTruncation=this.dataTruncationMessage();if(wasMounting&&(this.lastDataTruncationAnnouncement=dataTruncation),!this.loading&&!this.loadFailed){const featureWarnings=this.featureWarningMessages();for(const warning of featureWarnings)this.announcedFeatureWarnings.has(warning)||this.assertiveAnnouncementSink?.announce(warning);this.announcedFeatureWarnings=new Set(featureWarnings),!wasMounting&&dataTruncation!==this.lastDataTruncationAnnouncement&&(this.lastDataTruncationAnnouncement=dataTruncation,dataTruncation&&this.politeAnnouncementSink?.announce(dataTruncation))}if(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;changed.has("zoom")&&this.requestZoomFeature(),(changed.has("dataLabels")||changed.has("stackTotals"))&&this.requestDataLabelsFeature(),changed.has("annotations")&&this.requestAnnotationFeature();const contentChanged=this.chartContentChanged(changed),effectiveDirection=this.effectiveDirection,effectiveLocale=this.effectiveLocale,contextChanged=this.lastDrawnDirection!==void 0&&this.lastDrawnDirection!==effectiveDirection||this.lastDrawnLocale!==void 0&&this.lastDrawnLocale!==effectiveLocale;this.lastDrawnDirection=effectiveDirection,this.lastDrawnLocale=effectiveLocale,!(!contentChanged&&!contextChanged)&&this.drawIfVisible()}chartContentChanged(changed){return["type","labels","datasets","hiddenDatasets","description","grid","indexAxis","label","legendPosition","min","max","scaleType","annotations","plugins","autoLegendPosition","valueFormatter","formatter","area","height","xLabel","yLabel","y2Label","beginAtZero","stacked","withoutAnimation","withoutLegend","withoutTooltip","dataLabels","stackTotals","config","slottedConfig","zoom","locale","strings","loading"].some(name=>changed.has(name))}seriesToDataset(s,index,palette,effectiveType,chartStyle=this.chartStyleOptions(palette),rowIndexes){const fullNormalizedData=s.points?s.points.map(normalizedChartPoint):(s.data??[]).map(value=>typeof value=="number"&&Number.isFinite(value)?value:null),normalizedData=rowIndexes?rowIndexes.map(rowIndex=>fullNormalizedData[rowIndex]??null):fullNormalizedData,borderFallback=chartStyle.borderColors[index%chartStyle.borderColors.length]??palette[index%palette.length],fillFallback=chartStyle.fillColors[index%chartStyle.fillColors.length]??palette[index%palette.length],authoredColors=Array.isArray(s.color)&&rowIndexes?rowIndexes.map(rowIndex=>s.color[rowIndex]??""):s.color,colors=typeof authoredColors=="string"?[resolveCanvasColor(this,authoredColors,borderFallback??"transparent")]:authoredColors?resolveCanvasColors(this,authoredColors,borderFallback??"transparent"):void 0,sliceChart=effectiveType==="pie"||effectiveType==="doughnut"||effectiveType==="polarArea",sliceFillColors=sliceChart&&chartStyle.fillColors.length?normalizedData.map((_,itemIndex)=>{const sourceIndex=rowIndexes?.[itemIndex]??itemIndex;return chartStyle.fillColors[sourceIndex%chartStyle.fillColors.length]}):void 0,sliceBorderColors=sliceChart&&chartStyle.borderColors.length?normalizedData.map((_,itemIndex)=>{const sourceIndex=rowIndexes?.[itemIndex]??itemIndex;return chartStyle.borderColors[sourceIndex%chartStyle.borderColors.length]}):void 0,fill=s.fill??this.area,backgroundColor=colors??sliceFillColors??fillFallback,datasetType=s.type??effectiveType,authoredSegmentColors=s.segmentColors&&rowIndexes?rowIndexes.map(rowIndex=>s.segmentColors[rowIndex]??""):s.segmentColors,segmentColors=authoredSegmentColors?resolveCanvasColors(this,authoredSegmentColors,colors?.[0]??borderFallback??"transparent"):void 0,authoredPointColors=s.pointColors&&rowIndexes?rowIndexes.map(rowIndex=>s.pointColors[rowIndex]??""):s.pointColors,resolvedBackgroundColor=datasetType==="line"&&fill&&(colors||!chartStyle.authoredFillColors[index%chartStyle.authoredFillColors.length])?Array.isArray(backgroundColor)?backgroundColor.map(color=>translucentAreaColor(this,color)):backgroundColor&&translucentAreaColor(this,backgroundColor):backgroundColor,encoding=forcedColorEncoding(index),encodedBackgroundColor=chartStyle.forcedColors?Array.isArray(resolvedBackgroundColor)?resolvedBackgroundColor.map((color,itemIndex)=>this.forcedColorPattern(sliceChart?itemIndex:index,color)):resolvedBackgroundColor&&this.forcedColorPattern(index,resolvedBackgroundColor):resolvedBackgroundColor,pointRadii=Array.isArray(s.pointRadius)?s.pointRadius:void 0;return{label:s.label,data:normalizedData,type:s.type,fill,borderRadius:chartStyle.borderRadius,borderWidth:nonNegativeFinite(s.width,datasetType==="line"?chartStyle.lineBorderWidth:chartStyle.borderWidth),borderDash:s.dash?[4,4]:chartStyle.forcedColors?[...encoding.dash]:void 0,pointStyle:chartStyle.forcedColors?encoding.pointStyle:void 0,backgroundColor:encodedBackgroundColor,borderColor:colors?.[0]??sliceBorderColors??borderFallback,pointBackgroundColor:authoredPointColors?resolveCanvasColors(this,authoredPointColors,colors?.[0]??borderFallback??"transparent"):void 0,pointRadius:pointRadii?(rowIndexes?rowIndexes.map(rowIndex=>pointRadii[rowIndex]):pointRadii).map(radius=>nonNegativeFinite(radius,chartStyle.pointRadius)):nonNegativeFinite(s.pointRadius,chartStyle.pointRadius),...segmentColors?.length?{segment:{borderColor:ctx=>segmentColors[ctx.p0DataIndex%segmentColors.length]}}:{},yAxisID:s.axis==="y2"?"y2":"y"}}themeColors(){const cs=this.computedStyle(),grid=cs.getPropertyValue("--grid-color").trim()||cs.getPropertyValue("--lr-chart-grid-color").trim()||cs.getPropertyValue("--_lr-chart-grid-color").trim(),tick=cs.getPropertyValue("--lr-chart-tick-color").trim()||cs.getPropertyValue("--_lr-chart-tick-color").trim(),legend=cs.getPropertyValue("--lr-chart-legend-color").trim()||cs.getPropertyValue("--_lr-chart-legend-color").trim(),tooltipBg=cs.getPropertyValue("--lr-chart-tooltip-bg").trim()||cs.getPropertyValue("--_lr-chart-tooltip-bg").trim(),tooltipText=cs.getPropertyValue("--lr-chart-tooltip-text").trim()||cs.getPropertyValue("--_lr-chart-tooltip-text").trim();return{grid:resolveCanvasColor(this,grid,FALLBACK_GRID_COLOR),tick:resolveCanvasColor(this,tick,FALLBACK_TICK_COLOR),legend:resolveCanvasColor(this,legend,FALLBACK_LEGEND_COLOR),tooltipBg:resolveCanvasColor(this,tooltipBg,FALLBACK_TOOLTIP_BG),tooltipText:resolveCanvasColor(this,tooltipText,FALLBACK_TOOLTIP_TEXT)}}styleColor(name,fallback){const value=this.computedStyle().getPropertyValue(name).trim();return value?resolveCanvasColor(this,value,fallback):fallback}styleNumber(name,fallbackToken,fallback){const computed=this.computedStyle(),value=computed.getPropertyValue(name).trim()||computed.getPropertyValue(fallbackToken).trim(),direct=/^([+-]?(?:\d+(?:\.\d+)?|\.\d+))(?:px)?$/i.exec(value);if(direct){const resolved=Number.parseFloat(direct[1]);if(Number.isFinite(resolved)&&resolved>=0)return resolved}if(!value||!this.ownerWindow)return fallback;const probe=this.ownerDocument.createElement("span");probe.hidden=!0,probe.setAttribute("aria-hidden","true"),probe.style.inlineSize=value,(this.shadowRoot??this).append(probe);try{const resolved=Number.parseFloat(this.computedStyle(probe).inlineSize);return Number.isFinite(resolved)&&resolved>=0?resolved:fallback}finally{probe.remove()}}forcedColorPattern(index,background){return this.ownerWindow?createForcedColorPattern(this.ownerDocument,index,background,this.styleColor("--lr-color-surface",FALLBACK_TOOLTIP_BG)):background}chartStyleOptions(palette){const computed=this.computedStyle(),authoredFillColors=palette.map((_,index)=>index<6&&!!computed.getPropertyValue(`--fill-color-${index+1}`).trim()),borderColors=palette.map((fallback,index)=>index<6?this.styleColor(`--border-color-${index+1}`,fallback):fallback),fillColors=palette.map((fallback,index)=>index<6?this.styleColor(`--fill-color-${index+1}`,fallback):fallback);return{borderColors,fillColors,authoredFillColors,borderRadius:this.styleNumber("--border-radius","--lr-radius",6),borderWidth:this.styleNumber("--border-width","--lr-border-width-thin",1),gridBorderWidth:this.styleNumber("--grid-border-width","--lr-border-width-thin",1),lineBorderWidth:this.styleNumber("--line-border-width","--lr-border-width-medium",2),pointRadius:this.styleNumber("--point-radius","--lr-space-2xs",4),forcedColors:forcedColorsActive(this.ownerWindow)}}get needsDataLabels(){return this.dataLabels||this.stackTotals}get needsAnnotations(){return this.normalizedAnnotations().length>0}normalizedAnnotations(){const source=Array.isArray(this.annotations)?this.annotations:[],usable=[];for(const entry of source){if(!entry||typeof entry!="object")continue;const{value,from,to}=entry;if(typeof value=="number"&&Number.isFinite(value)){usable.push(entry);continue}typeof from=="number"&&Number.isFinite(from)&&typeof to=="number"&&Number.isFinite(to)&&usable.push(from<=to?entry:{...entry,from:to,to:from})}return usable}annotationColor(tone){const token=`--lr-color-${tone??"neutral"}`,raw=this.computedStyle().getPropertyValue(token).trim();return resolveCanvasColor(this,raw,FALLBACK_TICK_COLOR)}annotationOptions(){const entries={};return this.normalizedAnnotations().forEach((entry,index)=>{const axis=entry.axis==="x"?"x":"y",color=this.annotationColor(entry.tone),label=entry.label?{content:entry.label,display:!0,color:this.themeColors().tick}:void 0;if(typeof entry.value=="number"){entries[`lr-annotation-${index}`]={type:"line",scaleID:axis,value:entry.value,borderColor:color,borderWidth:2,...label?{label}:{}};return}const bounds=axis==="y"?{yMin:entry.from,yMax:entry.to}:{xMin:entry.from,xMax:entry.to};entries[`lr-annotation-${index}`]={type:"box",...bounds,backgroundColor:translucentAreaColor(this,color),borderColor:color,borderWidth:0,...label?{label}:{}}}),entries}datalabelsOptions(theme,effectiveType){if(!this.needsDataLabels)return{display:!1};const datasets=this.effectiveData().datasets,stackTotalsActive=this.stackTotals&&this.stacked&&(effectiveType==="bar"||effectiveType==="line"),topDatasetIndexByAxis=new Map;stackTotalsActive&&datasets.forEach((dataset,index)=>topDatasetIndexByAxis.set(dataset.yAxisID==="y2"||dataset.axis==="y2"?"y2":"y",index));const totalsByAxis=stackTotalsActive?{y:this.computeStackTotals("y"),y2:this.computeStackTotals("y2")}:void 0;return{color:theme.tick,align:stackTotalsActive?"end":"center",anchor:stackTotalsActive?"end":"center",display:context=>{const datasetIndex=context.datasetIndex,dataset=datasets[datasetIndex],axis=dataset?.yAxisID==="y2"||dataset?.axis==="y2"?"y2":"y";return stackTotalsActive?topDatasetIndexByAxis.get(axis)!==datasetIndex?this.dataLabels:totalsByAxis?.[axis][context.dataIndex]==null?this.dataLabels:!0:this.dataLabels},formatter:(value,context)=>{const datasetIndex=context.datasetIndex,dataset=datasets[datasetIndex],axis=dataset?.yAxisID==="y2"||dataset?.axis==="y2"?"y2":"y";if(stackTotalsActive&&topDatasetIndexByAxis.get(axis)===datasetIndex){const total=totalsByAxis?.[axis][context.dataIndex];if(total!=null)return this.formatDataLabel(total)}const numeric=typeof value=="number"?value:Number(value?.y??value);return numeric==null||!Number.isFinite(numeric)?"":this.formatDataLabel(numeric)}}}formatDataLabel(value){if(this.formatter||this.valueFormatter){const formatted=this.formatter?.({value,surface:"visual"})??this.valueFormatter?.(value,"tooltip");if(formatted!=null)return String(formatted)}return value.toLocaleString(this.effectiveLocale)}computeStackTotals(axisId="y"){const effective=this.effectiveData(),members=effective.datasets.filter(dataset=>(dataset.yAxisID==="y2"||dataset.axis==="y2"?"y2":"y")===axisId),categoryCount=members.reduce((max,dataset)=>Math.max(max,this.datasetValues(dataset).length),effective.labels.length),totals=[];for(let i=0;i<categoryCount;i++){let sum=0,any=!1;for(const dataset of members){const value=this.datasetValues(dataset)[i],numeric=isChartPoint(value)?value.y:value;numeric==null||!Number.isFinite(numeric)||(sum=finiteAdd(sum,numeric),any=!0)}totals.push(any?sum:null)}return totals}seriesPalette(){return seriesPalette(this)}tickOptions(theme,kind="value"){return{color:theme.tick,...(this.formatter||this.valueFormatter)&&kind==="value"?{callback:value=>this.formatValue(value,"tick")}:{}}}effectiveIndexAxis(){return this.indexAxis==="y"?"y":"x"}valueScaleType(){return this.scaleType==="logarithmic"?"logarithmic":"linear"}valueBeginAtZero(){return this.valueScaleType()==="logarithmic"?void 0:this.beginAtZero}scaleBounds(){const min=this.min!==null&&Number.isFinite(this.min)?finiteNumber(this.min,0):void 0,max=this.max!==null&&Number.isFinite(this.max)?finiteNumber(this.max,0):void 0;return{...min!==void 0?{min}:{},...max!==void 0?{max}:{}}}gridAxisVisible(axis){const grid=normalizeChartGrid(this.grid);return grid==="both"||grid===axis}buildScales(effectiveType,theme,chartStyle){if(effectiveType==="pie"||effectiveType==="doughnut")return{};if(effectiveType==="radar"||effectiveType==="polarArea")return{r:{beginAtZero:this.beginAtZero,...this.scaleBounds(),ticks:{...this.tickOptions(theme),showLabelBackdrop:!1,z:1},grid:{color:theme.grid,display:this.gridAxisVisible("y"),lineWidth:chartStyle.gridBorderWidth},border:{width:chartStyle.gridBorderWidth},angleLines:{color:theme.grid,display:this.gridAxisVisible("x"),lineWidth:chartStyle.gridBorderWidth},pointLabels:{color:theme.tick}}};const hasY2=this.effectiveData().datasets.some(dataset=>dataset.yAxisID==="y2"||dataset.axis==="y2"),rtl=this.effectiveDirection==="rtl",stacked=this.stacked&&(effectiveType==="bar"||effectiveType==="line"),horizontalCategorical=(effectiveType==="bar"||effectiveType==="line")&&this.effectiveIndexAxis()==="y",xKind=effectiveType==="scatter"||effectiveType==="bubble"||horizontalCategorical?"value":"category",yKind=horizontalCategorical?"category":"value",valueAxis=horizontalCategorical?"x":"y",bounds=this.scaleBounds();return{x:{type:xKind==="value"?this.valueScaleType():"category",beginAtZero:xKind==="value"?this.valueBeginAtZero():void 0,...valueAxis==="x"?bounds:{},title:{display:!!this.xLabel,text:this.xLabel,color:theme.tick},ticks:this.tickOptions(theme,xKind),grid:{color:theme.grid,display:this.gridAxisVisible("x"),lineWidth:chartStyle.gridBorderWidth},border:{width:chartStyle.gridBorderWidth},stacked},y:{type:yKind==="value"?this.valueScaleType():"category",position:rtl?"right":"left",beginAtZero:yKind==="value"?this.valueBeginAtZero():void 0,...valueAxis==="y"?bounds:{},title:{display:!!this.yLabel,text:this.yLabel,color:theme.tick},ticks:this.tickOptions(theme,yKind),grid:{color:theme.grid,display:this.gridAxisVisible("y"),lineWidth:chartStyle.gridBorderWidth},border:{width:chartStyle.gridBorderWidth},stacked},...hasY2?{y2:{type:this.valueScaleType(),position:rtl?"left":"right",...valueAxis==="y"?bounds:{},grid:{drawOnChartArea:!1,color:theme.grid,display:this.gridAxisVisible("y"),lineWidth:chartStyle.gridBorderWidth},border:{width:chartStyle.gridBorderWidth},title:{display:!!this.y2Label,text:this.y2Label,color:theme.tick},ticks:this.tickOptions(theme),stacked}}:{}}}handlePointClick(event,chart){const hit=chart.getElementsAtEventForMode(event,"nearest",{intersect:!0},!0)[0];if(!hit)return;const datasetIndex=this.visualDatasetSourceIndexes?.[hit.datasetIndex]??hit.datasetIndex,index=this.visualRowSourceIndexes?.[hit.index]??hit.index,effective=this.effectiveData(),value=this.datasetValues(effective.datasets[datasetIndex])[index]??null,label=isChartPoint(value)&&value.label!==void 0?value.label:labelText(effective.labels[index])||void 0;this.activateDatum({datasetIndex,index,label,value})}chartDatums(){const chartData=this.chart?.data,labels=chartData?.labels??this.labels,datasets=chartData?.datasets??this.datasets.map(series=>({data:series.points??series.data??[]}));let rowCount=labels.length;for(const dataset of datasets)rowCount=Math.max(rowCount,dataset.data?.length??0);const sample=sampleChartTableIndexes(rowCount,datasets.length),datums=[];return sample.seriesIndexes.forEach(datasetIndex=>{const dataset=datasets[datasetIndex];if(!dataset)return;const values=dataset.data??[];sample.rowIndexes.forEach(index=>{const value=values[index];value!=null&&(typeof value=="number"&&!Number.isFinite(value)||datums.push({datasetIndex:this.visualDatasetSourceIndexes?.[datasetIndex]??datasetIndex,index:this.visualRowSourceIndexes?.[index]??index,label:isChartPoint(value)&&value.label!==void 0?value.label:labelText(labels[index])||void 0,value}))})}),datums}datumDisplayValue(value){if(isChartPoint(value)){const numberFormat=getNumberFormat(this.effectiveLocale),x=numberFormat.format(value.x),y=numberFormat.format(value.y),coordinates=value.r==null?this.localize("chartPointCoordinates",void 0,{x,y}):this.localize("chartBubblePointCoordinates",void 0,{x,y,radius:numberFormat.format(value.r)});return typeof value.label=="string"?this.localize("chartLabeledPoint",void 0,{label:value.label,coordinates}):coordinates}const numeric=typeof value=="number"?value:Number(typeof value=="object"&&value!==null?value.y??value.r??value.x:value);return Number.isFinite(numeric)?this.formatSpokenValue(numeric):String(value)}datumAnnouncement(datum,position,total){const series=String(this.effectiveData().datasets[datum.datasetIndex]?.label??"")||this.localize("chartSeriesLabel");return this.localize("liteChartMarkSummary",void 0,{series,label:datum.label??this.localize("chartPointLabel",void 0,{n:getNumberFormat(this.effectiveLocale).format(datum.index+1)}),value:this.datumDisplayValue(datum.value),index:getNumberFormat(this.effectiveLocale).format(position+1),total:getNumberFormat(this.effectiveLocale).format(total)})}activateDatum(datum){const datums=this.chartDatums(),position=datums.findIndex(candidate=>candidate.datasetIndex===datum.datasetIndex&&candidate.index===datum.index);position>=0&&(this.keyboardDatumIndex=position,this.keyboardDatumAnnouncement=this.datumAnnouncement(datum,position,datums.length));const type=this.effectiveType(),kind=type==="bar"?"bar":type==="pie"||type==="doughnut"||type==="polarArea"?"slice":type==="line"?"segment":"point";this.emit("lr-datum-activate",{...datum,kind}),this.emit("lr-point-click",datum)}onCanvasFocus(){const datums=this.chartDatums();datums.length&&(this.keyboardDatumIndex=Math.min(this.keyboardDatumIndex,datums.length-1),this.keyboardDatumAnnouncement=this.datumAnnouncement(datums[this.keyboardDatumIndex],this.keyboardDatumIndex,datums.length))}onCanvasKeyDown(event){const datums=this.chartDatums();if(!datums.length)return;if(this.keyboardDatumIndex=Math.min(this.keyboardDatumIndex,datums.length-1),event.key==="Enter"||event.key===" "){event.preventDefault(),this.activateDatum(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.datumAnnouncement(datums[next],next,datums.length)}effectiveType(){return this.effectiveConfig()?.type??normalizeChartType(this.type)}localizedChartType(){const type=this.effectiveType(),key=CHART_TYPE_MESSAGE_KEYS[type];return key?this.localize(key):String(type)}formatValue(value,context){const numeric=typeof value=="number"?value:Number(value);return Number.isFinite(numeric)?this.formatter?.({value:numeric,surface:context})??this.valueFormatter?.(numeric,context)??value:value}legendValue(item,chart){const datasetIndex=item.datasetIndex;if(datasetIndex===void 0)return;const data=chart.data.datasets?.[datasetIndex]?.data;if(!data)return;const indexed=typeof item.index=="number"&&Number.isInteger(item.index)?Number(data[item.index]):NaN;if(Number.isFinite(indexed))return indexed;let sum=0,hasValue=!1;for(const datum of data){const value=Number(datum);Number.isFinite(value)&&(sum=finiteAdd(sum,value),hasValue=!0)}return hasValue?sum:void 0}legendLabels(chart){const generateLabels=this.chartJsModule?.defaults?.plugins?.legend?.labels?.generateLabels;return((generateLabels&&chart.legend&&chart.options?generateLabels(chart):void 0)??(chart.data.datasets??[]).map((dataset,index)=>({text:labelText(dataset.label)||String(index+1),datasetIndex:index}))).map(item=>{const value=this.legendValue(item,chart),formatted=this.formatValue(value,"legend");return formatted===value||formatted===void 0?item:{...item,text:this.localize("chartValueLabel",void 0,{label:String(item.text),value:String(formatted)})}})}tooltipLabel(context){const parsed=context.parsed,rawValue=isPlainObject(parsed)?parsed.y??parsed.r??parsed.x:parsed??context.raw,formatted=this.formatValue(rawValue,"tooltip");if(!(formatted===rawValue||formatted===void 0))return context.dataset?.label?this.localize("chartValueLabel",void 0,{label:String(context.dataset.label),value:String(formatted)}):String(formatted)}updateAutoLegendPosition(){const width=this.getBoundingClientRect().width||this.clientWidth,next=width>0&&width<480?"bottom":"right";return next===this.autoLegendPosition?!1:(this.autoLegendPosition=next,!0)}legendPositionForConfig(){const position=normalizeLegendPosition(this.legendPosition);return position==="auto"?this.autoLegendPosition:position==="start"?this.effectiveDirection==="rtl"?"right":"left":position==="end"?this.effectiveDirection==="rtl"?"left":"right":position}legendPositionForLayout(){const position=this.legendPositionForConfig();return position==="top"||position==="right"||position==="left"?position:"bottom"}legendGridPlacement(){const position=normalizeLegendPosition(this.legendPosition);if(position==="auto")return this.autoLegendPosition==="right"?"inline-end":"bottom";if(position==="start")return"inline-start";if(position==="end")return"inline-end";if(position==="top")return"top";const rtl=this.effectiveDirection==="rtl";return position==="left"?rtl?"inline-end":"inline-start":position==="right"?rtl?"inline-start":"inline-end":"bottom"}updateChartArea(chart=this.chart){const area=chart?.chartArea;if(!area)return;const next={top:Number(area.top),left:Number(area.left),right:Number(area.right),bottom:Number(area.bottom),width:Number(area.width),height:Number(area.height)};if(Object.values(next).some(value=>!Number.isFinite(value)))return;const previous=this.resolvedChartArea;previous&&Object.keys(next).every(key=>previous[key]===next[key])||(this.resolvedChartArea=next,this.chartAreaUpdateQueued||(this.chartAreaUpdateQueued=!0,queueMicrotask(()=>{this.chartAreaUpdateQueued=!1,this.isConnected&&this.requestUpdate()})))}get chartArea(){return this.resolvedChartArea}buildConfig(){const theme=this.themeColors(),effectiveType=this.effectiveType(),palette=this.seriesPalette(),chartStyle=this.chartStyleOptions(palette),rawDataEscapeHatch=this.hasExplicitConfigData();let visualRows,visualSeries;if(rawDataEscapeHatch)this.visualRowSourceIndexes=void 0,this.visualDatasetSourceIndexes=void 0;else{let rowCount=this.labels.length;for(const series of this.datasets)rowCount=Math.max(rowCount,(series.points??series.data??[]).length);const sample=sampleChartTableIndexes(rowCount,this.datasets.length);visualRows=sample.rowIndexes.length<rowCount?sample.rowIndexes:void 0,visualSeries=sample.seriesIndexes.length<this.datasets.length?sample.seriesIndexes:void 0,this.visualRowSourceIndexes=visualRows,this.visualDatasetSourceIndexes=visualSeries}const generated={type:effectiveType,data:{labels:visualRows?visualRows.map(index=>this.labels[index]??""):this.labels,datasets:visualSeries?visualSeries.map(sourceIndex=>this.seriesToDataset(this.datasets[sourceIndex],sourceIndex,palette,effectiveType,chartStyle,visualRows)):this.datasets.map((s,i)=>this.seriesToDataset(s,i,palette,effectiveType,chartStyle,visualRows))},...this.plugins.length||this.needsDataLabels&&this.dataLabelsPlugin?{plugins:[...this.plugins,...this.needsDataLabels&&this.dataLabelsPlugin?[this.dataLabelsPlugin]:[]]}:{},options:{locale:this.effectiveLocale,responsive:!0,maintainAspectRatio:!1,indexAxis:this.effectiveIndexAxis(),animation:this.withoutAnimation||prefersReducedMotion(this.ownerWindow)?!1:void 0,interaction:{intersect:!1,mode:effectiveType==="scatter"?"nearest":"index"},onClick:(event,_elements,chart)=>this.handlePointClick(event,chart),plugins:{...this.needsAnnotations&&this.annotationPlugin?{annotation:{annotations:this.annotationOptions()}}:{},legend:{display:!1,position:this.legendPositionForConfig(),labels:{color:theme.legend,...this.formatter||this.valueFormatter?{generateLabels:chart=>this.legendLabels(chart)}:{}}},tooltip:{enabled:!this.withoutTooltip,backgroundColor:theme.tooltipBg,titleColor:theme.tooltipText,bodyColor:theme.tooltipText,...this.formatter||this.valueFormatter?{callbacks:{label:context=>this.tooltipLabel(context)}}:{},filter:item=>!this.effectiveData().datasets[item.datasetIndex]?.noTooltip},zoom:this.zoom&&this.zoomFeatureState!=="unavailable"?{pan:{enabled:!1},zoom:{wheel:{enabled:!0},drag:{enabled:!0},pinch:{enabled:!0},mode:"x",onZoomComplete:()=>{this.suppressZoomComplete||(this.zoomed=!0,this.emit("lr-zoom",{zoomed:!0}))}},limits:{x:{min:"original",max:"original"}}}:void 0,datalabels:this.datalabelsOptions(theme,effectiveType)},onResize:chart=>this.updateChartArea(chart),scales:this.buildScales(effectiveType,theme,chartStyle)}},effectiveConfig=this.effectiveConfig();if(!effectiveConfig)return generated;const merged=deepMerge(generated,effectiveConfig),requiredPlugins=[...this.plugins,...this.needsDataLabels&&this.dataLabelsPlugin?[this.dataLabelsPlugin]:[]];if(requiredPlugins.length){const mergedPlugins=Array.isArray(merged.plugins)?merged.plugins:[];merged.plugins=[...mergedPlugins,...requiredPlugins.filter(plugin=>!mergedPlugins.includes(plugin))]}return merged}draw(){if(!this.chartJsModule||!this.canvasEl)return;const config=this.buildConfig(),effectiveType=config.type,nextPlugins=Array.isArray(config.plugins)?config.plugins:[],samePlugins=nextPlugins.length===this.builtPlugins.length&&nextPlugins.every((plugin,index)=>plugin===this.builtPlugins[index]);if(this.chart&&this.builtType===effectiveType&&samePlugins){this.chart.data=config.data,this.chart.options=config.options??{},this.applyDatasetVisibility(),this.chart.update("none"),this.updateChartArea(this.chart);return}this.discardChart(!0),this.chart=new this.chartJsModule.Chart(this.canvasEl,config),this.builtType=effectiveType,this.builtPlugins=[...nextPlugins],this.hiddenDatasets!==void 0&&(this.applyDatasetVisibility(),this.chart.update("none")),this.updateChartArea(this.chart)}drawIfVisible(){!this.isConnected||!this.visible||this.draw()}discardChart(announceZoomReset){this.chart?.destroy(),this.chart=void 0,this.resolvedChartArea=void 0,this.zoomed&&(this.zoomed=!1,announceZoomReset&&this.emit("lr-zoom",{zoomed:!1}))}renderChart(){this.drawIfVisible()}resetZoom(){this.suppressZoomComplete=!0;try{this.chart?.resetZoom?.()}finally{this.suppressZoomComplete=!1}this.zoomed=!1,this.emit("lr-zoom",{zoomed:!1})}refreshTheme(){this.drawIfVisible(),this.showsLegend&&this.requestUpdate()}summarizeSeries(dataset){let count=0,first=0,last=0,min=0,max=0;for(const datum of this.datasetValues(dataset)){const value=isChartPoint(datum)?datum.y:datum;typeof value!="number"||!Number.isFinite(value)||(count===0&&(first=value,min=value,max=value),last=value,min=Math.min(min,value),max=Math.max(max,value),count++)}return count?{count,first,last,min,max}:void 0}formatSummaryValue(value){return getNumberFormat(this.effectiveLocale).format(value)}formatTableValue(value){return this.formatter?.({value,surface:"table"})??this.valueFormatter?.(value,"table")??this.formatSummaryValue(value)}formatExportValue(value){return this.formatter?.({value,surface:"export"})??this.valueFormatter?.(value,"table")}formatSpokenValue(value){return this.formatter?.({value,surface:"spoken"})??this.formatSummaryValue(value)}tableStackAxes(){const type=this.effectiveType();if(!this.stackTotals||!this.stacked||type!=="bar"&&type!=="line")return[];const present=new Set;for(const dataset of this.effectiveData().datasets)present.add(dataset.yAxisID==="y2"||dataset.axis==="y2"?"y2":"y");return["y","y2"].filter(axis=>present.has(axis))}tableStackTotalLabel(axis,axisCount){if(axisCount===1)return this.localize("chartTotal");const axisLabel=axis==="y2"?this.y2Label||this.localize("chartSecondaryAxis"):this.yLabel||this.localize("chartPrimaryAxis");return this.localize("chartAxisTotal",void 0,{axis:axisLabel})}accessibleName(fallback){return this.getAttribute("aria-label")??this.label??fallback}chartDescription(){if(this.description)return this.description;const effective=this.effectiveData(),sample=this.dataTableSample(effective),includePointDetails=!this.hasCustomDataTable(),summaries=sample.seriesIndexes.map(index=>{const dataset=effective.datasets[index],seriesLabel=this.datasetLabel(dataset,index),values=this.summarizeSeries(dataset);if(!values)return this.localize("chartSeriesNoData",void 0,{label:seriesLabel});const trend=values.last>values.first?this.localize("chartTrendIncreasing"):values.last<values.first?this.localize("chartTrendDecreasing"):this.localize("chartTrendFlat"),summary=this.localize("chartSummary",void 0,{label:seriesLabel,count:this.formatSummaryValue(values.count),min:this.formatSummaryValue(values.min),max:this.formatSummaryValue(values.max),trend}),rawValues=this.datasetValues(dataset),pointDetails=includePointDetails?sample.rowIndexes.flatMap(rowIndex=>{const point=rawValues[rowIndex];return isChartPoint(point)?[this.datumDisplayValue(point)]:[]}):[];return pointDetails.length?[summary,...pointDetails].join(this.localize("chartSummarySeparator")):summary}),base=summaries.length?this.localize("chartSummaryWithData",void 0,{type:this.localizedChartType(),summaries:summaries.join(this.localize("chartSummarySeparator"))}):this.localize("chartSummaryEmpty",void 0,{type:this.localizedChartType()}),annotationLabels=this.normalizedAnnotations().map(entry=>entry.label?.trim()).filter(label=>!!label);return annotationLabels.length?[base,...annotationLabels].join(this.localize("chartSummarySeparator")):base}dataTableSample(effective=this.effectiveData()){let rowCount=effective.labels.length;for(const dataset of effective.datasets)rowCount=Math.max(rowCount,this.datasetValues(dataset).length);const indexes=sampleChartTableIndexes(rowCount,effective.datasets.length);return{rowCount,seriesCount:effective.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 effective=this.effectiveData(),sample=this.dataTableSample(effective),stackAxes=this.tableStackAxes(),stackTotals=new Map(stackAxes.map(axis=>[axis,this.computeStackTotals(axis)]));return html`
1
+ var __decorate=function(decorators,target,key,desc){var c=arguments.length,r=c<3?target:desc===null?desc=Object.getOwnPropertyDescriptor(target,key):desc,d;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")r=Reflect.decorate(decorators,target,key,desc);else for(var i=decorators.length-1;i>=0;i--)(d=decorators[i])&&(r=(c<3?d(r):c>3?d(target,key,r):d(target,key))||r);return c>3&&r&&Object.defineProperty(target,key,r),r};import{html,nothing}from"lit";import{property,query,state}from"lit/decorators.js";import{styleMap}from"lit/directives/style-map.js";import{LyraElement}from"../../../internal/lyra-element.js";import{specialistTokens}from"../../../internal/specialist-tokens.styles.js";import{nextId,srOnly}from"../../../internal/a11y.js";import{prefersReducedMotion}from"../../../internal/motion.js";import{ThemeWatcher}from"../../../internal/theme-watcher.js";import{loadChartJs}from"./chart-core-loader.js";import{onAnnotationPluginRegistered}from"../../../internal/chart-annotation-registration.js";import{loadChartJsWithZoom,loadChartJsWithZoomResult,loadChartJsWithDataLabelsResult,loadChartJsWithAnnotationResult}from"./chart-feature-loader.js";import{styles}from"./chart.styles.js";import"../../overlays/skeleton/skeleton.class.js";import{getListFormat,getNumberFormat}from"../../../internal/intl-cache.js";import{escapeCsvField}from"../../utility/export-button/csv.js";import{trueDefaultBooleanFromAttributeConverter as trueDefaultBooleanConverter}from"../../../internal/converters.js";import{finiteAdd,finiteNumber}from"../../../internal/numbers.js";import{getOwnDataDescriptor,MISSING_OWN_DATA_DESCRIPTOR,UNSAFE_OWN_DATA_DESCRIPTOR}from"../../../internal/data-descriptors.js";import{sanitizeCssLength}from"../../../internal/safe-css.js";import{acquireAnnouncementSink}from"../../../internal/announcer.js";import{resolveCanvasColor,resolveCanvasColors,seriesPalette,translucentAreaColor}from"./chart-colors.js";import{createForcedColorPattern,forcedColorEncoding,forcedColorsActive}from"./chart-forced-colors.js";import{legendVisibilityDetail,normalizeHiddenDatasets}from"./chart-legend-visibility.js";import{sampleChartTableIndexes}from"./chart-table-sampling.js";import{LYRA_DEFAULT_chart,LYRA_DEFAULT_chartAnnotationsUnavailable,LYRA_DEFAULT_chartAxisTotal,LYRA_DEFAULT_chartBubblePointCoordinates,LYRA_DEFAULT_chartCategory,LYRA_DEFAULT_chartData,LYRA_DEFAULT_chartDataLabelsUnavailable,LYRA_DEFAULT_chartDataSampled,LYRA_DEFAULT_chartLabeledPoint,LYRA_DEFAULT_chartMissingLibrary,LYRA_DEFAULT_chartPointCoordinates,LYRA_DEFAULT_chartPointLabel,LYRA_DEFAULT_chartPrimaryAxis,LYRA_DEFAULT_chartSecondaryAxis,LYRA_DEFAULT_chartSeriesLabel,LYRA_DEFAULT_chartSeriesNoData,LYRA_DEFAULT_chartStackTotalsUnavailable,LYRA_DEFAULT_chartSummary,LYRA_DEFAULT_chartSummaryEmpty,LYRA_DEFAULT_chartSummarySeparator,LYRA_DEFAULT_chartSummaryWithData,LYRA_DEFAULT_chartTotal,LYRA_DEFAULT_chartTrendDecreasing,LYRA_DEFAULT_chartTrendFlat,LYRA_DEFAULT_chartTrendIncreasing,LYRA_DEFAULT_chartTypeBar,LYRA_DEFAULT_chartTypeBubble,LYRA_DEFAULT_chartTypeDoughnut,LYRA_DEFAULT_chartTypeLine,LYRA_DEFAULT_chartTypePie,LYRA_DEFAULT_chartTypePolarArea,LYRA_DEFAULT_chartTypeRadar,LYRA_DEFAULT_chartTypeScatter,LYRA_DEFAULT_chartValueLabel,LYRA_DEFAULT_chartZoomUnavailable,LYRA_DEFAULT_collapse,LYRA_DEFAULT_details,LYRA_DEFAULT_liteChartMarkSummary,LYRA_DEFAULT_loading,LYRA_DEFAULT_map,LYRA_DEFAULT_navigation,LYRA_DEFAULT_noData,LYRA_DEFAULT_open,LYRA_DEFAULT_popover,LYRA_DEFAULT_resetZoom,LYRA_DEFAULT_search,LYRA_DEFAULT_select}from"../../../internal/default-strings.generated.js";import{seriesPalette as seriesPalette2}from"./chart-colors.js";const CHART_TYPES=new Set(["line","bar","scatter","pie","doughnut","radar","polarArea","bubble"]),CHART_TYPE_MESSAGE_KEYS={line:"chartTypeLine",bar:"chartTypeBar",scatter:"chartTypeScatter",pie:"chartTypePie",doughnut:"chartTypeDoughnut",radar:"chartTypeRadar",polarArea:"chartTypePolarArea",bubble:"chartTypeBubble"};function normalizeChartType(value){return typeof value=="string"&&CHART_TYPES.has(value)?value:"bar"}function normalizeChartGrid(value){return value==="x"||value==="y"||value==="none"||value==="both"?value:"both"}function normalizeLegendPosition(value){return value==="left"||value==="top"||value==="right"||value==="bottom"||value==="center"||value==="chartArea"||value==="start"||value==="end"||value==="auto"?value:projectLegendPosition(value)??"top"}function isChartRecord(value){try{return typeof value=="object"&&value!==null&&!Array.isArray(value)}catch{return!1}}const MAX_CHART_INPUT_ENTRIES=1e4,MAX_CHART_CONFIGURATION_DEPTH=32,OMIT_CHART_CONFIGURATION_VALUE=Symbol("omit-chart-configuration-value");function admitChartArray(value){try{if(!Array.isArray(value))return;const descriptor=getOwnDataDescriptor(value,"length");return descriptor===MISSING_OWN_DATA_DESCRIPTOR||descriptor===UNSAFE_OWN_DATA_DESCRIPTOR||typeof descriptor.value!="number"||!Number.isSafeInteger(descriptor.value)||descriptor.value<0?void 0:{source:value,length:Math.min(descriptor.value,MAX_CHART_INPUT_ENTRIES)}}catch{return}}function chartArrayIsStillAdmitted(admission){const descriptor=chartRecordValue(admission.source,"length");return descriptor!==MISSING_OWN_DATA_DESCRIPTOR&&descriptor!==UNSAFE_OWN_DATA_DESCRIPTOR&&typeof descriptor.value=="number"&&Number.isSafeInteger(descriptor.value)&&descriptor.value>=admission.length}function copyChartArrayEntries(admission){if(!chartArrayIsStillAdmitted(admission))return Object.freeze([]);const output=Array.from({length:admission.length},()=>{});for(let index=0;index<admission.length;index+=1){const descriptor=chartRecordValue(admission.source,String(index));descriptor===MISSING_OWN_DATA_DESCRIPTOR||descriptor===UNSAFE_OWN_DATA_DESCRIPTOR||(output[index]=descriptor.value)}return Object.freeze(output)}function chartEnumerableKeys(value){try{return Object.keys(value)}catch{return}}const canonicalChartSeriesSnapshots=new WeakMap,admittedChartPlugins=new WeakSet,canonicalChartDatasetValues=new WeakMap,canonicalChartDatasetDataValues=new WeakMap;function canonicalChartSeries(value){if(isChartRecord(value))return canonicalChartSeriesSnapshots.has(value)?value:projectChartSeries(value)}function canonicalSeriesData(series){const canonical=canonicalChartSeries(series);return canonical?canonicalChartSeriesSnapshots.get(canonical)?.data??[]:[]}function canonicalSeriesPoints(series){const canonical=canonicalChartSeries(series);return canonical?canonicalChartSeriesSnapshots.get(canonical)?.points:void 0}function chartRecordValue(value,property2){return getOwnDataDescriptor(value,property2)}function projectChartNumberData(value,admission=admitChartArray(value)){if(!admission||!chartArrayIsStillAdmitted(admission))return;const output=Array.from({length:admission.length},()=>null);for(let index=0;index<admission.length;index+=1){const descriptor=chartRecordValue(admission.source,String(index));if(descriptor===MISSING_OWN_DATA_DESCRIPTOR||descriptor===UNSAFE_OWN_DATA_DESCRIPTOR)continue;const candidate=descriptor.value;output[index]=typeof candidate=="number"&&Number.isFinite(candidate)?candidate:null}return Object.freeze(output)}function projectChartPoint(value){if(!isChartRecord(value))return null;const x=chartRecordValue(value,"x"),y=chartRecordValue(value,"y"),r=chartRecordValue(value,"r"),label=chartRecordValue(value,"label");return x===MISSING_OWN_DATA_DESCRIPTOR||x===UNSAFE_OWN_DATA_DESCRIPTOR||y===MISSING_OWN_DATA_DESCRIPTOR||y===UNSAFE_OWN_DATA_DESCRIPTOR||r===UNSAFE_OWN_DATA_DESCRIPTOR||label===UNSAFE_OWN_DATA_DESCRIPTOR||typeof x.value!="number"||!Number.isFinite(x.value)||typeof y.value!="number"||!Number.isFinite(y.value)?null:Object.freeze({x:x.value,y:y.value,...r!==MISSING_OWN_DATA_DESCRIPTOR&&typeof r.value=="number"&&Number.isFinite(r.value)&&r.value>=0?{r:r.value}:{},...label!==MISSING_OWN_DATA_DESCRIPTOR&&typeof label.value=="string"?{label:label.value}:{}})}function projectChartDatum(value){if(typeof value=="number")return Number.isFinite(value)?value:null;if(typeof value=="string"||typeof value=="bigint")return value;if(!isChartRecord(value))return null;const x=chartRecordValue(value,"x"),y=chartRecordValue(value,"y"),r=chartRecordValue(value,"r"),label=chartRecordValue(value,"label"),output={};let hasValue=!1;for(const[property2,descriptor]of[["x",x],["y",y],["r",r]])descriptor===MISSING_OWN_DATA_DESCRIPTOR||descriptor===UNSAFE_OWN_DATA_DESCRIPTOR||typeof descriptor.value!="number"||!Number.isFinite(descriptor.value)||(output[property2]=descriptor.value,hasValue=!0);return label!==MISSING_OWN_DATA_DESCRIPTOR&&label!==UNSAFE_OWN_DATA_DESCRIPTOR&&typeof label.value=="string"&&(output.label=label.value,hasValue=!0),hasValue?Object.freeze(output):null}function projectChartDatasetValues(admission){if(!chartArrayIsStillAdmitted(admission))return Object.freeze([]);const output=Array.from({length:admission.length},()=>null);for(let index=0;index<admission.length;index+=1){const descriptor=chartRecordValue(admission.source,String(index));descriptor===MISSING_OWN_DATA_DESCRIPTOR||descriptor===UNSAFE_OWN_DATA_DESCRIPTOR||(output[index]=projectChartDatum(descriptor.value))}return Object.freeze(output)}function projectChartPoints(value,admission=admitChartArray(value)){if(!admission||!chartArrayIsStillAdmitted(admission))return;const output=Array.from({length:admission.length},()=>null);for(let index=0;index<admission.length;index+=1){const descriptor=chartRecordValue(admission.source,String(index));descriptor===MISSING_OWN_DATA_DESCRIPTOR||descriptor===UNSAFE_OWN_DATA_DESCRIPTOR||(output[index]=projectChartPoint(descriptor.value))}return Object.freeze(output)}function projectChartStrings(value,admission=admitChartArray(value)){if(!admission||!chartArrayIsStillAdmitted(admission))return;const output=Array.from({length:admission.length},()=>"");for(let index=0;index<admission.length;index+=1){const descriptor=chartRecordValue(admission.source,String(index));descriptor===MISSING_OWN_DATA_DESCRIPTOR||descriptor===UNSAFE_OWN_DATA_DESCRIPTOR||typeof descriptor.value!="string"||(output[index]=descriptor.value)}return Object.freeze(output)}function projectChartPointRadii(value,admission=admitChartArray(value)){if(!admission||!chartArrayIsStillAdmitted(admission))return;const output=Array.from({length:admission.length},()=>Number.NaN);for(let index=0;index<admission.length;index+=1){const descriptor=chartRecordValue(admission.source,String(index));descriptor===MISSING_OWN_DATA_DESCRIPTOR||descriptor===UNSAFE_OWN_DATA_DESCRIPTOR||typeof descriptor.value!="number"||!Number.isFinite(descriptor.value)||(output[index]=descriptor.value)}return Object.freeze(output)}const CHART_ANNOTATION_TONES=new Set(["neutral","brand","success","warning","danger"]);function projectHiddenDatasetIndexes(value){if(value===void 0)return;const admission=admitChartArray(value);if(!admission||!chartArrayIsStillAdmitted(admission))return Object.freeze([]);const output=[];for(let index=0;index<admission.length;index+=1){const descriptor=chartRecordValue(admission.source,String(index)),candidate=descriptor===MISSING_OWN_DATA_DESCRIPTOR||descriptor===UNSAFE_OWN_DATA_DESCRIPTOR?void 0:descriptor.value;descriptor===MISSING_OWN_DATA_DESCRIPTOR||descriptor===UNSAFE_OWN_DATA_DESCRIPTOR||typeof candidate!="number"||!Number.isInteger(candidate)||output.push(candidate)}return Object.freeze(output)}function projectChartAnnotations(value){const admission=admitChartArray(value);if(!admission||!chartArrayIsStillAdmitted(admission))return Object.freeze([]);const output=[];for(let index=0;index<admission.length;index+=1){const entry=chartRecordValue(admission.source,String(index));if(entry===MISSING_OWN_DATA_DESCRIPTOR||entry===UNSAFE_OWN_DATA_DESCRIPTOR||!isChartRecord(entry.value))continue;const axis=chartRecordValue(entry.value,"axis"),lineValue=chartRecordValue(entry.value,"value"),from=chartRecordValue(entry.value,"from"),to=chartRecordValue(entry.value,"to"),label=chartRecordValue(entry.value,"label"),tone=chartRecordValue(entry.value,"tone");if(axis===UNSAFE_OWN_DATA_DESCRIPTOR||lineValue===UNSAFE_OWN_DATA_DESCRIPTOR||from===UNSAFE_OWN_DATA_DESCRIPTOR||to===UNSAFE_OWN_DATA_DESCRIPTOR||label===UNSAFE_OWN_DATA_DESCRIPTOR||tone===UNSAFE_OWN_DATA_DESCRIPTOR)continue;const axisValue=axis===MISSING_OWN_DATA_DESCRIPTOR?void 0:axis.value,line=lineValue===MISSING_OWN_DATA_DESCRIPTOR?void 0:lineValue.value,fromValue=from===MISSING_OWN_DATA_DESCRIPTOR?void 0:from.value,toValue=to===MISSING_OWN_DATA_DESCRIPTOR?void 0:to.value,labelValue=label===MISSING_OWN_DATA_DESCRIPTOR?void 0:label.value,toneValue=tone===MISSING_OWN_DATA_DESCRIPTOR?void 0:tone.value;if(axisValue!==void 0&&axisValue!=="x"&&axisValue!=="y"||labelValue!==void 0&&typeof labelValue!="string"||toneValue!==void 0&&(typeof toneValue!="string"||!CHART_ANNOTATION_TONES.has(toneValue)))continue;const normalizedAxis=axisValue==="x"||axisValue==="y"?axisValue:void 0,common={...normalizedAxis!==void 0?{axis:normalizedAxis}:{},...typeof labelValue=="string"?{label:labelValue}:{},...typeof toneValue=="string"?{tone:toneValue}:{}};if(typeof line=="number"&&Number.isFinite(line)){output.push(Object.freeze({...common,value:line}));continue}typeof fromValue=="number"&&Number.isFinite(fromValue)&&typeof toValue=="number"&&Number.isFinite(toValue)&&output.push(Object.freeze({...common,from:Math.min(fromValue,toValue),to:Math.max(fromValue,toValue)}))}return Object.freeze(output)}const CHART_SERIES_PROPERTIES=["label","data","points","color","fill","width","dash","noTooltip","axis","pointColors","pointRadius","segmentColors","type"];function projectChartSeries(value){try{if(!isChartRecord(value))return;const descriptors=new Map;for(const property2 of CHART_SERIES_PROPERTIES){const descriptor=chartRecordValue(value,property2);if(descriptor===UNSAFE_OWN_DATA_DESCRIPTOR)return;descriptors.set(property2,descriptor)}const valueAt=property2=>{const descriptor=descriptors.get(property2);return descriptor===MISSING_OWN_DATA_DESCRIPTOR||descriptor===UNSAFE_OWN_DATA_DESCRIPTOR||descriptor===void 0?void 0:descriptor.value},label=valueAt("label");if(label!==void 0&&typeof label!="string")return;const output={label:label??""},rawData=valueAt("data"),rawDataAdmission=admitChartArray(rawData),data=projectChartNumberData(rawData,rawDataAdmission),rawPoints=valueAt("points"),rawPointsAdmission=admitChartArray(rawPoints),points=projectChartPoints(rawPoints,rawPointsAdmission),color=valueAt("color"),fill=valueAt("fill"),width=valueAt("width"),dash=valueAt("dash"),noTooltip=valueAt("noTooltip"),axis=valueAt("axis"),pointColors=projectChartStrings(valueAt("pointColors")),pointRadius=valueAt("pointRadius"),segmentColors=projectChartStrings(valueAt("segmentColors")),type=valueAt("type");if(data&&rawDataAdmission&&(output.data=rawDataAdmission.source),points&&rawPointsAdmission&&(output.points=rawPointsAdmission.source),typeof color=="string")output.color=color;else{const colors=projectChartStrings(color);colors&&(output.color=colors)}if(typeof fill=="boolean"&&(output.fill=fill),typeof width=="number"&&Number.isFinite(width)&&(output.width=width),typeof dash=="boolean"&&(output.dash=dash),typeof noTooltip=="boolean"&&(output.noTooltip=noTooltip),(axis==="y"||axis==="y2")&&(output.axis=axis),pointColors&&(output.pointColors=pointColors),typeof pointRadius=="number"&&Number.isFinite(pointRadius))output.pointRadius=pointRadius;else{const radii=projectChartPointRadii(pointRadius);radii&&(output.pointRadius=radii)}segmentColors&&(output.segmentColors=segmentColors),(type==="line"||type==="bar")&&(output.type=type);const series=Object.freeze(output);return canonicalChartSeriesSnapshots.set(series,{data:data??Object.freeze([]),...points?{points}:{}}),series}catch{return}}function normalizeChartSeries(value){const admission=admitChartArray(value);if(!admission||!chartArrayIsStillAdmitted(admission))return Object.freeze([]);const output=[];for(let index=0;index<admission.length;index+=1){const descriptor=chartRecordValue(admission.source,String(index));if(descriptor===MISSING_OWN_DATA_DESCRIPTOR||descriptor===UNSAFE_OWN_DATA_DESCRIPTOR)continue;const series=canonicalChartSeries(descriptor.value);series&&output.push(series)}return Object.freeze(output)}function isSafeChartConfigurationRecord(value){if(!isChartRecord(value))return!1;try{const prototype=Object.getPrototypeOf(value);if(prototype===null)return!0;const constructor=getOwnDataDescriptor(prototype,"constructor");if(constructor===MISSING_OWN_DATA_DESCRIPTOR||constructor===UNSAFE_OWN_DATA_DESCRIPTOR||typeof constructor.value!="function")return!1;const name=getOwnDataDescriptor(constructor.value,"name"),constructorPrototype=getOwnDataDescriptor(constructor.value,"prototype");return name!==MISSING_OWN_DATA_DESCRIPTOR&&name!==UNSAFE_OWN_DATA_DESCRIPTOR&&name.value==="Object"&&constructorPrototype!==MISSING_OWN_DATA_DESCRIPTOR&&constructorPrototype!==UNSAFE_OWN_DATA_DESCRIPTOR&&constructorPrototype.value===prototype}catch{return!1}}function projectLegendPosition(value){if(!isSafeChartConfigurationRecord(value))return;const keys=chartEnumerableKeys(value);if(!keys||keys.length>MAX_CHART_INPUT_ENTRIES)return;const output={};for(const key of keys){if(UNSAFE_KEYS.has(key))return;const descriptor=chartRecordValue(value,key);if(descriptor===MISSING_OWN_DATA_DESCRIPTOR||descriptor===UNSAFE_OWN_DATA_DESCRIPTOR||!descriptor.enumerable||typeof descriptor.value!="number"||!Number.isFinite(descriptor.value))return;output[key]=descriptor.value}return Object.freeze(output)}function copyChartConfigurationValue(value,budget,depth=0){if(value===null||typeof value!="object"&&typeof value!="function"||typeof value=="function")return value;if(depth>MAX_CHART_CONFIGURATION_DEPTH||budget.remaining<=0||budget.active.has(value))return OMIT_CHART_CONFIGURATION_VALUE;const array=admitChartArray(value);if(array&&!chartArrayIsStillAdmitted(array))return OMIT_CHART_CONFIGURATION_VALUE;if(array){budget.remaining-=1,budget.active.add(value);try{const output=Array.from({length:array.length},()=>{});for(let index=0;index<array.length&&budget.remaining>0;index+=1){budget.remaining-=1;const descriptor=chartRecordValue(array.source,String(index));if(descriptor===MISSING_OWN_DATA_DESCRIPTOR||descriptor===UNSAFE_OWN_DATA_DESCRIPTOR)continue;const entry=copyChartConfigurationValue(descriptor.value,budget,depth+1);entry!==OMIT_CHART_CONFIGURATION_VALUE&&(output[index]=entry)}const copied=Object.freeze(output),canonical=canonicalChartDatasetDataValues.get(array.source);return canonical&&canonicalChartDatasetDataValues.set(copied,canonical),copied}finally{budget.active.delete(value)}}if(!isSafeChartConfigurationRecord(value))return value;budget.remaining-=1,budget.active.add(value);try{const keys=chartEnumerableKeys(value);if(!keys)return OMIT_CHART_CONFIGURATION_VALUE;const output=Object.create(null);for(const key of keys){if(budget.remaining<=0)break;if(budget.remaining-=1,UNSAFE_KEYS.has(key))continue;const descriptor=chartRecordValue(value,key);if(descriptor===MISSING_OWN_DATA_DESCRIPTOR||descriptor===UNSAFE_OWN_DATA_DESCRIPTOR||!descriptor.enumerable)continue;const entry=copyChartConfigurationValue(descriptor.value,budget,depth+1);entry!==OMIT_CHART_CONFIGURATION_VALUE&&(output[key]=entry)}return Object.freeze(output)}finally{budget.active.delete(value)}}function projectChartPlugins(value,admission=admitChartArray(value)){if(!admission||!chartArrayIsStillAdmitted(admission))return Object.freeze([]);const output=[];for(let index=0;index<admission.length;index+=1){const descriptor=chartRecordValue(admission.source,String(index));if(descriptor===MISSING_OWN_DATA_DESCRIPTOR||descriptor===UNSAFE_OWN_DATA_DESCRIPTOR||descriptor.value===null||typeof descriptor.value!="object"&&typeof descriptor.value!="function")continue;const plugin=descriptor.value;if(admittedChartPlugins.has(plugin)){output.push(plugin);continue}const id=chartRecordValue(plugin,"id");id===MISSING_OWN_DATA_DESCRIPTOR||id===UNSAFE_OWN_DATA_DESCRIPTOR||typeof id.value!="string"||id.value.trim()===""||(admittedChartPlugins.add(plugin),output.push(plugin))}return Object.freeze(output)}function projectChartDatasetConfiguration(value){if(!isSafeChartConfigurationRecord(value))return;const keys=chartEnumerableKeys(value);if(!keys)return;const output=Object.create(null),priorCanonicalValues=canonicalChartDatasetValues.get(value);let canonicalValues;for(const key of keys){if(UNSAFE_KEYS.has(key))continue;const descriptor=chartRecordValue(value,key);if(descriptor===MISSING_OWN_DATA_DESCRIPTOR||descriptor===UNSAFE_OWN_DATA_DESCRIPTOR||!descriptor.enumerable)continue;const candidate=descriptor.value,array=admitChartArray(candidate);if(key==="data"){if(array){if(!chartArrayIsStillAdmitted(array)){output[key]=Object.freeze([]),canonicalValues=Object.freeze([]);continue}const copied=copyChartArrayEntries(array);output[key]=copied;const canonical=priorCanonicalValues??canonicalChartDatasetDataValues.get(array.source)??projectChartDatasetValues(array);canonicalValues=canonical,canonicalChartDatasetDataValues.set(copied,canonical)}continue}if(key==="label"){typeof candidate=="string"||typeof candidate=="number"||typeof candidate=="boolean"||typeof candidate=="bigint"?output[key]=candidate:array&&(output[key]=copyChartArrayEntries(array));continue}if(key==="hidden"||key==="noTooltip"){typeof candidate=="boolean"&&(output[key]=candidate);continue}if(key==="axis"||key==="yAxisID"||key==="type"){typeof candidate=="string"&&(output[key]=candidate);continue}output[key]=array?copyChartArrayEntries(array):candidate}const dataset=Object.freeze(output);return canonicalValues&&canonicalChartDatasetValues.set(dataset,canonicalValues),dataset}function projectChartDatasetConfigurations(value,admission=admitChartArray(value)){if(!admission||!chartArrayIsStillAdmitted(admission))return Object.freeze([]);const output=[];for(let index=0;index<admission.length;index+=1){const descriptor=chartRecordValue(admission.source,String(index));if(descriptor===MISSING_OWN_DATA_DESCRIPTOR||descriptor===UNSAFE_OWN_DATA_DESCRIPTOR)continue;const dataset=projectChartDatasetConfiguration(descriptor.value);dataset&&output.push(dataset)}return Object.freeze(output)}function projectChartDataConfiguration(value){if(!isSafeChartConfigurationRecord(value))return;const keys=chartEnumerableKeys(value);if(!keys)return;const output=Object.create(null);for(const key of keys){if(UNSAFE_KEYS.has(key))continue;const descriptor=chartRecordValue(value,key);if(!(descriptor===MISSING_OWN_DATA_DESCRIPTOR||descriptor===UNSAFE_OWN_DATA_DESCRIPTOR||!descriptor.enumerable)){if(key==="labels"){const labels=admitChartArray(descriptor.value);output[key]=labels?copyChartArrayEntries(labels):Object.freeze([]);continue}if(key==="datasets"){output[key]=projectChartDatasetConfigurations(descriptor.value);continue}output[key]=descriptor.value}}return Object.freeze(output)}function projectChartConfiguration(value){if(!isSafeChartConfigurationRecord(value))return;const budget={remaining:MAX_CHART_INPUT_ENTRIES,active:new Set},output=Object.create(null),type=chartRecordValue(value,"type"),data=chartRecordValue(value,"data"),options=chartRecordValue(value,"options"),plugins=chartRecordValue(value,"plugins");type!==MISSING_OWN_DATA_DESCRIPTOR&&type!==UNSAFE_OWN_DATA_DESCRIPTOR&&typeof type.value=="string"&&(output.type=type.value);for(const[property2,descriptor]of[["data",data],["options",options]]){if(descriptor===MISSING_OWN_DATA_DESCRIPTOR||descriptor===UNSAFE_OWN_DATA_DESCRIPTOR)continue;const copied=copyChartConfigurationValue(descriptor.value,budget);if(copied!==OMIT_CHART_CONFIGURATION_VALUE){if(property2==="data"){const projected=projectChartDataConfiguration(copied);output[property2]=projected??copied;continue}output[property2]=copied}}if(plugins!==MISSING_OWN_DATA_DESCRIPTOR&&plugins!==UNSAFE_OWN_DATA_DESCRIPTOR){const pluginArray=admitChartArray(plugins.value);if(pluginArray)output.plugins=projectChartPlugins(plugins.value,pluginArray);else{const copied=copyChartConfigurationValue(plugins.value,budget);copied!==OMIT_CHART_CONFIGURATION_VALUE&&(output.plugins=copied)}}return Object.freeze(output)}const UNSAFE_KEYS=new Set(["__proto__","constructor","prototype"]),FALLBACK_GRID_COLOR="#8a8a90",FALLBACK_TICK_COLOR="#6b7280",FALLBACK_LEGEND_COLOR="#1a1a1a",FALLBACK_TOOLTIP_BG="#fff",FALLBACK_TOOLTIP_TEXT="#1a1a1a";function deepMerge(base,override,seen=new WeakMap){if(!isSafeChartConfigurationRecord(base)||!isSafeChartConfigurationRecord(override))return override===void 0?base:override;const baseRecord=base,overrideRecord=override,baseKeys=chartEnumerableKeys(baseRecord),overrideKeys=chartEnumerableKeys(overrideRecord);if(!baseKeys||!overrideKeys)return override;const previous=seen.get(overrideRecord);if(previous!==void 0)return previous;const result={};for(const key of baseKeys){if(UNSAFE_KEYS.has(key))continue;const descriptor=chartRecordValue(baseRecord,key);descriptor===MISSING_OWN_DATA_DESCRIPTOR||descriptor===UNSAFE_OWN_DATA_DESCRIPTOR||!descriptor.enumerable||(result[key]=descriptor.value)}seen.set(overrideRecord,result);try{for(const key of overrideKeys){if(UNSAFE_KEYS.has(key))continue;const descriptor=chartRecordValue(overrideRecord,key);if(descriptor===MISSING_OWN_DATA_DESCRIPTOR||descriptor===UNSAFE_OWN_DATA_DESCRIPTOR||!descriptor.enumerable)continue;const baseDescriptor=chartRecordValue(baseRecord,key),baseValue=baseDescriptor===MISSING_OWN_DATA_DESCRIPTOR||baseDescriptor===UNSAFE_OWN_DATA_DESCRIPTOR?void 0:baseDescriptor.value;result[key]=deepMerge(baseValue,descriptor.value,seen)}}finally{seen.delete(overrideRecord)}return result}function normalizedChartPoint(value){return projectChartPoint(projectChartDatum(value))}function chartNumericValue(value){const numeric=typeof value=="number"?value:typeof value=="string"||typeof value=="bigint"?Number(value):Number.NaN;return Number.isFinite(numeric)?numeric:void 0}function chartDatumNumericValue(value){const projected=projectChartDatum(value);if(isChartRecord(projected))for(const property2 of["y","r","x"]){const descriptor=chartRecordValue(projected,property2);if(descriptor!==MISSING_OWN_DATA_DESCRIPTOR&&descriptor!==UNSAFE_OWN_DATA_DESCRIPTOR&&typeof descriptor.value=="number"&&Number.isFinite(descriptor.value))return descriptor.value}return chartNumericValue(projected)}function nonNegativeFinite(value,fallback){return typeof value=="number"&&Number.isFinite(value)&&value>=0?value:fallback}function labelText(value,depth=0){if(value==null)return"";if(typeof value=="string"||typeof value=="number"||typeof value=="boolean"||typeof value=="bigint")return String(value);const admission=admitChartArray(value);if(depth<MAX_CHART_CONFIGURATION_DEPTH&&admission){const values=[];for(let index=0;index<admission.length;index+=1){const descriptor=chartRecordValue(admission.source,String(index));values.push(descriptor===MISSING_OWN_DATA_DESCRIPTOR||descriptor===UNSAFE_OWN_DATA_DESCRIPTOR?"":labelText(descriptor.value,depth+1))}return values.join(" ")}return""}function chartDatasetValue(dataset,property2){if(!isChartRecord(dataset))return;const descriptor=chartRecordValue(dataset,property2);return descriptor===MISSING_OWN_DATA_DESCRIPTOR||descriptor===UNSAFE_OWN_DATA_DESCRIPTOR?void 0:descriptor.value}function chartDatasetLabel(dataset){return labelText(chartDatasetValue(dataset,"label"))}function chartDatasetValues(dataset){if(isChartRecord(dataset)){const snapshot=canonicalChartDatasetValues.get(dataset);if(snapshot)return snapshot}const data=chartDatasetValue(dataset,"data"),admission=admitChartArray(data);return admission?canonicalChartDatasetDataValues.get(admission.source)??copyChartArrayEntries(admission):Object.freeze([])}function chartDatasetPeerValues(dataset){const admission=admitChartArray(chartDatasetValue(dataset,"data"));return admission?copyChartArrayEntries(admission):Object.freeze([])}function chartIndex(value){return typeof value=="number"&&Number.isSafeInteger(value)&&value>=0?value:void 0}function chartCallbackDatasetIndex(value){return chartIndex(chartDatasetValue(value,"datasetIndex"))}function chartCallbackIndexes(value){const datasetIndex=chartCallbackDatasetIndex(value),index=chartIndex(chartDatasetValue(value,"index"))??chartIndex(chartDatasetValue(value,"dataIndex"));return datasetIndex===void 0||index===void 0?void 0:{datasetIndex,index}}function projectChartLegendItem(value){if(!isChartRecord(value))return;const keys=chartEnumerableKeys(value);if(!keys||keys.length>MAX_CHART_INPUT_ENTRIES)return;const output=Object.create(null);for(const key of keys){if(UNSAFE_KEYS.has(key))continue;const descriptor=chartRecordValue(value,key);descriptor===MISSING_OWN_DATA_DESCRIPTOR||descriptor===UNSAFE_OWN_DATA_DESCRIPTOR||!descriptor.enumerable||(output[key]=descriptor.value)}return output}function projectChartLegendItems(value){const admission=admitChartArray(value);if(!admission||!chartArrayIsStillAdmitted(admission))return;const output=[];for(let index=0;index<admission.length;index+=1){const descriptor=chartRecordValue(admission.source,String(index));if(descriptor===MISSING_OWN_DATA_DESCRIPTOR||descriptor===UNSAFE_OWN_DATA_DESCRIPTOR)continue;const item=projectChartLegendItem(descriptor.value);item&&output.push(item)}return Object.freeze(output)}function chartDatasetBoolean(dataset,property2){const value=chartDatasetValue(dataset,property2);return typeof value=="boolean"?value:void 0}function chartDatasetAxis(dataset){return chartDatasetValue(dataset,"yAxisID")==="y2"||chartDatasetValue(dataset,"axis")==="y2"?"y2":"y"}class LyraChart extends LyraElement{static{this.defaultStrings={...super.defaultStrings,chart:LYRA_DEFAULT_chart,chartAnnotationsUnavailable:LYRA_DEFAULT_chartAnnotationsUnavailable,chartAxisTotal:LYRA_DEFAULT_chartAxisTotal,chartBubblePointCoordinates:LYRA_DEFAULT_chartBubblePointCoordinates,chartCategory:LYRA_DEFAULT_chartCategory,chartData:LYRA_DEFAULT_chartData,chartDataLabelsUnavailable:LYRA_DEFAULT_chartDataLabelsUnavailable,chartDataSampled:LYRA_DEFAULT_chartDataSampled,chartLabeledPoint:LYRA_DEFAULT_chartLabeledPoint,chartMissingLibrary:LYRA_DEFAULT_chartMissingLibrary,chartPointCoordinates:LYRA_DEFAULT_chartPointCoordinates,chartPointLabel:LYRA_DEFAULT_chartPointLabel,chartPrimaryAxis:LYRA_DEFAULT_chartPrimaryAxis,chartSecondaryAxis:LYRA_DEFAULT_chartSecondaryAxis,chartSeriesLabel:LYRA_DEFAULT_chartSeriesLabel,chartSeriesNoData:LYRA_DEFAULT_chartSeriesNoData,chartStackTotalsUnavailable:LYRA_DEFAULT_chartStackTotalsUnavailable,chartSummary:LYRA_DEFAULT_chartSummary,chartSummaryEmpty:LYRA_DEFAULT_chartSummaryEmpty,chartSummarySeparator:LYRA_DEFAULT_chartSummarySeparator,chartSummaryWithData:LYRA_DEFAULT_chartSummaryWithData,chartTotal:LYRA_DEFAULT_chartTotal,chartTrendDecreasing:LYRA_DEFAULT_chartTrendDecreasing,chartTrendFlat:LYRA_DEFAULT_chartTrendFlat,chartTrendIncreasing:LYRA_DEFAULT_chartTrendIncreasing,chartTypeBar:LYRA_DEFAULT_chartTypeBar,chartTypeBubble:LYRA_DEFAULT_chartTypeBubble,chartTypeDoughnut:LYRA_DEFAULT_chartTypeDoughnut,chartTypeLine:LYRA_DEFAULT_chartTypeLine,chartTypePie:LYRA_DEFAULT_chartTypePie,chartTypePolarArea:LYRA_DEFAULT_chartTypePolarArea,chartTypeRadar:LYRA_DEFAULT_chartTypeRadar,chartTypeScatter:LYRA_DEFAULT_chartTypeScatter,chartValueLabel:LYRA_DEFAULT_chartValueLabel,chartZoomUnavailable:LYRA_DEFAULT_chartZoomUnavailable,collapse:LYRA_DEFAULT_collapse,details:LYRA_DEFAULT_details,liteChartMarkSummary:LYRA_DEFAULT_liteChartMarkSummary,loading:LYRA_DEFAULT_loading,map:LYRA_DEFAULT_map,navigation:LYRA_DEFAULT_navigation,noData:LYRA_DEFAULT_noData,open:LYRA_DEFAULT_open,popover:LYRA_DEFAULT_popover,resetZoom:LYRA_DEFAULT_resetZoom,search:LYRA_DEFAULT_search,select:LYRA_DEFAULT_select}}static{this.immutableEventDetails=Object.freeze(["lr-before-legend-visibility-change","lr-legend-visibility-change"])}static{this.styles=[LyraElement.styles,specialistTokens,styles,srOnly]}constructor(){super(),this.type="bar",this.labels=[],this._datasets=Object.freeze([]),this.datasetsSource=this._datasets,this.description=null,this.grid="both",this.indexAxis="x",this.label=null,this.legendPosition="top",this.scaleType="linear",this.annotations=[],this.max=null,this.min=null,this._plugins=Object.freeze([]),this.pluginsSource=this._plugins,this.area=!1,this.zoom=!1,this.height="280px",this.xLabel=null,this.yLabel=null,this.y2Label="",this.beginAtZero=!0,this.showDataTable=!1,this.dataTableToggle=!1,this.dataTableExpandedOverride=null,this.dataTableId=nextId("chart-data-table"),this.stacked=!1,this.withoutAnimation=!1,this.withoutLegend=!1,this.withoutTooltip=!1,this.dataLabels=!1,this.stackTotals=!1,this.configSource=void 0,this.loading=!0,this.loadFailed=!1,this.loadLibrary=withZoom=>withZoom?loadChartJsWithZoom():loadChartJs(),this.loadZoomFeature=()=>loadChartJsWithZoomResult(),this.loadDataLabelsFeature=()=>loadChartJsWithDataLabelsResult(),this.loadAnnotationFeature=()=>loadChartJsWithAnnotationResult(),this.loadGeneration=0,this.zoomLoadGeneration=0,this.dataLabelsLoadGeneration=0,this.annotationLoadGeneration=0,this.zoomFeatureState="idle",this.dataLabelsFeatureState="idle",this.annotationFeatureState="idle",this.zoomed=!1,this.visible=!0,this.intersectionGeneration=0,this.autoLegendPosition="right",this.chartAreaUpdateQueued=!1,this.builtPlugins=[],this.suppressZoomComplete=!1,this.descriptionId=nextId("chart-description"),this.keyboardDatumIndex=0,this.keyboardDatumAnnouncement="",this.lastDataTruncationAnnouncement="",this.isMounting=!0,this.announcedFeatureWarnings=new Set,this.onReducedMotionChange=()=>{!this.isConnected||this.ownerWindow!==this.reducedMotionWindow||this.drawIfVisible()},new ThemeWatcher(this,()=>{this.chart&&this.refreshTheme()})}canonicalLabels(){const source=this.labels;if(this.labelsSnapshot&&Object.is(this.labelsSnapshot.source,source))return this.labelsSnapshot.value;const value=projectChartStrings(source)??Object.freeze([]);return this.labelsSnapshot={source,value},value}canonicalAnnotations(){const source=this.annotations;if(this.annotationsSnapshot&&Object.is(this.annotationsSnapshot.source,source))return this.annotationsSnapshot.value;const value=projectChartAnnotations(source);return this.annotationsSnapshot={source,value},value}canonicalHiddenDatasets(){const source=this.hiddenDatasets;if(this.hiddenDatasetsSnapshot&&Object.is(this.hiddenDatasetsSnapshot.source,source))return this.hiddenDatasetsSnapshot.value;const value=projectHiddenDatasetIndexes(source);return this.hiddenDatasetsSnapshot={source,value},value}get datasets(){return this._datasets}set datasets(value){if(Object.is(value,this.datasetsSource)||Object.is(value,this._datasets))return;const previous=this._datasets;this._datasets=normalizeChartSeries(value),this.datasetsSource=value,this.requestUpdate("datasets",previous)}get plugins(){return this._plugins}set plugins(value){if(Object.is(value,this.pluginsSource)||Object.is(value,this._plugins))return;const previous=this._plugins;this._plugins=projectChartPlugins(value),this.pluginsSource=value,this.requestUpdate("plugins",previous)}get dataTableVisible(){return this.dataTableToggle?this.dataTableExpandedOverride??this.showDataTable:this.showDataTable}toggleDataTable(){this.dataTableExpandedOverride=!this.dataTableVisible}get config(){return this._config}set config(value){if(Object.is(value,this.configSource))return;const previous=this._config;this._config=projectChartConfiguration(value),this.configSource=value,this.requestUpdate("config",previous)}normalizeEffectiveConfig(config){return config}effectiveConfig(){return this.normalizeEffectiveConfig(this.config??this.slottedConfig)}onConfigSlotChange(event){const script=event.currentTarget.assignedElements({flatten:!0}).find(element=>element.localName==="script"&&element.type.trim().toLowerCase()==="application/json");let next;if(script)try{const parsed=JSON.parse(script.textContent??"");next=projectChartConfiguration(parsed)}catch{next=void 0}this.slottedConfig=next}effectiveData(){const generated={labels:[...this.canonicalLabels()],datasets:this.datasets.map(series=>{const{points:_points,...safeSeries}=series;return{...safeSeries,data:[...canonicalSeriesPoints(series)??canonicalSeriesData(series)],yAxisID:series.axis==="y2"?"y2":"y"}})},override=projectChartDataConfiguration(this.effectiveConfig()?.data),merged=override?deepMerge(generated,override):generated,projected=projectChartDataConfiguration(merged);return{labels:projected?.labels??[],datasets:projected?.datasets??[]}}callbackDatasetIndex(value,effective=this.effectiveData()){const datasetIndex=chartCallbackDatasetIndex(value);if(datasetIndex===void 0)return;const visualDatasetCount=this.visualDatasetSourceIndexes?.length??effective.datasets.length;if(datasetIndex>=visualDatasetCount)return;const sourceDatasetIndex=this.visualDatasetSourceIndexes?.[datasetIndex]??datasetIndex;return effective.datasets[sourceDatasetIndex]?datasetIndex:void 0}callbackIndexes(value,effective=this.effectiveData()){const hit=chartCallbackIndexes(value);if(!hit)return;const visualDatasetCount=this.visualDatasetSourceIndexes?.length??effective.datasets.length;if(hit.datasetIndex>=visualDatasetCount)return;const sourceDatasetIndex=this.visualDatasetSourceIndexes?.[hit.datasetIndex]??hit.datasetIndex,dataset=effective.datasets[sourceDatasetIndex];if(!dataset)return;const visualRowCount=this.visualRowSourceIndexes?.length??this.datasetValues(dataset).length;return hit.index<visualRowCount?hit:void 0}effectiveHiddenDatasetIndexes(){const effective=this.effectiveData(),controlled=normalizeHiddenDatasets(this.canonicalHiddenDatasets(),effective.datasets.length);return controlled!==void 0?controlled:effective.datasets.flatMap((dataset,index)=>chartDatasetBoolean(dataset,"hidden")===!0?[index]:[])}applyDatasetVisibility(){if(!this.chart)return!1;const chart=this.chart,sourceDatasetCount=this.effectiveData().datasets.length,datasetCount=this.visualDatasetSourceIndexes?.length??sourceDatasetCount,controlled=normalizeHiddenDatasets(this.canonicalHiddenDatasets(),sourceDatasetCount);if(controlled===void 0){for(let index=0;index<datasetCount;index++)try{const metadata=chart.getDatasetMeta?.(index);metadata&&(metadata.hidden=null)}catch{}return datasetCount>0}const hidden=new Set(controlled);for(let index=0;index<datasetCount;index++){const sourceIndex=this.visualDatasetSourceIndexes?.[index]??index;try{chart.setDatasetVisibility(index,!hidden.has(sourceIndex))}catch{}}return datasetCount>0}hasExplicitConfigData(){const config=this.effectiveConfig();if(!isSafeChartConfigurationRecord(config))return!1;const data=chartRecordValue(config,"data");return data!==MISSING_OWN_DATA_DESCRIPTOR&&data!==UNSAFE_OWN_DATA_DESCRIPTOR}datasetLabel(dataset,index){return chartDatasetLabel(dataset)||this.localize("chartPointLabel",void 0,{n:getNumberFormat(this.effectiveLocale).format(index+1)})}datasetValues(dataset){return chartDatasetValues(dataset)}isPointDataset(dataset){const values=this.datasetValues(dataset);return this.effectiveType()==="scatter"||this.effectiveType()==="bubble"||values.some(value=>normalizedChartPoint(value)!==null)}appendData(label,values,maxPoints=0){const limit=Number.isFinite(maxPoints)?Math.max(0,Math.floor(maxPoints)):0,appendedValues=projectChartNumberData(values)??Object.freeze([]);if(this.hasExplicitConfigData()){const effective=this.effectiveData();let domainLength2=effective.labels.length;for(const dataset of effective.datasets)this.isPointDataset(dataset)||(domainLength2=Math.max(domainLength2,this.datasetValues(dataset).length));const labels2=[...effective.labels,...Array.from({length:Math.max(0,domainLength2-effective.labels.length)},()=>""),label],effectiveConfig=this.effectiveConfig(),currentData=projectChartDataConfiguration(effectiveConfig?.data)??{},explicitLabels=admitChartArray(currentData.labels)!==void 0,explicitDatasets=admitChartArray(currentData.datasets)!==void 0,nextLabels=limit>0?labels2.slice(-limit):labels2;if(explicitLabels||(this.labels=nextLabels.map(labelText)),!explicitDatasets){const datasets2=this.datasets.map((series,index)=>{if(canonicalSeriesPoints(series)!==void 0)return series;const current=canonicalSeriesData(series),data=[...current,...Array.from({length:Math.max(0,domainLength2-current.length)},()=>null),appendedValues[index]??null];return{...series,data:limit>0?data.slice(-limit):data}});this.datasets=datasets2}if(explicitLabels||explicitDatasets){const nextData={...currentData};explicitLabels&&(nextData.labels=nextLabels),explicitDatasets&&(nextData.datasets=effective.datasets.map((dataset,index)=>{if(this.isPointDataset(dataset))return dataset;const current=this.datasetValues(dataset),peer=chartDatasetPeerValues(dataset),padding=Array.from({length:Math.max(0,domainLength2-current.length)},()=>null),data=[...peer,...padding,appendedValues[index]??null],canonical=[...current,...padding,appendedValues[index]??null],nextData2=limit>0?data.slice(-limit):data,nextCanonical=limit>0?canonical.slice(-limit):canonical;return canonicalChartDatasetDataValues.set(nextData2,Object.freeze(nextCanonical)),{...dataset,data:nextData2}})),this.config={...effectiveConfig,data:nextData}}return}const currentLabels=this.canonicalLabels();let domainLength=currentLabels.length;for(const series of this.datasets)canonicalSeriesPoints(series)===void 0&&(domainLength=Math.max(domainLength,canonicalSeriesData(series).length));const labels=[...currentLabels,...Array.from({length:Math.max(0,domainLength-currentLabels.length)},()=>""),label],datasets=this.datasets.map((series,index)=>{if(canonicalSeriesPoints(series)!==void 0)return series;const current=canonicalSeriesData(series),data=[...current,...Array.from({length:Math.max(0,domainLength-current.length)},()=>null),appendedValues[index]??null];return{...series,data:limit>0?data.slice(-limit):data}});this.labels=limit>0?labels.slice(-limit):labels,this.datasets=datasets}exportData(format){if(format==="png")return this.chart?.toBase64Image?.()??"";const effective=this.effectiveData(),columns=effective.datasets.map((dataset,datasetIndex)=>{const values=this.datasetValues(dataset),label=this.datasetLabel(dataset,datasetIndex),points=values.map(normalizedChartPoint).filter(point=>point!==null);return{dataset,label,point:this.isPointDataset(dataset),radius:points.some(point=>point.r!=null),pointLabel:points.some(point=>point.label!=null)}}),header=["label",...columns.flatMap(column=>column.point?[`${column.label} x`,`${column.label} y`,...column.radius?[`${column.label} r`]:[],...column.pointLabel?[`${column.label} label`]:[]]:[column.label])].map(escapeCsvField).join(",");let rowCount=effective.labels.length;for(const dataset of effective.datasets)rowCount=Math.max(rowCount,this.datasetValues(dataset).length);const exportCell=(value,metadata)=>typeof value!="number"||!Number.isFinite(value)?value??"":this.formatExportValue(value,metadata)??value,rows=Array.from({length:rowCount},(_,index)=>{const firstPoint=effective.datasets.map(dataset=>normalizedChartPoint(this.datasetValues(dataset)[index])).find(point=>point!==null),label=labelText(effective.labels[index])||firstPoint?.label||"";return[label,...columns.flatMap((column,datasetIndex)=>{const value=this.datasetValues(column.dataset)[index],metadata={datasetIndex,index,label:label||void 0,seriesLabel:column.label};if(!column.point)return[exportCell(value,metadata)];const point=normalizedChartPoint(value);return point?[exportCell(point.x,{...metadata,statistic:"x"}),exportCell(point.y,{...metadata,statistic:"y"}),...column.radius?[point.r==null?"":exportCell(point.r,{...metadata,statistic:"r"})]:[],...column.pointLabel?[point.label??""]:[]]:["","",...column.radius?[""]:[],...column.pointLabel?[""]:[]]})].map(escapeCsvField).join(",")});return[header,...rows].join(`\r
2
+ `)}connectedCallback(){super.connectedCallback(),this.stopAnnotationRegistrationWatch?.(),this.stopAnnotationRegistrationWatch=onAnnotationPluginRegistered(()=>this.rebuildAfterAnnotationRegistration()),this.syncAnnouncementSinks(),this.visible=!0,this.armReducedMotionWatcher();const ownerWindow=this.ownerWindow,ResizeObserverCtor=ownerWindow?.ResizeObserver;ResizeObserverCtor&&(this.resizeObserver=new ResizeObserverCtor(entries=>{const width=entries[0]?.contentRect.width??this.getBoundingClientRect().width;if(Number.isFinite(width)&&this.lastObservedInlineSize!==void 0&&Math.abs(width-this.lastObservedInlineSize)<.5||(this.lastObservedInlineSize=width,this.resizeDrawFrame!==void 0))return;const frameOwner=this.ownerWindow;frameOwner&&(this.resizeDrawFrameOwner=frameOwner,this.resizeDrawFrame=frameOwner.requestAnimationFrame(()=>{this.resizeDrawFrame=void 0,this.resizeDrawFrameOwner=void 0,!(!this.isConnected||this.ownerWindow!==frameOwner)&&(this.updateAutoLegendPosition()||this.drawIfVisible())}))}),this.resizeObserver.observe(this)),this.updateAutoLegendPosition();const generation=++this.loadGeneration;this.zoom&&this.requestZoomFeature(),this.loadLibrary(this.zoom).then(async mod=>{try{await this.updateComplete}catch{return}if(await new Promise(resolve=>this.updateBrowserDerivedState(resolve)),!(generation!==this.loadGeneration||!this.isConnected)){if(this.loading=!1,!mod){this.loadFailed=!0;return}this.loadFailed=!1,this.chartJsModule=mod,this.drawIfVisible()}}),this.needsDataLabels&&this.requestDataLabelsFeature(),this.needsAnnotations&&this.requestAnnotationFeature();const IntersectionObserverCtor=ownerWindow?.IntersectionObserver;if(IntersectionObserverCtor){const 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)}}disconnectedCallback(){super.disconnectedCallback(),this.stopAnnotationRegistrationWatch?.(),this.stopAnnotationRegistrationWatch=void 0,this.releaseAnnouncementSinks(),this.lastDataTruncationAnnouncement="",this.isMounting=!0,this.announcedFeatureWarnings.clear(),this.resizeObserver?.disconnect(),this.resizeObserver=void 0,this.resizeDrawFrame!==void 0&&this.resizeDrawFrameOwner?.cancelAnimationFrame(this.resizeDrawFrame),this.resizeDrawFrame=void 0,this.resizeDrawFrameOwner=void 0,this.lastObservedInlineSize=void 0,this.loadGeneration+=1,this.zoomLoadGeneration+=1,this.dataLabelsLoadGeneration+=1,this.annotationLoadGeneration+=1,this.discardChart(!1),this.builtPlugins=[],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}computedStyle(element=this){const view=this.ownerWindow;return view?view.getComputedStyle(element):"style"in element?element.style:this.style}applyDataLabelsPlugin(plugin){this.dataLabelsPlugin=plugin;let rebuilt=!1;plugin&&this.needsDataLabels&&this.chart&&(this.discardChart(!0),this.builtType=void 0,this.builtPlugins=[],rebuilt=!0),this.drawIfVisible(),rebuilt&&this.showsLegend&&this.requestUpdate()}get zoomFeatureAvailable(){return this.zoom&&this.zoomFeatureState==="available"}featureWarningMessages(){if(this.loading||this.loadFailed)return[];const messages=[];return this.zoom&&this.zoomFeatureState==="unavailable"&&messages.push(this.localize("chartZoomUnavailable")),this.dataLabelsFeatureState==="unavailable"&&(this.dataLabels&&messages.push(this.localize("chartDataLabelsUnavailable")),this.stackTotals&&messages.push(this.localize("chartStackTotalsUnavailable"))),this.needsAnnotations&&this.annotationFeatureState==="unavailable"&&messages.push(this.localize("chartAnnotationsUnavailable")),messages}requestZoomFeature(){const generation=++this.zoomLoadGeneration;if(!this.zoom){this.zoomFeatureState="idle";return}this.zoomFeatureState="loading",this.loadZoomFeature().then(result=>{generation!==this.zoomLoadGeneration||!this.isConnected||!this.zoom||(this.zoomFeatureState=result.kind==="available"?"available":"unavailable",result.kind!=="core-unavailable"&&!this.loading&&!this.chartJsModule&&(this.chartJsModule=result.mod),this.drawIfVisible(),this.requestUpdate())})}requestAnnotationFeature(){const generation=++this.annotationLoadGeneration;if(!this.needsAnnotations){this.annotationFeatureState="idle";return}this.annotationFeatureState="loading",this.loadAnnotationFeature().then(result=>{generation!==this.annotationLoadGeneration||!this.isConnected||!this.needsAnnotations||(result.kind!=="core-unavailable"&&!this.loading&&!this.chartJsModule&&(this.chartJsModule=result.mod),this.annotationFeatureState=result.kind==="available"?"available":"unavailable",this.applyAnnotationPlugin(result.kind==="available"?result.plugin:void 0),this.requestUpdate())})}applyAnnotationPlugin(plugin){this.annotationPlugin=plugin,plugin&&this.needsAnnotations&&this.chart&&(this.discardChart(!0),this.builtType=void 0,this.builtPlugins=[]),this.drawIfVisible()}rebuildAfterAnnotationRegistration(){!this.chart||this.needsAnnotations||(this.discardChart(!0),this.builtType=void 0,this.builtPlugins=[],this.drawIfVisible())}requestDataLabelsFeature(){const generation=++this.dataLabelsLoadGeneration;if(!this.needsDataLabels){this.dataLabelsFeatureState="idle";return}this.dataLabelsFeatureState="loading",this.loadDataLabelsFeature().then(result=>{generation!==this.dataLabelsLoadGeneration||!this.isConnected||!this.needsDataLabels||(this.dataLabelsFeatureState=result.kind==="available"?"available":"unavailable",result.kind!=="core-unavailable"&&!this.loading&&!this.chartJsModule&&(this.chartJsModule=result.mod),this.applyDataLabelsPlugin(result.kind==="available"?result.plugin:void 0),this.requestUpdate())})}willUpdate(changed){super.willUpdate(changed),this.zoomed&&this.effectiveType()!==this.builtType&&(this.zoomed=!1,this.emit("lr-zoom",{zoomed:!1}))}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("chartMissingLibrary"));const dataTruncation=this.dataTruncationMessage();if(wasMounting&&(this.lastDataTruncationAnnouncement=dataTruncation),!this.loading&&!this.loadFailed){const featureWarnings=this.featureWarningMessages();for(const warning of featureWarnings)this.announcedFeatureWarnings.has(warning)||this.assertiveAnnouncementSink?.announce(warning);this.announcedFeatureWarnings=new Set(featureWarnings),!wasMounting&&dataTruncation!==this.lastDataTruncationAnnouncement&&(this.lastDataTruncationAnnouncement=dataTruncation,dataTruncation&&this.politeAnnouncementSink?.announce(dataTruncation))}if(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;changed.has("zoom")&&this.requestZoomFeature(),(changed.has("dataLabels")||changed.has("stackTotals"))&&this.requestDataLabelsFeature(),changed.has("annotations")&&this.requestAnnotationFeature();const contentChanged=this.chartContentChanged(changed),effectiveDirection=this.effectiveDirection,effectiveLocale=this.effectiveLocale,contextChanged=this.lastDrawnDirection!==void 0&&this.lastDrawnDirection!==effectiveDirection||this.lastDrawnLocale!==void 0&&this.lastDrawnLocale!==effectiveLocale;this.lastDrawnDirection=effectiveDirection,this.lastDrawnLocale=effectiveLocale,!(!contentChanged&&!contextChanged)&&this.drawIfVisible()}chartContentChanged(changed){return["type","labels","datasets","hiddenDatasets","description","grid","indexAxis","label","legendPosition","min","max","scaleType","annotations","plugins","autoLegendPosition","valueFormatter","formatter","area","height","xLabel","yLabel","y2Label","beginAtZero","stacked","withoutAnimation","withoutLegend","withoutTooltip","dataLabels","stackTotals","config","slottedConfig","zoom","locale","strings","loading"].some(name=>changed.has(name))}seriesToDataset(s,index,palette,effectiveType,chartStyle=this.chartStyleOptions(palette),rowIndexes){const series=canonicalChartSeries(s);if(!series)return{label:"",data:[]};const points=canonicalSeriesPoints(series),fullNormalizedData=points?points.map(normalizedChartPoint):canonicalSeriesData(series).map(value=>typeof value=="number"&&Number.isFinite(value)?value:null),normalizedData=rowIndexes?rowIndexes.map(rowIndex=>fullNormalizedData[rowIndex]??null):fullNormalizedData,borderFallback=chartStyle.borderColors[index%chartStyle.borderColors.length]??palette[index%palette.length],fillFallback=chartStyle.fillColors[index%chartStyle.fillColors.length]??palette[index%palette.length],sourceColors=projectChartStrings(series.color),authoredColors=sourceColors&&rowIndexes?rowIndexes.map(rowIndex=>sourceColors[rowIndex]??""):typeof series.color=="string"?series.color:sourceColors,colors=typeof authoredColors=="string"?[resolveCanvasColor(this,authoredColors,borderFallback??"transparent")]:authoredColors?resolveCanvasColors(this,authoredColors,borderFallback??"transparent"):void 0,sliceChart=effectiveType==="pie"||effectiveType==="doughnut"||effectiveType==="polarArea",sliceFillColors=sliceChart&&chartStyle.fillColors.length?normalizedData.map((_,itemIndex)=>{const sourceIndex=rowIndexes?.[itemIndex]??itemIndex;return chartStyle.fillColors[sourceIndex%chartStyle.fillColors.length]}):void 0,sliceBorderColors=sliceChart&&chartStyle.borderColors.length?normalizedData.map((_,itemIndex)=>{const sourceIndex=rowIndexes?.[itemIndex]??itemIndex;return chartStyle.borderColors[sourceIndex%chartStyle.borderColors.length]}):void 0,fill=series.fill??this.area,backgroundColor=colors??sliceFillColors??fillFallback,datasetType=series.type??effectiveType,authoredSegmentColors=series.segmentColors&&rowIndexes?rowIndexes.map(rowIndex=>series.segmentColors[rowIndex]??""):series.segmentColors,segmentColors=authoredSegmentColors?resolveCanvasColors(this,authoredSegmentColors,colors?.[0]??borderFallback??"transparent"):void 0,authoredPointColors=series.pointColors&&rowIndexes?rowIndexes.map(rowIndex=>series.pointColors[rowIndex]??""):series.pointColors,backgroundColors=projectChartStrings(backgroundColor),backgroundColorValue=typeof backgroundColor=="string"?backgroundColor:void 0,resolvedBackgroundColor=datasetType==="line"&&fill&&(colors||!chartStyle.authoredFillColors[index%chartStyle.authoredFillColors.length])?backgroundColors?backgroundColors.map(color=>translucentAreaColor(this,color)):backgroundColorValue&&translucentAreaColor(this,backgroundColorValue):backgroundColor,encoding=forcedColorEncoding(index),resolvedBackgroundColors=projectChartStrings(resolvedBackgroundColor),resolvedBackgroundColorValue=typeof resolvedBackgroundColor=="string"?resolvedBackgroundColor:void 0,encodedBackgroundColor=chartStyle.forcedColors?resolvedBackgroundColors?resolvedBackgroundColors.map((color,itemIndex)=>this.forcedColorPattern(sliceChart?itemIndex:index,color)):resolvedBackgroundColorValue&&this.forcedColorPattern(index,resolvedBackgroundColorValue):resolvedBackgroundColor,pointRadii=projectChartPointRadii(series.pointRadius);return{label:series.label,data:normalizedData,type:series.type,fill,borderRadius:chartStyle.borderRadius,borderWidth:nonNegativeFinite(series.width,datasetType==="line"?chartStyle.lineBorderWidth:chartStyle.borderWidth),borderDash:series.dash?[4,4]:chartStyle.forcedColors?[...encoding.dash]:void 0,pointStyle:chartStyle.forcedColors?encoding.pointStyle:void 0,backgroundColor:encodedBackgroundColor,borderColor:colors?.[0]??sliceBorderColors??borderFallback,pointBackgroundColor:authoredPointColors?resolveCanvasColors(this,authoredPointColors,colors?.[0]??borderFallback??"transparent"):void 0,pointRadius:pointRadii?(rowIndexes?rowIndexes.map(rowIndex=>pointRadii[rowIndex]):pointRadii).map(radius=>nonNegativeFinite(radius,chartStyle.pointRadius)):nonNegativeFinite(series.pointRadius,chartStyle.pointRadius),...segmentColors?.length?{segment:{borderColor:ctx=>segmentColors[ctx.p0DataIndex%segmentColors.length]}}:{},yAxisID:series.axis==="y2"?"y2":"y"}}themeColors(){const cs=this.computedStyle(),grid=cs.getPropertyValue("--grid-color").trim()||cs.getPropertyValue("--lr-chart-grid-color").trim()||cs.getPropertyValue("--_lr-chart-grid-color").trim(),tick=cs.getPropertyValue("--lr-chart-tick-color").trim()||cs.getPropertyValue("--_lr-chart-tick-color").trim(),legend=cs.getPropertyValue("--lr-chart-legend-color").trim()||cs.getPropertyValue("--_lr-chart-legend-color").trim(),tooltipBg=cs.getPropertyValue("--lr-chart-tooltip-bg").trim()||cs.getPropertyValue("--_lr-chart-tooltip-bg").trim(),tooltipText=cs.getPropertyValue("--lr-chart-tooltip-text").trim()||cs.getPropertyValue("--_lr-chart-tooltip-text").trim();return{grid:resolveCanvasColor(this,grid,FALLBACK_GRID_COLOR),tick:resolveCanvasColor(this,tick,FALLBACK_TICK_COLOR),legend:resolveCanvasColor(this,legend,FALLBACK_LEGEND_COLOR),tooltipBg:resolveCanvasColor(this,tooltipBg,FALLBACK_TOOLTIP_BG),tooltipText:resolveCanvasColor(this,tooltipText,FALLBACK_TOOLTIP_TEXT)}}styleColor(name,fallback){const value=this.computedStyle().getPropertyValue(name).trim();return value?resolveCanvasColor(this,value,fallback):fallback}styleNumber(name,fallbackToken,fallback){const computed=this.computedStyle(),value=computed.getPropertyValue(name).trim()||computed.getPropertyValue(fallbackToken).trim(),direct=/^([+-]?(?:\d+(?:\.\d+)?|\.\d+))(?:px)?$/i.exec(value);if(direct){const resolved=Number.parseFloat(direct[1]);if(Number.isFinite(resolved)&&resolved>=0)return resolved}if(!value||!this.ownerWindow)return fallback;const probe=this.ownerDocument.createElement("span");probe.hidden=!0,probe.setAttribute("aria-hidden","true"),probe.style.inlineSize=value,(this.shadowRoot??this).append(probe);try{const resolved=Number.parseFloat(this.computedStyle(probe).inlineSize);return Number.isFinite(resolved)&&resolved>=0?resolved:fallback}finally{probe.remove()}}forcedColorPattern(index,background){return this.ownerWindow?createForcedColorPattern(this.ownerDocument,index,background,this.styleColor("--lr-color-surface",FALLBACK_TOOLTIP_BG)):background}chartStyleOptions(palette){const computed=this.computedStyle(),authoredFillColors=palette.map((_,index)=>index<6&&!!computed.getPropertyValue(`--fill-color-${index+1}`).trim()),borderColors=palette.map((fallback,index)=>index<6?this.styleColor(`--border-color-${index+1}`,fallback):fallback),fillColors=palette.map((fallback,index)=>index<6?this.styleColor(`--fill-color-${index+1}`,fallback):fallback);return{borderColors,fillColors,authoredFillColors,borderRadius:this.styleNumber("--border-radius","--lr-radius",6),borderWidth:this.styleNumber("--border-width","--lr-border-width-thin",1),gridBorderWidth:this.styleNumber("--grid-border-width","--lr-border-width-thin",1),lineBorderWidth:this.styleNumber("--line-border-width","--lr-border-width-medium",2),pointRadius:this.styleNumber("--point-radius","--lr-space-2xs",4),forcedColors:forcedColorsActive(this.ownerWindow)}}get needsDataLabels(){return this.dataLabels||this.stackTotals}get needsAnnotations(){return this.normalizedAnnotations().length>0}normalizedAnnotations(){return this.canonicalAnnotations()}annotationColor(tone){const token=`--lr-color-${tone??"neutral"}`,raw=this.computedStyle().getPropertyValue(token).trim();return resolveCanvasColor(this,raw,FALLBACK_TICK_COLOR)}annotationOptions(){const entries={};return this.normalizedAnnotations().forEach((entry,index)=>{const axis=entry.axis==="x"?"x":"y",color=this.annotationColor(entry.tone),label=entry.label?{content:entry.label,display:!0,color:this.themeColors().tick}:void 0;if(typeof entry.value=="number"){entries[`lr-annotation-${index}`]={type:"line",scaleID:axis,value:entry.value,borderColor:color,borderWidth:2,...label?{label}:{}};return}const bounds=axis==="y"?{yMin:entry.from,yMax:entry.to}:{xMin:entry.from,xMax:entry.to};entries[`lr-annotation-${index}`]={type:"box",...bounds,backgroundColor:translucentAreaColor(this,color),borderColor:color,borderWidth:0,...label?{label}:{}}}),entries}datalabelsOptions(theme,effectiveType){if(!this.needsDataLabels)return{display:!1};const effective=this.effectiveData(),datasets=effective.datasets,stackTotalsActive=this.stackTotals&&this.stacked&&(effectiveType==="bar"||effectiveType==="line"),sourceDatasetIndex=visualIndex=>this.visualDatasetSourceIndexes?.[visualIndex]??visualIndex,sourceRowIndex=visualIndex=>this.visualRowSourceIndexes?.[visualIndex]??visualIndex,topDatasetIndexByAxis=new Map;if(stackTotalsActive){const visualDatasetCount=this.visualDatasetSourceIndexes?.length??datasets.length;for(let visualIndex=0;visualIndex<visualDatasetCount;visualIndex+=1){const dataset=datasets[sourceDatasetIndex(visualIndex)],axis=chartDatasetAxis(dataset);topDatasetIndexByAxis.set(axis,visualIndex)}}const totalsByAxis=stackTotalsActive?{y:this.computeStackTotals("y"),y2:this.computeStackTotals("y2")}:void 0;return{color:theme.tick,align:stackTotalsActive?"end":"center",anchor:stackTotalsActive?"end":"center",display:context=>{const indexes=this.callbackIndexes(context,effective);if(!indexes)return!1;const{datasetIndex,index}=indexes,dataset=datasets[sourceDatasetIndex(datasetIndex)],axis=chartDatasetAxis(dataset);return stackTotalsActive?topDatasetIndexByAxis.get(axis)!==datasetIndex?this.dataLabels:totalsByAxis?.[axis][sourceRowIndex(index)]==null?this.dataLabels:!0:this.dataLabels},formatter:(value,context)=>{const indexes=this.callbackIndexes(context,effective);if(!indexes)return"";const{datasetIndex,index}=indexes,dataset=datasets[sourceDatasetIndex(datasetIndex)],axis=chartDatasetAxis(dataset);if(stackTotalsActive&&topDatasetIndexByAxis.get(axis)===datasetIndex){const total=totalsByAxis?.[axis][sourceRowIndex(index)];if(total!=null)return this.formatDataLabel(total)}const numeric=chartDatumNumericValue(value);return numeric===void 0?"":this.formatDataLabel(numeric)}}}formatDataLabel(value){if(this.formatter||this.valueFormatter){const formatted=this.formatter?.({value,surface:"visual"})??this.valueFormatter?.(value,"tooltip");if(formatted!=null)return String(formatted)}return value.toLocaleString(this.effectiveLocale)}computeStackTotals(axisId="y"){const effective=this.effectiveData(),members=effective.datasets.filter(dataset=>chartDatasetAxis(dataset)===axisId),categoryCount=members.reduce((max,dataset)=>Math.max(max,this.datasetValues(dataset).length),effective.labels.length),totals=[];for(let i=0;i<categoryCount;i++){let sum=0,any=!1;for(const dataset of members){const value=this.datasetValues(dataset)[i],numeric=chartDatumNumericValue(value);numeric!==void 0&&(sum=finiteAdd(sum,numeric),any=!0)}totals.push(any?sum:null)}return totals}seriesPalette(){return seriesPalette(this)}tickOptions(theme,kind="value"){return{color:theme.tick,...(this.formatter||this.valueFormatter)&&kind==="value"?{callback:value=>this.formatValue(value,"tick")}:{}}}effectiveIndexAxis(){return this.indexAxis==="y"?"y":"x"}valueScaleType(){return this.scaleType==="logarithmic"?"logarithmic":"linear"}valueBeginAtZero(){return this.valueScaleType()==="logarithmic"?void 0:this.beginAtZero}scaleBounds(){const min=this.min!==null&&Number.isFinite(this.min)?finiteNumber(this.min,0):void 0,max=this.max!==null&&Number.isFinite(this.max)?finiteNumber(this.max,0):void 0;return{...min!==void 0?{min}:{},...max!==void 0?{max}:{}}}gridAxisVisible(axis){const grid=normalizeChartGrid(this.grid);return grid==="both"||grid===axis}buildScales(effectiveType,theme,chartStyle){if(effectiveType==="pie"||effectiveType==="doughnut")return{};if(effectiveType==="radar"||effectiveType==="polarArea")return{r:{beginAtZero:this.beginAtZero,...this.scaleBounds(),ticks:{...this.tickOptions(theme),showLabelBackdrop:!1,z:1},grid:{color:theme.grid,display:this.gridAxisVisible("y"),lineWidth:chartStyle.gridBorderWidth},border:{width:chartStyle.gridBorderWidth},angleLines:{color:theme.grid,display:this.gridAxisVisible("x"),lineWidth:chartStyle.gridBorderWidth},pointLabels:{color:theme.tick}}};const hasY2=this.effectiveData().datasets.some(dataset=>chartDatasetAxis(dataset)==="y2"),rtl=this.effectiveDirection==="rtl",stacked=this.stacked&&(effectiveType==="bar"||effectiveType==="line"),horizontalCategorical=(effectiveType==="bar"||effectiveType==="line")&&this.effectiveIndexAxis()==="y",xKind=effectiveType==="scatter"||effectiveType==="bubble"||horizontalCategorical?"value":"category",yKind=horizontalCategorical?"category":"value",valueAxis=horizontalCategorical?"x":"y",bounds=this.scaleBounds();return{x:{type:xKind==="value"?this.valueScaleType():"category",beginAtZero:xKind==="value"?this.valueBeginAtZero():void 0,...valueAxis==="x"?bounds:{},title:{display:!!this.xLabel,text:this.xLabel,color:theme.tick},ticks:this.tickOptions(theme,xKind),grid:{color:theme.grid,display:this.gridAxisVisible("x"),lineWidth:chartStyle.gridBorderWidth},border:{width:chartStyle.gridBorderWidth},stacked},y:{type:yKind==="value"?this.valueScaleType():"category",position:rtl?"right":"left",beginAtZero:yKind==="value"?this.valueBeginAtZero():void 0,...valueAxis==="y"?bounds:{},title:{display:!!this.yLabel,text:this.yLabel,color:theme.tick},ticks:this.tickOptions(theme,yKind),grid:{color:theme.grid,display:this.gridAxisVisible("y"),lineWidth:chartStyle.gridBorderWidth},border:{width:chartStyle.gridBorderWidth},stacked},...hasY2?{y2:{type:this.valueScaleType(),position:rtl?"left":"right",...valueAxis==="y"?bounds:{},grid:{drawOnChartArea:!1,color:theme.grid,display:this.gridAxisVisible("y"),lineWidth:chartStyle.gridBorderWidth},border:{width:chartStyle.gridBorderWidth},title:{display:!!this.y2Label,text:this.y2Label,color:theme.tick},ticks:this.tickOptions(theme),stacked}}:{}}}handlePointClick(event,chart){let elements;try{elements=chart.getElementsAtEventForMode(event,"nearest",{intersect:!0},!0)}catch{return}const admission=admitChartArray(elements);if(!admission||!chartArrayIsStillAdmitted(admission))return;const first=chartRecordValue(admission.source,"0");if(first===MISSING_OWN_DATA_DESCRIPTOR||first===UNSAFE_OWN_DATA_DESCRIPTOR)return;const effective=this.effectiveData(),hit=this.callbackIndexes(first.value,effective);if(!hit)return;const datasetIndex=this.visualDatasetSourceIndexes?.[hit.datasetIndex]??hit.datasetIndex,index=this.visualRowSourceIndexes?.[hit.index]??hit.index,value=this.datasetValues(effective.datasets[datasetIndex])[index]??null,label=normalizedChartPoint(value)?.label??(labelText(effective.labels[index])||void 0);this.activateDatum({datasetIndex,index,label,value})}chartDatums(){const effective=this.effectiveData(),datasets=(this.visualDatasetSourceIndexes??effective.datasets.map((_dataset,index)=>index)).map(index=>effective.datasets[index]);let rowIndexes=this.visualRowSourceIndexes;if(!rowIndexes){let sourceRowCount=effective.labels.length;for(const dataset of datasets)sourceRowCount=Math.max(sourceRowCount,chartDatasetValues(dataset).length);rowIndexes=Array.from({length:sourceRowCount},(_value,index)=>index)}const labels=rowIndexes.map(index=>effective.labels[index]),rowCount=rowIndexes.length,sample=sampleChartTableIndexes(rowCount,datasets.length),datums=[];return sample.seriesIndexes.forEach(datasetIndex=>{const dataset=datasets[datasetIndex];if(!dataset)return;const values=chartDatasetValues(dataset);sample.rowIndexes.forEach(localIndex=>{const sourceIndex=rowIndexes[localIndex]??localIndex,value=values[sourceIndex];value!=null&&(typeof value=="number"&&!Number.isFinite(value)||datums.push({datasetIndex:this.visualDatasetSourceIndexes?.[datasetIndex]??datasetIndex,index:sourceIndex,label:normalizedChartPoint(value)?.label??(labelText(labels[localIndex])||void 0),value}))})}),datums}datumDisplayValue(value,context={surface:"spoken"}){const{surface,...metadata}=context,format=(numeric2,statistic)=>surface==="table"?this.formatTableValue(numeric2,{...metadata,statistic}):this.formatSpokenValue(numeric2,{...metadata,statistic}),point=normalizedChartPoint(value);if(point){const x=format(point.x,"x"),y=format(point.y,"y"),coordinates=point.r==null?this.localize("chartPointCoordinates",void 0,{x,y}):this.localize("chartBubblePointCoordinates",void 0,{x,y,radius:format(point.r,"r")});return point.label!==void 0?this.localize("chartLabeledPoint",void 0,{label:point.label,coordinates}):coordinates}const numeric=chartDatumNumericValue(value);return numeric===void 0?labelText(value):format(numeric)}datumAnnouncement(datum,position,total){const dataset=this.effectiveData().datasets[datum.datasetIndex],series=chartDatasetLabel(dataset)||this.localize("chartSeriesLabel");return this.localize("liteChartMarkSummary",void 0,{series,label:datum.label??this.localize("chartPointLabel",void 0,{n:getNumberFormat(this.effectiveLocale).format(datum.index+1)}),value:this.datumDisplayValue(datum.value,{surface:"spoken",datasetIndex:datum.datasetIndex,index:datum.index,label:datum.label,seriesLabel:series}),index:getNumberFormat(this.effectiveLocale).format(position+1),total:getNumberFormat(this.effectiveLocale).format(total)})}activateDatum(datum){const datums=this.chartDatums(),position=datums.findIndex(candidate=>candidate.datasetIndex===datum.datasetIndex&&candidate.index===datum.index);position>=0&&(this.keyboardDatumIndex=position,this.keyboardDatumAnnouncement=this.datumAnnouncement(datum,position,datums.length));const type=this.effectiveType(),kind=type==="bar"?"bar":type==="pie"||type==="doughnut"||type==="polarArea"?"slice":type==="line"?"segment":"point";this.emit("lr-datum-activate",{...datum,kind}),this.emit("lr-point-click",datum)}onCanvasFocus(){const datums=this.chartDatums();datums.length&&(this.keyboardDatumIndex=Math.min(this.keyboardDatumIndex,datums.length-1),this.keyboardDatumAnnouncement=this.datumAnnouncement(datums[this.keyboardDatumIndex],this.keyboardDatumIndex,datums.length))}onCanvasKeyDown(event){const datums=this.chartDatums();if(!datums.length)return;if(this.keyboardDatumIndex=Math.min(this.keyboardDatumIndex,datums.length-1),event.key==="Enter"||event.key===" "){event.preventDefault(),this.activateDatum(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.datumAnnouncement(datums[next],next,datums.length)}effectiveType(){return this.effectiveConfig()?.type??normalizeChartType(this.type)}localizedChartType(){const type=this.effectiveType(),key=CHART_TYPE_MESSAGE_KEYS[type];return key?this.localize(key):String(type)}formatValue(value,context){const numeric=chartDatumNumericValue(value);return numeric===void 0?value:this.formatter?.({value:numeric,surface:context})??this.valueFormatter?.(numeric,context)??value}legendValue(item,_chart){const effective=this.effectiveData(),datasetIndex=this.callbackDatasetIndex(item,effective);if(datasetIndex===void 0)return;const sourceDatasetIndex=this.visualDatasetSourceIndexes?.[datasetIndex]??datasetIndex,data=this.datasetValues(effective.datasets[sourceDatasetIndex]);if(!data.length)return;const visualRows=this.visualRowSourceIndexes??data.map((_value,index)=>index),indexDescriptor=chartRecordValue(item,"index");if(indexDescriptor===UNSAFE_OWN_DATA_DESCRIPTOR)return;if(indexDescriptor!==MISSING_OWN_DATA_DESCRIPTOR){const itemIndex=chartIndex(indexDescriptor.value);return itemIndex===void 0||itemIndex>=visualRows.length?void 0:chartDatumNumericValue(data[visualRows[itemIndex]]??null)}let sum=0,hasValue=!1;for(const sourceRowIndex of visualRows){const datum=data[sourceRowIndex],value=chartDatumNumericValue(datum);value!==void 0&&(sum=finiteAdd(sum,value),hasValue=!0)}return hasValue?sum:void 0}legendLabels(chart){const generateLabels=this.chartJsModule?.defaults?.plugins?.legend?.labels?.generateLabels;let generated;if(generateLabels)try{generated=projectChartLegendItems(generateLabels(chart))}catch{generated=void 0}const effective=this.effectiveData(),fallbackDatasets=(this.visualDatasetSourceIndexes??effective.datasets.map((_dataset,index)=>index)).map(sourceIndex=>effective.datasets[sourceIndex]);return(generated??fallbackDatasets.map((dataset,index)=>({text:chartDatasetLabel(dataset)||String(index+1),datasetIndex:index}))).map(item=>{const value=this.legendValue(item,chart),formatted=this.formatValue(value,"legend");return formatted===value||formatted===void 0?item:{...item,text:this.localize("chartValueLabel",void 0,{label:labelText(chartDatasetValue(item,"text")),value:String(formatted)})}})}tooltipLabel(context){const parsed=projectChartDatum(chartDatasetValue(context,"parsed")),raw=projectChartDatum(chartDatasetValue(context,"raw")),rawValue=normalizedChartPoint(parsed)?.y??parsed??raw,formatted=this.formatValue(rawValue,"tooltip");if(formatted===rawValue||formatted===void 0)return;const label=chartDatasetLabel(chartDatasetValue(context,"dataset"));return label?this.localize("chartValueLabel",void 0,{label,value:String(formatted)}):String(formatted)}updateAutoLegendPosition(){const width=this.getBoundingClientRect().width||this.clientWidth,next=width>0&&width<480?"bottom":"right";return next===this.autoLegendPosition?!1:(this.autoLegendPosition=next,!0)}legendPositionForConfig(){const position=normalizeLegendPosition(this.legendPosition);return position==="auto"?this.autoLegendPosition:position==="start"?this.effectiveDirection==="rtl"?"right":"left":position==="end"?this.effectiveDirection==="rtl"?"left":"right":position}legendPositionForLayout(){const position=this.legendPositionForConfig();return position==="top"||position==="right"||position==="left"?position:"bottom"}legendGridPlacement(){const position=normalizeLegendPosition(this.legendPosition);if(position==="auto")return this.autoLegendPosition==="right"?"inline-end":"bottom";if(position==="start")return"inline-start";if(position==="end")return"inline-end";if(position==="top")return"top";const rtl=this.effectiveDirection==="rtl";return position==="left"?rtl?"inline-end":"inline-start":position==="right"?rtl?"inline-start":"inline-end":"bottom"}updateChartArea(chart=this.chart){const area=chart?.chartArea;if(!area)return;const next={top:Number(area.top),left:Number(area.left),right:Number(area.right),bottom:Number(area.bottom),width:Number(area.width),height:Number(area.height)};if(![next.top,next.left,next.right,next.bottom,next.width,next.height].every(Number.isFinite))return;const previous=this.resolvedChartArea;previous&&previous.top===next.top&&previous.left===next.left&&previous.right===next.right&&previous.bottom===next.bottom&&previous.width===next.width&&previous.height===next.height||(this.resolvedChartArea=next,this.chartAreaUpdateQueued||(this.chartAreaUpdateQueued=!0,queueMicrotask(()=>{this.chartAreaUpdateQueued=!1,this.isConnected&&this.requestUpdate()})))}get chartArea(){return this.resolvedChartArea}buildConfig(){const theme=this.themeColors(),effectiveType=this.effectiveType(),palette=this.seriesPalette(),chartStyle=this.chartStyleOptions(palette),rawDataEscapeHatch=this.hasExplicitConfigData(),labels=this.canonicalLabels();let visualRows,visualSeries;if(rawDataEscapeHatch)this.visualRowSourceIndexes=void 0,this.visualDatasetSourceIndexes=void 0;else{let rowCount=labels.length;for(const series of this.datasets)rowCount=Math.max(rowCount,(canonicalSeriesPoints(series)??canonicalSeriesData(series)).length);const sample=sampleChartTableIndexes(rowCount,this.datasets.length);visualRows=sample.rowIndexes.length<rowCount?sample.rowIndexes:void 0,visualSeries=sample.seriesIndexes.length<this.datasets.length?sample.seriesIndexes:void 0,this.visualRowSourceIndexes=visualRows,this.visualDatasetSourceIndexes=visualSeries}const generated={type:effectiveType,data:{labels:visualRows?visualRows.map(index=>labels[index]??""):[...labels],datasets:visualSeries?visualSeries.map(sourceIndex=>this.seriesToDataset(this.datasets[sourceIndex],sourceIndex,palette,effectiveType,chartStyle,visualRows)):this.datasets.map((s,i)=>this.seriesToDataset(s,i,palette,effectiveType,chartStyle,visualRows))},...this.plugins.length||this.needsDataLabels&&this.dataLabelsPlugin?{plugins:[...this.plugins,...this.needsDataLabels&&this.dataLabelsPlugin?[this.dataLabelsPlugin]:[]]}:{},options:{locale:this.effectiveLocale,responsive:!0,maintainAspectRatio:!1,indexAxis:this.effectiveIndexAxis(),animation:this.withoutAnimation||prefersReducedMotion(this.ownerWindow)?!1:void 0,interaction:{intersect:!1,mode:effectiveType==="scatter"?"nearest":"index"},onClick:(event,_elements,chart)=>this.handlePointClick(event,chart),plugins:{...this.needsAnnotations&&this.annotationPlugin?{annotation:{annotations:this.annotationOptions()}}:{},legend:{display:!1,position:this.legendPositionForConfig(),labels:{color:theme.legend,...this.formatter||this.valueFormatter?{generateLabels:chart=>this.legendLabels(chart)}:{}}},tooltip:{enabled:!this.withoutTooltip,backgroundColor:theme.tooltipBg,titleColor:theme.tooltipText,bodyColor:theme.tooltipText,...this.formatter||this.valueFormatter?{callbacks:{label:context=>this.tooltipLabel(context)}}:{},filter:item=>{const effective=this.effectiveData(),datasetIndex=this.callbackDatasetIndex(item,effective);if(datasetIndex===void 0)return!1;const sourceDatasetIndex=this.visualDatasetSourceIndexes?.[datasetIndex]??datasetIndex;return chartDatasetBoolean(effective.datasets[sourceDatasetIndex],"noTooltip")!==!0}},zoom:this.zoom&&this.zoomFeatureState!=="unavailable"?{pan:{enabled:!1},zoom:{wheel:{enabled:!0},drag:{enabled:!0},pinch:{enabled:!0},mode:"x",onZoomComplete:()=>{this.suppressZoomComplete||(this.zoomed=!0,this.emit("lr-zoom",{zoomed:!0}))}},limits:{x:{min:"original",max:"original"}}}:void 0,datalabels:this.datalabelsOptions(theme,effectiveType)},onResize:chart=>this.updateChartArea(chart),scales:this.buildScales(effectiveType,theme,chartStyle)}},effectiveConfig=this.effectiveConfig();if(!effectiveConfig)return generated;const merged=deepMerge(generated,effectiveConfig),requiredPlugins=[...this.plugins,...this.needsDataLabels&&this.dataLabelsPlugin?[this.dataLabelsPlugin]:[]],mergedPluginAdmission=admitChartArray(merged.plugins),mergedPlugins=projectChartPlugins(merged.plugins,mergedPluginAdmission);return mergedPluginAdmission||requiredPlugins.length?merged.plugins=[...mergedPlugins,...requiredPlugins.filter(plugin=>!mergedPlugins.includes(plugin))]:merged.plugins!==void 0&&(merged.plugins=[]),merged}draw(){if(!this.chartJsModule||!this.canvasEl)return;const config=this.buildConfig(),effectiveType=config.type,nextPlugins=projectChartPlugins(config.plugins),samePlugins=nextPlugins.length===this.builtPlugins.length&&nextPlugins.every((plugin,index)=>plugin===this.builtPlugins[index]);if(this.chart&&this.builtType===effectiveType&&samePlugins){this.chart.data=config.data,this.chart.options=config.options??{},this.applyDatasetVisibility(),this.chart.update("none"),this.updateChartArea(this.chart);return}this.discardChart(!0),this.chart=new this.chartJsModule.Chart(this.canvasEl,config),this.builtType=effectiveType,this.builtPlugins=[...nextPlugins],this.canonicalHiddenDatasets()!==void 0&&(this.applyDatasetVisibility(),this.chart.update("none")),this.updateChartArea(this.chart)}drawIfVisible(){!this.isConnected||!this.visible||this.draw()}discardChart(announceZoomReset){this.chart?.destroy(),this.chart=void 0,this.resolvedChartArea=void 0,this.zoomed&&(this.zoomed=!1,announceZoomReset&&this.emit("lr-zoom",{zoomed:!1}))}renderChart(){this.drawIfVisible()}resetZoom(){this.suppressZoomComplete=!0;try{this.chart?.resetZoom?.()}finally{this.suppressZoomComplete=!1}this.zoomed=!1,this.emit("lr-zoom",{zoomed:!1})}refreshTheme(){this.drawIfVisible(),this.showsLegend&&this.requestUpdate()}summarizeSeries(dataset){let count=0,first=0,last=0,min=0,minIndex=0,max=0,maxIndex=0;for(const[index,datum]of this.datasetValues(dataset).entries()){const value=chartDatumNumericValue(datum);value!==void 0&&(count===0&&(first=value,min=value,minIndex=index,max=value,maxIndex=index),last=value,value<min&&(min=value,minIndex=index),value>max&&(max=value,maxIndex=index),count++)}return count?{count,first,last,min,minIndex,max,maxIndex}:void 0}formatSummaryValue(value){return getNumberFormat(this.effectiveLocale).format(value)}formatTableValue(value,metadata={}){return this.formatter?.({value,surface:"table",...metadata})??this.valueFormatter?.(value,"table")??this.formatSummaryValue(value)}formatExportValue(value,metadata={}){return this.formatter?.({value,surface:"export",...metadata})??this.valueFormatter?.(value,"table")}formatSpokenValue(value,metadata={}){return this.formatter?.({value,surface:"spoken",...metadata})??this.formatSummaryValue(value)}tableStackAxes(){const type=this.effectiveType();if(!this.stackTotals||!this.stacked||type!=="bar"&&type!=="line")return[];const present=new Set;for(const dataset of this.effectiveData().datasets)present.add(chartDatasetAxis(dataset));return["y","y2"].filter(axis=>present.has(axis))}tableStackTotalLabel(axis,axisCount){if(axisCount===1)return this.localize("chartTotal");const axisLabel=axis==="y2"?this.y2Label||this.localize("chartSecondaryAxis"):this.yLabel||this.localize("chartPrimaryAxis");return this.localize("chartAxisTotal",void 0,{axis:axisLabel})}accessibleName(fallback){return this.getAttribute("aria-label")??this.label??fallback}chartDescription(){if(this.description)return this.description;const effective=this.effectiveData(),sample=this.dataTableSample(effective),includePointDetails=!this.hasCustomDataTable(),summaries=sample.seriesIndexes.map(index=>{const dataset=effective.datasets[index],seriesLabel=this.datasetLabel(dataset,index),values=this.summarizeSeries(dataset);if(!values)return this.localize("chartSeriesNoData",void 0,{label:seriesLabel});const trend=values.last>values.first?this.localize("chartTrendIncreasing"):values.last<values.first?this.localize("chartTrendDecreasing"):this.localize("chartTrendFlat"),rawValues=this.datasetValues(dataset),datumLabelAt=rowIndex=>{const datum=rawValues[rowIndex];return normalizedChartPoint(datum)?.label??(labelText(effective.labels[rowIndex])||void 0)},summary=this.localize("chartSummary",void 0,{label:seriesLabel,count:this.formatSummaryValue(values.count),min:this.formatSpokenValue(values.min,{datasetIndex:index,index:values.minIndex,label:datumLabelAt(values.minIndex),seriesLabel,statistic:"min"}),max:this.formatSpokenValue(values.max,{datasetIndex:index,index:values.maxIndex,label:datumLabelAt(values.maxIndex),seriesLabel,statistic:"max"}),trend}),pointDetails=includePointDetails?sample.rowIndexes.flatMap(rowIndex=>{const point=rawValues[rowIndex];return normalizedChartPoint(point)?[this.datumDisplayValue(point,{surface:"spoken",datasetIndex:index,index:rowIndex,label:datumLabelAt(rowIndex),seriesLabel})]:[]}):[];return pointDetails.length?[summary,...pointDetails].join(this.localize("chartSummarySeparator")):summary}),base=summaries.length?this.localize("chartSummaryWithData",void 0,{type:this.localizedChartType(),summaries:summaries.join(this.localize("chartSummarySeparator"))}):this.localize("chartSummaryEmpty",void 0,{type:this.localizedChartType()}),annotationLabels=this.normalizedAnnotations().map(entry=>entry.label?.trim()).filter(label=>!!label);return annotationLabels.length?[base,...annotationLabels].join(this.localize("chartSummarySeparator")):base}dataTableSample(effective=this.effectiveData()){let rowCount=effective.labels.length;for(const dataset of effective.datasets)rowCount=Math.max(rowCount,this.datasetValues(dataset).length);const indexes=sampleChartTableIndexes(rowCount,effective.datasets.length);return{rowCount,seriesCount:effective.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 effective=this.effectiveData(),sample=this.dataTableSample(effective),stackAxes=this.tableStackAxes(),stackTotals=new Map(stackAxes.map(axis=>[axis,this.computeStackTotals(axis)]));return html`
3
3
  <table class=${this.dataTableVisible?nothing:"sr-only"}>
4
4
  <caption>${this.accessibleName(this.localize("chartData"))}</caption>
5
5
  <thead>
@@ -12,25 +12,25 @@ var __decorate=function(decorators,target,key,desc){var c=arguments.length,r=c<3
12
12
  <tbody>
13
13
  ${sample.rowIndexes.map(index=>html`
14
14
  <tr>
15
- <th scope="row">${labelText(effective.labels[index])||sample.seriesIndexes.map(datasetIndex=>this.datasetValues(effective.datasets[datasetIndex])[index]).find(isChartPoint)?.label||this.localize("chartPointLabel",void 0,{n:this.formatSummaryValue(index+1)})}</th>
16
- ${sample.seriesIndexes.map(datasetIndex=>{const dataset=effective.datasets[datasetIndex],datum=this.datasetValues(dataset)[index],value=isChartPoint(datum)?datum.y:datum;if(typeof value!="number"||!Number.isFinite(value))return html`<td>${this.localize("noData")}</td>`;const detail={datasetIndex,index,label:isChartPoint(datum)&&datum.label!==void 0?datum.label:labelText(effective.labels[index])||void 0,value:datum};return html`<td><button
15
+ <th scope="row">${labelText(effective.labels[index])||sample.seriesIndexes.map(datasetIndex=>normalizedChartPoint(this.datasetValues(effective.datasets[datasetIndex])[index])).find(point=>point!==null)?.label||this.localize("chartPointLabel",void 0,{n:this.formatSummaryValue(index+1)})}</th>
16
+ ${sample.seriesIndexes.map(datasetIndex=>{const dataset=effective.datasets[datasetIndex],datum=this.datasetValues(dataset)[index],point=normalizedChartPoint(datum),value=point?.y??chartDatumNumericValue(datum);if(value===void 0)return html`<td>${this.localize("noData")}</td>`;const detail={datasetIndex,index,label:point?.label??(labelText(effective.labels[index])||void 0),value:datum},metadata={datasetIndex,index,label:detail.label,seriesLabel:this.datasetLabel(dataset,datasetIndex)};return html`<td><button
17
17
  type="button"
18
18
  tabindex=${this.dataTableVisible?"0":"-1"}
19
19
  @click=${()=>this.activateDatum(detail)}
20
- >${isChartPoint(datum)?this.datumDisplayValue(datum):this.formatTableValue(value)}</button></td>`})}
21
- ${stackAxes.map(axis=>{const total=stackTotals.get(axis)?.[index];return html`<td>${total==null?this.localize("noData"):this.formatTableValue(total)}</td>`})}
20
+ >${point?this.datumDisplayValue(datum,{surface:"table",...metadata}):this.formatTableValue(value,metadata)}</button></td>`})}
21
+ ${stackAxes.map(axis=>{const total=stackTotals.get(axis)?.[index];return html`<td>${total==null?this.localize("noData"):this.formatTableValue(total,{index,label:labelText(effective.labels[index])||void 0,statistic:"total"})}</td>`})}
22
22
  </tr>
23
- `)}
23
+ `)}
24
24
  </tbody>
25
25
  </table>
26
- `}hasCustomDataTable(){return Array.from(this.children).some(child=>child.getAttribute("slot")==="data-table")}legendTextFor(dataset,datasetIndex,rowIndexes){const label=this.datasetLabel(dataset,datasetIndex);if(!this.formatter&&!this.valueFormatter)return label;const source=this.datasetValues(dataset),selected=rowIndexes??source.map((_,index)=>index),values=[];for(const index of selected){const datum=source[index],value2=isChartPoint(datum)?datum.y:Number(datum);Number.isFinite(value2)&&values.push(value2)}if(!values.length)return label;const value=values.reduce((sum,item)=>finiteAdd(sum,item),0),formatted=this.formatValue(value,"legend");return formatted===value||formatted===void 0?label:this.localize("chartValueLabel",void 0,{label,value:String(formatted)})}legendColor(dataset,datasetIndex,palette=this.seriesPalette()){const fallback=palette[datasetIndex%palette.length]??"transparent",rawCandidate=dataset.backgroundColor??dataset.borderColor??dataset.color,candidate=Array.isArray(rawCandidate)?rawCandidate[0]:rawCandidate;return typeof candidate=="string"?resolveCanvasColor(this,candidate,fallback):fallback}toggleDataset(datasetIndex){if(!this.chart)return;const datasetCount=this.effectiveData().datasets.length;if(datasetIndex<0||datasetIndex>=datasetCount)return;const hidden=this.effectiveHiddenDatasetIndexes(),wasHidden=hidden.includes(datasetIndex),nextHidden=wasHidden?hidden.filter(index=>index!==datasetIndex):[...hidden,datasetIndex].sort((left,right)=>left-right),visible=wasHidden;this.emit("lr-before-legend-visibility-change",legendVisibilityDetail(datasetIndex,visible,nextHidden),{cancelable:!0}).defaultPrevented||(this.hiddenDatasets=nextHidden,this.applyDatasetVisibility(),this.chart.update("none"),this.requestUpdate(),this.emit("lr-legend-visibility-change",legendVisibilityDetail(datasetIndex,visible,nextHidden)))}renderLegend(){if(!this.showsLegend)return nothing;const effective=this.effectiveData();if(!effective.datasets.length)return nothing;const sample=this.dataTableSample(effective),palette=this.seriesPalette(),controlledHidden=normalizeHiddenDatasets(this.hiddenDatasets,effective.datasets.length),controlledHiddenSet=controlledHidden===void 0?void 0:new Set(controlledHidden);return html`
26
+ `}hasCustomDataTable(){return Array.from(this.children).some(child=>child.getAttribute("slot")==="data-table")}legendTextFor(dataset,datasetIndex,rowIndexes){const label=this.datasetLabel(dataset,datasetIndex);if(!this.formatter&&!this.valueFormatter)return label;const source=this.datasetValues(dataset),selected=rowIndexes??source.map((_,index)=>index),values=[];for(const index of selected){const datum=source[index],value2=chartDatumNumericValue(datum);value2!==void 0&&values.push(value2)}if(!values.length)return label;const value=values.reduce((sum,item)=>finiteAdd(sum,item),0),formatted=this.formatValue(value,"legend");return formatted===value||formatted===void 0?label:this.localize("chartValueLabel",void 0,{label,value:String(formatted)})}legendColor(dataset,datasetIndex,palette=this.seriesPalette()){const fallback=palette[datasetIndex%palette.length]??"transparent",rawCandidate=chartDatasetValue(dataset,"backgroundColor")??chartDatasetValue(dataset,"borderColor")??chartDatasetValue(dataset,"color"),array=admitChartArray(rawCandidate),first=array?chartRecordValue(array.source,"0"):void 0,candidate=first===MISSING_OWN_DATA_DESCRIPTOR||first===UNSAFE_OWN_DATA_DESCRIPTOR?void 0:first?.value??rawCandidate;return typeof candidate=="string"?resolveCanvasColor(this,candidate,fallback):fallback}toggleDataset(datasetIndex){if(!this.chart)return;const datasetCount=this.effectiveData().datasets.length;if(datasetIndex<0||datasetIndex>=datasetCount)return;const hidden=this.effectiveHiddenDatasetIndexes(),wasHidden=hidden.includes(datasetIndex),nextHidden=wasHidden?hidden.filter(index=>index!==datasetIndex):[...hidden,datasetIndex].sort((left,right)=>left-right),visible=wasHidden;this.emit("lr-before-legend-visibility-change",legendVisibilityDetail(datasetIndex,visible,nextHidden),{cancelable:!0}).defaultPrevented||(this.hiddenDatasets=nextHidden,this.applyDatasetVisibility(),this.chart.update("none"),this.requestUpdate(),this.emit("lr-legend-visibility-change",legendVisibilityDetail(datasetIndex,visible,nextHidden)))}renderLegend(){if(!this.showsLegend)return nothing;const effective=this.effectiveData();if(!effective.datasets.length)return nothing;const sample=this.dataTableSample(effective),palette=this.seriesPalette(),controlledHidden=normalizeHiddenDatasets(this.canonicalHiddenDatasets(),effective.datasets.length),controlledHiddenSet=controlledHidden===void 0?void 0:new Set(controlledHidden);return html`
27
27
  <div
28
28
  part="legend"
29
29
  role="group"
30
30
  data-position=${this.legendPositionForLayout()}
31
31
  aria-label=${this.accessibleName(this.localize("chart"))}
32
32
  >
33
- ${sample.seriesIndexes.map(index=>{const dataset=effective.datasets[index],visible=controlledHiddenSet===void 0?dataset.hidden!==!0:!controlledHiddenSet.has(index),encoding=forcedColorsActive(this.ownerWindow)?forcedColorEncoding(index).name:void 0;return html`
33
+ ${sample.seriesIndexes.map(index=>{const dataset=effective.datasets[index],visible=controlledHiddenSet===void 0?chartDatasetBoolean(dataset,"hidden")!==!0:!controlledHiddenSet.has(index),encoding=forcedColorsActive(this.ownerWindow)?forcedColorEncoding(index).name:void 0;return html`
34
34
  <button
35
35
  part=${visible?"legend-item":"legend-item legend-item-hidden"}
36
36
  type="button"
@@ -49,13 +49,19 @@ var __decorate=function(decorators,target,key,desc){var c=arguments.length,r=c<3
49
49
  </div>
50
50
  `}render(){if(this.loading)return html`
51
51
  <div part="base">
52
- <slot class="config-slot" @slotchange=${this.onConfigSlotChange}></slot>
52
+ <slot
53
+ class="config-slot"
54
+ @slotchange=${this.onConfigSlotChange}
55
+ ></slot>
53
56
  <span class="sr-only">${this.localize("loading")}</span>
54
57
  <lr-skeleton shape="rect" .announce=${!1}></lr-skeleton>
55
58
  </div>
56
59
  `;if(this.loadFailed)return html`
57
60
  <div part="base">
58
- <slot class="config-slot" @slotchange=${this.onConfigSlotChange}></slot>
61
+ <slot
62
+ class="config-slot"
63
+ @slotchange=${this.onConfigSlotChange}
64
+ ></slot>
59
65
  <div part="error">${this.localize("chartMissingLibrary")}</div>
60
66
  </div>
61
67
  `;const effective=this.effectiveData(),seriesLabels=this.dataTableSample(effective).seriesIndexes.map(index=>this.datasetLabel(effective.datasets[index],index)),label=this.accessibleName((seriesLabels.length?getListFormat(this.effectiveLocale,{type:"conjunction"}).format(seriesLabels):"")||this.localize("chart")),description=this.chartDescription(),hasCustomDataTable=this.hasCustomDataTable();return html`
@@ -104,10 +110,13 @@ var __decorate=function(decorators,target,key,desc){var c=arguments.length,r=c<3
104
110
  <div
105
111
  id=${this.dataTableId}
106
112
  part="data-table"
107
- ?data-visually-hidden=${!hasCustomDataTable&&!this.dataTableVisible}
113
+ ?data-visually-hidden=${!this.dataTableVisible}
108
114
  >
109
- <slot name="data-table" @slotchange=${()=>this.requestUpdate()}></slot>
115
+ <slot
116
+ name="data-table"
117
+ @slotchange=${()=>this.requestUpdate()}
118
+ ></slot>
110
119
  ${hasCustomDataTable?nothing:this.renderDataTable()}
111
120
  </div>
112
121
  </div>
113
- `}get showsLegend(){return!this.withoutLegend}}__decorate([property({converter:{fromAttribute:value=>normalizeChartType(value)}})],LyraChart.prototype,"type",void 0),__decorate([property({attribute:!1})],LyraChart.prototype,"labels",void 0),__decorate([property({attribute:!1})],LyraChart.prototype,"datasets",null),__decorate([property({attribute:!1})],LyraChart.prototype,"hiddenDatasets",void 0),__decorate([property()],LyraChart.prototype,"description",void 0),__decorate([property({converter:{fromAttribute:value=>normalizeChartGrid(value)}})],LyraChart.prototype,"grid",void 0),__decorate([property({attribute:"index-axis"})],LyraChart.prototype,"indexAxis",void 0),__decorate([property()],LyraChart.prototype,"label",void 0),__decorate([property({attribute:"legend-position",converter:{fromAttribute:value=>normalizeLegendPosition(value)}})],LyraChart.prototype,"legendPosition",void 0),__decorate([property({attribute:"scale-type"})],LyraChart.prototype,"scaleType",void 0),__decorate([property({type:Array})],LyraChart.prototype,"annotations",void 0),__decorate([property({type:Number})],LyraChart.prototype,"max",void 0),__decorate([property({type:Number})],LyraChart.prototype,"min",void 0),__decorate([property({type:Array})],LyraChart.prototype,"plugins",void 0),__decorate([property({attribute:!1})],LyraChart.prototype,"valueFormatter",void 0),__decorate([property({attribute:!1})],LyraChart.prototype,"formatter",void 0),__decorate([property({type:Boolean})],LyraChart.prototype,"area",void 0),__decorate([property({type:Boolean})],LyraChart.prototype,"zoom",void 0),__decorate([property()],LyraChart.prototype,"height",void 0),__decorate([property({attribute:"x-label"})],LyraChart.prototype,"xLabel",void 0),__decorate([property({attribute:"y-label"})],LyraChart.prototype,"yLabel",void 0),__decorate([property({attribute:"y2-label"})],LyraChart.prototype,"y2Label",void 0),__decorate([property({type:Boolean,attribute:"begin-at-zero",converter:trueDefaultBooleanConverter})],LyraChart.prototype,"beginAtZero",void 0),__decorate([property({type:Boolean,attribute:"show-data-table"})],LyraChart.prototype,"showDataTable",void 0),__decorate([property({type:Boolean,attribute:"data-table-toggle"})],LyraChart.prototype,"dataTableToggle",void 0),__decorate([state()],LyraChart.prototype,"dataTableExpandedOverride",void 0),__decorate([property({type:Boolean})],LyraChart.prototype,"stacked",void 0),__decorate([property({type:Boolean,attribute:"without-animation",reflect:!0})],LyraChart.prototype,"withoutAnimation",void 0),__decorate([property({type:Boolean,attribute:"without-legend",reflect:!0})],LyraChart.prototype,"withoutLegend",void 0),__decorate([property({type:Boolean,attribute:"without-tooltip",reflect:!0})],LyraChart.prototype,"withoutTooltip",void 0),__decorate([property({type:Boolean,attribute:"data-labels"})],LyraChart.prototype,"dataLabels",void 0),__decorate([property({type:Boolean,attribute:"stack-totals"})],LyraChart.prototype,"stackTotals",void 0),__decorate([property({attribute:!1})],LyraChart.prototype,"config",void 0),__decorate([state()],LyraChart.prototype,"slottedConfig",void 0),__decorate([state()],LyraChart.prototype,"loading",void 0),__decorate([state()],LyraChart.prototype,"loadFailed",void 0),__decorate([state()],LyraChart.prototype,"zoomed",void 0),__decorate([state()],LyraChart.prototype,"visible",void 0),__decorate([query("canvas")],LyraChart.prototype,"canvasEl",void 0),__decorate([state()],LyraChart.prototype,"autoLegendPosition",void 0),__decorate([state()],LyraChart.prototype,"keyboardDatumAnnouncement",void 0);export{LyraChart,seriesPalette2 as seriesPalette};
122
+ `}get showsLegend(){return!this.withoutLegend}}__decorate([property({converter:{fromAttribute:value=>normalizeChartType(value)}})],LyraChart.prototype,"type",void 0),__decorate([property({attribute:!1})],LyraChart.prototype,"labels",void 0),__decorate([property({attribute:!1})],LyraChart.prototype,"datasets",null),__decorate([property({attribute:!1})],LyraChart.prototype,"hiddenDatasets",void 0),__decorate([property()],LyraChart.prototype,"description",void 0),__decorate([property({converter:{fromAttribute:value=>normalizeChartGrid(value)}})],LyraChart.prototype,"grid",void 0),__decorate([property({attribute:"index-axis"})],LyraChart.prototype,"indexAxis",void 0),__decorate([property()],LyraChart.prototype,"label",void 0),__decorate([property({attribute:"legend-position",converter:{fromAttribute:value=>normalizeLegendPosition(value)}})],LyraChart.prototype,"legendPosition",void 0),__decorate([property({attribute:"scale-type"})],LyraChart.prototype,"scaleType",void 0),__decorate([property({type:Array})],LyraChart.prototype,"annotations",void 0),__decorate([property({type:Number})],LyraChart.prototype,"max",void 0),__decorate([property({type:Number})],LyraChart.prototype,"min",void 0),__decorate([property({type:Array})],LyraChart.prototype,"plugins",null),__decorate([property({attribute:!1})],LyraChart.prototype,"valueFormatter",void 0),__decorate([property({attribute:!1})],LyraChart.prototype,"formatter",void 0),__decorate([property({type:Boolean})],LyraChart.prototype,"area",void 0),__decorate([property({type:Boolean})],LyraChart.prototype,"zoom",void 0),__decorate([property()],LyraChart.prototype,"height",void 0),__decorate([property({attribute:"x-label"})],LyraChart.prototype,"xLabel",void 0),__decorate([property({attribute:"y-label"})],LyraChart.prototype,"yLabel",void 0),__decorate([property({attribute:"y2-label"})],LyraChart.prototype,"y2Label",void 0),__decorate([property({type:Boolean,attribute:"begin-at-zero",converter:trueDefaultBooleanConverter})],LyraChart.prototype,"beginAtZero",void 0),__decorate([property({type:Boolean,attribute:"show-data-table"})],LyraChart.prototype,"showDataTable",void 0),__decorate([property({type:Boolean,attribute:"data-table-toggle"})],LyraChart.prototype,"dataTableToggle",void 0),__decorate([state()],LyraChart.prototype,"dataTableExpandedOverride",void 0),__decorate([property({type:Boolean})],LyraChart.prototype,"stacked",void 0),__decorate([property({type:Boolean,attribute:"without-animation",reflect:!0})],LyraChart.prototype,"withoutAnimation",void 0),__decorate([property({type:Boolean,attribute:"without-legend",reflect:!0})],LyraChart.prototype,"withoutLegend",void 0),__decorate([property({type:Boolean,attribute:"without-tooltip",reflect:!0})],LyraChart.prototype,"withoutTooltip",void 0),__decorate([property({type:Boolean,attribute:"data-labels"})],LyraChart.prototype,"dataLabels",void 0),__decorate([property({type:Boolean,attribute:"stack-totals"})],LyraChart.prototype,"stackTotals",void 0),__decorate([property({attribute:!1})],LyraChart.prototype,"config",null),__decorate([state()],LyraChart.prototype,"slottedConfig",void 0),__decorate([state()],LyraChart.prototype,"loading",void 0),__decorate([state()],LyraChart.prototype,"loadFailed",void 0),__decorate([state()],LyraChart.prototype,"zoomed",void 0),__decorate([state()],LyraChart.prototype,"visible",void 0),__decorate([query("canvas")],LyraChart.prototype,"canvasEl",void 0),__decorate([state()],LyraChart.prototype,"autoLegendPosition",void 0),__decorate([state()],LyraChart.prototype,"keyboardDatumAnnouncement",void 0);export{LyraChart,seriesPalette2 as seriesPalette};
@@ -1 +1 @@
1
- import{css}from"lit";import{forcedColorLegendSwatchStyles}from"./chart-forced-colors.js";const styles=css` :host { display: block; position: relative; inline-size: 100%; min-inline-size: 0; min-block-size: var(--lr-chart-height, var(--_lr-chart-height, var(--lr-size-280px))); block-size: auto; container-type: inline-size; contain-intrinsic-inline-size: var(--lr-size-20rem); --_lr-chart-grid-color: var(--lr-color-border); --_lr-chart-tick-color: var(--lr-color-text-quiet); --_lr-chart-legend-color: var(--lr-color-text); --_lr-chart-tooltip-bg: var(--lr-color-surface); --_lr-chart-tooltip-text: var(--lr-color-text); } [part='base'] { position: relative; inline-size: 100%; min-inline-size: 0; display: grid; grid-template-areas: 'plot' 'legend' 'warning' 'table-toggle' 'table'; grid-template-columns: minmax(0, 1fr); align-items: start; } .config-slot { display: none; } [part='plot'] { grid-area: plot; position: relative; inline-size: 100%; block-size: var(--lr-chart-height, var(--_lr-chart-height, var(--lr-size-280px))); min-inline-size: 0; } [part='data-table'] { grid-area: table; min-inline-size: 0; max-inline-size: 100%; overflow-x: auto; overflow-y: hidden; } [part='data-table'][data-visually-hidden] { position: absolute; inline-size: var(--lr-size-1px); block-size: var(--lr-size-1px); overflow: clip; clip-path: inset(50%); white-space: nowrap; } [part='notices'] { grid-area: warning; display: grid; gap: var(--lr-space-2xs); } [part='feature-warning'], [part='data-truncation'] { margin: 0; padding: var(--lr-space-xs); color: var(--lr-color-warning); font-size: var(--lr-font-size-sm); overflow-wrap: anywhere; } [part='data-table'] table { max-inline-size: 100%; overflow-wrap: anywhere; } [part='legend'] { grid-area: legend; display: flex; flex-wrap: wrap; gap: var(--lr-space-xs); min-inline-size: 0; max-inline-size: 100%; padding-block: var(--lr-space-xs); } [part~='legend-item'] { display: inline-flex; align-items: center; justify-content: center; min-inline-size: var(--lr-icon-button-size); min-block-size: var(--lr-icon-button-size); max-inline-size: 100%; border: 0; border-radius: var(--lr-radius); padding: var(--lr-space-2xs); gap: var(--lr-space-2xs); background: transparent; color: var(--lr-chart-legend-color, var(--_lr-chart-legend-color)); font: inherit; text-align: start; overflow-wrap: anywhere; cursor: pointer; } [part~='legend-item']:where(:hover) { background: var(--lr-chart-legend-item-hover-bg, var(--lr-color-brand-quiet)); } [part~='legend-item']:where(:active) { background: var( --lr-chart-legend-item-active-bg, color-mix(in oklab, var(--lr-color-brand-quiet), var(--lr-color-mix-partner) var(--lr-color-mix-active)) ); } [part~='legend-item']:where(:focus-visible) { outline: var(--lr-focus-ring-width) solid var(--lr-focus-ring-color); outline-offset: var(--lr-focus-ring-offset); } [part~='legend-item']:where([part~='legend-item-hidden']) { text-decoration-line: line-through; text-decoration-thickness: var(--lr-border-width-medium); } [part='legend-swatch'] { inline-size: var(--lr-space-s); block-size: var(--lr-space-s); flex: 0 0 auto; border-radius: var(--lr-radius-xs); } ${forcedColorLegendSwatchStyles} [part='base']:where([data-legend-position='top']) { grid-template-areas: 'legend' 'plot' 'warning' 'table-toggle' 'table'; } [part='base']:where([data-legend-position='inline-start']) { grid-template-areas: 'legend plot' 'warning warning' 'table-toggle table-toggle' 'table table'; grid-template-columns: minmax(0, min(33cqi, var(--lr-chart-legend-side-max, var(--lr-size-15rem)))) minmax(0, 1fr); } [part='base']:where([data-legend-position='inline-end']) { grid-template-areas: 'plot legend' 'warning warning' 'table-toggle table-toggle' 'table table'; grid-template-columns: minmax(0, 1fr) minmax(0, min(33cqi, var(--lr-chart-legend-side-max, var(--lr-size-15rem)))); } @container (max-width: 479px) { [part='base']:where([data-legend-position='inline-start']), [part='base']:where([data-legend-position='inline-end']) { grid-template-areas: 'plot' 'legend' 'warning' 'table-toggle' 'table'; grid-template-columns: minmax(0, 1fr); } } lr-skeleton { --lr-skeleton-w: 100%; --lr-skeleton-h: var(--lr-chart-height, var(--_lr-chart-height, var(--lr-size-280px))); } canvas { inline-size: 100% !important; block-size: 100% !important; } [part='canvas'] { min-inline-size: var(--lr-icon-button-size); min-block-size: var(--lr-icon-button-size); } [part='canvas']:hover { outline: var(--lr-chart-canvas-hover-outline-width, var(--lr-border-width-thin)) solid var(--lr-chart-grid-color, var(--_lr-chart-grid-color)); outline-offset: var(--lr-focus-ring-offset); } [part='canvas']:focus-visible { outline: var(--lr-focus-ring-width) solid var(--lr-focus-ring-color); outline-offset: var(--lr-focus-ring-offset); } [part='data-table'] button { font: inherit; color: inherit; border: 0; border-radius: var(--lr-radius); background: transparent; padding: var(--lr-space-2xs); cursor: pointer; } [part='data-table'] button:hover { background: var(--lr-chart-data-table-button-hover-bg, var(--lr-color-brand-quiet)); } [part='data-table'] button:active { background: var( --lr-chart-data-table-button-active-bg, color-mix(in oklab, var(--lr-color-brand-quiet), var(--lr-color-mix-partner) var(--lr-color-mix-active)) ); } [part='data-table'] button:focus-visible { outline: var(--lr-focus-ring-width) solid var(--lr-focus-ring-color); outline-offset: var(--lr-focus-ring-offset); } [part='center'] { position: absolute; transform: translate(-50%, -50%); pointer-events: none; text-align: center; } [part='reset-zoom-button'] { position: absolute; inset-block-start: var(--lr-space-xs); inset-inline-end: var(--lr-space-xs); font: inherit; font-size: var(--lr-font-size-xs); padding: var(--lr-size-0-15rem) var(--lr-size-0-5rem); border: var(--lr-border-width-thin) solid var(--lr-color-border); border-radius: var(--lr-radius); background: var(--lr-color-surface); color: var(--lr-color-text); max-inline-size: calc(100% - var(--lr-space-xs) - var(--lr-space-xs)); white-space: normal; overflow-wrap: anywhere; cursor: pointer; } [part='reset-zoom-button']:hover { background: var(--lr-chart-reset-zoom-button-hover-bg, var(--lr-color-brand-quiet)); } [part='reset-zoom-button']:active { background: var( --lr-chart-reset-zoom-button-active-bg, color-mix(in oklab, var(--lr-color-brand-quiet), var(--lr-color-mix-partner) var(--lr-color-mix-active)) ); } [part='reset-zoom-button']:focus-visible { outline: var(--lr-focus-ring-width) solid var(--lr-focus-ring-color); outline-offset: var(--lr-focus-ring-offset); } [part='data-table-toggle'] { grid-area: table-toggle; align-self: flex-start; font: inherit; font-size: var(--lr-font-size-xs); min-block-size: var(--lr-icon-button-size); padding: var(--lr-size-0-15rem) var(--lr-size-0-5rem); border: var(--lr-border-width-thin) solid var(--lr-color-border); border-radius: var(--lr-radius); background: var(--lr-color-surface); color: var(--lr-color-text); max-inline-size: 100%; white-space: normal; overflow-wrap: break-word; cursor: pointer; } [part='data-table-toggle']:hover { background: var(--lr-chart-data-table-toggle-hover-bg, var(--lr-color-brand-quiet)); } [part='data-table-toggle']:active { background: var( --lr-chart-data-table-toggle-active-bg, color-mix(in oklab, var(--lr-color-brand-quiet), var(--lr-color-mix-partner) var(--lr-color-mix-active)) ); } [part='data-table-toggle']:focus-visible { outline: var(--lr-focus-ring-width) solid var(--lr-focus-ring-color); outline-offset: var(--lr-focus-ring-offset); } [part='error'] { margin: 0; padding: var(--lr-space-l); color: var(--lr-color-danger); font-size: var(--lr-font-size-md-sm); text-align: center; max-inline-size: 100%; overflow-wrap: anywhere; } `;export{styles};
1
+ import{css}from"lit";import{forcedColorLegendSwatchStyles}from"./chart-forced-colors.js";const styles=css` :host { display: block; position: relative; inline-size: 100%; min-inline-size: 0; min-block-size: var(--lr-chart-height, var(--_lr-chart-height, var(--lr-size-280px))); block-size: auto; container-type: inline-size; contain-intrinsic-inline-size: var(--lr-size-20rem); --_lr-chart-grid-color: var(--lr-color-border); --_lr-chart-tick-color: var(--lr-color-text-quiet); --_lr-chart-legend-color: var(--lr-color-text); --_lr-chart-tooltip-bg: var(--lr-color-surface); --_lr-chart-tooltip-text: var(--lr-color-text); } [part='base'] { position: relative; inline-size: 100%; min-inline-size: 0; display: grid; grid-template-areas: 'plot' 'legend' 'warning' 'table-toggle' 'table'; grid-template-columns: minmax(0, 1fr); align-items: start; } .config-slot { display: none; } [part='plot'] { grid-area: plot; position: relative; inline-size: 100%; block-size: var(--lr-chart-height, var(--_lr-chart-height, var(--lr-size-280px))); min-inline-size: 0; } [part='data-table'] { grid-area: table; min-inline-size: 0; max-inline-size: 100%; overflow-x: auto; overflow-y: hidden; } [part='data-table'][data-visually-hidden] { position: absolute; inline-size: var(--lr-size-1px); block-size: var(--lr-size-1px); overflow: clip; clip-path: inset(50%); white-space: nowrap; } [part='notices'] { grid-area: warning; display: grid; gap: var(--lr-space-2xs); } [part='feature-warning'], [part='data-truncation'] { margin: 0; padding: var(--lr-space-xs); color: var(--lr-color-warning); font-size: var(--lr-font-size-sm); overflow-wrap: anywhere; } [part='data-table'] table { max-inline-size: 100%; overflow-wrap: anywhere; } [part='legend'] { grid-area: legend; display: flex; flex-wrap: wrap; gap: var(--lr-space-xs); min-inline-size: 0; max-inline-size: 100%; padding-block: var(--lr-space-xs); } [part~='legend-item'] { display: inline-flex; align-items: center; justify-content: center; min-inline-size: var(--lr-icon-button-size); min-block-size: var(--lr-icon-button-size); max-inline-size: 100%; border: 0; border-radius: var(--lr-radius); padding: var(--lr-space-2xs); gap: var(--lr-space-2xs); background: transparent; color: var(--lr-chart-legend-color, var(--_lr-chart-legend-color)); font: inherit; text-align: start; overflow-wrap: anywhere; cursor: pointer; } [part~='legend-item']:where(:hover) { background: var(--lr-chart-legend-item-hover-bg, var(--lr-color-brand-quiet)); } [part~='legend-item']:where(:active) { background: var( --lr-chart-legend-item-active-bg, color-mix(in oklab, var(--lr-color-brand-quiet), var(--lr-color-mix-partner) var(--lr-color-mix-active)) ); } [part~='legend-item']:where(:focus-visible) { outline: var(--lr-focus-ring-width) solid var(--lr-focus-ring-color); outline-offset: var(--lr-focus-ring-offset); } [part~='legend-item']:where([part~='legend-item-hidden']) { text-decoration-line: line-through; text-decoration-thickness: var(--lr-border-width-medium); } [part='legend-swatch'] { inline-size: var(--lr-space-s); block-size: var(--lr-space-s); flex: 0 0 auto; border-radius: var(--lr-radius-xs); } ${forcedColorLegendSwatchStyles} [part='base']:where([data-legend-position='top']) { grid-template-areas: 'legend' 'plot' 'warning' 'table-toggle' 'table'; } [part='base']:where([data-legend-position='inline-start']) { grid-template-areas: 'legend plot' 'warning warning' 'table-toggle table-toggle' 'table table'; grid-template-columns: minmax(0, min(33cqi, var(--lr-chart-legend-side-max, var(--lr-size-15rem)))) minmax(0, 1fr); } [part='base']:where([data-legend-position='inline-end']) { grid-template-areas: 'plot legend' 'warning warning' 'table-toggle table-toggle' 'table table'; grid-template-columns: minmax(0, 1fr) minmax(0, min(33cqi, var(--lr-chart-legend-side-max, var(--lr-size-15rem)))); } @container (max-width: 479px) { [part='base']:where([data-legend-position='inline-start']), [part='base']:where([data-legend-position='inline-end']) { grid-template-areas: 'plot' 'legend' 'warning' 'table-toggle' 'table'; grid-template-columns: minmax(0, 1fr); } } lr-skeleton { --lr-skeleton-w: 100%; --lr-skeleton-h: var(--lr-chart-height, var(--_lr-chart-height, var(--lr-size-280px))); } canvas { inline-size: 100% !important; block-size: 100% !important; } [part='canvas'] { min-inline-size: var(--lr-icon-button-size); min-block-size: var(--lr-icon-button-size); } [part='canvas']:hover { outline: var(--lr-chart-canvas-hover-outline-width, var(--lr-border-width-thin)) solid var( --lr-chart-canvas-hover-outline-color, var(--lr-chart-grid-color, var(--_lr-chart-grid-color)) ); outline-offset: var(--lr-focus-ring-offset); } [part='canvas']:focus-visible { outline: var(--lr-focus-ring-width) solid var(--lr-focus-ring-color); outline-offset: var(--lr-focus-ring-offset); } [part='data-table'] button { font: inherit; color: inherit; border: 0; border-radius: var(--lr-radius); background: transparent; padding: var(--lr-space-2xs); cursor: pointer; } [part='data-table'] button:hover { background: var(--lr-chart-data-table-button-hover-bg, var(--lr-color-brand-quiet)); } [part='data-table'] button:active { background: var( --lr-chart-data-table-button-active-bg, color-mix(in oklab, var(--lr-color-brand-quiet), var(--lr-color-mix-partner) var(--lr-color-mix-active)) ); } [part='data-table'] button:focus-visible { outline: var(--lr-focus-ring-width) solid var(--lr-focus-ring-color); outline-offset: var(--lr-focus-ring-offset); } [part='center'] { position: absolute; transform: translate(-50%, -50%); pointer-events: none; text-align: center; } [part='reset-zoom-button'] { position: absolute; inset-block-start: var(--lr-space-xs); inset-inline-end: var(--lr-space-xs); font: inherit; font-size: var(--lr-font-size-xs); padding: var(--lr-size-0-15rem) var(--lr-size-0-5rem); border: var(--lr-border-width-thin) solid var(--lr-color-border); border-radius: var(--lr-radius); background: var(--lr-color-surface); color: var(--lr-color-text); max-inline-size: calc(100% - var(--lr-space-xs) - var(--lr-space-xs)); white-space: normal; overflow-wrap: anywhere; cursor: pointer; } [part='reset-zoom-button']:hover { background: var(--lr-chart-reset-zoom-button-hover-bg, var(--lr-color-brand-quiet)); } [part='reset-zoom-button']:active { background: var( --lr-chart-reset-zoom-button-active-bg, color-mix(in oklab, var(--lr-color-brand-quiet), var(--lr-color-mix-partner) var(--lr-color-mix-active)) ); } [part='reset-zoom-button']:focus-visible { outline: var(--lr-focus-ring-width) solid var(--lr-focus-ring-color); outline-offset: var(--lr-focus-ring-offset); } [part='data-table-toggle'] { grid-area: table-toggle; align-self: flex-start; font: inherit; font-size: var(--lr-font-size-xs); min-inline-size: var(--lr-icon-button-size); min-block-size: var(--lr-icon-button-size); padding: var(--lr-size-0-15rem) var(--lr-size-0-5rem); border: var(--lr-border-width-thin) solid var(--lr-color-border); border-radius: var(--lr-radius); background: var(--lr-color-surface); color: var(--lr-color-text); max-inline-size: 100%; white-space: normal; overflow-wrap: break-word; cursor: pointer; } [part='data-table-toggle']:hover { background: var(--lr-chart-data-table-toggle-hover-bg, var(--lr-color-brand-quiet)); } [part='data-table-toggle']:active { background: var( --lr-chart-data-table-toggle-active-bg, color-mix(in oklab, var(--lr-color-brand-quiet), var(--lr-color-mix-partner) var(--lr-color-mix-active)) ); } [part='data-table-toggle']:focus-visible { outline: var(--lr-focus-ring-width) solid var(--lr-focus-ring-color); outline-offset: var(--lr-focus-ring-offset); } [part='error'] { margin: 0; padding: var(--lr-space-l); color: var(--lr-color-danger); font-size: var(--lr-font-size-md-sm); text-align: center; max-inline-size: 100%; overflow-wrap: anywhere; } `;export{styles};
@@ -1 +1 @@
1
- import{getNumberFormat}from"../../../internal/intl-cache.js";import{finiteInterpolate,finiteRatio}from"../../../internal/numbers.js";const MAX_HISTOGRAM_BINS=1e3,LEFT_TO_RIGHT_ISOLATE="\u2066",POP_DIRECTIONAL_ISOLATE="\u2069";function normalizeHistogramBinCount(binCount){const numeric=typeof binCount=="number"?binCount:Number(binCount);return Number.isFinite(numeric)?Math.min(MAX_HISTOGRAM_BINS,Math.max(0,Math.floor(numeric))):0}function binValues(values,binCount,locale){const finite=values.filter(v=>Number.isFinite(v));if(finite.length===0)return[];const bins=normalizeHistogramBinCount(binCount);if(bins<=0)return[];let lo=finite[0],hi=finite[0];for(const v of finite)v<lo&&(lo=v),v>hi&&(hi=v);const constant=hi===lo,numberFormat=getNumberFormat(locale,{minimumFractionDigits:1,maximumFractionDigits:1});if(constant)return[{label:`${LEFT_TO_RIGHT_ISOLATE}${numberFormat.format(lo)}${POP_DIRECTIONAL_ISOLATE}`,count:finite.length}];const labelHi=hi,formatRange=numberFormat.formatRange?.bind(numberFormat),buckets=Array.from({length:bins},(_,i)=>{const bLo=finiteInterpolate(lo,labelHi,i/bins),bHi=finiteInterpolate(lo,labelHi,(i+1)/bins);return{label:`${LEFT_TO_RIGHT_ISOLATE}${formatRange?formatRange(bLo,bHi):`${numberFormat.format(bLo)}\u2013${numberFormat.format(bHi)}`}${POP_DIRECTIONAL_ISOLATE}`,count:0}});for(const v of finite){const index=Math.floor(finiteRatio(v,lo,hi)*bins);buckets[Math.min(bins-1,Math.max(0,index))].count++}return buckets}export{binValues,normalizeHistogramBinCount};
1
+ import{getNumberFormat}from"../../../internal/intl-cache.js";import{finiteInterpolate,finiteRatio}from"../../../internal/numbers.js";const MAX_HISTOGRAM_BINS=1e3,LEFT_TO_RIGHT_ISOLATE="",POP_DIRECTIONAL_ISOLATE="";function normalizeHistogramBinCount(binCount){const numeric=typeof binCount=="number"?binCount:Number(binCount);return Number.isFinite(numeric)?Math.min(MAX_HISTOGRAM_BINS,Math.max(0,Math.floor(numeric))):0}function binValues(values,binCount,locale){const finite=values.filter(v=>Number.isFinite(v));if(finite.length===0)return[];const bins=normalizeHistogramBinCount(binCount);if(bins<=0)return[];let lo=finite[0],hi=finite[0];for(const v of finite)v<lo&&(lo=v),v>hi&&(hi=v);const constant=hi===lo,numberFormat=getNumberFormat(locale,{minimumFractionDigits:1,maximumFractionDigits:1});if(constant)return[{label:`${LEFT_TO_RIGHT_ISOLATE}${numberFormat.format(lo)}${POP_DIRECTIONAL_ISOLATE}`,count:finite.length}];const labelHi=hi,formatRange=numberFormat.formatRange?.bind(numberFormat),buckets=Array.from({length:bins},(_,i)=>{const bLo=finiteInterpolate(lo,labelHi,i/bins),bHi=finiteInterpolate(lo,labelHi,(i+1)/bins);return{label:`${LEFT_TO_RIGHT_ISOLATE}${formatRange?formatRange(bLo,bHi):`${numberFormat.format(bLo)}–${numberFormat.format(bHi)}`}${POP_DIRECTIONAL_ISOLATE}`,count:0}});for(const v of finite){const index=Math.floor(finiteRatio(v,lo,hi)*bins);buckets[Math.min(bins-1,Math.max(0,index))].count++}return buckets}export{binValues,normalizeHistogramBinCount};
@@ -120,7 +120,7 @@ var __decorate=function(decorators,target,key,desc){var c=arguments.length,r=c<3
120
120
  d=${d.trim()}
121
121
  stroke=${color}
122
122
  stroke-dasharray=${this.markDash(di)}
123
- ></path>${dots}`})}render(){return this.renderChart()}resolvedValueAxisGutter(ticks,measuredWidth){if(typeof this.valueAxisGutter=="number")return finiteRange(this.valueAxisGutter,PAD_LEFT,0,MAX_SCROLL_CONTENT_WIDTH);if(this.valueAxisGutter!=="auto"||ticks.length===0)return PAD_LEFT;let widest=0;for(const tick of ticks)widest=Math.max(widest,tick.label.length*APPROX_LABEL_CHARACTER_WIDTH);const requested=Math.ceil(widest)+VALUE_AXIS_TICK_OFFSET+AUTO_VALUE_AXIS_SAFETY_INSET,maximum=this.layout==="scroll"?MAX_AUTO_VALUE_AXIS_GUTTER:Math.max(PAD_LEFT,Math.min(MAX_AUTO_VALUE_AXIS_GUTTER,measuredWidth*MAX_AUTO_VALUE_AXIS_GUTTER_FRACTION));return finiteRange(requested,PAD_LEFT,PAD_LEFT,maximum)}automaticMaxLabels(n,plotW,renderedIndexes){if(n<=1)return n;let widest=0;for(const index of renderedIndexes){const label=this.labels[index]??"";widest=Math.max(widest,label.length*APPROX_LABEL_CHARACTER_WIDTH)}if(widest===0)return n;const lane=widest+AUTO_CATEGORY_LABEL_INSET,fits=Math.floor(finiteRange(plotW,0,0,MAX_SCROLL_CONTENT_WIDTH)/lane);return Math.min(n,Math.max(2,fits))}visibleLabelIndexes(n,plotW,renderedIndexes){if(this.maxLabels==null)return;const requested=this.maxLabels==="auto"?this.automaticMaxLabels(n,plotW,renderedIndexes):this.maxLabels;if(typeof requested!="number")return;const max=finiteCount(requested,n);if(n<=max)return;const renderedCount=renderedIndexes.length,count=Math.min(renderedCount,MAX_RENDERED_CHART_RECORDS,Math.max(2,max));return count<=1?new Set(count===1?[renderedIndexes[0]]:[]):new Set(Array.from({length:count},(_,index)=>renderedIndexes[Math.round(index*(renderedCount-1)/(count-1))]))}displayCategoryLabel(label,availableWidth){const maxCharacters=Math.max(1,Math.floor(availableWidth/APPROX_LABEL_CHARACTER_WIDTH));return label.length<=maxCharacters?label:maxCharacters===1?"\u2026":`${label.slice(0,maxCharacters-1)}\u2026`}renderChart(){const n=this.recordCount(),awaitingFitMeasurement=this.awaitingFitMeasurement(),h=finiteRange(this.plotHeight||200,200,0,MAX_SCROLL_CONTENT_WIDTH),measuredWidth=finiteRange(this.plotWidth||400,400,0,MAX_SCROLL_CONTENT_WIDTH),{lo,hi,ticks}=this.domain(),formattedTicks=awaitingFitMeasurement||this.withoutValueAxis?[]:ticks.map(value=>({value,label:this.formatValueAxisTick(value)})),axisGutter=this.resolvedValueAxisGutter(formattedTicks,measuredWidth)+(this.yLabel?AXIS_TITLE_SPACE:0),rtl=this.effectiveDirection==="rtl",padBottom=PAD_BOTTOM+(this.xLabel?AXIS_TITLE_SPACE:0),plotX=rtl?PAD_RIGHT:axisGutter,plotY=PAD_TOP,plotH=Math.max(0,h-plotY-padBottom);let w,plotW,slot;if(this.layout==="scroll"){const maxSlot=n>0?MAX_SCROLL_CONTENT_WIDTH/n:MAX_SCROLL_CONTENT_WIDTH;slot=finiteRange(this.barWidth,32,0,maxSlot),plotW=n*slot,w=axisGutter+plotW+PAD_RIGHT}else w=measuredWidth,plotW=Math.max(0,w-axisGutter-PAD_RIGHT),slot=n>0?plotW/n:0;const recordSample=this.recordSample(),selectedIndices=new Set,renderedRows=new Set(recordSample.rowIndexes);for(let index=0;index<Math.min(this.selectedIndices.length,MAX_RENDERED_CHART_RECORDS);index++){const candidate=this.selectedIndices[index];typeof candidate=="number"&&Number.isInteger(candidate)&&renderedRows.has(candidate)&&selectedIndices.add(candidate)}const barOrigins=this.effectiveType==="bar"&&!awaitingFitMeasurement?new Map(recordSample.rowIndexes.map(index=>{const fallback=plotX+index*slot,candidate=typeof this.barX=="function"?this.barX(index):fallback;return[index,finiteRange(candidate,fallback,-MAX_SCROLL_CONTENT_WIDTH,MAX_SCROLL_CONTENT_WIDTH)]})):new Map,grid=awaitingFitMeasurement||this.withoutValueAxis?[]:this.renderGrid(plotX,plotY,plotW,plotH,formattedTicks,lo,hi),marks=awaitingFitMeasurement?[]:this.effectiveType==="bar"?this.renderBars(plotX,plotY,plotH,slot,lo,hi,barOrigins,recordSample,selectedIndices):this.renderLines(plotX,plotY,plotW,plotH,lo,hi,recordSample,selectedIndices),visibleLabelIndexes=this.visibleLabelIndexes(n,plotW,recordSample.rowIndexes),decimationStride=visibleLabelIndexes?n/visibleLabelIndexes.size:1,categoryLabelWidth=Math.max(0,decimationStride*(this.effectiveType==="bar"?slot:n>1?plotW/(n-1):plotW)-BAR_CORNER_RADIUS),categoryLabels=awaitingFitMeasurement?[]:recordSample.rowIndexes.map(i=>{const label=this.labels[i]??"";if(visibleLabelIndexes&&!visibleLabelIndexes.has(i))return nothing;const fullLabel=label??"",x=this.effectiveType==="bar"&&n>0?(barOrigins.get(i)??plotX+i*slot)+slot/2:plotX+(n>1?i/(n-1)*plotW:plotW/2),displayLabel=this.displayCategoryLabel(fullLabel,categoryLabelWidth);return svg`<text
123
+ ></path>${dots}`})}render(){return this.renderChart()}resolvedValueAxisGutter(ticks,measuredWidth){if(typeof this.valueAxisGutter=="number")return finiteRange(this.valueAxisGutter,PAD_LEFT,0,MAX_SCROLL_CONTENT_WIDTH);if(this.valueAxisGutter!=="auto"||ticks.length===0)return PAD_LEFT;let widest=0;for(const tick of ticks)widest=Math.max(widest,tick.label.length*APPROX_LABEL_CHARACTER_WIDTH);const requested=Math.ceil(widest)+VALUE_AXIS_TICK_OFFSET+AUTO_VALUE_AXIS_SAFETY_INSET,maximum=this.layout==="scroll"?MAX_AUTO_VALUE_AXIS_GUTTER:Math.max(PAD_LEFT,Math.min(MAX_AUTO_VALUE_AXIS_GUTTER,measuredWidth*MAX_AUTO_VALUE_AXIS_GUTTER_FRACTION));return finiteRange(requested,PAD_LEFT,PAD_LEFT,maximum)}automaticMaxLabels(n,plotW,renderedIndexes){if(n<=1)return n;let widest=0;for(const index of renderedIndexes){const label=this.labels[index]??"";widest=Math.max(widest,label.length*APPROX_LABEL_CHARACTER_WIDTH)}if(widest===0)return n;const lane=widest+AUTO_CATEGORY_LABEL_INSET,fits=Math.floor(finiteRange(plotW,0,0,MAX_SCROLL_CONTENT_WIDTH)/lane);return Math.min(n,Math.max(2,fits))}visibleLabelIndexes(n,plotW,renderedIndexes){if(this.maxLabels==null)return;const requested=this.maxLabels==="auto"?this.automaticMaxLabels(n,plotW,renderedIndexes):this.maxLabels;if(typeof requested!="number")return;const max=finiteCount(requested,n);if(n<=max)return;const renderedCount=renderedIndexes.length,count=Math.min(renderedCount,MAX_RENDERED_CHART_RECORDS,Math.max(2,max));return count<=1?new Set(count===1?[renderedIndexes[0]]:[]):new Set(Array.from({length:count},(_,index)=>renderedIndexes[Math.round(index*(renderedCount-1)/(count-1))]))}displayCategoryLabel(label,availableWidth){const maxCharacters=Math.max(1,Math.floor(availableWidth/APPROX_LABEL_CHARACTER_WIDTH));return label.length<=maxCharacters?label:maxCharacters===1?"":`${label.slice(0,maxCharacters-1)}…`}renderChart(){const n=this.recordCount(),awaitingFitMeasurement=this.awaitingFitMeasurement(),h=finiteRange(this.plotHeight||200,200,0,MAX_SCROLL_CONTENT_WIDTH),measuredWidth=finiteRange(this.plotWidth||400,400,0,MAX_SCROLL_CONTENT_WIDTH),{lo,hi,ticks}=this.domain(),formattedTicks=awaitingFitMeasurement||this.withoutValueAxis?[]:ticks.map(value=>({value,label:this.formatValueAxisTick(value)})),axisGutter=this.resolvedValueAxisGutter(formattedTicks,measuredWidth)+(this.yLabel?AXIS_TITLE_SPACE:0),rtl=this.effectiveDirection==="rtl",padBottom=PAD_BOTTOM+(this.xLabel?AXIS_TITLE_SPACE:0),plotX=rtl?PAD_RIGHT:axisGutter,plotY=PAD_TOP,plotH=Math.max(0,h-plotY-padBottom);let w,plotW,slot;if(this.layout==="scroll"){const maxSlot=n>0?MAX_SCROLL_CONTENT_WIDTH/n:MAX_SCROLL_CONTENT_WIDTH;slot=finiteRange(this.barWidth,32,0,maxSlot),plotW=n*slot,w=axisGutter+plotW+PAD_RIGHT}else w=measuredWidth,plotW=Math.max(0,w-axisGutter-PAD_RIGHT),slot=n>0?plotW/n:0;const recordSample=this.recordSample(),selectedIndices=new Set,renderedRows=new Set(recordSample.rowIndexes);for(let index=0;index<this.selectedIndices.length;index++){const candidate=this.selectedIndices[index];typeof candidate=="number"&&Number.isInteger(candidate)&&renderedRows.has(candidate)&&selectedIndices.add(candidate)}const barOrigins=this.effectiveType==="bar"&&!awaitingFitMeasurement?new Map(recordSample.rowIndexes.map(index=>{const fallback=plotX+index*slot,candidate=typeof this.barX=="function"?this.barX(index):fallback;return[index,finiteRange(candidate,fallback,-MAX_SCROLL_CONTENT_WIDTH,MAX_SCROLL_CONTENT_WIDTH)]})):new Map,grid=awaitingFitMeasurement||this.withoutValueAxis?[]:this.renderGrid(plotX,plotY,plotW,plotH,formattedTicks,lo,hi),marks=awaitingFitMeasurement?[]:this.effectiveType==="bar"?this.renderBars(plotX,plotY,plotH,slot,lo,hi,barOrigins,recordSample,selectedIndices):this.renderLines(plotX,plotY,plotW,plotH,lo,hi,recordSample,selectedIndices),visibleLabelIndexes=this.visibleLabelIndexes(n,plotW,recordSample.rowIndexes),decimationStride=visibleLabelIndexes?n/visibleLabelIndexes.size:1,categoryLabelWidth=Math.max(0,decimationStride*(this.effectiveType==="bar"?slot:n>1?plotW/(n-1):plotW)-BAR_CORNER_RADIUS),categoryLabels=awaitingFitMeasurement?[]:recordSample.rowIndexes.map(i=>{const label=this.labels[i]??"";if(visibleLabelIndexes&&!visibleLabelIndexes.has(i))return nothing;const fullLabel=label??"",x=this.effectiveType==="bar"&&n>0?(barOrigins.get(i)??plotX+i*slot)+slot/2:plotX+(n>1?i/(n-1)*plotW:plotW/2),displayLabel=this.displayCategoryLabel(fullLabel,categoryLabelWidth);return svg`<text
124
124
  part="axis-label"
125
125
  x=${x}
126
126
  y=${plotY+plotH+CATEGORY_LABEL_OFFSET}
@@ -167,7 +167,7 @@ var __decorate=function(decorators,target,key,desc){var c=arguments.length,r=c<3
167
167
  <div
168
168
  id=${this.dataTableId}
169
169
  part="data-table"
170
- ?data-visually-hidden=${!hasCustomDataTable&&!this.dataTableVisible}
170
+ ?data-visually-hidden=${!this.dataTableVisible}
171
171
  >
172
172
  <slot name="data-table" @slotchange=${()=>this.requestUpdate()}></slot>
173
173
  ${hasCustomDataTable?nothing:this.datasets.length>1?html`<table part="table" class=${this.dataTableVisible?nothing:"sr-only"}>
@@ -186,7 +186,11 @@ var __decorate=function(decorators,target,key,desc){var c=arguments.length,r=c<3
186
186
  ${showTableTotals?(()=>{const total=this.tableTotalAt(index,recordSample.seriesIndexes);return html`<td>${total==null?"":this.formatTableCell(total,{kind:"total",datasetIndex:null,index,label,seriesLabel:null},tableNumberFormat)}</td>`})():nothing}
187
187
  </tr>`})}
188
188
  </tbody>
189
- </table>`:html`<ul part="data-list" class="sr-only" aria-label=${this.localize("chartData")}>
189
+ </table>`:html`<ul
190
+ part="data-list"
191
+ class=${this.dataTableVisible?nothing:"sr-only"}
192
+ aria-label=${this.localize("chartData")}
193
+ >
190
194
  ${marksForA11y.map((_mark,index)=>html`<li>${this.markAnnouncement(index,marksForA11y)}</li>`)}
191
195
  </ul>`}
192
196
  </div>