@aceshooting/lyra-ui 13.0.1 → 14.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (723) hide show
  1. package/CHANGELOG.md +329 -0
  2. package/custom-elements.json +1 -1
  3. package/dist/cli/migration-contract.json +1 -1
  4. package/dist/components/agent-tools/activity-feed/activity-feed.class.d.ts +23 -15
  5. package/dist/components/agent-tools/activity-feed/activity-feed.class.js +9 -6
  6. package/dist/components/agent-tools/agent-trace/agent-trace.class.d.ts +12 -3
  7. package/dist/components/agent-tools/agent-trace/agent-trace.class.js +2 -1
  8. package/dist/components/agent-tools/approval-queue/approval-queue.class.d.ts +4 -2
  9. package/dist/components/agent-tools/approval-queue/approval-queue.class.js +1 -1
  10. package/dist/components/agent-tools/artifact-panel/artifact-panel.styles.js +1 -1
  11. package/dist/components/agent-tools/commit-card/commit-card.class.d.ts +3 -1
  12. package/dist/components/agent-tools/commit-card/commit-card.class.js +2 -2
  13. package/dist/components/agent-tools/compare-panel/compare-panel.class.d.ts +2 -1
  14. package/dist/components/agent-tools/compare-panel/compare-panel.styles.js +1 -1
  15. package/dist/components/agent-tools/prompt-studio/prompt-studio.class.d.ts +6 -2
  16. package/dist/components/agent-tools/prompt-studio/prompt-studio.class.js +8 -8
  17. package/dist/components/agent-tools/result-card/result-card.class.d.ts +1 -1
  18. package/dist/components/agent-tools/result-card/result-card.class.js +1 -1
  19. package/dist/components/agent-tools/result-card/result-field.class.d.ts +1 -1
  20. package/dist/components/agent-tools/result-card/result-field.class.js +1 -1
  21. package/dist/components/agent-tools/schema-viewer/schema-viewer.class.d.ts +5 -5
  22. package/dist/components/agent-tools/schema-viewer/schema-viewer.class.js +23 -10
  23. package/dist/components/agent-tools/span-waterfall/span-waterfall.class.d.ts +13 -6
  24. package/dist/components/agent-tools/span-waterfall/span-waterfall.class.js +3 -3
  25. package/dist/components/agent-tools/span-waterfall/span-waterfall.styles.js +1 -1
  26. package/dist/components/agent-tools/stack-trace/stack-trace-parse.js +3 -3
  27. package/dist/components/agent-tools/stack-trace/stack-trace.class.d.ts +1 -1
  28. package/dist/components/agent-tools/stack-trace/stack-trace.class.js +1 -1
  29. package/dist/components/agent-tools/subagent-panel/subagent-panel.class.js +1 -1
  30. package/dist/components/agent-tools/subagent-panel/subagent-panel.styles.js +1 -1
  31. package/dist/components/agent-tools/task-list/task-list.class.d.ts +1 -2
  32. package/dist/components/agent-tools/task-list/task-list.class.js +2 -2
  33. package/dist/components/agent-tools/terminal/terminal.class.d.ts +11 -2
  34. package/dist/components/agent-tools/terminal/terminal.class.js +5 -5
  35. package/dist/components/agent-tools/terminal/terminal.styles.js +1 -1
  36. package/dist/components/agent-tools/test-results/test-results.class.d.ts +4 -2
  37. package/dist/components/agent-tools/test-results/test-results.class.js +2 -2
  38. package/dist/components/agent-tools/thinking-panel/thinking-panel.class.d.ts +2 -0
  39. package/dist/components/agent-tools/thinking-panel/thinking-panel.styles.js +1 -1
  40. package/dist/components/agent-tools/tool-approval-dialog/tool-approval-dialog.class.js +1 -1
  41. package/dist/components/agent-tools/tool-call-chip/tool-call-chip.class.d.ts +2 -2
  42. package/dist/components/agent-tools/tool-call-chip/tool-call-chip.class.js +1 -1
  43. package/dist/components/agent-tools/tool-param-form/tool-param-form.class.js +3 -2
  44. package/dist/components/agent-tools/tool-param-form/tool-param-form.d.ts +1 -1
  45. package/dist/components/agent-tools/tool-param-form/tool-param-form.js +1 -1
  46. package/dist/components/agent-tools/tool-result-dialog/tool-result-dialog.class.js +2 -2
  47. package/dist/components/agent-tools/tool-result-dialog/tool-result-dialog.styles.js +1 -1
  48. package/dist/components/agent-tools/tool-result-view/registry.d.ts +2 -1
  49. package/dist/components/agent-tools/tool-result-view/tool-result-view.class.d.ts +1 -1
  50. package/dist/components/agent-tools/tool-result-view/tool-result-view.class.js +1 -1
  51. package/dist/components/agent-tools/tool-select-dialog/tool-select-dialog.class.d.ts +18 -12
  52. package/dist/components/agent-tools/tool-select-dialog/tool-select-dialog.class.js +7 -7
  53. package/dist/components/agent-tools/tool-timeline/tool-timeline.class.d.ts +9 -3
  54. package/dist/components/agent-tools/tool-timeline/tool-timeline.class.js +1 -1
  55. package/dist/components/agent-tools/trace-tree/span.d.ts +3 -1
  56. package/dist/components/agent-tools/trace-tree/span.js +1 -1
  57. package/dist/components/agent-tools/trace-tree/trace-tree.styles.js +1 -1
  58. package/dist/components/charts/chart/box-plot.class.d.ts +12 -3
  59. package/dist/components/charts/chart/box-plot.class.js +9 -9
  60. package/dist/components/charts/chart/box-plot.styles.js +1 -1
  61. package/dist/components/charts/chart/chart-core-loader.js +1 -1
  62. package/dist/components/charts/chart/chart-feature-loader.js +1 -1
  63. package/dist/components/charts/chart/chart-preload.d.ts +1 -1
  64. package/dist/components/charts/chart/chart-preload.js +1 -1
  65. package/dist/components/charts/chart/chart.class.d.ts +33 -10
  66. package/dist/components/charts/chart/chart.class.js +23 -14
  67. package/dist/components/charts/chart/chart.styles.js +1 -1
  68. package/dist/components/charts/chart/histogram-bin.js +1 -1
  69. package/dist/components/charts/chart/lite-chart.class.d.ts +20 -11
  70. package/dist/components/charts/chart/lite-chart.class.js +17 -11
  71. package/dist/components/charts/chart/lite-chart.styles.js +1 -1
  72. package/dist/components/conversation/agent-workspace/agent-workspace.class.d.ts +1 -1
  73. package/dist/components/conversation/agent-workspace/agent-workspace.class.js +2 -2
  74. package/dist/components/conversation/audio-visualizer/audio-visualizer.class.d.ts +10 -5
  75. package/dist/components/conversation/audio-visualizer/audio-visualizer.class.js +1 -1
  76. package/dist/components/conversation/branch-picker/branch-picker.class.d.ts +4 -2
  77. package/dist/components/conversation/branch-picker/branch-picker.class.js +1 -1
  78. package/dist/components/conversation/branch-picker/branch-picker.styles.js +1 -1
  79. package/dist/components/conversation/chat-composer/chat-composer.class.d.ts +6 -2
  80. package/dist/components/conversation/chat-composer/chat-composer.class.js +3 -3
  81. package/dist/components/conversation/chat-composer/chat-composer.styles.js +1 -1
  82. package/dist/components/conversation/chat-message/chat-message.class.d.ts +4 -3
  83. package/dist/components/conversation/chat-message/chat-message.class.js +2 -2
  84. package/dist/components/conversation/chat-message/chat-message.styles.js +1 -1
  85. package/dist/components/conversation/chat-viewport/chat-viewport.styles.js +1 -1
  86. package/dist/components/conversation/code-block/code-block-core.class.d.ts +4 -3
  87. package/dist/components/conversation/code-block/code-block-core.class.js +1 -1
  88. package/dist/components/conversation/code-block/code-block-shared.d.ts +3 -3
  89. package/dist/components/conversation/code-block/code-block-shared.js +2 -2
  90. package/dist/components/conversation/code-block/code-block.class.d.ts +4 -3
  91. package/dist/components/conversation/code-block/code-block.class.js +1 -1
  92. package/dist/components/conversation/code-block/code-block.styles.js +1 -1
  93. package/dist/components/conversation/code-block/code-loader.d.ts +1 -1
  94. package/dist/components/conversation/code-block/code-loader.js +1 -1
  95. package/dist/components/conversation/code-block/shiki-types.d.ts +2 -0
  96. package/dist/components/conversation/code-block/shiki-types.js +1 -1
  97. package/dist/components/conversation/conversation-item/conversation-item.class.js +1 -1
  98. package/dist/components/conversation/conversation-item/conversation-item.styles.js +1 -1
  99. package/dist/components/conversation/generation-metrics/generation-metrics.styles.js +1 -1
  100. package/dist/components/conversation/markdown/katex-loader.d.ts +4 -4
  101. package/dist/components/conversation/markdown/katex-loader.js +1 -1
  102. package/dist/components/conversation/markdown/markdown-base.class.js +1 -1
  103. package/dist/components/conversation/markdown/markdown-core.class.d.ts +1 -1
  104. package/dist/components/conversation/markdown/markdown-loader.d.ts +1 -1
  105. package/dist/components/conversation/markdown/markdown-loader.js +1 -1
  106. package/dist/components/conversation/markdown/markdown-shared.d.ts +6 -1
  107. package/dist/components/conversation/markdown/markdown-shared.js +5 -4
  108. package/dist/components/conversation/markdown/markdown.class.d.ts +1 -1
  109. package/dist/components/conversation/message-actions/message-actions.class.d.ts +18 -3
  110. package/dist/components/conversation/message-actions/message-actions.class.js +2 -2
  111. package/dist/components/conversation/message-actions/message-actions.styles.js +1 -1
  112. package/dist/components/conversation/message-actions/toolbar-actions.d.ts +3 -1
  113. package/dist/components/conversation/message-actions/toolbar-actions.js +1 -1
  114. package/dist/components/conversation/message-feedback/message-feedback.class.d.ts +40 -15
  115. package/dist/components/conversation/message-feedback/message-feedback.class.js +7 -3
  116. package/dist/components/conversation/message-feedback/message-feedback.styles.js +1 -1
  117. package/dist/components/conversation/message-parts/message-parts.class.d.ts +10 -4
  118. package/dist/components/conversation/message-parts/message-parts.class.js +2 -2
  119. package/dist/components/conversation/message-parts/message-parts.styles.js +1 -1
  120. package/dist/components/conversation/model-select/model-select.class.d.ts +5 -2
  121. package/dist/components/conversation/model-select/model-select.class.js +8 -5
  122. package/dist/components/conversation/model-settings-panel/model-settings-panel.class.d.ts +3 -5
  123. package/dist/components/conversation/model-settings-panel/model-settings-panel.class.js +2 -1
  124. package/dist/components/conversation/prompt-input/prompt-input.class.d.ts +9 -2
  125. package/dist/components/conversation/prompt-input/prompt-input.class.js +3 -3
  126. package/dist/components/conversation/prompt-input/prompt-input.styles.js +1 -1
  127. package/dist/components/conversation/prompt-queue/prompt-queue.class.d.ts +20 -4
  128. package/dist/components/conversation/prompt-queue/prompt-queue.class.js +1 -1
  129. package/dist/components/conversation/prompt-queue/prompt-queue.styles.js +1 -1
  130. package/dist/components/conversation/push-to-talk/push-to-talk.class.d.ts +17 -8
  131. package/dist/components/conversation/push-to-talk/push-to-talk.class.js +1 -1
  132. package/dist/components/conversation/push-to-talk/push-to-talk.styles.js +1 -1
  133. package/dist/components/conversation/selection-toolbar/selection-toolbar.class.d.ts +6 -3
  134. package/dist/components/conversation/selection-toolbar/selection-toolbar.class.js +1 -1
  135. package/dist/components/conversation/selection-toolbar/selection-toolbar.styles.js +1 -1
  136. package/dist/components/conversation/thread-list/thread-list.class.d.ts +14 -4
  137. package/dist/components/conversation/thread-list/thread-list.class.js +11 -11
  138. package/dist/components/conversation/thread-list/thread-list.styles.js +1 -1
  139. package/dist/components/conversation/transcript-feed/transcript-feed.class.d.ts +2 -0
  140. package/dist/components/conversation/transcript-feed/transcript-feed.class.js +1 -1
  141. package/dist/components/conversation/transcript-feed/transcript-feed.styles.js +1 -1
  142. package/dist/components/conversation/typing-indicator/typing-indicator.class.d.ts +2 -1
  143. package/dist/components/conversation/typing-indicator/typing-indicator.class.js +1 -1
  144. package/dist/components/conversation/usage-badge/usage-badge-overlay-runtime.d.ts +3 -0
  145. package/dist/components/conversation/usage-badge/usage-badge-overlay-runtime.js +1 -0
  146. package/dist/components/conversation/usage-badge/usage-badge.class.d.ts +4 -2
  147. package/dist/components/conversation/usage-badge/usage-badge.class.js +1 -1
  148. package/dist/components/conversation/voice-picker/voice-picker.class.d.ts +12 -4
  149. package/dist/components/conversation/voice-picker/voice-picker.class.js +8 -5
  150. package/dist/components/conversation/voice-picker/voice-picker.styles.js +1 -1
  151. package/dist/components/conversation/widget-renderer/resolve.d.ts +4 -6
  152. package/dist/components/conversation/widget-renderer/resolve.js +1 -1
  153. package/dist/components/data/calendar/calendar.class.d.ts +16 -5
  154. package/dist/components/data/calendar/calendar.class.js +2 -2
  155. package/dist/components/data/calendar/calendar.styles.js +1 -1
  156. package/dist/components/data/condition-builder/condition-builder.class.d.ts +3 -1
  157. package/dist/components/data/condition-builder/condition-builder.class.js +15 -1
  158. package/dist/components/data/context-meter/context-meter.class.d.ts +3 -1
  159. package/dist/components/data/context-meter/context-meter.class.js +4 -4
  160. package/dist/components/data/data-grid/data-grid.class.d.ts +51 -6
  161. package/dist/components/data/data-grid/data-grid.class.js +25 -11
  162. package/dist/components/data/data-grid/data-grid.styles.js +1 -1
  163. package/dist/components/data/document-library/document-library.class.d.ts +5 -2
  164. package/dist/components/data/document-library/document-library.class.js +1 -1
  165. package/dist/components/data/env-list/env-list.class.js +1 -1
  166. package/dist/components/data/file-tree/file-tree.class.d.ts +2 -1
  167. package/dist/components/data/file-tree/file-tree.class.js +1 -1
  168. package/dist/components/data/flow-canvas/flow-canvas.class.d.ts +24 -14
  169. package/dist/components/data/flow-canvas/flow-canvas.class.js +1 -2
  170. package/dist/components/data/flow-canvas/flow-canvas.styles.js +1 -1
  171. package/dist/components/data/flow-canvas/flow-model.js +1 -1
  172. package/dist/components/data/flow-canvas/flow-types.d.ts +2 -1
  173. package/dist/components/data/flow-controls/flow-controls.styles.js +1 -1
  174. package/dist/components/data/flow-run-status/flow-run-status.class.js +1 -1
  175. package/dist/components/data/funnel/funnel.class.d.ts +1 -0
  176. package/dist/components/data/funnel/funnel.class.js +1 -1
  177. package/dist/components/data/gauge/gauge.class.d.ts +4 -1
  178. package/dist/components/data/gauge/gauge.class.js +6 -6
  179. package/dist/components/data/graph-query-builder/graph-query-builder.class.d.ts +5 -2
  180. package/dist/components/data/graph-query-builder/graph-query-builder.class.js +15 -1
  181. package/dist/components/data/graph-query-builder/graph-query-builder.styles.js +1 -1
  182. package/dist/components/data/heatmap/heatmap.class.d.ts +7 -4
  183. package/dist/components/data/heatmap/heatmap.class.js +1 -1
  184. package/dist/components/data/sequence-strip/sequence-strip.class.js +1 -1
  185. package/dist/components/data/sparkline/sparkline.class.d.ts +2 -1
  186. package/dist/components/data/sparkline/sparkline.class.js +1 -1
  187. package/dist/components/data/stat/stat.class.d.ts +6 -2
  188. package/dist/components/data/stat/stat.class.js +1 -1
  189. package/dist/components/data/table/table.class.d.ts +15 -16
  190. package/dist/components/data/table/table.class.js +5 -4
  191. package/dist/components/data/table/table.styles.js +1 -1
  192. package/dist/components/data/timeline/timeline.class.d.ts +7 -2
  193. package/dist/components/data/timeline/timeline.class.js +1 -1
  194. package/dist/components/data/timeline/timeline.styles.js +1 -1
  195. package/dist/components/data/tree/tree-item.class.d.ts +3 -1
  196. package/dist/components/data/tree/tree-item.class.js +1 -1
  197. package/dist/components/data/tree/tree-item.styles.js +1 -1
  198. package/dist/components/data/tree/tree.class.d.ts +4 -1
  199. package/dist/components/data/tree/tree.class.js +1 -1
  200. package/dist/components/data/word-cloud/word-cloud-layout.d.ts +2 -1
  201. package/dist/components/data/word-cloud/word-cloud-layout.js +1 -1
  202. package/dist/components/data/word-cloud/word-cloud.class.d.ts +2 -1
  203. package/dist/components/data/word-cloud/word-cloud.class.js +1 -1
  204. package/dist/components/forms/button/button.class.d.ts +5 -3
  205. package/dist/components/forms/button/button.class.js +1 -1
  206. package/dist/components/forms/checkbox/checkbox.class.d.ts +3 -0
  207. package/dist/components/forms/checkbox/checkbox.class.js +1 -1
  208. package/dist/components/forms/checkbox-group/checkbox-group.class.d.ts +7 -2
  209. package/dist/components/forms/checkbox-group/checkbox-group.class.js +1 -1
  210. package/dist/components/forms/code-editor/code-editor.class.d.ts +16 -4
  211. package/dist/components/forms/code-editor/code-editor.class.js +19 -9
  212. package/dist/components/forms/code-editor/code-editor.styles.js +1 -1
  213. package/dist/components/forms/color-picker/color-picker.class.d.ts +6 -2
  214. package/dist/components/forms/color-picker/color-picker.class.js +4 -4
  215. package/dist/components/forms/combobox/combobox.class.d.ts +19 -8
  216. package/dist/components/forms/combobox/combobox.class.js +3 -3
  217. package/dist/components/forms/combobox/combobox.styles.js +1 -1
  218. package/dist/components/forms/combobox/option.class.d.ts +4 -0
  219. package/dist/components/forms/combobox/option.class.js +2 -2
  220. package/dist/components/forms/date-picker/calendar-core.d.ts +1 -1
  221. package/dist/components/forms/date-picker/calendar-core.js +1 -1
  222. package/dist/components/forms/date-picker/date-input.class.d.ts +20 -10
  223. package/dist/components/forms/date-picker/date-input.class.js +4 -4
  224. package/dist/components/forms/date-picker/date-picker.class.d.ts +33 -15
  225. package/dist/components/forms/date-picker/date-picker.class.js +8 -8
  226. package/dist/components/forms/date-picker/date-picker.styles.js +1 -1
  227. package/dist/components/forms/emoji-picker/emoji-data-loader.js +1 -1
  228. package/dist/components/forms/emoji-picker/emoji-picker.class.d.ts +11 -3
  229. package/dist/components/forms/emoji-picker/emoji-picker.class.js +3 -3
  230. package/dist/components/forms/emoji-picker/emoji-types.d.ts +2 -2
  231. package/dist/components/forms/icon-button/icon-button.class.d.ts +4 -2
  232. package/dist/components/forms/icon-button/icon-button.class.js +1 -1
  233. package/dist/components/forms/input/input.class.d.ts +16 -5
  234. package/dist/components/forms/input/input.class.js +7 -1
  235. package/dist/components/forms/input/native-time-input.class.d.ts +3 -0
  236. package/dist/components/forms/input/number-input.class.d.ts +3 -0
  237. package/dist/components/forms/input/time-input.class.d.ts +11 -2
  238. package/dist/components/forms/input/time-input.class.js +2 -2
  239. package/dist/components/forms/locale-picker/locale-picker.class.d.ts +22 -4
  240. package/dist/components/forms/locale-picker/locale-picker.class.js +2 -2
  241. package/dist/components/forms/locale-picker/locale-picker.styles.js +1 -1
  242. package/dist/components/forms/otp-input/otp-input.class.d.ts +5 -1
  243. package/dist/components/forms/otp-input/otp-input.class.js +1 -1
  244. package/dist/components/forms/phone-input/phone-input.class.d.ts +21 -8
  245. package/dist/components/forms/phone-input/phone-input.class.js +1 -1
  246. package/dist/components/forms/radio/radio-button.class.d.ts +4 -0
  247. package/dist/components/forms/radio/radio-group.class.d.ts +4 -1
  248. package/dist/components/forms/radio/radio-group.class.js +1 -1
  249. package/dist/components/forms/radio/radio.class.d.ts +6 -2
  250. package/dist/components/forms/radio/radio.class.js +1 -1
  251. package/dist/components/forms/rubric-form/rubric-form.class.d.ts +7 -1
  252. package/dist/components/forms/rubric-form/rubric-form.class.js +3 -3
  253. package/dist/components/forms/select/select.class.d.ts +8 -2
  254. package/dist/components/forms/select/select.class.js +2 -2
  255. package/dist/components/forms/select/select.styles.js +1 -1
  256. package/dist/components/forms/slider/slider.class.d.ts +12 -6
  257. package/dist/components/forms/slider/slider.class.js +2 -2
  258. package/dist/components/forms/swatch-picker/swatch-picker.class.d.ts +4 -0
  259. package/dist/components/forms/swatch-picker/swatch-picker.class.js +1 -1
  260. package/dist/components/forms/switch/switch.class.d.ts +5 -1
  261. package/dist/components/forms/switch/switch.class.js +1 -1
  262. package/dist/components/forms/textarea/textarea.class.d.ts +3 -0
  263. package/dist/components/forms/textarea/textarea.class.js +1 -1
  264. package/dist/components/forms/time-range/time-range.class.d.ts +3 -0
  265. package/dist/components/forms/time-range/time-range.class.js +1 -1
  266. package/dist/components/forms/token-input/token-input.class.d.ts +8 -2
  267. package/dist/components/forms/token-input/token-input.class.js +2 -2
  268. package/dist/components/forms/token-input/token-input.styles.js +1 -1
  269. package/dist/components/layout/app-rail/app-rail.class.d.ts +9 -5
  270. package/dist/components/layout/app-rail/app-rail.class.js +4 -3
  271. package/dist/components/layout/app-rail/app-rail.styles.js +1 -1
  272. package/dist/components/layout/carousel/carousel.class.d.ts +3 -2
  273. package/dist/components/layout/carousel/carousel.class.js +1 -1
  274. package/dist/components/layout/command-palette/command-palette.class.d.ts +2 -2
  275. package/dist/components/layout/command-palette/command-palette.class.js +1 -1
  276. package/dist/components/layout/command-palette/command-palette.styles.js +1 -1
  277. package/dist/components/layout/dashboard-grid/dashboard-grid.class.d.ts +2 -0
  278. package/dist/components/layout/dashboard-grid/dashboard-grid.class.js +1 -1
  279. package/dist/components/layout/details/details.class.d.ts +16 -15
  280. package/dist/components/layout/details/details.class.js +43 -34
  281. package/dist/components/layout/details/details.styles.js +1 -1
  282. package/dist/components/layout/dock-panel/dock-panel.class.d.ts +4 -3
  283. package/dist/components/layout/dock-panel/dock-panel.class.js +2 -1
  284. package/dist/components/layout/filter-bar/filter-bar.class.d.ts +3 -1
  285. package/dist/components/layout/filter-bar/filter-bar.class.js +2 -2
  286. package/dist/components/layout/menu/menu-item.class.js +2 -2
  287. package/dist/components/layout/menu/menu-label.class.d.ts +3 -3
  288. package/dist/components/layout/menu/menu.class.d.ts +4 -1
  289. package/dist/components/layout/menu/menu.class.js +1 -1
  290. package/dist/components/layout/multi-split/multi-split.class.d.ts +19 -8
  291. package/dist/components/layout/multi-split/multi-split.class.js +2 -1
  292. package/dist/components/layout/multi-split/multi-split.styles.js +1 -1
  293. package/dist/components/layout/reorder-list/reorder-item.class.d.ts +2 -1
  294. package/dist/components/layout/reorder-list/reorder-item.class.js +1 -1
  295. package/dist/components/layout/reorder-list/reorder-list.class.js +1 -1
  296. package/dist/components/layout/reorder-list/reorder-owner.js +1 -1
  297. package/dist/components/layout/scroller/scroller.class.d.ts +4 -4
  298. package/dist/components/layout/scroller/scroller.styles.js +1 -1
  299. package/dist/components/layout/split-panel/split-panel.class.d.ts +5 -3
  300. package/dist/components/layout/split-panel/split-panel.class.js +3 -2
  301. package/dist/components/layout/tab-group/tab-group.class.d.ts +3 -1
  302. package/dist/components/layout/tab-group/tab-group.class.js +1 -1
  303. package/dist/components/layout/tab-group/tab-group.styles.js +1 -1
  304. package/dist/components/layout/virtual-list/virtual-list.class.js +2 -2
  305. package/dist/components/layout/widget/widget.class.d.ts +6 -2
  306. package/dist/components/layout/widget/widget.class.js +1 -1
  307. package/dist/components/layout/widget/widget.styles.js +1 -1
  308. package/dist/components/media/animation/animation.class.d.ts +3 -2
  309. package/dist/components/media/animation/animation.class.js +1 -1
  310. package/dist/components/media/attachment-chip/attachment-chip.class.d.ts +4 -3
  311. package/dist/components/media/attachment-chip/attachment-chip.class.js +1 -1
  312. package/dist/components/media/av-player/av-metadata.d.ts +3 -2
  313. package/dist/components/media/av-player/av-player.class.d.ts +4 -3
  314. package/dist/components/media/av-player/av-player.class.js +3 -3
  315. package/dist/components/media/av-player/av-player.styles.js +1 -1
  316. package/dist/components/media/avatar/avatar.class.d.ts +2 -1
  317. package/dist/components/media/avatar/avatar.class.js +1 -1
  318. package/dist/components/media/file-input/file-input.class.d.ts +4 -2
  319. package/dist/components/media/file-input/file-input.class.js +1 -1
  320. package/dist/components/media/file-input/file-input.styles.js +1 -1
  321. package/dist/components/media/flag/flag.class.js +1 -1
  322. package/dist/components/media/image-viewer/image-viewer.class.d.ts +2 -1
  323. package/dist/components/media/image-viewer/image-viewer.class.js +1 -1
  324. package/dist/components/media/image-viewer/image-viewer.styles.js +1 -1
  325. package/dist/components/media/lightbox/lightbox.styles.js +1 -1
  326. package/dist/components/media/map/map-loader.js +1 -1
  327. package/dist/components/media/map/map.class.d.ts +22 -34
  328. package/dist/components/media/map/map.class.js +1 -1
  329. package/dist/components/media/map/map.styles.js +1 -1
  330. package/dist/components/media/media-card/media-card.class.d.ts +1 -1
  331. package/dist/components/media/media-card/media-card.class.js +1 -1
  332. package/dist/components/media/pan-zoom/pan-zoom.class.js +1 -1
  333. package/dist/components/media/qr-code/qr-code-loader.js +1 -1
  334. package/dist/components/media/qr-code/qr-code.class.d.ts +5 -2
  335. package/dist/components/media/qr-code/qr-code.class.js +2 -2
  336. package/dist/components/media/sequence-playback/sequence-playback.class.d.ts +3 -3
  337. package/dist/components/media/sequence-playback/sequence-playback.class.js +1 -1
  338. package/dist/components/media/sequence-playback/sequence-playback.styles.js +1 -1
  339. package/dist/components/media/video/video.class.d.ts +2 -1
  340. package/dist/components/media/video/video.styles.js +1 -1
  341. package/dist/components/media/zoomable-frame/zoomable-frame.class.d.ts +3 -2
  342. package/dist/components/media/zoomable-frame/zoomable-frame.class.js +2 -2
  343. package/dist/components/overlays/alert/alert.styles.js +1 -1
  344. package/dist/components/overlays/callout/callout.styles.js +1 -1
  345. package/dist/components/overlays/chip/chip-group.class.d.ts +2 -0
  346. package/dist/components/overlays/chip/chip-group.class.js +1 -1
  347. package/dist/components/overlays/dialog/dialog.class.d.ts +2 -0
  348. package/dist/components/overlays/dialog/dialog.class.js +1 -1
  349. package/dist/components/overlays/dialog/dialog.styles.js +1 -1
  350. package/dist/components/overlays/empty/empty.class.d.ts +2 -0
  351. package/dist/components/overlays/empty/empty.class.js +1 -1
  352. package/dist/components/overlays/kbd/kbd.class.d.ts +2 -0
  353. package/dist/components/overlays/kbd/kbd.class.js +1 -1
  354. package/dist/components/overlays/overlay/popover.class.d.ts +3 -1
  355. package/dist/components/overlays/overlay/popover.class.js +1 -1
  356. package/dist/components/overlays/overlay/tooltip.class.d.ts +3 -1
  357. package/dist/components/overlays/overlay/tooltip.class.js +1 -1
  358. package/dist/components/overlays/rating/rating.class.d.ts +2 -0
  359. package/dist/components/overlays/rating/rating.class.js +1 -1
  360. package/dist/components/overlays/toast/toast-item.class.js +1 -1
  361. package/dist/components/retrieval/claim-evidence/claim-evidence.class.d.ts +11 -5
  362. package/dist/components/retrieval/claim-evidence/claim-evidence.class.js +3 -3
  363. package/dist/components/retrieval/embedding-explorer/embedding-explorer.class.js +2 -2
  364. package/dist/components/retrieval/entity-card/entity-card.class.d.ts +5 -2
  365. package/dist/components/retrieval/entity-card/entity-card.class.js +1 -1
  366. package/dist/components/retrieval/entity-chip/entity-chip.class.d.ts +4 -2
  367. package/dist/components/retrieval/entity-chip/entity-chip.class.js +1 -1
  368. package/dist/components/retrieval/graph/graph-canvas.js +1 -1
  369. package/dist/components/retrieval/graph/graph-loader.js +1 -1
  370. package/dist/components/retrieval/graph/graph.class.d.ts +10 -8
  371. package/dist/components/retrieval/graph/graph.class.js +10 -10
  372. package/dist/components/retrieval/graph-legend/graph-legend.class.d.ts +4 -2
  373. package/dist/components/retrieval/graph-legend/graph-legend.class.js +1 -1
  374. package/dist/components/retrieval/grounding-summary/grounding-summary.class.d.ts +15 -9
  375. package/dist/components/retrieval/grounding-summary/grounding-summary.class.js +7 -5
  376. package/dist/components/retrieval/ingestion-queue/ingestion-queue.class.d.ts +2 -0
  377. package/dist/components/retrieval/ingestion-queue/ingestion-queue.class.js +1 -1
  378. package/dist/components/retrieval/knowledge-base/knowledge-base.class.d.ts +3 -2
  379. package/dist/components/retrieval/knowledge-base/knowledge-base.class.js +4 -3
  380. package/dist/components/retrieval/knowledge-base/knowledge-base.styles.js +1 -1
  381. package/dist/components/retrieval/knowledge-graph-explorer/knowledge-graph-explorer.class.d.ts +7 -3
  382. package/dist/components/retrieval/knowledge-graph-explorer/knowledge-graph-explorer.class.js +8 -3
  383. package/dist/components/retrieval/knowledge-graph-explorer/knowledge-graph-explorer.styles.js +1 -1
  384. package/dist/components/retrieval/memory-panel/memory-panel.class.d.ts +15 -6
  385. package/dist/components/retrieval/memory-panel/memory-panel.class.js +1 -1
  386. package/dist/components/retrieval/neighbor-list/neighbor-list.class.js +1 -1
  387. package/dist/components/retrieval/neighbor-list/neighbor-list.styles.js +1 -1
  388. package/dist/components/retrieval/node-palette/node-palette.class.d.ts +17 -12
  389. package/dist/components/retrieval/node-palette/node-palette.class.js +2 -2
  390. package/dist/components/retrieval/node-palette/node-palette.styles.js +1 -1
  391. package/dist/components/retrieval/path-strip/path-strip.class.js +1 -1
  392. package/dist/components/retrieval/provenance-panel/provenance-panel.class.d.ts +2 -1
  393. package/dist/components/retrieval/provenance-panel/provenance-panel.class.js +1 -1
  394. package/dist/components/retrieval/retrieval-results/retrieval-results.class.d.ts +1 -1
  395. package/dist/components/retrieval/retrieval-results/retrieval-results.class.js +5 -5
  396. package/dist/components/retrieval/retrieval-trace/retrieval-trace.class.js +1 -1
  397. package/dist/components/retrieval/source-picker/source-picker.class.d.ts +2 -1
  398. package/dist/components/retrieval/source-picker/source-picker.class.js +2 -2
  399. package/dist/components/utility/copy-button/copy-button.class.d.ts +2 -1
  400. package/dist/components/utility/copy-button/copy-button.class.js +1 -1
  401. package/dist/components/utility/diff-view/diff-view.class.d.ts +4 -1
  402. package/dist/components/utility/diff-view/diff-view.class.js +1 -1
  403. package/dist/components/utility/export-button/export-button.class.d.ts +2 -2
  404. package/dist/components/utility/export-button/export-button.class.js +1 -1
  405. package/dist/components/utility/export-button/export-button.styles.js +1 -1
  406. package/dist/components/utility/format/format-date.class.js +1 -1
  407. package/dist/components/utility/format/format-number.class.d.ts +3 -1
  408. package/dist/components/utility/format/format-options.js +1 -1
  409. package/dist/components/utility/format/relative-time.class.js +1 -1
  410. package/dist/components/utility/icon/dompurify-loader.js +1 -1
  411. package/dist/components/utility/icon/icon-library.js +1 -1
  412. package/dist/components/utility/intersection-observer/intersection-observer.class.js +1 -1
  413. package/dist/components/utility/json-viewer/json-viewer.class.d.ts +6 -3
  414. package/dist/components/utility/json-viewer/json-viewer.class.js +5 -5
  415. package/dist/components/utility/known-date/known-date.class.d.ts +9 -5
  416. package/dist/components/utility/known-date/known-date.class.js +2 -2
  417. package/dist/components/utility/known-date/known-date.styles.js +1 -1
  418. package/dist/components/utility/mention-popover/mention-popover.class.d.ts +32 -45
  419. package/dist/components/utility/mention-popover/mention-popover.class.js +1 -1
  420. package/dist/components/utility/mutation-observer/mutation-observer.class.js +1 -1
  421. package/dist/components/utility/poll-status/poll-status.class.d.ts +3 -0
  422. package/dist/components/utility/poll-status/poll-status.styles.js +1 -1
  423. package/dist/components/viewers/calendar-viewer/calendar-loader.js +1 -1
  424. package/dist/components/viewers/calendar-viewer/calendar-viewer.class.d.ts +1 -0
  425. package/dist/components/viewers/calendar-viewer/calendar-viewer.class.js +1 -1
  426. package/dist/components/viewers/dataset-viewer/dataset-viewer.class.d.ts +2 -1
  427. package/dist/components/viewers/dataset-viewer/dataset-viewer.styles.js +1 -1
  428. package/dist/components/viewers/document-compare/document-compare.class.d.ts +11 -8
  429. package/dist/components/viewers/document-compare/document-compare.class.js +2 -2
  430. package/dist/components/viewers/document-preview/document-preview.class.d.ts +8 -4
  431. package/dist/components/viewers/document-preview/document-preview.class.js +4 -4
  432. package/dist/components/viewers/document-preview/document-preview.styles.js +1 -1
  433. package/dist/components/viewers/document-viewer/document-viewer.class.d.ts +5 -2
  434. package/dist/components/viewers/document-viewer/document-viewer.class.js +2 -2
  435. package/dist/components/viewers/document-viewer/document-viewer.styles.js +1 -1
  436. package/dist/components/viewers/document-viewer/registry-ownership.d.ts +1 -0
  437. package/dist/components/viewers/document-viewer/registry-ownership.js +1 -0
  438. package/dist/components/viewers/document-viewer/registry.js +1 -1
  439. package/dist/components/viewers/docx-viewer/docx-loader.js +1 -1
  440. package/dist/components/viewers/docx-viewer/docx-viewer.class.js +1 -1
  441. package/dist/components/viewers/ebook-viewer/ebook-loader.d.ts +1 -1
  442. package/dist/components/viewers/ebook-viewer/ebook-viewer.class.d.ts +8 -2
  443. package/dist/components/viewers/ebook-viewer/ebook-viewer.class.js +1 -1
  444. package/dist/components/viewers/email-viewer/email-loader.js +1 -1
  445. package/dist/components/viewers/email-viewer/email-viewer.class.d.ts +3 -2
  446. package/dist/components/viewers/email-viewer/email-viewer.class.js +2 -2
  447. package/dist/components/viewers/html-viewer/dompurify-loader.js +1 -1
  448. package/dist/components/viewers/include/include-resource.js +1 -1
  449. package/dist/components/viewers/include/include.class.d.ts +3 -1
  450. package/dist/components/viewers/notebook-viewer/dompurify-loader.js +1 -1
  451. package/dist/components/viewers/notebook-viewer/notebook-viewer.class.d.ts +4 -2
  452. package/dist/components/viewers/notebook-viewer/notebook-viewer.class.js +4 -4
  453. package/dist/components/viewers/notebook-viewer/notebook-viewer.styles.js +1 -1
  454. package/dist/components/viewers/passive-markup.js +1 -1
  455. package/dist/components/viewers/pdf-viewer/pdf-loader.js +1 -1
  456. package/dist/components/viewers/pptx-viewer/pptx-loader.js +1 -1
  457. package/dist/components/viewers/spreadsheet-viewer/spreadsheet-loader.js +1 -1
  458. package/dist/components/viewers/svg-viewer/dompurify-loader.js +1 -1
  459. package/dist/components/viewers/svg-viewer/svg-viewer.class.d.ts +2 -1
  460. package/dist/components/viewers/svg-viewer/svg-viewer.styles.js +1 -1
  461. package/dist/components/viewers/viewer-loading.js +1 -1
  462. package/dist/components/viewers/viewer-search-limits.d.ts +2 -0
  463. package/dist/components/viewers/viewer-search-limits.js +1 -1
  464. package/dist/components/viewers/xml-viewer/xml-viewer.class.d.ts +2 -1
  465. package/dist/components/viewers/xml-viewer/xml-viewer.class.js +1 -1
  466. package/dist/components/viewers/xml-viewer/xml-viewer.js +1 -1
  467. package/dist/custom-elements-jsx.d.ts +1 -1
  468. package/dist/events.d.ts +13 -6
  469. package/dist/internal/aria-controls.d.ts +16 -13
  470. package/dist/internal/aria-controls.js +1 -1
  471. package/dist/internal/aria-reflection.js +1 -1
  472. package/dist/internal/catalog-picker.d.ts +2 -2
  473. package/dist/internal/catalog-picker.js +1 -1
  474. package/dist/internal/chart-annotation-registration.d.ts +1 -0
  475. package/dist/internal/chart-annotation-registration.js +1 -0
  476. package/dist/internal/data-descriptors.d.ts +13 -0
  477. package/dist/internal/data-descriptors.js +1 -0
  478. package/dist/internal/default-strings.generated.d.ts +1 -1
  479. package/dist/internal/default-strings.generated.js +2 -2
  480. package/dist/internal/dev-mode-attribute-warning.d.ts +3 -0
  481. package/dist/internal/dev-mode-attribute-warning.js +1 -1
  482. package/dist/internal/element-internals.d.ts +4 -3
  483. package/dist/internal/element-internals.js +1 -1
  484. package/dist/internal/form-associated.js +1 -1
  485. package/dist/internal/highlight-collection.d.ts +2 -0
  486. package/dist/internal/highlight-collection.js +1 -1
  487. package/dist/internal/localization-types.d.ts +1 -1
  488. package/dist/internal/localization.js +2 -2
  489. package/dist/internal/lyra-element.d.ts +10 -1
  490. package/dist/internal/lyra-element.js +2 -1
  491. package/dist/internal/native-control-description.d.ts +7 -0
  492. package/dist/internal/native-control-description.js +1 -0
  493. package/dist/internal/option-selection.js +1 -1
  494. package/dist/internal/overlay-order.d.ts +6 -0
  495. package/dist/internal/overlay-order.js +1 -0
  496. package/dist/internal/overlay-stack.d.ts +1 -1
  497. package/dist/internal/overlay-stack.js +1 -1
  498. package/dist/internal/package-metadata.d.ts +1 -1
  499. package/dist/internal/package-metadata.js +1 -1
  500. package/dist/internal/papaparse-loader.js +1 -1
  501. package/dist/internal/positioner.d.ts +5 -4
  502. package/dist/internal/pseudo-localization.js +1 -1
  503. package/dist/internal/reactive-property-writes.d.ts +1 -0
  504. package/dist/internal/reactive-property-writes.js +1 -0
  505. package/dist/internal/safe-css.js +1 -1
  506. package/dist/internal/step-value.d.ts +6 -0
  507. package/dist/internal/step-value.js +1 -0
  508. package/dist/internal/svg-title.d.ts +3 -0
  509. package/dist/internal/svg-title.js +1 -0
  510. package/dist/internal/text-quote.js +1 -1
  511. package/dist/lyra.d.ts +1 -1
  512. package/dist/svelte.d.ts +1 -1
  513. package/dist/translations/ar.js +2 -2
  514. package/dist/translations/de.js +2 -2
  515. package/dist/translations/es.js +2 -2
  516. package/dist/translations/fa.js +2 -2
  517. package/dist/translations/fr.js +2 -2
  518. package/dist/translations/he.js +2 -2
  519. package/dist/translations/ja.js +2 -2
  520. package/dist/translations/pseudo/ar-XB.js +1 -1
  521. package/dist/translations/pt-BR.js +2 -2
  522. package/dist/translations/ru.js +2 -2
  523. package/dist/translations/zh-CN.js +2 -2
  524. package/dist/vue.d.ts +1 -1
  525. package/llms/components/lr-accordion-item.md +10 -5
  526. package/llms/components/lr-accordion.md +10 -5
  527. package/llms/components/lr-activity-feed.md +6 -5
  528. package/llms/components/lr-agent-run.md +1 -1
  529. package/llms/components/lr-agent-trace.md +3 -0
  530. package/llms/components/lr-agent-workspace.md +3 -2
  531. package/llms/components/lr-animation.md +4 -0
  532. package/llms/components/lr-app-rail-item.md +4 -2
  533. package/llms/components/lr-app-rail.md +4 -2
  534. package/llms/components/lr-attachment-chip.md +8 -3
  535. package/llms/components/lr-audio-visualizer.md +9 -6
  536. package/llms/components/lr-av-player.md +14 -0
  537. package/llms/components/lr-avatar.md +4 -0
  538. package/llms/components/lr-bar-chart.md +2 -2
  539. package/llms/components/lr-box-plot.md +15 -6
  540. package/llms/components/lr-bubble-chart.md +2 -2
  541. package/llms/components/lr-button.md +11 -3
  542. package/llms/components/lr-calendar-viewer.md +4 -0
  543. package/llms/components/lr-calendar.md +15 -4
  544. package/llms/components/lr-carousel.md +5 -0
  545. package/llms/components/lr-chart.md +24 -9
  546. package/llms/components/lr-chat-composer.md +2 -1
  547. package/llms/components/lr-chat-message.md +4 -0
  548. package/llms/components/lr-checkbox.md +3 -0
  549. package/llms/components/lr-chip-group.md +3 -0
  550. package/llms/components/lr-chip.md +3 -0
  551. package/llms/components/lr-chunk-inspector.md +2 -2
  552. package/llms/components/lr-code-block-core.md +20 -8
  553. package/llms/components/lr-code-block.md +17 -14
  554. package/llms/components/lr-code-editor.md +20 -5
  555. package/llms/components/lr-color-picker.md +9 -0
  556. package/llms/components/lr-combobox.md +35 -4
  557. package/llms/components/lr-command-palette.md +4 -0
  558. package/llms/components/lr-commit-card.md +3 -0
  559. package/llms/components/lr-compare-panel.md +7 -0
  560. package/llms/components/lr-condition-builder.md +5 -0
  561. package/llms/components/lr-conversation-item.md +3 -0
  562. package/llms/components/lr-copy-button.md +10 -1
  563. package/llms/components/lr-dashboard-grid.md +5 -0
  564. package/llms/components/lr-data-grid.md +22 -3
  565. package/llms/components/lr-dataset-viewer.md +3 -2
  566. package/llms/components/lr-date-input.md +50 -6
  567. package/llms/components/lr-date-picker.md +51 -7
  568. package/llms/components/lr-details.md +10 -5
  569. package/llms/components/lr-dialog.md +4 -0
  570. package/llms/components/lr-diff-view.md +6 -0
  571. package/llms/components/lr-document-compare.md +6 -2
  572. package/llms/components/lr-document-library.md +4 -0
  573. package/llms/components/lr-document-preview.md +18 -4
  574. package/llms/components/lr-document-viewer.md +14 -4
  575. package/llms/components/lr-docx-viewer.md +6 -0
  576. package/llms/components/lr-doughnut-chart.md +2 -2
  577. package/llms/components/lr-dropdown-item.md +4 -0
  578. package/llms/components/lr-dropdown.md +3 -0
  579. package/llms/components/lr-ebook-viewer.md +12 -3
  580. package/llms/components/lr-email-viewer.md +10 -0
  581. package/llms/components/lr-emoji-picker.md +17 -3
  582. package/llms/components/lr-empty.md +3 -0
  583. package/llms/components/lr-entity-card.md +3 -0
  584. package/llms/components/lr-entity-chip.md +4 -0
  585. package/llms/components/lr-eval-dataset.md +2 -2
  586. package/llms/components/lr-export-button.md +9 -0
  587. package/llms/components/lr-file-input.md +12 -8
  588. package/llms/components/lr-file-tree.md +5 -1
  589. package/llms/components/lr-filter-bar.md +5 -0
  590. package/llms/components/lr-flow-canvas.md +8 -1
  591. package/llms/components/lr-flow-node.md +2 -1
  592. package/llms/components/lr-flow-run-status.md +1 -1
  593. package/llms/components/lr-format-date.md +3 -1
  594. package/llms/components/lr-format-number.md +4 -0
  595. package/llms/components/lr-funnel.md +4 -0
  596. package/llms/components/lr-gauge.md +4 -0
  597. package/llms/components/lr-generation-metrics.md +5 -0
  598. package/llms/components/lr-graph-legend.md +4 -2
  599. package/llms/components/lr-graph-query-builder.md +6 -0
  600. package/llms/components/lr-graph.md +8 -2
  601. package/llms/components/lr-grounding-summary.md +8 -8
  602. package/llms/components/lr-heatmap.md +13 -0
  603. package/llms/components/lr-histogram.md +2 -2
  604. package/llms/components/lr-icon-button.md +7 -0
  605. package/llms/components/lr-image-viewer.md +9 -0
  606. package/llms/components/lr-include.md +5 -0
  607. package/llms/components/lr-ingestion-queue.md +5 -1
  608. package/llms/components/lr-input.md +22 -8
  609. package/llms/components/lr-intersection-observer.md +9 -0
  610. package/llms/components/lr-json-viewer.md +10 -1
  611. package/llms/components/lr-kbd.md +3 -0
  612. package/llms/components/lr-knowledge-base.md +10 -1
  613. package/llms/components/lr-knowledge-graph-explorer.md +7 -0
  614. package/llms/components/lr-known-date.md +7 -0
  615. package/llms/components/lr-line-chart.md +2 -2
  616. package/llms/components/lr-lite-chart.md +29 -9
  617. package/llms/components/lr-live-region.md +3 -0
  618. package/llms/components/lr-locale-picker.md +12 -0
  619. package/llms/components/lr-map.md +23 -5
  620. package/llms/components/lr-markdown-core.md +4 -0
  621. package/llms/components/lr-markdown.md +15 -8
  622. package/llms/components/lr-media-card.md +5 -8
  623. package/llms/components/lr-mention-popover.md +17 -10
  624. package/llms/components/lr-menu-item.md +4 -0
  625. package/llms/components/lr-menu-label.md +4 -3
  626. package/llms/components/lr-menu.md +4 -0
  627. package/llms/components/lr-message-actions.md +13 -3
  628. package/llms/components/lr-message-feedback.md +24 -7
  629. package/llms/components/lr-message-parts.md +6 -3
  630. package/llms/components/lr-model-select.md +13 -2
  631. package/llms/components/lr-multi-split.md +20 -7
  632. package/llms/components/lr-mutation-observer.md +8 -0
  633. package/llms/components/lr-native-time-input.md +10 -0
  634. package/llms/components/lr-node-palette.md +8 -2
  635. package/llms/components/lr-notebook-viewer.md +4 -1
  636. package/llms/components/lr-number-input.md +12 -1
  637. package/llms/components/lr-option.md +35 -4
  638. package/llms/components/lr-otp-input.md +10 -0
  639. package/llms/components/lr-pan-zoom.md +1 -2
  640. package/llms/components/lr-phone-input.md +20 -5
  641. package/llms/components/lr-pie-chart.md +2 -2
  642. package/llms/components/lr-polar-area-chart.md +2 -2
  643. package/llms/components/lr-poll-status.md +4 -0
  644. package/llms/components/lr-popover.md +3 -0
  645. package/llms/components/lr-popup.md +3 -2
  646. package/llms/components/lr-prompt-input.md +7 -3
  647. package/llms/components/lr-prompt-queue.md +6 -0
  648. package/llms/components/lr-prompt-studio.md +7 -0
  649. package/llms/components/lr-provenance-panel.md +3 -0
  650. package/llms/components/lr-push-to-talk.md +8 -0
  651. package/llms/components/lr-qr-code.md +6 -0
  652. package/llms/components/lr-radar-chart.md +2 -2
  653. package/llms/components/lr-radio-button.md +13 -4
  654. package/llms/components/lr-radio-group.md +5 -0
  655. package/llms/components/lr-radio.md +9 -0
  656. package/llms/components/lr-rating.md +8 -0
  657. package/llms/components/lr-relative-time.md +2 -0
  658. package/llms/components/lr-reorder-item.md +6 -0
  659. package/llms/components/lr-reorder-list.md +6 -0
  660. package/llms/components/lr-result-card.md +6 -3
  661. package/llms/components/lr-result-field.md +6 -3
  662. package/llms/components/lr-retrieval-results.md +1 -1
  663. package/llms/components/lr-rubric-form.md +12 -0
  664. package/llms/components/lr-scatter-chart.md +2 -2
  665. package/llms/components/lr-scroller.md +5 -5
  666. package/llms/components/lr-select.md +9 -0
  667. package/llms/components/lr-sequence-playback.md +5 -2
  668. package/llms/components/lr-slider.md +19 -5
  669. package/llms/components/lr-source-picker.md +4 -0
  670. package/llms/components/lr-span-waterfall.md +3 -0
  671. package/llms/components/lr-sparkline.md +4 -0
  672. package/llms/components/lr-split-panel.md +4 -0
  673. package/llms/components/lr-stack-trace.md +3 -0
  674. package/llms/components/lr-stat.md +10 -0
  675. package/llms/components/lr-streaming-text.md +2 -3
  676. package/llms/components/lr-subagent-panel.md +3 -2
  677. package/llms/components/lr-svg-viewer.md +3 -0
  678. package/llms/components/lr-swatch-picker.md +4 -0
  679. package/llms/components/lr-switch.md +6 -0
  680. package/llms/components/lr-tab-group.md +4 -0
  681. package/llms/components/lr-table.md +10 -2
  682. package/llms/components/lr-terminal.md +17 -5
  683. package/llms/components/lr-textarea.md +9 -0
  684. package/llms/components/lr-thinking-panel.md +3 -1
  685. package/llms/components/lr-thread-list.md +26 -4
  686. package/llms/components/lr-time-input.md +3 -0
  687. package/llms/components/lr-time-range.md +5 -0
  688. package/llms/components/lr-timeline-item.md +6 -0
  689. package/llms/components/lr-timeline.md +6 -0
  690. package/llms/components/lr-token-input.md +14 -0
  691. package/llms/components/lr-tool-call-chip.md +7 -5
  692. package/llms/components/lr-tool-param-form.md +6 -2
  693. package/llms/components/lr-tool-result-dialog.md +4 -0
  694. package/llms/components/lr-tool-result-view.md +2 -3
  695. package/llms/components/lr-tool-select-dialog.md +6 -2
  696. package/llms/components/lr-tooltip.md +6 -0
  697. package/llms/components/lr-trace-tree.md +3 -0
  698. package/llms/components/lr-transcript-feed.md +3 -0
  699. package/llms/components/lr-tree-item.md +12 -5
  700. package/llms/components/lr-tree.md +12 -5
  701. package/llms/components/lr-typing-indicator.md +3 -0
  702. package/llms/components/lr-usage-badge.md +4 -0
  703. package/llms/components/lr-video.md +8 -2
  704. package/llms/components/lr-virtual-list.md +5 -3
  705. package/llms/components/lr-voice-picker.md +15 -2
  706. package/llms/components/lr-widget-renderer.md +21 -13
  707. package/llms/components/lr-widget.md +4 -2
  708. package/llms/components/lr-word-cloud.md +4 -0
  709. package/llms/components/lr-xml-viewer.md +9 -2
  710. package/llms/components/lr-zoomable-frame.md +6 -3
  711. package/llms/peers.md +5 -5
  712. package/llms/shared.md +74 -63
  713. package/llms-full.txt +4705 -2954
  714. package/package.json +19 -14
  715. package/vscode-css-data.json +1 -1
  716. package/vscode-html-data.json +1 -1
  717. package/web-types.json +1 -1
  718. package/dist/components/viewers/docx-viewer/fixtures/minimal-docx-fixture.d.ts +0 -1
  719. package/dist/components/viewers/docx-viewer/fixtures/minimal-docx-fixture.js +0 -1
  720. package/dist/components/viewers/ebook-viewer/fixtures/minimal-epub-fixture.d.ts +0 -1
  721. package/dist/components/viewers/ebook-viewer/fixtures/minimal-epub-fixture.js +0 -1
  722. package/dist/components/viewers/spreadsheet-viewer/fixtures/minimal-xlsx-fixture.d.ts +0 -1
  723. package/dist/components/viewers/spreadsheet-viewer/fixtures/minimal-xlsx-fixture.js +0 -1
