@aceshooting/lyra-ui 19.0.1 → 20.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 (418) hide show
  1. package/CHANGELOG.md +159 -0
  2. package/custom-elements.json +1 -1
  3. package/dist/cli/migration-contract.json +1 -1
  4. package/dist/components/agent-tools/activity-feed/activity-feed.class.d.ts +14 -4
  5. package/dist/components/agent-tools/activity-feed/activity-feed.styles.js +1 -1
  6. package/dist/components/agent-tools/approval-queue/approval-queue.class.d.ts +1 -0
  7. package/dist/components/agent-tools/approval-queue/approval-queue.class.js +4 -3
  8. package/dist/components/agent-tools/approval-queue/approval-queue.styles.js +1 -1
  9. package/dist/components/agent-tools/artifact-panel/artifact-panel.class.d.ts +3 -1
  10. package/dist/components/agent-tools/context-inspector/context-inspector.class.d.ts +1 -0
  11. package/dist/components/agent-tools/context-inspector/context-inspector.class.js +4 -3
  12. package/dist/components/agent-tools/context-inspector/context-inspector.styles.js +1 -1
  13. package/dist/components/agent-tools/eval-dataset/eval-dataset.class.js +1 -1
  14. package/dist/components/agent-tools/eval-result/eval-result.class.js +1 -1
  15. package/dist/components/agent-tools/evaluation-run/evaluation-run.class.d.ts +1 -0
  16. package/dist/components/agent-tools/evaluation-run/evaluation-run.class.js +4 -3
  17. package/dist/components/agent-tools/evaluation-run/evaluation-run.styles.js +1 -1
  18. package/dist/components/agent-tools/policy-summary/policy-summary.class.d.ts +1 -0
  19. package/dist/components/agent-tools/policy-summary/policy-summary.class.js +4 -3
  20. package/dist/components/agent-tools/policy-summary/policy-summary.styles.js +1 -1
  21. package/dist/components/agent-tools/prompt-studio/prompt-studio.class.js +1 -1
  22. package/dist/components/agent-tools/schema-viewer/schema-viewer.class.d.ts +10 -1
  23. package/dist/components/agent-tools/schema-viewer/schema-viewer.class.js +3 -3
  24. package/dist/components/agent-tools/subagent-panel/subagent-panel.class.js +1 -1
  25. package/dist/components/agent-tools/thinking-panel/thinking-panel.class.d.ts +6 -3
  26. package/dist/components/agent-tools/thinking-panel/thinking-panel.styles.js +1 -1
  27. package/dist/components/agent-tools/tool-call-chip/tool-call-chip.class.d.ts +14 -3
  28. package/dist/components/agent-tools/tool-call-chip/tool-call-chip.class.js +2 -2
  29. package/dist/components/agent-tools/tool-param-form/tool-param-form.class.d.ts +12 -2
  30. package/dist/components/agent-tools/tool-param-form/tool-param-form.class.js +3 -1
  31. package/dist/components/charts/chart/box-plot.class.d.ts +15 -3
  32. package/dist/components/charts/chart/box-plot.class.js +3 -3
  33. package/dist/components/charts/chart/box-plot.styles.js +1 -1
  34. package/dist/components/charts/chart/chart.class.d.ts +23 -5
  35. package/dist/components/charts/chart/chart.class.js +2 -2
  36. package/dist/components/charts/chart/chart.styles.js +1 -1
  37. package/dist/components/charts/chart/lite-chart.class.js +1 -1
  38. package/dist/components/charts/chart/lite-chart.styles.js +1 -1
  39. package/dist/components/conversation/audio-visualizer/audio-visualizer.class.d.ts +4 -2
  40. package/dist/components/conversation/audio-visualizer/audio-visualizer.class.js +1 -1
  41. package/dist/components/conversation/branch-picker/branch-picker.class.d.ts +4 -2
  42. package/dist/components/conversation/branch-picker/branch-picker.class.js +1 -1
  43. package/dist/components/conversation/chat-viewport/chat-viewport.class.d.ts +4 -3
  44. package/dist/components/conversation/chat-viewport/chat-viewport.class.js +1 -1
  45. package/dist/components/conversation/code-block/code-block-core.class.d.ts +6 -11
  46. package/dist/components/conversation/code-block/code-block-core.class.js +1 -1
  47. package/dist/components/conversation/code-block/code-block-shared.d.ts +29 -1
  48. package/dist/components/conversation/code-block/code-block-shared.js +1 -1
  49. package/dist/components/conversation/code-block/code-block.class.d.ts +6 -11
  50. package/dist/components/conversation/code-block/code-block.class.js +1 -1
  51. package/dist/components/conversation/markdown/markdown-shared.js +2 -2
  52. package/dist/components/conversation/message-actions/message-actions.class.d.ts +4 -2
  53. package/dist/components/conversation/message-actions/message-actions.class.js +2 -2
  54. package/dist/components/conversation/message-parts/message-parts.class.d.ts +17 -2
  55. package/dist/components/conversation/model-select/model-select.class.js +1 -0
  56. package/dist/components/conversation/model-select/model-select.styles.js +1 -1
  57. package/dist/components/conversation/prompt-input/prompt-input.class.d.ts +5 -1
  58. package/dist/components/conversation/prompt-input/prompt-input.class.js +2 -2
  59. package/dist/components/conversation/prompt-queue/prompt-queue.class.d.ts +6 -1
  60. package/dist/components/conversation/prompt-queue/prompt-queue.class.js +2 -2
  61. package/dist/components/conversation/realtime-session/realtime-session.class.d.ts +5 -1
  62. package/dist/components/conversation/realtime-session/realtime-session.class.js +1 -1
  63. package/dist/components/conversation/selection-toolbar/selection-toolbar.class.d.ts +5 -1
  64. package/dist/components/conversation/selection-toolbar/selection-toolbar.class.js +1 -1
  65. package/dist/components/conversation/voice-picker/voice-picker.class.d.ts +13 -2
  66. package/dist/components/conversation/voice-picker/voice-picker.class.js +5 -3
  67. package/dist/components/conversation/voice-picker/voice-picker.styles.js +1 -1
  68. package/dist/components/data/calendar/calendar.class.d.ts +9 -0
  69. package/dist/components/data/calendar/calendar.class.js +2 -2
  70. package/dist/components/data/calendar/calendar.styles.js +1 -1
  71. package/dist/components/data/condition-builder/condition-builder.class.d.ts +5 -1
  72. package/dist/components/data/context-meter/context-meter.class.d.ts +4 -0
  73. package/dist/components/data/context-meter/context-meter.styles.js +1 -1
  74. package/dist/components/data/data-grid/data-grid.class.d.ts +8 -2
  75. package/dist/components/data/data-grid/data-grid.class.js +1 -2
  76. package/dist/components/data/flow-node/flow-node.class.d.ts +7 -4
  77. package/dist/components/data/flow-node/flow-node.styles.js +1 -1
  78. package/dist/components/data/funnel/funnel.class.d.ts +5 -0
  79. package/dist/components/data/funnel/funnel.class.js +4 -3
  80. package/dist/components/data/funnel/funnel.styles.js +1 -1
  81. package/dist/components/data/gauge/gauge.class.d.ts +12 -1
  82. package/dist/components/data/gauge/gauge.styles.js +1 -1
  83. package/dist/components/data/graph-query-builder/graph-query-builder.class.d.ts +50 -13
  84. package/dist/components/data/graph-query-builder/graph-query-builder.class.js +2 -2
  85. package/dist/components/data/graph-query-builder/graph-query-builder.styles.js +1 -1
  86. package/dist/components/data/heatmap/heatmap.class.d.ts +27 -9
  87. package/dist/components/data/heatmap/heatmap.class.js +5 -3
  88. package/dist/components/data/sequence-strip/sequence-strip.class.d.ts +2 -0
  89. package/dist/components/data/sequence-strip/sequence-strip.styles.js +1 -1
  90. package/dist/components/data/table/table.class.d.ts +8 -0
  91. package/dist/components/data/table/table.class.js +2 -1
  92. package/dist/components/data/tree/tree.class.d.ts +20 -1
  93. package/dist/components/data/tree/tree.class.js +1 -1
  94. package/dist/components/data/word-cloud/word-cloud.class.d.ts +4 -1
  95. package/dist/components/data/word-cloud/word-cloud.class.js +2 -2
  96. package/dist/components/forms/button/button.class.js +1 -1
  97. package/dist/components/forms/checkbox/checkbox.class.d.ts +11 -8
  98. package/dist/components/forms/checkbox/checkbox.class.js +1 -1
  99. package/dist/components/forms/checkbox/checkbox.styles.js +1 -1
  100. package/dist/components/forms/checkbox-group/checkbox-group.class.d.ts +2 -2
  101. package/dist/components/forms/checkbox-group/checkbox-group.class.js +1 -1
  102. package/dist/components/forms/code-editor/code-editor.class.d.ts +2 -0
  103. package/dist/components/forms/code-editor/code-editor.class.js +1 -1
  104. package/dist/components/forms/code-editor/code-editor.styles.js +1 -1
  105. package/dist/components/forms/color-picker/color-picker.class.d.ts +11 -1
  106. package/dist/components/forms/color-picker/color-picker.class.js +4 -3
  107. package/dist/components/forms/combobox/combobox.class.d.ts +67 -18
  108. package/dist/components/forms/combobox/combobox.class.js +7 -6
  109. package/dist/components/forms/combobox/combobox.styles.js +1 -1
  110. package/dist/components/forms/date-picker/date-input.class.d.ts +22 -2
  111. package/dist/components/forms/date-picker/date-input.class.js +4 -2
  112. package/dist/components/forms/date-picker/date-input.styles.js +1 -1
  113. package/dist/components/forms/emoji-picker/emoji-data-loader.d.ts +18 -4
  114. package/dist/components/forms/emoji-picker/emoji-data-loader.js +1 -1
  115. package/dist/components/forms/emoji-picker/emoji-picker.class.d.ts +18 -4
  116. package/dist/components/forms/emoji-picker/emoji-picker.class.js +1 -1
  117. package/dist/components/forms/emoji-picker/emoji-picker.styles.js +1 -1
  118. package/dist/components/forms/icon-button/icon-button.class.d.ts +1 -1
  119. package/dist/components/forms/input/time-input.class.d.ts +11 -1
  120. package/dist/components/forms/input/time-input.class.js +4 -3
  121. package/dist/components/forms/input/time-input.styles.js +1 -1
  122. package/dist/components/forms/locale-picker/locale-picker.class.d.ts +17 -3
  123. package/dist/components/forms/locale-picker/locale-picker.class.js +3 -2
  124. package/dist/components/forms/locale-picker/locale-picker.styles.js +1 -1
  125. package/dist/components/forms/otp-input/otp-input.class.d.ts +13 -5
  126. package/dist/components/forms/otp-input/otp-input.class.js +2 -2
  127. package/dist/components/forms/otp-input/otp-input.styles.js +1 -1
  128. package/dist/components/forms/phone-input/phone-input.class.d.ts +10 -3
  129. package/dist/components/forms/phone-input/phone-input.class.js +6 -2
  130. package/dist/components/forms/phone-input/phone-input.styles.js +1 -1
  131. package/dist/components/forms/radio/radio-group.class.d.ts +1 -1
  132. package/dist/components/forms/radio/radio-group.class.js +2 -2
  133. package/dist/components/forms/rubric-form/rubric-form.class.d.ts +9 -1
  134. package/dist/components/forms/rubric-form/rubric-form.class.js +5 -3
  135. package/dist/components/forms/select/select.class.d.ts +4 -0
  136. package/dist/components/forms/select/select.styles.js +1 -1
  137. package/dist/components/forms/slider/slider.class.d.ts +5 -1
  138. package/dist/components/forms/slider/slider.class.js +3 -3
  139. package/dist/components/forms/switch/switch.class.d.ts +6 -5
  140. package/dist/components/forms/switch/switch.class.js +1 -1
  141. package/dist/components/forms/time-range/time-range.class.d.ts +2 -2
  142. package/dist/components/forms/token-input/token-input.class.d.ts +13 -3
  143. package/dist/components/forms/token-input/token-input.class.js +3 -1
  144. package/dist/components/layout/carousel/carousel.class.d.ts +4 -1
  145. package/dist/components/layout/carousel/carousel.class.js +1 -1
  146. package/dist/components/layout/command-palette/command-palette.class.d.ts +8 -2
  147. package/dist/components/layout/command-palette/command-palette.class.js +1 -1
  148. package/dist/components/layout/command-palette/command-palette.styles.js +1 -1
  149. package/dist/components/layout/details/accordion.class.js +1 -1
  150. package/dist/components/layout/dock-panel/dock-panel.class.d.ts +10 -7
  151. package/dist/components/layout/dock-panel/dock-panel.class.js +2 -2
  152. package/dist/components/layout/dock-panel/dock-panel.styles.js +1 -1
  153. package/dist/components/layout/menu/menu.class.d.ts +13 -3
  154. package/dist/components/layout/menu/menu.class.js +4 -3
  155. package/dist/components/layout/menu/menu.styles.js +1 -1
  156. package/dist/components/layout/page/page.class.d.ts +7 -1
  157. package/dist/components/layout/reorder-list/reorder-list.class.d.ts +1 -1
  158. package/dist/components/layout/reorder-list/reorder-list.class.js +1 -1
  159. package/dist/components/layout/segmented/segmented.class.d.ts +2 -0
  160. package/dist/components/layout/segmented/segmented.styles.js +1 -1
  161. package/dist/components/layout/virtual-list/virtual-list.styles.js +1 -1
  162. package/dist/components/layout/widget/widget.class.d.ts +15 -2
  163. package/dist/components/layout/widget/widget.class.js +1 -1
  164. package/dist/components/layout/widget/widget.styles.js +1 -1
  165. package/dist/components/media/avatar/avatar.class.d.ts +4 -0
  166. package/dist/components/media/avatar/avatar.styles.js +1 -1
  167. package/dist/components/media/avatar-group/avatar-group.class.d.ts +8 -1
  168. package/dist/components/media/avatar-group/avatar-group.styles.js +1 -1
  169. package/dist/components/media/drop-zone/drop-zone.class.d.ts +10 -4
  170. package/dist/components/media/drop-zone/drop-zone.class.js +2 -2
  171. package/dist/components/media/drop-zone/drop-zone.styles.js +1 -1
  172. package/dist/components/media/flag/flag.class.js +1 -1
  173. package/dist/components/media/map/map.class.d.ts +19 -5
  174. package/dist/components/media/map/map.class.js +3 -3
  175. package/dist/components/media/video-playlist/video-playlist.class.d.ts +6 -3
  176. package/dist/components/media/video-playlist/video-playlist.class.js +1 -1
  177. package/dist/components/overlays/callout/callout.class.d.ts +4 -1
  178. package/dist/components/overlays/dialog/dialog.class.d.ts +4 -1
  179. package/dist/components/overlays/overlay/overlay.styles.js +1 -1
  180. package/dist/components/overlays/overlay/popover.class.d.ts +9 -1
  181. package/dist/components/overlays/overlay/popover.class.js +3 -2
  182. package/dist/components/overlays/overlay/tooltip.class.d.ts +14 -4
  183. package/dist/components/overlays/overlay/tooltip.class.js +3 -2
  184. package/dist/components/overlays/popup/popup.class.d.ts +15 -1
  185. package/dist/components/overlays/popup/popup.class.js +3 -3
  186. package/dist/components/overlays/popup/popup.styles.js +1 -1
  187. package/dist/components/overlays/progress/progress-bar.class.d.ts +2 -0
  188. package/dist/components/overlays/progress/progress.styles.js +1 -1
  189. package/dist/components/retrieval/citation-badge/citation-badge.class.d.ts +4 -2
  190. package/dist/components/retrieval/citation-badge/citation-badge.class.js +1 -1
  191. package/dist/components/retrieval/claim-evidence/claim-evidence.class.d.ts +4 -0
  192. package/dist/components/retrieval/claim-evidence/claim-evidence.class.js +4 -3
  193. package/dist/components/retrieval/claim-evidence/claim-evidence.styles.js +1 -1
  194. package/dist/components/retrieval/community-card/community-card.class.d.ts +6 -1
  195. package/dist/components/retrieval/community-card/community-card.styles.js +1 -1
  196. package/dist/components/retrieval/embedding-explorer/embedding-explorer.class.d.ts +9 -1
  197. package/dist/components/retrieval/embedding-explorer/embedding-explorer.class.js +4 -3
  198. package/dist/components/retrieval/entity-card/entity-card.styles.js +1 -1
  199. package/dist/components/retrieval/entity-chip/entity-chip.class.d.ts +4 -2
  200. package/dist/components/retrieval/entity-chip/entity-chip.class.js +1 -1
  201. package/dist/components/retrieval/entity-dossier/entity-dossier.class.js +2 -2
  202. package/dist/components/retrieval/graph-legend/graph-legend.class.d.ts +18 -4
  203. package/dist/components/retrieval/graph-legend/graph-legend.class.js +2 -2
  204. package/dist/components/retrieval/grounding-summary/grounding-summary.class.d.ts +7 -0
  205. package/dist/components/retrieval/grounding-summary/grounding-summary.class.js +4 -3
  206. package/dist/components/retrieval/grounding-summary/grounding-summary.styles.js +1 -1
  207. package/dist/components/retrieval/memory-panel/memory-panel.class.d.ts +6 -0
  208. package/dist/components/retrieval/memory-panel/memory-panel.class.js +4 -3
  209. package/dist/components/retrieval/memory-panel/memory-panel.styles.js +1 -1
  210. package/dist/components/retrieval/mind-map/mind-map-layout.d.ts +17 -1
  211. package/dist/components/retrieval/mind-map/mind-map-layout.js +1 -1
  212. package/dist/components/retrieval/mind-map/mind-map.class.d.ts +8 -1
  213. package/dist/components/retrieval/mind-map/mind-map.class.js +3 -2
  214. package/dist/components/retrieval/rag-eval-dashboard/rag-eval-dashboard.class.d.ts +5 -0
  215. package/dist/components/retrieval/rag-eval-dashboard/rag-eval-dashboard.class.js +6 -5
  216. package/dist/components/retrieval/rag-eval-dashboard/rag-eval-dashboard.styles.js +1 -1
  217. package/dist/components/retrieval/retrieval-compare/retrieval-compare.class.js +5 -5
  218. package/dist/components/retrieval/retrieval-compare/retrieval-compare.styles.js +1 -1
  219. package/dist/components/retrieval/source-list/source-list.class.d.ts +21 -2
  220. package/dist/components/retrieval/source-list/source-list.class.js +2 -2
  221. package/dist/components/retrieval/source-list/source-list.styles.js +1 -1
  222. package/dist/components/retrieval/source-picker/source-picker.class.d.ts +3 -1
  223. package/dist/components/retrieval/source-picker/source-picker.class.js +2 -2
  224. package/dist/components/utility/diff-view/diff-view.class.d.ts +105 -8
  225. package/dist/components/utility/diff-view/diff-view.class.js +21 -5
  226. package/dist/components/utility/diff-view/diff-view.styles.js +1 -1
  227. package/dist/components/utility/export-button/export-button.class.d.ts +26 -2
  228. package/dist/components/utility/export-button/export-button.class.js +4 -2
  229. package/dist/components/utility/export-button/export-button.styles.js +1 -1
  230. package/dist/components/utility/mention-popover/mention-popover.class.d.ts +19 -1
  231. package/dist/components/utility/mention-popover/mention-popover.class.js +3 -2
  232. package/dist/components/utility/mention-popover/mention-popover.styles.js +1 -1
  233. package/dist/components/utility/tour/tour.class.d.ts +1 -3
  234. package/dist/components/utility/tour/tour.class.js +1 -1
  235. package/dist/components/viewers/archive-viewer/archive-viewer.class.d.ts +20 -3
  236. package/dist/components/viewers/archive-viewer/archive-viewer.class.js +1 -1
  237. package/dist/components/viewers/ebook-viewer/ebook-viewer.class.js +1 -1
  238. package/dist/components/viewers/geojson-view/geojson-view.styles.js +1 -1
  239. package/dist/components/viewers/geojson-view/geojson-viewer.class.d.ts +5 -0
  240. package/dist/components/viewers/geojson-view/geojson-viewer.class.js +6 -3
  241. package/dist/components/viewers/pdf-viewer/pdf-viewer.class.d.ts +7 -1
  242. package/dist/components/viewers/pdf-viewer/pdf-viewer.class.js +1 -1
  243. package/dist/components/viewers/pptx-viewer/pptx-viewer.class.d.ts +7 -1
  244. package/dist/components/viewers/pptx-viewer/pptx-viewer.class.js +1 -1
  245. package/dist/components/viewers/xml-viewer/xml-viewer.class.d.ts +5 -0
  246. package/dist/components/viewers/xml-viewer/xml-viewer.class.js +1 -1
  247. package/dist/custom-elements-jsx.d.ts +1 -1
  248. package/dist/events.d.ts +79 -30
  249. package/dist/internal/accessibility-visibility.js +1 -1
  250. package/dist/internal/aria-reflection.js +1 -1
  251. package/dist/internal/catalog-picker.d.ts +14 -3
  252. package/dist/internal/catalog-picker.js +1 -1
  253. package/dist/internal/default-strings.generated.d.ts +1 -1
  254. package/dist/internal/default-strings.generated.js +2 -2
  255. package/dist/internal/localization-types.d.ts +1 -1
  256. package/dist/internal/localization.js +2 -2
  257. package/dist/internal/lyra-element.d.ts +17 -0
  258. package/dist/internal/lyra-element.js +2 -2
  259. package/dist/internal/package-metadata.d.ts +1 -1
  260. package/dist/internal/package-metadata.js +1 -1
  261. package/dist/svelte.d.ts +1 -1
  262. package/dist/testing/lyra-tag-event-map.js +1 -1
  263. package/dist/translations/ar/agent-tools.js +1 -1
  264. package/dist/translations/ar/data.js +1 -1
  265. package/dist/translations/ar/retrieval.js +1 -1
  266. package/dist/translations/ar/shared.js +1 -1
  267. package/dist/translations/ar/viewers.js +1 -1
  268. package/dist/translations/de/agent-tools.js +1 -1
  269. package/dist/translations/de/data.js +1 -1
  270. package/dist/translations/de/retrieval.js +1 -1
  271. package/dist/translations/de/shared.js +1 -1
  272. package/dist/translations/de/viewers.js +1 -1
  273. package/dist/translations/es/agent-tools.js +1 -1
  274. package/dist/translations/es/data.js +1 -1
  275. package/dist/translations/es/retrieval.js +1 -1
  276. package/dist/translations/es/shared.js +1 -1
  277. package/dist/translations/es/viewers.js +1 -1
  278. package/dist/translations/fa/agent-tools.js +1 -1
  279. package/dist/translations/fa/data.js +1 -1
  280. package/dist/translations/fa/retrieval.js +1 -1
  281. package/dist/translations/fa/shared.js +1 -1
  282. package/dist/translations/fa/viewers.js +1 -1
  283. package/dist/translations/fr/agent-tools.js +1 -1
  284. package/dist/translations/fr/data.js +1 -1
  285. package/dist/translations/fr/retrieval.js +1 -1
  286. package/dist/translations/fr/shared.js +1 -1
  287. package/dist/translations/fr/viewers.js +1 -1
  288. package/dist/translations/he/agent-tools.js +1 -1
  289. package/dist/translations/he/data.js +1 -1
  290. package/dist/translations/he/retrieval.js +1 -1
  291. package/dist/translations/he/shared.js +1 -1
  292. package/dist/translations/he/viewers.js +1 -1
  293. package/dist/translations/it/agent-tools.js +1 -1
  294. package/dist/translations/it/data.js +1 -1
  295. package/dist/translations/it/retrieval.js +1 -1
  296. package/dist/translations/it/shared.js +1 -1
  297. package/dist/translations/it/viewers.js +1 -1
  298. package/dist/translations/ja/agent-tools.js +1 -1
  299. package/dist/translations/ja/data.js +1 -1
  300. package/dist/translations/ja/retrieval.js +1 -1
  301. package/dist/translations/ja/shared.js +1 -1
  302. package/dist/translations/ja/viewers.js +1 -1
  303. package/dist/translations/pt-BR/agent-tools.js +1 -1
  304. package/dist/translations/pt-BR/data.js +1 -1
  305. package/dist/translations/pt-BR/retrieval.js +1 -1
  306. package/dist/translations/pt-BR/shared.js +1 -1
  307. package/dist/translations/pt-BR/viewers.js +1 -1
  308. package/dist/translations/ro/agent-tools.js +1 -1
  309. package/dist/translations/ro/data.js +1 -1
  310. package/dist/translations/ro/retrieval.js +1 -1
  311. package/dist/translations/ro/shared.js +1 -1
  312. package/dist/translations/ro/viewers.js +1 -1
  313. package/dist/translations/ru/agent-tools.js +1 -1
  314. package/dist/translations/ru/data.js +1 -1
  315. package/dist/translations/ru/retrieval.js +1 -1
  316. package/dist/translations/ru/shared.js +1 -1
  317. package/dist/translations/ru/viewers.js +1 -1
  318. package/dist/translations/zh-CN/agent-tools.js +1 -1
  319. package/dist/translations/zh-CN/data.js +1 -1
  320. package/dist/translations/zh-CN/retrieval.js +1 -1
  321. package/dist/translations/zh-CN/shared.js +1 -1
  322. package/dist/translations/zh-CN/viewers.js +1 -1
  323. package/dist/vue.d.ts +1 -1
  324. package/llms/components/lr-activity-feed.md +20 -9
  325. package/llms/components/lr-approval-queue.md +3 -2
  326. package/llms/components/lr-archive-viewer.md +8 -1
  327. package/llms/components/lr-artifact-panel.md +3 -1
  328. package/llms/components/lr-audio-visualizer.md +3 -1
  329. package/llms/components/lr-avatar-group.md +13 -6
  330. package/llms/components/lr-avatar.md +6 -2
  331. package/llms/components/lr-bar-chart.md +6 -3
  332. package/llms/components/lr-box-plot.md +6 -2
  333. package/llms/components/lr-branch-picker.md +3 -1
  334. package/llms/components/lr-bubble-chart.md +6 -3
  335. package/llms/components/lr-calendar.md +10 -3
  336. package/llms/components/lr-carousel.md +4 -2
  337. package/llms/components/lr-chart.md +12 -4
  338. package/llms/components/lr-chat-viewport.md +3 -2
  339. package/llms/components/lr-checkbox.md +8 -5
  340. package/llms/components/lr-citation-badge.md +2 -0
  341. package/llms/components/lr-claim-evidence.md +6 -2
  342. package/llms/components/lr-code-editor.md +3 -1
  343. package/llms/components/lr-color-picker.md +20 -8
  344. package/llms/components/lr-combobox.md +26 -3
  345. package/llms/components/lr-command-palette.md +6 -3
  346. package/llms/components/lr-community-card.md +7 -4
  347. package/llms/components/lr-context-inspector.md +3 -2
  348. package/llms/components/lr-context-meter.md +13 -5
  349. package/llms/components/lr-data-grid.md +2 -0
  350. package/llms/components/lr-date-input.md +12 -3
  351. package/llms/components/lr-date-picker.md +11 -2
  352. package/llms/components/lr-diff-view.md +46 -5
  353. package/llms/components/lr-doughnut-chart.md +6 -3
  354. package/llms/components/lr-drop-zone.md +7 -3
  355. package/llms/components/lr-embedding-explorer.md +8 -2
  356. package/llms/components/lr-emoji-picker.md +5 -1
  357. package/llms/components/lr-entity-chip.md +2 -0
  358. package/llms/components/lr-eval-run.md +3 -2
  359. package/llms/components/lr-export-button.md +5 -2
  360. package/llms/components/lr-flow-node.md +7 -4
  361. package/llms/components/lr-funnel.md +7 -2
  362. package/llms/components/lr-gauge.md +7 -2
  363. package/llms/components/lr-geojson-view.md +10 -2
  364. package/llms/components/lr-geojson-viewer.md +10 -2
  365. package/llms/components/lr-graph-legend.md +6 -3
  366. package/llms/components/lr-graph-query-builder.md +21 -11
  367. package/llms/components/lr-grounding-summary.md +8 -2
  368. package/llms/components/lr-heatmap.md +5 -2
  369. package/llms/components/lr-histogram.md +4 -2
  370. package/llms/components/lr-json-schema-viewer.md +7 -5
  371. package/llms/components/lr-line-chart.md +6 -3
  372. package/llms/components/lr-locale-picker.md +4 -1
  373. package/llms/components/lr-map.md +5 -3
  374. package/llms/components/lr-memory-panel.md +6 -2
  375. package/llms/components/lr-mention-popover.md +7 -4
  376. package/llms/components/lr-message-actions.md +3 -1
  377. package/llms/components/lr-message-parts.md +8 -2
  378. package/llms/components/lr-mind-map.md +11 -2
  379. package/llms/components/lr-option.md +25 -2
  380. package/llms/components/lr-otp-input.md +3 -1
  381. package/llms/components/lr-phone-input.md +9 -5
  382. package/llms/components/lr-pie-chart.md +6 -3
  383. package/llms/components/lr-polar-area-chart.md +6 -3
  384. package/llms/components/lr-policy-summary.md +3 -2
  385. package/llms/components/lr-progress-bar.md +4 -1
  386. package/llms/components/lr-prompt-input.md +4 -1
  387. package/llms/components/lr-prompt-queue.md +5 -2
  388. package/llms/components/lr-radar-chart.md +6 -3
  389. package/llms/components/lr-rag-eval-dashboard.md +7 -2
  390. package/llms/components/lr-realtime-session.md +3 -1
  391. package/llms/components/lr-rubric-form.md +6 -1
  392. package/llms/components/lr-scatter-chart.md +6 -3
  393. package/llms/components/lr-segmented.md +3 -1
  394. package/llms/components/lr-select.md +7 -1
  395. package/llms/components/lr-selection-toolbar.md +4 -1
  396. package/llms/components/lr-sequence-strip.md +7 -3
  397. package/llms/components/lr-source-card.md +16 -1
  398. package/llms/components/lr-source-list.md +17 -2
  399. package/llms/components/lr-source-picker.md +3 -1
  400. package/llms/components/lr-subagent-panel.md +6 -3
  401. package/llms/components/lr-switch.md +4 -3
  402. package/llms/components/lr-table.md +6 -1
  403. package/llms/components/lr-thinking-panel.md +8 -5
  404. package/llms/components/lr-token-input.md +15 -1
  405. package/llms/components/lr-tool-call-chip.md +2 -0
  406. package/llms/components/lr-tool-param-form.md +15 -4
  407. package/llms/components/lr-tooltip.md +8 -4
  408. package/llms/components/lr-trace-tree.md +7 -4
  409. package/llms/components/lr-video-playlist.md +7 -5
  410. package/llms/components/lr-voice-picker.md +7 -4
  411. package/llms/components/lr-widget.md +15 -2
  412. package/llms/migration.md +4 -4
  413. package/llms-full.txt +552 -159
  414. package/package.json +11 -9
  415. package/registrations.json +1 -1
  416. package/vscode-css-data.json +1 -1
  417. package/vscode-html-data.json +1 -1
  418. package/web-types.json +1 -1
