@inkandswitch/patchwork-pkg-base 0.0.15 → 0.0.17

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 (383) hide show
  1. package/init.js +1 -0
  2. package/modules.json +11 -1
  3. package/package.json +1 -1
  4. package/packages/account-picker/dist/AccountPicker-7VBUJTTB.js +8860 -0
  5. package/packages/account-picker/dist/AccountPicker-7VBUJTTB.js.map +7 -0
  6. package/packages/account-picker/dist/AccountPicker-CN73XGEW.css +371 -0
  7. package/packages/account-picker/dist/AccountPicker-CN73XGEW.css.map +7 -0
  8. package/packages/account-picker/dist/chunk-5WRI5ZAA.js +31 -0
  9. package/packages/account-picker/dist/chunk-5WRI5ZAA.js.map +7 -0
  10. package/packages/account-picker/dist/tool.css +371 -0
  11. package/packages/account-picker/dist/tool.css.map +7 -0
  12. package/packages/account-picker/dist/tool.js +19 -0
  13. package/packages/account-picker/dist/tool.js.map +7 -0
  14. package/packages/account-picker/package.json +39 -0
  15. package/packages/codemirror-base/dist/chunk-KMEIRH3R.js +490 -0
  16. package/packages/codemirror-base/dist/chunk-KMEIRH3R.js.map +7 -0
  17. package/packages/codemirror-base/dist/lib/codemirror.js +7 -0
  18. package/packages/codemirror-base/dist/lib/codemirror.js.map +7 -0
  19. package/packages/codemirror-base/dist/main.js +17 -0
  20. package/packages/codemirror-base/dist/main.js.map +7 -0
  21. package/packages/codemirror-base/dist/tool.js +1799 -0
  22. package/packages/codemirror-base/dist/tool.js.map +7 -0
  23. package/packages/codemirror-base/package.json +55 -0
  24. package/packages/codemirror-markdown/dist/apl-QAIM2KBM.js +142 -0
  25. package/packages/codemirror-markdown/dist/apl-QAIM2KBM.js.map +7 -0
  26. package/packages/codemirror-markdown/dist/asciiarmor-G7UKQURA.js +58 -0
  27. package/packages/codemirror-markdown/dist/asciiarmor-G7UKQURA.js.map +7 -0
  28. package/packages/codemirror-markdown/dist/asn1-JTUXKWKT.js +144 -0
  29. package/packages/codemirror-markdown/dist/asn1-JTUXKWKT.js.map +7 -0
  30. package/packages/codemirror-markdown/dist/asterisk-NM6JCXOL.js +351 -0
  31. package/packages/codemirror-markdown/dist/asterisk-NM6JCXOL.js.map +7 -0
  32. package/packages/codemirror-markdown/dist/brainfuck-X7FFM55E.js +55 -0
  33. package/packages/codemirror-markdown/dist/brainfuck-X7FFM55E.js.map +7 -0
  34. package/packages/codemirror-markdown/dist/chunk-46Z6CXSY.js +1062 -0
  35. package/packages/codemirror-markdown/dist/chunk-46Z6CXSY.js.map +7 -0
  36. package/packages/codemirror-markdown/dist/chunk-6JT2ASRP.js +1111 -0
  37. package/packages/codemirror-markdown/dist/chunk-6JT2ASRP.js.map +7 -0
  38. package/packages/codemirror-markdown/dist/chunk-CSJO4DNL.js +1424 -0
  39. package/packages/codemirror-markdown/dist/chunk-CSJO4DNL.js.map +7 -0
  40. package/packages/codemirror-markdown/dist/chunk-FLC3A4DL.js +133 -0
  41. package/packages/codemirror-markdown/dist/chunk-FLC3A4DL.js.map +7 -0
  42. package/packages/codemirror-markdown/dist/chunk-M3X2FRO3.js +998 -0
  43. package/packages/codemirror-markdown/dist/chunk-M3X2FRO3.js.map +7 -0
  44. package/packages/codemirror-markdown/dist/chunk-MAW6NPUW.js +4930 -0
  45. package/packages/codemirror-markdown/dist/chunk-MAW6NPUW.js.map +7 -0
  46. package/packages/codemirror-markdown/dist/chunk-MBTMKYFQ.js +1779 -0
  47. package/packages/codemirror-markdown/dist/chunk-MBTMKYFQ.js.map +7 -0
  48. package/packages/codemirror-markdown/dist/chunk-NEI7FGV4.js +697 -0
  49. package/packages/codemirror-markdown/dist/chunk-NEI7FGV4.js.map +7 -0
  50. package/packages/codemirror-markdown/dist/chunk-PPGERYN5.js +2528 -0
  51. package/packages/codemirror-markdown/dist/chunk-PPGERYN5.js.map +7 -0
  52. package/packages/codemirror-markdown/dist/clike-DOBZTBQN.js +808 -0
  53. package/packages/codemirror-markdown/dist/clike-DOBZTBQN.js.map +7 -0
  54. package/packages/codemirror-markdown/dist/clojure-PTADSDNF.js +851 -0
  55. package/packages/codemirror-markdown/dist/clojure-PTADSDNF.js.map +7 -0
  56. package/packages/codemirror-markdown/dist/cmake-5HAC7YMH.js +73 -0
  57. package/packages/codemirror-markdown/dist/cmake-5HAC7YMH.js.map +7 -0
  58. package/packages/codemirror-markdown/dist/cobol-HAM4C42S.js +131 -0
  59. package/packages/codemirror-markdown/dist/cobol-HAM4C42S.js.map +7 -0
  60. package/packages/codemirror-markdown/dist/coffeescript-IBRKASSJ.js +310 -0
  61. package/packages/codemirror-markdown/dist/coffeescript-IBRKASSJ.js.map +7 -0
  62. package/packages/codemirror-markdown/dist/commonlisp-KMRPB5EW.js +132 -0
  63. package/packages/codemirror-markdown/dist/commonlisp-KMRPB5EW.js.map +7 -0
  64. package/packages/codemirror-markdown/dist/crystal-2MDF4EKJ.js +400 -0
  65. package/packages/codemirror-markdown/dist/crystal-2MDF4EKJ.js.map +7 -0
  66. package/packages/codemirror-markdown/dist/css-VQQXA3AY.js +1795 -0
  67. package/packages/codemirror-markdown/dist/css-VQQXA3AY.js.map +7 -0
  68. package/packages/codemirror-markdown/dist/cypher-ZZEGDGDJ.js +123 -0
  69. package/packages/codemirror-markdown/dist/cypher-ZZEGDGDJ.js.map +7 -0
  70. package/packages/codemirror-markdown/dist/d-5S6PJOOT.js +187 -0
  71. package/packages/codemirror-markdown/dist/d-5S6PJOOT.js.map +7 -0
  72. package/packages/codemirror-markdown/dist/datatype.js +48 -0
  73. package/packages/codemirror-markdown/dist/datatype.js.map +7 -0
  74. package/packages/codemirror-markdown/dist/diff-S77XBOWF.js +27 -0
  75. package/packages/codemirror-markdown/dist/diff-S77XBOWF.js.map +7 -0
  76. package/packages/codemirror-markdown/dist/dist-2C6IPJHB.js +98 -0
  77. package/packages/codemirror-markdown/dist/dist-2C6IPJHB.js.map +7 -0
  78. package/packages/codemirror-markdown/dist/dist-2H653DKD.js +170 -0
  79. package/packages/codemirror-markdown/dist/dist-2H653DKD.js.map +7 -0
  80. package/packages/codemirror-markdown/dist/dist-2O4EI6YQ.js +140 -0
  81. package/packages/codemirror-markdown/dist/dist-2O4EI6YQ.js.map +7 -0
  82. package/packages/codemirror-markdown/dist/dist-2UJRV4FH.js +75 -0
  83. package/packages/codemirror-markdown/dist/dist-2UJRV4FH.js.map +7 -0
  84. package/packages/codemirror-markdown/dist/dist-52S6W6Z3.js +15 -0
  85. package/packages/codemirror-markdown/dist/dist-52S6W6Z3.js.map +7 -0
  86. package/packages/codemirror-markdown/dist/dist-5KN6ODPO.js +340 -0
  87. package/packages/codemirror-markdown/dist/dist-5KN6ODPO.js.map +7 -0
  88. package/packages/codemirror-markdown/dist/dist-BOGB4NCA.js +20 -0
  89. package/packages/codemirror-markdown/dist/dist-BOGB4NCA.js.map +7 -0
  90. package/packages/codemirror-markdown/dist/dist-DZ4PW5HP.js +318 -0
  91. package/packages/codemirror-markdown/dist/dist-DZ4PW5HP.js.map +7 -0
  92. package/packages/codemirror-markdown/dist/dist-FDBKXKIA.js +100 -0
  93. package/packages/codemirror-markdown/dist/dist-FDBKXKIA.js.map +7 -0
  94. package/packages/codemirror-markdown/dist/dist-G2KVVLNT.js +381 -0
  95. package/packages/codemirror-markdown/dist/dist-G2KVVLNT.js.map +7 -0
  96. package/packages/codemirror-markdown/dist/dist-HHNZE2GE.js +193 -0
  97. package/packages/codemirror-markdown/dist/dist-HHNZE2GE.js.map +7 -0
  98. package/packages/codemirror-markdown/dist/dist-HNH74YPL.js +32 -0
  99. package/packages/codemirror-markdown/dist/dist-HNH74YPL.js.map +7 -0
  100. package/packages/codemirror-markdown/dist/dist-LBQUKRIG.js +27 -0
  101. package/packages/codemirror-markdown/dist/dist-LBQUKRIG.js.map +7 -0
  102. package/packages/codemirror-markdown/dist/dist-MFKCWPLQ.js +416 -0
  103. package/packages/codemirror-markdown/dist/dist-MFKCWPLQ.js.map +7 -0
  104. package/packages/codemirror-markdown/dist/dist-NISFJM3T.js +423 -0
  105. package/packages/codemirror-markdown/dist/dist-NISFJM3T.js.map +7 -0
  106. package/packages/codemirror-markdown/dist/dist-Q7P6VH6H.js +786 -0
  107. package/packages/codemirror-markdown/dist/dist-Q7P6VH6H.js.map +7 -0
  108. package/packages/codemirror-markdown/dist/dist-RWF5A5GN.js +451 -0
  109. package/packages/codemirror-markdown/dist/dist-RWF5A5GN.js.map +7 -0
  110. package/packages/codemirror-markdown/dist/dist-UHUU7KLC.js +748 -0
  111. package/packages/codemirror-markdown/dist/dist-UHUU7KLC.js.map +7 -0
  112. package/packages/codemirror-markdown/dist/dist-WJMBFK7W.js +360 -0
  113. package/packages/codemirror-markdown/dist/dist-WJMBFK7W.js.map +7 -0
  114. package/packages/codemirror-markdown/dist/dist-XJYSXJ7H.js +115 -0
  115. package/packages/codemirror-markdown/dist/dist-XJYSXJ7H.js.map +7 -0
  116. package/packages/codemirror-markdown/dist/dist-YY24ZXZD.js +212 -0
  117. package/packages/codemirror-markdown/dist/dist-YY24ZXZD.js.map +7 -0
  118. package/packages/codemirror-markdown/dist/dockerfile-JECCOJWP.js +209 -0
  119. package/packages/codemirror-markdown/dist/dockerfile-JECCOJWP.js.map +7 -0
  120. package/packages/codemirror-markdown/dist/dtd-MNDWTW4Z.js +116 -0
  121. package/packages/codemirror-markdown/dist/dtd-MNDWTW4Z.js.map +7 -0
  122. package/packages/codemirror-markdown/dist/dylan-VQ4IHJDS.js +317 -0
  123. package/packages/codemirror-markdown/dist/dylan-VQ4IHJDS.js.map +7 -0
  124. package/packages/codemirror-markdown/dist/ebnf-IDZBFTCG.js +142 -0
  125. package/packages/codemirror-markdown/dist/ebnf-IDZBFTCG.js.map +7 -0
  126. package/packages/codemirror-markdown/dist/ecl-X3ROY7E6.js +180 -0
  127. package/packages/codemirror-markdown/dist/ecl-X3ROY7E6.js.map +7 -0
  128. package/packages/codemirror-markdown/dist/eiffel-WB3M7Y2E.js +136 -0
  129. package/packages/codemirror-markdown/dist/eiffel-WB3M7Y2E.js.map +7 -0
  130. package/packages/codemirror-markdown/dist/elm-VHXR6ZA3.js +178 -0
  131. package/packages/codemirror-markdown/dist/elm-VHXR6ZA3.js.map +7 -0
  132. package/packages/codemirror-markdown/dist/erlang-7ZBDDQDV.js +676 -0
  133. package/packages/codemirror-markdown/dist/erlang-7ZBDDQDV.js.map +7 -0
  134. package/packages/codemirror-markdown/dist/extensions/embed.js +325 -0
  135. package/packages/codemirror-markdown/dist/extensions/embed.js.map +7 -0
  136. package/packages/codemirror-markdown/dist/extensions/links.js +118 -0
  137. package/packages/codemirror-markdown/dist/extensions/links.js.map +7 -0
  138. package/packages/codemirror-markdown/dist/extensions/markdown.js +3476 -0
  139. package/packages/codemirror-markdown/dist/extensions/markdown.js.map +7 -0
  140. package/packages/codemirror-markdown/dist/factor-IKT2GQE2.js +70 -0
  141. package/packages/codemirror-markdown/dist/factor-IKT2GQE2.js.map +7 -0
  142. package/packages/codemirror-markdown/dist/fcl-CNBUVGUC.js +143 -0
  143. package/packages/codemirror-markdown/dist/fcl-CNBUVGUC.js.map +7 -0
  144. package/packages/codemirror-markdown/dist/forth-4BTPWSFZ.js +118 -0
  145. package/packages/codemirror-markdown/dist/forth-4BTPWSFZ.js.map +7 -0
  146. package/packages/codemirror-markdown/dist/fortran-V6F5DQPK.js +469 -0
  147. package/packages/codemirror-markdown/dist/fortran-V6F5DQPK.js.map +7 -0
  148. package/packages/codemirror-markdown/dist/gas-4DLP6BC4.js +296 -0
  149. package/packages/codemirror-markdown/dist/gas-4DLP6BC4.js.map +7 -0
  150. package/packages/codemirror-markdown/dist/gherkin-OSGPX6HI.js +117 -0
  151. package/packages/codemirror-markdown/dist/gherkin-OSGPX6HI.js.map +7 -0
  152. package/packages/codemirror-markdown/dist/groovy-R2JW63QF.js +225 -0
  153. package/packages/codemirror-markdown/dist/groovy-R2JW63QF.js.map +7 -0
  154. package/packages/codemirror-markdown/dist/haskell-GG7T4J6H.js +461 -0
  155. package/packages/codemirror-markdown/dist/haskell-GG7T4J6H.js.map +7 -0
  156. package/packages/codemirror-markdown/dist/haxe-ESFUJKSE.js +521 -0
  157. package/packages/codemirror-markdown/dist/haxe-ESFUJKSE.js.map +7 -0
  158. package/packages/codemirror-markdown/dist/http-SZLSACOW.js +81 -0
  159. package/packages/codemirror-markdown/dist/http-SZLSACOW.js.map +7 -0
  160. package/packages/codemirror-markdown/dist/idl-V7UH35RP.js +987 -0
  161. package/packages/codemirror-markdown/dist/idl-V7UH35RP.js.map +7 -0
  162. package/packages/codemirror-markdown/dist/javascript-MGRPKFDN.js +13 -0
  163. package/packages/codemirror-markdown/dist/javascript-MGRPKFDN.js.map +7 -0
  164. package/packages/codemirror-markdown/dist/julia-CWCVZVPG.js +409 -0
  165. package/packages/codemirror-markdown/dist/julia-CWCVZVPG.js.map +7 -0
  166. package/packages/codemirror-markdown/dist/livescript-IGKT2FL7.js +303 -0
  167. package/packages/codemirror-markdown/dist/livescript-IGKT2FL7.js.map +7 -0
  168. package/packages/codemirror-markdown/dist/lua-GHK7GCTS.js +258 -0
  169. package/packages/codemirror-markdown/dist/lua-GHK7GCTS.js.map +7 -0
  170. package/packages/codemirror-markdown/dist/main.js +58 -0
  171. package/packages/codemirror-markdown/dist/main.js.map +7 -0
  172. package/packages/codemirror-markdown/dist/mathematica-W5LMQI3M.js +112 -0
  173. package/packages/codemirror-markdown/dist/mathematica-W5LMQI3M.js.map +7 -0
  174. package/packages/codemirror-markdown/dist/mbox-A7CXJ4HZ.js +119 -0
  175. package/packages/codemirror-markdown/dist/mbox-A7CXJ4HZ.js.map +7 -0
  176. package/packages/codemirror-markdown/dist/mirc-WYJEQUBY.js +109 -0
  177. package/packages/codemirror-markdown/dist/mirc-WYJEQUBY.js.map +7 -0
  178. package/packages/codemirror-markdown/dist/mllike-C2YS6SJI.js +340 -0
  179. package/packages/codemirror-markdown/dist/mllike-C2YS6SJI.js.map +7 -0
  180. package/packages/codemirror-markdown/dist/modelica-BMJSLZS7.js +149 -0
  181. package/packages/codemirror-markdown/dist/modelica-BMJSLZS7.js.map +7 -0
  182. package/packages/codemirror-markdown/dist/mscgen-5BORDYHW.js +137 -0
  183. package/packages/codemirror-markdown/dist/mscgen-5BORDYHW.js.map +7 -0
  184. package/packages/codemirror-markdown/dist/mumps-BYE6H7ZX.js +95 -0
  185. package/packages/codemirror-markdown/dist/mumps-BYE6H7ZX.js.map +7 -0
  186. package/packages/codemirror-markdown/dist/nginx-Y54HR7MQ.js +143 -0
  187. package/packages/codemirror-markdown/dist/nginx-Y54HR7MQ.js.map +7 -0
  188. package/packages/codemirror-markdown/dist/nsis-UZLPE2DL.js +67 -0
  189. package/packages/codemirror-markdown/dist/nsis-UZLPE2DL.js.map +7 -0
  190. package/packages/codemirror-markdown/dist/ntriples-SAI3J2VH.js +155 -0
  191. package/packages/codemirror-markdown/dist/ntriples-SAI3J2VH.js.map +7 -0
  192. package/packages/codemirror-markdown/dist/octave-TLUBYOUX.js +213 -0
  193. package/packages/codemirror-markdown/dist/octave-TLUBYOUX.js.map +7 -0
  194. package/packages/codemirror-markdown/dist/oz-F6LNIR6Q.js +233 -0
  195. package/packages/codemirror-markdown/dist/oz-F6LNIR6Q.js.map +7 -0
  196. package/packages/codemirror-markdown/dist/pascal-WINE2FE6.js +107 -0
  197. package/packages/codemirror-markdown/dist/pascal-WINE2FE6.js.map +7 -0
  198. package/packages/codemirror-markdown/dist/perl-NZG3EIBE.js +1107 -0
  199. package/packages/codemirror-markdown/dist/perl-NZG3EIBE.js.map +7 -0
  200. package/packages/codemirror-markdown/dist/pig-U7OFLRCV.js +105 -0
  201. package/packages/codemirror-markdown/dist/pig-U7OFLRCV.js.map +7 -0
  202. package/packages/codemirror-markdown/dist/powershell-ZSUS7P6D.js +330 -0
  203. package/packages/codemirror-markdown/dist/powershell-ZSUS7P6D.js.map +7 -0
  204. package/packages/codemirror-markdown/dist/properties-IJRU6UJW.js +60 -0
  205. package/packages/codemirror-markdown/dist/properties-IJRU6UJW.js.map +7 -0
  206. package/packages/codemirror-markdown/dist/protobuf-2KETQIQ5.js +80 -0
  207. package/packages/codemirror-markdown/dist/protobuf-2KETQIQ5.js.map +7 -0
  208. package/packages/codemirror-markdown/dist/pug-IQCJJAZU.js +410 -0
  209. package/packages/codemirror-markdown/dist/pug-IQCJJAZU.js.map +7 -0
  210. package/packages/codemirror-markdown/dist/puppet-YIIDDH6A.js +139 -0
  211. package/packages/codemirror-markdown/dist/puppet-YIIDDH6A.js.map +7 -0
  212. package/packages/codemirror-markdown/dist/python-A6P3XTMX.js +429 -0
  213. package/packages/codemirror-markdown/dist/python-A6P3XTMX.js.map +7 -0
  214. package/packages/codemirror-markdown/dist/q-2KXN5RX7.js +135 -0
  215. package/packages/codemirror-markdown/dist/q-2KXN5RX7.js.map +7 -0
  216. package/packages/codemirror-markdown/dist/r-BB4MIIBH.js +174 -0
  217. package/packages/codemirror-markdown/dist/r-BB4MIIBH.js.map +7 -0
  218. package/packages/codemirror-markdown/dist/rpm-LMR25AQ3.js +111 -0
  219. package/packages/codemirror-markdown/dist/rpm-LMR25AQ3.js.map +7 -0
  220. package/packages/codemirror-markdown/dist/ruby-TSD6FT73.js +333 -0
  221. package/packages/codemirror-markdown/dist/ruby-TSD6FT73.js.map +7 -0
  222. package/packages/codemirror-markdown/dist/sas-6X4WWIGV.js +209 -0
  223. package/packages/codemirror-markdown/dist/sas-6X4WWIGV.js.map +7 -0
  224. package/packages/codemirror-markdown/dist/scheme-E3I46HBL.js +230 -0
  225. package/packages/codemirror-markdown/dist/scheme-E3I46HBL.js.map +7 -0
  226. package/packages/codemirror-markdown/dist/shell-GX3PRI4I.js +224 -0
  227. package/packages/codemirror-markdown/dist/shell-GX3PRI4I.js.map +7 -0
  228. package/packages/codemirror-markdown/dist/sieve-V65ZPL4F.js +137 -0
  229. package/packages/codemirror-markdown/dist/sieve-V65ZPL4F.js.map +7 -0
  230. package/packages/codemirror-markdown/dist/smalltalk-OVKP2CVW.js +123 -0
  231. package/packages/codemirror-markdown/dist/smalltalk-OVKP2CVW.js.map +7 -0
  232. package/packages/codemirror-markdown/dist/solr-C4DLQJCF.js +71 -0
  233. package/packages/codemirror-markdown/dist/solr-C4DLQJCF.js.map +7 -0
  234. package/packages/codemirror-markdown/dist/sparql-REKUW7B3.js +251 -0
  235. package/packages/codemirror-markdown/dist/sparql-REKUW7B3.js.map +7 -0
  236. package/packages/codemirror-markdown/dist/spreadsheet-S7NN2YTQ.js +89 -0
  237. package/packages/codemirror-markdown/dist/spreadsheet-S7NN2YTQ.js.map +7 -0
  238. package/packages/codemirror-markdown/dist/sql-ML2Q43YF.js +358 -0
  239. package/packages/codemirror-markdown/dist/sql-ML2Q43YF.js.map +7 -0
  240. package/packages/codemirror-markdown/dist/stex-TCOGKBT4.js +233 -0
  241. package/packages/codemirror-markdown/dist/stex-TCOGKBT4.js.map +7 -0
  242. package/packages/codemirror-markdown/dist/stylus-3ONNYZOM.js +591 -0
  243. package/packages/codemirror-markdown/dist/stylus-3ONNYZOM.js.map +7 -0
  244. package/packages/codemirror-markdown/dist/swift-CNWGZ22Y.js +293 -0
  245. package/packages/codemirror-markdown/dist/swift-CNWGZ22Y.js.map +7 -0
  246. package/packages/codemirror-markdown/dist/tcl-77IMAZYE.js +116 -0
  247. package/packages/codemirror-markdown/dist/tcl-77IMAZYE.js.map +7 -0
  248. package/packages/codemirror-markdown/dist/textile-6IWIIKFM.js +416 -0
  249. package/packages/codemirror-markdown/dist/textile-6IWIIKFM.js.map +7 -0
  250. package/packages/codemirror-markdown/dist/tiddlywiki-IJSZMUSA.js +231 -0
  251. package/packages/codemirror-markdown/dist/tiddlywiki-IJSZMUSA.js.map +7 -0
  252. package/packages/codemirror-markdown/dist/tiki-HG37JJIT.js +276 -0
  253. package/packages/codemirror-markdown/dist/tiki-HG37JJIT.js.map +7 -0
  254. package/packages/codemirror-markdown/dist/toml-NINU2IMM.js +78 -0
  255. package/packages/codemirror-markdown/dist/toml-NINU2IMM.js.map +7 -0
  256. package/packages/codemirror-markdown/dist/troff-AOQJ4Q4C.js +63 -0
  257. package/packages/codemirror-markdown/dist/troff-AOQJ4Q4C.js.map +7 -0
  258. package/packages/codemirror-markdown/dist/ttcn-TLOZ3FX3.js +211 -0
  259. package/packages/codemirror-markdown/dist/ttcn-TLOZ3FX3.js.map +7 -0
  260. package/packages/codemirror-markdown/dist/ttcn-cfg-3B6QY7QE.js +141 -0
  261. package/packages/codemirror-markdown/dist/ttcn-cfg-3B6QY7QE.js.map +7 -0
  262. package/packages/codemirror-markdown/dist/turtle-3N5KCGXP.js +132 -0
  263. package/packages/codemirror-markdown/dist/turtle-3N5KCGXP.js.map +7 -0
  264. package/packages/codemirror-markdown/dist/vb-I7M5DRLP.js +204 -0
  265. package/packages/codemirror-markdown/dist/vb-I7M5DRLP.js.map +7 -0
  266. package/packages/codemirror-markdown/dist/vbscript-U2ARSJLD.js +482 -0
  267. package/packages/codemirror-markdown/dist/vbscript-U2ARSJLD.js.map +7 -0
  268. package/packages/codemirror-markdown/dist/velocity-R3AYP5XJ.js +151 -0
  269. package/packages/codemirror-markdown/dist/velocity-R3AYP5XJ.js.map +7 -0
  270. package/packages/codemirror-markdown/dist/verilog-7VEWVDW6.js +456 -0
  271. package/packages/codemirror-markdown/dist/verilog-7VEWVDW6.js.map +7 -0
  272. package/packages/codemirror-markdown/dist/vhdl-JZUPPGBA.js +162 -0
  273. package/packages/codemirror-markdown/dist/vhdl-JZUPPGBA.js.map +7 -0
  274. package/packages/codemirror-markdown/dist/webidl-SLQFEELK.js +206 -0
  275. package/packages/codemirror-markdown/dist/webidl-SLQFEELK.js.map +7 -0
  276. package/packages/codemirror-markdown/dist/xquery-VXP5KJ6N.js +532 -0
  277. package/packages/codemirror-markdown/dist/xquery-VXP5KJ6N.js.map +7 -0
  278. package/packages/codemirror-markdown/dist/yacas-JRBC4BEV.js +132 -0
  279. package/packages/codemirror-markdown/dist/yacas-JRBC4BEV.js.map +7 -0
  280. package/packages/codemirror-markdown/dist/z80-AJF6WLUV.js +95 -0
  281. package/packages/codemirror-markdown/dist/z80-AJF6WLUV.js.map +7 -0
  282. package/packages/codemirror-markdown/example.js +46 -0
  283. package/packages/codemirror-markdown/package.json +62 -0
  284. package/packages/commands/dist/main.js +504 -0
  285. package/packages/commands/dist/main.js.map +7 -0
  286. package/packages/commands/package.json +28 -0
  287. package/packages/contact/dist/ContactAvatar-FP32ZZH2.js +161 -0
  288. package/packages/contact/dist/ContactAvatar-FP32ZZH2.js.map +7 -0
  289. package/packages/contact/dist/ContactViewer-ZHEE6INW.js +60 -0
  290. package/packages/contact/dist/ContactViewer-ZHEE6INW.js.map +7 -0
  291. package/packages/contact/dist/InlineContactAvatar-VZDPEZV2.js +46 -0
  292. package/packages/contact/dist/InlineContactAvatar-VZDPEZV2.js.map +7 -0
  293. package/packages/contact/dist/chunk-MOZI4Y4O.js +54 -0
  294. package/packages/contact/dist/chunk-MOZI4Y4O.js.map +7 -0
  295. package/packages/contact/dist/datatype-ABVDVPWS.js +27 -0
  296. package/packages/contact/dist/datatype-ABVDVPWS.js.map +7 -0
  297. package/packages/contact/dist/tool.css +81 -0
  298. package/packages/contact/dist/tool.css.map +7 -0
  299. package/packages/contact/dist/tool.js +70 -0
  300. package/packages/contact/dist/tool.js.map +7 -0
  301. package/packages/contact/package.json +46 -0
  302. package/packages/folder/dist/datatype-HWGUFBTQ.js +27 -0
  303. package/packages/folder/dist/datatype-HWGUFBTQ.js.map +7 -0
  304. package/packages/folder/dist/index.js +27 -0
  305. package/packages/folder/dist/index.js.map +7 -0
  306. package/packages/folder/dist/tool-62JZAZRP.js +366 -0
  307. package/packages/folder/dist/tool-62JZAZRP.js.map +7 -0
  308. package/packages/folder/package.json +32 -0
  309. package/packages/sideboard/dist/account-bar-OJQC3J6W.js +2 -0
  310. package/packages/sideboard/dist/account-bar-OJQC3J6W.js.map +7 -0
  311. package/packages/sideboard/dist/chunk-32FICX7K.js +26 -0
  312. package/packages/sideboard/dist/chunk-32FICX7K.js.map +7 -0
  313. package/packages/sideboard/dist/chunk-3OYP6TVA.js +2 -0
  314. package/packages/sideboard/dist/chunk-3OYP6TVA.js.map +7 -0
  315. package/packages/sideboard/dist/chunk-FW4363Y4.js +2 -0
  316. package/packages/sideboard/dist/chunk-FW4363Y4.js.map +7 -0
  317. package/packages/sideboard/dist/chunk-QKYKEZU4.js +2 -0
  318. package/packages/sideboard/dist/chunk-QKYKEZU4.js.map +7 -0
  319. package/packages/sideboard/dist/document-list-panel-42LSXXCO.js +2 -0
  320. package/packages/sideboard/dist/document-list-panel-42LSXXCO.js.map +7 -0
  321. package/packages/sideboard/dist/index.css +2 -0
  322. package/packages/sideboard/dist/index.css.map +7 -0
  323. package/packages/sideboard/dist/index.js +2 -0
  324. package/packages/sideboard/dist/index.js.map +7 -0
  325. package/packages/sideboard/dist/sideboard/sideboard.js +2 -0
  326. package/packages/sideboard/dist/sideboard/sideboard.js.map +7 -0
  327. package/packages/sideboard/package.json +56 -0
  328. package/packages/theming/dist/active-theme-K27UXDBG.js +26 -0
  329. package/packages/theming/dist/active-theme-K27UXDBG.js.map +7 -0
  330. package/packages/theming/dist/chunk-K4OOO2TK.js +281 -0
  331. package/packages/theming/dist/chunk-K4OOO2TK.js.map +7 -0
  332. package/packages/theming/dist/chunk-RATW7VZI.js +11 -0
  333. package/packages/theming/dist/chunk-RATW7VZI.js.map +7 -0
  334. package/packages/theming/dist/chunk-U7SC4JPE.js +86 -0
  335. package/packages/theming/dist/chunk-U7SC4JPE.js.map +7 -0
  336. package/packages/theming/dist/codemirror-theme.js +2415 -0
  337. package/packages/theming/dist/codemirror-theme.js.map +7 -0
  338. package/packages/theming/dist/datatype-UUJVIZM7.js +16 -0
  339. package/packages/theming/dist/datatype-UUJVIZM7.js.map +7 -0
  340. package/packages/theming/dist/gloom-JYQPEOHI.css +102 -0
  341. package/packages/theming/dist/lychee-BMLMUNP6.css +114 -0
  342. package/packages/theming/dist/main.js +112 -0
  343. package/packages/theming/dist/main.js.map +7 -0
  344. package/packages/theming/dist/theme-RC7MV6WP.css +691 -0
  345. package/packages/theming/dist/theme-editor-datatype-CIXRKEFF.js +11 -0
  346. package/packages/theming/dist/theme-editor-datatype-CIXRKEFF.js.map +7 -0
  347. package/packages/theming/dist/theme-editor.js +576 -0
  348. package/packages/theming/dist/theme-editor.js.map +7 -0
  349. package/packages/theming/dist/theme-titlebar-P2CODQGF.js +21 -0
  350. package/packages/theming/dist/theme-titlebar-P2CODQGF.js.map +7 -0
  351. package/packages/theming/dist/theme-tray-5L2KGCGD.js +351 -0
  352. package/packages/theming/dist/theme-tray-5L2KGCGD.js.map +7 -0
  353. package/packages/theming/dist/tool.js +405 -0
  354. package/packages/theming/dist/tool.js.map +7 -0
  355. package/packages/theming/package.json +48 -0
  356. package/packages/threepane/dist/IsolatedDocumentArea-LFSDWMIY.js +2 -0
  357. package/packages/threepane/dist/IsolatedDocumentArea-LFSDWMIY.js.map +7 -0
  358. package/packages/threepane/dist/PatchworkFrame-JTNZ6365.js +2 -0
  359. package/packages/threepane/dist/PatchworkFrame-JTNZ6365.js.map +7 -0
  360. package/packages/threepane/dist/chunk-7YXO2YGV.js +2 -0
  361. package/packages/threepane/dist/chunk-7YXO2YGV.js.map +7 -0
  362. package/packages/threepane/dist/chunk-FOMAU6H2.js +972 -0
  363. package/packages/threepane/dist/chunk-FOMAU6H2.js.map +7 -0
  364. package/packages/threepane/dist/chunk-FW4363Y4.js +2 -0
  365. package/packages/threepane/dist/chunk-FW4363Y4.js.map +7 -0
  366. package/packages/threepane/dist/datatypes-FKBTWAO7.js +2 -0
  367. package/packages/threepane/dist/datatypes-FKBTWAO7.js.map +7 -0
  368. package/packages/threepane/dist/index.js +2 -0
  369. package/packages/threepane/dist/index.js.map +7 -0
  370. package/packages/threepane/package.json +42 -0
  371. package/packages/tldraw4/dist/chunk-IKZWERSR.js +38 -0
  372. package/packages/tldraw4/dist/chunk-IKZWERSR.js.map +7 -0
  373. package/packages/tldraw4/dist/chunk-VF5CY24G.js +140894 -0
  374. package/packages/tldraw4/dist/chunk-VF5CY24G.js.map +7 -0
  375. package/packages/tldraw4/dist/datatype.js +46 -0
  376. package/packages/tldraw4/dist/datatype.js.map +7 -0
  377. package/packages/tldraw4/dist/main.css +3202 -0
  378. package/packages/tldraw4/dist/main.css.map +7 -0
  379. package/packages/tldraw4/dist/main.js +42 -0
  380. package/packages/tldraw4/dist/main.js.map +7 -0
  381. package/packages/tldraw4/dist/tool.js +8767 -0
  382. package/packages/tldraw4/dist/tool.js.map +7 -0
  383. package/packages/tldraw4/package.json +62 -0
