research-copilot 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (395) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +190 -0
  3. package/app/build/icon.icns +0 -0
  4. package/app/build/icon.ico +0 -0
  5. package/app/build/icon.png +0 -0
  6. package/app/out/main/index.mjs +6719 -0
  7. package/app/out/preload/index.js +141 -0
  8. package/app/out/renderer/assets/Inter-Variable-Latin-8kRkwJBP.woff2 +0 -0
  9. package/app/out/renderer/assets/Inter-Variable-LatinExt-B_-bZUTo.woff2 +0 -0
  10. package/app/out/renderer/assets/KaTeX_AMS-Regular-BQhdFMY1.woff2 +0 -0
  11. package/app/out/renderer/assets/KaTeX_AMS-Regular-DMm9YOAa.woff +0 -0
  12. package/app/out/renderer/assets/KaTeX_AMS-Regular-DRggAlZN.ttf +0 -0
  13. package/app/out/renderer/assets/KaTeX_Caligraphic-Bold-ATXxdsX0.ttf +0 -0
  14. package/app/out/renderer/assets/KaTeX_Caligraphic-Bold-BEiXGLvX.woff +0 -0
  15. package/app/out/renderer/assets/KaTeX_Caligraphic-Bold-Dq_IR9rO.woff2 +0 -0
  16. package/app/out/renderer/assets/KaTeX_Caligraphic-Regular-CTRA-rTL.woff +0 -0
  17. package/app/out/renderer/assets/KaTeX_Caligraphic-Regular-Di6jR-x-.woff2 +0 -0
  18. package/app/out/renderer/assets/KaTeX_Caligraphic-Regular-wX97UBjC.ttf +0 -0
  19. package/app/out/renderer/assets/KaTeX_Fraktur-Bold-BdnERNNW.ttf +0 -0
  20. package/app/out/renderer/assets/KaTeX_Fraktur-Bold-BsDP51OF.woff +0 -0
  21. package/app/out/renderer/assets/KaTeX_Fraktur-Bold-CL6g_b3V.woff2 +0 -0
  22. package/app/out/renderer/assets/KaTeX_Fraktur-Regular-CB_wures.ttf +0 -0
  23. package/app/out/renderer/assets/KaTeX_Fraktur-Regular-CTYiF6lA.woff2 +0 -0
  24. package/app/out/renderer/assets/KaTeX_Fraktur-Regular-Dxdc4cR9.woff +0 -0
  25. package/app/out/renderer/assets/KaTeX_Main-Bold-Cx986IdX.woff2 +0 -0
  26. package/app/out/renderer/assets/KaTeX_Main-Bold-Jm3AIy58.woff +0 -0
  27. package/app/out/renderer/assets/KaTeX_Main-Bold-waoOVXN0.ttf +0 -0
  28. package/app/out/renderer/assets/KaTeX_Main-BoldItalic-DxDJ3AOS.woff2 +0 -0
  29. package/app/out/renderer/assets/KaTeX_Main-BoldItalic-DzxPMmG6.ttf +0 -0
  30. package/app/out/renderer/assets/KaTeX_Main-BoldItalic-SpSLRI95.woff +0 -0
  31. package/app/out/renderer/assets/KaTeX_Main-Italic-3WenGoN9.ttf +0 -0
  32. package/app/out/renderer/assets/KaTeX_Main-Italic-BMLOBm91.woff +0 -0
  33. package/app/out/renderer/assets/KaTeX_Main-Italic-NWA7e6Wa.woff2 +0 -0
  34. package/app/out/renderer/assets/KaTeX_Main-Regular-B22Nviop.woff2 +0 -0
  35. package/app/out/renderer/assets/KaTeX_Main-Regular-Dr94JaBh.woff +0 -0
  36. package/app/out/renderer/assets/KaTeX_Main-Regular-ypZvNtVU.ttf +0 -0
  37. package/app/out/renderer/assets/KaTeX_Math-BoldItalic-B3XSjfu4.ttf +0 -0
  38. package/app/out/renderer/assets/KaTeX_Math-BoldItalic-CZnvNsCZ.woff2 +0 -0
  39. package/app/out/renderer/assets/KaTeX_Math-BoldItalic-iY-2wyZ7.woff +0 -0
  40. package/app/out/renderer/assets/KaTeX_Math-Italic-DA0__PXp.woff +0 -0
  41. package/app/out/renderer/assets/KaTeX_Math-Italic-flOr_0UB.ttf +0 -0
  42. package/app/out/renderer/assets/KaTeX_Math-Italic-t53AETM-.woff2 +0 -0
  43. package/app/out/renderer/assets/KaTeX_SansSerif-Bold-CFMepnvq.ttf +0 -0
  44. package/app/out/renderer/assets/KaTeX_SansSerif-Bold-D1sUS0GD.woff2 +0 -0
  45. package/app/out/renderer/assets/KaTeX_SansSerif-Bold-DbIhKOiC.woff +0 -0
  46. package/app/out/renderer/assets/KaTeX_SansSerif-Italic-C3H0VqGB.woff2 +0 -0
  47. package/app/out/renderer/assets/KaTeX_SansSerif-Italic-DN2j7dab.woff +0 -0
  48. package/app/out/renderer/assets/KaTeX_SansSerif-Italic-YYjJ1zSn.ttf +0 -0
  49. package/app/out/renderer/assets/KaTeX_SansSerif-Regular-BNo7hRIc.ttf +0 -0
  50. package/app/out/renderer/assets/KaTeX_SansSerif-Regular-CS6fqUqJ.woff +0 -0
  51. package/app/out/renderer/assets/KaTeX_SansSerif-Regular-DDBCnlJ7.woff2 +0 -0
  52. package/app/out/renderer/assets/KaTeX_Script-Regular-C5JkGWo-.ttf +0 -0
  53. package/app/out/renderer/assets/KaTeX_Script-Regular-D3wIWfF6.woff2 +0 -0
  54. package/app/out/renderer/assets/KaTeX_Script-Regular-D5yQViql.woff +0 -0
  55. package/app/out/renderer/assets/KaTeX_Size1-Regular-C195tn64.woff +0 -0
  56. package/app/out/renderer/assets/KaTeX_Size1-Regular-Dbsnue_I.ttf +0 -0
  57. package/app/out/renderer/assets/KaTeX_Size1-Regular-mCD8mA8B.woff2 +0 -0
  58. package/app/out/renderer/assets/KaTeX_Size2-Regular-B7gKUWhC.ttf +0 -0
  59. package/app/out/renderer/assets/KaTeX_Size2-Regular-Dy4dx90m.woff2 +0 -0
  60. package/app/out/renderer/assets/KaTeX_Size2-Regular-oD1tc_U0.woff +0 -0
  61. package/app/out/renderer/assets/KaTeX_Size3-Regular-CTq5MqoE.woff +0 -0
  62. package/app/out/renderer/assets/KaTeX_Size3-Regular-DgpXs0kz.ttf +0 -0
  63. package/app/out/renderer/assets/KaTeX_Size4-Regular-BF-4gkZK.woff +0 -0
  64. package/app/out/renderer/assets/KaTeX_Size4-Regular-DWFBv043.ttf +0 -0
  65. package/app/out/renderer/assets/KaTeX_Size4-Regular-Dl5lxZxV.woff2 +0 -0
  66. package/app/out/renderer/assets/KaTeX_Typewriter-Regular-C0xS9mPB.woff +0 -0
  67. package/app/out/renderer/assets/KaTeX_Typewriter-Regular-CO6r4hn1.woff2 +0 -0
  68. package/app/out/renderer/assets/KaTeX_Typewriter-Regular-D3Ib7_Hf.ttf +0 -0
  69. package/app/out/renderer/assets/MilkdownMarkdownEditor-bLPxrCVb.js +89821 -0
  70. package/app/out/renderer/assets/MilkdownMarkdownEditor-tTNRIB2K.css +2555 -0
  71. package/app/out/renderer/assets/Tableau10-BqnYsPR6.js +9 -0
  72. package/app/out/renderer/assets/apl-fqmucPXA.js +140 -0
  73. package/app/out/renderer/assets/arc-J47ePHZ2.js +132 -0
  74. package/app/out/renderer/assets/array-DgktLKBx.js +6 -0
  75. package/app/out/renderer/assets/asciiarmor-DucZyvP0.js +56 -0
  76. package/app/out/renderer/assets/asn1-BnOEsgAm.js +144 -0
  77. package/app/out/renderer/assets/asterisk-QAlztEwS.js +345 -0
  78. package/app/out/renderer/assets/blockDiagram-c4efeb88-5uRQXgQJ.js +1817 -0
  79. package/app/out/renderer/assets/brainfuck-DZVCuF_t.js +53 -0
  80. package/app/out/renderer/assets/c4Diagram-c83219d4-C4iCTPEL.js +2464 -0
  81. package/app/out/renderer/assets/channel-ZAmhHE3g.js +7 -0
  82. package/app/out/renderer/assets/classDiagram-beda092f-7NOZxq_W.js +357 -0
  83. package/app/out/renderer/assets/classDiagram-v2-2358418a-5fPT-cUH.js +291 -0
  84. package/app/out/renderer/assets/clike-xqXYL6ge.js +805 -0
  85. package/app/out/renderer/assets/clojure-BhXMqnxz.js +849 -0
  86. package/app/out/renderer/assets/clone-CsnzsYXQ.js +8 -0
  87. package/app/out/renderer/assets/cmake-BGaNd9E7.js +71 -0
  88. package/app/out/renderer/assets/cobol-4yqQntpt.js +120 -0
  89. package/app/out/renderer/assets/coffeescript-D2dXvhEc.js +308 -0
  90. package/app/out/renderer/assets/commonlisp-CF_VNHQR.js +130 -0
  91. package/app/out/renderer/assets/createText-1719965b-Cji7KN4K.js +4904 -0
  92. package/app/out/renderer/assets/crystal-DyuLTqLs.js +398 -0
  93. package/app/out/renderer/assets/css-c-jst79C.js +1783 -0
  94. package/app/out/renderer/assets/cypher-Dlu_3r4V.js +121 -0
  95. package/app/out/renderer/assets/d-UURgV0Ux.js +179 -0
  96. package/app/out/renderer/assets/diff-B_Bi2Crb.js +25 -0
  97. package/app/out/renderer/assets/dockerfile-Bvk733Ga.js +201 -0
  98. package/app/out/renderer/assets/dtd-Dy74G54E.js +114 -0
  99. package/app/out/renderer/assets/dylan-TSb-Nfix.js +314 -0
  100. package/app/out/renderer/assets/ebnf-DAomQUbD.js +139 -0
  101. package/app/out/renderer/assets/ecl-B59qGGVg.js +178 -0
  102. package/app/out/renderer/assets/edges-96097737-CD0EvAZQ.js +1844 -0
  103. package/app/out/renderer/assets/eiffel-Dze7nlu3.js +134 -0
  104. package/app/out/renderer/assets/elm-DG7jkhNZ.js +176 -0
  105. package/app/out/renderer/assets/erDiagram-0228fc6a-DRYXBpi7.js +1321 -0
  106. package/app/out/renderer/assets/erlang-BO6gOnGA.js +674 -0
  107. package/app/out/renderer/assets/factor-CMxFHDqz.js +65 -0
  108. package/app/out/renderer/assets/fcl-CDDUNjTj.js +141 -0
  109. package/app/out/renderer/assets/flowDb-c6c81e3f-CuoIN-Cy.js +1713 -0
  110. package/app/out/renderer/assets/flowDiagram-50d868cf-CPWPLOml.js +1272 -0
  111. package/app/out/renderer/assets/flowDiagram-v2-4f6560a1-C_R12s4S.js +33 -0
  112. package/app/out/renderer/assets/flowchart-elk-definition-6af322e1-BdKUSFpi.js +92921 -0
  113. package/app/out/renderer/assets/forth-B9D2JCeE.js +116 -0
  114. package/app/out/renderer/assets/fortran-CAG2BFbe.js +467 -0
  115. package/app/out/renderer/assets/ganttDiagram-a2739b55-ygqT5HlG.js +3399 -0
  116. package/app/out/renderer/assets/gas-d3KEcW3x.js +294 -0
  117. package/app/out/renderer/assets/gherkin-DhZlEZiy.js +115 -0
  118. package/app/out/renderer/assets/gitGraphDiagram-82fe8481-D97GT4iA.js +1791 -0
  119. package/app/out/renderer/assets/graph-DpC13d95.js +1237 -0
  120. package/app/out/renderer/assets/groovy-CpwJiBl7.js +223 -0
  121. package/app/out/renderer/assets/haskell-BlGBCCe3.js +459 -0
  122. package/app/out/renderer/assets/haxe-7MlzfeYV.js +514 -0
  123. package/app/out/renderer/assets/http-BqypyemW.js +79 -0
  124. package/app/out/renderer/assets/idl-4HIGJlDI.js +985 -0
  125. package/app/out/renderer/assets/index-4-ziknCv.js +292 -0
  126. package/app/out/renderer/assets/index-5325376f-Bbs7Fbqr.js +663 -0
  127. package/app/out/renderer/assets/index-B2jip-rk.js +2489 -0
  128. package/app/out/renderer/assets/index-BKTVfokE.js +312 -0
  129. package/app/out/renderer/assets/index-BiJbFgVG.js +118 -0
  130. package/app/out/renderer/assets/index-Bn433Fat.js +83 -0
  131. package/app/out/renderer/assets/index-BqDyyRCx.js +39679 -0
  132. package/app/out/renderer/assets/index-BzFMeMPn.js +158 -0
  133. package/app/out/renderer/assets/index-C-_uCjZJ.css +2701 -0
  134. package/app/out/renderer/assets/index-C1ithNW1.js +1765 -0
  135. package/app/out/renderer/assets/index-CAJkRYkO.js +407 -0
  136. package/app/out/renderer/assets/index-CleO0-yj.js +690 -0
  137. package/app/out/renderer/assets/index-Cq4MH3sY.js +1020 -0
  138. package/app/out/renderer/assets/index-CtA0Xj22.js +705 -0
  139. package/app/out/renderer/assets/index-CvAZkqBZ.js +83 -0
  140. package/app/out/renderer/assets/index-D3UDN-5c.js +152 -0
  141. package/app/out/renderer/assets/index-D4F9R5ao.js +179 -0
  142. package/app/out/renderer/assets/index-D6RguhZ5.js +328 -0
  143. package/app/out/renderer/assets/index-DnEowqXv.js +386 -0
  144. package/app/out/renderer/assets/index-K8c8Mqdy.js +98 -0
  145. package/app/out/renderer/assets/index-Kh14gO6K.js +62 -0
  146. package/app/out/renderer/assets/index-WFd2jRnA.js +333 -0
  147. package/app/out/renderer/assets/index-WgMfkRFp.js +313 -0
  148. package/app/out/renderer/assets/index-Y4lKyF6t.js +1042 -0
  149. package/app/out/renderer/assets/index-fx307_f1.js +643 -0
  150. package/app/out/renderer/assets/infoDiagram-8eee0895-ptaVSwzq.js +511 -0
  151. package/app/out/renderer/assets/init-ZxktEp_H.js +16 -0
  152. package/app/out/renderer/assets/javascript-C3MnDRiU.js +994 -0
  153. package/app/out/renderer/assets/journeyDiagram-c64418c1-aloEGOQp.js +1184 -0
  154. package/app/out/renderer/assets/julia-Bs6JJhYG.js +407 -0
  155. package/app/out/renderer/assets/layout-ZeuHE_aY.js +2217 -0
  156. package/app/out/renderer/assets/line-CAgaGl-S.js +45 -0
  157. package/app/out/renderer/assets/linear-DIg7lTe1.js +539 -0
  158. package/app/out/renderer/assets/livescript-DmzgM3Yt.js +296 -0
  159. package/app/out/renderer/assets/lua-8cJgIlqe.js +256 -0
  160. package/app/out/renderer/assets/mathematica-DNLOL9PQ.js +110 -0
  161. package/app/out/renderer/assets/mbox-Ga7d4MMN.js +117 -0
  162. package/app/out/renderer/assets/mindmap-definition-8da855dc-B8XVoUxz.js +36054 -0
  163. package/app/out/renderer/assets/mirc-Dma3B8rS.js +107 -0
  164. package/app/out/renderer/assets/mllike-DHn7xckP.js +334 -0
  165. package/app/out/renderer/assets/modelica-0d55jYY0.js +147 -0
  166. package/app/out/renderer/assets/mscgen-DdqZYINH.js +135 -0
  167. package/app/out/renderer/assets/mumps-Btr8VblO.js +93 -0
  168. package/app/out/renderer/assets/nginx-DTDtBDVN.js +141 -0
  169. package/app/out/renderer/assets/nsis-3zG7tgur.js +62 -0
  170. package/app/out/renderer/assets/ntriples-CvgOYMpL.js +153 -0
  171. package/app/out/renderer/assets/octave-DYBj3-tl.js +200 -0
  172. package/app/out/renderer/assets/ordinal-DSZU4PqD.js +76 -0
  173. package/app/out/renderer/assets/oz-R_e8WMIi.js +231 -0
  174. package/app/out/renderer/assets/pascal-GD8iposT.js +105 -0
  175. package/app/out/renderer/assets/path-Cp2qmpkd.js +109 -0
  176. package/app/out/renderer/assets/perl-DL9mHpoi.js +1105 -0
  177. package/app/out/renderer/assets/pieDiagram-a8764435-DlwoeBU2.js +770 -0
  178. package/app/out/renderer/assets/pig-C_4T4YIV.js +101 -0
  179. package/app/out/renderer/assets/powershell-B0suO7Vd.js +328 -0
  180. package/app/out/renderer/assets/properties-BR-vP1aU.js +58 -0
  181. package/app/out/renderer/assets/protobuf-BxgpyhoW.js +77 -0
  182. package/app/out/renderer/assets/pug-By0kVCfm.js +405 -0
  183. package/app/out/renderer/assets/puppet-Bdao66PW.js +137 -0
  184. package/app/out/renderer/assets/python-CvWbmiX4.js +427 -0
  185. package/app/out/renderer/assets/q-CrbCVq4a.js +131 -0
  186. package/app/out/renderer/assets/quadrantDiagram-1e28029f-BaSi1XB4.js +1200 -0
  187. package/app/out/renderer/assets/r-V7nswm59.js +170 -0
  188. package/app/out/renderer/assets/requirementDiagram-08caed73-D3EFyegZ.js +1092 -0
  189. package/app/out/renderer/assets/rpm-C-DLY-If.js +109 -0
  190. package/app/out/renderer/assets/ruby-JDKLJNK0.js +330 -0
  191. package/app/out/renderer/assets/sankeyDiagram-a04cb91d-Cv44AsnM.js +1174 -0
  192. package/app/out/renderer/assets/sas-D2UG-yhZ.js +207 -0
  193. package/app/out/renderer/assets/scheme-BKzrkGJD.js +222 -0
  194. package/app/out/renderer/assets/sequenceDiagram-c5b8d532-CuUBu-x4.js +3337 -0
  195. package/app/out/renderer/assets/shell-BlsXDxCn.js +222 -0
  196. package/app/out/renderer/assets/sieve-CjwBwOY5.js +135 -0
  197. package/app/out/renderer/assets/simple-mode-DMneyfDu.js +130 -0
  198. package/app/out/renderer/assets/smalltalk-BOIGQuhN.js +121 -0
  199. package/app/out/renderer/assets/solr-CwD7U71z.js +69 -0
  200. package/app/out/renderer/assets/sparql-DYskk2vE.js +249 -0
  201. package/app/out/renderer/assets/spreadsheet-Bgtt3oLP.js +87 -0
  202. package/app/out/renderer/assets/sql-BSrOzCRI.js +354 -0
  203. package/app/out/renderer/assets/stateDiagram-1ecb1508-BOU34Zp4.js +454 -0
  204. package/app/out/renderer/assets/stateDiagram-v2-c2b004d7-BgRoffou.js +326 -0
  205. package/app/out/renderer/assets/stex-B6LNC55o.js +231 -0
  206. package/app/out/renderer/assets/styles-b4e223ce-BMr9TPuj.js +1483 -0
  207. package/app/out/renderer/assets/styles-ca3715f6-DgbNw99p.js +1363 -0
  208. package/app/out/renderer/assets/styles-d45a18b0-DtRYKYKf.js +574 -0
  209. package/app/out/renderer/assets/stylus-BkS-boTH.js +565 -0
  210. package/app/out/renderer/assets/svgDrawCommon-b86b1483-Bein03PD.js +100 -0
  211. package/app/out/renderer/assets/swift-FRZi1uvB.js +291 -0
  212. package/app/out/renderer/assets/tcl-CUcaCdmq.js +114 -0
  213. package/app/out/renderer/assets/textile-BnFpjsrl.js +414 -0
  214. package/app/out/renderer/assets/tiddlywiki-CjprD-Qp.js +218 -0
  215. package/app/out/renderer/assets/tiki-B4EPSQ1G.js +265 -0
  216. package/app/out/renderer/assets/timeline-definition-faaaa080-BlWpLE_4.js +1212 -0
  217. package/app/out/renderer/assets/toml-BOuWGMcf.js +76 -0
  218. package/app/out/renderer/assets/troff-E1bJ0PPL.js +61 -0
  219. package/app/out/renderer/assets/ttcn-cfg-Dc39-fIP.js +133 -0
  220. package/app/out/renderer/assets/ttcn-tKd4HLu4.js +192 -0
  221. package/app/out/renderer/assets/turtle-Dq7-1WAf.js +124 -0
  222. package/app/out/renderer/assets/vb-Dp90gtsv.js +196 -0
  223. package/app/out/renderer/assets/vbscript-CI6_mxxU.js +479 -0
  224. package/app/out/renderer/assets/velocity-BwIZK1TH.js +149 -0
  225. package/app/out/renderer/assets/verilog-DDCYnHN8.js +430 -0
  226. package/app/out/renderer/assets/vhdl-DCkMIyT9.js +158 -0
  227. package/app/out/renderer/assets/webidl-BTLTThCm.js +204 -0
  228. package/app/out/renderer/assets/xquery-BgiOC5Ce.js +525 -0
  229. package/app/out/renderer/assets/xychartDiagram-f5964ef8-Bhga-YXm.js +1799 -0
  230. package/app/out/renderer/assets/yacas-b5lAVEIl.js +130 -0
  231. package/app/out/renderer/assets/z80-BZV19vqv.js +93 -0
  232. package/app/out/renderer/index.html +13 -0
  233. package/app/out/skills/community-builtin/README.md +29 -0
  234. package/app/out/skills/community-builtin/document-docx/SKILL.md +44 -0
  235. package/app/out/skills/community-builtin/document-docx/scripts/docx-to-markdown.sh +20 -0
  236. package/app/out/skills/community-builtin/document-docx/scripts/extract-docx-text.sh +28 -0
  237. package/app/out/skills/community-builtin/document-docx/scripts/init-docx-template.sh +32 -0
  238. package/app/out/skills/community-builtin/document-docx/scripts/setup-docx-tools.sh +10 -0
  239. package/app/out/skills/community-builtin/markitdown/SKILL.md +105 -0
  240. package/app/out/skills/community-builtin/markitdown/scripts/batch-convert.sh +40 -0
  241. package/app/out/skills/community-builtin/markitdown/scripts/convert-file.sh +24 -0
  242. package/app/out/skills/community-builtin/markitdown/scripts/setup-markitdown.sh +10 -0
  243. package/app/out/skills/community-builtin/repo-quick-audit/SKILL.md +27 -0
  244. package/app/out/skills/community-builtin/repo-quick-audit/scripts/audit-basics.sh +19 -0
  245. package/app/out/skills/research-pilot-default-project-skills/README.md +23 -0
  246. package/app/out/skills/research-pilot-default-project-skills/citation-management/SKILL.md +39 -0
  247. package/app/out/skills/research-pilot-default-project-skills/citation-management/scripts/doi-to-bibtex.sh +25 -0
  248. package/app/out/skills/research-pilot-default-project-skills/citation-management/scripts/normalize-bibtex-keys.sh +51 -0
  249. package/app/out/skills/research-pilot-default-project-skills/citation-management/scripts/setup-citation-tools.sh +10 -0
  250. package/app/out/skills/research-pilot-default-project-skills/citation-management/scripts/validate-bib.sh +31 -0
  251. package/app/out/skills/research-pilot-default-project-skills/matplotlib/SKILL.md +34 -0
  252. package/app/out/skills/research-pilot-default-project-skills/matplotlib/references/api_reference.md +412 -0
  253. package/app/out/skills/research-pilot-default-project-skills/matplotlib/references/common_issues.md +563 -0
  254. package/app/out/skills/research-pilot-default-project-skills/matplotlib/references/plot_types.md +476 -0
  255. package/app/out/skills/research-pilot-default-project-skills/matplotlib/references/styling_guide.md +589 -0
  256. package/app/out/skills/research-pilot-default-project-skills/matplotlib/references/subagent_quickstart.md +30 -0
  257. package/app/out/skills/research-pilot-default-project-skills/matplotlib/scripts/plot_template.py +401 -0
  258. package/app/out/skills/research-pilot-default-project-skills/matplotlib/scripts/style_configurator.py +409 -0
  259. package/app/out/skills/research-pilot-default-project-skills/research-grants/SKILL.md +38 -0
  260. package/app/out/skills/research-pilot-default-project-skills/research-grants/scripts/check-grant-compliance.sh +40 -0
  261. package/app/out/skills/research-pilot-default-project-skills/research-grants/scripts/grant-summary-card.sh +32 -0
  262. package/app/out/skills/research-pilot-default-project-skills/research-grants/scripts/init-grant-structure.sh +70 -0
  263. package/app/package.json +77 -0
  264. package/bin/cli.mjs +56 -0
  265. package/lib/README.md +145 -0
  266. package/lib/skills/_generated.ts +13 -0
  267. package/lib/skills/builtin/brainstorming-research-ideas/SKILL.md +280 -0
  268. package/lib/skills/builtin/coding/SKILL.md +114 -0
  269. package/lib/skills/builtin/creative-thinking-for-research/SKILL.md +273 -0
  270. package/lib/skills/builtin/matplotlib/SKILL.md +361 -0
  271. package/lib/skills/builtin/matplotlib/references/api_reference.md +412 -0
  272. package/lib/skills/builtin/matplotlib/references/common_issues.md +563 -0
  273. package/lib/skills/builtin/matplotlib/references/plot_types.md +476 -0
  274. package/lib/skills/builtin/matplotlib/references/styling_guide.md +589 -0
  275. package/lib/skills/builtin/matplotlib/scripts/plot_template.py +401 -0
  276. package/lib/skills/builtin/matplotlib/scripts/style_configurator.py +409 -0
  277. package/lib/skills/builtin/paper-writing/SKILL.md +554 -0
  278. package/lib/skills/builtin/paper-writing/references/checklists.md +524 -0
  279. package/lib/skills/builtin/paper-writing/references/citation-workflow.md +562 -0
  280. package/lib/skills/builtin/paper-writing/references/reviewer-guidelines.md +462 -0
  281. package/lib/skills/builtin/paper-writing/references/sources.md +189 -0
  282. package/lib/skills/builtin/paper-writing/references/systems-conferences.md +260 -0
  283. package/lib/skills/builtin/paper-writing/references/writing-guide.md +476 -0
  284. package/lib/skills/builtin/paper-writing/templates/README.md +408 -0
  285. package/lib/skills/builtin/paper-writing/templates/aaai2026/README.md +534 -0
  286. package/lib/skills/builtin/paper-writing/templates/aaai2026/aaai2026-unified-supp.tex +144 -0
  287. package/lib/skills/builtin/paper-writing/templates/aaai2026/aaai2026-unified-template.tex +952 -0
  288. package/lib/skills/builtin/paper-writing/templates/aaai2026/aaai2026.bib +111 -0
  289. package/lib/skills/builtin/paper-writing/templates/aaai2026/aaai2026.bst +1493 -0
  290. package/lib/skills/builtin/paper-writing/templates/aaai2026/aaai2026.sty +315 -0
  291. package/lib/skills/builtin/paper-writing/templates/acl/README.md +50 -0
  292. package/lib/skills/builtin/paper-writing/templates/acl/acl.sty +312 -0
  293. package/lib/skills/builtin/paper-writing/templates/acl/acl_latex.tex +377 -0
  294. package/lib/skills/builtin/paper-writing/templates/acl/acl_lualatex.tex +101 -0
  295. package/lib/skills/builtin/paper-writing/templates/acl/acl_natbib.bst +1940 -0
  296. package/lib/skills/builtin/paper-writing/templates/acl/anthology.bib.txt +26 -0
  297. package/lib/skills/builtin/paper-writing/templates/acl/custom.bib +70 -0
  298. package/lib/skills/builtin/paper-writing/templates/acl/formatting.md +326 -0
  299. package/lib/skills/builtin/paper-writing/templates/asplos2027/main.tex +459 -0
  300. package/lib/skills/builtin/paper-writing/templates/asplos2027/references.bib +135 -0
  301. package/lib/skills/builtin/paper-writing/templates/colm2025/README.md +3 -0
  302. package/lib/skills/builtin/paper-writing/templates/colm2025/colm2025_conference.bib +11 -0
  303. package/lib/skills/builtin/paper-writing/templates/colm2025/colm2025_conference.bst +1440 -0
  304. package/lib/skills/builtin/paper-writing/templates/colm2025/colm2025_conference.pdf +0 -0
  305. package/lib/skills/builtin/paper-writing/templates/colm2025/colm2025_conference.sty +218 -0
  306. package/lib/skills/builtin/paper-writing/templates/colm2025/colm2025_conference.tex +305 -0
  307. package/lib/skills/builtin/paper-writing/templates/colm2025/fancyhdr.sty +485 -0
  308. package/lib/skills/builtin/paper-writing/templates/colm2025/math_commands.tex +508 -0
  309. package/lib/skills/builtin/paper-writing/templates/colm2025/natbib.sty +1246 -0
  310. package/lib/skills/builtin/paper-writing/templates/iclr2026/fancyhdr.sty +485 -0
  311. package/lib/skills/builtin/paper-writing/templates/iclr2026/iclr2026_conference.bib +24 -0
  312. package/lib/skills/builtin/paper-writing/templates/iclr2026/iclr2026_conference.bst +1440 -0
  313. package/lib/skills/builtin/paper-writing/templates/iclr2026/iclr2026_conference.pdf +0 -0
  314. package/lib/skills/builtin/paper-writing/templates/iclr2026/iclr2026_conference.sty +246 -0
  315. package/lib/skills/builtin/paper-writing/templates/iclr2026/iclr2026_conference.tex +414 -0
  316. package/lib/skills/builtin/paper-writing/templates/iclr2026/math_commands.tex +508 -0
  317. package/lib/skills/builtin/paper-writing/templates/iclr2026/natbib.sty +1246 -0
  318. package/lib/skills/builtin/paper-writing/templates/icml2026/algorithm.sty +79 -0
  319. package/lib/skills/builtin/paper-writing/templates/icml2026/algorithmic.sty +201 -0
  320. package/lib/skills/builtin/paper-writing/templates/icml2026/example_paper.bib +75 -0
  321. package/lib/skills/builtin/paper-writing/templates/icml2026/example_paper.pdf +0 -0
  322. package/lib/skills/builtin/paper-writing/templates/icml2026/example_paper.tex +662 -0
  323. package/lib/skills/builtin/paper-writing/templates/icml2026/fancyhdr.sty +864 -0
  324. package/lib/skills/builtin/paper-writing/templates/icml2026/icml2026.bst +1443 -0
  325. package/lib/skills/builtin/paper-writing/templates/icml2026/icml2026.sty +767 -0
  326. package/lib/skills/builtin/paper-writing/templates/icml2026/icml_numpapers.pdf +0 -0
  327. package/lib/skills/builtin/paper-writing/templates/neurips2025/Makefile +36 -0
  328. package/lib/skills/builtin/paper-writing/templates/neurips2025/extra_pkgs.tex +53 -0
  329. package/lib/skills/builtin/paper-writing/templates/neurips2025/main.tex +38 -0
  330. package/lib/skills/builtin/paper-writing/templates/neurips2025/neurips.sty +382 -0
  331. package/lib/skills/builtin/paper-writing/templates/nsdi2027/main.tex +426 -0
  332. package/lib/skills/builtin/paper-writing/templates/nsdi2027/references.bib +151 -0
  333. package/lib/skills/builtin/paper-writing/templates/nsdi2027/usenix-2020-09.sty +83 -0
  334. package/lib/skills/builtin/paper-writing/templates/osdi2026/main.tex +429 -0
  335. package/lib/skills/builtin/paper-writing/templates/osdi2026/references.bib +150 -0
  336. package/lib/skills/builtin/paper-writing/templates/osdi2026/usenix-2020-09.sty +83 -0
  337. package/lib/skills/builtin/paper-writing/templates/sosp2026/main.tex +532 -0
  338. package/lib/skills/builtin/paper-writing/templates/sosp2026/references.bib +148 -0
  339. package/lib/skills/builtin/research-grants/SKILL.md +958 -0
  340. package/lib/skills/builtin/research-grants/assets/budget_justification_template.md +453 -0
  341. package/lib/skills/builtin/research-grants/assets/nih_specific_aims_template.md +166 -0
  342. package/lib/skills/builtin/research-grants/assets/nsf_project_summary_template.md +92 -0
  343. package/lib/skills/builtin/research-grants/references/README.md +285 -0
  344. package/lib/skills/builtin/research-grants/references/broader_impacts.md +392 -0
  345. package/lib/skills/builtin/research-grants/references/darpa_guidelines.md +636 -0
  346. package/lib/skills/builtin/research-grants/references/doe_guidelines.md +586 -0
  347. package/lib/skills/builtin/research-grants/references/nih_guidelines.md +851 -0
  348. package/lib/skills/builtin/research-grants/references/nsf_guidelines.md +570 -0
  349. package/lib/skills/builtin/research-grants/references/nstc_guidelines.md +733 -0
  350. package/lib/skills/builtin/research-grants/references/specific_aims_guide.md +458 -0
  351. package/lib/skills/builtin/rewrite-humanize/SKILL.md +116 -0
  352. package/lib/skills/builtin/rewrite-humanize/references/cs-venue-tone.md +57 -0
  353. package/lib/skills/builtin/rewrite-humanize/references/lexicon.md +50 -0
  354. package/lib/skills/builtin/scholar-evaluation/SKILL.md +300 -0
  355. package/lib/skills/builtin/scholar-evaluation/references/evaluation_framework.md +663 -0
  356. package/lib/skills/builtin/scholar-evaluation/scripts/calculate_scores.py +379 -0
  357. package/lib/skills/builtin/scientific-schematics/SKILL.md +603 -0
  358. package/lib/skills/builtin/scientific-schematics/references/QUICK_REFERENCE.md +182 -0
  359. package/lib/skills/builtin/scientific-schematics/references/README.md +292 -0
  360. package/lib/skills/builtin/scientific-schematics/references/best_practices.md +560 -0
  361. package/lib/skills/builtin/scientific-schematics/scripts/__pycache__/generate_schematic.cpython-312.pyc +0 -0
  362. package/lib/skills/builtin/scientific-schematics/scripts/__pycache__/generate_schematic_ai.cpython-312.pyc +0 -0
  363. package/lib/skills/builtin/scientific-schematics/scripts/example_usage.sh +85 -0
  364. package/lib/skills/builtin/scientific-schematics/scripts/generate_schematic.py +141 -0
  365. package/lib/skills/builtin/scientific-schematics/scripts/generate_schematic_ai.py +910 -0
  366. package/lib/skills/builtin/scientific-visualization/SKILL.md +749 -0
  367. package/lib/skills/builtin/scientific-visualization/assets/color_palettes.py +197 -0
  368. package/lib/skills/builtin/scientific-visualization/assets/nature.mplstyle +63 -0
  369. package/lib/skills/builtin/scientific-visualization/assets/presentation.mplstyle +61 -0
  370. package/lib/skills/builtin/scientific-visualization/assets/publication.mplstyle +68 -0
  371. package/lib/skills/builtin/scientific-visualization/references/color_palettes.md +348 -0
  372. package/lib/skills/builtin/scientific-visualization/references/journal_requirements.md +320 -0
  373. package/lib/skills/builtin/scientific-visualization/references/matplotlib_examples.md +620 -0
  374. package/lib/skills/builtin/scientific-visualization/references/publication_guidelines.md +205 -0
  375. package/lib/skills/builtin/scientific-visualization/scripts/figure_export.py +343 -0
  376. package/lib/skills/builtin/scientific-visualization/scripts/style_presets.py +416 -0
  377. package/lib/skills/builtin/scientific-writing/SKILL.md +745 -0
  378. package/lib/skills/builtin/scientific-writing/assets/REPORT_FORMATTING_GUIDE.md +574 -0
  379. package/lib/skills/builtin/scientific-writing/assets/scientific_report.sty +606 -0
  380. package/lib/skills/builtin/scientific-writing/assets/scientific_report_template.tex +449 -0
  381. package/lib/skills/builtin/scientific-writing/references/citation_styles.md +720 -0
  382. package/lib/skills/builtin/scientific-writing/references/figures_tables.md +806 -0
  383. package/lib/skills/builtin/scientific-writing/references/imrad_structure.md +686 -0
  384. package/lib/skills/builtin/scientific-writing/references/professional_report_formatting.md +664 -0
  385. package/lib/skills/builtin/scientific-writing/references/reporting_guidelines.md +748 -0
  386. package/lib/skills/builtin/scientific-writing/references/writing_principles.md +824 -0
  387. package/lib/skills/builtin/seaborn/SKILL.md +674 -0
  388. package/lib/skills/builtin/seaborn/references/examples.md +822 -0
  389. package/lib/skills/builtin/seaborn/references/function_reference.md +770 -0
  390. package/lib/skills/builtin/seaborn/references/objects_interface.md +964 -0
  391. package/lib/skills/data-analysis/SKILL.md +285 -0
  392. package/lib/skills/generate-skill-content.mjs +58 -0
  393. package/lib/skills/index.ts +34 -0
  394. package/lib/skills/loader.ts +452 -0
  395. package/package.json +62 -0
