@linloir/limr 0.0.0-stage → 1.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (473) hide show
  1. package/LICENSE +21 -0
  2. package/README.en.md +123 -0
  3. package/README.md +122 -2
  4. package/benchmarks/results/browser.json +237 -0
  5. package/benchmarks/results/node.json +75 -0
  6. package/benchmarks/results/selection.json +172 -0
  7. package/dist/THIRD_PARTY_LICENSES.txt +117 -0
  8. package/dist/base.css +454 -0
  9. package/dist/chunk-3ILUZKDB.js +3130 -0
  10. package/dist/chunk-3ILUZKDB.js.map +1 -0
  11. package/dist/chunk-6N6TFHEN.js +83 -0
  12. package/dist/chunk-6N6TFHEN.js.map +1 -0
  13. package/dist/chunk-N77VD2YR.js +1238 -0
  14. package/dist/chunk-N77VD2YR.js.map +1 -0
  15. package/dist/chunk-TTISGBST.js +478 -0
  16. package/dist/chunk-TTISGBST.js.map +1 -0
  17. package/dist/chunk-V2OG4Y3F.js +1 -0
  18. package/dist/chunk-V2OG4Y3F.js.map +1 -0
  19. package/dist/core/index.d.ts +57 -0
  20. package/dist/core/index.js +39 -0
  21. package/dist/core/index.js.map +1 -0
  22. package/dist/engine-43u8B4yt.d.ts +172 -0
  23. package/dist/extensions/index.d.ts +130 -0
  24. package/dist/extensions/index.js +50 -0
  25. package/dist/extensions/index.js.map +1 -0
  26. package/dist/fonts/KaTeX_AMS-Regular.ttf +0 -0
  27. package/dist/fonts/KaTeX_AMS-Regular.woff +0 -0
  28. package/dist/fonts/KaTeX_AMS-Regular.woff2 +0 -0
  29. package/dist/fonts/KaTeX_Caligraphic-Bold.ttf +0 -0
  30. package/dist/fonts/KaTeX_Caligraphic-Bold.woff +0 -0
  31. package/dist/fonts/KaTeX_Caligraphic-Bold.woff2 +0 -0
  32. package/dist/fonts/KaTeX_Caligraphic-Regular.ttf +0 -0
  33. package/dist/fonts/KaTeX_Caligraphic-Regular.woff +0 -0
  34. package/dist/fonts/KaTeX_Caligraphic-Regular.woff2 +0 -0
  35. package/dist/fonts/KaTeX_Fraktur-Bold.ttf +0 -0
  36. package/dist/fonts/KaTeX_Fraktur-Bold.woff +0 -0
  37. package/dist/fonts/KaTeX_Fraktur-Bold.woff2 +0 -0
  38. package/dist/fonts/KaTeX_Fraktur-Regular.ttf +0 -0
  39. package/dist/fonts/KaTeX_Fraktur-Regular.woff +0 -0
  40. package/dist/fonts/KaTeX_Fraktur-Regular.woff2 +0 -0
  41. package/dist/fonts/KaTeX_Main-Bold.ttf +0 -0
  42. package/dist/fonts/KaTeX_Main-Bold.woff +0 -0
  43. package/dist/fonts/KaTeX_Main-Bold.woff2 +0 -0
  44. package/dist/fonts/KaTeX_Main-BoldItalic.ttf +0 -0
  45. package/dist/fonts/KaTeX_Main-BoldItalic.woff +0 -0
  46. package/dist/fonts/KaTeX_Main-BoldItalic.woff2 +0 -0
  47. package/dist/fonts/KaTeX_Main-Italic.ttf +0 -0
  48. package/dist/fonts/KaTeX_Main-Italic.woff +0 -0
  49. package/dist/fonts/KaTeX_Main-Italic.woff2 +0 -0
  50. package/dist/fonts/KaTeX_Main-Regular.ttf +0 -0
  51. package/dist/fonts/KaTeX_Main-Regular.woff +0 -0
  52. package/dist/fonts/KaTeX_Main-Regular.woff2 +0 -0
  53. package/dist/fonts/KaTeX_Math-BoldItalic.ttf +0 -0
  54. package/dist/fonts/KaTeX_Math-BoldItalic.woff +0 -0
  55. package/dist/fonts/KaTeX_Math-BoldItalic.woff2 +0 -0
  56. package/dist/fonts/KaTeX_Math-Italic.ttf +0 -0
  57. package/dist/fonts/KaTeX_Math-Italic.woff +0 -0
  58. package/dist/fonts/KaTeX_Math-Italic.woff2 +0 -0
  59. package/dist/fonts/KaTeX_SansSerif-Bold.ttf +0 -0
  60. package/dist/fonts/KaTeX_SansSerif-Bold.woff +0 -0
  61. package/dist/fonts/KaTeX_SansSerif-Bold.woff2 +0 -0
  62. package/dist/fonts/KaTeX_SansSerif-Italic.ttf +0 -0
  63. package/dist/fonts/KaTeX_SansSerif-Italic.woff +0 -0
  64. package/dist/fonts/KaTeX_SansSerif-Italic.woff2 +0 -0
  65. package/dist/fonts/KaTeX_SansSerif-Regular.ttf +0 -0
  66. package/dist/fonts/KaTeX_SansSerif-Regular.woff +0 -0
  67. package/dist/fonts/KaTeX_SansSerif-Regular.woff2 +0 -0
  68. package/dist/fonts/KaTeX_Script-Regular.ttf +0 -0
  69. package/dist/fonts/KaTeX_Script-Regular.woff +0 -0
  70. package/dist/fonts/KaTeX_Script-Regular.woff2 +0 -0
  71. package/dist/fonts/KaTeX_Size1-Regular.ttf +0 -0
  72. package/dist/fonts/KaTeX_Size1-Regular.woff +0 -0
  73. package/dist/fonts/KaTeX_Size1-Regular.woff2 +0 -0
  74. package/dist/fonts/KaTeX_Size2-Regular.ttf +0 -0
  75. package/dist/fonts/KaTeX_Size2-Regular.woff +0 -0
  76. package/dist/fonts/KaTeX_Size2-Regular.woff2 +0 -0
  77. package/dist/fonts/KaTeX_Size3-Regular.ttf +0 -0
  78. package/dist/fonts/KaTeX_Size3-Regular.woff +0 -0
  79. package/dist/fonts/KaTeX_Size3-Regular.woff2 +0 -0
  80. package/dist/fonts/KaTeX_Size4-Regular.ttf +0 -0
  81. package/dist/fonts/KaTeX_Size4-Regular.woff +0 -0
  82. package/dist/fonts/KaTeX_Size4-Regular.woff2 +0 -0
  83. package/dist/fonts/KaTeX_Typewriter-Regular.ttf +0 -0
  84. package/dist/fonts/KaTeX_Typewriter-Regular.woff +0 -0
  85. package/dist/fonts/KaTeX_Typewriter-Regular.woff2 +0 -0
  86. package/dist/fonts/LICENSE.txt +93 -0
  87. package/dist/fonts/manifest.json +2204 -0
  88. package/dist/fonts/maple-7.9-bold-005-5530d8c1d6.woff2 +0 -0
  89. package/dist/fonts/maple-7.9-bold-00f-1179d800a7.woff2 +0 -0
  90. package/dist/fonts/maple-7.9-bold-010-9974a942b1.woff2 +0 -0
  91. package/dist/fonts/maple-7.9-bold-011-9b9230baf2.woff2 +0 -0
  92. package/dist/fonts/maple-7.9-bold-012-c2545292b1.woff2 +0 -0
  93. package/dist/fonts/maple-7.9-bold-013-877b19fe05.woff2 +0 -0
  94. package/dist/fonts/maple-7.9-bold-014-6acf4a4e92.woff2 +0 -0
  95. package/dist/fonts/maple-7.9-bold-015-c889146da3.woff2 +0 -0
  96. package/dist/fonts/maple-7.9-bold-018-419ad5f31f.woff2 +0 -0
  97. package/dist/fonts/maple-7.9-bold-027-dd414483da.woff2 +0 -0
  98. package/dist/fonts/maple-7.9-bold-028-263744fbc7.woff2 +0 -0
  99. package/dist/fonts/maple-7.9-bold-029-ae3a163d8b.woff2 +0 -0
  100. package/dist/fonts/maple-7.9-bold-02a-515f0a82c2.woff2 +0 -0
  101. package/dist/fonts/maple-7.9-bold-02b-0823c5133d.woff2 +0 -0
  102. package/dist/fonts/maple-7.9-bold-02c-296fd5db38.woff2 +0 -0
  103. package/dist/fonts/maple-7.9-bold-02d-0bb4734363.woff2 +0 -0
  104. package/dist/fonts/maple-7.9-bold-02e-25415fed50.woff2 +0 -0
  105. package/dist/fonts/maple-7.9-bold-02f-19ed79a84e.woff2 +0 -0
  106. package/dist/fonts/maple-7.9-bold-030-21962a0327.woff2 +0 -0
  107. package/dist/fonts/maple-7.9-bold-031-d216fc0d68.woff2 +0 -0
  108. package/dist/fonts/maple-7.9-bold-032-d90ba34901.woff2 +0 -0
  109. package/dist/fonts/maple-7.9-bold-033-55ea37ea00.woff2 +0 -0
  110. package/dist/fonts/maple-7.9-bold-034-bc8649f808.woff2 +0 -0
  111. package/dist/fonts/maple-7.9-bold-035-03604fe40b.woff2 +0 -0
  112. package/dist/fonts/maple-7.9-bold-036-44fc7f77b2.woff2 +0 -0
  113. package/dist/fonts/maple-7.9-bold-037-8a1440f155.woff2 +0 -0
  114. package/dist/fonts/maple-7.9-bold-038-c65a618d5c.woff2 +0 -0
  115. package/dist/fonts/maple-7.9-bold-039-be05db966d.woff2 +0 -0
  116. package/dist/fonts/maple-7.9-bold-03a-ca3a10002d.woff2 +0 -0
  117. package/dist/fonts/maple-7.9-bold-03b-067b32e10b.woff2 +0 -0
  118. package/dist/fonts/maple-7.9-bold-03c-4da4f84530.woff2 +0 -0
  119. package/dist/fonts/maple-7.9-bold-03d-f0fe6a68c8.woff2 +0 -0
  120. package/dist/fonts/maple-7.9-bold-03e-0e97f89433.woff2 +0 -0
  121. package/dist/fonts/maple-7.9-bold-03f-3289a5e3bc.woff2 +0 -0
  122. package/dist/fonts/maple-7.9-bold-040-232dcd0d7b.woff2 +0 -0
  123. package/dist/fonts/maple-7.9-bold-041-e25e9a9c41.woff2 +0 -0
  124. package/dist/fonts/maple-7.9-bold-042-d64a2b1824.woff2 +0 -0
  125. package/dist/fonts/maple-7.9-bold-043-2d01cf5e52.woff2 +0 -0
  126. package/dist/fonts/maple-7.9-bold-044-0ab808b5f1.woff2 +0 -0
  127. package/dist/fonts/maple-7.9-bold-045-e41dc814b4.woff2 +0 -0
  128. package/dist/fonts/maple-7.9-bold-046-d5fe26344d.woff2 +0 -0
  129. package/dist/fonts/maple-7.9-bold-047-f322ded671.woff2 +0 -0
  130. package/dist/fonts/maple-7.9-bold-048-0cdcf7257f.woff2 +0 -0
  131. package/dist/fonts/maple-7.9-bold-049-aa280ca08a.woff2 +0 -0
  132. package/dist/fonts/maple-7.9-bold-04a-f51ad4d92c.woff2 +0 -0
  133. package/dist/fonts/maple-7.9-bold-04b-4e8c6fa3ee.woff2 +0 -0
  134. package/dist/fonts/maple-7.9-bold-04c-9bfdf4d743.woff2 +0 -0
  135. package/dist/fonts/maple-7.9-bold-04d-83ac1f5bb3.woff2 +0 -0
  136. package/dist/fonts/maple-7.9-bold-04e-bcec89804a.woff2 +0 -0
  137. package/dist/fonts/maple-7.9-bold-04f-d31e83b6ce.woff2 +0 -0
  138. package/dist/fonts/maple-7.9-bold-070-8a3b0fdf98.woff2 +0 -0
  139. package/dist/fonts/maple-7.9-bold-071-5bee0a62c4.woff2 +0 -0
  140. package/dist/fonts/maple-7.9-bold-072-97d891eee4.woff2 +0 -0
  141. package/dist/fonts/maple-7.9-bold-073-4d4c36aca0.woff2 +0 -0
  142. package/dist/fonts/maple-7.9-bold-074-6d3cc01e90.woff2 +0 -0
  143. package/dist/fonts/maple-7.9-bold-075-eab42ad657.woff2 +0 -0
  144. package/dist/fonts/maple-7.9-bold-076-2b1f5c4a42.woff2 +0 -0
  145. package/dist/fonts/maple-7.9-bold-077-1db0d50873.woff2 +0 -0
  146. package/dist/fonts/maple-7.9-bold-078-bc6994a28f.woff2 +0 -0
  147. package/dist/fonts/maple-7.9-bold-079-ad6c1757ce.woff2 +0 -0
  148. package/dist/fonts/maple-7.9-bold-07a-d08ed2b87d.woff2 +0 -0
  149. package/dist/fonts/maple-7.9-bold-07f-2f4af46cc6.woff2 +0 -0
  150. package/dist/fonts/maple-7.9-bold-0fc-42ed90884c.woff2 +0 -0
  151. package/dist/fonts/maple-7.9-bold-780-261fac1b24.woff2 +0 -0
  152. package/dist/fonts/maple-7.9-bold-781-377319a91b.woff2 +0 -0
  153. package/dist/fonts/maple-7.9-bold-782-3106f0be62.woff2 +0 -0
  154. package/dist/fonts/maple-7.9-bold-783-74fbfa8648.woff2 +0 -0
  155. package/dist/fonts/maple-7.9-bold-784-8570270664.woff2 +0 -0
  156. package/dist/fonts/maple-7.9-bold-785-cee8de1ded.woff2 +0 -0
  157. package/dist/fonts/maple-7.9-bold-786-5ab5ff7149.woff2 +0 -0
  158. package/dist/fonts/maple-7.9-bold-787-844b4c4373.woff2 +0 -0
  159. package/dist/fonts/maple-7.9-bold-788-01731198ab.woff2 +0 -0
  160. package/dist/fonts/maple-7.9-bold-789-f4c75fa806.woff2 +0 -0
  161. package/dist/fonts/maple-7.9-bold-78a-4370321ec6.woff2 +0 -0
  162. package/dist/fonts/maple-7.9-bold-78b-5cd412b56f.woff2 +0 -0
  163. package/dist/fonts/maple-7.9-bold-78c-f88e331085.woff2 +0 -0
  164. package/dist/fonts/maple-7.9-bold-78d-1b9b77f6e8.woff2 +0 -0
  165. package/dist/fonts/maple-7.9-bold-latin-3b4b2831f3.woff2 +0 -0
  166. package/dist/fonts/maple-7.9-bolditalic-005-d59fef8639.woff2 +0 -0
  167. package/dist/fonts/maple-7.9-bolditalic-00f-1bbda7af69.woff2 +0 -0
  168. package/dist/fonts/maple-7.9-bolditalic-010-5cdd4b46a7.woff2 +0 -0
  169. package/dist/fonts/maple-7.9-bolditalic-011-0d1f1ae687.woff2 +0 -0
  170. package/dist/fonts/maple-7.9-bolditalic-012-4ceb000b2e.woff2 +0 -0
  171. package/dist/fonts/maple-7.9-bolditalic-013-ad0a4f4313.woff2 +0 -0
  172. package/dist/fonts/maple-7.9-bolditalic-014-94d54b71b3.woff2 +0 -0
  173. package/dist/fonts/maple-7.9-bolditalic-015-7aede280da.woff2 +0 -0
  174. package/dist/fonts/maple-7.9-bolditalic-018-f21221b1c2.woff2 +0 -0
  175. package/dist/fonts/maple-7.9-bolditalic-027-d23d0e80a4.woff2 +0 -0
  176. package/dist/fonts/maple-7.9-bolditalic-028-23bd6f24df.woff2 +0 -0
  177. package/dist/fonts/maple-7.9-bolditalic-029-c481c0ad50.woff2 +0 -0
  178. package/dist/fonts/maple-7.9-bolditalic-02a-1c134be68e.woff2 +0 -0
  179. package/dist/fonts/maple-7.9-bolditalic-02b-3feb29ecfd.woff2 +0 -0
  180. package/dist/fonts/maple-7.9-bolditalic-02c-de8cc5a063.woff2 +0 -0
  181. package/dist/fonts/maple-7.9-bolditalic-02d-ea25c21fad.woff2 +0 -0
  182. package/dist/fonts/maple-7.9-bolditalic-02e-e68d6bd335.woff2 +0 -0
  183. package/dist/fonts/maple-7.9-bolditalic-02f-c88d1e92dc.woff2 +0 -0
  184. package/dist/fonts/maple-7.9-bolditalic-030-f26fefe87e.woff2 +0 -0
  185. package/dist/fonts/maple-7.9-bolditalic-031-f2aa1b8e22.woff2 +0 -0
  186. package/dist/fonts/maple-7.9-bolditalic-032-c4fafc4aa6.woff2 +0 -0
  187. package/dist/fonts/maple-7.9-bolditalic-033-288a1639ca.woff2 +0 -0
  188. package/dist/fonts/maple-7.9-bolditalic-034-7c982125bc.woff2 +0 -0
  189. package/dist/fonts/maple-7.9-bolditalic-035-fd1575dea2.woff2 +0 -0
  190. package/dist/fonts/maple-7.9-bolditalic-036-f6bf406353.woff2 +0 -0
  191. package/dist/fonts/maple-7.9-bolditalic-037-8ac1466916.woff2 +0 -0
  192. package/dist/fonts/maple-7.9-bolditalic-038-e9f7fed6a6.woff2 +0 -0
  193. package/dist/fonts/maple-7.9-bolditalic-039-6f90d42310.woff2 +0 -0
  194. package/dist/fonts/maple-7.9-bolditalic-03a-30c9409a7e.woff2 +0 -0
  195. package/dist/fonts/maple-7.9-bolditalic-03b-4f1741e9e9.woff2 +0 -0
  196. package/dist/fonts/maple-7.9-bolditalic-03c-6551c74e78.woff2 +0 -0
  197. package/dist/fonts/maple-7.9-bolditalic-03d-c8e2b07106.woff2 +0 -0
  198. package/dist/fonts/maple-7.9-bolditalic-03e-c3e98613d4.woff2 +0 -0
  199. package/dist/fonts/maple-7.9-bolditalic-03f-f1c580bad4.woff2 +0 -0
  200. package/dist/fonts/maple-7.9-bolditalic-040-32e8260076.woff2 +0 -0
  201. package/dist/fonts/maple-7.9-bolditalic-041-39805a0ed7.woff2 +0 -0
  202. package/dist/fonts/maple-7.9-bolditalic-042-13b4d84cd3.woff2 +0 -0
  203. package/dist/fonts/maple-7.9-bolditalic-043-d85780d0bd.woff2 +0 -0
  204. package/dist/fonts/maple-7.9-bolditalic-044-1b5eb624d7.woff2 +0 -0
  205. package/dist/fonts/maple-7.9-bolditalic-045-ad0b4f8762.woff2 +0 -0
  206. package/dist/fonts/maple-7.9-bolditalic-046-9966021b3a.woff2 +0 -0
  207. package/dist/fonts/maple-7.9-bolditalic-047-100d4f6f4e.woff2 +0 -0
  208. package/dist/fonts/maple-7.9-bolditalic-048-a0a1e8b29c.woff2 +0 -0
  209. package/dist/fonts/maple-7.9-bolditalic-049-0806f9b3cc.woff2 +0 -0
  210. package/dist/fonts/maple-7.9-bolditalic-04a-28fdef78b3.woff2 +0 -0
  211. package/dist/fonts/maple-7.9-bolditalic-04b-6e93ef0086.woff2 +0 -0
  212. package/dist/fonts/maple-7.9-bolditalic-04c-50b8da6282.woff2 +0 -0
  213. package/dist/fonts/maple-7.9-bolditalic-04d-f93277723d.woff2 +0 -0
  214. package/dist/fonts/maple-7.9-bolditalic-04e-72e2644690.woff2 +0 -0
  215. package/dist/fonts/maple-7.9-bolditalic-04f-4f234f1802.woff2 +0 -0
  216. package/dist/fonts/maple-7.9-bolditalic-070-a3658a8a23.woff2 +0 -0
  217. package/dist/fonts/maple-7.9-bolditalic-071-4987e49732.woff2 +0 -0
  218. package/dist/fonts/maple-7.9-bolditalic-072-e587fa72cd.woff2 +0 -0
  219. package/dist/fonts/maple-7.9-bolditalic-073-2aca01fdf6.woff2 +0 -0
  220. package/dist/fonts/maple-7.9-bolditalic-074-ae89f99a60.woff2 +0 -0
  221. package/dist/fonts/maple-7.9-bolditalic-075-5a77191665.woff2 +0 -0
  222. package/dist/fonts/maple-7.9-bolditalic-076-4c54a87277.woff2 +0 -0
  223. package/dist/fonts/maple-7.9-bolditalic-077-e47dce25ee.woff2 +0 -0
  224. package/dist/fonts/maple-7.9-bolditalic-078-b0b720dab6.woff2 +0 -0
  225. package/dist/fonts/maple-7.9-bolditalic-079-316ee96f6a.woff2 +0 -0
  226. package/dist/fonts/maple-7.9-bolditalic-07a-b10ccb8107.woff2 +0 -0
  227. package/dist/fonts/maple-7.9-bolditalic-07d-5667cb3be1.woff2 +0 -0
  228. package/dist/fonts/maple-7.9-bolditalic-07f-2ac6735ff8.woff2 +0 -0
  229. package/dist/fonts/maple-7.9-bolditalic-0fc-52171ca01e.woff2 +0 -0
  230. package/dist/fonts/maple-7.9-bolditalic-780-3c090c5f89.woff2 +0 -0
  231. package/dist/fonts/maple-7.9-bolditalic-781-ca4077b4fa.woff2 +0 -0
  232. package/dist/fonts/maple-7.9-bolditalic-782-42c3d52206.woff2 +0 -0
  233. package/dist/fonts/maple-7.9-bolditalic-783-d72840dd37.woff2 +0 -0
  234. package/dist/fonts/maple-7.9-bolditalic-784-b9ca097e50.woff2 +0 -0
  235. package/dist/fonts/maple-7.9-bolditalic-785-b81dec6af9.woff2 +0 -0
  236. package/dist/fonts/maple-7.9-bolditalic-786-76c266f6f5.woff2 +0 -0
  237. package/dist/fonts/maple-7.9-bolditalic-787-403bd73766.woff2 +0 -0
  238. package/dist/fonts/maple-7.9-bolditalic-788-71a4b8c2c5.woff2 +0 -0
  239. package/dist/fonts/maple-7.9-bolditalic-789-94527f3fa4.woff2 +0 -0
  240. package/dist/fonts/maple-7.9-bolditalic-78a-81918568b8.woff2 +0 -0
  241. package/dist/fonts/maple-7.9-bolditalic-78b-d0302b4bfe.woff2 +0 -0
  242. package/dist/fonts/maple-7.9-bolditalic-78c-e864792049.woff2 +0 -0
  243. package/dist/fonts/maple-7.9-bolditalic-78d-105ff69bf4.woff2 +0 -0
  244. package/dist/fonts/maple-7.9-bolditalic-latin-96412d165b.woff2 +0 -0
  245. package/dist/fonts/maple-7.9-italic-005-23b09473f8.woff2 +0 -0
  246. package/dist/fonts/maple-7.9-italic-00f-e9bf4dd93c.woff2 +0 -0
  247. package/dist/fonts/maple-7.9-italic-010-22933d6d77.woff2 +0 -0
  248. package/dist/fonts/maple-7.9-italic-011-71b0157ddc.woff2 +0 -0
  249. package/dist/fonts/maple-7.9-italic-012-b751ab3752.woff2 +0 -0
  250. package/dist/fonts/maple-7.9-italic-013-530b1d3f8b.woff2 +0 -0
  251. package/dist/fonts/maple-7.9-italic-014-0e842f6749.woff2 +0 -0
  252. package/dist/fonts/maple-7.9-italic-015-642211b03a.woff2 +0 -0
  253. package/dist/fonts/maple-7.9-italic-018-0c5b0001c6.woff2 +0 -0
  254. package/dist/fonts/maple-7.9-italic-027-9a09afbbb1.woff2 +0 -0
  255. package/dist/fonts/maple-7.9-italic-028-93fea67326.woff2 +0 -0
  256. package/dist/fonts/maple-7.9-italic-029-7d7627d4cc.woff2 +0 -0
  257. package/dist/fonts/maple-7.9-italic-02a-88e76d051b.woff2 +0 -0
  258. package/dist/fonts/maple-7.9-italic-02b-7d9219748b.woff2 +0 -0
  259. package/dist/fonts/maple-7.9-italic-02c-049df19d84.woff2 +0 -0
  260. package/dist/fonts/maple-7.9-italic-02d-663fc73c6e.woff2 +0 -0
  261. package/dist/fonts/maple-7.9-italic-02e-a98ed33998.woff2 +0 -0
  262. package/dist/fonts/maple-7.9-italic-02f-8ef9d93d09.woff2 +0 -0
  263. package/dist/fonts/maple-7.9-italic-030-74885d994d.woff2 +0 -0
  264. package/dist/fonts/maple-7.9-italic-031-4cf66c5d65.woff2 +0 -0
  265. package/dist/fonts/maple-7.9-italic-032-a608b7aed4.woff2 +0 -0
  266. package/dist/fonts/maple-7.9-italic-033-2978f66e55.woff2 +0 -0
  267. package/dist/fonts/maple-7.9-italic-034-38f7a0bf87.woff2 +0 -0
  268. package/dist/fonts/maple-7.9-italic-035-5cc45cd3b7.woff2 +0 -0
  269. package/dist/fonts/maple-7.9-italic-036-ca92d327e5.woff2 +0 -0
  270. package/dist/fonts/maple-7.9-italic-037-f887681c7d.woff2 +0 -0
  271. package/dist/fonts/maple-7.9-italic-038-06150b88f8.woff2 +0 -0
  272. package/dist/fonts/maple-7.9-italic-039-761da333b7.woff2 +0 -0
  273. package/dist/fonts/maple-7.9-italic-03a-1408ddaf2c.woff2 +0 -0
  274. package/dist/fonts/maple-7.9-italic-03b-1542b3b67c.woff2 +0 -0
  275. package/dist/fonts/maple-7.9-italic-03c-479f2f5011.woff2 +0 -0
  276. package/dist/fonts/maple-7.9-italic-03d-0f10590b11.woff2 +0 -0
  277. package/dist/fonts/maple-7.9-italic-03e-8b93e0ee0e.woff2 +0 -0
  278. package/dist/fonts/maple-7.9-italic-03f-2bd8815e3e.woff2 +0 -0
  279. package/dist/fonts/maple-7.9-italic-040-b85023679a.woff2 +0 -0
  280. package/dist/fonts/maple-7.9-italic-041-eb881b7b92.woff2 +0 -0
  281. package/dist/fonts/maple-7.9-italic-042-01490a139e.woff2 +0 -0
  282. package/dist/fonts/maple-7.9-italic-043-ffb21b6c4c.woff2 +0 -0
  283. package/dist/fonts/maple-7.9-italic-044-05cd1a1b14.woff2 +0 -0
  284. package/dist/fonts/maple-7.9-italic-045-1270935363.woff2 +0 -0
  285. package/dist/fonts/maple-7.9-italic-046-857077eab1.woff2 +0 -0
  286. package/dist/fonts/maple-7.9-italic-047-ca57774cc3.woff2 +0 -0
  287. package/dist/fonts/maple-7.9-italic-048-20969d6307.woff2 +0 -0
  288. package/dist/fonts/maple-7.9-italic-049-4066aa1a18.woff2 +0 -0
  289. package/dist/fonts/maple-7.9-italic-04a-1ed360d580.woff2 +0 -0
  290. package/dist/fonts/maple-7.9-italic-04b-2eba62d76b.woff2 +0 -0
  291. package/dist/fonts/maple-7.9-italic-04c-2f4effc460.woff2 +0 -0
  292. package/dist/fonts/maple-7.9-italic-04d-d858c0a9c1.woff2 +0 -0
  293. package/dist/fonts/maple-7.9-italic-04e-a19eb0289f.woff2 +0 -0
  294. package/dist/fonts/maple-7.9-italic-04f-8addde15f2.woff2 +0 -0
  295. package/dist/fonts/maple-7.9-italic-070-f0bd641f1c.woff2 +0 -0
  296. package/dist/fonts/maple-7.9-italic-071-e6ac564431.woff2 +0 -0
  297. package/dist/fonts/maple-7.9-italic-072-e6fea65bca.woff2 +0 -0
  298. package/dist/fonts/maple-7.9-italic-073-71621c00dc.woff2 +0 -0
  299. package/dist/fonts/maple-7.9-italic-074-4bd488962a.woff2 +0 -0
  300. package/dist/fonts/maple-7.9-italic-075-2838d95bd6.woff2 +0 -0
  301. package/dist/fonts/maple-7.9-italic-076-94e02ecc03.woff2 +0 -0
  302. package/dist/fonts/maple-7.9-italic-077-32c536ab6b.woff2 +0 -0
  303. package/dist/fonts/maple-7.9-italic-078-18256447bd.woff2 +0 -0
  304. package/dist/fonts/maple-7.9-italic-079-7a735e61cf.woff2 +0 -0
  305. package/dist/fonts/maple-7.9-italic-07a-2b57a6a905.woff2 +0 -0
  306. package/dist/fonts/maple-7.9-italic-07d-8ba1bbfb50.woff2 +0 -0
  307. package/dist/fonts/maple-7.9-italic-07f-0240d80c69.woff2 +0 -0
  308. package/dist/fonts/maple-7.9-italic-0fc-e5b20a692e.woff2 +0 -0
  309. package/dist/fonts/maple-7.9-italic-780-093cc90a9b.woff2 +0 -0
  310. package/dist/fonts/maple-7.9-italic-781-f6ec357f6d.woff2 +0 -0
  311. package/dist/fonts/maple-7.9-italic-782-5ca2ef4ddd.woff2 +0 -0
  312. package/dist/fonts/maple-7.9-italic-783-7450baabee.woff2 +0 -0
  313. package/dist/fonts/maple-7.9-italic-784-14a93cc4bd.woff2 +0 -0
  314. package/dist/fonts/maple-7.9-italic-785-d62fb8b4d7.woff2 +0 -0
  315. package/dist/fonts/maple-7.9-italic-786-1d2959dc83.woff2 +0 -0
  316. package/dist/fonts/maple-7.9-italic-787-70ae947136.woff2 +0 -0
  317. package/dist/fonts/maple-7.9-italic-788-cf1f156ebf.woff2 +0 -0
  318. package/dist/fonts/maple-7.9-italic-789-f0b79f9680.woff2 +0 -0
  319. package/dist/fonts/maple-7.9-italic-78a-5a53fd7870.woff2 +0 -0
  320. package/dist/fonts/maple-7.9-italic-78b-40be093bfd.woff2 +0 -0
  321. package/dist/fonts/maple-7.9-italic-78c-3b11646f8e.woff2 +0 -0
  322. package/dist/fonts/maple-7.9-italic-78d-b13ed8c48b.woff2 +0 -0
  323. package/dist/fonts/maple-7.9-italic-latin-befeb2b610.woff2 +0 -0
  324. package/dist/fonts/maple-7.9-regular-005-90bff107ac.woff2 +0 -0
  325. package/dist/fonts/maple-7.9-regular-00f-001e503e53.woff2 +0 -0
  326. package/dist/fonts/maple-7.9-regular-010-374da1ebb4.woff2 +0 -0
  327. package/dist/fonts/maple-7.9-regular-011-8f91fcc9e7.woff2 +0 -0
  328. package/dist/fonts/maple-7.9-regular-012-e4ec3016ef.woff2 +0 -0
  329. package/dist/fonts/maple-7.9-regular-013-e779e13a12.woff2 +0 -0
  330. package/dist/fonts/maple-7.9-regular-014-6b833ad501.woff2 +0 -0
  331. package/dist/fonts/maple-7.9-regular-015-4e058c4c42.woff2 +0 -0
  332. package/dist/fonts/maple-7.9-regular-018-6f776bc19b.woff2 +0 -0
  333. package/dist/fonts/maple-7.9-regular-027-92c0be3439.woff2 +0 -0
  334. package/dist/fonts/maple-7.9-regular-028-154c8c3039.woff2 +0 -0
  335. package/dist/fonts/maple-7.9-regular-029-9d88470aca.woff2 +0 -0
  336. package/dist/fonts/maple-7.9-regular-02a-7a94cb26f2.woff2 +0 -0
  337. package/dist/fonts/maple-7.9-regular-02b-1725b841c2.woff2 +0 -0
  338. package/dist/fonts/maple-7.9-regular-02c-e080c435d6.woff2 +0 -0
  339. package/dist/fonts/maple-7.9-regular-02d-a6461c4708.woff2 +0 -0
  340. package/dist/fonts/maple-7.9-regular-02e-2e55d9b957.woff2 +0 -0
  341. package/dist/fonts/maple-7.9-regular-02f-858a76fa1f.woff2 +0 -0
  342. package/dist/fonts/maple-7.9-regular-030-bbbe80f8ad.woff2 +0 -0
  343. package/dist/fonts/maple-7.9-regular-031-cafc1258ad.woff2 +0 -0
  344. package/dist/fonts/maple-7.9-regular-032-0ca83ecceb.woff2 +0 -0
  345. package/dist/fonts/maple-7.9-regular-033-6cb995f2e7.woff2 +0 -0
  346. package/dist/fonts/maple-7.9-regular-034-5877222be6.woff2 +0 -0
  347. package/dist/fonts/maple-7.9-regular-035-988d8f2d26.woff2 +0 -0
  348. package/dist/fonts/maple-7.9-regular-036-e91853e3ca.woff2 +0 -0
  349. package/dist/fonts/maple-7.9-regular-037-3eed60f359.woff2 +0 -0
  350. package/dist/fonts/maple-7.9-regular-038-5681f42a4a.woff2 +0 -0
  351. package/dist/fonts/maple-7.9-regular-039-07036fe444.woff2 +0 -0
  352. package/dist/fonts/maple-7.9-regular-03a-5495eead93.woff2 +0 -0
  353. package/dist/fonts/maple-7.9-regular-03b-d07b1d6c1e.woff2 +0 -0
  354. package/dist/fonts/maple-7.9-regular-03c-6291400ee0.woff2 +0 -0
  355. package/dist/fonts/maple-7.9-regular-03d-3787a51772.woff2 +0 -0
  356. package/dist/fonts/maple-7.9-regular-03e-ce4d945844.woff2 +0 -0
  357. package/dist/fonts/maple-7.9-regular-03f-95e98b329c.woff2 +0 -0
  358. package/dist/fonts/maple-7.9-regular-040-693b769fe8.woff2 +0 -0
  359. package/dist/fonts/maple-7.9-regular-041-7b436d2c09.woff2 +0 -0
  360. package/dist/fonts/maple-7.9-regular-042-9ad884cd73.woff2 +0 -0
  361. package/dist/fonts/maple-7.9-regular-043-372231e8e2.woff2 +0 -0
  362. package/dist/fonts/maple-7.9-regular-044-9922b540b1.woff2 +0 -0
  363. package/dist/fonts/maple-7.9-regular-045-8a88a91c22.woff2 +0 -0
  364. package/dist/fonts/maple-7.9-regular-046-82859ede10.woff2 +0 -0
  365. package/dist/fonts/maple-7.9-regular-047-6532babd62.woff2 +0 -0
  366. package/dist/fonts/maple-7.9-regular-048-abfdc5d7ce.woff2 +0 -0
  367. package/dist/fonts/maple-7.9-regular-049-adb7fa9ed3.woff2 +0 -0
  368. package/dist/fonts/maple-7.9-regular-04a-f3f794b1cb.woff2 +0 -0
  369. package/dist/fonts/maple-7.9-regular-04b-715211b8dd.woff2 +0 -0
  370. package/dist/fonts/maple-7.9-regular-04c-c6f978d10d.woff2 +0 -0
  371. package/dist/fonts/maple-7.9-regular-04d-61019a1c8f.woff2 +0 -0
  372. package/dist/fonts/maple-7.9-regular-04e-806d6efe85.woff2 +0 -0
  373. package/dist/fonts/maple-7.9-regular-04f-99d19aa8db.woff2 +0 -0
  374. package/dist/fonts/maple-7.9-regular-070-e94ba9445d.woff2 +0 -0
  375. package/dist/fonts/maple-7.9-regular-071-057314b533.woff2 +0 -0
  376. package/dist/fonts/maple-7.9-regular-072-a7699beb84.woff2 +0 -0
  377. package/dist/fonts/maple-7.9-regular-073-ebe1bd9ef4.woff2 +0 -0
  378. package/dist/fonts/maple-7.9-regular-074-722db38100.woff2 +0 -0
  379. package/dist/fonts/maple-7.9-regular-075-150ff7187b.woff2 +0 -0
  380. package/dist/fonts/maple-7.9-regular-076-c14595e715.woff2 +0 -0
  381. package/dist/fonts/maple-7.9-regular-077-6c88302a32.woff2 +0 -0
  382. package/dist/fonts/maple-7.9-regular-078-549b294c78.woff2 +0 -0
  383. package/dist/fonts/maple-7.9-regular-079-5131c42759.woff2 +0 -0
  384. package/dist/fonts/maple-7.9-regular-07a-c0dad221b5.woff2 +0 -0
  385. package/dist/fonts/maple-7.9-regular-07f-5cf5ebe065.woff2 +0 -0
  386. package/dist/fonts/maple-7.9-regular-0fc-b644c0c6d9.woff2 +0 -0
  387. package/dist/fonts/maple-7.9-regular-780-c6000d472a.woff2 +0 -0
  388. package/dist/fonts/maple-7.9-regular-781-86409ab7f7.woff2 +0 -0
  389. package/dist/fonts/maple-7.9-regular-782-9cd950637c.woff2 +0 -0
  390. package/dist/fonts/maple-7.9-regular-783-105c4d02df.woff2 +0 -0
  391. package/dist/fonts/maple-7.9-regular-784-00c042af97.woff2 +0 -0
  392. package/dist/fonts/maple-7.9-regular-785-022568d0b8.woff2 +0 -0
  393. package/dist/fonts/maple-7.9-regular-786-90b6f3aef5.woff2 +0 -0
  394. package/dist/fonts/maple-7.9-regular-787-e2888596c9.woff2 +0 -0
  395. package/dist/fonts/maple-7.9-regular-788-3416e1fda3.woff2 +0 -0
  396. package/dist/fonts/maple-7.9-regular-789-9ffc917b0b.woff2 +0 -0
  397. package/dist/fonts/maple-7.9-regular-78a-4a921d07f6.woff2 +0 -0
  398. package/dist/fonts/maple-7.9-regular-78b-9d71c5327b.woff2 +0 -0
  399. package/dist/fonts/maple-7.9-regular-78c-9ec048314b.woff2 +0 -0
  400. package/dist/fonts/maple-7.9-regular-78d-46a2ebd113.woff2 +0 -0
  401. package/dist/fonts/maple-7.9-regular-latin-59c752ba1d.woff2 +0 -0
  402. package/dist/fonts/maple.css +315 -0
  403. package/dist/index.d.ts +9 -0
  404. package/dist/index.js +136 -0
  405. package/dist/index.js.map +1 -0
  406. package/dist/math-renderer-L6DOH4RX.js +21 -0
  407. package/dist/math-renderer-L6DOH4RX.js.map +1 -0
  408. package/dist/math.css +1 -0
  409. package/dist/react/index.d.ts +113 -0
  410. package/dist/react/index.js +59 -0
  411. package/dist/react/index.js.map +1 -0
  412. package/dist/styles.css +454 -0
  413. package/dist/translations-DHnYMg4h.d.ts +318 -0
  414. package/docs/README.md +13 -0
  415. package/docs/api.md +8 -0
  416. package/docs/assets/rendered.svg +9 -0
  417. package/docs/assets/source.svg +9 -0
  418. package/docs/en/README.md +26 -0
  419. package/docs/en/ai-skills.md +57 -0
  420. package/docs/en/annotations.md +84 -0
  421. package/docs/en/api.md +107 -0
  422. package/docs/en/architecture.md +33 -0
  423. package/docs/en/extensions.md +159 -0
  424. package/docs/en/getting-started.md +67 -0
  425. package/docs/en/integration.md +130 -0
  426. package/docs/en/modules.md +80 -0
  427. package/docs/en/performance.md +53 -0
  428. package/docs/en/plugin-packages.md +68 -0
  429. package/docs/en/styles.md +80 -0
  430. package/docs/en/syntax.md +352 -0
  431. package/docs/extensions.md +8 -0
  432. package/docs/implementation.md +8 -0
  433. package/docs/performance.md +8 -0
  434. package/docs/screenshots/blocks.png +0 -0
  435. package/docs/screenshots/dark.png +0 -0
  436. package/docs/screenshots/desktop.png +0 -0
  437. package/docs/screenshots/plugin-mobile.png +0 -0
  438. package/docs/styles.md +8 -0
  439. package/docs/visual-upgrade.md +8 -0
  440. package/docs/zh-CN/README.md +26 -0
  441. package/docs/zh-CN/ai-skills.md +57 -0
  442. package/docs/zh-CN/annotations.md +84 -0
  443. package/docs/zh-CN/api.md +107 -0
  444. package/docs/zh-CN/architecture.md +33 -0
  445. package/docs/zh-CN/extensions.md +159 -0
  446. package/docs/zh-CN/getting-started.md +67 -0
  447. package/docs/zh-CN/integration.md +130 -0
  448. package/docs/zh-CN/modules.md +80 -0
  449. package/docs/zh-CN/performance.md +53 -0
  450. package/docs/zh-CN/plugin-packages.md +68 -0
  451. package/docs/zh-CN/styles.md +80 -0
  452. package/docs/zh-CN/syntax.md +352 -0
  453. package/examples/assistant.tsx +52 -0
  454. package/examples/notes.tsx +80 -0
  455. package/examples/packages/paper-theme/index.css +25 -0
  456. package/examples/packages/paper-theme/package.json +7 -0
  457. package/examples/packages/reading-tools/index.d.ts +2 -0
  458. package/examples/packages/reading-tools/index.js +25 -0
  459. package/examples/packages/reading-tools/package.json +16 -0
  460. package/package.json +114 -3
  461. package/skills/limr-plugin-development/SKILL.md +22 -0
  462. package/skills/limr-plugin-development/agents/openai.yaml +4 -0
  463. package/skills/limr-plugin-development/assets/plugin-template/README.md +30 -0
  464. package/skills/limr-plugin-development/assets/plugin-template/package.json +36 -0
  465. package/skills/limr-plugin-development/assets/plugin-template/src/index.tsx +50 -0
  466. package/skills/limr-plugin-development/assets/plugin-template/src/styles.css +9 -0
  467. package/skills/limr-plugin-development/assets/plugin-template/tsconfig.json +20 -0
  468. package/skills/limr-plugin-development/assets/plugin-template/tsup.config.ts +8 -0
  469. package/skills/limr-plugin-development/references/contract.md +45 -0
  470. package/skills/limr-use/SKILL.md +23 -0
  471. package/skills/limr-use/agents/openai.yaml +4 -0
  472. package/skills/limr-use/references/integration.md +41 -0
  473. package/skills/limr-use/references/syntax.md +17 -0
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/components/Reader.tsx","../src/components/TableOfContents.tsx","../src/react/overflow-fade.ts","../src/components/AnnotationSidebar.tsx","../src/components/AnnotationContent.tsx","../src/components/annotation-reference.ts","../src/components/AnnotationOverlay.tsx","../src/components/card-motion.ts","../src/components/SelectionToolbar.tsx"],"sourcesContent":["import { useEffect, useId, useRef, useState, type CSSProperties } from 'react';\nimport { useAppearance, DocumentProvider, useIsomorphicLayoutEffect, useLocale, useRuntime, useStoreSelector, useTheme, type DocumentProviderProps } from '../react/context';\nimport { Markdown } from '../react/Markdown';\nimport type { SelectionAction, StyledProps } from '../react/types';\nimport { TableOfContents } from './TableOfContents';\nimport { AnnotationSidebar } from './AnnotationSidebar';\nimport { AnnotationOverlay } from './AnnotationOverlay';\nimport { SelectionToolbar } from './SelectionToolbar';\nimport { Collapse } from './Collapse';\nimport { useOverflowFade } from '../react/overflow-fade';\n\nexport interface ReaderProps extends Omit<DocumentProviderProps, 'children'>, StyledProps {\n actions?: readonly SelectionAction[];\n toc?: boolean;\n sidebar?: boolean;\n followOutput?: boolean;\n sidebarBreakpoint?: number;\n /** Fill unused viewport height without deriving the layout from annotations. */\n fillHeight?: boolean;\n}\nexport function Reader({ actions, toc = true, sidebar = true, followOutput = false, sidebarBreakpoint = 1120, fillHeight = true, className, style, ...provider }: ReaderProps) {\n return <DocumentProvider {...provider}><ReaderLayout actions={actions} toc={toc} sidebar={sidebar} followOutput={followOutput} sidebarBreakpoint={sidebarBreakpoint} fillHeight={fillHeight} className={className} style={style} /></DocumentProvider>;\n}\nfunction ReaderLayout({ actions, toc, sidebar, followOutput, sidebarBreakpoint, fillHeight, className, style }: Pick<ReaderProps, 'actions' | 'toc' | 'sidebar' | 'followOutput' | 'className' | 'style' | 'fillHeight'> & { sidebarBreakpoint: number }) {\n const runtime = useRuntime();\n const scrollRoot = useStoreSelector(runtime.configuration, config => config.scrollRoot);\n const layout = useStoreSelector(runtime.layout, value => value);\n const appearance = useAppearance();\n const theme = useTheme();\n const ref = useRef<HTMLDivElement>(null);\n const tocRail = useRef<HTMLDivElement>(null);\n const content = useRef<HTMLElement>(null);\n useOverflowFade(content, runtime, ':scope > .limr-prose');\n const [width, setWidth] = useState(0);\n const [availableHeight, setAvailableHeight] = useState(0);\n useIsomorphicLayoutEffect(() => {\n if (!fillHeight || !ref.current) return;\n // Use the origin in scroll coordinates. Scrolling must not grow/shrink the\n // reading canvas and feed back into the page's scroll range.\n const origin = ref.current.getBoundingClientRect().top - runtime.getViewportTop() - (scrollRoot?.clientTop ?? 0) + runtime.getScrollTop();\n setAvailableHeight(Math.max(0, (scrollRoot?.clientHeight ?? window.innerHeight) - origin));\n }, [runtime, scrollRoot, fillHeight, layout, width]);\n useEffect(() => {\n const element = ref.current;\n if (!element) return;\n const observer = new ResizeObserver(() => { setWidth(element.clientWidth); runtime.requestLayout(); });\n observer.observe(element);\n if (scrollRoot) observer.observe(scrollRoot);\n if (element.parentElement) observer.observe(element.parentElement);\n setWidth(element.clientWidth);\n return () => observer.disconnect();\n }, [runtime, scrollRoot, sidebarBreakpoint]);\n useIsomorphicLayoutEffect(() => {\n const rail = tocRail.current;\n if (!rail) return;\n let frame = 0;\n const measure = () => {\n frame = 0;\n if (!rail.clientWidth) return;\n const viewport = window.visualViewport;\n let top = viewport?.offsetTop ?? 0, bottom = top + (viewport?.height ?? window.innerHeight);\n if (scrollRoot) {\n const origin = scrollRoot.getBoundingClientRect().top + scrollRoot.clientTop;\n top = Math.max(top, origin); bottom = Math.min(bottom, origin + scrollRoot.clientHeight);\n }\n const reader = ref.current!.getBoundingClientRect();\n // A reader that has left the viewport must not cover the next reader.\n rail.toggleAttribute('inert', reader.bottom <= top || reader.top >= bottom);\n const height = `${Math.max(0, bottom - Math.max(top, rail.getBoundingClientRect().top)).toFixed(2)}px`;\n if (rail.style.getPropertyValue('--limr-toc-available-height') !== height) rail.style.setProperty('--limr-toc-available-height', height);\n };\n const schedule = () => { if (!frame) frame = requestAnimationFrame(measure); };\n const unsubscribe = [runtime.layout.subscribe(schedule), runtime.viewport.subscribe(schedule)];\n window.addEventListener('scroll', schedule, { passive: true });\n window.addEventListener('resize', schedule);\n window.visualViewport?.addEventListener('resize', schedule);\n window.visualViewport?.addEventListener('scroll', schedule);\n measure();\n return () => {\n cancelAnimationFrame(frame); unsubscribe.forEach(fn => fn());\n window.removeEventListener('scroll', schedule); window.removeEventListener('resize', schedule);\n window.visualViewport?.removeEventListener('resize', schedule); window.visualViewport?.removeEventListener('scroll', schedule);\n rail.removeAttribute('inert'); rail.style.removeProperty('--limr-toc-available-height');\n };\n }, [runtime, scrollRoot, toc]);\n const sidebarVisible = !!sidebar && width >= sidebarBreakpoint;\n return <div ref={ref} className={`limr-reader ${className ?? ''}`} style={{ '--limr-reader-available-height': fillHeight ? `${availableHeight}px` : undefined, ...style } as CSSProperties} data-fill-height={fillHeight || undefined} data-sidebar={sidebarVisible || undefined} data-toc={toc && width >= 800 || undefined} data-limr-theme={theme} data-limr-appearance={appearance}>\n {toc && <><div ref={tocRail} className=\"limr-reader-toc\"><TableOfContents /></div><MobileContents /></>}\n <main ref={content} className=\"limr-reader-content\"><Markdown followOutput={followOutput} /></main>\n {sidebarVisible && <AnnotationSidebar />}\n <AnnotationOverlay disabled={sidebarVisible} />\n <SelectionToolbar actions={actions} />\n </div>;\n}\n\nfunction MobileContents() {\n const locale = useLocale();\n const [open, setOpen] = useState(false);\n const id = useId();\n return <div className=\"limr-reader-mobile-toc\">\n <button type=\"button\" className=\"limr-mobile-toc-toggle\" aria-expanded={open} aria-controls={id} onClick={() => setOpen(value => !value)}>\n <span>{locale.contents}</span><svg viewBox=\"0 0 20 20\" fill=\"none\" aria-hidden=\"true\"><path d=\"m6 8 4 4 4-4\" /></svg>\n </button>\n <div id={id}><Collapse open={open} keepMounted><TableOfContents /></Collapse></div>\n </div>;\n}\n","import { useEffect, useRef } from 'react';\nimport { useAppearance, useDocumentSelector, useLocale, useRuntime, useStoreSelector, useTheme } from '../react/context';\nimport type { StyledProps } from '../react/types';\nimport { scrollWithMotion } from '../react/motion';\nimport { useOverflowFade } from '../react/overflow-fade';\n\nexport interface TableOfContentsProps extends StyledProps { title?: string; maxDepth?: number; followActive?: boolean; topInset?: number; updateHash?: boolean }\nexport function TableOfContents({ title, maxDepth = 6, followActive = true, topInset = 24, updateHash = false, className, style }: TableOfContentsProps) {\n const runtime = useRuntime();\n const appearance = useAppearance();\n const theme = useTheme(), locale = useLocale();\n const headings = useDocumentSelector(doc => doc.headings);\n useStoreSelector(runtime.layout, value => value);\n const active = useStoreSelector(runtime.interaction, state => state.activeHeading);\n const list = useRef<HTMLDivElement>(null);\n useOverflowFade(list, runtime, ':scope > ol');\n const manualUntil = useRef(0);\n const timer = useRef<ReturnType<typeof setTimeout> | undefined>(undefined);\n const visible = headings.filter(heading => heading.level <= maxDepth && !runtime.headings.get(heading.id)?.closest('[inert]'));\n visible.sort((a, b) => {\n const left = runtime.headings.get(a.id), right = runtime.headings.get(b.id);\n return left && right && left !== right ? left.compareDocumentPosition(right) & Node.DOCUMENT_POSITION_FOLLOWING ? -1 : 1 : 0;\n });\n const minimum = Math.min(...visible.map(heading => heading.level), 6);\n useEffect(() => {\n if (!followActive || !active) return;\n const follow = () => {\n const container = list.current;\n if (!container || container.clientHeight === 0) return;\n const element = Array.from(container.querySelectorAll<HTMLElement>('[data-heading]')).find(item => item.dataset.heading === active);\n if (!element) return;\n const top = element.getBoundingClientRect().top - container.getBoundingClientRect().top + container.scrollTop - topInset;\n const target = Math.max(0, Math.min(top, container.scrollHeight - container.clientHeight));\n if (Math.abs(target - container.scrollTop) > 1) scrollWithMotion(container, target);\n };\n const delay = Math.max(0, manualUntil.current - Date.now());\n timer.current = setTimeout(follow, delay);\n return () => clearTimeout(timer.current);\n }, [active, headings, followActive, topInset]);\n const manual = () => { manualUntil.current = Date.now() + 1200; clearTimeout(timer.current); };\n return <nav className={`limr-toc ${className ?? ''}`} style={style} data-limr-theme={theme} data-limr-appearance={appearance} aria-label={title ?? locale.contents}>\n <div className=\"limr-toc-title\">{title ?? locale.contents}</div>\n <div className=\"limr-toc-scroll\" ref={list} onWheel={manual} onTouchStart={manual} onKeyDown={manual} tabIndex={0}>\n <ol>{visible.map(heading => <li key={heading.id}><a data-heading={heading.id} href={`#${heading.id}`} aria-current={heading.id === active ? 'location' : undefined}\n style={{ paddingInlineStart: 12 + Math.min(heading.level - minimum, 4) * 14 }}\n onClick={event => { event.preventDefault(); runtime.scrollToHeading(heading.id); if (updateHash) history.replaceState(history.state, '', `#${heading.id}`); }}><span className=\"limr-underline\">{heading.text}</span></a></li>)}</ol>\n </div>\n </nav>;\n}\n","import { useEffect, type RefObject } from 'react';\nimport type { ReaderRuntime } from './runtime';\n\n/** Follow actual clipping edges, including a nested viewport and in-flight\n * document/card motion. Masks never reserve space or change scroll geometry. */\nexport function useOverflowFade(ref: RefObject<HTMLElement | null>, runtime: ReaderRuntime, contentSelector: string, beforeMeasure?: () => void) {\n useEffect(() => {\n const host = ref.current;\n if (!host) return;\n let frame = 0, transitions = 0;\n const measure = () => {\n frame = 0;\n // Constraint-driven cards must finish positioning with this frame's\n // heights before clipping is tested. Even a transient mask toggle can\n // invalidate the composited layer while a footer card grows upward.\n beforeMeasure?.();\n const box = host.getBoundingClientRect();\n const viewport = window.visualViewport;\n let top = Math.max(box.top, viewport?.offsetTop ?? 0);\n let bottom = Math.min(box.bottom, (viewport?.offsetTop ?? 0) + (viewport?.height ?? innerHeight));\n const root = runtime.configuration.get().scrollRoot;\n if (root) { const bounds = root.getBoundingClientRect(); top = Math.max(top, bounds.top + root.clientTop); bottom = Math.min(bottom, bounds.top + root.clientTop + root.clientHeight); }\n const contents = [...host.querySelectorAll<HTMLElement>(contentSelector)].map(element => element.getBoundingClientRect());\n const clipsTop = bottom > top && contents.some(rect => rect.top < top - .5);\n const clipsBottom = bottom > top && contents.some(rect => rect.bottom > bottom + .5);\n host.toggleAttribute('data-overflow-top', clipsTop);\n host.toggleAttribute('data-overflow-bottom', clipsBottom);\n const set = (name: string, value: number) => { const css = `${Math.max(0, value).toFixed(2)}px`; if (host.style.getPropertyValue(name) !== css) host.style.setProperty(name, css); };\n set('--limr-fade-start', top - box.top);\n set('--limr-fade-end', bottom - box.top);\n if (transitions && host.getAnimations({ subtree: true }).some(animation => animation.playState === 'running')) schedule();\n else transitions = 0;\n };\n const schedule = () => { if (!frame) frame = requestAnimationFrame(measure); };\n const refresh = () => { cancelAnimationFrame(frame); measure(); };\n const start = () => { transitions++; schedule(); };\n const end = () => { transitions = Math.max(0, transitions - 1); schedule(); };\n host.addEventListener('transitionrun', start);\n host.addEventListener('transitionend', end);\n host.addEventListener('transitioncancel', end);\n const resize = new ResizeObserver(refresh); resize.observe(host);\n const mutation = new MutationObserver(records => {\n // ResizeObserver can synchronously reposition growing sidebar cards.\n // Read that committed geometry before paint, not on the next frame after\n // their CSS heights have advanced again and outrun the stored positions.\n if (records.some(record => {\n const element = record.target instanceof Element ? record.target : record.target.parentElement;\n return element && element !== host && !element.closest('.limr-highlight-layer,.limr-paint-layer');\n })) refresh();\n });\n mutation.observe(host, { subtree: true, childList: true, characterData: true, attributes: true, attributeFilter: ['style', 'class'] });\n const unsubscribe = [runtime.layout.subscribe(schedule), runtime.viewport.subscribe(refresh), runtime.documentOffset.subscribe(schedule), runtime.configuration.subscribe(schedule)];\n const scroll = (event: Event) => {\n const target = event.target;\n if (target === window.document || target === window || target instanceof Element && target.contains(host)) refresh();\n };\n // Capture nested scrolling directly; routing it through the runtime's frame\n // notification and then another rAF makes a viewport-fixed fade trail text.\n window.addEventListener('scroll', scroll, { capture: true, passive: true });\n window.addEventListener('resize', schedule);\n window.visualViewport?.addEventListener('resize', schedule);\n window.visualViewport?.addEventListener('scroll', refresh);\n schedule();\n return () => {\n cancelAnimationFrame(frame); resize.disconnect(); mutation.disconnect(); unsubscribe.forEach(fn => fn());\n host.removeEventListener('transitionrun', start); host.removeEventListener('transitionend', end); host.removeEventListener('transitioncancel', end);\n window.removeEventListener('scroll', scroll, true); window.removeEventListener('resize', schedule);\n window.visualViewport?.removeEventListener('resize', schedule); window.visualViewport?.removeEventListener('scroll', refresh);\n host.removeAttribute('data-overflow-top'); host.removeAttribute('data-overflow-bottom');\n host.style.removeProperty('--limr-fade-start'); host.style.removeProperty('--limr-fade-end');\n };\n }, [ref, runtime, contentSelector, beforeMeasure]);\n}\n","import { useCallback, useEffect, useMemo, useRef, useState, useSyncExternalStore, type CSSProperties, type ReactNode } from 'react';\nimport { flushSync } from 'react-dom';\nimport { useAppearance, useDocument, useIsomorphicLayoutEffect, useLocale, useRuntime, useStoreSelector, useTheme } from '../react/context';\nimport type { AnnotationOccurrence } from '../core';\nimport type { StyledProps } from '../react/types';\nimport { AnnotationGroup } from './AnnotationContent';\nimport { Collapse } from './Collapse';\nimport { annotationReferenceText } from './annotation-reference';\nimport { sourceRangeStartRect } from '../react/source-geometry';\nimport { useOverflowFade } from '../react/overflow-fade';\n\n/** anchorTop is the first referenced text line, falling back to the marker. */\nexport interface SidebarItem { id: string; anchorTop: number; height: number }\nexport type SidebarPositioner = (items: readonly SidebarItem[], context: { activeId: string | null; gap: number; height?: number; prioritizeActive?: boolean }) => ReadonlyMap<string, number>;\nexport const alignSidebar: SidebarPositioner = (items, { activeId, gap, height, prioritizeActive }) => {\n const positions = items.map(item => item.anchorTop);\n const activeIndex = items.findIndex(item => item.id === activeId);\n const pivot = activeIndex < 0 ? 0 : activeIndex;\n if (!items.length) return new Map();\n positions[pivot] = height === undefined ? items[pivot].anchorTop : Math.max(0, Math.min(items[pivot].anchorTop, height - items[pivot].height));\n for (let i = pivot - 1; i >= 0; i--) positions[i] = Math.min(items[i].anchorTop, positions[i + 1] - items[i].height - gap);\n // Earlier cards may move above the clipped rail. Keeping them above zero\n // would push a late active card away from its anchor in a short document.\n for (let i = pivot + 1; i < items.length; i++) positions[i] = Math.max(items[i].anchorTop, positions[i - 1] + items[i - 1].height + gap);\n if (height !== undefined && items.reduce((sum, item) => sum + item.height, gap * (items.length - 1)) <= height) {\n // With enough total room, borrow unused space above the final cards.\n // Earlier cards intentionally clipped by the focused pivot must stay there:\n // restoring the top boundary would push that card away from its reference.\n const start = prioritizeActive && activeIndex >= 0 ? pivot + 1 : 0;\n for (let i = items.length - 1; i >= start; i--) positions[i] = Math.min(positions[i], (i === items.length - 1 ? height : positions[i + 1] - gap) - items[i].height);\n if (start || activeIndex < 0 || positions[0] >= 0) for (let i = start; i < items.length; i++) positions[i] = Math.max(positions[i], i === 0 ? 0 : positions[i - 1] + items[i - 1].height + gap);\n }\n return new Map(items.map((item, index) => [item.id, positions[index]]));\n};\n\nexport interface AnnotationSidebarProps extends StyledProps {\n sync?: 'document' | 'none';\n gap?: number;\n positioner?: SidebarPositioner;\n renderCard?: (props: { occurrence: AnnotationOccurrence; active: boolean; activate: () => void }) => ReactNode;\n}\nexport function AnnotationSidebar({ sync = 'document', gap = 14, positioner = alignSidebar, renderCard, className, style }: AnnotationSidebarProps) {\n const runtime = useRuntime();\n const document = useDocument();\n const appearance = useAppearance();\n const theme = useTheme(), locale = useLocale();\n const decorations = useStoreSelector(runtime.decorations, value => value);\n const active = useStoreSelector(runtime.interaction, state => state.active);\n const hovered = useStoreSelector(runtime.interaction, state => state.hovered);\n const hoverSource = useStoreSelector(runtime.interaction, state => state.hoverSource);\n const activeSource = useStoreSelector(runtime.interaction, state => state.activeSource);\n useSyncExternalStore(runtime.configuration.subscribe, runtime.configuration.get, runtime.configuration.get);\n const layout = useSyncExternalStore(runtime.layout.subscribe, runtime.layout.get, runtime.layout.get);\n const viewport = useSyncExternalStore(runtime.viewport.subscribe, runtime.viewport.get, runtime.viewport.get);\n const rail = useRef<HTMLElement>(null);\n const cards = useRef(new Map<string, HTMLDivElement>());\n const [sizes, setSizes] = useState<Map<string, number>>(new Map());\n const [minimumSizes, setMinimumSizes] = useState<Map<string, number>>(new Map());\n const [anchorTops, setAnchorTops] = useState<Map<string, number>>(new Map());\n const [railHeight, setRailHeight] = useState(0);\n const measured = useRef({ sizes: new Map<string, number>(), minimum: new Map<string, number>(), height: 0 });\n const resizeFrame = useRef(0);\n const [viewportTop, setViewportTop] = useState(0);\n const [viewportHeight, setViewportHeight] = useState(0);\n const [cardLock, setCardLock] = useState<{ id: string; top: number } | null>(null);\n const lastFocus = useRef<{ id: string; top?: number } | null>(null);\n const [release, setRelease] = useState<{ id: string; top?: number; progress: number } | null>(null);\n const occurrences = useMemo(() => {\n const values = [...decorations.occurrences].sort((a, b) => a.range.start - b.range.start || a.range.end - b.range.end || a.id.localeCompare(b.id));\n if (sync === 'none') for (const annotation of decorations.annotations.values()) if (annotation.type !== 'highlight' && !values.some(item => item.annotationIds.includes(annotation.id))) values.push({ id: `unanchored-${annotation.id}`, range: { start: 0, end: 0 }, annotationIds: [annotation.id] });\n return values;\n }, [decorations, sync]);\n const references = useMemo(() => new Map(occurrences.map(occurrence => [occurrence.id, annotationReferenceText(document, occurrence)])), [document, occurrences]);\n const annotationGroups = useMemo(() => new Map(occurrences.map(occurrence => [occurrence.id, occurrence.annotationIds.flatMap(id => { const annotation = decorations.annotations.get(id); return annotation ? [annotation] : []; })])), [decorations, occurrences]);\n const measure = useCallback((beforePaint = false) => {\n const next = new Map<string, number>();\n const minimum = new Map<string, number>();\n cards.current.forEach((element, id) => {\n const height = element.getBoundingClientRect().height;\n next.set(id, height);\n const panels = [...element.querySelectorAll<HTMLElement>(':scope > .limr-sidebar-card-body > .limr-collapse')];\n minimum.set(id, height - panels.reduce((sum, panel) => sum + panel.getBoundingClientRect().height, 0));\n });\n // Keep the rail and card bounds in the same subpixel coordinate system.\n // Rounded clientHeight can put a bottom-aligned card outside the mask.\n const height = rail.current?.getBoundingClientRect().height ?? 0;\n const old = measured.current;\n if (old.height === height && old.sizes.size === next.size && [...next].every(([id, size]) => size === old.sizes.get(id) && Math.abs(minimum.get(id)! - (old.minimum.get(id) ?? 0)) < .5)) return;\n measured.current = { sizes: next, minimum, height };\n const update = () => { setSizes(next); setMinimumSizes(minimum); setRailHeight(height); };\n if (!beforePaint) { update(); return; }\n // The heights already contain the collapse animation's easing. Applying a\n // second top transition makes neighbors chase them and overlap the card.\n const element = rail.current;\n element?.setAttribute('data-resizing', '');\n flushSync(update);\n cancelAnimationFrame(resizeFrame.current);\n resizeFrame.current = requestAnimationFrame(() => {\n resizeFrame.current = requestAnimationFrame(() => element?.removeAttribute('data-resizing'));\n });\n }, []);\n const prepareFade = useCallback(() => measure(true), [measure]);\n useOverflowFade(rail, runtime, ':scope > .limr-sidebar-card', prepareFade);\n useEffect(() => {\n const observer = new ResizeObserver(() => measure(true));\n if (rail.current) observer.observe(rail.current);\n cards.current.forEach(element => observer.observe(element));\n measure();\n return () => observer.disconnect();\n }, [occurrences, measure, anchorTops]);\n useEffect(() => () => cancelAnimationFrame(resizeFrame.current), []);\n useIsomorphicLayoutEffect(() => {\n if (sync === 'none' || !rail.current) return;\n const top = rail.current.getBoundingClientRect().top;\n const values = new Map<string, number>();\n const displacement = runtime.getContentOffset();\n for (const occurrence of occurrences) {\n const marker = runtime.anchors.get(occurrence.id);\n if (!marker || marker.closest('[inert]')) continue;\n const rect = sourceRangeStartRect(runtime, decorations.referenceRanges.get(occurrence.id) ?? occurrence.range);\n values.set(occurrence.id, (rect || marker.getBoundingClientRect()).top - top - displacement);\n }\n setAnchorTops(old => old.size === values.size && [...values].every(([id, value]) => Math.abs(value - (old.get(id) ?? -Infinity)) < .5) ? old : values);\n }, [runtime, decorations.referenceRanges, occurrences, layout, sync]);\n useIsomorphicLayoutEffect(() => {\n if (sync !== 'document' || !rail.current) return;\n const root = runtime.configuration.get().scrollRoot;\n const bounds = rail.current.getBoundingClientRect();\n const top = Math.max(bounds.top, runtime.getViewportTop() + (root?.clientTop ?? 0), window.visualViewport?.offsetTop ?? 0);\n const bottom = Math.min(bounds.bottom, root ? runtime.getViewportTop() + root.clientTop + root.clientHeight : Infinity, (window.visualViewport?.offsetTop ?? 0) + (window.visualViewport?.height ?? innerHeight));\n setViewportTop(Math.max(0, top - bounds.top + (runtime.configuration.get().scrollOffset ?? 24)));\n setViewportHeight(Math.max(0, bottom - top));\n }, [runtime, layout, viewport, sync]);\n useEffect(() => {\n const dismiss = (event: PointerEvent) => {\n if (event.button !== 0) return;\n const target = event.target;\n if (!(target instanceof Element)) return;\n const card = target.closest('.limr-sidebar-card');\n const marker = target.closest<HTMLElement>('[data-limr-anchor]');\n if ((card && rail.current?.contains(card)) || (marker && runtime.anchors.get(marker.dataset.limrAnchor!) === marker)) return;\n // Floating module UI and selection actions keep their own dismissal rules.\n if (target.closest('.limr-overlay-positioner,.limr-selection-toolbar')) return;\n const { active, hovered } = runtime.interaction.get();\n if (active || hovered) runtime.activate(null);\n };\n const escape = (event: KeyboardEvent) => {\n if (event.key !== 'Escape' || event.defaultPrevented || !runtime.interaction.get().active) return;\n const anchor = runtime.anchors.get(runtime.interaction.get().active!);\n anchor?.focus({ preventScroll: true });\n runtime.activate(null);\n };\n window.document.addEventListener('pointerdown', dismiss);\n window.document.addEventListener('keydown', escape);\n return () => { window.document.removeEventListener('pointerdown', dismiss); window.document.removeEventListener('keydown', escape); if (sync === 'document') runtime.documentOffset.set(0); };\n }, [runtime, sync]);\n const items = occurrences.filter(item => sync === 'none' || anchorTops.has(item.id));\n // Extensions may present source subtrees in another order (e.g. translation\n // before original). Aligned cards follow their rendered anchors.\n if (sync !== 'none') items.sort((a, b) => (anchorTops.get(a.id) ?? 0) - (anchorTops.get(b.id) ?? 0));\n const readingId = items.find(item => (anchorTops.get(item.id) ?? 0) >= viewportTop)?.id ?? items.at(-1)?.id ?? null;\n const alignmentId = hovered ?? active ?? readingId;\n const focusedId = hovered ?? active;\n const source = hovered ? hoverSource : active ? activeSource : null;\n const locked = source === 'sidebar' && cardLock?.id === alignmentId ? cardLock : null;\n const lockedTop = locked?.top;\n useIsomorphicLayoutEffect(() => {\n const previous = lastFocus.current;\n lastFocus.current = focusedId ? { id: focusedId, top: lockedTop } : null;\n if (focusedId || sync !== 'document' || !rail.current || matchMedia('(prefers-reduced-motion: reduce)').matches) { setRelease(null); return; }\n if (!previous) return;\n const style = getComputedStyle(rail.current), value = style.getPropertyValue('--limr-motion-slow').trim();\n const milliseconds = parseFloat(value) * (value.endsWith('ms') ? 1 : 1000);\n const duration = Number.isFinite(milliseconds) ? Math.max(0, milliseconds) : 460;\n if (!duration) { setRelease(null); return; }\n // Use the skin's timing as a clock. Interpolate two layouts computed with\n // the SAME current card heights, so collapse and repacking share an easing\n // without a second CSS top transition making neighbors collide.\n const motion = rail.current.animate([{}, {}], { duration, easing: style.getPropertyValue('--limr-ease').trim() || 'ease-out' });\n setRelease({ ...previous, progress: 0 });\n let frame = 0;\n const step = () => {\n if (motion.playState === 'finished') { setRelease(null); return; }\n setRelease({ ...previous, progress: motion.effect?.getComputedTiming().progress ?? 0 });\n frame = requestAnimationFrame(step);\n };\n frame = requestAnimationFrame(step);\n return () => { cancelAnimationFrame(frame); motion.cancel(); };\n }, [focusedId, lockedTop, sync]);\n const sidebarItems = items.map(item => ({ id: item.id, anchorTop: anchorTops.get(item.id) ?? 0, height: sizes.get(item.id) ?? 80 }));\n const positionContext = { activeId: alignmentId, gap, height: sync === 'document' && railHeight > 0 ? railHeight : undefined, prioritizeActive: !!(hovered || active) };\n const positions = new Map(positioner(locked ? sidebarItems.map(item => item.id === locked.id ? { ...item, anchorTop: locked.top } : item) : sidebarItems, positionContext));\n const releasing = !focusedId && release;\n if (releasing) {\n const origin = positioner(sidebarItems.map(item => item.id === releasing.id && releasing.top !== undefined ? { ...item, anchorTop: releasing.top } : item), { ...positionContext, activeId: releasing.id, prioritizeActive: true });\n for (const [id, top] of positions) positions.set(id, top + ((origin.get(id) ?? top) - top) * (1 - releasing.progress));\n }\n const lockedAnchor = locked ? anchorTops.get(locked.id) ?? locked.top : 0;\n // Footer packing must not disable reverse alignment. Keep the hovered card\n // under the pointer and move its referenced text, even at the rail boundary.\n const displacement = sync === 'document' && locked ? (positions.get(locked.id) ?? locked.top) - lockedAnchor : 0;\n useIsomorphicLayoutEffect(() => { if (sync === 'document') runtime.documentOffset.set(displacement); }, [runtime, displacement, sync]);\n const lockCard = (id: string) => {\n // Keep the original resting position while this card is hovered or active.\n // Relocking its boundary-raised top would prevent a collapse from moving\n // back down, then jump when pointer leave releases the new lock.\n if (locked?.id === id) return;\n const card = cards.current.get(id);\n if (card && rail.current) {\n const origin = rail.current.getBoundingClientRect().top;\n const top = card.getBoundingClientRect().top - origin;\n setCardLock({ id, top });\n }\n };\n return <aside ref={rail} aria-label={locale.annotations} className={`limr-sidebar ${className ?? ''}`} data-sync={sync} data-releasing={releasing ? '' : undefined} data-limr-theme={theme} data-limr-appearance={appearance} style={style}>\n {items.map(occurrence => {\n const annotation = decorations.annotations.get(occurrence.annotationIds[0]);\n const definition = runtime.annotationTypes.get(annotation?.type ?? 'citation');\n const isActive = active === occurrence.id;\n const palette = definition?.sidebar;\n const Preview = palette?.Preview;\n // A marker at the end of the article can align its collapsed card by\n // giving the reference/title priority over the optional summary. Expanded\n // content is bounded by the viewport and scrolls inside the card.\n const available = source === 'marker' && alignmentId === occurrence.id && !isActive\n ? Math.max(minimumSizes.get(occurrence.id) ?? 80, railHeight - (anchorTops.get(occurrence.id) ?? 0)) : railHeight;\n const cardHeight = isActive ? Math.min(available, Math.max(minimumSizes.get(occurrence.id) ?? 80, viewportHeight || railHeight)) : available;\n const cardStyle = {\n '--limr-annotation-color': palette?.color ?? definition?.color,\n '--limr-annotation-border': palette?.borderColor,\n '--limr-annotation-title': palette?.titleColor,\n '--limr-annotation-text': palette?.textColor,\n '--limr-annotation-excerpt': palette?.excerptColor,\n '--limr-annotation-preview': palette?.previewColor,\n '--limr-sidebar-preview-lines': String(Math.max(1, Math.floor(palette?.previewLines ?? 2))),\n ...(sync === 'document' ? {\n position: 'absolute', top: positions.get(occurrence.id) ?? 0, insetInline: 0,\n '--limr-sidebar-card-height': `${cardHeight}px`,\n } : { marginBlockEnd: gap }),\n } as CSSProperties & { [token: `--${string}`]: string | undefined };\n // A mixed card must not dismiss a conversation because a citation opted in.\n const collapseOnContentClick = occurrence.annotationIds.every(id => runtime.annotationTypes.get(decorations.annotations.get(id)?.type ?? '')?.sidebar?.collapseOnContentClick);\n const activate = () => {\n const hovering = runtime.interaction.get().hovered === occurrence.id || cards.current.get(occurrence.id)?.matches(':hover');\n lockCard(occurrence.id);\n runtime.activate(isActive ? null : occurrence.id, 'sidebar');\n // Activation clears marker hover; the pointer is still inside this card.\n if (hovering) runtime.hover(occurrence.id, 'sidebar');\n };\n return <div key={occurrence.id} ref={element => { if (element) cards.current.set(occurrence.id, element); else cards.current.delete(occurrence.id); }}\n className=\"limr-sidebar-card\" data-type={annotation?.type} data-locked={locked?.id === occurrence.id || undefined} data-active={isActive || hovered === occurrence.id || undefined} data-expanded={isActive || undefined} data-default-card={!renderCard || undefined} data-content-toggle={collapseOnContentClick || undefined} data-citations={occurrence.annotationIds.every(id => decorations.annotations.get(id)?.type === 'citation') || undefined} data-occurrence={occurrence.id}\n style={cardStyle}\n onPointerEnter={event => { if (event.pointerType !== 'touch') { lockCard(occurrence.id); runtime.hover(occurrence.id, 'sidebar'); } }} onPointerLeave={() => { if (runtime.interaction.get().hovered === occurrence.id && runtime.interaction.get().hoverSource === 'sidebar') runtime.hover(null); }}\n onClick={event => {\n if ((!isActive || collapseOnContentClick) && !renderCard && !event.defaultPrevented && !(event.target as Element).closest('button,a,input,select,textarea,summary,[role=\"button\"],[role=\"link\"],[contenteditable=\"true\"],[data-limr-card-interactive]') && window.getSelection()?.isCollapsed !== false) activate();\n }}>\n {renderCard ? renderCard({ occurrence, active: isActive, activate }) : <>\n {references.get(occurrence.id) && <div className=\"limr-sidebar-reference\" title={references.get(occurrence.id)}><p className=\"limr-sidebar-excerpt\">{references.get(occurrence.id)}</p></div>}\n <div className=\"limr-sidebar-card-body\">\n <button type=\"button\" className=\"limr-sidebar-card-heading\" onClick={activate} aria-expanded={isActive}>{definition?.label ?? annotation?.type ?? 'Reference'}<span className=\"limr-sidebar-toggle\"><span key={String(isActive)} className=\"limr-button-label limr-underline\">{isActive ? locale.collapse : locale.expand}</span></span></button>\n {Preview && annotation && <Collapse open={!isActive} keepMounted className=\"limr-sidebar-preview-panel\"><div className=\"limr-sidebar-preview\"><Preview annotation={annotation} data={annotation.data} occurrence={occurrence} annotations={annotationGroups.get(occurrence.id)!} referenceText={references.get(occurrence.id) ?? ''} /></div></Collapse>}\n <Collapse open={isActive} className=\"limr-sidebar-expansion\"><div className=\"limr-sidebar-card-content\"><AnnotationGroup occurrence={occurrence} presentation=\"sidebar\" enabled={isActive} /></div></Collapse>\n </div>\n </>}\n </div>;\n })}\n </aside>;\n}\n","import { useEffect, useState } from 'react';\nimport { useRuntime, useStoreSelector } from '../react/context';\nimport type { Annotation, AnnotationOccurrence } from '../core';\nimport type { AnnotationPresentation } from '../react/types';\n\nexport function AnnotationContent({ annotationId, presentation, expanded = true, enabled = true }: { annotationId: string; presentation: AnnotationPresentation; expanded?: boolean; enabled?: boolean }) {\n const runtime = useRuntime();\n const annotation = useStoreSelector(runtime.decorations, state => state.annotations.get(annotationId));\n const editing = useStoreSelector(runtime.interaction, state => state.editing === annotationId);\n const definition = useStoreSelector(runtime.configuration, () => runtime.annotationTypes.get(annotation?.type ?? 'citation'));\n const version = useStoreSelector(runtime.resourceVersions, versions => versions.get(annotationId) ?? 0);\n const [loaded, setLoaded] = useState<{ id: string; data?: unknown; loading: boolean; error: Error | null }>({ id: annotationId, loading: !!definition?.load, error: null });\n useEffect(() => {\n if (!definition?.load || !annotation || !enabled) return;\n let disposed = false;\n setLoaded({ id: annotationId, loading: true, error: null });\n const request = runtime.resources.acquire(runtime.getResourceKey(annotation), signal => definition.load!(annotation, { signal }));\n request.promise.then(data => { if (!disposed) setLoaded({ id: annotationId, data, loading: false, error: null }); }).catch(error => { if (!disposed) setLoaded({ id: annotationId, loading: false, error: error instanceof Error ? error : new Error(String(error)) }); });\n return () => { disposed = true; request.release(); };\n }, [runtime, annotation, annotationId, definition, version, enabled]);\n const retry = () => runtime.invalidateAnnotation(annotationId);\n const Content = definition?.Content;\n const current = loaded.id === annotationId ? loaded : { loading: !!definition?.load, error: null, data: undefined };\n if (!annotation) return <span className=\"limr-muted\">{runtime.locale.unavailable} · {annotationId}</span>;\n if (!Content) return <span className=\"limr-muted\">{runtime.locale.unavailable} · {annotation.type}</span>;\n return <Content editing={editing} annotation={annotation} data={definition?.load ? current.data ?? annotation.data : annotation.data} loading={definition?.load ? current.loading : false} error={current.error} retry={retry} presentation={presentation} expanded={expanded} />;\n}\n\nexport function AnnotationGroup({ occurrence, presentation, expanded = true, enabled = true }: { occurrence: AnnotationOccurrence; presentation: AnnotationPresentation; expanded?: boolean; enabled?: boolean }) {\n return <>{occurrence.annotationIds.map(id => <div key={id} className=\"limr-annotation-entry\"><AnnotationContent annotationId={id} presentation={presentation} expanded={expanded} enabled={enabled} /></div>)}</>;\n}\n","import { annotationReferenceRange, mapText, type AnnotationOccurrence, type DocumentSnapshot, type MarkdownNode } from '../core';\nimport { intersects, rangeOf } from '../core/tree';\n\n/** Render the anchored text, without exposing Markdown syntax or <ref> tags. */\nexport function annotationReferenceText(document: DocumentSnapshot, occurrence: AnnotationOccurrence): string {\n const referenceRange = annotationReferenceRange(document, occurrence);\n const blocks = document.blocks.filter(block => intersects(block.range, referenceRange));\n let reference = '';\n const visit = (node: MarkdownNode) => {\n const range = rangeOf(node);\n if (!intersects(range, referenceRange) || ['annotationReference', 'footnoteReference', 'annotationDefinition', 'definition'].includes(node.type)) return;\n if (node.value !== undefined) {\n const mapping = mapText(document.source, node.value, range);\n reference += node.value.split('').filter((_, index) => mapping.ends[index] > referenceRange.start && mapping.starts[index] < referenceRange.end).join('');\n } else if (node.type === 'image') reference += String(node.alt ?? '');\n else node.children?.forEach(visit);\n };\n blocks.forEach((block, index) => { if (index) reference += ' '; visit(block.node); });\n if (!occurrence.embedded) reference ||= occurrence.quote ?? document.source.slice(referenceRange.start, referenceRange.end);\n return reference.replace(/\\s+/g, ' ').trim();\n}\n","import { useEffect, useState, useSyncExternalStore, type CSSProperties } from 'react';\nimport { autoUpdate, flip, FloatingFocusManager, FloatingOverlay, FloatingPortal, offset, shift, size, useDismiss, useFloating, useInteractions, useRole } from '@floating-ui/react';\nimport { useAppearance, useIsomorphicLayoutEffect, useLocale, useRuntime, useStoreSelector, useTheme } from '../react/context';\nimport { AnnotationGroup } from './AnnotationContent';\nimport { useCardMotion } from './card-motion';\nimport { AnnotationCard } from './AnnotationCard';\nimport type { AnnotationOccurrence } from '../core';\nimport type { AnnotationOverlayCardProps } from '../react/types';\n\nexport interface AnnotationOverlayProps { disabled?: boolean; portalRoot?: HTMLElement | null; previewWidth?: number; maxHeight?: string }\nconst length = (value: number | string) => typeof value === 'number' ? `${value}px` : value;\nconst idleSubscribe = () => () => {};\nexport function AnnotationOverlay({ disabled = false, portalRoot, previewWidth = 340, maxHeight = '80dvh' }: AnnotationOverlayProps) {\n const runtime = useRuntime();\n const appearance = useAppearance();\n const theme = useTheme(), locale = useLocale();\n const editing = useStoreSelector(runtime.interaction, state => state.editing);\n const active = useStoreSelector(runtime.interaction, state => state.active);\n const hovered = useStoreSelector(runtime.interaction, state => state.hovered);\n const occurrences = useStoreSelector(runtime.decorations, state => state.occurrences);\n useSyncExternalStore(runtime.layout.subscribe, runtime.layout.get, runtime.layout.get);\n const [preview, setPreview] = useState<string | null>(null);\n const [collapsedId, setCollapsedId] = useState<string | null>(null);\n const [, setViewportTick] = useState(0);\n useEffect(() => {\n if (active || disabled) { setPreview(null); return; }\n if (hovered) { setPreview(hovered); return; }\n const timer = setTimeout(() => setPreview(null), 90);\n return () => clearTimeout(timer);\n }, [hovered, active, disabled]);\n useEffect(() => {\n const update = () => setViewportTick(value => value + 1);\n window.visualViewport?.addEventListener('resize', update);\n window.visualViewport?.addEventListener('scroll', update);\n window.addEventListener('resize', update);\n return () => { window.visualViewport?.removeEventListener('resize', update); window.visualViewport?.removeEventListener('scroll', update); window.removeEventListener('resize', update); };\n }, []);\n const wantedId = active ?? preview;\n const wanted = occurrences.find(item => item.id === wantedId);\n const [retained, setRetained] = useState<AnnotationOccurrence | null>(null);\n const occurrence = wanted ?? retained;\n const id = occurrence?.id;\n const annotation = useStoreSelector(runtime.decorations, state => state.annotations.get(occurrence?.annotationIds[0] ?? ''));\n const definition = useStoreSelector(runtime.configuration, () => runtime.annotationTypes.get(annotation?.type ?? 'citation'));\n const policy = definition?.overlay?.expand;\n const expansion = typeof policy === 'function' ? annotation && policy(annotation) : policy;\n const pinned = active === id;\n const expanded = pinned && !!expansion && collapsedId !== id;\n const [lastExpanded, setLastExpanded] = useState(false);\n const [lastPinned, setLastPinned] = useState(false);\n const open = !!wanted && !disabled;\n useSyncExternalStore(open ? runtime.viewport.subscribe : idleSubscribe, runtime.viewport.get, runtime.viewport.get);\n useEffect(() => {\n if (open) { setRetained(wanted!); setLastExpanded(expanded); setLastPinned(pinned); }\n }, [wanted, open, expanded, pinned]);\n const close = () => {\n const anchor = id ? runtime.anchors.get(id) : null;\n anchor?.focus({ preventScroll: true });\n runtime.activate(null); runtime.hover(null); setPreview(null);\n };\n const anchor = id ? runtime.anchors.get(id) : undefined;\n const [previewGeometry, setPreviewGeometry] = useState<{ id?: string; rect: DOMRect; placement: string } | null>(null);\n const fromPreview = previewGeometry?.id === id ? previewGeometry : null;\n const requestedExpanded = open ? expanded : lastExpanded;\n // Even a toolbar/touch opening first measures the real module preview at\n // its anchor. It stays hidden for this layout pass, and is never duplicated.\n const measuringPreview = open && requestedExpanded && !fromPreview;\n const shownExpanded = requestedExpanded && !measuringPreview;\n const shownPinned = open ? pinned : lastPinned;\n const centered = shownExpanded && expansion && expansion.placement === 'center';\n const anchoredExpansion = shownExpanded && !centered && fromPreview;\n const { refs, update, floatingStyles, context, isPositioned, placement, middlewareData } = useFloating({ open, elements: { reference: anchor ?? null }, onOpenChange: next => { if (!next) close(); }, strategy: 'fixed', transform: false, placement: 'bottom-start', whileElementsMounted: autoUpdate, middleware: [offset(8), flip({ padding: 12 }), shift({ padding: 12 }), size({ padding: 12, apply: ({ availableHeight, elements }) => {\n if (!shownExpanded) elements.floating.style.maxHeight = `${Math.max(0, Math.floor(Math.min(360, availableHeight)))}px`;\n else if (!centered && !fromPreview) elements.floating.style.maxHeight = `min(${length(expansion && expansion.maxHeight || maxHeight)}, ${Math.max(0, Math.floor(availableHeight))}px)`;\n } }, [shownExpanded, !!centered, !!fromPreview, expansion && expansion.maxHeight, maxHeight]), {\n name: 'limrAnchor',\n options: shownExpanded,\n fn: ({ elements }) => ({ data: { id: (elements.reference as HTMLElement).dataset?.limrAnchor, expanded: shownExpanded } }),\n }] });\n useIsomorphicLayoutEffect(() => {\n // A retained surface never remounts when an exit is reversed. Floating UI\n // resets isPositioned on close, so explicitly remeasure that same surface.\n if (open && anchor) update();\n }, [anchor, update, open, shownExpanded]);\n const dismiss = useDismiss(context, { escapeKey: true, outsidePress: true });\n const role = useRole(context, { role: 'dialog' });\n const { getFloatingProps } = useInteractions([dismiss, role]);\n const ready = !!centered || !!anchoredExpansion || !open || isPositioned && middlewareData.limrAnchor?.id === id && middlewareData.limrAnchor?.expanded === shownExpanded;\n const [surface, setSurface] = useState<HTMLDivElement | null>(null);\n const edge = (shownExpanded ? fromPreview?.placement ?? 'bottom' : placement).startsWith('top') ? 'bottom' : 'top';\n useCardMotion(surface, refs.floating.current, anchor, open, shownExpanded, ready && !measuringPreview, id, edge, fromPreview?.rect, () => { setRetained(null); setCollapsedId(null); setPreviewGeometry(null); });\n useIsomorphicLayoutEffect(() => {\n if (!shownExpanded && open && ready && refs.floating.current) {\n const rect = refs.floating.current.getBoundingClientRect();\n if (!fromPreview || fromPreview.placement !== placement || (['x', 'y', 'width', 'height'] as const).some(key => Math.abs(rect[key] - fromPreview.rect[key]) > .5)) setPreviewGeometry({ id, rect, placement });\n }\n });\n if (!occurrence || disabled) return null;\n const visual = window.visualViewport;\n const viewLeft = visual?.offsetLeft ?? 0, viewTop = visual?.offsetTop ?? 0;\n const availableWidth = visual?.width ?? window.innerWidth, availableHeight = visual?.height ?? window.innerHeight;\n // Portalled dialogs belong to the whole visible page, including when the\n // reader lives in an offset column or a nested scroll container.\n const top = viewTop + 12;\n const bottom = viewTop + availableHeight - 12;\n const heightLimit = Math.max(0, bottom - top);\n const settings = shownExpanded && expansion ? expansion : undefined;\n const width = `min(${length(settings?.width ?? (centered ? 640 : definition?.overlay?.previewWidth ?? previewWidth))}, ${Math.max(0, availableWidth - 24)}px)`;\n let style: CSSProperties = { ...floatingStyles, width, maxHeight: Math.min(360, availableHeight - 24) };\n if (settings) {\n style = { ...style, height: settings.height === undefined ? undefined : `min(${length(settings.height)}, ${heightLimit}px)`, maxHeight: `min(${length(settings.maxHeight ?? maxHeight)}, ${heightLimit}px)` };\n if (centered) style = { ...style, left: viewLeft + availableWidth / 2, top: viewTop + availableHeight / 2, transform: 'translate(-50%, -50%)' };\n else if (fromPreview) {\n const upward = fromPreview.placement.startsWith('top');\n const room = Math.max(0, upward ? fromPreview.rect.bottom - top : bottom - fromPreview.rect.top);\n style = { ...style, left: fromPreview.rect.left, top: upward ? fromPreview.rect.bottom : fromPreview.rect.top, transform: upward ? 'translateY(-100%)' : 'none', maxWidth: viewLeft + availableWidth - 12 - fromPreview.rect.left, maxHeight: `min(${length(settings.maxHeight ?? maxHeight)}, ${room}px)` };\n }\n }\n const Card = definition?.overlay?.Card;\n const cardProps: AnnotationOverlayCardProps = {\n annotation: annotation ?? { id: occurrence.annotationIds[0], type: 'unknown' }, occurrence,\n presentation: shownExpanded ? 'expanded' : 'preview', expanded: shownExpanded, pinned: shownPinned,\n canExpand: !!expansion,\n expand: () => { setCollapsedId(null); runtime.activate(occurrence.id); },\n collapse: () => { setCollapsedId(occurrence.id); runtime.activate(occurrence.id); },\n close,\n children: <AnnotationGroup occurrence={occurrence} presentation={shownExpanded ? 'expanded' : 'preview'} expanded={shownExpanded} />,\n };\n const modal = open && !!centered;\n const card = <FloatingFocusManager context={context} modal={modal} disabled={!open || !pinned || measuringPreview} initialFocus={editing ? -1 : refs.floating} returnFocus={false}>\n <div ref={refs.setFloating} {...getFloatingProps()} tabIndex={-1} aria-label={definition?.label ?? locale.annotations} className=\"limr-overlay-positioner\" style={{ ...style, pointerEvents: open ? 'auto' : 'none', visibility: ready && !measuringPreview ? 'visible' : 'hidden' }}>\n <div ref={setSurface} className={`limr-annotation-overlay ${shownExpanded ? 'limr-annotation-expanded' : 'limr-annotation-preview'}`} style={{ '--limr-annotation-color': definition?.color } as CSSProperties} data-type={annotation?.type} data-state={open ? 'open' : 'closing'} data-pinned={shownPinned || undefined} data-placement={centered ? 'center' : anchoredExpansion ? fromPreview.placement : placement} data-limr-theme={theme} data-limr-appearance={appearance}\n onPointerEnter={event => { if (!pinned && event.pointerType !== 'touch') runtime.hover(occurrence.id); }} onPointerLeave={() => { if (!pinned) runtime.hover(null); }}>\n <div className=\"limr-overlay-surface\" aria-hidden=\"true\" />\n <div className=\"limr-overlay-card\">{Card && annotation ? <Card {...cardProps} /> : <AnnotationCard {...cardProps} title={definition?.label ?? annotation?.type ?? locale.annotations} />}</div>\n </div>\n </div>\n </FloatingFocusManager>;\n return <FloatingPortal root={portalRoot}><FloatingOverlay className=\"limr-backdrop\" data-expanded={modal || undefined} lockScroll={modal} style={{ pointerEvents: modal ? 'auto' : 'none' }}>{card}</FloatingOverlay></FloatingPortal>;\n}\n","import { useRef } from 'react';\nimport { useIsomorphicLayoutEffect } from '../react/context';\n\nconst moving = (animation: Animation | null) => animation?.playState === 'running' || animation?.playState === 'paused';\nconst durationOf = (value: string, fallback: number) => {\n const duration = parseFloat(value) * (value.endsWith('ms') ? 1 : 1000);\n return Number.isFinite(duration) && duration > 0 ? duration : fallback;\n};\n/** Measure a stationary host, and animate its surface from the live frame.\n * Each direction starts a fresh easing curve: reversing an ease-out entrance would\n * otherwise leave the card apparently motionless at the start of its exit. */\nexport function useCardMotion(element: HTMLElement | null, host: HTMLElement | null, anchor: HTMLElement | undefined, open: boolean, expanded: boolean, ready: boolean, id: string | undefined, edge: 'top' | 'bottom', previewRect: DOMRect | undefined, onExit: () => void) {\n const previous = useRef<DOMRect | null>(null);\n const reveal = useRef<Animation | null>(null);\n const content = useRef<Animation | null>(null);\n const hero = useRef<Animation | null>(null);\n const shape = useRef<Animation | null>(null);\n const state = useRef<{ id?: string; expanded: boolean; open: boolean } | null>(null);\n const latest = useRef({ open, onExit });\n latest.current = { open, onExit };\n useIsomorphicLayoutEffect(() => {\n if (!element || !host || !ready) return;\n const sameCard = state.current?.id === id;\n const presentationChanged = sameCard && state.current?.expanded !== expanded;\n const intentChanged = !sameCard || state.current?.open !== open || presentationChanged;\n const reduced = matchMedia('(prefers-reduced-motion: reduce)').matches;\n if (!intentChanged && !reduced) return;\n const computed = getComputedStyle(element);\n const shell = element.querySelector<HTMLElement>('.limr-overlay-surface');\n const card = element.querySelector<HTMLElement>('.limr-overlay-card');\n const previousBody = sameCard ? (content.current?.effect as KeyframeEffect | null)?.target as HTMLElement | null : null;\n const body = presentationChanged || expanded ? card : previousBody?.isConnected ? previousBody : element.querySelector<HTMLElement>('[data-limr-card-body], .limr-overlay-content');\n const bodyStyle = body ? getComputedStyle(body) : null;\n // Snapshot before cancelling any effects; interruption never jumps to an\n // endpoint, even during a preview-to-dialog morph or an unfinished exit.\n const liveSurface = { opacity: computed.opacity, clipPath: computed.clipPath };\n const liveTransform = computed.transform;\n const liveBody = { opacity: bodyStyle?.opacity ?? '1', transform: bodyStyle?.transform ?? 'none', clipPath: bodyStyle?.clipPath ?? 'none' };\n let before = sameCard ? previous.current : expanded ? previewRect ?? null : null;\n // React has moved the host; apply the live transform to its OLD rectangle.\n if (before && sameCard && hero.current && computed.transform !== 'none') {\n const matrix = new DOMMatrixReadOnly(computed.transform);\n before = new DOMRect(before.x + matrix.m41, before.y + matrix.m42, before.width, before.height);\n }\n if (before && sameCard && shell && shape.current) {\n const matrix = new DOMMatrixReadOnly(getComputedStyle(shell).transform);\n before = new DOMRect(before.x, before.y, before.width * matrix.a, before.height * matrix.d);\n }\n const target = host.getBoundingClientRect();\n const anchorRect = anchor?.getBoundingClientRect() ?? target;\n const originX = Math.max(0, Math.min(100, ((anchorRect.left + anchorRect.right) / 2 - target.left) / Math.max(1, target.width) * 100));\n const radius = computed.borderRadius || '8px';\n const collapsed = `inset(${edge === 'bottom' ? 100 : 0}% ${100 - originX}% ${edge === 'bottom' ? 0 : 100}% ${originX}% round ${radius})`;\n // Leave room for the old, larger shell while it shrinks to a preview.\n const overflow = Math.max(48, (before?.width ?? 0) - target.width + 48, (before?.height ?? 0) - target.height + 48);\n const revealed = `inset(-${overflow}px -${overflow}px -${overflow}px -${overflow}px round ${radius})`;\n const cancel = () => {\n reveal.current?.cancel(); content.current?.cancel(); hero.current?.cancel(); shape.current?.cancel();\n reveal.current = content.current = hero.current = shape.current = null;\n };\n cancel();\n state.current = { id, expanded, open };\n previous.current = target;\n if (reduced || !open && !sameCard) {\n delete element.dataset.motion;\n if (!open) latest.current.onExit();\n return;\n }\n const previewDuration = durationOf((computed.getPropertyValue('--limr-overlay-duration') || computed.getPropertyValue('--limr-overlay-enter-duration')).trim(), 560);\n const morphDuration = durationOf(computed.getPropertyValue('--limr-overlay-morph-duration').trim(), 480);\n const morph = open && !!before && (presentationChanged || !sameCard && expanded);\n const returning = !open && expanded && !!previewRect;\n const destination = returning ? previewRect : target;\n const duration = morph || expanded ? morphDuration : previewDuration;\n const easing = computed.getPropertyValue('--limr-overlay-ease').trim() || 'cubic-bezier(.22,1,.36,1)';\n element.dataset.motion = !open ? 'closing' : morph ? 'morphing' : 'opening';\n reveal.current = element.animate([\n sameCard ? { ...liveSurface, ...(morph ? { clipPath: revealed } : {}) } : { opacity: 0, clipPath: morph ? revealed : collapsed },\n { opacity: open ? 1 : 0, clipPath: open || returning ? revealed : collapsed },\n ], { duration, easing, fill: 'both' });\n if (before && (morph || liveTransform !== 'none' || returning)) {\n const x = before.left - target.left, y = before.top - target.top;\n const sx = before.width / Math.max(1, target.width), sy = before.height / Math.max(1, target.height);\n hero.current = element.animate([\n { transform: `translate(${x}px, ${y}px)` },\n { transform: `translate(${destination.left - target.left}px, ${destination.top - target.top}px)` },\n ], { duration, easing, fill: 'both' });\n // Only the painted background changes scale. The entire module UI,\n // including titles, inputs and controls, retains its natural text metrics.\n shape.current = shell?.animate([\n { transform: `scale(${sx}, ${sy})` },\n { transform: `scale(${destination.width / Math.max(1, target.width)}, ${destination.height / Math.max(1, target.height)})` },\n ], { duration, easing, fill: 'both' }) ?? null;\n }\n const delay = open ? morph ? 50 : !sameCard ? 35 : 0 : 0;\n content.current = body?.animate([\n sameCard && !morph ? liveBody : { opacity: 0, transform: 'translateY(6px)', clipPath: morph ? `inset(0px ${Math.max(0, target.width - before!.width)}px ${Math.max(0, target.height - before!.height)}px 0px)` : 'inset(0px)' },\n { opacity: open ? 1 : 0, transform: open ? 'translateY(0px)' : 'translateY(-4px)', clipPath: returning ? `inset(0px ${Math.max(0, target.width - destination.width)}px ${Math.max(0, target.height - destination.height)}px 0px)` : 'inset(0px)' },\n ], {\n // Content and surface settle together in either direction.\n duration: duration - delay, delay, easing, fill: 'both',\n }) ?? null;\n const current = reveal.current;\n const finish = () => {\n if (reveal.current !== current) return;\n if (![reveal.current, content.current, hero.current, shape.current].some(moving)) {\n delete element.dataset.motion;\n if (!latest.current.open) latest.current.onExit();\n else previous.current = host.getBoundingClientRect();\n }\n };\n for (const animation of [reveal.current, content.current, hero.current, shape.current]) if (animation) animation.onfinish = finish;\n finish();\n }, [element, host, anchor, open, expanded, ready, id, edge, previewRect]);\n useIsomorphicLayoutEffect(() => {\n if (host && open && ready && !moving(hero.current)) previous.current = host.getBoundingClientRect();\n });\n useIsomorphicLayoutEffect(() => {\n if (!host || !open) return;\n const observer = new ResizeObserver(() => { if (!moving(hero.current)) previous.current = host.getBoundingClientRect(); });\n observer.observe(host);\n return () => observer.disconnect();\n }, [host, open, id]);\n useIsomorphicLayoutEffect(() => () => {\n reveal.current?.cancel(); content.current?.cancel(); hero.current?.cancel(); shape.current?.cancel();\n reveal.current = content.current = hero.current = shape.current = null;\n state.current = null; previous.current = null;\n if (element) delete element.dataset.motion;\n }, [element]);\n}\n","import { useEffect, useId, useMemo, useRef, useState, type CSSProperties, type ReactNode } from 'react';\nimport { autoUpdate, FloatingPortal, offset, shift, useFloating } from '@floating-ui/react';\nimport { defaultHighlight, resolveAnnotationAnchors, sameRange, selectionFromRange, type Annotation, type HighlightData } from '../core';\nimport { copyText, deleteAnnotations, highlightPalette, highlightSelection } from '../extensions/actions';\nimport { useAppearance, useRuntime, useSelection, useStoreSelector, useTheme } from '../react/context';\nimport type { ActionContext, SelectionAction, StyledProps, ToolbarActionContext } from '../react/types';\nimport { annotationReferenceText } from './annotation-reference';\nimport { OverlayScrollArea } from './OverlayScrollArea';\nimport { Collapse } from './Collapse';\n\nexport interface SelectionToolbarProps extends StyledProps {\n /** Replaces the built-in actions. Extension actions are added. */\n actions?: readonly SelectionAction[];\n portalRoot?: HTMLElement | null;\n /** Maximum panel body height in pixels; plugins inherit the available space. */\n maxPanelHeight?: number;\n render?: (props: { context: ActionContext; actions: readonly SelectionAction[]; run: (action: SelectionAction) => Promise<void> }) => ReactNode;\n}\nconst defaults = [highlightPalette(), highlightSelection(), copyText(), deleteAnnotations()];\n\nexport function SelectionToolbar({ actions, portalRoot, maxPanelHeight = 260, className = '', style, render }: SelectionToolbarProps) {\n const runtime = useRuntime();\n const appearance = useAppearance(), theme = useTheme();\n const selection = useSelection();\n const interaction = useStoreSelector(runtime.interaction, value => value);\n const decorations = useStoreSelector(runtime.decorations, value => value);\n const config = useStoreSelector(runtime.configuration, value => value);\n const paint = interaction.activeHighlight ? decorations.highlights.get(interaction.activeHighlight) : null;\n const active = decorations.occurrences.find(item => item.id === interaction.active);\n const hiddenActive = active && [...decorations.highlights.values()].some(item => item.hidden && sameRange(item.range, active.range));\n const combined = useMemo(() => {\n const map = new Map((actions ?? defaults).map(action => [action.id, action]));\n config.extensions?.forEach(extension => extension.actions?.forEach(action => map.set(action.id, action)));\n actions?.forEach(action => map.set(action.id, action));\n const order = (action: SelectionAction) => action.placement === 'start' ? -1 : action.placement === 'end' ? 1 : 0;\n return [...map.values()].sort((a, b) => order(a) - order(b));\n }, [config.extensions, actions]);\n const [busy, setBusy] = useState<string | null>(null);\n const busyRef = useRef(false);\n const [error, setError] = useState<string | null>(null);\n const [expanded, setExpanded] = useState<string | null>(null);\n const [success, setSuccess] = useState<string | null>(null);\n const [deleteHintOpen, setDeleteHintOpen] = useState(false);\n const [preferredHighlight, setPreferredHighlight] = useState<HighlightData>(defaultHighlight);\n const closeTimer = useRef<ReturnType<typeof setTimeout> | undefined>(undefined);\n const successTimer = useRef<ReturnType<typeof setTimeout> | undefined>(undefined);\n const panelId = useId();\n const documentSnapshot = runtime.document.getSnapshot();\n const effectiveSelection = useMemo(() => {\n if (selection) return selection;\n // Dismissed annotations can retain their edit state for later resumption.\n // Only the active annotation's editor suppresses highlight actions.\n if (interaction.editing && active?.annotationIds.includes(interaction.editing)) return null;\n const range = paint?.range ?? (hiddenActive ? active?.range : undefined);\n return range ? selectionFromRange(documentSnapshot, range, {\n text: paint ? runtime.highlightReference?.text ?? annotationReferenceText(documentSnapshot, { id: paint.id, annotationIds: [], range }) : annotationReferenceText(documentSnapshot, active!),\n }) : null;\n }, [documentSnapshot, paint, active, selection, interaction.editing, hiddenActive]);\n const annotations = useMemo(() => effectiveSelection ? [...decorations.annotations.values()].filter(annotation =>\n resolveAnnotationAnchors(annotation, documentSnapshot).some(anchor => [...effectiveSelection.raw.ranges, ...effectiveSelection.syntax.ranges].some(range => sameRange(anchor.range, range)))) : [], [decorations, effectiveSelection, documentSnapshot]);\n const highlight = (paint ? decorations.annotations.get(paint.annotationId) : annotations.find(annotation => annotation.type === 'highlight')) as Annotation<HighlightData> | undefined;\n const highlightAppearance = highlight?.data ?? preferredHighlight;\n const context: ActionContext | null = effectiveSelection ? {\n ...runtime.commands, selection: effectiveSelection, annotations, highlight: highlight ?? null, locale: runtime.locale,\n addAnnotation: (annotation, options) => runtime.commands.addAnnotation(annotation, { highlight: highlightAppearance, ...options }),\n document: documentSnapshot, signal: runtime.signal, clearSelection: () => runtime.clearSelection(),\n } : null;\n const available = context ? combined.filter(action => action.visible?.(context) ?? true) : [];\n const expandedAction = available.find(action => action.id === expanded && action.renderExpanded);\n const hasPanels = available.some(action => action.renderExpanded);\n const open = !!context && effectiveSelection!.settled && available.length > 0;\n const { refs, floatingStyles, placement, isPositioned } = useFloating({\n open, strategy: 'fixed', placement: 'bottom',\n middleware: [offset(10), { name: 'toolbarSpace', options: { hasPanels, maxPanelHeight }, fn({ rects, placement, elements }) {\n const viewport = window.visualViewport;\n const root = runtime.configuration.get().scrollRoot?.getBoundingClientRect();\n const top = Math.max(viewport?.offsetTop ?? 0, root?.top ?? 0);\n const bottom = Math.min((viewport?.offsetTop ?? 0) + (viewport?.height ?? window.innerHeight), root?.bottom ?? Infinity);\n const above = Math.max(0, rects.reference.y - top - 20), below = Math.max(0, bottom - rects.reference.y - rects.reference.height - 20);\n const row = (elements.floating.querySelector('.limr-toolbar-actions')?.getBoundingClientRect().height ?? 34) + (elements.floating.querySelector('.limr-toolbar-delete-hint')?.getBoundingClientRect().height ?? 0);\n const limit = Math.max(0, parseFloat(getComputedStyle(elements.floating).getPropertyValue('--limr-toolbar-panel-max-height')) || maxPanelHeight);\n const needed = row + (hasPanels ? limit : 0) + 24;\n // Reserve the same budget while closed or expanded, so hover never moves the action row.\n const next = below >= needed || below >= above ? 'bottom' : 'top';\n const room = next === 'bottom' ? below : above;\n elements.floating.style.setProperty('--limr-toolbar-panel-height', `${Math.max(0, Math.min(limit, room - row - 24))}px`);\n elements.floating.style.setProperty('--limr-toolbar-available-height', `${room}px`);\n return placement !== next ? { reset: { placement: next } } : {};\n } }, shift({ padding: 10 })], whileElementsMounted: autoUpdate,\n });\n useEffect(() => {\n const reference = selection ? runtime.selectionRange : paint ? runtime.highlightReference : active ? runtime.anchors.get(active.id) : null;\n if (reference) refs.setPositionReference({ getBoundingClientRect: () => reference.getBoundingClientRect(), getClientRects: () => reference.getClientRects(), contextElement: runtime.content ?? undefined });\n }, [runtime, refs, selection, paint, active]);\n const selectionKey = effectiveSelection?.raw.ranges.map(range => `${range.start}-${range.end}`).join(',') ?? '';\n useEffect(() => { setError(null); setExpanded(null); setSuccess(null); setDeleteHintOpen(false); clearTimeout(closeTimer.current); clearTimeout(successTimer.current); }, [selectionKey, open]);\n useEffect(() => () => { clearTimeout(closeTimer.current); clearTimeout(successTimer.current); }, []);\n const dismiss = () => { runtime.clearSelection(); runtime.activate(null); };\n useEffect(() => {\n if (!open) return;\n const down = (event: PointerEvent) => {\n if (event.target instanceof Element && event.target.closest('[data-limr-selection-ui],.limr-sidebar-card,.limr-overlay-positioner,[data-limr-anchor]')) return;\n if (runtime.interaction.get().activeHighlight) runtime.clearSelection();\n };\n const key = (event: KeyboardEvent) => {\n if (event.key !== 'Escape' || event.defaultPrevented) return;\n if (expanded) {\n setExpanded(null);\n refs.floating.current?.querySelector<HTMLButtonElement>(`[data-action-id=\"${CSS.escape(expanded)}\"] button`)?.focus();\n } else dismiss();\n event.preventDefault();\n };\n document.addEventListener('pointerdown', down); document.addEventListener('keydown', key);\n return () => { document.removeEventListener('pointerdown', down); document.removeEventListener('keydown', key); };\n }, [open, expanded, runtime, refs]);\n const expand = (id: string) => { clearTimeout(closeTimer.current); setExpanded(id); };\n const execute = async (action: SelectionAction, operation: () => void | Promise<void>) => {\n if (!context || busyRef.current || action.disabled?.(context)) return;\n busyRef.current = true; setBusy(action.id); setError(null);\n try { await operation(); }\n catch (cause) { if (!runtime.signal.aborted) setError(cause instanceof Error ? cause.message : String(cause)); }\n finally { busyRef.current = false; if (!runtime.signal.aborted) setBusy(null); }\n };\n const actionContext = (action: SelectionAction): ToolbarActionContext => ({\n ...context!, busy: !!busy, expanded: expanded === action.id, highlightAppearance, setHighlightAppearance: setPreferredHighlight,\n expand: () => expand(action.id), collapse: () => setExpanded(null),\n run: operation => execute(action, () => operation(context!)),\n });\n const run = (action: SelectionAction) => execute(action, async () => {\n if (action.run) await action.run(actionContext(action));\n else if (action.renderExpanded) expanded === action.id ? setExpanded(null) : expand(action.id);\n if (action.successLabel && !runtime.signal.aborted) {\n setSuccess(action.id); clearTimeout(successTimer.current);\n successTimer.current = setTimeout(() => setSuccess(null), 2400);\n }\n });\n if (!open || !context) return null;\n const label = (action: SelectionAction) => {\n const value = success === action.id && action.successLabel ? action.successLabel : action.label;\n return typeof value === 'function' ? value(context) : value;\n };\n const annotationCount = annotations.filter(annotation => annotation.type !== 'highlight').length;\n const hint = available.some(action => action.id === 'delete-annotations') && annotationCount > 1 ? context.locale.deleteAnnotationsHint.replace('{count}', String(annotationCount)) : null;\n return <FloatingPortal root={portalRoot}><div ref={refs.setFloating} className={`limr-selection-toolbar ${className}`} style={{ ...style, ...floatingStyles, visibility: isPositioned ? undefined : 'hidden' }} role=\"toolbar\" aria-label=\"Text actions\" data-limr-selection-ui=\"true\" data-limr-theme={theme} data-limr-appearance={appearance} data-placement={placement} data-highlight={highlight?.id} data-expanded={expandedAction?.id}\n onMouseDown={event => { if (!(event.target instanceof Element) || !event.target.closest('input,textarea,select,[contenteditable]')) event.preventDefault(); }}\n onPointerEnter={() => clearTimeout(closeTimer.current)}\n onPointerLeave={event => {\n if (event.pointerType !== 'mouse' || event.currentTarget.contains(document.activeElement)) return;\n closeTimer.current = setTimeout(() => setExpanded(null), 200);\n }}\n onBlur={event => { if (!event.currentTarget.contains(event.relatedTarget) && !event.currentTarget.matches(':hover')) setExpanded(null); }}\n onKeyDown={event => {\n if (event.target instanceof Element && event.target.closest('.limr-toolbar-panel')) return;\n if (!['ArrowRight', 'ArrowLeft', 'Home', 'End', 'ArrowDown', 'ArrowUp'].includes(event.key)) return;\n if (event.key === 'ArrowDown' || event.key === 'ArrowUp') {\n const id = (event.target as Element).closest<HTMLElement>('[data-action-id]')?.dataset.actionId;\n const action = available.find(item => item.id === id);\n if (action?.renderExpanded) { expand(action.id); requestAnimationFrame(() => refs.floating.current?.querySelector<HTMLElement>('.limr-toolbar-panel button,.limr-toolbar-panel input,.limr-toolbar-panel textarea')?.focus()); }\n } else {\n const buttons = Array.from(event.currentTarget.querySelectorAll<HTMLButtonElement>('.limr-toolbar-actions button:not(:disabled)'));\n const current = buttons.indexOf(document.activeElement as HTMLButtonElement);\n const index = event.key === 'Home' ? 0 : event.key === 'End' ? buttons.length - 1 : (current + (event.key === 'ArrowRight' ? 1 : buttons.length - 1)) % buttons.length;\n buttons[index]?.focus();\n }\n event.preventDefault();\n }}>\n <div className=\"limr-toolbar-surface\" key={selectionKey} data-ready={isPositioned || undefined}>\n <div className=\"limr-toolbar-actions\">{render ? render({ context, actions: available, run }) : available.map((action, index) => <div className=\"limr-toolbar-item\" key={action.id} data-action-id={action.id} data-active={expanded === action.id || undefined} data-tone={action.tone} data-status={success === action.id ? 'success' : undefined} style={{ '--limr-tool-index': index } as CSSProperties}\n onPointerEnter={event => {\n if (event.pointerType !== 'mouse' || busy || action.disabled?.(context)) return;\n if (expandedAction && expandedAction.id !== action.id && refs.floating.current?.querySelector('.limr-toolbar-panel')?.contains(document.activeElement)) return;\n clearTimeout(closeTimer.current);\n if (action.renderExpanded) expand(action.id); else setExpanded(null);\n try { action.onHover?.(actionContext(action)); }\n catch (cause) { setError(cause instanceof Error ? cause.message : String(cause)); }\n }}>\n {action.render ? action.render(actionContext(action)) : <button className=\"limr-toolbar-action\" type=\"button\" disabled={!!busy || action.disabled?.(context)} onClick={() => void run(action)} aria-label={label(action)} aria-busy={busy === action.id} aria-expanded={action.renderExpanded ? expanded === action.id : undefined} aria-controls={action.renderExpanded && expanded === action.id ? panelId : undefined}\n aria-describedby={action.id === 'delete-annotations' && hint && deleteHintOpen ? `${panelId}-delete` : undefined}\n onPointerEnter={event => { if (action.id === 'delete-annotations' && event.pointerType !== 'touch') setDeleteHintOpen(true); }}\n onPointerLeave={event => { if (action.id === 'delete-annotations') setDeleteHintOpen(event.currentTarget.matches(':focus-visible')); }}\n onFocus={event => { if (action.id === 'delete-annotations' && event.currentTarget.matches(':focus-visible')) setDeleteHintOpen(true); }}\n onBlur={event => { if (action.id === 'delete-annotations' && !event.currentTarget.matches(':hover')) setDeleteHintOpen(false); }}>\n <span className=\"limr-tool-face\" data-visible={success !== action.id || undefined} aria-hidden=\"true\">\n <span className=\"limr-tool-icon\" key={typeof action.label === 'function' ? action.label(context) : action.label}>{typeof action.icon === 'function' ? action.icon(context) : action.icon}</span><span className=\"limr-tool-label limr-underline\">{typeof action.label === 'function' ? action.label(context) : action.label}</span>\n </span>\n {action.successLabel && <span className=\"limr-tool-face\" data-visible={success === action.id || undefined} aria-hidden=\"true\">\n <span className=\"limr-tool-icon\">{action.successIcon ?? (typeof action.icon === 'function' ? action.icon(context) : action.icon)}</span><span className=\"limr-tool-label limr-underline\">{typeof action.successLabel === 'function' ? action.successLabel(context) : action.successLabel}</span>\n </span>}\n </button>}\n </div>)}</div>\n {expandedAction && <div id={panelId} className=\"limr-toolbar-panel\" key={expandedAction.id} role=\"group\" aria-label={label(expandedAction)}><OverlayScrollArea active label={label(expandedAction)}>{expandedAction.renderExpanded!(actionContext(expandedAction))}</OverlayScrollArea></div>}\n {hint && <Collapse open={deleteHintOpen} keepMounted className=\"limr-toolbar-delete-warning\"><p id={`${panelId}-delete`} className=\"limr-toolbar-delete-hint\">{hint}</p></Collapse>}\n {error && <span role=\"alert\" className=\"limr-action-error\">{error}</span>}\n </div>\n </div></FloatingPortal>;\n}\n"],"mappings":"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","names":["useEffect","useId","useRef","useState","useEffect","useEffect","useEffect","useRef","useState","useEffect","jsx","jsxs","useEffect","document","Fragment","jsx","jsxs","document","useRef","useState","element","height","size","useEffect","displacement","active","hovered","style","useEffect","useState","useSyncExternalStore","useRef","useRef","jsx","jsxs","useSyncExternalStore","useState","useEffect","update","anchor","availableHeight","useEffect","useMemo","useRef","useState","autoUpdate","FloatingPortal","offset","shift","useFloating","jsx","jsxs","useMemo","useState","useRef","useFloating","offset","placement","shift","autoUpdate","useEffect","FloatingPortal","Fragment","jsx","jsxs","useRef","useState","useEffect","useId"]}