@linloir/limr 0.0.0-stage → 0.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +21 -0
- package/README.md +197 -2
- package/benchmarks/results/browser.json +237 -0
- package/benchmarks/results/node.json +75 -0
- package/benchmarks/results/selection.json +172 -0
- package/dist/THIRD_PARTY_LICENSES.txt +117 -0
- package/dist/base.css +451 -0
- package/dist/chunk-65V5OZ4G.js +3070 -0
- package/dist/chunk-65V5OZ4G.js.map +1 -0
- package/dist/chunk-6N6TFHEN.js +83 -0
- package/dist/chunk-6N6TFHEN.js.map +1 -0
- package/dist/chunk-7JF5HHVF.js +465 -0
- package/dist/chunk-7JF5HHVF.js.map +1 -0
- package/dist/chunk-ETHLPBKQ.js +1193 -0
- package/dist/chunk-ETHLPBKQ.js.map +1 -0
- package/dist/chunk-V2OG4Y3F.js +1 -0
- package/dist/chunk-V2OG4Y3F.js.map +1 -0
- package/dist/core/index.d.ts +54 -0
- package/dist/core/index.js +37 -0
- package/dist/core/index.js.map +1 -0
- package/dist/engine-43u8B4yt.d.ts +172 -0
- package/dist/extensions/index.d.ts +130 -0
- package/dist/extensions/index.js +50 -0
- package/dist/extensions/index.js.map +1 -0
- package/dist/fonts/KaTeX_AMS-Regular.ttf +0 -0
- package/dist/fonts/KaTeX_AMS-Regular.woff +0 -0
- package/dist/fonts/KaTeX_AMS-Regular.woff2 +0 -0
- package/dist/fonts/KaTeX_Caligraphic-Bold.ttf +0 -0
- package/dist/fonts/KaTeX_Caligraphic-Bold.woff +0 -0
- package/dist/fonts/KaTeX_Caligraphic-Bold.woff2 +0 -0
- package/dist/fonts/KaTeX_Caligraphic-Regular.ttf +0 -0
- package/dist/fonts/KaTeX_Caligraphic-Regular.woff +0 -0
- package/dist/fonts/KaTeX_Caligraphic-Regular.woff2 +0 -0
- package/dist/fonts/KaTeX_Fraktur-Bold.ttf +0 -0
- package/dist/fonts/KaTeX_Fraktur-Bold.woff +0 -0
- package/dist/fonts/KaTeX_Fraktur-Bold.woff2 +0 -0
- package/dist/fonts/KaTeX_Fraktur-Regular.ttf +0 -0
- package/dist/fonts/KaTeX_Fraktur-Regular.woff +0 -0
- package/dist/fonts/KaTeX_Fraktur-Regular.woff2 +0 -0
- package/dist/fonts/KaTeX_Main-Bold.ttf +0 -0
- package/dist/fonts/KaTeX_Main-Bold.woff +0 -0
- package/dist/fonts/KaTeX_Main-Bold.woff2 +0 -0
- package/dist/fonts/KaTeX_Main-BoldItalic.ttf +0 -0
- package/dist/fonts/KaTeX_Main-BoldItalic.woff +0 -0
- package/dist/fonts/KaTeX_Main-BoldItalic.woff2 +0 -0
- package/dist/fonts/KaTeX_Main-Italic.ttf +0 -0
- package/dist/fonts/KaTeX_Main-Italic.woff +0 -0
- package/dist/fonts/KaTeX_Main-Italic.woff2 +0 -0
- package/dist/fonts/KaTeX_Main-Regular.ttf +0 -0
- package/dist/fonts/KaTeX_Main-Regular.woff +0 -0
- package/dist/fonts/KaTeX_Main-Regular.woff2 +0 -0
- package/dist/fonts/KaTeX_Math-BoldItalic.ttf +0 -0
- package/dist/fonts/KaTeX_Math-BoldItalic.woff +0 -0
- package/dist/fonts/KaTeX_Math-BoldItalic.woff2 +0 -0
- package/dist/fonts/KaTeX_Math-Italic.ttf +0 -0
- package/dist/fonts/KaTeX_Math-Italic.woff +0 -0
- package/dist/fonts/KaTeX_Math-Italic.woff2 +0 -0
- package/dist/fonts/KaTeX_SansSerif-Bold.ttf +0 -0
- package/dist/fonts/KaTeX_SansSerif-Bold.woff +0 -0
- package/dist/fonts/KaTeX_SansSerif-Bold.woff2 +0 -0
- package/dist/fonts/KaTeX_SansSerif-Italic.ttf +0 -0
- package/dist/fonts/KaTeX_SansSerif-Italic.woff +0 -0
- package/dist/fonts/KaTeX_SansSerif-Italic.woff2 +0 -0
- package/dist/fonts/KaTeX_SansSerif-Regular.ttf +0 -0
- package/dist/fonts/KaTeX_SansSerif-Regular.woff +0 -0
- package/dist/fonts/KaTeX_SansSerif-Regular.woff2 +0 -0
- package/dist/fonts/KaTeX_Script-Regular.ttf +0 -0
- package/dist/fonts/KaTeX_Script-Regular.woff +0 -0
- package/dist/fonts/KaTeX_Script-Regular.woff2 +0 -0
- package/dist/fonts/KaTeX_Size1-Regular.ttf +0 -0
- package/dist/fonts/KaTeX_Size1-Regular.woff +0 -0
- package/dist/fonts/KaTeX_Size1-Regular.woff2 +0 -0
- package/dist/fonts/KaTeX_Size2-Regular.ttf +0 -0
- package/dist/fonts/KaTeX_Size2-Regular.woff +0 -0
- package/dist/fonts/KaTeX_Size2-Regular.woff2 +0 -0
- package/dist/fonts/KaTeX_Size3-Regular.ttf +0 -0
- package/dist/fonts/KaTeX_Size3-Regular.woff +0 -0
- package/dist/fonts/KaTeX_Size3-Regular.woff2 +0 -0
- package/dist/fonts/KaTeX_Size4-Regular.ttf +0 -0
- package/dist/fonts/KaTeX_Size4-Regular.woff +0 -0
- package/dist/fonts/KaTeX_Size4-Regular.woff2 +0 -0
- package/dist/fonts/KaTeX_Typewriter-Regular.ttf +0 -0
- package/dist/fonts/KaTeX_Typewriter-Regular.woff +0 -0
- package/dist/fonts/KaTeX_Typewriter-Regular.woff2 +0 -0
- package/dist/fonts/LICENSE.txt +93 -0
- package/dist/fonts/manifest.json +2204 -0
- package/dist/fonts/maple-7.9-bold-005-5530d8c1d6.woff2 +0 -0
- package/dist/fonts/maple-7.9-bold-00f-1179d800a7.woff2 +0 -0
- package/dist/fonts/maple-7.9-bold-010-9974a942b1.woff2 +0 -0
- package/dist/fonts/maple-7.9-bold-011-9b9230baf2.woff2 +0 -0
- package/dist/fonts/maple-7.9-bold-012-c2545292b1.woff2 +0 -0
- package/dist/fonts/maple-7.9-bold-013-877b19fe05.woff2 +0 -0
- package/dist/fonts/maple-7.9-bold-014-6acf4a4e92.woff2 +0 -0
- package/dist/fonts/maple-7.9-bold-015-c889146da3.woff2 +0 -0
- package/dist/fonts/maple-7.9-bold-018-419ad5f31f.woff2 +0 -0
- package/dist/fonts/maple-7.9-bold-027-dd414483da.woff2 +0 -0
- package/dist/fonts/maple-7.9-bold-028-263744fbc7.woff2 +0 -0
- package/dist/fonts/maple-7.9-bold-029-ae3a163d8b.woff2 +0 -0
- package/dist/fonts/maple-7.9-bold-02a-515f0a82c2.woff2 +0 -0
- package/dist/fonts/maple-7.9-bold-02b-0823c5133d.woff2 +0 -0
- package/dist/fonts/maple-7.9-bold-02c-296fd5db38.woff2 +0 -0
- package/dist/fonts/maple-7.9-bold-02d-0bb4734363.woff2 +0 -0
- package/dist/fonts/maple-7.9-bold-02e-25415fed50.woff2 +0 -0
- package/dist/fonts/maple-7.9-bold-02f-19ed79a84e.woff2 +0 -0
- package/dist/fonts/maple-7.9-bold-030-21962a0327.woff2 +0 -0
- package/dist/fonts/maple-7.9-bold-031-d216fc0d68.woff2 +0 -0
- package/dist/fonts/maple-7.9-bold-032-d90ba34901.woff2 +0 -0
- package/dist/fonts/maple-7.9-bold-033-55ea37ea00.woff2 +0 -0
- package/dist/fonts/maple-7.9-bold-034-bc8649f808.woff2 +0 -0
- package/dist/fonts/maple-7.9-bold-035-03604fe40b.woff2 +0 -0
- package/dist/fonts/maple-7.9-bold-036-44fc7f77b2.woff2 +0 -0
- package/dist/fonts/maple-7.9-bold-037-8a1440f155.woff2 +0 -0
- package/dist/fonts/maple-7.9-bold-038-c65a618d5c.woff2 +0 -0
- package/dist/fonts/maple-7.9-bold-039-be05db966d.woff2 +0 -0
- package/dist/fonts/maple-7.9-bold-03a-ca3a10002d.woff2 +0 -0
- package/dist/fonts/maple-7.9-bold-03b-067b32e10b.woff2 +0 -0
- package/dist/fonts/maple-7.9-bold-03c-4da4f84530.woff2 +0 -0
- package/dist/fonts/maple-7.9-bold-03d-f0fe6a68c8.woff2 +0 -0
- package/dist/fonts/maple-7.9-bold-03e-0e97f89433.woff2 +0 -0
- package/dist/fonts/maple-7.9-bold-03f-3289a5e3bc.woff2 +0 -0
- package/dist/fonts/maple-7.9-bold-040-232dcd0d7b.woff2 +0 -0
- package/dist/fonts/maple-7.9-bold-041-e25e9a9c41.woff2 +0 -0
- package/dist/fonts/maple-7.9-bold-042-d64a2b1824.woff2 +0 -0
- package/dist/fonts/maple-7.9-bold-043-2d01cf5e52.woff2 +0 -0
- package/dist/fonts/maple-7.9-bold-044-0ab808b5f1.woff2 +0 -0
- package/dist/fonts/maple-7.9-bold-045-e41dc814b4.woff2 +0 -0
- package/dist/fonts/maple-7.9-bold-046-d5fe26344d.woff2 +0 -0
- package/dist/fonts/maple-7.9-bold-047-f322ded671.woff2 +0 -0
- package/dist/fonts/maple-7.9-bold-048-0cdcf7257f.woff2 +0 -0
- package/dist/fonts/maple-7.9-bold-049-aa280ca08a.woff2 +0 -0
- package/dist/fonts/maple-7.9-bold-04a-f51ad4d92c.woff2 +0 -0
- package/dist/fonts/maple-7.9-bold-04b-4e8c6fa3ee.woff2 +0 -0
- package/dist/fonts/maple-7.9-bold-04c-9bfdf4d743.woff2 +0 -0
- package/dist/fonts/maple-7.9-bold-04d-83ac1f5bb3.woff2 +0 -0
- package/dist/fonts/maple-7.9-bold-04e-bcec89804a.woff2 +0 -0
- package/dist/fonts/maple-7.9-bold-04f-d31e83b6ce.woff2 +0 -0
- package/dist/fonts/maple-7.9-bold-070-8a3b0fdf98.woff2 +0 -0
- package/dist/fonts/maple-7.9-bold-071-5bee0a62c4.woff2 +0 -0
- package/dist/fonts/maple-7.9-bold-072-97d891eee4.woff2 +0 -0
- package/dist/fonts/maple-7.9-bold-073-4d4c36aca0.woff2 +0 -0
- package/dist/fonts/maple-7.9-bold-074-6d3cc01e90.woff2 +0 -0
- package/dist/fonts/maple-7.9-bold-075-eab42ad657.woff2 +0 -0
- package/dist/fonts/maple-7.9-bold-076-2b1f5c4a42.woff2 +0 -0
- package/dist/fonts/maple-7.9-bold-077-1db0d50873.woff2 +0 -0
- package/dist/fonts/maple-7.9-bold-078-bc6994a28f.woff2 +0 -0
- package/dist/fonts/maple-7.9-bold-079-ad6c1757ce.woff2 +0 -0
- package/dist/fonts/maple-7.9-bold-07a-d08ed2b87d.woff2 +0 -0
- package/dist/fonts/maple-7.9-bold-07f-2f4af46cc6.woff2 +0 -0
- package/dist/fonts/maple-7.9-bold-0fc-42ed90884c.woff2 +0 -0
- package/dist/fonts/maple-7.9-bold-780-261fac1b24.woff2 +0 -0
- package/dist/fonts/maple-7.9-bold-781-377319a91b.woff2 +0 -0
- package/dist/fonts/maple-7.9-bold-782-3106f0be62.woff2 +0 -0
- package/dist/fonts/maple-7.9-bold-783-74fbfa8648.woff2 +0 -0
- package/dist/fonts/maple-7.9-bold-784-8570270664.woff2 +0 -0
- package/dist/fonts/maple-7.9-bold-785-cee8de1ded.woff2 +0 -0
- package/dist/fonts/maple-7.9-bold-786-5ab5ff7149.woff2 +0 -0
- package/dist/fonts/maple-7.9-bold-787-844b4c4373.woff2 +0 -0
- package/dist/fonts/maple-7.9-bold-788-01731198ab.woff2 +0 -0
- package/dist/fonts/maple-7.9-bold-789-f4c75fa806.woff2 +0 -0
- package/dist/fonts/maple-7.9-bold-78a-4370321ec6.woff2 +0 -0
- package/dist/fonts/maple-7.9-bold-78b-5cd412b56f.woff2 +0 -0
- package/dist/fonts/maple-7.9-bold-78c-f88e331085.woff2 +0 -0
- package/dist/fonts/maple-7.9-bold-78d-1b9b77f6e8.woff2 +0 -0
- package/dist/fonts/maple-7.9-bold-latin-3b4b2831f3.woff2 +0 -0
- package/dist/fonts/maple-7.9-bolditalic-005-d59fef8639.woff2 +0 -0
- package/dist/fonts/maple-7.9-bolditalic-00f-1bbda7af69.woff2 +0 -0
- package/dist/fonts/maple-7.9-bolditalic-010-5cdd4b46a7.woff2 +0 -0
- package/dist/fonts/maple-7.9-bolditalic-011-0d1f1ae687.woff2 +0 -0
- package/dist/fonts/maple-7.9-bolditalic-012-4ceb000b2e.woff2 +0 -0
- package/dist/fonts/maple-7.9-bolditalic-013-ad0a4f4313.woff2 +0 -0
- package/dist/fonts/maple-7.9-bolditalic-014-94d54b71b3.woff2 +0 -0
- package/dist/fonts/maple-7.9-bolditalic-015-7aede280da.woff2 +0 -0
- package/dist/fonts/maple-7.9-bolditalic-018-f21221b1c2.woff2 +0 -0
- package/dist/fonts/maple-7.9-bolditalic-027-d23d0e80a4.woff2 +0 -0
- package/dist/fonts/maple-7.9-bolditalic-028-23bd6f24df.woff2 +0 -0
- package/dist/fonts/maple-7.9-bolditalic-029-c481c0ad50.woff2 +0 -0
- package/dist/fonts/maple-7.9-bolditalic-02a-1c134be68e.woff2 +0 -0
- package/dist/fonts/maple-7.9-bolditalic-02b-3feb29ecfd.woff2 +0 -0
- package/dist/fonts/maple-7.9-bolditalic-02c-de8cc5a063.woff2 +0 -0
- package/dist/fonts/maple-7.9-bolditalic-02d-ea25c21fad.woff2 +0 -0
- package/dist/fonts/maple-7.9-bolditalic-02e-e68d6bd335.woff2 +0 -0
- package/dist/fonts/maple-7.9-bolditalic-02f-c88d1e92dc.woff2 +0 -0
- package/dist/fonts/maple-7.9-bolditalic-030-f26fefe87e.woff2 +0 -0
- package/dist/fonts/maple-7.9-bolditalic-031-f2aa1b8e22.woff2 +0 -0
- package/dist/fonts/maple-7.9-bolditalic-032-c4fafc4aa6.woff2 +0 -0
- package/dist/fonts/maple-7.9-bolditalic-033-288a1639ca.woff2 +0 -0
- package/dist/fonts/maple-7.9-bolditalic-034-7c982125bc.woff2 +0 -0
- package/dist/fonts/maple-7.9-bolditalic-035-fd1575dea2.woff2 +0 -0
- package/dist/fonts/maple-7.9-bolditalic-036-f6bf406353.woff2 +0 -0
- package/dist/fonts/maple-7.9-bolditalic-037-8ac1466916.woff2 +0 -0
- package/dist/fonts/maple-7.9-bolditalic-038-e9f7fed6a6.woff2 +0 -0
- package/dist/fonts/maple-7.9-bolditalic-039-6f90d42310.woff2 +0 -0
- package/dist/fonts/maple-7.9-bolditalic-03a-30c9409a7e.woff2 +0 -0
- package/dist/fonts/maple-7.9-bolditalic-03b-4f1741e9e9.woff2 +0 -0
- package/dist/fonts/maple-7.9-bolditalic-03c-6551c74e78.woff2 +0 -0
- package/dist/fonts/maple-7.9-bolditalic-03d-c8e2b07106.woff2 +0 -0
- package/dist/fonts/maple-7.9-bolditalic-03e-c3e98613d4.woff2 +0 -0
- package/dist/fonts/maple-7.9-bolditalic-03f-f1c580bad4.woff2 +0 -0
- package/dist/fonts/maple-7.9-bolditalic-040-32e8260076.woff2 +0 -0
- package/dist/fonts/maple-7.9-bolditalic-041-39805a0ed7.woff2 +0 -0
- package/dist/fonts/maple-7.9-bolditalic-042-13b4d84cd3.woff2 +0 -0
- package/dist/fonts/maple-7.9-bolditalic-043-d85780d0bd.woff2 +0 -0
- package/dist/fonts/maple-7.9-bolditalic-044-1b5eb624d7.woff2 +0 -0
- package/dist/fonts/maple-7.9-bolditalic-045-ad0b4f8762.woff2 +0 -0
- package/dist/fonts/maple-7.9-bolditalic-046-9966021b3a.woff2 +0 -0
- package/dist/fonts/maple-7.9-bolditalic-047-100d4f6f4e.woff2 +0 -0
- package/dist/fonts/maple-7.9-bolditalic-048-a0a1e8b29c.woff2 +0 -0
- package/dist/fonts/maple-7.9-bolditalic-049-0806f9b3cc.woff2 +0 -0
- package/dist/fonts/maple-7.9-bolditalic-04a-28fdef78b3.woff2 +0 -0
- package/dist/fonts/maple-7.9-bolditalic-04b-6e93ef0086.woff2 +0 -0
- package/dist/fonts/maple-7.9-bolditalic-04c-50b8da6282.woff2 +0 -0
- package/dist/fonts/maple-7.9-bolditalic-04d-f93277723d.woff2 +0 -0
- package/dist/fonts/maple-7.9-bolditalic-04e-72e2644690.woff2 +0 -0
- package/dist/fonts/maple-7.9-bolditalic-04f-4f234f1802.woff2 +0 -0
- package/dist/fonts/maple-7.9-bolditalic-070-a3658a8a23.woff2 +0 -0
- package/dist/fonts/maple-7.9-bolditalic-071-4987e49732.woff2 +0 -0
- package/dist/fonts/maple-7.9-bolditalic-072-e587fa72cd.woff2 +0 -0
- package/dist/fonts/maple-7.9-bolditalic-073-2aca01fdf6.woff2 +0 -0
- package/dist/fonts/maple-7.9-bolditalic-074-ae89f99a60.woff2 +0 -0
- package/dist/fonts/maple-7.9-bolditalic-075-5a77191665.woff2 +0 -0
- package/dist/fonts/maple-7.9-bolditalic-076-4c54a87277.woff2 +0 -0
- package/dist/fonts/maple-7.9-bolditalic-077-e47dce25ee.woff2 +0 -0
- package/dist/fonts/maple-7.9-bolditalic-078-b0b720dab6.woff2 +0 -0
- package/dist/fonts/maple-7.9-bolditalic-079-316ee96f6a.woff2 +0 -0
- package/dist/fonts/maple-7.9-bolditalic-07a-b10ccb8107.woff2 +0 -0
- package/dist/fonts/maple-7.9-bolditalic-07d-5667cb3be1.woff2 +0 -0
- package/dist/fonts/maple-7.9-bolditalic-07f-2ac6735ff8.woff2 +0 -0
- package/dist/fonts/maple-7.9-bolditalic-0fc-52171ca01e.woff2 +0 -0
- package/dist/fonts/maple-7.9-bolditalic-780-3c090c5f89.woff2 +0 -0
- package/dist/fonts/maple-7.9-bolditalic-781-ca4077b4fa.woff2 +0 -0
- package/dist/fonts/maple-7.9-bolditalic-782-42c3d52206.woff2 +0 -0
- package/dist/fonts/maple-7.9-bolditalic-783-d72840dd37.woff2 +0 -0
- package/dist/fonts/maple-7.9-bolditalic-784-b9ca097e50.woff2 +0 -0
- package/dist/fonts/maple-7.9-bolditalic-785-b81dec6af9.woff2 +0 -0
- package/dist/fonts/maple-7.9-bolditalic-786-76c266f6f5.woff2 +0 -0
- package/dist/fonts/maple-7.9-bolditalic-787-403bd73766.woff2 +0 -0
- package/dist/fonts/maple-7.9-bolditalic-788-71a4b8c2c5.woff2 +0 -0
- package/dist/fonts/maple-7.9-bolditalic-789-94527f3fa4.woff2 +0 -0
- package/dist/fonts/maple-7.9-bolditalic-78a-81918568b8.woff2 +0 -0
- package/dist/fonts/maple-7.9-bolditalic-78b-d0302b4bfe.woff2 +0 -0
- package/dist/fonts/maple-7.9-bolditalic-78c-e864792049.woff2 +0 -0
- package/dist/fonts/maple-7.9-bolditalic-78d-105ff69bf4.woff2 +0 -0
- package/dist/fonts/maple-7.9-bolditalic-latin-96412d165b.woff2 +0 -0
- package/dist/fonts/maple-7.9-italic-005-23b09473f8.woff2 +0 -0
- package/dist/fonts/maple-7.9-italic-00f-e9bf4dd93c.woff2 +0 -0
- package/dist/fonts/maple-7.9-italic-010-22933d6d77.woff2 +0 -0
- package/dist/fonts/maple-7.9-italic-011-71b0157ddc.woff2 +0 -0
- package/dist/fonts/maple-7.9-italic-012-b751ab3752.woff2 +0 -0
- package/dist/fonts/maple-7.9-italic-013-530b1d3f8b.woff2 +0 -0
- package/dist/fonts/maple-7.9-italic-014-0e842f6749.woff2 +0 -0
- package/dist/fonts/maple-7.9-italic-015-642211b03a.woff2 +0 -0
- package/dist/fonts/maple-7.9-italic-018-0c5b0001c6.woff2 +0 -0
- package/dist/fonts/maple-7.9-italic-027-9a09afbbb1.woff2 +0 -0
- package/dist/fonts/maple-7.9-italic-028-93fea67326.woff2 +0 -0
- package/dist/fonts/maple-7.9-italic-029-7d7627d4cc.woff2 +0 -0
- package/dist/fonts/maple-7.9-italic-02a-88e76d051b.woff2 +0 -0
- package/dist/fonts/maple-7.9-italic-02b-7d9219748b.woff2 +0 -0
- package/dist/fonts/maple-7.9-italic-02c-049df19d84.woff2 +0 -0
- package/dist/fonts/maple-7.9-italic-02d-663fc73c6e.woff2 +0 -0
- package/dist/fonts/maple-7.9-italic-02e-a98ed33998.woff2 +0 -0
- package/dist/fonts/maple-7.9-italic-02f-8ef9d93d09.woff2 +0 -0
- package/dist/fonts/maple-7.9-italic-030-74885d994d.woff2 +0 -0
- package/dist/fonts/maple-7.9-italic-031-4cf66c5d65.woff2 +0 -0
- package/dist/fonts/maple-7.9-italic-032-a608b7aed4.woff2 +0 -0
- package/dist/fonts/maple-7.9-italic-033-2978f66e55.woff2 +0 -0
- package/dist/fonts/maple-7.9-italic-034-38f7a0bf87.woff2 +0 -0
- package/dist/fonts/maple-7.9-italic-035-5cc45cd3b7.woff2 +0 -0
- package/dist/fonts/maple-7.9-italic-036-ca92d327e5.woff2 +0 -0
- package/dist/fonts/maple-7.9-italic-037-f887681c7d.woff2 +0 -0
- package/dist/fonts/maple-7.9-italic-038-06150b88f8.woff2 +0 -0
- package/dist/fonts/maple-7.9-italic-039-761da333b7.woff2 +0 -0
- package/dist/fonts/maple-7.9-italic-03a-1408ddaf2c.woff2 +0 -0
- package/dist/fonts/maple-7.9-italic-03b-1542b3b67c.woff2 +0 -0
- package/dist/fonts/maple-7.9-italic-03c-479f2f5011.woff2 +0 -0
- package/dist/fonts/maple-7.9-italic-03d-0f10590b11.woff2 +0 -0
- package/dist/fonts/maple-7.9-italic-03e-8b93e0ee0e.woff2 +0 -0
- package/dist/fonts/maple-7.9-italic-03f-2bd8815e3e.woff2 +0 -0
- package/dist/fonts/maple-7.9-italic-040-b85023679a.woff2 +0 -0
- package/dist/fonts/maple-7.9-italic-041-eb881b7b92.woff2 +0 -0
- package/dist/fonts/maple-7.9-italic-042-01490a139e.woff2 +0 -0
- package/dist/fonts/maple-7.9-italic-043-ffb21b6c4c.woff2 +0 -0
- package/dist/fonts/maple-7.9-italic-044-05cd1a1b14.woff2 +0 -0
- package/dist/fonts/maple-7.9-italic-045-1270935363.woff2 +0 -0
- package/dist/fonts/maple-7.9-italic-046-857077eab1.woff2 +0 -0
- package/dist/fonts/maple-7.9-italic-047-ca57774cc3.woff2 +0 -0
- package/dist/fonts/maple-7.9-italic-048-20969d6307.woff2 +0 -0
- package/dist/fonts/maple-7.9-italic-049-4066aa1a18.woff2 +0 -0
- package/dist/fonts/maple-7.9-italic-04a-1ed360d580.woff2 +0 -0
- package/dist/fonts/maple-7.9-italic-04b-2eba62d76b.woff2 +0 -0
- package/dist/fonts/maple-7.9-italic-04c-2f4effc460.woff2 +0 -0
- package/dist/fonts/maple-7.9-italic-04d-d858c0a9c1.woff2 +0 -0
- package/dist/fonts/maple-7.9-italic-04e-a19eb0289f.woff2 +0 -0
- package/dist/fonts/maple-7.9-italic-04f-8addde15f2.woff2 +0 -0
- package/dist/fonts/maple-7.9-italic-070-f0bd641f1c.woff2 +0 -0
- package/dist/fonts/maple-7.9-italic-071-e6ac564431.woff2 +0 -0
- package/dist/fonts/maple-7.9-italic-072-e6fea65bca.woff2 +0 -0
- package/dist/fonts/maple-7.9-italic-073-71621c00dc.woff2 +0 -0
- package/dist/fonts/maple-7.9-italic-074-4bd488962a.woff2 +0 -0
- package/dist/fonts/maple-7.9-italic-075-2838d95bd6.woff2 +0 -0
- package/dist/fonts/maple-7.9-italic-076-94e02ecc03.woff2 +0 -0
- package/dist/fonts/maple-7.9-italic-077-32c536ab6b.woff2 +0 -0
- package/dist/fonts/maple-7.9-italic-078-18256447bd.woff2 +0 -0
- package/dist/fonts/maple-7.9-italic-079-7a735e61cf.woff2 +0 -0
- package/dist/fonts/maple-7.9-italic-07a-2b57a6a905.woff2 +0 -0
- package/dist/fonts/maple-7.9-italic-07d-8ba1bbfb50.woff2 +0 -0
- package/dist/fonts/maple-7.9-italic-07f-0240d80c69.woff2 +0 -0
- package/dist/fonts/maple-7.9-italic-0fc-e5b20a692e.woff2 +0 -0
- package/dist/fonts/maple-7.9-italic-780-093cc90a9b.woff2 +0 -0
- package/dist/fonts/maple-7.9-italic-781-f6ec357f6d.woff2 +0 -0
- package/dist/fonts/maple-7.9-italic-782-5ca2ef4ddd.woff2 +0 -0
- package/dist/fonts/maple-7.9-italic-783-7450baabee.woff2 +0 -0
- package/dist/fonts/maple-7.9-italic-784-14a93cc4bd.woff2 +0 -0
- package/dist/fonts/maple-7.9-italic-785-d62fb8b4d7.woff2 +0 -0
- package/dist/fonts/maple-7.9-italic-786-1d2959dc83.woff2 +0 -0
- package/dist/fonts/maple-7.9-italic-787-70ae947136.woff2 +0 -0
- package/dist/fonts/maple-7.9-italic-788-cf1f156ebf.woff2 +0 -0
- package/dist/fonts/maple-7.9-italic-789-f0b79f9680.woff2 +0 -0
- package/dist/fonts/maple-7.9-italic-78a-5a53fd7870.woff2 +0 -0
- package/dist/fonts/maple-7.9-italic-78b-40be093bfd.woff2 +0 -0
- package/dist/fonts/maple-7.9-italic-78c-3b11646f8e.woff2 +0 -0
- package/dist/fonts/maple-7.9-italic-78d-b13ed8c48b.woff2 +0 -0
- package/dist/fonts/maple-7.9-italic-latin-befeb2b610.woff2 +0 -0
- package/dist/fonts/maple-7.9-regular-005-90bff107ac.woff2 +0 -0
- package/dist/fonts/maple-7.9-regular-00f-001e503e53.woff2 +0 -0
- package/dist/fonts/maple-7.9-regular-010-374da1ebb4.woff2 +0 -0
- package/dist/fonts/maple-7.9-regular-011-8f91fcc9e7.woff2 +0 -0
- package/dist/fonts/maple-7.9-regular-012-e4ec3016ef.woff2 +0 -0
- package/dist/fonts/maple-7.9-regular-013-e779e13a12.woff2 +0 -0
- package/dist/fonts/maple-7.9-regular-014-6b833ad501.woff2 +0 -0
- package/dist/fonts/maple-7.9-regular-015-4e058c4c42.woff2 +0 -0
- package/dist/fonts/maple-7.9-regular-018-6f776bc19b.woff2 +0 -0
- package/dist/fonts/maple-7.9-regular-027-92c0be3439.woff2 +0 -0
- package/dist/fonts/maple-7.9-regular-028-154c8c3039.woff2 +0 -0
- package/dist/fonts/maple-7.9-regular-029-9d88470aca.woff2 +0 -0
- package/dist/fonts/maple-7.9-regular-02a-7a94cb26f2.woff2 +0 -0
- package/dist/fonts/maple-7.9-regular-02b-1725b841c2.woff2 +0 -0
- package/dist/fonts/maple-7.9-regular-02c-e080c435d6.woff2 +0 -0
- package/dist/fonts/maple-7.9-regular-02d-a6461c4708.woff2 +0 -0
- package/dist/fonts/maple-7.9-regular-02e-2e55d9b957.woff2 +0 -0
- package/dist/fonts/maple-7.9-regular-02f-858a76fa1f.woff2 +0 -0
- package/dist/fonts/maple-7.9-regular-030-bbbe80f8ad.woff2 +0 -0
- package/dist/fonts/maple-7.9-regular-031-cafc1258ad.woff2 +0 -0
- package/dist/fonts/maple-7.9-regular-032-0ca83ecceb.woff2 +0 -0
- package/dist/fonts/maple-7.9-regular-033-6cb995f2e7.woff2 +0 -0
- package/dist/fonts/maple-7.9-regular-034-5877222be6.woff2 +0 -0
- package/dist/fonts/maple-7.9-regular-035-988d8f2d26.woff2 +0 -0
- package/dist/fonts/maple-7.9-regular-036-e91853e3ca.woff2 +0 -0
- package/dist/fonts/maple-7.9-regular-037-3eed60f359.woff2 +0 -0
- package/dist/fonts/maple-7.9-regular-038-5681f42a4a.woff2 +0 -0
- package/dist/fonts/maple-7.9-regular-039-07036fe444.woff2 +0 -0
- package/dist/fonts/maple-7.9-regular-03a-5495eead93.woff2 +0 -0
- package/dist/fonts/maple-7.9-regular-03b-d07b1d6c1e.woff2 +0 -0
- package/dist/fonts/maple-7.9-regular-03c-6291400ee0.woff2 +0 -0
- package/dist/fonts/maple-7.9-regular-03d-3787a51772.woff2 +0 -0
- package/dist/fonts/maple-7.9-regular-03e-ce4d945844.woff2 +0 -0
- package/dist/fonts/maple-7.9-regular-03f-95e98b329c.woff2 +0 -0
- package/dist/fonts/maple-7.9-regular-040-693b769fe8.woff2 +0 -0
- package/dist/fonts/maple-7.9-regular-041-7b436d2c09.woff2 +0 -0
- package/dist/fonts/maple-7.9-regular-042-9ad884cd73.woff2 +0 -0
- package/dist/fonts/maple-7.9-regular-043-372231e8e2.woff2 +0 -0
- package/dist/fonts/maple-7.9-regular-044-9922b540b1.woff2 +0 -0
- package/dist/fonts/maple-7.9-regular-045-8a88a91c22.woff2 +0 -0
- package/dist/fonts/maple-7.9-regular-046-82859ede10.woff2 +0 -0
- package/dist/fonts/maple-7.9-regular-047-6532babd62.woff2 +0 -0
- package/dist/fonts/maple-7.9-regular-048-abfdc5d7ce.woff2 +0 -0
- package/dist/fonts/maple-7.9-regular-049-adb7fa9ed3.woff2 +0 -0
- package/dist/fonts/maple-7.9-regular-04a-f3f794b1cb.woff2 +0 -0
- package/dist/fonts/maple-7.9-regular-04b-715211b8dd.woff2 +0 -0
- package/dist/fonts/maple-7.9-regular-04c-c6f978d10d.woff2 +0 -0
- package/dist/fonts/maple-7.9-regular-04d-61019a1c8f.woff2 +0 -0
- package/dist/fonts/maple-7.9-regular-04e-806d6efe85.woff2 +0 -0
- package/dist/fonts/maple-7.9-regular-04f-99d19aa8db.woff2 +0 -0
- package/dist/fonts/maple-7.9-regular-070-e94ba9445d.woff2 +0 -0
- package/dist/fonts/maple-7.9-regular-071-057314b533.woff2 +0 -0
- package/dist/fonts/maple-7.9-regular-072-a7699beb84.woff2 +0 -0
- package/dist/fonts/maple-7.9-regular-073-ebe1bd9ef4.woff2 +0 -0
- package/dist/fonts/maple-7.9-regular-074-722db38100.woff2 +0 -0
- package/dist/fonts/maple-7.9-regular-075-150ff7187b.woff2 +0 -0
- package/dist/fonts/maple-7.9-regular-076-c14595e715.woff2 +0 -0
- package/dist/fonts/maple-7.9-regular-077-6c88302a32.woff2 +0 -0
- package/dist/fonts/maple-7.9-regular-078-549b294c78.woff2 +0 -0
- package/dist/fonts/maple-7.9-regular-079-5131c42759.woff2 +0 -0
- package/dist/fonts/maple-7.9-regular-07a-c0dad221b5.woff2 +0 -0
- package/dist/fonts/maple-7.9-regular-07f-5cf5ebe065.woff2 +0 -0
- package/dist/fonts/maple-7.9-regular-0fc-b644c0c6d9.woff2 +0 -0
- package/dist/fonts/maple-7.9-regular-780-c6000d472a.woff2 +0 -0
- package/dist/fonts/maple-7.9-regular-781-86409ab7f7.woff2 +0 -0
- package/dist/fonts/maple-7.9-regular-782-9cd950637c.woff2 +0 -0
- package/dist/fonts/maple-7.9-regular-783-105c4d02df.woff2 +0 -0
- package/dist/fonts/maple-7.9-regular-784-00c042af97.woff2 +0 -0
- package/dist/fonts/maple-7.9-regular-785-022568d0b8.woff2 +0 -0
- package/dist/fonts/maple-7.9-regular-786-90b6f3aef5.woff2 +0 -0
- package/dist/fonts/maple-7.9-regular-787-e2888596c9.woff2 +0 -0
- package/dist/fonts/maple-7.9-regular-788-3416e1fda3.woff2 +0 -0
- package/dist/fonts/maple-7.9-regular-789-9ffc917b0b.woff2 +0 -0
- package/dist/fonts/maple-7.9-regular-78a-4a921d07f6.woff2 +0 -0
- package/dist/fonts/maple-7.9-regular-78b-9d71c5327b.woff2 +0 -0
- package/dist/fonts/maple-7.9-regular-78c-9ec048314b.woff2 +0 -0
- package/dist/fonts/maple-7.9-regular-78d-46a2ebd113.woff2 +0 -0
- package/dist/fonts/maple-7.9-regular-latin-59c752ba1d.woff2 +0 -0
- package/dist/fonts/maple.css +315 -0
- package/dist/index.d.ts +9 -0
- package/dist/index.js +132 -0
- package/dist/index.js.map +1 -0
- package/dist/math-renderer-L6DOH4RX.js +21 -0
- package/dist/math-renderer-L6DOH4RX.js.map +1 -0
- package/dist/math.css +1 -0
- package/dist/react/index.d.ts +112 -0
- package/dist/react/index.js +57 -0
- package/dist/react/index.js.map +1 -0
- package/dist/styles.css +451 -0
- package/dist/translations-BliabrPd.d.ts +310 -0
- package/docs/api.md +161 -0
- package/docs/extensions.md +309 -0
- package/docs/implementation.md +79 -0
- package/docs/performance.md +84 -0
- package/docs/styles.md +103 -0
- package/docs/visual-upgrade.md +148 -0
- package/examples/assistant.tsx +52 -0
- package/examples/notes.tsx +73 -0
- package/package.json +110 -3
package/LICENSE
ADDED
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
MIT License
|
|
2
|
+
|
|
3
|
+
Copyright (c) 2026 Linloir
|
|
4
|
+
|
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
6
|
+
of this software and associated documentation files (the "Software"), to deal
|
|
7
|
+
in the Software without restriction, including without limitation the rights
|
|
8
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
9
|
+
copies of the Software, and to permit persons to whom the Software is
|
|
10
|
+
furnished to do so, subject to the following conditions:
|
|
11
|
+
|
|
12
|
+
The above copyright notice and this permission notice shall be included in all
|
|
13
|
+
copies or substantial portions of the Software.
|
|
14
|
+
|
|
15
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
16
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
17
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
18
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
19
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
20
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
21
|
+
SOFTWARE.
|
package/README.md
CHANGED
|
@@ -1,3 +1,198 @@
|
|
|
1
|
-
#
|
|
1
|
+
# LiMR
|
|
2
2
|
|
|
3
|
-
|
|
3
|
+
**Linloir’s limr Is a Markdown Renderer.**
|
|
4
|
+
|
|
5
|
+
一个可以独立使用,也可以组合成完整阅读界面的 React Markdown 渲染包。正文、目录、角注和选区使用同一份文档状态,面向长文阅读和 AI 流式输出。
|
|
6
|
+
|
|
7
|
+
## 使用
|
|
8
|
+
|
|
9
|
+
```sh
|
|
10
|
+
pnpm add @linloir/limr
|
|
11
|
+
```
|
|
12
|
+
|
|
13
|
+
```tsx
|
|
14
|
+
import { Reader } from '@linloir/limr';
|
|
15
|
+
import '@linloir/limr/styles.css';
|
|
16
|
+
import '@linloir/limr/math.css'; // 使用公式时导入;字体随包提供
|
|
17
|
+
|
|
18
|
+
<Reader source={markdown} />
|
|
19
|
+
```
|
|
20
|
+
|
|
21
|
+
需要 React 18.3 / 19、现代浏览器和支持 ESM 的构建工具。npm 包名为 `@linloir/limr`;源码可用 `pnpm pack` 构建并生成本地安装包。
|
|
22
|
+
|
|
23
|
+
只显示正文:
|
|
24
|
+
|
|
25
|
+
```tsx
|
|
26
|
+
import { Markdown } from '@linloir/limr';
|
|
27
|
+
|
|
28
|
+
<Markdown source={markdown} />
|
|
29
|
+
// source 是持续增长的完整字符串;生成结束时设为 false。
|
|
30
|
+
<Markdown source={answer} streaming={generating} followOutput />
|
|
31
|
+
```
|
|
32
|
+
|
|
33
|
+
`followOutput` 默认关闭。开启后只在用户保持在底部附近时跟随输出。用户向上阅读时暂停跟随。
|
|
34
|
+
|
|
35
|
+
## 组件
|
|
36
|
+
|
|
37
|
+
| 组件 | 职责 |
|
|
38
|
+
| --- | --- |
|
|
39
|
+
| `Markdown` | 正文、原文坐标、标题和选区信息;不包含工具菜单 |
|
|
40
|
+
| `DocumentProvider` | 给组合组件提供同一份文档和交互状态 |
|
|
41
|
+
| `Reader` | 开箱即用的响应式组合,窄屏自动使用角注浮层 |
|
|
42
|
+
| `TableOfContents` | 固定标题、自动换行、隐藏滚动条、跟随 active 项 |
|
|
43
|
+
| `AnnotationSidebar` | 与正文角标对齐的卡片、避让、独立列表或自定义定位 |
|
|
44
|
+
| `AnnotationOverlay` | 鼠标预览、点击/触摸展开、键盘退出和焦点恢复 |
|
|
45
|
+
| `SelectionToolbar` | 独立的选区操作和自定义 UI 槽位 |
|
|
46
|
+
| `AnnotationMarkdown` | 在卡片内复用渲染能力,隔离文档和选区作用域 |
|
|
47
|
+
|
|
48
|
+
例如,在自己的三栏布局里组合:
|
|
49
|
+
|
|
50
|
+
```tsx
|
|
51
|
+
<DocumentProvider source={markdown}>
|
|
52
|
+
<div className="reading-columns">
|
|
53
|
+
<TableOfContents />
|
|
54
|
+
<Markdown />
|
|
55
|
+
<AnnotationSidebar />
|
|
56
|
+
</div>
|
|
57
|
+
<AnnotationOverlay />
|
|
58
|
+
<SelectionToolbar actions={actions} />
|
|
59
|
+
</DocumentProvider>
|
|
60
|
+
```
|
|
61
|
+
|
|
62
|
+
`reading-columns` 的样式由应用提供。对齐侧栏和正文应位于**同一个滚动容器**,侧栏保持正常文档流中的相对定位。窗口滚动无需配置;内部滚动容器用 `scrollRoot={element}` 指定。常规布局直接用 `Reader` 即可。详见 [组合和布局约定](docs/api.md#布局和定位)。
|
|
63
|
+
|
|
64
|
+
## 默认能力与扩展
|
|
65
|
+
|
|
66
|
+
默认包含 GFM、公式、代码高亮、响应式图片/图组与图注、视频、释义、问题正文区块、拓展阅读、ref 引用和分段译文。每一种特殊语法都是使用公开接口实现的独立模块。`translations` 支持原文、译文与对照,可通过 `parameters.translationMode` 统一控制;[图组与译文语法](docs/extensions.md#图片与论文图组)包含完整示例。
|
|
67
|
+
|
|
68
|
+
**默认角注只有 citation/ref;高亮单独提供。** 提问、注记、聊天等应用角注由插件注册。`question()` 是问题正文区块,与问答角注无关。
|
|
69
|
+
|
|
70
|
+
```tsx
|
|
71
|
+
import { standard, defineBlock, replaceExtension, codeHighlight } from '@linloir/limr';
|
|
72
|
+
|
|
73
|
+
const extensions = [
|
|
74
|
+
...replaceExtension(standard(), codeHighlight({ languages: ['typescript', 'python'] })),
|
|
75
|
+
defineBlock({
|
|
76
|
+
name: 'notice',
|
|
77
|
+
component: ({ children }) => <aside className="notice">{children}</aside>,
|
|
78
|
+
}),
|
|
79
|
+
];
|
|
80
|
+
|
|
81
|
+
<Reader source={'<notice>\n\n**自定义内容**\n\n</notice>'} extensions={extensions} />
|
|
82
|
+
```
|
|
83
|
+
|
|
84
|
+
同一模块也支持 `:::notice` 指令语法。`extensions` 是完整的扩展列表;传入 `[]` 得到基础 CommonMark。可以用 `.filter()` 移除默认模块,或 `replaceExtension()` 替换同名模块。保持配置引用稳定,例如在模块外定义或使用 `useMemo`。
|
|
85
|
+
|
|
86
|
+
安装第三方扩展时,用 `plugins` **追加**到默认模块;样式包通过 CSS 导入和 `appearance` 选择:
|
|
87
|
+
|
|
88
|
+
```tsx
|
|
89
|
+
import { readingTools } from '@limr-example/reading-tools';
|
|
90
|
+
import '@linloir/limr/styles.css';
|
|
91
|
+
import '@limr-example/paper-theme';
|
|
92
|
+
|
|
93
|
+
const plugins = [readingTools()];
|
|
94
|
+
<Reader source={markdown} plugins={plugins} appearance="paper" />
|
|
95
|
+
```
|
|
96
|
+
|
|
97
|
+
这里的两个 `@limr-example` 包是仓库内的可打包示例,尚未发布。实际社区包可以使用同样的结构。见 [扩展打包](docs/extensions.md#作为独立包分发) 和 [样式指南](docs/styles.md)。
|
|
98
|
+
|
|
99
|
+
常用标签:
|
|
100
|
+
|
|
101
|
+
```markdown
|
|
102
|
+
<definition title="定义">
|
|
103
|
+
|
|
104
|
+
支持 **Markdown** 的内容。
|
|
105
|
+
|
|
106
|
+
</definition>
|
|
107
|
+
|
|
108
|
+
引用一段文字<ref id="paper" />。
|
|
109
|
+
|
|
110
|
+
<citation id="paper" title="论文" url="https://example.com" description="支持 **富文本** 描述。" />
|
|
111
|
+
```
|
|
112
|
+
|
|
113
|
+
也支持 `cite-id`、`cite-from-ids`、`desc` 等原有属性。未知 HTML 按原文显示,标签中的 JavaScript 表达式不执行。更多模块和 parser 接口见 [扩展指南](docs/extensions.md)。
|
|
114
|
+
|
|
115
|
+
## 高亮、选区和应用插件
|
|
116
|
+
|
|
117
|
+
```tsx
|
|
118
|
+
import { Reader, copyText, highlightPalette, highlightSelection, deleteAnnotations, chinese } from '@linloir/limr';
|
|
119
|
+
|
|
120
|
+
const actions = [
|
|
121
|
+
highlightPalette(),
|
|
122
|
+
highlightSelection(),
|
|
123
|
+
copyText({ label: '复制文字' }),
|
|
124
|
+
copyText({ label: '复制 Markdown', format: 'syntax' }),
|
|
125
|
+
deleteAnnotations(),
|
|
126
|
+
];
|
|
127
|
+
|
|
128
|
+
<Reader source={markdown} locale={chinese} actions={actions} />
|
|
129
|
+
```
|
|
130
|
+
|
|
131
|
+
工具菜单默认提供色块、高亮、复制和删除。悬浮左侧色块可调整颜色与样式,添加高亮直接生效;同一文本片段可以同时拥有高亮、旁注、提问等多个 annotation。高亮统一存为 `type: 'highlight'` 的 annotation,通过 `annotations` / `onAnnotationsChange` 管理。右侧删除操作移除该片段关联的所有 annotation,隐藏高亮则保留注释。上面的 `actions` 可替换默认列表。
|
|
132
|
+
|
|
133
|
+
选区同时提供 `raw`、`syntax`、`blocks` 三种结果,所有范围都指向**未经改写的原始输入**,使用 UTF-16 偏移、右端不包含。`quality` 区分精确映射、公式等原子节点和无法精确映射的内容。默认高亮和脚注使用 `syntax`,仅吸附选区两端紧邻的标准 Markdown 标记,不扩大未选中的文字,也不吸附特殊块的外层标签。行内及围栏代码支持部分选择、高亮与角标;公式保持整体选择。
|
|
134
|
+
|
|
135
|
+
插件可以在一个 `defineExtension()` 中提供 `actions`、`annotationTypes` 和语法模块。动作拿到选区、文档、`addAnnotation` / `updateAnnotation` / `activateAnnotation` 等命令和取消信号。卡片可以使用任意 React 组件,也可以用 `AnnotationMarkdown` 持续渲染 Markdown 回答。
|
|
136
|
+
|
|
137
|
+
[助手插件](examples/assistant.tsx) 和 [旁注编辑插件](examples/notes.tsx) 演示了这条路径。运行 `pnpm dev` 后即可在同一 playground 页面选中文字,使用问答、旁注、笔记、提问和脚注;新注释会直接进入桌面侧栏或手机卡片的编辑态。顶部“编辑/保存”切换写作与阅读,返回阅读时保存文本与注释到浏览器。“加载”包含全部预设、已保存文本与文件导入导出,“插件”下拉菜单支持多选。预设包含 Express / Axios README、文学作品及 scikit-learn 原论文的 Markdown 转写,来源与许可随文本保留。流式演示始终使用当前文本,主题切换独立保留。问答示例使用本地模拟传输;实际 Codex 连接、认证、会话管理由应用适配器实现,LiMR 不预设服务端协议。
|
|
138
|
+
|
|
139
|
+
## 渲染与资源
|
|
140
|
+
|
|
141
|
+
- 流式追加会重新解析尚未稳定的末尾区块,复用前面的区块;后到的引用定义会触发完整语义校正。结束时进行最终完整解析。
|
|
142
|
+
- 自定义 transform 默认按全文处理。只有声明 `scope: 'local'` 且满足局部性约定的模块才参与尾部增量解析。
|
|
143
|
+
- 代码高亮接近视口时加载 Shiki、所需语言和主题;流式代码暂停更新后才重新高亮。公式按需加载 KaTeX。视频点击播放前不请求播放器。
|
|
144
|
+
- 角注数据在卡片显示时才加载,同一阅读器内请求复用、取消和有限缓存;不同阅读器资源隔离。
|
|
145
|
+
- 不注入第三方 CDN。默认样式附带本地 Maple Mono NF CN 代码字体,按字形范围加载 WOFF2 子集,加载前使用系统等宽字体。正文衬线字体使用应用/系统回退,Playground 自行提供 Noto Serif SC。可使用不带字体的 `@linloir/limr/styles/base.css`。缓存和覆盖方式见 [样式指南](docs/styles.md)。
|
|
146
|
+
- 默认保留完整 DOM,支持原生查找、选择和打印;不使用会破坏这些行为的默认虚拟列表。
|
|
147
|
+
|
|
148
|
+
SSR 支持 Node 环境。`renderToString` 中未加载的公式先输出源码回退;如需首次 HTML 包含完整公式,先 `await preloadMath()`,或者使用 React 流式 SSR。Shiki 高亮在客户端补充,代码文本会直接出现在 SSR HTML 中。使用 Next.js 等区分服务端/客户端组件的框架时,在应用的客户端边界内导入这些交互组件。
|
|
149
|
+
|
|
150
|
+
[性能测量](docs/performance.md) 包含数据、等价功能配置和限制。数据针对固定硬件和夹具,不代表所有 Markdown、插件或设备。
|
|
151
|
+
|
|
152
|
+
## 开发
|
|
153
|
+
|
|
154
|
+
[在线 Playground](https://linloir.github.io/LiMR/)
|
|
155
|
+
|
|
156
|
+
```sh
|
|
157
|
+
pnpm install
|
|
158
|
+
pnpm dev
|
|
159
|
+
pnpm check
|
|
160
|
+
pnpm exec playwright install chromium
|
|
161
|
+
pnpm test:browser
|
|
162
|
+
NODE_ENV=production pnpm bench
|
|
163
|
+
```
|
|
164
|
+
|
|
165
|
+
### npm 发布
|
|
166
|
+
|
|
167
|
+
`pnpm test:package` 会构建并打包当前版本,在独立的 React 18/19 项目中验证类型、SSR、浏览器交互及样式资源,然后将通过验证的安装包保存到 `artifacts/`。
|
|
168
|
+
|
|
169
|
+
```sh
|
|
170
|
+
pnpm check
|
|
171
|
+
pnpm test:package
|
|
172
|
+
npm login --auth-type=web --registry=https://registry.npmjs.org
|
|
173
|
+
npm publish ./artifacts/linloir-limr-0.1.0.tgz --access public --registry=https://registry.npmjs.org
|
|
174
|
+
```
|
|
175
|
+
|
|
176
|
+
发布账号需要拥有 `@linloir` scope 的权限并完成 npm 要求的双重认证。后续发布先更新 `package.json` 的版本,再重新打包,并将命令中的文件名替换为新版本。
|
|
177
|
+
|
|
178
|
+
### GitHub Pages 预览
|
|
179
|
+
|
|
180
|
+
`main` 保存源码,独立的 `pages` 分支保存 Playground 构建后的静态产物,通过 SSH 推送到 GitHub。`pages` 分支由构建生成,无需手工合并源码。预览地址为 <https://linloir.github.io/LiMR/>。
|
|
181
|
+
|
|
182
|
+
首次部署在仓库 **Settings → Pages → Build and deployment** 中设置 **Source: Deploy from a branch**、**Branch: pages**、目录 **/(root)**,然后保存。后续推送 `pages` 分支会更新站点。
|
|
183
|
+
|
|
184
|
+
本地检查与线上相同的 `/LiMR/` 路径:
|
|
185
|
+
|
|
186
|
+
```sh
|
|
187
|
+
pnpm build:playground
|
|
188
|
+
pnpm preview:playground
|
|
189
|
+
# 打开 http://127.0.0.1:4173/LiMR/
|
|
190
|
+
```
|
|
191
|
+
|
|
192
|
+
构建输出为 `demo-dist/`,包含跳过 Jekyll 处理的 `.nojekyll` 文件。更新预览时,重新构建并将该目录的内容提交、推送到 `pages` 分支。`pnpm dev` 仍使用本地根路径。部署到其他仓库名时,需要同步修改两个 Playground 脚本中的 `--base`。
|
|
193
|
+
|
|
194
|
+
其他入口:`@linloir/limr/core`(无 React/DOM 运行时依赖)、`@linloir/limr/react`、`@linloir/limr/extensions`。详细 props、hooks、受控状态和主题配置见 [API 指南](docs/api.md)。
|
|
195
|
+
|
|
196
|
+
MIT License.
|
|
197
|
+
|
|
198
|
+
Developed with Codex.
|
|
@@ -0,0 +1,237 @@
|
|
|
1
|
+
{
|
|
2
|
+
"date": "2026-10-12T09:32:24.107Z",
|
|
3
|
+
"browser": "156.0.8078.4",
|
|
4
|
+
"measurement": "Synchronous React update plus forced layout, production Vite build. Each trial has an isolated page, font-ready warmup and alternating renderer order. Streaming updates spaced by one animation frame; idle frame time excluded.",
|
|
5
|
+
"results": [
|
|
6
|
+
{
|
|
7
|
+
"sections": 200,
|
|
8
|
+
"renderer": "limr",
|
|
9
|
+
"median": {
|
|
10
|
+
"characters": 87381,
|
|
11
|
+
"updates": 1,
|
|
12
|
+
"totalMs": 126.10000002384186,
|
|
13
|
+
"p95Ms": 126.10000002384186,
|
|
14
|
+
"maxMs": 126.10000002384186,
|
|
15
|
+
"elements": 4002
|
|
16
|
+
},
|
|
17
|
+
"samples": [
|
|
18
|
+
{
|
|
19
|
+
"characters": 87381,
|
|
20
|
+
"updates": 1,
|
|
21
|
+
"totalMs": 124.69999998807907,
|
|
22
|
+
"p95Ms": 124.69999998807907,
|
|
23
|
+
"maxMs": 124.69999998807907,
|
|
24
|
+
"elements": 4002
|
|
25
|
+
},
|
|
26
|
+
{
|
|
27
|
+
"characters": 87381,
|
|
28
|
+
"updates": 1,
|
|
29
|
+
"totalMs": 126.10000002384186,
|
|
30
|
+
"p95Ms": 126.10000002384186,
|
|
31
|
+
"maxMs": 126.10000002384186,
|
|
32
|
+
"elements": 4002
|
|
33
|
+
},
|
|
34
|
+
{
|
|
35
|
+
"characters": 87381,
|
|
36
|
+
"updates": 1,
|
|
37
|
+
"totalMs": 147.5,
|
|
38
|
+
"p95Ms": 147.5,
|
|
39
|
+
"maxMs": 147.5,
|
|
40
|
+
"elements": 4002
|
|
41
|
+
}
|
|
42
|
+
]
|
|
43
|
+
},
|
|
44
|
+
{
|
|
45
|
+
"sections": 200,
|
|
46
|
+
"renderer": "react-markdown",
|
|
47
|
+
"median": {
|
|
48
|
+
"characters": 87381,
|
|
49
|
+
"updates": 1,
|
|
50
|
+
"totalMs": 134,
|
|
51
|
+
"p95Ms": 134,
|
|
52
|
+
"maxMs": 134,
|
|
53
|
+
"elements": 3601
|
|
54
|
+
},
|
|
55
|
+
"samples": [
|
|
56
|
+
{
|
|
57
|
+
"characters": 87381,
|
|
58
|
+
"updates": 1,
|
|
59
|
+
"totalMs": 122.40000003576279,
|
|
60
|
+
"p95Ms": 122.40000003576279,
|
|
61
|
+
"maxMs": 122.40000003576279,
|
|
62
|
+
"elements": 3601
|
|
63
|
+
},
|
|
64
|
+
{
|
|
65
|
+
"characters": 87381,
|
|
66
|
+
"updates": 1,
|
|
67
|
+
"totalMs": 134,
|
|
68
|
+
"p95Ms": 134,
|
|
69
|
+
"maxMs": 134,
|
|
70
|
+
"elements": 3601
|
|
71
|
+
},
|
|
72
|
+
{
|
|
73
|
+
"characters": 87381,
|
|
74
|
+
"updates": 1,
|
|
75
|
+
"totalMs": 142.39999997615814,
|
|
76
|
+
"p95Ms": 142.39999997615814,
|
|
77
|
+
"maxMs": 142.39999997615814,
|
|
78
|
+
"elements": 3601
|
|
79
|
+
}
|
|
80
|
+
]
|
|
81
|
+
},
|
|
82
|
+
{
|
|
83
|
+
"sections": 2000,
|
|
84
|
+
"renderer": "limr",
|
|
85
|
+
"median": {
|
|
86
|
+
"characters": 877782,
|
|
87
|
+
"updates": 1,
|
|
88
|
+
"totalMs": 1345.4000000357628,
|
|
89
|
+
"p95Ms": 1345.4000000357628,
|
|
90
|
+
"maxMs": 1345.4000000357628,
|
|
91
|
+
"elements": 40002
|
|
92
|
+
},
|
|
93
|
+
"samples": [
|
|
94
|
+
{
|
|
95
|
+
"characters": 877782,
|
|
96
|
+
"updates": 1,
|
|
97
|
+
"totalMs": 1337.699999988079,
|
|
98
|
+
"p95Ms": 1337.699999988079,
|
|
99
|
+
"maxMs": 1337.699999988079,
|
|
100
|
+
"elements": 40002
|
|
101
|
+
},
|
|
102
|
+
{
|
|
103
|
+
"characters": 877782,
|
|
104
|
+
"updates": 1,
|
|
105
|
+
"totalMs": 1345.4000000357628,
|
|
106
|
+
"p95Ms": 1345.4000000357628,
|
|
107
|
+
"maxMs": 1345.4000000357628,
|
|
108
|
+
"elements": 40002
|
|
109
|
+
},
|
|
110
|
+
{
|
|
111
|
+
"characters": 877782,
|
|
112
|
+
"updates": 1,
|
|
113
|
+
"totalMs": 1394.199999988079,
|
|
114
|
+
"p95Ms": 1394.199999988079,
|
|
115
|
+
"maxMs": 1394.199999988079,
|
|
116
|
+
"elements": 40002
|
|
117
|
+
}
|
|
118
|
+
]
|
|
119
|
+
},
|
|
120
|
+
{
|
|
121
|
+
"sections": 2000,
|
|
122
|
+
"renderer": "react-markdown",
|
|
123
|
+
"median": {
|
|
124
|
+
"characters": 877782,
|
|
125
|
+
"updates": 1,
|
|
126
|
+
"totalMs": 1437.5999999642372,
|
|
127
|
+
"p95Ms": 1437.5999999642372,
|
|
128
|
+
"maxMs": 1437.5999999642372,
|
|
129
|
+
"elements": 36001
|
|
130
|
+
},
|
|
131
|
+
"samples": [
|
|
132
|
+
{
|
|
133
|
+
"characters": 877782,
|
|
134
|
+
"updates": 1,
|
|
135
|
+
"totalMs": 1308.1000000238419,
|
|
136
|
+
"p95Ms": 1308.1000000238419,
|
|
137
|
+
"maxMs": 1308.1000000238419,
|
|
138
|
+
"elements": 36001
|
|
139
|
+
},
|
|
140
|
+
{
|
|
141
|
+
"characters": 877782,
|
|
142
|
+
"updates": 1,
|
|
143
|
+
"totalMs": 1437.5999999642372,
|
|
144
|
+
"p95Ms": 1437.5999999642372,
|
|
145
|
+
"maxMs": 1437.5999999642372,
|
|
146
|
+
"elements": 36001
|
|
147
|
+
},
|
|
148
|
+
{
|
|
149
|
+
"characters": 877782,
|
|
150
|
+
"updates": 1,
|
|
151
|
+
"totalMs": 1481.3999999761581,
|
|
152
|
+
"p95Ms": 1481.3999999761581,
|
|
153
|
+
"maxMs": 1481.3999999761581,
|
|
154
|
+
"elements": 36001
|
|
155
|
+
}
|
|
156
|
+
]
|
|
157
|
+
},
|
|
158
|
+
{
|
|
159
|
+
"sections": 80,
|
|
160
|
+
"stream": true,
|
|
161
|
+
"renderer": "limr",
|
|
162
|
+
"median": {
|
|
163
|
+
"characters": 34860,
|
|
164
|
+
"updates": 138,
|
|
165
|
+
"totalMs": 306.09999972581863,
|
|
166
|
+
"p95Ms": 2.900000035762787,
|
|
167
|
+
"maxMs": 31.099999964237213,
|
|
168
|
+
"elements": 1602
|
|
169
|
+
},
|
|
170
|
+
"samples": [
|
|
171
|
+
{
|
|
172
|
+
"characters": 34860,
|
|
173
|
+
"updates": 138,
|
|
174
|
+
"totalMs": 298.60000014305115,
|
|
175
|
+
"p95Ms": 2.800000011920929,
|
|
176
|
+
"maxMs": 31.80000001192093,
|
|
177
|
+
"elements": 1602
|
|
178
|
+
},
|
|
179
|
+
{
|
|
180
|
+
"characters": 34860,
|
|
181
|
+
"updates": 138,
|
|
182
|
+
"totalMs": 306.09999972581863,
|
|
183
|
+
"p95Ms": 2.900000035762787,
|
|
184
|
+
"maxMs": 31.099999964237213,
|
|
185
|
+
"elements": 1602
|
|
186
|
+
},
|
|
187
|
+
{
|
|
188
|
+
"characters": 34860,
|
|
189
|
+
"updates": 138,
|
|
190
|
+
"totalMs": 317.099999666214,
|
|
191
|
+
"p95Ms": 3,
|
|
192
|
+
"maxMs": 31.600000023841858,
|
|
193
|
+
"elements": 1602
|
|
194
|
+
}
|
|
195
|
+
]
|
|
196
|
+
},
|
|
197
|
+
{
|
|
198
|
+
"sections": 80,
|
|
199
|
+
"stream": true,
|
|
200
|
+
"renderer": "react-markdown",
|
|
201
|
+
"median": {
|
|
202
|
+
"characters": 34860,
|
|
203
|
+
"updates": 138,
|
|
204
|
+
"totalMs": 1864.100000321865,
|
|
205
|
+
"p95Ms": 23.69999998807907,
|
|
206
|
+
"maxMs": 32.80000001192093,
|
|
207
|
+
"elements": 1441
|
|
208
|
+
},
|
|
209
|
+
"samples": [
|
|
210
|
+
{
|
|
211
|
+
"characters": 34860,
|
|
212
|
+
"updates": 138,
|
|
213
|
+
"totalMs": 1842.2000004649162,
|
|
214
|
+
"p95Ms": 26,
|
|
215
|
+
"maxMs": 27.80000001192093,
|
|
216
|
+
"elements": 1441
|
|
217
|
+
},
|
|
218
|
+
{
|
|
219
|
+
"characters": 34860,
|
|
220
|
+
"updates": 138,
|
|
221
|
+
"totalMs": 1864.100000321865,
|
|
222
|
+
"p95Ms": 23.69999998807907,
|
|
223
|
+
"maxMs": 32.80000001192093,
|
|
224
|
+
"elements": 1441
|
|
225
|
+
},
|
|
226
|
+
{
|
|
227
|
+
"characters": 34860,
|
|
228
|
+
"updates": 138,
|
|
229
|
+
"totalMs": 1893.8000000715256,
|
|
230
|
+
"p95Ms": 22.900000035762787,
|
|
231
|
+
"maxMs": 37.799999952316284,
|
|
232
|
+
"elements": 1441
|
|
233
|
+
}
|
|
234
|
+
]
|
|
235
|
+
}
|
|
236
|
+
]
|
|
237
|
+
}
|
|
@@ -0,0 +1,75 @@
|
|
|
1
|
+
{
|
|
2
|
+
"date": "2026-10-12T09:34:31.373Z",
|
|
3
|
+
"node": "v20.19.5",
|
|
4
|
+
"mode": "production",
|
|
5
|
+
"platform": "linux 6.18.40.1-microsoft-standard-WSL2",
|
|
6
|
+
"cpu": "13th Gen Intel(R) Core(TM) i7-13700",
|
|
7
|
+
"results": [
|
|
8
|
+
{
|
|
9
|
+
"scenario": "static-gfm",
|
|
10
|
+
"characters": 87381,
|
|
11
|
+
"sections": 200,
|
|
12
|
+
"core": {
|
|
13
|
+
"medianMs": 109.32,
|
|
14
|
+
"minMs": 102.73,
|
|
15
|
+
"maxMs": 125.04
|
|
16
|
+
},
|
|
17
|
+
"mdast": {
|
|
18
|
+
"medianMs": 101.78,
|
|
19
|
+
"minMs": 95.3,
|
|
20
|
+
"maxMs": 114.94
|
|
21
|
+
},
|
|
22
|
+
"limrSSR": {
|
|
23
|
+
"medianMs": 123.85,
|
|
24
|
+
"minMs": 123.37,
|
|
25
|
+
"maxMs": 132.6
|
|
26
|
+
},
|
|
27
|
+
"reactMarkdownSSR": {
|
|
28
|
+
"medianMs": 135.8,
|
|
29
|
+
"minMs": 133.71,
|
|
30
|
+
"maxMs": 162.13
|
|
31
|
+
}
|
|
32
|
+
},
|
|
33
|
+
{
|
|
34
|
+
"scenario": "static-gfm",
|
|
35
|
+
"characters": 877782,
|
|
36
|
+
"sections": 2000,
|
|
37
|
+
"core": {
|
|
38
|
+
"medianMs": 2702.76,
|
|
39
|
+
"minMs": 2546.75,
|
|
40
|
+
"maxMs": 6815.28
|
|
41
|
+
},
|
|
42
|
+
"mdast": {
|
|
43
|
+
"medianMs": 2864.73,
|
|
44
|
+
"minMs": 2501.24,
|
|
45
|
+
"maxMs": 4779.01
|
|
46
|
+
},
|
|
47
|
+
"limrSSR": {
|
|
48
|
+
"medianMs": 5508.29,
|
|
49
|
+
"minMs": 2642.18,
|
|
50
|
+
"maxMs": 9102.85
|
|
51
|
+
},
|
|
52
|
+
"reactMarkdownSSR": {
|
|
53
|
+
"medianMs": 2720.7,
|
|
54
|
+
"minMs": 2698.5,
|
|
55
|
+
"maxMs": 5033.33
|
|
56
|
+
}
|
|
57
|
+
},
|
|
58
|
+
{
|
|
59
|
+
"scenario": "streaming-gfm",
|
|
60
|
+
"characters": 34860,
|
|
61
|
+
"chunkSize": 256,
|
|
62
|
+
"updates": 137,
|
|
63
|
+
"incremental": {
|
|
64
|
+
"medianMs": 164.04,
|
|
65
|
+
"minMs": 152.69,
|
|
66
|
+
"maxMs": 175.39
|
|
67
|
+
},
|
|
68
|
+
"fullParse": {
|
|
69
|
+
"medianMs": 2673.74,
|
|
70
|
+
"minMs": 2626.34,
|
|
71
|
+
"maxMs": 2769.29
|
|
72
|
+
}
|
|
73
|
+
}
|
|
74
|
+
]
|
|
75
|
+
}
|