{"_id":"@cube-drone/marquee-codemirror","_rev":"8-9ac17b6ba4bc0be5830c9621bd0c6c88","name":"@cube-drone/marquee-codemirror","dist-tags":{"latest":"0.8.0"},"versions":{"0.4.0":{"name":"@cube-drone/marquee-codemirror","version":"0.4.0","license":"MPL-2.0","_id":"@cube-drone/marquee-codemirror@0.4.0","maintainers":[{"name":"cube-drone","email":"cubedrone@gooble.email"}],"homepage":"https://github.com/cube-drone/marqueemarkup#readme","bugs":{"url":"https://github.com/cube-drone/marqueemarkup/issues"},"dist":{"shasum":"4e7a351dac88dfedb564c5fae7eeb5dc697a7ad4","tarball":"https://registry.npmjs.org/@cube-drone/marquee-codemirror/-/marquee-codemirror-0.4.0.tgz","fileCount":18,"integrity":"sha512-GuHaep9RtM4CFW7dPjjf/pdkP2L/9Sx9PIZyKfx6q7wSNZ4eP3LKnKFUikniQpR03VC3OeiwZL1rfNVVdkj+9w==","signatures":[{"sig":"MEYCIQDdFPeS4gWET+oSO4+c0enzb2zYrleYF53B6qdkHKlPlAIhAOoNbzS9F2BFlTZ3qCrgkt0USdI0ty4TuqYQEqmFG5jR","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":76115},"type":"module","engines":{"node":">=22.6.0"},"exports":{".":{"types":"./dist/index.d.ts","default":"./dist/index.js","marquee-src":"./src/index.ts"}},"gitHead":"e8be99c74fce4f6ca685dec9df4eab190a7720aa","scripts":{"demo":"node --conditions=marquee-src scripts/demo.ts","test":"node --conditions=marquee-src --test test/*.test.ts","build":"tsc -p tsconfig.build.json","check":"tsc --noEmit","prepack":"npm run build"},"_npmUser":{"name":"cube-drone","email":"cubedrone@gooble.email"},"repository":{"url":"git+https://github.com/cube-drone/marqueemarkup.git","type":"git","directory":"ts/marquee-codemirror"},"_npmVersion":"11.11.0","description":"A CodeMirror 6 extension for editing Marquee: Obsidian-style live preview - the source stays plain text, rendering is projected onto it as decorations, and the element under the cursor opens to show its syntax","directories":{},"_nodeVersion":"24.14.1","dependencies":{"@cube-drone/marquee-parser":"^0.4.0","@cube-drone/marquee-html-renderer":"^0.4.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"esbuild":"^0.24.0","typescript":"^5.9.0","@types/node":"^24.0.0","@codemirror/view":"^6","@codemirror/state":"^6","@codemirror/commands":"^6","@replit/codemirror-vim":"^6.3.0","@cube-drone/marquee-css":"^0.4.0","@cube-drone/marquee-emoji":"^0.4.0","@cube-drone/marquee-fonts":"^0.4.0","@cube-drone/marquee-turbolink":"^0.4.0"},"peerDependencies":{"@codemirror/view":"^6","@codemirror/state":"^6"},"_npmOperationalInternal":{"tmp":"tmp/marquee-codemirror_0.4.0_1784060126062_0.11877414966283761","host":"s3://npm-registry-packages-npm-production"}},"0.6.0":{"name":"@cube-drone/marquee-codemirror","version":"0.6.0","license":"MPL-2.0","_id":"@cube-drone/marquee-codemirror@0.6.0","maintainers":[{"name":"cube-drone","email":"cubedrone@gooble.email"}],"homepage":"https://github.com/cube-drone/marqueemarkup#readme","bugs":{"url":"https://github.com/cube-drone/marqueemarkup/issues"},"dist":{"shasum":"f3636dfb552142ad84fa08faa126922865652adc","tarball":"https://registry.npmjs.org/@cube-drone/marquee-codemirror/-/marquee-codemirror-0.6.0.tgz","fileCount":18,"integrity":"sha512-CQf4vYzpHcvHQgFksV2TY2CKPWD93hS/kIG+mWqv160xEtOdodYJhAKfSCxk6nWw1nzqEEDyoZdPMK2YtBKANQ==","signatures":[{"sig":"MEQCIAm1i0df4BlnPB1G4eS+uVlM83BE52pk6fL0cGXNT+/9AiB+Fe5S08iHV/17SOnxUYtb2b+1kNbNaMwUq9PD9djKBA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@cube-drone%2fmarquee-codemirror@0.6.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":76115},"type":"module","engines":{"node":">=22.6.0"},"exports":{".":{"types":"./dist/index.d.ts","default":"./dist/index.js","marquee-src":"./src/index.ts"}},"gitHead":"61925c209106d7b5c92c30eba6caed560b69a28b","scripts":{"demo":"node --conditions=marquee-src scripts/demo.ts","test":"node --conditions=marquee-src --test test/*.test.ts","build":"tsc -p tsconfig.build.json","check":"tsc --noEmit","prepack":"npm run build"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:558fa212-be25-4a3f-a8d5-74f1063ea4af"}},"repository":{"url":"git+https://github.com/cube-drone/marqueemarkup.git","type":"git","directory":"ts/marquee-codemirror"},"_npmVersion":"11.16.0","description":"A CodeMirror 6 extension for editing Marquee: Obsidian-style live preview - the source stays plain text, rendering is projected onto it as decorations, and the element under the cursor opens to show its syntax","directories":{},"_nodeVersion":"24.18.0","dependencies":{"@cube-drone/marquee-parser":"^0.6.0","@cube-drone/marquee-html-renderer":"^0.6.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"esbuild":"^0.24.0","typescript":"^5.9.0","@types/node":"^24.0.0","@codemirror/view":"^6","@codemirror/state":"^6","@codemirror/commands":"^6","@replit/codemirror-vim":"^6.3.0","@cube-drone/marquee-css":"^0.6.0","@cube-drone/marquee-emoji":"^0.6.0","@cube-drone/marquee-fonts":"^0.6.0","@cube-drone/marquee-turbolink":"^0.6.0"},"peerDependencies":{"@codemirror/view":"^6","@codemirror/state":"^6"},"_npmOperationalInternal":{"tmp":"tmp/marquee-codemirror_0.6.0_1784330732542_0.11869846119258765","host":"s3://npm-registry-packages-npm-production"}},"0.6.1":{"name":"@cube-drone/marquee-codemirror","version":"0.6.1","license":"MPL-2.0","_id":"@cube-drone/marquee-codemirror@0.6.1","maintainers":[{"name":"cube-drone","email":"cubedrone@gooble.email"}],"homepage":"https://github.com/cube-drone/marqueemarkup#readme","bugs":{"url":"https://github.com/cube-drone/marqueemarkup/issues"},"dist":{"shasum":"129623a53189251cd1f6636d424fce3dcae0c846","tarball":"https://registry.npmjs.org/@cube-drone/marquee-codemirror/-/marquee-codemirror-0.6.1.tgz","fileCount":18,"integrity":"sha512-Uuin/VShv0umHNQUzgRI3XULgCGz01zo6skAl928GSvjvwZRUf+bHjMrPlGO97zTRWn7RzOS1hWbcK2anPeHBg==","signatures":[{"sig":"MEUCIQD9IpD4P7FwkVnZaAAPbFNOlQMJAu2uf0jRFkE9za/JhgIgHT/5lHLAlS0rYiikKA85T8KEcKOQLqBNV/T26lfr9MI=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@cube-drone%2fmarquee-codemirror@0.6.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":76115},"type":"module","engines":{"node":">=22.6.0"},"exports":{".":{"types":"./dist/index.d.ts","default":"./dist/index.js","marquee-src":"./src/index.ts"}},"gitHead":"a1a15d4978c628aeec2637cf535c35a68a63e2f5","scripts":{"demo":"node --conditions=marquee-src scripts/demo.ts","test":"node --conditions=marquee-src --test test/*.test.ts","build":"tsc -p tsconfig.build.json","check":"tsc --noEmit","prepack":"npm run build"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:558fa212-be25-4a3f-a8d5-74f1063ea4af"}},"repository":{"url":"git+https://github.com/cube-drone/marqueemarkup.git","type":"git","directory":"ts/marquee-codemirror"},"_npmVersion":"11.16.0","description":"A CodeMirror 6 extension for editing Marquee: Obsidian-style live preview - the source stays plain text, rendering is projected onto it as decorations, and the element under the cursor opens to show its syntax","directories":{},"_nodeVersion":"24.18.0","dependencies":{"@cube-drone/marquee-parser":"^0.6.1","@cube-drone/marquee-html-renderer":"^0.6.1"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"esbuild":"^0.24.0","typescript":"^5.9.0","@types/node":"^24.0.0","@codemirror/view":"^6","@codemirror/state":"^6","@codemirror/commands":"^6","@replit/codemirror-vim":"^6.3.0","@cube-drone/marquee-css":"^0.6.1","@cube-drone/marquee-emoji":"^0.6.1","@cube-drone/marquee-fonts":"^0.6.1","@cube-drone/marquee-turbolink":"^0.6.1"},"peerDependencies":{"@codemirror/view":"^6","@codemirror/state":"^6"},"_npmOperationalInternal":{"tmp":"tmp/marquee-codemirror_0.6.1_1784591743394_0.4620037287251417","host":"s3://npm-registry-packages-npm-production"}},"0.6.2":{"name":"@cube-drone/marquee-codemirror","version":"0.6.2","license":"MPL-2.0","_id":"@cube-drone/marquee-codemirror@0.6.2","maintainers":[{"name":"cube-drone","email":"cubedrone@gooble.email"}],"homepage":"https://github.com/cube-drone/marqueemarkup#readme","bugs":{"url":"https://github.com/cube-drone/marqueemarkup/issues"},"dist":{"shasum":"275bfe94b0c12c67ed70f684790610ab80acadcd","tarball":"https://registry.npmjs.org/@cube-drone/marquee-codemirror/-/marquee-codemirror-0.6.2.tgz","fileCount":18,"integrity":"sha512-83r93dHHT6uFSYjzqLUw1GDGDalfgnkB2I3gkGNyzdvKTONLhkOsLtpcRlI6+UqbXhB2gx+9oSsw3XV2p4bq1Q==","signatures":[{"sig":"MEUCIDDJUfJS0z0/B+bmIYer69ahW+V6oM4nEp5r2wr2n1MWAiEAjfMsqX7jjotyQ29Vqt2KYnwrOY9BOT7eudynVamd308=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":96418},"type":"module","engines":{"node":">=22.6.0"},"exports":{".":{"types":"./dist/index.d.ts","default":"./dist/index.js","marquee-src":"./src/index.ts"}},"gitHead":"770e3d44726c4d3f391454348ba1f8919587b185","scripts":{"demo":"node --conditions=marquee-src scripts/demo.ts","test":"node --conditions=marquee-src --test test/*.test.ts","build":"tsc -p tsconfig.build.json","check":"tsc --noEmit","prepack":"npm run build"},"_npmUser":{"name":"cube-drone","email":"cubedrone@gooble.email"},"repository":{"url":"git+https://github.com/cube-drone/marqueemarkup.git","type":"git","directory":"ts/marquee-codemirror"},"_npmVersion":"11.11.0","description":"A CodeMirror 6 extension for editing Marquee: Obsidian-style live preview - the source stays plain text, rendering is projected onto it as decorations, and the element under the cursor opens to show its syntax","directories":{},"_nodeVersion":"24.14.1","dependencies":{"@cube-drone/marquee-parser":"^0.6.2","@cube-drone/marquee-html-renderer":"^0.6.2"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"esbuild":"^0.24.0","typescript":"^5.9.0","@types/node":"^24.0.0","@codemirror/view":"^6","@codemirror/state":"^6","@codemirror/commands":"^6","@replit/codemirror-vim":"^6.3.0","@cube-drone/marquee-css":"^0.6.2","@cube-drone/marquee-emoji":"^0.6.2","@cube-drone/marquee-fonts":"^0.6.2","@cube-drone/marquee-turbolink":"^0.6.2"},"peerDependencies":{"@codemirror/view":"^6","@codemirror/state":"^6"},"_npmOperationalInternal":{"tmp":"tmp/marquee-codemirror_0.6.2_1785363630139_0.3817007844000422","host":"s3://npm-registry-packages-npm-production"}},"0.7.0":{"name":"@cube-drone/marquee-codemirror","version":"0.7.0","license":"MPL-2.0","_id":"@cube-drone/marquee-codemirror@0.7.0","maintainers":[{"name":"cube-drone","email":"cubedrone@gooble.email"}],"homepage":"https://github.com/cube-drone/marqueemarkup#readme","bugs":{"url":"https://github.com/cube-drone/marqueemarkup/issues"},"dist":{"shasum":"fd37dfe75a189c366cf67f45468dd1a34de17296","tarball":"https://registry.npmjs.org/@cube-drone/marquee-codemirror/-/marquee-codemirror-0.7.0.tgz","fileCount":18,"integrity":"sha512-uBgSs2QErtPizt2Wozz/CF1IGoS7TOnwjTJMM2m9tufB+jk4hToi1T82LAT89/poIQZBSqrhv/nhUrqZSdgn5Q==","signatures":[{"sig":"MEUCIB5+d+m4KlExNqt5y2IX5NNjKKlnwtWNTWQAMizhW08lAiEAoKdWfl1hBsoeAtE4Iv9ZUM2jtoJTWXFr2IYEMA1fjqg=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEYCIQDo7cIf5MalfOTk4ATgbWRjCDtPSS/nYyZhPl90fW6WsAIhAORa8rBMZnzFp38LAg05bbz8XT31yG3s31yir1IFCdxi","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@cube-drone%2fmarquee-codemirror@0.7.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":96418},"type":"module","engines":{"node":">=22.6.0"},"exports":{".":{"types":"./dist/index.d.ts","default":"./dist/index.js","marquee-src":"./src/index.ts"}},"gitHead":"dd07438a1ebd6043de970f76e2c4c261194b55cf","scripts":{"demo":"node --conditions=marquee-src scripts/demo.ts","test":"node --conditions=marquee-src --test test/*.test.ts","build":"tsc -p tsconfig.build.json","check":"tsc --noEmit","prepack":"npm run build"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:558fa212-be25-4a3f-a8d5-74f1063ea4af"}},"repository":{"url":"git+https://github.com/cube-drone/marqueemarkup.git","type":"git","directory":"ts/marquee-codemirror"},"_npmVersion":"11.17.0","description":"A CodeMirror 6 extension for editing Marquee: Obsidian-style live preview - the source stays plain text, rendering is projected onto it as decorations, and the element under the cursor opens to show its syntax","directories":{},"_nodeVersion":"24.19.0","dependencies":{"@cube-drone/marquee-parser":"^0.7.0","@cube-drone/marquee-html-renderer":"^0.7.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"esbuild":"^0.24.0","typescript":"^5.9.0","@types/node":"^24.0.0","@codemirror/view":"^6","@codemirror/state":"^6","@codemirror/commands":"^6","@replit/codemirror-vim":"^6.3.0","@cube-drone/marquee-css":"^0.7.0","@cube-drone/marquee-emoji":"^0.7.0","@cube-drone/marquee-fonts":"^0.7.0","@cube-drone/marquee-turbolink":"^0.7.0"},"peerDependencies":{"@codemirror/view":"^6","@codemirror/state":"^6"},"_npmOperationalInternal":{"tmp":"tmp/marquee-codemirror_0.7.0_1788336463301_0.8134504831925511","host":"s3://npm-registry-packages-npm-production"}},"0.7.1":{"name":"@cube-drone/marquee-codemirror","version":"0.7.1","license":"MPL-2.0","_id":"@cube-drone/marquee-codemirror@0.7.1","maintainers":[{"name":"cube-drone","email":"cubedrone@gooble.email"}],"homepage":"https://github.com/cube-drone/marqueemarkup#readme","bugs":{"url":"https://github.com/cube-drone/marqueemarkup/issues"},"dist":{"shasum":"b732b5e0320a4dc1e7bfacda0f4355c4fa427474","tarball":"https://registry.npmjs.org/@cube-drone/marquee-codemirror/-/marquee-codemirror-0.7.1.tgz","fileCount":18,"integrity":"sha512-Y/D+pQ8OLpm+L71z1Te3J2jvEwTSqH7IbGG4tSdoD2gaOi7vnAohVdyhmQFfwI5E6q3vINdM7kweuWdPc5BoZw==","signatures":[{"sig":"MEYCIQC3WIr6WWZXv6dJBdNkZ90Buhslw5iDy9gM6BZdr4W5ZgIhAJ1DgI00/Q983AqbutQ4ucWgEiCLjbHqqQonoo1pksqp","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEYCIQCPPsIvvvsShtAkzg/YRQcFNlITY5Ny8wgpqof4QKXNywIhAJbl6LhNBafcfyGu+t3T2eApFkqMP50OPV+N6OPAX+fT","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@cube-drone%2fmarquee-codemirror@0.7.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":96418},"type":"module","engines":{"node":">=22.6.0"},"exports":{".":{"types":"./dist/index.d.ts","default":"./dist/index.js","marquee-src":"./src/index.ts"}},"gitHead":"803737fc90b85c2c975eea7cd71ed568b447993e","scripts":{"demo":"node --conditions=marquee-src scripts/demo.ts","test":"node --conditions=marquee-src --test test/*.test.ts","build":"tsc -p tsconfig.build.json","check":"tsc --noEmit","prepack":"npm run build"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:558fa212-be25-4a3f-a8d5-74f1063ea4af"}},"repository":{"url":"git+https://github.com/cube-drone/marqueemarkup.git","type":"git","directory":"ts/marquee-codemirror"},"_npmVersion":"11.17.0","description":"A CodeMirror 6 extension for editing Marquee: Obsidian-style live preview - the source stays plain text, rendering is projected onto it as decorations, and the element under the cursor opens to show its syntax","directories":{},"_nodeVersion":"24.19.0","dependencies":{"@cube-drone/marquee-parser":"^0.7.1","@cube-drone/marquee-html-renderer":"^0.7.1"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"esbuild":"^0.24.0","typescript":"^5.9.0","@types/node":"^24.0.0","@codemirror/view":"^6","@codemirror/state":"^6","@codemirror/commands":"^6","@replit/codemirror-vim":"^6.3.0","@cube-drone/marquee-css":"^0.7.1","@cube-drone/marquee-emoji":"^0.7.1","@cube-drone/marquee-fonts":"^0.7.1","@cube-drone/marquee-turbolink":"^0.7.1"},"peerDependencies":{"@codemirror/view":"^6","@codemirror/state":"^6"},"_npmOperationalInternal":{"tmp":"tmp/marquee-codemirror_0.7.1_1788429290990_0.45125660730875783","host":"s3://npm-registry-packages-npm-production"}},"0.7.2":{"name":"@cube-drone/marquee-codemirror","version":"0.7.2","license":"MPL-2.0","_id":"@cube-drone/marquee-codemirror@0.7.2","maintainers":[{"name":"cube-drone","email":"cubedrone@gooble.email"}],"homepage":"https://github.com/cube-drone/marqueemarkup#readme","bugs":{"url":"https://github.com/cube-drone/marqueemarkup/issues"},"dist":{"shasum":"96f5cc5817532227caec1ebd0ae3f584c9b94008","tarball":"https://registry.npmjs.org/@cube-drone/marquee-codemirror/-/marquee-codemirror-0.7.2.tgz","fileCount":18,"integrity":"sha512-UfnjDz1S1aM6EpwHuyW+tDzmpxlcOZzahu6GG4s34dKZpNYRcJW/uBu19XdRxgFi3bmMY0m45F3P7VROM+u2fA==","signatures":[{"sig":"MEUCIQCtcIyXhAcah2Z9KjFx1G0+2YCpRf+3sPdq/a8E6Ya+gAIgbUlGWlfHt6FFjTngsDEV48NNOaT2tmlR4Vjfn2bn6rA=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEUCIQDCTvjJNDl9yXCBPwyHb8hGrUTSV77ZSjuI4rdVQ4RdzwIge8Z3nx7N4++zFZW2q4PPAal3HdlE7FjuqxnfCBzCEyM=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@cube-drone%2fmarquee-codemirror@0.7.2","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":96418},"type":"module","engines":{"node":">=22.6.0"},"exports":{".":{"types":"./dist/index.d.ts","default":"./dist/index.js","marquee-src":"./src/index.ts"}},"gitHead":"f05dcff51ae3d74ed16cd4419859fbd15c70fe67","scripts":{"demo":"node --conditions=marquee-src scripts/demo.ts","test":"node --conditions=marquee-src --test test/*.test.ts","build":"tsc -p tsconfig.build.json","check":"tsc --noEmit","prepack":"npm run build"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:558fa212-be25-4a3f-a8d5-74f1063ea4af"}},"repository":{"url":"git+https://github.com/cube-drone/marqueemarkup.git","type":"git","directory":"ts/marquee-codemirror"},"_npmVersion":"11.19.0","description":"A CodeMirror 6 extension for editing Marquee: Obsidian-style live preview - the source stays plain text, rendering is projected onto it as decorations, and the element under the cursor opens to show its syntax","directories":{},"_nodeVersion":"24.20.0","dependencies":{"@cube-drone/marquee-parser":"^0.7.2","@cube-drone/marquee-html-renderer":"^0.7.2"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"esbuild":"^0.24.0","typescript":"^5.9.0","@types/node":"^24.0.0","@codemirror/view":"^6","@codemirror/state":"^6","@codemirror/commands":"^6","@replit/codemirror-vim":"^6.3.0","@cube-drone/marquee-css":"^0.7.2","@cube-drone/marquee-emoji":"^0.7.2","@cube-drone/marquee-fonts":"^0.7.2","@cube-drone/marquee-turbolink":"^0.7.2"},"peerDependencies":{"@codemirror/view":"^6","@codemirror/state":"^6"},"_npmOperationalInternal":{"tmp":"tmp/marquee-codemirror_0.7.2_1788466668096_0.377287095166547","host":"s3://npm-registry-packages-npm-production"}},"0.8.0":{"_id":"@cube-drone/marquee-codemirror@0.8.0","bugs":{"url":"https://github.com/cube-drone/marqueemarkup/issues"},"dist":{"shasum":"ceecb39f6d3d895534743c32ffa27063ba18c02d","tarball":"https://registry.npmjs.org/@cube-drone/marquee-codemirror/-/marquee-codemirror-0.8.0.tgz","fileCount":18,"integrity":"sha512-gfA5GjuubUStwZyj+ZPvfsE17TFONEkE/p7tpRh1LbVq3azBcZQRmFZ+eU8U3BMd3aVAchLADOgjHis/UlBwfw==","signatures":[{"sig":"MEYCIQDShAApuzyZpsrDMINbGpTeZPzG6tOovsJSIqSyK57ulQIhALgGJPqY+OZbSoD2AckBcqC3kkxIIveIU5dxa+7o+v33","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEUCIFdJ6alQCdm70vqqzMK5R2Wd9hV28VVsnmOn30UTW3+kAiEA62QOz4vvCAn4kbvlNvxfbmaxydsqnrY5Qu8C/WB9rys="}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@cube-drone%2fmarquee-codemirror@0.8.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":98508},"name":"@cube-drone/marquee-codemirror","type":"module","engines":{"node":">=22.6.0"},"exports":{".":{"types":"./dist/index.d.ts","default":"./dist/index.js","marquee-src":"./src/index.ts"}},"gitHead":"010d8261d68ec7d4abafdcd0fdcd3a0267207f50","license":"MPL-2.0","scripts":{"demo":"node --conditions=marquee-src scripts/demo.ts","test":"node --conditions=marquee-src --test test/*.test.ts","build":"tsc -p tsconfig.build.json","check":"tsc --noEmit","prepack":"npm run build"},"version":"0.8.0","_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:558fa212-be25-4a3f-a8d5-74f1063ea4af"}},"homepage":"https://github.com/cube-drone/marqueemarkup#readme","repository":{"url":"git+https://github.com/cube-drone/marqueemarkup.git","type":"git","directory":"ts/marquee-codemirror"},"_npmVersion":"11.19.0","description":"A CodeMirror 6 extension for editing Marquee: Obsidian-style live preview - the source stays plain text, rendering is projected onto it as decorations, and the element under the cursor opens to show its syntax","directories":{},"maintainers":[{"name":"cube-drone","email":"cubedrone@gooble.email"}],"_nodeVersion":"24.20.0","dependencies":{"@cube-drone/marquee-parser":"^0.8.0","@cube-drone/marquee-html-renderer":"^0.8.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"esbuild":"^0.24.0","typescript":"^5.9.0","@types/node":"^24.0.0","@codemirror/view":"^6","@codemirror/state":"^6","@codemirror/commands":"^6","@replit/codemirror-vim":"^6.3.0","@cube-drone/marquee-css":"^0.8.0","@cube-drone/marquee-emoji":"^0.8.0","@cube-drone/marquee-fonts":"^0.8.0","@cube-drone/marquee-turbolink":"^0.8.0"},"peerDependencies":{"@codemirror/view":"^6","@codemirror/state":"^6"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/marquee-codemirror_0.8.0_1788739027899_0.1628242208471795"}}},"time":{"created":"2026-07-14T20:15:25.922Z","modified":"2026-09-06T23:57:08.326Z","0.4.0":"2026-07-14T20:15:26.203Z","0.6.0":"2026-07-17T23:25:32.671Z","0.6.1":"2026-07-20T23:55:43.538Z","0.6.2":"2026-07-29T22:20:30.287Z","0.7.0":"2026-09-02T08:07:43.398Z","0.7.1":"2026-09-03T09:54:51.084Z","0.7.2":"2026-09-03T20:17:48.235Z","0.8.0":"2026-09-06T23:57:07.985Z"},"bugs":{"url":"https://github.com/cube-drone/marqueemarkup/issues"},"license":"MPL-2.0","homepage":"https://github.com/cube-drone/marqueemarkup#readme","repository":{"url":"git+https://github.com/cube-drone/marqueemarkup.git","type":"git","directory":"ts/marquee-codemirror"},"description":"A CodeMirror 6 extension for editing Marquee: Obsidian-style live preview - the source stays plain text, rendering is projected onto it as decorations, and the element under the cursor opens to show its syntax","maintainers":[{"name":"cube-drone","email":"cubedrone@gooble.email"}],"readme":"<img src=\"https://raw.githubusercontent.com/cube-drone/marqueemarkup/main/marquee-logo.png\" alt=\"Marquee Markup\" width=\"96\" align=\"right\">\n\n# @cube-drone/marquee-codemirror\n\nA [CodeMirror 6](https://codemirror.net/) extension for editing\n[Marquee](https://github.com/cube-drone/marqueemarkup): **Obsidian-style live preview** — the\nhalfway point between a WYSIWYG editor and a dual source/preview pane.\n\n```\nnpm install @cube-drone/marquee-codemirror @codemirror/state @codemirror/view\n```\n\n```ts\nimport { EditorView } from \"@codemirror/view\";\nimport { EditorState } from \"@codemirror/state\";\nimport { marquee } from \"@cube-drone/marquee-codemirror\";\n\nnew EditorView({\n  parent: document.body,\n  state: EditorState.create({\n    doc: \"# hello *world*\",\n    extensions: [marquee()],\n  }),\n});\n```\n\n## How it works\n\nThe document never stops being **plain Marquee source** — there is no rich-text model, no\ncontenteditable, nothing to fall out of sync. Rendering is *projected onto* the source as\nCodeMirror decorations:\n\n- **Inline formatting** inside a plain paragraph is *styled in place*: `**bold**` is drawn\n  bold while its `**` stays visible (and dimmed) under the cursor, then hides when the cursor\n  leaves. Effects animate (their real `mq-*` classes) when you're not editing them, spoilers\n  blur, colored spans take their color, `:sparkles:` shows ✨. A span the profile's `span`\nhook claims (an embedder's own vocabulary - a user card, a widget) renders whole, like a\nlink. Links go one further: away\n  from the cursor, `[text](target)` is a **real, followable anchor** (the renderer's own\n  output, so link policy holds) with a thin click-gutter either side — click the link and it\n  follows; click the gutter (or arrow up against it) to drop the cursor beside it, which opens\n  it to source for editing. Obsidian's answer to \"clickable or editable?\": both.\n- **Every block the cursor isn't in becomes fully rendered** — by the actual Marquee HTML\n  renderer. A list looks like a list, a code block like code, a table like a table; images\n  flow full-size, `:::media` rows lay out, quotes get their spine, asides drop below their\n  paragraph, turbolinks expand, spoilers hide, unknown widgets show their placeholder. Move\n  the cursor into a block and it opens to source; click a rendered block (off any link) to\n  put the cursor there.\n- **Layout containers** (`:::page`, `:::section`) stay as source with their contents previewed\n  inside — accurately previewing a page *layout* is the job of a separate window, not the\n  inline editor. But their **visual identity paints through**: a scheme\n  (`scheme=hotdog-stand`), a background tile, a color, a font washes across every line the\n  container spans — fences included, rendered blocks inside too — so the colorway shows while\n  everything stays editable. Only the geometry waits for the preview window.\n\nTwo things make this work. **Exactness:** Marquee has one parse, so every decision comes from\nthe real AST and source positions (`parseWithPositions`), never a guess about whether a `*` is\nan opener. **Leverage:** rendered blocks *are* the HTML renderer's output — the editor doesn't\nreimplement lists or tables, it calls `render(node, profile)` and shows the result, so the\npreview and the page can't disagree. The decision layer is a **pure function** —\n`plan(source, cursors, profile) → decoration specs` — exported for testing or for building your\nown surface on the same policy.\n\n## Editing a block\n\nClick any rendered block to drop the cursor into it and edit its source — except a control\n*inside* it (a link, a `<video>`, a play button) still does its own thing, so a media embed\nplays rather than opening to source. While you edit a **media block** (an embed-bearing\nparagraph, a `:::media` container), a **dimmed preview** is held just below the source (set\noff with a left rule) — alt text and a target say nothing about whether the media resolves,\nso the preview is the feedback. Text-shaped blocks (lists, quotes, code, tables) read fine as\nsource, so while you edit them it's just the source — no duplicate copy below. Rendered HTML\nis cached by a block's *source text*, so typing only re-renders the block you're touching —\nthe rest of the document keeps its DOM (no re-render, no image reload, no height churn, no\nscroll jumping).\n\n**Lists get a grace zone.** The in-between states of list editing — Enter on the last item, a\nbare `-` before you type the space that makes it an item, Enter splitting an item's text — all\ntechnically parse as \"not part of the list,\" but you're still mid-thought, so an exact-span\ntest would snatch the list away for rendering on those keystrokes. The list's touch zone\nextends over the adjacent blank and half-typed-marker lines (one line of real content directly\nagainst it, two lines total each way), and it re-renders once your cursor is genuinely\nelsewhere.\n\nUp/down arrows step *over* a rendered block (treating it as one unit, which is what you want\nwhile skimming); to keyboard-edit a block, arrow into it from the side or click it.\n\n## Options\n\n```ts\nmarquee({ profile })\n```\n\n`profile` is `Partial<Profile>` — the **same embedder-policy socket** the renderers use. It\ndecides which images resolve into widgets, which emoji resolve into glyphs, which URL schemes\nare allowed. Write your policy once; the editor and both renderers honor it. Defaults to the\nbare-web profile.\n\nPair with `@cube-drone/marquee-css` if you want `[font=…]` spans to show their actual faces;\nthe editor's own look (marker dimming, heading sizes, widget styling) ships inside the\nextension as a theme.\n\n## Vim (or any keymap)\n\n`marquee()` defines **no keybindings**, so it composes with whatever keymap you bolt on. To\nmake vim mode a runtime toggle, put it in a [`Compartment`](https://codemirror.net/docs/ref/#state.Compartment)\nand reconfigure it on demand — no rebuild, state preserved:\n\n```ts\nimport { Compartment } from \"@codemirror/state\";\nimport { vim } from \"@replit/codemirror-vim\";      // a separate dependency\n\nconst vimMode = new Compartment();\n\nconst view = new EditorView({\n  state: EditorState.create({\n    doc,\n    extensions: [\n      vimMode.of([]),           // FIRST, so vim wins key precedence; [] = off\n      keymap.of([...defaultKeymap, ...historyKeymap]),\n      marquee({ profile }),\n    ],\n  }),\n});\n\n// flip it whenever (a checkbox, a setting, a command):\nconst setVim = (on: boolean) =>\n  view.dispatch({ effects: vimMode.reconfigure(on ? vim() : []) });\n```\n\nTwo gotchas: keep the compartment **before** the other keymaps (vim needs precedence), and\nvim draws its own block cursor and `:` status line, so its cursor supersedes this extension's\ncaret styling. The same pattern works for `@replit/codemirror-emacs` or any other keymap. The\ndemo in this package has a working `vim` checkbox — steal it.\n\n## The demo\n\n```\nnpm run demo                                       # in this package\nnpx serve ts/marquee-codemirror/demo/dist          # from the repo root\n```\n\nLoads `WRITING.mq` — the language's own tour — in a live-preview editor. Type in it.\n\nLicense: MPL-2.0.\n","readmeFilename":"README.md"}