@aceshooting/lyra-ui 9.1.1 → 10.0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (578) hide show
  1. package/CHANGELOG.md +597 -0
  2. package/custom-elements.json +1 -1
  3. package/dist/cli/migrate-wa.mjs +52 -0
  4. package/dist/cli/migration-contract.json +1 -1
  5. package/dist/components/agent-tools/activity-feed/activity-feed.class.js +1 -1
  6. package/dist/components/agent-tools/activity-feed/activity-feed.styles.js +0 -16
  7. package/dist/components/agent-tools/agent-eval-dashboard/agent-eval-dashboard.class.js +1 -1
  8. package/dist/components/agent-tools/agent-eval-dashboard/agent-eval-dashboard.styles.js +7 -5
  9. package/dist/components/agent-tools/agent-run/agent-run.class.js +2 -2
  10. package/dist/components/agent-tools/agent-run/agent-run.styles.js +0 -13
  11. package/dist/components/agent-tools/agent-trace/agent-trace.styles.js +7 -4
  12. package/dist/components/agent-tools/approval-queue/approval-queue.styles.js +7 -5
  13. package/dist/components/agent-tools/artifact-panel/artifact-panel.styles.js +0 -3
  14. package/dist/components/agent-tools/browser-frame/browser-frame.styles.js +3 -5
  15. package/dist/components/agent-tools/commit-card/commit-card.styles.js +0 -10
  16. package/dist/components/agent-tools/compare-panel/compare-panel.styles.js +11 -6
  17. package/dist/components/agent-tools/confirm-bar/confirm-bar.styles.js +0 -46
  18. package/dist/components/agent-tools/eval-dataset/eval-dataset.styles.js +0 -7
  19. package/dist/components/agent-tools/evaluation-run/evaluation-run.class.js +2 -2
  20. package/dist/components/agent-tools/prompt-studio/prompt-studio.styles.js +0 -15
  21. package/dist/components/agent-tools/result-card/result-card.styles.js +0 -7
  22. package/dist/components/agent-tools/result-card/result-field.styles.js +0 -5
  23. package/dist/components/agent-tools/schema-viewer/schema-viewer.styles.js +0 -3
  24. package/dist/components/agent-tools/span-waterfall/span-waterfall.styles.js +0 -15
  25. package/dist/components/agent-tools/stack-trace/stack-trace.styles.js +0 -20
  26. package/dist/components/agent-tools/subagent-panel/subagent-panel.class.js +2 -2
  27. package/dist/components/agent-tools/subagent-panel/subagent-panel.styles.js +0 -3
  28. package/dist/components/agent-tools/task-list/task-list.styles.js +0 -15
  29. package/dist/components/agent-tools/terminal/terminal.class.d.ts +11 -6
  30. package/dist/components/agent-tools/terminal/terminal.class.js +4 -4
  31. package/dist/components/agent-tools/terminal/terminal.styles.js +0 -46
  32. package/dist/components/agent-tools/test-results/test-results.class.js +2 -2
  33. package/dist/components/agent-tools/test-results/test-results.styles.js +0 -5
  34. package/dist/components/agent-tools/thinking-panel/thinking-panel.styles.js +0 -41
  35. package/dist/components/agent-tools/tool-approval-dialog/tool-approval-dialog.styles.js +0 -41
  36. package/dist/components/agent-tools/tool-call-chip/tool-call-chip.styles.js +0 -30
  37. package/dist/components/agent-tools/tool-param-form/tool-param-form.class.js +6 -6
  38. package/dist/components/agent-tools/tool-param-form/tool-param-form.styles.js +0 -5
  39. package/dist/components/agent-tools/tool-result-dialog/tool-result-dialog.styles.js +0 -20
  40. package/dist/components/agent-tools/tool-result-view/tool-result-view.styles.js +0 -4
  41. package/dist/components/agent-tools/tool-select-dialog/tool-select-dialog.styles.js +0 -21
  42. package/dist/components/agent-tools/trace-tree/trace-tree.styles.js +7 -31
  43. package/dist/components/charts/chart/box-plot.styles.js +0 -20
  44. package/dist/components/charts/chart/chart-colors.d.ts +1 -1
  45. package/dist/components/charts/chart/chart-colors.js +1 -1
  46. package/dist/components/charts/chart/chart-core-loader.d.ts +1 -0
  47. package/dist/components/charts/chart/chart-core-loader.js +1 -1
  48. package/dist/components/charts/chart/chart-feature-loader.d.ts +35 -0
  49. package/dist/components/charts/chart/chart-feature-loader.js +1 -1
  50. package/dist/components/charts/chart/chart.class.d.ts +93 -0
  51. package/dist/components/charts/chart/chart.class.js +3 -3
  52. package/dist/components/charts/chart/chart.styles.js +0 -27
  53. package/dist/components/charts/chart/lite-chart.class.d.ts +20 -1
  54. package/dist/components/charts/chart/lite-chart.class.js +4 -4
  55. package/dist/components/charts/chart/lite-chart.styles.js +0 -27
  56. package/dist/components/conversation/agent-workspace/agent-workspace.class.d.ts +20 -0
  57. package/dist/components/conversation/agent-workspace/agent-workspace.class.js +3 -1
  58. package/dist/components/conversation/agent-workspace/agent-workspace.styles.js +3 -0
  59. package/dist/components/conversation/audio-visualizer/audio-visualizer.styles.js +0 -7
  60. package/dist/components/conversation/branch-picker/branch-picker.styles.js +0 -3
  61. package/dist/components/conversation/chat-composer/chat-composer.styles.js +0 -51
  62. package/dist/components/conversation/chat-message/chat-message.styles.js +7 -35
  63. package/dist/components/conversation/chat-viewport/chat-viewport.class.js +1 -1
  64. package/dist/components/conversation/chat-viewport/chat-viewport.styles.js +0 -33
  65. package/dist/components/conversation/checkpoint/checkpoint.class.js +1 -1
  66. package/dist/components/conversation/checkpoint/checkpoint.styles.js +0 -3
  67. package/dist/components/conversation/code-block/code-block-shared.d.ts +5 -2
  68. package/dist/components/conversation/code-block/code-block.class.js +1 -1
  69. package/dist/components/conversation/code-block/code-block.styles.js +4 -95
  70. package/dist/components/conversation/code-block/code-loader.d.ts +11 -0
  71. package/dist/components/conversation/code-block/code-loader.js +1 -1
  72. package/dist/components/conversation/code-block/shiki-types.d.ts +12 -0
  73. package/dist/components/conversation/code-block/shiki-types.js +1 -1
  74. package/dist/components/conversation/conversation-item/conversation-item.styles.js +8 -54
  75. package/dist/components/conversation/generation-metrics/generation-metrics.class.js +2 -2
  76. package/dist/components/conversation/generation-metrics/generation-metrics.styles.js +0 -17
  77. package/dist/components/conversation/markdown/markdown-base.class.js +1 -1
  78. package/dist/components/conversation/markdown/markdown.styles.js +0 -41
  79. package/dist/components/conversation/message-actions/message-actions.styles.js +0 -3
  80. package/dist/components/conversation/message-feedback/message-feedback.styles.js +0 -35
  81. package/dist/components/conversation/message-parts/message-parts.class.d.ts +1 -1
  82. package/dist/components/conversation/message-parts/message-parts.styles.js +0 -5
  83. package/dist/components/conversation/model-select/model-select.class.js +3 -3
  84. package/dist/components/conversation/model-select/model-select.styles.js +12 -47
  85. package/dist/components/conversation/model-settings-panel/model-settings-panel.styles.js +0 -6
  86. package/dist/components/conversation/prompt-input/prompt-input.class.d.ts +3 -0
  87. package/dist/components/conversation/prompt-input/prompt-input.styles.js +0 -10
  88. package/dist/components/conversation/push-to-talk/push-to-talk.styles.js +0 -8
  89. package/dist/components/conversation/selection-toolbar/selection-toolbar.styles.js +1 -11
  90. package/dist/components/conversation/stream-status/stream-status.styles.js +0 -16
  91. package/dist/components/conversation/streaming-text/streaming-text.styles.js +0 -15
  92. package/dist/components/conversation/suggestion-chips/suggestion-chips.styles.js +0 -5
  93. package/dist/components/conversation/thread-list/thread-list.styles.js +0 -23
  94. package/dist/components/conversation/transcript-feed/transcript-feed.class.d.ts +16 -4
  95. package/dist/components/conversation/transcript-feed/transcript-feed.class.js +1 -1
  96. package/dist/components/conversation/transcript-feed/transcript-feed.styles.js +0 -1
  97. package/dist/components/conversation/typing-indicator/typing-indicator.styles.js +0 -23
  98. package/dist/components/conversation/usage-badge/usage-badge.styles.js +0 -3
  99. package/dist/components/conversation/voice-picker/voice-picker.class.js +3 -3
  100. package/dist/components/conversation/voice-picker/voice-picker.styles.js +9 -29
  101. package/dist/components/conversation/widget-renderer/resolve.d.ts +2 -0
  102. package/dist/components/conversation/widget-renderer/resolve.js +1 -1
  103. package/dist/components/data/calendar/calendar.class.d.ts +15 -2
  104. package/dist/components/data/calendar/calendar.class.js +2 -2
  105. package/dist/components/data/calendar/calendar.styles.js +2 -28
  106. package/dist/components/data/condition-builder/condition-builder.class.d.ts +10 -6
  107. package/dist/components/data/condition-builder/condition-builder.class.js +2 -2
  108. package/dist/components/data/condition-builder/condition-builder.styles.js +0 -6
  109. package/dist/components/data/context-meter/context-meter.styles.js +0 -24
  110. package/dist/components/data/data-grid/data-grid.class.js +3 -3
  111. package/dist/components/data/data-grid/data-grid.styles.js +0 -22
  112. package/dist/components/data/document-library/document-library.class.js +2 -2
  113. package/dist/components/data/document-library/document-library.styles.js +0 -4
  114. package/dist/components/data/env-list/env-list.class.js +1 -1
  115. package/dist/components/data/env-list/env-list.styles.js +7 -4
  116. package/dist/components/data/file-tree/file-tree.class.d.ts +12 -0
  117. package/dist/components/data/flow-canvas/flow-canvas.styles.js +12 -19
  118. package/dist/components/data/flow-controls/flow-controls.class.js +2 -2
  119. package/dist/components/data/flow-controls/flow-controls.styles.js +3 -36
  120. package/dist/components/data/flow-minimap/flow-minimap.class.js +1 -1
  121. package/dist/components/data/flow-minimap/flow-minimap.styles.js +0 -9
  122. package/dist/components/data/flow-node/flow-node.styles.js +0 -23
  123. package/dist/components/data/flow-run-status/flow-run-status.class.js +1 -1
  124. package/dist/components/data/flow-run-status/flow-run-status.styles.js +0 -7
  125. package/dist/components/data/graph-query-builder/graph-query-builder.class.d.ts +0 -7
  126. package/dist/components/data/graph-query-builder/graph-query-builder.class.js +1 -1
  127. package/dist/components/data/graph-query-builder/graph-query-builder.styles.js +0 -10
  128. package/dist/components/data/heatmap/heatmap-scale.d.ts +20 -0
  129. package/dist/components/data/heatmap/heatmap-scale.js +1 -1
  130. package/dist/components/data/heatmap/heatmap.class.d.ts +84 -1
  131. package/dist/components/data/heatmap/heatmap.class.js +2 -2
  132. package/dist/components/data/heatmap/heatmap.styles.js +0 -54
  133. package/dist/components/data/pagination/pagination.styles.js +23 -46
  134. package/dist/components/data/sequence-strip/sequence-strip.class.d.ts +34 -1
  135. package/dist/components/data/sequence-strip/sequence-strip.class.js +5 -2
  136. package/dist/components/data/sequence-strip/sequence-strip.styles.js +14 -20
  137. package/dist/components/data/sparkline/sparkline.class.js +1 -1
  138. package/dist/components/data/stat/stat.styles.js +0 -67
  139. package/dist/components/data/table/table.class.d.ts +42 -3
  140. package/dist/components/data/table/table.class.js +4 -4
  141. package/dist/components/data/table/table.styles.js +20 -91
  142. package/dist/components/data/timeline/timeline-item.styles.js +0 -30
  143. package/dist/components/data/timeline/timeline.class.d.ts +89 -1
  144. package/dist/components/data/timeline/timeline.class.js +2 -2
  145. package/dist/components/data/timeline/timeline.styles.js +111 -31
  146. package/dist/components/data/tree/tree-item.styles.js +1 -28
  147. package/dist/components/data/tree/tree.class.js +2 -2
  148. package/dist/components/data/tree/tree.styles.js +0 -6
  149. package/dist/components/data/word-cloud/word-cloud.styles.js +0 -5
  150. package/dist/components/forms/button/button.class.js +1 -1
  151. package/dist/components/forms/button/button.styles.js +0 -105
  152. package/dist/components/forms/checkbox/checkbox.class.d.ts +3 -0
  153. package/dist/components/forms/checkbox/checkbox.class.js +1 -1
  154. package/dist/components/forms/checkbox/checkbox.styles.js +0 -39
  155. package/dist/components/forms/checkbox-group/checkbox-group.class.d.ts +21 -2
  156. package/dist/components/forms/checkbox-group/checkbox-group.class.js +1 -1
  157. package/dist/components/forms/checkbox-group/checkbox-group.styles.js +0 -18
  158. package/dist/components/forms/code-editor/code-editor.styles.js +0 -30
  159. package/dist/components/forms/color-picker/color-picker.class.js +2 -2
  160. package/dist/components/forms/color-picker/color-picker.styles.js +0 -69
  161. package/dist/components/forms/combobox/combobox.class.js +2 -2
  162. package/dist/components/forms/combobox/combobox.styles.js +22 -111
  163. package/dist/components/forms/combobox/option.styles.js +7 -1
  164. package/dist/components/forms/date-picker/date-input.class.js +1 -1
  165. package/dist/components/forms/date-picker/date-input.styles.js +12 -67
  166. package/dist/components/forms/date-picker/date-picker.class.d.ts +1 -0
  167. package/dist/components/forms/date-picker/date-picker.class.js +22 -20
  168. package/dist/components/forms/date-picker/date-picker.styles.js +36 -29
  169. package/dist/components/forms/emoji-picker/emoji-data-loader.d.ts +6 -3
  170. package/dist/components/forms/emoji-picker/emoji-data-loader.js +1 -1
  171. package/dist/components/forms/emoji-picker/emoji-picker.class.d.ts +8 -1
  172. package/dist/components/forms/emoji-picker/emoji-picker.class.js +1 -1
  173. package/dist/components/forms/emoji-picker/emoji-picker.styles.js +3 -41
  174. package/dist/components/forms/icon-button/icon-button.class.js +1 -1
  175. package/dist/components/forms/icon-button/icon-button.styles.js +0 -16
  176. package/dist/components/forms/input/input.styles.js +0 -54
  177. package/dist/components/forms/input/number-input.styles.d.ts +4 -5
  178. package/dist/components/forms/input/number-input.styles.js +0 -11
  179. package/dist/components/forms/input/time-input-shared.d.ts +11 -0
  180. package/dist/components/forms/input/time-input-shared.js +1 -1
  181. package/dist/components/forms/input/time-input.class.d.ts +11 -2
  182. package/dist/components/forms/input/time-input.class.js +1 -1
  183. package/dist/components/forms/input/time-input.styles.js +0 -6
  184. package/dist/components/forms/locale-picker/locale-picker.class.js +2 -2
  185. package/dist/components/forms/locale-picker/locale-picker.styles.js +1 -26
  186. package/dist/components/forms/otp-input/otp-input.class.js +3 -3
  187. package/dist/components/forms/otp-input/otp-input.styles.js +0 -16
  188. package/dist/components/forms/phone-input/phone-input.class.d.ts +9 -1
  189. package/dist/components/forms/phone-input/phone-input.class.js +2 -2
  190. package/dist/components/forms/phone-input/phone-input.styles.js +0 -37
  191. package/dist/components/forms/radio/radio-button.styles.js +1 -30
  192. package/dist/components/forms/radio/radio-group.styles.js +0 -4
  193. package/dist/components/forms/radio/radio.styles.js +0 -44
  194. package/dist/components/forms/rubric-form/rubric-form.styles.js +0 -5
  195. package/dist/components/forms/select/select.class.js +1 -1
  196. package/dist/components/forms/select/select.styles.js +14 -114
  197. package/dist/components/forms/slider/slider.styles.js +0 -55
  198. package/dist/components/forms/swatch-picker/swatch-picker.class.d.ts +0 -11
  199. package/dist/components/forms/swatch-picker/swatch-picker.class.js +2 -2
  200. package/dist/components/forms/swatch-picker/swatch-picker.styles.js +0 -77
  201. package/dist/components/forms/switch/switch.class.d.ts +3 -0
  202. package/dist/components/forms/switch/switch.class.js +1 -1
  203. package/dist/components/forms/switch/switch.styles.js +0 -37
  204. package/dist/components/forms/textarea/textarea.styles.js +0 -28
  205. package/dist/components/forms/time-range/time-range.styles.js +12 -84
  206. package/dist/components/forms/token-input/token-input.class.d.ts +23 -9
  207. package/dist/components/forms/token-input/token-input.class.js +1 -1
  208. package/dist/components/forms/token-input/token-input.styles.js +1 -54
  209. package/dist/components/layout/app-rail/app-rail-item.class.js +2 -2
  210. package/dist/components/layout/app-rail/app-rail-item.styles.js +0 -13
  211. package/dist/components/layout/app-rail/app-rail.class.d.ts +5 -0
  212. package/dist/components/layout/app-rail/app-rail.class.js +1 -1
  213. package/dist/components/layout/app-rail/app-rail.styles.js +0 -46
  214. package/dist/components/layout/button-group/button-group.styles.js +0 -6
  215. package/dist/components/layout/card/card.class.d.ts +12 -0
  216. package/dist/components/layout/card/card.styles.js +3 -11
  217. package/dist/components/layout/carousel/carousel.styles.js +0 -1
  218. package/dist/components/layout/command-palette/command-palette.class.d.ts +8 -0
  219. package/dist/components/layout/command-palette/command-palette.class.js +3 -1
  220. package/dist/components/layout/command-palette/command-palette.styles.js +1 -13
  221. package/dist/components/layout/control-group/control-group.styles.js +0 -7
  222. package/dist/components/layout/dashboard-grid/dashboard-grid.styles.js +6 -25
  223. package/dist/components/layout/details/accordion.class.d.ts +13 -0
  224. package/dist/components/layout/details/accordion.class.js +1 -1
  225. package/dist/components/layout/details/details.class.js +1 -1
  226. package/dist/components/layout/details/details.styles.js +0 -12
  227. package/dist/components/layout/dock-panel/dock-panel.styles.js +0 -45
  228. package/dist/components/layout/drilldown-panel/drilldown-panel.class.d.ts +2 -0
  229. package/dist/components/layout/drilldown-panel/drilldown-panel.class.js +2 -2
  230. package/dist/components/layout/drilldown-panel/drilldown-panel.styles.js +0 -4
  231. package/dist/components/layout/filter-bar/filter-bar.class.js +1 -1
  232. package/dist/components/layout/filter-bar/filter-bar.styles.js +0 -9
  233. package/dist/components/layout/menu/menu-item.class.d.ts +5 -0
  234. package/dist/components/layout/menu/menu-item.class.js +1 -1
  235. package/dist/components/layout/menu/menu-item.styles.js +0 -49
  236. package/dist/components/layout/menu/menu-label.styles.js +0 -2
  237. package/dist/components/layout/menu/menu.styles.js +0 -18
  238. package/dist/components/layout/multi-split/multi-split.styles.js +0 -63
  239. package/dist/components/layout/page/page.class.d.ts +4 -0
  240. package/dist/components/layout/page/page.class.js +1 -1
  241. package/dist/components/layout/reorder-list/reorder-item.styles.js +0 -4
  242. package/dist/components/layout/responsive-panel/responsive-panel.styles.js +0 -27
  243. package/dist/components/layout/scroller/scroller.styles.js +0 -20
  244. package/dist/components/layout/segmented/segmented.class.d.ts +7 -1
  245. package/dist/components/layout/segmented/segmented.class.js +1 -1
  246. package/dist/components/layout/segmented/segmented.styles.js +69 -37
  247. package/dist/components/layout/split-panel/split-panel.styles.js +1 -7
  248. package/dist/components/layout/stepper/stepper.class.d.ts +8 -1
  249. package/dist/components/layout/stepper/stepper.class.js +1 -1
  250. package/dist/components/layout/stepper/stepper.styles.js +140 -41
  251. package/dist/components/layout/tab-group/tab-group.class.d.ts +4 -1
  252. package/dist/components/layout/tab-group/tab-group.styles.js +9 -75
  253. package/dist/components/layout/tab-group/tab.styles.js +0 -2
  254. package/dist/components/layout/virtual-list/virtual-list.class.d.ts +4 -4
  255. package/dist/components/layout/virtual-list/virtual-list.class.js +1 -1
  256. package/dist/components/layout/virtual-list/virtual-list.styles.js +0 -68
  257. package/dist/components/layout/widget/widget.class.d.ts +5 -1
  258. package/dist/components/layout/widget/widget.class.js +1 -1
  259. package/dist/components/layout/widget/widget.styles.js +97 -40
  260. package/dist/components/media/animated-image/animated-image.class.d.ts +3 -0
  261. package/dist/components/media/animated-image/animated-image.class.js +1 -1
  262. package/dist/components/media/animated-image/animated-image.styles.js +0 -28
  263. package/dist/components/media/attachment-chip/attachment-chip.class.d.ts +1 -1
  264. package/dist/components/media/attachment-chip/attachment-chip.class.js +1 -1
  265. package/dist/components/media/attachment-chip/attachment-chip.styles.js +0 -31
  266. package/dist/components/media/attachment-trigger/attachment-trigger.class.js +3 -3
  267. package/dist/components/media/attachment-trigger/attachment-trigger.styles.js +0 -40
  268. package/dist/components/media/av-player/av-player.class.d.ts +5 -6
  269. package/dist/components/media/av-player/av-player.class.js +1 -1
  270. package/dist/components/media/av-player/av-player.styles.js +0 -45
  271. package/dist/components/media/avatar/avatar.styles.js +3 -16
  272. package/dist/components/media/file-icon/file-icon.class.d.ts +1 -2
  273. package/dist/components/media/file-icon/file-icon.class.js +1 -1
  274. package/dist/components/media/file-input/file-input.class.d.ts +12 -0
  275. package/dist/components/media/file-input/file-input.styles.js +3 -24
  276. package/dist/components/media/flag/flag.class.d.ts +20 -0
  277. package/dist/components/media/flag/flag.class.js +4 -2
  278. package/dist/components/media/flag/flag.styles.js +7 -1
  279. package/dist/components/media/flag/language-map.d.ts +10 -0
  280. package/dist/components/media/flag/language-map.js +1 -1
  281. package/dist/components/media/image-comparer/image-comparer.styles.js +4 -33
  282. package/dist/components/media/image-viewer/image-viewer.class.js +0 -2
  283. package/dist/components/media/image-viewer/image-viewer.styles.js +7 -27
  284. package/dist/components/media/lightbox/lightbox.class.js +0 -2
  285. package/dist/components/media/lightbox/lightbox.styles.js +0 -21
  286. package/dist/components/media/map/map-loader.d.ts +19 -1
  287. package/dist/components/media/map/map-loader.js +1 -1
  288. package/dist/components/media/map/map.class.d.ts +141 -1
  289. package/dist/components/media/map/map.class.js +15 -3
  290. package/dist/components/media/map/map.styles.js +20 -17
  291. package/dist/components/media/media-card/media-card.class.d.ts +14 -3
  292. package/dist/components/media/media-card/media-card.class.js +1 -1
  293. package/dist/components/media/media-card/media-card.styles.js +2 -28
  294. package/dist/components/media/pan-zoom/pan-zoom.styles.js +0 -3
  295. package/dist/components/media/qr-code/qr-code.class.d.ts +3 -2
  296. package/dist/components/media/qr-code/qr-code.class.js +2 -2
  297. package/dist/components/media/qr-code/qr-code.styles.js +0 -3
  298. package/dist/components/media/sequence-playback/sequence-playback.class.d.ts +2 -0
  299. package/dist/components/media/sequence-playback/sequence-playback.class.js +2 -1
  300. package/dist/components/media/sequence-playback/sequence-playback.styles.js +0 -19
  301. package/dist/components/media/video/video.class.d.ts +23 -2
  302. package/dist/components/media/video/video.class.js +3 -3
  303. package/dist/components/media/video/video.styles.js +4 -2
  304. package/dist/components/media/zoomable-frame/zoomable-frame.class.d.ts +3 -2
  305. package/dist/components/media/zoomable-frame/zoomable-frame.class.js +2 -2
  306. package/dist/components/media/zoomable-frame/zoomable-frame.styles.js +0 -5
  307. package/dist/components/overlays/alert/alert.styles.js +4 -2
  308. package/dist/components/overlays/badge/badge.styles.js +4 -48
  309. package/dist/components/overlays/badge/tag.styles.js +0 -14
  310. package/dist/components/overlays/callout/callout.styles.js +0 -11
  311. package/dist/components/overlays/chip/chip-group.styles.js +0 -18
  312. package/dist/components/overlays/chip/chip.styles.js +6 -69
  313. package/dist/components/overlays/dialog/confirm.d.ts +1 -4
  314. package/dist/components/overlays/dialog/confirm.js +1 -1
  315. package/dist/components/overlays/dialog/dialog.class.d.ts +12 -9
  316. package/dist/components/overlays/dialog/dialog.class.js +1 -1
  317. package/dist/components/overlays/dialog/dialog.styles.js +0 -43
  318. package/dist/components/overlays/drawer/drawer.class.d.ts +2 -2
  319. package/dist/components/overlays/drawer/drawer.styles.js +0 -9
  320. package/dist/components/overlays/empty/empty.styles.js +0 -12
  321. package/dist/components/overlays/kbd/kbd.styles.js +0 -8
  322. package/dist/components/overlays/overlay/dropdown.class.d.ts +1 -6
  323. package/dist/components/overlays/overlay/dropdown.class.js +2 -2
  324. package/dist/components/overlays/overlay/overlay.styles.js +0 -28
  325. package/dist/components/overlays/overlay/popover.class.d.ts +9 -1
  326. package/dist/components/overlays/overlay/popover.class.js +2 -2
  327. package/dist/components/overlays/overlay/tooltip.class.d.ts +10 -0
  328. package/dist/components/overlays/overlay/tooltip.class.js +1 -1
  329. package/dist/components/overlays/popup/popup.class.d.ts +1 -0
  330. package/dist/components/overlays/popup/popup.class.js +1 -1
  331. package/dist/components/overlays/popup/popup.styles.js +0 -15
  332. package/dist/components/overlays/progress/progress-ring.class.d.ts +9 -1
  333. package/dist/components/overlays/progress/progress-ring.class.js +3 -3
  334. package/dist/components/overlays/progress/progress.styles.js +0 -21
  335. package/dist/components/overlays/rating/rating.styles.js +0 -25
  336. package/dist/components/overlays/skeleton/skeleton.styles.js +0 -4
  337. package/dist/components/overlays/spinner/spinner.styles.js +0 -3
  338. package/dist/components/overlays/toast/toast-item.styles.js +3 -45
  339. package/dist/components/retrieval/chunk-inspector/chunk-inspector.styles.js +0 -35
  340. package/dist/components/retrieval/citation-badge/citation-badge.class.d.ts +2 -2
  341. package/dist/components/retrieval/citation-badge/citation-badge.class.js +3 -3
  342. package/dist/components/retrieval/citation-badge/citation-badge.styles.js +0 -20
  343. package/dist/components/retrieval/claim-evidence/claim-evidence.styles.js +0 -8
  344. package/dist/components/retrieval/community-card/community-card.class.d.ts +1 -0
  345. package/dist/components/retrieval/community-card/community-card.styles.js +0 -6
  346. package/dist/components/retrieval/embedding-explorer/embedding-explorer.styles.js +8 -12
  347. package/dist/components/retrieval/entity-card/entity-card.class.d.ts +4 -3
  348. package/dist/components/retrieval/entity-card/entity-card.class.js +1 -1
  349. package/dist/components/retrieval/entity-card/entity-card.styles.js +0 -12
  350. package/dist/components/retrieval/entity-chip/entity-chip.class.d.ts +10 -4
  351. package/dist/components/retrieval/entity-chip/entity-chip.class.js +3 -3
  352. package/dist/components/retrieval/entity-chip/entity-chip.styles.js +6 -9
  353. package/dist/components/retrieval/entity-dossier/entity-dossier.class.d.ts +19 -5
  354. package/dist/components/retrieval/graph/graph.class.d.ts +5 -0
  355. package/dist/components/retrieval/graph/graph.class.js +1 -1
  356. package/dist/components/retrieval/graph/graph.styles.js +0 -30
  357. package/dist/components/retrieval/graph-legend/graph-legend.styles.js +0 -3
  358. package/dist/components/retrieval/ingestion-queue/ingestion-queue.styles.js +0 -25
  359. package/dist/components/retrieval/knowledge-base-admin/knowledge-base-admin.class.d.ts +2 -0
  360. package/dist/components/retrieval/knowledge-base-admin/knowledge-base-admin.styles.js +0 -7
  361. package/dist/components/retrieval/knowledge-graph-explorer/knowledge-graph-explorer.class.d.ts +20 -6
  362. package/dist/components/retrieval/knowledge-graph-explorer/knowledge-graph-explorer.class.js +2 -2
  363. package/dist/components/retrieval/knowledge-graph-explorer/knowledge-graph-explorer.styles.js +0 -16
  364. package/dist/components/retrieval/mind-map/mind-map.class.d.ts +5 -3
  365. package/dist/components/retrieval/mind-map/mind-map.class.js +1 -1
  366. package/dist/components/retrieval/mind-map/mind-map.styles.js +0 -2
  367. package/dist/components/retrieval/neighbor-list/neighbor-list.class.d.ts +3 -2
  368. package/dist/components/retrieval/neighbor-list/neighbor-list.class.js +1 -1
  369. package/dist/components/retrieval/neighbor-list/neighbor-list.styles.js +0 -30
  370. package/dist/components/retrieval/node-palette/node-palette.styles.js +0 -11
  371. package/dist/components/retrieval/path-strip/path-strip.styles.js +0 -10
  372. package/dist/components/retrieval/provenance-panel/provenance-panel.class.d.ts +12 -3
  373. package/dist/components/retrieval/provenance-panel/provenance-panel.styles.js +0 -2
  374. package/dist/components/retrieval/rag-eval-dashboard/rag-eval-dashboard.class.d.ts +3 -2
  375. package/dist/components/retrieval/rag-eval-dashboard/rag-eval-dashboard.class.js +2 -2
  376. package/dist/components/retrieval/retrieval-results/retrieval-results.styles.js +0 -28
  377. package/dist/components/retrieval/retrieval-search/retrieval-search.styles.js +0 -4
  378. package/dist/components/retrieval/retrieval-trace/retrieval-trace.styles.js +0 -2
  379. package/dist/components/retrieval/source-card/source-card.styles.js +0 -13
  380. package/dist/components/retrieval/source-list/source-list.styles.js +0 -7
  381. package/dist/components/retrieval/source-picker/source-picker.styles.js +0 -7
  382. package/dist/components/utility/copy-button/copy-button.styles.js +0 -10
  383. package/dist/components/utility/diff-view/diff-view.styles.js +0 -14
  384. package/dist/components/utility/export-button/export-button.styles.js +0 -22
  385. package/dist/components/utility/icon/icon.styles.js +0 -6
  386. package/dist/components/utility/json-viewer/json-viewer.styles.js +2 -48
  387. package/dist/components/utility/known-date/known-date.class.d.ts +7 -3
  388. package/dist/components/utility/known-date/known-date.styles.js +10 -51
  389. package/dist/components/utility/live-region/live-region.styles.js +0 -4
  390. package/dist/components/utility/mention-popover/mention-popover.styles.js +0 -25
  391. package/dist/components/utility/poll-status/poll-status.styles.js +0 -4
  392. package/dist/components/utility/random-content/random-content.class.d.ts +22 -0
  393. package/dist/components/utility/random-content/random-content.class.js +3 -2
  394. package/dist/components/utility/random-content/random-content.styles.js +6 -13
  395. package/dist/components/utility/tour/tour.class.d.ts +4 -2
  396. package/dist/components/utility/tour/tour.class.js +3 -3
  397. package/dist/components/utility/tour/tour.styles.js +0 -13
  398. package/dist/components/utility/visually-hidden/visually-hidden.styles.js +0 -5
  399. package/dist/components/viewers/archive-viewer/archive-viewer.class.js +1 -1
  400. package/dist/components/viewers/archive-viewer/archive-viewer.styles.d.ts +2 -2
  401. package/dist/components/viewers/archive-viewer/archive-viewer.styles.js +0 -10
  402. package/dist/components/viewers/csv-viewer/csv-viewer.class.js +1 -1
  403. package/dist/components/viewers/csv-viewer/csv-viewer.styles.js +0 -19
  404. package/dist/components/viewers/dataset-viewer/dataset-viewer.class.js +1 -1
  405. package/dist/components/viewers/dataset-viewer/dataset-viewer.styles.js +0 -15
  406. package/dist/components/viewers/document-compare/document-compare.styles.js +0 -3
  407. package/dist/components/viewers/document-preview/document-preview.styles.js +0 -25
  408. package/dist/components/viewers/document-viewer/document-viewer.class.d.ts +2 -1
  409. package/dist/components/viewers/document-viewer/document-viewer.class.js +1 -1
  410. package/dist/components/viewers/document-viewer/document-viewer.styles.js +0 -5
  411. package/dist/components/viewers/docx-viewer/docx-viewer.styles.js +0 -17
  412. package/dist/components/viewers/ebook-viewer/ebook-viewer.styles.js +0 -4
  413. package/dist/components/viewers/email-viewer/email-viewer.styles.js +0 -7
  414. package/dist/components/viewers/geojson-view/geojson-view.styles.js +0 -5
  415. package/dist/components/viewers/highlight-layer/highlight-layer.styles.js +0 -3
  416. package/dist/components/viewers/notebook-viewer/notebook-viewer.class.js +1 -1
  417. package/dist/components/viewers/notebook-viewer/notebook-viewer.styles.js +0 -38
  418. package/dist/components/viewers/page-rail/page-rail.class.js +1 -1
  419. package/dist/components/viewers/page-rail/page-rail.styles.js +0 -13
  420. package/dist/components/viewers/pdf-viewer/pdf-loader.d.ts +13 -2
  421. package/dist/components/viewers/pdf-viewer/pdf-loader.js +1 -1
  422. package/dist/components/viewers/pdf-viewer/pdf-viewer.class.d.ts +32 -2
  423. package/dist/components/viewers/pdf-viewer/pdf-viewer.class.js +4 -4
  424. package/dist/components/viewers/pdf-viewer/pdf-viewer.styles.js +1 -27
  425. package/dist/components/viewers/pptx-viewer/pptx-viewer.styles.js +0 -3
  426. package/dist/components/viewers/spreadsheet-viewer/spreadsheet-viewer.class.js +1 -1
  427. package/dist/components/viewers/spreadsheet-viewer/spreadsheet-viewer.styles.js +0 -14
  428. package/dist/components/viewers/svg-viewer/svg-viewer.styles.js +0 -7
  429. package/dist/components/viewers/xml-viewer/xml-viewer.styles.js +2 -24
  430. package/dist/custom-elements-jsx.d.ts +56 -37
  431. package/dist/events.d.ts +43 -33
  432. package/dist/internal/agent-status-variants.d.ts +18 -0
  433. package/dist/internal/agent-status-variants.js +1 -0
  434. package/dist/internal/announcer.d.ts +8 -3
  435. package/dist/internal/announcer.js +1 -1
  436. package/dist/internal/autoloader-manifest.js +1 -1
  437. package/dist/internal/canvas-color.d.ts +16 -0
  438. package/dist/internal/canvas-color.js +1 -1
  439. package/dist/internal/catalog-picker.d.ts +0 -1
  440. package/dist/internal/catalog-picker.js +1 -1
  441. package/dist/internal/default-strings.generated.d.ts +1 -0
  442. package/dist/internal/default-strings.generated.js +1 -1
  443. package/dist/internal/dev-mode-attribute-warning.d.ts +27 -4
  444. package/dist/internal/dev-mode-attribute-warning.js +1 -1
  445. package/dist/internal/localization-runtime.js +1 -1
  446. package/dist/internal/localization-types.d.ts +1 -1
  447. package/dist/internal/localization.js +1 -1
  448. package/dist/internal/lyra-element.d.ts +13 -0
  449. package/dist/internal/lyra-element.js +1 -1
  450. package/dist/internal/media-controller.js +1 -1
  451. package/dist/internal/package-metadata.d.ts +1 -1
  452. package/dist/internal/package-metadata.js +1 -1
  453. package/dist/internal/scroll-overflow.d.ts +35 -13
  454. package/dist/internal/scroll-overflow.js +1 -1
  455. package/dist/internal/sizes.styles.js +0 -2
  456. package/dist/internal/specialist-tokens.styles.js +6 -11
  457. package/dist/internal/text-highlights.d.ts +4 -1
  458. package/dist/internal/text-highlights.js +1 -1
  459. package/dist/internal/tokens/palette.styles.js +0 -15
  460. package/dist/internal/tokens.styles.js +19 -113
  461. package/dist/lyra.d.ts +8 -5
  462. package/dist/styles/reservations.css +82 -0
  463. package/dist/svelte.d.ts +56 -37
  464. package/dist/translations/ar.js +1 -1
  465. package/dist/translations/de.js +1 -1
  466. package/dist/translations/es.js +1 -1
  467. package/dist/translations/fa.js +1 -1
  468. package/dist/translations/fr.js +1 -1
  469. package/dist/translations/he.js +1 -1
  470. package/dist/translations/ja.js +1 -1
  471. package/dist/translations/pt-BR.js +1 -1
  472. package/dist/translations/ru.js +1 -1
  473. package/dist/translations/zh-CN.js +1 -1
  474. package/dist/vue.d.ts +56 -37
  475. package/llms/components/lr-accordion-item.md +12 -3
  476. package/llms/components/lr-accordion.md +11 -2
  477. package/llms/components/lr-agent-eval-dashboard.md +1 -1
  478. package/llms/components/lr-agent-trace.md +3 -1
  479. package/llms/components/lr-agent-workspace.md +20 -0
  480. package/llms/components/lr-artifact-panel.md +10 -4
  481. package/llms/components/lr-attachment-chip.md +7 -4
  482. package/llms/components/lr-attachment-trigger.md +7 -4
  483. package/llms/components/lr-av-player.md +3 -1
  484. package/llms/components/lr-avatar.md +6 -6
  485. package/llms/components/lr-bar-chart.md +4 -3
  486. package/llms/components/lr-box-plot.md +1 -1
  487. package/llms/components/lr-browser-frame.md +7 -3
  488. package/llms/components/lr-bubble-chart.md +4 -3
  489. package/llms/components/lr-calendar.md +9 -2
  490. package/llms/components/lr-card.md +24 -0
  491. package/llms/components/lr-chart.md +32 -8
  492. package/llms/components/lr-chat-viewport.md +7 -2
  493. package/llms/components/lr-checkbox-group.md +13 -5
  494. package/llms/components/lr-checkbox.md +5 -2
  495. package/llms/components/lr-checkpoint.md +6 -2
  496. package/llms/components/lr-combobox.md +5 -2
  497. package/llms/components/lr-command-palette.md +4 -1
  498. package/llms/components/lr-confirm-bar.md +7 -3
  499. package/llms/components/lr-context-meter.md +12 -11
  500. package/llms/components/lr-conversation-item.md +7 -4
  501. package/llms/components/lr-details.md +11 -2
  502. package/llms/components/lr-dialog.md +15 -10
  503. package/llms/components/lr-dock-panel.md +7 -10
  504. package/llms/components/lr-document-preview.md +6 -1
  505. package/llms/components/lr-document-viewer.md +3 -2
  506. package/llms/components/lr-doughnut-chart.md +4 -3
  507. package/llms/components/lr-drawer.md +3 -3
  508. package/llms/components/lr-entity-card.md +3 -3
  509. package/llms/components/lr-entity-chip.md +1 -1
  510. package/llms/components/lr-entity-dossier.md +4 -1
  511. package/llms/components/lr-file-input.md +2 -2
  512. package/llms/components/lr-flag.md +20 -5
  513. package/llms/components/lr-heatmap.md +28 -0
  514. package/llms/components/lr-histogram.md +3 -1
  515. package/llms/components/lr-icon.md +1 -1
  516. package/llms/components/lr-json-schema-viewer.md +2 -1
  517. package/llms/components/lr-knowledge-graph-explorer.md +8 -3
  518. package/llms/components/lr-known-date.md +4 -2
  519. package/llms/components/lr-line-chart.md +4 -3
  520. package/llms/components/lr-lite-chart.md +16 -6
  521. package/llms/components/lr-map.md +72 -8
  522. package/llms/components/lr-markdown-core.md +3 -2
  523. package/llms/components/lr-media-card.md +28 -12
  524. package/llms/components/lr-message-parts.md +2 -1
  525. package/llms/components/lr-model-select.md +9 -10
  526. package/llms/components/lr-model-settings-panel.md +9 -9
  527. package/llms/components/lr-neighbor-list.md +1 -1
  528. package/llms/components/lr-notebook-viewer.md +6 -3
  529. package/llms/components/lr-option.md +5 -2
  530. package/llms/components/lr-pdf-viewer.md +62 -2
  531. package/llms/components/lr-pie-chart.md +4 -3
  532. package/llms/components/lr-polar-area-chart.md +4 -3
  533. package/llms/components/lr-popover.md +5 -0
  534. package/llms/components/lr-progress-ring.md +8 -1
  535. package/llms/components/lr-prompt-studio.md +1 -1
  536. package/llms/components/lr-provenance-panel.md +4 -2
  537. package/llms/components/lr-qr-code.md +1 -1
  538. package/llms/components/lr-radar-chart.md +4 -3
  539. package/llms/components/lr-rag-eval-dashboard.md +2 -2
  540. package/llms/components/lr-random-content.md +13 -0
  541. package/llms/components/lr-reorder-item.md +6 -1
  542. package/llms/components/lr-reorder-list.md +6 -1
  543. package/llms/components/lr-responsive-panel.md +11 -7
  544. package/llms/components/lr-scatter-chart.md +4 -3
  545. package/llms/components/lr-sequence-strip.md +16 -2
  546. package/llms/components/lr-slider.md +12 -5
  547. package/llms/components/lr-sparkline.md +1 -1
  548. package/llms/components/lr-suggestion-chips.md +7 -2
  549. package/llms/components/lr-swatch-picker.md +5 -5
  550. package/llms/components/lr-switch.md +5 -2
  551. package/llms/components/lr-table.md +30 -4
  552. package/llms/components/lr-terminal.md +3 -1
  553. package/llms/components/lr-thread-list.md +8 -8
  554. package/llms/components/lr-time-input.md +6 -1
  555. package/llms/components/lr-timeline-item.md +24 -0
  556. package/llms/components/lr-timeline.md +25 -1
  557. package/llms/components/lr-token-input.md +7 -2
  558. package/llms/components/lr-tool-approval-dialog.md +7 -8
  559. package/llms/components/lr-tool-call-chip.md +5 -1
  560. package/llms/components/lr-tool-param-form.md +14 -12
  561. package/llms/components/lr-tool-result-dialog.md +11 -9
  562. package/llms/components/lr-tool-result-view.md +7 -6
  563. package/llms/components/lr-tool-select-dialog.md +18 -16
  564. package/llms/components/lr-trace-tree.md +3 -1
  565. package/llms/components/lr-usage-badge.md +4 -1
  566. package/llms/components/lr-video-playlist.md +1 -1
  567. package/llms/components/lr-virtual-list.md +22 -14
  568. package/llms/components/lr-voice-picker.md +8 -5
  569. package/llms/components/lr-widget-renderer.md +3 -3
  570. package/llms/components/lr-widget.md +1 -1
  571. package/llms/components/lr-word-cloud.md +6 -2
  572. package/llms/peers.md +12 -2
  573. package/llms/shared.md +70 -2
  574. package/llms-full.txt +1143 -285
  575. package/package.json +17 -5
  576. package/vscode-css-data.json +37 -2
  577. package/vscode-html-data.json +401 -44
  578. package/web-types.json +299 -55
