@panphora/clayjs 1.15.1 → 1.16.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 (506) hide show
  1. package/README.md +4 -5
  2. package/THIRD-PARTY-NOTICES.md +16 -0
  3. package/compat/highlight-11.9.0.min.js +1213 -0
  4. package/compat/highlight-LICENSE +29 -0
  5. package/compat/journal-assets.lock.json +22 -0
  6. package/compat/overtype-2.6.1.min.js +116 -0
  7. package/compat/overtype-LICENSE +21 -0
  8. package/dist/all.js +90 -0
  9. package/dist/clay-dom.js +84 -0
  10. package/dist/clay-events.js +103 -0
  11. package/dist/clay-internals.js +85 -0
  12. package/dist/clay-options.js +93 -0
  13. package/dist/clay-router.js +98 -0
  14. package/dist/clay-ui.js +95 -0
  15. package/dist/clay-utils.js +84 -0
  16. package/dist/clay.js +146 -0
  17. package/dist/clay.standalone.js +83090 -58706
  18. package/dist/m/attrs/add-from-T5LJXFFI.js +1 -0
  19. package/dist/m/attrs/onaftersave-OKSWEJQF.js +1 -0
  20. package/dist/m/attrs/refetch-on-save-NWPPXOCZ.js +1 -0
  21. package/dist/m/attrs/save-freeze-FUP4Q4X3.js +1 -0
  22. package/dist/m/c-2AZDZWCK.js +1 -0
  23. package/dist/m/c-2JL6E75N.js +1 -0
  24. package/dist/m/c-2M73252O.js +1 -0
  25. package/dist/m/c-2SPVQSHC.js +1 -0
  26. package/dist/m/c-33HUYEDI.js +1 -0
  27. package/dist/m/c-33JJ6CBX.js +2 -0
  28. package/dist/m/c-35NBGMZB.js +1 -0
  29. package/dist/m/c-3GJ4SDE2.js +1 -0
  30. package/dist/m/c-3IQRECYS.js +1 -0
  31. package/dist/m/c-3OWDMNJR.js +2 -0
  32. package/dist/m/c-46XYM55L.js +1 -0
  33. package/dist/m/c-4B6H4G5V.js +1 -0
  34. package/dist/m/c-4DRMS4QG.js +9 -0
  35. package/dist/m/c-4FFHZM32.js +1 -0
  36. package/dist/m/c-4JZDZFF6.js +1 -0
  37. package/dist/m/c-4L3BTFRK.js +1 -0
  38. package/dist/m/c-4Q2XTQ2N.js +2 -0
  39. package/dist/m/c-4WKFKEKF.js +1 -0
  40. package/dist/m/c-4YSCRICO.js +1 -0
  41. package/dist/m/c-54RCDCBU.js +1 -0
  42. package/dist/m/c-5M4YEKCX.js +4 -0
  43. package/dist/m/c-5R4PTRG2.js +1 -0
  44. package/dist/m/c-5V3MOVJT.js +1 -0
  45. package/dist/m/c-5VYOWDTI.js +1 -0
  46. package/dist/m/c-5Y6TNX5W.js +34 -0
  47. package/dist/m/c-5YIHJ3TJ.js +1 -0
  48. package/dist/m/c-66O32MV3.js +28 -0
  49. package/dist/m/c-6HMB24EV.js +1 -0
  50. package/dist/m/c-7DJDKPGL.js +1 -0
  51. package/dist/m/c-7O6AFR65.js +1 -0
  52. package/dist/m/c-7SWMYKAI.js +1 -0
  53. package/dist/m/c-7VGZ7RU5.js +1 -0
  54. package/dist/m/c-A7LS5UZW.js +1 -0
  55. package/dist/m/c-ANQTJ3B5.js +2 -0
  56. package/dist/m/c-AQLFEATB.js +1 -0
  57. package/dist/m/c-AYVOREBE.js +1 -0
  58. package/dist/m/c-B2ZXPOS3.js +3 -0
  59. package/dist/m/c-BBVGTQG7.js +1 -0
  60. package/dist/m/c-BMIZKMPV.js +1 -0
  61. package/dist/m/c-BTDI4Y23.js +1 -0
  62. package/dist/m/c-BWFVSBDF.js +1 -0
  63. package/dist/m/c-BYTKL6UX.js +1 -0
  64. package/dist/m/c-CFHW5AMY.js +6 -0
  65. package/dist/m/c-CJZSLMVQ.js +1 -0
  66. package/dist/m/c-CYWLPPUS.js +1 -0
  67. package/dist/m/c-CZUSOB7V.js +1 -0
  68. package/dist/m/c-DBE6ORSI.js +1 -0
  69. package/dist/m/c-DCFSEJZG.js +1 -0
  70. package/dist/m/c-DNZ5IFM6.js +1 -0
  71. package/dist/m/c-EDHUR4MX.js +1 -0
  72. package/dist/m/c-EJTGYSLN.js +1 -0
  73. package/dist/m/c-EY6UOM54.js +1 -0
  74. package/dist/m/c-F3CKJTJS.js +1 -0
  75. package/dist/m/c-F7Y6FLPY.js +1 -0
  76. package/dist/m/c-FA4DZVTC.js +1 -0
  77. package/dist/m/c-FILLTJA7.js +1 -0
  78. package/dist/m/c-G2BUZITR.js +1 -0
  79. package/dist/m/c-GB3JTV6E.js +1 -0
  80. package/dist/m/c-GBGWXTX4.js +1 -0
  81. package/dist/m/c-GHBCCVG4.js +1 -0
  82. package/dist/m/c-GJAEGGXY.js +1 -0
  83. package/dist/m/c-GOWBDM6J.js +1 -0
  84. package/dist/m/c-GQ6F6IDK.js +1 -0
  85. package/dist/m/c-H4LG442Q.js +1 -0
  86. package/dist/m/c-HA6INT6J.js +1 -0
  87. package/dist/m/c-HPURYVZS.js +2 -0
  88. package/dist/m/c-HRDCD3WN.js +67 -0
  89. package/dist/m/c-HT33EQRN.js +1 -0
  90. package/dist/m/c-HVYXIS72.js +1 -0
  91. package/dist/m/c-IB52R237.js +1 -0
  92. package/dist/m/c-IJUK2GPW.js +1 -0
  93. package/dist/m/c-IKWNE4R4.js +1 -0
  94. package/dist/m/c-IU3IYEU6.js +1 -0
  95. package/dist/m/c-IZ2EBRAJ.js +1 -0
  96. package/dist/m/c-J7CA54IP.js +1 -0
  97. package/dist/m/c-JAX2667S.js +6 -0
  98. package/dist/m/c-KI7M4AY3.js +1 -0
  99. package/dist/m/c-KIPQJX4B.js +1 -0
  100. package/dist/m/c-KKWLDOPM.js +1 -0
  101. package/dist/m/c-KR4UW4KW.js +1 -0
  102. package/dist/m/c-KY3VJGUA.js +8 -0
  103. package/dist/m/c-L4WQSC27.js +1 -0
  104. package/dist/m/c-LFPHCXY3.js +1 -0
  105. package/dist/m/c-LR4CGEPT.js +91 -0
  106. package/dist/m/c-LRPUO2MX.js +1 -0
  107. package/dist/m/c-LTGMXXKO.js +1 -0
  108. package/dist/m/c-LXENEBV7.js +1 -0
  109. package/dist/m/c-LZJPNR2W.js +1 -0
  110. package/dist/m/c-MMUIUUZG.js +2 -0
  111. package/dist/m/c-MTQHWQC3.js +1 -0
  112. package/dist/m/c-N326R2JD.js +1 -0
  113. package/dist/m/c-N7JPUPGC.js +1 -0
  114. package/dist/m/c-NMJRXKPC.js +8 -0
  115. package/dist/m/c-NRPJEVJS.js +1 -0
  116. package/dist/m/c-NUHP2XDB.js +1 -0
  117. package/dist/m/c-NZMNXVF6.js +1 -0
  118. package/dist/m/c-OCSZ4QGN.js +1 -0
  119. package/dist/m/c-OIBUTDXI.js +1 -0
  120. package/dist/m/c-OIDRZKAF.js +1 -0
  121. package/dist/m/c-OYTFP5QN.js +1 -0
  122. package/dist/m/c-P7KNDG34.js +1 -0
  123. package/dist/m/c-PPOSCAQD.js +1 -0
  124. package/dist/m/c-PQ5LK6QE.js +993 -0
  125. package/dist/m/c-PZ4XEPUP.js +2 -0
  126. package/dist/m/c-QHIWXHRO.js +1 -0
  127. package/dist/m/c-QHWJ5ZIJ.js +1 -0
  128. package/dist/m/c-QIX5BJYN.js +1 -0
  129. package/dist/m/c-QNKREOL6.js +1 -0
  130. package/dist/m/c-QQHEX6HA.js +1 -0
  131. package/dist/m/c-R7RMANJI.js +9 -0
  132. package/dist/m/c-RI4NT75Y.js +1 -0
  133. package/dist/m/c-RM7J7BV2.js +1 -0
  134. package/dist/m/c-RUJKSUQW.js +1 -0
  135. package/dist/m/c-RVMWGXEJ.js +1 -0
  136. package/dist/m/c-S7H2DRCB.js +1 -0
  137. package/dist/m/c-S7LK4KUE.js +1 -0
  138. package/dist/m/c-SGCCC4FW.js +25 -0
  139. package/dist/m/c-SGIA4IEQ.js +188 -0
  140. package/dist/m/c-SWRJFCNN.js +1 -0
  141. package/dist/m/c-T4VO4OCB.js +1 -0
  142. package/dist/m/c-TCCA5BZN.js +2 -0
  143. package/dist/m/c-TQEMVJCS.js +1 -0
  144. package/dist/m/c-TQZ2JYHD.js +1 -0
  145. package/dist/m/c-TR6RMDQ7.js +3 -0
  146. package/dist/m/c-TRS6TM6O.js +1 -0
  147. package/dist/m/c-UGHH4MB3.js +1 -0
  148. package/dist/m/c-UKHTLWUW.js +1 -0
  149. package/dist/m/c-UL2YUY52.js +1 -0
  150. package/dist/m/c-UNN7LWCT.js +1 -0
  151. package/dist/m/c-UXBMRDZB.js +235 -0
  152. package/dist/m/c-V7PZZRG7.js +1 -0
  153. package/dist/m/c-VAK7SG37.js +1 -0
  154. package/dist/m/c-VDSS4K3Z.js +1 -0
  155. package/dist/m/c-VFX45IZQ.js +1 -0
  156. package/dist/m/c-VHNSBD2M.js +1 -0
  157. package/dist/m/c-VKEDWYDF.js +1 -0
  158. package/dist/m/c-VL52ADDR.js +1 -0
  159. package/dist/m/c-WN5AY3OZ.js +1 -0
  160. package/dist/m/c-WNYBLIOZ.js +1 -0
  161. package/dist/m/c-WRBKEJD4.js +1 -0
  162. package/dist/m/c-WWDBYXLK.js +1 -0
  163. package/dist/m/c-WYFDLITL.js +1 -0
  164. package/dist/m/c-XN6MBKI6.js +67 -0
  165. package/dist/m/c-XNNW2CWK.js +1 -0
  166. package/dist/m/c-XPELB6E5.js +1 -0
  167. package/dist/m/c-XQXZAO7N.js +1 -0
  168. package/dist/m/c-Y6USGTS5.js +5 -0
  169. package/dist/m/c-YDH7Q3NY.js +1 -0
  170. package/dist/m/c-YG2NJYS6.js +135 -0
  171. package/dist/m/c-Z36J63PP.js +1 -0
  172. package/dist/m/c-Z4VRC7GU.js +7 -0
  173. package/dist/m/c-Z6K52OLP.js +19 -0
  174. package/dist/m/c-ZDY2MDAA.js +21 -0
  175. package/dist/m/c-ZE46QDIH.js +1 -0
  176. package/dist/m/c-ZUCOKOHT.js +1 -0
  177. package/dist/m/core/admin-attrs-VGNLAUDK.js +1 -0
  178. package/dist/m/core/autosave-E4PEFPZ6.js +1 -0
  179. package/dist/m/core/conflict-notice-VQ6Y64PH.js +1 -0
  180. package/dist/m/core/draft-mode-WSQAT67S.js +1 -0
  181. package/dist/m/core/host-permission-XN3K2IW3.js +1 -0
  182. package/dist/m/core/is-edit-mode-JXHDVGUL.js +1 -0
  183. package/dist/m/core/persist-HKHA66IY.js +3 -0
  184. package/dist/m/core/recovery-TBBSICE2.js +1 -0
  185. package/dist/m/core/save-WUCHTQBE.js +1 -0
  186. package/dist/m/core/save-core-FJVHT5M3.js +1 -0
  187. package/dist/m/core/snapshot-F3SWDZMM.js +1 -0
  188. package/dist/m/core/unsaved-warning-STKBHE6G.js +1 -0
  189. package/dist/m/dom/all-APS5ZSKP.js +1 -0
  190. package/dist/m/dom/dom-helpers-L7OSR6S4.js +1 -0
  191. package/dist/m/events/index-23DPTUT4.js +1 -0
  192. package/dist/m/internals/index-WOVAP3RU.js +1 -0
  193. package/dist/m/lib/cache-bust-CGWT6ZJI.js +1 -0
  194. package/dist/m/lib/region-policy-SB2AWVG5.js +1 -0
  195. package/dist/m/loader-HXX6YNH5.js +1 -0
  196. package/dist/m/manifest-F22DEDAC.js +1 -0
  197. package/dist/m/manifest-edit-C3C7376B.js +1 -0
  198. package/dist/m/manifest.json +3491 -0
  199. package/dist/m/options/options-2LH76JQ3.js +1 -0
  200. package/dist/m/page/editor-XUTB2HB2.js +189 -0
  201. package/dist/m/plugins/ai-edit-ZQ4CGWIP.js +6 -0
  202. package/dist/m/plugins/bind-text-NX46N5UV.js +1 -0
  203. package/dist/m/plugins/cms-HP3LSTPN.js +2293 -0
  204. package/dist/m/plugins/demo-ZIBFAA3R.js +1 -0
  205. package/dist/m/plugins/derive-UAAA4V4S.js +1 -0
  206. package/dist/m/plugins/indicator-PV4YW2ID.js +1 -0
  207. package/dist/m/plugins/live-NUTTXSBS.js +1 -0
  208. package/dist/m/plugins/menu-HCKO3DSP.js +138 -0
  209. package/dist/m/plugins/message-LQ6EDH4V.js +1 -0
  210. package/dist/m/plugins/page-KSUH7G6J.js +2 -0
  211. package/dist/m/plugins/page-view-W73OW7WI.js +1 -0
  212. package/dist/m/plugins/people-AJJ32YCG.js +1 -0
  213. package/dist/m/plugins/quickcrop-QNY3PKLD.js +26 -0
  214. package/dist/m/plugins/quickcrop-QNY3PKLD.js.LEGAL.txt +7 -0
  215. package/dist/m/plugins/richclay-RC3L2F6X.js +517 -0
  216. package/dist/m/plugins/richclay-RC3L2F6X.js.LEGAL.txt +1 -0
  217. package/dist/m/plugins/sortable-YRMQX3ZU.js +1 -0
  218. package/dist/m/plugins/source-KHK5UUSK.js +1 -0
  219. package/dist/m/plugins/undo-OF2L3CXU.js +1 -0
  220. package/dist/m/plugins/unsent-HJFLQJ2O.js +1 -0
  221. package/dist/m/plugins/upgrade-ZNYODP5Y.js +1 -0
  222. package/dist/m/plugins/upload-XSGNILUY.js +1 -0
  223. package/dist/m/plugins/visitor-drafts-XK5GW55Q.js +21 -0
  224. package/dist/m/plugins/visitor-drafts-owner-KSSH75EV.js +1 -0
  225. package/dist/m/plugins/wire-ZWVWKF76.js +1 -0
  226. package/dist/m/reader-core-ILWLXVMP.js +68 -0
  227. package/dist/m/route/route-KOCZSEGN.js +1 -0
  228. package/dist/m/sync/live-sync-4AUVXVJU.js +1 -0
  229. package/dist/m/ui/index-EVHKMKBL.js +1 -0
  230. package/dist/m/utils/index-4TJCVLT7.js +1 -0
  231. package/dist/m/vendor/Sortable.vendor-A755ITLN.js +3 -0
  232. package/dist/m/vendor/Sortable.vendor-A755ITLN.js.LEGAL.txt +1 -0
  233. package/dist/m/vendor/sap-core.vendor-A7BMUYZT.js +6 -0
  234. package/dist/offline-manifest.json +3800 -0
  235. package/dist/page/themes/light-1.css +406 -0
  236. package/dist/server/core.cjs +23662 -22860
  237. package/dist/server/offline-runtime.cjs +4954 -0
  238. package/dist/server/offline-runtime.mjs +4923 -0
  239. package/dist/server/rooms.mjs +9 -0
  240. package/docs/guide.md +1078 -669
  241. package/entries/all.js +2 -0
  242. package/entries/clay-data.js +1 -1
  243. package/entries/clay-dom.js +2 -0
  244. package/entries/clay-events.js +2 -0
  245. package/entries/clay-internals.js +2 -0
  246. package/entries/clay-options.js +2 -0
  247. package/entries/clay-router.js +2 -0
  248. package/entries/clay-ui.js +2 -0
  249. package/entries/clay-utils.js +2 -0
  250. package/entries/clay.js +2 -0
  251. package/entries/sap.js +6 -6
  252. package/fonts/ibm-plex-mono-LICENSE +93 -0
  253. package/fonts/ibm-plex-mono-latin-300-normal.woff2 +0 -0
  254. package/fonts/ibm-plex-mono-latin-400-italic.woff2 +0 -0
  255. package/fonts/ibm-plex-mono-latin-400-normal.woff2 +0 -0
  256. package/fonts/ibm-plex-mono-latin-500-normal.woff2 +0 -0
  257. package/fonts/ibm-plex-mono-latin-600-normal.woff2 +0 -0
  258. package/fonts/ibm-plex-sans-LICENSE +93 -0
  259. package/fonts/ibm-plex-sans-latin-400-normal.woff2 +0 -0
  260. package/fonts/ibm-plex-sans-latin-500-normal.woff2 +0 -0
  261. package/fonts/ibm-plex-sans-latin-600-normal.woff2 +0 -0
  262. package/fonts/ibm-plex.css +71 -0
  263. package/fonts/inter-LICENSE +93 -0
  264. package/fonts/inter-cyrillic-ext-wght-normal.woff2 +0 -0
  265. package/fonts/inter-cyrillic-wght-normal.woff2 +0 -0
  266. package/fonts/inter-greek-ext-wght-normal.woff2 +0 -0
  267. package/fonts/inter-greek-wght-normal.woff2 +0 -0
  268. package/fonts/inter-latin-ext-wght-normal.woff2 +0 -0
  269. package/fonts/inter-latin-wght-normal.woff2 +0 -0
  270. package/fonts/inter-vietnamese-wght-normal.woff2 +0 -0
  271. package/fonts/inter.css +62 -0
  272. package/fonts/newsreader-LICENSE +93 -0
  273. package/fonts/newsreader-latin-ext-opsz-normal.woff2 +0 -0
  274. package/fonts/newsreader-latin-opsz-normal.woff2 +0 -0
  275. package/fonts/newsreader-vietnamese-opsz-normal.woff2 +0 -0
  276. package/fonts/newsreader.css +26 -0
  277. package/fonts/work-sans-LICENSE +93 -0
  278. package/fonts/work-sans-latin-wght-normal.woff2 +0 -0
  279. package/fonts/work-sans.css +8 -0
  280. package/package.json +20 -3
  281. package/packed-contract.json +1 -0
  282. package/src/attrs/add-from.js +27 -4
  283. package/src/attrs/save-freeze.js +7 -52
  284. package/src/core/admin-attrs.js +119 -12
  285. package/src/core/admin-contenteditable.js +12 -10
  286. package/src/core/admin-inputs.js +14 -15
  287. package/src/core/admin-onclick.js +2 -0
  288. package/src/core/autosave.js +74 -21
  289. package/src/core/conflict-download.js +22 -0
  290. package/src/core/conflict-notice-ui.js +1173 -0
  291. package/src/core/conflict-notice.js +140 -697
  292. package/src/core/edit-mode.js +147 -14
  293. package/src/core/etag.js +30 -12
  294. package/src/core/host-meta.js +72 -8
  295. package/src/core/host-permission.js +29 -0
  296. package/src/core/is-edit-mode.js +145 -12
  297. package/src/core/mode-key.js +125 -0
  298. package/src/core/mode-lifecycle.js +544 -0
  299. package/src/core/mode-receipt.js +30 -0
  300. package/src/core/mode-refusal.js +13 -0
  301. package/src/core/mode-resources.js +52 -0
  302. package/src/core/mode-support.js +82 -0
  303. package/src/core/mode-switch.js +259 -0
  304. package/src/core/mode-transition.js +112 -0
  305. package/src/core/page-data-write.js +305 -0
  306. package/src/core/page-data.js +26 -227
  307. package/src/core/page-format-wire.js +4 -0
  308. package/src/core/page-format.js +58 -0
  309. package/src/core/persist.js +37 -9
  310. package/src/core/preserve-authored.js +114 -0
  311. package/src/core/recovery.js +772 -0
  312. package/src/core/runtime-url.js +105 -0
  313. package/src/core/save-core.js +109 -12
  314. package/src/core/save-replace.js +72 -0
  315. package/src/core/save-size-notice.js +134 -0
  316. package/src/core/save-size.js +140 -0
  317. package/src/core/save.js +805 -118
  318. package/src/core/snapshot.js +121 -11
  319. package/src/core/source-map.js +157 -9
  320. package/src/core/unsaved-warning.js +14 -4
  321. package/src/core/upgrade-run.js +408 -0
  322. package/src/core/version.js +18 -0
  323. package/src/lib/assets.js +30 -0
  324. package/src/lib/autosave-debug-gate.js +50 -0
  325. package/src/lib/autosave-scheduler.js +141 -0
  326. package/src/lib/boot-imports.js +8 -0
  327. package/src/lib/derived.js +3 -1
  328. package/src/lib/dirty-gate.js +15 -0
  329. package/src/lib/doc-storage.js +33 -0
  330. package/src/lib/effect.js +9 -4
  331. package/src/lib/mutation.js +4 -2
  332. package/src/lib/offline-runtime.js +226 -0
  333. package/src/lib/preload.js +48 -0
  334. package/src/lib/root-attrs.js +1 -1
  335. package/src/lib/trash.js +18 -0
  336. package/src/lib/undo/capture-move.js +152 -0
  337. package/src/live/local-channel.js +61 -0
  338. package/src/live/local-lane.js +60 -9
  339. package/src/live/server-lane.js +6 -3
  340. package/src/loader-logic.js +76 -15
  341. package/src/loader.js +218 -30
  342. package/src/page/adopt-boot.js +76 -22
  343. package/src/page/adopt.js +25 -4
  344. package/src/page/awareness.js +230 -0
  345. package/src/page/blocks.js +79 -5
  346. package/src/page/blocksel.js +20 -4
  347. package/src/page/board-face.js +13 -0
  348. package/src/page/board-panel.js +5 -17
  349. package/src/page/board-style.js +2 -13
  350. package/src/page/board-view.js +1 -11
  351. package/src/page/board-views.js +17 -0
  352. package/src/page/board.js +2 -2
  353. package/src/page/boot-pack.js +26 -0
  354. package/src/page/boot.js +237 -0
  355. package/src/page/checklist.js +1 -1
  356. package/src/page/chrome.js +411 -61
  357. package/src/page/csv-import.js +17 -2
  358. package/src/page/document-title-dom.js +40 -0
  359. package/src/page/document-title-runtime.js +76 -0
  360. package/src/page/document-title.js +9 -0
  361. package/src/page/drag.js +48 -13
  362. package/src/page/drop.js +2 -1
  363. package/src/page/editor.js +330 -86
  364. package/src/page/feature-loader.js +72 -0
  365. package/src/page/features/board.js +12 -0
  366. package/src/page/features/code.js +13 -0
  367. package/src/page/features/media.js +290 -0
  368. package/src/page/features/registry.js +23 -0
  369. package/src/page/features/table.js +383 -0
  370. package/src/page/{tool-view.js → features/tool.js} +33 -2
  371. package/src/page/format-codec.js +215 -0
  372. package/src/page/format-gate.js +179 -0
  373. package/src/page/format-level.js +157 -0
  374. package/src/page/highlight-slot.js +23 -0
  375. package/src/page/highlight.js +30 -16
  376. package/src/page/history-intent.js +78 -0
  377. package/src/page/inline.js +18 -25
  378. package/src/page/items.js +52 -11
  379. package/src/page/link.js +1 -0
  380. package/src/page/markdown.js +86 -1
  381. package/src/page/media-views.js +3 -0
  382. package/src/page/media.js +33 -245
  383. package/src/page/outline-cache.js +11 -0
  384. package/src/page/placeholder.js +27 -7
  385. package/src/page/projection.js +196 -50
  386. package/src/page/reader-patch.js +306 -0
  387. package/src/page/recover.js +1 -1
  388. package/src/page/rich/page-tool.js +1 -4
  389. package/src/page/runtime-owner.js +27 -0
  390. package/src/page/save-projection.js +7 -4
  391. package/src/page/schema.js +14 -0
  392. package/src/page/table-rect-key.js +3 -0
  393. package/src/page/table-select.js +4 -3
  394. package/src/page/table-style.js +1 -1
  395. package/src/page/table-views.js +3 -0
  396. package/src/page/table.js +8 -293
  397. package/src/page/themes/light-1.css +139 -2
  398. package/src/page/themes/light-1.source.css +269 -0
  399. package/src/page/tool-capability.js +3 -0
  400. package/src/page/tool-views.js +3 -0
  401. package/src/page/view.js +390 -107
  402. package/src/page/ybind/awareness.js +172 -0
  403. package/src/page/ybind/binding.js +9 -1
  404. package/src/page/ybind/bridge.js +50 -47
  405. package/src/page/ybind/decode.js +52 -19
  406. package/src/page/ybind/doc.js +27 -2
  407. package/src/page/ybind/group.js +12 -3
  408. package/src/page/ybind/index.js +2 -0
  409. package/src/page/ybind/lineage.js +71 -0
  410. package/src/page/ybind/marks.js +25 -1
  411. package/src/page/ybind/migrate.js +48 -13
  412. package/src/page/ybind/moves.js +32 -21
  413. package/src/page/ybind/positions.js +50 -0
  414. package/src/page/ybind/provider.js +84 -22
  415. package/src/page/ybind/recovery-proof.js +191 -0
  416. package/src/page/ybind/recovery-replay.js +130 -0
  417. package/src/page/ybind/tokens.js +15 -6
  418. package/src/page/ybind/walk.js +10 -3
  419. package/src/page/ybind/writer.js +48 -4
  420. package/src/plugins/ai-edit.js +167 -32
  421. package/src/plugins/bind-text.js +218 -0
  422. package/src/plugins/cms.js +93 -0
  423. package/src/plugins/indicator.js +57 -5
  424. package/src/plugins/live.js +282 -34
  425. package/src/plugins/menu/claygoo.svg.js +1 -0
  426. package/src/plugins/menu/seo-head.js +323 -0
  427. package/src/plugins/menu/seo.js +849 -0
  428. package/src/plugins/menu.js +425 -0
  429. package/src/plugins/page-view.js +131 -0
  430. package/src/plugins/page.js +1022 -275
  431. package/src/plugins/people.js +158 -31
  432. package/src/plugins/richclay.js +119 -9
  433. package/src/plugins/sortable.js +370 -60
  434. package/src/plugins/source.js +189 -366
  435. package/src/plugins/undo.js +289 -19
  436. package/src/plugins/unsent.js +132 -0
  437. package/src/plugins/upgrade-run.js +1 -0
  438. package/src/plugins/upgrade.js +210 -0
  439. package/src/plugins/upload-task.js +571 -0
  440. package/src/plugins/upload-ui.js +265 -0
  441. package/src/plugins/upload.js +34 -153
  442. package/src/plugins/visitor-drafts/inert.js +32 -0
  443. package/src/plugins/visitor-drafts/owner-chip.js +3 -0
  444. package/src/plugins/visitor-drafts/prompt.js +2 -2
  445. package/src/plugins/visitor-drafts-owner.js +85 -0
  446. package/src/plugins/visitor-drafts.js +31 -42
  447. package/src/plugins/wire.js +82 -1
  448. package/src/reader-core.js +26 -0
  449. package/src/recovery/conflicts.js +287 -0
  450. package/src/recovery/identity.js +154 -0
  451. package/src/recovery/store.js +792 -0
  452. package/src/recovery/undo.js +257 -0
  453. package/src/server/checkpoint/index.js +68 -4
  454. package/src/server/offline-runtime/index.js +214 -0
  455. package/src/server/rooms/index.js +2 -1
  456. package/src/server/rooms/live-data-rooms.js +2 -2
  457. package/src/server/rooms/page-admission.js +33 -0
  458. package/src/server/rooms/page-lineage.js +56 -0
  459. package/src/server/rooms/page-rebase.js +11 -5
  460. package/src/server/rooms/page-state.js +2 -0
  461. package/src/server/rooms/page-write-admission.js +9 -3
  462. package/src/source/session.js +705 -0
  463. package/src/sync/conflict-revert.js +5 -4
  464. package/src/sync/conflicts-edit.js +119 -0
  465. package/src/sync/conflicts-facade.js +49 -0
  466. package/src/sync/conflicts.js +99 -1
  467. package/src/sync/editing-marker.js +37 -6
  468. package/src/sync/editing-sender.js +8 -1
  469. package/src/sync/live-sync-edit.js +63 -0
  470. package/src/sync/live-sync.js +364 -119
  471. package/src/sync/local-presence.js +187 -0
  472. package/src/sync/merge-declarations.js +10 -0
  473. package/src/sync/merge-engine.js +12 -0
  474. package/src/sync/presence-store.js +412 -0
  475. package/src/sync/presence-target.js +243 -0
  476. package/src/sync/presence.js +72 -41
  477. package/src/sync/saved-handoff.js +200 -0
  478. package/src/sync/saved-stream.js +535 -0
  479. package/src/sync/version-guard.js +92 -0
  480. package/src/sync/wire-profile.js +81 -0
  481. package/src/ui/bevel-controls.js +2 -8
  482. package/src/ui/page-scheme.js +7 -0
  483. package/src/ui/skins/cms.js +1 -1
  484. package/src/ui/theme-config.js +150 -0
  485. package/src/ui/theme.js +6 -138
  486. package/src/ui/toast-lazy.js +11 -0
  487. package/src/vendor/LICENSES-optional.md +253 -0
  488. package/src/vendor/highlight.vendor.js +3 -0
  489. package/src/vendor/hljs-bash.vendor.js +2 -0
  490. package/src/vendor/hljs-css.vendor.js +2 -0
  491. package/src/vendor/hljs-javascript.vendor.js +2 -0
  492. package/src/vendor/hljs-json.vendor.js +2 -0
  493. package/src/vendor/hljs-python.vendor.js +2 -0
  494. package/src/vendor/hljs-xml.vendor.js +2 -0
  495. package/src/vendor/hyper-html-api-data.vendor.js +1 -1
  496. package/src/vendor/hyper-html-api-upgrade.vendor.js +5 -0
  497. package/src/vendor/hyper-morph-identity.vendor.js +2 -0
  498. package/src/vendor/hyper-morph-json.vendor.js +3 -0
  499. package/src/vendor/hyper-morph.vendor.js +6 -6
  500. package/src/vendor/hyper-undo.vendor.js +1 -1
  501. package/src/vendor/hypercms.vendor.js +169 -84
  502. package/src/vendor/marked.vendor.js +68 -0
  503. package/src/vendor/overtype.vendor.js +994 -0
  504. package/src/vendor/richclay.vendor.js +17 -17
  505. package/src/vendor/sap-core.vendor.js +5 -5
  506. package/src/vendor/sap-ownership.vendor.js +11 -7
