@contraagent/ui 0.0.0-stage → 0.2.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 (731) hide show
  1. package/README.md +137 -2
  2. package/custom-elements.json +7286 -0
  3. package/dist/adapters/check-rows.d.ts +20 -0
  4. package/dist/adapters/check-rows.d.ts.map +1 -0
  5. package/dist/adapters/check-rows.js +77 -0
  6. package/dist/adapters/check-rows.js.map +1 -0
  7. package/dist/adapters/filters.d.ts +29 -0
  8. package/dist/adapters/filters.d.ts.map +1 -0
  9. package/dist/adapters/filters.js +74 -0
  10. package/dist/adapters/filters.js.map +1 -0
  11. package/dist/adapters/graph/compound.d.ts +93 -0
  12. package/dist/adapters/graph/compound.d.ts.map +1 -0
  13. package/dist/adapters/graph/compound.js +322 -0
  14. package/dist/adapters/graph/compound.js.map +1 -0
  15. package/dist/adapters/graph/flow-index.d.ts +54 -0
  16. package/dist/adapters/graph/flow-index.d.ts.map +1 -0
  17. package/dist/adapters/graph/flow-index.js +129 -0
  18. package/dist/adapters/graph/flow-index.js.map +1 -0
  19. package/dist/adapters/graph/highlight.d.ts +14 -0
  20. package/dist/adapters/graph/highlight.d.ts.map +1 -0
  21. package/dist/adapters/graph/highlight.js +33 -0
  22. package/dist/adapters/graph/highlight.js.map +1 -0
  23. package/dist/adapters/graph/input.d.ts +50 -0
  24. package/dist/adapters/graph/input.d.ts.map +1 -0
  25. package/dist/adapters/graph/input.js +201 -0
  26. package/dist/adapters/graph/input.js.map +1 -0
  27. package/dist/adapters/graph/layer.d.ts +33 -0
  28. package/dist/adapters/graph/layer.d.ts.map +1 -0
  29. package/dist/adapters/graph/layer.js +94 -0
  30. package/dist/adapters/graph/layer.js.map +1 -0
  31. package/dist/adapters/graph/matrix.d.ts +62 -0
  32. package/dist/adapters/graph/matrix.d.ts.map +1 -0
  33. package/dist/adapters/graph/matrix.js +96 -0
  34. package/dist/adapters/graph/matrix.js.map +1 -0
  35. package/dist/adapters/graph/project.d.ts +49 -0
  36. package/dist/adapters/graph/project.d.ts.map +1 -0
  37. package/dist/adapters/graph/project.js +319 -0
  38. package/dist/adapters/graph/project.js.map +1 -0
  39. package/dist/adapters/graph/selection.d.ts +31 -0
  40. package/dist/adapters/graph/selection.d.ts.map +1 -0
  41. package/dist/adapters/graph/selection.js +48 -0
  42. package/dist/adapters/graph/selection.js.map +1 -0
  43. package/dist/adapters/graph/states.d.ts +6 -0
  44. package/dist/adapters/graph/states.d.ts.map +1 -0
  45. package/dist/adapters/graph/states.js +5 -0
  46. package/dist/adapters/graph/states.js.map +1 -0
  47. package/dist/adapters/graph/types.d.ts +141 -0
  48. package/dist/adapters/graph/types.d.ts.map +1 -0
  49. package/dist/adapters/graph/types.js +3 -0
  50. package/dist/adapters/graph/types.js.map +1 -0
  51. package/dist/adapters/graph/words.d.ts +48 -0
  52. package/dist/adapters/graph/words.d.ts.map +1 -0
  53. package/dist/adapters/graph/words.js +128 -0
  54. package/dist/adapters/graph/words.js.map +1 -0
  55. package/dist/adapters/index.d.ts +18 -0
  56. package/dist/adapters/index.d.ts.map +1 -0
  57. package/dist/adapters/index.js +23 -0
  58. package/dist/adapters/index.js.map +1 -0
  59. package/dist/adapters/journal-columns.d.ts +21 -0
  60. package/dist/adapters/journal-columns.d.ts.map +1 -0
  61. package/dist/adapters/journal-columns.js +179 -0
  62. package/dist/adapters/journal-columns.js.map +1 -0
  63. package/dist/adapters/kpi-tiles.d.ts +47 -0
  64. package/dist/adapters/kpi-tiles.d.ts.map +1 -0
  65. package/dist/adapters/kpi-tiles.js +173 -0
  66. package/dist/adapters/kpi-tiles.js.map +1 -0
  67. package/dist/adapters/lanes.d.ts +31 -0
  68. package/dist/adapters/lanes.d.ts.map +1 -0
  69. package/dist/adapters/lanes.js +75 -0
  70. package/dist/adapters/lanes.js.map +1 -0
  71. package/dist/adapters/model-shares.d.ts +27 -0
  72. package/dist/adapters/model-shares.d.ts.map +1 -0
  73. package/dist/adapters/model-shares.js +52 -0
  74. package/dist/adapters/model-shares.js.map +1 -0
  75. package/dist/adapters/panel-body.d.ts +34 -0
  76. package/dist/adapters/panel-body.d.ts.map +1 -0
  77. package/dist/adapters/panel-body.js +90 -0
  78. package/dist/adapters/panel-body.js.map +1 -0
  79. package/dist/adapters/preflight.d.ts +12 -0
  80. package/dist/adapters/preflight.d.ts.map +1 -0
  81. package/dist/adapters/preflight.js +15 -0
  82. package/dist/adapters/preflight.js.map +1 -0
  83. package/dist/adapters/task-columns.d.ts +19 -0
  84. package/dist/adapters/task-columns.d.ts.map +1 -0
  85. package/dist/adapters/task-columns.js +107 -0
  86. package/dist/adapters/task-columns.js.map +1 -0
  87. package/dist/adapters/transcript/index.d.ts +6 -0
  88. package/dist/adapters/transcript/index.d.ts.map +1 -0
  89. package/dist/adapters/transcript/index.js +8 -0
  90. package/dist/adapters/transcript/index.js.map +1 -0
  91. package/dist/adapters/transcript/model.d.ts +42 -0
  92. package/dist/adapters/transcript/model.d.ts.map +1 -0
  93. package/dist/adapters/transcript/model.js +128 -0
  94. package/dist/adapters/transcript/model.js.map +1 -0
  95. package/dist/adapters/transcript/rounds.d.ts +15 -0
  96. package/dist/adapters/transcript/rounds.d.ts.map +1 -0
  97. package/dist/adapters/transcript/rounds.js +74 -0
  98. package/dist/adapters/transcript/rounds.js.map +1 -0
  99. package/dist/adapters/transcript/sections.d.ts +18 -0
  100. package/dist/adapters/transcript/sections.d.ts.map +1 -0
  101. package/dist/adapters/transcript/sections.js +69 -0
  102. package/dist/adapters/transcript/sections.js.map +1 -0
  103. package/dist/adapters/transcript/web.d.ts +12 -0
  104. package/dist/adapters/transcript/web.d.ts.map +1 -0
  105. package/dist/adapters/transcript/web.js +39 -0
  106. package/dist/adapters/transcript/web.js.map +1 -0
  107. package/dist/adapters/transcript/who.d.ts +15 -0
  108. package/dist/adapters/transcript/who.d.ts.map +1 -0
  109. package/dist/adapters/transcript/who.js +42 -0
  110. package/dist/adapters/transcript/who.js.map +1 -0
  111. package/dist/adapters/trends.d.ts +11 -0
  112. package/dist/adapters/trends.d.ts.map +1 -0
  113. package/dist/adapters/trends.js +316 -0
  114. package/dist/adapters/trends.js.map +1 -0
  115. package/dist/contraagent-ui.js +1028 -0
  116. package/dist/controllers/locale.d.ts +25 -0
  117. package/dist/controllers/locale.d.ts.map +1 -0
  118. package/dist/controllers/locale.js +33 -0
  119. package/dist/controllers/locale.js.map +1 -0
  120. package/dist/controllers/shortcuts.d.ts +29 -0
  121. package/dist/controllers/shortcuts.d.ts.map +1 -0
  122. package/dist/controllers/shortcuts.js +51 -0
  123. package/dist/controllers/shortcuts.js.map +1 -0
  124. package/dist/controllers/stream.d.ts +41 -0
  125. package/dist/controllers/stream.d.ts.map +1 -0
  126. package/dist/controllers/stream.js +90 -0
  127. package/dist/controllers/stream.js.map +1 -0
  128. package/dist/controllers/task-detail.d.ts +22 -0
  129. package/dist/controllers/task-detail.d.ts.map +1 -0
  130. package/dist/controllers/task-detail.js +50 -0
  131. package/dist/controllers/task-detail.js.map +1 -0
  132. package/dist/controllers/theme.d.ts +32 -0
  133. package/dist/controllers/theme.d.ts.map +1 -0
  134. package/dist/controllers/theme.js +56 -0
  135. package/dist/controllers/theme.js.map +1 -0
  136. package/dist/core/events.d.ts +107 -0
  137. package/dist/core/events.d.ts.map +1 -0
  138. package/dist/core/events.js +5 -0
  139. package/dist/core/events.js.map +1 -0
  140. package/dist/core/i18n.d.ts +21 -0
  141. package/dist/core/i18n.d.ts.map +1 -0
  142. package/dist/core/i18n.js +71 -0
  143. package/dist/core/i18n.js.map +1 -0
  144. package/dist/core/index.d.ts +5 -0
  145. package/dist/core/index.d.ts.map +1 -0
  146. package/dist/core/index.js +7 -0
  147. package/dist/core/index.js.map +1 -0
  148. package/dist/core/memory.d.ts +51 -0
  149. package/dist/core/memory.d.ts.map +1 -0
  150. package/dist/core/memory.js +174 -0
  151. package/dist/core/memory.js.map +1 -0
  152. package/dist/core/scroll.d.ts +21 -0
  153. package/dist/core/scroll.d.ts.map +1 -0
  154. package/dist/core/scroll.js +74 -0
  155. package/dist/core/scroll.js.map +1 -0
  156. package/dist/core/view-route.d.ts +62 -0
  157. package/dist/core/view-route.d.ts.map +1 -0
  158. package/dist/core/view-route.js +143 -0
  159. package/dist/core/view-route.js.map +1 -0
  160. package/dist/core/view-router.d.ts +27 -0
  161. package/dist/core/view-router.d.ts.map +1 -0
  162. package/dist/core/view-router.js +57 -0
  163. package/dist/core/view-router.js.map +1 -0
  164. package/dist/define/all.d.ts +13 -0
  165. package/dist/define/all.d.ts.map +1 -0
  166. package/dist/define/all.js +14 -0
  167. package/dist/define/all.js.map +1 -0
  168. package/dist/define/contracts.d.ts +2 -0
  169. package/dist/define/contracts.d.ts.map +1 -0
  170. package/dist/define/contracts.js +3 -0
  171. package/dist/define/contracts.js.map +1 -0
  172. package/dist/define/definitions.d.ts +3 -0
  173. package/dist/define/definitions.d.ts.map +1 -0
  174. package/dist/define/definitions.js +4 -0
  175. package/dist/define/definitions.js.map +1 -0
  176. package/dist/define/journal-table.d.ts +2 -0
  177. package/dist/define/journal-table.d.ts.map +1 -0
  178. package/dist/define/journal-table.js +3 -0
  179. package/dist/define/journal-table.js.map +1 -0
  180. package/dist/define/kpis.d.ts +2 -0
  181. package/dist/define/kpis.d.ts.map +1 -0
  182. package/dist/define/kpis.js +3 -0
  183. package/dist/define/kpis.js.map +1 -0
  184. package/dist/define/monitor.d.ts +2 -0
  185. package/dist/define/monitor.d.ts.map +1 -0
  186. package/dist/define/monitor.js +3 -0
  187. package/dist/define/monitor.js.map +1 -0
  188. package/dist/define/overview.d.ts +2 -0
  189. package/dist/define/overview.d.ts.map +1 -0
  190. package/dist/define/overview.js +3 -0
  191. package/dist/define/overview.js.map +1 -0
  192. package/dist/define/pipeline-graph.d.ts +2 -0
  193. package/dist/define/pipeline-graph.d.ts.map +1 -0
  194. package/dist/define/pipeline-graph.js +3 -0
  195. package/dist/define/pipeline-graph.js.map +1 -0
  196. package/dist/define/procs.d.ts +3 -0
  197. package/dist/define/procs.d.ts.map +1 -0
  198. package/dist/define/procs.js +4 -0
  199. package/dist/define/procs.js.map +1 -0
  200. package/dist/define/task-table.d.ts +2 -0
  201. package/dist/define/task-table.d.ts.map +1 -0
  202. package/dist/define/task-table.js +3 -0
  203. package/dist/define/task-table.js.map +1 -0
  204. package/dist/define/task-view.d.ts +2 -0
  205. package/dist/define/task-view.d.ts.map +1 -0
  206. package/dist/define/task-view.js +3 -0
  207. package/dist/define/task-view.js.map +1 -0
  208. package/dist/define/timeline.d.ts +2 -0
  209. package/dist/define/timeline.d.ts.map +1 -0
  210. package/dist/define/timeline.js +3 -0
  211. package/dist/define/timeline.js.map +1 -0
  212. package/dist/define/transcript.d.ts +2 -0
  213. package/dist/define/transcript.d.ts.map +1 -0
  214. package/dist/define/transcript.js +3 -0
  215. package/dist/define/transcript.js.map +1 -0
  216. package/dist/elements/lists/ca-contracts.d.ts +46 -0
  217. package/dist/elements/lists/ca-contracts.d.ts.map +1 -0
  218. package/dist/elements/lists/ca-contracts.js +199 -0
  219. package/dist/elements/lists/ca-contracts.js.map +1 -0
  220. package/dist/elements/lists/ca-definitions.d.ts +41 -0
  221. package/dist/elements/lists/ca-definitions.d.ts.map +1 -0
  222. package/dist/elements/lists/ca-definitions.js +182 -0
  223. package/dist/elements/lists/ca-definitions.js.map +1 -0
  224. package/dist/elements/lists/ca-journal-table.d.ts +37 -0
  225. package/dist/elements/lists/ca-journal-table.d.ts.map +1 -0
  226. package/dist/elements/lists/ca-journal-table.js +170 -0
  227. package/dist/elements/lists/ca-journal-table.js.map +1 -0
  228. package/dist/elements/lists/ca-panel-body.d.ts +42 -0
  229. package/dist/elements/lists/ca-panel-body.d.ts.map +1 -0
  230. package/dist/elements/lists/ca-panel-body.js +210 -0
  231. package/dist/elements/lists/ca-panel-body.js.map +1 -0
  232. package/dist/elements/lists/ca-panel-view.d.ts +21 -0
  233. package/dist/elements/lists/ca-panel-view.d.ts.map +1 -0
  234. package/dist/elements/lists/ca-panel-view.js +59 -0
  235. package/dist/elements/lists/ca-panel-view.js.map +1 -0
  236. package/dist/elements/lists/ca-proc-tree.d.ts +16 -0
  237. package/dist/elements/lists/ca-proc-tree.d.ts.map +1 -0
  238. package/dist/elements/lists/ca-proc-tree.js +63 -0
  239. package/dist/elements/lists/ca-proc-tree.js.map +1 -0
  240. package/dist/elements/lists/ca-procs-view.d.ts +27 -0
  241. package/dist/elements/lists/ca-procs-view.d.ts.map +1 -0
  242. package/dist/elements/lists/ca-procs-view.js +91 -0
  243. package/dist/elements/lists/ca-procs-view.js.map +1 -0
  244. package/dist/elements/lists/ca-task-table.d.ts +33 -0
  245. package/dist/elements/lists/ca-task-table.d.ts.map +1 -0
  246. package/dist/elements/lists/ca-task-table.js +115 -0
  247. package/dist/elements/lists/ca-task-table.js.map +1 -0
  248. package/dist/elements/lists/index.d.ts +9 -0
  249. package/dist/elements/lists/index.d.ts.map +1 -0
  250. package/dist/elements/lists/index.js +9 -0
  251. package/dist/elements/lists/index.js.map +1 -0
  252. package/dist/elements/overview/ca-kpis.d.ts +32 -0
  253. package/dist/elements/overview/ca-kpis.d.ts.map +1 -0
  254. package/dist/elements/overview/ca-kpis.js +62 -0
  255. package/dist/elements/overview/ca-kpis.js.map +1 -0
  256. package/dist/elements/overview/ca-model-usage.d.ts +25 -0
  257. package/dist/elements/overview/ca-model-usage.d.ts.map +1 -0
  258. package/dist/elements/overview/ca-model-usage.js +118 -0
  259. package/dist/elements/overview/ca-model-usage.js.map +1 -0
  260. package/dist/elements/overview/ca-overview.d.ts +67 -0
  261. package/dist/elements/overview/ca-overview.d.ts.map +1 -0
  262. package/dist/elements/overview/ca-overview.js +463 -0
  263. package/dist/elements/overview/ca-overview.js.map +1 -0
  264. package/dist/elements/overview/ca-pipeline-graph.d.ts +211 -0
  265. package/dist/elements/overview/ca-pipeline-graph.d.ts.map +1 -0
  266. package/dist/elements/overview/ca-pipeline-graph.js +616 -0
  267. package/dist/elements/overview/ca-pipeline-graph.js.map +1 -0
  268. package/dist/elements/overview/ca-quota.d.ts +42 -0
  269. package/dist/elements/overview/ca-quota.d.ts.map +1 -0
  270. package/dist/elements/overview/ca-quota.js +179 -0
  271. package/dist/elements/overview/ca-quota.js.map +1 -0
  272. package/dist/elements/overview/ca-run-driver.d.ts +33 -0
  273. package/dist/elements/overview/ca-run-driver.d.ts.map +1 -0
  274. package/dist/elements/overview/ca-run-driver.js +146 -0
  275. package/dist/elements/overview/ca-run-driver.js.map +1 -0
  276. package/dist/elements/overview/ca-services.d.ts +25 -0
  277. package/dist/elements/overview/ca-services.d.ts.map +1 -0
  278. package/dist/elements/overview/ca-services.js +77 -0
  279. package/dist/elements/overview/ca-services.js.map +1 -0
  280. package/dist/elements/overview/ca-spend-breakdown.d.ts +24 -0
  281. package/dist/elements/overview/ca-spend-breakdown.d.ts.map +1 -0
  282. package/dist/elements/overview/ca-spend-breakdown.js +108 -0
  283. package/dist/elements/overview/ca-spend-breakdown.js.map +1 -0
  284. package/dist/elements/overview/ca-timeline.d.ts +28 -0
  285. package/dist/elements/overview/ca-timeline.d.ts.map +1 -0
  286. package/dist/elements/overview/ca-timeline.js +72 -0
  287. package/dist/elements/overview/ca-timeline.js.map +1 -0
  288. package/dist/elements/overview/ca-workers.d.ts +23 -0
  289. package/dist/elements/overview/ca-workers.d.ts.map +1 -0
  290. package/dist/elements/overview/ca-workers.js +86 -0
  291. package/dist/elements/overview/ca-workers.js.map +1 -0
  292. package/dist/elements/overview/index.d.ts +11 -0
  293. package/dist/elements/overview/index.d.ts.map +1 -0
  294. package/dist/elements/overview/index.js +11 -0
  295. package/dist/elements/overview/index.js.map +1 -0
  296. package/dist/elements/overview/pipeline-graph/actions.d.ts +16 -0
  297. package/dist/elements/overview/pipeline-graph/actions.d.ts.map +1 -0
  298. package/dist/elements/overview/pipeline-graph/actions.js +42 -0
  299. package/dist/elements/overview/pipeline-graph/actions.js.map +1 -0
  300. package/dist/elements/overview/pipeline-graph/crumbs.d.ts +15 -0
  301. package/dist/elements/overview/pipeline-graph/crumbs.d.ts.map +1 -0
  302. package/dist/elements/overview/pipeline-graph/crumbs.js +70 -0
  303. package/dist/elements/overview/pipeline-graph/crumbs.js.map +1 -0
  304. package/dist/elements/overview/pipeline-graph/host.d.ts +24 -0
  305. package/dist/elements/overview/pipeline-graph/host.d.ts.map +1 -0
  306. package/dist/elements/overview/pipeline-graph/host.js +2 -0
  307. package/dist/elements/overview/pipeline-graph/host.js.map +1 -0
  308. package/dist/elements/overview/pipeline-graph/inspector.d.ts +5 -0
  309. package/dist/elements/overview/pipeline-graph/inspector.d.ts.map +1 -0
  310. package/dist/elements/overview/pipeline-graph/inspector.js +100 -0
  311. package/dist/elements/overview/pipeline-graph/inspector.js.map +1 -0
  312. package/dist/elements/overview/pipeline-graph/outline.d.ts +53 -0
  313. package/dist/elements/overview/pipeline-graph/outline.d.ts.map +1 -0
  314. package/dist/elements/overview/pipeline-graph/outline.js +111 -0
  315. package/dist/elements/overview/pipeline-graph/outline.js.map +1 -0
  316. package/dist/elements/overview/pipeline-graph/strings.d.ts +11 -0
  317. package/dist/elements/overview/pipeline-graph/strings.d.ts.map +1 -0
  318. package/dist/elements/overview/pipeline-graph/strings.js +49 -0
  319. package/dist/elements/overview/pipeline-graph/strings.js.map +1 -0
  320. package/dist/elements/overview/pipeline-graph/styles.d.ts +4 -0
  321. package/dist/elements/overview/pipeline-graph/styles.d.ts.map +1 -0
  322. package/dist/elements/overview/pipeline-graph/styles.js +96 -0
  323. package/dist/elements/overview/pipeline-graph/styles.js.map +1 -0
  324. package/dist/elements/shared/ca-definition.d.ts +26 -0
  325. package/dist/elements/shared/ca-definition.d.ts.map +1 -0
  326. package/dist/elements/shared/ca-definition.js +202 -0
  327. package/dist/elements/shared/ca-definition.js.map +1 -0
  328. package/dist/elements/shared/contract-parts.d.ts +35 -0
  329. package/dist/elements/shared/contract-parts.d.ts.map +1 -0
  330. package/dist/elements/shared/contract-parts.js +167 -0
  331. package/dist/elements/shared/contract-parts.js.map +1 -0
  332. package/dist/elements/shared/file-card.d.ts +17 -0
  333. package/dist/elements/shared/file-card.d.ts.map +1 -0
  334. package/dist/elements/shared/file-card.js +37 -0
  335. package/dist/elements/shared/file-card.js.map +1 -0
  336. package/dist/elements/shared/prompt-text.d.ts +5 -0
  337. package/dist/elements/shared/prompt-text.d.ts.map +1 -0
  338. package/dist/elements/shared/prompt-text.js +13 -0
  339. package/dist/elements/shared/prompt-text.js.map +1 -0
  340. package/dist/elements/shared/task-chip.d.ts +10 -0
  341. package/dist/elements/shared/task-chip.d.ts.map +1 -0
  342. package/dist/elements/shared/task-chip.js +19 -0
  343. package/dist/elements/shared/task-chip.js.map +1 -0
  344. package/dist/elements/shell/ca-clock.d.ts +13 -0
  345. package/dist/elements/shell/ca-clock.d.ts.map +1 -0
  346. package/dist/elements/shell/ca-clock.js +30 -0
  347. package/dist/elements/shell/ca-clock.js.map +1 -0
  348. package/dist/elements/shell/ca-hosts.d.ts +21 -0
  349. package/dist/elements/shell/ca-hosts.d.ts.map +1 -0
  350. package/dist/elements/shell/ca-hosts.js +97 -0
  351. package/dist/elements/shell/ca-hosts.js.map +1 -0
  352. package/dist/elements/shell/ca-monitor.d.ts +182 -0
  353. package/dist/elements/shell/ca-monitor.d.ts.map +1 -0
  354. package/dist/elements/shell/ca-monitor.js +549 -0
  355. package/dist/elements/shell/ca-monitor.js.map +1 -0
  356. package/dist/elements/shell/ca-run-picker.d.ts +71 -0
  357. package/dist/elements/shell/ca-run-picker.d.ts.map +1 -0
  358. package/dist/elements/shell/ca-run-picker.js +313 -0
  359. package/dist/elements/shell/ca-run-picker.js.map +1 -0
  360. package/dist/elements/shell/ca-theme-switch.d.ts +36 -0
  361. package/dist/elements/shell/ca-theme-switch.d.ts.map +1 -0
  362. package/dist/elements/shell/ca-theme-switch.js +186 -0
  363. package/dist/elements/shell/ca-theme-switch.js.map +1 -0
  364. package/dist/elements/shell/ca-toasts.d.ts +23 -0
  365. package/dist/elements/shell/ca-toasts.d.ts.map +1 -0
  366. package/dist/elements/shell/ca-toasts.js +88 -0
  367. package/dist/elements/shell/ca-toasts.js.map +1 -0
  368. package/dist/elements/shell/header.d.ts +13 -0
  369. package/dist/elements/shell/header.d.ts.map +1 -0
  370. package/dist/elements/shell/header.js +38 -0
  371. package/dist/elements/shell/header.js.map +1 -0
  372. package/dist/elements/shell/styles.d.ts +2 -0
  373. package/dist/elements/shell/styles.d.ts.map +1 -0
  374. package/dist/elements/shell/styles.js +72 -0
  375. package/dist/elements/shell/styles.js.map +1 -0
  376. package/dist/elements/shell/tabs.d.ts +32 -0
  377. package/dist/elements/shell/tabs.d.ts.map +1 -0
  378. package/dist/elements/shell/tabs.js +125 -0
  379. package/dist/elements/shell/tabs.js.map +1 -0
  380. package/dist/elements/shell/views.d.ts +27 -0
  381. package/dist/elements/shell/views.d.ts.map +1 -0
  382. package/dist/elements/shell/views.js +55 -0
  383. package/dist/elements/shell/views.js.map +1 -0
  384. package/dist/elements/task/ca-task-view.d.ts +55 -0
  385. package/dist/elements/task/ca-task-view.d.ts.map +1 -0
  386. package/dist/elements/task/ca-task-view.js +199 -0
  387. package/dist/elements/task/ca-task-view.js.map +1 -0
  388. package/dist/elements/task/ca-transcript.d.ts +74 -0
  389. package/dist/elements/task/ca-transcript.d.ts.map +1 -0
  390. package/dist/elements/task/ca-transcript.js +241 -0
  391. package/dist/elements/task/ca-transcript.js.map +1 -0
  392. package/dist/elements/task/context.d.ts +57 -0
  393. package/dist/elements/task/context.d.ts.map +1 -0
  394. package/dist/elements/task/context.js +61 -0
  395. package/dist/elements/task/context.js.map +1 -0
  396. package/dist/elements/task/header.d.ts +9 -0
  397. package/dist/elements/task/header.d.ts.map +1 -0
  398. package/dist/elements/task/header.js +291 -0
  399. package/dist/elements/task/header.js.map +1 -0
  400. package/dist/elements/task/index.d.ts +3 -0
  401. package/dist/elements/task/index.d.ts.map +1 -0
  402. package/dist/elements/task/index.js +3 -0
  403. package/dist/elements/task/index.js.map +1 -0
  404. package/dist/elements/task/inputs.d.ts +28 -0
  405. package/dist/elements/task/inputs.d.ts.map +1 -0
  406. package/dist/elements/task/inputs.js +27 -0
  407. package/dist/elements/task/inputs.js.map +1 -0
  408. package/dist/elements/task/panes/definition.d.ts +5 -0
  409. package/dist/elements/task/panes/definition.d.ts.map +1 -0
  410. package/dist/elements/task/panes/definition.js +5 -0
  411. package/dist/elements/task/panes/definition.js.map +1 -0
  412. package/dist/elements/task/panes/io.d.ts +8 -0
  413. package/dist/elements/task/panes/io.d.ts.map +1 -0
  414. package/dist/elements/task/panes/io.js +184 -0
  415. package/dist/elements/task/panes/io.js.map +1 -0
  416. package/dist/elements/task/panes/transcript.d.ts +5 -0
  417. package/dist/elements/task/panes/transcript.d.ts.map +1 -0
  418. package/dist/elements/task/panes/transcript.js +29 -0
  419. package/dist/elements/task/panes/transcript.js.map +1 -0
  420. package/dist/elements/task/styles.d.ts +2 -0
  421. package/dist/elements/task/styles.d.ts.map +1 -0
  422. package/dist/elements/task/styles.js +66 -0
  423. package/dist/elements/task/styles.js.map +1 -0
  424. package/dist/elements/trends/ca-trends.d.ts +55 -0
  425. package/dist/elements/trends/ca-trends.d.ts.map +1 -0
  426. package/dist/elements/trends/ca-trends.js +213 -0
  427. package/dist/elements/trends/ca-trends.js.map +1 -0
  428. package/dist/index.d.ts +14 -0
  429. package/dist/index.d.ts.map +1 -0
  430. package/dist/index.js +22 -0
  431. package/dist/index.js.map +1 -0
  432. package/dist/lib/tone.d.ts +29 -0
  433. package/dist/lib/tone.d.ts.map +1 -0
  434. package/dist/lib/tone.js +97 -0
  435. package/dist/lib/tone.js.map +1 -0
  436. package/dist/lib/trends.d.ts +15 -0
  437. package/dist/lib/trends.d.ts.map +1 -0
  438. package/dist/lib/trends.js +36 -0
  439. package/dist/lib/trends.js.map +1 -0
  440. package/dist/locales/codes.d.ts +14 -0
  441. package/dist/locales/codes.d.ts.map +1 -0
  442. package/dist/locales/codes.js +21 -0
  443. package/dist/locales/codes.js.map +1 -0
  444. package/dist/locales/ja.d.ts +785 -0
  445. package/dist/locales/ja.d.ts.map +1 -0
  446. package/dist/locales/ja.js +791 -0
  447. package/dist/locales/ja.js.map +1 -0
  448. package/dist/words/api-error.d.ts +4 -0
  449. package/dist/words/api-error.d.ts.map +1 -0
  450. package/dist/words/api-error.js +13 -0
  451. package/dist/words/api-error.js.map +1 -0
  452. package/dist/words/attempts.d.ts +17 -0
  453. package/dist/words/attempts.d.ts.map +1 -0
  454. package/dist/words/attempts.js +26 -0
  455. package/dist/words/attempts.js.map +1 -0
  456. package/dist/words/causes.d.ts +33 -0
  457. package/dist/words/causes.d.ts.map +1 -0
  458. package/dist/words/causes.js +58 -0
  459. package/dist/words/causes.js.map +1 -0
  460. package/dist/words/changes.d.ts +9 -0
  461. package/dist/words/changes.d.ts.map +1 -0
  462. package/dist/words/changes.js +23 -0
  463. package/dist/words/changes.js.map +1 -0
  464. package/dist/words/claims.d.ts +9 -0
  465. package/dist/words/claims.d.ts.map +1 -0
  466. package/dist/words/claims.js +12 -0
  467. package/dist/words/claims.js.map +1 -0
  468. package/dist/words/context.d.ts +18 -0
  469. package/dist/words/context.d.ts.map +1 -0
  470. package/dist/words/context.js +39 -0
  471. package/dist/words/context.js.map +1 -0
  472. package/dist/words/contract.d.ts +25 -0
  473. package/dist/words/contract.d.ts.map +1 -0
  474. package/dist/words/contract.js +52 -0
  475. package/dist/words/contract.js.map +1 -0
  476. package/dist/words/credential.d.ts +5 -0
  477. package/dist/words/credential.d.ts.map +1 -0
  478. package/dist/words/credential.js +7 -0
  479. package/dist/words/credential.js.map +1 -0
  480. package/dist/words/executor.d.ts +12 -0
  481. package/dist/words/executor.d.ts.map +1 -0
  482. package/dist/words/executor.js +20 -0
  483. package/dist/words/executor.js.map +1 -0
  484. package/dist/words/export.d.ts +8 -0
  485. package/dist/words/export.d.ts.map +1 -0
  486. package/dist/words/export.js +17 -0
  487. package/dist/words/export.js.map +1 -0
  488. package/dist/words/format.d.ts +36 -0
  489. package/dist/words/format.d.ts.map +1 -0
  490. package/dist/words/format.js +109 -0
  491. package/dist/words/format.js.map +1 -0
  492. package/dist/words/hops.d.ts +12 -0
  493. package/dist/words/hops.d.ts.map +1 -0
  494. package/dist/words/hops.js +27 -0
  495. package/dist/words/hops.js.map +1 -0
  496. package/dist/words/hosts.d.ts +18 -0
  497. package/dist/words/hosts.d.ts.map +1 -0
  498. package/dist/words/hosts.js +22 -0
  499. package/dist/words/hosts.js.map +1 -0
  500. package/dist/words/index.d.ts +28 -0
  501. package/dist/words/index.d.ts.map +1 -0
  502. package/dist/words/index.js +32 -0
  503. package/dist/words/index.js.map +1 -0
  504. package/dist/words/models.d.ts +10 -0
  505. package/dist/words/models.d.ts.map +1 -0
  506. package/dist/words/models.js +45 -0
  507. package/dist/words/models.js.map +1 -0
  508. package/dist/words/outcome.d.ts +14 -0
  509. package/dist/words/outcome.d.ts.map +1 -0
  510. package/dist/words/outcome.js +58 -0
  511. package/dist/words/outcome.js.map +1 -0
  512. package/dist/words/panels.d.ts +17 -0
  513. package/dist/words/panels.d.ts.map +1 -0
  514. package/dist/words/panels.js +63 -0
  515. package/dist/words/panels.js.map +1 -0
  516. package/dist/words/passes.d.ts +11 -0
  517. package/dist/words/passes.d.ts.map +1 -0
  518. package/dist/words/passes.js +13 -0
  519. package/dist/words/passes.js.map +1 -0
  520. package/dist/words/preflight.d.ts +28 -0
  521. package/dist/words/preflight.d.ts.map +1 -0
  522. package/dist/words/preflight.js +30 -0
  523. package/dist/words/preflight.js.map +1 -0
  524. package/dist/words/priority.d.ts +5 -0
  525. package/dist/words/priority.d.ts.map +1 -0
  526. package/dist/words/priority.js +7 -0
  527. package/dist/words/priority.js.map +1 -0
  528. package/dist/words/prompt.d.ts +10 -0
  529. package/dist/words/prompt.d.ts.map +1 -0
  530. package/dist/words/prompt.js +17 -0
  531. package/dist/words/prompt.js.map +1 -0
  532. package/dist/words/quota.d.ts +35 -0
  533. package/dist/words/quota.d.ts.map +1 -0
  534. package/dist/words/quota.js +102 -0
  535. package/dist/words/quota.js.map +1 -0
  536. package/dist/words/rests.d.ts +26 -0
  537. package/dist/words/rests.d.ts.map +1 -0
  538. package/dist/words/rests.js +77 -0
  539. package/dist/words/rests.js.map +1 -0
  540. package/dist/words/rounds.d.ts +14 -0
  541. package/dist/words/rounds.d.ts.map +1 -0
  542. package/dist/words/rounds.js +60 -0
  543. package/dist/words/rounds.js.map +1 -0
  544. package/dist/words/row-extras.d.ts +7 -0
  545. package/dist/words/row-extras.d.ts.map +1 -0
  546. package/dist/words/row-extras.js +26 -0
  547. package/dist/words/row-extras.js.map +1 -0
  548. package/dist/words/run-line.d.ts +40 -0
  549. package/dist/words/run-line.d.ts.map +1 -0
  550. package/dist/words/run-line.js +66 -0
  551. package/dist/words/run-line.js.map +1 -0
  552. package/dist/words/services.d.ts +16 -0
  553. package/dist/words/services.d.ts.map +1 -0
  554. package/dist/words/services.js +45 -0
  555. package/dist/words/services.js.map +1 -0
  556. package/dist/words/stop.d.ts +6 -0
  557. package/dist/words/stop.d.ts.map +1 -0
  558. package/dist/words/stop.js +69 -0
  559. package/dist/words/stop.js.map +1 -0
  560. package/dist/words/table.d.ts +4 -0
  561. package/dist/words/table.d.ts.map +1 -0
  562. package/dist/words/table.js +8 -0
  563. package/dist/words/table.js.map +1 -0
  564. package/dist/words/task-definition.d.ts +23 -0
  565. package/dist/words/task-definition.d.ts.map +1 -0
  566. package/dist/words/task-definition.js +27 -0
  567. package/dist/words/task-definition.js.map +1 -0
  568. package/dist/words/time-box.d.ts +8 -0
  569. package/dist/words/time-box.d.ts.map +1 -0
  570. package/dist/words/time-box.js +12 -0
  571. package/dist/words/time-box.js.map +1 -0
  572. package/dist/words/trends.d.ts +86 -0
  573. package/dist/words/trends.d.ts.map +1 -0
  574. package/dist/words/trends.js +104 -0
  575. package/dist/words/trends.js.map +1 -0
  576. package/docs/embed.md +121 -0
  577. package/docs/events.md +38 -0
  578. package/docs/examples/embed.html +31 -0
  579. package/docs/examples/journal.ts +32 -0
  580. package/docs/examples/live-transcript.ts +22 -0
  581. package/docs/examples/vite/index.html +30 -0
  582. package/docs/examples/vite/main.ts +23 -0
  583. package/docs/languages.md +48 -0
  584. package/docs/live-data.md +17 -0
  585. package/docs/theming.md +21 -0
  586. package/docs/tsconfig.json +14 -0
  587. package/package.json +131 -4
  588. package/src/adapters/check-rows.ts +81 -0
  589. package/src/adapters/filters.ts +76 -0
  590. package/src/adapters/graph/compound.ts +359 -0
  591. package/src/adapters/graph/flow-index.ts +154 -0
  592. package/src/adapters/graph/highlight.ts +40 -0
  593. package/src/adapters/graph/input.ts +236 -0
  594. package/src/adapters/graph/layer.ts +92 -0
  595. package/src/adapters/graph/matrix.ts +133 -0
  596. package/src/adapters/graph/plans.fixture.ts +194 -0
  597. package/src/adapters/graph/project.ts +358 -0
  598. package/src/adapters/graph/selection.ts +54 -0
  599. package/src/adapters/graph/states.ts +10 -0
  600. package/src/adapters/graph/types.ts +148 -0
  601. package/src/adapters/graph/words.ts +146 -0
  602. package/src/adapters/index.ts +22 -0
  603. package/src/adapters/journal-columns.ts +200 -0
  604. package/src/adapters/kpi-tiles.ts +211 -0
  605. package/src/adapters/lanes.ts +98 -0
  606. package/src/adapters/model-shares.ts +62 -0
  607. package/src/adapters/panel-body.ts +112 -0
  608. package/src/adapters/preflight.ts +27 -0
  609. package/src/adapters/task-columns.ts +120 -0
  610. package/src/adapters/transcript/index.ts +14 -0
  611. package/src/adapters/transcript/model.ts +156 -0
  612. package/src/adapters/transcript/rounds.ts +86 -0
  613. package/src/adapters/transcript/sections.ts +82 -0
  614. package/src/adapters/transcript/web.ts +40 -0
  615. package/src/adapters/transcript/who.ts +53 -0
  616. package/src/adapters/trends.ts +337 -0
  617. package/src/controllers/locale.ts +47 -0
  618. package/src/controllers/shortcuts.ts +69 -0
  619. package/src/controllers/stream.ts +103 -0
  620. package/src/controllers/task-detail.ts +54 -0
  621. package/src/controllers/theme.ts +73 -0
  622. package/src/core/events.ts +120 -0
  623. package/src/core/i18n.ts +76 -0
  624. package/src/core/index.ts +6 -0
  625. package/src/core/memory.ts +177 -0
  626. package/src/core/scroll.ts +73 -0
  627. package/src/core/view-route.ts +177 -0
  628. package/src/core/view-router.ts +66 -0
  629. package/src/define/all.ts +13 -0
  630. package/src/define/contracts.ts +2 -0
  631. package/src/define/definitions.ts +3 -0
  632. package/src/define/journal-table.ts +2 -0
  633. package/src/define/kpis.ts +2 -0
  634. package/src/define/monitor.ts +2 -0
  635. package/src/define/overview.ts +2 -0
  636. package/src/define/pipeline-graph.ts +2 -0
  637. package/src/define/procs.ts +3 -0
  638. package/src/define/task-table.ts +2 -0
  639. package/src/define/task-view.ts +2 -0
  640. package/src/define/timeline.ts +2 -0
  641. package/src/define/transcript.ts +2 -0
  642. package/src/elements/lists/ca-contracts.ts +204 -0
  643. package/src/elements/lists/ca-definitions.ts +170 -0
  644. package/src/elements/lists/ca-journal-table.ts +141 -0
  645. package/src/elements/lists/ca-panel-body.ts +200 -0
  646. package/src/elements/lists/ca-panel-view.ts +50 -0
  647. package/src/elements/lists/ca-proc-tree.ts +57 -0
  648. package/src/elements/lists/ca-procs-view.ts +89 -0
  649. package/src/elements/lists/ca-task-table.ts +94 -0
  650. package/src/elements/lists/index.ts +8 -0
  651. package/src/elements/overview/ca-kpis.ts +51 -0
  652. package/src/elements/overview/ca-model-usage.ts +113 -0
  653. package/src/elements/overview/ca-overview.ts +499 -0
  654. package/src/elements/overview/ca-pipeline-graph.ts +617 -0
  655. package/src/elements/overview/ca-quota.ts +164 -0
  656. package/src/elements/overview/ca-run-driver.ts +140 -0
  657. package/src/elements/overview/ca-services.ts +66 -0
  658. package/src/elements/overview/ca-spend-breakdown.ts +107 -0
  659. package/src/elements/overview/ca-timeline.ts +57 -0
  660. package/src/elements/overview/ca-workers.ts +82 -0
  661. package/src/elements/overview/index.ts +10 -0
  662. package/src/elements/overview/pipeline-graph/actions.ts +45 -0
  663. package/src/elements/overview/pipeline-graph/crumbs.ts +75 -0
  664. package/src/elements/overview/pipeline-graph/host.ts +26 -0
  665. package/src/elements/overview/pipeline-graph/inspector.ts +104 -0
  666. package/src/elements/overview/pipeline-graph/outline.ts +150 -0
  667. package/src/elements/overview/pipeline-graph/strings.ts +53 -0
  668. package/src/elements/overview/pipeline-graph/styles.ts +97 -0
  669. package/src/elements/shared/ca-definition.ts +206 -0
  670. package/src/elements/shared/contract-parts.ts +174 -0
  671. package/src/elements/shared/file-card.ts +49 -0
  672. package/src/elements/shared/prompt-text.ts +13 -0
  673. package/src/elements/shared/task-chip.ts +18 -0
  674. package/src/elements/shell/ca-clock.ts +27 -0
  675. package/src/elements/shell/ca-hosts.ts +93 -0
  676. package/src/elements/shell/ca-monitor.ts +528 -0
  677. package/src/elements/shell/ca-run-picker.ts +284 -0
  678. package/src/elements/shell/ca-theme-switch.ts +170 -0
  679. package/src/elements/shell/ca-toasts.ts +100 -0
  680. package/src/elements/shell/header.ts +45 -0
  681. package/src/elements/shell/styles.ts +72 -0
  682. package/src/elements/shell/tabs.ts +143 -0
  683. package/src/elements/shell/views.ts +67 -0
  684. package/src/elements/task/ca-task-view.ts +157 -0
  685. package/src/elements/task/ca-transcript.ts +214 -0
  686. package/src/elements/task/context.ts +105 -0
  687. package/src/elements/task/header.ts +296 -0
  688. package/src/elements/task/index.ts +2 -0
  689. package/src/elements/task/inputs.ts +46 -0
  690. package/src/elements/task/panes/definition.ts +7 -0
  691. package/src/elements/task/panes/io.ts +190 -0
  692. package/src/elements/task/panes/transcript.ts +29 -0
  693. package/src/elements/task/styles.ts +66 -0
  694. package/src/elements/trends/ca-trends.ts +204 -0
  695. package/src/index.ts +23 -0
  696. package/src/lib/tone.ts +109 -0
  697. package/src/lib/trends.ts +44 -0
  698. package/src/locales/codes.ts +23 -0
  699. package/src/locales/ja.ts +795 -0
  700. package/src/words/api-error.ts +17 -0
  701. package/src/words/attempts.ts +28 -0
  702. package/src/words/causes.ts +67 -0
  703. package/src/words/changes.ts +29 -0
  704. package/src/words/claims.ts +16 -0
  705. package/src/words/context.ts +47 -0
  706. package/src/words/contract.ts +63 -0
  707. package/src/words/credential.ts +8 -0
  708. package/src/words/executor.ts +22 -0
  709. package/src/words/export.ts +22 -0
  710. package/src/words/format.ts +107 -0
  711. package/src/words/hops.ts +30 -0
  712. package/src/words/hosts.ts +37 -0
  713. package/src/words/index.ts +31 -0
  714. package/src/words/models.ts +50 -0
  715. package/src/words/outcome.ts +61 -0
  716. package/src/words/panels.ts +71 -0
  717. package/src/words/passes.ts +18 -0
  718. package/src/words/preflight.ts +53 -0
  719. package/src/words/priority.ts +8 -0
  720. package/src/words/prompt.ts +20 -0
  721. package/src/words/quota.ts +108 -0
  722. package/src/words/rests.ts +96 -0
  723. package/src/words/rounds.ts +56 -0
  724. package/src/words/row-extras.ts +24 -0
  725. package/src/words/run-line.ts +77 -0
  726. package/src/words/services.ts +57 -0
  727. package/src/words/stop.ts +65 -0
  728. package/src/words/table.ts +10 -0
  729. package/src/words/task-definition.ts +37 -0
  730. package/src/words/time-box.ts +21 -0
  731. package/src/words/trends.ts +118 -0