@@ -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{detectPlatform}from"../../../internal/platform.js";import{nextId}from"../../../internal/a11y.js";import{activateOverlay}from"../../../internal/overlay-manager.js";import{styles}from"./command-palette.styles.js";import{resolveCssLength}from"../../../internal/css-length.js";import{LYRA_DEFAULT_commandPaletteEmpty,LYRA_DEFAULT_commandPaletteLabel,LYRA_DEFAULT_commandPalettePlaceholder,LYRA_DEFAULT_commandPaletteResults}from"../../../internal/default-strings.generated.js";const COMMAND_ROW_HEIGHT=48,GROUP_ROW_HEIGHT=32,RESULT_OVERSCAN_ROWS=6,hotkeyOwners=new WeakMap;function registerHotkeyOwner(view,palette){const owners=hotkeyOwners.get(view)??[];hotkeyOwners.set(view,[...owners.filter(candidate=>candidate!==palette),palette])}function unregisterHotkeyOwner(view,palette){const owners=hotkeyOwners.get(view)?.filter(candidate=>candidate!==palette)??[];owners.length?hotkeyOwners.set(view,owners):hotkeyOwners.delete(view)}class LyraCommandPalette extends LyraElement{constructor(){super(...arguments),this._open=!1,this.commands=[],this.hotkey="mod+k",this.queryText="",this.activeIndex=0,this.listScrollTop=0,this.listViewportHeight=COMMAND_ROW_HEIGHT*10,this.rowPitch=COMMAND_ROW_HEIGHT,this.groupPitch=GROUP_ROW_HEIGHT,this.listId=nextId("command-list"),this.haystacksLocale="",this.haystacks=[],this.filteredForQuery="",this.filteredForLocale="",this.filteredRows=[],this.normalizedRows=[],this.normalizedCommandIds=new Map,this.onGlobalKeyDown=event=>{if(event.repeat||event.isComposing||event.keyCode===229)return;const view=this.runtimeWindow;if(!view||!this.matchesShortcut(event))return;const owners=hotkeyOwners.get(view)??[];let owner;for(let index=owners.length-1;index>=0;index-=1){const candidate=owners[index];if(candidate.isConnected&&candidate.matchesShortcut(event)){owner=candidate;break}}owner===this&&(event.preventDefault(),this.openPalette())},this.onKeyDown=event=>{if(event.isComposing||event.keyCode===229)return;const rows=this.filtered;if(event.key==="ArrowDown"){event.preventDefault();const next=this.seekEnabled(rows,this.activeIndex+1,1);next!==-1&&this.setActiveIndex(rows,next)}else if(event.key==="ArrowUp"){event.preventDefault();const previous=this.seekEnabled(rows,this.activeIndex-1,-1);previous!==-1&&this.setActiveIndex(rows,previous)}else if(event.key==="Enter"){const active=rows[this.activeIndex];active&&(event.preventDefault(),this.select(active))}},this.onInput=event=>{event.stopPropagation(),this.queryText=event.target.value,this.listScrollTop=0;const list=this.renderRoot.querySelector('[part="list"]');list&&(list.scrollTop=0);const rows=this.filtered;this.setActiveIndex(rows,this.seekEnabled(rows,0,1))},this.onListScroll=event=>{const list=event.currentTarget;if(this.listScrollFrame!==void 0)return;const view=this.runtimeWindow??this.ownerDocument.defaultView;if(!view){this.listScrollTop=list.scrollTop;return}this.listScrollFrame=view.requestAnimationFrame(()=>{this.listScrollFrame=void 0,this.listScrollTop=list.scrollTop})}}static{this.defaultStrings={...super.defaultStrings,commandPaletteEmpty:LYRA_DEFAULT_commandPaletteEmpty,commandPaletteLabel:LYRA_DEFAULT_commandPaletteLabel,commandPalettePlaceholder:LYRA_DEFAULT_commandPalettePlaceholder,commandPaletteResults:LYRA_DEFAULT_commandPaletteResults}}static{this.ownedCollectionProperties=Object.freeze(["commands"])}static{this.identityCollectionProperties=Object.freeze(["commands"])}static{this.identityEventDetailProperties=Object.freeze({"lr-select":Object.freeze(["command"])})}static{this.styles=[LyraElement.styles,styles]}static{this.immutableEventDetails=Object.freeze(["lr-select"])}get open(){return this._open}set open(next){const normalized=!!next;if(normalized!==this._open){if(!this.hasUpdated){this.commitOpen(normalized);return}this.requestOpen(normalized)}}get effectiveCommands(){if(this.normalizedForCommands!==this.commands){this.normalizedForCommands=this.commands;const seen=new Set;this.normalizedRows=[],this.normalizedCommandIds=new Map;for(const command of this.commands??[]){let commandId;try{commandId=command?.commandId}catch{continue}typeof commandId!="string"||commandId.trim()===""||seen.has(commandId)||(seen.add(commandId),this.normalizedRows.push(command),this.normalizedCommandIds.set(command,commandId))}}return this.normalizedRows}get searchHaystacks(){const locale=this.effectiveLocale,commands=this.effectiveCommands;return(this.haystacksFor!==commands||this.haystacksLocale!==locale)&&(this.haystacksFor=commands,this.haystacksLocale=locale,this.haystacks=commands.map(command=>[command.label,command.description??"",command.group??"",...command.keywords??[]].join(" ").toLocaleLowerCase(locale))),this.haystacks}willUpdate(changed){super.willUpdate(changed),changed.has("open")&&(this.open?this.activateOverlay():(this.overlay?.deactivate(),this.overlay=void 0));const rows=this.filtered;let nextIndex=this.activeCommandId?rows.findIndex(command=>this.normalizedCommandIds.get(command)===this.activeCommandId):-1;if(nextIndex<0||rows[nextIndex]?.disabled){const start=Math.min(Math.max(this.activeIndex,0),Math.max(0,rows.length-1));nextIndex=this.seekEnabled(rows,start,1),nextIndex===-1&&(nextIndex=this.seekEnabled(rows,start-1,-1))}this.activeIndex=nextIndex,this.activeCommandId=nextIndex>=0?this.normalizedCommandIds.get(rows[nextIndex]):void 0}updated(changed){super.updated(changed),changed.has("open")&&this.open&&this.overlay?.focusInitial(),changed.has("activeIndex")&&(this.renderRoot.querySelector('[part="command"][data-active="true"]')?.scrollIntoView({block:"nearest"}),this.scrollActiveIntoView());const list=this.renderRoot.querySelector('[part="list"]');this.observeList(list??void 0)}observeList(list){list!==this.observedList&&(this.observedList&&this.listResizeObserver?.unobserve(this.observedList),this.clearPitchSentinels(),this.observedList=list,list&&(this.listResizeObserver?.observe(list),queueMicrotask(()=>{this.isConnected&&this.observedList===list&&this.measureRowPitch()}))),this.observePitchSentinels()}observePitchSentinels(){const row=this.renderRoot.querySelector('[part="command"]')??void 0,group=this.renderRoot.querySelector('[part="group"]')??void 0;row!==this.observedRow&&(this.observedRow&&this.listResizeObserver?.unobserve(this.observedRow),this.observedRow=row,row&&this.listResizeObserver?.observe(row)),group!==this.observedGroup&&(this.observedGroup&&this.listResizeObserver?.unobserve(this.observedGroup),this.observedGroup=group,group&&this.listResizeObserver?.observe(group))}clearPitchSentinels(){this.observedRow&&this.listResizeObserver?.unobserve(this.observedRow),this.observedGroup&&this.listResizeObserver?.unobserve(this.observedGroup),this.observedRow=void 0,this.observedGroup=void 0}measureRowPitch(){const style=this.ownerDocument.defaultView?.getComputedStyle(this);if(!style)return;const row=resolveCssLength(style.getPropertyValue("--lr-command-palette-row-height").trim()||style.getPropertyValue("--_lr-command-palette-row-height").trim(),{host:this}),group=resolveCssLength(style.getPropertyValue("--lr-command-palette-group-height").trim()||style.getPropertyValue("--_lr-command-palette-group-height").trim(),{host:this});row!==void 0&&row>0&&row!==this.rowPitch&&(this.rowPitch=row),group!==void 0&&group>0&&group!==this.groupPitch&&(this.groupPitch=group)}scheduleRowPitchMeasurement(){if(this.rowPitchFrame!==void 0)return;const view=this.runtimeWindow??this.ownerDocument.defaultView;if(!view){this.measureRowPitch();return}this.rowPitchFrame=view.requestAnimationFrame(()=>{this.rowPitchFrame=void 0,this.isConnected&&this.measureRowPitch()})}connectedCallback(){super.connectedCallback();const view=this.ownerDocument.defaultView;this.runtimeWindow=view??void 0,view&&(registerHotkeyOwner(view,this),view.addEventListener("keydown",this.onGlobalKeyDown));const ResizeObserverCtor=view?.ResizeObserver;if(ResizeObserverCtor&&view){let observer;observer=new ResizeObserverCtor(entries=>{if(this.listResizeObserver!==observer||this.runtimeWindow!==view)return;this.scheduleRowPitchMeasurement();const entry=entries.find(candidate=>candidate.target===this.observedList);if(!entry)return;const height=entry.borderBoxSize?.[0]?.blockSize??entry.contentRect.height;height>0&&this.listViewportHeight!==height&&(this.listViewportHeight=height)}),this.listResizeObserver=observer}else this.listResizeObserver=void 0;this.hasUpdated&&this.observeList(this.renderRoot.querySelector('[part="list"]')??void 0),this.hasUpdated&&this.open&&(this.activateOverlay(),queueMicrotask(()=>this.overlay?.focusInitial()))}disconnectedCallback(){super.disconnectedCallback();const view=this.runtimeWindow;view&&(unregisterHotkeyOwner(view,this),view.removeEventListener("keydown",this.onGlobalKeyDown)),this.overlay?.suspend(),this.listResizeObserver?.disconnect(),this.listResizeObserver=void 0,this.observedList=void 0,this.observedRow=void 0,this.observedGroup=void 0,this.listScrollFrame!==void 0&&(view?.cancelAnimationFrame(this.listScrollFrame),this.listScrollFrame=void 0),this.rowPitchFrame!==void 0&&(view?.cancelAnimationFrame(this.rowPitchFrame),this.rowPitchFrame=void 0),this.runtimeWindow=void 0}activateOverlay(){if(this.overlay?.isActive()){this.overlay.resume();return}this.overlay=activateOverlay({host:this,panel:()=>this.shadowRoot?.querySelector('[part="dialog"]')??null,onEscape:()=>this.close(),onBackdrop:()=>this.close(),lockScroll:!0,suspendWhenUnrendered:!0})}openPalette(){this.requestOpen(!0)}close(){this.requestOpen(!1)}requestOpen(next){if(next===this._open||this.openRequestTarget===next)return!1;this.openRequestTarget=next;const prevented=this.emit(next?"lr-open":"lr-close",null,{cancelable:!0}).defaultPrevented;return this.openRequestTarget=void 0,prevented?(this.toggleAttribute("open",this._open),!1):(next&&this.resetOpeningState(),this.commitOpen(next),!0)}resetOpeningState(){this.queryText="",this.listScrollTop=0;const rows=this.filtered;this.setActiveIndex(rows,this.seekEnabled(rows,0,1))}commitOpen(next){if(next===this._open)return;const old=this._open;this._open=next,this.requestUpdate("open",old)}registerCommand(command){return this.commands=[...this.commands,command],()=>{this.commands=this.commands.filter(item=>item!==command)}}matchesShortcut(event){const parts=this.hotkey.toLowerCase().split("+").map(part=>part.trim()),key=parts.pop();if(!key||event.key.toLowerCase()!==key)return!1;const modifiers=new Set(parts);if(modifiers.size!==parts.length||[...modifiers].some(part=>!["alt","ctrl","meta","mod","shift"].includes(part))||modifiers.has("mod")&&(modifiers.has("ctrl")||modifiers.has("meta")))return!1;const isMac=detectPlatform((this.runtimeWindow??this.ownerDocument.defaultView)?.navigator)==="mac",expectedCtrl=modifiers.has("ctrl")||modifiers.has("mod")&&!isMac,expectedMeta=modifiers.has("meta")||modifiers.has("mod")&&isMac;return event.ctrlKey===expectedCtrl&&event.metaKey===expectedMeta&&event.shiftKey===modifiers.has("shift")&&event.altKey===modifiers.has("alt")}get filtered(){const locale=this.effectiveLocale,query=this.queryText.trim().toLocaleLowerCase(locale),commands=this.effectiveCommands;if(this.filteredForCommands!==commands||this.filteredForQuery!==query||this.filteredForLocale!==locale)if(this.filteredForCommands=commands,this.filteredForQuery=query,this.filteredForLocale=locale,!query)this.filteredRows=[...commands];else{const haystacks=this.searchHaystacks;this.filteredRows=commands.filter((_,index)=>haystacks[index].includes(query))}return this.filteredRows}select(command){command.disabled||(this.emit("lr-select",{command}),command.onSelect?.(),this.close())}seekEnabled(rows,from,step){for(let index=from;index>=0&&index<rows.length;index+=step)if(!rows[index].disabled)return index;return-1}setActiveIndex(rows,index){this.activeIndex=index,this.activeCommandId=index>=0?this.normalizedCommandIds.get(rows[index]):void 0}get resultModel(){const rows=this.filtered;if(this.resultModelFor===rows&&this.resultModelRowPitch===this.rowPitch&&this.resultModelGroupPitch===this.groupPitch&&this.resultModelCache)return this.resultModelCache;const resultRows=[],groups=[];let top=0,previousGroup,group;for(let index=0;index<rows.length;index++){const command=rows[index],label=command.group??"";(!group||label!==previousGroup)&&(group={index:groups.length,label,headingTop:label?top:void 0,rows:[]},groups.push(group),previousGroup=label,label&&(top+=this.groupPitch));const row={command,index,top,groupIndex:group.index};group.rows.push(row),resultRows.push(row),top+=this.rowPitch}return this.resultModelFor=rows,this.resultModelRowPitch=this.rowPitch,this.resultModelGroupPitch=this.groupPitch,this.resultModelCache={rows:resultRows,groups,totalHeight:top},this.resultModelCache}visibleGroups(model){if(model.rows.length===0)return[];const minimum=Math.max(0,this.listScrollTop-this.rowPitch*RESULT_OVERSCAN_ROWS),maximum=this.listScrollTop+this.listViewportHeight+this.rowPitch*RESULT_OVERSCAN_ROWS;let low=0,high=model.rows.length-1;for(;low<high;){const middle=low+high>>1;model.rows[middle].top+this.rowPitch<minimum?low=middle+1:high=middle}const visibleIndexes=new Set;for(let index=low;index<model.rows.length&&!(model.rows[index].top>maximum);index++)visibleIndexes.add(index);return this.activeIndex>=0&&visibleIndexes.add(this.activeIndex),model.groups.map(entry=>({...entry,rows:entry.rows.filter(row=>visibleIndexes.has(row.index))})).filter(entry=>entry.rows.length>0)}optionId(index){return`${this.listId}-opt-${index}`}scrollActiveIntoView(){if(this.activeIndex<0)return;const list=this.renderRoot.querySelector('[part="list"]'),row=this.resultModel.rows[this.activeIndex];if(!list||!row)return;const top=row.top,bottom=top+this.rowPitch;top<list.scrollTop?list.scrollTop=top:bottom>list.scrollTop+list.clientHeight&&(list.scrollTop=Math.max(0,bottom-list.clientHeight))}renderCommand(row,total){const command=row.command,active=row.index===this.activeIndex;return html`<button
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{detectPlatform}from"../../../internal/platform.js";import{nextId}from"../../../internal/a11y.js";import{activateOverlay}from"../../../internal/overlay-manager.js";import{styles}from"./command-palette.styles.js";import{resolveCssLength}from"../../../internal/css-length.js";import{LYRA_DEFAULT_commandPaletteEmpty,LYRA_DEFAULT_commandPaletteLabel,LYRA_DEFAULT_commandPalettePlaceholder,LYRA_DEFAULT_commandPaletteResults}from"../../../internal/default-strings.generated.js";const COMMAND_ROW_HEIGHT=48,GROUP_ROW_HEIGHT=32,RESULT_OVERSCAN_ROWS=6,hotkeyOwners=new WeakMap;function registerHotkeyOwner(view,palette){const owners=hotkeyOwners.get(view)??[];hotkeyOwners.set(view,[...owners.filter(candidate=>candidate!==palette),palette])}function unregisterHotkeyOwner(view,palette){const owners=hotkeyOwners.get(view)?.filter(candidate=>candidate!==palette)??[];owners.length?hotkeyOwners.set(view,owners):hotkeyOwners.delete(view)}class LyraCommandPalette extends LyraElement{constructor(){super(...arguments),this._open=!1,this.commands=[],this.hotkey="mod+k",this.queryText="",this.activeIndex=0,this.listScrollTop=0,this.listViewportHeight=COMMAND_ROW_HEIGHT*10,this.rowPitch=COMMAND_ROW_HEIGHT,this.groupPitch=GROUP_ROW_HEIGHT,this.listId=nextId("command-list"),this.haystacksLocale="",this.haystacks=[],this.filteredForQuery="",this.filteredForLocale="",this.filteredRows=[],this.normalizedRows=[],this.normalizedCommandIds=new Map,this.onGlobalKeyDown=event=>{if(event.repeat||event.isComposing||event.keyCode===229)return;const view=this.runtimeWindow;if(!view||!this.matchesShortcut(event))return;const owners=hotkeyOwners.get(view)??[];let owner;for(let index=owners.length-1;index>=0;index-=1){const candidate=owners[index];if(candidate.isConnected&&candidate.matchesShortcut(event)){owner=candidate;break}}owner===this&&(event.preventDefault(),this.openPalette())},this.onKeyDown=event=>{if(event.isComposing||event.keyCode===229)return;const rows=this.filtered;if(event.key==="ArrowDown"){event.preventDefault();const next=this.seekEnabled(rows,this.activeIndex+1,1);next!==-1&&this.setActiveIndex(rows,next)}else if(event.key==="ArrowUp"){event.preventDefault();const previous=this.seekEnabled(rows,this.activeIndex-1,-1);previous!==-1&&this.setActiveIndex(rows,previous)}else if(event.key==="Enter"){const active=rows[this.activeIndex];active&&(event.preventDefault(),this.select(active))}},this.onInput=event=>{event.stopPropagation(),this.queryText=event.target.value,this.listScrollTop=0;const list=this.renderRoot.querySelector('[part="list"]');list&&(list.scrollTop=0);const rows=this.filtered;this.setActiveIndex(rows,this.seekEnabled(rows,0,1))},this.onSearchFocus=()=>{this.emit("focus")},this.onSearchBlur=()=>{this.emit("blur")},this.onListScroll=event=>{const list=event.currentTarget;if(this.listScrollFrame!==void 0)return;const view=this.runtimeWindow??this.ownerDocument.defaultView;if(!view){this.listScrollTop=list.scrollTop;return}this.listScrollFrame=view.requestAnimationFrame(()=>{this.listScrollFrame=void 0,this.listScrollTop=list.scrollTop})}}static{this.defaultStrings={...super.defaultStrings,commandPaletteEmpty:LYRA_DEFAULT_commandPaletteEmpty,commandPaletteLabel:LYRA_DEFAULT_commandPaletteLabel,commandPalettePlaceholder:LYRA_DEFAULT_commandPalettePlaceholder,commandPaletteResults:LYRA_DEFAULT_commandPaletteResults}}static{this.ownedCollectionProperties=Object.freeze(["commands"])}static{this.identityCollectionProperties=Object.freeze(["commands"])}static{this.identityEventDetailProperties=Object.freeze({"lr-select":Object.freeze(["command"])})}static{this.styles=[LyraElement.styles,styles]}static{this.immutableEventDetails=Object.freeze(["lr-select"])}get open(){return this._open}set open(next){const normalized=!!next;if(normalized!==this._open){if(!this.hasUpdated){this.commitOpen(normalized);return}this.requestOpen(normalized)}}get effectiveCommands(){if(this.normalizedForCommands!==this.commands){this.normalizedForCommands=this.commands;const seen=new Set;this.normalizedRows=[],this.normalizedCommandIds=new Map;for(const command of this.commands??[]){let commandId;try{commandId=command?.commandId}catch{continue}typeof commandId!="string"||commandId.trim()===""||seen.has(commandId)||(seen.add(commandId),this.normalizedRows.push(command),this.normalizedCommandIds.set(command,commandId))}}return this.normalizedRows}get searchHaystacks(){const locale=this.effectiveLocale,commands=this.effectiveCommands;return(this.haystacksFor!==commands||this.haystacksLocale!==locale)&&(this.haystacksFor=commands,this.haystacksLocale=locale,this.haystacks=commands.map(command=>[command.label,command.description??"",command.group??"",...command.keywords??[]].join(" ").toLocaleLowerCase(locale))),this.haystacks}willUpdate(changed){super.willUpdate(changed),changed.has("open")&&(this.open?this.activateOverlay():(this.overlay?.deactivate(),this.overlay=void 0));const rows=this.filtered;let nextIndex=this.activeCommandId?rows.findIndex(command=>this.normalizedCommandIds.get(command)===this.activeCommandId):-1;if(nextIndex<0||rows[nextIndex]?.disabled){const start=Math.min(Math.max(this.activeIndex,0),Math.max(0,rows.length-1));nextIndex=this.seekEnabled(rows,start,1),nextIndex===-1&&(nextIndex=this.seekEnabled(rows,start-1,-1))}this.activeIndex=nextIndex,this.activeCommandId=nextIndex>=0?this.normalizedCommandIds.get(rows[nextIndex]):void 0}updated(changed){super.updated(changed),changed.has("open")&&this.open&&this.overlay?.focusInitial(),changed.has("activeIndex")&&(this.renderRoot.querySelector('[part="command"][data-active="true"]')?.scrollIntoView({block:"nearest"}),this.scrollActiveIntoView());const list=this.renderRoot.querySelector('[part="list"]');this.observeList(list??void 0)}observeList(list){list!==this.observedList&&(this.observedList&&this.listResizeObserver?.unobserve(this.observedList),this.clearPitchSentinels(),this.observedList=list,list&&(this.listResizeObserver?.observe(list),queueMicrotask(()=>{this.isConnected&&this.observedList===list&&this.measureRowPitch()}))),this.observePitchSentinels()}observePitchSentinels(){const row=this.renderRoot.querySelector('[part="command"]')??void 0,group=this.renderRoot.querySelector('[part="group"]')??void 0;row!==this.observedRow&&(this.observedRow&&this.listResizeObserver?.unobserve(this.observedRow),this.observedRow=row,row&&this.listResizeObserver?.observe(row)),group!==this.observedGroup&&(this.observedGroup&&this.listResizeObserver?.unobserve(this.observedGroup),this.observedGroup=group,group&&this.listResizeObserver?.observe(group))}clearPitchSentinels(){this.observedRow&&this.listResizeObserver?.unobserve(this.observedRow),this.observedGroup&&this.listResizeObserver?.unobserve(this.observedGroup),this.observedRow=void 0,this.observedGroup=void 0}measureRowPitch(){const style=this.ownerDocument.defaultView?.getComputedStyle(this);if(!style)return;const row=resolveCssLength(style.getPropertyValue("--lr-command-palette-row-height").trim()||style.getPropertyValue("--_lr-command-palette-row-height").trim(),{host:this}),group=resolveCssLength(style.getPropertyValue("--lr-command-palette-group-height").trim()||style.getPropertyValue("--_lr-command-palette-group-height").trim(),{host:this});row!==void 0&&row>0&&row!==this.rowPitch&&(this.rowPitch=row),group!==void 0&&group>0&&group!==this.groupPitch&&(this.groupPitch=group)}scheduleRowPitchMeasurement(){if(this.rowPitchFrame!==void 0)return;const view=this.runtimeWindow??this.ownerDocument.defaultView;if(!view){this.measureRowPitch();return}this.rowPitchFrame=view.requestAnimationFrame(()=>{this.rowPitchFrame=void 0,this.isConnected&&this.measureRowPitch()})}connectedCallback(){super.connectedCallback();const view=this.ownerDocument.defaultView;this.runtimeWindow=view??void 0,view&&(registerHotkeyOwner(view,this),view.addEventListener("keydown",this.onGlobalKeyDown));const ResizeObserverCtor=view?.ResizeObserver;if(ResizeObserverCtor&&view){let observer;observer=new ResizeObserverCtor(entries=>{if(this.listResizeObserver!==observer||this.runtimeWindow!==view)return;this.scheduleRowPitchMeasurement();const entry=entries.find(candidate=>candidate.target===this.observedList);if(!entry)return;const height=entry.borderBoxSize?.[0]?.blockSize??entry.contentRect.height;height>0&&this.listViewportHeight!==height&&(this.listViewportHeight=height)}),this.listResizeObserver=observer}else this.listResizeObserver=void 0;this.hasUpdated&&this.observeList(this.renderRoot.querySelector('[part="list"]')??void 0),this.hasUpdated&&this.open&&(this.activateOverlay(),queueMicrotask(()=>this.overlay?.focusInitial()))}disconnectedCallback(){super.disconnectedCallback();const view=this.runtimeWindow;view&&(unregisterHotkeyOwner(view,this),view.removeEventListener("keydown",this.onGlobalKeyDown)),this.overlay?.suspend(),this.listResizeObserver?.disconnect(),this.listResizeObserver=void 0,this.observedList=void 0,this.observedRow=void 0,this.observedGroup=void 0,this.listScrollFrame!==void 0&&(view?.cancelAnimationFrame(this.listScrollFrame),this.listScrollFrame=void 0),this.rowPitchFrame!==void 0&&(view?.cancelAnimationFrame(this.rowPitchFrame),this.rowPitchFrame=void 0),this.runtimeWindow=void 0}activateOverlay(){if(this.overlay?.isActive()){this.overlay.resume();return}this.overlay=activateOverlay({host:this,panel:()=>this.shadowRoot?.querySelector('[part="dialog"]')??null,onEscape:()=>this.close(),onBackdrop:()=>this.close(),lockScroll:!0,suspendWhenUnrendered:!0})}openPalette(){this.requestOpen(!0)}close(){this.requestOpen(!1)}requestOpen(next){if(next===this._open||this.openRequestTarget===next)return!1;this.openRequestTarget=next;const prevented=this.emit(next?"lr-open":"lr-close",null,{cancelable:!0}).defaultPrevented;return this.openRequestTarget=void 0,prevented?(this.toggleAttribute("open",this._open),!1):(next&&this.resetOpeningState(),this.commitOpen(next),!0)}resetOpeningState(){this.queryText="",this.listScrollTop=0;const rows=this.filtered;this.setActiveIndex(rows,this.seekEnabled(rows,0,1))}commitOpen(next){if(next===this._open)return;const old=this._open;this._open=next,this.requestUpdate("open",old)}registerCommand(command){return this.commands=[...this.commands,command],()=>{this.commands=this.commands.filter(item=>item!==command)}}matchesShortcut(event){const parts=this.hotkey.toLowerCase().split("+").map(part=>part.trim()),key=parts.pop();if(!key||event.key.toLowerCase()!==key)return!1;const modifiers=new Set(parts);if(modifiers.size!==parts.length||[...modifiers].some(part=>!["alt","ctrl","meta","mod","shift"].includes(part))||modifiers.has("mod")&&(modifiers.has("ctrl")||modifiers.has("meta")))return!1;const isMac=detectPlatform((this.runtimeWindow??this.ownerDocument.defaultView)?.navigator)==="mac",expectedCtrl=modifiers.has("ctrl")||modifiers.has("mod")&&!isMac,expectedMeta=modifiers.has("meta")||modifiers.has("mod")&&isMac;return event.ctrlKey===expectedCtrl&&event.metaKey===expectedMeta&&event.shiftKey===modifiers.has("shift")&&event.altKey===modifiers.has("alt")}get filtered(){const locale=this.effectiveLocale,query=this.queryText.trim().toLocaleLowerCase(locale),commands=this.effectiveCommands;if(this.filteredForCommands!==commands||this.filteredForQuery!==query||this.filteredForLocale!==locale)if(this.filteredForCommands=commands,this.filteredForQuery=query,this.filteredForLocale=locale,!query)this.filteredRows=[...commands];else{const haystacks=this.searchHaystacks;this.filteredRows=commands.filter((_,index)=>haystacks[index].includes(query))}return this.filteredRows}select(command){command.disabled||(this.emit("lr-select",{command}),command.onSelect?.(),this.close())}seekEnabled(rows,from,step){for(let index=from;index>=0&&index<rows.length;index+=step)if(!rows[index].disabled)return index;return-1}setActiveIndex(rows,index){this.activeIndex=index,this.activeCommandId=index>=0?this.normalizedCommandIds.get(rows[index]):void 0}get resultModel(){const rows=this.filtered;if(this.resultModelFor===rows&&this.resultModelRowPitch===this.rowPitch&&this.resultModelGroupPitch===this.groupPitch&&this.resultModelCache)return this.resultModelCache;const resultRows=[],groups=[];let top=0,previousGroup,group;for(let index=0;index<rows.length;index++){const command=rows[index],label=command.group??"";(!group||label!==previousGroup)&&(group={index:groups.length,label,headingTop:label?top:void 0,rows:[]},groups.push(group),previousGroup=label,label&&(top+=this.groupPitch));const row={command,index,top,groupIndex:group.index};group.rows.push(row),resultRows.push(row),top+=this.rowPitch}return this.resultModelFor=rows,this.resultModelRowPitch=this.rowPitch,this.resultModelGroupPitch=this.groupPitch,this.resultModelCache={rows:resultRows,groups,totalHeight:top},this.resultModelCache}visibleGroups(model){if(model.rows.length===0)return[];const minimum=Math.max(0,this.listScrollTop-this.rowPitch*RESULT_OVERSCAN_ROWS),maximum=this.listScrollTop+this.listViewportHeight+this.rowPitch*RESULT_OVERSCAN_ROWS;let low=0,high=model.rows.length-1;for(;low<high;){const middle=low+high>>1;model.rows[middle].top+this.rowPitch<minimum?low=middle+1:high=middle}const visibleIndexes=new Set;for(let index=low;index<model.rows.length&&!(model.rows[index].top>maximum);index++)visibleIndexes.add(index);return this.activeIndex>=0&&visibleIndexes.add(this.activeIndex),model.groups.map(entry=>({...entry,rows:entry.rows.filter(row=>visibleIndexes.has(row.index))})).filter(entry=>entry.rows.length>0)}optionId(index){return`${this.listId}-opt-${index}`}scrollActiveIntoView(){if(this.activeIndex<0)return;const list=this.renderRoot.querySelector('[part="list"]'),row=this.resultModel.rows[this.activeIndex];if(!list||!row)return;const top=row.top,bottom=top+this.rowPitch;top<list.scrollTop?list.scrollTop=top:bottom>list.scrollTop+list.clientHeight&&(list.scrollTop=Math.max(0,bottom-list.clientHeight))}renderCommand(row,total){const command=row.command,active=row.index===this.activeIndex;return html`<button
2
2
  id=${this.optionId(row.index)}
3
3
  part="command"
4
4
  role="option"
@@ -40,6 +40,8 @@ var __decorate=function(decorators,target,key,desc){var c=arguments.length,r=c<3
40
40
  aria-controls=${this.listId}
41
41
  aria-activedescendant=${activeId}
42
42
  @input=${this.onInput}
43
+ @focus=${this.onSearchFocus}
44
+ @blur=${this.onSearchBlur}
43
45
  />
44
46
  </div>
45
47
  <div
@@ -43,11 +43,7 @@ import{css}from"lit";const styles=css`
43
43
  overflow: hidden;
44
44
  border: var(--lr-border-width-thin) solid var(--lr-color-border);
45
45
  border-radius: var(--lr-radius);
46
- /* Modal-panel surface, not the page surface -- in dark mode the two would be the same
47
- near-black and the palette would read as a scrim with a floating list on it. */
48
46
  background: var(--lr-color-surface-overlay);
49
- /* Modal layer, top step: the palette floats free on all four edges over its own scrim,
50
- exactly like a centered lr-dialog. */
51
47
  box-shadow: var(--lr-shadow-xl);
52
48
  color: var(--lr-color-text);
53
49
  }
@@ -142,9 +138,6 @@ import{css}from"lit";const styles=css`
142
138
  var(--lr-color-brand-quiet)
143
139
  );
144
140
  }
145
- /* Same fill as hover (including a consumer's own --lr-command-palette-active-bg), mixed further
146
- toward --lr-color-mix-partner so the press reads as a deeper step of the same highlight. Kept
147
- at the hover rule's own zeroed specificity for the same reason it was zeroed. */
148
141
  :where([part="command"]):active:where(:not(:disabled)) {
149
142
  background: color-mix(
150
143
  in oklab,
@@ -152,18 +145,13 @@ import{css}from"lit";const styles=css`
152
145
  var(--lr-color-mix-partner) var(--lr-color-mix-active)
153
146
  );
154
147
  }
155
- /* Inline var() fallback rather than a :host-declared property, so a consumer can set it on any
156
- ancestor without a :host declaration shadowing that. ::part(command)[data-active='true'] is
157
- invalid CSS (an attribute selector cannot follow ::part), so highlighting the active row used to
158
- require hijacking the shared --lr-color-brand-quiet token, repainting everything else that reads
159
- it. Unset, it falls back to that token, so the rendering is unchanged. */
160
148
  [part="command"][data-active="true"] {
161
149
  background: var(
162
150
  --lr-command-palette-active-bg,
163
151
  var(--lr-color-brand-quiet)
164
152
  );
165
153
  }
166
- :where([part="command"][data-active="true"]):active:where(:not(:disabled)) {
154
+ [part="command"][data-active="true"]:active:where(:not(:disabled)) {
167
155
  background: color-mix(
168
156
  in oklab,
169
157
  var(--lr-command-palette-active-bg, var(--lr-color-brand-quiet)),
@@ -7,9 +7,6 @@ import{css}from"lit";const styles=css`
7
7
  vertical-align: middle;
8
8
  }
9
9
 
10
- /* Query container so the @container rule below reacts to this group's own allocated width,
11
- matching lr-button-group's own container-query approach -- opt-in only, see the class doc's
12
- responsive property. */
13
10
  :host([responsive]) {
14
11
  container-type: inline-size;
15
12
  contain-intrinsic-inline-size: var(--lr-size-12rem);
@@ -18,10 +15,6 @@ import{css}from"lit";const styles=css`
18
15
  [part='base'] {
19
16
  display: inline-flex;
20
17
  flex-wrap: wrap;
21
- /* center, not stretch: unlike lr-button-group's uniform-height button rows,
22
- this group's children are commonly different intrinsic heights (a select, a
23
- segmented control, a plain button) -- stretching would misalign them since
24
- none of those components re-center their own content inside a taller host box. */
25
18
  align-items: center;
26
19
  gap: var(--lr-control-group-gap, var(--lr-space-xs));
27
20
  max-inline-size: 100%;
@@ -1,9 +1,6 @@
1
1
  import{css}from"lit";const styles=css`
2
2
  :host {
3
3
  display: block;
4
- /* Query container so the @container rule below reacts to this grid's own allocated inline
5
- size (a dashboard-grid is commonly embedded in a panel of varying width, not the viewport)
6
- -- same convention as lr-button-group/lr-control-group's own container-query approach. */
7
4
  container-type: inline-size;
8
5
  contain-intrinsic-inline-size: var(--lr-size-20rem);
9
6
  min-inline-size: 0;
@@ -47,23 +44,10 @@ import{css}from"lit";const styles=css`
47
44
  overflow-wrap: anywhere;
48
45
  }
49
46
 
50
- /* The resize handle is absolutely positioned and therefore cannot contribute to the cell's
51
- intrinsic block size. Apply the shared action floor only while that handle actually exists;
52
- readonly and locked short cells keep their content-derived height in the stacked layout. */
53
47
  [part="cell"][data-resizable] {
54
48
  min-block-size: var(--lr-icon-button-size);
55
49
  }
56
50
 
57
- /* A cell's slotted content (default lr-widget, or a consumer's own opaque markup) commonly
58
- fills the whole cell -- a background-color hover would paint underneath it and never be
59
- seen. An outline draws outside the box like [part='cell'][data-collision]'s own outline
60
- below, so it stays visible above any occluding content, matching the :focus-visible ring's
61
- own reliably-visible treatment for the exact same real, keyboard-navigable/draggable
62
- target. */
63
- /* no-pressed-state: the cell's real pressed interaction is a drag, which already has its own
64
- [data-dragging] treatment below; a plain :active rule would additionally fire for every press
65
- landing on the slotted widget's own buttons, since :active matches the ancestors of whatever
66
- was pressed. */
67
51
  [part="cell"]:hover {
68
52
  outline: var(--lr-border-width-thin) solid
69
53
  var(
@@ -89,8 +73,6 @@ import{css}from"lit";const styles=css`
89
73
  [part="cell"][data-dragging],
90
74
  [part="cell"][data-resizing] {
91
75
  z-index: var(--lr-layer-content);
92
- /* A tile being dragged or resized has left the resting plane and is riding above its
93
- neighbours, so it takes the overlay step rather than the card step its siblings use. */
94
76
  box-shadow: var(--lr-dashboard-grid-interaction-shadow, var(--lr-shadow-m));
95
77
  }
96
78
 
@@ -100,6 +82,12 @@ import{css}from"lit";const styles=css`
100
82
  outline-offset: var(--lr-size-2px);
101
83
  }
102
84
 
85
+ [part="cell"][data-collision]:focus-visible {
86
+ box-shadow:
87
+ 0 0 0 var(--lr-focus-ring-width) var(--lr-focus-ring-color),
88
+ var(--lr-dashboard-grid-interaction-shadow, var(--lr-shadow-m));
89
+ }
90
+
103
91
  [part="resize-handle"] {
104
92
  position: absolute;
105
93
  inset-block-end: 0;
@@ -118,9 +106,6 @@ import{css}from"lit";const styles=css`
118
106
  [part="resize-handle"]:hover {
119
107
  background: var(--lr-color-brand-quiet);
120
108
  }
121
- /* Unlike [part="cell"] above, this handle is a leaf button with nothing slotted inside it, so
122
- :active means exactly one thing here: the resize gesture is under way. Pointer capture holds
123
- it for the whole drag. */
124
109
  [part="resize-handle"]:active {
125
110
  background: color-mix(
126
111
  in oklab,
@@ -133,10 +118,6 @@ import{css}from"lit";const styles=css`
133
118
  cursor: nesw-resize;
134
119
  }
135
120
 
136
- /* Below the breakpoint, drop the two-dimensional grid in favor of a single stacked column --
137
- each cell's authored x/y/w/h stops driving placement (document flow takes over), but the
138
- cells still render in row-major spatial DOM order, so the reading order stays the same
139
- one the grid itself would have shown. */
140
121
  @container (max-inline-size: 40rem) {
141
122
  [part="base"] {
142
123
  display: flex;
@@ -11,6 +11,10 @@ export interface LyraAccordionEventMap {
11
11
  'lr-after-expand': CustomEvent<LyraEventDetailSnapshot<LyraAccordionEventDetail>>;
12
12
  'lr-collapse': CustomEvent<LyraEventDetailSnapshot<LyraAccordionEventDetail>>;
13
13
  'lr-after-collapse': CustomEvent<LyraEventDetailSnapshot<LyraAccordionEventDetail>>;
14
+ 'lr-toggle-request': CustomEvent<LyraEventDetailSnapshot<{
15
+ readonly collapsed: boolean;
16
+ readonly item: LyraAccordionItem;
17
+ }>>;
14
18
  }
15
19
  /**
16
20
  * `<lr-accordion>` — coordinates accessible, vertically stacked expandable sections.
@@ -31,6 +35,14 @@ export interface LyraAccordionEventMap {
31
35
  * @event lr-after-expand - Emitted after a direct item finishes expanding. `detail: { item }`.
32
36
  * @event lr-collapse - Emitted before a direct item collapses. `detail: { item }`. Cancelable.
33
37
  * @event lr-after-collapse - Emitted after a direct item finishes collapsing. `detail: { item }`.
38
+ * @event lr-toggle-request - Emitted alongside `lr-expand`/`lr-collapse` for the same proposed
39
+ * transition, with the direction in the detail instead of the event name -- the same
40
+ * `{ collapsed }` shape `<lr-code-block>` and `<lr-chat-message>` use for their own
41
+ * `lr-toggle-request`, plus `item` to identify which child is proposed to change.
42
+ * `detail: { collapsed, item }`. Cancelable; a listener calling `preventDefault()` on either
43
+ * `lr-toggle-request` or the matching `lr-expand`/`lr-collapse` vetoes the transition, and both
44
+ * always fire so a listener on one name never misses a transition the other name already
45
+ * vetoed.
34
46
  * @csspart base - The accordion wrapper.
35
47
  * @cssprop [--lr-accordion-outlined-bg=var(--lr-color-surface)] - Outlined group background.
36
48
  * @cssprop [--lr-accordion-outlined-border-color=var(--lr-color-border)] - Outlined border color.
@@ -50,6 +62,7 @@ export declare class LyraAccordion extends LyraElement<LyraAccordionEventMap> {
50
62
  'lr-after-expand': readonly string[];
51
63
  'lr-collapse': readonly string[];
52
64
  'lr-after-collapse': readonly string[];
65
+ 'lr-toggle-request': readonly string[];
53
66
  }>;
54
67
  protected static readonly immutableEventDetails: readonly string[];
55
68
  static styles: import("lit").CSSResultGroup[];
@@ -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}from"lit/decorators.js";import{composedParentElement,deepActiveElementIn}from"../../../internal/active-element.js";import{isAccessibilitySubtreeExcluded}from"../../../internal/accessibility-visibility.js";import{LyraElement}from"../../../internal/lyra-element.js";import{tag}from"../../../internal/prefix.js";import{applyAccordionItemOwnerState,bindAccordionItemOwner,releaseAccordionItemOwner}from"./accordion-owner.js";import{styles}from"./accordion.styles.js";function normalizeMode(value){return value==="single"||value==="single-collapsible"?value:"multiple"}class LyraAccordion extends LyraElement{constructor(){super(...arguments),this.#_mode="multiple",this.panels=new Set,this.#panelsInitialized=!1,this.iconPlacement="end",this.headingLevel="3",this.appearance="outlined",this.#handleSlotChange=event=>{this.#bindPanels(event.target.assignedElements({flatten:!0}))},this.#handleOwnedItemStateChange=item=>{this.panels.has(item)&&queueMicrotask(()=>{this.panels.has(item)&&this.#reconcileRovingFocus(item)})},this.handleFocusIn=event=>{const item=this.#itemFor(event);!item||!this.#isNavigableItem(item)||(this.#lastFocusedItem=item,this.#syncRovingTabIndex(item))},this.handleKeyDown=event=>{const current=this.#itemFor(event);if(!current||!this.#isNavigableItem(current)||!this.#itemTriggerOwnsEvent(current,event))return;const items=this.#navigableItems();if(items.length===0)return;const currentIndex=items.indexOf(current);if(currentIndex<0)return;const forwardKey=this.effectiveDirection==="rtl"?"ArrowLeft":"ArrowRight",backwardKey=this.effectiveDirection==="rtl"?"ArrowRight":"ArrowLeft";let nextIndex;if(event.key==="ArrowDown"||event.key===forwardKey?nextIndex=(currentIndex+1)%items.length:event.key==="ArrowUp"||event.key===backwardKey?nextIndex=(currentIndex-1+items.length)%items.length:event.key==="Home"?nextIndex=0:event.key==="End"&&(nextIndex=items.length-1),nextIndex===void 0)return;event.preventDefault(),event.stopPropagation();const next=items[nextIndex];this.#syncRovingTabIndex(next),next.focus()},this.#handleOwnedItemTransition=(item,expanded,source)=>!this.panels.has(item)||item.disabled||!expanded&&source==="user"&&this.mode==="single"?!1:expanded?this.emit("lr-expand",{item},{cancelable:!0}).defaultPrevented?!1:this.mode==="multiple"||this.#collapseSiblings(item):!this.emit("lr-collapse",{item},{cancelable:!0}).defaultPrevented,this.#handleOwnedItemTransitionSettled=(item,expanded)=>{!this.panels.has(item)||item.expanded!==expanded||this.emit(expanded?"lr-after-expand":"lr-after-collapse",{item})}}static{this.identityEventDetailProperties=Object.freeze({"lr-expand":Object.freeze(["item"]),"lr-after-expand":Object.freeze(["item"]),"lr-collapse":Object.freeze(["item"]),"lr-after-collapse":Object.freeze(["item"])})}static{this.immutableEventDetails=Object.freeze(["lr-expand","lr-after-expand","lr-collapse","lr-after-collapse"])}static{this.styles=[LyraElement.styles,styles]}#_mode;#rovingItem;#lastFocusedItem;#availabilityObserver;#panelsInitialized;get mode(){return this.#_mode}set mode(next){const normalized=normalizeMode(next),old=this.#_mode;if(normalized!==old){if(this.#panelsInitialized&&normalized!=="multiple"&&!this.#reconcileExpandedPanels(!1,normalized)){this.requestUpdate("mode",normalized);return}this.#_mode=normalized,this.requestUpdate("mode",old)}}connectedCallback(){super.connectedCallback(),this.#armAvailabilityObserver(),this.hasUpdated&&queueMicrotask(()=>{if(!this.isConnected)return;const slot=this.renderRoot.querySelector("slot");slot&&this.#bindPanels(slot.assignedElements({flatten:!0}))})}disconnectedCallback(){this.#resetAvailabilityObserver();for(const panel of this.panels)releaseAccordionItemOwner(panel,this);this.panels.clear(),this.#rovingItem=void 0,this.#lastFocusedItem=void 0,super.disconnectedCallback()}updated(changed){super.updated(changed),(changed.has("iconPlacement")||changed.has("headingLevel")||changed.has("appearance"))&&this.#syncPresentation()}expandAll(){if(this.mode==="multiple")for(const panel of this.panels)panel.disabled||panel.expanded||panel.expand()}collapseAll(){for(const panel of this.panels)panel.expanded&&this.#requestCollapse(panel)}#bindPanels(assigned){const itemTag=tag("accordion-item"),next=assigned.filter(element=>element.localName===itemTag),previous=new Set(this.panels);this.panels.clear();for(const panel of next)this.panels.add(panel);for(const panel of previous)this.panels.has(panel)||releaseAccordionItemOwner(panel,this);this.#syncPresentation(),this.#reconcileExpandedPanels(!this.#panelsInitialized),this.#panelsInitialized=!0,this.#syncRovingTabIndex()}#syncPresentation(){for(const panel of this.panels)bindAccordionItemOwner(panel,{owner:this,iconPlacement:this.iconPlacement,headingLevel:this.headingLevel,appearance:this.appearance,requestTransition:this.#handleOwnedItemTransition,transitionSettled:this.#handleOwnedItemTransitionSettled,stateChanged:this.#handleOwnedItemStateChange})}#reconcileExpandedPanels(silent=!1,mode=this.mode){if(mode==="multiple")return!0;let foundExpanded=!1;for(const panel of this.panels){if(!panel.expanded)continue;if(!foundExpanded){foundExpanded=!0;continue}if(!(silent?this.#performPanelState(panel,!1):this.#requestCollapse(panel)))return!1}return!0}#isNavigableItem(item){if(item.disabled)return!1;for(let current=item;current;current=composedParentElement(current))if(isAccessibilitySubtreeExcluded(current))return!1;return!0}#navigableItems(){return[...this.panels].filter(panel=>this.#isNavigableItem(panel))}#syncRovingTabIndex(preferred){const items=this.#navigableItems(),active=preferred&&items.includes(preferred)?preferred:this.#rovingItem&&items.includes(this.#rovingItem)?this.#rovingItem:items.find(item=>item.isTabbable)??items[0];active&&(this.#rovingItem=active);for(const panel of this.panels)panel.isTabbable=panel===active;return active}#nextNavigableItem(displaced){const items=[...this.panels],index=items.indexOf(displaced);return index<0?this.#navigableItems()[0]:items.slice(index+1).find(item=>this.#isNavigableItem(item))??items.slice(0,index).reverse().find(item=>this.#isNavigableItem(item))}#reconcileRovingFocus(displaced=this.#lastFocusedItem){const unavailable=displaced!==void 0&&this.panels.has(displaced)&&!this.#isNavigableItem(displaced),focused=deepActiveElementIn(this.ownerDocument),wasFocused=displaced===this.#lastFocusedItem&&(focused===null||focused===this.ownerDocument.body||focused===displaced||focused!==null&&displaced?.shadowRoot?.contains(focused)),active=this.#syncRovingTabIndex(unavailable?this.#nextNavigableItem(displaced):void 0);!unavailable||!active||!wasFocused||active.focus()}#armAvailabilityObserver(){const ownerDocument=this.ownerDocument;if(!this.isConnected||this.#availabilityObserver)return;const MutationObserverCtor=ownerDocument.defaultView?.MutationObserver;if(!MutationObserverCtor)return;const observer=new MutationObserverCtor(()=>{this.#availabilityObserver!==observer||!this.isConnected||this.ownerDocument!==ownerDocument||this.#reconcileRovingFocus()});this.#availabilityObserver=observer,observer.observe(this,{attributes:!0,subtree:!0,attributeFilter:["disabled","hidden","aria-hidden","inert","class","style"]});for(let ancestor=composedParentElement(this);ancestor;ancestor=composedParentElement(ancestor))observer.observe(ancestor,{attributes:!0,attributeFilter:["hidden","aria-hidden","inert","class","style"]})}#resetAvailabilityObserver(){this.#availabilityObserver?.disconnect(),this.#availabilityObserver=void 0}#performPanelState(panel,expanded,announce=!1){return applyAccordionItemOwnerState(panel,expanded,announce),panel.expanded===expanded}#requestCollapse(panel){return panel.expanded?this.emit("lr-collapse",{item:panel},{cancelable:!0}).defaultPrevented?!1:this.#performPanelState(panel,!1,!0):!0}#collapseSiblings(source){for(const panel of this.panels)if(!(panel===source||!panel.expanded)&&!this.#requestCollapse(panel))return!1;return!0}#handleSlotChange;#handleOwnedItemStateChange;#itemFor(event){const item=event.composedPath().find(node=>node?.nodeType===1&&node.localName===tag("accordion-item"));return item&&this.panels.has(item)?item:void 0}#itemTriggerOwnsEvent(item,event){return event.composedPath().some(node=>{if(node?.nodeType!==1)return!1;const element=node;return element.localName==="button"&&element.getRootNode()===item.shadowRoot&&element.getAttribute("part")?.split(/\s+/u).includes("button")===!0})}#handleOwnedItemTransition;#handleOwnedItemTransitionSettled;render(){return html`<div
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}from"lit/decorators.js";import{composedParentElement,deepActiveElementIn}from"../../../internal/active-element.js";import{isAccessibilitySubtreeExcluded}from"../../../internal/accessibility-visibility.js";import{LyraElement}from"../../../internal/lyra-element.js";import{tag}from"../../../internal/prefix.js";import{applyAccordionItemOwnerState,bindAccordionItemOwner,releaseAccordionItemOwner}from"./accordion-owner.js";import{styles}from"./accordion.styles.js";function normalizeMode(value){return value==="single"||value==="single-collapsible"?value:"multiple"}class LyraAccordion extends LyraElement{constructor(){super(...arguments),this.#_mode="multiple",this.panels=new Set,this.#panelsInitialized=!1,this.iconPlacement="end",this.headingLevel="3",this.appearance="outlined",this.#handleSlotChange=event=>{this.#bindPanels(event.target.assignedElements({flatten:!0}))},this.#handleOwnedItemStateChange=item=>{this.panels.has(item)&&queueMicrotask(()=>{this.panels.has(item)&&this.#reconcileRovingFocus(item)})},this.handleFocusIn=event=>{const item=this.#itemFor(event);!item||!this.#isNavigableItem(item)||(this.#lastFocusedItem=item,this.#syncRovingTabIndex(item))},this.handleKeyDown=event=>{const current=this.#itemFor(event);if(!current||!this.#isNavigableItem(current)||!this.#itemTriggerOwnsEvent(current,event))return;const items=this.#navigableItems();if(items.length===0)return;const currentIndex=items.indexOf(current);if(currentIndex<0)return;const forwardKey=this.effectiveDirection==="rtl"?"ArrowLeft":"ArrowRight",backwardKey=this.effectiveDirection==="rtl"?"ArrowRight":"ArrowLeft";let nextIndex;if(event.key==="ArrowDown"||event.key===forwardKey?nextIndex=(currentIndex+1)%items.length:event.key==="ArrowUp"||event.key===backwardKey?nextIndex=(currentIndex-1+items.length)%items.length:event.key==="Home"?nextIndex=0:event.key==="End"&&(nextIndex=items.length-1),nextIndex===void 0)return;event.preventDefault(),event.stopPropagation();const next=items[nextIndex];this.#syncRovingTabIndex(next),next.focus()},this.#handleOwnedItemTransition=(item,expanded,source)=>!this.panels.has(item)||item.disabled||!expanded&&source==="user"&&this.mode==="single"?!1:expanded?this.#emitToggleVeto(item,!1)?this.mode==="multiple"||this.#collapseSiblings(item):!1:this.#emitToggleVeto(item,!0),this.#handleOwnedItemTransitionSettled=(item,expanded)=>{!this.panels.has(item)||item.expanded!==expanded||this.emit(expanded?"lr-after-expand":"lr-after-collapse",{item})}}static{this.identityEventDetailProperties=Object.freeze({"lr-expand":Object.freeze(["item"]),"lr-after-expand":Object.freeze(["item"]),"lr-collapse":Object.freeze(["item"]),"lr-after-collapse":Object.freeze(["item"]),"lr-toggle-request":Object.freeze(["item"])})}static{this.immutableEventDetails=Object.freeze(["lr-expand","lr-after-expand","lr-collapse","lr-after-collapse","lr-toggle-request"])}static{this.styles=[LyraElement.styles,styles]}#_mode;#rovingItem;#lastFocusedItem;#availabilityObserver;#panelsInitialized;get mode(){return this.#_mode}set mode(next){const normalized=normalizeMode(next),old=this.#_mode;if(normalized!==old){if(this.#panelsInitialized&&normalized!=="multiple"&&!this.#reconcileExpandedPanels(!1,normalized)){this.requestUpdate("mode",normalized);return}this.#_mode=normalized,this.requestUpdate("mode",old)}}connectedCallback(){super.connectedCallback(),this.#armAvailabilityObserver(),this.hasUpdated&&queueMicrotask(()=>{if(!this.isConnected)return;const slot=this.renderRoot.querySelector("slot");slot&&this.#bindPanels(slot.assignedElements({flatten:!0}))})}disconnectedCallback(){this.#resetAvailabilityObserver();for(const panel of this.panels)releaseAccordionItemOwner(panel,this);this.panels.clear(),this.#rovingItem=void 0,this.#lastFocusedItem=void 0,super.disconnectedCallback()}updated(changed){super.updated(changed),(changed.has("iconPlacement")||changed.has("headingLevel")||changed.has("appearance"))&&this.#syncPresentation()}expandAll(){if(this.mode==="multiple")for(const panel of this.panels)panel.disabled||panel.expanded||panel.expand()}collapseAll(){for(const panel of this.panels)panel.expanded&&this.#requestCollapse(panel)}#bindPanels(assigned){const itemTag=tag("accordion-item"),next=assigned.filter(element=>element.localName===itemTag),previous=new Set(this.panels);this.panels.clear();for(const panel of next)this.panels.add(panel);for(const panel of previous)this.panels.has(panel)||releaseAccordionItemOwner(panel,this);this.#syncPresentation(),this.#reconcileExpandedPanels(!this.#panelsInitialized),this.#panelsInitialized=!0,this.#syncRovingTabIndex()}#syncPresentation(){for(const panel of this.panels)bindAccordionItemOwner(panel,{owner:this,iconPlacement:this.iconPlacement,headingLevel:this.headingLevel,appearance:this.appearance,requestTransition:this.#handleOwnedItemTransition,transitionSettled:this.#handleOwnedItemTransitionSettled,stateChanged:this.#handleOwnedItemStateChange})}#reconcileExpandedPanels(silent=!1,mode=this.mode){if(mode==="multiple")return!0;let foundExpanded=!1;for(const panel of this.panels){if(!panel.expanded)continue;if(!foundExpanded){foundExpanded=!0;continue}if(!(silent?this.#performPanelState(panel,!1):this.#requestCollapse(panel)))return!1}return!0}#isNavigableItem(item){if(item.disabled)return!1;for(let current=item;current;current=composedParentElement(current))if(isAccessibilitySubtreeExcluded(current))return!1;return!0}#navigableItems(){return[...this.panels].filter(panel=>this.#isNavigableItem(panel))}#syncRovingTabIndex(preferred){const items=this.#navigableItems(),active=preferred&&items.includes(preferred)?preferred:this.#rovingItem&&items.includes(this.#rovingItem)?this.#rovingItem:items.find(item=>item.isTabbable)??items[0];active&&(this.#rovingItem=active);for(const panel of this.panels)panel.isTabbable=panel===active;return active}#nextNavigableItem(displaced){const items=[...this.panels],index=items.indexOf(displaced);return index<0?this.#navigableItems()[0]:items.slice(index+1).find(item=>this.#isNavigableItem(item))??items.slice(0,index).reverse().find(item=>this.#isNavigableItem(item))}#reconcileRovingFocus(displaced=this.#lastFocusedItem){const unavailable=displaced!==void 0&&this.panels.has(displaced)&&!this.#isNavigableItem(displaced),focused=deepActiveElementIn(this.ownerDocument),wasFocused=displaced===this.#lastFocusedItem&&(focused===null||focused===this.ownerDocument.body||focused===displaced||focused!==null&&displaced?.shadowRoot?.contains(focused)),active=this.#syncRovingTabIndex(unavailable?this.#nextNavigableItem(displaced):void 0);!unavailable||!active||!wasFocused||active.focus()}#armAvailabilityObserver(){const ownerDocument=this.ownerDocument;if(!this.isConnected||this.#availabilityObserver)return;const MutationObserverCtor=ownerDocument.defaultView?.MutationObserver;if(!MutationObserverCtor)return;const observer=new MutationObserverCtor(()=>{this.#availabilityObserver!==observer||!this.isConnected||this.ownerDocument!==ownerDocument||this.#reconcileRovingFocus()});this.#availabilityObserver=observer,observer.observe(this,{attributes:!0,subtree:!0,attributeFilter:["disabled","hidden","aria-hidden","inert","class","style"]});for(let ancestor=composedParentElement(this);ancestor;ancestor=composedParentElement(ancestor))observer.observe(ancestor,{attributes:!0,attributeFilter:["hidden","aria-hidden","inert","class","style"]})}#resetAvailabilityObserver(){this.#availabilityObserver?.disconnect(),this.#availabilityObserver=void 0}#performPanelState(panel,expanded,announce=!1){return applyAccordionItemOwnerState(panel,expanded,announce),panel.expanded===expanded}#emitToggleVeto(item,collapsed){const directional=this.emit(collapsed?"lr-collapse":"lr-expand",{item},{cancelable:!0}),unified=this.emit("lr-toggle-request",{item,collapsed},{cancelable:!0});return!directional.defaultPrevented&&!unified.defaultPrevented}#requestCollapse(panel){return panel.expanded?this.#emitToggleVeto(panel,!0)?this.#performPanelState(panel,!1,!0):!1:!0}#collapseSiblings(source){for(const panel of this.panels)if(!(panel===source||!panel.expanded)&&!this.#requestCollapse(panel))return!1;return!0}#handleSlotChange;#handleOwnedItemStateChange;#itemFor(event){const item=event.composedPath().find(node=>node?.nodeType===1&&node.localName===tag("accordion-item"));return item&&this.panels.has(item)?item:void 0}#itemTriggerOwnsEvent(item,event){return event.composedPath().some(node=>{if(node?.nodeType!==1)return!1;const element=node;return element.localName==="button"&&element.getRootNode()===item.shadowRoot&&element.getAttribute("part")?.split(/\s+/u).includes("button")===!0})}#handleOwnedItemTransition;#handleOwnedItemTransitionSettled;render(){return html`<div
2
2
  part="base"
3
3
  @focusin=${this.handleFocusIn}
4
4
  @keydown=${this.handleKeyDown}
@@ -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{hostAriaLabel}from"../../../internal/a11y.js";import{attachInternalsSafely}from"../../../internal/form-associated.js";import{chevronIcon}from"../../../internal/icons.js";import{LyraElement}from"../../../internal/lyra-element.js";import{sizes}from"../../../internal/sizes.styles.js";import{DisclosureMotionController}from"./disclosure-motion.js";import{styles}from"./details.styles.js";import{LYRA_DEFAULT_details,LYRA_DEFAULT_fieldRequired}from"../../../internal/default-strings.generated.js";class LyraDetails extends LyraElement{constructor(){super(...arguments),this.detailsInternals=attachInternalsSafely(this),this.disclosureMotion=new DisclosureMotionController(this,this.detailsInternals,()=>this.renderRoot,'[part~="base"]'),this._open=!1,this.disabled=!1,this.name="",this.appearance="outlined",this.iconPlacement="end",this.size="m",this.summary="",this.hasSummarySlot=!1,this.hasHeaderActionsSlot=!1,this.onClick=event=>{const path=event.composedPath(),summaryIndex=path.findIndex(node=>node?.nodeType===1&&node.localName==="summary");if(!path.slice(0,summaryIndex<0?0:summaryIndex).some(node=>node?.nodeType===1&&node.matches('a[href], button, input, select, textarea, [contenteditable]:not([contenteditable="false"])'))){if(event.preventDefault(),this.disabled){event.stopPropagation();return}this._open?this.hideWithSource("user"):this.showWithSource("user")}},this.onToggle=event=>{const details=event.currentTarget;if(details.open!==this._open){if(this.disabled&&details.open){details.open=!1;return}details.open?this.show():this.hide()}},this.onSummarySlotChange=e=>{this.hasSummarySlot=e.target.assignedElements({flatten:!0}).length>0},this.onHeaderActionsSlotChange=e=>{this.hasHeaderActionsSlot=e.target.assignedElements({flatten:!0}).length>0}}static{this.defaultStrings={...super.defaultStrings,details:LYRA_DEFAULT_details,fieldRequired:LYRA_DEFAULT_fieldRequired}}static{this.styles=[LyraElement.styles,sizes,styles]}get open(){return this._open}set open(next){const normalized=!!next;if(normalized!==this._open){if(!this.hasUpdated){this.applyOpenState(normalized);return}normalized?this.show():this.hide()}}willUpdate(changed){super.willUpdate(changed),this.hasUpdated||(this.hasSummarySlot=Array.from(this.children).some(el=>el.getAttribute("slot")==="summary"),this.hasHeaderActionsSlot=Array.from(this.children).some(el=>el.getAttribute("slot")==="header-actions")),this.hasUpdated&&changed.has("name")&&this._open&&!this.closeNamedPeers()&&(this.name=changed.get("name")??"")}connectedCallback(){super.connectedCallback(),!(!this.hasUpdated||!this._open)&&queueMicrotask(()=>{this.isConnected&&this._open&&this.closeNamedPeers()})}disconnectedCallback(){this.disclosureMotion.cancel(),super.disconnectedCallback()}firstUpdated(changed){super.firstUpdated(changed),this._open&&this.closeNamedPeers()}async show(){await this.showWithSource("programmatic")}async showWithSource(source){if(!(this._open||this.disabled)){if(this.emit("lr-show",null,{cancelable:!0}).defaultPrevented){this.syncOpenAttribute();return}if(!this.closeNamedPeers()){this.syncOpenAttribute();return}this.applyOpenState(!0),await this.settleTransition("lr-after-show",source)}}async hide(){await this.hideWithSource("programmatic")}async hideWithSource(source){if(this._open){if(this.emit("lr-hide",null,{cancelable:!0}).defaultPrevented){this.syncOpenAttribute();return}this.applyOpenState(!1),await this.settleTransition("lr-after-hide",source)}}closeNamedPeers(){if(!this.name)return!0;const root=this.getRootNode();if(typeof root.querySelectorAll!="function")return!0;let allClosed=!0;for(const candidate of root.querySelectorAll(this.localName))candidate!==this&&candidate instanceof LyraDetails&&candidate.name===this.name&&candidate.open&&(candidate.hideWithSource("peer"),candidate.open&&(allClosed=!1));return allClosed}applyOpenState(next){const old=this._open;this._open=next,this.requestUpdate("open",old)}syncOpenAttribute(){this.toggleAttribute("open",this._open)}async settleTransition(event,source){await this.disclosureMotion.settle(()=>{this.emit("lr-toggle",{open:this._open,source})})&&this.emit(event,null)}render(){return html`<details
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{hostAriaLabel}from"../../../internal/a11y.js";import{attachInternalsSafely}from"../../../internal/form-associated.js";import{chevronIcon}from"../../../internal/icons.js";import{LyraElement}from"../../../internal/lyra-element.js";import{sizes}from"../../../internal/sizes.styles.js";import{DisclosureMotionController}from"./disclosure-motion.js";import{styles}from"./details.styles.js";import{LYRA_DEFAULT_details}from"../../../internal/default-strings.generated.js";class LyraDetails extends LyraElement{constructor(){super(...arguments),this.detailsInternals=attachInternalsSafely(this),this.disclosureMotion=new DisclosureMotionController(this,this.detailsInternals,()=>this.renderRoot,'[part~="base"]'),this._open=!1,this.disabled=!1,this.name="",this.appearance="outlined",this.iconPlacement="end",this.size="m",this.summary="",this.hasSummarySlot=!1,this.hasHeaderActionsSlot=!1,this.onClick=event=>{const path=event.composedPath(),summaryIndex=path.findIndex(node=>node?.nodeType===1&&node.localName==="summary");if(!path.slice(0,summaryIndex<0?0:summaryIndex).some(node=>node?.nodeType===1&&node.matches('a[href], button, input, select, textarea, [contenteditable]:not([contenteditable="false"])'))){if(event.preventDefault(),this.disabled){event.stopPropagation();return}this._open?this.hideWithSource("user"):this.showWithSource("user")}},this.onToggle=event=>{const details=event.currentTarget;if(details.open!==this._open){if(this.disabled&&details.open){details.open=!1;return}details.open?this.show():this.hide()}},this.onSummarySlotChange=e=>{this.hasSummarySlot=e.target.assignedElements({flatten:!0}).length>0},this.onHeaderActionsSlotChange=e=>{this.hasHeaderActionsSlot=e.target.assignedElements({flatten:!0}).length>0}}static{this.defaultStrings={...super.defaultStrings,details:LYRA_DEFAULT_details}}static{this.styles=[LyraElement.styles,sizes,styles]}get open(){return this._open}set open(next){const normalized=!!next;if(normalized!==this._open){if(!this.hasUpdated){this.applyOpenState(normalized);return}normalized?this.show():this.hide()}}willUpdate(changed){super.willUpdate(changed),this.hasUpdated||(this.hasSummarySlot=Array.from(this.children).some(el=>el.getAttribute("slot")==="summary"),this.hasHeaderActionsSlot=Array.from(this.children).some(el=>el.getAttribute("slot")==="header-actions")),this.hasUpdated&&changed.has("name")&&this._open&&!this.closeNamedPeers()&&(this.name=changed.get("name")??"")}connectedCallback(){super.connectedCallback(),!(!this.hasUpdated||!this._open)&&queueMicrotask(()=>{this.isConnected&&this._open&&this.closeNamedPeers()})}disconnectedCallback(){this.disclosureMotion.cancel(),super.disconnectedCallback()}firstUpdated(changed){super.firstUpdated(changed),this._open&&this.closeNamedPeers()}async show(){await this.showWithSource("programmatic")}async showWithSource(source){if(!(this._open||this.disabled)){if(this.emit("lr-show",null,{cancelable:!0}).defaultPrevented){this.syncOpenAttribute();return}if(!this.closeNamedPeers()){this.syncOpenAttribute();return}this.applyOpenState(!0),await this.settleTransition("lr-after-show",source)}}async hide(){await this.hideWithSource("programmatic")}async hideWithSource(source){if(this._open){if(this.emit("lr-hide",null,{cancelable:!0}).defaultPrevented){this.syncOpenAttribute();return}this.applyOpenState(!1),await this.settleTransition("lr-after-hide",source)}}closeNamedPeers(){if(!this.name)return!0;const root=this.getRootNode();if(typeof root.querySelectorAll!="function")return!0;let allClosed=!0;for(const candidate of root.querySelectorAll(this.localName))candidate!==this&&candidate instanceof LyraDetails&&candidate.name===this.name&&candidate.open&&(candidate.hideWithSource("peer"),candidate.open&&(allClosed=!1));return allClosed}applyOpenState(next){const old=this._open;this._open=next,this.requestUpdate("open",old)}syncOpenAttribute(){this.toggleAttribute("open",this._open)}async settleTransition(event,source){await this.disclosureMotion.settle(()=>{this.emit("lr-toggle",{open:this._open,source})})&&this.emit(event,null)}render(){return html`<details
2
2
  part="base details"
3
3
  .open=${this.open}
4
4
  name=${this.name||nothing}
@@ -3,22 +3,10 @@ import{css}from"lit";const styles=css`
3
3
  display: block;
4
4
  min-inline-size: 0;
5
5
  max-inline-size: 100%;
6
- /* The disclosure's density knobs, both pointed at the shared size ladder so the tiers live in
7
- one place. Spacing reads the ladder's INLINE padding knob: a stacked panel's block rhythm is
8
- generous like a control's inline padding, while the ladder's own block padding exists to fit
9
- text inside a fixed control height and would collapse the summary row. The 'm' tier resolves
10
- to the same --lr-space-m this panel always used, so an un-sized disclosure is unchanged. */
11
6
  --_lr-details-font-size: var(--lr-form-control-font-size);
12
7
  --_lr-details-spacing: var(--lr-form-control-padding-inline);
13
8
  }
14
9
  [part~="base"] {
15
- /* flex-wrap, not grid: the header-actions part must render as a peer of the summary row
16
- instead of nested inside it (nesting an interactive control inside <summary> would make
17
- every press on it also toggle the panel), while [part="content"] still needs its own full
18
- width on the row below. A CSS Grid column spanned by both a "row 1" item and content's own
19
- "row 2" span couples their track sizing -- content's long-text max-content demand starves
20
- the row-1 columns. flex-basis: 100% on content instead forces its own wrapped line with no
21
- such coupling: line 1 (summary + header-actions) sizes independently of line 2 (content). */
22
10
  display: flex;
23
11
  flex-wrap: wrap;
24
12
  border: var(--lr-border-width-thin) solid
@@ -1,17 +1,7 @@
1
1
  import{css}from"lit";const styles=css`
2
- /* No :host position/inset is imposed here -- unlike an overlay component,
3
- lr-dock-panel deliberately stays layout-agnostic (see the class doc):
4
- drop it as an absolutely-positioned child of a position:relative parent,
5
- or as a flex item alongside your existing content, and it only manages
6
- its own size along the resize axis plus filling the cross axis. */
7
2
  :host {
8
3
  display: block;
9
4
  box-sizing: border-box;
10
- /* Themeable persistent-rail width/height while collapsed -- overridable
11
- from outside since it's a plain custom property, not a JS prop (see
12
- the class doc for why collapse hides content rather than zeroing the
13
- box). Reuses the shared icon-button tap-target token so the collapse
14
- toggle sitting on the rail stays comfortably tappable by default. */
15
5
  --_lr-dock-panel-collapsed-size: var(--lr-icon-button-size);
16
6
  position: relative;
17
7
  }
@@ -23,14 +13,6 @@ import{css}from"lit";const styles=css`
23
13
  :host([edge="bottom"]) {
24
14
  inline-size: 100%;
25
15
  }
26
- /* The collapsed-rail floor only applies once actually collapsed -- scoped
27
- here rather than to the bare [edge] selectors above, so it can never
28
- override a smaller explicit min-extent (resolved in JS by
29
- resolveBoundsPx()) while expanded. An unconditional floor here would
30
- silently win over a min-extent below the rail token's width, since a CSS
31
- min-inline-size/min-block-size always wins over an inline size style
32
- regardless of what value applySize() computed and announced via
33
- aria-valuenow. */
34
16
  :host([edge="start"][collapsed]),
35
17
  :host([edge="end"][collapsed]) {
36
18
  min-inline-size: var(
@@ -64,35 +46,19 @@ import{css}from"lit";const styles=css`
64
46
  display: none;
65
47
  }
66
48
 
67
- /* The draggable edge -- always the panel's *inner* boundary (opposite the
68
- docked/pinned edge), positioned with logical insets so it mirrors
69
- automatically under RTL for the start/end edges. */
70
49
  [part="handle"] {
71
50
  position: absolute;
72
51
  background: var(--lr-color-border);
73
52
  touch-action: none;
74
53
  }
75
- /* --lr-dock-panel-handle-hover-color/-active-color deliberately don't reuse the bare
76
- --lr-color-brand token the collapse-toggle's own hover/active tokens fall back to below --
77
- the handle's drag-affordance accent and the toggle's button hover/active feedback are
78
- different visual purposes that happened to share a token by coincidence, not by design; each
79
- now has its own scoped override while defaulting to the exact same rendered color. */
80
54
  [part="handle"]:hover {
81
55
  background: var(--lr-dock-panel-handle-hover-color, var(--lr-color-brand));
82
56
  }
83
- /* Split off from the :hover rule it used to share (rather than kept as one selector list) so the
84
- pressed rule below can be that rule's exact twin: swapping :hover for :active in a list that
85
- also carries :focus-visible would have repainted the focus state as pressed. */
86
57
  [part="handle"]:focus-visible {
87
58
  background: var(--lr-dock-panel-handle-hover-color, var(--lr-color-brand));
88
59
  outline: var(--lr-focus-ring-width) solid var(--lr-focus-ring-color);
89
60
  outline-offset: calc(-1 * var(--lr-focus-ring-width));
90
61
  }
91
- /* After :focus-visible, so a handle that was focused by keyboard still shows the deeper pressed
92
- fill for the duration of a pointer drag (pointer capture holds :active throughout).
93
- --lr-dock-panel-handle-active-color's own fallback still derives from the hover token via
94
- color-mix() -- overriding just the hover token keeps retinting the pressed state too, same as
95
- before this token existed, while an explicit active override can still opt out of that. */
96
62
  [part="handle"]:active {
97
63
  background: var(
98
64
  --lr-dock-panel-handle-active-color,
@@ -103,9 +69,6 @@ import{css}from"lit";const styles=css`
103
69
  )
104
70
  );
105
71
  }
106
- /* Transparent hit-slop, widening the draggable/tappable box along the
107
- resize axis only, without changing the handle's visible 3px thickness --
108
- same technique as lr-multi-split's divider. */
109
72
  [part="handle"]::before {
110
73
  content: "";
111
74
  position: absolute;
@@ -158,10 +121,6 @@ import{css}from"lit";const styles=css`
158
121
  color var(--lr-transition-fast);
159
122
  z-index: var(--lr-layer-content);
160
123
  }
161
- /* :active reuses the same two scoped tokens :hover sets (mixed for the background, verbatim
162
- for the color) rather than a separate pair of active-only tokens -- mirrors this file's own
163
- [part="handle"] precedent above, where :active has always derived straight from whatever
164
- color :hover uses instead of carrying an independent token. */
165
124
  [part="collapse-toggle"]:hover {
166
125
  background: var(
167
126
  --lr-dock-panel-collapse-toggle-hover-bg,
@@ -211,10 +170,6 @@ import{css}from"lit";const styles=css`
211
170
  inset-inline-start: 50%;
212
171
  transform: translateX(-50%);
213
172
  }
214
- /* For the top/bottom edges the toggle centers on inset-inline-start: 50%, which anchors to
215
- the physical right edge under RTL -- the fixed translateX(-50%) must flip sign there or
216
- the toggle sits a full box-width off center. The start/end edges center along the block
217
- axis (translateY), which no text direction affects. */
218
173
  :host(:dir(rtl)[edge="top"]) [part="collapse-toggle"],
219
174
  :host(:dir(rtl)[edge="bottom"]) [part="collapse-toggle"] {
220
175
  transform: translateX(50%);
@@ -209,6 +209,8 @@ export declare class LyraDrilldownPanel extends LyraElement<LyraDrilldownPanelEv
209
209
  private onDocumentDownload;
210
210
  private onDocumentRenderError;
211
211
  private onDocumentHighlightActivate;
212
+ /** Bound to `lr-entity-select` on every nested `lr-entity-card`, translated into exactly one
213
+ * `lr-drilldown-entity-activate`. */
212
214
  private onEntityActivate;
213
215
  private renderEvidence;
214
216
  private renderDocuments;
@@ -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{repeat}from"lit/directives/repeat.js";import{acquireAnnouncementSink}from"../../../internal/announcer.js";import{LyraElement}from"../../../internal/lyra-element.js";import{getNumberFormat}from"../../../internal/intl-cache.js";import{styles}from"./drilldown-panel.styles.js";import"../breadcrumb/breadcrumb.class.js";import"../breadcrumb/breadcrumb-item.class.js";import"../tab-group/tab-group.class.js";import"../tab-group/tab.class.js";import"../tab-group/tab-panel.class.js";import"../../viewers/document-preview/document-preview.class.js";import"../../retrieval/entity-card/entity-card.class.js";import"../../retrieval/source-card/source-card.class.js";import"../../forms/button/button.class.js";import"../../overlays/empty/empty.class.js";import{trueDefaultBooleanConverter}from"../../../internal/converters.js";import{LYRA_DEFAULT_drilldownDocuments,LYRA_DEFAULT_drilldownEmpty,LYRA_DEFAULT_drilldownRuns,LYRA_DEFAULT_fieldRequired,LYRA_DEFAULT_items,LYRA_DEFAULT_next,LYRA_DEFAULT_noData,LYRA_DEFAULT_paginationLabel,LYRA_DEFAULT_paginationSummary,LYRA_DEFAULT_previous,LYRA_DEFAULT_provenanceEntities,LYRA_DEFAULT_sourceListDefaultLabel}from"../../../internal/default-strings.generated.js";const MAX_PATH_NODES=256,MAX_CATEGORY_ITEMS=1e3,MAX_NODE_TYPES=256,MAX_ENTITY_PROPERTIES=128,MAX_ID_LENGTH=256,MAX_LABEL_LENGTH=4096,MAX_TEXT_LENGTH=65536,MAX_URL_LENGTH=8192,ACTIVE_PAGE_SIZE=8,EMPTY_PATH=Object.freeze([]),EMPTY_TYPES=Object.freeze([]);function isPlainRecord(value){if(typeof value!="object"||value===null||Array.isArray(value))return!1;try{const prototype=Object.getPrototypeOf(value);return prototype===null||Object.getPrototypeOf(prototype)===null}catch{return!1}}function ownDataValue(record,key){try{const descriptor=Object.getOwnPropertyDescriptor(record,key);return descriptor&&"value"in descriptor?descriptor.value:void 0}catch{return}}function safeArrayLength(value){if(!Array.isArray(value))return 0;try{const descriptor=Object.getOwnPropertyDescriptor(value,"length"),length=descriptor&&"value"in descriptor?descriptor.value:0;return typeof length=="number"&&Number.isFinite(length)?Math.max(0,Math.floor(length)):0}catch{return 0}}function arrayItem(value,index){try{const descriptor=Object.getOwnPropertyDescriptor(value,String(index));return descriptor&&"value"in descriptor?descriptor.value:void 0}catch{return}}function boundedString(value,maxLength){return typeof value=="string"&&value.length<=maxLength?value:void 0}function domainId(value){const id=boundedString(value,MAX_ID_LENGTH);return id&&id===id.trim()?id:void 0}function optionalString(record,key,maxLength=MAX_TEXT_LENGTH){return boundedString(ownDataValue(record,key),maxLength)}function normalizeUniqueCollection(value,limit,normalize,startIndex=0){const sourceCount=safeArrayLength(value);if(!Array.isArray(value)||sourceCount===0)return{items:Object.freeze([]),sourceCount};const items=[],seen=new Set,end=Math.min(sourceCount,startIndex+limit);for(let index=startIndex;index<end;index+=1){const normalized=normalize(arrayItem(value,index));!normalized||seen.has(normalized[0])||(seen.add(normalized[0]),items.push(normalized[1]))}return{items:Object.freeze(items),sourceCount}}function normalizeEvidence(candidate){if(!isPlainRecord(candidate))return;const evidenceId=domainId(ownDataValue(candidate,"evidenceId")),title=boundedString(ownDataValue(candidate,"title"),MAX_LABEL_LENGTH);if(!evidenceId||title===void 0)return;const rawPage=ownDataValue(candidate,"page"),page=typeof rawPage=="number"&&Number.isFinite(rawPage)?rawPage:boundedString(rawPage,MAX_LABEL_LENGTH),item=Object.freeze({evidenceId,title,...page!==void 0?{page}:{},...optionalString(candidate,"href",MAX_URL_LENGTH)!==void 0?{href:optionalString(candidate,"href",MAX_URL_LENGTH)}:{},...optionalString(candidate,"excerpt")!==void 0?{excerpt:optionalString(candidate,"excerpt")}:{},...optionalString(candidate,"full")!==void 0?{full:optionalString(candidate,"full")}:{}});return[evidenceId,item]}function normalizeDocument(candidate){if(!isPlainRecord(candidate))return;const documentId=domainId(ownDataValue(candidate,"documentId")),name=boundedString(ownDataValue(candidate,"name"),MAX_LABEL_LENGTH);if(!documentId||name===void 0)return;const document=Object.freeze({documentId,name,...optionalString(candidate,"mimeType",MAX_LABEL_LENGTH)!==void 0?{mimeType:optionalString(candidate,"mimeType",MAX_LABEL_LENGTH)}:{},...optionalString(candidate,"uri",MAX_URL_LENGTH)!==void 0?{uri:optionalString(candidate,"uri",MAX_URL_LENGTH)}:{},...optionalString(candidate,"version",MAX_LABEL_LENGTH)!==void 0?{version:optionalString(candidate,"version",MAX_LABEL_LENGTH)}:{}});return[documentId,document]}function normalizeProperties(value){if(!isPlainRecord(value))return;let keys;try{keys=Object.getOwnPropertyNames(value).slice(0,MAX_ENTITY_PROPERTIES)}catch{return}const properties={};for(const key of keys){if(!key||key.length>MAX_ID_LENGTH)continue;let descriptor;try{descriptor=Object.getOwnPropertyDescriptor(value,key)}catch{continue}if(!descriptor||!descriptor.enumerable||!("value"in descriptor))continue;const entry=descriptor.value;if(typeof entry=="number"&&Number.isFinite(entry))properties[key]=entry;else{const text=boundedString(entry,MAX_TEXT_LENGTH);text!==void 0&&(properties[key]=text)}}return Object.keys(properties).length>0?Object.freeze(properties):void 0}function normalizeEntity(candidate){if(!isPlainRecord(candidate))return;const entityId=domainId(ownDataValue(candidate,"entityId")),label=boundedString(ownDataValue(candidate,"label"),MAX_LABEL_LENGTH);if(!entityId||label===void 0)return;const rawDegree=ownDataValue(candidate,"degree"),degree=typeof rawDegree=="number"&&Number.isFinite(rawDegree)?Math.max(0,Math.floor(rawDegree)):void 0,properties=normalizeProperties(ownDataValue(candidate,"properties")),entity=Object.freeze({entityId,label,...optionalString(candidate,"type",MAX_ID_LENGTH)!==void 0?{type:optionalString(candidate,"type",MAX_ID_LENGTH)}:{},...optionalString(candidate,"description")!==void 0?{description:optionalString(candidate,"description")}:{},...properties?{properties}:{},...degree!==void 0?{degree}:{},...optionalString(candidate,"communityId",MAX_ID_LENGTH)!==void 0?{communityId:optionalString(candidate,"communityId",MAX_ID_LENGTH)}:{}});return[entityId,entity]}function normalizeNode(candidate){if(!isPlainRecord(candidate))return;const nodeId=domainId(ownDataValue(candidate,"nodeId")),label=boundedString(ownDataValue(candidate,"label"),MAX_LABEL_LENGTH);if(!nodeId||label===void 0)return;const evidence=normalizeUniqueCollection(ownDataValue(candidate,"evidence"),MAX_CATEGORY_ITEMS,normalizeEvidence),documents=normalizeUniqueCollection(ownDataValue(candidate,"documents"),MAX_CATEGORY_ITEMS,normalizeDocument),entities=normalizeUniqueCollection(ownDataValue(candidate,"entities"),MAX_CATEGORY_ITEMS,normalizeEntity);return{node:Object.freeze({nodeId,label,...evidence.items.length>0?{evidence:evidence.items}:{},...documents.items.length>0?{documents:documents.items}:{},...entities.items.length>0?{entities:entities.items}:{}}),sourceCounts:Object.freeze({evidence:evidence.sourceCount,documents:documents.sourceCount,entities:entities.sourceCount})}}function normalizePath(value){const sourceCount=safeArrayLength(value);if(!Array.isArray(value)||sourceCount===0)return{path:EMPTY_PATH,sourceCount,categorySourceCounts:new Map};const startIndex=Math.max(0,sourceCount-MAX_PATH_NODES),path=[],seen=new Set,categorySourceCounts=new Map;for(let index=startIndex;index<sourceCount;index+=1){const normalized=normalizeNode(arrayItem(value,index));!normalized||seen.has(normalized.node.nodeId)||(seen.add(normalized.node.nodeId),path.push(normalized.node),categorySourceCounts.set(normalized.node.nodeId,normalized.sourceCounts))}return{path:Object.freeze(path),sourceCount,categorySourceCounts}}function normalizeNodeType(candidate){if(!isPlainRecord(candidate))return;const id=domainId(ownDataValue(candidate,"id")),label=boundedString(ownDataValue(candidate,"label"),MAX_LABEL_LENGTH);if(!id||label===void 0)return;const rawShape=ownDataValue(candidate,"shape"),shape=rawShape==="circle"||rawShape==="square"||rawShape==="diamond"?rawShape:void 0,color=optionalString(candidate,"color",MAX_LABEL_LENGTH);return[id,Object.freeze({id,label,...color!==void 0?{color}:{},...shape!==void 0?{shape}:{}})]}function normalizeTypes(value){return normalizeUniqueCollection(value,MAX_NODE_TYPES,normalizeNodeType).items}function normalizeCategory(value){return value==="evidence"||value==="documents"||value==="entities"||value==="runs"?value:""}class LyraDrilldownPanel extends LyraElement{constructor(){super(...arguments),this.effectivePath=EMPTY_PATH,this.pathSourceCount=0,this.pathRevision=0,this.categorySourceCounts=new Map,this.effectiveTypes=EMPTY_TYPES,this.activeCategoryValue="",this.communityLabel="",this.showFocusButton=!0,this.accessibleLabel=null,this.hasRunsSlot=!1,this.categoryPage=0,this.pageContext="",this.mutationObserverGeneration=0,this.announcementsArmed=!1,this.announcedLimits=new Map,this.syncRunsSlot=()=>{this.hasRunsSlot=Array.from(this.children).some(element=>element.getAttribute("slot")==="runs")},this.stopOwnedEvent=event=>{event.stopPropagation()},this.onCategoryShow=event=>{event.stopPropagation();const node=this.currentNode;if(!node)return;const categories=this.categoriesFor(node),previousCategory=this.resolvedCategory(categories),category=normalizeCategory(event.detail.name),tabGroup=event.currentTarget;if(!previousCategory||!category||!categories.some(candidate=>candidate.key===category)){tabGroup.active=previousCategory??"";return}category!==previousCategory&&this.emit("lr-drilldown-category-change",Object.freeze({nodeId:node.nodeId,category,previousCategory})),tabGroup.active=this.resolvedCategory(categories)??""}}static{this.defaultStrings={...super.defaultStrings,drilldownDocuments:LYRA_DEFAULT_drilldownDocuments,drilldownEmpty:LYRA_DEFAULT_drilldownEmpty,drilldownRuns:LYRA_DEFAULT_drilldownRuns,fieldRequired:LYRA_DEFAULT_fieldRequired,items:LYRA_DEFAULT_items,next:LYRA_DEFAULT_next,noData:LYRA_DEFAULT_noData,paginationLabel:LYRA_DEFAULT_paginationLabel,paginationSummary:LYRA_DEFAULT_paginationSummary,previous:LYRA_DEFAULT_previous,provenanceEntities:LYRA_DEFAULT_provenanceEntities,sourceListDefaultLabel:LYRA_DEFAULT_sourceListDefaultLabel}}static{this.styles=[LyraElement.styles,styles]}get path(){return this.effectivePath}set path(value){const previous=this.effectivePath,normalized=normalizePath(value);this.effectivePath=normalized.path,this.pathSourceCount=normalized.sourceCount,this.categorySourceCounts=normalized.categorySourceCounts,this.pathRevision+=1,this.requestUpdate("path",previous)}get types(){return this.effectiveTypes}set types(value){const previous=this.effectiveTypes;this.effectiveTypes=normalizeTypes(value),this.requestUpdate("types",previous)}get activeCategory(){return this.activeCategoryValue}set activeCategory(value){const previous=this.activeCategoryValue;this.activeCategoryValue=normalizeCategory(value),this.requestUpdate("activeCategory",previous)}connectedCallback(){super.connectedCallback(),this.syncAnnouncementSink(),this.syncRunsSlot(),this.armMutationObserver()}armMutationObserver(){const ownerDocument=this.ownerDocument;if(!this.isConnected||this.mutationObserver&&this.mutationObserverDocument===ownerDocument)return;this.resetMutationObserver();const MutationObserverCtor=ownerDocument.defaultView?.MutationObserver;if(!MutationObserverCtor)return;const generation=this.mutationObserverGeneration,observer=new MutationObserverCtor(()=>{this.mutationObserver!==observer||this.mutationObserverDocument!==ownerDocument||this.mutationObserverGeneration!==generation||!this.isConnected||this.ownerDocument!==ownerDocument||this.syncRunsSlot()});this.mutationObserver=observer,this.mutationObserverDocument=ownerDocument,observer.observe(this,{childList:!0,attributes:!0,attributeFilter:["slot"],subtree:!0})}disconnectedCallback(){this.resetMutationObserver(),this.releaseAnnouncementSink(),this.announcementsArmed=!1,this.announcedLimits.clear(),super.disconnectedCallback()}adoptedCallback(){super.adoptedCallback(),this.resetMutationObserver(),this.syncAnnouncementSink(),this.armMutationObserver()}syncAnnouncementSink(){if(!this.isConnected){this.releaseAnnouncementSink();return}this.announcementSink?.element.ownerDocument!==this.ownerDocument&&(this.releaseAnnouncementSink(),this.announcementSink=acquireAnnouncementSink("polite",{document:this.ownerDocument,source:this}))}releaseAnnouncementSink(){this.announcementSink?.release(),this.announcementSink=void 0}resetMutationObserver(){this.mutationObserverGeneration+=1,this.mutationObserver?.disconnect(),this.mutationObserver=void 0,this.mutationObserverDocument=void 0}get currentNode(){return this.effectivePath[this.effectivePath.length-1]}categoriesFor(node){const categories=[];return(node.evidence?.length??0)>0&&categories.push({key:"evidence",label:this.localize("sourceListDefaultLabel")}),(node.documents?.length??0)>0&&categories.push({key:"documents",label:this.localize("drilldownDocuments")}),(node.entities?.length??0)>0&&categories.push({key:"entities",label:this.localize("provenanceEntities")}),this.hasRunsSlot&&categories.push({key:"runs",label:this.localize("drilldownRuns")}),categories}resolvedCategory(categories){return categories.find(category=>category.key===this.activeCategoryValue)?.key??categories[0]?.key}willUpdate(changed){super.willUpdate(changed);const node=this.currentNode,categories=node?this.categoriesFor(node):[],active=this.resolvedCategory(categories)??"",context=`${this.pathRevision}:${node?.nodeId??""}:${active}`;context!==this.pageContext&&(this.pageContext=context,this.categoryPage=0)}updated(changed){super.updated(changed);const nextLimits=new Map(this.currentLimitAnnouncements());if(this.announcementsArmed)for(const[key,text]of nextLimits)this.announcedLimits.get(key)!==text&&this.announcementSink?.announce(text);this.announcedLimits=nextLimits,this.announcementsArmed=!0}navigateTo(node,index){this.emit("lr-drilldown-navigate",Object.freeze({nodeId:node.nodeId,index}))}onEvidenceExpand(nodeId,evidenceId,event){event.stopPropagation(),this.emit("lr-drilldown-evidence-expand",Object.freeze({nodeId,evidenceId,expanded:event.detail.expanded}))}onEvidenceOpen(nodeId,item,event){event.stopPropagation(),this.emit("lr-drilldown-evidence-open",Object.freeze({nodeId,evidenceId:item.evidenceId,...item.href!==void 0?{href:item.href}:{}}))}onDocumentDownload(nodeId,document,event){event.stopPropagation(),this.emit("lr-drilldown-document-download",Object.freeze({nodeId,documentId:document.documentId,src:event.detail.src,filename:event.detail.filename}))}onDocumentRenderError(nodeId,documentId,event){event.stopPropagation(),this.emit("lr-drilldown-document-render-error",Object.freeze({nodeId,documentId,error:event.detail.error}))}onDocumentHighlightActivate(nodeId,documentId,event){event.stopPropagation(),this.emit("lr-drilldown-document-highlight-activate",Object.freeze({nodeId,documentId,highlightId:event.detail.highlightId}))}onEntityActivate(nodeId,entityId,event){event.stopPropagation(),this.emit("lr-drilldown-entity-activate",Object.freeze({nodeId,entityId}))}renderEvidence(nodeId,items){return html`${repeat(items,item=>item.evidenceId,item=>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{repeat}from"lit/directives/repeat.js";import{acquireAnnouncementSink}from"../../../internal/announcer.js";import{LyraElement}from"../../../internal/lyra-element.js";import{getNumberFormat}from"../../../internal/intl-cache.js";import{styles}from"./drilldown-panel.styles.js";import"../breadcrumb/breadcrumb.class.js";import"../breadcrumb/breadcrumb-item.class.js";import"../tab-group/tab-group.class.js";import"../tab-group/tab.class.js";import"../tab-group/tab-panel.class.js";import"../../viewers/document-preview/document-preview.class.js";import"../../retrieval/entity-card/entity-card.class.js";import"../../retrieval/source-card/source-card.class.js";import"../../forms/button/button.class.js";import"../../overlays/empty/empty.class.js";import{trueDefaultBooleanConverter}from"../../../internal/converters.js";import{LYRA_DEFAULT_drilldownDocuments,LYRA_DEFAULT_drilldownEmpty,LYRA_DEFAULT_drilldownRuns,LYRA_DEFAULT_items,LYRA_DEFAULT_next,LYRA_DEFAULT_noData,LYRA_DEFAULT_paginationLabel,LYRA_DEFAULT_paginationSummary,LYRA_DEFAULT_previous,LYRA_DEFAULT_provenanceEntities,LYRA_DEFAULT_sourceListDefaultLabel}from"../../../internal/default-strings.generated.js";const MAX_PATH_NODES=256,MAX_CATEGORY_ITEMS=1e3,MAX_NODE_TYPES=256,MAX_ENTITY_PROPERTIES=128,MAX_ID_LENGTH=256,MAX_LABEL_LENGTH=4096,MAX_TEXT_LENGTH=65536,MAX_URL_LENGTH=8192,ACTIVE_PAGE_SIZE=8,EMPTY_PATH=Object.freeze([]),EMPTY_TYPES=Object.freeze([]);function isPlainRecord(value){if(typeof value!="object"||value===null||Array.isArray(value))return!1;try{const prototype=Object.getPrototypeOf(value);return prototype===null||Object.getPrototypeOf(prototype)===null}catch{return!1}}function ownDataValue(record,key){try{const descriptor=Object.getOwnPropertyDescriptor(record,key);return descriptor&&"value"in descriptor?descriptor.value:void 0}catch{return}}function safeArrayLength(value){if(!Array.isArray(value))return 0;try{const descriptor=Object.getOwnPropertyDescriptor(value,"length"),length=descriptor&&"value"in descriptor?descriptor.value:0;return typeof length=="number"&&Number.isFinite(length)?Math.max(0,Math.floor(length)):0}catch{return 0}}function arrayItem(value,index){try{const descriptor=Object.getOwnPropertyDescriptor(value,String(index));return descriptor&&"value"in descriptor?descriptor.value:void 0}catch{return}}function boundedString(value,maxLength){return typeof value=="string"&&value.length<=maxLength?value:void 0}function domainId(value){const id=boundedString(value,MAX_ID_LENGTH);return id&&id===id.trim()?id:void 0}function optionalString(record,key,maxLength=MAX_TEXT_LENGTH){return boundedString(ownDataValue(record,key),maxLength)}function normalizeUniqueCollection(value,limit,normalize,startIndex=0){const sourceCount=safeArrayLength(value);if(!Array.isArray(value)||sourceCount===0)return{items:Object.freeze([]),sourceCount};const items=[],seen=new Set,end=Math.min(sourceCount,startIndex+limit);for(let index=startIndex;index<end;index+=1){const normalized=normalize(arrayItem(value,index));!normalized||seen.has(normalized[0])||(seen.add(normalized[0]),items.push(normalized[1]))}return{items:Object.freeze(items),sourceCount}}function normalizeEvidence(candidate){if(!isPlainRecord(candidate))return;const evidenceId=domainId(ownDataValue(candidate,"evidenceId")),title=boundedString(ownDataValue(candidate,"title"),MAX_LABEL_LENGTH);if(!evidenceId||title===void 0)return;const rawPage=ownDataValue(candidate,"page"),page=typeof rawPage=="number"&&Number.isFinite(rawPage)?rawPage:boundedString(rawPage,MAX_LABEL_LENGTH),item=Object.freeze({evidenceId,title,...page!==void 0?{page}:{},...optionalString(candidate,"href",MAX_URL_LENGTH)!==void 0?{href:optionalString(candidate,"href",MAX_URL_LENGTH)}:{},...optionalString(candidate,"excerpt")!==void 0?{excerpt:optionalString(candidate,"excerpt")}:{},...optionalString(candidate,"full")!==void 0?{full:optionalString(candidate,"full")}:{}});return[evidenceId,item]}function normalizeDocument(candidate){if(!isPlainRecord(candidate))return;const documentId=domainId(ownDataValue(candidate,"documentId")),name=boundedString(ownDataValue(candidate,"name"),MAX_LABEL_LENGTH);if(!documentId||name===void 0)return;const document=Object.freeze({documentId,name,...optionalString(candidate,"mimeType",MAX_LABEL_LENGTH)!==void 0?{mimeType:optionalString(candidate,"mimeType",MAX_LABEL_LENGTH)}:{},...optionalString(candidate,"uri",MAX_URL_LENGTH)!==void 0?{uri:optionalString(candidate,"uri",MAX_URL_LENGTH)}:{},...optionalString(candidate,"version",MAX_LABEL_LENGTH)!==void 0?{version:optionalString(candidate,"version",MAX_LABEL_LENGTH)}:{}});return[documentId,document]}function normalizeProperties(value){if(!isPlainRecord(value))return;let keys;try{keys=Object.getOwnPropertyNames(value).slice(0,MAX_ENTITY_PROPERTIES)}catch{return}const properties={};for(const key of keys){if(!key||key.length>MAX_ID_LENGTH)continue;let descriptor;try{descriptor=Object.getOwnPropertyDescriptor(value,key)}catch{continue}if(!descriptor||!descriptor.enumerable||!("value"in descriptor))continue;const entry=descriptor.value;if(typeof entry=="number"&&Number.isFinite(entry))properties[key]=entry;else{const text=boundedString(entry,MAX_TEXT_LENGTH);text!==void 0&&(properties[key]=text)}}return Object.keys(properties).length>0?Object.freeze(properties):void 0}function normalizeEntity(candidate){if(!isPlainRecord(candidate))return;const entityId=domainId(ownDataValue(candidate,"entityId")),label=boundedString(ownDataValue(candidate,"label"),MAX_LABEL_LENGTH);if(!entityId||label===void 0)return;const rawDegree=ownDataValue(candidate,"degree"),degree=typeof rawDegree=="number"&&Number.isFinite(rawDegree)?Math.max(0,Math.floor(rawDegree)):void 0,properties=normalizeProperties(ownDataValue(candidate,"properties")),entity=Object.freeze({entityId,label,...optionalString(candidate,"type",MAX_ID_LENGTH)!==void 0?{type:optionalString(candidate,"type",MAX_ID_LENGTH)}:{},...optionalString(candidate,"description")!==void 0?{description:optionalString(candidate,"description")}:{},...properties?{properties}:{},...degree!==void 0?{degree}:{},...optionalString(candidate,"communityId",MAX_ID_LENGTH)!==void 0?{communityId:optionalString(candidate,"communityId",MAX_ID_LENGTH)}:{}});return[entityId,entity]}function normalizeNode(candidate){if(!isPlainRecord(candidate))return;const nodeId=domainId(ownDataValue(candidate,"nodeId")),label=boundedString(ownDataValue(candidate,"label"),MAX_LABEL_LENGTH);if(!nodeId||label===void 0)return;const evidence=normalizeUniqueCollection(ownDataValue(candidate,"evidence"),MAX_CATEGORY_ITEMS,normalizeEvidence),documents=normalizeUniqueCollection(ownDataValue(candidate,"documents"),MAX_CATEGORY_ITEMS,normalizeDocument),entities=normalizeUniqueCollection(ownDataValue(candidate,"entities"),MAX_CATEGORY_ITEMS,normalizeEntity);return{node:Object.freeze({nodeId,label,...evidence.items.length>0?{evidence:evidence.items}:{},...documents.items.length>0?{documents:documents.items}:{},...entities.items.length>0?{entities:entities.items}:{}}),sourceCounts:Object.freeze({evidence:evidence.sourceCount,documents:documents.sourceCount,entities:entities.sourceCount})}}function normalizePath(value){const sourceCount=safeArrayLength(value);if(!Array.isArray(value)||sourceCount===0)return{path:EMPTY_PATH,sourceCount,categorySourceCounts:new Map};const startIndex=Math.max(0,sourceCount-MAX_PATH_NODES),path=[],seen=new Set,categorySourceCounts=new Map;for(let index=startIndex;index<sourceCount;index+=1){const normalized=normalizeNode(arrayItem(value,index));!normalized||seen.has(normalized.node.nodeId)||(seen.add(normalized.node.nodeId),path.push(normalized.node),categorySourceCounts.set(normalized.node.nodeId,normalized.sourceCounts))}return{path:Object.freeze(path),sourceCount,categorySourceCounts}}function normalizeNodeType(candidate){if(!isPlainRecord(candidate))return;const id=domainId(ownDataValue(candidate,"id")),label=boundedString(ownDataValue(candidate,"label"),MAX_LABEL_LENGTH);if(!id||label===void 0)return;const rawShape=ownDataValue(candidate,"shape"),shape=rawShape==="circle"||rawShape==="square"||rawShape==="diamond"?rawShape:void 0,color=optionalString(candidate,"color",MAX_LABEL_LENGTH);return[id,Object.freeze({id,label,...color!==void 0?{color}:{},...shape!==void 0?{shape}:{}})]}function normalizeTypes(value){return normalizeUniqueCollection(value,MAX_NODE_TYPES,normalizeNodeType).items}function normalizeCategory(value){return value==="evidence"||value==="documents"||value==="entities"||value==="runs"?value:""}class LyraDrilldownPanel extends LyraElement{constructor(){super(...arguments),this.effectivePath=EMPTY_PATH,this.pathSourceCount=0,this.pathRevision=0,this.categorySourceCounts=new Map,this.effectiveTypes=EMPTY_TYPES,this.activeCategoryValue="",this.communityLabel="",this.showFocusButton=!0,this.accessibleLabel=null,this.hasRunsSlot=!1,this.categoryPage=0,this.pageContext="",this.mutationObserverGeneration=0,this.announcementsArmed=!1,this.announcedLimits=new Map,this.syncRunsSlot=()=>{this.hasRunsSlot=Array.from(this.children).some(element=>element.getAttribute("slot")==="runs")},this.stopOwnedEvent=event=>{event.stopPropagation()},this.onCategoryShow=event=>{event.stopPropagation();const node=this.currentNode;if(!node)return;const categories=this.categoriesFor(node),previousCategory=this.resolvedCategory(categories),category=normalizeCategory(event.detail.name),tabGroup=event.currentTarget;if(!previousCategory||!category||!categories.some(candidate=>candidate.key===category)){tabGroup.active=previousCategory??"";return}category!==previousCategory&&this.emit("lr-drilldown-category-change",Object.freeze({nodeId:node.nodeId,category,previousCategory})),tabGroup.active=this.resolvedCategory(categories)??""}}static{this.defaultStrings={...super.defaultStrings,drilldownDocuments:LYRA_DEFAULT_drilldownDocuments,drilldownEmpty:LYRA_DEFAULT_drilldownEmpty,drilldownRuns:LYRA_DEFAULT_drilldownRuns,items:LYRA_DEFAULT_items,next:LYRA_DEFAULT_next,noData:LYRA_DEFAULT_noData,paginationLabel:LYRA_DEFAULT_paginationLabel,paginationSummary:LYRA_DEFAULT_paginationSummary,previous:LYRA_DEFAULT_previous,provenanceEntities:LYRA_DEFAULT_provenanceEntities,sourceListDefaultLabel:LYRA_DEFAULT_sourceListDefaultLabel}}static{this.styles=[LyraElement.styles,styles]}get path(){return this.effectivePath}set path(value){const previous=this.effectivePath,normalized=normalizePath(value);this.effectivePath=normalized.path,this.pathSourceCount=normalized.sourceCount,this.categorySourceCounts=normalized.categorySourceCounts,this.pathRevision+=1,this.requestUpdate("path",previous)}get types(){return this.effectiveTypes}set types(value){const previous=this.effectiveTypes;this.effectiveTypes=normalizeTypes(value),this.requestUpdate("types",previous)}get activeCategory(){return this.activeCategoryValue}set activeCategory(value){const previous=this.activeCategoryValue;this.activeCategoryValue=normalizeCategory(value),this.requestUpdate("activeCategory",previous)}connectedCallback(){super.connectedCallback(),this.syncAnnouncementSink(),this.syncRunsSlot(),this.armMutationObserver()}armMutationObserver(){const ownerDocument=this.ownerDocument;if(!this.isConnected||this.mutationObserver&&this.mutationObserverDocument===ownerDocument)return;this.resetMutationObserver();const MutationObserverCtor=ownerDocument.defaultView?.MutationObserver;if(!MutationObserverCtor)return;const generation=this.mutationObserverGeneration,observer=new MutationObserverCtor(()=>{this.mutationObserver!==observer||this.mutationObserverDocument!==ownerDocument||this.mutationObserverGeneration!==generation||!this.isConnected||this.ownerDocument!==ownerDocument||this.syncRunsSlot()});this.mutationObserver=observer,this.mutationObserverDocument=ownerDocument,observer.observe(this,{childList:!0,attributes:!0,attributeFilter:["slot"],subtree:!0})}disconnectedCallback(){this.resetMutationObserver(),this.releaseAnnouncementSink(),this.announcementsArmed=!1,this.announcedLimits.clear(),super.disconnectedCallback()}adoptedCallback(){super.adoptedCallback(),this.resetMutationObserver(),this.syncAnnouncementSink(),this.armMutationObserver()}syncAnnouncementSink(){if(!this.isConnected){this.releaseAnnouncementSink();return}this.announcementSink?.element.ownerDocument!==this.ownerDocument&&(this.releaseAnnouncementSink(),this.announcementSink=acquireAnnouncementSink("polite",{document:this.ownerDocument,source:this}))}releaseAnnouncementSink(){this.announcementSink?.release(),this.announcementSink=void 0}resetMutationObserver(){this.mutationObserverGeneration+=1,this.mutationObserver?.disconnect(),this.mutationObserver=void 0,this.mutationObserverDocument=void 0}get currentNode(){return this.effectivePath[this.effectivePath.length-1]}categoriesFor(node){const categories=[];return(node.evidence?.length??0)>0&&categories.push({key:"evidence",label:this.localize("sourceListDefaultLabel")}),(node.documents?.length??0)>0&&categories.push({key:"documents",label:this.localize("drilldownDocuments")}),(node.entities?.length??0)>0&&categories.push({key:"entities",label:this.localize("provenanceEntities")}),this.hasRunsSlot&&categories.push({key:"runs",label:this.localize("drilldownRuns")}),categories}resolvedCategory(categories){return categories.find(category=>category.key===this.activeCategoryValue)?.key??categories[0]?.key}willUpdate(changed){super.willUpdate(changed);const node=this.currentNode,categories=node?this.categoriesFor(node):[],active=this.resolvedCategory(categories)??"",context=`${this.pathRevision}:${node?.nodeId??""}:${active}`;context!==this.pageContext&&(this.pageContext=context,this.categoryPage=0)}updated(changed){super.updated(changed);const nextLimits=new Map(this.currentLimitAnnouncements());if(this.announcementsArmed)for(const[key,text]of nextLimits)this.announcedLimits.get(key)!==text&&this.announcementSink?.announce(text);this.announcedLimits=nextLimits,this.announcementsArmed=!0}navigateTo(node,index){this.emit("lr-drilldown-navigate",Object.freeze({nodeId:node.nodeId,index}))}onEvidenceExpand(nodeId,evidenceId,event){event.stopPropagation(),this.emit("lr-drilldown-evidence-expand",Object.freeze({nodeId,evidenceId,expanded:event.detail.expanded}))}onEvidenceOpen(nodeId,item,event){event.stopPropagation(),this.emit("lr-drilldown-evidence-open",Object.freeze({nodeId,evidenceId:item.evidenceId,...item.href!==void 0?{href:item.href}:{}}))}onDocumentDownload(nodeId,document,event){event.stopPropagation(),this.emit("lr-drilldown-document-download",Object.freeze({nodeId,documentId:document.documentId,src:event.detail.src,filename:event.detail.filename}))}onDocumentRenderError(nodeId,documentId,event){event.stopPropagation(),this.emit("lr-drilldown-document-render-error",Object.freeze({nodeId,documentId,error:event.detail.error}))}onDocumentHighlightActivate(nodeId,documentId,event){event.stopPropagation(),this.emit("lr-drilldown-document-highlight-activate",Object.freeze({nodeId,documentId,highlightId:event.detail.highlightId}))}onEntityActivate(nodeId,entityId,event){event.stopPropagation(),this.emit("lr-drilldown-entity-activate",Object.freeze({nodeId,entityId}))}renderEvidence(nodeId,items){return html`${repeat(items,item=>item.evidenceId,item=>html`
2
2
  <lr-source-card
3
3
  part="evidence-item"
4
4
  source-id=${item.evidenceId}
@@ -28,7 +28,7 @@ var __decorate=function(decorators,target,key,desc){var c=arguments.length,r=c<3
28
28
  .types=${this.effectiveTypes}
29
29
  .communityLabel=${this.communityLabel}
30
30
  .showFocusButton=${this.showFocusButton}
31
- @lr-entity-activate=${event=>this.onEntityActivate(nodeId,entity.entityId,event)}
31
+ @lr-entity-select=${event=>this.onEntityActivate(nodeId,entity.entityId,event)}
32
32
  ></lr-entity-card>
33
33
  `)}`}formatCount(value){return getNumberFormat(this.effectiveLocale).format(value)}rangeSummary(start,end,total,itemLabel){return this.localize("paginationSummary",void 0,{start:this.formatCount(start),end:this.formatCount(end),total:this.formatCount(total),itemLabel})}changePage(delta,total){const lastPage=Math.max(0,Math.ceil(total/ACTIVE_PAGE_SIZE)-1);this.categoryPage=Math.min(lastPage,Math.max(0,this.categoryPage+delta))}currentLimitAnnouncements(){const announcements=[];this.pathSourceCount>MAX_PATH_NODES&&announcements.push(["path",this.pathLimitSummary()]);const node=this.currentNode;if(!node)return announcements;const categories=this.categoriesFor(node),category=categories.find(candidate=>candidate.key===this.resolvedCategory(categories));if(!category||category.key==="runs")return announcements;const items=node[category.key]??[],sourceCount=this.categorySourceCounts.get(node.nodeId)?.[category.key]??items.length;return sourceCount>MAX_CATEGORY_ITEMS&&announcements.push([`${node.nodeId}:${category.key}`,this.rangeSummary(1,items.length,sourceCount,category.label)]),announcements}pathLimitSummary(){return this.rangeSummary(this.pathSourceCount-MAX_PATH_NODES+1,this.pathSourceCount,this.pathSourceCount,this.localize("items"))}renderPage(node,category,label,items,renderItems){const lastPage=Math.max(0,Math.ceil(items.length/ACTIVE_PAGE_SIZE)-1),page=Math.min(this.categoryPage,lastPage),startIndex=page*ACTIVE_PAGE_SIZE,visible=items.slice(startIndex,startIndex+ACTIVE_PAGE_SIZE),sourceCount=this.categorySourceCounts.get(node.nodeId)?.[category]??items.length,hasPages=items.length>ACTIVE_PAGE_SIZE,wasLimited=sourceCount>MAX_CATEGORY_ITEMS;return html`
34
34
  ${renderItems(visible)}
@@ -34,10 +34,6 @@ import{css}from"lit";const styles=css`
34
34
  :where(lr-breadcrumb-item:not([current]))::part(base):hover {
35
35
  text-decoration: underline;
36
36
  }
37
- /* The button is chromeless (border: none; background: none), so there is no fill to deepen --
38
- the pressed state paints one. Mixing from transparent yields --lr-color-mix-partner at
39
- --lr-color-mix-active alpha, tinting whatever surface the trail sits on instead of assuming
40
- one. */
41
37
  :where(lr-breadcrumb-item:not([current]))::part(base):active {
42
38
  text-decoration: underline;
43
39
  background: color-mix(