@contraagent/elements 0.0.0-stage → 0.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 (609) hide show
  1. package/README.md +72 -2
  2. package/custom-elements.json +4260 -0
  3. package/dist/charts/bar-chart.d.ts +32 -0
  4. package/dist/charts/bar-chart.d.ts.map +1 -0
  5. package/dist/charts/bar-chart.js +70 -0
  6. package/dist/charts/bar-chart.js.map +1 -0
  7. package/dist/charts/base.d.ts +48 -0
  8. package/dist/charts/base.d.ts.map +1 -0
  9. package/dist/charts/base.js +203 -0
  10. package/dist/charts/base.js.map +1 -0
  11. package/dist/charts/column-chart.d.ts +42 -0
  12. package/dist/charts/column-chart.d.ts.map +1 -0
  13. package/dist/charts/column-chart.js +146 -0
  14. package/dist/charts/column-chart.js.map +1 -0
  15. package/dist/charts/heatmap.d.ts +42 -0
  16. package/dist/charts/heatmap.d.ts.map +1 -0
  17. package/dist/charts/heatmap.js +124 -0
  18. package/dist/charts/heatmap.js.map +1 -0
  19. package/dist/charts/index.d.ts +9 -0
  20. package/dist/charts/index.d.ts.map +1 -0
  21. package/dist/charts/index.js +11 -0
  22. package/dist/charts/index.js.map +1 -0
  23. package/dist/charts/line-chart.d.ts +36 -0
  24. package/dist/charts/line-chart.d.ts.map +1 -0
  25. package/dist/charts/line-chart.js +118 -0
  26. package/dist/charts/line-chart.js.map +1 -0
  27. package/dist/charts/scale.d.ts +32 -0
  28. package/dist/charts/scale.d.ts.map +1 -0
  29. package/dist/charts/scale.js +50 -0
  30. package/dist/charts/scale.js.map +1 -0
  31. package/dist/charts/state-grid.d.ts +64 -0
  32. package/dist/charts/state-grid.d.ts.map +1 -0
  33. package/dist/charts/state-grid.js +223 -0
  34. package/dist/charts/state-grid.js.map +1 -0
  35. package/dist/charts/types.d.ts +34 -0
  36. package/dist/charts/types.d.ts.map +1 -0
  37. package/dist/charts/types.js +11 -0
  38. package/dist/charts/types.js.map +1 -0
  39. package/dist/checks/check-table.d.ts +32 -0
  40. package/dist/checks/check-table.d.ts.map +1 -0
  41. package/dist/checks/check-table.js +94 -0
  42. package/dist/checks/check-table.js.map +1 -0
  43. package/dist/checks/index.d.ts +4 -0
  44. package/dist/checks/index.d.ts.map +1 -0
  45. package/dist/checks/index.js +6 -0
  46. package/dist/checks/index.js.map +1 -0
  47. package/dist/checks/styles.d.ts +5 -0
  48. package/dist/checks/styles.d.ts.map +1 -0
  49. package/dist/checks/styles.js +30 -0
  50. package/dist/checks/styles.js.map +1 -0
  51. package/dist/checks/types.d.ts +35 -0
  52. package/dist/checks/types.d.ts.map +1 -0
  53. package/dist/checks/types.js +12 -0
  54. package/dist/checks/types.js.map +1 -0
  55. package/dist/core/clock.d.ts +20 -0
  56. package/dist/core/clock.d.ts.map +1 -0
  57. package/dist/core/clock.js +45 -0
  58. package/dist/core/clock.js.map +1 -0
  59. package/dist/core/define.d.ts +3 -0
  60. package/dist/core/define.d.ts.map +1 -0
  61. package/dist/core/define.js +8 -0
  62. package/dist/core/define.js.map +1 -0
  63. package/dist/core/events.d.ts +78 -0
  64. package/dist/core/events.d.ts.map +1 -0
  65. package/dist/core/events.js +8 -0
  66. package/dist/core/events.js.map +1 -0
  67. package/dist/core/format.d.ts +8 -0
  68. package/dist/core/format.d.ts.map +1 -0
  69. package/dist/core/format.js +28 -0
  70. package/dist/core/format.js.map +1 -0
  71. package/dist/core/frame.d.ts +4 -0
  72. package/dist/core/frame.d.ts.map +1 -0
  73. package/dist/core/frame.js +5 -0
  74. package/dist/core/frame.js.map +1 -0
  75. package/dist/core/strings.d.ts +3 -0
  76. package/dist/core/strings.d.ts.map +1 -0
  77. package/dist/core/strings.js +14 -0
  78. package/dist/core/strings.js.map +1 -0
  79. package/dist/core/tone.d.ts +8 -0
  80. package/dist/core/tone.d.ts.map +1 -0
  81. package/dist/core/tone.js +9 -0
  82. package/dist/core/tone.js.map +1 -0
  83. package/dist/count/count.d.ts +22 -0
  84. package/dist/count/count.d.ts.map +1 -0
  85. package/dist/count/count.js +60 -0
  86. package/dist/count/count.js.map +1 -0
  87. package/dist/count/elapsed.d.ts +18 -0
  88. package/dist/count/elapsed.d.ts.map +1 -0
  89. package/dist/count/elapsed.js +33 -0
  90. package/dist/count/elapsed.js.map +1 -0
  91. package/dist/count/index.d.ts +3 -0
  92. package/dist/count/index.d.ts.map +1 -0
  93. package/dist/count/index.js +5 -0
  94. package/dist/count/index.js.map +1 -0
  95. package/dist/define/all.d.ts +13 -0
  96. package/dist/define/all.d.ts.map +1 -0
  97. package/dist/define/all.js +14 -0
  98. package/dist/define/all.js.map +1 -0
  99. package/dist/define/charts.d.ts +8 -0
  100. package/dist/define/charts.d.ts.map +1 -0
  101. package/dist/define/charts.js +15 -0
  102. package/dist/define/charts.js.map +1 -0
  103. package/dist/define/check-table.d.ts +4 -0
  104. package/dist/define/check-table.d.ts.map +1 -0
  105. package/dist/define/check-table.js +7 -0
  106. package/dist/define/check-table.js.map +1 -0
  107. package/dist/define/count.d.ts +5 -0
  108. package/dist/define/count.d.ts.map +1 -0
  109. package/dist/define/count.js +9 -0
  110. package/dist/define/count.js.map +1 -0
  111. package/dist/define/data-table.d.ts +4 -0
  112. package/dist/define/data-table.d.ts.map +1 -0
  113. package/dist/define/data-table.js +7 -0
  114. package/dist/define/data-table.js.map +1 -0
  115. package/dist/define/graph.d.ts +6 -0
  116. package/dist/define/graph.d.ts.map +1 -0
  117. package/dist/define/graph.js +9 -0
  118. package/dist/define/graph.js.map +1 -0
  119. package/dist/define/json-tree.d.ts +4 -0
  120. package/dist/define/json-tree.d.ts.map +1 -0
  121. package/dist/define/json-tree.js +7 -0
  122. package/dist/define/json-tree.js.map +1 -0
  123. package/dist/define/lanes.d.ts +4 -0
  124. package/dist/define/lanes.d.ts.map +1 -0
  125. package/dist/define/lanes.js +7 -0
  126. package/dist/define/lanes.js.map +1 -0
  127. package/dist/define/markdown.d.ts +4 -0
  128. package/dist/define/markdown.d.ts.map +1 -0
  129. package/dist/define/markdown.js +7 -0
  130. package/dist/define/markdown.js.map +1 -0
  131. package/dist/define/matrix.d.ts +4 -0
  132. package/dist/define/matrix.d.ts.map +1 -0
  133. package/dist/define/matrix.js +7 -0
  134. package/dist/define/matrix.js.map +1 -0
  135. package/dist/define/segmented.d.ts +4 -0
  136. package/dist/define/segmented.d.ts.map +1 -0
  137. package/dist/define/segmented.js +7 -0
  138. package/dist/define/segmented.js.map +1 -0
  139. package/dist/define/tiles.d.ts +5 -0
  140. package/dist/define/tiles.d.ts.map +1 -0
  141. package/dist/define/tiles.js +9 -0
  142. package/dist/define/tiles.js.map +1 -0
  143. package/dist/define/transcript.d.ts +4 -0
  144. package/dist/define/transcript.d.ts.map +1 -0
  145. package/dist/define/transcript.js +7 -0
  146. package/dist/define/transcript.js.map +1 -0
  147. package/dist/graph/arrange.d.ts +43 -0
  148. package/dist/graph/arrange.d.ts.map +1 -0
  149. package/dist/graph/arrange.js +390 -0
  150. package/dist/graph/arrange.js.map +1 -0
  151. package/dist/graph/card.d.ts +71 -0
  152. package/dist/graph/card.d.ts.map +1 -0
  153. package/dist/graph/card.js +185 -0
  154. package/dist/graph/card.js.map +1 -0
  155. package/dist/graph/host.d.ts +82 -0
  156. package/dist/graph/host.d.ts.map +1 -0
  157. package/dist/graph/host.js +21 -0
  158. package/dist/graph/host.js.map +1 -0
  159. package/dist/graph/icons.d.ts +7 -0
  160. package/dist/graph/icons.d.ts.map +1 -0
  161. package/dist/graph/icons.js +18 -0
  162. package/dist/graph/icons.js.map +1 -0
  163. package/dist/graph/index.d.ts +15 -0
  164. package/dist/graph/index.d.ts.map +1 -0
  165. package/dist/graph/index.js +17 -0
  166. package/dist/graph/index.js.map +1 -0
  167. package/dist/graph/layered-graph.d.ts +226 -0
  168. package/dist/graph/layered-graph.d.ts.map +1 -0
  169. package/dist/graph/layered-graph.js +396 -0
  170. package/dist/graph/layered-graph.js.map +1 -0
  171. package/dist/graph/layout.d.ts +80 -0
  172. package/dist/graph/layout.d.ts.map +1 -0
  173. package/dist/graph/layout.js +264 -0
  174. package/dist/graph/layout.js.map +1 -0
  175. package/dist/graph/marks.d.ts +24 -0
  176. package/dist/graph/marks.d.ts.map +1 -0
  177. package/dist/graph/marks.js +38 -0
  178. package/dist/graph/marks.js.map +1 -0
  179. package/dist/graph/nav.d.ts +14 -0
  180. package/dist/graph/nav.d.ts.map +1 -0
  181. package/dist/graph/nav.js +14 -0
  182. package/dist/graph/nav.js.map +1 -0
  183. package/dist/graph/pan-zoom.d.ts +80 -0
  184. package/dist/graph/pan-zoom.d.ts.map +1 -0
  185. package/dist/graph/pan-zoom.js +191 -0
  186. package/dist/graph/pan-zoom.js.map +1 -0
  187. package/dist/graph/paths.d.ts +9 -0
  188. package/dist/graph/paths.d.ts.map +1 -0
  189. package/dist/graph/paths.js +44 -0
  190. package/dist/graph/paths.js.map +1 -0
  191. package/dist/graph/place-card.d.ts +36 -0
  192. package/dist/graph/place-card.d.ts.map +1 -0
  193. package/dist/graph/place-card.js +68 -0
  194. package/dist/graph/place-card.js.map +1 -0
  195. package/dist/graph/strings.d.ts +50 -0
  196. package/dist/graph/strings.d.ts.map +1 -0
  197. package/dist/graph/strings.js +37 -0
  198. package/dist/graph/strings.js.map +1 -0
  199. package/dist/graph/styles.d.ts +2 -0
  200. package/dist/graph/styles.d.ts.map +1 -0
  201. package/dist/graph/styles.js +203 -0
  202. package/dist/graph/styles.js.map +1 -0
  203. package/dist/graph/types.d.ts +184 -0
  204. package/dist/graph/types.d.ts.map +1 -0
  205. package/dist/graph/types.js +2 -0
  206. package/dist/graph/types.js.map +1 -0
  207. package/dist/graph/view.d.ts +17 -0
  208. package/dist/graph/view.d.ts.map +1 -0
  209. package/dist/graph/view.js +21 -0
  210. package/dist/graph/view.js.map +1 -0
  211. package/dist/graph/views/dag.d.ts +10 -0
  212. package/dist/graph/views/dag.d.ts.map +1 -0
  213. package/dist/graph/views/dag.js +292 -0
  214. package/dist/graph/views/dag.js.map +1 -0
  215. package/dist/graph/views/foot.d.ts +8 -0
  216. package/dist/graph/views/foot.d.ts.map +1 -0
  217. package/dist/graph/views/foot.js +103 -0
  218. package/dist/graph/views/foot.js.map +1 -0
  219. package/dist/graph/views/node-table.d.ts +17 -0
  220. package/dist/graph/views/node-table.d.ts.map +1 -0
  221. package/dist/graph/views/node-table.js +80 -0
  222. package/dist/graph/views/node-table.js.map +1 -0
  223. package/dist/index.d.ts +22 -0
  224. package/dist/index.d.ts.map +1 -0
  225. package/dist/index.js +26 -0
  226. package/dist/index.js.map +1 -0
  227. package/dist/json/index.d.ts +2 -0
  228. package/dist/json/index.d.ts.map +1 -0
  229. package/dist/json/index.js +3 -0
  230. package/dist/json/index.js.map +1 -0
  231. package/dist/json/json-tree.d.ts +21 -0
  232. package/dist/json/json-tree.d.ts.map +1 -0
  233. package/dist/json/json-tree.js +51 -0
  234. package/dist/json/json-tree.js.map +1 -0
  235. package/dist/lanes/index.d.ts +5 -0
  236. package/dist/lanes/index.d.ts.map +1 -0
  237. package/dist/lanes/index.js +7 -0
  238. package/dist/lanes/index.js.map +1 -0
  239. package/dist/lanes/lanes.d.ts +56 -0
  240. package/dist/lanes/lanes.d.ts.map +1 -0
  241. package/dist/lanes/lanes.js +160 -0
  242. package/dist/lanes/lanes.js.map +1 -0
  243. package/dist/lanes/stack.d.ts +26 -0
  244. package/dist/lanes/stack.d.ts.map +1 -0
  245. package/dist/lanes/stack.js +43 -0
  246. package/dist/lanes/stack.js.map +1 -0
  247. package/dist/lanes/styles.d.ts +2 -0
  248. package/dist/lanes/styles.d.ts.map +1 -0
  249. package/dist/lanes/styles.js +30 -0
  250. package/dist/lanes/styles.js.map +1 -0
  251. package/dist/lanes/types.d.ts +41 -0
  252. package/dist/lanes/types.d.ts.map +1 -0
  253. package/dist/lanes/types.js +6 -0
  254. package/dist/lanes/types.js.map +1 -0
  255. package/dist/markdown/cae-markdown.d.ts +37 -0
  256. package/dist/markdown/cae-markdown.d.ts.map +1 -0
  257. package/dist/markdown/cae-markdown.js +68 -0
  258. package/dist/markdown/cae-markdown.js.map +1 -0
  259. package/dist/markdown/highlight.d.ts +5 -0
  260. package/dist/markdown/highlight.d.ts.map +1 -0
  261. package/dist/markdown/highlight.js +86 -0
  262. package/dist/markdown/highlight.js.map +1 -0
  263. package/dist/markdown/index.d.ts +4 -0
  264. package/dist/markdown/index.d.ts.map +1 -0
  265. package/dist/markdown/index.js +6 -0
  266. package/dist/markdown/index.js.map +1 -0
  267. package/dist/markdown/markdown.d.ts +4 -0
  268. package/dist/markdown/markdown.d.ts.map +1 -0
  269. package/dist/markdown/markdown.js +105 -0
  270. package/dist/markdown/markdown.js.map +1 -0
  271. package/dist/matrix/grid-step.d.ts +8 -0
  272. package/dist/matrix/grid-step.d.ts.map +1 -0
  273. package/dist/matrix/grid-step.js +69 -0
  274. package/dist/matrix/grid-step.js.map +1 -0
  275. package/dist/matrix/index.d.ts +5 -0
  276. package/dist/matrix/index.d.ts.map +1 -0
  277. package/dist/matrix/index.js +7 -0
  278. package/dist/matrix/index.js.map +1 -0
  279. package/dist/matrix/mark-matrix.d.ts +97 -0
  280. package/dist/matrix/mark-matrix.d.ts.map +1 -0
  281. package/dist/matrix/mark-matrix.js +272 -0
  282. package/dist/matrix/mark-matrix.js.map +1 -0
  283. package/dist/matrix/styles.d.ts +4 -0
  284. package/dist/matrix/styles.d.ts.map +1 -0
  285. package/dist/matrix/styles.js +47 -0
  286. package/dist/matrix/styles.js.map +1 -0
  287. package/dist/matrix/types.d.ts +79 -0
  288. package/dist/matrix/types.d.ts.map +1 -0
  289. package/dist/matrix/types.js +5 -0
  290. package/dist/matrix/types.js.map +1 -0
  291. package/dist/primitives/fact-line.d.ts +14 -0
  292. package/dist/primitives/fact-line.d.ts.map +1 -0
  293. package/dist/primitives/fact-line.js +18 -0
  294. package/dist/primitives/fact-line.js.map +1 -0
  295. package/dist/primitives/icon.d.ts +14 -0
  296. package/dist/primitives/icon.d.ts.map +1 -0
  297. package/dist/primitives/icon.js +19 -0
  298. package/dist/primitives/icon.js.map +1 -0
  299. package/dist/primitives/index.d.ts +10 -0
  300. package/dist/primitives/index.d.ts.map +1 -0
  301. package/dist/primitives/index.js +13 -0
  302. package/dist/primitives/index.js.map +1 -0
  303. package/dist/primitives/legend.d.ts +28 -0
  304. package/dist/primitives/legend.d.ts.map +1 -0
  305. package/dist/primitives/legend.js +28 -0
  306. package/dist/primitives/legend.js.map +1 -0
  307. package/dist/primitives/pill.d.ts +23 -0
  308. package/dist/primitives/pill.d.ts.map +1 -0
  309. package/dist/primitives/pill.js +40 -0
  310. package/dist/primitives/pill.js.map +1 -0
  311. package/dist/primitives/roving-focus.d.ts +47 -0
  312. package/dist/primitives/roving-focus.d.ts.map +1 -0
  313. package/dist/primitives/roving-focus.js +111 -0
  314. package/dist/primitives/roving-focus.js.map +1 -0
  315. package/dist/primitives/segmented.d.ts +41 -0
  316. package/dist/primitives/segmented.d.ts.map +1 -0
  317. package/dist/primitives/segmented.js +88 -0
  318. package/dist/primitives/segmented.js.map +1 -0
  319. package/dist/primitives/share-bar.d.ts +37 -0
  320. package/dist/primitives/share-bar.d.ts.map +1 -0
  321. package/dist/primitives/share-bar.js +69 -0
  322. package/dist/primitives/share-bar.js.map +1 -0
  323. package/dist/primitives/states.d.ts +19 -0
  324. package/dist/primitives/states.d.ts.map +1 -0
  325. package/dist/primitives/states.js +11 -0
  326. package/dist/primitives/states.js.map +1 -0
  327. package/dist/primitives/window.d.ts +24 -0
  328. package/dist/primitives/window.d.ts.map +1 -0
  329. package/dist/primitives/window.js +56 -0
  330. package/dist/primitives/window.js.map +1 -0
  331. package/dist/styles/chips.d.ts +2 -0
  332. package/dist/styles/chips.d.ts.map +1 -0
  333. package/dist/styles/chips.js +18 -0
  334. package/dist/styles/chips.js.map +1 -0
  335. package/dist/styles/facts.d.ts +2 -0
  336. package/dist/styles/facts.d.ts.map +1 -0
  337. package/dist/styles/facts.js +7 -0
  338. package/dist/styles/facts.js.map +1 -0
  339. package/dist/styles/index.d.ts +16 -0
  340. package/dist/styles/index.d.ts.map +1 -0
  341. package/dist/styles/index.js +15 -0
  342. package/dist/styles/index.js.map +1 -0
  343. package/dist/styles/layout.d.ts +2 -0
  344. package/dist/styles/layout.d.ts.map +1 -0
  345. package/dist/styles/layout.js +33 -0
  346. package/dist/styles/layout.js.map +1 -0
  347. package/dist/styles/marks.d.ts +2 -0
  348. package/dist/styles/marks.d.ts.map +1 -0
  349. package/dist/styles/marks.js +30 -0
  350. package/dist/styles/marks.js.map +1 -0
  351. package/dist/styles/meter.d.ts +3 -0
  352. package/dist/styles/meter.d.ts.map +1 -0
  353. package/dist/styles/meter.js +9 -0
  354. package/dist/styles/meter.js.map +1 -0
  355. package/dist/styles/motion.d.ts +2 -0
  356. package/dist/styles/motion.d.ts.map +1 -0
  357. package/dist/styles/motion.js +27 -0
  358. package/dist/styles/motion.js.map +1 -0
  359. package/dist/styles/prose.d.ts +3 -0
  360. package/dist/styles/prose.d.ts.map +1 -0
  361. package/dist/styles/prose.js +59 -0
  362. package/dist/styles/prose.js.map +1 -0
  363. package/dist/styles/reset.d.ts +2 -0
  364. package/dist/styles/reset.d.ts.map +1 -0
  365. package/dist/styles/reset.js +13 -0
  366. package/dist/styles/reset.js.map +1 -0
  367. package/dist/styles/status.d.ts +2 -0
  368. package/dist/styles/status.d.ts.map +1 -0
  369. package/dist/styles/status.js +52 -0
  370. package/dist/styles/status.js.map +1 -0
  371. package/dist/styles/text.d.ts +2 -0
  372. package/dist/styles/text.d.ts.map +1 -0
  373. package/dist/styles/text.js +21 -0
  374. package/dist/styles/text.js.map +1 -0
  375. package/dist/styles/tokens.d.ts +8 -0
  376. package/dist/styles/tokens.d.ts.map +1 -0
  377. package/dist/styles/tokens.js +32 -0
  378. package/dist/styles/tokens.js.map +1 -0
  379. package/dist/table/data-table.d.ts +106 -0
  380. package/dist/table/data-table.d.ts.map +1 -0
  381. package/dist/table/data-table.js +408 -0
  382. package/dist/table/data-table.js.map +1 -0
  383. package/dist/table/index.d.ts +4 -0
  384. package/dist/table/index.d.ts.map +1 -0
  385. package/dist/table/index.js +6 -0
  386. package/dist/table/index.js.map +1 -0
  387. package/dist/table/styles.d.ts +2 -0
  388. package/dist/table/styles.d.ts.map +1 -0
  389. package/dist/table/styles.js +32 -0
  390. package/dist/table/styles.js.map +1 -0
  391. package/dist/table/types.d.ts +48 -0
  392. package/dist/table/types.d.ts.map +1 -0
  393. package/dist/table/types.js +30 -0
  394. package/dist/table/types.js.map +1 -0
  395. package/dist/themes/boot.d.ts +7 -0
  396. package/dist/themes/boot.d.ts.map +1 -0
  397. package/dist/themes/boot.js +14 -0
  398. package/dist/themes/boot.js.map +1 -0
  399. package/dist/themes/choice.d.ts +16 -0
  400. package/dist/themes/choice.d.ts.map +1 -0
  401. package/dist/themes/choice.js +45 -0
  402. package/dist/themes/choice.js.map +1 -0
  403. package/dist/themes/data.d.ts +43 -0
  404. package/dist/themes/data.d.ts.map +1 -0
  405. package/dist/themes/data.js +408 -0
  406. package/dist/themes/data.js.map +1 -0
  407. package/dist/themes/index.d.ts +7 -0
  408. package/dist/themes/index.d.ts.map +1 -0
  409. package/dist/themes/index.js +11 -0
  410. package/dist/themes/index.js.map +1 -0
  411. package/dist/themes/sheet.d.ts +16 -0
  412. package/dist/themes/sheet.d.ts.map +1 -0
  413. package/dist/themes/sheet.js +28 -0
  414. package/dist/themes/sheet.js.map +1 -0
  415. package/dist/themes/token-meanings.d.ts +3 -0
  416. package/dist/themes/token-meanings.d.ts.map +1 -0
  417. package/dist/themes/token-meanings.js +67 -0
  418. package/dist/themes/token-meanings.js.map +1 -0
  419. package/dist/themes/tokens-list.d.ts +14 -0
  420. package/dist/themes/tokens-list.d.ts.map +1 -0
  421. package/dist/themes/tokens-list.js +69 -0
  422. package/dist/themes/tokens-list.js.map +1 -0
  423. package/dist/tiles/index.d.ts +4 -0
  424. package/dist/tiles/index.d.ts.map +1 -0
  425. package/dist/tiles/index.js +6 -0
  426. package/dist/tiles/index.js.map +1 -0
  427. package/dist/tiles/stat-tiles.d.ts +40 -0
  428. package/dist/tiles/stat-tiles.d.ts.map +1 -0
  429. package/dist/tiles/stat-tiles.js +99 -0
  430. package/dist/tiles/stat-tiles.js.map +1 -0
  431. package/dist/tiles/styles.d.ts +2 -0
  432. package/dist/tiles/styles.d.ts.map +1 -0
  433. package/dist/tiles/styles.js +23 -0
  434. package/dist/tiles/styles.js.map +1 -0
  435. package/dist/tiles/types.d.ts +22 -0
  436. package/dist/tiles/types.d.ts.map +1 -0
  437. package/dist/tiles/types.js +2 -0
  438. package/dist/tiles/types.js.map +1 -0
  439. package/dist/transcript/follow-scroll.d.ts +21 -0
  440. package/dist/transcript/follow-scroll.d.ts.map +1 -0
  441. package/dist/transcript/follow-scroll.js +76 -0
  442. package/dist/transcript/follow-scroll.js.map +1 -0
  443. package/dist/transcript/index.d.ts +5 -0
  444. package/dist/transcript/index.d.ts.map +1 -0
  445. package/dist/transcript/index.js +7 -0
  446. package/dist/transcript/index.js.map +1 -0
  447. package/dist/transcript/styles.d.ts +2 -0
  448. package/dist/transcript/styles.d.ts.map +1 -0
  449. package/dist/transcript/styles.js +114 -0
  450. package/dist/transcript/styles.js.map +1 -0
  451. package/dist/transcript/tags.d.ts +6 -0
  452. package/dist/transcript/tags.d.ts.map +1 -0
  453. package/dist/transcript/tags.js +13 -0
  454. package/dist/transcript/tags.js.map +1 -0
  455. package/dist/transcript/tool-card.d.ts +16 -0
  456. package/dist/transcript/tool-card.d.ts.map +1 -0
  457. package/dist/transcript/tool-card.js +87 -0
  458. package/dist/transcript/tool-card.js.map +1 -0
  459. package/dist/transcript/transcript.d.ts +103 -0
  460. package/dist/transcript/transcript.d.ts.map +1 -0
  461. package/dist/transcript/transcript.js +397 -0
  462. package/dist/transcript/transcript.js.map +1 -0
  463. package/dist/transcript/types.d.ts +161 -0
  464. package/dist/transcript/types.d.ts.map +1 -0
  465. package/dist/transcript/types.js +25 -0
  466. package/dist/transcript/types.js.map +1 -0
  467. package/docs/charts.md +58 -0
  468. package/docs/check-table.md +40 -0
  469. package/docs/data-table.md +57 -0
  470. package/docs/examples/charts.ts +61 -0
  471. package/docs/examples/check-table.ts +19 -0
  472. package/docs/examples/ci-pipeline.ts +271 -0
  473. package/docs/examples/data-table.ts +39 -0
  474. package/docs/examples/graph.ts +57 -0
  475. package/docs/examples/lanes.ts +40 -0
  476. package/docs/examples/matrix.ts +56 -0
  477. package/docs/examples/page.css +34 -0
  478. package/docs/examples/segmented.ts +18 -0
  479. package/docs/examples/status.ts +30 -0
  480. package/docs/examples/theme.css +54 -0
  481. package/docs/examples/tiles.ts +27 -0
  482. package/docs/examples/transcript.ts +59 -0
  483. package/docs/graph.md +112 -0
  484. package/docs/lanes.md +48 -0
  485. package/docs/matrix.md +34 -0
  486. package/docs/page.md +87 -0
  487. package/docs/primitives.md +57 -0
  488. package/docs/strings.md +16 -0
  489. package/docs/theming.md +147 -0
  490. package/docs/tiles.md +40 -0
  491. package/docs/transcript.md +73 -0
  492. package/docs/tsconfig.json +20 -0
  493. package/package.json +161 -4
  494. package/src/charts/bar-chart.ts +74 -0
  495. package/src/charts/base.ts +188 -0
  496. package/src/charts/column-chart.ts +153 -0
  497. package/src/charts/heatmap.ts +129 -0
  498. package/src/charts/index.ts +10 -0
  499. package/src/charts/line-chart.ts +128 -0
  500. package/src/charts/scale.ts +61 -0
  501. package/src/charts/state-grid.ts +245 -0
  502. package/src/charts/types.ts +48 -0
  503. package/src/checks/check-table.ts +85 -0
  504. package/src/checks/index.ts +5 -0
  505. package/src/checks/styles.ts +31 -0
  506. package/src/checks/types.ts +48 -0
  507. package/src/core/clock.ts +46 -0
  508. package/src/core/define.ts +7 -0
  509. package/src/core/events.ts +89 -0
  510. package/src/core/format.ts +25 -0
  511. package/src/core/frame.ts +5 -0
  512. package/src/core/strings.ts +11 -0
  513. package/src/core/tone.ts +14 -0
  514. package/src/count/count.ts +54 -0
  515. package/src/count/elapsed.ts +33 -0
  516. package/src/count/index.ts +4 -0
  517. package/src/define/all.ts +13 -0
  518. package/src/define/charts.ts +17 -0
  519. package/src/define/check-table.ts +9 -0
  520. package/src/define/count.ts +11 -0
  521. package/src/define/data-table.ts +9 -0
  522. package/src/define/graph.ts +11 -0
  523. package/src/define/json-tree.ts +9 -0
  524. package/src/define/lanes.ts +9 -0
  525. package/src/define/markdown.ts +9 -0
  526. package/src/define/matrix.ts +9 -0
  527. package/src/define/segmented.ts +9 -0
  528. package/src/define/tiles.ts +11 -0
  529. package/src/define/transcript.ts +9 -0
  530. package/src/graph/arrange.ts +399 -0
  531. package/src/graph/card.ts +209 -0
  532. package/src/graph/host.ts +100 -0
  533. package/src/graph/icons.ts +23 -0
  534. package/src/graph/index.ts +16 -0
  535. package/src/graph/layered-graph.ts +417 -0
  536. package/src/graph/layout.ts +331 -0
  537. package/src/graph/marks.ts +42 -0
  538. package/src/graph/nav.ts +19 -0
  539. package/src/graph/pan-zoom.ts +219 -0
  540. package/src/graph/paths.ts +41 -0
  541. package/src/graph/place-card.ts +93 -0
  542. package/src/graph/strings.ts +86 -0
  543. package/src/graph/styles.ts +204 -0
  544. package/src/graph/types.ts +202 -0
  545. package/src/graph/view.ts +28 -0
  546. package/src/graph/views/dag.ts +294 -0
  547. package/src/graph/views/foot.ts +109 -0
  548. package/src/graph/views/node-table.ts +90 -0
  549. package/src/index.ts +25 -0
  550. package/src/json/index.ts +2 -0
  551. package/src/json/json-tree.ts +49 -0
  552. package/src/lanes/index.ts +6 -0
  553. package/src/lanes/lanes.ts +143 -0
  554. package/src/lanes/stack.ts +51 -0
  555. package/src/lanes/styles.ts +30 -0
  556. package/src/lanes/types.ts +51 -0
  557. package/src/markdown/cae-markdown.ts +64 -0
  558. package/src/markdown/highlight.ts +94 -0
  559. package/src/markdown/index.ts +5 -0
  560. package/src/markdown/markdown.ts +110 -0
  561. package/src/matrix/grid-step.ts +58 -0
  562. package/src/matrix/index.ts +6 -0
  563. package/src/matrix/mark-matrix.ts +285 -0
  564. package/src/matrix/styles.ts +48 -0
  565. package/src/matrix/types.ts +83 -0
  566. package/src/primitives/fact-line.ts +26 -0
  567. package/src/primitives/icon.ts +26 -0
  568. package/src/primitives/index.ts +12 -0
  569. package/src/primitives/legend.ts +56 -0
  570. package/src/primitives/pill.ts +58 -0
  571. package/src/primitives/roving-focus.ts +138 -0
  572. package/src/primitives/segmented.ts +92 -0
  573. package/src/primitives/share-bar.ts +94 -0
  574. package/src/primitives/states.ts +28 -0
  575. package/src/primitives/window.ts +65 -0
  576. package/src/styles/chips.ts +18 -0
  577. package/src/styles/facts.ts +7 -0
  578. package/src/styles/index.ts +19 -0
  579. package/src/styles/layout.ts +33 -0
  580. package/src/styles/marks.ts +30 -0
  581. package/src/styles/meter.ts +9 -0
  582. package/src/styles/motion.ts +27 -0
  583. package/src/styles/prose.ts +59 -0
  584. package/src/styles/reset.ts +13 -0
  585. package/src/styles/status.ts +52 -0
  586. package/src/styles/text.ts +21 -0
  587. package/src/styles/tokens.ts +35 -0
  588. package/src/table/data-table.ts +367 -0
  589. package/src/table/index.ts +5 -0
  590. package/src/table/styles.ts +32 -0
  591. package/src/table/types.ts +73 -0
  592. package/src/themes/boot.ts +14 -0
  593. package/src/themes/choice.ts +47 -0
  594. package/src/themes/data.ts +433 -0
  595. package/src/themes/index.ts +10 -0
  596. package/src/themes/sheet.ts +29 -0
  597. package/src/themes/token-meanings.ts +67 -0
  598. package/src/themes/tokens-list.ts +82 -0
  599. package/src/tiles/index.ts +5 -0
  600. package/src/tiles/stat-tiles.ts +92 -0
  601. package/src/tiles/styles.ts +23 -0
  602. package/src/tiles/types.ts +20 -0
  603. package/src/transcript/follow-scroll.ts +72 -0
  604. package/src/transcript/index.ts +6 -0
  605. package/src/transcript/styles.ts +114 -0
  606. package/src/transcript/tags.ts +18 -0
  607. package/src/transcript/tool-card.ts +103 -0
  608. package/src/transcript/transcript.ts +358 -0
  609. package/src/transcript/types.ts +167 -0
