@aceshooting/lyra-ui 29.0.2 → 29.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (521) hide show
  1. package/CHANGELOG.md +37 -0
  2. package/README.md +19 -26
  3. package/design-tokens.json +1 -1
  4. package/dist/cli/migrate-wa.mjs +2 -0
  5. package/dist/components/agent-tools/activity-feed/activity-feed.class.d.ts +5 -3
  6. package/dist/components/agent-tools/activity-feed/activity-feed.class.js +4 -3
  7. package/dist/components/agent-tools/activity-feed/activity-feed.styles.js +1 -1
  8. package/dist/components/agent-tools/agent-trace/agent-trace.class.d.ts +21 -5
  9. package/dist/components/agent-tools/agent-trace/agent-trace.class.js +14 -11
  10. package/dist/components/agent-tools/agent-trace/agent-trace.styles.js +1 -1
  11. package/dist/components/agent-tools/confirm-bar/confirm-bar.class.js +2 -2
  12. package/dist/components/agent-tools/eval-dataset/eval-dataset.class.d.ts +34 -7
  13. package/dist/components/agent-tools/eval-dataset/eval-dataset.class.js +25 -11
  14. package/dist/components/agent-tools/eval-result/eval-result-source.js +1 -0
  15. package/dist/components/agent-tools/eval-result/eval-result.class.d.ts +31 -11
  16. package/dist/components/agent-tools/eval-result/eval-result.class.js +29 -15
  17. package/dist/components/agent-tools/eval-result/eval-result.styles.js +1 -1
  18. package/dist/components/agent-tools/eval-result/eval-run-result.d.ts +10 -0
  19. package/dist/components/agent-tools/span-waterfall/span-waterfall.class.d.ts +26 -5
  20. package/dist/components/agent-tools/span-waterfall/span-waterfall.class.js +16 -6
  21. package/dist/components/agent-tools/span-waterfall/span-waterfall.d.ts +1 -1
  22. package/dist/components/agent-tools/span-waterfall/span-waterfall.js +1 -1
  23. package/dist/components/agent-tools/span-waterfall/span-waterfall.styles.js +1 -1
  24. package/dist/components/agent-tools/task-list/task-list.class.d.ts +29 -6
  25. package/dist/components/agent-tools/task-list/task-list.class.js +13 -7
  26. package/dist/components/agent-tools/task-list/task-list.d.ts +1 -1
  27. package/dist/components/agent-tools/task-list/task-list.js +1 -1
  28. package/dist/components/agent-tools/task-list/task-list.styles.js +1 -1
  29. package/dist/components/agent-tools/terminal/terminal.class.d.ts +9 -5
  30. package/dist/components/agent-tools/terminal/terminal.class.js +8 -8
  31. package/dist/components/agent-tools/test-results/test-results.class.d.ts +16 -4
  32. package/dist/components/agent-tools/test-results/test-results.class.js +15 -6
  33. package/dist/components/agent-tools/test-results/test-results.d.ts +1 -0
  34. package/dist/components/agent-tools/test-results/test-results.js +1 -1
  35. package/dist/components/agent-tools/test-results/test-results.styles.js +1 -1
  36. package/dist/components/agent-tools/tool-timeline/tool-timeline.class.d.ts +7 -4
  37. package/dist/components/agent-tools/tool-timeline/tool-timeline.class.js +2 -1
  38. package/dist/components/agent-tools/trace-tree/span-projection.js +1 -0
  39. package/dist/components/agent-tools/trace-tree/span-shared.d.ts +29 -0
  40. package/dist/components/agent-tools/trace-tree/span-shared.js +1 -0
  41. package/dist/components/agent-tools/trace-tree/span.d.ts +5 -35
  42. package/dist/components/agent-tools/trace-tree/span.js +1 -1
  43. package/dist/components/agent-tools/trace-tree/trace-tree.class.d.ts +27 -5
  44. package/dist/components/agent-tools/trace-tree/trace-tree.class.js +19 -9
  45. package/dist/components/agent-tools/trace-tree/trace-tree.d.ts +1 -1
  46. package/dist/components/agent-tools/trace-tree/trace-tree.js +1 -1
  47. package/dist/components/agent-tools/trace-tree/trace-tree.styles.js +1 -1
  48. package/dist/components/charts/chart/bar-chart.class.d.ts +5 -1
  49. package/dist/components/charts/chart/box-plot.class.d.ts +2 -2
  50. package/dist/components/charts/chart/box-plot.class.js +3 -3
  51. package/dist/components/charts/chart/bubble-chart.class.d.ts +5 -1
  52. package/dist/components/charts/chart/chart-prepared-data.d.ts +9 -0
  53. package/dist/components/charts/chart/chart-prepared-data.js +1 -0
  54. package/dist/components/charts/chart/chart-spatial-data.js +2 -0
  55. package/dist/components/charts/chart/chart-sync.js +1 -1
  56. package/dist/components/charts/chart/chart-table-sampling.js +1 -1
  57. package/dist/components/charts/chart/chart.class.d.ts +56 -6
  58. package/dist/components/charts/chart/chart.class.js +18 -8
  59. package/dist/components/charts/chart/chart.styles.js +1 -1
  60. package/dist/components/charts/chart/doughnut-chart.class.d.ts +5 -1
  61. package/dist/components/charts/chart/histogram-buckets.d.ts +1 -1
  62. package/dist/components/charts/chart/histogram-buckets.js +1 -1
  63. package/dist/components/charts/chart/histogram.class.d.ts +19 -4
  64. package/dist/components/charts/chart/histogram.class.js +1 -1
  65. package/dist/components/charts/chart/line-chart.class.d.ts +5 -1
  66. package/dist/components/charts/chart/lite-chart.class.d.ts +51 -11
  67. package/dist/components/charts/chart/lite-chart.class.js +33 -27
  68. package/dist/components/charts/chart/lite-chart.styles.js +1 -1
  69. package/dist/components/charts/chart/pie-chart.class.d.ts +5 -1
  70. package/dist/components/charts/chart/polar-area-chart.class.d.ts +5 -1
  71. package/dist/components/charts/chart/radar-chart.class.d.ts +5 -1
  72. package/dist/components/charts/chart/scatter-chart.class.d.ts +5 -1
  73. package/dist/components/conversation/agent-workspace/agent-workspace.class.d.ts +6 -3
  74. package/dist/components/conversation/agent-workspace/agent-workspace.class.js +6 -5
  75. package/dist/components/conversation/agent-workspace/agent-workspace.styles.js +1 -1
  76. package/dist/components/conversation/chat-viewport/chat-viewport.class.d.ts +8 -0
  77. package/dist/components/conversation/chat-viewport/chat-viewport.class.js +1 -1
  78. package/dist/components/conversation/code-block/code-block-base.class.d.ts +5 -3
  79. package/dist/components/conversation/code-block/code-block-base.class.js +1 -1
  80. package/dist/components/conversation/code-block/code-block-core.class.d.ts +4 -1
  81. package/dist/components/conversation/code-block/code-block-core.class.js +1 -1
  82. package/dist/components/conversation/code-block/code-block-shared.d.ts +6 -4
  83. package/dist/components/conversation/code-block/code-block-shared.js +3 -2
  84. package/dist/components/conversation/code-block/code-block.class.d.ts +11 -4
  85. package/dist/components/conversation/code-block/code-block.class.js +1 -1
  86. package/dist/components/conversation/code-block/code-block.d.ts +1 -1
  87. package/dist/components/conversation/code-block/code-block.styles.js +1 -1
  88. package/dist/components/conversation/code-block/shiki-types.d.ts +2 -0
  89. package/dist/components/conversation/code-block/shiki-types.js +1 -1
  90. package/dist/components/conversation/markdown/markdown-base.class.d.ts +6 -4
  91. package/dist/components/conversation/markdown/markdown-base.class.js +1 -1
  92. package/dist/components/conversation/markdown/markdown-code-header.d.ts +2 -2
  93. package/dist/components/conversation/markdown/markdown-code-header.js +1 -1
  94. package/dist/components/conversation/markdown/markdown-core.class.d.ts +8 -3
  95. package/dist/components/conversation/markdown/markdown-progressive.js +2 -2
  96. package/dist/components/conversation/markdown/markdown-shared.d.ts +5 -10
  97. package/dist/components/conversation/markdown/markdown-shared.js +5 -5
  98. package/dist/components/conversation/markdown/markdown-streaming-tail.js +1 -1
  99. package/dist/components/conversation/markdown/markdown.class.d.ts +17 -10
  100. package/dist/components/conversation/markdown/markdown.class.js +1 -1
  101. package/dist/components/conversation/markdown/markdown.styles.js +1 -1
  102. package/dist/components/conversation/model-select/model-select.class.d.ts +4 -3
  103. package/dist/components/conversation/model-select/model-select.class.js +3 -2
  104. package/dist/components/conversation/model-select/model-select.styles.js +1 -1
  105. package/dist/components/conversation/model-settings-panel/model-settings-panel.class.d.ts +2 -1
  106. package/dist/components/conversation/model-settings-panel/model-settings-panel.class.js +2 -1
  107. package/dist/components/conversation/model-settings-panel/model-settings-panel.styles.js +1 -1
  108. package/dist/components/conversation/prompt-input/prompt-input.class.d.ts +3 -2
  109. package/dist/components/conversation/prompt-input/prompt-input.class.js +2 -1
  110. package/dist/components/conversation/prompt-input/prompt-input.styles.js +1 -1
  111. package/dist/components/conversation/prompt-queue/prompt-queue.class.d.ts +10 -2
  112. package/dist/components/conversation/prompt-queue/prompt-queue.class.js +15 -6
  113. package/dist/components/conversation/prompt-queue/prompt-queue.styles.js +1 -1
  114. package/dist/components/conversation/realtime-session/realtime-session.class.d.ts +3 -1
  115. package/dist/components/conversation/realtime-session/realtime-session.class.js +2 -1
  116. package/dist/components/conversation/realtime-session/realtime-session.styles.js +1 -1
  117. package/dist/components/conversation/streaming-text/markdown-detection.d.ts +2 -0
  118. package/dist/components/conversation/streaming-text/markdown-detection.js +4 -1
  119. package/dist/components/conversation/streaming-text/streaming-text-base.class.d.ts +6 -2
  120. package/dist/components/conversation/streaming-text/streaming-text-base.class.js +3 -3
  121. package/dist/components/conversation/streaming-text/streaming-text-core.class.js +1 -1
  122. package/dist/components/conversation/streaming-text/streaming-text.class.js +1 -0
  123. package/dist/components/conversation/thread-list/thread-list.class.d.ts +34 -4
  124. package/dist/components/conversation/thread-list/thread-list.class.js +22 -15
  125. package/dist/components/conversation/thread-list/thread-list.d.ts +1 -1
  126. package/dist/components/conversation/thread-list/thread-list.js +1 -1
  127. package/dist/components/conversation/thread-list/thread-list.styles.js +1 -1
  128. package/dist/components/conversation/transcript-feed/transcript-feed.class.d.ts +6 -2
  129. package/dist/components/conversation/transcript-feed/transcript-feed.class.js +3 -2
  130. package/dist/components/conversation/transcript-feed/transcript-feed.styles.js +1 -1
  131. package/dist/components/conversation/voice-picker/voice-picker.class.d.ts +3 -2
  132. package/dist/components/conversation/voice-picker/voice-picker.class.js +3 -2
  133. package/dist/components/conversation/voice-picker/voice-picker.styles.js +1 -1
  134. package/dist/components/data/calendar/calendar.class.d.ts +5 -2
  135. package/dist/components/data/calendar/calendar.class.js +1 -1
  136. package/dist/components/data/data-grid/data-grid-processing.js +2 -2
  137. package/dist/components/data/data-grid/data-grid.class.d.ts +22 -8
  138. package/dist/components/data/data-grid/data-grid.class.js +20 -19
  139. package/dist/components/data/data-grid/data-grid.styles.js +1 -1
  140. package/dist/components/data/document-library/document-library.class.d.ts +31 -4
  141. package/dist/components/data/document-library/document-library.class.js +25 -12
  142. package/dist/components/data/document-library/document-library.styles.js +1 -1
  143. package/dist/components/data/file-tree/file-tree.class.d.ts +30 -6
  144. package/dist/components/data/file-tree/file-tree.class.js +4 -3
  145. package/dist/components/data/file-tree/file-tree.d.ts +1 -0
  146. package/dist/components/data/file-tree/file-tree.js +1 -1
  147. package/dist/components/data/flow-canvas/flow-canvas.class.d.ts +31 -6
  148. package/dist/components/data/flow-canvas/flow-canvas.class.js +40 -19
  149. package/dist/components/data/flow-canvas/flow-canvas.styles.js +1 -1
  150. package/dist/components/data/flow-canvas/flow-model.js +1 -1
  151. package/dist/components/data/flow-canvas/flow-source.js +1 -0
  152. package/dist/components/data/flow-canvas/flow-types.d.ts +4 -2
  153. package/dist/components/data/flow-canvas/flow-viewport-index.js +1 -0
  154. package/dist/components/data/flow-minimap/flow-minimap.class.d.ts +9 -3
  155. package/dist/components/data/flow-minimap/flow-minimap.class.js +11 -2
  156. package/dist/components/data/flow-minimap/flow-minimap.styles.js +1 -1
  157. package/dist/components/data/funnel/funnel.class.d.ts +7 -3
  158. package/dist/components/data/funnel/funnel.class.js +2 -2
  159. package/dist/components/data/heatmap/calendar-grid.d.ts +1 -1
  160. package/dist/components/data/heatmap/calendar-grid.js +1 -1
  161. package/dist/components/data/heatmap/heatmap-grid-navigation.js +1 -1
  162. package/dist/components/data/heatmap/heatmap-limits.d.ts +1 -1
  163. package/dist/components/data/heatmap/heatmap-matrix-source-controller.js +1 -0
  164. package/dist/components/data/heatmap/heatmap-matrix-source.d.ts +5 -0
  165. package/dist/components/data/heatmap/heatmap-matrix-source.js +1 -0
  166. package/dist/components/data/heatmap/heatmap-scale.d.ts +0 -16
  167. package/dist/components/data/heatmap/heatmap-scale.js +1 -1
  168. package/dist/components/data/heatmap/heatmap.class.d.ts +40 -11
  169. package/dist/components/data/heatmap/heatmap.class.js +26 -6
  170. package/dist/components/data/heatmap/heatmap.styles.js +1 -1
  171. package/dist/components/data/pagination/pagination.class.js +1 -1
  172. package/dist/components/data/sequence-strip/sequence-strip-item.d.ts +17 -0
  173. package/dist/components/data/sequence-strip/sequence-strip-source-controller.js +1 -0
  174. package/dist/components/data/sequence-strip/sequence-strip-source.d.ts +5 -0
  175. package/dist/components/data/sequence-strip/sequence-strip-source.js +1 -0
  176. package/dist/components/data/sequence-strip/sequence-strip.class.d.ts +24 -19
  177. package/dist/components/data/sequence-strip/sequence-strip.class.js +23 -4
  178. package/dist/components/data/sequence-strip/sequence-strip.styles.js +1 -1
  179. package/dist/components/data/sparkline/sparkline.class.d.ts +17 -4
  180. package/dist/components/data/sparkline/sparkline.class.js +3 -3
  181. package/dist/components/data/sparkline/sparkline.styles.js +1 -1
  182. package/dist/components/data/table/table.class.d.ts +14 -10
  183. package/dist/components/data/table/table.class.js +17 -16
  184. package/dist/components/data/timeline/timeline.class.d.ts +5 -2
  185. package/dist/components/data/timeline/timeline.class.js +1 -1
  186. package/dist/components/data/tree/tree-item.class.js +1 -1
  187. package/dist/components/data/tree/tree-owner-controller.js +1 -1
  188. package/dist/components/data/tree/tree.class.d.ts +28 -6
  189. package/dist/components/data/tree/tree.class.js +3 -3
  190. package/dist/components/data/tree/tree.d.ts +1 -0
  191. package/dist/components/data/tree/tree.js +1 -1
  192. package/dist/components/data/word-cloud/word-cloud.class.d.ts +17 -7
  193. package/dist/components/data/word-cloud/word-cloud.class.js +6 -4
  194. package/dist/components/data/word-cloud/word-cloud.styles.js +1 -1
  195. package/dist/components/forms/catalog-picker-base.d.ts +1 -1
  196. package/dist/components/forms/catalog-picker-base.js +6 -6
  197. package/dist/components/forms/catalog-picker-base.styles.js +1 -1
  198. package/dist/components/forms/combobox/combobox.class.d.ts +7 -3
  199. package/dist/components/forms/combobox/combobox.class.js +1 -1
  200. package/dist/components/forms/combobox/option.class.d.ts +4 -2
  201. package/dist/components/forms/combobox/option.class.js +2 -2
  202. package/dist/components/forms/country-picker/country-picker.class.d.ts +3 -1
  203. package/dist/components/forms/country-picker/country-picker.class.js +1 -1
  204. package/dist/components/forms/currency-picker/currency-picker.class.d.ts +2 -0
  205. package/dist/components/forms/currency-picker/currency-picker.class.js +1 -1
  206. package/dist/components/forms/currency-picker/currency-presentation.js +1 -1
  207. package/dist/components/forms/emoji-picker/emoji-picker.class.d.ts +6 -2
  208. package/dist/components/forms/emoji-picker/emoji-picker.class.js +3 -2
  209. package/dist/components/forms/emoji-picker/emoji-picker.styles.js +1 -1
  210. package/dist/components/forms/locale-picker/locale-picker.class.d.ts +8 -2
  211. package/dist/components/forms/locale-picker/locale-picker.class.js +5 -4
  212. package/dist/components/forms/locale-picker/locale-picker.styles.js +1 -1
  213. package/dist/components/forms/select/select.class.d.ts +11 -3
  214. package/dist/components/forms/select/select.class.js +4 -4
  215. package/dist/components/forms/time-zone-picker/time-zone-picker.class.d.ts +2 -0
  216. package/dist/components/forms/time-zone-picker/time-zone-picker.class.js +1 -1
  217. package/dist/components/forms/token-input/token-input.class.d.ts +6 -1
  218. package/dist/components/forms/token-input/token-input.class.js +15 -13
  219. package/dist/components/forms/unit-picker/unit-picker.class.d.ts +2 -0
  220. package/dist/components/forms/unit-picker/unit-picker.class.js +1 -1
  221. package/dist/components/layout/app-rail/app-rail.class.d.ts +1 -1
  222. package/dist/components/layout/app-rail/app-rail.class.js +1 -1
  223. package/dist/components/layout/command-palette/command-palette.class.d.ts +5 -2
  224. package/dist/components/layout/command-palette/command-palette.class.js +2 -1
  225. package/dist/components/layout/command-palette/command-palette.styles.js +1 -1
  226. package/dist/components/layout/menu/menu-item.class.d.ts +2 -2
  227. package/dist/components/layout/menu/menu-item.class.js +2 -2
  228. package/dist/components/layout/menu/menu.class.d.ts +1 -1
  229. package/dist/components/layout/menu/menu.class.js +1 -1
  230. package/dist/components/layout/menubar/menubar.class.d.ts +1 -1
  231. package/dist/components/layout/menubar/menubar.class.js +1 -1
  232. package/dist/components/layout/reorder-list/reorder-item.class.d.ts +2 -2
  233. package/dist/components/layout/reorder-list/reorder-item.class.js +2 -2
  234. package/dist/components/layout/reorder-list/reorder-list.class.d.ts +1 -1
  235. package/dist/components/layout/reorder-list/reorder-list.class.js +1 -1
  236. package/dist/components/layout/virtual-list/virtual-list.class.d.ts +13 -9
  237. package/dist/components/layout/virtual-list/virtual-list.class.js +21 -17
  238. package/dist/components/media/av-player/av-cue-index.js +1 -0
  239. package/dist/components/media/av-player/av-cue-source.d.ts +13 -0
  240. package/dist/components/media/av-player/av-cue-source.js +1 -0
  241. package/dist/components/media/av-player/av-metadata.d.ts +2 -2
  242. package/dist/components/media/av-player/av-metadata.js +1 -1
  243. package/dist/components/media/av-player/av-player-cue-source-controller.js +1 -0
  244. package/dist/components/media/av-player/av-player.class.d.ts +34 -12
  245. package/dist/components/media/av-player/av-player.class.js +15 -10
  246. package/dist/components/media/flag/flag.class.js +1 -1
  247. package/dist/components/media/flag/language-map.js +1 -1
  248. package/dist/components/media/lightbox/lightbox-source.js +1 -0
  249. package/dist/components/media/lightbox/lightbox-types.d.ts +15 -0
  250. package/dist/components/media/lightbox/lightbox.class.d.ts +22 -21
  251. package/dist/components/media/lightbox/lightbox.class.js +6 -4
  252. package/dist/components/media/lightbox/lightbox.styles.js +1 -1
  253. package/dist/components/media/map/map-geojson-diff.d.ts +6 -6
  254. package/dist/components/media/map/map-geojson-diff.js +1 -1
  255. package/dist/components/media/map/map-loader.d.ts +5 -1
  256. package/dist/components/media/map/map.class.d.ts +24 -6
  257. package/dist/components/media/map/map.class.js +2 -2
  258. package/dist/components/media/map/map.styles.js +1 -1
  259. package/dist/components/media/video-playlist/video-playlist.class.d.ts +2 -1
  260. package/dist/components/media/video-playlist/video-playlist.class.js +1 -1
  261. package/dist/components/overlays/chip/chip.class.d.ts +1 -1
  262. package/dist/components/overlays/chip/chip.class.js +1 -1
  263. package/dist/components/retrieval/embedding-explorer/embedding-explorer.class.d.ts +30 -8
  264. package/dist/components/retrieval/embedding-explorer/embedding-explorer.class.js +22 -8
  265. package/dist/components/retrieval/embedding-explorer/embedding-explorer.styles.js +1 -1
  266. package/dist/components/retrieval/graph/graph-canvas.js +1 -1
  267. package/dist/components/retrieval/graph/graph-source-composition.js +1 -0
  268. package/dist/components/retrieval/graph/graph-source-controller.js +1 -0
  269. package/dist/components/retrieval/graph/graph-spatial-controller.js +2 -2
  270. package/dist/components/retrieval/graph/graph-spatial-model.js +1 -0
  271. package/dist/components/retrieval/graph/graph-spatial.js +1 -1
  272. package/dist/components/retrieval/graph/graph.class.d.ts +31 -6
  273. package/dist/components/retrieval/graph/graph.class.js +26 -5
  274. package/dist/components/retrieval/graph/graph.d.ts +1 -1
  275. package/dist/components/retrieval/graph/graph.js +1 -1
  276. package/dist/components/retrieval/graph/graph.styles.js +1 -1
  277. package/dist/components/retrieval/ingestion-queue/ingestion-queue.class.d.ts +33 -4
  278. package/dist/components/retrieval/ingestion-queue/ingestion-queue.class.js +27 -17
  279. package/dist/components/retrieval/ingestion-queue/ingestion-queue.d.ts +1 -1
  280. package/dist/components/retrieval/ingestion-queue/ingestion-queue.js +1 -1
  281. package/dist/components/retrieval/ingestion-queue/ingestion-queue.styles.js +1 -1
  282. package/dist/components/retrieval/knowledge-base/knowledge-base.class.d.ts +27 -4
  283. package/dist/components/retrieval/knowledge-base/knowledge-base.class.js +29 -14
  284. package/dist/components/retrieval/knowledge-base/knowledge-base.styles.js +1 -1
  285. package/dist/components/retrieval/knowledge-base-admin/knowledge-base-admin.class.d.ts +17 -3
  286. package/dist/components/retrieval/knowledge-base-admin/knowledge-base-admin.class.js +15 -10
  287. package/dist/components/retrieval/knowledge-base-admin/knowledge-base-admin.styles.js +1 -1
  288. package/dist/components/retrieval/knowledge-graph-explorer/knowledge-graph-explorer.class.d.ts +24 -5
  289. package/dist/components/retrieval/knowledge-graph-explorer/knowledge-graph-explorer.class.js +17 -10
  290. package/dist/components/retrieval/knowledge-graph-explorer/knowledge-graph-explorer.d.ts +1 -1
  291. package/dist/components/retrieval/knowledge-graph-explorer/knowledge-graph-explorer.js +1 -1
  292. package/dist/components/retrieval/knowledge-graph-explorer/knowledge-graph-explorer.styles.js +1 -1
  293. package/dist/components/retrieval/mind-map/mind-map-layout.js +1 -1
  294. package/dist/components/retrieval/mind-map/mind-map-model.js +1 -0
  295. package/dist/components/retrieval/mind-map/mind-map.class.d.ts +27 -4
  296. package/dist/components/retrieval/mind-map/mind-map.class.js +11 -7
  297. package/dist/components/retrieval/mind-map/mind-map.d.ts +1 -0
  298. package/dist/components/retrieval/mind-map/mind-map.js +1 -1
  299. package/dist/components/retrieval/mind-map/mind-map.styles.js +1 -1
  300. package/dist/components/retrieval/neighbor-list/neighbor-list.class.d.ts +24 -2
  301. package/dist/components/retrieval/neighbor-list/neighbor-list.class.js +17 -3
  302. package/dist/components/retrieval/neighbor-list/neighbor-list.d.ts +1 -1
  303. package/dist/components/retrieval/neighbor-list/neighbor-list.js +1 -1
  304. package/dist/components/retrieval/neighbor-list/neighbor-list.styles.js +1 -1
  305. package/dist/components/retrieval/rag-eval-dashboard/rag-eval-dashboard.class.d.ts +8 -4
  306. package/dist/components/retrieval/rag-eval-dashboard/rag-eval-dashboard.class.js +11 -7
  307. package/dist/components/retrieval/rag-eval-dashboard/rag-eval-dashboard.styles.js +1 -1
  308. package/dist/components/retrieval/retrieval-compare/retrieval-compare.class.d.ts +12 -6
  309. package/dist/components/retrieval/retrieval-compare/retrieval-compare.class.js +30 -17
  310. package/dist/components/retrieval/retrieval-compare/retrieval-compare.styles.js +1 -1
  311. package/dist/components/retrieval/retrieval-results/retrieval-results-model.js +1 -0
  312. package/dist/components/retrieval/retrieval-results/retrieval-results.class.d.ts +46 -5
  313. package/dist/components/retrieval/retrieval-results/retrieval-results.class.js +31 -9
  314. package/dist/components/retrieval/retrieval-results/retrieval-results.d.ts +1 -1
  315. package/dist/components/retrieval/retrieval-results/retrieval-results.js +1 -1
  316. package/dist/components/retrieval/retrieval-results/retrieval-results.styles.js +1 -1
  317. package/dist/components/utility/diff-view/diff-view.class.d.ts +16 -8
  318. package/dist/components/utility/diff-view/diff-view.class.js +3 -2
  319. package/dist/components/utility/diff-view/diff-view.styles.js +1 -1
  320. package/dist/components/utility/json-viewer/json-viewer.class.d.ts +31 -3
  321. package/dist/components/utility/json-viewer/json-viewer.class.js +13 -4
  322. package/dist/components/utility/json-viewer/json-viewer.d.ts +1 -0
  323. package/dist/components/utility/json-viewer/json-viewer.js +1 -1
  324. package/dist/components/utility/json-viewer/json-viewer.styles.js +1 -1
  325. package/dist/components/utility/mention-popover/mention-popover.class.d.ts +6 -4
  326. package/dist/components/utility/mention-popover/mention-popover.class.js +6 -5
  327. package/dist/components/viewers/csv-viewer/csv-viewer.class.d.ts +34 -7
  328. package/dist/components/viewers/csv-viewer/csv-viewer.class.js +9 -7
  329. package/dist/components/viewers/dataset-viewer/dataset-viewer.class.d.ts +28 -4
  330. package/dist/components/viewers/dataset-viewer/dataset-viewer.class.js +12 -11
  331. package/dist/components/viewers/geojson-view/geojson-viewer.class.d.ts +3 -1
  332. package/dist/components/viewers/geojson-view/geojson-viewer.class.js +17 -16
  333. package/dist/components/viewers/geojson-view/geojson-viewer.d.ts +1 -1
  334. package/dist/components/viewers/geojson-view/geojson-viewer.js +1 -1
  335. package/dist/components/viewers/spreadsheet-viewer/spreadsheet-viewer.class.d.ts +31 -5
  336. package/dist/components/viewers/spreadsheet-viewer/spreadsheet-viewer.class.js +11 -8
  337. package/dist/components/viewers/table-viewer-shared.js +19 -3
  338. package/dist/components/viewers/viewer-search-limits.js +1 -1
  339. package/dist/components/viewers/xml-viewer/xml-viewer.class.d.ts +35 -3
  340. package/dist/components/viewers/xml-viewer/xml-viewer.class.js +20 -5
  341. package/dist/components/viewers/xml-viewer/xml-viewer.d.ts +1 -1
  342. package/dist/components/viewers/xml-viewer/xml-viewer.js +1 -1
  343. package/dist/components/viewers/xml-viewer/xml-viewer.styles.js +1 -1
  344. package/dist/countries.js +1 -1
  345. package/dist/data-sources.d.ts +34 -0
  346. package/dist/data-sources.js +1 -0
  347. package/dist/events.d.ts +51 -7
  348. package/dist/framework-types.d.ts +1 -1
  349. package/dist/internal/accessibility-visibility.d.ts +4 -2
  350. package/dist/internal/accessibility-visibility.js +1 -1
  351. package/dist/internal/accessible-text-controller.js +1 -1
  352. package/dist/internal/anchor-target.js +2 -2
  353. package/dist/internal/catalog-picker.d.ts +1 -7
  354. package/dist/internal/catalog-picker.js +1 -1
  355. package/dist/internal/collection-snapshot.js +1 -1
  356. package/dist/internal/default-strings/agent-tools.generated.js +1 -1
  357. package/dist/internal/default-strings/charts.generated.js +1 -1
  358. package/dist/internal/default-strings/conversation.generated.js +1 -1
  359. package/dist/internal/default-strings/data.generated.js +1 -1
  360. package/dist/internal/default-strings/forms.generated.js +1 -1
  361. package/dist/internal/default-strings/layout.generated.js +1 -1
  362. package/dist/internal/default-strings/media.generated.js +1 -1
  363. package/dist/internal/default-strings/retrieval.generated.js +1 -1
  364. package/dist/internal/default-strings/shared.generated.js +1 -1
  365. package/dist/internal/default-strings/utility.generated.js +1 -1
  366. package/dist/internal/delimited-data.js +1 -1
  367. package/dist/internal/fixed-containing-block.js +1 -1
  368. package/dist/internal/flow-scene-envelope.js +1 -0
  369. package/dist/internal/graph-scene-controller.js +1 -0
  370. package/dist/internal/hierarchy-source-controller.js +1 -0
  371. package/dist/internal/hierarchy-source-view.js +29 -0
  372. package/dist/internal/hierarchy-source-view.styles.js +1 -0
  373. package/dist/internal/inherited-attribute-hub.d.ts +6 -0
  374. package/dist/internal/inherited-attribute-hub.js +1 -1
  375. package/dist/internal/intl-cache.js +1 -1
  376. package/dist/internal/keyed-index.js +1 -0
  377. package/dist/internal/localization-types.d.ts +1 -1
  378. package/dist/internal/localization.js +2 -2
  379. package/dist/internal/lyra-element.d.ts +2 -2
  380. package/dist/internal/lyra-element.js +3 -2
  381. package/dist/internal/native-modal-context.js +1 -1
  382. package/dist/internal/option-selection.js +1 -1
  383. package/dist/internal/package-metadata.js +1 -1
  384. package/dist/internal/positioner.js +1 -1
  385. package/dist/internal/resource-loader.d.ts +2 -0
  386. package/dist/internal/resource-loader.js +1 -1
  387. package/dist/internal/scoped-definitions.generated.js +1 -1
  388. package/dist/internal/search-haystack.js +1 -0
  389. package/dist/internal/selection-catalog.d.ts +5 -0
  390. package/dist/internal/selection-catalog.js +1 -1
  391. package/dist/internal/shiki-language-sources.js +1 -0
  392. package/dist/internal/source-page-controller.js +1 -0
  393. package/dist/internal/source-page-scope.js +1 -0
  394. package/dist/internal/source-request-controller.js +1 -0
  395. package/dist/internal/source-window-controller.js +1 -0
  396. package/dist/internal/spatial-source-controller.js +1 -0
  397. package/dist/internal/text-quote.d.ts +2 -6
  398. package/dist/internal/text-quote.js +1 -1
  399. package/dist/internal/theme-watcher.js +1 -1
  400. package/dist/internal/virtual-list-composition.js +1 -0
  401. package/dist/lyra.d.ts +1 -1
  402. package/dist/lyra.js +1 -1
  403. package/dist/testing/interaction-drivers.js +1 -1
  404. package/dist/testing/lyra-tag-event-map.js +1 -1
  405. package/dist/units.js +1 -1
  406. package/dist/utilities/data-preparation.d.ts +56 -0
  407. package/dist/utilities/data-preparation.js +1 -0
  408. package/dist/utilities/data-spatial.d.ts +26 -0
  409. package/dist/utilities/data-spatial.js +1 -0
  410. package/dist/utilities/index.d.ts +1 -1
  411. package/dist/utilities/index.js +1 -1
  412. package/llms/components/lr-activity-feed.md +7 -2
  413. package/llms/components/lr-agent-trace.md +49 -9
  414. package/llms/components/lr-agent-workspace.md +15 -8
  415. package/llms/components/lr-av-player.md +180 -10
  416. package/llms/components/lr-bar-chart.md +1 -1
  417. package/llms/components/lr-box-plot.md +8 -0
  418. package/llms/components/lr-bubble-chart.md +1 -1
  419. package/llms/components/lr-calendar.md +26 -3
  420. package/llms/components/lr-chart.md +310 -23
  421. package/llms/components/lr-chat-viewport.md +6 -0
  422. package/llms/components/lr-code-block-core.md +12 -7
  423. package/llms/components/lr-code-block.md +23 -9
  424. package/llms/components/lr-combobox.md +27 -15
  425. package/llms/components/lr-command-palette.md +16 -3
  426. package/llms/components/lr-country-picker.md +23 -6
  427. package/llms/components/lr-csv-viewer.md +95 -12
  428. package/llms/components/lr-currency-picker.md +23 -3
  429. package/llms/components/lr-data-grid.md +24 -6
  430. package/llms/components/lr-dataset-viewer.md +92 -11
  431. package/llms/components/lr-dialog.md +1 -1
  432. package/llms/components/lr-diff-view.md +19 -6
  433. package/llms/components/lr-document-library.md +60 -5
  434. package/llms/components/lr-doughnut-chart.md +1 -1
  435. package/llms/components/lr-embedding-explorer.md +89 -9
  436. package/llms/components/lr-emoji-picker.md +7 -2
  437. package/llms/components/lr-eval-dataset.md +56 -7
  438. package/llms/components/lr-eval-result.md +89 -4
  439. package/llms/components/lr-export-button.md +1 -1
  440. package/llms/components/lr-file-tree.md +60 -6
  441. package/llms/components/lr-flag.md +5 -2
  442. package/llms/components/lr-flow-canvas.md +152 -14
  443. package/llms/components/lr-flow-minimap.md +32 -4
  444. package/llms/components/lr-funnel.md +14 -0
  445. package/llms/components/lr-geojson-viewer.md +27 -10
  446. package/llms/components/lr-graph.md +43 -7
  447. package/llms/components/lr-heatmap.md +161 -5
  448. package/llms/components/lr-histogram.md +55 -9
  449. package/llms/components/lr-ingestion-queue.md +54 -3
  450. package/llms/components/lr-json-viewer.md +87 -7
  451. package/llms/components/lr-knowledge-base-admin.md +60 -4
  452. package/llms/components/lr-knowledge-base.md +121 -9
  453. package/llms/components/lr-knowledge-graph-explorer.md +106 -11
  454. package/llms/components/lr-lightbox.md +42 -6
  455. package/llms/components/lr-line-chart.md +28 -5
  456. package/llms/components/lr-lite-chart.md +96 -31
  457. package/llms/components/lr-locale-picker.md +6 -4
  458. package/llms/components/lr-map.md +67 -8
  459. package/llms/components/lr-markdown-core.md +10 -5
  460. package/llms/components/lr-markdown.md +23 -6
  461. package/llms/components/lr-mention-popover.md +11 -6
  462. package/llms/components/lr-mind-map.md +91 -10
  463. package/llms/components/lr-model-select.md +8 -4
  464. package/llms/components/lr-model-settings-panel.md +10 -2
  465. package/llms/components/lr-navigation-menu.md +1 -1
  466. package/llms/components/lr-neighbor-list.md +69 -2
  467. package/llms/components/lr-pie-chart.md +1 -1
  468. package/llms/components/lr-polar-area-chart.md +1 -1
  469. package/llms/components/lr-prompt-input.md +9 -2
  470. package/llms/components/lr-prompt-queue.md +11 -3
  471. package/llms/components/lr-radar-chart.md +1 -1
  472. package/llms/components/lr-rag-eval-dashboard.md +9 -2
  473. package/llms/components/lr-realtime-session.md +6 -2
  474. package/llms/components/lr-reorder-list.md +4 -0
  475. package/llms/components/lr-retrieval-compare.md +9 -4
  476. package/llms/components/lr-retrieval-results.md +104 -6
  477. package/llms/components/lr-scatter-chart.md +1 -1
  478. package/llms/components/lr-select.md +20 -10
  479. package/llms/components/lr-sequence-strip.md +92 -2
  480. package/llms/components/lr-span-waterfall.md +78 -8
  481. package/llms/components/lr-sparkline.md +42 -11
  482. package/llms/components/lr-spreadsheet-viewer.md +109 -14
  483. package/llms/components/lr-streaming-text-core.md +4 -2
  484. package/llms/components/lr-streaming-text.md +5 -1
  485. package/llms/components/lr-table.md +96 -115
  486. package/llms/components/lr-task-list.md +93 -9
  487. package/llms/components/lr-terminal.md +9 -0
  488. package/llms/components/lr-test-results.md +77 -3
  489. package/llms/components/lr-thread-list.md +86 -1
  490. package/llms/components/lr-time-zone-picker.md +8 -3
  491. package/llms/components/lr-timeline.md +5 -0
  492. package/llms/components/lr-token-input.md +7 -2
  493. package/llms/components/lr-tool-timeline.md +13 -4
  494. package/llms/components/lr-trace-tree.md +96 -10
  495. package/llms/components/lr-transcript-feed.md +9 -2
  496. package/llms/components/lr-tree.md +87 -15
  497. package/llms/components/lr-unit-picker.md +8 -3
  498. package/llms/components/lr-video-playlist.md +2 -0
  499. package/llms/components/lr-virtual-list.md +17 -8
  500. package/llms/components/lr-voice-picker.md +8 -3
  501. package/llms/components/lr-word-cloud.md +128 -12
  502. package/llms/components/lr-xml-viewer.md +106 -9
  503. package/llms/index.md +1 -1
  504. package/llms/peers.md +1 -1
  505. package/llms/shared/events-and-types.md +725 -264
  506. package/llms/shared/forms-and-accessibility.md +3 -17
  507. package/llms/shared/imports-and-registration.md +3 -17
  508. package/llms/shared/localization-and-rtl.md +0 -2
  509. package/llms/shared/styles-and-tokens.md +27 -36
  510. package/llms/shared/testing-and-utilities.md +4 -5
  511. package/llms/shared.md +770 -349
  512. package/llms.txt +1 -2
  513. package/locales.json +139 -139
  514. package/package.json +13 -4
  515. package/registrations.json +1 -1
  516. package/skills/compose-lyra-interfaces/SKILL.md +6 -8
  517. package/skills/lyra-ui/SKILL.md +20 -51
  518. package/skills/lyra-ui/commands/review.md +16 -33
  519. package/skills/lyra-ui/commands/update.md +6 -5
  520. package/skills/lyra-ui/online-api.md +15 -0
  521. package/skills/lyra-ui/reporting.md +2 -1
