@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,71 @@
1
+ // The language the elements speak. English is written in the sources; other
2
+ // locales are generated from xliff/<locale>.xlf by `pnpm i18n`
3
+ // (lit-localize, runtime mode) into src/locales/<locale>.ts.
4
+ //
5
+ // Importing this module configures nothing: `configureLocales()` sets up Lit
6
+ // Localize, once, when the page or `<ca-monitor>` calls it. Until then, and in
7
+ // a page whose own code configured Lit Localize first, the elements speak
8
+ // English. Every element is `@localized()`, so `setLocale` re-renders them in place.
9
+ import { configureLocalization } from '@lit/localize';
10
+ import { allLocales, sourceLocale, targetLocales } from '../locales/codes.js';
11
+ export { allLocales };
12
+ /** Each locale's name, written in itself (for a language switch). */
13
+ export const LOCALE_NAMES = { en: 'English', ja: '日本語' };
14
+ /** Each target locale's module, loaded when the locale is first chosen. */
15
+ const LOADERS = {
16
+ ja: () => import('../locales/ja.js'),
17
+ };
18
+ let localization;
19
+ /**
20
+ * Sets up Lit Localize for these elements, once; true when the elements can
21
+ * switch language. False when the page had already configured Lit Localize
22
+ * (it can be configured once per page): the elements then stay in English.
23
+ */
24
+ export function configureLocales() {
25
+ if (localization === undefined) {
26
+ try {
27
+ localization = configureLocalization({ sourceLocale, targetLocales, loadLocale: (l) => LOADERS[l]() });
28
+ }
29
+ catch {
30
+ localization = null;
31
+ }
32
+ }
33
+ return localization !== null;
34
+ }
35
+ /** The language shown now: English before `configureLocales()`. */
36
+ export const getLocale = () => localization?.getLocale() ?? sourceLocale;
37
+ /** Show every element in `locale`; it configures the locales first if nothing has. */
38
+ export async function setLocale(locale) {
39
+ if (configureLocales())
40
+ await localization.setLocale(locale);
41
+ }
42
+ const STORE_KEY = 'contraagent:locale';
43
+ export const isLocale = (x) => allLocales.includes(x);
44
+ /** The reader's choice from an earlier visit, else the first of the browser's languages we have, else English. */
45
+ export function preferredLocale() {
46
+ try {
47
+ const saved = globalThis.localStorage?.getItem(STORE_KEY);
48
+ if (isLocale(saved))
49
+ return saved;
50
+ }
51
+ catch {
52
+ /* storage blocked: fall through */
53
+ }
54
+ for (const lang of globalThis.navigator?.languages ?? []) {
55
+ const base = lang.toLowerCase().split('-')[0];
56
+ if (isLocale(base))
57
+ return base;
58
+ }
59
+ return sourceLocale;
60
+ }
61
+ /** Switch every element to `locale`, and remember the choice for the next visit. */
62
+ export async function chooseLocale(locale) {
63
+ try {
64
+ globalThis.localStorage?.setItem(STORE_KEY, locale);
65
+ }
66
+ catch {
67
+ /* storage blocked: the choice lasts for this page */
68
+ }
69
+ await setLocale(locale);
70
+ }
71
+ //# sourceMappingURL=i18n.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"i18n.js","sourceRoot":"","sources":["../../src/core/i18n.ts"],"names":[],"mappings":"AAAA,4EAA4E;AAC5E,+DAA+D;AAC/D,6DAA6D;AAC7D,EAAE;AACF,6EAA6E;AAC7E,+EAA+E;AAC/E,0EAA0E;AAC1E,qFAAqF;AACrF,OAAO,EAAE,qBAAqB,EAAE,MAAM,eAAe,CAAC;AACtD,OAAO,EAAE,UAAU,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AAG9E,OAAO,EAAE,UAAU,EAAE,CAAC;AAEtB,qEAAqE;AACrE,MAAM,CAAC,MAAM,YAAY,GAA2B,EAAE,EAAE,EAAE,SAAS,EAAE,EAAE,EAAE,KAAK,EAAE,CAAC;AAEjF,2EAA2E;AAC3E,MAAM,OAAO,GAA6F;IACxG,EAAE,EAAE,GAAG,EAAE,CAAC,MAAM,CAAC,kBAAkB,CAAC;CACrC,CAAC;AAEF,IAAI,YAAyE,CAAC;AAE9E;;;;GAIG;AACH,MAAM,UAAU,gBAAgB;IAC9B,IAAI,YAAY,KAAK,SAAS,EAAE,CAAC;QAC/B,IAAI,CAAC;YACH,YAAY,GAAG,qBAAqB,CAAC,EAAE,YAAY,EAAE,aAAa,EAAE,UAAU,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,OAAO,CAAC,CAAyB,CAAC,EAAE,EAAE,CAAC,CAAC;QACjI,CAAC;QAAC,MAAM,CAAC;YACP,YAAY,GAAG,IAAI,CAAC;QACtB,CAAC;IACH,CAAC;IACD,OAAO,YAAY,KAAK,IAAI,CAAC;AAC/B,CAAC;AAED,mEAAmE;AACnE,MAAM,CAAC,MAAM,SAAS,GAAG,GAAW,EAAE,CAAE,YAAY,EAAE,SAAS,EAAyB,IAAI,YAAY,CAAC;AAEzG,sFAAsF;AACtF,MAAM,CAAC,KAAK,UAAU,SAAS,CAAC,MAAc;IAC5C,IAAI,gBAAgB,EAAE;QAAE,MAAM,YAAa,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;AAChE,CAAC;AAED,MAAM,SAAS,GAAG,oBAAoB,CAAC;AAEvC,MAAM,CAAC,MAAM,QAAQ,GAAG,CAAC,CAAU,EAAe,EAAE,CAAE,UAAiC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;AAEpG,kHAAkH;AAClH,MAAM,UAAU,eAAe;IAC7B,IAAI,CAAC;QACH,MAAM,KAAK,GAAG,UAAU,CAAC,YAAY,EAAE,OAAO,CAAC,SAAS,CAAC,CAAC;QAC1D,IAAI,QAAQ,CAAC,KAAK,CAAC;YAAE,OAAO,KAAK,CAAC;IACpC,CAAC;IAAC,MAAM,CAAC;QACP,mCAAmC;IACrC,CAAC;IACD,KAAK,MAAM,IAAI,IAAI,UAAU,CAAC,SAAS,EAAE,SAAS,IAAI,EAAE,EAAE,CAAC;QACzD,MAAM,IAAI,GAAG,IAAI,CAAC,WAAW,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;QAC9C,IAAI,QAAQ,CAAC,IAAI,CAAC;YAAE,OAAO,IAAI,CAAC;IAClC,CAAC;IACD,OAAO,YAAY,CAAC;AACtB,CAAC;AAED,oFAAoF;AACpF,MAAM,CAAC,KAAK,UAAU,YAAY,CAAC,MAAc;IAC/C,IAAI,CAAC;QACH,UAAU,CAAC,YAAY,EAAE,OAAO,CAAC,SAAS,EAAE,MAAM,CAAC,CAAC;IACtD,CAAC;IAAC,MAAM,CAAC;QACP,qDAAqD;IACvD,CAAC;IACD,MAAM,SAAS,CAAC,MAAM,CAAC,CAAC;AAC1B,CAAC"}
@@ -0,0 +1,5 @@
1
+ export * from './events.js';
2
+ export * from './view-route.js';
3
+ export { ViewRouter, type ViewRouteCause, type ViewRouterMode } from './view-router.js';
4
+ export { LOCALE_NAMES, allLocales, chooseLocale, configureLocales, getLocale, preferredLocale, setLocale, type Locale } from './i18n.js';
5
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/core/index.ts"],"names":[],"mappings":"AAEA,cAAc,aAAa,CAAC;AAC5B,cAAc,iBAAiB,CAAC;AAChC,OAAO,EAAE,UAAU,EAAE,KAAK,cAAc,EAAE,KAAK,cAAc,EAAE,MAAM,kBAAkB,CAAC;AACxF,OAAO,EAAE,YAAY,EAAE,UAAU,EAAE,YAAY,EAAE,gBAAgB,EAAE,SAAS,EAAE,eAAe,EAAE,SAAS,EAAE,KAAK,MAAM,EAAE,MAAM,WAAW,CAAC"}
@@ -0,0 +1,7 @@
1
+ // `@contraagent/ui/core`: the events the elements send, the monitor's view route and
2
+ // view router, and the languages. No element; nothing happens at import.
3
+ export * from './events.js';
4
+ export * from './view-route.js';
5
+ export { ViewRouter } from './view-router.js';
6
+ export { LOCALE_NAMES, allLocales, chooseLocale, configureLocales, getLocale, preferredLocale, setLocale } from './i18n.js';
7
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/core/index.ts"],"names":[],"mappings":"AAAA,qFAAqF;AACrF,yEAAyE;AACzE,cAAc,aAAa,CAAC;AAC5B,cAAc,iBAAiB,CAAC;AAChC,OAAO,EAAE,UAAU,EAA4C,MAAM,kBAAkB,CAAC;AACxF,OAAO,EAAE,YAAY,EAAE,UAAU,EAAE,YAAY,EAAE,gBAAgB,EAAE,SAAS,EAAE,eAAe,EAAE,SAAS,EAAe,MAAM,WAAW,CAAC"}
@@ -0,0 +1,51 @@
1
+ /** The value remembered under `id` in the current history entry. */
2
+ export declare function recall<T>(id: string): T | undefined;
3
+ /** Remember `value` under `id` in the current history entry (written shortly after, batched). */
4
+ export declare function remember(id: string, value: unknown): void;
5
+ /** Write what is pending now: before the page pushes a new entry, so it lands on the old one. */
6
+ export declare function flushMemory(): void;
7
+ /** Where values are remembered: the page's history entry, or one embedded monitor's own. */
8
+ export interface Memory {
9
+ recall<T>(id: string): T | undefined;
10
+ remember(id: string, value: unknown): void;
11
+ }
12
+ /** The current history entry of the page (`recall`, `remember`). */
13
+ export declare const pageMemory: Memory;
14
+ /** Values kept by one element for as long as it lives: the memory of a monitor with `history="memory"`. */
15
+ export declare class LocalMemory implements Memory {
16
+ private readonly values;
17
+ recall<T>(id: string): T | undefined;
18
+ remember(id: string, value: unknown): void;
19
+ }
20
+ /** Make `memory` the memory of everything inside `root` (its light and shadow trees); null gives it back to the page. */
21
+ export declare function keepMemory(root: Node, memory: Memory | null): void;
22
+ /** The memory `node` remembers in: that of the nearest root around it (across shadow roots) given one, else the page's. */
23
+ export declare function memoryOf(node: Node | null | undefined): Memory;
24
+ /** A set of ids remembered under `id` (open cards, folds), in the memory of `from` (read on first use). */
25
+ export declare class RememberedSet {
26
+ private readonly id;
27
+ private readonly from?;
28
+ private items;
29
+ constructor(id: string, from?: Node | undefined);
30
+ private get memory();
31
+ private get loaded();
32
+ has(x: string): boolean;
33
+ set(x: string, on: boolean): void;
34
+ /** Every id in the set. */
35
+ values(): string[];
36
+ /** Empty the set. */
37
+ clear(): void;
38
+ }
39
+ /**
40
+ * A set of ids kept for this browser tab (sessionStorage) rather than one
41
+ * history entry: state that belongs to a thing shown on several entries, such
42
+ * as the tool cards open in a transcript. A reload keeps it.
43
+ */
44
+ export declare class SessionSet {
45
+ private readonly id;
46
+ private readonly items;
47
+ constructor(id: string);
48
+ has(x: string): boolean;
49
+ set(x: string, on: boolean): void;
50
+ }
51
+ //# sourceMappingURL=memory.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"memory.d.ts","sourceRoot":"","sources":["../../src/core/memory.ts"],"names":[],"mappings":"AAiDA,oEAAoE;AACpE,wBAAgB,MAAM,CAAC,CAAC,EAAE,EAAE,EAAE,MAAM,GAAG,CAAC,GAAG,SAAS,CAInD;AAED,iGAAiG;AACjG,wBAAgB,QAAQ,CAAC,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,GAAG,IAAI,CAWzD;AAED,iGAAiG;AACjG,wBAAgB,WAAW,IAAI,IAAI,CAElC;AAED,4FAA4F;AAC5F,MAAM,WAAW,MAAM;IACrB,MAAM,CAAC,CAAC,EAAE,EAAE,EAAE,MAAM,GAAG,CAAC,GAAG,SAAS,CAAC;IACrC,QAAQ,CAAC,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,GAAG,IAAI,CAAC;CAC5C;AAED,oEAAoE;AACpE,eAAO,MAAM,UAAU,EAAE,MAA6B,CAAC;AAEvD,2GAA2G;AAC3G,qBAAa,WAAY,YAAW,MAAM;IACxC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAA8B;IACrD,MAAM,CAAC,CAAC,EAAE,EAAE,EAAE,MAAM,GAAG,CAAC,GAAG,SAAS;IAGpC,QAAQ,CAAC,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,GAAG,IAAI;CAG3C;AAID,yHAAyH;AACzH,wBAAgB,UAAU,CAAC,IAAI,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,GAAG,IAAI,GAAG,IAAI,CAGlE;AAED,2HAA2H;AAC3H,wBAAgB,QAAQ,CAAC,IAAI,EAAE,IAAI,GAAG,IAAI,GAAG,SAAS,GAAG,MAAM,CAM9D;AAED,2GAA2G;AAC3G,qBAAa,aAAa;IAGtB,OAAO,CAAC,QAAQ,CAAC,EAAE;IACnB,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC;IAHxB,OAAO,CAAC,KAAK,CAA4B;gBAEtB,EAAE,EAAE,MAAM,EACV,IAAI,CAAC,EAAE,IAAI,YAAA;IAE9B,OAAO,KAAK,MAAM,GAEjB;IACD,OAAO,KAAK,MAAM,GAEjB;IACD,GAAG,CAAC,CAAC,EAAE,MAAM,GAAG,OAAO;IAGvB,GAAG,CAAC,CAAC,EAAE,MAAM,EAAE,EAAE,EAAE,OAAO,GAAG,IAAI;IAOjC,2BAA2B;IAC3B,MAAM,IAAI,MAAM,EAAE;IAGlB,qBAAqB;IACrB,KAAK,IAAI,IAAI;CAKd;AAED;;;;GAIG;AACH,qBAAa,UAAU;IAET,OAAO,CAAC,QAAQ,CAAC,EAAE;IAD/B,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAc;gBACP,EAAE,EAAE,MAAM;IASvC,GAAG,CAAC,CAAC,EAAE,MAAM,GAAG,OAAO;IAGvB,GAAG,CAAC,CAAC,EAAE,MAAM,EAAE,EAAE,EAAE,OAAO,GAAG,IAAI;CAUlC"}
@@ -0,0 +1,174 @@
1
+ // What the reader did on a page that the URL does not say: how far a list is
2
+ // scrolled, which cards are open. Kept in the current history entry, so Back,
3
+ // Forward and a reload return to it, and a new entry starts clean.
4
+ //
5
+ // Stored under one key of `history.state`, merged with whatever else a host
6
+ // page keeps there (the host's own state survives). A monitor embedded with
7
+ // `history="memory"` keeps its own instead (`LocalMemory`, `keepMemory`): it
8
+ // leaves the page's history alone, and two monitors on a page do not share it.
9
+ const NS = 'contraagent';
10
+ const WRITE_MS = 200;
11
+ let pending = null;
12
+ /** The entry `pending` belongs to: after Back/Forward it must not land on another one. */
13
+ let pendingEntry = '';
14
+ let timer = null;
15
+ /** Whether the page's `pagehide` writes what is pending: added on the first write, not on import. */
16
+ let flushOnHide = false;
17
+ function state() {
18
+ const s = globalThis.history?.state;
19
+ return s && typeof s === 'object' ? s : {};
20
+ }
21
+ function bag() {
22
+ const mine = state()[NS];
23
+ return mine && typeof mine === 'object' ? mine : {};
24
+ }
25
+ /** The current entry's id, given one on first use. */
26
+ function entry() {
27
+ const id = bag().entry;
28
+ if (id)
29
+ return id;
30
+ const fresh = Math.random().toString(36).slice(2);
31
+ history.replaceState({ ...state(), [NS]: { ...bag(), entry: fresh } }, '');
32
+ return fresh;
33
+ }
34
+ function write() {
35
+ if (timer)
36
+ clearTimeout(timer);
37
+ timer = null;
38
+ const p = pending;
39
+ pending = null;
40
+ if (!p || !globalThis.history || bag().entry !== pendingEntry)
41
+ return;
42
+ history.replaceState({ ...state(), [NS]: { ...bag(), ...p } }, '');
43
+ }
44
+ /** The value remembered under `id` in the current history entry. */
45
+ export function recall(id) {
46
+ if (!globalThis.history)
47
+ return undefined;
48
+ const fromPending = pending && pendingEntry === bag().entry && id in pending;
49
+ return (fromPending ? pending[id] : bag()[id]);
50
+ }
51
+ /** Remember `value` under `id` in the current history entry (written shortly after, batched). */
52
+ export function remember(id, value) {
53
+ if (!globalThis.history)
54
+ return;
55
+ const e = entry();
56
+ if (pending && pendingEntry !== e)
57
+ pending = null;
58
+ pendingEntry = e;
59
+ (pending ??= {})[id] = value;
60
+ timer ??= setTimeout(write, WRITE_MS);
61
+ if (!flushOnHide) {
62
+ flushOnHide = true;
63
+ globalThis.addEventListener?.('pagehide', flushMemory);
64
+ }
65
+ }
66
+ /** Write what is pending now: before the page pushes a new entry, so it lands on the old one. */
67
+ export function flushMemory() {
68
+ write();
69
+ }
70
+ /** The current history entry of the page (`recall`, `remember`). */
71
+ export const pageMemory = { recall, remember };
72
+ /** Values kept by one element for as long as it lives: the memory of a monitor with `history="memory"`. */
73
+ export class LocalMemory {
74
+ constructor() {
75
+ this.values = new Map();
76
+ }
77
+ recall(id) {
78
+ return this.values.get(id);
79
+ }
80
+ remember(id, value) {
81
+ this.values.set(id, value);
82
+ }
83
+ }
84
+ const kept = new WeakMap();
85
+ /** Make `memory` the memory of everything inside `root` (its light and shadow trees); null gives it back to the page. */
86
+ export function keepMemory(root, memory) {
87
+ if (memory)
88
+ kept.set(root, memory);
89
+ else
90
+ kept.delete(root);
91
+ }
92
+ /** The memory `node` remembers in: that of the nearest root around it (across shadow roots) given one, else the page's. */
93
+ export function memoryOf(node) {
94
+ for (let n = node; n; n = n.parentNode ?? n.host) {
95
+ const m = kept.get(n);
96
+ if (m)
97
+ return m;
98
+ }
99
+ return pageMemory;
100
+ }
101
+ /** A set of ids remembered under `id` (open cards, folds), in the memory of `from` (read on first use). */
102
+ export class RememberedSet {
103
+ constructor(id, from) {
104
+ this.id = id;
105
+ this.from = from;
106
+ this.items = null;
107
+ }
108
+ get memory() {
109
+ return memoryOf(this.from);
110
+ }
111
+ get loaded() {
112
+ return (this.items ??= new Set(this.memory.recall(this.id) ?? []));
113
+ }
114
+ has(x) {
115
+ return this.loaded.has(x);
116
+ }
117
+ set(x, on) {
118
+ const items = this.loaded;
119
+ if (on === items.has(x))
120
+ return;
121
+ if (on)
122
+ items.add(x);
123
+ else
124
+ items.delete(x);
125
+ this.memory.remember(this.id, [...items]);
126
+ }
127
+ /** Every id in the set. */
128
+ values() {
129
+ return [...this.loaded];
130
+ }
131
+ /** Empty the set. */
132
+ clear() {
133
+ if (!this.loaded.size)
134
+ return;
135
+ this.loaded.clear();
136
+ this.memory.remember(this.id, []);
137
+ }
138
+ }
139
+ /**
140
+ * A set of ids kept for this browser tab (sessionStorage) rather than one
141
+ * history entry: state that belongs to a thing shown on several entries, such
142
+ * as the tool cards open in a transcript. A reload keeps it.
143
+ */
144
+ export class SessionSet {
145
+ constructor(id) {
146
+ this.id = id;
147
+ let saved = null;
148
+ try {
149
+ saved = JSON.parse(globalThis.sessionStorage?.getItem(`${NS}:${id}`) ?? 'null');
150
+ }
151
+ catch {
152
+ /* storage blocked or corrupt: start empty */
153
+ }
154
+ this.items = new Set(Array.isArray(saved) ? saved.filter((x) => typeof x === 'string') : []);
155
+ }
156
+ has(x) {
157
+ return this.items.has(x);
158
+ }
159
+ set(x, on) {
160
+ if (on === this.items.has(x))
161
+ return;
162
+ if (on)
163
+ this.items.add(x);
164
+ else
165
+ this.items.delete(x);
166
+ try {
167
+ globalThis.sessionStorage?.setItem(`${NS}:${this.id}`, JSON.stringify([...this.items]));
168
+ }
169
+ catch {
170
+ /* storage blocked or full: the state lives until the page goes */
171
+ }
172
+ }
173
+ }
174
+ //# sourceMappingURL=memory.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"memory.js","sourceRoot":"","sources":["../../src/core/memory.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,21 @@
1
+ import { type Memory } from './memory.js';
2
+ export declare class ScrollMemory {
3
+ private readonly id;
4
+ /** Where the position is remembered: read at each use. */
5
+ private readonly memory;
6
+ private el;
7
+ private frame;
8
+ private restoring;
9
+ constructor(id: string,
10
+ /** Where the position is remembered: read at each use. */
11
+ memory?: () => Memory);
12
+ attach(el: HTMLElement): void;
13
+ detach(): void;
14
+ /** Go back to the remembered position, as soon as the content allows; to the top when none is remembered. */
15
+ restore(): void;
16
+ /** Start at the top (a new place). */
17
+ reset(): void;
18
+ private readonly cancel;
19
+ private readonly onScroll;
20
+ }
21
+ //# sourceMappingURL=scroll.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"scroll.d.ts","sourceRoot":"","sources":["../../src/core/scroll.ts"],"names":[],"mappings":"AAIA,OAAO,EAAc,KAAK,MAAM,EAAE,MAAM,aAAa,CAAC;AAKtD,qBAAa,YAAY;IAMrB,OAAO,CAAC,QAAQ,CAAC,EAAE;IACnB,0DAA0D;IAC1D,OAAO,CAAC,QAAQ,CAAC,MAAM;IAPzB,OAAO,CAAC,EAAE,CAA4B;IACtC,OAAO,CAAC,KAAK,CAAK;IAClB,OAAO,CAAC,SAAS,CAAS;gBAGP,EAAE,EAAE,MAAM;IAC3B,0DAA0D;IACzC,MAAM,GAAE,MAAM,MAAyB;IAG1D,MAAM,CAAC,EAAE,EAAE,WAAW,GAAG,IAAI;IAO7B,MAAM,IAAI,IAAI;IAMd,6GAA6G;IAC7G,OAAO,IAAI,IAAI;IAqBf,sCAAsC;IACtC,KAAK,IAAI,IAAI;IAKb,OAAO,CAAC,QAAQ,CAAC,MAAM,CAMrB;IAEF,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAEvB;CACH"}
@@ -0,0 +1,74 @@
1
+ // A scroller that comes back where the reader left it. The position is
2
+ // remembered in a memory (`memory.ts`: the history entry, or an embedded
3
+ // monitor's own); restoring waits until the content, which arrives over the
4
+ // network, is tall enough to scroll there.
5
+ import { pageMemory } from './memory.js';
6
+ const GIVE_UP_MS = 6000;
7
+ const INPUT_EVENTS = ['wheel', 'touchstart', 'pointerdown', 'keydown'];
8
+ export class ScrollMemory {
9
+ constructor(id,
10
+ /** Where the position is remembered: read at each use. */
11
+ memory = () => pageMemory) {
12
+ this.id = id;
13
+ this.memory = memory;
14
+ this.el = null;
15
+ this.frame = 0;
16
+ this.restoring = false;
17
+ this.cancel = () => {
18
+ cancelAnimationFrame(this.frame);
19
+ this.frame = 0;
20
+ if (!this.restoring)
21
+ return;
22
+ this.restoring = false;
23
+ for (const t of INPUT_EVENTS)
24
+ this.el?.removeEventListener(t, this.cancel);
25
+ };
26
+ this.onScroll = () => {
27
+ if (!this.restoring && this.el)
28
+ this.memory().remember(this.id, Math.round(this.el.scrollTop));
29
+ };
30
+ }
31
+ attach(el) {
32
+ if (this.el === el)
33
+ return;
34
+ this.detach();
35
+ this.el = el;
36
+ el.addEventListener('scroll', this.onScroll, { passive: true });
37
+ }
38
+ detach() {
39
+ this.cancel();
40
+ this.el?.removeEventListener('scroll', this.onScroll);
41
+ this.el = null;
42
+ }
43
+ /** Go back to the remembered position, as soon as the content allows; to the top when none is remembered. */
44
+ restore() {
45
+ const el = this.el;
46
+ if (!el)
47
+ return;
48
+ this.cancel();
49
+ const target = this.memory().recall(this.id) ?? 0;
50
+ if (target <= 0) {
51
+ el.scrollTop = 0;
52
+ return;
53
+ }
54
+ const until = performance.now() + GIVE_UP_MS;
55
+ this.restoring = true;
56
+ for (const t of INPUT_EVENTS)
57
+ el.addEventListener(t, this.cancel, { passive: true, once: true });
58
+ const step = () => {
59
+ const max = el.scrollHeight - el.clientHeight;
60
+ el.scrollTop = Math.min(target, max);
61
+ if (max >= target || performance.now() > until)
62
+ return this.cancel();
63
+ this.frame = requestAnimationFrame(step);
64
+ };
65
+ step();
66
+ }
67
+ /** Start at the top (a new place). */
68
+ reset() {
69
+ this.cancel();
70
+ if (this.el)
71
+ this.el.scrollTop = 0;
72
+ }
73
+ }
74
+ //# sourceMappingURL=scroll.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"scroll.js","sourceRoot":"","sources":["../../src/core/scroll.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,62 @@
1
+ export declare const BUILTIN_TABS: readonly ["overview", "tasks", "journal", "outputs", "definitions", "procs", "stream"];
2
+ export type BuiltinTab = (typeof BUILTIN_TABS)[number];
3
+ /** A built-in view, or a panel the pipeline registered (`panel:<name>`). */
4
+ export type Tab = BuiltinTab | `panel:${string}`;
5
+ /** What the task view shows next to (or instead of) the transcript. */
6
+ export declare const TASK_VIEWS: readonly ["transcript", "input", "output", "definition"];
7
+ export type TaskView = (typeof TASK_VIEWS)[number];
8
+ /** A page that is not one run's: `hosts`, the hosts behind a hub's runs; `trends`, the runs of a period. */
9
+ export type Page = '' | 'hosts' | 'trends';
10
+ /** The lengths of a period the trends page offers, in days, ending today. */
11
+ export declare const TREND_DAYS: readonly [7, 14, 30];
12
+ export interface ViewRoute {
13
+ /** '' for a run's views; `hosts` for the hosts (on a hub), with no run. */
14
+ page: Page;
15
+ /** The run; '' until one is picked. */
16
+ run: string;
17
+ tab: Tab;
18
+ /** stream tab: the task key whose transcript is open (null: the latest, `latestTask`). */
19
+ key: string | null;
20
+ /** stream tab: what the task view shows. */
21
+ view: TaskView;
22
+ /** stream tab: the round shown, 1-based (null: follow the latest). */
23
+ round: number | null;
24
+ /** definitions tab: the selected kind (null: the default one). */
25
+ def: string | null;
26
+ /** tasks and journal tabs: only this kind (kept, and out of the URL, while another tab is shown). */
27
+ kind: string;
28
+ /** journal tab: only this stop ('bad': every attempt that did not complete). */
29
+ stop: string;
30
+ /** tasks and journal tabs: a text filter. */
31
+ q: string;
32
+ /** overview tab: the pipeline graph's layer, its segments joined by `/` ('': the layer the graph opens on). */
33
+ layer: string;
34
+ /** overview tab: the unit highlighted in the pipeline graph. */
35
+ unit: string;
36
+ /** overview tab: what is selected in the pipeline graph's layer (a node, a loop box or a mark; '' for nothing). */
37
+ sel: string;
38
+ /** trends page: the period, the last `days` days (0: the days `from` to `to`, YYYY-MM-DD). */
39
+ days: number;
40
+ from: string;
41
+ to: string;
42
+ /** trends page: the time zone its days are counted in ('': the browser's). */
43
+ tz: string;
44
+ /** trends page: only the runs of this run group. */
45
+ group: string;
46
+ /** trends page: the open tab, a trends panel's `tab` ('': the first, the trends). */
47
+ trendsTab: string;
48
+ }
49
+ export type ViewRoutePatch = Partial<ViewRoute>;
50
+ export declare const DEFAULT_VIEW_ROUTE: ViewRoute;
51
+ export declare function parseViewRoute(search: string): ViewRoute;
52
+ /** The query string for a view route: only what differs from the defaults, and only what its tab uses. */
53
+ export declare function formatViewRoute(r: ViewRoute): string;
54
+ /** Apply a patch. Leaving a task (another key, run) forgets its view and round; another run forgets every selection. */
55
+ export declare function applyPatch(r: ViewRoute, patch: ViewRoutePatch): ViewRoute;
56
+ /**
57
+ * Whether going from `a` to `b` is a move to another place (a new history entry,
58
+ * so Back returns) or only a refinement of this one (the entry is replaced, so
59
+ * typing in a filter, highlighting a unit or selecting in the graph does not fill the history).
60
+ */
61
+ export declare function isNewPlace(a: ViewRoute, b: ViewRoute): boolean;
62
+ //# sourceMappingURL=view-route.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"view-route.d.ts","sourceRoot":"","sources":["../../src/core/view-route.ts"],"names":[],"mappings":"AAGA,eAAO,MAAM,YAAY,wFAAyF,CAAC;AACnH,MAAM,MAAM,UAAU,GAAG,CAAC,OAAO,YAAY,CAAC,CAAC,MAAM,CAAC,CAAC;AACvD,4EAA4E;AAC5E,MAAM,MAAM,GAAG,GAAG,UAAU,GAAG,SAAS,MAAM,EAAE,CAAC;AAEjD,uEAAuE;AACvE,eAAO,MAAM,UAAU,0DAA2D,CAAC;AACnF,MAAM,MAAM,QAAQ,GAAG,CAAC,OAAO,UAAU,CAAC,CAAC,MAAM,CAAC,CAAC;AAEnD,4GAA4G;AAC5G,MAAM,MAAM,IAAI,GAAG,EAAE,GAAG,OAAO,GAAG,QAAQ,CAAC;AAE3C,6EAA6E;AAC7E,eAAO,MAAM,UAAU,sBAAuB,CAAC;AAE/C,MAAM,WAAW,SAAS;IACxB,2EAA2E;IAC3E,IAAI,EAAE,IAAI,CAAC;IACX,uCAAuC;IACvC,GAAG,EAAE,MAAM,CAAC;IACZ,GAAG,EAAE,GAAG,CAAC;IACT,0FAA0F;IAC1F,GAAG,EAAE,MAAM,GAAG,IAAI,CAAC;IACnB,4CAA4C;IAC5C,IAAI,EAAE,QAAQ,CAAC;IACf,sEAAsE;IACtE,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IACrB,kEAAkE;IAClE,GAAG,EAAE,MAAM,GAAG,IAAI,CAAC;IACnB,qGAAqG;IACrG,IAAI,EAAE,MAAM,CAAC;IACb,gFAAgF;IAChF,IAAI,EAAE,MAAM,CAAC;IACb,6CAA6C;IAC7C,CAAC,EAAE,MAAM,CAAC;IACV,+GAA+G;IAC/G,KAAK,EAAE,MAAM,CAAC;IACd,gEAAgE;IAChE,IAAI,EAAE,MAAM,CAAC;IACb,mHAAmH;IACnH,GAAG,EAAE,MAAM,CAAC;IACZ,8FAA8F;IAC9F,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,EAAE,EAAE,MAAM,CAAC;IACX,8EAA8E;IAC9E,EAAE,EAAE,MAAM,CAAC;IACX,oDAAoD;IACpD,KAAK,EAAE,MAAM,CAAC;IACd,qFAAqF;IACrF,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,MAAM,cAAc,GAAG,OAAO,CAAC,SAAS,CAAC,CAAC;AAEhD,eAAO,MAAM,kBAAkB,EAAE,SAoBhC,CAAC;AAKF,wBAAgB,cAAc,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,CAiCxD;AAED,0GAA0G;AAC1G,wBAAgB,eAAe,CAAC,CAAC,EAAE,SAAS,GAAG,MAAM,CAgCpD;AAED,wHAAwH;AACxH,wBAAgB,UAAU,CAAC,CAAC,EAAE,SAAS,EAAE,KAAK,EAAE,cAAc,GAAG,SAAS,CAYzE;AAED;;;;GAIG;AACH,wBAAgB,UAAU,CAAC,CAAC,EAAE,SAAS,EAAE,CAAC,EAAE,SAAS,GAAG,OAAO,CAG9D"}