@@ -1 +1 @@
1
- import{css}from"lit";const styles=css`:host{min-inline-size:0;max-inline-size:100%;display:inline-block}[part=base]{box-sizing:border-box;gap:var(--lr-space-2xs);min-inline-size:0;max-inline-size:100%;padding:var(--lr-space-2xs);border:var(--lr-border-width-thin) solid var(--lr-color-border);border-radius:var(--lr-radius);background:var(--lr-color-surface);box-shadow:var(--lr-shadow-m);flex-flow:wrap;display:flex}:host([orientation=vertical]) [part=base]{flex-flow:column}:host([frame=plain]) [part=base]{box-shadow:none;background:0 0;border:0;border-radius:0;padding:0}[part=zoom-in],[part=zoom-out],[part=fit],[part=lock]{min-inline-size:var(--lr-icon-button-size);min-block-size:var(--lr-icon-button-size);border-radius:var(--lr-radius);color:var(--lr-color-text);cursor:pointer;background:0 0;border:none;justify-content:center;align-items:center;padding:0;display:inline-flex}:where([part=base] button):hover:where(:not(:disabled)){background:var(--lr-color-surface-hover,var(--lr-color-border))}:where([part=base] button):active:where(:not(:disabled)){background:color-mix(in oklab, var(--lr-color-surface-hover,var(--lr-color-border)), var(--lr-color-mix-partner) var(--lr-color-mix-active))}[part=base] button:disabled{opacity:var(--lr-opacity-disabled);cursor:not-allowed}[part=base] button:focus-visible{outline:var(--lr-focus-ring-width) solid var(--lr-focus-ring-color);outline-offset:var(--lr-focus-ring-offset)}[part=lock][aria-pressed=true]{color:var(--lr-flow-controls-lock-active-color,var(--lr-color-brand))}::slotted(button){min-inline-size:var(--lr-icon-button-size);min-block-size:var(--lr-icon-button-size);border-radius:var(--lr-radius);max-inline-size:100%;color:var(--lr-color-text);font:inherit;white-space:normal;overflow-wrap:anywhere;cursor:pointer;background:0 0;border:none;justify-content:center;align-items:center;padding:0;display:inline-flex}::slotted([hidden]:not([hidden=until-found i])){display:none}::slotted(button:hover:not(:disabled)){background:var(--lr-color-surface-hover,var(--lr-color-border))}::slotted(button:active:not(:disabled)){background:color-mix(in oklab, var(--lr-color-surface-hover,var(--lr-color-border)), var(--lr-color-mix-partner) var(--lr-color-mix-active))}::slotted(button:disabled){opacity:var(--lr-opacity-disabled);cursor:not-allowed}::slotted(button:focus-visible){outline:var(--lr-focus-ring-width) solid var(--lr-focus-ring-color);outline-offset:var(--lr-focus-ring-offset)}`;export{styles};
1
+ import{css}from"lit";const styles=css`:host{min-inline-size:0;max-inline-size:100%;display:inline-block}[part=base]{box-sizing:border-box;gap:var(--lr-space-2xs);min-inline-size:0;max-inline-size:100%;padding:var(--lr-space-2xs);border:var(--lr-border-width-thin) solid var(--lr-color-border);border-radius:var(--lr-radius);background:var(--lr-color-surface);box-shadow:var(--lr-shadow-m);flex-flow:wrap;display:flex}:host([orientation=vertical]) [part=base]{flex-flow:column}:host([frame=plain]) [part=base]{box-shadow:none;background:0 0;border:0;border-radius:0;padding:0}[part=zoom-in],[part=zoom-out],[part=fit],[part=lock]{font:inherit;min-inline-size:var(--lr-icon-button-size);min-block-size:var(--lr-icon-button-size);border-radius:var(--lr-radius);color:var(--lr-color-text);cursor:pointer;background:0 0;border:none;justify-content:center;align-items:center;padding:0;display:inline-flex}:where([part=base] button):hover:where(:not(:disabled)){background:var(--lr-color-surface-hover,var(--lr-color-border))}:where([part=base] button):active:where(:not(:disabled)){background:color-mix(in oklab, var(--lr-color-surface-hover,var(--lr-color-border)), var(--lr-color-mix-partner) var(--lr-color-mix-active))}[part=base] button:disabled{opacity:var(--lr-opacity-disabled);cursor:not-allowed}[part=base] button:focus-visible{outline:var(--lr-focus-ring-width) solid var(--lr-focus-ring-color);outline-offset:var(--lr-focus-ring-offset)}[part=lock][aria-pressed=true]{color:var(--lr-flow-controls-lock-active-color,var(--lr-color-brand))}::slotted(button){min-inline-size:var(--lr-icon-button-size);min-block-size:var(--lr-icon-button-size);border-radius:var(--lr-radius);max-inline-size:100%;color:var(--lr-color-text);font:inherit;white-space:normal;overflow-wrap:anywhere;cursor:pointer;background:0 0;border:none;justify-content:center;align-items:center;padding:0;display:inline-flex}::slotted([hidden]:not([hidden=until-found i])){display:none}::slotted(button:hover:not(:disabled)){background:var(--lr-color-surface-hover,var(--lr-color-border))}::slotted(button:active:not(:disabled)){background:color-mix(in oklab, var(--lr-color-surface-hover,var(--lr-color-border)), var(--lr-color-mix-partner) var(--lr-color-mix-active))}::slotted(button:disabled){opacity:var(--lr-opacity-disabled);cursor:not-allowed}::slotted(button:focus-visible){outline:var(--lr-focus-ring-width) solid var(--lr-focus-ring-color);outline-offset:var(--lr-focus-ring-offset)}`;export{styles};
@@ -1,4 +1,4 @@
1
- var __decorate=function(decorators,target,key,desc){var c=arguments.length,r=c<3?target:desc===null?desc=Object.getOwnPropertyDescriptor(target,key):desc,d;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")r=Reflect.decorate(decorators,target,key,desc);else for(var i=decorators.length-1;i>=0;i--)(d=decorators[i])&&(r=(c<3?d(r):c>3?d(target,key,r):d(target,key))||r);return c>3&&r&&Object.defineProperty(target,key,r),r};import{html}from"lit";import{property,state}from"lit/decorators.js";import{LyraElement}from"../../../internal/lyra-element.js";import{hostAriaLabel,srOnly}from"../../../internal/a11y.js";import{Announcer,acquireAnnouncementSink}from"../../../internal/announcer.js";import{getListFormat,getNumberFormat}from"../../../internal/intl-cache.js";import{snapshotFlowDecorations}from"../flow-canvas/flow-model.js";import{FlowCanvasCompanionController}from"../flow-canvas/flow-companion-controller.js";import{styles}from"./flow-run-status.styles.js";import{LYRA_DEFAULT_flowRunStatusCount,LYRA_DEFAULT_flowRunStatusLabel,LYRA_DEFAULT_flowRunStepStatus,LYRA_DEFAULT_flowRunSummary,LYRA_DEFAULT_statusDenied,LYRA_DEFAULT_statusError,LYRA_DEFAULT_statusPending,LYRA_DEFAULT_statusRunning,LYRA_DEFAULT_statusSuccess}from"../../../internal/default-strings.generated.js";const ALL_STATUSES=["pending","running","success","error","denied"],DONE_STATUSES=new Set(["success","error","denied"]);function isFlowCanvasLike(element){const candidate=element;return"decorations"in candidate&&Array.isArray(candidate.nodes)}class LyraFlowRunStatus extends LyraElement{constructor(){super(...arguments),this.for="",this._decorations=Object.freeze({}),this.hideSummary=!1,this.label="",this.frame="card",this.liveText="",this.announcer=new Announcer({onFlush:text=>{this.sink?.announce(text),this.liveText=text}}),this.companionController=new FlowCanvasCompanionController(this,isFlowCanvasLike,next=>this.attachCanvas(next)),this.lastWrittenDecorations=null}static{this.defaultStrings={...super.defaultStrings,flowRunStatusCount:LYRA_DEFAULT_flowRunStatusCount,flowRunStatusLabel:LYRA_DEFAULT_flowRunStatusLabel,flowRunStepStatus:LYRA_DEFAULT_flowRunStepStatus,flowRunSummary:LYRA_DEFAULT_flowRunSummary,statusDenied:LYRA_DEFAULT_statusDenied,statusError:LYRA_DEFAULT_statusError,statusPending:LYRA_DEFAULT_statusPending,statusRunning:LYRA_DEFAULT_statusRunning,statusSuccess:LYRA_DEFAULT_statusSuccess}}static{this.styles=[LyraElement.styles,styles,srOnly]}get decorations(){return this._decorations}set decorations(value){const previous=this._decorations;this._decorations=snapshotFlowDecorations(value),this.requestUpdate("decorations",previous)}connectedCallback(){super.connectedCallback();const ownerWindow=this.ownerDocument.defaultView;ownerWindow&&this.announcer.setTimerHost(ownerWindow),this.syncSink(),this.companionController.connect()}disconnectedCallback(){super.disconnectedCallback(),this.companionController.disconnect(),this.announcer.cancel(),this.sink?.release(),this.sink=void 0}adoptedCallback(){super.adoptedCallback();const ownerWindow=this.ownerDocument.defaultView;ownerWindow&&this.announcer.setTimerHost(ownerWindow),this.syncSink(),this.companionController.adopt()}syncSink(){this.sink?.element.ownerDocument!==this.ownerDocument&&(this.sink?.release(),this.sink=this.isConnected?acquireAnnouncementSink("polite",{document:this.ownerDocument,source:this}):void 0)}willUpdate(changed){super.willUpdate(changed),this.hasUpdated&&changed.has("for")&&this.companionController.targetIdChanged(),changed.has("decorations")&&this.announceTransitions(changed.get("decorations"))}updated(changed){super.updated(changed),changed.has("decorations")&&this.applyDecorations()}attachCanvas(next){this.canvasEl&&this.canvasEl.decorations===this.lastWrittenDecorations&&(this.canvasEl.decorations=null),this.canvasEl=next??void 0,this.lastWrittenDecorations=null,this.applyDecorations()}applyDecorations(){if(!this.canvasEl)return;const current=this.canvasEl.decorations;this.lastWrittenDecorations!==null&&current!==null&&current!==this.lastWrittenDecorations&&console.warn("<lr-flow-run-status> is overwriting <lr-flow-canvas>.decorations set by something else; mixing this element with direct decorations writes is unsupported."),this.canvasEl.decorations=this.decorations,this.lastWrittenDecorations=this.canvasEl.decorations}statusLabel(status){return status==="pending"?this.localize("statusPending"):status==="running"?this.localize("statusRunning"):status==="success"?this.localize("statusSuccess"):status==="error"?this.localize("statusError"):this.localize("statusDenied")}announceTransitions(previous){if(!previous)return;const messages=[];for(const[id,decoration]of Object.entries(this.decorations)){if(previous[id]?.status===decoration.status)continue;const node=this.canvasEl?.nodes.find(n=>n.id===id),label=typeof node?.data?.label=="string"?node.data.label:id;messages.push(this.localize("flowRunStepStatus",void 0,{label,status:this.statusLabel(decoration.status)}))}messages.length>0&&this.announcer.announce(getListFormat(this.effectiveLocale,{type:"conjunction",style:"long"}).format(messages),{force:!0})}summary(){const counts={pending:0,running:0,success:0,error:0,denied:0};let total=0,done=0;for(const decoration of Object.values(this.decorations))total++,counts[decoration.status]++,DONE_STATUSES.has(decoration.status)&&done++;return{done,total,counts}}render(){const label=this.label||this.localize("flowRunStatusLabel"),ariaLabel=hostAriaLabel(this)??label,{done,total,counts}=this.summary(),number=getNumberFormat(this.effectiveLocale);return html`<div part="base" role="group" aria-label=${ariaLabel}>
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}from"lit";import{property,state}from"lit/decorators.js";import{LyraElement}from"../../../internal/lyra-element.js";import{devWarnOnce}from"../../../internal/dev-mode-attribute-warning.js";import{hostAriaLabel,srOnly}from"../../../internal/a11y.js";import{Announcer,acquireAnnouncementSink}from"../../../internal/announcer.js";import{getListFormat,getNumberFormat}from"../../../internal/intl-cache.js";import{snapshotFlowDecorations}from"../flow-canvas/flow-model.js";import{FlowCanvasCompanionController}from"../flow-canvas/flow-companion-controller.js";import{styles}from"./flow-run-status.styles.js";import{LYRA_DEFAULT_flowRunStatusCount,LYRA_DEFAULT_flowRunStatusLabel,LYRA_DEFAULT_flowRunStepStatus,LYRA_DEFAULT_flowRunSummary,LYRA_DEFAULT_statusDenied,LYRA_DEFAULT_statusError,LYRA_DEFAULT_statusPending,LYRA_DEFAULT_statusRunning,LYRA_DEFAULT_statusSuccess}from"../../../internal/default-strings.generated.js";const ALL_STATUSES=["pending","running","success","error","denied"],DONE_STATUSES=new Set(["success","error","denied"]),DECORATIONS_OWNERSHIP_WARNING_KEY="lyra-flow-run-status-decoration-ownership-conflict",DECORATIONS_OWNERSHIP_WARNING="<lr-flow-run-status>: direct and companion decorations writes conflict; the companion decorations take precedence.";function isFlowCanvasLike(element){const candidate=element;return"decorations"in candidate&&Array.isArray(candidate.nodes)}class LyraFlowRunStatus extends LyraElement{constructor(){super(...arguments),this.for="",this._decorations=Object.freeze({}),this.hideSummary=!1,this.label="",this.frame="card",this.liveText="",this.announcer=new Announcer({onFlush:text=>{this.sink?.announce(text),this.liveText=text}}),this.companionController=new FlowCanvasCompanionController(this,isFlowCanvasLike,next=>this.attachCanvas(next)),this.lastWrittenDecorations=null}static{this.defaultStrings={...super.defaultStrings,flowRunStatusCount:LYRA_DEFAULT_flowRunStatusCount,flowRunStatusLabel:LYRA_DEFAULT_flowRunStatusLabel,flowRunStepStatus:LYRA_DEFAULT_flowRunStepStatus,flowRunSummary:LYRA_DEFAULT_flowRunSummary,statusDenied:LYRA_DEFAULT_statusDenied,statusError:LYRA_DEFAULT_statusError,statusPending:LYRA_DEFAULT_statusPending,statusRunning:LYRA_DEFAULT_statusRunning,statusSuccess:LYRA_DEFAULT_statusSuccess}}static{this.styles=[LyraElement.styles,styles,srOnly]}get decorations(){return this._decorations}set decorations(value){const previous=this._decorations;this._decorations=snapshotFlowDecorations(value),this.requestUpdate("decorations",previous)}connectedCallback(){super.connectedCallback();const ownerWindow=this.ownerDocument.defaultView;ownerWindow&&this.announcer.setTimerHost(ownerWindow),this.syncSink(),this.companionController.connect()}disconnectedCallback(){super.disconnectedCallback(),this.companionController.disconnect(),this.announcer.cancel(),this.sink?.release(),this.sink=void 0}adoptedCallback(){super.adoptedCallback();const ownerWindow=this.ownerDocument.defaultView;ownerWindow&&this.announcer.setTimerHost(ownerWindow),this.syncSink(),this.companionController.adopt()}syncSink(){this.sink?.element.ownerDocument!==this.ownerDocument&&(this.sink?.release(),this.sink=this.isConnected?acquireAnnouncementSink("polite",{document:this.ownerDocument,source:this}):void 0)}willUpdate(changed){super.willUpdate(changed),this.hasUpdated&&changed.has("for")&&this.companionController.targetIdChanged(),changed.has("decorations")&&this.announceTransitions(changed.get("decorations"))}updated(changed){super.updated(changed),changed.has("decorations")&&this.applyDecorations()}attachCanvas(next){this.canvasEl&&this.canvasEl.decorations===this.lastWrittenDecorations&&(this.canvasEl.decorations=null),this.canvasEl=next??void 0,this.lastWrittenDecorations=null,this.applyDecorations()}applyDecorations(){if(!this.canvasEl)return;const current=this.canvasEl.decorations;this.lastWrittenDecorations!==null&&current!==null&&current!==this.lastWrittenDecorations&&devWarnOnce(DECORATIONS_OWNERSHIP_WARNING_KEY,DECORATIONS_OWNERSHIP_WARNING),this.canvasEl.decorations=this.decorations,this.lastWrittenDecorations=this.canvasEl.decorations}statusLabel(status){return status==="pending"?this.localize("statusPending"):status==="running"?this.localize("statusRunning"):status==="success"?this.localize("statusSuccess"):status==="error"?this.localize("statusError"):this.localize("statusDenied")}announceTransitions(previous){if(!previous)return;const messages=[];for(const[id,decoration]of Object.entries(this.decorations)){if(previous[id]?.status===decoration.status)continue;const node=this.canvasEl?.nodes.find(n=>n.id===id),label=typeof node?.data?.label=="string"?node.data.label:id;messages.push(this.localize("flowRunStepStatus",void 0,{label,status:this.statusLabel(decoration.status)}))}messages.length>0&&this.announcer.announce(getListFormat(this.effectiveLocale,{type:"conjunction",style:"long"}).format(messages),{force:!0})}summary(){const counts={pending:0,running:0,success:0,error:0,denied:0};let total=0,done=0;for(const decoration of Object.values(this.decorations))total++,counts[decoration.status]++,DONE_STATUSES.has(decoration.status)&&done++;return{done,total,counts}}render(){const label=this.label||this.localize("flowRunStatusLabel"),ariaLabel=hostAriaLabel(this)??label,{done,total,counts}=this.summary(),number=getNumberFormat(this.effectiveLocale);return html`<div part="base" role="group" aria-label=${ariaLabel}>
2
2
  ${this.hideSummary?"":html`
3
3
  <div part="summary">${this.localize("flowRunSummary",void 0,{done:number.format(done),total:number.format(total)})}</div>
4
4
  ${ALL_STATUSES.filter(s=>counts[s]>0).map(s=>html`<span part="count" data-status=${s}><span class="tone-dot"></span>${this.localize("flowRunStatusCount",void 0,{status:this.statusLabel(s),count:number.format(counts[s])})}</span>`)}
@@ -29,6 +29,7 @@ readonly color?:string;}
29
29
  * omitted, every bar is zero-length, and the absolute values still render.
30
30
  * - A stage larger than its predecessor (funnel re-entry) reports its true share above 100% in
31
31
  * text while its bar clamps to the track, carrying the extra bar-overflow part token.
32
+ * Finite values whose positive ratio overflows also fill the main or comparison track.
32
33
  * - A comparison series of a different length pairs by index: extra comparison entries are
33
34
  * ignored, and stages past its end simply get no comparison bar.
34
35
  * - Malformed/non-record entries and records without a string `label` are omitted while later
@@ -1,4 +1,4 @@
1
- var __decorate=function(decorators,target,key,desc){var c=arguments.length,r=c<3?target:desc===null?desc=Object.getOwnPropertyDescriptor(target,key):desc,d;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")r=Reflect.decorate(decorators,target,key,desc);else for(var i=decorators.length-1;i>=0;i--)(d=decorators[i])&&(r=(c<3?d(r):c>3?d(target,key,r):d(target,key))||r);return c>3&&r&&Object.defineProperty(target,key,r),r};import{html,nothing}from"lit";import{property}from"lit/decorators.js";import{styleMap}from"lit/directives/style-map.js";import{LyraElement}from"../../../internal/lyra-element.js";import{hostAriaLabel}from"../../../internal/a11y.js";import{getNumberFormat}from"../../../internal/intl-cache.js";import{finiteInteger,finiteNumber}from"../../../internal/numbers.js";import{trueDefaultBooleanConverter}from"../../../internal/converters.js";import{sanitizeCssColor}from"../../../internal/safe-css.js";import{styles}from"./funnel.styles.js";import{LYRA_DEFAULT_chart,LYRA_DEFAULT_comparePanel,LYRA_DEFAULT_contextMeterLabeledSummary,LYRA_DEFAULT_noData,LYRA_DEFAULT_statTrendDecreased,LYRA_DEFAULT_statTrendIncreased,LYRA_DEFAULT_trendUnchanged}from"../../../internal/default-strings.generated.js";const MAX_SHARE_PRECISION=20;class LyraFunnel extends LyraElement{constructor(){super(...arguments),this.stages=[],this.comparison=[],this.comparisonLabel="",this.label="",this.dropoff=!0,this.sharePrecision=0}static{this.defaultStrings={...super.defaultStrings,chart:LYRA_DEFAULT_chart,comparePanel:LYRA_DEFAULT_comparePanel,contextMeterLabeledSummary:LYRA_DEFAULT_contextMeterLabeledSummary,noData:LYRA_DEFAULT_noData,statTrendDecreased:LYRA_DEFAULT_statTrendDecreased,statTrendIncreased:LYRA_DEFAULT_statTrendIncreased,trendUnchanged:LYRA_DEFAULT_trendUnchanged}}static{this.styles=[LyraElement.styles,styles]}get precision(){return finiteInteger(this.sharePrecision,0,0,MAX_SHARE_PRECISION)}formatValue(value){return getNumberFormat(this.effectiveLocale).format(value)}formatShare(ratio){const precision=this.precision;return getNumberFormat(this.effectiveLocale,{style:"percent",minimumFractionDigits:precision,maximumFractionDigits:precision}).format(ratio)}validStages(value){if(!Array.isArray(value))return[];const stages=[];for(let index=0;index<value.length;index+=1)try{const stage=value[index];if(!stage||typeof stage!="object"||Array.isArray(stage))continue;const record=stage;if(typeof record.label!="string")continue;stages.push(Object.freeze({label:record.label,value:typeof record.value=="number"?finiteNumber(record.value,0):0,...typeof record.color=="string"?{color:record.color}:{}}))}catch{}return stages}resolveStages(){const stages=this.validStages(this.stages),comparison=this.validStages(this.comparison),values=stages.map(stage=>finiteNumber(stage.value,0)),base=values[0]??0,hasBase=base>0,comparisonValues=comparison.map(stage=>finiteNumber(stage.value,0)),comparisonBase=comparisonValues[0]??0,hasComparisonBase=comparisonBase>0;return stages.map((stage,index)=>{const value=values[index]??0,previous=values[index-1],comparisonValue=comparisonValues[index];return{stage,value,share:hasBase?value/base:null,change:index>0&&previous!==void 0&&previous>0?(value-previous)/previous:null,comparisonShare:hasComparisonBase&&comparisonValue!==void 0?comparisonValue/comparisonBase:null}})}barLength(share){return`${(share===null?0:Math.min(1,Math.max(0,finiteNumber(share,0))))*100}%`}changeText(change){return change===0?this.localize("trendUnchanged"):this.localize(change>0?"statTrendIncreased":"statTrendDecreased",void 0,{value:this.formatShare(Math.abs(change))})}renderStage(resolved){const{stage,value,share,change,comparisonShare}=resolved,barColor=sanitizeCssColor(stage.color),barPart=share!==null&&share>1?"bar bar-overflow":"bar",comparisonName=this.comparisonLabel||this.localize("comparePanel");return html`<li part="stage">
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}from"lit/decorators.js";import{styleMap}from"lit/directives/style-map.js";import{LyraElement}from"../../../internal/lyra-element.js";import{hostAriaLabel}from"../../../internal/a11y.js";import{getNumberFormat}from"../../../internal/intl-cache.js";import{finiteInteger,finiteNumber}from"../../../internal/numbers.js";import{trueDefaultBooleanConverter}from"../../../internal/converters.js";import{sanitizeCssColor}from"../../../internal/safe-css.js";import{styles}from"./funnel.styles.js";import{LYRA_DEFAULT_chart,LYRA_DEFAULT_comparePanel,LYRA_DEFAULT_contextMeterLabeledSummary,LYRA_DEFAULT_noData,LYRA_DEFAULT_statTrendDecreased,LYRA_DEFAULT_statTrendIncreased,LYRA_DEFAULT_trendUnchanged}from"../../../internal/default-strings.generated.js";const MAX_SHARE_PRECISION=20;class LyraFunnel extends LyraElement{constructor(){super(...arguments),this.stages=[],this.comparison=[],this.comparisonLabel="",this.label="",this.dropoff=!0,this.sharePrecision=0}static{this.defaultStrings={...super.defaultStrings,chart:LYRA_DEFAULT_chart,comparePanel:LYRA_DEFAULT_comparePanel,contextMeterLabeledSummary:LYRA_DEFAULT_contextMeterLabeledSummary,noData:LYRA_DEFAULT_noData,statTrendDecreased:LYRA_DEFAULT_statTrendDecreased,statTrendIncreased:LYRA_DEFAULT_statTrendIncreased,trendUnchanged:LYRA_DEFAULT_trendUnchanged}}static{this.styles=[LyraElement.styles,styles]}get precision(){return finiteInteger(this.sharePrecision,0,0,MAX_SHARE_PRECISION)}formatValue(value){return getNumberFormat(this.effectiveLocale).format(value)}formatShare(ratio){const precision=this.precision;return getNumberFormat(this.effectiveLocale,{style:"percent",minimumFractionDigits:precision,maximumFractionDigits:precision}).format(ratio)}validStages(value){if(!Array.isArray(value))return[];const stages=[];for(let index=0;index<value.length;index+=1)try{const stage=value[index];if(!stage||typeof stage!="object"||Array.isArray(stage))continue;const record=stage;if(typeof record.label!="string")continue;stages.push(Object.freeze({label:record.label,value:typeof record.value=="number"?finiteNumber(record.value,0):0,...typeof record.color=="string"?{color:record.color}:{}}))}catch{}return stages}resolveStages(){const stages=this.validStages(this.stages),comparison=this.validStages(this.comparison),values=stages.map(stage=>finiteNumber(stage.value,0)),base=values[0]??0,hasBase=base>0,comparisonValues=comparison.map(stage=>finiteNumber(stage.value,0)),comparisonBase=comparisonValues[0]??0,hasComparisonBase=comparisonBase>0;return stages.map((stage,index)=>{const value=values[index]??0,previous=values[index-1],comparisonValue=comparisonValues[index];return{stage,value,share:hasBase?value/base:null,change:index>0&&previous!==void 0&&previous>0?(value-previous)/previous:null,comparisonShare:hasComparisonBase&&comparisonValue!==void 0?comparisonValue/comparisonBase:null}})}barLength(share){return`${(share===null?0:finiteNumber(Math.min(1,Math.max(0,share)),0))*100}%`}changeText(change){return change===0?this.localize("trendUnchanged"):this.localize(change>0?"statTrendIncreased":"statTrendDecreased",void 0,{value:this.formatShare(Math.abs(change))})}renderStage(resolved){const{stage,value,share,change,comparisonShare}=resolved,barColor=sanitizeCssColor(stage.color),barPart=share!==null&&share>1?"bar bar-overflow":"bar",comparisonName=this.comparisonLabel||this.localize("comparePanel");return html`<li part="stage">
2
2
  ${this.dropoff&&change!==null?html`<span part="dropoff">${this.changeText(change)}</span>`:nothing}
3
3
  <span part="stage-header">
4
4
  <span part="stage-label">${stage.label}</span>
@@ -20,7 +20,10 @@ export type GaugeShape='radial'|'ring'|'linear';
20
20
  */
21
21
  export declare class LyraGauge extends LyraElement{static styles:import("lit").CSSResultGroup[];static get observedAttributes():string[];value:number;min:number;max:number;
22
22
  /** Visual geometry. Named `shape` because this Lyra-original component is not a native input. */
23
- shape:GaugeShape;label:string;
23
+ shape:GaugeShape;
24
+ /** Optional visible label. Attribute removal omits the SVG label and restores the localized
25
+ * gauge name unless an author supplied aria-label; the property retains null readback. */
26
+ label:string;
24
27
  /** Displayed/announced value text, e.g. `'72°F'` for a raw `value` of `72`.
25
28
  * An empty string is treated the same as unset and falls back to the numeric `value`. */
26
29
  valueText?:string;private appliedAriaLabel;private explicitAriaLabel;private authorRole;private syncingGeneratedRole;attributeChangedCallback(name:string,oldValue:string|null,value:string|null):void;private get domain();private get ratio();
@@ -1,9 +1,9 @@
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,svg}from"lit";import{property}from"lit/decorators.js";import{LyraElement}from"../../../internal/lyra-element.js";import{getNumberFormat}from"../../../internal/intl-cache.js";import{finiteNumber,finiteRatio}from"../../../internal/numbers.js";import{styles}from"./gauge.styles.js";import{LYRA_DEFAULT_gaugeLabel,LYRA_DEFAULT_gaugeValueLabel}from"../../../internal/default-strings.generated.js";const SWEEP_DEG=270,START_DEG=135,RADIUS=40,CENTER=50,STROKE=10,LINEAR_STROKE=6,LINEAR_BAR_Y=15,LINEAR_TEXT_Y=8,LINEAR_LENGTH=100,RADIAL_VALUE_CHARACTERS=9,RADIAL_LABEL_CHARACTERS=12,LINEAR_VALUE_CHARACTERS=10,LINEAR_LABEL_CHARACTERS=10;function abbreviateSvgText(value,maxCharacters){const characters=Array.from(value);return characters.length<=maxCharacters?value:`${characters.slice(0,maxCharacters-1).join("")}\u2026`}function polarToCartesian(angleDeg){const rad=angleDeg*Math.PI/180;return[CENTER+RADIUS*Math.cos(rad),CENTER+RADIUS*Math.sin(rad)]}function arcPath(startDeg,endDeg){const[sx,sy]=polarToCartesian(startDeg),[ex,ey]=polarToCartesian(endDeg),largeArc=endDeg-startDeg>180?1:0;return`M ${sx} ${sy} A ${RADIUS} ${RADIUS} 0 ${largeArc} 1 ${ex} ${ey}`}const RADIAL_ARC_D=arcPath(START_DEG,START_DEG+SWEEP_DEG),RADIAL_ARC_LENGTH=SWEEP_DEG/360*2*Math.PI*RADIUS,RING_CIRCUMFERENCE=2*Math.PI*RADIUS;class LyraGauge extends LyraElement{constructor(){super(...arguments),this.value=0,this.min=0,this.max=100,this.shape="radial",this.label="",this.appliedAriaLabel=null,this.explicitAriaLabel=null,this.authorRole=null,this.syncingGeneratedRole=!1}static{this.defaultStrings={...super.defaultStrings,gaugeLabel:LYRA_DEFAULT_gaugeLabel,gaugeValueLabel:LYRA_DEFAULT_gaugeValueLabel}}static{this.styles=[LyraElement.styles,styles]}static get observedAttributes(){return[...new Set([...super.observedAttributes,"role"])]}attributeChangedCallback(name,oldValue,value){super.attributeChangedCallback(name,oldValue,value),!(name!=="role"||oldValue===value||this.syncingGeneratedRole)&&(this.authorRole=value,this.requestUpdate())}get domain(){const min=finiteNumber(this.min,0),max=finiteNumber(this.max,100);return{lo:Math.min(min,max),hi:Math.max(min,max)}}get ratio(){if(!Number.isFinite(this.value))return 0;const{lo,hi}=this.domain;return finiteRatio(this.value,lo,hi)}get displayText(){return this.valueText||(Number.isFinite(this.value)?getNumberFormat(this.effectiveLocale).format(this.value):"")}truncatedTooltip(fullText,renderedText,renderedLabel){return renderedText===fullText&&renderedLabel===this.label?"":this.label&&fullText?this.localize("gaugeValueLabel",void 0,{label:this.label,value:fullText}):this.label||fullText}willUpdate(changed){super.willUpdate(changed);const{lo,hi}=this.domain,finiteTrio=Number.isFinite(this.value)&&Number.isFinite(lo)&&Number.isFinite(hi)&&lo!==hi;if(this.authorRole===null){this.syncingGeneratedRole=!0;try{this.setAttribute("role",finiteTrio?"meter":"img")}finally{this.syncingGeneratedRole=!1}}if(finiteTrio){const clamped=Math.min(hi,Math.max(lo,this.value));this.setAttribute("aria-valuenow",String(clamped)),this.setAttribute("aria-valuemin",String(lo)),this.setAttribute("aria-valuemax",String(hi))}else this.removeAttribute("aria-valuenow"),this.removeAttribute("aria-valuemin"),this.removeAttribute("aria-valuemax");const currentAriaLabel=this.getAttribute("aria-label");currentAriaLabel!==this.appliedAriaLabel&&(this.explicitAriaLabel=currentAriaLabel);const defaultName=this.label||this.localize("gaugeLabel"),fallbackValueLabel=this.displayText&&(!Number.isFinite(this.value)||lo===hi)?this.localize("gaugeValueLabel",void 0,{label:defaultName,value:this.displayText}):defaultName,nextAriaLabel=this.explicitAriaLabel||(finiteTrio?defaultName:fallbackValueLabel);this.setAttribute("aria-label",nextAriaLabel),this.appliedAriaLabel=nextAriaLabel,finiteTrio&&this.valueText?this.setAttribute("aria-valuetext",this.valueText):this.removeAttribute("aria-valuetext")}renderRadial(){const fullText=this.displayText,text=abbreviateSvgText(fullText,RADIAL_VALUE_CHARACTERS),label=abbreviateSvgText(this.label,RADIAL_LABEL_CHARACTERS),tooltip=this.truncatedTooltip(fullText,text,label),dashoffset=RADIAL_ARC_LENGTH*(1-this.ratio);return html`<svg
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{nativeSvgTitle}from"../../../internal/svg-title.js";import{html,nothing,svg}from"lit";import{property}from"lit/decorators.js";import{LyraElement}from"../../../internal/lyra-element.js";import{getNumberFormat}from"../../../internal/intl-cache.js";import{finiteNumber,finiteRatio}from"../../../internal/numbers.js";import{styles}from"./gauge.styles.js";import{LYRA_DEFAULT_gaugeLabel,LYRA_DEFAULT_gaugeValueLabel}from"../../../internal/default-strings.generated.js";const SWEEP_DEG=270,START_DEG=135,RADIUS=40,CENTER=50,STROKE=10,LINEAR_STROKE=6,LINEAR_BAR_Y=15,LINEAR_TEXT_Y=8,LINEAR_LENGTH=100,RADIAL_VALUE_CHARACTERS=9,RADIAL_LABEL_CHARACTERS=12,LINEAR_VALUE_CHARACTERS=10,LINEAR_LABEL_CHARACTERS=10;function abbreviateSvgText(value,maxCharacters){const characters=Array.from(value);return characters.length<=maxCharacters?value:`${characters.slice(0,maxCharacters-1).join("")}…`}function polarToCartesian(angleDeg){const rad=angleDeg*Math.PI/180;return[CENTER+RADIUS*Math.cos(rad),CENTER+RADIUS*Math.sin(rad)]}function arcPath(startDeg,endDeg){const[sx,sy]=polarToCartesian(startDeg),[ex,ey]=polarToCartesian(endDeg),largeArc=endDeg-startDeg>180?1:0;return`M ${sx} ${sy} A ${RADIUS} ${RADIUS} 0 ${largeArc} 1 ${ex} ${ey}`}const RADIAL_ARC_D=arcPath(START_DEG,START_DEG+SWEEP_DEG),RADIAL_ARC_LENGTH=SWEEP_DEG/360*2*Math.PI*RADIUS,RING_CIRCUMFERENCE=2*Math.PI*RADIUS;class LyraGauge extends LyraElement{constructor(){super(...arguments),this.value=0,this.min=0,this.max=100,this.shape="radial",this.label="",this.appliedAriaLabel=null,this.explicitAriaLabel=null,this.authorRole=null,this.syncingGeneratedRole=!1}static{this.defaultStrings={...super.defaultStrings,gaugeLabel:LYRA_DEFAULT_gaugeLabel,gaugeValueLabel:LYRA_DEFAULT_gaugeValueLabel}}static{this.styles=[LyraElement.styles,styles]}static get observedAttributes(){return[...new Set([...super.observedAttributes,"role"])]}attributeChangedCallback(name,oldValue,value){super.attributeChangedCallback(name,oldValue,value),!(name!=="role"||oldValue===value||this.syncingGeneratedRole)&&(this.authorRole=value,this.requestUpdate())}get domain(){const min=finiteNumber(this.min,0),max=finiteNumber(this.max,100);return{lo:Math.min(min,max),hi:Math.max(min,max)}}get ratio(){if(!Number.isFinite(this.value))return 0;const{lo,hi}=this.domain;return finiteRatio(this.value,lo,hi)}get displayText(){return this.valueText||(Number.isFinite(this.value)?getNumberFormat(this.effectiveLocale).format(this.value):"")}truncatedTooltip(fullText,renderedText,renderedLabel){return renderedText===fullText&&renderedLabel===(this.label??"")?"":this.label&&fullText?this.localize("gaugeValueLabel",void 0,{label:this.label,value:fullText}):this.label||fullText}willUpdate(changed){super.willUpdate(changed);const{lo,hi}=this.domain,finiteTrio=Number.isFinite(this.value)&&Number.isFinite(lo)&&Number.isFinite(hi)&&lo!==hi;if(this.authorRole===null){this.syncingGeneratedRole=!0;try{this.setAttribute("role",finiteTrio?"meter":"img")}finally{this.syncingGeneratedRole=!1}}if(finiteTrio){const clamped=Math.min(hi,Math.max(lo,this.value));this.setAttribute("aria-valuenow",String(clamped)),this.setAttribute("aria-valuemin",String(lo)),this.setAttribute("aria-valuemax",String(hi))}else this.removeAttribute("aria-valuenow"),this.removeAttribute("aria-valuemin"),this.removeAttribute("aria-valuemax");const currentAriaLabel=this.getAttribute("aria-label");currentAriaLabel!==this.appliedAriaLabel&&(this.explicitAriaLabel=currentAriaLabel);const defaultName=this.label||this.localize("gaugeLabel"),fallbackValueLabel=this.displayText&&(!Number.isFinite(this.value)||lo===hi)?this.localize("gaugeValueLabel",void 0,{label:defaultName,value:this.displayText}):defaultName,nextAriaLabel=this.explicitAriaLabel||(finiteTrio?defaultName:fallbackValueLabel);this.setAttribute("aria-label",nextAriaLabel),this.appliedAriaLabel=nextAriaLabel,finiteTrio&&this.valueText?this.setAttribute("aria-valuetext",this.valueText):this.removeAttribute("aria-valuetext")}renderRadial(){const fullText=this.displayText,text=abbreviateSvgText(fullText,RADIAL_VALUE_CHARACTERS),label=abbreviateSvgText(this.label??"",RADIAL_LABEL_CHARACTERS),tooltip=this.truncatedTooltip(fullText,text,label),dashoffset=RADIAL_ARC_LENGTH*(1-this.ratio);return html`<svg
2
2
  part="base"
3
3
  viewBox="0 0 100 100"
4
4
  aria-hidden="true"
5
5
  >
6
- ${tooltip?svg`<title>${tooltip}</title>`:nothing}
6
+ ${tooltip?nativeSvgTitle(tooltip):nothing}
7
7
  <path part="track" stroke-width=${STROKE} d=${RADIAL_ARC_D}></path>
8
8
  <path
9
9
  part="fill"
@@ -24,13 +24,13 @@ var __decorate=function(decorators,target,key,desc){var c=arguments.length,r=c<3
24
24
  y="68"
25
25
  aria-hidden="true"
26
26
  >${label}</text>`:nothing}
27
- </svg>`}renderLinear(){const fullText=this.displayText,text=abbreviateSvgText(fullText,LINEAR_VALUE_CHARACTERS),label=abbreviateSvgText(this.label,LINEAR_LABEL_CHARACTERS),tooltip=this.truncatedTooltip(fullText,text,label),dashoffset=LINEAR_LENGTH*(1-this.ratio),rtl=this.effectiveDirection==="rtl",startX=rtl?LINEAR_LENGTH:0,endX=rtl?0:LINEAR_LENGTH;return html`<svg
27
+ </svg>`}renderLinear(){const fullText=this.displayText,text=abbreviateSvgText(fullText,LINEAR_VALUE_CHARACTERS),label=abbreviateSvgText(this.label??"",LINEAR_LABEL_CHARACTERS),tooltip=this.truncatedTooltip(fullText,text,label),dashoffset=LINEAR_LENGTH*(1-this.ratio),rtl=this.effectiveDirection==="rtl",startX=rtl?LINEAR_LENGTH:0,endX=rtl?0:LINEAR_LENGTH;return html`<svg
28
28
  part="base"
29
29
  viewBox="0 0 100 20"
30
30
  preserveAspectRatio="none"
31
31
  aria-hidden="true"
32
32
  >
33
- ${tooltip?svg`<title>${tooltip}</title>`:nothing}
33
+ ${tooltip?nativeSvgTitle(tooltip):nothing}
34
34
  <line part="track" x1=${startX} y1=${LINEAR_BAR_Y} x2=${endX} y2=${LINEAR_BAR_Y} stroke-width=${LINEAR_STROKE}></line>
35
35
  <line
36
36
  part="fill"
@@ -54,12 +54,12 @@ var __decorate=function(decorators,target,key,desc){var c=arguments.length,r=c<3
54
54
  y=${LINEAR_TEXT_Y}
55
55
  aria-hidden="true"
56
56
  >${text}</text>
57
- </svg>`}renderRing(){const fullText=this.displayText,text=abbreviateSvgText(fullText,RADIAL_VALUE_CHARACTERS),label=abbreviateSvgText(this.label,RADIAL_LABEL_CHARACTERS),tooltip=this.truncatedTooltip(fullText,text,label),dashoffset=RING_CIRCUMFERENCE*(1-this.ratio);return html`<svg
57
+ </svg>`}renderRing(){const fullText=this.displayText,text=abbreviateSvgText(fullText,RADIAL_VALUE_CHARACTERS),label=abbreviateSvgText(this.label??"",RADIAL_LABEL_CHARACTERS),tooltip=this.truncatedTooltip(fullText,text,label),dashoffset=RING_CIRCUMFERENCE*(1-this.ratio);return html`<svg
58
58
  part="base"
59
59
  viewBox="0 0 100 100"
60
60
  aria-hidden="true"
61
61
  >
62
- ${tooltip?svg`<title>${tooltip}</title>`:nothing}
62
+ ${tooltip?nativeSvgTitle(tooltip):nothing}
63
63
  <circle part="track" cx=${CENTER} cy=${CENTER} r=${RADIUS} stroke-width=${STROKE}></circle>
64
64
  <circle
65
65
  part="fill"
@@ -92,6 +92,8 @@ export interface GraphQueryDeleteDetail{readonly queryId:string;}export interfac
92
92
  * The start-entity input carries native `required`, matching the aggregate builder's
93
93
  * `valueMissing` rule. Host `focus()`/`click()` reach the first rendered field, and `blur()`
94
94
  * releases whichever nested field owns deep focus.
95
+ * An unavailable DOM focus getter skips restoration without preventing chip removal or saved-query
96
+ * updates. Ordinary focused removal still follows the adjacent control and leaves outside focus alone.
95
97
  *
96
98
  * Run, save, load, and delete use the same two-phase action contract: a cancelable
97
99
  * `lr-before-query-*` request precedes any local effect, followed by a non-cancelable
@@ -108,7 +110,8 @@ export interface GraphQueryDeleteDetail{readonly queryId:string;}export interfac
108
110
  * @slot label - Visible label for the complete form control.
109
111
  * @slot hint - Supporting text for the complete form control.
110
112
  * @slot error - Error text for the complete form control.
111
- * @event lr-input - `detail: { value }` — any field changed; the full current query.
113
+ * @event lr-input - `detail: { value }` — any field changed; the full current query. Hop select
114
+ * choices emit it once; child native/prefixed value and listbox lifecycle aliases are contained.
112
115
  * @event lr-validity-change - Frozen `detail: { valid, errors }` from effective native validity,
113
116
  * including custom errors and validation barring; fired only on an actual change.
114
117
  * @event lr-before-query-run - Cancelable request emitted after `reportValidity()` passes, before
@@ -270,4 +273,4 @@ focus(options?:FocusOptions):void;
270
273
  blur():void;
271
274
  /** Forwards host clicks to the first rendered control so callers can interact with this wrapper
272
275
  * as if it exposed a single root control. */
273
- click():void;private setValue;private addRelationshipType;private removeRelationshipType;private addNodeType;private removeNodeType;private captureChipRemovalFocus;private markTouched;private runQuery;private saveQuery;private loadQuery;private deleteQuery;protected willUpdate(changed:PropertyValues):void;protected updated(changed:PropertyValues):void;private hopOptions;private onChromeSlotChange;private labelForType;private renderTypeFilter;render():TemplateResult;}declare global{interface HTMLElementTagNameMap{'lr-graph-query-builder':LyraGraphQueryBuilder;}}
276
+ click():void;private setValue;private addRelationshipType;private removeRelationshipType;private addNodeType;private removeNodeType;private captureChipRemovalFocus;private markTouched;private runQuery;private saveQuery;private loadQuery;private deleteQuery;protected willUpdate(changed:PropertyValues):void;protected updated(changed:PropertyValues):void;private hopOptions;private onChromeSlotChange;private labelForType;private containSelectEvent;private renderTypeFilter;render():TemplateResult;}declare global{interface HTMLElementTagNameMap{'lr-graph-query-builder':LyraGraphQueryBuilder;}}
@@ -1,4 +1,4 @@
1
- var __decorate=function(decorators,target,key,desc){var c=arguments.length,r=c<3?target:desc===null?desc=Object.getOwnPropertyDescriptor(target,key):desc,d;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")r=Reflect.decorate(decorators,target,key,desc);else for(var i=decorators.length-1;i>=0;i--)(d=decorators[i])&&(r=(c<3?d(r):c>3?d(target,key,r):d(target,key))||r);return c>3&&r&&Object.defineProperty(target,key,r),r};import{html,nothing}from"lit";import{property,state}from"lit/decorators.js";import{LyraElement}from"../../../internal/lyra-element.js";import{installFormControlLabelSupport}from"../../../internal/form-control-labels.js";installFormControlLabelSupport();import{closeIcon}from"../../../internal/icons.js";import{AnchoredValidityController,VALIDITY_ANCHOR}from"../../../internal/anchored-validity.js";import{syncValidityStates}from"../../../internal/custom-states.js";import{finiteInteger}from"../../../internal/numbers.js";import{getNumberFormat}from"../../../internal/intl-cache.js";import{nextId}from"../../../internal/a11y.js";import{deepActiveElementIn}from"../../../internal/active-element.js";import{styles}from"./graph-query-builder.styles.js";import{attachInternalsSafely}from"../../../internal/element-internals.js";import{getFormOwner,installCustomErrorProperty,isBarredFromValidation,setFormOwner}from"../../../internal/form-associated.js";import{installInvalidEventAlias}from"../../../internal/invalid-event-alias.js";import{LYRA_DEFAULT_fieldRequired,LYRA_DEFAULT_graphQueryBuilderLabel,LYRA_DEFAULT_graphQueryDeleteWithContext,LYRA_DEFAULT_graphQueryDirectionLabel,LYRA_DEFAULT_graphQueryEndLabel,LYRA_DEFAULT_graphQueryHopRangeInvalid,LYRA_DEFAULT_graphQueryLoadWithContext,LYRA_DEFAULT_graphQueryMaxHopsLabel,LYRA_DEFAULT_graphQueryMinHopsLabel,LYRA_DEFAULT_graphQueryNodeTypeLabel,LYRA_DEFAULT_graphQueryRelationshipTypeLabel,LYRA_DEFAULT_graphQueryRun,LYRA_DEFAULT_graphQuerySaveButton,LYRA_DEFAULT_graphQuerySaveNameLabel,LYRA_DEFAULT_graphQuerySavedQueriesLabel,LYRA_DEFAULT_graphQueryStartLabel,LYRA_DEFAULT_neighborDirectionBoth,LYRA_DEFAULT_neighborDirectionIn,LYRA_DEFAULT_neighborDirectionOut,LYRA_DEFAULT_noData,LYRA_DEFAULT_select}from"../../../internal/default-strings.generated.js";const MAX_TYPES=500,MAX_SAVED_QUERIES=200,MAX_TEXT=256,EMPTY_STRINGS=Object.freeze([]),EMPTY_VALUE=Object.freeze({startId:"",endId:"",relationshipTypes:EMPTY_STRINGS,nodeTypes:EMPTY_STRINGS,direction:"both",minHops:1,maxHops:1}),EMPTY_OPTIONS=Object.freeze([]),EMPTY_SAVED=Object.freeze([]);function ownValue(record,key){try{const descriptor=Object.getOwnPropertyDescriptor(record,key);return descriptor&&"value"in descriptor?descriptor.value:void 0}catch{return}}function boundedString(value){return typeof value=="string"?value.slice(0,MAX_TEXT):""}function stringArray(value){return Array.isArray(value)?Object.freeze([...new Set(value.slice(0,MAX_TYPES).filter(entry=>typeof entry=="string").map(entry=>boundedString(entry)).filter(Boolean))]):EMPTY_STRINGS}function normalizeGraphQuery(value){const record=value!==null&&typeof value=="object"&&!Array.isArray(value)?value:EMPTY_VALUE,direction=ownValue(record,"direction");return Object.freeze({startId:boundedString(ownValue(record,"startId")),endId:boundedString(ownValue(record,"endId")),relationshipTypes:stringArray(ownValue(record,"relationshipTypes")),nodeTypes:stringArray(ownValue(record,"nodeTypes")),direction:direction==="out"||direction==="in"||direction==="both"?direction:"both",minHops:finiteInteger(typeof ownValue(record,"minHops")=="number"?ownValue(record,"minHops"):EMPTY_VALUE.minHops,EMPTY_VALUE.minHops,1,20),maxHops:finiteInteger(typeof ownValue(record,"maxHops")=="number"?ownValue(record,"maxHops"):EMPTY_VALUE.maxHops,EMPTY_VALUE.maxHops,1,20)})}function normalizeTypeOptions(value){if(!Array.isArray(value))return EMPTY_OPTIONS;const values=new Set,result=[];for(const candidate of value.slice(0,MAX_TYPES)){if(candidate===null||typeof candidate!="object"||Array.isArray(candidate))continue;const optionValue=boundedString(ownValue(candidate,"value"));if(optionValue.trim().length===0||values.has(optionValue))continue;values.add(optionValue);const label=boundedString(ownValue(candidate,"label"));result.push(Object.freeze({value:optionValue,...label?{label}:{}}))}return Object.freeze(result)}function normalizeSavedQueries(value){if(!Array.isArray(value))return EMPTY_SAVED;const ids=new Set,result=[];for(const candidate of value.slice(0,MAX_SAVED_QUERIES)){if(candidate===null||typeof candidate!="object"||Array.isArray(candidate))continue;const id=boundedString(ownValue(candidate,"id"));id.trim().length===0||ids.has(id)||(ids.add(id),result.push(Object.freeze({id,name:boundedString(ownValue(candidate,"name")),query:normalizeGraphQuery(ownValue(candidate,"query"))})))}return Object.freeze(result)}class LyraGraphQueryBuilder extends LyraElement{static{this.defaultStrings={...super.defaultStrings,fieldRequired:LYRA_DEFAULT_fieldRequired,graphQueryBuilderLabel:LYRA_DEFAULT_graphQueryBuilderLabel,graphQueryDeleteWithContext:LYRA_DEFAULT_graphQueryDeleteWithContext,graphQueryDirectionLabel:LYRA_DEFAULT_graphQueryDirectionLabel,graphQueryEndLabel:LYRA_DEFAULT_graphQueryEndLabel,graphQueryHopRangeInvalid:LYRA_DEFAULT_graphQueryHopRangeInvalid,graphQueryLoadWithContext:LYRA_DEFAULT_graphQueryLoadWithContext,graphQueryMaxHopsLabel:LYRA_DEFAULT_graphQueryMaxHopsLabel,graphQueryMinHopsLabel:LYRA_DEFAULT_graphQueryMinHopsLabel,graphQueryNodeTypeLabel:LYRA_DEFAULT_graphQueryNodeTypeLabel,graphQueryRelationshipTypeLabel:LYRA_DEFAULT_graphQueryRelationshipTypeLabel,graphQueryRun:LYRA_DEFAULT_graphQueryRun,graphQuerySaveButton:LYRA_DEFAULT_graphQuerySaveButton,graphQuerySaveNameLabel:LYRA_DEFAULT_graphQuerySaveNameLabel,graphQuerySavedQueriesLabel:LYRA_DEFAULT_graphQuerySavedQueriesLabel,graphQueryStartLabel:LYRA_DEFAULT_graphQueryStartLabel,neighborDirectionBoth:LYRA_DEFAULT_neighborDirectionBoth,neighborDirectionIn:LYRA_DEFAULT_neighborDirectionIn,neighborDirectionOut:LYRA_DEFAULT_neighborDirectionOut,noData:LYRA_DEFAULT_noData,select:LYRA_DEFAULT_select}}static{this.formAssociated=!0}static{this.styles=[LyraElement.styles,styles]}static{this.immutableEventDetails=Object.freeze(["lr-input","lr-before-query-run","lr-query-run","lr-before-query-save","lr-query-save","lr-before-query-load","lr-query-load"])}static{this.properties={customError:{attribute:"custom-error",reflect:!0,noAccessor:!0},name:{reflect:!0,noAccessor:!0},value:{attribute:!1,noAccessor:!0},disabled:{type:Boolean,reflect:!0,noAccessor:!0}}}get relationshipTypeOptions(){return this._relationshipTypeOptions}set relationshipTypeOptions(value){const previous=this._relationshipTypeOptions;this._relationshipTypeOptions=normalizeTypeOptions(value),this.requestUpdate("relationshipTypeOptions",previous)}get nodeTypeOptions(){return this._nodeTypeOptions}set nodeTypeOptions(value){const previous=this._nodeTypeOptions;this._nodeTypeOptions=normalizeTypeOptions(value),this.requestUpdate("nodeTypeOptions",previous)}get savedQueries(){return this._savedQueries}set savedQueries(value){const previous=this._savedQueries;this._savedQueries=normalizeSavedQueries(value),this.requestUpdate("savedQueries",previous)}constructor(){super(),this._relationshipTypeOptions=EMPTY_OPTIONS,this._nodeTypeOptions=EMPTY_OPTIONS,this._savedQueries=EMPTY_SAVED,this.hopLimit=6,this.label="",this.hint="",this.errorText="",this._errors={},this.touchedFields=new Set,this.saveName="",this.hasHintSlot=!1,this.hasErrorSlot=!1,this.labelId=nextId("graph-query-builder-label"),this.hintId=nextId("graph-query-builder-hint"),this.errorId=nextId("graph-query-builder-error"),this._fieldsetDisabled=!1,this._name="",this._value=EMPTY_VALUE,this.defaultValue=normalizeGraphQuery(EMPTY_VALUE),this.defaultValueCaptured=!1,this._disabled=!1,this.hasInteracted=!1,this.removalFocusGeneration=0,this.onChromeSlotChange=event=>{const slot=event.currentTarget,hasContent=slot.assignedNodes({flatten:!0}).some(node=>node.nodeType===Node.TEXT_NODE?!!node.textContent?.trim():!0);slot.name==="hint"?this.hasHintSlot=hasContent:slot.name==="error"&&(this.hasErrorSlot=hasContent)},this.internals=attachInternalsSafely(this),this.validityController=new AnchoredValidityController(this,this.internals,()=>this[VALIDITY_ANCHOR]()),installCustomErrorProperty(this,()=>this.validityController.customValidityMessage),installInvalidEventAlias(this,init=>this.emit("lr-invalid",null,init)),this.syncFormState()}disconnectedCallback(){this.removalFocusGeneration++,this.pendingRemovalFocus=void 0,super.disconnectedCallback()}get form(){return getFormOwner(this.internals)}set form(owner){setFormOwner(this,owner)}getForm(){return getFormOwner(this.internals)}get labels(){return this.internals.labels}get validity(){return this.internals.validity}get validationMessage(){return this.internals.validationMessage}get willValidate(){return this.internals.willValidate}get value(){return this._value}set value(next){const old=this._value;this._value=normalizeGraphQuery(next),this.syncFormState(),this.requestUpdate("value",old)}get name(){return this._name}set name(next){const old=this._name;this._name=next??"",this._name?this.setAttribute("name",this._name):this.removeAttribute("name"),this.requestUpdate("name",old)}get disabled(){return this._disabled}set disabled(next){const old=this._disabled;this._disabled=!!next,this.toggleAttribute("disabled",this._disabled),this.validityController&&this.syncFormState(),this.requestUpdate("disabled",old)}get effectiveDisabled(){return this.disabled||this._fieldsetDisabled}get errors(){return this.publicValidityErrors()}publicValidityErrors(){const errors={...this._errors};return this.willValidate&&this.validity.customError&&(errors.base=this.validationMessage),Object.freeze(errors)}publishValiditySnapshot(){if(!this.isConnected)return;const valid=!this.willValidate||this.validity.valid,errors=valid?Object.freeze({}):this.publicValidityErrors(),key=JSON.stringify({valid,errors});key!==this.lastValidityKey&&(this.lastValidityKey=key,this.emit("lr-validity-change",Object.freeze({valid,errors})))}[VALIDITY_ANCHOR](){const firstInvalidPart=Object.keys(this._errors)[0];if(!(!firstInvalidPart||!this.renderRoot))return this.renderRoot.querySelector(`[part="${firstInvalidPart}"]`)??void 0}computeValidation(){const errors={},flags={};return this._value.startId.trim()||(errors["start-input"]=this.localize("fieldRequired"),flags.valueMissing=!0),this._value.minHops>this._value.maxHops&&(errors["max-hops"]=this.localize("graphQueryHopRangeInvalid"),flags.rangeUnderflow=!0),{errors,flags}}syncFormState(){const{errors,flags}=this.computeValidation();this._errors=errors;let formValue=null;try{formValue=JSON.stringify(this._value)}catch{formValue=null}if(this.internals.setFormValue(formValue,formValue),this.barredFromValidation||Object.keys(flags).length===0)this.validityController.setValidity({});else{const message=Object.values(errors)[0]??"";this.validityController.setValidity(flags,message)}this.syncValidityCustomStates(),this.publishValiditySnapshot()}get barredFromValidation(){return isBarredFromValidation(this,this.internals)}syncValidityCustomStates(){syncValidityStates(this.internals,{required:!0,hasInteracted:this.hasInteracted,barred:this.barredFromValidation})}checkValidity(){return this.syncFormState(),this.internals.checkValidity()}reportValidity(){return this.hasInteracted=!0,this.syncFormState(),Object.keys(this._errors).length>0&&(this.touchedFields=new Set([...this.touchedFields,...Object.keys(this._errors)])),this.internals.reportValidity()}setCustomValidity(message){this.validityController.setCustomValidity(message??""),this.syncValidityCustomStates(),this.publishValiditySnapshot(),this.requestUpdate()}formResetCallback(){this.hasInteracted=!1,this.captureDefaultValue(),this.value=this.defaultValue,this.touchedFields=new Set,this.saveName=""}captureDefaultValue(){this.defaultValueCaptured||(this.defaultValue=normalizeGraphQuery(this._value),this.defaultValueCaptured=!0)}formStateRestoreCallback(state2,_mode){let restored=EMPTY_VALUE;if(typeof state2=="string")try{const parsed=JSON.parse(state2);parsed!==null&&typeof parsed=="object"&&!Array.isArray(parsed)&&(restored=normalizeGraphQuery(parsed))}catch{}this.value=restored}formDisabledCallback(disabled){this._fieldsetDisabled=disabled,this.syncFormState(),this.requestUpdate()}get liveDisabled(){return this.effectiveDisabled||this.matches(":disabled")}focusFirstControl(options){if(!this.renderRoot||this.liveDisabled)return;(this.renderRoot.querySelector('[part="start-input"]')||this.renderRoot.querySelector('[part="end-input"]')||this.renderRoot.querySelector('[part="min-hops"]')||this.renderRoot.querySelector('[part="max-hops"]')||this.renderRoot.querySelector('[part="direction"]')||this.renderRoot.querySelector('[part="save-name-input"]'))?.focus(options)}focus(options){this.focusFirstControl(options)}blur(){const active=deepActiveElementIn(this.shadowRoot);active&&typeof active.blur=="function"&&active.blur()}click(){this.focusFirstControl()}setValue(next){this.effectiveDisabled||(this.hasInteracted=!0,this.value=next,this.emit("lr-input",Object.freeze({value:this._value})))}addRelationshipType(type){!type||this._value.relationshipTypes.includes(type)||this.setValue({...this._value,relationshipTypes:[...this._value.relationshipTypes,type]})}removeRelationshipType(type){this.captureChipRemovalFocus("relationship",type,this._value.relationshipTypes),this.setValue({...this._value,relationshipTypes:this._value.relationshipTypes.filter(t=>t!==type)})}addNodeType(type){!type||this._value.nodeTypes.includes(type)||this.setValue({...this._value,nodeTypes:[...this._value.nodeTypes,type]})}removeNodeType(type){this.captureChipRemovalFocus("node-type",type,this._value.nodeTypes),this.setValue({...this._value,nodeTypes:this._value.nodeTypes.filter(t=>t!==type)})}captureChipRemovalFocus(group,value,selected){const active=this.shadowRoot?.activeElement,expectedPart=group==="relationship"?"relationship-chips":"node-type-chips";if(active?.localName!=="lr-chip"||active.getAttribute("value")!==value||active.closest("lr-chip-group")?.getAttribute("part")!==expectedPart)return;const index=selected.indexOf(value),survivors=selected.filter(candidate=>candidate!==value),targetValue=survivors[Math.min(Math.max(index,0),survivors.length-1)];this.pendingRemovalFocus={kind:"chip",group,targetValue},this.removalFocusGeneration++}markTouched(part){this.hasInteracted=!0,this.syncValidityCustomStates(),!this.touchedFields.has(part)&&(this.touchedFields=new Set(this.touchedFields).add(part))}runQuery(){if(this.effectiveDisabled||!this.reportValidity())return;const detail=()=>Object.freeze({query:normalizeGraphQuery(this._value)});this.emit("lr-before-query-run",detail(),{cancelable:!0}).defaultPrevented||this.emit("lr-query-run",detail())}saveQuery(){if(this.effectiveDisabled)return;const name=this.saveName.trim();if(!name)return;const detail=()=>Object.freeze({name,query:normalizeGraphQuery(this._value)});this.emit("lr-before-query-save",detail(),{cancelable:!0}).defaultPrevented||(this.saveName="",this.emit("lr-query-save",detail()))}loadQuery(item){if(this.effectiveDisabled)return;const detail=()=>Object.freeze({queryId:item.id,query:normalizeGraphQuery(item.query)});this.emit("lr-before-query-load",detail(),{cancelable:!0}).defaultPrevented||(this.setValue({...EMPTY_VALUE,...item.query}),this.emit("lr-query-load",detail()))}deleteQuery(item){if(this.effectiveDisabled)return;const detail=()=>Object.freeze({queryId:item.id});this.emit("lr-before-query-delete",detail(),{cancelable:!0}).defaultPrevented||this.emit("lr-query-delete",detail())}willUpdate(changed){if(super.willUpdate(changed),this.hasUpdated||this.captureDefaultValue(),!changed.has("savedQueries"))return;const active=this.shadowRoot?.activeElement;if(active?.getAttribute("part")!=="saved-delete-button")return;const focusedId=active.closest("[data-query-id]")?.dataset.queryId;if(!focusedId||this.savedQueries.some(item=>item.id===focusedId))return;const index=(changed.get("savedQueries")??[]).findIndex(item=>item.id===focusedId),target=this.savedQueries[Math.min(Math.max(index,0),this.savedQueries.length-1)];this.pendingRemovalFocus={kind:"saved",targetId:target?.id},this.removalFocusGeneration++}updated(changed){super.updated(changed),this.publishValiditySnapshot();const pending=this.pendingRemovalFocus;if(!pending)return;this.pendingRemovalFocus=void 0;const generation=this.removalFocusGeneration;this.scheduleAfterUpdate(()=>{if(!(generation!==this.removalFocusGeneration||!this.isConnected)){if(pending.kind==="chip"){if(pending.targetValue){const part=pending.group==="relationship"?"relationship-chips":"node-type-chips",chip=[...this.shadowRoot?.querySelectorAll(`[part="${part}"] lr-chip`)??[]].find(candidate=>candidate.getAttribute("value")===pending.targetValue);if(chip){chip.focus();return}}const pickerPart=pending.group==="relationship"?"relationship-picker":"node-type-picker";this.shadowRoot?.querySelector(`[part="${pickerPart}"]`)?.focus();return}if(pending.targetId){const action=[...this.shadowRoot?.querySelectorAll("[data-query-id]")??[]].find(candidate=>candidate.dataset.queryId===pending.targetId)?.querySelector('[part="saved-delete-button"]');if(action){action.focus();return}}this.shadowRoot?.querySelector('[part="save-name-input"]')?.focus()}},"graph-query-removal-focus")}hopOptions(){const limit=finiteInteger(this.hopLimit,6,1,20),options=new Set(Array.from({length:limit},(_,i)=>i+1));return options.add(this._value.minHops),options.add(this._value.maxHops),[...options].sort((a,b)=>a-b)}labelForType(options,value){return options.find(o=>o.value===value)?.label??value}renderTypeFilter(kind,options,selected,add,remove,disabled){const pickerPart=kind==="relationship"?"relationship-picker":"node-type-picker",chipsPart=kind==="relationship"?"relationship-chips":"node-type-chips",pickerLabel=kind==="relationship"?this.localize("graphQueryRelationshipTypeLabel"):this.localize("graphQueryNodeTypeLabel"),available=options.filter(o=>!selected.includes(o.value));return html`
1
+ var __decorate=function(decorators,target,key,desc){var c=arguments.length,r=c<3?target:desc===null?desc=Object.getOwnPropertyDescriptor(target,key):desc,d;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")r=Reflect.decorate(decorators,target,key,desc);else for(var i=decorators.length-1;i>=0;i--)(d=decorators[i])&&(r=(c<3?d(r):c>3?d(target,key,r):d(target,key))||r);return c>3&&r&&Object.defineProperty(target,key,r),r};import{html,nothing}from"lit";import{property,state}from"lit/decorators.js";import{LyraElement}from"../../../internal/lyra-element.js";import{installFormControlLabelSupport}from"../../../internal/form-control-labels.js";installFormControlLabelSupport();import{closeIcon}from"../../../internal/icons.js";import{AnchoredValidityController,VALIDITY_ANCHOR}from"../../../internal/anchored-validity.js";import{syncValidityStates}from"../../../internal/custom-states.js";import{finiteInteger}from"../../../internal/numbers.js";import{getNumberFormat}from"../../../internal/intl-cache.js";import{nextId}from"../../../internal/a11y.js";import{activeElementIn,deepActiveElementIn}from"../../../internal/active-element.js";import{styles}from"./graph-query-builder.styles.js";import{attachInternalsSafely}from"../../../internal/element-internals.js";import{getFormOwner,installCustomErrorProperty,isBarredFromValidation,setFormOwner}from"../../../internal/form-associated.js";import{installInvalidEventAlias}from"../../../internal/invalid-event-alias.js";import{LYRA_DEFAULT_fieldRequired,LYRA_DEFAULT_graphQueryBuilderLabel,LYRA_DEFAULT_graphQueryDeleteWithContext,LYRA_DEFAULT_graphQueryDirectionLabel,LYRA_DEFAULT_graphQueryEndLabel,LYRA_DEFAULT_graphQueryHopRangeInvalid,LYRA_DEFAULT_graphQueryLoadWithContext,LYRA_DEFAULT_graphQueryMaxHopsLabel,LYRA_DEFAULT_graphQueryMinHopsLabel,LYRA_DEFAULT_graphQueryNodeTypeLabel,LYRA_DEFAULT_graphQueryRelationshipTypeLabel,LYRA_DEFAULT_graphQueryRun,LYRA_DEFAULT_graphQuerySaveButton,LYRA_DEFAULT_graphQuerySaveNameLabel,LYRA_DEFAULT_graphQuerySavedQueriesLabel,LYRA_DEFAULT_graphQueryStartLabel,LYRA_DEFAULT_neighborDirectionBoth,LYRA_DEFAULT_neighborDirectionIn,LYRA_DEFAULT_neighborDirectionOut,LYRA_DEFAULT_noData,LYRA_DEFAULT_select}from"../../../internal/default-strings.generated.js";const MAX_TYPES=500,MAX_SAVED_QUERIES=200,MAX_TEXT=256,EMPTY_STRINGS=Object.freeze([]),EMPTY_VALUE=Object.freeze({startId:"",endId:"",relationshipTypes:EMPTY_STRINGS,nodeTypes:EMPTY_STRINGS,direction:"both",minHops:1,maxHops:1}),EMPTY_OPTIONS=Object.freeze([]),EMPTY_SAVED=Object.freeze([]);function ownValue(record,key){try{const descriptor=Object.getOwnPropertyDescriptor(record,key);return descriptor&&"value"in descriptor?descriptor.value:void 0}catch{return}}function boundedString(value){return typeof value=="string"?value.slice(0,MAX_TEXT):""}function stringArray(value){return Array.isArray(value)?Object.freeze([...new Set(value.slice(0,MAX_TYPES).filter(entry=>typeof entry=="string").map(entry=>boundedString(entry)).filter(Boolean))]):EMPTY_STRINGS}function normalizeGraphQuery(value){const record=value!==null&&typeof value=="object"&&!Array.isArray(value)?value:EMPTY_VALUE,direction=ownValue(record,"direction");return Object.freeze({startId:boundedString(ownValue(record,"startId")),endId:boundedString(ownValue(record,"endId")),relationshipTypes:stringArray(ownValue(record,"relationshipTypes")),nodeTypes:stringArray(ownValue(record,"nodeTypes")),direction:direction==="out"||direction==="in"||direction==="both"?direction:"both",minHops:finiteInteger(typeof ownValue(record,"minHops")=="number"?ownValue(record,"minHops"):EMPTY_VALUE.minHops,EMPTY_VALUE.minHops,1,20),maxHops:finiteInteger(typeof ownValue(record,"maxHops")=="number"?ownValue(record,"maxHops"):EMPTY_VALUE.maxHops,EMPTY_VALUE.maxHops,1,20)})}function normalizeTypeOptions(value){if(!Array.isArray(value))return EMPTY_OPTIONS;const values=new Set,result=[];for(const candidate of value.slice(0,MAX_TYPES)){if(candidate===null||typeof candidate!="object"||Array.isArray(candidate))continue;const optionValue=boundedString(ownValue(candidate,"value"));if(optionValue.trim().length===0||values.has(optionValue))continue;values.add(optionValue);const label=boundedString(ownValue(candidate,"label"));result.push(Object.freeze({value:optionValue,...label?{label}:{}}))}return Object.freeze(result)}function normalizeSavedQueries(value){if(!Array.isArray(value))return EMPTY_SAVED;const ids=new Set,result=[];for(const candidate of value.slice(0,MAX_SAVED_QUERIES)){if(candidate===null||typeof candidate!="object"||Array.isArray(candidate))continue;const id=boundedString(ownValue(candidate,"id"));id.trim().length===0||ids.has(id)||(ids.add(id),result.push(Object.freeze({id,name:boundedString(ownValue(candidate,"name")),query:normalizeGraphQuery(ownValue(candidate,"query"))})))}return Object.freeze(result)}class LyraGraphQueryBuilder extends LyraElement{static{this.defaultStrings={...super.defaultStrings,fieldRequired:LYRA_DEFAULT_fieldRequired,graphQueryBuilderLabel:LYRA_DEFAULT_graphQueryBuilderLabel,graphQueryDeleteWithContext:LYRA_DEFAULT_graphQueryDeleteWithContext,graphQueryDirectionLabel:LYRA_DEFAULT_graphQueryDirectionLabel,graphQueryEndLabel:LYRA_DEFAULT_graphQueryEndLabel,graphQueryHopRangeInvalid:LYRA_DEFAULT_graphQueryHopRangeInvalid,graphQueryLoadWithContext:LYRA_DEFAULT_graphQueryLoadWithContext,graphQueryMaxHopsLabel:LYRA_DEFAULT_graphQueryMaxHopsLabel,graphQueryMinHopsLabel:LYRA_DEFAULT_graphQueryMinHopsLabel,graphQueryNodeTypeLabel:LYRA_DEFAULT_graphQueryNodeTypeLabel,graphQueryRelationshipTypeLabel:LYRA_DEFAULT_graphQueryRelationshipTypeLabel,graphQueryRun:LYRA_DEFAULT_graphQueryRun,graphQuerySaveButton:LYRA_DEFAULT_graphQuerySaveButton,graphQuerySaveNameLabel:LYRA_DEFAULT_graphQuerySaveNameLabel,graphQuerySavedQueriesLabel:LYRA_DEFAULT_graphQuerySavedQueriesLabel,graphQueryStartLabel:LYRA_DEFAULT_graphQueryStartLabel,neighborDirectionBoth:LYRA_DEFAULT_neighborDirectionBoth,neighborDirectionIn:LYRA_DEFAULT_neighborDirectionIn,neighborDirectionOut:LYRA_DEFAULT_neighborDirectionOut,noData:LYRA_DEFAULT_noData,select:LYRA_DEFAULT_select}}static{this.formAssociated=!0}static{this.styles=[LyraElement.styles,styles]}static{this.immutableEventDetails=Object.freeze(["lr-input","lr-before-query-run","lr-query-run","lr-before-query-save","lr-query-save","lr-before-query-load","lr-query-load"])}static{this.properties={customError:{attribute:"custom-error",reflect:!0,noAccessor:!0},name:{reflect:!0,noAccessor:!0},value:{attribute:!1,noAccessor:!0},disabled:{type:Boolean,reflect:!0,noAccessor:!0}}}get relationshipTypeOptions(){return this._relationshipTypeOptions}set relationshipTypeOptions(value){const previous=this._relationshipTypeOptions;this._relationshipTypeOptions=normalizeTypeOptions(value),this.requestUpdate("relationshipTypeOptions",previous)}get nodeTypeOptions(){return this._nodeTypeOptions}set nodeTypeOptions(value){const previous=this._nodeTypeOptions;this._nodeTypeOptions=normalizeTypeOptions(value),this.requestUpdate("nodeTypeOptions",previous)}get savedQueries(){return this._savedQueries}set savedQueries(value){const previous=this._savedQueries;this._savedQueries=normalizeSavedQueries(value),this.requestUpdate("savedQueries",previous)}constructor(){super(),this._relationshipTypeOptions=EMPTY_OPTIONS,this._nodeTypeOptions=EMPTY_OPTIONS,this._savedQueries=EMPTY_SAVED,this.hopLimit=6,this.label="",this.hint="",this.errorText="",this._errors={},this.touchedFields=new Set,this.saveName="",this.hasHintSlot=!1,this.hasErrorSlot=!1,this.labelId=nextId("graph-query-builder-label"),this.hintId=nextId("graph-query-builder-hint"),this.errorId=nextId("graph-query-builder-error"),this._fieldsetDisabled=!1,this._name="",this._value=EMPTY_VALUE,this.defaultValue=normalizeGraphQuery(EMPTY_VALUE),this.defaultValueCaptured=!1,this._disabled=!1,this.hasInteracted=!1,this.removalFocusGeneration=0,this.onChromeSlotChange=event=>{const slot=event.currentTarget,hasContent=slot.assignedNodes({flatten:!0}).some(node=>node.nodeType===Node.TEXT_NODE?!!node.textContent?.trim():!0);slot.name==="hint"?this.hasHintSlot=hasContent:slot.name==="error"&&(this.hasErrorSlot=hasContent)},this.internals=attachInternalsSafely(this),this.validityController=new AnchoredValidityController(this,this.internals,()=>this[VALIDITY_ANCHOR]()),installCustomErrorProperty(this,()=>this.validityController.customValidityMessage),installInvalidEventAlias(this,init=>this.emit("lr-invalid",null,init)),this.syncFormState()}disconnectedCallback(){this.removalFocusGeneration++,this.pendingRemovalFocus=void 0,super.disconnectedCallback()}get form(){return getFormOwner(this.internals)}set form(owner){setFormOwner(this,owner)}getForm(){return getFormOwner(this.internals)}get labels(){return this.internals.labels}get validity(){return this.internals.validity}get validationMessage(){return this.internals.validationMessage}get willValidate(){return this.internals.willValidate}get value(){return this._value}set value(next){const old=this._value;this._value=normalizeGraphQuery(next),this.syncFormState(),this.requestUpdate("value",old)}get name(){return this._name}set name(next){const old=this._name;this._name=next??"",this._name?this.setAttribute("name",this._name):this.removeAttribute("name"),this.requestUpdate("name",old)}get disabled(){return this._disabled}set disabled(next){const old=this._disabled;this._disabled=!!next,this.toggleAttribute("disabled",this._disabled),this.validityController&&this.syncFormState(),this.requestUpdate("disabled",old)}get effectiveDisabled(){return this.disabled||this._fieldsetDisabled}get errors(){return this.publicValidityErrors()}publicValidityErrors(){const errors={...this._errors};return this.willValidate&&this.validity.customError&&(errors.base=this.validationMessage),Object.freeze(errors)}publishValiditySnapshot(){if(!this.isConnected)return;const valid=!this.willValidate||this.validity.valid,errors=valid?Object.freeze({}):this.publicValidityErrors(),key=JSON.stringify({valid,errors});key!==this.lastValidityKey&&(this.lastValidityKey=key,this.emit("lr-validity-change",Object.freeze({valid,errors})))}[VALIDITY_ANCHOR](){const firstInvalidPart=Object.keys(this._errors)[0];if(!(!firstInvalidPart||!this.renderRoot))return this.renderRoot.querySelector(`[part="${firstInvalidPart}"]`)??void 0}computeValidation(){const errors={},flags={};return this._value.startId.trim()||(errors["start-input"]=this.localize("fieldRequired"),flags.valueMissing=!0),this._value.minHops>this._value.maxHops&&(errors["max-hops"]=this.localize("graphQueryHopRangeInvalid"),flags.rangeUnderflow=!0),{errors,flags}}syncFormState(){const{errors,flags}=this.computeValidation();this._errors=errors;let formValue=null;try{formValue=JSON.stringify(this._value)}catch{formValue=null}if(this.internals.setFormValue(formValue,formValue),this.barredFromValidation||Object.keys(flags).length===0)this.validityController.setValidity({});else{const message=Object.values(errors)[0]??"";this.validityController.setValidity(flags,message)}this.syncValidityCustomStates(),this.publishValiditySnapshot()}get barredFromValidation(){return isBarredFromValidation(this,this.internals)}syncValidityCustomStates(){syncValidityStates(this.internals,{required:!0,hasInteracted:this.hasInteracted,barred:this.barredFromValidation})}checkValidity(){return this.syncFormState(),this.internals.checkValidity()}reportValidity(){return this.hasInteracted=!0,this.syncFormState(),Object.keys(this._errors).length>0&&(this.touchedFields=new Set([...this.touchedFields,...Object.keys(this._errors)])),this.internals.reportValidity()}setCustomValidity(message){this.validityController.setCustomValidity(message??""),this.syncValidityCustomStates(),this.publishValiditySnapshot(),this.requestUpdate()}formResetCallback(){this.hasInteracted=!1,this.captureDefaultValue(),this.value=this.defaultValue,this.touchedFields=new Set,this.saveName=""}captureDefaultValue(){this.defaultValueCaptured||(this.defaultValue=normalizeGraphQuery(this._value),this.defaultValueCaptured=!0)}formStateRestoreCallback(state2,_mode){let restored=EMPTY_VALUE;if(typeof state2=="string")try{const parsed=JSON.parse(state2);parsed!==null&&typeof parsed=="object"&&!Array.isArray(parsed)&&(restored=normalizeGraphQuery(parsed))}catch{}this.value=restored}formDisabledCallback(disabled){this._fieldsetDisabled=disabled,this.syncFormState(),this.requestUpdate()}get liveDisabled(){return this.effectiveDisabled||this.matches(":disabled")}focusFirstControl(options){if(!this.renderRoot||this.liveDisabled)return;(this.renderRoot.querySelector('[part="start-input"]')||this.renderRoot.querySelector('[part="end-input"]')||this.renderRoot.querySelector('[part="min-hops"]')||this.renderRoot.querySelector('[part="max-hops"]')||this.renderRoot.querySelector('[part="direction"]')||this.renderRoot.querySelector('[part="save-name-input"]'))?.focus(options)}focus(options){this.focusFirstControl(options)}blur(){const active=deepActiveElementIn(this.shadowRoot);active&&typeof active.blur=="function"&&active.blur()}click(){this.focusFirstControl()}setValue(next){this.effectiveDisabled||(this.hasInteracted=!0,this.value=next,this.emit("lr-input",Object.freeze({value:this._value})))}addRelationshipType(type){!type||this._value.relationshipTypes.includes(type)||this.setValue({...this._value,relationshipTypes:[...this._value.relationshipTypes,type]})}removeRelationshipType(type){this.captureChipRemovalFocus("relationship",type,this._value.relationshipTypes),this.setValue({...this._value,relationshipTypes:this._value.relationshipTypes.filter(t=>t!==type)})}addNodeType(type){!type||this._value.nodeTypes.includes(type)||this.setValue({...this._value,nodeTypes:[...this._value.nodeTypes,type]})}removeNodeType(type){this.captureChipRemovalFocus("node-type",type,this._value.nodeTypes),this.setValue({...this._value,nodeTypes:this._value.nodeTypes.filter(t=>t!==type)})}captureChipRemovalFocus(group,value,selected){const active=activeElementIn(this.shadowRoot),expectedPart=group==="relationship"?"relationship-chips":"node-type-chips";if(active?.localName!=="lr-chip"||active.getAttribute("value")!==value||active.closest("lr-chip-group")?.getAttribute("part")!==expectedPart)return;const index=selected.indexOf(value),survivors=selected.filter(candidate=>candidate!==value),targetValue=survivors[Math.min(Math.max(index,0),survivors.length-1)];this.pendingRemovalFocus={kind:"chip",group,targetValue},this.removalFocusGeneration++}markTouched(part){this.hasInteracted=!0,this.syncValidityCustomStates(),!this.touchedFields.has(part)&&(this.touchedFields=new Set(this.touchedFields).add(part))}runQuery(){if(this.effectiveDisabled||!this.reportValidity())return;const detail=()=>Object.freeze({query:normalizeGraphQuery(this._value)});this.emit("lr-before-query-run",detail(),{cancelable:!0}).defaultPrevented||this.emit("lr-query-run",detail())}saveQuery(){if(this.effectiveDisabled)return;const name=this.saveName.trim();if(!name)return;const detail=()=>Object.freeze({name,query:normalizeGraphQuery(this._value)});this.emit("lr-before-query-save",detail(),{cancelable:!0}).defaultPrevented||(this.saveName="",this.emit("lr-query-save",detail()))}loadQuery(item){if(this.effectiveDisabled)return;const detail=()=>Object.freeze({queryId:item.id,query:normalizeGraphQuery(item.query)});this.emit("lr-before-query-load",detail(),{cancelable:!0}).defaultPrevented||(this.setValue({...EMPTY_VALUE,...item.query}),this.emit("lr-query-load",detail()))}deleteQuery(item){if(this.effectiveDisabled)return;const detail=()=>Object.freeze({queryId:item.id});this.emit("lr-before-query-delete",detail(),{cancelable:!0}).defaultPrevented||this.emit("lr-query-delete",detail())}willUpdate(changed){if(super.willUpdate(changed),this.hasUpdated||this.captureDefaultValue(),!changed.has("savedQueries"))return;const active=activeElementIn(this.shadowRoot);if(active?.getAttribute("part")!=="saved-delete-button")return;const focusedId=active.closest("[data-query-id]")?.dataset.queryId;if(!focusedId||this.savedQueries.some(item=>item.id===focusedId))return;const index=(changed.get("savedQueries")??[]).findIndex(item=>item.id===focusedId),target=this.savedQueries[Math.min(Math.max(index,0),this.savedQueries.length-1)];this.pendingRemovalFocus={kind:"saved",targetId:target?.id},this.removalFocusGeneration++}updated(changed){super.updated(changed),this.publishValiditySnapshot();const pending=this.pendingRemovalFocus;if(!pending)return;this.pendingRemovalFocus=void 0;const generation=this.removalFocusGeneration;this.scheduleAfterUpdate(()=>{if(!(generation!==this.removalFocusGeneration||!this.isConnected)){if(pending.kind==="chip"){if(pending.targetValue){const part=pending.group==="relationship"?"relationship-chips":"node-type-chips",chip=[...this.shadowRoot?.querySelectorAll(`[part="${part}"] lr-chip`)??[]].find(candidate=>candidate.getAttribute("value")===pending.targetValue);if(chip){chip.focus();return}}const pickerPart=pending.group==="relationship"?"relationship-picker":"node-type-picker";this.shadowRoot?.querySelector(`[part="${pickerPart}"]`)?.focus();return}if(pending.targetId){const action=[...this.shadowRoot?.querySelectorAll("[data-query-id]")??[]].find(candidate=>candidate.dataset.queryId===pending.targetId)?.querySelector('[part="saved-delete-button"]');if(action){action.focus();return}}this.shadowRoot?.querySelector('[part="save-name-input"]')?.focus()}},"graph-query-removal-focus")}hopOptions(){const limit=finiteInteger(this.hopLimit,6,1,20),options=new Set(Array.from({length:limit},(_,i)=>i+1));return options.add(this._value.minHops),options.add(this._value.maxHops),[...options].sort((a,b)=>a-b)}labelForType(options,value){return options.find(o=>o.value===value)?.label??value}containSelectEvent(event){event.stopPropagation()}renderTypeFilter(kind,options,selected,add,remove,disabled){const pickerPart=kind==="relationship"?"relationship-picker":"node-type-picker",chipsPart=kind==="relationship"?"relationship-chips":"node-type-chips",pickerLabel=kind==="relationship"?this.localize("graphQueryRelationshipTypeLabel"):this.localize("graphQueryNodeTypeLabel"),available=options.filter(o=>!selected.includes(o.value));return html`
2
2
  <div part="filter-group" data-kind=${kind}>
3
3
  <lr-select
4
4
  part=${pickerPart}
@@ -62,6 +62,13 @@ var __decorate=function(decorators,target,key,desc){var c=arguments.length,r=c<3
62
62
  label=${this.localize("graphQueryMinHopsLabel")}
63
63
  .value=${String(value.minHops)}
64
64
  ?disabled=${disabled}
65
+ @input=${this.containSelectEvent}
66
+ @lr-input=${this.containSelectEvent}
67
+ @lr-change=${this.containSelectEvent}
68
+ @lr-show=${this.containSelectEvent}
69
+ @lr-after-show=${this.containSelectEvent}
70
+ @lr-hide=${this.containSelectEvent}
71
+ @lr-after-hide=${this.containSelectEvent}
65
72
  @change=${e=>{e.stopPropagation(),this.setValue({...value,minHops:Number(e.target.value)})}}
66
73
  >
67
74
  ${hops.map(n=>html`<lr-option value=${String(n)}>${hopNumber.format(n)}</lr-option>`)}
@@ -72,6 +79,13 @@ var __decorate=function(decorators,target,key,desc){var c=arguments.length,r=c<3
72
79
  .value=${String(value.maxHops)}
73
80
  error-text=${hasHopError?this._errors["max-hops"]:""}
74
81
  ?disabled=${disabled}
82
+ @input=${this.containSelectEvent}
83
+ @lr-input=${this.containSelectEvent}
84
+ @lr-change=${this.containSelectEvent}
85
+ @lr-show=${this.containSelectEvent}
86
+ @lr-after-show=${this.containSelectEvent}
87
+ @lr-hide=${this.containSelectEvent}
88
+ @lr-after-hide=${this.containSelectEvent}
75
89
  @change=${e=>{e.stopPropagation(),this.setValue({...value,maxHops:Number(e.target.value)})}}
76
90
  >
77
91
  ${hops.map(n=>html`<lr-option value=${String(n)}>${hopNumber.format(n)}</lr-option>`)}
@@ -1 +1 @@
1
- import{css}from"lit";const styles=css`:host{display:block}[part=base]{gap:var(--lr-space-l);color:var(--lr-color-text);font-size:var(--lr-font-size-sm);flex-direction:column;display:flex}[part=label]{font-weight:var(--lr-font-weight-semibold)}[part=hint],[part=error]{font-size:var(--lr-font-size-sm);margin-block-start:calc(var(--lr-space-m) * -1)}[part=hint]{color:var(--lr-color-text-quiet)}[part=error]{color:var(--lr-color-danger)}[part=hint][hidden],[part=error][hidden]{display:none}[part=path-fields]{align-items:flex-end;gap:var(--lr-space-m);flex-wrap:wrap;display:flex}[part=path-fields]>*{flex:1 1 var(--lr-size-10rem);min-inline-size:0}[part=min-hops],[part=max-hops]{flex-basis:var(--lr-size-7rem)}[part=filter-group]{gap:var(--lr-space-xs);flex-direction:column;display:flex}[part=relationship-picker],[part=node-type-picker],[part=direction]{max-inline-size:var(--lr-size-24rem)}[part=relationship-chips],[part=node-type-chips]{min-block-size:0}[part=footer]{justify-content:flex-end;align-items:center;gap:var(--lr-space-s);flex-wrap:wrap;display:flex}[part=run-button],[part=save-button]{font:inherit;border-radius:var(--lr-radius);padding:var(--lr-space-xs) var(--lr-space-m);cursor:pointer;border:var(--lr-border-width-thin) solid;min-inline-size:var(--lr-icon-button-size);min-block-size:var(--lr-icon-button-size)}[part=run-button]{background:var(--lr-graph-query-builder-run-bg,var(--lr-color-brand));border-color:var(--lr-graph-query-builder-run-border-color,var(--lr-color-brand));color:var(--lr-graph-query-builder-run-color,var(--lr-color-on-brand))}[part=save-button]{background:var(--lr-graph-query-builder-save-bg,var(--lr-color-surface));border-color:var(--lr-graph-query-builder-save-border-color,var(--lr-color-border));color:var(--lr-graph-query-builder-save-color,var(--lr-color-text))}[part=run-button]:hover{background:var(--lr-graph-query-builder-run-hover-bg,color-mix(in oklab, var(--lr-color-brand), var(--lr-color-mix-partner) var(--lr-color-mix-hover)))}[part=run-button]:active{background:var(--lr-graph-query-builder-run-active-bg,color-mix(in oklab, var(--lr-color-brand), var(--lr-color-mix-partner) var(--lr-color-mix-active)))}[part=save-button]:hover{background:var(--lr-graph-query-builder-save-hover-bg,var(--lr-color-brand-quiet))}[part=save-button]:active{background:var(--lr-graph-query-builder-save-active-bg,color-mix(in oklab, var(--lr-color-brand-quiet), var(--lr-color-mix-partner) var(--lr-color-mix-active)))}[part=run-button]:disabled,[part=save-button]:disabled,[part=saved-load-button]:disabled,[part=saved-delete-button]:disabled{opacity:var(--lr-opacity-disabled);cursor:not-allowed}[part=run-button]:focus-visible,[part=save-button]:focus-visible,[part=saved-load-button]:focus-visible,[part=saved-delete-button]:focus-visible{outline:var(--lr-focus-ring-width) solid var(--lr-focus-ring-color);outline-offset:var(--lr-focus-ring-offset)}[part=saved-queries]{gap:var(--lr-space-s);border-block-start:var(--lr-border-width-thin) solid var(--lr-color-border);flex-direction:column;padding-block-start:var(--lr-space-m);display:flex}[part=saved-queries-label]{font-size:var(--lr-font-size-sm);font-weight:var(--lr-font-weight-semibold);color:var(--lr-color-text);margin:0}[part=save-row]{align-items:flex-end;gap:var(--lr-space-s);flex-wrap:wrap;display:flex}[part=save-row]>[part=save-name-input]{flex:1 1 var(--lr-size-12rem);min-inline-size:0}[part=saved-list]{gap:var(--lr-space-2xs);flex-direction:column;margin:0;padding:0;list-style:none;display:flex}[part=saved-item]{justify-content:space-between;align-items:center;gap:var(--lr-space-s);padding:var(--lr-space-2xs) var(--lr-space-xs);border-radius:var(--lr-radius);border:var(--lr-border-width-thin) solid var(--lr-color-border);background:var(--lr-color-surface);display:flex}[part=saved-load-button]{text-overflow:ellipsis;white-space:nowrap;text-align:start;min-inline-size:0;font:inherit;color:var(--lr-graph-query-builder-saved-load-color,var(--lr-color-text));padding:var(--lr-space-2xs);cursor:pointer;border-radius:var(--lr-radius-xs);min-block-size:var(--lr-icon-button-size);background:0 0;border:none;flex:auto;overflow:hidden}[part=saved-load-button]:hover{text-decoration:underline}[part=saved-load-button]:active{background:var(--lr-graph-query-builder-saved-load-active-bg,color-mix(in oklab, var(--lr-color-surface), var(--lr-color-mix-partner) var(--lr-color-mix-active)));text-decoration:underline}[part=saved-delete-button]{inline-size:var(--lr-space-2xl);block-size:var(--lr-space-2xl);min-inline-size:var(--lr-icon-button-size);min-block-size:var(--lr-icon-button-size);color:var(--lr-graph-query-builder-saved-delete-color,var(--lr-color-text-quiet));border-radius:var(--lr-radius-xs);cursor:pointer;background:0 0;border:none;flex:none;justify-content:center;align-items:center;padding:0;display:inline-flex}[part=saved-delete-button] svg{inline-size:var(--lr-size-1em);block-size:var(--lr-size-1em)}[part=saved-delete-button]:hover{color:var(--lr-graph-query-builder-saved-delete-hover-color,var(--lr-color-danger))}[part=saved-delete-button]:active{color:var(--lr-graph-query-builder-saved-delete-active-color,color-mix(in oklab, var(--lr-color-danger), var(--lr-color-mix-partner) var(--lr-color-mix-active)));background:var(--lr-graph-query-builder-saved-delete-active-bg,var(--lr-color-danger-quiet))}[part=saved-empty]{color:var(--lr-color-text-quiet);margin:0}`;export{styles};
1
+ import{css}from"lit";const styles=css`:host{display:block}[part=base]{gap:var(--lr-space-l);color:var(--lr-color-text);font-size:var(--lr-font-size-sm);flex-direction:column;display:flex}[part=label]{font-weight:var(--lr-font-weight-semibold)}[part=hint],[part=error]{font-size:var(--lr-font-size-sm);margin-block-start:calc(var(--lr-space-m) * -1)}[part=hint]{color:var(--lr-color-text-quiet)}[part=error]{color:var(--lr-color-danger)}[part=hint][hidden],[part=error][hidden]{display:none}[part=path-fields]{align-items:flex-end;gap:var(--lr-space-m);flex-wrap:wrap;display:flex}[part=path-fields]>*{flex:1 1 var(--lr-size-10rem);min-inline-size:0}[part=min-hops],[part=max-hops]{flex-basis:var(--lr-size-7rem)}[part=filter-group]{gap:var(--lr-space-xs);flex-direction:column;display:flex}[part=relationship-picker],[part=node-type-picker],[part=direction]{max-inline-size:var(--lr-size-24rem)}[part=relationship-chips],[part=node-type-chips]{min-block-size:0}[part=footer]{justify-content:flex-end;align-items:center;gap:var(--lr-space-s);flex-wrap:wrap;display:flex}[part=run-button],[part=save-button]{font:inherit;border-radius:var(--lr-radius);padding:var(--lr-space-xs) var(--lr-space-m);cursor:pointer;border:var(--lr-border-width-thin) solid;min-inline-size:var(--lr-icon-button-size);min-block-size:var(--lr-icon-button-size)}[part=run-button]{background:var(--lr-graph-query-builder-run-bg,var(--lr-color-brand));border-color:var(--lr-graph-query-builder-run-border-color,var(--lr-color-brand));color:var(--lr-graph-query-builder-run-color,var(--lr-color-on-brand))}[part=save-button]{background:var(--lr-graph-query-builder-save-bg,var(--lr-color-surface));border-color:var(--lr-graph-query-builder-save-border-color,var(--lr-color-border));color:var(--lr-graph-query-builder-save-color,var(--lr-color-text))}[part=run-button]:hover{background:var(--lr-graph-query-builder-run-hover-bg,color-mix(in oklab, var(--lr-color-brand), var(--lr-color-mix-partner) var(--lr-color-mix-hover)))}[part=run-button]:active{background:var(--lr-graph-query-builder-run-active-bg,color-mix(in oklab, var(--lr-color-brand), var(--lr-color-mix-partner) var(--lr-color-mix-active)))}[part=save-button]:hover{background:var(--lr-graph-query-builder-save-hover-bg,var(--lr-color-brand-quiet))}[part=save-button]:active{background:var(--lr-graph-query-builder-save-active-bg,color-mix(in oklab, var(--lr-color-brand-quiet), var(--lr-color-mix-partner) var(--lr-color-mix-active)))}[part=run-button]:disabled,[part=save-button]:disabled,[part=saved-load-button]:disabled,[part=saved-delete-button]:disabled{opacity:var(--lr-opacity-disabled);cursor:not-allowed}[part=run-button]:focus-visible,[part=save-button]:focus-visible,[part=saved-load-button]:focus-visible,[part=saved-delete-button]:focus-visible{outline:var(--lr-focus-ring-width) solid var(--lr-focus-ring-color);outline-offset:var(--lr-focus-ring-offset)}[part=saved-queries]{gap:var(--lr-space-s);border-block-start:var(--lr-border-width-thin) solid var(--lr-color-border);flex-direction:column;padding-block-start:var(--lr-space-m);display:flex}[part=saved-queries-label]{font-size:var(--lr-font-size-sm);font-weight:var(--lr-font-weight-semibold);color:var(--lr-color-text);margin:0}[part=save-row]{align-items:flex-end;gap:var(--lr-space-s);flex-wrap:wrap;display:flex}[part=save-row]>[part=save-name-input]{flex:1 1 var(--lr-size-12rem);min-inline-size:0}[part=saved-list]{gap:var(--lr-space-2xs);flex-direction:column;margin:0;padding:0;list-style:none;display:flex}[part=saved-item]{justify-content:space-between;align-items:center;gap:var(--lr-space-s);padding:var(--lr-space-2xs) var(--lr-space-xs);border-radius:var(--lr-radius);border:var(--lr-border-width-thin) solid var(--lr-color-border);background:var(--lr-color-surface);display:flex}[part=saved-load-button]{text-overflow:ellipsis;white-space:nowrap;text-align:start;min-inline-size:0;font:inherit;color:var(--lr-graph-query-builder-saved-load-color,var(--lr-color-text));padding:var(--lr-space-2xs);cursor:pointer;border-radius:var(--lr-radius-xs);min-block-size:var(--lr-icon-button-size);background:0 0;border:none;flex:auto;overflow:hidden}[part=saved-load-button]:hover{text-decoration:underline}[part=saved-load-button]:active{background:var(--lr-graph-query-builder-saved-load-active-bg,color-mix(in oklab, var(--lr-color-surface), var(--lr-color-mix-partner) var(--lr-color-mix-active)));text-decoration:underline}[part=saved-delete-button]{font:inherit;inline-size:var(--lr-space-2xl);block-size:var(--lr-space-2xl);min-inline-size:var(--lr-icon-button-size);min-block-size:var(--lr-icon-button-size);color:var(--lr-graph-query-builder-saved-delete-color,var(--lr-color-text-quiet));border-radius:var(--lr-radius-xs);cursor:pointer;background:0 0;border:none;flex:none;justify-content:center;align-items:center;padding:0;display:inline-flex}[part=saved-delete-button] svg{inline-size:var(--lr-size-1em);block-size:var(--lr-size-1em)}[part=saved-delete-button]:hover{color:var(--lr-graph-query-builder-saved-delete-hover-color,var(--lr-color-danger))}[part=saved-delete-button]:active{color:var(--lr-graph-query-builder-saved-delete-active-color,color-mix(in oklab, var(--lr-color-danger), var(--lr-color-mix-partner) var(--lr-color-mix-active)));background:var(--lr-graph-query-builder-saved-delete-active-bg,var(--lr-color-danger-quiet))}[part=saved-empty]{color:var(--lr-color-text-quiet);margin:0}`;export{styles};
@@ -119,7 +119,7 @@ export declare function normalizeBucketCount(bucketCount:number):number;
119
119
  * normalizes through that instead. Assigning an unparsable string to
120
120
  * `fillStyle` is a spec'd no-op (the previous value is kept, it never
121
121
  * throws), so a sentinel round-trip is used to detect that case and fall
122
- * back to `fallbackHex` (with a one-time `console.warn`) instead of
122
+ * back to `fallbackHex` (with a one-time development diagnostic) instead of
123
123
  * silently drawing the wrong color.
124
124
  */
125
125
  export declare function resolveRgb(color:string,fallbackHex:string,ownerDocument?:Document):[number,number,number,number];export type LyraHeatmapCellClickDetail={date:string;value:number;}|{row:number;col:number;value:number;};export type LyraHeatmapMatrixGeometryChangeDetail={padLeft:number;padTop:number;cellSize:number;};export interface LyraHeatmapEventMap{'lr-cell-click':CustomEvent<LyraHeatmapCellClickDetail>;'lr-matrix-geometry-change':CustomEvent<LyraHeatmapMatrixGeometryChangeDetail>;}
@@ -154,7 +154,8 @@ export declare function resolveRgb(color:string,fallbackHex:string,ownerDocument
154
154
  * `heatmap.styles.ts`) so hosts can retheme it — canvas can't consume
155
155
  * `var()` directly, so they're resolved once per draw via
156
156
  * `getComputedStyle`, then normalized to RGB by `resolveRgb()` (any valid
157
- * CSS color syntax, not just hex — see its doc comment).
157
+ * CSS color syntax, not just hex — see its doc comment). Invalid authored colors keep the
158
+ * default ramp endpoint and issue a deduplicated diagnostic only in development.
158
159
  *
159
160
  * Every cell is independently addressable: a `pointermove` hit test over the
160
161
  * canvas shows `[part="tooltip"]` with that cell's label + value (hidden on
@@ -165,7 +166,8 @@ export declare function resolveRgb(color:string,fallbackHex:string,ownerDocument
165
166
  * calendar); and a click, or Enter/Space on the focused cell, fires
166
167
  * `lr-cell-click`. `annotations` additionally strokes a ring around
167
168
  * specific cells (e.g. to call out an anomaly), each one optionally
168
- * surfaced in the legend too via `[part="legend-annotation"]`.
169
+ * surfaced in the legend too via `[part="legend-annotation"]`. Focus-only updates restore
170
+ * intersected neighboring fills and overlays without redrawing the entire canvas.
169
171
  *
170
172
  * Both grid modes deliberately retain physical LTR geometry under `dir="rtl"`:
171
173
  * matrix column 0 and calendar week 0 remain at the physical left. ArrowLeft
@@ -477,6 +479,7 @@ midpoint?:number;
477
479
  * signed, at which point silently dropping the whole negative half (32.7% of cells in the report
478
480
  * that prompted this) is the defect, not the feature. In signed mode only a non-finite value is
479
481
  * no-data; an absent matrix cell reads as `NaN`, so it stays no-data in both modes.
482
+ * Live domain or midpoint changes refresh this sentinel without requiring replacement data.
480
483
  */
481
484
  private get signedDomain();
482
485
  /** Ramp position in `[0, 1]` for `value`, midpoint-anchored when `midpoint` is set. Every fill
@@ -868,7 +871,7 @@ private paintCalendarAxisLabels;private drawCalendar;
868
871
  * below (`hitTestMatrix()`, `cellRect()`) so they always agree on exactly
869
872
  * the same geometry as what's actually painted.
870
873
  */
871
- private matrixCellSize;private paintMatrixCell;private paintMatrixFocusOverlays;private repaintMatrixFocusCell;private paintCalendarCell;private paintCalendarFocusOverlays;private repaintCalendarFocusCell;private drawMatrix;
874
+ private matrixCellSize;private paintMatrixCell;private paintMatrixFocusOverlays;private focusRepaintBounds;private repaintMatrixFocusCell;private paintCalendarCell;private paintCalendarFocusOverlays;private repaintCalendarFocusCell;private drawMatrix;
872
875
  /** Paints the row-label gutter at `x = 0 .. padLeft`. Extracted so the cell canvas and a frozen
873
876
  * `[part="row-labels"]` band paint from one routine and one set of geometry arguments — the
874
877
  * band's own canvas shares the cell canvas's origin, so "aligned" is what the same coordinates