@@ -0,0 +1,1799 @@
1
+ import { m as setAccDescription, n as getAccDescription, H as getDiagramTitle, J as setDiagramTitle, o as getAccTitle, q as setAccTitle, v as log$1, Z as selectSvgElement, w as configureSvgSize, M as clear$1, ai as getConfig$1, z as sanitizeText$2, aM as cleanAndMerge, ab as defaultConfig$2, ac as getThemeVariables$2 } from "./MilkdownMarkdownEditor-bLPxrCVb.js";
2
+ import { a as computeDimensionOfText } from "./createText-1719965b-Cji7KN4K.js";
3
+ import { i as initRange } from "./init-ZxktEp_H.js";
4
+ import { o as ordinal } from "./ordinal-DSZU4PqD.js";
5
+ import { l as linear } from "./linear-DIg7lTe1.js";
6
+ import { l as line } from "./line-CAgaGl-S.js";
7
+ import "./index-BqDyyRCx.js";
8
+ import "./array-DgktLKBx.js";
9
+ import "./path-Cp2qmpkd.js";
10
+ function range(start, stop, step) {
11
+ start = +start, stop = +stop, step = (n = arguments.length) < 2 ? (stop = start, start = 0, 1) : n < 3 ? 1 : +step;
12
+ var i = -1, n = Math.max(0, Math.ceil((stop - start) / step)) | 0, range2 = new Array(n);
13
+ while (++i < n) {
14
+ range2[i] = start + i * step;
15
+ }
16
+ return range2;
17
+ }
18
+ function band() {
19
+ var scale = ordinal().unknown(void 0), domain = scale.domain, ordinalRange = scale.range, r0 = 0, r1 = 1, step, bandwidth, round = false, paddingInner = 0, paddingOuter = 0, align = 0.5;
20
+ delete scale.unknown;
21
+ function rescale() {
22
+ var n = domain().length, reverse = r1 < r0, start = reverse ? r1 : r0, stop = reverse ? r0 : r1;
23
+ step = (stop - start) / Math.max(1, n - paddingInner + paddingOuter * 2);
24
+ if (round) step = Math.floor(step);
25
+ start += (stop - start - step * (n - paddingInner)) * align;
26
+ bandwidth = step * (1 - paddingInner);
27
+ if (round) start = Math.round(start), bandwidth = Math.round(bandwidth);
28
+ var values = range(n).map(function(i) {
29
+ return start + step * i;
30
+ });
31
+ return ordinalRange(reverse ? values.reverse() : values);
32
+ }
33
+ scale.domain = function(_) {
34
+ return arguments.length ? (domain(_), rescale()) : domain();
35
+ };
36
+ scale.range = function(_) {
37
+ return arguments.length ? ([r0, r1] = _, r0 = +r0, r1 = +r1, rescale()) : [r0, r1];
38
+ };
39
+ scale.rangeRound = function(_) {
40
+ return [r0, r1] = _, r0 = +r0, r1 = +r1, round = true, rescale();
41
+ };
42
+ scale.bandwidth = function() {
43
+ return bandwidth;
44
+ };
45
+ scale.step = function() {
46
+ return step;
47
+ };
48
+ scale.round = function(_) {
49
+ return arguments.length ? (round = !!_, rescale()) : round;
50
+ };
51
+ scale.padding = function(_) {
52
+ return arguments.length ? (paddingInner = Math.min(1, paddingOuter = +_), rescale()) : paddingInner;
53
+ };
54
+ scale.paddingInner = function(_) {
55
+ return arguments.length ? (paddingInner = Math.min(1, _), rescale()) : paddingInner;
56
+ };
57
+ scale.paddingOuter = function(_) {
58
+ return arguments.length ? (paddingOuter = +_, rescale()) : paddingOuter;
59
+ };
60
+ scale.align = function(_) {
61
+ return arguments.length ? (align = Math.max(0, Math.min(1, _)), rescale()) : align;
62
+ };
63
+ scale.copy = function() {
64
+ return band(domain(), [r0, r1]).round(round).paddingInner(paddingInner).paddingOuter(paddingOuter).align(align);
65
+ };
66
+ return initRange.apply(rescale(), arguments);
67
+ }
68
+ var parser = function() {
69
+ var o = function(k, v, o2, l) {
70
+ for (o2 = o2 || {}, l = k.length; l--; o2[k[l]] = v)
71
+ ;
72
+ return o2;
73
+ }, $V0 = [1, 10, 12, 14, 16, 18, 19, 21, 23], $V1 = [2, 6], $V2 = [1, 3], $V3 = [1, 5], $V4 = [1, 6], $V5 = [1, 7], $V6 = [1, 5, 10, 12, 14, 16, 18, 19, 21, 23, 34, 35, 36], $V7 = [1, 25], $V8 = [1, 26], $V9 = [1, 28], $Va = [1, 29], $Vb = [1, 30], $Vc = [1, 31], $Vd = [1, 32], $Ve = [1, 33], $Vf = [1, 34], $Vg = [1, 35], $Vh = [1, 36], $Vi = [1, 37], $Vj = [1, 43], $Vk = [1, 42], $Vl = [1, 47], $Vm = [1, 50], $Vn = [1, 10, 12, 14, 16, 18, 19, 21, 23, 34, 35, 36], $Vo = [1, 10, 12, 14, 16, 18, 19, 21, 23, 24, 26, 27, 28, 34, 35, 36], $Vp = [1, 10, 12, 14, 16, 18, 19, 21, 23, 24, 26, 27, 28, 34, 35, 36, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50], $Vq = [1, 64];
74
+ var parser2 = {
75
+ trace: function trace() {
76
+ },
77
+ yy: {},
78
+ 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, "commaSeparatedNumbers": 25, "SQUARE_BRACES_END": 26, "NUMBER_WITH_DECIMAL": 27, "COMMA": 28, "xAxisData": 29, "bandData": 30, "ARROW_DELIMITER": 31, "commaSeparatedTexts": 32, "yAxisData": 33, "NEWLINE": 34, "SEMI": 35, "EOF": 36, "alphaNum": 37, "STR": 38, "MD_STR": 39, "alphaNumToken": 40, "AMP": 41, "NUM": 42, "ALPHA": 43, "PLUS": 44, "EQUALS": 45, "MULT": 46, "DOT": 47, "BRKT": 48, "MINUS": 49, "UNDERSCORE": 50, "$accept": 0, "$end": 1 },
79
+ 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", 27: "NUMBER_WITH_DECIMAL", 28: "COMMA", 31: "ARROW_DELIMITER", 34: "NEWLINE", 35: "SEMI", 36: "EOF", 38: "STR", 39: "MD_STR", 41: "AMP", 42: "NUM", 43: "ALPHA", 44: "PLUS", 45: "EQUALS", 46: "MULT", 47: "DOT", 48: "BRKT", 49: "MINUS", 50: "UNDERSCORE" },
80
+ 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], [13, 1], [13, 2], [13, 1], [29, 1], [29, 3], [30, 3], [32, 3], [32, 1], [15, 1], [15, 2], [15, 1], [33, 3], [4, 1], [4, 1], [4, 1], [11, 1], [11, 1], [11, 1], [37, 1], [37, 2], [40, 1], [40, 1], [40, 1], [40, 1], [40, 1], [40, 1], [40, 1], [40, 1], [40, 1], [40, 1]],
81
+ performAction: function anonymous(yytext, yyleng, yylineno, yy, yystate, $$, _$) {
82
+ var $0 = $$.length - 1;
83
+ switch (yystate) {
84
+ case 5:
85
+ yy.setOrientation($$[$0]);
86
+ break;
87
+ case 9:
88
+ yy.setDiagramTitle($$[$0].text.trim());
89
+ break;
90
+ case 12:
91
+ yy.setLineData({ text: "", type: "text" }, $$[$0]);
92
+ break;
93
+ case 13:
94
+ yy.setLineData($$[$0 - 1], $$[$0]);
95
+ break;
96
+ case 14:
97
+ yy.setBarData({ text: "", type: "text" }, $$[$0]);
98
+ break;
99
+ case 15:
100
+ yy.setBarData($$[$0 - 1], $$[$0]);
101
+ break;
102
+ case 16:
103
+ this.$ = $$[$0].trim();
104
+ yy.setAccTitle(this.$);
105
+ break;
106
+ case 17:
107
+ case 18:
108
+ this.$ = $$[$0].trim();
109
+ yy.setAccDescription(this.$);
110
+ break;
111
+ case 19:
112
+ this.$ = $$[$0 - 1];
113
+ break;
114
+ case 20:
115
+ this.$ = [Number($$[$0 - 2]), ...$$[$0]];
116
+ break;
117
+ case 21:
118
+ this.$ = [Number($$[$0])];
119
+ break;
120
+ case 22:
121
+ yy.setXAxisTitle($$[$0]);
122
+ break;
123
+ case 23:
124
+ yy.setXAxisTitle($$[$0 - 1]);
125
+ break;
126
+ case 24:
127
+ yy.setXAxisTitle({ type: "text", text: "" });
128
+ break;
129
+ case 25:
130
+ yy.setXAxisBand($$[$0]);
131
+ break;
132
+ case 26:
133
+ yy.setXAxisRangeData(Number($$[$0 - 2]), Number($$[$0]));
134
+ break;
135
+ case 27:
136
+ this.$ = $$[$0 - 1];
137
+ break;
138
+ case 28:
139
+ this.$ = [$$[$0 - 2], ...$$[$0]];
140
+ break;
141
+ case 29:
142
+ this.$ = [$$[$0]];
143
+ break;
144
+ case 30:
145
+ yy.setYAxisTitle($$[$0]);
146
+ break;
147
+ case 31:
148
+ yy.setYAxisTitle($$[$0 - 1]);
149
+ break;
150
+ case 32:
151
+ yy.setYAxisTitle({ type: "text", text: "" });
152
+ break;
153
+ case 33:
154
+ yy.setYAxisRangeData(Number($$[$0 - 2]), Number($$[$0]));
155
+ break;
156
+ case 37:
157
+ this.$ = { text: $$[$0], type: "text" };
158
+ break;
159
+ case 38:
160
+ this.$ = { text: $$[$0], type: "text" };
161
+ break;
162
+ case 39:
163
+ this.$ = { text: $$[$0], type: "markdown" };
164
+ break;
165
+ case 40:
166
+ this.$ = $$[$0];
167
+ break;
168
+ case 41:
169
+ this.$ = $$[$0 - 1] + "" + $$[$0];
170
+ break;
171
+ }
172
+ },
173
+ table: [o($V0, $V1, { 3: 1, 4: 2, 7: 4, 5: $V2, 34: $V3, 35: $V4, 36: $V5 }), { 1: [3] }, o($V0, $V1, { 4: 2, 7: 4, 3: 8, 5: $V2, 34: $V3, 35: $V4, 36: $V5 }), o($V0, $V1, { 4: 2, 7: 4, 6: 9, 3: 10, 5: $V2, 8: [1, 11], 34: $V3, 35: $V4, 36: $V5 }), { 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] }, o($V6, [2, 34]), o($V6, [2, 35]), o($V6, [2, 36]), { 1: [2, 1] }, o($V0, $V1, { 4: 2, 7: 4, 3: 21, 5: $V2, 34: $V3, 35: $V4, 36: $V5 }), { 1: [2, 3] }, o($V6, [2, 5]), o($V0, [2, 7], { 4: 22, 34: $V3, 35: $V4, 36: $V5 }), { 11: 23, 37: 24, 38: $V7, 39: $V8, 40: 27, 41: $V9, 42: $Va, 43: $Vb, 44: $Vc, 45: $Vd, 46: $Ve, 47: $Vf, 48: $Vg, 49: $Vh, 50: $Vi }, { 11: 39, 13: 38, 24: $Vj, 27: $Vk, 29: 40, 30: 41, 37: 24, 38: $V7, 39: $V8, 40: 27, 41: $V9, 42: $Va, 43: $Vb, 44: $Vc, 45: $Vd, 46: $Ve, 47: $Vf, 48: $Vg, 49: $Vh, 50: $Vi }, { 11: 45, 15: 44, 27: $Vl, 33: 46, 37: 24, 38: $V7, 39: $V8, 40: 27, 41: $V9, 42: $Va, 43: $Vb, 44: $Vc, 45: $Vd, 46: $Ve, 47: $Vf, 48: $Vg, 49: $Vh, 50: $Vi }, { 11: 49, 17: 48, 24: $Vm, 37: 24, 38: $V7, 39: $V8, 40: 27, 41: $V9, 42: $Va, 43: $Vb, 44: $Vc, 45: $Vd, 46: $Ve, 47: $Vf, 48: $Vg, 49: $Vh, 50: $Vi }, { 11: 52, 17: 51, 24: $Vm, 37: 24, 38: $V7, 39: $V8, 40: 27, 41: $V9, 42: $Va, 43: $Vb, 44: $Vc, 45: $Vd, 46: $Ve, 47: $Vf, 48: $Vg, 49: $Vh, 50: $Vi }, { 20: [1, 53] }, { 22: [1, 54] }, o($Vn, [2, 18]), { 1: [2, 2] }, o($Vn, [2, 8]), o($Vn, [2, 9]), o($Vo, [2, 37], { 40: 55, 41: $V9, 42: $Va, 43: $Vb, 44: $Vc, 45: $Vd, 46: $Ve, 47: $Vf, 48: $Vg, 49: $Vh, 50: $Vi }), o($Vo, [2, 38]), o($Vo, [2, 39]), o($Vp, [2, 40]), o($Vp, [2, 42]), o($Vp, [2, 43]), o($Vp, [2, 44]), o($Vp, [2, 45]), o($Vp, [2, 46]), o($Vp, [2, 47]), o($Vp, [2, 48]), o($Vp, [2, 49]), o($Vp, [2, 50]), o($Vp, [2, 51]), o($Vn, [2, 10]), o($Vn, [2, 22], { 30: 41, 29: 56, 24: $Vj, 27: $Vk }), o($Vn, [2, 24]), o($Vn, [2, 25]), { 31: [1, 57] }, { 11: 59, 32: 58, 37: 24, 38: $V7, 39: $V8, 40: 27, 41: $V9, 42: $Va, 43: $Vb, 44: $Vc, 45: $Vd, 46: $Ve, 47: $Vf, 48: $Vg, 49: $Vh, 50: $Vi }, o($Vn, [2, 11]), o($Vn, [2, 30], { 33: 60, 27: $Vl }), o($Vn, [2, 32]), { 31: [1, 61] }, o($Vn, [2, 12]), { 17: 62, 24: $Vm }, { 25: 63, 27: $Vq }, o($Vn, [2, 14]), { 17: 65, 24: $Vm }, o($Vn, [2, 16]), o($Vn, [2, 17]), o($Vp, [2, 41]), o($Vn, [2, 23]), { 27: [1, 66] }, { 26: [1, 67] }, { 26: [2, 29], 28: [1, 68] }, o($Vn, [2, 31]), { 27: [1, 69] }, o($Vn, [2, 13]), { 26: [1, 70] }, { 26: [2, 21], 28: [1, 71] }, o($Vn, [2, 15]), o($Vn, [2, 26]), o($Vn, [2, 27]), { 11: 59, 32: 72, 37: 24, 38: $V7, 39: $V8, 40: 27, 41: $V9, 42: $Va, 43: $Vb, 44: $Vc, 45: $Vd, 46: $Ve, 47: $Vf, 48: $Vg, 49: $Vh, 50: $Vi }, o($Vn, [2, 33]), o($Vn, [2, 19]), { 25: 73, 27: $Vq }, { 26: [2, 28] }, { 26: [2, 20] }],
174
+ defaultActions: { 8: [2, 1], 10: [2, 3], 21: [2, 2], 72: [2, 28], 73: [2, 20] },
175
+ parseError: function parseError(str, hash) {
176
+ if (hash.recoverable) {
177
+ this.trace(str);
178
+ } else {
179
+ var error = new Error(str);
180
+ error.hash = hash;
181
+ throw error;
182
+ }
183
+ },
184
+ parse: function parse(input) {
185
+ var self = this, stack = [0], tstack = [], vstack = [null], lstack = [], table = this.table, yytext = "", yylineno = 0, yyleng = 0, TERROR = 2, EOF = 1;
186
+ var args = lstack.slice.call(arguments, 1);
187
+ var lexer2 = Object.create(this.lexer);
188
+ var sharedState = { yy: {} };
189
+ for (var k in this.yy) {
190
+ if (Object.prototype.hasOwnProperty.call(this.yy, k)) {
191
+ sharedState.yy[k] = this.yy[k];
192
+ }
193
+ }
194
+ lexer2.setInput(input, sharedState.yy);
195
+ sharedState.yy.lexer = lexer2;
196
+ sharedState.yy.parser = this;
197
+ if (typeof lexer2.yylloc == "undefined") {
198
+ lexer2.yylloc = {};
199
+ }
200
+ var yyloc = lexer2.yylloc;
201
+ lstack.push(yyloc);
202
+ var ranges = lexer2.options && lexer2.options.ranges;
203
+ if (typeof sharedState.yy.parseError === "function") {
204
+ this.parseError = sharedState.yy.parseError;
205
+ } else {
206
+ this.parseError = Object.getPrototypeOf(this).parseError;
207
+ }
208
+ function lex() {
209
+ var token;
210
+ token = tstack.pop() || lexer2.lex() || EOF;
211
+ if (typeof token !== "number") {
212
+ if (token instanceof Array) {
213
+ tstack = token;
214
+ token = tstack.pop();
215
+ }
216
+ token = self.symbols_[token] || token;
217
+ }
218
+ return token;
219
+ }
220
+ var symbol, state, action, r, yyval = {}, p, len, newState, expected;
221
+ while (true) {
222
+ state = stack[stack.length - 1];
223
+ if (this.defaultActions[state]) {
224
+ action = this.defaultActions[state];
225
+ } else {
226
+ if (symbol === null || typeof symbol == "undefined") {
227
+ symbol = lex();
228
+ }
229
+ action = table[state] && table[state][symbol];
230
+ }
231
+ if (typeof action === "undefined" || !action.length || !action[0]) {
232
+ var errStr = "";
233
+ expected = [];
234
+ for (p in table[state]) {
235
+ if (this.terminals_[p] && p > TERROR) {
236
+ expected.push("'" + this.terminals_[p] + "'");
237
+ }
238
+ }
239
+ if (lexer2.showPosition) {
240
+ errStr = "Parse error on line " + (yylineno + 1) + ":\n" + lexer2.showPosition() + "\nExpecting " + expected.join(", ") + ", got '" + (this.terminals_[symbol] || symbol) + "'";
241
+ } else {
242
+ errStr = "Parse error on line " + (yylineno + 1) + ": Unexpected " + (symbol == EOF ? "end of input" : "'" + (this.terminals_[symbol] || symbol) + "'");
243
+ }
244
+ this.parseError(errStr, {
245
+ text: lexer2.match,
246
+ token: this.terminals_[symbol] || symbol,
247
+ line: lexer2.yylineno,
248
+ loc: yyloc,
249
+ expected
250
+ });
251
+ }
252
+ if (action[0] instanceof Array && action.length > 1) {
253
+ throw new Error("Parse Error: multiple actions possible at state: " + state + ", token: " + symbol);
254
+ }
255
+ switch (action[0]) {
256
+ case 1:
257
+ stack.push(symbol);
258
+ vstack.push(lexer2.yytext);
259
+ lstack.push(lexer2.yylloc);
260
+ stack.push(action[1]);
261
+ symbol = null;
262
+ {
263
+ yyleng = lexer2.yyleng;
264
+ yytext = lexer2.yytext;
265
+ yylineno = lexer2.yylineno;
266
+ yyloc = lexer2.yylloc;
267
+ }
268
+ break;
269
+ case 2:
270
+ len = this.productions_[action[1]][1];
271
+ yyval.$ = vstack[vstack.length - len];
272
+ yyval._$ = {
273
+ first_line: lstack[lstack.length - (len || 1)].first_line,
274
+ last_line: lstack[lstack.length - 1].last_line,
275
+ first_column: lstack[lstack.length - (len || 1)].first_column,
276
+ last_column: lstack[lstack.length - 1].last_column
277
+ };
278
+ if (ranges) {
279
+ yyval._$.range = [
280
+ lstack[lstack.length - (len || 1)].range[0],
281
+ lstack[lstack.length - 1].range[1]
282
+ ];
283
+ }
284
+ r = this.performAction.apply(yyval, [
285
+ yytext,
286
+ yyleng,
287
+ yylineno,
288
+ sharedState.yy,
289
+ action[1],
290
+ vstack,
291
+ lstack
292
+ ].concat(args));
293
+ if (typeof r !== "undefined") {
294
+ return r;
295
+ }
296
+ if (len) {
297
+ stack = stack.slice(0, -1 * len * 2);
298
+ vstack = vstack.slice(0, -1 * len);
299
+ lstack = lstack.slice(0, -1 * len);
300
+ }
301
+ stack.push(this.productions_[action[1]][0]);
302
+ vstack.push(yyval.$);
303
+ lstack.push(yyval._$);
304
+ newState = table[stack[stack.length - 2]][stack[stack.length - 1]];
305
+ stack.push(newState);
306
+ break;
307
+ case 3:
308
+ return true;
309
+ }
310
+ }
311
+ return true;
312
+ }
313
+ };
314
+ var lexer = /* @__PURE__ */ function() {
315
+ var lexer2 = {
316
+ EOF: 1,
317
+ parseError: function parseError(str, hash) {
318
+ if (this.yy.parser) {
319
+ this.yy.parser.parseError(str, hash);
320
+ } else {
321
+ throw new Error(str);
322
+ }
323
+ },
324
+ // resets the lexer, sets new input
325
+ setInput: function(input, yy) {
326
+ this.yy = yy || this.yy || {};
327
+ this._input = input;
328
+ this._more = this._backtrack = this.done = false;
329
+ this.yylineno = this.yyleng = 0;
330
+ this.yytext = this.matched = this.match = "";
331
+ this.conditionStack = ["INITIAL"];
332
+ this.yylloc = {
333
+ first_line: 1,
334
+ first_column: 0,
335
+ last_line: 1,
336
+ last_column: 0
337
+ };
338
+ if (this.options.ranges) {
339
+ this.yylloc.range = [0, 0];
340
+ }
341
+ this.offset = 0;
342
+ return this;
343
+ },
344
+ // consumes and returns one char from the input
345
+ input: function() {
346
+ var ch = this._input[0];
347
+ this.yytext += ch;
348
+ this.yyleng++;
349
+ this.offset++;
350
+ this.match += ch;
351
+ this.matched += ch;
352
+ var lines = ch.match(/(?:\r\n?|\n).*/g);
353
+ if (lines) {
354
+ this.yylineno++;
355
+ this.yylloc.last_line++;
356
+ } else {
357
+ this.yylloc.last_column++;
358
+ }
359
+ if (this.options.ranges) {
360
+ this.yylloc.range[1]++;
361
+ }
362
+ this._input = this._input.slice(1);
363
+ return ch;
364
+ },
365
+ // unshifts one char (or a string) into the input
366
+ unput: function(ch) {
367
+ var len = ch.length;
368
+ var lines = ch.split(/(?:\r\n?|\n)/g);
369
+ this._input = ch + this._input;
370
+ this.yytext = this.yytext.substr(0, this.yytext.length - len);
371
+ this.offset -= len;
372
+ var oldLines = this.match.split(/(?:\r\n?|\n)/g);
373
+ this.match = this.match.substr(0, this.match.length - 1);
374
+ this.matched = this.matched.substr(0, this.matched.length - 1);
375
+ if (lines.length - 1) {
376
+ this.yylineno -= lines.length - 1;
377
+ }
378
+ var r = this.yylloc.range;
379
+ this.yylloc = {
380
+ first_line: this.yylloc.first_line,
381
+ last_line: this.yylineno + 1,
382
+ first_column: this.yylloc.first_column,
383
+ last_column: lines ? (lines.length === oldLines.length ? this.yylloc.first_column : 0) + oldLines[oldLines.length - lines.length].length - lines[0].length : this.yylloc.first_column - len
384
+ };
385
+ if (this.options.ranges) {
386
+ this.yylloc.range = [r[0], r[0] + this.yyleng - len];
387
+ }
388
+ this.yyleng = this.yytext.length;
389
+ return this;
390
+ },
391
+ // When called from action, caches matched text and appends it on next action
392
+ more: function() {
393
+ this._more = true;
394
+ return this;
395
+ },
396
+ // When called from action, signals the lexer that this rule fails to match the input, so the next matching rule (regex) should be tested instead.
397
+ reject: function() {
398
+ if (this.options.backtrack_lexer) {
399
+ this._backtrack = true;
400
+ } else {
401
+ 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).\n" + this.showPosition(), {
402
+ text: "",
403
+ token: null,
404
+ line: this.yylineno
405
+ });
406
+ }
407
+ return this;
408
+ },
409
+ // retain first n characters of the match
410
+ less: function(n) {
411
+ this.unput(this.match.slice(n));
412
+ },
413
+ // displays already matched input, i.e. for error messages
414
+ pastInput: function() {
415
+ var past = this.matched.substr(0, this.matched.length - this.match.length);
416
+ return (past.length > 20 ? "..." : "") + past.substr(-20).replace(/\n/g, "");
417
+ },
418
+ // displays upcoming input, i.e. for error messages
419
+ upcomingInput: function() {
420
+ var next = this.match;
421
+ if (next.length < 20) {
422
+ next += this._input.substr(0, 20 - next.length);
423
+ }
424
+ return (next.substr(0, 20) + (next.length > 20 ? "..." : "")).replace(/\n/g, "");
425
+ },
426
+ // displays the character position where the lexing error occurred, i.e. for error messages
427
+ showPosition: function() {
428
+ var pre = this.pastInput();
429
+ var c = new Array(pre.length + 1).join("-");
430
+ return pre + this.upcomingInput() + "\n" + c + "^";
431
+ },
432
+ // test the lexed token: return FALSE when not a match, otherwise return token
433
+ test_match: function(match, indexed_rule) {
434
+ var token, lines, backup;
435
+ if (this.options.backtrack_lexer) {
436
+ backup = {
437
+ yylineno: this.yylineno,
438
+ yylloc: {
439
+ first_line: this.yylloc.first_line,
440
+ last_line: this.last_line,
441
+ first_column: this.yylloc.first_column,
442
+ last_column: this.yylloc.last_column
443
+ },
444
+ yytext: this.yytext,
445
+ match: this.match,
446
+ matches: this.matches,
447
+ matched: this.matched,
448
+ yyleng: this.yyleng,
449
+ offset: this.offset,
450
+ _more: this._more,
451
+ _input: this._input,
452
+ yy: this.yy,
453
+ conditionStack: this.conditionStack.slice(0),
454
+ done: this.done
455
+ };
456
+ if (this.options.ranges) {
457
+ backup.yylloc.range = this.yylloc.range.slice(0);
458
+ }
459
+ }
460
+ lines = match[0].match(/(?:\r\n?|\n).*/g);
461
+ if (lines) {
462
+ this.yylineno += lines.length;
463
+ }
464
+ this.yylloc = {
465
+ first_line: this.yylloc.last_line,
466
+ last_line: this.yylineno + 1,
467
+ first_column: this.yylloc.last_column,
468
+ last_column: lines ? lines[lines.length - 1].length - lines[lines.length - 1].match(/\r?\n?/)[0].length : this.yylloc.last_column + match[0].length
469
+ };
470
+ this.yytext += match[0];
471
+ this.match += match[0];
472
+ this.matches = match;
473
+ this.yyleng = this.yytext.length;
474
+ if (this.options.ranges) {
475
+ this.yylloc.range = [this.offset, this.offset += this.yyleng];
476
+ }
477
+ this._more = false;
478
+ this._backtrack = false;
479
+ this._input = this._input.slice(match[0].length);
480
+ this.matched += match[0];
481
+ token = this.performAction.call(this, this.yy, this, indexed_rule, this.conditionStack[this.conditionStack.length - 1]);
482
+ if (this.done && this._input) {
483
+ this.done = false;
484
+ }
485
+ if (token) {
486
+ return token;
487
+ } else if (this._backtrack) {
488
+ for (var k in backup) {
489
+ this[k] = backup[k];
490
+ }
491
+ return false;
492
+ }
493
+ return false;
494
+ },
495
+ // return next match in input
496
+ next: function() {
497
+ if (this.done) {
498
+ return this.EOF;
499
+ }
500
+ if (!this._input) {
501
+ this.done = true;
502
+ }
503
+ var token, match, tempMatch, index;
504
+ if (!this._more) {
505
+ this.yytext = "";
506
+ this.match = "";
507
+ }
508
+ var rules = this._currentRules();
509
+ for (var i = 0; i < rules.length; i++) {
510
+ tempMatch = this._input.match(this.rules[rules[i]]);
511
+ if (tempMatch && (!match || tempMatch[0].length > match[0].length)) {
512
+ match = tempMatch;
513
+ index = i;
514
+ if (this.options.backtrack_lexer) {
515
+ token = this.test_match(tempMatch, rules[i]);
516
+ if (token !== false) {
517
+ return token;
518
+ } else if (this._backtrack) {
519
+ match = false;
520
+ continue;
521
+ } else {
522
+ return false;
523
+ }
524
+ } else if (!this.options.flex) {
525
+ break;
526
+ }
527
+ }
528
+ }
529
+ if (match) {
530
+ token = this.test_match(match, rules[index]);
531
+ if (token !== false) {
532
+ return token;
533
+ }
534
+ return false;
535
+ }
536
+ if (this._input === "") {
537
+ return this.EOF;
538
+ } else {
539
+ return this.parseError("Lexical error on line " + (this.yylineno + 1) + ". Unrecognized text.\n" + this.showPosition(), {
540
+ text: "",
541
+ token: null,
542
+ line: this.yylineno
543
+ });
544
+ }
545
+ },
546
+ // return next match that has a token
547
+ lex: function lex() {
548
+ var r = this.next();
549
+ if (r) {
550
+ return r;
551
+ } else {
552
+ return this.lex();
553
+ }
554
+ },
555
+ // activates a new lexer condition state (pushes the new lexer condition state onto the condition stack)
556
+ begin: function begin(condition) {
557
+ this.conditionStack.push(condition);
558
+ },
559
+ // pop the previously active lexer condition state off the condition stack
560
+ popState: function popState() {
561
+ var n = this.conditionStack.length - 1;
562
+ if (n > 0) {
563
+ return this.conditionStack.pop();
564
+ } else {
565
+ return this.conditionStack[0];
566
+ }
567
+ },
568
+ // produce the lexer rule set which is active for the currently active lexer condition state
569
+ _currentRules: function _currentRules() {
570
+ if (this.conditionStack.length && this.conditionStack[this.conditionStack.length - 1]) {
571
+ return this.conditions[this.conditionStack[this.conditionStack.length - 1]].rules;
572
+ } else {
573
+ return this.conditions["INITIAL"].rules;
574
+ }
575
+ },
576
+ // return the currently active lexer condition state; when an index argument is provided it produces the N-th previous condition state, if available
577
+ topState: function topState(n) {
578
+ n = this.conditionStack.length - 1 - Math.abs(n || 0);
579
+ if (n >= 0) {
580
+ return this.conditionStack[n];
581
+ } else {
582
+ return "INITIAL";
583
+ }
584
+ },
585
+ // alias for begin(condition)
586
+ pushState: function pushState(condition) {
587
+ this.begin(condition);
588
+ },
589
+ // return the number of states currently on the stack
590
+ stateStackSize: function stateStackSize() {
591
+ return this.conditionStack.length;
592
+ },
593
+ options: { "case-insensitive": true },
594
+ performAction: function anonymous(yy, yy_, $avoiding_name_collisions, YY_START) {
595
+ switch ($avoiding_name_collisions) {
596
+ case 0:
597
+ break;
598
+ case 1:
599
+ break;
600
+ case 2:
601
+ this.popState();
602
+ return 34;
603
+ case 3:
604
+ this.popState();
605
+ return 34;
606
+ case 4:
607
+ return 34;
608
+ case 5:
609
+ break;
610
+ case 6:
611
+ return 10;
612
+ case 7:
613
+ this.pushState("acc_title");
614
+ return 19;
615
+ case 8:
616
+ this.popState();
617
+ return "acc_title_value";
618
+ case 9:
619
+ this.pushState("acc_descr");
620
+ return 21;
621
+ case 10:
622
+ this.popState();
623
+ return "acc_descr_value";
624
+ case 11:
625
+ this.pushState("acc_descr_multiline");
626
+ break;
627
+ case 12:
628
+ this.popState();
629
+ break;
630
+ case 13:
631
+ return "acc_descr_multiline_value";
632
+ case 14:
633
+ return 5;
634
+ case 15:
635
+ return 8;
636
+ case 16:
637
+ this.pushState("axis_data");
638
+ return "X_AXIS";
639
+ case 17:
640
+ this.pushState("axis_data");
641
+ return "Y_AXIS";
642
+ case 18:
643
+ this.pushState("axis_band_data");
644
+ return 24;
645
+ case 19:
646
+ return 31;
647
+ case 20:
648
+ this.pushState("data");
649
+ return 16;
650
+ case 21:
651
+ this.pushState("data");
652
+ return 18;
653
+ case 22:
654
+ this.pushState("data_inner");
655
+ return 24;
656
+ case 23:
657
+ return 27;
658
+ case 24:
659
+ this.popState();
660
+ return 26;
661
+ case 25:
662
+ this.popState();
663
+ break;
664
+ case 26:
665
+ this.pushState("string");
666
+ break;
667
+ case 27:
668
+ this.popState();
669
+ break;
670
+ case 28:
671
+ return "STR";
672
+ case 29:
673
+ return 24;
674
+ case 30:
675
+ return 26;
676
+ case 31:
677
+ return 43;
678
+ case 32:
679
+ return "COLON";
680
+ case 33:
681
+ return 44;
682
+ case 34:
683
+ return 28;
684
+ case 35:
685
+ return 45;
686
+ case 36:
687
+ return 46;
688
+ case 37:
689
+ return 48;
690
+ case 38:
691
+ return 50;
692
+ case 39:
693
+ return 47;
694
+ case 40:
695
+ return 41;
696
+ case 41:
697
+ return 49;
698
+ case 42:
699
+ return 42;
700
+ case 43:
701
+ break;
702
+ case 44:
703
+ return 35;
704
+ case 45:
705
+ return 36;
706
+ }
707
+ },
708
+ 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, /^(?:(?: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],
709
+ conditions: { "data_inner": { "rules": [0, 1, 4, 5, 6, 7, 9, 11, 14, 15, 16, 17, 20, 21, 23, 24, 25, 26, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45], "inclusive": true }, "data": { "rules": [0, 1, 3, 4, 5, 6, 7, 9, 11, 14, 15, 16, 17, 20, 21, 22, 25, 26, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45], "inclusive": true }, "axis_band_data": { "rules": [0, 1, 4, 5, 6, 7, 9, 11, 14, 15, 16, 17, 20, 21, 24, 25, 26, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45], "inclusive": true }, "axis_data": { "rules": [0, 1, 2, 4, 5, 6, 7, 9, 11, 14, 15, 16, 17, 18, 19, 20, 21, 23, 25, 26, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45], "inclusive": true }, "acc_descr_multiline": { "rules": [12, 13], "inclusive": false }, "acc_descr": { "rules": [10], "inclusive": false }, "acc_title": { "rules": [8], "inclusive": false }, "title": { "rules": [], "inclusive": false }, "md_string": { "rules": [], "inclusive": false }, "string": { "rules": [27, 28], "inclusive": false }, "INITIAL": { "rules": [0, 1, 4, 5, 6, 7, 9, 11, 14, 15, 16, 17, 20, 21, 25, 26, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45], "inclusive": true } }
710
+ };
711
+ return lexer2;
712
+ }();
713
+ parser2.lexer = lexer;
714
+ function Parser() {
715
+ this.yy = {};
716
+ }
717
+ Parser.prototype = parser2;
718
+ parser2.Parser = Parser;
719
+ return new Parser();
720
+ }();
721
+ parser.parser = parser;
722
+ const parser$1 = parser;
723
+ function isBarPlot(data) {
724
+ return data.type === "bar";
725
+ }
726
+ function isBandAxisData(data) {
727
+ return data.type === "band";
728
+ }
729
+ function isLinearAxisData(data) {
730
+ return data.type === "linear";
731
+ }
732
+ class TextDimensionCalculatorWithFont {
733
+ constructor(parentGroup) {
734
+ this.parentGroup = parentGroup;
735
+ }
736
+ getMaxDimension(texts, fontSize) {
737
+ if (!this.parentGroup) {
738
+ return {
739
+ width: texts.reduce((acc, cur) => Math.max(cur.length, acc), 0) * fontSize,
740
+ height: fontSize
741
+ };
742
+ }
743
+ const dimension = {
744
+ width: 0,
745
+ height: 0
746
+ };
747
+ const elem = this.parentGroup.append("g").attr("visibility", "hidden").attr("font-size", fontSize);
748
+ for (const t of texts) {
749
+ const bbox = computeDimensionOfText(elem, 1, t);
750
+ const width = bbox ? bbox.width : t.length * fontSize;
751
+ const height = bbox ? bbox.height : fontSize;
752
+ dimension.width = Math.max(dimension.width, width);
753
+ dimension.height = Math.max(dimension.height, height);
754
+ }
755
+ elem.remove();
756
+ return dimension;
757
+ }
758
+ }
759
+ const BAR_WIDTH_TO_TICK_WIDTH_RATIO = 0.7;
760
+ const MAX_OUTER_PADDING_PERCENT_FOR_WRT_LABEL = 0.2;
761
+ class BaseAxis {
762
+ constructor(axisConfig, title, textDimensionCalculator, axisThemeConfig) {
763
+ this.axisConfig = axisConfig;
764
+ this.title = title;
765
+ this.textDimensionCalculator = textDimensionCalculator;
766
+ this.axisThemeConfig = axisThemeConfig;
767
+ this.boundingRect = { x: 0, y: 0, width: 0, height: 0 };
768
+ this.axisPosition = "left";
769
+ this.showTitle = false;
770
+ this.showLabel = false;
771
+ this.showTick = false;
772
+ this.showAxisLine = false;
773
+ this.outerPadding = 0;
774
+ this.titleTextHeight = 0;
775
+ this.labelTextHeight = 0;
776
+ this.range = [0, 10];
777
+ this.boundingRect = { x: 0, y: 0, width: 0, height: 0 };
778
+ this.axisPosition = "left";
779
+ }
780
+ setRange(range2) {
781
+ this.range = range2;
782
+ if (this.axisPosition === "left" || this.axisPosition === "right") {
783
+ this.boundingRect.height = range2[1] - range2[0];
784
+ } else {
785
+ this.boundingRect.width = range2[1] - range2[0];
786
+ }
787
+ this.recalculateScale();
788
+ }
789
+ getRange() {
790
+ return [this.range[0] + this.outerPadding, this.range[1] - this.outerPadding];
791
+ }
792
+ setAxisPosition(axisPosition) {
793
+ this.axisPosition = axisPosition;
794
+ this.setRange(this.range);
795
+ }
796
+ getTickDistance() {
797
+ const range2 = this.getRange();
798
+ return Math.abs(range2[0] - range2[1]) / this.getTickValues().length;
799
+ }
800
+ getAxisOuterPadding() {
801
+ return this.outerPadding;
802
+ }
803
+ getLabelDimension() {
804
+ return this.textDimensionCalculator.getMaxDimension(
805
+ this.getTickValues().map((tick) => tick.toString()),
806
+ this.axisConfig.labelFontSize
807
+ );
808
+ }
809
+ recalculateOuterPaddingToDrawBar() {
810
+ if (BAR_WIDTH_TO_TICK_WIDTH_RATIO * this.getTickDistance() > this.outerPadding * 2) {
811
+ this.outerPadding = Math.floor(BAR_WIDTH_TO_TICK_WIDTH_RATIO * this.getTickDistance() / 2);
812
+ }
813
+ this.recalculateScale();
814
+ }
815
+ calculateSpaceIfDrawnHorizontally(availableSpace) {
816
+ let availableHeight = availableSpace.height;
817
+ if (this.axisConfig.showAxisLine && availableHeight > this.axisConfig.axisLineWidth) {
818
+ availableHeight -= this.axisConfig.axisLineWidth;
819
+ this.showAxisLine = true;
820
+ }
821
+ if (this.axisConfig.showLabel) {
822
+ const spaceRequired = this.getLabelDimension();
823
+ const maxPadding = MAX_OUTER_PADDING_PERCENT_FOR_WRT_LABEL * availableSpace.width;
824
+ this.outerPadding = Math.min(spaceRequired.width / 2, maxPadding);
825
+ const heightRequired = spaceRequired.height + this.axisConfig.labelPadding * 2;
826
+ this.labelTextHeight = spaceRequired.height;
827
+ if (heightRequired <= availableHeight) {
828
+ availableHeight -= heightRequired;
829
+ this.showLabel = true;
830
+ }
831
+ }
832
+ if (this.axisConfig.showTick && availableHeight >= this.axisConfig.tickLength) {
833
+ this.showTick = true;
834
+ availableHeight -= this.axisConfig.tickLength;
835
+ }
836
+ if (this.axisConfig.showTitle && this.title) {
837
+ const spaceRequired = this.textDimensionCalculator.getMaxDimension(
838
+ [this.title],
839
+ this.axisConfig.titleFontSize
840
+ );
841
+ const heightRequired = spaceRequired.height + this.axisConfig.titlePadding * 2;
842
+ this.titleTextHeight = spaceRequired.height;
843
+ if (heightRequired <= availableHeight) {
844
+ availableHeight -= heightRequired;
845
+ this.showTitle = true;
846
+ }
847
+ }
848
+ this.boundingRect.width = availableSpace.width;
849
+ this.boundingRect.height = availableSpace.height - availableHeight;
850
+ }
851
+ calculateSpaceIfDrawnVertical(availableSpace) {
852
+ let availableWidth = availableSpace.width;
853
+ if (this.axisConfig.showAxisLine && availableWidth > this.axisConfig.axisLineWidth) {
854
+ availableWidth -= this.axisConfig.axisLineWidth;
855
+ this.showAxisLine = true;
856
+ }
857
+ if (this.axisConfig.showLabel) {
858
+ const spaceRequired = this.getLabelDimension();
859
+ const maxPadding = MAX_OUTER_PADDING_PERCENT_FOR_WRT_LABEL * availableSpace.height;
860
+ this.outerPadding = Math.min(spaceRequired.height / 2, maxPadding);
861
+ const widthRequired = spaceRequired.width + this.axisConfig.labelPadding * 2;
862
+ if (widthRequired <= availableWidth) {
863
+ availableWidth -= widthRequired;
864
+ this.showLabel = true;
865
+ }
866
+ }
867
+ if (this.axisConfig.showTick && availableWidth >= this.axisConfig.tickLength) {
868
+ this.showTick = true;
869
+ availableWidth -= this.axisConfig.tickLength;
870
+ }
871
+ if (this.axisConfig.showTitle && this.title) {
872
+ const spaceRequired = this.textDimensionCalculator.getMaxDimension(
873
+ [this.title],
874
+ this.axisConfig.titleFontSize
875
+ );
876
+ const widthRequired = spaceRequired.height + this.axisConfig.titlePadding * 2;
877
+ this.titleTextHeight = spaceRequired.height;
878
+ if (widthRequired <= availableWidth) {
879
+ availableWidth -= widthRequired;
880
+ this.showTitle = true;
881
+ }
882
+ }
883
+ this.boundingRect.width = availableSpace.width - availableWidth;
884
+ this.boundingRect.height = availableSpace.height;
885
+ }
886
+ calculateSpace(availableSpace) {
887
+ if (this.axisPosition === "left" || this.axisPosition === "right") {
888
+ this.calculateSpaceIfDrawnVertical(availableSpace);
889
+ } else {
890
+ this.calculateSpaceIfDrawnHorizontally(availableSpace);
891
+ }
892
+ this.recalculateScale();
893
+ return {
894
+ width: this.boundingRect.width,
895
+ height: this.boundingRect.height
896
+ };
897
+ }
898
+ setBoundingBoxXY(point) {
899
+ this.boundingRect.x = point.x;
900
+ this.boundingRect.y = point.y;
901
+ }
902
+ getDrawableElementsForLeftAxis() {
903
+ const drawableElement = [];
904
+ if (this.showAxisLine) {
905
+ const x = this.boundingRect.x + this.boundingRect.width - this.axisConfig.axisLineWidth / 2;
906
+ drawableElement.push({
907
+ type: "path",
908
+ groupTexts: ["left-axis", "axisl-line"],
909
+ data: [
910
+ {
911
+ path: `M ${x},${this.boundingRect.y} L ${x},${this.boundingRect.y + this.boundingRect.height} `,
912
+ strokeFill: this.axisThemeConfig.axisLineColor,
913
+ strokeWidth: this.axisConfig.axisLineWidth
914
+ }
915
+ ]
916
+ });
917
+ }
918
+ if (this.showLabel) {
919
+ drawableElement.push({
920
+ type: "text",
921
+ groupTexts: ["left-axis", "label"],
922
+ data: this.getTickValues().map((tick) => ({
923
+ text: tick.toString(),
924
+ 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),
925
+ y: this.getScaleValue(tick),
926
+ fill: this.axisThemeConfig.labelColor,
927
+ fontSize: this.axisConfig.labelFontSize,
928
+ rotation: 0,
929
+ verticalPos: "middle",
930
+ horizontalPos: "right"
931
+ }))
932
+ });
933
+ }
934
+ if (this.showTick) {
935
+ const x = this.boundingRect.x + this.boundingRect.width - (this.showAxisLine ? this.axisConfig.axisLineWidth : 0);
936
+ drawableElement.push({
937
+ type: "path",
938
+ groupTexts: ["left-axis", "ticks"],
939
+ data: this.getTickValues().map((tick) => ({
940
+ path: `M ${x},${this.getScaleValue(tick)} L ${x - this.axisConfig.tickLength},${this.getScaleValue(tick)}`,
941
+ strokeFill: this.axisThemeConfig.tickColor,
942
+ strokeWidth: this.axisConfig.tickWidth
943
+ }))
944
+ });
945
+ }
946
+ if (this.showTitle) {
947
+ drawableElement.push({
948
+ type: "text",
949
+ groupTexts: ["left-axis", "title"],
950
+ data: [
951
+ {
952
+ text: this.title,
953
+ x: this.boundingRect.x + this.axisConfig.titlePadding,
954
+ y: this.boundingRect.y + this.boundingRect.height / 2,
955
+ fill: this.axisThemeConfig.titleColor,
956
+ fontSize: this.axisConfig.titleFontSize,
957
+ rotation: 270,
958
+ verticalPos: "top",
959
+ horizontalPos: "center"
960
+ }
961
+ ]
962
+ });
963
+ }
964
+ return drawableElement;
965
+ }
966
+ getDrawableElementsForBottomAxis() {
967
+ const drawableElement = [];
968
+ if (this.showAxisLine) {
969
+ const y = this.boundingRect.y + this.axisConfig.axisLineWidth / 2;
970
+ drawableElement.push({
971
+ type: "path",
972
+ groupTexts: ["bottom-axis", "axis-line"],
973
+ data: [
974
+ {
975
+ path: `M ${this.boundingRect.x},${y} L ${this.boundingRect.x + this.boundingRect.width},${y}`,
976
+ strokeFill: this.axisThemeConfig.axisLineColor,
977
+ strokeWidth: this.axisConfig.axisLineWidth
978
+ }
979
+ ]
980
+ });
981
+ }
982
+ if (this.showLabel) {
983
+ drawableElement.push({
984
+ type: "text",
985
+ groupTexts: ["bottom-axis", "label"],
986
+ data: this.getTickValues().map((tick) => ({
987
+ text: tick.toString(),
988
+ x: this.getScaleValue(tick),
989
+ y: this.boundingRect.y + this.axisConfig.labelPadding + (this.showTick ? this.axisConfig.tickLength : 0) + (this.showAxisLine ? this.axisConfig.axisLineWidth : 0),
990
+ fill: this.axisThemeConfig.labelColor,
991
+ fontSize: this.axisConfig.labelFontSize,
992
+ rotation: 0,
993
+ verticalPos: "top",
994
+ horizontalPos: "center"
995
+ }))
996
+ });
997
+ }
998
+ if (this.showTick) {
999
+ const y = this.boundingRect.y + (this.showAxisLine ? this.axisConfig.axisLineWidth : 0);
1000
+ drawableElement.push({
1001
+ type: "path",
1002
+ groupTexts: ["bottom-axis", "ticks"],
1003
+ data: this.getTickValues().map((tick) => ({
1004
+ path: `M ${this.getScaleValue(tick)},${y} L ${this.getScaleValue(tick)},${y + this.axisConfig.tickLength}`,
1005
+ strokeFill: this.axisThemeConfig.tickColor,
1006
+ strokeWidth: this.axisConfig.tickWidth
1007
+ }))
1008
+ });
1009
+ }
1010
+ if (this.showTitle) {
1011
+ drawableElement.push({
1012
+ type: "text",
1013
+ groupTexts: ["bottom-axis", "title"],
1014
+ data: [
1015
+ {
1016
+ text: this.title,
1017
+ x: this.range[0] + (this.range[1] - this.range[0]) / 2,
1018
+ y: this.boundingRect.y + this.boundingRect.height - this.axisConfig.titlePadding - this.titleTextHeight,
1019
+ fill: this.axisThemeConfig.titleColor,
1020
+ fontSize: this.axisConfig.titleFontSize,
1021
+ rotation: 0,
1022
+ verticalPos: "top",
1023
+ horizontalPos: "center"
1024
+ }
1025
+ ]
1026
+ });
1027
+ }
1028
+ return drawableElement;
1029
+ }
1030
+ getDrawableElementsForTopAxis() {
1031
+ const drawableElement = [];
1032
+ if (this.showAxisLine) {
1033
+ const y = this.boundingRect.y + this.boundingRect.height - this.axisConfig.axisLineWidth / 2;
1034
+ drawableElement.push({
1035
+ type: "path",
1036
+ groupTexts: ["top-axis", "axis-line"],
1037
+ data: [
1038
+ {
1039
+ path: `M ${this.boundingRect.x},${y} L ${this.boundingRect.x + this.boundingRect.width},${y}`,
1040
+ strokeFill: this.axisThemeConfig.axisLineColor,
1041
+ strokeWidth: this.axisConfig.axisLineWidth
1042
+ }
1043
+ ]
1044
+ });
1045
+ }
1046
+ if (this.showLabel) {
1047
+ drawableElement.push({
1048
+ type: "text",
1049
+ groupTexts: ["top-axis", "label"],
1050
+ data: this.getTickValues().map((tick) => ({
1051
+ text: tick.toString(),
1052
+ x: this.getScaleValue(tick),
1053
+ y: this.boundingRect.y + (this.showTitle ? this.titleTextHeight + this.axisConfig.titlePadding * 2 : 0) + this.axisConfig.labelPadding,
1054
+ fill: this.axisThemeConfig.labelColor,
1055
+ fontSize: this.axisConfig.labelFontSize,
1056
+ rotation: 0,
1057
+ verticalPos: "top",
1058
+ horizontalPos: "center"
1059
+ }))
1060
+ });
1061
+ }
1062
+ if (this.showTick) {
1063
+ const y = this.boundingRect.y;
1064
+ drawableElement.push({
1065
+ type: "path",
1066
+ groupTexts: ["top-axis", "ticks"],
1067
+ data: this.getTickValues().map((tick) => ({
1068
+ path: `M ${this.getScaleValue(tick)},${y + this.boundingRect.height - (this.showAxisLine ? this.axisConfig.axisLineWidth : 0)} L ${this.getScaleValue(tick)},${y + this.boundingRect.height - this.axisConfig.tickLength - (this.showAxisLine ? this.axisConfig.axisLineWidth : 0)}`,
1069
+ strokeFill: this.axisThemeConfig.tickColor,
1070
+ strokeWidth: this.axisConfig.tickWidth
1071
+ }))
1072
+ });
1073
+ }
1074
+ if (this.showTitle) {
1075
+ drawableElement.push({
1076
+ type: "text",
1077
+ groupTexts: ["top-axis", "title"],
1078
+ data: [
1079
+ {
1080
+ text: this.title,
1081
+ x: this.boundingRect.x + this.boundingRect.width / 2,
1082
+ y: this.boundingRect.y + this.axisConfig.titlePadding,
1083
+ fill: this.axisThemeConfig.titleColor,
1084
+ fontSize: this.axisConfig.titleFontSize,
1085
+ rotation: 0,
1086
+ verticalPos: "top",
1087
+ horizontalPos: "center"
1088
+ }
1089
+ ]
1090
+ });
1091
+ }
1092
+ return drawableElement;
1093
+ }
1094
+ getDrawableElements() {
1095
+ if (this.axisPosition === "left") {
1096
+ return this.getDrawableElementsForLeftAxis();
1097
+ }
1098
+ if (this.axisPosition === "right") {
1099
+ throw Error("Drawing of right axis is not implemented");
1100
+ }
1101
+ if (this.axisPosition === "bottom") {
1102
+ return this.getDrawableElementsForBottomAxis();
1103
+ }
1104
+ if (this.axisPosition === "top") {
1105
+ return this.getDrawableElementsForTopAxis();
1106
+ }
1107
+ return [];
1108
+ }
1109
+ }
1110
+ class BandAxis extends BaseAxis {
1111
+ constructor(axisConfig, axisThemeConfig, categories, title, textDimensionCalculator) {
1112
+ super(axisConfig, title, textDimensionCalculator, axisThemeConfig);
1113
+ this.categories = categories;
1114
+ this.scale = band().domain(this.categories).range(this.getRange());
1115
+ }
1116
+ setRange(range2) {
1117
+ super.setRange(range2);
1118
+ }
1119
+ recalculateScale() {
1120
+ this.scale = band().domain(this.categories).range(this.getRange()).paddingInner(1).paddingOuter(0).align(0.5);
1121
+ log$1.trace("BandAxis axis final categories, range: ", this.categories, this.getRange());
1122
+ }
1123
+ getTickValues() {
1124
+ return this.categories;
1125
+ }
1126
+ getScaleValue(value) {
1127
+ return this.scale(value) || this.getRange()[0];
1128
+ }
1129
+ }
1130
+ class LinearAxis extends BaseAxis {
1131
+ constructor(axisConfig, axisThemeConfig, domain, title, textDimensionCalculator) {
1132
+ super(axisConfig, title, textDimensionCalculator, axisThemeConfig);
1133
+ this.domain = domain;
1134
+ this.scale = linear().domain(this.domain).range(this.getRange());
1135
+ }
1136
+ getTickValues() {
1137
+ return this.scale.ticks();
1138
+ }
1139
+ recalculateScale() {
1140
+ const domain = [...this.domain];
1141
+ if (this.axisPosition === "left") {
1142
+ domain.reverse();
1143
+ }
1144
+ this.scale = linear().domain(domain).range(this.getRange());
1145
+ }
1146
+ getScaleValue(value) {
1147
+ return this.scale(value);
1148
+ }
1149
+ }
1150
+ function getAxis(data, axisConfig, axisThemeConfig, tmpSVGGroup2) {
1151
+ const textDimensionCalculator = new TextDimensionCalculatorWithFont(tmpSVGGroup2);
1152
+ if (isBandAxisData(data)) {
1153
+ return new BandAxis(
1154
+ axisConfig,
1155
+ axisThemeConfig,
1156
+ data.categories,
1157
+ data.title,
1158
+ textDimensionCalculator
1159
+ );
1160
+ }
1161
+ return new LinearAxis(
1162
+ axisConfig,
1163
+ axisThemeConfig,
1164
+ [data.min, data.max],
1165
+ data.title,
1166
+ textDimensionCalculator
1167
+ );
1168
+ }
1169
+ class ChartTitle {
1170
+ constructor(textDimensionCalculator, chartConfig, chartData, chartThemeConfig) {
1171
+ this.textDimensionCalculator = textDimensionCalculator;
1172
+ this.chartConfig = chartConfig;
1173
+ this.chartData = chartData;
1174
+ this.chartThemeConfig = chartThemeConfig;
1175
+ this.boundingRect = {
1176
+ x: 0,
1177
+ y: 0,
1178
+ width: 0,
1179
+ height: 0
1180
+ };
1181
+ this.showChartTitle = false;
1182
+ }
1183
+ setBoundingBoxXY(point) {
1184
+ this.boundingRect.x = point.x;
1185
+ this.boundingRect.y = point.y;
1186
+ }
1187
+ calculateSpace(availableSpace) {
1188
+ const titleDimension = this.textDimensionCalculator.getMaxDimension(
1189
+ [this.chartData.title],
1190
+ this.chartConfig.titleFontSize
1191
+ );
1192
+ const widthRequired = Math.max(titleDimension.width, availableSpace.width);
1193
+ const heightRequired = titleDimension.height + 2 * this.chartConfig.titlePadding;
1194
+ if (titleDimension.width <= widthRequired && titleDimension.height <= heightRequired && this.chartConfig.showTitle && this.chartData.title) {
1195
+ this.boundingRect.width = widthRequired;
1196
+ this.boundingRect.height = heightRequired;
1197
+ this.showChartTitle = true;
1198
+ }
1199
+ return {
1200
+ width: this.boundingRect.width,
1201
+ height: this.boundingRect.height
1202
+ };
1203
+ }
1204
+ getDrawableElements() {
1205
+ const drawableElem = [];
1206
+ if (this.showChartTitle) {
1207
+ drawableElem.push({
1208
+ groupTexts: ["chart-title"],
1209
+ type: "text",
1210
+ data: [
1211
+ {
1212
+ fontSize: this.chartConfig.titleFontSize,
1213
+ text: this.chartData.title,
1214
+ verticalPos: "middle",
1215
+ horizontalPos: "center",
1216
+ x: this.boundingRect.x + this.boundingRect.width / 2,
1217
+ y: this.boundingRect.y + this.boundingRect.height / 2,
1218
+ fill: this.chartThemeConfig.titleColor,
1219
+ rotation: 0
1220
+ }
1221
+ ]
1222
+ });
1223
+ }
1224
+ return drawableElem;
1225
+ }
1226
+ }
1227
+ function getChartTitleComponent(chartConfig, chartData, chartThemeConfig, tmpSVGGroup2) {
1228
+ const textDimensionCalculator = new TextDimensionCalculatorWithFont(tmpSVGGroup2);
1229
+ return new ChartTitle(textDimensionCalculator, chartConfig, chartData, chartThemeConfig);
1230
+ }
1231
+ class LinePlot {
1232
+ constructor(plotData, xAxis, yAxis, orientation, plotIndex2) {
1233
+ this.plotData = plotData;
1234
+ this.xAxis = xAxis;
1235
+ this.yAxis = yAxis;
1236
+ this.orientation = orientation;
1237
+ this.plotIndex = plotIndex2;
1238
+ }
1239
+ getDrawableElement() {
1240
+ const finalData = this.plotData.data.map((d) => [
1241
+ this.xAxis.getScaleValue(d[0]),
1242
+ this.yAxis.getScaleValue(d[1])
1243
+ ]);
1244
+ let path;
1245
+ if (this.orientation === "horizontal") {
1246
+ path = line().y((d) => d[0]).x((d) => d[1])(finalData);
1247
+ } else {
1248
+ path = line().x((d) => d[0]).y((d) => d[1])(finalData);
1249
+ }
1250
+ if (!path) {
1251
+ return [];
1252
+ }
1253
+ return [
1254
+ {
1255
+ groupTexts: ["plot", `line-plot-${this.plotIndex}`],
1256
+ type: "path",
1257
+ data: [
1258
+ {
1259
+ path,
1260
+ strokeFill: this.plotData.strokeFill,
1261
+ strokeWidth: this.plotData.strokeWidth
1262
+ }
1263
+ ]
1264
+ }
1265
+ ];
1266
+ }
1267
+ }
1268
+ class BarPlot {
1269
+ constructor(barData, boundingRect, xAxis, yAxis, orientation, plotIndex2) {
1270
+ this.barData = barData;
1271
+ this.boundingRect = boundingRect;
1272
+ this.xAxis = xAxis;
1273
+ this.yAxis = yAxis;
1274
+ this.orientation = orientation;
1275
+ this.plotIndex = plotIndex2;
1276
+ }
1277
+ getDrawableElement() {
1278
+ const finalData = this.barData.data.map((d) => [
1279
+ this.xAxis.getScaleValue(d[0]),
1280
+ this.yAxis.getScaleValue(d[1])
1281
+ ]);
1282
+ const barPaddingPercent = 0.05;
1283
+ const barWidth = Math.min(this.xAxis.getAxisOuterPadding() * 2, this.xAxis.getTickDistance()) * (1 - barPaddingPercent);
1284
+ const barWidthHalf = barWidth / 2;
1285
+ if (this.orientation === "horizontal") {
1286
+ return [
1287
+ {
1288
+ groupTexts: ["plot", `bar-plot-${this.plotIndex}`],
1289
+ type: "rect",
1290
+ data: finalData.map((data) => ({
1291
+ x: this.boundingRect.x,
1292
+ y: data[0] - barWidthHalf,
1293
+ height: barWidth,
1294
+ width: data[1] - this.boundingRect.x,
1295
+ fill: this.barData.fill,
1296
+ strokeWidth: 0,
1297
+ strokeFill: this.barData.fill
1298
+ }))
1299
+ }
1300
+ ];
1301
+ }
1302
+ return [
1303
+ {
1304
+ groupTexts: ["plot", `bar-plot-${this.plotIndex}`],
1305
+ type: "rect",
1306
+ data: finalData.map((data) => ({
1307
+ x: data[0] - barWidthHalf,
1308
+ y: data[1],
1309
+ width: barWidth,
1310
+ height: this.boundingRect.y + this.boundingRect.height - data[1],
1311
+ fill: this.barData.fill,
1312
+ strokeWidth: 0,
1313
+ strokeFill: this.barData.fill
1314
+ }))
1315
+ }
1316
+ ];
1317
+ }
1318
+ }
1319
+ class BasePlot {
1320
+ constructor(chartConfig, chartData, chartThemeConfig) {
1321
+ this.chartConfig = chartConfig;
1322
+ this.chartData = chartData;
1323
+ this.chartThemeConfig = chartThemeConfig;
1324
+ this.boundingRect = {
1325
+ x: 0,
1326
+ y: 0,
1327
+ width: 0,
1328
+ height: 0
1329
+ };
1330
+ }
1331
+ setAxes(xAxis, yAxis) {
1332
+ this.xAxis = xAxis;
1333
+ this.yAxis = yAxis;
1334
+ }
1335
+ setBoundingBoxXY(point) {
1336
+ this.boundingRect.x = point.x;
1337
+ this.boundingRect.y = point.y;
1338
+ }
1339
+ calculateSpace(availableSpace) {
1340
+ this.boundingRect.width = availableSpace.width;
1341
+ this.boundingRect.height = availableSpace.height;
1342
+ return {
1343
+ width: this.boundingRect.width,
1344
+ height: this.boundingRect.height
1345
+ };
1346
+ }
1347
+ getDrawableElements() {
1348
+ if (!(this.xAxis && this.yAxis)) {
1349
+ throw Error("Axes must be passed to render Plots");
1350
+ }
1351
+ const drawableElem = [];
1352
+ for (const [i, plot] of this.chartData.plots.entries()) {
1353
+ switch (plot.type) {
1354
+ case "line":
1355
+ {
1356
+ const linePlot = new LinePlot(
1357
+ plot,
1358
+ this.xAxis,
1359
+ this.yAxis,
1360
+ this.chartConfig.chartOrientation,
1361
+ i
1362
+ );
1363
+ drawableElem.push(...linePlot.getDrawableElement());
1364
+ }
1365
+ break;
1366
+ case "bar":
1367
+ {
1368
+ const barPlot = new BarPlot(
1369
+ plot,
1370
+ this.boundingRect,
1371
+ this.xAxis,
1372
+ this.yAxis,
1373
+ this.chartConfig.chartOrientation,
1374
+ i
1375
+ );
1376
+ drawableElem.push(...barPlot.getDrawableElement());
1377
+ }
1378
+ break;
1379
+ }
1380
+ }
1381
+ return drawableElem;
1382
+ }
1383
+ }
1384
+ function getPlotComponent(chartConfig, chartData, chartThemeConfig) {
1385
+ return new BasePlot(chartConfig, chartData, chartThemeConfig);
1386
+ }
1387
+ class Orchestrator {
1388
+ constructor(chartConfig, chartData, chartThemeConfig, tmpSVGGroup2) {
1389
+ this.chartConfig = chartConfig;
1390
+ this.chartData = chartData;
1391
+ this.componentStore = {
1392
+ title: getChartTitleComponent(chartConfig, chartData, chartThemeConfig, tmpSVGGroup2),
1393
+ plot: getPlotComponent(chartConfig, chartData, chartThemeConfig),
1394
+ xAxis: getAxis(
1395
+ chartData.xAxis,
1396
+ chartConfig.xAxis,
1397
+ {
1398
+ titleColor: chartThemeConfig.xAxisTitleColor,
1399
+ labelColor: chartThemeConfig.xAxisLabelColor,
1400
+ tickColor: chartThemeConfig.xAxisTickColor,
1401
+ axisLineColor: chartThemeConfig.xAxisLineColor
1402
+ },
1403
+ tmpSVGGroup2
1404
+ ),
1405
+ yAxis: getAxis(
1406
+ chartData.yAxis,
1407
+ chartConfig.yAxis,
1408
+ {
1409
+ titleColor: chartThemeConfig.yAxisTitleColor,
1410
+ labelColor: chartThemeConfig.yAxisLabelColor,
1411
+ tickColor: chartThemeConfig.yAxisTickColor,
1412
+ axisLineColor: chartThemeConfig.yAxisLineColor
1413
+ },
1414
+ tmpSVGGroup2
1415
+ )
1416
+ };
1417
+ }
1418
+ calculateVerticalSpace() {
1419
+ let availableWidth = this.chartConfig.width;
1420
+ let availableHeight = this.chartConfig.height;
1421
+ let plotX = 0;
1422
+ let plotY = 0;
1423
+ let chartWidth = Math.floor(availableWidth * this.chartConfig.plotReservedSpacePercent / 100);
1424
+ let chartHeight = Math.floor(
1425
+ availableHeight * this.chartConfig.plotReservedSpacePercent / 100
1426
+ );
1427
+ let spaceUsed = this.componentStore.plot.calculateSpace({
1428
+ width: chartWidth,
1429
+ height: chartHeight
1430
+ });
1431
+ availableWidth -= spaceUsed.width;
1432
+ availableHeight -= spaceUsed.height;
1433
+ spaceUsed = this.componentStore.title.calculateSpace({
1434
+ width: this.chartConfig.width,
1435
+ height: availableHeight
1436
+ });
1437
+ plotY = spaceUsed.height;
1438
+ availableHeight -= spaceUsed.height;
1439
+ this.componentStore.xAxis.setAxisPosition("bottom");
1440
+ spaceUsed = this.componentStore.xAxis.calculateSpace({
1441
+ width: availableWidth,
1442
+ height: availableHeight
1443
+ });
1444
+ availableHeight -= spaceUsed.height;
1445
+ this.componentStore.yAxis.setAxisPosition("left");
1446
+ spaceUsed = this.componentStore.yAxis.calculateSpace({
1447
+ width: availableWidth,
1448
+ height: availableHeight
1449
+ });
1450
+ plotX = spaceUsed.width;
1451
+ availableWidth -= spaceUsed.width;
1452
+ if (availableWidth > 0) {
1453
+ chartWidth += availableWidth;
1454
+ availableWidth = 0;
1455
+ }
1456
+ if (availableHeight > 0) {
1457
+ chartHeight += availableHeight;
1458
+ availableHeight = 0;
1459
+ }
1460
+ this.componentStore.plot.calculateSpace({
1461
+ width: chartWidth,
1462
+ height: chartHeight
1463
+ });
1464
+ this.componentStore.plot.setBoundingBoxXY({ x: plotX, y: plotY });
1465
+ this.componentStore.xAxis.setRange([plotX, plotX + chartWidth]);
1466
+ this.componentStore.xAxis.setBoundingBoxXY({ x: plotX, y: plotY + chartHeight });
1467
+ this.componentStore.yAxis.setRange([plotY, plotY + chartHeight]);
1468
+ this.componentStore.yAxis.setBoundingBoxXY({ x: 0, y: plotY });
1469
+ if (this.chartData.plots.some((p) => isBarPlot(p))) {
1470
+ this.componentStore.xAxis.recalculateOuterPaddingToDrawBar();
1471
+ }
1472
+ }
1473
+ calculateHorizontalSpace() {
1474
+ let availableWidth = this.chartConfig.width;
1475
+ let availableHeight = this.chartConfig.height;
1476
+ let titleYEnd = 0;
1477
+ let plotX = 0;
1478
+ let plotY = 0;
1479
+ let chartWidth = Math.floor(availableWidth * this.chartConfig.plotReservedSpacePercent / 100);
1480
+ let chartHeight = Math.floor(
1481
+ availableHeight * this.chartConfig.plotReservedSpacePercent / 100
1482
+ );
1483
+ let spaceUsed = this.componentStore.plot.calculateSpace({
1484
+ width: chartWidth,
1485
+ height: chartHeight
1486
+ });
1487
+ availableWidth -= spaceUsed.width;
1488
+ availableHeight -= spaceUsed.height;
1489
+ spaceUsed = this.componentStore.title.calculateSpace({
1490
+ width: this.chartConfig.width,
1491
+ height: availableHeight
1492
+ });
1493
+ titleYEnd = spaceUsed.height;
1494
+ availableHeight -= spaceUsed.height;
1495
+ this.componentStore.xAxis.setAxisPosition("left");
1496
+ spaceUsed = this.componentStore.xAxis.calculateSpace({
1497
+ width: availableWidth,
1498
+ height: availableHeight
1499
+ });
1500
+ availableWidth -= spaceUsed.width;
1501
+ plotX = spaceUsed.width;
1502
+ this.componentStore.yAxis.setAxisPosition("top");
1503
+ spaceUsed = this.componentStore.yAxis.calculateSpace({
1504
+ width: availableWidth,
1505
+ height: availableHeight
1506
+ });
1507
+ availableHeight -= spaceUsed.height;
1508
+ plotY = titleYEnd + spaceUsed.height;
1509
+ if (availableWidth > 0) {
1510
+ chartWidth += availableWidth;
1511
+ availableWidth = 0;
1512
+ }
1513
+ if (availableHeight > 0) {
1514
+ chartHeight += availableHeight;
1515
+ availableHeight = 0;
1516
+ }
1517
+ this.componentStore.plot.calculateSpace({
1518
+ width: chartWidth,
1519
+ height: chartHeight
1520
+ });
1521
+ this.componentStore.plot.setBoundingBoxXY({ x: plotX, y: plotY });
1522
+ this.componentStore.yAxis.setRange([plotX, plotX + chartWidth]);
1523
+ this.componentStore.yAxis.setBoundingBoxXY({ x: plotX, y: titleYEnd });
1524
+ this.componentStore.xAxis.setRange([plotY, plotY + chartHeight]);
1525
+ this.componentStore.xAxis.setBoundingBoxXY({ x: 0, y: plotY });
1526
+ if (this.chartData.plots.some((p) => isBarPlot(p))) {
1527
+ this.componentStore.xAxis.recalculateOuterPaddingToDrawBar();
1528
+ }
1529
+ }
1530
+ calculateSpace() {
1531
+ if (this.chartConfig.chartOrientation === "horizontal") {
1532
+ this.calculateHorizontalSpace();
1533
+ } else {
1534
+ this.calculateVerticalSpace();
1535
+ }
1536
+ }
1537
+ getDrawableElement() {
1538
+ this.calculateSpace();
1539
+ const drawableElem = [];
1540
+ this.componentStore.plot.setAxes(this.componentStore.xAxis, this.componentStore.yAxis);
1541
+ for (const component of Object.values(this.componentStore)) {
1542
+ drawableElem.push(...component.getDrawableElements());
1543
+ }
1544
+ return drawableElem;
1545
+ }
1546
+ }
1547
+ class XYChartBuilder {
1548
+ static build(config, chartData, chartThemeConfig, tmpSVGGroup2) {
1549
+ const orchestrator = new Orchestrator(config, chartData, chartThemeConfig, tmpSVGGroup2);
1550
+ return orchestrator.getDrawableElement();
1551
+ }
1552
+ }
1553
+ let plotIndex = 0;
1554
+ let tmpSVGGroup;
1555
+ let xyChartConfig = getChartDefaultConfig();
1556
+ let xyChartThemeConfig = getChartDefaultThemeConfig();
1557
+ let xyChartData = getChartDefaultData();
1558
+ let plotColorPalette = xyChartThemeConfig.plotColorPalette.split(",").map((color) => color.trim());
1559
+ let hasSetXAxis = false;
1560
+ let hasSetYAxis = false;
1561
+ function getChartDefaultThemeConfig() {
1562
+ const defaultThemeVariables = getThemeVariables$2();
1563
+ const config = getConfig$1();
1564
+ return cleanAndMerge(defaultThemeVariables.xyChart, config.themeVariables.xyChart);
1565
+ }
1566
+ function getChartDefaultConfig() {
1567
+ const config = getConfig$1();
1568
+ return cleanAndMerge(
1569
+ defaultConfig$2.xyChart,
1570
+ config.xyChart
1571
+ );
1572
+ }
1573
+ function getChartDefaultData() {
1574
+ return {
1575
+ yAxis: {
1576
+ type: "linear",
1577
+ title: "",
1578
+ min: Infinity,
1579
+ max: -Infinity
1580
+ },
1581
+ xAxis: {
1582
+ type: "band",
1583
+ title: "",
1584
+ categories: []
1585
+ },
1586
+ title: "",
1587
+ plots: []
1588
+ };
1589
+ }
1590
+ function textSanitizer(text) {
1591
+ const config = getConfig$1();
1592
+ return sanitizeText$2(text.trim(), config);
1593
+ }
1594
+ function setTmpSVGG(SVGG) {
1595
+ tmpSVGGroup = SVGG;
1596
+ }
1597
+ function setOrientation(orientation) {
1598
+ if (orientation === "horizontal") {
1599
+ xyChartConfig.chartOrientation = "horizontal";
1600
+ } else {
1601
+ xyChartConfig.chartOrientation = "vertical";
1602
+ }
1603
+ }
1604
+ function setXAxisTitle(title) {
1605
+ xyChartData.xAxis.title = textSanitizer(title.text);
1606
+ }
1607
+ function setXAxisRangeData(min, max) {
1608
+ xyChartData.xAxis = { type: "linear", title: xyChartData.xAxis.title, min, max };
1609
+ hasSetXAxis = true;
1610
+ }
1611
+ function setXAxisBand(categories) {
1612
+ xyChartData.xAxis = {
1613
+ type: "band",
1614
+ title: xyChartData.xAxis.title,
1615
+ categories: categories.map((c) => textSanitizer(c.text))
1616
+ };
1617
+ hasSetXAxis = true;
1618
+ }
1619
+ function setYAxisTitle(title) {
1620
+ xyChartData.yAxis.title = textSanitizer(title.text);
1621
+ }
1622
+ function setYAxisRangeData(min, max) {
1623
+ xyChartData.yAxis = { type: "linear", title: xyChartData.yAxis.title, min, max };
1624
+ hasSetYAxis = true;
1625
+ }
1626
+ function setYAxisRangeFromPlotData(data) {
1627
+ const minValue = Math.min(...data);
1628
+ const maxValue = Math.max(...data);
1629
+ const prevMinValue = isLinearAxisData(xyChartData.yAxis) ? xyChartData.yAxis.min : Infinity;
1630
+ const prevMaxValue = isLinearAxisData(xyChartData.yAxis) ? xyChartData.yAxis.max : -Infinity;
1631
+ xyChartData.yAxis = {
1632
+ type: "linear",
1633
+ title: xyChartData.yAxis.title,
1634
+ min: Math.min(prevMinValue, minValue),
1635
+ max: Math.max(prevMaxValue, maxValue)
1636
+ };
1637
+ }
1638
+ function transformDataWithoutCategory(data) {
1639
+ let retData = [];
1640
+ if (data.length === 0) {
1641
+ return retData;
1642
+ }
1643
+ if (!hasSetXAxis) {
1644
+ const prevMinValue = isLinearAxisData(xyChartData.xAxis) ? xyChartData.xAxis.min : Infinity;
1645
+ const prevMaxValue = isLinearAxisData(xyChartData.xAxis) ? xyChartData.xAxis.max : -Infinity;
1646
+ setXAxisRangeData(Math.min(prevMinValue, 1), Math.max(prevMaxValue, data.length));
1647
+ }
1648
+ if (!hasSetYAxis) {
1649
+ setYAxisRangeFromPlotData(data);
1650
+ }
1651
+ if (isBandAxisData(xyChartData.xAxis)) {
1652
+ retData = xyChartData.xAxis.categories.map((c, i) => [c, data[i]]);
1653
+ }
1654
+ if (isLinearAxisData(xyChartData.xAxis)) {
1655
+ const min = xyChartData.xAxis.min;
1656
+ const max = xyChartData.xAxis.max;
1657
+ const step = (max - min + 1) / data.length;
1658
+ const categories = [];
1659
+ for (let i = min; i <= max; i += step) {
1660
+ categories.push(`${i}`);
1661
+ }
1662
+ retData = categories.map((c, i) => [c, data[i]]);
1663
+ }
1664
+ return retData;
1665
+ }
1666
+ function getPlotColorFromPalette(plotIndex2) {
1667
+ return plotColorPalette[plotIndex2 === 0 ? 0 : plotIndex2 % plotColorPalette.length];
1668
+ }
1669
+ function setLineData(title, data) {
1670
+ const plotData = transformDataWithoutCategory(data);
1671
+ xyChartData.plots.push({
1672
+ type: "line",
1673
+ strokeFill: getPlotColorFromPalette(plotIndex),
1674
+ strokeWidth: 2,
1675
+ data: plotData
1676
+ });
1677
+ plotIndex++;
1678
+ }
1679
+ function setBarData(title, data) {
1680
+ const plotData = transformDataWithoutCategory(data);
1681
+ xyChartData.plots.push({
1682
+ type: "bar",
1683
+ fill: getPlotColorFromPalette(plotIndex),
1684
+ data: plotData
1685
+ });
1686
+ plotIndex++;
1687
+ }
1688
+ function getDrawableElem() {
1689
+ if (xyChartData.plots.length === 0) {
1690
+ throw Error("No Plot to render, please provide a plot with some data");
1691
+ }
1692
+ xyChartData.title = getDiagramTitle();
1693
+ return XYChartBuilder.build(xyChartConfig, xyChartData, xyChartThemeConfig, tmpSVGGroup);
1694
+ }
1695
+ function getChartThemeConfig() {
1696
+ return xyChartThemeConfig;
1697
+ }
1698
+ function getChartConfig() {
1699
+ return xyChartConfig;
1700
+ }
1701
+ const clear = function() {
1702
+ clear$1();
1703
+ plotIndex = 0;
1704
+ xyChartConfig = getChartDefaultConfig();
1705
+ xyChartData = getChartDefaultData();
1706
+ xyChartThemeConfig = getChartDefaultThemeConfig();
1707
+ plotColorPalette = xyChartThemeConfig.plotColorPalette.split(",").map((color) => color.trim());
1708
+ hasSetXAxis = false;
1709
+ hasSetYAxis = false;
1710
+ };
1711
+ const db = {
1712
+ getDrawableElem,
1713
+ clear,
1714
+ setAccTitle,
1715
+ getAccTitle,
1716
+ setDiagramTitle,
1717
+ getDiagramTitle,
1718
+ getAccDescription,
1719
+ setAccDescription,
1720
+ setOrientation,
1721
+ setXAxisTitle,
1722
+ setXAxisRangeData,
1723
+ setXAxisBand,
1724
+ setYAxisTitle,
1725
+ setYAxisRangeData,
1726
+ setLineData,
1727
+ setBarData,
1728
+ setTmpSVGG,
1729
+ getChartThemeConfig,
1730
+ getChartConfig
1731
+ };
1732
+ const draw = (txt, id, _version, diagObj) => {
1733
+ const db2 = diagObj.db;
1734
+ const themeConfig = db2.getChartThemeConfig();
1735
+ const chartConfig = db2.getChartConfig();
1736
+ function getDominantBaseLine(horizontalPos) {
1737
+ return horizontalPos === "top" ? "text-before-edge" : "middle";
1738
+ }
1739
+ function getTextAnchor(verticalPos) {
1740
+ return verticalPos === "left" ? "start" : verticalPos === "right" ? "end" : "middle";
1741
+ }
1742
+ function getTextTransformation(data) {
1743
+ return `translate(${data.x}, ${data.y}) rotate(${data.rotation || 0})`;
1744
+ }
1745
+ log$1.debug("Rendering xychart chart\n" + txt);
1746
+ const svg = selectSvgElement(id);
1747
+ const group = svg.append("g").attr("class", "main");
1748
+ const background = group.append("rect").attr("width", chartConfig.width).attr("height", chartConfig.height).attr("class", "background");
1749
+ configureSvgSize(svg, chartConfig.height, chartConfig.width, true);
1750
+ svg.attr("viewBox", `0 0 ${chartConfig.width} ${chartConfig.height}`);
1751
+ background.attr("fill", themeConfig.backgroundColor);
1752
+ db2.setTmpSVGG(svg.append("g").attr("class", "mermaid-tmp-group"));
1753
+ const shapes = db2.getDrawableElem();
1754
+ const groups = {};
1755
+ function getGroup(gList) {
1756
+ let elem = group;
1757
+ let prefix = "";
1758
+ for (const [i] of gList.entries()) {
1759
+ let parent = group;
1760
+ if (i > 0 && groups[prefix]) {
1761
+ parent = groups[prefix];
1762
+ }
1763
+ prefix += gList[i];
1764
+ elem = groups[prefix];
1765
+ if (!elem) {
1766
+ elem = groups[prefix] = parent.append("g").attr("class", gList[i]);
1767
+ }
1768
+ }
1769
+ return elem;
1770
+ }
1771
+ for (const shape of shapes) {
1772
+ if (shape.data.length === 0) {
1773
+ continue;
1774
+ }
1775
+ const shapeGroup = getGroup(shape.groupTexts);
1776
+ switch (shape.type) {
1777
+ case "rect":
1778
+ shapeGroup.selectAll("rect").data(shape.data).enter().append("rect").attr("x", (data) => data.x).attr("y", (data) => data.y).attr("width", (data) => data.width).attr("height", (data) => data.height).attr("fill", (data) => data.fill).attr("stroke", (data) => data.strokeFill).attr("stroke-width", (data) => data.strokeWidth);
1779
+ break;
1780
+ case "text":
1781
+ shapeGroup.selectAll("text").data(shape.data).enter().append("text").attr("x", 0).attr("y", 0).attr("fill", (data) => data.fill).attr("font-size", (data) => data.fontSize).attr("dominant-baseline", (data) => getDominantBaseLine(data.verticalPos)).attr("text-anchor", (data) => getTextAnchor(data.horizontalPos)).attr("transform", (data) => getTextTransformation(data)).text((data) => data.text);
1782
+ break;
1783
+ case "path":
1784
+ shapeGroup.selectAll("path").data(shape.data).enter().append("path").attr("d", (data) => data.path).attr("fill", (data) => data.fill ? data.fill : "none").attr("stroke", (data) => data.strokeFill).attr("stroke-width", (data) => data.strokeWidth);
1785
+ break;
1786
+ }
1787
+ }
1788
+ };
1789
+ const renderer = {
1790
+ draw
1791
+ };
1792
+ const diagram = {
1793
+ parser: parser$1,
1794
+ db,
1795
+ renderer
1796
+ };
1797
+ export {
1798
+ diagram
1799
+ };