@@ -1,4 +1,4 @@
1
- import{type TemplateResult}from'lit';import{LyraElement}from'../../../internal/lyra-element.js';import type{LyraDatePickerFirstDayOfWeek}from'../../forms/date-picker/date-picker.class.js';export interface CalendarEvent{readonly id?:string;readonly date:string|number|Date;readonly title:string;readonly color?:string;readonly data?:unknown;}export interface LyraCalendarEventMap{'lr-date-select':CustomEvent<{date:string;}>;'lr-event-select':CustomEvent<{event:CalendarEvent;}>;'lr-view-change':CustomEvent<{viewDate:string;}>;}
1
+ import{type PropertyValues,type TemplateResult}from'lit';import{LyraElement}from'../../../internal/lyra-element.js';import type{LyraDatePickerFirstDayOfWeek}from'../../forms/date-picker/date-picker.class.js';export interface CalendarEvent{readonly id?:string;readonly date:string|number|Date;readonly title:string;readonly color?:string;readonly data?:unknown;}export interface LyraCalendarEventMap{'lr-date-select':CustomEvent<{date:string;}>;'lr-event-select':CustomEvent<{event:CalendarEvent;}>;'lr-view-change':CustomEvent<{viewDate:string;}>;}
2
2
  /** The two display modes `view` accepts. */
