@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 +1 @@
1
- import{iconHitTarget}from"../../../internal/interactive-control.styles.js";import{css}from"lit";import{compactContainerQuery}from"../../../internal/container-breakpoints.styles.js";import{dataStateRetryStyles,dataStateSurfaceStyles}from"../../../internal/data-state-renderer.styles.js";const styles=css` :host { --_lr-data-grid-accent-color: var(--lr-color-brand); --_lr-data-grid-background-color: var(--lr-color-surface); --_lr-data-grid-border-color: var(--lr-color-border); --_lr-data-grid-line-color: var(--lr-color-border-subtle); --_lr-data-grid-border-radius: var(--lr-radius); --_lr-data-grid-border-width: var(--lr-border-width-thin); --_lr-data-grid-cell-padding: var(--lr-space-m); --_lr-data-grid-focus-ring: var(--lr-focus-ring-width) solid var(--lr-focus-ring-color); --_lr-data-grid-header-background: var(--lr-color-surface-raised); --_lr-data-grid-header-row-height: var(--_lr-data-grid-row-height); --_lr-data-grid-header-text-color: var(--lr-color-text); --_lr-data-grid-indent-size: var(--lr-size-1-25rem); --_lr-data-grid-max-height: var(--lr-size-30rem); --_lr-data-grid-row-size: var(--lr-size-3-5rem); --_lr-data-grid-row-height: max( var(--_lr-density-target-min, 0px), calc(max(var(--lr-table-row-min-height), var(--_lr-data-grid-row-size)) * var(--_lr-density-control, 1)) ); --_lr-data-grid-row-hover-background: color-mix( in srgb, var(--accent-color, var(--_lr-data-grid-accent-color)) var(--lr-color-mix-hover), transparent ); --_lr-data-grid-selected-background: var(--lr-color-brand-quiet); --_lr-data-grid-control-hover-fill: var( --lr-data-grid-control-hover-bg, color-mix( in srgb, var(--accent-color, var(--_lr-data-grid-accent-color)) var(--lr-color-mix-hover), transparent ) ); --_lr-data-grid-control-active-fill: var( --lr-data-grid-control-active-bg, color-mix( in srgb, var(--accent-color, var(--_lr-data-grid-accent-color)) var(--lr-color-mix-active), transparent ) ); --_lr-data-grid-stripe-background: var(--lr-color-surface-raised); --_lr-data-grid-text-color: var(--lr-color-text); --_lr-data-grid-transition-duration: var(--_lr-motion-duration, var(--lr-duration-fast)); display: block; min-inline-size: 0; color: var(--text-color, var(--_lr-data-grid-text-color)); } :host([size="xs"]) { --_lr-data-grid-cell-padding: var(--lr-space-xs); --_lr-data-grid-row-size: var(--lr-size-2rem); } :host([size="s"]), :host([size="small"]) { --_lr-data-grid-cell-padding: var(--lr-space-s); --_lr-data-grid-row-size: var(--lr-size-2-5rem); } :host([size="l"]), :host([size="large"]) { --_lr-data-grid-cell-padding: var(--lr-space-l); --_lr-data-grid-row-size: var(--lr-size-4rem); } :host([size="xl"]) { --_lr-data-grid-cell-padding: var(--lr-space-2xl); --_lr-data-grid-row-size: var(--lr-size-5rem); } [part="data-grid"] { position: relative; isolation: isolate; container-type: inline-size; contain-intrinsic-inline-size: var(--lr-size-20rem); overflow: hidden; border: var(--border-width, var(--_lr-data-grid-border-width)) solid var(--lr-data-grid-line-color, var(--border-color, var(--_lr-data-grid-line-color))); border-radius: var(--border-radius, var(--lr-radius-container)); background: var(--background-color, var(--_lr-data-grid-background-color)); } :host([appearance="plain"]) [part="data-grid"] { border-color: transparent; border-radius: 0; } [part="toolbar"] { display: flex; flex-wrap: wrap; align-items: center; gap: var(--lr-space-s); padding: var(--lr-space-s); border-block-end: var(--border-width, var(--_lr-data-grid-border-width)) solid var(--lr-data-grid-line-color, var(--border-color, var(--_lr-data-grid-line-color))); } [part="tree-limit"], [part="row-limit"] { padding: var(--lr-space-s) var(--lr-space-m); border-block-start: var(--border-width, var(--_lr-data-grid-border-width)) solid var(--lr-data-grid-line-color, var(--border-color, var(--_lr-data-grid-line-color))); color: var(--lr-color-text-quiet); font-size: var(--lr-font-size-sm); } [part="search-wrapper"] { display: flex; align-items: stretch; min-inline-size: min(var(--lr-size-20rem), 100%); flex: 1 1 var(--lr-size-12rem); gap: var(--lr-space-2xs); } [part="search"] { box-sizing: border-box; flex: 1 1 auto; min-inline-size: 0; min-block-size: var(--lr-icon-button-size); padding: var(--lr-space-s) var(--lr-space-m); border: var(--border-width, var(--_lr-data-grid-border-width)) solid var(--border-color, var(--_lr-data-grid-border-color)); border-radius: var(--border-radius, var(--_lr-data-grid-border-radius)); background: var(--background-color, var(--_lr-data-grid-background-color)); color: var(--text-color, var(--_lr-data-grid-text-color)); font: inherit; } [part="search"]::placeholder { color: var(--lr-color-text-quiet); } [part="search"]::-webkit-search-cancel-button, [part="search"]::-webkit-search-decoration, [part="filter-panel"] input[type="search"]::-webkit-search-cancel-button, [part="filter-panel"] input[type="search"]::-webkit-search-decoration { appearance: none; -webkit-appearance: none; display: none; } [part="search-clear"], [part="filter-panel-clear"] { flex: 0 0 auto; display: inline-flex; align-items: center; justify-content: center; ${iconHitTarget} border: 0; border-radius: var(--border-radius, var(--_lr-data-grid-border-radius)); background: transparent; cursor: pointer; color: var(--text-color, var(--_lr-data-grid-text-color)); padding: var(--lr-space-xs); transition: background-color var(--lr-transition-fast), color var(--lr-transition-fast); } [part="search-clear"]:hover, [part="filter-panel-clear"]:hover { background: var(--_lr-data-grid-control-hover-fill); } [part="search-clear"]:active, [part="filter-panel-clear"]:active { background: var(--_lr-data-grid-control-active-fill); } [part="search-clear"]:focus-visible, [part="filter-panel-clear"]:focus-visible { outline: var(--lr-focus-ring-width) solid var(--lr-focus-ring-color); outline-offset: calc(-1 * var(--lr-focus-ring-width)); } [part="search"]:hover { border-color: var(--accent-color, var(--_lr-data-grid-accent-color)); background: var(--_lr-data-grid-control-hover-fill); } [part="search"]:active { border-color: var(--accent-color, var(--_lr-data-grid-accent-color)); background: var(--_lr-data-grid-control-active-fill); } [part="search"]:focus-visible, button:focus-visible, [part="resize-handle"]:focus-visible, [role="gridcell"]:focus-visible, [role="columnheader"]:focus-visible { outline: var(--focus-ring, var(--_lr-data-grid-focus-ring)); outline-offset: var(--lr-focus-ring-offset); } button { box-sizing: border-box; min-block-size: var(--lr-icon-button-size); min-inline-size: var(--lr-icon-button-size); padding: var(--lr-space-s); border: var(--border-width, var(--_lr-data-grid-border-width)) solid var(--border-color, var(--_lr-data-grid-border-color)); border-radius: var(--border-radius, var(--_lr-data-grid-border-radius)); background: var(--background-color, var(--_lr-data-grid-background-color)); color: var(--text-color, var(--_lr-data-grid-text-color)); font: inherit; cursor: pointer; transition: background-color var(--transition-duration, var(--_lr-data-grid-transition-duration)) var(--lr-easing-standard), border-color var(--transition-duration, var(--_lr-data-grid-transition-duration)) var(--lr-easing-standard); } button:hover:not(:disabled) { border-color: var(--accent-color, var(--_lr-data-grid-accent-color)); background: var(--_lr-data-grid-control-hover-fill); } button:active:not(:disabled) { border-color: var(--accent-color, var(--_lr-data-grid-accent-color)); background: var(--_lr-data-grid-control-active-fill); } button:disabled { cursor: not-allowed; opacity: var(--lr-opacity-disabled); } [part="column-menu"], [part="filter-panel"] { display: flex; flex-wrap: wrap; align-items: center; gap: var(--lr-space-xs); } [part~="column-menu-button"], [part~="filter-button"], [part~="pager-button"] { ${iconHitTarget} } [part="table"] { display: block; min-inline-size: 100%; } [part="header"] { position: sticky; inset-block-start: 0; z-index: var(--lr-layer-dropdown); display: grid; grid-template-columns: var(--data-grid-columns); min-inline-size: max-content; min-block-size: max(var(--lr-size-24px), var(--_lr-density-target-min, 0px), var(--header-row-height, var(--_lr-data-grid-header-row-height))); border-block-end: var(--border-width, var(--_lr-data-grid-border-width)) solid var(--lr-data-grid-line-color, var(--border-color, var(--_lr-data-grid-line-color))); background: var( --header-background, var(--_lr-data-grid-header-background) ); color: var(--header-text-color, var(--_lr-data-grid-header-text-color)); } [part~="header-cell"], [part~="cell"], [part~="footer-cell"] { box-sizing: border-box; display: flex; align-items: center; min-inline-size: 0; padding: var(--cell-padding, var(--_lr-data-grid-cell-padding)); border-inline-end: var(--border-width, var(--_lr-data-grid-border-width)) solid var(--lr-data-grid-line-color, var(--border-color, var(--_lr-data-grid-line-color))); overflow: hidden; text-align: start; } [part~="header-cell"] { position: relative; gap: var(--lr-space-xs); min-block-size: max(var(--lr-size-24px), var(--_lr-density-target-min, 0px), var(--header-row-height, var(--_lr-data-grid-header-row-height))); font-weight: var(--lr-font-weight-semibold); cursor: default; user-select: none; } [part~="header-cell"][data-sortable] { cursor: pointer; } [part~="header-cell"][data-sortable]:hover { background: var( --lr-data-grid-sortable-header-hover-bg, color-mix( in srgb, var(--accent-color, var(--_lr-data-grid-accent-color)) var(--lr-color-mix-hover), transparent ) ); } [part~="header-cell"][data-sortable]:active { background: var( --lr-data-grid-sortable-header-active-bg, color-mix( in srgb, var(--accent-color, var(--_lr-data-grid-accent-color)) var(--lr-color-mix-active), transparent ) ); } [part="body"] { position: relative; ${iconHitTarget} max-block-size: var(--max-height, var(--_lr-data-grid-max-height)); overflow: auto; overflow-anchor: none; overscroll-behavior: contain; } [part~="row"], [part="group-row"], [part="footer-row"] { display: grid; grid-template-columns: var(--data-grid-columns); min-inline-size: max-content; min-block-size: max(var(--lr-size-24px), var(--_lr-density-target-min, 0px), var(--row-height, var(--_lr-data-grid-row-height))); border-block-end: var(--border-width, var(--_lr-data-grid-border-width)) solid var(--lr-data-grid-line-color, var(--border-color, var(--_lr-data-grid-line-color))); background: var(--background-color, var(--_lr-data-grid-background-color)); transition: background-color var(--transition-duration, var(--_lr-data-grid-transition-duration)) var(--lr-easing-standard); } :host([striped]) [part~="row"]:nth-of-type(even) { --_lr-data-grid-row-fill: var( --stripe-background, var(--_lr-data-grid-stripe-background) ); background: var(--_lr-data-grid-row-fill); } [part~="row"][aria-selected="true"] { --_lr-data-grid-row-fill: var( --selected-background, var(--_lr-data-grid-selected-background) ); background: var(--_lr-data-grid-row-fill); } [part~="row"]:hover { --_lr-data-grid-row-fill: var( --row-hover-background, var(--_lr-data-grid-row-hover-background) ); background: var(--_lr-data-grid-row-fill); } [part~="row"]:active { --_lr-data-grid-row-fill: var( --lr-data-grid-row-active-bg, color-mix( in srgb, var(--accent-color, var(--_lr-data-grid-accent-color)) var(--lr-color-mix-active), transparent ) ); background: var(--_lr-data-grid-row-fill); } [part~="cell"] { min-block-size: max(var(--lr-size-24px), var(--_lr-density-target-min, 0px), var(--row-height, var(--_lr-data-grid-row-height))); color: var(--lr-data-grid-cell-color, inherit); } .row-label { display: contents; } [part~="cell"] a:where(:any-link), [part="row-detail"] a:where(:any-link) { color: var(--lr-data-grid-cell-link-color, var(--lr-color-brand)); } [part~="cell"] a:where(:any-link):hover, [part~="cell"] a:where(:any-link):focus-visible, [part~="cell"] a:where(:any-link):active, [part="row-detail"] a:where(:any-link):hover, [part="row-detail"] a:where(:any-link):focus-visible, [part="row-detail"] a:where(:any-link):active { color: var( --lr-data-grid-cell-link-hover-color, var(--lr-data-grid-cell-link-color, var(--lr-color-brand)) ); text-decoration-thickness: var(--lr-border-width-medium); } [part~="cell"][data-align="center"], [part~="header-cell"][data-align="center"] { justify-content: center; text-align: center; } [part~="cell"][data-align="right"], [part~="header-cell"][data-align="right"], [part~="cell"][data-align="end"], [part~="header-cell"][data-align="end"] { justify-content: flex-end; text-align: end; } [data-pin="left"] { position: sticky; inset-inline-start: var(--pin-offset, 0); z-index: var(--lr-layer-content); background: inherit; } [data-pin="right"] { position: sticky; inset-inline-end: var(--pin-offset, 0); z-index: var(--lr-layer-content); background: inherit; } [part~="row"] > [data-pin] { background: linear-gradient(var(--_lr-data-grid-row-fill, transparent), var(--_lr-data-grid-row-fill, transparent)), var(--background-color, var(--_lr-data-grid-background-color)); } [part="header"] > [data-pin="right"], [part="footer-row"] > [data-pin="right"] { inset-inline-end: calc( var(--pin-offset, 0px) + var(--data-grid-body-inline-end-gutter, 0px) ); } [part="header"] > :not([data-pin]), [part="footer-row"] > :not([data-pin]) { translate: var(--data-grid-scroll-translation, 0) 0; } [part="pin-indicator"] { position: absolute; inset-block: 0; inline-size: var(--border-width, var(--_lr-data-grid-border-width)); background: var(--accent-color, var(--_lr-data-grid-accent-color)); pointer-events: none; } [data-pin="left"] [part="pin-indicator"] { inset-inline-end: 0; } [data-pin="right"] [part="pin-indicator"] { inset-inline-start: 0; } [part="resize-handle"] { position: absolute; inset-block: 0; inset-inline-end: calc(var(--lr-space-xs) * -1); inline-size: var(--lr-space-l); ${iconHitTarget} cursor: col-resize; touch-action: none; } [part="resize-handle"]:hover:not(:where([data-resizing])) { background: var(--_lr-data-grid-control-hover-fill); } [part="resize-handle"]:active, [part="resize-handle"]:where([data-resizing]) { background: var(--_lr-data-grid-control-active-fill); } [part="sort-indicator"], [part="sort-number"], [part="ellipsis"], [part="group-count"] { color: var(--lr-color-text-quiet); font-size: var(--lr-font-size-sm); } [part="sort-indicator"] { display: inline-flex; transition: transform var(--transition-duration, var(--_lr-data-grid-transition-duration)) var(--lr-easing-standard); } [part="sort-indicator"][data-direction="ascending"] { transform: rotate(-90deg); } [part="sort-indicator"][data-direction="descending"] { transform: rotate(90deg); } [part="expand-button"] { margin-inline-start: calc( var(--depth, 0) * var(--indent-size, var(--_lr-data-grid-indent-size)) ); } [part="expand-button"] > span { display: inline-flex; transform: rotate(0deg); transition: transform var(--transition-duration, var(--_lr-data-grid-transition-duration)) var(--lr-easing-standard); } [part="expand-button"] > span[data-expanded="true"] { transform: rotate(90deg); } :host(:dir(rtl)) [part="expand-button"] > span { transform: rotate(180deg); } :host(:dir(rtl)) [part="expand-button"] > span[data-expanded="true"] { transform: rotate(90deg); } [part="row-detail"] { padding: var(--cell-padding, var(--_lr-data-grid-cell-padding)); border-block-end: var(--border-width, var(--_lr-data-grid-border-width)) solid var(--lr-data-grid-line-color, var(--border-color, var(--_lr-data-grid-line-color))); background: var(--lr-color-surface-raised); } [part="group-row"] { font-weight: var(--lr-font-weight-semibold); } [part="group-value"] { display: inline-flex; align-items: center; gap: var(--lr-space-s); grid-column: 1 / -1; padding: var(--cell-padding, var(--_lr-data-grid-cell-padding)); } [part="footer"] { position: sticky; inset-block-end: 0; z-index: var(--lr-layer-dropdown); background: var( --header-background, var(--_lr-data-grid-header-background) ); } [part="footer-row"] { border-block-start: var(--border-width, var(--_lr-data-grid-border-width)) solid var(--lr-data-grid-line-color, var(--border-color, var(--_lr-data-grid-line-color))); border-block-end: 0; font-weight: var(--lr-font-weight-semibold); } [part="empty"], [part="no-results"] { padding: var(--lr-space-2xl); text-align: center; color: var(--lr-color-text-quiet); } [part="loading-overlay"] { position: absolute; inset: 0; z-index: var(--lr-layer-popover); display: grid; place-items: center; min-block-size: max(var(--lr-size-24px), var(--_lr-density-target-min, 0px), var(--row-height, var(--_lr-data-grid-row-height))); padding: var(--lr-space-l); background: var(--background-color, var(--_lr-data-grid-background-color)); opacity: var(--lr-opacity-muted); } [part="pager"] { display: flex; flex-wrap: wrap; align-items: center; justify-content: flex-end; gap: var(--lr-space-xs); padding: var(--lr-space-s); border-block-start: var(--border-width, var(--_lr-data-grid-border-width)) solid var(--lr-data-grid-line-color, var(--border-color, var(--_lr-data-grid-line-color))); } .page-size-wrapper { position: relative; display: inline-flex; align-items: center; } [part="page-size"] { min-block-size: var(--lr-icon-button-size); padding-inline: var(--lr-space-s) var(--lr-space-l); border: var(--border-width, var(--_lr-data-grid-border-width)) solid var(--border-color, var(--_lr-data-grid-border-color)); border-radius: var(--border-radius, var(--_lr-data-grid-border-radius)); background: var(--background-color, var(--_lr-data-grid-background-color)); color: var(--text-color, var(--_lr-data-grid-text-color)); font: inherit; appearance: none; -webkit-appearance: none; cursor: pointer; } [part="page-size"] option { background: var(--background-color, var(--_lr-data-grid-background-color)); color: var(--text-color, var(--_lr-data-grid-text-color)); } [part="page-size"]:hover { border-color: var(--accent-color, var(--_lr-data-grid-accent-color)); background: var(--_lr-data-grid-control-hover-fill); } [part="page-size"]:active { border-color: var(--accent-color, var(--_lr-data-grid-accent-color)); background: var( --lr-data-grid-page-size-active-bg, color-mix( in srgb, var(--accent-color, var(--_lr-data-grid-accent-color)) var(--lr-color-mix-hover), transparent ) ); } [part="page-size"]:focus-visible { outline: var(--focus-ring, var(--_lr-data-grid-focus-ring)); outline-offset: var(--lr-focus-ring-offset); } .page-size-chevron { position: absolute; inset-inline-end: var(--lr-space-xs); display: inline-flex; color: var(--lr-color-text-quiet); line-height: var(--lr-line-height-none); pointer-events: none; } .page-size-chevron svg { transform: rotate(90deg); } [part="page-current"] { ${iconHitTarget} text-align: center; } [part="first-icon"], [part="previous-icon"], [part="next-icon"], [part="last-icon"] { display: inline-flex; align-items: center; justify-content: center; line-height: var(--lr-line-height-none); } [part="first-icon"] svg + svg, [part="last-icon"] svg + svg { margin-inline-start: var(--lr-size-neg-4px); } [part="first-icon"], [part="previous-icon"] { transform: rotate(180deg); } [part="next-icon"], [part="last-icon"] { transform: rotate(0deg); } :host(:dir(rtl)) [part="first-icon"], :host(:dir(rtl)) [part="previous-icon"] { transform: rotate(0deg); } :host(:dir(rtl)) [part="next-icon"], :host(:dir(rtl)) [part="last-icon"] { transform: rotate(180deg); } [part="drag-ghost"] { position: fixed; z-index: var(--lr-layer-toast); pointer-events: none; padding: var(--lr-space-s); border: var(--border-width, var(--_lr-data-grid-border-width)) solid var(--accent-color, var(--_lr-data-grid-accent-color)); border-radius: var(--border-radius, var(--_lr-data-grid-border-radius)); background: var(--background-color, var(--_lr-data-grid-background-color)); } @container ${compactContainerQuery} { [part="toolbar"] { align-items: stretch; flex-direction: column; } [part="search"] { inline-size: 100%; min-inline-size: 0; flex: 0 1 auto; } [part="pager"] { justify-content: center; } } ${dataStateSurfaceStyles("error")} ${dataStateRetryStyles} @media (prefers-reduced-motion: reduce) { button, [part~="row"], [part="sort-indicator"], [part="expand-button"] > span { transition: none !important; } } `;export{styles};
1
+ import{iconHitTarget}from"../../../internal/interactive-control.styles.js";import{css}from"lit";import{compactContainerQuery}from"../../../internal/container-breakpoints.styles.js";import{dataStateRetryStyles,dataStateSurfaceStyles}from"../../../internal/data-state-renderer.styles.js";const styles=css` :host { --_lr-data-grid-accent-color: var(--lr-color-brand); --_lr-data-grid-background-color: var(--lr-color-surface); --_lr-data-grid-border-color: var(--lr-color-border); --_lr-data-grid-line-color: var(--lr-color-border-subtle); --_lr-data-grid-border-radius: var(--lr-radius); --_lr-data-grid-border-width: var(--lr-border-width-thin); --_lr-data-grid-cell-padding: var(--lr-space-m); --_lr-data-grid-focus-ring: var(--lr-focus-ring-width) solid var(--lr-focus-ring-color); --_lr-data-grid-header-background: var(--lr-color-surface-raised); --_lr-data-grid-header-row-height: var(--_lr-data-grid-row-height); --_lr-data-grid-header-text-color: var(--lr-color-text); --_lr-data-grid-indent-size: var(--lr-size-1-25rem); --_lr-data-grid-max-height: var(--lr-size-30rem); --_lr-data-grid-row-size: var(--lr-size-3-5rem); --_lr-data-grid-row-height: max( var(--_lr-density-target-min, 0px), calc(max(var(--lr-table-row-min-height), var(--_lr-data-grid-row-size)) * var(--_lr-density-control, 1)) ); --_lr-data-grid-row-hover-background: color-mix( in srgb, var(--accent-color, var(--_lr-data-grid-accent-color)) var(--lr-color-mix-hover), transparent ); --_lr-data-grid-selected-background: var(--lr-color-brand-quiet); --_lr-data-grid-control-hover-fill: var( --lr-data-grid-control-hover-bg, color-mix( in srgb, var(--accent-color, var(--_lr-data-grid-accent-color)) var(--lr-color-mix-hover), transparent ) ); --_lr-data-grid-control-active-fill: var( --lr-data-grid-control-active-bg, color-mix( in srgb, var(--accent-color, var(--_lr-data-grid-accent-color)) var(--lr-color-mix-active), transparent ) ); --_lr-data-grid-stripe-background: var(--lr-color-surface-raised); --_lr-data-grid-text-color: var(--lr-color-text); --_lr-data-grid-transition-duration: var(--_lr-motion-duration, var(--lr-duration-fast)); display: block; min-inline-size: 0; color: var(--text-color, var(--_lr-data-grid-text-color)); } :host([size="xs"]) { --_lr-data-grid-cell-padding: var(--lr-space-xs); --_lr-data-grid-row-size: var(--lr-size-2rem); } :host([size="s"]), :host([size="small"]) { --_lr-data-grid-cell-padding: var(--lr-space-s); --_lr-data-grid-row-size: var(--lr-size-2-5rem); } :host([size="l"]), :host([size="large"]) { --_lr-data-grid-cell-padding: var(--lr-space-l); --_lr-data-grid-row-size: var(--lr-size-4rem); } :host([size="xl"]) { --_lr-data-grid-cell-padding: var(--lr-space-2xl); --_lr-data-grid-row-size: var(--lr-size-5rem); } [part="data-grid"] { position: relative; isolation: isolate; container-type: inline-size; contain-intrinsic-inline-size: var(--lr-size-20rem); overflow: hidden; border: var(--border-width, var(--_lr-data-grid-border-width)) solid var(--lr-data-grid-line-color, var(--border-color, var(--_lr-data-grid-line-color))); border-radius: var(--border-radius, var(--lr-radius-container)); background: var(--background-color, var(--_lr-data-grid-background-color)); } :host([appearance="plain"]) [part="data-grid"] { border-color: transparent; border-radius: 0; } [part="toolbar"] { display: flex; flex-wrap: wrap; align-items: center; gap: var(--lr-space-s); padding: var(--lr-space-s); border-block-end: var(--border-width, var(--_lr-data-grid-border-width)) solid var(--lr-data-grid-line-color, var(--border-color, var(--_lr-data-grid-line-color))); } [part="tree-limit"], [part="row-limit"] { padding: var(--lr-space-s) var(--lr-space-m); border-block-start: var(--border-width, var(--_lr-data-grid-border-width)) solid var(--lr-data-grid-line-color, var(--border-color, var(--_lr-data-grid-line-color))); color: var(--lr-color-text-quiet); font-size: var(--lr-font-size-sm); } [part="search-wrapper"] { display: flex; align-items: stretch; min-inline-size: min(var(--lr-size-20rem), 100%); flex: 1 1 var(--lr-size-12rem); gap: var(--lr-space-2xs); } [part="search"] { box-sizing: border-box; flex: 1 1 auto; min-inline-size: 0; min-block-size: var(--lr-icon-button-size); padding: var(--lr-space-s) var(--lr-space-m); border: var(--border-width, var(--_lr-data-grid-border-width)) solid var(--border-color, var(--_lr-data-grid-border-color)); border-radius: var(--border-radius, var(--_lr-data-grid-border-radius)); background: var(--background-color, var(--_lr-data-grid-background-color)); color: var(--text-color, var(--_lr-data-grid-text-color)); font: inherit; } [part="search"]::placeholder { color: var(--lr-color-text-quiet); } [part="search"]::-webkit-search-cancel-button, [part="search"]::-webkit-search-decoration, [part="filter-panel"] input[type="search"]::-webkit-search-cancel-button, [part="filter-panel"] input[type="search"]::-webkit-search-decoration { appearance: none; -webkit-appearance: none; display: none; } [part="search-clear"], [part="filter-panel-clear"] { flex: 0 0 auto; display: inline-flex; align-items: center; justify-content: center; ${iconHitTarget} border: 0; border-radius: var(--border-radius, var(--_lr-data-grid-border-radius)); background: transparent; cursor: pointer; color: var(--text-color, var(--_lr-data-grid-text-color)); padding: var(--lr-space-xs); transition: background-color var(--lr-transition-fast), color var(--lr-transition-fast); } [part="search-clear"]:hover, [part="filter-panel-clear"]:hover { background: var(--_lr-data-grid-control-hover-fill); } [part="search-clear"]:active, [part="filter-panel-clear"]:active { background: var(--_lr-data-grid-control-active-fill); } [part="search-clear"]:focus-visible, [part="filter-panel-clear"]:focus-visible { outline: var(--lr-focus-ring-width) solid var(--lr-focus-ring-color); outline-offset: calc(-1 * var(--lr-focus-ring-width)); } [part="search"]:hover { border-color: var(--accent-color, var(--_lr-data-grid-accent-color)); background: var(--_lr-data-grid-control-hover-fill); } [part="search"]:active { border-color: var(--accent-color, var(--_lr-data-grid-accent-color)); background: var(--_lr-data-grid-control-active-fill); } [part="search"]:focus-visible, button:focus-visible, [part="resize-handle"]:focus-visible, [role="gridcell"]:focus-visible, [role="columnheader"]:focus-visible { outline: var(--focus-ring, var(--_lr-data-grid-focus-ring)); outline-offset: var(--lr-focus-ring-offset); } button { box-sizing: border-box; min-block-size: var(--lr-icon-button-size); min-inline-size: var(--lr-icon-button-size); padding: var(--lr-space-s); border: var(--border-width, var(--_lr-data-grid-border-width)) solid var(--border-color, var(--_lr-data-grid-border-color)); border-radius: var(--border-radius, var(--_lr-data-grid-border-radius)); background: var(--background-color, var(--_lr-data-grid-background-color)); color: var(--text-color, var(--_lr-data-grid-text-color)); font: inherit; cursor: pointer; transition: background-color var(--transition-duration, var(--_lr-data-grid-transition-duration)) var(--lr-easing-standard), border-color var(--transition-duration, var(--_lr-data-grid-transition-duration)) var(--lr-easing-standard); } button:hover:not(:disabled) { border-color: var(--accent-color, var(--_lr-data-grid-accent-color)); background: var(--_lr-data-grid-control-hover-fill); } button:active:not(:disabled) { border-color: var(--accent-color, var(--_lr-data-grid-accent-color)); background: var(--_lr-data-grid-control-active-fill); } button:disabled { cursor: not-allowed; opacity: var(--lr-opacity-disabled); } [part="column-menu"], [part="filter-panel"] { display: flex; flex-wrap: wrap; align-items: center; gap: var(--lr-space-xs); } [part~="column-menu-button"], [part~="filter-button"], [part~="pager-button"] { ${iconHitTarget} } [part="table"] { display: block; min-inline-size: 100%; } [part="header"] { position: sticky; inset-block-start: 0; z-index: var(--lr-layer-dropdown); display: grid; grid-template-columns: var(--data-grid-columns); min-inline-size: max-content; min-block-size: max(var(--lr-size-24px), var(--_lr-density-target-min, 0px), var(--header-row-height, var(--_lr-data-grid-header-row-height))); border-block-end: var(--border-width, var(--_lr-data-grid-border-width)) solid var(--lr-data-grid-line-color, var(--border-color, var(--_lr-data-grid-line-color))); background: var( --header-background, var(--_lr-data-grid-header-background) ); color: var(--header-text-color, var(--_lr-data-grid-header-text-color)); } [part~="header-cell"], [part~="cell"], [part~="footer-cell"] { box-sizing: border-box; display: flex; align-items: center; min-inline-size: 0; padding: var(--cell-padding, var(--_lr-data-grid-cell-padding)); border-inline-end: var(--border-width, var(--_lr-data-grid-border-width)) solid var(--lr-data-grid-line-color, var(--border-color, var(--_lr-data-grid-line-color))); overflow: hidden; text-align: start; } [part~="header-cell"] { position: relative; gap: var(--lr-space-xs); min-block-size: max(var(--lr-size-24px), var(--_lr-density-target-min, 0px), var(--header-row-height, var(--_lr-data-grid-header-row-height))); font-weight: var(--lr-font-weight-semibold); cursor: default; user-select: none; } [part~="header-cell"][data-sortable] { cursor: pointer; } [part~="header-cell"][data-sortable]:hover { background: var( --lr-data-grid-sortable-header-hover-bg, color-mix( in srgb, var(--accent-color, var(--_lr-data-grid-accent-color)) var(--lr-color-mix-hover), transparent ) ); } [part~="header-cell"][data-sortable]:active { background: var( --lr-data-grid-sortable-header-active-bg, color-mix( in srgb, var(--accent-color, var(--_lr-data-grid-accent-color)) var(--lr-color-mix-active), transparent ) ); } [part="body"] { position: relative; ${iconHitTarget} max-block-size: var(--max-height, var(--_lr-data-grid-max-height)); overflow: auto; overflow-anchor: none; overscroll-behavior: contain; } [part="body"]:where(.column-windowed)::before { content: ''; display: grid; grid-template-columns: var(--data-grid-columns); min-inline-size: max-content; block-size: 0; } [part~="row"], [part="group-row"], [part="footer-row"] { display: grid; grid-template-columns: var(--data-grid-columns); min-inline-size: max-content; min-block-size: max(var(--lr-size-24px), var(--_lr-density-target-min, 0px), var(--row-height, var(--_lr-data-grid-row-height))); border-block-end: var(--border-width, var(--_lr-data-grid-border-width)) solid var(--lr-data-grid-line-color, var(--border-color, var(--_lr-data-grid-line-color))); background: var(--background-color, var(--_lr-data-grid-background-color)); transition: background-color var(--transition-duration, var(--_lr-data-grid-transition-duration)) var(--lr-easing-standard); } :host([striped]) [part~="row"]:nth-of-type(even) { --_lr-data-grid-row-fill: var( --stripe-background, var(--_lr-data-grid-stripe-background) ); background: var(--_lr-data-grid-row-fill); } [part~="row"][aria-selected="true"] { --_lr-data-grid-row-fill: var( --selected-background, var(--_lr-data-grid-selected-background) ); background: var(--_lr-data-grid-row-fill); } [part~="row"]:hover { --_lr-data-grid-row-fill: var( --row-hover-background, var(--_lr-data-grid-row-hover-background) ); background: var(--_lr-data-grid-row-fill); } [part~="row"]:active { --_lr-data-grid-row-fill: var( --lr-data-grid-row-active-bg, color-mix( in srgb, var(--accent-color, var(--_lr-data-grid-accent-color)) var(--lr-color-mix-active), transparent ) ); background: var(--_lr-data-grid-row-fill); } [part~="cell"] { min-block-size: max(var(--lr-size-24px), var(--_lr-density-target-min, 0px), var(--row-height, var(--_lr-data-grid-row-height))); color: var(--lr-data-grid-cell-color, inherit); } .row-label { display: contents; } [part~="cell"] a:where(:any-link), [part="row-detail"] a:where(:any-link) { color: var(--lr-data-grid-cell-link-color, var(--lr-color-brand)); } [part~="cell"] a:where(:any-link):hover, [part~="cell"] a:where(:any-link):focus-visible, [part~="cell"] a:where(:any-link):active, [part="row-detail"] a:where(:any-link):hover, [part="row-detail"] a:where(:any-link):focus-visible, [part="row-detail"] a:where(:any-link):active { color: var( --lr-data-grid-cell-link-hover-color, var(--lr-data-grid-cell-link-color, var(--lr-color-brand)) ); text-decoration-thickness: var(--lr-border-width-medium); } [part~="cell"][data-align="center"], [part~="header-cell"][data-align="center"] { justify-content: center; text-align: center; } [part~="cell"][data-align="right"], [part~="header-cell"][data-align="right"], [part~="cell"][data-align="end"], [part~="header-cell"][data-align="end"] { justify-content: flex-end; text-align: end; } [data-pin="left"] { position: sticky; inset-inline-start: var(--pin-offset, 0); z-index: var(--lr-layer-content); background: inherit; } [data-pin="right"] { position: sticky; inset-inline-end: var(--pin-offset, 0); z-index: var(--lr-layer-content); background: inherit; } [part~="row"] > [data-pin] { background: linear-gradient(var(--_lr-data-grid-row-fill, transparent), var(--_lr-data-grid-row-fill, transparent)), var(--background-color, var(--_lr-data-grid-background-color)); } [part="header"] > [data-pin="right"], [part="footer-row"] > [data-pin="right"] { inset-inline-end: calc( var(--pin-offset, 0px) + var(--data-grid-body-inline-end-gutter, 0px) ); } [part="header"] > :not([data-pin]), [part="footer-row"] > :not([data-pin]) { translate: var(--data-grid-scroll-translation, 0) 0; } [part="pin-indicator"] { position: absolute; inset-block: 0; inline-size: var(--border-width, var(--_lr-data-grid-border-width)); background: var(--accent-color, var(--_lr-data-grid-accent-color)); pointer-events: none; } [data-pin="left"] [part="pin-indicator"] { inset-inline-end: 0; } [data-pin="right"] [part="pin-indicator"] { inset-inline-start: 0; } [part="resize-handle"] { position: absolute; inset-block: 0; inset-inline-end: calc(var(--lr-space-xs) * -1); inline-size: var(--lr-space-l); ${iconHitTarget} cursor: col-resize; touch-action: none; } [part="resize-handle"]:hover:not(:where([data-resizing])) { background: var(--_lr-data-grid-control-hover-fill); } [part="resize-handle"]:active, [part="resize-handle"]:where([data-resizing]) { background: var(--_lr-data-grid-control-active-fill); } [part="sort-indicator"], [part="sort-number"], [part="ellipsis"], [part="group-count"] { color: var(--lr-color-text-quiet); font-size: var(--lr-font-size-sm); } [part="sort-indicator"] { display: inline-flex; transition: transform var(--transition-duration, var(--_lr-data-grid-transition-duration)) var(--lr-easing-standard); } [part="sort-indicator"][data-direction="ascending"] { transform: rotate(-90deg); } [part="sort-indicator"][data-direction="descending"] { transform: rotate(90deg); } [part="expand-button"] { margin-inline-start: calc( var(--depth, 0) * var(--indent-size, var(--_lr-data-grid-indent-size)) ); } [part="expand-button"] > span { display: inline-flex; transform: rotate(0deg); transition: transform var(--transition-duration, var(--_lr-data-grid-transition-duration)) var(--lr-easing-standard); } [part="expand-button"] > span[data-expanded="true"] { transform: rotate(90deg); } :host(:dir(rtl)) [part="expand-button"] > span { transform: rotate(180deg); } :host(:dir(rtl)) [part="expand-button"] > span[data-expanded="true"] { transform: rotate(90deg); } [part="row-detail"] { padding: var(--cell-padding, var(--_lr-data-grid-cell-padding)); border-block-end: var(--border-width, var(--_lr-data-grid-border-width)) solid var(--lr-data-grid-line-color, var(--border-color, var(--_lr-data-grid-line-color))); background: var(--lr-color-surface-raised); } [part="group-row"] { font-weight: var(--lr-font-weight-semibold); } [part="group-value"] { display: inline-flex; align-items: center; gap: var(--lr-space-s); grid-column: 1 / -1; padding: var(--cell-padding, var(--_lr-data-grid-cell-padding)); } [part="footer"] { position: sticky; inset-block-end: 0; z-index: var(--lr-layer-dropdown); background: var( --header-background, var(--_lr-data-grid-header-background) ); } [part="footer-row"] { border-block-start: var(--border-width, var(--_lr-data-grid-border-width)) solid var(--lr-data-grid-line-color, var(--border-color, var(--_lr-data-grid-line-color))); border-block-end: 0; font-weight: var(--lr-font-weight-semibold); } [part="empty"], [part="no-results"] { padding: var(--lr-space-2xl); text-align: center; color: var(--lr-color-text-quiet); } [part="loading-overlay"] { position: absolute; inset: 0; z-index: var(--lr-layer-popover); display: grid; place-items: center; min-block-size: max(var(--lr-size-24px), var(--_lr-density-target-min, 0px), var(--row-height, var(--_lr-data-grid-row-height))); padding: var(--lr-space-l); background: var(--background-color, var(--_lr-data-grid-background-color)); opacity: var(--lr-opacity-muted); } [part="pager"] { display: flex; flex-wrap: wrap; align-items: center; justify-content: flex-end; gap: var(--lr-space-xs); padding: var(--lr-space-s); border-block-start: var(--border-width, var(--_lr-data-grid-border-width)) solid var(--lr-data-grid-line-color, var(--border-color, var(--_lr-data-grid-line-color))); } .page-size-wrapper { position: relative; display: inline-flex; align-items: center; } [part="page-size"] { min-block-size: var(--lr-icon-button-size); padding-inline: var(--lr-space-s) var(--lr-space-l); border: var(--border-width, var(--_lr-data-grid-border-width)) solid var(--border-color, var(--_lr-data-grid-border-color)); border-radius: var(--border-radius, var(--_lr-data-grid-border-radius)); background: var(--background-color, var(--_lr-data-grid-background-color)); color: var(--text-color, var(--_lr-data-grid-text-color)); font: inherit; appearance: none; -webkit-appearance: none; cursor: pointer; } [part="page-size"] option { background: var(--background-color, var(--_lr-data-grid-background-color)); color: var(--text-color, var(--_lr-data-grid-text-color)); } [part="page-size"]:hover { border-color: var(--accent-color, var(--_lr-data-grid-accent-color)); background: var(--_lr-data-grid-control-hover-fill); } [part="page-size"]:active { border-color: var(--accent-color, var(--_lr-data-grid-accent-color)); background: var( --lr-data-grid-page-size-active-bg, color-mix( in srgb, var(--accent-color, var(--_lr-data-grid-accent-color)) var(--lr-color-mix-hover), transparent ) ); } [part="page-size"]:focus-visible { outline: var(--focus-ring, var(--_lr-data-grid-focus-ring)); outline-offset: var(--lr-focus-ring-offset); } .page-size-chevron { position: absolute; inset-inline-end: var(--lr-space-xs); display: inline-flex; color: var(--lr-color-text-quiet); line-height: var(--lr-line-height-none); pointer-events: none; } .page-size-chevron svg { transform: rotate(90deg); } [part="page-current"] { ${iconHitTarget} text-align: center; } [part="first-icon"], [part="previous-icon"], [part="next-icon"], [part="last-icon"] { display: inline-flex; align-items: center; justify-content: center; line-height: var(--lr-line-height-none); } [part="first-icon"] svg + svg, [part="last-icon"] svg + svg { margin-inline-start: var(--lr-size-neg-4px); } [part="first-icon"], [part="previous-icon"] { transform: rotate(180deg); } [part="next-icon"], [part="last-icon"] { transform: rotate(0deg); } :host(:dir(rtl)) [part="first-icon"], :host(:dir(rtl)) [part="previous-icon"] { transform: rotate(0deg); } :host(:dir(rtl)) [part="next-icon"], :host(:dir(rtl)) [part="last-icon"] { transform: rotate(180deg); } [part="drag-ghost"] { position: fixed; z-index: var(--lr-layer-toast); pointer-events: none; padding: var(--lr-space-s); border: var(--border-width, var(--_lr-data-grid-border-width)) solid var(--accent-color, var(--_lr-data-grid-accent-color)); border-radius: var(--border-radius, var(--_lr-data-grid-border-radius)); background: var(--background-color, var(--_lr-data-grid-background-color)); } @container ${compactContainerQuery} { [part="toolbar"] { align-items: stretch; flex-direction: column; } [part="search"] { inline-size: 100%; min-inline-size: 0; flex: 0 1 auto; } [part="pager"] { justify-content: center; } } ${dataStateSurfaceStyles("error")} ${dataStateRetryStyles} @media (prefers-reduced-motion: reduce) { button, [part~="row"], [part="sort-indicator"], [part="expand-button"] > span { transition: none !important; } } `;export{styles};
@@ -1,4 +1,4 @@
1
- import type{LyraEventDetailSnapshot}from'../../../internal/lyra-element.js';import{type PropertyValues,type TemplateResult}from'lit';import{LyraElement}from'../../../internal/lyra-element.js';import type{DocumentRef}from'../../../ai/types.js';import type{TableSortDirection}from'../table/table.class.js';import{type LyraSize}from'../../../internal/variants.js';
1
+ import type{LyraPageSource}from'../../../data-sources.js';import type{LyraEventDetailSnapshot}from'../../../internal/lyra-element.js';import{type PropertyValues,type TemplateResult}from'lit';import{LyraElement}from'../../../internal/lyra-element.js';import type{DocumentRef}from'../../../ai/types.js';import type{TableSortDirection}from'../table/table.class.js';import{type LyraSize}from'../../../internal/variants.js';
2
2
  /** How recently a document's content was verified/updated, consumer-computed (this component
3
3
  * performs no staleness calculation of its own -- it only renders whichever bucket the host
4
4
  * already assigned). Ordered fresh -> aging -> stale for `freshness`-column sorting. */