@@ -19,7 +19,9 @@ import{type TemplateResult,type PropertyValues}from'lit';import{LyraElement}from
19
19
  * hover. When preview content exists, the button keeps a stable
20
20
  * `aria-describedby` relationship to the `role="tooltip"` panel while it is
21
21
  * both hidden and visible, so assistive technology can resolve the preview
22
- * as soon as focus causes it to open.
22
+ * as soon as focus causes it to open. An open popover participates in shared
23
+ * Escape ordering even while only hovered, deferring to a genuinely topmost
24
+ * overlay opened on top of it.
23
25
  *
24
26
  * An authored host `aria-label` deliberately names only the custom-element boundary; it is not
25
27
  * copied onto the internal button. Host naming does not cross the shadow boundary, so the button
@@ -97,4 +99,4 @@ sourceId:string;
97
99
  href:string;
98
100
  /** Adds source context to the accessible name while retaining the visible citation index
99
101
  * (`"Citation {index}, {label}"`). */
100
- label:string;private popoverOpen;private buttonEl?;private popoverEl?;private readonly popoverId;private readonly slotPresence;private cleanupPositioner?;private hideTimer?;private hideTimerOwner?;private hovering;private focused;private get hasPreviewSlot();protected willUpdate(changed:PropertyValues):void;protected updated(changed:PropertyValues):void;disconnectedCallback():void;private get accessibleLabel();private showPreview;private clearHideTimer;private scheduleHidePreview;private hidePreviewNow;private onPointerEnter;private onPointerLeave;private onFocusIn;private onFocusOut;private onKeyDown;private onClick;private onDblClick;private emitOpen;render():TemplateResult;}declare global{interface HTMLElementTagNameMap{'lr-citation-badge':LyraCitationBadge;}}
102
+ label:string;private popoverOpen;private buttonEl?;private popoverEl?;private readonly popoverId;private readonly slotPresence;private cleanupPositioner?;private overlayHandle?;private hideTimer?;private hideTimerOwner?;private hovering;private focused;private get hasPreviewSlot();protected willUpdate(changed:PropertyValues):void;protected updated(changed:PropertyValues):void;disconnectedCallback():void;private get accessibleLabel();private showPreview;private clearHideTimer;private scheduleHidePreview;private hidePreviewNow;private onPointerEnter;private onPointerLeave;private onFocusIn;private onFocusOut;private onKeyDown;private onClick;private onDblClick;private emitOpen;render():TemplateResult;}declare global{interface HTMLElementTagNameMap{'lr-citation-badge':LyraCitationBadge;}}
@@ -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,query}from"lit/decorators.js";import{LyraElement}from"../../../internal/lyra-element.js";import{deferredPlace as place}from"../../../internal/anchored-overlay-runtime.js";import{resolveEffectivePositioningStrategy}from"../../../internal/positioning-strategy.js";import{nextId}from"../../../internal/a11y.js";import{SlotPresenceController}from"../../../internal/slot-presence-controller.js";import{finiteInteger}from"../../../internal/numbers.js";import{getNumberFormat}from"../../../internal/intl-cache.js";import{styles}from"./citation-badge.styles.js";import{LYRA_DEFAULT_citation,LYRA_DEFAULT_citationHighConfidence,LYRA_DEFAULT_citationLowConfidence,LYRA_DEFAULT_citationMediumConfidence,LYRA_DEFAULT_citationUnverified,LYRA_DEFAULT_citationVerified,LYRA_DEFAULT_citationWithCustomLabel,LYRA_DEFAULT_citationWithStatus,LYRA_DEFAULT_collapse,LYRA_DEFAULT_details,LYRA_DEFAULT_map,LYRA_DEFAULT_navigation,LYRA_DEFAULT_open,LYRA_DEFAULT_popover,LYRA_DEFAULT_search,LYRA_DEFAULT_select}from"../../../internal/default-strings.generated.js";const STATUS_MESSAGE_KEY={default:null,high:"citationHighConfidence",medium:"citationMediumConfidence",low:"citationLowConfidence",verified:"citationVerified",unverified:"citationUnverified"},HIDE_DELAY_MS=200;class LyraCitationBadge extends LyraElement{constructor(){super(...arguments),this._index=1,this.status="default",this.sourceId="",this.href="",this.label="",this.popoverOpen=!1,this.popoverId=nextId("citation-badge-popover"),this.slotPresence=new SlotPresenceController(this),this.hovering=!1,this.focused=!1,this.onPointerEnter=()=>{this.hovering=!0,this.showPreview()},this.onPointerLeave=()=>{this.hovering=!1,this.scheduleHidePreview()},this.onFocusIn=()=>{this.focused=!0,this.showPreview()},this.onFocusOut=()=>{this.focused=!1,!this.hovering&&this.hidePreviewNow()},this.onKeyDown=e=>{if(e.key==="Escape"&&this.popoverOpen){e.stopPropagation(),this.hidePreviewNow();return}e.key===" "&&!e.repeat&&e.target===this.buttonEl&&(e.preventDefault(),this.emitOpen())},this.onClick=()=>{this.emit("lr-citation-activate",{sourceId:this.sourceId,index:this.index})},this.onDblClick=()=>{this.emitOpen()}}static{this.defaultStrings={...super.defaultStrings,citation:LYRA_DEFAULT_citation,citationHighConfidence:LYRA_DEFAULT_citationHighConfidence,citationLowConfidence:LYRA_DEFAULT_citationLowConfidence,citationMediumConfidence:LYRA_DEFAULT_citationMediumConfidence,citationUnverified:LYRA_DEFAULT_citationUnverified,citationVerified:LYRA_DEFAULT_citationVerified,citationWithCustomLabel:LYRA_DEFAULT_citationWithCustomLabel,citationWithStatus:LYRA_DEFAULT_citationWithStatus,collapse:LYRA_DEFAULT_collapse,details:LYRA_DEFAULT_details,map:LYRA_DEFAULT_map,navigation:LYRA_DEFAULT_navigation,open:LYRA_DEFAULT_open,popover:LYRA_DEFAULT_popover,search:LYRA_DEFAULT_search,select:LYRA_DEFAULT_select}}static{this.styles=[LyraElement.styles,styles]}get index(){return this._index}set index(value){const old=this._index;this._index=finiteInteger(value,1,1),this.requestUpdate("index",old)}get hasPreviewSlot(){return this.slotPresence.has()}willUpdate(changed){super.willUpdate(changed),this.popoverOpen&&!this.hasPreviewSlot&&this.hidePreviewNow()}updated(changed){super.updated(changed),changed.has("popoverOpen")&&(this.cleanupPositioner?.(),this.cleanupPositioner=void 0,this.popoverOpen&&this.buttonEl&&this.popoverEl&&(this.cleanupPositioner=place(this.buttonEl,this.popoverEl,{placement:"top-start",strategy:resolveEffectivePositioningStrategy(this,void 0,"fixed")})))}disconnectedCallback(){super.disconnectedCallback(),this.cleanupPositioner?.(),this.cleanupPositioner=void 0,this.clearHideTimer(),this.popoverOpen=!1,this.hovering=!1,this.focused=!1}get accessibleLabel(){const index=getNumberFormat(this.effectiveLocale).format(this.index);if(this.label)return this.localize("citationWithCustomLabel",void 0,{index,label:this.label});const key=STATUS_MESSAGE_KEY[this.status],statusText=key?this.localize(key):"",citationLabel=this.localize("citation",void 0,{index});return statusText?this.localize("citationWithStatus",void 0,{index,status:statusText}):citationLabel}showPreview(){this.hasPreviewSlot&&(this.clearHideTimer(),!this.popoverOpen&&(this.popoverOpen=!0))}clearHideTimer(){this.hideTimer!==void 0&&this.hideTimerOwner?.clearTimeout(this.hideTimer),this.hideTimer=void 0,this.hideTimerOwner=void 0}scheduleHidePreview(){if(!this.popoverOpen||this.hovering||this.focused)return;this.clearHideTimer();const ownerWindow=this.ownerDocument.defaultView;if(!ownerWindow)return;const handle=ownerWindow.setTimeout(()=>{this.hideTimer===handle&&(this.hideTimer=void 0,this.hideTimerOwner=void 0,this.popoverOpen=!1)},HIDE_DELAY_MS);this.hideTimer=handle,this.hideTimerOwner=ownerWindow}hidePreviewNow(){this.clearHideTimer(),this.popoverOpen&&(this.popoverOpen=!1)}emitOpen(){this.emit("lr-citation-open",{sourceId:this.sourceId,index:this.index,href:this.href||void 0})}render(){const formattedIndex=getNumberFormat(this.effectiveLocale).format(this.index);return html`
1
+ var __decorate=function(decorators,target,key,desc){var c=arguments.length,r=c<3?target:desc===null?desc=Object.getOwnPropertyDescriptor(target,key):desc,d;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")r=Reflect.decorate(decorators,target,key,desc);else for(var i=decorators.length-1;i>=0;i--)(d=decorators[i])&&(r=(c<3?d(r):c>3?d(target,key,r):d(target,key))||r);return c>3&&r&&Object.defineProperty(target,key,r),r};import{html,nothing}from"lit";import{property,state,query}from"lit/decorators.js";import{LyraElement}from"../../../internal/lyra-element.js";import{deferredPlace as place}from"../../../internal/anchored-overlay-runtime.js";import{activateNonmodalOverlay}from"../../../internal/nonmodal-overlay-manager.js";import{resolveEffectivePositioningStrategy}from"../../../internal/positioning-strategy.js";import{nextId}from"../../../internal/a11y.js";import{SlotPresenceController}from"../../../internal/slot-presence-controller.js";import{finiteInteger}from"../../../internal/numbers.js";import{getNumberFormat}from"../../../internal/intl-cache.js";import{styles}from"./citation-badge.styles.js";import{LYRA_DEFAULT_citation,LYRA_DEFAULT_citationHighConfidence,LYRA_DEFAULT_citationLowConfidence,LYRA_DEFAULT_citationMediumConfidence,LYRA_DEFAULT_citationUnverified,LYRA_DEFAULT_citationVerified,LYRA_DEFAULT_citationWithCustomLabel,LYRA_DEFAULT_citationWithStatus,LYRA_DEFAULT_collapse,LYRA_DEFAULT_details,LYRA_DEFAULT_map,LYRA_DEFAULT_navigation,LYRA_DEFAULT_open,LYRA_DEFAULT_popover,LYRA_DEFAULT_search,LYRA_DEFAULT_select}from"../../../internal/default-strings.generated.js";const STATUS_MESSAGE_KEY={default:null,high:"citationHighConfidence",medium:"citationMediumConfidence",low:"citationLowConfidence",verified:"citationVerified",unverified:"citationUnverified"},HIDE_DELAY_MS=200;class LyraCitationBadge extends LyraElement{constructor(){super(...arguments),this._index=1,this.status="default",this.sourceId="",this.href="",this.label="",this.popoverOpen=!1,this.popoverId=nextId("citation-badge-popover"),this.slotPresence=new SlotPresenceController(this),this.hovering=!1,this.focused=!1,this.onPointerEnter=()=>{this.hovering=!0,this.showPreview()},this.onPointerLeave=()=>{this.hovering=!1,this.scheduleHidePreview()},this.onFocusIn=()=>{this.focused=!0,this.showPreview()},this.onFocusOut=()=>{this.focused=!1,!this.hovering&&this.hidePreviewNow()},this.onKeyDown=e=>{if(e.key==="Escape"&&this.popoverOpen&&this.overlayHandle?.isTopmost()){e.stopPropagation(),this.hidePreviewNow();return}e.key===" "&&!e.repeat&&e.target===this.buttonEl&&(e.preventDefault(),this.emitOpen())},this.onClick=()=>{this.emit("lr-citation-activate",{sourceId:this.sourceId,index:this.index})},this.onDblClick=()=>{this.emitOpen()}}static{this.defaultStrings={...super.defaultStrings,citation:LYRA_DEFAULT_citation,citationHighConfidence:LYRA_DEFAULT_citationHighConfidence,citationLowConfidence:LYRA_DEFAULT_citationLowConfidence,citationMediumConfidence:LYRA_DEFAULT_citationMediumConfidence,citationUnverified:LYRA_DEFAULT_citationUnverified,citationVerified:LYRA_DEFAULT_citationVerified,citationWithCustomLabel:LYRA_DEFAULT_citationWithCustomLabel,citationWithStatus:LYRA_DEFAULT_citationWithStatus,collapse:LYRA_DEFAULT_collapse,details:LYRA_DEFAULT_details,map:LYRA_DEFAULT_map,navigation:LYRA_DEFAULT_navigation,open:LYRA_DEFAULT_open,popover:LYRA_DEFAULT_popover,search:LYRA_DEFAULT_search,select:LYRA_DEFAULT_select}}static{this.styles=[LyraElement.styles,styles]}get index(){return this._index}set index(value){const old=this._index;this._index=finiteInteger(value,1,1),this.requestUpdate("index",old)}get hasPreviewSlot(){return this.slotPresence.has()}willUpdate(changed){super.willUpdate(changed),this.popoverOpen&&!this.hasPreviewSlot&&this.hidePreviewNow()}updated(changed){super.updated(changed),changed.has("popoverOpen")&&(this.cleanupPositioner?.(),this.cleanupPositioner=void 0,this.overlayHandle?.deactivate({restoreFocus:!1}),this.overlayHandle=void 0,this.popoverOpen&&this.buttonEl&&this.popoverEl&&(this.cleanupPositioner=place(this.buttonEl,this.popoverEl,{placement:"top-start",strategy:resolveEffectivePositioningStrategy(this,void 0,"fixed")}),this.overlayHandle=activateNonmodalOverlay({host:this,panel:()=>this.popoverEl??null,onEscape:()=>this.hidePreviewNow(),restoreFocusTo:null})))}disconnectedCallback(){super.disconnectedCallback(),this.cleanupPositioner?.(),this.cleanupPositioner=void 0,this.overlayHandle?.deactivate({restoreFocus:!1}),this.overlayHandle=void 0,this.clearHideTimer(),this.popoverOpen=!1,this.hovering=!1,this.focused=!1}get accessibleLabel(){const index=getNumberFormat(this.effectiveLocale).format(this.index);if(this.label)return this.localize("citationWithCustomLabel",void 0,{index,label:this.label});const key=STATUS_MESSAGE_KEY[this.status],statusText=key?this.localize(key):"",citationLabel=this.localize("citation",void 0,{index});return statusText?this.localize("citationWithStatus",void 0,{index,status:statusText}):citationLabel}showPreview(){this.hasPreviewSlot&&(this.clearHideTimer(),!this.popoverOpen&&(this.popoverOpen=!0))}clearHideTimer(){this.hideTimer!==void 0&&this.hideTimerOwner?.clearTimeout(this.hideTimer),this.hideTimer=void 0,this.hideTimerOwner=void 0}scheduleHidePreview(){if(!this.popoverOpen||this.hovering||this.focused)return;this.clearHideTimer();const ownerWindow=this.ownerDocument.defaultView;if(!ownerWindow)return;const handle=ownerWindow.setTimeout(()=>{this.hideTimer===handle&&(this.hideTimer=void 0,this.hideTimerOwner=void 0,this.popoverOpen=!1)},HIDE_DELAY_MS);this.hideTimer=handle,this.hideTimerOwner=ownerWindow}hidePreviewNow(){this.clearHideTimer(),this.popoverOpen&&(this.popoverOpen=!1)}emitOpen(){this.emit("lr-citation-open",{sourceId:this.sourceId,index:this.index,href:this.href||void 0})}render(){const formattedIndex=getNumberFormat(this.effectiveLocale).format(this.index);return html`
2
2
  <span
3
3
  class="wrapper"
4
4
  @pointerenter=${this.onPointerEnter}
@@ -10,6 +10,9 @@ import type{LyraEventDetailSnapshot}from'../../../internal/lyra-element.js';impo
10
10
  * and reassign it after changes; mutating the assigned array does not update the view. Blank
11
11
  * claim/citation ids and later duplicates are ignored before lookup, rendering, counts, or
12
12
  * activation. The first record for an id wins.
13
+ *
14
+ * At most 500 claims render as `[part="claim"]` rows; a `claims` array past that length renders a
15
+ * localized `[part="limit"]` notice after the list rather than mounting an unbounded number of rows.
13
16
  * A nested badge's `lr-citation-activate` is contained and translated to `lr-citation-select` with
14
17
  * the complete citation record. Its distinct `lr-citation-open` signal intentionally remains a
15
18
  * composed child event and crosses this host unchanged, preserving its `{ sourceId, index, href }`
@@ -28,6 +31,7 @@ import type{LyraEventDetailSnapshot}from'../../../internal/lyra-element.js';impo
28
31
  * @csspart confidence - The optional localized confidence.
29
32
  * @csspart explanation - Caller-supplied assessment explanation.
30
33
  * @csspart evidence - Resolved evidence citations for one claim.
34
+ * @csspart limit - Localized notice shown when `claims` exceeds the 500-claim render ceiling.
31
35
  * @csspart empty - The empty state.
32
36
  * @cssprop [--lr-claim-evidence-compact-padding=var(--lr-space-xs)] - `[part="claim-trigger"]`
33
37
  * padding while `compact`.
@@ -1,4 +1,4 @@
1
- var __decorate=function(decorators,target,key,desc){var c=arguments.length,r=c<3?target:desc===null?desc=Object.getOwnPropertyDescriptor(target,key):desc,d;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")r=Reflect.decorate(decorators,target,key,desc);else for(var i=decorators.length-1;i>=0;i--)(d=decorators[i])&&(r=(c<3?d(r):c>3?d(target,key,r):d(target,key))||r);return c>3&&r&&Object.defineProperty(target,key,r),r};import{html,nothing}from"lit";import{property}from"lit/decorators.js";import{getOwnDataDescriptor,MISSING_OWN_DATA_DESCRIPTOR,UNSAFE_OWN_DATA_DESCRIPTOR}from"../../../internal/data-descriptors.js";import{getNumberFormat}from"../../../internal/intl-cache.js";import{LyraElement}from"../../../internal/lyra-element.js";import{finiteRange}from"../../../internal/numbers.js";import"../../overlays/badge/badge.class.js";import"../../overlays/empty/empty.class.js";import"../citation-badge/citation-badge.class.js";import{styles}from"./claim-evidence.styles.js";import{retrievalSemanticLabel,retrievalSemanticRole}from"../retrieval-semantic-owner.js";import{LYRA_DEFAULT_citation,LYRA_DEFAULT_claimEvidenceConfidence,LYRA_DEFAULT_claimEvidenceContradicted,LYRA_DEFAULT_claimEvidenceEmpty,LYRA_DEFAULT_claimEvidenceLabel,LYRA_DEFAULT_claimEvidencePartiallySupported,LYRA_DEFAULT_claimEvidenceSupported,LYRA_DEFAULT_claimEvidenceUnsupported,LYRA_DEFAULT_collapse,LYRA_DEFAULT_details,LYRA_DEFAULT_map,LYRA_DEFAULT_navigation,LYRA_DEFAULT_open,LYRA_DEFAULT_popover,LYRA_DEFAULT_search,LYRA_DEFAULT_select}from"../../../internal/default-strings.generated.js";const STATUS_VARIANT={supported:"success","partially-supported":"warning",unsupported:"danger",contradicted:"danger"},MAX_PROJECTED_CLAIM_EVIDENCE_ROWS=1e4,EMPTY_CANONICAL_CLAIMS=Object.freeze([]),EMPTY_CANONICAL_CITATIONS=Object.freeze([]);function descriptorValue(value,property2){return getOwnDataDescriptor(value,property2)}function valueOfDescriptor(descriptor){return descriptor===MISSING_OWN_DATA_DESCRIPTOR||descriptor===UNSAFE_OWN_DATA_DESCRIPTOR?void 0:descriptor.value}function hasUnsafeDescriptor(descriptors){return descriptors.some(descriptor=>descriptor===UNSAFE_OWN_DATA_DESCRIPTOR)}function projectCitationIds(value){try{if(!Array.isArray(value))return;const lengthDescriptor=descriptorValue(value,"length");if(lengthDescriptor===MISSING_OWN_DATA_DESCRIPTOR||lengthDescriptor===UNSAFE_OWN_DATA_DESCRIPTOR||typeof lengthDescriptor.value!="number"||!Number.isSafeInteger(lengthDescriptor.value)||lengthDescriptor.value<0)return;const ids=[],length=Math.min(lengthDescriptor.value,MAX_PROJECTED_CLAIM_EVIDENCE_ROWS);for(let index=0;index<length;index+=1){const descriptor=descriptorValue(value,String(index));if(descriptor===UNSAFE_OWN_DATA_DESCRIPTOR)return;descriptor!==MISSING_OWN_DATA_DESCRIPTOR&&typeof descriptor.value=="string"&&ids.push(descriptor.value)}return Object.freeze(ids)}catch{return}}function projectClaim(value){try{if(value===null||typeof value!="object"||Array.isArray(value))return;const idDescriptor=descriptorValue(value,"id"),textDescriptor=descriptorValue(value,"text"),statusDescriptor=descriptorValue(value,"status"),citationIdsDescriptor=descriptorValue(value,"citationIds"),confidenceDescriptor=descriptorValue(value,"confidence"),explanationDescriptor=descriptorValue(value,"explanation");if(hasUnsafeDescriptor([idDescriptor,textDescriptor,statusDescriptor,citationIdsDescriptor,confidenceDescriptor,explanationDescriptor]))return;const id=valueOfDescriptor(idDescriptor),text=valueOfDescriptor(textDescriptor),citationIds=projectCitationIds(valueOfDescriptor(citationIdsDescriptor));if(typeof id!="string"||id.trim().length===0||typeof text!="string"||citationIds===void 0)return;const status=valueOfDescriptor(statusDescriptor),confidence=valueOfDescriptor(confidenceDescriptor),explanation=valueOfDescriptor(explanationDescriptor);return Object.freeze({source:value,id,text,status:typeof status=="string"?status:"unsupported",citationIds,...typeof confidence=="number"&&Number.isFinite(confidence)?{confidence}:{},...typeof explanation=="string"?{explanation}:{}})}catch{return}}function projectCitation(value){try{if(value===null||typeof value!="object"||Array.isArray(value))return;const idDescriptor=descriptorValue(value,"id"),sourceIdDescriptor=descriptorValue(value,"sourceId"),labelDescriptor=descriptorValue(value,"label"),quoteDescriptor=descriptorValue(value,"quote");if(hasUnsafeDescriptor([idDescriptor,sourceIdDescriptor,labelDescriptor,quoteDescriptor]))return;const id=valueOfDescriptor(idDescriptor);if(typeof id!="string"||id.trim().length===0)return;const sourceId=valueOfDescriptor(sourceIdDescriptor),label=valueOfDescriptor(labelDescriptor),quote=valueOfDescriptor(quoteDescriptor);return Object.freeze({source:value,id,...typeof sourceId=="string"?{sourceId}:{},...typeof label=="string"?{label}:{},...typeof quote=="string"?{quote}:{}})}catch{return}}function projectRows(value,project,empty){try{if(!Array.isArray(value))return empty;const lengthDescriptor=descriptorValue(value,"length");if(lengthDescriptor===MISSING_OWN_DATA_DESCRIPTOR||lengthDescriptor===UNSAFE_OWN_DATA_DESCRIPTOR||typeof lengthDescriptor.value!="number"||!Number.isSafeInteger(lengthDescriptor.value)||lengthDescriptor.value<0)return empty;const rows=[],seen=new Set,length=Math.min(lengthDescriptor.value,MAX_PROJECTED_CLAIM_EVIDENCE_ROWS);for(let index=0;index<length;index+=1){const descriptor=descriptorValue(value,String(index));if(descriptor===MISSING_OWN_DATA_DESCRIPTOR||descriptor===UNSAFE_OWN_DATA_DESCRIPTOR)continue;const row=project(descriptor.value);!row||seen.has(row.id)||(seen.add(row.id),rows.push(row))}return Object.freeze(rows)}catch{return empty}}function normalizedClaimStatus(status){switch(status){case"supported":case"partially-supported":case"unsupported":case"contradicted":return status;default:return"unsupported"}}class LyraClaimEvidence extends LyraElement{constructor(){super(...arguments),this.claims=[],this.citations=[],this.selectedClaimId="",this.label="",this.compact=!1,this.frame="card",this.canonicalClaimsBySource=new WeakMap,this.canonicalCitationsBySource=new WeakMap}static{this.defaultStrings={...super.defaultStrings,citation:LYRA_DEFAULT_citation,claimEvidenceConfidence:LYRA_DEFAULT_claimEvidenceConfidence,claimEvidenceContradicted:LYRA_DEFAULT_claimEvidenceContradicted,claimEvidenceEmpty:LYRA_DEFAULT_claimEvidenceEmpty,claimEvidenceLabel:LYRA_DEFAULT_claimEvidenceLabel,claimEvidencePartiallySupported:LYRA_DEFAULT_claimEvidencePartiallySupported,claimEvidenceSupported:LYRA_DEFAULT_claimEvidenceSupported,claimEvidenceUnsupported:LYRA_DEFAULT_claimEvidenceUnsupported,collapse:LYRA_DEFAULT_collapse,details:LYRA_DEFAULT_details,map:LYRA_DEFAULT_map,navigation:LYRA_DEFAULT_navigation,open:LYRA_DEFAULT_open,popover:LYRA_DEFAULT_popover,search:LYRA_DEFAULT_search,select:LYRA_DEFAULT_select}}static{this.ownedCollectionProperties=Object.freeze(["claims","citations"])}static{this.identityCollectionProperties=Object.freeze(["claims","citations"])}static{this.styles=[LyraElement.styles,styles]}static{this.immutableEventDetails=Object.freeze(["lr-claim-select","lr-citation-select"])}static{this.identityEventDetailProperties=Object.freeze({"lr-claim-select":Object.freeze(["claim"]),"lr-citation-select":Object.freeze(["citation"])})}canonicalRowsFor(source,cache,project,empty){if(source===null||typeof source!="object")return empty;const cached=cache.get(source);if(cached)return cached;const rows=projectRows(source,project,empty);return cache.set(source,rows),rows}get normalizedClaims(){return this.canonicalRowsFor(this.claims,this.canonicalClaimsBySource,projectClaim,EMPTY_CANONICAL_CLAIMS)}get normalizedCitations(){return this.canonicalRowsFor(this.citations,this.canonicalCitationsBySource,projectCitation,EMPTY_CANONICAL_CITATIONS)}statusLabel(status){switch(status){case"supported":return this.localize("claimEvidenceSupported");case"partially-supported":return this.localize("claimEvidencePartiallySupported");case"unsupported":return this.localize("claimEvidenceUnsupported");case"contradicted":return this.localize("claimEvidenceContradicted")}}confidenceLabel(value){const percent=getNumberFormat(this.effectiveLocale,{style:"percent"}).format(finiteRange(value,0,0,1));return this.localize("claimEvidenceConfidence",void 0,{percent})}resolvedCitations(claim,citations){const ids=new Set(claim.citationIds);return citations.filter(citation=>ids.has(citation.id))}renderClaim(claim,allCitations){const selected=claim.id===this.selectedClaimId,citations=this.resolvedCitations(claim,allCitations),status=normalizedClaimStatus(claim.status);return html`
1
+ var __decorate=function(decorators,target,key,desc){var c=arguments.length,r=c<3?target:desc===null?desc=Object.getOwnPropertyDescriptor(target,key):desc,d;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")r=Reflect.decorate(decorators,target,key,desc);else for(var i=decorators.length-1;i>=0;i--)(d=decorators[i])&&(r=(c<3?d(r):c>3?d(target,key,r):d(target,key))||r);return c>3&&r&&Object.defineProperty(target,key,r),r};import{html,nothing}from"lit";import{property}from"lit/decorators.js";import{getOwnDataDescriptor,MISSING_OWN_DATA_DESCRIPTOR,UNSAFE_OWN_DATA_DESCRIPTOR}from"../../../internal/data-descriptors.js";import{getNumberFormat}from"../../../internal/intl-cache.js";import{LyraElement}from"../../../internal/lyra-element.js";import{finiteRange}from"../../../internal/numbers.js";import"../../overlays/badge/badge.class.js";import"../../overlays/empty/empty.class.js";import"../citation-badge/citation-badge.class.js";import{styles}from"./claim-evidence.styles.js";import{retrievalSemanticLabel,retrievalSemanticRole}from"../retrieval-semantic-owner.js";import{LYRA_DEFAULT_citation,LYRA_DEFAULT_claimEvidenceClaimsLimit,LYRA_DEFAULT_claimEvidenceConfidence,LYRA_DEFAULT_claimEvidenceContradicted,LYRA_DEFAULT_claimEvidenceEmpty,LYRA_DEFAULT_claimEvidenceLabel,LYRA_DEFAULT_claimEvidencePartiallySupported,LYRA_DEFAULT_claimEvidenceSupported,LYRA_DEFAULT_claimEvidenceUnsupported,LYRA_DEFAULT_collapse,LYRA_DEFAULT_details,LYRA_DEFAULT_map,LYRA_DEFAULT_navigation,LYRA_DEFAULT_open,LYRA_DEFAULT_popover,LYRA_DEFAULT_search,LYRA_DEFAULT_select}from"../../../internal/default-strings.generated.js";const STATUS_VARIANT={supported:"success","partially-supported":"warning",unsupported:"danger",contradicted:"danger"},MAX_PROJECTED_CLAIM_EVIDENCE_ROWS=1e4,MAX_RENDERED_CLAIM_EVIDENCE_CLAIMS=500,EMPTY_CANONICAL_CLAIMS=Object.freeze([]),EMPTY_CANONICAL_CITATIONS=Object.freeze([]);function descriptorValue(value,property2){return getOwnDataDescriptor(value,property2)}function valueOfDescriptor(descriptor){return descriptor===MISSING_OWN_DATA_DESCRIPTOR||descriptor===UNSAFE_OWN_DATA_DESCRIPTOR?void 0:descriptor.value}function hasUnsafeDescriptor(descriptors){return descriptors.some(descriptor=>descriptor===UNSAFE_OWN_DATA_DESCRIPTOR)}function projectCitationIds(value){try{if(!Array.isArray(value))return;const lengthDescriptor=descriptorValue(value,"length");if(lengthDescriptor===MISSING_OWN_DATA_DESCRIPTOR||lengthDescriptor===UNSAFE_OWN_DATA_DESCRIPTOR||typeof lengthDescriptor.value!="number"||!Number.isSafeInteger(lengthDescriptor.value)||lengthDescriptor.value<0)return;const ids=[],length=Math.min(lengthDescriptor.value,MAX_PROJECTED_CLAIM_EVIDENCE_ROWS);for(let index=0;index<length;index+=1){const descriptor=descriptorValue(value,String(index));if(descriptor===UNSAFE_OWN_DATA_DESCRIPTOR)return;descriptor!==MISSING_OWN_DATA_DESCRIPTOR&&typeof descriptor.value=="string"&&ids.push(descriptor.value)}return Object.freeze(ids)}catch{return}}function projectClaim(value){try{if(value===null||typeof value!="object"||Array.isArray(value))return;const idDescriptor=descriptorValue(value,"id"),textDescriptor=descriptorValue(value,"text"),statusDescriptor=descriptorValue(value,"status"),citationIdsDescriptor=descriptorValue(value,"citationIds"),confidenceDescriptor=descriptorValue(value,"confidence"),explanationDescriptor=descriptorValue(value,"explanation");if(hasUnsafeDescriptor([idDescriptor,textDescriptor,statusDescriptor,citationIdsDescriptor,confidenceDescriptor,explanationDescriptor]))return;const id=valueOfDescriptor(idDescriptor),text=valueOfDescriptor(textDescriptor),citationIds=projectCitationIds(valueOfDescriptor(citationIdsDescriptor));if(typeof id!="string"||id.trim().length===0||typeof text!="string"||citationIds===void 0)return;const status=valueOfDescriptor(statusDescriptor),confidence=valueOfDescriptor(confidenceDescriptor),explanation=valueOfDescriptor(explanationDescriptor);return Object.freeze({source:value,id,text,status:typeof status=="string"?status:"unsupported",citationIds,...typeof confidence=="number"&&Number.isFinite(confidence)?{confidence}:{},...typeof explanation=="string"?{explanation}:{}})}catch{return}}function projectCitation(value){try{if(value===null||typeof value!="object"||Array.isArray(value))return;const idDescriptor=descriptorValue(value,"id"),sourceIdDescriptor=descriptorValue(value,"sourceId"),labelDescriptor=descriptorValue(value,"label"),quoteDescriptor=descriptorValue(value,"quote");if(hasUnsafeDescriptor([idDescriptor,sourceIdDescriptor,labelDescriptor,quoteDescriptor]))return;const id=valueOfDescriptor(idDescriptor);if(typeof id!="string"||id.trim().length===0)return;const sourceId=valueOfDescriptor(sourceIdDescriptor),label=valueOfDescriptor(labelDescriptor),quote=valueOfDescriptor(quoteDescriptor);return Object.freeze({source:value,id,...typeof sourceId=="string"?{sourceId}:{},...typeof label=="string"?{label}:{},...typeof quote=="string"?{quote}:{}})}catch{return}}function projectRows(value,project,empty){try{if(!Array.isArray(value))return empty;const lengthDescriptor=descriptorValue(value,"length");if(lengthDescriptor===MISSING_OWN_DATA_DESCRIPTOR||lengthDescriptor===UNSAFE_OWN_DATA_DESCRIPTOR||typeof lengthDescriptor.value!="number"||!Number.isSafeInteger(lengthDescriptor.value)||lengthDescriptor.value<0)return empty;const rows=[],seen=new Set,length=Math.min(lengthDescriptor.value,MAX_PROJECTED_CLAIM_EVIDENCE_ROWS);for(let index=0;index<length;index+=1){const descriptor=descriptorValue(value,String(index));if(descriptor===MISSING_OWN_DATA_DESCRIPTOR||descriptor===UNSAFE_OWN_DATA_DESCRIPTOR)continue;const row=project(descriptor.value);!row||seen.has(row.id)||(seen.add(row.id),rows.push(row))}return Object.freeze(rows)}catch{return empty}}function normalizedClaimStatus(status){switch(status){case"supported":case"partially-supported":case"unsupported":case"contradicted":return status;default:return"unsupported"}}class LyraClaimEvidence extends LyraElement{constructor(){super(...arguments),this.claims=[],this.citations=[],this.selectedClaimId="",this.label="",this.compact=!1,this.frame="card",this.canonicalClaimsBySource=new WeakMap,this.canonicalCitationsBySource=new WeakMap}static{this.defaultStrings={...super.defaultStrings,citation:LYRA_DEFAULT_citation,claimEvidenceClaimsLimit:LYRA_DEFAULT_claimEvidenceClaimsLimit,claimEvidenceConfidence:LYRA_DEFAULT_claimEvidenceConfidence,claimEvidenceContradicted:LYRA_DEFAULT_claimEvidenceContradicted,claimEvidenceEmpty:LYRA_DEFAULT_claimEvidenceEmpty,claimEvidenceLabel:LYRA_DEFAULT_claimEvidenceLabel,claimEvidencePartiallySupported:LYRA_DEFAULT_claimEvidencePartiallySupported,claimEvidenceSupported:LYRA_DEFAULT_claimEvidenceSupported,claimEvidenceUnsupported:LYRA_DEFAULT_claimEvidenceUnsupported,collapse:LYRA_DEFAULT_collapse,details:LYRA_DEFAULT_details,map:LYRA_DEFAULT_map,navigation:LYRA_DEFAULT_navigation,open:LYRA_DEFAULT_open,popover:LYRA_DEFAULT_popover,search:LYRA_DEFAULT_search,select:LYRA_DEFAULT_select}}static{this.ownedCollectionProperties=Object.freeze(["claims","citations"])}static{this.identityCollectionProperties=Object.freeze(["claims","citations"])}static{this.styles=[LyraElement.styles,styles]}static{this.immutableEventDetails=Object.freeze(["lr-claim-select","lr-citation-select"])}static{this.identityEventDetailProperties=Object.freeze({"lr-claim-select":Object.freeze(["claim"]),"lr-citation-select":Object.freeze(["citation"])})}canonicalRowsFor(source,cache,project,empty){if(source===null||typeof source!="object")return empty;const cached=cache.get(source);if(cached)return cached;const rows=projectRows(source,project,empty);return cache.set(source,rows),rows}get normalizedClaims(){return this.canonicalRowsFor(this.claims,this.canonicalClaimsBySource,projectClaim,EMPTY_CANONICAL_CLAIMS)}get normalizedCitations(){return this.canonicalRowsFor(this.citations,this.canonicalCitationsBySource,projectCitation,EMPTY_CANONICAL_CITATIONS)}statusLabel(status){switch(status){case"supported":return this.localize("claimEvidenceSupported");case"partially-supported":return this.localize("claimEvidencePartiallySupported");case"unsupported":return this.localize("claimEvidenceUnsupported");case"contradicted":return this.localize("claimEvidenceContradicted")}}confidenceLabel(value){const percent=getNumberFormat(this.effectiveLocale,{style:"percent"}).format(finiteRange(value,0,0,1));return this.localize("claimEvidenceConfidence",void 0,{percent})}resolvedCitations(claim,citations){const ids=new Set(claim.citationIds);return citations.filter(citation=>ids.has(citation.id))}renderClaim(claim,allCitations){const selected=claim.id===this.selectedClaimId,citations=this.resolvedCitations(claim,allCitations),status=normalizedClaimStatus(claim.status);return html`
2
2
  <li part=${selected?"claim claim-selected":"claim"} aria-current=${selected?"true":"false"}>
3
3
  <button
4
4
  part="claim-trigger"
@@ -36,8 +36,9 @@ var __decorate=function(decorators,target,key,desc){var c=arguments.length,r=c<3
36
36
  aria-label=${label??nothing}
37
37
  >
38
38
  ${claims.length?html`<ol part="list">
39
- ${claims.map(claim=>this.renderClaim(claim,citations))}
40
- </ol>`:html`<lr-empty
39
+ ${claims.slice(0,MAX_RENDERED_CLAIM_EVIDENCE_CLAIMS).map(claim=>this.renderClaim(claim,citations))}
40
+ </ol>
41
+ ${claims.length>MAX_RENDERED_CLAIM_EVIDENCE_CLAIMS?html`<p part="limit" role="note">${this.localize("claimEvidenceClaimsLimit",void 0,{count:getNumberFormat(this.effectiveLocale).format(MAX_RENDERED_CLAIM_EVIDENCE_CLAIMS)})}</p>`:nothing}`:html`<lr-empty
41
42
  part="empty"
42
43
  heading=${this.localize("claimEvidenceEmpty")}
43
44
  ></lr-empty>`}
@@ -1 +1 @@
1
- import{css}from"lit";const styles=css`:host{contain-intrinsic-inline-size:var(--lr-size-20rem);display:block;container-type:inline-size}[part=list]{gap:var(--lr-space-s);flex-direction:column;margin:0;padding:0;list-style:none;display:flex}[part~=claim]{border:var(--lr-border-width-thin) solid var(--lr-color-border);border-radius:var(--lr-radius);background:var(--lr-color-surface);min-inline-size:0;overflow:hidden}[part~=claim-selected]{border-color:var(--lr-color-brand)}:host([compact]) [part=claim-trigger]{padding:var(--lr-claim-evidence-compact-padding,var(--lr-space-xs));gap:var(--lr-claim-evidence-compact-gap,var(--lr-space-xs))}:host([frame=plain]) [part~=claim]{background:0 0;border:0;border-radius:0}[part=claim-trigger]{gap:var(--lr-space-s);box-sizing:border-box;inline-size:100%;min-inline-size:var(--lr-icon-button-size);min-block-size:var(--lr-icon-button-size);padding:var(--lr-space-s);color:var(--lr-color-text);font:inherit;text-align:start;cursor:pointer;transition:background-color var(--lr-transition-fast);background:0 0;border:0;grid-template-columns:auto minmax(0,1fr) auto;align-items:center;display:grid}[part=claim-trigger]:hover{background:var(--lr-color-surface-raised)}[part=claim-trigger]:active{background:color-mix(in oklab, var(--lr-color-surface-raised), var(--lr-color-mix-partner) var(--lr-color-mix-active))}[part=claim-trigger]:focus-visible{outline:var(--lr-focus-ring-width) solid var(--lr-focus-ring-color);outline-offset:calc(var(--lr-focus-ring-offset) * -1)}[part=claim-text]{overflow-wrap:anywhere;min-inline-size:0}[part=confidence]{color:var(--lr-color-text-quiet);font-size:var(--lr-font-size-sm);white-space:nowrap}[part=explanation]{padding:0 var(--lr-space-s) var(--lr-space-s);color:var(--lr-color-text-quiet);font-size:var(--lr-font-size-sm);margin:0}[part=evidence]{gap:var(--lr-space-xs);padding:var(--lr-space-s);border-block-start:var(--lr-border-width-thin) solid var(--lr-color-border);flex-wrap:wrap;align-items:center;display:flex}[part=evidence] q{min-inline-size:0;color:var(--lr-color-text-quiet);font-size:var(--lr-font-size-sm);overflow-wrap:anywhere}@container (inline-size<=319.98px){[part=claim-trigger]{grid-template-columns:1fr}}`;export{styles};
1
+ import{css}from"lit";const styles=css`:host{contain-intrinsic-inline-size:var(--lr-size-20rem);display:block;container-type:inline-size}[part=list]{gap:var(--lr-space-s);flex-direction:column;margin:0;padding:0;list-style:none;display:flex}[part~=claim]{border:var(--lr-border-width-thin) solid var(--lr-color-border);border-radius:var(--lr-radius);background:var(--lr-color-surface);min-inline-size:0;overflow:hidden}[part~=claim-selected]{border-color:var(--lr-color-brand)}:host([compact]) [part=claim-trigger]{padding:var(--lr-claim-evidence-compact-padding,var(--lr-space-xs));gap:var(--lr-claim-evidence-compact-gap,var(--lr-space-xs))}:host([frame=plain]) [part~=claim]{background:0 0;border:0;border-radius:0}[part=claim-trigger]{gap:var(--lr-space-s);box-sizing:border-box;inline-size:100%;min-inline-size:var(--lr-icon-button-size);min-block-size:var(--lr-icon-button-size);padding:var(--lr-space-s);color:var(--lr-color-text);font:inherit;text-align:start;cursor:pointer;transition:background-color var(--lr-transition-fast);background:0 0;border:0;grid-template-columns:auto minmax(0,1fr) auto;align-items:center;display:grid}[part=claim-trigger]:hover{background:var(--lr-color-surface-raised)}[part=claim-trigger]:active{background:color-mix(in oklab, var(--lr-color-surface-raised), var(--lr-color-mix-partner) var(--lr-color-mix-active))}[part=claim-trigger]:focus-visible{outline:var(--lr-focus-ring-width) solid var(--lr-focus-ring-color);outline-offset:calc(var(--lr-focus-ring-offset) * -1)}[part=claim-text]{overflow-wrap:anywhere;min-inline-size:0}[part=confidence]{color:var(--lr-color-text-quiet);font-size:var(--lr-font-size-sm);white-space:nowrap}[part=explanation]{padding:0 var(--lr-space-s) var(--lr-space-s);color:var(--lr-color-text-quiet);font-size:var(--lr-font-size-sm);margin:0}[part=evidence]{gap:var(--lr-space-xs);padding:var(--lr-space-s);border-block-start:var(--lr-border-width-thin) solid var(--lr-color-border);flex-wrap:wrap;align-items:center;display:flex}[part=evidence] q{min-inline-size:0;color:var(--lr-color-text-quiet);font-size:var(--lr-font-size-sm);overflow-wrap:anywhere}@container (inline-size<=319.98px){[part=claim-trigger]{grid-template-columns:1fr}}[part=limit]{margin:var(--lr-space-s);color:var(--lr-color-text-quiet);font-size:var(--lr-font-size-xs)}`;export{styles};
@@ -33,6 +33,10 @@ export type CommunityCardAppearance=LyraFrame;export interface LyraCommunityCard
33
33
  * @csspart empty - The empty state shown when `community` is `null`.
34
34
  * @cssprop [--lr-community-card-bg=var(--lr-color-surface)] - Resting background of `[part="base"]`.
35
35
  * `frame="plain"` still paints transparent.
36
+ * @cssprop [--lr-community-card-compact-padding=var(--lr-space-s)] - `[part="base"]` padding while
37
+ * `compact`.
38
+ * @cssprop [--lr-community-card-compact-gap=var(--lr-space-xs)] - `[part="base"]` gap while
39
+ * `compact`.
36
40
  * @status stable
37
41
  * @since 4.0.0
38
42
  */
@@ -43,7 +47,8 @@ community:LyraCommunity|null;
43
47
  members:readonly LyraEntity[];
44
48
  /** Visible member chips before the "+N" overflow chip. */
45
49
  maxMembers:number;
46
- /** Single-row layout (title + member count + drill button, no summary/chips). */
50
+ /** Single-row layout (title + member count + drill button, no summary/chips), and tighter
51
+ * `[part="base"]` padding/gap — same convention as the sibling `lr-entity-card`'s `compact`. */
47
52
  compact:boolean;
48
53
  /** Container treatment, in the shared `LyraFrame` vocabulary — the same property this
49
54
  * component's sibling `lr-entity-card` carries. `'card'` (the default) keeps the bordered,
@@ -1 +1 @@
1
- import{css}from"lit";const styles=css`:host{display:block}[part=base]{gap:var(--lr-space-s);padding:var(--lr-space-m);border:var(--lr-border-width-thin) solid var(--lr-color-border);border-radius:var(--lr-radius);background:var(--lr-community-card-bg,var(--lr-color-surface));color:var(--lr-color-text);flex-direction:column;display:flex}:host([frame=plain]) [part=base]{background:0 0;border:0;border-radius:0;padding:0}[part=header]{align-items:center;gap:var(--lr-space-xs);flex-wrap:wrap;display:flex}[part=title]{flex:auto;min-inline-size:0}[part=title] button{box-sizing:border-box;min-inline-size:var(--lr-icon-button-size);min-block-size:var(--lr-icon-button-size);max-inline-size:100%;color:var(--lr-color-text);font:inherit;font-size:var(--lr-font-size-m);font-weight:var(--lr-font-weight-semibold);text-align:start;cursor:pointer;transition:background-color var(--lr-transition-fast);background:0 0;border:none;padding:0;display:block}[part=title] button:hover{text-decoration:underline}[part=title] button:active{background:color-mix(in oklab, transparent, var(--lr-color-mix-partner) var(--lr-color-mix-active));text-decoration:underline}[part=title] button:focus-visible{outline:var(--lr-focus-ring-width) solid var(--lr-focus-ring-color);outline-offset:var(--lr-focus-ring-offset)}:host([compact]) [part=title] button{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}[part=member-count]{color:var(--lr-color-text-quiet);font-size:var(--lr-font-size-sm);flex:none}[part=actions]{align-items:center;gap:var(--lr-space-xs);flex:none;display:flex}[part=summary]{color:var(--lr-color-text-quiet);font-size:var(--lr-font-size-sm);overflow-wrap:anywhere;margin:0}[part=members]{gap:var(--lr-space-xs);flex-wrap:wrap;display:flex}[part=member],[part=overflow]{box-sizing:border-box;min-inline-size:var(--lr-icon-button-size);min-block-size:var(--lr-icon-button-size);cursor:pointer;transition:background-color var(--lr-transition-fast);background:0 0;border:none;padding:0}[part=member]:hover,[part=overflow]:hover{background:var(--lr-color-brand-quiet)}[part=member]:active,[part=overflow]:active{background:color-mix(in oklab, var(--lr-color-brand-quiet), var(--lr-color-mix-partner) var(--lr-color-mix-active))}[part=member]:focus-visible,[part=overflow]:focus-visible{outline:var(--lr-focus-ring-width) solid var(--lr-focus-ring-color);outline-offset:var(--lr-focus-ring-offset)}`;export{styles};
1
+ import{css}from"lit";const styles=css`:host{display:block}[part=base]{gap:var(--lr-space-s);padding:var(--lr-space-m);border:var(--lr-border-width-thin) solid var(--lr-color-border);border-radius:var(--lr-radius);background:var(--lr-community-card-bg,var(--lr-color-surface));color:var(--lr-color-text);flex-direction:column;display:flex}:host([compact]) [part=base]{padding:var(--lr-community-card-compact-padding,var(--lr-space-s));gap:var(--lr-community-card-compact-gap,var(--lr-space-xs))}:host([frame=plain]) [part=base]{background:0 0;border:0;border-radius:0;padding:0}[part=header]{align-items:center;gap:var(--lr-space-xs);flex-wrap:wrap;display:flex}[part=title]{flex:auto;min-inline-size:0}[part=title] button{box-sizing:border-box;min-inline-size:var(--lr-icon-button-size);min-block-size:var(--lr-icon-button-size);max-inline-size:100%;color:var(--lr-color-text);font:inherit;font-size:var(--lr-font-size-m);font-weight:var(--lr-font-weight-semibold);text-align:start;cursor:pointer;transition:background-color var(--lr-transition-fast);background:0 0;border:none;padding:0;display:block}[part=title] button:hover{text-decoration:underline}[part=title] button:active{background:color-mix(in oklab, transparent, var(--lr-color-mix-partner) var(--lr-color-mix-active));text-decoration:underline}[part=title] button:focus-visible{outline:var(--lr-focus-ring-width) solid var(--lr-focus-ring-color);outline-offset:var(--lr-focus-ring-offset)}:host([compact]) [part=title] button{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}[part=member-count]{color:var(--lr-color-text-quiet);font-size:var(--lr-font-size-sm);flex:none}[part=actions]{align-items:center;gap:var(--lr-space-xs);flex:none;display:flex}[part=summary]{color:var(--lr-color-text-quiet);font-size:var(--lr-font-size-sm);overflow-wrap:anywhere;margin:0}[part=members]{gap:var(--lr-space-xs);flex-wrap:wrap;display:flex}[part=member],[part=overflow]{box-sizing:border-box;min-inline-size:var(--lr-icon-button-size);min-block-size:var(--lr-icon-button-size);cursor:pointer;transition:background-color var(--lr-transition-fast);background:0 0;border:none;padding:0}[part=member]:hover,[part=overflow]:hover{background:var(--lr-color-brand-quiet)}[part=member]:active,[part=overflow]:active{background:color-mix(in oklab, var(--lr-color-brand-quiet), var(--lr-color-mix-partner) var(--lr-color-mix-active))}[part=member]:focus-visible,[part=overflow]:focus-visible{outline:var(--lr-focus-ring-width) solid var(--lr-focus-ring-color);outline-offset:var(--lr-focus-ring-offset)}`;export{styles};
@@ -23,6 +23,9 @@ export interface EmbeddingPoint{id:string;x:number;y:number;label?:string;source
23
23
  * @csspart legend-item - One cluster's legend entry.
24
24
  * @csspart legend-swatch - One cluster's decorative color swatch.
25
25
  * @csspart legend-label - One cluster's visible name.
26
+ * @csspart limit - The "showing N of M" notice, present only once `points` exceeds the render
27
+ * cap. The rendered subset is a deterministic, evenly spaced sample of the full array (not the
28
+ * leading run), so the plotted distribution stays representative above the cap.
26
29
  * @csspart empty - The empty state.
27
30
  * @cssprop [--lr-embedding-explorer-selected-stroke=var(--lr-color-brand)] - Stroke color of the selected point.
28
31
  * @cssprop [--lr-embedding-explorer-height=360px] - The plot's `block-size`. Set on the host from
@@ -57,7 +60,12 @@ height:string;
57
60
  /** JS-only accessible name for the plot while no host `aria-label` is authored. An authored host
58
61
  * label governs the plot's name too (including an explicitly empty value), avoiding a competing
59
62
  * generic plot label while still naming the shadow-internal `listbox` itself. */
60
- accessibleLabel:string|null;private activeIndex;private refocusAfterUpdate;private get validPoints();protected willUpdate(changed:PropertyValues<this>):void;protected updated(changed:PropertyValues<this>):void;
63
+ accessibleLabel:string|null;private activeIndex;private refocusAfterUpdate;private get validPoints();
64
+ /** `validPoints`, decimated to `MAX_RENDERED_POINTS` -- the set actually rendered, focusable,
65
+ * and reachable by roving-tabindex arrow navigation. `bounds` and the cluster legend still
66
+ * derive from the full `validPoints`, so a decimated view keeps the same scale and the same
67
+ * complete legend as the full plot. */
68
+ private get renderedPoints();protected willUpdate(changed:PropertyValues<this>):void;protected updated(changed:PropertyValues<this>):void;
61
69
  /**
62
70
  * Publishes `height` as `--lr-embedding-explorer-height`, which `[part='plot']`'s `block-size`
63
71
  * reads. It has to land on the host: custom properties cascade downward into the shadow tree,
@@ -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{nativeSvgTitle}from"../../../internal/svg-title.js";import{html,nothing,svg}from"lit";import{property,state}from"lit/decorators.js";import{hostAriaLabel}from"../../../internal/a11y.js";import{LyraElement}from"../../../internal/lyra-element.js";import{firstByRetrievalIdentity}from"../retrieval-identity.js";import{finiteRange}from"../../../internal/numbers.js";import{getNumberFormat}from"../../../internal/intl-cache.js";import{sanitizeCssLength}from"../../../internal/safe-css.js";import{specialistTokens}from"../../../internal/specialist-tokens.styles.js";import{styles}from"./embedding-explorer.styles.js";import{activeElementIn}from"../../../internal/active-element.js";import{LYRA_DEFAULT_embeddingExplorerEmpty,LYRA_DEFAULT_embeddingExplorerLabel,LYRA_DEFAULT_embeddingExplorerPoint}from"../../../internal/default-strings.generated.js";const WIDTH=640,HEIGHT=360,PAD=24,PALETTE=["var(--lr-color-chart-1)","var(--lr-color-chart-2)","var(--lr-color-chart-3)","var(--lr-color-chart-4)","var(--lr-color-chart-5)","var(--lr-color-chart-6)","var(--lr-color-chart-7)","var(--lr-color-chart-8)"];class LyraEmbeddingExplorer extends LyraElement{constructor(){super(...arguments),this.points=[],this.selectedPointId="",this.height="360px",this.accessibleLabel=null,this.activeIndex=0,this.refocusAfterUpdate=!1}static{this.defaultStrings={...super.defaultStrings,embeddingExplorerEmpty:LYRA_DEFAULT_embeddingExplorerEmpty,embeddingExplorerLabel:LYRA_DEFAULT_embeddingExplorerLabel,embeddingExplorerPoint:LYRA_DEFAULT_embeddingExplorerPoint}}static{this.ownedCollectionProperties=Object.freeze(["points"])}static{this.styles=[LyraElement.styles,specialistTokens,styles]}get validPoints(){return firstByRetrievalIdentity(Array.isArray(this.points)?this.points:[],point=>Number.isFinite(point.x)&&Number.isFinite(point.y)?point.id:void 0)}willUpdate(changed){if(super.willUpdate(changed),!changed.has("points"))return;const active=activeElementIn(this.shadowRoot)??null,focusedId=active?.getAttribute("data-id"),points=this.validPoints,matchingIndex=focusedId?points.findIndex(point=>point.id===focusedId):-1;this.activeIndex=matchingIndex>=0?matchingIndex:Math.min(this.activeIndex,Math.max(0,points.length-1)),this.refocusAfterUpdate=active?.getAttribute("part")==="point"}updated(changed){super.updated(changed),changed.has("height")&&this.applyHeight(),this.refocusAfterUpdate&&(this.refocusAfterUpdate=!1,this.renderRoot.querySelector(`[data-index="${this.activeIndex}"]`)?.focus())}applyHeight(){const height=sanitizeCssLength(this.height,"height");height?this.style.setProperty("--lr-embedding-explorer-height",height):this.style.removeProperty("--lr-embedding-explorer-height")}position(point,bounds){const{minX,maxX,minY,maxY}=bounds,x=PAD+finiteRange((point.x-minX)/(maxX-minX||1),.5,0,1)*(WIDTH-PAD*2),y=HEIGHT-PAD-finiteRange((point.y-minY)/(maxY-minY||1),.5,0,1)*(HEIGHT-PAD*2);return{x,y}}announceLabel(point,index){return this.localize("embeddingExplorerPoint",void 0,{label:point.label||point.id,index:getNumberFormat(this.effectiveLocale).format(index+1)})}select(point){this.emit("lr-point-select",{point})}activatePoint(point,index){this.activeIndex=index,this.select(point)}onPointKeyDown(event,point,index){const points=this.validPoints;if(event.key==="Enter"||event.key===" "){event.preventDefault(),this.select(point);return}const rtl=this.effectiveDirection==="rtl",forward=rtl?"ArrowLeft":"ArrowRight",backward=rtl?"ArrowRight":"ArrowLeft";let next=index;if(event.key===forward||event.key==="ArrowDown")next=Math.min(points.length-1,index+1);else if(event.key===backward||event.key==="ArrowUp")next=Math.max(0,index-1);else if(event.key==="Home")next=0;else if(event.key==="End")next=points.length-1;else return;event.preventDefault(),this.activeIndex=next,this.updateComplete.then(()=>{this.renderRoot.querySelector(`[data-index="${next}"]`)?.focus()})}renderPoint(point,index,bounds,clusterIndices){const{x,y}=this.position(point,bounds),label=this.announceLabel(point,index),cluster=String(point.cluster??"").trim(),selected=point.id===this.selectedPointId;return svg`<g
1
+ var __decorate=function(decorators,target,key,desc){var c=arguments.length,r=c<3?target:desc===null?desc=Object.getOwnPropertyDescriptor(target,key):desc,d;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")r=Reflect.decorate(decorators,target,key,desc);else for(var i=decorators.length-1;i>=0;i--)(d=decorators[i])&&(r=(c<3?d(r):c>3?d(target,key,r):d(target,key))||r);return c>3&&r&&Object.defineProperty(target,key,r),r};import{nativeSvgTitle}from"../../../internal/svg-title.js";import{html,nothing,svg}from"lit";import{property,state}from"lit/decorators.js";import{hostAriaLabel}from"../../../internal/a11y.js";import{LyraElement}from"../../../internal/lyra-element.js";import{firstByRetrievalIdentity}from"../retrieval-identity.js";import{finiteRange}from"../../../internal/numbers.js";import{getNumberFormat}from"../../../internal/intl-cache.js";import{sanitizeCssLength}from"../../../internal/safe-css.js";import{specialistTokens}from"../../../internal/specialist-tokens.styles.js";import{styles}from"./embedding-explorer.styles.js";import{activeElementIn}from"../../../internal/active-element.js";import{LYRA_DEFAULT_embeddingExplorerEmpty,LYRA_DEFAULT_embeddingExplorerLabel,LYRA_DEFAULT_embeddingExplorerPoint,LYRA_DEFAULT_embeddingExplorerPointLimit}from"../../../internal/default-strings.generated.js";const WIDTH=640,HEIGHT=360,PAD=24,MAX_RENDERED_POINTS=1e3,PALETTE=["var(--lr-color-chart-1)","var(--lr-color-chart-2)","var(--lr-color-chart-3)","var(--lr-color-chart-4)","var(--lr-color-chart-5)","var(--lr-color-chart-6)","var(--lr-color-chart-7)","var(--lr-color-chart-8)"];function decimatePoints(items,max){if(items.length<=max||max<=0)return[...items];if(max===1)return[items[0]];const step=(items.length-1)/(max-1),result=[],seen=new Set;for(let i=0;i<max;i++){const index=Math.min(items.length-1,Math.round(i*step));seen.has(index)||(seen.add(index),result.push(items[index]))}return result}class LyraEmbeddingExplorer extends LyraElement{constructor(){super(...arguments),this.points=[],this.selectedPointId="",this.height="360px",this.accessibleLabel=null,this.activeIndex=0,this.refocusAfterUpdate=!1}static{this.defaultStrings={...super.defaultStrings,embeddingExplorerEmpty:LYRA_DEFAULT_embeddingExplorerEmpty,embeddingExplorerLabel:LYRA_DEFAULT_embeddingExplorerLabel,embeddingExplorerPoint:LYRA_DEFAULT_embeddingExplorerPoint,embeddingExplorerPointLimit:LYRA_DEFAULT_embeddingExplorerPointLimit}}static{this.ownedCollectionProperties=Object.freeze(["points"])}static{this.styles=[LyraElement.styles,specialistTokens,styles]}get validPoints(){return firstByRetrievalIdentity(Array.isArray(this.points)?this.points:[],point=>Number.isFinite(point.x)&&Number.isFinite(point.y)?point.id:void 0)}get renderedPoints(){return decimatePoints(this.validPoints,MAX_RENDERED_POINTS)}willUpdate(changed){if(super.willUpdate(changed),!changed.has("points"))return;const active=activeElementIn(this.shadowRoot)??null,focusedId=active?.getAttribute("data-id"),points=this.renderedPoints,matchingIndex=focusedId?points.findIndex(point=>point.id===focusedId):-1;this.activeIndex=matchingIndex>=0?matchingIndex:Math.min(this.activeIndex,Math.max(0,points.length-1)),this.refocusAfterUpdate=active?.getAttribute("part")==="point"}updated(changed){super.updated(changed),changed.has("height")&&this.applyHeight(),this.refocusAfterUpdate&&(this.refocusAfterUpdate=!1,this.renderRoot.querySelector(`[data-index="${this.activeIndex}"]`)?.focus())}applyHeight(){const height=sanitizeCssLength(this.height,"height");height?this.style.setProperty("--lr-embedding-explorer-height",height):this.style.removeProperty("--lr-embedding-explorer-height")}position(point,bounds){const{minX,maxX,minY,maxY}=bounds,x=PAD+finiteRange((point.x-minX)/(maxX-minX||1),.5,0,1)*(WIDTH-PAD*2),y=HEIGHT-PAD-finiteRange((point.y-minY)/(maxY-minY||1),.5,0,1)*(HEIGHT-PAD*2);return{x,y}}announceLabel(point,index){return this.localize("embeddingExplorerPoint",void 0,{label:point.label||point.id,index:getNumberFormat(this.effectiveLocale).format(index+1)})}select(point){this.emit("lr-point-select",{point})}activatePoint(point,index){this.activeIndex=index,this.select(point)}onPointKeyDown(event,point,index){const points=this.renderedPoints;if(event.key==="Enter"||event.key===" "){event.preventDefault(),this.select(point);return}const rtl=this.effectiveDirection==="rtl",forward=rtl?"ArrowLeft":"ArrowRight",backward=rtl?"ArrowRight":"ArrowLeft";let next=index;if(event.key===forward||event.key==="ArrowDown")next=Math.min(points.length-1,index+1);else if(event.key===backward||event.key==="ArrowUp")next=Math.max(0,index-1);else if(event.key==="Home")next=0;else if(event.key==="End")next=points.length-1;else return;event.preventDefault(),this.activeIndex=next,this.updateComplete.then(()=>{this.renderRoot.querySelector(`[data-index="${next}"]`)?.focus()})}renderPoint(point,index,bounds,clusterIndices){const{x,y}=this.position(point,bounds),label=this.announceLabel(point,index),cluster=String(point.cluster??"").trim(),selected=point.id===this.selectedPointId;return svg`<g
2
2
  part="point"
3
3
  data-index=${index}
4
4
  data-id=${point.id}
@@ -27,15 +27,16 @@ var __decorate=function(decorators,target,key,desc){var c=arguments.length,r=c<3
27
27
  ${nativeSvgTitle(label)}
28
28
  </g>`}render(){const points=this.validPoints,hostLabel=hostAriaLabel(this),label=hostLabel===null?this.accessibleLabel??this.localize("embeddingExplorerLabel"):hostLabel;if(points.length===0)return html`<div part="base" role="region" aria-label=${label}>
29
29
  <p part="empty">${this.localize("embeddingExplorerEmpty")}</p>
30
- </div>`;const bounds=points.reduce((result,point)=>({minX:Math.min(result.minX,point.x),maxX:Math.max(result.maxX,point.x),minY:Math.min(result.minY,point.y),maxY:Math.max(result.maxY,point.y)}),{minX:1/0,maxX:-1/0,minY:1/0,maxY:-1/0}),clusters=[...new Set(points.map(point=>String(point.cluster??"").trim()))].sort(),clusterIndices=new Map(clusters.map((cluster,index)=>[cluster,index])),visibleClusters=clusters.filter(cluster=>cluster.trim()!=="");return html`<div part="base">
30
+ </div>`;const renderedPoints=this.renderedPoints,bounds=points.reduce((result,point)=>({minX:Math.min(result.minX,point.x),maxX:Math.max(result.maxX,point.x),minY:Math.min(result.minY,point.y),maxY:Math.max(result.maxY,point.y)}),{minX:1/0,maxX:-1/0,minY:1/0,maxY:-1/0}),clusters=[...new Set(points.map(point=>String(point.cluster??"").trim()))].sort(),clusterIndices=new Map(clusters.map((cluster,index)=>[cluster,index])),visibleClusters=clusters.filter(cluster=>cluster.trim()!==""),numberFormat=getNumberFormat(this.effectiveLocale);return html`<div part="base">
31
31
  <svg
32
32
  part="plot"
33
33
  viewBox="0 0 ${WIDTH} ${HEIGHT}"
34
34
  role="listbox"
35
35
  aria-label=${label}
36
36
  >
37
- ${points.map((point,index)=>this.renderPoint(point,index,bounds,clusterIndices))}
37
+ ${renderedPoints.map((point,index)=>this.renderPoint(point,index,bounds,clusterIndices))}
38
38
  </svg>
39
+ ${renderedPoints.length<points.length?html`<p part="limit" role="note">${this.localize("embeddingExplorerPointLimit",void 0,{shown:numberFormat.format(renderedPoints.length),total:numberFormat.format(points.length)})}</p>`:nothing}
39
40
  ${visibleClusters.length>0?html`<div part="legend" role="list">
40
41
  ${visibleClusters.map(cluster=>html`<span
41
42
  part="legend-item"
@@ -1 +1 @@
1
- import{css}from"lit";const styles=css`:host{display:block}[part=base]{gap:var(--lr-space-s);padding:var(--lr-space-m);border:var(--lr-border-width-thin) solid var(--lr-color-border);border-radius:var(--lr-radius);background:var(--lr-entity-card-bg,var(--lr-color-surface));color:var(--lr-color-text);flex-direction:column;min-inline-size:0;display:flex}:host([compact]) [part=base]{padding:var(--lr-entity-card-compact-padding,var(--lr-space-s));gap:var(--lr-entity-card-compact-gap,var(--lr-space-xs))}:host([frame=plain]) [part=base]{background:0 0;border:0;border-radius:0;padding:0}[part=header]{align-items:center;gap:var(--lr-space-xs);flex-wrap:wrap;display:flex}[part=title]{min-inline-size:0;font-size:var(--lr-font-size-m);font-weight:var(--lr-font-weight-semibold);overflow-wrap:anywhere;flex:auto}[part=description]{color:var(--lr-color-text-quiet);font-size:var(--lr-font-size-sm);overflow-wrap:anywhere;margin:0}[part=properties]{gap:var(--lr-space-xs);flex-direction:column;display:flex}[part=actions]{align-items:center;gap:var(--lr-space-xs);flex:none;display:flex}@media (forced-colors:active){[part=type-badge]{--lr-badge-color:var(--lr-color-text)!important;--lr-badge-background:var(--lr-color-surface)!important;--lr-badge-border:var(--lr-color-border-strong)!important}}`;export{styles};
1
+ import{css}from"lit";const styles=css`:host{display:block}[part=base]{gap:var(--lr-space-s);padding:var(--lr-space-m);border:var(--lr-border-width-thin) solid var(--lr-color-border);border-radius:var(--lr-radius);background:var(--lr-entity-card-bg,var(--lr-color-surface));color:var(--lr-color-text);box-sizing:border-box;flex-direction:column;block-size:100%;min-inline-size:0;display:flex}:host([compact]) [part=base]{padding:var(--lr-entity-card-compact-padding,var(--lr-space-s));gap:var(--lr-entity-card-compact-gap,var(--lr-space-xs))}:host([frame=plain]) [part=base]{background:0 0;border:0;border-radius:0;padding:0}[part=header]{align-items:center;gap:var(--lr-space-xs);flex-wrap:wrap;display:flex}[part=title]{min-inline-size:0;font-size:var(--lr-font-size-m);font-weight:var(--lr-font-weight-semibold);overflow-wrap:anywhere;flex:auto}[part=description]{color:var(--lr-color-text-quiet);font-size:var(--lr-font-size-sm);overflow-wrap:anywhere;margin:0}[part=properties]{gap:var(--lr-space-xs);flex-direction:column;display:flex}[part=actions]{align-items:center;gap:var(--lr-space-xs);flex:none;display:flex}@media (forced-colors:active){[part=type-badge]{--lr-badge-color:var(--lr-color-text)!important;--lr-badge-background:var(--lr-color-surface)!important;--lr-badge-border:var(--lr-color-border-strong)!important}}`;export{styles};
@@ -13,7 +13,9 @@ import{type TemplateResult,type PropertyValues}from'lit';import{LyraElement}from
13
13
  *
14
14
  * @customElement lr-entity-chip
15
15
  * @slot - Rich preview content (typically a compact `lr-entity-card`), shown in a floating
16
- * popover on hover/focus. No content -> no popover and no hover affordance at all.
16
+ * popover on hover/focus. No content -> no popover and no hover affordance at all. An open
17
+ * popover participates in shared Escape ordering even while only hovered, deferring to a
18
+ * genuinely topmost overlay opened on top of it.
17
19
  * @event lr-entity-select - Click, or Enter while focused. `detail: { entityId }`.
18
20
  * @event lr-entity-open - Dblclick, or Space while focused. `detail: { entityId }`.
19
21
  * @csspart base - The clickable chip (`<button>`).
@@ -54,4 +56,4 @@ typeLabel?:string;private popoverOpen;private buttonEl?;private popoverEl?;priva
54
56
  * regardless of assignment, so `:empty` never matches either. The shared controller answers the
55
57
  * same "does this slot carry real consumer content" question every other presence-driven
56
58
  * component asks, seeded before the first render and kept live afterwards. */
57
- private readonly slotPresence;private cleanupPositioner?;private hideTimer?;private hideTimerOwner?;private hovering;private focused;private get hasPreviewSlot();protected willUpdate(changed:PropertyValues):void;protected updated(changed:PropertyValues):void;disconnectedCallback():void;private get accessibleLabel();private showPreview;private clearHideTimer;private scheduleHidePreview;private hidePreviewNow;private onPointerEnter;private onPointerLeave;private onFocusIn;private onFocusOut;private onKeyDown;private onClick;private onDblClick;private emitOpen;render():TemplateResult;}declare global{interface HTMLElementTagNameMap{'lr-entity-chip':LyraEntityChip;}}
59
+ private readonly slotPresence;private cleanupPositioner?;private overlayHandle?;private hideTimer?;private hideTimerOwner?;private hovering;private focused;private get hasPreviewSlot();protected willUpdate(changed:PropertyValues):void;protected updated(changed:PropertyValues):void;disconnectedCallback():void;private get accessibleLabel();private showPreview;private clearHideTimer;private scheduleHidePreview;private hidePreviewNow;private onPointerEnter;private onPointerLeave;private onFocusIn;private onFocusOut;private onKeyDown;private onClick;private onDblClick;private emitOpen;render():TemplateResult;}declare global{interface HTMLElementTagNameMap{'lr-entity-chip':LyraEntityChip;}}
@@ -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,query}from"lit/decorators.js";import{LyraElement}from"../../../internal/lyra-element.js";import{isNonBlankIdentity}from"../retrieval-identity.js";import{deferredPlace as place}from"../../../internal/anchored-overlay-runtime.js";import{resolveEffectivePositioningStrategy}from"../../../internal/positioning-strategy.js";import{nextId}from"../../../internal/a11y.js";import{SlotPresenceController}from"../../../internal/slot-presence-controller.js";import{styles}from"./entity-chip.styles.js";import{LYRA_DEFAULT_entityChipWithType,LYRA_DEFAULT_untitledEntity}from"../../../internal/default-strings.generated.js";const HIDE_DELAY_MS=200;class LyraEntityChip extends LyraElement{constructor(){super(...arguments),this.entityId="",this.text="",this.type="",this.popoverOpen=!1,this.popoverId=nextId("entity-chip-popover"),this.slotPresence=new SlotPresenceController(this),this.hovering=!1,this.focused=!1,this.onPointerEnter=()=>{this.hovering=!0,this.showPreview()},this.onPointerLeave=()=>{this.hovering=!1,this.scheduleHidePreview()},this.onFocusIn=()=>{this.focused=!0,this.showPreview()},this.onFocusOut=()=>{this.focused=!1,!this.hovering&&this.hidePreviewNow()},this.onKeyDown=e=>{if(e.key==="Escape"&&this.popoverOpen){e.stopPropagation(),this.hidePreviewNow();return}e.key===" "&&!e.repeat&&e.target===this.buttonEl&&(e.preventDefault(),this.emitOpen())},this.onClick=()=>{isNonBlankIdentity(this.entityId)&&this.emit("lr-entity-select",{entityId:this.entityId})},this.onDblClick=()=>{this.emitOpen()}}static{this.defaultStrings={...super.defaultStrings,entityChipWithType:LYRA_DEFAULT_entityChipWithType,untitledEntity:LYRA_DEFAULT_untitledEntity}}static{this.styles=[LyraElement.styles,styles]}get hasPreviewSlot(){return this.slotPresence.has()}willUpdate(changed){super.willUpdate(changed),this.popoverOpen&&!this.hasPreviewSlot&&this.hidePreviewNow()}updated(changed){super.updated(changed),changed.has("popoverOpen")&&(this.cleanupPositioner?.(),this.cleanupPositioner=void 0,this.popoverOpen&&this.buttonEl&&this.popoverEl&&(this.cleanupPositioner=place(this.buttonEl,this.popoverEl,{placement:"top-start",strategy:resolveEffectivePositioningStrategy(this,void 0,"fixed")})))}disconnectedCallback(){super.disconnectedCallback(),this.cleanupPositioner?.(),this.cleanupPositioner=void 0,this.clearHideTimer(),this.popoverOpen=!1,this.hovering=!1,this.focused=!1}get accessibleLabel(){const label=(this.text??"").trim()===""?this.localize("untitledEntity"):this.text,typeText=this.typeLabel?.trim()||(this.type??"").trim();return typeText?this.localize("entityChipWithType",void 0,{label,type:typeText}):label}showPreview(){this.hasPreviewSlot&&(this.clearHideTimer(),!this.popoverOpen&&(this.popoverOpen=!0))}clearHideTimer(){this.hideTimer!==void 0&&this.hideTimerOwner?.clearTimeout(this.hideTimer),this.hideTimer=void 0,this.hideTimerOwner=void 0}scheduleHidePreview(){if(!this.popoverOpen||this.hovering||this.focused)return;this.clearHideTimer();const ownerWindow=this.ownerDocument.defaultView;if(!ownerWindow)return;const handle=ownerWindow.setTimeout(()=>{this.hideTimer===handle&&(this.hideTimer=void 0,this.hideTimerOwner=void 0,this.popoverOpen=!1)},HIDE_DELAY_MS);this.hideTimer=handle,this.hideTimerOwner=ownerWindow}hidePreviewNow(){this.clearHideTimer(),this.popoverOpen&&(this.popoverOpen=!1)}emitOpen(){isNonBlankIdentity(this.entityId)&&this.emit("lr-entity-open",{entityId:this.entityId})}render(){return html`
1
+ var __decorate=function(decorators,target,key,desc){var c=arguments.length,r=c<3?target:desc===null?desc=Object.getOwnPropertyDescriptor(target,key):desc,d;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")r=Reflect.decorate(decorators,target,key,desc);else for(var i=decorators.length-1;i>=0;i--)(d=decorators[i])&&(r=(c<3?d(r):c>3?d(target,key,r):d(target,key))||r);return c>3&&r&&Object.defineProperty(target,key,r),r};import{html,nothing}from"lit";import{property,state,query}from"lit/decorators.js";import{LyraElement}from"../../../internal/lyra-element.js";import{isNonBlankIdentity}from"../retrieval-identity.js";import{deferredPlace as place}from"../../../internal/anchored-overlay-runtime.js";import{activateNonmodalOverlay}from"../../../internal/nonmodal-overlay-manager.js";import{resolveEffectivePositioningStrategy}from"../../../internal/positioning-strategy.js";import{nextId}from"../../../internal/a11y.js";import{SlotPresenceController}from"../../../internal/slot-presence-controller.js";import{styles}from"./entity-chip.styles.js";import{LYRA_DEFAULT_entityChipWithType,LYRA_DEFAULT_untitledEntity}from"../../../internal/default-strings.generated.js";const HIDE_DELAY_MS=200;class LyraEntityChip extends LyraElement{constructor(){super(...arguments),this.entityId="",this.text="",this.type="",this.popoverOpen=!1,this.popoverId=nextId("entity-chip-popover"),this.slotPresence=new SlotPresenceController(this),this.hovering=!1,this.focused=!1,this.onPointerEnter=()=>{this.hovering=!0,this.showPreview()},this.onPointerLeave=()=>{this.hovering=!1,this.scheduleHidePreview()},this.onFocusIn=()=>{this.focused=!0,this.showPreview()},this.onFocusOut=()=>{this.focused=!1,!this.hovering&&this.hidePreviewNow()},this.onKeyDown=e=>{if(e.key==="Escape"&&this.popoverOpen&&this.overlayHandle?.isTopmost()){e.stopPropagation(),this.hidePreviewNow();return}e.key===" "&&!e.repeat&&e.target===this.buttonEl&&(e.preventDefault(),this.emitOpen())},this.onClick=()=>{isNonBlankIdentity(this.entityId)&&this.emit("lr-entity-select",{entityId:this.entityId})},this.onDblClick=()=>{this.emitOpen()}}static{this.defaultStrings={...super.defaultStrings,entityChipWithType:LYRA_DEFAULT_entityChipWithType,untitledEntity:LYRA_DEFAULT_untitledEntity}}static{this.styles=[LyraElement.styles,styles]}get hasPreviewSlot(){return this.slotPresence.has()}willUpdate(changed){super.willUpdate(changed),this.popoverOpen&&!this.hasPreviewSlot&&this.hidePreviewNow()}updated(changed){super.updated(changed),changed.has("popoverOpen")&&(this.cleanupPositioner?.(),this.cleanupPositioner=void 0,this.overlayHandle?.deactivate({restoreFocus:!1}),this.overlayHandle=void 0,this.popoverOpen&&this.buttonEl&&this.popoverEl&&(this.cleanupPositioner=place(this.buttonEl,this.popoverEl,{placement:"top-start",strategy:resolveEffectivePositioningStrategy(this,void 0,"fixed")}),this.overlayHandle=activateNonmodalOverlay({host:this,panel:()=>this.popoverEl??null,onEscape:()=>this.hidePreviewNow(),restoreFocusTo:null})))}disconnectedCallback(){super.disconnectedCallback(),this.cleanupPositioner?.(),this.cleanupPositioner=void 0,this.overlayHandle?.deactivate({restoreFocus:!1}),this.overlayHandle=void 0,this.clearHideTimer(),this.popoverOpen=!1,this.hovering=!1,this.focused=!1}get accessibleLabel(){const label=(this.text??"").trim()===""?this.localize("untitledEntity"):this.text,typeText=this.typeLabel?.trim()||(this.type??"").trim();return typeText?this.localize("entityChipWithType",void 0,{label,type:typeText}):label}showPreview(){this.hasPreviewSlot&&(this.clearHideTimer(),!this.popoverOpen&&(this.popoverOpen=!0))}clearHideTimer(){this.hideTimer!==void 0&&this.hideTimerOwner?.clearTimeout(this.hideTimer),this.hideTimer=void 0,this.hideTimerOwner=void 0}scheduleHidePreview(){if(!this.popoverOpen||this.hovering||this.focused)return;this.clearHideTimer();const ownerWindow=this.ownerDocument.defaultView;if(!ownerWindow)return;const handle=ownerWindow.setTimeout(()=>{this.hideTimer===handle&&(this.hideTimer=void 0,this.hideTimerOwner=void 0,this.popoverOpen=!1)},HIDE_DELAY_MS);this.hideTimer=handle,this.hideTimerOwner=ownerWindow}hidePreviewNow(){this.clearHideTimer(),this.popoverOpen&&(this.popoverOpen=!1)}emitOpen(){isNonBlankIdentity(this.entityId)&&this.emit("lr-entity-open",{entityId:this.entityId})}render(){return html`
2
2
  <span
3
3
  class="wrapper"
4
4
  @pointerenter=${this.onPointerEnter}
@@ -1,6 +1,6 @@
1
- var __decorate=function(decorators,target,key,desc){var c=arguments.length,r=c<3?target:desc===null?desc=Object.getOwnPropertyDescriptor(target,key):desc,d;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")r=Reflect.decorate(decorators,target,key,desc);else for(var i=decorators.length-1;i>=0;i--)(d=decorators[i])&&(r=(c<3?d(r):c>3?d(target,key,r):d(target,key))||r);return c>3&&r&&Object.defineProperty(target,key,r),r};import{html,nothing}from"lit";import{property,state}from"lit/decorators.js";import{hostAriaLabel}from"../../../internal/a11y.js";import{LyraElement}from"../../../internal/lyra-element.js";import"../entity-card/entity-card.class.js";import"../neighbor-list/neighbor-list.class.js";import"../chunk-inspector/chunk-inspector.class.js";import"../provenance-panel/provenance-panel.class.js";import"../../data/stat/stat.class.js";import"../../layout/tab-group/tab-group.class.js";import"../../overlays/empty/empty.class.js";import{styles}from"./entity-dossier.styles.js";import{trueDefaultBooleanConverter}from"../../../internal/converters.js";import{LYRA_DEFAULT_chunkInspectorLabel,LYRA_DEFAULT_collapse,LYRA_DEFAULT_details,LYRA_DEFAULT_map,LYRA_DEFAULT_navigation,LYRA_DEFAULT_neighborListLabel,LYRA_DEFAULT_noData,LYRA_DEFAULT_open,LYRA_DEFAULT_popover,LYRA_DEFAULT_progress,LYRA_DEFAULT_provenancePanelLabel,LYRA_DEFAULT_search,LYRA_DEFAULT_select}from"../../../internal/default-strings.generated.js";class LyraEntityDossier extends LyraElement{constructor(){super(...arguments),this.entity=null,this.types=[],this.communityLabel="",this.showFocusButton=!0,this.confidence=null,this.neighbors=[],this.groupByRelation=!1,this.expandable=!1,this.chunks=[],this.thresholds={high:.75,medium:.5},this.provenance=null,this.accessibleLabel=null,this.activeTab="relationships",this.onTabsChange=e=>{e.stopPropagation();const tabId=e.detail.name;this.activeTab=tabId,this.emit("lr-tab-show",{tabId})},this.containTabsEvent=e=>{e.stopPropagation()}}static{this.defaultStrings={...super.defaultStrings,chunkInspectorLabel:LYRA_DEFAULT_chunkInspectorLabel,collapse:LYRA_DEFAULT_collapse,details:LYRA_DEFAULT_details,map:LYRA_DEFAULT_map,navigation:LYRA_DEFAULT_navigation,neighborListLabel:LYRA_DEFAULT_neighborListLabel,noData:LYRA_DEFAULT_noData,open:LYRA_DEFAULT_open,popover:LYRA_DEFAULT_popover,progress:LYRA_DEFAULT_progress,provenancePanelLabel:LYRA_DEFAULT_provenancePanelLabel,search:LYRA_DEFAULT_search,select:LYRA_DEFAULT_select}}static{this.ownedCollectionProperties=Object.freeze(["entity","confidence","types","neighbors","chunks","provenance"])}static{this.styles=[LyraElement.styles,styles]}render(){if(!this.entity)return html`<div part="base">
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"../entity-card/entity-card.class.js";import"../neighbor-list/neighbor-list.class.js";import"../chunk-inspector/chunk-inspector.class.js";import"../provenance-panel/provenance-panel.class.js";import"../../data/stat/stat.class.js";import"../../layout/tab-group/tab-group.class.js";import"../../overlays/empty/empty.class.js";import{styles}from"./entity-dossier.styles.js";import{trueDefaultBooleanConverter}from"../../../internal/converters.js";import{LYRA_DEFAULT_chunkInspectorLabel,LYRA_DEFAULT_collapse,LYRA_DEFAULT_details,LYRA_DEFAULT_map,LYRA_DEFAULT_navigation,LYRA_DEFAULT_neighborListLabel,LYRA_DEFAULT_noData,LYRA_DEFAULT_open,LYRA_DEFAULT_popover,LYRA_DEFAULT_progress,LYRA_DEFAULT_provenancePanelLabel,LYRA_DEFAULT_search,LYRA_DEFAULT_select}from"../../../internal/default-strings.generated.js";class LyraEntityDossier extends LyraElement{constructor(){super(...arguments),this.entity=null,this.types=[],this.communityLabel="",this.showFocusButton=!0,this.confidence=null,this.neighbors=[],this.groupByRelation=!1,this.expandable=!1,this.chunks=[],this.thresholds={high:.75,medium:.5},this.provenance=null,this.accessibleLabel=null,this.activeTab="relationships",this.onTabsChange=e=>{e.stopPropagation();const tabId=e.detail.name;this.activeTab=tabId,this.emit("lr-tab-show",{tabId})},this.containTabsEvent=e=>{e.stopPropagation()}}static{this.defaultStrings={...super.defaultStrings,chunkInspectorLabel:LYRA_DEFAULT_chunkInspectorLabel,collapse:LYRA_DEFAULT_collapse,details:LYRA_DEFAULT_details,map:LYRA_DEFAULT_map,navigation:LYRA_DEFAULT_navigation,neighborListLabel:LYRA_DEFAULT_neighborListLabel,noData:LYRA_DEFAULT_noData,open:LYRA_DEFAULT_open,popover:LYRA_DEFAULT_popover,progress:LYRA_DEFAULT_progress,provenancePanelLabel:LYRA_DEFAULT_provenancePanelLabel,search:LYRA_DEFAULT_search,select:LYRA_DEFAULT_select}}static{this.ownedCollectionProperties=Object.freeze(["entity","confidence","types","neighbors","chunks","provenance"])}static{this.styles=[LyraElement.styles,styles]}render(){if(!this.entity)return html`<div part="base">
2
2
  <lr-empty part="empty" heading=${this.localize("noData")}></lr-empty>
3
- </div>`;const entity=this.entity,c=this.confidence,tabsLabel=hostAriaLabel(this)===null?this.accessibleLabel??nothing:nothing;return html`
3
+ </div>`;const entity=this.entity,c=this.confidence,tabsLabel=this.hasAttribute("aria-label")?nothing:this.accessibleLabel??nothing;return html`
4
4
  <div part="base">
5
5
  <div part="header">
6
6
  <lr-entity-card
@@ -1,4 +1,9 @@
1
- import type{LyraEventDetailSnapshot}from'../../../internal/lyra-element.js';import{type TemplateResult}from'lit';import{LyraElement}from'../../../internal/lyra-element.js';import type{LyraNodeTypeStyle}from'../../../internal/node-type-style.js';export type{LyraNodeTypeStyle}from'../../../internal/node-type-style.js';export interface LyraGraphLegendVisibilityDetail{hiddenTypes:string[];}export interface LyraGraphLegendEventMap{'lr-before-visibility-change':CustomEvent<LyraEventDetailSnapshot<LyraGraphLegendVisibilityDetail>>;'lr-visibility-change':CustomEvent<LyraEventDetailSnapshot<LyraGraphLegendVisibilityDetail>>;}
1
+ import type{LyraEventDetailSnapshot}from'../../../internal/lyra-element.js';import{type TemplateResult}from'lit';import{LyraElement}from'../../../internal/lyra-element.js';import type{LyraNodeTypeStyle}from'../../../internal/node-type-style.js';export type{LyraNodeTypeStyle}from'../../../internal/node-type-style.js';export interface LyraGraphLegendVisibilityDetail{hiddenTypes:string[];}export interface LyraGraphLegendEventMap{
2
+ /** Canonical name for the visibility-change veto point. */
3
+ 'lr-visibility-change-request':CustomEvent<LyraEventDetailSnapshot<LyraGraphLegendVisibilityDetail>>;
4
+ /** Deprecated alias of `lr-visibility-change-request`, kept firing unchanged for back-compat;
5
+ * slated for removal in 21.0.0. */
6
+ 'lr-before-visibility-change':CustomEvent<LyraEventDetailSnapshot<LyraGraphLegendVisibilityDetail>>;'lr-visibility-change':CustomEvent<LyraEventDetailSnapshot<LyraGraphLegendVisibilityDetail>>;}
2
7
  /**
3
8
  * `<lr-graph-legend>` — a node-type legend for a paired `lr-graph`: one swatch + label + count
4
9
  * row per `lr-graph` node type, doubling as visibility filters. Never reads or writes a graph directly —
@@ -12,8 +17,12 @@ import type{LyraEventDetailSnapshot}from'../../../internal/lyra-element.js';impo
12
17
  * untyped payload cannot create an unnamed interactive filter.
13
18
  *
14
19
  * @customElement lr-graph-legend
15
- * @event lr-before-visibility-change - Cancelable proposed visibility change. `detail: { hiddenTypes }`
16
- * is a frozen complete next array; canceling leaves state, announcements, and the post event unchanged.
20
+ * @event lr-visibility-change-request - Cancelable proposed visibility change. `detail: { hiddenTypes }`
21
+ * is a frozen complete next array; canceling leaves state, announcements, and the post event
22
+ * unchanged. Fires before `lr-before-visibility-change`, from the same gesture; either event may
23
+ * veto.
24
+ * @event lr-before-visibility-change - Deprecated cancelable alias of `lr-visibility-change-request`, kept
25
+ * firing unchanged for back-compat; slated for removal in 21.0.0. Same frozen detail.
17
26
  * @event lr-visibility-change - `detail: { hiddenTypes }` — the complete updated array, fired
18
27
  * after an accepted toggle has assigned and announced it.
19
28
  * @csspart base - The legend wrapper. It owns `role="group"` and the fallback name unless a
@@ -46,4 +55,9 @@ interactive:boolean;
46
55
  label:string;private liveText;
47
56
  /** The documented part remains a shadow-DOM text mirror only; announcements use this shared
48
57
  * light-DOM sink because shadow live regions are not reliable across AT/browser pairs. */
49
- private announcementSink?;connectedCallback():void;disconnectedCallback():void;private paletteColor;private swatchColor;private isVisible;private toggle;private renderSwatchShape;render():TemplateResult;}declare global{interface HTMLElementTagNameMap{'lr-graph-legend':LyraGraphLegend;}}
58
+ private announcementSink?;connectedCallback():void;disconnectedCallback():void;private paletteColor;
59
+ /** Builds a `paletteColor()` resolver that reads `getComputedStyle(this)` at most once per
60
+ * distinct `index % PALETTE_SIZE` slot, reused across the rest of one `render()` pass, instead
61
+ * of once per legend entry -- the underlying `--lr-graph-cat-N` value cannot change between two
62
+ * entries in the same synchronous render. */
63
+ private paletteColorResolver;private isVisible;private toggle;private renderSwatchShape;render():TemplateResult;}declare global{interface HTMLElementTagNameMap{'lr-graph-legend':LyraGraphLegend;}}
@@ -1,10 +1,10 @@
1
- var __decorate=function(decorators,target,key,desc){var c=arguments.length,r=c<3?target:desc===null?desc=Object.getOwnPropertyDescriptor(target,key):desc,d;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")r=Reflect.decorate(decorators,target,key,desc);else for(var i=decorators.length-1;i>=0;i--)(d=decorators[i])&&(r=(c<3?d(r):c>3?d(target,key,r):d(target,key))||r);return c>3&&r&&Object.defineProperty(target,key,r),r};import{html,nothing,svg}from"lit";import{property,state}from"lit/decorators.js";import{LyraElement}from"../../../internal/lyra-element.js";import{canonicalIdentityList,firstByRetrievalIdentity}from"../retrieval-identity.js";import{specialistTokens}from"../../../internal/specialist-tokens.styles.js";import{srOnly}from"../../../internal/a11y.js";import{styles}from"./graph-legend.styles.js";import{retrievalSemanticLabel,retrievalSemanticRole}from"../retrieval-semantic-owner.js";import{trueDefaultBooleanConverter}from"../../../internal/converters.js";import{getNumberFormat}from"../../../internal/intl-cache.js";import{finiteCount}from"../../../internal/numbers.js";import{sanitizeCssColor}from"../../../internal/safe-css.js";import{acquireAnnouncementSink}from"../../../internal/announcer.js";import{LYRA_DEFAULT_graphLegendLabel,LYRA_DEFAULT_legendTypeHidden,LYRA_DEFAULT_legendTypeShown}from"../../../internal/default-strings.generated.js";const PALETTE_SIZE=8,FALLBACK_PALETTE=["#0969da","#1a7f37","#9a6700","#cf222e","#8250df","#bf3989","#0a7d91","#57606a"];class LyraGraphLegend extends LyraElement{constructor(){super(...arguments),this.types=[],this.hiddenTypes=[],this.interactive=!0,this.label="",this.liveText=""}static{this.defaultStrings={...super.defaultStrings,graphLegendLabel:LYRA_DEFAULT_graphLegendLabel,legendTypeHidden:LYRA_DEFAULT_legendTypeHidden,legendTypeShown:LYRA_DEFAULT_legendTypeShown}}static{this.ownedCollectionProperties=Object.freeze(["types","hiddenTypes","counts"])}static{this.styles=[LyraElement.styles,specialistTokens,styles,srOnly]}static{this.immutableEventDetails=Object.freeze(["lr-before-visibility-change","lr-visibility-change"])}connectedCallback(){super.connectedCallback(),this.announcementSink??=acquireAnnouncementSink("polite",{document:this.ownerDocument,source:this})}disconnectedCallback(){this.announcementSink?.release(),this.announcementSink=void 0,super.disconnectedCallback()}paletteColor(index){return getComputedStyle(this).getPropertyValue(`--lr-graph-cat-${index%PALETTE_SIZE+1}`).trim()||FALLBACK_PALETTE[index%PALETTE_SIZE]}swatchColor(type,index){return sanitizeCssColor(type.color)??this.paletteColor(index)}isVisible(id){return!canonicalIdentityList(this.hiddenTypes).includes(id)}toggle(type){if(!this.interactive)return;const hiddenTypes=canonicalIdentityList(this.hiddenTypes),wasVisible=this.isVisible(type.id),next=wasVisible?[...hiddenTypes,type.id]:hiddenTypes.filter(id=>id!==type.id);this.emit("lr-before-visibility-change",{hiddenTypes:next},{cancelable:!0}).defaultPrevented||(this.hiddenTypes=next,this.liveText=this.localize(wasVisible?"legendTypeHidden":"legendTypeShown",void 0,{label:type.label}),this.announcementSink?.announce(this.liveText),this.emit("lr-visibility-change",{hiddenTypes:next}))}renderSwatchShape(shape,color){return shape==="square"?svg`<rect x="1" y="1" width="10" height="10" fill=${color}></rect>`:shape==="diamond"?svg`<polygon points="6,0 12,6 6,12 0,6" fill=${color}></polygon>`:svg`<circle cx="6" cy="6" r="5" fill=${color}></circle>`}render(){const types=firstByRetrievalIdentity(this.types,type=>type?.id).filter(type=>typeof type?.label=="string"&&type.label.trim().length>0),groupLabel=retrievalSemanticLabel(this,this.label||this.localize("graphLegendLabel")),groupRole=retrievalSemanticRole(this,"group");return html`
1
+ var __decorate=function(decorators,target,key,desc){var c=arguments.length,r=c<3?target:desc===null?desc=Object.getOwnPropertyDescriptor(target,key):desc,d;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")r=Reflect.decorate(decorators,target,key,desc);else for(var i=decorators.length-1;i>=0;i--)(d=decorators[i])&&(r=(c<3?d(r):c>3?d(target,key,r):d(target,key))||r);return c>3&&r&&Object.defineProperty(target,key,r),r};import{html,nothing,svg}from"lit";import{property,state}from"lit/decorators.js";import{LyraElement}from"../../../internal/lyra-element.js";import{canonicalIdentityList,firstByRetrievalIdentity}from"../retrieval-identity.js";import{specialistTokens}from"../../../internal/specialist-tokens.styles.js";import{srOnly}from"../../../internal/a11y.js";import{styles}from"./graph-legend.styles.js";import{retrievalSemanticLabel,retrievalSemanticRole}from"../retrieval-semantic-owner.js";import{trueDefaultBooleanConverter}from"../../../internal/converters.js";import{getNumberFormat}from"../../../internal/intl-cache.js";import{finiteCount}from"../../../internal/numbers.js";import{sanitizeCssColor}from"../../../internal/safe-css.js";import{acquireAnnouncementSink}from"../../../internal/announcer.js";import{LYRA_DEFAULT_graphLegendLabel,LYRA_DEFAULT_legendTypeHidden,LYRA_DEFAULT_legendTypeShown}from"../../../internal/default-strings.generated.js";const PALETTE_SIZE=8,FALLBACK_PALETTE=["#0969da","#1a7f37","#9a6700","#cf222e","#8250df","#bf3989","#0a7d91","#57606a"];class LyraGraphLegend extends LyraElement{constructor(){super(...arguments),this.types=[],this.hiddenTypes=[],this.interactive=!0,this.label="",this.liveText=""}static{this.defaultStrings={...super.defaultStrings,graphLegendLabel:LYRA_DEFAULT_graphLegendLabel,legendTypeHidden:LYRA_DEFAULT_legendTypeHidden,legendTypeShown:LYRA_DEFAULT_legendTypeShown}}static{this.ownedCollectionProperties=Object.freeze(["types","hiddenTypes","counts"])}static{this.styles=[LyraElement.styles,specialistTokens,styles,srOnly]}static{this.immutableEventDetails=Object.freeze(["lr-visibility-change-request","lr-before-visibility-change","lr-visibility-change"])}connectedCallback(){super.connectedCallback(),this.announcementSink??=acquireAnnouncementSink("polite",{document:this.ownerDocument,source:this})}disconnectedCallback(){this.announcementSink?.release(),this.announcementSink=void 0,super.disconnectedCallback()}paletteColor(index){return getComputedStyle(this).getPropertyValue(`--lr-graph-cat-${index%PALETTE_SIZE+1}`).trim()||FALLBACK_PALETTE[index%PALETTE_SIZE]}paletteColorResolver(){const cache=new Map;return index=>{const slot=index%PALETTE_SIZE;let color=cache.get(slot);return color===void 0&&(color=this.paletteColor(index),cache.set(slot,color)),color}}isVisible(id){return!canonicalIdentityList(this.hiddenTypes).includes(id)}toggle(type){if(!this.interactive)return;const hiddenTypes=canonicalIdentityList(this.hiddenTypes),wasVisible=this.isVisible(type.id),next=wasVisible?[...hiddenTypes,type.id]:hiddenTypes.filter(id=>id!==type.id),proposal=this.emit("lr-visibility-change-request",{hiddenTypes:next},{cancelable:!0}),deprecatedAlias=this.emit("lr-before-visibility-change",{hiddenTypes:next},{cancelable:!0});proposal.defaultPrevented||deprecatedAlias.defaultPrevented||(this.hiddenTypes=next,this.liveText=this.localize(wasVisible?"legendTypeHidden":"legendTypeShown",void 0,{label:type.label}),this.announcementSink?.announce(this.liveText),this.emit("lr-visibility-change",{hiddenTypes:next}))}renderSwatchShape(shape,color){return shape==="square"?svg`<rect x="1" y="1" width="10" height="10" fill=${color}></rect>`:shape==="diamond"?svg`<polygon points="6,0 12,6 6,12 0,6" fill=${color}></polygon>`:svg`<circle cx="6" cy="6" r="5" fill=${color}></circle>`}render(){const types=firstByRetrievalIdentity(this.types,type=>type?.id).filter(type=>typeof type?.label=="string"&&type.label.trim().length>0),groupLabel=retrievalSemanticLabel(this,this.label||this.localize("graphLegendLabel")),groupRole=retrievalSemanticRole(this,"group"),resolvePaletteColor=this.paletteColorResolver();return html`
2
2
  <div
3
3
  part="base"
4
4
  role=${groupRole??nothing}
5
5
  aria-label=${groupLabel??nothing}
6
6
  >
7
- ${types.map((type,index)=>{const visible=this.isVisible(type.id),color=this.swatchColor(type,index),count=this.counts?.[type.id],content=html`
7
+ ${types.map((type,index)=>{const visible=this.isVisible(type.id),color=sanitizeCssColor(type.color)??resolvePaletteColor(index),count=this.counts?.[type.id],content=html`
8
8
  <svg
9
9
  part="swatch"
10
10
  viewBox="0 0 12 12"
@@ -22,6 +22,12 @@ import type{LyraEventDetailSnapshot}from'../../../internal/lyra-element.js';impo
22
22
  * array does not update the view. Blank claim/citation ids and later duplicates are ignored before
23
23
  * counts, lookup, rendering, or activation. The first record for an id wins.
24
24
  *
25
+ * At most 500 citations render as `[part="evidence-item"]` rows; a `citations` array past that
26
+ * length still reports its true count in `[part="evidence-count"]` but renders a localized
27
+ * `[part="limit"]` notice after the list rather than mounting an unbounded number of rows. The
28
+ * full citation set is still forwarded to a composed `<lr-claim-evidence>` for claim-to-citation
29
+ * lookup, which applies its own render cap on the claims it lists.
30
+ *
25
31
  * @customElement lr-grounding-summary
26
32
  * @event lr-citation-select - An evidence citation badge was activated. `detail: { citation }`.
27
33
  * @event lr-claim-select - A composed claim-evidence row was activated. `detail: { claim }`.
@@ -41,6 +47,7 @@ import type{LyraEventDetailSnapshot}from'../../../internal/lyra-element.js';impo
41
47
  * @csspart evidence-span - A citation's formatted `span` range, shown next to its badge (omitted
42
48
  * when `span` is unset).
43
49
  * @csspart evidence-list - The semantic list containing the evidence citations.
50
+ * @csspart limit - Localized notice shown when `citations` exceeds the 500-citation render ceiling.
44
51
  * @csspart claims - Claim-level evidence, when present and enabled.
45
52
  * @csspart empty - The empty-state message, shown when `assessment` is `null`.
46
53
  * @status stable
@@ -1,4 +1,4 @@
1
- var __decorate=function(decorators,target,key,desc){var c=arguments.length,r=c<3?target:desc===null?desc=Object.getOwnPropertyDescriptor(target,key):desc,d;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")r=Reflect.decorate(decorators,target,key,desc);else for(var i=decorators.length-1;i>=0;i--)(d=decorators[i])&&(r=(c<3?d(r):c>3?d(target,key,r):d(target,key))||r);return c>3&&r&&Object.defineProperty(target,key,r),r};import{html,nothing}from"lit";import{property}from"lit/decorators.js";import{LyraElement}from"../../../internal/lyra-element.js";import{getOwnDataDescriptor,MISSING_OWN_DATA_DESCRIPTOR,UNSAFE_OWN_DATA_DESCRIPTOR}from"../../../internal/data-descriptors.js";import{finiteCount,finiteRange}from"../../../internal/numbers.js";import{getNumberFormat}from"../../../internal/intl-cache.js";import{resolveHeadingLevel}from"../../../internal/heading-level.js";import"../../data/stat/stat.class.js";import"../citation-badge/citation-badge.class.js";import"../../overlays/empty/empty.class.js";import{styles}from"./grounding-summary.styles.js";import{trueDefaultBooleanConverter}from"../../../internal/converters.js";import"../claim-evidence/claim-evidence.class.js";import{retrievalSemanticLabel,retrievalSemanticRole}from"../retrieval-semantic-owner.js";import{LYRA_DEFAULT_citation,LYRA_DEFAULT_collapse,LYRA_DEFAULT_details,LYRA_DEFAULT_groundingSummaryConfidenceLabel,LYRA_DEFAULT_groundingSummaryCoverageLabel,LYRA_DEFAULT_groundingSummaryEmpty,LYRA_DEFAULT_groundingSummaryEvidenceHeading,LYRA_DEFAULT_groundingSummaryEvidenceSpan,LYRA_DEFAULT_groundingSummaryLabel,LYRA_DEFAULT_groundingSummarySupportedLabel,LYRA_DEFAULT_groundingSummaryUnsupportedLabel,LYRA_DEFAULT_groundingSummaryWarningsHeading,LYRA_DEFAULT_map,LYRA_DEFAULT_navigation,LYRA_DEFAULT_open,LYRA_DEFAULT_popover,LYRA_DEFAULT_search,LYRA_DEFAULT_select}from"../../../internal/default-strings.generated.js";const MAX_PROJECTED_GROUNDING_ROWS=1e4,EMPTY_CANONICAL_CLAIMS=Object.freeze([]),EMPTY_CANONICAL_CITATIONS=Object.freeze([]),EMPTY_WARNINGS=Object.freeze([]);function descriptorValue(value,property2){return getOwnDataDescriptor(value,property2)}function valueOfDescriptor(descriptor){return descriptor===MISSING_OWN_DATA_DESCRIPTOR||descriptor===UNSAFE_OWN_DATA_DESCRIPTOR?void 0:descriptor.value}function hasUnsafeDescriptor(descriptors){return descriptors.some(descriptor=>descriptor===UNSAFE_OWN_DATA_DESCRIPTOR)}function nestedEventDetailValue(event,property2){const detail=event.detail;if(detail===null||typeof detail!="object")return;const descriptor=descriptorValue(detail,property2);return descriptor===MISSING_OWN_DATA_DESCRIPTOR||descriptor===UNSAFE_OWN_DATA_DESCRIPTOR?void 0:descriptor.value}function projectStringList(value){try{if(!Array.isArray(value))return;const lengthDescriptor=descriptorValue(value,"length");if(lengthDescriptor===MISSING_OWN_DATA_DESCRIPTOR||lengthDescriptor===UNSAFE_OWN_DATA_DESCRIPTOR||typeof lengthDescriptor.value!="number"||!Number.isSafeInteger(lengthDescriptor.value)||lengthDescriptor.value<0)return;const values=[],length=Math.min(lengthDescriptor.value,MAX_PROJECTED_GROUNDING_ROWS);for(let index=0;index<length;index+=1){const descriptor=descriptorValue(value,String(index));if(descriptor===UNSAFE_OWN_DATA_DESCRIPTOR)return;descriptor!==MISSING_OWN_DATA_DESCRIPTOR&&typeof descriptor.value=="string"&&values.push(descriptor.value)}return Object.freeze(values)}catch{return}}function projectRange(value){try{if(value===null||typeof value!="object"||Array.isArray(value))return;const startDescriptor=descriptorValue(value,"start"),endDescriptor=descriptorValue(value,"end");if(hasUnsafeDescriptor([startDescriptor,endDescriptor]))return;const start=valueOfDescriptor(startDescriptor),end=valueOfDescriptor(endDescriptor);return typeof start!="number"||typeof end!="number"?void 0:Object.freeze({start,end})}catch{return}}function projectClaim(value){try{if(value===null||typeof value!="object"||Array.isArray(value))return;const idDescriptor=descriptorValue(value,"id"),textDescriptor=descriptorValue(value,"text"),statusDescriptor=descriptorValue(value,"status"),citationIdsDescriptor=descriptorValue(value,"citationIds"),confidenceDescriptor=descriptorValue(value,"confidence"),explanationDescriptor=descriptorValue(value,"explanation");if(hasUnsafeDescriptor([idDescriptor,textDescriptor,statusDescriptor,citationIdsDescriptor,confidenceDescriptor,explanationDescriptor]))return;const id=valueOfDescriptor(idDescriptor),text=valueOfDescriptor(textDescriptor),citationIds=projectStringList(valueOfDescriptor(citationIdsDescriptor));if(typeof id!="string"||id.trim().length===0||typeof text!="string"||citationIds===void 0)return;const status=valueOfDescriptor(statusDescriptor),confidence=valueOfDescriptor(confidenceDescriptor),explanation=valueOfDescriptor(explanationDescriptor),input=Object.freeze({id,text,status:typeof status=="string"?status:"unsupported",citationIds,...typeof confidence=="number"&&Number.isFinite(confidence)?{confidence}:{},...typeof explanation=="string"?{explanation}:{}});return Object.freeze({source:value,input,id})}catch{return}}function projectCitation(value){try{if(value===null||typeof value!="object"||Array.isArray(value))return;const idDescriptor=descriptorValue(value,"id"),chunkIdDescriptor=descriptorValue(value,"chunkId"),sourceIdDescriptor=descriptorValue(value,"sourceId"),spanDescriptor=descriptorValue(value,"span"),labelDescriptor=descriptorValue(value,"label"),quoteDescriptor=descriptorValue(value,"quote");if(hasUnsafeDescriptor([idDescriptor,chunkIdDescriptor,sourceIdDescriptor,spanDescriptor,labelDescriptor,quoteDescriptor]))return;const id=valueOfDescriptor(idDescriptor);if(typeof id!="string"||id.trim().length===0)return;const chunkId=valueOfDescriptor(chunkIdDescriptor),sourceId=valueOfDescriptor(sourceIdDescriptor),spanValue=valueOfDescriptor(spanDescriptor),label=valueOfDescriptor(labelDescriptor),quote=valueOfDescriptor(quoteDescriptor),span=spanDescriptor===MISSING_OWN_DATA_DESCRIPTOR||spanValue===void 0?void 0:projectRange(spanValue);if(spanValue!==void 0&&span===void 0)return;const input=Object.freeze({id,...typeof chunkId=="string"?{chunkId}:{},...typeof sourceId=="string"?{sourceId}:{},...span===void 0?{}:{span},...typeof label=="string"?{label}:{},...typeof quote=="string"?{quote}:{}});return Object.freeze({source:value,input,id,...typeof sourceId=="string"?{sourceId}:{},...typeof label=="string"?{label}:{},...span===void 0?{}:{span}})}catch{return}}function projectRows(value,project,empty){try{if(!Array.isArray(value))return empty;const lengthDescriptor=descriptorValue(value,"length");if(lengthDescriptor===MISSING_OWN_DATA_DESCRIPTOR||lengthDescriptor===UNSAFE_OWN_DATA_DESCRIPTOR||typeof lengthDescriptor.value!="number"||!Number.isSafeInteger(lengthDescriptor.value)||lengthDescriptor.value<0)return empty;const rows=[],seen=new Set,length=Math.min(lengthDescriptor.value,MAX_PROJECTED_GROUNDING_ROWS);for(let index=0;index<length;index+=1){const descriptor=descriptorValue(value,String(index));if(descriptor===MISSING_OWN_DATA_DESCRIPTOR||descriptor===UNSAFE_OWN_DATA_DESCRIPTOR)continue;const row=project(descriptor.value);!row||seen.has(row.id)||(seen.add(row.id),rows.push(row))}return Object.freeze(rows)}catch{return empty}}function projectAssessment(value){try{if(value===null||typeof value!="object"||Array.isArray(value))return;const supportedClaimsDescriptor=descriptorValue(value,"supportedClaims"),unsupportedClaimsDescriptor=descriptorValue(value,"unsupportedClaims"),coverageDescriptor=descriptorValue(value,"coverage"),confidenceDescriptor=descriptorValue(value,"confidence"),warningsDescriptor=descriptorValue(value,"warnings"),claimsDescriptor=descriptorValue(value,"claims");if(hasUnsafeDescriptor([supportedClaimsDescriptor,unsupportedClaimsDescriptor,coverageDescriptor,confidenceDescriptor,warningsDescriptor,claimsDescriptor]))return;const supportedClaims=valueOfDescriptor(supportedClaimsDescriptor),unsupportedClaims=valueOfDescriptor(unsupportedClaimsDescriptor),coverage=valueOfDescriptor(coverageDescriptor),confidence=valueOfDescriptor(confidenceDescriptor),warningsValue=valueOfDescriptor(warningsDescriptor),claimsValue=valueOfDescriptor(claimsDescriptor),warnings=warningsDescriptor===MISSING_OWN_DATA_DESCRIPTOR||warningsValue===void 0?EMPTY_WARNINGS:projectStringList(warningsValue)??EMPTY_WARNINGS,claims=claimsDescriptor===MISSING_OWN_DATA_DESCRIPTOR||claimsValue===void 0?EMPTY_CANONICAL_CLAIMS:projectRows(claimsValue,projectClaim,EMPTY_CANONICAL_CLAIMS);return Object.freeze({supportedClaims:typeof supportedClaims=="number"?supportedClaims:0,unsupportedClaims:typeof unsupportedClaims=="number"?unsupportedClaims:0,coverage:typeof coverage=="number"?coverage:0,...typeof confidence=="number"?{confidence}:{},warnings,claims})}catch{return}}class LyraGroundingSummary extends LyraElement{constructor(){super(...arguments),this.assessment=null,this.citations=[],this.thresholds={high:.8,medium:.5},this.showClaims=!0,this.headingLevel="3",this.canonicalAssessmentBySource=new WeakMap,this.canonicalCitationsBySource=new WeakMap,this.renderEvidenceItem=(citation,index)=>{const numberFormat=getNumberFormat(this.effectiveLocale),spanText=citation.span?this.localize("groundingSummaryEvidenceSpan",void 0,{start:numberFormat.format(finiteCount(citation.span.start)),end:numberFormat.format(finiteCount(citation.span.end))}):"";return html`
1
+ var __decorate=function(decorators,target,key,desc){var c=arguments.length,r=c<3?target:desc===null?desc=Object.getOwnPropertyDescriptor(target,key):desc,d;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")r=Reflect.decorate(decorators,target,key,desc);else for(var i=decorators.length-1;i>=0;i--)(d=decorators[i])&&(r=(c<3?d(r):c>3?d(target,key,r):d(target,key))||r);return c>3&&r&&Object.defineProperty(target,key,r),r};import{html,nothing}from"lit";import{property}from"lit/decorators.js";import{LyraElement}from"../../../internal/lyra-element.js";import{getOwnDataDescriptor,MISSING_OWN_DATA_DESCRIPTOR,UNSAFE_OWN_DATA_DESCRIPTOR}from"../../../internal/data-descriptors.js";import{finiteCount,finiteRange}from"../../../internal/numbers.js";import{getNumberFormat}from"../../../internal/intl-cache.js";import{resolveHeadingLevel}from"../../../internal/heading-level.js";import"../../data/stat/stat.class.js";import"../citation-badge/citation-badge.class.js";import"../../overlays/empty/empty.class.js";import{styles}from"./grounding-summary.styles.js";import{trueDefaultBooleanConverter}from"../../../internal/converters.js";import"../claim-evidence/claim-evidence.class.js";import{retrievalSemanticLabel,retrievalSemanticRole}from"../retrieval-semantic-owner.js";import{LYRA_DEFAULT_citation,LYRA_DEFAULT_collapse,LYRA_DEFAULT_details,LYRA_DEFAULT_groundingSummaryCitationsLimit,LYRA_DEFAULT_groundingSummaryConfidenceLabel,LYRA_DEFAULT_groundingSummaryCoverageLabel,LYRA_DEFAULT_groundingSummaryEmpty,LYRA_DEFAULT_groundingSummaryEvidenceHeading,LYRA_DEFAULT_groundingSummaryEvidenceSpan,LYRA_DEFAULT_groundingSummaryLabel,LYRA_DEFAULT_groundingSummarySupportedLabel,LYRA_DEFAULT_groundingSummaryUnsupportedLabel,LYRA_DEFAULT_groundingSummaryWarningsHeading,LYRA_DEFAULT_map,LYRA_DEFAULT_navigation,LYRA_DEFAULT_open,LYRA_DEFAULT_popover,LYRA_DEFAULT_search,LYRA_DEFAULT_select}from"../../../internal/default-strings.generated.js";const MAX_PROJECTED_GROUNDING_ROWS=1e4,MAX_RENDERED_GROUNDING_CITATIONS=500,EMPTY_CANONICAL_CLAIMS=Object.freeze([]),EMPTY_CANONICAL_CITATIONS=Object.freeze([]),EMPTY_WARNINGS=Object.freeze([]);function descriptorValue(value,property2){return getOwnDataDescriptor(value,property2)}function valueOfDescriptor(descriptor){return descriptor===MISSING_OWN_DATA_DESCRIPTOR||descriptor===UNSAFE_OWN_DATA_DESCRIPTOR?void 0:descriptor.value}function hasUnsafeDescriptor(descriptors){return descriptors.some(descriptor=>descriptor===UNSAFE_OWN_DATA_DESCRIPTOR)}function nestedEventDetailValue(event,property2){const detail=event.detail;if(detail===null||typeof detail!="object")return;const descriptor=descriptorValue(detail,property2);return descriptor===MISSING_OWN_DATA_DESCRIPTOR||descriptor===UNSAFE_OWN_DATA_DESCRIPTOR?void 0:descriptor.value}function projectStringList(value){try{if(!Array.isArray(value))return;const lengthDescriptor=descriptorValue(value,"length");if(lengthDescriptor===MISSING_OWN_DATA_DESCRIPTOR||lengthDescriptor===UNSAFE_OWN_DATA_DESCRIPTOR||typeof lengthDescriptor.value!="number"||!Number.isSafeInteger(lengthDescriptor.value)||lengthDescriptor.value<0)return;const values=[],length=Math.min(lengthDescriptor.value,MAX_PROJECTED_GROUNDING_ROWS);for(let index=0;index<length;index+=1){const descriptor=descriptorValue(value,String(index));if(descriptor===UNSAFE_OWN_DATA_DESCRIPTOR)return;descriptor!==MISSING_OWN_DATA_DESCRIPTOR&&typeof descriptor.value=="string"&&values.push(descriptor.value)}return Object.freeze(values)}catch{return}}function projectRange(value){try{if(value===null||typeof value!="object"||Array.isArray(value))return;const startDescriptor=descriptorValue(value,"start"),endDescriptor=descriptorValue(value,"end");if(hasUnsafeDescriptor([startDescriptor,endDescriptor]))return;const start=valueOfDescriptor(startDescriptor),end=valueOfDescriptor(endDescriptor);return typeof start!="number"||typeof end!="number"?void 0:Object.freeze({start,end})}catch{return}}function projectClaim(value){try{if(value===null||typeof value!="object"||Array.isArray(value))return;const idDescriptor=descriptorValue(value,"id"),textDescriptor=descriptorValue(value,"text"),statusDescriptor=descriptorValue(value,"status"),citationIdsDescriptor=descriptorValue(value,"citationIds"),confidenceDescriptor=descriptorValue(value,"confidence"),explanationDescriptor=descriptorValue(value,"explanation");if(hasUnsafeDescriptor([idDescriptor,textDescriptor,statusDescriptor,citationIdsDescriptor,confidenceDescriptor,explanationDescriptor]))return;const id=valueOfDescriptor(idDescriptor),text=valueOfDescriptor(textDescriptor),citationIds=projectStringList(valueOfDescriptor(citationIdsDescriptor));if(typeof id!="string"||id.trim().length===0||typeof text!="string"||citationIds===void 0)return;const status=valueOfDescriptor(statusDescriptor),confidence=valueOfDescriptor(confidenceDescriptor),explanation=valueOfDescriptor(explanationDescriptor),input=Object.freeze({id,text,status:typeof status=="string"?status:"unsupported",citationIds,...typeof confidence=="number"&&Number.isFinite(confidence)?{confidence}:{},...typeof explanation=="string"?{explanation}:{}});return Object.freeze({source:value,input,id})}catch{return}}function projectCitation(value){try{if(value===null||typeof value!="object"||Array.isArray(value))return;const idDescriptor=descriptorValue(value,"id"),chunkIdDescriptor=descriptorValue(value,"chunkId"),sourceIdDescriptor=descriptorValue(value,"sourceId"),spanDescriptor=descriptorValue(value,"span"),labelDescriptor=descriptorValue(value,"label"),quoteDescriptor=descriptorValue(value,"quote");if(hasUnsafeDescriptor([idDescriptor,chunkIdDescriptor,sourceIdDescriptor,spanDescriptor,labelDescriptor,quoteDescriptor]))return;const id=valueOfDescriptor(idDescriptor);if(typeof id!="string"||id.trim().length===0)return;const chunkId=valueOfDescriptor(chunkIdDescriptor),sourceId=valueOfDescriptor(sourceIdDescriptor),spanValue=valueOfDescriptor(spanDescriptor),label=valueOfDescriptor(labelDescriptor),quote=valueOfDescriptor(quoteDescriptor),span=spanDescriptor===MISSING_OWN_DATA_DESCRIPTOR||spanValue===void 0?void 0:projectRange(spanValue);if(spanValue!==void 0&&span===void 0)return;const input=Object.freeze({id,...typeof chunkId=="string"?{chunkId}:{},...typeof sourceId=="string"?{sourceId}:{},...span===void 0?{}:{span},...typeof label=="string"?{label}:{},...typeof quote=="string"?{quote}:{}});return Object.freeze({source:value,input,id,...typeof sourceId=="string"?{sourceId}:{},...typeof label=="string"?{label}:{},...span===void 0?{}:{span}})}catch{return}}function projectRows(value,project,empty){try{if(!Array.isArray(value))return empty;const lengthDescriptor=descriptorValue(value,"length");if(lengthDescriptor===MISSING_OWN_DATA_DESCRIPTOR||lengthDescriptor===UNSAFE_OWN_DATA_DESCRIPTOR||typeof lengthDescriptor.value!="number"||!Number.isSafeInteger(lengthDescriptor.value)||lengthDescriptor.value<0)return empty;const rows=[],seen=new Set,length=Math.min(lengthDescriptor.value,MAX_PROJECTED_GROUNDING_ROWS);for(let index=0;index<length;index+=1){const descriptor=descriptorValue(value,String(index));if(descriptor===MISSING_OWN_DATA_DESCRIPTOR||descriptor===UNSAFE_OWN_DATA_DESCRIPTOR)continue;const row=project(descriptor.value);!row||seen.has(row.id)||(seen.add(row.id),rows.push(row))}return Object.freeze(rows)}catch{return empty}}function projectAssessment(value){try{if(value===null||typeof value!="object"||Array.isArray(value))return;const supportedClaimsDescriptor=descriptorValue(value,"supportedClaims"),unsupportedClaimsDescriptor=descriptorValue(value,"unsupportedClaims"),coverageDescriptor=descriptorValue(value,"coverage"),confidenceDescriptor=descriptorValue(value,"confidence"),warningsDescriptor=descriptorValue(value,"warnings"),claimsDescriptor=descriptorValue(value,"claims");if(hasUnsafeDescriptor([supportedClaimsDescriptor,unsupportedClaimsDescriptor,coverageDescriptor,confidenceDescriptor,warningsDescriptor,claimsDescriptor]))return;const supportedClaims=valueOfDescriptor(supportedClaimsDescriptor),unsupportedClaims=valueOfDescriptor(unsupportedClaimsDescriptor),coverage=valueOfDescriptor(coverageDescriptor),confidence=valueOfDescriptor(confidenceDescriptor),warningsValue=valueOfDescriptor(warningsDescriptor),claimsValue=valueOfDescriptor(claimsDescriptor),warnings=warningsDescriptor===MISSING_OWN_DATA_DESCRIPTOR||warningsValue===void 0?EMPTY_WARNINGS:projectStringList(warningsValue)??EMPTY_WARNINGS,claims=claimsDescriptor===MISSING_OWN_DATA_DESCRIPTOR||claimsValue===void 0?EMPTY_CANONICAL_CLAIMS:projectRows(claimsValue,projectClaim,EMPTY_CANONICAL_CLAIMS);return Object.freeze({supportedClaims:typeof supportedClaims=="number"?supportedClaims:0,unsupportedClaims:typeof unsupportedClaims=="number"?unsupportedClaims:0,coverage:typeof coverage=="number"?coverage:0,...typeof confidence=="number"?{confidence}:{},warnings,claims})}catch{return}}class LyraGroundingSummary extends LyraElement{constructor(){super(...arguments),this.assessment=null,this.citations=[],this.thresholds={high:.8,medium:.5},this.showClaims=!0,this.headingLevel="3",this.canonicalAssessmentBySource=new WeakMap,this.canonicalCitationsBySource=new WeakMap,this.renderEvidenceItem=(citation,index)=>{const numberFormat=getNumberFormat(this.effectiveLocale),spanText=citation.span?this.localize("groundingSummaryEvidenceSpan",void 0,{start:numberFormat.format(finiteCount(citation.span.start)),end:numberFormat.format(finiteCount(citation.span.end))}):"";return html`
2
2
  <li part="evidence-item">
3
3
  <lr-citation-badge
4
4
  index=${index+1}
@@ -11,7 +11,7 @@ var __decorate=function(decorators,target,key,desc){var c=arguments.length,r=c<3
11
11
  ${citation.label?html`<span part="evidence-label">${citation.label}</span>`:nothing}
12
12
  ${spanText?html`<span part="evidence-span">${spanText}</span>`:nothing}
13
13
  </li>
14
- `}}static{this.defaultStrings={...super.defaultStrings,citation:LYRA_DEFAULT_citation,collapse:LYRA_DEFAULT_collapse,details:LYRA_DEFAULT_details,groundingSummaryConfidenceLabel:LYRA_DEFAULT_groundingSummaryConfidenceLabel,groundingSummaryCoverageLabel:LYRA_DEFAULT_groundingSummaryCoverageLabel,groundingSummaryEmpty:LYRA_DEFAULT_groundingSummaryEmpty,groundingSummaryEvidenceHeading:LYRA_DEFAULT_groundingSummaryEvidenceHeading,groundingSummaryEvidenceSpan:LYRA_DEFAULT_groundingSummaryEvidenceSpan,groundingSummaryLabel:LYRA_DEFAULT_groundingSummaryLabel,groundingSummarySupportedLabel:LYRA_DEFAULT_groundingSummarySupportedLabel,groundingSummaryUnsupportedLabel:LYRA_DEFAULT_groundingSummaryUnsupportedLabel,groundingSummaryWarningsHeading:LYRA_DEFAULT_groundingSummaryWarningsHeading,map:LYRA_DEFAULT_map,navigation:LYRA_DEFAULT_navigation,open:LYRA_DEFAULT_open,popover:LYRA_DEFAULT_popover,search:LYRA_DEFAULT_search,select:LYRA_DEFAULT_select}}static{this.ownedCollectionProperties=Object.freeze(["assessment","citations"])}static{this.identityCollectionObjectProperties=Object.freeze(["assessment"])}static{this.identityCollectionProperties=Object.freeze(["citations"])}static{this.styles=[LyraElement.styles,styles]}static{this.immutableEventDetails=Object.freeze(["lr-citation-select","lr-claim-select"])}static{this.identityEventDetailProperties=Object.freeze({"lr-citation-select":Object.freeze(["citation"]),"lr-claim-select":Object.freeze(["claim"])})}get normalizedAssessment(){const source=this.assessment;if(source===null||typeof source!="object")return;const cached=this.canonicalAssessmentBySource.get(source);if(cached!==void 0)return cached??void 0;const assessment=projectAssessment(source);return this.canonicalAssessmentBySource.set(source,assessment??null),assessment}get normalizedCitations(){const source=this.citations;if(source===null||typeof source!="object")return EMPTY_CANONICAL_CITATIONS;const cached=this.canonicalCitationsBySource.get(source);if(cached)return cached;const citations=projectRows(source,projectCitation,EMPTY_CANONICAL_CITATIONS);return this.canonicalCitationsBySource.set(source,citations),citations}sectionHeading(part,text){switch(resolveHeadingLevel(this.headingLevel)){case"1":return html`<h1 part=${part}>${text}</h1>`;case"2":return html`<h2 part=${part}>${text}</h2>`;case"4":return html`<h4 part=${part}>${text}</h4>`;case"5":return html`<h5 part=${part}>${text}</h5>`;case"6":return html`<h6 part=${part}>${text}</h6>`;case"3":return html`<h3 part=${part}>${text}</h3>`;default:return html`<span part=${part}>${text}</span>`}}tone(value){return value>=this.thresholds.high?"success":value>=this.thresholds.medium?"warning":"danger"}formatPercent(value){return getNumberFormat(this.effectiveLocale,{style:"percent"}).format(finiteRange(value,0,0,1))}onCitationSelect(citation,event){event.stopPropagation(),this.emit("lr-citation-select",{citation:citation.source})}onNestedCitationSelect(citations,event){event.stopPropagation();const selected=nestedEventDetailValue(event,"citation"),citation=citations.find(candidate=>candidate.input===selected);citation&&this.emit("lr-citation-select",{citation:citation.source})}onNestedClaimSelect(claims,event){event.stopPropagation();const selected=nestedEventDetailValue(event,"claim"),claim=claims.find(candidate=>candidate.input===selected);claim&&this.emit("lr-claim-select",{claim:claim.source})}render(){const groupLabel=retrievalSemanticLabel(this,this.label==null?this.localize("groundingSummaryLabel"):this.label),groupRole=retrievalSemanticRole(this,"group"),a=this.normalizedAssessment;if(!a)return html`<div
14
+ `}}static{this.defaultStrings={...super.defaultStrings,citation:LYRA_DEFAULT_citation,collapse:LYRA_DEFAULT_collapse,details:LYRA_DEFAULT_details,groundingSummaryCitationsLimit:LYRA_DEFAULT_groundingSummaryCitationsLimit,groundingSummaryConfidenceLabel:LYRA_DEFAULT_groundingSummaryConfidenceLabel,groundingSummaryCoverageLabel:LYRA_DEFAULT_groundingSummaryCoverageLabel,groundingSummaryEmpty:LYRA_DEFAULT_groundingSummaryEmpty,groundingSummaryEvidenceHeading:LYRA_DEFAULT_groundingSummaryEvidenceHeading,groundingSummaryEvidenceSpan:LYRA_DEFAULT_groundingSummaryEvidenceSpan,groundingSummaryLabel:LYRA_DEFAULT_groundingSummaryLabel,groundingSummarySupportedLabel:LYRA_DEFAULT_groundingSummarySupportedLabel,groundingSummaryUnsupportedLabel:LYRA_DEFAULT_groundingSummaryUnsupportedLabel,groundingSummaryWarningsHeading:LYRA_DEFAULT_groundingSummaryWarningsHeading,map:LYRA_DEFAULT_map,navigation:LYRA_DEFAULT_navigation,open:LYRA_DEFAULT_open,popover:LYRA_DEFAULT_popover,search:LYRA_DEFAULT_search,select:LYRA_DEFAULT_select}}static{this.ownedCollectionProperties=Object.freeze(["assessment","citations"])}static{this.identityCollectionObjectProperties=Object.freeze(["assessment"])}static{this.identityCollectionProperties=Object.freeze(["citations"])}static{this.styles=[LyraElement.styles,styles]}static{this.immutableEventDetails=Object.freeze(["lr-citation-select","lr-claim-select"])}static{this.identityEventDetailProperties=Object.freeze({"lr-citation-select":Object.freeze(["citation"]),"lr-claim-select":Object.freeze(["claim"])})}get normalizedAssessment(){const source=this.assessment;if(source===null||typeof source!="object")return;const cached=this.canonicalAssessmentBySource.get(source);if(cached!==void 0)return cached??void 0;const assessment=projectAssessment(source);return this.canonicalAssessmentBySource.set(source,assessment??null),assessment}get normalizedCitations(){const source=this.citations;if(source===null||typeof source!="object")return EMPTY_CANONICAL_CITATIONS;const cached=this.canonicalCitationsBySource.get(source);if(cached)return cached;const citations=projectRows(source,projectCitation,EMPTY_CANONICAL_CITATIONS);return this.canonicalCitationsBySource.set(source,citations),citations}sectionHeading(part,text){switch(resolveHeadingLevel(this.headingLevel)){case"1":return html`<h1 part=${part}>${text}</h1>`;case"2":return html`<h2 part=${part}>${text}</h2>`;case"4":return html`<h4 part=${part}>${text}</h4>`;case"5":return html`<h5 part=${part}>${text}</h5>`;case"6":return html`<h6 part=${part}>${text}</h6>`;case"3":return html`<h3 part=${part}>${text}</h3>`;default:return html`<span part=${part}>${text}</span>`}}tone(value){return value>=this.thresholds.high?"success":value>=this.thresholds.medium?"warning":"danger"}formatPercent(value){return getNumberFormat(this.effectiveLocale,{style:"percent"}).format(finiteRange(value,0,0,1))}onCitationSelect(citation,event){event.stopPropagation(),this.emit("lr-citation-select",{citation:citation.source})}onNestedCitationSelect(citations,event){event.stopPropagation();const selected=nestedEventDetailValue(event,"citation"),citation=citations.find(candidate=>candidate.input===selected);citation&&this.emit("lr-citation-select",{citation:citation.source})}onNestedClaimSelect(claims,event){event.stopPropagation();const selected=nestedEventDetailValue(event,"claim"),claim=claims.find(candidate=>candidate.input===selected);claim&&this.emit("lr-claim-select",{claim:claim.source})}render(){const groupLabel=retrievalSemanticLabel(this,this.label==null?this.localize("groundingSummaryLabel"):this.label),groupRole=retrievalSemanticRole(this,"group"),a=this.normalizedAssessment;if(!a)return html`<div
15
15
  part="base"
16
16
  role=${groupRole??nothing}
17
17
  aria-label=${groupLabel??nothing}
@@ -75,8 +75,9 @@ var __decorate=function(decorators,target,key,desc){var c=arguments.length,r=c<3
75
75
  >${numberFormat.format(citations.length)}</span
76
76
  >
77
77
  <ul part="evidence-list" role="list">
78
- ${citations.map((citation,index)=>this.renderEvidenceItem(citation,index))}
78
+ ${citations.slice(0,MAX_RENDERED_GROUNDING_CITATIONS).map((citation,index)=>this.renderEvidenceItem(citation,index))}
79
79
  </ul>
80
+ ${citations.length>MAX_RENDERED_GROUNDING_CITATIONS?html`<p part="limit" role="note">${this.localize("groundingSummaryCitationsLimit",void 0,{count:numberFormat.format(MAX_RENDERED_GROUNDING_CITATIONS)})}</p>`:nothing}
80
81
  </div>
81
82
  `:nothing}
82
83
  </div>
@@ -1 +1 @@
1
- import{css}from"lit";const styles=css`:host{inline-size:100%;min-inline-size:0;display:block}[part=base]{gap:var(--lr-space-m);flex-direction:column;display:flex}[part=stats]{gap:var(--lr-space-m);flex-wrap:wrap;display:flex}[part=stats]>lr-stat{flex:1 1 var(--lr-size-10rem);min-inline-size:0}[part=warnings]{gap:var(--lr-space-xs);padding:var(--lr-space-s) var(--lr-space-m);border-inline-start:var(--lr-border-width-thick) solid var(--lr-color-warning);border-radius:var(--lr-radius);background:var(--lr-color-warning-quiet);flex-direction:column;display:flex}[part=warnings-heading]{font-weight:var(--lr-font-weight-semibold);color:var(--lr-color-text);margin:0}[part=warnings-count]{color:var(--lr-color-text-quiet);font-weight:var(--lr-font-weight-medium);margin-inline-start:var(--lr-space-xs)}[part=warnings-list]{gap:var(--lr-space-xs);flex-direction:column;margin:0;padding-inline-start:var(--lr-space-l);display:flex}[part=warning]{font-size:var(--lr-font-size-sm);color:var(--lr-color-text)}[part=evidence]{gap:var(--lr-space-s);flex-direction:column;display:flex}[part=evidence-heading]{font-size:var(--lr-font-size-xs);font-weight:var(--lr-font-weight-semibold);text-transform:uppercase;letter-spacing:var(--lr-size-0-04em);color:var(--lr-color-text-quiet);margin:0}[part=evidence-count]{font-size:var(--lr-font-size-xs);color:var(--lr-color-text-quiet);margin-inline-start:var(--lr-space-xs)}[part=evidence-list]{margin:0;padding:0;list-style:none;display:block}[part=evidence-item]{align-items:baseline;gap:var(--lr-space-xs);padding-block:var(--lr-space-xs);flex-wrap:wrap;display:flex}[part=evidence-item]+[part=evidence-item]{border-block-start:var(--lr-border-width-thin) solid var(--lr-color-border)}[part=evidence-label]{font-size:var(--lr-font-size-sm);color:var(--lr-color-text)}[part=evidence-span]{font-size:var(--lr-font-size-sm);font-family:var(--lr-font-mono);color:var(--lr-color-text-quiet)}`;export{styles};
1
+ import{css}from"lit";const styles=css`:host{inline-size:100%;min-inline-size:0;display:block}[part=base]{gap:var(--lr-space-m);flex-direction:column;display:flex}[part=stats]{gap:var(--lr-space-m);flex-wrap:wrap;display:flex}[part=stats]>lr-stat{flex:1 1 var(--lr-size-10rem);min-inline-size:0}[part=warnings]{gap:var(--lr-space-xs);padding:var(--lr-space-s) var(--lr-space-m);border-inline-start:var(--lr-border-width-thick) solid var(--lr-color-warning);border-radius:var(--lr-radius);background:var(--lr-color-warning-quiet);flex-direction:column;display:flex}[part=warnings-heading]{font-weight:var(--lr-font-weight-semibold);color:var(--lr-color-text);margin:0}[part=warnings-count]{color:var(--lr-color-text-quiet);font-weight:var(--lr-font-weight-medium);margin-inline-start:var(--lr-space-xs)}[part=warnings-list]{gap:var(--lr-space-xs);flex-direction:column;margin:0;padding-inline-start:var(--lr-space-l);display:flex}[part=warning]{font-size:var(--lr-font-size-sm);color:var(--lr-color-text)}[part=evidence]{gap:var(--lr-space-s);flex-direction:column;display:flex}[part=evidence-heading]{font-size:var(--lr-font-size-xs);font-weight:var(--lr-font-weight-semibold);text-transform:uppercase;letter-spacing:var(--lr-size-0-04em);color:var(--lr-color-text-quiet);margin:0}[part=evidence-count]{font-size:var(--lr-font-size-xs);color:var(--lr-color-text-quiet);margin-inline-start:var(--lr-space-xs)}[part=evidence-list]{margin:0;padding:0;list-style:none;display:block}[part=evidence-item]{align-items:baseline;gap:var(--lr-space-xs);padding-block:var(--lr-space-xs);flex-wrap:wrap;display:flex}[part=evidence-item]+[part=evidence-item]{border-block-start:var(--lr-border-width-thin) solid var(--lr-color-border)}[part=evidence-label]{font-size:var(--lr-font-size-sm);color:var(--lr-color-text)}[part=evidence-span]{font-size:var(--lr-font-size-sm);font-family:var(--lr-font-mono);color:var(--lr-color-text-quiet)}[part=limit]{margin:var(--lr-space-s);color:var(--lr-color-text-quiet);font-size:var(--lr-font-size-xs)}`;export{styles};
@@ -59,6 +59,10 @@ provenance?:LyraProvenance;}type MemoryScope='short-term'|'long-term';export int
59
59
  * rendering, counts, focus recovery, confirmation state, or actions. The first item for an id
60
60
  * wins in that scope.
61
61
  *
62
+ * At most 500 items per section render as `[part="item"]` rows; a section's list past that length
63
+ * renders a localized `[part="limit"]` notice after that section's list rather than mounting an
64
+ * unbounded number of rows.
65
+ *
62
66
  * @customElement lr-memory-panel
63
67
  * @event lr-add - A pending "add to long-term memory" action was approved. `detail: { memory }` --
64
68
  * the short-term item as-is; the host decides how/whether to persist it.
@@ -73,6 +77,8 @@ provenance?:LyraProvenance;}type MemoryScope='short-term'|'long-term';export int
73
77
  * @csspart heading - A section's visible heading text.
74
78
  * @csspart section-empty - A section's "no items" text, shown when that section's own list is empty.
75
79
  * @csspart list - A section's `role="list"` wrapper, omitted while that section is empty.
80
+ * @csspart limit - Localized notice shown when a section's items exceed the 500-item render
81
+ * ceiling.
76
82
  * @csspart item - One memory item row (`role="listitem"`); carries `data-id`/`data-scope` and a
77
83
  * stable `tabindex="-1"` so focus has somewhere to land after a pending confirmation on this row
78
84
  * resolves.