@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,226 @@
1
+ import { LitElement, type CSSResult, type PropertyValueMap, type PropertyValues } from 'lit';
2
+ import type { MarkMatrixInput, MarkMatrixStrings } from '../matrix/types.js';
3
+ import type { StateStyles } from '../primitives/states.js';
4
+ import { type LayeredGraphStrings } from './strings.js';
5
+ import type { GraphInput, GraphOrder } from './types.js';
6
+ /** Below this width, `direction: 'auto'` draws top to bottom, without zoom. */
7
+ export declare const NARROW = 640;
8
+ /** The changes `willUpdate` reads: the properties, and the private `down`. */
9
+ type Changed = PropertyValues<CaeLayeredGraph> & PropertyValueMap<{
10
+ down: boolean;
11
+ }>;
12
+ /**
13
+ * A layered graph: each node in a layer by the longest path to it, edges bending only
14
+ * in the gaps between layers and never passing a node or a cluster's label; a cluster
15
+ * of nodes in a box (a cluster in a cluster: a box in a box), with, when it `cycle`s,
16
+ * a dotted return from its last layer to its first; an edge from outside the graph
17
+ * from a named stub. Inside each node, one mark per series id, at the same place in
18
+ * every node, so a series can be followed across the graph; a mark is drawn in its
19
+ * state's look (`states`). Above `barAt` marks, a node shows a bar of its counts and
20
+ * lists its failed marks. The order depends on the structure only, and keeps a
21
+ * previous `order`: nodes that appear later are added at the end of their layer.
22
+ *
23
+ * A click selects a mark, a node or a cluster (`cae-select`); a card beside it (the
24
+ * host's content, in the `inspector` slot) moves with it as the graph pans and zooms,
25
+ * and hides while it is out of the frame; on a narrow screen it is a sheet under the
26
+ * frame. A double click or Enter is the item's action (`cae-activate`), or opens its
27
+ * inner view (`cae-drill`, for an item with `drill`). Hovering or focusing a mark
28
+ * highlights its series and what `related` names. The frame first shows the whole
29
+ * graph; Ctrl (or ⌘) and the wheel, or the buttons, zoom; dragging pans; "Show all"
30
+ * goes back. "Graph | Table" changes the view (`cae-view-change`): the table is a row
31
+ * per node, with its status and the nodes it is joined to. With `matrix`, the frame
32
+ * shows that `<cae-mark-matrix>` as the table instead.
33
+ *
34
+ * Size: the element is as wide as its container. Without a height set on it, the
35
+ * frame is as tall as the whole drawing at that width (never scaled up), up to 70% of
36
+ * the window's height or 360 px, whichever is more, and taller when the card needs
37
+ * it; top to bottom, as tall as the drawing. A height set on the element
38
+ * (or given it by a flex or grid container) is shared: the `crumbs` slot and the row
39
+ * under the frame keep theirs, and the frame takes the rest, the drawing fitted in it.
40
+ *
41
+ * Keyboard: Tab moves between nodes; the arrow keys, Home and End move between a
42
+ * node's marks, and a mark out of the frame is brought into it; Shift and an arrow
43
+ * key move along an edge to an earlier or a later node, on the same series; what has
44
+ * the focus is selected (Tab goes on to the card); Enter is the item's action; Escape
45
+ * clears the selection (and, with none, is left to the host).
46
+ *
47
+ * @tagname cae-layered-graph
48
+ * @fires cae-select - `{id}`: a mark, a node, a cluster or a table row was selected; `{id: null}`: the selection was cleared
49
+ * @fires cae-activate - `{id}`: an item's action (a double click or Enter)
50
+ * @fires cae-drill - `{id}`: an item's inner view (a double click or Enter on an item with `drill`, a cluster's chip in the table, a later part of a cluster's `path`)
51
+ * @fires cae-toggle - `{id, open}`: an item's open or close control (`toggle`) was used
52
+ * @fires cae-view-change - `{view}`: "Graph" or "Table" was chosen
53
+ * @slot inspector - the selected item's card: its first heading and its `[data-status]` name it to a screen reader
54
+ * @slot crumbs - a line above the frame (where the graph is)
55
+ * @csspart frame - the frame every view is drawn in
56
+ * @csspart stage - what pans and zooms
57
+ * @csspart node - each node
58
+ * @csspart node-header - a node's first line
59
+ * @csspart node-name - a node's name
60
+ * @csspart mark - each mark
61
+ * @csspart cluster - each cluster
62
+ * @csspart cluster-label - a cluster's header
63
+ * @csspart edge - each edge
64
+ * @csspart stub - each stub
65
+ * @csspart legend - the legend
66
+ * @csspart keys - the line of key hints under the legend
67
+ * @csspart inspector - the selected item's card
68
+ * @csspart table - the node table
69
+ * @csspart row - each row of the node table
70
+ */
71
+ export declare class CaeLayeredGraph extends LitElement {
72
+ static styles: (CSSResult | CSSResult[])[];
73
+ static properties: {
74
+ graph: {
75
+ attribute: boolean;
76
+ };
77
+ states: {
78
+ attribute: boolean;
79
+ };
80
+ selected: {
81
+ attribute: boolean;
82
+ };
83
+ highlight: {
84
+ attribute: boolean;
85
+ };
86
+ order: {
87
+ attribute: boolean;
88
+ };
89
+ key: {};
90
+ direction: {};
91
+ view: {};
92
+ matrix: {
93
+ attribute: boolean;
94
+ };
95
+ barAt: {
96
+ type: NumberConstructor;
97
+ };
98
+ related: {
99
+ attribute: boolean;
100
+ };
101
+ strings: {
102
+ attribute: boolean;
103
+ };
104
+ matrixStrings: {
105
+ attribute: boolean;
106
+ };
107
+ renderIcon: {
108
+ attribute: boolean;
109
+ };
110
+ iconStyles: {
111
+ attribute: boolean;
112
+ };
113
+ hover: {
114
+ state: boolean;
115
+ };
116
+ down: {
117
+ state: boolean;
118
+ };
119
+ lay: {
120
+ state: boolean;
121
+ };
122
+ announced: {
123
+ state: boolean;
124
+ };
125
+ };
126
+ graph: GraphInput;
127
+ states: StateStyles;
128
+ /** The selected item's id (a mark's, a node's or a cluster's), or null. */
129
+ selected: string | null;
130
+ /** The series highlighted while no mark is hovered, focused or selected. */
131
+ highlight: string | null;
132
+ /** The order of an earlier drawing of this graph (`arrange(...).order`): its items stay where they are. */
133
+ order: GraphOrder | undefined;
134
+ /** The graph's identity: a new key is a new graph (the frame shows all of it again); the same key while the graph changes keeps the zoom and pan. */
135
+ key: string;
136
+ /** Left to right, top to bottom, or by the width (`auto`: top to bottom below `NARROW` px). */
137
+ direction: 'auto' | 'across' | 'down';
138
+ /** The node table instead of the drawing. */
139
+ view: 'graph' | 'table';
140
+ /** A mark matrix shown in the frame as the table, or null. */
141
+ matrix: MarkMatrixInput | null;
142
+ /** Above this many marks, a node shows a bar of its counts. */
143
+ barAt: number;
144
+ /** The marks a hovered or selected series (or a mark's id, outside any series) lights; default: its own. */
145
+ related: ((key: string) => ReadonlySet<string>) | undefined;
146
+ strings: Partial<LayeredGraphStrings>;
147
+ matrixStrings: Partial<MarkMatrixStrings>;
148
+ /** Draws an icon of a node, a matrix header and the legend; default: `icon(name)`. */
149
+ renderIcon: (name: string) => unknown;
150
+ /** Styles for what `renderIcon` draws, added to the element's own. */
151
+ iconStyles: readonly CSSResult[];
152
+ /** The series (or a mark's id) under the pointer or focus. */
153
+ private hover;
154
+ /** Top to bottom. */
155
+ private down;
156
+ /** Where everything is drawn, from the sizes measured after the last render. */
157
+ private lay;
158
+ /** What the live region says: the item just selected, and its status. */
159
+ private announced;
160
+ private arr;
161
+ private words;
162
+ /** The graph, its nodes with their defaults. */
163
+ private drawn;
164
+ private nodes;
165
+ private clusters;
166
+ /** Each mark's series ('' outside any series), by its id. */
167
+ private markSeries;
168
+ /** Each group's focused mark (roving tabindex): one tab stop per group. */
169
+ private readonly active;
170
+ /** What the sizes were last measured for, what the layout was computed from, and the graph it is of. */
171
+ private measured;
172
+ private layKey;
173
+ private layFor;
174
+ private litCache;
175
+ private scrolled;
176
+ private readonly pz;
177
+ private readonly card;
178
+ /** This element as its views see it (`host.ts`), its private members included. */
179
+ private readonly h;
180
+ private matrixEl;
181
+ protected willUpdate(changed: Changed): void;
182
+ connectedCallback(): void;
183
+ disconnectedCallback(): void;
184
+ protected updated(changed: PropertyValues<this>): void;
185
+ /**
186
+ * Put the focus on an item without selecting it: a node (its focused mark, else its
187
+ * name) or a cluster (its name); with null, or when it is not drawn, on the first
188
+ * thing to focus (in the `crumbs` slot, else the first node).
189
+ */
190
+ /** Put the focus on an item's open or close control (`toggle`), else on the item: where it was after the item was drawn again. */
191
+ focusToggle(id: string, tries?: number): void;
192
+ focusItem(id: string | null): void;
193
+ /** After a new selection: the card describes the item, the live region names it, and on a narrow screen the item is scrolled into view. */
194
+ private selectionChanged;
195
+ /** Measure what was drawn when the graph or the width changed; lay it out again when the structure or a size changed. */
196
+ private place;
197
+ /** Top to bottom on a narrow screen (`auto`); otherwise the whole graph in a frame, until the reader zooms or pans. */
198
+ private fit;
199
+ private readonly onEscape;
200
+ private select;
201
+ /** An item's action: its inner view when it has one. */
202
+ protected act(id: string): void;
203
+ private findMark;
204
+ /** The series (or mark id) highlighted: the one hovered or focused, else the selected mark's, else `highlight`; and the marks it lights. */
205
+ protected lit(): {
206
+ key: string | null;
207
+ on: ReadonlySet<string> | null;
208
+ };
209
+ private known;
210
+ render(): import("lit").TemplateResult<1>;
211
+ /** A mark matrix in the frame, at least as tall as the drawing was (and as the card needs), centred in it. */
212
+ private matrixView;
213
+ protected get laidOut(): boolean;
214
+ protected get asTable(): boolean;
215
+ protected focusSelect(id: string): void;
216
+ protected drill(id: string): void;
217
+ protected toggle(id: string, open: boolean): void;
218
+ protected showView(v: 'graph' | 'table'): void;
219
+ }
220
+ declare global {
221
+ interface HTMLElementTagNameMap {
222
+ 'cae-layered-graph': CaeLayeredGraph;
223
+ }
224
+ }
225
+ export {};
226
+ //# sourceMappingURL=layered-graph.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"layered-graph.d.ts","sourceRoot":"","sources":["../../src/graph/layered-graph.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,UAAU,EAA8B,KAAK,SAAS,EAAE,KAAK,gBAAgB,EAAE,KAAK,cAAc,EAAE,MAAM,KAAK,CAAC;AAKzH,OAAO,KAAK,EAAE,eAAe,EAAE,iBAAiB,EAAE,MAAM,oBAAoB,CAAC;AAG7E,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAC;AAQ3D,OAAO,EAAiC,KAAK,mBAAmB,EAAE,MAAM,cAAc,CAAC;AAEvF,OAAO,KAAK,EAA8C,UAAU,EAAa,UAAU,EAAE,MAAM,YAAY,CAAC;AAKhH,+EAA+E;AAC/E,eAAO,MAAM,MAAM,MAAM,CAAC;AAE1B,8EAA8E;AAC9E,KAAK,OAAO,GAAG,cAAc,CAAC,eAAe,CAAC,GAAG,gBAAgB,CAAC;IAAE,IAAI,EAAE,OAAO,CAAA;CAAE,CAAC,CAAC;AAIrF;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA0DG;AACH,qBAAa,eAAgB,SAAQ,UAAU;IAC7C,OAAgB,MAAM,8BAAiD;IACvE,OAAgB,UAAU;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;MAoBxB;IAEF,KAAK,EAAE,UAAU,CAAS;IAC1B,MAAM,EAAE,WAAW,CAAM;IACzB,2EAA2E;IAC3E,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAQ;IAC/B,4EAA4E;IAC5E,SAAS,EAAE,MAAM,GAAG,IAAI,CAAQ;IAChC,2GAA2G;IAC3G,KAAK,EAAE,UAAU,GAAG,SAAS,CAAa;IAC1C,qJAAqJ;IACrJ,GAAG,SAAM;IACT,+FAA+F;IAC/F,SAAS,EAAE,MAAM,GAAG,QAAQ,GAAG,MAAM,CAAU;IAC/C,6CAA6C;IAC7C,IAAI,EAAE,OAAO,GAAG,OAAO,CAAW;IAClC,8DAA8D;IAC9D,MAAM,EAAE,eAAe,GAAG,IAAI,CAAQ;IACtC,+DAA+D;IAC/D,KAAK,SAAa;IAClB,4GAA4G;IAC5G,OAAO,EAAE,CAAC,CAAC,GAAG,EAAE,MAAM,KAAK,WAAW,CAAC,MAAM,CAAC,CAAC,GAAG,SAAS,CAAa;IACxE,OAAO,EAAE,OAAO,CAAC,mBAAmB,CAAC,CAAM;IAC3C,aAAa,EAAE,OAAO,CAAC,iBAAiB,CAAC,CAAM;IAC/C,sFAAsF;IACtF,UAAU,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,OAAO,CAAwB;IAC7D,sEAAsE;IACtE,UAAU,EAAE,SAAS,SAAS,EAAE,CAAM;IAEtC,8DAA8D;IAC9D,OAAO,CAAC,KAAK,CAAuB;IACpC,qBAAqB;IACrB,OAAO,CAAC,IAAI,CAAS;IACrB,gFAAgF;IAChF,OAAO,CAAC,GAAG,CAA4B;IACvC,yEAAyE;IACzE,OAAO,CAAC,SAAS,CAAM;IAEvB,OAAO,CAAC,GAAG,CAA+B;IAC1C,OAAO,CAAC,KAAK,CAAsD;IACnE,gDAAgD;IAChD,OAAO,CAAC,KAAK,CAAuC;IACpD,OAAO,CAAC,KAAK,CAAgC;IAC7C,OAAO,CAAC,QAAQ,CAAwC;IACxD,6DAA6D;IAC7D,OAAO,CAAC,UAAU,CAA6B;IAC/C,2EAA2E;IAC3E,OAAO,CAAC,QAAQ,CAAC,MAAM,CAA6B;IACpD,wGAAwG;IACxG,OAAO,CAAC,QAAQ,CAAmD;IACnE,OAAO,CAAC,MAAM,CAAM;IACpB,OAAO,CAAC,MAAM,CAAuB;IACrC,OAAO,CAAC,QAAQ,CAA4G;IAC5H,OAAO,CAAC,QAAQ,CAAwB;IAExC,OAAO,CAAC,QAAQ,CAAC,EAAE,CAWhB;IAEH,OAAO,CAAC,QAAQ,CAAC,IAAI,CAOlB;IAEH,kFAAkF;IAClF,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAgC;IAElD,OAAO,CAAC,QAAQ;cAIG,UAAU,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI;IAmB5C,iBAAiB,IAAI,IAAI;IAKzB,oBAAoB,IAAI,IAAI;cAMlB,OAAO,CAAC,OAAO,EAAE,cAAc,CAAC,IAAI,CAAC,GAAG,IAAI;IAc/D;;;;OAIG;IACH,kIAAkI;IAClI,WAAW,CAAC,EAAE,EAAE,MAAM,EAAE,KAAK,SAAI,GAAG,IAAI;IAaxC,SAAS,CAAC,EAAE,EAAE,MAAM,GAAG,IAAI,GAAG,IAAI;IAclC,2IAA2I;IAC3I,OAAO,CAAC,gBAAgB;IAOxB,yHAAyH;IACzH,OAAO,CAAC,KAAK;IAkBb,uHAAuH;IACvH,OAAO,CAAC,GAAG;IASX,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAIvB;IAEF,OAAO,CAAC,MAAM;IAId,wDAAwD;IACxD,SAAS,CAAC,GAAG,CAAC,EAAE,EAAE,MAAM,GAAG,IAAI;IAM/B,OAAO,CAAC,QAAQ;IAMhB,4IAA4I;IAC5I,SAAS,CAAC,GAAG,IAAI;QAAE,GAAG,EAAE,MAAM,GAAG,IAAI,CAAC;QAAC,EAAE,EAAE,WAAW,CAAC,MAAM,CAAC,GAAG,IAAI,CAAA;KAAE;IAWvE,OAAO,CAAC,KAAK;IAIJ,MAAM;IAsBf,8GAA8G;IAC9G,OAAO,CAAC,UAAU;IASlB,SAAS,KAAK,OAAO,IAAI,OAAO,CAE/B;IAED,SAAS,KAAK,OAAO,IAAI,OAAO,CAE/B;IAED,SAAS,CAAC,WAAW,CAAC,EAAE,EAAE,MAAM,GAAG,IAAI;IAIvC,SAAS,CAAC,KAAK,CAAC,EAAE,EAAE,MAAM,GAAG,IAAI;IAIjC,SAAS,CAAC,MAAM,CAAC,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,GAAG,IAAI;IAIjD,SAAS,CAAC,QAAQ,CAAC,CAAC,EAAE,OAAO,GAAG,OAAO,GAAG,IAAI;CAO/C;AAED,OAAO,CAAC,MAAM,CAAC;IACb,UAAU,qBAAqB;QAC7B,mBAAmB,EAAE,eAAe,CAAC;KACtC;CACF"}
@@ -0,0 +1,396 @@
1
+ // A layered graph: nodes in layers, joined by edges, in clusters; each node a
2
+ // group of marks, one per series. The views are in `views/`.
3
+ import { LitElement, adoptStyles, html, nothing } from 'lit';
4
+ import { keyed } from 'lit/directives/keyed.js';
5
+ import { emit } from '../core/events.js';
6
+ import { withDefaults } from '../core/strings.js';
7
+ import { legendStyles } from '../primitives/legend.js';
8
+ import { icon } from '../primitives/icon.js';
9
+ import { base, markStyles } from '../styles/index.js';
10
+ import { arrange } from './arrange.js';
11
+ import { CardController } from './card.js';
12
+ import { slotsOf } from './host.js';
13
+ import { layoutGraph } from './layout.js';
14
+ import { BAR_MARKS, fillNode } from './marks.js';
15
+ import { PanZoomController } from './pan-zoom.js';
16
+ import { DEFAULT_LAYERED_GRAPH_STRINGS } from './strings.js';
17
+ import { graphStyles } from './styles.js';
18
+ import { dag } from './views/dag.js';
19
+ import { foot } from './views/foot.js';
20
+ import { nodeTable } from './views/node-table.js';
21
+ /** Below this width, `direction: 'auto'` draws top to bottom, without zoom. */
22
+ export const NARROW = 640;
23
+ const EMPTY = { series: [], nodes: [], clusters: [], edges: [], stubs: [] };
24
+ /**
25
+ * A layered graph: each node in a layer by the longest path to it, edges bending only
26
+ * in the gaps between layers and never passing a node or a cluster's label; a cluster
27
+ * of nodes in a box (a cluster in a cluster: a box in a box), with, when it `cycle`s,
28
+ * a dotted return from its last layer to its first; an edge from outside the graph
29
+ * from a named stub. Inside each node, one mark per series id, at the same place in
30
+ * every node, so a series can be followed across the graph; a mark is drawn in its
31
+ * state's look (`states`). Above `barAt` marks, a node shows a bar of its counts and
32
+ * lists its failed marks. The order depends on the structure only, and keeps a
33
+ * previous `order`: nodes that appear later are added at the end of their layer.
34
+ *
35
+ * A click selects a mark, a node or a cluster (`cae-select`); a card beside it (the
36
+ * host's content, in the `inspector` slot) moves with it as the graph pans and zooms,
37
+ * and hides while it is out of the frame; on a narrow screen it is a sheet under the
38
+ * frame. A double click or Enter is the item's action (`cae-activate`), or opens its
39
+ * inner view (`cae-drill`, for an item with `drill`). Hovering or focusing a mark
40
+ * highlights its series and what `related` names. The frame first shows the whole
41
+ * graph; Ctrl (or ⌘) and the wheel, or the buttons, zoom; dragging pans; "Show all"
42
+ * goes back. "Graph | Table" changes the view (`cae-view-change`): the table is a row
43
+ * per node, with its status and the nodes it is joined to. With `matrix`, the frame
44
+ * shows that `<cae-mark-matrix>` as the table instead.
45
+ *
46
+ * Size: the element is as wide as its container. Without a height set on it, the
47
+ * frame is as tall as the whole drawing at that width (never scaled up), up to 70% of
48
+ * the window's height or 360 px, whichever is more, and taller when the card needs
49
+ * it; top to bottom, as tall as the drawing. A height set on the element
50
+ * (or given it by a flex or grid container) is shared: the `crumbs` slot and the row
51
+ * under the frame keep theirs, and the frame takes the rest, the drawing fitted in it.
52
+ *
53
+ * Keyboard: Tab moves between nodes; the arrow keys, Home and End move between a
54
+ * node's marks, and a mark out of the frame is brought into it; Shift and an arrow
55
+ * key move along an edge to an earlier or a later node, on the same series; what has
56
+ * the focus is selected (Tab goes on to the card); Enter is the item's action; Escape
57
+ * clears the selection (and, with none, is left to the host).
58
+ *
59
+ * @tagname cae-layered-graph
60
+ * @fires cae-select - `{id}`: a mark, a node, a cluster or a table row was selected; `{id: null}`: the selection was cleared
61
+ * @fires cae-activate - `{id}`: an item's action (a double click or Enter)
62
+ * @fires cae-drill - `{id}`: an item's inner view (a double click or Enter on an item with `drill`, a cluster's chip in the table, a later part of a cluster's `path`)
63
+ * @fires cae-toggle - `{id, open}`: an item's open or close control (`toggle`) was used
64
+ * @fires cae-view-change - `{view}`: "Graph" or "Table" was chosen
65
+ * @slot inspector - the selected item's card: its first heading and its `[data-status]` name it to a screen reader
66
+ * @slot crumbs - a line above the frame (where the graph is)
67
+ * @csspart frame - the frame every view is drawn in
68
+ * @csspart stage - what pans and zooms
69
+ * @csspart node - each node
70
+ * @csspart node-header - a node's first line
71
+ * @csspart node-name - a node's name
72
+ * @csspart mark - each mark
73
+ * @csspart cluster - each cluster
74
+ * @csspart cluster-label - a cluster's header
75
+ * @csspart edge - each edge
76
+ * @csspart stub - each stub
77
+ * @csspart legend - the legend
78
+ * @csspart keys - the line of key hints under the legend
79
+ * @csspart inspector - the selected item's card
80
+ * @csspart table - the node table
81
+ * @csspart row - each row of the node table
82
+ */
83
+ export class CaeLayeredGraph extends LitElement {
84
+ constructor() {
85
+ super(...arguments);
86
+ this.graph = EMPTY;
87
+ this.states = {};
88
+ /** The selected item's id (a mark's, a node's or a cluster's), or null. */
89
+ this.selected = null;
90
+ /** The series highlighted while no mark is hovered, focused or selected. */
91
+ this.highlight = null;
92
+ /** The order of an earlier drawing of this graph (`arrange(...).order`): its items stay where they are. */
93
+ this.order = undefined;
94
+ /** The graph's identity: a new key is a new graph (the frame shows all of it again); the same key while the graph changes keeps the zoom and pan. */
95
+ this.key = '';
96
+ /** Left to right, top to bottom, or by the width (`auto`: top to bottom below `NARROW` px). */
97
+ this.direction = 'auto';
98
+ /** The node table instead of the drawing. */
99
+ this.view = 'graph';
100
+ /** A mark matrix shown in the frame as the table, or null. */
101
+ this.matrix = null;
102
+ /** Above this many marks, a node shows a bar of its counts. */
103
+ this.barAt = BAR_MARKS;
104
+ /** The marks a hovered or selected series (or a mark's id, outside any series) lights; default: its own. */
105
+ this.related = undefined;
106
+ this.strings = {};
107
+ this.matrixStrings = {};
108
+ /** Draws an icon of a node, a matrix header and the legend; default: `icon(name)`. */
109
+ this.renderIcon = (name) => icon(name);
110
+ /** Styles for what `renderIcon` draws, added to the element's own. */
111
+ this.iconStyles = [];
112
+ /** The series (or a mark's id) under the pointer or focus. */
113
+ this.hover = null;
114
+ /** Top to bottom. */
115
+ this.down = false;
116
+ /** Where everything is drawn, from the sizes measured after the last render. */
117
+ this.lay = null;
118
+ /** What the live region says: the item just selected, and its status. */
119
+ this.announced = '';
120
+ this.arr = arrange(EMPTY);
121
+ this.words = DEFAULT_LAYERED_GRAPH_STRINGS;
122
+ /** The graph, its nodes with their defaults. */
123
+ this.drawn = { ...EMPTY, nodes: [] };
124
+ this.nodes = new Map();
125
+ this.clusters = new Map();
126
+ /** Each mark's series ('' outside any series), by its id. */
127
+ this.markSeries = new Map();
128
+ /** Each group's focused mark (roving tabindex): one tab stop per group. */
129
+ this.active = new Map();
130
+ /** What the sizes were last measured for, what the layout was computed from, and the graph it is of. */
131
+ this.measured = null;
132
+ this.layKey = '';
133
+ this.layFor = null;
134
+ this.litCache = null;
135
+ this.scrolled = null;
136
+ this.pz = new PanZoomController(this, {
137
+ frame: () => this.renderRoot.querySelector('.frame'),
138
+ stage: () => this.renderRoot.querySelector('.stage'),
139
+ drawing: () => (this.lay && !this.matrix ? { w: this.lay.w, h: this.lay.h, down: this.down, room: this.card.room } : null),
140
+ wheel: () => this.view !== 'table' && !this.matrix,
141
+ down: () => this.down,
142
+ onMove: () => this.card.place(),
143
+ onResize: () => {
144
+ this.fit();
145
+ this.card.place();
146
+ },
147
+ });
148
+ this.card = new CardController(this, {
149
+ docked: () => this.down,
150
+ frameH: () => this.pz.frameH,
151
+ // A mark matrix: the frame's least height holds the card.
152
+ grow: () => (this.matrix ? this.requestUpdate() : this.fit()),
153
+ pressed: () => this.pz.pressed,
154
+ inner: () => this.matrixEl()?.renderRoot ?? null,
155
+ });
156
+ /** This element as its views see it (`host.ts`), its private members included. */
157
+ this.h = this;
158
+ this.onEscape = (e) => {
159
+ if (e.key !== 'Escape' || e.defaultPrevented || !this.selected)
160
+ return;
161
+ e.preventDefault();
162
+ this.select(null);
163
+ };
164
+ }
165
+ static { this.styles = [base, markStyles, legendStyles, graphStyles]; }
166
+ static { this.properties = {
167
+ graph: { attribute: false },
168
+ states: { attribute: false },
169
+ selected: { attribute: false },
170
+ highlight: { attribute: false },
171
+ order: { attribute: false },
172
+ key: {},
173
+ direction: {},
174
+ view: {},
175
+ matrix: { attribute: false },
176
+ barAt: { type: Number },
177
+ related: { attribute: false },
178
+ strings: { attribute: false },
179
+ matrixStrings: { attribute: false },
180
+ renderIcon: { attribute: false },
181
+ iconStyles: { attribute: false },
182
+ hover: { state: true },
183
+ down: { state: true },
184
+ lay: { state: true },
185
+ announced: { state: true },
186
+ }; }
187
+ matrixEl() {
188
+ return this.renderRoot.querySelector('cae-mark-matrix');
189
+ }
190
+ willUpdate(changed) {
191
+ if (changed.has('key') && changed.get('key') !== undefined) {
192
+ this.pz.reset();
193
+ this.active.clear();
194
+ }
195
+ if (changed.has('strings'))
196
+ this.words = withDefaults(DEFAULT_LAYERED_GRAPH_STRINGS, this.strings);
197
+ if (changed.has('direction') && this.direction !== 'auto')
198
+ this.down = this.direction === 'down';
199
+ if (changed.has('graph') || changed.has('order') || changed.has('down') || changed.has('direction')) {
200
+ this.arr = arrange(this.graph, this.order, this.down);
201
+ this.clusters = new Map(this.graph.clusters.map((c) => [c.id, c]));
202
+ }
203
+ if (changed.has('graph') || changed.has('states') || changed.has('strings')) {
204
+ const g = this.graph;
205
+ this.drawn = { ...g, nodes: g.nodes.map((n) => fillNode(n, this.states, this.words.progress)) };
206
+ this.nodes = new Map(this.drawn.nodes.map((n) => [n.id, n]));
207
+ this.markSeries = new Map(this.drawn.nodes.flatMap((n) => slotsOf(n, g.series).flatMap((s) => (s ? [[s.m.id, s.series]] : []))));
208
+ }
209
+ }
210
+ connectedCallback() {
211
+ super.connectedCallback();
212
+ this.addEventListener('keydown', this.onEscape);
213
+ }
214
+ disconnectedCallback() {
215
+ super.disconnectedCallback();
216
+ this.removeEventListener('keydown', this.onEscape);
217
+ }
218
+ updated(changed) {
219
+ if (changed.has('iconStyles') && this.renderRoot instanceof ShadowRoot)
220
+ adoptStyles(this.renderRoot, [...this.constructor.elementStyles, ...this.iconStyles]);
221
+ const mx = this.matrixEl();
222
+ if (mx && mx !== this.scrolled) {
223
+ // A scroll inside the matrix moves the selected mark: the card follows it.
224
+ this.scrolled = mx;
225
+ mx.renderRoot.addEventListener('scroll', () => this.card.place(), { capture: true });
226
+ }
227
+ this.place();
228
+ this.card.place();
229
+ if (changed.has('selected'))
230
+ this.selectionChanged();
231
+ }
232
+ /**
233
+ * Put the focus on an item without selecting it: a node (its focused mark, else its
234
+ * name) or a cluster (its name); with null, or when it is not drawn, on the first
235
+ * thing to focus (in the `crumbs` slot, else the first node).
236
+ */
237
+ /** Put the focus on an item's open or close control (`toggle`), else on the item: where it was after the item was drawn again. */
238
+ focusToggle(id, tries = 4) {
239
+ const root = this.renderRoot;
240
+ // A drawing of a new structure is first drawn hidden, to be measured: focus it once it is placed.
241
+ if (root.querySelector('.dag.unplaced') && tries > 0) {
242
+ void this.updateComplete.then(() => requestAnimationFrame(() => this.focusToggle(id, tries - 1)));
243
+ return;
244
+ }
245
+ const sel = this.clusters.has(id) ? `.cluster[data-cluster="${CSS.escape(id)}"] > .cue .tog` : `.node[data-id="${CSS.escape(id)}"] .tog`;
246
+ const el = root.querySelector(sel);
247
+ if (el)
248
+ this.card.focusQuietly(el);
249
+ else
250
+ this.focusItem(id);
251
+ }
252
+ focusItem(id) {
253
+ const root = this.renderRoot;
254
+ let el = null;
255
+ if (id && this.clusters.has(id))
256
+ el = root.querySelector(`.cluster[data-cluster="${CSS.escape(id)}"] > .hd .name`);
257
+ else if (id)
258
+ el = root.querySelector(`.node[data-id="${CSS.escape(id)}"] [tabindex="0"]`);
259
+ const crumbs = root.querySelector('slot[name="crumbs"]')?.assignedElements({ flatten: true }) ?? [];
260
+ const first = () => crumbs.map((c) => (c.matches('button') ? c : c.querySelector('button'))).find(Boolean) ??
261
+ root.querySelector('.mark[tabindex="0"], .node .name') ??
262
+ this.matrixEl()?.renderRoot.querySelector('.mark[tabindex="0"]') ??
263
+ null;
264
+ this.card.focusQuietly(el ?? first());
265
+ }
266
+ /** After a new selection: the card describes the item, the live region names it, and on a narrow screen the item is scrolled into view. */
267
+ selectionChanged() {
268
+ const [name, status] = this.card.describe();
269
+ const said = name ? [name, status].filter(Boolean).join(' | ') : '';
270
+ if (said !== this.announced)
271
+ this.announced = said;
272
+ if (this.down)
273
+ this.card.whenReleased(() => this.card.revealOverSheet());
274
+ }
275
+ /** Measure what was drawn when the graph or the width changed; lay it out again when the structure or a size changed. */
276
+ place() {
277
+ const dagEl = this.renderRoot.querySelector('.dag');
278
+ if (!dagEl)
279
+ return;
280
+ const g = this.graph;
281
+ const seen = `${this.down}|${this.clientWidth}`;
282
+ if (this.measured?.graph === g && this.measured.key === seen)
283
+ return this.fit();
284
+ this.measured = { graph: g, key: seen };
285
+ const sizes = new Map();
286
+ for (const el of dagEl.querySelectorAll('[data-id]'))
287
+ sizes.set(el.dataset['id'] ?? '', { w: el.offsetWidth, h: el.offsetHeight });
288
+ const a = this.arr;
289
+ const key = JSON.stringify([this.key, a.slots, a.edgePaths.map((r) => r.steps.map((s) => s.id)), this.down, [...sizes]]);
290
+ if (key === this.layKey)
291
+ return this.fit();
292
+ this.layKey = key;
293
+ this.layFor = this.key;
294
+ this.lay = layoutGraph(a, sizes, this.down);
295
+ void this.updateComplete.then(() => this.fit());
296
+ }
297
+ /** Top to bottom on a narrow screen (`auto`); otherwise the whole graph in a frame, until the reader zooms or pans. */
298
+ fit() {
299
+ if (this.direction === 'auto') {
300
+ const w = this.clientWidth;
301
+ const down = w > 0 && w < NARROW;
302
+ if (down !== this.down)
303
+ this.down = down;
304
+ }
305
+ this.pz.fit();
306
+ }
307
+ select(id) {
308
+ if (id !== this.selected)
309
+ emit(this, 'cae-select', { id });
310
+ }
311
+ /** An item's action: its inner view when it has one. */
312
+ act(id) {
313
+ const x = this.nodes.get(id) ?? this.clusters.get(id) ?? this.findMark(id);
314
+ if (x?.drill)
315
+ this.drill(id);
316
+ else if (x)
317
+ emit(this, 'cae-activate', { id });
318
+ }
319
+ findMark(id) {
320
+ for (const n of this.drawn.nodes)
321
+ for (const m of [...n.marks, ...n.loose])
322
+ if (m?.id === id)
323
+ return m;
324
+ for (const r of this.matrix?.rows ?? [])
325
+ for (const m of r.cells)
326
+ if (m?.id === id)
327
+ return m;
328
+ return null;
329
+ }
330
+ /** The series (or mark id) highlighted: the one hovered or focused, else the selected mark's, else `highlight`; and the marks it lights. */
331
+ lit() {
332
+ const sel = this.selected;
333
+ const mine = this.hover === null && sel !== null && this.markSeries.has(sel) ? this.markSeries.get(sel) || sel : null;
334
+ const key = this.hover ?? mine ?? this.highlight ?? null;
335
+ const c = this.litCache;
336
+ if (c && c.key === key && c.graph === this.graph && c.related === this.related)
337
+ return c;
338
+ const on = key === null ? null : (this.related ?? ((k) => new Set([k])))(key);
339
+ this.litCache = { key, graph: this.graph, related: this.related, on };
340
+ return this.litCache;
341
+ }
342
+ known(id) {
343
+ return this.nodes.has(id) || this.clusters.has(id) || !!this.findMark(id);
344
+ }
345
+ render() {
346
+ const h = this.h;
347
+ const mx = this.matrix;
348
+ const body = mx ? this.matrixView(mx) : this.view === 'table' ? nodeTable(h) : dag(h);
349
+ const sel = this.selected;
350
+ const card = sel && this.querySelector('[slot=inspector]') && this.known(sel)
351
+ ? keyed(sel, html `<section id="insp" class="insp ${this.down ? 'sheet' : ''}" part="inspector" aria-label=${this.words.inspector} @keydown=${this.card.onCardKey}>
352
+ <span class="ptr" aria-hidden="true"></span>
353
+ <div class="scroll"><slot name="inspector"></slot></div>
354
+ </section>`)
355
+ : nothing;
356
+ return html `<div class="col">
357
+ <slot name="crumbs"></slot>
358
+ <div class="main">${body}${card}<div class="sr" role="status">${this.announced}</div></div>
359
+ ${foot(h, mx)}
360
+ </div>`;
361
+ }
362
+ /** A mark matrix in the frame, at least as tall as the drawing was (and as the card needs), centred in it. */
363
+ matrixView(mx) {
364
+ const least = this.down ? 0 : Math.round(Math.max(this.pz.frameH, this.card.room));
365
+ return html `<div class="frame mxframe" part="frame" style=${least ? `min-height:${least}px` : ''}>
366
+ <cae-mark-matrix .matrix=${mx} .states=${this.states} .selected=${this.selected} .highlight=${this.highlight} .key=${this.key}
367
+ .strings=${this.matrixStrings} .renderIcon=${this.renderIcon} .iconStyles=${this.iconStyles}></cae-mark-matrix>
368
+ </div>`;
369
+ }
370
+ // What the views read and call besides the members above (`host.ts`).
371
+ get laidOut() {
372
+ return this.layFor === this.key;
373
+ }
374
+ get asTable() {
375
+ return this.view === 'table';
376
+ }
377
+ focusSelect(id) {
378
+ if (!this.card.quiet)
379
+ this.select(id);
380
+ }
381
+ drill(id) {
382
+ emit(this, 'cae-drill', { id });
383
+ }
384
+ toggle(id, open) {
385
+ emit(this, 'cae-toggle', { id, open });
386
+ }
387
+ showView(v) {
388
+ // A mark matrix is the table: only "Graph" leaves it, and the host decides where to.
389
+ if (this.matrix && v === 'table')
390
+ return;
391
+ if (!this.matrix)
392
+ this.view = v;
393
+ emit(this, 'cae-view-change', { view: v });
394
+ }
395
+ }
396
+ //# sourceMappingURL=layered-graph.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"layered-graph.js","sourceRoot":"","sources":["../../src/graph/layered-graph.ts"],"names":[],"mappings":"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"}