@@ -17,7 +17,9 @@ tags?:readonly string[];owner?:string;
17
17
  /** Last-updated timestamp. `Date | string` (ISO-8601), matching `ChatMessage.timestamp`. */
18
18
  updatedAt?:Date|string;freshness?:LibraryDocumentFreshness;}
19
19
  /** Column keys `sortKey` accepts. Not every column is sortable (`type`/`tags`/`select` are not). */
20
- export type LibraryDocumentSortKey='name'|'version'|'owner'|'freshness'|'updatedAt';export interface DocumentLibraryFilterChangeDetail{readonly searchTerm:string;readonly tags:readonly string[];readonly matchCount:number;}export interface DocumentLibrarySortRequestDetail{readonly phase:'request';readonly sortKey:LibraryDocumentSortKey;readonly sortDir:TableSortDirection;}export interface DocumentLibrarySortCommitDetail{readonly phase:'commit';readonly sortKey:LibraryDocumentSortKey;readonly sortDir:TableSortDirection;}
20
+ export type LibraryDocumentSortKey='name'|'version'|'owner'|'freshness'|'updatedAt';
21
+ /** Full-source document query; tags use AND semantics and filter receives folded search text. */
22
+ export interface DocumentLibrarySourceQuery{readonly searchTerm:string;readonly tagFilter:readonly string[];readonly sortKey:LibraryDocumentSortKey;readonly sortDir:'asc'|'desc';readonly filter:LyraDocumentLibrary['filter'];}export type DocumentLibrarySource=LyraPageSource<LibraryDocument,DocumentLibrarySourceQuery>;export interface DocumentLibraryFilterChangeDetail{readonly searchTerm:string;readonly tags:readonly string[];readonly matchCount:number;}export interface DocumentLibrarySortRequestDetail{readonly phase:'request';readonly sortKey:LibraryDocumentSortKey;readonly sortDir:TableSortDirection;}export interface DocumentLibrarySortCommitDetail{readonly phase:'commit';readonly sortKey:LibraryDocumentSortKey;readonly sortDir:TableSortDirection;}
21
23
  /** Canonical request/commit sort transaction detail. */
