{"_id":"@pride7/frameseq","_rev":"45-2c348db88d3e2e2624e1fa0356b35961","name":"@pride7/frameseq","dist-tags":{"latest":"0.35.0"},"versions":{"0.1.0":{"name":"@pride7/frameseq","version":"0.1.0","keywords":["slides","presentation","typescript","pdf","dsl"],"license":"MIT","_id":"@pride7/frameseq@0.1.0","maintainers":[{"name":"pride7","email":"xsfeng07@gmail.com"}],"bin":{"frameseq":"scripts/frameseq.mjs"},"dist":{"shasum":"092ebc47d32c9a4e8d724e4ce0916a2f8fe2806a","tarball":"https://registry.npmjs.org/@pride7/frameseq/-/frameseq-0.1.0.tgz","fileCount":22,"integrity":"sha512-kjm4S39uGtanaGJeB9gFSxlQf0LmQpq4g2H+IR9F6SVGiYSJ3QYvOsYhqpDhXxQrh6UtqPo3gF3Y5sTS6oPOLA==","signatures":[{"sig":"MEYCIQD2Cv6ot57WNYhdXHEpLWel40uVbCPvXxssZvJSnN/ulgIhAMsjKCXIDILwW0DUMulvqCA2KuNX3/ff5pTcIExIhkn1","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":65122},"type":"module","types":"./lib/index.d.ts","engines":{"node":"^20.19.0 || >=22.12.0"},"exports":{".":{"types":"./lib/index.d.ts","import":"./lib/index.js"},"./globals":{"types":"./lib/globals.d.ts","default":"./lib/index.js"}},"gitHead":"a57fd563b4a258ac4046a6dfd5ef908d14de6e2e","scripts":{"dev":"node scripts/frameseq.mjs dev slides.ts","test":"npm run build && node scripts/smoke-test.mjs","build":"npm run build:package && npm run build:demo","check":"tsc --noEmit","prepack":"npm run build:package","preview":"vite preview","frameseq":"node scripts/frameseq.mjs","build:demo":"tsc --noEmit && vite build","export:pdf":"node scripts/frameseq.mjs pdf slides.ts --output output/pdf/frameseq.pdf","pack:check":"node scripts/package-test.mjs","build:package":"vite build --config vite.lib.config.ts && tsc -p tsconfig.publish.json","release:check":"npm test && npm run pack:check"},"_npmUser":{"name":"pride7","email":"xsfeng07@gmail.com"},"_npmVersion":"11.14.0","description":"Build presentations like interfaces with a linear TypeScript DSL.","directories":{},"_nodeVersion":"24.14.0","dependencies":{"vite":"^7.0.0","katex":"^0.16.22","puppeteer":"^24.16.0"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org"},"_hasShrinkwrap":false,"devDependencies":{"typescript":"^5.8.3","@types/node":"^24.0.0","@types/katex":"^0.16.7"},"_npmOperationalInternal":{"tmp":"tmp/frameseq_0.1.0_1784635856674_0.6275737630693838","host":"s3://npm-registry-packages-npm-production"}},"0.1.1":{"name":"@pride7/frameseq","version":"0.1.1","keywords":["slides","presentation","typescript","pdf","dsl"],"license":"MIT","_id":"@pride7/frameseq@0.1.1","maintainers":[{"name":"pride7","email":"xsfeng07@gmail.com"}],"bin":{"frameseq":"scripts/frameseq.mjs"},"dist":{"shasum":"97fd293b73547001b3f83f2484209e7e79d07b56","tarball":"https://registry.npmjs.org/@pride7/frameseq/-/frameseq-0.1.1.tgz","fileCount":31,"integrity":"sha512-GvjjNh+q1hOxiUpx7IH+4YTOEDhQkdIxa/QX37MtfGmR2+QCfU28hNLwF3Yi0vQWC3snVtERyG7UIPxZl75jEQ==","signatures":[{"sig":"MEUCIQDEOeJaPIXEusNBMoqj7PuUroumKEP4uhVYDoH9n68m4QIgSAN7r22qPIYGU0ujA5t9COeAwSmGhl1OXOVbnFGo/tI=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":88964},"type":"module","types":"./lib/index.d.ts","engines":{"node":"^20.19.0 || >=22.12.0"},"exports":{".":{"types":"./lib/index.d.ts","import":"./lib/index.js"},"./globals":{"types":"./lib/globals.d.ts","default":"./lib/index.js"}},"gitHead":"ea7a171b2bc239ac58005912db92dd4ab1b91b3a","scripts":{"dev":"node scripts/frameseq.mjs dev slides.ts","test":"npm run build && node scripts/smoke-test.mjs","build":"npm run build:package && npm run build:demo","check":"tsc --noEmit","prepack":"npm run build:package","preview":"vite preview","frameseq":"node scripts/frameseq.mjs","build:demo":"tsc --noEmit && vite build","export:pdf":"node scripts/frameseq.mjs pdf slides.ts --output output/pdf/frameseq.pdf","pack:check":"node scripts/package-test.mjs","build:package":"vite build --config vite.lib.config.ts && tsc -p tsconfig.publish.json","release:check":"npm test && npm run pack:check"},"_npmUser":{"name":"pride7","email":"xsfeng07@gmail.com"},"_npmVersion":"11.14.0","description":"Build presentations like interfaces with a linear TypeScript DSL.","directories":{},"_nodeVersion":"24.14.0","dependencies":{"vite":"^7.0.0","katex":"^0.16.22","puppeteer":"^24.16.0"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org"},"_hasShrinkwrap":false,"devDependencies":{"typescript":"^5.8.3","@types/node":"^24.0.0","@types/katex":"^0.16.7"},"_npmOperationalInternal":{"tmp":"tmp/frameseq_0.1.1_1784637372741_0.4157509940851689","host":"s3://npm-registry-packages-npm-production"}},"0.2.0":{"name":"@pride7/frameseq","version":"0.2.0","keywords":["slides","presentation","typescript","pdf","dsl"],"license":"MIT","_id":"@pride7/frameseq@0.2.0","maintainers":[{"name":"pride7","email":"xsfeng07@gmail.com"}],"bin":{"frameseq":"scripts/frameseq.mjs"},"dist":{"shasum":"26bd07aaab9021d5f904979f17c0230eecec3104","tarball":"https://registry.npmjs.org/@pride7/frameseq/-/frameseq-0.2.0.tgz","fileCount":35,"integrity":"sha512-AQu61FBtVIfhpbbIHlA2e3VlfL4ooieyg9urbrCxrkV1SiKwCRqvTVAio5Dr78ZRJoj8EDmQbvWfFTkLFzXFTQ==","signatures":[{"sig":"MEQCIDQJYxCaZLX5E8ysTKnB7qHt/hKWg9yDZOBWRnLRmfStAiAN/M6lm+GGY/VBVJ38o0SIrVNf03WHw7EqKvV0bjFOQA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":111677},"type":"module","types":"./lib/index.d.ts","engines":{"node":"^20.19.0 || >=22.12.0"},"exports":{".":{"types":"./lib/index.d.ts","import":"./lib/index.js"},"./globals":{"types":"./lib/globals.d.ts","default":"./lib/index.js"}},"gitHead":"736b3636172893b5d9abfbc976c0cc57be30968a","scripts":{"dev":"node scripts/frameseq.mjs dev slides.ts","test":"npm run build && node scripts/theme-test.mjs && node scripts/smoke-test.mjs","build":"npm run build:package && npm run build:demo","check":"tsc --noEmit","prepack":"npm run build:package","preview":"vite preview","frameseq":"node scripts/frameseq.mjs","build:demo":"tsc --noEmit && vite build","export:pdf":"node scripts/frameseq.mjs pdf slides.ts --output output/pdf/frameseq.pdf","pack:check":"node scripts/package-test.mjs","build:package":"vite build --config vite.lib.config.ts && tsc -p tsconfig.publish.json","release:check":"npm test && npm run pack:check"},"_npmUser":{"name":"pride7","email":"xsfeng07@gmail.com"},"_npmVersion":"11.14.0","description":"Build presentations like interfaces with a linear TypeScript DSL.","directories":{},"_nodeVersion":"24.14.0","dependencies":{"vite":"^7.0.0","katex":"^0.16.22","puppeteer":"^24.16.0"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org"},"_hasShrinkwrap":false,"devDependencies":{"typescript":"^5.8.3","@types/node":"^24.0.0","@types/katex":"^0.16.7"},"_npmOperationalInternal":{"tmp":"tmp/frameseq_0.2.0_1784639101427_0.40551289842416627","host":"s3://npm-registry-packages-npm-production"}},"0.2.1":{"name":"@pride7/frameseq","version":"0.2.1","keywords":["slides","presentation","typescript","pdf","dsl"],"license":"MIT","_id":"@pride7/frameseq@0.2.1","maintainers":[{"name":"pride7","email":"xsfeng07@gmail.com"}],"bin":{"frameseq":"scripts/frameseq.mjs"},"dist":{"shasum":"52cec8220b95221fb943670ea2c37e2debaea471","tarball":"https://registry.npmjs.org/@pride7/frameseq/-/frameseq-0.2.1.tgz","fileCount":35,"integrity":"sha512-jDORzLDXDMmYjYLeF+C+UMpO4SpL3nqxm+AU74F2zdjIRP7iV6khuFiYlsjjL8qVLpl7Tkwgf9GkI3aqUnjwyQ==","signatures":[{"sig":"MEQCIB/P4u4+7Vc21W85k3mlqq+5kJeHHcKgmNXM2v65LH9ZAiBo1I24k9KgfCK+T6p+HclVMXQCiopiv3haZZlstB+BQA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":112197},"type":"module","types":"./lib/index.d.ts","engines":{"node":"^20.19.0 || >=22.12.0"},"exports":{".":{"types":"./lib/index.d.ts","import":"./lib/index.js"},"./globals":{"types":"./lib/globals.d.ts","default":"./lib/index.js"}},"gitHead":"69bbd74cedcd384fa03c2d07b73194492a254975","scripts":{"dev":"node scripts/frameseq.mjs dev slides.ts","test":"npm run build && node scripts/theme-test.mjs && node scripts/smoke-test.mjs","build":"npm run build:package && npm run build:demo","check":"tsc --noEmit","prepack":"npm run build:package","preview":"vite preview","frameseq":"node scripts/frameseq.mjs","build:demo":"tsc --noEmit && vite build","export:pdf":"node scripts/frameseq.mjs pdf slides.ts --output output/pdf/frameseq.pdf","pack:check":"node scripts/package-test.mjs","build:package":"vite build --config vite.lib.config.ts && tsc -p tsconfig.publish.json","release:check":"npm test && npm run pack:check"},"_npmUser":{"name":"pride7","email":"xsfeng07@gmail.com"},"_npmVersion":"11.14.0","description":"Build presentations like interfaces with a linear TypeScript DSL.","directories":{},"_nodeVersion":"24.14.0","dependencies":{"vite":"^7.0.0","katex":"^0.16.22","puppeteer":"^24.16.0"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org"},"_hasShrinkwrap":false,"devDependencies":{"typescript":"^5.8.3","@types/node":"^24.0.0","@types/katex":"^0.16.7"},"_npmOperationalInternal":{"tmp":"tmp/frameseq_0.2.1_1784639341105_0.18788088387779256","host":"s3://npm-registry-packages-npm-production"}},"0.3.0":{"name":"@pride7/frameseq","version":"0.3.0","keywords":["slides","presentation","typescript","pdf","dsl"],"license":"MIT","_id":"@pride7/frameseq@0.3.0","maintainers":[{"name":"pride7","email":"xsfeng07@gmail.com"}],"bin":{"frameseq":"scripts/frameseq.mjs"},"dist":{"shasum":"0d2881c3514931bf29bc7522e4c00bf16f0aac11","tarball":"https://registry.npmjs.org/@pride7/frameseq/-/frameseq-0.3.0.tgz","fileCount":35,"integrity":"sha512-Xv7+IrSARkzg7eHV/0ravtXtPUOX6ubO5oTw2e96TT0LgR32Tnw5m3Hs8nZrys2Aecc09dpBSbUE5GOJlshjUw==","signatures":[{"sig":"MEYCIQDbl/1j4wlVyg1I7K5ddWrmul6FX37JuT0qSrZe3Cq0OAIhAKlptNVlwsiE9C6dbp66aDS8aIhLeGbxmsfTxORRIv6G","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":139748},"type":"module","types":"./lib/index.d.ts","engines":{"node":"^20.19.0 || >=22.12.0"},"exports":{".":{"types":"./lib/index.d.ts","import":"./lib/index.js"},"./globals":{"types":"./lib/globals.d.ts","default":"./lib/index.js"}},"gitHead":"f2d2c8b56f6efd7ffc8d1d788515d78021855690","scripts":{"dev":"node scripts/frameseq.mjs dev slides.ts","test":"npm run build && node scripts/theme-test.mjs && node scripts/smoke-test.mjs && node scripts/beamer-smoke-test.mjs && node scripts/minimal-academic-smoke-test.mjs","build":"npm run build:package && npm run build:demo","check":"tsc --noEmit","prepack":"npm run build:package","preview":"vite preview","frameseq":"node scripts/frameseq.mjs","build:demo":"tsc --noEmit && vite build","export:pdf":"node scripts/frameseq.mjs pdf slides.ts --output output/pdf/frameseq.pdf","pack:check":"node scripts/package-test.mjs","build:package":"vite build --config vite.lib.config.ts && tsc -p tsconfig.publish.json","release:check":"npm test && npm run pack:check"},"_npmUser":{"name":"pride7","email":"xsfeng07@gmail.com"},"_npmVersion":"11.14.0","description":"Build presentations like interfaces with a linear TypeScript DSL.","directories":{},"_nodeVersion":"24.14.0","dependencies":{"vite":"^7.0.0","katex":"^0.16.22","puppeteer":"^24.16.0"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org"},"_hasShrinkwrap":false,"devDependencies":{"typescript":"^5.8.3","@types/node":"^24.0.0","@types/katex":"^0.16.7"},"_npmOperationalInternal":{"tmp":"tmp/frameseq_0.3.0_1784646034750_0.3072569846508231","host":"s3://npm-registry-packages-npm-production"}},"0.4.0":{"name":"@pride7/frameseq","version":"0.4.0","keywords":["slides","presentation","typescript","pdf","dsl"],"license":"MIT","_id":"@pride7/frameseq@0.4.0","maintainers":[{"name":"pride7","email":"xsfeng07@gmail.com"}],"bin":{"frameseq":"scripts/frameseq.mjs"},"dist":{"shasum":"87621a1270522dea032871a1760ef9cab7ff1623","tarball":"https://registry.npmjs.org/@pride7/frameseq/-/frameseq-0.4.0.tgz","fileCount":35,"integrity":"sha512-V8J3Ld+ySgp4MNRykhOs/mjxUZnyWcHLcVNshZgsrLSsl95g76mpOapBi8mLyc4/CDk337Kuw5QVYt55vEPOfw==","signatures":[{"sig":"MEYCIQD4O9ww92pm6UmDFhAU4WRV050UPXYpuoBHEKCVuV6+uAIhAKiOCj/ObZ78Rxzqjmb+3gjFbyTki8omxp0kD+C1WZo0","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":146991},"type":"module","types":"./lib/index.d.ts","engines":{"node":"^20.19.0 || >=22.12.0"},"exports":{".":{"types":"./lib/index.d.ts","import":"./lib/index.js"},"./globals":{"types":"./lib/globals.d.ts","default":"./lib/index.js"}},"gitHead":"e487e67bb560fe6dd355c7ed59b2fc8b954835af","scripts":{"dev":"node scripts/frameseq.mjs dev slides.ts","test":"npm run build && node scripts/theme-test.mjs && node scripts/smoke-test.mjs && node scripts/beamer-smoke-test.mjs && node scripts/minimal-academic-smoke-test.mjs","build":"npm run build:package && npm run build:demo","check":"tsc --noEmit","prepack":"npm run build:package","preview":"vite preview","frameseq":"node scripts/frameseq.mjs","build:demo":"tsc --noEmit && vite build","export:pdf":"node scripts/frameseq.mjs pdf slides.ts --output output/pdf/frameseq.pdf","pack:check":"node scripts/package-test.mjs","build:package":"vite build --config vite.lib.config.ts && tsc -p tsconfig.publish.json","release:check":"npm test && npm run pack:check"},"_npmUser":{"name":"pride7","email":"xsfeng07@gmail.com"},"_npmVersion":"11.14.0","description":"Build presentations like interfaces with a linear TypeScript DSL.","directories":{},"_nodeVersion":"24.14.0","dependencies":{"vite":"^7.0.0","katex":"^0.16.22","puppeteer":"^24.16.0"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org"},"_hasShrinkwrap":false,"devDependencies":{"typescript":"^5.8.3","@types/node":"^24.0.0","@types/katex":"^0.16.7"},"_npmOperationalInternal":{"tmp":"tmp/frameseq_0.4.0_1784647056639_0.5729979758304511","host":"s3://npm-registry-packages-npm-production"}},"0.5.0":{"name":"@pride7/frameseq","version":"0.5.0","keywords":["slides","presentation","typescript","pdf","dsl"],"license":"MIT","_id":"@pride7/frameseq@0.5.0","maintainers":[{"name":"pride7","email":"xsfeng07@gmail.com"}],"bin":{"frameseq":"scripts/frameseq.mjs"},"dist":{"shasum":"1b0252c5dc0b4a1ab889e17557b767aa93f79a80","tarball":"https://registry.npmjs.org/@pride7/frameseq/-/frameseq-0.5.0.tgz","fileCount":36,"integrity":"sha512-9UFcHgw6ezyWddI5yII8LBRsxBCmS4YjuZx/Sx2OV0MHA+4phCYQTCyo2nYGxHiHCtnU1il60Wj8PK6HwHQR7w==","signatures":[{"sig":"MEUCICkC1a7JhMNHHqkcM+DR7bClcSB3OEx07EE42cbxKjv6AiEAtUwnNDDQVnNwSgHEo6jrp5F4gK33gO+1G4R9XHCZY/o=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":149824},"type":"module","types":"./lib/index.d.ts","engines":{"node":"^20.19.0 || >=22.12.0"},"exports":{".":{"types":"./lib/index.d.ts","import":"./lib/index.js"},"./globals":{"types":"./lib/globals.d.ts","default":"./lib/index.js"}},"gitHead":"159836dcb0459e4db2180095a9a538184fd637d1","scripts":{"dev":"node scripts/frameseq.mjs dev slides.ts","test":"npm run build && node scripts/theme-test.mjs && node scripts/smoke-test.mjs && node scripts/beamer-smoke-test.mjs && node scripts/minimal-academic-smoke-test.mjs","build":"npm run build:package && npm run build:demo","check":"tsc --noEmit","prepack":"npm run build:package","preview":"vite preview","frameseq":"node scripts/frameseq.mjs","build:demo":"tsc --noEmit && vite build","export:pdf":"node scripts/frameseq.mjs pdf slides.ts --output output/pdf/frameseq.pdf","pack:check":"node scripts/package-test.mjs","build:package":"vite build --config vite.lib.config.ts && tsc -p tsconfig.publish.json","release:check":"npm test && npm run pack:check"},"_npmUser":{"name":"pride7","email":"xsfeng07@gmail.com"},"_npmVersion":"11.14.0","description":"Build presentations like interfaces with a linear TypeScript DSL.","directories":{},"_nodeVersion":"24.14.0","dependencies":{"vite":"^7.0.0","katex":"^0.16.22","puppeteer":"^24.16.0","tailwindcss":"^4.3.3","@tailwindcss/vite":"^4.3.3"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org"},"_hasShrinkwrap":false,"devDependencies":{"typescript":"^5.8.3","@types/node":"^24.0.0","@types/katex":"^0.16.7"},"_npmOperationalInternal":{"tmp":"tmp/frameseq_0.5.0_1784648596734_0.14071020632015263","host":"s3://npm-registry-packages-npm-production"}},"0.5.1":{"name":"@pride7/frameseq","version":"0.5.1","keywords":["slides","presentation","typescript","pdf","dsl"],"license":"MIT","_id":"@pride7/frameseq@0.5.1","maintainers":[{"name":"pride7","email":"xsfeng07@gmail.com"}],"bin":{"frameseq":"scripts/frameseq.mjs"},"dist":{"shasum":"0ad3f7901ba643e8f6926e51a82a09ad9b9f5356","tarball":"https://registry.npmjs.org/@pride7/frameseq/-/frameseq-0.5.1.tgz","fileCount":36,"integrity":"sha512-0ysfrg7MKwo0Z7Fdr8IXRYmuzucX8pbSbPNngtTqS3LlDlzy+2FpHkNbullptA7a04i3ZQXM3Ark5HomyoeQZA==","signatures":[{"sig":"MEYCIQCuL1GXsO7KlJcaquMrFQsZhCUZ5qkzKMDtl1+9shIYOgIhAK4y2X68VPkp/g8sL/TevOfmbTx75noz5x/xvG9RnOLf","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":149971},"type":"module","types":"./lib/index.d.ts","engines":{"node":"^20.19.0 || >=22.12.0"},"exports":{".":{"types":"./lib/index.d.ts","import":"./lib/index.js"},"./globals":{"types":"./lib/globals.d.ts","default":"./lib/index.js"}},"gitHead":"6a5fd5383ecd07dca1f56f90ffe341c585321387","scripts":{"dev":"node scripts/frameseq.mjs dev slides.ts","test":"npm run build && node scripts/theme-test.mjs && node scripts/smoke-test.mjs && node scripts/beamer-smoke-test.mjs && node scripts/minimal-academic-smoke-test.mjs","build":"npm run build:package && npm run build:demo","check":"tsc --noEmit","prepack":"npm run build:package","preview":"vite preview","frameseq":"node scripts/frameseq.mjs","build:demo":"tsc --noEmit && vite build","export:pdf":"node scripts/frameseq.mjs pdf slides.ts --output output/pdf/frameseq.pdf","pack:check":"node scripts/package-test.mjs","build:package":"vite build --config vite.lib.config.ts && tsc -p tsconfig.publish.json","release:check":"npm test && npm run pack:check"},"_npmUser":{"name":"pride7","email":"xsfeng07@gmail.com"},"_npmVersion":"11.14.0","description":"Build presentations like interfaces with a linear TypeScript DSL.","directories":{},"_nodeVersion":"24.14.0","dependencies":{"vite":"^7.0.0","katex":"^0.16.22","puppeteer":"^24.16.0","tailwindcss":"^4.3.3","@tailwindcss/vite":"^4.3.3"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org"},"_hasShrinkwrap":false,"devDependencies":{"typescript":"^5.8.3","@types/node":"^24.0.0","@types/katex":"^0.16.7"},"_npmOperationalInternal":{"tmp":"tmp/frameseq_0.5.1_1784650225697_0.5019839308947804","host":"s3://npm-registry-packages-npm-production"}},"0.6.0":{"name":"@pride7/frameseq","version":"0.6.0","keywords":["slides","presentation","typescript","ai","typst","html","pdf","dsl"],"license":"MIT","_id":"@pride7/frameseq@0.6.0","maintainers":[{"name":"pride7","email":"xsfeng07@gmail.com"}],"bin":{"frameseq":"scripts/frameseq.mjs"},"dist":{"shasum":"6ce31d18c06b6ba35efb50fffa1de0db09aaa846","tarball":"https://registry.npmjs.org/@pride7/frameseq/-/frameseq-0.6.0.tgz","fileCount":37,"integrity":"sha512-+zF4E3cvETbFVVC+Pl1V5yOre7RFuEfzwt6fv0yZyYrJBzJp9OGFOS8UajGKMdPuBzPt6HjnYE0EBWr9SkJ8Dw==","signatures":[{"sig":"MEUCIQC2WU4SMh1Gqn4xEizCaZAp5kpN5kWsDQAAfVFKqLoh9AIgc7PvDKO1oWvqkp+i3qwRxGtUnVGlpgtLFf1B45Ez0G8=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":166430},"type":"module","types":"./lib/index.d.ts","engines":{"node":"^20.19.0 || >=22.12.0"},"exports":{".":{"types":"./lib/index.d.ts","import":"./lib/index.js"},"./globals":{"types":"./lib/globals.d.ts","default":"./lib/index.js"}},"gitHead":"6b01a2a343ce64ef59a6f1327f7d19635e0e508a","scripts":{"dev":"node scripts/frameseq.mjs dev slides.ts","test":"npm run build && node scripts/theme-test.mjs && node scripts/smoke-test.mjs && node scripts/beamer-smoke-test.mjs && node scripts/minimal-academic-smoke-test.mjs","build":"npm run build:package && npm run build:demo","check":"tsc --noEmit","prepack":"npm run build:package","preview":"vite preview","frameseq":"node scripts/frameseq.mjs","build:demo":"tsc --noEmit && vite build","export:pdf":"node scripts/frameseq.mjs pdf slides.ts --output output/pdf/frameseq.pdf","pack:check":"node scripts/package-test.mjs","build:package":"vite build --config vite.lib.config.ts && tsc -p tsconfig.publish.json","release:check":"npm test && npm run pack:check"},"_npmUser":{"name":"pride7","email":"xsfeng07@gmail.com"},"_npmVersion":"11.14.0","description":"Build editable, AI-friendly presentations with a linear TypeScript DSL.","directories":{},"_nodeVersion":"24.14.0","dependencies":{"vite":"^7.0.0","katex":"^0.16.22","puppeteer":"^24.16.0","typescript":"^5.8.3","tailwindcss":"^4.3.3","@tailwindcss/vite":"^4.3.3"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org"},"_hasShrinkwrap":false,"devDependencies":{"@types/node":"^24.0.0","@types/katex":"^0.16.7","@myriaddreamin/typst-ts-node-compiler":"^0.7.0"},"peerDependencies":{"@myriaddreamin/typst-ts-node-compiler":"^0.7.0"},"peerDependenciesMeta":{"@myriaddreamin/typst-ts-node-compiler":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/frameseq_0.6.0_1784654335870_0.7803150118311044","host":"s3://npm-registry-packages-npm-production"}},"0.7.0":{"name":"@pride7/frameseq","version":"0.7.0","keywords":["slides","presentation","typescript","ai","typst","html","pdf","dsl"],"license":"MIT","_id":"@pride7/frameseq@0.7.0","maintainers":[{"name":"pride7","email":"xsfeng07@gmail.com"}],"bin":{"frameseq":"scripts/frameseq.mjs"},"dist":{"shasum":"a5d8f1b68a1e5dee50aa2e64f04ff95f4af9426e","tarball":"https://registry.npmjs.org/@pride7/frameseq/-/frameseq-0.7.0.tgz","fileCount":38,"integrity":"sha512-LoIbg/X+QymuPB8Q4PF+vyCwIDAP0w1hnqPiOQfSLG2OxlJdeCqkxr4EyO4MjUDtVxJCj26oCUnpz+O9ItBM8A==","signatures":[{"sig":"MEYCIQDDvQVf1FCbLLee7/aj9t9V+YeYA+8HuH3tAxFjaXD5fAIhAJTxGsM8Mm+CV4354JylDZ1+y8+MRm8f4Yor1L1OKBgf","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":178796},"type":"module","types":"./lib/index.d.ts","engines":{"node":"^20.19.0 || >=22.12.0"},"exports":{".":{"types":"./lib/index.d.ts","import":"./lib/index.js"},"./globals":{"types":"./lib/globals.d.ts","default":"./lib/index.js"}},"gitHead":"7cde40ac5427c4fd4bee95d77f218c81e1be8b8a","scripts":{"dev":"node scripts/frameseq.mjs dev slides.ts","test":"npm run build && node scripts/theme-test.mjs && node scripts/smoke-test.mjs && node scripts/beamer-smoke-test.mjs && node scripts/minimal-academic-smoke-test.mjs","build":"npm run build:package && npm run build:demo","check":"tsc --noEmit","prepack":"npm run build:package","preview":"vite preview","frameseq":"node scripts/frameseq.mjs","build:demo":"tsc --noEmit && vite build","export:pdf":"node scripts/frameseq.mjs pdf slides.ts --output output/pdf/frameseq.pdf","pack:check":"node scripts/package-test.mjs","build:package":"vite build --config vite.lib.config.ts && tsc -p tsconfig.publish.json","release:check":"npm test && npm run pack:check"},"_npmUser":{"name":"pride7","email":"xsfeng07@gmail.com"},"_npmVersion":"11.14.0","description":"Build editable, AI-friendly presentations with a linear TypeScript DSL.","directories":{},"_nodeVersion":"24.14.0","dependencies":{"vite":"^7.0.0","katex":"^0.16.22","puppeteer":"^24.16.0","typescript":"^5.8.3","tailwindcss":"^4.3.3","@tailwindcss/vite":"^4.3.3"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org"},"_hasShrinkwrap":false,"devDependencies":{"@types/node":"^24.0.0","@types/katex":"^0.16.7","@myriaddreamin/typst-ts-node-compiler":"^0.7.0"},"peerDependencies":{"@myriaddreamin/typst-ts-node-compiler":"^0.7.0"},"peerDependenciesMeta":{"@myriaddreamin/typst-ts-node-compiler":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/frameseq_0.7.0_1784655309718_0.5461915838025158","host":"s3://npm-registry-packages-npm-production"}},"0.8.0":{"name":"@pride7/frameseq","version":"0.8.0","keywords":["slides","presentation","typescript","ai","typst","html","pdf","dsl"],"license":"MIT","_id":"@pride7/frameseq@0.8.0","maintainers":[{"name":"pride7","email":"xsfeng07@gmail.com"}],"bin":{"frameseq":"scripts/frameseq.mjs"},"dist":{"shasum":"38f5f58b8ecf18ba9f3f98d7bd40bd10f78784c7","tarball":"https://registry.npmjs.org/@pride7/frameseq/-/frameseq-0.8.0.tgz","fileCount":39,"integrity":"sha512-lUQT0DGAHOoo9vNehsJFQ+2mfXQsQiWvlwBtOqW7bWc5dG9yh7eh0liMhDcsOa7z/Go0Me/5iFBLihrkGwwGGQ==","signatures":[{"sig":"MEQCIGAUmcymOOh8bMWGkJMyo7jn27OxBay3XsVaXPT5kE1tAiArddLYkjJvPLxZ7as7mtA0sRuj3wKQGOppiznb2JdAvA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":205346},"type":"module","types":"./lib/index.d.ts","engines":{"node":"^20.19.0 || >=22.12.0"},"exports":{".":{"types":"./lib/index.d.ts","import":"./lib/index.js"},"./globals":{"types":"./lib/globals.d.ts","default":"./lib/index.js"}},"gitHead":"12bd5f11a45462a977fa2ca7061cfe20729c97b7","scripts":{"dev":"node scripts/frameseq.mjs dev slides.ts","test":"npm run build && node scripts/theme-test.mjs && node scripts/smoke-test.mjs && node scripts/beamer-smoke-test.mjs && node scripts/minimal-academic-smoke-test.mjs","build":"npm run build:package && npm run build:demo","check":"tsc --noEmit","prepack":"npm run build:package","preview":"vite preview","frameseq":"node scripts/frameseq.mjs","build:demo":"tsc --noEmit && vite build","export:pdf":"node scripts/frameseq.mjs pdf slides.ts --output output/pdf/frameseq.pdf","pack:check":"node scripts/package-test.mjs","build:package":"vite build --config vite.lib.config.ts && tsc -p tsconfig.publish.json","release:check":"npm test && npm run pack:check"},"_npmUser":{"name":"pride7","email":"xsfeng07@gmail.com"},"_npmVersion":"11.14.0","description":"Build editable, AI-friendly presentations with a linear TypeScript DSL.","directories":{},"_nodeVersion":"24.14.0","dependencies":{"vite":"^7.0.0","katex":"^0.16.22","puppeteer":"^24.16.0","typescript":"^5.8.3","tailwindcss":"^4.3.3","@tailwindcss/vite":"^4.3.3"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org"},"_hasShrinkwrap":false,"devDependencies":{"@types/node":"^24.0.0","@types/katex":"^0.16.7","@myriaddreamin/typst-ts-node-compiler":"^0.7.0"},"peerDependencies":{"@myriaddreamin/typst-ts-node-compiler":"^0.7.0"},"peerDependenciesMeta":{"@myriaddreamin/typst-ts-node-compiler":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/frameseq_0.8.0_1784657497928_0.3415496934716342","host":"s3://npm-registry-packages-npm-production"}},"0.9.0":{"name":"@pride7/frameseq","version":"0.9.0","keywords":["slides","presentation","typescript","ai","typst","html","pdf","dsl"],"license":"MIT","_id":"@pride7/frameseq@0.9.0","maintainers":[{"name":"pride7","email":"xsfeng07@gmail.com"}],"bin":{"frameseq":"scripts/frameseq.mjs"},"dist":{"shasum":"8bd66df514139e3d64616214c9bdef32bdeae8ea","tarball":"https://registry.npmjs.org/@pride7/frameseq/-/frameseq-0.9.0.tgz","fileCount":40,"integrity":"sha512-drhN6qbsWIQIsQLtofyL6oMmQjnLWl51MGfiH0ckrB+C66f+dvt8elSY6pZGotWtucjlVAvAO9Ut4BEs0IqUTQ==","signatures":[{"sig":"MEUCIQC9XmqqaI1l9tPQ38QmuJ3NgBMau0hmhs2iIR6qc5BeAgIgX4DUf4EXUr+I2Z6UJ15psU+cb7RGvRmLgnIqKj04XjM=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":220596},"type":"module","types":"./lib/index.d.ts","engines":{"node":"^20.19.0 || >=22.12.0"},"exports":{".":{"types":"./lib/index.d.ts","import":"./lib/index.js"},"./globals":{"types":"./lib/globals.d.ts","default":"./lib/index.js"}},"gitHead":"f38776425e343d6d3b96fedb26eecd179be5e2a9","scripts":{"dev":"node scripts/frameseq.mjs dev slides.ts","test":"npm run build && node scripts/theme-test.mjs && node scripts/smoke-test.mjs && node scripts/beamer-smoke-test.mjs && node scripts/minimal-academic-smoke-test.mjs && node scripts/layout-check-test.mjs","build":"npm run build:package && npm run build:demo","check":"tsc --noEmit","prepack":"npm run build:package","preview":"vite preview","frameseq":"node scripts/frameseq.mjs","build:demo":"tsc --noEmit && vite build","export:pdf":"node scripts/frameseq.mjs pdf slides.ts --output output/pdf/frameseq.pdf","pack:check":"node scripts/package-test.mjs","check:layout":"node scripts/frameseq.mjs check slides.ts","build:package":"vite build --config vite.lib.config.ts && tsc -p tsconfig.publish.json","release:check":"npm test && npm run pack:check"},"_npmUser":{"name":"pride7","email":"xsfeng07@gmail.com"},"_npmVersion":"11.14.0","description":"Build editable, AI-friendly presentations with a linear TypeScript DSL.","directories":{},"_nodeVersion":"24.14.0","dependencies":{"vite":"^7.0.0","katex":"^0.16.22","puppeteer":"^24.16.0","typescript":"^5.8.3","tailwindcss":"^4.3.3","@tailwindcss/vite":"^4.3.3"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org"},"_hasShrinkwrap":false,"devDependencies":{"@types/node":"^24.0.0","@types/katex":"^0.16.7","@myriaddreamin/typst-ts-node-compiler":"^0.7.0"},"peerDependencies":{"@myriaddreamin/typst-ts-node-compiler":"^0.7.0"},"peerDependenciesMeta":{"@myriaddreamin/typst-ts-node-compiler":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/frameseq_0.9.0_1784658549302_0.4300297605886769","host":"s3://npm-registry-packages-npm-production"}},"0.10.0":{"name":"@pride7/frameseq","version":"0.10.0","keywords":["slides","presentation","typescript","ai","typst","html","pdf","dsl"],"license":"MIT","_id":"@pride7/frameseq@0.10.0","maintainers":[{"name":"pride7","email":"xsfeng07@gmail.com"}],"bin":{"frameseq":"scripts/frameseq.mjs"},"dist":{"shasum":"ad13670c88b1bb3aed0e664c5ea4830cd7300185","tarball":"https://registry.npmjs.org/@pride7/frameseq/-/frameseq-0.10.0.tgz","fileCount":41,"integrity":"sha512-XM8dycVP4M9oreJoTHst3gXRVBt4nm8QFlxUy+B1LDmtoVel50Jv9hx8Y42tajFaHmM2lCVBQYFcGehTkylInQ==","signatures":[{"sig":"MEYCIQDcDSxfQooCkSIIQnhxOn+O0TsPG7wVVcOsNT5egmu8HQIhAJlgC2n5Vtz5wuVU1/xNa4B7DOz0dKa7KSKkM2+lmGwo","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":229272},"type":"module","types":"./lib/index.d.ts","engines":{"node":"^20.19.0 || >=22.12.0"},"exports":{".":{"types":"./lib/index.d.ts","import":"./lib/index.js"},"./globals":{"types":"./lib/globals.d.ts","default":"./lib/index.js"}},"gitHead":"f93c624272e5b6cd80975d84a4ab77ca7b4310bc","scripts":{"dev":"node scripts/frameseq.mjs dev slides.ts","test":"npm run build && node scripts/theme-test.mjs && node scripts/smoke-test.mjs && node scripts/beamer-smoke-test.mjs && node scripts/minimal-academic-smoke-test.mjs && node scripts/layout-check-test.mjs && node scripts/single-file-test.mjs","build":"npm run build:package && npm run build:demo","check":"tsc --noEmit","prepack":"npm run build:package","preview":"vite preview","frameseq":"node scripts/frameseq.mjs","build:demo":"tsc --noEmit && vite build","export:pdf":"node scripts/frameseq.mjs pdf slides.ts --output output/pdf/frameseq.pdf","pack:check":"node scripts/package-test.mjs","check:layout":"node scripts/frameseq.mjs check slides.ts","build:package":"vite build --config vite.lib.config.ts && tsc -p tsconfig.publish.json","release:check":"npm test && npm run pack:check"},"_npmUser":{"name":"pride7","email":"xsfeng07@gmail.com"},"_npmVersion":"11.14.0","description":"Build editable, AI-friendly presentations with a linear TypeScript DSL.","directories":{},"_nodeVersion":"24.14.0","dependencies":{"vite":"^7.0.0","katex":"^0.16.22","puppeteer":"^24.16.0","typescript":"^5.8.3","tailwindcss":"^4.3.3","@tailwindcss/vite":"^4.3.3"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org"},"_hasShrinkwrap":false,"devDependencies":{"@types/node":"^24.0.0","@types/katex":"^0.16.7","@myriaddreamin/typst-ts-node-compiler":"^0.7.0"},"peerDependencies":{"@myriaddreamin/typst-ts-node-compiler":"^0.7.0"},"peerDependenciesMeta":{"@myriaddreamin/typst-ts-node-compiler":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/frameseq_0.10.0_1784678428244_0.16595769299133578","host":"s3://npm-registry-packages-npm-production"}},"0.11.0":{"name":"@pride7/frameseq","version":"0.11.0","keywords":["slides","presentation","typescript","ai","typst","html","pdf","dsl"],"license":"MIT","_id":"@pride7/frameseq@0.11.0","maintainers":[{"name":"pride7","email":"xsfeng07@gmail.com"}],"homepage":"https://github.com/pride7/frameseq#readme","bugs":{"url":"https://github.com/pride7/frameseq/issues"},"bin":{"frameseq":"scripts/frameseq.mjs"},"dist":{"shasum":"722d3c40e608b6af8bdbd68dd24855cc4505a88b","tarball":"https://registry.npmjs.org/@pride7/frameseq/-/frameseq-0.11.0.tgz","fileCount":41,"integrity":"sha512-QOYekxQjPtlK0LiPbV6wzIwZBsjM58slsytwYuIaN6vkSjFA4taOorYr+1WxQ4VB5fktFId1qgjTSOrtgTe+Lw==","signatures":[{"sig":"MEYCIQCCqMZLnVw1Dl/tcTJH+2rODy0jQkLM2CjfrkW+Qah91gIhAMa0OAv0SiEk1nUu3/sSR/4DNqs8JMxyYY2uO943I4r0","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":256497},"type":"module","types":"./lib/index.d.ts","engines":{"node":"^20.19.0 || >=22.12.0"},"exports":{".":{"types":"./lib/index.d.ts","import":"./lib/index.js"},"./globals":{"types":"./lib/globals.d.ts","default":"./lib/index.js"}},"gitHead":"db63c167611e4d0a7b676c4eaedafb1804eba255","scripts":{"dev":"node scripts/frameseq.mjs dev slides.ts","test":"npm run build && node scripts/theme-test.mjs && node scripts/smoke-test.mjs && node scripts/beamer-smoke-test.mjs && node scripts/minimal-academic-smoke-test.mjs && node scripts/layout-check-test.mjs && node scripts/single-file-test.mjs && node scripts/remote-control-test.mjs","build":"npm run build:package && npm run build:demo","check":"tsc --noEmit","prepack":"npm run build:package","present":"node scripts/frameseq.mjs dev slides.ts --remote","preview":"vite preview","frameseq":"node scripts/frameseq.mjs","build:demo":"tsc --noEmit && vite build","export:pdf":"node scripts/frameseq.mjs pdf slides.ts --output output/pdf/frameseq.pdf","pack:check":"node scripts/package-test.mjs","check:layout":"node scripts/frameseq.mjs check slides.ts","build:package":"vite build --config vite.lib.config.ts && tsc -p tsconfig.publish.json","release:check":"npm test && npm run pack:check"},"_npmUser":{"name":"pride7","email":"xsfeng07@gmail.com"},"repository":{"url":"git+https://github.com/pride7/frameseq.git","type":"git"},"_npmVersion":"11.14.0","description":"Build editable, AI-friendly presentations with a linear TypeScript DSL.","directories":{},"_nodeVersion":"24.14.0","dependencies":{"vite":"^7.0.0","katex":"^0.16.22","qrcode":"^1.5.4","puppeteer":"^24.16.0","typescript":"^5.8.3","tailwindcss":"^4.3.3","@tailwindcss/vite":"^4.3.3"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org"},"_hasShrinkwrap":false,"devDependencies":{"@types/node":"^24.0.0","@types/katex":"^0.16.7","@types/qrcode":"^1.5.6","@myriaddreamin/typst-ts-node-compiler":"^0.7.0"},"peerDependencies":{"@myriaddreamin/typst-ts-node-compiler":"^0.7.0"},"peerDependenciesMeta":{"@myriaddreamin/typst-ts-node-compiler":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/frameseq_0.11.0_1784681870074_0.8462301328704371","host":"s3://npm-registry-packages-npm-production"}},"0.12.0":{"name":"@pride7/frameseq","version":"0.12.0","keywords":["slides","presentation","typescript","ai","typst","html","pdf","dsl"],"license":"MIT","_id":"@pride7/frameseq@0.12.0","maintainers":[{"name":"pride7","email":"xsfeng07@gmail.com"}],"homepage":"https://github.com/pride7/frameseq#readme","bugs":{"url":"https://github.com/pride7/frameseq/issues"},"bin":{"frameseq":"scripts/frameseq.mjs"},"dist":{"shasum":"9bb8f06b48de1590c865c275c2fd366154fd4755","tarball":"https://registry.npmjs.org/@pride7/frameseq/-/frameseq-0.12.0.tgz","fileCount":43,"integrity":"sha512-Uv3h5r1LooMSSGUyIKtgBIfBkwlVNhPe2ToUMhETwVhkh0QhZcHSMUYH7UPCP5rdVTIEig3DcZffS1lzreZ2cw==","signatures":[{"sig":"MEUCIHVaJsZo00HFan+i2Bgt6p61/ygXHHINDrPJF5VJFKWqAiEAliR/cBCRkgqzYs5WClH9h2gBWXkuz6Ao4Wwg9PQgX7A=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":282243},"type":"module","types":"./lib/index.d.ts","engines":{"node":"^20.19.0 || >=22.12.0"},"exports":{".":{"types":"./lib/index.d.ts","import":"./lib/index.js"},"./globals":{"types":"./lib/globals.d.ts","default":"./lib/index.js"}},"gitHead":"f86a77ba5a70b5d79dd434e4a1bfd393d0fefbc3","scripts":{"dev":"node scripts/frameseq.mjs dev slides.ts","pptx":"node scripts/frameseq.mjs pptx slides.ts","test":"npm run build && node scripts/theme-test.mjs && node scripts/smoke-test.mjs && node scripts/beamer-smoke-test.mjs && node scripts/minimal-academic-smoke-test.mjs && node scripts/layout-check-test.mjs && node scripts/single-file-test.mjs && node scripts/remote-control-test.mjs && node scripts/pptx-test.mjs","build":"npm run build:package && npm run build:demo","check":"tsc --noEmit","prepack":"npm run build:package","present":"node scripts/frameseq.mjs dev slides.ts --remote","preview":"vite preview","frameseq":"node scripts/frameseq.mjs","build:demo":"tsc --noEmit && vite build","export:pdf":"node scripts/frameseq.mjs pdf slides.ts --output output/pdf/frameseq.pdf","pack:check":"node scripts/package-test.mjs","export:pptx":"node scripts/frameseq.mjs pptx slides.ts --output output/pptx/frameseq.pptx","check:layout":"node scripts/frameseq.mjs check slides.ts","build:package":"vite build --config vite.lib.config.ts && tsc -p tsconfig.publish.json","release:check":"npm test && npm run pack:check"},"_npmUser":{"name":"pride7","email":"xsfeng07@gmail.com"},"repository":{"url":"git+https://github.com/pride7/frameseq.git","type":"git"},"_npmVersion":"11.14.0","description":"Build editable, AI-friendly presentations with a linear TypeScript DSL.","directories":{},"_nodeVersion":"24.14.0","dependencies":{"vite":"^7.0.0","katex":"^0.16.22","qrcode":"^1.5.4","pptxgenjs":"^4.0.1","puppeteer":"^24.16.0","typescript":"^5.8.3","tailwindcss":"^4.3.3","@tailwindcss/vite":"^4.3.3"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org"},"_hasShrinkwrap":false,"devDependencies":{"jszip":"^3.10.1","@types/node":"^24.0.0","@types/katex":"^0.16.7","@types/qrcode":"^1.5.6","@myriaddreamin/typst-ts-node-compiler":"^0.7.0"},"peerDependencies":{"@myriaddreamin/typst-ts-node-compiler":"^0.7.0"},"peerDependenciesMeta":{"@myriaddreamin/typst-ts-node-compiler":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/frameseq_0.12.0_1784683820107_0.20889619823697947","host":"s3://npm-registry-packages-npm-production"}},"0.13.0":{"name":"@pride7/frameseq","version":"0.13.0","keywords":["slides","presentation","typescript","ai","typst","html","pdf","dsl"],"license":"MIT","_id":"@pride7/frameseq@0.13.0","maintainers":[{"name":"pride7","email":"xsfeng07@gmail.com"}],"homepage":"https://github.com/pride7/frameseq#readme","bugs":{"url":"https://github.com/pride7/frameseq/issues"},"bin":{"frameseq":"scripts/frameseq.mjs"},"dist":{"shasum":"51b98a62506d21dd120fcc3c5ff8a1d2ac3b3b56","tarball":"https://registry.npmjs.org/@pride7/frameseq/-/frameseq-0.13.0.tgz","fileCount":44,"integrity":"sha512-JySwFxuYM5KtrN1T7zVYfxlVa0Zw9/7Phfb2kjuhLA5GnAl+0yvG9cg6a268GUtoKh01HPM0UAgFIpBUXZYWqg==","signatures":[{"sig":"MEMCHybRlhwqXhP+uLvOIEm9TL6n04jw+wyGpidP4g7oY38CIBFYf7wgnsp+YSjvrSEbVzyxu3SjKgRqhhklEBj5trC5","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":289608},"type":"module","types":"./lib/index.d.ts","engines":{"node":"^20.19.0 || >=22.12.0"},"exports":{".":{"types":"./lib/index.d.ts","import":"./lib/index.js"},"./globals":{"types":"./lib/globals.d.ts","default":"./lib/index.js"}},"gitHead":"8e4cf01981ed73e9baa9a09ed1d4c37cbe45dcc6","scripts":{"dev":"node scripts/frameseq.mjs dev slides.ts","pptx":"node scripts/frameseq.mjs pptx slides.ts","test":"npm run build && node scripts/theme-test.mjs && node scripts/smoke-test.mjs && node scripts/beamer-smoke-test.mjs && node scripts/minimal-academic-smoke-test.mjs && node scripts/layout-check-test.mjs && node scripts/single-file-test.mjs && node scripts/remote-control-test.mjs && node scripts/pptx-test.mjs && npm run gallery:check","build":"npm run build:package && npm run build:demo","check":"tsc --noEmit","prepack":"npm run build:package","present":"node scripts/frameseq.mjs dev slides.ts --remote","preview":"vite preview","frameseq":"node scripts/frameseq.mjs","build:demo":"tsc --noEmit && vite build","export:pdf":"node scripts/frameseq.mjs pdf slides.ts --output output/pdf/frameseq.pdf","pack:check":"node scripts/package-test.mjs","export:pptx":"node scripts/frameseq.mjs pptx slides.ts --output output/pptx/frameseq.pptx","check:layout":"node scripts/frameseq.mjs check slides.ts","build:gallery":"node scripts/gallery-build.mjs","build:package":"vite build --config vite.lib.config.ts && tsc -p tsconfig.publish.json","gallery:check":"npm run build:gallery && node scripts/gallery-test.mjs","release:check":"npm test && npm run pack:check"},"_npmUser":{"name":"pride7","email":"xsfeng07@gmail.com"},"repository":{"url":"git+https://github.com/pride7/frameseq.git","type":"git"},"_npmVersion":"11.14.0","description":"Build editable, AI-friendly presentations with a linear TypeScript DSL.","directories":{},"_nodeVersion":"24.14.0","dependencies":{"vite":"^7.0.0","katex":"^0.16.22","qrcode":"^1.5.4","pptxgenjs":"^4.0.1","puppeteer":"^24.16.0","typescript":"^5.8.3","tailwindcss":"^4.3.3","@tailwindcss/vite":"^4.3.3"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org"},"_hasShrinkwrap":false,"devDependencies":{"jszip":"^3.10.1","@types/node":"^24.0.0","@types/katex":"^0.16.7","@types/qrcode":"^1.5.6","@myriaddreamin/typst-ts-node-compiler":"^0.7.0"},"peerDependencies":{"@myriaddreamin/typst-ts-node-compiler":"^0.7.0"},"peerDependenciesMeta":{"@myriaddreamin/typst-ts-node-compiler":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/frameseq_0.13.0_1784685400456_0.9583386853463391","host":"s3://npm-registry-packages-npm-production"}},"0.13.1":{"name":"@pride7/frameseq","version":"0.13.1","keywords":["slides","presentation","typescript","ai","typst","html","pdf","dsl"],"license":"MIT","_id":"@pride7/frameseq@0.13.1","maintainers":[{"name":"pride7","email":"xsfeng07@gmail.com"}],"homepage":"https://github.com/pride7/frameseq#readme","bugs":{"url":"https://github.com/pride7/frameseq/issues"},"bin":{"frameseq":"scripts/frameseq.mjs"},"dist":{"shasum":"9379cfdefd48f9ab5e73d072ff5cba99c8baf63a","tarball":"https://registry.npmjs.org/@pride7/frameseq/-/frameseq-0.13.1.tgz","fileCount":45,"integrity":"sha512-LrwuKlLEPWWK08l0eJMWb/JyXXUzbheKD4Nhi4SWlXgDANJT3BBvPAeo/pYZyV4IcHPfxzD6XoOmQ3ECvBFp4g==","signatures":[{"sig":"MEUCIDpL9ckVZz+ZSkeWppfV+Qij1u3gNb74F8Fbmmlbcj/fAiEAhJ2HIOKrLj75fdfwonWdrUsmxJV1yxptyEK6jR+84yo=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":290929},"type":"module","types":"./lib/index.d.ts","engines":{"node":"^20.19.0 || >=22.12.0"},"exports":{".":{"types":"./lib/index.d.ts","import":"./lib/index.js"},"./globals":{"types":"./lib/globals.d.ts","default":"./lib/index.js"}},"gitHead":"64d50651aa12c2faa62421c4a9032ff5dea7e4d1","scripts":{"dev":"node scripts/frameseq.mjs dev slides.ts","pptx":"node scripts/frameseq.mjs pptx slides.ts","test":"npm run build && node scripts/puppeteer-options-test.mjs && node scripts/theme-test.mjs && node scripts/smoke-test.mjs && node scripts/beamer-smoke-test.mjs && node scripts/minimal-academic-smoke-test.mjs && node scripts/layout-check-test.mjs && node scripts/single-file-test.mjs && node scripts/remote-control-test.mjs && node scripts/pptx-test.mjs && npm run gallery:check","build":"npm run build:package && npm run build:demo","check":"tsc --noEmit","prepack":"npm run build:package","present":"node scripts/frameseq.mjs dev slides.ts --remote","preview":"vite preview --open","frameseq":"node scripts/frameseq.mjs","build:demo":"tsc --noEmit && vite build","export:pdf":"node scripts/frameseq.mjs pdf slides.ts --output output/pdf/frameseq.pdf","pack:check":"node scripts/package-test.mjs","export:pptx":"node scripts/frameseq.mjs pptx slides.ts --output output/pptx/frameseq.pptx","check:layout":"node scripts/frameseq.mjs check slides.ts","build:gallery":"npm run build:package && node scripts/gallery-build.mjs","build:package":"vite build --config vite.lib.config.ts && tsc -p tsconfig.publish.json","gallery:check":"npm run build:gallery && node scripts/gallery-test.mjs","release:check":"npm test && npm run pack:check"},"_npmUser":{"name":"pride7","email":"xsfeng07@gmail.com"},"repository":{"url":"git+https://github.com/pride7/frameseq.git","type":"git"},"_npmVersion":"11.14.0","description":"Build editable, AI-friendly presentations with a linear TypeScript DSL.","directories":{},"_nodeVersion":"24.14.0","dependencies":{"vite":"^7.0.0","katex":"^0.16.22","qrcode":"^1.5.4","pptxgenjs":"^4.0.1","puppeteer":"^24.16.0","typescript":"^5.8.3","tailwindcss":"^4.3.3","@tailwindcss/vite":"^4.3.3"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org"},"_hasShrinkwrap":false,"devDependencies":{"jszip":"^3.10.1","@types/node":"^24.0.0","@types/katex":"^0.16.7","@types/qrcode":"^1.5.6","@myriaddreamin/typst-ts-node-compiler":"^0.7.0"},"peerDependencies":{"@myriaddreamin/typst-ts-node-compiler":"^0.7.0"},"peerDependenciesMeta":{"@myriaddreamin/typst-ts-node-compiler":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/frameseq_0.13.1_1784687169515_0.6776987864661563","host":"s3://npm-registry-packages-npm-production"}},"0.14.0":{"name":"@pride7/frameseq","version":"0.14.0","keywords":["slides","presentation","typescript","ai","typst","html","pdf","dsl"],"license":"MIT","_id":"@pride7/frameseq@0.14.0","maintainers":[{"name":"pride7","email":"xsfeng07@gmail.com"}],"homepage":"https://github.com/pride7/frameseq#readme","bugs":{"url":"https://github.com/pride7/frameseq/issues"},"bin":{"frameseq":"scripts/frameseq.mjs"},"dist":{"shasum":"cf6d799b23d9fb6189d4bb2dea011faa3f196d84","tarball":"https://registry.npmjs.org/@pride7/frameseq/-/frameseq-0.14.0.tgz","fileCount":45,"integrity":"sha512-Mw2GPQ/2RuY1cCQPfA9usoJ/LkY+meAgyRqgSVk807rIG0CzEYTcIbD5iM7PKeGtSpzArpGZMPAu5iIW65LYwg==","signatures":[{"sig":"MEUCIQCLl4l/t2MF7cdT5YoXzFotlSw0zBX6kAKJDKIwXS9YQAIgIEvazsWsO7xk+3Y2Q/eIyntkWvAm2QE1VSoZcRbIry0=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":291872},"type":"module","types":"./lib/index.d.ts","engines":{"node":"^20.19.0 || >=22.12.0"},"exports":{".":{"types":"./lib/index.d.ts","import":"./lib/index.js"},"./globals":{"types":"./lib/globals.d.ts","default":"./lib/index.js"}},"gitHead":"2e09c64228b8fafb63925c8a31cd0bdbee2f7a06","scripts":{"dev":"node scripts/frameseq.mjs dev slides.ts","pptx":"node scripts/frameseq.mjs pptx slides.ts","test":"npm run build && node scripts/puppeteer-options-test.mjs && node scripts/theme-test.mjs && node scripts/smoke-test.mjs && node scripts/beamer-smoke-test.mjs && node scripts/minimal-academic-smoke-test.mjs && node scripts/layout-check-test.mjs && node scripts/single-file-test.mjs && node scripts/remote-control-test.mjs && node scripts/pptx-test.mjs && npm run gallery:check","build":"npm run build:package && npm run build:demo","check":"tsc --noEmit","prepack":"npm run build:package","present":"node scripts/frameseq.mjs dev slides.ts --remote","preview":"vite preview --open","frameseq":"node scripts/frameseq.mjs","build:demo":"tsc --noEmit && vite build","export:pdf":"node scripts/frameseq.mjs pdf slides.ts --output output/pdf/frameseq.pdf","pack:check":"node scripts/package-test.mjs","export:pptx":"node scripts/frameseq.mjs pptx slides.ts --output output/pptx/frameseq.pptx","check:layout":"node scripts/frameseq.mjs check slides.ts","build:gallery":"npm run build:package && node scripts/gallery-build.mjs","build:package":"vite build --config vite.lib.config.ts && tsc -p tsconfig.publish.json","gallery:check":"npm run build:gallery && node scripts/gallery-test.mjs","release:check":"npm test && npm run pack:check"},"_npmUser":{"name":"pride7","email":"xsfeng07@gmail.com"},"repository":{"url":"git+https://github.com/pride7/frameseq.git","type":"git"},"_npmVersion":"11.14.0","description":"Build editable, AI-friendly presentations with a linear TypeScript DSL.","directories":{},"_nodeVersion":"24.14.0","dependencies":{"vite":"^7.0.0","katex":"^0.16.22","qrcode":"^1.5.4","pptxgenjs":"^4.0.1","puppeteer":"^24.16.0","typescript":"^5.8.3","tailwindcss":"^4.3.3","@tailwindcss/vite":"^4.3.3"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org"},"_hasShrinkwrap":false,"devDependencies":{"jszip":"^3.10.1","@types/node":"^24.0.0","@types/katex":"^0.16.7","@types/qrcode":"^1.5.6","@myriaddreamin/typst-ts-node-compiler":"^0.7.0"},"peerDependencies":{"@myriaddreamin/typst-ts-node-compiler":"^0.7.0"},"peerDependenciesMeta":{"@myriaddreamin/typst-ts-node-compiler":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/frameseq_0.14.0_1784693875170_0.20360064817913326","host":"s3://npm-registry-packages-npm-production"}},"0.15.0":{"name":"@pride7/frameseq","version":"0.15.0","keywords":["slides","presentation","typescript","ai","typst","html","pdf","dsl"],"license":"MIT","_id":"@pride7/frameseq@0.15.0","maintainers":[{"name":"pride7","email":"xsfeng07@gmail.com"}],"homepage":"https://github.com/pride7/frameseq#readme","bugs":{"url":"https://github.com/pride7/frameseq/issues"},"bin":{"frameseq":"scripts/frameseq.mjs"},"dist":{"shasum":"d34384bda601b418763ffae90f4fef710b908b71","tarball":"https://registry.npmjs.org/@pride7/frameseq/-/frameseq-0.15.0.tgz","fileCount":47,"integrity":"sha512-VNqBaIQM3B+yHtIUPEKh26SL07Dpg+NibZ7jUy2AmQSws5wSj5FRGcWl39AixqIcF7hGbhlF4bYr189kIfYPDQ==","signatures":[{"sig":"MEQCIEEx2Ggrm1XIIgH+WpPlhP4ymdYQNzMFeAjVc3PBhCoQAiA25qxYQ1NmieRSQzKx6B6JY+zAS7DlxvexsG+gY3eWIQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":304304},"type":"module","types":"./lib/index.d.ts","engines":{"node":"^20.19.0 || >=22.12.0"},"exports":{".":{"types":"./lib/index.d.ts","import":"./lib/index.js"},"./globals":{"types":"./lib/globals.d.ts","default":"./lib/index.js"}},"gitHead":"b701425c0a361154ffd5d3e93299e4f6fe526b0a","scripts":{"dev":"node scripts/frameseq.mjs dev slides.ts","pptx":"node scripts/frameseq.mjs pptx slides.ts","test":"npm run build && node scripts/puppeteer-options-test.mjs && node scripts/theme-test.mjs && node scripts/smoke-test.mjs && node scripts/beamer-smoke-test.mjs && node scripts/minimal-academic-smoke-test.mjs && node scripts/layout-check-test.mjs && node scripts/single-file-test.mjs && node scripts/remote-control-test.mjs && node scripts/pptx-test.mjs && npm run gallery:check","build":"npm run build:package && npm run build:demo","check":"tsc --noEmit","prepack":"npm run build:package","present":"node scripts/frameseq.mjs dev slides.ts --remote","preview":"vite preview --open","frameseq":"node scripts/frameseq.mjs","build:demo":"tsc --noEmit && vite build","export:pdf":"node scripts/frameseq.mjs pdf slides.ts --output output/pdf/frameseq.pdf","pack:check":"node scripts/package-test.mjs","export:pptx":"node scripts/frameseq.mjs pptx slides.ts --output output/pptx/frameseq.pptx","check:layout":"node scripts/frameseq.mjs check slides.ts","build:gallery":"npm run build:package && node scripts/gallery-build.mjs","build:package":"vite build --config vite.lib.config.ts && tsc -p tsconfig.publish.json","gallery:check":"npm run build:gallery && node scripts/gallery-test.mjs","release:check":"npm test && npm run pack:check"},"_npmUser":{"name":"pride7","email":"xsfeng07@gmail.com"},"repository":{"url":"git+https://github.com/pride7/frameseq.git","type":"git"},"_npmVersion":"11.14.0","description":"Build editable, AI-friendly presentations with a linear TypeScript DSL.","directories":{},"_nodeVersion":"24.14.0","dependencies":{"vite":"^7.0.0","katex":"^0.16.22","qrcode":"^1.5.4","pptxgenjs":"^4.0.1","puppeteer":"^24.16.0","typescript":"^5.8.3","tailwindcss":"^4.3.3","@tailwindcss/vite":"^4.3.3"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org"},"_hasShrinkwrap":false,"devDependencies":{"jszip":"^3.10.1","@types/node":"^24.0.0","@types/katex":"^0.16.7","@types/qrcode":"^1.5.6","@myriaddreamin/typst-ts-node-compiler":"^0.7.0"},"peerDependencies":{"@myriaddreamin/typst-ts-node-compiler":"^0.7.0"},"peerDependenciesMeta":{"@myriaddreamin/typst-ts-node-compiler":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/frameseq_0.15.0_1784695469052_0.9869580363939316","host":"s3://npm-registry-packages-npm-production"}},"0.16.0":{"name":"@pride7/frameseq","version":"0.16.0","keywords":["slides","presentation","typescript","ai","typst","html","pdf","dsl"],"license":"MIT","_id":"@pride7/frameseq@0.16.0","maintainers":[{"name":"pride7","email":"xsfeng07@gmail.com"}],"homepage":"https://github.com/pride7/frameseq#readme","bugs":{"url":"https://github.com/pride7/frameseq/issues"},"bin":{"frameseq":"scripts/frameseq.mjs"},"dist":{"shasum":"81ac74fa0123083fac6f0e9a9d4b868a1693a168","tarball":"https://registry.npmjs.org/@pride7/frameseq/-/frameseq-0.16.0.tgz","fileCount":48,"integrity":"sha512-VwkOVo71+lyPa8UVj/2uzc13goBPoxuRJNlz1wkgZz34vaMXa2MNkQlx9guOWsZjn7W4bzWyayPjVxuBEsfCXA==","signatures":[{"sig":"MEUCIENdl0pcUqbkwD8pVzCa0LKh1Dss8tcBHz1vnrGDr602AiEA5PPW7DojHzUhGdTlSu+d340KXl+NaXM3/5UixckDayw=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@pride7%2fframeseq@0.16.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":308321},"type":"module","types":"./lib/index.d.ts","engines":{"node":"^20.19.0 || >=22.12.0"},"exports":{".":{"types":"./lib/index.d.ts","import":"./lib/index.js"},"./globals":{"types":"./lib/globals.d.ts","default":"./lib/index.js"}},"gitHead":"7a11757a7560d20c7241e7fe47afe85a0a4987d1","scripts":{"dev":"node scripts/frameseq.mjs dev slides.ts","pptx":"node scripts/frameseq.mjs pptx slides.ts","test":"npm run build && node scripts/puppeteer-options-test.mjs && node scripts/theme-test.mjs && node scripts/smoke-test.mjs && node scripts/beamer-smoke-test.mjs && node scripts/minimal-academic-smoke-test.mjs && node scripts/layout-check-test.mjs && node scripts/single-file-test.mjs && node scripts/remote-control-test.mjs && node scripts/pptx-test.mjs && npm run gallery:check","build":"npm run build:package && npm run build:demo","check":"tsc --noEmit","prepack":"npm run build:package","present":"node scripts/frameseq.mjs dev slides.ts --remote","preview":"vite preview --open","frameseq":"node scripts/frameseq.mjs","build:demo":"tsc --noEmit && vite build","export:pdf":"node scripts/frameseq.mjs pdf slides.ts --output output/pdf/frameseq.pdf","pack:check":"node scripts/package-test.mjs","export:pptx":"node scripts/frameseq.mjs pptx slides.ts --output output/pptx/frameseq.pptx","check:layout":"node scripts/frameseq.mjs check slides.ts","build:gallery":"npm run build:package && node scripts/gallery-build.mjs","build:package":"vite build --config vite.lib.config.ts && tsc -p tsconfig.publish.json","gallery:check":"npm run build:gallery && node scripts/gallery-test.mjs","release:check":"npm test && npm run pack:check","release:tag-check":"node scripts/release-tag-test.mjs"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:778ccbb5-0cdb-40c4-bc7a-b37d3e572213"}},"repository":{"url":"git+https://github.com/pride7/frameseq.git","type":"git"},"_npmVersion":"11.18.0","description":"Build editable, AI-friendly presentations with a linear TypeScript DSL.","directories":{},"_nodeVersion":"24.18.0","dependencies":{"vite":"^7.0.0","katex":"^0.16.22","qrcode":"^1.5.4","pptxgenjs":"^4.0.1","puppeteer":"^24.16.0","typescript":"^5.8.3","tailwindcss":"^4.3.3","@tailwindcss/vite":"^4.3.3"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org"},"_hasShrinkwrap":false,"devDependencies":{"jszip":"^3.10.1","@types/node":"^24.0.0","@types/katex":"^0.16.7","@types/qrcode":"^1.5.6","@myriaddreamin/typst-ts-node-compiler":"^0.7.0"},"peerDependencies":{"@myriaddreamin/typst-ts-node-compiler":"^0.7.0"},"peerDependenciesMeta":{"@myriaddreamin/typst-ts-node-compiler":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/frameseq_0.16.0_1784697260135_0.47870096455194955","host":"s3://npm-registry-packages-npm-production"}},"0.16.1":{"name":"@pride7/frameseq","version":"0.16.1","keywords":["slides","presentation","typescript","ai","typst","html","pdf","dsl"],"license":"MIT","_id":"@pride7/frameseq@0.16.1","maintainers":[{"name":"pride7","email":"xsfeng07@gmail.com"}],"homepage":"https://github.com/pride7/frameseq#readme","bugs":{"url":"https://github.com/pride7/frameseq/issues"},"bin":{"frameseq":"scripts/frameseq.mjs"},"dist":{"shasum":"240109f6b56b618422be51cd764aba930eaccdeb","tarball":"https://registry.npmjs.org/@pride7/frameseq/-/frameseq-0.16.1.tgz","fileCount":48,"integrity":"sha512-BdPjtcwxwZBNi9v5WxqSICHyZ6rJsuvKRZKCL+tTxQQp9ZFr9Pc290ACmcgZrh0Kaxp8c4tJ0D25cywKIx6myg==","signatures":[{"sig":"MEYCIQCNuWIluzLkuWPEdvCEb6XpZo0OEoHJx1FLpVrYsARGLgIhANJBUifHqbfvqrwV0QET6L86vDwjgPHKN66C7PcpB6Ea","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@pride7%2fframeseq@0.16.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":309191},"type":"module","types":"./lib/index.d.ts","engines":{"node":"^20.19.0 || >=22.12.0"},"exports":{".":{"types":"./lib/index.d.ts","import":"./lib/index.js"},"./globals":{"types":"./lib/globals.d.ts","default":"./lib/index.js"}},"gitHead":"b4e81a2732a3b5fbe88657c643d8882ed0ed1b10","scripts":{"dev":"node scripts/frameseq.mjs dev slides.ts","pptx":"node scripts/frameseq.mjs pptx slides.ts","test":"npm run build && node scripts/puppeteer-options-test.mjs && node scripts/theme-test.mjs && node scripts/smoke-test.mjs && node scripts/beamer-smoke-test.mjs && node scripts/minimal-academic-smoke-test.mjs && node scripts/layout-check-test.mjs && node scripts/single-file-test.mjs && node scripts/remote-control-test.mjs && node scripts/pptx-test.mjs && npm run gallery:check","build":"npm run build:package && npm run build:demo","check":"tsc --noEmit","prepack":"npm run build:package","present":"node scripts/frameseq.mjs dev slides.ts --remote","preview":"vite preview --open","frameseq":"node scripts/frameseq.mjs","build:demo":"tsc --noEmit && vite build","export:pdf":"node scripts/frameseq.mjs pdf slides.ts --output output/pdf/frameseq.pdf","pack:check":"node scripts/package-test.mjs","export:pptx":"node scripts/frameseq.mjs pptx slides.ts --output output/pptx/frameseq.pptx","check:layout":"node scripts/frameseq.mjs check slides.ts","build:gallery":"npm run build:package && node scripts/gallery-build.mjs","build:package":"vite build --config vite.lib.config.ts && tsc -p tsconfig.publish.json","gallery:check":"npm run build:gallery && node scripts/gallery-test.mjs","release:check":"npm test && npm run pack:check","release:tag-check":"node scripts/release-tag-test.mjs"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:778ccbb5-0cdb-40c4-bc7a-b37d3e572213"}},"repository":{"url":"git+https://github.com/pride7/frameseq.git","type":"git"},"_npmVersion":"11.18.0","description":"Build editable, AI-friendly presentations with a linear TypeScript DSL.","directories":{},"_nodeVersion":"24.18.0","dependencies":{"vite":"^7.0.0","katex":"^0.16.22","qrcode":"^1.5.4","pptxgenjs":"^4.0.1","puppeteer":"^24.16.0","typescript":"^5.8.3","tailwindcss":"^4.3.3","@tailwindcss/vite":"^4.3.3"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org"},"_hasShrinkwrap":false,"devDependencies":{"jszip":"^3.10.1","@types/node":"^24.0.0","@types/katex":"^0.16.7","@types/qrcode":"^1.5.6","@myriaddreamin/typst-ts-node-compiler":"^0.7.0"},"peerDependencies":{"@myriaddreamin/typst-ts-node-compiler":"^0.7.0"},"peerDependenciesMeta":{"@myriaddreamin/typst-ts-node-compiler":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/frameseq_0.16.1_1784698371069_0.0981576416277492","host":"s3://npm-registry-packages-npm-production"}},"0.17.0":{"name":"@pride7/frameseq","version":"0.17.0","keywords":["slides","presentation","typescript","ai","typst","html","pdf","dsl"],"license":"MIT","_id":"@pride7/frameseq@0.17.0","maintainers":[{"name":"pride7","email":"xsfeng07@gmail.com"}],"homepage":"https://github.com/pride7/frameseq#readme","bugs":{"url":"https://github.com/pride7/frameseq/issues"},"bin":{"frameseq":"scripts/frameseq.mjs"},"dist":{"shasum":"77e376acf8ae4848ac7ab9c928cb60c6d9b7890c","tarball":"https://registry.npmjs.org/@pride7/frameseq/-/frameseq-0.17.0.tgz","fileCount":48,"integrity":"sha512-BGx4bCok0XqCPfiTPzTcX5YugtGdqydTDh6rhKZQ/I2eVR62BcawZAlOlWUHfDc6JcvQSvfXHw+vynEw0Q5LMQ==","signatures":[{"sig":"MEQCIBU7EpyDG/h4O7ewC+DZLFFHKekJo3RqQ3mohL7fOAayAiAEpfOKlZ1P6XZLhb9Ufz3xbwMqIrYClFms9fvR9AXNPg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@pride7%2fframeseq@0.17.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":313556},"type":"module","types":"./lib/index.d.ts","engines":{"node":"^20.19.0 || >=22.12.0"},"exports":{".":{"types":"./lib/index.d.ts","import":"./lib/index.js"},"./globals":{"types":"./lib/globals.d.ts","default":"./lib/index.js"}},"gitHead":"57189c264b21b57e969ff417e451af96e74c5ebd","scripts":{"dev":"node scripts/frameseq.mjs dev slides.ts","pptx":"node scripts/frameseq.mjs pptx slides.ts","test":"npm run build && node scripts/puppeteer-options-test.mjs && node scripts/theme-test.mjs && node scripts/smoke-test.mjs && node scripts/beamer-smoke-test.mjs && node scripts/minimal-academic-smoke-test.mjs && node scripts/layout-check-test.mjs && node scripts/single-file-test.mjs && node scripts/remote-control-test.mjs && node scripts/pptx-test.mjs && npm run gallery:check","build":"npm run build:package && npm run build:demo","check":"tsc --noEmit","prepack":"npm run build:package","present":"node scripts/frameseq.mjs dev slides.ts --remote","preview":"vite preview --open","frameseq":"node scripts/frameseq.mjs","build:demo":"tsc --noEmit && vite build","export:pdf":"node scripts/frameseq.mjs pdf slides.ts --output output/pdf/frameseq.pdf","pack:check":"node scripts/package-test.mjs","export:pptx":"node scripts/frameseq.mjs pptx slides.ts --output output/pptx/frameseq.pptx","check:layout":"node scripts/frameseq.mjs check slides.ts","build:gallery":"npm run build:package && node scripts/gallery-build.mjs","build:package":"vite build --config vite.lib.config.ts && tsc -p tsconfig.publish.json","gallery:check":"npm run build:gallery && node scripts/gallery-test.mjs","release:check":"npm test && npm run pack:check","release:tag-check":"node scripts/release-tag-test.mjs"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:778ccbb5-0cdb-40c4-bc7a-b37d3e572213"}},"repository":{"url":"git+https://github.com/pride7/frameseq.git","type":"git"},"_npmVersion":"11.18.0","description":"Build editable, AI-friendly presentations with a linear TypeScript DSL.","directories":{},"_nodeVersion":"24.18.0","dependencies":{"vite":"^7.0.0","katex":"^0.16.22","qrcode":"^1.5.4","pptxgenjs":"^4.0.1","puppeteer":"^24.16.0","typescript":"^5.8.3","tailwindcss":"^4.3.3","@tailwindcss/vite":"^4.3.3"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org"},"_hasShrinkwrap":false,"devDependencies":{"jszip":"^3.10.1","@types/node":"^24.0.0","@types/katex":"^0.16.7","@types/qrcode":"^1.5.6","@myriaddreamin/typst-ts-node-compiler":"^0.7.0"},"peerDependencies":{"@myriaddreamin/typst-ts-node-compiler":"^0.7.0"},"peerDependenciesMeta":{"@myriaddreamin/typst-ts-node-compiler":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/frameseq_0.17.0_1784699702742_0.5841814027479504","host":"s3://npm-registry-packages-npm-production"}},"0.18.0":{"name":"@pride7/frameseq","version":"0.18.0","keywords":["slides","presentation","typescript","ai","typst","latex","html","pdf","dsl"],"license":"MIT","_id":"@pride7/frameseq@0.18.0","maintainers":[{"name":"pride7","email":"xsfeng07@gmail.com"}],"homepage":"https://github.com/pride7/frameseq#readme","bugs":{"url":"https://github.com/pride7/frameseq/issues"},"bin":{"frameseq":"scripts/frameseq.mjs"},"dist":{"shasum":"dbaad9f01515e5cfd40a0081916e0c8fd9512cf6","tarball":"https://registry.npmjs.org/@pride7/frameseq/-/frameseq-0.18.0.tgz","fileCount":49,"integrity":"sha512-rB8tLhZDFlXzsygPOenLGUkJs6SlVyfYSiRiX1tz7XA1LIKrOsBU4KvcM/55O/ACsz1xZjSLgC9E2l8XrIyWhQ==","signatures":[{"sig":"MEUCIQD09HOm+hdpzdBlCIXY7yCJC8FfrjacysQRob6R++vXvQIga0so8FQeEITXFoA4+L2uuVy7oG2DnzyLvjX49+wYzug=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@pride7%2fframeseq@0.18.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":332202},"type":"module","types":"./lib/index.d.ts","engines":{"node":"^20.19.0 || >=22.12.0"},"exports":{".":{"types":"./lib/index.d.ts","import":"./lib/index.js"},"./globals":{"types":"./lib/globals.d.ts","default":"./lib/index.js"}},"gitHead":"b95773956b2772e695d6cea9384712100e5d44e5","scripts":{"dev":"node scripts/frameseq.mjs dev slides.ts","pptx":"node scripts/frameseq.mjs pptx slides.ts","test":"npm run build && node scripts/puppeteer-options-test.mjs && node scripts/theme-test.mjs && node scripts/smoke-test.mjs && node scripts/beamer-smoke-test.mjs && node scripts/minimal-academic-smoke-test.mjs && node scripts/layout-check-test.mjs && node scripts/single-file-test.mjs && node scripts/remote-control-test.mjs && node scripts/pptx-test.mjs && npm run gallery:check","build":"npm run build:package && npm run build:demo","check":"tsc --noEmit","prepack":"npm run build:package","present":"node scripts/frameseq.mjs dev slides.ts --remote","preview":"vite preview --open","frameseq":"node scripts/frameseq.mjs","build:demo":"tsc --noEmit && vite build","export:pdf":"node scripts/frameseq.mjs pdf slides.ts --output output/pdf/frameseq.pdf","pack:check":"node scripts/package-test.mjs","export:pptx":"node scripts/frameseq.mjs pptx slides.ts --output output/pptx/frameseq.pptx","check:layout":"node scripts/frameseq.mjs check slides.ts","build:gallery":"npm run build:package && node scripts/gallery-build.mjs","build:package":"vite build --config vite.lib.config.ts && tsc -p tsconfig.publish.json","gallery:check":"npm run build:gallery && node scripts/gallery-test.mjs","release:check":"npm test && npm run pack:check","release:tag-check":"node scripts/release-tag-test.mjs"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:778ccbb5-0cdb-40c4-bc7a-b37d3e572213"}},"repository":{"url":"git+https://github.com/pride7/frameseq.git","type":"git"},"_npmVersion":"11.18.0","description":"Build editable, AI-friendly presentations with a linear TypeScript DSL.","directories":{},"_nodeVersion":"24.18.0","dependencies":{"vite":"^7.0.0","katex":"^0.16.22","qrcode":"^1.5.4","pptxgenjs":"^4.0.1","puppeteer":"^24.16.0","typescript":"^5.8.3","tailwindcss":"^4.3.3","@tailwindcss/vite":"^4.3.3"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org"},"_hasShrinkwrap":false,"devDependencies":{"jszip":"^3.10.1","@types/node":"^24.0.0","@types/katex":"^0.16.7","@types/qrcode":"^1.5.6","node-tectonic":"^1.0.1","@myriaddreamin/typst-ts-node-compiler":"^0.7.0"},"peerDependencies":{"node-tectonic":"^1.0.1","@myriaddreamin/typst-ts-node-compiler":"^0.7.0"},"peerDependenciesMeta":{"node-tectonic":{"optional":true},"@myriaddreamin/typst-ts-node-compiler":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/frameseq_0.18.0_1784702588158_0.46829982290232985","host":"s3://npm-registry-packages-npm-production"}},"0.19.0":{"name":"@pride7/frameseq","version":"0.19.0","keywords":["slides","presentation","typescript","ai","typst","latex","html","pdf","dsl"],"license":"MIT","_id":"@pride7/frameseq@0.19.0","maintainers":[{"name":"pride7","email":"xsfeng07@gmail.com"}],"homepage":"https://github.com/pride7/frameseq#readme","bugs":{"url":"https://github.com/pride7/frameseq/issues"},"bin":{"frameseq":"scripts/frameseq.mjs"},"dist":{"shasum":"ed9fbf50d060b4b3dac5dfa124a3305f9e8fc591","tarball":"https://registry.npmjs.org/@pride7/frameseq/-/frameseq-0.19.0.tgz","fileCount":51,"integrity":"sha512-0Jbj6/IIzz9EaJJxGakYNzbbiW3eDgNS7yTBH9xBd4kGQYse1qMvXSWjRDWmk5N2/boHfPJNoRFq3hRhZ+dAtA==","signatures":[{"sig":"MEUCIQCY6ydhDLbcmhtmq66tU1UC3S4GfFd4YdEqG4ksMA3W9QIgX/2QMjgUDoiMkPue8AdEjo0MBd51cm4opCAGlA+cQa0=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@pride7%2fframeseq@0.19.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":345473},"type":"module","types":"./lib/index.d.ts","engines":{"node":"^20.19.0 || >=22.12.0"},"exports":{".":{"types":"./lib/index.d.ts","import":"./lib/index.js"},"./globals":{"types":"./lib/globals.d.ts","default":"./lib/index.js"}},"gitHead":"96abc981f3aeaaebca5d682e83138b32f4f76d79","scripts":{"dev":"node scripts/frameseq.mjs dev slides.ts","pptx":"node scripts/frameseq.mjs pptx slides.ts","test":"npm run build && npm run vscode:check && node scripts/puppeteer-options-test.mjs && node scripts/theme-test.mjs && node scripts/smoke-test.mjs && node scripts/beamer-smoke-test.mjs && node scripts/minimal-academic-smoke-test.mjs && node scripts/layout-check-test.mjs && node scripts/single-file-test.mjs && node scripts/remote-control-test.mjs && node scripts/pptx-test.mjs && npm run gallery:check","build":"npm run build:package && npm run build:demo","check":"tsc --noEmit","prepack":"npm run build:package","present":"node scripts/frameseq.mjs dev slides.ts --remote","preview":"vite preview --open","frameseq":"node scripts/frameseq.mjs","build:demo":"tsc --noEmit && vite build","export:pdf":"node scripts/frameseq.mjs pdf slides.ts --output output/pdf/frameseq.pdf","pack:check":"node scripts/package-test.mjs","export:pptx":"node scripts/frameseq.mjs pptx slides.ts --output output/pptx/frameseq.pptx","check:layout":"node scripts/frameseq.mjs check slides.ts","vscode:check":"node scripts/inspect-test.mjs && npm ci --prefix packages/vscode-frameseq --ignore-scripts && npm --prefix packages/vscode-frameseq run check && node scripts/vscode-extension-test.mjs && node scripts/vscode-preview-test.mjs","build:gallery":"npm run build:package && node scripts/gallery-build.mjs","build:package":"vite build --config vite.lib.config.ts && tsc -p tsconfig.publish.json","gallery:check":"npm run build:gallery && node scripts/gallery-test.mjs","release:check":"npm test && npm run pack:check","vscode:package":"npm ci --prefix packages/vscode-frameseq --ignore-scripts && npm --prefix packages/vscode-frameseq run package","release:tag-check":"node scripts/release-tag-test.mjs"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:778ccbb5-0cdb-40c4-bc7a-b37d3e572213"}},"repository":{"url":"git+https://github.com/pride7/frameseq.git","type":"git"},"_npmVersion":"11.18.0","description":"Build editable, AI-friendly presentations with a linear TypeScript DSL.","directories":{},"_nodeVersion":"24.18.0","dependencies":{"vite":"^7.0.0","katex":"^0.16.22","qrcode":"^1.5.4","pptxgenjs":"^4.0.1","puppeteer":"^24.16.0","typescript":"^5.8.3","tailwindcss":"^4.3.3","@tailwindcss/vite":"^4.3.3"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org"},"_hasShrinkwrap":false,"devDependencies":{"jszip":"^3.10.1","@types/node":"^24.0.0","@types/katex":"^0.16.7","@types/qrcode":"^1.5.6","node-tectonic":"^1.0.1","@myriaddreamin/typst-ts-node-compiler":"^0.7.0"},"peerDependencies":{"node-tectonic":"^1.0.1","@myriaddreamin/typst-ts-node-compiler":"^0.7.0"},"peerDependenciesMeta":{"node-tectonic":{"optional":true},"@myriaddreamin/typst-ts-node-compiler":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/frameseq_0.19.0_1784708193329_0.28513191922175607","host":"s3://npm-registry-packages-npm-production"}},"0.20.0":{"name":"@pride7/frameseq","version":"0.20.0","keywords":["slides","presentation","typescript","ai","typst","latex","html","pdf","dsl"],"license":"MIT","_id":"@pride7/frameseq@0.20.0","maintainers":[{"name":"pride7","email":"xsfeng07@gmail.com"}],"homepage":"https://github.com/pride7/frameseq#readme","bugs":{"url":"https://github.com/pride7/frameseq/issues"},"bin":{"frameseq":"scripts/frameseq.mjs"},"dist":{"shasum":"b4ea33400397bc916a54fd4d54039cf51cd5c9a9","tarball":"https://registry.npmjs.org/@pride7/frameseq/-/frameseq-0.20.0.tgz","fileCount":51,"integrity":"sha512-1dqVdfCMi0MEuTG0xNoYx+pOwNtN44/W5PDIsItEweLn/q79y26XCGCBzI6pFBEGWX0l8IYCGcs+YgjqhInyig==","signatures":[{"sig":"MEQCIH7v+LUDs7CKVY8cgvQtWfONP3zauTlpOVKIyxgDnzYDAiAI1q45aQVTCztZ77FAlbCkkLy/y4HAUAFHQaHrwMQZmw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@pride7%2fframeseq@0.20.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":355918},"type":"module","types":"./lib/index.d.ts","engines":{"node":"^20.19.0 || >=22.12.0"},"exports":{".":{"types":"./lib/index.d.ts","import":"./lib/index.js"},"./globals":{"types":"./lib/globals.d.ts","default":"./lib/index.js"}},"gitHead":"30bca45ab0a99a491b785bf3f3e4f7ace2625496","scripts":{"dev":"node scripts/frameseq.mjs dev slides.ts","pptx":"node scripts/frameseq.mjs pptx slides.ts","test":"npm run build && node scripts/section-layout-test.mjs && npm run vscode:check && node scripts/puppeteer-options-test.mjs && node scripts/theme-test.mjs && node scripts/smoke-test.mjs && node scripts/beamer-smoke-test.mjs && node scripts/minimal-academic-smoke-test.mjs && node scripts/layout-check-test.mjs && node scripts/single-file-test.mjs && node scripts/remote-control-test.mjs && node scripts/pptx-test.mjs && npm run gallery:check","build":"npm run build:package && npm run build:demo","check":"tsc --noEmit","prepack":"npm run build:package","present":"node scripts/frameseq.mjs dev slides.ts --remote","preview":"vite preview --open","frameseq":"node scripts/frameseq.mjs","build:demo":"tsc --noEmit && vite build","export:pdf":"node scripts/frameseq.mjs pdf slides.ts --output output/pdf/frameseq.pdf","pack:check":"node scripts/package-test.mjs","export:pptx":"node scripts/frameseq.mjs pptx slides.ts --output output/pptx/frameseq.pptx","check:layout":"node scripts/frameseq.mjs check slides.ts","vscode:check":"node scripts/inspect-test.mjs && npm ci --prefix packages/vscode-frameseq --ignore-scripts && npm --prefix packages/vscode-frameseq run check && node scripts/vscode-extension-test.mjs && node scripts/vscode-preview-test.mjs","build:gallery":"npm run build:package && node scripts/gallery-build.mjs","build:package":"vite build --config vite.lib.config.ts && tsc -p tsconfig.publish.json","gallery:check":"npm run build:gallery && node scripts/gallery-test.mjs","release:check":"npm test && npm run pack:check","vscode:package":"npm ci --prefix packages/vscode-frameseq --ignore-scripts && npm --prefix packages/vscode-frameseq run package","release:tag-check":"node scripts/release-tag-test.mjs"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:778ccbb5-0cdb-40c4-bc7a-b37d3e572213"}},"repository":{"url":"git+https://github.com/pride7/frameseq.git","type":"git"},"_npmVersion":"11.18.0","description":"Build editable, AI-friendly presentations with a linear TypeScript DSL.","directories":{},"_nodeVersion":"24.18.0","dependencies":{"vite":"^7.0.0","katex":"^0.16.22","qrcode":"^1.5.4","pptxgenjs":"^4.0.1","puppeteer":"^24.16.0","typescript":"^5.8.3","tailwindcss":"^4.3.3","@tailwindcss/vite":"^4.3.3"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org"},"_hasShrinkwrap":false,"devDependencies":{"jszip":"^3.10.1","@types/node":"^24.0.0","@types/katex":"^0.16.7","@types/qrcode":"^1.5.6","node-tectonic":"^1.0.1","@myriaddreamin/typst-ts-node-compiler":"^0.7.0"},"peerDependencies":{"node-tectonic":"^1.0.1","@myriaddreamin/typst-ts-node-compiler":"^0.7.0"},"peerDependenciesMeta":{"node-tectonic":{"optional":true},"@myriaddreamin/typst-ts-node-compiler":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/frameseq_0.20.0_1784724237378_0.3809196256961751","host":"s3://npm-registry-packages-npm-production"}},"0.21.0":{"name":"@pride7/frameseq","version":"0.21.0","keywords":["slides","presentation","typescript","ai","typst","latex","html","pdf","dsl"],"license":"MIT","_id":"@pride7/frameseq@0.21.0","maintainers":[{"name":"pride7","email":"xsfeng07@gmail.com"}],"homepage":"https://github.com/pride7/frameseq#readme","bugs":{"url":"https://github.com/pride7/frameseq/issues"},"bin":{"frameseq":"scripts/frameseq.mjs"},"dist":{"shasum":"c789ab576eecc5cb577bcf2858143c4155849712","tarball":"https://registry.npmjs.org/@pride7/frameseq/-/frameseq-0.21.0.tgz","fileCount":53,"integrity":"sha512-uyxMGk9zd5eG7wzHh5tJxjrkf0/UeXEfLG4Md6dtCGlLQxvgwy+OSF03tNQjFIvhc4HGx8lIYQFqevwAZ3v1uQ==","signatures":[{"sig":"MEUCIQDnzCayr2ysDraufXelIe6FlohiSU0wsZFfEQ7SqkClPwIgUkbwGwfGVoeiO830EJdBYgJ59MxxXKFnJltBliuitVY=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":431615},"type":"module","types":"./lib/index.d.ts","engines":{"node":"^20.19.0 || >=22.12.0"},"exports":{".":{"types":"./lib/index.d.ts","import":"./lib/index.js"},"./globals":{"types":"./lib/globals.d.ts","default":"./lib/index.js"}},"gitHead":"4d25b19eecc847079a4e7231e0ffbbeaa6e0e1fe","scripts":{"dev":"node scripts/frameseq.mjs dev slides.ts","pptx":"node scripts/frameseq.mjs pptx slides.ts","test":"npm run build && npm run docs:check && node scripts/section-layout-test.mjs && npm run vscode:check && node scripts/puppeteer-options-test.mjs && node scripts/theme-test.mjs && node scripts/smoke-test.mjs && node scripts/beamer-smoke-test.mjs && node scripts/minimal-academic-smoke-test.mjs && node scripts/layout-check-test.mjs && node scripts/single-file-test.mjs && node scripts/remote-control-test.mjs && node scripts/pptx-test.mjs && node scripts/typst-export-test.mjs && npm run gallery:check","build":"npm run build:package && npm run build:demo","check":"tsc --noEmit","typst":"node scripts/frameseq.mjs typst slides.ts","prepack":"npm run build:package","present":"node scripts/frameseq.mjs dev slides.ts --remote","preview":"vite preview --open","frameseq":"node scripts/frameseq.mjs","build:demo":"tsc --noEmit && vite build","docs:check":"node scripts/docs-test.mjs","export:pdf":"node scripts/frameseq.mjs pdf slides.ts --output output/pdf/frameseq.pdf","pack:check":"node scripts/package-test.mjs","export:pptx":"node scripts/frameseq.mjs pptx slides.ts --output output/pptx/frameseq.pptx","check:layout":"node scripts/frameseq.mjs check slides.ts","export:typst":"node scripts/frameseq.mjs typst slides.ts --output output/typst/frameseq.typ","vscode:check":"node scripts/inspect-test.mjs && npm ci --prefix packages/vscode-frameseq --ignore-scripts && npm --prefix packages/vscode-frameseq run check && node scripts/vscode-extension-test.mjs && node scripts/vscode-preview-test.mjs","build:gallery":"npm run build:package && node scripts/gallery-build.mjs","build:package":"vite build --config vite.lib.config.ts && tsc -p tsconfig.publish.json","gallery:check":"npm run build:gallery && node scripts/gallery-test.mjs","release:check":"npm test && npm run pack:check","vscode:package":"npm ci --prefix packages/vscode-frameseq --ignore-scripts && npm --prefix packages/vscode-frameseq run package","preview:gallery":"npm run build:gallery && vite preview --outDir dist/gallery --open","release:tag-check":"node scripts/release-tag-test.mjs"},"_npmUser":{"name":"pride7","email":"xsfeng07@gmail.com"},"repository":{"url":"git+https://github.com/pride7/frameseq.git","type":"git"},"_npmVersion":"11.14.0","description":"Build editable, AI-friendly presentations with a linear TypeScript DSL.","directories":{},"_nodeVersion":"24.14.0","dependencies":{"vite":"^7.0.0","katex":"^0.16.22","qrcode":"^1.5.4","pptxgenjs":"^4.0.1","puppeteer":"^24.16.0","typescript":"^5.8.3","tailwindcss":"^4.3.3","@tailwindcss/vite":"^4.3.3"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org"},"_hasShrinkwrap":false,"devDependencies":{"jszip":"^3.10.1","marked":"^18.0.7","@types/node":"^24.0.0","@types/katex":"^0.16.7","@types/qrcode":"^1.5.6","node-tectonic":"^1.0.1","@myriaddreamin/typst-ts-node-compiler":"^0.7.0"},"peerDependencies":{"node-tectonic":"^1.0.1","@myriaddreamin/typst-ts-node-compiler":"^0.7.0"},"peerDependenciesMeta":{"node-tectonic":{"optional":true},"@myriaddreamin/typst-ts-node-compiler":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/frameseq_0.21.0_1784771157772_0.17567932880486592","host":"s3://npm-registry-packages-npm-production"}},"0.21.1":{"name":"@pride7/frameseq","version":"0.21.1","keywords":["slides","presentation","typescript","ai","typst","latex","html","pdf","dsl"],"license":"MIT","_id":"@pride7/frameseq@0.21.1","maintainers":[{"name":"pride7","email":"xsfeng07@gmail.com"}],"homepage":"https://github.com/pride7/frameseq#readme","bugs":{"url":"https://github.com/pride7/frameseq/issues"},"bin":{"frameseq":"scripts/frameseq.mjs"},"dist":{"shasum":"9de13ec65fe53f348c498b3f0c8a9de5d657855c","tarball":"https://registry.npmjs.org/@pride7/frameseq/-/frameseq-0.21.1.tgz","fileCount":53,"integrity":"sha512-TfCvlfSFUBO4hKvQjZfMgs+OHaC89A4hDTYIu0Dz3wnTidhW0zGMNv6yYg0GcZvUtiT558wxbZaKB5d/fB6j5w==","signatures":[{"sig":"MEUCIEnaNM1/B0geqIFnT1mdQxap9Uh7G2R0VhIUCZ1qe7PQAiEAkhj4janXpm1ClUzhN6tXimayFCcA6n1+Jg+naMc6has=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@pride7%2fframeseq@0.21.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":434432},"type":"module","types":"./lib/index.d.ts","engines":{"node":"^20.19.0 || >=22.12.0"},"exports":{".":{"types":"./lib/index.d.ts","import":"./lib/index.js"},"./globals":{"types":"./lib/globals.d.ts","default":"./lib/index.js"}},"gitHead":"9292bfaaec59aec32113fc971b164d6274b8fbbb","scripts":{"dev":"node scripts/frameseq.mjs dev slides.ts","pptx":"node scripts/frameseq.mjs pptx slides.ts","test":"npm run build && npm run docs:check && node scripts/section-layout-test.mjs && npm run vscode:check && node scripts/puppeteer-options-test.mjs && node scripts/theme-test.mjs && node scripts/smoke-test.mjs && node scripts/beamer-smoke-test.mjs && node scripts/minimal-academic-smoke-test.mjs && node scripts/layout-check-test.mjs && node scripts/single-file-test.mjs && node scripts/remote-control-test.mjs && node scripts/pptx-test.mjs && node scripts/typst-export-test.mjs && npm run gallery:check","build":"npm run build:package && npm run build:demo","check":"tsc --noEmit","typst":"node scripts/frameseq.mjs typst slides.ts","prepack":"npm run build:package","present":"node scripts/frameseq.mjs dev slides.ts --remote","preview":"vite preview --open","frameseq":"node scripts/frameseq.mjs","build:demo":"tsc --noEmit && vite build","docs:check":"node scripts/docs-test.mjs","export:pdf":"node scripts/frameseq.mjs pdf slides.ts --output output/pdf/frameseq.pdf","pack:check":"node scripts/package-test.mjs","export:pptx":"node scripts/frameseq.mjs pptx slides.ts --output output/pptx/frameseq.pptx","check:layout":"node scripts/frameseq.mjs check slides.ts","export:typst":"node scripts/frameseq.mjs typst slides.ts --output output/typst/frameseq.typ","vscode:check":"node scripts/inspect-test.mjs && npm ci --prefix packages/vscode-frameseq --ignore-scripts && npm --prefix packages/vscode-frameseq run check && node scripts/vscode-extension-test.mjs && node scripts/vscode-preview-test.mjs","build:gallery":"npm run build:package && node scripts/gallery-build.mjs","build:package":"vite build --config vite.lib.config.ts && tsc -p tsconfig.publish.json","gallery:check":"npm run build:gallery && node scripts/gallery-test.mjs","release:check":"npm test && npm run pack:check","vscode:package":"npm ci --prefix packages/vscode-frameseq --ignore-scripts && npm --prefix packages/vscode-frameseq run package","preview:gallery":"npm run build:gallery && vite preview --outDir dist/gallery --open","release:tag-check":"node scripts/release-tag-test.mjs"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:778ccbb5-0cdb-40c4-bc7a-b37d3e572213"}},"repository":{"url":"git+https://github.com/pride7/frameseq.git","type":"git"},"_npmVersion":"11.18.0","description":"Build editable, AI-friendly presentations with a linear TypeScript DSL.","directories":{},"_nodeVersion":"24.18.0","dependencies":{"vite":"^7.0.0","katex":"^0.16.22","qrcode":"^1.5.4","pptxgenjs":"^4.0.1","puppeteer":"^24.16.0","typescript":"^5.8.3","tailwindcss":"^4.3.3","@tailwindcss/vite":"^4.3.3"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org"},"_hasShrinkwrap":false,"devDependencies":{"jszip":"^3.10.1","marked":"^18.0.7","@types/node":"^24.0.0","@types/katex":"^0.16.7","@types/qrcode":"^1.5.6","node-tectonic":"^1.0.1","@myriaddreamin/typst-ts-node-compiler":"^0.7.0"},"peerDependencies":{"node-tectonic":"^1.0.1","@myriaddreamin/typst-ts-node-compiler":"^0.7.0"},"peerDependenciesMeta":{"node-tectonic":{"optional":true},"@myriaddreamin/typst-ts-node-compiler":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/frameseq_0.21.1_1784772082183_0.3991128838046394","host":"s3://npm-registry-packages-npm-production"}},"0.21.2":{"name":"@pride7/frameseq","version":"0.21.2","keywords":["slides","presentation","typescript","ai","typst","latex","html","pdf","dsl"],"license":"MIT","_id":"@pride7/frameseq@0.21.2","maintainers":[{"name":"pride7","email":"xsfeng07@gmail.com"}],"homepage":"https://github.com/pride7/frameseq#readme","bugs":{"url":"https://github.com/pride7/frameseq/issues"},"bin":{"frameseq":"scripts/frameseq.mjs"},"dist":{"shasum":"640902c9ca79c3659c4d9d8cdd2bea20a315bb8c","tarball":"https://registry.npmjs.org/@pride7/frameseq/-/frameseq-0.21.2.tgz","fileCount":53,"integrity":"sha512-HGVAvv/R+73ixoIC9kkGFVgjfamvIRnX9WvZmbt8LwUkshtYldMtMMtcUI5u13e+bP0Y6hzuUlGe6BOOKRdyQg==","signatures":[{"sig":"MEUCICEBjfzLneBVmb7lxiLL/YIOON/7VIqThWaKTytNDzIfAiEA082XXSjxtHtZi5pWi31tdp6h1Q7maInjU5RKQ7MiwY0=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@pride7%2fframeseq@0.21.2","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":435143},"type":"module","types":"./lib/index.d.ts","engines":{"node":"^20.19.0 || >=22.12.0"},"exports":{".":{"types":"./lib/index.d.ts","import":"./lib/index.js"},"./globals":{"types":"./lib/globals.d.ts","default":"./lib/index.js"}},"gitHead":"0191da51658316b8eaa5c6d09f0defa7ffa8ce18","scripts":{"dev":"node scripts/frameseq.mjs dev slides.ts","pptx":"node scripts/frameseq.mjs pptx slides.ts","test":"npm run build && npm run docs:check && node scripts/section-layout-test.mjs && npm run vscode:check && node scripts/puppeteer-options-test.mjs && node scripts/theme-test.mjs && node scripts/smoke-test.mjs && node scripts/beamer-smoke-test.mjs && node scripts/minimal-academic-smoke-test.mjs && node scripts/layout-check-test.mjs && node scripts/single-file-test.mjs && node scripts/remote-control-test.mjs && node scripts/pptx-test.mjs && node scripts/typst-export-test.mjs && npm run gallery:check","build":"npm run build:package && npm run build:demo","check":"tsc --noEmit","typst":"node scripts/frameseq.mjs typst slides.ts","prepack":"npm run build:package","present":"node scripts/frameseq.mjs dev slides.ts --remote","preview":"vite preview --open","frameseq":"node scripts/frameseq.mjs","build:demo":"tsc --noEmit && vite build","docs:check":"node scripts/docs-test.mjs","export:pdf":"node scripts/frameseq.mjs pdf slides.ts --output output/pdf/frameseq.pdf","pack:check":"node scripts/package-test.mjs","export:pptx":"node scripts/frameseq.mjs pptx slides.ts --output output/pptx/frameseq.pptx","check:layout":"node scripts/frameseq.mjs check slides.ts","export:typst":"node scripts/frameseq.mjs typst slides.ts --output output/typst/frameseq.typ","vscode:check":"node scripts/inspect-test.mjs && npm ci --prefix packages/vscode-frameseq --ignore-scripts && npm --prefix packages/vscode-frameseq run check && node scripts/vscode-extension-test.mjs && node scripts/vscode-preview-test.mjs","build:gallery":"npm run build:package && node scripts/gallery-build.mjs","build:package":"vite build --config vite.lib.config.ts && tsc -p tsconfig.publish.json","gallery:check":"npm run build:gallery && node scripts/gallery-test.mjs","release:check":"npm test && npm run pack:check","vscode:package":"npm ci --prefix packages/vscode-frameseq --ignore-scripts && npm --prefix packages/vscode-frameseq run package","preview:gallery":"npm run build:gallery && vite preview --outDir dist/gallery --open","release:tag-check":"node scripts/release-tag-test.mjs"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:778ccbb5-0cdb-40c4-bc7a-b37d3e572213"}},"repository":{"url":"git+https://github.com/pride7/frameseq.git","type":"git"},"_npmVersion":"11.18.0","description":"Build editable, AI-friendly presentations with a linear TypeScript DSL.","directories":{},"_nodeVersion":"24.18.0","dependencies":{"vite":"^7.0.0","katex":"^0.16.22","qrcode":"^1.5.4","pptxgenjs":"^4.0.1","puppeteer":"^24.16.0","typescript":"^5.8.3","tailwindcss":"^4.3.3","@tailwindcss/vite":"^4.3.3"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org"},"_hasShrinkwrap":false,"devDependencies":{"jszip":"^3.10.1","marked":"^18.0.7","@types/node":"^24.0.0","@types/katex":"^0.16.7","@types/qrcode":"^1.5.6","node-tectonic":"^1.0.1","@myriaddreamin/typst-ts-node-compiler":"^0.7.0"},"peerDependencies":{"node-tectonic":"^1.0.1","@myriaddreamin/typst-ts-node-compiler":"^0.7.0"},"peerDependenciesMeta":{"node-tectonic":{"optional":true},"@myriaddreamin/typst-ts-node-compiler":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/frameseq_0.21.2_1784773048260_0.8504852996991306","host":"s3://npm-registry-packages-npm-production"}},"0.22.0":{"name":"@pride7/frameseq","version":"0.22.0","keywords":["slides","presentation","typescript","ai","typst","latex","html","pdf","dsl"],"license":"MIT","_id":"@pride7/frameseq@0.22.0","maintainers":[{"name":"pride7","email":"xsfeng07@gmail.com"}],"homepage":"https://github.com/pride7/frameseq#readme","bugs":{"url":"https://github.com/pride7/frameseq/issues"},"bin":{"frameseq":"scripts/frameseq.mjs"},"dist":{"shasum":"c3a1bf0248efefd7f8fea4793b76d7063d78d906","tarball":"https://registry.npmjs.org/@pride7/frameseq/-/frameseq-0.22.0.tgz","fileCount":55,"integrity":"sha512-W1HkpNRA7FEUlfLBXV39c1SGcMt8QYWgHtpdhejYxp0JS3jFXOu5xsGsDPU50bHDZGv/2i99V0INg2e1mhPw7Q==","signatures":[{"sig":"MEYCIQCZTWALSn0edm9gmbgpZkrnygs4g93RUmL/1qcf8vdSMAIhAMQd29lCFmIQod1xV7FQYyDuRz7HKqlc6mWpoV8d/eWq","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@pride7%2fframeseq@0.22.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":442065},"type":"module","types":"./lib/index.d.ts","engines":{"node":"^20.19.0 || >=22.12.0"},"exports":{".":{"types":"./lib/index.d.ts","import":"./lib/index.js"},"./globals":{"types":"./lib/globals.d.ts","default":"./lib/index.js"}},"gitHead":"77a626cbcf97eb6c6bd4e5c27ed1e4f243056e0e","scripts":{"dev":"node scripts/frameseq.mjs dev slides.ts","pptx":"node scripts/frameseq.mjs pptx slides.ts","test":"npm run build && npm run docs:check && node scripts/section-layout-test.mjs && npm run vscode:check && node scripts/puppeteer-options-test.mjs && node scripts/theme-test.mjs && node scripts/smoke-test.mjs && node scripts/beamer-smoke-test.mjs && node scripts/minimal-academic-smoke-test.mjs && node scripts/layout-check-test.mjs && node scripts/single-file-test.mjs && node scripts/remote-control-test.mjs && node scripts/pptx-test.mjs && node scripts/typst-export-test.mjs && npm run gallery:check","build":"npm run build:package && npm run build:demo","check":"tsc --noEmit","typst":"node scripts/frameseq.mjs typst slides.ts","prepack":"npm run build:package","present":"node scripts/frameseq.mjs dev slides.ts --remote","preview":"vite preview --open","frameseq":"node scripts/frameseq.mjs","build:demo":"tsc --noEmit && vite build","docs:check":"node scripts/docs-test.mjs","export:pdf":"node scripts/frameseq.mjs pdf slides.ts --output output/pdf/frameseq.pdf","pack:check":"node scripts/package-test.mjs","export:pptx":"node scripts/frameseq.mjs pptx slides.ts --output output/pptx/frameseq.pptx","check:layout":"node scripts/frameseq.mjs check slides.ts","export:typst":"node scripts/frameseq.mjs typst slides.ts --output output/typst/frameseq.typ","vscode:check":"node scripts/inspect-test.mjs && npm ci --prefix packages/vscode-frameseq --ignore-scripts && npm --prefix packages/vscode-frameseq run check && node scripts/vscode-extension-test.mjs && node scripts/vscode-preview-test.mjs","build:gallery":"npm run build:package && node scripts/gallery-build.mjs","build:package":"vite build --config vite.lib.config.ts && tsc -p tsconfig.publish.json","gallery:check":"npm run build:gallery && node scripts/gallery-test.mjs","release:check":"npm test && npm run pack:check","vscode:package":"npm ci --prefix packages/vscode-frameseq --ignore-scripts && npm --prefix packages/vscode-frameseq run package","preview:gallery":"npm run build:gallery && vite preview --outDir dist/gallery --open","release:tag-check":"node scripts/release-tag-test.mjs"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:778ccbb5-0cdb-40c4-bc7a-b37d3e572213"}},"repository":{"url":"git+https://github.com/pride7/frameseq.git","type":"git"},"_npmVersion":"11.18.0","description":"Build editable, AI-friendly presentations with a linear TypeScript DSL.","directories":{},"_nodeVersion":"24.18.0","dependencies":{"vite":"^7.0.0","katex":"^0.16.22","qrcode":"^1.5.4","pptxgenjs":"^4.0.1","puppeteer":"^24.16.0","typescript":"^5.8.3","tailwindcss":"^4.3.3","@tailwindcss/vite":"^4.3.3"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org"},"_hasShrinkwrap":false,"devDependencies":{"jszip":"^3.10.1","marked":"^18.0.7","@types/node":"^24.0.0","@types/katex":"^0.16.7","@types/qrcode":"^1.5.6","node-tectonic":"^1.0.1","@myriaddreamin/typst-ts-node-compiler":"^0.7.0"},"peerDependencies":{"node-tectonic":"^1.0.1","@myriaddreamin/typst-ts-node-compiler":"^0.7.0"},"peerDependenciesMeta":{"node-tectonic":{"optional":true},"@myriaddreamin/typst-ts-node-compiler":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/frameseq_0.22.0_1784775403829_0.3661614067335024","host":"s3://npm-registry-packages-npm-production"}},"0.22.1":{"name":"@pride7/frameseq","version":"0.22.1","keywords":["slides","presentation","typescript","ai","typst","latex","html","pdf","dsl"],"license":"MIT","_id":"@pride7/frameseq@0.22.1","maintainers":[{"name":"pride7","email":"xsfeng07@gmail.com"}],"homepage":"https://github.com/pride7/frameseq#readme","bugs":{"url":"https://github.com/pride7/frameseq/issues"},"bin":{"frameseq":"scripts/frameseq.mjs"},"dist":{"shasum":"cf09773a730ded4a9c3f5071489e44e6d1f00bca","tarball":"https://registry.npmjs.org/@pride7/frameseq/-/frameseq-0.22.1.tgz","fileCount":55,"integrity":"sha512-gtJHrU7ySSlGMWGiYDJtZW6S86fzTDhp5SngqcqsmFtKYxqwoCgUF74pazRdOGDHWUWLMvC8zRMraRJTPV8r0g==","signatures":[{"sig":"MEYCIQCxSBIGClu7ixOjAbIo5Nl4iXb9YhIqwse3hMGy9oBw3wIhAO+SCDYNSP+frj4I65T+e2ElD+tZOxNgXsGAIhR6FBoj","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":444148},"type":"module","types":"./lib/index.d.ts","engines":{"node":"^20.19.0 || >=22.12.0"},"exports":{".":{"types":"./lib/index.d.ts","import":"./lib/index.js"},"./globals":{"types":"./lib/globals.d.ts","default":"./lib/index.js"}},"gitHead":"e007527dc5b1d48ea236da0fc69dc23f2816f744","scripts":{"dev":"node scripts/frameseq.mjs dev slides.ts","pptx":"node scripts/frameseq.mjs pptx slides.ts","test":"npm run build && npm run docs:check && node scripts/section-layout-test.mjs && npm run vscode:check && node scripts/puppeteer-options-test.mjs && node scripts/theme-test.mjs && node scripts/smoke-test.mjs && node scripts/beamer-smoke-test.mjs && node scripts/minimal-academic-smoke-test.mjs && node scripts/layout-check-test.mjs && node scripts/single-file-test.mjs && node scripts/remote-control-test.mjs && node scripts/pptx-test.mjs && node scripts/typst-export-test.mjs && npm run gallery:check","build":"npm run build:package && npm run build:demo","check":"tsc --noEmit","typst":"node scripts/frameseq.mjs typst slides.ts","prepack":"npm run build:package","present":"node scripts/frameseq.mjs dev slides.ts --remote","preview":"vite preview --open","frameseq":"node scripts/frameseq.mjs","build:demo":"tsc --noEmit && vite build","docs:check":"node scripts/docs-test.mjs","export:pdf":"node scripts/frameseq.mjs pdf slides.ts --output output/pdf/frameseq.pdf","pack:check":"node scripts/package-test.mjs","export:pptx":"node scripts/frameseq.mjs pptx slides.ts --output output/pptx/frameseq.pptx","check:layout":"node scripts/frameseq.mjs check slides.ts","export:typst":"node scripts/frameseq.mjs typst slides.ts --output output/typst/frameseq.typ","vscode:check":"node scripts/inspect-test.mjs && npm ci --prefix packages/vscode-frameseq --ignore-scripts && npm --prefix packages/vscode-frameseq run check && node scripts/vscode-extension-test.mjs && node scripts/vscode-preview-test.mjs","build:gallery":"npm run build:package && node scripts/gallery-build.mjs","build:package":"vite build --config vite.lib.config.ts && tsc -p tsconfig.publish.json","gallery:check":"npm run build:gallery && node scripts/gallery-test.mjs","release:check":"npm test && npm run pack:check","vscode:package":"npm ci --prefix packages/vscode-frameseq --ignore-scripts && npm --prefix packages/vscode-frameseq run package","preview:gallery":"npm run build:gallery && vite preview --outDir dist/gallery --open","release:tag-check":"node scripts/release-tag-test.mjs"},"_npmUser":{"name":"pride7","email":"xsfeng07@gmail.com"},"repository":{"url":"git+https://github.com/pride7/frameseq.git","type":"git"},"_npmVersion":"11.14.0","description":"Build editable, AI-friendly presentations with a linear TypeScript DSL.","directories":{},"_nodeVersion":"24.14.0","dependencies":{"vite":"^7.0.0","katex":"^0.16.22","qrcode":"^1.5.4","pptxgenjs":"^4.0.1","puppeteer":"^24.16.0","typescript":"^5.8.3","tailwindcss":"^4.3.3","@tailwindcss/vite":"^4.3.3"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org"},"_hasShrinkwrap":false,"devDependencies":{"jszip":"^3.10.1","marked":"^18.0.7","@types/node":"^24.0.0","@types/katex":"^0.16.7","@types/qrcode":"^1.5.6","node-tectonic":"^1.0.1","@myriaddreamin/typst-ts-node-compiler":"^0.7.0"},"peerDependencies":{"node-tectonic":"^1.0.1","@myriaddreamin/typst-ts-node-compiler":"^0.7.0"},"peerDependenciesMeta":{"node-tectonic":{"optional":true},"@myriaddreamin/typst-ts-node-compiler":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/frameseq_0.22.1_1784777685578_0.5988837035078562","host":"s3://npm-registry-packages-npm-production"}},"0.23.0":{"name":"@pride7/frameseq","version":"0.23.0","keywords":["slides","presentation","typescript","ai","typst","latex","html","pdf","dsl"],"license":"MIT","_id":"@pride7/frameseq@0.23.0","maintainers":[{"name":"pride7","email":"xsfeng07@gmail.com"}],"homepage":"https://github.com/pride7/frameseq#readme","bugs":{"url":"https://github.com/pride7/frameseq/issues"},"bin":{"frameseq":"scripts/frameseq.mjs"},"dist":{"shasum":"9dfd314fa7be2a3de96d6ed495de6fa77929f646","tarball":"https://registry.npmjs.org/@pride7/frameseq/-/frameseq-0.23.0.tgz","fileCount":58,"integrity":"sha512-WK0K4rcP8G5T26g9Xh9iEJr/n6b5tr+FlOEHQxlxuop5wVbg7i2P9UrRhmw9i96wIFJZQBzMst10eweXxUc3sQ==","signatures":[{"sig":"MEYCIQDF7eTuwPSo1MEhBoBE1ozg5eLArOQdOsbceGdPl69s8AIhAJMWsOf8w8ESe3z2/iLMT4YzPAcExm1myOVnqjIusK9C","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@pride7%2fframeseq@0.23.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":500852},"type":"module","types":"./lib/index.d.ts","engines":{"node":"^20.19.0 || >=22.12.0"},"exports":{".":{"types":"./lib/index.d.ts","import":"./lib/index.js"},"./globals":{"types":"./lib/globals.d.ts","default":"./lib/index.js"}},"gitHead":"60f517d2cb89acc3d6a877988f9a9d799d821979","scripts":{"dev":"node scripts/frameseq.mjs dev slides.ts","pptx":"node scripts/frameseq.mjs pptx slides.ts","test":"npm run build && npm run docs:check && node scripts/section-layout-test.mjs && npm run vscode:check && node scripts/puppeteer-options-test.mjs && node scripts/theme-test.mjs && node scripts/smoke-test.mjs && node scripts/beamer-smoke-test.mjs && node scripts/minimal-academic-smoke-test.mjs && node scripts/layout-check-test.mjs && node scripts/anchor-test.mjs && node scripts/region-path-test.mjs && node scripts/notes-test.mjs && node scripts/single-file-test.mjs && node scripts/remote-control-test.mjs && node scripts/pptx-test.mjs && node scripts/typst-export-test.mjs && npm run gallery:check","build":"npm run build:package && npm run build:demo","check":"tsc --noEmit","typst":"node scripts/frameseq.mjs typst slides.ts","prepack":"npm run build:package","present":"node scripts/frameseq.mjs dev slides.ts --remote","preview":"vite preview --open","frameseq":"node scripts/frameseq.mjs","build:demo":"tsc --noEmit && vite build","docs:check":"node scripts/docs-test.mjs","export:pdf":"node scripts/frameseq.mjs pdf slides.ts --output output/pdf/frameseq.pdf","pack:check":"node scripts/package-test.mjs","export:pptx":"node scripts/frameseq.mjs pptx slides.ts --output output/pptx/frameseq.pptx","check:layout":"node scripts/frameseq.mjs check slides.ts","export:typst":"node scripts/frameseq.mjs typst slides.ts --output output/typst/frameseq.typ","vscode:check":"node scripts/inspect-test.mjs && npm ci --prefix packages/vscode-frameseq --ignore-scripts && npm --prefix packages/vscode-frameseq run check && node scripts/vscode-extension-test.mjs && node scripts/vscode-preview-test.mjs","build:gallery":"npm run build:package && node scripts/gallery-build.mjs","build:package":"vite build --config vite.lib.config.ts && tsc -p tsconfig.publish.json","gallery:check":"npm run build:gallery && node scripts/gallery-test.mjs","release:check":"npm test && npm run pack:check","vscode:package":"npm ci --prefix packages/vscode-frameseq --ignore-scripts && npm --prefix packages/vscode-frameseq run package","preview:gallery":"npm run build:gallery && vite preview --outDir dist/gallery --open","release:tag-check":"node scripts/release-tag-test.mjs"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:778ccbb5-0cdb-40c4-bc7a-b37d3e572213"}},"repository":{"url":"git+https://github.com/pride7/frameseq.git","type":"git"},"_npmVersion":"11.19.0","description":"Build editable, AI-friendly presentations with a linear TypeScript DSL.","directories":{},"_nodeVersion":"24.18.0","dependencies":{"vite":"^7.0.0","katex":"^0.16.22","qrcode":"^1.5.4","pptxgenjs":"^4.0.1","puppeteer":"^24.16.0","typescript":"^5.8.3","tailwindcss":"^4.3.3","@tailwindcss/vite":"^4.3.3"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org"},"_hasShrinkwrap":false,"devDependencies":{"jszip":"^3.10.1","marked":"^18.0.7","@types/node":"^24.0.0","@types/katex":"^0.16.7","@types/qrcode":"^1.5.6","node-tectonic":"^1.0.1","@myriaddreamin/typst-ts-node-compiler":"^0.7.0"},"peerDependencies":{"node-tectonic":"^1.0.1","@myriaddreamin/typst-ts-node-compiler":"^0.7.0"},"peerDependenciesMeta":{"node-tectonic":{"optional":true},"@myriaddreamin/typst-ts-node-compiler":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/frameseq_0.23.0_1785495285287_0.3646991361324152","host":"s3://npm-registry-packages-npm-production"}},"0.24.0":{"name":"@pride7/frameseq","version":"0.24.0","keywords":["slides","presentation","typescript","ai","typst","latex","html","pdf","dsl"],"license":"MIT","_id":"@pride7/frameseq@0.24.0","maintainers":[{"name":"pride7","email":"xsfeng07@gmail.com"}],"homepage":"https://github.com/pride7/frameseq#readme","bugs":{"url":"https://github.com/pride7/frameseq/issues"},"bin":{"frameseq":"scripts/frameseq.mjs"},"dist":{"shasum":"29b24d39f68801cdfb98e8bc940b242f1c3e4619","tarball":"https://registry.npmjs.org/@pride7/frameseq/-/frameseq-0.24.0.tgz","fileCount":58,"integrity":"sha512-1NnNqFvVAXM8Q1iQb09rsinVg+huU/FTci4G7yjJSbiJj5GxWOlRWezBORvZBG5oriAs83HkoMtEtWBEWuP8Sw==","signatures":[{"sig":"MEUCICwKj5/ML7rdqvGn46+XfVOPZoG4bH3ooGw5B0/mGBQNAiEAqR1zTZewBz2wLXfZ0gZcIt++hUIAyn8fn0wjBlppOCQ=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@pride7%2fframeseq@0.24.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":500244},"type":"module","types":"./lib/index.d.ts","engines":{"node":"^20.19.0 || >=22.12.0"},"exports":{".":{"types":"./lib/index.d.ts","import":"./lib/index.js"},"./globals":{"types":"./lib/globals.d.ts","default":"./lib/index.js"}},"gitHead":"552968e7d424cc585e7de843b97bbe9c5f9a3a07","scripts":{"dev":"node scripts/frameseq.mjs dev slides.ts","pptx":"node scripts/frameseq.mjs pptx slides.ts","test":"npm run build && npm run docs:check && node scripts/section-layout-test.mjs && npm run vscode:check && node scripts/puppeteer-options-test.mjs && node scripts/theme-test.mjs && node scripts/smoke-test.mjs && node scripts/beamer-smoke-test.mjs && node scripts/minimal-academic-smoke-test.mjs && node scripts/layout-check-test.mjs && node scripts/anchor-test.mjs && node scripts/region-path-test.mjs && node scripts/notes-test.mjs && node scripts/single-file-test.mjs && node scripts/remote-control-test.mjs && node scripts/pptx-test.mjs && node scripts/typst-export-test.mjs && npm run gallery:check","build":"npm run build:package && npm run build:demo","check":"tsc --noEmit","typst":"node scripts/frameseq.mjs typst slides.ts","prepack":"npm run build:package","present":"node scripts/frameseq.mjs dev slides.ts --remote","preview":"vite preview --open","frameseq":"node scripts/frameseq.mjs","build:demo":"tsc --noEmit && vite build","docs:check":"node scripts/docs-test.mjs","export:pdf":"node scripts/frameseq.mjs pdf slides.ts --output output/pdf/frameseq.pdf","pack:check":"node scripts/package-test.mjs","export:pptx":"node scripts/frameseq.mjs pptx slides.ts --output output/pptx/frameseq.pptx","check:layout":"node scripts/frameseq.mjs check slides.ts","export:typst":"node scripts/frameseq.mjs typst slides.ts --output output/typst/frameseq.typ","vscode:check":"node scripts/inspect-test.mjs && npm ci --prefix packages/vscode-frameseq --ignore-scripts && npm --prefix packages/vscode-frameseq run check && node scripts/vscode-extension-test.mjs && node scripts/vscode-preview-test.mjs","build:gallery":"npm run build:package && node scripts/gallery-build.mjs","build:package":"vite build --config vite.lib.config.ts && tsc -p tsconfig.publish.json","gallery:check":"npm run build:gallery && node scripts/gallery-test.mjs","release:check":"npm test && npm run pack:check","vscode:package":"npm ci --prefix packages/vscode-frameseq --ignore-scripts && npm --prefix packages/vscode-frameseq run package","preview:gallery":"npm run build:gallery && vite preview --outDir dist/gallery --open","release:tag-check":"node scripts/release-tag-test.mjs"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:778ccbb5-0cdb-40c4-bc7a-b37d3e572213"}},"repository":{"url":"git+https://github.com/pride7/frameseq.git","type":"git"},"_npmVersion":"11.19.0","description":"Build editable, AI-friendly presentations with a linear TypeScript DSL.","directories":{},"_nodeVersion":"24.18.0","dependencies":{"vite":"^7.0.0","katex":"^0.16.22","qrcode":"^1.5.4","pptxgenjs":"^4.0.1","puppeteer":"^24.16.0","typescript":"^5.8.3","tailwindcss":"^4.3.3","@tailwindcss/vite":"^4.3.3"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org"},"_hasShrinkwrap":false,"devDependencies":{"jszip":"^3.10.1","marked":"^18.0.7","@types/node":"^24.0.0","@types/katex":"^0.16.7","@types/qrcode":"^1.5.6","node-tectonic":"^1.0.1","@myriaddreamin/typst-ts-node-compiler":"^0.7.0"},"peerDependencies":{"node-tectonic":"^1.0.1","@myriaddreamin/typst-ts-node-compiler":"^0.7.0"},"peerDependenciesMeta":{"node-tectonic":{"optional":true},"@myriaddreamin/typst-ts-node-compiler":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/frameseq_0.24.0_1785496730457_0.7104581392092615","host":"s3://npm-registry-packages-npm-production"}},"0.25.0":{"name":"@pride7/frameseq","version":"0.25.0","keywords":["slides","presentation","typescript","ai","typst","latex","html","pdf","dsl"],"license":"MIT","_id":"@pride7/frameseq@0.25.0","maintainers":[{"name":"pride7","email":"xsfeng07@gmail.com"}],"homepage":"https://github.com/pride7/frameseq#readme","bugs":{"url":"https://github.com/pride7/frameseq/issues"},"bin":{"frameseq":"scripts/frameseq.mjs"},"dist":{"shasum":"a0e3ae6df032b0b191b7ea506efff249b0bd89a5","tarball":"https://registry.npmjs.org/@pride7/frameseq/-/frameseq-0.25.0.tgz","fileCount":58,"integrity":"sha512-hhErz4XBqJcj40SKPsIm4QW36mxgqNdeKW/5dKwgCUREiXW358trT9MAy11m78+1QIAMBRxmIWDedNoxO5vqdg==","signatures":[{"sig":"MEQCIFNm/7s2BhD5Wayyst9zRdq4gV18Cv+ZjWRV7MF97rJgAiAKovlucHH48FvroLd4UvcX1V1jFx1j3ZNARvVyQhgkUw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@pride7%2fframeseq@0.25.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":505333},"type":"module","types":"./lib/index.d.ts","engines":{"node":"^20.19.0 || >=22.12.0"},"exports":{".":{"types":"./lib/index.d.ts","import":"./lib/index.js"},"./globals":{"types":"./lib/globals.d.ts","default":"./lib/index.js"}},"gitHead":"a57f91315c81b5571e7937359df6622a1daaab60","scripts":{"dev":"node scripts/frameseq.mjs dev slides.ts","pptx":"node scripts/frameseq.mjs pptx slides.ts","test":"npm run build && npm run docs:check && node scripts/section-layout-test.mjs && npm run vscode:check && node scripts/puppeteer-options-test.mjs && node scripts/theme-test.mjs && node scripts/smoke-test.mjs && node scripts/beamer-smoke-test.mjs && node scripts/minimal-academic-smoke-test.mjs && node scripts/layout-check-test.mjs && node scripts/anchor-test.mjs && node scripts/region-path-test.mjs && node scripts/notes-test.mjs && node scripts/cjk-test.mjs && node scripts/single-file-test.mjs && node scripts/remote-control-test.mjs && node scripts/pptx-test.mjs && node scripts/typst-export-test.mjs && npm run gallery:check","build":"npm run build:package && npm run build:demo","check":"tsc --noEmit","typst":"node scripts/frameseq.mjs typst slides.ts","prepack":"npm run build:package","present":"node scripts/frameseq.mjs dev slides.ts --remote","preview":"vite preview --open","frameseq":"node scripts/frameseq.mjs","build:demo":"tsc --noEmit && vite build","docs:check":"node scripts/docs-test.mjs","export:pdf":"node scripts/frameseq.mjs pdf slides.ts --output output/pdf/frameseq.pdf","pack:check":"node scripts/package-test.mjs","export:pptx":"node scripts/frameseq.mjs pptx slides.ts --output output/pptx/frameseq.pptx","check:layout":"node scripts/frameseq.mjs check slides.ts","export:typst":"node scripts/frameseq.mjs typst slides.ts --output output/typst/frameseq.typ","vscode:check":"node scripts/inspect-test.mjs && npm ci --prefix packages/vscode-frameseq --ignore-scripts && npm --prefix packages/vscode-frameseq run check && node scripts/vscode-extension-test.mjs && node scripts/vscode-preview-test.mjs","build:gallery":"npm run build:package && node scripts/gallery-build.mjs","build:package":"vite build --config vite.lib.config.ts && tsc -p tsconfig.publish.json","gallery:check":"npm run build:gallery && node scripts/gallery-test.mjs","release:check":"npm test && npm run pack:check","vscode:package":"npm ci --prefix packages/vscode-frameseq --ignore-scripts && npm --prefix packages/vscode-frameseq run package","preview:gallery":"npm run build:gallery && vite preview --outDir dist/gallery --open","release:tag-check":"node scripts/release-tag-test.mjs"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:778ccbb5-0cdb-40c4-bc7a-b37d3e572213"}},"repository":{"url":"git+https://github.com/pride7/frameseq.git","type":"git"},"_npmVersion":"11.19.0","description":"Build editable, AI-friendly presentations with a linear TypeScript DSL.","directories":{},"_nodeVersion":"24.18.0","dependencies":{"vite":"^7.0.0","katex":"^0.16.22","qrcode":"^1.5.4","pptxgenjs":"^4.0.1","puppeteer":"^24.16.0","typescript":"^5.8.3","tailwindcss":"^4.3.3","@tailwindcss/vite":"^4.3.3"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org"},"_hasShrinkwrap":false,"devDependencies":{"jszip":"^3.10.1","marked":"^18.0.7","@types/node":"^24.0.0","@types/katex":"^0.16.7","@types/qrcode":"^1.5.6","node-tectonic":"^1.0.1","@myriaddreamin/typst-ts-node-compiler":"^0.7.0"},"peerDependencies":{"node-tectonic":"^1.0.1","@myriaddreamin/typst-ts-node-compiler":"^0.7.0"},"peerDependenciesMeta":{"node-tectonic":{"optional":true},"@myriaddreamin/typst-ts-node-compiler":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/frameseq_0.25.0_1785524576762_0.18195321013921606","host":"s3://npm-registry-packages-npm-production"}},"0.26.0":{"name":"@pride7/frameseq","version":"0.26.0","keywords":["slides","presentation","typescript","ai","typst","latex","html","pdf","dsl"],"license":"MIT","_id":"@pride7/frameseq@0.26.0","maintainers":[{"name":"pride7","email":"xsfeng07@gmail.com"}],"homepage":"https://github.com/pride7/frameseq#readme","bugs":{"url":"https://github.com/pride7/frameseq/issues"},"bin":{"frameseq":"scripts/frameseq.mjs"},"dist":{"shasum":"7740b3165de0af382ad647a58291d1d237515da5","tarball":"https://registry.npmjs.org/@pride7/frameseq/-/frameseq-0.26.0.tgz","fileCount":58,"integrity":"sha512-RWzM0yP6L9XF/dI95xEqC2w6xOzePLG8xKaSomHBZDO2Ksd/dBEfKA7+vMhP2OIFRgkxHTnzF8ia4Ey9enAU9Q==","signatures":[{"sig":"MEUCIHWmMunkVyJhsrPMJm67rH4fKaNL/2qvu6JleW9deNZiAiEAk4jXKqQ88oLQVhZrAybZmbCdls7Eftye3hMj5cc9Jvk=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@pride7%2fframeseq@0.26.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":523176},"type":"module","types":"./lib/index.d.ts","engines":{"node":"^20.19.0 || >=22.12.0"},"exports":{".":{"types":"./lib/index.d.ts","import":"./lib/index.js"},"./globals":{"types":"./lib/globals.d.ts","default":"./lib/index.js"}},"gitHead":"35cd56e7734acbc7bfe2c53cdc20f93c910b5fc0","scripts":{"dev":"node scripts/frameseq.mjs dev slides.ts","pptx":"node scripts/frameseq.mjs pptx slides.ts","test":"npm run build && npm run docs:check && node scripts/section-layout-test.mjs && npm run vscode:check && node scripts/puppeteer-options-test.mjs && node scripts/theme-test.mjs && node scripts/smoke-test.mjs && node scripts/beamer-smoke-test.mjs && node scripts/minimal-academic-smoke-test.mjs && node scripts/layout-check-test.mjs && node scripts/anchor-test.mjs && node scripts/region-path-test.mjs && node scripts/notes-test.mjs && node scripts/cjk-test.mjs && node scripts/flow-layout-test.mjs && node scripts/single-file-test.mjs && node scripts/remote-control-test.mjs && node scripts/pptx-test.mjs && node scripts/typst-export-test.mjs && npm run gallery:check","build":"npm run build:package && npm run build:demo","check":"tsc --noEmit","typst":"node scripts/frameseq.mjs typst slides.ts","prepack":"npm run build:package","present":"node scripts/frameseq.mjs dev slides.ts --remote","preview":"vite preview --open","frameseq":"node scripts/frameseq.mjs","build:demo":"tsc --noEmit && vite build","docs:check":"node scripts/docs-test.mjs","export:pdf":"node scripts/frameseq.mjs pdf slides.ts --output output/pdf/frameseq.pdf","pack:check":"node scripts/package-test.mjs","export:pptx":"node scripts/frameseq.mjs pptx slides.ts --output output/pptx/frameseq.pptx","check:layout":"node scripts/frameseq.mjs check slides.ts","export:typst":"node scripts/frameseq.mjs typst slides.ts --output output/typst/frameseq.typ","vscode:check":"node scripts/inspect-test.mjs && npm ci --prefix packages/vscode-frameseq --ignore-scripts && npm --prefix packages/vscode-frameseq run check && node scripts/vscode-extension-test.mjs && node scripts/vscode-preview-test.mjs","build:gallery":"npm run build:package && node scripts/gallery-build.mjs","build:package":"vite build --config vite.lib.config.ts && tsc -p tsconfig.publish.json","gallery:check":"npm run build:gallery && node scripts/gallery-test.mjs","release:check":"npm test && npm run pack:check","vscode:package":"npm ci --prefix packages/vscode-frameseq --ignore-scripts && npm --prefix packages/vscode-frameseq run package","preview:gallery":"npm run build:gallery && vite preview --outDir dist/gallery --open","release:tag-check":"node scripts/release-tag-test.mjs"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:778ccbb5-0cdb-40c4-bc7a-b37d3e572213"}},"repository":{"url":"git+https://github.com/pride7/frameseq.git","type":"git"},"_npmVersion":"11.19.0","description":"Build editable, AI-friendly presentations with a linear TypeScript DSL.","directories":{},"_nodeVersion":"24.18.0","dependencies":{"vite":"^7.0.0","katex":"^0.16.22","qrcode":"^1.5.4","pptxgenjs":"^4.0.1","puppeteer":"^24.16.0","typescript":"^5.8.3","tailwindcss":"^4.3.3","@tailwindcss/vite":"^4.3.3"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org"},"_hasShrinkwrap":false,"devDependencies":{"jszip":"^3.10.1","marked":"^18.0.7","@types/node":"^24.0.0","@types/katex":"^0.16.7","@types/qrcode":"^1.5.6","node-tectonic":"^1.0.1","@myriaddreamin/typst-ts-node-compiler":"^0.7.0"},"peerDependencies":{"node-tectonic":"^1.0.1","@myriaddreamin/typst-ts-node-compiler":"^0.7.0"},"peerDependenciesMeta":{"node-tectonic":{"optional":true},"@myriaddreamin/typst-ts-node-compiler":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/frameseq_0.26.0_1785526999233_0.6946308067739386","host":"s3://npm-registry-packages-npm-production"}},"0.27.0":{"name":"@pride7/frameseq","version":"0.27.0","keywords":["slides","presentation","typescript","ai","typst","latex","html","pdf","dsl"],"license":"MIT","_id":"@pride7/frameseq@0.27.0","maintainers":[{"name":"pride7","email":"xsfeng07@gmail.com"}],"homepage":"https://github.com/pride7/frameseq#readme","bugs":{"url":"https://github.com/pride7/frameseq/issues"},"bin":{"frameseq":"scripts/frameseq.mjs"},"dist":{"shasum":"2b9eab62e674f5caa43393fb06637e211193595f","tarball":"https://registry.npmjs.org/@pride7/frameseq/-/frameseq-0.27.0.tgz","fileCount":59,"integrity":"sha512-+Tc1GA1/p4F9u5Y1jm23EnIEZ7XtFNCURUXjaA6m7mzM6afEWSkPhnj2VAHj7FfD2ZVKZyUoLtXVUPMPNUforA==","signatures":[{"sig":"MEYCIQDytjeNWLNyAQy1NnvLZy9Z6r+VIxdjsYODtbe03+Bu9AIhAKy71iV4RynvylFN/aRrXW9jBKGdwYzxU2zlyhYGjNIR","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@pride7%2fframeseq@0.27.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":532774},"type":"module","types":"./lib/index.d.ts","engines":{"node":"^20.19.0 || >=22.12.0"},"exports":{".":{"types":"./lib/index.d.ts","import":"./lib/index.js"},"./globals":{"types":"./lib/globals.d.ts","default":"./lib/index.js"}},"gitHead":"56dae8cbd4f3f19bcdfd97aed9b14190de894420","scripts":{"dev":"node scripts/frameseq.mjs dev slides.ts","pptx":"node scripts/frameseq.mjs pptx slides.ts","test":"npm run build && npm run docs:check && node scripts/section-layout-test.mjs && npm run vscode:check && node scripts/puppeteer-options-test.mjs && node scripts/theme-test.mjs && node scripts/smoke-test.mjs && node scripts/beamer-smoke-test.mjs && node scripts/minimal-academic-smoke-test.mjs && node scripts/layout-check-test.mjs && node scripts/anchor-test.mjs && node scripts/region-path-test.mjs && node scripts/notes-test.mjs && node scripts/cjk-test.mjs && node scripts/flow-layout-test.mjs && node scripts/single-file-test.mjs && node scripts/remote-control-test.mjs && node scripts/pptx-test.mjs && node scripts/typst-export-test.mjs && npm run gallery:check","build":"npm run build:package && npm run build:demo","check":"tsc --noEmit","typst":"node scripts/frameseq.mjs typst slides.ts","prepack":"npm run build:package","present":"node scripts/frameseq.mjs dev slides.ts --remote","preview":"vite preview --open","frameseq":"node scripts/frameseq.mjs","build:demo":"tsc --noEmit && vite build","docs:check":"node scripts/docs-test.mjs","export:pdf":"node scripts/frameseq.mjs pdf slides.ts --output output/pdf/frameseq.pdf","pack:check":"node scripts/package-test.mjs","export:pptx":"node scripts/frameseq.mjs pptx slides.ts --output output/pptx/frameseq.pptx","check:layout":"node scripts/frameseq.mjs check slides.ts","export:typst":"node scripts/frameseq.mjs typst slides.ts --output output/typst/frameseq.typ","vscode:check":"node scripts/inspect-test.mjs && npm ci --prefix packages/vscode-frameseq --ignore-scripts && npm --prefix packages/vscode-frameseq run check && node scripts/vscode-extension-test.mjs && node scripts/vscode-preview-test.mjs","build:gallery":"npm run build:package && node scripts/gallery-build.mjs","build:package":"vite build --config vite.lib.config.ts && tsc -p tsconfig.publish.json","gallery:check":"npm run build:gallery && node scripts/gallery-test.mjs","release:check":"npm test && npm run pack:check","vscode:package":"npm ci --prefix packages/vscode-frameseq --ignore-scripts && npm --prefix packages/vscode-frameseq run package","preview:gallery":"npm run build:gallery && vite preview --outDir dist/gallery --open","release:tag-check":"node scripts/release-tag-test.mjs"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:778ccbb5-0cdb-40c4-bc7a-b37d3e572213"}},"repository":{"url":"git+https://github.com/pride7/frameseq.git","type":"git"},"_npmVersion":"11.19.0","description":"Build editable, AI-friendly presentations with a linear TypeScript DSL.","directories":{},"_nodeVersion":"24.18.0","dependencies":{"vite":"^7.0.0","katex":"^0.16.22","qrcode":"^1.5.4","pptxgenjs":"^4.0.1","puppeteer":"^24.16.0","typescript":"^5.8.3","tailwindcss":"^4.3.3","@tailwindcss/vite":"^4.3.3"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org"},"_hasShrinkwrap":false,"devDependencies":{"jszip":"^3.10.1","marked":"^18.0.7","@types/node":"^24.0.0","@types/katex":"^0.16.7","@types/qrcode":"^1.5.6","node-tectonic":"^1.0.1","@myriaddreamin/typst-ts-node-compiler":"^0.7.0"},"peerDependencies":{"node-tectonic":"^1.0.1","@myriaddreamin/typst-ts-node-compiler":"^0.7.0"},"peerDependenciesMeta":{"node-tectonic":{"optional":true},"@myriaddreamin/typst-ts-node-compiler":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/frameseq_0.27.0_1785529279336_0.4332029005266387","host":"s3://npm-registry-packages-npm-production"}},"0.27.1":{"name":"@pride7/frameseq","version":"0.27.1","keywords":["slides","presentation","typescript","ai","typst","latex","html","pdf","dsl"],"license":"MIT","_id":"@pride7/frameseq@0.27.1","maintainers":[{"name":"pride7","email":"xsfeng07@gmail.com"}],"homepage":"https://github.com/pride7/frameseq#readme","bugs":{"url":"https://github.com/pride7/frameseq/issues"},"bin":{"frameseq":"scripts/frameseq.mjs"},"dist":{"shasum":"fd630f992443f96cb33c00434550099b3193e6af","tarball":"https://registry.npmjs.org/@pride7/frameseq/-/frameseq-0.27.1.tgz","fileCount":61,"integrity":"sha512-sCh884Fwfug3StRNTbOVRPtSVblUOV9dW4u9DHxiXiLi4kzYmsc6i14gqmlGeZVQhefCpwuRvjOUKj8B7jx16g==","signatures":[{"sig":"MEQCIFCkTOQKgPTdKic829mH2oHo/xxWRcyVvbprbrWMxHJ9AiACoVGDx9zPZZiigeefFWBixmJYUdi3yzMIskvCLZrgAA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@pride7%2fframeseq@0.27.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":546512},"type":"module","types":"./lib/index.d.ts","engines":{"node":"^20.19.0 || >=22.12.0"},"exports":{".":{"types":"./lib/index.d.ts","import":"./lib/index.js"},"./globals":{"types":"./lib/globals.d.ts","default":"./lib/index.js"}},"gitHead":"6a6f228b773261cc9125509ef083b9b5b65a5ba2","scripts":{"dev":"node scripts/frameseq.mjs dev slides.ts","pptx":"node scripts/frameseq.mjs pptx slides.ts","test":"npm run build && npm run docs:check && node scripts/section-layout-test.mjs && npm run vscode:check && node scripts/puppeteer-options-test.mjs && node scripts/theme-test.mjs && node scripts/smoke-test.mjs && node scripts/beamer-smoke-test.mjs && node scripts/minimal-academic-smoke-test.mjs && node scripts/layout-check-test.mjs && node scripts/anchor-test.mjs && node scripts/region-path-test.mjs && node scripts/notes-test.mjs && node scripts/cjk-test.mjs && node scripts/flow-layout-test.mjs && node scripts/single-file-test.mjs && node scripts/remote-control-test.mjs && node scripts/pptx-test.mjs && node scripts/typst-export-test.mjs && npm run gallery:check","build":"npm run build:package && npm run build:demo","check":"tsc --noEmit","typst":"node scripts/frameseq.mjs typst slides.ts","prepack":"npm run build:package","present":"node scripts/frameseq.mjs dev slides.ts --remote","preview":"vite preview --open","frameseq":"node scripts/frameseq.mjs","build:demo":"tsc --noEmit && vite build","docs:check":"node scripts/docs-test.mjs","export:pdf":"node scripts/frameseq.mjs pdf slides.ts --output output/pdf/frameseq.pdf","pack:check":"node scripts/package-test.mjs","export:pptx":"node scripts/frameseq.mjs pptx slides.ts --output output/pptx/frameseq.pptx","check:layout":"node scripts/frameseq.mjs check slides.ts","export:typst":"node scripts/frameseq.mjs typst slides.ts --output output/typst/frameseq.typ","vscode:check":"node scripts/inspect-test.mjs && npm ci --prefix packages/vscode-frameseq --ignore-scripts && npm --prefix packages/vscode-frameseq run check && node scripts/vscode-extension-test.mjs && node scripts/vscode-preview-test.mjs","build:gallery":"npm run build:package && node scripts/gallery-build.mjs","build:package":"vite build --config vite.lib.config.ts && tsc -p tsconfig.publish.json","gallery:check":"npm run build:gallery && node scripts/gallery-test.mjs","release:check":"npm test && npm run pack:check","vscode:package":"npm ci --prefix packages/vscode-frameseq --ignore-scripts && npm --prefix packages/vscode-frameseq run package","preview:gallery":"npm run build:gallery && vite preview --outDir dist/gallery --open","release:tag-check":"node scripts/release-tag-test.mjs"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:778ccbb5-0cdb-40c4-bc7a-b37d3e572213"}},"repository":{"url":"git+https://github.com/pride7/frameseq.git","type":"git"},"_npmVersion":"11.19.0","description":"Build editable, AI-friendly presentations with a linear TypeScript DSL.","directories":{},"_nodeVersion":"24.18.0","dependencies":{"vite":"^7.0.0","katex":"^0.16.22","qrcode":"^1.5.4","pptxgenjs":"^4.0.1","puppeteer":"^24.16.0","typescript":"^5.8.3","tailwindcss":"^4.3.3","@tailwindcss/vite":"^4.3.3"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org"},"_hasShrinkwrap":false,"devDependencies":{"jszip":"^3.10.1","marked":"^18.0.7","@types/node":"^24.0.0","@types/katex":"^0.16.7","@types/qrcode":"^1.5.6","node-tectonic":"^1.0.1","@myriaddreamin/typst-ts-node-compiler":"^0.7.0"},"peerDependencies":{"node-tectonic":"^1.0.1","@myriaddreamin/typst-ts-node-compiler":"^0.7.0"},"peerDependenciesMeta":{"node-tectonic":{"optional":true},"@myriaddreamin/typst-ts-node-compiler":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/frameseq_0.27.1_1785531815413_0.2745725086714095","host":"s3://npm-registry-packages-npm-production"}},"0.28.0":{"name":"@pride7/frameseq","version":"0.28.0","keywords":["slides","presentation","typescript","ai","typst","latex","html","pdf","dsl"],"license":"MIT","_id":"@pride7/frameseq@0.28.0","maintainers":[{"name":"pride7","email":"xsfeng07@gmail.com"}],"homepage":"https://github.com/pride7/frameseq#readme","bugs":{"url":"https://github.com/pride7/frameseq/issues"},"bin":{"frameseq":"scripts/frameseq.mjs"},"dist":{"shasum":"6cc14bb13eb2cada84c55865a4eb042e66c638e1","tarball":"https://registry.npmjs.org/@pride7/frameseq/-/frameseq-0.28.0.tgz","fileCount":61,"integrity":"sha512-7aNrd14m5TH3/GB8vp8W93Lv6TJgNjyVC0wCJBgXMwnmsP0SuWnOjFIT62LLi/8U2CN82dj9Y+YwXZWO/eaHGg==","signatures":[{"sig":"MEUCIQCHKOhXLswTiXKxSMHTw+UyD7nNOVgqcPB3b0fazVq8gwIgSkQiUvpFkKUVNAvxqKVx/6Jk4iyTO1uq1SWfMIzALGI=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@pride7%2fframeseq@0.28.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":555975},"type":"module","types":"./lib/index.d.ts","engines":{"node":"^20.19.0 || >=22.12.0"},"exports":{".":{"types":"./lib/index.d.ts","import":"./lib/index.js"},"./globals":{"types":"./lib/globals.d.ts","default":"./lib/index.js"}},"gitHead":"1f7b6863cfa9d1b6b4bf46c1f6ef3b4a847de0df","scripts":{"dev":"node scripts/frameseq.mjs dev slides.ts","pptx":"node scripts/frameseq.mjs pptx slides.ts","test":"npm run build && npm run docs:check && node scripts/section-layout-test.mjs && npm run vscode:check && node scripts/puppeteer-options-test.mjs && node scripts/theme-test.mjs && node scripts/smoke-test.mjs && node scripts/beamer-smoke-test.mjs && node scripts/minimal-academic-smoke-test.mjs && node scripts/layout-check-test.mjs && node scripts/anchor-test.mjs && node scripts/region-path-test.mjs && node scripts/notes-test.mjs && node scripts/cjk-test.mjs && node scripts/flow-layout-test.mjs && node scripts/single-file-test.mjs && node scripts/remote-control-test.mjs && node scripts/pptx-test.mjs && node scripts/typst-export-test.mjs && npm run gallery:check","build":"npm run build:package && npm run build:demo","check":"tsc --noEmit","typst":"node scripts/frameseq.mjs typst slides.ts","prepack":"npm run build:package","present":"node scripts/frameseq.mjs dev slides.ts --remote","preview":"vite preview --open","frameseq":"node scripts/frameseq.mjs","build:demo":"tsc --noEmit && vite build","docs:check":"node scripts/docs-test.mjs","docs:index":"node scripts/docs-index.mjs","export:pdf":"node scripts/frameseq.mjs pdf slides.ts --output output/pdf/frameseq.pdf","pack:check":"node scripts/package-test.mjs","export:pptx":"node scripts/frameseq.mjs pptx slides.ts --output output/pptx/frameseq.pptx","check:layout":"node scripts/frameseq.mjs check slides.ts","export:typst":"node scripts/frameseq.mjs typst slides.ts --output output/typst/frameseq.typ","vscode:check":"node scripts/inspect-test.mjs && npm ci --prefix packages/vscode-frameseq --ignore-scripts && npm --prefix packages/vscode-frameseq run check && node scripts/vscode-extension-test.mjs && node scripts/vscode-preview-test.mjs","build:gallery":"npm run build:package && node scripts/gallery-build.mjs","build:package":"vite build --config vite.lib.config.ts && tsc -p tsconfig.publish.json","gallery:check":"npm run build:gallery && node scripts/gallery-test.mjs","release:check":"npm test && npm run pack:check","vscode:package":"npm ci --prefix packages/vscode-frameseq --ignore-scripts && npm --prefix packages/vscode-frameseq run package","preview:gallery":"npm run build:gallery && vite preview --outDir dist/gallery --open","release:tag-check":"node scripts/release-tag-test.mjs"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:778ccbb5-0cdb-40c4-bc7a-b37d3e572213"}},"repository":{"url":"git+https://github.com/pride7/frameseq.git","type":"git"},"_npmVersion":"11.19.0","description":"Build editable, AI-friendly presentations with a linear TypeScript DSL.","directories":{},"_nodeVersion":"24.18.0","dependencies":{"vite":"^7.0.0","katex":"^0.16.22","qrcode":"^1.5.4","pptxgenjs":"^4.0.1","puppeteer":"^24.16.0","typescript":"^5.8.3","tailwindcss":"^4.3.3","@tailwindcss/vite":"^4.3.3"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org"},"_hasShrinkwrap":false,"devDependencies":{"jszip":"^3.10.1","marked":"^18.0.7","@types/node":"^24.0.0","@types/katex":"^0.16.7","@types/qrcode":"^1.5.6","node-tectonic":"^1.0.1","@myriaddreamin/typst-ts-node-compiler":"^0.7.0"},"peerDependencies":{"node-tectonic":"^1.0.1","@myriaddreamin/typst-ts-node-compiler":"^0.7.0"},"peerDependenciesMeta":{"node-tectonic":{"optional":true},"@myriaddreamin/typst-ts-node-compiler":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/frameseq_0.28.0_1785534137055_0.6620934085082575","host":"s3://npm-registry-packages-npm-production"}},"0.28.1":{"name":"@pride7/frameseq","version":"0.28.1","keywords":["slides","presentation","typescript","ai","typst","latex","html","pdf","dsl"],"license":"MIT","_id":"@pride7/frameseq@0.28.1","maintainers":[{"name":"pride7","email":"xsfeng07@gmail.com"}],"homepage":"https://github.com/pride7/frameseq#readme","bugs":{"url":"https://github.com/pride7/frameseq/issues"},"bin":{"frameseq":"scripts/frameseq.mjs"},"dist":{"shasum":"f4af613bb1280aa2da46f0ad75c46f34c6d1b57d","tarball":"https://registry.npmjs.org/@pride7/frameseq/-/frameseq-0.28.1.tgz","fileCount":82,"integrity":"sha512-US/+g/K6gajEQIBaA7x9WgllaxcnBt6Jw83i1Co/H1qC+a0KjZBCjHixRq2fnpCOhZCxle0vPupcx6e8GeVhfg==","signatures":[{"sig":"MEYCIQClRmQKw6hJ+rTzRNmKKs2djTi+wW5cjKKCEeTw0rmBZQIhAOIfQsQQKWMg+Joc52bcY4O+x53JPB4PAPRpBbKYrwaN","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@pride7%2fframeseq@0.28.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":660384},"type":"module","types":"./lib/index.d.ts","engines":{"node":"^20.19.0 || >=22.12.0"},"exports":{".":{"types":"./lib/index.d.ts","import":"./lib/index.js"},"./globals":{"types":"./lib/globals.d.ts","default":"./lib/index.js"}},"gitHead":"73b9604103e05092f7876fb8ebdd26ea4e8b83c8","scripts":{"dev":"node scripts/frameseq.mjs dev slides.ts","pptx":"node scripts/frameseq.mjs pptx slides.ts","test":"npm run build && npm run docs:check && node scripts/section-layout-test.mjs && npm run vscode:check && node scripts/puppeteer-options-test.mjs && node scripts/theme-test.mjs && node scripts/smoke-test.mjs && node scripts/beamer-smoke-test.mjs && node scripts/minimal-academic-smoke-test.mjs && node scripts/layout-check-test.mjs && node scripts/anchor-test.mjs && node scripts/region-path-test.mjs && node scripts/notes-test.mjs && node scripts/cjk-test.mjs && node scripts/flow-layout-test.mjs && node scripts/single-file-test.mjs && node scripts/remote-control-test.mjs && node scripts/pptx-test.mjs && node scripts/typst-export-test.mjs && npm run gallery:check","build":"npm run build:package && npm run build:demo","check":"tsc --noEmit","typst":"node scripts/frameseq.mjs typst slides.ts","prepack":"npm run build:package","present":"node scripts/frameseq.mjs dev slides.ts --remote","preview":"vite preview --open","frameseq":"node scripts/frameseq.mjs","build:demo":"tsc --noEmit && vite build","docs:check":"node scripts/docs-test.mjs","docs:index":"node scripts/docs-index.mjs","docs:stamp":"node scripts/docs-translation.mjs","export:pdf":"node scripts/frameseq.mjs pdf slides.ts --output output/pdf/frameseq.pdf","pack:check":"node scripts/package-test.mjs","export:pptx":"node scripts/frameseq.mjs pptx slides.ts --output output/pptx/frameseq.pptx","check:layout":"node scripts/frameseq.mjs check slides.ts","export:typst":"node scripts/frameseq.mjs typst slides.ts --output output/typst/frameseq.typ","vscode:check":"node scripts/inspect-test.mjs && npm ci --prefix packages/vscode-frameseq --ignore-scripts && npm --prefix packages/vscode-frameseq run check && node scripts/vscode-extension-test.mjs && node scripts/vscode-preview-test.mjs","build:gallery":"npm run build:package && node scripts/gallery-build.mjs","build:package":"vite build --config vite.lib.config.ts && tsc -p tsconfig.publish.json","gallery:check":"npm run build:gallery && node scripts/gallery-test.mjs","release:check":"npm test && npm run pack:check","vscode:package":"npm ci --prefix packages/vscode-frameseq --ignore-scripts && npm --prefix packages/vscode-frameseq run package","preview:gallery":"npm run build:gallery && vite preview --outDir dist/gallery --open","release:tag-check":"node scripts/release-tag-test.mjs"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:778ccbb5-0cdb-40c4-bc7a-b37d3e572213"}},"repository":{"url":"git+https://github.com/pride7/frameseq.git","type":"git"},"_npmVersion":"11.19.0","description":"Build editable, AI-friendly presentations with a linear TypeScript DSL.","directories":{},"_nodeVersion":"24.18.0","dependencies":{"vite":"^7.0.0","katex":"^0.16.22","qrcode":"^1.5.4","pptxgenjs":"^4.0.1","puppeteer":"^24.16.0","typescript":"^5.8.3","tailwindcss":"^4.3.3","@tailwindcss/vite":"^4.3.3"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org"},"_hasShrinkwrap":false,"devDependencies":{"jszip":"^3.10.1","marked":"^18.0.7","@types/node":"^24.0.0","@types/katex":"^0.16.7","@types/qrcode":"^1.5.6","node-tectonic":"^1.0.1","@myriaddreamin/typst-ts-node-compiler":"^0.7.0"},"peerDependencies":{"node-tectonic":"^1.0.1","@myriaddreamin/typst-ts-node-compiler":"^0.7.0"},"peerDependenciesMeta":{"node-tectonic":{"optional":true},"@myriaddreamin/typst-ts-node-compiler":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/frameseq_0.28.1_1785538604641_0.3723392643911607","host":"s3://npm-registry-packages-npm-production"}},"0.29.0":{"name":"@pride7/frameseq","version":"0.29.0","keywords":["slides","presentation","typescript","ai","typst","latex","html","pdf","dsl"],"license":"MIT","_id":"@pride7/frameseq@0.29.0","maintainers":[{"name":"pride7","email":"xsfeng07@gmail.com"}],"homepage":"https://github.com/pride7/frameseq#readme","bugs":{"url":"https://github.com/pride7/frameseq/issues"},"bin":{"frameseq":"scripts/frameseq.mjs"},"dist":{"shasum":"05bbae2d902714dc5954492d1147c2181586b05f","tarball":"https://registry.npmjs.org/@pride7/frameseq/-/frameseq-0.29.0.tgz","fileCount":84,"integrity":"sha512-v/T8ePsQ/rrl6ykYN3os+BNEPr44ZFiSQ7GrPqj3Xwc/THHkCzTMpMUSL8GGXTtPLs/jqN1H0526ye7DQowE7A==","signatures":[{"sig":"MEQCICpoDPpqqN22XO7zYir614WLDdMDIRSbKIQmpst+jKJ7AiBdB8evFEYxgZi0n5geIL57aw8KvXGTxLe3oSIMR1r1Lg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@pride7%2fframeseq@0.29.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":715870},"type":"module","types":"./lib/index.d.ts","engines":{"node":"^20.19.0 || >=22.12.0"},"exports":{".":{"types":"./lib/index.d.ts","import":"./lib/index.js"},"./globals":{"types":"./lib/globals.d.ts","default":"./lib/index.js"}},"gitHead":"261e674572d14b1b4c1ebed8f7ffd0e61171e305","scripts":{"dev":"node scripts/frameseq.mjs dev slides.ts","pptx":"node scripts/frameseq.mjs pptx slides.ts","test":"npm run build && npm run docs:check && node scripts/section-layout-test.mjs && npm run vscode:check && node scripts/puppeteer-options-test.mjs && node scripts/theme-test.mjs && node scripts/smoke-test.mjs && node scripts/beamer-smoke-test.mjs && node scripts/minimal-academic-smoke-test.mjs && node scripts/layout-check-test.mjs && node scripts/anchor-test.mjs && node scripts/region-path-test.mjs && node scripts/notes-test.mjs && node scripts/cjk-test.mjs && node scripts/flow-layout-test.mjs && node scripts/single-file-test.mjs && node scripts/source-map-test.mjs && node scripts/source-edit-test.mjs && node scripts/remote-control-test.mjs && node scripts/pptx-test.mjs && node scripts/typst-export-test.mjs && npm run gallery:check","build":"npm run build:package && npm run build:demo","check":"tsc --noEmit","typst":"node scripts/frameseq.mjs typst slides.ts","prepack":"npm run build:package","present":"node scripts/frameseq.mjs dev slides.ts --remote","preview":"vite preview --open","frameseq":"node scripts/frameseq.mjs","build:demo":"tsc --noEmit && vite build","docs:check":"node scripts/docs-test.mjs","docs:index":"node scripts/docs-index.mjs","docs:stamp":"node scripts/docs-translation.mjs","export:pdf":"node scripts/frameseq.mjs pdf slides.ts --output output/pdf/frameseq.pdf","pack:check":"node scripts/package-test.mjs","export:pptx":"node scripts/frameseq.mjs pptx slides.ts --output output/pptx/frameseq.pptx","check:layout":"node scripts/frameseq.mjs check slides.ts","export:typst":"node scripts/frameseq.mjs typst slides.ts --output output/typst/frameseq.typ","vscode:check":"node scripts/inspect-test.mjs && npm ci --prefix packages/vscode-frameseq --ignore-scripts && npm --prefix packages/vscode-frameseq run check && node scripts/vscode-extension-test.mjs && node scripts/vscode-preview-test.mjs","build:gallery":"npm run build:package && node scripts/gallery-build.mjs","build:package":"vite build --config vite.lib.config.ts && tsc -p tsconfig.publish.json","gallery:check":"npm run build:gallery && node scripts/gallery-test.mjs","release:check":"npm test && npm run pack:check","vscode:package":"npm ci --prefix packages/vscode-frameseq --ignore-scripts && npm --prefix packages/vscode-frameseq run package","preview:gallery":"npm run build:gallery && vite preview --outDir dist/gallery --open","release:tag-check":"node scripts/release-tag-test.mjs"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:778ccbb5-0cdb-40c4-bc7a-b37d3e572213"}},"repository":{"url":"git+https://github.com/pride7/frameseq.git","type":"git"},"_npmVersion":"11.19.0","description":"Build editable, AI-friendly presentations with a linear TypeScript DSL.","directories":{},"_nodeVersion":"24.18.0","dependencies":{"vite":"^7.0.0","katex":"^0.16.22","qrcode":"^1.5.4","pptxgenjs":"^4.0.1","puppeteer":"^24.16.0","typescript":"^5.8.3","tailwindcss":"^4.3.3","@tailwindcss/vite":"^4.3.3"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org"},"_hasShrinkwrap":false,"devDependencies":{"jszip":"^3.10.1","marked":"^18.0.7","@types/node":"^24.0.0","@types/katex":"^0.16.7","@types/qrcode":"^1.5.6","node-tectonic":"^1.0.1","@myriaddreamin/typst-ts-node-compiler":"^0.7.0"},"peerDependencies":{"node-tectonic":"^1.0.1","@myriaddreamin/typst-ts-node-compiler":"^0.7.0"},"peerDependenciesMeta":{"node-tectonic":{"optional":true},"@myriaddreamin/typst-ts-node-compiler":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/frameseq_0.29.0_1786098551302_0.5457186109137149","host":"s3://npm-registry-packages-npm-production"}},"0.30.0":{"name":"@pride7/frameseq","version":"0.30.0","keywords":["slides","presentation","typescript","ai","typst","latex","html","pdf","dsl"],"license":"MIT","_id":"@pride7/frameseq@0.30.0","maintainers":[{"name":"pride7","email":"xsfeng07@gmail.com"}],"homepage":"https://github.com/pride7/frameseq#readme","bugs":{"url":"https://github.com/pride7/frameseq/issues"},"bin":{"frameseq":"scripts/frameseq.mjs"},"dist":{"shasum":"83a413778a6cdc1a72b4b033a2bcaaf1da330cb0","tarball":"https://registry.npmjs.org/@pride7/frameseq/-/frameseq-0.30.0.tgz","fileCount":84,"integrity":"sha512-QcXjkBiS1rpMKYhMmgiSoL2Q3ZYwIart9NBDMNUfqqw1kYPWTeFYouaZzi97dGS7PLL3yqKgu9nFUgfg7b6kvw==","signatures":[{"sig":"MEUCIQDl9OA7nPWo7RVGiY30Zuzb8dfNIKOHLb8vlv2TN0ssVwIgCiLSrsclfbhd92+tYUs+Cyp9OZI7QFox/vvncxwYz90=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@pride7%2fframeseq@0.30.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":778955},"type":"module","types":"./lib/index.d.ts","engines":{"node":"^20.19.0 || >=22.12.0"},"exports":{".":{"types":"./lib/index.d.ts","import":"./lib/index.js"},"./globals":{"types":"./lib/globals.d.ts","default":"./lib/index.js"}},"gitHead":"1cf0be88ea7f6c5488662fe4e69bd0b59fb85a78","scripts":{"dev":"node scripts/frameseq.mjs dev slides.ts","pptx":"node scripts/frameseq.mjs pptx slides.ts","test":"npm run build && npm run docs:check && node scripts/section-layout-test.mjs && npm run vscode:check && node scripts/puppeteer-options-test.mjs && node scripts/theme-test.mjs && node scripts/smoke-test.mjs && node scripts/beamer-smoke-test.mjs && node scripts/minimal-academic-smoke-test.mjs && node scripts/layout-check-test.mjs && node scripts/anchor-test.mjs && node scripts/region-path-test.mjs && node scripts/notes-test.mjs && node scripts/cjk-test.mjs && node scripts/flow-layout-test.mjs && node scripts/single-file-test.mjs && node scripts/source-map-test.mjs && node scripts/source-edit-test.mjs && node scripts/remote-control-test.mjs && node scripts/pptx-test.mjs && node scripts/typst-export-test.mjs && npm run gallery:check","build":"npm run build:package && npm run build:demo","check":"tsc --noEmit","typst":"node scripts/frameseq.mjs typst slides.ts","prepack":"npm run build:package","present":"node scripts/frameseq.mjs dev slides.ts --remote","preview":"vite preview --open","frameseq":"node scripts/frameseq.mjs","build:demo":"tsc --noEmit && vite build","docs:check":"node scripts/docs-test.mjs","docs:index":"node scripts/docs-index.mjs","docs:stamp":"node scripts/docs-translation.mjs","export:pdf":"node scripts/frameseq.mjs pdf slides.ts --output output/pdf/frameseq.pdf","pack:check":"node scripts/package-test.mjs","export:pptx":"node scripts/frameseq.mjs pptx slides.ts --output output/pptx/frameseq.pptx","check:layout":"node scripts/frameseq.mjs check slides.ts","export:typst":"node scripts/frameseq.mjs typst slides.ts --output output/typst/frameseq.typ","vscode:check":"node scripts/inspect-test.mjs && npm ci --prefix packages/vscode-frameseq --ignore-scripts && npm --prefix packages/vscode-frameseq run compile && node scripts/vscode-region-test.mjs && node scripts/vscode-extension-test.mjs && node scripts/vscode-preview-test.mjs","build:gallery":"npm run build:package && node scripts/gallery-build.mjs","build:package":"vite build --config vite.lib.config.ts && tsc -p tsconfig.publish.json","gallery:check":"npm run build:gallery && node scripts/gallery-test.mjs","release:check":"npm test && npm run pack:check","vscode:package":"npm ci --prefix packages/vscode-frameseq --ignore-scripts && npm --prefix packages/vscode-frameseq run package","preview:gallery":"npm run build:gallery && vite preview --outDir dist/gallery --open","release:tag-check":"node scripts/release-tag-test.mjs"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:778ccbb5-0cdb-40c4-bc7a-b37d3e572213"}},"repository":{"url":"git+https://github.com/pride7/frameseq.git","type":"git"},"_npmVersion":"11.19.0","description":"Build editable, AI-friendly presentations with a linear TypeScript DSL.","directories":{},"_nodeVersion":"24.18.0","dependencies":{"vite":"^7.0.0","katex":"^0.16.22","qrcode":"^1.5.4","pptxgenjs":"^4.0.1","puppeteer":"^24.16.0","typescript":"^5.8.3","tailwindcss":"^4.3.3","@tailwindcss/vite":"^4.3.3"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org"},"_hasShrinkwrap":false,"devDependencies":{"jszip":"^3.10.1","marked":"^18.0.7","@types/node":"^24.0.0","@types/katex":"^0.16.7","@types/qrcode":"^1.5.6","node-tectonic":"^1.0.1","@myriaddreamin/typst-ts-node-compiler":"^0.7.0"},"peerDependencies":{"node-tectonic":"^1.0.1","@myriaddreamin/typst-ts-node-compiler":"^0.7.0"},"peerDependenciesMeta":{"node-tectonic":{"optional":true},"@myriaddreamin/typst-ts-node-compiler":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/frameseq_0.30.0_1786566301107_0.3783199378657762","host":"s3://npm-registry-packages-npm-production"}},"0.31.0":{"name":"@pride7/frameseq","version":"0.31.0","keywords":["slides","presentation","typescript","ai","typst","latex","html","pdf","dsl"],"license":"MIT","_id":"@pride7/frameseq@0.31.0","maintainers":[{"name":"pride7","email":"xsfeng07@gmail.com"}],"homepage":"https://github.com/pride7/frameseq#readme","bugs":{"url":"https://github.com/pride7/frameseq/issues"},"bin":{"frameseq":"scripts/frameseq.mjs"},"dist":{"shasum":"554a28339f4fcef5d505218a491a57b54ac00e19","tarball":"https://registry.npmjs.org/@pride7/frameseq/-/frameseq-0.31.0.tgz","fileCount":87,"integrity":"sha512-NV/o0+9mGkgBMU690WRSo7oOJNHF1WJB8d9FU3Qr/pIuLAX+hSdbakl+jnONYaG0sHT+eTPBfa390phR3g4ZDg==","signatures":[{"sig":"MEUCIDlefX2dS/8/7RKpLIRwYmA7PFs99N3f/92uyMgf496+AiEA/GfqejfwjFJq4tA13Vax3MjIiB48MdJ0FyvunQDWlVw=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@pride7%2fframeseq@0.31.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":794025},"type":"module","types":"./lib/index.d.ts","engines":{"node":"^20.19.0 || >=22.12.0"},"exports":{".":{"types":"./lib/index.d.ts","import":"./lib/index.js"},"./globals":{"types":"./lib/globals.d.ts","default":"./lib/index.js"}},"gitHead":"b87ad53ee2a7869ad28dd52e320d9eed88241bfc","scripts":{"dev":"node scripts/frameseq.mjs dev slides.ts","pptx":"node scripts/frameseq.mjs pptx slides.ts","test":"npm run build && npm run docs:check && node scripts/section-layout-test.mjs && npm run vscode:check && node scripts/puppeteer-options-test.mjs && node scripts/theme-test.mjs && node scripts/smoke-test.mjs && node scripts/beamer-smoke-test.mjs && node scripts/minimal-academic-smoke-test.mjs && node scripts/layout-check-test.mjs && node scripts/anchor-test.mjs && node scripts/region-path-test.mjs && node scripts/notes-test.mjs && node scripts/cjk-test.mjs && node scripts/flow-layout-test.mjs && node scripts/single-file-test.mjs && node scripts/source-map-test.mjs && node scripts/source-edit-test.mjs && node scripts/remote-control-test.mjs && node scripts/pptx-test.mjs && node scripts/typst-export-test.mjs && npm run gallery:check","build":"npm run build:package && npm run build:demo","check":"tsc --noEmit","typst":"node scripts/frameseq.mjs typst slides.ts","prepack":"npm run build:package","present":"node scripts/frameseq.mjs dev slides.ts --remote","preview":"vite preview --open","frameseq":"node scripts/frameseq.mjs","build:demo":"tsc --noEmit && vite build","docs:check":"node scripts/docs-test.mjs","docs:index":"node scripts/docs-index.mjs","docs:stamp":"node scripts/docs-translation.mjs","export:pdf":"node scripts/frameseq.mjs pdf slides.ts --output output/pdf/frameseq.pdf","pack:check":"node scripts/package-test.mjs","export:pptx":"node scripts/frameseq.mjs pptx slides.ts --output output/pptx/frameseq.pptx","check:layout":"node scripts/frameseq.mjs check slides.ts","export:typst":"node scripts/frameseq.mjs typst slides.ts --output output/typst/frameseq.typ","vscode:check":"node scripts/inspect-test.mjs && npm ci --prefix packages/vscode-frameseq --ignore-scripts && npm --prefix packages/vscode-frameseq run compile && node scripts/vscode-region-test.mjs && node scripts/vscode-entry-test.mjs && node scripts/vscode-extension-test.mjs && node scripts/vscode-preview-test.mjs","build:gallery":"npm run build:package && node scripts/gallery-build.mjs","build:package":"vite build --config vite.lib.config.ts && tsc -p tsconfig.publish.json","gallery:check":"npm run build:gallery && node scripts/gallery-test.mjs","release:check":"npm test && npm run pack:check","vscode:package":"npm ci --prefix packages/vscode-frameseq --ignore-scripts && npm --prefix packages/vscode-frameseq run package","preview:gallery":"npm run build:gallery && vite preview --outDir dist/gallery --open","release:tag-check":"node scripts/release-tag-test.mjs"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:778ccbb5-0cdb-40c4-bc7a-b37d3e572213"}},"repository":{"url":"git+https://github.com/pride7/frameseq.git","type":"git"},"_npmVersion":"11.19.0","description":"Build editable, AI-friendly presentations with a linear TypeScript DSL.","directories":{},"_nodeVersion":"24.18.0","dependencies":{"vite":"^7.0.0","katex":"^0.16.22","qrcode":"^1.5.4","pptxgenjs":"^4.0.1","puppeteer":"^24.16.0","typescript":"^5.8.3","tailwindcss":"^4.3.3","@tailwindcss/vite":"^4.3.3"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org"},"_hasShrinkwrap":false,"devDependencies":{"jszip":"^3.10.1","marked":"^18.0.7","@types/node":"^24.0.0","@types/katex":"^0.16.7","@types/qrcode":"^1.5.6","node-tectonic":"^1.0.1","@myriaddreamin/typst-ts-node-compiler":"^0.7.0"},"peerDependencies":{"node-tectonic":"^1.0.1","@myriaddreamin/typst-ts-node-compiler":"^0.7.0"},"peerDependenciesMeta":{"node-tectonic":{"optional":true},"@myriaddreamin/typst-ts-node-compiler":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/frameseq_0.31.0_1786595477389_0.07274060351064615","host":"s3://npm-registry-packages-npm-production"}},"0.32.0":{"name":"@pride7/frameseq","version":"0.32.0","keywords":["slides","presentation","typescript","ai","typst","latex","html","pdf","dsl"],"license":"MIT","_id":"@pride7/frameseq@0.32.0","maintainers":[{"name":"pride7","email":"xsfeng07@gmail.com"}],"homepage":"https://github.com/pride7/frameseq#readme","bugs":{"url":"https://github.com/pride7/frameseq/issues"},"bin":{"frameseq":"scripts/frameseq.mjs"},"dist":{"shasum":"9135c79d342747d8ef63a48273cff5deebb97b34","tarball":"https://registry.npmjs.org/@pride7/frameseq/-/frameseq-0.32.0.tgz","fileCount":87,"integrity":"sha512-PygrQ0jzAkRMSyIBj0r8uo0wqnAol/ok/2RCz2pF6OyUc6x6iUJc/c0x6EYvmVV8mfuXCnYM9a1uiN1x0mBmrQ==","signatures":[{"sig":"MEYCIQDJwoiO4ROhJq/npimSnZS3y4mxUqyJWPh6PKj7uftkuQIhAPQv+8y3wEf0WO7KpkCWR14HzlVrZXU3SQyZwEkqajsx","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@pride7%2fframeseq@0.32.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":798040},"type":"module","types":"./lib/index.d.ts","engines":{"node":"^20.19.0 || >=22.12.0"},"exports":{".":{"types":"./lib/index.d.ts","import":"./lib/index.js"},"./globals":{"types":"./lib/globals.d.ts","default":"./lib/index.js"}},"gitHead":"aa15b523b37799c60da785ddaa07509c3f199c50","scripts":{"dev":"node scripts/frameseq.mjs dev slides.ts","pptx":"node scripts/frameseq.mjs pptx slides.ts","test":"npm run build && npm run docs:check && node scripts/section-layout-test.mjs && npm run vscode:check && node scripts/puppeteer-options-test.mjs && node scripts/theme-test.mjs && node scripts/smoke-test.mjs && node scripts/beamer-smoke-test.mjs && node scripts/minimal-academic-smoke-test.mjs && node scripts/layout-check-test.mjs && node scripts/anchor-test.mjs && node scripts/region-path-test.mjs && node scripts/notes-test.mjs && node scripts/cjk-test.mjs && node scripts/flow-layout-test.mjs && node scripts/single-file-test.mjs && node scripts/source-map-test.mjs && node scripts/source-edit-test.mjs && node scripts/remote-control-test.mjs && node scripts/pptx-test.mjs && node scripts/typst-export-test.mjs && npm run gallery:check","build":"npm run build:package && npm run build:demo","check":"tsc --noEmit","typst":"node scripts/frameseq.mjs typst slides.ts","prepack":"npm run build:package","present":"node scripts/frameseq.mjs dev slides.ts --remote","preview":"vite preview --open","frameseq":"node scripts/frameseq.mjs","build:demo":"tsc --noEmit && vite build","docs:check":"node scripts/docs-test.mjs","docs:index":"node scripts/docs-index.mjs","docs:stamp":"node scripts/docs-translation.mjs","export:pdf":"node scripts/frameseq.mjs pdf slides.ts --output output/pdf/frameseq.pdf","pack:check":"node scripts/package-test.mjs","export:pptx":"node scripts/frameseq.mjs pptx slides.ts --output output/pptx/frameseq.pptx","check:layout":"node scripts/frameseq.mjs check slides.ts","export:typst":"node scripts/frameseq.mjs typst slides.ts --output output/typst/frameseq.typ","vscode:check":"node scripts/inspect-test.mjs && npm ci --prefix packages/vscode-frameseq --ignore-scripts && npm --prefix packages/vscode-frameseq run compile && node scripts/vscode-region-test.mjs && node scripts/vscode-entry-test.mjs && node scripts/vscode-extension-test.mjs && node scripts/vscode-preview-test.mjs","build:gallery":"npm run build:package && node scripts/gallery-build.mjs","build:package":"vite build --config vite.lib.config.ts && tsc -p tsconfig.publish.json","gallery:check":"npm run build:gallery && node scripts/gallery-test.mjs","release:check":"npm test && npm run pack:check","vscode:package":"npm ci --prefix packages/vscode-frameseq --ignore-scripts && npm --prefix packages/vscode-frameseq run package","preview:gallery":"npm run build:gallery && vite preview --outDir dist/gallery --open","release:tag-check":"node scripts/release-tag-test.mjs"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:778ccbb5-0cdb-40c4-bc7a-b37d3e572213"}},"repository":{"url":"git+https://github.com/pride7/frameseq.git","type":"git"},"_npmVersion":"11.19.0","description":"Build editable, AI-friendly presentations with a linear TypeScript DSL.","directories":{},"_nodeVersion":"24.18.0","dependencies":{"vite":"^7.0.0","katex":"^0.16.22","qrcode":"^1.5.4","pptxgenjs":"^4.0.1","puppeteer":"^24.16.0","typescript":"^5.8.3","tailwindcss":"^4.3.3","@tailwindcss/vite":"^4.3.3"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org"},"_hasShrinkwrap":false,"devDependencies":{"jszip":"^3.10.1","marked":"^18.0.7","@types/node":"^24.0.0","@types/katex":"^0.16.7","@types/qrcode":"^1.5.6","node-tectonic":"^1.0.1","@myriaddreamin/typst-ts-node-compiler":"^0.7.0"},"peerDependencies":{"node-tectonic":"^1.0.1","@myriaddreamin/typst-ts-node-compiler":"^0.7.0"},"peerDependenciesMeta":{"node-tectonic":{"optional":true},"@myriaddreamin/typst-ts-node-compiler":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/frameseq_0.32.0_1786598413711_0.19939417438499407","host":"s3://npm-registry-packages-npm-production"}},"0.33.0":{"name":"@pride7/frameseq","version":"0.33.0","keywords":["slides","presentation","typescript","ai","typst","latex","html","pdf","dsl"],"license":"MIT","_id":"@pride7/frameseq@0.33.0","maintainers":[{"name":"pride7","email":"xsfeng07@gmail.com"}],"homepage":"https://github.com/pride7/frameseq#readme","bugs":{"url":"https://github.com/pride7/frameseq/issues"},"bin":{"frameseq":"scripts/frameseq.mjs"},"dist":{"shasum":"a2379abff24c57dc0c4638e29a7cd05f777581e8","tarball":"https://registry.npmjs.org/@pride7/frameseq/-/frameseq-0.33.0.tgz","fileCount":87,"integrity":"sha512-vtG8u6nl1omwwsMLtZK7Awz+HH4F839MjrlEh0EOAdZauTDeUPR6Y7elX4J+dO3ZDrVaIrjscIz8oZswsJL/SA==","signatures":[{"sig":"MEYCIQCcbLqL+3c2QDbBcGaNOlJateTs/BTsUQML/JfRIiO7vQIhANO02qkBhmwBxuLIddgH9K2qUAH/ccZSPsdkeJTtxa+q","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@pride7%2fframeseq@0.33.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":805917},"type":"module","types":"./lib/index.d.ts","engines":{"node":"^20.19.0 || >=22.12.0"},"exports":{".":{"types":"./lib/index.d.ts","import":"./lib/index.js"},"./globals":{"types":"./lib/globals.d.ts","default":"./lib/index.js"}},"gitHead":"f250aa1193c5c70d63fb64fca8740610c865e17f","scripts":{"dev":"node scripts/frameseq.mjs dev slides.ts","pptx":"node scripts/frameseq.mjs pptx slides.ts","test":"npm run build && npm run docs:check && node scripts/section-layout-test.mjs && npm run vscode:check && node scripts/puppeteer-options-test.mjs && node scripts/theme-test.mjs && node scripts/smoke-test.mjs && node scripts/beamer-smoke-test.mjs && node scripts/minimal-academic-smoke-test.mjs && node scripts/layout-check-test.mjs && node scripts/anchor-test.mjs && node scripts/region-path-test.mjs && node scripts/notes-test.mjs && node scripts/cjk-test.mjs && node scripts/flow-layout-test.mjs && node scripts/single-file-test.mjs && node scripts/source-map-test.mjs && node scripts/source-edit-test.mjs && node scripts/remote-control-test.mjs && node scripts/pptx-test.mjs && node scripts/typst-export-test.mjs && npm run gallery:check","build":"npm run build:package && npm run build:demo","check":"tsc --noEmit","typst":"node scripts/frameseq.mjs typst slides.ts","prepack":"npm run build:package","present":"node scripts/frameseq.mjs dev slides.ts --remote","preview":"vite preview --open","frameseq":"node scripts/frameseq.mjs","build:demo":"tsc --noEmit && vite build","docs:check":"node scripts/docs-test.mjs","docs:index":"node scripts/docs-index.mjs","docs:stamp":"node scripts/docs-translation.mjs","export:pdf":"node scripts/frameseq.mjs pdf slides.ts --output output/pdf/frameseq.pdf","pack:check":"node scripts/package-test.mjs","export:pptx":"node scripts/frameseq.mjs pptx slides.ts --output output/pptx/frameseq.pptx","check:layout":"node scripts/frameseq.mjs check slides.ts","export:typst":"node scripts/frameseq.mjs typst slides.ts --output output/typst/frameseq.typ","vscode:check":"node scripts/inspect-test.mjs && npm ci --prefix packages/vscode-frameseq --ignore-scripts && npm --prefix packages/vscode-frameseq run compile && node scripts/vscode-region-test.mjs && node scripts/vscode-entry-test.mjs && node scripts/vscode-extension-test.mjs && node scripts/vscode-preview-test.mjs","build:gallery":"npm run build:package && node scripts/gallery-build.mjs","build:package":"vite build --config vite.lib.config.ts && tsc -p tsconfig.publish.json","gallery:check":"npm run build:gallery && node scripts/gallery-test.mjs","release:check":"npm test && npm run pack:check","vscode:package":"npm ci --prefix packages/vscode-frameseq --ignore-scripts && npm --prefix packages/vscode-frameseq run package","preview:gallery":"npm run build:gallery && vite preview --outDir dist/gallery --open","release:tag-check":"node scripts/release-tag-test.mjs"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:778ccbb5-0cdb-40c4-bc7a-b37d3e572213"}},"repository":{"url":"git+https://github.com/pride7/frameseq.git","type":"git"},"_npmVersion":"11.19.0","description":"Build editable, AI-friendly presentations with a linear TypeScript DSL.","directories":{},"_nodeVersion":"24.18.0","dependencies":{"vite":"^7.0.0","katex":"^0.16.22","qrcode":"^1.5.4","pptxgenjs":"^4.0.1","puppeteer":"^24.16.0","typescript":"^5.8.3","tailwindcss":"^4.3.3","@tailwindcss/vite":"^4.3.3"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org"},"_hasShrinkwrap":false,"devDependencies":{"jszip":"^3.10.1","marked":"^18.0.7","@types/node":"^24.0.0","@types/katex":"^0.16.7","@types/qrcode":"^1.5.6","node-tectonic":"^1.0.1","@myriaddreamin/typst-ts-node-compiler":"^0.7.0"},"peerDependencies":{"node-tectonic":"^1.0.1","@myriaddreamin/typst-ts-node-compiler":"^0.7.0"},"peerDependenciesMeta":{"node-tectonic":{"optional":true},"@myriaddreamin/typst-ts-node-compiler":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/frameseq_0.33.0_1786600452309_0.11954457775022309","host":"s3://npm-registry-packages-npm-production"}},"0.34.0":{"name":"@pride7/frameseq","version":"0.34.0","keywords":["slides","presentation","typescript","ai","typst","latex","html","pdf","dsl"],"license":"MIT","_id":"@pride7/frameseq@0.34.0","maintainers":[{"name":"pride7","email":"xsfeng07@gmail.com"}],"homepage":"https://github.com/pride7/frameseq#readme","bugs":{"url":"https://github.com/pride7/frameseq/issues"},"bin":{"frameseq":"scripts/frameseq.mjs"},"dist":{"shasum":"645958844613ded2803c5296321c3fbda7a2a795","tarball":"https://registry.npmjs.org/@pride7/frameseq/-/frameseq-0.34.0.tgz","fileCount":87,"integrity":"sha512-TN+WtAF704FtjbB7cIJF76gi/I1AXv2TWso+Z+HfPpPtDVZBopAERqqgSZ9bkmhpVYP3s47AJDqrwWizzpL5Vg==","signatures":[{"sig":"MEUCIG5R3CZKQuRM0J5VZHm5F015+AVhq7O1aCePWvwWmJGVAiEAhdrpTiWWH+/8DpY4SlbUFMdotroaVYoFMNSenL6rlas=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@pride7%2fframeseq@0.34.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":828214},"type":"module","types":"./lib/index.d.ts","engines":{"node":"^20.19.0 || >=22.12.0"},"exports":{".":{"types":"./lib/index.d.ts","import":"./lib/index.js"},"./globals":{"types":"./lib/globals.d.ts","default":"./lib/index.js"}},"gitHead":"e4d9febf5a4c6b0ea8b509b979fa5668124bd145","scripts":{"dev":"node scripts/frameseq.mjs dev slides.ts","pptx":"node scripts/frameseq.mjs pptx slides.ts","test":"npm run build && npm run docs:check && node scripts/section-layout-test.mjs && npm run vscode:check && node scripts/puppeteer-options-test.mjs && node scripts/theme-test.mjs && node scripts/smoke-test.mjs && node scripts/beamer-smoke-test.mjs && node scripts/minimal-academic-smoke-test.mjs && node scripts/layout-check-test.mjs && node scripts/anchor-test.mjs && node scripts/region-path-test.mjs && node scripts/notes-test.mjs && node scripts/cjk-test.mjs && node scripts/flow-layout-test.mjs && node scripts/single-file-test.mjs && node scripts/source-map-test.mjs && node scripts/source-edit-test.mjs && node scripts/remote-control-test.mjs && node scripts/pptx-test.mjs && node scripts/typst-export-test.mjs && npm run gallery:check","build":"npm run build:package && npm run build:demo","check":"tsc --noEmit","typst":"node scripts/frameseq.mjs typst slides.ts","prepack":"npm run build:package","present":"node scripts/frameseq.mjs dev slides.ts --remote","preview":"vite preview --open","frameseq":"node scripts/frameseq.mjs","build:demo":"tsc --noEmit && vite build","docs:check":"node scripts/docs-test.mjs","docs:index":"node scripts/docs-index.mjs","docs:stamp":"node scripts/docs-translation.mjs","export:pdf":"node scripts/frameseq.mjs pdf slides.ts --output output/pdf/frameseq.pdf","pack:check":"node scripts/package-test.mjs","export:pptx":"node scripts/frameseq.mjs pptx slides.ts --output output/pptx/frameseq.pptx","check:layout":"node scripts/frameseq.mjs check slides.ts","export:typst":"node scripts/frameseq.mjs typst slides.ts --output output/typst/frameseq.typ","vscode:check":"node scripts/inspect-test.mjs && npm ci --prefix packages/vscode-frameseq --ignore-scripts && npm --prefix packages/vscode-frameseq run compile && node scripts/vscode-region-test.mjs && node scripts/vscode-entry-test.mjs && node scripts/vscode-extension-test.mjs && node scripts/vscode-preview-test.mjs","build:gallery":"npm run build:package && node scripts/gallery-build.mjs","build:package":"vite build --config vite.lib.config.ts && tsc -p tsconfig.publish.json","gallery:check":"npm run build:gallery && node scripts/gallery-test.mjs","release:check":"npm test && npm run pack:check","vscode:package":"npm ci --prefix packages/vscode-frameseq --ignore-scripts && npm --prefix packages/vscode-frameseq run package","preview:gallery":"npm run build:gallery && vite preview --outDir dist/gallery --open","release:tag-check":"node scripts/release-tag-test.mjs"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:778ccbb5-0cdb-40c4-bc7a-b37d3e572213"}},"repository":{"url":"git+https://github.com/pride7/frameseq.git","type":"git"},"_npmVersion":"11.19.0","description":"Build editable, AI-friendly presentations with a linear TypeScript DSL.","directories":{},"_nodeVersion":"24.19.0","dependencies":{"vite":"^7.0.0","katex":"^0.16.22","qrcode":"^1.5.4","pptxgenjs":"^4.0.1","puppeteer":"^24.16.0","typescript":"^5.8.3","tailwindcss":"^4.3.3","@tailwindcss/vite":"^4.3.3"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org"},"_hasShrinkwrap":false,"devDependencies":{"jszip":"^3.10.1","marked":"^18.0.7","@types/node":"^24.0.0","@types/katex":"^0.16.7","@types/qrcode":"^1.5.6","node-tectonic":"^1.0.1","@myriaddreamin/typst-ts-node-compiler":"^0.7.0"},"peerDependencies":{"node-tectonic":"^1.0.1","@myriaddreamin/typst-ts-node-compiler":"^0.7.0"},"peerDependenciesMeta":{"node-tectonic":{"optional":true},"@myriaddreamin/typst-ts-node-compiler":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/frameseq_0.34.0_1786607544470_0.6339579383588025","host":"s3://npm-registry-packages-npm-production"}},"0.35.0":{"name":"@pride7/frameseq","version":"0.35.0","description":"Build editable, AI-friendly presentations with a linear TypeScript DSL.","keywords":["slides","presentation","typescript","ai","typst","latex","html","pdf","dsl"],"license":"MIT","homepage":"https://github.com/pride7/frameseq#readme","repository":{"type":"git","url":"git+https://github.com/pride7/frameseq.git"},"bugs":{"url":"https://github.com/pride7/frameseq/issues"},"type":"module","types":"./lib/index.d.ts","exports":{".":{"types":"./lib/index.d.ts","import":"./lib/index.js"},"./globals":{"types":"./lib/globals.d.ts","default":"./lib/index.js"}},"bin":{"frameseq":"scripts/frameseq.mjs"},"engines":{"node":"^20.19.0 || >=22.12.0"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org"},"scripts":{"dev":"node scripts/frameseq.mjs dev slides.ts","present":"node scripts/frameseq.mjs dev slides.ts --remote","build":"npm run build:package && npm run build:demo","build:package":"vite build --config vite.lib.config.ts && tsc -p tsconfig.publish.json","build:demo":"tsc --noEmit && vite build","build:gallery":"npm run build:package && node scripts/gallery-build.mjs","preview:gallery":"npm run build:gallery && vite preview --outDir dist/gallery --open","gallery:check":"npm run build:gallery && node scripts/gallery-test.mjs","preview":"vite preview --open","check":"tsc --noEmit","check:layout":"node scripts/frameseq.mjs check slides.ts","test":"npm run build && npm run docs:check && node scripts/section-layout-test.mjs && npm run vscode:check && node scripts/puppeteer-options-test.mjs && node scripts/theme-test.mjs && node scripts/smoke-test.mjs && node scripts/beamer-smoke-test.mjs && node scripts/minimal-academic-smoke-test.mjs && node scripts/layout-check-test.mjs && node scripts/anchor-test.mjs && node scripts/region-path-test.mjs && node scripts/notes-test.mjs && node scripts/cjk-test.mjs && node scripts/flow-layout-test.mjs && node scripts/single-file-test.mjs && node scripts/source-map-test.mjs && node scripts/source-edit-test.mjs && node scripts/remote-control-test.mjs && node scripts/pptx-test.mjs && node scripts/typst-export-test.mjs && npm run gallery:check","frameseq":"node scripts/frameseq.mjs","docs:check":"node scripts/docs-test.mjs","docs:index":"node scripts/docs-index.mjs","docs:stamp":"node scripts/docs-translation.mjs","export:pdf":"node scripts/frameseq.mjs pdf slides.ts --output output/pdf/frameseq.pdf","pptx":"node scripts/frameseq.mjs pptx slides.ts","export:pptx":"node scripts/frameseq.mjs pptx slides.ts --output output/pptx/frameseq.pptx","typst":"node scripts/frameseq.mjs typst slides.ts","export:typst":"node scripts/frameseq.mjs typst slides.ts --output output/typst/frameseq.typ","vscode:check":"node scripts/inspect-test.mjs && npm ci --prefix packages/vscode-frameseq --ignore-scripts && npm --prefix packages/vscode-frameseq run compile && node scripts/vscode-region-test.mjs && node scripts/vscode-entry-test.mjs && node scripts/vscode-extension-test.mjs && node scripts/vscode-preview-test.mjs","vscode:package":"npm ci --prefix packages/vscode-frameseq --ignore-scripts && npm --prefix packages/vscode-frameseq run package","pack:check":"node scripts/package-test.mjs","release:tag-check":"node scripts/release-tag-test.mjs","release:check":"npm test && npm run pack:check","prepack":"npm run build:package"},"dependencies":{"@tailwindcss/vite":"^4.3.3","katex":"^0.16.22","pptxgenjs":"^4.0.1","puppeteer":"^24.16.0","qrcode":"^1.5.4","tailwindcss":"^4.3.3","typescript":"^5.8.3","vite":"^7.0.0"},"devDependencies":{"@myriaddreamin/typst-ts-node-compiler":"^0.7.0","@types/katex":"^0.16.7","@types/node":"^24.0.0","@types/qrcode":"^1.5.6","jszip":"^3.10.1","marked":"^18.0.7","node-tectonic":"^1.0.1"},"peerDependencies":{"@myriaddreamin/typst-ts-node-compiler":"^0.7.0","node-tectonic":"^1.0.1"},"peerDependenciesMeta":{"@myriaddreamin/typst-ts-node-compiler":{"optional":true},"node-tectonic":{"optional":true}},"gitHead":"6c601b2eebe560390b117b2f5d98afefc466638b","_id":"@pride7/frameseq@0.35.0","_nodeVersion":"24.18.0","_npmVersion":"11.19.0","dist":{"integrity":"sha512-QWv5iLq0xGGn5H5keJ0MMMKI39LygXUqNsTpfm5k3kt/30P3kQW5d6+PDx1HWHRsrELxKS7L3UqeH81IDaPTHA==","shasum":"c6d4dd2a6999ce21addf28841a5b53e85de0eb8c","tarball":"https://registry.npmjs.org/@pride7/frameseq/-/frameseq-0.35.0.tgz","fileCount":87,"unpackedSize":834076,"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@pride7%2fframeseq@0.35.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEQCIC5NJzZYtFCQ0n08vQQQE5zU5l/R3OPmOOFwLpnVmBp9AiBR7/nnb5mPh3eXf/ay4ZIOKyjbITlVrYBnCc0giFQy4A=="}]},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:778ccbb5-0cdb-40c4-bc7a-b37d3e572213"}},"directories":{},"maintainers":[{"name":"pride7","email":"xsfeng07@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/frameseq_0.35.0_1786613324334_0.18937875447387675"},"_hasShrinkwrap":false}},"time":{"created":"2026-07-21T12:10:56.319Z","modified":"2026-08-13T09:28:44.873Z","0.1.0":"2026-07-21T12:10:56.831Z","0.1.1":"2026-07-21T12:36:12.903Z","0.2.0":"2026-07-21T13:05:01.611Z","0.2.1":"2026-07-21T13:09:01.265Z","0.3.0":"2026-07-21T15:00:34.890Z","0.4.0":"2026-07-21T15:17:36.766Z","0.5.0":"2026-07-21T15:43:16.863Z","0.5.1":"2026-07-21T16:10:25.854Z","0.6.0":"2026-07-21T17:18:56.015Z","0.7.0":"2026-07-21T17:35:09.842Z","0.8.0":"2026-07-21T18:11:38.093Z","0.9.0":"2026-07-21T18:29:09.420Z","0.10.0":"2026-07-22T00:00:28.397Z","0.11.0":"2026-07-22T00:57:50.203Z","0.12.0":"2026-07-22T01:30:20.265Z","0.13.0":"2026-07-22T01:56:40.621Z","0.13.1":"2026-07-22T02:26:09.652Z","0.14.0":"2026-07-22T04:17:55.330Z","0.15.0":"2026-07-22T04:44:29.199Z","0.16.0":"2026-07-22T05:14:20.296Z","0.16.1":"2026-07-22T05:32:51.217Z","0.17.0":"2026-07-22T05:55:02.874Z","0.18.0":"2026-07-22T06:43:08.354Z","0.19.0":"2026-07-22T08:16:33.494Z","0.20.0":"2026-07-22T12:43:57.532Z","0.21.0":"2026-07-23T01:45:57.905Z","0.21.1":"2026-07-23T02:01:22.339Z","0.21.2":"2026-07-23T02:17:28.419Z","0.22.0":"2026-07-23T02:56:43.977Z","0.22.1":"2026-07-23T03:34:45.725Z","0.23.0":"2026-07-31T10:54:45.442Z","0.24.0":"2026-07-31T11:18:50.631Z","0.25.0":"2026-07-31T19:02:56.932Z","0.26.0":"2026-07-31T19:43:19.403Z","0.27.0":"2026-07-31T20:21:19.530Z","0.27.1":"2026-07-31T21:03:35.578Z","0.28.0":"2026-07-31T21:42:17.236Z","0.28.1":"2026-07-31T22:56:44.825Z","0.29.0":"2026-08-07T10:29:11.513Z","0.30.0":"2026-08-12T20:25:01.346Z","0.31.0":"2026-08-13T04:31:17.592Z","0.32.0":"2026-08-13T05:20:13.914Z","0.33.0":"2026-08-13T05:54:12.468Z","0.34.0":"2026-08-13T07:52:24.611Z","0.35.0":"2026-08-13T09:28:44.550Z"},"bugs":{"url":"https://github.com/pride7/frameseq/issues"},"license":"MIT","homepage":"https://github.com/pride7/frameseq#readme","keywords":["slides","presentation","typescript","ai","typst","latex","html","pdf","dsl"],"repository":{"type":"git","url":"git+https://github.com/pride7/frameseq.git"},"description":"Build editable, AI-friendly presentations with a linear TypeScript DSL.","maintainers":[{"name":"pride7","email":"xsfeng07@gmail.com"}],"readme":"# FrameSeq\n\n**Write slides as an editable TypeScript document—not a tree of presentation markup.**\n\nFrameSeq is an AI-friendly presentation framework with a linear authoring model, useful design defaults, chainable styling, and HTML/PDF/PPTX/Typst output. It feels like building an interface, but the source stays as direct and readable as a document.\n\n[![CI](https://github.com/pride7/frameseq/actions/workflows/ci.yml/badge.svg)](https://github.com/pride7/frameseq/actions/workflows/ci.yml)\n[![Gallery](https://github.com/pride7/frameseq/actions/workflows/gallery.yml/badge.svg)](https://pride7.github.io/frameseq/)\n\n[中文文档](https://pride7.github.io/frameseq/docs/zh/) · [Try FrameSeq online](https://stackblitz.com/fork/github/pride7/frameseq/tree/main/examples/playground?file=slides.ts&startScript=dev&title=FrameSeq%20Playground) · [Explore the live Gallery](https://pride7.github.io/frameseq/) · [Read the documentation](https://pride7.github.io/frameseq/docs/) · [See what changed](https://pride7.github.io/frameseq/docs/changelog.html)\n\n```ts\npresentation({\n  title: \"A Better Way to Write Slides\",\n  author: \"Ada Lovelace\",\n  theme: \"minimal-academic\",\n});\n\nslide().cover();\n\nslide(\"Why FrameSeq\");\ntext(\"Presentation code should describe ideas, not boilerplate.\").lead();\nbullets(\n  \"One linear TypeScript file\",\n  \"Semantic layouts with useful defaults\",\n  \"Tailwind styling without configuration\",\n  \"Interactive HTML, PDF, editable PowerPoint, and Typst\",\n);\n\nslide(\"Results\").grid(3);\ncell(0); metric(\"12 min\", \"To first draft\");\ncell(1); metric(\"1 file\", \"To maintain\");\ncell(2); metric(\"3 formats\", \"HTML · PDF · PPTX\");\n\nslide(\"The model\");\ntext`Every command belongs to the current slide until the next $\\operatorname{slide}()$ call.`;\n```\n\nNo imports, wrapper components, nested DOM, or export statement are required in a `.slides.ts` entry file.\n\n## Table of contents\n\n- [Live Gallery](#live-gallery)\n- [Why FrameSeq](#why-frameseq)\n  - [Easier to edit than raw HTML](#easier-to-edit-than-raw-html)\n  - [A strong target language for AI](#a-strong-target-language-for-ai)\n  - [Progressive control](#progressive-control)\n- [Quick start](#quick-start)\n- [The document model](#the-document-model)\n- [Content](#content)\n  - [Formulas](#formulas)\n  - [Typst for complex typesetting](#typst-for-complex-typesetting)\n  - [LaTeX tables](#latex-tables)\n  - [Code, lists, images, and reveals](#code-lists-images-and-reveals)\n- [Layout](#layout)\n  - [Split](#split)\n  - [Grid](#grid)\n  - [Local grid section](#local-grid-section)\n  - [Freeform positioning](#freeform-positioning)\n  - [Shapes and connectors](#shapes-and-connectors)\n- [Styling](#styling)\n- [Themes and typography](#themes-and-typography)\n- [Visual Studio Code extension](#visual-studio-code-extension)\n- [Preview, build, and export](#preview-build-and-export)\n- [AI-friendly layout checks](#ai-friendly-layout-checks)\n- [Presenter view](#presenter-view)\n- [Advanced object API](#advanced-object-api)\n- [Documentation](#documentation)\n- [Continuous integration and changelog](#continuous-integration-and-changelog)\n- [Development](#development)\n\n## Live Gallery\n\nThe [FrameSeq Gallery](https://pride7.github.io/frameseq/) contains live, clickable presentations built from this repository: a product tour, a complete AI-oriented research example, and previews of all seven built-in themes. The previews are compiled FrameSeq pages rather than screenshots, so they always track the current runtime and themes.\n\n## Why FrameSeq\n\n### Easier to edit than raw HTML\n\nHTML is an excellent rendering target, but presentation source written directly as HTML quickly mixes content, nesting, layout, and styling. FrameSeq keeps the author's intent visible:\n\n```ts\nslide(\"Architecture\").split(\"40:60\");\n\nimage(\"pipeline.png\", \"Compiler pipeline\");\n\nright();\ntext(\"Three clear stages\").lead();\nbullets(\"Parse the document\", \"Build the page tree\", \"Render HTML, PDF, or PPTX\");\n```\n\nA slide starts with `slide()`; everything after it belongs to that slide until the next `slide()`. Layout changes are named operations such as `split()`, `grid()`, `right()`, and `cell()`. A local visual change stays attached to the object it affects.\n\nThis makes presentation code easier to read, rearrange, diff, and revise than a large hierarchy of generic elements.\n\n### A strong target language for AI\n\nFrameSeq is deliberately small and regular, which makes it well suited to AI-generated presentations:\n\n- The source expresses presentation intent instead of DOM implementation details.\n- Slide boundaries are explicit and require no indentation tree.\n- Semantic commands such as `lead()`, `bullets()`, `metric()`, and `split()` reduce arbitrary design decisions.\n- Local edits usually change a few lines without rebuilding an HTML structure.\n- TypeScript catches misspelled APIs and invalid arguments.\n- `frameseq check --json` gives agents empty-slide, measured overflow, clipping, and readability diagnostics they can correct directly.\n- Themes and presentation-wide typography let AI change the visual system without rewriting every slide.\n- The FrameSeq runtime owns rendering, navigation, responsive scaling, and HTML, PDF, PPTX, and Typst output.\n\nAn AI can generate a useful first draft with the semantic API, then a person can edit the same compact source. When a page needs more control, both can progressively add Tailwind utilities, custom themes, or low-level objects without abandoning the document.\n\nGive a coding agent the compact [`llms.txt`](https://github.com/pride7/frameseq/blob/main/llms.txt) contract, then use the [AI generation guide](https://pride7.github.io/frameseq/docs/ai-generation.html) for prompting, validation, and correction loops. The Gallery includes a [complete AI-oriented research example](https://pride7.github.io/frameseq/examples/ai-research/) and its [editable source](https://github.com/pride7/frameseq/blob/main/gallery/slides/ai-research.slides.ts).\n\n### Progressive control\n\nStart with defaults:\n\n```ts\nslide(\"One idea\");\ntext(\"A normal slide already has spacing and typography.\");\nbullets(\"First point\", \"Second point\");\n```\n\nAdd a structured layout:\n\n```ts\nslide(\"Results\").grid(3);\ncell(0); metric(\"42%\", \"Growth\");\ncell(1); metric(\"18K\", \"Users\");\ncell(2); metric(\"99.9%\", \"Uptime\");\n```\n\nStyle one object:\n\n```ts\ntext(\"Important\")\n  .style(\"text-4xl font-bold tracking-tight text-blue-600\");\n```\n\nOr drop down to the explicit object API for a completely custom composition. FrameSeq does not force every slide into the same abstraction level.\n\n## Quick start\n\nOpen the editable [FrameSeq Playground in StackBlitz](https://stackblitz.com/fork/github/pride7/frameseq/tree/main/examples/playground?file=slides.ts&startScript=dev&title=FrameSeq%20Playground) to change `slides.ts` and see the live presentation without installing anything.\n\nCreate a presentation project:\n\n```bash\nnpm create frameseq@latest my-talk\ncd my-talk\nnpm install\nnpm run dev\n```\n\nThe generated project contains:\n\n```text\nmy-talk/\n├── AGENTS.md\n├── CLAUDE.md\n├── components/\n│   ├── content.ts\n│   └── theme.ts\n├── slides.ts\n├── package.json\n└── tsconfig.json\n```\n\nEdit `slides.ts`; the browser preview updates as the file changes. Put reusable content functions in `components/content.ts` and project-wide design settings in `components/theme.ts`. The entry imports these files directly, without an extra `index.ts` layer. `AGENTS.md` gives coding agents the project's FrameSeq syntax, region, formula, and validation rules; `CLAUDE.md` imports the same instructions so they stay in sync.\n\nTo use FrameSeq in an existing TypeScript project:\n\n```bash\nnpm install --save-dev @pride7/frameseq\nnpx frameseq new my-talk.slides.ts\nnpx frameseq dev my-talk.slides.ts\n```\n\n## The document model\n\n```ts\npresentation(\"My Talk\");\n\nslide().cover();\ntext(\"Build slides like apps\").hero();\ntext(\"Keep them as easy to edit as documents\").subtitle();\ntext(\"Your name\").author();\n\nslide(\"Why\");\ntext(\"Common slides use useful defaults.\");\nbullets(\n  \"No layout boilerplate\",\n  \"KaTeX-powered formulas\",\n  \"Browser preview and PDF export\",\n);\n\nslide(\"Equation\");\nmath`\\int_{-\\infty}^{\\infty} e^{-x^2}\\,dx = \\sqrt{\\pi}`;\n```\n\n`presentation()` defines presentation-wide metadata and design options. `slide()` starts a page. Content commands add objects to the current page and return chainable builders.\n\nThe FrameSeq compiler injects the authoring commands and exports the presentation automatically. Ordinary TypeScript imports, variables, URLs, and functions remain available when the slides need them.\n\n## Content\n\n### Text roles\n\n```ts\ntext(\"Main title\").hero();\ntext(\"Supporting message\").subtitle();\ntext(\"SECTION 01\").eyebrow();\ntext(\"The important idea\").lead();\ntext(\"Source: Example\").caption();\ntext(\"A memorable sentence\").quote();\n```\n\nText roles provide consistent, theme-aware styling while remaining individually customizable.\n\n### Formulas\n\nUse a tagged template for display math:\n\n```ts\nmath`\\int_{-\\infty}^{\\infty} e^{-x^2}\\,dx = \\sqrt{\\pi}`;\n```\n\nUse `$...$` inside a tagged `text` template for inline math:\n\n```ts\ntext`Euler's identity is $e^{i\\pi} + 1 = 0$.`;\n```\n\nThe tagged forms preserve backslashes, so `String.raw` is unnecessary.\n\n### Typst for complex typesetting\n\nKeep FrameSeq in control of the presentation structure and use Typst for a complex local fragment. Install the optional build-time compiler:\n\n```bash\nnpm install --save-dev @myriaddreamin/typst-ts-node-compiler\n```\n\nThen use a static tagged template:\n\n```ts\nslide(\"Optimization\");\ntext(\"Objective function\").lead();\n\ntypst`\n  #set text(size: 22pt)\n  $ min_theta sum_(i=1)^n\n    loss(f_theta(x_i), y_i) + lambda norm(theta)^2 $\n`\n  .width(720);\n```\n\nFor larger fragments, keep Typst in its own file:\n\n```ts\ntypstFile(\"./figures/architecture.typ\")\n  .width(percent(100));\n```\n\nFrameSeq compiles embedded Typst to inline SVG during the Vite build. The browser receives no Typst compiler or WASM, and the fragment participates in normal FrameSeq layout and styling across HTML, PDF, and PPTX output. FrameSeq can also export the whole presentation as editable `.typ` source; native Typst fragments remain source, LaTeX formulas and basic text use MiTeX, and common LaTeX tables become native Typst tables. See [Typst integration and export](https://pride7.github.io/frameseq/docs/typst.html).\n\n### LaTeX tables\n\nKeep KaTeX for ordinary formulas and use the optional Tectonic backend when a slide needs a real LaTeX table. Install it locally:\n\n```bash\nnpm install --save-dev node-tectonic\n```\n\nThen place the table like any other FrameSeq object:\n\n```ts\nslide(\"Results\");\n\nlatex`\n  \\begin{tabular}{lrr}\n    \\toprule\n    Model & Accuracy & Latency \\\\\n    \\midrule\n    Baseline & 91.2\\% & 18 ms \\\\\n    FrameSeq & \\textbf{94.6\\%} & 12 ms \\\\\n    \\bottomrule\n  \\end{tabular}\n`\n  .width(820)\n  .position({ x: 180, y: 210 });\n```\n\n`latexFile(\"./tables/results.tex\")` keeps larger fragments in their own files. FrameSeq compiles static fragments at build time, embeds the generated fonts, caches the result by content, and preserves it across HTML, PDF, and PPTX export. See [LaTeX integration](https://pride7.github.io/frameseq/docs/latex.html) for supported packages and restrictions.\n\n### Code, lists, images, and reveals\n\n```ts\ncode(`const answer = 42;`, \"ts\");\n\nbullets(\"Readable source\", \"Useful defaults\", \"Flexible styling\");\n\nsteps(\"Introduce the problem\", \"Reveal the model\", \"Show the result\");\n\nimage(\"diagram.png\", \"System diagram\");\n```\n\n`steps()` reveals items during navigation. PDF and PPTX export include the fully revealed slide.\n\n## Layout\n\nFrameSeq uses a single-column layout by default. Add structure only where it communicates something useful.\n\n### Split\n\n```ts\nslide(\"Architecture\").split(\"40:60\");\n\nimage(\"diagram.png\", \"Compiler diagram\");\n\nright();\ntext(\"Compiler\").lead();\nbullets(\"TypeScript DSL\", \"HTML renderer\", \"PDF export\");\n```\n\n### Grid\n\n```ts\nslide(\"Comparison\").grid(3);\n\ncell(0);\ntext(\"Simple\").lead();\ntext(\"Useful defaults\");\n\ncell(1);\ntext(\"Flexible\").lead();\ntext(\"Tailwind or object styles\");\n\ncell(2);\ntext(\"Portable\").lead();\ntext(\"HTML and PDF\");\n```\n\n### Region paths\n\nGrouping usually forces source to nest. `at(path)` addresses a region instead, and creates the containers it names, so composition stays flat — one statement per object, no nesting, no closing call:\n\n```ts\nslide(\"Roadmap\").grid(2);\n\nat(\"cell0/now\").card();\ntext(\"Q3\").eyebrow();\nbullets(\"Anchors\", \"Region paths\");\n\nat(\"cell1/next\").card();\ntext(\"Q4\").eyebrow();\n\nat(\"cell0/now\");\ntext(\"Merged into main\").caption();\n```\n\nThe first segment can address a region the layout already owns, so `at(\"cell1\")` and `cell(1)` are the same region. Every other segment is created on first use, at any depth. Revisiting a path appends to the same region, which means a page can be written in the order that reads best. Paths reset with the next `slide()`, and each one doubles as an anchor name, so `line().to(\"stages\")` can connect to a positioned region.\n\n### Local grid section\n\nKeep the slide in its normal top-to-bottom flow and arrange only one group of objects as a grid. Each object passed to `gridSection()` becomes one cell:\n\n```ts\nslide(\"Results\");\n\ntext(\"Performance this quarter\");\n\ngridSection(\n  3,\n  metric(\"42%\", \"Growth\"),\n  metric(\"18K\", \"Users\"),\n  metric(\"99.9%\", \"Uptime\"),\n).gap(20);\n\ntext(\"All targets were exceeded.\");\n```\n\nUse `card()` for a common title-and-copy cell, or `group()` when one cell needs several independently styled objects:\n\n```ts\ngridSection(\n  3,\n  card(\"Declarative\", \"Readable source code\"),\n  card(\"Portable\", \"HTML, PDF and PPTX\"),\n  group(\n    text(\"AI-friendly\").bold(),\n    text(\"Easy to generate and revise\"),\n  ).card(),\n);\n```\n\nUnlike `slide().grid(3)`, a local grid does not take over the whole slide body. Content before and after it remains in the ordinary document flow.\n\nWhen the container reads better than its contents, name it with `at()` and keep writing normally:\n\n```ts\nat(\"panel\").card().padding(24);\ntext(\"Revenue\").bold();\ntext(\"$1.2M\").size(42);\n```\n\nCalling `.canvas()` on a container creates a local coordinate system for positioned children, and `.clip()` keeps them inside its bounds.\n\nObjects can also be grouped and restyled by name, which keeps the source free of local variables:\n\n```ts\nrect(\"Parse\").as(\"parse\");\nrect(\"Build\").as(\"build\");\nrect(\"Render\").as(\"render\");\n\ngroup(\"parse\", \"build\", \"render\").row().gap(16);\nref(\"parse\").fill(\"#dbeafe\");\n```\n\n`ref(name)` returns the same builder the object was created with, so shapes keep `.fill()`, connectors keep `.arrow()`, and containers keep `.gap()`. Names come from `.as()` or from an `at()` path.\n\n### Freeform positioning\n\nSwitch the slide body to a canvas when an object needs exact coordinates:\n\n```ts\nslide({ name: \"System map\" }).canvas();\n\ntext(\"Compiler\")\n  .position({ x: 80, y: 90 })\n  .width(320)\n  .size(32)\n  .bold();\n\nimage(\"diagram.png\", \"Compiler diagram\")\n  .position({ x: 500, y: 80 })\n  .width(620);\n```\n\nCoordinates are relative to the current canvas region. Numbers are pixels in FrameSeq's fixed presentation coordinate system; the default presentation canvas is 1280 x 720, and FrameSeq maps that finished geometry consistently to interactive HTML, PDF, and PPTX. Prefer structured layouts for most pages, then use `canvas()` with `position()` for diagrams and custom compositions.\n\n### Shapes and connectors\n\nCreate editable diagram nodes directly in the slide source. FrameSeq renders boxes and circles as HTML, while lines and arrowheads remain vector SVG:\n\n```ts\nslide({ name: \"Pipeline\" }).canvas();\n\nline({ x1: 320, y1: 180, x2: 520, y2: 180 })\n  .stroke(\"#2563eb\")\n  .strokeWidth(4)\n  .arrow(\"end\");\n\nrect(\"TypeScript\")\n  .position({ x: 80, y: 125 })\n  .width(240)\n  .height(110)\n  .fill(\"#dbeafe\")\n  .stroke(\"#2563eb\")\n  .radius(18);\n\ncircle(\"FrameSeq\")\n  .position({ x: 520, y: 100 })\n  .width(160)\n  .fill(\"#cffafe\")\n  .stroke(\"#0891b2\");\n```\n\nWrite connectors before nodes when the lines should appear behind them.\n\nDiagrams that reference names instead of numbers survive editing. Name an object with `as()`, then place and connect the rest relative to it:\n\n```ts\nslide({ name: \"Training loop\" }).canvas();\n\nrect(\"Encoder\").as(\"enc\").position({ x: 80, y: 140 }).width(200).height(100);\nrect(\"Decoder\").as(\"dec\").rightOf(\"enc\", 140);\ncircle(\"Loss\").as(\"loss\").rightOf(\"dec\", 140);\n\nline().from(\"enc\").to(\"dec\").arrow(\"end\");\nline().from(\"loss.bottom\").to(\"enc.bottom\").arrow(\"end\");\n\ntext(\"shared vocabulary\").caption().below(\"enc\", 16);\n```\n\nA row or column removes the coordinates altogether: the container carries the only one, its children lay themselves out, and connectors still find them.\n\n```ts\nslide({ name: \"Pipeline\" }).canvas();\n\nat(\"stages\").row().gap(80).anchor(\"center\");\nrect(\"Parse\").as(\"parse\");\nrect(\"Build\").as(\"build\");\nrect(\"Render\").as(\"render\");\n\nline().from(\"parse\").to(\"build\").arrow(\"end\");\nline().from(\"build\").to(\"render\").arrow(\"end\");\n```\n\nMoving the diagram is one edit, and `anchor()` places the container against the slide, so this page has no coordinates at all. Placement modifiers are `rightOf()`, `leftOf()`, `above()`, `below()`, `centerOn()`, `alignTop()`, `alignLeft()`, and `anchor()`. Connectors pick the facing edges automatically, or take an explicit anchor such as `\"enc.top-right\"`. Moving one box updates every connector attached to it. See [Diagrams](https://pride7.github.io/frameseq/docs/diagrams.html) for the complete model — region paths, automatic layout, names, and connectors — and [Shapes and connectors](https://pride7.github.io/frameseq/docs/shapes.html) for the primitives, arrow directions, layering, and custom SVG assets.\n\nOther layout tools include `center()`, `fullBleed()`, `left()`, and `main()`.\n\n## Styling\n\n### Tailwind, built in\n\nPass Tailwind utilities directly to `style()`; no Tailwind config is required:\n\n```ts\ntext(\"Designed in the source\")\n  .style(\"rounded-2xl bg-slate-900 px-8 py-5 text-3xl font-semibold text-white\");\n```\n\nArbitrary utilities such as `text-[30px]`, `left-[80px]`, and `bg-[#0f172a]` are supported.\n\n### Chainable modifiers\n\n```ts\ntext(\"A precise annotation\")\n  .size(18)\n  .weight(600)\n  .color(\"#475569\")\n  .margin(12, 0);\n```\n\nThe object overload of `style()` accepts inline CSS when needed:\n\n```ts\ntext(\"Custom\").style({\n  letterSpacing: \"0.08em\",\n  textTransform: \"uppercase\",\n});\n```\n\n## Themes and typography\n\nFrameSeq starts with a neutral `blank` theme. Choose a bundled theme:\n\n```ts\npresentation({ title: \"My Talk\", theme: \"midnight\" });\n```\n\nAcademic themes can build title bars, metadata footers, and slide numbers from presentation metadata:\n\n```ts\npresentation({\n  title: \"Diffusion Language Models\",\n  subtitle: \"From iterative recovery to continuous state spaces\",\n  author: \"Your Name\",\n  institute: \"Your Institute\",\n  date: \"2026\",\n  theme: \"minimal-academic\",\n});\n\nslide().cover();\n```\n\nOverride presentation-wide typography without creating a theme:\n\n```ts\npresentation({\n  title: \"My Talk\",\n  theme: \"minimal-academic\",\n  font: {\n    family: '\"Noto Sans SC\", sans-serif',\n    size: 24,\n    heading: { family: '\"Noto Serif SC\", serif', weight: 700 },\n    code: { family: '\"JetBrains Mono\", monospace', size: 18 },\n  },\n});\n```\n\nOr define a reusable design system:\n\n```ts\nconst ocean = defineTheme({\n  name: \"ocean\",\n  colors: {\n    background: \"#effcff\",\n    foreground: \"#15343b\",\n    accent: \"#007c91\",\n  },\n});\n\npresentation({ title: \"Ocean Research\", theme: ocean });\n```\n\n## Visual Studio Code extension\n\nFrameSeq includes a companion VS Code extension that keeps `slides.ts` on the left and a live preview on the right. It also provides a slide outline with source-and-preview synchronization, current/previous/next slide navigation, a current-slide status item, slide insertion, TypeScript snippets, Problems-panel layout diagnostics, and HTML/PDF/PPTX/Typst export commands. It consumes the same local FrameSeq CLI as the terminal workflow, so there is only one rendering and validation implementation.\n\nSynchronization also runs the other way. While `frameseq dev` is serving, hold Alt over the preview to outline the object under the pointer, and Alt-click it to jump to the command that wrote it: in the VS Code preview the cursor moves in the editor beside it, and in a browser the development server opens the file. A command inside a loop or a helper function produces several objects, so more than one of them can lead back to the same line. Source positions are recorded only while serving; a built presentation has none.\n\nThe `E` control goes one step further and turns on layout editing. An object placed with `position({ x, y })` can then be dragged, and one given a `width()` or a `height()` can be resized from its corner; releasing the drag rewrites those numbers in `slides.ts` and the preview reloads from the new source. Only the digits change, so comments and formatting are untouched, and a drag is refused outright if the numbers no longer match the file on disk. Escape leaves the mode.\n\n`Ctrl+Z` in the preview undoes the last drag. In a browser the development server keeps the text each drag replaced and puts it back verbatim; inside the VS Code preview the drag is applied through the workspace instead of written to disk behind the editor's back, so the editor's own undo covers it. Either way the history is dropped rather than misapplied once the document no longer matches it.\n\nAn object in the document flow has no coordinates to rewrite, so dragging it changes its place among its neighbours instead: the preview draws where it would land, and releasing it carries the whole lines its command occupies there, with any comment written above or beside it. This stays inside one run of the document—a `left()`, a `cell(1)`, a new `slide()`, or a `group(a, b)` that collects the objects above it each end a run, since carrying lines across one would change which region an object belongs to rather than only its order.\n\nEditing is deliberately limited to numbers the document states outright. `position({ x: cursor, y: 90 })` computes its x, and `for (const stage of stages) rect(stage)` writes one command that becomes several objects; in both cases no single number stands for what was dragged, so FrameSeq offers no handle rather than guessing. The source stays the only description of the talk—dragging is just another way to type a number into it.\n\nBuild the current extension from this repository:\n\n```bash\nnpm run vscode:package\ncode --install-extension output/vscode/frameseq-vscode.vsix\n```\n\nThe extension lives in `packages/vscode-frameseq` and the complete setup guide is in [Visual Studio Code extension](https://pride7.github.io/frameseq/docs/vscode.html).\n\n## Preview, build, and export\n\n```bash\n# Live browser preview\nframeseq dev my-talk.slides.ts\n\n# Static interactive website in dist/\nframeseq build my-talk.slides.ts\n\n# One self-contained dist/index.html\nframeseq build my-talk.slides.ts --single-file\n\n# PDF in output/pdf/\nframeseq pdf my-talk.slides.ts\n\n# Editable PowerPoint in output/pptx/\nframeseq pptx my-talk.slides.ts\n\n# Pixel-faithful PowerPoint with one image per slide\nframeseq pptx my-talk.slides.ts --flatten\n\n# Editable Typst source in output/typst/\nframeseq typst my-talk.slides.ts\n```\n\nThe default static build uses relative asset paths, so `dist/` can be hosted at a domain root or a repository subpath such as GitHub Pages. New projects include an Actions workflow that publishes `dist/` on pushes to `main` or `master`. The single-file build embeds the framework's scripts, styles, fonts, and favicon into one directly openable HTML file. PPTX export keeps normal text and shapes editable while using high-resolution image fallbacks for math, Typst, and LaTeX fragments; `--flatten` turns each complete slide into one image for maximum fidelity. Typst export keeps pages, grids, text, code, shapes, and positions editable, uses MiTeX for LaTeX math and basic text, and maps common LaTeX tables to native Typst tables. See [Deploy HTML](https://pride7.github.io/frameseq/docs/deployment.html), [Export PowerPoint](https://pride7.github.io/frameseq/docs/pptx.html), and [Typst integration and export](https://pride7.github.io/frameseq/docs/typst.html).\n\nArrow keys, Page Up/Page Down, and Space navigate the interactive presentation.\n\n## AI-friendly layout checks\n\nFrameSeq can inspect the final browser geometry and return actionable diagnostics instead of asking an AI agent to guess from source code:\n\n```bash\nframeseq check my-talk.slides.ts\nframeseq check my-talk.slides.ts --json\nframeseq check my-talk.slides.ts --strict\n```\n\nThe checker reports empty slides, objects outside the canvas, clipped text, and unreadably small type. Each issue includes the slide label, FrameSeq object type and path, relevant measurements, and suggested corrections. Mark a deliberate blank page with `slide().allowEmpty()`; `--json` produces stable machine-readable output for coding agents and CI. See [AI-friendly layout checks](https://pride7.github.io/frameseq/docs/layout-checks.html).\n\n## Presenter view\n\nAttach private notes to any slide:\n\n```ts\nslide(\"Architecture\")\n  .notes(\"Explain why FrameSeq owns structure while Typst owns complex local layout.\");\n```\n\nWhile viewing the presentation, press `P` or use the `P` button to open presenter view in a second window. It shows the current slide, next slide, speaker notes, timer, page selector, navigation controls, and a synchronized virtual laser pointer. Press `Ctrl+L` in presenter view to toggle the laser. The audience and presenter windows stay synchronized in both directions without a server.\n\nFor a phone remote on the same Wi-Fi, run:\n\n```bash\nnpm run present\n```\n\nSelect the `R` control and scan the QR code. The phone starts with large navigation controls, a current-slide preview, and a touch laser surface. Select **Presenter view** on the phone to see speaker notes, the next-slide preview, timer, and page selector; **Simple remote** returns to the touch-friendly controller without losing the pairing session. FrameSeq relays navigation, reveal steps, and pointer coordinates through the local presentation server—no account, internet connection, or cloud service is required.\n\nYou can also append `?presenter=1` to the audience page's current URL. For example, if the audience page is running on port `5174`:\n\n```text\nhttp://localhost:5174/?presenter=1\n```\n\nUse the port printed by `npm run dev`; Vite does not always use `5173` when that port is occupied.\n\nSame-device synchronization uses `BroadcastChannel`; phone pairing uses a local WebSocket only while `npm run present` is active. See [Presenter view](https://pride7.github.io/frameseq/docs/presenter.html).\n\n## Advanced object API\n\nThe linear authoring layer is recommended for most slides. The low-level UI layer is available for special compositions:\n\n```ts\nimport { Column, Image, Row, Slides, Text } from \"@pride7/frameseq\";\n\nconst slides = Slides(\"Custom layouts\");\n\nslides.slide(\"Architecture\").custom(\n  Row(\n    Image(\"diagram.png\"),\n    Column(\n      Text(\"Compiler\").size(32).bold(),\n      Text(\"DSL → HTML → PDF\").size(20),\n    ).gap(16),\n  ).gap(40),\n);\n\nexport default slides;\n```\n\nThis layer includes `SlidesRoot`, `Slide`, `Row`, `Column`, `Stack`, `Text`, `Image`, `Code`, `Equation`, and chainable modifiers.\n\n## Documentation\n\n- [Live Gallery](https://pride7.github.io/frameseq/)\n- [Getting started](https://pride7.github.io/frameseq/docs/getting-started.html)\n- [Function reference](https://pride7.github.io/frameseq/docs/function-guide.html)\n- [Categorized documentation](https://pride7.github.io/frameseq/docs/)\n- [Version changelog](https://github.com/pride7/frameseq/blob/main/CHANGELOG.md)\n\n## Continuous integration and changelog\n\nEvery push and pull request runs the complete `release:check` suite on GitHub Actions: types, themes, desktop and mobile browser behavior, layout diagnostics, remote control, Gallery, static and single-file HTML, PDF, editable and flattened PPTX, and installation from packed npm tarballs. A separate least-privilege workflow builds the live Gallery and deploys it to GitHub Pages only from `main`.\n\nUser-visible changes are recorded in [CHANGELOG.md](https://github.com/pride7/frameseq/blob/main/CHANGELOG.md). Add new work under **Unreleased**, then move it into a dated semantic-version section when publishing.\n\n## Development\n\nBefore publishing a FrameSeq release locally:\n\n```bash\nnpm run release:check\n```\n\nThe release check builds the library, demo, and Gallery, runs browser tests at desktop and mobile viewport sizes, packs and installs the npm tarballs in a clean project, type-checks the generated document, builds static HTML, and exports PDF and PPTX files.\n\nMaintainers can instead publish both npm packages from a matching version tag through GitHub OIDC. See [Release FrameSeq](https://pride7.github.io/frameseq/docs/releasing.html) for the one-time Trusted Publisher configuration and tag workflow.\n","readmeFilename":"README.md"}