@brainfish-ai/editor 0.0.1-alpha.2
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/README.md +3 -0
- package/dist/BrainfishEditor.d.ts +3 -0
- package/dist/apl-CXdQSnD-.js +2 -0
- package/dist/apl-CXdQSnD-.js.map +1 -0
- package/dist/apl-zQnQXYyi.cjs +2 -0
- package/dist/apl-zQnQXYyi.cjs.map +1 -0
- package/dist/asciiarmor-BjFlPGAR.cjs +2 -0
- package/dist/asciiarmor-BjFlPGAR.cjs.map +1 -0
- package/dist/asciiarmor-D5V0T9Cu.js +2 -0
- package/dist/asciiarmor-D5V0T9Cu.js.map +1 -0
- package/dist/asn1-DWPaVWf6.js +2 -0
- package/dist/asn1-DWPaVWf6.js.map +1 -0
- package/dist/asn1-Dn9-fgGr.cjs +2 -0
- package/dist/asn1-Dn9-fgGr.cjs.map +1 -0
- package/dist/asterisk-B46aRdXb.js +2 -0
- package/dist/asterisk-B46aRdXb.js.map +1 -0
- package/dist/asterisk-DIP73UbG.cjs +2 -0
- package/dist/asterisk-DIP73UbG.cjs.map +1 -0
- package/dist/brainfuck-CtZaYBKt.js +2 -0
- package/dist/brainfuck-CtZaYBKt.js.map +1 -0
- package/dist/brainfuck-DNcy2VoQ.cjs +2 -0
- package/dist/brainfuck-DNcy2VoQ.cjs.map +1 -0
- package/dist/clike-CSjUq15U.cjs +2 -0
- package/dist/clike-CSjUq15U.cjs.map +1 -0
- package/dist/clike-D9ynMLA9.js +2 -0
- package/dist/clike-D9ynMLA9.js.map +1 -0
- package/dist/clojure-C7e7OTgK.cjs +2 -0
- package/dist/clojure-C7e7OTgK.cjs.map +1 -0
- package/dist/clojure-DiuoqK-z.js +2 -0
- package/dist/clojure-DiuoqK-z.js.map +1 -0
- package/dist/cmake-DK3UdjBB.cjs +2 -0
- package/dist/cmake-DK3UdjBB.cjs.map +1 -0
- package/dist/cmake-DXn5xaP-.js +2 -0
- package/dist/cmake-DXn5xaP-.js.map +1 -0
- package/dist/cobol-D7gesrhf.cjs +2 -0
- package/dist/cobol-D7gesrhf.cjs.map +1 -0
- package/dist/cobol-stawOqaz.js +2 -0
- package/dist/cobol-stawOqaz.js.map +1 -0
- package/dist/coffeescript-BTDxI-eT.js +2 -0
- package/dist/coffeescript-BTDxI-eT.js.map +1 -0
- package/dist/coffeescript-CMaRvZDo.cjs +2 -0
- package/dist/coffeescript-CMaRvZDo.cjs.map +1 -0
- package/dist/commonlisp-BsK54Tey.cjs +2 -0
- package/dist/commonlisp-BsK54Tey.cjs.map +1 -0
- package/dist/commonlisp-vq6DHwts.js +2 -0
- package/dist/commonlisp-vq6DHwts.js.map +1 -0
- package/dist/crystal-BueyCNDj.cjs +2 -0
- package/dist/crystal-BueyCNDj.cjs.map +1 -0
- package/dist/crystal-CRzZ78HM.js +2 -0
- package/dist/crystal-CRzZ78HM.js.map +1 -0
- package/dist/css-C4GSMmGA.js +2 -0
- package/dist/css-C4GSMmGA.js.map +1 -0
- package/dist/css-DQQ8GO25.cjs +2 -0
- package/dist/css-DQQ8GO25.cjs.map +1 -0
- package/dist/cypher-CX8oWNVh.cjs +2 -0
- package/dist/cypher-CX8oWNVh.cjs.map +1 -0
- package/dist/cypher-gJDei3ni.js +2 -0
- package/dist/cypher-gJDei3ni.js.map +1 -0
- package/dist/d-BShv7fp-.js +2 -0
- package/dist/d-BShv7fp-.js.map +1 -0
- package/dist/d-Cer4WZq7.cjs +2 -0
- package/dist/d-Cer4WZq7.cjs.map +1 -0
- package/dist/diff-DanWUMqA.cjs +2 -0
- package/dist/diff-DanWUMqA.cjs.map +1 -0
- package/dist/diff-UJJ5BM9S.js +2 -0
- package/dist/diff-UJJ5BM9S.js.map +1 -0
- package/dist/dockerfile-D72m9Krh.cjs +2 -0
- package/dist/dockerfile-D72m9Krh.cjs.map +1 -0
- package/dist/dockerfile-DVQ9Q8O9.js +2 -0
- package/dist/dockerfile-DVQ9Q8O9.js.map +1 -0
- package/dist/dtd-DI9Herc-.js +2 -0
- package/dist/dtd-DI9Herc-.js.map +1 -0
- package/dist/dtd-N9E8mrwW.cjs +2 -0
- package/dist/dtd-N9E8mrwW.cjs.map +1 -0
- package/dist/dylan-BmN4EGo8.cjs +2 -0
- package/dist/dylan-BmN4EGo8.cjs.map +1 -0
- package/dist/dylan-DkEP81N9.js +2 -0
- package/dist/dylan-DkEP81N9.js.map +1 -0
- package/dist/ebnf-B-Df8AvO.js +2 -0
- package/dist/ebnf-B-Df8AvO.js.map +1 -0
- package/dist/ebnf-CHmKiAoS.cjs +2 -0
- package/dist/ebnf-CHmKiAoS.cjs.map +1 -0
- package/dist/ecl-DPFc0Uaf.js +2 -0
- package/dist/ecl-DPFc0Uaf.js.map +1 -0
- package/dist/ecl-DjtL7UT3.cjs +2 -0
- package/dist/ecl-DjtL7UT3.cjs.map +1 -0
- package/dist/editor.css +1892 -0
- package/dist/eiffel-DR5c0IrL.js +2 -0
- package/dist/eiffel-DR5c0IrL.js.map +1 -0
- package/dist/eiffel-u8sFjvpJ.cjs +2 -0
- package/dist/eiffel-u8sFjvpJ.cjs.map +1 -0
- package/dist/elm-DJqCmzHQ.cjs +2 -0
- package/dist/elm-DJqCmzHQ.cjs.map +1 -0
- package/dist/elm-DompmV0j.js +2 -0
- package/dist/elm-DompmV0j.js.map +1 -0
- package/dist/erlang-BuqgqA5h.js +2 -0
- package/dist/erlang-BuqgqA5h.js.map +1 -0
- package/dist/erlang-aNM9Wno5.cjs +2 -0
- package/dist/erlang-aNM9Wno5.cjs.map +1 -0
- package/dist/factor-Bk9_H-XT.js +2 -0
- package/dist/factor-Bk9_H-XT.js.map +1 -0
- package/dist/factor-DAjbIl49.cjs +2 -0
- package/dist/factor-DAjbIl49.cjs.map +1 -0
- package/dist/fcl-CVaBTCzQ.js +2 -0
- package/dist/fcl-CVaBTCzQ.js.map +1 -0
- package/dist/fcl-CplLEkwW.cjs +2 -0
- package/dist/fcl-CplLEkwW.cjs.map +1 -0
- package/dist/forth-CqDKyQE2.cjs +2 -0
- package/dist/forth-CqDKyQE2.cjs.map +1 -0
- package/dist/forth-POgR1ypr.js +2 -0
- package/dist/forth-POgR1ypr.js.map +1 -0
- package/dist/fortran-DL7KluxX.js +2 -0
- package/dist/fortran-DL7KluxX.js.map +1 -0
- package/dist/fortran-N3iQ92Ni.cjs +2 -0
- package/dist/fortran-N3iQ92Ni.cjs.map +1 -0
- package/dist/gas-8mz5Q3qN.js +2 -0
- package/dist/gas-8mz5Q3qN.js.map +1 -0
- package/dist/gas-BZkkcdED.cjs +2 -0
- package/dist/gas-BZkkcdED.cjs.map +1 -0
- package/dist/gherkin-B6X1vGSW.js +2 -0
- package/dist/gherkin-B6X1vGSW.js.map +1 -0
- package/dist/gherkin-CxCA0y5R.cjs +2 -0
- package/dist/gherkin-CxCA0y5R.cjs.map +1 -0
- package/dist/groovy-BQvSfgjf.cjs +2 -0
- package/dist/groovy-BQvSfgjf.cjs.map +1 -0
- package/dist/groovy-DnIzCrpZ.js +2 -0
- package/dist/groovy-DnIzCrpZ.js.map +1 -0
- package/dist/haskell-CLQs6EAM.js +2 -0
- package/dist/haskell-CLQs6EAM.js.map +1 -0
- package/dist/haskell-D7NTJ5RY.cjs +2 -0
- package/dist/haskell-D7NTJ5RY.cjs.map +1 -0
- package/dist/haxe-Cd8JQ-kk.cjs +2 -0
- package/dist/haxe-Cd8JQ-kk.cjs.map +1 -0
- package/dist/haxe-D25e-2l-.js +2 -0
- package/dist/haxe-D25e-2l-.js.map +1 -0
- package/dist/http-BKJkqRj4.js +2 -0
- package/dist/http-BKJkqRj4.js.map +1 -0
- package/dist/http-t7fOg_NY.cjs +2 -0
- package/dist/http-t7fOg_NY.cjs.map +1 -0
- package/dist/idl-CMWyLfiW.cjs +2 -0
- package/dist/idl-CMWyLfiW.cjs.map +1 -0
- package/dist/idl-pcmmZuaN.js +2 -0
- package/dist/idl-pcmmZuaN.js.map +1 -0
- package/dist/index-ACxdSjMI.js +2 -0
- package/dist/index-ACxdSjMI.js.map +1 -0
- package/dist/index-B8g-Emd_.cjs +2 -0
- package/dist/index-B8g-Emd_.cjs.map +1 -0
- package/dist/index-B8qgDwc2.cjs +2 -0
- package/dist/index-B8qgDwc2.cjs.map +1 -0
- package/dist/index-BA_fGRsg.cjs +2 -0
- package/dist/index-BA_fGRsg.cjs.map +1 -0
- package/dist/index-BB6ubjey.js +2 -0
- package/dist/index-BB6ubjey.js.map +1 -0
- package/dist/index-BP_HzP4g.cjs +2 -0
- package/dist/index-BP_HzP4g.cjs.map +1 -0
- package/dist/index-BVBmfxRp.js +2 -0
- package/dist/index-BVBmfxRp.js.map +1 -0
- package/dist/index-BWxF9mHQ.js +2 -0
- package/dist/index-BWxF9mHQ.js.map +1 -0
- package/dist/index-B_5Ht033.js +2 -0
- package/dist/index-B_5Ht033.js.map +1 -0
- package/dist/index-BeFrSIhU.js +2 -0
- package/dist/index-BeFrSIhU.js.map +1 -0
- package/dist/index-BfJWuhtD.js +2 -0
- package/dist/index-BfJWuhtD.js.map +1 -0
- package/dist/index-BjVxfywp.cjs +2 -0
- package/dist/index-BjVxfywp.cjs.map +1 -0
- package/dist/index-BrJMv-jH.js +2 -0
- package/dist/index-BrJMv-jH.js.map +1 -0
- package/dist/index-C2hO0yQX.cjs +2 -0
- package/dist/index-C2hO0yQX.cjs.map +1 -0
- package/dist/index-CCnrTHCt.js +2 -0
- package/dist/index-CCnrTHCt.js.map +1 -0
- package/dist/index-CJJ4VsSg.js +2 -0
- package/dist/index-CJJ4VsSg.js.map +1 -0
- package/dist/index-CJfX-kOc.cjs +2 -0
- package/dist/index-CJfX-kOc.cjs.map +1 -0
- package/dist/index-CLd2kktb.js +2 -0
- package/dist/index-CLd2kktb.js.map +1 -0
- package/dist/index-CLgcgbOT.cjs +2 -0
- package/dist/index-CLgcgbOT.cjs.map +1 -0
- package/dist/index-CaI_tf2M.js +2 -0
- package/dist/index-CaI_tf2M.js.map +1 -0
- package/dist/index-Cag-iwMt.js +2 -0
- package/dist/index-Cag-iwMt.js.map +1 -0
- package/dist/index-CdQh0Fyo.cjs +2 -0
- package/dist/index-CdQh0Fyo.cjs.map +1 -0
- package/dist/index-Cdt7DehW.cjs +30 -0
- package/dist/index-Cdt7DehW.cjs.map +1 -0
- package/dist/index-ChoC78fj.cjs +2 -0
- package/dist/index-ChoC78fj.cjs.map +1 -0
- package/dist/index-CnaX07f3.cjs +2 -0
- package/dist/index-CnaX07f3.cjs.map +1 -0
- package/dist/index-CrA_KK1J.cjs +2 -0
- package/dist/index-CrA_KK1J.cjs.map +1 -0
- package/dist/index-D1-a3lpN.cjs +2 -0
- package/dist/index-D1-a3lpN.cjs.map +1 -0
- package/dist/index-D5CLEDVN.js +2 -0
- package/dist/index-D5CLEDVN.js.map +1 -0
- package/dist/index-D7bPdN0E.js +30 -0
- package/dist/index-D7bPdN0E.js.map +1 -0
- package/dist/index-DD3pDFDN.cjs +2 -0
- package/dist/index-DD3pDFDN.cjs.map +1 -0
- package/dist/index-DJuPAZHh.cjs +2 -0
- package/dist/index-DJuPAZHh.cjs.map +1 -0
- package/dist/index-DKdNdnL4.js +2 -0
- package/dist/index-DKdNdnL4.js.map +1 -0
- package/dist/index-DgjCLKdD.cjs +2 -0
- package/dist/index-DgjCLKdD.cjs.map +1 -0
- package/dist/index-DhqL6bag.cjs +2 -0
- package/dist/index-DhqL6bag.cjs.map +1 -0
- package/dist/index-Dqz1jwXo.js +2 -0
- package/dist/index-Dqz1jwXo.js.map +1 -0
- package/dist/index-DvuuGDob.cjs +2 -0
- package/dist/index-DvuuGDob.cjs.map +1 -0
- package/dist/index-HXoeN679.js +2 -0
- package/dist/index-HXoeN679.js.map +1 -0
- package/dist/index-MEXcFr58.cjs +2 -0
- package/dist/index-MEXcFr58.cjs.map +1 -0
- package/dist/index-QYTegilJ.js +2 -0
- package/dist/index-QYTegilJ.js.map +1 -0
- package/dist/index-WCX-tAQC.js +2 -0
- package/dist/index-WCX-tAQC.js.map +1 -0
- package/dist/index-Y2ncXqt9.cjs +2 -0
- package/dist/index-Y2ncXqt9.cjs.map +1 -0
- package/dist/index-a2kYnnvX.cjs +2 -0
- package/dist/index-a2kYnnvX.cjs.map +1 -0
- package/dist/index-fzHicfTR.js +2 -0
- package/dist/index-fzHicfTR.js.map +1 -0
- package/dist/index-g6UtrOym.js +2 -0
- package/dist/index-g6UtrOym.js.map +1 -0
- package/dist/index-gIqivS4c.cjs +2 -0
- package/dist/index-gIqivS4c.cjs.map +1 -0
- package/dist/index-r8ALDJTU.js +2 -0
- package/dist/index-r8ALDJTU.js.map +1 -0
- package/dist/index.cjs.js +2 -0
- package/dist/index.cjs.js.map +1 -0
- package/dist/index.d.ts +3 -0
- package/dist/index.js +2 -0
- package/dist/index.js.map +1 -0
- package/dist/javascript-BVaBnk3P.js +2 -0
- package/dist/javascript-BVaBnk3P.js.map +1 -0
- package/dist/javascript-D6Y0eXWo.cjs +2 -0
- package/dist/javascript-D6Y0eXWo.cjs.map +1 -0
- package/dist/julia-BFjC6Od-.cjs +2 -0
- package/dist/julia-BFjC6Od-.cjs.map +1 -0
- package/dist/julia-DjdwvFuI.js +2 -0
- package/dist/julia-DjdwvFuI.js.map +1 -0
- package/dist/livescript-BEKRTOP4.cjs +2 -0
- package/dist/livescript-BEKRTOP4.cjs.map +1 -0
- package/dist/livescript-HO6ttBFx.js +2 -0
- package/dist/livescript-HO6ttBFx.js.map +1 -0
- package/dist/lua-8DXOpKDz.js +2 -0
- package/dist/lua-8DXOpKDz.js.map +1 -0
- package/dist/lua-B3w2r80v.cjs +2 -0
- package/dist/lua-B3w2r80v.cjs.map +1 -0
- package/dist/mathematica-BeWz3n7v.cjs +2 -0
- package/dist/mathematica-BeWz3n7v.cjs.map +1 -0
- package/dist/mathematica-IIbmv7SK.js +2 -0
- package/dist/mathematica-IIbmv7SK.js.map +1 -0
- package/dist/mbox-B-KNExnr.cjs +2 -0
- package/dist/mbox-B-KNExnr.cjs.map +1 -0
- package/dist/mbox-z_N2Mo3d.js +2 -0
- package/dist/mbox-z_N2Mo3d.js.map +1 -0
- package/dist/mirc-DKj7vbBK.cjs +2 -0
- package/dist/mirc-DKj7vbBK.cjs.map +1 -0
- package/dist/mirc-DkvFAiy5.js +2 -0
- package/dist/mirc-DkvFAiy5.js.map +1 -0
- package/dist/mllike-3c2dg9RT.js +2 -0
- package/dist/mllike-3c2dg9RT.js.map +1 -0
- package/dist/mllike-DNBMjfDT.cjs +2 -0
- package/dist/mllike-DNBMjfDT.cjs.map +1 -0
- package/dist/modelica-D0zQ5M5B.cjs +2 -0
- package/dist/modelica-D0zQ5M5B.cjs.map +1 -0
- package/dist/modelica-DSrSSXCg.js +2 -0
- package/dist/modelica-DSrSSXCg.js.map +1 -0
- package/dist/mscgen-B2igx18G.js +2 -0
- package/dist/mscgen-B2igx18G.js.map +1 -0
- package/dist/mscgen-DXB_4N_e.cjs +2 -0
- package/dist/mscgen-DXB_4N_e.cjs.map +1 -0
- package/dist/mumps-DQ_3S9Ud.cjs +2 -0
- package/dist/mumps-DQ_3S9Ud.cjs.map +1 -0
- package/dist/mumps-zvxmGV4l.js +2 -0
- package/dist/mumps-zvxmGV4l.js.map +1 -0
- package/dist/nginx-B4hAVlXN.js +2 -0
- package/dist/nginx-B4hAVlXN.js.map +1 -0
- package/dist/nginx-BxNxyOuV.cjs +2 -0
- package/dist/nginx-BxNxyOuV.cjs.map +1 -0
- package/dist/nsis-Cx8FAvMN.js +2 -0
- package/dist/nsis-Cx8FAvMN.js.map +1 -0
- package/dist/nsis-DPoxhFCA.cjs +2 -0
- package/dist/nsis-DPoxhFCA.cjs.map +1 -0
- package/dist/ntriples-BSwWqoLa.js +2 -0
- package/dist/ntriples-BSwWqoLa.js.map +1 -0
- package/dist/ntriples-D7LF77EX.cjs +2 -0
- package/dist/ntriples-D7LF77EX.cjs.map +1 -0
- package/dist/octave-C3xiZjFR.cjs +2 -0
- package/dist/octave-C3xiZjFR.cjs.map +1 -0
- package/dist/octave-C4hdQ5Hf.js +2 -0
- package/dist/octave-C4hdQ5Hf.js.map +1 -0
- package/dist/oz-hv8iHpBf.cjs +2 -0
- package/dist/oz-hv8iHpBf.cjs.map +1 -0
- package/dist/oz-qQq7irPq.js +2 -0
- package/dist/oz-qQq7irPq.js.map +1 -0
- package/dist/pascal-CafrKXZF.js +2 -0
- package/dist/pascal-CafrKXZF.js.map +1 -0
- package/dist/pascal-Dik6Bdx0.cjs +2 -0
- package/dist/pascal-Dik6Bdx0.cjs.map +1 -0
- package/dist/perl-Dc23MFYf.cjs +2 -0
- package/dist/perl-Dc23MFYf.cjs.map +1 -0
- package/dist/perl-tdMlh9QA.js +2 -0
- package/dist/perl-tdMlh9QA.js.map +1 -0
- package/dist/pig-CwGJVRC4.js +2 -0
- package/dist/pig-CwGJVRC4.js.map +1 -0
- package/dist/pig-DnhgnaAt.cjs +2 -0
- package/dist/pig-DnhgnaAt.cjs.map +1 -0
- package/dist/powershell-D1ly3AHC.js +2 -0
- package/dist/powershell-D1ly3AHC.js.map +1 -0
- package/dist/powershell-DIx6LGo6.cjs +2 -0
- package/dist/powershell-DIx6LGo6.cjs.map +1 -0
- package/dist/properties-C6mOHf2m.cjs +2 -0
- package/dist/properties-C6mOHf2m.cjs.map +1 -0
- package/dist/properties-_nPj978X.js +2 -0
- package/dist/properties-_nPj978X.js.map +1 -0
- package/dist/protobuf-B4y9do6W.js +2 -0
- package/dist/protobuf-B4y9do6W.js.map +1 -0
- package/dist/protobuf-zKe6cAIt.cjs +2 -0
- package/dist/protobuf-zKe6cAIt.cjs.map +1 -0
- package/dist/pug-Dlfivyh-.js +2 -0
- package/dist/pug-Dlfivyh-.js.map +1 -0
- package/dist/pug-fO_wg3KT.cjs +2 -0
- package/dist/pug-fO_wg3KT.cjs.map +1 -0
- package/dist/puppet-BVD6XdcM.cjs +2 -0
- package/dist/puppet-BVD6XdcM.cjs.map +1 -0
- package/dist/puppet-Bc-yJKzi.js +2 -0
- package/dist/puppet-Bc-yJKzi.js.map +1 -0
- package/dist/python-4hVbH2VM.cjs +2 -0
- package/dist/python-4hVbH2VM.cjs.map +1 -0
- package/dist/python-On6Xi21R.js +2 -0
- package/dist/python-On6Xi21R.js.map +1 -0
- package/dist/q-mUfi2b_o.js +2 -0
- package/dist/q-mUfi2b_o.js.map +1 -0
- package/dist/q-xj0roXkX.cjs +2 -0
- package/dist/q-xj0roXkX.cjs.map +1 -0
- package/dist/r-BA4EbLKE.js +2 -0
- package/dist/r-BA4EbLKE.js.map +1 -0
- package/dist/r-D3PcvI1z.cjs +2 -0
- package/dist/r-D3PcvI1z.cjs.map +1 -0
- package/dist/rpm-DI_rRufH.js +2 -0
- package/dist/rpm-DI_rRufH.js.map +1 -0
- package/dist/rpm-en7QUikA.cjs +2 -0
- package/dist/rpm-en7QUikA.cjs.map +1 -0
- package/dist/ruby-B5mrZV-E.cjs +2 -0
- package/dist/ruby-B5mrZV-E.cjs.map +1 -0
- package/dist/ruby-CR-u2WLS.js +2 -0
- package/dist/ruby-CR-u2WLS.js.map +1 -0
- package/dist/sas-Bqaci40L.js +2 -0
- package/dist/sas-Bqaci40L.js.map +1 -0
- package/dist/sas-DihmCBR4.cjs +2 -0
- package/dist/sas-DihmCBR4.cjs.map +1 -0
- package/dist/scheme-D4lhRHzG.cjs +2 -0
- package/dist/scheme-D4lhRHzG.cjs.map +1 -0
- package/dist/scheme-qjP0V5Ag.js +2 -0
- package/dist/scheme-qjP0V5Ag.js.map +1 -0
- package/dist/shell-5Optxxtq.cjs +2 -0
- package/dist/shell-5Optxxtq.cjs.map +1 -0
- package/dist/shell-BLav31RL.js +2 -0
- package/dist/shell-BLav31RL.js.map +1 -0
- package/dist/sieve-r025o_jW.js +2 -0
- package/dist/sieve-r025o_jW.js.map +1 -0
- package/dist/sieve-woNLjsDA.cjs +2 -0
- package/dist/sieve-woNLjsDA.cjs.map +1 -0
- package/dist/simple-mode-5nlGhSi7.cjs +2 -0
- package/dist/simple-mode-5nlGhSi7.cjs.map +1 -0
- package/dist/simple-mode-CjHKX61j.js +2 -0
- package/dist/simple-mode-CjHKX61j.js.map +1 -0
- package/dist/smalltalk-C7J3IyEP.js +2 -0
- package/dist/smalltalk-C7J3IyEP.js.map +1 -0
- package/dist/smalltalk-WUDknFHI.cjs +2 -0
- package/dist/smalltalk-WUDknFHI.cjs.map +1 -0
- package/dist/solr-78MBEUkU.js +2 -0
- package/dist/solr-78MBEUkU.js.map +1 -0
- package/dist/solr-Dv5yQw8C.cjs +2 -0
- package/dist/solr-Dv5yQw8C.cjs.map +1 -0
- package/dist/sparql-BRLJFz69.js +2 -0
- package/dist/sparql-BRLJFz69.js.map +1 -0
- package/dist/sparql-Ne__rGfz.cjs +2 -0
- package/dist/sparql-Ne__rGfz.cjs.map +1 -0
- package/dist/spreadsheet-CGlWr0eM.js +2 -0
- package/dist/spreadsheet-CGlWr0eM.js.map +1 -0
- package/dist/spreadsheet-sA8wKbVn.cjs +2 -0
- package/dist/spreadsheet-sA8wKbVn.cjs.map +1 -0
- package/dist/sql-ByLYq2fX.js +2 -0
- package/dist/sql-ByLYq2fX.js.map +1 -0
- package/dist/sql-YL702_qL.cjs +2 -0
- package/dist/sql-YL702_qL.cjs.map +1 -0
- package/dist/stex-0KIfGD5U.cjs +2 -0
- package/dist/stex-0KIfGD5U.cjs.map +1 -0
- package/dist/stex-BuioYw3P.js +2 -0
- package/dist/stex-BuioYw3P.js.map +1 -0
- package/dist/stylus-Bdo_Aemu.js +2 -0
- package/dist/stylus-Bdo_Aemu.js.map +1 -0
- package/dist/stylus-CaoJxDo0.cjs +2 -0
- package/dist/stylus-CaoJxDo0.cjs.map +1 -0
- package/dist/swift-B_XXVlXX.js +2 -0
- package/dist/swift-B_XXVlXX.js.map +1 -0
- package/dist/swift-D7nDGOwE.cjs +2 -0
- package/dist/swift-D7nDGOwE.cjs.map +1 -0
- package/dist/tcl-B2fODqDH.js +2 -0
- package/dist/tcl-B2fODqDH.js.map +1 -0
- package/dist/tcl-CKXdgq-y.cjs +2 -0
- package/dist/tcl-CKXdgq-y.cjs.map +1 -0
- package/dist/textile-BuVhTOzU.js +2 -0
- package/dist/textile-BuVhTOzU.js.map +1 -0
- package/dist/textile-CCW3yDUP.cjs +2 -0
- package/dist/textile-CCW3yDUP.cjs.map +1 -0
- package/dist/tiddlywiki-BgR6AEZu.js +2 -0
- package/dist/tiddlywiki-BgR6AEZu.js.map +1 -0
- package/dist/tiddlywiki-C-W_icqq.cjs +2 -0
- package/dist/tiddlywiki-C-W_icqq.cjs.map +1 -0
- package/dist/tiki-CI-ztowC.js +2 -0
- package/dist/tiki-CI-ztowC.js.map +1 -0
- package/dist/tiki-DrQIeHRf.cjs +2 -0
- package/dist/tiki-DrQIeHRf.cjs.map +1 -0
- package/dist/toml-BVJm5Fzd.js +2 -0
- package/dist/toml-BVJm5Fzd.js.map +1 -0
- package/dist/toml-CY1HDY9K.cjs +2 -0
- package/dist/toml-CY1HDY9K.cjs.map +1 -0
- package/dist/troff-Ce85hlLp.js +2 -0
- package/dist/troff-Ce85hlLp.js.map +1 -0
- package/dist/troff-Yww0HU2c.cjs +2 -0
- package/dist/troff-Yww0HU2c.cjs.map +1 -0
- package/dist/ttcn-BxnYHtq8.js +2 -0
- package/dist/ttcn-BxnYHtq8.js.map +1 -0
- package/dist/ttcn-D-KkrC_Y.cjs +2 -0
- package/dist/ttcn-D-KkrC_Y.cjs.map +1 -0
- package/dist/ttcn-cfg-CKJxb-l2.js +2 -0
- package/dist/ttcn-cfg-CKJxb-l2.js.map +1 -0
- package/dist/ttcn-cfg-DEW0CUak.cjs +2 -0
- package/dist/ttcn-cfg-DEW0CUak.cjs.map +1 -0
- package/dist/turtle-BkSuIpt-.js +2 -0
- package/dist/turtle-BkSuIpt-.js.map +1 -0
- package/dist/turtle-CNPaIIfW.cjs +2 -0
- package/dist/turtle-CNPaIIfW.cjs.map +1 -0
- package/dist/types.d.ts +14 -0
- package/dist/vb-BHgjm0DN.js +2 -0
- package/dist/vb-BHgjm0DN.js.map +1 -0
- package/dist/vb-CW7t9lKI.cjs +2 -0
- package/dist/vb-CW7t9lKI.cjs.map +1 -0
- package/dist/vbscript-D2Gs3oEd.cjs +2 -0
- package/dist/vbscript-D2Gs3oEd.cjs.map +1 -0
- package/dist/vbscript-VzWlGt02.js +2 -0
- package/dist/vbscript-VzWlGt02.js.map +1 -0
- package/dist/velocity-BdD_26Jv.js +2 -0
- package/dist/velocity-BdD_26Jv.js.map +1 -0
- package/dist/velocity-BpfD1zFY.cjs +2 -0
- package/dist/velocity-BpfD1zFY.cjs.map +1 -0
- package/dist/verilog-C8nH2N0M.js +2 -0
- package/dist/verilog-C8nH2N0M.js.map +1 -0
- package/dist/verilog-CcB4aIua.cjs +2 -0
- package/dist/verilog-CcB4aIua.cjs.map +1 -0
- package/dist/vhdl-9LHG0O1e.cjs +2 -0
- package/dist/vhdl-9LHG0O1e.cjs.map +1 -0
- package/dist/vhdl-CWWH2SUo.js +2 -0
- package/dist/vhdl-CWWH2SUo.js.map +1 -0
- package/dist/webidl-CGwyPRYs.js +2 -0
- package/dist/webidl-CGwyPRYs.js.map +1 -0
- package/dist/webidl-YkXkSuHd.cjs +2 -0
- package/dist/webidl-YkXkSuHd.cjs.map +1 -0
- package/dist/xquery-CVDBqZPY.js +2 -0
- package/dist/xquery-CVDBqZPY.js.map +1 -0
- package/dist/xquery-DwwVyz90.cjs +2 -0
- package/dist/xquery-DwwVyz90.cjs.map +1 -0
- package/dist/yacas-I8QjZlxf.js +2 -0
- package/dist/yacas-I8QjZlxf.js.map +1 -0
- package/dist/yacas-cn_NTwBk.cjs +2 -0
- package/dist/yacas-cn_NTwBk.cjs.map +1 -0
- package/dist/z80-B9lBbT6u.cjs +2 -0
- package/dist/z80-B9lBbT6u.cjs.map +1 -0
- package/dist/z80-DMVFMNEx.js +2 -0
- package/dist/z80-DMVFMNEx.js.map +1 -0
- package/package.json +69 -0
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import{P as e,m as t,n,T as r,o as s,s as i,p as o,t as a,q as l,E as h,r as f,L as c,u,v as d,w as p,x as m,e as g,l as k,y as x,z as L,f as b,i as S,A as C,C as w,B as y,D as A,F as I}from"./index-D7bPdN0E.js";import{html as T,htmlCompletionSource as B}from"./index-fzHicfTR.js";class E{static create(e,t,n,r,s){return new E(e,t,n,r+(r<<8)+e+(t<<4)|0,s,[],[])}constructor(e,t,r,s,i,o,a){this.type=e,this.value=t,this.from=r,this.hash=s,this.end=i,this.children=o,this.positions=a,this.hashProp=[[n.contextHash,s]]}addChild(e,t){e.prop(n.contextHash)!=this.hash&&(e=new l(e.type,e.children,e.positions,e.length,this.hashProp)),this.children.push(e),this.positions.push(t)}toTree(e,n=this.end){let r=this.children.length-1;return r>=0&&(n=Math.max(n,this.positions[r]+this.children[r].length+this.from)),new l(e.types[this.type],this.children,this.positions,n-this.from).balance({makeTree:(e,n,r)=>new l(t.none,e,n,r,this.hashProp)})}}var v;!function(e){e[e.Document=1]="Document",e[e.CodeBlock=2]="CodeBlock",e[e.FencedCode=3]="FencedCode",e[e.Blockquote=4]="Blockquote",e[e.HorizontalRule=5]="HorizontalRule",e[e.BulletList=6]="BulletList",e[e.OrderedList=7]="OrderedList",e[e.ListItem=8]="ListItem",e[e.ATXHeading1=9]="ATXHeading1",e[e.ATXHeading2=10]="ATXHeading2",e[e.ATXHeading3=11]="ATXHeading3",e[e.ATXHeading4=12]="ATXHeading4",e[e.ATXHeading5=13]="ATXHeading5",e[e.ATXHeading6=14]="ATXHeading6",e[e.SetextHeading1=15]="SetextHeading1",e[e.SetextHeading2=16]="SetextHeading2",e[e.HTMLBlock=17]="HTMLBlock",e[e.LinkReference=18]="LinkReference",e[e.Paragraph=19]="Paragraph",e[e.CommentBlock=20]="CommentBlock",e[e.ProcessingInstructionBlock=21]="ProcessingInstructionBlock",e[e.Escape=22]="Escape",e[e.Entity=23]="Entity",e[e.HardBreak=24]="HardBreak",e[e.Emphasis=25]="Emphasis",e[e.StrongEmphasis=26]="StrongEmphasis",e[e.Link=27]="Link",e[e.Image=28]="Image",e[e.InlineCode=29]="InlineCode",e[e.HTMLTag=30]="HTMLTag",e[e.Comment=31]="Comment",e[e.ProcessingInstruction=32]="ProcessingInstruction",e[e.Autolink=33]="Autolink",e[e.HeaderMark=34]="HeaderMark",e[e.QuoteMark=35]="QuoteMark",e[e.ListMark=36]="ListMark",e[e.LinkMark=37]="LinkMark",e[e.EmphasisMark=38]="EmphasisMark",e[e.CodeMark=39]="CodeMark",e[e.CodeText=40]="CodeText",e[e.CodeInfo=41]="CodeInfo",e[e.LinkTitle=42]="LinkTitle",e[e.LinkLabel=43]="LinkLabel",e[e.URL=44]="URL"}(v||(v={}));class H{constructor(e,t){this.start=e,this.content=t,this.marks=[],this.parsers=[]}}class M{constructor(){this.text="",this.baseIndent=0,this.basePos=0,this.depth=0,this.markers=[],this.pos=0,this.indent=0,this.next=-1}forward(){this.basePos>this.pos&&this.forwardInner()}forwardInner(){let e=this.skipSpace(this.basePos);this.indent=this.countIndent(e,this.pos,this.indent),this.pos=e,this.next=e==this.text.length?-1:this.text.charCodeAt(e)}skipSpace(e){return R(this.text,e)}reset(e){for(this.text=e,this.baseIndent=this.basePos=this.pos=this.indent=0,this.forwardInner(),this.depth=1;this.markers.length;)this.markers.pop()}moveBase(e){this.basePos=e,this.baseIndent=this.countIndent(e,this.pos,this.indent)}moveBaseColumn(e){this.baseIndent=e,this.basePos=this.findColumn(e)}addMarker(e){this.markers.push(e)}countIndent(e,t=0,n=0){for(let r=t;r<e;r++)n+=9==this.text.charCodeAt(r)?4-n%4:1;return n}findColumn(e){let t=0;for(let n=0;t<this.text.length&&n<e;t++)n+=9==this.text.charCodeAt(t)?4-n%4:1;return t}scrub(){if(!this.baseIndent)return this.text;let e="";for(let t=0;t<this.basePos;t++)e+=" ";return e+this.text.slice(this.basePos)}}function P(e,t,n){if(n.pos==n.text.length||e!=t.block&&n.indent>=t.stack[n.depth+1].value+n.baseIndent)return!0;if(n.indent>=n.baseIndent+4)return!1;let r=(e.type==v.OrderedList?j:F)(n,t,!1);return r>0&&(e.type!=v.BulletList||$(n,t,!1)<0)&&n.text.charCodeAt(n.pos+r-1)==e.value}const N={[v.Blockquote]:(e,t,n)=>62==n.next&&(n.markers.push(ke(v.QuoteMark,t.lineStart+n.pos,t.lineStart+n.pos+1)),n.moveBase(n.pos+(O(n.text.charCodeAt(n.pos+1))?2:1)),e.end=t.lineStart+n.text.length,!0),[v.ListItem]:(e,t,n)=>!(n.indent<n.baseIndent+e.value&&n.next>-1)&&(n.moveBaseColumn(n.baseIndent+e.value),!0),[v.OrderedList]:P,[v.BulletList]:P,[v.Document]:()=>!0};function O(e){return 32==e||9==e||10==e||13==e}function R(e,t=0){for(;t<e.length&&O(e.charCodeAt(t));)t++;return t}function X(e,t,n){for(;t>n&&O(e.charCodeAt(t-1));)t--;return t}function z(e){if(96!=e.next&&126!=e.next)return-1;let t=e.pos+1;for(;t<e.text.length&&e.text.charCodeAt(t)==e.next;)t++;if(t<e.pos+3)return-1;if(96==e.next)for(let n=t;n<e.text.length;n++)if(96==e.text.charCodeAt(n))return-1;return t}function D(e){return 62!=e.next?-1:32==e.text.charCodeAt(e.pos+1)?2:1}function $(e,t,n){if(42!=e.next&&45!=e.next&&95!=e.next)return-1;let r=1;for(let t=e.pos+1;t<e.text.length;t++){let n=e.text.charCodeAt(t);if(n==e.next)r++;else if(!O(n))return-1}return n&&45==e.next&&_(e)>-1&&e.depth==t.stack.length&&t.parser.leafBlockParsers.indexOf(re.SetextHeading)>-1||r<3?-1:1}function q(e,t){for(let n=e.stack.length-1;n>=0;n--)if(e.stack[n].type==t)return!0;return!1}function F(e,t,n){return 45!=e.next&&43!=e.next&&42!=e.next||e.pos!=e.text.length-1&&!O(e.text.charCodeAt(e.pos+1))||!(!n||q(t,v.BulletList)||e.skipSpace(e.pos+2)<e.text.length)?-1:1}function j(e,t,n){let r=e.pos,s=e.next;for(;s>=48&&s<=57;){if(r++,r==e.text.length)return-1;s=e.text.charCodeAt(r)}return r==e.pos||r>e.pos+9||46!=s&&41!=s||r<e.text.length-1&&!O(e.text.charCodeAt(r+1))||n&&!q(t,v.OrderedList)&&(e.skipSpace(r+1)==e.text.length||r>e.pos+1||49!=e.next)?-1:r+1-e.pos}function U(e){if(35!=e.next)return-1;let t=e.pos+1;for(;t<e.text.length&&35==e.text.charCodeAt(t);)t++;if(t<e.text.length&&32!=e.text.charCodeAt(t))return-1;let n=t-e.pos;return n>6?-1:n}function _(e){if(45!=e.next&&61!=e.next||e.indent>=e.baseIndent+4)return-1;let t=e.pos+1;for(;t<e.text.length&&e.text.charCodeAt(t)==e.next;)t++;let n=t;for(;t<e.text.length&&O(e.text.charCodeAt(t));)t++;return t==e.text.length?n:-1}const Q=/^[ \t]*$/,Z=/-->/,V=/\?>/,G=[[/^<(?:script|pre|style)(?:\s|>|$)/i,/<\/(?:script|pre|style)>/i],[/^\s*<!--/,Z],[/^\s*<\?/,V],[/^\s*<![A-Z]/,/>/],[/^\s*<!\[CDATA\[/,/\]\]>/],[/^\s*<\/?(?:address|article|aside|base|basefont|blockquote|body|caption|center|col|colgroup|dd|details|dialog|dir|div|dl|dt|fieldset|figcaption|figure|footer|form|frame|frameset|h1|h2|h3|h4|h5|h6|head|header|hr|html|iframe|legend|li|link|main|menu|menuitem|nav|noframes|ol|optgroup|option|p|param|section|source|summary|table|tbody|td|tfoot|th|thead|title|tr|track|ul)(?:\s|\/?>|$)/i,Q],[/^\s*(?:<\/[a-z][\w-]*\s*>|<[a-z][\w-]*(\s+[a-z:_][\w-.]*(?:\s*=\s*(?:[^\s"'=<>`]+|'[^']*'|"[^"]*"))?)*\s*>)\s*$/i,Q]];function K(e,t,n){if(60!=e.next)return-1;let r=e.text.slice(e.pos);for(let e=0,t=G.length-(n?1:0);e<t;e++)if(G[e][0].test(r))return e;return-1}function J(e,t){let n=e.countIndent(t,e.pos,e.indent),r=e.countIndent(e.skipSpace(t),t,n);return r>=n+5?n+1:r}function W(e,t,n){let r=e.length-1;r>=0&&e[r].to==t&&e[r].type==v.CodeText?e[r].to=n:e.push(ke(v.CodeText,t,n))}const Y={LinkReference:void 0,IndentedCode(e,t){let n=t.baseIndent+4;if(t.indent<n)return!1;let r=t.findColumn(n),s=e.lineStart+r,i=e.lineStart+t.text.length,o=[],a=[];for(W(o,s,i);e.nextLine()&&t.depth>=e.stack.length;)if(t.pos==t.text.length){W(a,e.lineStart-1,e.lineStart);for(let e of t.markers)a.push(e)}else{if(t.indent<n)break;{if(a.length){for(let e of a)e.type==v.CodeText?W(o,e.from,e.to):o.push(e);a=[]}W(o,e.lineStart-1,e.lineStart);for(let e of t.markers)o.push(e);i=e.lineStart+t.text.length;let n=e.lineStart+t.findColumn(t.baseIndent+4);n<i&&W(o,n,i)}}return a.length&&(a=a.filter(e=>e.type!=v.CodeText),a.length&&(t.markers=a.concat(t.markers))),e.addNode(e.buffer.writeElements(o,-s).finish(v.CodeBlock,i-s),s),!0},FencedCode(e,t){let n=z(t);if(n<0)return!1;let r=e.lineStart+t.pos,s=t.next,i=n-t.pos,o=t.skipSpace(n),a=X(t.text,t.text.length,o),l=[ke(v.CodeMark,r,r+i)];o<a&&l.push(ke(v.CodeInfo,e.lineStart+o,e.lineStart+a));for(let n=!0;e.nextLine()&&t.depth>=e.stack.length;n=!1){let r=t.pos;if(t.indent-t.baseIndent<4)for(;r<t.text.length&&t.text.charCodeAt(r)==s;)r++;if(r-t.pos>=i&&t.skipSpace(r)==t.text.length){for(let e of t.markers)l.push(e);l.push(ke(v.CodeMark,e.lineStart+t.pos,e.lineStart+r)),e.nextLine();break}{n||W(l,e.lineStart-1,e.lineStart);for(let e of t.markers)l.push(e);let r=e.lineStart+t.basePos,s=e.lineStart+t.text.length;r<s&&W(l,r,s)}}return e.addNode(e.buffer.writeElements(l,-r).finish(v.FencedCode,e.prevLineEnd()-r),r),!0},Blockquote(e,t){let n=D(t);return!(n<0)&&(e.startContext(v.Blockquote,t.pos),e.addNode(v.QuoteMark,e.lineStart+t.pos,e.lineStart+t.pos+1),t.moveBase(t.pos+n),null)},HorizontalRule(e,t){if($(t,e,!1)<0)return!1;let n=e.lineStart+t.pos;return e.nextLine(),e.addNode(v.HorizontalRule,n),!0},BulletList(e,t){let n=F(t,e,!1);if(n<0)return!1;e.block.type!=v.BulletList&&e.startContext(v.BulletList,t.basePos,t.next);let r=J(t,t.pos+1);return e.startContext(v.ListItem,t.basePos,r-t.baseIndent),e.addNode(v.ListMark,e.lineStart+t.pos,e.lineStart+t.pos+n),t.moveBaseColumn(r),null},OrderedList(e,t){let n=j(t,e,!1);if(n<0)return!1;e.block.type!=v.OrderedList&&e.startContext(v.OrderedList,t.basePos,t.text.charCodeAt(t.pos+n-1));let r=J(t,t.pos+n);return e.startContext(v.ListItem,t.basePos,r-t.baseIndent),e.addNode(v.ListMark,e.lineStart+t.pos,e.lineStart+t.pos+n),t.moveBaseColumn(r),null},ATXHeading(e,t){let n=U(t);if(n<0)return!1;let r=t.pos,s=e.lineStart+r,i=X(t.text,t.text.length,r),o=i;for(;o>r&&t.text.charCodeAt(o-1)==t.next;)o--;o!=i&&o!=r&&O(t.text.charCodeAt(o-1))||(o=t.text.length);let a=e.buffer.write(v.HeaderMark,0,n).writeElements(e.parser.parseInline(t.text.slice(r+n+1,o),s+n+1),-s);o<t.text.length&&a.write(v.HeaderMark,o-r,i-r);let l=a.finish(v.ATXHeading1-1+n,t.text.length-r);return e.nextLine(),e.addNode(l,s),!0},HTMLBlock(e,t){let n=K(t,0,!1);if(n<0)return!1;let r=e.lineStart+t.pos,s=G[n][1],i=[],o=s!=Q;for(;!s.test(t.text)&&e.nextLine();){if(t.depth<e.stack.length){o=!1;break}for(let e of t.markers)i.push(e)}o&&e.nextLine();let a=s==Z?v.CommentBlock:s==V?v.ProcessingInstructionBlock:v.HTMLBlock,l=e.prevLineEnd();return e.addNode(e.buffer.writeElements(i,-r).finish(a,l-r),r),!0},SetextHeading:void 0};class ee{constructor(e){this.stage=0,this.elts=[],this.pos=0,this.start=e.start,this.advance(e.content)}nextLine(e,t,n){if(-1==this.stage)return!1;let r=n.content+"\n"+t.scrub(),s=this.advance(r);return s>-1&&s<r.length&&this.complete(e,n,s)}finish(e,t){return(2==this.stage||3==this.stage)&&R(t.content,this.pos)==t.content.length&&this.complete(e,t,t.content.length)}complete(e,t,n){return e.addLeafElement(t,ke(v.LinkReference,this.start,this.start+n,this.elts)),!0}nextStage(e){return e?(this.pos=e.to-this.start,this.elts.push(e),this.stage++,!0):(!1===e&&(this.stage=-1),!1)}advance(e){for(;;){if(-1==this.stage)return-1;if(0==this.stage){if(!this.nextStage(Ee(e,this.pos,this.start,!0)))return-1;if(58!=e.charCodeAt(this.pos))return this.stage=-1;this.elts.push(ke(v.LinkMark,this.pos+this.start,this.pos+this.start+1)),this.pos++}else{if(1!=this.stage){if(2==this.stage){let t=R(e,this.pos),n=0;if(t>this.pos){let r=Be(e,t,this.start);if(r){let t=te(e,r.to-this.start);t>0&&(this.nextStage(r),n=t)}}return n||(n=te(e,this.pos)),n>0&&n<e.length?n:-1}return te(e,this.pos)}if(!this.nextStage(Te(e,R(e,this.pos),this.start)))return-1}}}}function te(e,t){for(;t<e.length;t++){let n=e.charCodeAt(t);if(10==n)break;if(!O(n))return-1}return t}class ne{nextLine(e,t,n){let r=t.depth<e.stack.length?-1:_(t),s=t.next;if(r<0)return!1;let i=ke(v.HeaderMark,e.lineStart+t.pos,e.lineStart+r);return e.nextLine(),e.addLeafElement(n,ke(61==s?v.SetextHeading1:v.SetextHeading2,n.start,e.prevLineEnd(),[...e.parser.parseInline(n.content,n.start),i])),!0}finish(){return!1}}const re={LinkReference:(e,t)=>91==t.content.charCodeAt(0)?new ee(t):null,SetextHeading:()=>new ne},se=[(e,t)=>U(t)>=0,(e,t)=>z(t)>=0,(e,t)=>D(t)>=0,(e,t)=>F(t,e,!0)>=0,(e,t)=>j(t,e,!0)>=0,(e,t)=>$(t,e,!0)>=0,(e,t)=>K(t,0,!0)>=0],ie={text:"",end:0};class oe{constructor(e,t,n,r){this.parser=e,this.input=t,this.ranges=r,this.line=new M,this.atEnd=!1,this.reusePlaceholders=new Map,this.stoppedAt=null,this.rangeI=0,this.to=r[r.length-1].to,this.lineStart=this.absoluteLineStart=this.absoluteLineEnd=r[0].from,this.block=E.create(v.Document,0,this.lineStart,0,0),this.stack=[this.block],this.fragments=n.length?new Pe(n,t):null,this.readLine()}get parsedPos(){return this.absoluteLineStart}advance(){if(null!=this.stoppedAt&&this.absoluteLineStart>this.stoppedAt)return this.finish();let{line:e}=this;for(;;){for(let t=0;;){let n=e.depth<this.stack.length?this.stack[this.stack.length-1]:null;for(;t<e.markers.length&&(!n||e.markers[t].from<n.end);){let n=e.markers[t++];this.addNode(n.type,n.from,n.to)}if(!n)break;this.finishContext()}if(e.pos<e.text.length)break;if(!this.nextLine())return this.finish()}if(this.fragments&&this.reuseFragment(e.basePos))return null;e:for(;;){for(let t of this.parser.blockParsers)if(t){let n=t(this,e);if(0!=n){if(1==n)return null;e.forward();continue e}}break}let t=new H(this.lineStart+e.pos,e.text.slice(e.pos));for(let e of this.parser.leafBlockParsers)if(e){let n=e(this,t);n&&t.parsers.push(n)}e:for(;this.nextLine()&&e.pos!=e.text.length;){if(e.indent<e.baseIndent+4)for(let n of this.parser.endLeafBlock)if(n(this,e,t))break e;for(let n of t.parsers)if(n.nextLine(this,e,t))return null;t.content+="\n"+e.scrub();for(let n of e.markers)t.marks.push(n)}return this.finishLeaf(t),null}stopAt(e){if(null!=this.stoppedAt&&this.stoppedAt<e)throw new RangeError("Can't move stoppedAt forward");this.stoppedAt=e}reuseFragment(e){if(!this.fragments.moveTo(this.absoluteLineStart+e,this.absoluteLineStart)||!this.fragments.matches(this.block.hash))return!1;let t=this.fragments.takeNodes(this);return!!t&&(this.absoluteLineStart+=t,this.lineStart=Ne(this.absoluteLineStart,this.ranges),this.moveRangeI(),this.absoluteLineStart<this.to?(this.lineStart++,this.absoluteLineStart++,this.readLine()):(this.atEnd=!0,this.readLine()),!0)}get depth(){return this.stack.length}parentType(e=this.depth-1){return this.parser.nodeSet.types[this.stack[e].type]}nextLine(){return this.lineStart+=this.line.text.length,this.absoluteLineEnd>=this.to?(this.absoluteLineStart=this.absoluteLineEnd,this.atEnd=!0,this.readLine(),!1):(this.lineStart++,this.absoluteLineStart=this.absoluteLineEnd+1,this.moveRangeI(),this.readLine(),!0)}peekLine(){return this.scanLine(this.absoluteLineEnd+1).text}moveRangeI(){for(;this.rangeI<this.ranges.length-1&&this.absoluteLineStart>=this.ranges[this.rangeI].to;)this.rangeI++,this.absoluteLineStart=Math.max(this.absoluteLineStart,this.ranges[this.rangeI].from)}scanLine(e){let t=ie;if(t.end=e,e>=this.to)t.text="";else if(t.text=this.lineChunkAt(e),t.end+=t.text.length,this.ranges.length>1){let e=this.absoluteLineStart,n=this.rangeI;for(;this.ranges[n].to<t.end;){n++;let r=this.ranges[n].from,s=this.lineChunkAt(r);t.end=r+s.length,t.text=t.text.slice(0,this.ranges[n-1].to-e)+s,e=t.end-t.text.length}}return t}readLine(){let{line:e}=this,{text:t,end:n}=this.scanLine(this.absoluteLineStart);for(this.absoluteLineEnd=n,e.reset(t);e.depth<this.stack.length;e.depth++){let t=this.stack[e.depth],n=this.parser.skipContextMarkup[t.type];if(!n)throw new Error("Unhandled block context "+v[t.type]);let r=this.line.markers.length;if(!n(t,this,e)){this.line.markers.length>r&&(t.end=this.line.markers[this.line.markers.length-1].to);break}e.forward()}}lineChunkAt(e){let t,n=this.input.chunk(e);if(this.input.lineChunks)t="\n"==n?"":n;else{let e=n.indexOf("\n");t=e<0?n:n.slice(0,e)}return e+t.length>this.to?t.slice(0,this.to-e):t}prevLineEnd(){return this.atEnd?this.lineStart:this.lineStart-1}startContext(e,t,n=0){this.block=E.create(e,n,this.lineStart+t,this.block.hash,this.lineStart+this.line.text.length),this.stack.push(this.block)}startComposite(e,t,n=0){this.startContext(this.parser.getNodeType(e),t,n)}addNode(e,t,n){"number"==typeof e&&(e=new l(this.parser.nodeSet.types[e],de,de,(null!=n?n:this.prevLineEnd())-t)),this.block.addChild(e,t-this.block.from)}addElement(e){this.block.addChild(e.toTree(this.parser.nodeSet),e.from-this.block.from)}addLeafElement(e,t){this.addNode(this.buffer.writeElements(He(t.children,e.marks),-t.from).finish(t.type,t.to-t.from),t.from)}finishContext(){let e=this.stack.pop(),t=this.stack[this.stack.length-1];t.addChild(e.toTree(this.parser.nodeSet),e.from-t.from),this.block=t}finish(){for(;this.stack.length>1;)this.finishContext();return this.addGaps(this.block.toTree(this.parser.nodeSet,this.lineStart))}addGaps(e){return this.ranges.length>1?ae(this.ranges,0,e.topNode,this.ranges[0].from,this.reusePlaceholders):e}finishLeaf(e){for(let t of e.parsers)if(t.finish(this,e))return;let t=He(this.parser.parseInline(e.content,e.start),e.marks);this.addNode(this.buffer.writeElements(t,-e.start).finish(v.Paragraph,e.content.length),e.start)}elt(e,t,n,r){return"string"==typeof e?ke(this.parser.getNodeType(e),t,n,r):new ge(e,t)}get buffer(){return new pe(this.parser.nodeSet)}}function ae(e,t,n,r,s){let i=e[t].to,o=[],a=[],h=n.from+r;function f(n,s){for(;s?n>=i:n>i;){let s=e[t+1].from-i;r+=s,n+=s,t++,i=e[t].to}}for(let l=n.firstChild;l;l=l.nextSibling){f(l.from+r,!0);let n,c=l.from+r,u=s.get(l.tree);u?n=u:l.to+r>i?(n=ae(e,t,l,r,s),f(l.to+r,!1)):n=l.toTree(),o.push(n),a.push(c-h)}return f(n.to+r,!1),new l(n.type,o,a,n.to+r-h,n.tree?n.tree.propValues:void 0)}class le extends e{constructor(e,t,n,r,s,i,o,a,l){super(),this.nodeSet=e,this.blockParsers=t,this.leafBlockParsers=n,this.blockNames=r,this.endLeafBlock=s,this.skipContextMarkup=i,this.inlineParsers=o,this.inlineNames=a,this.wrappers=l,this.nodeTypes=Object.create(null);for(let t of e.types)this.nodeTypes[t.name]=t.id}createParse(e,t,n){let r=new oe(this,e,t,n);for(let s of this.wrappers)r=s(r,e,t,n);return r}configure(e){let o=fe(e);if(!o)return this;let{nodeSet:a,skipContextMarkup:l}=this,h=this.blockParsers.slice(),f=this.leafBlockParsers.slice(),c=this.blockNames.slice(),u=this.inlineParsers.slice(),d=this.inlineNames.slice(),p=this.endLeafBlock.slice(),m=this.wrappers;if(he(o.defineNodes)){l=Object.assign({},l);let e,h=a.types.slice();for(let s of o.defineNodes){let{name:i,block:o,composite:a,style:f}="string"==typeof s?{name:s}:s;if(h.some(e=>e.name==i))continue;a&&(l[h.length]=(e,t,n)=>a(t,n,e.value));let c=h.length,u=a?["Block","BlockContext"]:o?c>=v.ATXHeading1&&c<=v.SetextHeading2?["Block","LeafBlock","Heading"]:["Block","LeafBlock"]:void 0;h.push(t.define({id:c,name:i,props:u&&[[n.group,u]]})),f&&(e||(e={}),Array.isArray(f)||f instanceof r?e[i]=f:Object.assign(e,f))}a=new s(h),e&&(a=a.extend(i(e)))}if(he(o.props)&&(a=a.extend(...o.props)),he(o.remove))for(let e of o.remove){let t=this.blockNames.indexOf(e),n=this.inlineNames.indexOf(e);t>-1&&(h[t]=f[t]=void 0),n>-1&&(u[n]=void 0)}if(he(o.parseBlock))for(let e of o.parseBlock){let t=c.indexOf(e.name);if(t>-1)h[t]=e.parse,f[t]=e.leaf;else{let t=e.before?ce(c,e.before):e.after?ce(c,e.after)+1:c.length-1;h.splice(t,0,e.parse),f.splice(t,0,e.leaf),c.splice(t,0,e.name)}e.endLeaf&&p.push(e.endLeaf)}if(he(o.parseInline))for(let e of o.parseInline){let t=d.indexOf(e.name);if(t>-1)u[t]=e.parse;else{let t=e.before?ce(d,e.before):e.after?ce(d,e.after)+1:d.length-1;u.splice(t,0,e.parse),d.splice(t,0,e.name)}}return o.wrap&&(m=m.concat(o.wrap)),new le(a,h,f,c,p,l,u,d,m)}getNodeType(e){let t=this.nodeTypes[e];if(null==t)throw new RangeError(`Unknown node type '${e}'`);return t}parseInline(e,t){let n=new ve(this,e,t);e:for(let e=t;e<n.end;){let t=n.char(e);for(let r of this.inlineParsers)if(r){let s=r(n,t,e);if(s>=0){e=s;continue e}}e++}return n.resolveMarkers(0)}}function he(e){return null!=e&&e.length>0}function fe(e){if(!Array.isArray(e))return e;if(0==e.length)return null;let t=fe(e[0]);if(1==e.length)return t;let n=fe(e.slice(1));if(!n||!t)return t||n;let r=(e,t)=>(e||de).concat(t||de),s=t.wrap,i=n.wrap;return{props:r(t.props,n.props),defineNodes:r(t.defineNodes,n.defineNodes),parseBlock:r(t.parseBlock,n.parseBlock),parseInline:r(t.parseInline,n.parseInline),remove:r(t.remove,n.remove),wrap:s?i?(e,t,n,r)=>s(i(e,t,n,r),t,n,r):s:i}}function ce(e,t){let n=e.indexOf(t);if(n<0)throw new RangeError(`Position specified relative to unknown parser ${t}`);return n}let ue=[t.none];for(let e,r=1;e=v[r];r++)ue[r]=t.define({id:r,name:e,props:r>=v.Escape?[]:[[n.group,r in N?["Block","BlockContext"]:["Block","LeafBlock"]]],top:"Document"==e});const de=[];class pe{constructor(e){this.nodeSet=e,this.content=[],this.nodes=[]}write(e,t,n,r=0){return this.content.push(e,t,n,4+4*r),this}writeElements(e,t=0){for(let n of e)n.writeTo(this,t);return this}finish(e,t){return l.build({buffer:this.content,nodeSet:this.nodeSet,reused:this.nodes,topID:e,length:t})}}class me{constructor(e,t,n,r=de){this.type=e,this.from=t,this.to=n,this.children=r}writeTo(e,t){let n=e.content.length;e.writeElements(this.children,t),e.content.push(this.type,this.from+t,this.to+t,e.content.length+4-n)}toTree(e){return new pe(e).writeElements(this.children,-this.from).finish(this.type,this.to-this.from)}}class ge{constructor(e,t){this.tree=e,this.from=t}get to(){return this.from+this.tree.length}get type(){return this.tree.type.id}get children(){return de}writeTo(e,t){e.nodes.push(this.tree),e.content.push(e.nodes.length-1,this.from+t,this.to+t,-1)}toTree(){return this.tree}}function ke(e,t,n,r){return new me(e,t,n,r)}const xe={resolve:"Emphasis",mark:"EmphasisMark"},Le={resolve:"Emphasis",mark:"EmphasisMark"},be={},Se={};class Ce{constructor(e,t,n,r){this.type=e,this.from=t,this.to=n,this.side=r}}const we="!\"#$%&'()*+,-./:;<=>?@[\\]^_`{|}~";let ye=/[!"#$%&'()*+,\-.\/:;<=>?@\[\\\]^_`{|}~\xA1\u2010-\u2027]/;try{ye=new RegExp("[\\p{S}|\\p{P}]","u")}catch(e){}const Ae={Escape(e,t,n){if(92!=t||n==e.end-1)return-1;let r=e.char(n+1);for(let t=0;t<32;t++)if(we.charCodeAt(t)==r)return e.append(ke(v.Escape,n,n+2));return-1},Entity(e,t,n){if(38!=t)return-1;let r=/^(?:#\d+|#x[a-f\d]+|\w+);/i.exec(e.slice(n+1,n+31));return r?e.append(ke(v.Entity,n,n+1+r[0].length)):-1},InlineCode(e,t,n){if(96!=t||n&&96==e.char(n-1))return-1;let r=n+1;for(;r<e.end&&96==e.char(r);)r++;let s=r-n,i=0;for(;r<e.end;r++)if(96==e.char(r)){if(i++,i==s&&96!=e.char(r+1))return e.append(ke(v.InlineCode,n,r+1,[ke(v.CodeMark,n,n+s),ke(v.CodeMark,r+1-s,r+1)]))}else i=0;return-1},HTMLTag(e,t,n){if(60!=t||n==e.end-1)return-1;let r=e.slice(n+1,e.end),s=/^(?:[a-z][-\w+.]+:[^\s>]+|[a-z\d.!#$%&'*+/=?^_`{|}~-]+@[a-z\d](?:[a-z\d-]{0,61}[a-z\d])?(?:\.[a-z\d](?:[a-z\d-]{0,61}[a-z\d])?)*)>/i.exec(r);if(s)return e.append(ke(v.Autolink,n,n+1+s[0].length,[ke(v.LinkMark,n,n+1),ke(v.URL,n+1,n+s[0].length),ke(v.LinkMark,n+s[0].length,n+1+s[0].length)]));let i=/^!--[^>](?:-[^-]|[^-])*?-->/i.exec(r);if(i)return e.append(ke(v.Comment,n,n+1+i[0].length));let o=/^\?[^]*?\?>/.exec(r);if(o)return e.append(ke(v.ProcessingInstruction,n,n+1+o[0].length));let a=/^(?:![A-Z][^]*?>|!\[CDATA\[[^]*?\]\]>|\/\s*[a-zA-Z][\w-]*\s*>|\s*[a-zA-Z][\w-]*(\s+[a-zA-Z:_][\w-.:]*(?:\s*=\s*(?:[^\s"'=<>`]+|'[^']*'|"[^"]*"))?)*\s*(\/\s*)?>)/.exec(r);return a?e.append(ke(v.HTMLTag,n,n+1+a[0].length)):-1},Emphasis(e,t,n){if(95!=t&&42!=t)return-1;let r=n+1;for(;e.char(r)==t;)r++;let s=e.slice(n-1,n),i=e.slice(r,r+1),o=ye.test(s),a=ye.test(i),l=/\s|^$/.test(s),h=/\s|^$/.test(i),f=!h&&(!a||l||o),c=!l&&(!o||h||a),u=f&&(42==t||!c||o),d=c&&(42==t||!f||a);return e.append(new Ce(95==t?xe:Le,n,r,(u?1:0)|(d?2:0)))},HardBreak(e,t,n){if(92==t&&10==e.char(n+1))return e.append(ke(v.HardBreak,n,n+2));if(32==t){let t=n+1;for(;32==e.char(t);)t++;if(10==e.char(t)&&t>=n+2)return e.append(ke(v.HardBreak,n,t+1))}return-1},Link:(e,t,n)=>91==t?e.append(new Ce(be,n,n+1,1)):-1,Image:(e,t,n)=>33==t&&91==e.char(n+1)?e.append(new Ce(Se,n,n+2,1)):-1,LinkEnd(e,t,n){if(93!=t)return-1;for(let t=e.parts.length-1;t>=0;t--){let r=e.parts[t];if(r instanceof Ce&&(r.type==be||r.type==Se)){if(!r.side||e.skipSpace(r.to)==n&&!/[(\[]/.test(e.slice(n+1,n+2)))return e.parts[t]=null,-1;let s=e.takeContent(t),i=e.parts[t]=Ie(e,s,r.type==be?v.Link:v.Image,r.from,n+1);if(r.type==be)for(let n=0;n<t;n++){let t=e.parts[n];t instanceof Ce&&t.type==be&&(t.side=0)}return i.to}}return-1}};function Ie(e,t,n,r,s){let{text:i}=e,o=e.char(s),a=s;if(t.unshift(ke(v.LinkMark,r,r+(n==v.Image?2:1))),t.push(ke(v.LinkMark,s-1,s)),40==o){let n,r=e.skipSpace(s+1),o=Te(i,r-e.offset,e.offset);o&&(r=e.skipSpace(o.to),r!=o.to&&(n=Be(i,r-e.offset,e.offset),n&&(r=e.skipSpace(n.to)))),41==e.char(r)&&(t.push(ke(v.LinkMark,s,s+1)),a=r+1,o&&t.push(o),n&&t.push(n),t.push(ke(v.LinkMark,r,a)))}else if(91==o){let n=Ee(i,s-e.offset,e.offset,!1);n&&(t.push(n),a=n.to)}return ke(n,r,a,t)}function Te(e,t,n){if(60==e.charCodeAt(t)){for(let r=t+1;r<e.length;r++){let s=e.charCodeAt(r);if(62==s)return ke(v.URL,t+n,r+1+n);if(60==s||10==s)return!1}return null}{let r=0,s=t;for(let t=!1;s<e.length;s++){let n=e.charCodeAt(s);if(O(n))break;if(t)t=!1;else if(40==n)r++;else if(41==n){if(!r)break;r--}else 92==n&&(t=!0)}return s>t?ke(v.URL,t+n,s+n):s==e.length&&null}}function Be(e,t,n){let r=e.charCodeAt(t);if(39!=r&&34!=r&&40!=r)return!1;let s=40==r?41:r;for(let r=t+1,i=!1;r<e.length;r++){let o=e.charCodeAt(r);if(i)i=!1;else{if(o==s)return ke(v.LinkTitle,t+n,r+1+n);92==o&&(i=!0)}}return null}function Ee(e,t,n,r){for(let s=!1,i=t+1,o=Math.min(e.length,i+999);i<o;i++){let o=e.charCodeAt(i);if(s)s=!1;else{if(93==o)return!r&&ke(v.LinkLabel,t+n,i+1+n);if(r&&!O(o)&&(r=!1),91==o)return!1;92==o&&(s=!0)}}return null}class ve{constructor(e,t,n){this.parser=e,this.text=t,this.offset=n,this.parts=[]}char(e){return e>=this.end?-1:this.text.charCodeAt(e-this.offset)}get end(){return this.offset+this.text.length}slice(e,t){return this.text.slice(e-this.offset,t-this.offset)}append(e){return this.parts.push(e),e.to}addDelimiter(e,t,n,r,s){return this.append(new Ce(e,t,n,(r?1:0)|(s?2:0)))}get hasOpenLink(){for(let e=this.parts.length-1;e>=0;e--){let t=this.parts[e];if(t instanceof Ce&&(t.type==be||t.type==Se))return!0}return!1}addElement(e){return this.append(e)}resolveMarkers(e){for(let t=e;t<this.parts.length;t++){let n=this.parts[t];if(!(n instanceof Ce&&n.type.resolve&&2&n.side))continue;let r,s=n.type==xe||n.type==Le,i=n.to-n.from,o=t-1;for(;o>=e;o--){let e=this.parts[o];if(e instanceof Ce&&1&e.side&&e.type==n.type&&!(s&&(1&n.side||2&e.side)&&(e.to-e.from+i)%3==0&&((e.to-e.from)%3||i%3))){r=e;break}}if(!r)continue;let a=n.type.resolve,l=[],h=r.from,f=n.to;if(s){let e=Math.min(2,r.to-r.from,i);h=r.to-e,f=n.from+e,a=1==e?"Emphasis":"StrongEmphasis"}r.type.mark&&l.push(this.elt(r.type.mark,h,r.to));for(let e=o+1;e<t;e++)this.parts[e]instanceof me&&l.push(this.parts[e]),this.parts[e]=null;n.type.mark&&l.push(this.elt(n.type.mark,n.from,f));let c=this.elt(a,h,f,l);this.parts[o]=s&&r.from!=h?new Ce(r.type,r.from,h,r.side):null,(this.parts[t]=s&&n.to!=f?new Ce(n.type,f,n.to,n.side):null)?this.parts.splice(t,0,c):this.parts[t]=c}let t=[];for(let n=e;n<this.parts.length;n++){let e=this.parts[n];e instanceof me&&t.push(e)}return t}findOpeningDelimiter(e){for(let t=this.parts.length-1;t>=0;t--){let n=this.parts[t];if(n instanceof Ce&&n.type==e&&1&n.side)return t}return null}takeContent(e){let t=this.resolveMarkers(e);return this.parts.length=e,t}getDelimiterAt(e){let t=this.parts[e];return t instanceof Ce?t:null}skipSpace(e){return R(this.text,e-this.offset)+this.offset}elt(e,t,n,r){return"string"==typeof e?ke(this.parser.getNodeType(e),t,n,r):new ge(e,t)}}function He(e,t){if(!t.length)return e;if(!e.length)return t;let n=e.slice(),r=0;for(let e of t){for(;r<n.length&&n[r].to<e.to;)r++;if(r<n.length&&n[r].from<e.from){let t=n[r];t instanceof me&&(n[r]=new me(t.type,t.from,t.to,He(t.children,[e])))}else n.splice(r++,0,e)}return n}ve.linkStart=be,ve.imageStart=Se;const Me=[v.CodeBlock,v.ListItem,v.OrderedList,v.BulletList];class Pe{constructor(e,t){this.fragments=e,this.input=t,this.i=0,this.fragment=null,this.fragmentEnd=-1,this.cursor=null,e.length&&(this.fragment=e[this.i++])}nextFragment(){this.fragment=this.i<this.fragments.length?this.fragments[this.i++]:null,this.cursor=null,this.fragmentEnd=-1}moveTo(e,t){for(;this.fragment&&this.fragment.to<=e;)this.nextFragment();if(!this.fragment||this.fragment.from>(e?e-1:0))return!1;if(this.fragmentEnd<0){let e=this.fragment.to;for(;e>0&&"\n"!=this.input.read(e-1,e);)e--;this.fragmentEnd=e?e-1:0}let n=this.cursor;n||(n=this.cursor=this.fragment.tree.cursor(),n.firstChild());let r=e+this.fragment.offset;for(;n.to<=r;)if(!n.parent())return!1;for(;;){if(n.from>=r)return this.fragment.from<=t;if(!n.childAfter(r))return!1}}matches(e){let t=this.cursor.tree;return t&&t.prop(n.contextHash)==e}takeNodes(e){let t=this.cursor,n=this.fragment.offset,r=this.fragmentEnd-(this.fragment.openEnd?1:0),s=e.absoluteLineStart,i=s,o=e.block.children.length,a=i,h=o;for(;;){if(t.to-n>r){if(t.type.isAnonymous&&t.firstChild())continue;break}let s=Ne(t.from-n,e.ranges);if(t.to-n<=e.ranges[e.rangeI].to)e.addNode(t.tree,s);else{let n=new l(e.parser.nodeSet.types[v.Paragraph],[],[],0,e.block.hashProp);e.reusePlaceholders.set(n,t.tree),e.addNode(n,s)}if(t.type.is("Block")&&(Me.indexOf(t.type.id)<0?(i=t.to-n,o=e.block.children.length):(i=a,o=h,a=t.to-n,h=e.block.children.length)),!t.nextSibling())break}for(;e.block.children.length>o;)e.block.children.pop(),e.block.positions.pop();return i-s}}function Ne(e,t){let n=e;for(let r=1;r<t.length;r++){let s=t[r-1].to,i=t[r].from;s<e&&(n-=i-s)}return n}const Oe=i({"Blockquote/...":a.quote,HorizontalRule:a.contentSeparator,"ATXHeading1/... SetextHeading1/...":a.heading1,"ATXHeading2/... SetextHeading2/...":a.heading2,"ATXHeading3/...":a.heading3,"ATXHeading4/...":a.heading4,"ATXHeading5/...":a.heading5,"ATXHeading6/...":a.heading6,"Comment CommentBlock":a.comment,Escape:a.escape,Entity:a.character,"Emphasis/...":a.emphasis,"StrongEmphasis/...":a.strong,"Link/... Image/...":a.link,"OrderedList/... BulletList/...":a.list,"BlockQuote/...":a.quote,"InlineCode CodeText":a.monospace,"URL Autolink":a.url,"HeaderMark HardBreak QuoteMark ListMark LinkMark EmphasisMark CodeMark":a.processingInstruction,"CodeInfo LinkLabel":a.labelName,LinkTitle:a.string,Paragraph:a.content}),Re=new le(new s(ue).extend(Oe),Object.keys(Y).map(e=>Y[e]),Object.keys(Y).map(e=>re[e]),Object.keys(Y),se,N,Object.keys(Ae).map(e=>Ae[e]),Object.keys(Ae),[]);function Xe(e,t,n){let r=[];for(let s=e.firstChild,i=t;;s=s.nextSibling){let e=s?s.from:n;if(e>i&&r.push({from:i,to:e}),!s)break;i=s.to}return r}const ze={resolve:"Strikethrough",mark:"StrikethroughMark"},De={defineNodes:[{name:"Strikethrough",style:{"Strikethrough/...":a.strikethrough}},{name:"StrikethroughMark",style:a.processingInstruction}],parseInline:[{name:"Strikethrough",parse(e,t,n){if(126!=t||126!=e.char(n+1)||126==e.char(n+2))return-1;let r=e.slice(n-1,n),s=e.slice(n+2,n+3),i=/\s|^$/.test(r),o=/\s|^$/.test(s),a=ye.test(r),l=ye.test(s);return e.addDelimiter(ze,n,n+2,!o&&(!l||i||a),!i&&(!a||o||l))},after:"Emphasis"}]};function $e(e,t,n=0,r,s=0){let i=0,o=!0,a=-1,l=-1,h=!1,f=()=>{r.push(e.elt("TableCell",s+a,s+l,e.parser.parseInline(t.slice(a,l),s+a)))};for(let c=n;c<t.length;c++){let n=t.charCodeAt(c);124!=n||h?(h||32!=n&&9!=n)&&(a<0&&(a=c),l=c+1):((!o||a>-1)&&i++,o=!1,r&&(a>-1&&f(),r.push(e.elt("TableDelimiter",c+s,c+s+1))),a=l=-1),h=!h&&92==n}return a>-1&&(i++,r&&f()),i}function qe(e,t){for(let n=t;n<e.length;n++){let t=e.charCodeAt(n);if(124==t)return!0;92==t&&n++}return!1}const Fe=/^\|?(\s*:?-+:?\s*\|)+(\s*:?-+:?\s*)?$/;class je{constructor(){this.rows=null}nextLine(e,t,n){if(null==this.rows){let r;if(this.rows=!1,(45==t.next||58==t.next||124==t.next)&&Fe.test(r=t.text.slice(t.pos))){let s=[];$e(e,n.content,0,s,n.start)==$e(e,r,t.pos)&&(this.rows=[e.elt("TableHeader",n.start,n.start+n.content.length,s),e.elt("TableDelimiter",e.lineStart+t.pos,e.lineStart+t.text.length)])}}else if(this.rows){let n=[];$e(e,t.text,t.pos,n,e.lineStart),this.rows.push(e.elt("TableRow",e.lineStart+t.pos,e.lineStart+t.text.length,n))}return!1}finish(e,t){return!!this.rows&&(e.addLeafElement(t,e.elt("Table",t.start,t.start+t.content.length,this.rows)),!0)}}const Ue={defineNodes:[{name:"Table",block:!0},{name:"TableHeader",style:{"TableHeader/...":a.heading}},"TableRow",{name:"TableCell",style:a.content},{name:"TableDelimiter",style:a.processingInstruction}],parseBlock:[{name:"Table",leaf:(e,t)=>qe(t.content,0)?new je:null,endLeaf(e,t,n){if(n.parsers.some(e=>e instanceof je)||!qe(t.text,t.basePos))return!1;let r=e.peekLine();return Fe.test(r)&&$e(e,t.text,t.basePos)==$e(e,r,t.basePos)},before:"SetextHeading"}]};class _e{nextLine(){return!1}finish(e,t){return e.addLeafElement(t,e.elt("Task",t.start,t.start+t.content.length,[e.elt("TaskMarker",t.start,t.start+3),...e.parser.parseInline(t.content.slice(3),t.start+3)])),!0}}const Qe={defineNodes:[{name:"Task",block:!0,style:a.list},{name:"TaskMarker",style:a.atom}],parseBlock:[{name:"TaskList",leaf:(e,t)=>/^\[[ xX]\][ \t]/.test(t.content)&&"ListItem"==e.parentType().name?new _e:null,after:"SetextHeading"}]},Ze=/(www\.)|(https?:\/\/)|([\w.+-]{1,100}@)|(mailto:|xmpp:)/gy,Ve=/[\w-]+(\.[\w-]+)+(\/[^\s<]*)?/gy,Ge=/[\w-]+\.[\w-]+($|\/)/,Ke=/[\w.+-]+@[\w-]+(\.[\w.-]+)+/gy,Je=/\/[a-zA-Z\d@.]+/gy;function We(e,t,n,r){let s=0;for(let i=t;i<n;i++)e[i]==r&&s++;return s}function Ye(e,t){Ke.lastIndex=t;let n=Ke.exec(e);if(!n)return-1;let r=n[0][n[0].length-1];return"_"==r||"-"==r?-1:t+n[0].length-("."==r?1:0)}const et=[Ue,Qe,De,{parseInline:[{name:"Autolink",parse(e,t,n){let r=n-e.offset;if(r&&/\w/.test(e.text[r-1]))return-1;Ze.lastIndex=r;let s=Ze.exec(e.text),i=-1;if(!s)return-1;if(s[1]||s[2]){if(i=function(e,t){Ve.lastIndex=t;let n=Ve.exec(e);if(!n||Ge.exec(n[0])[0].indexOf("_")>-1)return-1;let r=t+n[0].length;for(;;){let n,s=e[r-1];if(/[?!.,:*_~]/.test(s)||")"==s&&We(e,t,r,")")>We(e,t,r,"("))r--;else{if(";"!=s||!(n=/&(?:#\d+|#x[a-f\d]+|\w+);$/.exec(e.slice(t,r))))break;r=t+n.index}}return r}(e.text,r+s[0].length),i>-1&&e.hasOpenLink){i=r+/([^\[\]]|\[[^\]]*\])*/.exec(e.text.slice(r,i))[0].length}}else s[3]?i=Ye(e.text,r):(i=Ye(e.text,r+s[0].length),i>-1&&"xmpp:"==s[0]&&(Je.lastIndex=i,s=Je.exec(e.text),s&&(i=s.index+s[0].length)));return i<0?-1:(e.addElement(e.elt("URL",n,i+e.offset)),i+e.offset)}}]}];function tt(e,t,n){return(r,s,i)=>{if(s!=e||r.char(i+1)==e)return-1;let o=[r.elt(n,i,i+1)];for(let s=i+1;s<r.end;s++){let a=r.char(s);if(a==e)return r.addElement(r.elt(t,i,s+1,o.concat(r.elt(n,s,s+1))));if(92==a&&o.push(r.elt("Escape",s,2+s++)),O(a))break}return-1}}const nt={defineNodes:[{name:"Superscript",style:a.special(a.content)},{name:"SuperscriptMark",style:a.processingInstruction}],parseInline:[{name:"Superscript",parse:tt(94,"Superscript","SuperscriptMark")}]},rt={defineNodes:[{name:"Subscript",style:a.special(a.content)},{name:"SubscriptMark",style:a.processingInstruction}],parseInline:[{name:"Subscript",parse:tt(126,"Subscript","SubscriptMark")}]},st={defineNodes:[{name:"Emoji",style:a.character}],parseInline:[{name:"Emoji",parse(e,t,n){let r;return 58==t&&(r=/^[a-zA-Z_0-9]+:/.exec(e.slice(n+1,e.end)))?e.addElement(e.elt("Emoji",n,n+1+r[0].length)):-1}}]},it=m({commentTokens:{block:{open:"\x3c!--",close:"--\x3e"}}}),ot=new n,at=Re.configure({props:[b.add(e=>!e.is("Block")||e.is("Document")||null!=lt(e)||function(e){return"OrderedList"==e.name||"BulletList"==e.name}(e)?void 0:(e,t)=>({from:t.doc.lineAt(e.from).to,to:e.to})),ot.add(lt),S.add({Document:()=>null}),C.add({Document:it})]});function lt(e){let t=/^(?:ATX|Setext)Heading(\d)$/.exec(e.name);return t?+t[1]:void 0}function ht(e,t){let n=e;for(;;){let e,r=n.nextSibling;if(!r||null!=(e=lt(r.type))&&e<=t)break;n=r}return n.to}const ft=f.of((e,t,n)=>{for(let r=g(e).resolveInner(n,-1);r&&!(r.from<t);r=r.parent){let e=r.type.prop(ot);if(null==e)continue;let t=ht(r,e);if(t>n)return{from:n,to:t}}return null});function ct(e){return new p(it,e,[],"markdown")}const ut=ct(at),dt=ct(at.configure([et,rt,nt,st,{props:[b.add({Table:(e,t)=>({from:t.doc.lineAt(e.from).to,to:e.to})})]}]));class pt{constructor(e,t,n,r,s,i,o){this.node=e,this.from=t,this.to=n,this.spaceBefore=r,this.spaceAfter=s,this.type=i,this.item=o}blank(e,t=!0){let n=this.spaceBefore+("Blockquote"==this.node.name?">":"");if(null!=e){for(;n.length<e;)n+=" ";return n}for(let e=this.to-this.from-n.length-this.spaceAfter.length;e>0;e--)n+=" ";return n+(t?this.spaceAfter:"")}marker(e,t){let n="OrderedList"==this.node.name?String(+gt(this.item,e)[2]+t):"";return this.spaceBefore+n+this.type+this.spaceAfter}}function mt(e,t){let n=[],r=[];for(let t=e;t;t=t.parent){if("FencedCode"==t.name)return r;"ListItem"!=t.name&&"Blockquote"!=t.name||n.push(t)}for(let e=n.length-1;e>=0;e--){let s,i=n[e],o=t.lineAt(i.from),a=i.from-o.from;if("Blockquote"==i.name&&(s=/^ *>( ?)/.exec(o.text.slice(a))))r.push(new pt(i,a,a+s[0].length,"",s[1],">",null));else if("ListItem"==i.name&&"OrderedList"==i.parent.name&&(s=/^( *)\d+([.)])( *)/.exec(o.text.slice(a)))){let e=s[3],t=s[0].length;e.length>=4&&(e=e.slice(0,e.length-4),t-=4),r.push(new pt(i.parent,a,a+t,s[1],e,s[2],i))}else if("ListItem"==i.name&&"BulletList"==i.parent.name&&(s=/^( *)([-+*])( {1,4}\[[ xX]\])?( +)/.exec(o.text.slice(a)))){let e=s[4],t=s[0].length;e.length>4&&(e=e.slice(0,e.length-4),t-=4);let n=s[2];s[3]&&(n+=s[3].replace(/[xX]/," ")),r.push(new pt(i.parent,a,a+t,s[1],e,n,i))}}return r}function gt(e,t){return/^(\s*)(\d+)(?=[.)])/.exec(t.sliceString(e.from,e.from+10))}function kt(e,t,n,r=0){for(let s=-1,i=e;;){if("ListItem"==i.name){let e=gt(i,t),o=+e[2];if(s>=0){if(o!=s+1)return;n.push({from:i.from+e[1].length,to:i.from+e[0].length,insert:String(s+2+r)})}s=o}let e=i.nextSibling;if(!e)break;i=e}}function xt(e,t){let n=/^[ \t]*/.exec(e)[0].length;if(!n||"\t"!=t.facet(L))return e;let r="";for(let t=x(e,4,n);t>0;)t>=4?(r+="\t",t-=4):(r+=" ",t--);return r+e.slice(n)}const Lt=(e={})=>({state:t,dispatch:n})=>{let r=g(t),{doc:s}=t,i=null,o=t.changeByRange(n=>{if(!n.empty||!dt.isActiveAt(t,n.from,-1)&&!dt.isActiveAt(t,n.from,1))return i={range:n};let o=n.from,a=s.lineAt(o),l=mt(r.resolveInner(o,-1),s);for(;l.length&&l[l.length-1].from>o-a.from;)l.pop();if(!l.length)return i={range:n};let h=l[l.length-1];if(h.to-h.spaceAfter.length>o-a.from)return i={range:n};let f=o>=h.to-h.spaceAfter.length&&!/\S/.test(a.text.slice(h.to));if(h.item&&f){let n=h.node.firstChild,r=h.node.getChild("ListItem","ListItem");if(n.to>=o||r&&r.to<o||a.from>0&&!/[^\s>]/.test(s.lineAt(a.from-1).text)||!1===e.nonTightLists){let e,t=l.length>1?l[l.length-2]:null,n="";t&&t.item?(e=a.from+t.from,n=t.marker(s,1)):e=a.from+(t?t.to:0);let r=[{from:e,to:o,insert:n}];return"OrderedList"==h.node.name&&kt(h.item,s,r,-2),t&&"OrderedList"==t.node.name&&kt(t.item,s,r),{range:k.cursor(e+n.length),changes:r}}{let e=Ct(l,t,a);return{range:k.cursor(o+e.length+1),changes:{from:a.from,insert:e+t.lineBreak}}}}if("Blockquote"==h.node.name&&f&&a.from){let e=s.lineAt(a.from-1),r=/>\s*$/.exec(e.text);if(r&&r.index==h.from){let s=t.changes([{from:e.from+r.index,to:e.to},{from:a.from+h.from,to:a.to}]);return{range:n.map(s),changes:s}}}let c=[];"OrderedList"==h.node.name&&kt(h.item,s,c);let u=h.item&&h.item.from<a.from,d="";if(!u||/^[\s\d.)\-+*>]*/.exec(a.text)[0].length>=h.to)for(let e=0,t=l.length-1;e<=t;e++)d+=e!=t||u?l[e].blank(e<t?x(a.text,4,l[e+1].from)-d.length:null):l[e].marker(s,1);let p=o;for(;p>a.from&&/\s/.test(a.text.charAt(p-a.from-1));)p--;return d=xt(d,t),function(e,t){if("OrderedList"!=e.name&&"BulletList"!=e.name)return!1;let n=e.firstChild,r=e.getChild("ListItem","ListItem");if(!r)return!1;let s=t.lineAt(n.to),i=t.lineAt(r.from),o=/^[\s>]*$/.test(s.text);return s.number+(o?0:1)<i.number}(h.node,t.doc)&&(d=Ct(l,t,a)+t.lineBreak+d),c.push({from:p,to:o,insert:t.lineBreak+d}),{range:k.cursor(p+d.length+1),changes:c}});return!i&&(n(t.update(o,{scrollIntoView:!0,userEvent:"input"})),!0)},bt=Lt();function St(e){return"QuoteMark"==e.name||"ListMark"==e.name}function Ct(e,t,n){let r="";for(let t=0,s=e.length-2;t<=s;t++)r+=e[t].blank(t<s?x(n.text,4,e[t+1].from)-r.length:null,t<s);return xt(r,t)}const wt=({state:e,dispatch:t})=>{let n=g(e),r=null,s=e.changeByRange(t=>{let s=t.from,{doc:i}=e;if(t.empty&&dt.isActiveAt(e,t.from)){let t=i.lineAt(s),r=mt(function(e,t){let n=e.resolveInner(t,-1),r=t;St(n)&&(r=n.from,n=n.parent);for(let e;e=n.childBefore(r);)if(St(e))r=e.from;else{if("OrderedList"!=e.name&&"BulletList"!=e.name)break;n=e.lastChild,r=n.to}return n}(n,s),i);if(r.length){let n=r[r.length-1],i=n.to-n.spaceAfter.length+(n.spaceAfter?1:0);if(s-t.from>i&&!/\S/.test(t.text.slice(i,s-t.from)))return{range:k.cursor(t.from+i),changes:{from:t.from+i,to:s}};if(s-t.from==i&&(!n.item||t.from<=n.item.from||!/\S/.test(t.text.slice(0,n.to)))){let r=t.from+n.from;if(n.item&&n.node.from<n.item.from&&/\S/.test(t.text.slice(n.from,n.to))){let s=n.blank(x(t.text,4,n.to)-x(t.text,4,n.from));return r==t.from&&(s=xt(s,e)),{range:k.cursor(r+s.length),changes:{from:r,to:t.from+n.to,insert:s}}}if(r<s)return{range:k.cursor(r),changes:{from:r,to:s}}}}}return r={range:t}});return!r&&(t(e.update(s,{scrollIntoView:!0,userEvent:"delete"})),!0)},yt=[{key:"Enter",run:bt},{key:"Backspace",run:wt}],At=T({matchClosingTags:!1});function It(e={}){let{codeLanguages:t,defaultCodeLanguage:n,addKeymap:r=!0,base:{parser:s}=ut,completeHTMLTags:i=!0,pasteURLAsLink:a=!0,htmlTagLanguage:l=At}=e;if(!(s instanceof le))throw new RangeError("Base parser provided to `markdown` should be a Markdown parser");let h,f=e.extensions?[e.extensions]:[],p=[l.support,ft];a&&p.push(Ht),n instanceof c?(p.push(n.support),h=n.language):n&&(h=n);let m=t||h?(g=t,k=h,e=>{if(e&&g){let t=null;if(e=/\S*/.exec(e)[0],t="function"==typeof g?g(e):A.matchLanguageName(g,e,!0),t instanceof A)return t.support?t.support.language.parser:I.getSkippingParser(t.load());if(t)return t.parser}return k?k.parser:null}):void 0;var g,k;f.push(function(e){let{codeParser:t,htmlParser:n}=e,r=o((e,r)=>{let s=e.type.id;if(!t||s!=v.CodeBlock&&s!=v.FencedCode){if(n&&(s==v.HTMLBlock||s==v.HTMLTag||s==v.CommentBlock))return{parser:n,overlay:Xe(e.node,e.from,e.to)}}else{let n="";if(s==v.FencedCode){let t=e.node.getChild(v.CodeInfo);t&&(n=r.read(t.from,t.to))}let i=t(n);if(i)return{parser:i,overlay:e=>e.type.id==v.CodeText}}return null});return{wrap:r}}({codeParser:m,htmlParser:l.language.parser})),r&&p.push(u.high(d.of(yt)));let x=ct(s.configure(f));return i&&p.push(x.data.of({autocomplete:Tt})),new c(x,p)}function Tt(e){let{state:t,pos:n}=e,r=/<[:\-\.\w\u00b7-\uffff]*$/.exec(t.sliceDoc(n-25,n));if(!r)return null;let s=g(t).resolveInner(n,-1);for(;s&&!s.type.isTop;){if("CodeBlock"==s.name||"FencedCode"==s.name||"ProcessingInstructionBlock"==s.name||"CommentBlock"==s.name||"Link"==s.name||"Image"==s.name)return null;s=s.parent}return{from:n-r[0].length,to:n,options:Et(),validFor:/^<[:\-\.\w\u00b7-\uffff]*$/}}let Bt=null;function Et(){if(Bt)return Bt;let e=B(new w(y.create({extensions:At}),0,!0));return Bt=e?e.options:[]}const vt=/code|horizontalrule|html|link|comment|processing|escape|entity|image|mark|url/i,Ht=h.domEventHandlers({paste:(e,t)=>{var n;let{main:r}=t.state.selection;if(r.empty)return!1;let s=null===(n=e.clipboardData)||void 0===n?void 0:n.getData("text/plain");if(!s||!/^(https?:\/\/|mailto:|xmpp:|www\.)/.test(s))return!1;if(/^www\./.test(s)&&(s="https://"+s),!dt.isActiveAt(t.state,r.from,1))return!1;let i=g(t.state),o=!1;return i.iterate({from:r.from,to:r.to,enter:e=>{(e.from>r.from||vt.test(e.name))&&(o=!0)},leave:e=>{e.to<r.to&&(o=!0)}}),!o&&(t.dispatch({changes:[{from:r.from,insert:"["},{from:r.to,insert:`](${s})`}],userEvent:"input.paste",scrollIntoView:!0}),!0)}});export{ut as commonmarkLanguage,wt as deleteMarkupBackward,bt as insertNewlineContinueMarkup,Lt as insertNewlineContinueMarkupCommand,It as markdown,yt as markdownKeymap,dt as markdownLanguage,Ht as pasteURLAsLink};
|
|
2
|
+
//# sourceMappingURL=index-BrJMv-jH.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index-BrJMv-jH.js","sources":["../../../node_modules/@lezer/markdown/dist/index.js","../../../node_modules/@codemirror/lang-markdown/dist/index.js"],"sourcesContent":["import { NodeType, NodeProp, NodeSet, Tree, Parser, parseMixed } from '@lezer/common';\nimport { styleTags, tags, Tag } from '@lezer/highlight';\n\nclass CompositeBlock {\n static create(type, value, from, parentHash, end) {\n let hash = (parentHash + (parentHash << 8) + type + (value << 4)) | 0;\n return new CompositeBlock(type, value, from, hash, end, [], []);\n }\n constructor(type, \n // Used for indentation in list items, markup character in lists\n value, from, hash, end, children, positions) {\n this.type = type;\n this.value = value;\n this.from = from;\n this.hash = hash;\n this.end = end;\n this.children = children;\n this.positions = positions;\n this.hashProp = [[NodeProp.contextHash, hash]];\n }\n addChild(child, pos) {\n if (child.prop(NodeProp.contextHash) != this.hash)\n child = new Tree(child.type, child.children, child.positions, child.length, this.hashProp);\n this.children.push(child);\n this.positions.push(pos);\n }\n toTree(nodeSet, end = this.end) {\n let last = this.children.length - 1;\n if (last >= 0)\n end = Math.max(end, this.positions[last] + this.children[last].length + this.from);\n return new Tree(nodeSet.types[this.type], this.children, this.positions, end - this.from).balance({\n makeTree: (children, positions, length) => new Tree(NodeType.none, children, positions, length, this.hashProp)\n });\n }\n}\nvar Type;\n(function (Type) {\n Type[Type[\"Document\"] = 1] = \"Document\";\n Type[Type[\"CodeBlock\"] = 2] = \"CodeBlock\";\n Type[Type[\"FencedCode\"] = 3] = \"FencedCode\";\n Type[Type[\"Blockquote\"] = 4] = \"Blockquote\";\n Type[Type[\"HorizontalRule\"] = 5] = \"HorizontalRule\";\n Type[Type[\"BulletList\"] = 6] = \"BulletList\";\n Type[Type[\"OrderedList\"] = 7] = \"OrderedList\";\n Type[Type[\"ListItem\"] = 8] = \"ListItem\";\n Type[Type[\"ATXHeading1\"] = 9] = \"ATXHeading1\";\n Type[Type[\"ATXHeading2\"] = 10] = \"ATXHeading2\";\n Type[Type[\"ATXHeading3\"] = 11] = \"ATXHeading3\";\n Type[Type[\"ATXHeading4\"] = 12] = \"ATXHeading4\";\n Type[Type[\"ATXHeading5\"] = 13] = \"ATXHeading5\";\n Type[Type[\"ATXHeading6\"] = 14] = \"ATXHeading6\";\n Type[Type[\"SetextHeading1\"] = 15] = \"SetextHeading1\";\n Type[Type[\"SetextHeading2\"] = 16] = \"SetextHeading2\";\n Type[Type[\"HTMLBlock\"] = 17] = \"HTMLBlock\";\n Type[Type[\"LinkReference\"] = 18] = \"LinkReference\";\n Type[Type[\"Paragraph\"] = 19] = \"Paragraph\";\n Type[Type[\"CommentBlock\"] = 20] = \"CommentBlock\";\n Type[Type[\"ProcessingInstructionBlock\"] = 21] = \"ProcessingInstructionBlock\";\n // Inline\n Type[Type[\"Escape\"] = 22] = \"Escape\";\n Type[Type[\"Entity\"] = 23] = \"Entity\";\n Type[Type[\"HardBreak\"] = 24] = \"HardBreak\";\n Type[Type[\"Emphasis\"] = 25] = \"Emphasis\";\n Type[Type[\"StrongEmphasis\"] = 26] = \"StrongEmphasis\";\n Type[Type[\"Link\"] = 27] = \"Link\";\n Type[Type[\"Image\"] = 28] = \"Image\";\n Type[Type[\"InlineCode\"] = 29] = \"InlineCode\";\n Type[Type[\"HTMLTag\"] = 30] = \"HTMLTag\";\n Type[Type[\"Comment\"] = 31] = \"Comment\";\n Type[Type[\"ProcessingInstruction\"] = 32] = \"ProcessingInstruction\";\n Type[Type[\"Autolink\"] = 33] = \"Autolink\";\n // Smaller tokens\n Type[Type[\"HeaderMark\"] = 34] = \"HeaderMark\";\n Type[Type[\"QuoteMark\"] = 35] = \"QuoteMark\";\n Type[Type[\"ListMark\"] = 36] = \"ListMark\";\n Type[Type[\"LinkMark\"] = 37] = \"LinkMark\";\n Type[Type[\"EmphasisMark\"] = 38] = \"EmphasisMark\";\n Type[Type[\"CodeMark\"] = 39] = \"CodeMark\";\n Type[Type[\"CodeText\"] = 40] = \"CodeText\";\n Type[Type[\"CodeInfo\"] = 41] = \"CodeInfo\";\n Type[Type[\"LinkTitle\"] = 42] = \"LinkTitle\";\n Type[Type[\"LinkLabel\"] = 43] = \"LinkLabel\";\n Type[Type[\"URL\"] = 44] = \"URL\";\n})(Type || (Type = {}));\n/**\nData structure used to accumulate a block's content during [leaf\nblock parsing](#BlockParser.leaf).\n*/\nclass LeafBlock {\n /**\n @internal\n */\n constructor(\n /**\n The start position of the block.\n */\n start, \n /**\n The block's text content.\n */\n content) {\n this.start = start;\n this.content = content;\n /**\n @internal\n */\n this.marks = [];\n /**\n The block parsers active for this block.\n */\n this.parsers = [];\n }\n}\n/**\nData structure used during block-level per-line parsing.\n*/\nclass Line {\n constructor() {\n /**\n The line's full text.\n */\n this.text = \"\";\n /**\n The base indent provided by the composite contexts (that have\n been handled so far).\n */\n this.baseIndent = 0;\n /**\n The string position corresponding to the base indent.\n */\n this.basePos = 0;\n /**\n The number of contexts handled @internal\n */\n this.depth = 0;\n /**\n Any markers (i.e. block quote markers) parsed for the contexts. @internal\n */\n this.markers = [];\n /**\n The position of the next non-whitespace character beyond any\n list, blockquote, or other composite block markers.\n */\n this.pos = 0;\n /**\n The column of the next non-whitespace character.\n */\n this.indent = 0;\n /**\n The character code of the character after `pos`.\n */\n this.next = -1;\n }\n /**\n @internal\n */\n forward() {\n if (this.basePos > this.pos)\n this.forwardInner();\n }\n /**\n @internal\n */\n forwardInner() {\n let newPos = this.skipSpace(this.basePos);\n this.indent = this.countIndent(newPos, this.pos, this.indent);\n this.pos = newPos;\n this.next = newPos == this.text.length ? -1 : this.text.charCodeAt(newPos);\n }\n /**\n Skip whitespace after the given position, return the position of\n the next non-space character or the end of the line if there's\n only space after `from`.\n */\n skipSpace(from) { return skipSpace(this.text, from); }\n /**\n @internal\n */\n reset(text) {\n this.text = text;\n this.baseIndent = this.basePos = this.pos = this.indent = 0;\n this.forwardInner();\n this.depth = 1;\n while (this.markers.length)\n this.markers.pop();\n }\n /**\n Move the line's base position forward to the given position.\n This should only be called by composite [block\n parsers](#BlockParser.parse) or [markup skipping\n functions](#NodeSpec.composite).\n */\n moveBase(to) {\n this.basePos = to;\n this.baseIndent = this.countIndent(to, this.pos, this.indent);\n }\n /**\n Move the line's base position forward to the given _column_.\n */\n moveBaseColumn(indent) {\n this.baseIndent = indent;\n this.basePos = this.findColumn(indent);\n }\n /**\n Store a composite-block-level marker. Should be called from\n [markup skipping functions](#NodeSpec.composite) when they\n consume any non-whitespace characters.\n */\n addMarker(elt) {\n this.markers.push(elt);\n }\n /**\n Find the column position at `to`, optionally starting at a given\n position and column.\n */\n countIndent(to, from = 0, indent = 0) {\n for (let i = from; i < to; i++)\n indent += this.text.charCodeAt(i) == 9 ? 4 - indent % 4 : 1;\n return indent;\n }\n /**\n Find the position corresponding to the given column.\n */\n findColumn(goal) {\n let i = 0;\n for (let indent = 0; i < this.text.length && indent < goal; i++)\n indent += this.text.charCodeAt(i) == 9 ? 4 - indent % 4 : 1;\n return i;\n }\n /**\n @internal\n */\n scrub() {\n if (!this.baseIndent)\n return this.text;\n let result = \"\";\n for (let i = 0; i < this.basePos; i++)\n result += \" \";\n return result + this.text.slice(this.basePos);\n }\n}\nfunction skipForList(bl, cx, line) {\n if (line.pos == line.text.length ||\n (bl != cx.block && line.indent >= cx.stack[line.depth + 1].value + line.baseIndent))\n return true;\n if (line.indent >= line.baseIndent + 4)\n return false;\n let size = (bl.type == Type.OrderedList ? isOrderedList : isBulletList)(line, cx, false);\n return size > 0 &&\n (bl.type != Type.BulletList || isHorizontalRule(line, cx, false) < 0) &&\n line.text.charCodeAt(line.pos + size - 1) == bl.value;\n}\nconst DefaultSkipMarkup = {\n [Type.Blockquote](bl, cx, line) {\n if (line.next != 62 /* '>' */)\n return false;\n line.markers.push(elt(Type.QuoteMark, cx.lineStart + line.pos, cx.lineStart + line.pos + 1));\n line.moveBase(line.pos + (space(line.text.charCodeAt(line.pos + 1)) ? 2 : 1));\n bl.end = cx.lineStart + line.text.length;\n return true;\n },\n [Type.ListItem](bl, _cx, line) {\n if (line.indent < line.baseIndent + bl.value && line.next > -1)\n return false;\n line.moveBaseColumn(line.baseIndent + bl.value);\n return true;\n },\n [Type.OrderedList]: skipForList,\n [Type.BulletList]: skipForList,\n [Type.Document]() { return true; }\n};\nfunction space(ch) { return ch == 32 || ch == 9 || ch == 10 || ch == 13; }\nfunction skipSpace(line, i = 0) {\n while (i < line.length && space(line.charCodeAt(i)))\n i++;\n return i;\n}\nfunction skipSpaceBack(line, i, to) {\n while (i > to && space(line.charCodeAt(i - 1)))\n i--;\n return i;\n}\nfunction isFencedCode(line) {\n if (line.next != 96 && line.next != 126 /* '`~' */)\n return -1;\n let pos = line.pos + 1;\n while (pos < line.text.length && line.text.charCodeAt(pos) == line.next)\n pos++;\n if (pos < line.pos + 3)\n return -1;\n if (line.next == 96)\n for (let i = pos; i < line.text.length; i++)\n if (line.text.charCodeAt(i) == 96)\n return -1;\n return pos;\n}\nfunction isBlockquote(line) {\n return line.next != 62 /* '>' */ ? -1 : line.text.charCodeAt(line.pos + 1) == 32 ? 2 : 1;\n}\nfunction isHorizontalRule(line, cx, breaking) {\n if (line.next != 42 && line.next != 45 && line.next != 95 /* '_-*' */)\n return -1;\n let count = 1;\n for (let pos = line.pos + 1; pos < line.text.length; pos++) {\n let ch = line.text.charCodeAt(pos);\n if (ch == line.next)\n count++;\n else if (!space(ch))\n return -1;\n }\n // Setext headers take precedence\n if (breaking && line.next == 45 && isSetextUnderline(line) > -1 && line.depth == cx.stack.length &&\n cx.parser.leafBlockParsers.indexOf(DefaultLeafBlocks.SetextHeading) > -1)\n return -1;\n return count < 3 ? -1 : 1;\n}\nfunction inList(cx, type) {\n for (let i = cx.stack.length - 1; i >= 0; i--)\n if (cx.stack[i].type == type)\n return true;\n return false;\n}\nfunction isBulletList(line, cx, breaking) {\n return (line.next == 45 || line.next == 43 || line.next == 42 /* '-+*' */) &&\n (line.pos == line.text.length - 1 || space(line.text.charCodeAt(line.pos + 1))) &&\n (!breaking || inList(cx, Type.BulletList) || line.skipSpace(line.pos + 2) < line.text.length) ? 1 : -1;\n}\nfunction isOrderedList(line, cx, breaking) {\n let pos = line.pos, next = line.next;\n for (;;) {\n if (next >= 48 && next <= 57 /* '0-9' */)\n pos++;\n else\n break;\n if (pos == line.text.length)\n return -1;\n next = line.text.charCodeAt(pos);\n }\n if (pos == line.pos || pos > line.pos + 9 ||\n (next != 46 && next != 41 /* '.)' */) ||\n (pos < line.text.length - 1 && !space(line.text.charCodeAt(pos + 1))) ||\n breaking && !inList(cx, Type.OrderedList) &&\n (line.skipSpace(pos + 1) == line.text.length || pos > line.pos + 1 || line.next != 49 /* '1' */))\n return -1;\n return pos + 1 - line.pos;\n}\nfunction isAtxHeading(line) {\n if (line.next != 35 /* '#' */)\n return -1;\n let pos = line.pos + 1;\n while (pos < line.text.length && line.text.charCodeAt(pos) == 35)\n pos++;\n if (pos < line.text.length && line.text.charCodeAt(pos) != 32)\n return -1;\n let size = pos - line.pos;\n return size > 6 ? -1 : size;\n}\nfunction isSetextUnderline(line) {\n if (line.next != 45 && line.next != 61 /* '-=' */ || line.indent >= line.baseIndent + 4)\n return -1;\n let pos = line.pos + 1;\n while (pos < line.text.length && line.text.charCodeAt(pos) == line.next)\n pos++;\n let end = pos;\n while (pos < line.text.length && space(line.text.charCodeAt(pos)))\n pos++;\n return pos == line.text.length ? end : -1;\n}\nconst EmptyLine = /^[ \\t]*$/, CommentEnd = /-->/, ProcessingEnd = /\\?>/;\nconst HTMLBlockStyle = [\n [/^<(?:script|pre|style)(?:\\s|>|$)/i, /<\\/(?:script|pre|style)>/i],\n [/^\\s*<!--/, CommentEnd],\n [/^\\s*<\\?/, ProcessingEnd],\n [/^\\s*<![A-Z]/, />/],\n [/^\\s*<!\\[CDATA\\[/, /\\]\\]>/],\n [/^\\s*<\\/?(?:address|article|aside|base|basefont|blockquote|body|caption|center|col|colgroup|dd|details|dialog|dir|div|dl|dt|fieldset|figcaption|figure|footer|form|frame|frameset|h1|h2|h3|h4|h5|h6|head|header|hr|html|iframe|legend|li|link|main|menu|menuitem|nav|noframes|ol|optgroup|option|p|param|section|source|summary|table|tbody|td|tfoot|th|thead|title|tr|track|ul)(?:\\s|\\/?>|$)/i, EmptyLine],\n [/^\\s*(?:<\\/[a-z][\\w-]*\\s*>|<[a-z][\\w-]*(\\s+[a-z:_][\\w-.]*(?:\\s*=\\s*(?:[^\\s\"'=<>`]+|'[^']*'|\"[^\"]*\"))?)*\\s*>)\\s*$/i, EmptyLine]\n];\nfunction isHTMLBlock(line, _cx, breaking) {\n if (line.next != 60 /* '<' */)\n return -1;\n let rest = line.text.slice(line.pos);\n for (let i = 0, e = HTMLBlockStyle.length - (breaking ? 1 : 0); i < e; i++)\n if (HTMLBlockStyle[i][0].test(rest))\n return i;\n return -1;\n}\nfunction getListIndent(line, pos) {\n let indentAfter = line.countIndent(pos, line.pos, line.indent);\n let indented = line.countIndent(line.skipSpace(pos), pos, indentAfter);\n return indented >= indentAfter + 5 ? indentAfter + 1 : indented;\n}\nfunction addCodeText(marks, from, to) {\n let last = marks.length - 1;\n if (last >= 0 && marks[last].to == from && marks[last].type == Type.CodeText)\n marks[last].to = to;\n else\n marks.push(elt(Type.CodeText, from, to));\n}\n// Rules for parsing blocks. A return value of false means the rule\n// doesn't apply here, true means it does. When true is returned and\n// `p.line` has been updated, the rule is assumed to have consumed a\n// leaf block. Otherwise, it is assumed to have opened a context.\nconst DefaultBlockParsers = {\n LinkReference: undefined,\n IndentedCode(cx, line) {\n let base = line.baseIndent + 4;\n if (line.indent < base)\n return false;\n let start = line.findColumn(base);\n let from = cx.lineStart + start, to = cx.lineStart + line.text.length;\n let marks = [], pendingMarks = [];\n addCodeText(marks, from, to);\n while (cx.nextLine() && line.depth >= cx.stack.length) {\n if (line.pos == line.text.length) { // Empty\n addCodeText(pendingMarks, cx.lineStart - 1, cx.lineStart);\n for (let m of line.markers)\n pendingMarks.push(m);\n }\n else if (line.indent < base) {\n break;\n }\n else {\n if (pendingMarks.length) {\n for (let m of pendingMarks) {\n if (m.type == Type.CodeText)\n addCodeText(marks, m.from, m.to);\n else\n marks.push(m);\n }\n pendingMarks = [];\n }\n addCodeText(marks, cx.lineStart - 1, cx.lineStart);\n for (let m of line.markers)\n marks.push(m);\n to = cx.lineStart + line.text.length;\n let codeStart = cx.lineStart + line.findColumn(line.baseIndent + 4);\n if (codeStart < to)\n addCodeText(marks, codeStart, to);\n }\n }\n if (pendingMarks.length) {\n pendingMarks = pendingMarks.filter(m => m.type != Type.CodeText);\n if (pendingMarks.length)\n line.markers = pendingMarks.concat(line.markers);\n }\n cx.addNode(cx.buffer.writeElements(marks, -from).finish(Type.CodeBlock, to - from), from);\n return true;\n },\n FencedCode(cx, line) {\n let fenceEnd = isFencedCode(line);\n if (fenceEnd < 0)\n return false;\n let from = cx.lineStart + line.pos, ch = line.next, len = fenceEnd - line.pos;\n let infoFrom = line.skipSpace(fenceEnd), infoTo = skipSpaceBack(line.text, line.text.length, infoFrom);\n let marks = [elt(Type.CodeMark, from, from + len)];\n if (infoFrom < infoTo)\n marks.push(elt(Type.CodeInfo, cx.lineStart + infoFrom, cx.lineStart + infoTo));\n for (let first = true; cx.nextLine() && line.depth >= cx.stack.length; first = false) {\n let i = line.pos;\n if (line.indent - line.baseIndent < 4)\n while (i < line.text.length && line.text.charCodeAt(i) == ch)\n i++;\n if (i - line.pos >= len && line.skipSpace(i) == line.text.length) {\n for (let m of line.markers)\n marks.push(m);\n marks.push(elt(Type.CodeMark, cx.lineStart + line.pos, cx.lineStart + i));\n cx.nextLine();\n break;\n }\n else {\n if (!first)\n addCodeText(marks, cx.lineStart - 1, cx.lineStart);\n for (let m of line.markers)\n marks.push(m);\n let textStart = cx.lineStart + line.basePos, textEnd = cx.lineStart + line.text.length;\n if (textStart < textEnd)\n addCodeText(marks, textStart, textEnd);\n }\n }\n cx.addNode(cx.buffer.writeElements(marks, -from)\n .finish(Type.FencedCode, cx.prevLineEnd() - from), from);\n return true;\n },\n Blockquote(cx, line) {\n let size = isBlockquote(line);\n if (size < 0)\n return false;\n cx.startContext(Type.Blockquote, line.pos);\n cx.addNode(Type.QuoteMark, cx.lineStart + line.pos, cx.lineStart + line.pos + 1);\n line.moveBase(line.pos + size);\n return null;\n },\n HorizontalRule(cx, line) {\n if (isHorizontalRule(line, cx, false) < 0)\n return false;\n let from = cx.lineStart + line.pos;\n cx.nextLine();\n cx.addNode(Type.HorizontalRule, from);\n return true;\n },\n BulletList(cx, line) {\n let size = isBulletList(line, cx, false);\n if (size < 0)\n return false;\n if (cx.block.type != Type.BulletList)\n cx.startContext(Type.BulletList, line.basePos, line.next);\n let newBase = getListIndent(line, line.pos + 1);\n cx.startContext(Type.ListItem, line.basePos, newBase - line.baseIndent);\n cx.addNode(Type.ListMark, cx.lineStart + line.pos, cx.lineStart + line.pos + size);\n line.moveBaseColumn(newBase);\n return null;\n },\n OrderedList(cx, line) {\n let size = isOrderedList(line, cx, false);\n if (size < 0)\n return false;\n if (cx.block.type != Type.OrderedList)\n cx.startContext(Type.OrderedList, line.basePos, line.text.charCodeAt(line.pos + size - 1));\n let newBase = getListIndent(line, line.pos + size);\n cx.startContext(Type.ListItem, line.basePos, newBase - line.baseIndent);\n cx.addNode(Type.ListMark, cx.lineStart + line.pos, cx.lineStart + line.pos + size);\n line.moveBaseColumn(newBase);\n return null;\n },\n ATXHeading(cx, line) {\n let size = isAtxHeading(line);\n if (size < 0)\n return false;\n let off = line.pos, from = cx.lineStart + off;\n let endOfSpace = skipSpaceBack(line.text, line.text.length, off), after = endOfSpace;\n while (after > off && line.text.charCodeAt(after - 1) == line.next)\n after--;\n if (after == endOfSpace || after == off || !space(line.text.charCodeAt(after - 1)))\n after = line.text.length;\n let buf = cx.buffer\n .write(Type.HeaderMark, 0, size)\n .writeElements(cx.parser.parseInline(line.text.slice(off + size + 1, after), from + size + 1), -from);\n if (after < line.text.length)\n buf.write(Type.HeaderMark, after - off, endOfSpace - off);\n let node = buf.finish(Type.ATXHeading1 - 1 + size, line.text.length - off);\n cx.nextLine();\n cx.addNode(node, from);\n return true;\n },\n HTMLBlock(cx, line) {\n let type = isHTMLBlock(line, cx, false);\n if (type < 0)\n return false;\n let from = cx.lineStart + line.pos, end = HTMLBlockStyle[type][1];\n let marks = [], trailing = end != EmptyLine;\n while (!end.test(line.text) && cx.nextLine()) {\n if (line.depth < cx.stack.length) {\n trailing = false;\n break;\n }\n for (let m of line.markers)\n marks.push(m);\n }\n if (trailing)\n cx.nextLine();\n let nodeType = end == CommentEnd ? Type.CommentBlock : end == ProcessingEnd ? Type.ProcessingInstructionBlock : Type.HTMLBlock;\n let to = cx.prevLineEnd();\n cx.addNode(cx.buffer.writeElements(marks, -from).finish(nodeType, to - from), from);\n return true;\n },\n SetextHeading: undefined // Specifies relative precedence for block-continue function\n};\n// This implements a state machine that incrementally parses link references. At each\n// next line, it looks ahead to see if the line continues the reference or not. If it\n// doesn't and a valid link is available ending before that line, it finishes that.\n// Similarly, on `finish` (when the leaf is terminated by external circumstances), it\n// creates a link reference if there's a valid reference up to the current point.\nclass LinkReferenceParser {\n constructor(leaf) {\n this.stage = 0 /* RefStage.Start */;\n this.elts = [];\n this.pos = 0;\n this.start = leaf.start;\n this.advance(leaf.content);\n }\n nextLine(cx, line, leaf) {\n if (this.stage == -1 /* RefStage.Failed */)\n return false;\n let content = leaf.content + \"\\n\" + line.scrub();\n let finish = this.advance(content);\n if (finish > -1 && finish < content.length)\n return this.complete(cx, leaf, finish);\n return false;\n }\n finish(cx, leaf) {\n if ((this.stage == 2 /* RefStage.Link */ || this.stage == 3 /* RefStage.Title */) && skipSpace(leaf.content, this.pos) == leaf.content.length)\n return this.complete(cx, leaf, leaf.content.length);\n return false;\n }\n complete(cx, leaf, len) {\n cx.addLeafElement(leaf, elt(Type.LinkReference, this.start, this.start + len, this.elts));\n return true;\n }\n nextStage(elt) {\n if (elt) {\n this.pos = elt.to - this.start;\n this.elts.push(elt);\n this.stage++;\n return true;\n }\n if (elt === false)\n this.stage = -1 /* RefStage.Failed */;\n return false;\n }\n advance(content) {\n for (;;) {\n if (this.stage == -1 /* RefStage.Failed */) {\n return -1;\n }\n else if (this.stage == 0 /* RefStage.Start */) {\n if (!this.nextStage(parseLinkLabel(content, this.pos, this.start, true)))\n return -1;\n if (content.charCodeAt(this.pos) != 58 /* ':' */)\n return this.stage = -1 /* RefStage.Failed */;\n this.elts.push(elt(Type.LinkMark, this.pos + this.start, this.pos + this.start + 1));\n this.pos++;\n }\n else if (this.stage == 1 /* RefStage.Label */) {\n if (!this.nextStage(parseURL(content, skipSpace(content, this.pos), this.start)))\n return -1;\n }\n else if (this.stage == 2 /* RefStage.Link */) {\n let skip = skipSpace(content, this.pos), end = 0;\n if (skip > this.pos) {\n let title = parseLinkTitle(content, skip, this.start);\n if (title) {\n let titleEnd = lineEnd(content, title.to - this.start);\n if (titleEnd > 0) {\n this.nextStage(title);\n end = titleEnd;\n }\n }\n }\n if (!end)\n end = lineEnd(content, this.pos);\n return end > 0 && end < content.length ? end : -1;\n }\n else { // RefStage.Title\n return lineEnd(content, this.pos);\n }\n }\n }\n}\nfunction lineEnd(text, pos) {\n for (; pos < text.length; pos++) {\n let next = text.charCodeAt(pos);\n if (next == 10)\n break;\n if (!space(next))\n return -1;\n }\n return pos;\n}\nclass SetextHeadingParser {\n nextLine(cx, line, leaf) {\n let underline = line.depth < cx.stack.length ? -1 : isSetextUnderline(line);\n let next = line.next;\n if (underline < 0)\n return false;\n let underlineMark = elt(Type.HeaderMark, cx.lineStart + line.pos, cx.lineStart + underline);\n cx.nextLine();\n cx.addLeafElement(leaf, elt(next == 61 ? Type.SetextHeading1 : Type.SetextHeading2, leaf.start, cx.prevLineEnd(), [\n ...cx.parser.parseInline(leaf.content, leaf.start),\n underlineMark\n ]));\n return true;\n }\n finish() {\n return false;\n }\n}\nconst DefaultLeafBlocks = {\n LinkReference(_, leaf) { return leaf.content.charCodeAt(0) == 91 /* '[' */ ? new LinkReferenceParser(leaf) : null; },\n SetextHeading() { return new SetextHeadingParser; }\n};\nconst DefaultEndLeaf = [\n (_, line) => isAtxHeading(line) >= 0,\n (_, line) => isFencedCode(line) >= 0,\n (_, line) => isBlockquote(line) >= 0,\n (p, line) => isBulletList(line, p, true) >= 0,\n (p, line) => isOrderedList(line, p, true) >= 0,\n (p, line) => isHorizontalRule(line, p, true) >= 0,\n (p, line) => isHTMLBlock(line, p, true) >= 0\n];\nconst scanLineResult = { text: \"\", end: 0 };\n/**\nBlock-level parsing functions get access to this context object.\n*/\nclass BlockContext {\n /**\n @internal\n */\n constructor(\n /**\n The parser configuration used.\n */\n parser, \n /**\n @internal\n */\n input, fragments, \n /**\n @internal\n */\n ranges) {\n this.parser = parser;\n this.input = input;\n this.ranges = ranges;\n this.line = new Line();\n this.atEnd = false;\n /**\n For reused nodes on gaps, we can't directly put the original\n node into the tree, since that may be bigger than its parent.\n When this happens, we create a dummy tree that is replaced by\n the proper node in `injectGaps` @internal\n */\n this.reusePlaceholders = new Map;\n this.stoppedAt = null;\n /**\n The range index that absoluteLineStart points into @internal\n */\n this.rangeI = 0;\n this.to = ranges[ranges.length - 1].to;\n this.lineStart = this.absoluteLineStart = this.absoluteLineEnd = ranges[0].from;\n this.block = CompositeBlock.create(Type.Document, 0, this.lineStart, 0, 0);\n this.stack = [this.block];\n this.fragments = fragments.length ? new FragmentCursor(fragments, input) : null;\n this.readLine();\n }\n get parsedPos() {\n return this.absoluteLineStart;\n }\n advance() {\n if (this.stoppedAt != null && this.absoluteLineStart > this.stoppedAt)\n return this.finish();\n let { line } = this;\n for (;;) {\n for (let markI = 0;;) {\n let next = line.depth < this.stack.length ? this.stack[this.stack.length - 1] : null;\n while (markI < line.markers.length && (!next || line.markers[markI].from < next.end)) {\n let mark = line.markers[markI++];\n this.addNode(mark.type, mark.from, mark.to);\n }\n if (!next)\n break;\n this.finishContext();\n }\n if (line.pos < line.text.length)\n break;\n // Empty line\n if (!this.nextLine())\n return this.finish();\n }\n if (this.fragments && this.reuseFragment(line.basePos))\n return null;\n start: for (;;) {\n for (let type of this.parser.blockParsers)\n if (type) {\n let result = type(this, line);\n if (result != false) {\n if (result == true)\n return null;\n line.forward();\n continue start;\n }\n }\n break;\n }\n let leaf = new LeafBlock(this.lineStart + line.pos, line.text.slice(line.pos));\n for (let parse of this.parser.leafBlockParsers)\n if (parse) {\n let parser = parse(this, leaf);\n if (parser)\n leaf.parsers.push(parser);\n }\n lines: while (this.nextLine()) {\n if (line.pos == line.text.length)\n break;\n if (line.indent < line.baseIndent + 4) {\n for (let stop of this.parser.endLeafBlock)\n if (stop(this, line, leaf))\n break lines;\n }\n for (let parser of leaf.parsers)\n if (parser.nextLine(this, line, leaf))\n return null;\n leaf.content += \"\\n\" + line.scrub();\n for (let m of line.markers)\n leaf.marks.push(m);\n }\n this.finishLeaf(leaf);\n return null;\n }\n stopAt(pos) {\n if (this.stoppedAt != null && this.stoppedAt < pos)\n throw new RangeError(\"Can't move stoppedAt forward\");\n this.stoppedAt = pos;\n }\n reuseFragment(start) {\n if (!this.fragments.moveTo(this.absoluteLineStart + start, this.absoluteLineStart) ||\n !this.fragments.matches(this.block.hash))\n return false;\n let taken = this.fragments.takeNodes(this);\n if (!taken)\n return false;\n this.absoluteLineStart += taken;\n this.lineStart = toRelative(this.absoluteLineStart, this.ranges);\n this.moveRangeI();\n if (this.absoluteLineStart < this.to) {\n this.lineStart++;\n this.absoluteLineStart++;\n this.readLine();\n }\n else {\n this.atEnd = true;\n this.readLine();\n }\n return true;\n }\n /**\n The number of parent blocks surrounding the current block.\n */\n get depth() {\n return this.stack.length;\n }\n /**\n Get the type of the parent block at the given depth. When no\n depth is passed, return the type of the innermost parent.\n */\n parentType(depth = this.depth - 1) {\n return this.parser.nodeSet.types[this.stack[depth].type];\n }\n /**\n Move to the next input line. This should only be called by\n (non-composite) [block parsers](#BlockParser.parse) that consume\n the line directly, or leaf block parser\n [`nextLine`](#LeafBlockParser.nextLine) methods when they\n consume the current line (and return true).\n */\n nextLine() {\n this.lineStart += this.line.text.length;\n if (this.absoluteLineEnd >= this.to) {\n this.absoluteLineStart = this.absoluteLineEnd;\n this.atEnd = true;\n this.readLine();\n return false;\n }\n else {\n this.lineStart++;\n this.absoluteLineStart = this.absoluteLineEnd + 1;\n this.moveRangeI();\n this.readLine();\n return true;\n }\n }\n /**\n Retrieve the text of the line after the current one, without\n actually moving the context's current line forward.\n */\n peekLine() {\n return this.scanLine(this.absoluteLineEnd + 1).text;\n }\n moveRangeI() {\n while (this.rangeI < this.ranges.length - 1 && this.absoluteLineStart >= this.ranges[this.rangeI].to) {\n this.rangeI++;\n this.absoluteLineStart = Math.max(this.absoluteLineStart, this.ranges[this.rangeI].from);\n }\n }\n /**\n @internal\n Collect the text for the next line.\n */\n scanLine(start) {\n let r = scanLineResult;\n r.end = start;\n if (start >= this.to) {\n r.text = \"\";\n }\n else {\n r.text = this.lineChunkAt(start);\n r.end += r.text.length;\n if (this.ranges.length > 1) {\n let textOffset = this.absoluteLineStart, rangeI = this.rangeI;\n while (this.ranges[rangeI].to < r.end) {\n rangeI++;\n let nextFrom = this.ranges[rangeI].from;\n let after = this.lineChunkAt(nextFrom);\n r.end = nextFrom + after.length;\n r.text = r.text.slice(0, this.ranges[rangeI - 1].to - textOffset) + after;\n textOffset = r.end - r.text.length;\n }\n }\n }\n return r;\n }\n /**\n @internal\n Populate this.line with the content of the next line. Skip\n leading characters covered by composite blocks.\n */\n readLine() {\n let { line } = this, { text, end } = this.scanLine(this.absoluteLineStart);\n this.absoluteLineEnd = end;\n line.reset(text);\n for (; line.depth < this.stack.length; line.depth++) {\n let cx = this.stack[line.depth], handler = this.parser.skipContextMarkup[cx.type];\n if (!handler)\n throw new Error(\"Unhandled block context \" + Type[cx.type]);\n let marks = this.line.markers.length;\n if (!handler(cx, this, line)) {\n if (this.line.markers.length > marks)\n cx.end = this.line.markers[this.line.markers.length - 1].to;\n break;\n }\n line.forward();\n }\n }\n lineChunkAt(pos) {\n let next = this.input.chunk(pos), text;\n if (!this.input.lineChunks) {\n let eol = next.indexOf(\"\\n\");\n text = eol < 0 ? next : next.slice(0, eol);\n }\n else {\n text = next == \"\\n\" ? \"\" : next;\n }\n return pos + text.length > this.to ? text.slice(0, this.to - pos) : text;\n }\n /**\n The end position of the previous line.\n */\n prevLineEnd() { return this.atEnd ? this.lineStart : this.lineStart - 1; }\n /**\n @internal\n */\n startContext(type, start, value = 0) {\n this.block = CompositeBlock.create(type, value, this.lineStart + start, this.block.hash, this.lineStart + this.line.text.length);\n this.stack.push(this.block);\n }\n /**\n Start a composite block. Should only be called from [block\n parser functions](#BlockParser.parse) that return null.\n */\n startComposite(type, start, value = 0) {\n this.startContext(this.parser.getNodeType(type), start, value);\n }\n /**\n @internal\n */\n addNode(block, from, to) {\n if (typeof block == \"number\")\n block = new Tree(this.parser.nodeSet.types[block], none, none, (to !== null && to !== void 0 ? to : this.prevLineEnd()) - from);\n this.block.addChild(block, from - this.block.from);\n }\n /**\n Add a block element. Can be called by [block\n parsers](#BlockParser.parse).\n */\n addElement(elt) {\n this.block.addChild(elt.toTree(this.parser.nodeSet), elt.from - this.block.from);\n }\n /**\n Add a block element from a [leaf parser](#LeafBlockParser). This\n makes sure any extra composite block markup (such as blockquote\n markers) inside the block are also added to the syntax tree.\n */\n addLeafElement(leaf, elt) {\n this.addNode(this.buffer\n .writeElements(injectMarks(elt.children, leaf.marks), -elt.from)\n .finish(elt.type, elt.to - elt.from), elt.from);\n }\n /**\n @internal\n */\n finishContext() {\n let cx = this.stack.pop();\n let top = this.stack[this.stack.length - 1];\n top.addChild(cx.toTree(this.parser.nodeSet), cx.from - top.from);\n this.block = top;\n }\n finish() {\n while (this.stack.length > 1)\n this.finishContext();\n return this.addGaps(this.block.toTree(this.parser.nodeSet, this.lineStart));\n }\n addGaps(tree) {\n return this.ranges.length > 1 ?\n injectGaps(this.ranges, 0, tree.topNode, this.ranges[0].from, this.reusePlaceholders) : tree;\n }\n /**\n @internal\n */\n finishLeaf(leaf) {\n for (let parser of leaf.parsers)\n if (parser.finish(this, leaf))\n return;\n let inline = injectMarks(this.parser.parseInline(leaf.content, leaf.start), leaf.marks);\n this.addNode(this.buffer\n .writeElements(inline, -leaf.start)\n .finish(Type.Paragraph, leaf.content.length), leaf.start);\n }\n elt(type, from, to, children) {\n if (typeof type == \"string\")\n return elt(this.parser.getNodeType(type), from, to, children);\n return new TreeElement(type, from);\n }\n /**\n @internal\n */\n get buffer() { return new Buffer(this.parser.nodeSet); }\n}\nfunction injectGaps(ranges, rangeI, tree, offset, dummies) {\n let rangeEnd = ranges[rangeI].to;\n let children = [], positions = [], start = tree.from + offset;\n function movePastNext(upto, inclusive) {\n while (inclusive ? upto >= rangeEnd : upto > rangeEnd) {\n let size = ranges[rangeI + 1].from - rangeEnd;\n offset += size;\n upto += size;\n rangeI++;\n rangeEnd = ranges[rangeI].to;\n }\n }\n for (let ch = tree.firstChild; ch; ch = ch.nextSibling) {\n movePastNext(ch.from + offset, true);\n let from = ch.from + offset, node, reuse = dummies.get(ch.tree);\n if (reuse) {\n node = reuse;\n }\n else if (ch.to + offset > rangeEnd) {\n node = injectGaps(ranges, rangeI, ch, offset, dummies);\n movePastNext(ch.to + offset, false);\n }\n else {\n node = ch.toTree();\n }\n children.push(node);\n positions.push(from - start);\n }\n movePastNext(tree.to + offset, false);\n return new Tree(tree.type, children, positions, tree.to + offset - start, tree.tree ? tree.tree.propValues : undefined);\n}\n/**\nA Markdown parser configuration.\n*/\nclass MarkdownParser extends Parser {\n /**\n @internal\n */\n constructor(\n /**\n The parser's syntax [node\n types](https://lezer.codemirror.net/docs/ref/#common.NodeSet).\n */\n nodeSet, \n /**\n @internal\n */\n blockParsers, \n /**\n @internal\n */\n leafBlockParsers, \n /**\n @internal\n */\n blockNames, \n /**\n @internal\n */\n endLeafBlock, \n /**\n @internal\n */\n skipContextMarkup, \n /**\n @internal\n */\n inlineParsers, \n /**\n @internal\n */\n inlineNames, \n /**\n @internal\n */\n wrappers) {\n super();\n this.nodeSet = nodeSet;\n this.blockParsers = blockParsers;\n this.leafBlockParsers = leafBlockParsers;\n this.blockNames = blockNames;\n this.endLeafBlock = endLeafBlock;\n this.skipContextMarkup = skipContextMarkup;\n this.inlineParsers = inlineParsers;\n this.inlineNames = inlineNames;\n this.wrappers = wrappers;\n /**\n @internal\n */\n this.nodeTypes = Object.create(null);\n for (let t of nodeSet.types)\n this.nodeTypes[t.name] = t.id;\n }\n createParse(input, fragments, ranges) {\n let parse = new BlockContext(this, input, fragments, ranges);\n for (let w of this.wrappers)\n parse = w(parse, input, fragments, ranges);\n return parse;\n }\n /**\n Reconfigure the parser.\n */\n configure(spec) {\n let config = resolveConfig(spec);\n if (!config)\n return this;\n let { nodeSet, skipContextMarkup } = this;\n let blockParsers = this.blockParsers.slice(), leafBlockParsers = this.leafBlockParsers.slice(), blockNames = this.blockNames.slice(), inlineParsers = this.inlineParsers.slice(), inlineNames = this.inlineNames.slice(), endLeafBlock = this.endLeafBlock.slice(), wrappers = this.wrappers;\n if (nonEmpty(config.defineNodes)) {\n skipContextMarkup = Object.assign({}, skipContextMarkup);\n let nodeTypes = nodeSet.types.slice(), styles;\n for (let s of config.defineNodes) {\n let { name, block, composite, style } = typeof s == \"string\" ? { name: s } : s;\n if (nodeTypes.some(t => t.name == name))\n continue;\n if (composite)\n skipContextMarkup[nodeTypes.length] =\n (bl, cx, line) => composite(cx, line, bl.value);\n let id = nodeTypes.length;\n let group = composite ? [\"Block\", \"BlockContext\"] : !block ? undefined\n : id >= Type.ATXHeading1 && id <= Type.SetextHeading2 ? [\"Block\", \"LeafBlock\", \"Heading\"] : [\"Block\", \"LeafBlock\"];\n nodeTypes.push(NodeType.define({\n id,\n name,\n props: group && [[NodeProp.group, group]]\n }));\n if (style) {\n if (!styles)\n styles = {};\n if (Array.isArray(style) || style instanceof Tag)\n styles[name] = style;\n else\n Object.assign(styles, style);\n }\n }\n nodeSet = new NodeSet(nodeTypes);\n if (styles)\n nodeSet = nodeSet.extend(styleTags(styles));\n }\n if (nonEmpty(config.props))\n nodeSet = nodeSet.extend(...config.props);\n if (nonEmpty(config.remove)) {\n for (let rm of config.remove) {\n let block = this.blockNames.indexOf(rm), inline = this.inlineNames.indexOf(rm);\n if (block > -1)\n blockParsers[block] = leafBlockParsers[block] = undefined;\n if (inline > -1)\n inlineParsers[inline] = undefined;\n }\n }\n if (nonEmpty(config.parseBlock)) {\n for (let spec of config.parseBlock) {\n let found = blockNames.indexOf(spec.name);\n if (found > -1) {\n blockParsers[found] = spec.parse;\n leafBlockParsers[found] = spec.leaf;\n }\n else {\n let pos = spec.before ? findName(blockNames, spec.before)\n : spec.after ? findName(blockNames, spec.after) + 1 : blockNames.length - 1;\n blockParsers.splice(pos, 0, spec.parse);\n leafBlockParsers.splice(pos, 0, spec.leaf);\n blockNames.splice(pos, 0, spec.name);\n }\n if (spec.endLeaf)\n endLeafBlock.push(spec.endLeaf);\n }\n }\n if (nonEmpty(config.parseInline)) {\n for (let spec of config.parseInline) {\n let found = inlineNames.indexOf(spec.name);\n if (found > -1) {\n inlineParsers[found] = spec.parse;\n }\n else {\n let pos = spec.before ? findName(inlineNames, spec.before)\n : spec.after ? findName(inlineNames, spec.after) + 1 : inlineNames.length - 1;\n inlineParsers.splice(pos, 0, spec.parse);\n inlineNames.splice(pos, 0, spec.name);\n }\n }\n }\n if (config.wrap)\n wrappers = wrappers.concat(config.wrap);\n return new MarkdownParser(nodeSet, blockParsers, leafBlockParsers, blockNames, endLeafBlock, skipContextMarkup, inlineParsers, inlineNames, wrappers);\n }\n /**\n @internal\n */\n getNodeType(name) {\n let found = this.nodeTypes[name];\n if (found == null)\n throw new RangeError(`Unknown node type '${name}'`);\n return found;\n }\n /**\n Parse the given piece of inline text at the given offset,\n returning an array of [`Element`](#Element) objects representing\n the inline content.\n */\n parseInline(text, offset) {\n let cx = new InlineContext(this, text, offset);\n outer: for (let pos = offset; pos < cx.end;) {\n let next = cx.char(pos);\n for (let token of this.inlineParsers)\n if (token) {\n let result = token(cx, next, pos);\n if (result >= 0) {\n pos = result;\n continue outer;\n }\n }\n pos++;\n }\n return cx.resolveMarkers(0);\n }\n}\nfunction nonEmpty(a) {\n return a != null && a.length > 0;\n}\nfunction resolveConfig(spec) {\n if (!Array.isArray(spec))\n return spec;\n if (spec.length == 0)\n return null;\n let conf = resolveConfig(spec[0]);\n if (spec.length == 1)\n return conf;\n let rest = resolveConfig(spec.slice(1));\n if (!rest || !conf)\n return conf || rest;\n let conc = (a, b) => (a || none).concat(b || none);\n let wrapA = conf.wrap, wrapB = rest.wrap;\n return {\n props: conc(conf.props, rest.props),\n defineNodes: conc(conf.defineNodes, rest.defineNodes),\n parseBlock: conc(conf.parseBlock, rest.parseBlock),\n parseInline: conc(conf.parseInline, rest.parseInline),\n remove: conc(conf.remove, rest.remove),\n wrap: !wrapA ? wrapB : !wrapB ? wrapA :\n (inner, input, fragments, ranges) => wrapA(wrapB(inner, input, fragments, ranges), input, fragments, ranges)\n };\n}\nfunction findName(names, name) {\n let found = names.indexOf(name);\n if (found < 0)\n throw new RangeError(`Position specified relative to unknown parser ${name}`);\n return found;\n}\nlet nodeTypes = [NodeType.none];\nfor (let i = 1, name; name = Type[i]; i++) {\n nodeTypes[i] = NodeType.define({\n id: i,\n name,\n props: i >= Type.Escape ? [] : [[NodeProp.group, i in DefaultSkipMarkup ? [\"Block\", \"BlockContext\"] : [\"Block\", \"LeafBlock\"]]],\n top: name == \"Document\"\n });\n}\nconst none = [];\nclass Buffer {\n constructor(nodeSet) {\n this.nodeSet = nodeSet;\n this.content = [];\n this.nodes = [];\n }\n write(type, from, to, children = 0) {\n this.content.push(type, from, to, 4 + children * 4);\n return this;\n }\n writeElements(elts, offset = 0) {\n for (let e of elts)\n e.writeTo(this, offset);\n return this;\n }\n finish(type, length) {\n return Tree.build({\n buffer: this.content,\n nodeSet: this.nodeSet,\n reused: this.nodes,\n topID: type,\n length\n });\n }\n}\n/**\nElements are used to compose syntax nodes during parsing.\n*/\nclass Element {\n /**\n @internal\n */\n constructor(\n /**\n The node's\n [id](https://lezer.codemirror.net/docs/ref/#common.NodeType.id).\n */\n type, \n /**\n The start of the node, as an offset from the start of the document.\n */\n from, \n /**\n The end of the node.\n */\n to, \n /**\n The node's child nodes @internal\n */\n children = none) {\n this.type = type;\n this.from = from;\n this.to = to;\n this.children = children;\n }\n /**\n @internal\n */\n writeTo(buf, offset) {\n let startOff = buf.content.length;\n buf.writeElements(this.children, offset);\n buf.content.push(this.type, this.from + offset, this.to + offset, buf.content.length + 4 - startOff);\n }\n /**\n @internal\n */\n toTree(nodeSet) {\n return new Buffer(nodeSet).writeElements(this.children, -this.from).finish(this.type, this.to - this.from);\n }\n}\nclass TreeElement {\n constructor(tree, from) {\n this.tree = tree;\n this.from = from;\n }\n get to() { return this.from + this.tree.length; }\n get type() { return this.tree.type.id; }\n get children() { return none; }\n writeTo(buf, offset) {\n buf.nodes.push(this.tree);\n buf.content.push(buf.nodes.length - 1, this.from + offset, this.to + offset, -1);\n }\n toTree() { return this.tree; }\n}\nfunction elt(type, from, to, children) {\n return new Element(type, from, to, children);\n}\nconst EmphasisUnderscore = { resolve: \"Emphasis\", mark: \"EmphasisMark\" };\nconst EmphasisAsterisk = { resolve: \"Emphasis\", mark: \"EmphasisMark\" };\nconst LinkStart = {}, ImageStart = {};\nclass InlineDelimiter {\n constructor(type, from, to, side) {\n this.type = type;\n this.from = from;\n this.to = to;\n this.side = side;\n }\n}\nconst Escapable = \"!\\\"#$%&'()*+,-./:;<=>?@[\\\\]^_`{|}~\";\nlet Punctuation = /[!\"#$%&'()*+,\\-.\\/:;<=>?@\\[\\\\\\]^_`{|}~\\xA1\\u2010-\\u2027]/;\ntry {\n Punctuation = new RegExp(\"[\\\\p{S}|\\\\p{P}]\", \"u\");\n}\ncatch (_) { }\nconst DefaultInline = {\n Escape(cx, next, start) {\n if (next != 92 /* '\\\\' */ || start == cx.end - 1)\n return -1;\n let escaped = cx.char(start + 1);\n for (let i = 0; i < Escapable.length; i++)\n if (Escapable.charCodeAt(i) == escaped)\n return cx.append(elt(Type.Escape, start, start + 2));\n return -1;\n },\n Entity(cx, next, start) {\n if (next != 38 /* '&' */)\n return -1;\n let m = /^(?:#\\d+|#x[a-f\\d]+|\\w+);/i.exec(cx.slice(start + 1, start + 31));\n return m ? cx.append(elt(Type.Entity, start, start + 1 + m[0].length)) : -1;\n },\n InlineCode(cx, next, start) {\n if (next != 96 /* '`' */ || start && cx.char(start - 1) == 96)\n return -1;\n let pos = start + 1;\n while (pos < cx.end && cx.char(pos) == 96)\n pos++;\n let size = pos - start, curSize = 0;\n for (; pos < cx.end; pos++) {\n if (cx.char(pos) == 96) {\n curSize++;\n if (curSize == size && cx.char(pos + 1) != 96)\n return cx.append(elt(Type.InlineCode, start, pos + 1, [\n elt(Type.CodeMark, start, start + size),\n elt(Type.CodeMark, pos + 1 - size, pos + 1)\n ]));\n }\n else {\n curSize = 0;\n }\n }\n return -1;\n },\n HTMLTag(cx, next, start) {\n if (next != 60 /* '<' */ || start == cx.end - 1)\n return -1;\n let after = cx.slice(start + 1, cx.end);\n let url = /^(?:[a-z][-\\w+.]+:[^\\s>]+|[a-z\\d.!#$%&'*+/=?^_`{|}~-]+@[a-z\\d](?:[a-z\\d-]{0,61}[a-z\\d])?(?:\\.[a-z\\d](?:[a-z\\d-]{0,61}[a-z\\d])?)*)>/i.exec(after);\n if (url) {\n return cx.append(elt(Type.Autolink, start, start + 1 + url[0].length, [\n elt(Type.LinkMark, start, start + 1),\n // url[0] includes the closing bracket, so exclude it from this slice\n elt(Type.URL, start + 1, start + url[0].length),\n elt(Type.LinkMark, start + url[0].length, start + 1 + url[0].length)\n ]));\n }\n let comment = /^!--[^>](?:-[^-]|[^-])*?-->/i.exec(after);\n if (comment)\n return cx.append(elt(Type.Comment, start, start + 1 + comment[0].length));\n let procInst = /^\\?[^]*?\\?>/.exec(after);\n if (procInst)\n return cx.append(elt(Type.ProcessingInstruction, start, start + 1 + procInst[0].length));\n let m = /^(?:![A-Z][^]*?>|!\\[CDATA\\[[^]*?\\]\\]>|\\/\\s*[a-zA-Z][\\w-]*\\s*>|\\s*[a-zA-Z][\\w-]*(\\s+[a-zA-Z:_][\\w-.:]*(?:\\s*=\\s*(?:[^\\s\"'=<>`]+|'[^']*'|\"[^\"]*\"))?)*\\s*(\\/\\s*)?>)/.exec(after);\n if (!m)\n return -1;\n return cx.append(elt(Type.HTMLTag, start, start + 1 + m[0].length));\n },\n Emphasis(cx, next, start) {\n if (next != 95 && next != 42)\n return -1;\n let pos = start + 1;\n while (cx.char(pos) == next)\n pos++;\n let before = cx.slice(start - 1, start), after = cx.slice(pos, pos + 1);\n let pBefore = Punctuation.test(before), pAfter = Punctuation.test(after);\n let sBefore = /\\s|^$/.test(before), sAfter = /\\s|^$/.test(after);\n let leftFlanking = !sAfter && (!pAfter || sBefore || pBefore);\n let rightFlanking = !sBefore && (!pBefore || sAfter || pAfter);\n let canOpen = leftFlanking && (next == 42 || !rightFlanking || pBefore);\n let canClose = rightFlanking && (next == 42 || !leftFlanking || pAfter);\n return cx.append(new InlineDelimiter(next == 95 ? EmphasisUnderscore : EmphasisAsterisk, start, pos, (canOpen ? 1 /* Mark.Open */ : 0 /* Mark.None */) | (canClose ? 2 /* Mark.Close */ : 0 /* Mark.None */)));\n },\n HardBreak(cx, next, start) {\n if (next == 92 /* '\\\\' */ && cx.char(start + 1) == 10 /* '\\n' */)\n return cx.append(elt(Type.HardBreak, start, start + 2));\n if (next == 32) {\n let pos = start + 1;\n while (cx.char(pos) == 32)\n pos++;\n if (cx.char(pos) == 10 && pos >= start + 2)\n return cx.append(elt(Type.HardBreak, start, pos + 1));\n }\n return -1;\n },\n Link(cx, next, start) {\n return next == 91 /* '[' */ ? cx.append(new InlineDelimiter(LinkStart, start, start + 1, 1 /* Mark.Open */)) : -1;\n },\n Image(cx, next, start) {\n return next == 33 /* '!' */ && cx.char(start + 1) == 91 /* '[' */\n ? cx.append(new InlineDelimiter(ImageStart, start, start + 2, 1 /* Mark.Open */)) : -1;\n },\n LinkEnd(cx, next, start) {\n if (next != 93 /* ']' */)\n return -1;\n // Scanning back to the next link/image start marker\n for (let i = cx.parts.length - 1; i >= 0; i--) {\n let part = cx.parts[i];\n if (part instanceof InlineDelimiter && (part.type == LinkStart || part.type == ImageStart)) {\n // If this one has been set invalid (because it would produce\n // a nested link) or there's no valid link here ignore both.\n if (!part.side || cx.skipSpace(part.to) == start && !/[(\\[]/.test(cx.slice(start + 1, start + 2))) {\n cx.parts[i] = null;\n return -1;\n }\n // Finish the content and replace the entire range in\n // this.parts with the link/image node.\n let content = cx.takeContent(i);\n let link = cx.parts[i] = finishLink(cx, content, part.type == LinkStart ? Type.Link : Type.Image, part.from, start + 1);\n // Set any open-link markers before this link to invalid.\n if (part.type == LinkStart)\n for (let j = 0; j < i; j++) {\n let p = cx.parts[j];\n if (p instanceof InlineDelimiter && p.type == LinkStart)\n p.side = 0 /* Mark.None */;\n }\n return link.to;\n }\n }\n return -1;\n }\n};\nfunction finishLink(cx, content, type, start, startPos) {\n let { text } = cx, next = cx.char(startPos), endPos = startPos;\n content.unshift(elt(Type.LinkMark, start, start + (type == Type.Image ? 2 : 1)));\n content.push(elt(Type.LinkMark, startPos - 1, startPos));\n if (next == 40 /* '(' */) {\n let pos = cx.skipSpace(startPos + 1);\n let dest = parseURL(text, pos - cx.offset, cx.offset), title;\n if (dest) {\n pos = cx.skipSpace(dest.to);\n // The destination and title must be separated by whitespace\n if (pos != dest.to) {\n title = parseLinkTitle(text, pos - cx.offset, cx.offset);\n if (title)\n pos = cx.skipSpace(title.to);\n }\n }\n if (cx.char(pos) == 41 /* ')' */) {\n content.push(elt(Type.LinkMark, startPos, startPos + 1));\n endPos = pos + 1;\n if (dest)\n content.push(dest);\n if (title)\n content.push(title);\n content.push(elt(Type.LinkMark, pos, endPos));\n }\n }\n else if (next == 91 /* '[' */) {\n let label = parseLinkLabel(text, startPos - cx.offset, cx.offset, false);\n if (label) {\n content.push(label);\n endPos = label.to;\n }\n }\n return elt(type, start, endPos, content);\n}\n// These return `null` when falling off the end of the input, `false`\n// when parsing fails otherwise (for use in the incremental link\n// reference parser).\nfunction parseURL(text, start, offset) {\n let next = text.charCodeAt(start);\n if (next == 60 /* '<' */) {\n for (let pos = start + 1; pos < text.length; pos++) {\n let ch = text.charCodeAt(pos);\n if (ch == 62 /* '>' */)\n return elt(Type.URL, start + offset, pos + 1 + offset);\n if (ch == 60 || ch == 10 /* '<\\n' */)\n return false;\n }\n return null;\n }\n else {\n let depth = 0, pos = start;\n for (let escaped = false; pos < text.length; pos++) {\n let ch = text.charCodeAt(pos);\n if (space(ch)) {\n break;\n }\n else if (escaped) {\n escaped = false;\n }\n else if (ch == 40 /* '(' */) {\n depth++;\n }\n else if (ch == 41 /* ')' */) {\n if (!depth)\n break;\n depth--;\n }\n else if (ch == 92 /* '\\\\' */) {\n escaped = true;\n }\n }\n return pos > start ? elt(Type.URL, start + offset, pos + offset) : pos == text.length ? null : false;\n }\n}\nfunction parseLinkTitle(text, start, offset) {\n let next = text.charCodeAt(start);\n if (next != 39 && next != 34 && next != 40 /* '\"\\'(' */)\n return false;\n let end = next == 40 ? 41 : next;\n for (let pos = start + 1, escaped = false; pos < text.length; pos++) {\n let ch = text.charCodeAt(pos);\n if (escaped)\n escaped = false;\n else if (ch == end)\n return elt(Type.LinkTitle, start + offset, pos + 1 + offset);\n else if (ch == 92 /* '\\\\' */)\n escaped = true;\n }\n return null;\n}\nfunction parseLinkLabel(text, start, offset, requireNonWS) {\n for (let escaped = false, pos = start + 1, end = Math.min(text.length, pos + 999); pos < end; pos++) {\n let ch = text.charCodeAt(pos);\n if (escaped)\n escaped = false;\n else if (ch == 93 /* ']' */)\n return requireNonWS ? false : elt(Type.LinkLabel, start + offset, pos + 1 + offset);\n else {\n if (requireNonWS && !space(ch))\n requireNonWS = false;\n if (ch == 91 /* '[' */)\n return false;\n else if (ch == 92 /* '\\\\' */)\n escaped = true;\n }\n }\n return null;\n}\n/**\nInline parsing functions get access to this context, and use it to\nread the content and emit syntax nodes.\n*/\nclass InlineContext {\n /**\n @internal\n */\n constructor(\n /**\n The parser that is being used.\n */\n parser, \n /**\n The text of this inline section.\n */\n text, \n /**\n The starting offset of the section in the document.\n */\n offset) {\n this.parser = parser;\n this.text = text;\n this.offset = offset;\n /**\n @internal\n */\n this.parts = [];\n }\n /**\n Get the character code at the given (document-relative)\n position.\n */\n char(pos) { return pos >= this.end ? -1 : this.text.charCodeAt(pos - this.offset); }\n /**\n The position of the end of this inline section.\n */\n get end() { return this.offset + this.text.length; }\n /**\n Get a substring of this inline section. Again uses\n document-relative positions.\n */\n slice(from, to) { return this.text.slice(from - this.offset, to - this.offset); }\n /**\n @internal\n */\n append(elt) {\n this.parts.push(elt);\n return elt.to;\n }\n /**\n Add a [delimiter](#DelimiterType) at this given position. `open`\n and `close` indicate whether this delimiter is opening, closing,\n or both. Returns the end of the delimiter, for convenient\n returning from [parse functions](#InlineParser.parse).\n */\n addDelimiter(type, from, to, open, close) {\n return this.append(new InlineDelimiter(type, from, to, (open ? 1 /* Mark.Open */ : 0 /* Mark.None */) | (close ? 2 /* Mark.Close */ : 0 /* Mark.None */)));\n }\n /**\n Returns true when there is an unmatched link or image opening\n token before the current position.\n */\n get hasOpenLink() {\n for (let i = this.parts.length - 1; i >= 0; i--) {\n let part = this.parts[i];\n if (part instanceof InlineDelimiter && (part.type == LinkStart || part.type == ImageStart))\n return true;\n }\n return false;\n }\n /**\n Add an inline element. Returns the end of the element.\n */\n addElement(elt) {\n return this.append(elt);\n }\n /**\n Resolve markers between this.parts.length and from, wrapping matched markers in the\n appropriate node and updating the content of this.parts. @internal\n */\n resolveMarkers(from) {\n // Scan forward, looking for closing tokens\n for (let i = from; i < this.parts.length; i++) {\n let close = this.parts[i];\n if (!(close instanceof InlineDelimiter && close.type.resolve && (close.side & 2 /* Mark.Close */)))\n continue;\n let emp = close.type == EmphasisUnderscore || close.type == EmphasisAsterisk;\n let closeSize = close.to - close.from;\n let open, j = i - 1;\n // Continue scanning for a matching opening token\n for (; j >= from; j--) {\n let part = this.parts[j];\n if (part instanceof InlineDelimiter && (part.side & 1 /* Mark.Open */) && part.type == close.type &&\n // Ignore emphasis delimiters where the character count doesn't match\n !(emp && ((close.side & 1 /* Mark.Open */) || (part.side & 2 /* Mark.Close */)) &&\n (part.to - part.from + closeSize) % 3 == 0 && ((part.to - part.from) % 3 || closeSize % 3))) {\n open = part;\n break;\n }\n }\n if (!open)\n continue;\n let type = close.type.resolve, content = [];\n let start = open.from, end = close.to;\n // Emphasis marker effect depends on the character count. Size consumed is minimum of the two\n // markers.\n if (emp) {\n let size = Math.min(2, open.to - open.from, closeSize);\n start = open.to - size;\n end = close.from + size;\n type = size == 1 ? \"Emphasis\" : \"StrongEmphasis\";\n }\n // Move the covered region into content, optionally adding marker nodes\n if (open.type.mark)\n content.push(this.elt(open.type.mark, start, open.to));\n for (let k = j + 1; k < i; k++) {\n if (this.parts[k] instanceof Element)\n content.push(this.parts[k]);\n this.parts[k] = null;\n }\n if (close.type.mark)\n content.push(this.elt(close.type.mark, close.from, end));\n let element = this.elt(type, start, end, content);\n // If there are leftover emphasis marker characters, shrink the close/open markers. Otherwise, clear them.\n this.parts[j] = emp && open.from != start ? new InlineDelimiter(open.type, open.from, start, open.side) : null;\n let keep = this.parts[i] = emp && close.to != end ? new InlineDelimiter(close.type, end, close.to, close.side) : null;\n // Insert the new element in this.parts\n if (keep)\n this.parts.splice(i, 0, element);\n else\n this.parts[i] = element;\n }\n // Collect the elements remaining in this.parts into an array.\n let result = [];\n for (let i = from; i < this.parts.length; i++) {\n let part = this.parts[i];\n if (part instanceof Element)\n result.push(part);\n }\n return result;\n }\n /**\n Find an opening delimiter of the given type. Returns `null` if\n no delimiter is found, or an index that can be passed to\n [`takeContent`](#InlineContext.takeContent) otherwise.\n */\n findOpeningDelimiter(type) {\n for (let i = this.parts.length - 1; i >= 0; i--) {\n let part = this.parts[i];\n if (part instanceof InlineDelimiter && part.type == type && (part.side & 1 /* Mark.Open */))\n return i;\n }\n return null;\n }\n /**\n Remove all inline elements and delimiters starting from the\n given index (which you should get from\n [`findOpeningDelimiter`](#InlineContext.findOpeningDelimiter),\n resolve delimiters inside of them, and return them as an array\n of elements.\n */\n takeContent(startIndex) {\n let content = this.resolveMarkers(startIndex);\n this.parts.length = startIndex;\n return content;\n }\n /**\n Return the delimiter at the given index. Mostly useful to get\n additional info out of a delimiter index returned by\n [`findOpeningDelimiter`](#InlineContext.findOpeningDelimiter).\n Returns null if there is no delimiter at this index.\n */\n getDelimiterAt(index) {\n let part = this.parts[index];\n return part instanceof InlineDelimiter ? part : null;\n }\n /**\n Skip space after the given (document) position, returning either\n the position of the next non-space character or the end of the\n section.\n */\n skipSpace(from) { return skipSpace(this.text, from - this.offset) + this.offset; }\n elt(type, from, to, children) {\n if (typeof type == \"string\")\n return elt(this.parser.getNodeType(type), from, to, children);\n return new TreeElement(type, from);\n }\n}\n/**\nThe opening delimiter type used by the standard link parser.\n*/\nInlineContext.linkStart = LinkStart;\n/**\nOpening delimiter type used for standard images.\n*/\nInlineContext.imageStart = ImageStart;\nfunction injectMarks(elements, marks) {\n if (!marks.length)\n return elements;\n if (!elements.length)\n return marks;\n let elts = elements.slice(), eI = 0;\n for (let mark of marks) {\n while (eI < elts.length && elts[eI].to < mark.to)\n eI++;\n if (eI < elts.length && elts[eI].from < mark.from) {\n let e = elts[eI];\n if (e instanceof Element)\n elts[eI] = new Element(e.type, e.from, e.to, injectMarks(e.children, [mark]));\n }\n else {\n elts.splice(eI++, 0, mark);\n }\n }\n return elts;\n}\n// These are blocks that can span blank lines, and should thus only be\n// reused if their next sibling is also being reused.\nconst NotLast = [Type.CodeBlock, Type.ListItem, Type.OrderedList, Type.BulletList];\nclass FragmentCursor {\n constructor(fragments, input) {\n this.fragments = fragments;\n this.input = input;\n // Index into fragment array\n this.i = 0;\n // Active fragment\n this.fragment = null;\n this.fragmentEnd = -1;\n // Cursor into the current fragment, if any. When `moveTo` returns\n // true, this points at the first block after `pos`.\n this.cursor = null;\n if (fragments.length)\n this.fragment = fragments[this.i++];\n }\n nextFragment() {\n this.fragment = this.i < this.fragments.length ? this.fragments[this.i++] : null;\n this.cursor = null;\n this.fragmentEnd = -1;\n }\n moveTo(pos, lineStart) {\n while (this.fragment && this.fragment.to <= pos)\n this.nextFragment();\n if (!this.fragment || this.fragment.from > (pos ? pos - 1 : 0))\n return false;\n if (this.fragmentEnd < 0) {\n let end = this.fragment.to;\n while (end > 0 && this.input.read(end - 1, end) != \"\\n\")\n end--;\n this.fragmentEnd = end ? end - 1 : 0;\n }\n let c = this.cursor;\n if (!c) {\n c = this.cursor = this.fragment.tree.cursor();\n c.firstChild();\n }\n let rPos = pos + this.fragment.offset;\n while (c.to <= rPos)\n if (!c.parent())\n return false;\n for (;;) {\n if (c.from >= rPos)\n return this.fragment.from <= lineStart;\n if (!c.childAfter(rPos))\n return false;\n }\n }\n matches(hash) {\n let tree = this.cursor.tree;\n return tree && tree.prop(NodeProp.contextHash) == hash;\n }\n takeNodes(cx) {\n let cur = this.cursor, off = this.fragment.offset, fragEnd = this.fragmentEnd - (this.fragment.openEnd ? 1 : 0);\n let start = cx.absoluteLineStart, end = start, blockI = cx.block.children.length;\n let prevEnd = end, prevI = blockI;\n for (;;) {\n if (cur.to - off > fragEnd) {\n if (cur.type.isAnonymous && cur.firstChild())\n continue;\n break;\n }\n let pos = toRelative(cur.from - off, cx.ranges);\n if (cur.to - off <= cx.ranges[cx.rangeI].to) { // Fits in current range\n cx.addNode(cur.tree, pos);\n }\n else {\n let dummy = new Tree(cx.parser.nodeSet.types[Type.Paragraph], [], [], 0, cx.block.hashProp);\n cx.reusePlaceholders.set(dummy, cur.tree);\n cx.addNode(dummy, pos);\n }\n // Taken content must always end in a block, because incremental\n // parsing happens on block boundaries. Never stop directly\n // after an indented code block, since those can continue after\n // any number of blank lines.\n if (cur.type.is(\"Block\")) {\n if (NotLast.indexOf(cur.type.id) < 0) {\n end = cur.to - off;\n blockI = cx.block.children.length;\n }\n else {\n end = prevEnd;\n blockI = prevI;\n prevEnd = cur.to - off;\n prevI = cx.block.children.length;\n }\n }\n if (!cur.nextSibling())\n break;\n }\n while (cx.block.children.length > blockI) {\n cx.block.children.pop();\n cx.block.positions.pop();\n }\n return end - start;\n }\n}\n// Convert an input-stream-relative position to a\n// Markdown-doc-relative position by subtracting the size of all input\n// gaps before `abs`.\nfunction toRelative(abs, ranges) {\n let pos = abs;\n for (let i = 1; i < ranges.length; i++) {\n let gapFrom = ranges[i - 1].to, gapTo = ranges[i].from;\n if (gapFrom < abs)\n pos -= gapTo - gapFrom;\n }\n return pos;\n}\nconst markdownHighlighting = styleTags({\n \"Blockquote/...\": tags.quote,\n HorizontalRule: tags.contentSeparator,\n \"ATXHeading1/... SetextHeading1/...\": tags.heading1,\n \"ATXHeading2/... SetextHeading2/...\": tags.heading2,\n \"ATXHeading3/...\": tags.heading3,\n \"ATXHeading4/...\": tags.heading4,\n \"ATXHeading5/...\": tags.heading5,\n \"ATXHeading6/...\": tags.heading6,\n \"Comment CommentBlock\": tags.comment,\n Escape: tags.escape,\n Entity: tags.character,\n \"Emphasis/...\": tags.emphasis,\n \"StrongEmphasis/...\": tags.strong,\n \"Link/... Image/...\": tags.link,\n \"OrderedList/... BulletList/...\": tags.list,\n \"BlockQuote/...\": tags.quote,\n \"InlineCode CodeText\": tags.monospace,\n \"URL Autolink\": tags.url,\n \"HeaderMark HardBreak QuoteMark ListMark LinkMark EmphasisMark CodeMark\": tags.processingInstruction,\n \"CodeInfo LinkLabel\": tags.labelName,\n LinkTitle: tags.string,\n Paragraph: tags.content\n});\n/**\nThe default CommonMark parser.\n*/\nconst parser = new MarkdownParser(new NodeSet(nodeTypes).extend(markdownHighlighting), Object.keys(DefaultBlockParsers).map(n => DefaultBlockParsers[n]), Object.keys(DefaultBlockParsers).map(n => DefaultLeafBlocks[n]), Object.keys(DefaultBlockParsers), DefaultEndLeaf, DefaultSkipMarkup, Object.keys(DefaultInline).map(n => DefaultInline[n]), Object.keys(DefaultInline), []);\n\nfunction leftOverSpace(node, from, to) {\n let ranges = [];\n for (let n = node.firstChild, pos = from;; n = n.nextSibling) {\n let nextPos = n ? n.from : to;\n if (nextPos > pos)\n ranges.push({ from: pos, to: nextPos });\n if (!n)\n break;\n pos = n.to;\n }\n return ranges;\n}\n/**\nCreate a Markdown extension to enable nested parsing on code\nblocks and/or embedded HTML.\n*/\nfunction parseCode(config) {\n let { codeParser, htmlParser } = config;\n let wrap = parseMixed((node, input) => {\n let id = node.type.id;\n if (codeParser && (id == Type.CodeBlock || id == Type.FencedCode)) {\n let info = \"\";\n if (id == Type.FencedCode) {\n let infoNode = node.node.getChild(Type.CodeInfo);\n if (infoNode)\n info = input.read(infoNode.from, infoNode.to);\n }\n let parser = codeParser(info);\n if (parser)\n return { parser, overlay: node => node.type.id == Type.CodeText };\n }\n else if (htmlParser && (id == Type.HTMLBlock || id == Type.HTMLTag || id == Type.CommentBlock)) {\n return { parser: htmlParser, overlay: leftOverSpace(node.node, node.from, node.to) };\n }\n return null;\n });\n return { wrap };\n}\n\nconst StrikethroughDelim = { resolve: \"Strikethrough\", mark: \"StrikethroughMark\" };\n/**\nAn extension that implements\n[GFM-style](https://github.github.com/gfm/#strikethrough-extension-)\nStrikethrough syntax using `~~` delimiters.\n*/\nconst Strikethrough = {\n defineNodes: [{\n name: \"Strikethrough\",\n style: { \"Strikethrough/...\": tags.strikethrough }\n }, {\n name: \"StrikethroughMark\",\n style: tags.processingInstruction\n }],\n parseInline: [{\n name: \"Strikethrough\",\n parse(cx, next, pos) {\n if (next != 126 /* '~' */ || cx.char(pos + 1) != 126 || cx.char(pos + 2) == 126)\n return -1;\n let before = cx.slice(pos - 1, pos), after = cx.slice(pos + 2, pos + 3);\n let sBefore = /\\s|^$/.test(before), sAfter = /\\s|^$/.test(after);\n let pBefore = Punctuation.test(before), pAfter = Punctuation.test(after);\n return cx.addDelimiter(StrikethroughDelim, pos, pos + 2, !sAfter && (!pAfter || sBefore || pBefore), !sBefore && (!pBefore || sAfter || pAfter));\n },\n after: \"Emphasis\"\n }]\n};\n// Parse a line as a table row and return the row count. When `elts`\n// is given, push syntax elements for the content onto it.\nfunction parseRow(cx, line, startI = 0, elts, offset = 0) {\n let count = 0, first = true, cellStart = -1, cellEnd = -1, esc = false;\n let parseCell = () => {\n elts.push(cx.elt(\"TableCell\", offset + cellStart, offset + cellEnd, cx.parser.parseInline(line.slice(cellStart, cellEnd), offset + cellStart)));\n };\n for (let i = startI; i < line.length; i++) {\n let next = line.charCodeAt(i);\n if (next == 124 /* '|' */ && !esc) {\n if (!first || cellStart > -1)\n count++;\n first = false;\n if (elts) {\n if (cellStart > -1)\n parseCell();\n elts.push(cx.elt(\"TableDelimiter\", i + offset, i + offset + 1));\n }\n cellStart = cellEnd = -1;\n }\n else if (esc || next != 32 && next != 9) {\n if (cellStart < 0)\n cellStart = i;\n cellEnd = i + 1;\n }\n esc = !esc && next == 92;\n }\n if (cellStart > -1) {\n count++;\n if (elts)\n parseCell();\n }\n return count;\n}\nfunction hasPipe(str, start) {\n for (let i = start; i < str.length; i++) {\n let next = str.charCodeAt(i);\n if (next == 124 /* '|' */)\n return true;\n if (next == 92 /* '\\\\' */)\n i++;\n }\n return false;\n}\nconst delimiterLine = /^\\|?(\\s*:?-+:?\\s*\\|)+(\\s*:?-+:?\\s*)?$/;\nclass TableParser {\n constructor() {\n // Null means we haven't seen the second line yet, false means this\n // isn't a table, and an array means this is a table and we've\n // parsed the given rows so far.\n this.rows = null;\n }\n nextLine(cx, line, leaf) {\n if (this.rows == null) { // Second line\n this.rows = false;\n let lineText;\n if ((line.next == 45 || line.next == 58 || line.next == 124 /* '-:|' */) &&\n delimiterLine.test(lineText = line.text.slice(line.pos))) {\n let firstRow = [], firstCount = parseRow(cx, leaf.content, 0, firstRow, leaf.start);\n if (firstCount == parseRow(cx, lineText, line.pos))\n this.rows = [cx.elt(\"TableHeader\", leaf.start, leaf.start + leaf.content.length, firstRow),\n cx.elt(\"TableDelimiter\", cx.lineStart + line.pos, cx.lineStart + line.text.length)];\n }\n }\n else if (this.rows) { // Line after the second\n let content = [];\n parseRow(cx, line.text, line.pos, content, cx.lineStart);\n this.rows.push(cx.elt(\"TableRow\", cx.lineStart + line.pos, cx.lineStart + line.text.length, content));\n }\n return false;\n }\n finish(cx, leaf) {\n if (!this.rows)\n return false;\n cx.addLeafElement(leaf, cx.elt(\"Table\", leaf.start, leaf.start + leaf.content.length, this.rows));\n return true;\n }\n}\n/**\nThis extension provides\n[GFM-style](https://github.github.com/gfm/#tables-extension-)\ntables, using syntax like this:\n\n```\n| head 1 | head 2 |\n| --- | --- |\n| cell 1 | cell 2 |\n```\n*/\nconst Table = {\n defineNodes: [\n { name: \"Table\", block: true },\n { name: \"TableHeader\", style: { \"TableHeader/...\": tags.heading } },\n \"TableRow\",\n { name: \"TableCell\", style: tags.content },\n { name: \"TableDelimiter\", style: tags.processingInstruction },\n ],\n parseBlock: [{\n name: \"Table\",\n leaf(_, leaf) { return hasPipe(leaf.content, 0) ? new TableParser : null; },\n endLeaf(cx, line, leaf) {\n if (leaf.parsers.some(p => p instanceof TableParser) || !hasPipe(line.text, line.basePos))\n return false;\n let next = cx.peekLine();\n return delimiterLine.test(next) && parseRow(cx, line.text, line.basePos) == parseRow(cx, next, line.basePos);\n },\n before: \"SetextHeading\"\n }]\n};\nclass TaskParser {\n nextLine() { return false; }\n finish(cx, leaf) {\n cx.addLeafElement(leaf, cx.elt(\"Task\", leaf.start, leaf.start + leaf.content.length, [\n cx.elt(\"TaskMarker\", leaf.start, leaf.start + 3),\n ...cx.parser.parseInline(leaf.content.slice(3), leaf.start + 3)\n ]));\n return true;\n }\n}\n/**\nExtension providing\n[GFM-style](https://github.github.com/gfm/#task-list-items-extension-)\ntask list items, where list items can be prefixed with `[ ]` or\n`[x]` to add a checkbox.\n*/\nconst TaskList = {\n defineNodes: [\n { name: \"Task\", block: true, style: tags.list },\n { name: \"TaskMarker\", style: tags.atom }\n ],\n parseBlock: [{\n name: \"TaskList\",\n leaf(cx, leaf) {\n return /^\\[[ xX]\\][ \\t]/.test(leaf.content) && cx.parentType().name == \"ListItem\" ? new TaskParser : null;\n },\n after: \"SetextHeading\"\n }]\n};\nconst autolinkRE = /(www\\.)|(https?:\\/\\/)|([\\w.+-]{1,100}@)|(mailto:|xmpp:)/gy;\nconst urlRE = /[\\w-]+(\\.[\\w-]+)+(\\/[^\\s<]*)?/gy;\nconst lastTwoDomainWords = /[\\w-]+\\.[\\w-]+($|\\/)/;\nconst emailRE = /[\\w.+-]+@[\\w-]+(\\.[\\w.-]+)+/gy;\nconst xmppResourceRE = /\\/[a-zA-Z\\d@.]+/gy;\nfunction count(str, from, to, ch) {\n let result = 0;\n for (let i = from; i < to; i++)\n if (str[i] == ch)\n result++;\n return result;\n}\nfunction autolinkURLEnd(text, from) {\n urlRE.lastIndex = from;\n let m = urlRE.exec(text);\n if (!m || lastTwoDomainWords.exec(m[0])[0].indexOf(\"_\") > -1)\n return -1;\n let end = from + m[0].length;\n for (;;) {\n let last = text[end - 1], m;\n if (/[?!.,:*_~]/.test(last) ||\n last == \")\" && count(text, from, end, \")\") > count(text, from, end, \"(\"))\n end--;\n else if (last == \";\" && (m = /&(?:#\\d+|#x[a-f\\d]+|\\w+);$/.exec(text.slice(from, end))))\n end = from + m.index;\n else\n break;\n }\n return end;\n}\nfunction autolinkEmailEnd(text, from) {\n emailRE.lastIndex = from;\n let m = emailRE.exec(text);\n if (!m)\n return -1;\n let last = m[0][m[0].length - 1];\n return last == \"_\" || last == \"-\" ? -1 : from + m[0].length - (last == \".\" ? 1 : 0);\n}\n/**\nExtension that implements autolinking for\n`www.`/`http://`/`https://`/`mailto:`/`xmpp:` URLs and email\naddresses.\n*/\nconst Autolink = {\n parseInline: [{\n name: \"Autolink\",\n parse(cx, next, absPos) {\n let pos = absPos - cx.offset;\n if (pos && /\\w/.test(cx.text[pos - 1]))\n return -1;\n autolinkRE.lastIndex = pos;\n let m = autolinkRE.exec(cx.text), end = -1;\n if (!m)\n return -1;\n if (m[1] || m[2]) { // www., http://\n end = autolinkURLEnd(cx.text, pos + m[0].length);\n if (end > -1 && cx.hasOpenLink) {\n let noBracket = /([^\\[\\]]|\\[[^\\]]*\\])*/.exec(cx.text.slice(pos, end));\n end = pos + noBracket[0].length;\n }\n }\n else if (m[3]) { // email address\n end = autolinkEmailEnd(cx.text, pos);\n }\n else { // mailto:/xmpp:\n end = autolinkEmailEnd(cx.text, pos + m[0].length);\n if (end > -1 && m[0] == \"xmpp:\") {\n xmppResourceRE.lastIndex = end;\n m = xmppResourceRE.exec(cx.text);\n if (m)\n end = m.index + m[0].length;\n }\n }\n if (end < 0)\n return -1;\n cx.addElement(cx.elt(\"URL\", absPos, end + cx.offset));\n return end + cx.offset;\n }\n }]\n};\n/**\nExtension bundle containing [`Table`](#Table),\n[`TaskList`](#TaskList), [`Strikethrough`](#Strikethrough), and\n[`Autolink`](#Autolink).\n*/\nconst GFM = [Table, TaskList, Strikethrough, Autolink];\nfunction parseSubSuper(ch, node, mark) {\n return (cx, next, pos) => {\n if (next != ch || cx.char(pos + 1) == ch)\n return -1;\n let elts = [cx.elt(mark, pos, pos + 1)];\n for (let i = pos + 1; i < cx.end; i++) {\n let next = cx.char(i);\n if (next == ch)\n return cx.addElement(cx.elt(node, pos, i + 1, elts.concat(cx.elt(mark, i, i + 1))));\n if (next == 92 /* '\\\\' */)\n elts.push(cx.elt(\"Escape\", i, i++ + 2));\n if (space(next))\n break;\n }\n return -1;\n };\n}\n/**\nExtension providing\n[Pandoc-style](https://pandoc.org/MANUAL.html#superscripts-and-subscripts)\nsuperscript using `^` markers.\n*/\nconst Superscript = {\n defineNodes: [\n { name: \"Superscript\", style: tags.special(tags.content) },\n { name: \"SuperscriptMark\", style: tags.processingInstruction }\n ],\n parseInline: [{\n name: \"Superscript\",\n parse: parseSubSuper(94 /* '^' */, \"Superscript\", \"SuperscriptMark\")\n }]\n};\n/**\nExtension providing\n[Pandoc-style](https://pandoc.org/MANUAL.html#superscripts-and-subscripts)\nsubscript using `~` markers.\n*/\nconst Subscript = {\n defineNodes: [\n { name: \"Subscript\", style: tags.special(tags.content) },\n { name: \"SubscriptMark\", style: tags.processingInstruction }\n ],\n parseInline: [{\n name: \"Subscript\",\n parse: parseSubSuper(126 /* '~' */, \"Subscript\", \"SubscriptMark\")\n }]\n};\n/**\nExtension that parses two colons with only letters, underscores,\nand numbers between them as `Emoji` nodes.\n*/\nconst Emoji = {\n defineNodes: [{ name: \"Emoji\", style: tags.character }],\n parseInline: [{\n name: \"Emoji\",\n parse(cx, next, pos) {\n let match;\n if (next != 58 /* ':' */ || !(match = /^[a-zA-Z_0-9]+:/.exec(cx.slice(pos + 1, cx.end))))\n return -1;\n return cx.addElement(cx.elt(\"Emoji\", pos, pos + 1 + match[0].length));\n }\n }]\n};\n\nexport { Autolink, BlockContext, Element, Emoji, GFM, InlineContext, LeafBlock, Line, MarkdownParser, Strikethrough, Subscript, Superscript, Table, TaskList, parseCode, parser };\n","import { EditorSelection, countColumn, Prec, EditorState } from '@codemirror/state';\nimport { EditorView, keymap } from '@codemirror/view';\nimport { defineLanguageFacet, foldNodeProp, indentNodeProp, languageDataProp, foldService, syntaxTree, Language, LanguageDescription, ParseContext, indentUnit, LanguageSupport } from '@codemirror/language';\nimport { CompletionContext } from '@codemirror/autocomplete';\nimport { parser, GFM, Subscript, Superscript, Emoji, MarkdownParser, parseCode } from '@lezer/markdown';\nimport { html, htmlCompletionSource } from '@codemirror/lang-html';\nimport { NodeProp } from '@lezer/common';\n\nconst data = /*@__PURE__*/defineLanguageFacet({ commentTokens: { block: { open: \"<!--\", close: \"-->\" } } });\nconst headingProp = /*@__PURE__*/new NodeProp();\nconst commonmark = /*@__PURE__*/parser.configure({\n props: [\n /*@__PURE__*/foldNodeProp.add(type => {\n return !type.is(\"Block\") || type.is(\"Document\") || isHeading(type) != null || isList(type) ? undefined\n : (tree, state) => ({ from: state.doc.lineAt(tree.from).to, to: tree.to });\n }),\n /*@__PURE__*/headingProp.add(isHeading),\n /*@__PURE__*/indentNodeProp.add({\n Document: () => null\n }),\n /*@__PURE__*/languageDataProp.add({\n Document: data\n })\n ]\n});\nfunction isHeading(type) {\n let match = /^(?:ATX|Setext)Heading(\\d)$/.exec(type.name);\n return match ? +match[1] : undefined;\n}\nfunction isList(type) {\n return type.name == \"OrderedList\" || type.name == \"BulletList\";\n}\nfunction findSectionEnd(headerNode, level) {\n let last = headerNode;\n for (;;) {\n let next = last.nextSibling, heading;\n if (!next || (heading = isHeading(next.type)) != null && heading <= level)\n break;\n last = next;\n }\n return last.to;\n}\nconst headerIndent = /*@__PURE__*/foldService.of((state, start, end) => {\n for (let node = syntaxTree(state).resolveInner(end, -1); node; node = node.parent) {\n if (node.from < start)\n break;\n let heading = node.type.prop(headingProp);\n if (heading == null)\n continue;\n let upto = findSectionEnd(node, heading);\n if (upto > end)\n return { from: end, to: upto };\n }\n return null;\n});\nfunction mkLang(parser) {\n return new Language(data, parser, [], \"markdown\");\n}\n/**\nLanguage support for strict CommonMark.\n*/\nconst commonmarkLanguage = /*@__PURE__*/mkLang(commonmark);\nconst extended = /*@__PURE__*/commonmark.configure([GFM, Subscript, Superscript, Emoji, {\n props: [\n /*@__PURE__*/foldNodeProp.add({\n Table: (tree, state) => ({ from: state.doc.lineAt(tree.from).to, to: tree.to })\n })\n ]\n }]);\n/**\nLanguage support for [GFM](https://github.github.com/gfm/) plus\nsubscript, superscript, and emoji syntax.\n*/\nconst markdownLanguage = /*@__PURE__*/mkLang(extended);\nfunction getCodeParser(languages, defaultLanguage) {\n return (info) => {\n if (info && languages) {\n let found = null;\n // Strip anything after whitespace\n info = /\\S*/.exec(info)[0];\n if (typeof languages == \"function\")\n found = languages(info);\n else\n found = LanguageDescription.matchLanguageName(languages, info, true);\n if (found instanceof LanguageDescription)\n return found.support ? found.support.language.parser : ParseContext.getSkippingParser(found.load());\n else if (found)\n return found.parser;\n }\n return defaultLanguage ? defaultLanguage.parser : null;\n };\n}\n\nclass Context {\n constructor(node, from, to, spaceBefore, spaceAfter, type, item) {\n this.node = node;\n this.from = from;\n this.to = to;\n this.spaceBefore = spaceBefore;\n this.spaceAfter = spaceAfter;\n this.type = type;\n this.item = item;\n }\n blank(maxWidth, trailing = true) {\n let result = this.spaceBefore + (this.node.name == \"Blockquote\" ? \">\" : \"\");\n if (maxWidth != null) {\n while (result.length < maxWidth)\n result += \" \";\n return result;\n }\n else {\n for (let i = this.to - this.from - result.length - this.spaceAfter.length; i > 0; i--)\n result += \" \";\n return result + (trailing ? this.spaceAfter : \"\");\n }\n }\n marker(doc, add) {\n let number = this.node.name == \"OrderedList\" ? String((+itemNumber(this.item, doc)[2] + add)) : \"\";\n return this.spaceBefore + number + this.type + this.spaceAfter;\n }\n}\nfunction getContext(node, doc) {\n let nodes = [], context = [];\n for (let cur = node; cur; cur = cur.parent) {\n if (cur.name == \"FencedCode\")\n return context;\n if (cur.name == \"ListItem\" || cur.name == \"Blockquote\")\n nodes.push(cur);\n }\n for (let i = nodes.length - 1; i >= 0; i--) {\n let node = nodes[i], match;\n let line = doc.lineAt(node.from), startPos = node.from - line.from;\n if (node.name == \"Blockquote\" && (match = /^ *>( ?)/.exec(line.text.slice(startPos)))) {\n context.push(new Context(node, startPos, startPos + match[0].length, \"\", match[1], \">\", null));\n }\n else if (node.name == \"ListItem\" && node.parent.name == \"OrderedList\" &&\n (match = /^( *)\\d+([.)])( *)/.exec(line.text.slice(startPos)))) {\n let after = match[3], len = match[0].length;\n if (after.length >= 4) {\n after = after.slice(0, after.length - 4);\n len -= 4;\n }\n context.push(new Context(node.parent, startPos, startPos + len, match[1], after, match[2], node));\n }\n else if (node.name == \"ListItem\" && node.parent.name == \"BulletList\" &&\n (match = /^( *)([-+*])( {1,4}\\[[ xX]\\])?( +)/.exec(line.text.slice(startPos)))) {\n let after = match[4], len = match[0].length;\n if (after.length > 4) {\n after = after.slice(0, after.length - 4);\n len -= 4;\n }\n let type = match[2];\n if (match[3])\n type += match[3].replace(/[xX]/, ' ');\n context.push(new Context(node.parent, startPos, startPos + len, match[1], after, type, node));\n }\n }\n return context;\n}\nfunction itemNumber(item, doc) {\n return /^(\\s*)(\\d+)(?=[.)])/.exec(doc.sliceString(item.from, item.from + 10));\n}\nfunction renumberList(after, doc, changes, offset = 0) {\n for (let prev = -1, node = after;;) {\n if (node.name == \"ListItem\") {\n let m = itemNumber(node, doc);\n let number = +m[2];\n if (prev >= 0) {\n if (number != prev + 1)\n return;\n changes.push({ from: node.from + m[1].length, to: node.from + m[0].length, insert: String(prev + 2 + offset) });\n }\n prev = number;\n }\n let next = node.nextSibling;\n if (!next)\n break;\n node = next;\n }\n}\nfunction normalizeIndent(content, state) {\n let blank = /^[ \\t]*/.exec(content)[0].length;\n if (!blank || state.facet(indentUnit) != \"\\t\")\n return content;\n let col = countColumn(content, 4, blank);\n let space = \"\";\n for (let i = col; i > 0;) {\n if (i >= 4) {\n space += \"\\t\";\n i -= 4;\n }\n else {\n space += \" \";\n i--;\n }\n }\n return space + content.slice(blank);\n}\n/**\nReturns a command like\n[`insertNewlineContinueMarkup`](https://codemirror.net/6/docs/ref/#lang-markdown.insertNewlineContinueMarkup),\nallowing further configuration.\n*/\nconst insertNewlineContinueMarkupCommand = (config = {}) => ({ state, dispatch }) => {\n let tree = syntaxTree(state), { doc } = state;\n let dont = null, changes = state.changeByRange(range => {\n if (!range.empty || !markdownLanguage.isActiveAt(state, range.from, -1) && !markdownLanguage.isActiveAt(state, range.from, 1))\n return dont = { range };\n let pos = range.from, line = doc.lineAt(pos);\n let context = getContext(tree.resolveInner(pos, -1), doc);\n while (context.length && context[context.length - 1].from > pos - line.from)\n context.pop();\n if (!context.length)\n return dont = { range };\n let inner = context[context.length - 1];\n if (inner.to - inner.spaceAfter.length > pos - line.from)\n return dont = { range };\n let emptyLine = pos >= (inner.to - inner.spaceAfter.length) && !/\\S/.test(line.text.slice(inner.to));\n // Empty line in list\n if (inner.item && emptyLine) {\n let first = inner.node.firstChild, second = inner.node.getChild(\"ListItem\", \"ListItem\");\n // Not second item or blank line before: delete a level of markup\n if (first.to >= pos || second && second.to < pos ||\n line.from > 0 && !/[^\\s>]/.test(doc.lineAt(line.from - 1).text) ||\n config.nonTightLists === false) {\n let next = context.length > 1 ? context[context.length - 2] : null;\n let delTo, insert = \"\";\n if (next && next.item) { // Re-add marker for the list at the next level\n delTo = line.from + next.from;\n insert = next.marker(doc, 1);\n }\n else {\n delTo = line.from + (next ? next.to : 0);\n }\n let changes = [{ from: delTo, to: pos, insert }];\n if (inner.node.name == \"OrderedList\")\n renumberList(inner.item, doc, changes, -2);\n if (next && next.node.name == \"OrderedList\")\n renumberList(next.item, doc, changes);\n return { range: EditorSelection.cursor(delTo + insert.length), changes };\n }\n else { // Move second item down, making tight two-item list non-tight\n let insert = blankLine(context, state, line);\n return { range: EditorSelection.cursor(pos + insert.length + 1),\n changes: { from: line.from, insert: insert + state.lineBreak } };\n }\n }\n if (inner.node.name == \"Blockquote\" && emptyLine && line.from) {\n let prevLine = doc.lineAt(line.from - 1), quoted = />\\s*$/.exec(prevLine.text);\n // Two aligned empty quoted lines in a row\n if (quoted && quoted.index == inner.from) {\n let changes = state.changes([{ from: prevLine.from + quoted.index, to: prevLine.to },\n { from: line.from + inner.from, to: line.to }]);\n return { range: range.map(changes), changes };\n }\n }\n let changes = [];\n if (inner.node.name == \"OrderedList\")\n renumberList(inner.item, doc, changes);\n let continued = inner.item && inner.item.from < line.from;\n let insert = \"\";\n // If not dedented\n if (!continued || /^[\\s\\d.)\\-+*>]*/.exec(line.text)[0].length >= inner.to) {\n for (let i = 0, e = context.length - 1; i <= e; i++) {\n insert += i == e && !continued ? context[i].marker(doc, 1)\n : context[i].blank(i < e ? countColumn(line.text, 4, context[i + 1].from) - insert.length : null);\n }\n }\n let from = pos;\n while (from > line.from && /\\s/.test(line.text.charAt(from - line.from - 1)))\n from--;\n insert = normalizeIndent(insert, state);\n if (nonTightList(inner.node, state.doc))\n insert = blankLine(context, state, line) + state.lineBreak + insert;\n changes.push({ from, to: pos, insert: state.lineBreak + insert });\n return { range: EditorSelection.cursor(from + insert.length + 1), changes };\n });\n if (dont)\n return false;\n dispatch(state.update(changes, { scrollIntoView: true, userEvent: \"input\" }));\n return true;\n};\n/**\nThis command, when invoked in Markdown context with cursor\nselection(s), will create a new line with the markup for\nblockquotes and lists that were active on the old line. If the\ncursor was directly after the end of the markup for the old line,\ntrailing whitespace and list markers are removed from that line.\n\nThe command does nothing in non-Markdown context, so it should\nnot be used as the only binding for Enter (even in a Markdown\ndocument, HTML and code regions might use a different language).\n*/\nconst insertNewlineContinueMarkup = /*@__PURE__*/insertNewlineContinueMarkupCommand();\nfunction isMark(node) {\n return node.name == \"QuoteMark\" || node.name == \"ListMark\";\n}\nfunction nonTightList(node, doc) {\n if (node.name != \"OrderedList\" && node.name != \"BulletList\")\n return false;\n let first = node.firstChild, second = node.getChild(\"ListItem\", \"ListItem\");\n if (!second)\n return false;\n let line1 = doc.lineAt(first.to), line2 = doc.lineAt(second.from);\n let empty = /^[\\s>]*$/.test(line1.text);\n return line1.number + (empty ? 0 : 1) < line2.number;\n}\nfunction blankLine(context, state, line) {\n let insert = \"\";\n for (let i = 0, e = context.length - 2; i <= e; i++) {\n insert += context[i].blank(i < e\n ? countColumn(line.text, 4, context[i + 1].from) - insert.length\n : null, i < e);\n }\n return normalizeIndent(insert, state);\n}\nfunction contextNodeForDelete(tree, pos) {\n let node = tree.resolveInner(pos, -1), scan = pos;\n if (isMark(node)) {\n scan = node.from;\n node = node.parent;\n }\n for (let prev; prev = node.childBefore(scan);) {\n if (isMark(prev)) {\n scan = prev.from;\n }\n else if (prev.name == \"OrderedList\" || prev.name == \"BulletList\") {\n node = prev.lastChild;\n scan = node.to;\n }\n else {\n break;\n }\n }\n return node;\n}\n/**\nThis command will, when invoked in a Markdown context with the\ncursor directly after list or blockquote markup, delete one level\nof markup. When the markup is for a list, it will be replaced by\nspaces on the first invocation (a further invocation will delete\nthe spaces), to make it easy to continue a list.\n\nWhen not after Markdown block markup, this command will return\nfalse, so it is intended to be bound alongside other deletion\ncommands, with a higher precedence than the more generic commands.\n*/\nconst deleteMarkupBackward = ({ state, dispatch }) => {\n let tree = syntaxTree(state);\n let dont = null, changes = state.changeByRange(range => {\n let pos = range.from, { doc } = state;\n if (range.empty && markdownLanguage.isActiveAt(state, range.from)) {\n let line = doc.lineAt(pos);\n let context = getContext(contextNodeForDelete(tree, pos), doc);\n if (context.length) {\n let inner = context[context.length - 1];\n let spaceEnd = inner.to - inner.spaceAfter.length + (inner.spaceAfter ? 1 : 0);\n // Delete extra trailing space after markup\n if (pos - line.from > spaceEnd && !/\\S/.test(line.text.slice(spaceEnd, pos - line.from)))\n return { range: EditorSelection.cursor(line.from + spaceEnd),\n changes: { from: line.from + spaceEnd, to: pos } };\n if (pos - line.from == spaceEnd &&\n // Only apply this if we're on the line that has the\n // construct's syntax, or there's only indentation in the\n // target range\n (!inner.item || line.from <= inner.item.from || !/\\S/.test(line.text.slice(0, inner.to)))) {\n let start = line.from + inner.from;\n // Replace a list item marker with blank space\n if (inner.item && inner.node.from < inner.item.from && /\\S/.test(line.text.slice(inner.from, inner.to))) {\n let insert = inner.blank(countColumn(line.text, 4, inner.to) - countColumn(line.text, 4, inner.from));\n if (start == line.from)\n insert = normalizeIndent(insert, state);\n return { range: EditorSelection.cursor(start + insert.length),\n changes: { from: start, to: line.from + inner.to, insert } };\n }\n // Delete one level of indentation\n if (start < pos)\n return { range: EditorSelection.cursor(start), changes: { from: start, to: pos } };\n }\n }\n }\n return dont = { range };\n });\n if (dont)\n return false;\n dispatch(state.update(changes, { scrollIntoView: true, userEvent: \"delete\" }));\n return true;\n};\n\n/**\nA small keymap with Markdown-specific bindings. Binds Enter to\n[`insertNewlineContinueMarkup`](https://codemirror.net/6/docs/ref/#lang-markdown.insertNewlineContinueMarkup)\nand Backspace to\n[`deleteMarkupBackward`](https://codemirror.net/6/docs/ref/#lang-markdown.deleteMarkupBackward).\n*/\nconst markdownKeymap = [\n { key: \"Enter\", run: insertNewlineContinueMarkup },\n { key: \"Backspace\", run: deleteMarkupBackward }\n];\nconst htmlNoMatch = /*@__PURE__*/html({ matchClosingTags: false });\n/**\nMarkdown language support.\n*/\nfunction markdown(config = {}) {\n let { codeLanguages, defaultCodeLanguage, addKeymap = true, base: { parser } = commonmarkLanguage, completeHTMLTags = true, pasteURLAsLink: pasteURL = true, htmlTagLanguage = htmlNoMatch } = config;\n if (!(parser instanceof MarkdownParser))\n throw new RangeError(\"Base parser provided to `markdown` should be a Markdown parser\");\n let extensions = config.extensions ? [config.extensions] : [];\n let support = [htmlTagLanguage.support, headerIndent], defaultCode;\n if (pasteURL)\n support.push(pasteURLAsLink);\n if (defaultCodeLanguage instanceof LanguageSupport) {\n support.push(defaultCodeLanguage.support);\n defaultCode = defaultCodeLanguage.language;\n }\n else if (defaultCodeLanguage) {\n defaultCode = defaultCodeLanguage;\n }\n let codeParser = codeLanguages || defaultCode ? getCodeParser(codeLanguages, defaultCode) : undefined;\n extensions.push(parseCode({ codeParser, htmlParser: htmlTagLanguage.language.parser }));\n if (addKeymap)\n support.push(Prec.high(keymap.of(markdownKeymap)));\n let lang = mkLang(parser.configure(extensions));\n if (completeHTMLTags)\n support.push(lang.data.of({ autocomplete: htmlTagCompletion }));\n return new LanguageSupport(lang, support);\n}\nfunction htmlTagCompletion(context) {\n let { state, pos } = context, m = /<[:\\-\\.\\w\\u00b7-\\uffff]*$/.exec(state.sliceDoc(pos - 25, pos));\n if (!m)\n return null;\n let tree = syntaxTree(state).resolveInner(pos, -1);\n while (tree && !tree.type.isTop) {\n if (tree.name == \"CodeBlock\" || tree.name == \"FencedCode\" || tree.name == \"ProcessingInstructionBlock\" ||\n tree.name == \"CommentBlock\" || tree.name == \"Link\" || tree.name == \"Image\")\n return null;\n tree = tree.parent;\n }\n return {\n from: pos - m[0].length, to: pos,\n options: htmlTagCompletions(),\n validFor: /^<[:\\-\\.\\w\\u00b7-\\uffff]*$/\n };\n}\nlet _tagCompletions = null;\nfunction htmlTagCompletions() {\n if (_tagCompletions)\n return _tagCompletions;\n let result = htmlCompletionSource(new CompletionContext(EditorState.create({ extensions: htmlNoMatch }), 0, true));\n return _tagCompletions = result ? result.options : [];\n}\nconst nonPlainText = /code|horizontalrule|html|link|comment|processing|escape|entity|image|mark|url/i;\n/**\nAn extension that intercepts pastes when the pasted content looks\nlike a URL and the selection is non-empty and selects regular\ntext, making the selection a link with the pasted URL as target.\n*/\nconst pasteURLAsLink = /*@__PURE__*/EditorView.domEventHandlers({\n paste: (event, view) => {\n var _a;\n let { main } = view.state.selection;\n if (main.empty)\n return false;\n let link = (_a = event.clipboardData) === null || _a === void 0 ? void 0 : _a.getData(\"text/plain\");\n if (!link || !/^(https?:\\/\\/|mailto:|xmpp:|www\\.)/.test(link))\n return false;\n if (/^www\\./.test(link))\n link = \"https://\" + link;\n if (!markdownLanguage.isActiveAt(view.state, main.from, 1))\n return false;\n let tree = syntaxTree(view.state), crossesNode = false;\n // Verify that no nodes are started/ended between the selection\n // points, and we're not inside any non-plain-text construct.\n tree.iterate({\n from: main.from, to: main.to,\n enter: node => { if (node.from > main.from || nonPlainText.test(node.name))\n crossesNode = true; },\n leave: node => { if (node.to < main.to)\n crossesNode = true; }\n });\n if (crossesNode)\n return false;\n view.dispatch({\n changes: [{ from: main.from, insert: \"[\" }, { from: main.to, insert: `](${link})` }],\n userEvent: \"input.paste\",\n scrollIntoView: true\n });\n return true;\n }\n});\n\nexport { commonmarkLanguage, deleteMarkupBackward, insertNewlineContinueMarkup, insertNewlineContinueMarkupCommand, markdown, markdownKeymap, markdownLanguage, pasteURLAsLink };\n"],"names":["CompositeBlock","create","type","value","from","parentHash","end","constructor","hash","children","positions","this","hashProp","NodeProp","contextHash","addChild","child","pos","prop","Tree","length","push","toTree","nodeSet","last","Math","max","types","balance","makeTree","NodeType","none","Type","LeafBlock","start","content","marks","parsers","Line","text","baseIndent","basePos","depth","markers","indent","next","forward","forwardInner","newPos","skipSpace","countIndent","charCodeAt","reset","pop","moveBase","to","moveBaseColumn","findColumn","addMarker","elt","i","goal","scrub","result","slice","skipForList","bl","cx","line","block","stack","size","OrderedList","isOrderedList","isBulletList","BulletList","isHorizontalRule","DefaultSkipMarkup","Blockquote","QuoteMark","lineStart","space","ListItem","_cx","Document","ch","skipSpaceBack","isFencedCode","isBlockquote","breaking","count","isSetextUnderline","parser","leafBlockParsers","indexOf","DefaultLeafBlocks","SetextHeading","inList","isAtxHeading","EmptyLine","CommentEnd","ProcessingEnd","HTMLBlockStyle","isHTMLBlock","rest","e","test","getListIndent","indentAfter","indented","addCodeText","CodeText","DefaultBlockParsers","LinkReference","undefined","IndentedCode","base","pendingMarks","nextLine","m","codeStart","filter","concat","addNode","buffer","writeElements","finish","CodeBlock","FencedCode","fenceEnd","len","infoFrom","infoTo","CodeMark","CodeInfo","first","textStart","textEnd","prevLineEnd","startContext","HorizontalRule","newBase","ListMark","ATXHeading","off","endOfSpace","after","buf","write","HeaderMark","parseInline","node","ATXHeading1","HTMLBlock","trailing","nodeType","CommentBlock","ProcessingInstructionBlock","LinkReferenceParser","leaf","stage","elts","advance","complete","addLeafElement","nextStage","parseLinkLabel","LinkMark","skip","title","parseLinkTitle","titleEnd","lineEnd","parseURL","SetextHeadingParser","underline","underlineMark","SetextHeading1","SetextHeading2","_","DefaultEndLeaf","p","scanLineResult","BlockContext","input","fragments","ranges","atEnd","reusePlaceholders","Map","stoppedAt","rangeI","absoluteLineStart","absoluteLineEnd","FragmentCursor","readLine","parsedPos","markI","mark","finishContext","reuseFragment","blockParsers","parse","lines","stop","endLeafBlock","finishLeaf","stopAt","RangeError","moveTo","matches","taken","takeNodes","toRelative","moveRangeI","parentType","peekLine","scanLine","r","lineChunkAt","textOffset","nextFrom","handler","skipContextMarkup","Error","chunk","lineChunks","eol","startComposite","getNodeType","addElement","injectMarks","top","addGaps","tree","injectGaps","topNode","inline","Paragraph","TreeElement","Buffer","offset","dummies","rangeEnd","movePastNext","upto","inclusive","firstChild","nextSibling","reuse","get","propValues","MarkdownParser","Parser","blockNames","inlineParsers","inlineNames","wrappers","super","nodeTypes","Object","t","name","id","createParse","w","configure","spec","config","resolveConfig","nonEmpty","defineNodes","assign","styles","s","composite","style","some","group","define","props","Array","isArray","Tag","NodeSet","extend","styleTags","remove","rm","parseBlock","found","before","findName","splice","endLeaf","wrap","InlineContext","outer","char","token","resolveMarkers","a","conf","conc","b","wrapA","wrapB","inner","names","Escape","nodes","writeTo","build","reused","topID","Element","startOff","EmphasisUnderscore","resolve","EmphasisAsterisk","LinkStart","ImageStart","InlineDelimiter","side","Escapable","Punctuation","RegExp","DefaultInline","escaped","append","Entity","exec","InlineCode","curSize","HTMLTag","url","Autolink","URL","comment","Comment","procInst","ProcessingInstruction","Emphasis","pBefore","pAfter","sBefore","sAfter","leftFlanking","rightFlanking","canOpen","canClose","HardBreak","Link","Image","LinkEnd","parts","part","takeContent","link","finishLink","j","startPos","endPos","unshift","dest","label","LinkTitle","requireNonWS","min","LinkLabel","addDelimiter","open","close","hasOpenLink","emp","closeSize","k","element","findOpeningDelimiter","startIndex","getDelimiterAt","index","elements","eI","linkStart","imageStart","NotLast","fragment","fragmentEnd","cursor","nextFragment","read","c","rPos","parent","childAfter","cur","fragEnd","openEnd","blockI","prevEnd","prevI","isAnonymous","dummy","set","is","abs","gapFrom","gapTo","markdownHighlighting","tags","quote","contentSeparator","heading1","heading2","heading3","heading4","heading5","heading6","escape","character","emphasis","strong","list","monospace","processingInstruction","labelName","string","keys","map","n","leftOverSpace","nextPos","StrikethroughDelim","Strikethrough","strikethrough","parseRow","startI","cellStart","cellEnd","esc","parseCell","hasPipe","str","delimiterLine","TableParser","rows","lineText","firstRow","Table","heading","TaskParser","TaskList","atom","autolinkRE","urlRE","lastTwoDomainWords","emailRE","xmppResourceRE","autolinkEmailEnd","lastIndex","GFM","absPos","autolinkURLEnd","parseSubSuper","Superscript","special","Subscript","Emoji","match","data","defineLanguageFacet","commentTokens","headingProp","commonmark","foldNodeProp","add","isHeading","isList","state","doc","lineAt","indentNodeProp","languageDataProp","findSectionEnd","headerNode","level","headerIndent","foldService","of","syntaxTree","resolveInner","mkLang","Language","commonmarkLanguage","markdownLanguage","Context","spaceBefore","spaceAfter","item","blank","maxWidth","marker","number","String","itemNumber","getContext","context","replace","sliceString","renumberList","changes","prev","insert","normalizeIndent","facet","indentUnit","countColumn","insertNewlineContinueMarkupCommand","dispatch","dont","changeByRange","range","empty","isActiveAt","emptyLine","second","getChild","nonTightLists","delTo","EditorSelection","blankLine","lineBreak","prevLine","quoted","continued","charAt","line1","line2","nonTightList","update","scrollIntoView","userEvent","insertNewlineContinueMarkup","isMark","deleteMarkupBackward","scan","childBefore","lastChild","contextNodeForDelete","spaceEnd","markdownKeymap","key","run","htmlNoMatch","html","matchClosingTags","markdown","codeLanguages","defaultCodeLanguage","addKeymap","completeHTMLTags","pasteURLAsLink","pasteURL","htmlTagLanguage","defaultCode","extensions","support","LanguageSupport","language","codeParser","languages","defaultLanguage","info","LanguageDescription","matchLanguageName","ParseContext","getSkippingParser","load","htmlParser","parseMixed","overlay","infoNode","parseCode","Prec","high","keymap","lang","autocomplete","htmlTagCompletion","sliceDoc","isTop","options","htmlTagCompletions","validFor","_tagCompletions","htmlCompletionSource","CompletionContext","EditorState","nonPlainText","EditorView","domEventHandlers","paste","event","view","_a","main","selection","clipboardData","getData","crossesNode","iterate","enter","leave"],"mappings":"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","x_google_ignoreList":[0,1]}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const O=require("./index-DJuPAZHh.cjs"),e=require("./index-Cdt7DehW.cjs"),r=e.styleTags({String:e.tags.string,Number:e.tags.number,"True False":e.tags.bool,PropertyName:e.tags.propertyName,Null:e.tags.null,", :":e.tags.separator,"[ ]":e.tags.squareBracket,"{ }":e.tags.brace}),t=O.LRParser.deserialize({version:14,states:"$bOVQPOOOOQO'#Cb'#CbOnQPO'#CeOvQPO'#ClOOQO'#Cr'#CrQOQPOOOOQO'#Cg'#CgO}QPO'#CfO!SQPO'#CtOOQO,59P,59PO![QPO,59PO!aQPO'#CuOOQO,59W,59WO!iQPO,59WOVQPO,59QOqQPO'#CmO!nQPO,59`OOQO1G.k1G.kOVQPO'#CnO!vQPO,59aOOQO1G.r1G.rOOQO1G.l1G.lOOQO,59X,59XOOQO-E6k-E6kOOQO,59Y,59YOOQO-E6l-E6l",stateData:"#O~OeOS~OQSORSOSSOTSOWQO_ROgPO~OVXOgUO~O^[O~PVO[^O~O]_OVhX~OVaO~O]bO^iX~O^dO~O]_OVha~O]bO^ia~O",goto:"!kjPPPPPPkPPkqwPPPPk{!RPPP!XP!e!hXSOR^bQWQRf_TVQ_Q`WRg`QcZRicQTOQZRQe^RhbRYQR]R",nodeNames:"⚠ JsonText True False Null Number String } { Object Property PropertyName : , ] [ Array",maxTerm:25,nodeProps:[["isolate",-2,6,11,""],["openedBy",7,"{",14,"["],["closedBy",8,"}",15,"]"]],propSources:[r],skippedNodes:[0],repeatNodeCount:2,tokenData:"(|~RaXY!WYZ!W]^!Wpq!Wrs!]|}$u}!O$z!Q!R%T!R![&c![!]&t!}#O&y#P#Q'O#Y#Z'T#b#c'r#h#i(Z#o#p(r#q#r(w~!]Oe~~!`Wpq!]qr!]rs!xs#O!]#O#P!}#P;'S!];'S;=`$o<%lO!]~!}Og~~#QXrs!]!P!Q!]#O#P!]#U#V!]#Y#Z!]#b#c!]#f#g!]#h#i!]#i#j#m~#pR!Q![#y!c!i#y#T#Z#y~#|R!Q![$V!c!i$V#T#Z$V~$YR!Q![$c!c!i$c#T#Z$c~$fR!Q![!]!c!i!]#T#Z!]~$rP;=`<%l!]~$zO]~~$}Q!Q!R%T!R![&c~%YRT~!O!P%c!g!h%w#X#Y%w~%fP!Q![%i~%nRT~!Q![%i!g!h%w#X#Y%w~%zR{|&T}!O&T!Q![&Z~&WP!Q![&Z~&`PT~!Q![&Z~&hST~!O!P%c!Q![&c!g!h%w#X#Y%w~&yO[~~'OO_~~'TO^~~'WP#T#U'Z~'^P#`#a'a~'dP#g#h'g~'jP#X#Y'm~'rOR~~'uP#i#j'x~'{P#`#a(O~(RP#`#a(U~(ZOS~~(^P#f#g(a~(dP#i#j(g~(jP#X#Y(m~(rOQ~~(wOW~~(|OV~",tokenizers:[0],topRules:{JsonText:[0,1]},tokenPrec:0});const a=e.LRLanguage.define({name:"json",parser:t.configure({props:[e.indentNodeProp.add({Object:e.continuedIndent({except:/^\s*\}/}),Array:e.continuedIndent({except:/^\s*\]/})}),e.foldNodeProp.add({"Object Array":e.foldInside})]}),languageData:{closeBrackets:{brackets:["[","{",'"']},indentOnInput:/^\s*[\}\]]$/}});exports.json=function(){return new e.LanguageSupport(a)},exports.jsonLanguage=a,exports.jsonParseLinter=()=>O=>{try{JSON.parse(O.state.doc.toString())}catch(e){if(!(e instanceof SyntaxError))throw e;const r=function(O,e){let r;return(r=O.message.match(/at position (\d+)/))?Math.min(+r[1],e.length):(r=O.message.match(/at line (\d+) column (\d+)/))?Math.min(e.line(+r[1]).from+ +r[2]-1,e.length):0}(e,O.state.doc);return[{from:r,message:e.message,severity:"error",to:r}]}return[]};
|
|
2
|
+
//# sourceMappingURL=index-C2hO0yQX.cjs.map
|