@@ -0,0 +1,616 @@
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 '@contraagent/elements/graph/define';
8
+ import { NARROW, arrange, extentOf } from '@contraagent/elements/graph';
9
+ import { localized, msg } from '@lit/localize';
10
+ import { LitElement, html, nothing } from 'lit';
11
+ import { customElement } from 'lit/decorators.js';
12
+ import { compound, FLOW_BOX, IN_SEP, placeKey, placeStats } from '../../adapters/graph/compound.js';
13
+ import { indexOf, startsWith } from '../../adapters/graph/flow-index.js';
14
+ import { related, taskLinks } from '../../adapters/graph/highlight.js';
15
+ import { graphInput, matrixFromPlan } from '../../adapters/graph/input.js';
16
+ import { autoLayer, parentLayer, resolveLayer, splitLayer } from '../../adapters/graph/layer.js';
17
+ import { arranged, project } from '../../adapters/graph/project.js';
18
+ import { markSel, parseSelection } from '../../adapters/graph/selection.js';
19
+ import { taskStateStyles } from '../../adapters/graph/words.js';
20
+ import { emit } from '../../core/events.js';
21
+ import { getLocale } from '../../core/i18n.js';
22
+ import { flushMemory, RememberedSet } from '../../core/memory.js';
23
+ import { executorIcon } from '../../words/executor.js';
24
+ import { go, leavePasses, open, primary, select, tasksOf } from './pipeline-graph/actions.js';
25
+ import { crumbs, missingLine, openControls } from './pipeline-graph/crumbs.js';
26
+ import { inspector } from './pipeline-graph/inspector.js';
27
+ import { outline, outlineTree } from './pipeline-graph/outline.js';
28
+ import { graphStrings, matrixStrings } from './pipeline-graph/strings.js';
29
+ import { graphStyles, iconStyles } from './pipeline-graph/styles.js';
30
+ /** The most nodes the drawing holds before it stops opening functions on its own, for a frame `w` px wide. */
31
+ export const budgetFor = (w) => Math.max(14, Math.min(60, Math.round(w / 34)));
32
+ /** The most layers the drawing spans before it closes again what it opened on its own, for a frame `w` px wide: about one screen. */
33
+ export const spanFor = (w) => Math.max(8, Math.min(16, Math.round(w / 105)));
34
+ /**
35
+ * A drawing `span` layers long, left to right in a frame `w` px wide, would be scaled below
36
+ * this to fit: it is drawn top to bottom instead, where the frame grows with it. About
37
+ * a node and the gap after it, per layer.
38
+ */
39
+ const LEGIBLE = 0.6;
40
+ const LAYER_PX = 180;
41
+ export const tooWide = (span, w) => w > 0 && w / (span * LAYER_PX) < LEGIBLE;
42
+ /** From this width the outline is a column beside the graph (about this wide, with its gap); below it, a part above it that opens. */
43
+ const OUTLINE_WIDE = 1500;
44
+ const OUTLINE_COLUMN = 300;
45
+ /** The entries of the opened set that are a mode, not a place. */
46
+ const MODE_ALL = '*all';
47
+ const MODE_NONE = '*none';
48
+ const EMPTY_LAYER = {
49
+ ...arrange({ nodes: [], clusters: [], edges: [], stubs: [] }),
50
+ path: [],
51
+ nodes: [],
52
+ boxes: [],
53
+ fns: [],
54
+ edges: [],
55
+ stubs: [],
56
+ units: [],
57
+ };
58
+ /**
59
+ * The run as a graph of its flow, one layer at a time (`<cae-layered-graph>` draws
60
+ * it). A layer shows the kinds of the tasks its function created (a kind node each,
61
+ * joined to the ones it waits for) and the functions it called (a function node each,
62
+ * holding their tasks); nodes created in one loop are drawn in a loop box, with its
63
+ * last pass ("up to 3 passes") and, when its units ran different numbers of passes,
64
+ * how many ran each ("1 pass: 4 | 2 passes: 1"); a nested loop's box is inside it, and
65
+ * a dotted edge inside each box, from its last layer back to its first, is the return
66
+ * to its next pass. A kind node names who runs its tasks (✦ and an accent: an agent
67
+ * task; ⚙: a Python task); a function node and a loop box carry the mark of an inner
68
+ * view (their layer, their passes). Inside a node, one mark per unit, at the same place
69
+ * in every node, so a unit can be followed across the layer: a task in a kind node, a
70
+ * flow call in a function node; in a loop box, the unit's latest pass, with the number
71
+ * of passes it ran when more than 1. A mark of several tasks shows the most severe
72
+ * state among them (failed, running, not started, waiting, skipped, done); a flow
73
+ * call's mark counts every task of it and of the flow calls it started, and its own
74
+ * error (raised or closed) as failed. A node's count is its tasks done of its tasks,
75
+ * with the others by state, and a function node names its flow calls that stopped
76
+ * with an error. A problem has a square mark (failed: red; not started: hatched),
77
+ * every other state a round one. Above 200 marks, a node shows a bar of its counts and
78
+ * names its failed marks. A solid edge waits for an output; a dashed edge was created
79
+ * after a result; an edge from outside the layer starts at a named stub.
80
+ *
81
+ * A click selects a mark, a node or a loop box (`sel`); the card beside it shows its
82
+ * facts and links to where it leads: a mark to its task detail, a kind node to its
83
+ * tasks, a function node to its layer, a loop box to its passes. A double click, or
84
+ * Enter, follows the first of them. Hovering or focusing a mark highlights its unit
85
+ * and the tasks joined to it, as the selected mark does. The graph opens on the first
86
+ * layer with more than one node (a static flow's kinds), or on a single function node
87
+ * whose flow call raised; a layer the run does not have opens that one, with a line
88
+ * naming it, and the view route is set right in place (a function named by its qualified
89
+ * name alone opens its layer when the run reaches it by one flow path). A loop's
90
+ * passes are a row per unit and a column per node and pass, a nested loop's passes as
91
+ * a group of columns inside each pass of the outer one, the units sortable by number
92
+ * of passes or by status (`<cae-mark-matrix>`). The breadcrumb, shown on every layer
93
+ * below the top (a loop named by its file and line), and Escape go back up. On a
94
+ * narrow screen the graph runs top to bottom. "Graph | Table" changes the view; in a
95
+ * loop's passes, "Graph" opens the layer the loop is in, with its box selected.
96
+ * A height set on the element (or given it by a flex or grid container) is the
97
+ * graph's, less the outline's line above it: the drawing fits in it.
98
+ *
99
+ * @fires ca-open-task - `{key, view?}`: a mark's task detail was opened (a task that did not start opens on its input, a Python task on its output)
100
+ * @fires ca-navigate - `{sel}`: a mark, a node, a table row or a loop box was selected, or the selection cleared; `{tab: 'tasks', kind}`: a kind node's tasks (`kind` '' for a node of several kinds); `{layer, unit?}`: a function's layer, a loop's passes, a flow call's function or the breadcrumb, or Escape; `{layer, unit, sel}`: "Graph" in a loop's passes, its box selected; `{layer, unit, sel, replace: true}`: the view route's layer set right
101
+ */
102
+ let CaPipelineGraph = class CaPipelineGraph extends LitElement {
103
+ constructor() {
104
+ super(...arguments);
105
+ this.plan = { nodes: [], groups: [] };
106
+ /** The finished attempts: they tell why a task did not start. */
107
+ this.journal = [];
108
+ /** The run id: paths in a cause are shown relative to it. */
109
+ this.run = '';
110
+ /** The run is running: tasks still pending are waiting; once it is over, they did not run. */
111
+ this.live = false;
112
+ /** The layer shown: its segments (function names, then `loop:<line>` for a loop's passes) joined by `/`; '' for the layer the graph opens on. */
113
+ this.layer = '';
114
+ /** The unit highlighted while nothing is hovered or focused. */
115
+ this.unit = '';
116
+ /** What is selected in the layer: a node or a loop box by its id, a mark by `markSel`; '' for nothing. */
117
+ this.sel = '';
118
+ /** Top to bottom: the frame is narrow. */
119
+ this.down = false;
120
+ /** Top to bottom: the drawing is too long to read left to right in the frame. */
121
+ this.tall = false;
122
+ /** A loop's passes: how its units are sorted. */
123
+ this.sort = 'order';
124
+ /** The layer the view route named that this run does not have (shown once the graph fell back to its opening layer). */
125
+ this.missing = '';
126
+ /** The view route's layer to set right after this update, and that change, which is not the reader's. */
127
+ this.fixLayer = null;
128
+ this.replacing = false;
129
+ /** The layer the graph opens on, the one shown, and what it shows. */
130
+ this.auto = [];
131
+ this.segments = [];
132
+ /** The layer alone, for a loop's passes; null when the layer is drawn with its functions. */
133
+ this.proj = null;
134
+ /** The layer as it is drawn: alone, or with its functions drawn open. */
135
+ this.model = null;
136
+ this.graph = EMPTY_LAYER;
137
+ this.input = { series: [], nodes: [], clusters: [], edges: [], stubs: [] };
138
+ /** The order the layer was last drawn in, before this update: the graph keeps it. */
139
+ this.prevOrder = undefined;
140
+ this.matrix = null;
141
+ this.matrixIn = null;
142
+ /** Each layer's order, so nodes stay where they are while the plan grows. */
143
+ this.orders = new Map();
144
+ this.links = taskLinks([]);
145
+ this.states = taskStateStyles(false);
146
+ /** The locale the words were last made in. */
147
+ this.locale = '';
148
+ /** The functions the reader opened and closed (and the mode: all or none opened), kept per run in the page's memory. */
149
+ this.opened = null;
150
+ this.closed = null;
151
+ this.memRun = null;
152
+ /** A change to them: the layer is drawn again. */
153
+ this.rev = 0;
154
+ /** The most nodes the drawing holds before it stops opening functions on its own (`budgetFor` the frame). */
155
+ this.budget = 40;
156
+ /** The places drawn open, and what each place holds. */
157
+ this.shownOpen = new Set();
158
+ this.stats = new Map();
159
+ /** After this update, the focus goes on this item's open or close control. */
160
+ this.focusToggle = '';
161
+ /** The outline: the flow's places from its top, as a tree; the items the reader folded or unfolded. */
162
+ this.flowStats = new Map();
163
+ this.tree = [];
164
+ this.folds = new Map();
165
+ /** The frame is wide enough for the outline as a column. */
166
+ this.wide = true;
167
+ this.oh = this.outlineHost();
168
+ /** What a hovered or selected mark lights, for this layer. */
169
+ this.lights = () => new Set();
170
+ /** After this update, the focus goes into the new layer: on the item it came from (`cameFrom`), else the first. */
171
+ this.refocus = false;
172
+ this.cameFrom = '';
173
+ this.h = this.partsHost();
174
+ this.onToggle = (e) => this.toggle(e.detail.id, e.detail.open);
175
+ this.onEscape = (e) => {
176
+ if (e.key !== 'Escape' || e.defaultPrevented)
177
+ return;
178
+ const up = parentLayer(this.segments, this.auto);
179
+ if (!up)
180
+ return;
181
+ e.preventDefault();
182
+ this.refocus = true;
183
+ this.cameFrom = this.segments[this.segments.length - 1] ?? '';
184
+ go(this.h, up);
185
+ };
186
+ this.onSelect = (e) => select(this.h, e.detail.id ?? '');
187
+ this.onActivate = (e) => {
188
+ const s = parseSelection(this.graph, this.matrix, e.detail.id);
189
+ if (s?.type === 'mark')
190
+ open(this.h, s.mark, s.node);
191
+ else if (s?.type === 'node')
192
+ tasksOf(this.h, s.node);
193
+ };
194
+ this.onDrill = (e) => {
195
+ const s = parseSelection(this.graph, this.matrix, e.detail.id);
196
+ if (s)
197
+ primary(this.h, s);
198
+ };
199
+ this.onView = (e) => {
200
+ if (e.detail.view === 'graph' && this.matrix)
201
+ leavePasses(this.h);
202
+ };
203
+ }
204
+ static { this.styles = graphStyles; }
205
+ static { this.properties = {
206
+ plan: { attribute: false },
207
+ journal: { attribute: false },
208
+ run: {},
209
+ live: { type: Boolean },
210
+ layer: {},
211
+ unit: {},
212
+ sel: {},
213
+ down: { state: true },
214
+ sort: { state: true },
215
+ missing: { state: true },
216
+ rev: { state: true },
217
+ budget: { state: true },
218
+ wide: { state: true },
219
+ }; }
220
+ willUpdate(changed) {
221
+ if (changed.has('run'))
222
+ this.orders.clear();
223
+ if (changed.has('layer') && changed.get('layer') !== undefined) {
224
+ // The focus stays where it is on the view switch; elsewhere it goes to the new layer.
225
+ const at = this.renderRoot instanceof ShadowRoot ? this.renderRoot.activeElement : null;
226
+ const inner = at?.shadowRoot?.activeElement;
227
+ this.refocus = at !== null && !inner?.closest('.views');
228
+ if (this.replacing)
229
+ this.replacing = false;
230
+ else
231
+ this.missing = '';
232
+ }
233
+ if (changed.has('run') && changed.get('run') !== undefined)
234
+ this.missing = '';
235
+ if (changed.has('plan'))
236
+ this.links = taskLinks(this.plan.nodes);
237
+ if (changed.has('plan') || changed.has('live')) {
238
+ this.flowStats = placeStats(indexOf(this.plan), [], this.live);
239
+ this.tree = outlineTree(this.flowStats);
240
+ }
241
+ if (changed.has('run'))
242
+ this.folds.clear();
243
+ // A selection the drawing does not show (an outline's item, a link) opens the functions around it.
244
+ const hidden = changed.has('sel') && !!this.sel && !splitLayer(this.segments).loop && !parseSelection(this.graph, this.matrix, this.sel);
245
+ const structure = changed.has('plan') || changed.has('layer') || changed.has('run') || changed.has('down') || changed.has('rev') || changed.has('budget') || hidden;
246
+ if (structure) {
247
+ this.auto = autoLayer(this.plan);
248
+ this.segments = this.layer ? this.layer.split('/') : this.auto;
249
+ // A layer the plan does not have (a stale link, a typo): the one it names when that is
250
+ // unique, else the opening layer; either way the view route is set right in place, once this update is done.
251
+ if (this.layer && this.plan.nodes.length) {
252
+ const found = resolveLayer(this.plan, this.segments);
253
+ if (!found) {
254
+ this.missing = this.layer;
255
+ this.segments = this.auto;
256
+ this.fixLayer = '';
257
+ }
258
+ else if (found.join('/') !== this.layer) {
259
+ this.segments = found;
260
+ this.fixLayer = found.join('/') === this.auto.join('/') ? '' : found.join('/');
261
+ }
262
+ }
263
+ const { path, loop } = splitLayer(this.segments);
264
+ if (loop) {
265
+ // A loop's passes: its layer drawn alone.
266
+ this.proj = project(this.plan, path);
267
+ this.model = this.proj.model;
268
+ }
269
+ else {
270
+ const mem = this.memory();
271
+ const mode = this.openMode();
272
+ const c = compound(this.plan, path, {
273
+ open: new Set(mem.opened.values().filter((k) => !k.startsWith('*'))),
274
+ closed: new Set(mem.closed.values()),
275
+ all: mode === 'all',
276
+ budget: mode === 'none' ? 0 : this.budget,
277
+ maxSpan: spanFor(this.graphWidth()),
278
+ sel: this.sel,
279
+ live: this.live,
280
+ });
281
+ this.proj = null;
282
+ this.model = c.model;
283
+ this.shownOpen = c.open;
284
+ this.stats = c.stats;
285
+ }
286
+ this.prevOrder = this.orders.get(path.join('/'));
287
+ }
288
+ const locale = getLocale();
289
+ const words = structure || changed.has('journal') || changed.has('live') || locale !== this.locale;
290
+ if (words || changed.has('sort'))
291
+ this.build(words, locale);
292
+ }
293
+ /** The generic graph's model of the layer (`words`: its words changed), its arrangement, and a loop's passes. */
294
+ build(words, locale) {
295
+ const model = this.model;
296
+ if (!model)
297
+ return;
298
+ const proj = this.proj;
299
+ const { path, loop } = splitLayer(this.segments);
300
+ const x = { plan: this.plan, journal: this.journal, run: this.run, live: this.live, links: this.links };
301
+ if (words) {
302
+ this.locale = locale;
303
+ this.states = taskStateStyles(this.live);
304
+ this.input = graphInput(model, x, !loop);
305
+ let a = arrange(this.input, this.prevOrder, this.down);
306
+ // Too long to read left to right in this frame: top to bottom.
307
+ this.tall = !this.down && !loop && tooWide(extentOf(a).span, this.graphWidth());
308
+ if (this.tall)
309
+ a = arrange(this.input, this.prevOrder, true);
310
+ this.graph = arranged(model, a);
311
+ this.orders.set(path.join('/'), a.order);
312
+ this.lights = lightsOf(this.plan, this.links, this.graph);
313
+ }
314
+ const m = loop && proj ? matrixFromPlan(this.plan, path, loop, this.graph.order, this.sort, x, proj) : null;
315
+ this.matrix = m?.matrix ?? null;
316
+ this.matrixIn = m?.input ?? null;
317
+ }
318
+ connectedCallback() {
319
+ super.connectedCallback();
320
+ this.addEventListener('keydown', this.onEscape);
321
+ // Top to bottom on a narrow screen.
322
+ this.resize = new ResizeObserver(() => {
323
+ const w = this.clientWidth;
324
+ const down = w > 0 && w < NARROW;
325
+ if (down !== this.down)
326
+ this.down = down;
327
+ const budget = w > 0 ? budgetFor(this.graphWidth()) : this.budget;
328
+ if (budget !== this.budget)
329
+ this.budget = budget;
330
+ const wide = w === 0 || w >= OUTLINE_WIDE;
331
+ if (wide !== this.wide)
332
+ this.wide = wide;
333
+ });
334
+ this.resize.observe(this);
335
+ }
336
+ disconnectedCallback() {
337
+ super.disconnectedCallback();
338
+ this.removeEventListener('keydown', this.onEscape);
339
+ this.resize?.disconnect();
340
+ }
341
+ /** The reader's opens and closes of this run's functions. */
342
+ memory() {
343
+ if (!this.opened || !this.closed || this.memRun !== this.run) {
344
+ this.memRun = this.run;
345
+ this.opened = new RememberedSet(`graph-open:${this.run}`, this);
346
+ this.closed = new RememberedSet(`graph-closed:${this.run}`, this);
347
+ }
348
+ return { opened: this.opened, closed: this.closed };
349
+ }
350
+ /** Which functions are drawn open: those chosen (`auto`), every one, or only those the reader opened. */
351
+ openMode() {
352
+ const { opened } = this.memory();
353
+ return opened.has(MODE_ALL) ? 'all' : opened.has(MODE_NONE) ? 'none' : 'auto';
354
+ }
355
+ setMode(mode) {
356
+ const { opened, closed } = this.memory();
357
+ opened.clear();
358
+ closed.clear();
359
+ if (mode === 'all')
360
+ opened.set(MODE_ALL, true);
361
+ if (mode === 'none')
362
+ opened.set(MODE_NONE, true);
363
+ // The reader's choice is written at once: a reload right after keeps it.
364
+ flushMemory();
365
+ this.rev++;
366
+ }
367
+ /** A function node's place, by its id in the drawing. */
368
+ placeOfNode(id) {
369
+ const n = this.graph.nodes.find((x) => x.id === id);
370
+ if (!n || n.type !== 'flow')
371
+ return null;
372
+ const local = id.includes(IN_SEP) ? id.slice(id.lastIndexOf(IN_SEP) + IN_SEP.length) : id;
373
+ return placeKey(n.layer, local);
374
+ }
375
+ /** Open or close a function: `id` is its node (to open) or its cluster (to close). */
376
+ toggle(id, open) {
377
+ const key = id.startsWith(FLOW_BOX) ? id.slice(FLOW_BOX.length) : this.placeOfNode(id);
378
+ if (!key)
379
+ return;
380
+ const { opened, closed } = this.memory();
381
+ opened.set(key, open);
382
+ closed.set(key, !open);
383
+ flushMemory();
384
+ // The focus stays on the control: the cluster's once open, the node's once closed.
385
+ this.focusToggle = open ? `${FLOW_BOX}${key}` : this.nodeIdOf(key);
386
+ this.rev++;
387
+ }
388
+ /** The id a place's node will have once drawn closed. */
389
+ nodeIdOf(key) {
390
+ const s = this.stats.get(key);
391
+ if (!s)
392
+ return '';
393
+ const parent = s.parent;
394
+ return parent === null || !this.shownOpen.has(parent) ? s.id : `${parent}${IN_SEP}${s.id}`;
395
+ }
396
+ updated() {
397
+ if (this.focusToggle) {
398
+ const id = this.focusToggle;
399
+ this.focusToggle = '';
400
+ const el = this.renderRoot.querySelector('cae-layered-graph');
401
+ if (el)
402
+ void el.updateComplete.then(() => el.focusToggle(id));
403
+ }
404
+ if (this.fixLayer !== null) {
405
+ // Set the view route's layer right, in place: the reader did not go anywhere.
406
+ const layer = this.fixLayer;
407
+ this.fixLayer = null;
408
+ this.replacing = true;
409
+ emit(this, 'ca-navigate', { layer, unit: this.unit, sel: this.sel, replace: true });
410
+ }
411
+ if (this.refocus || this.cameFrom) {
412
+ const from = this.cameFrom;
413
+ this.refocus = false;
414
+ this.cameFrom = '';
415
+ // The node (or loop box) it came from, else the first item; it does not select.
416
+ const id = from.startsWith('loop:') ? from : (this.graph.nodes.find((n) => n.type === 'flow' && n.name === from)?.id ?? null);
417
+ const el = this.renderRoot.querySelector('cae-layered-graph');
418
+ if (el)
419
+ void el.updateComplete.then(() => el.focusItem(from ? id : null));
420
+ }
421
+ }
422
+ render() {
423
+ if (!this.plan.nodes.length) {
424
+ return html `<div class="blank" style="padding:24px">${this.live ? msg('No tasks scheduled yet') : msg('No tasks scheduled')}</div>`;
425
+ }
426
+ const graph = this.renderGraph();
427
+ if (!this.tree.length)
428
+ return graph;
429
+ // The outline: a column beside the graph, or, on a narrow frame, a part above it that opens.
430
+ return this.wide
431
+ ? html `<div class="whole">${outline(this.oh, this.tree)}<div class="g">${graph}</div></div>`
432
+ : html `<details class="odet"><summary>${msg('Outline of the flow')}</summary>${outline(this.oh, this.tree)}</details>${graph}`;
433
+ }
434
+ renderGraph() {
435
+ const s = parseSelection(this.graph, this.matrix, this.sel);
436
+ const functions = this.graph.nodes.some((n) => n.type === 'flow');
437
+ return html `<cae-layered-graph .graph=${this.input} .states=${this.states} .selected=${this.sel || null} .highlight=${this.unit || null}
438
+ .order=${this.prevOrder} key=${this.segments.join('/')} direction=${this.down || this.tall ? 'down' : 'across'} .matrix=${this.matrixIn}
439
+ .related=${this.lights} .strings=${graphStrings(!!parentLayer(this.segments, this.auto), functions)} .matrixStrings=${matrixStrings()}
440
+ .renderIcon=${renderIcon} .iconStyles=${iconStyles}
441
+ @cae-select=${this.onSelect} @cae-activate=${this.onActivate} @cae-drill=${this.onDrill} @cae-view-change=${this.onView} @cae-toggle=${this.onToggle}
442
+ @cae-sort=${(e) => (this.sort = e.detail.id)}>
443
+ <div slot="crumbs">${crumbs(this.h, splitLayer(this.segments).loop ? null : openControls(this.openMode(), (m) => this.setMode(m)))}${missingLine(this.missing)}</div>
444
+ ${s ? inspector(this.h, s) : nothing}
445
+ </cae-layered-graph>`;
446
+ }
447
+ /** The graph's own width: the element's, less the outline's column beside it. */
448
+ graphWidth() {
449
+ const w = this.clientWidth || 1200;
450
+ return this.tree.length && w >= OUTLINE_WIDE ? w - OUTLINE_COLUMN : w;
451
+ }
452
+ /** The place keys on the way to the layer shown (the functions of its path). */
453
+ currentKeys() {
454
+ const { path } = splitLayer(this.segments);
455
+ const out = new Set();
456
+ for (const s of this.flowStats.values()) {
457
+ const d = s.layer.length;
458
+ if (d < path.length && startsWith(path, s.layer) && path[d] === s.name)
459
+ out.add(s.key);
460
+ }
461
+ return out;
462
+ }
463
+ /** The place (or loop item) the selection is, or is in: '' for none. */
464
+ selectedItem() {
465
+ const sel = this.sel;
466
+ if (!sel)
467
+ return '';
468
+ if (sel.startsWith(FLOW_BOX))
469
+ return sel.slice(FLOW_BOX.length);
470
+ const id = sel.split('#')[0] ?? '';
471
+ const node = this.graph.nodes.find((n) => n.id === id);
472
+ if (node?.type === 'flow')
473
+ return this.placeOfNode(id) ?? '';
474
+ const box = this.graph.boxes.find((b) => b.id === id);
475
+ return box ? `${box.layer.join('/')}|${box.local}` : '';
476
+ }
477
+ /** The id an outline item is drawn with, once its places are open; and those places. */
478
+ drawnId(item) {
479
+ const { path } = splitLayer(this.segments);
480
+ if (item.layer.length < path.length || !startsWith(item.layer, path))
481
+ return null;
482
+ // The place whose layer the item is in, and every place around it, down from the layer shown.
483
+ const places = [];
484
+ for (let s = this.flowStats.get(item.type === 'fn' ? (this.flowStats.get(item.id)?.parent ?? '') : this.containerKey(item) ?? ''); s && s.layer.length >= path.length; s = this.flowStats.get(s.parent ?? ''))
485
+ places.unshift(s.key);
486
+ const inner = places[places.length - 1] ?? '';
487
+ if (item.type === 'fn') {
488
+ const s = this.flowStats.get(item.id);
489
+ if (!s)
490
+ return null;
491
+ if (this.shownOpen.has(item.id))
492
+ return { id: `${FLOW_BOX}${item.id}`, open: places };
493
+ return { id: inner ? `${inner}${IN_SEP}${s.id}` : s.id, open: places };
494
+ }
495
+ return { id: inner ? `${inner}${IN_SEP}${item.name}` : item.name, open: places };
496
+ }
497
+ /** The place whose layer a loop item is in ('' when it is the layer shown, null when none is known). */
498
+ containerKey(item) {
499
+ const { path } = splitLayer(this.segments);
500
+ if (item.layer.length === path.length)
501
+ return '';
502
+ for (const s of this.flowStats.values())
503
+ if ([...s.layer, s.name].join('/') === item.layer.join('/'))
504
+ return s.key;
505
+ return null;
506
+ }
507
+ outlineHost() {
508
+ // eslint-disable-next-line @typescript-eslint/no-this-alias -- the methods below read the element
509
+ const el = this;
510
+ return {
511
+ get live() { return el.live; },
512
+ expanded(id) {
513
+ const own = el.folds.get(id);
514
+ if (own !== undefined)
515
+ return own;
516
+ // Unfolded by default: the top items, and those on the way to the layer shown, to what is open and to the selection.
517
+ const want = new Set([...el.currentKeys(), ...el.shownOpen, el.selectedItem()]);
518
+ const has = (it) => want.has(it.id) || it.kids.some(has);
519
+ const it = findItem(el.tree, id);
520
+ return !!it && (el.tree.includes(it) || has(it));
521
+ },
522
+ expand(id, on) {
523
+ el.folds.set(id, on);
524
+ el.requestUpdate();
525
+ },
526
+ current: (id) => el.currentKeys().has(id),
527
+ here: (id) => {
528
+ const { path } = splitLayer(el.segments);
529
+ const s = el.flowStats.get(id);
530
+ return !!s && s.layer.length === path.length - 1 && startsWith(path, [...s.layer, s.name]);
531
+ },
532
+ selected: (id) => !!id && el.selectedItem() === id,
533
+ pick(item) {
534
+ const at = el.drawnId(item);
535
+ if (!at) {
536
+ // Outside the layer shown: its layer, with it selected.
537
+ const local = item.type === 'fn' ? (el.flowStats.get(item.id)?.id ?? '') : item.name;
538
+ emit(el, 'ca-navigate', { layer: item.layer.join('/') === el.auto.join('/') ? '' : item.layer.join('/'), unit: el.unit, sel: local });
539
+ return;
540
+ }
541
+ const { opened, closed } = el.memory();
542
+ let more = false;
543
+ for (const k of at.open) {
544
+ if (!el.shownOpen.has(k))
545
+ more = true;
546
+ opened.set(k, true);
547
+ closed.set(k, false);
548
+ }
549
+ if (more)
550
+ el.rev++;
551
+ select(el.h, at.id);
552
+ },
553
+ enter(item) {
554
+ // A chain: the layer of its last function, where its content is.
555
+ const last = item.parts[item.parts.length - 1] ?? item;
556
+ go(el.h, [...last.layer, last.name]);
557
+ },
558
+ };
559
+ }
560
+ /** This element as its parts see it (`pipeline-graph/host.ts`), its private members included. */
561
+ partsHost() {
562
+ // eslint-disable-next-line @typescript-eslint/no-this-alias -- the getters below read the element, not the object they are on
563
+ const el = this;
564
+ return {
565
+ el,
566
+ get plan() { return el.plan; },
567
+ get journal() { return el.journal; },
568
+ get run() { return el.run; },
569
+ get live() { return el.live; },
570
+ get sel() { return el.sel; },
571
+ get unit() { return el.unit; },
572
+ get segments() { return el.segments; },
573
+ get auto() { return el.auto; },
574
+ get graph() { return el.graph; },
575
+ get matrix() { return el.matrix; },
576
+ get links() { return el.links; },
577
+ };
578
+ }
579
+ };
580
+ CaPipelineGraph = __decorate([
581
+ customElement('ca-pipeline-graph'),
582
+ localized()
583
+ ], CaPipelineGraph);
584
+ export { CaPipelineGraph };
585
+ /** An executor's icon: `agent` or `python`. */
586
+ const renderIcon = (name) => executorIcon(name === 'python');
587
+ /**
588
+ * What a hovered or selected mark lights in a layer: for a unit (or the key of a mark
589
+ * without one), the marks of the tasks joined to its tasks upstream or downstream.
590
+ */
591
+ function lightsOf(plan, links, g) {
592
+ const marks = g.nodes.flatMap((n) => [...n.units, ...n.single].filter((m) => m !== null).map((m) => [markSel(n.id, m), m]));
593
+ const keyOf = new Map(marks.map(([id, m]) => [id, m.key]));
594
+ const memo = new Map();
595
+ return (key) => {
596
+ const had = memo.get(key);
597
+ if (had)
598
+ return had;
599
+ const on = related(plan.nodes, links, keyOf.get(key) ?? key);
600
+ const lit = new Set(marks.filter(([, m]) => m.keys.some((k) => on.has(k))).map(([id]) => id));
601
+ memo.set(key, lit);
602
+ return lit;
603
+ };
604
+ }
605
+ /** The outline item `id`, wherever it is in the tree. */
606
+ function findItem(items, id) {
607
+ for (const it of items) {
608
+ if (it.id === id)
609
+ return it;
610
+ const k = findItem(it.kids, id);
611
+ if (k)
612
+ return k;
613
+ }
614
+ return undefined;
615
+ }
616
+ //# sourceMappingURL=ca-pipeline-graph.js.map