@cyberismo/backend 1.1.1 → 1.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 (305) hide show
  1. package/README.md +21 -0
  2. package/dist/app.js +22 -11
  3. package/dist/app.js.map +1 -1
  4. package/dist/auth/index.d.ts +1 -1
  5. package/dist/auth/index.js +1 -1
  6. package/dist/auth/index.js.map +1 -1
  7. package/dist/auth/keycloak.d.ts +2 -3
  8. package/dist/auth/keycloak.js +6 -0
  9. package/dist/auth/keycloak.js.map +1 -1
  10. package/dist/auth/mock.d.ts +12 -8
  11. package/dist/auth/mock.js +119 -31
  12. package/dist/auth/mock.js.map +1 -1
  13. package/dist/auth/types.d.ts +7 -1
  14. package/dist/domain/cards/index.js +11 -84
  15. package/dist/domain/cards/index.js.map +1 -1
  16. package/dist/domain/cards/lib.js +2 -11
  17. package/dist/domain/cards/lib.js.map +1 -1
  18. package/dist/domain/cards/schema.js +9 -3
  19. package/dist/domain/cards/schema.js.map +1 -1
  20. package/dist/domain/cards/service.d.ts +2 -5
  21. package/dist/domain/cards/service.js +8 -15
  22. package/dist/domain/cards/service.js.map +1 -1
  23. package/dist/domain/events/index.d.ts +15 -0
  24. package/dist/domain/events/index.js +94 -0
  25. package/dist/domain/events/index.js.map +1 -0
  26. package/dist/domain/events/lifetime.d.ts +14 -0
  27. package/dist/domain/events/lifetime.js +25 -0
  28. package/dist/domain/events/lifetime.js.map +1 -0
  29. package/dist/domain/events/project-events.d.ts +67 -0
  30. package/dist/domain/events/project-events.js +200 -0
  31. package/dist/domain/events/project-events.js.map +1 -0
  32. package/dist/domain/events/schema.d.ts +22 -0
  33. package/dist/domain/events/schema.js +20 -0
  34. package/dist/domain/events/schema.js.map +1 -0
  35. package/dist/domain/project/index.js +17 -5
  36. package/dist/domain/project/index.js.map +1 -1
  37. package/dist/domain/project/schema.d.ts +8 -0
  38. package/dist/domain/project/schema.js +34 -6
  39. package/dist/domain/project/schema.js.map +1 -1
  40. package/dist/domain/project/service.d.ts +9 -5
  41. package/dist/domain/project/service.js +22 -16
  42. package/dist/domain/project/service.js.map +1 -1
  43. package/dist/domain/projects/index.js +5 -1
  44. package/dist/domain/projects/index.js.map +1 -1
  45. package/dist/domain/resources/index.js +74 -2
  46. package/dist/domain/resources/index.js.map +1 -1
  47. package/dist/domain/resources/schema.d.ts +8 -2
  48. package/dist/domain/resources/schema.js +6 -1
  49. package/dist/domain/resources/schema.js.map +1 -1
  50. package/dist/domain/resources/service.d.ts +13 -1
  51. package/dist/domain/resources/service.js +45 -2
  52. package/dist/domain/resources/service.js.map +1 -1
  53. package/dist/domain/skills/index.d.ts +15 -0
  54. package/dist/domain/skills/index.js +52 -0
  55. package/dist/domain/skills/index.js.map +1 -0
  56. package/dist/domain/skills/schema.d.ts +16 -0
  57. package/dist/domain/skills/schema.js +18 -0
  58. package/dist/domain/skills/schema.js.map +1 -0
  59. package/dist/domain/skills/service.d.ts +14 -0
  60. package/dist/domain/skills/service.js +16 -0
  61. package/dist/domain/skills/service.js.map +1 -0
  62. package/dist/export.d.ts +3 -2
  63. package/dist/export.js +53 -38
  64. package/dist/export.js.map +1 -1
  65. package/dist/index.d.ts +1 -0
  66. package/dist/index.js +3 -0
  67. package/dist/index.js.map +1 -1
  68. package/dist/main.js +23 -10
  69. package/dist/main.js.map +1 -1
  70. package/dist/middleware/auth.d.ts +5 -0
  71. package/dist/middleware/auth.js +20 -4
  72. package/dist/middleware/auth.js.map +1 -1
  73. package/dist/middleware/commandManager.d.ts +2 -0
  74. package/dist/middleware/commandManager.js +1 -0
  75. package/dist/middleware/commandManager.js.map +1 -1
  76. package/dist/overlay.d.ts +45 -0
  77. package/dist/overlay.js +157 -0
  78. package/dist/overlay.js.map +1 -0
  79. package/dist/project-errors.d.ts +18 -0
  80. package/dist/project-errors.js +25 -0
  81. package/dist/project-errors.js.map +1 -0
  82. package/dist/project-registry.d.ts +9 -1
  83. package/dist/project-registry.js +37 -9
  84. package/dist/project-registry.js.map +1 -1
  85. package/dist/public/THIRD-PARTY.txt +528 -435
  86. package/dist/public/assets/__vite-browser-external-PaJ7c2l8.js +1 -0
  87. package/dist/public/assets/abnfDiagram-VCTEODGH-DB2dfOGe.js +1 -0
  88. package/dist/public/assets/architecture-7GRP2DOG-2V0X8hxt.js +1 -0
  89. package/dist/public/assets/architectureDiagram-5GKGNRK7-CRhUR2Ul.js +36 -0
  90. package/dist/public/assets/blockDiagram-I7D4REHJ-DJKsYF1v.js +129 -0
  91. package/dist/public/assets/c4Diagram-7LVT6UL2-BTwMzoAF.js +38 -0
  92. package/dist/public/assets/channel-C0JtPpMA.js +1 -0
  93. package/dist/public/assets/chunk-4HAMMTFA-DjjgrBsB.js +62 -0
  94. package/dist/public/assets/chunk-75Z2AOVW-CKqXRGJV.js +2 -0
  95. package/dist/public/assets/chunk-DU6HZSFF-iJGdiRt7.js +127 -0
  96. package/dist/public/assets/chunk-F27PBJKO-tDfs6zeO.js +1 -0
  97. package/dist/public/assets/chunk-FOHPRMQF-DzxwRta7.js +161 -0
  98. package/dist/public/assets/chunk-GMAD6QVW-DxHVEaGj.js +72 -0
  99. package/dist/public/assets/chunk-GVQU2GXP-AMxD4_Ta.js +1 -0
  100. package/dist/public/assets/{chunk-EX3LRPZG-Db0XYyxy.js → chunk-IMKFNOWR-0rz8QrYC.js} +2 -2
  101. package/dist/public/assets/chunk-L3NEJ4N5-BK3KAKMe.js +1 -0
  102. package/dist/public/assets/chunk-OSK3NFVY-B8MdrI_M.js +10 -0
  103. package/dist/public/assets/chunk-P2QGCYS3-D3J5AcHg.js +1 -0
  104. package/dist/public/assets/{chunk-VR4S4FIN-tUhbELKr.js → chunk-POPQ4Y6H-CsYg_XkK.js} +1 -1
  105. package/dist/public/assets/{chunk-HOUHSVGY-L35GPy9G.js → chunk-PWAF6VOD-D9cdEIZp.js} +1 -1
  106. package/dist/public/assets/chunk-SHT3W25Y-1jjokCf3.js +168 -0
  107. package/dist/public/assets/{chunk-MOJQB5TN-D1shKbMs.js → chunk-SVP7TREG-CIQMl7hl.js} +1 -1
  108. package/dist/public/assets/{chunk-V7JOEXUC-71b0ABpv.js → chunk-TICWLB2K-Ccsy2PYz.js} +3 -3
  109. package/dist/public/assets/chunk-XXDRQBXY-B7bWyHjt.js +1 -0
  110. package/dist/public/assets/classDiagram-ZZMXUADV-mWyXNAXi.js +1 -0
  111. package/dist/public/assets/classDiagram-v2-VYDZK3BY-mWyXNAXi.js +1 -0
  112. package/dist/public/assets/cose-bilkent-JH36ORCC-DPzc3Pv4.js +1 -0
  113. package/dist/public/assets/cynefin-OW5HDTMX-BIVDCYOU.js +1 -0
  114. package/dist/public/assets/cynefinDiagram-5FMLGOSQ-_V_nrIhD.js +62 -0
  115. package/dist/public/assets/cytoscape.esm-NgwPT4ez.js +321 -0
  116. package/dist/public/assets/dagre-C-rnJpZF.js +1 -0
  117. package/dist/public/assets/dagre-GXQ25YYZ-CJc0wc6f.js +4 -0
  118. package/dist/public/assets/diagram-S7CK7UJ4-25IjIKyo.js +30 -0
  119. package/dist/public/assets/diagram-UQ7AKVKN-C5VvsV7x.js +41 -0
  120. package/dist/public/assets/{diagram-FQU43EPY-DS-ryuRg.js → diagram-VSXAHHWV-Dw3rKVL_.js} +3 -3
  121. package/dist/public/assets/diagram-VX7I27RA-De_UQv8C.js +24 -0
  122. package/dist/public/assets/diagram-Z3DM3KII-Bd-65QQW.js +24 -0
  123. package/dist/public/assets/dist-BDCdLWk4.js +1 -0
  124. package/dist/public/assets/ebnfDiagram-PWID7BFC-CrxdET5U.js +1 -0
  125. package/dist/public/assets/erDiagram-RLTQ6QDP-BKo0Uyna.js +99 -0
  126. package/dist/public/assets/eventmodeling-NTZA5JFV-DKkAdJZd.js +1 -0
  127. package/dist/public/assets/flowDiagram-HODETNUW-CEE2wjdt.js +1 -0
  128. package/dist/public/assets/ganttDiagram-EL5Y4UJY-BHFn8vk0.js +292 -0
  129. package/dist/public/assets/gitGraph-4MIJSDKK-Bpvnb45u.js +1 -0
  130. package/dist/public/assets/{gitGraphDiagram-IHSO6WYX-CksvJvsQ.js → gitGraphDiagram-WWUBYQGX-Bw0EoxBY.js} +9 -9
  131. package/dist/public/assets/index-D3HS7YxF.js +2228 -0
  132. package/dist/public/assets/index-D6WqGtsG.js +27876 -0
  133. package/dist/public/assets/{index-COSSLZqt.css → index-Sv3WxZ_8.css} +1 -1
  134. package/dist/public/assets/info-A6RAGUB7-BvvG_zrk.js +1 -0
  135. package/dist/public/assets/infoDiagram-27XIBGKW-CtpdJmtL.js +2 -0
  136. package/dist/public/assets/{ishikawaDiagram-FXEZZL3T-CiLpASIW.js → ishikawaDiagram-5VMMS53U-KvT4DU1u.js} +2 -2
  137. package/dist/public/assets/journeyDiagram-3NMN7TZE-PhGRkXkq.js +139 -0
  138. package/dist/public/assets/{kanban-definition-HUTT4EX6-DYP_x6zD.js → kanban-definition-UXKFOSKX-Oyx5QgRq.js} +4 -4
  139. package/dist/public/assets/{katex-DolUETbr.js → katex-ZlcWpGUi.js} +3 -3
  140. package/dist/public/assets/{line-C8Sfsgt8.js → line-Dr41HTk1.js} +1 -1
  141. package/dist/public/assets/linear-DDBi9FwZ.js +1 -0
  142. package/dist/public/assets/mermaid-parser.core-DsIAxDBa.js +7 -0
  143. package/dist/public/assets/{mindmap-definition-LN4V7U3C-3IAd4gp3.js → mindmap-definition-YA3MSWOX-r8hvd6gP.js} +1 -1
  144. package/dist/public/assets/packet-AYTQ26CC-B0EpJ2Sc.js +1 -0
  145. package/dist/public/assets/path-B_0haWDX.js +1 -0
  146. package/dist/public/assets/pegDiagram-XKGWAZYB-DaNkQTQF.js +1 -0
  147. package/dist/public/assets/pie-WAS4IAKB-Dt2zttL9.js +1 -0
  148. package/dist/public/assets/pieDiagram-E7YTZNPT-x0XWEGbd.js +39 -0
  149. package/dist/public/assets/{quadrantDiagram-ABIIQ3AL-B3czMbdS.js → quadrantDiagram-AXDQQJYC-B9dlNtZl.js} +3 -3
  150. package/dist/public/assets/radar-RG4KPBEZ-DjbR4-5l.js +1 -0
  151. package/dist/public/assets/railroad-74A4TZTK-Bk3B5r_R.js +1 -0
  152. package/dist/public/assets/railroad-abnf-HS5TGJTU-DxaWfACD.js +1 -0
  153. package/dist/public/assets/railroad-ebnf-LZEXJU2U-DscxXZO0.js +1 -0
  154. package/dist/public/assets/railroad-peg-WCYAUIDC-BCWzRFzw.js +1 -0
  155. package/dist/public/assets/railroadDiagram-O6MQD6OU-DhwsoX6A.js +1 -0
  156. package/dist/public/assets/{requirementDiagram-TGXJPOKE-CmvJWy_S.js → requirementDiagram-BXWQKSXE-BiqZ6axf.js} +2 -2
  157. package/dist/public/assets/rolldown-runtime-B0Z9INg1.js +1 -0
  158. package/dist/public/assets/{rough.esm-By172zw-.js → rough.esm-Dy-Kn_BL.js} +1 -1
  159. package/dist/public/assets/{sankeyDiagram-HTMAVEWB-tAeOzMTn.js → sankeyDiagram-P5KCCOFB-C4rb2pZ9.js} +1 -1
  160. package/dist/public/assets/{sequenceDiagram-DBY2YBRQ-r0pwijM4.js → sequenceDiagram-WJ2MYXX4-DRKTnGD7.js} +9 -9
  161. package/dist/public/assets/sizeCapture-INFHLROL-3uHXrFqA.js +1 -0
  162. package/dist/public/assets/src-an_qrnIj.js +1 -0
  163. package/dist/public/assets/stateDiagram-D77RDMKH-xxdybg5Z.js +1 -0
  164. package/dist/public/assets/stateDiagram-v2-MP3YSRHH-CXzmJy_a.js +1 -0
  165. package/dist/public/assets/swimlanes-42K2YHIH-DyGI1gI6.js +1 -0
  166. package/dist/public/assets/swimlanesDiagram-VR7AAH4N-7hqb6VoW.js +8 -0
  167. package/dist/public/assets/timeline-definition-24CTP7MA-C2pIp77Q.js +120 -0
  168. package/dist/public/assets/treeView-Q6P3EWNA-CxRtaaB8.js +1 -0
  169. package/dist/public/assets/treemap-WGGIJYW6-G1IHiwTa.js +1 -0
  170. package/dist/public/assets/{vennDiagram-L72KCM5P-ti2qNcvo.js → vennDiagram-4TSXK5OY-CwimQRR9.js} +2 -2
  171. package/dist/public/assets/wardley-WFR3VGLG-DkQ3TjZX.js +1 -0
  172. package/dist/public/assets/{wardleyDiagram-EHGQE667-C8lblm8x.js → wardleyDiagram-VM6X3IG4-BOXpwLCv.js} +15 -15
  173. package/dist/public/assets/{xychartDiagram-FW5EYKEG-US-_k5eu.js → xychartDiagram-S5SC5T6Z-ChOPYsHc.js} +3 -3
  174. package/dist/public/index.html +19 -26
  175. package/dist/public/sbom.cdx.json +1 -0
  176. package/dist/utils.d.ts +4 -0
  177. package/dist/utils.js +6 -0
  178. package/dist/utils.js.map +1 -1
  179. package/package.json +12 -13
  180. package/src/app.ts +22 -11
  181. package/src/auth/index.ts +1 -1
  182. package/src/auth/keycloak.ts +8 -3
  183. package/src/auth/mock.ts +141 -35
  184. package/src/auth/types.ts +8 -1
  185. package/src/domain/cards/index.ts +12 -102
  186. package/src/domain/cards/lib.ts +2 -14
  187. package/src/domain/cards/schema.ts +11 -3
  188. package/src/domain/cards/service.ts +9 -24
  189. package/src/domain/events/index.ts +112 -0
  190. package/src/domain/events/lifetime.ts +27 -0
  191. package/src/domain/events/project-events.ts +254 -0
  192. package/src/domain/events/schema.ts +21 -0
  193. package/src/domain/project/index.ts +31 -3
  194. package/src/domain/project/schema.ts +39 -6
  195. package/src/domain/project/service.ts +42 -17
  196. package/src/domain/projects/index.ts +5 -1
  197. package/src/domain/resources/index.ts +85 -2
  198. package/src/domain/resources/schema.ts +12 -2
  199. package/src/domain/resources/service.ts +55 -3
  200. package/src/domain/skills/index.ts +61 -0
  201. package/src/domain/skills/schema.ts +19 -0
  202. package/src/domain/skills/service.ts +18 -0
  203. package/src/export.ts +60 -42
  204. package/src/index.ts +3 -0
  205. package/src/main.ts +30 -11
  206. package/src/middleware/auth.ts +23 -4
  207. package/src/middleware/commandManager.ts +3 -0
  208. package/src/overlay.ts +175 -0
  209. package/src/project-errors.ts +33 -0
  210. package/src/project-registry.ts +41 -10
  211. package/src/utils.ts +10 -0
  212. package/dist/domain/cards/presence.d.ts +0 -50
  213. package/dist/domain/cards/presence.js +0 -93
  214. package/dist/domain/cards/presence.js.map +0 -1
  215. package/dist/public/assets/abnfDiagram-VRR7QNED-Djr4KJ5E.js +0 -1
  216. package/dist/public/assets/arc-DrR4k_H-.js +0 -1
  217. package/dist/public/assets/architecture-TIHT7OUA-XL6N-4o9.js +0 -1
  218. package/dist/public/assets/architectureDiagram-ZJ3FMSHR-DsMU2Uwa.js +0 -36
  219. package/dist/public/assets/blockDiagram-677ZJIJ3-DRBmQUQJ.js +0 -132
  220. package/dist/public/assets/c4Diagram-LMCZKHZV-E0rM02LD.js +0 -10
  221. package/dist/public/assets/channel-D5fnImJy.js +0 -1
  222. package/dist/public/assets/chunk-32BRIVSS-BnDY0aSV.js +0 -1
  223. package/dist/public/assets/chunk-52WLFC77-N5YugKaZ.js +0 -10
  224. package/dist/public/assets/chunk-5FCAYU7R-I3_t_Ic_.js +0 -1
  225. package/dist/public/assets/chunk-5HE753X5-Dxz40rzH.js +0 -1
  226. package/dist/public/assets/chunk-5JV3BV7I-CNwCKRLH.js +0 -1
  227. package/dist/public/assets/chunk-5TONJI2A-ezWQ_Z2j.js +0 -2
  228. package/dist/public/assets/chunk-7BUUIJ7U-Bb538aSH.js +0 -1
  229. package/dist/public/assets/chunk-BIQX33UG-DS132-R_.js +0 -1
  230. package/dist/public/assets/chunk-C7G6YPKG-BN-cNjoj.js +0 -1
  231. package/dist/public/assets/chunk-CQNSW5MT-D8Mn1I73.js +0 -1
  232. package/dist/public/assets/chunk-CYSBUYHQ-Dc64Dwdo.js +0 -1
  233. package/dist/public/assets/chunk-EMLP6XTP-aIK0V8GX.js +0 -1
  234. package/dist/public/assets/chunk-FWX5IMBZ-BF_P2-Do.js +0 -2
  235. package/dist/public/assets/chunk-ICXQ74PX-Bb8zaHde.js +0 -2
  236. package/dist/public/assets/chunk-JG7HCLWE-BtAXK3iQ.js +0 -2
  237. package/dist/public/assets/chunk-KEIR6QF5-DEvma7oi.js +0 -161
  238. package/dist/public/assets/chunk-MOZMSUNE-5FIqIBsY.js +0 -1
  239. package/dist/public/assets/chunk-OGEWGWER-BVIFy9xz.js +0 -1
  240. package/dist/public/assets/chunk-OSBZ3O6U-Cfd7kf1R.js +0 -1
  241. package/dist/public/assets/chunk-PUDLZKDR-Db3FSNR9.js +0 -156
  242. package/dist/public/assets/chunk-Q4XR5HBZ-BuKFRUzR.js +0 -70
  243. package/dist/public/assets/chunk-QBLGF6JB-DUGZXFh-.js +0 -1
  244. package/dist/public/assets/chunk-R7FJI6CG-D7mUd-qN.js +0 -1
  245. package/dist/public/assets/chunk-RYQCIY6F-C_3rESBd.js +0 -1
  246. package/dist/public/assets/chunk-U6XO7XAA-C3UhlwA1.js +0 -2
  247. package/dist/public/assets/chunk-VAUOI2AC-C-GBw18h.js +0 -1
  248. package/dist/public/assets/chunk-WYO6CB5R-BQoO62-B.js +0 -127
  249. package/dist/public/assets/chunk-XXDRQBXY-Co8n4ZHT.js +0 -1
  250. package/dist/public/assets/chunk-YOTPTUD7-DhCRKU1A.js +0 -1
  251. package/dist/public/assets/chunk-ZGVPDNZ5-hpz2Ryq5.js +0 -62
  252. package/dist/public/assets/chunk-ZIRB5QZD-BpeS1aZ7.js +0 -32
  253. package/dist/public/assets/classDiagram-OUVF2IWQ-CXdVorPK.js +0 -1
  254. package/dist/public/assets/classDiagram-v2-EOCWNBFH-CXdVorPK.js +0 -1
  255. package/dist/public/assets/colors-Cg5Vh3br.js +0 -1
  256. package/dist/public/assets/cose-bilkent-JH36ORCC-4GoRbloS.js +0 -1
  257. package/dist/public/assets/cynefin-VYW2F7L2-BPH-25fI.js +0 -1
  258. package/dist/public/assets/cynefinDiagram-TSTJHNR4-PEf16euv.js +0 -62
  259. package/dist/public/assets/cytoscape.esm-C3UvhD5t.js +0 -321
  260. package/dist/public/assets/dagre-Buvkdvvj.js +0 -1
  261. package/dist/public/assets/dagre-VKFMJZFB-DPsCMBF1.js +0 -4
  262. package/dist/public/assets/diagram-G47NLZAW-CzUoYkFf.js +0 -24
  263. package/dist/public/assets/diagram-NH7WQ7WH-MhGnE2fh.js +0 -24
  264. package/dist/public/assets/diagram-OA4YK3LP-CsQ9aFR_.js +0 -30
  265. package/dist/public/assets/diagram-WEI45ONY-Er3q49ew.js +0 -41
  266. package/dist/public/assets/dist-BzwexiH1.js +0 -1
  267. package/dist/public/assets/ebnfDiagram-CCIWWBDH-AnJAsk14.js +0 -1
  268. package/dist/public/assets/erDiagram-Q63AITRT-DulA16my.js +0 -85
  269. package/dist/public/assets/eventmodeling-45OFAUF4-CoIhTpHU.js +0 -1
  270. package/dist/public/assets/flowDiagram-23GEKE2U-BGMXUq18.js +0 -1
  271. package/dist/public/assets/ganttDiagram-NO4QXBWP-DAvCPT7_.js +0 -292
  272. package/dist/public/assets/gitGraph-TEB2WS4Q-BcPsZts5.js +0 -1
  273. package/dist/public/assets/index-H1CkT-JT.js +0 -447
  274. package/dist/public/assets/info-DKCQHKI2-7VGzrAVB.js +0 -1
  275. package/dist/public/assets/infoDiagram-FWYZ7A6U-D_by7lSL.js +0 -2
  276. package/dist/public/assets/journeyDiagram-5HDEW3XC-DpvFmk7c.js +0 -139
  277. package/dist/public/assets/linear-BWTvbP1l.js +0 -1
  278. package/dist/public/assets/map-BaFkSB1l.js +0 -1
  279. package/dist/public/assets/mermaid-parser.core--8614tkK.js +0 -4
  280. package/dist/public/assets/ordinal-BdBDtYTt.js +0 -1
  281. package/dist/public/assets/packet-7NZHBO7P-KYt33H0C.js +0 -1
  282. package/dist/public/assets/path-HTXttWil.js +0 -1
  283. package/dist/public/assets/pegDiagram-2B236MQR-BQNFxYz2.js +0 -1
  284. package/dist/public/assets/pie-RZYD4A2V-xKz9s9I4.js +0 -1
  285. package/dist/public/assets/pieDiagram-ENE6RG2P-Cy13tg8_.js +0 -39
  286. package/dist/public/assets/radar-I7S5WNFK-B4QTX-fX.js +0 -1
  287. package/dist/public/assets/railroad-3IZDKUUU-Co_9rPVC.js +0 -1
  288. package/dist/public/assets/railroad-abnf-AHOZXSZD-Bhy_c3ol.js +0 -1
  289. package/dist/public/assets/railroad-ebnf-EBAXGLYW-B9ENjG34.js +0 -1
  290. package/dist/public/assets/railroad-peg-LSFZ7HO6-CyJxDBsB.js +0 -1
  291. package/dist/public/assets/railroadDiagram-RFXS5EU6-M2j5SJF2.js +0 -1
  292. package/dist/public/assets/range-EplFIxc7.js +0 -1
  293. package/dist/public/assets/sizeCapture-X5ZJPWSS-B0uUizjq.js +0 -1
  294. package/dist/public/assets/src-DOh7_en_.js +0 -1
  295. package/dist/public/assets/stateDiagram-2N3HPSRC-a9IdkSQG.js +0 -1
  296. package/dist/public/assets/stateDiagram-v2-6OUMAXLB-s2blPtZ-.js +0 -1
  297. package/dist/public/assets/swimlanes-5IMT3BWC-5w0Cdxk6.js +0 -2
  298. package/dist/public/assets/swimlanesDiagram-G3AALYLV-BWa-KRed.js +0 -8
  299. package/dist/public/assets/time-BM2d9MsQ.js +0 -1
  300. package/dist/public/assets/timeline-definition-FHXFAJF6-CvXlv_4Y.js +0 -120
  301. package/dist/public/assets/treeView-QDETBFTQ-B9cxjfpB.js +0 -1
  302. package/dist/public/assets/treemap-6X3UGDF4-BplEq4hB.js +0 -1
  303. package/dist/public/assets/treemap-BfjIY-m6.js +0 -1
  304. package/dist/public/assets/wardley-OPB4EBWU-BX2ghg5e.js +0 -1
  305. package/src/domain/cards/presence.ts +0 -124
