groove-dev 0.15.1 → 0.16.1

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 (334) hide show
  1. package/docs/FILE-EDITOR-PLAN.md +253 -0
  2. package/node_modules/@codemirror/autocomplete/.github/workflows/dispatch.yml +16 -0
  3. package/node_modules/@codemirror/autocomplete/CHANGELOG.md +639 -0
  4. package/node_modules/@codemirror/autocomplete/LICENSE +21 -0
  5. package/node_modules/@codemirror/autocomplete/README.md +43 -0
  6. package/node_modules/@codemirror/autocomplete/dist/index.cjs +2151 -0
  7. package/node_modules/@codemirror/autocomplete/dist/index.d.cts +648 -0
  8. package/node_modules/@codemirror/autocomplete/dist/index.d.ts +648 -0
  9. package/node_modules/@codemirror/autocomplete/dist/index.js +2120 -0
  10. package/node_modules/@codemirror/autocomplete/package.json +41 -0
  11. package/node_modules/@codemirror/commands/.github/workflows/dispatch.yml +16 -0
  12. package/node_modules/@codemirror/commands/CHANGELOG.md +386 -0
  13. package/node_modules/@codemirror/commands/LICENSE +21 -0
  14. package/node_modules/@codemirror/commands/README.md +35 -0
  15. package/node_modules/@codemirror/commands/dist/index.cjs +1909 -0
  16. package/node_modules/@codemirror/commands/dist/index.d.cts +650 -0
  17. package/node_modules/@codemirror/commands/dist/index.d.ts +650 -0
  18. package/node_modules/@codemirror/commands/dist/index.js +1795 -0
  19. package/node_modules/@codemirror/commands/package.json +42 -0
  20. package/node_modules/@codemirror/lang-css/.github/workflows/dispatch.yml +16 -0
  21. package/node_modules/@codemirror/lang-css/CHANGELOG.md +106 -0
  22. package/node_modules/@codemirror/lang-css/LICENSE +21 -0
  23. package/node_modules/@codemirror/lang-css/README.md +50 -0
  24. package/node_modules/@codemirror/lang-css/dist/index.cjs +269 -0
  25. package/node_modules/@codemirror/lang-css/dist/index.d.cts +28 -0
  26. package/node_modules/@codemirror/lang-css/dist/index.d.ts +28 -0
  27. package/node_modules/@codemirror/lang-css/dist/index.js +264 -0
  28. package/node_modules/@codemirror/lang-css/package.json +42 -0
  29. package/node_modules/@codemirror/lang-html/.github/workflows/dispatch.yml +16 -0
  30. package/node_modules/@codemirror/lang-html/CHANGELOG.md +210 -0
  31. package/node_modules/@codemirror/lang-html/LICENSE +21 -0
  32. package/node_modules/@codemirror/lang-html/README.md +147 -0
  33. package/node_modules/@codemirror/lang-html/dist/index.cjs +667 -0
  34. package/node_modules/@codemirror/lang-html/dist/index.d.cts +115 -0
  35. package/node_modules/@codemirror/lang-html/dist/index.d.ts +115 -0
  36. package/node_modules/@codemirror/lang-html/dist/index.js +661 -0
  37. package/node_modules/@codemirror/lang-html/package.json +46 -0
  38. package/node_modules/@codemirror/lang-javascript/.github/workflows/dispatch.yml +16 -0
  39. package/node_modules/@codemirror/lang-javascript/CHANGELOG.md +206 -0
  40. package/node_modules/@codemirror/lang-javascript/LICENSE +21 -0
  41. package/node_modules/@codemirror/lang-javascript/README.md +125 -0
  42. package/node_modules/@codemirror/lang-javascript/dist/index.cjs +526 -0
  43. package/node_modules/@codemirror/lang-javascript/dist/index.d.cts +93 -0
  44. package/node_modules/@codemirror/lang-javascript/dist/index.d.ts +93 -0
  45. package/node_modules/@codemirror/lang-javascript/dist/index.js +513 -0
  46. package/node_modules/@codemirror/lang-javascript/package.json +45 -0
  47. package/node_modules/@codemirror/lang-json/.github/workflows/dispatch.yml +16 -0
  48. package/node_modules/@codemirror/lang-json/CHANGELOG.md +59 -0
  49. package/node_modules/@codemirror/lang-json/LICENSE +21 -0
  50. package/node_modules/@codemirror/lang-json/README.md +56 -0
  51. package/node_modules/@codemirror/lang-json/dist/index.cjs +68 -0
  52. package/node_modules/@codemirror/lang-json/dist/index.d.cts +22 -0
  53. package/node_modules/@codemirror/lang-json/dist/index.d.ts +22 -0
  54. package/node_modules/@codemirror/lang-json/dist/index.js +64 -0
  55. package/node_modules/@codemirror/lang-json/package.json +39 -0
  56. package/node_modules/@codemirror/lang-markdown/.github/workflows/dispatch.yml +16 -0
  57. package/node_modules/@codemirror/lang-markdown/CHANGELOG.md +246 -0
  58. package/node_modules/@codemirror/lang-markdown/LICENSE +21 -0
  59. package/node_modules/@codemirror/lang-markdown/README.md +162 -0
  60. package/node_modules/@codemirror/lang-markdown/dist/index.cjs +501 -0
  61. package/node_modules/@codemirror/lang-markdown/dist/index.d.cts +124 -0
  62. package/node_modules/@codemirror/lang-markdown/dist/index.d.ts +124 -0
  63. package/node_modules/@codemirror/lang-markdown/dist/index.js +492 -0
  64. package/node_modules/@codemirror/lang-markdown/package.json +44 -0
  65. package/node_modules/@codemirror/lang-python/.github/workflows/dispatch.yml +16 -0
  66. package/node_modules/@codemirror/lang-python/CHANGELOG.md +174 -0
  67. package/node_modules/@codemirror/lang-python/LICENSE +21 -0
  68. package/node_modules/@codemirror/lang-python/README.md +61 -0
  69. package/node_modules/@codemirror/lang-python/dist/index.cjs +313 -0
  70. package/node_modules/@codemirror/lang-python/dist/index.d.cts +26 -0
  71. package/node_modules/@codemirror/lang-python/dist/index.d.ts +26 -0
  72. package/node_modules/@codemirror/lang-python/dist/index.js +308 -0
  73. package/node_modules/@codemirror/lang-python/package.json +42 -0
  74. package/node_modules/@codemirror/language/.github/workflows/dispatch.yml +16 -0
  75. package/node_modules/@codemirror/language/CHANGELOG.md +412 -0
  76. package/node_modules/@codemirror/language/LICENSE +21 -0
  77. package/node_modules/@codemirror/language/README.md +66 -0
  78. package/node_modules/@codemirror/language/dist/index.cjs +2742 -0
  79. package/node_modules/@codemirror/language/dist/index.d.cts +1220 -0
  80. package/node_modules/@codemirror/language/dist/index.d.ts +1220 -0
  81. package/node_modules/@codemirror/language/dist/index.js +2687 -0
  82. package/node_modules/@codemirror/language/package.json +44 -0
  83. package/node_modules/@codemirror/lint/.github/workflows/dispatch.yml +16 -0
  84. package/node_modules/@codemirror/lint/CHANGELOG.md +318 -0
  85. package/node_modules/@codemirror/lint/LICENSE +21 -0
  86. package/node_modules/@codemirror/lint/README.md +18 -0
  87. package/node_modules/@codemirror/lint/dist/index.cjs +958 -0
  88. package/node_modules/@codemirror/lint/dist/index.d.cts +195 -0
  89. package/node_modules/@codemirror/lint/dist/index.d.ts +195 -0
  90. package/node_modules/@codemirror/lint/dist/index.js +945 -0
  91. package/node_modules/@codemirror/lint/package.json +40 -0
  92. package/node_modules/@codemirror/search/.github/workflows/dispatch.yml +16 -0
  93. package/node_modules/@codemirror/search/CHANGELOG.md +324 -0
  94. package/node_modules/@codemirror/search/LICENSE +21 -0
  95. package/node_modules/@codemirror/search/README.md +18 -0
  96. package/node_modules/@codemirror/search/dist/index.cjs +1237 -0
  97. package/node_modules/@codemirror/search/dist/index.d.cts +385 -0
  98. package/node_modules/@codemirror/search/dist/index.d.ts +385 -0
  99. package/node_modules/@codemirror/search/dist/index.js +1217 -0
  100. package/node_modules/@codemirror/search/package.json +40 -0
  101. package/node_modules/@codemirror/state/.github/workflows/dispatch.yml +16 -0
  102. package/node_modules/@codemirror/state/CHANGELOG.md +308 -0
  103. package/node_modules/@codemirror/state/LICENSE +21 -0
  104. package/node_modules/@codemirror/state/README.md +18 -0
  105. package/node_modules/@codemirror/state/dist/index.cjs +3922 -0
  106. package/node_modules/@codemirror/state/dist/index.d.cts +1713 -0
  107. package/node_modules/@codemirror/state/dist/index.d.ts +1713 -0
  108. package/node_modules/@codemirror/state/dist/index.js +3892 -0
  109. package/node_modules/@codemirror/state/package.json +38 -0
  110. package/node_modules/@codemirror/theme-one-dark/.github/workflows/dispatch.yml +16 -0
  111. package/node_modules/@codemirror/theme-one-dark/CHANGELOG.md +97 -0
  112. package/node_modules/@codemirror/theme-one-dark/LICENSE +21 -0
  113. package/node_modules/@codemirror/theme-one-dark/README.md +46 -0
  114. package/node_modules/@codemirror/theme-one-dark/dist/index.cjs +139 -0
  115. package/node_modules/@codemirror/theme-one-dark/dist/index.d.cts +39 -0
  116. package/node_modules/@codemirror/theme-one-dark/dist/index.d.ts +39 -0
  117. package/node_modules/@codemirror/theme-one-dark/dist/index.js +134 -0
  118. package/node_modules/@codemirror/theme-one-dark/package.json +41 -0
  119. package/node_modules/@codemirror/view/.github/workflows/dispatch.yml +16 -0
  120. package/node_modules/@codemirror/view/CHANGELOG.md +2284 -0
  121. package/node_modules/@codemirror/view/LICENSE +21 -0
  122. package/node_modules/@codemirror/view/README.md +37 -0
  123. package/node_modules/@codemirror/view/dist/index.cjs +11796 -0
  124. package/node_modules/@codemirror/view/dist/index.d.cts +2389 -0
  125. package/node_modules/@codemirror/view/dist/index.d.ts +2389 -0
  126. package/node_modules/@codemirror/view/dist/index.js +11745 -0
  127. package/node_modules/@codemirror/view/package.json +41 -0
  128. package/node_modules/@groove-dev/daemon/src/api.js +268 -2
  129. package/node_modules/@groove-dev/daemon/src/filewatcher.js +59 -0
  130. package/node_modules/@groove-dev/daemon/src/index.js +28 -1
  131. package/node_modules/@groove-dev/daemon/src/mimetypes.js +43 -0
  132. package/node_modules/@groove-dev/gui/dist/assets/index-BQSznoq0.js +103 -0
  133. package/node_modules/@groove-dev/gui/dist/index.html +1 -1
  134. package/node_modules/@groove-dev/gui/package.json +15 -2
  135. package/node_modules/@groove-dev/gui/src/App.jsx +3 -0
  136. package/node_modules/@groove-dev/gui/src/components/CodeEditor.jsx +143 -0
  137. package/node_modules/@groove-dev/gui/src/components/EditorTabs.jsx +83 -0
  138. package/node_modules/@groove-dev/gui/src/components/FileTree.jsx +492 -0
  139. package/node_modules/@groove-dev/gui/src/components/MediaViewer.jsx +104 -0
  140. package/node_modules/@groove-dev/gui/src/stores/groove.js +287 -1
  141. package/node_modules/@groove-dev/gui/src/views/FileEditor.jsx +149 -0
  142. package/node_modules/@lezer/common/LICENSE +21 -0
  143. package/node_modules/@lezer/common/README.md +14 -0
  144. package/node_modules/@lezer/common/dist/index.cjs +2209 -0
  145. package/node_modules/@lezer/common/dist/index.d.cts +1174 -0
  146. package/node_modules/@lezer/common/dist/index.d.ts +1174 -0
  147. package/node_modules/@lezer/common/dist/index.js +2196 -0
  148. package/node_modules/@lezer/common/package.json +32 -0
  149. package/node_modules/@lezer/css/CHANGELOG.md +307 -0
  150. package/node_modules/@lezer/css/LICENSE +21 -0
  151. package/node_modules/@lezer/css/README.md +6 -0
  152. package/node_modules/@lezer/css/dist/index.cjs +151 -0
  153. package/node_modules/@lezer/css/dist/index.d.cts +3 -0
  154. package/node_modules/@lezer/css/dist/index.d.ts +3 -0
  155. package/node_modules/@lezer/css/dist/index.js +147 -0
  156. package/node_modules/@lezer/css/package.json +36 -0
  157. package/node_modules/@lezer/css/rollup.config.js +16 -0
  158. package/node_modules/@lezer/css/src/css.grammar +290 -0
  159. package/node_modules/@lezer/css/src/highlight.js +36 -0
  160. package/node_modules/@lezer/css/src/parser.js +31 -0
  161. package/node_modules/@lezer/css/src/parser.terms.js +63 -0
  162. package/node_modules/@lezer/css/src/tokens.js +75 -0
  163. package/node_modules/@lezer/css/test/declarations.txt +241 -0
  164. package/node_modules/@lezer/css/test/selector.txt +178 -0
  165. package/node_modules/@lezer/css/test/statements.txt +227 -0
  166. package/node_modules/@lezer/css/test/test-css.js +16 -0
  167. package/node_modules/@lezer/highlight/LICENSE +21 -0
  168. package/node_modules/@lezer/highlight/README.md +14 -0
  169. package/node_modules/@lezer/highlight/dist/index.cjs +936 -0
  170. package/node_modules/@lezer/highlight/dist/index.d.cts +623 -0
  171. package/node_modules/@lezer/highlight/dist/index.d.ts +623 -0
  172. package/node_modules/@lezer/highlight/dist/index.js +927 -0
  173. package/node_modules/@lezer/highlight/package.json +31 -0
  174. package/node_modules/@lezer/html/CHANGELOG.md +303 -0
  175. package/node_modules/@lezer/html/LICENSE +21 -0
  176. package/node_modules/@lezer/html/README.md +37 -0
  177. package/node_modules/@lezer/html/dist/index.cjs +354 -0
  178. package/node_modules/@lezer/html/dist/index.d.cts +14 -0
  179. package/node_modules/@lezer/html/dist/index.d.ts +14 -0
  180. package/node_modules/@lezer/html/dist/index.js +349 -0
  181. package/node_modules/@lezer/html/package.json +37 -0
  182. package/node_modules/@lezer/html/rollup.config.js +16 -0
  183. package/node_modules/@lezer/html/src/.tern-port +1 -0
  184. package/node_modules/@lezer/html/src/content.js +87 -0
  185. package/node_modules/@lezer/html/src/highlight.js +15 -0
  186. package/node_modules/@lezer/html/src/html.grammar +181 -0
  187. package/node_modules/@lezer/html/src/index.js +2 -0
  188. package/node_modules/@lezer/html/src/parser.js +27 -0
  189. package/node_modules/@lezer/html/src/parser.terms.js +53 -0
  190. package/node_modules/@lezer/html/src/tokens.js +199 -0
  191. package/node_modules/@lezer/html/test/mixed.txt +69 -0
  192. package/node_modules/@lezer/html/test/tags.txt +370 -0
  193. package/node_modules/@lezer/html/test/test-html.js +29 -0
  194. package/node_modules/@lezer/html/test/test-incremental.js +97 -0
  195. package/node_modules/@lezer/html/test/vue.txt +56 -0
  196. package/node_modules/@lezer/javascript/CHANGELOG.md +485 -0
  197. package/node_modules/@lezer/javascript/LICENSE +21 -0
  198. package/node_modules/@lezer/javascript/README.md +14 -0
  199. package/node_modules/@lezer/javascript/dist/index.cjs +196 -0
  200. package/node_modules/@lezer/javascript/dist/index.d.cts +3 -0
  201. package/node_modules/@lezer/javascript/dist/index.d.ts +3 -0
  202. package/node_modules/@lezer/javascript/dist/index.js +192 -0
  203. package/node_modules/@lezer/javascript/package.json +36 -0
  204. package/node_modules/@lezer/javascript/rollup.config.js +16 -0
  205. package/node_modules/@lezer/javascript/src/highlight.js +62 -0
  206. package/node_modules/@lezer/javascript/src/javascript.grammar +735 -0
  207. package/node_modules/@lezer/javascript/src/parser.js +33 -0
  208. package/node_modules/@lezer/javascript/src/parser.terms.js +177 -0
  209. package/node_modules/@lezer/javascript/src/tokens.js +87 -0
  210. package/node_modules/@lezer/javascript/test/decorator.txt +64 -0
  211. package/node_modules/@lezer/javascript/test/expression.txt +686 -0
  212. package/node_modules/@lezer/javascript/test/jsx.txt +79 -0
  213. package/node_modules/@lezer/javascript/test/semicolon.txt +77 -0
  214. package/node_modules/@lezer/javascript/test/statement.txt +404 -0
  215. package/node_modules/@lezer/javascript/test/test-javascript.js +17 -0
  216. package/node_modules/@lezer/javascript/test/typescript.txt +401 -0
  217. package/node_modules/@lezer/json/CHANGELOG.md +79 -0
  218. package/node_modules/@lezer/json/LICENSE +21 -0
  219. package/node_modules/@lezer/json/README.md +7 -0
  220. package/node_modules/@lezer/json/dist/index.cjs +41 -0
  221. package/node_modules/@lezer/json/dist/index.d.cts +3 -0
  222. package/node_modules/@lezer/json/dist/index.d.ts +3 -0
  223. package/node_modules/@lezer/json/dist/index.js +37 -0
  224. package/node_modules/@lezer/json/package.json +36 -0
  225. package/node_modules/@lezer/json/rollup.config.js +15 -0
  226. package/node_modules/@lezer/json/src/highlight.js +12 -0
  227. package/node_modules/@lezer/json/src/json.grammar +38 -0
  228. package/node_modules/@lezer/json/src/parser.js +23 -0
  229. package/node_modules/@lezer/json/src/parser.terms.js +12 -0
  230. package/node_modules/@lezer/json/test/arrays.txt +34 -0
  231. package/node_modules/@lezer/json/test/literals.txt +23 -0
  232. package/node_modules/@lezer/json/test/numbers.txt +87 -0
  233. package/node_modules/@lezer/json/test/objects.txt +34 -0
  234. package/node_modules/@lezer/json/test/strings.txt +50 -0
  235. package/node_modules/@lezer/json/test/test-json.js +17 -0
  236. package/node_modules/@lezer/lr/LICENSE +21 -0
  237. package/node_modules/@lezer/lr/README.md +25 -0
  238. package/node_modules/@lezer/lr/dist/constants.d.ts +45 -0
  239. package/node_modules/@lezer/lr/dist/constants.js +5 -0
  240. package/node_modules/@lezer/lr/dist/index.cjs +1891 -0
  241. package/node_modules/@lezer/lr/dist/index.d.cts +303 -0
  242. package/node_modules/@lezer/lr/dist/index.d.ts +303 -0
  243. package/node_modules/@lezer/lr/dist/index.js +1884 -0
  244. package/node_modules/@lezer/lr/package.json +32 -0
  245. package/node_modules/@lezer/markdown/CHANGELOG.md +279 -0
  246. package/node_modules/@lezer/markdown/LICENSE +21 -0
  247. package/node_modules/@lezer/markdown/README.md +725 -0
  248. package/node_modules/@lezer/markdown/bin/build-readme.cjs +39 -0
  249. package/node_modules/@lezer/markdown/build.js +16 -0
  250. package/node_modules/@lezer/markdown/dist/index.cjs +2352 -0
  251. package/node_modules/@lezer/markdown/dist/index.d.cts +600 -0
  252. package/node_modules/@lezer/markdown/dist/index.d.ts +600 -0
  253. package/node_modules/@lezer/markdown/dist/index.js +2335 -0
  254. package/node_modules/@lezer/markdown/package.json +37 -0
  255. package/node_modules/@lezer/markdown/src/README.md +83 -0
  256. package/node_modules/@lezer/markdown/src/extension.ts +301 -0
  257. package/node_modules/@lezer/markdown/src/index.ts +5 -0
  258. package/node_modules/@lezer/markdown/src/markdown.ts +1961 -0
  259. package/node_modules/@lezer/markdown/src/nest.ts +46 -0
  260. package/node_modules/@lezer/markdown/test/compare-tree.ts +14 -0
  261. package/node_modules/@lezer/markdown/test/spec.ts +79 -0
  262. package/node_modules/@lezer/markdown/test/test-extension.ts +269 -0
  263. package/node_modules/@lezer/markdown/test/test-incremental.ts +265 -0
  264. package/node_modules/@lezer/markdown/test/test-markdown.ts +3574 -0
  265. package/node_modules/@lezer/markdown/test/test-nesting.ts +86 -0
  266. package/node_modules/@lezer/markdown/test/tsconfig.json +12 -0
  267. package/node_modules/@lezer/markdown/tsconfig.json +14 -0
  268. package/node_modules/@lezer/python/CHANGELOG.md +243 -0
  269. package/node_modules/@lezer/python/LICENSE +21 -0
  270. package/node_modules/@lezer/python/README.md +6 -0
  271. package/node_modules/@lezer/python/dist/index.cjs +330 -0
  272. package/node_modules/@lezer/python/dist/index.d.cts +3 -0
  273. package/node_modules/@lezer/python/dist/index.d.ts +3 -0
  274. package/node_modules/@lezer/python/dist/index.js +326 -0
  275. package/node_modules/@lezer/python/package.json +36 -0
  276. package/node_modules/@lezer/python/rollup.config.js +16 -0
  277. package/node_modules/@lezer/python/src/highlight.js +35 -0
  278. package/node_modules/@lezer/python/src/python.grammar +381 -0
  279. package/node_modules/@lezer/python/src/tokens.js +224 -0
  280. package/node_modules/@lezer/python/test/expression.txt +231 -0
  281. package/node_modules/@lezer/python/test/statement.txt +442 -0
  282. package/node_modules/@lezer/python/test/test-incremental.js +33 -0
  283. package/node_modules/@lezer/python/test/test-python.js +17 -0
  284. package/node_modules/@marijn/find-cluster-break/LICENSE +21 -0
  285. package/node_modules/@marijn/find-cluster-break/README.md +28 -0
  286. package/node_modules/@marijn/find-cluster-break/dist/index.cjs +85 -0
  287. package/node_modules/@marijn/find-cluster-break/dist/index.d.cts +15 -0
  288. package/node_modules/@marijn/find-cluster-break/package.json +35 -0
  289. package/node_modules/@marijn/find-cluster-break/rollup.config.js +7 -0
  290. package/node_modules/@marijn/find-cluster-break/src/index.d.ts +15 -0
  291. package/node_modules/@marijn/find-cluster-break/src/index.js +87 -0
  292. package/node_modules/@marijn/find-cluster-break/test/test-cluster.js +30 -0
  293. package/node_modules/crelt/LICENSE +19 -0
  294. package/node_modules/crelt/README.md +23 -0
  295. package/node_modules/crelt/dist/index.cjs +31 -0
  296. package/node_modules/crelt/dist/index.d.cts +4 -0
  297. package/node_modules/crelt/index.d.ts +4 -0
  298. package/node_modules/crelt/index.js +28 -0
  299. package/node_modules/crelt/package.json +35 -0
  300. package/node_modules/crelt/rollup.config.js +13 -0
  301. package/node_modules/style-mod/LICENSE +19 -0
  302. package/node_modules/style-mod/README.md +98 -0
  303. package/node_modules/style-mod/dist/style-mod.cjs +165 -0
  304. package/node_modules/style-mod/dist/style-mod.d.cts +16 -0
  305. package/node_modules/style-mod/package.json +39 -0
  306. package/node_modules/style-mod/src/README.md +34 -0
  307. package/node_modules/style-mod/src/style-mod.d.ts +16 -0
  308. package/node_modules/style-mod/src/style-mod.js +172 -0
  309. package/node_modules/style-mod/test/test-style-mod.js +104 -0
  310. package/node_modules/w3c-keyname/.tern-port +1 -0
  311. package/node_modules/w3c-keyname/LICENSE +19 -0
  312. package/node_modules/w3c-keyname/README.md +18 -0
  313. package/node_modules/w3c-keyname/index.cjs +127 -0
  314. package/node_modules/w3c-keyname/index.d.cts +5 -0
  315. package/node_modules/w3c-keyname/index.d.ts +5 -0
  316. package/node_modules/w3c-keyname/index.js +119 -0
  317. package/node_modules/w3c-keyname/package.json +37 -0
  318. package/package.json +1 -1
  319. package/packages/daemon/src/api.js +268 -2
  320. package/packages/daemon/src/filewatcher.js +59 -0
  321. package/packages/daemon/src/index.js +28 -1
  322. package/packages/daemon/src/mimetypes.js +43 -0
  323. package/packages/gui/dist/assets/index-BQSznoq0.js +103 -0
  324. package/packages/gui/dist/index.html +1 -1
  325. package/packages/gui/package.json +15 -2
  326. package/packages/gui/src/App.jsx +3 -0
  327. package/packages/gui/src/components/CodeEditor.jsx +143 -0
  328. package/packages/gui/src/components/EditorTabs.jsx +83 -0
  329. package/packages/gui/src/components/FileTree.jsx +492 -0
  330. package/packages/gui/src/components/MediaViewer.jsx +104 -0
  331. package/packages/gui/src/stores/groove.js +287 -1
  332. package/packages/gui/src/views/FileEditor.jsx +149 -0
  333. package/node_modules/@groove-dev/gui/dist/assets/index-8Kqi_LVo.js +0 -74
  334. package/packages/gui/dist/assets/index-8Kqi_LVo.js +0 -74