@@ -0,0 +1,106 @@
1
+ import { LitElement, type CSSResult, type PropertyValues, type TemplateResult } from 'lit';
2
+ import { type Tone } from '../core/tone.js';
3
+ import { type DataColumn, type DataTableStrings, type SortState } from './types.js';
4
+ /**
5
+ * A table of rows, one per item, in a real `<table>`: a header cell per column
6
+ * (`scope="col"`), the first `rowHeader` column as the row's header. The rows
7
+ * are one tab stop: the arrow keys, Home and End move between them, and Enter or
8
+ * a click is the row's primary action (`cae-activate`), or chooses it as the
9
+ * selection when the table is not `activatable` (`cae-select`). A sortable
10
+ * header sends `cae-sort`; the host orders the rows (`sortRows`) and sets them.
11
+ * Above `windowAt` rows, only the rows on screen are drawn, and a spacer stands
12
+ * for the others: as high as those rows were when drawn, or, for a row not drawn
13
+ * yet, as the rows drawn are on average. Rows may differ in height.
14
+ *
15
+ * Its look: `--cae-data-table-gap` (between the columns), `--cae-data-table-row-padding`,
16
+ * the parts, and `cellStyles` (styles for what the cells draw, added to the
17
+ * table's own).
18
+ *
19
+ * @tagname cae-data-table
20
+ * @fires cae-activate - `{id}`: a row's primary action (a click or Enter, when `activatable`)
21
+ * @fires cae-select - `{id}`: a row chosen as the selection (a click or Enter, when not `activatable`)
22
+ * @fires cae-sort - `{id, direction}`: a sortable header was clicked
23
+ * @csspart table - the `<table>`
24
+ * @csspart caption - the caption
25
+ * @csspart head - the header row's group
26
+ * @csspart header-cell - each header cell
27
+ * @csspart row - each row
28
+ * @csspart row-selected - the selected row
29
+ * @csspart cell - each cell
30
+ * @csspart empty - the cell that stands for no rows
31
+ * @slot caption - the caption, instead of `caption`
32
+ * @slot empty - what the table shows with no rows, instead of `strings.empty`
33
+ */
34
+ export declare class CaeDataTable<R = unknown> extends LitElement {
35
+ static styles: (CSSResult | CSSResult[])[];
36
+ columns: readonly DataColumn<R>[];
37
+ rows: readonly R[];
38
+ /** A row's id: unique among the rows (`data-key`, the `id` of the events). By default its `id`. */
39
+ rowKey: (row: R) => string;
40
+ /** A row's tone (`data-tone` on the row). */
41
+ rowTone?: (row: R) => Tone | undefined;
42
+ /** More attributes on a row (`data-*`), for the host's styles and tests. */
43
+ rowAttrs?: (row: R) => Readonly<Record<string, string>>;
44
+ /** A click or Enter on a row is its primary action (`cae-activate`); otherwise it selects the row (`cae-select`). */
45
+ activatable: boolean;
46
+ /** The id of the selected row. */
47
+ selected: string | null;
48
+ /** The column the rows are ordered by: shown in its header (`aria-sort`). The host orders the rows. */
49
+ sort: SortState | null;
50
+ /** Above this many rows, only the rows on screen are drawn. */
51
+ windowAt: number;
52
+ /** A row's height in px, until rows are measured. */
53
+ rowHeight: number;
54
+ /** The table's caption (its accessible name). */
55
+ caption: string;
56
+ strings: Partial<DataTableStrings>;
57
+ /** Styles for what the cells draw, added after the table's own (the rows are `tr`, the cells `th` and `td`). */
58
+ cellStyles: readonly CSSResult[];
59
+ /** The rows drawn, when windowed. */
60
+ private range;
61
+ /** Each drawn row's height, by its key: what stands for it while it is not drawn. */
62
+ private heights;
63
+ /** Where each row starts (`rowOffsets`), for the rows as they are; null: to work out again. */
64
+ private offsets;
65
+ /** The row that holds the tab stop. */
66
+ private focusKey;
67
+ private scroller;
68
+ private resized;
69
+ private frame;
70
+ /** The next update keeps `range` as set (Home and End set it before the scroller reports). */
71
+ private held;
72
+ private readonly roving;
73
+ private get windowed();
74
+ disconnectedCallback(): void;
75
+ /** Where each row starts: its measured height, else the drawn rows' average. */
76
+ private rowStarts;
77
+ /** The rows on screen, from where the table's body is in its scroller. */
78
+ private visible;
79
+ /** Scrolls the body's first row (or its last, `last`) into the scroller's view. */
80
+ private scrollToEnd;
81
+ private reframe;
82
+ private readonly onScroll;
83
+ /** The nearest ancestor that scrolls the table vertically, across shadow roots; the window when none does. */
84
+ private findScroller;
85
+ private watch;
86
+ private unwatch;
87
+ willUpdate(changed: PropertyValues<this>): void;
88
+ updated(changed: PropertyValues<this>): void;
89
+ /** The rows drawn now. */
90
+ private shown;
91
+ /** The row of an event, and its id. */
92
+ private rowOf;
93
+ private act;
94
+ private readonly onClick;
95
+ private readonly onFocusIn;
96
+ private readonly onKey;
97
+ private header;
98
+ private row;
99
+ render(): TemplateResult<1>;
100
+ }
101
+ declare global {
102
+ interface HTMLElementTagNameMap {
103
+ 'cae-data-table': CaeDataTable;
104
+ }
105
+ }
106
+ //# sourceMappingURL=data-table.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"data-table.d.ts","sourceRoot":"","sources":["../../src/table/data-table.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,408 @@
1
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
2
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
3
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
4
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
5
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
6
+ };
7
+ import { LitElement, adoptStyles, html, nothing } from 'lit';
8
+ import { property, state } from 'lit/decorators.js';
9
+ import { Directive, directive, PartType } from 'lit/directive.js';
10
+ import { repeat } from 'lit/directives/repeat.js';
11
+ import { emit } from '../core/events.js';
12
+ import { withDefaults } from '../core/strings.js';
13
+ import { toneAttr } from '../core/tone.js';
14
+ import { RovingFocusController } from '../primitives/roving-focus.js';
15
+ import { rowOffsets, windowRowsAt } from '../primitives/window.js';
16
+ import { base } from '../styles/index.js';
17
+ import { dataTableStyles } from './styles.js';
18
+ import { DEFAULT_DATA_TABLE_STRINGS, isSortable } from './types.js';
19
+ /** Sets the attributes of a map on an element, and removes those it set before that the map no longer has. */
20
+ class AttrsDirective extends Directive {
21
+ constructor(part) {
22
+ super(part);
23
+ this.names = [];
24
+ if (part.type !== PartType.ELEMENT)
25
+ throw new Error('attrs() goes on an element');
26
+ }
27
+ // eslint-disable-next-line @typescript-eslint/no-unused-vars -- the argument update() reads
28
+ render(_map) {
29
+ return nothing;
30
+ }
31
+ update(part, [map]) {
32
+ const el = part.element;
33
+ const next = Object.keys(map ?? {});
34
+ for (const n of this.names)
35
+ if (!next.includes(n))
36
+ el.removeAttribute(n);
37
+ for (const n of next)
38
+ if (el.getAttribute(n) !== map[n])
39
+ el.setAttribute(n, map[n]);
40
+ this.names = next;
41
+ return nothing;
42
+ }
43
+ }
44
+ const attrs = directive(AttrsDirective);
45
+ /** Interactive content inside a cell: a click on it is its own, not the row's. */
46
+ const INTERACTIVE = new Set(['A', 'BUTTON', 'INPUT', 'SELECT', 'TEXTAREA', 'SUMMARY', 'LABEL']);
47
+ /** The rows drawn before the first measure of the viewport. */
48
+ const FIRST_ROWS = 60;
49
+ /**
50
+ * A table of rows, one per item, in a real `<table>`: a header cell per column
51
+ * (`scope="col"`), the first `rowHeader` column as the row's header. The rows
52
+ * are one tab stop: the arrow keys, Home and End move between them, and Enter or
53
+ * a click is the row's primary action (`cae-activate`), or chooses it as the
54
+ * selection when the table is not `activatable` (`cae-select`). A sortable
55
+ * header sends `cae-sort`; the host orders the rows (`sortRows`) and sets them.
56
+ * Above `windowAt` rows, only the rows on screen are drawn, and a spacer stands
57
+ * for the others: as high as those rows were when drawn, or, for a row not drawn
58
+ * yet, as the rows drawn are on average. Rows may differ in height.
59
+ *
60
+ * Its look: `--cae-data-table-gap` (between the columns), `--cae-data-table-row-padding`,
61
+ * the parts, and `cellStyles` (styles for what the cells draw, added to the
62
+ * table's own).
63
+ *
64
+ * @tagname cae-data-table
65
+ * @fires cae-activate - `{id}`: a row's primary action (a click or Enter, when `activatable`)
66
+ * @fires cae-select - `{id}`: a row chosen as the selection (a click or Enter, when not `activatable`)
67
+ * @fires cae-sort - `{id, direction}`: a sortable header was clicked
68
+ * @csspart table - the `<table>`
69
+ * @csspart caption - the caption
70
+ * @csspart head - the header row's group
71
+ * @csspart header-cell - each header cell
72
+ * @csspart row - each row
73
+ * @csspart row-selected - the selected row
74
+ * @csspart cell - each cell
75
+ * @csspart empty - the cell that stands for no rows
76
+ * @slot caption - the caption, instead of `caption`
77
+ * @slot empty - what the table shows with no rows, instead of `strings.empty`
78
+ */
79
+ export class CaeDataTable extends LitElement {
80
+ constructor() {
81
+ super(...arguments);
82
+ this.columns = [];
83
+ this.rows = [];
84
+ /** A row's id: unique among the rows (`data-key`, the `id` of the events). By default its `id`. */
85
+ this.rowKey = (row) => {
86
+ const id = row.id;
87
+ return typeof id === 'string' || typeof id === 'number' ? String(id) : '';
88
+ };
89
+ /** A click or Enter on a row is its primary action (`cae-activate`); otherwise it selects the row (`cae-select`). */
90
+ this.activatable = true;
91
+ /** The id of the selected row. */
92
+ this.selected = null;
93
+ /** The column the rows are ordered by: shown in its header (`aria-sort`). The host orders the rows. */
94
+ this.sort = null;
95
+ /** Above this many rows, only the rows on screen are drawn. */
96
+ this.windowAt = 200;
97
+ /** A row's height in px, until rows are measured. */
98
+ this.rowHeight = 32;
99
+ /** The table's caption (its accessible name). */
100
+ this.caption = '';
101
+ this.strings = {};
102
+ /** Styles for what the cells draw, added after the table's own (the rows are `tr`, the cells `th` and `td`). */
103
+ this.cellStyles = [];
104
+ /** The rows drawn, when windowed. */
105
+ this.range = { from: 0, to: FIRST_ROWS };
106
+ /** Each drawn row's height, by its key: what stands for it while it is not drawn. */
107
+ this.heights = new Map();
108
+ /** Where each row starts (`rowOffsets`), for the rows as they are; null: to work out again. */
109
+ this.offsets = null;
110
+ /** The row that holds the tab stop. */
111
+ this.focusKey = null;
112
+ this.scroller = null;
113
+ this.resized = null;
114
+ this.frame = 0;
115
+ /** The next update keeps `range` as set (Home and End set it before the scroller reports). */
116
+ this.held = false;
117
+ this.roving = new RovingFocusController(this, {
118
+ items: () => [...this.renderRoot.querySelectorAll('tbody tr[data-key]')],
119
+ layout: 'vertical',
120
+ onMove: (el) => (this.focusKey = el.dataset['key'] ?? null),
121
+ });
122
+ this.onScroll = () => {
123
+ if (this.frame)
124
+ return;
125
+ this.frame = requestAnimationFrame(() => {
126
+ this.frame = 0;
127
+ this.reframe();
128
+ });
129
+ };
130
+ this.onClick = (e) => {
131
+ const r = this.rowOf(e);
132
+ if (r)
133
+ this.act(r.id);
134
+ };
135
+ this.onFocusIn = (e) => {
136
+ const r = this.rowOf(e);
137
+ if (r)
138
+ this.focusKey = r.id;
139
+ };
140
+ this.onKey = (e) => {
141
+ const t = e.composedPath()[0];
142
+ if (!(t instanceof HTMLElement) || t.tagName !== 'TR' || t.dataset['key'] === undefined)
143
+ return;
144
+ if (e.key === 'Enter') {
145
+ e.preventDefault();
146
+ this.act(t.dataset['key']);
147
+ return;
148
+ }
149
+ // Windowed, the first and last rows may not be drawn: draw them, then move there.
150
+ if (this.windowed && (e.key === 'Home' || e.key === 'End')) {
151
+ e.preventDefault();
152
+ e.stopPropagation();
153
+ const last = e.key === 'End';
154
+ const row = this.rows[last ? this.rows.length - 1 : 0];
155
+ if (row === undefined)
156
+ return;
157
+ this.focusKey = this.rowKey(row);
158
+ const n = this.rows.length;
159
+ const span = Math.max(1, this.range.to - this.range.from);
160
+ this.scrollToEnd(last);
161
+ // Drawn at once, before the scroll reports where the view is.
162
+ this.range = last ? { from: Math.max(0, n - span), to: n } : { from: 0, to: span };
163
+ this.held = true;
164
+ void this.updateComplete.then(() => this.renderRoot.querySelector(`tbody tr[data-key="${CSS.escape(this.focusKey ?? '')}"]`)?.focus());
165
+ }
166
+ };
167
+ }
168
+ static { this.styles = [base, dataTableStyles]; }
169
+ get windowed() {
170
+ return this.rows.length > this.windowAt;
171
+ }
172
+ disconnectedCallback() {
173
+ super.disconnectedCallback();
174
+ this.unwatch();
175
+ }
176
+ /** Where each row starts: its measured height, else the drawn rows' average. */
177
+ rowStarts() {
178
+ if (this.offsets)
179
+ return this.offsets;
180
+ let sum = 0;
181
+ for (const h of this.heights.values())
182
+ sum += h;
183
+ const typical = this.heights.size ? sum / this.heights.size : this.rowHeight;
184
+ return (this.offsets = rowOffsets(this.rows.length, (i) => this.heights.get(this.rowKey(this.rows[i])) ?? typical));
185
+ }
186
+ /** The rows on screen, from where the table's body is in its scroller. */
187
+ visible() {
188
+ const starts = this.rowStarts();
189
+ const body = this.renderRoot.querySelector('tbody');
190
+ // Before the first measure of the view: the first rows, about FIRST_ROWS of them.
191
+ if (!body || !this.scroller)
192
+ return windowRowsAt(starts, 0, (starts.at(-1) / Math.max(1, this.rows.length)) * FIRST_ROWS, 0);
193
+ const view = this.scroller instanceof HTMLElement
194
+ ? { top: this.scroller.getBoundingClientRect().top, height: this.scroller.clientHeight }
195
+ : { top: 0, height: this.scroller.innerHeight };
196
+ return windowRowsAt(starts, view.top - body.getBoundingClientRect().top, view.height);
197
+ }
198
+ /** Scrolls the body's first row (or its last, `last`) into the scroller's view. */
199
+ scrollToEnd(last) {
200
+ const body = this.renderRoot.querySelector('tbody');
201
+ const s = this.scroller;
202
+ if (!body || !s)
203
+ return;
204
+ const r = body.getBoundingClientRect();
205
+ const view = s instanceof HTMLElement ? s.getBoundingClientRect() : { top: 0, bottom: s.innerHeight };
206
+ const by = last ? r.bottom - view.bottom : r.top - view.top;
207
+ if (s instanceof HTMLElement)
208
+ s.scrollTop += by;
209
+ else
210
+ s.scrollBy(0, by);
211
+ }
212
+ reframe() {
213
+ const w = this.visible();
214
+ if (w.from !== this.range.from || w.to !== this.range.to)
215
+ this.range = { from: w.from, to: w.to };
216
+ }
217
+ /** The nearest ancestor that scrolls the table vertically, across shadow roots; the window when none does. */
218
+ findScroller() {
219
+ let n = this.parentNode;
220
+ while (n) {
221
+ if (n instanceof HTMLElement) {
222
+ const o = getComputedStyle(n).overflowY;
223
+ if ((o === 'auto' || o === 'scroll' || o === 'overlay') && n.scrollHeight > n.clientHeight + 1)
224
+ return n;
225
+ }
226
+ n = n instanceof ShadowRoot ? n.host : n.parentNode;
227
+ }
228
+ return window;
229
+ }
230
+ watch() {
231
+ if (this.scroller)
232
+ return;
233
+ this.scroller = this.findScroller();
234
+ this.scroller.addEventListener('scroll', this.onScroll, { passive: true });
235
+ // Its height decides how many rows show: the window's when the page scrolls, else the scroller's own.
236
+ if (!(this.scroller instanceof HTMLElement))
237
+ window.addEventListener('resize', this.onScroll, { passive: true });
238
+ else if (typeof ResizeObserver !== 'undefined')
239
+ (this.resized ??= new ResizeObserver(this.onScroll)).observe(this.scroller);
240
+ }
241
+ unwatch() {
242
+ cancelAnimationFrame(this.frame);
243
+ this.frame = 0;
244
+ this.scroller?.removeEventListener('scroll', this.onScroll);
245
+ window.removeEventListener('resize', this.onScroll);
246
+ this.resized?.disconnect();
247
+ this.scroller = null;
248
+ }
249
+ willUpdate(changed) {
250
+ if (changed.has('rows') || changed.has('rowHeight'))
251
+ this.offsets = null;
252
+ if (changed.has('rows') || changed.has('windowAt')) {
253
+ if (this.windowed && this.hasUpdated) {
254
+ const w = this.visible();
255
+ this.range = { from: w.from, to: w.to };
256
+ }
257
+ else if (!this.windowed)
258
+ this.unwatch();
259
+ }
260
+ // The tab stop stays on its row while the rows drawn change.
261
+ const keys = this.shown().map(this.rowKey);
262
+ const i = this.focusKey === null ? -1 : keys.indexOf(this.focusKey);
263
+ this.roving.current = Math.max(0, i);
264
+ }
265
+ updated(changed) {
266
+ if (changed.has('cellStyles') && this.renderRoot instanceof ShadowRoot)
267
+ adoptStyles(this.renderRoot, [...this.constructor.elementStyles, ...this.cellStyles]);
268
+ if (!this.windowed)
269
+ return;
270
+ this.watch();
271
+ // Measure the drawn rows: each stands for itself while it is not drawn. A row keeps its
272
+ // height, so the spacers settle as the rows are drawn once each.
273
+ let moved = false;
274
+ for (const tr of this.renderRoot.querySelectorAll('tbody tr[data-key]')) {
275
+ const h = tr.getBoundingClientRect().height;
276
+ const key = tr.dataset['key'];
277
+ if (h > 0 && Math.abs(h - (this.heights.get(key) ?? -1)) > 0.5) {
278
+ this.heights.set(key, h);
279
+ moved = true;
280
+ }
281
+ }
282
+ if (moved)
283
+ this.offsets = null;
284
+ if (this.held)
285
+ this.held = false;
286
+ // On the next frame, never in this update: a window that changes the measures and so
287
+ // the window again then gives the page a frame, and the reader's input, each time.
288
+ else
289
+ this.onScroll();
290
+ }
291
+ /** The rows drawn now. */
292
+ shown() {
293
+ if (!this.windowed)
294
+ return this.rows;
295
+ return this.rows.slice(this.range.from, Math.min(this.rows.length, this.range.to));
296
+ }
297
+ /** The row of an event, and its id. */
298
+ rowOf(e) {
299
+ for (const t of e.composedPath()) {
300
+ if (!(t instanceof HTMLElement))
301
+ continue;
302
+ if (INTERACTIVE.has(t.tagName))
303
+ return null;
304
+ if (t.tagName === 'TR' && t.dataset['key'] !== undefined)
305
+ return { tr: t, id: t.dataset['key'] };
306
+ if (t === this)
307
+ break;
308
+ }
309
+ return null;
310
+ }
311
+ act(id) {
312
+ if (this.activatable) {
313
+ emit(this, 'cae-activate', { id });
314
+ return;
315
+ }
316
+ this.selected = id;
317
+ emit(this, 'cae-select', { id });
318
+ }
319
+ header(c, s) {
320
+ const on = this.sort?.id === c.id ? this.sort.direction : null;
321
+ const sort = on === 'asc' ? 'ascending' : on === 'desc' ? 'descending' : nothing;
322
+ const label = isSortable(c)
323
+ ? html `<button type="button" class="sort" title=${on === 'asc' ? s.sortDescending : s.sortAscending}
324
+ @click=${() => emit(this, 'cae-sort', { id: c.id, direction: on === 'asc' ? 'desc' : 'asc' })}>${c.header}${on
325
+ ? html `<span class="arrow" aria-hidden="true">${on === 'asc' ? '▲' : '▼'}</span>`
326
+ : nothing}</button>`
327
+ : c.header;
328
+ return html `<th scope="col" role="columnheader" part="header-cell" data-col=${c.id} data-align=${c.align ?? nothing} aria-sort=${sort}
329
+ title=${c.tip || nothing}>${label}</th>`;
330
+ }
331
+ row(r, index, head) {
332
+ const id = this.rowKey(r);
333
+ const sel = this.selected !== null && this.selected === id;
334
+ return html `<tr role="row" part=${sel ? 'row row-selected' : 'row'} data-key=${id} data-tone=${toneAttr(this.rowTone?.(r))}
335
+ aria-current=${sel ? 'true' : nothing} aria-rowindex=${this.windowed ? index + 2 : nothing} ${attrs(this.rowAttrs?.(r))}>
336
+ ${this.columns.map((c) => c.id === head
337
+ ? html `<th scope="row" role="rowheader" part="cell" data-col=${c.id} data-align=${c.align ?? nothing}>${c.cell(r, index)}</th>`
338
+ : html `<td role="cell" part="cell" data-col=${c.id} data-align=${c.align ?? nothing}>${c.cell(r, index)}</td>`)}
339
+ </tr>`;
340
+ }
341
+ render() {
342
+ const s = withDefaults(DEFAULT_DATA_TABLE_STRINGS, this.strings);
343
+ const n = this.rows.length;
344
+ const tracks = this.columns.map((c) => c.width ?? 'minmax(0, 1fr)').join(' ');
345
+ const head = this.columns.find((c) => c.rowHeader)?.id;
346
+ const from = this.windowed ? this.range.from : 0;
347
+ const shown = this.shown();
348
+ const starts = this.windowed ? this.rowStarts() : null;
349
+ const padTop = starts ? starts[from] : 0;
350
+ const padBottom = starts ? starts[n] - starts[from + shown.length] : 0;
351
+ return html `<table part="table" data-scroll="x" role="table" class=${this.activatable ? '' : 'passive'} style="--cae-data-table-columns: ${tracks}"
352
+ aria-rowcount=${this.windowed ? n + 1 : nothing}>
353
+ <caption part="caption"><slot name="caption">${this.caption}</slot></caption>
354
+ <thead part="head" role="rowgroup"><tr role="row">${this.columns.map((c) => this.header(c, s))}</tr></thead>
355
+ <tbody role="rowgroup" @click=${this.onClick} @keydown=${this.onKey} @focusin=${this.onFocusIn}>
356
+ ${padTop > 0 ? html `<tr class="spacer" aria-hidden="true" style="height: ${padTop}px"></tr>` : nothing}
357
+ ${repeat(shown, this.rowKey, (r, i) => this.row(r, from + i, head))}
358
+ ${padBottom > 0 ? html `<tr class="spacer" aria-hidden="true" style="height: ${padBottom}px"></tr>` : nothing}
359
+ ${n
360
+ ? nothing
361
+ : html `<tr class="empty" role="row"><td part="empty" role="cell" colspan=${this.columns.length || 1}><slot name="empty">${s.empty}</slot></td></tr>`}
362
+ </tbody>
363
+ </table>`;
364
+ }
365
+ }
366
+ __decorate([
367
+ property({ attribute: false })
368
+ ], CaeDataTable.prototype, "columns", void 0);
369
+ __decorate([
370
+ property({ attribute: false })
371
+ ], CaeDataTable.prototype, "rows", void 0);
372
+ __decorate([
373
+ property({ attribute: false })
374
+ ], CaeDataTable.prototype, "rowKey", void 0);
375
+ __decorate([
376
+ property({ attribute: false })
377
+ ], CaeDataTable.prototype, "rowTone", void 0);
378
+ __decorate([
379
+ property({ attribute: false })
380
+ ], CaeDataTable.prototype, "rowAttrs", void 0);
381
+ __decorate([
382
+ property({ type: Boolean })
383
+ ], CaeDataTable.prototype, "activatable", void 0);
384
+ __decorate([
385
+ property()
386
+ ], CaeDataTable.prototype, "selected", void 0);
387
+ __decorate([
388
+ property({ attribute: false })
389
+ ], CaeDataTable.prototype, "sort", void 0);
390
+ __decorate([
391
+ property({ type: Number })
392
+ ], CaeDataTable.prototype, "windowAt", void 0);
393
+ __decorate([
394
+ property({ type: Number })
395
+ ], CaeDataTable.prototype, "rowHeight", void 0);
396
+ __decorate([
397
+ property()
398
+ ], CaeDataTable.prototype, "caption", void 0);
399
+ __decorate([
400
+ property({ attribute: false })
401
+ ], CaeDataTable.prototype, "strings", void 0);
402
+ __decorate([
403
+ property({ attribute: false })
404
+ ], CaeDataTable.prototype, "cellStyles", void 0);
405
+ __decorate([
406
+ state()
407
+ ], CaeDataTable.prototype, "range", void 0);
408
+ //# sourceMappingURL=data-table.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"data-table.js","sourceRoot":"","sources":["../../src/table/data-table.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,4 @@
1
+ export * from './types.js';
2
+ export * from './styles.js';
3
+ export * from './data-table.js';
4
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/table/index.ts"],"names":[],"mappings":"AAEA,cAAc,YAAY,CAAC;AAC3B,cAAc,aAAa,CAAC;AAC5B,cAAc,iBAAiB,CAAC"}
@@ -0,0 +1,6 @@
1
+ // A table of rows: `@contraagent/elements/data-table`. `CaeDataTable` is
2
+ // registered by `@contraagent/elements/data-table/define`.
3
+ export * from './types.js';
4
+ export * from './styles.js';
5
+ export * from './data-table.js';
6
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/table/index.ts"],"names":[],"mappings":"AAAA,yEAAyE;AACzE,2DAA2D;AAC3D,cAAc,YAAY,CAAC;AAC3B,cAAc,aAAa,CAAC;AAC5B,cAAc,iBAAiB,CAAC"}
@@ -0,0 +1,2 @@
1
+ export declare const dataTableStyles: import("lit").CSSResult;
2
+ //# sourceMappingURL=styles.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"styles.d.ts","sourceRoot":"","sources":["../../src/table/styles.ts"],"names":[],"mappings":"AAOA,eAAO,MAAM,eAAe,yBAwB3B,CAAC"}
@@ -0,0 +1,32 @@
1
+ // The look of `<cae-data-table>`. A row is a grid of the columns' tracks
2
+ // (`--cae-data-table-columns`, set from the columns' widths), so every row
3
+ // lines up with the header without a table layout pass. Rows wider than the
4
+ // host scroll sideways inside the table; the host is a container, so the
5
+ // host's `cellStyles` can drop or narrow columns by its width (`@container`).
6
+ import { css } from 'lit';
7
+ export const dataTableStyles = css `
8
+ :host { display: block; container-type: inline-size; }
9
+ table { display: block; width: 100%; border-collapse: collapse; overflow-x: auto; }
10
+ caption { display: block; text-align: start; }
11
+ thead, tbody { display: block; }
12
+ tr { display: grid; grid-template-columns: var(--cae-data-table-columns); column-gap: var(--cae-data-table-gap, 12px);
13
+ align-items: center; padding: var(--cae-data-table-row-padding, 6px 12px); }
14
+ th, td { display: block; min-width: 0; padding: 0; text-align: start; font-weight: inherit; }
15
+ [data-align='end'] { text-align: end; font-variant-numeric: tabular-nums; }
16
+ thead tr { color: var(--text-muted); font-size: var(--font-size-sm); border-bottom: 1px solid var(--line); }
17
+ tbody tr { border-bottom: 1px solid var(--line); }
18
+ tbody tr[data-key] { cursor: pointer; }
19
+ table.passive tbody tr[data-key] { cursor: default; }
20
+ tbody tr[data-key]:hover { background: var(--raise); }
21
+ tbody tr[data-key]:focus-visible { outline-offset: -2px; }
22
+ tbody tr[aria-current='true'] { background: var(--accent-bg); }
23
+ tbody tr[data-tone='running'] { background: var(--status-running-bg); }
24
+ tbody tr[data-tone='failed'] { background: color-mix(in srgb, var(--status-failed) 6%, transparent); box-shadow: inset 3px 0 0 var(--status-failed); }
25
+ tr.spacer { display: block; padding: 0; border: 0; }
26
+ tr.empty { display: block; border: 0; padding: 0; }
27
+ tr.empty td { color: var(--text-muted); padding: 8px; }
28
+ .sort { display: inline-flex; align-items: center; gap: 4px; padding: 0; border: 0; background: none; color: inherit; font: inherit; cursor: pointer; }
29
+ .sort:hover { color: var(--text); }
30
+ .arrow { font-size: 0.85em; }
31
+ `;
32
+ //# sourceMappingURL=styles.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"styles.js","sourceRoot":"","sources":["../../src/table/styles.ts"],"names":[],"mappings":"AAAA,yEAAyE;AACzE,2EAA2E;AAC3E,4EAA4E;AAC5E,yEAAyE;AACzE,8EAA8E;AAC9E,OAAO,EAAE,GAAG,EAAE,MAAM,KAAK,CAAC;AAE1B,MAAM,CAAC,MAAM,eAAe,GAAG,GAAG,CAAA;;;;;;;;;;;;;;;;;;;;;;;;CAwBjC,CAAC"}