3
3
  export type CalendarView='month'|'agenda';
4
4
  /** The shared closed weekday vocabulary `lr-date-picker`/`lr-date-input` already accept
@@ -16,6 +16,8 @@ export type LyraCalendarFirstDayOfWeek=LyraDatePickerFirstDayOfWeek;
16
16
  * foreground/background pairing during hover and press; callers remain responsible for choosing
17
17
  * accessible custom event colors.
18
18
  *
19
+ * Events retain at most the first 10,000 entries as detached readonly sequences; records retain
20
+ * caller identity without deep cloning. The limit notice discloses omitted input in either view.
19
21
  * Public collection properties take bounded, detached readonly sequences. Calendar-only fields
20
22
  * are projected from own data descriptors once per assignment; `lr-event-select` retains the
21
23
  * caller's original event identity. Create a new collection and reassign it after changes;
@@ -35,6 +37,7 @@ export type LyraCalendarFirstDayOfWeek=LyraDatePickerFirstDayOfWeek;
35
37
  * @event lr-date-select - A calendar date was selected.
36
38
  * @event lr-event-select - An event was selected.
37
39
  * @event lr-view-change - The visible month changed.
40
+ * @csspart limit - Input admission limit notice.
38
41
  * @csspart header - Calendar header.
39
42
  * @csspart navigation - Wrapper around both month-navigation controls and the title.
40
43
  * @csspart nav - Either month-navigation button.
@@ -76,4 +79,4 @@ export declare class LyraCalendar extends LyraElement<LyraCalendarEventMap>{prot
76
79
  * `id`/`data`, or matched by reference in an imperative callback) -- only the sequence itself
77
80
  * is bounded/detached/frozen; the emitted `lr-event-select` detail must carry the exact object
78
81
  * the caller passed in `events`, not a structural clone. */