@@ -0,0 +1 @@
1
+ var p={font:"font-family",headingFont:"font-family",text:"color",mutedText:"color",background:"background-color",surface:"background-color",border:"border-color",accent:"background-color",accentText:"color",danger:"background-color",dangerText:"color",success:"color",warning:"color",radius:"border-radius",shadow:"box-shadow",overlay:"background-color",spacing:"outline-offset",buttonHeight:"min-height"},S=["base","hover","active","focus","disabled"],j=["root","overlay","panel","header","title","body","footer","close","closeIcon","content","input","hint","actions","button","buttonLabel","well","code","copyButton"],O=["root","panel","header","title","text","icon","dot","actions","button","buttonLabel","close","well","list","row","location","valueLabel","value","before","after","mine","theirs","warning","previewRing"],x=new Set(["button","button.default","button.primary","button.quiet","button.danger","buttonLabel","input","text","mutedText","icon","well","close",...["dialog","people","crop"].flatMap(e=>j.map(o=>`${e}.${o}`)),"people.choices","people.choice","people.choiceLabel","crop.stage","crop.image","crop.dim","crop.selection","crop.handle","crop.handle.nw","crop.handle.ne","crop.handle.sw","crop.handle.se","toast.stack","toast.panel","toast.icon","toast.text","toast.close","toast.closeIcon",...["notice","conflict","section","staleHost"].flatMap(e=>O.map(o=>`${e}.${o}`))]),g=["page","light","dark"],h=Object.freeze({auto:!0,colorScheme:"page",tokens:{},parts:{}}),n=null,d=!1;function T(e,o){if(typeof o!="string")return!1;let r=o.trim();if(!r||r.length>500||/[;{}]|!\s*important/i.test(r))return!1;let s=globalThis.CSS?.supports;return typeof s=="function"?s.call(globalThis.CSS,e,r):!0}function i(e){return!!e&&typeof e=="object"&&Object.getPrototypeOf(e)===Object.prototype}function k(e){if(!i(e))throw new TypeError("clay.theme: pass an options object, false or null");let{auto:o=!0,colorScheme:r="page",tokens:s={},parts:w={},...E}=e,b=Object.keys(E);if(b.length)throw new TypeError(`clay.theme: unknown option "${b[0]}"`);if(typeof o!="boolean")throw new TypeError("clay.theme: auto must be true or false");if(!g.includes(r))throw new TypeError(`clay.theme: colorScheme must be one of ${g.join(", ")}`);if(!i(s))throw new TypeError("clay.theme: tokens must be an object");if(!i(w))throw new TypeError("clay.theme: parts must be an object");let y={};for(let[t,c]of Object.entries(s)){if(!(t in p))throw new TypeError(`clay.theme: unknown token "${t}"`);if(!T(p[t],c))throw new TypeError(`clay.theme: token "${t}" is not a valid ${p[t]} value`);y[t]=t==="spacing"&&c.trim()==="0"?"0px":c.trim()}let u={};for(let[t,c]of Object.entries(w)){if(!x.has(t))throw new TypeError(`clay.theme: unknown part "${t}"`);if(!i(c))throw new TypeError(`clay.theme: part "${t}" must map states to declarations`);u[t]={};for(let[a,m]of Object.entries(c)){if(!S.includes(a))throw new TypeError(`clay.theme: part "${t}" has unknown state "${a}"`);if(!i(m))throw new TypeError(`clay.theme: "${t}.${a}" must be an object of CSS declarations`);u[t][a]={};for(let[l,f]of Object.entries(m)){if(!/^-?[a-z][a-z-]*$/.test(l)||l.startsWith("--"))throw new TypeError(`clay.theme: "${l}" in ${t}.${a} is not a CSS property name`);if(!T(l,f))throw new TypeError(`clay.theme: "${l}: ${f}" in ${t}.${a} is not valid`);u[t][a][l]=f.trim()}}}return Object.freeze({auto:o,colorScheme:r,tokens:Object.freeze(y),parts:Object.freeze(u)})}function $(e){return e===!1?!1:JSON.parse(JSON.stringify(e))}function v(e){return z(),arguments.length===0||(e===!1?n=!1:e===null?n=h:n=k(e)),$(n)}function z(){if(d)return;d=!0;let e=typeof window<"u"?window.clayTheme:void 0;if(e===!1)n=!1;else if(e==null)n=h;else try{n=k(e)}catch(o){console.warn(`clayjs: ignoring window.clayTheme: ${o.message}`),n=h}if(typeof window<"u"){let o=window.clay=window.clay||{};o.theme=v}}function C(){return n}function L(){n=null,d=!1}export{p as a,S as b,x as c,T as d,v as e,z as f,C as g,L as h};
@@ -0,0 +1 @@
1
+ import{d as A,e as I}from"./c-AYVOREBE.js";import{b as M,i as b,m as T}from"./c-7O6AFR65.js";var B=15e3,P=12e4,K=15e3,V=4e3,W=5e3,U=50,y=new Set(["sent","acked"]),R=new Set(["done","error","cancelled"]),j="wire",i=new Map,k=new Set,f=null,g=null,D=0,h=null;function Q(){return typeof crypto<"u"&&typeof crypto.randomUUID=="function"?crypto.randomUUID():`page-${Date.now()}-${Math.random().toString(16).slice(2)}`}function H(e){return new URL(e,window.location.origin).href}function N(){let e=M();return typeof e=="string"&&e!==""?e:null}function w(e){return{id:e.id,type:e.type,state:e.state,helper:e.helper,text:e.text,result:e.result,error:e.error,errorCode:e.errorCode,errorDetails:e.errorDetails,errorSource:e.errorSource,startedAt:e.startedAt}}function m(e,t){let n=w(e);for(let r of k)try{r(n,t||null)}catch(s){console.error("clay.wire: a listener threw",s)}document.dispatchEvent(new CustomEvent("clay:wire-state",{detail:n}))}function Y(e,t){e.state!==t&&(e.state=t,m(e))}function v(e,t,n,{cancelFirst:r=!1,errorCode:s=null}={}){clearTimeout(e.timer),e.timer=setTimeout(()=>{e.timer=null,r&&z(e),l(e,"error",n,{errorCode:s,errorSource:"client"})},t)}function q(e){clearTimeout(e.timer),e.timer=null}function Z(){if(!(i.size<=U))for(let[e,t]of i){if(i.size<=U)break;!y.has(t.state)&&t.state!=="landing"&&i.delete(e)}}function ee(){if(g)return g;let e=N(),t=`/_/wire/subscribe?page-url=${encodeURIComponent(window.location.href)}`+(e?`&token=${encodeURIComponent(e)}`:"");return f=new EventSource(H(t)),f.onmessage=n=>{let r;try{r=JSON.parse(n.data)}catch{return}te(r)},f.onerror=()=>{},g=new Promise(n=>{let r=!1,s=()=>{r||(r=!0,n())};f.onopen=s,setTimeout(s,2e3)}),g}function L(){for(let e of i.values())if(y.has(e.state))return;f&&(f.close(),f=null,g=null)}function te(e){if(!e||typeof e.id!="string")return;let t=i.get(e.id);if(!(!t||!y.has(t.state)))switch(e.type){case"wire/ack":e.payload?.mode==="jsonl"&&Number.isFinite(e.payload.budgetMs)&&e.payload.budgetMs>0?(t.structured=!0,v(t,e.payload.budgetMs+K,"the helper did not finish within its execution budget",{cancelFirst:!0,errorCode:"helper_timeout"})):v(t,P,"the agent stopped responding"),Y(t,"acked");break;case"wire/status":t.structured||v(t,P,"the agent stopped responding"),t.text=typeof e.text=="string"?e.text:"",t.state="acked",ne(t,e),m(t,e);break;case"wire/done":t.result=Object.prototype.hasOwnProperty.call(e,"payload")?e.payload:null,t.document==="edit"?ae(t):l(t,"done",null);break;case"wire/error":re(t,e);break;default:break}}function ne(e,t){if(!e.onStatus||typeof t.text!="string")return;let n={text:t.text};t.payload&&typeof t.payload=="object"&&Object.prototype.hasOwnProperty.call(t.payload,"progress")&&(n.progress=t.payload.progress);try{e.onStatus(n)}catch(r){console.error("clay.wire: an onStatus listener threw",r)}}function re(e,t){let n=t.payload,r=n&&typeof n=="object"&&!Array.isArray(n)&&(n.source==="application"||n.source==="host")&&typeof n.code=="string"&&n.code,s=typeof t.text=="string"&&t.text?t.text:"the handler reported an error";if(!r){l(e,"error",s);return}let a=n.source==="host"&&n.code==="helper_cancelled"?"cancelled":"error";l(e,a,s,{errorCode:n.code,errorDetails:Object.prototype.hasOwnProperty.call(n,"details")?n.details:null,errorSource:n.source})}function oe(){h||(h=e=>{if(e.detail?.source!=="peer"){for(let t of i.values())if(t.state==="landing"){l(t,"done",null);return}}},document.addEventListener("clay:sync-applied",h))}function se(){D>0||!h||(document.removeEventListener("clay:sync-applied",h),h=null)}function ae(e){R.has(e.state)||e.state==="landing"||(q(e),e.state="landing",D++,oe(),e.landingTimer=setTimeout(()=>{l(e,"done",null)},V),m(e),L())}function l(e,t,n,r={}){if(R.has(e.state))return;let s=e.state==="landing";if(q(e),clearTimeout(e.landingTimer),e.landingTimer=null,e.abort?.abort(),s&&(D--,se()),e.error=n,Object.prototype.hasOwnProperty.call(r,"errorCode")&&(e.errorCode=r.errorCode),Object.prototype.hasOwnProperty.call(r,"errorDetails")&&(e.errorDetails=r.errorDetails),Object.prototype.hasOwnProperty.call(r,"errorSource")&&(e.errorSource=r.errorSource),e.state=t,e.signal&&e.signalHandler&&(e.signal.removeEventListener("abort",e.signalHandler),e.signalHandler=null),ue(e),m(e),L(),Z(),e.settle){let a=e.settle;e.settle=null,a(w(e))}}var C=0,$=null,E=null;function ie(){return E||(E=import("./core/save-WUCHTQBE.js")),E}async function le(e){if(!b||e.holdsSave)return;let t=await ie();e.state==="sent"&&($=t,e.holdsSave=!0,!(C++>0)&&t.suspendAutosave())}function ue(e){e.holdsSave&&(e.holdsSave=!1,!(--C>0)&&(C=0,$?.resumeAutosave()))}var c=null,de=()=>!c||c.admitted,ce=(e,t,n)=>Object.assign(new Error(`clay.wire: ${e}`),{code:t,pending:n});function O(e){return e.document!=="edit"||e.generation===T().generation&&de()?!0:(l(e,"error","the page changed mode before this request went out",{errorCode:"stale-document",errorSource:"client"}),!1)}function _e(){return{id:"clay:wire",order:900,prepare(e={}){let t={admitted:e.initial===!0};return c=t,{enable(){c===t&&(t.admitted=!0)},quiesce(){if(c!==t)return;t.admitted=!1;let n=[...i.values()].filter(r=>r.document==="edit"&&(r.holdsSave||y.has(r.state))).map(r=>r.id);if(n.length)throw ce("a request on this page has not settled","pending-input",n)},resume(){c===t&&(t.admitted=!0)},dispose(){c===t&&(c=null)}}}}}function fe(e,t){return new Promise(n=>{let r=!1,s=()=>{r||(r=!0,document.removeEventListener(e,s),n())};document.addEventListener(e,s),setTimeout(s,t)})}async function pe(){if(!b)return;let e=window.clay;if(!e||typeof e.save!="function")return;let{isSaveInProgress:t}=await import("./core/save-core-FJVHT5M3.js"),{savesHeld:n,saveHoldReason:r}=await import("./core/save-WUCHTQBE.js");if(n())throw new Error(r());let s=Date.now()+W;for(let a=0;a<3;a++){t()&&await fe("clay:save-saved",Math.max(0,s-Date.now()));let u=await e.save();if(u?.ok||u?.msgType==="skipped"&&!t())return;if(u?.msgType==="error"||u?.msgType==="unknown")throw new Error(`could not save this page first: ${u.msg||u.msgType}`);if(Date.now()>=s)break}throw new Error("could not save this page before sending")}async function F(e,t){let n={"Content-Type":"application/json","Page-URL":window.location.href},r=N();r&&(n["Save-Token"]=r);let s=await fetch(H("/_/wire/send"),{method:"POST",headers:n,body:JSON.stringify(e),signal:t}),a=null;try{a=await s.json()}catch{a=null}return{ok:s.ok,status:s.status,reply:a}}function he(e,t={}){let n=typeof t.id=="string"&&t.id?t.id:Q(),r=typeof t.type=="string"&&t.type?t.type:"wire/request",s=Object.prototype.hasOwnProperty.call(t,"helper"),a=s&&typeof t.helper=="string"&&t.helper?t.helper:null,u=t.document===void 0?a?"none":"edit":t.document;if(s&&!a)return _(n,r,null,"helper must be a nonempty string","invalid_helper");if(u!=="edit"&&u!=="none")return _(n,r,a,'document must be "edit" or "none"',"invalid_document");if(i.has(n))return _(n,r,a,"a request with this id is already on the wire","duplicate_request");let o={id:n,type:r,state:"sent",helper:a,document:u,structured:!1,onStatus:typeof t.onStatus=="function"?t.onStatus:null,text:"",result:null,error:null,errorCode:null,errorDetails:null,errorSource:null,startedAt:Date.now(),timer:null,landingTimer:null,abort:typeof AbortController=="function"?new AbortController:null,holdsSave:!1,generation:T().generation,settle:null,signal:t.signal&&typeof t.signal.addEventListener=="function"?t.signal:null,signalHandler:null};return o.done=new Promise(d=>{o.settle=d}),i.set(n,o),m(o),o.signal&&(o.signalHandler=()=>x(n),o.signal.addEventListener("abort",o.signalHandler,{once:!0}),o.signal.aborted&&o.signalHandler()),(async()=>{if(o.state!=="sent")return;if(o.helper){let X=await I(j);if(o.state!=="sent")return;if(!X){l(o,"error","this host does not support named wire helpers",{errorCode:"helper_protocol_unsupported",errorSource:"client"});return}}if(!O(o)||o.document==="edit"&&(await le(o),o.state!=="sent"||!O(o)||(await pe(),o.state!=="sent")||!O(o)))return;if(await ee(),o.state!=="sent"){L();return}v(o,B,"the agent never answered",o.helper?{cancelFirst:!0,errorCode:"ack_timeout"}:void 0);let d={type:o.type,id:o.id,text:t.text,payload:e};o.helper&&(d.helper=o.helper),(o.helper||t.document!==void 0)&&(d.document=o.document);let{ok:G,status:J,reply:S}=await F(d,o.abort?.signal);if(o.state!=="sent")return;if(!G){l(o,"error",`the wire refused this request (${J})`);return}let p=S&&S.refused;if(p&&typeof p.code=="string"&&p.code){l(o,"error",p.message||"the handler refused this request",{errorCode:p.code,errorSource:p.source==="application"?"application":"host",errorDetails:null});return}(!S||S.delivered===0)&&l(o,"error","no agent is attached to this file")})().catch(d=>{l(o,"error",d&&d.message?d.message:String(d))}),{id:n,get state(){return o.state},done:o.done,cancel:()=>x(n)}}function _(e,t,n,r,s){let a={id:e,type:t,state:"error",helper:n,text:"",result:null,error:r,errorCode:s,errorDetails:null,errorSource:"client",startedAt:Date.now()};return{id:e,get state(){return a.state},done:Promise.resolve(w(a)),cancel:()=>!1}}function x(e){let t=i.get(e);return!t||!y.has(t.state)?!1:(z(t),l(t,"cancelled",null),!0)}function z(e){F({type:"wire/cancel",id:e.id}).catch(()=>{})}function ye(e){let t=i.get(e);return t?w(t):void 0}function ge(){return[...i.values()].map(w)}function we(){for(let e of i.values())if(y.has(e.state))return!0;return!1}function me(e){return typeof e!="function"?()=>{}:(k.add(e),()=>k.delete(e))}async function Se(){let e=await A({fresh:!0});if(!e.extensions.includes(j))return[];let t=e.document?.helpers;return Array.isArray(t)?t.filter(n=>n&&typeof n.name=="string"&&["ready","denied","unavailable"].includes(n.state)).map(({name:n,state:r})=>({name:n,state:r})):[]}var ve={send:he,cancel:x,get:ye,list:ge,isBusy:we,on:me,helpers:Se},ke=ve;export{_e as a,ve as b,ke as c};
@@ -0,0 +1,9 @@
1
+ import{c as h}from"./c-4Q2XTQ2N.js";import{ra as d}from"./c-KY3VJGUA.js";import"./c-Y6USGTS5.js";import"./c-EDHUR4MX.js";import"./c-54RCDCBU.js";import"./c-TR6RMDQ7.js";import{m as p}from"./c-66O32MV3.js";import{a as s}from"./c-BYTKL6UX.js";import"./c-4L3BTFRK.js";import"./c-LRPUO2MX.js";import"./c-5V3MOVJT.js";import"./c-VHNSBD2M.js";var c=`
2
+ .page-tool-block { position: relative; min-height: 48px; border: 1px solid var(--page-rule); border-radius: 8px; padding: 12px; }
3
+ .page-tool-settings { position: absolute; top: 4px; inset-inline-end: 4px; border: 0; border-radius: 5px; background: var(--page-pop-bg); color: var(--page-ink-soft); font: 12px var(--page-font); padding: 5px 8px; cursor: pointer; opacity: 0; }
4
+ .page-tool-block:hover .page-tool-settings, .page-tool-block:focus-within .page-tool-settings { opacity: 1; }
5
+ .page-ai-panel { position: relative; z-index: 5; width: min(520px, 100%); box-sizing: border-box; margin: 12px auto; padding: 14px; border: 1px solid var(--page-pop-line); border-radius: 10px; background: var(--page-pop-bg); color: var(--page-pop-ink); box-shadow: var(--page-pop-shadow); }
6
+ .page-ai-panel textarea { width: 100%; min-height: 88px; box-sizing: border-box; padding: 8px; border: 1px solid var(--page-pop-line); border-radius: 6px; background: var(--page-pop-bg); color: inherit; font: inherit; resize: vertical; }
7
+ .page-ai-actions { display: flex; gap: 8px; margin-top: 8px; }
8
+ .page-ai-actions button { border: 1px solid var(--page-pop-line); border-radius: 6px; background: var(--page-pop-bg); color: inherit; font: inherit; padding: 5px 10px; cursor: pointer; }
9
+ .page-ai-status, [data-tool-note], [data-tool-error] { color: var(--page-danger); font-size: 0.85em; }`,l=class{constructor(t,e,o,{host:n,revise:r=null}){this.node=t,this.view=e,this.getPos=o,this.host=n,this.revise=r,this.showingFallback=!1;let i=e.dom.ownerDocument;this.dom=i.createElement("section"),this.dom.className="page-tool-block",this.dom.dataset.type="tool",this.dom.dataset.id=t.attrs.id??"",this.dom.contentEditable="false",this.content=i.createElement("div"),this.content.className="page-tool-content",this.menu=i.createElement("button"),this.menu.type="button",this.menu.className="page-tool-settings",this.menu.textContent="Tool options",this.menu.setAttribute("aria-label","Tool options"),this.menu.addEventListener("click",()=>this.openMenu()),this.dom.append(this.content,this.menu),this.mount()}mount(){this.instance?.dispose(),this.instance=null,this.showingFallback?this.content.innerHTML=this.node.attrs.artifact?.fallbackHtml??"":this.instance=this.host.mount(this.content,{id:this.node.attrs.id,artifact:this.node.attrs.artifact,rev:this.node.attrs.rev,seed:this.node.attrs.state})}openMenu(){let t=[];this.revise&&t.push({label:"Revise\u2026",run:()=>this.revise(this.node.attrs.id,this.node.attrs.rev)}),t.push({label:this.showingFallback?"Show tool":"Show fallback",run:()=>{this.showingFallback=!this.showingFallback,this.mount()}}),t.push({label:"Delete",run:()=>{let e=this.getPos();e==null||this.view.state.doc.nodeAt(e)?.type!==p.nodes.tool||this.view.dispatch(this.view.state.tr.delete(e,e+this.node.nodeSize))}}),d(this.view,this.menu,t)}update(t){if(t.type!==p.nodes.tool||t.attrs.id!==this.node.attrs.id)return!1;let e=t.attrs.rev!==this.node.attrs.rev||JSON.stringify(t.attrs.artifact)!==JSON.stringify(this.node.attrs.artifact);return this.node=t,e&&this.mount(),!0}stopEvent(t){return this.dom.contains(t.target)}ignoreMutation(){return!0}destroy(){this.instance?.dispose(),this.instance=null}};function x({toolHost:a=null,revise:t=null,view:e=null}={}){let o=a??h({mode:"edit"});return e&&s.set(e,o),{id:"tool",nodeViews:{tool:(n,r,i)=>new l(n,r,i,{host:o,revise:t})},css:c,dispose(){e&&s.get(e)===o&&s.delete(e),a||o.dispose()}}}export{c as TOOL_CSS,l as ToolView,x as createFeature};
@@ -0,0 +1 @@
1
+ import{b as u}from"./c-PZ4XEPUP.js";import{w as p,x as i}from"./c-35NBGMZB.js";function y(e=new Date){let o=n=>String(n).padStart(2,"0");return`${e.getFullYear()}${o(e.getMonth()+1)}${o(e.getDate())}-${o(e.getHours())}${o(e.getMinutes())}${o(e.getSeconds())}`}function m(e=location.pathname){let o=e.split("/").filter(Boolean).pop();if(!o)return e.endsWith("/")||e===""?"index":"page";let n=o;try{n=decodeURIComponent(o)}catch{}return n.replace(/\.(html?|htmlclay)$/i,"")||"page"}function f(e,o){let t=`<script type="application/json" id="clay-lost-edits" clay="no-save">${JSON.stringify(o).replace(/</g,"\\u003c")}<\/script>`,a=e.lastIndexOf("</body>");return a>=0?e.slice(0,a)+t+e.slice(a):e+t}function O(e,{refused:o=!1}={}){let n=window.clay?.conflicts||null,t=[],a=new Set;for(let r of e){let l=n?.recoveryOf(r.id);l&&!a.has(l.id)&&(a.add(l.id),t.push(l))}t.sort((r,l)=>(r.ticket||0)-(l.ticket||0));let d=r=>p(r.recoveryRoot??r.root,{prepared:r.domain==="save"}),c,s;o||!t.length?(c=i(),s=t):(c=d(t[t.length-1]),s=t.slice(0,-1));let g=e.map(r=>{if(r.kind==="apply-incomplete")return{id:r.id,kind:"apply-incomplete",name:"Sync update that did not finish",error:r.error??null};let{id:l,name:w,kind:b,yours:$,now:R,sentence:S}=u(r);return{id:l,name:w,kind:b,yours:$,now:R,sentence:S}}),v={format:"clay-lost-edits",version:1,savedAt:new Date().toISOString(),page:location.href,refused:!!o,edits:g,earlierPages:s.map(r=>({applyId:r.id,source:r.source,html:d(r)}))};return{html:f(c,v),name:`${m()}-${o?"my-version":"my-copy"}-${y()}.html`}}function h({html:e,name:o}){let n=null;try{n=URL.createObjectURL(new Blob([e],{type:"text/html"}));let t=document.createElement("a");return t.setAttribute("clay","no-save no-watch no-snapshot"),t.href=n,t.download=o,t.style.setProperty("display","none","important"),document.body.appendChild(t),t.click(),t.remove(),setTimeout(()=>URL.revokeObjectURL(n),4e4),!0}catch(t){return console.error("clayjs: could not build the download",t),n&&URL.revokeObjectURL(n),!1}}function x({html:e=null,edits:o=[]}={}){try{let n=typeof e=="string"?e:i(),t={format:"clay-lost-edits",version:1,savedAt:new Date().toISOString(),page:location.href,refused:!1,edits:Array.isArray(o)?o:[],earlierPages:[]};return h({html:f(n,t),name:`${m()}-my-copy-${y()}.html`})}catch(n){return console.error("clayjs: could not build the download",n),!1}}function U(e,{refused:o=!1}={}){try{let{html:n,name:t}=O(e,{refused:o});return h({html:n,name:t})}catch(n){return console.error("clayjs: could not build the download",n),!1}}export{m as a,h as b,x as c,U as d};
@@ -0,0 +1 @@
1
+ function t(){let e=getComputedStyle(document.documentElement).colorScheme;return e==="light"||e==="dark"?e:"light dark"}export{t as a};
@@ -0,0 +1 @@
1
+ var o=null,n=()=>o??=import("./c-GJAEGGXY.js"),s=t=>(...i)=>{n().then(e=>(t?e[t]:e.default)(...i))},l=s(null),r=s("toastPersistent"),a=(...t)=>{o&&s("dismissPersistent")(...t)};export{l as a,r as b,a as c};
@@ -0,0 +1,2 @@
1
+ import{a as S,d as k}from"./c-LRPUO2MX.js";var D=24576,I=8192,v=["title","html","css","javascript","fallbackHtml","summary"],$=e=>new TextEncoder().encode(JSON.stringify(e)).length,J=0,g=class extends Error{constructor(o){super(o),this.name="ToolStateError",this.code=o}};function H(e){return!e||typeof e!="object"||Array.isArray(e)||Object.keys(e).length!==v.length||!v.every(o=>Object.hasOwn(e,o)&&typeof e[o]=="string")?{ok:!1,code:"invalid-artifact"}:$(e)<=D?{ok:!0}:{ok:!1,code:"artifact-too-large"}}function C(e){try{let o=S(e);return $(o)<=I?{ok:!0}:{ok:!1,code:"state-too-large"}}catch{return{ok:!1,code:"invalid-state"}}}function x(e){if(!Array.isArray(e)||e.some(o=>typeof o!="string"&&!(Number.isSafeInteger(o)&&o>=0)))throw new TypeError("tool state path must be an array of strings or non-negative integers");return e.slice()}function E(e,o){try{let c={state:e===void 0?{}:S(e)};k(c,{...o,path:["state",...o.path]});let a=C(c.state);if(!a.ok)throw new g(a.code)}catch(c){throw c instanceof g?c:new g("invalid-state")}}function F(e,o,c){let a=[o,c];return Object.freeze({get data(){return e.data?.[o]?.[c]},set(l,i){let r=x(l);E(e.data?.[o]?.[c],{op:"set",path:r,value:i}),e.set([...a,...r],i)},delete(l){e.delete([...a,...x(l)])},add(l,i=1){let r=x(l);if(!r.length||typeof i!="number"||!Number.isFinite(i))throw new g("invalid-state");E(e.data?.[o]?.[c],{op:"add",path:r,n:i}),e.add([...a,...r],i)}})}function z(e){let o=S(e??{}),c=new Set,a=()=>{for(let i of[...c])i()},l=i=>{let r={state:o};k(r,{...i,path:["state",...i.path]});let d=C(r.state);if(!d.ok)throw new g(d.code);o=r.state,a()};return Object.freeze({get data(){return S(o)},set(i,r){l({op:"set",path:x(i),value:r})},delete(i){l({op:"del",path:x(i)})},add(i,r=1){let d=x(i);if(!d.length||typeof r!="number"||!Number.isFinite(r))throw new g("invalid-state");l({op:"add",path:d,n:r})},on(i,r){if(i!=="change"||typeof r!="function")throw new TypeError("reader state supports on(change, fn)");return c.add(r),()=>c.delete(r)}})}function q(e){let o=[],c=0,a=null,l=0;for(let i=0;i<e.length;i++){let r=e[i];a?r===a&&e[i-1]!=="\\"&&(a=null):r==='"'||r==="'"?a=r:r==="("||r==="["?l++:r===")"||r==="]"?l--:r===","&&l===0&&(o.push(e.slice(c,i).trim()),c=i+1)}return o.push(e.slice(c).trim()),o.filter(Boolean)}function L(e,o){let c="",a=0;for(;a<e.length;){let l=e.indexOf("{",a);if(l<0){c+=e.slice(a);break}let i=e.slice(a,l).trim(),r=1,d=l+1,u=null;for(;d<e.length&&r;d++){let w=e[d];u?w===u&&e[d-1]!=="\\"&&(u=null):w==='"'||w==="'"?u=w:w==="{"?r++:w==="}"&&r--}let y=e.slice(l+1,d-1);/^@(?:media|supports|container)\b/i.test(i)?c+=`${i}{${L(y,o)}}`:i.startsWith("@")?c+=`${i}{${y}}`:c+=`${q(i).map(w=>`${o} ${w}`).join(", ")}{${y}}`,a=d}return c}function M({root:e,artifact:o,mode:c,state:a,tables:l=()=>[],onError:i=()=>{},setTimer:r=setTimeout,clearTimer:d=clearTimeout}){let u={change:new Set,tables:new Set},y=new Set,w,T=!1,j=()=>{if(T)return;T=!0;for(let f of y)d(f);y.clear();for(let f of Object.values(u))f.clear();let s=w;w=null,typeof s=="function"&&s()},t=s=>{if(!T)for(let f of[...u[s]])f()},m=()=>Object.freeze(S(l()).map(s=>N(s))),p=Object.freeze({root:e,mode:c,state:a,on(s,f){if(!Object.hasOwn(u,s)||typeof f!="function")throw new TypeError("unknown tool event");return u[s].add(f),()=>u[s].delete(f)},table(s){return m().find(f=>f.id===s)??null},tables:m,schedule(s,f){if(T)return null;let n=r(()=>{y.delete(n),T||s()},f);return y.add(n),n}});try{e.innerHTML=o.html;let s=e.ownerDocument.createElement("style"),f=String(++J),n=`[data-tool-scope="${f}"]`;e.setAttribute("data-tool-scope",f),s.textContent=L(o.css,n),e.prepend(s);let A=`${o.javascript}
2
+ ;return typeof mount === "function" ? mount : undefined;`,h=new Function("tool",A)(p),b=typeof h=="function"?h:h?.mount;if(typeof b!="function")throw new TypeError("tool script must define mount(tool)");w=b(p)}catch(s){try{j()}catch(f){i(f)}i(s),e.innerHTML=`${o.fallbackHtml}<p data-tool-error>Tool could not start</p>`}return{notifyState:()=>t("change"),notifyTables:()=>t("tables"),dispose:j}}function N(e){if(e&&typeof e=="object"){for(let o of Object.values(e))N(o);Object.freeze(e)}return e}function K({store:e=null,mode:o,tables:c=()=>[]}){let a=new Set,l=new Set,i=!1,r=null,d=null,u=(t,m,p)=>{let s=`${t}:${m}`;l.has(s)||(l.add(s),console.warn(`clayjs: tool ${t} revision ${m} failed`,p))},y=(t,m)=>{u(t.id,t.rev,m),t.readerOff?.(),t.readerOff=null;try{t.runtime?.dispose()}catch(s){u(t.id,t.rev,s)}t.runtime=null,t.root.innerHTML=t.artifact?.fallbackHtml??"";let p=t.root.ownerDocument.createElement("p");p.setAttribute("data-tool-error",""),p.textContent="Tool could not start",t.root.append(p)},w=()=>{for(let t of a){if(t.disposed||o==="view")continue;let m=e?.data?.[t.id]?.[t.rev],p=JSON.stringify(m);if(p!==t.signature){t.signature=p;try{t.runtime&&m!==void 0?t.runtime.notifyState():t.render()}catch(s){y(t,s)}}}},T=e?.on?.("change",w)??(()=>{});return{mount(t,{id:m,artifact:p,rev:s,seed:f={}}){if(i)throw new Error("tool host is disposed");let n={root:t,id:m,artifact:p,rev:s,seed:f,runtime:null,readerOff:null,disposed:!1,signature:void 0},A=h=>{let b=t.ownerDocument.createElement("p");b.setAttribute("data-tool-note",""),b.textContent=h,t.append(b)};n.render=()=>{n.readerOff?.(),n.readerOff=null;try{n.runtime?.dispose()}catch(O){u(n.id,n.rev,O)}if(n.runtime=null,t.removeAttribute("data-tool-scope"),H(n.artifact).ok===!1){t.textContent="Tool unavailable",u(n.id,n.rev,new Error("invalid artifact"));return}let h=e?.data?.[n.id]?.[n.rev];if(n.signature=JSON.stringify(h),o==="edit"&&e&&h===void 0){t.innerHTML=n.artifact.fallbackHtml,A("Waiting for this tool's state\u2026");return}let b=o==="edit"&&e?F(e,n.id,n.rev):z(h??n.seed??{});n.runtime=M({root:t,artifact:n.artifact,mode:o,state:b,tables:c,onError:O=>u(n.id,n.rev,O)}),n.readerOff=b.on?.("change",()=>{try{n.runtime?.notifyState()}catch(O){y(n,O)}})??null,o==="edit"&&!e&&A("This document can't save tool state")};try{n.render()}catch(h){y(n,h)}return a.add(n),{update({artifact:h,rev:b}){if(!n.disposed&&!(b===n.rev&&h===n.artifact)){n.artifact=h,n.rev=b;try{n.render()}catch(O){y(n,O)}}},dispose(){if(!n.disposed){n.disposed=!0,a.delete(n),n.readerOff?.();try{n.runtime?.dispose()}catch(h){u(n.id,n.rev,h)}n.runtime=null}}}},tablesChanged(){if(i||r!==null||!a.size)return;let t=[...a][0]?.root.ownerDocument.defaultView??globalThis;d=t,r=(t.requestAnimationFrame?.bind(t)??(p=>t.setTimeout(p,0)))(()=>{r=null;for(let p of a)try{p.runtime?.notifyTables()}catch(s){y(p,s)}})},dispose(){if(!i){i=!0,T(),r!==null&&(d.cancelAnimationFrame?d.cancelAnimationFrame(r):d.clearTimeout(r),r=null);for(let t of[...a]){t.disposed=!0,t.readerOff?.();try{t.runtime?.dispose()}catch(m){u(t.id,t.rev,m)}}a.clear()}}}}export{H as a,C as b,K as c};
@@ -0,0 +1 @@
1
+ function c(t){if(typeof t!="string")return null;let n=t.trim().replace(/^v/,"");return/^\d+(\.\d+)*$/.test(n)?n.split(".").map(Number):null}function a(t,n){let r=c(t),o=c(n);if(!r||!o)return!1;let l=Math.max(r.length,o.length);for(let e=0;e<l;e++){let s=r[e]||0,i=o[e]||0;if(s!==i)return s>i}return!1}export{a};
@@ -0,0 +1 @@
1
+ import{j as X}from"./c-7O6AFR65.js";var pe=500,he=5e3,L="text",ke=64,ge=1024*1024,we=256,me=1024*1024;function be(){let a=globalThis.crypto?.randomUUID?.();return a||`wr-${Date.now().toString(36)}-${Math.random().toString(36).slice(2)}`}function D(a){return Array.isArray(a)?a.join("\0"):String(a)}function I(a,u){return Array.isArray(a)&&Array.isArray(u)?a.length===u.length&&a.every((g,B)=>g===u[B]):a===u}function ve(a){return globalThis.crypto?.randomUUID?.()??`rec-${a}-${Math.random().toString(36).slice(2)}`}function M(a){return a instanceof Uint8Array?new Uint8Array(a):a instanceof ArrayBuffer?a.slice(0):a}function ye(a,u){if(a===u)return!0;if(!a||!u||typeof a!="object"||typeof u!="object")return!1;if(a instanceof Uint8Array||u instanceof Uint8Array){if(!(a instanceof Uint8Array)||!(u instanceof Uint8Array)||a.length!==u.length)return!1;for(let h=0;h<a.length;h++)if(a[h]!==u[h])return!1;return!0}let g=Object.keys(u),B=Object.keys(a);if(g.length!==B.length)return!1;for(let h=0;h<g.length;h++)if(g[h]!==B[h]||u[g[h]]!==a[B[h]])return!1;return!0}var T=new Set;function Se({captureId:a,html:u}={}){if(T.size)for(let g of T)g.capture(a,u)}function Ue({captureId:a,ok:u=!1,etag:g=null}={}){if(T.size)for(let B of T)B.settle(a,u===!0,g)}function Ae({mode:a=X==="draft"?"draft":"edit",writerId:u=be(),indexedDB:g,maxScopeBytes:B,maxDbBytes:h,now:E}={}){let S=new Map,x=new Set,O=new Map,Q=null,_=null,p=null,m={ok:!0,code:null,durable:!1};function C(){return{ok:m.ok,code:m.code,durable:m.durable,usage:p?.status().usage??null,identityMismatch:_?_.check().ok===!1:!1}}function w(e){let n={channel:e.channel,status:C(),count:e.pending.size,revisions:[...e.pending.values()].map(({id:t,revision:o})=>({id:t,revision:o}))};for(let t of e.listeners)try{t(n)}catch{}for(let t of x)try{t(n)}catch{}}function b(e){if(e&&e.ok){let t=m.ok;if(m={ok:!0,code:null,durable:!0},!t)for(let o of S.values())w(o);return}let n=e?.code||"error";if(m.ok||m.code!==n){m={ok:!1,code:n,durable:!1};for(let t of S.values())w(t);return}m={ok:!1,code:n,durable:!1}}async function H(){let[{createIdentity:e},{createStore:n}]=await Promise.all([import("./c-FA4DZVTC.js"),import("./c-QNKREOL6.js")]);_=e({mode:a,writerId:u}),p=n({scope:_.scope,indexedDB:g,maxScopeBytes:B,maxDbBytes:h,now:E});let t=await p.open();return t.ok?m={ok:!0,code:null,durable:!1}:b(t),t}function v(){return Q||(Q=H().catch(e=>({ok:!1,code:e?.name==="DataCloneError"?"uncloneable":"unavailable"}))),Q}function N(e,n){let t;try{t=e.readSaved(n)}catch{return[]}if(!t||typeof t.get!="function")return[];let o=[];for(let i of e.held.values())i.kind===L&&t.has(i.key)&&ye(t.get(i.key),i.payload)&&o.push({id:i.id,revision:i.revision});return o}function Y(e,n){if(e==null||typeof n!="string")return;let t=new Map;for(let o of S.values()){if(typeof o.readSaved!="function"||!o.held.size)continue;let i=N(o,n);i.length&&t.set(o.channel,i)}t.size&&O.set(e,t)}async function F(e,n,t,o){if((await v()).ok){for(let{id:r,revision:s}of n){let c=await p.acknowledge(r,{revision:s,etag:t,captureId:o});b(c);let l=D(r),f=e.held.get(l);f&&f.revision<=s&&e.held.delete(l)}w(e)}}function K(e,n,t){let o=O.get(e);if(!o||(O.delete(e),!n))return Promise.resolve();let i=[];for(let[r,s]of o){let c=S.get(r);if(!c)continue;let l=()=>F(c,s,t,e);c.writing=c.writing.then(l,l),i.push(c.writing)}return Promise.all(i).then(()=>{},()=>{})}function V(e){let n=E?.()??Date.now();e.burstStart||(e.burstStart=n);let t=Math.max(0,Math.min(pe,e.burstStart+he-n));e.timer&&clearTimeout(e.timer),e.timer=setTimeout(()=>{e.timer=null,e.burstStart=0,q(e).catch(()=>{})},t)}function W(e,{key:n,kind:t=L,baseEtag:o=null,base:i=null,payload:r=null,lineage:s=null}={}){let c=n==null?"":String(n);if(!c)throw new TypeError("clay.recovery.stage needs a key");let l=E?.()??Date.now(),f=++e.revision,k=t===L?[e.channel,c,u]:globalThis.crypto?.randomUUID?.()??`rec-${f}-${Math.random().toString(36).slice(2)}`,y=D(k),A=e.pending.get(y),d={id:k,kind:t,channel:e.channel,version:e.version,key:c,writerId:u,revision:f,status:"journaled",baseEtag:o,base:M(i),payload:M(r),lineage:s,created:A?.created??l,updated:l};return e.pending.set(y,d),e.held.set(y,{id:k,kind:t,key:c,revision:f,payload:d.payload}),V(e),w(e),{id:k,revision:f}}async function G(e){let n=[...e.pending.values()];if(!n.length)return{ok:!0,stored:[]};let t=await v();if(!t.ok)return{ok:!1,code:t.code};let o=[],i=null;for(let r of n){let s=await p.put(r);if(s.ok){let c=D(r.id);if(e.pending.get(c)===r&&e.pending.delete(c),s.skipped){let l=e.held.get(c);l&&l.revision===r.revision&&e.held.delete(c)}else o.push({id:r.id,revision:r.revision})}else i=i||s.code||"error"}return b(i?{ok:!1,code:i}:{ok:!0}),w(e),i?{ok:!1,code:i}:{ok:!0,stored:o}}function J(e,n){return[e.channel,n,u]}function Z(e,n,t,o,i){return{id:n,kind:"binary",channel:e.channel,version:e.version,writerId:u,revision:0,context:t,payload:{base:i??new Uint8Array(0),dependencies:new Uint8Array(0),owned:new Uint8Array(0)},acknowledged:null,created:o,updated:o}}function $(e,n,t){return e.batchQueue.size>=we||e.queuedBytes+n.payload.byteLength>me?!1:(e.batchQueue.set(D(n.id),{record:n,capsule:t}),e.queuedBytes+=n.payload.byteLength,!0)}async function ee(e){if(!e.batchQueue.size)return{ok:!0};let n=await v();if(!n.ok)return{ok:!1,code:n.code};let t=[],o=null;for(let[i,r]of[...e.batchQueue.entries()]){let s=await p.appendBinary(r.record,r.capsule);if(!s.ok){o=o||s.code||"error";continue}e.batchQueue.delete(i),e.queuedBytes=Math.max(0,e.queuedBytes-r.record.payload.byteLength),!s.skipped&&(e.batches+=1,e.batchBytes+=r.record.payload.byteLength,t.push({id:r.record.id,revision:r.record.revision}))}return b(o?{ok:!1,code:o}:{ok:!0}),w(e),o?{ok:!1,code:o}:{ok:!0,stored:t}}async function ne(e,{key:n,context:t=null,update:o,origin:i="local",base:r=null}={}){let s=n==null?"":String(n);if(!s)throw new TypeError("clay.recovery.append needs a key");if(!(o instanceof Uint8Array)&&!(o instanceof ArrayBuffer))throw new TypeError("clay.recovery.append needs binary bytes");let c=E?.()??Date.now(),l=++e.revision,f=J(e,s),k={id:ve(l),kind:"binary-batch",channel:e.channel,version:e.version,writerId:u,revision:l,capsuleId:f,origin:i==="dependency"?"dependency":"local",context:t,payload:M(o),updated:c},y=Z(e,f,t,c,r==null?null:M(r)),A=await v();if(!A.ok)return $(e,k,y)?{ok:!1,code:A.code}:{ok:!1,code:"over-budget"};let d=await p.appendBinary(k,y);return b(d),w(e),d.ok?(e.batches+=1,e.batchBytes+=k.payload.byteLength,d.skipped?{ok:!0,id:k.id,revision:l,skipped:!0}:(re(e),{ok:!0,id:k.id,revision:l})):$(e,k,y)?{ok:!1,code:d.code}:{ok:!1,code:d.code}}async function te(e,{records:n=[],authority:t=null,epoch:o=null,sequence:i=null}={}){let r=(n||[]).filter(l=>l&&l.id!==void 0&&typeof l.revision=="number");if(!r.length)return{ok:!0,acknowledged:0};let s=await v();if(!s.ok)return{ok:!1,code:s.code};let c=await p.acknowledgeBinary({channel:e.channel,version:e.version,writerId:u,records:r,authority:t,epoch:o,sequence:i});return b(c),w(e),c.ok?{ok:!0,acknowledged:c.acknowledged}:{ok:!1,code:c.code}}async function oe(e,{records:n=[],proof:t=null}={}){let o=(n||[]).filter(l=>l&&l.id!==void 0&&typeof l.revision=="number");if(!o.length)return{ok:!0,retired:[]};if(typeof e.validateCheckpoint!="function")return{ok:!0,retired:[]};let i;try{i=await e.validateCheckpoint(t,o.map(({id:l,revision:f})=>({id:l,revision:f})))}catch{return{ok:!1,code:"invalid",retired:[]}}if(!Array.isArray(i))return{ok:!1,code:"invalid",retired:[]};let r=o.filter(l=>i.some(f=>f&&f.revision===l.revision&&I(f.id,l.id)));if(!r.length)return{ok:!0,retired:[]};let s=await v();if(!s.ok)return{ok:!1,code:s.code,retired:[]};let c=await p.checkpointBinary({channel:e.channel,version:e.version,writerId:u,records:r});return b(c),w(e),c.ok?{ok:!0,retired:c.retired}:{ok:!1,code:c.code,retired:[]}}function P(e){return e&&typeof e.byteLength=="number"&&e.byteLength>0?e:null}async function ie(e,n){for(let t=0;t<3;t++){let o=null,i=[];for(let{id:d,revision:fe}of n){let z=await p.get(d);if(!z.ok||!z.record)continue;let U=z.record;U.revision!==fe||U.kind!=="binary-batch"||!U.capsuleId||(o||(o=U.capsuleId),I(o,U.capsuleId)&&i.push(U))}if(!o||!i.length)return{ok:!0,retired:[]};let r=await p.get(o);if(!r.ok||!r.record)return{ok:!1,code:"missing"};let s=r.record,c=[P(s.payload?.owned),...i.filter(d=>d.origin!=="dependency").map(d=>P(d.payload))].filter(Boolean),l=[P(s.payload?.dependencies),...i.filter(d=>d.origin==="dependency").map(d=>P(d.payload))].filter(Boolean),f=c.length?M(await e.merge(c)):new Uint8Array(0),k=l.length?M(await e.merge(l)):new Uint8Array(0),y=Math.max(e.revision,s.revision)+1;e.revision=y;let A=await p.compactBinary({channel:e.channel,version:e.version,capsuleId:o,expectedRevision:s.revision,replacement:{revision:y,updated:E?.()??Date.now(),payload:{base:s.payload?.base??new Uint8Array(0),dependencies:k,owned:f}},inputs:i.map(d=>({id:d.id,revision:d.revision}))});if(A.ok)return e.batches=0,e.batchBytes=0,{ok:!0,retired:A.retired,revision:A.revision};if(A.code!=="stale")return{ok:!1,code:A.code}}return{ok:!1,code:"stale"}}async function j(e,{records:n=[]}={}){if(typeof e.merge!="function")return{ok:!1,code:"invalid",retired:[]};let t=(n||[]).filter(r=>r&&r.id!==void 0&&typeof r.revision=="number");if(!t.length)return{ok:!0,retired:[]};let o=await v();if(!o.ok)return{ok:!1,code:o.code,retired:[]};let i=await ie(e,t);return b(i),w(e),i.ok?{ok:!0,retired:i.retired}:{ok:!1,code:i.code,retired:[]}}function re(e){typeof e.merge!="function"||e.compaction||e.batches<ke&&e.batchBytes<ge||(e.compaction=(async()=>{let n=await p.list();if(!n.ok)return;let t=n.records.filter(o=>o.channel===e.channel&&o.kind==="binary-batch"&&o.writerId===u);t.length&&await j(e,{records:t.map(({id:o,revision:i})=>({id:o,revision:i}))})})().catch(()=>{}).finally(()=>{e.compaction=null}))}function q(e){e.timer&&clearTimeout(e.timer),e.timer=null,e.burstStart=0;let n=async()=>{let t=await ee(e);return t.ok?G(e):t};return e.writing=e.writing.then(n,n),e.writing}async function ce(e){let n=await v();if(!n.ok)return{ok:!1,code:n.code,records:[],status:C()};let t=await p.list();return b(t),t.ok?{ok:!0,records:t.records.filter(i=>i.channel===e.channel).map(i=>({...i,supported:i.version===e.version})),status:C()}:{ok:!1,code:t.code,records:[],status:C()}}async function ae(e,n,{revision:t}={}){let o=await v();if(!o.ok)return{ok:!1,code:o.code};e.timer&&clearTimeout(e.timer),e.timer=null,e.burstStart=0,await e.writing;let i=D(n),r=e.pending.get(i);r&&(t===void 0||r.revision===t)&&e.pending.delete(i);let s=e.held.get(i);s&&(t===void 0||s.revision===t)&&e.held.delete(i);let c=await p.remove(n,{revision:t});return b(c),w(e),c.ok?{ok:!0,id:n,revision:t}:{ok:!1,code:c.code}}function se(e,n){return e.listeners.add(n),()=>e.listeners.delete(n)}function le(e){e.timer&&clearTimeout(e.timer),e.timer=null,e.burstStart=0;let n=q(e).catch(()=>({ok:!1,code:"aborted"}));return e.listeners.clear(),S.delete(e.channel),S.size||T.delete(R),n}let R={capture:Y,settle:K};function ue(e){return{channel:e.channel,version:e.version,stage:n=>W(e,n),flush:()=>q(e),list:()=>ce(e),dismiss:(n,t)=>ae(e,n,t),append:n=>ne(e,n),markAcknowledged:n=>te(e,n),checkpoint:n=>oe(e,n),compact:n=>j(e,n),subscribe:n=>se(e,n),dispose:()=>le(e)}}function de({channel:e,version:n=1,readSaved:t=null,describe:o=null,validateCheckpoint:i=null,merge:r=null}={}){if(!e||typeof e!="string")throw new TypeError("clay.recovery.register needs a channel name");let s=S.get(e);if(s)throw new Error(`clay.recovery: the "${e}" channel is already registered at version ${s.version}`);let c={channel:e,version:n,readSaved:t,describe:o,validateCheckpoint:i,merge:r,revision:0,pending:new Map,held:new Map,batchQueue:new Map,queuedBytes:0,batches:0,batchBytes:0,compaction:null,timer:null,burstStart:0,writing:Promise.resolve(),listeners:new Set};return S.set(e,c),T.add(R),v(),ue(c)}return{register:de,status:C,subscribe(e){return x.add(e),()=>x.delete(e)}}}var Me=Ae();export{Se as a,Ue as b,Ae as c,Me as d};
@@ -0,0 +1 @@
1
+ import{A as b,e as L,y as h}from"./c-TR6RMDQ7.js";import{E as x,b as z,d as T,l as B,m as P}from"./c-66O32MV3.js";var C=new WeakMap;var{Plugin:Y,PluginKey:H}=z,{Decoration:_,DecorationSet:K}=T,E=P.nodes,f=new H("page-media"),A=1.5*1024*1024,ce=new Set(["timeout","network","error","bad-response"]),m=new WeakMap,M=(e,o)=>{let a=e.resolve(Math.max(0,Math.min(o,e.content.size)));return a.depth===0?a.pos:a.after(1)};function D(e,o){let a=L(e.doc),r=a[Math.min(o,a.length-1)],t=r.node.type===E.paragraph&&r.node.content.size===0;return{hostId:r.node.attrs.id,at:t?r.at:a[r.subEnd].end,parent:r.node.attrs.parent??null,replaceId:t?r.node.attrs.id:null}}var W={init:()=>({items:[],placed:{},picker:null}),apply(e,o){let{items:a,placed:r,picker:t}=o;if(e.docChanged&&(a=a.map(n=>({...n,pos:M(e.doc,e.mapping.map(n.pos,-1))}))),t&&e.docChanged&&(t={...t,place:{...t.place,at:M(e.doc,e.mapping.map(t.place.at,-1))}},t.remove)){let n=e.mapping.map(t.remove.from,1),c=e.mapping.map(t.remove.to,-1);t=n<=c&&e.doc.textBetween(n,c)===t.remove.text?{...t,remove:{...t.remove,from:n,to:c}}:null}let s=e.getMeta(f);if(s?.picker!==void 0&&(t=s.picker),s?.add&&(a=[...a,...s.add]),s?.update&&(a=a.map(n=>n.id===s.update.id?{...n,...s.update}:n)),s?.placed){let{id:n,at:c,size:d,blockId:p}=s.placed,l=o.items.find(i=>i.id===n);a=a.filter(i=>i.id!==n).map(i=>l&&i.pos===c&&i.group===l.group&&i.order>l.order?{...i,pos:i.pos+d}:i),l&&(r={...r,[l.group]:[...r[l.group]||[],p]})}s?.remove&&(a=a.filter(n=>n.id!==s.remove));for(let n of Object.keys(r))a.some(c=>c.group===n)||(r={...r},delete r[n]);return{items:a,placed:r,picker:t}}};function O(e,o,a){if(!o)return;let r=null,t=null;e.doc.forEach((s,n)=>{s.attrs.id===o&&r&&a.includes(r.attrs.id)&&(t={n:s,off:n}),r=s}),t&&t.n.type===E.paragraph&&t.n.content.size===0&&e.delete(t.off,t.off+t.n.nodeSize)}function j(e,o,a){let{items:r,placed:t}=f.getState(e),s=r.find(l=>l.id===o);if(!s)return null;let n=M(e.doc,s.pos),c=x(),d=(s.kind==="image"?E.image:E.file).create({...a,id:c,pos:null,parent:s.parent}),p=e.tr.insert(n,d);return r.some(l=>l.group===s.group&&l.id!==o)||O(p,s.replaceId,[...t[s.group]||[],c]),b(p).setMeta(f,{placed:{id:o,at:n,size:d.nodeSize,blockId:c}})}function F(e,o){let{items:a,placed:r}=f.getState(e),t=a.find(n=>n.id===o);if(!t)return null;let s=e.tr;return a.some(n=>n.group===t.group&&n.id!==o)||O(s,t.replaceId,r[t.group]||[]),s.docChanged&&b(s),s.setMeta(f,{remove:o})}function R(e,o,a=D(e.state,e.state.selection.$head.index(0))){if(o=[...o].filter(Boolean),!o.length)return!1;let r=x("g"),t=o.map((s,n)=>{let c=/^image\//.test(s.type||"")?"image":"file";return{id:x("u"),pos:a.at,group:r,order:n,file:s,kind:c,name:s.name||(c==="image"?"image":"file"),parent:a.parent,replaceId:a.replaceId,state:"uploading",percent:0,preview:c==="image"&&globalThis.URL?.createObjectURL?URL.createObjectURL(s):null}});e.dispatch(e.state.tr.setMeta(f,{add:t}));for(let s of t)V(e,s);return h(e,o.length===1?`Uploading ${t[0].name}`:`Uploading ${o.length} files`),!0}var g=(e,o)=>f.getState(e.state).items.find(a=>a.id===o),y=(e,o,a)=>e.dispatch(e.state.tr.setMeta(f,{update:{id:o,...a}})),X=e=>new Promise((o,a)=>{let r=new FileReader;r.onload=()=>o(r.result),r.onerror=()=>a(r.error),r.readAsDataURL(e)}),N=(e,o)=>e.kind==="image"?{src:o,alt:"",caption:""}:{src:o,name:e.name,size:e.file.size??null,mime:e.file.type||null};function $(e,o,a){e.preview&&URL.revokeObjectURL?.(e.preview),a&&o.dispatch(a)}async function V(e,o){let a=m.get(e),r=new AbortController;a.aborts.set(o.id,r);let t=-5,s=({percent:d})=>{d-t<5&&d!==100||(t=d,m.has(e)&&g(e,o.id)&&y(e,o.id,{percent:d}))},n;try{n=await a.upload(o.file,{onProgress:s,signal:r.signal})}catch{n={code:"network",msg:"Upload failed"}}if(a.aborts.delete(o.id),!m.has(e)||!g(e,o.id))return;if(n?.ok){let d=B(n.uploads?.[0]?.url);if(d){$(o,e,j(e.state,o.id,N(o,d))),h(e,`${o.name} added`);return}n={code:"bad-response",msg:"The upload returned an invalid address"}}if((!n||typeof n!="object")&&(n={code:"bad-response",msg:"The upload returned an invalid response"}),n.code==="aborted")return $(o,e,F(e.state,o.id));if(n.code==="unsupported"){let d=/^image\/(png|jpeg|gif|webp)$/i.test(o.file.type)&&o.file.size<=A,p=d?"This host doesn't store files. You can keep this image inside the document, which makes the document larger.":o.kind==="image"&&o.file.size>A?"This host doesn't store files, and this image is over 1.5 MB, too large to keep inside the document.":"This host doesn't store files.";y(e,o.id,{state:d?"embed-choice":"error",code:n.code,message:p}),h(e,`${o.name}: ${p}`);return}let c=n.code==="timeout"?"The upload timed out. It may have arrived; trying again is safe.":n.msg||"Upload failed";y(e,o.id,{state:"error",code:n.code,message:c}),h(e,`${o.name}: ${c}`)}async function q(e,o){let a=g(e,o);if(!a||a.state!=="embed-choice")return;let r=await X(a.file);!m.has(e)||!g(e,o)||($(a,e,j(e.state,o,N(a,r))),h(e,"Saved inside the document"))}function G(e,o){g(e,o)&&(y(e,o,{state:"uploading",percent:0,code:null,message:null}),V(e,g(e,o)))}function J(e,o){let a=m.get(e),r=a?.aborts.get(o),t=g(e,o);t&&$(t,e,F(e.state,o)),a?.aborts.delete(o),r?.abort()}var Q=e=>e.replace(/<(meta|style|img)\b[^>]*>/gi,"").replace(/<[^>]+>/g,"").trim()!=="";function de({upload:e,features:o=null}){let a=null,r=t=>{!o||o.has("media")||!m.has(t)||o.ensure("media").catch(()=>{})};return new Y({key:f,state:W,view(t){a=t;let n=t.dom.ownerDocument.createElement("input");n.type="file",n.multiple=!0,n.hidden=!0,n.className="page-file-input",t.dom.parentElement.append(n),m.set(t,{upload:e,aborts:new Map,input:n}),n.addEventListener("change",()=>{let d=[...n.files??[]],p=f.getState(t.state).picker;if(t.dispatch(t.state.tr.setMeta(f,{picker:null})),d.length&&p){let{remove:l}=p;l&&t.state.doc.textBetween(l.from,l.to)===l.text&&t.dispatch(b(t.state.tr.delete(l.from,l.to)));let i=U(t.state.doc,p.place.hostId);(!p.place.hostId||i>=0)&&(R(t,d,i>=0?D(t.state,i):p.place),r(t))}n.value="",t.focus()}),n.addEventListener("cancel",()=>t.dispatch(t.state.tr.setMeta(f,{picker:null})));let c=d=>{let p=d.target.closest?.(".page-upload-btn");if(!p)return;d.preventDefault();let l=p.dataset.upload;p.dataset.act==="retry"?G(t,l):p.dataset.act==="embed"?q(t,l):J(t,l)};return t.dom.addEventListener("click",c),{destroy(){t.dom.removeEventListener("click",c),a===t&&(a=null);let d=m.get(t);m.delete(t);for(let p of f.getState(t.state).items)p.preview&&URL.revokeObjectURL?.(p.preview);for(let p of d.aborts.values())p.abort();n.remove()}}},props:{decorations(t){let{items:s}=f.getState(t),n=a?C.get(a):null;return!s.length||!n?null:K.create(t.doc,s.map(c=>_.widget(M(t.doc,c.pos),d=>n(d.dom.ownerDocument,c),{side:-1e3+c.order,key:`${c.id}:${c.state}:${c.percent}`,stopEvent:()=>!0,ignoreSelection:!0})))},handlePaste(t,s){let n=s.clipboardData,c=[...n?.files??[]];if(!c.length||t.state.selection.$from.parent.type.spec.code||Q(n.getData("text/html")||""))return!1;let d=D(t.state,t.state.selection.$head.index(0));return s.preventDefault(),R(t,c,d),r(t),!0},handleDrop(t,s,n,c){let d=[...s.dataTransfer?.files??[]];if(c||!d.length)return!1;let p=t.posAtCoords({left:s.clientX,top:s.clientY});if(!p)return!1;let l=L(t.state.doc),i=Math.min(t.state.doc.resolve(p.pos).index(0),l.length-1),u=t.nodeDOM(l[i].at)?.getBoundingClientRect?.(),S=u&&s.clientY<u.top+u.height/2;s.preventDefault();let k={at:S?l[i].at:l[l[i].subEnd].end,parent:l[i].node.attrs.parent??null,replaceId:null};return R(t,d,k),r(t),!0}}})}function le(e,o,a=D(e.state,e.state.selection.$head.index(0)),r=null){let t=m.get(e);if(!t)return!1;let s={place:a,remove:r&&{...r,text:e.state.doc.textBetween(r.from,r.to)}};return e.dispatch(e.state.tr.setMeta(f,{picker:s})),t.input.accept=o,t.input.click(),!0}var U=(e,o)=>{let a=-1;return e.forEach((r,t,s)=>{r.attrs.id===o&&(a=s)}),a};function Z(e,o,a){let r=e.state,t=U(r.doc,o);if(t<0)return!1;let s=0;for(let c=0;c<t;c++)s+=r.doc.child(c).nodeSize;let n=r.doc.child(t);return e.dispatch(b(r.tr.setNodeMarkup(s,null,{...n.attrs,...a}))),!0}function pe(e,o){let a=U(e.state.doc,o);if(a<0)return!1;let r=e.dom.parentElement,t=r.ownerDocument,s=0;for(let u=0;u<a;u++)s+=e.state.doc.child(u).nodeSize;let n=t.createElement("div");n.className="page-link",n.dataset.mode="alt";let c=t.createElement("input");c.className="page-link-input",c.type="text",c.value=e.state.doc.child(a).attrs.alt||"",c.placeholder="Describe the image",c.setAttribute("aria-label","Alt text"),n.append(c);let d=e.nodeDOM(s)?.getBoundingClientRect?.(),p=r.getBoundingClientRect();d&&(n.style.setProperty("--page-pop-x",`${d.left-p.left}px`),n.style.setProperty("--page-pop-y",`${d.bottom-p.top+6}px`)),r.append(n);let l=!1,i=(u,S=!0)=>{if(l)return;l=!0;let k=c.value.trim();n.remove();let I=U(e.state.doc,o);u&&I>=0&&k!==e.state.doc.child(I).attrs.alt&&Z(e,o,{alt:k}),S&&e.focus()};return c.addEventListener("keydown",u=>{u.key==="Enter"?(u.preventDefault(),i(!0)):u.key==="Escape"&&(u.preventDefault(),u.stopPropagation(),i(!1))}),c.addEventListener("blur",()=>i(!0,!1)),c.focus(),!0}export{C as a,ce as b,D as c,de as d,le as e,Z as f,pe as g};
@@ -0,0 +1,4 @@
1
+ import{a as ie}from"./c-S7H2DRCB.js";import{g as ke}from"./c-B2ZXPOS3.js";import"./c-TQEMVJCS.js";import{a as xe}from"./c-3IQRECYS.js";import"./c-AYVOREBE.js";import"./c-IJUK2GPW.js";import"./c-7O6AFR65.js";import"./c-P7KNDG34.js";import"./c-CYWLPPUS.js";import"./c-N7JPUPGC.js";import{b as Y,c as we,d as ve,j as se,m as Te}from"./c-35NBGMZB.js";import"./c-XQXZAO7N.js";import"./c-S7LK4KUE.js";import"./c-GHBCCVG4.js";import"./c-HA6INT6J.js";import"./c-DCFSEJZG.js";import"./c-WRBKEJD4.js";import"./c-VHNSBD2M.js";var ue=new Set(["script","style","xmp","iframe","noembed","noframes","plaintext","noscript"]),Me=new Set(["textarea","title"]),Se=e=>ue.has(e)?"raw":Me.has(e)?"rcdata":"normal",ae=new Set(["area","base","br","col","embed","hr","img","input","link","meta","param","source","track","wbr"]),Le="http://www.w3.org/1999/xhtml",ct=e=>e.replace(/&/g,"&amp;").replace(/ /g,"&nbsp;").replace(/</g,"&lt;").replace(/>/g,"&gt;"),Ne=e=>e.replace(/&/g,"&amp;").replace(/ /g,"&nbsp;").replace(/"/g,"&quot;");function ne(e){let t=new Map,n=ie(e,{sourceCodeLocationInfo:!0,onParseError:r=>t.set(r.code,(t.get(r.code)||0)+1)});return je(e,n,t)}function je(e,t,n){let r=t.childNodes.find(l=>l.nodeName==="html"),s=t.childNodes.filter(l=>l!==r).map(l=>l.nodeName==="#documentType"?{kind:"doctype",name:l.name||"",publicId:l.publicId||"",systemId:l.systemId||""}:{kind:l.nodeName==="#comment"?"comment":l.nodeName,value:l.data}),o=r?Fe(r,null,e):null;return o&&Pe(o,e),{src:e,doc:t,outside:s,root:o,parseErrors:n,relocated:o?le(o):null,movedIn:o?le(o,"movedIn"):null,tailOwner:o?De(o):null}}function Fe(e,t,n){let r=e.sourceCodeLocation||null,s=e.nodeName==="#text"?"text":e.nodeName==="#comment"?"comment":"element",o={node:e,parent:t,live:null,kind:s,children:[],from:r?r.startOffset:-1,to:r?r.endOffset:-1};if(s==="text")return o.value=e.value,o;if(s==="comment")return o.value=e.data,o;o.tag=e.tagName,o.located=!!(r&&r.startTag),o.openFrom=o.located?r.startTag.startOffset:-1,o.openTo=o.located?r.startTag.endOffset:-1,o.closeFrom=r&&r.endTag?r.endTag.startOffset:o.located?o.to:-1,o.closeTo=r&&r.endTag?r.endTag.endOffset:o.located?o.to:-1,o.endTagged=!!(r&&r.endTag),o.located&&(o.to<o.openTo&&(o.to=o.openTo),o.closeFrom<o.openTo&&(o.closeFrom=o.closeTo=o.openTo)),o.attrs=[];let l=o.located&&r.startTag.attrs||r&&r.attrs||{};for(let a of e.attrs){let m=a.prefix?a.prefix+":"+a.name:a.name,p=l[m.toLowerCase()];o.attrs.push({name:m,key:m.toLowerCase(),value:a.value,from:p?p.startOffset:-1,to:p?p.endOffset:-1})}let g=e.nodeName==="template"&&e.content?e.content.childNodes:e.childNodes;for(let a of g)a.nodeName!=="#documentType"&&o.children.push(Fe(a,o,n));if(!o.located){let a=o.children.filter(h=>h.from>=0),m=a.length?Math.min(...a.map(h=>h.from)):-1,p=a.length?Math.max(...a.map(h=>h.to)):-1;o.openFrom=o.openTo=m,o.closeFrom=o.closeTo=p,o.from=m,o.to=p}return o}function Pe(e,t,n=1/0){if(e.kind!=="element")return;for(let o of e.children){if(o.from>=n&&!(o.kind==="text"&&!/\S/.test(o.value))&&(e.movedIn=!0),o.from>=0&&e.located){let l=Math.max(e.openTo,Math.min(o.to,e.closeFrom)),g=Math.min(Math.max(o.from,e.openTo),l);if(g!==o.from||l!==o.to){if(o.kind==="text"&&!ue.has(e.tag)&&!Me.has(e.tag)){let a=t.slice(l,o.to).replace(/<!--[\s\S]*?-->|<[^>]*>/g,"").replace(/\r\n?/g,`
2
+ `);a&&!/\S/.test(a)&&o.value.endsWith(a)&&(o.outsideTail=a)}o.clamped=!0,o.from=g,o.to=l}}o.kind==="element"&&o.located&&!o.endTagged&&o.closeFrom>o.to&&(o.closeFrom=o.closeTo=o.to)}let r=e.located?e.openTo:-1;for(let o of e.children)if(!(o.from<0)){if(o.from<r){e.outOfOrder=!0;break}r=o.to}let s=e.located&&e.endTagged?Math.min(n,e.closeTo):n;for(let o of e.children)Pe(o,t,s)}function le(e,t="outOfOrder"){if(e[t])return e.tag;for(let n of e.children){if(n.kind!=="element")continue;let r=le(n,t);if(r)return r}return null}function De(e){if(e.outsideTail)return e;for(let t of e.children||[]){let n=De(t);if(n)return n}return null}function G(e,t){if(!e.root)return"source has no <html> element";if(e.root.openFrom<0)return"source has no content inside <html>";if(e.relocated)return"the parser moved content out of <"+e.relocated+">, so source order and tree order disagree";if(e.movedIn)return"the parser moved content written after the end of <"+e.movedIn+"> back inside it, so source order and tree order disagree";let n=ft(t),r=e.outside.map(ut);if(n.length!==r.length)return"outside <html>: "+JSON.stringify(r)+" vs live "+JSON.stringify(n);for(let s=0;s<n.length;s++)if(n[s]!==r[s])return"outside <html>: "+r[s]+" vs live "+n[s];return null}function ut(e){return e.kind==="doctype"?"doctype:"+e.name+"|"+e.publicId+"|"+e.systemId:e.kind+":"+e.value}function ft(e){let t=[];for(let n of e.childNodes)n.nodeType===10?t.push("doctype:"+n.name+"|"+n.publicId+"|"+n.systemId):n.nodeType===8?t.push("comment:"+n.data):n.nodeType!==1&&t.push("#"+n.nodeType+":"+(n.data||""));return t}var re="\0",Be={align:0,hashKey:0};function Oe(e,t){for(let n=0;n<t.length;n++)e^=t.charCodeAt(n),e=Math.imul(e,16777619);return e>>>0}function ee(e){Be.hashKey++;let t=2166136261,n=5381;for(let r of e)t=Oe(t,r),n=(Math.imul(n,33)^Oe(t^2654435769,r))>>>0;return t.toString(36)+"."+n.toString(36)}function X(e){let t=e.nodeType===1&&e.tagName==="TEMPLATE"&&e.content?e.content.childNodes:e.childNodes,n=[];for(let r of t)(r.nodeType===1||r.nodeType===3||r.nodeType===8)&&n.push(r);return n}var Ue=e=>Array.from(e.attributes,t=>t.name.toLowerCase()+"="+t.value).sort().join(re),Je=e=>e.attrs.map(t=>t.key+"="+t.value).sort().join(re);function fe(e,t){let n;if(e.nodeType===3)n={tag:"#text",shallow:"t:"+e.data,content:"t:"+e.data,deep:"t:"+e.data};else if(e.nodeType===8)n={tag:"#comment",shallow:"c:"+e.data,content:"c:"+e.data,deep:"c:"+e.data};else{let r=X(e).map(o=>fe(o,t)),s="e:"+e.localName+"|"+Ue(e);n={tag:e.localName,shallow:s,content:"e:"+e.localName+"|"+ee(r.map(o=>o.content)),deep:s+"|"+ee(r.map(o=>o.deep))}}return t.set(e,n),n}function _e(e){if(e.kind==="text")return e.keys={tag:"#text",shallow:"t:"+e.value,content:"t:"+e.value,deep:"t:"+e.value};if(e.kind==="comment")return e.keys={tag:"#comment",shallow:"c:"+e.value,content:"c:"+e.value,deep:"c:"+e.value};let t=e.children.map(_e),n="e:"+e.tag+"|"+Je(e);return e.keys={tag:e.tag,shallow:n,content:"e:"+e.tag+"|"+ee(t.map(r=>r.content)),deep:n+"|"+ee(t.map(r=>r.deep))}}var Ee=["deep","content","shallow","tag"],dt=4096;function pt(e,t){Be.align++;let n=[],r=e.map((h,w)=>w),s=t.map((h,w)=>w);m(r,s,0);let o=new Set(n.map(h=>h[0])),l=new Set(n.map(h=>h[1])),g=r.filter(h=>!o.has(h)),a=s.filter(h=>!l.has(h));return g.length&&a.length&&m(g,a,0),n.sort((h,w)=>h[0]-w[0]),n;function m(h,w,k){let f=0,y=h.length,v=0,S=w.length;if(f>=y||v>=S)return;if(k>=Ee.length)return p(h,w);let L=Ee[k];for(;f<y&&v<S&&e[h[f]][L]===t[w[v]][L];)n.push([h[f],w[v]]),f++,v++;for(;f<y&&v<S&&e[h[y-1]][L]===t[w[S-1]][L];)y--,S--,n.push([h[y],w[S]]);if(f>=y||v>=S)return;let F=new Map,$=new Map;for(let I=f;I<y;I++){let b=e[h[I]][L];F.set(b,F.has(b)?-1:I)}for(let I=v;I<S;I++){let b=t[w[I]][L];$.set(b,$.has(b)?-1:I)}let K=[];for(let I=f;I<y;I++){let b=e[h[I]][L];if(F.get(b)===I){let P=$.get(b);P!==void 0&&P>=0&&K.push([I,P])}}let q=mt(K);if(!q.length){if((y-f)*(S-v)<=dt){let I=ht(e,t,h,w,f,y,v,S,L);if(I.length){let b=f,P=v;for(let[z,V]of I)n.push([h[z],w[V]]),m(h.slice(b,z),w.slice(P,V),k+1),b=z+1,P=V+1;m(h.slice(b,y),w.slice(P,S),k+1);return}}return m(h.slice(f,y),w.slice(v,S),k+1)}let Q=f,W=v;for(let[I,b]of q)n.push([h[I],w[b]]),m(h.slice(Q,I),w.slice(W,b),k),Q=I+1,W=b+1;m(h.slice(Q,y),w.slice(W,S),k)}function p(h,w){let k=new Map,f=new Map;for(let y of h){let v=e[y].tag;k.has(v)||k.set(v,[]),k.get(v).push(y)}for(let y of w){let v=t[y].tag;f.has(v)||f.set(v,[]),f.get(v).push(y)}for(let[y,v]of k){let S=f.get(y);S&&S.length===v.length&&y!=="#text"&&y!=="#comment"&&v.forEach((L,F)=>n.push([L,S[F]]))}}}function mt(e){let t=[],n=[],r=new Array(e.length).fill(-1);for(let l=0;l<e.length;l++){let g=e[l][1],a=0,m=t.length;for(;a<m;){let p=a+m>>1;t[p]<g?a=p+1:m=p}t[a]=g,n[a]=l,r[l]=a>0?n[a-1]:-1}let s=[],o=n.length?n[n.length-1]:-1;for(;o>=0;)s.push(e[o]),o=r[o];return s.reverse()}function ht(e,t,n,r,s,o,l,g,a){let m=o-s,p=g-l,h=(v,S)=>e[n[s+v]][a]===t[r[l+S]][a],w=Array.from({length:m+1},()=>new Uint16Array(p+1));for(let v=m-1;v>=0;v--)for(let S=p-1;S>=0;S--)w[v][S]=h(v,S)?w[v+1][S+1]+1:Math.max(w[v+1][S],w[v][S+1]);let k=[],f=0,y=0;for(;f<m&&y<p;)h(f,y)?(k.push([s+f,l+y]),f++,y++):w[f+1][y]>=w[f][y+1]?f++:y++;return k}function Ie(e){return e.nodeType===3?"#text "+JSON.stringify(e.data.slice(0,40)):e.nodeType===8?"#comment":"<"+e.localName+Array.from(e.attributes,t=>" "+t.name+'="'+t.value.slice(0,30)+'"').join("")+">"}function Ce(e){return e.kind==="text"?"#text "+JSON.stringify(e.value.slice(0,40)):e.kind==="comment"?"#comment":"<"+e.tag+e.attrs.map(t=>" "+t.name+'="'+t.value.slice(0,30)+'"').join("")+">"}function $e(e,t,n=r=>r){let r=new WeakMap,s=new Map;fe(e,s),_e(t.root);let o={paired:0,unmatchedLive:[],unmatchedSource:[],attrDiffs:[],textDiffs:0,unresolved:0},l={};return t.gen=l,qe(e,t.root,r,s,o,"html",n,l),{map:r,stats:o}}function qe(e,t,n,r,s,o,l,g){let a=l(e);if(a?(n.set(a,t),t.gen=g,s.paired++):s.unresolved++,t.kind!=="element"){e.data!==t.value&&s.textDiffs++;return}Ue(e)!==Je(t)&&s.attrDiffs.push({path:o,live:Ie(e),source:Ce(t)});let m=X(e),p=t.children,h=pt(m.map(f=>r.get(f)),p.map(f=>f.keys)),w=new Set,k=new Set;for(let[f,y]of h)w.add(f),k.add(y),qe(m[f],p[y],n,r,s,o+">"+(m[f].nodeType===1?m[f].localName:"#")+"["+f+"]",l,g);for(let f=0;f<m.length;f++)w.has(f)||s.unmatchedLive.push({path:o,node:Ie(m[f])});for(let f=0;f<p.length;f++)k.has(f)||s.unmatchedSource.push({path:o,node:Ce(p[f])})}function Qe(e,t,n=r=>r){if(!t.root)return null;let r=[],s=We(e,t.root,n,r);if(s<0)return null;let o=new WeakMap,l={};t.gen=l;let g=0;for(let[a,m]of r)a&&(o.set(a,m),m.gen=l,g++);return{map:o,stats:{paired:g,unmatchedLive:[],unmatchedSource:[],attrDiffs:[],textDiffs:0,unresolved:s}}}function We(e,t,n,r){if(t.kind==="text"){if(e.nodeType!==3||e.data!==t.value)return-1}else if(t.kind==="comment"){if(e.nodeType!==8||e.data!==t.value)return-1}else if(e.nodeType!==1||e.localName!==t.tag||e.namespaceURI!==t.node.namespaceURI||gt(e)!==yt(t.node))return-1;let s=n(e);r.push([s,t]);let o=s?0:1;if(t.kind!=="element")return o;let l=wt(e),g=t.children;if(l.length!==g.length)return-1;for(let a=0;a<l.length;a++){let m=We(l[a],g[a],n,r);if(m<0)return-1;o+=m}return o}var ze=e=>JSON.stringify(e),gt=e=>Array.from(e.attributes,t=>ze([t.namespaceURI||"",t.name,t.value])).sort().join(re),yt=e=>e.attrs.map(t=>ze([t.namespace||"",t.prefix?t.prefix+":"+t.name:t.name,t.value])).sort().join(re);function wt(e){let t=e.nodeType===1&&e.tagName==="TEMPLATE"&&e.content?e.content.childNodes:e.childNodes,n=[];for(let r of t)(r.nodeType===1||r.nodeType===3||r.nodeType===8)&&n.push(r);return n}function Ve(e,t,n){let r=t.get(e);if(!r||r.gen!==n.gen||r.from<0||r.to<0||r.kind==="element"&&r.located&&n.src.slice(r.openFrom,r.openFrom+r.tag.length+1).toLowerCase()!=="<"+r.tag.toLowerCase())return null;let s=vt(n),o=Tt(s,r.from);return{from:r.from,to:r.to,line:o+1,column:r.from-s[o]+1}}function vt(e){if(!e.lineStarts){let t=[0];for(let n=0;n<e.src.length;n++)e.src.charCodeAt(n)===10&&t.push(n+1);e.lineStarts=t}return e.lineStarts}function Tt(e,t){let n=0,r=e.length-1;for(;n<r;){let s=n+r+1>>1;e[s]<=t?n=s:r=s-1}return n}function He(e,t,n,r,s={}){let o=()=>typeof performance<"u"?performance.now():Date.now(),l=o(),g=n.src,a=[],m=0,p=(c,d)=>{if(!(c>=0&&d>c))return;let u=a.length>m?a[a.length-1]:null;u&&u.text===void 0&&u.to===c?u.to=d:a.push({from:c,to:d})},h=c=>{c&&a.push({text:c})},w=0,k=c=>{if(w)return null;let d=r(c),u=d?t.get(d):null;return u&&u.gen===n.gen?u:null},f=null,y=-1,v=!1,S=n.root;if(p(0,S.openFrom),I(e,S),p(S.closeTo,g.length),n.tailOwner&&y>=0&&!v){for(let c=y;c<a.length;c++)a[c]={text:$(F(a[c]))};f&&f.tail&&a.splice(f.at,0,{text:f.tail})}return{text:a.map(F).join(""),ms:o()-l};function F(c){return c.text!==void 0?c.text:g.slice(c.from,c.to)}function $(c){return c.split(/(<!--[\s\S]*?-->|<[^>]*>)/).map((d,u)=>u%2?d:d.replace(/[\t\n\f\r ]+/g,"")).join("")}function K(){y=a.length,m=a.length,v=!!f&&f.whole&&/^(?:<\/[^>]*>)*$/.test(a.slice(f.at).map(F).join(""))}function q(c,d){if(c.nodeType===3)return W(c,d);if(c.nodeType===8)return Q(c);if(c.nodeType===1){if(s.print&&s.print.has(c)){w++;try{I(c,null)}finally{w--}}else I(c,k(c));c.localName==="body"&&c.parentNode===e&&K()}}function Q(c){let d=k(c);d&&d.kind==="comment"&&d.value===c.data&&d.from>=0&&!s.breakText?p(d.from,d.to):h("<!--"+c.data+"-->")}function W(c,d){let u=k(c),x=c.data;s.corrupt==="drop-first-text"&&!s.corrupted&&x.trim()&&(s.corrupted=!0,x=x.slice(1));let T=u&&u.parent&&Se(u.parent.tag)===Se(d);if(u&&u.kind==="text"&&u.value===x&&u.from>=0&&!s.breakText&&T){p(u.from,u.to),s.doubleCopied!==void 0&&x===s.doubleCopied&&p(u.from,u.to),u.outsideTail&&(f={at:a.length,tail:u.outsideTail,whole:!0},m=a.length);return}let R=null;if(u&&u.kind==="text"&&u.outsideTail){let A=x.endsWith(u.outsideTail);A&&(x=x.slice(0,x.length-u.outsideTail.length)),R={tail:A?u.outsideTail:"",whole:A}}h(ue.has(d)?x:ct(x)),R&&(f={at:a.length,...R},m=a.length)}function I(c,d){let u=c.localName,x=ae.has(u)&&c.namespaceURI===Le,T=d&&d.kind==="element"&&!s.breakTags?d:null;if(T&&!T.located){if(c.attributes.length===0){if(T.openFrom>=0){H(c,T,u);return}X(c).length&&H(c,null,u);return}if(h(b(c)),x)return;H(c,T.openFrom>=0?T:null,u),h("</"+u+">");return}if(!T){if(h(b(c)),x)return;H(c,null,u),h("</"+u+">");return}z(c,T),!x&&(H(c,T,u),p(T.closeFrom,T.closeTo))}function b(c){let d="<"+c.localName;for(let u of c.attributes)d+=" "+u.name+(u.value===""?"":'="'+Ne(u.value)+'"');return d+">"}function P(c,d){let u=c.attributes;if(u.length!==d.attrs.length)return!1;for(let x=0;x<u.length;x++){let T=d.attrs[x];if(T.from<0||u[x].value!==T.value||u[x].name.toLowerCase()!==T.key)return!1}return!0}function z(c,d){if(P(c,d)){p(d.openFrom,d.openTo);return}let u=new Map;for(let E of c.attributes)u.set(E.name.toLowerCase(),E);let x=new Set,T=d.openFrom;for(let E of d.attrs){if(E.from<0){let J=u.get(E.key);J&&J.value===E.value&&x.add(E.key);continue}let M=u.get(E.key);if(x.add(E.key),!M){p(T,V(T,E.from)),T=E.to;continue}if(M.value===E.value){p(T,E.to),T=E.to;continue}p(T,E.from),h(st(g.slice(E.from,E.to),M.value)),T=E.to}let R=d.openTo-1,A=d.attrs.reduce((E,M)=>M.to>E?M.to:E,d.openFrom);g[R-1]==="/"&&R-1>=A&&R--,p(T,R);for(let E of c.attributes)x.has(E.name.toLowerCase())||h(" "+E.name+(E.value===""?"":'="'+Ne(E.value)+'"'));p(R,d.openTo)}function V(c,d){let u=d;for(;u>c&&/[ \t\n\r\f]/.test(g[u-1]);)u--;return u}function st(c,d){let u=c.indexOf("="),x=(u<0?c:c.slice(0,u)).trimEnd(),T=u<0?"":c.slice(u+1).trim(),R=T[0]==="'"?"'":T[0]==='"'?'"':"",A=d.replace(/&/g,"&amp;").replace(/ /g,"&nbsp;");return R==="'"&&!d.includes("'")?x+"='"+A+"'":R===""&&T!==""&&d!==""&&!/[\s"'=<>`]/.test(d)?x+"="+A:x+'="'+A.replace(/"/g,"&quot;")+'"'}function it(c){if(c.nodeType!==1||w||s.print&&s.print.has(c))return null;let d=k(c);return d&&d.kind==="element"&&d.located&&!d.endTagged&&!ae.has(d.tag)&&!s.breakTags?d:null}function oe(c){let d=it(c);if(!d)return null;let u=X(c);return((u.length?oe(u[u.length-1]):null)||[]).concat(d.tag)}function H(c,d,u){let x=X(c),T=null,R=(C,N)=>{T&&!(N>=0&&T.j>=0&&N===T.j+1)&&h(T.tags.map(O=>"</"+O+">").join("")),T=null};if(!d){for(let C of x){R(-1,-1),q(C,u);let N=oe(C);N&&(T={tags:N,j:-1})}return}let A=d.children,E=new Map(A.map((C,N)=>[C,N])),M=x.map(C=>{let N=k(C);return N&&N.parent===d&&N.from>=0?E.get(N):-1}),J=new Set;if(!s.breakText&&!s.breakTags){let C=new Set(M),N=new Map;A.forEach((O,j)=>{C.has(j)||O.from<0||!O.keys||(N.has(O.keys.deep)||N.set(O.keys.deep,[]),N.get(O.keys.deep).push(j))}),N.size&&x.forEach((O,j)=>{if(M[j]>=0||k(O))return;let D=N.get(fe(O,new Map).deep);D&&D.length&&(M[j]=D.shift(),J.add(j))})}let me=(C,N)=>{if(!J.has(N))return q(C,u);let O=A[M[N]];p(O.from,O.to),O.outsideTail&&(f={at:a.length,tail:O.outsideTail,whole:!0},m=a.length)},at=(C,N)=>{if(!J.has(N))return oe(C);let O=A[M[N]];return O.kind==="element"&&O.located&&!O.endTagged&&!ae.has(O.tag)?[O.tag]:null},lt=new Set(xt(M)),B=d.openTo,he=-1,ge=C=>{for(let N=he+1;N<C;N++){let O=A[N];O.from<0||(p(B,O.from),B=Math.max(B,O.to))}};for(let C=0;C<x.length;C++){let N=x[C],O=at(N,C);if(lt.has(C)){let D=M[C],ye=A[D];R(C,D),ge(D),p(B,ye.from),me(N,C),B=Math.max(B,ye.to),he=D,T=O?{tags:O,j:D}:null;continue}let j=k(N);R(C,j&&j.parent===d?E.get(j):-1),me(N,C),T=O?{tags:O,j:-1}:null}ge(A.length),p(B,d.closeFrom)}}function xt(e){let t=[],n=[],r=new Array(e.length).fill(-1);for(let l=0;l<e.length;l++){let g=e[l];if(g<0)continue;let a=0,m=t.length;for(;a<m;){let p=a+m>>1;t[p]<g?a=p+1:m=p}t[a]=g,n[a]=l,r[l]=a>0?n[a-1]:-1}let s=[],o=n.length?n[n.length-1]:-1;for(;o>=0;)s.push(o),o=r[o];return s.reverse()}function Xe(e,t,n,r=null,s=null){return Ke(e,t,n,r,s,!1)}function Ge(e,t,n,r=null,s=null){return Ke(e,t,n,r,s,!0)}function Ke(e,t,n,r,s,o){let l=new DOMParser,g=l.parseFromString(e,"text/html"),a=Re(g),m=Re(n);if(a.join(`
3
+ `)!==m.join(`
4
+ `))return{ok:!1,diff:"document: outside <html> "+JSON.stringify(a)+" vs live "+JSON.stringify(m)};let p=null,h=null;if(r&&(p=[],h=te(g.documentElement,r,"html",p),!h)){let y=be(e,s,o);return y.diff?{ok:!1,diff:y.diff}:o?Ae({ok:!0,diff:null,oracle:"clone"},y,e,n):{ok:!0,diff:null,oracle:"clone"}}let w=l.parseFromString(t,"text/html"),k=te(g.documentElement,w.documentElement,"html"),f=k?null:be(e,s,o);return k?r?{ok:!1,diff:k,at:p}:{ok:!1,diff:k}:f.diff?{ok:!1,diff:f.diff}:o?Ae({ok:!0,diff:null,oracle:"today"},f,e,n):{ok:!0,diff:null,oracle:"today"}}function Ye(e,t){let n=e;for(let r of t){let s=ce(n);if(r>=s.length)return null;n=s[r]}return n}function be(e,t,n){if(!t)return{diff:null};let r=new Map,s=ie(e,n?{sourceCodeLocationInfo:!0,onParseError:o=>r.set(o.code,(r.get(o.code)||0)+1)}:{onParseError:o=>r.set(o.code,(r.get(o.code)||0)+1)});for(let[o,l]of r){let g=t.get(o)||0;if(l>g)return{diff:`the render introduced parse errors the source does not have: ${o} ${g} -> ${l}`}}return n?{diff:null,doc:s,parseErrors:r}:{diff:null}}function Ae(e,t,n,r){if(!t.doc)return e;let s=je(n,t.doc,t.parseErrors);return G(s,r)||(e.model=s),e}function Re(e){let t=[];for(let n of e.childNodes)n.nodeType===10?t.push("doctype "+n.name+"|"+n.publicId+"|"+n.systemId):n.nodeType===8?t.push("comment "+n.data):n.nodeType!==1&&t.push("node"+n.nodeType+" "+(n.data||""));return t}function kt(e,t,n){let r=new DOMParser,s=o=>{let l=Array.from(o.childNodes);return l.length&&l.every(g=>g.nodeType===3)?l.map(g=>g.data).join(""):o.innerHTML};return te(r.parseFromString(e.innerHTML,"text/html").body,r.parseFromString(s(t),"text/html").body,n+">#noscript")}function ce(e){let t=e.localName==="template"&&e.content?e.content.childNodes:e.childNodes,n=[];for(let r=0;r<t.length;r++){let s=t[r];(s.nodeType===1||s.nodeType===3||s.nodeType===8)&&n.push(s)}return n}var Z=e=>Array.from(e.attributes,t=>(t.namespaceURI||"")+" "+t.name+"="+JSON.stringify(t.value)).sort().join("; ");function St(e,t){let n=e.attributes,r=t.attributes;if(n.length!==r.length)return!1;for(let s=0;s<n.length;s++){let o=n[s],l=r[s];if(o.name!==l.name||o.value!==l.value||o.namespaceURI!==l.namespaceURI)return!1}return!0}function te(e,t,n,r=[]){if(e.nodeType!==t.nodeType)return n+": node type "+e.nodeType+" vs "+t.nodeType;if(e.nodeType===3||e.nodeType===8)return e.data===t.data?null:n+": text "+JSON.stringify(e.data.slice(0,60))+" vs "+JSON.stringify(t.data.slice(0,60));if(e.localName!==t.localName||e.namespaceURI!==t.namespaceURI)return n+": tag "+e.localName+" vs "+t.localName;if(!St(e,t)&&Z(e)!==Z(t))return n+": attrs "+Z(e)+" vs "+Z(t);if(e.localName==="noscript"&&e.namespaceURI===Le)return kt(e,t,n);let s=ce(e),o=ce(t);if(s.length!==o.length)return n+": "+s.length+" vs "+o.length+" children";for(let l=0;l<s.length;l++){r.push(l);let g=te(s[l],o[l],n+">"+(s[l].localName||"#")+"["+l+"]",r);if(g)return g;r.pop()}return null}var i={installed:!1,refused:null,session:0,model:null,map:null,stats:null,saves:0,reprints:0,lastReprint:null,partialReprints:0,lastPartialReprint:null,lastOutcome:null,lastRenderMs:null,lastBytes:null,timing:{fetch:null,model:null,pair:null,refresh:null},refreshes:0,repairs:0,refreshQueued:!1,pendingBytes:null,refetch:!1,adoptions:0},Nt=2,_=()=>typeof performance<"u"?performance.now():Date.now(),Ze='<script type="application/json" id="clay-runtime-map"',et=e=>e.includes(Ze)||e.includes("/_/clayjs/");async function tt(e){let t=await fetch(e,{cache:"no-store",redirect:"manual",credentials:"same-origin",headers:{"Clay-Source":"1"}});if(!t.ok)throw new Error(`source fetch: status ${t.status}`);if(t.redirected||t.type==="opaqueredirect")throw new Error("source fetch: redirected");let n=(t.headers.get("content-type")||"").toLowerCase();if(!n.startsWith("text/html"))throw new Error(`source fetch: content-type ${n||"missing"}`);let r=await t.text();if(r.includes(Ze))throw new Error("source fetch: projected response");return r}function pe(e){let t=Te({flushUndo:!1,authored:!1});return $e(t,e,Y)}function Ot(e){let t=e.doc&&e.doc.childNodes.find(r=>r.nodeName==="html"),n=t&&Array.isArray(t.attrs)?t.attrs.find(r=>r.name==="documentetag"):null;return n&&n.value?n.value:null}function Et(e){let t=e&&e.represented&&e.represented.etag;if(t)return t;let n=xe();return n||e===null&&document.documentElement.getAttribute("documentetag")||null}function It(e,t){let n=Ot(e),r=Et(t);return!n||!r||n===r?null:`source refused: the fetch answered version ${n} while this page holds ${r}`}function nt(e,t=null,n=0,r=!0,s=null){let o=i.session,l=_(),g=i.adoptions;i.refused=null;let a=s?s():null,m=a&&typeof a.bytes=="string"&&!et(a.bytes)?a.bytes:null;return(m!==null?Promise.resolve(m):tt(e)).then(p=>{if(o!==i.session)return null;let h=_(),w=ne(p),k=G(w,document);if(k)throw new Error(`source refused: ${k}`);let f=It(w,t);if(f)throw new Error(f);if(i.adoptions!==g){if(n<Nt)return nt(e,t,n+1,r,s);throw new Error("source refused: a save replaced the file while the fetch was in flight")}let y=_(),{map:v,stats:S}=pe(w),L=_();return i.model=w,i.map=v,i.stats=S,i.timing={fetch:h-l,model:y-h,pair:L-y,refresh:null},i.installed=!0,r&&se(Ct),ot()}).catch(p=>(o!==i.session||(i.refused=String(p&&p.message?p.message:p),console.info(`clayjs: source map off (${i.refused}); saves use the full serialization`)),null))}function Ct(e,t,n={}){if(!i.installed)return t;U(),i.lastOutcome=null;let r=we(),s=!!r&&!r.authoredHandlers,o=new Set,l=null;for(let g=0;g<=At;g++){let a;try{a=He(e,i.map,i.model,Y,{...n,print:o})}catch(p){return de("render threw: "+(p&&p.message?p.message:p),t)}let m=s?Ge(a.text,t,document,e,i.model.parseErrors):Xe(a.text,t,document,e,i.model.parseErrors);if(m.ok)return i.lastRenderMs=a.ms,i.lastBytes=a.text.length,i.lastOutcome=o.size?{text:a.text,scope:"partial",reason:l,printed:o.size}:{text:a.text,scope:null},m.model&&bt(m.model,a.text,e,r),a.text;if(l===null&&(l=m.diff),!m.at||!Rt(e,Ye(e,m.at),o))return de(l,t)}return de(l,t)}function bt(e,t,n,r){let s=Qe(n,e,Y);s&&ve({captureId:r.captureId,html:t,source:{model:e,map:s.map,stats:s.stats,repairGeneration:i.repairs,outcome:i.lastOutcome}})}var At=8;function Rt(e,t,n){let r=t&&t.nodeType===1?t:t&&t.parentNode;for(let s=r;s&&s!==e;s=s.parentNode)if(n.has(s)){n.delete(s),r=s.parentNode;break}return!r||r.nodeType!==1||r===e?!1:(n.add(r),!0)}function de(e,t){return i.lastOutcome={text:t,scope:"full",reason:e},t}function Mt(e){i.reprints++,i.lastReprint=e,console.warn("clayjs: source map did not verify, saving the full serialization instead:",e),document.dispatchEvent(new CustomEvent("clay:save-reprinted",{detail:{reason:e,scope:"full"}}))}function Lt(e,t){i.partialReprints++,i.lastPartialReprint=e,console.info(`clayjs: source map printed ${t} element(s) in full to match the page:`,e),document.dispatchEvent(new CustomEvent("clay:save-reprinted",{detail:{reason:e,scope:"partial",printed:t}}))}function jt(e,t){i.adoptions++,i.installed&&(Pt(e,t&&t.artifact?t.artifact.source.outcome:null),!Ft(e,t)&&(i.pendingBytes=e,rt()))}function Ft(e,t){let n=t&&t.artifact;return!n||!n.source||n.html!==e||t.captureId===null||t.captureId===void 0||n.captureId!==t.captureId||n.source.repairGeneration!==i.repairs||i.refreshQueued||i.pendingBytes!==null?!1:(i.model=n.source.model,i.map=n.source.map,i.stats=n.source.stats,!0)}function Pt(e,t=null){let n=i.lastOutcome&&i.lastOutcome.text===e?i.lastOutcome:t;!n||n.text!==e||(i.lastOutcome===n&&(i.lastOutcome=null),i.saves++,n.scope==="full"?Mt(n.reason):n.scope==="partial"&&Lt(n.reason,n.printed))}function Dt(e){let t=e&&e.detail;t&&t.source==="disk"&&typeof t.html=="string"&&i.adoptions++,i.installed&&(t&&t.source==="disk"&&typeof t.html=="string"&&(et(t.html)?i.refetch=!0:i.pendingBytes=t.html),rt())}function rt(){i.refreshQueued||(i.refreshQueued=!0,typeof requestIdleCallback=="function"?requestIdleCallback(U,{timeout:2e3}):setTimeout(U,0))}function U(){if(!i.refreshQueued||(i.refreshQueued=!1,!i.installed))return;let e=i.pendingBytes;i.pendingBytes=null;let t=i.refetch&&e===null;t&&(i.refetch=!1),i.repairs++;let n=_(),r=i.model;if(e!==null)try{let s=ne(e),o=G(s,document);if(o)throw new Error(o);r=s}catch(s){console.warn("clayjs: source map kept the previous model, the accepted bytes did not model:",s)}try{let{map:s,stats:o}=pe(r);i.model=r,i.map=s,i.stats=o,i.refreshes++,i.timing.refresh=_()-n}catch(s){console.warn("clayjs: source map could not re-pair, continuing on the previous map:",s)}t&&Bt()}function Bt(){let e=i.repairs,t=i.adoptions;tt(window.location.href).then(n=>{let r=ne(n),s=G(r,document);if(s)throw new Error(s);return r}).then(n=>{if(!(i.repairs!==e||i.adoptions!==t))try{i.repairs++,i.adoptions++;let{map:r,stats:s}=pe(n);i.model=n,i.map=r,i.stats=s,i.refreshes++}catch(r){console.warn("clayjs: source map could not re-pair, continuing on the previous map:",r)}}).catch(n=>{console.warn("clayjs: source map kept the previous model, the accepted bytes did not model:",n)})}function ot(){let e=i.stats;return{installed:i.installed,refused:i.refused,sourceBytes:i.model?i.model.src.length:null,paired:e?e.paired:0,unresolved:e?e.unresolved:0,unmatchedLive:e?e.unmatchedLive.length:0,unmatchedSource:e?e.unmatchedSource.length:0,attrDiffs:e?e.attrDiffs.length:0,saves:i.saves,reprints:i.reprints,lastReprint:i.lastReprint,partialReprints:i.partialReprints,lastPartialReprint:i.lastPartialReprint,lastRenderMs:i.lastRenderMs,lastBytes:i.lastBytes,refreshes:i.refreshes,timing:i.timing}}function zt(){return U(),i.model?i.model.src:null}function Vt(e){return U(),i.installed&&e?Ve(e,i.map,i.model):null}function Ht(){return U(),i.stats?{live:i.stats.unmatchedLive.slice(0,50),source:i.stats.unmatchedSource.slice(0,50)}:null}function Xt(){return U(),ot()}var Gt=()=>i.installed;function Kt(){Ut()}function Ut(){i.session++,i.installed=!1,i.refreshQueued=!1,i.pendingBytes=null,i.refetch=!1,se(null)}function Yt({context:e=null,latest:t=null}={}){return nt(window.location.href,e,0,!0,t)}ke(jt);document.addEventListener("clay:sync-applied",Dt);export{jt as adoptAccepted,Gt as installed,Vt as locateLive,Kt as release,Ct as renderSave,Yt as start,Xt as stats,zt as text,Ht as unpaired};
@@ -0,0 +1 @@
1
+ import{c as x}from"./c-ZUCOKOHT.js";import{a as b,b as e}from"./c-KIPQJX4B.js";import{d as y}from"./c-QHWJ5ZIJ.js";import{a as T}from"./c-UL2YUY52.js";import{g as H,j as u,n as w,p as N}from"./c-OIBUTDXI.js";import{b as h,c as k,e as m}from"./c-VAK7SG37.js";import{a as v}from"./c-VKEDWYDF.js";function O(t,r,n="",o=!1,l="",a="OK"){let i=y(),c=u("div",["display:flex","flex-direction:column","gap:14px",`font:14.5px/1.55 ${h}`,`color:${m["ink-2"]}`],{theme:i,parts:["dialog.content"],role:"text"}),s=null;o&&(s=N("input",{rules:["display:block","width:100%","margin:0"],theme:i,parts:["dialog.input"]}),s.setAttribute("value",String(l)),s.required=!0,c.append(s)),c.insertAdjacentHTML("beforeend",n),e.title=t,e.html=o||n?c:"",e.width="440px",e[b]=i,e.closeHtml="x",e.no="Cancel",e.yes=a;let d=new Promise((f,g)=>{e.onYes(()=>{let p;if(o&&(p=s.value,!p))return!1;if(r)try{r(p)}catch(C){return x(C.message||"An error occurred","error"),!1}return setTimeout(()=>f(p),0),!0}),e.onNo=()=>{setTimeout(g,0)}});return e.open(),setTimeout(()=>{let f=document.querySelector("[data-clay-modal]");f&&f.addEventListener("click",g=>{let p=g.target.closest("[data-copy]");p&&(T(p.dataset.copy),x("Copied","success"))})},0),d.catch(()=>{}),d}function q(t,r,n="",o=""){return O(t,r,o,!0,n,"OK")}function B(t,r,n=""){return O(t,r,n,!1,"","Confirm")}function F(t,...r){let n=y(),o=u("div",["display:flex","flex-direction:column","gap:12px"],{theme:n,parts:["dialog.content"]});for(let a of r){let i=w("div",[`font:14.5px/1.55 ${h}`,`color:${m["ink-2"]}`,"overflow-wrap:anywhere"],void 0,{theme:n});i.innerHTML=a,o.append(i)}e.title=t,e.html=r.length?o:"",e.width="470px",e[b]=n,e.closeHtml="x",e.yes="OK";let l=new Promise((a,i)=>{e.onYes(()=>(setTimeout(a,0),!0)),e.onNo=()=>{setTimeout(i,0)}});return e.open(),l.catch(()=>{}),l}function R(t,r,n=""){let o=y(),l=u("div",["display:block"],{theme:o,parts:["dialog.content"]}),a=u("div",["display:block","max-width:100%","overflow-x:auto","margin:0 0 14px","padding:14px 16px",`background:${m.sunk}`,`border:1px solid ${m["line-2"]}`],{theme:o,parts:["dialog.well"],role:"well"}),i=w("pre",["display:block","margin:0","white-space:nowrap",`font:13px/1.6 ${k}`],void 0,{theme:o,parts:["dialog.code"],role:"code"});i.innerHTML=r,a.append(i);let c=H("Copy",{small:!0,extra:["margin:0 0 14px"],theme:o,parts:["dialog.button","dialog.copyButton"],labelParts:["dialog.buttonLabel"],onClick:()=>{T(r),x("Copied to clipboard!","success")}});l.append(a,c),l.insertAdjacentHTML("beforeend",n||""),e.title=t,e.html=l,e.width="540px",e[b]=o,e.closeHtml="x",e.yes="";let s=new Promise(d=>{e.onYes(()=>(setTimeout(d,0),!0)),e.onNo=()=>{setTimeout(d,0)}});return e.open(),s}function M(){v(()=>{let t=document.querySelector("[data-clay-modal]");t&&(t.remove(),document.body.style.overflow="")})}M();export{q as a,B as b,F as c,R as d,M as e};
@@ -0,0 +1 @@
1
+ var u=/^(.+)\.(\d+)\.(\d+)$/,y=/^(?:[A-Za-z0-9+/]{4})*(?:[A-Za-z0-9+/]{2}(?:==)?|[A-Za-z0-9+/]{3}=?)?$/,a=/^[A-Za-z0-9+/=\t\n\f\r ]*$/;function g(e){let s=[],r=new Map;for(let n of Object.keys(e).sort()){let t=u.exec(n);if(!t){s.push([n,e[n]]);continue}let o=r.get(t[1])??{n:Number(t[3]),got:[]};o.got[Number(t[2])]=e[n],r.set(t[1],o)}for(let[n,t]of r){let o=0;for(let i=0;i<t.n;i++)typeof t.got[i]=="string"&&o++;o===t.n&&s.push([n,t.got.join("")])}return s}function b(e){if(e?.v!==1||!e.y||typeof e.y!="object"||Array.isArray(e.y))return e;let s=new Map;for(let[n,t]of Object.entries(e.y)){let o=u.exec(n);if(!o)continue;let i=o[1],p=Number(o[2]),f=Number(o[3]),c=s.get(i)??{count:f,indices:new Set,keys:[],invalid:!1};(!Number.isSafeInteger(p)||!Number.isSafeInteger(f)||f<1||p>=f||c.count!==f||c.indices.has(p)||typeof t!="string"||!a.test(t))&&(c.invalid=!0),c.indices.add(p),c.keys.push(n),s.set(i,c)}let r=new Set;for(let[n,t]of s)if(!t.invalid&&!Object.hasOwn(e.y,n)&&t.indices.size<t.count)for(let o of t.keys)r.add(o);return r.size?{...e,y:Object.fromEntries(Object.entries(e.y).filter(([n])=>!r.has(n)))}:e}export{u as a,y as b,g as c,b as d};
@@ -0,0 +1 @@
1
+ var t=!1;function o(e){t=!!e}function a(){return t}export{o as a,a as b};
@@ -0,0 +1,34 @@
1
+ import{a as g,b as w}from"./c-54RCDCBU.js";import{A as d}from"./c-TR6RMDQ7.js";import{j as x}from"./c-66O32MV3.js";import"./c-VHNSBD2M.js";var y=`
2
+ .page-editor .page-image { margin-inline: 0; }
3
+ .page-image-frame { position: relative; margin: 0 auto; max-width: 100%; }
4
+ .page-image-frame img { display: block; width: 100%; height: auto; border-radius: var(--page-image-radius, 6px); }
5
+ .page-image[data-broken] .page-image-frame { min-height: 80px; background: var(--page-code-bg); border-radius: var(--page-image-radius, 6px); }
6
+ .page-image-handle { position: absolute; top: 50%; inset-inline-end: 6px; width: 6px; height: 36px; margin-top: -18px; border-radius: 3px; background: var(--page-chrome-ink-moved); opacity: 0; cursor: ew-resize; touch-action: none; transition: opacity var(--page-fade); }
7
+ .page-image:hover .page-image-handle, .page-image.is-selected .page-image-handle { opacity: 1; }
8
+ .page-editor .page-image.page-block-selected { background: none; box-shadow: none; }
9
+ .page-editor .page-image.page-block-selected .page-image-frame { box-shadow: 0 0 0 6px var(--page-block-selected, rgba(88, 120, 170, 0.12)); border-radius: var(--page-image-radius, 6px); }
10
+ .page-image[data-align="left"] .page-image-frame { margin-left: 0; margin-right: auto; }
11
+ .page-image[data-align="right"] .page-image-frame { margin-left: auto; margin-right: 0; }
12
+ .page-image[data-align="left"] .page-image-caption { text-align: left; }
13
+ .page-image[data-align="right"] .page-image-caption { text-align: right; }
14
+ .page-image-align { position: absolute; top: 8px; inset-inline-end: 8px; display: none; gap: 1px; padding: 2px; background: var(--page-pop-bg); color: var(--page-pop-ink); border: 1px solid var(--page-pop-line); box-shadow: var(--page-pop-shadow); border-radius: 7px; }
15
+ .page-image.is-selected .page-image-align, .page-image.page-block-selected .page-image-align { display: flex; }
16
+ .page-image-align button { display: grid; place-items: center; width: 26px; height: 26px; padding: 0; border: 0; border-radius: 5px; background: none; color: inherit; cursor: pointer; }
17
+ .page-image-align button:hover, .page-image-align button[aria-pressed="true"] { background: var(--page-pop-hover); }
18
+ .page-image.is-selected .page-image-frame img { outline: 2px solid var(--page-selection); outline-offset: 2px; }
19
+ .page-image-caption { margin-top: 6px; color: var(--page-ink-soft); font-size: 0.88em; text-align: center; outline: none; }
20
+ .page-image-caption[data-empty]::before { content: attr(data-placeholder); color: var(--page-ink-faint); }
21
+ .page-image:not(.is-selected) .page-image-caption[data-empty]:not(:focus) { display: none; }
22
+ .page-file-link { display: flex; align-items: center; gap: 10px; padding: 8px 12px; border: 1px solid var(--page-rule); border-radius: 8px; color: var(--page-ink); text-decoration: none; }
23
+ .page-file-icon { color: var(--page-link, var(--page-accent)); }
24
+ .page-file-name { color: var(--page-link, var(--page-accent)); min-width: 0; overflow-wrap: anywhere; }
25
+ .page-file-meta { margin-inline-start: auto; color: var(--page-ink-faint); font-size: 0.88em; }
26
+ .page-upload { display: flex; align-items: center; gap: 10px; margin: var(--page-block-gap) 0; padding: 8px 12px; border: 1px dashed var(--page-rule); border-radius: 8px; color: var(--page-ink-soft); font-size: 0.88em; }
27
+ .page-upload-preview { width: 40px; height: 40px; object-fit: cover; border-radius: 4px; opacity: 0.6; }
28
+ .page-upload-name { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
29
+ .page-upload-bar { flex: 1; height: 2px; border-radius: 1px; background: var(--page-rule); overflow: hidden; }
30
+ .page-upload-bar > span { display: block; height: 100%; background: var(--page-progress, var(--page-ink-soft)); transition: width 200ms; }
31
+ .page-upload[data-state="error"] .page-upload-msg, .page-upload[data-state="embed-choice"] .page-upload-msg { flex: 1; }
32
+ .page-upload[data-state="error"] .page-upload-msg { color: var(--page-danger, #9E3B2F); }
33
+ .page-upload-btn { border: 0; padding: 4px 8px; border-radius: 6px; background: none; color: inherit; font: inherit; cursor: pointer; }
34
+ .page-upload-btn:hover { background: var(--page-pop-hover); }`;function c(i,e,t,r){let n=i.createElement("button");return n.type="button",n.className="page-upload-btn",n.dataset.act=e,n.dataset.upload=r,n.textContent=t,n}function k(i,e){let t=i.createElement("div");if(t.className="page-upload",t.dataset.state=e.state,t.dataset.kind=e.kind,t.contentEditable="false",t.setAttribute("role",e.state==="uploading"?"status":"alert"),e.preview){let a=i.createElement("img");a.className="page-upload-preview",a.src=e.preview,a.alt="",t.append(a)}let r=i.createElement("span");if(r.className="page-upload-name",r.textContent=e.name,t.append(r),e.state==="uploading"){let a=i.createElement("span");a.className="page-upload-bar",a.setAttribute("role","progressbar"),a.setAttribute("aria-label",`Uploading ${e.name}`),a.setAttribute("aria-valuemin","0"),a.setAttribute("aria-valuemax","100"),a.setAttribute("aria-valuenow",String(e.percent));let s=i.createElement("span");return s.style.width=`${e.percent}%`,a.append(s),t.append(a,c(i,"cancel","Cancel",e.id)),t}let n=i.createElement("span");return n.className="page-upload-msg",n.textContent=e.message,t.append(n),e.state==="embed-choice"&&t.append(c(i,"embed","Keep this image inside the document",e.id)),w.has(e.code)&&t.append(c(i,"retry","Retry",e.id)),t.append(c(i,"remove","Remove",e.id)),t}var E=48,M=[["left","Align left",'<path d="M2.5 3.5h11M2.5 6.5h6M2.5 9.5h11M2.5 12.5h6"/>'],["center","Centre",'<path d="M2.5 3.5h11M5 6.5h6M2.5 9.5h11M5 12.5h6"/>'],["right","Align right",'<path d="M2.5 3.5h11M7.5 6.5h6M2.5 9.5h11M7.5 12.5h6"/>']],m=class{constructor(e,t,r){this.node=e,this.view=t,this.getPos=r;let n=t.dom.ownerDocument;this.dom=n.createElement("figure"),this.dom.className="page-image",this.dom.addEventListener("dragstart",a=>{a.preventDefault(),a.stopPropagation()}),this.dom.draggable=!1,this.frame=n.createElement("div"),this.frame.className="page-image-frame",this.img=n.createElement("img"),this.img.draggable=!1,this.img.addEventListener("error",()=>this.dom.toggleAttribute("data-broken",!0)),this.img.addEventListener("load",()=>this.dom.removeAttribute("data-broken")),this.handle=n.createElement("span"),this.handle.className="page-image-handle",this.handle.setAttribute("aria-hidden","true"),this.handle.addEventListener("pointerdown",a=>this.resize(a)),this.alignBar=n.createElement("div"),this.alignBar.className="page-image-align",this.alignBar.setAttribute("role","toolbar"),this.alignBar.setAttribute("aria-label","Image alignment");for(let[a,s,p]of M){let o=n.createElement("button");o.type="button",o.dataset.align=a,o.setAttribute("aria-label",s),o.title=s,o.innerHTML=`<svg viewBox="0 0 16 16" width="16" height="16" fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" aria-hidden="true">${p}</svg>`,this.alignBar.append(o)}this.alignBar.addEventListener("mousedown",a=>a.preventDefault()),this.alignBar.addEventListener("click",a=>{let s=a.target.closest("[data-align]");s&&this.setAlign(s.dataset.align==="center"?null:s.dataset.align)}),this.frame.append(this.img,this.handle,this.alignBar),this.caption=n.createElement("figcaption"),this.caption.className="page-image-caption",this.caption.contentEditable="plaintext-only",this.caption.setAttribute("aria-label","Caption"),this.caption.dataset.placeholder="Add a caption",this.caption.addEventListener("keydown",a=>{a.isComposing||this.view.composing||(a.key==="Enter"&&(a.preventDefault(),this.commitCaption(),this.view.focus()),a.key==="Escape"&&(a.preventDefault(),this.caption.textContent=this.node.attrs.caption,this.view.focus()))}),this.caption.addEventListener("blur",()=>this.commitCaption()),this.caption.addEventListener("input",()=>this.caption.toggleAttribute("data-empty",!this.caption.textContent)),this.dom.append(this.frame,this.caption),this.render(e)}render(e){this.node=e,this.dom.dataset.id=e.attrs.id??"",this.img.getAttribute("src")!==e.attrs.src&&(this.img.src=e.attrs.src),this.img.alt=e.attrs.alt||"",this.frame.style.width=e.attrs.width?`${e.attrs.width}px`:"",e.attrs.align?this.dom.dataset.align=e.attrs.align:delete this.dom.dataset.align;for(let t of this.alignBar.children)t.setAttribute("aria-pressed",String((e.attrs.align??"center")===t.dataset.align));this.dom.ownerDocument.activeElement!==this.caption&&(this.caption.textContent=e.attrs.caption||""),this.caption.toggleAttribute("data-empty",!e.attrs.caption)}update(e){return e.type!==this.node.type?!1:(this.render(e),!0)}setAlign(e){let t=this.getPos();t==null||e===(this.node.attrs.align??null)||this.view.dispatch(d(this.view.state.tr.setNodeMarkup(t,null,{...this.node.attrs,align:e})))}commitCaption(){let e=this.caption.textContent.replace(/\s+/g," ").trim(),t=this.getPos();t==null||e===(this.node.attrs.caption||"")||this.view.dispatch(d(this.view.state.tr.setNodeMarkup(t,null,{...this.node.attrs,caption:e})))}resize(e){e.preventDefault(),e.stopPropagation();let t=this.view.dom.getBoundingClientRect().width,r=this.frame.getBoundingClientRect().width,n=this.dom.ownerDocument.defaultView.getComputedStyle(this.dom).direction==="rtl",a=e.clientX,s=e.currentTarget;s.setPointerCapture?.(e.pointerId);let p=this.node.attrs.width,o=h=>{let l=(h.clientX-a)*(n?-1:1);p=Math.max(E,Math.min(Math.floor(t)||E,Math.round(r+l))),this.frame.style.width=`${p}px`},f=h=>{s.removeEventListener("pointermove",o),s.removeEventListener("pointerup",b),s.removeEventListener("pointercancel",v);let l=this.getPos();h&&l!=null&&p!==this.node.attrs.width?this.view.dispatch(d(this.view.state.tr.setNodeMarkup(l,null,{...this.node.attrs,width:p}))):this.frame.style.width=this.node.attrs.width?`${this.node.attrs.width}px`:""},b=()=>f(!0),v=()=>f(!1);s.addEventListener("pointermove",o),s.addEventListener("pointerup",b),s.addEventListener("pointercancel",v)}selectNode(){this.dom.classList.add("is-selected")}deselectNode(){this.dom.classList.remove("is-selected")}stopEvent(e){return this.caption.contains(e.target)||this.alignBar.contains(e.target)||e.target.classList?.contains("page-image-handle")}ignoreMutation(){return!0}},A=i=>i==null?"":i<1024?`${i} B`:i<1024*1024?`${Math.round(i/1024)} KB`:`${(i/(1024*1024)).toFixed(1)} MB`,u=class{constructor(e,t){this.node=e;let r=t.dom.ownerDocument;this.dom=r.createElement("div"),this.dom.className="page-file",this.dom.addEventListener("dragstart",n=>{n.preventDefault(),n.stopPropagation()}),this.link=r.createElement("a"),this.link.className="page-file-link",this.link.target="_blank",this.link.rel="noopener noreferrer",this.icon=r.createElement("span"),this.icon.className="page-file-icon",this.icon.textContent="\u2398",this.name=r.createElement("span"),this.name.className="page-file-name",this.meta=r.createElement("span"),this.meta.className="page-file-meta",this.link.append(this.icon,this.name,this.meta),this.dom.append(this.link),this.render(e)}render(e){this.node=e,this.dom.dataset.id=e.attrs.id??"";let t=x(e.attrs.src);t?this.link.setAttribute("href",t):this.link.removeAttribute("href"),this.name.textContent=e.attrs.name||"file",this.meta.textContent=A(e.attrs.size)}update(e){return e.type!==this.node.type?!1:(this.render(e),!0)}selectNode(){this.dom.classList.add("is-selected")}deselectNode(){this.dom.classList.remove("is-selected")}stopEvent(e){return this.link.contains(e.target)}ignoreMutation(){return!0}};function D({view:i=null}={}){return i&&g.set(i,k),{id:"media",nodeViews:{image:(e,t,r)=>new m(e,t,r),file:(e,t)=>new u(e,t)},css:y,dispose(){i&&g.get(i)===k&&g.delete(i)}}}export{u as FileView,m as ImageView,y as MEDIA_CSS,D as createFeature};
@@ -0,0 +1 @@
1
+ import"./c-VHNSBD2M.js";function _(e){let p=e.regex,s=/[\p{XID_Start}_]\p{XID_Continue}*/u,c=["and","as","assert","async","await","break","case","class","continue","def","del","elif","else","except","finally","for","from","global","if","import","in","is","lambda","match","nonlocal|10","not","or","pass","raise","return","try","while","with","yield"],r={$pattern:/[A-Za-z]\w+|__\w+__/,keyword:c,built_in:["__import__","abs","all","any","ascii","bin","bool","breakpoint","bytearray","bytes","callable","chr","classmethod","compile","complex","delattr","dict","dir","divmod","enumerate","eval","exec","filter","float","format","frozenset","getattr","globals","hasattr","hash","help","hex","id","input","int","isinstance","issubclass","iter","len","list","locals","map","max","memoryview","min","next","object","oct","open","ord","pow","print","property","range","repr","reversed","round","set","setattr","slice","sorted","staticmethod","str","sum","super","tuple","type","vars","zip"],literal:["__debug__","Ellipsis","False","None","NotImplemented","True"],type:["Any","Callable","Coroutine","Dict","List","Literal","Generic","Optional","Sequence","Set","Tuple","Type","Union"]},n={className:"meta",begin:/^(>>>|\.\.\.) /},t={className:"subst",begin:/\{/,end:/\}/,keywords:r,illegal:/#/},l={begin:/\{\{/,relevance:0},b={className:"string",contains:[e.BACKSLASH_ESCAPE],variants:[{begin:/([uU]|[bB]|[rR]|[bB][rR]|[rR][bB])?'''/,end:/'''/,contains:[e.BACKSLASH_ESCAPE,n],relevance:10},{begin:/([uU]|[bB]|[rR]|[bB][rR]|[rR][bB])?"""/,end:/"""/,contains:[e.BACKSLASH_ESCAPE,n],relevance:10},{begin:/([fF][rR]|[rR][fF]|[fF])'''/,end:/'''/,contains:[e.BACKSLASH_ESCAPE,n,l,t]},{begin:/([fF][rR]|[rR][fF]|[fF])"""/,end:/"""/,contains:[e.BACKSLASH_ESCAPE,n,l,t]},{begin:/([uU]|[rR])'/,end:/'/,relevance:10},{begin:/([uU]|[rR])"/,end:/"/,relevance:10},{begin:/([bB]|[bB][rR]|[rR][bB])'/,end:/'/},{begin:/([bB]|[bB][rR]|[rR][bB])"/,end:/"/},{begin:/([fF][rR]|[rR][fF]|[fF])'/,end:/'/,contains:[e.BACKSLASH_ESCAPE,l,t]},{begin:/([fF][rR]|[rR][fF]|[fF])"/,end:/"/,contains:[e.BACKSLASH_ESCAPE,l,t]},e.APOS_STRING_MODE,e.QUOTE_STRING_MODE]},a="[0-9](_?[0-9])*",d=`(\\b(${a}))?\\.(${a})|\\b(${a})\\.`,i=`\\b|${c.join("|")}`,o={className:"number",relevance:0,variants:[{begin:`(\\b(${a})|(${d}))[eE][+-]?(${a})[jJ]?(?=${i})`},{begin:`(${d})[jJ]?`},{begin:`\\b([1-9](_?[0-9])*|0+(_?0)*)[lLjJ]?(?=${i})`},{begin:`\\b0[bB](_?[01])+[lL]?(?=${i})`},{begin:`\\b0[oO](_?[0-7])+[lL]?(?=${i})`},{begin:`\\b0[xX](_?[0-9a-fA-F])+[lL]?(?=${i})`},{begin:`\\b(${a})[jJ](?=${i})`}]},m={className:"comment",begin:p.lookahead(/# type:/),end:/$/,keywords:r,contains:[{begin:/# type:/},{begin:/#/,end:/\b\B/,endsWithParent:!0}]},g={className:"params",variants:[{className:"",begin:/\(\s*\)/,skip:!0},{begin:/\(/,end:/\)/,excludeBegin:!0,excludeEnd:!0,keywords:r,contains:["self",n,o,b,e.HASH_COMMENT_MODE]}]};return t.contains=[b,o,n],{name:"Python",aliases:["py","gyp","ipython"],unicodeRegex:!0,keywords:r,illegal:/(<\/|\?)|=>/,contains:[n,o,{begin:/\bself\b/},{beginKeywords:"if",relevance:0},b,m,e.HASH_COMMENT_MODE,{match:[/\bdef/,/\s+/,s],scope:{1:"keyword",3:"title.function"},contains:[g]},{variants:[{match:[/\bclass/,/\s+/,s,/\s*/,/\(\s*/,s,/\s*\)/]},{match:[/\bclass/,/\s+/,s]}],scope:{1:"keyword",3:"title.class",6:"title.class.inherited"}},{className:"meta",begin:/^[\t ]*@/,end:/(?=#)|$/,contains:[o,g,b]}]}}export{_ as default};