@@ -1,7 +1,7 @@
1
- import{D as e,H as t,K as n,U as r,a as i,b as a,c as o,f as s,v as c,w as l,y as u,z as d}from"./chunk-WYO6CB5R-BQoO62-B.js";import{n as f}from"./chunk-Y2CYZVJY-DsF7k-Jl.js";import{O as p}from"./src-DOh7_en_.js";import{t as m}from"./linear-BWTvbP1l.js";import{n as h}from"./ordinal-BdBDtYTt.js";import{t as g}from"./range-EplFIxc7.js";import{n as _}from"./init-ZlXS9mIS.js";import{i as v}from"./chunk-ICXQ74PX-Bb8zaHde.js";import{t as y}from"./line-C8Sfsgt8.js";import{t as b}from"./chunk-VAUOI2AC-C-GBw18h.js";import"./chunk-HOUHSVGY-L35GPy9G.js";import{t as x}from"./chunk-Q4XR5HBZ-BuKFRUzR.js";function S(){var e=h().unknown(void 0),t=e.domain,n=e.range,r=0,i=1,a,o,s=!1,c=0,l=0,u=.5;delete e.unknown;function d(){var e=t().length,d=i<r,f=d?i:r,p=d?r:i;a=(p-f)/Math.max(1,e-c+l*2),s&&(a=Math.floor(a)),f+=(p-f-a*(e-c))*u,o=a*(1-c),s&&(f=Math.round(f),o=Math.round(o));var m=g(e).map(function(e){return f+a*e});return n(d?m.reverse():m)}return e.domain=function(e){return arguments.length?(t(e),d()):t()},e.range=function(e){return arguments.length?([r,i]=e,r=+r,i=+i,d()):[r,i]},e.rangeRound=function(e){return[r,i]=e,r=+r,i=+i,s=!0,d()},e.bandwidth=function(){return o},e.step=function(){return a},e.round=function(e){return arguments.length?(s=!!e,d()):s},e.padding=function(e){return arguments.length?(c=Math.min(1,l=+e),d()):c},e.paddingInner=function(e){return arguments.length?(c=Math.min(1,e),d()):c},e.paddingOuter=function(e){return arguments.length?(l=+e,d()):l},e.align=function(e){return arguments.length?(u=Math.max(0,Math.min(1,e)),d()):u},e.copy=function(){return S(t(),[r,i]).round(s).paddingInner(c).paddingOuter(l).align(u)},_.apply(d(),arguments)}var C=(function(){var e=f(function(e,t,n,r){for(n||={},r=e.length;r--;n[e[r]]=t);return n},`o`),t=[1,10,12,14,16,18,19,21,23],n=[2,6],r=[1,3],i=[1,5],a=[1,6],o=[1,7],s=[1,5,10,12,14,16,18,19,21,23,36,37,38],c=[1,25],l=[1,26],u=[1,28],d=[1,29],p=[1,30],m=[1,31],h=[1,32],g=[1,33],_=[1,34],v=[1,35],y=[1,36],b=[1,37],x=[1,43],S=[1,42],C=[1,47],w=[1,50],T=[1,10,12,14,16,18,19,21,23,36,37,38],E=[1,10,12,14,16,18,19,21,23,24,26,28,29,36,37,38],D=[1,10,12,14,16,18,19,21,23,24,26,28,29,36,37,38,42,43,44,45,46,47,48,49,50,51],O=[1,65],k=[26,28],A={trace:f(function(){},`trace`),yy:{},symbols_:{error:2,start:3,eol:4,XYCHART:5,chartConfig:6,document:7,CHART_ORIENTATION:8,statement:9,title:10,text:11,X_AXIS:12,parseXAxis:13,Y_AXIS:14,parseYAxis:15,LINE:16,plotData:17,BAR:18,acc_title:19,acc_title_value:20,acc_descr:21,acc_descr_value:22,acc_descr_multiline_value:23,SQUARE_BRACES_START:24,dataPoints:25,SQUARE_BRACES_END:26,dataPoint:27,COMMA:28,NUMBER_WITH_DECIMAL:29,STR:30,xAxisData:31,bandData:32,ARROW_DELIMITER:33,commaSeparatedTexts:34,yAxisData:35,NEWLINE:36,SEMI:37,EOF:38,alphaNum:39,MD_STR:40,alphaNumToken:41,AMP:42,NUM:43,ALPHA:44,PLUS:45,EQUALS:46,MULT:47,DOT:48,BRKT:49,MINUS:50,UNDERSCORE:51,$accept:0,$end:1},terminals_:{2:`error`,5:`XYCHART`,8:`CHART_ORIENTATION`,10:`title`,12:`X_AXIS`,14:`Y_AXIS`,16:`LINE`,18:`BAR`,19:`acc_title`,20:`acc_title_value`,21:`acc_descr`,22:`acc_descr_value`,23:`acc_descr_multiline_value`,24:`SQUARE_BRACES_START`,26:`SQUARE_BRACES_END`,28:`COMMA`,29:`NUMBER_WITH_DECIMAL`,30:`STR`,33:`ARROW_DELIMITER`,36:`NEWLINE`,37:`SEMI`,38:`EOF`,40:`MD_STR`,42:`AMP`,43:`NUM`,44:`ALPHA`,45:`PLUS`,46:`EQUALS`,47:`MULT`,48:`DOT`,49:`BRKT`,50:`MINUS`,51:`UNDERSCORE`},productions_:[0,[3,2],[3,3],[3,2],[3,1],[6,1],[7,0],[7,2],[9,2],[9,2],[9,2],[9,2],[9,2],[9,3],[9,2],[9,3],[9,2],[9,2],[9,1],[17,3],[25,3],[25,1],[27,2],[27,1],[13,1],[13,2],[13,1],[31,1],[31,3],[32,3],[34,3],[34,1],[15,1],[15,2],[15,1],[35,3],[4,1],[4,1],[4,1],[11,1],[11,1],[11,1],[39,1],[39,2],[41,1],[41,1],[41,1],[41,1],[41,1],[41,1],[41,1],[41,1],[41,1],[41,1]],performAction:f(function(e,t,n,r,i,a,o){var s=a.length-1;switch(i){case 5:r.setOrientation(a[s]);break;case 9:r.setDiagramTitle(a[s].text.trim());break;case 12:r.setLineData({text:``,type:`text`},a[s]);break;case 13:r.setLineData(a[s-1],a[s]);break;case 14:r.setBarData({text:``,type:`text`},a[s]);break;case 15:r.setBarData(a[s-1],a[s]);break;case 16:this.$=a[s].trim(),r.setAccTitle(this.$);break;case 17:case 18:this.$=a[s].trim(),r.setAccDescription(this.$);break;case 19:this.$=a[s-1];break;case 20:case 30:this.$=[a[s-2],...a[s]];break;case 21:case 31:this.$=[a[s]];break;case 22:this.$={value:Number(a[s-1]),label:a[s]};break;case 23:this.$={value:Number(a[s]),label:``};break;case 24:r.setXAxisTitle(a[s]);break;case 25:r.setXAxisTitle(a[s-1]);break;case 26:r.setXAxisTitle({type:`text`,text:``});break;case 27:r.setXAxisBand(a[s]);break;case 28:r.setXAxisRangeData(Number(a[s-2]),Number(a[s]));break;case 29:this.$=a[s-1];break;case 32:r.setYAxisTitle(a[s]);break;case 33:r.setYAxisTitle(a[s-1]);break;case 34:r.setYAxisTitle({type:`text`,text:``});break;case 35:r.setYAxisRangeData(Number(a[s-2]),Number(a[s]));break;case 39:this.$={text:a[s],type:`text`};break;case 40:this.$={text:a[s],type:`text`};break;case 41:this.$={text:a[s],type:`markdown`};break;case 42:this.$=a[s];break;case 43:this.$=a[s-1]+``+a[s]}},`anonymous`),table:[e(t,n,{3:1,4:2,7:4,5:r,36:i,37:a,38:o}),{1:[3]},e(t,n,{4:2,7:4,3:8,5:r,36:i,37:a,38:o}),e(t,n,{4:2,7:4,6:9,3:10,5:r,8:[1,11],36:i,37:a,38:o}),{1:[2,4],9:12,10:[1,13],12:[1,14],14:[1,15],16:[1,16],18:[1,17],19:[1,18],21:[1,19],23:[1,20]},e(s,[2,36]),e(s,[2,37]),e(s,[2,38]),{1:[2,1]},e(t,n,{4:2,7:4,3:21,5:r,36:i,37:a,38:o}),{1:[2,3]},e(s,[2,5]),e(t,[2,7],{4:22,36:i,37:a,38:o}),{11:23,30:c,39:24,40:l,41:27,42:u,43:d,44:p,45:m,46:h,47:g,48:_,49:v,50:y,51:b},{11:39,13:38,24:x,29:S,30:c,31:40,32:41,39:24,40:l,41:27,42:u,43:d,44:p,45:m,46:h,47:g,48:_,49:v,50:y,51:b},{11:45,15:44,29:C,30:c,35:46,39:24,40:l,41:27,42:u,43:d,44:p,45:m,46:h,47:g,48:_,49:v,50:y,51:b},{11:49,17:48,24:w,30:c,39:24,40:l,41:27,42:u,43:d,44:p,45:m,46:h,47:g,48:_,49:v,50:y,51:b},{11:52,17:51,24:w,30:c,39:24,40:l,41:27,42:u,43:d,44:p,45:m,46:h,47:g,48:_,49:v,50:y,51:b},{20:[1,53]},{22:[1,54]},e(T,[2,18]),{1:[2,2]},e(T,[2,8]),e(T,[2,9]),e(E,[2,39],{41:55,42:u,43:d,44:p,45:m,46:h,47:g,48:_,49:v,50:y,51:b}),e(E,[2,40]),e(E,[2,41]),e(D,[2,42]),e(D,[2,44]),e(D,[2,45]),e(D,[2,46]),e(D,[2,47]),e(D,[2,48]),e(D,[2,49]),e(D,[2,50]),e(D,[2,51]),e(D,[2,52]),e(D,[2,53]),e(T,[2,10]),e(T,[2,24],{32:41,31:56,24:x,29:S}),e(T,[2,26]),e(T,[2,27]),{33:[1,57]},{11:59,30:c,34:58,39:24,40:l,41:27,42:u,43:d,44:p,45:m,46:h,47:g,48:_,49:v,50:y,51:b},e(T,[2,11]),e(T,[2,32],{35:60,29:C}),e(T,[2,34]),{33:[1,61]},e(T,[2,12]),{17:62,24:w},{25:63,27:64,29:O},e(T,[2,14]),{17:66,24:w},e(T,[2,16]),e(T,[2,17]),e(D,[2,43]),e(T,[2,25]),{29:[1,67]},{26:[1,68]},{26:[2,31],28:[1,69]},e(T,[2,33]),{29:[1,70]},e(T,[2,13]),{26:[1,71]},{26:[2,21],28:[1,72]},e(k,[2,23],{30:[1,73]}),e(T,[2,15]),e(T,[2,28]),e(T,[2,29]),{11:59,30:c,34:74,39:24,40:l,41:27,42:u,43:d,44:p,45:m,46:h,47:g,48:_,49:v,50:y,51:b},e(T,[2,35]),e(T,[2,19]),{25:75,27:64,29:O},e(k,[2,22]),{26:[2,30]},{26:[2,20]}],defaultActions:{8:[2,1],10:[2,3],21:[2,2],74:[2,30],75:[2,20]},parseError:f(function(e,t){if(t.recoverable)this.trace(e);else{var n=Error(e);throw n.hash=t,n}},`parseError`),parse:f(function(e){var t=this,n=[0],r=[],i=[null],a=[],o=this.table,s=``,c=0,l=0,u=0,d=2,p=1,m=a.slice.call(arguments,1),h=Object.create(this.lexer),g={yy:{}};for(var _ in this.yy)Object.prototype.hasOwnProperty.call(this.yy,_)&&(g.yy[_]=this.yy[_]);h.setInput(e,g.yy),g.yy.lexer=h,g.yy.parser=this,h.yylloc===void 0&&(h.yylloc={});var v=h.yylloc;a.push(v);var y=h.options&&h.options.ranges;this.parseError=typeof g.yy.parseError==`function`?g.yy.parseError:Object.getPrototypeOf(this).parseError;function b(e){n.length-=2*e,i.length-=e,a.length-=e}f(b,`popStack`);function x(){var e=r.pop()||h.lex()||p;return typeof e!=`number`&&(e instanceof Array&&(r=e,e=r.pop()),e=t.symbols_[e]||e),e}f(x,`lex`);for(var S,C,w,T,E,D={},O,k,A,j;;){if(w=n[n.length-1],this.defaultActions[w]?T=this.defaultActions[w]:(S??=x(),T=o[w]&&o[w][S]),T===void 0||!T.length||!T[0]){var M=``;for(O in j=[],o[w])this.terminals_[O]&&O>d&&j.push(`'`+this.terminals_[O]+`'`);M=h.showPosition?`Parse error on line `+(c+1)+`:
1
+ import{D as e,H as t,K as n,U as r,a as i,b as a,c as o,f as s,v as c,w as l,y as u,z as d}from"./chunk-DU6HZSFF-iJGdiRt7.js";import{n as f}from"./chunk-Y2CYZVJY-DsF7k-Jl.js";import{j as p}from"./src-an_qrnIj.js";import{t as m}from"./linear-DDBi9FwZ.js";import{n as h}from"./init-ZlXS9mIS.js";import{i as g}from"./chunk-75Z2AOVW-CKqXRGJV.js";import{t as _}from"./line-Dr41HTk1.js";import"./chunk-PWAF6VOD-D9cdEIZp.js";import{t as v}from"./chunk-GMAD6QVW-DxHVEaGj.js";import{A as y,P as b,f as x}from"./index-D3HS7YxF.js";function S(){var e=y().unknown(void 0),t=e.domain,n=e.range,r=0,i=1,a,o,s=!1,c=0,l=0,u=.5;delete e.unknown;function d(){var e=t().length,d=i<r,f=d?i:r,p=d?r:i;a=(p-f)/Math.max(1,e-c+l*2),s&&(a=Math.floor(a)),f+=(p-f-a*(e-c))*u,o=a*(1-c),s&&(f=Math.round(f),o=Math.round(o));var m=b(e).map(function(e){return f+a*e});return n(d?m.reverse():m)}return e.domain=function(e){return arguments.length?(t(e),d()):t()},e.range=function(e){return arguments.length?([r,i]=e,r=+r,i=+i,d()):[r,i]},e.rangeRound=function(e){return[r,i]=e,r=+r,i=+i,s=!0,d()},e.bandwidth=function(){return o},e.step=function(){return a},e.round=function(e){return arguments.length?(s=!!e,d()):s},e.padding=function(e){return arguments.length?(c=Math.min(1,l=+e),d()):c},e.paddingInner=function(e){return arguments.length?(c=Math.min(1,e),d()):c},e.paddingOuter=function(e){return arguments.length?(l=+e,d()):l},e.align=function(e){return arguments.length?(u=Math.max(0,Math.min(1,e)),d()):u},e.copy=function(){return S(t(),[r,i]).round(s).paddingInner(c).paddingOuter(l).align(u)},h.apply(d(),arguments)}var C=(function(){var e=f(function(e,t,n,r){for(n||={},r=e.length;r--;n[e[r]]=t);return n},`o`),t=[1,10,12,14,16,18,19,21,23],n=[2,6],r=[1,3],i=[1,5],a=[1,6],o=[1,7],s=[1,5,10,12,14,16,18,19,21,23,36,37,38],c=[1,25],l=[1,26],u=[1,28],d=[1,29],p=[1,30],m=[1,31],h=[1,32],g=[1,33],_=[1,34],v=[1,35],y=[1,36],b=[1,37],x=[1,43],S=[1,42],C=[1,47],w=[1,50],T=[1,10,12,14,16,18,19,21,23,36,37,38],E=[1,10,12,14,16,18,19,21,23,24,26,28,29,36,37,38],D=[1,10,12,14,16,18,19,21,23,24,26,28,29,36,37,38,42,43,44,45,46,47,48,49,50,51],O=[1,65],k=[26,28],A={trace:f(function(){},`trace`),yy:{},symbols_:{error:2,start:3,eol:4,XYCHART:5,chartConfig:6,document:7,CHART_ORIENTATION:8,statement:9,title:10,text:11,X_AXIS:12,parseXAxis:13,Y_AXIS:14,parseYAxis:15,LINE:16,plotData:17,BAR:18,acc_title:19,acc_title_value:20,acc_descr:21,acc_descr_value:22,acc_descr_multiline_value:23,SQUARE_BRACES_START:24,dataPoints:25,SQUARE_BRACES_END:26,dataPoint:27,COMMA:28,NUMBER_WITH_DECIMAL:29,STR:30,xAxisData:31,bandData:32,ARROW_DELIMITER:33,commaSeparatedTexts:34,yAxisData:35,NEWLINE:36,SEMI:37,EOF:38,alphaNum:39,MD_STR:40,alphaNumToken:41,AMP:42,NUM:43,ALPHA:44,PLUS:45,EQUALS:46,MULT:47,DOT:48,BRKT:49,MINUS:50,UNDERSCORE:51,$accept:0,$end:1},terminals_:{2:`error`,5:`XYCHART`,8:`CHART_ORIENTATION`,10:`title`,12:`X_AXIS`,14:`Y_AXIS`,16:`LINE`,18:`BAR`,19:`acc_title`,20:`acc_title_value`,21:`acc_descr`,22:`acc_descr_value`,23:`acc_descr_multiline_value`,24:`SQUARE_BRACES_START`,26:`SQUARE_BRACES_END`,28:`COMMA`,29:`NUMBER_WITH_DECIMAL`,30:`STR`,33:`ARROW_DELIMITER`,36:`NEWLINE`,37:`SEMI`,38:`EOF`,40:`MD_STR`,42:`AMP`,43:`NUM`,44:`ALPHA`,45:`PLUS`,46:`EQUALS`,47:`MULT`,48:`DOT`,49:`BRKT`,50:`MINUS`,51:`UNDERSCORE`},productions_:[0,[3,2],[3,3],[3,2],[3,1],[6,1],[7,0],[7,2],[9,2],[9,2],[9,2],[9,2],[9,2],[9,3],[9,2],[9,3],[9,2],[9,2],[9,1],[17,3],[25,3],[25,1],[27,2],[27,1],[13,1],[13,2],[13,1],[31,1],[31,3],[32,3],[34,3],[34,1],[15,1],[15,2],[15,1],[35,3],[4,1],[4,1],[4,1],[11,1],[11,1],[11,1],[39,1],[39,2],[41,1],[41,1],[41,1],[41,1],[41,1],[41,1],[41,1],[41,1],[41,1],[41,1]],performAction:f(function(e,t,n,r,i,a,o){var s=a.length-1;switch(i){case 5:r.setOrientation(a[s]);break;case 9:r.setDiagramTitle(a[s].text.trim());break;case 12:r.setLineData({text:``,type:`text`},a[s]);break;case 13:r.setLineData(a[s-1],a[s]);break;case 14:r.setBarData({text:``,type:`text`},a[s]);break;case 15:r.setBarData(a[s-1],a[s]);break;case 16:this.$=a[s].trim(),r.setAccTitle(this.$);break;case 17:case 18:this.$=a[s].trim(),r.setAccDescription(this.$);break;case 19:this.$=a[s-1];break;case 20:case 30:this.$=[a[s-2],...a[s]];break;case 21:case 31:this.$=[a[s]];break;case 22:this.$={value:Number(a[s-1]),label:a[s]};break;case 23:this.$={value:Number(a[s]),label:``};break;case 24:r.setXAxisTitle(a[s]);break;case 25:r.setXAxisTitle(a[s-1]);break;case 26:r.setXAxisTitle({type:`text`,text:``});break;case 27:r.setXAxisBand(a[s]);break;case 28:r.setXAxisRangeData(Number(a[s-2]),Number(a[s]));break;case 29:this.$=a[s-1];break;case 32:r.setYAxisTitle(a[s]);break;case 33:r.setYAxisTitle(a[s-1]);break;case 34:r.setYAxisTitle({type:`text`,text:``});break;case 35:r.setYAxisRangeData(Number(a[s-2]),Number(a[s]));break;case 39:this.$={text:a[s],type:`text`};break;case 40:this.$={text:a[s],type:`text`};break;case 41:this.$={text:a[s],type:`markdown`};break;case 42:this.$=a[s];break;case 43:this.$=a[s-1]+``+a[s]}},`anonymous`),table:[e(t,n,{3:1,4:2,7:4,5:r,36:i,37:a,38:o}),{1:[3]},e(t,n,{4:2,7:4,3:8,5:r,36:i,37:a,38:o}),e(t,n,{4:2,7:4,6:9,3:10,5:r,8:[1,11],36:i,37:a,38:o}),{1:[2,4],9:12,10:[1,13],12:[1,14],14:[1,15],16:[1,16],18:[1,17],19:[1,18],21:[1,19],23:[1,20]},e(s,[2,36]),e(s,[2,37]),e(s,[2,38]),{1:[2,1]},e(t,n,{4:2,7:4,3:21,5:r,36:i,37:a,38:o}),{1:[2,3]},e(s,[2,5]),e(t,[2,7],{4:22,36:i,37:a,38:o}),{11:23,30:c,39:24,40:l,41:27,42:u,43:d,44:p,45:m,46:h,47:g,48:_,49:v,50:y,51:b},{11:39,13:38,24:x,29:S,30:c,31:40,32:41,39:24,40:l,41:27,42:u,43:d,44:p,45:m,46:h,47:g,48:_,49:v,50:y,51:b},{11:45,15:44,29:C,30:c,35:46,39:24,40:l,41:27,42:u,43:d,44:p,45:m,46:h,47:g,48:_,49:v,50:y,51:b},{11:49,17:48,24:w,30:c,39:24,40:l,41:27,42:u,43:d,44:p,45:m,46:h,47:g,48:_,49:v,50:y,51:b},{11:52,17:51,24:w,30:c,39:24,40:l,41:27,42:u,43:d,44:p,45:m,46:h,47:g,48:_,49:v,50:y,51:b},{20:[1,53]},{22:[1,54]},e(T,[2,18]),{1:[2,2]},e(T,[2,8]),e(T,[2,9]),e(E,[2,39],{41:55,42:u,43:d,44:p,45:m,46:h,47:g,48:_,49:v,50:y,51:b}),e(E,[2,40]),e(E,[2,41]),e(D,[2,42]),e(D,[2,44]),e(D,[2,45]),e(D,[2,46]),e(D,[2,47]),e(D,[2,48]),e(D,[2,49]),e(D,[2,50]),e(D,[2,51]),e(D,[2,52]),e(D,[2,53]),e(T,[2,10]),e(T,[2,24],{32:41,31:56,24:x,29:S}),e(T,[2,26]),e(T,[2,27]),{33:[1,57]},{11:59,30:c,34:58,39:24,40:l,41:27,42:u,43:d,44:p,45:m,46:h,47:g,48:_,49:v,50:y,51:b},e(T,[2,11]),e(T,[2,32],{35:60,29:C}),e(T,[2,34]),{33:[1,61]},e(T,[2,12]),{17:62,24:w},{25:63,27:64,29:O},e(T,[2,14]),{17:66,24:w},e(T,[2,16]),e(T,[2,17]),e(D,[2,43]),e(T,[2,25]),{29:[1,67]},{26:[1,68]},{26:[2,31],28:[1,69]},e(T,[2,33]),{29:[1,70]},e(T,[2,13]),{26:[1,71]},{26:[2,21],28:[1,72]},e(k,[2,23],{30:[1,73]}),e(T,[2,15]),e(T,[2,28]),e(T,[2,29]),{11:59,30:c,34:74,39:24,40:l,41:27,42:u,43:d,44:p,45:m,46:h,47:g,48:_,49:v,50:y,51:b},e(T,[2,35]),e(T,[2,19]),{25:75,27:64,29:O},e(k,[2,22]),{26:[2,30]},{26:[2,20]}],defaultActions:{8:[2,1],10:[2,3],21:[2,2],74:[2,30],75:[2,20]},parseError:f(function(e,t){if(t.recoverable)this.trace(e);else{var n=Error(e);throw n.hash=t,n}},`parseError`),parse:f(function(e){var t=this,n=[0],r=[],i=[null],a=[],o=this.table,s=``,c=0,l=0,u=0,d=2,p=1,m=a.slice.call(arguments,1),h=Object.create(this.lexer),g={yy:{}};for(var _ in this.yy)Object.prototype.hasOwnProperty.call(this.yy,_)&&(g.yy[_]=this.yy[_]);h.setInput(e,g.yy),g.yy.lexer=h,g.yy.parser=this,h.yylloc===void 0&&(h.yylloc={});var v=h.yylloc;a.push(v);var y=h.options&&h.options.ranges;this.parseError=typeof g.yy.parseError==`function`?g.yy.parseError:Object.getPrototypeOf(this).parseError;function b(e){n.length-=2*e,i.length-=e,a.length-=e}f(b,`popStack`);function x(){var e=r.pop()||h.lex()||p;return typeof e!=`number`&&(e instanceof Array&&(r=e,e=r.pop()),e=t.symbols_[e]||e),e}f(x,`lex`);for(var S,C,w,T,E,D={},O,k,A,j;;){if(w=n[n.length-1],this.defaultActions[w]?T=this.defaultActions[w]:(S??=x(),T=o[w]&&o[w][S]),T===void 0||!T.length||!T[0]){var M=``;for(O in j=[],o[w])this.terminals_[O]&&O>d&&j.push(`'`+this.terminals_[O]+`'`);M=h.showPosition?`Parse error on line `+(c+1)+`:
2
2
  `+h.showPosition()+`
3
3
  Expecting `+j.join(`, `)+`, got '`+(this.terminals_[S]||S)+`'`:`Parse error on line `+(c+1)+`: Unexpected `+(S==p?`end of input`:`'`+(this.terminals_[S]||S)+`'`),this.parseError(M,{text:h.match,token:this.terminals_[S]||S,line:h.yylineno,loc:v,expected:j})}if(T[0]instanceof Array&&T.length>1)throw Error(`Parse Error: multiple actions possible at state: `+w+`, token: `+S);switch(T[0]){case 1:n.push(S),i.push(h.yytext),a.push(h.yylloc),n.push(T[1]),S=null,C?(S=C,C=null):(l=h.yyleng,s=h.yytext,c=h.yylineno,v=h.yylloc,u>0&&u--);break;case 2:if(k=this.productions_[T[1]][1],D.$=i[i.length-k],D._$={first_line:a[a.length-(k||1)].first_line,last_line:a[a.length-1].last_line,first_column:a[a.length-(k||1)].first_column,last_column:a[a.length-1].last_column},y&&(D._$.range=[a[a.length-(k||1)].range[0],a[a.length-1].range[1]]),E=this.performAction.apply(D,[s,l,c,g.yy,T[1],i,a].concat(m)),E!==void 0)return E;k&&(n=n.slice(0,-1*k*2),i=i.slice(0,-1*k),a=a.slice(0,-1*k)),n.push(this.productions_[T[1]][0]),i.push(D.$),a.push(D._$),A=o[n[n.length-2]][n[n.length-1]],n.push(A);break;case 3:return!0}}return!0},`parse`)};A.lexer=(function(){return{EOF:1,parseError:f(function(e,t){if(this.yy.parser)this.yy.parser.parseError(e,t);else throw Error(e)},`parseError`),setInput:f(function(e,t){return this.yy=t||this.yy||{},this._input=e,this._more=this._backtrack=this.done=!1,this.yylineno=this.yyleng=0,this.yytext=this.matched=this.match=``,this.conditionStack=[`INITIAL`],this.yylloc={first_line:1,first_column:0,last_line:1,last_column:0},this.options.ranges&&(this.yylloc.range=[0,0]),this.offset=0,this},`setInput`),input:f(function(){var e=this._input[0];return this.yytext+=e,this.yyleng++,this.offset++,this.match+=e,this.matched+=e,e.match(/(?:\r\n?|\n).*/g)?(this.yylineno++,this.yylloc.last_line++):this.yylloc.last_column++,this.options.ranges&&this.yylloc.range[1]++,this._input=this._input.slice(1),e},`input`),unput:f(function(e){var t=e.length,n=e.split(/(?:\r\n?|\n)/g);this._input=e+this._input,this.yytext=this.yytext.substr(0,this.yytext.length-t),this.offset-=t;var r=this.match.split(/(?:\r\n?|\n)/g);this.match=this.match.substr(0,this.match.length-1),this.matched=this.matched.substr(0,this.matched.length-1),n.length-1&&(this.yylineno-=n.length-1);var i=this.yylloc.range;return this.yylloc={first_line:this.yylloc.first_line,last_line:this.yylineno+1,first_column:this.yylloc.first_column,last_column:n?(n.length===r.length?this.yylloc.first_column:0)+r[r.length-n.length].length-n[0].length:this.yylloc.first_column-t},this.options.ranges&&(this.yylloc.range=[i[0],i[0]+this.yyleng-t]),this.yyleng=this.yytext.length,this},`unput`),more:f(function(){return this._more=!0,this},`more`),reject:f(function(){if(this.options.backtrack_lexer)this._backtrack=!0;else return this.parseError(`Lexical error on line `+(this.yylineno+1)+`. You can only invoke reject() in the lexer when the lexer is of the backtracking persuasion (options.backtrack_lexer = true).
4
4
  `+this.showPosition(),{text:``,token:null,line:this.yylineno});return this},`reject`),less:f(function(e){this.unput(this.match.slice(e))},`less`),pastInput:f(function(){var e=this.matched.substr(0,this.matched.length-this.match.length);return(e.length>20?`...`:``)+e.substr(-20).replace(/\n/g,``)},`pastInput`),upcomingInput:f(function(){var e=this.match;return e.length<20&&(e+=this._input.substr(0,20-e.length)),(e.substr(0,20)+(e.length>20?`...`:``)).replace(/\n/g,``)},`upcomingInput`),showPosition:f(function(){var e=this.pastInput(),t=Array(e.length+1).join(`-`);return e+this.upcomingInput()+`
5
5
  `+t+`^`},`showPosition`),test_match:f(function(e,t){var n,r,i;if(this.options.backtrack_lexer&&(i={yylineno:this.yylineno,yylloc:{first_line:this.yylloc.first_line,last_line:this.last_line,first_column:this.yylloc.first_column,last_column:this.yylloc.last_column},yytext:this.yytext,match:this.match,matches:this.matches,matched:this.matched,yyleng:this.yyleng,offset:this.offset,_more:this._more,_input:this._input,yy:this.yy,conditionStack:this.conditionStack.slice(0),done:this.done},this.options.ranges&&(i.yylloc.range=this.yylloc.range.slice(0))),r=e[0].match(/(?:\r\n?|\n).*/g),r&&(this.yylineno+=r.length),this.yylloc={first_line:this.yylloc.last_line,last_line:this.yylineno+1,first_column:this.yylloc.last_column,last_column:r?r[r.length-1].length-r[r.length-1].match(/\r?\n?/)[0].length:this.yylloc.last_column+e[0].length},this.yytext+=e[0],this.match+=e[0],this.matches=e,this.yyleng=this.yytext.length,this.options.ranges&&(this.yylloc.range=[this.offset,this.offset+=this.yyleng]),this._more=!1,this._backtrack=!1,this._input=this._input.slice(e[0].length),this.matched+=e[0],n=this.performAction.call(this,this.yy,this,t,this.conditionStack[this.conditionStack.length-1]),this.done&&this._input&&(this.done=!1),n)return n;if(this._backtrack){for(var a in i)this[a]=i[a];return!1}return!1},`test_match`),next:f(function(){if(this.done)return this.EOF;this._input||(this.done=!0);var e,t,n,r;this._more||(this.yytext=``,this.match=``);for(var i=this._currentRules(),a=0;a<i.length;a++)if(n=this._input.match(this.rules[i[a]]),n&&(!t||n[0].length>t[0].length)){if(t=n,r=a,this.options.backtrack_lexer){if(e=this.test_match(n,i[a]),e!==!1)return e;if(this._backtrack){t=!1;continue}return!1}if(!this.options.flex)break}return t?(e=this.test_match(t,i[r]),e!==!1&&e):this._input===``?this.EOF:this.parseError(`Lexical error on line `+(this.yylineno+1)+`. Unrecognized text.
6
- `+this.showPosition(),{text:``,token:null,line:this.yylineno})},`next`),lex:f(function(){return this.next()||this.lex()},`lex`),begin:f(function(e){this.conditionStack.push(e)},`begin`),popState:f(function(){return this.conditionStack.length-1>0?this.conditionStack.pop():this.conditionStack[0]},`popState`),_currentRules:f(function(){return this.conditionStack.length&&this.conditionStack[this.conditionStack.length-1]?this.conditions[this.conditionStack[this.conditionStack.length-1]].rules:this.conditions.INITIAL.rules},`_currentRules`),topState:f(function(e){return e=this.conditionStack.length-1-Math.abs(e||0),e>=0?this.conditionStack[e]:`INITIAL`},`topState`),pushState:f(function(e){this.begin(e)},`pushState`),stateStackSize:f(function(){return this.conditionStack.length},`stateStackSize`),options:{"case-insensitive":!0},performAction:f(function(e,t,n,r){switch(n){case 0:break;case 1:break;case 2:return this.popState(),36;case 3:return this.popState(),36;case 4:return 36;case 5:break;case 6:return 10;case 7:return this.pushState(`acc_title`),19;case 8:return this.popState(),`acc_title_value`;case 9:return this.pushState(`acc_descr`),21;case 10:return this.popState(),`acc_descr_value`;case 11:this.pushState(`acc_descr_multiline`);break;case 12:this.popState();break;case 13:return`acc_descr_multiline_value`;case 14:return 5;case 15:return 5;case 16:return 8;case 17:return this.pushState(`axis_data`),`X_AXIS`;case 18:return this.pushState(`axis_data`),`Y_AXIS`;case 19:return this.pushState(`axis_band_data`),24;case 20:return 33;case 21:return this.pushState(`data`),16;case 22:return this.pushState(`data`),18;case 23:return this.pushState(`data_inner`),24;case 24:return 29;case 25:return this.popState(),26;case 26:this.popState();break;case 27:this.pushState(`string`);break;case 28:this.popState();break;case 29:return`STR`;case 30:return 24;case 31:return 26;case 32:return 44;case 33:return`COLON`;case 34:return 45;case 35:return 28;case 36:return 46;case 37:return 47;case 38:return 49;case 39:return 51;case 40:return 48;case 41:return 42;case 42:return 50;case 43:return 43;case 44:break;case 45:return 37;case 46:return 38}},`anonymous`),rules:[/^(?:%%(?!\{)[^\n]*)/i,/^(?:[^\}]%%[^\n]*)/i,/^(?:(\r?\n))/i,/^(?:(\r?\n))/i,/^(?:[\n\r]+)/i,/^(?:%%[^\n]*)/i,/^(?:title\b)/i,/^(?:accTitle\s*:\s*)/i,/^(?:(?!\n||)*[^\n]*)/i,/^(?:accDescr\s*:\s*)/i,/^(?:(?!\n||)*[^\n]*)/i,/^(?:accDescr\s*\{\s*)/i,/^(?:\})/i,/^(?:[^\}]*)/i,/^(?:xychart-beta\b)/i,/^(?:xychart\b)/i,/^(?:(?:vertical|horizontal))/i,/^(?:x-axis\b)/i,/^(?:y-axis\b)/i,/^(?:\[)/i,/^(?:-->)/i,/^(?:line\b)/i,/^(?:bar\b)/i,/^(?:\[)/i,/^(?:[+-]?(?:\d+(?:\.\d+)?|\.\d+))/i,/^(?:\])/i,/^(?:(?:`\) \{ this\.pushState\(md_string\); \}\n<md_string>\(\?:\(\?!`"\)\.\)\+ \{ return MD_STR; \}\n<md_string>\(\?:`))/i,/^(?:["])/i,/^(?:["])/i,/^(?:[^"]*)/i,/^(?:\[)/i,/^(?:\])/i,/^(?:[A-Za-z]+)/i,/^(?::)/i,/^(?:\+)/i,/^(?:,)/i,/^(?:=)/i,/^(?:\*)/i,/^(?:#)/i,/^(?:[\_])/i,/^(?:\.)/i,/^(?:&)/i,/^(?:-)/i,/^(?:[0-9]+)/i,/^(?:\s+)/i,/^(?:;)/i,/^(?:$)/i],conditions:{data_inner:{rules:[0,1,4,5,6,7,9,11,14,15,16,17,18,21,22,24,25,26,27,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46],inclusive:!0},data:{rules:[0,1,3,4,5,6,7,9,11,14,15,16,17,18,21,22,23,26,27,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46],inclusive:!0},axis_band_data:{rules:[0,1,4,5,6,7,9,11,14,15,16,17,18,21,22,25,26,27,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46],inclusive:!0},axis_data:{rules:[0,1,2,4,5,6,7,9,11,14,15,16,17,18,19,20,21,22,24,26,27,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46],inclusive:!0},acc_descr_multiline:{rules:[12,13],inclusive:!1},acc_descr:{rules:[10],inclusive:!1},acc_title:{rules:[8],inclusive:!1},title:{rules:[],inclusive:!1},md_string:{rules:[],inclusive:!1},string:{rules:[28,29],inclusive:!1},INITIAL:{rules:[0,1,4,5,6,7,9,11,14,15,16,17,18,21,22,26,27,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46],inclusive:!0}}}})();function j(){this.yy={}}return f(j,`Parser`),j.prototype=A,A.Parser=j,new j})();C.parser=C;var w=C;function T(e){return e.type===`bar`}f(T,`isBarPlot`);function E(e){return e.type===`band`}f(E,`isBandAxisData`);function D(e){return e.type===`linear`}f(D,`isLinearAxisData`);var O=class{constructor(e){this.parentGroup=e}static{f(this,`TextDimensionCalculatorWithFont`)}getMaxDimension(e,t){if(!this.parentGroup)return{width:e.reduce((e,t)=>Math.max(t.length,e),0)*t,height:t};let n={width:0,height:0},r=this.parentGroup.append(`g`).attr(`visibility`,`hidden`).attr(`font-size`,t);for(let i of e){let e=x(r,1,i),a=e?e.width:i.length*t,o=e?e.height:t;n.width=Math.max(n.width,a),n.height=Math.max(n.height,o)}return r.remove(),n}},k=.7,A=.2,j=class{constructor(e,t,n,r){this.axisConfig=e,this.title=t,this.textDimensionCalculator=n,this.axisThemeConfig=r,this.boundingRect={x:0,y:0,width:0,height:0},this.axisPosition=`left`,this.showTitle=!1,this.showLabel=!1,this.showTick=!1,this.showAxisLine=!1,this.outerPadding=0,this.titleTextHeight=0,this.labelTextHeight=0,this.normalizedLabelRotationInRad=0,this.range=[0,10],this.boundingRect={x:0,y:0,width:0,height:0},this.axisPosition=`left`,this.normalizedLabelRotationInRad=this.axisConfig.labelRotation>=-90&&this.axisConfig.labelRotation<=90?this.axisConfig.labelRotation*Math.PI/180:0}static{f(this,`BaseAxis`)}setRange(e){this.range=e,this.axisPosition===`left`||this.axisPosition===`right`?this.boundingRect.height=e[1]-e[0]:this.boundingRect.width=e[1]-e[0],this.recalculateScale()}getRange(){return[this.range[0]+this.outerPadding,this.range[1]-this.outerPadding]}setAxisPosition(e){this.axisPosition=e,this.setRange(this.range)}getTickDistance(){let e=this.getRange();return Math.abs(e[0]-e[1])/this.getTickValues().length}getAxisOuterPadding(){return this.outerPadding}getLabelDimension(){return this.textDimensionCalculator.getMaxDimension(this.getTickValues().map(e=>e.toString()),this.axisConfig.labelFontSize)}recalculateOuterPaddingToDrawBar(){k*this.getTickDistance()>this.outerPadding*2&&(this.outerPadding=Math.floor(k*this.getTickDistance()/2)),this.recalculateScale()}calculateSpaceIfDrawnHorizontally(e){let t=e.height;if(this.axisConfig.showAxisLine&&t>this.axisConfig.axisLineWidth&&(t-=this.axisConfig.axisLineWidth,this.showAxisLine=!0),this.axisConfig.showLabel){let n=this.getLabelDimension(),r=A*e.width;this.outerPadding=Math.min(n.width/2,r);let i=n.height;this.axisPosition===`bottom`&&this.normalizedLabelRotationInRad!==0&&(i=Math.max(i,Math.abs(Math.sin(this.normalizedLabelRotationInRad)*n.width)+Math.abs(Math.cos(this.normalizedLabelRotationInRad)*n.height))),i+=this.axisConfig.labelPadding*2,this.labelTextHeight=n.height,i<=t&&(t-=i,this.showLabel=!0)}if(this.axisConfig.showTick&&t>=this.axisConfig.tickLength&&(this.showTick=!0,t-=this.axisConfig.tickLength),this.axisConfig.showTitle&&this.title){let e=this.textDimensionCalculator.getMaxDimension([this.title],this.axisConfig.titleFontSize),n=e.height+this.axisConfig.titlePadding*2;this.titleTextHeight=e.height,n<=t&&(t-=n,this.showTitle=!0)}this.boundingRect.width=e.width,this.boundingRect.height=e.height-t}calculateSpaceIfDrawnVertical(e){let t=e.width;if(this.axisConfig.showAxisLine&&t>this.axisConfig.axisLineWidth&&(t-=this.axisConfig.axisLineWidth,this.showAxisLine=!0),this.axisConfig.showLabel){let n=this.getLabelDimension(),r=A*e.height;this.outerPadding=Math.min(n.height/2,r);let i=n.width+this.axisConfig.labelPadding*2;i<=t&&(t-=i,this.showLabel=!0)}if(this.axisConfig.showTick&&t>=this.axisConfig.tickLength&&(this.showTick=!0,t-=this.axisConfig.tickLength),this.axisConfig.showTitle&&this.title){let e=this.textDimensionCalculator.getMaxDimension([this.title],this.axisConfig.titleFontSize),n=e.height+this.axisConfig.titlePadding*2;this.titleTextHeight=e.height,n<=t&&(t-=n,this.showTitle=!0)}this.boundingRect.width=e.width-t,this.boundingRect.height=e.height}calculateSpace(e){return this.axisPosition===`left`||this.axisPosition===`right`?this.calculateSpaceIfDrawnVertical(e):this.calculateSpaceIfDrawnHorizontally(e),this.recalculateScale(),{width:this.boundingRect.width,height:this.boundingRect.height}}setBoundingBoxXY(e){this.boundingRect.x=e.x,this.boundingRect.y=e.y}calculateOffsetByRotation(e){let t=this.normalizedLabelRotationInRad;return t===0?0:Math.sin(t)*this.getLabelDimension()[e]/2}getDrawableElementsForLeftAxis(){let e=[];if(this.showAxisLine){let t=this.boundingRect.x+this.boundingRect.width-this.axisConfig.axisLineWidth/2;e.push({type:`path`,groupTexts:[`left-axis`,`axisl-line`],data:[{path:`M ${t},${this.boundingRect.y} L ${t},${this.boundingRect.y+this.boundingRect.height} `,strokeFill:this.axisThemeConfig.axisLineColor,strokeWidth:this.axisConfig.axisLineWidth}]})}if(this.showLabel&&e.push({type:`text`,groupTexts:[`left-axis`,`label`],data:this.getTickValues().map(e=>({text:e.toString(),x:this.boundingRect.x+this.boundingRect.width-(this.showLabel?this.axisConfig.labelPadding:0)-(this.showTick?this.axisConfig.tickLength:0)-(this.showAxisLine?this.axisConfig.axisLineWidth:0),y:this.getScaleValue(e),fill:this.axisThemeConfig.labelColor,fontSize:this.axisConfig.labelFontSize,rotation:0,verticalPos:`middle`,horizontalPos:`right`}))}),this.showTick){let t=this.boundingRect.x+this.boundingRect.width-(this.showAxisLine?this.axisConfig.axisLineWidth:0);e.push({type:`path`,groupTexts:[`left-axis`,`ticks`],data:this.getTickValues().map(e=>({path:`M ${t},${this.getScaleValue(e)} L ${t-this.axisConfig.tickLength},${this.getScaleValue(e)}`,strokeFill:this.axisThemeConfig.tickColor,strokeWidth:this.axisConfig.tickWidth}))})}return this.showTitle&&e.push({type:`text`,groupTexts:[`left-axis`,`title`],data:[{text:this.title,x:this.boundingRect.x+this.axisConfig.titlePadding,y:this.boundingRect.y+this.boundingRect.height/2,fill:this.axisThemeConfig.titleColor,fontSize:this.axisConfig.titleFontSize,rotation:270,verticalPos:`top`,horizontalPos:`center`}]}),e}getDrawableElementsForBottomAxis(){let e=[];if(this.showAxisLine){let t=this.boundingRect.y+this.axisConfig.axisLineWidth/2;e.push({type:`path`,groupTexts:[`bottom-axis`,`axis-line`],data:[{path:`M ${this.boundingRect.x},${t} L ${this.boundingRect.x+this.boundingRect.width},${t}`,strokeFill:this.axisThemeConfig.axisLineColor,strokeWidth:this.axisConfig.axisLineWidth}]})}if(this.showLabel&&e.push({type:`text`,groupTexts:[`bottom-axis`,`label`],data:this.getTickValues().map(e=>({text:e.toString(),x:this.getScaleValue(e)+this.calculateOffsetByRotation(`height`),y:this.boundingRect.y+this.axisConfig.labelPadding+(this.showTick?this.axisConfig.tickLength:0)+(this.showAxisLine?this.axisConfig.axisLineWidth:0)+Math.abs(this.calculateOffsetByRotation(`width`)),fill:this.axisThemeConfig.labelColor,fontSize:this.axisConfig.labelFontSize,rotation:this.normalizedLabelRotationInRad*180/Math.PI,verticalPos:`top`,horizontalPos:`center`}))}),this.showTick){let t=this.boundingRect.y+(this.showAxisLine?this.axisConfig.axisLineWidth:0);e.push({type:`path`,groupTexts:[`bottom-axis`,`ticks`],data:this.getTickValues().map(e=>({path:`M ${this.getScaleValue(e)},${t} L ${this.getScaleValue(e)},${t+this.axisConfig.tickLength}`,strokeFill:this.axisThemeConfig.tickColor,strokeWidth:this.axisConfig.tickWidth}))})}return this.showTitle&&e.push({type:`text`,groupTexts:[`bottom-axis`,`title`],data:[{text:this.title,x:this.range[0]+(this.range[1]-this.range[0])/2,y:this.boundingRect.y+this.boundingRect.height-this.axisConfig.titlePadding-this.titleTextHeight,fill:this.axisThemeConfig.titleColor,fontSize:this.axisConfig.titleFontSize,rotation:0,verticalPos:`top`,horizontalPos:`center`}]}),e}getDrawableElementsForTopAxis(){let e=[];if(this.showAxisLine){let t=this.boundingRect.y+this.boundingRect.height-this.axisConfig.axisLineWidth/2;e.push({type:`path`,groupTexts:[`top-axis`,`axis-line`],data:[{path:`M ${this.boundingRect.x},${t} L ${this.boundingRect.x+this.boundingRect.width},${t}`,strokeFill:this.axisThemeConfig.axisLineColor,strokeWidth:this.axisConfig.axisLineWidth}]})}if(this.showLabel&&e.push({type:`text`,groupTexts:[`top-axis`,`label`],data:this.getTickValues().map(e=>({text:e.toString(),x:this.getScaleValue(e),y:this.boundingRect.y+(this.showTitle?this.titleTextHeight+this.axisConfig.titlePadding*2:0)+this.axisConfig.labelPadding,fill:this.axisThemeConfig.labelColor,fontSize:this.axisConfig.labelFontSize,rotation:0,verticalPos:`top`,horizontalPos:`center`}))}),this.showTick){let t=this.boundingRect.y;e.push({type:`path`,groupTexts:[`top-axis`,`ticks`],data:this.getTickValues().map(e=>({path:`M ${this.getScaleValue(e)},${t+this.boundingRect.height-(this.showAxisLine?this.axisConfig.axisLineWidth:0)} L ${this.getScaleValue(e)},${t+this.boundingRect.height-this.axisConfig.tickLength-(this.showAxisLine?this.axisConfig.axisLineWidth:0)}`,strokeFill:this.axisThemeConfig.tickColor,strokeWidth:this.axisConfig.tickWidth}))})}return this.showTitle&&e.push({type:`text`,groupTexts:[`top-axis`,`title`],data:[{text:this.title,x:this.boundingRect.x+this.boundingRect.width/2,y:this.boundingRect.y+this.axisConfig.titlePadding,fill:this.axisThemeConfig.titleColor,fontSize:this.axisConfig.titleFontSize,rotation:0,verticalPos:`top`,horizontalPos:`center`}]}),e}getDrawableElements(){if(this.axisPosition===`left`)return this.getDrawableElementsForLeftAxis();if(this.axisPosition===`right`)throw Error(`Drawing of right axis is not implemented`);return this.axisPosition===`bottom`?this.getDrawableElementsForBottomAxis():this.axisPosition===`top`?this.getDrawableElementsForTopAxis():[]}},M=class extends j{static{f(this,`BandAxis`)}constructor(e,t,n,r,i){super(e,r,i,t),this.categories=n,this.scale=S().domain(this.categories).range(this.getRange())}setRange(e){super.setRange(e)}recalculateScale(){this.scale=S().domain(this.categories).range(this.getRange()).paddingInner(1).paddingOuter(0).align(.5),p.trace(`BandAxis axis final categories, range: `,this.categories,this.getRange())}getTickValues(){return this.categories}getScaleValue(e){return this.scale(e)??this.getRange()[0]}},ee=class extends j{static{f(this,`LinearAxis`)}constructor(e,t,n,r,i){super(e,r,i,t),this.domain=n,this.scale=m().domain(this.domain).range(this.getRange())}getTickValues(){return this.scale.ticks()}recalculateScale(){let e=[...this.domain];this.axisPosition===`left`&&e.reverse(),this.scale=m().domain(e).range(this.getRange())}getScaleValue(e){return this.scale(e)}};function N(e,t,n,r){let i=new O(r);return E(e)?new M(t,n,e.categories,e.title,i):new ee(t,n,[e.min,e.max],e.title,i)}f(N,`getAxis`);var te=class{constructor(e,t,n,r){this.textDimensionCalculator=e,this.chartConfig=t,this.chartData=n,this.chartThemeConfig=r,this.boundingRect={x:0,y:0,width:0,height:0},this.showChartTitle=!1}static{f(this,`ChartTitle`)}setBoundingBoxXY(e){this.boundingRect.x=e.x,this.boundingRect.y=e.y}calculateSpace(e){let t=this.textDimensionCalculator.getMaxDimension([this.chartData.title],this.chartConfig.titleFontSize),n=Math.max(t.width,e.width),r=t.height+2*this.chartConfig.titlePadding;return t.width<=n&&t.height<=r&&this.chartConfig.showTitle&&this.chartData.title&&(this.boundingRect.width=n,this.boundingRect.height=r,this.showChartTitle=!0),{width:this.boundingRect.width,height:this.boundingRect.height}}getDrawableElements(){let e=[];return this.showChartTitle&&e.push({groupTexts:[`chart-title`],type:`text`,data:[{fontSize:this.chartConfig.titleFontSize,text:this.chartData.title,verticalPos:`middle`,horizontalPos:`center`,x:this.boundingRect.x+this.boundingRect.width/2,y:this.boundingRect.y+this.boundingRect.height/2,fill:this.chartThemeConfig.titleColor,rotation:0}]}),e}};function ne(e,t,n,r){return new te(new O(r),e,t,n)}f(ne,`getChartTitleComponent`);var re=class{constructor(e,t,n,r,i){this.plotData=e,this.xAxis=t,this.yAxis=n,this.orientation=r,this.plotIndex=i}static{f(this,`LinePlot`)}getDrawableElement(){let e=this.plotData.data.map(e=>[this.xAxis.getScaleValue(e[0]),this.yAxis.getScaleValue(e[1])]),t;if(t=this.orientation===`horizontal`?y().y(e=>e[0]).x(e=>e[1])(e):y().x(e=>e[0]).y(e=>e[1])(e),!t)return[];let n=[{groupTexts:[`plot`,`line-plot-${this.plotIndex}`],type:`path`,data:[{path:t,strokeFill:this.plotData.strokeFill,strokeWidth:this.plotData.strokeWidth}]}];if(this.plotData.pointLabels&&this.plotData.pointLabels.length>0){let t=[];for(let[n,[r,i]]of e.entries()){let e=this.plotData.pointLabels[n];e&&(this.orientation===`horizontal`?t.push({x:i+10,y:r,text:e,fill:this.plotData.strokeFill,verticalPos:`middle`,horizontalPos:`left`,fontSize:12,rotation:0}):t.push({x:r,y:i-10,text:e,fill:this.plotData.strokeFill,verticalPos:`middle`,horizontalPos:`center`,fontSize:12,rotation:0}))}t.length>0&&n.push({groupTexts:[`plot`,`line-plot-${this.plotIndex}`,`labels`],type:`text`,data:t})}return n}},ie=class{constructor(e,t,n,r,i,a){this.barData=e,this.boundingRect=t,this.xAxis=n,this.yAxis=r,this.orientation=i,this.plotIndex=a}static{f(this,`BarPlot`)}getDrawableElement(){let e=this.barData.data.map(e=>[this.xAxis.getScaleValue(e[0]),this.yAxis.getScaleValue(e[1])]),t=Math.min(this.xAxis.getAxisOuterPadding()*2,this.xAxis.getTickDistance())*.95,n=t/2;return this.orientation===`horizontal`?[{groupTexts:[`plot`,`bar-plot-${this.plotIndex}`],type:`rect`,data:e.map(e=>({x:this.boundingRect.x,y:e[0]-n,height:t,width:e[1]-this.boundingRect.x,fill:this.barData.fill,strokeWidth:0,strokeFill:this.barData.fill}))}]:[{groupTexts:[`plot`,`bar-plot-${this.plotIndex}`],type:`rect`,data:e.map(e=>({x:e[0]-n,y:e[1],width:t,height:this.boundingRect.y+this.boundingRect.height-e[1],fill:this.barData.fill,strokeWidth:0,strokeFill:this.barData.fill}))}]}},ae=class{constructor(e,t,n){this.chartConfig=e,this.chartData=t,this.chartThemeConfig=n,this.boundingRect={x:0,y:0,width:0,height:0}}static{f(this,`BasePlot`)}setAxes(e,t){this.xAxis=e,this.yAxis=t}setBoundingBoxXY(e){this.boundingRect.x=e.x,this.boundingRect.y=e.y}calculateSpace(e){return this.boundingRect.width=e.width,this.boundingRect.height=e.height,{width:this.boundingRect.width,height:this.boundingRect.height}}getDrawableElements(){if(!(this.xAxis&&this.yAxis))throw Error(`Axes must be passed to render Plots`);let e=[];for(let[t,n]of this.chartData.plots.entries())switch(n.type){case`line`:{let r=new re(n,this.xAxis,this.yAxis,this.chartConfig.chartOrientation,t);e.push(...r.getDrawableElement())}break;case`bar`:{let r=new ie(n,this.boundingRect,this.xAxis,this.yAxis,this.chartConfig.chartOrientation,t);e.push(...r.getDrawableElement())}}return e}};function P(e,t,n){return new ae(e,t,n)}f(P,`getPlotComponent`);var oe=class{constructor(e,t,n,r){this.chartConfig=e,this.chartData=t,this.componentStore={title:ne(e,t,n,r),plot:P(e,t,n),xAxis:N(t.xAxis,e.xAxis,{titleColor:n.xAxisTitleColor,labelColor:n.xAxisLabelColor,tickColor:n.xAxisTickColor,axisLineColor:n.xAxisLineColor},r),yAxis:N(t.yAxis,e.yAxis,{titleColor:n.yAxisTitleColor,labelColor:n.yAxisLabelColor,tickColor:n.yAxisTickColor,axisLineColor:n.yAxisLineColor},r)}}static{f(this,`Orchestrator`)}calculateVerticalSpace(){let e=this.chartConfig.width,t=this.chartConfig.height,n=0,r=0,i=Math.floor(e*this.chartConfig.plotReservedSpacePercent/100),a=Math.floor(t*this.chartConfig.plotReservedSpacePercent/100),o=this.componentStore.plot.calculateSpace({width:i,height:a});e-=o.width,t-=o.height,o=this.componentStore.title.calculateSpace({width:this.chartConfig.width,height:t}),r=o.height,t-=o.height,this.componentStore.xAxis.setAxisPosition(`bottom`),o=this.componentStore.xAxis.calculateSpace({width:e,height:t}),t-=o.height,this.componentStore.yAxis.setAxisPosition(`left`),o=this.componentStore.yAxis.calculateSpace({width:e,height:t}),n=o.width,e-=o.width,e>0&&(i+=e,e=0),t>0&&(a+=t,t=0),this.componentStore.plot.calculateSpace({width:i,height:a}),this.componentStore.plot.setBoundingBoxXY({x:n,y:r}),this.componentStore.xAxis.setRange([n,n+i]),this.componentStore.xAxis.setBoundingBoxXY({x:n,y:r+a}),this.componentStore.yAxis.setRange([r,r+a]),this.componentStore.yAxis.setBoundingBoxXY({x:0,y:r}),this.chartData.plots.some(e=>T(e))&&this.componentStore.xAxis.recalculateOuterPaddingToDrawBar()}calculateHorizontalSpace(){let e=this.chartConfig.width,t=this.chartConfig.height,n=0,r=0,i=0,a=Math.floor(e*this.chartConfig.plotReservedSpacePercent/100),o=Math.floor(t*this.chartConfig.plotReservedSpacePercent/100),s=this.componentStore.plot.calculateSpace({width:a,height:o});e-=s.width,t-=s.height,s=this.componentStore.title.calculateSpace({width:this.chartConfig.width,height:t}),n=s.height,t-=s.height,this.componentStore.xAxis.setAxisPosition(`left`),s=this.componentStore.xAxis.calculateSpace({width:e,height:t}),e-=s.width,r=s.width,this.componentStore.yAxis.setAxisPosition(`top`),s=this.componentStore.yAxis.calculateSpace({width:e,height:t}),t-=s.height,i=n+s.height,e>0&&(a+=e,e=0),t>0&&(o+=t,t=0),this.componentStore.plot.calculateSpace({width:a,height:o}),this.componentStore.plot.setBoundingBoxXY({x:r,y:i}),this.componentStore.yAxis.setRange([r,r+a]),this.componentStore.yAxis.setBoundingBoxXY({x:r,y:n}),this.componentStore.xAxis.setRange([i,i+o]),this.componentStore.xAxis.setBoundingBoxXY({x:0,y:i}),this.chartData.plots.some(e=>T(e))&&this.componentStore.xAxis.recalculateOuterPaddingToDrawBar()}calculateSpace(){this.chartConfig.chartOrientation===`horizontal`?this.calculateHorizontalSpace():this.calculateVerticalSpace()}getDrawableElement(){this.calculateSpace();let e=[];this.componentStore.plot.setAxes(this.componentStore.xAxis,this.componentStore.yAxis);for(let t of Object.values(this.componentStore))e.push(...t.getDrawableElements());return e}},se=class{static{f(this,`XYChartBuilder`)}static build(e,t,n,r){return new oe(e,t,n,r).getDrawableElement()}},F=0,I,L=W(),R=U(),z=G(),B=R.plotColorPalette.split(`,`).map(e=>e.trim()),V=!1,H=!1;function U(){let t=e(),n=a();return v(t.xyChart,n.themeVariables.xyChart)}f(U,`getChartDefaultThemeConfig`);function W(){let e=a();return v(s.xyChart,e.xyChart)}f(W,`getChartDefaultConfig`);function G(){return{yAxis:{type:`linear`,title:``,min:1/0,max:-1/0},xAxis:{type:`band`,title:``,categories:[]},title:``,plots:[]}}f(G,`getChartDefaultData`);function K(e){let t=a();return d(e.trim(),t)}f(K,`textSanitizer`);function q(e){I=e}f(q,`setTmpSVGG`);function J(e){e===`horizontal`?L.chartOrientation=`horizontal`:L.chartOrientation=`vertical`}f(J,`setOrientation`);function Y(e){z.xAxis.title=K(e.text)}f(Y,`setXAxisTitle`);function X(e,t){z.xAxis={type:`linear`,title:z.xAxis.title,min:e,max:t},V=!0}f(X,`setXAxisRangeData`);function ce(e){z.xAxis={type:`band`,title:z.xAxis.title,categories:e.map(e=>K(e.text))},V=!0}f(ce,`setXAxisBand`);function le(e){z.yAxis.title=K(e.text)}f(le,`setYAxisTitle`);function ue(e,t){z.yAxis={type:`linear`,title:z.yAxis.title,min:e,max:t},H=!0}f(ue,`setYAxisRangeData`);function de(e){let t=Math.min(...e),n=Math.max(...e),r=D(z.yAxis)?z.yAxis.min:1/0,i=D(z.yAxis)?z.yAxis.max:-1/0;z.yAxis={type:`linear`,title:z.yAxis.title,min:Math.min(r,t),max:Math.max(i,n)}}f(de,`setYAxisRangeFromPlotData`);function Z(e){let t=[];if(e.length===0)return t;if(!V){let t=D(z.xAxis)?z.xAxis.min:1/0,n=D(z.xAxis)?z.xAxis.max:-1/0;X(Math.min(t,1),Math.max(n,e.length))}if(E(z.xAxis)&&e.length>z.xAxis.categories.length&&(e=e.slice(0,z.xAxis.categories.length)),H||de(e),E(z.xAxis)&&(t=z.xAxis.categories.map((t,n)=>[t,e[n]])),D(z.xAxis)){let n=z.xAxis.min,r=z.xAxis.max,i=(r-n)/(e.length-1),a=[];for(let e=n;e<=r;e+=i)a.push(`${e}`);t=a.map((t,n)=>[t,e[n]])}return t}f(Z,`transformDataWithoutCategory`);function Q(e){return B[e===0?0:e%B.length]}f(Q,`getPlotColorFromPalette`);function fe(e,t){let n=t.map(e=>e.value),r=t.map(e=>e.label?K(e.label):``),i=Z(n),a=r.some(e=>e!==``);z.plots.push({type:`line`,strokeFill:Q(F),strokeWidth:2,data:i,...a?{pointLabels:r}:{}}),F++}f(fe,`setLineData`);function pe(e,t){let n=Z(t.map(e=>e.value));z.plots.push({type:`bar`,fill:Q(F),data:n}),F++}f(pe,`setBarData`);function me(){if(z.plots.length===0)throw Error(`No Plot to render, please provide a plot with some data`);return z.title=l(),se.build(L,z,R,I)}f(me,`getDrawableElem`);function he(){return R}f(he,`getChartThemeConfig`);function ge(){return L}f(ge,`getChartConfig`);function $(){return z}f($,`getXYChartData`);var _e={parser:w,db:{getDrawableElem:me,clear:f(function(){i(),F=0,L=W(),z=G(),R=U(),B=R.plotColorPalette.split(`,`).map(e=>e.trim()),V=!1,H=!1},`clear`),setAccTitle:r,getAccTitle:u,setDiagramTitle:n,getDiagramTitle:l,getAccDescription:c,setAccDescription:t,setOrientation:J,setXAxisTitle:Y,setXAxisRangeData:X,setXAxisBand:ce,setYAxisTitle:le,setYAxisRangeData:ue,setLineData:fe,setBarData:pe,setTmpSVGG:q,getChartThemeConfig:he,getChartConfig:ge,getXYChartData:$},renderer:{draw:f((e,t,n,r)=>{let i=r.db,a=i.getChartThemeConfig(),s=i.getChartConfig(),c=i.getXYChartData().plots[0].data.map(e=>e[1]);function l(e){return e===`top`?`text-before-edge`:`middle`}f(l,`getDominantBaseLine`);function u(e){return e===`left`?`start`:e===`right`?`end`:`middle`}f(u,`getTextAnchor`);function d(e){return`translate(${e.x}, ${e.y}) rotate(${e.rotation||0})`}f(d,`getTextTransformation`),p.debug(`Rendering xychart chart
7
- `+e);let m=b(t),h=m.append(`g`).attr(`class`,`main`),g=h.append(`rect`).attr(`width`,s.width).attr(`height`,s.height).attr(`class`,`background`);o(m,s.height,s.width,!0),m.attr(`viewBox`,`0 0 ${s.width} ${s.height}`),g.attr(`fill`,a.backgroundColor),i.setTmpSVGG(m.append(`g`).attr(`class`,`mermaid-tmp-group`));let _=i.getDrawableElem(),v={};function y(e){let t=h,n=``;for(let[r]of e.entries()){let i=h;r>0&&v[n]&&(i=v[n]),n+=e[r],t=v[n],t||=v[n]=i.append(`g`).attr(`class`,e[r])}return t}f(y,`getGroup`);for(let e of _){if(e.data.length===0)continue;let t=y(e.groupTexts);switch(e.type){case`rect`:if(t.selectAll(`rect`).data(e.data).enter().append(`rect`).attr(`x`,e=>e.x).attr(`y`,e=>e.y).attr(`width`,e=>e.width).attr(`height`,e=>e.height).attr(`fill`,e=>e.fill).attr(`stroke`,e=>e.strokeFill).attr(`stroke-width`,e=>e.strokeWidth),s.showDataLabel){let n=s.showDataLabelOutsideBar;if(s.chartOrientation===`horizontal`){let r=function(e,t){let{data:n,label:r}=e;return t*r.length*i<=n.width-o};f(r,`fitsHorizontally`);let i=.7,o=10,s=e.data.map((e,t)=>({data:e,label:c[t].toString()})).filter(e=>e.data.width>0&&e.data.height>0),l=s.map(e=>{let{data:t}=e,n=t.height*.7;for(;!r(e,n)&&n>0;)--n;return n}),u=Math.floor(Math.min(...l)),d=f(e=>n?e.data.x+e.data.width+10:e.data.x+e.data.width-10,`determineLabelXPosition`);t.selectAll(`text`).data(s).enter().append(`text`).attr(`x`,d).attr(`y`,e=>e.data.y+e.data.height/2).attr(`text-anchor`,n?`start`:`end`).attr(`dominant-baseline`,`middle`).attr(`fill`,a.dataLabelColor).attr(`font-size`,`${u}px`).text(e=>e.label)}else{let r=function(e,t,n){let{data:r,label:i}=e,a=t*i.length*.7,o=r.x+r.width/2,s=o-a/2,c=o+a/2,l=s>=r.x&&c<=r.x+r.width,u=r.y+n+t<=r.y+r.height;return l&&u};f(r,`fitsInBar`);let i=e.data.map((e,t)=>({data:e,label:c[t].toString()})).filter(e=>e.data.width>0&&e.data.height>0),o=i.map(e=>{let{data:t,label:n}=e,i=t.width/(n.length*.7);for(;!r(e,i,10)&&i>0;)--i;return i}),s=Math.floor(Math.min(...o)),l=f(e=>n?e.data.y-10:e.data.y+10,`determineLabelYPosition`);t.selectAll(`text`).data(i).enter().append(`text`).attr(`x`,e=>e.data.x+e.data.width/2).attr(`y`,l).attr(`text-anchor`,`middle`).attr(`dominant-baseline`,n?`auto`:`hanging`).attr(`fill`,a.dataLabelColor).attr(`font-size`,`${s}px`).text(e=>e.label)}}break;case`text`:t.selectAll(`text`).data(e.data).enter().append(`text`).attr(`x`,0).attr(`y`,0).attr(`fill`,e=>e.fill).attr(`font-size`,e=>e.fontSize).attr(`dominant-baseline`,e=>l(e.verticalPos)).attr(`text-anchor`,e=>u(e.horizontalPos)).attr(`transform`,e=>d(e)).text(e=>e.text);break;case`path`:t.selectAll(`path`).data(e.data).enter().append(`path`).attr(`d`,e=>e.path).attr(`fill`,e=>e.fill?e.fill:`none`).attr(`stroke`,e=>e.strokeFill).attr(`stroke-width`,e=>e.strokeWidth)}}},`draw`)}};export{_e as diagram};
6
+ `+this.showPosition(),{text:``,token:null,line:this.yylineno})},`next`),lex:f(function(){return this.next()||this.lex()},`lex`),begin:f(function(e){this.conditionStack.push(e)},`begin`),popState:f(function(){return this.conditionStack.length-1>0?this.conditionStack.pop():this.conditionStack[0]},`popState`),_currentRules:f(function(){return this.conditionStack.length&&this.conditionStack[this.conditionStack.length-1]?this.conditions[this.conditionStack[this.conditionStack.length-1]].rules:this.conditions.INITIAL.rules},`_currentRules`),topState:f(function(e){return e=this.conditionStack.length-1-Math.abs(e||0),e>=0?this.conditionStack[e]:`INITIAL`},`topState`),pushState:f(function(e){this.begin(e)},`pushState`),stateStackSize:f(function(){return this.conditionStack.length},`stateStackSize`),options:{"case-insensitive":!0},performAction:f(function(e,t,n,r){switch(n){case 0:break;case 1:break;case 2:return this.popState(),36;case 3:return this.popState(),36;case 4:return 36;case 5:break;case 6:return 10;case 7:return this.pushState(`acc_title`),19;case 8:return this.popState(),`acc_title_value`;case 9:return this.pushState(`acc_descr`),21;case 10:return this.popState(),`acc_descr_value`;case 11:this.pushState(`acc_descr_multiline`);break;case 12:this.popState();break;case 13:return`acc_descr_multiline_value`;case 14:return 5;case 15:return 5;case 16:return 8;case 17:return this.pushState(`axis_data`),`X_AXIS`;case 18:return this.pushState(`axis_data`),`Y_AXIS`;case 19:return this.pushState(`axis_band_data`),24;case 20:return 33;case 21:return this.pushState(`data`),16;case 22:return this.pushState(`data`),18;case 23:return this.pushState(`data_inner`),24;case 24:return 29;case 25:return this.popState(),26;case 26:this.popState();break;case 27:this.pushState(`string`);break;case 28:this.popState();break;case 29:return`STR`;case 30:return 24;case 31:return 26;case 32:return 44;case 33:return`COLON`;case 34:return 45;case 35:return 28;case 36:return 46;case 37:return 47;case 38:return 49;case 39:return 51;case 40:return 48;case 41:return 42;case 42:return 50;case 43:return 43;case 44:break;case 45:return 37;case 46:return 38}},`anonymous`),rules:[/^(?:%%(?!\{)[^\n]*)/i,/^(?:[^\}]%%[^\n]*)/i,/^(?:(\r?\n))/i,/^(?:(\r?\n))/i,/^(?:[\n\r]+)/i,/^(?:%%[^\n]*)/i,/^(?:title\b)/i,/^(?:accTitle\s*:\s*)/i,/^(?:(?!\n||)*[^\n]*)/i,/^(?:accDescr\s*:\s*)/i,/^(?:(?!\n||)*[^\n]*)/i,/^(?:accDescr\s*\{\s*)/i,/^(?:\})/i,/^(?:[^\}]*)/i,/^(?:xychart-beta\b)/i,/^(?:xychart\b)/i,/^(?:(?:vertical|horizontal))/i,/^(?:x-axis\b)/i,/^(?:y-axis\b)/i,/^(?:\[)/i,/^(?:-->)/i,/^(?:line\b)/i,/^(?:bar\b)/i,/^(?:\[)/i,/^(?:[+-]?(?:\d+(?:\.\d+)?|\.\d+))/i,/^(?:\])/i,/^(?:(?:`\) \{ this\.pushState\(md_string\); \}\n<md_string>\(\?:\(\?!`"\)\.\)\+ \{ return MD_STR; \}\n<md_string>\(\?:`))/i,/^(?:["])/i,/^(?:["])/i,/^(?:[^"]*)/i,/^(?:\[)/i,/^(?:\])/i,/^(?:[A-Za-z]+)/i,/^(?::)/i,/^(?:\+)/i,/^(?:,)/i,/^(?:=)/i,/^(?:\*)/i,/^(?:#)/i,/^(?:[\_])/i,/^(?:\.)/i,/^(?:&)/i,/^(?:-)/i,/^(?:[0-9]+)/i,/^(?:\s+)/i,/^(?:;)/i,/^(?:$)/i],conditions:{data_inner:{rules:[0,1,4,5,6,7,9,11,14,15,16,17,18,21,22,24,25,26,27,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46],inclusive:!0},data:{rules:[0,1,3,4,5,6,7,9,11,14,15,16,17,18,21,22,23,26,27,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46],inclusive:!0},axis_band_data:{rules:[0,1,4,5,6,7,9,11,14,15,16,17,18,21,22,25,26,27,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46],inclusive:!0},axis_data:{rules:[0,1,2,4,5,6,7,9,11,14,15,16,17,18,19,20,21,22,24,26,27,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46],inclusive:!0},acc_descr_multiline:{rules:[12,13],inclusive:!1},acc_descr:{rules:[10],inclusive:!1},acc_title:{rules:[8],inclusive:!1},title:{rules:[],inclusive:!1},md_string:{rules:[],inclusive:!1},string:{rules:[28,29],inclusive:!1},INITIAL:{rules:[0,1,4,5,6,7,9,11,14,15,16,17,18,21,22,26,27,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46],inclusive:!0}}}})();function j(){this.yy={}}return f(j,`Parser`),j.prototype=A,A.Parser=j,new j})();C.parser=C;var w=C;function T(e){return e.type===`bar`}f(T,`isBarPlot`);function E(e){return e.type===`band`}f(E,`isBandAxisData`);function D(e){return e.type===`linear`}f(D,`isLinearAxisData`);var O=class{constructor(e){this.parentGroup=e}static{f(this,`TextDimensionCalculatorWithFont`)}getMaxDimension(e,t){if(!this.parentGroup)return{width:e.reduce((e,t)=>Math.max(t.length,e),0)*t,height:t};let n={width:0,height:0},r=this.parentGroup.append(`g`).attr(`visibility`,`hidden`).attr(`font-size`,t);for(let i of e){let e=v(r,1,i),a=e?e.width:i.length*t,o=e?e.height:t;n.width=Math.max(n.width,a),n.height=Math.max(n.height,o)}return r.remove(),n}},k=.7,A=.2,j=class{constructor(e,t,n,r){this.axisConfig=e,this.title=t,this.textDimensionCalculator=n,this.axisThemeConfig=r,this.boundingRect={x:0,y:0,width:0,height:0},this.axisPosition=`left`,this.showTitle=!1,this.showLabel=!1,this.showTick=!1,this.showAxisLine=!1,this.outerPadding=0,this.titleTextHeight=0,this.labelTextHeight=0,this.normalizedLabelRotationInRad=0,this.range=[0,10],this.boundingRect={x:0,y:0,width:0,height:0},this.axisPosition=`left`,this.normalizedLabelRotationInRad=this.axisConfig.labelRotation>=-90&&this.axisConfig.labelRotation<=90?this.axisConfig.labelRotation*Math.PI/180:0}static{f(this,`BaseAxis`)}setRange(e){this.range=e,this.axisPosition===`left`||this.axisPosition===`right`?this.boundingRect.height=e[1]-e[0]:this.boundingRect.width=e[1]-e[0],this.recalculateScale()}getRange(){return[this.range[0]+this.outerPadding,this.range[1]-this.outerPadding]}setAxisPosition(e){this.axisPosition=e,this.setRange(this.range)}getTickDistance(){let e=this.getRange();return Math.abs(e[0]-e[1])/this.getTickValues().length}getAxisOuterPadding(){return this.outerPadding}getLabelDimension(){return this.textDimensionCalculator.getMaxDimension(this.getTickValues().map(e=>e.toString()),this.axisConfig.labelFontSize)}recalculateOuterPaddingToDrawBar(){k*this.getTickDistance()>this.outerPadding*2&&(this.outerPadding=Math.floor(k*this.getTickDistance()/2)),this.recalculateScale()}calculateSpaceIfDrawnHorizontally(e){let t=e.height;if(this.axisConfig.showAxisLine&&t>this.axisConfig.axisLineWidth&&(t-=this.axisConfig.axisLineWidth,this.showAxisLine=!0),this.axisConfig.showLabel){let n=this.getLabelDimension(),r=A*e.width;this.outerPadding=Math.min(n.width/2,r);let i=n.height;this.axisPosition===`bottom`&&this.normalizedLabelRotationInRad!==0&&(i=Math.max(i,Math.abs(Math.sin(this.normalizedLabelRotationInRad)*n.width)+Math.abs(Math.cos(this.normalizedLabelRotationInRad)*n.height))),i+=this.axisConfig.labelPadding*2,this.labelTextHeight=n.height,i<=t&&(t-=i,this.showLabel=!0)}if(this.axisConfig.showTick&&t>=this.axisConfig.tickLength&&(this.showTick=!0,t-=this.axisConfig.tickLength),this.axisConfig.showTitle&&this.title){let e=this.textDimensionCalculator.getMaxDimension([this.title],this.axisConfig.titleFontSize),n=e.height+this.axisConfig.titlePadding*2;this.titleTextHeight=e.height,n<=t&&(t-=n,this.showTitle=!0)}this.boundingRect.width=e.width,this.boundingRect.height=e.height-t}calculateSpaceIfDrawnVertical(e){let t=e.width;if(this.axisConfig.showAxisLine&&t>this.axisConfig.axisLineWidth&&(t-=this.axisConfig.axisLineWidth,this.showAxisLine=!0),this.axisConfig.showLabel){let n=this.getLabelDimension(),r=A*e.height;this.outerPadding=Math.min(n.height/2,r);let i=n.width+this.axisConfig.labelPadding*2;i<=t&&(t-=i,this.showLabel=!0)}if(this.axisConfig.showTick&&t>=this.axisConfig.tickLength&&(this.showTick=!0,t-=this.axisConfig.tickLength),this.axisConfig.showTitle&&this.title){let e=this.textDimensionCalculator.getMaxDimension([this.title],this.axisConfig.titleFontSize),n=e.height+this.axisConfig.titlePadding*2;this.titleTextHeight=e.height,n<=t&&(t-=n,this.showTitle=!0)}this.boundingRect.width=e.width-t,this.boundingRect.height=e.height}calculateSpace(e){return this.axisPosition===`left`||this.axisPosition===`right`?this.calculateSpaceIfDrawnVertical(e):this.calculateSpaceIfDrawnHorizontally(e),this.recalculateScale(),{width:this.boundingRect.width,height:this.boundingRect.height}}setBoundingBoxXY(e){this.boundingRect.x=e.x,this.boundingRect.y=e.y}calculateOffsetByRotation(e){let t=this.normalizedLabelRotationInRad;return t===0?0:Math.sin(t)*this.getLabelDimension()[e]/2}getDrawableElementsForLeftAxis(){let e=[];if(this.showAxisLine){let t=this.boundingRect.x+this.boundingRect.width-this.axisConfig.axisLineWidth/2;e.push({type:`path`,groupTexts:[`left-axis`,`axisl-line`],data:[{path:`M ${t},${this.boundingRect.y} L ${t},${this.boundingRect.y+this.boundingRect.height} `,strokeFill:this.axisThemeConfig.axisLineColor,strokeWidth:this.axisConfig.axisLineWidth}]})}if(this.showLabel&&e.push({type:`text`,groupTexts:[`left-axis`,`label`],data:this.getTickValues().map(e=>({text:e.toString(),x:this.boundingRect.x+this.boundingRect.width-(this.showLabel?this.axisConfig.labelPadding:0)-(this.showTick?this.axisConfig.tickLength:0)-(this.showAxisLine?this.axisConfig.axisLineWidth:0),y:this.getScaleValue(e),fill:this.axisThemeConfig.labelColor,fontSize:this.axisConfig.labelFontSize,rotation:0,verticalPos:`middle`,horizontalPos:`right`}))}),this.showTick){let t=this.boundingRect.x+this.boundingRect.width-(this.showAxisLine?this.axisConfig.axisLineWidth:0);e.push({type:`path`,groupTexts:[`left-axis`,`ticks`],data:this.getTickValues().map(e=>({path:`M ${t},${this.getScaleValue(e)} L ${t-this.axisConfig.tickLength},${this.getScaleValue(e)}`,strokeFill:this.axisThemeConfig.tickColor,strokeWidth:this.axisConfig.tickWidth}))})}return this.showTitle&&e.push({type:`text`,groupTexts:[`left-axis`,`title`],data:[{text:this.title,x:this.boundingRect.x+this.axisConfig.titlePadding,y:this.boundingRect.y+this.boundingRect.height/2,fill:this.axisThemeConfig.titleColor,fontSize:this.axisConfig.titleFontSize,rotation:270,verticalPos:`top`,horizontalPos:`center`}]}),e}getDrawableElementsForBottomAxis(){let e=[];if(this.showAxisLine){let t=this.boundingRect.y+this.axisConfig.axisLineWidth/2;e.push({type:`path`,groupTexts:[`bottom-axis`,`axis-line`],data:[{path:`M ${this.boundingRect.x},${t} L ${this.boundingRect.x+this.boundingRect.width},${t}`,strokeFill:this.axisThemeConfig.axisLineColor,strokeWidth:this.axisConfig.axisLineWidth}]})}if(this.showLabel&&e.push({type:`text`,groupTexts:[`bottom-axis`,`label`],data:this.getTickValues().map(e=>({text:e.toString(),x:this.getScaleValue(e)+this.calculateOffsetByRotation(`height`),y:this.boundingRect.y+this.axisConfig.labelPadding+(this.showTick?this.axisConfig.tickLength:0)+(this.showAxisLine?this.axisConfig.axisLineWidth:0)+Math.abs(this.calculateOffsetByRotation(`width`)),fill:this.axisThemeConfig.labelColor,fontSize:this.axisConfig.labelFontSize,rotation:this.normalizedLabelRotationInRad*180/Math.PI,verticalPos:`top`,horizontalPos:`center`}))}),this.showTick){let t=this.boundingRect.y+(this.showAxisLine?this.axisConfig.axisLineWidth:0);e.push({type:`path`,groupTexts:[`bottom-axis`,`ticks`],data:this.getTickValues().map(e=>({path:`M ${this.getScaleValue(e)},${t} L ${this.getScaleValue(e)},${t+this.axisConfig.tickLength}`,strokeFill:this.axisThemeConfig.tickColor,strokeWidth:this.axisConfig.tickWidth}))})}return this.showTitle&&e.push({type:`text`,groupTexts:[`bottom-axis`,`title`],data:[{text:this.title,x:this.range[0]+(this.range[1]-this.range[0])/2,y:this.boundingRect.y+this.boundingRect.height-this.axisConfig.titlePadding-this.titleTextHeight,fill:this.axisThemeConfig.titleColor,fontSize:this.axisConfig.titleFontSize,rotation:0,verticalPos:`top`,horizontalPos:`center`}]}),e}getDrawableElementsForTopAxis(){let e=[];if(this.showAxisLine){let t=this.boundingRect.y+this.boundingRect.height-this.axisConfig.axisLineWidth/2;e.push({type:`path`,groupTexts:[`top-axis`,`axis-line`],data:[{path:`M ${this.boundingRect.x},${t} L ${this.boundingRect.x+this.boundingRect.width},${t}`,strokeFill:this.axisThemeConfig.axisLineColor,strokeWidth:this.axisConfig.axisLineWidth}]})}if(this.showLabel&&e.push({type:`text`,groupTexts:[`top-axis`,`label`],data:this.getTickValues().map(e=>({text:e.toString(),x:this.getScaleValue(e),y:this.boundingRect.y+(this.showTitle?this.titleTextHeight+this.axisConfig.titlePadding*2:0)+this.axisConfig.labelPadding,fill:this.axisThemeConfig.labelColor,fontSize:this.axisConfig.labelFontSize,rotation:0,verticalPos:`top`,horizontalPos:`center`}))}),this.showTick){let t=this.boundingRect.y;e.push({type:`path`,groupTexts:[`top-axis`,`ticks`],data:this.getTickValues().map(e=>({path:`M ${this.getScaleValue(e)},${t+this.boundingRect.height-(this.showAxisLine?this.axisConfig.axisLineWidth:0)} L ${this.getScaleValue(e)},${t+this.boundingRect.height-this.axisConfig.tickLength-(this.showAxisLine?this.axisConfig.axisLineWidth:0)}`,strokeFill:this.axisThemeConfig.tickColor,strokeWidth:this.axisConfig.tickWidth}))})}return this.showTitle&&e.push({type:`text`,groupTexts:[`top-axis`,`title`],data:[{text:this.title,x:this.boundingRect.x+this.boundingRect.width/2,y:this.boundingRect.y+this.axisConfig.titlePadding,fill:this.axisThemeConfig.titleColor,fontSize:this.axisConfig.titleFontSize,rotation:0,verticalPos:`top`,horizontalPos:`center`}]}),e}getDrawableElements(){if(this.axisPosition===`left`)return this.getDrawableElementsForLeftAxis();if(this.axisPosition===`right`)throw Error(`Drawing of right axis is not implemented`);return this.axisPosition===`bottom`?this.getDrawableElementsForBottomAxis():this.axisPosition===`top`?this.getDrawableElementsForTopAxis():[]}},M=class extends j{static{f(this,`BandAxis`)}constructor(e,t,n,r,i){super(e,r,i,t),this.categories=n,this.scale=S().domain(this.categories).range(this.getRange())}setRange(e){super.setRange(e)}recalculateScale(){this.scale=S().domain(this.categories).range(this.getRange()).paddingInner(1).paddingOuter(0).align(.5),p.trace(`BandAxis axis final categories, range: `,this.categories,this.getRange())}getTickValues(){return this.categories}getScaleValue(e){return this.scale(e)??this.getRange()[0]}},ee=class extends j{static{f(this,`LinearAxis`)}constructor(e,t,n,r,i){super(e,r,i,t),this.domain=n,this.scale=m().domain(this.domain).range(this.getRange())}getTickValues(){return this.scale.ticks()}recalculateScale(){let e=[...this.domain];this.axisPosition===`left`&&e.reverse(),this.scale=m().domain(e).range(this.getRange())}getScaleValue(e){return this.scale(e)}};function N(e,t,n,r){let i=new O(r);return E(e)?new M(t,n,e.categories,e.title,i):new ee(t,n,[e.min,e.max],e.title,i)}f(N,`getAxis`);var te=class{constructor(e,t,n,r){this.textDimensionCalculator=e,this.chartConfig=t,this.chartData=n,this.chartThemeConfig=r,this.boundingRect={x:0,y:0,width:0,height:0},this.showChartTitle=!1}static{f(this,`ChartTitle`)}setBoundingBoxXY(e){this.boundingRect.x=e.x,this.boundingRect.y=e.y}calculateSpace(e){let t=this.textDimensionCalculator.getMaxDimension([this.chartData.title],this.chartConfig.titleFontSize),n=Math.max(t.width,e.width),r=t.height+2*this.chartConfig.titlePadding;return t.width<=n&&t.height<=r&&this.chartConfig.showTitle&&this.chartData.title&&(this.boundingRect.width=n,this.boundingRect.height=r,this.showChartTitle=!0),{width:this.boundingRect.width,height:this.boundingRect.height}}getDrawableElements(){let e=[];return this.showChartTitle&&e.push({groupTexts:[`chart-title`],type:`text`,data:[{fontSize:this.chartConfig.titleFontSize,text:this.chartData.title,verticalPos:`middle`,horizontalPos:`center`,x:this.boundingRect.x+this.boundingRect.width/2,y:this.boundingRect.y+this.boundingRect.height/2,fill:this.chartThemeConfig.titleColor,rotation:0}]}),e}};function P(e,t,n,r){return new te(new O(r),e,t,n)}f(P,`getChartTitleComponent`);var ne=.75,re=.5,ie=.35;function F(e){return{fontSize:e,markerSize:e*ne,markerSpacing:e*ie,itemSpacing:e*re}}f(F,`getLegendLayout`);var ae=class{constructor(e,t,n,r){this.textDimensionCalculator=e,this.chartConfig=t,this.chartData=n,this.chartThemeConfig=r,this.boundingRect={x:0,y:0,width:0,height:0},this.visiblePlots=[]}static{f(this,`ChartLegend`)}setBoundingBoxXY(e){this.boundingRect.x=e.x,this.boundingRect.y=e.y}calculateSpace(e){if(this.visiblePlots=this.chartConfig.showLegend?this.chartData.plots.filter(e=>e.title):[],this.visiblePlots.length===0)return this.boundingRect.width=0,this.boundingRect.height=0,{width:0,height:0};let{fontSize:t,markerSize:n,markerSpacing:r,itemSpacing:i}=F(this.chartConfig.legendFontSize),a=this.textDimensionCalculator.getMaxDimension(this.visiblePlots.map(e=>e.title),t),o=this.chartConfig.legendPadding*2+n+r+a.width,s=this.chartConfig.legendPadding*2+this.visiblePlots.length*t+(this.visiblePlots.length-1)*i;return o<=e.width&&s<=e.height?(this.boundingRect.width=o,this.boundingRect.height=s):(this.visiblePlots=[],this.boundingRect.width=0,this.boundingRect.height=0),{width:this.boundingRect.width,height:this.boundingRect.height}}getDrawableElements(){if(this.visiblePlots.length===0)return[];let{fontSize:e,markerSize:t,markerSpacing:n,itemSpacing:r}=F(this.chartConfig.legendFontSize),i=e+r,a=this.boundingRect.x+this.chartConfig.legendPadding,o=this.boundingRect.y+this.chartConfig.legendPadding,s=[],c=[];for(let[e,n]of this.visiblePlots.entries())if(T(n))s.push({x:a,y:o+e*i,width:t,height:t,fill:n.fill,strokeFill:n.fill,strokeWidth:0});else{let r=o+e*i+t/2;c.push({path:`M ${a},${r} L ${a+t},${r}`,strokeFill:n.strokeFill,strokeWidth:n.strokeWidth})}return[{groupTexts:[`legend`,`markers`],type:`rect`,data:s},{groupTexts:[`legend`,`markers`],type:`path`,data:c},{groupTexts:[`legend`,`label`],type:`text`,data:this.visiblePlots.map((r,s)=>({text:r.title,x:a+t+n,y:o+s*i+t/2,fill:this.chartThemeConfig.legendTextColor,fontSize:e,rotation:0,verticalPos:`middle`,horizontalPos:`left`}))}]}};function I(e,t,n,r){return new ae(new O(r),e,t,n)}f(I,`getChartLegendComponent`);var oe=class{constructor(e,t,n,r,i){this.plotData=e,this.xAxis=t,this.yAxis=n,this.orientation=r,this.plotIndex=i}static{f(this,`LinePlot`)}getDrawableElement(){let e=this.plotData.data.map(e=>[this.xAxis.getScaleValue(e[0]),this.yAxis.getScaleValue(e[1])]),t;if(t=this.orientation===`horizontal`?_().y(e=>e[0]).x(e=>e[1])(e):_().x(e=>e[0]).y(e=>e[1])(e),!t)return[];let n=[{groupTexts:[`plot`,`line-plot-${this.plotIndex}`],type:`path`,data:[{path:t,strokeFill:this.plotData.strokeFill,strokeWidth:this.plotData.strokeWidth}]}];if(this.plotData.pointLabels&&this.plotData.pointLabels.length>0){let t=[];for(let[n,[r,i]]of e.entries()){let e=this.plotData.pointLabels[n];e&&(this.orientation===`horizontal`?t.push({x:i+10,y:r,text:e,fill:this.plotData.strokeFill,verticalPos:`middle`,horizontalPos:`left`,fontSize:12,rotation:0}):t.push({x:r,y:i-10,text:e,fill:this.plotData.strokeFill,verticalPos:`middle`,horizontalPos:`center`,fontSize:12,rotation:0}))}t.length>0&&n.push({groupTexts:[`plot`,`line-plot-${this.plotIndex}`,`labels`],type:`text`,data:t})}return n}},se=class{constructor(e,t,n,r,i,a){this.barData=e,this.boundingRect=t,this.xAxis=n,this.yAxis=r,this.orientation=i,this.plotIndex=a}static{f(this,`BarPlot`)}getDrawableElement(){let e=this.barData.data.map(e=>[this.xAxis.getScaleValue(e[0]),this.yAxis.getScaleValue(e[1])]),t=Math.min(this.xAxis.getAxisOuterPadding()*2,this.xAxis.getTickDistance())*.95,n=t/2;return this.orientation===`horizontal`?[{groupTexts:[`plot`,`bar-plot-${this.plotIndex}`],type:`rect`,data:e.map(e=>({x:this.boundingRect.x,y:e[0]-n,height:t,width:e[1]-this.boundingRect.x,fill:this.barData.fill,strokeWidth:0,strokeFill:this.barData.fill}))}]:[{groupTexts:[`plot`,`bar-plot-${this.plotIndex}`],type:`rect`,data:e.map(e=>({x:e[0]-n,y:e[1],width:t,height:this.boundingRect.y+this.boundingRect.height-e[1],fill:this.barData.fill,strokeWidth:0,strokeFill:this.barData.fill}))}]}},ce=class{constructor(e,t,n){this.chartConfig=e,this.chartData=t,this.chartThemeConfig=n,this.boundingRect={x:0,y:0,width:0,height:0}}static{f(this,`BasePlot`)}setAxes(e,t){this.xAxis=e,this.yAxis=t}setBoundingBoxXY(e){this.boundingRect.x=e.x,this.boundingRect.y=e.y}calculateSpace(e){return this.boundingRect.width=e.width,this.boundingRect.height=e.height,{width:this.boundingRect.width,height:this.boundingRect.height}}getDrawableElements(){if(!(this.xAxis&&this.yAxis))throw Error(`Axes must be passed to render Plots`);let e=[];for(let[t,n]of this.chartData.plots.entries())switch(n.type){case`line`:{let r=new oe(n,this.xAxis,this.yAxis,this.chartConfig.chartOrientation,t);e.push(...r.getDrawableElement())}break;case`bar`:{let r=new se(n,this.boundingRect,this.xAxis,this.yAxis,this.chartConfig.chartOrientation,t);e.push(...r.getDrawableElement())}}return e}};function le(e,t,n){return new ce(e,t,n)}f(le,`getPlotComponent`);var ue=class{constructor(e,t,n,r){this.chartConfig=e,this.chartData=t,this.componentStore={title:P(e,t,n,r),plot:le(e,t,n),legend:I(e,t,n,r),xAxis:N(t.xAxis,e.xAxis,{titleColor:n.xAxisTitleColor,labelColor:n.xAxisLabelColor,tickColor:n.xAxisTickColor,axisLineColor:n.xAxisLineColor},r),yAxis:N(t.yAxis,e.yAxis,{titleColor:n.yAxisTitleColor,labelColor:n.yAxisLabelColor,tickColor:n.yAxisTickColor,axisLineColor:n.yAxisLineColor},r)}}static{f(this,`Orchestrator`)}calculateVerticalSpace(){let e=this.chartConfig.width,t=this.chartConfig.height,n=0,r=0,i={width:0,height:0},a=Math.floor(e*this.chartConfig.plotReservedSpacePercent/100),o=Math.floor(t*this.chartConfig.plotReservedSpacePercent/100),s=this.componentStore.plot.calculateSpace({width:a,height:o});e-=s.width,t-=s.height,s=this.componentStore.title.calculateSpace({width:this.chartConfig.width,height:t}),r=s.height,t-=s.height,this.componentStore.xAxis.setAxisPosition(`bottom`),s=this.componentStore.xAxis.calculateSpace({width:e,height:t}),t-=s.height,this.componentStore.yAxis.setAxisPosition(`left`),s=this.componentStore.yAxis.calculateSpace({width:e,height:t}),n=s.width,e-=s.width,i=this.componentStore.legend.calculateSpace({width:e,height:o}),e-=i.width,e>0&&(a+=e,e=0),t>0&&(o+=t,t=0),this.componentStore.plot.calculateSpace({width:a,height:o}),this.componentStore.plot.setBoundingBoxXY({x:n,y:r}),this.componentStore.legend.setBoundingBoxXY({x:n+a,y:r+Math.max((o-i.height)/2,0)}),this.componentStore.xAxis.setRange([n,n+a]),this.componentStore.xAxis.setBoundingBoxXY({x:n,y:r+o}),this.componentStore.yAxis.setRange([r,r+o]),this.componentStore.yAxis.setBoundingBoxXY({x:0,y:r}),this.chartData.plots.some(e=>T(e))&&this.componentStore.xAxis.recalculateOuterPaddingToDrawBar()}calculateHorizontalSpace(){let e=this.chartConfig.width,t=this.chartConfig.height,n=0,r=0,i=0,a={width:0,height:0},o=Math.floor(e*this.chartConfig.plotReservedSpacePercent/100),s=Math.floor(t*this.chartConfig.plotReservedSpacePercent/100),c=this.componentStore.plot.calculateSpace({width:o,height:s});e-=c.width,t-=c.height,c=this.componentStore.title.calculateSpace({width:this.chartConfig.width,height:t}),n=c.height,t-=c.height,this.componentStore.xAxis.setAxisPosition(`left`),c=this.componentStore.xAxis.calculateSpace({width:e,height:t}),e-=c.width,r=c.width,this.componentStore.yAxis.setAxisPosition(`top`),c=this.componentStore.yAxis.calculateSpace({width:e,height:t}),t-=c.height,i=n+c.height,a=this.componentStore.legend.calculateSpace({width:e,height:s}),e-=a.width,e>0&&(o+=e,e=0),t>0&&(s+=t,t=0),this.componentStore.plot.calculateSpace({width:o,height:s}),this.componentStore.plot.setBoundingBoxXY({x:r,y:i}),this.componentStore.legend.setBoundingBoxXY({x:r+o,y:i+Math.max((s-a.height)/2,0)}),this.componentStore.yAxis.setRange([r,r+o]),this.componentStore.yAxis.setBoundingBoxXY({x:r,y:n}),this.componentStore.xAxis.setRange([i,i+s]),this.componentStore.xAxis.setBoundingBoxXY({x:0,y:i}),this.chartData.plots.some(e=>T(e))&&this.componentStore.xAxis.recalculateOuterPaddingToDrawBar()}calculateSpace(){this.chartConfig.chartOrientation===`horizontal`?this.calculateHorizontalSpace():this.calculateVerticalSpace()}getDrawableElement(){this.calculateSpace();let e=[];this.componentStore.plot.setAxes(this.componentStore.xAxis,this.componentStore.yAxis);for(let t of Object.values(this.componentStore))e.push(...t.getDrawableElements());return e}},de=class{static{f(this,`XYChartBuilder`)}static build(e,t,n,r){return new ue(e,t,n,r).getDrawableElement()}},L=0,R,z=K(),B=G(),V=q(),H=B.plotColorPalette.split(`,`).map(e=>e.trim()),U=!1,W=!1;function G(){let t=e(),n=a();return g(t.xyChart,n.themeVariables.xyChart)}f(G,`getChartDefaultThemeConfig`);function K(){let e=a();return g(s.xyChart,e.xyChart)}f(K,`getChartDefaultConfig`);function q(){return{yAxis:{type:`linear`,title:``,min:1/0,max:-1/0},xAxis:{type:`band`,title:``,categories:[]},title:``,plots:[]}}f(q,`getChartDefaultData`);function J(e){let t=a();return d(e.trim(),t)}f(J,`textSanitizer`);function Y(e){R=e}f(Y,`setTmpSVGG`);function fe(e){e===`horizontal`?z.chartOrientation=`horizontal`:z.chartOrientation=`vertical`}f(fe,`setOrientation`);function pe(e){V.xAxis.title=J(e.text)}f(pe,`setXAxisTitle`);function X(e,t){V.xAxis={type:`linear`,title:V.xAxis.title,min:e,max:t},U=!0}f(X,`setXAxisRangeData`);function me(e){V.xAxis={type:`band`,title:V.xAxis.title,categories:e.map(e=>J(e.text))},U=!0}f(me,`setXAxisBand`);function he(e){V.yAxis.title=J(e.text)}f(he,`setYAxisTitle`);function Z(e,t){V.yAxis={type:`linear`,title:V.yAxis.title,min:e,max:t},W=!0}f(Z,`setYAxisRangeData`);function ge(e){let t=Math.min(...e),n=Math.max(...e),r=D(V.yAxis)?V.yAxis.min:1/0,i=D(V.yAxis)?V.yAxis.max:-1/0;V.yAxis={type:`linear`,title:V.yAxis.title,min:Math.min(r,t),max:Math.max(i,n)}}f(ge,`setYAxisRangeFromPlotData`);function Q(e){let t=[];if(e.length===0)return t;if(!U){let t=D(V.xAxis)?V.xAxis.min:1/0,n=D(V.xAxis)?V.xAxis.max:-1/0;X(Math.min(t,1),Math.max(n,e.length))}if(E(V.xAxis)&&e.length>V.xAxis.categories.length&&(e=e.slice(0,V.xAxis.categories.length)),W||ge(e),E(V.xAxis)&&(t=V.xAxis.categories.map((t,n)=>[t,e[n]])),D(V.xAxis)){let n=V.xAxis.min,r=V.xAxis.max;if(e.length===1)t=[[`${n}`,e[0]]];else{let i=(r-n)/(e.length-1);t=e.map((e,t)=>[`${n+t*i}`,e])}}return t}f(Q,`transformDataWithoutCategory`);function $(e){return H[e===0?0:e%H.length]}f($,`getPlotColorFromPalette`);function _e(e,t){let n=t.map(e=>e.value),r=t.map(e=>e.label?J(e.label):``),i=Q(n),a=r.some(e=>e!==``);V.plots.push({type:`line`,title:J(e.text),strokeFill:$(L),strokeWidth:2,data:i,...a?{pointLabels:r}:{}}),L++}f(_e,`setLineData`);function ve(e,t){let n=Q(t.map(e=>e.value));V.plots.push({type:`bar`,title:J(e.text),fill:$(L),data:n}),L++}f(ve,`setBarData`);function ye(){if(V.plots.length===0)throw Error(`No Plot to render, please provide a plot with some data`);return V.title=l(),de.build(z,V,B,R)}f(ye,`getDrawableElem`);function be(){return B}f(be,`getChartThemeConfig`);function xe(){return z}f(xe,`getChartConfig`);function Se(){return V}f(Se,`getXYChartData`);var Ce={parser:w,db:{getDrawableElem:ye,clear:f(function(){i(),L=0,z=K(),V=q(),B=G(),H=B.plotColorPalette.split(`,`).map(e=>e.trim()),U=!1,W=!1},`clear`),setAccTitle:r,getAccTitle:u,setDiagramTitle:n,getDiagramTitle:l,getAccDescription:c,setAccDescription:t,setOrientation:fe,setXAxisTitle:pe,setXAxisRangeData:X,setXAxisBand:me,setYAxisTitle:he,setYAxisRangeData:Z,setLineData:_e,setBarData:ve,setTmpSVGG:Y,getChartThemeConfig:be,getChartConfig:xe,getXYChartData:Se},renderer:{draw:f((e,t,n,r)=>{let i=r.db,a=i.getChartThemeConfig(),s=i.getChartConfig(),c=i.getXYChartData().plots[0].data.map(e=>e[1]);function l(e){return e===`top`?`text-before-edge`:`middle`}f(l,`getDominantBaseLine`);function u(e){return e===`left`?`start`:e===`right`?`end`:`middle`}f(u,`getTextAnchor`);function d(e){return`translate(${e.x}, ${e.y}) rotate(${e.rotation||0})`}f(d,`getTextTransformation`),p.debug(`Rendering xychart chart
7
+ `+e);let m=x(t),h=m.append(`g`).attr(`class`,`main`),g=h.append(`rect`).attr(`width`,s.width).attr(`height`,s.height).attr(`class`,`background`);o(m,s.height,s.width,!0),m.attr(`viewBox`,`0 0 ${s.width} ${s.height}`),g.attr(`fill`,a.backgroundColor),i.setTmpSVGG(m.append(`g`).attr(`class`,`mermaid-tmp-group`));let _=i.getDrawableElem(),v={};function y(e){let t=h,n=``;for(let[r]of e.entries()){let i=h;r>0&&v[n]&&(i=v[n]),n+=e[r],t=v[n],t||=v[n]=i.append(`g`).attr(`class`,e[r])}return t}f(y,`getGroup`);for(let e of _){if(e.data.length===0)continue;let t=y(e.groupTexts);switch(e.type){case`rect`:if(t.selectAll(`rect`).data(e.data).enter().append(`rect`).attr(`x`,e=>e.x).attr(`y`,e=>e.y).attr(`width`,e=>e.width).attr(`height`,e=>e.height).attr(`fill`,e=>e.fill).attr(`stroke`,e=>e.strokeFill).attr(`stroke-width`,e=>e.strokeWidth),s.showDataLabel){let n=s.showDataLabelOutsideBar;if(s.chartOrientation===`horizontal`){let r=function(e,t){let{data:n,label:r}=e;return t*r.length*i<=n.width-o};f(r,`fitsHorizontally`);let i=.7,o=10,s=e.data.map((e,t)=>({data:e,label:c[t].toString()})).filter(e=>e.data.width>0&&e.data.height>0),l=s.map(e=>{let{data:t}=e,n=t.height*.7;for(;!r(e,n)&&n>0;)--n;return n}),u=Math.floor(Math.min(...l)),d=f(e=>n?e.data.x+e.data.width+10:e.data.x+e.data.width-10,`determineLabelXPosition`);t.selectAll(`text`).data(s).enter().append(`text`).attr(`x`,d).attr(`y`,e=>e.data.y+e.data.height/2).attr(`text-anchor`,n?`start`:`end`).attr(`dominant-baseline`,`middle`).attr(`fill`,a.dataLabelColor).attr(`font-size`,`${u}px`).text(e=>e.label)}else{let r=function(e,t,n){let{data:r,label:i}=e,a=t*i.length*.7,o=r.x+r.width/2,s=o-a/2,c=o+a/2,l=s>=r.x&&c<=r.x+r.width,u=r.y+n+t<=r.y+r.height;return l&&u};f(r,`fitsInBar`);let i=e.data.map((e,t)=>({data:e,label:c[t].toString()})).filter(e=>e.data.width>0&&e.data.height>0),o=i.map(e=>{let{data:t,label:n}=e,i=t.width/(n.length*.7);for(;!r(e,i,10)&&i>0;)--i;return i}),s=Math.floor(Math.min(...o)),l=f(e=>n?e.data.y-10:e.data.y+10,`determineLabelYPosition`);t.selectAll(`text`).data(i).enter().append(`text`).attr(`x`,e=>e.data.x+e.data.width/2).attr(`y`,l).attr(`text-anchor`,`middle`).attr(`dominant-baseline`,n?`auto`:`hanging`).attr(`fill`,a.dataLabelColor).attr(`font-size`,`${s}px`).text(e=>e.label)}}break;case`text`:t.selectAll(`text`).data(e.data).enter().append(`text`).attr(`x`,0).attr(`y`,0).attr(`fill`,e=>e.fill).attr(`font-size`,e=>e.fontSize).attr(`dominant-baseline`,e=>l(e.verticalPos)).attr(`text-anchor`,e=>u(e.horizontalPos)).attr(`transform`,e=>d(e)).text(e=>e.text);break;case`path`:t.selectAll(`path`).data(e.data).enter().append(`path`).attr(`d`,e=>e.path).attr(`fill`,e=>e.fill?e.fill:`none`).attr(`stroke`,e=>e.strokeFill).attr(`stroke-width`,e=>e.strokeWidth)}}},`draw`)}};export{Ce as diagram};
@@ -15,36 +15,29 @@
15
15
  name="msapplication-TileImage"
16
16
  content="/cropped-favicon-270x270.png"
17
17
  />
18
- <script type="module" crossorigin src="/assets/index-H1CkT-JT.js"></script>
19
- <link rel="modulepreload" crossorigin href="/assets/dist-BzwexiH1.js">
18
+ <script type="module" crossorigin src="/assets/index-D3HS7YxF.js"></script>
19
+ <link rel="modulepreload" crossorigin href="/assets/rolldown-runtime-B0Z9INg1.js">
20
20
  <link rel="modulepreload" crossorigin href="/assets/chunk-Y2CYZVJY-DsF7k-Jl.js">
21
- <link rel="modulepreload" crossorigin href="/assets/src-DOh7_en_.js">
22
- <link rel="modulepreload" crossorigin href="/assets/chunk-WYO6CB5R-BQoO62-B.js">
21
+ <link rel="modulepreload" crossorigin href="/assets/src-an_qrnIj.js">
22
+ <link rel="modulepreload" crossorigin href="/assets/chunk-DU6HZSFF-iJGdiRt7.js">
23
23
  <link rel="modulepreload" crossorigin href="/assets/defaultLocale-CNPGWpMu.js">
24
24
  <link rel="modulepreload" crossorigin href="/assets/init-ZlXS9mIS.js">
25
- <link rel="modulepreload" crossorigin href="/assets/linear-BWTvbP1l.js">
26
- <link rel="modulepreload" crossorigin href="/assets/ordinal-BdBDtYTt.js">
27
- <link rel="modulepreload" crossorigin href="/assets/time-BM2d9MsQ.js">
28
- <link rel="modulepreload" crossorigin href="/assets/range-EplFIxc7.js">
29
- <link rel="modulepreload" crossorigin href="/assets/path-HTXttWil.js">
30
- <link rel="modulepreload" crossorigin href="/assets/treemap-BfjIY-m6.js">
31
- <link rel="modulepreload" crossorigin href="/assets/colors-Cg5Vh3br.js">
32
- <link rel="modulepreload" crossorigin href="/assets/arc-DrR4k_H-.js">
25
+ <link rel="modulepreload" crossorigin href="/assets/linear-DDBi9FwZ.js">
26
+ <link rel="modulepreload" crossorigin href="/assets/path-B_0haWDX.js">
27
+ <link rel="modulepreload" crossorigin href="/assets/dist-BDCdLWk4.js">
33
28
  <link rel="modulepreload" crossorigin href="/assets/array-BifhSqXX.js">
34
- <link rel="modulepreload" crossorigin href="/assets/chunk-ICXQ74PX-Bb8zaHde.js">
35
- <link rel="modulepreload" crossorigin href="/assets/line-C8Sfsgt8.js">
36
- <link rel="modulepreload" crossorigin href="/assets/chunk-VAUOI2AC-C-GBw18h.js">
37
- <link rel="modulepreload" crossorigin href="/assets/chunk-ZIRB5QZD-BpeS1aZ7.js">
38
- <link rel="modulepreload" crossorigin href="/assets/chunk-C7G6YPKG-BN-cNjoj.js">
39
- <link rel="modulepreload" crossorigin href="/assets/chunk-OGEWGWER-BVIFy9xz.js">
40
- <link rel="modulepreload" crossorigin href="/assets/chunk-HOUHSVGY-L35GPy9G.js">
41
- <link rel="modulepreload" crossorigin href="/assets/chunk-Q4XR5HBZ-BuKFRUzR.js">
42
- <link rel="modulepreload" crossorigin href="/assets/rough.esm-By172zw-.js">
43
- <link rel="modulepreload" crossorigin href="/assets/chunk-ZGVPDNZ5-hpz2Ryq5.js">
44
- <link rel="modulepreload" crossorigin href="/assets/chunk-7BUUIJ7U-Bb538aSH.js">
45
- <link rel="modulepreload" crossorigin href="/assets/chunk-52WLFC77-N5YugKaZ.js">
46
- <link rel="modulepreload" crossorigin href="/assets/chunk-FWX5IMBZ-BF_P2-Do.js">
47
- <link rel="stylesheet" crossorigin href="/assets/index-COSSLZqt.css">
29
+ <link rel="modulepreload" crossorigin href="/assets/chunk-75Z2AOVW-CKqXRGJV.js">
30
+ <link rel="modulepreload" crossorigin href="/assets/line-Dr41HTk1.js">
31
+ <link rel="modulepreload" crossorigin href="/assets/chunk-P2QGCYS3-D3J5AcHg.js">
32
+ <link rel="modulepreload" crossorigin href="/assets/chunk-PWAF6VOD-D9cdEIZp.js">
33
+ <link rel="modulepreload" crossorigin href="/assets/chunk-GMAD6QVW-DxHVEaGj.js">
34
+ <link rel="modulepreload" crossorigin href="/assets/rough.esm-Dy-Kn_BL.js">
35
+ <link rel="modulepreload" crossorigin href="/assets/chunk-4HAMMTFA-DjjgrBsB.js">
36
+ <link rel="modulepreload" crossorigin href="/assets/chunk-GVQU2GXP-AMxD4_Ta.js">
37
+ <link rel="modulepreload" crossorigin href="/assets/chunk-L3NEJ4N5-BK3KAKMe.js">
38
+ <link rel="modulepreload" crossorigin href="/assets/chunk-OSK3NFVY-B8MdrI_M.js">
39
+ <link rel="modulepreload" crossorigin href="/assets/graphlib-DS17s2tU.js">
40
+ <link rel="stylesheet" crossorigin href="/assets/index-Sv3WxZ_8.css">
48
41
  </head>
49
42
  <body>
50
43
  <div id="root"></div>
@@ -0,0 +1 @@
1
+ {"bomFormat":"CycloneDX","specVersion":"1.6","components":[{"type":"library","name":"react","version":"19.3.0","purl":"pkg:npm/react@19.3.0"},{"type":"library","name":"scheduler","version":"0.28.0","purl":"pkg:npm/scheduler@0.28.0"},{"type":"library","name":"react-dom","version":"19.3.0","purl":"pkg:npm/react-dom@19.3.0"},{"type":"library","name":"react-router","version":"8.4.0","purl":"pkg:npm/react-router@8.4.0"},{"type":"library","name":"@mui/joy","version":"5.0.0-beta.52","purl":"pkg:npm/%40mui/joy@5.0.0-beta.52"},{"type":"library","name":"@mui/utils","version":"5.17.1","purl":"pkg:npm/%40mui/utils@5.17.1"},{"type":"library","name":"@babel/runtime","version":"7.29.7","purl":"pkg:npm/%40babel/runtime@7.29.7"},{"type":"library","name":"@emotion/sheet","version":"1.4.0","purl":"pkg:npm/%40emotion/sheet@1.4.0"},{"type":"library","name":"stylis","version":"4.2.0","purl":"pkg:npm/stylis@4.2.0"},{"type":"library","name":"@emotion/memoize","version":"0.9.0","purl":"pkg:npm/%40emotion/memoize@0.9.0"},{"type":"library","name":"@emotion/cache","version":"11.14.0","purl":"pkg:npm/%40emotion/cache@11.14.0"},{"type":"library","name":"react-is","version":"16.13.1","purl":"pkg:npm/react-is@16.13.1"},{"type":"library","name":"hoist-non-react-statics","version":"3.3.2","purl":"pkg:npm/hoist-non-react-statics@3.3.2"},{"type":"library","name":"@emotion/utils","version":"1.4.2","purl":"pkg:npm/%40emotion/utils@1.4.2"},{"type":"library","name":"@emotion/hash","version":"0.9.2","purl":"pkg:npm/%40emotion/hash@0.9.2"},{"type":"library","name":"@emotion/unitless","version":"0.10.0","purl":"pkg:npm/%40emotion/unitless@0.10.0"},{"type":"library","name":"@emotion/serialize","version":"1.3.3","purl":"pkg:npm/%40emotion/serialize@1.3.3"},{"type":"library","name":"@emotion/use-insertion-effect-with-fallbacks","version":"1.2.0","purl":"pkg:npm/%40emotion/use-insertion-effect-with-fallbacks@1.2.0"},{"type":"library","name":"@emotion/react","version":"11.14.0","purl":"pkg:npm/%40emotion/react@11.14.0"},{"type":"library","name":"@emotion/is-prop-valid","version":"1.4.0","purl":"pkg:npm/%40emotion/is-prop-valid@1.4.0"},{"type":"library","name":"@emotion/styled","version":"11.14.1","purl":"pkg:npm/%40emotion/styled@11.14.1"},{"type":"library","name":"@mui/styled-engine","version":"5.18.0","purl":"pkg:npm/%40mui/styled-engine@5.18.0"},{"type":"library","name":"@mui/system","version":"5.18.0","purl":"pkg:npm/%40mui/system@5.18.0"},{"type":"library","name":"clsx","version":"2.1.1","purl":"pkg:npm/clsx@2.1.1"},{"type":"library","name":"@mui/private-theming","version":"5.17.1","purl":"pkg:npm/%40mui/private-theming@5.17.1"},{"type":"library","name":"@mui/base","version":"5.0.0-beta.40-1","purl":"pkg:npm/%40mui/base@5.0.0-beta.40-1"},{"type":"library","name":"@popperjs/core","version":"2.11.8","purl":"pkg:npm/%40popperjs/core@2.11.8"},{"type":"library","name":"use-sync-external-store","version":"1.6.0","purl":"pkg:npm/use-sync-external-store@1.6.0"},{"type":"library","name":"dequal","version":"2.0.3","purl":"pkg:npm/dequal@2.0.3"},{"type":"library","name":"swr","version":"2.5.1","purl":"pkg:npm/swr@2.5.1"},{"type":"library","name":"react-hook-form","version":"7.89.0","purl":"pkg:npm/react-hook-form@7.89.0"},{"type":"library","name":"@cyberismo/data-handler","version":"1.2.0","purl":"pkg:npm/%40cyberismo/data-handler@1.2.0"},{"type":"library","name":"redux","version":"5.0.1","purl":"pkg:npm/redux@5.0.1"},{"type":"library","name":"immer","version":"11.1.8","purl":"pkg:npm/immer@11.1.8"},{"type":"library","name":"redux-thunk","version":"3.1.0","purl":"pkg:npm/redux-thunk@3.1.0"},{"type":"library","name":"@reduxjs/toolkit","version":"2.12.0","purl":"pkg:npm/%40reduxjs/toolkit@2.12.0"},{"type":"library","name":"@lezer/common","version":"1.5.2","purl":"pkg:npm/%40lezer/common@1.5.2"},{"type":"library","name":"@lezer/highlight","version":"1.2.3","purl":"pkg:npm/%40lezer/highlight@1.2.3"},{"type":"library","name":"@marijn/find-cluster-break","version":"1.0.3","purl":"pkg:npm/%40marijn/find-cluster-break@1.0.3"},{"type":"library","name":"@codemirror/state","version":"6.7.6","purl":"pkg:npm/%40codemirror/state@6.7.6"},{"type":"library","name":"style-mod","version":"4.1.3","purl":"pkg:npm/style-mod@4.1.3"},{"type":"library","name":"w3c-keyname","version":"2.2.8","purl":"pkg:npm/w3c-keyname@2.2.8"},{"type":"library","name":"crelt","version":"1.0.7","purl":"pkg:npm/crelt@1.0.7"},{"type":"library","name":"@codemirror/view","version":"6.43.13","purl":"pkg:npm/%40codemirror/view@6.43.13"},{"type":"library","name":"@codemirror/language","version":"6.12.4","purl":"pkg:npm/%40codemirror/language@6.12.4"},{"type":"library","name":"@uiw/codemirror-themes","version":"4.25.12","purl":"pkg:npm/%40uiw/codemirror-themes@4.25.12"},{"type":"library","name":"@uiw/codemirror-theme-vscode","version":"4.25.12","purl":"pkg:npm/%40uiw/codemirror-theme-vscode@4.25.12"},{"type":"library","name":"@uiw/codemirror-theme-github","version":"4.25.12","purl":"pkg:npm/%40uiw/codemirror-theme-github@4.25.12"},{"type":"library","name":"redux-persist","version":"6.0.0","purl":"pkg:npm/redux-persist@6.0.0"},{"type":"library","name":"@mui/material","version":"9.4.0","purl":"pkg:npm/%40mui/material@9.4.0"},{"type":"library","name":"react-redux","version":"9.3.0","purl":"pkg:npm/react-redux@9.3.0"},{"type":"library","name":"i18next","version":"26.4.2","purl":"pkg:npm/i18next@26.4.2"},{"type":"library","name":"html-parse-stringify","version":"4.0.1","purl":"pkg:npm/html-parse-stringify@4.0.1"},{"type":"library","name":"react-i18next","version":"17.0.15","purl":"pkg:npm/react-i18next@17.0.15"},{"type":"library","name":"@mui/icons-material","version":"9.4.0","purl":"pkg:npm/%40mui/icons-material@9.4.0"},{"type":"library","name":"@asciidoctor/core","version":"4.1.1","purl":"pkg:npm/%40asciidoctor/core@4.1.1"},{"type":"library","name":"date-fns","version":"4.4.0","purl":"pkg:npm/date-fns@4.4.0"},{"type":"library","name":"react-arborist","version":"3.16.0","purl":"pkg:npm/react-arborist@3.16.0"},{"type":"library","name":"memoize-one","version":"5.2.1","purl":"pkg:npm/memoize-one@5.2.1"},{"type":"library","name":"react-window","version":"1.8.11","purl":"pkg:npm/react-window@1.8.11"},{"type":"library","name":"react-dnd","version":"14.0.5","purl":"pkg:npm/react-dnd@14.0.5"},{"type":"library","name":"dnd-core","version":"14.0.1","purl":"pkg:npm/dnd-core@14.0.1"},{"type":"library","name":"@react-dnd/invariant","version":"2.0.0","purl":"pkg:npm/%40react-dnd/invariant@2.0.0"},{"type":"library","name":"@react-dnd/asap","version":"4.0.1","purl":"pkg:npm/%40react-dnd/asap@4.0.1"},{"type":"library","name":"@react-dnd/shallowequal","version":"2.0.0","purl":"pkg:npm/%40react-dnd/shallowequal@2.0.0"},{"type":"library","name":"fast-deep-equal","version":"3.1.3","purl":"pkg:npm/fast-deep-equal@3.1.3"},{"type":"library","name":"react-dnd-html5-backend","version":"14.1.0","purl":"pkg:npm/react-dnd-html5-backend@14.1.0"},{"type":"library","name":"semver","version":"7.8.5","purl":"pkg:npm/semver@7.8.5"},{"type":"library","name":"react-resizable-panels","version":"4.14.2","purl":"pkg:npm/react-resizable-panels@4.14.2"},{"type":"library","name":"node-html-parser","version":"9.0.4","purl":"pkg:npm/node-html-parser@9.0.4"},{"type":"library","name":"html-dom-parser","version":"8.0.2","purl":"pkg:npm/html-dom-parser@8.0.2"},{"type":"library","name":"react-property","version":"2.0.2","purl":"pkg:npm/react-property@2.0.2"},{"type":"library","name":"inline-style-parser","version":"0.2.9","purl":"pkg:npm/inline-style-parser@0.2.9"},{"type":"library","name":"style-to-object","version":"2.0.2","purl":"pkg:npm/style-to-object@2.0.2"},{"type":"library","name":"style-to-js","version":"2.0.2","purl":"pkg:npm/style-to-js@2.0.2"},{"type":"library","name":"html-react-parser","version":"6.1.8","purl":"pkg:npm/html-react-parser@6.1.8"},{"type":"library","name":"domelementtype","version":"3.0.0","purl":"pkg:npm/domelementtype@3.0.0"},{"type":"library","name":"domhandler","version":"6.0.1","purl":"pkg:npm/domhandler@6.0.1"},{"type":"library","name":"d3-array","version":"3.2.4","purl":"pkg:npm/d3-array@3.2.4"},{"type":"library","name":"internmap","version":"2.0.3","purl":"pkg:npm/internmap@2.0.3"},{"type":"library","name":"d3-color","version":"3.1.0","purl":"pkg:npm/d3-color@3.1.0"},{"type":"library","name":"d3-interpolate","version":"3.0.1","purl":"pkg:npm/d3-interpolate@3.0.1"},{"type":"library","name":"d3-timer","version":"3.0.1","purl":"pkg:npm/d3-timer@3.0.1"},{"type":"library","name":"d3-ease","version":"3.0.1","purl":"pkg:npm/d3-ease@3.0.1"},{"type":"library","name":"robust-predicates","version":"3.0.3","purl":"pkg:npm/robust-predicates@3.0.3"},{"type":"library","name":"delaunator","version":"5.1.0","purl":"pkg:npm/delaunator@5.1.0"},{"type":"library","name":"d3-delaunay","version":"6.0.4","purl":"pkg:npm/d3-delaunay@6.0.4"},{"type":"library","name":"d3-dsv","version":"3.0.1","purl":"pkg:npm/d3-dsv@3.0.1"},{"type":"library","name":"d3-force","version":"3.0.0","purl":"pkg:npm/d3-force@3.0.0"},{"type":"library","name":"d3-quadtree","version":"3.0.1","purl":"pkg:npm/d3-quadtree@3.0.1"},{"type":"library","name":"d3-geo","version":"3.1.1","purl":"pkg:npm/d3-geo@3.1.1"},{"type":"library","name":"d3-hierarchy","version":"3.1.2","purl":"pkg:npm/d3-hierarchy@3.1.2"},{"type":"library","name":"d3-scale","version":"4.0.2","purl":"pkg:npm/d3-scale@4.0.2"},{"type":"library","name":"d3-time","version":"3.1.0","purl":"pkg:npm/d3-time@3.1.0"},{"type":"library","name":"d3-time-format","version":"4.1.0","purl":"pkg:npm/d3-time-format@4.1.0"},{"type":"library","name":"d3-scale-chromatic","version":"3.1.0","purl":"pkg:npm/d3-scale-chromatic@3.1.0"},{"type":"library","name":"d3-shape","version":"3.2.0","purl":"pkg:npm/d3-shape@3.2.0"},{"type":"library","name":"mermaid","version":"11.17.2","purl":"pkg:npm/mermaid@11.17.2"},{"type":"library","name":"es-toolkit","version":"1.52.0","purl":"pkg:npm/es-toolkit@1.52.0"},{"type":"library","name":"json-stringify-pretty-compact","version":"4.0.0","purl":"pkg:npm/json-stringify-pretty-compact@4.0.0"},{"type":"library","name":"vega-util","version":"2.1.3","purl":"pkg:npm/vega-util@2.1.3"},{"type":"library","name":"topojson-client","version":"3.1.0","purl":"pkg:npm/topojson-client@3.1.0"},{"type":"library","name":"vega-time","version":"3.3.0","purl":"pkg:npm/vega-time@3.3.0"},{"type":"library","name":"vega-format","version":"2.1.3","purl":"pkg:npm/vega-format@2.1.3"},{"type":"library","name":"vega-loader","version":"5.1.3","purl":"pkg:npm/vega-loader@5.1.3"},{"type":"library","name":"vega-dataflow","version":"6.1.3","purl":"pkg:npm/vega-dataflow@6.1.3"},{"type":"library","name":"vega-statistics","version":"2.0.0","purl":"pkg:npm/vega-statistics@2.0.0"},{"type":"library","name":"vega-transforms","version":"5.2.2","purl":"pkg:npm/vega-transforms@5.2.2"},{"type":"library","name":"vega-canvas","version":"2.0.0","purl":"pkg:npm/vega-canvas@2.0.0"},{"type":"library","name":"vega-scale","version":"8.1.3","purl":"pkg:npm/vega-scale@8.1.3"},{"type":"library","name":"vega-scenegraph","version":"5.3.0","purl":"pkg:npm/vega-scenegraph@5.3.0"},{"type":"library","name":"vega-view-transforms","version":"5.2.2","purl":"pkg:npm/vega-view-transforms@5.2.2"},{"type":"library","name":"vega-encode","version":"5.2.2","purl":"pkg:npm/vega-encode@5.2.2"},{"type":"library","name":"d3-geo-projection","version":"4.0.0","purl":"pkg:npm/d3-geo-projection@4.0.0"},{"type":"library","name":"vega-projection","version":"2.1.3","purl":"pkg:npm/vega-projection@2.1.3"},{"type":"library","name":"vega-geo","version":"5.1.3","purl":"pkg:npm/vega-geo@5.1.3"},{"type":"library","name":"vega-force","version":"5.1.3","purl":"pkg:npm/vega-force@5.1.3"},{"type":"library","name":"vega-hierarchy","version":"5.1.3","purl":"pkg:npm/vega-hierarchy@5.1.3"},{"type":"library","name":"vega-label","version":"2.1.3","purl":"pkg:npm/vega-label@2.1.3"},{"type":"library","name":"vega-regression","version":"2.1.3","purl":"pkg:npm/vega-regression@2.1.3"},{"type":"library","name":"vega-voronoi","version":"5.1.3","purl":"pkg:npm/vega-voronoi@5.1.3"},{"type":"library","name":"vega-wordcloud","version":"5.1.3","purl":"pkg:npm/vega-wordcloud@5.1.3"},{"type":"library","name":"vega-crossfilter","version":"5.1.3","purl":"pkg:npm/vega-crossfilter@5.1.3"},{"type":"library","name":"vega-expression","version":"6.2.2","purl":"pkg:npm/vega-expression@6.2.2"},{"type":"library","name":"vega-selections","version":"6.1.5","purl":"pkg:npm/vega-selections@6.1.5"},{"type":"library","name":"vega-functions","version":"6.2.0","purl":"pkg:npm/vega-functions@6.2.0"},{"type":"library","name":"vega-runtime","version":"7.1.3","purl":"pkg:npm/vega-runtime@7.1.3"},{"type":"library","name":"vega-view","version":"6.2.0","purl":"pkg:npm/vega-view@6.2.0"},{"type":"library","name":"vega-event-selector","version":"4.0.0","purl":"pkg:npm/vega-event-selector@4.0.0"},{"type":"library","name":"vega-parser","version":"7.1.3","purl":"pkg:npm/vega-parser@7.1.3"},{"type":"library","name":"vega","version":"6.4.0","purl":"pkg:npm/vega@6.4.0"},{"type":"library","name":"vega-interpreter","version":"2.3.1","purl":"pkg:npm/vega-interpreter@2.3.1"},{"type":"library","name":"vega-lite","version":"6.4.3","purl":"pkg:npm/vega-lite@6.4.3"},{"type":"library","name":"vega-schema-url-parser","version":"3.0.2","purl":"pkg:npm/vega-schema-url-parser@3.0.2"},{"type":"library","name":"vega-themes","version":"3.0.0","purl":"pkg:npm/vega-themes@3.0.0"},{"type":"library","name":"vega-tooltip","version":"1.0.0","purl":"pkg:npm/vega-tooltip@1.0.0"},{"type":"library","name":"vega-embed","version":"7.1.0","purl":"pkg:npm/vega-embed@7.1.0"},{"type":"library","name":"react-vega","version":"8.0.0","purl":"pkg:npm/react-vega@8.0.0"},{"type":"library","name":"@codemirror/commands","version":"6.11.1","purl":"pkg:npm/%40codemirror/commands@6.11.1"},{"type":"library","name":"@codemirror/search","version":"6.7.0","purl":"pkg:npm/%40codemirror/search@6.7.0"},{"type":"library","name":"@codemirror/autocomplete","version":"6.20.2","purl":"pkg:npm/%40codemirror/autocomplete@6.20.2"},{"type":"library","name":"@codemirror/lint","version":"6.9.6","purl":"pkg:npm/%40codemirror/lint@6.9.6"},{"type":"library","name":"@uiw/codemirror-extensions-basic-setup","version":"4.25.12","purl":"pkg:npm/%40uiw/codemirror-extensions-basic-setup@4.25.12"},{"type":"library","name":"@codemirror/theme-one-dark","version":"6.1.3","purl":"pkg:npm/%40codemirror/theme-one-dark@6.1.3"},{"type":"library","name":"@uiw/react-codemirror","version":"4.25.12","purl":"pkg:npm/%40uiw/react-codemirror@4.25.12"},{"type":"library","name":"codemirror-asciidoc","version":"2.0.1","purl":"pkg:npm/codemirror-asciidoc@2.0.1"},{"type":"library","name":"marked","version":"18.0.14","purl":"pkg:npm/marked@18.0.14"},{"type":"library","name":"@hookform/resolvers","version":"5.9.1","purl":"pkg:npm/%40hookform/resolvers@5.9.1"},{"type":"library","name":"zod","version":"4.6.5","purl":"pkg:npm/zod@4.6.5"},{"type":"library","name":"khroma","version":"2.1.0","purl":"pkg:npm/khroma@2.1.0"},{"type":"library","name":"@upsetjs/venn.js","version":"2.0.0","purl":"pkg:npm/%40upsetjs/venn.js@2.0.0"},{"type":"library","name":"d3-sankey","version":"0.12.3","purl":"pkg:npm/d3-sankey@0.12.3"},{"type":"library","name":"d3-path","version":"1.0.9","purl":"pkg:npm/d3-path@1.0.9"},{"type":"library","name":"uuid","version":"14.0.2","purl":"pkg:npm/uuid@14.0.2"},{"type":"library","name":"d3-axis","version":"3.0.0","purl":"pkg:npm/d3-axis@3.0.0"},{"type":"library","name":"dayjs","version":"1.11.23","purl":"pkg:npm/dayjs@1.11.23"},{"type":"library","name":"layout-base","version":"1.0.2","purl":"pkg:npm/layout-base@1.0.2"},{"type":"library","name":"cose-base","version":"1.0.3","purl":"pkg:npm/cose-base@1.0.3"},{"type":"library","name":"cytoscape-cose-bilkent","version":"4.1.0","purl":"pkg:npm/cytoscape-cose-bilkent@4.1.0"},{"type":"library","name":"cytoscape-fcose","version":"2.2.0","purl":"pkg:npm/cytoscape-fcose@2.2.0"},{"type":"library","name":"katex","version":"0.16.47","purl":"pkg:npm/katex@0.16.47"},{"type":"library","name":"dompurify","version":"3.4.16","purl":"pkg:npm/dompurify@3.4.16"},{"type":"library","name":"d3-dispatch","version":"3.0.1","purl":"pkg:npm/d3-dispatch@3.0.1"},{"type":"library","name":"d3-selection","version":"3.0.0","purl":"pkg:npm/d3-selection@3.0.0"},{"type":"library","name":"d3-transition","version":"3.0.1","purl":"pkg:npm/d3-transition@3.0.1"},{"type":"library","name":"d3-brush","version":"3.0.0","purl":"pkg:npm/d3-brush@3.0.0"},{"type":"library","name":"d3-zoom","version":"3.0.0","purl":"pkg:npm/d3-zoom@3.0.0"},{"type":"library","name":"d3-format","version":"3.1.2","purl":"pkg:npm/d3-format@3.1.2"},{"type":"library","name":"@braintree/sanitize-url","version":"7.1.2","purl":"pkg:npm/%40braintree/sanitize-url@7.1.2"},{"type":"library","name":"@iconify/utils","version":"3.1.4","purl":"pkg:npm/%40iconify/utils@3.1.4"},{"type":"library","name":"fastdom","version":"1.0.12","purl":"pkg:npm/fastdom@1.0.12"},{"type":"library","name":"ts-dedent","version":"2.3.0","purl":"pkg:npm/ts-dedent@2.3.0"},{"type":"library","name":"roughjs","version":"4.6.6","purl":"pkg:npm/roughjs@4.6.6"},{"type":"library","name":"lodash-es","version":"4.18.1","purl":"pkg:npm/lodash-es@4.18.1"},{"type":"library","name":"dagre-d3-es","version":"7.0.14","purl":"pkg:npm/dagre-d3-es@7.0.14"},{"type":"library","name":"@mermaid-js/parser","version":"1.2.1","purl":"pkg:npm/%40mermaid-js/parser@1.2.1"},{"type":"library","name":"cytoscape","version":"3.34.2","purl":"pkg:npm/cytoscape@3.34.2"}]}
package/dist/utils.d.ts CHANGED
@@ -9,3 +9,7 @@ export declare const staticFrontendDirRelative: string;
9
9
  * @returns The free port.
10
10
  */
11
11
  export declare function findFreePort(minPort: number, maxPort: number): Promise<number>;
12
+ export declare function gitOptionsFromEnv(): {
13
+ autocommit: boolean;
14
+ autopush: boolean;
15
+ };
package/dist/utils.js CHANGED
@@ -54,4 +54,10 @@ function testPort(port) {
54
54
  }, 2000);
55
55
  });
56
56
  }
57
+ export function gitOptionsFromEnv() {
58
+ return {
59
+ autocommit: process.env.CYBERISMO_AUTOCOMMIT === 'true',
60
+ autopush: process.env.CYBERISMO_AUTOPUSH === 'true',
61
+ };
62
+ }
57
63
  //# sourceMappingURL=utils.js.map
package/dist/utils.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"utils.js","sourceRoot":"","sources":["../src/utils.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;EAWE;AACF,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,EAAE,YAAY,EAAE,MAAM,UAAU,CAAC;AAExC;;GAEG;AACH,MAAM,CAAC,MAAM,yBAAyB,GAAG,IAAI,CAAC,QAAQ,CACpD,OAAO,CAAC,GAAG,EAAE,EACb,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,EAAE,QAAQ,CAAC,CAC5C,CAAC;AAEF;;;;;GAKG;AACH,MAAM,CAAC,KAAK,UAAU,YAAY,CAChC,OAAe,EACf,OAAe;IAEf,KAAK,IAAI,CAAC,GAAG,OAAO,EAAE,CAAC,GAAG,OAAO,EAAE,CAAC,EAAE,EAAE,CAAC;QACvC,IAAI,CAAC;YACH,MAAM,QAAQ,CAAC,CAAC,CAAC,CAAC;YAClB,OAAO,CAAC,CAAC;QACX,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,IAAI,GAAG,YAAY,KAAK,IAAI,GAAG,CAAC,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAC,EAAE,CAAC;gBAC/D,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,yCAAyC,CAAC,CAAC;YAClE,CAAC;iBAAM,CAAC;gBACN,MAAM,GAAG,CAAC;YACZ,CAAC;QACH,CAAC;IACH,CAAC;IACD,MAAM,IAAI,KAAK,CAAC,0BAA0B,CAAC,CAAC;AAC9C,CAAC;AAED,SAAS,QAAQ,CAAC,IAAY;IAC5B,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;QACrC,MAAM,MAAM,GAAG,YAAY,EAAE,CAAC;QAC9B,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,GAAG,EAAE;YACvB,MAAM,CAAC,KAAK,EAAE,CAAC;YACf,OAAO,CAAC,IAAI,CAAC,CAAC;QAChB,CAAC,CAAC,CAAC;QACH,MAAM,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,GAAG,EAAE,EAAE;YACzB,MAAM,CAAC,GAAG,CAAC,CAAC;QACd,CAAC,CAAC,CAAC;QACH,UAAU,CAAC,GAAG,EAAE;YACd,MAAM,CAAC,IAAI,KAAK,CAAC,uCAAuC,CAAC,CAAC,CAAC;QAC7D,CAAC,EAAE,IAAI,CAAC,CAAC;IACX,CAAC,CAAC,CAAC;AACL,CAAC"}
1
+ {"version":3,"file":"utils.js","sourceRoot":"","sources":["../src/utils.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;EAWE;AACF,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,EAAE,YAAY,EAAE,MAAM,UAAU,CAAC;AAExC;;GAEG;AACH,MAAM,CAAC,MAAM,yBAAyB,GAAG,IAAI,CAAC,QAAQ,CACpD,OAAO,CAAC,GAAG,EAAE,EACb,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,EAAE,QAAQ,CAAC,CAC5C,CAAC;AAEF;;;;;GAKG;AACH,MAAM,CAAC,KAAK,UAAU,YAAY,CAChC,OAAe,EACf,OAAe;IAEf,KAAK,IAAI,CAAC,GAAG,OAAO,EAAE,CAAC,GAAG,OAAO,EAAE,CAAC,EAAE,EAAE,CAAC;QACvC,IAAI,CAAC;YACH,MAAM,QAAQ,CAAC,CAAC,CAAC,CAAC;YAClB,OAAO,CAAC,CAAC;QACX,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,IAAI,GAAG,YAAY,KAAK,IAAI,GAAG,CAAC,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAC,EAAE,CAAC;gBAC/D,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,yCAAyC,CAAC,CAAC;YAClE,CAAC;iBAAM,CAAC;gBACN,MAAM,GAAG,CAAC;YACZ,CAAC;QACH,CAAC;IACH,CAAC;IACD,MAAM,IAAI,KAAK,CAAC,0BAA0B,CAAC,CAAC;AAC9C,CAAC;AAED,SAAS,QAAQ,CAAC,IAAY;IAC5B,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;QACrC,MAAM,MAAM,GAAG,YAAY,EAAE,CAAC;QAC9B,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,GAAG,EAAE;YACvB,MAAM,CAAC,KAAK,EAAE,CAAC;YACf,OAAO,CAAC,IAAI,CAAC,CAAC;QAChB,CAAC,CAAC,CAAC;QACH,MAAM,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,GAAG,EAAE,EAAE;YACzB,MAAM,CAAC,GAAG,CAAC,CAAC;QACd,CAAC,CAAC,CAAC;QACH,UAAU,CAAC,GAAG,EAAE;YACd,MAAM,CAAC,IAAI,KAAK,CAAC,uCAAuC,CAAC,CAAC,CAAC;QAC7D,CAAC,EAAE,IAAI,CAAC,CAAC;IACX,CAAC,CAAC,CAAC;AACL,CAAC;AAED,MAAM,UAAU,iBAAiB;IAI/B,OAAO;QACL,UAAU,EAAE,OAAO,CAAC,GAAG,CAAC,oBAAoB,KAAK,MAAM;QACvD,QAAQ,EAAE,OAAO,CAAC,GAAG,CAAC,kBAAkB,KAAK,MAAM;KACpD,CAAC;AACJ,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@cyberismo/backend",
3
- "version": "1.1.1",
3
+ "version": "1.2.0",
4
4
  "description": "Express backend for Cyberismo",
5
5
  "main": "dist/index.js",
6
6
  "keywords": [],
@@ -16,20 +16,19 @@
16
16
  "node": ">=22"
17
17
  },
18
18
  "dependencies": {
19
- "@asciidoctor/core": "^4.0.6",
20
- "@hono/mcp": "^0.3.1",
21
- "@hono/node-server": "^2.0.12",
22
- "@hono/zod-validator": "^0.9.0",
23
- "@modelcontextprotocol/sdk": "^1.30.0",
19
+ "@cyberismo/assets": "1.2.0",
20
+ "@cyberismo/data-handler": "1.2.0",
21
+ "@cyberismo/mcp": "1.2.0",
22
+ "@hono/mcp": "^0.3.2",
23
+ "@hono/node-server": "^2.1.1",
24
+ "@hono/zod-validator": "^0.9.1",
25
+ "@modelcontextprotocol/sdk": "^1.30.1",
24
26
  "@types/mime-types": "^3.0.1",
25
- "dotenv": "^17.3.1",
26
- "hono": "^4.12.32",
27
- "jose": "^6.2.5",
27
+ "dotenv": "^18.0.4",
28
+ "hono": "^4.13.10",
29
+ "jose": "^6.2.12",
28
30
  "mime-types": "^3.0.2",
29
- "zod": "^4.3.6",
30
- "@cyberismo/assets": "1.1.1",
31
- "@cyberismo/data-handler": "1.1.1",
32
- "@cyberismo/mcp": "1.1.1"
31
+ "zod": "^4.6.5"
33
32
  },
34
33
  "devDependencies": {
35
34
  "@cyberismo/app": "0.0.2"
package/src/app.ts CHANGED
@@ -11,18 +11,20 @@
11
11
  License along with this program. If not, see <https://www.gnu.org/licenses/>.
12
12
  */
13
13
  import { Hono, type MiddlewareHandler } from 'hono';
14
- import { staticFrontendDirRelative } from './utils.js';
14
+ import { gitOptionsFromEnv, staticFrontendDirRelative } from './utils.js';
15
15
  import { serveStatic } from '@hono/node-server/serve-static';
16
16
  import { attachProjectRegistry } from './middleware/commandManager.js';
17
17
  import calculationsRouter from './domain/calculations/index.js';
18
18
  import cardsRouter from './domain/cards/index.js';
19
19
  import cardTypesRouter from './domain/cardTypes/index.js';
20
20
  import connectorsRouter from './domain/connectors/index.js';
21
+ import eventsRouter from './domain/events/index.js';
21
22
  import fieldTypesRouter from './domain/fieldTypes/index.js';
22
23
  import graphModelsRouter from './domain/graphModels/index.js';
23
24
  import graphViewsRouter from './domain/graphViews/index.js';
24
25
  import linkTypesRouter from './domain/linkTypes/index.js';
25
26
  import reportsRouter from './domain/reports/index.js';
27
+ import skillsRouter from './domain/skills/index.js';
26
28
  import templatesRouter from './domain/templates/index.js';
27
29
  import treeRouter from './domain/tree/index.js';
28
30
  import workflowsRouter from './domain/workflows/index.js';
@@ -38,10 +40,11 @@ import type { AppVars, TreeOptions } from './types.js';
38
40
  import treeMiddleware from './middleware/tree.js';
39
41
  import projectRouter from './domain/project/index.js';
40
42
  import { createMcpRouter } from './domain/mcp/index.js';
43
+ import { writableProjects } from './overlay.js';
41
44
  import { createAuthRouter } from './domain/auth/index.js';
42
45
  import { createAuthMiddleware } from './middleware/auth.js';
43
46
  import type { AuthProvider } from './auth/types.js';
44
- import { MockAuthProvider, mockRoleCookieMiddleware } from './auth/mock.js';
47
+ import { MockAuthProvider } from './auth/mock.js';
45
48
  import type { ProjectRegistry } from './project-registry.js';
46
49
  import { CommandManager, scanForProjects } from '@cyberismo/data-handler';
47
50
  import { createProjectsRouter } from './domain/projects/index.js';
@@ -59,11 +62,13 @@ function createProjectScopedRoutes(
59
62
  projectScoped.route('/cards', cardsRouter);
60
63
  projectScoped.route('/cardTypes', cardTypesRouter);
61
64
  projectScoped.route('/connectors', connectorsRouter);
65
+ projectScoped.route('/events', eventsRouter);
62
66
  projectScoped.route('/fieldTypes', fieldTypesRouter);
63
67
  projectScoped.route('/graphModels', graphModelsRouter);
64
68
  projectScoped.route('/graphViews', graphViewsRouter);
65
69
  projectScoped.route('/linkTypes', linkTypesRouter);
66
70
  projectScoped.route('/reports', reportsRouter);
71
+ projectScoped.route('/skills', skillsRouter);
67
72
  projectScoped.route('/templates', templatesRouter);
68
73
  projectScoped.route('/tree', treeRouter);
69
74
  projectScoped.route('/workflows', workflowsRouter);
@@ -109,15 +114,15 @@ export function createApp(
109
114
  return c.json({
110
115
  staticMode: exportMode,
111
116
  logoutUrl: process.env.APP_LOGOUT_URL || '',
112
- presenceEnabled: process.env.APP_PRESENCE_ENABLED === 'true',
113
117
  defaultProject: process.env.CYBERISMO_DEFAULT_PROJECT || undefined,
118
+ extensionUrl: process.env.APP_EXTENSION_URL || undefined,
114
119
  });
115
120
  });
116
121
 
117
- // Dev-only: let `?role=<reader|editor|admin>` set a persistent mock-role cookie
118
- // so role gating can be exercised locally without code changes or a restart.
122
+ // Mock-auth only: let `?role=` and, with the roster on, `?user=` set persistent
123
+ // cookies so role gating and identity can be switched locally without a restart.
119
124
  if (authProvider instanceof MockAuthProvider) {
120
- app.use(mockRoleCookieMiddleware());
125
+ app.use(authProvider.cookieMiddleware());
121
126
  }
122
127
 
123
128
  // Apply authentication middleware to all API and MCP routes
@@ -161,9 +166,15 @@ export function createApp(
161
166
  400,
162
167
  );
163
168
  }
164
- await fs.rm(resolvedProject, { recursive: true, force: true });
169
+ // Windows holds transient locks on files the server has just touched,
170
+ // which surface as EBUSY on the final rmdir. Retry rather than fail the reset.
171
+ await fs.rm(resolvedProject, {
172
+ recursive: true,
173
+ force: true,
174
+ maxRetries: 5,
175
+ retryDelay: 100,
176
+ });
165
177
  await fs.cp(goldenPath, resolvedProject, { recursive: true });
166
- const autocommit = process.env.CYBERISMO_AUTOCOMMIT === 'true';
167
178
  const projects = await scanForProjects(resolvedProject);
168
179
 
169
180
  if (projects.length === 0) {
@@ -176,7 +187,7 @@ export function createApp(
176
187
  }
177
188
  const entries = [];
178
189
  for (const project of projects) {
179
- const commands = new CommandManager(project.path, { autocommit });
190
+ const commands = new CommandManager(project.path, gitOptionsFromEnv());
180
191
  await commands.initialize();
181
192
  entries.push({ prefix: project.prefix, commands });
182
193
  }
@@ -189,7 +200,7 @@ export function createApp(
189
200
  if (!multiProjectRoot) return c.json({ publicKey: null });
190
201
  try {
191
202
  const content = await readFile(
192
- join(multiProjectRoot, '.git-service', 'id_rsa.pub'),
203
+ join(multiProjectRoot, '.keyholder', 'id_rsa.pub'),
193
204
  'utf-8',
194
205
  );
195
206
  return c.json({ publicKey: content.trim() });
@@ -214,7 +225,7 @@ export function createApp(
214
225
  }
215
226
 
216
227
  // MCP endpoint for AI assistant integration
217
- app.route('/mcp', createMcpRouter(registry));
228
+ app.route('/mcp', createMcpRouter(writableProjects(registry)));
218
229
 
219
230
  app.use(
220
231
  '*',
package/src/auth/index.ts CHANGED
@@ -12,6 +12,6 @@
12
12
  */
13
13
 
14
14
  export type { AuthProvider } from './types.js';
15
- export { MockAuthProvider, mockRoleCookieMiddleware } from './mock.js';
15
+ export { MockAuthProvider } from './mock.js';
16
16
  export { KeycloakAuthProvider } from './keycloak.js';
17
17
  export type { KeycloakConfig } from './keycloak.js';
@@ -14,8 +14,7 @@
14
14
  import { createRemoteJWKSet, jwtVerify } from 'jose';
15
15
  import type { JWTPayload } from 'jose';
16
16
  import { UserRole } from '../types.js';
17
- import type { UserInfo } from '../types.js';
18
- import type { AuthProvider } from './types.js';
17
+ import type { AuthProvider, AuthResult } from './types.js';
19
18
 
20
19
  export interface KeycloakConfig {
21
20
  issuer: string;
@@ -51,7 +50,7 @@ export class KeycloakAuthProvider implements AuthProvider {
51
50
  return this.jwks;
52
51
  }
53
52
 
54
- async authenticate(req: Request): Promise<UserInfo | null> {
53
+ async authenticate(req: Request): Promise<AuthResult | null> {
55
54
  const authHeader = req.headers.get('authorization');
56
55
  if (!authHeader) {
57
56
  return null;
@@ -78,12 +77,18 @@ export class KeycloakAuthProvider implements AuthProvider {
78
77
  if (!claims.email) {
79
78
  throw new Error('Missing email');
80
79
  }
80
+ // Optional in RFC 7519, and jwtVerify only checks it when present, so a
81
+ // token without one would rotate on jitter alone and never clamp.
82
+ if (!claims.exp) {
83
+ throw new Error('Missing exp');
84
+ }
81
85
 
82
86
  return {
83
87
  id: claims.sub,
84
88
  email: claims.email,
85
89
  name: claims.name ?? claims.preferred_username ?? 'Unknown',
86
90
  role,
91
+ exp: claims.exp,
87
92
  };
88
93
  } catch {
89
94
  // TODO: add proper logging