@@ -0,0 +1,3476 @@
1
+ import {
2
+ markdown
3
+ } from "../chunk-PPGERYN5.js";
4
+ import "../chunk-6JT2ASRP.js";
5
+ import "../chunk-46Z6CXSY.js";
6
+ import "../chunk-NEI7FGV4.js";
7
+ import {
8
+ completionKeymap
9
+ } from "../chunk-CSJO4DNL.js";
10
+ import "../chunk-MBTMKYFQ.js";
11
+ import {
12
+ HighlightStyle,
13
+ IndentContext,
14
+ LanguageDescription,
15
+ LanguageSupport,
16
+ NodeProp,
17
+ StreamLanguage,
18
+ foldKeymap,
19
+ getIndentUnit,
20
+ getIndentation,
21
+ indentOnInput,
22
+ indentString,
23
+ indentUnit,
24
+ matchBrackets,
25
+ syntaxHighlighting,
26
+ syntaxTree,
27
+ tags
28
+ } from "../chunk-MAW6NPUW.js";
29
+
30
+ // ../node_modules/.pnpm/@codemirror+commands@6.10.4/node_modules/@codemirror/commands/dist/index.js
31
+ import { Annotation, Facet, combineConfig, StateField, Transaction, ChangeSet, ChangeDesc, EditorSelection, StateEffect, Text, findClusterBreak, countColumn, CharCategory } from "@codemirror/state";
32
+ import { EditorView, Direction } from "@codemirror/view";
33
+ var toggleComment = (target) => {
34
+ let { state } = target, line = state.doc.lineAt(state.selection.main.from), config = getConfig(target.state, line.from);
35
+ return config.line ? toggleLineComment(target) : config.block ? toggleBlockCommentByLine(target) : false;
36
+ };
37
+ function command(f, option) {
38
+ return ({ state, dispatch }) => {
39
+ if (state.readOnly)
40
+ return false;
41
+ let tr = f(option, state);
42
+ if (!tr)
43
+ return false;
44
+ dispatch(state.update(tr));
45
+ return true;
46
+ };
47
+ }
48
+ var toggleLineComment = /* @__PURE__ */ command(
49
+ changeLineComment,
50
+ 0
51
+ /* CommentOption.Toggle */
52
+ );
53
+ var toggleBlockComment = /* @__PURE__ */ command(
54
+ changeBlockComment,
55
+ 0
56
+ /* CommentOption.Toggle */
57
+ );
58
+ var toggleBlockCommentByLine = /* @__PURE__ */ command(
59
+ (o, s) => changeBlockComment(o, s, selectedLineRanges(s)),
60
+ 0
61
+ /* CommentOption.Toggle */
62
+ );
63
+ function getConfig(state, pos) {
64
+ let data = state.languageDataAt("commentTokens", pos, 1);
65
+ return data.length ? data[0] : {};
66
+ }
67
+ var SearchMargin = 50;
68
+ function findBlockComment(state, { open, close }, from, to) {
69
+ let textBefore = state.sliceDoc(from - SearchMargin, from);
70
+ let textAfter = state.sliceDoc(to, to + SearchMargin);
71
+ let spaceBefore = /\s*$/.exec(textBefore)[0].length, spaceAfter = /^\s*/.exec(textAfter)[0].length;
72
+ let beforeOff = textBefore.length - spaceBefore;
73
+ if (textBefore.slice(beforeOff - open.length, beforeOff) == open && textAfter.slice(spaceAfter, spaceAfter + close.length) == close) {
74
+ return {
75
+ open: { pos: from - spaceBefore, margin: spaceBefore && 1 },
76
+ close: { pos: to + spaceAfter, margin: spaceAfter && 1 }
77
+ };
78
+ }
79
+ let startText, endText;
80
+ if (to - from <= 2 * SearchMargin) {
81
+ startText = endText = state.sliceDoc(from, to);
82
+ } else {
83
+ startText = state.sliceDoc(from, from + SearchMargin);
84
+ endText = state.sliceDoc(to - SearchMargin, to);
85
+ }
86
+ let startSpace = /^\s*/.exec(startText)[0].length, endSpace = /\s*$/.exec(endText)[0].length;
87
+ let endOff = endText.length - endSpace - close.length;
88
+ if (startText.slice(startSpace, startSpace + open.length) == open && endText.slice(endOff, endOff + close.length) == close) {
89
+ return {
90
+ open: {
91
+ pos: from + startSpace + open.length,
92
+ margin: /\s/.test(startText.charAt(startSpace + open.length)) ? 1 : 0
93
+ },
94
+ close: {
95
+ pos: to - endSpace - close.length,
96
+ margin: /\s/.test(endText.charAt(endOff - 1)) ? 1 : 0
97
+ }
98
+ };
99
+ }
100
+ return null;
101
+ }
102
+ function selectedLineRanges(state) {
103
+ let ranges = [];
104
+ for (let r of state.selection.ranges) {
105
+ let fromLine = state.doc.lineAt(r.from);
106
+ let toLine = r.to <= fromLine.to ? fromLine : state.doc.lineAt(r.to);
107
+ if (toLine.from > fromLine.from && toLine.from == r.to)
108
+ toLine = r.to == fromLine.to + 1 ? fromLine : state.doc.lineAt(r.to - 1);
109
+ let last = ranges.length - 1;
110
+ if (last >= 0 && ranges[last].to > fromLine.from)
111
+ ranges[last].to = toLine.to;
112
+ else
113
+ ranges.push({ from: fromLine.from + /^\s*/.exec(fromLine.text)[0].length, to: toLine.to });
114
+ }
115
+ return ranges;
116
+ }
117
+ function changeBlockComment(option, state, ranges = state.selection.ranges) {
118
+ let tokens = ranges.map((r) => getConfig(state, r.from).block);
119
+ if (!tokens.every((c) => c))
120
+ return null;
121
+ let comments = ranges.map((r, i) => findBlockComment(state, tokens[i], r.from, r.to));
122
+ if (option != 2 && !comments.every((c) => c)) {
123
+ return { changes: state.changes(ranges.map((range, i) => {
124
+ if (comments[i])
125
+ return [];
126
+ return [{ from: range.from, insert: tokens[i].open + " " }, { from: range.to, insert: " " + tokens[i].close }];
127
+ })) };
128
+ } else if (option != 1 && comments.some((c) => c)) {
129
+ let changes = [];
130
+ for (let i = 0, comment; i < comments.length; i++)
131
+ if (comment = comments[i]) {
132
+ let token = tokens[i], { open, close } = comment;
133
+ changes.push({ from: open.pos - token.open.length, to: open.pos + open.margin }, { from: close.pos - close.margin, to: close.pos + token.close.length });
134
+ }
135
+ return { changes };
136
+ }
137
+ return null;
138
+ }
139
+ function changeLineComment(option, state, ranges = state.selection.ranges) {
140
+ let lines = [];
141
+ let prevLine = -1;
142
+ ranges: for (let { from, to } of ranges) {
143
+ let startI = lines.length, minIndent = 1e9, token;
144
+ for (let pos = from; pos <= to; ) {
145
+ let line = state.doc.lineAt(pos);
146
+ if (token == void 0) {
147
+ token = getConfig(state, line.from).line;
148
+ if (!token)
149
+ continue ranges;
150
+ }
151
+ if (line.from > prevLine && (from == to || to > line.from)) {
152
+ prevLine = line.from;
153
+ let indent = /^\s*/.exec(line.text)[0].length;
154
+ let empty2 = indent == line.length;
155
+ let comment = line.text.slice(indent, indent + token.length) == token ? indent : -1;
156
+ if (indent < line.text.length && indent < minIndent)
157
+ minIndent = indent;
158
+ lines.push({ line, comment, token, indent, empty: empty2, single: false });
159
+ }
160
+ pos = line.to + 1;
161
+ }
162
+ if (minIndent < 1e9) {
163
+ for (let i = startI; i < lines.length; i++)
164
+ if (lines[i].indent < lines[i].line.text.length)
165
+ lines[i].indent = minIndent;
166
+ }
167
+ if (lines.length == startI + 1)
168
+ lines[startI].single = true;
169
+ }
170
+ if (option != 2 && lines.some((l) => l.comment < 0 && (!l.empty || l.single))) {
171
+ let changes = [];
172
+ for (let { line, token, indent, empty: empty2, single } of lines)
173
+ if (single || !empty2)
174
+ changes.push({ from: line.from + indent, insert: token + " " });
175
+ let changeSet = state.changes(changes);
176
+ return { changes: changeSet, selection: state.selection.map(changeSet, 1) };
177
+ } else if (option != 1 && lines.some((l) => l.comment >= 0)) {
178
+ let changes = [];
179
+ for (let { line, comment, token } of lines)
180
+ if (comment >= 0) {
181
+ let from = line.from + comment, to = from + token.length;
182
+ if (line.text[to - line.from] == " ")
183
+ to++;
184
+ changes.push({ from, to });
185
+ }
186
+ return { changes };
187
+ }
188
+ return null;
189
+ }
190
+ var fromHistory = /* @__PURE__ */ Annotation.define();
191
+ var isolateHistory = /* @__PURE__ */ Annotation.define();
192
+ var invertedEffects = /* @__PURE__ */ Facet.define();
193
+ var historyConfig = /* @__PURE__ */ Facet.define({
194
+ combine(configs) {
195
+ return combineConfig(configs, {
196
+ minDepth: 100,
197
+ newGroupDelay: 500,
198
+ joinToEvent: (_t, isAdjacent2) => isAdjacent2
199
+ }, {
200
+ minDepth: Math.max,
201
+ newGroupDelay: Math.min,
202
+ joinToEvent: (a, b) => (tr, adj) => a(tr, adj) || b(tr, adj)
203
+ });
204
+ }
205
+ });
206
+ var historyField_ = /* @__PURE__ */ StateField.define({
207
+ create() {
208
+ return HistoryState.empty;
209
+ },
210
+ update(state, tr) {
211
+ let config = tr.state.facet(historyConfig);
212
+ let fromHist = tr.annotation(fromHistory);
213
+ if (fromHist) {
214
+ let item = HistEvent.fromTransaction(tr, fromHist.selection), from = fromHist.side;
215
+ let other = from == 0 ? state.undone : state.done;
216
+ if (item)
217
+ other = updateBranch(other, other.length, config.minDepth, item);
218
+ else
219
+ other = addSelection(other, tr.startState.selection);
220
+ return new HistoryState(from == 0 ? fromHist.rest : other, from == 0 ? other : fromHist.rest);
221
+ }
222
+ let isolate = tr.annotation(isolateHistory);
223
+ if (isolate == "full" || isolate == "before")
224
+ state = state.isolate();
225
+ if (tr.annotation(Transaction.addToHistory) === false)
226
+ return !tr.changes.empty ? state.addMapping(tr.changes.desc) : state;
227
+ let event = HistEvent.fromTransaction(tr);
228
+ let time = tr.annotation(Transaction.time), userEvent = tr.annotation(Transaction.userEvent);
229
+ if (event)
230
+ state = state.addChanges(event, time, userEvent, config, tr);
231
+ else if (tr.selection)
232
+ state = state.addSelection(tr.startState.selection, time, userEvent, config.newGroupDelay);
233
+ if (isolate == "full" || isolate == "after")
234
+ state = state.isolate();
235
+ return state;
236
+ },
237
+ toJSON(value) {
238
+ return { done: value.done.map((e) => e.toJSON()), undone: value.undone.map((e) => e.toJSON()) };
239
+ },
240
+ fromJSON(json) {
241
+ return new HistoryState(json.done.map(HistEvent.fromJSON), json.undone.map(HistEvent.fromJSON));
242
+ }
243
+ });
244
+ function history(config = {}) {
245
+ return [
246
+ historyField_,
247
+ historyConfig.of(config),
248
+ EditorView.domEventHandlers({
249
+ beforeinput(e, view) {
250
+ let command2 = e.inputType == "historyUndo" ? undo : e.inputType == "historyRedo" ? redo : null;
251
+ if (!command2)
252
+ return false;
253
+ e.preventDefault();
254
+ return command2(view);
255
+ }
256
+ })
257
+ ];
258
+ }
259
+ function cmd(side, selection) {
260
+ return function({ state, dispatch }) {
261
+ if (!selection && state.readOnly)
262
+ return false;
263
+ let historyState = state.field(historyField_, false);
264
+ if (!historyState)
265
+ return false;
266
+ let tr = historyState.pop(side, state, selection);
267
+ if (!tr)
268
+ return false;
269
+ dispatch(tr);
270
+ return true;
271
+ };
272
+ }
273
+ var undo = /* @__PURE__ */ cmd(0, false);
274
+ var redo = /* @__PURE__ */ cmd(1, false);
275
+ var undoSelection = /* @__PURE__ */ cmd(0, true);
276
+ var redoSelection = /* @__PURE__ */ cmd(1, true);
277
+ var HistEvent = class _HistEvent {
278
+ constructor(changes, effects, mapped, startSelection, selectionsAfter) {
279
+ this.changes = changes;
280
+ this.effects = effects;
281
+ this.mapped = mapped;
282
+ this.startSelection = startSelection;
283
+ this.selectionsAfter = selectionsAfter;
284
+ }
285
+ setSelAfter(after) {
286
+ return new _HistEvent(this.changes, this.effects, this.mapped, this.startSelection, after);
287
+ }
288
+ toJSON() {
289
+ var _a, _b, _c;
290
+ return {
291
+ changes: (_a = this.changes) === null || _a === void 0 ? void 0 : _a.toJSON(),
292
+ mapped: (_b = this.mapped) === null || _b === void 0 ? void 0 : _b.toJSON(),
293
+ startSelection: (_c = this.startSelection) === null || _c === void 0 ? void 0 : _c.toJSON(),
294
+ selectionsAfter: this.selectionsAfter.map((s) => s.toJSON())
295
+ };
296
+ }
297
+ static fromJSON(json) {
298
+ return new _HistEvent(json.changes && ChangeSet.fromJSON(json.changes), [], json.mapped && ChangeDesc.fromJSON(json.mapped), json.startSelection && EditorSelection.fromJSON(json.startSelection), json.selectionsAfter.map(EditorSelection.fromJSON));
299
+ }
300
+ // This does not check `addToHistory` and such, it assumes the
301
+ // transaction needs to be converted to an item. Returns null when
302
+ // there are no changes or effects in the transaction.
303
+ static fromTransaction(tr, selection) {
304
+ let effects = none;
305
+ for (let invert of tr.startState.facet(invertedEffects)) {
306
+ let result = invert(tr);
307
+ if (result.length)
308
+ effects = effects.concat(result);
309
+ }
310
+ if (!effects.length && tr.changes.empty)
311
+ return null;
312
+ return new _HistEvent(tr.changes.invert(tr.startState.doc), effects, void 0, selection || tr.startState.selection, none);
313
+ }
314
+ static selection(selections) {
315
+ return new _HistEvent(void 0, none, void 0, void 0, selections);
316
+ }
317
+ };
318
+ function updateBranch(branch, to, maxLen, newEvent) {
319
+ let start = to + 1 > maxLen + 20 ? to - maxLen - 1 : 0;
320
+ let newBranch = branch.slice(start, to);
321
+ newBranch.push(newEvent);
322
+ return newBranch;
323
+ }
324
+ function isAdjacent(a, b) {
325
+ let ranges = [], isAdjacent2 = false;
326
+ a.iterChangedRanges((f, t) => ranges.push(f, t));
327
+ b.iterChangedRanges((_f, _t, f, t) => {
328
+ for (let i = 0; i < ranges.length; ) {
329
+ let from = ranges[i++], to = ranges[i++];
330
+ if (t >= from && f <= to)
331
+ isAdjacent2 = true;
332
+ }
333
+ });
334
+ return isAdjacent2;
335
+ }
336
+ function eqSelectionShape(a, b) {
337
+ return a.ranges.length == b.ranges.length && a.ranges.filter((r, i) => r.empty != b.ranges[i].empty).length === 0;
338
+ }
339
+ function conc(a, b) {
340
+ return !a.length ? b : !b.length ? a : a.concat(b);
341
+ }
342
+ var none = [];
343
+ var MaxSelectionsPerEvent = 200;
344
+ function addSelection(branch, selection) {
345
+ if (!branch.length) {
346
+ return [HistEvent.selection([selection])];
347
+ } else {
348
+ let lastEvent = branch[branch.length - 1];
349
+ let sels = lastEvent.selectionsAfter.slice(Math.max(0, lastEvent.selectionsAfter.length - MaxSelectionsPerEvent));
350
+ if (sels.length && sels[sels.length - 1].eq(selection))
351
+ return branch;
352
+ sels.push(selection);
353
+ return updateBranch(branch, branch.length - 1, 1e9, lastEvent.setSelAfter(sels));
354
+ }
355
+ }
356
+ function popSelection(branch) {
357
+ let last = branch[branch.length - 1];
358
+ let newBranch = branch.slice();
359
+ newBranch[branch.length - 1] = last.setSelAfter(last.selectionsAfter.slice(0, last.selectionsAfter.length - 1));
360
+ return newBranch;
361
+ }
362
+ function addMappingToBranch(branch, mapping) {
363
+ if (!branch.length)
364
+ return branch;
365
+ let length = branch.length, selections = none;
366
+ while (length) {
367
+ let event = mapEvent(branch[length - 1], mapping, selections);
368
+ if (event.changes && !event.changes.empty || event.effects.length) {
369
+ let result = branch.slice(0, length);
370
+ result[length - 1] = event;
371
+ return result;
372
+ } else {
373
+ mapping = event.mapped;
374
+ length--;
375
+ selections = event.selectionsAfter;
376
+ }
377
+ }
378
+ return selections.length ? [HistEvent.selection(selections)] : none;
379
+ }
380
+ function mapEvent(event, mapping, extraSelections) {
381
+ let selections = conc(event.selectionsAfter.length ? event.selectionsAfter.map((s) => s.map(mapping)) : none, extraSelections);
382
+ if (!event.changes)
383
+ return HistEvent.selection(selections);
384
+ let mappedChanges = event.changes.map(mapping), before = mapping.mapDesc(event.changes, true);
385
+ let fullMapping = event.mapped ? event.mapped.composeDesc(before) : before;
386
+ return new HistEvent(mappedChanges, StateEffect.mapEffects(event.effects, mapping), fullMapping, event.startSelection.map(before), selections);
387
+ }
388
+ var joinableUserEvent = /^(input\.type|delete)($|\.)/;
389
+ var HistoryState = class _HistoryState {
390
+ constructor(done, undone, prevTime = 0, prevUserEvent = void 0) {
391
+ this.done = done;
392
+ this.undone = undone;
393
+ this.prevTime = prevTime;
394
+ this.prevUserEvent = prevUserEvent;
395
+ }
396
+ isolate() {
397
+ return this.prevTime ? new _HistoryState(this.done, this.undone) : this;
398
+ }
399
+ addChanges(event, time, userEvent, config, tr) {
400
+ let done = this.done, lastEvent = done[done.length - 1];
401
+ if (lastEvent && lastEvent.changes && !lastEvent.changes.empty && event.changes && (!userEvent || joinableUserEvent.test(userEvent)) && (!lastEvent.selectionsAfter.length && time - this.prevTime < config.newGroupDelay && config.joinToEvent(tr, isAdjacent(lastEvent.changes, event.changes)) || // For compose (but not compose.start) events, always join with previous event
402
+ userEvent == "input.type.compose")) {
403
+ done = updateBranch(done, done.length - 1, config.minDepth, new HistEvent(event.changes.compose(lastEvent.changes), conc(StateEffect.mapEffects(event.effects, lastEvent.changes), lastEvent.effects), lastEvent.mapped, lastEvent.startSelection, none));
404
+ } else {
405
+ done = updateBranch(done, done.length, config.minDepth, event);
406
+ }
407
+ return new _HistoryState(done, none, time, userEvent);
408
+ }
409
+ addSelection(selection, time, userEvent, newGroupDelay) {
410
+ let last = this.done.length ? this.done[this.done.length - 1].selectionsAfter : none;
411
+ if (last.length > 0 && time - this.prevTime < newGroupDelay && userEvent == this.prevUserEvent && userEvent && /^select($|\.)/.test(userEvent) && eqSelectionShape(last[last.length - 1], selection))
412
+ return this;
413
+ return new _HistoryState(addSelection(this.done, selection), this.undone, time, userEvent);
414
+ }
415
+ addMapping(mapping) {
416
+ return new _HistoryState(addMappingToBranch(this.done, mapping), addMappingToBranch(this.undone, mapping), this.prevTime, this.prevUserEvent);
417
+ }
418
+ pop(side, state, onlySelection) {
419
+ let branch = side == 0 ? this.done : this.undone;
420
+ if (branch.length == 0)
421
+ return null;
422
+ let event = branch[branch.length - 1], selection = event.selectionsAfter[0] || (event.startSelection ? event.startSelection.map(event.changes.invertedDesc, 1) : state.selection);
423
+ if (onlySelection && event.selectionsAfter.length) {
424
+ return state.update({
425
+ selection: event.selectionsAfter[event.selectionsAfter.length - 1],
426
+ annotations: fromHistory.of({ side, rest: popSelection(branch), selection }),
427
+ userEvent: side == 0 ? "select.undo" : "select.redo",
428
+ scrollIntoView: true
429
+ });
430
+ } else if (!event.changes) {
431
+ return null;
432
+ } else {
433
+ let rest = branch.length == 1 ? none : branch.slice(0, branch.length - 1);
434
+ if (event.mapped)
435
+ rest = addMappingToBranch(rest, event.mapped);
436
+ return state.update({
437
+ changes: event.changes,
438
+ selection: event.startSelection,
439
+ effects: event.effects,
440
+ annotations: fromHistory.of({ side, rest, selection }),
441
+ filter: false,
442
+ userEvent: side == 0 ? "undo" : "redo",
443
+ scrollIntoView: true
444
+ });
445
+ }
446
+ }
447
+ };
448
+ HistoryState.empty = /* @__PURE__ */ new HistoryState(none, none);
449
+ var historyKeymap = [
450
+ { key: "Mod-z", run: undo, preventDefault: true },
451
+ { key: "Mod-y", mac: "Mod-Shift-z", run: redo, preventDefault: true },
452
+ { linux: "Ctrl-Shift-z", run: redo, preventDefault: true },
453
+ { key: "Mod-u", run: undoSelection, preventDefault: true },
454
+ { key: "Alt-u", mac: "Mod-Shift-u", run: redoSelection, preventDefault: true }
455
+ ];
456
+ function updateSel(sel, by) {
457
+ return EditorSelection.create(sel.ranges.map(by), sel.mainIndex);
458
+ }
459
+ function setSel(state, selection) {
460
+ return state.update({ selection, scrollIntoView: true, userEvent: "select" });
461
+ }
462
+ function moveSel({ state, dispatch }, how) {
463
+ let selection = updateSel(state.selection, how);
464
+ if (selection.eq(state.selection, true))
465
+ return false;
466
+ dispatch(setSel(state, selection));
467
+ return true;
468
+ }
469
+ function rangeEnd(range, forward) {
470
+ return EditorSelection.cursor(forward ? range.to : range.from);
471
+ }
472
+ function cursorByChar(view, forward) {
473
+ return moveSel(view, (range) => range.empty ? view.moveByChar(range, forward) : rangeEnd(range, forward));
474
+ }
475
+ function ltrAtCursor(view) {
476
+ return view.textDirectionAt(view.state.selection.main.head) == Direction.LTR;
477
+ }
478
+ var cursorCharLeft = (view) => cursorByChar(view, !ltrAtCursor(view));
479
+ var cursorCharRight = (view) => cursorByChar(view, ltrAtCursor(view));
480
+ function cursorByGroup(view, forward) {
481
+ return moveSel(view, (range) => range.empty ? view.moveByGroup(range, forward) : rangeEnd(range, forward));
482
+ }
483
+ var cursorGroupLeft = (view) => cursorByGroup(view, !ltrAtCursor(view));
484
+ var cursorGroupRight = (view) => cursorByGroup(view, ltrAtCursor(view));
485
+ var segmenter = typeof Intl != "undefined" && Intl.Segmenter ? /* @__PURE__ */ new Intl.Segmenter(void 0, { granularity: "word" }) : null;
486
+ function interestingNode(state, node, bracketProp) {
487
+ if (node.type.prop(bracketProp))
488
+ return true;
489
+ let len = node.to - node.from;
490
+ return len && (len > 2 || /[^\s,.;:]/.test(state.sliceDoc(node.from, node.to))) || node.firstChild;
491
+ }
492
+ function moveBySyntax(state, start, forward) {
493
+ let pos = syntaxTree(state).resolveInner(start.head);
494
+ let bracketProp = forward ? NodeProp.closedBy : NodeProp.openedBy;
495
+ for (let at = start.head; ; ) {
496
+ let next = forward ? pos.childAfter(at) : pos.childBefore(at);
497
+ if (!next)
498
+ break;
499
+ if (interestingNode(state, next, bracketProp))
500
+ pos = next;
501
+ else
502
+ at = forward ? next.to : next.from;
503
+ }
504
+ let bracket = pos.type.prop(bracketProp), match, newPos;
505
+ if (bracket && (match = forward ? matchBrackets(state, pos.from, 1) : matchBrackets(state, pos.to, -1)) && match.matched)
506
+ newPos = forward ? match.end.to : match.end.from;
507
+ else
508
+ newPos = forward ? pos.to : pos.from;
509
+ return EditorSelection.cursor(newPos, forward ? -1 : 1);
510
+ }
511
+ var cursorSyntaxLeft = (view) => moveSel(view, (range) => moveBySyntax(view.state, range, !ltrAtCursor(view)));
512
+ var cursorSyntaxRight = (view) => moveSel(view, (range) => moveBySyntax(view.state, range, ltrAtCursor(view)));
513
+ function cursorByLine(view, forward) {
514
+ return moveSel(view, (range) => {
515
+ if (!range.empty)
516
+ return rangeEnd(range, forward);
517
+ let moved = view.moveVertically(range, forward);
518
+ return moved.head != range.head ? moved : view.moveToLineBoundary(range, forward);
519
+ });
520
+ }
521
+ var cursorLineUp = (view) => cursorByLine(view, false);
522
+ var cursorLineDown = (view) => cursorByLine(view, true);
523
+ function pageInfo(view) {
524
+ let selfScroll = view.scrollDOM.clientHeight < view.scrollDOM.scrollHeight - 2;
525
+ let marginTop = 0, marginBottom = 0, height;
526
+ if (selfScroll) {
527
+ for (let source of view.state.facet(EditorView.scrollMargins)) {
528
+ let margins = source(view);
529
+ if (margins === null || margins === void 0 ? void 0 : margins.top)
530
+ marginTop = Math.max(margins === null || margins === void 0 ? void 0 : margins.top, marginTop);
531
+ if (margins === null || margins === void 0 ? void 0 : margins.bottom)
532
+ marginBottom = Math.max(margins === null || margins === void 0 ? void 0 : margins.bottom, marginBottom);
533
+ }
534
+ height = view.scrollDOM.clientHeight - marginTop - marginBottom;
535
+ } else {
536
+ height = (view.dom.ownerDocument.defaultView || window).innerHeight;
537
+ }
538
+ return {
539
+ marginTop,
540
+ marginBottom,
541
+ selfScroll,
542
+ height: Math.max(view.defaultLineHeight, height - 5)
543
+ };
544
+ }
545
+ function cursorByPage(view, forward) {
546
+ let page = pageInfo(view);
547
+ let { state } = view, selection = updateSel(state.selection, (range) => {
548
+ return range.empty ? view.moveVertically(range, forward, page.height) : rangeEnd(range, forward);
549
+ });
550
+ if (selection.eq(state.selection))
551
+ return false;
552
+ let effect;
553
+ if (page.selfScroll) {
554
+ let startPos = view.coordsAtPos(state.selection.main.head);
555
+ let scrollRect = view.scrollDOM.getBoundingClientRect();
556
+ let scrollTop = scrollRect.top + page.marginTop, scrollBottom = scrollRect.bottom - page.marginBottom;
557
+ if (startPos && startPos.top > scrollTop && startPos.bottom < scrollBottom)
558
+ effect = EditorView.scrollIntoView(selection.main.head, { y: "start", yMargin: startPos.top - scrollTop });
559
+ }
560
+ view.dispatch(setSel(state, selection), { effects: effect });
561
+ return true;
562
+ }
563
+ var cursorPageUp = (view) => cursorByPage(view, false);
564
+ var cursorPageDown = (view) => cursorByPage(view, true);
565
+ function moveByLineBoundary(view, start, forward) {
566
+ let line = view.lineBlockAt(start.head), moved = view.moveToLineBoundary(start, forward);
567
+ if (moved.head == start.head && moved.head != (forward ? line.to : line.from))
568
+ moved = view.moveToLineBoundary(start, forward, false);
569
+ if (!forward && moved.head == line.from && line.length) {
570
+ let space = /^\s*/.exec(view.state.sliceDoc(line.from, Math.min(line.from + 100, line.to)))[0].length;
571
+ if (space && start.head != line.from + space)
572
+ moved = EditorSelection.cursor(line.from + space);
573
+ }
574
+ return moved;
575
+ }
576
+ var cursorLineBoundaryForward = (view) => moveSel(view, (range) => moveByLineBoundary(view, range, true));
577
+ var cursorLineBoundaryBackward = (view) => moveSel(view, (range) => moveByLineBoundary(view, range, false));
578
+ var cursorLineBoundaryLeft = (view) => moveSel(view, (range) => moveByLineBoundary(view, range, !ltrAtCursor(view)));
579
+ var cursorLineBoundaryRight = (view) => moveSel(view, (range) => moveByLineBoundary(view, range, ltrAtCursor(view)));
580
+ var cursorLineStart = (view) => moveSel(view, (range) => EditorSelection.cursor(view.lineBlockAt(range.head).from, 1));
581
+ var cursorLineEnd = (view) => moveSel(view, (range) => EditorSelection.cursor(view.lineBlockAt(range.head).to, -1));
582
+ function toMatchingBracket(state, dispatch, extend) {
583
+ let found = false, selection = updateSel(state.selection, (range) => {
584
+ let matching = matchBrackets(state, range.head, -1) || matchBrackets(state, range.head, 1) || range.head > 0 && matchBrackets(state, range.head - 1, 1) || range.head < state.doc.length && matchBrackets(state, range.head + 1, -1);
585
+ if (!matching || !matching.end)
586
+ return range;
587
+ found = true;
588
+ let head = matching.start.from == range.head ? matching.end.to : matching.end.from;
589
+ return extend ? EditorSelection.range(range.anchor, head) : EditorSelection.cursor(head);
590
+ });
591
+ if (!found)
592
+ return false;
593
+ dispatch(setSel(state, selection));
594
+ return true;
595
+ }
596
+ var cursorMatchingBracket = ({ state, dispatch }) => toMatchingBracket(state, dispatch, false);
597
+ function extendSel(target, forward, how) {
598
+ let selection = updateSel(target.state.selection, (range) => {
599
+ if (range.undirectional && range.head >= range.anchor != forward)
600
+ range = EditorSelection.range(range.head, range.anchor);
601
+ let head = how(range);
602
+ return EditorSelection.range(range.anchor, head.head, head.goalColumn, head.bidiLevel || void 0, head.assoc);
603
+ });
604
+ if (selection.eq(target.state.selection))
605
+ return false;
606
+ target.dispatch(setSel(target.state, selection));
607
+ return true;
608
+ }
609
+ function selectByChar(view, forward) {
610
+ return extendSel(view, forward, (range) => view.moveByChar(range, forward));
611
+ }
612
+ var selectCharLeft = (view) => selectByChar(view, !ltrAtCursor(view));
613
+ var selectCharRight = (view) => selectByChar(view, ltrAtCursor(view));
614
+ function selectByGroup(view, forward) {
615
+ return extendSel(view, forward, (range) => view.moveByGroup(range, forward));
616
+ }
617
+ var selectGroupLeft = (view) => selectByGroup(view, !ltrAtCursor(view));
618
+ var selectGroupRight = (view) => selectByGroup(view, ltrAtCursor(view));
619
+ var selectSyntaxLeft = (view) => {
620
+ let forward = !ltrAtCursor(view);
621
+ return extendSel(view, forward, (range) => moveBySyntax(view.state, range, forward));
622
+ };
623
+ var selectSyntaxRight = (view) => {
624
+ let forward = ltrAtCursor(view);
625
+ return extendSel(view, forward, (range) => moveBySyntax(view.state, range, forward));
626
+ };
627
+ function selectByLine(view, forward) {
628
+ return extendSel(view, forward, (range) => view.moveVertically(range, forward));
629
+ }
630
+ var selectLineUp = (view) => selectByLine(view, false);
631
+ var selectLineDown = (view) => selectByLine(view, true);
632
+ function selectByPage(view, forward) {
633
+ return extendSel(view, forward, (range) => view.moveVertically(range, forward, pageInfo(view).height));
634
+ }
635
+ var selectPageUp = (view) => selectByPage(view, false);
636
+ var selectPageDown = (view) => selectByPage(view, true);
637
+ var selectLineBoundaryForward = (view) => extendSel(view, true, (range) => moveByLineBoundary(view, range, true));
638
+ var selectLineBoundaryBackward = (view) => extendSel(view, false, (range) => moveByLineBoundary(view, range, false));
639
+ var selectLineBoundaryLeft = (view) => {
640
+ let forward = !ltrAtCursor(view);
641
+ return extendSel(view, forward, (range) => moveByLineBoundary(view, range, forward));
642
+ };
643
+ var selectLineBoundaryRight = (view) => {
644
+ let forward = ltrAtCursor(view);
645
+ return extendSel(view, forward, (range) => moveByLineBoundary(view, range, forward));
646
+ };
647
+ var selectLineStart = (view) => extendSel(view, false, (range) => EditorSelection.cursor(view.lineBlockAt(range.head).from));
648
+ var selectLineEnd = (view) => extendSel(view, true, (range) => EditorSelection.cursor(view.lineBlockAt(range.head).to));
649
+ var cursorDocStart = ({ state, dispatch }) => {
650
+ dispatch(setSel(state, { anchor: 0 }));
651
+ return true;
652
+ };
653
+ var cursorDocEnd = ({ state, dispatch }) => {
654
+ dispatch(setSel(state, { anchor: state.doc.length }));
655
+ return true;
656
+ };
657
+ var selectDocStart = ({ state, dispatch }) => {
658
+ dispatch(setSel(state, { anchor: state.selection.main.anchor, head: 0 }));
659
+ return true;
660
+ };
661
+ var selectDocEnd = ({ state, dispatch }) => {
662
+ dispatch(setSel(state, { anchor: state.selection.main.anchor, head: state.doc.length }));
663
+ return true;
664
+ };
665
+ var selectAll = ({ state, dispatch }) => {
666
+ dispatch(state.update({ selection: { anchor: 0, head: state.doc.length }, userEvent: "select" }));
667
+ return true;
668
+ };
669
+ var selectLine = ({ state, dispatch }) => {
670
+ let ranges = selectedLineBlocks(state).map(({ from, to }) => EditorSelection.range(from, Math.min(to + 1, state.doc.length)));
671
+ dispatch(state.update({ selection: EditorSelection.create(ranges), userEvent: "select" }));
672
+ return true;
673
+ };
674
+ var selectParentSyntax = ({ state, dispatch }) => {
675
+ let selection = updateSel(state.selection, (range) => {
676
+ let tree = syntaxTree(state), stack = tree.resolveStack(range.from, 1);
677
+ if (range.empty) {
678
+ let stackBefore = tree.resolveStack(range.from, -1);
679
+ if (stackBefore.node.from >= stack.node.from && stackBefore.node.to <= stack.node.to)
680
+ stack = stackBefore;
681
+ }
682
+ for (let cur = stack; cur; cur = cur.next) {
683
+ let { node } = cur;
684
+ if ((node.from < range.from && node.to >= range.to || node.to > range.to && node.from <= range.from) && cur.next)
685
+ return EditorSelection.range(node.to, node.from);
686
+ }
687
+ return range;
688
+ });
689
+ if (selection.eq(state.selection))
690
+ return false;
691
+ dispatch(setSel(state, selection));
692
+ return true;
693
+ };
694
+ function addCursorVertically(view, forward) {
695
+ let { state } = view, sel = state.selection, ranges = state.selection.ranges.slice();
696
+ for (let range of state.selection.ranges) {
697
+ let line = state.doc.lineAt(range.head);
698
+ if (forward ? line.to < view.state.doc.length : line.from > 0)
699
+ for (let cur = range; ; ) {
700
+ let next = view.moveVertically(cur, forward);
701
+ if (next.head < line.from || next.head > line.to) {
702
+ if (!ranges.some((r) => r.head == next.head))
703
+ ranges.push(next);
704
+ break;
705
+ } else if (next.head == cur.head) {
706
+ break;
707
+ } else {
708
+ cur = next;
709
+ }
710
+ }
711
+ }
712
+ if (ranges.length == sel.ranges.length)
713
+ return false;
714
+ view.dispatch(setSel(state, EditorSelection.create(ranges, ranges.length - 1)));
715
+ return true;
716
+ }
717
+ var addCursorAbove = (view) => addCursorVertically(view, false);
718
+ var addCursorBelow = (view) => addCursorVertically(view, true);
719
+ var simplifySelection = ({ state, dispatch }) => {
720
+ let cur = state.selection, selection = null;
721
+ if (cur.ranges.length > 1)
722
+ selection = EditorSelection.create([cur.main]);
723
+ else if (!cur.main.empty)
724
+ selection = EditorSelection.create([EditorSelection.cursor(cur.main.head)]);
725
+ if (!selection)
726
+ return false;
727
+ dispatch(setSel(state, selection));
728
+ return true;
729
+ };
730
+ function deleteBy(target, by) {
731
+ if (target.state.readOnly)
732
+ return false;
733
+ let event = "delete.selection", { state } = target;
734
+ let changes = state.changeByRange((range) => {
735
+ let { from, to } = range;
736
+ if (from == to) {
737
+ let towards = by(range);
738
+ if (towards < from) {
739
+ event = "delete.backward";
740
+ towards = skipAtomic(target, towards, false);
741
+ } else if (towards > from) {
742
+ event = "delete.forward";
743
+ towards = skipAtomic(target, towards, true);
744
+ }
745
+ from = Math.min(from, towards);
746
+ to = Math.max(to, towards);
747
+ } else {
748
+ from = skipAtomic(target, from, false);
749
+ to = skipAtomic(target, to, true);
750
+ }
751
+ return from == to ? { range } : { changes: { from, to }, range: EditorSelection.cursor(from, from < range.head ? -1 : 1) };
752
+ });
753
+ if (changes.changes.empty)
754
+ return false;
755
+ target.dispatch(state.update(changes, {
756
+ scrollIntoView: true,
757
+ userEvent: event,
758
+ effects: event == "delete.selection" ? EditorView.announce.of(state.phrase("Selection deleted")) : void 0
759
+ }));
760
+ return true;
761
+ }
762
+ function skipAtomic(target, pos, forward) {
763
+ if (target instanceof EditorView)
764
+ for (let ranges of target.state.facet(EditorView.atomicRanges).map((f) => f(target)))
765
+ ranges.between(pos, pos, (from, to) => {
766
+ if (from < pos && to > pos)
767
+ pos = forward ? to : from;
768
+ });
769
+ return pos;
770
+ }
771
+ var deleteByChar = (target, forward, byIndentUnit) => deleteBy(target, (range) => {
772
+ let pos = range.from, { state } = target, line = state.doc.lineAt(pos), before, targetPos;
773
+ if (byIndentUnit && !forward && pos > line.from && pos < line.from + 200 && !/[^ \t]/.test(before = line.text.slice(0, pos - line.from))) {
774
+ if (before[before.length - 1] == " ")
775
+ return pos - 1;
776
+ let col = countColumn(before, state.tabSize), drop = col % getIndentUnit(state) || getIndentUnit(state);
777
+ for (let i = 0; i < drop && before[before.length - 1 - i] == " "; i++)
778
+ pos--;
779
+ targetPos = pos;
780
+ } else {
781
+ targetPos = findClusterBreak(line.text, pos - line.from, forward, forward) + line.from;
782
+ if (targetPos == pos && line.number != (forward ? state.doc.lines : 1))
783
+ targetPos += forward ? 1 : -1;
784
+ else if (!forward && /[\ufe00-\ufe0f]/.test(line.text.slice(targetPos - line.from, pos - line.from)))
785
+ targetPos = findClusterBreak(line.text, targetPos - line.from, false, false) + line.from;
786
+ }
787
+ return targetPos;
788
+ });
789
+ var deleteCharBackward = (view) => deleteByChar(view, false, true);
790
+ var deleteCharForward = (view) => deleteByChar(view, true, false);
791
+ var deleteByGroup = (target, forward) => deleteBy(target, (range) => {
792
+ let pos = range.head, { state } = target, line = state.doc.lineAt(pos);
793
+ let categorize = state.charCategorizer(pos);
794
+ for (let cat = null; ; ) {
795
+ if (pos == (forward ? line.to : line.from)) {
796
+ if (pos == range.head && line.number != (forward ? state.doc.lines : 1))
797
+ pos += forward ? 1 : -1;
798
+ break;
799
+ }
800
+ let next = findClusterBreak(line.text, pos - line.from, forward) + line.from;
801
+ let nextChar = line.text.slice(Math.min(pos, next) - line.from, Math.max(pos, next) - line.from);
802
+ let nextCat = categorize(nextChar);
803
+ if (cat != null && nextCat != cat)
804
+ break;
805
+ if (nextChar != " " || pos != range.head)
806
+ cat = nextCat;
807
+ pos = next;
808
+ }
809
+ return pos;
810
+ });
811
+ var deleteGroupBackward = (target) => deleteByGroup(target, false);
812
+ var deleteGroupForward = (target) => deleteByGroup(target, true);
813
+ var deleteToLineEnd = (view) => deleteBy(view, (range) => {
814
+ let lineEnd = view.lineBlockAt(range.head).to;
815
+ return range.head < lineEnd ? lineEnd : Math.min(view.state.doc.length, range.head + 1);
816
+ });
817
+ var deleteLineBoundaryBackward = (view) => deleteBy(view, (range) => {
818
+ let lineStart = view.moveToLineBoundary(range, false).head;
819
+ return range.head > lineStart ? lineStart : Math.max(0, range.head - 1);
820
+ });
821
+ var deleteLineBoundaryForward = (view) => deleteBy(view, (range) => {
822
+ let lineStart = view.moveToLineBoundary(range, true).head;
823
+ return range.head < lineStart ? lineStart : Math.min(view.state.doc.length, range.head + 1);
824
+ });
825
+ var splitLine = ({ state, dispatch }) => {
826
+ if (state.readOnly)
827
+ return false;
828
+ let changes = state.changeByRange((range) => {
829
+ return {
830
+ changes: { from: range.from, to: range.to, insert: Text.of(["", ""]) },
831
+ range: EditorSelection.cursor(range.from)
832
+ };
833
+ });
834
+ dispatch(state.update(changes, { scrollIntoView: true, userEvent: "input" }));
835
+ return true;
836
+ };
837
+ var transposeChars = ({ state, dispatch }) => {
838
+ if (state.readOnly)
839
+ return false;
840
+ let changes = state.changeByRange((range) => {
841
+ if (!range.empty || range.from == 0 || range.from == state.doc.length)
842
+ return { range };
843
+ let pos = range.from, line = state.doc.lineAt(pos);
844
+ let from = pos == line.from ? pos - 1 : findClusterBreak(line.text, pos - line.from, false) + line.from;
845
+ let to = pos == line.to ? pos + 1 : findClusterBreak(line.text, pos - line.from, true) + line.from;
846
+ return {
847
+ changes: { from, to, insert: state.doc.slice(pos, to).append(state.doc.slice(from, pos)) },
848
+ range: EditorSelection.cursor(to)
849
+ };
850
+ });
851
+ if (changes.changes.empty)
852
+ return false;
853
+ dispatch(state.update(changes, { scrollIntoView: true, userEvent: "move.character" }));
854
+ return true;
855
+ };
856
+ function selectedLineBlocks(state) {
857
+ let blocks = [], upto = -1;
858
+ for (let range of state.selection.ranges) {
859
+ let startLine = state.doc.lineAt(range.from), endLine = state.doc.lineAt(range.to);
860
+ if (!range.empty && range.to == endLine.from)
861
+ endLine = state.doc.lineAt(range.to - 1);
862
+ if (upto >= startLine.number) {
863
+ let prev = blocks[blocks.length - 1];
864
+ prev.to = endLine.to;
865
+ prev.ranges.push(range);
866
+ } else {
867
+ blocks.push({ from: startLine.from, to: endLine.to, ranges: [range] });
868
+ }
869
+ upto = endLine.number + 1;
870
+ }
871
+ return blocks;
872
+ }
873
+ function moveLine(state, dispatch, forward) {
874
+ if (state.readOnly)
875
+ return false;
876
+ let changes = [], ranges = [];
877
+ for (let block of selectedLineBlocks(state)) {
878
+ if (forward ? block.to == state.doc.length : block.from == 0)
879
+ continue;
880
+ let nextLine = state.doc.lineAt(forward ? block.to + 1 : block.from - 1);
881
+ let size = nextLine.length + 1;
882
+ if (forward) {
883
+ changes.push({ from: block.to, to: nextLine.to }, { from: block.from, insert: nextLine.text + state.lineBreak });
884
+ for (let r of block.ranges)
885
+ ranges.push(EditorSelection.range(Math.min(state.doc.length, r.anchor + size), Math.min(state.doc.length, r.head + size)));
886
+ } else {
887
+ changes.push({ from: nextLine.from, to: block.from }, { from: block.to, insert: state.lineBreak + nextLine.text });
888
+ for (let r of block.ranges)
889
+ ranges.push(EditorSelection.range(r.anchor - size, r.head - size));
890
+ }
891
+ }
892
+ if (!changes.length)
893
+ return false;
894
+ dispatch(state.update({
895
+ changes,
896
+ scrollIntoView: true,
897
+ selection: EditorSelection.create(ranges, state.selection.mainIndex),
898
+ userEvent: "move.line"
899
+ }));
900
+ return true;
901
+ }
902
+ var moveLineUp = ({ state, dispatch }) => moveLine(state, dispatch, false);
903
+ var moveLineDown = ({ state, dispatch }) => moveLine(state, dispatch, true);
904
+ function copyLine(state, dispatch, forward) {
905
+ if (state.readOnly)
906
+ return false;
907
+ let changes = [];
908
+ for (let block of selectedLineBlocks(state)) {
909
+ if (forward)
910
+ changes.push({ from: block.from, insert: state.doc.slice(block.from, block.to) + state.lineBreak });
911
+ else
912
+ changes.push({ from: block.to, insert: state.lineBreak + state.doc.slice(block.from, block.to) });
913
+ }
914
+ let changeSet = state.changes(changes);
915
+ dispatch(state.update({
916
+ changes: changeSet,
917
+ selection: state.selection.map(changeSet, forward ? 1 : -1),
918
+ scrollIntoView: true,
919
+ userEvent: "input.copyline"
920
+ }));
921
+ return true;
922
+ }
923
+ var copyLineUp = ({ state, dispatch }) => copyLine(state, dispatch, false);
924
+ var copyLineDown = ({ state, dispatch }) => copyLine(state, dispatch, true);
925
+ var deleteLine = (view) => {
926
+ if (view.state.readOnly)
927
+ return false;
928
+ let { state } = view, changes = state.changes(selectedLineBlocks(state).map(({ from, to }) => {
929
+ if (from > 0)
930
+ from--;
931
+ else if (to < state.doc.length)
932
+ to++;
933
+ return { from, to };
934
+ }));
935
+ let selection = updateSel(state.selection, (range) => {
936
+ let dist = void 0;
937
+ if (view.lineWrapping) {
938
+ let block = view.lineBlockAt(range.head), pos = view.coordsAtPos(range.head, range.assoc || 1);
939
+ if (pos)
940
+ dist = block.bottom + view.documentTop - pos.bottom + view.defaultLineHeight / 2;
941
+ }
942
+ return view.moveVertically(range, true, dist);
943
+ }).map(changes);
944
+ view.dispatch({ changes, selection, scrollIntoView: true, userEvent: "delete.line" });
945
+ return true;
946
+ };
947
+ function isBetweenBrackets(state, pos) {
948
+ if (/\(\)|\[\]|\{\}/.test(state.sliceDoc(pos - 1, pos + 1)))
949
+ return { from: pos, to: pos };
950
+ let context = syntaxTree(state).resolveInner(pos);
951
+ let before = context.childBefore(pos), after = context.childAfter(pos), closedBy;
952
+ if (before && after && before.to <= pos && after.from >= pos && (closedBy = before.type.prop(NodeProp.closedBy)) && closedBy.indexOf(after.name) > -1 && state.doc.lineAt(before.to).from == state.doc.lineAt(after.from).from && !/\S/.test(state.sliceDoc(before.to, after.from)))
953
+ return { from: before.to, to: after.from };
954
+ return null;
955
+ }
956
+ var insertNewlineAndIndent = /* @__PURE__ */ newlineAndIndent(false);
957
+ var insertBlankLine = /* @__PURE__ */ newlineAndIndent(true);
958
+ function newlineAndIndent(atEof) {
959
+ return ({ state, dispatch }) => {
960
+ if (state.readOnly)
961
+ return false;
962
+ let changes = state.changeByRange((range) => {
963
+ let { from, to } = range, line = state.doc.lineAt(from);
964
+ let explode = !atEof && from == to && isBetweenBrackets(state, from);
965
+ if (atEof)
966
+ from = to = (to <= line.to ? line : state.doc.lineAt(to)).to;
967
+ let cx = new IndentContext(state, { simulateBreak: from, simulateDoubleBreak: !!explode });
968
+ let indent = getIndentation(cx, from);
969
+ if (indent == null)
970
+ indent = countColumn(/^\s*/.exec(state.doc.lineAt(from).text)[0], state.tabSize);
971
+ while (to < line.to && /\s/.test(line.text[to - line.from]))
972
+ to++;
973
+ if (explode)
974
+ ({ from, to } = explode);
975
+ else if (from > line.from && from < line.from + 100 && !/\S/.test(line.text.slice(0, from)))
976
+ from = line.from;
977
+ let insert = ["", indentString(state, indent)];
978
+ if (explode)
979
+ insert.push(indentString(state, cx.lineIndent(line.from, -1)));
980
+ return {
981
+ changes: { from, to, insert: Text.of(insert) },
982
+ range: EditorSelection.cursor(from + 1 + insert[1].length)
983
+ };
984
+ });
985
+ dispatch(state.update(changes, { scrollIntoView: true, userEvent: "input" }));
986
+ return true;
987
+ };
988
+ }
989
+ function changeBySelectedLine(state, f) {
990
+ let atLine = -1;
991
+ return state.changeByRange((range) => {
992
+ let changes = [];
993
+ for (let pos = range.from; pos <= range.to; ) {
994
+ let line = state.doc.lineAt(pos);
995
+ if (line.number > atLine && (range.empty || range.to > line.from)) {
996
+ f(line, changes, range);
997
+ atLine = line.number;
998
+ }
999
+ pos = line.to + 1;
1000
+ }
1001
+ let changeSet = state.changes(changes);
1002
+ return {
1003
+ changes,
1004
+ range: EditorSelection.range(changeSet.mapPos(range.anchor, 1), changeSet.mapPos(range.head, 1))
1005
+ };
1006
+ });
1007
+ }
1008
+ var indentSelection = ({ state, dispatch }) => {
1009
+ if (state.readOnly)
1010
+ return false;
1011
+ let updated = /* @__PURE__ */ Object.create(null);
1012
+ let context = new IndentContext(state, { overrideIndentation: (start) => {
1013
+ let found = updated[start];
1014
+ return found == null ? -1 : found;
1015
+ } });
1016
+ let changes = changeBySelectedLine(state, (line, changes2, range) => {
1017
+ let indent = getIndentation(context, line.from);
1018
+ if (indent == null)
1019
+ return;
1020
+ if (!/\S/.test(line.text))
1021
+ indent = 0;
1022
+ let cur = /^\s*/.exec(line.text)[0];
1023
+ let norm = indentString(state, indent);
1024
+ if (cur != norm || range.from < line.from + cur.length) {
1025
+ updated[line.from] = indent;
1026
+ changes2.push({ from: line.from, to: line.from + cur.length, insert: norm });
1027
+ }
1028
+ });
1029
+ if (!changes.changes.empty)
1030
+ dispatch(state.update(changes, { userEvent: "indent" }));
1031
+ return true;
1032
+ };
1033
+ var indentMore = ({ state, dispatch }) => {
1034
+ if (state.readOnly)
1035
+ return false;
1036
+ dispatch(state.update(changeBySelectedLine(state, (line, changes) => {
1037
+ changes.push({ from: line.from, insert: state.facet(indentUnit) });
1038
+ }), { userEvent: "input.indent" }));
1039
+ return true;
1040
+ };
1041
+ var indentLess = ({ state, dispatch }) => {
1042
+ if (state.readOnly)
1043
+ return false;
1044
+ dispatch(state.update(changeBySelectedLine(state, (line, changes) => {
1045
+ let space = /^\s*/.exec(line.text)[0];
1046
+ if (!space)
1047
+ return;
1048
+ let col = countColumn(space, state.tabSize), keep = 0;
1049
+ let insert = indentString(state, Math.max(0, col - getIndentUnit(state)));
1050
+ while (keep < space.length && keep < insert.length && space.charCodeAt(keep) == insert.charCodeAt(keep))
1051
+ keep++;
1052
+ changes.push({ from: line.from + keep, to: line.from + space.length, insert: insert.slice(keep) });
1053
+ }), { userEvent: "delete.dedent" }));
1054
+ return true;
1055
+ };
1056
+ var toggleTabFocusMode = (view) => {
1057
+ view.setTabFocusMode();
1058
+ return true;
1059
+ };
1060
+ var emacsStyleKeymap = [
1061
+ { key: "Ctrl-b", run: cursorCharLeft, shift: selectCharLeft, preventDefault: true },
1062
+ { key: "Ctrl-f", run: cursorCharRight, shift: selectCharRight },
1063
+ { key: "Ctrl-p", run: cursorLineUp, shift: selectLineUp },
1064
+ { key: "Ctrl-n", run: cursorLineDown, shift: selectLineDown },
1065
+ { key: "Ctrl-a", run: cursorLineStart, shift: selectLineStart },
1066
+ { key: "Ctrl-e", run: cursorLineEnd, shift: selectLineEnd },
1067
+ { key: "Ctrl-d", run: deleteCharForward },
1068
+ { key: "Ctrl-h", run: deleteCharBackward },
1069
+ { key: "Ctrl-k", run: deleteToLineEnd },
1070
+ { key: "Ctrl-Alt-h", run: deleteGroupBackward },
1071
+ { key: "Ctrl-o", run: splitLine },
1072
+ { key: "Ctrl-t", run: transposeChars },
1073
+ { key: "Ctrl-v", run: cursorPageDown }
1074
+ ];
1075
+ var standardKeymap = /* @__PURE__ */ [
1076
+ { key: "ArrowLeft", run: cursorCharLeft, shift: selectCharLeft, preventDefault: true },
1077
+ { key: "Mod-ArrowLeft", mac: "Alt-ArrowLeft", run: cursorGroupLeft, shift: selectGroupLeft, preventDefault: true },
1078
+ { mac: "Cmd-ArrowLeft", run: cursorLineBoundaryLeft, shift: selectLineBoundaryLeft, preventDefault: true },
1079
+ { key: "ArrowRight", run: cursorCharRight, shift: selectCharRight, preventDefault: true },
1080
+ { key: "Mod-ArrowRight", mac: "Alt-ArrowRight", run: cursorGroupRight, shift: selectGroupRight, preventDefault: true },
1081
+ { mac: "Cmd-ArrowRight", run: cursorLineBoundaryRight, shift: selectLineBoundaryRight, preventDefault: true },
1082
+ { key: "ArrowUp", run: cursorLineUp, shift: selectLineUp, preventDefault: true },
1083
+ { mac: "Cmd-ArrowUp", run: cursorDocStart, shift: selectDocStart },
1084
+ { mac: "Ctrl-ArrowUp", run: cursorPageUp, shift: selectPageUp },
1085
+ { key: "ArrowDown", run: cursorLineDown, shift: selectLineDown, preventDefault: true },
1086
+ { mac: "Cmd-ArrowDown", run: cursorDocEnd, shift: selectDocEnd },
1087
+ { mac: "Ctrl-ArrowDown", run: cursorPageDown, shift: selectPageDown },
1088
+ { key: "PageUp", run: cursorPageUp, shift: selectPageUp },
1089
+ { key: "PageDown", run: cursorPageDown, shift: selectPageDown },
1090
+ { key: "Home", run: cursorLineBoundaryBackward, shift: selectLineBoundaryBackward, preventDefault: true },
1091
+ { key: "Mod-Home", run: cursorDocStart, shift: selectDocStart },
1092
+ { key: "End", run: cursorLineBoundaryForward, shift: selectLineBoundaryForward, preventDefault: true },
1093
+ { key: "Mod-End", run: cursorDocEnd, shift: selectDocEnd },
1094
+ { key: "Enter", run: insertNewlineAndIndent, shift: insertNewlineAndIndent },
1095
+ { key: "Mod-a", run: selectAll },
1096
+ { key: "Backspace", run: deleteCharBackward, shift: deleteCharBackward, preventDefault: true },
1097
+ { key: "Delete", run: deleteCharForward, preventDefault: true },
1098
+ { key: "Mod-Backspace", mac: "Alt-Backspace", run: deleteGroupBackward, preventDefault: true },
1099
+ { key: "Mod-Delete", mac: "Alt-Delete", run: deleteGroupForward, preventDefault: true },
1100
+ { mac: "Mod-Backspace", run: deleteLineBoundaryBackward, preventDefault: true },
1101
+ { mac: "Mod-Delete", run: deleteLineBoundaryForward, preventDefault: true }
1102
+ ].concat(/* @__PURE__ */ emacsStyleKeymap.map((b) => ({ mac: b.key, run: b.run, shift: b.shift })));
1103
+ var defaultKeymap = /* @__PURE__ */ [
1104
+ { key: "Alt-ArrowLeft", mac: "Ctrl-ArrowLeft", run: cursorSyntaxLeft, shift: selectSyntaxLeft },
1105
+ { key: "Alt-ArrowRight", mac: "Ctrl-ArrowRight", run: cursorSyntaxRight, shift: selectSyntaxRight },
1106
+ { key: "Alt-ArrowUp", run: moveLineUp },
1107
+ { key: "Shift-Alt-ArrowUp", run: copyLineUp },
1108
+ { key: "Alt-ArrowDown", run: moveLineDown },
1109
+ { key: "Shift-Alt-ArrowDown", run: copyLineDown },
1110
+ { key: "Mod-Alt-ArrowUp", run: addCursorAbove },
1111
+ { key: "Mod-Alt-ArrowDown", run: addCursorBelow },
1112
+ { key: "Escape", run: simplifySelection },
1113
+ { key: "Mod-Enter", run: insertBlankLine },
1114
+ { key: "Alt-l", mac: "Ctrl-l", run: selectLine },
1115
+ { key: "Mod-i", run: selectParentSyntax, preventDefault: true },
1116
+ { key: "Mod-[", run: indentLess },
1117
+ { key: "Mod-]", run: indentMore },
1118
+ { key: "Mod-Alt-\\", run: indentSelection },
1119
+ { key: "Shift-Mod-k", run: deleteLine },
1120
+ { key: "Shift-Mod-\\", run: cursorMatchingBracket },
1121
+ { key: "Mod-/", run: toggleComment },
1122
+ { key: "Alt-A", run: toggleBlockComment },
1123
+ { key: "Ctrl-m", mac: "Shift-Alt-m", run: toggleTabFocusMode }
1124
+ ].concat(standardKeymap);
1125
+ var indentWithTab = { key: "Tab", run: indentMore, shift: indentLess };
1126
+
1127
+ // ../node_modules/.pnpm/@codemirror+language-data@6.5.2/node_modules/@codemirror/language-data/dist/index.js
1128
+ function legacy(parser) {
1129
+ return new LanguageSupport(StreamLanguage.define(parser));
1130
+ }
1131
+ function sql(dialectName) {
1132
+ return import("../dist-UHUU7KLC.js").then((m) => m.sql({ dialect: m[dialectName] }));
1133
+ }
1134
+ var languages = [
1135
+ // New-style language modes
1136
+ /* @__PURE__ */ LanguageDescription.of({
1137
+ name: "C",
1138
+ extensions: ["c", "h", "ino"],
1139
+ load() {
1140
+ return import("../dist-HHNZE2GE.js").then((m) => m.cpp());
1141
+ }
1142
+ }),
1143
+ /* @__PURE__ */ LanguageDescription.of({
1144
+ name: "C++",
1145
+ alias: ["cpp"],
1146
+ extensions: ["cpp", "c++", "cc", "cxx", "hpp", "h++", "hh", "hxx"],
1147
+ load() {
1148
+ return import("../dist-HHNZE2GE.js").then((m) => m.cpp());
1149
+ }
1150
+ }),
1151
+ /* @__PURE__ */ LanguageDescription.of({
1152
+ name: "CQL",
1153
+ alias: ["cassandra"],
1154
+ extensions: ["cql"],
1155
+ load() {
1156
+ return sql("Cassandra");
1157
+ }
1158
+ }),
1159
+ /* @__PURE__ */ LanguageDescription.of({
1160
+ name: "CSS",
1161
+ extensions: ["css"],
1162
+ load() {
1163
+ return import("../dist-52S6W6Z3.js").then((m) => m.css());
1164
+ }
1165
+ }),
1166
+ /* @__PURE__ */ LanguageDescription.of({
1167
+ name: "Go",
1168
+ extensions: ["go"],
1169
+ load() {
1170
+ return import("../dist-WJMBFK7W.js").then((m) => m.go());
1171
+ }
1172
+ }),
1173
+ /* @__PURE__ */ LanguageDescription.of({
1174
+ name: "HTML",
1175
+ alias: ["xhtml"],
1176
+ extensions: ["html", "htm", "handlebars", "hbs"],
1177
+ load() {
1178
+ return import("../dist-BOGB4NCA.js").then((m) => m.html());
1179
+ }
1180
+ }),
1181
+ /* @__PURE__ */ LanguageDescription.of({
1182
+ name: "Java",
1183
+ extensions: ["java"],
1184
+ load() {
1185
+ return import("../dist-XJYSXJ7H.js").then((m) => m.java());
1186
+ }
1187
+ }),
1188
+ /* @__PURE__ */ LanguageDescription.of({
1189
+ name: "JavaScript",
1190
+ alias: ["ecmascript", "js", "node"],
1191
+ extensions: ["js", "mjs", "cjs"],
1192
+ load() {
1193
+ return import("../dist-HNH74YPL.js").then((m) => m.javascript());
1194
+ }
1195
+ }),
1196
+ /* @__PURE__ */ LanguageDescription.of({
1197
+ name: "Jinja",
1198
+ extensions: ["j2", "jinja", "jinja2"],
1199
+ load() {
1200
+ return import("../dist-DZ4PW5HP.js").then((m) => m.jinja());
1201
+ }
1202
+ }),
1203
+ /* @__PURE__ */ LanguageDescription.of({
1204
+ name: "JSON",
1205
+ alias: ["json5"],
1206
+ extensions: ["json", "map"],
1207
+ load() {
1208
+ return import("../dist-2C6IPJHB.js").then((m) => m.json());
1209
+ }
1210
+ }),
1211
+ /* @__PURE__ */ LanguageDescription.of({
1212
+ name: "JSX",
1213
+ extensions: ["jsx"],
1214
+ load() {
1215
+ return import("../dist-HNH74YPL.js").then((m) => m.javascript({ jsx: true }));
1216
+ }
1217
+ }),
1218
+ /* @__PURE__ */ LanguageDescription.of({
1219
+ name: "LESS",
1220
+ extensions: ["less"],
1221
+ load() {
1222
+ return import("../dist-2H653DKD.js").then((m) => m.less());
1223
+ }
1224
+ }),
1225
+ /* @__PURE__ */ LanguageDescription.of({
1226
+ name: "Liquid",
1227
+ extensions: ["liquid"],
1228
+ load() {
1229
+ return import("../dist-5KN6ODPO.js").then((m) => m.liquid());
1230
+ }
1231
+ }),
1232
+ /* @__PURE__ */ LanguageDescription.of({
1233
+ name: "MariaDB SQL",
1234
+ load() {
1235
+ return sql("MariaSQL");
1236
+ }
1237
+ }),
1238
+ /* @__PURE__ */ LanguageDescription.of({
1239
+ name: "Markdown",
1240
+ extensions: ["md", "markdown", "mkd"],
1241
+ load() {
1242
+ return import("../dist-LBQUKRIG.js").then((m) => m.markdown());
1243
+ }
1244
+ }),
1245
+ /* @__PURE__ */ LanguageDescription.of({
1246
+ name: "MS SQL",
1247
+ load() {
1248
+ return sql("MSSQL");
1249
+ }
1250
+ }),
1251
+ /* @__PURE__ */ LanguageDescription.of({
1252
+ name: "MySQL",
1253
+ load() {
1254
+ return sql("MySQL");
1255
+ }
1256
+ }),
1257
+ /* @__PURE__ */ LanguageDescription.of({
1258
+ name: "PHP",
1259
+ extensions: ["php", "php3", "php4", "php5", "php7", "phtml"],
1260
+ load() {
1261
+ return import("../dist-NISFJM3T.js").then((m) => m.php());
1262
+ }
1263
+ }),
1264
+ /* @__PURE__ */ LanguageDescription.of({
1265
+ name: "PLSQL",
1266
+ extensions: ["pls"],
1267
+ load() {
1268
+ return sql("PLSQL");
1269
+ }
1270
+ }),
1271
+ /* @__PURE__ */ LanguageDescription.of({
1272
+ name: "PostgreSQL",
1273
+ load() {
1274
+ return sql("PostgreSQL");
1275
+ }
1276
+ }),
1277
+ /* @__PURE__ */ LanguageDescription.of({
1278
+ name: "Python",
1279
+ extensions: ["BUILD", "bzl", "py", "pyw"],
1280
+ filename: /^(BUCK|BUILD)$/,
1281
+ load() {
1282
+ return import("../dist-Q7P6VH6H.js").then((m) => m.python());
1283
+ }
1284
+ }),
1285
+ /* @__PURE__ */ LanguageDescription.of({
1286
+ name: "Rust",
1287
+ extensions: ["rs"],
1288
+ load() {
1289
+ return import("../dist-YY24ZXZD.js").then((m) => m.rust());
1290
+ }
1291
+ }),
1292
+ /* @__PURE__ */ LanguageDescription.of({
1293
+ name: "Sass",
1294
+ extensions: ["sass"],
1295
+ load() {
1296
+ return import("../dist-G2KVVLNT.js").then((m) => m.sass({ indented: true }));
1297
+ }
1298
+ }),
1299
+ /* @__PURE__ */ LanguageDescription.of({
1300
+ name: "SCSS",
1301
+ extensions: ["scss"],
1302
+ load() {
1303
+ return import("../dist-G2KVVLNT.js").then((m) => m.sass());
1304
+ }
1305
+ }),
1306
+ /* @__PURE__ */ LanguageDescription.of({
1307
+ name: "SQL",
1308
+ extensions: ["sql"],
1309
+ load() {
1310
+ return sql("StandardSQL");
1311
+ }
1312
+ }),
1313
+ /* @__PURE__ */ LanguageDescription.of({
1314
+ name: "SQLite",
1315
+ load() {
1316
+ return sql("SQLite");
1317
+ }
1318
+ }),
1319
+ /* @__PURE__ */ LanguageDescription.of({
1320
+ name: "TSX",
1321
+ extensions: ["tsx"],
1322
+ load() {
1323
+ return import("../dist-HNH74YPL.js").then((m) => m.javascript({ jsx: true, typescript: true }));
1324
+ }
1325
+ }),
1326
+ /* @__PURE__ */ LanguageDescription.of({
1327
+ name: "TypeScript",
1328
+ alias: ["ts"],
1329
+ extensions: ["ts", "mts", "cts"],
1330
+ load() {
1331
+ return import("../dist-HNH74YPL.js").then((m) => m.javascript({ typescript: true }));
1332
+ }
1333
+ }),
1334
+ /* @__PURE__ */ LanguageDescription.of({
1335
+ name: "WebAssembly",
1336
+ extensions: ["wat", "wast"],
1337
+ load() {
1338
+ return import("../dist-2UJRV4FH.js").then((m) => m.wast());
1339
+ }
1340
+ }),
1341
+ /* @__PURE__ */ LanguageDescription.of({
1342
+ name: "XML",
1343
+ alias: ["rss", "wsdl", "xsd"],
1344
+ extensions: ["xml", "xsl", "xsd", "svg"],
1345
+ load() {
1346
+ return import("../dist-MFKCWPLQ.js").then((m) => m.xml());
1347
+ }
1348
+ }),
1349
+ /* @__PURE__ */ LanguageDescription.of({
1350
+ name: "YAML",
1351
+ alias: ["yml"],
1352
+ extensions: ["yaml", "yml"],
1353
+ load() {
1354
+ return import("../dist-RWF5A5GN.js").then((m) => m.yaml());
1355
+ }
1356
+ }),
1357
+ // Legacy modes ported from CodeMirror 5
1358
+ /* @__PURE__ */ LanguageDescription.of({
1359
+ name: "APL",
1360
+ extensions: ["dyalog", "apl"],
1361
+ load() {
1362
+ return import("../apl-QAIM2KBM.js").then((m) => legacy(m.apl));
1363
+ }
1364
+ }),
1365
+ /* @__PURE__ */ LanguageDescription.of({
1366
+ name: "PGP",
1367
+ alias: ["asciiarmor"],
1368
+ extensions: ["asc", "pgp", "sig"],
1369
+ load() {
1370
+ return import("../asciiarmor-G7UKQURA.js").then((m) => legacy(m.asciiArmor));
1371
+ }
1372
+ }),
1373
+ /* @__PURE__ */ LanguageDescription.of({
1374
+ name: "ASN.1",
1375
+ extensions: ["asn", "asn1"],
1376
+ load() {
1377
+ return import("../asn1-JTUXKWKT.js").then((m) => legacy(m.asn1({})));
1378
+ }
1379
+ }),
1380
+ /* @__PURE__ */ LanguageDescription.of({
1381
+ name: "Asterisk",
1382
+ filename: /^extensions\.conf$/i,
1383
+ load() {
1384
+ return import("../asterisk-NM6JCXOL.js").then((m) => legacy(m.asterisk));
1385
+ }
1386
+ }),
1387
+ /* @__PURE__ */ LanguageDescription.of({
1388
+ name: "Brainfuck",
1389
+ extensions: ["b", "bf"],
1390
+ load() {
1391
+ return import("../brainfuck-X7FFM55E.js").then((m) => legacy(m.brainfuck));
1392
+ }
1393
+ }),
1394
+ /* @__PURE__ */ LanguageDescription.of({
1395
+ name: "Cobol",
1396
+ extensions: ["cob", "cpy"],
1397
+ load() {
1398
+ return import("../cobol-HAM4C42S.js").then((m) => legacy(m.cobol));
1399
+ }
1400
+ }),
1401
+ /* @__PURE__ */ LanguageDescription.of({
1402
+ name: "C#",
1403
+ alias: ["csharp", "cs"],
1404
+ extensions: ["cs"],
1405
+ load() {
1406
+ return import("../clike-DOBZTBQN.js").then((m) => legacy(m.csharp));
1407
+ }
1408
+ }),
1409
+ /* @__PURE__ */ LanguageDescription.of({
1410
+ name: "Clojure",
1411
+ extensions: ["clj", "cljc", "cljx"],
1412
+ load() {
1413
+ return import("../clojure-PTADSDNF.js").then((m) => legacy(m.clojure));
1414
+ }
1415
+ }),
1416
+ /* @__PURE__ */ LanguageDescription.of({
1417
+ name: "ClojureScript",
1418
+ extensions: ["cljs"],
1419
+ load() {
1420
+ return import("../clojure-PTADSDNF.js").then((m) => legacy(m.clojure));
1421
+ }
1422
+ }),
1423
+ /* @__PURE__ */ LanguageDescription.of({
1424
+ name: "Closure Stylesheets (GSS)",
1425
+ extensions: ["gss"],
1426
+ load() {
1427
+ return import("../css-VQQXA3AY.js").then((m) => legacy(m.gss));
1428
+ }
1429
+ }),
1430
+ /* @__PURE__ */ LanguageDescription.of({
1431
+ name: "CMake",
1432
+ extensions: ["cmake", "cmake.in"],
1433
+ filename: /^CMakeLists\.txt$/,
1434
+ load() {
1435
+ return import("../cmake-5HAC7YMH.js").then((m) => legacy(m.cmake));
1436
+ }
1437
+ }),
1438
+ /* @__PURE__ */ LanguageDescription.of({
1439
+ name: "CoffeeScript",
1440
+ alias: ["coffee", "coffee-script"],
1441
+ extensions: ["coffee"],
1442
+ load() {
1443
+ return import("../coffeescript-IBRKASSJ.js").then((m) => legacy(m.coffeeScript));
1444
+ }
1445
+ }),
1446
+ /* @__PURE__ */ LanguageDescription.of({
1447
+ name: "Common Lisp",
1448
+ alias: ["lisp"],
1449
+ extensions: ["cl", "lisp", "el"],
1450
+ load() {
1451
+ return import("../commonlisp-KMRPB5EW.js").then((m) => legacy(m.commonLisp));
1452
+ }
1453
+ }),
1454
+ /* @__PURE__ */ LanguageDescription.of({
1455
+ name: "Cypher",
1456
+ extensions: ["cyp", "cypher"],
1457
+ load() {
1458
+ return import("../cypher-ZZEGDGDJ.js").then((m) => legacy(m.cypher));
1459
+ }
1460
+ }),
1461
+ /* @__PURE__ */ LanguageDescription.of({
1462
+ name: "Cython",
1463
+ extensions: ["pyx", "pxd", "pxi"],
1464
+ load() {
1465
+ return import("../python-A6P3XTMX.js").then((m) => legacy(m.cython));
1466
+ }
1467
+ }),
1468
+ /* @__PURE__ */ LanguageDescription.of({
1469
+ name: "Crystal",
1470
+ extensions: ["cr"],
1471
+ load() {
1472
+ return import("../crystal-2MDF4EKJ.js").then((m) => legacy(m.crystal));
1473
+ }
1474
+ }),
1475
+ /* @__PURE__ */ LanguageDescription.of({
1476
+ name: "D",
1477
+ extensions: ["d"],
1478
+ load() {
1479
+ return import("../d-5S6PJOOT.js").then((m) => legacy(m.d));
1480
+ }
1481
+ }),
1482
+ /* @__PURE__ */ LanguageDescription.of({
1483
+ name: "Dart",
1484
+ extensions: ["dart"],
1485
+ load() {
1486
+ return import("../clike-DOBZTBQN.js").then((m) => legacy(m.dart));
1487
+ }
1488
+ }),
1489
+ /* @__PURE__ */ LanguageDescription.of({
1490
+ name: "diff",
1491
+ extensions: ["diff", "patch"],
1492
+ load() {
1493
+ return import("../diff-S77XBOWF.js").then((m) => legacy(m.diff));
1494
+ }
1495
+ }),
1496
+ /* @__PURE__ */ LanguageDescription.of({
1497
+ name: "Dockerfile",
1498
+ filename: /^Dockerfile$/,
1499
+ load() {
1500
+ return import("../dockerfile-JECCOJWP.js").then((m) => legacy(m.dockerFile));
1501
+ }
1502
+ }),
1503
+ /* @__PURE__ */ LanguageDescription.of({
1504
+ name: "DTD",
1505
+ extensions: ["dtd"],
1506
+ load() {
1507
+ return import("../dtd-MNDWTW4Z.js").then((m) => legacy(m.dtd));
1508
+ }
1509
+ }),
1510
+ /* @__PURE__ */ LanguageDescription.of({
1511
+ name: "Dylan",
1512
+ extensions: ["dylan", "dyl", "intr"],
1513
+ load() {
1514
+ return import("../dylan-VQ4IHJDS.js").then((m) => legacy(m.dylan));
1515
+ }
1516
+ }),
1517
+ /* @__PURE__ */ LanguageDescription.of({
1518
+ name: "EBNF",
1519
+ load() {
1520
+ return import("../ebnf-IDZBFTCG.js").then((m) => legacy(m.ebnf));
1521
+ }
1522
+ }),
1523
+ /* @__PURE__ */ LanguageDescription.of({
1524
+ name: "ECL",
1525
+ extensions: ["ecl"],
1526
+ load() {
1527
+ return import("../ecl-X3ROY7E6.js").then((m) => legacy(m.ecl));
1528
+ }
1529
+ }),
1530
+ /* @__PURE__ */ LanguageDescription.of({
1531
+ name: "edn",
1532
+ extensions: ["edn"],
1533
+ load() {
1534
+ return import("../clojure-PTADSDNF.js").then((m) => legacy(m.clojure));
1535
+ }
1536
+ }),
1537
+ /* @__PURE__ */ LanguageDescription.of({
1538
+ name: "Eiffel",
1539
+ extensions: ["e"],
1540
+ load() {
1541
+ return import("../eiffel-WB3M7Y2E.js").then((m) => legacy(m.eiffel));
1542
+ }
1543
+ }),
1544
+ /* @__PURE__ */ LanguageDescription.of({
1545
+ name: "Elm",
1546
+ extensions: ["elm"],
1547
+ load() {
1548
+ return import("../elm-VHXR6ZA3.js").then((m) => legacy(m.elm));
1549
+ }
1550
+ }),
1551
+ /* @__PURE__ */ LanguageDescription.of({
1552
+ name: "Erlang",
1553
+ extensions: ["erl"],
1554
+ load() {
1555
+ return import("../erlang-7ZBDDQDV.js").then((m) => legacy(m.erlang));
1556
+ }
1557
+ }),
1558
+ /* @__PURE__ */ LanguageDescription.of({
1559
+ name: "Esper",
1560
+ load() {
1561
+ return import("../sql-ML2Q43YF.js").then((m) => legacy(m.esper));
1562
+ }
1563
+ }),
1564
+ /* @__PURE__ */ LanguageDescription.of({
1565
+ name: "Factor",
1566
+ extensions: ["factor"],
1567
+ load() {
1568
+ return import("../factor-IKT2GQE2.js").then((m) => legacy(m.factor));
1569
+ }
1570
+ }),
1571
+ /* @__PURE__ */ LanguageDescription.of({
1572
+ name: "FCL",
1573
+ load() {
1574
+ return import("../fcl-CNBUVGUC.js").then((m) => legacy(m.fcl));
1575
+ }
1576
+ }),
1577
+ /* @__PURE__ */ LanguageDescription.of({
1578
+ name: "Forth",
1579
+ extensions: ["forth", "fth", "4th"],
1580
+ load() {
1581
+ return import("../forth-4BTPWSFZ.js").then((m) => legacy(m.forth));
1582
+ }
1583
+ }),
1584
+ /* @__PURE__ */ LanguageDescription.of({
1585
+ name: "Fortran",
1586
+ extensions: ["f", "for", "f77", "f90", "f95"],
1587
+ load() {
1588
+ return import("../fortran-V6F5DQPK.js").then((m) => legacy(m.fortran));
1589
+ }
1590
+ }),
1591
+ /* @__PURE__ */ LanguageDescription.of({
1592
+ name: "F#",
1593
+ alias: ["fsharp"],
1594
+ extensions: ["fs"],
1595
+ load() {
1596
+ return import("../mllike-C2YS6SJI.js").then((m) => legacy(m.fSharp));
1597
+ }
1598
+ }),
1599
+ /* @__PURE__ */ LanguageDescription.of({
1600
+ name: "Gas",
1601
+ extensions: ["s"],
1602
+ load() {
1603
+ return import("../gas-4DLP6BC4.js").then((m) => legacy(m.gas));
1604
+ }
1605
+ }),
1606
+ /* @__PURE__ */ LanguageDescription.of({
1607
+ name: "Gherkin",
1608
+ extensions: ["feature"],
1609
+ load() {
1610
+ return import("../gherkin-OSGPX6HI.js").then((m) => legacy(m.gherkin));
1611
+ }
1612
+ }),
1613
+ /* @__PURE__ */ LanguageDescription.of({
1614
+ name: "Groovy",
1615
+ extensions: ["groovy", "gradle"],
1616
+ filename: /^Jenkinsfile$/,
1617
+ load() {
1618
+ return import("../groovy-R2JW63QF.js").then((m) => legacy(m.groovy));
1619
+ }
1620
+ }),
1621
+ /* @__PURE__ */ LanguageDescription.of({
1622
+ name: "Haskell",
1623
+ extensions: ["hs"],
1624
+ load() {
1625
+ return import("../haskell-GG7T4J6H.js").then((m) => legacy(m.haskell));
1626
+ }
1627
+ }),
1628
+ /* @__PURE__ */ LanguageDescription.of({
1629
+ name: "Haxe",
1630
+ extensions: ["hx"],
1631
+ load() {
1632
+ return import("../haxe-ESFUJKSE.js").then((m) => legacy(m.haxe));
1633
+ }
1634
+ }),
1635
+ /* @__PURE__ */ LanguageDescription.of({
1636
+ name: "HXML",
1637
+ extensions: ["hxml"],
1638
+ load() {
1639
+ return import("../haxe-ESFUJKSE.js").then((m) => legacy(m.hxml));
1640
+ }
1641
+ }),
1642
+ /* @__PURE__ */ LanguageDescription.of({
1643
+ name: "HTTP",
1644
+ load() {
1645
+ return import("../http-SZLSACOW.js").then((m) => legacy(m.http));
1646
+ }
1647
+ }),
1648
+ /* @__PURE__ */ LanguageDescription.of({
1649
+ name: "IDL",
1650
+ extensions: ["pro"],
1651
+ load() {
1652
+ return import("../idl-V7UH35RP.js").then((m) => legacy(m.idl));
1653
+ }
1654
+ }),
1655
+ /* @__PURE__ */ LanguageDescription.of({
1656
+ name: "JSON-LD",
1657
+ alias: ["jsonld"],
1658
+ extensions: ["jsonld"],
1659
+ load() {
1660
+ return import("../javascript-MGRPKFDN.js").then((m) => legacy(m.jsonld));
1661
+ }
1662
+ }),
1663
+ /* @__PURE__ */ LanguageDescription.of({
1664
+ name: "Julia",
1665
+ extensions: ["jl"],
1666
+ load() {
1667
+ return import("../julia-CWCVZVPG.js").then((m) => legacy(m.julia));
1668
+ }
1669
+ }),
1670
+ /* @__PURE__ */ LanguageDescription.of({
1671
+ name: "Kotlin",
1672
+ extensions: ["kt", "kts"],
1673
+ load() {
1674
+ return import("../clike-DOBZTBQN.js").then((m) => legacy(m.kotlin));
1675
+ }
1676
+ }),
1677
+ /* @__PURE__ */ LanguageDescription.of({
1678
+ name: "LiveScript",
1679
+ alias: ["ls"],
1680
+ extensions: ["ls"],
1681
+ load() {
1682
+ return import("../livescript-IGKT2FL7.js").then((m) => legacy(m.liveScript));
1683
+ }
1684
+ }),
1685
+ /* @__PURE__ */ LanguageDescription.of({
1686
+ name: "Lua",
1687
+ extensions: ["lua"],
1688
+ load() {
1689
+ return import("../lua-GHK7GCTS.js").then((m) => legacy(m.lua));
1690
+ }
1691
+ }),
1692
+ /* @__PURE__ */ LanguageDescription.of({
1693
+ name: "mIRC",
1694
+ extensions: ["mrc"],
1695
+ load() {
1696
+ return import("../mirc-WYJEQUBY.js").then((m) => legacy(m.mirc));
1697
+ }
1698
+ }),
1699
+ /* @__PURE__ */ LanguageDescription.of({
1700
+ name: "Mathematica",
1701
+ extensions: ["m", "nb", "wl", "wls"],
1702
+ load() {
1703
+ return import("../mathematica-W5LMQI3M.js").then((m) => legacy(m.mathematica));
1704
+ }
1705
+ }),
1706
+ /* @__PURE__ */ LanguageDescription.of({
1707
+ name: "Modelica",
1708
+ extensions: ["mo"],
1709
+ load() {
1710
+ return import("../modelica-BMJSLZS7.js").then((m) => legacy(m.modelica));
1711
+ }
1712
+ }),
1713
+ /* @__PURE__ */ LanguageDescription.of({
1714
+ name: "MUMPS",
1715
+ extensions: ["mps"],
1716
+ load() {
1717
+ return import("../mumps-BYE6H7ZX.js").then((m) => legacy(m.mumps));
1718
+ }
1719
+ }),
1720
+ /* @__PURE__ */ LanguageDescription.of({
1721
+ name: "Mbox",
1722
+ extensions: ["mbox"],
1723
+ load() {
1724
+ return import("../mbox-A7CXJ4HZ.js").then((m) => legacy(m.mbox));
1725
+ }
1726
+ }),
1727
+ /* @__PURE__ */ LanguageDescription.of({
1728
+ name: "Nginx",
1729
+ filename: /nginx.*\.conf$/i,
1730
+ load() {
1731
+ return import("../nginx-Y54HR7MQ.js").then((m) => legacy(m.nginx));
1732
+ }
1733
+ }),
1734
+ /* @__PURE__ */ LanguageDescription.of({
1735
+ name: "NSIS",
1736
+ extensions: ["nsh", "nsi"],
1737
+ load() {
1738
+ return import("../nsis-UZLPE2DL.js").then((m) => legacy(m.nsis));
1739
+ }
1740
+ }),
1741
+ /* @__PURE__ */ LanguageDescription.of({
1742
+ name: "NTriples",
1743
+ extensions: ["nt", "nq"],
1744
+ load() {
1745
+ return import("../ntriples-SAI3J2VH.js").then((m) => legacy(m.ntriples));
1746
+ }
1747
+ }),
1748
+ /* @__PURE__ */ LanguageDescription.of({
1749
+ name: "Objective-C",
1750
+ alias: ["objective-c", "objc"],
1751
+ extensions: ["m"],
1752
+ load() {
1753
+ return import("../clike-DOBZTBQN.js").then((m) => legacy(m.objectiveC));
1754
+ }
1755
+ }),
1756
+ /* @__PURE__ */ LanguageDescription.of({
1757
+ name: "Objective-C++",
1758
+ alias: ["objective-c++", "objc++"],
1759
+ extensions: ["mm"],
1760
+ load() {
1761
+ return import("../clike-DOBZTBQN.js").then((m) => legacy(m.objectiveCpp));
1762
+ }
1763
+ }),
1764
+ /* @__PURE__ */ LanguageDescription.of({
1765
+ name: "OCaml",
1766
+ extensions: ["ml", "mli", "mll", "mly"],
1767
+ load() {
1768
+ return import("../mllike-C2YS6SJI.js").then((m) => legacy(m.oCaml));
1769
+ }
1770
+ }),
1771
+ /* @__PURE__ */ LanguageDescription.of({
1772
+ name: "Octave",
1773
+ extensions: ["m"],
1774
+ load() {
1775
+ return import("../octave-TLUBYOUX.js").then((m) => legacy(m.octave));
1776
+ }
1777
+ }),
1778
+ /* @__PURE__ */ LanguageDescription.of({
1779
+ name: "Oz",
1780
+ extensions: ["oz"],
1781
+ load() {
1782
+ return import("../oz-F6LNIR6Q.js").then((m) => legacy(m.oz));
1783
+ }
1784
+ }),
1785
+ /* @__PURE__ */ LanguageDescription.of({
1786
+ name: "Pascal",
1787
+ extensions: ["p", "pas"],
1788
+ load() {
1789
+ return import("../pascal-WINE2FE6.js").then((m) => legacy(m.pascal));
1790
+ }
1791
+ }),
1792
+ /* @__PURE__ */ LanguageDescription.of({
1793
+ name: "Perl",
1794
+ extensions: ["pl", "pm"],
1795
+ load() {
1796
+ return import("../perl-NZG3EIBE.js").then((m) => legacy(m.perl));
1797
+ }
1798
+ }),
1799
+ /* @__PURE__ */ LanguageDescription.of({
1800
+ name: "Pig",
1801
+ extensions: ["pig"],
1802
+ load() {
1803
+ return import("../pig-U7OFLRCV.js").then((m) => legacy(m.pig));
1804
+ }
1805
+ }),
1806
+ /* @__PURE__ */ LanguageDescription.of({
1807
+ name: "PowerShell",
1808
+ extensions: ["ps1", "psd1", "psm1"],
1809
+ load() {
1810
+ return import("../powershell-ZSUS7P6D.js").then((m) => legacy(m.powerShell));
1811
+ }
1812
+ }),
1813
+ /* @__PURE__ */ LanguageDescription.of({
1814
+ name: "Properties files",
1815
+ alias: ["ini", "properties"],
1816
+ extensions: ["properties", "ini", "in"],
1817
+ load() {
1818
+ return import("../properties-IJRU6UJW.js").then((m) => legacy(m.properties));
1819
+ }
1820
+ }),
1821
+ /* @__PURE__ */ LanguageDescription.of({
1822
+ name: "ProtoBuf",
1823
+ extensions: ["proto"],
1824
+ load() {
1825
+ return import("../protobuf-2KETQIQ5.js").then((m) => legacy(m.protobuf));
1826
+ }
1827
+ }),
1828
+ /* @__PURE__ */ LanguageDescription.of({
1829
+ name: "Pug",
1830
+ alias: ["jade"],
1831
+ extensions: ["pug", "jade"],
1832
+ load() {
1833
+ return import("../pug-IQCJJAZU.js").then((m) => legacy(m.pug));
1834
+ }
1835
+ }),
1836
+ /* @__PURE__ */ LanguageDescription.of({
1837
+ name: "Puppet",
1838
+ extensions: ["pp"],
1839
+ load() {
1840
+ return import("../puppet-YIIDDH6A.js").then((m) => legacy(m.puppet));
1841
+ }
1842
+ }),
1843
+ /* @__PURE__ */ LanguageDescription.of({
1844
+ name: "Q",
1845
+ extensions: ["q"],
1846
+ load() {
1847
+ return import("../q-2KXN5RX7.js").then((m) => legacy(m.q));
1848
+ }
1849
+ }),
1850
+ /* @__PURE__ */ LanguageDescription.of({
1851
+ name: "R",
1852
+ alias: ["rscript"],
1853
+ extensions: ["r", "R"],
1854
+ load() {
1855
+ return import("../r-BB4MIIBH.js").then((m) => legacy(m.r));
1856
+ }
1857
+ }),
1858
+ /* @__PURE__ */ LanguageDescription.of({
1859
+ name: "RPM Changes",
1860
+ load() {
1861
+ return import("../rpm-LMR25AQ3.js").then((m) => legacy(m.rpmChanges));
1862
+ }
1863
+ }),
1864
+ /* @__PURE__ */ LanguageDescription.of({
1865
+ name: "RPM Spec",
1866
+ extensions: ["spec"],
1867
+ load() {
1868
+ return import("../rpm-LMR25AQ3.js").then((m) => legacy(m.rpmSpec));
1869
+ }
1870
+ }),
1871
+ /* @__PURE__ */ LanguageDescription.of({
1872
+ name: "Ruby",
1873
+ alias: ["jruby", "macruby", "rake", "rb", "rbx"],
1874
+ extensions: ["rb"],
1875
+ filename: /^(Gemfile|Rakefile)$/,
1876
+ load() {
1877
+ return import("../ruby-TSD6FT73.js").then((m) => legacy(m.ruby));
1878
+ }
1879
+ }),
1880
+ /* @__PURE__ */ LanguageDescription.of({
1881
+ name: "SAS",
1882
+ extensions: ["sas"],
1883
+ load() {
1884
+ return import("../sas-6X4WWIGV.js").then((m) => legacy(m.sas));
1885
+ }
1886
+ }),
1887
+ /* @__PURE__ */ LanguageDescription.of({
1888
+ name: "Scala",
1889
+ extensions: ["scala"],
1890
+ load() {
1891
+ return import("../clike-DOBZTBQN.js").then((m) => legacy(m.scala));
1892
+ }
1893
+ }),
1894
+ /* @__PURE__ */ LanguageDescription.of({
1895
+ name: "Scheme",
1896
+ extensions: ["scm", "ss"],
1897
+ load() {
1898
+ return import("../scheme-E3I46HBL.js").then((m) => legacy(m.scheme));
1899
+ }
1900
+ }),
1901
+ /* @__PURE__ */ LanguageDescription.of({
1902
+ name: "Shell",
1903
+ alias: ["bash", "sh", "zsh"],
1904
+ extensions: ["sh", "ksh", "bash"],
1905
+ filename: /^PKGBUILD$/,
1906
+ load() {
1907
+ return import("../shell-GX3PRI4I.js").then((m) => legacy(m.shell));
1908
+ }
1909
+ }),
1910
+ /* @__PURE__ */ LanguageDescription.of({
1911
+ name: "Sieve",
1912
+ extensions: ["siv", "sieve"],
1913
+ load() {
1914
+ return import("../sieve-V65ZPL4F.js").then((m) => legacy(m.sieve));
1915
+ }
1916
+ }),
1917
+ /* @__PURE__ */ LanguageDescription.of({
1918
+ name: "Smalltalk",
1919
+ extensions: ["st"],
1920
+ load() {
1921
+ return import("../smalltalk-OVKP2CVW.js").then((m) => legacy(m.smalltalk));
1922
+ }
1923
+ }),
1924
+ /* @__PURE__ */ LanguageDescription.of({
1925
+ name: "Solr",
1926
+ load() {
1927
+ return import("../solr-C4DLQJCF.js").then((m) => legacy(m.solr));
1928
+ }
1929
+ }),
1930
+ /* @__PURE__ */ LanguageDescription.of({
1931
+ name: "SML",
1932
+ extensions: ["sml", "sig", "fun", "smackspec"],
1933
+ load() {
1934
+ return import("../mllike-C2YS6SJI.js").then((m) => legacy(m.sml));
1935
+ }
1936
+ }),
1937
+ /* @__PURE__ */ LanguageDescription.of({
1938
+ name: "SPARQL",
1939
+ alias: ["sparul"],
1940
+ extensions: ["rq", "sparql"],
1941
+ load() {
1942
+ return import("../sparql-REKUW7B3.js").then((m) => legacy(m.sparql));
1943
+ }
1944
+ }),
1945
+ /* @__PURE__ */ LanguageDescription.of({
1946
+ name: "Spreadsheet",
1947
+ alias: ["excel", "formula"],
1948
+ load() {
1949
+ return import("../spreadsheet-S7NN2YTQ.js").then((m) => legacy(m.spreadsheet));
1950
+ }
1951
+ }),
1952
+ /* @__PURE__ */ LanguageDescription.of({
1953
+ name: "Squirrel",
1954
+ extensions: ["nut"],
1955
+ load() {
1956
+ return import("../clike-DOBZTBQN.js").then((m) => legacy(m.squirrel));
1957
+ }
1958
+ }),
1959
+ /* @__PURE__ */ LanguageDescription.of({
1960
+ name: "Stylus",
1961
+ extensions: ["styl"],
1962
+ load() {
1963
+ return import("../stylus-3ONNYZOM.js").then((m) => legacy(m.stylus));
1964
+ }
1965
+ }),
1966
+ /* @__PURE__ */ LanguageDescription.of({
1967
+ name: "Swift",
1968
+ extensions: ["swift"],
1969
+ load() {
1970
+ return import("../swift-CNWGZ22Y.js").then((m) => legacy(m.swift));
1971
+ }
1972
+ }),
1973
+ /* @__PURE__ */ LanguageDescription.of({
1974
+ name: "sTeX",
1975
+ load() {
1976
+ return import("../stex-TCOGKBT4.js").then((m) => legacy(m.stex));
1977
+ }
1978
+ }),
1979
+ /* @__PURE__ */ LanguageDescription.of({
1980
+ name: "LaTeX",
1981
+ alias: ["tex"],
1982
+ extensions: ["text", "ltx", "tex"],
1983
+ load() {
1984
+ return import("../stex-TCOGKBT4.js").then((m) => legacy(m.stex));
1985
+ }
1986
+ }),
1987
+ /* @__PURE__ */ LanguageDescription.of({
1988
+ name: "SystemVerilog",
1989
+ extensions: ["v", "sv", "svh"],
1990
+ load() {
1991
+ return import("../verilog-7VEWVDW6.js").then((m) => legacy(m.verilog));
1992
+ }
1993
+ }),
1994
+ /* @__PURE__ */ LanguageDescription.of({
1995
+ name: "Tcl",
1996
+ extensions: ["tcl"],
1997
+ load() {
1998
+ return import("../tcl-77IMAZYE.js").then((m) => legacy(m.tcl));
1999
+ }
2000
+ }),
2001
+ /* @__PURE__ */ LanguageDescription.of({
2002
+ name: "Textile",
2003
+ extensions: ["textile"],
2004
+ load() {
2005
+ return import("../textile-6IWIIKFM.js").then((m) => legacy(m.textile));
2006
+ }
2007
+ }),
2008
+ /* @__PURE__ */ LanguageDescription.of({
2009
+ name: "TiddlyWiki",
2010
+ load() {
2011
+ return import("../tiddlywiki-IJSZMUSA.js").then((m) => legacy(m.tiddlyWiki));
2012
+ }
2013
+ }),
2014
+ /* @__PURE__ */ LanguageDescription.of({
2015
+ name: "Tiki wiki",
2016
+ load() {
2017
+ return import("../tiki-HG37JJIT.js").then((m) => legacy(m.tiki));
2018
+ }
2019
+ }),
2020
+ /* @__PURE__ */ LanguageDescription.of({
2021
+ name: "TOML",
2022
+ extensions: ["toml"],
2023
+ load() {
2024
+ return import("../toml-NINU2IMM.js").then((m) => legacy(m.toml));
2025
+ }
2026
+ }),
2027
+ /* @__PURE__ */ LanguageDescription.of({
2028
+ name: "Troff",
2029
+ extensions: ["1", "2", "3", "4", "5", "6", "7", "8", "9"],
2030
+ load() {
2031
+ return import("../troff-AOQJ4Q4C.js").then((m) => legacy(m.troff));
2032
+ }
2033
+ }),
2034
+ /* @__PURE__ */ LanguageDescription.of({
2035
+ name: "TTCN",
2036
+ extensions: ["ttcn", "ttcn3", "ttcnpp"],
2037
+ load() {
2038
+ return import("../ttcn-TLOZ3FX3.js").then((m) => legacy(m.ttcn));
2039
+ }
2040
+ }),
2041
+ /* @__PURE__ */ LanguageDescription.of({
2042
+ name: "TTCN_CFG",
2043
+ extensions: ["cfg"],
2044
+ load() {
2045
+ return import("../ttcn-cfg-3B6QY7QE.js").then((m) => legacy(m.ttcnCfg));
2046
+ }
2047
+ }),
2048
+ /* @__PURE__ */ LanguageDescription.of({
2049
+ name: "Turtle",
2050
+ extensions: ["ttl"],
2051
+ load() {
2052
+ return import("../turtle-3N5KCGXP.js").then((m) => legacy(m.turtle));
2053
+ }
2054
+ }),
2055
+ /* @__PURE__ */ LanguageDescription.of({
2056
+ name: "Web IDL",
2057
+ extensions: ["webidl"],
2058
+ load() {
2059
+ return import("../webidl-SLQFEELK.js").then((m) => legacy(m.webIDL));
2060
+ }
2061
+ }),
2062
+ /* @__PURE__ */ LanguageDescription.of({
2063
+ name: "VB.NET",
2064
+ extensions: ["vb"],
2065
+ load() {
2066
+ return import("../vb-I7M5DRLP.js").then((m) => legacy(m.vb));
2067
+ }
2068
+ }),
2069
+ /* @__PURE__ */ LanguageDescription.of({
2070
+ name: "VBScript",
2071
+ extensions: ["vbs"],
2072
+ load() {
2073
+ return import("../vbscript-U2ARSJLD.js").then((m) => legacy(m.vbScript));
2074
+ }
2075
+ }),
2076
+ /* @__PURE__ */ LanguageDescription.of({
2077
+ name: "Velocity",
2078
+ extensions: ["vtl"],
2079
+ load() {
2080
+ return import("../velocity-R3AYP5XJ.js").then((m) => legacy(m.velocity));
2081
+ }
2082
+ }),
2083
+ /* @__PURE__ */ LanguageDescription.of({
2084
+ name: "Verilog",
2085
+ extensions: ["v"],
2086
+ load() {
2087
+ return import("../verilog-7VEWVDW6.js").then((m) => legacy(m.verilog));
2088
+ }
2089
+ }),
2090
+ /* @__PURE__ */ LanguageDescription.of({
2091
+ name: "VHDL",
2092
+ extensions: ["vhd", "vhdl"],
2093
+ load() {
2094
+ return import("../vhdl-JZUPPGBA.js").then((m) => legacy(m.vhdl));
2095
+ }
2096
+ }),
2097
+ /* @__PURE__ */ LanguageDescription.of({
2098
+ name: "XQuery",
2099
+ extensions: ["xy", "xquery", "xq", "xqm", "xqy"],
2100
+ load() {
2101
+ return import("../xquery-VXP5KJ6N.js").then((m) => legacy(m.xQuery));
2102
+ }
2103
+ }),
2104
+ /* @__PURE__ */ LanguageDescription.of({
2105
+ name: "Yacas",
2106
+ extensions: ["ys"],
2107
+ load() {
2108
+ return import("../yacas-JRBC4BEV.js").then((m) => legacy(m.yacas));
2109
+ }
2110
+ }),
2111
+ /* @__PURE__ */ LanguageDescription.of({
2112
+ name: "Z80",
2113
+ extensions: ["z80"],
2114
+ load() {
2115
+ return import("../z80-AJF6WLUV.js").then((m) => legacy(m.z80));
2116
+ }
2117
+ }),
2118
+ /* @__PURE__ */ LanguageDescription.of({
2119
+ name: "MscGen",
2120
+ extensions: ["mscgen", "mscin", "msc"],
2121
+ load() {
2122
+ return import("../mscgen-5BORDYHW.js").then((m) => legacy(m.mscgen));
2123
+ }
2124
+ }),
2125
+ /* @__PURE__ */ LanguageDescription.of({
2126
+ name: "X\xF9",
2127
+ extensions: ["xu"],
2128
+ load() {
2129
+ return import("../mscgen-5BORDYHW.js").then((m) => legacy(m.xu));
2130
+ }
2131
+ }),
2132
+ /* @__PURE__ */ LanguageDescription.of({
2133
+ name: "MsGenny",
2134
+ extensions: ["msgenny"],
2135
+ load() {
2136
+ return import("../mscgen-5BORDYHW.js").then((m) => legacy(m.msgenny));
2137
+ }
2138
+ }),
2139
+ /* @__PURE__ */ LanguageDescription.of({
2140
+ name: "Vue",
2141
+ extensions: ["vue"],
2142
+ load() {
2143
+ return import("../dist-FDBKXKIA.js").then((m) => m.vue());
2144
+ }
2145
+ }),
2146
+ /* @__PURE__ */ LanguageDescription.of({
2147
+ name: "Angular Template",
2148
+ load() {
2149
+ return import("../dist-2O4EI6YQ.js").then((m) => m.angular());
2150
+ }
2151
+ })
2152
+ ];
2153
+
2154
+ // ../node_modules/.pnpm/@codemirror+search@6.7.1/node_modules/@codemirror/search/dist/index.js
2155
+ import { showDialog, EditorView as EditorView2, Decoration, ViewPlugin, showPanel, runScopeHandlers, getPanel } from "@codemirror/view";
2156
+ import { codePointAt, fromCodePoint, codePointSize, EditorSelection as EditorSelection2, Facet as Facet2, combineConfig as combineConfig2, CharCategory as CharCategory2, StateEffect as StateEffect2, StateField as StateField2, RangeSetBuilder, Prec, EditorState, findClusterBreak as findClusterBreak2 } from "@codemirror/state";
2157
+
2158
+ // ../node_modules/.pnpm/crelt@1.0.7/node_modules/crelt/index.js
2159
+ function crelt() {
2160
+ var elt = arguments[0];
2161
+ if (typeof elt == "string") elt = document.createElement(elt);
2162
+ var i = 1, next = arguments[1];
2163
+ if (next && typeof next == "object" && next.nodeType == null && !Array.isArray(next)) {
2164
+ for (var name in next) if (Object.prototype.hasOwnProperty.call(next, name)) {
2165
+ var value = next[name];
2166
+ if (typeof value == "string") elt.setAttribute(name, value);
2167
+ else if (value != null) elt[name] = value;
2168
+ }
2169
+ i++;
2170
+ }
2171
+ for (; i < arguments.length; i++) add(elt, arguments[i]);
2172
+ return elt;
2173
+ }
2174
+ function add(elt, child) {
2175
+ if (typeof child == "string") {
2176
+ elt.appendChild(document.createTextNode(child));
2177
+ } else if (child == null) {
2178
+ } else if (child.nodeType != null) {
2179
+ elt.appendChild(child);
2180
+ } else if (Array.isArray(child)) {
2181
+ for (var i = 0; i < child.length; i++) add(elt, child[i]);
2182
+ } else {
2183
+ throw new RangeError("Unsupported child node: " + child);
2184
+ }
2185
+ }
2186
+
2187
+ // ../node_modules/.pnpm/@codemirror+search@6.7.1/node_modules/@codemirror/search/dist/index.js
2188
+ var basicNormalize = typeof String.prototype.normalize == "function" ? (x) => x.normalize("NFKD") : (x) => x;
2189
+ var SearchCursor = class {
2190
+ /**
2191
+ Create a text cursor. The query is the search string, `from` to
2192
+ `to` provides the region to search.
2193
+
2194
+ When `normalize` is given, it will be called, on both the query
2195
+ string and the content it is matched against, before comparing.
2196
+ You can, for example, create a case-insensitive search by
2197
+ passing `s => s.toLowerCase()`.
2198
+
2199
+ Text is always normalized with
2200
+ [`.normalize("NFKD")`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/normalize)
2201
+ (when supported).
2202
+ */
2203
+ constructor(text, query, from = 0, to = text.length, normalize, test) {
2204
+ this.test = test;
2205
+ this.value = { from: 0, to: 0, precise: false };
2206
+ this.done = false;
2207
+ this.matches = [];
2208
+ this.buffer = "";
2209
+ this.bufferPos = 0;
2210
+ this.iter = text.iterRange(from, to);
2211
+ this.bufferStart = from;
2212
+ this.normalize = normalize ? (x) => normalize(basicNormalize(x)) : basicNormalize;
2213
+ this.query = this.normalize(query);
2214
+ }
2215
+ peek() {
2216
+ if (this.bufferPos == this.buffer.length) {
2217
+ this.bufferStart += this.buffer.length;
2218
+ this.iter.next();
2219
+ if (this.iter.done)
2220
+ return -1;
2221
+ this.bufferPos = 0;
2222
+ this.buffer = this.iter.value;
2223
+ }
2224
+ return codePointAt(this.buffer, this.bufferPos);
2225
+ }
2226
+ /**
2227
+ Look for the next match. Updates the iterator's
2228
+ [`value`](https://codemirror.net/6/docs/ref/#search.SearchCursor.value) and
2229
+ [`done`](https://codemirror.net/6/docs/ref/#search.SearchCursor.done) properties. Should be called
2230
+ at least once before using the cursor.
2231
+ */
2232
+ next() {
2233
+ while (this.matches.length)
2234
+ this.matches.pop();
2235
+ return this.nextOverlapping();
2236
+ }
2237
+ /**
2238
+ The `next` method will ignore matches that partially overlap a
2239
+ previous match. This method behaves like `next`, but includes
2240
+ such matches.
2241
+ */
2242
+ nextOverlapping() {
2243
+ for (; ; ) {
2244
+ let next = this.peek();
2245
+ if (next < 0) {
2246
+ this.done = true;
2247
+ return this;
2248
+ }
2249
+ let str = fromCodePoint(next), start = this.bufferStart + this.bufferPos;
2250
+ this.bufferPos += codePointSize(next);
2251
+ let norm = this.normalize(str);
2252
+ if (norm.length)
2253
+ for (let i = 0, pos = start, posPrecise = true; ; i++) {
2254
+ let code = norm.charCodeAt(i);
2255
+ let match = this.match(code, pos, posPrecise, this.bufferPos + this.bufferStart, i == norm.length - 1);
2256
+ if (match) {
2257
+ this.value = match;
2258
+ return this;
2259
+ }
2260
+ if (i == norm.length - 1)
2261
+ break;
2262
+ if (posPrecise && i < str.length && str.charCodeAt(i) == code)
2263
+ pos++;
2264
+ else
2265
+ posPrecise = false;
2266
+ }
2267
+ }
2268
+ }
2269
+ match(code, pos, posPrecise, end, endPrecise) {
2270
+ let match = null;
2271
+ for (let i = 0; i < this.matches.length; ) {
2272
+ let partial = this.matches[i], keep = false;
2273
+ if (this.query.charCodeAt(partial.index) == code) {
2274
+ if (partial.index == this.query.length - 1) {
2275
+ match = { from: partial.from, to: end, precise: endPrecise && partial.precise };
2276
+ } else {
2277
+ partial.index++;
2278
+ keep = true;
2279
+ }
2280
+ }
2281
+ if (keep)
2282
+ i++;
2283
+ else
2284
+ this.matches.splice(i, 1);
2285
+ }
2286
+ if (this.query.charCodeAt(0) == code) {
2287
+ if (this.query.length == 1)
2288
+ match = { from: pos, to: end, precise: posPrecise && endPrecise };
2289
+ else
2290
+ this.matches.push({ from: pos, index: 1, precise: posPrecise });
2291
+ }
2292
+ if (match && this.test && !this.test(match.from, match.to, this.buffer, this.bufferStart))
2293
+ match = null;
2294
+ return match;
2295
+ }
2296
+ };
2297
+ if (typeof Symbol != "undefined")
2298
+ SearchCursor.prototype[Symbol.iterator] = function() {
2299
+ return this;
2300
+ };
2301
+ var empty = { from: -1, to: -1, match: /* @__PURE__ */ /.*/.exec(""), precise: true };
2302
+ var baseFlags = "gm" + (/x/.unicode == null ? "" : "u");
2303
+ var RegExpCursor = class {
2304
+ /**
2305
+ Create a cursor that will search the given range in the given
2306
+ document. `query` should be the raw pattern (as you'd pass it to
2307
+ `new RegExp`).
2308
+ */
2309
+ constructor(text, query, options, from = 0, to = text.length) {
2310
+ this.text = text;
2311
+ this.to = to;
2312
+ this.curLine = "";
2313
+ this.done = false;
2314
+ this.value = empty;
2315
+ if (/\\[sWDnr]|\n|\r|\[\^/.test(query))
2316
+ return new MultilineRegExpCursor(text, query, options, from, to);
2317
+ this.re = new RegExp(query, baseFlags + ((options === null || options === void 0 ? void 0 : options.ignoreCase) ? "i" : ""));
2318
+ this.test = options === null || options === void 0 ? void 0 : options.test;
2319
+ this.iter = text.iter();
2320
+ let startLine = text.lineAt(from);
2321
+ this.curLineStart = startLine.from;
2322
+ this.matchPos = toCharEnd(text, from);
2323
+ this.getLine(this.curLineStart);
2324
+ }
2325
+ getLine(skip) {
2326
+ this.iter.next(skip);
2327
+ if (this.iter.lineBreak) {
2328
+ this.curLine = "";
2329
+ } else {
2330
+ this.curLine = this.iter.value;
2331
+ if (this.curLineStart + this.curLine.length > this.to)
2332
+ this.curLine = this.curLine.slice(0, this.to - this.curLineStart);
2333
+ this.iter.next();
2334
+ }
2335
+ }
2336
+ nextLine() {
2337
+ this.curLineStart = this.curLineStart + this.curLine.length + 1;
2338
+ if (this.curLineStart > this.to)
2339
+ this.curLine = "";
2340
+ else
2341
+ this.getLine(0);
2342
+ }
2343
+ /**
2344
+ Move to the next match, if there is one.
2345
+ */
2346
+ next() {
2347
+ for (let off = this.matchPos - this.curLineStart; ; ) {
2348
+ this.re.lastIndex = off;
2349
+ let match = this.matchPos <= this.to && this.re.exec(this.curLine);
2350
+ if (match) {
2351
+ let from = this.curLineStart + match.index, to = from + match[0].length;
2352
+ this.matchPos = toCharEnd(this.text, to + (from == to ? 1 : 0));
2353
+ if (from == this.curLineStart + this.curLine.length)
2354
+ this.nextLine();
2355
+ if ((from < to || from > this.value.to) && (!this.test || this.test(from, to, match))) {
2356
+ this.value = { from, to, precise: true, match };
2357
+ return this;
2358
+ }
2359
+ off = this.matchPos - this.curLineStart;
2360
+ } else if (this.curLineStart + this.curLine.length < this.to) {
2361
+ this.nextLine();
2362
+ off = 0;
2363
+ } else {
2364
+ this.done = true;
2365
+ return this;
2366
+ }
2367
+ }
2368
+ }
2369
+ };
2370
+ var flattened = /* @__PURE__ */ new WeakMap();
2371
+ var FlattenedDoc = class _FlattenedDoc {
2372
+ constructor(from, text) {
2373
+ this.from = from;
2374
+ this.text = text;
2375
+ }
2376
+ get to() {
2377
+ return this.from + this.text.length;
2378
+ }
2379
+ static get(doc, from, to) {
2380
+ let cached = flattened.get(doc);
2381
+ if (!cached || cached.from >= to || cached.to <= from) {
2382
+ let flat = new _FlattenedDoc(from, doc.sliceString(from, to));
2383
+ flattened.set(doc, flat);
2384
+ return flat;
2385
+ }
2386
+ if (cached.from == from && cached.to == to)
2387
+ return cached;
2388
+ let { text, from: cachedFrom } = cached;
2389
+ if (cachedFrom > from) {
2390
+ text = doc.sliceString(from, cachedFrom) + text;
2391
+ cachedFrom = from;
2392
+ }
2393
+ if (cached.to < to)
2394
+ text += doc.sliceString(cached.to, to);
2395
+ flattened.set(doc, new _FlattenedDoc(cachedFrom, text));
2396
+ return new _FlattenedDoc(from, text.slice(from - cachedFrom, to - cachedFrom));
2397
+ }
2398
+ };
2399
+ var MultilineRegExpCursor = class {
2400
+ constructor(text, query, options, from, to) {
2401
+ this.text = text;
2402
+ this.to = to;
2403
+ this.done = false;
2404
+ this.value = empty;
2405
+ this.matchPos = toCharEnd(text, from);
2406
+ this.re = new RegExp(query, baseFlags + ((options === null || options === void 0 ? void 0 : options.ignoreCase) ? "i" : ""));
2407
+ this.test = options === null || options === void 0 ? void 0 : options.test;
2408
+ this.flat = FlattenedDoc.get(text, from, this.chunkEnd(
2409
+ from + 5e3
2410
+ /* Chunk.Base */
2411
+ ));
2412
+ }
2413
+ chunkEnd(pos) {
2414
+ return pos >= this.to ? this.to : this.text.lineAt(pos).to;
2415
+ }
2416
+ next() {
2417
+ for (; ; ) {
2418
+ let off = this.re.lastIndex = this.matchPos - this.flat.from;
2419
+ let match = this.re.exec(this.flat.text);
2420
+ if (match && !match[0] && match.index == off) {
2421
+ this.re.lastIndex = off + 1;
2422
+ match = this.re.exec(this.flat.text);
2423
+ }
2424
+ if (match) {
2425
+ let from = this.flat.from + match.index, to = from + match[0].length;
2426
+ if ((this.flat.to >= this.to || match.index + match[0].length <= this.flat.text.length - 10) && (!this.test || this.test(from, to, match))) {
2427
+ this.value = { from, to, precise: true, match };
2428
+ this.matchPos = toCharEnd(this.text, to + (from == to ? 1 : 0));
2429
+ return this;
2430
+ }
2431
+ }
2432
+ if (this.flat.to == this.to) {
2433
+ this.done = true;
2434
+ return this;
2435
+ }
2436
+ this.flat = FlattenedDoc.get(this.text, this.flat.from, this.chunkEnd(this.flat.from + this.flat.text.length * 2));
2437
+ }
2438
+ }
2439
+ };
2440
+ if (typeof Symbol != "undefined") {
2441
+ RegExpCursor.prototype[Symbol.iterator] = MultilineRegExpCursor.prototype[Symbol.iterator] = function() {
2442
+ return this;
2443
+ };
2444
+ }
2445
+ function validRegExp(source) {
2446
+ try {
2447
+ new RegExp(source, baseFlags);
2448
+ return true;
2449
+ } catch (_a) {
2450
+ return false;
2451
+ }
2452
+ }
2453
+ function toCharEnd(text, pos) {
2454
+ if (pos >= text.length)
2455
+ return pos;
2456
+ let line = text.lineAt(pos), next;
2457
+ while (pos < line.to && (next = line.text.charCodeAt(pos - line.from)) >= 56320 && next < 57344)
2458
+ pos++;
2459
+ return pos;
2460
+ }
2461
+ var gotoLine = (view) => {
2462
+ let { state } = view;
2463
+ let line = String(state.doc.lineAt(view.state.selection.main.head).number);
2464
+ let { close, result } = showDialog(view, {
2465
+ label: state.phrase("Go to line"),
2466
+ input: { type: "text", name: "line", value: line },
2467
+ focus: true,
2468
+ submitLabel: state.phrase("go")
2469
+ });
2470
+ result.then((form) => {
2471
+ let match = form && /^([+-])?(\d+)?(:\d+)?(%)?$/.exec(form.elements["line"].value);
2472
+ if (!match) {
2473
+ view.dispatch({ effects: close });
2474
+ return;
2475
+ }
2476
+ let startLine = state.doc.lineAt(state.selection.main.head);
2477
+ let [, sign, ln, cl, percent] = match;
2478
+ let col = cl ? +cl.slice(1) : 0;
2479
+ let line2 = ln ? +ln : startLine.number;
2480
+ if (ln && percent) {
2481
+ let pc = line2 / 100;
2482
+ if (sign)
2483
+ pc = pc * (sign == "-" ? -1 : 1) + startLine.number / state.doc.lines;
2484
+ line2 = Math.round(state.doc.lines * pc);
2485
+ } else if (ln && sign) {
2486
+ line2 = line2 * (sign == "-" ? -1 : 1) + startLine.number;
2487
+ }
2488
+ let docLine = state.doc.line(Math.max(1, Math.min(state.doc.lines, line2)));
2489
+ let selection = EditorSelection2.cursor(docLine.from + Math.max(0, Math.min(col, docLine.length)));
2490
+ view.dispatch({
2491
+ effects: [close, EditorView2.scrollIntoView(selection.from, { y: "center" })],
2492
+ selection
2493
+ });
2494
+ });
2495
+ return true;
2496
+ };
2497
+ var selectWord = ({ state, dispatch }) => {
2498
+ let { selection } = state;
2499
+ let newSel = EditorSelection2.create(selection.ranges.map((range) => state.wordAt(range.head) || EditorSelection2.cursor(range.head)), selection.mainIndex);
2500
+ if (newSel.eq(selection))
2501
+ return false;
2502
+ dispatch(state.update({ selection: newSel }));
2503
+ return true;
2504
+ };
2505
+ function findNextOccurrence(state, query) {
2506
+ let { main, ranges } = state.selection;
2507
+ let word = state.wordAt(main.head), fullWord = word && word.from == main.from && word.to == main.to;
2508
+ for (let cycled = false, cursor = new SearchCursor(state.doc, query, ranges[ranges.length - 1].to); ; ) {
2509
+ cursor.next();
2510
+ if (cursor.done) {
2511
+ if (cycled)
2512
+ return null;
2513
+ cursor = new SearchCursor(state.doc, query, 0, Math.max(0, ranges[ranges.length - 1].from - 1));
2514
+ cycled = true;
2515
+ } else {
2516
+ if (cycled && ranges.some((r) => r.from == cursor.value.from))
2517
+ continue;
2518
+ if (fullWord) {
2519
+ let word2 = state.wordAt(cursor.value.from);
2520
+ if (!word2 || word2.from != cursor.value.from || word2.to != cursor.value.to)
2521
+ continue;
2522
+ }
2523
+ return cursor.value;
2524
+ }
2525
+ }
2526
+ }
2527
+ var selectNextOccurrence = ({ state, dispatch }) => {
2528
+ let { ranges } = state.selection;
2529
+ if (ranges.some((sel) => sel.from === sel.to))
2530
+ return selectWord({ state, dispatch });
2531
+ let searchedText = state.sliceDoc(ranges[0].from, ranges[0].to);
2532
+ if (state.selection.ranges.some((r) => state.sliceDoc(r.from, r.to) != searchedText))
2533
+ return false;
2534
+ let range = findNextOccurrence(state, searchedText);
2535
+ if (!range)
2536
+ return false;
2537
+ dispatch(state.update({
2538
+ selection: state.selection.addRange(EditorSelection2.range(range.from, range.to), false),
2539
+ effects: EditorView2.scrollIntoView(range.to)
2540
+ }));
2541
+ return true;
2542
+ };
2543
+ var searchConfigFacet = /* @__PURE__ */ Facet2.define({
2544
+ combine(configs) {
2545
+ return combineConfig2(configs, {
2546
+ top: false,
2547
+ caseSensitive: false,
2548
+ literal: false,
2549
+ regexp: false,
2550
+ wholeWord: false,
2551
+ createPanel: (view) => new SearchPanel(view),
2552
+ scrollToMatch: (range) => EditorView2.scrollIntoView(range)
2553
+ });
2554
+ }
2555
+ });
2556
+ var SearchQuery = class {
2557
+ /**
2558
+ Create a query object.
2559
+ */
2560
+ constructor(config) {
2561
+ this.search = config.search;
2562
+ this.caseSensitive = !!config.caseSensitive;
2563
+ this.literal = !!config.literal;
2564
+ this.regexp = !!config.regexp;
2565
+ this.replace = config.replace || "";
2566
+ this.valid = !!this.search && (!this.regexp || validRegExp(this.search));
2567
+ this.unquoted = this.unquote(this.search);
2568
+ this.wholeWord = !!config.wholeWord;
2569
+ this.test = config.test;
2570
+ }
2571
+ /**
2572
+ @internal
2573
+ */
2574
+ unquote(text) {
2575
+ return this.literal ? text : text.replace(/\\([nrt\\])/g, (_, ch) => ch == "n" ? "\n" : ch == "r" ? "\r" : ch == "t" ? " " : "\\");
2576
+ }
2577
+ /**
2578
+ Compare this query to another query.
2579
+ */
2580
+ eq(other) {
2581
+ return this.search == other.search && this.replace == other.replace && this.caseSensitive == other.caseSensitive && this.regexp == other.regexp && this.wholeWord == other.wholeWord && this.test == other.test;
2582
+ }
2583
+ /**
2584
+ @internal
2585
+ */
2586
+ create() {
2587
+ return this.regexp ? new RegExpQuery(this) : new StringQuery(this);
2588
+ }
2589
+ /**
2590
+ Get a search cursor for this query, searching through the given
2591
+ range in the given state.
2592
+ */
2593
+ getCursor(state, from = 0, to) {
2594
+ let st = state.doc ? state : EditorState.create({ doc: state });
2595
+ if (to == null)
2596
+ to = st.doc.length;
2597
+ return this.regexp ? regexpCursor(this, st, from, to) : stringCursor(this, st, from, to);
2598
+ }
2599
+ };
2600
+ var QueryType = class {
2601
+ constructor(spec) {
2602
+ this.spec = spec;
2603
+ }
2604
+ };
2605
+ function wrapStringTest(test, state, inner) {
2606
+ return (from, to, buffer, bufferPos) => {
2607
+ if (inner && !inner(from, to, buffer, bufferPos))
2608
+ return false;
2609
+ let match = from >= bufferPos && to <= bufferPos + buffer.length ? buffer.slice(from - bufferPos, to - bufferPos) : state.doc.sliceString(from, to);
2610
+ return test(match, state, from, to);
2611
+ };
2612
+ }
2613
+ function stringCursor(spec, state, from, to) {
2614
+ let test;
2615
+ if (spec.wholeWord)
2616
+ test = stringWordTest(state.doc, state.charCategorizer(state.selection.main.head));
2617
+ if (spec.test)
2618
+ test = wrapStringTest(spec.test, state, test);
2619
+ return new SearchCursor(state.doc, spec.unquoted, from, to, spec.caseSensitive ? void 0 : (x) => x.toLowerCase(), test);
2620
+ }
2621
+ function stringWordTest(doc, categorizer) {
2622
+ return (from, to, buf, bufPos) => {
2623
+ if (bufPos > from || bufPos + buf.length < to) {
2624
+ bufPos = Math.max(0, from - 2);
2625
+ buf = doc.sliceString(bufPos, Math.min(doc.length, to + 2));
2626
+ }
2627
+ return (categorizer(charBefore(buf, from - bufPos)) != CharCategory2.Word || categorizer(charAfter(buf, from - bufPos)) != CharCategory2.Word) && (categorizer(charAfter(buf, to - bufPos)) != CharCategory2.Word || categorizer(charBefore(buf, to - bufPos)) != CharCategory2.Word);
2628
+ };
2629
+ }
2630
+ var StringQuery = class extends QueryType {
2631
+ constructor(spec) {
2632
+ super(spec);
2633
+ }
2634
+ nextMatch(state, curFrom, curTo) {
2635
+ let cursor = stringCursor(this.spec, state, curTo, state.doc.length).nextOverlapping();
2636
+ if (cursor.done) {
2637
+ let end = Math.min(state.doc.length, curFrom + this.spec.unquoted.length);
2638
+ cursor = stringCursor(this.spec, state, 0, end).nextOverlapping();
2639
+ }
2640
+ return cursor.done || cursor.value.from == curFrom && cursor.value.to == curTo ? null : cursor.value;
2641
+ }
2642
+ // Searching in reverse is, rather than implementing an inverted search
2643
+ // cursor, done by scanning chunk after chunk forward.
2644
+ prevMatchInRange(state, from, to) {
2645
+ for (let pos = to; ; ) {
2646
+ let start = Math.max(from, pos - 1e4 - this.spec.unquoted.length);
2647
+ let cursor = stringCursor(this.spec, state, start, pos), range = null;
2648
+ while (!cursor.nextOverlapping().done)
2649
+ range = cursor.value;
2650
+ if (range)
2651
+ return range;
2652
+ if (start == from)
2653
+ return null;
2654
+ pos -= 1e4;
2655
+ }
2656
+ }
2657
+ prevMatch(state, curFrom, curTo) {
2658
+ let found = this.prevMatchInRange(state, 0, curFrom);
2659
+ if (!found)
2660
+ found = this.prevMatchInRange(state, Math.max(0, curTo - this.spec.unquoted.length), state.doc.length);
2661
+ return found && (found.from != curFrom || found.to != curTo) ? found : null;
2662
+ }
2663
+ getReplacement(_result) {
2664
+ return this.spec.unquote(this.spec.replace);
2665
+ }
2666
+ matchAll(state, limit) {
2667
+ let cursor = stringCursor(this.spec, state, 0, state.doc.length), ranges = [];
2668
+ while (!cursor.next().done) {
2669
+ if (ranges.length >= limit)
2670
+ return null;
2671
+ ranges.push(cursor.value);
2672
+ }
2673
+ return ranges;
2674
+ }
2675
+ highlight(state, from, to, add2) {
2676
+ let cursor = stringCursor(this.spec, state, Math.max(0, from - this.spec.unquoted.length), Math.min(to + this.spec.unquoted.length, state.doc.length));
2677
+ while (!cursor.next().done)
2678
+ add2(cursor.value.from, cursor.value.to);
2679
+ }
2680
+ };
2681
+ function wrapRegexpTest(test, state, inner) {
2682
+ return (from, to, match) => {
2683
+ return (!inner || inner(from, to, match)) && test(match[0], state, from, to);
2684
+ };
2685
+ }
2686
+ function regexpCursor(spec, state, from, to) {
2687
+ let test;
2688
+ if (spec.wholeWord)
2689
+ test = regexpWordTest(state.charCategorizer(state.selection.main.head));
2690
+ if (spec.test)
2691
+ test = wrapRegexpTest(spec.test, state, test);
2692
+ return new RegExpCursor(state.doc, spec.search, { ignoreCase: !spec.caseSensitive, test }, from, to);
2693
+ }
2694
+ function charBefore(str, index) {
2695
+ return str.slice(findClusterBreak2(str, index, false), index);
2696
+ }
2697
+ function charAfter(str, index) {
2698
+ return str.slice(index, findClusterBreak2(str, index));
2699
+ }
2700
+ function regexpWordTest(categorizer) {
2701
+ return (_from, _to, match) => !match[0].length || (categorizer(charBefore(match.input, match.index)) != CharCategory2.Word || categorizer(charAfter(match.input, match.index)) != CharCategory2.Word) && (categorizer(charAfter(match.input, match.index + match[0].length)) != CharCategory2.Word || categorizer(charBefore(match.input, match.index + match[0].length)) != CharCategory2.Word);
2702
+ }
2703
+ var RegExpQuery = class extends QueryType {
2704
+ nextMatch(state, curFrom, curTo) {
2705
+ let cursor = regexpCursor(this.spec, state, curTo, state.doc.length).next();
2706
+ if (cursor.done)
2707
+ cursor = regexpCursor(this.spec, state, 0, curFrom).next();
2708
+ return cursor.done ? null : cursor.value;
2709
+ }
2710
+ prevMatchInRange(state, from, to) {
2711
+ for (let size = 1; ; size++) {
2712
+ let start = Math.max(
2713
+ from,
2714
+ to - size * 1e4
2715
+ /* FindPrev.ChunkSize */
2716
+ );
2717
+ let cursor = regexpCursor(this.spec, state, start, to), range = null;
2718
+ while (!cursor.next().done)
2719
+ range = cursor.value;
2720
+ if (range && (start == from || range.from > start + 10))
2721
+ return range;
2722
+ if (start == from)
2723
+ return null;
2724
+ }
2725
+ }
2726
+ prevMatch(state, curFrom, curTo) {
2727
+ return this.prevMatchInRange(state, 0, curFrom) || this.prevMatchInRange(state, curTo, state.doc.length);
2728
+ }
2729
+ getReplacement(result) {
2730
+ return this.spec.unquote(this.spec.replace).replace(/\$([$&]|\d+)/g, (m, i) => {
2731
+ if (i == "&")
2732
+ return result.match[0];
2733
+ if (i == "$")
2734
+ return "$";
2735
+ for (let l = i.length; l > 0; l--) {
2736
+ let n = +i.slice(0, l);
2737
+ if (n > 0 && n < result.match.length)
2738
+ return result.match[n] + i.slice(l);
2739
+ }
2740
+ return m;
2741
+ });
2742
+ }
2743
+ matchAll(state, limit) {
2744
+ let cursor = regexpCursor(this.spec, state, 0, state.doc.length), ranges = [];
2745
+ while (!cursor.next().done) {
2746
+ if (ranges.length >= limit)
2747
+ return null;
2748
+ ranges.push(cursor.value);
2749
+ }
2750
+ return ranges;
2751
+ }
2752
+ highlight(state, from, to, add2) {
2753
+ let cursor = regexpCursor(this.spec, state, Math.max(
2754
+ 0,
2755
+ from - 250
2756
+ /* RegExp.HighlightMargin */
2757
+ ), Math.min(to + 250, state.doc.length));
2758
+ while (!cursor.next().done)
2759
+ add2(cursor.value.from, cursor.value.to);
2760
+ }
2761
+ };
2762
+ var setSearchQuery = /* @__PURE__ */ StateEffect2.define();
2763
+ var togglePanel = /* @__PURE__ */ StateEffect2.define();
2764
+ var searchState = /* @__PURE__ */ StateField2.define({
2765
+ create(state) {
2766
+ return new SearchState(defaultQuery(state).create(), null);
2767
+ },
2768
+ update(value, tr) {
2769
+ for (let effect of tr.effects) {
2770
+ if (effect.is(setSearchQuery))
2771
+ value = new SearchState(effect.value.create(), value.panel);
2772
+ else if (effect.is(togglePanel))
2773
+ value = new SearchState(value.query, effect.value ? createSearchPanel : null);
2774
+ }
2775
+ return value;
2776
+ },
2777
+ provide: (f) => showPanel.from(f, (val) => val.panel)
2778
+ });
2779
+ var SearchState = class {
2780
+ constructor(query, panel) {
2781
+ this.query = query;
2782
+ this.panel = panel;
2783
+ }
2784
+ };
2785
+ var matchMark = /* @__PURE__ */ Decoration.mark({ class: "cm-searchMatch" });
2786
+ var selectedMatchMark = /* @__PURE__ */ Decoration.mark({ class: "cm-searchMatch cm-searchMatch-selected" });
2787
+ var searchHighlighter = /* @__PURE__ */ ViewPlugin.fromClass(class {
2788
+ constructor(view) {
2789
+ this.view = view;
2790
+ this.decorations = this.highlight(view.state.field(searchState));
2791
+ }
2792
+ update(update) {
2793
+ let state = update.state.field(searchState);
2794
+ if (state != update.startState.field(searchState) || update.docChanged || update.selectionSet || update.viewportChanged)
2795
+ this.decorations = this.highlight(state);
2796
+ }
2797
+ highlight({ query, panel }) {
2798
+ if (!panel || !query.spec.valid)
2799
+ return Decoration.none;
2800
+ let { view } = this;
2801
+ let builder = new RangeSetBuilder();
2802
+ for (let i = 0, ranges = view.visibleRanges, l = ranges.length; i < l; i++) {
2803
+ let { from, to } = ranges[i];
2804
+ while (i < l - 1 && to > ranges[i + 1].from - 2 * 250)
2805
+ to = ranges[++i].to;
2806
+ query.highlight(view.state, from, to, (from2, to2) => {
2807
+ let selected = view.state.selection.ranges.some((r) => r.from == from2 && r.to == to2);
2808
+ builder.add(from2, to2, selected ? selectedMatchMark : matchMark);
2809
+ });
2810
+ }
2811
+ return builder.finish();
2812
+ }
2813
+ }, {
2814
+ decorations: (v) => v.decorations
2815
+ });
2816
+ function searchCommand(f) {
2817
+ return (view) => {
2818
+ let state = view.state.field(searchState, false);
2819
+ return state && state.query.spec.valid ? f(view, state) : openSearchPanel(view);
2820
+ };
2821
+ }
2822
+ var findNext = /* @__PURE__ */ searchCommand((view, { query }) => {
2823
+ let { to } = view.state.selection.main;
2824
+ let next = query.nextMatch(view.state, to, to);
2825
+ if (!next)
2826
+ return false;
2827
+ let selection = EditorSelection2.single(next.from, next.to);
2828
+ let config = view.state.facet(searchConfigFacet);
2829
+ view.dispatch({
2830
+ selection,
2831
+ effects: [announceMatch(view, next), config.scrollToMatch(selection.main, view)],
2832
+ userEvent: "select.search"
2833
+ });
2834
+ selectSearchInput(view);
2835
+ return true;
2836
+ });
2837
+ var findPrevious = /* @__PURE__ */ searchCommand((view, { query }) => {
2838
+ let { state } = view, { from } = state.selection.main;
2839
+ let prev = query.prevMatch(state, from, from);
2840
+ if (!prev)
2841
+ return false;
2842
+ let selection = EditorSelection2.single(prev.from, prev.to);
2843
+ let config = view.state.facet(searchConfigFacet);
2844
+ view.dispatch({
2845
+ selection,
2846
+ effects: [announceMatch(view, prev), config.scrollToMatch(selection.main, view)],
2847
+ userEvent: "select.search"
2848
+ });
2849
+ selectSearchInput(view);
2850
+ return true;
2851
+ });
2852
+ var selectMatches = /* @__PURE__ */ searchCommand((view, { query }) => {
2853
+ let ranges = query.matchAll(view.state, 1e3);
2854
+ if (!ranges || !ranges.length)
2855
+ return false;
2856
+ view.dispatch({
2857
+ selection: EditorSelection2.create(ranges.map((r) => EditorSelection2.range(r.from, r.to))),
2858
+ userEvent: "select.search.matches"
2859
+ });
2860
+ return true;
2861
+ });
2862
+ var selectSelectionMatches = ({ state, dispatch }) => {
2863
+ let sel = state.selection;
2864
+ if (sel.ranges.length > 1 || sel.main.empty)
2865
+ return false;
2866
+ let { from, to } = sel.main;
2867
+ let ranges = [], main = 0;
2868
+ for (let cur = new SearchCursor(state.doc, state.sliceDoc(from, to)); !cur.next().done; ) {
2869
+ if (ranges.length > 1e3)
2870
+ return false;
2871
+ if (cur.value.from == from)
2872
+ main = ranges.length;
2873
+ ranges.push(EditorSelection2.range(cur.value.from, cur.value.to));
2874
+ }
2875
+ dispatch(state.update({
2876
+ selection: EditorSelection2.create(ranges, main),
2877
+ userEvent: "select.search.matches"
2878
+ }));
2879
+ return true;
2880
+ };
2881
+ var replaceNext = /* @__PURE__ */ searchCommand((view, { query }) => {
2882
+ let { state } = view, { from, to } = state.selection.main;
2883
+ if (state.readOnly)
2884
+ return false;
2885
+ let match = query.nextMatch(state, from, from);
2886
+ if (!match)
2887
+ return false;
2888
+ let next = match;
2889
+ let changes = [], selection, replacement;
2890
+ let effects = [];
2891
+ if (!next.precise) {
2892
+ next = query.nextMatch(state, next.from, next.to);
2893
+ } else if (next.from == from && next.to == to) {
2894
+ replacement = state.toText(query.getReplacement(next));
2895
+ changes.push({ from: next.from, to: next.to, insert: replacement });
2896
+ next = query.nextMatch(state, next.from, next.to);
2897
+ effects.push(EditorView2.announce.of(state.phrase("replaced match on line $", state.doc.lineAt(from).number) + "."));
2898
+ }
2899
+ let changeSet = view.state.changes(changes);
2900
+ if (next) {
2901
+ selection = EditorSelection2.single(next.from, next.to).map(changeSet);
2902
+ effects.push(announceMatch(view, next));
2903
+ effects.push(state.facet(searchConfigFacet).scrollToMatch(selection.main, view));
2904
+ }
2905
+ view.dispatch({
2906
+ changes: changeSet,
2907
+ selection,
2908
+ effects,
2909
+ userEvent: "input.replace"
2910
+ });
2911
+ return true;
2912
+ });
2913
+ var replaceAll = /* @__PURE__ */ searchCommand((view, { query }) => {
2914
+ if (view.state.readOnly)
2915
+ return false;
2916
+ let changes = [];
2917
+ for (let match of query.matchAll(view.state, 1e9)) {
2918
+ let { from, to, precise } = match;
2919
+ if (precise)
2920
+ changes.push({ from, to, insert: query.getReplacement(match) });
2921
+ }
2922
+ if (!changes.length)
2923
+ return false;
2924
+ let announceText = view.state.phrase("replaced $ matches", changes.length) + ".";
2925
+ view.dispatch({
2926
+ changes,
2927
+ effects: EditorView2.announce.of(announceText),
2928
+ userEvent: "input.replace.all"
2929
+ });
2930
+ return true;
2931
+ });
2932
+ function createSearchPanel(view) {
2933
+ return view.state.facet(searchConfigFacet).createPanel(view);
2934
+ }
2935
+ function defaultQuery(state, fallback) {
2936
+ var _a, _b, _c, _d, _e;
2937
+ let sel = state.selection.main;
2938
+ let selText = sel.empty || sel.to > sel.from + 100 ? "" : state.sliceDoc(sel.from, sel.to);
2939
+ if (fallback && !selText)
2940
+ return fallback;
2941
+ let config = state.facet(searchConfigFacet);
2942
+ return new SearchQuery({
2943
+ search: ((_a = fallback === null || fallback === void 0 ? void 0 : fallback.literal) !== null && _a !== void 0 ? _a : config.literal) ? selText : selText.replace(/\n/g, "\\n"),
2944
+ caseSensitive: (_b = fallback === null || fallback === void 0 ? void 0 : fallback.caseSensitive) !== null && _b !== void 0 ? _b : config.caseSensitive,
2945
+ literal: (_c = fallback === null || fallback === void 0 ? void 0 : fallback.literal) !== null && _c !== void 0 ? _c : config.literal,
2946
+ regexp: (_d = fallback === null || fallback === void 0 ? void 0 : fallback.regexp) !== null && _d !== void 0 ? _d : config.regexp,
2947
+ wholeWord: (_e = fallback === null || fallback === void 0 ? void 0 : fallback.wholeWord) !== null && _e !== void 0 ? _e : config.wholeWord
2948
+ });
2949
+ }
2950
+ function getSearchInput(view) {
2951
+ let panel = getPanel(view, createSearchPanel);
2952
+ return panel && panel.dom.querySelector("[main-field]");
2953
+ }
2954
+ function selectSearchInput(view) {
2955
+ let input = getSearchInput(view);
2956
+ if (input && input == view.root.activeElement)
2957
+ input.select();
2958
+ }
2959
+ var openSearchPanel = (view) => {
2960
+ let state = view.state.field(searchState, false);
2961
+ if (state && state.panel) {
2962
+ let searchInput = getSearchInput(view);
2963
+ if (searchInput && searchInput != view.root.activeElement) {
2964
+ let query = defaultQuery(view.state, state.query.spec);
2965
+ if (query.valid)
2966
+ view.dispatch({ effects: setSearchQuery.of(query) });
2967
+ searchInput.focus();
2968
+ searchInput.select();
2969
+ }
2970
+ } else {
2971
+ view.dispatch({ effects: [
2972
+ togglePanel.of(true),
2973
+ state ? setSearchQuery.of(defaultQuery(view.state, state.query.spec)) : StateEffect2.appendConfig.of(searchExtensions)
2974
+ ] });
2975
+ }
2976
+ return true;
2977
+ };
2978
+ var closeSearchPanel = (view) => {
2979
+ let state = view.state.field(searchState, false);
2980
+ if (!state || !state.panel)
2981
+ return false;
2982
+ let panel = getPanel(view, createSearchPanel);
2983
+ if (panel && panel.dom.contains(view.root.activeElement))
2984
+ view.focus();
2985
+ view.dispatch({ effects: togglePanel.of(false) });
2986
+ return true;
2987
+ };
2988
+ var searchKeymap = [
2989
+ { key: "Mod-f", run: openSearchPanel, scope: "editor search-panel" },
2990
+ { key: "F3", run: findNext, shift: findPrevious, scope: "editor search-panel", preventDefault: true },
2991
+ { key: "Mod-g", run: findNext, shift: findPrevious, scope: "editor search-panel", preventDefault: true },
2992
+ { key: "Escape", run: closeSearchPanel, scope: "editor search-panel" },
2993
+ { key: "Mod-Shift-l", run: selectSelectionMatches },
2994
+ { key: "Mod-Alt-g", run: gotoLine },
2995
+ { key: "Mod-d", run: selectNextOccurrence, preventDefault: true }
2996
+ ];
2997
+ var SearchPanel = class {
2998
+ constructor(view) {
2999
+ this.view = view;
3000
+ let query = this.query = view.state.field(searchState).query.spec;
3001
+ this.commit = this.commit.bind(this);
3002
+ this.searchField = crelt("input", {
3003
+ value: query.search,
3004
+ placeholder: phrase(view, "Find"),
3005
+ "aria-label": phrase(view, "Find"),
3006
+ class: "cm-textfield",
3007
+ name: "search",
3008
+ form: "",
3009
+ "main-field": "true",
3010
+ onchange: this.commit,
3011
+ onkeyup: this.commit
3012
+ });
3013
+ this.replaceField = crelt("input", {
3014
+ value: query.replace,
3015
+ placeholder: phrase(view, "Replace"),
3016
+ "aria-label": phrase(view, "Replace"),
3017
+ class: "cm-textfield",
3018
+ name: "replace",
3019
+ form: "",
3020
+ onchange: this.commit,
3021
+ onkeyup: this.commit
3022
+ });
3023
+ this.caseField = crelt("input", {
3024
+ type: "checkbox",
3025
+ name: "case",
3026
+ form: "",
3027
+ checked: query.caseSensitive,
3028
+ onchange: this.commit
3029
+ });
3030
+ this.reField = crelt("input", {
3031
+ type: "checkbox",
3032
+ name: "re",
3033
+ form: "",
3034
+ checked: query.regexp,
3035
+ onchange: this.commit
3036
+ });
3037
+ this.wordField = crelt("input", {
3038
+ type: "checkbox",
3039
+ name: "word",
3040
+ form: "",
3041
+ checked: query.wholeWord,
3042
+ onchange: this.commit
3043
+ });
3044
+ function button(name, onclick, content) {
3045
+ return crelt("button", { class: "cm-button", name, onclick, type: "button" }, content);
3046
+ }
3047
+ this.dom = crelt("div", { onkeydown: (e) => this.keydown(e), class: "cm-search" }, [
3048
+ this.searchField,
3049
+ button("next", () => findNext(view), [phrase(view, "next")]),
3050
+ button("prev", () => findPrevious(view), [phrase(view, "previous")]),
3051
+ button("select", () => selectMatches(view), [phrase(view, "all")]),
3052
+ crelt("label", null, [this.caseField, phrase(view, "match case")]),
3053
+ crelt("label", null, [this.reField, phrase(view, "regexp")]),
3054
+ crelt("label", null, [this.wordField, phrase(view, "by word")]),
3055
+ ...view.state.readOnly ? [] : [
3056
+ crelt("br"),
3057
+ this.replaceField,
3058
+ button("replace", () => replaceNext(view), [phrase(view, "replace")]),
3059
+ button("replaceAll", () => replaceAll(view), [phrase(view, "replace all")])
3060
+ ],
3061
+ crelt("button", {
3062
+ name: "close",
3063
+ onclick: () => closeSearchPanel(view),
3064
+ "aria-label": phrase(view, "close"),
3065
+ type: "button"
3066
+ }, ["\xD7"])
3067
+ ]);
3068
+ }
3069
+ commit() {
3070
+ let query = new SearchQuery({
3071
+ search: this.searchField.value,
3072
+ caseSensitive: this.caseField.checked,
3073
+ regexp: this.reField.checked,
3074
+ wholeWord: this.wordField.checked,
3075
+ replace: this.replaceField.value
3076
+ });
3077
+ if (!query.eq(this.query)) {
3078
+ this.query = query;
3079
+ this.view.dispatch({ effects: setSearchQuery.of(query) });
3080
+ }
3081
+ }
3082
+ keydown(e) {
3083
+ if (runScopeHandlers(this.view, e, "search-panel")) {
3084
+ e.preventDefault();
3085
+ } else if (e.keyCode == 13 && e.target == this.searchField) {
3086
+ e.preventDefault();
3087
+ (e.shiftKey ? findPrevious : findNext)(this.view);
3088
+ } else if (e.keyCode == 13 && e.target == this.replaceField) {
3089
+ e.preventDefault();
3090
+ replaceNext(this.view);
3091
+ }
3092
+ }
3093
+ update(update) {
3094
+ for (let tr of update.transactions)
3095
+ for (let effect of tr.effects) {
3096
+ if (effect.is(setSearchQuery) && !effect.value.eq(this.query))
3097
+ this.setQuery(effect.value);
3098
+ }
3099
+ }
3100
+ setQuery(query) {
3101
+ this.query = query;
3102
+ this.searchField.value = query.search;
3103
+ this.replaceField.value = query.replace;
3104
+ this.caseField.checked = query.caseSensitive;
3105
+ this.reField.checked = query.regexp;
3106
+ this.wordField.checked = query.wholeWord;
3107
+ }
3108
+ mount() {
3109
+ this.searchField.select();
3110
+ }
3111
+ get pos() {
3112
+ return 80;
3113
+ }
3114
+ get top() {
3115
+ return this.view.state.facet(searchConfigFacet).top;
3116
+ }
3117
+ };
3118
+ function phrase(view, phrase2) {
3119
+ return view.state.phrase(phrase2);
3120
+ }
3121
+ var AnnounceMargin = 30;
3122
+ var Break = /[\s\.,:;?!]/;
3123
+ function announceMatch(view, { from, to }) {
3124
+ let line = view.state.doc.lineAt(from), lineEnd = view.state.doc.lineAt(to).to;
3125
+ let start = Math.max(line.from, from - AnnounceMargin), end = Math.min(lineEnd, to + AnnounceMargin);
3126
+ let text = view.state.sliceDoc(start, end);
3127
+ if (start != line.from) {
3128
+ for (let i = 0; i < AnnounceMargin; i++)
3129
+ if (!Break.test(text[i + 1]) && Break.test(text[i])) {
3130
+ text = text.slice(i);
3131
+ break;
3132
+ }
3133
+ }
3134
+ if (end != lineEnd) {
3135
+ for (let i = text.length - 1; i > text.length - AnnounceMargin; i--)
3136
+ if (!Break.test(text[i - 1]) && Break.test(text[i])) {
3137
+ text = text.slice(0, i);
3138
+ break;
3139
+ }
3140
+ }
3141
+ return EditorView2.announce.of(`${view.state.phrase("current match")}. ${text} ${view.state.phrase("on line")} ${line.number}.`);
3142
+ }
3143
+ var baseTheme = /* @__PURE__ */ EditorView2.baseTheme({
3144
+ ".cm-panel.cm-search": {
3145
+ padding: "2px 6px 4px",
3146
+ position: "relative",
3147
+ "& [name=close]": {
3148
+ position: "absolute",
3149
+ top: "0",
3150
+ right: "4px",
3151
+ backgroundColor: "inherit",
3152
+ border: "none",
3153
+ font: "inherit",
3154
+ padding: 0,
3155
+ margin: 0
3156
+ },
3157
+ "& input, & button, & label": {
3158
+ margin: ".2em .6em .2em 0"
3159
+ },
3160
+ "& input[type=checkbox]": {
3161
+ marginRight: ".2em"
3162
+ },
3163
+ "& label": {
3164
+ fontSize: "80%",
3165
+ whiteSpace: "pre"
3166
+ }
3167
+ },
3168
+ "&light .cm-searchMatch": { backgroundColor: "#ffff0054" },
3169
+ "&dark .cm-searchMatch": { backgroundColor: "#00ffff8a" },
3170
+ "&light .cm-searchMatch-selected": { backgroundColor: "#ff6a0054" },
3171
+ "&dark .cm-searchMatch-selected": { backgroundColor: "#ff00ff8a" }
3172
+ });
3173
+ var searchExtensions = [
3174
+ searchState,
3175
+ /* @__PURE__ */ Prec.low(searchHighlighter),
3176
+ baseTheme
3177
+ ];
3178
+
3179
+ // src/extensions/markdown.ts
3180
+ import { EditorView as EditorView4, keymap } from "@codemirror/view";
3181
+
3182
+ // src/themes/markdown.ts
3183
+ import { RangeSetBuilder as RangeSetBuilder2 } from "@codemirror/state";
3184
+ import {
3185
+ Decoration as Decoration2,
3186
+ EditorView as EditorView3,
3187
+ ViewPlugin as ViewPlugin2,
3188
+ WidgetType
3189
+ } from "@codemirror/view";
3190
+ var MARKDOWN_STYLES = {
3191
+ "&": {},
3192
+ "&.cm-editor.cm-focused": {
3193
+ outline: "none"
3194
+ },
3195
+ "&.cm-editor": {
3196
+ height: "100%",
3197
+ display: "flex",
3198
+ alignContent: "center",
3199
+ justifyContent: "center",
3200
+ overflow: "auto"
3201
+ },
3202
+ ".cm-scroller": {
3203
+ background: "var(--text-editor-fill)"
3204
+ },
3205
+ ".cm-gutter": {
3206
+ background: "transparent"
3207
+ },
3208
+ ".cm-content": {
3209
+ // Justified text makes it look more like the I&S web essay template,
3210
+ // but doesn't feel right for most documents.
3211
+ // textAlign: "justify",
3212
+ textWrap: "pretty",
3213
+ lineHeight: "1.5rem",
3214
+ color: "var(--text-editor-line)",
3215
+ caretColor: "var(--text-editor-cursor-fill)",
3216
+ background: "var(--text-editor-fill)",
3217
+ marginBlock: "2rem",
3218
+ marginInline: "auto",
3219
+ // lol i guess this is the same as box-sizing: content-box
3220
+ maxWidth: "calc(var(--max-text-line-width, 100ex) - 2rem)",
3221
+ padding: "2rem",
3222
+ boxShadow: "none",
3223
+ marginBottom: "8em",
3224
+ borderRadius: "8px"
3225
+ },
3226
+ ".cm-content li": {
3227
+ marginBottom: 0
3228
+ },
3229
+ ".cm-activeLine": {
3230
+ backgroundColor: "inherit"
3231
+ },
3232
+ ".frontmatter, .frontmatter *": {
3233
+ fontSize: "14px",
3234
+ fontFamily: "var(--studio-family-code, monospace)",
3235
+ color: "var(--syntax-comment, #666)",
3236
+ textDecoration: "none",
3237
+ fontWeight: "normal",
3238
+ lineHeight: "0.8em"
3239
+ },
3240
+ ".cm-gutters": {
3241
+ borderRight: "0",
3242
+ border: "0",
3243
+ background: "var(--text-editor-gutter-fill)"
3244
+ },
3245
+ ".cm-comment-gutter": {
3246
+ width: "20px"
3247
+ },
3248
+ ".cm-folded-range-gutter-line-number": {
3249
+ display: "none"
3250
+ },
3251
+ ".cm-folded-range-gutter": {
3252
+ background: "var(--text-editor-fill)",
3253
+ borderRight: "0px",
3254
+ width: "40px"
3255
+ },
3256
+ ".cm-folded-line-widget": {
3257
+ background: "var(--text-editor-fill)",
3258
+ border: "0px"
3259
+ },
3260
+ ".cm-folded-range": {
3261
+ background: "var(--text-editor-fill)"
3262
+ },
3263
+ ".codeblock": {
3264
+ background: "orange"
3265
+ }
3266
+ };
3267
+ var baseHeadingStyles = {
3268
+ fontFamily: '"Merriweather Sans", sans-serif',
3269
+ fontWeight: 400,
3270
+ textDecoration: "none"
3271
+ };
3272
+ var baseCodeStyles = {
3273
+ fontFamily: "var(--studio-family-code, monospace)",
3274
+ fontSize: "1em"
3275
+ };
3276
+ var markdownSyntaxHighlighting = (style) => HighlightStyle.define([
3277
+ // this is how you ensure that codeblocks are still monospace
3278
+ {
3279
+ tag: tags.content,
3280
+ fontFamily: style == "serif" ? '"Merriweather", serif' : '"Merriweather Sans", sans-serif'
3281
+ },
3282
+ {
3283
+ tag: tags.heading1,
3284
+ ...baseHeadingStyles,
3285
+ fontSize: "1.5rem",
3286
+ lineHeight: "2rem",
3287
+ marginBottom: "1rem",
3288
+ marginTop: "2rem"
3289
+ },
3290
+ {
3291
+ tag: tags.heading2,
3292
+ ...baseHeadingStyles,
3293
+ fontSize: "1.5rem",
3294
+ lineHeight: "2rem",
3295
+ marginBottom: "1rem",
3296
+ marginTop: "2rem"
3297
+ },
3298
+ {
3299
+ tag: tags.heading3,
3300
+ ...baseHeadingStyles,
3301
+ fontSize: "1.25rem",
3302
+ lineHeight: "1.75rem",
3303
+ marginBottom: "1rem",
3304
+ marginTop: "2rem"
3305
+ },
3306
+ {
3307
+ tag: tags.heading4,
3308
+ ...baseHeadingStyles,
3309
+ fontSize: "1.1rem",
3310
+ marginBottom: "1rem",
3311
+ marginTop: "2rem"
3312
+ },
3313
+ {
3314
+ tag: tags.comment,
3315
+ color: "var(--syntax-comment, #555)",
3316
+ fontFamily: "var(--studio-family-code, monospace)"
3317
+ },
3318
+ { tag: tags.quote, fontStyle: "var(--syntax-style-quote, italic)" },
3319
+ {
3320
+ tag: tags.strong,
3321
+ fontWeight: "var(--syntax-weight-strong, bold)"
3322
+ },
3323
+ {
3324
+ tag: tags.emphasis,
3325
+ fontStyle: "var(--syntax-style-emphasis, italic)"
3326
+ },
3327
+ {
3328
+ tag: tags.strikethrough,
3329
+ textDecoration: "line-through"
3330
+ },
3331
+ {
3332
+ tag: [tags.meta],
3333
+ fontWeight: 300,
3334
+ color: "var(--syntax-meta, #999)",
3335
+ fontFamily: '"Merriweather Sans", sans-serif'
3336
+ },
3337
+ { tag: tags.keyword, ...baseCodeStyles, color: "var(--syntax-keyword, #708)" },
3338
+ {
3339
+ tag: [
3340
+ tags.atom,
3341
+ tags.bool,
3342
+ tags.url,
3343
+ tags.contentSeparator,
3344
+ tags.labelName
3345
+ ],
3346
+ ...baseCodeStyles,
3347
+ color: "var(--syntax-atom, var(--studio-secondary))"
3348
+ },
3349
+ { tag: [tags.literal, tags.inserted], ...baseCodeStyles, color: "var(--syntax-inserted, #164)" },
3350
+ { tag: [tags.string, tags.deleted], ...baseCodeStyles, color: "var(--syntax-string, #5f67b5)" },
3351
+ {
3352
+ tag: [tags.regexp, tags.escape, tags.special(tags.string)],
3353
+ ...baseCodeStyles,
3354
+ color: "var(--syntax-regexp, #e40)"
3355
+ },
3356
+ {
3357
+ tag: tags.definition(tags.variableName),
3358
+ ...baseCodeStyles,
3359
+ color: "var(--syntax-definition--variable-name, #00f)"
3360
+ },
3361
+ { tag: tags.local(tags.variableName), ...baseCodeStyles, color: "var(--syntax-variable-name, #30a)" },
3362
+ { tag: [tags.typeName, tags.namespace], ...baseCodeStyles, color: "var(--syntax-type-name, #085)" },
3363
+ { tag: tags.className, ...baseCodeStyles, color: "var(--syntax-class-name, #167)" },
3364
+ {
3365
+ tag: [tags.special(tags.variableName), tags.macroName],
3366
+ ...baseCodeStyles,
3367
+ color: "var(--syntax-special--variable-name, #256)"
3368
+ },
3369
+ {
3370
+ tag: tags.definition(tags.propertyName),
3371
+ ...baseCodeStyles,
3372
+ color: "var(--syntax-function--property-name, #00c)"
3373
+ },
3374
+ { tag: tags.monospace, ...baseCodeStyles }
3375
+ ]);
3376
+ var theme = (style) => [
3377
+ EditorView3.theme(MARKDOWN_STYLES),
3378
+ syntaxHighlighting(markdownSyntaxHighlighting(style)),
3379
+ bullets,
3380
+ codeblocks
3381
+ ];
3382
+ var bullets = ViewPlugin2.fromClass(
3383
+ class {
3384
+ decorations;
3385
+ view;
3386
+ constructor(view) {
3387
+ this.view = view;
3388
+ this.decorations = this.build();
3389
+ }
3390
+ update(update) {
3391
+ if (update.docChanged || update.viewportChanged) {
3392
+ this.decorations = this.build();
3393
+ }
3394
+ }
3395
+ build() {
3396
+ const builder = new RangeSetBuilder2();
3397
+ const doc = this.view.state.doc;
3398
+ syntaxTree(this.view.state).iterate({
3399
+ enter: ({ type, from }) => {
3400
+ if (type.name === "ListMark") {
3401
+ const char = doc.sliceString(from, from + 1);
3402
+ if (["-", "+", "*"].includes(char)) {
3403
+ builder.add(
3404
+ from,
3405
+ from + 1,
3406
+ Decoration2.replace({ widget: new BulletWidget() })
3407
+ );
3408
+ }
3409
+ }
3410
+ }
3411
+ });
3412
+ return builder.finish();
3413
+ }
3414
+ },
3415
+ {
3416
+ decorations: (v) => v.decorations
3417
+ }
3418
+ );
3419
+ var BulletWidget = class extends WidgetType {
3420
+ toDOM() {
3421
+ const span = document.createElement("span");
3422
+ span.textContent = "\u2022";
3423
+ span.className = "cm-bullet";
3424
+ return span;
3425
+ }
3426
+ };
3427
+ var codeblocks = ViewPlugin2.fromClass(
3428
+ class BlockquotePlugin {
3429
+ decorations = Decoration2.none;
3430
+ constructor(view) {
3431
+ this.buildDeco(view);
3432
+ }
3433
+ update(update) {
3434
+ this.buildDeco(update.view);
3435
+ }
3436
+ buildDeco(view) {
3437
+ const builder = new RangeSetBuilder2();
3438
+ view.viewportLineBlocks.forEach((line) => {
3439
+ const lineObj = view.state.doc.lineAt(line.from);
3440
+ const match = /^>.*/g.exec(lineObj.text);
3441
+ if (match && match[0]) {
3442
+ builder.add(
3443
+ line.from,
3444
+ line.from,
3445
+ Decoration2.line({ class: "codeblock" })
3446
+ );
3447
+ }
3448
+ });
3449
+ this.decorations = builder.finish();
3450
+ }
3451
+ }
3452
+ );
3453
+
3454
+ // src/extensions/markdown.ts
3455
+ function markdownExtensions() {
3456
+ return [
3457
+ ...theme("sans"),
3458
+ history(),
3459
+ indentOnInput(),
3460
+ keymap.of([
3461
+ ...defaultKeymap,
3462
+ ...searchKeymap,
3463
+ ...historyKeymap,
3464
+ ...foldKeymap,
3465
+ ...completionKeymap,
3466
+ indentWithTab
3467
+ ]),
3468
+ EditorView4.lineWrapping,
3469
+ markdown({ codeLanguages: languages }),
3470
+ indentUnit.of(" ")
3471
+ ];
3472
+ }
3473
+ export {
3474
+ markdownExtensions
3475
+ };
3476
+ //# sourceMappingURL=markdown.js.map