22
24
  export type DocumentLibrarySortDetail=DocumentLibrarySortRequestDetail|DocumentLibrarySortCommitDetail;export interface DocumentLibrarySelectionChangeDetail{readonly documentIds:readonly string[];}export interface DocumentLibraryOpenDetail{readonly documentId:string;}export interface LyraDocumentLibraryEventMap{'lr-filter-change':CustomEvent<LyraEventDetailSnapshot<DocumentLibraryFilterChangeDetail>>;'lr-sort-request':CustomEvent<DocumentLibrarySortRequestDetail>;'lr-sort':CustomEvent<DocumentLibrarySortCommitDetail>;'lr-selection-change':CustomEvent<LyraEventDetailSnapshot<DocumentLibrarySelectionChangeDetail>>;'lr-open':CustomEvent<DocumentLibraryOpenDetail>;
23
25
  /** Cancelable retry proposal. The default action clears the parent and nested table error. */
@@ -63,6 +65,21 @@ export type DocumentLibrarySortDetail=DocumentLibrarySortRequestDetail|DocumentL
63
65
  * `error`/`errorHeading`/`errorDescription` to the nested table but owns the retry commit itself,
64
66
  * the same intercept-and-re-propose shape `onTableSortRequest` already uses for sort.
65
67
  *
68
+ * Tag facets show the first 500 locale-sorted distinct tags, with a localized count of omitted tags.
69
+ * Search and filtering continue to use the complete admitted inventory.
70
+ *
71
+ * With dataSource, the provider owns global filtering (AND tags), ordering and catalogue facets.
72
+ * Source pages contain at most 500 rows; sourceTotal is the exact current-query total. Provider
73
+ * records have at most 500 tags and 65,536 total display-text UTF-16 units per record. Source row
74
+ * tags render as complete text lists, keeping tag-cell DOM bounded independently of tag count. Invalid
75
+ * rows, keys, totals or missing facets fail visibly. Query callbacks are forwarded to the provider.
76
+ * Page select-all selects only the loaded page and preserves off-page selected IDs. Up to 10,000
77
+ * selected IDs resolve in batches of 500; pending lookup disables selection changes. Only global
78
+ * lookup absence prunes IDs, and only unavailableSelected prunes controlled tag filters. Source
79
+ * replacement, explicit refresh and teardown revoke old work; ordinary named paints reuse it.
80
+ *
81
+ * @csspart selection-status - Provider selection loading/error text.
82
+ * @csspart selection-retry - Retry the current provider selection lookup.
66
83
  * @customElement lr-document-library
67
84
  * @event lr-filter-change - The search term or tag facet changed. Frozen readonly
68
85
  * `detail: { searchTerm, tags, matchCount }`.
@@ -87,6 +104,7 @@ export type DocumentLibrarySortDetail=DocumentLibrarySortRequestDetail|DocumentL
87
104
  * @csspart search - The `<lr-input>` search field.
88
105
  * @csspart tag-filter - The `<lr-combobox>` tag facet filter. Only rendered while at least one
89
106
  * document declares a `tags` entry.
107
+ * @csspart limit - The count of distinct tags omitted from the facet.
90
108
  * @csspart selection-bar - The ordinary, non-live "N selected" / "Clear selection" bar. Only
91
109
  * rendered while `selectedDocumentIds` is non-empty; selection announcements use the shared light-DOM
92
110
  * polite sink.
@@ -110,7 +128,16 @@ export type DocumentLibrarySortDetail=DocumentLibrarySortRequestDetail|DocumentL
110
128
  * @status stable
111
129
  * @since 4.1.0
112
130
  */
113
- export declare class LyraDocumentLibrary extends LyraElement<LyraDocumentLibraryEventMap>{static styles:import("lit").CSSResultGroup[];protected static collectionSupport:import("../../../internal/lyra-element.js").LyraCollectionSupport;protected static readonly immutableEventDetails:readonly string[];private _documents;
131
+ export declare class LyraDocumentLibrary extends LyraElement<LyraDocumentLibraryEventMap>{static styles:import("lit").CSSResultGroup[];protected static collectionSupport:import("../../../internal/lyra-element.js").LyraCollectionSupport;protected static readonly immutableEventDetails:readonly string[];private sourceStateVersion;private _dataSource?;private sourceEpoch;private sourceSyncing;private sourceInputs?;private sourceQueryInputs?;private sourceFailure;private sourceResult?;private sourceRows;private sourceTags;private sourceFacetLabels;private sourceSelectionInputs?;private sourceSelectionEvent?;private sourceLifecycleVersion;private sourceFilterEvent;private sourceSelectionAnnouncement;private readonly sourcePages;
132
+ /** Host-owned full-source pages. Takes precedence over documents, including when invalid.
133
+ * Reassign the same provider or call requestUpdate() to refresh; undefined restores documents. */
134
+ get dataSource():DocumentLibrarySource|undefined;set dataSource(value:DocumentLibrarySource|undefined);
135
+ /** Zero-based provider page; legacy table paging is unchanged. */
136
+ sourcePage:number;
137
+ /** Provider rows per page, normalized to 1..500. */
138
+ sourcePageSize:number;
139
+ /** Exact current-query total, or null while pending, invalid or outside provider mode. */
140
+ get sourceTotal():number|null;private get sourceMode();private get sourceBlocked();private get sourceSelectionBlocked();private projectSourceDocument;private syncSource;private syncSourceSelection;private acceptSourcePage;private onSourcePage;private _documents;
114
141
  /** Clone-owned readonly inventory, bounded to the first 10,000 source documents and 10,000 tags
115
142
  * per document. Document records, nested tag arrays, and dates are snapshotted at assignment
116
143
  * time; records without a string name or with non-string tag entries, blank ids, and later
@@ -152,4 +179,4 @@ get size():LyraSize|undefined;set size(next:LyraSize|undefined);
152
179
  /** Accessible name for the region and the inner grid. Defaults to the localized
153
180
  * `documentLibraryLabel` when unset. An explicitly empty string renders as an empty label
154
181
  * rather than falling back. */
155
- label?:string;private readonly announcements;adoptedCallback():void;private snapshotDocuments;private snapshotIds;protected willUpdate(changed:PropertyValues):void;private selectionCountText;private normalizeDate;private defaultFilter;private matchesTagFilter;private compareDocuments;private get matchingDocuments();private tagsMemo?;private get allTags();private selectedMemo?;private get selectedIdSet();private emitFilterChange;private onSearchInput;private onTagFilterChange;private isSortKey;private onTableSortRequest;private onTableSortCommit;private stopOwnedEvent;private onTableSelectionChange;private openDocument;private setSelected;private toggleSelection;private toggleSelectAll;private clearSelection;private freshnessLabel;private renderSelectAllCheckbox;private renderRowCheckbox;private renderNameCell;private renderTagsCell;private renderFreshnessCell;private renderUpdatedCell;private buildColumns;render():TemplateResult;}declare global{interface HTMLElementTagNameMap{'lr-document-library':LyraDocumentLibrary;}}
182
+ label?:string;private readonly announcements;connectedCallback():void;private invalidateSourceSelection;disconnectedCallback():void;adoptedCallback():void;private sourceAnnouncementInitialized;protected updated(changed:PropertyValues):void;private snapshotDocuments;private snapshotIds;private explicitRefresh;requestUpdate(...args:Parameters<LyraElement['requestUpdate']>):void;protected willUpdate(changed:PropertyValues):void;private selectionCountText;private normalizeDate;private corpusMemo?;private defaultFilter;private readonly documentTags;private matchesTagFilter;private readonly documentDates;private documentDate;private sortCollator?;private compareDocuments;private matchingMemo?;private get matchingDocuments();private sortedMemo?;private get sortedDocuments();private tagsMemo?;private get allTags();private get tagSet();private selectedMemo?;private get selectedIdSet();private emitFilterChange;private onSearchInput;private onTagFilterChange;private isSortKey;private onTableSortRequest;private onTableSortCommit;private stopOwnedEvent;private onTableSelectionChange;private openDocument;private setSelected;private toggleSelection;private toggleSelectAll;private clearSelection;private freshnessLabel;private renderSelectAllCheckbox;private renderRowCheckbox;private renderNameCell;private renderTagsCell;private renderFreshnessCell;private renderUpdatedCell;private columnsMemo?;private buildColumns;private createColumns;private tagOptionsMemo?;private renderTagOptions;render():TemplateResult;}declare global{interface HTMLElementTagNameMap{'lr-document-library':LyraDocumentLibrary;}}
@@ -1,7 +1,8 @@
1
- import{__decorate}from"tslib";import{SlotPresenceController}from"../../../internal/slot-presence-controller.js";import{eventCollectionSupport}from"../../../internal/collection-snapshot.js";import{html,nothing}from"lit";import{property}from"lit/decorators.js";import{LyraElement}from"../../../internal/lyra-element.js";import{createRetryForwarder}from"../../../internal/retry-forwarder.js";import{hostAriaLabel}from"../../../internal/a11y.js";import{getCollator,getDateTimeFormat,getNumberFormat}from"../../../internal/intl-cache.js";import{getOwnDataDescriptor,MISSING_OWN_DATA_DESCRIPTOR,UNSAFE_OWN_DATA_DESCRIPTOR}from"../../../internal/data-descriptors.js";import{AnnouncementSinkController}from"../../../internal/announcer.js";import{styles}from"./document-library.styles.js";import{normalizeReflectedOptionalSize,optionalSizeConverter}from"../../../internal/variants.js";import{LYRA_DEFAULT_documentLibraryClearSelection,LYRA_DEFAULT_documentLibraryEmptyHeading,LYRA_DEFAULT_documentLibraryFilterByTag,LYRA_DEFAULT_documentLibraryFreshnessAging,LYRA_DEFAULT_documentLibraryFreshnessColumn,LYRA_DEFAULT_documentLibraryFreshnessFresh,LYRA_DEFAULT_documentLibraryFreshnessStale,LYRA_DEFAULT_documentLibraryLabel,LYRA_DEFAULT_documentLibraryNameColumn,LYRA_DEFAULT_documentLibraryNoMatchesHeading,LYRA_DEFAULT_documentLibraryOwnerColumn,LYRA_DEFAULT_documentLibrarySearchPlaceholder,LYRA_DEFAULT_documentLibrarySelectAll,LYRA_DEFAULT_documentLibrarySelectColumn,LYRA_DEFAULT_documentLibrarySelectDocument,LYRA_DEFAULT_documentLibrarySelectedCount,LYRA_DEFAULT_documentLibraryTagsColumn,LYRA_DEFAULT_documentLibraryTypeColumn,LYRA_DEFAULT_documentLibraryUpdatedColumn,LYRA_DEFAULT_documentLibraryVersionColumn}from"../../../internal/default-strings/data.generated.js";const FRESHNESS_RANK={fresh:0,aging:1,stale:2},MAX_LIBRARY_COLLECTION_ENTRIES=1e4,INVALID_DOCUMENT_DATE=Symbol("invalid-document-date"),FRESHNESS_TONE={fresh:"success",aging:"warning",stale:"danger"};function projectLibraryStringArray(value){try{if(!Array.isArray(value))return;const length=getOwnDataDescriptor(value,"length");if(length===MISSING_OWN_DATA_DESCRIPTOR||length===UNSAFE_OWN_DATA_DESCRIPTOR||typeof length.value!="number"||!Number.isSafeInteger(length.value)||length.value<0)return;const tags=[];for(let index=0;index<Math.min(length.value,MAX_LIBRARY_COLLECTION_ENTRIES);index+=1){const entry=getOwnDataDescriptor(value,String(index));if(entry===MISSING_OWN_DATA_DESCRIPTOR||entry===UNSAFE_OWN_DATA_DESCRIPTOR||typeof entry.value!="string")return;tags.push(entry.value)}return Object.freeze(tags)}catch{return}}function projectLibraryDate(value){if(typeof value=="string")return value;if(typeof value=="number")return new Date(value);try{return new Date(Date.prototype.getTime.call(value))}catch{return INVALID_DOCUMENT_DATE}}function projectLibraryDocument(candidate){try{if(candidate===null||typeof candidate!="object"||Array.isArray(candidate))return;const id=getOwnDataDescriptor(candidate,"id"),name=getOwnDataDescriptor(candidate,"name"),mimeType=getOwnDataDescriptor(candidate,"mimeType"),uri=getOwnDataDescriptor(candidate,"uri"),version=getOwnDataDescriptor(candidate,"version"),tags=getOwnDataDescriptor(candidate,"tags"),owner=getOwnDataDescriptor(candidate,"owner"),updatedAt=getOwnDataDescriptor(candidate,"updatedAt"),freshness=getOwnDataDescriptor(candidate,"freshness");if(id===MISSING_OWN_DATA_DESCRIPTOR||id===UNSAFE_OWN_DATA_DESCRIPTOR||name===MISSING_OWN_DATA_DESCRIPTOR||name===UNSAFE_OWN_DATA_DESCRIPTOR||mimeType===UNSAFE_OWN_DATA_DESCRIPTOR||uri===UNSAFE_OWN_DATA_DESCRIPTOR||version===UNSAFE_OWN_DATA_DESCRIPTOR||tags===UNSAFE_OWN_DATA_DESCRIPTOR||owner===UNSAFE_OWN_DATA_DESCRIPTOR||updatedAt===UNSAFE_OWN_DATA_DESCRIPTOR||freshness===UNSAFE_OWN_DATA_DESCRIPTOR||typeof id.value!="string"||id.value.trim().length===0||typeof name.value!="string")return;const mimeTypeValue=mimeType===MISSING_OWN_DATA_DESCRIPTOR?void 0:mimeType.value,uriValue=uri===MISSING_OWN_DATA_DESCRIPTOR?void 0:uri.value,versionValue=version===MISSING_OWN_DATA_DESCRIPTOR?void 0:version.value,ownerValue=owner===MISSING_OWN_DATA_DESCRIPTOR?void 0:owner.value,freshnessValue=freshness===MISSING_OWN_DATA_DESCRIPTOR?void 0:freshness.value;if(mimeTypeValue!==void 0&&typeof mimeTypeValue!="string"||uriValue!==void 0&&typeof uriValue!="string"||versionValue!==void 0&&typeof versionValue!="string"||ownerValue!==void 0&&typeof ownerValue!="string"||freshnessValue!==void 0&&freshnessValue!=="fresh"&&freshnessValue!=="aging"&&freshnessValue!=="stale")return;const tagsValue=tags===MISSING_OWN_DATA_DESCRIPTOR?void 0:tags.value,tagValues=tagsValue===void 0?void 0:projectLibraryStringArray(tagsValue);if(tagsValue!==void 0&&!tagValues)return;const updatedAtValue=updatedAt===MISSING_OWN_DATA_DESCRIPTOR||updatedAt.value===void 0?void 0:projectLibraryDate(updatedAt.value);return updatedAtValue===INVALID_DOCUMENT_DATE?void 0:Object.freeze({id:id.value,name:name.value,...mimeTypeValue===void 0?{}:{mimeType:mimeTypeValue},...uriValue===void 0?{}:{uri:uriValue},...versionValue===void 0?{}:{version:versionValue},...tagValues===void 0?{}:{tags:tagValues},...ownerValue===void 0?{}:{owner:ownerValue},...updatedAtValue===void 0?{}:{updatedAt:updatedAtValue},...freshnessValue===void 0?{}:{freshness:freshnessValue}})}catch{return}}class LyraDocumentLibrary extends LyraElement{constructor(){super(...arguments),this._documents=Object.freeze([]),this._selectedDocumentIds=Object.freeze([]),this._tagFilter=Object.freeze([]),this.sortKey="name",this.sortDir="asc",this.searchTerm="",this.loading=!1,this.error=!1,this.errorDescription="",this.slotPresence=new SlotPresenceController(this,{observeLightDom:!0}),this.onTableRetry=createRetryForwarder(init=>this.emit("lr-retry-request",null,init),()=>{this.error=!1}),this.announcements=new AnnouncementSinkController(this,{eager:["polite"]}),this.defaultFilter=(document,query)=>{const locale=this.effectiveLocale;return[document.name,document.owner??"",...document.tags??[]].some(value=>value.toLocaleLowerCase(locale).includes(query))},this.compareDocuments=(a,b)=>{const collator=getCollator(this.effectiveLocale,{numeric:!0}),dir=this.sortDir==="asc"?1:-1;let result=0;switch(this.sortKey){case"name":result=collator.compare(a.name,b.name);break;case"version":result=collator.compare(a.version??"",b.version??"");break;case"owner":result=collator.compare(a.owner??"",b.owner??"");break;case"freshness":result=(a.freshness?FRESHNESS_RANK[a.freshness]:3)-(b.freshness?FRESHNESS_RANK[b.freshness]:3);break;case"updatedAt":result=(this.normalizeDate(a.updatedAt)?.getTime()??0)-(this.normalizeDate(b.updatedAt)?.getTime()??0);break}return result*dir},this.onSearchInput=event=>{event.stopPropagation(),this.searchTerm=event.detail.value,this.emitFilterChange()},this.onTagFilterChange=event=>{event.stopPropagation();const combobox=event.target;this.tagFilter=Array.isArray(combobox.value)?combobox.value:[],this.emitFilterChange()},this.onTableSortRequest=event=>{if(event.stopPropagation(),!this.isSortKey(event.detail.sortKey)){event.preventDefault();return}const detail=Object.freeze({phase:"request",sortKey:event.detail.sortKey,sortDir:event.detail.sortDir});this.emit("lr-sort-request",detail,{cancelable:!0}).defaultPrevented&&event.preventDefault()},this.onTableSortCommit=event=>{event.stopPropagation(),this.isSortKey(event.detail.sortKey)&&(this.sortKey=event.detail.sortKey,this.sortDir=event.detail.sortDir,this.emit("lr-sort",Object.freeze({phase:"commit",sortKey:this.sortKey,sortDir:this.sortDir})))},this.stopOwnedEvent=event=>{event.stopPropagation()},this.onTableSelectionChange=event=>{event.stopPropagation();const table=event.currentTarget;table.selectedRowKeys=new Set(this.selectedDocumentIds)},this.clearSelection=()=>{this.setSelected([])}}static{this.defaultStrings={...super.defaultStrings,documentLibraryClearSelection:LYRA_DEFAULT_documentLibraryClearSelection,documentLibraryEmptyHeading:LYRA_DEFAULT_documentLibraryEmptyHeading,documentLibraryFilterByTag:LYRA_DEFAULT_documentLibraryFilterByTag,documentLibraryFreshnessAging:LYRA_DEFAULT_documentLibraryFreshnessAging,documentLibraryFreshnessColumn:LYRA_DEFAULT_documentLibraryFreshnessColumn,documentLibraryFreshnessFresh:LYRA_DEFAULT_documentLibraryFreshnessFresh,documentLibraryFreshnessStale:LYRA_DEFAULT_documentLibraryFreshnessStale,documentLibraryLabel:LYRA_DEFAULT_documentLibraryLabel,documentLibraryNameColumn:LYRA_DEFAULT_documentLibraryNameColumn,documentLibraryNoMatchesHeading:LYRA_DEFAULT_documentLibraryNoMatchesHeading,documentLibraryOwnerColumn:LYRA_DEFAULT_documentLibraryOwnerColumn,documentLibrarySearchPlaceholder:LYRA_DEFAULT_documentLibrarySearchPlaceholder,documentLibrarySelectAll:LYRA_DEFAULT_documentLibrarySelectAll,documentLibrarySelectColumn:LYRA_DEFAULT_documentLibrarySelectColumn,documentLibrarySelectDocument:LYRA_DEFAULT_documentLibrarySelectDocument,documentLibrarySelectedCount:LYRA_DEFAULT_documentLibrarySelectedCount,documentLibraryTagsColumn:LYRA_DEFAULT_documentLibraryTagsColumn,documentLibraryTypeColumn:LYRA_DEFAULT_documentLibraryTypeColumn,documentLibraryUpdatedColumn:LYRA_DEFAULT_documentLibraryUpdatedColumn,documentLibraryVersionColumn:LYRA_DEFAULT_documentLibraryVersionColumn}}static{this.styles=[LyraElement.styles,styles]}static{this.collectionSupport=eventCollectionSupport}static{this.immutableEventDetails=Object.freeze(["lr-filter-change","lr-selection-change"])}get documents(){return this.documentsView??=this.snapshotDocuments(this._documents)}set documents(value){if(value===this.documentsSource||value===this.documentsView)return;this.documentsSource=value;const previous=this._documents;this._documents=this.snapshotDocuments(value),this.documentsView=void 0,this.requestUpdate("documents",previous)}get selectedDocumentIds(){return this._selectedDocumentIds}set selectedDocumentIds(value){if(value===this.selectionSource||value===this._selectedDocumentIds)return;this.selectionSource=value;const previous=this._selectedDocumentIds;this._selectedDocumentIds=this.snapshotIds(Array.isArray(value)?value:[]),this.requestUpdate("selectedDocumentIds",previous)}get tagFilter(){return this._tagFilter}set tagFilter(value){if(value===this.tagFilterSource||value===this._tagFilter)return;this.tagFilterSource=value;const previous=this._tagFilter;this._tagFilter=this.snapshotIds(Array.isArray(value)?value:[]),this.requestUpdate("tagFilter",previous)}get hasErrorSlot(){return this.slotPresence.has("error")}get size(){return this._size}set size(next){const normalized=normalizeReflectedOptionalSize(this,next),old=this._size;old!==normalized&&(this._size=normalized,this.requestUpdate("size",old))}adoptedCallback(){super.adoptedCallback(),this.announcements.adopted()}snapshotDocuments(documents){const snapshot=[],seen=new Set;try{if(!Array.isArray(documents))return Object.freeze(snapshot);const length=getOwnDataDescriptor(documents,"length");if(length===MISSING_OWN_DATA_DESCRIPTOR||length===UNSAFE_OWN_DATA_DESCRIPTOR||typeof length.value!="number"||!Number.isSafeInteger(length.value)||length.value<0)return Object.freeze(snapshot);for(let index=0;index<Math.min(length.value,MAX_LIBRARY_COLLECTION_ENTRIES);index+=1){const entry=getOwnDataDescriptor(documents,String(index));if(entry===MISSING_OWN_DATA_DESCRIPTOR||entry===UNSAFE_OWN_DATA_DESCRIPTOR)continue;const document=projectLibraryDocument(entry.value);!document||seen.has(document.id)||(seen.add(document.id),snapshot.push(document))}}catch{}return Object.freeze(snapshot)}snapshotIds(ids){const snapshot=[],seen=new Set;try{for(const id of ids)if(!seen.has(id)&&(seen.add(id),snapshot.push(id),snapshot.length>=MAX_LIBRARY_COLLECTION_ENTRIES))break}catch{}return Object.freeze(snapshot)}willUpdate(changed){if(super.willUpdate(changed),(changed.has("documents")||changed.has("selectedDocumentIds"))&&this.selectedDocumentIds.length>0){const existing=new Set(this._documents.map(doc=>doc.id)),normalized=this.snapshotIds(this.selectedDocumentIds.filter(id=>existing.has(id)));(normalized.length!==this.selectedDocumentIds.length||normalized.some((id,index)=>id!==this.selectedDocumentIds[index]))&&(this.selectedDocumentIds=normalized)}if((changed.has("documents")||changed.has("tagFilter"))&&this.tagFilter.length>0){const availableTags=new Set(this._documents.flatMap(document=>document.tags??[])),normalized=this.snapshotIds(this.tagFilter.filter(tag=>availableTags.has(tag)));(normalized.length!==this.tagFilter.length||normalized.some((tag,index)=>tag!==this.tagFilter[index]))&&(this.tagFilter=normalized)}}selectionCountText(){return this.localize("documentLibrarySelectedCount",void 0,{count:getNumberFormat(this.effectiveLocale).format(this.selectedDocumentIds.length)})}normalizeDate(value){if(value===void 0)return;const date=value instanceof Date?value:new Date(value);return Number.isNaN(date.getTime())?void 0:date}matchesTagFilter(document){if(this.tagFilter.length===0)return!0;const tags=new Set(document.tags??[]);return this.tagFilter.every(tag=>tags.has(tag))}get matchingDocuments(){const query=(this.searchTerm??"").trim().toLocaleLowerCase(this.effectiveLocale),matchFn=this.filter??this.defaultFilter;return this._documents.filter(document=>(query===""||matchFn(document,query))&&this.matchesTagFilter(document))}get allTags(){const locale=this.effectiveLocale;if(this.tagsMemo?.documents===this._documents&&this.tagsMemo.locale===locale)return this.tagsMemo.tags;const tags=new Set;for(const document of this._documents)for(const tag of document.tags??[])tags.add(tag);const sorted=[...tags].sort(getCollator(locale).compare);return this.tagsMemo={documents:this._documents,locale,tags:sorted},sorted}get selectedIdSet(){return this.selectedMemo?.ids!==this._selectedDocumentIds&&(this.selectedMemo={ids:this._selectedDocumentIds,set:new Set(this._selectedDocumentIds)}),this.selectedMemo.set}emitFilterChange(){const tags=Object.freeze([...this.tagFilter]);this.emit("lr-filter-change",Object.freeze({searchTerm:this.searchTerm,tags,matchCount:this.matchingDocuments.length}))}isSortKey(value){return value==="name"||value==="version"||value==="owner"||value==="freshness"||value==="updatedAt"}openDocument(document){this.emit("lr-open",Object.freeze({documentId:document.id}))}setSelected(ids){this.selectedDocumentIds=[...ids],this.announcements.announcePolite(this.selectionCountText());const eventIds=Object.freeze([...this.selectedDocumentIds]);this.emit("lr-selection-change",Object.freeze({documentIds:eventIds}))}toggleSelection(document,checked){const next=new Set(this.selectedDocumentIds);checked?next.add(document.id):next.delete(document.id),this.setSelected(next)}toggleSelectAll(checked,visible){const next=new Set(this.selectedDocumentIds);for(const document of visible)checked?next.add(document.id):next.delete(document.id);this.setSelected(next)}freshnessLabel(freshness){switch(freshness){case"fresh":return this.localize("documentLibraryFreshnessFresh");case"aging":return this.localize("documentLibraryFreshnessAging");case"stale":return this.localize("documentLibraryFreshnessStale")}}renderSelectAllCheckbox(visible,selected){const allSelected=visible.length>0&&visible.every(document=>selected.has(document.id)),someSelected=!allSelected&&visible.some(document=>selected.has(document.id));return html`<lr-checkbox
1
+ import{__decorate}from"tslib";import{SourcePageController}from"../../../internal/source-page-controller.js";import{finiteInteger}from"../../../internal/numbers.js";import{indexByKey}from"../../../internal/keyed-index.js";import{lyraLocaleCatalogVersion}from"../../../internal/localization-runtime.js";import{SlotPresenceController}from"../../../internal/slot-presence-controller.js";import{eventCollectionSupport}from"../../../internal/collection-snapshot.js";import{html,nothing}from"lit";import{property,state}from"lit/decorators.js";import{LyraElement}from"../../../internal/lyra-element.js";import{createRetryForwarder}from"../../../internal/retry-forwarder.js";import{hostAriaLabel}from"../../../internal/a11y.js";import{getCollator,getDateTimeFormat,getNumberFormat}from"../../../internal/intl-cache.js";import{getOwnDataDescriptor,MISSING_OWN_DATA_DESCRIPTOR,UNSAFE_OWN_DATA_DESCRIPTOR}from"../../../internal/data-descriptors.js";import{AnnouncementSinkController}from"../../../internal/announcer.js";import{styles}from"./document-library.styles.js";import{normalizeReflectedOptionalSize,optionalSizeConverter}from"../../../internal/variants.js";import{LYRA_DEFAULT_documentLibraryClearSelection,LYRA_DEFAULT_documentLibraryEmptyHeading,LYRA_DEFAULT_documentLibraryFilterByTag,LYRA_DEFAULT_documentLibraryFreshnessAging,LYRA_DEFAULT_documentLibraryFreshnessColumn,LYRA_DEFAULT_documentLibraryFreshnessFresh,LYRA_DEFAULT_documentLibraryFreshnessStale,LYRA_DEFAULT_documentLibraryLabel,LYRA_DEFAULT_documentLibraryNameColumn,LYRA_DEFAULT_documentLibraryNoMatchesHeading,LYRA_DEFAULT_documentLibraryOwnerColumn,LYRA_DEFAULT_documentLibrarySearchPlaceholder,LYRA_DEFAULT_documentLibrarySelectAll,LYRA_DEFAULT_documentLibrarySelectColumn,LYRA_DEFAULT_documentLibrarySelectDocument,LYRA_DEFAULT_documentLibrarySelectPage,LYRA_DEFAULT_documentLibrarySelectedCount,LYRA_DEFAULT_documentLibraryTagsColumn,LYRA_DEFAULT_documentLibraryTypeColumn,LYRA_DEFAULT_documentLibraryUpdatedColumn,LYRA_DEFAULT_documentLibraryVersionColumn}from"../../../internal/default-strings/data.generated.js";import{LYRA_DEFAULT_retry,LYRA_DEFAULT_sourceSelectionFailed,LYRA_DEFAULT_sourceSelectionLoading,LYRA_DEFAULT_tagFacetLimit}from"../../../internal/default-strings/shared.generated.js";const FRESHNESS_RANK={fresh:0,aging:1,stale:2},MAX_LIBRARY_COLLECTION_ENTRIES=1e4,MAX_TAG_FACETS=500,documentKey=document=>document.id,INVALID_DOCUMENT_DATE=Symbol("invalid-document-date"),FRESHNESS_TONE={fresh:"success",aging:"warning",stale:"danger"};function projectLibraryStringArray(value){try{if(!Array.isArray(value))return;const length=getOwnDataDescriptor(value,"length");if(length===MISSING_OWN_DATA_DESCRIPTOR||length===UNSAFE_OWN_DATA_DESCRIPTOR||typeof length.value!="number"||!Number.isSafeInteger(length.value)||length.value<0)return;const tags=[];for(let index=0;index<Math.min(length.value,MAX_LIBRARY_COLLECTION_ENTRIES);index+=1){const entry=getOwnDataDescriptor(value,String(index));if(entry===MISSING_OWN_DATA_DESCRIPTOR||entry===UNSAFE_OWN_DATA_DESCRIPTOR||typeof entry.value!="string")return;tags.push(entry.value)}return Object.freeze(tags)}catch{return}}function projectLibraryDate(value){if(typeof value=="string")return value;if(typeof value=="number")return new Date(value);try{return new Date(Date.prototype.getTime.call(value))}catch{return INVALID_DOCUMENT_DATE}}function projectLibraryDocument(candidate){try{if(candidate===null||typeof candidate!="object"||Array.isArray(candidate))return;const id=getOwnDataDescriptor(candidate,"id"),name=getOwnDataDescriptor(candidate,"name"),mimeType=getOwnDataDescriptor(candidate,"mimeType"),uri=getOwnDataDescriptor(candidate,"uri"),version=getOwnDataDescriptor(candidate,"version"),tags=getOwnDataDescriptor(candidate,"tags"),owner=getOwnDataDescriptor(candidate,"owner"),updatedAt=getOwnDataDescriptor(candidate,"updatedAt"),freshness=getOwnDataDescriptor(candidate,"freshness");if(id===MISSING_OWN_DATA_DESCRIPTOR||id===UNSAFE_OWN_DATA_DESCRIPTOR||name===MISSING_OWN_DATA_DESCRIPTOR||name===UNSAFE_OWN_DATA_DESCRIPTOR||mimeType===UNSAFE_OWN_DATA_DESCRIPTOR||uri===UNSAFE_OWN_DATA_DESCRIPTOR||version===UNSAFE_OWN_DATA_DESCRIPTOR||tags===UNSAFE_OWN_DATA_DESCRIPTOR||owner===UNSAFE_OWN_DATA_DESCRIPTOR||updatedAt===UNSAFE_OWN_DATA_DESCRIPTOR||freshness===UNSAFE_OWN_DATA_DESCRIPTOR||typeof id.value!="string"||id.value.trim().length===0||typeof name.value!="string")return;const mimeTypeValue=mimeType===MISSING_OWN_DATA_DESCRIPTOR?void 0:mimeType.value,uriValue=uri===MISSING_OWN_DATA_DESCRIPTOR?void 0:uri.value,versionValue=version===MISSING_OWN_DATA_DESCRIPTOR?void 0:version.value,ownerValue=owner===MISSING_OWN_DATA_DESCRIPTOR?void 0:owner.value,freshnessValue=freshness===MISSING_OWN_DATA_DESCRIPTOR?void 0:freshness.value;if(mimeTypeValue!==void 0&&typeof mimeTypeValue!="string"||uriValue!==void 0&&typeof uriValue!="string"||versionValue!==void 0&&typeof versionValue!="string"||ownerValue!==void 0&&typeof ownerValue!="string"||freshnessValue!==void 0&&freshnessValue!=="fresh"&&freshnessValue!=="aging"&&freshnessValue!=="stale")return;const tagsValue=tags===MISSING_OWN_DATA_DESCRIPTOR?void 0:tags.value,tagValues=tagsValue===void 0?void 0:projectLibraryStringArray(tagsValue);if(tagsValue!==void 0&&!tagValues)return;const updatedAtValue=updatedAt===MISSING_OWN_DATA_DESCRIPTOR||updatedAt.value===void 0?void 0:projectLibraryDate(updatedAt.value);return updatedAtValue===INVALID_DOCUMENT_DATE?void 0:Object.freeze({id:id.value,name:name.value,...mimeTypeValue===void 0?{}:{mimeType:mimeTypeValue},...uriValue===void 0?{}:{uri:uriValue},...versionValue===void 0?{}:{version:versionValue},...tagValues===void 0?{}:{tags:tagValues},...ownerValue===void 0?{}:{owner:ownerValue},...updatedAtValue===void 0?{}:{updatedAt:updatedAtValue},...freshnessValue===void 0?{}:{freshness:freshnessValue}})}catch{return}}class LyraDocumentLibrary extends LyraElement{constructor(){super(...arguments),this.sourceStateVersion=0,this.sourceEpoch=0,this.sourceSyncing=!1,this.sourceRows=[],this.sourceTags=[],this.sourceFacetLabels=new Map,this.sourceLifecycleVersion=0,this.sourceFilterEvent=!1,this.sourceSelectionAnnouncement="",this.sourcePages=new SourcePageController(this,{normalizeRecord:(record,isCurrent)=>this.projectSourceDocument(record,isCurrent),validateMetadata:(result,query)=>{if(!result.tags||query.tagFilter.length>MAX_TAG_FACETS||result.tags.unavailableSelected.some(key=>!query.tagFilter.includes(key)))throw new TypeError("Invalid document source facets")},onChange:()=>{this.sourceStateVersion++}}),this.sourcePage=0,this.sourcePageSize=100,this.onSourcePage=event=>{event.stopPropagation(),this.sourceMode&&(this.sourcePage=event.detail.page-1)},this._documents=Object.freeze([]),this._selectedDocumentIds=Object.freeze([]),this._tagFilter=Object.freeze([]),this.sortKey="name",this.sortDir="asc",this.searchTerm="",this.loading=!1,this.error=!1,this.errorDescription="",this.slotPresence=new SlotPresenceController(this,{observeLightDom:!0}),this.onTableRetry=createRetryForwarder(init=>this.emit("lr-retry-request",null,init),()=>{this.error=!1,this.sourceMode&&(this.sourceInputs=void 0,this.syncSource(),this.sourceStateVersion++)}),this.announcements=new AnnouncementSinkController(this,{eager:["polite"]}),this.sourceAnnouncementInitialized=!1,this.explicitRefresh=0,this.defaultFilter=(document,query)=>{const locale=this.effectiveLocale;if(this.corpusMemo?.documents!==this._documents||this.corpusMemo.locale!==locale){const fields=new Map;for(const row of this._documents)fields.set(row,[row.name,row.owner??"",...row.tags??[]].map(value=>value.toLocaleLowerCase(locale)));this.corpusMemo={documents:this._documents,locale,fields}}return this.corpusMemo.fields.get(document).some(value=>value.includes(query))},this.documentTags=new WeakMap,this.documentDates=new WeakMap,this.compareDocuments=(a,b)=>{const collator=this.sortCollator,dir=this.sortDir==="asc"?1:-1;let result=0;switch(this.sortKey){case"name":result=collator.compare(a.name,b.name);break;case"version":result=collator.compare(a.version??"",b.version??"");break;case"owner":result=collator.compare(a.owner??"",b.owner??"");break;case"freshness":result=(a.freshness?FRESHNESS_RANK[a.freshness]:3)-(b.freshness?FRESHNESS_RANK[b.freshness]:3);break;case"updatedAt":result=(this.documentDate(a)?.getTime()??0)-(this.documentDate(b)?.getTime()??0);break}return result*dir},this.onSearchInput=event=>{event.stopPropagation(),this.searchTerm=event.detail.value,this.emitFilterChange()},this.onTagFilterChange=event=>{event.stopPropagation();const combobox=event.target;this.tagFilter=Array.isArray(combobox.value)?combobox.value:[],this.emitFilterChange()},this.onTableSortRequest=event=>{if(event.stopPropagation(),!this.isSortKey(event.detail.sortKey)){event.preventDefault();return}const detail=Object.freeze({phase:"request",sortKey:event.detail.sortKey,sortDir:event.detail.sortDir});this.emit("lr-sort-request",detail,{cancelable:!0}).defaultPrevented&&event.preventDefault()},this.onTableSortCommit=event=>{event.stopPropagation(),this.isSortKey(event.detail.sortKey)&&(this.sortKey=event.detail.sortKey,this.sortDir=event.detail.sortDir,this.emit("lr-sort",Object.freeze({phase:"commit",sortKey:this.sortKey,sortDir:this.sortDir})))},this.stopOwnedEvent=event=>{event.stopPropagation()},this.onTableSelectionChange=event=>{event.stopPropagation();const table=event.currentTarget;table.selectedRowKeys=new Set(this.selectedDocumentIds)},this.clearSelection=()=>{this.setSelected([])}}static{this.defaultStrings={...super.defaultStrings,documentLibraryClearSelection:LYRA_DEFAULT_documentLibraryClearSelection,documentLibraryEmptyHeading:LYRA_DEFAULT_documentLibraryEmptyHeading,documentLibraryFilterByTag:LYRA_DEFAULT_documentLibraryFilterByTag,documentLibraryFreshnessAging:LYRA_DEFAULT_documentLibraryFreshnessAging,documentLibraryFreshnessColumn:LYRA_DEFAULT_documentLibraryFreshnessColumn,documentLibraryFreshnessFresh:LYRA_DEFAULT_documentLibraryFreshnessFresh,documentLibraryFreshnessStale:LYRA_DEFAULT_documentLibraryFreshnessStale,documentLibraryLabel:LYRA_DEFAULT_documentLibraryLabel,documentLibraryNameColumn:LYRA_DEFAULT_documentLibraryNameColumn,documentLibraryNoMatchesHeading:LYRA_DEFAULT_documentLibraryNoMatchesHeading,documentLibraryOwnerColumn:LYRA_DEFAULT_documentLibraryOwnerColumn,documentLibrarySearchPlaceholder:LYRA_DEFAULT_documentLibrarySearchPlaceholder,documentLibrarySelectAll:LYRA_DEFAULT_documentLibrarySelectAll,documentLibrarySelectColumn:LYRA_DEFAULT_documentLibrarySelectColumn,documentLibrarySelectDocument:LYRA_DEFAULT_documentLibrarySelectDocument,documentLibrarySelectPage:LYRA_DEFAULT_documentLibrarySelectPage,documentLibrarySelectedCount:LYRA_DEFAULT_documentLibrarySelectedCount,documentLibraryTagsColumn:LYRA_DEFAULT_documentLibraryTagsColumn,documentLibraryTypeColumn:LYRA_DEFAULT_documentLibraryTypeColumn,documentLibraryUpdatedColumn:LYRA_DEFAULT_documentLibraryUpdatedColumn,documentLibraryVersionColumn:LYRA_DEFAULT_documentLibraryVersionColumn,retry:LYRA_DEFAULT_retry,sourceSelectionFailed:LYRA_DEFAULT_sourceSelectionFailed,sourceSelectionLoading:LYRA_DEFAULT_sourceSelectionLoading,tagFacetLimit:LYRA_DEFAULT_tagFacetLimit}}static{this.styles=[LyraElement.styles,styles]}static{this.collectionSupport=eventCollectionSupport}static{this.immutableEventDetails=Object.freeze(["lr-filter-change","lr-selection-change"])}get dataSource(){return this._dataSource}set dataSource(value){const previous=this._dataSource;this._dataSource=value,this.sourceEpoch=(this.sourceEpoch??0)+1,this.requestUpdate("dataSource",previous)}get sourceTotal(){return this.dataSource===void 0?null:this.sourcePages.state.result?.total??null}get sourceMode(){return this.dataSource!==void 0}get sourceBlocked(){return this.sourceMode&&(this.loading||this.error||this.sourcePages.state.pending||!!this.sourcePages.state.error||!!this.sourceFailure)}get sourceSelectionBlocked(){return this.sourceBlocked||this.sourceMode&&(this.sourcePages.state.selectionPending||!!this.sourcePages.state.selectionError)}projectSourceDocument(record,isCurrent){const assertCurrent=()=>{if(!isCurrent())throw new TypeError("Obsolete source record")},descriptorOf=(target,key)=>{assertCurrent();const descriptor=getOwnDataDescriptor(target,key);return assertCurrent(),descriptor};if(assertCurrent(),record.value===null||typeof record.value!="object"||Array.isArray(record.value))throw new TypeError("Invalid source document");const snapshot={};for(const key of["id","name","mimeType","uri","version","tags","owner","updatedAt","freshness"]){const descriptor=descriptorOf(record.value,key);if(descriptor===UNSAFE_OWN_DATA_DESCRIPTOR)throw new TypeError("Invalid source document");descriptor!==MISSING_OWN_DATA_DESCRIPTOR&&(snapshot[key]=descriptor.value)}if(snapshot.tags!==void 0){if(!Array.isArray(snapshot.tags))throw new TypeError("Invalid source document tags");const rawTags=snapshot.tags,length=descriptorOf(rawTags,"length");if(length===MISSING_OWN_DATA_DESCRIPTOR||length===UNSAFE_OWN_DATA_DESCRIPTOR||typeof length.value!="number"||!Number.isSafeInteger(length.value)||length.value<0||length.value>MAX_TAG_FACETS)throw new RangeError("Invalid source document tags");const tags=[];for(let index=0;index<length.value;index++){const descriptor=descriptorOf(rawTags,String(index));if(descriptor===MISSING_OWN_DATA_DESCRIPTOR||descriptor===UNSAFE_OWN_DATA_DESCRIPTOR||typeof descriptor.value!="string")throw new TypeError("Invalid source document tag");tags.push(descriptor.value)}snapshot.tags=tags}const value=projectLibraryDocument(snapshot);if(assertCurrent(),!value||value.id!==record.key||(value.tags?.length??0)>MAX_TAG_FACETS)throw new TypeError("Invalid source document");let units=0;for(const text of[value.id,value.name,value.owner,value.mimeType,value.uri,value.version,typeof value.updatedAt=="string"?value.updatedAt:void 0,...value.tags??[]])if(text!==void 0&&(units+=text.length,text.length>65536||units>65536))throw new RangeError("Source document too large");return assertCurrent(),{key:record.key,order:record.order,value}}syncSource(){if(!(!this.sourcePages||this.sourceSyncing)){this.sourceSyncing=!0;try{if(!this.sourceMode){this.sourceInputs&&this.sourcePages.bind(void 0),this.sourceInputs=void 0,this.sourceQueryInputs=void 0,this.sourceSelectionInputs=void 0,this.sourceSelectionEvent=void 0,this.sourceFilterEvent=!1,this.sourceResult=void 0,this.sourceRows=[],this.sourceTags=[],this.sourceFailure=void 0;return}const source=this.dataSource,epoch=this.sourceEpoch+this.explicitRefresh,size=finiteInteger(this.sourcePageSize,100,1,500);let page=finiteInteger(this.sourcePage,0,0,Math.floor(Number.MAX_SAFE_INTEGER/size));const queryInputs=[this.searchTerm,this.tagFilter,this.sortKey,this.sortDir,this.filter,size];this.sourceQueryInputs&&queryInputs.some((value,index)=>value!==this.sourceQueryInputs[index])&&(page=0,this.sourcePage=0),this.sourceQueryInputs=queryInputs;const revision=source.revision,inputs=[source,revision,epoch,this.effectiveLocale,...queryInputs,page];if(this.sourceInputs&&inputs.every((value,index)=>value===this.sourceInputs[index]))return;if(this.sourceInputs&&inputs.slice(0,3).some((value,index)=>value!==this.sourceInputs[index])&&(this.sourceSelectionEvent=void 0,this.sourceFilterEvent=!1),this.sourceInputs=inputs,this.sourceFailure=void 0,this.sourceRows=[],this.sourceTags=[],this.sourceResult=void 0,this.sourcePages.bind({source,revision,epoch,locale:this.effectiveLocale}),this.tagFilter.length>MAX_TAG_FACETS)throw new RangeError("Too many source facets");const query=Object.freeze({searchTerm:this.searchTerm??"",tagFilter:this.tagFilter,sortKey:this.sortKey,sortDir:this.sortDir,filter:this.filter});this.sourcePages.request(query,page,size),this.syncSourceSelection()}catch(error){this.sourcePages.bind(void 0),this.sourceRows=[],this.sourceTags=[],this.sourceResult=void 0,this.sourceFailure=error}finally{this.sourceSyncing=!1}}}syncSourceSelection(){if(!this.sourceMode||this.sourceFailure)return;const ids=this._selectedDocumentIds,source=this.dataSource,epoch=this.sourceEpoch+this.explicitRefresh,inputs=[source,source?.revision,epoch,ids];if(this.sourceSelectionInputs&&inputs.every((value,index)=>value===this.sourceSelectionInputs[index]))return;this.sourceSelectionInputs=inputs;const owner=this.ownerDocument,lifecycle=this.sourceLifecycleVersion;this.sourcePages.resolveSelection(ids).then(records=>{if(!records||lifecycle!==this.sourceLifecycleVersion||!this.isConnected||this.ownerDocument!==owner||this.dataSource!==source||epoch!==this.sourceEpoch+this.explicitRefresh||this._selectedDocumentIds!==ids)return;const retained=new Set(records.map(record=>record.key)),accepted=Object.freeze(ids.filter(id=>retained.has(id)));accepted.length!==ids.length&&(this._selectedDocumentIds=accepted,this.selectionSource=accepted,this.sourceSelectionInputs=void 0),this.sourceSelectionEvent===ids&&(this.sourceSelectionEvent=void 0,this.announcements.announcePolite(this.selectionCountText()),this.emit("lr-selection-change",Object.freeze({documentIds:Object.freeze([...this._selectedDocumentIds])}))),this.sourceStateVersion++})}acceptSourcePage(){const result=this.sourcePages.state.result;if(!result||result===this.sourceResult)return;this.sourceResult=result,this.sourceRows=result.rows.map(record=>record.value),this.sourceTags=result.tags.values.map(facet=>facet.key),this.sourceFacetLabels=new Map(result.tags.values.map(facet=>[facet.key,facet.label]));const removed=new Set(result.tags.unavailableSelected);if(this.tagFilter.some(key=>removed.has(key))){this.tagFilter=this.tagFilter.filter(key=>!removed.has(key));return}this.sourcePage!==this.sourcePages.state.page&&(this.sourceSyncing=!0,this.sourcePage=this.sourcePages.state.page,this.sourceSyncing=!1,this.sourceInputs=this.sourceInputs?[...this.sourceInputs.slice(0,-1),this.sourcePages.state.page]:void 0),this.sourceFilterEvent&&(this.sourceFilterEvent=!1,this.emit("lr-filter-change",Object.freeze({searchTerm:this.searchTerm,tags:Object.freeze([...this.tagFilter]),matchCount:result.total})))}get documents(){return this.documentsView??=this.snapshotDocuments(this._documents)}set documents(value){if(value===this.documentsSource||value===this.documentsView)return;this.documentsSource=value;const previous=this._documents;this._documents=this.snapshotDocuments(value),this.documentsView=void 0,this.requestUpdate("documents",previous)}get selectedDocumentIds(){return this._selectedDocumentIds}set selectedDocumentIds(value){if(value===this.selectionSource||value===this._selectedDocumentIds)return;this.sourceSelectionEvent=void 0,this.selectionSource=value;const previous=this._selectedDocumentIds;this._selectedDocumentIds=this.snapshotIds(Array.isArray(value)?value:[]),this.requestUpdate("selectedDocumentIds",previous)}get tagFilter(){return this._tagFilter}set tagFilter(value){if(value===this.tagFilterSource||value===this._tagFilter)return;this.tagFilterSource=value;const previous=this._tagFilter;this._tagFilter=this.snapshotIds(Array.isArray(value)?value:[]),this.requestUpdate("tagFilter",previous)}get hasErrorSlot(){return this.slotPresence.has("error")}get size(){return this._size}set size(next){const normalized=normalizeReflectedOptionalSize(this,next),old=this._size;old!==normalized&&(this._size=normalized,this.requestUpdate("size",old))}connectedCallback(){super.connectedCallback(),this.hasUpdated&&this.sourceMode&&(this.sourceSelectionInputs=void 0,this.syncSourceSelection())}invalidateSourceSelection(){this.sourceLifecycleVersion++,this.sourceSelectionInputs=void 0,this.sourceSelectionEvent=void 0,this.sourceFilterEvent=!1,this.sourceAnnouncementInitialized=!1}disconnectedCallback(){this.invalidateSourceSelection(),super.disconnectedCallback()}adoptedCallback(){this.invalidateSourceSelection(),super.adoptedCallback(),this.announcements.adopted(),this.sourcePages.adopted()}updated(changed){super.updated(changed);const status=this.sourceMode&&this.sourcePages.state.selectionError?this.localize("sourceSelectionFailed"):this.sourceMode&&this.sourcePages.state.selectionPending?this.localize("sourceSelectionLoading"):"";this.sourceAnnouncementInitialized&&status&&status!==this.sourceSelectionAnnouncement&&this.announcements.announcePolite(status),this.sourceAnnouncementInitialized=!0,this.sourceSelectionAnnouncement=status}snapshotDocuments(documents){const snapshot=[],seen=new Set;try{if(!Array.isArray(documents))return Object.freeze(snapshot);const length=getOwnDataDescriptor(documents,"length");if(length===MISSING_OWN_DATA_DESCRIPTOR||length===UNSAFE_OWN_DATA_DESCRIPTOR||typeof length.value!="number"||!Number.isSafeInteger(length.value)||length.value<0)return Object.freeze(snapshot);for(let index=0;index<Math.min(length.value,MAX_LIBRARY_COLLECTION_ENTRIES);index+=1){const entry=getOwnDataDescriptor(documents,String(index));if(entry===MISSING_OWN_DATA_DESCRIPTOR||entry===UNSAFE_OWN_DATA_DESCRIPTOR)continue;const document=projectLibraryDocument(entry.value);!document||seen.has(document.id)||(seen.add(document.id),snapshot.push(document))}}catch{}return Object.freeze(snapshot)}snapshotIds(ids){const snapshot=[],seen=new Set;try{for(const id of ids)if(!seen.has(id)&&(seen.add(id),snapshot.push(id),snapshot.length>=MAX_LIBRARY_COLLECTION_ENTRIES))break}catch{}return Object.freeze(snapshot)}requestUpdate(...args){args[0]===void 0&&(this.explicitRefresh=(this.explicitRefresh??0)+1),(args[0]===void 0||["dataSource","sourcePage","sourcePageSize","searchTerm","tagFilter","sortKey","sortDir","filter"].includes(String(args[0])))&&this.syncSource(),args[0]==="selectedDocumentIds"&&this.syncSourceSelection(),super.requestUpdate(...args)}willUpdate(changed){if(super.willUpdate(changed),this.syncSource(),this.sourceMode){this.acceptSourcePage(),this.syncSourceSelection();return}if((changed.has("documents")||changed.has("selectedDocumentIds")||changed.has("dataSource"))&&this.selectedDocumentIds.length>0){const existing=indexByKey(this._documents,documentKey),normalized=this.snapshotIds(this.selectedDocumentIds.filter(id=>existing.has(id)));(normalized.length!==this.selectedDocumentIds.length||normalized.some((id,index)=>id!==this.selectedDocumentIds[index]))&&(this.selectedDocumentIds=normalized)}if((changed.has("documents")||changed.has("tagFilter")||changed.has("dataSource"))&&this.tagFilter.length>0){const availableTags=this.tagSet,normalized=this.snapshotIds(this.tagFilter.filter(tag=>availableTags.has(tag)));(normalized.length!==this.tagFilter.length||normalized.some((tag,index)=>tag!==this.tagFilter[index]))&&(this.tagFilter=normalized)}}selectionCountText(){return this.localize("documentLibrarySelectedCount",void 0,{count:getNumberFormat(this.effectiveLocale).format(this.selectedDocumentIds.length)})}normalizeDate(value){if(value===void 0)return;const date=value instanceof Date?value:new Date(value);return Number.isNaN(date.getTime())?void 0:date}matchesTagFilter(document){if(this.tagFilter.length===0)return!0;let tags=this.documentTags.get(document);return tags||(tags=new Set(document.tags??[]),this.documentTags.set(document,tags)),this.tagFilter.every(tag=>tags.has(tag))}documentDate(document){return this.documentDates.has(document)||this.documentDates.set(document,this.normalizeDate(document.updatedAt)),this.documentDates.get(document)}get matchingDocuments(){const query=(this.searchTerm??"").trim().toLocaleLowerCase(this.effectiveLocale),inputs=[this._documents,query,this.tagFilter,this.filter,this.effectiveLocale,this.filter?this.explicitRefresh:0];if(!this.matchingMemo||inputs.some((input,index)=>input!==this.matchingMemo.inputs[index])){const matchFn=this.filter??this.defaultFilter,rows=this._documents.filter(document=>(query===""||matchFn(document,query))&&this.matchesTagFilter(document));this.matchingMemo={inputs,rows}}return this.matchingMemo.rows}get sortedDocuments(){const rows=this.matchingDocuments,locale=this.effectiveLocale,previous=this.sortedMemo;if(previous?.rows===rows&&previous.key===this.sortKey&&previous.dir===this.sortDir&&previous.locale===locale)return previous.sorted;if(this.sortCollator=getCollator(locale,{numeric:!0}),this.sortKey==="updatedAt")for(const row of rows)this.documentDate(row);const sorted=[...rows].sort(this.compareDocuments);return this.sortedMemo={rows,key:this.sortKey,dir:this.sortDir,locale,sorted},sorted}get allTags(){const locale=this.effectiveLocale;if(this.tagsMemo?.documents===this._documents&&this.tagsMemo.locale===locale)return this.tagsMemo.tags;const tags=new Set;for(const document of this._documents)for(const tag of document.tags??[])tags.add(tag);const sorted=[...tags].sort(getCollator(locale).compare);return this.tagsMemo={documents:this._documents,locale,tags:sorted,set:tags},sorted}get tagSet(){return this.allTags,this.tagsMemo.set}get selectedIdSet(){return this.selectedMemo?.ids!==this._selectedDocumentIds&&(this.selectedMemo={ids:this._selectedDocumentIds,set:new Set(this._selectedDocumentIds)}),this.selectedMemo.set}emitFilterChange(){if(this.sourceMode){this.sourceFilterEvent=!0;return}const tags=Object.freeze([...this.tagFilter]);this.emit("lr-filter-change",Object.freeze({searchTerm:this.searchTerm,tags,matchCount:this.matchingDocuments.length}))}isSortKey(value){return value==="name"||value==="version"||value==="owner"||value==="freshness"||value==="updatedAt"}openDocument(document){this.sourceBlocked||this.sourceMode&&!this.sourceRows.includes(document)||this.emit("lr-open",Object.freeze({documentId:document.id}))}setSelected(ids){if(this.sourceSelectionBlocked)return;if(this.selectedDocumentIds=[...ids],this.sourceMode){this.sourceSelectionEvent=this._selectedDocumentIds;return}this.announcements.announcePolite(this.selectionCountText());const eventIds=Object.freeze([...this.selectedDocumentIds]);this.emit("lr-selection-change",Object.freeze({documentIds:eventIds}))}toggleSelection(document,checked){const next=new Set(this.selectedDocumentIds);checked?next.add(document.id):next.delete(document.id),this.setSelected(next)}toggleSelectAll(checked,visible){const next=new Set(this.selectedDocumentIds);for(const document of visible)checked?next.add(document.id):next.delete(document.id);this.setSelected(next)}freshnessLabel(freshness){switch(freshness){case"fresh":return this.localize("documentLibraryFreshnessFresh");case"aging":return this.localize("documentLibraryFreshnessAging");case"stale":return this.localize("documentLibraryFreshnessStale")}}renderSelectAllCheckbox(visible,selected){const allSelected=visible.length>0&&visible.every(document=>selected.has(document.id)),someSelected=!allSelected&&visible.some(document=>selected.has(document.id));return html`<lr-checkbox
2
2
  .checked=${allSelected}
3
3
  .indeterminate=${someSelected}
4
- aria-label=${this.localize("documentLibrarySelectAll")}
4
+ aria-label=${this.localize(this.sourceMode?"documentLibrarySelectPage":"documentLibrarySelectAll")}
5
+ .disabled=${this.sourceSelectionBlocked}
5
6
  @lr-checkbox-toggle-request=${this.stopOwnedEvent}
6
7
  @input=${this.stopOwnedEvent}
7
8
  @lr-input=${this.stopOwnedEvent}
@@ -9,6 +10,7 @@ import{__decorate}from"tslib";import{SlotPresenceController}from"../../../intern
9
10
  @lr-change=${event=>{event.stopPropagation(),this.toggleSelectAll(event.detail.checked,visible)}}
10
11
  ></lr-checkbox>`}renderRowCheckbox(document,selected){return html`<lr-checkbox
11
12
  .checked=${selected.has(document.id)}
13
+ .disabled=${this.sourceSelectionBlocked}
12
14
  aria-label=${this.localize("documentLibrarySelectDocument",void 0,{name:document.name})}
13
15
  @lr-checkbox-toggle-request=${this.stopOwnedEvent}
14
16
  @input=${this.stopOwnedEvent}
@@ -19,17 +21,18 @@ import{__decorate}from"tslib";import{SlotPresenceController}from"../../../intern
19
21
  type="button"
20
22
  part="document-name"
21
23
  @click=${()=>this.openDocument(document)}
24
+ ?disabled=${this.sourceBlocked}
22
25
  >
23
26
  ${document.name}
24
- </button>`}renderTagsCell(document){const tags=document.tags??[];return tags.length===0?nothing:html`<lr-chip-group
27
+ </button>`}renderTagsCell(document){const tags=document.tags??[];return tags.length===0?nothing:this.sourceMode?html`<span>${tags.join(", ")}</span>`:html`<lr-chip-group
25
28
  >${tags.map(tag=>html`<lr-chip>${tag}</lr-chip>`)}</lr-chip-group
26
29
  >`}renderFreshnessCell(document){return document.freshness?html`<lr-chip variant=${FRESHNESS_TONE[document.freshness]}
27
30
  >${this.freshnessLabel(document.freshness)}</lr-chip
28
- >`:nothing}renderUpdatedCell(document){const date=this.normalizeDate(document.updatedAt);return date?getDateTimeFormat(this.effectiveLocale,{dateStyle:"medium"}).format(date):""}buildColumns(visible,selected){return[{key:"select",label:this.localize("documentLibrarySelectColumn"),headerCell:()=>this.renderSelectAllCheckbox(visible,selected),cell:document=>this.renderRowCheckbox(document,selected)},{key:"type",label:this.localize("documentLibraryTypeColumn"),cell:document=>html`<lr-file-icon
31
+ >`:nothing}renderUpdatedCell(document){const date=this.documentDate(document);return date?getDateTimeFormat(this.effectiveLocale,{dateStyle:"medium"}).format(date):""}buildColumns(visible,selected){const inputs=[visible,selected,this.effectiveLocale,this.strings,lyraLocaleCatalogVersion(this.effectiveLocale),this.explicitRefresh,this.sourceSelectionBlocked];return(!this.columnsMemo||inputs.some((input,index)=>input!==this.columnsMemo.inputs[index]))&&(this.columnsMemo={inputs,columns:this.createColumns(visible,selected)}),this.columnsMemo.columns}createColumns(visible,selected){return[{key:"select",label:this.localize("documentLibrarySelectColumn"),headerCell:()=>this.renderSelectAllCheckbox(visible,selected),cell:document=>this.renderRowCheckbox(document,selected)},{key:"type",label:this.localize("documentLibraryTypeColumn"),cell:document=>html`<lr-file-icon
29
32
  mime-type=${document.mimeType??""}
30
33
  name=${document.name}
31
34
  decorative
32
- ></lr-file-icon>`},{key:"name",label:this.localize("documentLibraryNameColumn"),sortable:!0,cell:document=>this.renderNameCell(document)},{key:"version",label:this.localize("documentLibraryVersionColumn"),sortable:!0,priority:"medium",cell:document=>document.version??""},{key:"owner",label:this.localize("documentLibraryOwnerColumn"),sortable:!0,priority:"medium",cell:document=>document.owner??""},{key:"tags",label:this.localize("documentLibraryTagsColumn"),priority:"low",cell:document=>this.renderTagsCell(document)},{key:"freshness",label:this.localize("documentLibraryFreshnessColumn"),sortable:!0,priority:"low",cell:document=>this.renderFreshnessCell(document)},{key:"updatedAt",label:this.localize("documentLibraryUpdatedColumn"),sortable:!0,priority:"low",cell:document=>this.renderUpdatedCell(document)}]}render(){const label=hostAriaLabel(this)?.trim()??(this.label==null?this.localize("documentLibraryLabel"):this.label),visible=this.matchingDocuments.sort(this.compareDocuments),selected=this.selectedIdSet,tags=this.allTags,emptyHeading=this._documents.length===0?this.localize("documentLibraryEmptyHeading"):this.localize("documentLibraryNoMatchesHeading");return html`
35
+ ></lr-file-icon>`},{key:"name",label:this.localize("documentLibraryNameColumn"),sortable:!0,cell:document=>this.renderNameCell(document)},{key:"version",label:this.localize("documentLibraryVersionColumn"),sortable:!0,priority:"medium",cell:document=>document.version??""},{key:"owner",label:this.localize("documentLibraryOwnerColumn"),sortable:!0,priority:"medium",cell:document=>document.owner??""},{key:"tags",label:this.localize("documentLibraryTagsColumn"),priority:"low",cell:document=>this.renderTagsCell(document)},{key:"freshness",label:this.localize("documentLibraryFreshnessColumn"),sortable:!0,priority:"low",cell:document=>this.renderFreshnessCell(document)},{key:"updatedAt",label:this.localize("documentLibraryUpdatedColumn"),sortable:!0,priority:"low",cell:document=>this.renderUpdatedCell(document)}]}renderTagOptions(tags){return this.tagOptionsMemo?.tags!==tags&&(this.tagOptionsMemo={tags,options:tags.slice(0,MAX_TAG_FACETS).map(tag=>html`<lr-option value=${tag}>${this.sourceMode?this.sourceFacetLabels.get(tag)??tag:tag}</lr-option>`)}),this.tagOptionsMemo.options}render(){const label=hostAriaLabel(this)?.trim()??(this.label==null?this.localize("documentLibraryLabel"):this.label),visible=this.sourceMode?this.sourceRows:this.sortedDocuments,selected=this.selectedIdSet,tags=this.sourceMode?this.sourceTags:this.allTags,facetTotal=this.sourceMode?this.sourceResult?.tags?.total??0:tags.length,emptyHeading=(this.sourceMode?!this.searchTerm&&this.tagFilter.length===0:this._documents.length===0)?this.localize("documentLibraryEmptyHeading"):this.localize("documentLibraryNoMatchesHeading");return html`
33
36
  <div part="base" role="region" aria-label=${label}>
34
37
  <div part="toolbar">
35
38
  <lr-input
@@ -44,7 +47,7 @@ import{__decorate}from"tslib";import{SlotPresenceController}from"../../../intern
44
47
  @lr-input=${this.onSearchInput}
45
48
  @lr-change=${this.stopOwnedEvent}
46
49
  ></lr-input>
47
- ${tags.length>0?html`<lr-combobox
50
+ ${tags.length>0||this.sourceMode&&this.tagFilter.length>0?html`<lr-combobox
48
51
  part="tag-filter"
49
52
  multiple
50
53
  .size=${this.size??"m"}
@@ -64,39 +67,49 @@ import{__decorate}from"tslib";import{SlotPresenceController}from"../../../intern
64
67
  @lr-clear=${this.stopOwnedEvent}
65
68
  @lr-invalid=${this.stopOwnedEvent}
66
69
  >
67
- ${tags.map(tag=>html`<lr-option value=${tag}>${tag}</lr-option>`)}
70
+ ${this.renderTagOptions(tags)}
68
71
  </lr-combobox>`:nothing}
69
72
  </div>
73
+ ${(this.sourceMode?facetTotal>tags.length:tags.length>MAX_TAG_FACETS)?html`<p part="limit" role="note">${this.localize("tagFacetLimit",void 0,{count:getNumberFormat(this.effectiveLocale).format(this.sourceMode?facetTotal-tags.length:tags.length-MAX_TAG_FACETS)})}</p>`:nothing}
70
74
  ${this.selectedDocumentIds.length>0?html`<div part="selection-bar">
71
75
  <span part="selection-count">${this.selectionCountText()}</span>
72
76
  <button
73
77
  type="button"
74
78
  part="clear-selection"
79
+ ?disabled=${this.sourceSelectionBlocked}
75
80
  @click=${this.clearSelection}
76
81
  >
77
82
  ${this.localize("documentLibraryClearSelection")}
78
83
  </button>
79
84
  </div>`:nothing}
85
+ ${this.sourceMode&&(this.sourcePages.state.selectionPending||this.sourcePages.state.selectionError)?html`<p part="selection-status">${this.localize(this.sourcePages.state.selectionPending?"sourceSelectionLoading":"sourceSelectionFailed")}${this.sourcePages.state.selectionError?html` <button type="button" part="selection-retry" @click=${()=>{this.sourceSelectionInputs=void 0,this.syncSourceSelection()}}>${this.localize("retry")}</button>`:nothing}</p>`:nothing}
80
86
  <lr-table
81
87
  part="table"
82
88
  exportparts="row, cell, header-cell, document-name, error-row, error-cell, error, error-base, error-icon, error-heading, error-description, error-actions, retry-button"
83
89
  aria-label=${label}
90
+ .strings=${this.strings}
91
+ .paginationMode=${this.sourceMode?"server":"client"}
92
+ .page=${this.sourceMode?finiteInteger(this.sourcePage,0,0,Number.MAX_SAFE_INTEGER)+1:1}
93
+ .pageSize=${this.sourceMode?finiteInteger(this.sourcePageSize,100,1,500):100}
94
+ .totalItems=${this.sourceMode?this.sourceTotal??0:-1}
95
+ .unknownTotal=${this.sourceMode&&this.sourceTotal===null}
96
+ .hasNext=${!this.sourceMode||this.sourceTotal!==null}
84
97
  .columns=${this.buildColumns(visible,selected)}
85
98
  .rows=${visible}
86
- .rowKey=${document=>document.id}
99
+ .rowKey=${documentKey}
87
100
  .selectedRowKeys=${selected}
88
101
  selection-mode="multiple"
89
102
  .sortKey=${this.sortKey}
90
103
  .sortDir=${this.sortDir}
91
104
  sort-mode="server"
92
- ?loading=${this.loading}
105
+ ?loading=${this.loading||this.sourceMode&&this.sourcePages.state.pending}
93
106
  empty-heading=${emptyHeading}
94
- ?error=${this.error}
107
+ ?error=${this.error||this.sourceMode&&!!(this.sourceFailure||this.sourcePages.state.error)}
95
108
  error-heading=${this.errorHeading??nothing}
96
109
  error-description=${this.errorDescription}
97
110
  @lr-sort-request=${this.onTableSortRequest}
98
111
  @lr-sort=${this.onTableSortCommit}
99
- @lr-page-change=${this.stopOwnedEvent}
112
+ @lr-page-change=${this.onSourcePage}
100
113
  @lr-priority-columns-visibility-change=${this.stopOwnedEvent}
101
114
  @lr-selection-change=${this.onTableSelectionChange}
102
115
  @lr-retry-request=${this.onTableRetry}
@@ -104,4 +117,4 @@ import{__decorate}from"tslib";import{SlotPresenceController}from"../../../intern
104
117
  @lr-row-click=${this.stopOwnedEvent}
105
118
  >${this.hasErrorSlot?html`<div slot="error"><slot name="error"></slot></div>`:nothing}</lr-table>
106
119
  </div>
107
- `}}__decorate([property({attribute:!1})],LyraDocumentLibrary.prototype,"documents",null),__decorate([property({attribute:!1})],LyraDocumentLibrary.prototype,"selectedDocumentIds",null),__decorate([property({attribute:!1})],LyraDocumentLibrary.prototype,"tagFilter",null),__decorate([property({attribute:!1})],LyraDocumentLibrary.prototype,"filter",void 0),__decorate([property({attribute:"sort-key"})],LyraDocumentLibrary.prototype,"sortKey",void 0),__decorate([property({attribute:"sort-dir"})],LyraDocumentLibrary.prototype,"sortDir",void 0),__decorate([property({attribute:"search-term"})],LyraDocumentLibrary.prototype,"searchTerm",void 0),__decorate([property({type:Boolean,reflect:!0})],LyraDocumentLibrary.prototype,"loading",void 0),__decorate([property({type:Boolean,reflect:!0})],LyraDocumentLibrary.prototype,"error",void 0),__decorate([property({attribute:"error-heading"})],LyraDocumentLibrary.prototype,"errorHeading",void 0),__decorate([property({attribute:"error-description"})],LyraDocumentLibrary.prototype,"errorDescription",void 0),__decorate([property({reflect:!0,converter:optionalSizeConverter})],LyraDocumentLibrary.prototype,"size",null),__decorate([property()],LyraDocumentLibrary.prototype,"label",void 0);export{LyraDocumentLibrary};
120
+ `}}__decorate([state()],LyraDocumentLibrary.prototype,"sourceStateVersion",void 0),__decorate([property({attribute:!1})],LyraDocumentLibrary.prototype,"dataSource",null),__decorate([property({type:Number,attribute:"source-page"})],LyraDocumentLibrary.prototype,"sourcePage",void 0),__decorate([property({type:Number,attribute:"source-page-size"})],LyraDocumentLibrary.prototype,"sourcePageSize",void 0),__decorate([property({attribute:!1})],LyraDocumentLibrary.prototype,"documents",null),__decorate([property({attribute:!1})],LyraDocumentLibrary.prototype,"selectedDocumentIds",null),__decorate([property({attribute:!1})],LyraDocumentLibrary.prototype,"tagFilter",null),__decorate([property({attribute:!1})],LyraDocumentLibrary.prototype,"filter",void 0),__decorate([property({attribute:"sort-key"})],LyraDocumentLibrary.prototype,"sortKey",void 0),__decorate([property({attribute:"sort-dir"})],LyraDocumentLibrary.prototype,"sortDir",void 0),__decorate([property({attribute:"search-term"})],LyraDocumentLibrary.prototype,"searchTerm",void 0),__decorate([property({type:Boolean,reflect:!0})],LyraDocumentLibrary.prototype,"loading",void 0),__decorate([property({type:Boolean,reflect:!0})],LyraDocumentLibrary.prototype,"error",void 0),__decorate([property({attribute:"error-heading"})],LyraDocumentLibrary.prototype,"errorHeading",void 0),__decorate([property({attribute:"error-description"})],LyraDocumentLibrary.prototype,"errorDescription",void 0),__decorate([property({reflect:!0,converter:optionalSizeConverter})],LyraDocumentLibrary.prototype,"size",null),__decorate([property()],LyraDocumentLibrary.prototype,"label",void 0);export{LyraDocumentLibrary};
@@ -1 +1 @@
1
- import{focusRing}from"../../../internal/interactive-control.styles.js";import{css}from"lit";const styles=css` :host { display: block; min-inline-size: 0; } [part='base'] { display: flex; flex-direction: column; gap: var(--lr-space-s); min-inline-size: 0; } [part='toolbar'] { display: flex; flex-wrap: wrap; align-items: flex-end; gap: var(--lr-space-s); } [part='search'] { flex: 1 1 var(--lr-size-12rem); min-inline-size: 0; } [part='tag-filter'] { flex: 1 1 var(--lr-size-10rem); min-inline-size: 0; } [part='selection-bar'] { display: flex; flex-wrap: wrap; align-items: center; justify-content: space-between; gap: var(--lr-space-s); padding-inline: var(--lr-space-s); padding-block: var(--lr-space-xs); border-radius: var(--lr-radius); background: var(--lr-color-surface-raised); color: var(--lr-color-text); } [part='selection-count'] { font-size: var(--lr-font-size-sm); } [part='clear-selection'] { border: 0; background: none; padding: 0; color: var(--lr-color-brand); font: inherit; cursor: pointer; transition: color var(--lr-transition-fast); } [part='clear-selection']:hover { text-decoration: underline; } [part='clear-selection']:active { color: color-mix(in oklab, var(--lr-color-brand), var(--lr-color-mix-partner) var(--lr-color-mix-active)); text-decoration: underline; } [part='clear-selection']:focus-visible { ${focusRing} } [part='table'] { min-inline-size: 0; } [part='table']::part(document-name) { border: 0; background: none; padding: 0; color: var(--lr-color-brand); font: inherit; text-align: start; cursor: pointer; transition: color var(--lr-transition-fast); } [part='table']::part(document-name):hover { text-decoration: underline; } [part='table']::part(document-name):active { color: color-mix(in oklab, var(--lr-color-brand), var(--lr-color-mix-partner) var(--lr-color-mix-active)); text-decoration: underline; } [part='table']::part(document-name):focus-visible { ${focusRing} } `;export{styles};
1
+ import{focusRing}from"../../../internal/interactive-control.styles.js";import{css}from"lit";const styles=css` :host { display: block; min-inline-size: 0; } [part='base'] { display: flex; flex-direction: column; gap: var(--lr-space-s); min-inline-size: 0; } [part='toolbar'] { display: flex; flex-wrap: wrap; align-items: flex-end; gap: var(--lr-space-s); } [part='search'] { flex: 1 1 var(--lr-size-12rem); min-inline-size: 0; } [part='tag-filter'] { flex: 1 1 var(--lr-size-10rem); min-inline-size: 0; } [part='selection-bar'] { display: flex; flex-wrap: wrap; align-items: center; justify-content: space-between; gap: var(--lr-space-s); padding-inline: var(--lr-space-s); padding-block: var(--lr-space-xs); border-radius: var(--lr-radius); background: var(--lr-color-surface-raised); color: var(--lr-color-text); } [part='selection-count'] { font-size: var(--lr-font-size-sm); } [part='clear-selection'] { border: 0; background: none; padding: 0; color: var(--lr-color-brand); font: inherit; cursor: pointer; transition: color var(--lr-transition-fast); } [part='clear-selection']:hover { text-decoration: underline; } [part='clear-selection']:active { color: color-mix(in oklab, var(--lr-color-brand), var(--lr-color-mix-partner) var(--lr-color-mix-active)); text-decoration: underline; } [part='clear-selection']:focus-visible { ${focusRing} } [part='selection-status'] { margin: 0; color: var(--lr-color-text-quiet); } [part='selection-retry'] { min-block-size: var(--lr-icon-button-size); min-inline-size: var(--lr-icon-button-size); border: 0; background: transparent; color: var(--lr-color-brand); font: inherit; cursor: pointer; transition: var(--lr-transition-interactive); } [part='selection-retry']:hover { text-decoration: underline; } [part='selection-retry']:active { color: color-mix(in oklab, var(--lr-color-brand), var(--lr-color-mix-partner) var(--lr-color-mix-active)); text-decoration: underline; } [part='selection-retry']:focus-visible { ${focusRing} } [part='limit'] { margin: 0; color: var(--lr-color-text-quiet); font-size: var(--lr-font-size-sm); } [part='table'] { min-inline-size: 0; } [part='table']::part(document-name) { border: 0; background: none; padding: 0; color: var(--lr-color-brand); font: inherit; text-align: start; cursor: pointer; transition: color var(--lr-transition-fast); } [part='table']::part(document-name):hover { text-decoration: underline; } [part='table']::part(document-name):active { color: color-mix(in oklab, var(--lr-color-brand), var(--lr-color-mix-partner) var(--lr-color-mix-active)); text-decoration: underline; } [part='table']::part(document-name):focus-visible { ${focusRing} } `;export{styles};
@@ -1,4 +1,6 @@
1
- import{type TemplateResult}from'lit';import{LyraElement}from'../../../internal/lyra-element.js';import{type GitStatus}from'./file-tree-status.js';export{GIT_STATUSES}from'./file-tree-status.js';export type{GitStatus}from'./file-tree-status.js';export interface FileTreeNode{readonly path:string;readonly name?:string;readonly kind?:'file'|'directory';readonly mimeType?:string;readonly gitStatus?:GitStatus;readonly additions?:number;readonly deletions?:number;readonly children?:readonly FileTreeNode[];readonly hasChildren?:boolean;}export interface LyraFileTreeEventMap{'lr-file-select':CustomEvent<Readonly<{filePath:string;node:FileTreeNode;}>>;'lr-file-open':CustomEvent<Readonly<{filePath:string;node:FileTreeNode;}>>;'lr-load-children':CustomEvent<Readonly<{filePath:string;}>>;}
1
+ import type{LyraHierarchySource,LyraHierarchyQuery}from'../../../data-sources.js';import{type PropertyValues,type TemplateResult}from'lit';import{LyraElement}from'../../../internal/lyra-element.js';import{type GitStatus}from'./file-tree-status.js';export{GIT_STATUSES}from'./file-tree-status.js';export type{GitStatus}from'./file-tree-status.js';export interface FileTreeNode{readonly path:string;readonly name?:string;readonly kind?:'file'|'directory';readonly mimeType?:string;readonly gitStatus?:GitStatus;readonly additions?:number;readonly deletions?:number;readonly children?:readonly FileTreeNode[];readonly hasChildren?:boolean;}
2
+ /** Provider-owned immutable preorder used when treeSource is defined. */
3
+ export type FileTreeSource=LyraHierarchySource<FileTreeNode,LyraHierarchyQuery>;export interface LyraFileTreeEventMap{'lr-file-select':CustomEvent<Readonly<{filePath:string;node:FileTreeNode;}>>;'lr-file-open':CustomEvent<Readonly<{filePath:string;node:FileTreeNode;}>>;'lr-load-children':CustomEvent<Readonly<{filePath:string;}>>;}
2
4
  /**
3
5
  * `<lr-file-tree>` — a file-explorer preset over `<lr-tree>` + `<lr-file-icon>`: path-keyed
4
6
  * nodes with git-status/diff-count badges, lazy directory loading, and select/open events.
@@ -15,6 +17,15 @@ import{type TemplateResult}from'lit';import{LyraElement}from'../../../internal/l
15
17
  * host would have to discard. A consumer that genuinely needs orderable rows composes `<lr-tree>`
16
18
  * directly, where the capability already lives.
17
19
  *
20
+ * Provider mode uses treeSource's immutable preorder and ignores nested value.children.
21
+ * Legacy DOM selection/lazy events and bulk expand/collapse remain legacy-only; source reordering is unavailable.
22
+ * @csspart source-list - The bounded source viewport.
23
+ * @csspart source-row - A mounted semantic tree row.
24
+ * @csspart source-toggle - A source branch or retry button.
25
+ * @csspart source-label - Source row display content.
26
+ * @csspart source-status - Source loading/count/empty status.
27
+ * @csspart source-error - Localized provider or row failure.
28
+ * Source-mode file event records contain displayed metadata without children.
18
29
  * @customElement lr-file-tree
19
30
  * @event lr-file-select - `detail: { filePath, node }` — a row was activated.
20
31
  * @event lr-file-open - `detail: { filePath, node }` — Enter/click on an already-selected file row
@@ -25,22 +36,35 @@ import{type TemplateResult}from'lit';import{LyraElement}from'../../../internal/l
25
36
  * @status stable
26
37
  * @since 4.0.0
27
38
  */
28
- export declare class LyraFileTree extends LyraElement<LyraFileTreeEventMap>{static styles:import("lit").CSSResultGroup[];private _nodes;private nodesTruncated;private nodesLimitReached;private lastNodesSource;
39
+ export declare class LyraFileTree extends LyraElement<LyraFileTreeEventMap>{static styles:import("lit").CSSResultGroup[];private sourceModeEpoch;private _treeSource;private sourceMode;private sourcePaintVersion;private sourceAnnouncement?;private readonly sourceAnnouncer;private readonly hierarchy;
40
+ /** Immutable provider preorder. Wins over legacy inputs while defined; unset restores them.
41
+ * At most 301 rows mount, with four 100-row pages and one focused row retained.
42
+ * Reassign or call requestUpdate() after changing the provider revision.
43
+ * @default undefined */
44
+ get treeSource():FileTreeSource|undefined;set treeSource(value:FileTreeSource|undefined);
45
+ /** Reveals a provider key and focuses its current visible row; false when absent or obsolete. */
46
+ revealSourceKey(key:string):Promise<boolean>;private normalizeSourceValue;private announceSource;private sourceSummary;private _nodes;private nodesTruncated;private nodesLimitReached;private lastNodesSource;
29
47
  /** Clone-owned, cycle-safe readonly node snapshot. Empty/blank paths are omitted and duplicate
30
48
  * paths use the first valid node; projection inspects at most 10,000 source positions across 64
31
49
  * descendant levels. An unreadable optional field rejects only its node, without reserving the
32
- * path against a later valid occurrence. The composed `<lr-tree>` holds at most 1,000 rows, so
50
+ * path against a later valid occurrence. The composed `<lr-tree>` holds at most maxNodes rows (default 1000), so
33
51
  * a larger listing projects each collapsed directory as a single row whose children load from
34
52
  * this snapshot when it expands; `dataTruncated` reports anything still omitted. Reassign after
35
53
  * changes. */
36
54
  get nodes():readonly FileTreeNode[];set nodes(value:readonly FileTreeNode[]);
37
55
  /** Whether any supplied node is not shown: omitted while normalizing `nodes` (malformed,
38
56
  * duplicate, cyclic, over-depth, or over-budget entries) or beyond the composed `<lr-tree>`'s
39
- * 1,000-row budget for the directories currently expanded. */
40
- get dataTruncated():boolean;selectedPath:string|null;
57
+ * configured row budget for the directories currently expanded. */
58
+ get dataTruncated():boolean;private _selectedPath;
59
+ /** Selected file path, or null when no file is selected.
60
+ * @default null */
61
+ get selectedPath():string|null;set selectedPath(value:string|null);
62
+ /** Maximum projected rows, from 1 to 10000. Invalid or unset values use 1000.
63
+ * Source admission remains bounded to 10000 positions across 64 descendant levels. */
64
+ maxNodes:number;private get effectiveMaxNodes();
41
65
  /** Accessible-name override for the internal `<lr-tree>`; falls back to the localized default
42
66
  * when unset. An explicitly empty string renders as an empty label rather than falling back. */
43
- label?:string;private nodesByPath;private parentPathByPath;private expandedPaths;private get projectsAllNodes();private rebuildNodeIndexes;private toTreeItem;private get treeItems();private onNodeSelect;private onNodeToggle;private onLazyLoad;private stopInnerEvent;
67
+ label?:string;private nodesByPath;private parentPathByPath;private expandedPaths;private get projectsAllNodes();private rebuildNodeIndexes;private toTreeItem;private sourceSelectedWrite;private sourceControlledPath;private sourceControlledEpoch;protected willUpdate(changed:PropertyValues):void;private applyControlledSelection;protected updated(changed:PropertyValues):void;adoptedCallback():void;disconnectedCallback():void;private projectionKey?;private projectedItems;private projectedSelection;requestUpdate(name?:PropertyKey,oldValue?:unknown):void;private get treeItems();private onNodeSelect;private onNodeToggle;private onLazyLoad;private stopInnerEvent;
44
68
  /** Fulfills a lazy directory's children in place. Expansion state survives because `<lr-tree>`
45
69
  * reconciles top-level items by id and each `<lr-tree-item>` keeps its own `expanded` state. */
46
70
  setChildren(path:string,children:readonly FileTreeNode[]):void;private ancestorChain;
@@ -1,10 +1,11 @@
1
- import{__decorate}from"tslib";import{html,nothing}from"lit";import{property}from"lit/decorators.js";import{LyraElement}from"../../../internal/lyra-element.js";import{getNumberFormat}from"../../../internal/intl-cache.js";import{finiteCount}from"../../../internal/numbers.js";import{tag}from"../../../internal/prefix.js";import{styles}from"./file-tree.styles.js";import{GIT_STATUSES}from"./file-tree-status.js";import{GIT_STATUSES as GIT_STATUSES2}from"./file-tree-status.js";import{LyraTreeItem}from"../tree/tree-item.class.js";import{TREE_MAX_RENDER_NODES}from"../tree/tree-types.js";import{LYRA_DEFAULT_fileTreeDiffSummary,LYRA_DEFAULT_fileTreeLabel,LYRA_DEFAULT_treeLimit}from"../../../internal/default-strings/data.generated.js";import{LYRA_DEFAULT_collapse,LYRA_DEFAULT_copy,LYRA_DEFAULT_date,LYRA_DEFAULT_details,LYRA_DEFAULT_gitStatusAdded,LYRA_DEFAULT_gitStatusConflicted,LYRA_DEFAULT_gitStatusDeleted,LYRA_DEFAULT_gitStatusIgnored,LYRA_DEFAULT_gitStatusModified,LYRA_DEFAULT_gitStatusRenamed,LYRA_DEFAULT_gitStatusUntracked,LYRA_DEFAULT_map,LYRA_DEFAULT_navigation,LYRA_DEFAULT_open,LYRA_DEFAULT_search,LYRA_DEFAULT_select}from"../../../internal/default-strings/shared.generated.js";const MAX_FILE_TREE_NODES=1e4,MAX_FILE_TREE_DEPTH=64;function boundedArrayShape(value){try{if(!Array.isArray(value))return{isArray:!1,length:0,truncated:!1};const descriptor=Object.getOwnPropertyDescriptor(value,"length"),length=descriptor&&"value"in descriptor?descriptor.value:0,valid=typeof length=="number"&&Number.isSafeInteger(length)&&length>=0;return{isArray:!0,length:valid?Math.min(length,MAX_FILE_TREE_NODES):0,truncated:valid&&length>MAX_FILE_TREE_NODES}}catch{return{isArray:!1,length:0,truncated:!0}}}function normalizeFileTreeNodes(value){return normalizeFileTreeSnapshot(value).nodes}function normalizeFileTreeSnapshot(value){let truncated=!1;const rootShape=boundedArrayShape(value);let limitReached=rootShape.isArray&&rootShape.truncated;const roots=rootShape.isArray?value:[],drafts=[],rootDrafts=[],seenObjects=new WeakSet,seenPaths=new Set,stack=[{input:roots,output:rootDrafts,depth:0,index:0,length:rootShape.length}];let inspected=0;for(rootShape.truncated&&(truncated=!0);stack.length>0;){const frame=stack[stack.length-1];if(frame.index>=frame.length){stack.pop();continue}if(drafts.length>=MAX_FILE_TREE_NODES||inspected>=MAX_FILE_TREE_NODES){truncated=!0,limitReached=!0;break}const sourceIndex=frame.index++;inspected+=1;let descriptor;try{descriptor=Object.getOwnPropertyDescriptor(frame.input,String(sourceIndex))}catch{truncated=!0;continue}if(!descriptor||!("value"in descriptor)){truncated=!0;continue}const candidate=descriptor.value;if(typeof candidate!="object"||candidate===null||seenObjects.has(candidate)){truncated=!0;continue}try{const record=candidate,path=record.path;if(typeof path!="string"||path.trim().length===0||seenPaths.has(path)){truncated=!0;continue}const name=record.name,kind=record.kind,mimeType=record.mimeType,gitStatus=record.gitStatus,additions=record.additions,deletions=record.deletions,hasChildren=record.hasChildren,rawChildren=record.children,fields={path,...typeof name=="string"?{name}:{},...kind==="file"||kind==="directory"?{kind}:{},...typeof mimeType=="string"?{mimeType}:{},...typeof gitStatus=="string"&&GIT_STATUSES.has(gitStatus)?{gitStatus}:{},...additions===void 0?{}:{additions:finiteCount(typeof additions=="number"?additions:0)},...deletions===void 0?{}:{deletions:finiteCount(typeof deletions=="number"?deletions:0)},...hasChildren===void 0?{}:{hasChildren:!!hasChildren}},childShape=boundedArrayShape(rawChildren),childrenProvided=childShape.isArray,draft={fields,children:[],childrenProvided};seenObjects.add(candidate),seenPaths.add(path),frame.output.push(draft),drafts.push(draft),childShape.truncated&&(truncated=!0,limitReached||=childShape.isArray),childrenProvided&&frame.depth<MAX_FILE_TREE_DEPTH?stack.push({input:rawChildren,output:draft.children,depth:frame.depth+1,index:0,length:childShape.length}):childShape.length>0&&(truncated=!0)}catch{truncated=!0}}for(let index=drafts.length-1;index>=0;index--){const draft=drafts[index];draft.normalized=Object.freeze({...draft.fields,...draft.childrenProvided?{children:Object.freeze(draft.children.map(child=>child.normalized))}:{}})}return{nodes:Object.freeze(rootDrafts.map(draft=>draft.normalized)),truncated,limitReached}}const GIT_STATUS_LETTER={added:"A",modified:"M",deleted:"D",renamed:"R",untracked:"U",conflicted:"C",ignored:"!"},GIT_STATUS_TONE={added:"success",untracked:"success",modified:"brand",renamed:"brand",deleted:"danger",conflicted:"danger",ignored:"neutral"},GIT_STATUS_KEY={added:"gitStatusAdded",modified:"gitStatusModified",deleted:"gitStatusDeleted",renamed:"gitStatusRenamed",untracked:"gitStatusUntracked",conflicted:"gitStatusConflicted",ignored:"gitStatusIgnored"};function baseName(path){const segments=path.split("/").filter(Boolean);return segments[segments.length-1]??path}function isDirectory(node){return node.kind==="directory"||node.children!==void 0||node.hasChildren===!0}function isLazyUnloaded(node){return isDirectory(node)&&node.hasChildren===!0&&node.children===void 0}class LyraFileTree extends LyraElement{constructor(){super(...arguments),this._nodes=[],this.nodesTruncated=!1,this.nodesLimitReached=!1,this.lastNodesSource=void 0,this.selectedPath=null,this.nodesByPath=new Map,this.parentPathByPath=new Map,this.expandedPaths=new Set,this.onNodeSelect=e=>{e.stopPropagation();const{nodeId}=e.detail,node=this.nodesByPath.get(nodeId);if(!node)return;const wasSelected=this.selectedPath===nodeId;this.selectedPath=nodeId,this.emit("lr-file-select",Object.freeze({filePath:nodeId,node})),!isDirectory(node)&&wasSelected&&this.emit("lr-file-open",Object.freeze({filePath:nodeId,node}))},this.onNodeToggle=e=>{e.stopPropagation();const{nodeId,expanded}=e.detail;if(expanded){this.expandedPaths.add(nodeId);return}if(this.expandedPaths.delete(nodeId)){for(const path of[...this.expandedPaths])for(let parent=this.parentPathByPath.get(path);parent!==void 0;parent=this.parentPathByPath.get(parent))if(parent===nodeId){this.expandedPaths.delete(path);break}this.projectsAllNodes||this.requestUpdate()}},this.onLazyLoad=e=>{e.stopPropagation();const nodeId=e.detail.item.nodeId,node=this.nodesByPath.get(nodeId);if(node){if(isLazyUnloaded(node)){this.emit("lr-load-children",Object.freeze({filePath:nodeId}));return}this.expandedPaths.add(nodeId),this.requestUpdate()}},this.stopInnerEvent=e=>{e.stopPropagation()}}static{this.defaultStrings={...super.defaultStrings,collapse:LYRA_DEFAULT_collapse,copy:LYRA_DEFAULT_copy,date:LYRA_DEFAULT_date,details:LYRA_DEFAULT_details,fileTreeDiffSummary:LYRA_DEFAULT_fileTreeDiffSummary,fileTreeLabel:LYRA_DEFAULT_fileTreeLabel,gitStatusAdded:LYRA_DEFAULT_gitStatusAdded,gitStatusConflicted:LYRA_DEFAULT_gitStatusConflicted,gitStatusDeleted:LYRA_DEFAULT_gitStatusDeleted,gitStatusIgnored:LYRA_DEFAULT_gitStatusIgnored,gitStatusModified:LYRA_DEFAULT_gitStatusModified,gitStatusRenamed:LYRA_DEFAULT_gitStatusRenamed,gitStatusUntracked:LYRA_DEFAULT_gitStatusUntracked,map:LYRA_DEFAULT_map,navigation:LYRA_DEFAULT_navigation,open:LYRA_DEFAULT_open,search:LYRA_DEFAULT_search,select:LYRA_DEFAULT_select,treeLimit:LYRA_DEFAULT_treeLimit}}static{this.styles=[LyraElement.styles,styles]}get nodes(){return this._nodes}set nodes(value){if(value===this.lastNodesSource||value===this._nodes)return;const previous=this._nodes,snapshot=normalizeFileTreeSnapshot(value);this.lastNodesSource=value,this._nodes=snapshot.nodes,this.nodesTruncated=snapshot.truncated,this.nodesLimitReached=snapshot.limitReached,this.rebuildNodeIndexes(),this.requestUpdate("nodes",previous)}get dataTruncated(){const tree=this.renderRoot?.querySelector?.(tag("tree"));return this.nodesTruncated||!!tree?.dataTruncated}get projectsAllNodes(){return this.nodesByPath.size<=TREE_MAX_RENDER_NODES}rebuildNodeIndexes(){this.nodesByPath=new Map,this.parentPathByPath=new Map;const stack=[...this.nodes].reverse().map(node=>({node,parentPath:void 0}));for(;stack.length>0;){const{node,parentPath}=stack.pop();if(this.nodesByPath.set(node.path,node),parentPath!==void 0&&this.parentPathByPath.set(node.path,parentPath),node.children)for(let index=node.children.length-1;index>=0;index--)stack.push({node:node.children[index],parentPath:node.path})}}toTreeItem(node){const badges=[];node.gitStatus&&badges.push({text:GIT_STATUS_LETTER[node.gitStatus],tone:GIT_STATUS_TONE[node.gitStatus],label:this.localize(GIT_STATUS_KEY[node.gitStatus])});const description=node.additions!==void 0||node.deletions!==void 0?this.localize("fileTreeDiffSummary",void 0,{additions:getNumberFormat(this.effectiveLocale).format(node.additions??0),deletions:getNumberFormat(this.effectiveLocale).format(node.deletions??0)}):void 0;let children,lazy=isLazyUnloaded(node);return!lazy&&node.children&&(this.projectsAllNodes||this.expandedPaths.has(node.path)?children=node.children.map(c=>this.toTreeItem(c)):lazy=node.children.length>0),{id:node.path,label:node.name??baseName(node.path),selected:this.selectedPath===node.path,...lazy?{lazy}:{},children,badges:badges.length>0?badges:void 0,description,icon:isDirectory(node)?void 0:html`<lr-file-icon
1
+ import{__decorate}from"tslib";import{HierarchySourceController,hierarchyField,hierarchyKey,hierarchyText}from"../../../internal/hierarchy-source-controller.js";import{hierarchySourceView}from"../../../internal/hierarchy-source-view.js";import{hierarchySourceStyles}from"../../../internal/hierarchy-source-view.styles.js";import{AnnouncementSinkController}from"../../../internal/announcer.js";import{html,nothing}from"lit";import{property}from"lit/decorators.js";import{LyraElement}from"../../../internal/lyra-element.js";import{getNumberFormat}from"../../../internal/intl-cache.js";import{finiteCount}from"../../../internal/numbers.js";import{tag}from"../../../internal/prefix.js";import{styles}from"./file-tree.styles.js";import{GIT_STATUSES}from"./file-tree-status.js";import{GIT_STATUSES as GIT_STATUSES2}from"./file-tree-status.js";import{LyraTreeItem}from"../tree/tree-item.class.js";import{LYRA_DEFAULT_fileTreeDiffSummary,LYRA_DEFAULT_fileTreeLabel,LYRA_DEFAULT_treeLimit}from"../../../internal/default-strings/data.generated.js";import{LYRA_DEFAULT_collapse,LYRA_DEFAULT_copy,LYRA_DEFAULT_date,LYRA_DEFAULT_details,LYRA_DEFAULT_expand,LYRA_DEFAULT_gitStatusAdded,LYRA_DEFAULT_gitStatusConflicted,LYRA_DEFAULT_gitStatusDeleted,LYRA_DEFAULT_gitStatusIgnored,LYRA_DEFAULT_gitStatusModified,LYRA_DEFAULT_gitStatusRenamed,LYRA_DEFAULT_gitStatusUntracked,LYRA_DEFAULT_item,LYRA_DEFAULT_loading,LYRA_DEFAULT_map,LYRA_DEFAULT_navigation,LYRA_DEFAULT_noData,LYRA_DEFAULT_open,LYRA_DEFAULT_retry,LYRA_DEFAULT_search,LYRA_DEFAULT_select,LYRA_DEFAULT_treeSourceError,LYRA_DEFAULT_treeSourceSummary}from"../../../internal/default-strings/shared.generated.js";const MAX_FILE_TREE_NODES=1e4,MAX_FILE_TREE_DEPTH=64;function boundedArrayShape(value){try{if(!Array.isArray(value))return{isArray:!1,length:0,truncated:!1};const descriptor=Object.getOwnPropertyDescriptor(value,"length"),length=descriptor&&"value"in descriptor?descriptor.value:0,valid=typeof length=="number"&&Number.isSafeInteger(length)&&length>=0;return{isArray:!0,length:valid?Math.min(length,MAX_FILE_TREE_NODES):0,truncated:valid&&length>MAX_FILE_TREE_NODES}}catch{return{isArray:!1,length:0,truncated:!0}}}function normalizeFileTreeNodes(value){return normalizeFileTreeSnapshot(value).nodes}function normalizeFileTreeSnapshot(value){let truncated=!1;const rootShape=boundedArrayShape(value);let limitReached=rootShape.isArray&&rootShape.truncated;const roots=rootShape.isArray?value:[],drafts=[],rootDrafts=[],seenObjects=new WeakSet,seenPaths=new Set,stack=[{input:roots,output:rootDrafts,depth:0,index:0,length:rootShape.length}];let inspected=0;for(rootShape.truncated&&(truncated=!0);stack.length>0;){const frame=stack[stack.length-1];if(frame.index>=frame.length){stack.pop();continue}if(drafts.length>=MAX_FILE_TREE_NODES||inspected>=MAX_FILE_TREE_NODES){truncated=!0,limitReached=!0;break}const sourceIndex=frame.index++;inspected+=1;let descriptor;try{descriptor=Object.getOwnPropertyDescriptor(frame.input,String(sourceIndex))}catch{truncated=!0;continue}if(!descriptor||!("value"in descriptor)){truncated=!0;continue}const candidate=descriptor.value;if(typeof candidate!="object"||candidate===null||seenObjects.has(candidate)){truncated=!0;continue}try{const record=candidate,path=record.path;if(typeof path!="string"||path.trim().length===0||seenPaths.has(path)){truncated=!0;continue}const name=record.name,kind=record.kind,mimeType=record.mimeType,gitStatus=record.gitStatus,additions=record.additions,deletions=record.deletions,hasChildren=record.hasChildren,rawChildren=record.children,fields={path,...typeof name=="string"?{name}:{},...kind==="file"||kind==="directory"?{kind}:{},...typeof mimeType=="string"?{mimeType}:{},...typeof gitStatus=="string"&&GIT_STATUSES.has(gitStatus)?{gitStatus}:{},...additions===void 0?{}:{additions:finiteCount(typeof additions=="number"?additions:0)},...deletions===void 0?{}:{deletions:finiteCount(typeof deletions=="number"?deletions:0)},...hasChildren===void 0?{}:{hasChildren:!!hasChildren}},childShape=boundedArrayShape(rawChildren),childrenProvided=childShape.isArray,draft={fields,children:[],childrenProvided};seenObjects.add(candidate),seenPaths.add(path),frame.output.push(draft),drafts.push(draft),childShape.truncated&&(truncated=!0,limitReached||=childShape.isArray),childrenProvided&&frame.depth<MAX_FILE_TREE_DEPTH?stack.push({input:rawChildren,output:draft.children,depth:frame.depth+1,index:0,length:childShape.length}):childShape.length>0&&(truncated=!0)}catch{truncated=!0}}for(let index=drafts.length-1;index>=0;index--){const draft=drafts[index];draft.normalized=Object.freeze({...draft.fields,...draft.childrenProvided?{children:Object.freeze(draft.children.map(child=>child.normalized))}:{}})}return{nodes:Object.freeze(rootDrafts.map(draft=>draft.normalized)),truncated,limitReached}}const GIT_STATUS_LETTER={added:"A",modified:"M",deleted:"D",renamed:"R",untracked:"U",conflicted:"C",ignored:"!"},GIT_STATUS_TONE={added:"success",untracked:"success",modified:"brand",renamed:"brand",deleted:"danger",conflicted:"danger",ignored:"neutral"},GIT_STATUS_KEY={added:"gitStatusAdded",modified:"gitStatusModified",deleted:"gitStatusDeleted",renamed:"gitStatusRenamed",untracked:"gitStatusUntracked",conflicted:"gitStatusConflicted",ignored:"gitStatusIgnored"};function baseName(path){const segments=path.split("/").filter(Boolean);return segments[segments.length-1]??path}function isDirectory(node){return node.kind==="directory"||node.children!==void 0||node.hasChildren===!0}function isLazyUnloaded(node){return isDirectory(node)&&node.hasChildren===!0&&node.children===void 0}class LyraFileTree extends LyraElement{constructor(){super(...arguments),this.sourceModeEpoch=0,this._treeSource=void 0,this.sourceMode=!1,this.sourcePaintVersion=0,this.sourceAnnouncer=new AnnouncementSinkController(this),this.hierarchy=new HierarchySourceController(this,{normalize:(value,key,childCount)=>this.normalizeSourceValue(value,key,childCount),onChange:()=>{const previous=this.sourcePaintVersion++;this.requestUpdate("sourcePaintVersion",previous)},accepted:(action,row,_state,isCurrent)=>{if(action.type!=="select"||!row)return;this.sourceSelectedWrite=action.key,this.selectedPath=action.key;const detail=Object.freeze({filePath:action.key,node:row.value});this.emit("lr-file-select",detail),isCurrent()&&row.selected&&row.childCount===0&&row.value.kind!=="directory"&&this.emit("lr-file-open",detail)}}),this._nodes=[],this.nodesTruncated=!1,this.nodesLimitReached=!1,this.lastNodesSource=void 0,this._selectedPath=null,this.maxNodes=1e3,this.nodesByPath=new Map,this.parentPathByPath=new Map,this.expandedPaths=new Set,this.sourceControlledPath=null,this.sourceControlledEpoch=-1,this.projectedItems=[],this.projectedSelection=null,this.onNodeSelect=e=>{e.stopPropagation();const{nodeId}=e.detail,node=this.nodesByPath.get(nodeId);if(!node)return;const wasSelected=this.selectedPath===nodeId;this.selectedPath=nodeId,this.emit("lr-file-select",Object.freeze({filePath:nodeId,node})),!isDirectory(node)&&wasSelected&&this.emit("lr-file-open",Object.freeze({filePath:nodeId,node}))},this.onNodeToggle=e=>{e.stopPropagation();const{nodeId,expanded}=e.detail;if(expanded){this.expandedPaths.add(nodeId);return}if(this.expandedPaths.delete(nodeId)){for(const path of[...this.expandedPaths])for(let parent=this.parentPathByPath.get(path);parent!==void 0;parent=this.parentPathByPath.get(parent))if(parent===nodeId){this.expandedPaths.delete(path);break}this.projectsAllNodes||this.requestUpdate()}},this.onLazyLoad=e=>{e.stopPropagation();const nodeId=e.detail.item.nodeId,node=this.nodesByPath.get(nodeId);if(node){if(isLazyUnloaded(node)){this.emit("lr-load-children",Object.freeze({filePath:nodeId}));return}this.expandedPaths.add(nodeId),this.requestUpdate()}},this.stopInnerEvent=e=>{e.stopPropagation()}}static{this.defaultStrings={...super.defaultStrings,collapse:LYRA_DEFAULT_collapse,copy:LYRA_DEFAULT_copy,date:LYRA_DEFAULT_date,details:LYRA_DEFAULT_details,expand:LYRA_DEFAULT_expand,fileTreeDiffSummary:LYRA_DEFAULT_fileTreeDiffSummary,fileTreeLabel:LYRA_DEFAULT_fileTreeLabel,gitStatusAdded:LYRA_DEFAULT_gitStatusAdded,gitStatusConflicted:LYRA_DEFAULT_gitStatusConflicted,gitStatusDeleted:LYRA_DEFAULT_gitStatusDeleted,gitStatusIgnored:LYRA_DEFAULT_gitStatusIgnored,gitStatusModified:LYRA_DEFAULT_gitStatusModified,gitStatusRenamed:LYRA_DEFAULT_gitStatusRenamed,gitStatusUntracked:LYRA_DEFAULT_gitStatusUntracked,item:LYRA_DEFAULT_item,loading:LYRA_DEFAULT_loading,map:LYRA_DEFAULT_map,navigation:LYRA_DEFAULT_navigation,noData:LYRA_DEFAULT_noData,open:LYRA_DEFAULT_open,retry:LYRA_DEFAULT_retry,search:LYRA_DEFAULT_search,select:LYRA_DEFAULT_select,treeLimit:LYRA_DEFAULT_treeLimit,treeSourceError:LYRA_DEFAULT_treeSourceError,treeSourceSummary:LYRA_DEFAULT_treeSourceSummary}}static{this.styles=[LyraElement.styles,styles,hierarchySourceStyles]}get treeSource(){return this._treeSource}set treeSource(value){const previous=this._treeSource;this._treeSource=value,this.sourceModeEpoch++,this.hierarchy?.update(value,this.effectiveLocale,!0),this.requestUpdate("treeSource",previous)}revealSourceKey(key){return this.treeSource===void 0?Promise.resolve(!1):this.hierarchy.reveal(key)}normalizeSourceValue(value,key,childCount){const path=hierarchyKey(hierarchyField(value,"path"));if(path!==key)throw new TypeError("Hierarchy domain key mismatch");const kind=hierarchyField(value,"kind"),status=hierarchyField(value,"gitStatus"),additions=hierarchyField(value,"additions"),deletions=hierarchyField(value,"deletions"),name=hierarchyText(hierarchyField(value,"name"),baseName(path)),mimeType=hierarchyText(hierarchyField(value,"mimeType"));if(name.length+mimeType.length>65536)throw new RangeError("Hierarchy display value exceeds its row budget");return Object.freeze({path,name,kind:kind==="directory"||childCount>0?"directory":"file",mimeType,...typeof status=="string"&&Object.hasOwn(GIT_STATUS_KEY,status)?{gitStatus:status}:{},...typeof additions=="number"&&Number.isSafeInteger(additions)&&additions>=0?{additions}:{},...typeof deletions=="number"&&Number.isSafeInteger(deletions)&&deletions>=0?{deletions}:{}})}announceSource(){const status=this.hierarchy.error?this.localize("treeSourceError"):this.hierarchy.loading?this.localize("loading"):this.sourceSummary();this.sourceAnnouncement!==void 0&&status!==this.sourceAnnouncement&&this.sourceAnnouncer.announce(status),this.sourceAnnouncement=status,this.hierarchy.rowsObserved&&this.sourceAnnouncer.transition("source-rows",this.hierarchy.rowError?"error":"ready",this.hierarchy.rowError?this.localize("treeSourceError"):"")}sourceSummary(){const projection=this.hierarchy.projection;return projection?this.localize("treeSourceSummary",void 0,{visible:getNumberFormat(this.effectiveLocale).format(projection.rows.count),total:getNumberFormat(this.effectiveLocale).format(projection.total)}):""}get nodes(){return this._nodes}set nodes(value){if(value===this.lastNodesSource||value===this._nodes)return;const previous=this._nodes,snapshot=normalizeFileTreeSnapshot(value);this.lastNodesSource=value,this._nodes=snapshot.nodes,this.nodesTruncated=snapshot.truncated,this.nodesLimitReached=snapshot.limitReached,this.rebuildNodeIndexes(),this.requestUpdate("nodes",previous)}get dataTruncated(){const tree=this.renderRoot?.querySelector?.(tag("tree"));return this.nodesTruncated||!!tree?.dataTruncated}get selectedPath(){return this._selectedPath}set selectedPath(value){const previous=this._selectedPath;previous!==value&&(this._selectedPath=value,this.treeSource!==void 0&&this.sourceSelectedWrite!==value&&this.hierarchy?.cancelPending(),this.requestUpdate("selectedPath",previous))}get effectiveMaxNodes(){return Math.max(1,Math.min(1e4,finiteCount(this.maxNodes,1e3)))}get projectsAllNodes(){return this.nodesByPath.size<=this.effectiveMaxNodes}rebuildNodeIndexes(){this.nodesByPath=new Map,this.parentPathByPath=new Map;const stack=[...this.nodes].reverse().map(node=>({node,parentPath:void 0}));for(;stack.length>0;){const{node,parentPath}=stack.pop();if(this.nodesByPath.set(node.path,node),parentPath!==void 0&&this.parentPathByPath.set(node.path,parentPath),node.children)for(let index=node.children.length-1;index>=0;index--)stack.push({node:node.children[index],parentPath:node.path})}}toTreeItem(node){const badges=[];node.gitStatus&&badges.push({text:GIT_STATUS_LETTER[node.gitStatus],tone:GIT_STATUS_TONE[node.gitStatus],label:this.localize(GIT_STATUS_KEY[node.gitStatus])});const description=node.additions!==void 0||node.deletions!==void 0?this.localize("fileTreeDiffSummary",void 0,{additions:getNumberFormat(this.effectiveLocale).format(node.additions??0),deletions:getNumberFormat(this.effectiveLocale).format(node.deletions??0)}):void 0;let children,lazy=isLazyUnloaded(node);return!lazy&&node.children&&(this.projectsAllNodes||this.expandedPaths.has(node.path)?children=node.children.map(c=>this.toTreeItem(c)):lazy=node.children.length>0),{id:node.path,label:node.name??baseName(node.path),selected:this.selectedPath===node.path,...lazy?{lazy}:{},children,badges:badges.length>0?badges:void 0,description,icon:isDirectory(node)?void 0:html`<lr-file-icon
2
2
  mime-type=${node.mimeType??""}
3
3
  name=${node.name??baseName(node.path)}
4
4
  decorative
5
- ></lr-file-icon>`}}get treeItems(){return this.nodes.map(n=>this.toTreeItem(n))}setChildren(path,children){const target=this.nodesByPath.get(path);if(!target)return;let currentPath=path,replacement={...target,children:normalizeFileTreeNodes(children)};for(;;){const parentPath=this.parentPathByPath.get(currentPath);if(parentPath===void 0)break;const parent=this.nodesByPath.get(parentPath);replacement={...parent,children:parent.children?.map(child=>child.path===currentPath?replacement:child)},currentPath=parentPath}this.nodes=this.nodes.map(node=>node.path===currentPath?replacement:node)}ancestorChain(path){if(!this.nodesByPath.has(path))return[];const chain=[];let current=path;for(;current!==void 0;)chain.push(current),current=this.parentPathByPath.get(current);return chain.reverse()}async revealPath(path){const treeEl=this.renderRoot.querySelector(tag("tree"));if(!treeEl)return!1;const chain=this.ancestorChain(path);if(chain.length===0)return!1;if(!this.projectsAllNodes&&chain.slice(0,-1).some(id=>!this.expandedPaths.has(id))){for(const id of chain.slice(0,-1))this.expandedPaths.add(id);this.requestUpdate(),await this.updateComplete,await treeEl.updateComplete}let container=treeEl,node=null;for(const id of chain){if(node=(container instanceof LyraTreeItem?[...container.shadowRoot?.querySelectorAll(tag("tree-item"))??[]]:[...container.querySelectorAll(tag("tree-item"))]).find(n=>n.item?.id===id)??null,!node)return!1;id!==chain[chain.length-1]&&!node.expanded&&(node.expand(),await node.updateComplete),container=node}return await treeEl.updateComplete,node?.focus(),!0}expandAll(){const expandTree=()=>this.renderRoot.querySelector(tag("tree"))?.expandAll();if(this.projectsAllNodes)return expandTree();for(const[path,node]of this.nodesByPath)node.children?.length&&this.expandedPaths.add(path);return this.requestUpdate(),this.updateComplete.then(()=>expandTree())}collapseAll(){this.renderRoot.querySelector(tag("tree"))?.collapseAll()}render(){const hostLabel=this.getAttribute("aria-label");return html`
5
+ ></lr-file-icon>`}}willUpdate(changed){if(super.willUpdate(changed),this.hierarchy.update(this.treeSource,this.effectiveLocale),this.treeSource===void 0){this.sourceMode=!1,this.sourceAnnouncement=void 0;return}const entering=!this.sourceMode;this.sourceMode=!0;const reset=this.sourceControlledEpoch!==this.hierarchy.epoch;if(this.sourceControlledEpoch=this.hierarchy.epoch,changed.has("selectedPath")||entering||reset){const next=this.selectedPath,previous=this.sourceControlledPath;if(this.sourceControlledPath=next,!reset&&next===this.sourceSelectedWrite){this.sourceSelectedWrite=void 0;return}this.sourceSelectedWrite=void 0;const key=next??previous;key!==null&&this.applyControlledSelection(key,next!==null)}}async applyControlledSelection(key,selected){try{hierarchyKey(key)}catch{return}const epoch=this.hierarchy.epoch,source=this.treeSource,owner=this.ownerDocument;await this.updateComplete,await this.hierarchy.whenReady(),!(!this.isConnected||this.ownerDocument!==owner||this.hierarchy.epoch!==epoch||this.treeSource!==source||source===void 0||this.selectedPath!==(selected?key:null))&&this.hierarchy.project({type:"select",key,selected,scope:"item"})}updated(changed){super.updated(changed),this.treeSource!==void 0&&this.announceSource()}adoptedCallback(){super.adoptedCallback(),this.sourceModeEpoch++,this.sourceAnnouncement=void 0,this.hierarchy.adopted()}disconnectedCallback(){super.disconnectedCallback(),this.sourceModeEpoch++,this.sourceAnnouncement=void 0}requestUpdate(name,oldValue){name===void 0&&(this.projectionKey=void 0,this._treeSource!==void 0&&this.hierarchy?.update(this._treeSource,this.effectiveLocale,!0)),super.requestUpdate(name,oldValue)}get treeItems(){const key=[this.nodes,this.effectiveLocale,this.strings,this.effectiveMaxNodes];if(!this.projectionKey||key.some((value,index)=>value!==this.projectionKey[index]))this.projectionKey=key,this.projectedItems=this.nodes.map(node=>this.toTreeItem(node));else if(this.projectedSelection!==this.selectedPath){const affected=new Set;for(const selected of[this.projectedSelection,this.selectedPath])for(let path=selected??void 0;path!==void 0;path=this.parentPathByPath.get(path))affected.add(path);const patch=items=>items.map(item=>affected.has(item.id)?{...item,selected:item.id===this.selectedPath,...item.children?{children:patch(item.children)}:{}}:item);this.projectedItems=patch(this.projectedItems)}return this.projectedSelection=this.selectedPath,this.projectedItems}setChildren(path,children){const target=this.nodesByPath.get(path);if(!target)return;let currentPath=path,replacement={...target,children:normalizeFileTreeNodes(children)};for(;;){const parentPath=this.parentPathByPath.get(currentPath);if(parentPath===void 0)break;const parent=this.nodesByPath.get(parentPath);replacement={...parent,children:parent.children?.map(child=>child.path===currentPath?replacement:child)},currentPath=parentPath}this.nodes=this.nodes.map(node=>node.path===currentPath?replacement:node)}ancestorChain(path){if(!this.nodesByPath.has(path))return[];const chain=[];let current=path;for(;current!==void 0;)chain.push(current),current=this.parentPathByPath.get(current);return chain.reverse()}async revealPath(path){if(this.treeSource!==void 0)return this.revealSourceKey(path);const epoch=this.sourceModeEpoch,owner=this.ownerDocument,current=()=>this.isConnected&&this.ownerDocument===owner&&this.sourceModeEpoch===epoch&&this.treeSource===void 0,treeEl=this.renderRoot.querySelector(tag("tree"));if(!treeEl)return!1;const chain=this.ancestorChain(path);if(chain.length===0)return!1;if(!this.projectsAllNodes&&chain.slice(0,-1).some(id=>!this.expandedPaths.has(id))){for(const id of chain.slice(0,-1))this.expandedPaths.add(id);if(this.requestUpdate(),await this.updateComplete,!current()||(await treeEl.updateComplete,!current()))return!1}let container=treeEl,node=null;for(const id of chain){if(node=(container instanceof LyraTreeItem?[...container.shadowRoot?.querySelectorAll(tag("tree-item"))??[]]:[...container.querySelectorAll(tag("tree-item"))]).find(n=>n.item?.id===id)??null,!node||id!==chain[chain.length-1]&&!node.expanded&&(node.expand(),await node.updateComplete,!current()))return!1;container=node}return await treeEl.updateComplete,current()?(node?.focus(),!0):!1}expandAll(){if(this.treeSource!==void 0)return;const expandTree=()=>this.renderRoot.querySelector(tag("tree"))?.expandAll();if(this.projectsAllNodes)return expandTree();for(const[path,node]of this.nodesByPath)node.children?.length&&this.expandedPaths.add(path);return this.requestUpdate(),this.updateComplete.then(()=>expandTree())}collapseAll(){this.treeSource===void 0&&this.renderRoot.querySelector(tag("tree"))?.collapseAll()}render(){if(this.treeSource!==void 0)return hierarchySourceView(this.hierarchy,{label:this.getAttribute("aria-label")??this.label??this.localize("fileTreeLabel"),rtl:this.effectiveDirection==="rtl",multiple:!1,loading:this.localize("loading"),error:this.localize("treeSourceError"),empty:this.localize("noData"),retry:this.localize("retry"),expand:this.localize("expand"),collapse:this.localize("collapse"),summary:this.sourceSummary(),name:value=>value.name||value.path,content:value=>{const display=this.toTreeItem(value);return html`${display.icon??nothing}${display.label}${display.description}${display.badges?.map(badge=>html`<span aria-label=${badge.label||nothing}>${badge.text}</span>`)}`},select:row=>{this.hierarchy.project({type:"select",key:row.key,selected:!0,scope:"item"},!0,row)}});const hostLabel=this.getAttribute("aria-label");return html`
6
6
  <div part="base">
7
7
  <lr-tree
8
+ .maxNodes=${this.effectiveMaxNodes}
8
9
  .data=${this.treeItems}
9
10
  label=${hostLabel??(this.label==null?this.localize("fileTreeLabel"):this.label)}
10
11
  @lr-node-select=${this.onNodeSelect}
@@ -19,4 +20,4 @@ import{__decorate}from"tslib";import{html,nothing}from"lit";import{property}from
19
20
  ></lr-tree>
20
21
  ${this.nodesLimitReached?html`<div part="limit">${this.localize("treeLimit",void 0,{count:getNumberFormat(this.effectiveLocale).format(MAX_FILE_TREE_NODES)})}</div>`:nothing}
21
22
  </div>
22
- `}}__decorate([property({attribute:!1})],LyraFileTree.prototype,"nodes",null),__decorate([property({attribute:"selected-path"})],LyraFileTree.prototype,"selectedPath",void 0),__decorate([property()],LyraFileTree.prototype,"label",void 0);export{GIT_STATUSES2 as GIT_STATUSES,LyraFileTree};
23
+ `}}__decorate([property({attribute:!1})],LyraFileTree.prototype,"treeSource",null),__decorate([property({attribute:!1})],LyraFileTree.prototype,"nodes",null),__decorate([property({attribute:"selected-path"})],LyraFileTree.prototype,"selectedPath",null),__decorate([property({type:Number,attribute:"max-nodes"})],LyraFileTree.prototype,"maxNodes",void 0),__decorate([property()],LyraFileTree.prototype,"label",void 0);export{GIT_STATUSES2 as GIT_STATUSES,LyraFileTree};