79
- protected static readonly identityCollectionProperties:readonly string[];static styles:import("lit").CSSResultGroup[];events:readonly CalendarEvent[];value:string;viewDate:string;private _view;get view():CalendarView;set view(value:CalendarView);firstDayOfWeek:LyraCalendarFirstDayOfWeek;accessibleLabel:string;private focusedDate;private get viewStart();private get normalizedFirstDayOfWeek();private changeMonth;private selectDate;private get effectiveEvents();private buckets?;private cachedBuckets;private bucketEventsByDate;private weeks;private gridBounds;private onDayKeyDown;private weekdays;render():TemplateResult;}declare global{interface HTMLElementTagNameMap{'lr-calendar':LyraCalendar;}}
82
+ protected static readonly identityCollectionProperties:readonly string[];static styles:import("lit").CSSResultGroup[];events:readonly CalendarEvent[];value:string;viewDate:string;private _view;get view():CalendarView;set view(value:CalendarView);firstDayOfWeek:LyraCalendarFirstDayOfWeek;accessibleLabel:string;private focusedDate;private get viewStart();private get normalizedFirstDayOfWeek();private changeMonth;private selectDate;private get effectiveEvents();private buckets?;private cachedBuckets;private bucketEventsByDate;private agendaMemo?;private agendaEvents;private weeks;private gridBounds;private onDayKeyDown;private weekdays;private readonly announcements;private initialLimitUpdate;private lastLimitNotice;private inputLimitMessage;protected updated(changed:PropertyValues):void;adoptedCallback():void;render():TemplateResult;}declare global{interface HTMLElementTagNameMap{'lr-calendar':LyraCalendar;}}
@@ -1,2 +1,2 @@
1
- import{__decorate}from"tslib";import{collectionSupport}from"../../../internal/collection-snapshot.js";import{html,nothing}from"lit";import{property,state}from"lit/decorators.js";import{literalSetConverter}from"../../../internal/converters.js";import{styleMap}from"lit/directives/style-map.js";import{LyraElement}from"../../../internal/lyra-element.js";import{addMonthsClampingDay,formatISO,localDate,monthMatrix,parseISO,resolveFirstDayOfWeek,weekdayLabels}from"../../forms/date-picker/calendar-core.js";import{sanitizeCssColor}from"../../../internal/safe-css.js";import{styles}from"./calendar.styles.js";import{getDateTimeFormat,getNumberFormat}from"../../../internal/intl-cache.js";import{hostAriaLabel}from"../../../internal/a11y.js";import{MISSING_OWN_DATA_DESCRIPTOR,UNSAFE_OWN_DATA_DESCRIPTOR,getOwnDataDescriptor}from"../../../internal/data-descriptors.js";import{LYRA_DEFAULT_calendarEmpty,LYRA_DEFAULT_calendarEventsOverflow,LYRA_DEFAULT_calendarLabel,LYRA_DEFAULT_calendarNextMonth,LYRA_DEFAULT_calendarPreviousMonth}from"../../../internal/default-strings/data.generated.js";const monthStart=date=>localDate(date.getFullYear(),date.getMonth(),1),MAX_DAY_CELL_EVENTS=4,MAX_AGENDA_EVENTS=500,canonicalEventSnapshots=new WeakMap;function normalizeCalendarEventDate(value){if(typeof value=="string"){const date=parseISO(value);return date?formatISO(date):void 0}if(typeof value=="number"){if(!Number.isFinite(value))return;const date=new Date(value);return Number.isNaN(date.getTime())?void 0:formatISO(date)}if(!(value===null||typeof value!="object"))try{const epoch=Date.prototype.getTime.call(value);return Number.isFinite(epoch)?formatISO(new Date(epoch)):void 0}catch{return}}function isSafeNonArrayObject(value){if(value===null||typeof value!="object")return!1;try{return!Array.isArray(value)}catch{return!1}}function projectCalendarEvent(value){if(!isSafeNonArrayObject(value))return;const date=getOwnDataDescriptor(value,"date"),title=getOwnDataDescriptor(value,"title"),color=getOwnDataDescriptor(value,"color");if(date===MISSING_OWN_DATA_DESCRIPTOR||date===UNSAFE_OWN_DATA_DESCRIPTOR||title===MISSING_OWN_DATA_DESCRIPTOR||title===UNSAFE_OWN_DATA_DESCRIPTOR||typeof title.value!="string"||title.value.trim().length===0)return;const normalizedDate=normalizeCalendarEventDate(date.value);if(normalizedDate)return Object.freeze({source:value,date:normalizedDate,title:title.value,color:color===MISSING_OWN_DATA_DESCRIPTOR||color===UNSAFE_OWN_DATA_DESCRIPTOR||typeof color.value!="string"?void 0:color.value})}function canonicalCalendarEvents(values){const cached=canonicalEventSnapshots.get(values);if(cached)return cached;const projected=[];for(const value of values){const event=projectCalendarEvent(value);event&&projected.push(event)}const snapshot=Object.freeze(projected);return canonicalEventSnapshots.set(values,snapshot),snapshot}const CALENDAR_VIEW=literalSetConverter(["month","agenda"],"month");class LyraCalendar extends LyraElement{constructor(){super(...arguments),this.events=[],this.value="",this.viewDate=formatISO(new Date).slice(0,7)+"-01",this._view="month",this.firstDayOfWeek="auto",this.accessibleLabel="",this.focusedDate=""}static{this.defaultStrings={...super.defaultStrings,calendarEmpty:LYRA_DEFAULT_calendarEmpty,calendarEventsOverflow:LYRA_DEFAULT_calendarEventsOverflow,calendarLabel:LYRA_DEFAULT_calendarLabel,calendarNextMonth:LYRA_DEFAULT_calendarNextMonth,calendarPreviousMonth:LYRA_DEFAULT_calendarPreviousMonth}}static{this.collectionSupport=collectionSupport}static{this.ownedCollectionProperties=Object.freeze(["events"])}static{this.identityCollectionProperties=Object.freeze(["events"])}static{this.styles=[LyraElement.styles,styles]}get view(){return this._view}set view(value){const normalized=CALENDAR_VIEW.normalizeReflected(this,"view",value),previous=this._view;previous!==normalized&&(this._view=normalized,this.requestUpdate("view",previous))}get viewStart(){const parsed=parseISO(this.viewDate);return monthStart(parsed||new Date)}get normalizedFirstDayOfWeek(){return resolveFirstDayOfWeek(this.firstDayOfWeek,this.effectiveLocale)}changeMonth(delta){const next=localDate(this.viewStart.getFullYear(),this.viewStart.getMonth()+delta,1);this.viewDate=formatISO(next),this.emit("lr-view-change",{viewDate:this.viewDate})}selectDate(date){this.value=date,this.focusedDate=date,this.emit("lr-date-select",{date})}get effectiveEvents(){return canonicalCalendarEvents(this.events)}cachedBuckets(events){return this.buckets?.[0]!==events&&(this.buckets=[events,this.bucketEventsByDate(events)]),this.buckets[1]}bucketEventsByDate(events){const buckets=new Map;for(const event of events){const bucket=buckets.get(event.date);bucket?bucket.push(event):buckets.set(event.date,[event])}return buckets}weeks(){const start=this.viewStart;return monthMatrix(start.getFullYear(),start.getMonth(),this.normalizedFirstDayOfWeek)}gridBounds(weeks){return[weeks[0][0],weeks[weeks.length-1][6]]}onDayKeyDown(event,date){const rtl=this.effectiveDirection==="rtl",year=date.getFullYear(),month=date.getMonth(),day=date.getDate();let next;switch(event.key){case"ArrowLeft":next=localDate(year,month,day+(rtl?1:-1));break;case"ArrowRight":next=localDate(year,month,day+(rtl?-1:1));break;case"ArrowUp":next=localDate(year,month,day-7);break;case"ArrowDown":next=localDate(year,month,day+7);break;case"PageUp":next=addMonthsClampingDay(date,-1);break;case"PageDown":next=addMonthsClampingDay(date,1);break;case"Home":next=localDate(year,month,1);break;case"End":next=localDate(year,month+1,0);break;case"Enter":case" ":event.preventDefault(),this.selectDate(formatISO(date));return;default:return}event.preventDefault();const[gridFirst,gridLast]=this.gridBounds(this.weeks());(next<gridFirst||next>gridLast)&&(this.viewDate=formatISO(monthStart(next)),this.emit("lr-view-change",{viewDate:this.viewDate})),this.focusedDate=formatISO(next),queueMicrotask(()=>this.renderRoot.querySelector(`[data-date="${this.focusedDate}"]`)?.focus())}weekdays(){return weekdayLabels(this.normalizedFirstDayOfWeek,"short",this.effectiveLocale)}render(){const start=this.viewStart,weeks=this.weeks(),monthTitle=getDateTimeFormat(this.effectiveLocale,{month:"long",year:"numeric"}).format(start),today=formatISO(new Date),label=hostAriaLabel(this)??this.localize("calendarLabel"),dayLabelFmt=getDateTimeFormat(this.effectiveLocale,{dateStyle:"full"}),agendaDateFmt=getDateTimeFormat(this.effectiveLocale,{dateStyle:"medium"}),dayNumberFmt=getNumberFormat(this.effectiveLocale),events=this.effectiveEvents,monthPrefix=formatISO(start).slice(0,7),agenda=this.view==="agenda"?events.filter(event=>event.date.startsWith(monthPrefix)).sort((a,b)=>a.date<b.date?-1:a.date>b.date?1:0):[],agendaTruncated=agenda.length>MAX_AGENDA_EVENTS,renderedAgenda=agenda.slice(0,MAX_AGENDA_EVENTS),eventsByDate=this.view==="month"?this.cachedBuckets(events):void 0,[gridFirst,gridLast]=this.gridBounds(weeks),rawAnchor=this.focusedDate||this.value||today,rawAnchorDate=parseISO(rawAnchor),anchor=rawAnchorDate&&rawAnchorDate>=gridFirst&&rawAnchorDate<=gridLast?rawAnchor:formatISO(start);return html`<section aria-label=${label}><header part="header navigation"><button part="nav previous-button" type="button" aria-label=${this.localize("calendarPreviousMonth")} @click=${()=>this.changeMonth(-1)}><span part="nav-glyph" aria-hidden="true">‹</span></button><span part="title">${monthTitle}</span><button part="nav next-button" type="button" aria-label=${this.localize("calendarNextMonth")} @click=${()=>this.changeMonth(1)}><span part="nav-glyph" aria-hidden="true">›</span></button></header>
1
+ import{__decorate}from"tslib";import{collectionSupport,publicCollectionTruncation}from"../../../internal/collection-snapshot.js";import{html,nothing}from"lit";import{property,state}from"lit/decorators.js";import{literalSetConverter}from"../../../internal/converters.js";import{styleMap}from"lit/directives/style-map.js";import{LyraElement}from"../../../internal/lyra-element.js";import{addMonthsClampingDay,formatISO,localDate,monthMatrix,parseISO,resolveFirstDayOfWeek,weekdayLabels}from"../../forms/date-picker/calendar-core.js";import{sanitizeCssColor}from"../../../internal/safe-css.js";import{styles}from"./calendar.styles.js";import{getDateTimeFormat,getNumberFormat}from"../../../internal/intl-cache.js";import{AnnouncementSinkController}from"../../../internal/announcer.js";import{hostAriaLabel}from"../../../internal/a11y.js";import{MISSING_OWN_DATA_DESCRIPTOR,UNSAFE_OWN_DATA_DESCRIPTOR,getOwnDataDescriptor}from"../../../internal/data-descriptors.js";import{LYRA_DEFAULT_calendarEmpty,LYRA_DEFAULT_calendarEventsOverflow,LYRA_DEFAULT_calendarInputLimit,LYRA_DEFAULT_calendarLabel,LYRA_DEFAULT_calendarNextMonth,LYRA_DEFAULT_calendarPreviousMonth}from"../../../internal/default-strings/data.generated.js";const monthStart=date=>localDate(date.getFullYear(),date.getMonth(),1),MAX_DAY_CELL_EVENTS=4,MAX_AGENDA_EVENTS=500,canonicalEventSnapshots=new WeakMap;function normalizeCalendarEventDate(value){if(typeof value=="string"){const date=parseISO(value);return date?formatISO(date):void 0}if(typeof value=="number"){if(!Number.isFinite(value))return;const date=new Date(value);return Number.isNaN(date.getTime())?void 0:formatISO(date)}if(!(value===null||typeof value!="object"))try{const epoch=Date.prototype.getTime.call(value);return Number.isFinite(epoch)?formatISO(new Date(epoch)):void 0}catch{return}}function isSafeNonArrayObject(value){if(value===null||typeof value!="object")return!1;try{return!Array.isArray(value)}catch{return!1}}function projectCalendarEvent(value){if(!isSafeNonArrayObject(value))return;const date=getOwnDataDescriptor(value,"date"),title=getOwnDataDescriptor(value,"title"),color=getOwnDataDescriptor(value,"color");if(date===MISSING_OWN_DATA_DESCRIPTOR||date===UNSAFE_OWN_DATA_DESCRIPTOR||title===MISSING_OWN_DATA_DESCRIPTOR||title===UNSAFE_OWN_DATA_DESCRIPTOR||typeof title.value!="string"||title.value.trim().length===0)return;const normalizedDate=normalizeCalendarEventDate(date.value);if(normalizedDate)return Object.freeze({source:value,date:normalizedDate,title:title.value,color:color===MISSING_OWN_DATA_DESCRIPTOR||color===UNSAFE_OWN_DATA_DESCRIPTOR||typeof color.value!="string"?void 0:color.value})}function canonicalCalendarEvents(values){const cached=canonicalEventSnapshots.get(values);if(cached)return cached;const projected=[];for(const value of values){const event=projectCalendarEvent(value);event&&projected.push(event)}const snapshot=Object.freeze(projected);return canonicalEventSnapshots.set(values,snapshot),snapshot}const CALENDAR_VIEW=literalSetConverter(["month","agenda"],"month");class LyraCalendar extends LyraElement{constructor(){super(...arguments),this.events=[],this.value="",this.viewDate=formatISO(new Date).slice(0,7)+"-01",this._view="month",this.firstDayOfWeek="auto",this.accessibleLabel="",this.focusedDate="",this.announcements=new AnnouncementSinkController(this),this.initialLimitUpdate=!0,this.lastLimitNotice=""}static{this.defaultStrings={...super.defaultStrings,calendarEmpty:LYRA_DEFAULT_calendarEmpty,calendarEventsOverflow:LYRA_DEFAULT_calendarEventsOverflow,calendarInputLimit:LYRA_DEFAULT_calendarInputLimit,calendarLabel:LYRA_DEFAULT_calendarLabel,calendarNextMonth:LYRA_DEFAULT_calendarNextMonth,calendarPreviousMonth:LYRA_DEFAULT_calendarPreviousMonth}}static{this.collectionSupport=collectionSupport}static{this.ownedCollectionProperties=Object.freeze(["events"])}static{this.identityCollectionProperties=Object.freeze(["events"])}static{this.styles=[LyraElement.styles,styles]}get view(){return this._view}set view(value){const normalized=CALENDAR_VIEW.normalizeReflected(this,"view",value),previous=this._view;previous!==normalized&&(this._view=normalized,this.requestUpdate("view",previous))}get viewStart(){const parsed=parseISO(this.viewDate);return monthStart(parsed||new Date)}get normalizedFirstDayOfWeek(){return resolveFirstDayOfWeek(this.firstDayOfWeek,this.effectiveLocale)}changeMonth(delta){const next=localDate(this.viewStart.getFullYear(),this.viewStart.getMonth()+delta,1);this.viewDate=formatISO(next),this.emit("lr-view-change",{viewDate:this.viewDate})}selectDate(date){this.value=date,this.focusedDate=date,this.emit("lr-date-select",{date})}get effectiveEvents(){return canonicalCalendarEvents(this.events)}cachedBuckets(events){return this.buckets?.[0]!==events&&(this.buckets=[events,this.bucketEventsByDate(events)]),this.buckets[1]}bucketEventsByDate(events){const buckets=new Map;for(const event of events){const bucket=buckets.get(event.date);bucket?bucket.push(event):buckets.set(event.date,[event])}return buckets}agendaEvents(events,month){return(this.agendaMemo?.events!==events||this.agendaMemo.month!==month)&&(this.agendaMemo={events,month,rows:events.filter(event=>event.date.startsWith(month)).sort((a,b)=>a.date<b.date?-1:a.date>b.date?1:0)}),this.agendaMemo.rows}weeks(){const start=this.viewStart;return monthMatrix(start.getFullYear(),start.getMonth(),this.normalizedFirstDayOfWeek)}gridBounds(weeks){return[weeks[0][0],weeks[weeks.length-1][6]]}onDayKeyDown(event,date){const rtl=this.effectiveDirection==="rtl",year=date.getFullYear(),month=date.getMonth(),day=date.getDate();let next;switch(event.key){case"ArrowLeft":next=localDate(year,month,day+(rtl?1:-1));break;case"ArrowRight":next=localDate(year,month,day+(rtl?-1:1));break;case"ArrowUp":next=localDate(year,month,day-7);break;case"ArrowDown":next=localDate(year,month,day+7);break;case"PageUp":next=addMonthsClampingDay(date,-1);break;case"PageDown":next=addMonthsClampingDay(date,1);break;case"Home":next=localDate(year,month,1);break;case"End":next=localDate(year,month+1,0);break;case"Enter":case" ":event.preventDefault(),this.selectDate(formatISO(date));return;default:return}event.preventDefault();const[gridFirst,gridLast]=this.gridBounds(this.weeks());(next<gridFirst||next>gridLast)&&(this.viewDate=formatISO(monthStart(next)),this.emit("lr-view-change",{viewDate:this.viewDate})),this.focusedDate=formatISO(next),queueMicrotask(()=>this.renderRoot.querySelector(`[data-date="${this.focusedDate}"]`)?.focus())}weekdays(){return weekdayLabels(this.normalizedFirstDayOfWeek,"short",this.effectiveLocale)}inputLimitMessage(){const limit=publicCollectionTruncation(this,"events");return limit?this.localize("calendarInputLimit",void 0,{count:getNumberFormat(this.effectiveLocale).format(limit.retained),total:getNumberFormat(this.effectiveLocale).format(limit.source)}):""}updated(changed){super.updated(changed);const notice=this.inputLimitMessage();!this.initialLimitUpdate&&notice&&notice!==this.lastLimitNotice&&this.announcements.announcePolite(notice),this.initialLimitUpdate=!1,this.lastLimitNotice=notice}adoptedCallback(){super.adoptedCallback(),this.announcements.adopted()}render(){const start=this.viewStart,weeks=this.weeks(),monthTitle=getDateTimeFormat(this.effectiveLocale,{month:"long",year:"numeric"}).format(start),today=formatISO(new Date),label=hostAriaLabel(this)??this.localize("calendarLabel"),dayLabelFmt=getDateTimeFormat(this.effectiveLocale,{dateStyle:"full"}),agendaDateFmt=getDateTimeFormat(this.effectiveLocale,{dateStyle:"medium"}),dayNumberFmt=getNumberFormat(this.effectiveLocale),events=this.effectiveEvents,monthPrefix=formatISO(start).slice(0,7),agenda=this.view==="agenda"?this.agendaEvents(events,monthPrefix):[],agendaTruncated=agenda.length>MAX_AGENDA_EVENTS,renderedAgenda=agenda.slice(0,MAX_AGENDA_EVENTS),eventsByDate=this.view==="month"?this.cachedBuckets(events):void 0,[gridFirst,gridLast]=this.gridBounds(weeks),rawAnchor=this.focusedDate||this.value||today,rawAnchorDate=parseISO(rawAnchor),anchor=rawAnchorDate&&rawAnchorDate>=gridFirst&&rawAnchorDate<=gridLast?rawAnchor:formatISO(start),inputLimit=this.inputLimitMessage();return html`<section aria-label=${label}>${inputLimit?html`<p part="limit">${inputLimit}</p>`:nothing}<header part="header navigation"><button part="nav previous-button" type="button" aria-label=${this.localize("calendarPreviousMonth")} @click=${()=>this.changeMonth(-1)}><span part="nav-glyph" aria-hidden="true">‹</span></button><span part="title">${monthTitle}</span><button part="nav next-button" type="button" aria-label=${this.localize("calendarNextMonth")} @click=${()=>this.changeMonth(1)}><span part="nav-glyph" aria-hidden="true">›</span></button></header>
2
2
  ${this.view==="agenda"?html`<div part="agenda">${agenda.length?html`${renderedAgenda.map(event=>{const date=parseISO(event.date),bg=event.color?sanitizeCssColor(event.color):void 0;return html`<button part="agenda-event" type="button" style=${styleMap(bg?{"--_lr-calendar-agenda-event-background":bg,"--_lr-calendar-agenda-event-foreground":"var(--lr-color-on-brand)"}:{})} @click=${()=>this.emit("lr-event-select",{event:event.source})}><strong>${date?agendaDateFmt.format(date):event.date}</strong> ${event.title}</button>`})}${agendaTruncated?html`<span part="agenda-limit">${this.localize("calendarEventsOverflow",void 0,{n:getNumberFormat(this.effectiveLocale).format(agenda.length-MAX_AGENDA_EVENTS)})}</span>`:nothing}`:html`<p part="empty">${this.localize("calendarEmpty")}</p>`}</div>`:html`<div part="weekdays">${this.weekdays().map(day=>html`<span part="weekday">${day}</span>`)}</div><div part="grid" role="grid" aria-label=${monthTitle}>${weeks.map(week=>html`<div part="week" role="row">${week.map(date=>{const dateIso=formatISO(date),dayEvents=eventsByDate?.get(dateIso)??[],dayTruncated=dayEvents.length>MAX_DAY_CELL_EVENTS;return html`<div part="day" role="gridcell" data-date=${dateIso} data-outside=${date.getMonth()!==start.getMonth()?"true":"false"} data-today=${dateIso===today?"true":"false"} data-selected=${dateIso===this.value?"true":"false"} aria-selected=${dateIso===this.value?"true":"false"} aria-current=${dateIso===today?"date":nothing} aria-label=${dayLabelFmt.format(date)} tabindex=${dateIso===anchor?"0":"-1"} @click=${event=>{(event.target===event.currentTarget||event.target.getAttribute("part")==="date")&&this.selectDate(dateIso)}} @keydown=${event=>{event.target===event.currentTarget&&this.onDayKeyDown(event,date)}}><span part="date">${dayNumberFmt.format(date.getDate())}</span>${dayEvents.slice(0,MAX_DAY_CELL_EVENTS).map(item=>{const bg=item.color?sanitizeCssColor(item.color):void 0;return html`<button part="event" type="button" style=${styleMap(bg?{backgroundColor:bg}:{})} @click=${event=>{event.stopPropagation(),this.emit("lr-event-select",{event:item.source})}}>${item.title}</button>`})}${dayTruncated?html`<span part="event-limit">${this.localize("calendarEventsOverflow",void 0,{n:getNumberFormat(this.effectiveLocale).format(dayEvents.length-MAX_DAY_CELL_EVENTS)})}</span>`:nothing}</div>`})}</div>`)}</div>`}</section>`}}__decorate([property({attribute:!1})],LyraCalendar.prototype,"events",void 0),__decorate([property()],LyraCalendar.prototype,"value",void 0),__decorate([property({attribute:"view-date"})],LyraCalendar.prototype,"viewDate",void 0),__decorate([property({reflect:!0,converter:CALENDAR_VIEW})],LyraCalendar.prototype,"view",null),__decorate([property({attribute:"first-day-of-week"})],LyraCalendar.prototype,"firstDayOfWeek",void 0),__decorate([property({attribute:"aria-label"})],LyraCalendar.prototype,"accessibleLabel",void 0),__decorate([state()],LyraCalendar.prototype,"focusedDate",void 0);export{LyraCalendar};
@@ -1,2 +1,2 @@
1
- import{getCollator,resolveIntlLocale}from"../../../internal/intl-cache.js";import{UNSAFE_LEADING}from"../../utility/export-button/csv.js";function columnId(column,_index){return typeof column.id=="string"&&column.id.trim()!==""?column.id:typeof column.field=="string"&&column.field.trim()!==""?column.field:""}function pathValue(value,path){if(!path)return;let current=value;for(const segment of path.split(".")){if(typeof current!="object"||current===null)return;current=current[segment]}return current}function columnValue(column,row){return column.value?column.value(row):column.field?pathValue(row,column.field):void 0}function comparableText(value){if(value==null)return"";if(value instanceof Date)return Number.isFinite(value.getTime())?value.toISOString():"";if(Array.isArray(value))return value.map(comparableText).join(" ");if(typeof value=="object")try{return JSON.stringify(value,(_key,nested)=>typeof nested=="bigint"?nested.toString():nested)??""}catch{return""}return String(value)}function numericDate(value){if(value instanceof Date)return Number.isFinite(value.getTime())?value.getTime():void 0;if(typeof value=="number")return Number.isFinite(value)?value:void 0;if(typeof value=="string"){const parsed=Date.parse(value);return Number.isFinite(parsed)?parsed:void 0}}function finiteValue(value){if(typeof value=="string"&&value.trim()==="")return;const number=typeof value=="number"?value:Number(value);return Number.isFinite(number)?number:void 0}function valuesFromFilter(value){return Array.isArray(value)?value:value instanceof Set?[...value]:value==null||value===""?[]:[value]}function valuesFromCell(value){return Array.isArray(value)?value:value instanceof Set?[...value]:[value]}function sameValue(left,right,collator){return Object.is(left,right)?!0:collator().compare(comparableText(left),comparableText(right))===0}const DATE_ONLY=/^(\d{4})-(\d{2})-(\d{2})$/;function localCalendarDay(value){if(typeof value!="string")return;const match=DATE_ONLY.exec(value.trim());if(!match)return;const year=Number(match[1]),month=Number(match[2])-1,day=Number(match[3]),date=new Date(0);return date.setFullYear(year,month,day),date.setHours(0,0,0,0),date.getFullYear()===year&&date.getMonth()===month&&date.getDate()===day?date.getTime():void 0}function matchesRange(value,filter,date){if(!Array.isArray(filter))return!0;const[rawStart,rawEnd]=filter,read=date?candidate=>localCalendarDay(candidate)??numericDate(candidate):finiteValue,current=read(value);if(current===void 0)return!1;const start=read(rawStart),end=read(rawEnd);if(start!==void 0&&current<start)return!1;if(end!==void 0){if(date){const inclusiveEnd=new Date(end);if(inclusiveEnd.setHours(23,59,59,999),current>inclusiveEnd.getTime())return!1}else if(current>end)return!1}return!0}function matchesFilter(row,column,filter,locale){const intlLocale=resolveIntlLocale(locale),value=columnValue(column,row);if(column.filterFn)return!!column.filterFn(value,filter,row);const type=column.filterType??"text";if(type==="number-range")return matchesRange(value,filter,!1);if(type==="date-range")return matchesRange(value,filter,!0);let collator;const comparison=()=>collator??=getCollator(intlLocale,{sensitivity:"base",numeric:!0});if(type==="equals")return comparison().compare(comparableText(value),comparableText(filter))===0;const needles=valuesFromFilter(filter);if(needles.length===0)return!0;const values=valuesFromCell(value);return type==="set"||type==="includes-any"?needles.some(needle=>values.some(candidate=>sameValue(candidate,needle,comparison))):type==="includes-all"?needles.every(needle=>values.some(candidate=>sameValue(candidate,needle,comparison))):comparableText(value).toLocaleLowerCase(intlLocale).includes(comparableText(filter).toLocaleLowerCase(intlLocale))}function filterRows(rows,columns,filters,locale){if(filters.length===0)return[...rows];const byId=new Map(columns.map((column,index)=>[columnId(column,index),column]));return rows.filter(row=>filters.every(filter=>{const column=byId.get(filter.id);return!column||matchesFilter(row,column,filter.value,locale)}))}function searchRows(rows,columns,term,locale,searchFn){const intlLocale=resolveIntlLocale(locale),needle=term.trim();if(!needle)return[...rows];const searchable=columns.filter(column=>(column.field||column.value)&&column.searchable!==!1),normalizedNeedle=searchFn?"":needle.toLocaleLowerCase(intlLocale);return rows.filter(row=>searchable.some(column=>{const value=columnValue(column,row);return searchFn?!!searchFn(value,needle,row):comparableText(value).toLocaleLowerCase(intlLocale).includes(normalizedNeedle)}))}function undefinedRank(column,left,right){const leftMissing=left==null||typeof left=="number"&&!Number.isFinite(left),rightMissing=right==null||typeof right=="number"&&!Number.isFinite(right);if(leftMissing===rightMissing)return;const policy=column.sortUndefined??"last";return leftMissing===(policy==="first"||policy===-1)?-1:1}function cellText(cell){return cell.text??=comparableText(cell.value)}function cellTime(cell){return cell.time===void 0&&(cell.time=numericDate(cell.value)??null),cell.time??void 0}function cellComparator(column,locale){const comparator=column.comparator;if(comparator)return(left,right,leftRow,rightRow)=>comparator(left.value,right.value,leftRow,rightRow);const algorithm=column.sortFn??"alphanumeric",caseSensitive=algorithm==="alphanumericCaseSensitive"||algorithm==="textCaseSensitive",numeric=algorithm==="alphanumeric"||algorithm==="alphanumericCaseSensitive";let collator;return(left,right)=>{if(algorithm==="datetime"){const leftTime=cellTime(left),rightTime=cellTime(right);if(leftTime!==void 0&&rightTime!==void 0)return leftTime-rightTime}return algorithm==="basic"&&typeof left.value=="number"&&typeof right.value=="number"?left.value-right.value:(collator??=getCollator(locale,{sensitivity:caseSensitive?"variant":"base",numeric}),collator.compare(cellText(left),cellText(right)))}}function sortRows(rows,columns,sorting,locale){if(sorting.length===0)return[...rows];const byId=new Map(columns.map((column,index)=>[columnId(column,index),column])),active=[];for(const sort of sorting){const column=byId.get(sort.id);column&&active.push({desc:sort.desc,column,compare:cellComparator(column,locale)})}return rows.map((row,index)=>({row,index,cells:active.map(({column})=>({value:columnValue(column,row)}))})).sort((left,right)=>{for(let position=0;position<active.length;position+=1){const{desc,column,compare}=active[position],leftCell=left.cells[position],rightCell=right.cells[position],missing=undefinedRank(column,leftCell.value,rightCell.value);if(missing!==void 0)return typeof(column.sortUndefined??"last")=="string"?missing:desc?-missing:missing;const compared=compare(leftCell,rightCell,left.row,right.row);if(compared!==0)return desc?-compared:compared}return left.index-right.index}).map(({row})=>row)}function aggregateValues(aggregation,rows,values){if(typeof aggregation=="function")return aggregation(rows,values);if(aggregation==="count")return rows.length;const defined=values.filter(value=>value!=null);if(aggregation==="unique")return[...new Set(defined)];if(aggregation==="uniqueCount")return new Set(defined).size;const numeric=defined.map(finiteValue).filter(value=>value!==void 0);if(numeric.length===0)return aggregation==="extent"?[]:void 0;if(aggregation==="sum"||aggregation==="mean"){let scale=0;for(const value of numeric)scale=Math.max(scale,Math.abs(value));let scaledTotal=0;if(scale>0)for(const value of numeric)scaledTotal+=value/scale;const result=scale===0?0:aggregation==="sum"?scaledTotal*scale:scaledTotal/numeric.length*scale;return Number.isFinite(result)?result:void 0}if(aggregation==="median"){const sorted=[...numeric].sort((left2,right2)=>left2-right2),middle=Math.floor(sorted.length/2);if(sorted.length%2!==0)return sorted[middle];const left=sorted[middle-1]??0,right=sorted[middle]??0,median=Math.sign(left)===Math.sign(right)?left+(right-left)/2:left/2+right/2;return Number.isFinite(median)?median:void 0}let minimum=numeric[0],maximum=minimum;for(const value of numeric)value<minimum&&(minimum=value),value>=maximum&&(maximum=value);return aggregation==="min"?minimum:aggregation==="max"?maximum:[minimum,maximum]}function csvCell(value,delimiter,escapeFormulas){let text=comparableText(value);return escapeFormulas&&typeof value!="number"&&UNSAFE_LEADING.test(text)&&(text=`'${text}`),(text.includes(delimiter)||/[\x22\r\n]/u.test(text))&&(text=`"${text.replaceAll('"','""')}"`),text}function rowsAsDelimited(rows,columns,options={}){const delimiter=options.delimiter??",",includeHeaders=options.includeHeaders??!0,escapeFormulas=options.escapeFormulas??!0,requested=options.columnIds?new Set(options.columnIds):void 0,visible=columns.filter((column,index)=>column.hidden!==!0&&(!requested||requested.has(columnId(column,index)))),lines=[];includeHeaders&&lines.push(visible.map((column,index)=>csvCell(column.label??columnId(column,index),delimiter,!1)).join(delimiter));for(const row of rows)lines.push(visible.map(column=>csvCell(columnValue(column,row),delimiter,escapeFormulas)).join(delimiter));return lines.join(`\r
2
- `)}export{aggregateValues,columnId,columnValue,filterRows,matchesFilter,pathValue,rowsAsDelimited,searchRows,sortRows};
1
+ import{getCollator,resolveIntlLocale}from"../../../internal/intl-cache.js";import{UNSAFE_LEADING}from"../../utility/export-button/csv.js";function columnId(column,_index){return typeof column.id=="string"&&column.id.trim()!==""?column.id:typeof column.field=="string"&&column.field.trim()!==""?column.field:""}function pathValue(value,path){if(!path)return;let current=value;for(const segment of path.split(".")){if(typeof current!="object"||current===null)return;current=current[segment]}return current}function columnValue(column,row){return column.value?column.value(row):column.field?pathValue(row,column.field):void 0}function comparableText(value){if(value==null)return"";if(value instanceof Date)return Number.isFinite(value.getTime())?value.toISOString():"";if(Array.isArray(value))return value.map(comparableText).join(" ");if(typeof value=="object")try{return JSON.stringify(value,(_key,nested)=>typeof nested=="bigint"?nested.toString():nested)??""}catch{return""}return String(value)}function numericDate(value){if(value instanceof Date)return Number.isFinite(value.getTime())?value.getTime():void 0;if(typeof value=="number")return Number.isFinite(value)?value:void 0;if(typeof value=="string"){const parsed=Date.parse(value);return Number.isFinite(parsed)?parsed:void 0}}function finiteValue(value){if(typeof value=="string"&&value.trim()==="")return;const number=typeof value=="number"?value:Number(value);return Number.isFinite(number)?number:void 0}function valuesFromFilter(value){return Array.isArray(value)?value:value instanceof Set?[...value]:value==null||value===""?[]:[value]}function valuesFromCell(value){return Array.isArray(value)?value:value instanceof Set?[...value]:[value]}function sameValue(left,right,collator){return Object.is(left,right)?!0:collator().compare(comparableText(left),comparableText(right))===0}const DATE_ONLY=/^(\d{4})-(\d{2})-(\d{2})$/;function localCalendarDay(value){if(typeof value!="string")return;const match=DATE_ONLY.exec(value.trim());if(!match)return;const year=Number(match[1]),month=Number(match[2])-1,day=Number(match[3]),date=new Date(0);return date.setFullYear(year,month,day),date.setHours(0,0,0,0),date.getFullYear()===year&&date.getMonth()===month&&date.getDate()===day?date.getTime():void 0}function matchesRange(value,filter,date){if(!Array.isArray(filter))return!0;const[rawStart,rawEnd]=filter,read=date?candidate=>localCalendarDay(candidate)??numericDate(candidate):finiteValue,current=read(value);if(current===void 0)return!1;const start=read(rawStart),end=read(rawEnd);if(start!==void 0&&current<start)return!1;if(end!==void 0){if(date){const inclusiveEnd=new Date(end);if(inclusiveEnd.setHours(23,59,59,999),current>inclusiveEnd.getTime())return!1}else if(current>end)return!1}return!0}function matchesFilter(row,column,filter,locale){const intlLocale=resolveIntlLocale(locale),value=columnValue(column,row);if(column.filterFn)return!!column.filterFn(value,filter,row);const type=column.filterType??"text";if(type==="number-range")return matchesRange(value,filter,!1);if(type==="date-range")return matchesRange(value,filter,!0);let collator;const comparison=()=>collator??=getCollator(intlLocale,{sensitivity:"base",numeric:!0});if(type==="equals")return comparison().compare(comparableText(value),comparableText(filter))===0;const needles=valuesFromFilter(filter);if(needles.length===0)return!0;const values=valuesFromCell(value);return type==="set"||type==="includes-any"?needles.some(needle=>values.some(candidate=>sameValue(candidate,needle,comparison))):type==="includes-all"?needles.every(needle=>values.some(candidate=>sameValue(candidate,needle,comparison))):comparableText(value).toLocaleLowerCase(intlLocale).includes(comparableText(filter).toLocaleLowerCase(intlLocale))}function textFilterCorpus(locale){const intlLocale=resolveIntlLocale(locale),columns=new Map;return(column,row)=>{let cells=columns.get(column);cells||(cells=new Map,columns.set(column,cells));let text=cells.get(row);return text===void 0&&(text=comparableText(columnValue(column,row)).toLocaleLowerCase(intlLocale),cells.set(row,text)),text}}function filterRows(rows,columns,filters,locale,textFor){if(filters.length===0)return[...rows];const byId=new Map(columns.map((column,index)=>[columnId(column,index),column])),predicates=filters.flatMap(filter=>{const column=byId.get(filter.id);if(!column)return[];if(!column.filterFn&&(column.filterType===void 0||column.filterType==="text")){if(valuesFromFilter(filter.value).length===0)return[_row=>!0];const intlLocale=resolveIntlLocale(locale),needle=comparableText(filter.value).toLocaleLowerCase(intlLocale);return[row=>(textFor?textFor(column,row):comparableText(columnValue(column,row)).toLocaleLowerCase(intlLocale)).includes(needle)]}if(!column.filterFn&&(column.filterType==="number-range"||column.filterType==="date-range")&&Array.isArray(filter.value)){const date=column.filterType==="date-range",read=date?value=>localCalendarDay(value)??numericDate(value):finiteValue,start=read(filter.value[0]);let end=read(filter.value[1]);if(date&&end!==void 0){const dayEnd=new Date(end);dayEnd.setHours(23,59,59,999),end=dayEnd.getTime()}return[row=>{const value=read(columnValue(column,row));return value!==void 0&&(start===void 0||value>=start)&&(end===void 0||value<=end)}]}return[row=>matchesFilter(row,column,filter.value,locale)]});return rows.filter(row=>predicates.every(predicate=>predicate(row)))}function searchHaystacks(rows,columns,locale){const intlLocale=resolveIntlLocale(locale),searchable=columns.filter(column=>(column.field||column.value)&&column.searchable!==!1);return new Map(rows.map(row=>[row,searchable.map(column=>comparableText(columnValue(column,row)).toLocaleLowerCase(intlLocale))]))}function searchRows(rows,columns,term,locale,searchFn,haystacks){const intlLocale=resolveIntlLocale(locale),needle=term.trim();if(!needle)return[...rows];const searchable=columns.filter(column=>(column.field||column.value)&&column.searchable!==!1),normalizedNeedle=searchFn?"":needle.toLocaleLowerCase(intlLocale);return!searchFn&&haystacks?rows.filter(row=>haystacks.get(row)?.some(value=>value.includes(normalizedNeedle))):rows.filter(row=>searchable.some(column=>{const value=columnValue(column,row);return searchFn?!!searchFn(value,needle,row):comparableText(value).toLocaleLowerCase(intlLocale).includes(normalizedNeedle)}))}function undefinedRank(column,left,right){const leftMissing=left==null||typeof left=="number"&&!Number.isFinite(left),rightMissing=right==null||typeof right=="number"&&!Number.isFinite(right);if(leftMissing===rightMissing)return;const policy=column.sortUndefined??"last";return leftMissing===(policy==="first"||policy===-1)?-1:1}function cellText(cell){return cell.text??=comparableText(cell.value)}function cellTime(cell){return cell.time===void 0&&(cell.time=numericDate(cell.value)??null),cell.time??void 0}function cellComparator(column,locale){const comparator=column.comparator;if(comparator)return(left,right,leftRow,rightRow)=>comparator(left.value,right.value,leftRow,rightRow);const algorithm=column.sortFn??"alphanumeric",caseSensitive=algorithm==="alphanumericCaseSensitive"||algorithm==="textCaseSensitive",numeric=algorithm==="alphanumeric"||algorithm==="alphanumericCaseSensitive";let collator;return(left,right)=>{if(algorithm==="datetime"){const leftTime=cellTime(left),rightTime=cellTime(right);if(leftTime!==void 0&&rightTime!==void 0)return leftTime-rightTime}return algorithm==="basic"&&typeof left.value=="number"&&typeof right.value=="number"?left.value-right.value:(collator??=getCollator(locale,{sensitivity:caseSensitive?"variant":"base",numeric}),collator.compare(cellText(left),cellText(right)))}}function sortRows(rows,columns,sorting,locale){if(sorting.length===0)return[...rows];const byId=new Map(columns.map((column,index)=>[columnId(column,index),column])),active=[];for(const sort of sorting){const column=byId.get(sort.id);column&&active.push({desc:sort.desc,column,compare:cellComparator(column,locale)})}return rows.map((row,index)=>({row,index,cells:active.map(({column})=>({value:columnValue(column,row)}))})).sort((left,right)=>{for(let position=0;position<active.length;position+=1){const{desc,column,compare}=active[position],leftCell=left.cells[position],rightCell=right.cells[position],missing=undefinedRank(column,leftCell.value,rightCell.value);if(missing!==void 0)return typeof(column.sortUndefined??"last")=="string"?missing:desc?-missing:missing;const compared=compare(leftCell,rightCell,left.row,right.row);if(compared!==0)return desc?-compared:compared}return left.index-right.index}).map(({row})=>row)}function aggregateValues(aggregation,rows,values){if(typeof aggregation=="function")return aggregation(rows,values);if(aggregation==="count")return rows.length;const defined=values.filter(value=>value!=null);if(aggregation==="unique")return[...new Set(defined)];if(aggregation==="uniqueCount")return new Set(defined).size;const numeric=defined.map(finiteValue).filter(value=>value!==void 0);if(numeric.length===0)return aggregation==="extent"?[]:void 0;if(aggregation==="sum"||aggregation==="mean"){let scale=0;for(const value of numeric)scale=Math.max(scale,Math.abs(value));let scaledTotal=0;if(scale>0)for(const value of numeric)scaledTotal+=value/scale;const result=scale===0?0:aggregation==="sum"?scaledTotal*scale:scaledTotal/numeric.length*scale;return Number.isFinite(result)?result:void 0}if(aggregation==="median"){const sorted=[...numeric].sort((left2,right2)=>left2-right2),middle=Math.floor(sorted.length/2);if(sorted.length%2!==0)return sorted[middle];const left=sorted[middle-1]??0,right=sorted[middle]??0,median=Math.sign(left)===Math.sign(right)?left+(right-left)/2:left/2+right/2;return Number.isFinite(median)?median:void 0}let minimum=numeric[0],maximum=minimum;for(const value of numeric)value<minimum&&(minimum=value),value>=maximum&&(maximum=value);return aggregation==="min"?minimum:aggregation==="max"?maximum:[minimum,maximum]}function csvCell(value,delimiter,escapeFormulas){let text=comparableText(value);return escapeFormulas&&typeof value!="number"&&UNSAFE_LEADING.test(text)&&(text=`'${text}`),(text.includes(delimiter)||/[\x22\r\n]/u.test(text))&&(text=`"${text.replaceAll('"','""')}"`),text}function rowsAsDelimited(rows,columns,options={}){const delimiter=options.delimiter??",",includeHeaders=options.includeHeaders??!0,escapeFormulas=options.escapeFormulas??!0,requested=options.columnIds?new Set(options.columnIds):void 0,visible=columns.filter((column,index)=>column.hidden!==!0&&(!requested||requested.has(columnId(column,index)))),lines=[];includeHeaders&&lines.push(visible.map((column,index)=>csvCell(column.label??columnId(column,index),delimiter,!1)).join(delimiter));for(const row of rows)lines.push(visible.map(column=>csvCell(columnValue(column,row),delimiter,escapeFormulas)).join(delimiter));return lines.join(`\r
2
+ `)}export{aggregateValues,columnId,columnValue,filterRows,matchesFilter,pathValue,rowsAsDelimited,searchHaystacks,searchRows,sortRows,textFilterCorpus};
@@ -9,7 +9,7 @@ import{type PropertyValues,type TemplateResult}from'lit';import{LyraElement}from
9
9
  * loading stays silent; each later transition into loading appends the localized loading text to
10
10
  * the document's shared light-DOM polite sink while the visible overlay remains non-live. Public
11
11
  * collections are clone-owned readonly snapshots. Nested rows are projected iteratively with a
12
- * 10,000-node/64-descendant-level budget and a localized limit notice. Column identities use a
12
+ * maxRows-node/64-descendant-level budget (10,000 nodes by default) and a localized limit notice. Column identities use a
13
13
  * nonblank `id`, then a nonblank `field`, then stable definition-object occurrence; blank and
14
14
  * later-duplicate identities are omitted first-wins. With `rowKey`, malformed, blank, and later
15
15
  * duplicate row identities are omitted first-wins; without it, row object occurrence is stable
@@ -33,6 +33,13 @@ import{type PropertyValues,type TemplateResult}from'lit';import{LyraElement}from
33
33
  * failure to replace the row content instead sets `error = true` from its own `lr-data-error`
34
34
  * listener.
35
35
  *
36
+ * Wide grids mount only the inline viewport plus overscan, pinned columns, and the focused column.
37
+ * Above 50 columns, CSS-resolved widths stay stable while scrolling; newly mounted content fits
38
+ * those widths. Column definitions/widths, row projection, allocation, font changes and explicit
39
+ * refresh recalculate them. Header, body and footer share these tracks.
40
+ * Expanded detail blocks remain part of their virtual row. `--max-height: none` explicitly opts
41
+ * out of row virtualization. Columns retain at most 10,000 definitions.
42
+ *
36
43
  * @customElement lr-data-grid
37
44
  * @slot empty - Content rendered when the source has no rows.
38
45
  * @slot loading - Content rendered over the grid while data is loading.
@@ -166,9 +173,9 @@ import{type PropertyValues,type TemplateResult}from'lit';import{LyraElement}from
166
173
  * @csspart sort-number - Multi-sort priority number.
167
174
  * @csspart table - Grid table wrapper.
168
175
  * @csspart toolbar - Search and column controls.
169
- * @csspart tree-limit - Localized notice rendered when nested input exceeds the 10,000-node or
176
+ * @csspart tree-limit - Localized notice rendered when nested input exceeds the maxRows node or
170
177
  * 64-descendant-level projection budget.
171
- * @csspart row-limit - Localized notice rendered when flat input exceeds 10,000 rows.
178
+ * @csspart row-limit - Localized notice rendered when flat input exceeds maxRows rows.
172
179
  * @cssprop [--accent-color=var(--lr-color-brand)] - Accent used by focus and active states.
173
180
  * @cssprop [--background-color=var(--lr-color-surface)] - Grid background.
174
181
  * @cssprop [--border-color=var(--lr-color-border)] - Border color of the grid's controls (search,
@@ -223,11 +230,18 @@ childRows:string|((row:Row)=>readonly Row[]|undefined)|null;private readonly ass
223
230
  get columnOrder():readonly string[];set columnOrder(value:readonly string[]);private readonly columnOccurrenceIds;private nextColumnOccurrenceId;private readonly rowOccurrenceIds;private nextRowOccurrenceId;private _columns;
224
231
  /** Clone-owned readonly column-definition sequence. Reassign to update.
225
232
  * @default [] */
226
- get columns():readonly DataGridColumn<Row>[];set columns(value:readonly DataGridColumn<Row>[]);private _data;
233
+ get columns():readonly DataGridColumn<Row>[];set columns(value:readonly DataGridColumn<Row>[]);
234
+ /** Maximum admitted rows, including tree descendants; bounded from 1 to 100,000.
235
+ * Set before data, then reassign data to restore previously excluded rows. */
236
+ maxRows:number;private get rowLimit();private dataAdmissionTruncated;private dataAdmissionLimit;private _data;
227
237
  /** Clone-owned readonly client rows or current server page. Row identities are preserved.
238
+ * Admission inspects at most maxRows source positions, retaining own data properties only.
239
+ * Set maxRows before assigning data; reassign the source to restore excluded rows.
228
240
  * @default [] */
229
241
  get data():readonly Row[];set data(value:readonly Row[]);
230
- /** Async server loader. Providing one enables server behavior. */
242
+ /** Async server loader. Providing one enables server behavior. A changed query aborts and
243
+ * invalidates the previous request before waiting for `filterDebounce`; stale results cannot
244
+ * replace the current query's rows, even when a loader ignores its abort signal. */
231
245
  dataSource:((request:DataGridRequest)=>Promise<DataGridResponse<Row>>)|null;private _expandedRowKeys;
232
246
  /** Clone-owned controlled expanded tree/detail/group row keys. */
233
247
  get expandedRowKeys():readonly DataGridKey[];set expandedRowKeys(value:readonly DataGridKey[]);
@@ -235,7 +249,7 @@ get expandedRowKeys():readonly DataGridKey[];set expandedRowKeys(value:readonly
235
249
  get expandedKeys():readonly DataGridKey[];set expandedKeys(value:readonly DataGridKey[]);
236
250
  /** Delay before server search/filter requests. */
237
251
  filterDebounce:number;
238
- /** Whether the client row projection omitted rows: more than 10,000 total rows (roots plus
252
+ /** Whether the client row projection omitted rows: more than maxRows total rows (roots plus
239
253
  * nested children) or nesting deeper than 64 levels. The `tree-limit` notice renders then. */
240
254
  get dataTruncated():boolean;
241
255
  /** Number of rows after client search and filters, before paging. */
@@ -338,7 +352,7 @@ withColumnsMenu:boolean;
338
352
  /** Keeps a sorted column in ascending/descending states instead of removing its sort. */
339
353
  withoutSortRemoval:boolean;
340
354
  /** Shows the global search field. */
341
- withSearch:boolean;private columnWidths;private columnVisibility;private columnPinning;private activeFilterColumn;private columnsMenuOpen;private activeColumnMenu;private liveText;private bodyScrollTop;private bodyScrollInlineOffset;private viewportHeight;private focusedRow;private focusedColumn;private dragGhost;private activeResizeColumn;private bodyElement?;private requestGeneration;private requestController?;private readonly requestDebounce;private ownsLoadingState;private resizeSession?;private readonly resizePointer;private columnDragSession?;private columnDragSequence;private managedOverlay?;private managedOverlayOwner;private lastSelectedIndex;private isMounting;private pipelineEpoch;private contentRefreshPending;private readonly pipelineMemo;private memoize;private readonly measuredItemHeights;private measuredItemOffsets;private measuredItemOffsetSignature;private measuredItemOffsetEstimate;private measuredItemOffsetsDirty;private measurementLocale;private measurementDisplaySignature;private measurementRowHeight;private measurementFontSignature;private lastMeasurementAnchor?;private measuredBodyWidth;private bodyScrollbarInlineEndGutter;private rowMeasurementObserver?;private rowMeasurementObserverOwner?;private rowMeasurementObserverBody?;private readonly observedMeasurementElements;private readonly observedMeasurementBlockSizes;private measurementUpdateQueued;private measurementScrollSyncQueued;private bodyScrollStateSyncQueued;private measurementFrame?;private expectedBodyScroll?;private pendingVirtualScroll?;private sink?;connectedCallback():void;disconnectedCallback():void;adoptedCallback():void;requestUpdate(...args:Parameters<LyraElement['requestUpdate']>):void;protected willUpdate(changed:PropertyValues<this>):void;private renderedDisplayItems?;private renderedColumns?;private restoreCellFocus;private followRovingCell;protected firstUpdated(changed:PropertyValues<this>):void;protected updated(changed:PropertyValues<this>):void;private get currentManagedOverlayOwner();private managedOverlayElements;private dismissManagedOverlay;private syncManagedOverlay;private closeComposedColumnsMenu;private openColumnsPanel;private toggleFilterPanel;private toggleColumnPanel;private announce;private get usesServerData();private get safePage();private get safePageSize();private get safeTotal();private sourceProjection;private computeSourceProjection;private get allSourceRows();private get canonicalRootRows();private sourceIndexMap;private sourceIndexFor;private canonicalRowIndex;private canonicalMembers;private get orderedColumns();private computeOrderedColumns;private get visibleColumns();private get processedClientRows();private computeProcessedClientRows;private childrenFor;private rowIdentity;private keyForRow;private renderedColumnElements;private computedToken;
355
+ withSearch:boolean;private columnWidths;private columnVisibility;private columnPinning;private activeFilterColumn;private columnsMenuOpen;private activeColumnMenu;private liveText;private bodyScrollTop;private bodyScrollInlineOffset;private viewportHeight;private focusedRow;private focusedColumn;private dragGhost;private activeResizeColumn;private bodyElement?;private requestGeneration;private requestController?;private serverRequestInputs?;private readonly requestDebounce;private ownsLoadingState;private resizeSession?;private readonly resizePointer;private columnDragSession?;private columnDragSequence;private managedOverlay?;private managedOverlayOwner;private lastSelectedIndex;private isMounting;private pipelineEpoch;private contentRefreshPending;private readonly pipelineMemo;private memoize;private readonly measuredItemHeights;private measuredOffsetTree;private measuredOffsetHeights;private measuredItemOffsetSignature;private measuredItemOffsetEstimate;private measuredItemOffsetsDirty;private measurementLocale;private measurementDisplaySignature;private measurementRowHeight;private measurementFontSignature;private measurementFontHasRendered;private lastMeasurementAnchor?;private measuredBodyWidth;private bodyScrollbarInlineEndGutter;private rowMeasurementObserver?;private rowMeasurementObserverOwner?;private rowMeasurementObserverBody?;private readonly observedMeasurementElements;private readonly observedMeasurementBlockSizes;private measurementUpdateQueued;private measurementScrollSyncQueued;private bodyScrollStateSyncQueued;private measurementFrame?;private expectedBodyScroll?;private pendingVirtualScroll?;private sink?;connectedCallback():void;disconnectedCallback():void;adoptedCallback():void;requestUpdate(...args:Parameters<LyraElement['requestUpdate']>):void;protected willUpdate(changed:PropertyValues<this>):void;private renderedDisplayItems?;private renderedColumns?;private restoreCellFocus;private followRovingCell;protected firstUpdated(changed:PropertyValues<this>):void;protected updated(changed:PropertyValues<this>):void;private get currentManagedOverlayOwner();private managedOverlayElements;private dismissManagedOverlay;private syncManagedOverlay;private closeComposedColumnsMenu;private openColumnsPanel;private toggleFilterPanel;private toggleColumnPanel;private announce;private get usesServerData();private get safePage();private get safePageSize();private get safeTotal();private sourceProjection;private computeSourceProjection;private get allSourceRows();private get canonicalRootRows();private sourceIndexMap;private sourceIndexFor;private canonicalRowIndex;private canonicalMembers;private get orderedColumns();private computeOrderedColumns;private get columnIndex();private get visibleColumns();private get processedClientRows();private get filterText();private computeProcessedClientRows;private childrenFor;private readChildren;private rowIdentity;private keyForRow;private renderedColumnElements;private computedToken;
342
356
  /** Sizes one column to its rendered header and cell contents. */
343
357
  autoSizeColumn(columnId:string):void;
344
358
  /** Sizes every visible column to its rendered contents. */
@@ -394,4 +408,4 @@ setState(state:DataGridState):void;
394
408
  * proportionally across flexible columns, preserving each column's min/max bounds. */
395
409
  sizeColumnsToFit():void;
396
410
  /** Shows or hides one column without emitting the user-only visibility event. */
397
- toggleColumn(columnId:string,visible:boolean):void;private validColumnMap;private delimitedRows;private copyAndReport;private writeClipboard;private setColumnWidth;private cancelRequestTimer;private scheduleServerRequest;private loadServerData;private get selectionEnabled();private get ariaColumnCount();private rowIsSelectable;private rowMatches;private processedChildrenFor;private hasMatchingDescendant;private get pageRows();private get currentPageSelectableRows();private computeCurrentPageSelectableRows;private groupMemberKey;private groupKey;private topLevelGroupBuckets;private computeTopLevelGroupBuckets;private groupItems;private get displayItems();private computeDisplayItems;private groupedDisplayItems;private signatureItems?;private signatureValue;private measurementSignature;private invalidateRowMeasurements;private reconcileRowMeasurementCache;private recordMeasurementRowHeight;private currentMeasurementFontSignature;private recordMeasuredBodyWidth;private syncMeasuredBodyWidth;private syncBodyScrollbarInlineEndGutter;private queueMeasurementUpdate;private queueMeasuredScrollTop;private queueBodyScrollStateSync;private scheduleMeasurementSync;private cancelMeasurementFrame;private resetRowMeasurementObserver;private syncRowMeasurementObserver;private displayItemOffsets;private displayItemOffset;private displayItemHeight;private displayItemIndexAtOffset;private captureMeasurementAnchor;private measurementAnchorAtOffset;private pendingMeasurementAnchor?;private correctMeasurementAnchor;private measureRenderedItems;private layoutBorderBoxHeight;private renderedRowAlignmentDelta;private renderedStartPrecisionDelta;private alignPendingVirtualScroll;private get resolvedRowHeight();private detailRowOffsets;private get virtualWindow();private get gridTemplate();private get bodyScrollTranslation();private columnStyle;private estimatedColumnWidth;private columnBounds;private pinOffset;private columnLabel;private columnIsSortable;private sortFor;private activateSort;private onHeaderClick;private onFilterInput;private commitFilterValue;private onClearFilterInput;private syncBodyScrollState;private onBodyScroll;private onCellClick;private emitCellContextMenu;private descendantRows;private setRowSelected;private selectCurrentPage;private emitSelection;private rowSelectionState;private toggleRowExpanded;private toggleGroupExpanded;private moveColumn;private columnCanMove;private columnCanResize;private onDragStart;private onDrop;private onResizeStart;private onResizeMove;private takeResizeSession;private restoreResizeSession;private onResizeEnd;private onResizeCancel;private onResizeKey;private renderedColumnWidth;private syncResizeHandleValues;private onPageSizeChange;private focusCell;private handleDisclosureKey;private onGridKeyDown;private setGroupSelected;private userPinColumn;private userToggleColumn;private relayEditorFocus;private relayEditorBlur;private renderToolbar;private renderColumnsMenu;private renderSelectAllHeader;private renderColumnMenu;private renderHeader;private renderCellValue;private renderExpandButton;private renderDataRow;private renderGroupRow;private onErrorRetry;private renderBodyContent;private renderFooter;private visiblePageNumbers;private renderPager;protected render():TemplateResult;}declare global{interface HTMLElementTagNameMap{'lr-data-grid':LyraDataGrid;}}
411
+ toggleColumn(columnId:string,visible:boolean):void;private validColumnMap;private delimitedRows;private copyAndReport;private writeClipboard;private setColumnWidth;private cancelRequestTimer;private currentServerRequestInputs;private matchesCurrentServerRequest;private scheduleServerRequest;private loadServerData;private get selectionEnabled();private get ariaColumnCount();private rowIsSelectable;private rowMatches;private processedChildrenFor;private hasMatchingDescendant;private get pageRows();private get currentPageSelectableRows();private computeCurrentPageSelectableRows;private groupMemberKey;private groupKey;private topLevelGroupBuckets;private computeTopLevelGroupBuckets;private groupItems;private get displayItems();private get displayIndexes();private computeDisplayItems;private groupedDisplayItems;private signatureItems?;private signatureValue;private measurementSignature;private invalidateRowMeasurements;private reconcileRowMeasurementCache;private recordMeasurementRowHeight;private currentMeasurementFontSignature;private recordMeasuredBodyWidth;private syncMeasuredBodyWidth;private syncBodyScrollbarInlineEndGutter;private queueMeasurementUpdate;private queueMeasuredScrollTop;private queueBodyScrollStateSync;private scheduleMeasurementSync;private cancelMeasurementFrame;private resetRowMeasurementObserver;private syncRowMeasurementObserver;private syncDisplayOffsets;private offsetPrefix;private updateOffsetHeight;private displayItemOffset;private displayItemHeight;private displayItemIndexAtOffset;private captureMeasurementAnchor;private measurementAnchorAtOffset;private pendingMeasurementAnchor?;private correctMeasurementAnchor;private measureRenderedItems;private measureCurrentItems;private layoutBorderBoxHeight;private renderedRowAlignmentDelta;private renderedStartPrecisionDelta;private alignPendingVirtualScroll;private geometryCycle;private resetGeometryCycle;private cycleRowHeight?;private cycleColumnEstimate?;private cycleFontSignature?;private get resolvedRowHeight();private detailRowOffsets;private get virtualWindow();private naturalColumnInputs?;private columnGeometryInputs;private sameColumnGeometry;private get gridTemplate();private computeGridTemplate;private resolvedColumnWidths?;private resolvedColumnInputs?;private syncResolvedColumnWidths;private get columnLayout();private get windowColumns();private get bodyScrollTranslation();private columnStyle;private estimatedColumnWidth;private columnBounds;private pinOffset;private columnLabel;private columnIsSortable;private sortFor;private activateSort;private onHeaderClick;private onFilterInput;private commitFilterValue;private onClearFilterInput;private syncBodyScrollState;private onBodyScroll;private onBodyCellEvent;private onCellClick;private emitCellContextMenu;private descendantRows;private setRowSelected;private selectCurrentPage;private emitSelection;private rowSelectionState;private computeRowSelectionState;private toggleRowExpanded;private toggleGroupExpanded;private moveColumn;private columnCanMove;private columnCanResize;private onDragStart;private onDrop;private onResizeStart;private onResizeMove;private takeResizeSession;private restoreResizeSession;private onResizeEnd;private onResizeCancel;private onResizeKey;private renderedColumnWidth;private syncResizeHandleValues;private onPageSizeChange;private focusCell;private handleDisclosureKey;private onGridKeyDown;private setGroupSelected;private userPinColumn;private userToggleColumn;private relayEditorFocus;private relayEditorBlur;private renderToolbar;private renderColumnsMenu;private renderSelectAllHeader;private renderColumnMenu;private renderHeader;private renderCellValue;private renderExpandButton;private renderDataRow;private renderGroupRow;private onErrorRetry;private renderBodyContent;private renderFooter;private visiblePageNumbers;private renderPager;protected render():TemplateResult;}declare global{interface HTMLElementTagNameMap{'lr-data-grid':LyraDataGrid;}}