@kerebron/legacy-compat 0.7.5 → 0.7.7

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 (435) hide show
  1. package/dist/kerebron-light.css +1 -1
  2. package/dist/kerebron.cjs +196 -1
  3. package/dist/kerebron.css +1 -1
  4. package/dist/kerebron.js +35005 -5
  5. package/dist/kerebron3.cjs.map +1 -1
  6. package/dist/kerebron3.js.map +1 -1
  7. package/package.json +1 -1
  8. package/dist/__vite-browser-external-DEj2HSsT.cjs +0 -235
  9. package/dist/__vite-browser-external-DEj2HSsT.cjs.map +0 -1
  10. package/dist/__vite-browser-external-ZW37Brf4.js +0 -56473
  11. package/dist/__vite-browser-external-ZW37Brf4.js.map +0 -1
  12. package/dist/apl-B2DGVGxc.js +0 -77
  13. package/dist/apl-B2DGVGxc.js.map +0 -1
  14. package/dist/apl-M-DNMvvR.cjs +0 -2
  15. package/dist/apl-M-DNMvvR.cjs.map +0 -1
  16. package/dist/asciiarmor-2LVJmxlE.js +0 -35
  17. package/dist/asciiarmor-2LVJmxlE.js.map +0 -1
  18. package/dist/asciiarmor-BMx3XVjX.cjs +0 -2
  19. package/dist/asciiarmor-BMx3XVjX.cjs.map +0 -1
  20. package/dist/asn1-OOsVM4yU.cjs +0 -2
  21. package/dist/asn1-OOsVM4yU.cjs.map +0 -1
  22. package/dist/asn1-jKiBa2Ya.js +0 -96
  23. package/dist/asn1-jKiBa2Ya.js.map +0 -1
  24. package/dist/asterisk-B1QUaW1C.cjs +0 -2
  25. package/dist/asterisk-B1QUaW1C.cjs.map +0 -1
  26. package/dist/asterisk-DS281yxp.js +0 -272
  27. package/dist/asterisk-DS281yxp.js.map +0 -1
  28. package/dist/brainfuck-BjUlYKdF.cjs +0 -2
  29. package/dist/brainfuck-BjUlYKdF.cjs.map +0 -1
  30. package/dist/brainfuck-C_p9pTT8.js +0 -35
  31. package/dist/brainfuck-C_p9pTT8.js.map +0 -1
  32. package/dist/clike-DE3V9X8-.js +0 -616
  33. package/dist/clike-DE3V9X8-.js.map +0 -1
  34. package/dist/clike-DLHgOXgk.cjs +0 -2
  35. package/dist/clike-DLHgOXgk.cjs.map +0 -1
  36. package/dist/clojure-Ap_IXD2I.cjs +0 -2
  37. package/dist/clojure-Ap_IXD2I.cjs.map +0 -1
  38. package/dist/clojure-CCKyeQKf.js +0 -801
  39. package/dist/clojure-CCKyeQKf.js.map +0 -1
  40. package/dist/cmake-C4D5_VmS.cjs +0 -2
  41. package/dist/cmake-C4D5_VmS.cjs.map +0 -1
  42. package/dist/cmake-CuaCgAKt.js +0 -29
  43. package/dist/cmake-CuaCgAKt.js.map +0 -1
  44. package/dist/cobol-BlTKFDRj.js +0 -73
  45. package/dist/cobol-BlTKFDRj.js.map +0 -1
  46. package/dist/cobol-Du-cT2hr.cjs +0 -2
  47. package/dist/cobol-Du-cT2hr.cjs.map +0 -1
  48. package/dist/coffeescript-BVCvwO8I.js +0 -180
  49. package/dist/coffeescript-BVCvwO8I.js.map +0 -1
  50. package/dist/coffeescript-DDFAj2ea.cjs +0 -2
  51. package/dist/coffeescript-DDFAj2ea.cjs.map +0 -1
  52. package/dist/commonlisp-CXBBRCTx.cjs +0 -2
  53. package/dist/commonlisp-CXBBRCTx.cjs.map +0 -1
  54. package/dist/commonlisp-D_kxz07b.js +0 -76
  55. package/dist/commonlisp-D_kxz07b.js.map +0 -1
  56. package/dist/crystal-D309uH6_.js +0 -218
  57. package/dist/crystal-D309uH6_.js.map +0 -1
  58. package/dist/crystal-DAFWRDbh.cjs +0 -2
  59. package/dist/crystal-DAFWRDbh.cjs.map +0 -1
  60. package/dist/cypher-BMq4Fwjl.js +0 -69
  61. package/dist/cypher-BMq4Fwjl.js.map +0 -1
  62. package/dist/cypher-BN0-oCze.cjs +0 -2
  63. package/dist/cypher-BN0-oCze.cjs.map +0 -1
  64. package/dist/d-BHsqGcfm.cjs +0 -2
  65. package/dist/d-BHsqGcfm.cjs.map +0 -1
  66. package/dist/d-BZcgY6La.js +0 -128
  67. package/dist/d-BZcgY6La.js.map +0 -1
  68. package/dist/diff-CemTHKfk.cjs +0 -2
  69. package/dist/diff-CemTHKfk.cjs.map +0 -1
  70. package/dist/diff-Cg9d_RX2.js +0 -19
  71. package/dist/diff-Cg9d_RX2.js.map +0 -1
  72. package/dist/dockerfile-BBTH3voH.cjs +0 -2
  73. package/dist/dockerfile-BBTH3voH.cjs.map +0 -1
  74. package/dist/dockerfile-DIy8NleC.js +0 -195
  75. package/dist/dockerfile-DIy8NleC.js.map +0 -1
  76. package/dist/dtd-ChoVQPwv.cjs +0 -2
  77. package/dist/dtd-ChoVQPwv.cjs.map +0 -1
  78. package/dist/dtd-CtLokQ-U.js +0 -85
  79. package/dist/dtd-CtLokQ-U.js.map +0 -1
  80. package/dist/dylan-QYeExnWK.js +0 -235
  81. package/dist/dylan-QYeExnWK.js.map +0 -1
  82. package/dist/dylan-apTQIgUA.cjs +0 -2
  83. package/dist/dylan-apTQIgUA.cjs.map +0 -1
  84. package/dist/ebnf-DUPDuY4r.js +0 -79
  85. package/dist/ebnf-DUPDuY4r.js.map +0 -1
  86. package/dist/ebnf-LYmLy17h.cjs +0 -2
  87. package/dist/ebnf-LYmLy17h.cjs.map +0 -1
  88. package/dist/ecl-C7WNQq7-.cjs +0 -2
  89. package/dist/ecl-C7WNQq7-.cjs.map +0 -1
  90. package/dist/ecl-CiXN-g_D.js +0 -122
  91. package/dist/ecl-CiXN-g_D.js.map +0 -1
  92. package/dist/eiffel-BJThA8RG.cjs +0 -2
  93. package/dist/eiffel-BJThA8RG.cjs.map +0 -1
  94. package/dist/eiffel-yQhjl4T1.js +0 -111
  95. package/dist/eiffel-yQhjl4T1.js.map +0 -1
  96. package/dist/elm-CNT9vbN0.js +0 -109
  97. package/dist/elm-CNT9vbN0.js.map +0 -1
  98. package/dist/elm-CcXP9T36.cjs +0 -2
  99. package/dist/elm-CcXP9T36.cjs.map +0 -1
  100. package/dist/erlang-B6mpcObI.cjs +0 -2
  101. package/dist/erlang-B6mpcObI.cjs.map +0 -1
  102. package/dist/erlang-CFOYdy9e.js +0 -488
  103. package/dist/erlang-CFOYdy9e.js.map +0 -1
  104. package/dist/factor-B-tsx9yW.cjs +0 -2
  105. package/dist/factor-B-tsx9yW.cjs.map +0 -1
  106. package/dist/factor-DDOC7X6P.js +0 -66
  107. package/dist/factor-DDOC7X6P.js.map +0 -1
  108. package/dist/fcl-BzAKklXo.cjs +0 -2
  109. package/dist/fcl-BzAKklXo.cjs.map +0 -1
  110. package/dist/fcl-CPC2WYrI.js +0 -104
  111. package/dist/fcl-CPC2WYrI.js.map +0 -1
  112. package/dist/forth-BmxRyE9S.js +0 -61
  113. package/dist/forth-BmxRyE9S.js.map +0 -1
  114. package/dist/forth-CPAzyZ_n.cjs +0 -2
  115. package/dist/forth-CPAzyZ_n.cjs.map +0 -1
  116. package/dist/fortran-9bvPyrOW.js +0 -443
  117. package/dist/fortran-9bvPyrOW.js.map +0 -1
  118. package/dist/fortran-DHiTlGV1.cjs +0 -2
  119. package/dist/fortran-DHiTlGV1.cjs.map +0 -1
  120. package/dist/gas-BiPtGF2E.cjs +0 -2
  121. package/dist/gas-BiPtGF2E.cjs.map +0 -1
  122. package/dist/gas-cpmYfFX2.js +0 -184
  123. package/dist/gas-cpmYfFX2.js.map +0 -1
  124. package/dist/gherkin-CJuwpceU.js +0 -35
  125. package/dist/gherkin-CJuwpceU.js.map +0 -1
  126. package/dist/gherkin-Djo7Y51D.cjs +0 -2
  127. package/dist/gherkin-Djo7Y51D.cjs.map +0 -1
  128. package/dist/go-BHVhI2MG.js +0 -156
  129. package/dist/go-BHVhI2MG.js.map +0 -1
  130. package/dist/go-BgtlNyKc.cjs +0 -2
  131. package/dist/go-BgtlNyKc.cjs.map +0 -1
  132. package/dist/groovy-BMVITiCm.cjs +0 -2
  133. package/dist/groovy-BMVITiCm.cjs.map +0 -1
  134. package/dist/groovy-DZeT_VM-.js +0 -147
  135. package/dist/groovy-DZeT_VM-.js.map +0 -1
  136. package/dist/haskell-C46lNFBv.cjs +0 -2
  137. package/dist/haskell-C46lNFBv.cjs.map +0 -1
  138. package/dist/haskell-CxiO_7JL.js +0 -376
  139. package/dist/haskell-CxiO_7JL.js.map +0 -1
  140. package/dist/haxe-BhV0x0nk.js +0 -337
  141. package/dist/haxe-BhV0x0nk.js.map +0 -1
  142. package/dist/haxe-G9XvbXZx.cjs +0 -2
  143. package/dist/haxe-G9XvbXZx.cjs.map +0 -1
  144. package/dist/http-BkLifcnL.cjs +0 -2
  145. package/dist/http-BkLifcnL.cjs.map +0 -1
  146. package/dist/http-D9LttvKF.js +0 -45
  147. package/dist/http-D9LttvKF.js.map +0 -1
  148. package/dist/idl-B6TRFYjl.js +0 -948
  149. package/dist/idl-B6TRFYjl.js.map +0 -1
  150. package/dist/idl-FmHDmsE-.cjs +0 -2
  151. package/dist/idl-FmHDmsE-.cjs.map +0 -1
  152. package/dist/index-1FwPug-t.js +0 -961
  153. package/dist/index-1FwPug-t.js.map +0 -1
  154. package/dist/index-B6dEzV2b.cjs +0 -2
  155. package/dist/index-B6dEzV2b.cjs.map +0 -1
  156. package/dist/index-B7gU7Fh_.js +0 -613
  157. package/dist/index-B7gU7Fh_.js.map +0 -1
  158. package/dist/index-B8srnV19.js +0 -1306
  159. package/dist/index-B8srnV19.js.map +0 -1
  160. package/dist/index-BBMh0BvB.js +0 -63
  161. package/dist/index-BBMh0BvB.js.map +0 -1
  162. package/dist/index-BQ530BQl.cjs +0 -2
  163. package/dist/index-BQ530BQl.cjs.map +0 -1
  164. package/dist/index-BUEvxYg1.cjs +0 -4
  165. package/dist/index-BUEvxYg1.cjs.map +0 -1
  166. package/dist/index-BZ5P3Kv0.cjs +0 -7
  167. package/dist/index-BZ5P3Kv0.cjs.map +0 -1
  168. package/dist/index-BvLgnTK0.cjs +0 -2
  169. package/dist/index-BvLgnTK0.cjs.map +0 -1
  170. package/dist/index-Byc1bIE2.js +0 -310
  171. package/dist/index-Byc1bIE2.js.map +0 -1
  172. package/dist/index-BzuM7CSO.js +0 -77
  173. package/dist/index-BzuM7CSO.js.map +0 -1
  174. package/dist/index-CQpRl1to.js +0 -303
  175. package/dist/index-CQpRl1to.js.map +0 -1
  176. package/dist/index-CYSjCryY.cjs +0 -2
  177. package/dist/index-CYSjCryY.cjs.map +0 -1
  178. package/dist/index-Cb9pkCYO.js +0 -158
  179. package/dist/index-Cb9pkCYO.js.map +0 -1
  180. package/dist/index-CcIqnmcV.js +0 -60
  181. package/dist/index-CcIqnmcV.js.map +0 -1
  182. package/dist/index-CdGHKsNJ.cjs +0 -2
  183. package/dist/index-CdGHKsNJ.cjs.map +0 -1
  184. package/dist/index-CsNjufUm.cjs +0 -3
  185. package/dist/index-CsNjufUm.cjs.map +0 -1
  186. package/dist/index-D0nsdJs5.js +0 -95
  187. package/dist/index-D0nsdJs5.js.map +0 -1
  188. package/dist/index-D203InKa.cjs +0 -2
  189. package/dist/index-D203InKa.cjs.map +0 -1
  190. package/dist/index-DBCbd-3W.cjs +0 -2
  191. package/dist/index-DBCbd-3W.cjs.map +0 -1
  192. package/dist/index-DPNQvgDc.cjs +0 -14
  193. package/dist/index-DPNQvgDc.cjs.map +0 -1
  194. package/dist/index-D__6kAHa.js +0 -1918
  195. package/dist/index-D__6kAHa.js.map +0 -1
  196. package/dist/index-DjzVrRux.cjs +0 -2
  197. package/dist/index-DjzVrRux.cjs.map +0 -1
  198. package/dist/index-DkicjISi.cjs +0 -2
  199. package/dist/index-DkicjISi.cjs.map +0 -1
  200. package/dist/index-DvZkiV6W.cjs +0 -2
  201. package/dist/index-DvZkiV6W.cjs.map +0 -1
  202. package/dist/index-E9rwTPVg.cjs +0 -2
  203. package/dist/index-E9rwTPVg.cjs.map +0 -1
  204. package/dist/index-Hy59UYbT.js +0 -566
  205. package/dist/index-Hy59UYbT.js.map +0 -1
  206. package/dist/index-MOkOI4Tj.js +0 -554
  207. package/dist/index-MOkOI4Tj.js.map +0 -1
  208. package/dist/index-qEqiXfAO.js +0 -946
  209. package/dist/index-qEqiXfAO.js.map +0 -1
  210. package/dist/index-yxAWy9bG.js +0 -139
  211. package/dist/index-yxAWy9bG.js.map +0 -1
  212. package/dist/jinja2-DnB6dQmV.js +0 -155
  213. package/dist/jinja2-DnB6dQmV.js.map +0 -1
  214. package/dist/jinja2-wbVbDTNi.cjs +0 -2
  215. package/dist/jinja2-wbVbDTNi.cjs.map +0 -1
  216. package/dist/julia-DA67Qw9E.cjs +0 -2
  217. package/dist/julia-DA67Qw9E.cjs.map +0 -1
  218. package/dist/julia-DpvXAuO6.js +0 -242
  219. package/dist/julia-DpvXAuO6.js.map +0 -1
  220. package/dist/livescript-Bg3URadp.cjs +0 -2
  221. package/dist/livescript-Bg3URadp.cjs.map +0 -1
  222. package/dist/livescript-CanGTf8u.js +0 -273
  223. package/dist/livescript-CanGTf8u.js.map +0 -1
  224. package/dist/lua-CIsxjGwi.cjs +0 -2
  225. package/dist/lua-CIsxjGwi.cjs.map +0 -1
  226. package/dist/lua-XplVlWi_.js +0 -218
  227. package/dist/lua-XplVlWi_.js.map +0 -1
  228. package/dist/mathematica-BG089QIc.cjs +0 -2
  229. package/dist/mathematica-BG089QIc.cjs.map +0 -1
  230. package/dist/mathematica-jaRHnSxC.js +0 -36
  231. package/dist/mathematica-jaRHnSxC.js.map +0 -1
  232. package/dist/mbox-BctzC1hL.js +0 -77
  233. package/dist/mbox-BctzC1hL.js.map +0 -1
  234. package/dist/mbox-CySolFFZ.cjs +0 -2
  235. package/dist/mbox-CySolFFZ.cjs.map +0 -1
  236. package/dist/mirc-BfqEffzk.cjs +0 -2
  237. package/dist/mirc-BfqEffzk.cjs.map +0 -1
  238. package/dist/mirc-CFBPAOaF.js +0 -73
  239. package/dist/mirc-CFBPAOaF.js.map +0 -1
  240. package/dist/mllike-CBK_zjnT.cjs +0 -2
  241. package/dist/mllike-CBK_zjnT.cjs.map +0 -1
  242. package/dist/mllike-gvRenHsu.js +0 -273
  243. package/dist/mllike-gvRenHsu.js.map +0 -1
  244. package/dist/modelica-B6Zhcb-M.cjs +0 -2
  245. package/dist/modelica-B6Zhcb-M.cjs.map +0 -1
  246. package/dist/modelica-vUgVs--1.js +0 -94
  247. package/dist/modelica-vUgVs--1.js.map +0 -1
  248. package/dist/mscgen-B_Dg_s1G.cjs +0 -2
  249. package/dist/mscgen-B_Dg_s1G.cjs.map +0 -1
  250. package/dist/mscgen-ucEwbOaK.js +0 -82
  251. package/dist/mscgen-ucEwbOaK.js.map +0 -1
  252. package/dist/mumps-CQoS1kWX.js +0 -26
  253. package/dist/mumps-CQoS1kWX.js.map +0 -1
  254. package/dist/mumps-wfyQdxSu.cjs +0 -2
  255. package/dist/mumps-wfyQdxSu.cjs.map +0 -1
  256. package/dist/nginx-CwqyBUfA.cjs +0 -2
  257. package/dist/nginx-CwqyBUfA.cjs.map +0 -1
  258. package/dist/nginx-zDPm3Z74.js +0 -90
  259. package/dist/nginx-zDPm3Z74.js.map +0 -1
  260. package/dist/nsis-DPj2fUaP.cjs +0 -2
  261. package/dist/nsis-DPj2fUaP.cjs.map +0 -1
  262. package/dist/nsis-fePjrhq7.js +0 -63
  263. package/dist/nsis-fePjrhq7.js.map +0 -1
  264. package/dist/ntriples-CsNjv2QF.js +0 -80
  265. package/dist/ntriples-CsNjv2QF.js.map +0 -1
  266. package/dist/ntriples-DgwJmozm.cjs +0 -2
  267. package/dist/ntriples-DgwJmozm.cjs.map +0 -1
  268. package/dist/octave-1pkKrgAA.cjs +0 -2
  269. package/dist/octave-1pkKrgAA.cjs.map +0 -1
  270. package/dist/octave-C8PmmSRH.js +0 -144
  271. package/dist/octave-C8PmmSRH.js.map +0 -1
  272. package/dist/oz-BXOZCt0U.cjs +0 -2
  273. package/dist/oz-BXOZCt0U.cjs.map +0 -1
  274. package/dist/oz-Ce8aN8oE.js +0 -152
  275. package/dist/oz-Ce8aN8oE.js.map +0 -1
  276. package/dist/pascal-De0D6mP7.js +0 -78
  277. package/dist/pascal-De0D6mP7.js.map +0 -1
  278. package/dist/pascal-DtY2LEkJ.cjs +0 -2
  279. package/dist/pascal-DtY2LEkJ.cjs.map +0 -1
  280. package/dist/perl-B4bSCe1C.js +0 -916
  281. package/dist/perl-B4bSCe1C.js.map +0 -1
  282. package/dist/perl-CVDWbEju.cjs +0 -2
  283. package/dist/perl-CVDWbEju.cjs.map +0 -1
  284. package/dist/pig-D24Z8EXi.js +0 -55
  285. package/dist/pig-D24Z8EXi.js.map +0 -1
  286. package/dist/pig-DMByOrnr.cjs +0 -2
  287. package/dist/pig-DMByOrnr.cjs.map +0 -1
  288. package/dist/powershell-BaoYaFvj.cjs +0 -2
  289. package/dist/powershell-BaoYaFvj.cjs.map +0 -1
  290. package/dist/powershell-DkYVfTzP.js +0 -250
  291. package/dist/powershell-DkYVfTzP.js.map +0 -1
  292. package/dist/properties-DXHJZ3WE.cjs +0 -2
  293. package/dist/properties-DXHJZ3WE.cjs.map +0 -1
  294. package/dist/properties-Dn9wna3M.js +0 -27
  295. package/dist/properties-Dn9wna3M.js.map +0 -1
  296. package/dist/protobuf-BKhXdfH6.cjs +0 -2
  297. package/dist/protobuf-BKhXdfH6.cjs.map +0 -1
  298. package/dist/protobuf-BPIjwpzm.js +0 -50
  299. package/dist/protobuf-BPIjwpzm.js.map +0 -1
  300. package/dist/puppet-8mAyuMbW.cjs +0 -2
  301. package/dist/puppet-8mAyuMbW.cjs.map +0 -1
  302. package/dist/puppet-nyd4dhjf.js +0 -46
  303. package/dist/puppet-nyd4dhjf.js.map +0 -1
  304. package/dist/q-BPQ45Nxu.cjs +0 -2
  305. package/dist/q-BPQ45Nxu.cjs.map +0 -1
  306. package/dist/q-DXjKs-tC.js +0 -84
  307. package/dist/q-DXjKs-tC.js.map +0 -1
  308. package/dist/r-LKEuhEGI.js +0 -105
  309. package/dist/r-LKEuhEGI.js.map +0 -1
  310. package/dist/r-r2_EZsON.cjs +0 -2
  311. package/dist/r-r2_EZsON.cjs.map +0 -1
  312. package/dist/rpm-BoAefZZ1.js +0 -50
  313. package/dist/rpm-BoAefZZ1.js.map +0 -1
  314. package/dist/rpm-C6UDHByS.cjs +0 -2
  315. package/dist/rpm-C6UDHByS.cjs.map +0 -1
  316. package/dist/ruby-CcYfvIk6.js +0 -229
  317. package/dist/ruby-CcYfvIk6.js.map +0 -1
  318. package/dist/ruby-Cn1sFkZF.cjs +0 -2
  319. package/dist/ruby-Cn1sFkZF.cjs.map +0 -1
  320. package/dist/sas-7E8yHoCW.js +0 -106
  321. package/dist/sas-7E8yHoCW.js.map +0 -1
  322. package/dist/sas-DAGcJy94.cjs +0 -2
  323. package/dist/sas-DAGcJy94.cjs.map +0 -1
  324. package/dist/scheme-B0ZrbojV.cjs +0 -2
  325. package/dist/scheme-B0ZrbojV.cjs.map +0 -1
  326. package/dist/scheme-DjibxsNh.js +0 -125
  327. package/dist/scheme-DjibxsNh.js.map +0 -1
  328. package/dist/shell-BMYo43V6.cjs +0 -2
  329. package/dist/shell-BMYo43V6.cjs.map +0 -1
  330. package/dist/shell-C0C2sNA_.js +0 -183
  331. package/dist/shell-C0C2sNA_.js.map +0 -1
  332. package/dist/simple-mode-B0dvCdAA.js +0 -90
  333. package/dist/simple-mode-B0dvCdAA.js.map +0 -1
  334. package/dist/simple-mode-BIKNPBes.cjs +0 -2
  335. package/dist/simple-mode-BIKNPBes.cjs.map +0 -1
  336. package/dist/smalltalk-Bhddl2pB.js +0 -49
  337. package/dist/smalltalk-Bhddl2pB.js.map +0 -1
  338. package/dist/smalltalk-CSslY-3i.cjs +0 -2
  339. package/dist/smalltalk-CSslY-3i.cjs.map +0 -1
  340. package/dist/solr-A1kSnAwJ.cjs +0 -2
  341. package/dist/solr-A1kSnAwJ.cjs.map +0 -1
  342. package/dist/solr-BNlsLglM.js +0 -42
  343. package/dist/solr-BNlsLglM.js.map +0 -1
  344. package/dist/sparql-DnHMBLLY.cjs +0 -2
  345. package/dist/sparql-DnHMBLLY.cjs.map +0 -1
  346. package/dist/sparql-FarWu_Gb.js +0 -198
  347. package/dist/sparql-FarWu_Gb.js.map +0 -1
  348. package/dist/spreadsheet-B7_BK8hB.cjs +0 -2
  349. package/dist/spreadsheet-B7_BK8hB.cjs.map +0 -1
  350. package/dist/spreadsheet-C-cy4P5N.js +0 -50
  351. package/dist/spreadsheet-C-cy4P5N.js.map +0 -1
  352. package/dist/stex-B4wyjEnp.cjs +0 -2
  353. package/dist/stex-B4wyjEnp.cjs.map +0 -1
  354. package/dist/stex-Du4h4KAU.js +0 -130
  355. package/dist/stex-Du4h4KAU.js.map +0 -1
  356. package/dist/stylus-B3vYZZY8.cjs +0 -2
  357. package/dist/stylus-B3vYZZY8.cjs.map +0 -1
  358. package/dist/stylus-DRcbY16X.js +0 -251
  359. package/dist/stylus-DRcbY16X.js.map +0 -1
  360. package/dist/swift-DGw6Cgu8.cjs +0 -2
  361. package/dist/swift-DGw6Cgu8.cjs.map +0 -1
  362. package/dist/swift-DSxqR9R6.js +0 -231
  363. package/dist/swift-DSxqR9R6.js.map +0 -1
  364. package/dist/tcl-ByLXbQFo.cjs +0 -2
  365. package/dist/tcl-ByLXbQFo.cjs.map +0 -1
  366. package/dist/tcl-xfoLljhY.js +0 -82
  367. package/dist/tcl-xfoLljhY.js.map +0 -1
  368. package/dist/textile-D1AWE-pc.js +0 -296
  369. package/dist/textile-D1AWE-pc.js.map +0 -1
  370. package/dist/textile-iryw-lTw.cjs +0 -2
  371. package/dist/textile-iryw-lTw.cjs.map +0 -1
  372. package/dist/tiddlywiki-5wqsXtSk.js +0 -156
  373. package/dist/tiddlywiki-5wqsXtSk.js.map +0 -1
  374. package/dist/tiddlywiki-D8IJz1k7.cjs +0 -2
  375. package/dist/tiddlywiki-D8IJz1k7.cjs.map +0 -1
  376. package/dist/tiki-C5p5KSQK.cjs +0 -2
  377. package/dist/tiki-C5p5KSQK.cjs.map +0 -1
  378. package/dist/tiki-__Kn3CeS.js +0 -182
  379. package/dist/tiki-__Kn3CeS.js.map +0 -1
  380. package/dist/toml-3ZsH_4Qa.cjs +0 -2
  381. package/dist/toml-3ZsH_4Qa.cjs.map +0 -1
  382. package/dist/toml-BHiuTcfn.js +0 -50
  383. package/dist/toml-BHiuTcfn.js.map +0 -1
  384. package/dist/troff-D-3QCOYN.cjs +0 -2
  385. package/dist/troff-D-3QCOYN.cjs.map +0 -1
  386. package/dist/troff-D2UO-fKf.js +0 -36
  387. package/dist/troff-D2UO-fKf.js.map +0 -1
  388. package/dist/ttcn-Bsa4sfRm.js +0 -124
  389. package/dist/ttcn-Bsa4sfRm.js.map +0 -1
  390. package/dist/ttcn-C2MXAqcM.cjs +0 -2
  391. package/dist/ttcn-C2MXAqcM.cjs.map +0 -1
  392. package/dist/turtle-DSJNatSv.cjs +0 -2
  393. package/dist/turtle-DSJNatSv.cjs.map +0 -1
  394. package/dist/turtle-xwJUxoPV.js +0 -81
  395. package/dist/turtle-xwJUxoPV.js.map +0 -1
  396. package/dist/vb-c2kQGd6-.js +0 -75
  397. package/dist/vb-c2kQGd6-.js.map +0 -1
  398. package/dist/vb-qzHzzvyB.cjs +0 -2
  399. package/dist/vb-qzHzzvyB.cjs.map +0 -1
  400. package/dist/vbscript-1f_Dhg5H.js +0 -325
  401. package/dist/vbscript-1f_Dhg5H.js.map +0 -1
  402. package/dist/vbscript-CWm8v9tE.cjs +0 -2
  403. package/dist/vbscript-CWm8v9tE.cjs.map +0 -1
  404. package/dist/velocity-D3_yAIp3.cjs +0 -2
  405. package/dist/velocity-D3_yAIp3.cjs.map +0 -1
  406. package/dist/velocity-DJd0pTTC.js +0 -97
  407. package/dist/velocity-DJd0pTTC.js.map +0 -1
  408. package/dist/verilog-BOhLNmQo.cjs +0 -2
  409. package/dist/verilog-BOhLNmQo.cjs.map +0 -1
  410. package/dist/verilog-CiS1jyi5.js +0 -263
  411. package/dist/verilog-CiS1jyi5.js.map +0 -1
  412. package/dist/vhdl-CMFbi8Im.cjs +0 -2
  413. package/dist/vhdl-CMFbi8Im.cjs.map +0 -1
  414. package/dist/vhdl-T9HkrbI2.js +0 -107
  415. package/dist/vhdl-T9HkrbI2.js.map +0 -1
  416. package/dist/webidl-CWb_flNk.cjs +0 -2
  417. package/dist/webidl-CWb_flNk.cjs.map +0 -1
  418. package/dist/webidl-CjfDENEo.js +0 -156
  419. package/dist/webidl-CjfDENEo.js.map +0 -1
  420. package/dist/xquery-Ct6lEb4B.js +0 -423
  421. package/dist/xquery-Ct6lEb4B.js.map +0 -1
  422. package/dist/xquery-mbJFEpkV.cjs +0 -2
  423. package/dist/xquery-mbJFEpkV.cjs.map +0 -1
  424. package/dist/yacas-C0absKBh.js +0 -74
  425. package/dist/yacas-C0absKBh.js.map +0 -1
  426. package/dist/yacas-urx_N5C8.cjs +0 -2
  427. package/dist/yacas-urx_N5C8.cjs.map +0 -1
  428. package/dist/yaml-CSixJMdf.cjs +0 -2
  429. package/dist/yaml-CSixJMdf.cjs.map +0 -1
  430. package/dist/yaml-Dt6Tp2eU.js +0 -54
  431. package/dist/yaml-Dt6Tp2eU.js.map +0 -1
  432. package/dist/z80-CsG3CM6M.cjs +0 -2
  433. package/dist/z80-CsG3CM6M.cjs.map +0 -1
  434. package/dist/z80-Pki2zAjW.js +0 -62
  435. package/dist/z80-Pki2zAjW.js.map +0 -1
