@markdownspace/mdx-codemirror-lang 1.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/LICENSE ADDED
@@ -0,0 +1,15 @@
1
+ ISC License
2
+
3
+ Copyright (c) 2024-2026 Devon Bradley and the markdown.space contributors
4
+
5
+ Permission to use, copy, modify, and/or distribute this software for any
6
+ purpose with or without fee is hereby granted, provided that the above
7
+ copyright notice and this permission notice appear in all copies.
8
+
9
+ THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
10
+ WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
11
+ MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY
12
+ SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
13
+ WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
14
+ ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR
15
+ IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
package/README.md ADDED
@@ -0,0 +1,53 @@
1
+ # MDX CodeMirror Language
2
+
3
+ A [CodeMirror 6](https://codemirror.net/) language mode for
4
+ [MDX](https://mdxjs.com/) — markdown with YAML frontmatter, ESM
5
+ `import`/`export` statements, and inline JSX. Built for
6
+ [markdown.space](https://markdown.space).
7
+
8
+ The parser is generated from `mdx.grammar` with
9
+ [Lezer](https://lezer.codemirror.net/).
10
+
11
+ ## Install
12
+
13
+ ```
14
+ npm i @markdownspace/mdx-codemirror-lang
15
+ ```
16
+
17
+ ## Usage
18
+
19
+ Wire it into CodeMirror as an `LRLanguage`:
20
+
21
+ ```js
22
+ import { MDXParser } from "@markdownspace/mdx-codemirror-lang"
23
+ import { LRLanguage, LanguageSupport } from "@codemirror/language"
24
+
25
+ const mdxLanguage = LRLanguage.define({
26
+ parser: MDXParser.configure({ props: [] })
27
+ })
28
+
29
+ const mdx = () => new LanguageSupport(mdxLanguage, [])
30
+ ```
31
+
32
+ Term IDs (`MDX`, `Frontmatter`, `JSXElement`, ...) are available for writing
33
+ extensions:
34
+
35
+ ```js
36
+ import { Frontmatter, JSXElement } from "@markdownspace/mdx-codemirror-lang"
37
+ ```
38
+
39
+ ## Development
40
+
41
+ ```
42
+ npm i # also regenerates mdx-parser.js from mdx.grammar
43
+ npm run test # vitest
44
+ npm run dev # CodeMirror playground (vite)
45
+ ```
46
+
47
+ After editing `mdx.grammar`, the playground regenerates the parser
48
+ automatically (via `vite-plugin-run`), or run `npm run prepare` manually.
49
+
50
+ ## Releasing
51
+
52
+ Releases are published to npm automatically when a GitHub release is created
53
+ (`.github/workflows/publish-npm.yml`).
package/highlight.d.ts ADDED
@@ -0,0 +1,3 @@
1
+ import type { NodePropSource } from "@lezer/common"
2
+
3
+ export declare const highlighting: NodePropSource
package/highlight.js ADDED
@@ -0,0 +1,65 @@
1
+ import { styleTags, tags } from "@lezer/highlight";
2
+
3
+ export const highlighting = styleTags({
4
+ ArithmeticOperator: tags.operator,
5
+ ComparisonOperator: tags.compareOperator,
6
+ Boolean: tags.bool,
7
+ ControlFlow: tags.controlOperator,
8
+ Frontmatter: tags.comment,
9
+ Heading: tags.heading,
10
+ AssignmentKeyword: tags.keyword,
11
+ ClassKeyword: tags.keyword,
12
+ Instance: tags.keyword,
13
+ Function: tags.controlOperator,
14
+ Block: tags.controlOperator,
15
+ IfStatement: tags.controlOperator,
16
+ ElseStatement: tags.controlOperator,
17
+ DoBlock: tags.controlOperator,
18
+ While: tags.controlOperator,
19
+ TryCatch: tags.controlOperator,
20
+ ElseStatement: tags.controlOperator,
21
+ "Object/Identifier": tags.variableName,
22
+ "ClassDeclaration/Identifier": tags.variableName,
23
+ "ClassDeclaration/*/Identifier": tags.variableName,
24
+ "Function/Identifier": tags.variableName,
25
+ "Block/Identifier": tags.variableName,
26
+ "IFSatement/Identifier": tags.variableName,
27
+ "ElseStatement/Identifier": tags.variableName,
28
+ "DoBlock/Identifier": tags.variableName,
29
+ "While/Identifier": tags.variableName,
30
+ "TryCatch/Identifier": tags.variableName,
31
+ "Params/Identifier": tags.variableName,
32
+ Object: tags.controlOperator,
33
+ Array: tags.controlOperator,
34
+ Params: tags.controlOperator,
35
+ Null: tags.null,
36
+ Undefined: tags.null,
37
+ MDElement: tags.null,
38
+ "MDLink/...": tags.link,
39
+ "MDImage/...": tags.link,
40
+ MDStrong: tags.strong,
41
+ MDItalic: tags.emphasis,
42
+ MDHeading: tags.heading,
43
+ NaN: tags.null,
44
+ Infinity: tags.number,
45
+ JSKeyword: tags.keyword,
46
+ JSImport: tags.keyword,
47
+ JSFrom: tags.keyword,
48
+ AsStatement: tags.keyword,
49
+ JSReturn: tags.atom,
50
+ JSScriptTagStart: tags.strong,
51
+ JSScriptCloseTagStart: tags.strong,
52
+ JSXFragment: tags.strong,
53
+ JSXOpenTagStart: tags.strong,
54
+ JSXCloseTagStart: tags.strong,
55
+ JSXTagEnd: tags.strong,
56
+ JSXSelfClosingTagEnd: tags.strong,
57
+ MDLink: tags.link,
58
+ MDStrikeout: tags.strikethrough,
59
+ MDStrong: tags.strong,
60
+ MDEmphasis: tags.emphasis,
61
+ MDParagraph: tags.content,
62
+ Number: tags.number,
63
+ String: tags.string,
64
+ Equal: tags.definitionOperator,
65
+ });
package/index.d.ts ADDED
@@ -0,0 +1,3 @@
1
+ export { MDXParser } from "./mdx-parser.js"
2
+ export * from "./mdx-parser.terms.js"
3
+ export { highlighting } from "./highlight.js"
package/index.js ADDED
@@ -0,0 +1,3 @@
1
+ export { MDXParser } from "./mdx-parser.js"
2
+ export * from "./mdx-parser.terms.js"
3
+ export { highlighting } from "./highlight.js"
@@ -0,0 +1,3 @@
1
+ import type { LRParser } from "@lezer/lr"
2
+
3
+ export declare const MDXParser: LRParser
package/mdx-parser.js ADDED
@@ -0,0 +1,24 @@
1
+ // This file was generated by lezer-generator. You probably shouldn't edit it.
2
+ import {LRParser, LocalTokenGroup} from "@lezer/lr"
3
+ import {highlighting} from "./highlight.js"
4
+ const spec_Identifier = {__proto__:null,export:196, const:198, let:200, var:202, as:210, null:258, undefined:260, Infinity:262, NaN:264, break:266, continue:268, debugger:270, default:272, delete:274, extends:276, finally:278, implements:280, in:282, instanceof:284, interface:286, of:288, super:290, this:292, throw:294, typeof:296, void:298, yield:300, return:302, async:306, function:308, if:312, elseif:314, else:316, class:318, new:322, for:324, await:326, do:328, while:330, try:332, catch:334, switch:336, case:338, import:340, from:342}
5
+ export const MDXParser = LRParser.deserialize({
6
+ version: 14,
7
+ states: "@WOuOPOOO|OpO'#C^O!ROPO'#CaO#OOQO'#C_O#YOPO'#ChOOOO'#Cj'#CjO$ZOSO'#DOO$fOPO'#C|OOOO'#C|'#C|O%WOSO'#CiO&nOPO'#DmOOOO'#Dp'#DpO&vOPO'#DoOOOO'#Dr'#DrQQOPOOOQOPOOO'OOpO,58xO'TOPO'#CcOOOO'#Ds'#DsO'fOPO,58{OOOO'#E]'#E]OOOO'#Dv'#DvO'mOQO,58yOOOO,58y,58yOOOO'#Dw'#DwO'wOPO,59SO(xOSO'#DQOOOO'#EO'#EOO(}OSO,59jOOOO,59j,59jOOOO,59r,59rO)YOWO'#DSOOOO'#EP'#EPO$fOPO,59hO+nOPO'#DTOOOO,59h,59hOOOO'#Ck'#CkO+sO!bO'#CrO+xO!bO'#CrO+}O!bO'#CrO,SOPO'#CsOOOO'#Cs'#CsO,[OWO'#CtOOOO'#Ct'#CtO.pOWO'#CuOOOO'#Cu'#CuOOOO'#Cv'#CvOOOO'#Cw'#CwOOOO'#Cx'#CxOOOO'#Cy'#CyOOOO'#Eo'#EoO1UO`O'#EoOOOO'#DZ'#DZO2POPO'#DYO2[OPO'#DYOOOO'#Da'#DaO2gOPO'#D`O2lOSO,59TOOOO,59T,59TO2wOPO,5:XO3POWO,5:XO5eOSO'#CmO5vOPO,5:ZO5yOPO,5:ZOOOO-E7p-E7pOOOO1G.d1G.dOOOO'#Dt'#DtO6OOPO,58}O6aOPO,58}OOOO-E7q-E7qO6aOPO1G.gOOOO-E7t-E7tOOOO1G.e1G.eOOOO-E7u-E7uO6lOSO'#DROOOO,59l,59lOOOO-E7|-E7|OOOO1G/U1G/UOOOO1G/^1G/^OOOO'#Dz'#DzO6zOWO,59nO9`OWO'#EoOOOO'#Cz'#CzOOOO'#C{'#C{OOOO,59n,59nO2SOPO'#D[O=gOPO'#D]O=rOPO'#DcO=wOPO'#DdO%ROPO'#DfO%ROPO'#DgO2SOPO'#DhO>SOSO'#DiO2SOPO'#DjOOOO'#En'#EnOOOO-E7}-E7}OOOO1G/S1G/SOOOO,59o,59oO?WO!bO,59^O?]O!bO,59^O?bO!bO,59^O?gOSO'#ExO?rOSO'#EwO?zOPO,59_O@POSO'#E{O@XOQO,59`O@^OWO'#FOOBuOPO,59aO%ROPO,59tO2SOPO,59tOBzOPO,59tOCVOWO,59tOC[OPO,59zOCaOSO'#CoOOOO'#Cl'#ClOCoOWO1G.oOCtOWO1G/sOCtOWO1G/sOFYOPO1G/sOF_OPO'#CnOFdOSO'#EhOFgOSO'#EhOFoOPO,59XOOOO'#Dq'#DqO6oOSO1G/uO5yOPO1G/uOOOO-E7r-E7rO6aOPO1G.iOOOO'#Du'#DuOFtOQO1G.iOGSOQO7+$ROOOO,59m,59mOOOO-E7x-E7xOOOO1G/Y1G/YO%ROPO,59vOOOO,59w,59wO2SOPO,59}OOOO'#De'#DeO%ROPO,5:OO2SOPO,5:OOGbOPO,5:QOGgOPO,5:RO%ROPO,5:SOGlOSO,5:TO%ROPO,5:UOOOO1G.x1G.xOGqOWO,5;dOJSOSO'#D{OJ_OSO,5;cOOOO1G.y1G.yOJgOWO'#D|OMOOSO,5;gOOOO1G.z1G.zOMWOWO'#D}O! oOSO,5;jOOOO1G.{1G.{OOOO1G/`1G/`O%ROPO1G/`O2SOPO1G/`O! wOPO'#DbOOOO1G/f1G/fO!!SOSO'#EmO!![OQO,59ZOGqOWO7+$ZO!!aOWO7+%_O!$uOPO7+%_OOOO7+%_7+%_OOOO,59Y,59YO!$zOSO'#DxO!%`OSO,5;SO!%`OSO,5;SOOOO1G.s1G.sO!%hOPO7+%aO6oOSO7+%aO!&cOQO7+$TOOOO-E7s-E7sOOOO7+$T7+$TOOOO<<Gm<<GmOOOO1G/b1G/bOOOO1G/i1G/iOOOO1G/j1G/jO%ROPO1G/jO2SOPO1G/lO2SOPO1G/mOOOO1G/n1G/nOOOO1G/o1G/oOOOO1G/p1G/pO!&qOWO1G1OOOOO,5:g,5:gOOOO-E7y-E7yOOOO,5:h,5:hOOOO-E7z-E7zO!)YOWO,5:iOOOO-E7{-E7{OOOO7+$z7+$zO%ROPO7+$zO!+qOWO'#FrO!,POPO'#FrOOOO'#EQ'#EQO!,UOPO,59|OOOO,59|,59|O!,aOSO'#DyO!,rOSO,5;XOOOO1G.u1G.uOOOO<<Gu<<GuO!,zOPO<<HyOOOO<<Hy<<HyO!-POSO,5:dOOOO,5:d,5:dOOOO-E7v-E7vO!-[OSO1G0nOOOO<<H{<<H{O!-dOPO<<H{OOOO<<Go<<GoOOOO7+%U7+%UOOOO7+%W7+%WO%ROPO7+%XOOOO<<Hf<<HfOOOO'#ER'#ERO!._OWO,5<^O!.gOSO,5<^O%ROPO,5<^O2SOPO,5<^OOOO-E8O-E8OOOOO1G/h1G/hOOOO,5:e,5:eOOOO-E7w-E7wOOOOAN>eAN>eOOOO1G0O1G0OOOOOAN>gAN>gOOOO<<Hs<<HsOOOO-E8P-E8PO!.gOSO1G1xO!.gOSO1G1xOOOO1G1x1G1xO%ROPO1G1xO!.gOSO7+'dOOOO7+'d7+'dOOOO<<KO<<KO",
8
+ stateData: "!/U~OSROXROYROZROsUO{WO!`YO!{QO#TSO#UTO$pZO~O!wPO~PQO!x`O~OSbOUbOWbO!|aO!}bO~OSdOWdOXdOYdOZdO!{QO!|aO#QdO~O#RgO#SgO~P!dO#RhOS[XX[XY[XZ[Xs[X{[X!`[X!v[X!{[X#T[X#U[X$p[Xx[X#Z[X~OSjOqmOynO~OSROXROYROZROsUOxrO{WO!{QO#TSO#ZoO~OS!SOU!SOe!SO#VtO#WtO#XtO#ZxO#`zO#duO#gvO#iwO#nyO#p{O#q|O#t}O#u!OO#v!PO#w!QO#x!RO$_!UO$`!VO$e!XO~OSjOq!^O~OS!`O#Z!_O~O!y!cO~OS!dOU!dOW!dO!}!dO#O!fO~O#O!hO~P!RO#R!jO#S!jO~P!dO#RhOS[aX[aY[aZ[as[a{[a!`[a!v[a!{[a#T[a#U[a$p[ax[a#Z[a~O$^!lO~OSjOq!oOy!pO~Od#QOsUO{WO!Q#QO!R#QO!_#QO#Y!vO#y!tO#z!tO#{!tO#|!tO#}!tO$O!tO$P!tO$Q!tO$R!tO$S!tO$T!tO$U!tO$V!tO$W!tO$X!tO$Y!tO$Z!tO$[!tO$]!uO$b!wO$c!wO$d!xO$g!yO$h!zO$j!{O$k#PO$l!|O$n!}O$o#OO~P%WOq#TO~O#e#UO~O#e#VO~O#e#WO~OS#XO#Y#kP~Od#QOsUO{WO!Q#QO!R#QO!_#QO#y!tO#z!tO#{!tO#|!tO#}!tO$O!tO$P!tO$Q!tO$R!tO$S!tO$T!tO$U!tO$V!tO$W!tO$X!tO$Y!tO$Z!tO$[!tO$]!uO$b!wO$c!wO$d!xO$g!yO$h!zO$j!{O$k#PO$l!|O$n!}O$o#OO#_#oP~P%WOd#QOsUO{WO!Q#QO!R#QO!_#QO#y!tO#z!tO#{!tO#|!tO#}!tO$O!tO$P!tO$Q!tO$R!tO$S!tO$T!tO$U!tO$V!tO$W!tO$X!tO$Y!tO$Z!tO$[!tO$]!uO$b!wO$c!wO$d!xO$g!yO$h!zO$j!{O$k#PO$l!|O$n!}O$o#OO#s#rP~P%WO$a#`OS#cXX#cXY#cXZ#cXs#cX{#cX!`#cX!v#cX!{#cX#T#cX#U#cX$p#cX~OS#aO#q|O#t}O~O#q|O#t}O$`#bO~OS#dO~OS#gO#Z!_O#`#eO~OSjOq#hO~Od#QOsUO{WO!Q#QO!R#QO!_#QO!b#jO#y!tO#z!tO#{!tO#|!tO#}!tO$O!tO$P!tO$Q!tO$R!tO$S!tO$T!tO$U!tO$V!tO$W!tO$X!tO$Y!tO$Z!tO$[!tO$]!uO$b!wO$c!wO$d!xO$g!yO$h!zO$j!{O$k#PO$l!|O$n!}O$o#OO~P%WOS#lO#Z!_O#]#kO#`#eO#Y#[P~O#]#kO$q#oO~OS!dOU!dOW!dO!}!dO#O#sO~OS#tOU#tOW#tO~O#ZoO#duO#gvO#iwO~Od#QOsUO{WO!Q#QO!R#QO!_#QO#Y#yO#y!tO#z!tO#{!tO#|!tO#}!tO$O!tO$P!tO$Q!tO$R!tO$S!tO$T!tO$U!tO$V!tO$W!tO$X!tO$Y!tO$Z!tO$[!tO$]!uO$b!wO$c!wO$d!xO$g!yO$h!zO$j!{O$k#PO$l!|O$n!}O$o#OO~P%WO$a#`OS#cXU#cXd#cXe#cXs#cX{#cX!Q#cX!R#cX!_#cX#V#cX#W#cX#X#cX#Y#cX#Z#cX#`#cX#d#cX#g#cX#i#cX#n#cX#p#cX#q#cX#t#cX#u#cX#v#cX#w#cX#x#cX#y#cX#z#cX#{#cX#|#cX#}#cX$O#cX$P#cX$Q#cX$R#cX$S#cX$T#cX$U#cX$V#cX$W#cX$X#cX$Y#cX$Z#cX$[#cX$]#cX$_#cX$`#cX$b#cX$c#cX$d#cX$e#cX$g#cX$h#cX$j#cX$k#cX$l#cX$n#cX$o#cX#^#cX#_#cX#s#cX!b#cX~O#ZoO$b!wO$c!wO~OS#|O~O#q|O#t}O$i#}O~OS!SOU!SOe!SO#ZxO#`zO#duO#gvO#iwO#nyO#p{O#q|O#t}O#u!OO#v!PO#w!QO#x!RO~O#f$VO~O#h$VO~O#j$VO~O#m$WO#Y#lX#^#lX~O#^$XO#Y#kX~O#Y$ZO~O#^$[O#_#oX~O#_$^O~Od#QOsUO{WO!Q#QO!R#QO!_#QO#^$_O#y!tO#z!tO#{!tO#|!tO#}!tO$O!tO$P!tO$Q!tO$R!tO$S!tO$T!tO$U!tO$V!tO$W!tO$X!tO$Y!tO$Z!tO$[!tO$]!uO$b!wO$c!wO$d!xO$g!yO$h!zO$j!{O$k#PO$l!|O$n!}O$o#OO#s#rX~P%WO#s$aO~OS$dO#q|O#t}O~O$a$cO~O#Z$eO~OS$gO#Z!_O#`#eO#_#aP~Od$iO~Od#QOsUO{WO!Q#QO!R#QO!_#QO!b$kO#y!tO#z!tO#{!tO#|!tO#}!tO$O!tO$P!tO$Q!tO$R!tO$S!tO$T!tO$U!tO$V!tO$W!tO$X!tO$Y!tO$Z!tO$[!tO$]!uO$b!wO$c!wO$d!xO$g!yO$h!zO$j!{O$k#PO$l!|O$n!}O$o#OO~P%WOq$lO~OS$mO~O#]#kO#^$nO#Y#[X~O#Y$qO~OS#tOU#tOW#tO!z$vO~OS#tOU#tOW#tO!z$wO~O$k$|O~O$m$}O~O#m%PO~Od#QOsUO{WO!Q#QO!R#QO!_#QO#y!tO#z!tO#{!tO#|!tO#}!tO$O!tO$P!tO$Q!tO$R!tO$S!tO$T!tO$U!tO$V!tO$W!tO$X!tO$Y!tO$Z!tO$[!tO$]!uO$b!wO$c!wO$d!xO$g!yO$h!zO$j!{O$k#PO$l!|O$n!}O$o#OO~P%WOS#XO#Y!oX#^!oX~O#^$XO#Y#ka~Od#QOsUO{WO!Q#QO!R#QO!_#QO#y!tO#z!tO#{!tO#|!tO#}!tO$O!tO$P!tO$Q!tO$R!tO$S!tO$T!tO$U!tO$V!tO$W!tO$X!tO$Y!tO$Z!tO$[!tO$]!uO$b!wO$c!wO$d!xO$g!yO$h!zO$j!{O$k#PO$l!|O$n!}O$o#OO#^!pX#_!pX~P%WO#^$[O#_#oa~Od#QOsUO{WO!Q#QO!R#QO!_#QO#y!tO#z!tO#{!tO#|!tO#}!tO$O!tO$P!tO$Q!tO$R!tO$S!tO$T!tO$U!tO$V!tO$W!tO$X!tO$Y!tO$Z!tO$[!tO$]!uO$b!wO$c!wO$d!xO$g!yO$h!zO$j!{O$k#PO$l!|O$n!}O$o#OO#^!qX#s!qX~P%WO#^$_O#s#ra~OS%[O#Y%`O$_!UO~O#^%aO#_#aX~O#_%cO~Od#QOsUO{WO!Q#QO!R#QO!_#QO!b%eO#y!tO#z!tO#{!tO#|!tO#}!tO$O!tO$P!tO$Q!tO$R!tO$S!tO$T!tO$U!tO$V!tO$W!tO$X!tO$Y!tO$Z!tO$[!tO$]!uO$b!wO$c!wO$d!xO$g!yO$h!zO$j!{O$k#PO$l!|O$n!}O$o#OO~P%WOq%fO~OS%gO#Z!_O#]#kO#`#eO#Y!lX#^!lX~O#^$nO#Y#[a~O#R%kOS!cqX!cqY!cqZ!cqs!cq{!cq!`!cq!v!cq!{!cq#T!cq#U!cq$p!cq~OS#tOU#tOW#tO!z%mO~Od#QOsUO{WO!Q#QO!R#QO!_#QO#y!tO#z!tO#{!tO#|!tO#}!tO$O!tO$P!tO$Q!tO$R!tO$S!tO$T!tO$U!tO$V!tO$W!tO$X!tO$Y!tO$Z!tO$[!tO$]!uO$b!wO$c!wO$d!xO$g!yO$h!zO$j!{O$k#PO$l!|O$n!}O$o#OO#Y#li#^#li~P%WOd#QOsUO{WO!Q#QO!R#QO!_#QO#y!tO#z!tO#{!tO#|!tO#}!tO$O!tO$P!tO$Q!tO$R!tO$S!tO$T!tO$U!tO$V!tO$W!tO$X!tO$Y!tO$Z!tO$[!tO$]!uO$b!wO$c!wO$d!xO$g!yO$h!zO$j!{O$k#PO$l!|O$n!}O$o#OO#^!qa#s!qa~P%WOd%tO#Q%rO#q|O#t}O~OS%vO~OS%[O#Y%xO$_!UO~OS%yO#Z!_O#`#eO#^!mX#_!mX~O#^%aO#_#aa~Oq%{O~O#]#kO#Y!la#^!la~O#^$nO#Y#[i~O#R%}OS!cyX!cyY!cyZ!cys!cy{!cy!`!cy!v!cy!{!cy#T!cy#U!cy$p!cy~Od&QO#Q%rO~O#Q%rO$_!UO$`!VO~P>SO!`sx{Y!wXZe!Q!RWUSZ~",
9
+ goto: "4V$gPP$h$kP$tP%PPPPP$k%X%^%c%w&W&b&ZPP&q'c'c'z'c'c'c'c%f%f)dP*OP*f*l*o+rPP+xP,`-O-j%fPP.O.d.v%f%f.y%f%f%f%f%fPP%XP%X.|/R/Y/a/g/m/{0R0X0d0j1U1[1b1h1r1x2OPPPPPPPPP2^PPPPPPPPPP2bPPPP2e2h3PPPPPPPP3r3uPP3{PP4OPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPP4RR_OU]O^_TpVqYROV^_qTdRfSbQcTdRfV]O^_VXO^_Q!ZXo#Qoz|!^!r#^#h#i$W$[$_$i$j%R%WQ#g!ZQ#m!_Q$g#eQ%h$nR%y%aQ!a[Z#f!Z!_#e$n%aQ#m!_Q#q!`Q$p#lQ%h$nR%|%gz!SXoz|!^!r#O#^#h#i$W$[$_$i$j%R%W%t&Q&R&UQ#w!lQ$r#pR%l$s{!SXoz|!^!r#O#^#h#i$W$[$_$i$j%R%W%t&Q&R&UQ!S#OS!TX$it!soz|!^!r#^#h#i$W$[$_$j%R%W%t&Q&R&UQ#`!VQ#c!WQ#z!wQ$O!zQ$S!}Q$U#PS$c#a#bQ$y#|Q${$PQ%Z$dQ%o$|Q%p$}Q%u%[R&T%vU]O^_SpVqo#Qoz|!^!r#^#h#i$W$[$_$i$j%R%WyVOV^_oqz|!^!r#^#h#i$W$[$_$i$j%R%WXkUYl!]R!mjSpVqQ#w!lQ#{!xQ$Q!{Q$R!|Q$b#`Q$x#zQ$z$OQ%O$SQ%Q$UQ%Y$cQ%n${Q%q%ZQ&O%pQ&S%uR&V&TQsVR#SqyWOV^_oqz|!^!r#^#h#i$W$[$_$i$j%R%WQ![Xn#Qoz|!^!r#^#h#i$W$[$_$i$j%R%WQ&S%tS&V&Q&RR&W&Ux!WXoz|!^!r#^#h#i$W$[$_$i$j%R%W%t&Q&R&UT%]$e%_n#Qoz|!^!r#^#h#i$W$[$_$i$j%R%WR#{!xQ![Xo#Qoz|!^!r#^#h#i$W$[$_$i$j%R%Wq!YXoz|!^!r#^#h#i$W$[$_$i$j%R%WR$f#dR$P!zV[O^_S#p!`!aR$s#qS^O_R!b^QcQR!gcQ!eaR#r!eQ#u!fQ#v!hQ$t#sV$u#u#v$tQfRR!ifQiSR!kiS$o#l#mS%i$o%jR%j$pQ%b$gR%z%bQ!roQ#^|Q#i!^[#x!r#^#i$j%R%WQ$j#hQ%R$WR%W$_Q$Y#YR%T$YQ$]#[R%V$]Q$`#^R%X$`QlUQ!]YT!nl!]QqVR#RqQ%_$eR%w%_Q%s%[U&P%s&R&UQ&R%tR&U&QTeRfR#n!_R$h#eh!qo|!^!r#^#h#i$W$_$j%R%WQ#[zQ%U$[R%d$iQ![Xn#Qoz|!^!r#^#h#i$W$[$_$i$j%R%WQ$T#OQ&S%tS&V&Q&RR&W&UR#ZxQ#YxR%S$XR#]zR#_|T%^$e%_",
10
+ nodeNames: "⚠ MDX Frontmatter MDParagraph Identifier MDLink Number MDImage Punctuation MDStrikeout MDStrong MDItalic MDHeading JSElement JSExport AssignmentKeyword Destructure DestructureObj AsStatement DestructureArray Equal Boolean String Object Array Params Null Undefined Infinity NaN JSKeyword JSReturn JSXElement JSXTagEnd JSXOpenTag JSXOpenTagStart JSXAttribute JSXAttributeValue Block JSXCloseTag JSXCloseTagStart JSXSelfClosingTagEnd JSXSelfClosingTag JSXFragment Function Async IfStatement ElseStatement ArithmeticOperator ComparisonOperator ClassDeclaration ClassKeyword ClassBlock Instance ForLoop Await DoBlock TryCatch Switch Case While ; JSScriptTagStart JSScriptTag JSScriptCloseTagStart ImportStatement JSImport JSFrom",
11
+ maxTerm: 171,
12
+ nodeProps: [
13
+ ["openedBy", 33,"JSScriptTagStart"],
14
+ ["closedBy", 62,"JSXTagEnd"]
15
+ ],
16
+ propSources: [highlighting],
17
+ skippedNodes: [0],
18
+ repeatNodeCount: 16,
19
+ tokenData: "!*R~R!QXY$XYZ$|Z[$X]^$|pq%Rqr%xrs&Vst&^uv'zvw(Pwx(Uxy(]yz(jz{(q{|'z|}/o}!O/v!O!P3o!P!Q5T!Q![4X![!]5d!]!^5k!^!_5p!_!`>r!`!a?`!a!b(P!c!}4o!}#O?j#P#Q?y#R#S@W#S#T!%n#T#Y4o#Y#Z!%s#Z#h4o#h#i!(d#i#o4o#o#p!)j#q#r!)w$f$g$X#BY#BZ$X$IS$I_$X$I|$I}$|$I}$JO$|$JT$JU$X$KV$KW$X&FU&FV$X?HT?HU$X~~!)|S$^Y!}SXY$XZ[$Xpq$X$f$g$X#BY#BZ$X$IS$I_$X$JT$JU$X$KV$KW$X&FU&FV$X?HT?HU$X~%RO#R~!^%YY#Q!Y!}SXY$XZ[$Xpq$X$f$g$X#BY#BZ$X$IS$I_$X$JT$JU$X$KV$KW$X&FU&FV$X?HT?HU$X~%}PW[!}#O&Q~&VO!|~!^&^O#g!QW[~&aQpq&gst'O~&lS#T~OY&gZ;'S&g;'S;=`&x<%lO&g~&{P;=`<%l&g~'RQpq&gst'X~'[Qpq&gst'b~'eQpq&gst'k~'nQpq&gst't~'wPpq&gp(PO!Qp[(UOW[!^(]O#d!QW[~(bP#q~yz(e~(jO#t~!^(qO#s!U!zW~(vh!QpXY*bZ[*bpq*bqr*brs*bvx*bz{,U|}*b!O!P*b!P!Q*b!Q![*b![!]*b!_!`*b!a!b*b!c!}*b#R#S*b#T#o*b$f$g*b#BY#BZ*b$IS$I_*b$JT$JU*b$KV$KW*b&FU&FV*b?HT?HU*b~*ehXY*bZ[*bpq*bqr*brs*bvx*bz{,P|}*b!O!P*b!P!Q*b!Q![*b![!]*b!_!`*b!a!b*b!c!}*b#R#S*b#T#o*b$f$g*b#BY#BZ*b$IS$I_*b$JT$JU*b$KV$KW*b&FU&FV*b?HT?HU*b~,UOZ~~,ZhZ~XY-uZ[-upq-uqr-urs-uvx-uz{/d|}-u!O!P-u!P!Q-u!Q![-u![!]-u!_!`-u!a!b-u!c!}-u#R#S-u#T#o-u$f$g-u#BY#BZ-u$IS$I_-u$JT$JU-u$KV$KW-u&FU&FV-u?HT?HU-u~-xhXY-uZ[-upq-uqr-urs-uvx-uz{/d|}-u!O!P-u!P!Q-u!Q![-u![!]-u!_!`-u!a!b-u!c!}-u#R#S-u#T#o-u$f$g-u#BY#BZ-u$IS$I_-u$JT$JU-u$KV$KW-u&FU&FV-u?HT?HU-u~/gPz{/j~/oOY~!^/vO#^!QW[~/{P!Qp}!O0O~0RhXY1mZ[1mpq1mqr1mrs1mvx1m|}1m}!O3g!O!P1m!P!Q1m!Q![1m![!]1m!_!`1m!a!b1m!c!}1m#R#S1m#T#o1m$f$g1m#BY#BZ1m$IS$I_1m$JT$JU1m$KV$KW1m&FU&FV1m?HT?HU1m~1phXY1mZ[1mpq1mqr1mrs1mvx1m|}1m}!O3[!O!P1m!P!Q1m!Q![1m![!]1m!_!`1m!a!b1m!c!}1m#R#S1m#T#o1m$f$g1m#BY#BZ1m$IS$I_1m$JT$JU1m$KV$KW1m&FU&FV1m?HT?HU1m~3_P}!O3b~3gOX~~3lP!w~}!O3b~3xTW[U~S~!O!P4X!Q![4X!c!}4o#R#S4o#T#o4o~4`TU~S~!O!P4X!Q![4X!c!}4o#R#S4o#T#o4o~4tTS~!O!P4o!Q![4o!c!}4o#R#S4o#T#o4o!^5[P!QpW[!`!a5_`5dOy`l5kO#m`W[~5pO!_~~5uY!Rp!O!P6e!P!Q6y!Q![6e!_!`;_!`!a7z!c!}6e#R#S6e#T#g6e#g#h;d#h#o6e~6jTs~!O!P6e!Q![6e!c!}6e#R#S6e#T#o6e~6|W!O!P7f!Q![7f!`!a7z!c!}7f#R#S7f#T#g7f#g#h8P#h#o7fS7kTxS!O!P7f!Q![7f!c!}7f#R#S7f#T#o7f~8PO{~t8UVxS!O!P7f!Q![7f!c!}7f#R#S7f#T#V7f#V#W8k#W#o7ft8pVxS!O!P7f!Q![7f!c!}7f#R#S7f#T#f7f#f#g9V#g#o7ft9[VxS!O!P7f!Q![7f!c!}7f#R#S7f#T#]7f#]#^9q#^#o7ft9vVxS!O!P7f!Q![7f!c!}7f#R#S7f#T#d7f#d#e:]#e#o7ft:bVxS!O!P7f!Q![7f!c!}7f#R#S7f#T#h7f#h#i:w#i#o7ft;OT!bpxS!O!P7f!Q![7f!c!}7f#R#S7f#T#o7fp;dO!Rp~;iVs~!O!P6e!Q![6e!c!}6e#R#S6e#T#V6e#V#W<O#W#o6e~<TVs~!O!P6e!Q![6e!c!}6e#R#S6e#T#f6e#f#g<j#g#o6e~<oVs~!O!P6e!Q![6e!c!}6e#R#S6e#T#]6e#]#^=U#^#o6e~=ZVs~!O!P6e!Q![6e!c!}6e#R#S6e#T#d6e#d#e=p#e#o6e~=uVs~!O!P6e!Q![6e!c!}6e#R#S6e#T#h6e#h#i>[#i#o6e~>cT!`~s~!O!P6e!Q![6e!c!}6e#R#S6e#T#o6e#p>{Q$^`dpW[!_!`?R!`!a?Zp?WP!Rp!_!`;_#S?`O$a#S!U?gPqd!Rp!_!`;_#p?qP#`!Q!{!n#P#Q?t!Q?yO#p!Q!^@OP#_!Yxy@RS@WO#OS~@]gS~XYAtZ[AtpqAtqrAtrsAtvxAt|}At!O!PD|!P!QAt!Q![D|![!]At!_!`At!a!bAt!c!}D|#R#SHY#T#oD|$f$gAt#BY#BZAt$IS$I_At$JT$JUAt$KV$KWAt&FU&FVAt?HT?HUAt~AwgXYAtZ[AtpqAtqrAtrsAtvxAt|}At!O!PAt!P!QAt!Q![At![!]At!_!`At!a!bAt!c!}At#R#SC`#T#oAt$f$gAt#BY#BZAt$IS$I_At$JT$JUAt$KV$KWAt&FU&FVAt?HT?HUAt~CegZ~XYAtZ[AtpqAtqrAtrsAtvxAt|}At!O!PAt!P!QAt!Q![At![!]At!_!`At!a!bAt!c!}At#R#SC`#T#oAt$f$gAt#BY#BZAt$IS$I_At$JT$JUAt$KV$KWAt&FU&FVAt?HT?HUAt~ERgS~XYAtZ[AtpqAtqrAtrsAtvxAt|}At!O!PD|!P!QAt!Q![D|![!]At!_!`At!a!bAt!c!}D|#R#SFj#T#oD|$f$gAt#BY#BZAt$IS$I_At$JT$JUAt$KV$KWAt&FU&FVAt?HT?HUAt~FqgZ~S~XYAtZ[AtpqAtqrAtrsAtvxAt|}At!O!PD|!P!QAt!Q![D|![!]At!_!`At!a!bAt!c!}D|#R#SFj#T#oD|$f$gAt#BY#BZAt$IS$I_At$JT$JUAt$KV$KWAt&FU&FVAt?HT?HUAt~HagZ~S~XYIxZ[IxpqIxqrIxrsIxvxIx|}Ix!O!PNp!P!QIx!Q![Np![!]Ix!_!`Ix!a!bIx!c!}Np#R#S!!^#T#oNp$f$gIx#BY#BZIx$IS$I_Ix$JT$JUIx$KV$KWIx&FU&FVIx?HT?HUIx~I{gXYIxZ[IxpqIxqrIxrsIxvxIx|}Ix!O!PIx!P!QIx!Q![Ix![!]Ix!_!`Ix!a!bIx!c!}Ix#R#SKd#T#oIx$f$gIx#BY#BZIx$IS$I_Ix$JT$JUIx$KV$KWIx&FU&FVIx?HT?HUIx~KigZ~XYIxZ[IxpqIxqrIxrsIxvxIx|}Ix!O!PIx!P!QIx!Q![Ix![!]Ix!_!`Ix!a!bIx!c!}Ix#R#SMQ#T#oIx$f$gIx#BY#BZIx$IS$I_Ix$JT$JUIx$KV$KWIx&FU&FVIx?HT?HUIx~MXgY~Z~XYIxZ[IxpqIxqrIxrsIxvxIx|}Ix!O!PIx!P!QIx!Q![Ix![!]Ix!_!`Ix!a!bIx!c!}Ix#R#SMQ#T#oIx$f$gIx#BY#BZIx$IS$I_Ix$JT$JUIx$KV$KWIx&FU&FVIx?HT?HUIx~NugS~XYIxZ[IxpqIxqrIxrsIxvxIx|}Ix!O!PNp!P!QIx!Q![Np![!]Ix!_!`Ix!a!bIx!c!}Np#R#S!!^#T#oNp$f$gIx#BY#BZIx$IS$I_Ix$JT$JUIx$KV$KWIx&FU&FVIx?HT?HUIx~!!egZ~S~XYIxZ[IxpqIxqrIxrsIxvxIx|}Ix!O!PNp!P!QIx!Q![Np![!]Ix!_!`Ix!a!bIx!c!}Np#R#S!#|#T#oNp$f$gIx#BY#BZIx$IS$I_Ix$JT$JUIx$KV$KWIx&FU&FVIx?HT?HUIx~!$VgY~Z~S~XYIxZ[IxpqIxqrIxrsIxvxIx|}Ix!O!PNp!P!QIx!Q![Np![!]Ix!_!`Ix!a!bIx!c!}Np#R#S!#|#T#oNp$f$gIx#BY#BZIx$IS$I_Ix$JT$JUIx$KV$KWIx&FU&FVIx?HT?HUIx~!%sO#i~~!%xUS~!O!P4o!Q![4o!c!}4o#R#S4o#T#U!&[#U#o4o~!&aVS~!O!P4o!Q![4o!c!}4o#R#S4o#T#`4o#`#a!&v#a#o4o~!&{VS~!O!P4o!Q![4o!c!}4o#R#S4o#T#g4o#g#h!'b#h#o4o~!'gVS~!O!P4o!Q![4o!c!}4o#R#S4o#T#X4o#X#Y!'|#Y#o4o~!(TTe~S~!O!P4o!Q![4o!c!}4o#R#S4o#T#o4o~!(iVS~!O!P4o!Q![4o!c!}4o#R#S4o#T#f4o#f#g!)O#g#o4o~!)TVS~!O!P4o!Q![4o!c!}4o#R#S4o#T#i4o#i#j!'b#j#o4o~!)oP#Z~#q#r!)r~!)wO#n~~!)|O#Y~~!*RO#S~",
20
+ tokenizers: [2, 3, 4, 5, 6, new LocalTokenGroup("h~RP}!OU~XP}!O[~_P}!Ob~gO!y~~", 23, 86), new LocalTokenGroup("l~RRrs[wxa#S#Tf~aO#h~~fO#f~~kO#j~~", 27, 113)],
21
+ topRules: {"MDX":[0,1]},
22
+ specialized: [{term: 4, get: (value) => spec_Identifier[value] || -1}],
23
+ tokenPrec: 2750
24
+ })
@@ -0,0 +1,67 @@
1
+ // Type declarations for the generated Lezer term IDs.
2
+ export declare const MDX: number
3
+ export declare const Frontmatter: number
4
+ export declare const MDParagraph: number
5
+ export declare const Identifier: number
6
+ export declare const MDLink: number
7
+ export declare const Number: number
8
+ export declare const MDImage: number
9
+ export declare const Punctuation: number
10
+ export declare const MDStrikeout: number
11
+ export declare const MDStrong: number
12
+ export declare const MDItalic: number
13
+ export declare const MDHeading: number
14
+ export declare const JSElement: number
15
+ export declare const JSExport: number
16
+ export declare const AssignmentKeyword: number
17
+ export declare const Destructure: number
18
+ export declare const DestructureObj: number
19
+ export declare const AsStatement: number
20
+ export declare const DestructureArray: number
21
+ export declare const Equal: number
22
+ export declare const Boolean: number
23
+ export declare const String: number
24
+ export declare const Object: number
25
+ export declare const Array: number
26
+ export declare const Params: number
27
+ export declare const Null: number
28
+ export declare const Undefined: number
29
+ export declare const Infinity: number
30
+ export declare const NaN: number
31
+ export declare const JSKeyword: number
32
+ export declare const JSReturn: number
33
+ export declare const JSXElement: number
34
+ export declare const JSXTagEnd: number
35
+ export declare const JSXOpenTag: number
36
+ export declare const JSXOpenTagStart: number
37
+ export declare const JSXAttribute: number
38
+ export declare const JSXAttributeValue: number
39
+ export declare const Block: number
40
+ export declare const JSXCloseTag: number
41
+ export declare const JSXCloseTagStart: number
42
+ export declare const JSXSelfClosingTagEnd: number
43
+ export declare const JSXSelfClosingTag: number
44
+ export declare const JSXFragment: number
45
+ export declare const Function: number
46
+ export declare const Async: number
47
+ export declare const IfStatement: number
48
+ export declare const ElseStatement: number
49
+ export declare const ArithmeticOperator: number
50
+ export declare const ComparisonOperator: number
51
+ export declare const ClassDeclaration: number
52
+ export declare const ClassKeyword: number
53
+ export declare const ClassBlock: number
54
+ export declare const Instance: number
55
+ export declare const ForLoop: number
56
+ export declare const Await: number
57
+ export declare const DoBlock: number
58
+ export declare const TryCatch: number
59
+ export declare const Switch: number
60
+ export declare const Case: number
61
+ export declare const While: number
62
+ export declare const JSScriptTagStart: number
63
+ export declare const JSScriptTag: number
64
+ export declare const JSScriptCloseTagStart: number
65
+ export declare const ImportStatement: number
66
+ export declare const JSImport: number
67
+ export declare const JSFrom: number
@@ -0,0 +1,68 @@
1
+ // This file was generated by lezer-generator. You probably shouldn't edit it.
2
+ export const
3
+ MDX = 1,
4
+ Frontmatter = 2,
5
+ MDParagraph = 3,
6
+ Identifier = 4,
7
+ MDLink = 5,
8
+ Number = 6,
9
+ MDImage = 7,
10
+ Punctuation = 8,
11
+ MDStrikeout = 9,
12
+ MDStrong = 10,
13
+ MDItalic = 11,
14
+ MDHeading = 12,
15
+ JSElement = 13,
16
+ JSExport = 14,
17
+ AssignmentKeyword = 15,
18
+ Destructure = 16,
19
+ DestructureObj = 17,
20
+ AsStatement = 18,
21
+ DestructureArray = 19,
22
+ Equal = 20,
23
+ Boolean = 21,
24
+ String = 22,
25
+ Object = 23,
26
+ Array = 24,
27
+ Params = 25,
28
+ Null = 26,
29
+ Undefined = 27,
30
+ Infinity = 28,
31
+ NaN = 29,
32
+ JSKeyword = 30,
33
+ JSReturn = 31,
34
+ JSXElement = 32,
35
+ JSXTagEnd = 33,
36
+ JSXOpenTag = 34,
37
+ JSXOpenTagStart = 35,
38
+ JSXAttribute = 36,
39
+ JSXAttributeValue = 37,
40
+ Block = 38,
41
+ JSXCloseTag = 39,
42
+ JSXCloseTagStart = 40,
43
+ JSXSelfClosingTagEnd = 41,
44
+ JSXSelfClosingTag = 42,
45
+ JSXFragment = 43,
46
+ Function = 44,
47
+ Async = 45,
48
+ IfStatement = 46,
49
+ ElseStatement = 47,
50
+ ArithmeticOperator = 48,
51
+ ComparisonOperator = 49,
52
+ ClassDeclaration = 50,
53
+ ClassKeyword = 51,
54
+ ClassBlock = 52,
55
+ Instance = 53,
56
+ ForLoop = 54,
57
+ Await = 55,
58
+ DoBlock = 56,
59
+ TryCatch = 57,
60
+ Switch = 58,
61
+ Case = 59,
62
+ While = 60,
63
+ JSScriptTagStart = 62,
64
+ JSScriptTag = 63,
65
+ JSScriptCloseTagStart = 64,
66
+ ImportStatement = 65,
67
+ JSImport = 66,
68
+ JSFrom = 67
package/package.json ADDED
@@ -0,0 +1,86 @@
1
+ {
2
+ "name": "@markdownspace/mdx-codemirror-lang",
3
+ "version": "1.0.0",
4
+ "description": "CodeMirror 6 language mode for MDX - markdown with YAML frontmatter, ESM imports/exports, and JSX. Built for markdown.space.",
5
+ "type": "module",
6
+ "main": "./index.js",
7
+ "module": "./index.js",
8
+ "types": "./index.d.ts",
9
+ "exports": {
10
+ ".": {
11
+ "types": "./index.d.ts",
12
+ "import": "./index.js"
13
+ },
14
+ "./mdx-parser": {
15
+ "types": "./mdx-parser.d.ts",
16
+ "import": "./mdx-parser.js"
17
+ },
18
+ "./mdx-parser.terms": {
19
+ "types": "./mdx-parser.terms.d.ts",
20
+ "import": "./mdx-parser.terms.js"
21
+ },
22
+ "./highlight": {
23
+ "types": "./highlight.d.ts",
24
+ "import": "./highlight.js"
25
+ }
26
+ },
27
+ "files": [
28
+ "index.js",
29
+ "index.d.ts",
30
+ "mdx-parser.js",
31
+ "mdx-parser.d.ts",
32
+ "mdx-parser.terms.js",
33
+ "mdx-parser.terms.d.ts",
34
+ "highlight.js",
35
+ "highlight.d.ts",
36
+ "README.md",
37
+ "LICENSE"
38
+ ],
39
+ "scripts": {
40
+ "dev": "vite",
41
+ "build": "vite build",
42
+ "preview": "vite preview",
43
+ "prepare": "lezer-generator mdx.grammar -o mdx-parser.js --export MDXParser",
44
+ "test": "vitest run",
45
+ "test:w": "vitest"
46
+ },
47
+ "repository": {
48
+ "type": "git",
49
+ "url": "git+https://github.com/markdown-space/mdx-codemirror-lang.git"
50
+ },
51
+ "keywords": [
52
+ "codemirror",
53
+ "codemirror6",
54
+ "mdx",
55
+ "markdown",
56
+ "lezer",
57
+ "syntax-highlighting"
58
+ ],
59
+ "author": "Devon Bradley",
60
+ "license": "ISC",
61
+ "bugs": {
62
+ "url": "https://github.com/markdown-space/mdx-codemirror-lang/issues"
63
+ },
64
+ "homepage": "https://github.com/markdown-space/mdx-codemirror-lang#readme",
65
+ "dependencies": {
66
+ "@lezer/highlight": "^1.2.0",
67
+ "@lezer/lr": "^1.4.0"
68
+ },
69
+ "devDependencies": {
70
+ "@lezer/common": "^1.2.1",
71
+ "@lezer/generator": "^1.6.0",
72
+ "@lezer/markdown": "^1.2.0",
73
+ "@codemirror/lang-html": "^6.4.8",
74
+ "@codemirror/lang-javascript": "^6.2.1",
75
+ "@codemirror/lang-markdown": "^6.2.4",
76
+ "@codemirror/language": "^6.10.1",
77
+ "@codemirror/state": "^6.4.0",
78
+ "@codemirror/theme-one-dark": "^6.1.2",
79
+ "@codemirror/view": "^6.24.0",
80
+ "@retronav/ixora": "^0.3.3",
81
+ "codemirror": "^6.0.1",
82
+ "vite": "^5.1.3",
83
+ "vite-plugin-run": "^0.5.1",
84
+ "vitest": "^1.3.0"
85
+ }
86
+ }