@@ -0,0 +1,162 @@
1
+ <!-- NOTE: README.md is generated from src/README.md -->
2
+
3
+ # @codemirror/lang-markdown [![NPM version](https://img.shields.io/npm/v/@codemirror/lang-markdown.svg)](https://www.npmjs.org/package/@codemirror/lang-markdown)
4
+
5
+ [ [**WEBSITE**](https://codemirror.net/) | [**ISSUES**](https://github.com/codemirror/dev/issues) | [**FORUM**](https://discuss.codemirror.net/c/next/) | [**CHANGELOG**](https://github.com/codemirror/lang-markdown/blob/main/CHANGELOG.md) ]
6
+
7
+ This package implements Markdown language support for the
8
+ [CodeMirror](https://codemirror.net/) code editor.
9
+
10
+ The [project page](https://codemirror.net/) has more information, a
11
+ number of [examples](https://codemirror.net/examples/) and the
12
+ [documentation](https://codemirror.net/docs/).
13
+
14
+ This code is released under an
15
+ [MIT license](https://github.com/codemirror/lang-markdown/tree/main/LICENSE).
16
+
17
+ We aim to be an inclusive, welcoming community. To make that explicit,
18
+ we have a [code of
19
+ conduct](http://contributor-covenant.org/version/1/1/0/) that applies
20
+ to communication around the project.
21
+
22
+ ## Usage
23
+
24
+ ```javascript
25
+ import {EditorView, basicSetup} from "codemirror"
26
+ import {markdown} from "@codemirror/lang-markdown"
27
+
28
+ const view = new EditorView({
29
+ parent: document.body,
30
+ doc: `*CodeMirror* Markdown \`mode\``,
31
+ extensions: [basicSetup, markdown()]
32
+ })
33
+ ```
34
+
35
+ ## API Reference
36
+
37
+ <dl>
38
+ <dt id="user-content-markdown">
39
+ <code><strong><a href="#user-content-markdown">markdown</a></strong>(<a id="user-content-markdown^config" href="#user-content-markdown^config">config</a>&#8288;?: <a href="https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object">Object</a> = {}) → <a href="https://codemirror.net/docs/ref#language.LanguageSupport">LanguageSupport</a></code></dt>
40
+
41
+ <dd><p>Markdown language support.</p>
42
+ <dl><dt id="user-content-markdown^config">
43
+ <code><strong><a href="#user-content-markdown^config">config</a></strong></code></dt>
44
+
45
+ <dd><dl><dt id="user-content-markdown^config.defaultcodelanguage">
46
+ <code><strong><a href="#user-content-markdown^config.defaultcodelanguage">defaultCodeLanguage</a></strong>&#8288;?: <a href="https://codemirror.net/docs/ref#language.Language">Language</a> | <a href="https://codemirror.net/docs/ref#language.LanguageSupport">LanguageSupport</a></code></dt>
47
+
48
+ <dd><p>When given, this language will be used by default to parse code
49
+ blocks.</p>
50
+ </dd><dt id="user-content-markdown^config.codelanguages">
51
+ <code><strong><a href="#user-content-markdown^config.codelanguages">codeLanguages</a></strong>&#8288;?: readonly <a href="https://codemirror.net/docs/ref#language.LanguageDescription">LanguageDescription</a>[] | fn(<a id="user-content-markdown^config.codelanguages^info" href="#user-content-markdown^config.codelanguages^info">info</a>: <a href="https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String">string</a>) → <a href="https://codemirror.net/docs/ref#language.Language">Language</a> | <a href="https://codemirror.net/docs/ref#language.LanguageDescription">LanguageDescription</a> | <a href="https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/null">null</a></code></dt>
52
+
53
+ <dd><p>A source of language support for highlighting fenced code
54
+ blocks. When it is an array, the parser will use
55
+ <a href="https://codemirror.net/docs/ref/#language.LanguageDescription%5EmatchLanguageName"><code>LanguageDescription.matchLanguageName</code></a>
56
+ with the fenced code info to find a matching language. When it
57
+ is a function, will be called with the info string and may
58
+ return a language or <code>LanguageDescription</code> object.</p>
59
+ </dd><dt id="user-content-markdown^config.addkeymap">
60
+ <code><strong><a href="#user-content-markdown^config.addkeymap">addKeymap</a></strong>&#8288;?: <a href="https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Boolean">boolean</a></code></dt>
61
+
62
+ <dd><p>Set this to false to disable installation of the Markdown
63
+ <a href="#user-content-markdownkeymap">keymap</a>.</p>
64
+ </dd><dt id="user-content-markdown^config.extensions">
65
+ <code><strong><a href="#user-content-markdown^config.extensions">extensions</a></strong>&#8288;?: <a href="https://github.com/lezer-parser/markdown#user-content-markdownextension">MarkdownExtension</a></code></dt>
66
+
67
+ <dd><p>Markdown parser
68
+ <a href="https://github.com/lezer-parser/markdown#user-content-markdownextension">extensions</a>
69
+ to add to the parser.</p>
70
+ </dd><dt id="user-content-markdown^config.base">
71
+ <code><strong><a href="#user-content-markdown^config.base">base</a></strong>&#8288;?: <a href="https://codemirror.net/docs/ref#language.Language">Language</a></code></dt>
72
+
73
+ <dd><p>The base language to use. Defaults to
74
+ <a href="#user-content-commonmarklanguage"><code>commonmarkLanguage</code></a>.</p>
75
+ </dd><dt id="user-content-markdown^config.completehtmltags">
76
+ <code><strong><a href="#user-content-markdown^config.completehtmltags">completeHTMLTags</a></strong>&#8288;?: <a href="https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Boolean">boolean</a></code></dt>
77
+
78
+ <dd><p>By default, the extension installs an autocompletion source that
79
+ completes HTML tags when a <code>&lt;</code> is typed. Set this to false to
80
+ disable this.</p>
81
+ </dd><dt id="user-content-markdown^config.pasteurlaslink">
82
+ <code><strong><a href="#user-content-markdown^config.pasteurlaslink">pasteURLAsLink</a></strong>&#8288;?: <a href="https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Boolean">boolean</a></code></dt>
83
+
84
+ <dd><p>The returned language contains
85
+ <a href="#user-content-pasteurlaslink"><code>pasteURLAsLink</code></a> as a support
86
+ extension unless you set this to false.</p>
87
+ </dd><dt id="user-content-markdown^config.htmltaglanguage">
88
+ <code><strong><a href="#user-content-markdown^config.htmltaglanguage">htmlTagLanguage</a></strong>&#8288;?: <a href="https://codemirror.net/docs/ref#language.LanguageSupport">LanguageSupport</a></code></dt>
89
+
90
+ <dd><p>By default, HTML tags in the document are handled by the <a href="https://github.com/codemirror/lang-html">HTML
91
+ language</a> package with
92
+ tag matching turned off. You can pass in an alternative language
93
+ configuration here if you want.</p>
94
+ </dd></dl></dd></dl></dd>
95
+ <dt id="user-content-markdownlanguage">
96
+ <code><strong><a href="#user-content-markdownlanguage">markdownLanguage</a></strong>: <a href="https://codemirror.net/docs/ref#language.Language">Language</a></code></dt>
97
+
98
+ <dd><p>Language support for <a href="https://github.github.com/gfm/">GFM</a> plus
99
+ subscript, superscript, and emoji syntax.</p>
100
+ </dd>
101
+ <dt id="user-content-commonmarklanguage">
102
+ <code><strong><a href="#user-content-commonmarklanguage">commonmarkLanguage</a></strong>: <a href="https://codemirror.net/docs/ref#language.Language">Language</a></code></dt>
103
+
104
+ <dd><p>Language support for strict CommonMark.</p>
105
+ </dd>
106
+ <dt id="user-content-insertnewlinecontinuemarkup">
107
+ <code><strong><a href="#user-content-insertnewlinecontinuemarkup">insertNewlineContinueMarkup</a></strong>: <a href="https://codemirror.net/docs/ref#state.StateCommand">StateCommand</a></code></dt>
108
+
109
+ <dd><p>This command, when invoked in Markdown context with cursor
110
+ selection(s), will create a new line with the markup for
111
+ blockquotes and lists that were active on the old line. If the
112
+ cursor was directly after the end of the markup for the old line,
113
+ trailing whitespace and list markers are removed from that line.</p>
114
+ <p>The command does nothing in non-Markdown context, so it should
115
+ not be used as the only binding for Enter (even in a Markdown
116
+ document, HTML and code regions might use a different language).</p>
117
+ </dd>
118
+ <dt id="user-content-insertnewlinecontinuemarkupcommand">
119
+ <code><strong><a href="#user-content-insertnewlinecontinuemarkupcommand">insertNewlineContinueMarkupCommand</a></strong>(<a id="user-content-insertnewlinecontinuemarkupcommand^config" href="#user-content-insertnewlinecontinuemarkupcommand^config">config</a>&#8288;?: <a href="https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object">Object</a> = {}) → <a href="https://codemirror.net/docs/ref#state.StateCommand">StateCommand</a></code></dt>
120
+
121
+ <dd><p>Returns a command like
122
+ <a href="#user-content-insertnewlinecontinuemarkup"><code>insertNewlineContinueMarkup</code></a>,
123
+ allowing further configuration.</p>
124
+ <dl><dt id="user-content-insertnewlinecontinuemarkupcommand^config">
125
+ <code><strong><a href="#user-content-insertnewlinecontinuemarkupcommand^config">config</a></strong></code></dt>
126
+
127
+ <dd><dl><dt id="user-content-insertnewlinecontinuemarkupcommand^config.nontightlists">
128
+ <code><strong><a href="#user-content-insertnewlinecontinuemarkupcommand^config.nontightlists">nonTightLists</a></strong>&#8288;?: <a href="https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Boolean">boolean</a></code></dt>
129
+
130
+ <dd><p>By default, when pressing enter in a blank second item in a
131
+ tight (no blank lines between items) list, the command will
132
+ insert a blank line above that item, starting a non-tight list.
133
+ Set this to false to disable this behavior.</p>
134
+ </dd></dl></dd></dl></dd>
135
+ <dt id="user-content-deletemarkupbackward">
136
+ <code><strong><a href="#user-content-deletemarkupbackward">deleteMarkupBackward</a></strong>: <a href="https://codemirror.net/docs/ref#state.StateCommand">StateCommand</a></code></dt>
137
+
138
+ <dd><p>This command will, when invoked in a Markdown context with the
139
+ cursor directly after list or blockquote markup, delete one level
140
+ of markup. When the markup is for a list, it will be replaced by
141
+ spaces on the first invocation (a further invocation will delete
142
+ the spaces), to make it easy to continue a list.</p>
143
+ <p>When not after Markdown block markup, this command will return
144
+ false, so it is intended to be bound alongside other deletion
145
+ commands, with a higher precedence than the more generic commands.</p>
146
+ </dd>
147
+ <dt id="user-content-markdownkeymap">
148
+ <code><strong><a href="#user-content-markdownkeymap">markdownKeymap</a></strong>: readonly <a href="https://codemirror.net/docs/ref#view.KeyBinding">KeyBinding</a>[]</code></dt>
149
+
150
+ <dd><p>A small keymap with Markdown-specific bindings. Binds Enter to
151
+ <a href="#user-content-insertnewlinecontinuemarkup"><code>insertNewlineContinueMarkup</code></a>
152
+ and Backspace to
153
+ <a href="#user-content-deletemarkupbackward"><code>deleteMarkupBackward</code></a>.</p>
154
+ </dd>
155
+ <dt id="user-content-pasteurlaslink">
156
+ <code><strong><a href="#user-content-pasteurlaslink">pasteURLAsLink</a></strong>: <a href="https://codemirror.net/docs/ref#state.Extension">Extension</a></code></dt>
157
+
158
+ <dd><p>An extension that intercepts pastes when the pasted content looks
159
+ like a URL and the selection is non-empty and selects regular
160
+ text, making the selection a link with the pasted URL as target.</p>
161
+ </dd>
162
+ </dl>
@@ -0,0 +1,501 @@
1
+ 'use strict';
2
+
3
+ var state = require('@codemirror/state');
4
+ var view = require('@codemirror/view');
5
+ var language = require('@codemirror/language');
6
+ var autocomplete = require('@codemirror/autocomplete');
7
+ var markdown$1 = require('@lezer/markdown');
8
+ var langHtml = require('@codemirror/lang-html');
9
+ var common = require('@lezer/common');
10
+
11
+ const data = language.defineLanguageFacet({ commentTokens: { block: { open: "<!--", close: "-->" } } });
12
+ const headingProp = new common.NodeProp();
13
+ const commonmark = markdown$1.parser.configure({
14
+ props: [
15
+ language.foldNodeProp.add(type => {
16
+ return !type.is("Block") || type.is("Document") || isHeading(type) != null || isList(type) ? undefined
17
+ : (tree, state) => ({ from: state.doc.lineAt(tree.from).to, to: tree.to });
18
+ }),
19
+ headingProp.add(isHeading),
20
+ language.indentNodeProp.add({
21
+ Document: () => null
22
+ }),
23
+ language.languageDataProp.add({
24
+ Document: data
25
+ })
26
+ ]
27
+ });
28
+ function isHeading(type) {
29
+ let match = /^(?:ATX|Setext)Heading(\d)$/.exec(type.name);
30
+ return match ? +match[1] : undefined;
31
+ }
32
+ function isList(type) {
33
+ return type.name == "OrderedList" || type.name == "BulletList";
34
+ }
35
+ function findSectionEnd(headerNode, level) {
36
+ let last = headerNode;
37
+ for (;;) {
38
+ let next = last.nextSibling, heading;
39
+ if (!next || (heading = isHeading(next.type)) != null && heading <= level)
40
+ break;
41
+ last = next;
42
+ }
43
+ return last.to;
44
+ }
45
+ const headerIndent = language.foldService.of((state, start, end) => {
46
+ for (let node = language.syntaxTree(state).resolveInner(end, -1); node; node = node.parent) {
47
+ if (node.from < start)
48
+ break;
49
+ let heading = node.type.prop(headingProp);
50
+ if (heading == null)
51
+ continue;
52
+ let upto = findSectionEnd(node, heading);
53
+ if (upto > end)
54
+ return { from: end, to: upto };
55
+ }
56
+ return null;
57
+ });
58
+ function mkLang(parser) {
59
+ return new language.Language(data, parser, [], "markdown");
60
+ }
61
+ /**
62
+ Language support for strict CommonMark.
63
+ */
64
+ const commonmarkLanguage = mkLang(commonmark);
65
+ const extended = commonmark.configure([markdown$1.GFM, markdown$1.Subscript, markdown$1.Superscript, markdown$1.Emoji, {
66
+ props: [
67
+ language.foldNodeProp.add({
68
+ Table: (tree, state) => ({ from: state.doc.lineAt(tree.from).to, to: tree.to })
69
+ })
70
+ ]
71
+ }]);
72
+ /**
73
+ Language support for [GFM](https://github.github.com/gfm/) plus
74
+ subscript, superscript, and emoji syntax.
75
+ */
76
+ const markdownLanguage = mkLang(extended);
77
+ function getCodeParser(languages, defaultLanguage) {
78
+ return (info) => {
79
+ if (info && languages) {
80
+ let found = null;
81
+ // Strip anything after whitespace
82
+ info = /\S*/.exec(info)[0];
83
+ if (typeof languages == "function")
84
+ found = languages(info);
85
+ else
86
+ found = language.LanguageDescription.matchLanguageName(languages, info, true);
87
+ if (found instanceof language.LanguageDescription)
88
+ return found.support ? found.support.language.parser : language.ParseContext.getSkippingParser(found.load());
89
+ else if (found)
90
+ return found.parser;
91
+ }
92
+ return defaultLanguage ? defaultLanguage.parser : null;
93
+ };
94
+ }
95
+
96
+ class Context {
97
+ constructor(node, from, to, spaceBefore, spaceAfter, type, item) {
98
+ this.node = node;
99
+ this.from = from;
100
+ this.to = to;
101
+ this.spaceBefore = spaceBefore;
102
+ this.spaceAfter = spaceAfter;
103
+ this.type = type;
104
+ this.item = item;
105
+ }
106
+ blank(maxWidth, trailing = true) {
107
+ let result = this.spaceBefore + (this.node.name == "Blockquote" ? ">" : "");
108
+ if (maxWidth != null) {
109
+ while (result.length < maxWidth)
110
+ result += " ";
111
+ return result;
112
+ }
113
+ else {
114
+ for (let i = this.to - this.from - result.length - this.spaceAfter.length; i > 0; i--)
115
+ result += " ";
116
+ return result + (trailing ? this.spaceAfter : "");
117
+ }
118
+ }
119
+ marker(doc, add) {
120
+ let number = this.node.name == "OrderedList" ? String((+itemNumber(this.item, doc)[2] + add)) : "";
121
+ return this.spaceBefore + number + this.type + this.spaceAfter;
122
+ }
123
+ }
124
+ function getContext(node, doc) {
125
+ let nodes = [], context = [];
126
+ for (let cur = node; cur; cur = cur.parent) {
127
+ if (cur.name == "FencedCode")
128
+ return context;
129
+ if (cur.name == "ListItem" || cur.name == "Blockquote")
130
+ nodes.push(cur);
131
+ }
132
+ for (let i = nodes.length - 1; i >= 0; i--) {
133
+ let node = nodes[i], match;
134
+ let line = doc.lineAt(node.from), startPos = node.from - line.from;
135
+ if (node.name == "Blockquote" && (match = /^ *>( ?)/.exec(line.text.slice(startPos)))) {
136
+ context.push(new Context(node, startPos, startPos + match[0].length, "", match[1], ">", null));
137
+ }
138
+ else if (node.name == "ListItem" && node.parent.name == "OrderedList" &&
139
+ (match = /^( *)\d+([.)])( *)/.exec(line.text.slice(startPos)))) {
140
+ let after = match[3], len = match[0].length;
141
+ if (after.length >= 4) {
142
+ after = after.slice(0, after.length - 4);
143
+ len -= 4;
144
+ }
145
+ context.push(new Context(node.parent, startPos, startPos + len, match[1], after, match[2], node));
146
+ }
147
+ else if (node.name == "ListItem" && node.parent.name == "BulletList" &&
148
+ (match = /^( *)([-+*])( {1,4}\[[ xX]\])?( +)/.exec(line.text.slice(startPos)))) {
149
+ let after = match[4], len = match[0].length;
150
+ if (after.length > 4) {
151
+ after = after.slice(0, after.length - 4);
152
+ len -= 4;
153
+ }
154
+ let type = match[2];
155
+ if (match[3])
156
+ type += match[3].replace(/[xX]/, ' ');
157
+ context.push(new Context(node.parent, startPos, startPos + len, match[1], after, type, node));
158
+ }
159
+ }
160
+ return context;
161
+ }
162
+ function itemNumber(item, doc) {
163
+ return /^(\s*)(\d+)(?=[.)])/.exec(doc.sliceString(item.from, item.from + 10));
164
+ }
165
+ function renumberList(after, doc, changes, offset = 0) {
166
+ for (let prev = -1, node = after;;) {
167
+ if (node.name == "ListItem") {
168
+ let m = itemNumber(node, doc);
169
+ let number = +m[2];
170
+ if (prev >= 0) {
171
+ if (number != prev + 1)
172
+ return;
173
+ changes.push({ from: node.from + m[1].length, to: node.from + m[0].length, insert: String(prev + 2 + offset) });
174
+ }
175
+ prev = number;
176
+ }
177
+ let next = node.nextSibling;
178
+ if (!next)
179
+ break;
180
+ node = next;
181
+ }
182
+ }
183
+ function normalizeIndent(content, state$1) {
184
+ let blank = /^[ \t]*/.exec(content)[0].length;
185
+ if (!blank || state$1.facet(language.indentUnit) != "\t")
186
+ return content;
187
+ let col = state.countColumn(content, 4, blank);
188
+ let space = "";
189
+ for (let i = col; i > 0;) {
190
+ if (i >= 4) {
191
+ space += "\t";
192
+ i -= 4;
193
+ }
194
+ else {
195
+ space += " ";
196
+ i--;
197
+ }
198
+ }
199
+ return space + content.slice(blank);
200
+ }
201
+ /**
202
+ Returns a command like
203
+ [`insertNewlineContinueMarkup`](https://codemirror.net/6/docs/ref/#lang-markdown.insertNewlineContinueMarkup),
204
+ allowing further configuration.
205
+ */
206
+ const insertNewlineContinueMarkupCommand = (config = {}) => ({ state: state$1, dispatch }) => {
207
+ let tree = language.syntaxTree(state$1), { doc } = state$1;
208
+ let dont = null, changes = state$1.changeByRange(range => {
209
+ if (!range.empty || !markdownLanguage.isActiveAt(state$1, range.from, -1) && !markdownLanguage.isActiveAt(state$1, range.from, 1))
210
+ return dont = { range };
211
+ let pos = range.from, line = doc.lineAt(pos);
212
+ let context = getContext(tree.resolveInner(pos, -1), doc);
213
+ while (context.length && context[context.length - 1].from > pos - line.from)
214
+ context.pop();
215
+ if (!context.length)
216
+ return dont = { range };
217
+ let inner = context[context.length - 1];
218
+ if (inner.to - inner.spaceAfter.length > pos - line.from)
219
+ return dont = { range };
220
+ let emptyLine = pos >= (inner.to - inner.spaceAfter.length) && !/\S/.test(line.text.slice(inner.to));
221
+ // Empty line in list
222
+ if (inner.item && emptyLine) {
223
+ let first = inner.node.firstChild, second = inner.node.getChild("ListItem", "ListItem");
224
+ // Not second item or blank line before: delete a level of markup
225
+ if (first.to >= pos || second && second.to < pos ||
226
+ line.from > 0 && !/[^\s>]/.test(doc.lineAt(line.from - 1).text) ||
227
+ config.nonTightLists === false) {
228
+ let next = context.length > 1 ? context[context.length - 2] : null;
229
+ let delTo, insert = "";
230
+ if (next && next.item) { // Re-add marker for the list at the next level
231
+ delTo = line.from + next.from;
232
+ insert = next.marker(doc, 1);
233
+ }
234
+ else {
235
+ delTo = line.from + (next ? next.to : 0);
236
+ }
237
+ let changes = [{ from: delTo, to: pos, insert }];
238
+ if (inner.node.name == "OrderedList")
239
+ renumberList(inner.item, doc, changes, -2);
240
+ if (next && next.node.name == "OrderedList")
241
+ renumberList(next.item, doc, changes);
242
+ return { range: state.EditorSelection.cursor(delTo + insert.length), changes };
243
+ }
244
+ else { // Move second item down, making tight two-item list non-tight
245
+ let insert = blankLine(context, state$1, line);
246
+ return { range: state.EditorSelection.cursor(pos + insert.length + 1),
247
+ changes: { from: line.from, insert: insert + state$1.lineBreak } };
248
+ }
249
+ }
250
+ if (inner.node.name == "Blockquote" && emptyLine && line.from) {
251
+ let prevLine = doc.lineAt(line.from - 1), quoted = />\s*$/.exec(prevLine.text);
252
+ // Two aligned empty quoted lines in a row
253
+ if (quoted && quoted.index == inner.from) {
254
+ let changes = state$1.changes([{ from: prevLine.from + quoted.index, to: prevLine.to },
255
+ { from: line.from + inner.from, to: line.to }]);
256
+ return { range: range.map(changes), changes };
257
+ }
258
+ }
259
+ let changes = [];
260
+ if (inner.node.name == "OrderedList")
261
+ renumberList(inner.item, doc, changes);
262
+ let continued = inner.item && inner.item.from < line.from;
263
+ let insert = "";
264
+ // If not dedented
265
+ if (!continued || /^[\s\d.)\-+*>]*/.exec(line.text)[0].length >= inner.to) {
266
+ for (let i = 0, e = context.length - 1; i <= e; i++) {
267
+ insert += i == e && !continued ? context[i].marker(doc, 1)
268
+ : context[i].blank(i < e ? state.countColumn(line.text, 4, context[i + 1].from) - insert.length : null);
269
+ }
270
+ }
271
+ let from = pos;
272
+ while (from > line.from && /\s/.test(line.text.charAt(from - line.from - 1)))
273
+ from--;
274
+ insert = normalizeIndent(insert, state$1);
275
+ if (nonTightList(inner.node, state$1.doc))
276
+ insert = blankLine(context, state$1, line) + state$1.lineBreak + insert;
277
+ changes.push({ from, to: pos, insert: state$1.lineBreak + insert });
278
+ return { range: state.EditorSelection.cursor(from + insert.length + 1), changes };
279
+ });
280
+ if (dont)
281
+ return false;
282
+ dispatch(state$1.update(changes, { scrollIntoView: true, userEvent: "input" }));
283
+ return true;
284
+ };
285
+ /**
286
+ This command, when invoked in Markdown context with cursor
287
+ selection(s), will create a new line with the markup for
288
+ blockquotes and lists that were active on the old line. If the
289
+ cursor was directly after the end of the markup for the old line,
290
+ trailing whitespace and list markers are removed from that line.
291
+
292
+ The command does nothing in non-Markdown context, so it should
293
+ not be used as the only binding for Enter (even in a Markdown
294
+ document, HTML and code regions might use a different language).
295
+ */
296
+ const insertNewlineContinueMarkup = insertNewlineContinueMarkupCommand();
297
+ function isMark(node) {
298
+ return node.name == "QuoteMark" || node.name == "ListMark";
299
+ }
300
+ function nonTightList(node, doc) {
301
+ if (node.name != "OrderedList" && node.name != "BulletList")
302
+ return false;
303
+ let first = node.firstChild, second = node.getChild("ListItem", "ListItem");
304
+ if (!second)
305
+ return false;
306
+ let line1 = doc.lineAt(first.to), line2 = doc.lineAt(second.from);
307
+ let empty = /^[\s>]*$/.test(line1.text);
308
+ return line1.number + (empty ? 0 : 1) < line2.number;
309
+ }
310
+ function blankLine(context, state$1, line) {
311
+ let insert = "";
312
+ for (let i = 0, e = context.length - 2; i <= e; i++) {
313
+ insert += context[i].blank(i < e
314
+ ? state.countColumn(line.text, 4, context[i + 1].from) - insert.length
315
+ : null, i < e);
316
+ }
317
+ return normalizeIndent(insert, state$1);
318
+ }
319
+ function contextNodeForDelete(tree, pos) {
320
+ let node = tree.resolveInner(pos, -1), scan = pos;
321
+ if (isMark(node)) {
322
+ scan = node.from;
323
+ node = node.parent;
324
+ }
325
+ for (let prev; prev = node.childBefore(scan);) {
326
+ if (isMark(prev)) {
327
+ scan = prev.from;
328
+ }
329
+ else if (prev.name == "OrderedList" || prev.name == "BulletList") {
330
+ node = prev.lastChild;
331
+ scan = node.to;
332
+ }
333
+ else {
334
+ break;
335
+ }
336
+ }
337
+ return node;
338
+ }
339
+ /**
340
+ This command will, when invoked in a Markdown context with the
341
+ cursor directly after list or blockquote markup, delete one level
342
+ of markup. When the markup is for a list, it will be replaced by
343
+ spaces on the first invocation (a further invocation will delete
344
+ the spaces), to make it easy to continue a list.
345
+
346
+ When not after Markdown block markup, this command will return
347
+ false, so it is intended to be bound alongside other deletion
348
+ commands, with a higher precedence than the more generic commands.
349
+ */
350
+ const deleteMarkupBackward = ({ state: state$1, dispatch }) => {
351
+ let tree = language.syntaxTree(state$1);
352
+ let dont = null, changes = state$1.changeByRange(range => {
353
+ let pos = range.from, { doc } = state$1;
354
+ if (range.empty && markdownLanguage.isActiveAt(state$1, range.from)) {
355
+ let line = doc.lineAt(pos);
356
+ let context = getContext(contextNodeForDelete(tree, pos), doc);
357
+ if (context.length) {
358
+ let inner = context[context.length - 1];
359
+ let spaceEnd = inner.to - inner.spaceAfter.length + (inner.spaceAfter ? 1 : 0);
360
+ // Delete extra trailing space after markup
361
+ if (pos - line.from > spaceEnd && !/\S/.test(line.text.slice(spaceEnd, pos - line.from)))
362
+ return { range: state.EditorSelection.cursor(line.from + spaceEnd),
363
+ changes: { from: line.from + spaceEnd, to: pos } };
364
+ if (pos - line.from == spaceEnd &&
365
+ // Only apply this if we're on the line that has the
366
+ // construct's syntax, or there's only indentation in the
367
+ // target range
368
+ (!inner.item || line.from <= inner.item.from || !/\S/.test(line.text.slice(0, inner.to)))) {
369
+ let start = line.from + inner.from;
370
+ // Replace a list item marker with blank space
371
+ if (inner.item && inner.node.from < inner.item.from && /\S/.test(line.text.slice(inner.from, inner.to))) {
372
+ let insert = inner.blank(state.countColumn(line.text, 4, inner.to) - state.countColumn(line.text, 4, inner.from));
373
+ if (start == line.from)
374
+ insert = normalizeIndent(insert, state$1);
375
+ return { range: state.EditorSelection.cursor(start + insert.length),
376
+ changes: { from: start, to: line.from + inner.to, insert } };
377
+ }
378
+ // Delete one level of indentation
379
+ if (start < pos)
380
+ return { range: state.EditorSelection.cursor(start), changes: { from: start, to: pos } };
381
+ }
382
+ }
383
+ }
384
+ return dont = { range };
385
+ });
386
+ if (dont)
387
+ return false;
388
+ dispatch(state$1.update(changes, { scrollIntoView: true, userEvent: "delete" }));
389
+ return true;
390
+ };
391
+
392
+ /**
393
+ A small keymap with Markdown-specific bindings. Binds Enter to
394
+ [`insertNewlineContinueMarkup`](https://codemirror.net/6/docs/ref/#lang-markdown.insertNewlineContinueMarkup)
395
+ and Backspace to
396
+ [`deleteMarkupBackward`](https://codemirror.net/6/docs/ref/#lang-markdown.deleteMarkupBackward).
397
+ */
398
+ const markdownKeymap = [
399
+ { key: "Enter", run: insertNewlineContinueMarkup },
400
+ { key: "Backspace", run: deleteMarkupBackward }
401
+ ];
402
+ const htmlNoMatch = langHtml.html({ matchClosingTags: false });
403
+ /**
404
+ Markdown language support.
405
+ */
406
+ function markdown(config = {}) {
407
+ let { codeLanguages, defaultCodeLanguage, addKeymap = true, base: { parser } = commonmarkLanguage, completeHTMLTags = true, pasteURLAsLink: pasteURL = true, htmlTagLanguage = htmlNoMatch } = config;
408
+ if (!(parser instanceof markdown$1.MarkdownParser))
409
+ throw new RangeError("Base parser provided to `markdown` should be a Markdown parser");
410
+ let extensions = config.extensions ? [config.extensions] : [];
411
+ let support = [htmlTagLanguage.support, headerIndent], defaultCode;
412
+ if (pasteURL)
413
+ support.push(pasteURLAsLink);
414
+ if (defaultCodeLanguage instanceof language.LanguageSupport) {
415
+ support.push(defaultCodeLanguage.support);
416
+ defaultCode = defaultCodeLanguage.language;
417
+ }
418
+ else if (defaultCodeLanguage) {
419
+ defaultCode = defaultCodeLanguage;
420
+ }
421
+ let codeParser = codeLanguages || defaultCode ? getCodeParser(codeLanguages, defaultCode) : undefined;
422
+ extensions.push(markdown$1.parseCode({ codeParser, htmlParser: htmlTagLanguage.language.parser }));
423
+ if (addKeymap)
424
+ support.push(state.Prec.high(view.keymap.of(markdownKeymap)));
425
+ let lang = mkLang(parser.configure(extensions));
426
+ if (completeHTMLTags)
427
+ support.push(lang.data.of({ autocomplete: htmlTagCompletion }));
428
+ return new language.LanguageSupport(lang, support);
429
+ }
430
+ function htmlTagCompletion(context) {
431
+ let { state, pos } = context, m = /<[:\-\.\w\u00b7-\uffff]*$/.exec(state.sliceDoc(pos - 25, pos));
432
+ if (!m)
433
+ return null;
434
+ let tree = language.syntaxTree(state).resolveInner(pos, -1);
435
+ while (tree && !tree.type.isTop) {
436
+ if (tree.name == "CodeBlock" || tree.name == "FencedCode" || tree.name == "ProcessingInstructionBlock" ||
437
+ tree.name == "CommentBlock" || tree.name == "Link" || tree.name == "Image")
438
+ return null;
439
+ tree = tree.parent;
440
+ }
441
+ return {
442
+ from: pos - m[0].length, to: pos,
443
+ options: htmlTagCompletions(),
444
+ validFor: /^<[:\-\.\w\u00b7-\uffff]*$/
445
+ };
446
+ }
447
+ let _tagCompletions = null;
448
+ function htmlTagCompletions() {
449
+ if (_tagCompletions)
450
+ return _tagCompletions;
451
+ let result = langHtml.htmlCompletionSource(new autocomplete.CompletionContext(state.EditorState.create({ extensions: htmlNoMatch }), 0, true));
452
+ return _tagCompletions = result ? result.options : [];
453
+ }
454
+ const nonPlainText = /code|horizontalrule|html|link|comment|processing|escape|entity|image|mark|url/i;
455
+ /**
456
+ An extension that intercepts pastes when the pasted content looks
457
+ like a URL and the selection is non-empty and selects regular
458
+ text, making the selection a link with the pasted URL as target.
459
+ */
460
+ const pasteURLAsLink = view.EditorView.domEventHandlers({
461
+ paste: (event, view) => {
462
+ var _a;
463
+ let { main } = view.state.selection;
464
+ if (main.empty)
465
+ return false;
466
+ let link = (_a = event.clipboardData) === null || _a === void 0 ? void 0 : _a.getData("text/plain");
467
+ if (!link || !/^(https?:\/\/|mailto:|xmpp:|www\.)/.test(link))
468
+ return false;
469
+ if (/^www\./.test(link))
470
+ link = "https://" + link;
471
+ if (!markdownLanguage.isActiveAt(view.state, main.from, 1))
472
+ return false;
473
+ let tree = language.syntaxTree(view.state), crossesNode = false;
474
+ // Verify that no nodes are started/ended between the selection
475
+ // points, and we're not inside any non-plain-text construct.
476
+ tree.iterate({
477
+ from: main.from, to: main.to,
478
+ enter: node => { if (node.from > main.from || nonPlainText.test(node.name))
479
+ crossesNode = true; },
480
+ leave: node => { if (node.to < main.to)
481
+ crossesNode = true; }
482
+ });
483
+ if (crossesNode)
484
+ return false;
485
+ view.dispatch({
486
+ changes: [{ from: main.from, insert: "[" }, { from: main.to, insert: `](${link})` }],
487
+ userEvent: "input.paste",
488
+ scrollIntoView: true
489
+ });
490
+ return true;
491
+ }
492
+ });
493
+
494
+ exports.commonmarkLanguage = commonmarkLanguage;
495
+ exports.deleteMarkupBackward = deleteMarkupBackward;
496
+ exports.insertNewlineContinueMarkup = insertNewlineContinueMarkup;
497
+ exports.insertNewlineContinueMarkupCommand = insertNewlineContinueMarkupCommand;
498
+ exports.markdown = markdown;
499
+ exports.markdownKeymap = markdownKeymap;
500
+ exports.markdownLanguage = markdownLanguage;
501
+ exports.pasteURLAsLink = pasteURLAsLink;