@@ -1 +0,0 @@
1
- {"version":3,"file":"index-BZ5P3Kv0.cjs","sources":["../../../node_modules/.deno/@lezer+markdown@1.6.0/node_modules/@lezer/markdown/dist/index.js","../../../node_modules/.deno/@codemirror+lang-markdown@6.5.0/node_modules/@codemirror/lang-markdown/dist/index.js"],"sourcesContent":["import { NodeType, NodeProp, NodeSet, Tree, Parser, parseMixed } from '@lezer/common';\nimport { styleTags, tags, Tag } from '@lezer/highlight';\n\nclass CompositeBlock {\n static create(type, value, from, parentHash, end) {\n let hash = (parentHash + (parentHash << 8) + type + (value << 4)) | 0;\n return new CompositeBlock(type, value, from, hash, end, [], []);\n }\n constructor(type, \n // Used for indentation in list items, markup character in lists\n value, from, hash, end, children, positions) {\n this.type = type;\n this.value = value;\n this.from = from;\n this.hash = hash;\n this.end = end;\n this.children = children;\n this.positions = positions;\n this.hashProp = [[NodeProp.contextHash, hash]];\n }\n addChild(child, pos) {\n if (child.prop(NodeProp.contextHash) != this.hash)\n child = new Tree(child.type, child.children, child.positions, child.length, this.hashProp);\n this.children.push(child);\n this.positions.push(pos);\n }\n toTree(nodeSet, end = this.end) {\n let last = this.children.length - 1;\n if (last >= 0)\n end = Math.max(end, this.positions[last] + this.children[last].length + this.from);\n return new Tree(nodeSet.types[this.type], this.children, this.positions, end - this.from).balance({\n makeTree: (children, positions, length) => new Tree(NodeType.none, children, positions, length, this.hashProp)\n });\n }\n}\nvar Type;\n(function (Type) {\n Type[Type[\"Document\"] = 1] = \"Document\";\n Type[Type[\"CodeBlock\"] = 2] = \"CodeBlock\";\n Type[Type[\"FencedCode\"] = 3] = \"FencedCode\";\n Type[Type[\"Blockquote\"] = 4] = \"Blockquote\";\n Type[Type[\"HorizontalRule\"] = 5] = \"HorizontalRule\";\n Type[Type[\"BulletList\"] = 6] = \"BulletList\";\n Type[Type[\"OrderedList\"] = 7] = \"OrderedList\";\n Type[Type[\"ListItem\"] = 8] = \"ListItem\";\n Type[Type[\"ATXHeading1\"] = 9] = \"ATXHeading1\";\n Type[Type[\"ATXHeading2\"] = 10] = \"ATXHeading2\";\n Type[Type[\"ATXHeading3\"] = 11] = \"ATXHeading3\";\n Type[Type[\"ATXHeading4\"] = 12] = \"ATXHeading4\";\n Type[Type[\"ATXHeading5\"] = 13] = \"ATXHeading5\";\n Type[Type[\"ATXHeading6\"] = 14] = \"ATXHeading6\";\n Type[Type[\"SetextHeading1\"] = 15] = \"SetextHeading1\";\n Type[Type[\"SetextHeading2\"] = 16] = \"SetextHeading2\";\n Type[Type[\"HTMLBlock\"] = 17] = \"HTMLBlock\";\n Type[Type[\"LinkReference\"] = 18] = \"LinkReference\";\n Type[Type[\"Paragraph\"] = 19] = \"Paragraph\";\n Type[Type[\"CommentBlock\"] = 20] = \"CommentBlock\";\n Type[Type[\"ProcessingInstructionBlock\"] = 21] = \"ProcessingInstructionBlock\";\n // Inline\n Type[Type[\"Escape\"] = 22] = \"Escape\";\n Type[Type[\"Entity\"] = 23] = \"Entity\";\n Type[Type[\"HardBreak\"] = 24] = \"HardBreak\";\n Type[Type[\"Emphasis\"] = 25] = \"Emphasis\";\n Type[Type[\"StrongEmphasis\"] = 26] = \"StrongEmphasis\";\n Type[Type[\"Link\"] = 27] = \"Link\";\n Type[Type[\"Image\"] = 28] = \"Image\";\n Type[Type[\"InlineCode\"] = 29] = \"InlineCode\";\n Type[Type[\"HTMLTag\"] = 30] = \"HTMLTag\";\n Type[Type[\"Comment\"] = 31] = \"Comment\";\n Type[Type[\"ProcessingInstruction\"] = 32] = \"ProcessingInstruction\";\n Type[Type[\"Autolink\"] = 33] = \"Autolink\";\n // Smaller tokens\n Type[Type[\"HeaderMark\"] = 34] = \"HeaderMark\";\n Type[Type[\"QuoteMark\"] = 35] = \"QuoteMark\";\n Type[Type[\"ListMark\"] = 36] = \"ListMark\";\n Type[Type[\"LinkMark\"] = 37] = \"LinkMark\";\n Type[Type[\"EmphasisMark\"] = 38] = \"EmphasisMark\";\n Type[Type[\"CodeMark\"] = 39] = \"CodeMark\";\n Type[Type[\"CodeText\"] = 40] = \"CodeText\";\n Type[Type[\"CodeInfo\"] = 41] = \"CodeInfo\";\n Type[Type[\"LinkTitle\"] = 42] = \"LinkTitle\";\n Type[Type[\"LinkLabel\"] = 43] = \"LinkLabel\";\n Type[Type[\"URL\"] = 44] = \"URL\";\n})(Type || (Type = {}));\n/**\nData structure used to accumulate a block's content during [leaf\nblock parsing](#BlockParser.leaf).\n*/\nclass LeafBlock {\n /**\n @internal\n */\n constructor(\n /**\n The start position of the block.\n */\n start, \n /**\n The block's text content.\n */\n content) {\n this.start = start;\n this.content = content;\n /**\n @internal\n */\n this.marks = [];\n /**\n The block parsers active for this block.\n */\n this.parsers = [];\n }\n}\n/**\nData structure used during block-level per-line parsing.\n*/\nclass Line {\n constructor() {\n /**\n The line's full text.\n */\n this.text = \"\";\n /**\n The base indent provided by the composite contexts (that have\n been handled so far).\n */\n this.baseIndent = 0;\n /**\n The string position corresponding to the base indent.\n */\n this.basePos = 0;\n /**\n The number of contexts handled @internal\n */\n this.depth = 0;\n /**\n Any markers (i.e. block quote markers) parsed for the contexts. @internal\n */\n this.markers = [];\n /**\n The position of the next non-whitespace character beyond any\n list, blockquote, or other composite block markers.\n */\n this.pos = 0;\n /**\n The column of the next non-whitespace character.\n */\n this.indent = 0;\n /**\n The character code of the character after `pos`.\n */\n this.next = -1;\n }\n /**\n @internal\n */\n forward() {\n if (this.basePos > this.pos)\n this.forwardInner();\n }\n /**\n @internal\n */\n forwardInner() {\n let newPos = this.skipSpace(this.basePos);\n this.indent = this.countIndent(newPos, this.pos, this.indent);\n this.pos = newPos;\n this.next = newPos == this.text.length ? -1 : this.text.charCodeAt(newPos);\n }\n /**\n Skip whitespace after the given position, return the position of\n the next non-space character or the end of the line if there's\n only space after `from`.\n */\n skipSpace(from) { return skipSpace(this.text, from); }\n /**\n @internal\n */\n reset(text) {\n this.text = text;\n this.baseIndent = this.basePos = this.pos = this.indent = 0;\n this.forwardInner();\n this.depth = 1;\n while (this.markers.length)\n this.markers.pop();\n }\n /**\n Move the line's base position forward to the given position.\n This should only be called by composite [block\n parsers](#BlockParser.parse) or [markup skipping\n functions](#NodeSpec.composite).\n */\n moveBase(to) {\n this.basePos = to;\n this.baseIndent = this.countIndent(to, this.pos, this.indent);\n }\n /**\n Move the line's base position forward to the given _column_.\n */\n moveBaseColumn(indent) {\n this.baseIndent = indent;\n this.basePos = this.findColumn(indent);\n }\n /**\n Store a composite-block-level marker. Should be called from\n [markup skipping functions](#NodeSpec.composite) when they\n consume any non-whitespace characters.\n */\n addMarker(elt) {\n this.markers.push(elt);\n }\n /**\n Find the column position at `to`, optionally starting at a given\n position and column.\n */\n countIndent(to, from = 0, indent = 0) {\n for (let i = from; i < to; i++)\n indent += this.text.charCodeAt(i) == 9 ? 4 - indent % 4 : 1;\n return indent;\n }\n /**\n Find the position corresponding to the given column.\n */\n findColumn(goal) {\n let i = 0;\n for (let indent = 0; i < this.text.length && indent < goal; i++)\n indent += this.text.charCodeAt(i) == 9 ? 4 - indent % 4 : 1;\n return i;\n }\n /**\n @internal\n */\n scrub() {\n if (!this.baseIndent)\n return this.text;\n let result = \"\";\n for (let i = 0; i < this.basePos; i++)\n result += \" \";\n return result + this.text.slice(this.basePos);\n }\n}\nfunction skipForList(bl, cx, line) {\n if (line.pos == line.text.length ||\n (bl != cx.block && line.indent >= cx.stack[line.depth + 1].value + line.baseIndent))\n return true;\n if (line.indent >= line.baseIndent + 4)\n return false;\n let size = (bl.type == Type.OrderedList ? isOrderedList : isBulletList)(line, cx, false);\n return size > 0 &&\n (bl.type != Type.BulletList || isHorizontalRule(line, cx, false) < 0) &&\n line.text.charCodeAt(line.pos + size - 1) == bl.value;\n}\nconst DefaultSkipMarkup = {\n [Type.Blockquote](bl, cx, line) {\n if (line.next != 62 /* '>' */)\n return false;\n line.markers.push(elt(Type.QuoteMark, cx.lineStart + line.pos, cx.lineStart + line.pos + 1));\n line.moveBase(line.pos + (space(line.text.charCodeAt(line.pos + 1)) ? 2 : 1));\n bl.end = cx.lineStart + line.text.length;\n return true;\n },\n [Type.ListItem](bl, _cx, line) {\n if (line.indent < line.baseIndent + bl.value && line.next > -1)\n return false;\n line.moveBaseColumn(line.baseIndent + bl.value);\n return true;\n },\n [Type.OrderedList]: skipForList,\n [Type.BulletList]: skipForList,\n [Type.Document]() { return true; }\n};\nfunction space(ch) { return ch == 32 || ch == 9 || ch == 10 || ch == 13; }\nfunction skipSpace(line, i = 0) {\n while (i < line.length && space(line.charCodeAt(i)))\n i++;\n return i;\n}\nfunction skipSpaceBack(line, i, to) {\n while (i > to && space(line.charCodeAt(i - 1)))\n i--;\n return i;\n}\nfunction isFencedCode(line) {\n if (line.next != 96 && line.next != 126 /* '`~' */)\n return -1;\n let pos = line.pos + 1;\n while (pos < line.text.length && line.text.charCodeAt(pos) == line.next)\n pos++;\n if (pos < line.pos + 3)\n return -1;\n if (line.next == 96)\n for (let i = pos; i < line.text.length; i++)\n if (line.text.charCodeAt(i) == 96)\n return -1;\n return pos;\n}\nfunction isBlockquote(line) {\n return line.next != 62 /* '>' */ ? -1 : line.text.charCodeAt(line.pos + 1) == 32 ? 2 : 1;\n}\nfunction isHorizontalRule(line, cx, breaking) {\n if (line.next != 42 && line.next != 45 && line.next != 95 /* '_-*' */)\n return -1;\n let count = 1;\n for (let pos = line.pos + 1; pos < line.text.length; pos++) {\n let ch = line.text.charCodeAt(pos);\n if (ch == line.next)\n count++;\n else if (!space(ch))\n return -1;\n }\n // Setext headers take precedence\n if (breaking && line.next == 45 && isSetextUnderline(line) > -1 && line.depth == cx.stack.length &&\n cx.parser.leafBlockParsers.indexOf(DefaultLeafBlocks.SetextHeading) > -1)\n return -1;\n return count < 3 ? -1 : 1;\n}\nfunction inList(cx, type) {\n for (let i = cx.stack.length - 1; i >= 0; i--)\n if (cx.stack[i].type == type)\n return true;\n return false;\n}\nfunction isBulletList(line, cx, breaking) {\n return (line.next == 45 || line.next == 43 || line.next == 42 /* '-+*' */) &&\n (line.pos == line.text.length - 1 || space(line.text.charCodeAt(line.pos + 1))) &&\n (!breaking || inList(cx, Type.BulletList) || line.skipSpace(line.pos + 2) < line.text.length) ? 1 : -1;\n}\nfunction isOrderedList(line, cx, breaking) {\n let pos = line.pos, next = line.next;\n for (;;) {\n if (next >= 48 && next <= 57 /* '0-9' */)\n pos++;\n else\n break;\n if (pos == line.text.length)\n return -1;\n next = line.text.charCodeAt(pos);\n }\n if (pos == line.pos || pos > line.pos + 9 ||\n (next != 46 && next != 41 /* '.)' */) ||\n (pos < line.text.length - 1 && !space(line.text.charCodeAt(pos + 1))) ||\n breaking && !inList(cx, Type.OrderedList) &&\n (line.skipSpace(pos + 1) == line.text.length || pos > line.pos + 1 || line.next != 49 /* '1' */))\n return -1;\n return pos + 1 - line.pos;\n}\nfunction isAtxHeading(line) {\n if (line.next != 35 /* '#' */)\n return -1;\n let pos = line.pos + 1;\n while (pos < line.text.length && line.text.charCodeAt(pos) == 35)\n pos++;\n if (pos < line.text.length && line.text.charCodeAt(pos) != 32)\n return -1;\n let size = pos - line.pos;\n return size > 6 ? -1 : size;\n}\nfunction isSetextUnderline(line) {\n if (line.next != 45 && line.next != 61 /* '-=' */ || line.indent >= line.baseIndent + 4)\n return -1;\n let pos = line.pos + 1;\n while (pos < line.text.length && line.text.charCodeAt(pos) == line.next)\n pos++;\n let end = pos;\n while (pos < line.text.length && space(line.text.charCodeAt(pos)))\n pos++;\n return pos == line.text.length ? end : -1;\n}\nconst EmptyLine = /^[ \\t]*$/, CommentEnd = /-->/, ProcessingEnd = /\\?>/;\nconst HTMLBlockStyle = [\n [/^<(?:script|pre|style)(?:\\s|>|$)/i, /<\\/(?:script|pre|style)>/i],\n [/^\\s*<!--/, CommentEnd],\n [/^\\s*<\\?/, ProcessingEnd],\n [/^\\s*<![A-Z]/, />/],\n [/^\\s*<!\\[CDATA\\[/, /\\]\\]>/],\n [/^\\s*<\\/?(?:address|article|aside|base|basefont|blockquote|body|caption|center|col|colgroup|dd|details|dialog|dir|div|dl|dt|fieldset|figcaption|figure|footer|form|frame|frameset|h1|h2|h3|h4|h5|h6|head|header|hr|html|iframe|legend|li|link|main|menu|menuitem|nav|noframes|ol|optgroup|option|p|param|section|source|summary|table|tbody|td|tfoot|th|thead|title|tr|track|ul)(?:\\s|\\/?>|$)/i, EmptyLine],\n [/^\\s*(?:<\\/[a-z][\\w-]*\\s*>|<[a-z][\\w-]*(\\s+[a-z:_][\\w-.]*(?:\\s*=\\s*(?:[^\\s\"'=<>`]+|'[^']*'|\"[^\"]*\"))?)*\\s*>)\\s*$/i, EmptyLine]\n];\nfunction isHTMLBlock(line, _cx, breaking) {\n if (line.next != 60 /* '<' */)\n return -1;\n let rest = line.text.slice(line.pos);\n for (let i = 0, e = HTMLBlockStyle.length - (breaking ? 1 : 0); i < e; i++)\n if (HTMLBlockStyle[i][0].test(rest))\n return i;\n return -1;\n}\nfunction getListIndent(line, pos) {\n let indentAfter = line.countIndent(pos, line.pos, line.indent);\n let indented = line.countIndent(line.skipSpace(pos), pos, indentAfter);\n return indented >= indentAfter + 5 ? indentAfter + 1 : indented;\n}\nfunction addCodeText(marks, from, to) {\n let last = marks.length - 1;\n if (last >= 0 && marks[last].to == from && marks[last].type == Type.CodeText)\n marks[last].to = to;\n else\n marks.push(elt(Type.CodeText, from, to));\n}\n// Rules for parsing blocks. A return value of false means the rule\n// doesn't apply here, true means it does. When true is returned and\n// `p.line` has been updated, the rule is assumed to have consumed a\n// leaf block. Otherwise, it is assumed to have opened a context.\nconst DefaultBlockParsers = {\n LinkReference: undefined,\n IndentedCode(cx, line) {\n let base = line.baseIndent + 4;\n if (line.indent < base)\n return false;\n let start = line.findColumn(base);\n let from = cx.lineStart + start, to = cx.lineStart + line.text.length;\n let marks = [], pendingMarks = [];\n addCodeText(marks, from, to);\n while (cx.nextLine() && line.depth >= cx.stack.length) {\n if (line.pos == line.text.length) { // Empty\n addCodeText(pendingMarks, cx.lineStart - 1, cx.lineStart);\n for (let m of line.markers)\n pendingMarks.push(m);\n }\n else if (line.indent < base) {\n break;\n }\n else {\n if (pendingMarks.length) {\n for (let m of pendingMarks) {\n if (m.type == Type.CodeText)\n addCodeText(marks, m.from, m.to);\n else\n marks.push(m);\n }\n pendingMarks = [];\n }\n addCodeText(marks, cx.lineStart - 1, cx.lineStart);\n for (let m of line.markers)\n marks.push(m);\n to = cx.lineStart + line.text.length;\n let codeStart = cx.lineStart + line.findColumn(line.baseIndent + 4);\n if (codeStart < to)\n addCodeText(marks, codeStart, to);\n }\n }\n if (pendingMarks.length) {\n pendingMarks = pendingMarks.filter(m => m.type != Type.CodeText);\n if (pendingMarks.length)\n line.markers = pendingMarks.concat(line.markers);\n }\n cx.addNode(cx.buffer.writeElements(marks, -from).finish(Type.CodeBlock, to - from), from);\n return true;\n },\n FencedCode(cx, line) {\n let fenceEnd = isFencedCode(line);\n if (fenceEnd < 0)\n return false;\n let from = cx.lineStart + line.pos, ch = line.next, len = fenceEnd - line.pos;\n let infoFrom = line.skipSpace(fenceEnd), infoTo = skipSpaceBack(line.text, line.text.length, infoFrom);\n let marks = [elt(Type.CodeMark, from, from + len)];\n if (infoFrom < infoTo)\n marks.push(elt(Type.CodeInfo, cx.lineStart + infoFrom, cx.lineStart + infoTo));\n for (let first = true; cx.nextLine() && line.depth >= cx.stack.length; first = false) {\n let i = line.pos;\n if (line.indent - line.baseIndent < 4)\n while (i < line.text.length && line.text.charCodeAt(i) == ch)\n i++;\n if (i - line.pos >= len && line.skipSpace(i) == line.text.length) {\n for (let m of line.markers)\n marks.push(m);\n marks.push(elt(Type.CodeMark, cx.lineStart + line.pos, cx.lineStart + i));\n cx.nextLine();\n break;\n }\n else {\n if (!first)\n addCodeText(marks, cx.lineStart - 1, cx.lineStart);\n for (let m of line.markers)\n marks.push(m);\n let textStart = cx.lineStart + line.basePos, textEnd = cx.lineStart + line.text.length;\n if (textStart < textEnd)\n addCodeText(marks, textStart, textEnd);\n }\n }\n cx.addNode(cx.buffer.writeElements(marks, -from)\n .finish(Type.FencedCode, cx.prevLineEnd() - from), from);\n return true;\n },\n Blockquote(cx, line) {\n let size = isBlockquote(line);\n if (size < 0)\n return false;\n cx.startContext(Type.Blockquote, line.pos);\n cx.addNode(Type.QuoteMark, cx.lineStart + line.pos, cx.lineStart + line.pos + 1);\n line.moveBase(line.pos + size);\n return null;\n },\n HorizontalRule(cx, line) {\n if (isHorizontalRule(line, cx, false) < 0)\n return false;\n let from = cx.lineStart + line.pos;\n cx.nextLine();\n cx.addNode(Type.HorizontalRule, from);\n return true;\n },\n BulletList(cx, line) {\n let size = isBulletList(line, cx, false);\n if (size < 0)\n return false;\n if (cx.block.type != Type.BulletList)\n cx.startContext(Type.BulletList, line.basePos, line.next);\n let newBase = getListIndent(line, line.pos + 1);\n cx.startContext(Type.ListItem, line.basePos, newBase - line.baseIndent);\n cx.addNode(Type.ListMark, cx.lineStart + line.pos, cx.lineStart + line.pos + size);\n line.moveBaseColumn(newBase);\n return null;\n },\n OrderedList(cx, line) {\n let size = isOrderedList(line, cx, false);\n if (size < 0)\n return false;\n if (cx.block.type != Type.OrderedList)\n cx.startContext(Type.OrderedList, line.basePos, line.text.charCodeAt(line.pos + size - 1));\n let newBase = getListIndent(line, line.pos + size);\n cx.startContext(Type.ListItem, line.basePos, newBase - line.baseIndent);\n cx.addNode(Type.ListMark, cx.lineStart + line.pos, cx.lineStart + line.pos + size);\n line.moveBaseColumn(newBase);\n return null;\n },\n ATXHeading(cx, line) {\n let size = isAtxHeading(line);\n if (size < 0)\n return false;\n let off = line.pos, from = cx.lineStart + off;\n let endOfSpace = skipSpaceBack(line.text, line.text.length, off), after = endOfSpace;\n while (after > off && line.text.charCodeAt(after - 1) == line.next)\n after--;\n if (after == endOfSpace || after == off || !space(line.text.charCodeAt(after - 1)))\n after = line.text.length;\n let buf = cx.buffer\n .write(Type.HeaderMark, 0, size)\n .writeElements(cx.parser.parseInline(line.text.slice(off + size + 1, after), from + size + 1), -from);\n if (after < line.text.length)\n buf.write(Type.HeaderMark, after - off, endOfSpace - off);\n let node = buf.finish(Type.ATXHeading1 - 1 + size, line.text.length - off);\n cx.nextLine();\n cx.addNode(node, from);\n return true;\n },\n HTMLBlock(cx, line) {\n let type = isHTMLBlock(line, cx, false);\n if (type < 0)\n return false;\n let from = cx.lineStart + line.pos, end = HTMLBlockStyle[type][1];\n let marks = [], trailing = end != EmptyLine;\n while (!end.test(line.text) && cx.nextLine()) {\n if (line.depth < cx.stack.length) {\n trailing = false;\n break;\n }\n for (let m of line.markers)\n marks.push(m);\n }\n if (trailing)\n cx.nextLine();\n let nodeType = end == CommentEnd ? Type.CommentBlock : end == ProcessingEnd ? Type.ProcessingInstructionBlock : Type.HTMLBlock;\n let to = cx.prevLineEnd();\n cx.addNode(cx.buffer.writeElements(marks, -from).finish(nodeType, to - from), from);\n return true;\n },\n SetextHeading: undefined // Specifies relative precedence for block-continue function\n};\n// This implements a state machine that incrementally parses link references. At each\n// next line, it looks ahead to see if the line continues the reference or not. If it\n// doesn't and a valid link is available ending before that line, it finishes that.\n// Similarly, on `finish` (when the leaf is terminated by external circumstances), it\n// creates a link reference if there's a valid reference up to the current point.\nclass LinkReferenceParser {\n constructor(leaf) {\n this.stage = 0 /* RefStage.Start */;\n this.elts = [];\n this.pos = 0;\n this.start = leaf.start;\n this.advance(leaf.content);\n }\n nextLine(cx, line, leaf) {\n if (this.stage == -1 /* RefStage.Failed */)\n return false;\n let content = leaf.content + \"\\n\" + line.scrub();\n let finish = this.advance(content);\n if (finish > -1 && finish < content.length)\n return this.complete(cx, leaf, finish);\n return false;\n }\n finish(cx, leaf) {\n if ((this.stage == 2 /* RefStage.Link */ || this.stage == 3 /* RefStage.Title */) && skipSpace(leaf.content, this.pos) == leaf.content.length)\n return this.complete(cx, leaf, leaf.content.length);\n return false;\n }\n complete(cx, leaf, len) {\n cx.addLeafElement(leaf, elt(Type.LinkReference, this.start, this.start + len, this.elts));\n return true;\n }\n nextStage(elt) {\n if (elt) {\n this.pos = elt.to - this.start;\n this.elts.push(elt);\n this.stage++;\n return true;\n }\n if (elt === false)\n this.stage = -1 /* RefStage.Failed */;\n return false;\n }\n advance(content) {\n for (;;) {\n if (this.stage == -1 /* RefStage.Failed */) {\n return -1;\n }\n else if (this.stage == 0 /* RefStage.Start */) {\n if (!this.nextStage(parseLinkLabel(content, this.pos, this.start, true)))\n return -1;\n if (content.charCodeAt(this.pos) != 58 /* ':' */)\n return this.stage = -1 /* RefStage.Failed */;\n this.elts.push(elt(Type.LinkMark, this.pos + this.start, this.pos + this.start + 1));\n this.pos++;\n }\n else if (this.stage == 1 /* RefStage.Label */) {\n if (!this.nextStage(parseURL(content, skipSpace(content, this.pos), this.start)))\n return -1;\n }\n else if (this.stage == 2 /* RefStage.Link */) {\n let skip = skipSpace(content, this.pos), end = 0;\n if (skip > this.pos) {\n let title = parseLinkTitle(content, skip, this.start);\n if (title) {\n let titleEnd = lineEnd(content, title.to - this.start);\n if (titleEnd > 0) {\n this.nextStage(title);\n end = titleEnd;\n }\n }\n }\n if (!end)\n end = lineEnd(content, this.pos);\n return end > 0 && end < content.length ? end : -1;\n }\n else { // RefStage.Title\n return lineEnd(content, this.pos);\n }\n }\n }\n}\nfunction lineEnd(text, pos) {\n for (; pos < text.length; pos++) {\n let next = text.charCodeAt(pos);\n if (next == 10)\n break;\n if (!space(next))\n return -1;\n }\n return pos;\n}\nclass SetextHeadingParser {\n nextLine(cx, line, leaf) {\n let underline = line.depth < cx.stack.length ? -1 : isSetextUnderline(line);\n let next = line.next;\n if (underline < 0)\n return false;\n let underlineMark = elt(Type.HeaderMark, cx.lineStart + line.pos, cx.lineStart + underline);\n cx.nextLine();\n cx.addLeafElement(leaf, elt(next == 61 ? Type.SetextHeading1 : Type.SetextHeading2, leaf.start, cx.prevLineEnd(), [\n ...cx.parser.parseInline(leaf.content, leaf.start),\n underlineMark\n ]));\n return true;\n }\n finish() {\n return false;\n }\n}\nconst DefaultLeafBlocks = {\n LinkReference(_, leaf) { return leaf.content.charCodeAt(0) == 91 /* '[' */ ? new LinkReferenceParser(leaf) : null; },\n SetextHeading() { return new SetextHeadingParser; }\n};\nconst DefaultEndLeaf = [\n (_, line) => isAtxHeading(line) >= 0,\n (_, line) => isFencedCode(line) >= 0,\n (_, line) => isBlockquote(line) >= 0,\n (p, line) => isBulletList(line, p, true) >= 0,\n (p, line) => isOrderedList(line, p, true) >= 0,\n (p, line) => isHorizontalRule(line, p, true) >= 0,\n (p, line) => isHTMLBlock(line, p, true) >= 0\n];\nconst scanLineResult = { text: \"\", end: 0 };\n/**\nBlock-level parsing functions get access to this context object.\n*/\nclass BlockContext {\n /**\n @internal\n */\n constructor(\n /**\n The parser configuration used.\n */\n parser, \n /**\n @internal\n */\n input, fragments, \n /**\n @internal\n */\n ranges) {\n this.parser = parser;\n this.input = input;\n this.ranges = ranges;\n this.line = new Line();\n this.atEnd = false;\n /**\n For reused nodes on gaps, we can't directly put the original\n node into the tree, since that may be bigger than its parent.\n When this happens, we create a dummy tree that is replaced by\n the proper node in `injectGaps` @internal\n */\n this.reusePlaceholders = new Map;\n this.stoppedAt = null;\n /**\n The range index that absoluteLineStart points into @internal\n */\n this.rangeI = 0;\n this.to = ranges[ranges.length - 1].to;\n this.lineStart = this.absoluteLineStart = this.absoluteLineEnd = ranges[0].from;\n this.block = CompositeBlock.create(Type.Document, 0, this.lineStart, 0, 0);\n this.stack = [this.block];\n this.fragments = fragments.length ? new FragmentCursor(fragments, input) : null;\n this.readLine();\n }\n get parsedPos() {\n return this.absoluteLineStart;\n }\n advance() {\n if (this.stoppedAt != null && this.absoluteLineStart > this.stoppedAt)\n return this.finish();\n let { line } = this;\n for (;;) {\n for (let markI = 0;;) {\n let next = line.depth < this.stack.length ? this.stack[this.stack.length - 1] : null;\n while (markI < line.markers.length && (!next || line.markers[markI].from < next.end)) {\n let mark = line.markers[markI++];\n this.addNode(mark.type, mark.from, mark.to);\n }\n if (!next)\n break;\n this.finishContext();\n }\n if (line.pos < line.text.length)\n break;\n // Empty line\n if (!this.nextLine())\n return this.finish();\n }\n if (this.fragments && this.reuseFragment(line.basePos))\n return null;\n start: for (;;) {\n for (let type of this.parser.blockParsers)\n if (type) {\n let result = type(this, line);\n if (result != false) {\n if (result == true)\n return null;\n line.forward();\n continue start;\n }\n }\n break;\n }\n let leaf = new LeafBlock(this.lineStart + line.pos, line.text.slice(line.pos));\n for (let parse of this.parser.leafBlockParsers)\n if (parse) {\n let parser = parse(this, leaf);\n if (parser)\n leaf.parsers.push(parser);\n }\n lines: while (this.nextLine()) {\n if (line.pos == line.text.length)\n break;\n if (line.indent < line.baseIndent + 4) {\n for (let stop of this.parser.endLeafBlock)\n if (stop(this, line, leaf))\n break lines;\n }\n for (let parser of leaf.parsers)\n if (parser.nextLine(this, line, leaf))\n return null;\n leaf.content += \"\\n\" + line.scrub();\n for (let m of line.markers)\n leaf.marks.push(m);\n }\n this.finishLeaf(leaf);\n return null;\n }\n stopAt(pos) {\n if (this.stoppedAt != null && this.stoppedAt < pos)\n throw new RangeError(\"Can't move stoppedAt forward\");\n this.stoppedAt = pos;\n }\n reuseFragment(start) {\n if (!this.fragments.moveTo(this.absoluteLineStart + start, this.absoluteLineStart) ||\n !this.fragments.matches(this.block.hash))\n return false;\n let taken = this.fragments.takeNodes(this);\n if (!taken)\n return false;\n this.absoluteLineStart += taken;\n this.lineStart = toRelative(this.absoluteLineStart, this.ranges);\n this.moveRangeI();\n if (this.absoluteLineStart < this.to) {\n this.lineStart++;\n this.absoluteLineStart++;\n this.readLine();\n }\n else {\n this.atEnd = true;\n this.readLine();\n }\n return true;\n }\n /**\n The number of parent blocks surrounding the current block.\n */\n get depth() {\n return this.stack.length;\n }\n /**\n Get the type of the parent block at the given depth. When no\n depth is passed, return the type of the innermost parent.\n */\n parentType(depth = this.depth - 1) {\n return this.parser.nodeSet.types[this.stack[depth].type];\n }\n /**\n Move to the next input line. This should only be called by\n (non-composite) [block parsers](#BlockParser.parse) that consume\n the line directly, or leaf block parser\n [`nextLine`](#LeafBlockParser.nextLine) methods when they\n consume the current line (and return true).\n */\n nextLine() {\n this.lineStart += this.line.text.length;\n if (this.absoluteLineEnd >= this.to) {\n this.absoluteLineStart = this.absoluteLineEnd;\n this.atEnd = true;\n this.readLine();\n return false;\n }\n else {\n this.lineStart++;\n this.absoluteLineStart = this.absoluteLineEnd + 1;\n this.moveRangeI();\n this.readLine();\n return true;\n }\n }\n /**\n Retrieve the text of the line after the current one, without\n actually moving the context's current line forward.\n */\n peekLine() {\n return this.scanLine(this.absoluteLineEnd + 1).text;\n }\n moveRangeI() {\n while (this.rangeI < this.ranges.length - 1 && this.absoluteLineStart >= this.ranges[this.rangeI].to) {\n this.rangeI++;\n this.absoluteLineStart = Math.max(this.absoluteLineStart, this.ranges[this.rangeI].from);\n }\n }\n /**\n @internal\n Collect the text for the next line.\n */\n scanLine(start) {\n let r = scanLineResult;\n r.end = start;\n if (start >= this.to) {\n r.text = \"\";\n }\n else {\n r.text = this.lineChunkAt(start);\n r.end += r.text.length;\n if (this.ranges.length > 1) {\n let textOffset = this.absoluteLineStart, rangeI = this.rangeI;\n while (this.ranges[rangeI].to < r.end) {\n rangeI++;\n let nextFrom = this.ranges[rangeI].from;\n let after = this.lineChunkAt(nextFrom);\n r.end = nextFrom + after.length;\n r.text = r.text.slice(0, this.ranges[rangeI - 1].to - textOffset) + after;\n textOffset = r.end - r.text.length;\n }\n }\n }\n return r;\n }\n /**\n @internal\n Populate this.line with the content of the next line. Skip\n leading characters covered by composite blocks.\n */\n readLine() {\n let { line } = this, { text, end } = this.scanLine(this.absoluteLineStart);\n this.absoluteLineEnd = end;\n line.reset(text);\n for (; line.depth < this.stack.length; line.depth++) {\n let cx = this.stack[line.depth], handler = this.parser.skipContextMarkup[cx.type];\n if (!handler)\n throw new Error(\"Unhandled block context \" + Type[cx.type]);\n let marks = this.line.markers.length;\n if (!handler(cx, this, line)) {\n if (this.line.markers.length > marks)\n cx.end = this.line.markers[this.line.markers.length - 1].to;\n break;\n }\n line.forward();\n }\n }\n lineChunkAt(pos) {\n let next = this.input.chunk(pos), text;\n if (!this.input.lineChunks) {\n let eol = next.indexOf(\"\\n\");\n text = eol < 0 ? next : next.slice(0, eol);\n }\n else {\n text = next == \"\\n\" ? \"\" : next;\n }\n return pos + text.length > this.to ? text.slice(0, this.to - pos) : text;\n }\n /**\n The end position of the previous line.\n */\n prevLineEnd() { return this.atEnd ? this.lineStart : this.lineStart - 1; }\n /**\n @internal\n */\n startContext(type, start, value = 0) {\n this.block = CompositeBlock.create(type, value, this.lineStart + start, this.block.hash, this.lineStart + this.line.text.length);\n this.stack.push(this.block);\n }\n /**\n Start a composite block. Should only be called from [block\n parser functions](#BlockParser.parse) that return null.\n */\n startComposite(type, start, value = 0) {\n this.startContext(this.parser.getNodeType(type), start, value);\n }\n /**\n @internal\n */\n addNode(block, from, to) {\n if (typeof block == \"number\")\n block = new Tree(this.parser.nodeSet.types[block], none, none, (to !== null && to !== void 0 ? to : this.prevLineEnd()) - from);\n this.block.addChild(block, from - this.block.from);\n }\n /**\n Add a block element. Can be called by [block\n parsers](#BlockParser.parse).\n */\n addElement(elt) {\n this.block.addChild(elt.toTree(this.parser.nodeSet), elt.from - this.block.from);\n }\n /**\n Add a block element from a [leaf parser](#LeafBlockParser). This\n makes sure any extra composite block markup (such as blockquote\n markers) inside the block are also added to the syntax tree.\n */\n addLeafElement(leaf, elt) {\n this.addNode(this.buffer\n .writeElements(injectMarks(elt.children, leaf.marks), -elt.from)\n .finish(elt.type, elt.to - elt.from), elt.from);\n }\n /**\n @internal\n */\n finishContext() {\n let cx = this.stack.pop();\n let top = this.stack[this.stack.length - 1];\n top.addChild(cx.toTree(this.parser.nodeSet), cx.from - top.from);\n this.block = top;\n }\n finish() {\n while (this.stack.length > 1)\n this.finishContext();\n return this.addGaps(this.block.toTree(this.parser.nodeSet, this.lineStart));\n }\n addGaps(tree) {\n return this.ranges.length > 1 ?\n injectGaps(this.ranges, 0, tree.topNode, this.ranges[0].from, this.reusePlaceholders) : tree;\n }\n /**\n @internal\n */\n finishLeaf(leaf) {\n for (let parser of leaf.parsers)\n if (parser.finish(this, leaf))\n return;\n let inline = injectMarks(this.parser.parseInline(leaf.content, leaf.start), leaf.marks);\n this.addNode(this.buffer\n .writeElements(inline, -leaf.start)\n .finish(Type.Paragraph, leaf.content.length), leaf.start);\n }\n elt(type, from, to, children) {\n if (typeof type == \"string\")\n return elt(this.parser.getNodeType(type), from, to, children);\n return new TreeElement(type, from);\n }\n /**\n @internal\n */\n get buffer() { return new Buffer(this.parser.nodeSet); }\n}\nfunction injectGaps(ranges, rangeI, tree, offset, dummies) {\n let rangeEnd = ranges[rangeI].to;\n let children = [], positions = [], start = tree.from + offset;\n function movePastNext(upto, inclusive) {\n while (inclusive ? upto >= rangeEnd : upto > rangeEnd) {\n let size = ranges[rangeI + 1].from - rangeEnd;\n offset += size;\n upto += size;\n rangeI++;\n rangeEnd = ranges[rangeI].to;\n }\n }\n for (let ch = tree.firstChild; ch; ch = ch.nextSibling) {\n movePastNext(ch.from + offset, true);\n let from = ch.from + offset, node, reuse = dummies.get(ch.tree);\n if (reuse) {\n node = reuse;\n }\n else if (ch.to + offset > rangeEnd) {\n node = injectGaps(ranges, rangeI, ch, offset, dummies);\n movePastNext(ch.to + offset, false);\n }\n else {\n node = ch.toTree();\n }\n children.push(node);\n positions.push(from - start);\n }\n movePastNext(tree.to + offset, false);\n return new Tree(tree.type, children, positions, tree.to + offset - start, tree.tree ? tree.tree.propValues : undefined);\n}\n/**\nA Markdown parser configuration.\n*/\nclass MarkdownParser extends Parser {\n /**\n @internal\n */\n constructor(\n /**\n The parser's syntax [node\n types](https://lezer.codemirror.net/docs/ref/#common.NodeSet).\n */\n nodeSet, \n /**\n @internal\n */\n blockParsers, \n /**\n @internal\n */\n leafBlockParsers, \n /**\n @internal\n */\n blockNames, \n /**\n @internal\n */\n endLeafBlock, \n /**\n @internal\n */\n skipContextMarkup, \n /**\n @internal\n */\n inlineParsers, \n /**\n @internal\n */\n inlineNames, \n /**\n @internal\n */\n wrappers) {\n super();\n this.nodeSet = nodeSet;\n this.blockParsers = blockParsers;\n this.leafBlockParsers = leafBlockParsers;\n this.blockNames = blockNames;\n this.endLeafBlock = endLeafBlock;\n this.skipContextMarkup = skipContextMarkup;\n this.inlineParsers = inlineParsers;\n this.inlineNames = inlineNames;\n this.wrappers = wrappers;\n /**\n @internal\n */\n this.nodeTypes = Object.create(null);\n for (let t of nodeSet.types)\n this.nodeTypes[t.name] = t.id;\n }\n createParse(input, fragments, ranges) {\n let parse = new BlockContext(this, input, fragments, ranges);\n for (let w of this.wrappers)\n parse = w(parse, input, fragments, ranges);\n return parse;\n }\n /**\n Reconfigure the parser.\n */\n configure(spec) {\n let config = resolveConfig(spec);\n if (!config)\n return this;\n let { nodeSet, skipContextMarkup } = this;\n let blockParsers = this.blockParsers.slice(), leafBlockParsers = this.leafBlockParsers.slice(), blockNames = this.blockNames.slice(), inlineParsers = this.inlineParsers.slice(), inlineNames = this.inlineNames.slice(), endLeafBlock = this.endLeafBlock.slice(), wrappers = this.wrappers;\n if (nonEmpty(config.defineNodes)) {\n skipContextMarkup = Object.assign({}, skipContextMarkup);\n let nodeTypes = nodeSet.types.slice(), styles;\n for (let s of config.defineNodes) {\n let { name, block, composite, style } = typeof s == \"string\" ? { name: s } : s;\n if (nodeTypes.some(t => t.name == name))\n continue;\n if (composite)\n skipContextMarkup[nodeTypes.length] =\n (bl, cx, line) => composite(cx, line, bl.value);\n let id = nodeTypes.length;\n let group = composite ? [\"Block\", \"BlockContext\"] : !block ? undefined\n : id >= Type.ATXHeading1 && id <= Type.SetextHeading2 ? [\"Block\", \"LeafBlock\", \"Heading\"] : [\"Block\", \"LeafBlock\"];\n nodeTypes.push(NodeType.define({\n id,\n name,\n props: group && [[NodeProp.group, group]]\n }));\n if (style) {\n if (!styles)\n styles = {};\n if (Array.isArray(style) || style instanceof Tag)\n styles[name] = style;\n else\n Object.assign(styles, style);\n }\n }\n nodeSet = new NodeSet(nodeTypes);\n if (styles)\n nodeSet = nodeSet.extend(styleTags(styles));\n }\n if (nonEmpty(config.props))\n nodeSet = nodeSet.extend(...config.props);\n if (nonEmpty(config.remove)) {\n for (let rm of config.remove) {\n let block = this.blockNames.indexOf(rm), inline = this.inlineNames.indexOf(rm);\n if (block > -1)\n blockParsers[block] = leafBlockParsers[block] = undefined;\n if (inline > -1)\n inlineParsers[inline] = undefined;\n }\n }\n if (nonEmpty(config.parseBlock)) {\n for (let spec of config.parseBlock) {\n let found = blockNames.indexOf(spec.name);\n if (found > -1) {\n blockParsers[found] = spec.parse;\n leafBlockParsers[found] = spec.leaf;\n }\n else {\n let pos = spec.before ? findName(blockNames, spec.before)\n : spec.after ? findName(blockNames, spec.after) + 1 : blockNames.length - 1;\n blockParsers.splice(pos, 0, spec.parse);\n leafBlockParsers.splice(pos, 0, spec.leaf);\n blockNames.splice(pos, 0, spec.name);\n }\n if (spec.endLeaf)\n endLeafBlock.push(spec.endLeaf);\n }\n }\n if (nonEmpty(config.parseInline)) {\n for (let spec of config.parseInline) {\n let found = inlineNames.indexOf(spec.name);\n if (found > -1) {\n inlineParsers[found] = spec.parse;\n }\n else {\n let pos = spec.before ? findName(inlineNames, spec.before)\n : spec.after ? findName(inlineNames, spec.after) + 1 : inlineNames.length - 1;\n inlineParsers.splice(pos, 0, spec.parse);\n inlineNames.splice(pos, 0, spec.name);\n }\n }\n }\n if (config.wrap)\n wrappers = wrappers.concat(config.wrap);\n return new MarkdownParser(nodeSet, blockParsers, leafBlockParsers, blockNames, endLeafBlock, skipContextMarkup, inlineParsers, inlineNames, wrappers);\n }\n /**\n @internal\n */\n getNodeType(name) {\n let found = this.nodeTypes[name];\n if (found == null)\n throw new RangeError(`Unknown node type '${name}'`);\n return found;\n }\n /**\n Parse the given piece of inline text at the given offset,\n returning an array of [`Element`](#Element) objects representing\n the inline content.\n */\n parseInline(text, offset) {\n let cx = new InlineContext(this, text, offset);\n outer: for (let pos = offset; pos < cx.end;) {\n let next = cx.char(pos);\n for (let token of this.inlineParsers)\n if (token) {\n let result = token(cx, next, pos);\n if (result >= 0) {\n pos = result;\n continue outer;\n }\n }\n pos++;\n }\n return cx.resolveMarkers(0);\n }\n}\nfunction nonEmpty(a) {\n return a != null && a.length > 0;\n}\nfunction resolveConfig(spec) {\n if (!Array.isArray(spec))\n return spec;\n if (spec.length == 0)\n return null;\n let conf = resolveConfig(spec[0]);\n if (spec.length == 1)\n return conf;\n let rest = resolveConfig(spec.slice(1));\n if (!rest || !conf)\n return conf || rest;\n let conc = (a, b) => (a || none).concat(b || none);\n let wrapA = conf.wrap, wrapB = rest.wrap;\n return {\n props: conc(conf.props, rest.props),\n defineNodes: conc(conf.defineNodes, rest.defineNodes),\n parseBlock: conc(conf.parseBlock, rest.parseBlock),\n parseInline: conc(conf.parseInline, rest.parseInline),\n remove: conc(conf.remove, rest.remove),\n wrap: !wrapA ? wrapB : !wrapB ? wrapA :\n (inner, input, fragments, ranges) => wrapA(wrapB(inner, input, fragments, ranges), input, fragments, ranges)\n };\n}\nfunction findName(names, name) {\n let found = names.indexOf(name);\n if (found < 0)\n throw new RangeError(`Position specified relative to unknown parser ${name}`);\n return found;\n}\nlet nodeTypes = [NodeType.none];\nfor (let i = 1, name; name = Type[i]; i++) {\n nodeTypes[i] = NodeType.define({\n id: i,\n name,\n props: i >= Type.Escape ? [] : [[NodeProp.group, i in DefaultSkipMarkup ? [\"Block\", \"BlockContext\"] : [\"Block\", \"LeafBlock\"]]],\n top: name == \"Document\"\n });\n}\nconst none = [];\nclass Buffer {\n constructor(nodeSet) {\n this.nodeSet = nodeSet;\n this.content = [];\n this.nodes = [];\n }\n write(type, from, to, children = 0) {\n this.content.push(type, from, to, 4 + children * 4);\n return this;\n }\n writeElements(elts, offset = 0) {\n for (let e of elts)\n e.writeTo(this, offset);\n return this;\n }\n finish(type, length) {\n return Tree.build({\n buffer: this.content,\n nodeSet: this.nodeSet,\n reused: this.nodes,\n topID: type,\n length\n });\n }\n}\n/**\nElements are used to compose syntax nodes during parsing.\n*/\nclass Element {\n /**\n @internal\n */\n constructor(\n /**\n The node's\n [id](https://lezer.codemirror.net/docs/ref/#common.NodeType.id).\n */\n type, \n /**\n The start of the node, as an offset from the start of the document.\n */\n from, \n /**\n The end of the node.\n */\n to, \n /**\n The node's child nodes @internal\n */\n children = none) {\n this.type = type;\n this.from = from;\n this.to = to;\n this.children = children;\n }\n /**\n @internal\n */\n writeTo(buf, offset) {\n let startOff = buf.content.length;\n buf.writeElements(this.children, offset);\n buf.content.push(this.type, this.from + offset, this.to + offset, buf.content.length + 4 - startOff);\n }\n /**\n @internal\n */\n toTree(nodeSet) {\n return new Buffer(nodeSet).writeElements(this.children, -this.from).finish(this.type, this.to - this.from);\n }\n}\nclass TreeElement {\n constructor(tree, from) {\n this.tree = tree;\n this.from = from;\n }\n get to() { return this.from + this.tree.length; }\n get type() { return this.tree.type.id; }\n get children() { return none; }\n writeTo(buf, offset) {\n buf.nodes.push(this.tree);\n buf.content.push(buf.nodes.length - 1, this.from + offset, this.to + offset, -1);\n }\n toTree() { return this.tree; }\n}\nfunction elt(type, from, to, children) {\n return new Element(type, from, to, children);\n}\nconst EmphasisUnderscore = { resolve: \"Emphasis\", mark: \"EmphasisMark\" };\nconst EmphasisAsterisk = { resolve: \"Emphasis\", mark: \"EmphasisMark\" };\nconst LinkStart = {}, ImageStart = {};\nclass InlineDelimiter {\n constructor(type, from, to, side) {\n this.type = type;\n this.from = from;\n this.to = to;\n this.side = side;\n }\n}\nconst Escapable = \"!\\\"#$%&'()*+,-./:;<=>?@[\\\\]^_`{|}~\";\nlet Punctuation = /[!\"#$%&'()*+,\\-.\\/:;<=>?@\\[\\\\\\]^_`{|}~\\xA1\\u2010-\\u2027]/;\ntry {\n Punctuation = new RegExp(\"[\\\\p{S}|\\\\p{P}]\", \"u\");\n}\ncatch (_) { }\nconst DefaultInline = {\n Escape(cx, next, start) {\n if (next != 92 /* '\\\\' */ || start == cx.end - 1)\n return -1;\n let escaped = cx.char(start + 1);\n for (let i = 0; i < Escapable.length; i++)\n if (Escapable.charCodeAt(i) == escaped)\n return cx.append(elt(Type.Escape, start, start + 2));\n return -1;\n },\n Entity(cx, next, start) {\n if (next != 38 /* '&' */)\n return -1;\n let m = /^(?:#\\d+|#x[a-f\\d]+|\\w+);/i.exec(cx.slice(start + 1, start + 31));\n return m ? cx.append(elt(Type.Entity, start, start + 1 + m[0].length)) : -1;\n },\n InlineCode(cx, next, start) {\n if (next != 96 /* '`' */ || start && cx.char(start - 1) == 96)\n return -1;\n let pos = start + 1;\n while (pos < cx.end && cx.char(pos) == 96)\n pos++;\n let size = pos - start, curSize = 0;\n for (; pos < cx.end; pos++) {\n if (cx.char(pos) == 96) {\n curSize++;\n if (curSize == size && cx.char(pos + 1) != 96)\n return cx.append(elt(Type.InlineCode, start, pos + 1, [\n elt(Type.CodeMark, start, start + size),\n elt(Type.CodeMark, pos + 1 - size, pos + 1)\n ]));\n }\n else {\n curSize = 0;\n }\n }\n return -1;\n },\n HTMLTag(cx, next, start) {\n if (next != 60 /* '<' */ || start == cx.end - 1)\n return -1;\n let after = cx.slice(start + 1, cx.end);\n let url = /^(?:[a-z][-\\w+.]+:[^\\s>]+|[a-z\\d.!#$%&'*+/=?^_`{|}~-]+@[a-z\\d](?:[a-z\\d-]{0,61}[a-z\\d])?(?:\\.[a-z\\d](?:[a-z\\d-]{0,61}[a-z\\d])?)*)>/i.exec(after);\n if (url) {\n return cx.append(elt(Type.Autolink, start, start + 1 + url[0].length, [\n elt(Type.LinkMark, start, start + 1),\n // url[0] includes the closing bracket, so exclude it from this slice\n elt(Type.URL, start + 1, start + url[0].length),\n elt(Type.LinkMark, start + url[0].length, start + 1 + url[0].length)\n ]));\n }\n let comment = /^!--[^>](?:-[^-]|[^-])*?-->/i.exec(after);\n if (comment)\n return cx.append(elt(Type.Comment, start, start + 1 + comment[0].length));\n let procInst = /^\\?[^]*?\\?>/.exec(after);\n if (procInst)\n return cx.append(elt(Type.ProcessingInstruction, start, start + 1 + procInst[0].length));\n let m = /^(?:![A-Z][^]*?>|!\\[CDATA\\[[^]*?\\]\\]>|\\/\\s*[a-zA-Z][\\w-]*\\s*>|\\s*[a-zA-Z][\\w-]*(\\s+[a-zA-Z:_][\\w-.:]*(?:\\s*=\\s*(?:[^\\s\"'=<>`]+|'[^']*'|\"[^\"]*\"))?)*\\s*(\\/\\s*)?>)/.exec(after);\n if (!m)\n return -1;\n return cx.append(elt(Type.HTMLTag, start, start + 1 + m[0].length));\n },\n Emphasis(cx, next, start) {\n if (next != 95 && next != 42)\n return -1;\n let pos = start + 1;\n while (cx.char(pos) == next)\n pos++;\n let before = cx.slice(start - 1, start), after = cx.slice(pos, pos + 1);\n let pBefore = Punctuation.test(before), pAfter = Punctuation.test(after);\n let sBefore = /\\s|^$/.test(before), sAfter = /\\s|^$/.test(after);\n let leftFlanking = !sAfter && (!pAfter || sBefore || pBefore);\n let rightFlanking = !sBefore && (!pBefore || sAfter || pAfter);\n let canOpen = leftFlanking && (next == 42 || !rightFlanking || pBefore);\n let canClose = rightFlanking && (next == 42 || !leftFlanking || pAfter);\n return cx.append(new InlineDelimiter(next == 95 ? EmphasisUnderscore : EmphasisAsterisk, start, pos, (canOpen ? 1 /* Mark.Open */ : 0 /* Mark.None */) | (canClose ? 2 /* Mark.Close */ : 0 /* Mark.None */)));\n },\n HardBreak(cx, next, start) {\n if (next == 92 /* '\\\\' */ && cx.char(start + 1) == 10 /* '\\n' */)\n return cx.append(elt(Type.HardBreak, start, start + 2));\n if (next == 32) {\n let pos = start + 1;\n while (cx.char(pos) == 32)\n pos++;\n if (cx.char(pos) == 10 && pos >= start + 2)\n return cx.append(elt(Type.HardBreak, start, pos + 1));\n }\n return -1;\n },\n Link(cx, next, start) {\n return next == 91 /* '[' */ ? cx.append(new InlineDelimiter(LinkStart, start, start + 1, 1 /* Mark.Open */)) : -1;\n },\n Image(cx, next, start) {\n return next == 33 /* '!' */ && cx.char(start + 1) == 91 /* '[' */\n ? cx.append(new InlineDelimiter(ImageStart, start, start + 2, 1 /* Mark.Open */)) : -1;\n },\n LinkEnd(cx, next, start) {\n if (next != 93 /* ']' */)\n return -1;\n // Scanning back to the next link/image start marker\n for (let i = cx.parts.length - 1; i >= 0; i--) {\n let part = cx.parts[i];\n if (part instanceof InlineDelimiter && (part.type == LinkStart || part.type == ImageStart)) {\n // If this one has been set invalid (because it would produce\n // a nested link) or there's no valid link here ignore both.\n if (!part.side || cx.skipSpace(part.to) == start && !/[(\\[]/.test(cx.slice(start + 1, start + 2))) {\n cx.parts[i] = null;\n return -1;\n }\n // Finish the content and replace the entire range in\n // this.parts with the link/image node.\n let content = cx.takeContent(i);\n let link = cx.parts[i] = finishLink(cx, content, part.type == LinkStart ? Type.Link : Type.Image, part.from, start + 1);\n // Set any open-link markers before this link to invalid.\n if (part.type == LinkStart)\n for (let j = 0; j < i; j++) {\n let p = cx.parts[j];\n if (p instanceof InlineDelimiter && p.type == LinkStart)\n p.side = 0 /* Mark.None */;\n }\n return link.to;\n }\n }\n return -1;\n }\n};\nfunction finishLink(cx, content, type, start, startPos) {\n let { text } = cx, next = cx.char(startPos), endPos = startPos;\n content.unshift(elt(Type.LinkMark, start, start + (type == Type.Image ? 2 : 1)));\n content.push(elt(Type.LinkMark, startPos - 1, startPos));\n if (next == 40 /* '(' */) {\n let pos = cx.skipSpace(startPos + 1);\n let dest = parseURL(text, pos - cx.offset, cx.offset), title;\n if (dest) {\n pos = cx.skipSpace(dest.to);\n // The destination and title must be separated by whitespace\n if (pos != dest.to) {\n title = parseLinkTitle(text, pos - cx.offset, cx.offset);\n if (title)\n pos = cx.skipSpace(title.to);\n }\n }\n if (cx.char(pos) == 41 /* ')' */) {\n content.push(elt(Type.LinkMark, startPos, startPos + 1));\n endPos = pos + 1;\n if (dest)\n content.push(dest);\n if (title)\n content.push(title);\n content.push(elt(Type.LinkMark, pos, endPos));\n }\n }\n else if (next == 91 /* '[' */) {\n let label = parseLinkLabel(text, startPos - cx.offset, cx.offset, false);\n if (label) {\n content.push(label);\n endPos = label.to;\n }\n }\n return elt(type, start, endPos, content);\n}\n// These return `null` when falling off the end of the input, `false`\n// when parsing fails otherwise (for use in the incremental link\n// reference parser).\nfunction parseURL(text, start, offset) {\n let next = text.charCodeAt(start);\n if (next == 60 /* '<' */) {\n for (let pos = start + 1; pos < text.length; pos++) {\n let ch = text.charCodeAt(pos);\n if (ch == 62 /* '>' */)\n return elt(Type.URL, start + offset, pos + 1 + offset);\n if (ch == 60 || ch == 10 /* '<\\n' */)\n return false;\n }\n return null;\n }\n else {\n let depth = 0, pos = start;\n for (let escaped = false; pos < text.length; pos++) {\n let ch = text.charCodeAt(pos);\n if (space(ch)) {\n break;\n }\n else if (escaped) {\n escaped = false;\n }\n else if (ch == 40 /* '(' */) {\n depth++;\n }\n else if (ch == 41 /* ')' */) {\n if (!depth)\n break;\n depth--;\n }\n else if (ch == 92 /* '\\\\' */) {\n escaped = true;\n }\n }\n return pos > start ? elt(Type.URL, start + offset, pos + offset) : pos == text.length ? null : false;\n }\n}\nfunction parseLinkTitle(text, start, offset) {\n let next = text.charCodeAt(start);\n if (next != 39 && next != 34 && next != 40 /* '\"\\'(' */)\n return false;\n let end = next == 40 ? 41 : next;\n for (let pos = start + 1, escaped = false; pos < text.length; pos++) {\n let ch = text.charCodeAt(pos);\n if (escaped)\n escaped = false;\n else if (ch == end)\n return elt(Type.LinkTitle, start + offset, pos + 1 + offset);\n else if (ch == 92 /* '\\\\' */)\n escaped = true;\n }\n return null;\n}\nfunction parseLinkLabel(text, start, offset, requireNonWS) {\n for (let escaped = false, pos = start + 1, end = Math.min(text.length, pos + 999); pos < end; pos++) {\n let ch = text.charCodeAt(pos);\n if (escaped)\n escaped = false;\n else if (ch == 93 /* ']' */)\n return requireNonWS ? false : elt(Type.LinkLabel, start + offset, pos + 1 + offset);\n else {\n if (requireNonWS && !space(ch))\n requireNonWS = false;\n if (ch == 91 /* '[' */)\n return false;\n else if (ch == 92 /* '\\\\' */)\n escaped = true;\n }\n }\n return null;\n}\n/**\nInline parsing functions get access to this context, and use it to\nread the content and emit syntax nodes.\n*/\nclass InlineContext {\n /**\n @internal\n */\n constructor(\n /**\n The parser that is being used.\n */\n parser, \n /**\n The text of this inline section.\n */\n text, \n /**\n The starting offset of the section in the document.\n */\n offset) {\n this.parser = parser;\n this.text = text;\n this.offset = offset;\n /**\n @internal\n */\n this.parts = [];\n }\n /**\n Get the character code at the given (document-relative)\n position.\n */\n char(pos) { return pos >= this.end ? -1 : this.text.charCodeAt(pos - this.offset); }\n /**\n The position of the end of this inline section.\n */\n get end() { return this.offset + this.text.length; }\n /**\n Get a substring of this inline section. Again uses\n document-relative positions.\n */\n slice(from, to) { return this.text.slice(from - this.offset, to - this.offset); }\n /**\n @internal\n */\n append(elt) {\n this.parts.push(elt);\n return elt.to;\n }\n /**\n Add a [delimiter](#DelimiterType) at this given position. `open`\n and `close` indicate whether this delimiter is opening, closing,\n or both. Returns the end of the delimiter, for convenient\n returning from [parse functions](#InlineParser.parse).\n */\n addDelimiter(type, from, to, open, close) {\n return this.append(new InlineDelimiter(type, from, to, (open ? 1 /* Mark.Open */ : 0 /* Mark.None */) | (close ? 2 /* Mark.Close */ : 0 /* Mark.None */)));\n }\n /**\n Returns true when there is an unmatched link or image opening\n token before the current position.\n */\n get hasOpenLink() {\n for (let i = this.parts.length - 1; i >= 0; i--) {\n let part = this.parts[i];\n if (part instanceof InlineDelimiter && (part.type == LinkStart || part.type == ImageStart))\n return true;\n }\n return false;\n }\n /**\n Add an inline element. Returns the end of the element.\n */\n addElement(elt) {\n return this.append(elt);\n }\n /**\n Resolve markers between this.parts.length and from, wrapping matched markers in the\n appropriate node and updating the content of this.parts. @internal\n */\n resolveMarkers(from) {\n // Scan forward, looking for closing tokens\n for (let i = from; i < this.parts.length; i++) {\n let close = this.parts[i];\n if (!(close instanceof InlineDelimiter && close.type.resolve && (close.side & 2 /* Mark.Close */)))\n continue;\n let emp = close.type == EmphasisUnderscore || close.type == EmphasisAsterisk;\n let closeSize = close.to - close.from;\n let open, j = i - 1;\n // Continue scanning for a matching opening token\n for (; j >= from; j--) {\n let part = this.parts[j];\n if (part instanceof InlineDelimiter && (part.side & 1 /* Mark.Open */) && part.type == close.type &&\n // Ignore emphasis delimiters where the character count doesn't match\n !(emp && ((close.side & 1 /* Mark.Open */) || (part.side & 2 /* Mark.Close */)) &&\n (part.to - part.from + closeSize) % 3 == 0 && ((part.to - part.from) % 3 || closeSize % 3))) {\n open = part;\n break;\n }\n }\n if (!open)\n continue;\n let type = close.type.resolve, content = [];\n let start = open.from, end = close.to;\n // Emphasis marker effect depends on the character count. Size consumed is minimum of the two\n // markers.\n if (emp) {\n let size = Math.min(2, open.to - open.from, closeSize);\n start = open.to - size;\n end = close.from + size;\n type = size == 1 ? \"Emphasis\" : \"StrongEmphasis\";\n }\n // Move the covered region into content, optionally adding marker nodes\n if (open.type.mark)\n content.push(this.elt(open.type.mark, start, open.to));\n for (let k = j + 1; k < i; k++) {\n if (this.parts[k] instanceof Element)\n content.push(this.parts[k]);\n this.parts[k] = null;\n }\n if (close.type.mark)\n content.push(this.elt(close.type.mark, close.from, end));\n let element = this.elt(type, start, end, content);\n // If there are leftover emphasis marker characters, shrink the close/open markers. Otherwise, clear them.\n this.parts[j] = emp && open.from != start ? new InlineDelimiter(open.type, open.from, start, open.side) : null;\n let keep = this.parts[i] = emp && close.to != end ? new InlineDelimiter(close.type, end, close.to, close.side) : null;\n // Insert the new element in this.parts\n if (keep)\n this.parts.splice(i, 0, element);\n else\n this.parts[i] = element;\n }\n // Collect the elements remaining in this.parts into an array.\n let result = [];\n for (let i = from; i < this.parts.length; i++) {\n let part = this.parts[i];\n if (part instanceof Element)\n result.push(part);\n }\n return result;\n }\n /**\n Find an opening delimiter of the given type. Returns `null` if\n no delimiter is found, or an index that can be passed to\n [`takeContent`](#InlineContext.takeContent) otherwise.\n */\n findOpeningDelimiter(type) {\n for (let i = this.parts.length - 1; i >= 0; i--) {\n let part = this.parts[i];\n if (part instanceof InlineDelimiter && part.type == type && (part.side & 1 /* Mark.Open */))\n return i;\n }\n return null;\n }\n /**\n Remove all inline elements and delimiters starting from the\n given index (which you should get from\n [`findOpeningDelimiter`](#InlineContext.findOpeningDelimiter),\n resolve delimiters inside of them, and return them as an array\n of elements.\n */\n takeContent(startIndex) {\n let content = this.resolveMarkers(startIndex);\n this.parts.length = startIndex;\n return content;\n }\n /**\n Return the delimiter at the given index. Mostly useful to get\n additional info out of a delimiter index returned by\n [`findOpeningDelimiter`](#InlineContext.findOpeningDelimiter).\n Returns null if there is no delimiter at this index.\n */\n getDelimiterAt(index) {\n let part = this.parts[index];\n return part instanceof InlineDelimiter ? part : null;\n }\n /**\n Skip space after the given (document) position, returning either\n the position of the next non-space character or the end of the\n section.\n */\n skipSpace(from) { return skipSpace(this.text, from - this.offset) + this.offset; }\n elt(type, from, to, children) {\n if (typeof type == \"string\")\n return elt(this.parser.getNodeType(type), from, to, children);\n return new TreeElement(type, from);\n }\n}\n/**\nThe opening delimiter type used by the standard link parser.\n*/\nInlineContext.linkStart = LinkStart;\n/**\nOpening delimiter type used for standard images.\n*/\nInlineContext.imageStart = ImageStart;\nfunction injectMarks(elements, marks) {\n if (!marks.length)\n return elements;\n if (!elements.length)\n return marks;\n let elts = elements.slice(), eI = 0;\n for (let mark of marks) {\n while (eI < elts.length && elts[eI].to < mark.to)\n eI++;\n if (eI < elts.length && elts[eI].from < mark.from) {\n let e = elts[eI];\n if (e instanceof Element)\n elts[eI] = new Element(e.type, e.from, e.to, injectMarks(e.children, [mark]));\n }\n else {\n elts.splice(eI++, 0, mark);\n }\n }\n return elts;\n}\n// These are blocks that can span blank lines, and should thus only be\n// reused if their next sibling is also being reused.\nconst NotLast = [Type.CodeBlock, Type.ListItem, Type.OrderedList, Type.BulletList];\nclass FragmentCursor {\n constructor(fragments, input) {\n this.fragments = fragments;\n this.input = input;\n // Index into fragment array\n this.i = 0;\n // Active fragment\n this.fragment = null;\n this.fragmentEnd = -1;\n // Cursor into the current fragment, if any. When `moveTo` returns\n // true, this points at the first block after `pos`.\n this.cursor = null;\n if (fragments.length)\n this.fragment = fragments[this.i++];\n }\n nextFragment() {\n this.fragment = this.i < this.fragments.length ? this.fragments[this.i++] : null;\n this.cursor = null;\n this.fragmentEnd = -1;\n }\n moveTo(pos, lineStart) {\n while (this.fragment && this.fragment.to <= pos)\n this.nextFragment();\n if (!this.fragment || this.fragment.from > (pos ? pos - 1 : 0))\n return false;\n if (this.fragmentEnd < 0) {\n let end = this.fragment.to;\n while (end > 0 && this.input.read(end - 1, end) != \"\\n\")\n end--;\n this.fragmentEnd = end ? end - 1 : 0;\n }\n let c = this.cursor;\n if (!c) {\n c = this.cursor = this.fragment.tree.cursor();\n c.firstChild();\n }\n let rPos = pos + this.fragment.offset;\n while (c.to <= rPos)\n if (!c.parent())\n return false;\n for (;;) {\n if (c.from >= rPos)\n return this.fragment.from <= lineStart;\n if (!c.childAfter(rPos))\n return false;\n }\n }\n matches(hash) {\n let tree = this.cursor.tree;\n return tree && tree.prop(NodeProp.contextHash) == hash;\n }\n takeNodes(cx) {\n let cur = this.cursor, off = this.fragment.offset, fragEnd = this.fragmentEnd - (this.fragment.openEnd ? 1 : 0);\n let start = cx.absoluteLineStart, end = start, blockI = cx.block.children.length;\n let prevEnd = end, prevI = blockI;\n for (;;) {\n if (cur.to - off > fragEnd) {\n if (cur.type.isAnonymous && cur.firstChild())\n continue;\n break;\n }\n let pos = toRelative(cur.from - off, cx.ranges);\n if (cur.to - off <= cx.ranges[cx.rangeI].to) { // Fits in current range\n cx.addNode(cur.tree, pos);\n }\n else {\n let dummy = new Tree(cx.parser.nodeSet.types[Type.Paragraph], [], [], 0, cx.block.hashProp);\n cx.reusePlaceholders.set(dummy, cur.tree);\n cx.addNode(dummy, pos);\n }\n // Taken content must always end in a block, because incremental\n // parsing happens on block boundaries. Never stop directly\n // after an indented code block, since those can continue after\n // any number of blank lines.\n if (cur.type.is(\"Block\")) {\n if (NotLast.indexOf(cur.type.id) < 0) {\n end = cur.to - off;\n blockI = cx.block.children.length;\n }\n else {\n end = prevEnd;\n blockI = prevI;\n prevEnd = cur.to - off;\n prevI = cx.block.children.length;\n }\n }\n if (!cur.nextSibling())\n break;\n }\n while (cx.block.children.length > blockI) {\n cx.block.children.pop();\n cx.block.positions.pop();\n }\n return end - start;\n }\n}\n// Convert an input-stream-relative position to a\n// Markdown-doc-relative position by subtracting the size of all input\n// gaps before `abs`.\nfunction toRelative(abs, ranges) {\n let pos = abs;\n for (let i = 1; i < ranges.length; i++) {\n let gapFrom = ranges[i - 1].to, gapTo = ranges[i].from;\n if (gapFrom < abs)\n pos -= gapTo - gapFrom;\n }\n return pos;\n}\nconst markdownHighlighting = styleTags({\n \"Blockquote/...\": tags.quote,\n HorizontalRule: tags.contentSeparator,\n \"ATXHeading1/... SetextHeading1/...\": tags.heading1,\n \"ATXHeading2/... SetextHeading2/...\": tags.heading2,\n \"ATXHeading3/...\": tags.heading3,\n \"ATXHeading4/...\": tags.heading4,\n \"ATXHeading5/...\": tags.heading5,\n \"ATXHeading6/...\": tags.heading6,\n \"Comment CommentBlock\": tags.comment,\n Escape: tags.escape,\n Entity: tags.character,\n \"Emphasis/...\": tags.emphasis,\n \"StrongEmphasis/...\": tags.strong,\n \"Link/... Image/...\": tags.link,\n \"OrderedList/... BulletList/...\": tags.list,\n \"BlockQuote/...\": tags.quote,\n \"InlineCode CodeText\": tags.monospace,\n \"URL Autolink\": tags.url,\n \"HeaderMark HardBreak QuoteMark ListMark LinkMark EmphasisMark CodeMark\": tags.processingInstruction,\n \"CodeInfo LinkLabel\": tags.labelName,\n LinkTitle: tags.string,\n Paragraph: tags.content\n});\n/**\nThe default CommonMark parser.\n*/\nconst parser = new MarkdownParser(new NodeSet(nodeTypes).extend(markdownHighlighting), Object.keys(DefaultBlockParsers).map(n => DefaultBlockParsers[n]), Object.keys(DefaultBlockParsers).map(n => DefaultLeafBlocks[n]), Object.keys(DefaultBlockParsers), DefaultEndLeaf, DefaultSkipMarkup, Object.keys(DefaultInline).map(n => DefaultInline[n]), Object.keys(DefaultInline), []);\n\nfunction leftOverSpace(node, from, to) {\n let ranges = [];\n for (let n = node.firstChild, pos = from;; n = n.nextSibling) {\n let nextPos = n ? n.from : to;\n if (nextPos > pos)\n ranges.push({ from: pos, to: nextPos });\n if (!n)\n break;\n pos = n.to;\n }\n return ranges;\n}\n/**\nCreate a Markdown extension to enable nested parsing on code\nblocks and/or embedded HTML.\n*/\nfunction parseCode(config) {\n let { codeParser, htmlParser } = config;\n let wrap = parseMixed((node, input) => {\n let id = node.type.id;\n if (codeParser && (id == Type.CodeBlock || id == Type.FencedCode)) {\n let info = \"\";\n if (id == Type.FencedCode) {\n let infoNode = node.node.getChild(Type.CodeInfo);\n if (infoNode)\n info = input.read(infoNode.from, infoNode.to);\n }\n let parser = codeParser(info);\n if (parser)\n return { parser, overlay: node => node.type.id == Type.CodeText };\n }\n else if (htmlParser && (id == Type.HTMLBlock || id == Type.HTMLTag || id == Type.CommentBlock)) {\n return { parser: htmlParser, overlay: leftOverSpace(node.node, node.from, node.to) };\n }\n return null;\n });\n return { wrap };\n}\n\nconst StrikethroughDelim = { resolve: \"Strikethrough\", mark: \"StrikethroughMark\" };\n/**\nAn extension that implements\n[GFM-style](https://github.github.com/gfm/#strikethrough-extension-)\nStrikethrough syntax using `~~` delimiters.\n*/\nconst Strikethrough = {\n defineNodes: [{\n name: \"Strikethrough\",\n style: { \"Strikethrough/...\": tags.strikethrough }\n }, {\n name: \"StrikethroughMark\",\n style: tags.processingInstruction\n }],\n parseInline: [{\n name: \"Strikethrough\",\n parse(cx, next, pos) {\n if (next != 126 /* '~' */ || cx.char(pos + 1) != 126 || cx.char(pos + 2) == 126)\n return -1;\n let before = cx.slice(pos - 1, pos), after = cx.slice(pos + 2, pos + 3);\n let sBefore = /\\s|^$/.test(before), sAfter = /\\s|^$/.test(after);\n let pBefore = Punctuation.test(before), pAfter = Punctuation.test(after);\n return cx.addDelimiter(StrikethroughDelim, pos, pos + 2, !sAfter && (!pAfter || sBefore || pBefore), !sBefore && (!pBefore || sAfter || pAfter));\n },\n after: \"Emphasis\"\n }]\n};\n// Parse a line as a table row and return the row count. When `elts`\n// is given, push syntax elements for the content onto it.\nfunction parseRow(cx, line, startI = 0, elts, offset = 0) {\n let count = 0, first = true, cellStart = -1, cellEnd = -1, esc = false;\n let parseCell = () => {\n elts.push(cx.elt(\"TableCell\", offset + cellStart, offset + cellEnd, cx.parser.parseInline(line.slice(cellStart, cellEnd), offset + cellStart)));\n };\n for (let i = startI; i < line.length; i++) {\n let next = line.charCodeAt(i);\n if (next == 124 /* '|' */ && !esc) {\n if (!first || cellStart > -1)\n count++;\n first = false;\n if (elts) {\n if (cellStart > -1)\n parseCell();\n elts.push(cx.elt(\"TableDelimiter\", i + offset, i + offset + 1));\n }\n cellStart = cellEnd = -1;\n }\n else if (esc || next != 32 && next != 9) {\n if (cellStart < 0)\n cellStart = i;\n cellEnd = i + 1;\n }\n esc = !esc && next == 92;\n }\n if (cellStart > -1) {\n count++;\n if (elts)\n parseCell();\n }\n return count;\n}\nfunction hasPipe(str, start) {\n for (let i = start; i < str.length; i++) {\n let next = str.charCodeAt(i);\n if (next == 124 /* '|' */)\n return true;\n if (next == 92 /* '\\\\' */)\n i++;\n }\n return false;\n}\nconst delimiterLine = /^\\|?(\\s*:?-+:?\\s*\\|)+(\\s*:?-+:?\\s*)?$/;\nclass TableParser {\n constructor() {\n // Null means we haven't seen the second line yet, false means this\n // isn't a table, and an array means this is a table and we've\n // parsed the given rows so far.\n this.rows = null;\n }\n nextLine(cx, line, leaf) {\n if (this.rows == null) { // Second line\n this.rows = false;\n let lineText;\n if ((line.next == 45 || line.next == 58 || line.next == 124 /* '-:|' */) &&\n delimiterLine.test(lineText = line.text.slice(line.pos))) {\n let firstRow = [], firstCount = parseRow(cx, leaf.content, 0, firstRow, leaf.start);\n if (firstCount == parseRow(cx, lineText, line.pos))\n this.rows = [cx.elt(\"TableHeader\", leaf.start, leaf.start + leaf.content.length, firstRow),\n cx.elt(\"TableDelimiter\", cx.lineStart + line.pos, cx.lineStart + line.text.length)];\n }\n }\n else if (this.rows) { // Line after the second\n let content = [];\n parseRow(cx, line.text, line.pos, content, cx.lineStart);\n this.rows.push(cx.elt(\"TableRow\", cx.lineStart + line.pos, cx.lineStart + line.text.length, content));\n }\n return false;\n }\n finish(cx, leaf) {\n if (!this.rows)\n return false;\n cx.addLeafElement(leaf, cx.elt(\"Table\", leaf.start, leaf.start + leaf.content.length, this.rows));\n return true;\n }\n}\n/**\nThis extension provides\n[GFM-style](https://github.github.com/gfm/#tables-extension-)\ntables, using syntax like this:\n\n```\n| head 1 | head 2 |\n| --- | --- |\n| cell 1 | cell 2 |\n```\n*/\nconst Table = {\n defineNodes: [\n { name: \"Table\", block: true },\n { name: \"TableHeader\", style: { \"TableHeader/...\": tags.heading } },\n \"TableRow\",\n { name: \"TableCell\", style: tags.content },\n { name: \"TableDelimiter\", style: tags.processingInstruction },\n ],\n parseBlock: [{\n name: \"Table\",\n leaf(_, leaf) { return hasPipe(leaf.content, 0) ? new TableParser : null; },\n endLeaf(cx, line, leaf) {\n if (leaf.parsers.some(p => p instanceof TableParser) || !hasPipe(line.text, line.basePos))\n return false;\n let next = cx.peekLine();\n return delimiterLine.test(next) && parseRow(cx, line.text, line.basePos) == parseRow(cx, next, line.basePos);\n },\n before: \"SetextHeading\"\n }]\n};\nclass TaskParser {\n nextLine() { return false; }\n finish(cx, leaf) {\n cx.addLeafElement(leaf, cx.elt(\"Task\", leaf.start, leaf.start + leaf.content.length, [\n cx.elt(\"TaskMarker\", leaf.start, leaf.start + 3),\n ...cx.parser.parseInline(leaf.content.slice(3), leaf.start + 3)\n ]));\n return true;\n }\n}\n/**\nExtension providing\n[GFM-style](https://github.github.com/gfm/#task-list-items-extension-)\ntask list items, where list items can be prefixed with `[ ]` or\n`[x]` to add a checkbox.\n*/\nconst TaskList = {\n defineNodes: [\n { name: \"Task\", block: true, style: tags.list },\n { name: \"TaskMarker\", style: tags.atom }\n ],\n parseBlock: [{\n name: \"TaskList\",\n leaf(cx, leaf) {\n return /^\\[[ xX]\\][ \\t]/.test(leaf.content) && cx.parentType().name == \"ListItem\" ? new TaskParser : null;\n },\n after: \"SetextHeading\"\n }]\n};\nconst autolinkRE = /(www\\.)|(https?:\\/\\/)|([\\w.+-]{1,100}@)|(mailto:|xmpp:)/gy;\nconst urlRE = /[\\w-]+(\\.[\\w-]+)+(\\/[^\\s<]*)?/gy;\nconst lastTwoDomainWords = /[\\w-]+\\.[\\w-]+($|\\/)/;\nconst emailRE = /[\\w.+-]+@[\\w-]+(\\.[\\w.-]+)+/gy;\nconst xmppResourceRE = /\\/[a-zA-Z\\d@.]+/gy;\nfunction count(str, from, to, ch) {\n let result = 0;\n for (let i = from; i < to; i++)\n if (str[i] == ch)\n result++;\n return result;\n}\nfunction autolinkURLEnd(text, from) {\n urlRE.lastIndex = from;\n let m = urlRE.exec(text);\n if (!m || lastTwoDomainWords.exec(m[0])[0].indexOf(\"_\") > -1)\n return -1;\n let end = from + m[0].length;\n for (;;) {\n let last = text[end - 1], m;\n if (/[?!.,:*_~]/.test(last) ||\n last == \")\" && count(text, from, end, \")\") > count(text, from, end, \"(\"))\n end--;\n else if (last == \";\" && (m = /&(?:#\\d+|#x[a-f\\d]+|\\w+);$/.exec(text.slice(from, end))))\n end = from + m.index;\n else\n break;\n }\n return end;\n}\nfunction autolinkEmailEnd(text, from) {\n emailRE.lastIndex = from;\n let m = emailRE.exec(text);\n if (!m)\n return -1;\n let last = m[0][m[0].length - 1];\n return last == \"_\" || last == \"-\" ? -1 : from + m[0].length - (last == \".\" ? 1 : 0);\n}\n/**\nExtension that implements autolinking for\n`www.`/`http://`/`https://`/`mailto:`/`xmpp:` URLs and email\naddresses.\n*/\nconst Autolink = {\n parseInline: [{\n name: \"Autolink\",\n parse(cx, next, absPos) {\n let pos = absPos - cx.offset;\n if (pos && /\\w/.test(cx.text[pos - 1]))\n return -1;\n autolinkRE.lastIndex = pos;\n let m = autolinkRE.exec(cx.text), end = -1;\n if (!m)\n return -1;\n if (m[1] || m[2]) { // www., http://\n end = autolinkURLEnd(cx.text, pos + m[0].length);\n if (end > -1 && cx.hasOpenLink) {\n let noBracket = /([^\\[\\]]|\\[[^\\]]*\\])*/.exec(cx.text.slice(pos, end));\n end = pos + noBracket[0].length;\n }\n }\n else if (m[3]) { // email address\n end = autolinkEmailEnd(cx.text, pos);\n }\n else { // mailto:/xmpp:\n end = autolinkEmailEnd(cx.text, pos + m[0].length);\n if (end > -1 && m[0] == \"xmpp:\") {\n xmppResourceRE.lastIndex = end;\n m = xmppResourceRE.exec(cx.text);\n if (m)\n end = m.index + m[0].length;\n }\n }\n if (end < 0)\n return -1;\n cx.addElement(cx.elt(\"URL\", absPos, end + cx.offset));\n return end + cx.offset;\n }\n }]\n};\n/**\nExtension bundle containing [`Table`](#Table),\n[`TaskList`](#TaskList), [`Strikethrough`](#Strikethrough), and\n[`Autolink`](#Autolink).\n*/\nconst GFM = [Table, TaskList, Strikethrough, Autolink];\nfunction parseSubSuper(ch, node, mark) {\n return (cx, next, pos) => {\n if (next != ch || cx.char(pos + 1) == ch)\n return -1;\n let elts = [cx.elt(mark, pos, pos + 1)];\n for (let i = pos + 1; i < cx.end; i++) {\n let next = cx.char(i);\n if (next == ch)\n return cx.addElement(cx.elt(node, pos, i + 1, elts.concat(cx.elt(mark, i, i + 1))));\n if (next == 92 /* '\\\\' */)\n elts.push(cx.elt(\"Escape\", i, i++ + 2));\n if (space(next))\n break;\n }\n return -1;\n };\n}\n/**\nExtension providing\n[Pandoc-style](https://pandoc.org/MANUAL.html#superscripts-and-subscripts)\nsuperscript using `^` markers.\n*/\nconst Superscript = {\n defineNodes: [\n { name: \"Superscript\", style: tags.special(tags.content) },\n { name: \"SuperscriptMark\", style: tags.processingInstruction }\n ],\n parseInline: [{\n name: \"Superscript\",\n parse: parseSubSuper(94 /* '^' */, \"Superscript\", \"SuperscriptMark\")\n }]\n};\n/**\nExtension providing\n[Pandoc-style](https://pandoc.org/MANUAL.html#superscripts-and-subscripts)\nsubscript using `~` markers.\n*/\nconst Subscript = {\n defineNodes: [\n { name: \"Subscript\", style: tags.special(tags.content) },\n { name: \"SubscriptMark\", style: tags.processingInstruction }\n ],\n parseInline: [{\n name: \"Subscript\",\n parse: parseSubSuper(126 /* '~' */, \"Subscript\", \"SubscriptMark\")\n }]\n};\n/**\nExtension that parses two colons with only letters, underscores,\nand numbers between them as `Emoji` nodes.\n*/\nconst Emoji = {\n defineNodes: [{ name: \"Emoji\", style: tags.character }],\n parseInline: [{\n name: \"Emoji\",\n parse(cx, next, pos) {\n let match;\n if (next != 58 /* ':' */ || !(match = /^[a-zA-Z_0-9]+:/.exec(cx.slice(pos + 1, cx.end))))\n return -1;\n return cx.addElement(cx.elt(\"Emoji\", pos, pos + 1 + match[0].length));\n }\n }]\n};\n\nexport { Autolink, BlockContext, Element, Emoji, GFM, InlineContext, LeafBlock, Line, MarkdownParser, Strikethrough, Subscript, Superscript, Table, TaskList, parseCode, parser };\n","import { EditorSelection, countColumn, Prec, EditorState } from '@codemirror/state';\nimport { EditorView, keymap } from '@codemirror/view';\nimport { defineLanguageFacet, foldNodeProp, indentNodeProp, languageDataProp, foldService, syntaxTree, Language, LanguageDescription, ParseContext, indentUnit, LanguageSupport } from '@codemirror/language';\nimport { CompletionContext } from '@codemirror/autocomplete';\nimport { parser, GFM, Subscript, Superscript, Emoji, MarkdownParser, parseCode } from '@lezer/markdown';\nimport { html, htmlCompletionSource } from '@codemirror/lang-html';\nimport { NodeProp } from '@lezer/common';\n\nconst data = /*@__PURE__*/defineLanguageFacet({ commentTokens: { block: { open: \"<!--\", close: \"-->\" } } });\nconst headingProp = /*@__PURE__*/new NodeProp();\nconst commonmark = /*@__PURE__*/parser.configure({\n props: [\n /*@__PURE__*/foldNodeProp.add(type => {\n return !type.is(\"Block\") || type.is(\"Document\") || isHeading(type) != null || isList(type) ? undefined\n : (tree, state) => ({ from: state.doc.lineAt(tree.from).to, to: tree.to });\n }),\n /*@__PURE__*/headingProp.add(isHeading),\n /*@__PURE__*/indentNodeProp.add({\n Document: () => null\n }),\n /*@__PURE__*/languageDataProp.add({\n Document: data\n })\n ]\n});\nfunction isHeading(type) {\n let match = /^(?:ATX|Setext)Heading(\\d)$/.exec(type.name);\n return match ? +match[1] : undefined;\n}\nfunction isList(type) {\n return type.name == \"OrderedList\" || type.name == \"BulletList\";\n}\nfunction findSectionEnd(headerNode, level) {\n let last = headerNode;\n for (;;) {\n let next = last.nextSibling, heading;\n if (!next || (heading = isHeading(next.type)) != null && heading <= level)\n break;\n last = next;\n }\n return last.to;\n}\nconst headerIndent = /*@__PURE__*/foldService.of((state, start, end) => {\n for (let node = syntaxTree(state).resolveInner(end, -1); node; node = node.parent) {\n if (node.from < start)\n break;\n let heading = node.type.prop(headingProp);\n if (heading == null)\n continue;\n let upto = findSectionEnd(node, heading);\n if (upto > end)\n return { from: end, to: upto };\n }\n return null;\n});\nfunction mkLang(parser) {\n return new Language(data, parser, [], \"markdown\");\n}\n/**\nLanguage support for strict CommonMark.\n*/\nconst commonmarkLanguage = /*@__PURE__*/mkLang(commonmark);\nconst extended = /*@__PURE__*/commonmark.configure([GFM, Subscript, Superscript, Emoji, {\n props: [\n /*@__PURE__*/foldNodeProp.add({\n Table: (tree, state) => ({ from: state.doc.lineAt(tree.from).to, to: tree.to })\n })\n ]\n }]);\n/**\nLanguage support for [GFM](https://github.github.com/gfm/) plus\nsubscript, superscript, and emoji syntax.\n*/\nconst markdownLanguage = /*@__PURE__*/mkLang(extended);\nfunction getCodeParser(languages, defaultLanguage) {\n return (info) => {\n if (info && languages) {\n let found = null;\n // Strip anything after whitespace\n info = /\\S*/.exec(info)[0];\n if (typeof languages == \"function\")\n found = languages(info);\n else\n found = LanguageDescription.matchLanguageName(languages, info, true);\n if (found instanceof LanguageDescription)\n return found.support ? found.support.language.parser : ParseContext.getSkippingParser(found.load());\n else if (found)\n return found.parser;\n }\n return defaultLanguage ? defaultLanguage.parser : null;\n };\n}\n\nclass Context {\n constructor(node, from, to, spaceBefore, spaceAfter, type, item) {\n this.node = node;\n this.from = from;\n this.to = to;\n this.spaceBefore = spaceBefore;\n this.spaceAfter = spaceAfter;\n this.type = type;\n this.item = item;\n }\n blank(maxWidth, trailing = true) {\n let result = this.spaceBefore + (this.node.name == \"Blockquote\" ? \">\" : \"\");\n if (maxWidth != null) {\n while (result.length < maxWidth)\n result += \" \";\n return result;\n }\n else {\n for (let i = this.to - this.from - result.length - this.spaceAfter.length; i > 0; i--)\n result += \" \";\n return result + (trailing ? this.spaceAfter : \"\");\n }\n }\n marker(doc, add) {\n let number = this.node.name == \"OrderedList\" ? String((+itemNumber(this.item, doc)[2] + add)) : \"\";\n return this.spaceBefore + number + this.type + this.spaceAfter;\n }\n}\nfunction getContext(node, doc) {\n let nodes = [], context = [];\n for (let cur = node; cur; cur = cur.parent) {\n if (cur.name == \"FencedCode\")\n return context;\n if (cur.name == \"ListItem\" || cur.name == \"Blockquote\")\n nodes.push(cur);\n }\n for (let i = nodes.length - 1; i >= 0; i--) {\n let node = nodes[i], match;\n let line = doc.lineAt(node.from), startPos = node.from - line.from;\n if (node.name == \"Blockquote\" && (match = /^ *>( ?)/.exec(line.text.slice(startPos)))) {\n context.push(new Context(node, startPos, startPos + match[0].length, \"\", match[1], \">\", null));\n }\n else if (node.name == \"ListItem\" && node.parent.name == \"OrderedList\" &&\n (match = /^( *)\\d+([.)])( *)/.exec(line.text.slice(startPos)))) {\n let after = match[3], len = match[0].length;\n if (after.length >= 4) {\n after = after.slice(0, after.length - 4);\n len -= 4;\n }\n context.push(new Context(node.parent, startPos, startPos + len, match[1], after, match[2], node));\n }\n else if (node.name == \"ListItem\" && node.parent.name == \"BulletList\" &&\n (match = /^( *)([-+*])( {1,4}\\[[ xX]\\])?( +)/.exec(line.text.slice(startPos)))) {\n let after = match[4], len = match[0].length;\n if (after.length > 4) {\n after = after.slice(0, after.length - 4);\n len -= 4;\n }\n let type = match[2];\n if (match[3])\n type += match[3].replace(/[xX]/, ' ');\n context.push(new Context(node.parent, startPos, startPos + len, match[1], after, type, node));\n }\n }\n return context;\n}\nfunction itemNumber(item, doc) {\n return /^(\\s*)(\\d+)(?=[.)])/.exec(doc.sliceString(item.from, item.from + 10));\n}\nfunction renumberList(after, doc, changes, offset = 0) {\n for (let prev = -1, node = after;;) {\n if (node.name == \"ListItem\") {\n let m = itemNumber(node, doc);\n let number = +m[2];\n if (prev >= 0) {\n if (number != prev + 1)\n return;\n changes.push({ from: node.from + m[1].length, to: node.from + m[0].length, insert: String(prev + 2 + offset) });\n }\n prev = number;\n }\n let next = node.nextSibling;\n if (!next)\n break;\n node = next;\n }\n}\nfunction normalizeIndent(content, state) {\n let blank = /^[ \\t]*/.exec(content)[0].length;\n if (!blank || state.facet(indentUnit) != \"\\t\")\n return content;\n let col = countColumn(content, 4, blank);\n let space = \"\";\n for (let i = col; i > 0;) {\n if (i >= 4) {\n space += \"\\t\";\n i -= 4;\n }\n else {\n space += \" \";\n i--;\n }\n }\n return space + content.slice(blank);\n}\n/**\nReturns a command like\n[`insertNewlineContinueMarkup`](https://codemirror.net/6/docs/ref/#lang-markdown.insertNewlineContinueMarkup),\nallowing further configuration.\n*/\nconst insertNewlineContinueMarkupCommand = (config = {}) => ({ state, dispatch }) => {\n let tree = syntaxTree(state), { doc } = state;\n let dont = null, changes = state.changeByRange(range => {\n if (!range.empty || !markdownLanguage.isActiveAt(state, range.from, -1) && !markdownLanguage.isActiveAt(state, range.from, 1))\n return dont = { range };\n let pos = range.from, line = doc.lineAt(pos);\n let context = getContext(tree.resolveInner(pos, -1), doc);\n while (context.length && context[context.length - 1].from > pos - line.from)\n context.pop();\n if (!context.length)\n return dont = { range };\n let inner = context[context.length - 1];\n if (inner.to - inner.spaceAfter.length > pos - line.from)\n return dont = { range };\n let emptyLine = pos >= (inner.to - inner.spaceAfter.length) && !/\\S/.test(line.text.slice(inner.to));\n // Empty line in list\n if (inner.item && emptyLine) {\n let first = inner.node.firstChild, second = inner.node.getChild(\"ListItem\", \"ListItem\");\n // Not second item or blank line before: delete a level of markup\n if (first.to >= pos || second && second.to < pos ||\n line.from > 0 && !/[^\\s>]/.test(doc.lineAt(line.from - 1).text) ||\n config.nonTightLists === false) {\n let next = context.length > 1 ? context[context.length - 2] : null;\n let delTo, insert = \"\";\n if (next && next.item) { // Re-add marker for the list at the next level\n delTo = line.from + next.from;\n insert = next.marker(doc, 1);\n }\n else {\n delTo = line.from + (next ? next.to : 0);\n }\n let changes = [{ from: delTo, to: pos, insert }];\n if (inner.node.name == \"OrderedList\")\n renumberList(inner.item, doc, changes, -2);\n if (next && next.node.name == \"OrderedList\")\n renumberList(next.item, doc, changes);\n return { range: EditorSelection.cursor(delTo + insert.length), changes };\n }\n else { // Move second item down, making tight two-item list non-tight\n let insert = blankLine(context, state, line);\n return { range: EditorSelection.cursor(pos + insert.length + 1),\n changes: { from: line.from, insert: insert + state.lineBreak } };\n }\n }\n if (inner.node.name == \"Blockquote\" && emptyLine && line.from) {\n let prevLine = doc.lineAt(line.from - 1), quoted = />\\s*$/.exec(prevLine.text);\n // Two aligned empty quoted lines in a row\n if (quoted && quoted.index == inner.from) {\n let changes = state.changes([{ from: prevLine.from + quoted.index, to: prevLine.to },\n { from: line.from + inner.from, to: line.to }]);\n return { range: range.map(changes), changes };\n }\n }\n let changes = [];\n if (inner.node.name == \"OrderedList\")\n renumberList(inner.item, doc, changes);\n let continued = inner.item && inner.item.from < line.from;\n let insert = \"\";\n // If not dedented\n if (!continued || /^[\\s\\d.)\\-+*>]*/.exec(line.text)[0].length >= inner.to) {\n for (let i = 0, e = context.length - 1; i <= e; i++) {\n insert += i == e && !continued ? context[i].marker(doc, 1)\n : context[i].blank(i < e ? countColumn(line.text, 4, context[i + 1].from) - insert.length : null);\n }\n }\n let from = pos;\n while (from > line.from && /\\s/.test(line.text.charAt(from - line.from - 1)))\n from--;\n insert = normalizeIndent(insert, state);\n if (nonTightList(inner.node, state.doc))\n insert = blankLine(context, state, line) + state.lineBreak + insert;\n changes.push({ from, to: pos, insert: state.lineBreak + insert });\n return { range: EditorSelection.cursor(from + insert.length + 1), changes };\n });\n if (dont)\n return false;\n dispatch(state.update(changes, { scrollIntoView: true, userEvent: \"input\" }));\n return true;\n};\n/**\nThis command, when invoked in Markdown context with cursor\nselection(s), will create a new line with the markup for\nblockquotes and lists that were active on the old line. If the\ncursor was directly after the end of the markup for the old line,\ntrailing whitespace and list markers are removed from that line.\n\nThe command does nothing in non-Markdown context, so it should\nnot be used as the only binding for Enter (even in a Markdown\ndocument, HTML and code regions might use a different language).\n*/\nconst insertNewlineContinueMarkup = /*@__PURE__*/insertNewlineContinueMarkupCommand();\nfunction isMark(node) {\n return node.name == \"QuoteMark\" || node.name == \"ListMark\";\n}\nfunction nonTightList(node, doc) {\n if (node.name != \"OrderedList\" && node.name != \"BulletList\")\n return false;\n let first = node.firstChild, second = node.getChild(\"ListItem\", \"ListItem\");\n if (!second)\n return false;\n let line1 = doc.lineAt(first.to), line2 = doc.lineAt(second.from);\n let empty = /^[\\s>]*$/.test(line1.text);\n return line1.number + (empty ? 0 : 1) < line2.number;\n}\nfunction blankLine(context, state, line) {\n let insert = \"\";\n for (let i = 0, e = context.length - 2; i <= e; i++) {\n insert += context[i].blank(i < e\n ? countColumn(line.text, 4, context[i + 1].from) - insert.length\n : null, i < e);\n }\n return normalizeIndent(insert, state);\n}\nfunction contextNodeForDelete(tree, pos) {\n let node = tree.resolveInner(pos, -1), scan = pos;\n if (isMark(node)) {\n scan = node.from;\n node = node.parent;\n }\n for (let prev; prev = node.childBefore(scan);) {\n if (isMark(prev)) {\n scan = prev.from;\n }\n else if (prev.name == \"OrderedList\" || prev.name == \"BulletList\") {\n node = prev.lastChild;\n scan = node.to;\n }\n else {\n break;\n }\n }\n return node;\n}\n/**\nThis command will, when invoked in a Markdown context with the\ncursor directly after list or blockquote markup, delete one level\nof markup. When the markup is for a list, it will be replaced by\nspaces on the first invocation (a further invocation will delete\nthe spaces), to make it easy to continue a list.\n\nWhen not after Markdown block markup, this command will return\nfalse, so it is intended to be bound alongside other deletion\ncommands, with a higher precedence than the more generic commands.\n*/\nconst deleteMarkupBackward = ({ state, dispatch }) => {\n let tree = syntaxTree(state);\n let dont = null, changes = state.changeByRange(range => {\n let pos = range.from, { doc } = state;\n if (range.empty && markdownLanguage.isActiveAt(state, range.from)) {\n let line = doc.lineAt(pos);\n let context = getContext(contextNodeForDelete(tree, pos), doc);\n if (context.length) {\n let inner = context[context.length - 1];\n let spaceEnd = inner.to - inner.spaceAfter.length + (inner.spaceAfter ? 1 : 0);\n // Delete extra trailing space after markup\n if (pos - line.from > spaceEnd && !/\\S/.test(line.text.slice(spaceEnd, pos - line.from)))\n return { range: EditorSelection.cursor(line.from + spaceEnd),\n changes: { from: line.from + spaceEnd, to: pos } };\n if (pos - line.from == spaceEnd &&\n // Only apply this if we're on the line that has the\n // construct's syntax, or there's only indentation in the\n // target range\n (!inner.item || line.from <= inner.item.from || !/\\S/.test(line.text.slice(0, inner.to)))) {\n let start = line.from + inner.from;\n // Replace a list item marker with blank space\n if (inner.item && inner.node.from < inner.item.from && /\\S/.test(line.text.slice(inner.from, inner.to))) {\n let insert = inner.blank(countColumn(line.text, 4, inner.to) - countColumn(line.text, 4, inner.from));\n if (start == line.from)\n insert = normalizeIndent(insert, state);\n return { range: EditorSelection.cursor(start + insert.length),\n changes: { from: start, to: line.from + inner.to, insert } };\n }\n // Delete one level of indentation\n if (start < pos)\n return { range: EditorSelection.cursor(start), changes: { from: start, to: pos } };\n }\n }\n }\n return dont = { range };\n });\n if (dont)\n return false;\n dispatch(state.update(changes, { scrollIntoView: true, userEvent: \"delete\" }));\n return true;\n};\n\n/**\nA small keymap with Markdown-specific bindings. Binds Enter to\n[`insertNewlineContinueMarkup`](https://codemirror.net/6/docs/ref/#lang-markdown.insertNewlineContinueMarkup)\nand Backspace to\n[`deleteMarkupBackward`](https://codemirror.net/6/docs/ref/#lang-markdown.deleteMarkupBackward).\n*/\nconst markdownKeymap = [\n { key: \"Enter\", run: insertNewlineContinueMarkup },\n { key: \"Backspace\", run: deleteMarkupBackward }\n];\nconst htmlNoMatch = /*@__PURE__*/html({ matchClosingTags: false });\n/**\nMarkdown language support.\n*/\nfunction markdown(config = {}) {\n let { codeLanguages, defaultCodeLanguage, addKeymap = true, base: { parser } = commonmarkLanguage, completeHTMLTags = true, pasteURLAsLink: pasteURL = true, htmlTagLanguage = htmlNoMatch } = config;\n if (!(parser instanceof MarkdownParser))\n throw new RangeError(\"Base parser provided to `markdown` should be a Markdown parser\");\n let extensions = config.extensions ? [config.extensions] : [];\n let support = [htmlTagLanguage.support, headerIndent], defaultCode;\n if (pasteURL)\n support.push(pasteURLAsLink);\n if (defaultCodeLanguage instanceof LanguageSupport) {\n support.push(defaultCodeLanguage.support);\n defaultCode = defaultCodeLanguage.language;\n }\n else if (defaultCodeLanguage) {\n defaultCode = defaultCodeLanguage;\n }\n let codeParser = codeLanguages || defaultCode ? getCodeParser(codeLanguages, defaultCode) : undefined;\n extensions.push(parseCode({ codeParser, htmlParser: htmlTagLanguage.language.parser }));\n if (addKeymap)\n support.push(Prec.high(keymap.of(markdownKeymap)));\n let lang = mkLang(parser.configure(extensions));\n if (completeHTMLTags)\n support.push(lang.data.of({ autocomplete: htmlTagCompletion }));\n return new LanguageSupport(lang, support);\n}\nfunction htmlTagCompletion(context) {\n let { state, pos } = context, m = /<[:\\-\\.\\w\\u00b7-\\uffff]*$/.exec(state.sliceDoc(pos - 25, pos));\n if (!m)\n return null;\n let tree = syntaxTree(state).resolveInner(pos, -1);\n while (tree && !tree.type.isTop) {\n if (tree.name == \"CodeBlock\" || tree.name == \"FencedCode\" || tree.name == \"ProcessingInstructionBlock\" ||\n tree.name == \"CommentBlock\" || tree.name == \"Link\" || tree.name == \"Image\")\n return null;\n tree = tree.parent;\n }\n return {\n from: pos - m[0].length, to: pos,\n options: htmlTagCompletions(),\n validFor: /^<[:\\-\\.\\w\\u00b7-\\uffff]*$/\n };\n}\nlet _tagCompletions = null;\nfunction htmlTagCompletions() {\n if (_tagCompletions)\n return _tagCompletions;\n let result = htmlCompletionSource(new CompletionContext(EditorState.create({ extensions: htmlNoMatch }), 0, true));\n return _tagCompletions = result ? result.options : [];\n}\nconst nonPlainText = /code|horizontalrule|html|link|comment|processing|escape|entity|image|mark|url/i;\n/**\nAn extension that intercepts pastes when the pasted content looks\nlike a URL and the selection is non-empty and selects regular\ntext, making the selection a link with the pasted URL as target.\n*/\nconst pasteURLAsLink = /*@__PURE__*/EditorView.domEventHandlers({\n paste: (event, view) => {\n var _a;\n let { main } = view.state.selection;\n if (main.empty)\n return false;\n let link = (_a = event.clipboardData) === null || _a === void 0 ? void 0 : _a.getData(\"text/plain\");\n if (!link || !/^(https?:\\/\\/|mailto:|xmpp:|www\\.)/.test(link))\n return false;\n if (/^www\\./.test(link))\n link = \"https://\" + link;\n if (!markdownLanguage.isActiveAt(view.state, main.from, 1))\n return false;\n let tree = syntaxTree(view.state), crossesNode = false;\n // Verify that no nodes are started/ended between the selection\n // points, and we're not inside any non-plain-text construct.\n tree.iterate({\n from: main.from, to: main.to,\n enter: node => { if (node.from > main.from || nonPlainText.test(node.name))\n crossesNode = true; },\n leave: node => { if (node.to < main.to)\n crossesNode = true; }\n });\n if (crossesNode)\n return false;\n view.dispatch({\n changes: [{ from: main.from, insert: \"[\" }, { from: main.to, insert: `](${link})` }],\n userEvent: \"input.paste\",\n scrollIntoView: true\n });\n return true;\n }\n});\n\nexport { commonmarkLanguage, deleteMarkupBackward, insertNewlineContinueMarkup, insertNewlineContinueMarkupCommand, markdown, markdownKeymap, markdownLanguage, pasteURLAsLink };\n"],"names":["CompositeBlock","type","value","from","parentHash","end","hash","children","positions","NodeProp","child","pos","Tree","nodeSet","last","length","NodeType","Type","LeafBlock","start","content","Line","newPos","skipSpace","text","to","indent","elt","i","goal","result","skipForList","bl","cx","line","size","isOrderedList","isBulletList","isHorizontalRule","DefaultSkipMarkup","space","_cx","ch","skipSpaceBack","isFencedCode","isBlockquote","breaking","count","isSetextUnderline","DefaultLeafBlocks","inList","next","isAtxHeading","EmptyLine","CommentEnd","ProcessingEnd","HTMLBlockStyle","isHTMLBlock","rest","e","getListIndent","indentAfter","indented","addCodeText","marks","DefaultBlockParsers","base","pendingMarks","m","codeStart","fenceEnd","len","infoFrom","infoTo","first","textStart","textEnd","newBase","off","endOfSpace","after","buf","node","trailing","nodeType","LinkReferenceParser","leaf","finish","parseLinkLabel","parseURL","skip","title","parseLinkTitle","titleEnd","lineEnd","SetextHeadingParser","underline","underlineMark","_","DefaultEndLeaf","p","scanLineResult","BlockContext","parser","input","fragments","ranges","FragmentCursor","markI","mark","parse","lines","stop","taken","toRelative","depth","textOffset","rangeI","nextFrom","handler","eol","block","none","injectMarks","top","tree","injectGaps","inline","TreeElement","Buffer","offset","dummies","rangeEnd","movePastNext","upto","inclusive","reuse","MarkdownParser","Parser","blockParsers","leafBlockParsers","blockNames","endLeafBlock","skipContextMarkup","inlineParsers","inlineNames","wrappers","t","w","spec","config","resolveConfig","nonEmpty","nodeTypes","styles","s","name","composite","style","id","group","Tag","NodeSet","styleTags","rm","found","findName","InlineContext","outer","token","a","conf","conc","b","wrapA","wrapB","inner","names","elts","Element","startOff","EmphasisUnderscore","EmphasisAsterisk","LinkStart","ImageStart","InlineDelimiter","side","Escapable","Punctuation","DefaultInline","escaped","curSize","url","comment","procInst","before","pBefore","pAfter","sBefore","sAfter","leftFlanking","rightFlanking","canOpen","canClose","part","link","finishLink","j","startPos","endPos","dest","label","requireNonWS","open","close","emp","closeSize","element","startIndex","index","elements","eI","NotLast","lineStart","c","rPos","cur","fragEnd","blockI","prevEnd","prevI","dummy","abs","gapFrom","gapTo","markdownHighlighting","tags","n","leftOverSpace","nextPos","parseCode","codeParser","htmlParser","parseMixed","info","infoNode","StrikethroughDelim","Strikethrough","parseRow","startI","cellStart","cellEnd","esc","parseCell","hasPipe","str","delimiterLine","TableParser","lineText","firstRow","Table","TaskParser","TaskList","autolinkRE","urlRE","lastTwoDomainWords","emailRE","xmppResourceRE","autolinkURLEnd","autolinkEmailEnd","Autolink","absPos","noBracket","GFM","parseSubSuper","Superscript","Subscript","Emoji","match","data","defineLanguageFacet","headingProp","commonmark","foldNodeProp","isHeading","isList","state","indentNodeProp","languageDataProp","findSectionEnd","headerNode","level","heading","headerIndent","foldService","syntaxTree","mkLang","Language","commonmarkLanguage","extended","markdownLanguage","getCodeParser","languages","defaultLanguage","LanguageDescription","ParseContext","Context","spaceBefore","spaceAfter","item","maxWidth","doc","add","number","itemNumber","getContext","nodes","context","renumberList","changes","prev","normalizeIndent","blank","indentUnit","col","countColumn","insertNewlineContinueMarkupCommand","dispatch","dont","range","emptyLine","second","delTo","insert","EditorSelection","blankLine","prevLine","quoted","continued","nonTightList","insertNewlineContinueMarkup","isMark","line1","line2","empty","contextNodeForDelete","scan","deleteMarkupBackward","spaceEnd","markdownKeymap","htmlNoMatch","html","markdown","codeLanguages","defaultCodeLanguage","addKeymap","completeHTMLTags","pasteURL","htmlTagLanguage","extensions","support","defaultCode","pasteURLAsLink","LanguageSupport","Prec","keymap","lang","htmlTagCompletion","htmlTagCompletions","_tagCompletions","htmlCompletionSource","CompletionContext","EditorState","nonPlainText","EditorView","event","view","_a","main","crossesNode"],"mappings":"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","x_google_ignoreList":[0,1]}
@@ -1,2 +0,0 @@
1
- "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const P=require("./index-BQ530BQl.cjs"),i=require("./__vite-browser-external-DEj2HSsT.cjs"),w=1,N=2,I=3,Y=4,j=5,U=36,Z=37,B=38,D=11,M=13;function F(e){return e==45||e==46||e==58||e>=65&&e<=90||e==95||e>=97&&e<=122||e>=161}function L(e){return e==9||e==10||e==13||e==32}let V=null,X=null,_=0;function y(e,t){let o=e.pos+t;if(X==e&&_==o)return V;for(;L(e.peek(t));)t++;let O="";for(;;){let r=e.peek(t);if(!F(r))break;O+=String.fromCharCode(r),t++}return X=e,_=o,V=O||null}function E(e,t){this.name=e,this.parent=t}const K=new P.ContextTracker({start:null,shift(e,t,o,O){return t==w?new E(y(O,1)||"",e):e},reduce(e,t){return t==D&&e?e.parent:e},reuse(e,t,o,O){let r=t.type.id;return r==w||r==M?new E(y(O,1)||"",e):e},strict:!1}),H=new P.ExternalTokenizer((e,t)=>{if(e.next==60){if(e.advance(),e.next==47){e.advance();let o=y(e,0);if(!o)return e.acceptToken(j);if(t.context&&o==t.context.name)return e.acceptToken(N);for(let O=t.context;O;O=O.parent)if(O.name==o)return e.acceptToken(I,-2);e.acceptToken(Y)}else if(e.next!=33&&e.next!=63)return e.acceptToken(w)}},{contextual:!0});function Q(e,t){return new P.ExternalTokenizer(o=>{let O=0,r=t.charCodeAt(0);e:for(;!(o.next<0);o.advance(),O++)if(o.next==r){for(let a=1;a<t.length;a++)if(o.peek(a)!=t.charCodeAt(a))continue e;break}O&&o.acceptToken(e)})}const J=Q(U,"-->"),ee=Q(Z,"?>"),te=Q(B,"]]>"),Oe=i.styleTags({Text:i.tags.content,"StartTag StartCloseTag EndTag SelfCloseEndTag":i.tags.angleBracket,TagName:i.tags.tagName,"MismatchedCloseTag/TagName":[i.tags.tagName,i.tags.invalid],AttributeName:i.tags.attributeName,AttributeValue:i.tags.attributeValue,Is:i.tags.definitionOperator,"EntityReference CharacterReference":i.tags.character,Comment:i.tags.blockComment,ProcessingInst:i.tags.processingInstruction,DoctypeDecl:i.tags.documentMeta,Cdata:i.tags.special(i.tags.string)}),oe=P.LRParser.deserialize({version:14,states:",lOQOaOOOrOxO'#CfOzOpO'#CiO!tOaO'#CgOOOP'#Cg'#CgO!{OrO'#CrO#TOtO'#CsO#]OpO'#CtOOOP'#DT'#DTOOOP'#Cv'#CvQQOaOOOOOW'#Cw'#CwO#eOxO,59QOOOP,59Q,59QOOOO'#Cx'#CxO#mOpO,59TO#uO!bO,59TOOOP'#C|'#C|O$TOaO,59RO$[OpO'#CoOOOP,59R,59ROOOQ'#C}'#C}O$dOrO,59^OOOP,59^,59^OOOS'#DO'#DOO$lOtO,59_OOOP,59_,59_O$tOpO,59`O$|OpO,59`OOOP-E6t-E6tOOOW-E6u-E6uOOOP1G.l1G.lOOOO-E6v-E6vO%UO!bO1G.oO%UO!bO1G.oO%dOpO'#CkO%lO!bO'#CyO%zO!bO1G.oOOOP1G.o1G.oOOOP1G.w1G.wOOOP-E6z-E6zOOOP1G.m1G.mO&VOpO,59ZO&_OpO,59ZOOOQ-E6{-E6{OOOP1G.x1G.xOOOS-E6|-E6|OOOP1G.y1G.yO&gOpO1G.zO&gOpO1G.zOOOP1G.z1G.zO&oO!bO7+$ZO&}O!bO7+$ZOOOP7+$Z7+$ZOOOP7+$c7+$cO'YOpO,59VO'bOpO,59VO'mO!bO,59eOOOO-E6w-E6wO'{OpO1G.uO'{OpO1G.uOOOP1G.u1G.uO(TOpO7+$fOOOP7+$f7+$fO(]O!bO<<GuOOOP<<Gu<<GuOOOP<<G}<<G}O'bOpO1G.qO'bOpO1G.qO(hO#tO'#CnO(vO&jO'#CnOOOO1G.q1G.qO)UOpO7+$aOOOP7+$a7+$aOOOP<<HQ<<HQOOOPAN=aAN=aOOOPAN=iAN=iO'bOpO7+$]OOOO7+$]7+$]OOOO'#Cz'#CzO)^O#tO,59YOOOO,59Y,59YOOOO'#C{'#C{O)lO&jO,59YOOOP<<G{<<G{OOOO<<Gw<<GwOOOO-E6x-E6xOOOO1G.t1G.tOOOO-E6y-E6y",stateData:")z~OPQOSVOTWOVWOWWOXWOiXOyPO!QTO!SUO~OvZOx]O~O^`Oz^O~OPQOQcOSVOTWOVWOWWOXWOyPO!QTO!SUO~ORdO~P!SOteO!PgO~OuhO!RjO~O^lOz^O~OvZOxoO~O^qOz^O~O[vO`sOdwOz^O~ORyO~P!SO^{Oz^O~OteO!P}O~OuhO!R!PO~O^!QOz^O~O[!SOz^O~O[!VO`sOd!WOz^O~Oa!YOz^O~Oz^O[mX`mXdmX~O[!VO`sOd!WO~O^!]Oz^O~O[!_Oz^O~O[!aOz^O~O[!cO`sOd!dOz^O~O[!cO`sOd!dO~Oa!eOz^O~Oz^O{!gO}!hO~Oz^O[ma`madma~O[!kOz^O~O[!lOz^O~O[!mO`sOd!nO~OW!qOX!qO{!sO|!qO~OW!tOX!tO}!sO!O!tO~O[!vOz^O~OW!qOX!qO{!yO|!qO~OW!tOX!tO}!yO!O!tO~O",goto:"%cxPPPPPPPPPPyyP!PP!VPP!`!jP!pyyyP!v!|#S$[$k$q$w$}%TPPPP%ZXWORYbXRORYb_t`qru!T!U!bQ!i!YS!p!e!fR!w!oQdRRybXSORYbQYORmYQ[PRn[Q_QQkVjp_krz!R!T!X!Z!^!`!f!j!oQr`QzcQ!RlQ!TqQ!XsQ!ZtQ!^{Q!`!QQ!f!YQ!j!]R!o!eQu`S!UqrU![u!U!bR!b!TQ!r!gR!x!rQ!u!hR!z!uQbRRxbQfTR|fQiUR!OiSXOYTaRb",nodeNames:"⚠ StartTag StartCloseTag MissingCloseTag StartCloseTag StartCloseTag Document Text EntityReference CharacterReference Cdata Element EndTag OpenTag TagName Attribute AttributeName Is AttributeValue CloseTag SelfCloseEndTag SelfClosingTag Comment ProcessingInst MismatchedCloseTag DoctypeDecl",maxTerm:50,context:K,nodeProps:[["closedBy",1,"SelfCloseEndTag EndTag",13,"CloseTag MissingCloseTag"],["openedBy",12,"StartTag StartCloseTag",19,"OpenTag",20,"StartTag"],["isolate",-6,13,18,19,21,22,24,""]],propSources:[Oe],skippedNodes:[0],repeatNodeCount:9,tokenData:"!)v~R!YOX$qXY)iYZ)iZ]$q]^)i^p$qpq)iqr$qrs*vsv$qvw+fwx/ix}$q}!O0[!O!P$q!P!Q2z!Q![$q![!]4n!]!^$q!^!_8U!_!`!#t!`!a!$l!a!b!%d!b!c$q!c!}4n!}#P$q#P#Q!'W#Q#R$q#R#S4n#S#T$q#T#o4n#o%W$q%W%o4n%o%p$q%p&a4n&a&b$q&b1p4n1p4U$q4U4d4n4d4e$q4e$IS4n$IS$I`$q$I`$Ib4n$Ib$Kh$q$Kh%#t4n%#t&/x$q&/x&Et4n&Et&FV$q&FV;'S4n;'S;:j8O;:j;=`)c<%l?&r$q?&r?Ah4n?Ah?BY$q?BY?Mn4n?MnO$qi$zXVP|W!O`Or$qrs%gsv$qwx'^x!^$q!^!_(o!_;'S$q;'S;=`)c<%lO$qa%nVVP!O`Ov%gwx&Tx!^%g!^!_&o!_;'S%g;'S;=`'W<%lO%gP&YTVPOv&Tw!^&T!_;'S&T;'S;=`&i<%lO&TP&lP;=`<%l&T`&tS!O`Ov&ox;'S&o;'S;=`'Q<%lO&o`'TP;=`<%l&oa'ZP;=`<%l%gX'eWVP|WOr'^rs&Tsv'^w!^'^!^!_'}!_;'S'^;'S;=`(i<%lO'^W(ST|WOr'}sv'}w;'S'};'S;=`(c<%lO'}W(fP;=`<%l'}X(lP;=`<%l'^h(vV|W!O`Or(ors&osv(owx'}x;'S(o;'S;=`)]<%lO(oh)`P;=`<%l(oi)fP;=`<%l$qo)t`VP|W!O`zUOX$qXY)iYZ)iZ]$q]^)i^p$qpq)iqr$qrs%gsv$qwx'^x!^$q!^!_(o!_;'S$q;'S;=`)c<%lO$qk+PV{YVP!O`Ov%gwx&Tx!^%g!^!_&o!_;'S%g;'S;=`'W<%lO%g~+iast,n![!]-r!c!}-r#R#S-r#T#o-r%W%o-r%p&a-r&b1p-r4U4d-r4e$IS-r$I`$Ib-r$Kh%#t-r&/x&Et-r&FV;'S-r;'S;:j/c?&r?Ah-r?BY?Mn-r~,qQ!Q![,w#l#m-V~,zQ!Q![,w!]!^-Q~-VOX~~-YR!Q![-c!c!i-c#T#Z-c~-fS!Q![-c!]!^-Q!c!i-c#T#Z-c~-ug}!O-r!O!P-r!Q![-r![!]-r!]!^/^!c!}-r#R#S-r#T#o-r$}%O-r%W%o-r%p&a-r&b1p-r1p4U-r4U4d-r4e$IS-r$I`$Ib-r$Je$Jg-r$Kh%#t-r&/x&Et-r&FV;'S-r;'S;:j/c?&r?Ah-r?BY?Mn-r~/cOW~~/fP;=`<%l-rk/rW}bVP|WOr'^rs&Tsv'^w!^'^!^!_'}!_;'S'^;'S;=`(i<%lO'^k0eZVP|W!O`Or$qrs%gsv$qwx'^x}$q}!O1W!O!^$q!^!_(o!_;'S$q;'S;=`)c<%lO$qk1aZVP|W!O`Or$qrs%gsv$qwx'^x!^$q!^!_(o!_!`$q!`!a2S!a;'S$q;'S;=`)c<%lO$qk2_X!PQVP|W!O`Or$qrs%gsv$qwx'^x!^$q!^!_(o!_;'S$q;'S;=`)c<%lO$qm3TZVP|W!O`Or$qrs%gsv$qwx'^x!^$q!^!_(o!_!`$q!`!a3v!a;'S$q;'S;=`)c<%lO$qm4RXdSVP|W!O`Or$qrs%gsv$qwx'^x!^$q!^!_(o!_;'S$q;'S;=`)c<%lO$qo4{!P`S^QVP|W!O`Or$qrs%gsv$qwx'^x}$q}!O4n!O!P4n!P!Q$q!Q![4n![!]4n!]!^$q!^!_(o!_!c$q!c!}4n!}#R$q#R#S4n#S#T$q#T#o4n#o$}$q$}%O4n%O%W$q%W%o4n%o%p$q%p&a4n&a&b$q&b1p4n1p4U4n4U4d4n4d4e$q4e$IS4n$IS$I`$q$I`$Ib4n$Ib$Je$q$Je$Jg4n$Jg$Kh$q$Kh%#t4n%#t&/x$q&/x&Et4n&Et&FV$q&FV;'S4n;'S;:j8O;:j;=`)c<%l?&r$q?&r?Ah4n?Ah?BY$q?BY?Mn4n?MnO$qo8RP;=`<%l4ni8]Y|W!O`Oq(oqr8{rs&osv(owx'}x!a(o!a!b!#U!b;'S(o;'S;=`)]<%lO(oi9S_|W!O`Or(ors&osv(owx'}x}(o}!O:R!O!f(o!f!g;e!g!}(o!}#ODh#O#W(o#W#XLp#X;'S(o;'S;=`)]<%lO(oi:YX|W!O`Or(ors&osv(owx'}x}(o}!O:u!O;'S(o;'S;=`)]<%lO(oi;OV!QP|W!O`Or(ors&osv(owx'}x;'S(o;'S;=`)]<%lO(oi;lX|W!O`Or(ors&osv(owx'}x!q(o!q!r<X!r;'S(o;'S;=`)]<%lO(oi<`X|W!O`Or(ors&osv(owx'}x!e(o!e!f<{!f;'S(o;'S;=`)]<%lO(oi=SX|W!O`Or(ors&osv(owx'}x!v(o!v!w=o!w;'S(o;'S;=`)]<%lO(oi=vX|W!O`Or(ors&osv(owx'}x!{(o!{!|>c!|;'S(o;'S;=`)]<%lO(oi>jX|W!O`Or(ors&osv(owx'}x!r(o!r!s?V!s;'S(o;'S;=`)]<%lO(oi?^X|W!O`Or(ors&osv(owx'}x!g(o!g!h?y!h;'S(o;'S;=`)]<%lO(oi@QY|W!O`Or?yrs@psv?yvwA[wxBdx!`?y!`!aCr!a;'S?y;'S;=`Db<%lO?ya@uV!O`Ov@pvxA[x!`@p!`!aAy!a;'S@p;'S;=`B^<%lO@pPA_TO!`A[!`!aAn!a;'SA[;'S;=`As<%lOA[PAsOiPPAvP;=`<%lA[aBQSiP!O`Ov&ox;'S&o;'S;=`'Q<%lO&oaBaP;=`<%l@pXBiX|WOrBdrsA[svBdvwA[w!`Bd!`!aCU!a;'SBd;'S;=`Cl<%lOBdXC]TiP|WOr'}sv'}w;'S'};'S;=`(c<%lO'}XCoP;=`<%lBdiC{ViP|W!O`Or(ors&osv(owx'}x;'S(o;'S;=`)]<%lO(oiDeP;=`<%l?yiDoZ|W!O`Or(ors&osv(owx'}x!e(o!e!fEb!f#V(o#V#WIr#W;'S(o;'S;=`)]<%lO(oiEiX|W!O`Or(ors&osv(owx'}x!f(o!f!gFU!g;'S(o;'S;=`)]<%lO(oiF]X|W!O`Or(ors&osv(owx'}x!c(o!c!dFx!d;'S(o;'S;=`)]<%lO(oiGPX|W!O`Or(ors&osv(owx'}x!v(o!v!wGl!w;'S(o;'S;=`)]<%lO(oiGsX|W!O`Or(ors&osv(owx'}x!c(o!c!dH`!d;'S(o;'S;=`)]<%lO(oiHgX|W!O`Or(ors&osv(owx'}x!}(o!}#OIS#O;'S(o;'S;=`)]<%lO(oiI]V|W!O`yPOr(ors&osv(owx'}x;'S(o;'S;=`)]<%lO(oiIyX|W!O`Or(ors&osv(owx'}x#W(o#W#XJf#X;'S(o;'S;=`)]<%lO(oiJmX|W!O`Or(ors&osv(owx'}x#T(o#T#UKY#U;'S(o;'S;=`)]<%lO(oiKaX|W!O`Or(ors&osv(owx'}x#h(o#h#iK|#i;'S(o;'S;=`)]<%lO(oiLTX|W!O`Or(ors&osv(owx'}x#T(o#T#UH`#U;'S(o;'S;=`)]<%lO(oiLwX|W!O`Or(ors&osv(owx'}x#c(o#c#dMd#d;'S(o;'S;=`)]<%lO(oiMkX|W!O`Or(ors&osv(owx'}x#V(o#V#WNW#W;'S(o;'S;=`)]<%lO(oiN_X|W!O`Or(ors&osv(owx'}x#h(o#h#iNz#i;'S(o;'S;=`)]<%lO(oi! RX|W!O`Or(ors&osv(owx'}x#m(o#m#n! n#n;'S(o;'S;=`)]<%lO(oi! uX|W!O`Or(ors&osv(owx'}x#d(o#d#e!!b#e;'S(o;'S;=`)]<%lO(oi!!iX|W!O`Or(ors&osv(owx'}x#X(o#X#Y?y#Y;'S(o;'S;=`)]<%lO(oi!#_V!SP|W!O`Or(ors&osv(owx'}x;'S(o;'S;=`)]<%lO(ok!$PXaQVP|W!O`Or$qrs%gsv$qwx'^x!^$q!^!_(o!_;'S$q;'S;=`)c<%lO$qo!$wX[UVP|W!O`Or$qrs%gsv$qwx'^x!^$q!^!_(o!_;'S$q;'S;=`)c<%lO$qk!%mZVP|W!O`Or$qrs%gsv$qwx'^x!^$q!^!_(o!_!`$q!`!a!&`!a;'S$q;'S;=`)c<%lO$qk!&kX!RQVP|W!O`Or$qrs%gsv$qwx'^x!^$q!^!_(o!_;'S$q;'S;=`)c<%lO$qk!'aZVP|W!O`Or$qrs%gsv$qwx'^x!^$q!^!_(o!_#P$q#P#Q!(S#Q;'S$q;'S;=`)c<%lO$qk!(]ZVP|W!O`Or$qrs%gsv$qwx'^x!^$q!^!_(o!_!`$q!`!a!)O!a;'S$q;'S;=`)c<%lO$qk!)ZXxQVP|W!O`Or$qrs%gsv$qwx'^x!^$q!^!_(o!_;'S$q;'S;=`)c<%lO$q",tokenizers:[H,J,ee,te,0,1,2,3,4],topRules:{Document:[0,6]},tokenPrec:0});function T(e,t){let o=t&&t.getChild("TagName");return o?e.sliceString(o.from,o.to):""}function b(e,t){let o=t&&t.firstChild;return!o||o.name!="OpenTag"?"":T(e,o)}function re(e,t,o){let O=t&&t.getChildren("Attribute").find(a=>a.from<=o&&a.to>=o),r=O&&O.getChild("AttributeName");return r?e.sliceString(r.from,r.to):""}function h(e){for(let t=e&&e.parent;t;t=t.parent)if(t.name=="Element")return t;return null}function ne(e,t){var o;let O=i.syntaxTree(e).resolveInner(t,-1),r=null;for(let a=O;!r&&a.parent;a=a.parent)(a.name=="OpenTag"||a.name=="CloseTag"||a.name=="SelfClosingTag"||a.name=="MismatchedCloseTag")&&(r=a);if(r&&(r.to>t||r.lastChild.type.isError)){let a=r.parent;if(O.name=="TagName")return r.name=="CloseTag"||r.name=="MismatchedCloseTag"?{type:"closeTag",from:O.from,context:a}:{type:"openTag",from:O.from,context:h(a)};if(O.name=="AttributeName")return{type:"attrName",from:O.from,context:r};if(O.name=="AttributeValue")return{type:"attrValue",from:O.from,context:r};let s=O==r||O.name=="Attribute"?O.childBefore(t):O;return s?.name=="StartTag"?{type:"openTag",from:t,context:h(a)}:s?.name=="StartCloseTag"&&s.to<=t?{type:"closeTag",from:t,context:a}:s?.name=="Is"?{type:"attrValue",from:t,context:r}:s?{type:"attrName",from:t,context:r}:null}else if(O.name=="StartCloseTag")return{type:"closeTag",from:t,context:O.parent};for(;O.parent&&O.to==t&&!(!((o=O.lastChild)===null||o===void 0)&&o.type.isError);)O=O.parent;return O.name=="Element"||O.name=="Text"||O.name=="Document"?{type:"tag",from:t,context:O.name=="Element"?O:h(O)}:null}class ae{constructor(t,o,O){this.attrs=o,this.attrValues=O,this.children=[],this.name=t.name,this.completion=Object.assign(Object.assign({type:"type"},t.completion||{}),{label:this.name}),this.openCompletion=Object.assign(Object.assign({},this.completion),{label:"<"+this.name}),this.closeCompletion=Object.assign(Object.assign({},this.completion),{label:"</"+this.name+">",boost:2}),this.closeNameCompletion=Object.assign(Object.assign({},this.completion),{label:this.name+">"}),this.text=t.textContent?t.textContent.map(r=>({label:r,type:"text"})):[]}}const W=/^[:\-\.\w\u00b7-\uffff]*$/;function R(e){return Object.assign(Object.assign({type:"property"},e.completion||{}),{label:e.name})}function z(e){return typeof e=="string"?{label:`"${e}"`,type:"constant"}:/^"/.test(e.label)?e:Object.assign(Object.assign({},e),{label:`"${e.label}"`})}function A(e,t){let o=[],O=[],r=Object.create(null);for(let n of t){let $=R(n);o.push($),n.global&&O.push($),n.values&&(r[n.name]=n.values.map(z))}let a=[],s=[],d=Object.create(null);for(let n of e){let $=O,g=r;n.attributes&&($=$.concat(n.attributes.map(l=>typeof l=="string"?o.find(f=>f.label==l)||{label:l,type:"property"}:(l.values&&(g==r&&(g=Object.create(g)),g[l.name]=l.values.map(z)),R(l)))));let p=new ae(n,$,g);d[p.name]=p,a.push(p),n.top&&s.push(p)}s.length||(s=a);for(let n=0;n<a.length;n++){let $=e[n],g=a[n];if($.children)for(let p of $.children)d[p]&&g.children.push(d[p]);else g.children=a}return n=>{var $;let{doc:g}=n.state,p=ne(n.state,n.pos);if(!p||p.type=="tag"&&!n.explicit)return null;let{type:l,from:f,context:S}=p;if(l=="openTag"){let c=s,m=b(g,S);if(m){let u=d[m];c=u?.children||a}return{from:f,options:c.map(u=>u.completion),validFor:W}}else if(l=="closeTag"){let c=b(g,S);return c?{from:f,to:n.pos+(g.sliceString(n.pos,n.pos+1)==">"?1:0),options:[(($=d[c])===null||$===void 0?void 0:$.closeNameCompletion)||{label:c+">",type:"type"}],validFor:W}:null}else if(l=="attrName"){let c=d[T(g,S)];return{from:f,options:c?.attrs||O,validFor:W}}else if(l=="attrValue"){let c=re(g,S,f);if(!c)return null;let m=d[T(g,S)],u=(m?.attrValues||r)[c];return!u||!u.length?null:{from:f,to:n.pos+(g.sliceString(n.pos,n.pos+1)=='"'?1:0),options:u,validFor:/^"[^"]*"?$/}}else if(l=="tag"){let c=b(g,S),m=d[c],u=[],q=S&&S.lastChild;c&&(!q||q.name!="CloseTag"||T(g,q)!=c)&&u.push(m?m.closeCompletion:{label:"</"+c+">",type:"type",boost:2});let C=u.concat((m?.children||(S?a:s)).map(x=>x.openCompletion));if(S&&m?.text.length){let x=S.firstChild;x.to>n.pos-20&&!/\S/.test(n.state.sliceDoc(x.to,n.pos))&&(C=C.concat(m.text))}return{from:f,options:C,validFor:/^<\/?[:\-\.\w\u00b7-\uffff]*$/}}else return null}}const v=i.LRLanguage.define({name:"xml",parser:oe.configure({props:[i.indentNodeProp.add({Element(e){let t=/^\s*<\//.test(e.textAfter);return e.lineIndent(e.node.from)+(t?0:e.unit)},"OpenTag CloseTag SelfClosingTag"(e){return e.column(e.node.from)+e.unit}}),i.foldNodeProp.add({Element(e){let t=e.firstChild,o=e.lastChild;return!t||t.name!="OpenTag"?null:{from:t.to,to:o.name=="CloseTag"?o.from:e.to}}}),i.bracketMatchingHandle.add({"OpenTag CloseTag":e=>e.getChild("TagName")})]}),languageData:{commentTokens:{block:{open:"<!--",close:"-->"}},indentOnInput:/^\s*<\/$/}});function le(e={}){let t=[v.data.of({autocomplete:A(e.elements||[],e.attributes||[])})];return e.autoCloseTags!==!1&&t.push(G),new i.LanguageSupport(v,t)}function k(e,t,o=e.length){if(!t)return"";let O=t.firstChild,r=O&&O.getChild("TagName");return r?e.sliceString(r.from,Math.min(r.to,o)):""}const G=i.EditorView.inputHandler.of((e,t,o,O,r)=>{if(e.composing||e.state.readOnly||t!=o||O!=">"&&O!="/"||!v.isActiveAt(e.state,t,-1))return!1;let a=r(),{state:s}=a,d=s.changeByRange(n=>{var $,g,p;let{head:l}=n,f=s.doc.sliceString(l-1,l)==O,S=i.syntaxTree(s).resolveInner(l,-1),c;if(f&&O==">"&&S.name=="EndTag"){let m=S.parent;if(((g=($=m.parent)===null||$===void 0?void 0:$.lastChild)===null||g===void 0?void 0:g.name)!="CloseTag"&&(c=k(s.doc,m.parent,l))){let u=l+(s.doc.sliceString(l,l+1)===">"?1:0),q=`</${c}>`;return{range:n,changes:{from:l,to:u,insert:q}}}}else if(f&&O=="/"&&S.name=="StartCloseTag"){let m=S.parent;if(S.from==l-2&&((p=m.lastChild)===null||p===void 0?void 0:p.name)!="CloseTag"&&(c=k(s.doc,m,l))){let u=l+(s.doc.sliceString(l,l+1)===">"?1:0),q=`${c}>`;return{range:i.EditorSelection.cursor(l+q.length,-1),changes:{from:l,to:u,insert:q}}}}return{range:n}});return d.changes.empty?!1:(e.dispatch([a,s.update(d,{userEvent:"input.complete",scrollIntoView:!0})]),!0)});exports.autoCloseTags=G;exports.completeFromSchema=A;exports.xml=le;exports.xmlLanguage=v;
2
- //# sourceMappingURL=index-BvLgnTK0.cjs.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index-BvLgnTK0.cjs","sources":["../../../node_modules/.deno/@lezer+xml@1.0.6/node_modules/@lezer/xml/dist/index.js","../../../node_modules/.deno/@codemirror+lang-xml@6.1.0/node_modules/@codemirror/lang-xml/dist/index.js"],"sourcesContent":["import { ContextTracker, ExternalTokenizer, LRParser } from '@lezer/lr';\nimport { styleTags, tags } from '@lezer/highlight';\n\n// This file was generated by lezer-generator. You probably shouldn't edit it.\nconst StartTag = 1,\n StartCloseTag = 2,\n MissingCloseTag = 3,\n mismatchedStartCloseTag = 4,\n incompleteStartCloseTag = 5,\n commentContent$1 = 36,\n piContent$1 = 37,\n cdataContent$1 = 38,\n Element = 11,\n OpenTag = 13;\n\n/* Hand-written tokenizer for XML tag matching. */\n\nfunction nameChar(ch) {\n return ch == 45 || ch == 46 || ch == 58 || ch >= 65 && ch <= 90 || ch == 95 || ch >= 97 && ch <= 122 || ch >= 161\n}\n\nfunction isSpace(ch) {\n return ch == 9 || ch == 10 || ch == 13 || ch == 32\n}\n\nlet cachedName = null, cachedInput = null, cachedPos = 0;\nfunction tagNameAfter(input, offset) {\n let pos = input.pos + offset;\n if (cachedInput == input && cachedPos == pos) return cachedName\n while (isSpace(input.peek(offset))) offset++;\n let name = \"\";\n for (;;) {\n let next = input.peek(offset);\n if (!nameChar(next)) break\n name += String.fromCharCode(next);\n offset++;\n }\n cachedInput = input; cachedPos = pos;\n return cachedName = name || null\n}\n\nfunction ElementContext(name, parent) {\n this.name = name;\n this.parent = parent;\n}\n\nconst elementContext = new ContextTracker({\n start: null,\n shift(context, term, stack, input) {\n return term == StartTag ? new ElementContext(tagNameAfter(input, 1) || \"\", context) : context\n },\n reduce(context, term) {\n return term == Element && context ? context.parent : context\n },\n reuse(context, node, _stack, input) {\n let type = node.type.id;\n return type == StartTag || type == OpenTag\n ? new ElementContext(tagNameAfter(input, 1) || \"\", context) : context\n },\n strict: false\n});\n\nconst startTag = new ExternalTokenizer((input, stack) => {\n if (input.next != 60 /* '<' */) return\n input.advance();\n if (input.next == 47 /* '/' */) {\n input.advance();\n let name = tagNameAfter(input, 0);\n if (!name) return input.acceptToken(incompleteStartCloseTag)\n if (stack.context && name == stack.context.name) return input.acceptToken(StartCloseTag)\n for (let cx = stack.context; cx; cx = cx.parent) if (cx.name == name) return input.acceptToken(MissingCloseTag, -2)\n input.acceptToken(mismatchedStartCloseTag);\n } else if (input.next != 33 /* '!' */ && input.next != 63 /* '?' */) {\n return input.acceptToken(StartTag)\n }\n}, {contextual: true});\n\nfunction scanTo(type, end) {\n return new ExternalTokenizer(input => {\n let len = 0, first = end.charCodeAt(0);\n scan: for (;; input.advance(), len++) {\n if (input.next < 0) break\n if (input.next == first) {\n for (let i = 1; i < end.length; i++)\n if (input.peek(i) != end.charCodeAt(i)) continue scan\n break\n }\n }\n if (len) input.acceptToken(type);\n })\n}\n\nconst commentContent = scanTo(commentContent$1, \"-->\");\nconst piContent = scanTo(piContent$1, \"?>\");\nconst cdataContent = scanTo(cdataContent$1, \"]]>\");\n\nconst xmlHighlighting = styleTags({\n Text: tags.content,\n \"StartTag StartCloseTag EndTag SelfCloseEndTag\": tags.angleBracket,\n TagName: tags.tagName,\n \"MismatchedCloseTag/TagName\": [tags.tagName, tags.invalid],\n AttributeName: tags.attributeName,\n AttributeValue: tags.attributeValue,\n Is: tags.definitionOperator,\n \"EntityReference CharacterReference\": tags.character,\n Comment: tags.blockComment,\n ProcessingInst: tags.processingInstruction,\n DoctypeDecl: tags.documentMeta,\n Cdata: tags.special(tags.string)\n});\n\n// This file was generated by lezer-generator. You probably shouldn't edit it.\nconst parser = LRParser.deserialize({\n version: 14,\n states: \",lOQOaOOOrOxO'#CfOzOpO'#CiO!tOaO'#CgOOOP'#Cg'#CgO!{OrO'#CrO#TOtO'#CsO#]OpO'#CtOOOP'#DT'#DTOOOP'#Cv'#CvQQOaOOOOOW'#Cw'#CwO#eOxO,59QOOOP,59Q,59QOOOO'#Cx'#CxO#mOpO,59TO#uO!bO,59TOOOP'#C|'#C|O$TOaO,59RO$[OpO'#CoOOOP,59R,59ROOOQ'#C}'#C}O$dOrO,59^OOOP,59^,59^OOOS'#DO'#DOO$lOtO,59_OOOP,59_,59_O$tOpO,59`O$|OpO,59`OOOP-E6t-E6tOOOW-E6u-E6uOOOP1G.l1G.lOOOO-E6v-E6vO%UO!bO1G.oO%UO!bO1G.oO%dOpO'#CkO%lO!bO'#CyO%zO!bO1G.oOOOP1G.o1G.oOOOP1G.w1G.wOOOP-E6z-E6zOOOP1G.m1G.mO&VOpO,59ZO&_OpO,59ZOOOQ-E6{-E6{OOOP1G.x1G.xOOOS-E6|-E6|OOOP1G.y1G.yO&gOpO1G.zO&gOpO1G.zOOOP1G.z1G.zO&oO!bO7+$ZO&}O!bO7+$ZOOOP7+$Z7+$ZOOOP7+$c7+$cO'YOpO,59VO'bOpO,59VO'mO!bO,59eOOOO-E6w-E6wO'{OpO1G.uO'{OpO1G.uOOOP1G.u1G.uO(TOpO7+$fOOOP7+$f7+$fO(]O!bO<<GuOOOP<<Gu<<GuOOOP<<G}<<G}O'bOpO1G.qO'bOpO1G.qO(hO#tO'#CnO(vO&jO'#CnOOOO1G.q1G.qO)UOpO7+$aOOOP7+$a7+$aOOOP<<HQ<<HQOOOPAN=aAN=aOOOPAN=iAN=iO'bOpO7+$]OOOO7+$]7+$]OOOO'#Cz'#CzO)^O#tO,59YOOOO,59Y,59YOOOO'#C{'#C{O)lO&jO,59YOOOP<<G{<<G{OOOO<<Gw<<GwOOOO-E6x-E6xOOOO1G.t1G.tOOOO-E6y-E6y\",\n stateData: \")z~OPQOSVOTWOVWOWWOXWOiXOyPO!QTO!SUO~OvZOx]O~O^`Oz^O~OPQOQcOSVOTWOVWOWWOXWOyPO!QTO!SUO~ORdO~P!SOteO!PgO~OuhO!RjO~O^lOz^O~OvZOxoO~O^qOz^O~O[vO`sOdwOz^O~ORyO~P!SO^{Oz^O~OteO!P}O~OuhO!R!PO~O^!QOz^O~O[!SOz^O~O[!VO`sOd!WOz^O~Oa!YOz^O~Oz^O[mX`mXdmX~O[!VO`sOd!WO~O^!]Oz^O~O[!_Oz^O~O[!aOz^O~O[!cO`sOd!dOz^O~O[!cO`sOd!dO~Oa!eOz^O~Oz^O{!gO}!hO~Oz^O[ma`madma~O[!kOz^O~O[!lOz^O~O[!mO`sOd!nO~OW!qOX!qO{!sO|!qO~OW!tOX!tO}!sO!O!tO~O[!vOz^O~OW!qOX!qO{!yO|!qO~OW!tOX!tO}!yO!O!tO~O\",\n goto: \"%cxPPPPPPPPPPyyP!PP!VPP!`!jP!pyyyP!v!|#S$[$k$q$w$}%TPPPP%ZXWORYbXRORYb_t`qru!T!U!bQ!i!YS!p!e!fR!w!oQdRRybXSORYbQYORmYQ[PRn[Q_QQkVjp_krz!R!T!X!Z!^!`!f!j!oQr`QzcQ!RlQ!TqQ!XsQ!ZtQ!^{Q!`!QQ!f!YQ!j!]R!o!eQu`S!UqrU![u!U!bR!b!TQ!r!gR!x!rQ!u!hR!z!uQbRRxbQfTR|fQiUR!OiSXOYTaRb\",\n nodeNames: \"⚠ StartTag StartCloseTag MissingCloseTag StartCloseTag StartCloseTag Document Text EntityReference CharacterReference Cdata Element EndTag OpenTag TagName Attribute AttributeName Is AttributeValue CloseTag SelfCloseEndTag SelfClosingTag Comment ProcessingInst MismatchedCloseTag DoctypeDecl\",\n maxTerm: 50,\n context: elementContext,\n nodeProps: [\n [\"closedBy\", 1,\"SelfCloseEndTag EndTag\",13,\"CloseTag MissingCloseTag\"],\n [\"openedBy\", 12,\"StartTag StartCloseTag\",19,\"OpenTag\",20,\"StartTag\"],\n [\"isolate\", -6,13,18,19,21,22,24,\"\"]\n ],\n propSources: [xmlHighlighting],\n skippedNodes: [0],\n repeatNodeCount: 9,\n tokenData: \"!)v~R!YOX$qXY)iYZ)iZ]$q]^)i^p$qpq)iqr$qrs*vsv$qvw+fwx/ix}$q}!O0[!O!P$q!P!Q2z!Q![$q![!]4n!]!^$q!^!_8U!_!`!#t!`!a!$l!a!b!%d!b!c$q!c!}4n!}#P$q#P#Q!'W#Q#R$q#R#S4n#S#T$q#T#o4n#o%W$q%W%o4n%o%p$q%p&a4n&a&b$q&b1p4n1p4U$q4U4d4n4d4e$q4e$IS4n$IS$I`$q$I`$Ib4n$Ib$Kh$q$Kh%#t4n%#t&/x$q&/x&Et4n&Et&FV$q&FV;'S4n;'S;:j8O;:j;=`)c<%l?&r$q?&r?Ah4n?Ah?BY$q?BY?Mn4n?MnO$qi$zXVP|W!O`Or$qrs%gsv$qwx'^x!^$q!^!_(o!_;'S$q;'S;=`)c<%lO$qa%nVVP!O`Ov%gwx&Tx!^%g!^!_&o!_;'S%g;'S;=`'W<%lO%gP&YTVPOv&Tw!^&T!_;'S&T;'S;=`&i<%lO&TP&lP;=`<%l&T`&tS!O`Ov&ox;'S&o;'S;=`'Q<%lO&o`'TP;=`<%l&oa'ZP;=`<%l%gX'eWVP|WOr'^rs&Tsv'^w!^'^!^!_'}!_;'S'^;'S;=`(i<%lO'^W(ST|WOr'}sv'}w;'S'};'S;=`(c<%lO'}W(fP;=`<%l'}X(lP;=`<%l'^h(vV|W!O`Or(ors&osv(owx'}x;'S(o;'S;=`)]<%lO(oh)`P;=`<%l(oi)fP;=`<%l$qo)t`VP|W!O`zUOX$qXY)iYZ)iZ]$q]^)i^p$qpq)iqr$qrs%gsv$qwx'^x!^$q!^!_(o!_;'S$q;'S;=`)c<%lO$qk+PV{YVP!O`Ov%gwx&Tx!^%g!^!_&o!_;'S%g;'S;=`'W<%lO%g~+iast,n![!]-r!c!}-r#R#S-r#T#o-r%W%o-r%p&a-r&b1p-r4U4d-r4e$IS-r$I`$Ib-r$Kh%#t-r&/x&Et-r&FV;'S-r;'S;:j/c?&r?Ah-r?BY?Mn-r~,qQ!Q![,w#l#m-V~,zQ!Q![,w!]!^-Q~-VOX~~-YR!Q![-c!c!i-c#T#Z-c~-fS!Q![-c!]!^-Q!c!i-c#T#Z-c~-ug}!O-r!O!P-r!Q![-r![!]-r!]!^/^!c!}-r#R#S-r#T#o-r$}%O-r%W%o-r%p&a-r&b1p-r1p4U-r4U4d-r4e$IS-r$I`$Ib-r$Je$Jg-r$Kh%#t-r&/x&Et-r&FV;'S-r;'S;:j/c?&r?Ah-r?BY?Mn-r~/cOW~~/fP;=`<%l-rk/rW}bVP|WOr'^rs&Tsv'^w!^'^!^!_'}!_;'S'^;'S;=`(i<%lO'^k0eZVP|W!O`Or$qrs%gsv$qwx'^x}$q}!O1W!O!^$q!^!_(o!_;'S$q;'S;=`)c<%lO$qk1aZVP|W!O`Or$qrs%gsv$qwx'^x!^$q!^!_(o!_!`$q!`!a2S!a;'S$q;'S;=`)c<%lO$qk2_X!PQVP|W!O`Or$qrs%gsv$qwx'^x!^$q!^!_(o!_;'S$q;'S;=`)c<%lO$qm3TZVP|W!O`Or$qrs%gsv$qwx'^x!^$q!^!_(o!_!`$q!`!a3v!a;'S$q;'S;=`)c<%lO$qm4RXdSVP|W!O`Or$qrs%gsv$qwx'^x!^$q!^!_(o!_;'S$q;'S;=`)c<%lO$qo4{!P`S^QVP|W!O`Or$qrs%gsv$qwx'^x}$q}!O4n!O!P4n!P!Q$q!Q![4n![!]4n!]!^$q!^!_(o!_!c$q!c!}4n!}#R$q#R#S4n#S#T$q#T#o4n#o$}$q$}%O4n%O%W$q%W%o4n%o%p$q%p&a4n&a&b$q&b1p4n1p4U4n4U4d4n4d4e$q4e$IS4n$IS$I`$q$I`$Ib4n$Ib$Je$q$Je$Jg4n$Jg$Kh$q$Kh%#t4n%#t&/x$q&/x&Et4n&Et&FV$q&FV;'S4n;'S;:j8O;:j;=`)c<%l?&r$q?&r?Ah4n?Ah?BY$q?BY?Mn4n?MnO$qo8RP;=`<%l4ni8]Y|W!O`Oq(oqr8{rs&osv(owx'}x!a(o!a!b!#U!b;'S(o;'S;=`)]<%lO(oi9S_|W!O`Or(ors&osv(owx'}x}(o}!O:R!O!f(o!f!g;e!g!}(o!}#ODh#O#W(o#W#XLp#X;'S(o;'S;=`)]<%lO(oi:YX|W!O`Or(ors&osv(owx'}x}(o}!O:u!O;'S(o;'S;=`)]<%lO(oi;OV!QP|W!O`Or(ors&osv(owx'}x;'S(o;'S;=`)]<%lO(oi;lX|W!O`Or(ors&osv(owx'}x!q(o!q!r<X!r;'S(o;'S;=`)]<%lO(oi<`X|W!O`Or(ors&osv(owx'}x!e(o!e!f<{!f;'S(o;'S;=`)]<%lO(oi=SX|W!O`Or(ors&osv(owx'}x!v(o!v!w=o!w;'S(o;'S;=`)]<%lO(oi=vX|W!O`Or(ors&osv(owx'}x!{(o!{!|>c!|;'S(o;'S;=`)]<%lO(oi>jX|W!O`Or(ors&osv(owx'}x!r(o!r!s?V!s;'S(o;'S;=`)]<%lO(oi?^X|W!O`Or(ors&osv(owx'}x!g(o!g!h?y!h;'S(o;'S;=`)]<%lO(oi@QY|W!O`Or?yrs@psv?yvwA[wxBdx!`?y!`!aCr!a;'S?y;'S;=`Db<%lO?ya@uV!O`Ov@pvxA[x!`@p!`!aAy!a;'S@p;'S;=`B^<%lO@pPA_TO!`A[!`!aAn!a;'SA[;'S;=`As<%lOA[PAsOiPPAvP;=`<%lA[aBQSiP!O`Ov&ox;'S&o;'S;=`'Q<%lO&oaBaP;=`<%l@pXBiX|WOrBdrsA[svBdvwA[w!`Bd!`!aCU!a;'SBd;'S;=`Cl<%lOBdXC]TiP|WOr'}sv'}w;'S'};'S;=`(c<%lO'}XCoP;=`<%lBdiC{ViP|W!O`Or(ors&osv(owx'}x;'S(o;'S;=`)]<%lO(oiDeP;=`<%l?yiDoZ|W!O`Or(ors&osv(owx'}x!e(o!e!fEb!f#V(o#V#WIr#W;'S(o;'S;=`)]<%lO(oiEiX|W!O`Or(ors&osv(owx'}x!f(o!f!gFU!g;'S(o;'S;=`)]<%lO(oiF]X|W!O`Or(ors&osv(owx'}x!c(o!c!dFx!d;'S(o;'S;=`)]<%lO(oiGPX|W!O`Or(ors&osv(owx'}x!v(o!v!wGl!w;'S(o;'S;=`)]<%lO(oiGsX|W!O`Or(ors&osv(owx'}x!c(o!c!dH`!d;'S(o;'S;=`)]<%lO(oiHgX|W!O`Or(ors&osv(owx'}x!}(o!}#OIS#O;'S(o;'S;=`)]<%lO(oiI]V|W!O`yPOr(ors&osv(owx'}x;'S(o;'S;=`)]<%lO(oiIyX|W!O`Or(ors&osv(owx'}x#W(o#W#XJf#X;'S(o;'S;=`)]<%lO(oiJmX|W!O`Or(ors&osv(owx'}x#T(o#T#UKY#U;'S(o;'S;=`)]<%lO(oiKaX|W!O`Or(ors&osv(owx'}x#h(o#h#iK|#i;'S(o;'S;=`)]<%lO(oiLTX|W!O`Or(ors&osv(owx'}x#T(o#T#UH`#U;'S(o;'S;=`)]<%lO(oiLwX|W!O`Or(ors&osv(owx'}x#c(o#c#dMd#d;'S(o;'S;=`)]<%lO(oiMkX|W!O`Or(ors&osv(owx'}x#V(o#V#WNW#W;'S(o;'S;=`)]<%lO(oiN_X|W!O`Or(ors&osv(owx'}x#h(o#h#iNz#i;'S(o;'S;=`)]<%lO(oi! RX|W!O`Or(ors&osv(owx'}x#m(o#m#n! n#n;'S(o;'S;=`)]<%lO(oi! uX|W!O`Or(ors&osv(owx'}x#d(o#d#e!!b#e;'S(o;'S;=`)]<%lO(oi!!iX|W!O`Or(ors&osv(owx'}x#X(o#X#Y?y#Y;'S(o;'S;=`)]<%lO(oi!#_V!SP|W!O`Or(ors&osv(owx'}x;'S(o;'S;=`)]<%lO(ok!$PXaQVP|W!O`Or$qrs%gsv$qwx'^x!^$q!^!_(o!_;'S$q;'S;=`)c<%lO$qo!$wX[UVP|W!O`Or$qrs%gsv$qwx'^x!^$q!^!_(o!_;'S$q;'S;=`)c<%lO$qk!%mZVP|W!O`Or$qrs%gsv$qwx'^x!^$q!^!_(o!_!`$q!`!a!&`!a;'S$q;'S;=`)c<%lO$qk!&kX!RQVP|W!O`Or$qrs%gsv$qwx'^x!^$q!^!_(o!_;'S$q;'S;=`)c<%lO$qk!'aZVP|W!O`Or$qrs%gsv$qwx'^x!^$q!^!_(o!_#P$q#P#Q!(S#Q;'S$q;'S;=`)c<%lO$qk!(]ZVP|W!O`Or$qrs%gsv$qwx'^x!^$q!^!_(o!_!`$q!`!a!)O!a;'S$q;'S;=`)c<%lO$qk!)ZXxQVP|W!O`Or$qrs%gsv$qwx'^x!^$q!^!_(o!_;'S$q;'S;=`)c<%lO$q\",\n tokenizers: [startTag, commentContent, piContent, cdataContent, 0, 1, 2, 3, 4],\n topRules: {\"Document\":[0,6]},\n tokenPrec: 0\n});\n\nexport { parser };\n","import { parser } from '@lezer/xml';\nimport { syntaxTree, LRLanguage, indentNodeProp, foldNodeProp, bracketMatchingHandle, LanguageSupport } from '@codemirror/language';\nimport { EditorSelection } from '@codemirror/state';\nimport { EditorView } from '@codemirror/view';\n\nfunction tagName(doc, tag) {\n let name = tag && tag.getChild(\"TagName\");\n return name ? doc.sliceString(name.from, name.to) : \"\";\n}\nfunction elementName$1(doc, tree) {\n let tag = tree && tree.firstChild;\n return !tag || tag.name != \"OpenTag\" ? \"\" : tagName(doc, tag);\n}\nfunction attrName(doc, tag, pos) {\n let attr = tag && tag.getChildren(\"Attribute\").find(a => a.from <= pos && a.to >= pos);\n let name = attr && attr.getChild(\"AttributeName\");\n return name ? doc.sliceString(name.from, name.to) : \"\";\n}\nfunction findParentElement(tree) {\n for (let cur = tree && tree.parent; cur; cur = cur.parent)\n if (cur.name == \"Element\")\n return cur;\n return null;\n}\nfunction findLocation(state, pos) {\n var _a;\n let at = syntaxTree(state).resolveInner(pos, -1), inTag = null;\n for (let cur = at; !inTag && cur.parent; cur = cur.parent)\n if (cur.name == \"OpenTag\" || cur.name == \"CloseTag\" || cur.name == \"SelfClosingTag\" || cur.name == \"MismatchedCloseTag\")\n inTag = cur;\n if (inTag && (inTag.to > pos || inTag.lastChild.type.isError)) {\n let elt = inTag.parent;\n if (at.name == \"TagName\")\n return inTag.name == \"CloseTag\" || inTag.name == \"MismatchedCloseTag\"\n ? { type: \"closeTag\", from: at.from, context: elt }\n : { type: \"openTag\", from: at.from, context: findParentElement(elt) };\n if (at.name == \"AttributeName\")\n return { type: \"attrName\", from: at.from, context: inTag };\n if (at.name == \"AttributeValue\")\n return { type: \"attrValue\", from: at.from, context: inTag };\n let before = at == inTag || at.name == \"Attribute\" ? at.childBefore(pos) : at;\n if ((before === null || before === void 0 ? void 0 : before.name) == \"StartTag\")\n return { type: \"openTag\", from: pos, context: findParentElement(elt) };\n if ((before === null || before === void 0 ? void 0 : before.name) == \"StartCloseTag\" && before.to <= pos)\n return { type: \"closeTag\", from: pos, context: elt };\n if ((before === null || before === void 0 ? void 0 : before.name) == \"Is\")\n return { type: \"attrValue\", from: pos, context: inTag };\n if (before)\n return { type: \"attrName\", from: pos, context: inTag };\n return null;\n }\n else if (at.name == \"StartCloseTag\") {\n return { type: \"closeTag\", from: pos, context: at.parent };\n }\n while (at.parent && at.to == pos && !((_a = at.lastChild) === null || _a === void 0 ? void 0 : _a.type.isError))\n at = at.parent;\n if (at.name == \"Element\" || at.name == \"Text\" || at.name == \"Document\")\n return { type: \"tag\", from: pos, context: at.name == \"Element\" ? at : findParentElement(at) };\n return null;\n}\nclass Element {\n constructor(spec, attrs, attrValues) {\n this.attrs = attrs;\n this.attrValues = attrValues;\n this.children = [];\n this.name = spec.name;\n this.completion = Object.assign(Object.assign({ type: \"type\" }, spec.completion || {}), { label: this.name });\n this.openCompletion = Object.assign(Object.assign({}, this.completion), { label: \"<\" + this.name });\n this.closeCompletion = Object.assign(Object.assign({}, this.completion), { label: \"</\" + this.name + \">\", boost: 2 });\n this.closeNameCompletion = Object.assign(Object.assign({}, this.completion), { label: this.name + \">\" });\n this.text = spec.textContent ? spec.textContent.map(s => ({ label: s, type: \"text\" })) : [];\n }\n}\nconst Identifier = /^[:\\-\\.\\w\\u00b7-\\uffff]*$/;\nfunction attrCompletion(spec) {\n return Object.assign(Object.assign({ type: \"property\" }, spec.completion || {}), { label: spec.name });\n}\nfunction valueCompletion(spec) {\n return typeof spec == \"string\" ? { label: `\"${spec}\"`, type: \"constant\" }\n : /^\"/.test(spec.label) ? spec\n : Object.assign(Object.assign({}, spec), { label: `\"${spec.label}\"` });\n}\n/**\nCreate a completion source for the given schema.\n*/\nfunction completeFromSchema(eltSpecs, attrSpecs) {\n let allAttrs = [], globalAttrs = [];\n let attrValues = Object.create(null);\n for (let s of attrSpecs) {\n let completion = attrCompletion(s);\n allAttrs.push(completion);\n if (s.global)\n globalAttrs.push(completion);\n if (s.values)\n attrValues[s.name] = s.values.map(valueCompletion);\n }\n let allElements = [], topElements = [];\n let byName = Object.create(null);\n for (let s of eltSpecs) {\n let attrs = globalAttrs, attrVals = attrValues;\n if (s.attributes)\n attrs = attrs.concat(s.attributes.map(s => {\n if (typeof s == \"string\")\n return allAttrs.find(a => a.label == s) || { label: s, type: \"property\" };\n if (s.values) {\n if (attrVals == attrValues)\n attrVals = Object.create(attrVals);\n attrVals[s.name] = s.values.map(valueCompletion);\n }\n return attrCompletion(s);\n }));\n let elt = new Element(s, attrs, attrVals);\n byName[elt.name] = elt;\n allElements.push(elt);\n if (s.top)\n topElements.push(elt);\n }\n if (!topElements.length)\n topElements = allElements;\n for (let i = 0; i < allElements.length; i++) {\n let s = eltSpecs[i], elt = allElements[i];\n if (s.children) {\n for (let ch of s.children)\n if (byName[ch])\n elt.children.push(byName[ch]);\n }\n else {\n elt.children = allElements;\n }\n }\n return cx => {\n var _a;\n let { doc } = cx.state, loc = findLocation(cx.state, cx.pos);\n if (!loc || (loc.type == \"tag\" && !cx.explicit))\n return null;\n let { type, from, context } = loc;\n if (type == \"openTag\") {\n let children = topElements;\n let parentName = elementName$1(doc, context);\n if (parentName) {\n let parent = byName[parentName];\n children = (parent === null || parent === void 0 ? void 0 : parent.children) || allElements;\n }\n return {\n from,\n options: children.map(ch => ch.completion),\n validFor: Identifier\n };\n }\n else if (type == \"closeTag\") {\n let parentName = elementName$1(doc, context);\n return parentName ? {\n from,\n to: cx.pos + (doc.sliceString(cx.pos, cx.pos + 1) == \">\" ? 1 : 0),\n options: [((_a = byName[parentName]) === null || _a === void 0 ? void 0 : _a.closeNameCompletion) || { label: parentName + \">\", type: \"type\" }],\n validFor: Identifier\n } : null;\n }\n else if (type == \"attrName\") {\n let parent = byName[tagName(doc, context)];\n return {\n from,\n options: (parent === null || parent === void 0 ? void 0 : parent.attrs) || globalAttrs,\n validFor: Identifier\n };\n }\n else if (type == \"attrValue\") {\n let attr = attrName(doc, context, from);\n if (!attr)\n return null;\n let parent = byName[tagName(doc, context)];\n let values = ((parent === null || parent === void 0 ? void 0 : parent.attrValues) || attrValues)[attr];\n if (!values || !values.length)\n return null;\n return {\n from,\n to: cx.pos + (doc.sliceString(cx.pos, cx.pos + 1) == '\"' ? 1 : 0),\n options: values,\n validFor: /^\"[^\"]*\"?$/\n };\n }\n else if (type == \"tag\") {\n let parentName = elementName$1(doc, context), parent = byName[parentName];\n let closing = [], last = context && context.lastChild;\n if (parentName && (!last || last.name != \"CloseTag\" || tagName(doc, last) != parentName))\n closing.push(parent ? parent.closeCompletion : { label: \"</\" + parentName + \">\", type: \"type\", boost: 2 });\n let options = closing.concat(((parent === null || parent === void 0 ? void 0 : parent.children) || (context ? allElements : topElements)).map(e => e.openCompletion));\n if (context && (parent === null || parent === void 0 ? void 0 : parent.text.length)) {\n let openTag = context.firstChild;\n if (openTag.to > cx.pos - 20 && !/\\S/.test(cx.state.sliceDoc(openTag.to, cx.pos)))\n options = options.concat(parent.text);\n }\n return {\n from,\n options,\n validFor: /^<\\/?[:\\-\\.\\w\\u00b7-\\uffff]*$/\n };\n }\n else {\n return null;\n }\n };\n}\n\n/**\nA language provider based on the [Lezer XML\nparser](https://github.com/lezer-parser/xml), extended with\nhighlighting and indentation information.\n*/\nconst xmlLanguage = /*@__PURE__*/LRLanguage.define({\n name: \"xml\",\n parser: /*@__PURE__*/parser.configure({\n props: [\n /*@__PURE__*/indentNodeProp.add({\n Element(context) {\n let closed = /^\\s*<\\//.test(context.textAfter);\n return context.lineIndent(context.node.from) + (closed ? 0 : context.unit);\n },\n \"OpenTag CloseTag SelfClosingTag\"(context) {\n return context.column(context.node.from) + context.unit;\n }\n }),\n /*@__PURE__*/foldNodeProp.add({\n Element(subtree) {\n let first = subtree.firstChild, last = subtree.lastChild;\n if (!first || first.name != \"OpenTag\")\n return null;\n return { from: first.to, to: last.name == \"CloseTag\" ? last.from : subtree.to };\n }\n }),\n /*@__PURE__*/bracketMatchingHandle.add({\n \"OpenTag CloseTag\": node => node.getChild(\"TagName\")\n })\n ]\n }),\n languageData: {\n commentTokens: { block: { open: \"<!--\", close: \"-->\" } },\n indentOnInput: /^\\s*<\\/$/\n }\n});\n/**\nXML language support. Includes schema-based autocompletion when\nconfigured.\n*/\nfunction xml(conf = {}) {\n let support = [xmlLanguage.data.of({\n autocomplete: completeFromSchema(conf.elements || [], conf.attributes || [])\n })];\n if (conf.autoCloseTags !== false)\n support.push(autoCloseTags);\n return new LanguageSupport(xmlLanguage, support);\n}\nfunction elementName(doc, tree, max = doc.length) {\n if (!tree)\n return \"\";\n let tag = tree.firstChild;\n let name = tag && tag.getChild(\"TagName\");\n return name ? doc.sliceString(name.from, Math.min(name.to, max)) : \"\";\n}\n/**\nExtension that will automatically insert close tags when a `>` or\n`/` is typed.\n*/\nconst autoCloseTags = /*@__PURE__*/EditorView.inputHandler.of((view, from, to, text, insertTransaction) => {\n if (view.composing || view.state.readOnly || from != to || (text != \">\" && text != \"/\") ||\n !xmlLanguage.isActiveAt(view.state, from, -1))\n return false;\n let base = insertTransaction(), { state } = base;\n let closeTags = state.changeByRange(range => {\n var _a, _b, _c;\n let { head } = range;\n let didType = state.doc.sliceString(head - 1, head) == text;\n let after = syntaxTree(state).resolveInner(head, -1), name;\n if (didType && text == \">\" && after.name == \"EndTag\") {\n let tag = after.parent;\n if (((_b = (_a = tag.parent) === null || _a === void 0 ? void 0 : _a.lastChild) === null || _b === void 0 ? void 0 : _b.name) != \"CloseTag\" &&\n (name = elementName(state.doc, tag.parent, head))) {\n let to = head + (state.doc.sliceString(head, head + 1) === \">\" ? 1 : 0);\n let insert = `</${name}>`;\n return { range, changes: { from: head, to, insert } };\n }\n }\n else if (didType && text == \"/\" && after.name == \"StartCloseTag\") {\n let base = after.parent;\n if (after.from == head - 2 && ((_c = base.lastChild) === null || _c === void 0 ? void 0 : _c.name) != \"CloseTag\" &&\n (name = elementName(state.doc, base, head))) {\n let to = head + (state.doc.sliceString(head, head + 1) === \">\" ? 1 : 0);\n let insert = `${name}>`;\n return {\n range: EditorSelection.cursor(head + insert.length, -1),\n changes: { from: head, to, insert }\n };\n }\n }\n return { range };\n });\n if (closeTags.changes.empty)\n return false;\n view.dispatch([\n base,\n state.update(closeTags, {\n userEvent: \"input.complete\",\n scrollIntoView: true\n })\n ]);\n return true;\n});\n\nexport { autoCloseTags, completeFromSchema, xml, xmlLanguage };\n"],"names":["StartTag","StartCloseTag","MissingCloseTag","mismatchedStartCloseTag","incompleteStartCloseTag","commentContent$1","piContent$1","cdataContent$1","Element","OpenTag","nameChar","ch","isSpace","cachedName","cachedInput","cachedPos","tagNameAfter","input","offset","pos","name","next","ElementContext","parent","elementContext","ContextTracker","context","term","stack","node","_stack","type","startTag","ExternalTokenizer","cx","scanTo","end","len","first","scan","i","commentContent","piContent","cdataContent","xmlHighlighting","styleTags","tags","parser","LRParser","tagName","doc","tag","elementName$1","tree","attrName","attr","findParentElement","cur","findLocation","state","_a","at","syntaxTree","inTag","elt","before","spec","attrs","attrValues","s","Identifier","attrCompletion","valueCompletion","completeFromSchema","eltSpecs","attrSpecs","allAttrs","globalAttrs","completion","allElements","topElements","byName","attrVals","a","loc","from","children","parentName","values","closing","last","options","e","openTag","xmlLanguage","LRLanguage","indentNodeProp","closed","foldNodeProp","subtree","bracketMatchingHandle","xml","conf","support","autoCloseTags","LanguageSupport","elementName","max","EditorView","view","to","text","insertTransaction","base","closeTags","range","_b","_c","head","didType","after","insert","EditorSelection"],"mappings":"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","x_google_ignoreList":[0,1]}