@panphora/clayjs 1.15.2 → 1.17.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 (551) 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 +84291 -57611
  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-ZUE7PSCI.js +1 -0
  21. package/dist/m/attrs/save-freeze-MYNVXREN.js +1 -0
  22. package/dist/m/c-2AZDZWCK.js +1 -0
  23. package/dist/m/c-2SPVQSHC.js +1 -0
  24. package/dist/m/c-2YYDMLNZ.js +1 -0
  25. package/dist/m/c-336SGU5W.js +1 -0
  26. package/dist/m/c-33JJ6CBX.js +2 -0
  27. package/dist/m/c-3GJ4SDE2.js +1 -0
  28. package/dist/m/c-3H6BZDNJ.js +6 -0
  29. package/dist/m/c-3OWDMNJR.js +2 -0
  30. package/dist/m/c-3RUU4TPX.js +91 -0
  31. package/dist/m/c-3XIRD4NU.js +1 -0
  32. package/dist/m/c-46XYM55L.js +1 -0
  33. package/dist/m/c-4DFEJ2PO.js +3 -0
  34. package/dist/m/c-4JZDZFF6.js +1 -0
  35. package/dist/m/c-4L3BTFRK.js +1 -0
  36. package/dist/m/c-4Q2XTQ2N.js +2 -0
  37. package/dist/m/c-4WKFKEKF.js +1 -0
  38. package/dist/m/c-56QRZTZH.js +1 -0
  39. package/dist/m/c-5J4E7O4Y.js +4 -0
  40. package/dist/m/c-5LKDWQTL.js +19 -0
  41. package/dist/m/c-5QWQ7A5L.js +1 -0
  42. package/dist/m/c-5RJFTLSF.js +1 -0
  43. package/dist/m/c-5V3MOVJT.js +1 -0
  44. package/dist/m/c-5VYOWDTI.js +1 -0
  45. package/dist/m/c-5YIHJ3TJ.js +1 -0
  46. package/dist/m/c-6AZOGAPE.js +1 -0
  47. package/dist/m/c-6CRUUXOX.js +5 -0
  48. package/dist/m/c-6HMB24EV.js +1 -0
  49. package/dist/m/c-6KEVEQ7L.js +1 -0
  50. package/dist/m/c-6NC5I2TV.js +1 -0
  51. package/dist/m/c-74MGYWZF.js +1 -0
  52. package/dist/m/c-7DJDKPGL.js +1 -0
  53. package/dist/m/c-7OLLJPWP.js +1 -0
  54. package/dist/m/c-7SWMYKAI.js +1 -0
  55. package/dist/m/c-A3E3NIMC.js +1 -0
  56. package/dist/m/c-A7LS5UZW.js +1 -0
  57. package/dist/m/c-AMSNPOCX.js +1 -0
  58. package/dist/m/c-AQLFEATB.js +1 -0
  59. package/dist/m/c-B3JM5ZXC.js +1 -0
  60. package/dist/m/c-BBVGTQG7.js +1 -0
  61. package/dist/m/c-BPF2NSPV.js +1 -0
  62. package/dist/m/c-BQ6LOBEE.js +1 -0
  63. package/dist/m/c-BTDI4Y23.js +1 -0
  64. package/dist/m/c-BWFVSBDF.js +1 -0
  65. package/dist/m/c-BYTKL6UX.js +1 -0
  66. package/dist/m/c-CFHW5AMY.js +6 -0
  67. package/dist/m/c-CJ3A7ZKE.js +1 -0
  68. package/dist/m/c-CQHPGKX2.js +1 -0
  69. package/dist/m/c-CYWLPPUS.js +1 -0
  70. package/dist/m/c-CZUSOB7V.js +1 -0
  71. package/dist/m/c-DCFSEJZG.js +1 -0
  72. package/dist/m/c-DCXOXBF3.js +1 -0
  73. package/dist/m/c-DFS4XZJV.js +2 -0
  74. package/dist/m/c-DNENWY4O.js +1 -0
  75. package/dist/m/c-DNZ5IFM6.js +1 -0
  76. package/dist/m/c-E4LIR5X5.js +1 -0
  77. package/dist/m/c-EJTGYSLN.js +1 -0
  78. package/dist/m/c-EVCQ3BKA.js +1 -0
  79. package/dist/m/c-EZU56NQV.js +34 -0
  80. package/dist/m/c-FDNHHZY5.js +1 -0
  81. package/dist/m/c-FILLTJA7.js +1 -0
  82. package/dist/m/c-FRLHSY7E.js +1 -0
  83. package/dist/m/c-FROJUZMV.js +1 -0
  84. package/dist/m/c-G2JPKCTP.js +1 -0
  85. package/dist/m/c-GB6TU7WV.js +1 -0
  86. package/dist/m/c-GFJJEBTU.js +1 -0
  87. package/dist/m/c-GJAEGGXY.js +1 -0
  88. package/dist/m/c-GOWBDM6J.js +1 -0
  89. package/dist/m/c-GQ6F6IDK.js +1 -0
  90. package/dist/m/c-GSFIGKOP.js +1 -0
  91. package/dist/m/c-GY422N3Q.js +1 -0
  92. package/dist/m/c-H4LG442Q.js +1 -0
  93. package/dist/m/c-HA6INT6J.js +1 -0
  94. package/dist/m/c-HAWFNBYG.js +1 -0
  95. package/dist/m/c-HDDEEL77.js +1 -0
  96. package/dist/m/c-HFKUVACH.js +1 -0
  97. package/dist/m/c-HHDFCNHV.js +1 -0
  98. package/dist/m/c-HPURYVZS.js +2 -0
  99. package/dist/m/c-I2ZATQCD.js +2 -0
  100. package/dist/m/c-IEM4NTCS.js +1 -0
  101. package/dist/m/c-IJUK2GPW.js +1 -0
  102. package/dist/m/c-IW6GGOU2.js +1 -0
  103. package/dist/m/c-JAX2667S.js +6 -0
  104. package/dist/m/c-JDCX26UP.js +25 -0
  105. package/dist/m/c-JRKY44DK.js +1 -0
  106. package/dist/m/c-JU3NK25H.js +1 -0
  107. package/dist/m/c-KAU6E43D.js +1 -0
  108. package/dist/m/c-KBS3UV6B.js +1 -0
  109. package/dist/m/c-KGVGROZT.js +1 -0
  110. package/dist/m/c-KI7M4AY3.js +1 -0
  111. package/dist/m/c-KIPQJX4B.js +1 -0
  112. package/dist/m/c-KQ6TYJAP.js +135 -0
  113. package/dist/m/c-KU3ZFADW.js +1 -0
  114. package/dist/m/c-L4WQSC27.js +1 -0
  115. package/dist/m/c-LFPHCXY3.js +1 -0
  116. package/dist/m/c-LRPUO2MX.js +1 -0
  117. package/dist/m/c-LWLBHLVC.js +3 -0
  118. package/dist/m/c-LZJPNR2W.js +1 -0
  119. package/dist/m/c-M2L47S2X.js +7 -0
  120. package/dist/m/c-MFP2ZWD4.js +1 -0
  121. package/dist/m/c-MKSQ4Y57.js +1 -0
  122. package/dist/m/c-MTQHWQC3.js +1 -0
  123. package/dist/m/c-N326R2JD.js +1 -0
  124. package/dist/m/c-N7JPUPGC.js +1 -0
  125. package/dist/m/c-NRPJEVJS.js +1 -0
  126. package/dist/m/c-NUFFJVVJ.js +1 -0
  127. package/dist/m/c-NUHP2XDB.js +1 -0
  128. package/dist/m/c-NUHSPT5P.js +1 -0
  129. package/dist/m/c-O72HVYSA.js +1 -0
  130. package/dist/m/c-OCSZ4QGN.js +1 -0
  131. package/dist/m/c-OIBUTDXI.js +1 -0
  132. package/dist/m/c-OIDRZKAF.js +1 -0
  133. package/dist/m/c-OW5QIGG3.js +1 -0
  134. package/dist/m/c-P7KNDG34.js +1 -0
  135. package/dist/m/c-PGRCK73F.js +1 -0
  136. package/dist/m/c-PQ5LK6QE.js +993 -0
  137. package/dist/m/c-PS5ARVWR.js +9 -0
  138. package/dist/m/c-PZ4XEPUP.js +2 -0
  139. package/dist/m/c-Q622NS2Y.js +1 -0
  140. package/dist/m/c-Q7NQD65V.js +1 -0
  141. package/dist/m/c-QH63LQOS.js +1 -0
  142. package/dist/m/c-QHIWXHRO.js +1 -0
  143. package/dist/m/c-QHWJ5ZIJ.js +1 -0
  144. package/dist/m/c-QICP2YR5.js +1 -0
  145. package/dist/m/c-QJ4OM3G6.js +1 -0
  146. package/dist/m/c-QNKREOL6.js +1 -0
  147. package/dist/m/c-R3L7ZJGB.js +2 -0
  148. package/dist/m/c-R7IWVINQ.js +1 -0
  149. package/dist/m/c-RM7J7BV2.js +1 -0
  150. package/dist/m/c-RSMOODDU.js +1 -0
  151. package/dist/m/c-RVMWGXEJ.js +1 -0
  152. package/dist/m/c-RYUXUUBX.js +1 -0
  153. package/dist/m/c-S4ZEH46B.js +9 -0
  154. package/dist/m/c-S7H2DRCB.js +1 -0
  155. package/dist/m/c-S7LK4KUE.js +1 -0
  156. package/dist/m/c-SDAXDM2D.js +1 -0
  157. package/dist/m/c-SGIA4IEQ.js +188 -0
  158. package/dist/m/c-SMBZG5X4.js +1 -0
  159. package/dist/m/c-SMGU7RT3.js +235 -0
  160. package/dist/m/c-SPIORRYS.js +1 -0
  161. package/dist/m/c-SWLRT66R.js +1 -0
  162. package/dist/m/c-SZGYW5HT.js +1 -0
  163. package/dist/m/c-TCCA5BZN.js +2 -0
  164. package/dist/m/c-TCJTVAFN.js +1 -0
  165. package/dist/m/c-TJ6WOJL3.js +67 -0
  166. package/dist/m/c-TQEMVJCS.js +1 -0
  167. package/dist/m/c-TRS6TM6O.js +1 -0
  168. package/dist/m/c-TYLXX4NF.js +21 -0
  169. package/dist/m/c-U62OB4BT.js +1 -0
  170. package/dist/m/c-U6YWUAR3.js +8 -0
  171. package/dist/m/c-UDCSU5G5.js +2 -0
  172. package/dist/m/c-UDUUJPFZ.js +1 -0
  173. package/dist/m/c-UGHH4MB3.js +1 -0
  174. package/dist/m/c-UL2YUY52.js +1 -0
  175. package/dist/m/c-VAK7SG37.js +1 -0
  176. package/dist/m/c-VDSS4K3Z.js +1 -0
  177. package/dist/m/c-VE6ZMYMC.js +1 -0
  178. package/dist/m/c-VG5XIN4T.js +1 -0
  179. package/dist/m/c-VHM5XQHK.js +1 -0
  180. package/dist/m/c-VHNSBD2M.js +1 -0
  181. package/dist/m/c-VI5RMSVY.js +1 -0
  182. package/dist/m/c-VKEDWYDF.js +1 -0
  183. package/dist/m/c-VRZN56XY.js +1 -0
  184. package/dist/m/c-W5MCHEGA.js +1 -0
  185. package/dist/m/c-WDC5GVKU.js +1 -0
  186. package/dist/m/c-WN5AY3OZ.js +1 -0
  187. package/dist/m/c-WNYBLIOZ.js +1 -0
  188. package/dist/m/c-WRBKEJD4.js +1 -0
  189. package/dist/m/c-WWXIDH4O.js +28 -0
  190. package/dist/m/c-WYFDLITL.js +1 -0
  191. package/dist/m/c-XCNTK76U.js +1 -0
  192. package/dist/m/c-XMS6DPBR.js +1 -0
  193. package/dist/m/c-XN6MBKI6.js +67 -0
  194. package/dist/m/c-XPELB6E5.js +1 -0
  195. package/dist/m/c-XQXZAO7N.js +1 -0
  196. package/dist/m/c-Y5HBBIQ4.js +1 -0
  197. package/dist/m/c-ZE46QDIH.js +1 -0
  198. package/dist/m/c-ZUCOKOHT.js +1 -0
  199. package/dist/m/c-ZVPVXTJF.js +4 -0
  200. package/dist/m/c-ZVRKXKM7.js +1 -0
  201. package/dist/m/c-ZWIOJGMT.js +1 -0
  202. package/dist/m/core/admin-attrs-QHOKPJ7W.js +1 -0
  203. package/dist/m/core/autosave-HRYGUWV6.js +1 -0
  204. package/dist/m/core/conflict-notice-6MROJN2L.js +1 -0
  205. package/dist/m/core/draft-mode-WSQAT67S.js +1 -0
  206. package/dist/m/core/host-permission-FNXVEFNE.js +1 -0
  207. package/dist/m/core/is-edit-mode-KTWA3O5N.js +1 -0
  208. package/dist/m/core/persist-JFYRHMRJ.js +3 -0
  209. package/dist/m/core/recovery-FLTCC2OC.js +1 -0
  210. package/dist/m/core/save-HQZ4S667.js +1 -0
  211. package/dist/m/core/save-core-KGQWFUNH.js +1 -0
  212. package/dist/m/core/snapshot-EGQZNT45.js +1 -0
  213. package/dist/m/core/unsaved-warning-IDJLD66H.js +1 -0
  214. package/dist/m/dom/all-APS5ZSKP.js +1 -0
  215. package/dist/m/dom/dom-helpers-L7OSR6S4.js +1 -0
  216. package/dist/m/events/index-RN2JNGBV.js +1 -0
  217. package/dist/m/internals/index-PVXGPUDA.js +1 -0
  218. package/dist/m/lib/cache-bust-MUMFXZK6.js +1 -0
  219. package/dist/m/lib/region-policy-SB2AWVG5.js +1 -0
  220. package/dist/m/loader-S4I7GKXR.js +1 -0
  221. package/dist/m/manifest-4C419D67.js +1 -0
  222. package/dist/m/manifest-edit-B077F288.js +1 -0
  223. package/dist/m/manifest.json +3988 -0
  224. package/dist/m/options/options-EJMS3K24.js +1 -0
  225. package/dist/m/page/editor-NNJA4OKD.js +202 -0
  226. package/dist/m/plugins/ai-edit-QN4PMMNL.js +6 -0
  227. package/dist/m/plugins/bind-text-NX46N5UV.js +1 -0
  228. package/dist/m/plugins/cms-HP3LSTPN.js +2293 -0
  229. package/dist/m/plugins/demo-RM5IR6AO.js +1 -0
  230. package/dist/m/plugins/derive-UAAA4V4S.js +1 -0
  231. package/dist/m/plugins/indicator-URDBBOQO.js +1 -0
  232. package/dist/m/plugins/live-HFWD4OIH.js +1 -0
  233. package/dist/m/plugins/menu-3HIEQSI6.js +138 -0
  234. package/dist/m/plugins/message-LQ6EDH4V.js +1 -0
  235. package/dist/m/plugins/page-JOKB6XPR.js +2 -0
  236. package/dist/m/plugins/page-view-NXOJHNW6.js +1 -0
  237. package/dist/m/plugins/people-SGPJKANK.js +1 -0
  238. package/dist/m/plugins/quickcrop-QNY3PKLD.js +26 -0
  239. package/dist/m/plugins/quickcrop-QNY3PKLD.js.LEGAL.txt +7 -0
  240. package/dist/m/plugins/richclay-NRQDSWX6.js +517 -0
  241. package/dist/m/plugins/richclay-NRQDSWX6.js.LEGAL.txt +1 -0
  242. package/dist/m/plugins/sortable-GWT4PWDV.js +1 -0
  243. package/dist/m/plugins/source-4ZRSAIYM.js +1 -0
  244. package/dist/m/plugins/undo-VDA5P7FH.js +1 -0
  245. package/dist/m/plugins/unsent-HJFLQJ2O.js +1 -0
  246. package/dist/m/plugins/upgrade-W7FG5VFG.js +1 -0
  247. package/dist/m/plugins/upload-WLYKK6TL.js +1 -0
  248. package/dist/m/plugins/visitor-drafts-LIDY7NH6.js +21 -0
  249. package/dist/m/plugins/visitor-drafts-owner-ZXCKBZE7.js +1 -0
  250. package/dist/m/plugins/wire-4N6GYAF6.js +1 -0
  251. package/dist/m/reader-core-DXYCURFF.js +68 -0
  252. package/dist/m/route/route-KOCZSEGN.js +1 -0
  253. package/dist/m/sync/live-sync-J7VMYTKS.js +1 -0
  254. package/dist/m/ui/index-3JLVI27O.js +1 -0
  255. package/dist/m/utils/index-4TJCVLT7.js +1 -0
  256. package/dist/m/vendor/Sortable.vendor-A755ITLN.js +3 -0
  257. package/dist/m/vendor/Sortable.vendor-A755ITLN.js.LEGAL.txt +1 -0
  258. package/dist/m/vendor/sap-core.vendor-A7BMUYZT.js +6 -0
  259. package/dist/offline-manifest.json +4034 -0
  260. package/dist/page/themes/light-1.css +430 -0
  261. package/dist/server/core.cjs +23748 -22855
  262. package/dist/server/offline-runtime.cjs +4954 -0
  263. package/dist/server/offline-runtime.mjs +4923 -0
  264. package/dist/server/rooms.mjs +9 -0
  265. package/docs/guide.md +1078 -669
  266. package/entries/all.js +2 -0
  267. package/entries/clay-data.js +1 -1
  268. package/entries/clay-dom.js +2 -0
  269. package/entries/clay-events.js +2 -0
  270. package/entries/clay-internals.js +2 -0
  271. package/entries/clay-options.js +2 -0
  272. package/entries/clay-router.js +2 -0
  273. package/entries/clay-ui.js +2 -0
  274. package/entries/clay-utils.js +2 -0
  275. package/entries/clay.js +2 -0
  276. package/entries/sap.js +6 -6
  277. package/fonts/ibm-plex-mono-LICENSE +93 -0
  278. package/fonts/ibm-plex-mono-latin-300-normal.woff2 +0 -0
  279. package/fonts/ibm-plex-mono-latin-400-italic.woff2 +0 -0
  280. package/fonts/ibm-plex-mono-latin-400-normal.woff2 +0 -0
  281. package/fonts/ibm-plex-mono-latin-500-normal.woff2 +0 -0
  282. package/fonts/ibm-plex-mono-latin-600-normal.woff2 +0 -0
  283. package/fonts/ibm-plex-sans-LICENSE +93 -0
  284. package/fonts/ibm-plex-sans-latin-400-normal.woff2 +0 -0
  285. package/fonts/ibm-plex-sans-latin-500-normal.woff2 +0 -0
  286. package/fonts/ibm-plex-sans-latin-600-normal.woff2 +0 -0
  287. package/fonts/ibm-plex.css +71 -0
  288. package/fonts/inter-LICENSE +93 -0
  289. package/fonts/inter-cyrillic-ext-wght-normal.woff2 +0 -0
  290. package/fonts/inter-cyrillic-wght-normal.woff2 +0 -0
  291. package/fonts/inter-greek-ext-wght-normal.woff2 +0 -0
  292. package/fonts/inter-greek-wght-normal.woff2 +0 -0
  293. package/fonts/inter-latin-ext-wght-normal.woff2 +0 -0
  294. package/fonts/inter-latin-wght-normal.woff2 +0 -0
  295. package/fonts/inter-vietnamese-wght-normal.woff2 +0 -0
  296. package/fonts/inter.css +62 -0
  297. package/fonts/newsreader-LICENSE +93 -0
  298. package/fonts/newsreader-latin-ext-opsz-normal.woff2 +0 -0
  299. package/fonts/newsreader-latin-opsz-normal.woff2 +0 -0
  300. package/fonts/newsreader-vietnamese-opsz-normal.woff2 +0 -0
  301. package/fonts/newsreader.css +26 -0
  302. package/fonts/work-sans-LICENSE +93 -0
  303. package/fonts/work-sans-latin-wght-normal.woff2 +0 -0
  304. package/fonts/work-sans.css +8 -0
  305. package/package.json +20 -3
  306. package/packed-contract.json +1 -0
  307. package/src/attrs/add-from.js +27 -4
  308. package/src/attrs/save-freeze.js +7 -52
  309. package/src/core/admin-attrs.js +119 -12
  310. package/src/core/admin-contenteditable.js +12 -10
  311. package/src/core/admin-inputs.js +14 -15
  312. package/src/core/admin-onclick.js +2 -0
  313. package/src/core/autosave.js +74 -21
  314. package/src/core/boot-phase.js +2 -1
  315. package/src/core/conflict-download.js +19 -23
  316. package/src/core/conflict-notice-ui.js +1173 -0
  317. package/src/core/conflict-notice.js +140 -697
  318. package/src/core/download.js +32 -0
  319. package/src/core/edit-mode.js +147 -14
  320. package/src/core/etag.js +30 -12
  321. package/src/core/host-meta.js +90 -8
  322. package/src/core/host-permission.js +29 -0
  323. package/src/core/is-edit-mode.js +145 -12
  324. package/src/core/mode-key.js +125 -0
  325. package/src/core/mode-lifecycle.js +544 -0
  326. package/src/core/mode-receipt.js +30 -0
  327. package/src/core/mode-refusal.js +13 -0
  328. package/src/core/mode-resources.js +52 -0
  329. package/src/core/mode-support.js +82 -0
  330. package/src/core/mode-switch.js +259 -0
  331. package/src/core/mode-transition.js +112 -0
  332. package/src/core/page-data-write.js +305 -0
  333. package/src/core/page-data.js +26 -227
  334. package/src/core/page-format-wire.js +4 -0
  335. package/src/core/page-format.js +58 -0
  336. package/src/core/persist.js +37 -9
  337. package/src/core/preserve-authored.js +114 -0
  338. package/src/core/recovery.js +772 -0
  339. package/src/core/runtime-url.js +105 -0
  340. package/src/core/save-core.js +113 -12
  341. package/src/core/save-replace.js +72 -0
  342. package/src/core/save-size-notice.js +134 -0
  343. package/src/core/save-size.js +140 -0
  344. package/src/core/save.js +806 -119
  345. package/src/core/snapshot.js +159 -11
  346. package/src/core/source-map.js +157 -9
  347. package/src/core/unsaved-warning.js +14 -4
  348. package/src/core/upgrade-run.js +408 -0
  349. package/src/core/version.js +18 -0
  350. package/src/lib/assets.js +30 -0
  351. package/src/lib/autosave-debug-gate.js +50 -0
  352. package/src/lib/autosave-scheduler.js +140 -0
  353. package/src/lib/boot-imports.js +8 -0
  354. package/src/lib/derived.js +3 -1
  355. package/src/lib/dirty-gate.js +15 -0
  356. package/src/lib/doc-storage.js +33 -0
  357. package/src/lib/effect.js +9 -4
  358. package/src/lib/mutation.js +4 -2
  359. package/src/lib/offline-runtime.js +226 -0
  360. package/src/lib/preload.js +48 -0
  361. package/src/lib/root-attrs.js +1 -1
  362. package/src/lib/trash.js +18 -0
  363. package/src/lib/undo/capture-move.js +152 -0
  364. package/src/live/local-channel.js +61 -0
  365. package/src/live/local-lane.js +60 -9
  366. package/src/live/server-lane.js +6 -3
  367. package/src/loader-logic.js +76 -15
  368. package/src/loader.js +218 -30
  369. package/src/page/adopt-boot.js +76 -22
  370. package/src/page/adopt.js +25 -4
  371. package/src/page/awareness.js +230 -0
  372. package/src/page/blocks.js +113 -6
  373. package/src/page/blocksel.js +20 -4
  374. package/src/page/board-face.js +13 -0
  375. package/src/page/board-panel.js +5 -17
  376. package/src/page/board-style.js +2 -13
  377. package/src/page/board-view.js +1 -11
  378. package/src/page/board-views.js +3 -0
  379. package/src/page/board.js +2 -2
  380. package/src/page/boot-pack.js +26 -0
  381. package/src/page/boot.js +237 -0
  382. package/src/page/chart-tables.js +11 -0
  383. package/src/page/chart.js +6 -10
  384. package/src/page/checklist.js +1 -1
  385. package/src/page/checkpoint-proof.js +289 -0
  386. package/src/page/chrome.js +431 -63
  387. package/src/page/csv-import.js +17 -2
  388. package/src/page/document-title-dom.js +52 -0
  389. package/src/page/document-title-runtime.js +90 -0
  390. package/src/page/document-title.js +12 -0
  391. package/src/page/drag.js +48 -13
  392. package/src/page/drop.js +2 -1
  393. package/src/page/editor.js +399 -90
  394. package/src/page/emoji-data.js +162 -0
  395. package/src/page/feature-loader.js +72 -0
  396. package/src/page/features/board.js +21 -0
  397. package/src/page/features/chart.js +11 -0
  398. package/src/page/features/code.js +13 -0
  399. package/src/page/features/dates.js +180 -0
  400. package/src/page/features/emoji.js +187 -0
  401. package/src/page/features/media.js +290 -0
  402. package/src/page/features/mentions.js +188 -0
  403. package/src/page/features/registry.js +28 -0
  404. package/src/page/features/table.js +383 -0
  405. package/src/page/{tool-view.js → features/tool.js} +33 -2
  406. package/src/page/format-codec.js +215 -0
  407. package/src/page/format-command.js +9 -0
  408. package/src/page/format-gate.js +179 -0
  409. package/src/page/format-host.js +54 -0
  410. package/src/page/format-level.js +157 -0
  411. package/src/page/format-native-commands.js +142 -0
  412. package/src/page/format-native.js +42 -0
  413. package/src/page/highlight-slot.js +23 -0
  414. package/src/page/highlight.js +30 -16
  415. package/src/page/history-intent.js +78 -0
  416. package/src/page/inline.js +45 -28
  417. package/src/page/items.js +67 -14
  418. package/src/page/link.js +1 -0
  419. package/src/page/markdown.js +112 -3
  420. package/src/page/media-views.js +3 -0
  421. package/src/page/media.js +33 -245
  422. package/src/page/mention-picker.js +99 -0
  423. package/src/page/merge.js +1 -1
  424. package/src/page/outline-cache.js +11 -0
  425. package/src/page/placeholder.js +27 -7
  426. package/src/page/projection.js +240 -51
  427. package/src/page/reader-patch.js +306 -0
  428. package/src/page/recover.js +1 -1
  429. package/src/page/rich/page-tool.js +1 -4
  430. package/src/page/runtime-owner.js +27 -0
  431. package/src/page/save-projection.js +46 -4
  432. package/src/page/save-states.js +1 -1
  433. package/src/page/schema.js +47 -0
  434. package/src/page/table-rect-key.js +3 -0
  435. package/src/page/table-select.js +4 -3
  436. package/src/page/table-style.js +1 -1
  437. package/src/page/table-views.js +3 -0
  438. package/src/page/table.js +8 -293
  439. package/src/page/themes/content.css +25 -1
  440. package/src/page/themes/light-1.css +163 -2
  441. package/src/page/themes/light-1.source.css +269 -0
  442. package/src/page/tool-capability.js +3 -0
  443. package/src/page/tool-views.js +3 -0
  444. package/src/page/view-hooks.js +32 -0
  445. package/src/page/view.js +390 -107
  446. package/src/page/ybind/awareness.js +172 -0
  447. package/src/page/ybind/binding.js +40 -5
  448. package/src/page/ybind/bridge.js +50 -47
  449. package/src/page/ybind/decode.js +52 -19
  450. package/src/page/ybind/doc.js +27 -2
  451. package/src/page/ybind/group.js +12 -3
  452. package/src/page/ybind/index.js +2 -0
  453. package/src/page/ybind/lineage.js +71 -0
  454. package/src/page/ybind/marks.js +26 -1
  455. package/src/page/ybind/migrate.js +48 -13
  456. package/src/page/ybind/moves.js +32 -21
  457. package/src/page/ybind/positions.js +50 -0
  458. package/src/page/ybind/provider.js +97 -24
  459. package/src/page/ybind/recovery-proof.js +191 -0
  460. package/src/page/ybind/recovery-replay.js +488 -0
  461. package/src/page/ybind/tokens.js +15 -6
  462. package/src/page/ybind/walk.js +10 -3
  463. package/src/page/ybind/writer.js +48 -4
  464. package/src/plugins/ai-edit.js +167 -32
  465. package/src/plugins/bind-text.js +218 -0
  466. package/src/plugins/cms.js +93 -0
  467. package/src/plugins/indicator.js +57 -5
  468. package/src/plugins/live.js +319 -35
  469. package/src/plugins/menu/claygoo.svg.js +1 -0
  470. package/src/plugins/menu/seo-head.js +323 -0
  471. package/src/plugins/menu/seo.js +849 -0
  472. package/src/plugins/menu.js +425 -0
  473. package/src/plugins/page-view.js +131 -0
  474. package/src/plugins/page.js +1131 -270
  475. package/src/plugins/people.js +158 -31
  476. package/src/plugins/richclay.js +119 -9
  477. package/src/plugins/sortable.js +370 -60
  478. package/src/plugins/source.js +189 -366
  479. package/src/plugins/undo.js +289 -19
  480. package/src/plugins/unsent.js +132 -0
  481. package/src/plugins/upgrade-run.js +1 -0
  482. package/src/plugins/upgrade.js +210 -0
  483. package/src/plugins/upload-task.js +571 -0
  484. package/src/plugins/upload-ui.js +265 -0
  485. package/src/plugins/upload.js +34 -153
  486. package/src/plugins/visitor-drafts/inert.js +32 -0
  487. package/src/plugins/visitor-drafts/intro.js +2 -1
  488. package/src/plugins/visitor-drafts/owner-chip.js +3 -0
  489. package/src/plugins/visitor-drafts/prompt.js +2 -2
  490. package/src/plugins/visitor-drafts-owner.js +85 -0
  491. package/src/plugins/visitor-drafts.js +31 -42
  492. package/src/plugins/wire.js +82 -1
  493. package/src/reader-core.js +26 -0
  494. package/src/recovery/conflicts.js +287 -0
  495. package/src/recovery/identity.js +154 -0
  496. package/src/recovery/store.js +792 -0
  497. package/src/recovery/undo.js +257 -0
  498. package/src/server/checkpoint/index.js +68 -4
  499. package/src/server/offline-runtime/index.js +214 -0
  500. package/src/server/rooms/index.js +2 -1
  501. package/src/server/rooms/live-data-rooms.js +2 -2
  502. package/src/server/rooms/page-admission.js +33 -0
  503. package/src/server/rooms/page-lineage.js +56 -0
  504. package/src/server/rooms/page-rebase.js +11 -5
  505. package/src/server/rooms/page-state.js +2 -0
  506. package/src/server/rooms/page-write-admission.js +9 -3
  507. package/src/source/session.js +705 -0
  508. package/src/sync/conflict-revert.js +5 -4
  509. package/src/sync/conflicts-edit.js +119 -0
  510. package/src/sync/conflicts-facade.js +49 -0
  511. package/src/sync/conflicts.js +99 -1
  512. package/src/sync/editing-marker.js +37 -6
  513. package/src/sync/editing-sender.js +8 -1
  514. package/src/sync/live-sync-edit.js +63 -0
  515. package/src/sync/live-sync.js +364 -119
  516. package/src/sync/local-presence.js +187 -0
  517. package/src/sync/merge-declarations.js +10 -0
  518. package/src/sync/merge-engine.js +12 -0
  519. package/src/sync/presence-store.js +412 -0
  520. package/src/sync/presence-target.js +243 -0
  521. package/src/sync/presence.js +72 -41
  522. package/src/sync/saved-handoff.js +200 -0
  523. package/src/sync/saved-stream.js +544 -0
  524. package/src/sync/version-guard.js +92 -0
  525. package/src/sync/wire-profile.js +81 -0
  526. package/src/ui/bevel-controls.js +2 -8
  527. package/src/ui/page-scheme.js +7 -0
  528. package/src/ui/skins/cms.js +1 -1
  529. package/src/ui/theme-config.js +150 -0
  530. package/src/ui/theme.js +6 -138
  531. package/src/ui/toast-lazy.js +11 -0
  532. package/src/vendor/LICENSES-optional.md +253 -0
  533. package/src/vendor/highlight.vendor.js +3 -0
  534. package/src/vendor/hljs-bash.vendor.js +2 -0
  535. package/src/vendor/hljs-css.vendor.js +2 -0
  536. package/src/vendor/hljs-javascript.vendor.js +2 -0
  537. package/src/vendor/hljs-json.vendor.js +2 -0
  538. package/src/vendor/hljs-python.vendor.js +2 -0
  539. package/src/vendor/hljs-xml.vendor.js +2 -0
  540. package/src/vendor/hyper-html-api-data.vendor.js +1 -1
  541. package/src/vendor/hyper-html-api-upgrade.vendor.js +5 -0
  542. package/src/vendor/hyper-morph-identity.vendor.js +2 -0
  543. package/src/vendor/hyper-morph-json.vendor.js +3 -0
  544. package/src/vendor/hyper-morph.vendor.js +6 -6
  545. package/src/vendor/hyper-undo.vendor.js +1 -1
  546. package/src/vendor/hypercms.vendor.js +169 -84
  547. package/src/vendor/marked.vendor.js +68 -0
  548. package/src/vendor/overtype.vendor.js +994 -0
  549. package/src/vendor/richclay.vendor.js +17 -17
  550. package/src/vendor/sap-core.vendor.js +5 -5
  551. package/src/vendor/sap-ownership.vendor.js +11 -7
@@ -0,0 +1 @@
1
+ import{b as l}from"../c-JAX2667S.js";import{e as i}from"../c-OW5QIGG3.js";import"../c-BPF2NSPV.js";import"../c-P7KNDG34.js";import"../c-CYWLPPUS.js";import"../c-N7JPUPGC.js";import"../c-HA6INT6J.js";import{h as c}from"../c-DCFSEJZG.js";import"../c-WRBKEJD4.js";import"../c-VHNSBD2M.js";var r="clay:demo:"+(document.documentElement.getAttribute("demo-key")||window.location.pathname),y=800,h=[c,"[data-richclay-toolbar]","[data-richclay-menu]","[data-richclay-dialog]","[data-richclay-live]","[data-richclay-float]","#squire-selection-start","#squire-selection-end",".squire-image-resize-container"].join(","),a=!1,d=null;document.addEventListener("clay:snapshot-ready",e=>{d=e.detail.documentElement.querySelector("body")?.outerHTML||null});function p(e){return typeof e=="string"?e:""}var f=window.fetch.bind(window);function g(e){let t=typeof e=="string"?e:e&&e.url||"";try{let o=new URL(t,window.location.href).pathname;return o==="/_/save"||o.startsWith("/_/save/")}catch{return!1}}window.fetch=(e,t={})=>(t.method||e&&e.method||"GET").toUpperCase()!=="POST"||!g(e)?f(e,t):new Promise(n=>{setTimeout(()=>{if(a){a=!1,n(new Response(JSON.stringify({msg:"Server not responding",msgType:"error"}),{status:503,headers:{"Content-Type":"application/json"}}));return}let m=d||p(t.body),s=new DOMParser().parseFromString(m,"text/html");s.querySelectorAll(h).forEach(u=>u.remove());try{localStorage.setItem(r,s.body.outerHTML)}catch{n(new Response(JSON.stringify({msg:"Couldn't save in this browser (storage is full or blocked)",msgType:"error"}),{status:507,headers:{"Content-Type":"application/json"}}));return}n(new Response(JSON.stringify({msg:"Saved in your browser",msgType:"success"}),{status:200,headers:{"Content-Type":"application/json"}}))},y)});async function w(){let e=localStorage.getItem(r);if(!e)return;let t=new DOMParser().parseFromString(e,"text/html");if(!i)for(let o of t.querySelectorAll(":is([editable], [clay-editable])[contenteditable]"))o.removeAttribute("contenteditable");await l(document.body,t.body,{morphStyle:"outerHTML",ignoreActiveValue:!0,scripts:{handle:!0,matchMode:"smart"}})}var v=w(),E={key:r,failNext(){a=!0},reset(){localStorage.removeItem(r),window.location.reload()}};export{E as demo,v as ready};
@@ -0,0 +1 @@
1
+ import"../c-VHNSBD2M.js";function n(){let o=window.Sap;return!!(o&&!o.core||window.clay?.loaded?.sap)}var a=n()?null:import("../vendor/sap-core.vendor-A7BMUYZT.js").then(()=>{});export{a as ready};
@@ -0,0 +1 @@
1
+ import{a as s}from"../c-2AZDZWCK.js";import{l as v}from"../c-OIBUTDXI.js";import{a as d}from"../c-4JZDZFF6.js";import{b as p,e as o}from"../c-VAK7SG37.js";import{a as m,b as i}from"../c-NUHP2XDB.js";import{a as f}from"../c-VKEDWYDF.js";import{j as u}from"../c-OW5QIGG3.js";import"../c-BPF2NSPV.js";import"../c-P7KNDG34.js";import"../c-CYWLPPUS.js";import"../c-N7JPUPGC.js";import"../c-HA6INT6J.js";import"../c-WRBKEJD4.js";import"../c-VHNSBD2M.js";var l={saving:"Saving\u2026",saved:"Saved",error:"Couldn't save",offline:"Offline, not saved",retrying:"Saving\u2026",blocked:"Can't save here"},g=new Set(["saving","retrying","blocked"]),b=new Set(["error","offline","blocked"]),h=[`background:${o.surface}`,`color:${o.ink}`,`border-color:${o["line-2"]}`],S=[`background:${o["ox-soft"]}`,`color:${o.ox}`,`border-color:color-mix(in srgb, ${o.ox} 28%, ${o["ox-soft"]})`],t=null,a=null;function T(){if(t&&t.isConnected)return t;let e=window.matchMedia?.("(prefers-reduced-motion: reduce)").matches;return t=v("div",["position:fixed","right:16px","bottom:16px","z-index:2147483000","padding:4px 12px",`font:500 13px/1.6 ${p}`,"opacity:0",`transition:${e?"none":"opacity .25s"}`,"pointer-events:none",`color-scheme:${d()}`]),t.setAttribute("data-clay-indicator",""),t.setAttribute("role","status"),document.body.appendChild(t),t}function x(e){if(!l[e])return;let n=e!=="blocked"&&(b.has(e)||e==="saved"&&s.savedToast);if(s.toasts&&n){clearTimeout(a),t&&(i(t,"opacity","0"),t.textContent="",delete t.dataset.state);return}let r=T();r.textContent=l[e],r.dataset.state=e,i(r,"color-scheme",d()),m(r,b.has(e)?S:h),i(r,"opacity","1"),clearTimeout(a),g.has(e)||(a=setTimeout(()=>{i(r,"opacity","0")},2200))}var c=null;function y(){if(s.chip=!0,c)return;c=new AbortController;let{signal:e}=c;for(let n of Object.keys(l))document.addEventListener("clay:save-"+n,()=>x(n),{signal:e});document.addEventListener("clay:page-save-state",n=>x(n.detail?.state),{signal:e})}function A(){c?.abort(),c=null,clearTimeout(a),a=null,t?.remove(),t=null}function $(){u()&&y()}function O(){return{id:"clay:indicator",order:700,prepare(e={}){return{enable(){e.initial!==!0&&y()},quiesce(){},resume(){},dispose(){A()}}}}}f($);export{O as indicatorParticipant,O as modeParticipant};
@@ -0,0 +1 @@
1
+ import{a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t}from"../c-S4ZEH46B.js";import"../c-TCCA5BZN.js";import"../c-LRPUO2MX.js";import"../c-A7LS5UZW.js";import"../c-5V3MOVJT.js";import"../c-LZJPNR2W.js";import"../c-TCJTVAFN.js";import"../c-GQ6F6IDK.js";import"../c-2SPVQSHC.js";import"../c-5VYOWDTI.js";import"../c-QJ4OM3G6.js";import"../c-MKSQ4Y57.js";import"../c-WYFDLITL.js";import"../c-UGHH4MB3.js";import"../c-ZWIOJGMT.js";import"../c-LWLBHLVC.js";import"../c-SDAXDM2D.js";import"../c-TQEMVJCS.js";import"../c-DCXOXBF3.js";import"../c-VRZN56XY.js";import"../c-IJUK2GPW.js";import"../c-OW5QIGG3.js";import"../c-BPF2NSPV.js";import"../c-P7KNDG34.js";import"../c-CYWLPPUS.js";import"../c-N7JPUPGC.js";import"../c-SPIORRYS.js";import"../c-XQXZAO7N.js";import"../c-S7LK4KUE.js";import"../c-VG5XIN4T.js";import"../c-2YYDMLNZ.js";import"../c-HA6INT6J.js";import"../c-DCFSEJZG.js";import"../c-WRBKEJD4.js";import"../c-VHNSBD2M.js";export{a as HOLD_MS,r as checkpointWithin,o as closeStore,k as confirmSaved,t as default,b as drainLiveWriter,q as fastLane,h as live,f as liveTags,c as liveWriterParticipant,c as modeParticipant,p as openStores,d as pageLaneReady,e as pageWriterReady,m as receiveFrame,j as registerPageCheckpoints,s as requestCheckpoint,l as sendingCapture,g as serializeLines,i as stageStore,n as storeOf};
@@ -0,0 +1,138 @@
1
+ import{a as q}from"../c-AQLFEATB.js";import{a as R}from"../c-VKEDWYDF.js";import{b as x,c as O,e as L,f as z}from"../c-OW5QIGG3.js";import"../c-BPF2NSPV.js";import"../c-P7KNDG34.js";import"../c-CYWLPPUS.js";import"../c-N7JPUPGC.js";import"../c-HA6INT6J.js";import"../c-WRBKEJD4.js";import"../c-VHNSBD2M.js";var B='<svg xmlns="http://www.w3.org/2000/svg" viewBox="-45.87 -57.96 100.26 60.98" fill="currentColor" aria-hidden="true" focusable="false"><path fill-rule="evenodd" d="M44.35 -4.56Q40.03 -0.52 34.69 -0.39Q29.34 -0.25 24.81 -0.14Q20.27 -0.02 15.6 0Q10.93 0.02 6.41 0Q1.89 -0.02 -2.79 -0.02Q-7.48 -0.02 -12.11 -0.14Q-16.73 -0.25 -21.64 -0.27Q-26.55 -0.3 -31.72 -2.25Q-36.88 -4.2 -39.87 -9.12Q-42.87 -14.03 -42.8 -19.61Q-42.74 -25.18 -40.43 -29.94Q-38.12 -34.69 -34.82 -38.78Q-31.52 -42.87 -27.25 -45.6Q-22.98 -48.33 -18.35 -50.59Q-13.73 -52.85 -8.7 -53.88Q-3.68 -54.91 1.32 -54.93Q6.32 -54.96 11.44 -54.56Q16.55 -54.16 21.35 -52.2Q26.16 -50.24 30.69 -48.01Q35.22 -45.78 38.99 -42.18Q42.76 -38.59 45.67 -34.37Q48.59 -30.15 49.99 -24.87Q51.39 -19.59 50.04 -14.09Q48.68 -8.6 44.35 -4.56ZM0.66 -30.49C0.5 -28.73 -0.88 -27.42 -2.42 -27.57C-3.96 -27.71 -5.08 -29.25 -4.91 -31.01C-4.75 -32.77 -3.36 -34.08 -1.83 -33.94C-0.29 -33.79 0.83 -32.25 0.66 -30.49ZM13.61 -29.28C13.44 -27.52 12.06 -26.21 10.52 -26.35C8.98 -26.5 7.87 -28.04 8.03 -29.8C8.2 -31.56 9.58 -32.87 11.12 -32.73C12.66 -32.58 13.77 -31.04 13.61 -29.28ZM-1.23 -17.71Q-0.62 -17.35 -0.03 -17.08Q0.56 -16.81 1.15 -16.54Q1.73 -16.28 2.4 -16Q3.07 -15.72 3.87 -15.6Q4.66 -15.48 5.4 -15.55Q6.13 -15.62 6.77 -15.79Q7.41 -15.96 7.97 -16.23Q8.53 -16.5 9 -16.91Q9.46 -17.32 9.73 -17.9Q9.99 -18.47 10.08 -19.12Q10.17 -19.77 10.08 -20.42Q9.99 -21.06 9.45 -21.32Q8.91 -21.58 8.27 -21.38Q7.63 -21.17 6.99 -20.91Q6.36 -20.65 5.7 -20.61Q5.04 -20.56 4.33 -20.73Q3.62 -20.9 2.92 -21.14Q2.23 -21.39 1.54 -21.68Q0.85 -21.97 0.16 -22.27Q-0.52 -22.56 -1.22 -22.79Q-1.92 -23.03 -2.49 -22.61Q-3.05 -22.19 -3.23 -21.5Q-3.4 -20.81 -3.2 -20.09Q-3.01 -19.38 -3.02 -19.15Q-3.02 -18.93 -2.42 -18.5Q-1.83 -18.06 -1.23 -17.71Z"/></svg>';var _=!0,$=6e3,U=12,G=`.clay-menu {
2
+ position: fixed;
3
+ top: max(12px, env(safe-area-inset-top));
4
+ right: max(12px, env(safe-area-inset-right));
5
+ z-index: 2147482000;
6
+ display: flex;
7
+ align-items: center;
8
+ flex-wrap: nowrap;
9
+ gap: 8px;
10
+ font-family: system-ui, -apple-system, "Segoe UI", sans-serif;
11
+ font-size: 13px;
12
+ line-height: 1;
13
+ color: var(--clay-ui-fg, #1F2328);
14
+ }
15
+ .clay-menu-edit {
16
+ display: inline-flex;
17
+ align-items: center;
18
+ gap: 8px;
19
+ margin: 0;
20
+ padding: 0;
21
+ border: 0;
22
+ font: inherit;
23
+ color: inherit;
24
+ background: none;
25
+ cursor: pointer;
26
+ }
27
+ .clay-menu-edit:disabled { cursor: progress; opacity: .7; }
28
+ .clay-menu-track {
29
+ position: relative;
30
+ display: block;
31
+ box-sizing: border-box;
32
+ width: 52px;
33
+ height: 32px;
34
+ border: 1px solid rgba(23, 28, 36, .16);
35
+ border-radius: 999px;
36
+ background: var(--clay-ui-bg, #F4F4F5);
37
+ transition: background-color .15s ease, border-color .15s ease;
38
+ }
39
+ .clay-menu-thumb {
40
+ position: absolute;
41
+ top: 2px;
42
+ left: 2px;
43
+ width: 26px;
44
+ height: 26px;
45
+ border-radius: 50%;
46
+ background: #FAFAFB;
47
+ box-shadow: 0 1px 2px rgba(23, 28, 36, .35);
48
+ transition: transform .15s ease;
49
+ }
50
+ .clay-menu-edit[aria-checked="true"] .clay-menu-track {
51
+ border-color: transparent;
52
+ background: var(--clay-ui-accent, #2F6FEB);
53
+ }
54
+ .clay-menu-edit[aria-checked="true"] .clay-menu-thumb { transform: translateX(20px); }
55
+ .clay-menu-label { font-size: 13px; line-height: 1; }
56
+ .clay-menu-goo {
57
+ position: relative;
58
+ display: inline-flex;
59
+ align-items: center;
60
+ justify-content: center;
61
+ box-sizing: border-box;
62
+ width: 32px;
63
+ height: 32px;
64
+ margin: 0;
65
+ padding: 0;
66
+ border: 1px solid rgba(23, 28, 36, .16);
67
+ border-radius: 50%;
68
+ color: inherit;
69
+ background: var(--clay-ui-bg, #F4F4F5);
70
+ cursor: pointer;
71
+ }
72
+ .clay-menu-goo svg { display: block; width: 18px; height: auto; }
73
+ .clay-menu-dot {
74
+ position: absolute;
75
+ top: 1px;
76
+ right: 1px;
77
+ width: 8px;
78
+ height: 8px;
79
+ border-radius: 50%;
80
+ background: var(--clay-ui-accent, #2F6FEB);
81
+ }
82
+ .clay-menu-list {
83
+ position: absolute;
84
+ top: calc(100% + 8px);
85
+ right: 0;
86
+ min-width: 184px;
87
+ margin: 0;
88
+ padding: 4px;
89
+ border: 1px solid rgba(23, 28, 36, .16);
90
+ border-radius: 10px;
91
+ background: var(--clay-ui-bg, #F4F4F5);
92
+ box-shadow: 0 10px 28px -14px rgba(23, 28, 36, .5);
93
+ }
94
+ .clay-menu-list button {
95
+ display: block;
96
+ width: 100%;
97
+ padding: 8px 10px;
98
+ border: 0;
99
+ border-radius: 6px;
100
+ font: inherit;
101
+ text-align: left;
102
+ color: inherit;
103
+ background: none;
104
+ cursor: pointer;
105
+ }
106
+ .clay-menu-list button:hover,
107
+ .clay-menu-list button:focus-visible { outline: none; background: rgba(23, 28, 36, .08); }
108
+ .clay-menu-note {
109
+ position: absolute;
110
+ top: calc(100% + 8px);
111
+ right: 0;
112
+ max-width: 260px;
113
+ padding: 8px 10px;
114
+ border: 1px solid rgba(23, 28, 36, .16);
115
+ border-radius: 8px;
116
+ line-height: 1.4;
117
+ text-align: left;
118
+ background: var(--clay-ui-bg, #F4F4F5);
119
+ box-shadow: 0 10px 28px -14px rgba(23, 28, 36, .5);
120
+ }
121
+ @media (pointer: coarse) {
122
+ .clay-menu-edit { min-height: 44px; padding: 6px 0; }
123
+ .clay-menu-goo { width: 44px; height: 44px; }
124
+ }
125
+ @media (prefers-color-scheme: dark) {
126
+ .clay-menu { color: var(--clay-ui-fg, #E9E9EC); }
127
+ .clay-menu-track,
128
+ .clay-menu-goo,
129
+ .clay-menu-list,
130
+ .clay-menu-note { border-color: rgba(233, 233, 236, .16); background: var(--clay-ui-bg, #26282C); }
131
+ .clay-menu-track { background: rgba(233, 233, 236, .22); }
132
+ .clay-menu-thumb { background: #E9E9EC; }
133
+ .clay-menu-list button:hover,
134
+ .clay-menu-list button:focus-visible { background: rgba(233, 233, 236, .12); }
135
+ }
136
+ @media (prefers-reduced-motion: reduce) {
137
+ .clay-menu-track, .clay-menu-thumb { transition: none; }
138
+ }`,D=()=>window.clay&&typeof window.clay.mode=="string"?window.clay.mode:z;function P(){if(document.getElementById("clay-menu-style"))return;let t=document.createElement("style");t.id="clay-menu-style",t.setAttribute("clay","editor-ui"),t.textContent=G,document.head.append(t)}function j(){if(document.querySelector(".clay-menu"))return;P();let t=document.createElement("div");t.className="clay-menu",t.setAttribute("clay","editor-ui"),t.setAttribute("clay-mode-toggle",""),t.innerHTML=`<button type="button" class="clay-menu-edit" role="switch" aria-checked="false"><span class="clay-menu-track" aria-hidden="true"><span class="clay-menu-thumb"></span></span><span class="clay-menu-label">Edit</span></button><button type="button" class="clay-menu-goo" aria-haspopup="menu" aria-expanded="false" aria-label="Clay menu">${B}</button><div class="clay-menu-list" role="menu" hidden></div><div class="clay-menu-note" role="status" hidden></div>`;let a=t.querySelector(".clay-menu-edit"),l=t.querySelector(".clay-menu-goo"),i=t.querySelector(".clay-menu-list"),p=t.querySelector(".clay-menu-note"),b=new Map,c=()=>!i.hidden;function w(e){i.hidden=!e,l.setAttribute("aria-expanded",e?"true":"false")}let Q=()=>[...i.querySelectorAll('[role="menuitem"]')];function m(e){let r=Q();r.length&&r[(e+r.length)%r.length].focus()}function s(){c()&&w(!1)}function f(){c()||w(!0)}function N(){let e=i.contains(document.activeElement);i.textContent="";for(let o of b.values()){let u=document.createElement("button");u.type="button",u.setAttribute("role","menuitem"),u.dataset.menuId=o.id,u.textContent=o.label,u.addEventListener("click",()=>{s(),o.run&&o.run()}),i.append(u)}let r=l.querySelector(".clay-menu-dot"),n=[...b.values()].some(o=>o.badge);if(n&&!r){let o=document.createElement("span");o.className="clay-menu-dot",l.append(o)}else!n&&r&&r.remove();e&&m(0)}function v({id:e,label:r,run:n,badge:o}={}){return e?(b.set(e,{id:e,label:String(r??""),run:typeof n=="function"?n:null,badge:!!o}),N(),e):null}function Z(e){e&&(p.textContent=e,p.hidden=!1,clearTimeout(k),k=setTimeout(()=>{p.hidden=!0,p.textContent=""},$))}let k=0,g=!1;function h(){a.setAttribute("aria-checked",D()==="edit"?"true":"false")}h(),document.addEventListener("clay:modechange",h),a.addEventListener("click",async()=>{if(g)return;let e=a.getAttribute("aria-checked"),r=D()==="edit"?"view":"edit";g=!0,a.setAttribute("aria-busy","true"),a.disabled=!0;let n;try{n=await window.clay?.setMode?.(r)}catch(o){n={ok:!1,message:o&&o.message}}if(!(n&&n.reloading))if(g=!1,a.removeAttribute("aria-busy"),a.disabled=!1,n&&n.ok===!1){a.setAttribute("aria-checked",e);let o=q(n);o&&Z(o)}else h()}),l.addEventListener("click",()=>{c()?s():f()}),document.addEventListener("click",e=>{c()&&!t.contains(e.target)&&s()}),t.addEventListener("keydown",e=>{if(e.key==="Escape"){if(!c())return;e.preventDefault(),s(),l.focus();return}if(e.target===l&&(e.key==="Enter"||e.key===" ")){e.preventDefault(),c()?s():(f(),m(0));return}if(!c())return;if(e.key==="Enter"&&i.contains(e.target)){e.preventDefault(),e.target.click();return}let r=Q();if(!r.length)return;let n=r.indexOf(document.activeElement);e.key==="ArrowDown"?(e.preventDefault(),m(n<0?0:n+1)):e.key==="ArrowUp"&&(e.preventDefault(),m(n<0?r.length-1:n-1))});let E=document,d=null,C=null;function F(e){t.style.top=`${Math.round(e.getBoundingClientRect().bottom)+U}px`}function M(){if(!t.isConnected)return;let e=E.querySelector(".clay-intro");if(e!==C){if(d&&(d.disconnect(),d=null),C=e,!e){t.style.removeProperty("top");return}typeof ResizeObserver=="function"&&(d=new ResizeObserver(()=>F(e)),d.observe(e)),F(e)}}let y=document.createElement("style");y.id="clay-menu-vars",y.setAttribute("clay","editor-ui"),document.head.append(y);function A(){let e=t.getBoundingClientRect();y.textContent=`:root { --clay-menu-width: ${Math.ceil(e.width)}px; --clay-menu-height: ${Math.ceil(e.height)}px; }`}document.body.append(t),A(),typeof ResizeObserver=="function"&&new ResizeObserver(A).observe(t),new MutationObserver(M).observe(E.body,{childList:!0}),M();let S=()=>import("../c-SMGU7RT3.js").then(e=>e.open());if(_){v({id:"seo",label:"SEO settings\u2026",run:S});let e=window.clay.storage&&window.clay.storage.session;e&&e.get("reopen-seo")===!0&&(e.remove("reopen-seo"),S().catch(()=>{}))}window.clay.menu={addItem:v,open:f,close:s}}var I=!1,H=()=>(O||L)&&!x;function T(){I||!H()||(I=!0,j())}x||(R(T),document.addEventListener("clay:capabilitychange",T));
@@ -0,0 +1 @@
1
+ import"../c-VHNSBD2M.js";function y(e){let t={},n=r=>{let o=r.getAttribute("name"),s=r.value??r.getAttribute("value");if(!(!o||r.disabled))switch(r.type){case"checkbox":t[o]||(t[o]=[]),r.checked&&t[o].push(s);break;case"radio":r.checked&&(t[o]=s);break;case"select-multiple":t[o]=Array.from(r.selectedOptions,w=>w.value);break;case"button":case"submit":case"reset":o&&s&&(t[o]=s);break;default:t[o]=s}};return e instanceof HTMLFormElement?Array.from(e.elements).forEach(n):(e.hasAttribute("name")&&n(e),e.querySelectorAll("[name]").forEach(n)),t}var u=y;var d="/_/message",E="/_/form-token",T=5400*1e3,m=["click","keydown","pointerdown","touchstart","input","change"],k=Object.fromEntries(m.map(e=>[e,0])),c=null,h=0,a=null,i=new WeakSet;function g(){return a||(a=fetch(E,{credentials:"omit",cache:"no-store"}).then(e=>e.ok?e.json():null).then(e=>{e&&typeof e.token=="string"&&(c=e.token,h=Date.now())}).catch(()=>{}).finally(()=>{a=null})),a}async function A(){(!c||Date.now()-h>T)&&await g();let e=c;return c=null,e}function v(){return{webdriver:navigator.webdriver===!0,trusted:{...k}}}function p(e){if(!(e instanceof HTMLFormElement))return!1;if(e.hasAttribute("message-form"))return!0;let t=e.getAttribute("action");if(!t)return!1;try{let n=new URL(t,window.location.href);return n.origin===window.location.origin&&n.pathname===d}catch{return!1}}async function b(e={}){let t=await f(e);return t.code==="form-token"?f(e):t}async function f(e){let t=await A(),n;try{n=await fetch(d,{method:"POST",credentials:"omit",headers:{"Content-Type":"application/json","Document-URL":window.location.href},body:JSON.stringify({...e,formToken:t,formSignals:v()})})}catch{return{ok:!1,error:"The message couldn't be sent. Check your connection and try again."}}let r=await n.json().catch(()=>null);if(n.ok)return r?{ok:!0,error:null}:{ok:!1,error:"This page can't send messages."};if(!r)return{ok:!1,error:`The message couldn't be sent (${n.status}).`};let o=r.error||r.msg||`The message couldn't be sent (${n.status}).`;return r.code==="form-token"?{ok:!1,error:o,code:"form-token"}:{ok:!1,error:o}}async function S(e){let t=e.target;if(!(e.defaultPrevented||!p(t))&&(e.preventDefault(),!i.has(t))){i.add(t);try{let n=await b(u(t));n.ok&&t.reset();let r=new CustomEvent(n.ok?"clay:message-sent":"clay:message-failed",{bubbles:!0,cancelable:!0,detail:n});if(!t.dispatchEvent(r))return;let o=window.clay?.toast;if(!o)return;n.ok?o(t.getAttribute("message-form")||"Sent","success"):o(n.error,"error")}finally{i.delete(t)}}}function l(e){if(c||a)return;let t=e.target?.closest?.("form");t&&p(t)&&g()}if(typeof document<"u"){for(let e of m)document.addEventListener(e,t=>{t.isTrusted&&k[e]++},{capture:!0,passive:!0});document.addEventListener("focusin",l,!0),document.addEventListener("input",l,!0),document.addEventListener("submit",S)}var D={send:b},F=D;export{F as default,D as message,b as send};
@@ -0,0 +1,2 @@
1
+ import{a as we}from"../c-3GJ4SDE2.js";import{a as de,b as fe}from"../c-MFP2ZWD4.js";import{a as tr,b as me}from"../c-U62OB4BT.js";import{a as rr}from"../c-BYTKL6UX.js";import{a as er,b as F,c as O}from"../c-4L3BTFRK.js";import{a as or}from"../c-L4WQSC27.js";import{d as Xe,e as ze,i as Ke,j as ye,n as D,o as Qe,q as K,r as he,s as Ze}from"../c-S4ZEH46B.js";import{a as Ue}from"../c-TCCA5BZN.js";import{k as ge}from"../c-LRPUO2MX.js";import"../c-A7LS5UZW.js";import"../c-5V3MOVJT.js";import"../c-LZJPNR2W.js";import{b as $e}from"../c-FILLTJA7.js";import{a as Be}from"../c-NUHP2XDB.js";import{A as Ye,E as Je,d as Ge,e as X,m as pe,n as z}from"../c-TCJTVAFN.js";import"../c-GQ6F6IDK.js";import{a as We}from"../c-2SPVQSHC.js";import"../c-5VYOWDTI.js";import"../c-QJ4OM3G6.js";import"../c-MKSQ4Y57.js";import"../c-WYFDLITL.js";import"../c-UGHH4MB3.js";import"../c-ZWIOJGMT.js";import{d as U}from"../c-LWLBHLVC.js";import"../c-SDAXDM2D.js";import"../c-TQEMVJCS.js";import{a as _e,c as qe,d as Ve}from"../c-DCXOXBF3.js";import{d as Ne}from"../c-VRZN56XY.js";import"../c-IJUK2GPW.js";import{j as Me}from"../c-OW5QIGG3.js";import"../c-BPF2NSPV.js";import"../c-P7KNDG34.js";import"../c-CYWLPPUS.js";import"../c-N7JPUPGC.js";import{s as H}from"../c-SPIORRYS.js";import"../c-XQXZAO7N.js";import"../c-S7LK4KUE.js";import"../c-VG5XIN4T.js";import"../c-2YYDMLNZ.js";import"../c-HA6INT6J.js";import"../c-DCFSEJZG.js";import"../c-WRBKEJD4.js";import"../c-VHNSBD2M.js";var $r=Object.freeze({"page-converting":"retrying","page-capacity":"retrying",busy:"retrying","rate-limited":"retrying",offline:"retrying",network:"retrying","network-error":"retrying",timeout:"retrying","save-history-pending":"retrying","page-condition-required":"blocked","page-conversion-refused":"blocked","page-conversion-required":"blocked","page-conversion-stale":"blocked","save-id-reused":"blocked","too-large":"blocked","unsupported-host":"blocked","save-history-refresh-required":"blocked","provenance-unsupported":"blocked","receipt-expired":"blocked"}),Q="Can't save here. Your edits are still in this tab.",Z="Still trying to save. Your edits are safe in this tab.";function M({ok:e=!1,code:r=null,offline:t=!1}={}){return e?"saved":t?"retrying":$r[r]??"error"}function ar(e){let r;try{r=new DOMParser().parseFromString(e,"text/html")}catch{return e}let t=[...r.querySelectorAll('script[type="application/json"][merge="page"][clay~="live"]')].filter(f=>!f.closest("template")&&!f.closest("noscript"));if(t.length!==1)return e;let a=t[0].outerHTML,l=e.indexOf(a);return l<0||e.indexOf(a,l+1)!==-1?e:e.slice(0,l)+e.slice(l+a.length)}function ee(){let{forSave:e}=H();return fe({html:ar(e),name:`${de()}.html`})}function ve(e){return fe({html:ar(e),name:`${de()}.html`})}async function lr(){try{let{forSave:e}=H(),t=new DOMParser().parseFromString(e,"text/html").querySelectorAll("article[data-page]");return t.length!==1?!1:(await navigator.clipboard.writeText(t[0].textContent),!0)}catch{return!1}}var nr="clay.page.author",be="clay.page.author.owned.",sr=()=>globalThis.crypto?.randomUUID?.()??`${Date.now().toString(36)}-${Math.random().toString(36).slice(2)}`;function cr(e=globalThis.localStorage){try{let r=[];for(let a=0;a<e.length;a++){let l=e.key(a);l&&l.startsWith(be)&&r.push(l.slice(be.length))}let t=e.getItem(nr);return(!t||!r.includes(t))&&(t=sr(),e.setItem(be+t,"1"),e.setItem(nr,t),r.push(t)),{token:t,owned:r.sort()}}catch{let r=sr();return{token:r,owned:[r]}}}var E=Object.freeze({loading:"loading",joining:"joining",adopting:"adopting",ready:"ready",blocked:"blocked",error:"error"}),Ur=new Set([E.ready,E.blocked,E.error]),ir=0,dr=()=>globalThis.performance?.now?.()??Date.now();function fr({gen:e=0,isCurrent:r=()=>!0,onPhase:t=null}={}){return ir+=1,{installId:ir,gen:e,isCurrent:r,onPhase:typeof t=="function"?t:null,phase:E.loading,result:null,at:dr(),controller:new AbortController,disposers:[],disposed:!1,steps:null,deferred:null}}function p(e){return!e.disposed&&!e.controller.signal.aborted&&e.isCurrent()!==!1}function ke(e,r){return p(e)&&!!r?.view&&e.mounted===r.view}function C(e,r,t=null){if(Ur.has(e.phase)&&e.result)return e.result;e.phase=r,e.at=dr(),e.result=Object.freeze({phase:r,reason:t??null,installId:e.installId,at:e.at});try{e.onPhase?.(e.result)}catch(a){console.error("clayjs: page boot phase callback failed",a)}return e.result}function Te(e,r){let t=C(e,E.blocked,r);return e.editorReadyResolve?.(),t}function pr(e,r){return C(e,E.error,r)}function te(e,r){return typeof r=="function"&&e.disposers.push(r),r}function Se(e){if(e.disposed)return;e.disposed=!0,e.mounted=null;try{e.controller.abort()}catch(t){console.error("clayjs: page boot abort failed",t)}let r=e.disposers.splice(0).reverse();for(let t of r)try{t()}catch(a){console.error("clayjs: a page boot disposer failed",a)}}function re(e,r){let t=globalThis.performance;if(typeof t?.mark=="function")try{t.mark(e,{detail:{installId:r.installId}})}catch{try{t.mark(e)}catch{return}}}function Xr(e,r){try{r.release?.(e)}catch(t){console.error("clayjs: page boot release failed",t)}}function V(e,r,t){return r.cancelled?null:(Xr(e,t),Te(e,r.reason??"boot-incomplete"))}function ur(e,r,t,a=null){return Promise.resolve(e).then(l=>l??{ok:!1,reason:t},l=>(console.error(`clayjs: page boot ${t}`,l),{ok:!1,reason:t})).then(l=>(l.ok&&a&&p(r)&&re(a,r),l))}function zr(e,r){return new Promise(t=>{let a=e.controller.signal,l=!1,f=k=>{l||(l=!0,t(k))};if(a.aborted)return f({cancelled:!0});a.addEventListener("abort",()=>f({cancelled:!0}),{once:!0});let g=new Array(r.length),b=r.length;r.forEach((k,A)=>{k.then(R=>{if(!l){if(!R.ok)return f({result:R,branch:k});g[A]=R,b-=1,b===0&&f({results:g})}})})})}async function gr(e,r,{activate:t=!0}={}){re("document:boot",e),C(e,E.loading);let a=r.readSource(e);if(!p(e))return null;if(!a.ok)return Te(e,a.reason);let l=a.source;C(e,E.joining);let f=await zr(e,[ur(r.loadEditorAssets(e,l),e,"editor-assets-failed","document:assets-ready"),ur(r.prepareAuthority(e,l),e,"authority-failed","document:authority-ready")]);if(f.cancelled||!p(e))return null;if(!f.results){try{e.controller.abort()}catch(P){console.error("clayjs: page boot abort failed",P)}return V(e,f.result,r)}let[g,b]=f.results,k=r.mountAndAttach(e,l,g,b);if(!p(e))return null;if(!k.ok)return V(e,k,r);e.mounted=k.view??null,C(e,E.adopting);let A=await r.adoptSource(e,l,k);if(!p(e))return null;if(!A.ok)return V(e,A,r);if(!t){if(r.prepareInput){let P=await r.prepareInput(e,k);if(!p(e))return null;if(!P.ok)return V(e,P,r)}return e.deferred=k,{phase:e.phase,view:k.view,deferred:!0}}let R=await r.enableInput(e,k);return p(e)?R.ok?(re("document:input-ready",e),C(e,E.ready)):V(e,R,r):null}function yr(e){let r=e.deferred;if(e.deferred=null,!r||!p(e))return e.result??null;let t=e.steps?.openInput?.(e,r);return t?.ok?(re("document:input-ready",e),C(e,E.ready)):Te(e,t?.reason??"input-refused")}var W="article[data-page]",le='script[type="application/json"][merge="page"][clay~="live"]',hr={state:"blocked",code:"unsupported-host",message:"This host does not support page editing"},Kr=45e3,Qr="Couldn't save",Zr="Offline, not saved",kr="This page was changed outside the editor. Reload to see it.",et="That change is too large to share, so it was not saved. Reload the page to keep editing.",rt="Some changes you made were replaced by a change made outside the editor.",Tr="The page was changed outside the editor; reload to see it.",tt=150,ot="Loading the editor\u2026",Oe="the page session has not committed yet",mr=e=>e!==null&&typeof e=="object"&&!Array.isArray(e);function Ae(e){return mr(e)?e.v!==1||!mr(e.y)||Object.hasOwn(e,"blocks")||Object.hasOwn(e,"deleted")?(console.warn("clayjs: page plugin: the page tag is not a strict Yjs page, leaving the page as saved HTML"),"unsupported-page-format"):null:(console.warn("clayjs: page plugin: the page tag is not JSON, leaving the page as saved HTML"),"invalid-page-json")}var N=null,wr=null;function x(){return wr??=import("../c-TYLXX4NF.js").then(e=>N=e),wr}function at(e){let r=new Set;return e.forEach(t=>{let a=me(t.type.name);a&&r.add(a)}),[...r]}function L(e){e.statusTimer&&(clearTimeout(e.statusTimer),e.statusTimer=null),e.statusNote?.remove(),e.statusNote=null}function lt(e,r){L(e),e.statusTimer=setTimeout(()=>{if(e.statusTimer=null,!p(e))return;let t=r.ownerDocument.createElement("div");t.className="page-boot-status",t.setAttribute("clay","editor-ui"),t.setAttribute("sap-ignore",""),t.setAttribute("role","status"),Be(t,["display:block","margin:0 0 1em","font:500 13px/1.6 system-ui, sans-serif","color:color-mix(in srgb, currentColor 55%, transparent)","user-select:none"]),t.textContent=ot,r.prepend(t),e.statusNote=t},tt)}var ne=0,j=null,oe=null,nt=8e3;function st(e,r=globalThis.location){let t=r?.hash?.slice(1);if(!t)return;let a;try{a=decodeURIComponent(t)}catch{return}let l=-1;e.state.doc.forEach((f,g)=>{l<0&&f.attrs.id===a&&(l=g)}),!(l<0)&&globalThis.requestAnimationFrame?.(()=>e.nodeDOM(l)?.scrollIntoView?.({block:"start"}))}function Pe(e,r,t){document.dispatchEvent(new CustomEvent("clay:page-save-state",{detail:{state:e,code:r,message:t}}))}function Sr(){O(Qr),O(Zr)}function Ar(e){e.retryTimer&&(clearTimeout(e.retryTimer),e.retryTimer=null),e.retryShown=!1,O(Z)}function ct(e,r,t){Sr(),Pe("retrying",r,t),!(e.retryTimer||e.retryShown)&&(e.retryTimer=setTimeout(()=>{e.retryTimer=null,e.retryShown=!0,F(Z,"warning")},Kr))}function Rr(e,r,t){Ar(e),Sr(),Pe("blocked",r,t),F(Q,"error",{detail:t,actions:[{label:"Download a copy",onClick:ee},{label:"Copy text",onClick:lr}]})}function it(e){Ar(e),O(Q),Pe("saved",null,"")}function ut(e,r,t=!1){if(typeof e!="string"||!e)return!1;let a;try{a=new DOMParser().parseFromString(e,"text/html")}catch{return!1}let l=a.querySelectorAll(W);return t?l.length!==1&&!a.querySelector(le):l.length!==1||a.querySelector(le)?!1:l[0].getAttribute("data-rev")!==r}function dt(e){if(!e.store||!N)return e.savedRev;try{return N.renderFromTags([JSON.stringify(e.store.value)]).rev}catch{return e.savedRev}}function Er(e){let r=e.view;r&&(r.setProps({editable:()=>!1}),r.setProps({dispatchTransaction:t=>r.updateState(r.state.apply(t))}));try{e.binding?.dispose()}catch(t){console.error("clayjs: page plugin binding failed to dispose",t)}e.savesHeld||(e.savesHeld=!0,pe(Tr))}function ft(e){if(!e.tabValue)return ee();let{forSave:r}=H(),t=new DOMParser().parseFromString(r,"text/html"),a=t.querySelectorAll(W);if(a.length!==1)return ee();let l=N.renderFromTags([JSON.stringify(e.tabValue)]);return a[0].innerHTML=l.html,l.rev==null?a[0].removeAttribute("data-rev"):a[0].setAttribute("data-rev",l.rev),ve(`<!DOCTYPE html>
2
+ ${t.documentElement.outerHTML}`)}function jr(e,r){e.replaced||(e.replaced=!0,Er(e),F(r,"warning",{actions:[{label:"Reload",onClick:()=>window.location.reload()},{label:"Download your copy",onClick:()=>ft(e)}]}))}var Ee=e=>jr(e,kr),pt=e=>jr(e,et);function B(e,r,t,a){r==="saved"?it(e):r==="retrying"?ct(e,t,a):r==="blocked"&&Rr(e,t,a)}function I(e,r,t){document.addEventListener(r,t),e.listeners.push([r,t])}function gt(e){I(e,"clay:save-error",t=>{let a=t.detail?.code??null;a!=="page-nothing-to-write"&&B(e,M({code:a}),a,t.detail?.msg??"")}),I(e,"clay:save-offline",t=>{let a=t.detail?.code??null;B(e,M({code:a,offline:!0}),a,t.detail?.msg??"")}),I(e,"clay:save-conflict",t=>{let a=t.detail?.code??null;B(e,M({code:a}),a,t.detail?.msg??"")});let r=t=>{ht(e,t)};I(e,"clay:save-conflict",r),I(e,"clay:save-error",r),I(e,"clay:save-saved",t=>{B(e,M({ok:!0}),null,t.detail?.msg??""),e.savedRev=dt(e),e.adoption?.saved(Ye())}),I(e,"clay:live-notice",t=>{if(t.detail?.name!=="page"||t.detail?.code==="op-too-large")return;if(t.detail?.code==="unknown-store"){Ee(e);return}let a=t.detail?.code??null;B(e,M({code:a}),a,t.detail?.message??"")})}async function yt(){let e=await fetch(new URL(globalThis.location.href).href,{cache:"no-store"});if(!e?.ok)return null;let r=await e.text(),a=new DOMParser().parseFromString(r,"text/html").querySelector(W);return a?{article:a,etag:e.headers?.get?.("etag")||null}:null}async function ht(e,r){let t=e.staged;if(!t||e.staleRetry||e.replaced)return;let a=r?.detail?.code??null;if(!(a!=="page-lineage-stale"&&a!=="conflict")&&!(!e.store||!t.isPending())){e.staleRetry=!0;try{let l=await yt();if(!l||!p(e))return;let f=await x();if(!p(e))return;let g=f.seedPageFromArticle(l.article.cloneNode(!0)),b=l.etag??r?.detail?.etag??null;b&&qe(b),e.store.rebase(g,{source:"state"}),await Je()}catch(l){console.warn("clayjs: page plugin could not offer the refused first write again",l)}}}function Ie(e){let r=e.article;if(!r)return;let t=e.bootHtml,a=e.bootRev;if(e.store&&N)try{let l=N.renderFromTags([JSON.stringify(e.store.value)]);t=l.html,a=l.rev}catch(l){console.error("clayjs: page plugin could not render the saved article",l)}r.innerHTML=t,a==null?r.removeAttribute("data-rev"):r.setAttribute("data-rev",a)}function Ce(e){for(let[r,t]of e.listeners)document.removeEventListener(r,t);e.listeners=[];try{e.adoption?.dispose()}catch(r){console.error("clayjs: page plugin adoption failed to dispose",r)}e.adoption=null;try{e.recover?.destroy()}catch(r){console.error("clayjs: page plugin recover list failed to dispose",r)}if(e.recover=null,e.aiTool?.dispose(),e.aiTool=null,e.awareness?.dispose(),e.awareness=null,e.toolHost?.dispose(),e.toolHost=null,e.view&&rr.delete(e.view),e.article){let r=e.article.querySelector(".page-shell");r&&r.remove()}try{e.binding?.dispose()}catch(r){console.error("clayjs: page plugin binding failed to dispose",r)}try{e.binding?.ydoc?.destroy()}catch(r){console.error("clayjs: page plugin document failed to destroy",r)}try{e.staged?.close()}catch(r){console.error("clayjs: page plugin staged store failed to close",r)}if(e.staged=null,e.pageStore){try{Qe("page",e.pageStore)}catch(r){console.error("clayjs: page plugin store failed to close",r)}e.pageStore=null}e.binding=null,e.flush=null,e.releaseArticle?.(),e.releaseArticle=null}function vr(e){let r=e.view;if(r&&!r.isDestroyed&&typeof r.destroy=="function")try{r.destroy()}catch(t){console.error("clayjs: page plugin view failed to destroy",t)}e.titleObserver?.dispose(),e.titleObserver=null,L(e),Ce(e),Ie(e)}function je(){ne+=1;let e=j;if(j=null,U("Page-Write",null),ye(null),!!e){Se(e),e.retryTimer&&(clearTimeout(e.retryTimer),e.retryTimer=null),O(Z),O(Q),O(kr);for(let r of e.notices?.values()??[])O(r);if(e.savesHeld&&(e.savesHeld=!1,z({replay:!1,reason:Tr})),e.titleObserver?.dispose(),e.titleObserver=null,L(e),e.sessionHeld&&z({replay:!1,reason:Oe}),e.autosaveSuspended&&X(),e.view&&!e.view.isDestroyed)try{e.view.destroy()}catch(r){console.error("clayjs: page plugin view failed to destroy",r)}Ce(e),Ie(e)}}var Re=null;function xe(){return Re||(Re=Promise.all([import("../c-ZVRKXKM7.js"),import("../c-GB6TU7WV.js")]).then(([e,r])=>({replay:e,proof:r})).catch(e=>(console.warn("clayjs: page journal could not load",e),null))),Re}async function mt(e,r){let t=globalThis.window?.clay?.recovery??null;if(!t||!r)return null;let a=await xe();if(!a)return null;try{return a.replay.openPageJournal({meta:e,service:t,base:a.replay.journalBase(r.value)})}catch(l){return console.warn("clayjs: page journal could not open",l),null}}async function br(e){let r=e.binding?.journal;if(!r||!e.store)return{replayed:[],review:[]};let t=await xe();if(!t)return{replayed:[],review:[]};let a=await t.replay.replayInto({journal:r,state:e.store.value,into:e.binding.ydoc});return a.replayed.length&&e.binding.provider.settle(),a.review.length&&(e.recoveryReview=a.review),a}function wt(e){ye(async({capture:r,state:t,article:a,etag:l})=>{let f=e.binding?.journal;if(!f)return;let g=await xe(),b=g?await f.context():null;if(!b)return;let{hostPageStateHref:k}=await import("../c-6AZOGAPE.js"),A=await g.proof.checkpointAccepted({channel:f.channel,records:f.records(),capture:r,accepted:b,article:a,state:t,etag:l,href:await k()});A.ok&&f.retire(A.retired)})}function vt(e,r){let t=null,a=null,l=null,f=null,g=null,b=null,k=null,A=[],R=null,P=null,_=null,G=null,Y=null,Cr=new Promise(o=>{f=o});e.editorReadyResolve=f,te(e,()=>f?.()),te(e,()=>L(e));let J=null,ce=null;e.loadFormatGate=()=>J?Promise.resolve(J):(ce??=Promise.all([import("../c-QH63LQOS.js"),import("../c-CQHPGKX2.js")]).then(([{createFormatGate:o},{createFormatHost:n}])=>{let s=n();return J=o({host:s,supported:s.supported,installed:()=>g?.token??null,revision:()=>null}),J}).catch(o=>{throw ce=null,o}),ce);let Le='script[type="application/json"][merge="page.tools"][clay~="live"]',xr=()=>_||(_=(async()=>{if(!document.querySelector(Le)){let c=document.createElement("script");c.setAttribute("type","application/json"),c.setAttribute("merge","page.tools"),c.setAttribute("clay","live"),c.textContent="{}",document.head.appendChild(c)}if(document.querySelector(Le))try{R=window.clay.live("page.tools"),await R.ready}catch(c){console.warn("clayjs: page plugin could not open the tool store",c)}if(!p(e))return null;let[{createToolHost:o},{tablesFromDoc:n}]=await Promise.all([import("../c-GOWBDM6J.js"),import("../c-VI5RMSVY.js")]);if(!p(e))return null;let s=o({store:R,mode:"edit",tables:()=>n(l?.state.doc??a.doc()).map(({id:c,cols:d,rows:i})=>({id:c,cols:d,rows:i}))});if(e.toolHost=s,we(t)){let{createAiTool:c}=await import("../c-QICP2YR5.js");if(!p(e))return null;let d=window.clay?.wire?.pageTool??r.transport??null;P=c({getView:()=>e.view,store:R,transport:d,acceptState:r.acceptState}),e.aiTool=P}return s})().catch(o=>{throw _=null,o}),_),q=new Map,Lr=o=>{if(q.has(o))return;let n=`The ${o} controls could not load. Reload the page after saving.`;q.set(o,n),F(n,"warning",{actions:[{label:"Retry",onClick:()=>{b.ensure(o).then(()=>{let s=q.get(o);s&&(q.delete(o),O(s))},()=>{})}}]})};e.notices=q;let ie=async({target:o=null,remove:n=null}={})=>{G&&l&&n&&G.holdSlashRange(l,n),await b.ensure("tool").catch(()=>{}),!(!p(e)||!P||!l)&&P.open({target:o,remove:n?G.heldSlashRange(l.state):null})},ue=()=>we(t);function Hr(o){let n=document.querySelectorAll(W),s=typeof o.context?.represented?.bytes=="string"?new DOMParser().parseFromString(o.context.represented.bytes,"text/html"):null,c=s?s.querySelectorAll(W):n,d=s?s.querySelectorAll(le):document.querySelectorAll(le);if(!c.length&&!d.length)return{ok:!1,reason:"no-page"};let i=c.length===1&&d.length===0;if(c.length!==1||!i&&d.length!==1)return console.warn(`clayjs: page plugin needs exactly one article[data-page] and one merge="page" live tag; found ${c.length} article(s) and ${d.length} tag(s), leaving the page as saved HTML`),{ok:!1,reason:"ambiguous-page"};let y=n[0];if(!y)return{ok:!1,reason:"no-page"};let u=c[0],w=d[0],v=null;if(!i){try{v=Ue(w?.textContent)}catch{v=null}let T=Ae(v);if(T)return{ok:!1,reason:T}}let m={article:u.cloneNode(!0),tags:v?[v]:null,element:y,blocks:null,seeded:i,seedValue:null};return m.ready=(async()=>{let T=await x();if(!p(o))return{ok:!1,cancelled:!0};if(i){try{v=m.seedValue=T.seedPageFromArticle(m.article.cloneNode(!0))}catch(h){return console.warn("clayjs: page plugin could not rebuild the page it found, leaving the page as saved HTML",h),{ok:!1,reason:"invalid-page-source"}}let S=Ae(v);if(S)return{ok:!1,reason:S};m.tags=[v]}try{m.blocks=T.blocksFromYValue(v)}catch(S){return console.warn("clayjs: page plugin: the page tag is not a valid Yjs page, leaving the page as saved HTML",S),{ok:!1,reason:"invalid-page-json"}}return{ok:!0}})(),lt(o,y),{ok:!0,source:m}}function Dr(o,n){if(Ae(n))return!1;if(ge(o.authoritative)===ge(n))return!0;try{return o.rebase(n,{source:"state"})}catch(s){return console.warn("clayjs: page plugin could not reconcile the open page store with the saved file",s),!1}}async function Fr(o,n){let s=x();s.catch(()=>null);let c=await n.ready;if(!c.ok)return c;if(!p(o))return{ok:!1,cancelled:!0};let d=await s,i=[...new Set(Object.values(n.blocks).map(u=>me(u.t)).filter(Boolean))];b=d.createFeatureLoader({load:u=>tr[u].load(),install:async(u,w)=>{if(l||await Cr,!p(o)||!l)return null;let v={view:l,upload:r.upload,board:a.board,undo:a.undo,redo:a.redo,revise:ue()?(m,T)=>{ie({target:{toolId:m,rev:T}})}:null};return u==="tool"&&(v.toolHost=await xr(),!p(o))?null:y.installPageFeature(v,u,w)},reportError:(u,w)=>{console.error("clayjs: an editor feature failed to load",u),Lr(w)}});for(let u of i)b.prepare(u).catch(()=>null);let y=null;try{y=await import("../page/editor-NNJA4OKD.js"),Y=y.setEditorActive,G={holdSlashRange:d.holdSlashRange,heldSlashRange:d.heldSlashRange}}catch(u){return console.error("clayjs: page plugin could not load the editor",u),{ok:!1,reason:"editor-assets-failed"}}return p(o)?{ok:!0,editor:y.createPageEditor,refreshView:y.refreshMountedView,featureIds:i,code:d}:{ok:!1,cancelled:!0}}async function Mr(o,n){let s=x();try{t=await Ne()}catch{t=null}if(!p(o))return{ok:!1,cancelled:!0};if(!t||!Array.isArray(t.extensions)||!t.extensions.includes("page"))return Rr(o,hr.code,hr.message),{ok:!1,reason:"missing-capability"};o.mergeTagless=!t.extensions.includes("live-data"),U("Page-Write","v1");let c=null,d=null;if(n.seeded){if(c=await n.ready,!c.ok)return c;if(d=await s,!p(o))return{ok:!1,cancelled:!0}}let i,y=!0;try{if(n.seeded){let h=Ke("page",{value:n.seedValue,represented:r.represented??{bytes:n.article.outerHTML,etag:Ve()??_e()}});o.staged=h,i=h.handle}else{let h=D("page")===null;y=h,i=window.clay.live("page"),h&&(o.pageStore=D("page"))}}catch(h){return console.warn("clayjs: page plugin could not open the page store",h),{ok:!1,reason:"missing-page-store"}}try{await i.ready}catch(h){return console.warn("clayjs: page plugin could not join the page room",h),{ok:!1,reason:"admission-failed"}}if(!p(o))return{ok:!1,cancelled:!0};if(c??=await n.ready,!c.ok)return c;let u=D("page")?.handle?.status?.mode==="fast";if(!y&&!u&&!Dr(D("page"),n.tags?.[0]))return{ok:!1,reason:"stale-store"};if(d??=await s,!p(o))return{ok:!1,cancelled:!0};let w=D("page");if(!w)return{ok:!1,reason:"missing-page-store"};o.store=w;let v=!1,m=null,T=async h=>{let $=await h();return v=$?.ok===!1,m?.changed(),$};g=cr();let S=await mt(t,w);return p(o)?(a=d.createYPageBinding({store:w,onStopped:h=>{o.tabValue=d.yValueOf(a.ydoc),h==="lineage"?(K()?.abandon?.("page"),Ee(o)):pt(o)},authorToken:g.token,ownedTokens:g.owned,checkpointWithin:he,requestCheckpoint:Ze,journal:S,registerUnsavedState:h=>(m=We({id:h.id,isPending:()=>v||h.isPending(),flush:()=>T(()=>h.flush())}),m)}),o.binding=a,S&&wt(o),o.flush=h=>T(()=>a.flush(h)),gt(o),{ok:!0,store:w,handle:i}):{ok:!1,cancelled:!0}}function Nr(o,n){import("../c-U6YWUAR3.js").then(async s=>{if(o.view!==n)return;let c=await s.installPageAwareness({binding:o.binding,view:n});if(c){if(o.view!==n||n.isDestroyed){c.dispose();return}o.awareness=c}}).catch(s=>console.error("clayjs: page plugin remote carets failed to load",s))}function _r(o,n,s){let c=n.element;o.context?.reader?.yieldArticle?.();try{o.releaseArticle=or(c,"editor")}catch(u){return console.error("clayjs: page plugin could not claim the article",u),{ok:!1,reason:"article-owned"}}o.source=n,o.article=c,o.bootHtml=n.article.innerHTML,o.bootRev=n.article.getAttribute("data-rev"),o.savedRev=o.bootRev,I(o,"clay:sync-applied",u=>{o.replaced||ut(u.detail?.html,o.savedRev,o.mergeTagless)&&Ee(o)}),A=[...c.childNodes].filter(u=>u!==o.statusNote);let d=c.ownerDocument.createElement("div"),i=null;try{i=s.editor(d,{doc:a.doc(),dispatch:a.dispatch,history:!1,undo:a.undo,redo:a.redo,board:a.board,editable:!1,features:b,onAiTool:ue()?(u,w)=>{ie({remove:w})}:null,reviseTool:ue()?(u,w)=>{ie({target:{toolId:u,rev:w}})}:null,formatGate:o.loadFormatGate})}catch(u){return console.error("clayjs: page plugin could not mount the editor",u),d.replaceChildren(),o.releaseArticle?.(),o.releaseArticle=null,o.article=null,{ok:!1,reason:"mount-failed"}}l=i,o.view=i;let y=i.dom.closest(".page-shell");if(y&&(y.inert=!0),s.featureIds.length&&y&&(y.style.visibility="hidden"),!s.featureIds.length)for(let u of A)u.remove();return y&&c.appendChild(y),s.refreshView?.(i),a.attach(i),Nr(o,i),f(),k=Promise.allSettled(s.featureIds.map(u=>b.ensure(u))),st(i),o.recover=s.code.createRecoverList({binding:a,mount:i.dom.closest(".page-shell")??c,ownTokens:[g.token,...g.owned],onRestored:u=>s.code.focusBlock(i,u),onStale:()=>er("That change was updated. The list now shows the latest version.","warning")}),o.titleObserver=s.code.observeDocumentTitle(i),{ok:!0,view:i,featureIds:s.featureIds}}async function qr(o,n){try{let s=await x(),{HyperMorph:c}=await $e(),d=s.blocksFromYValue(o.store.authoritative),i=s.readBack(d,document),y=s.mergePageModels(n.baseItems,i,n.parsed,{doc:document,merge3:c.merge3,mergeJson:c.mergeJson});return s.canon(y.items)===s.canon(i)}catch{return!1}}async function Vr(o,n){let s=await x();return await qr(o,n)?{ok:!0,outcome:"writer-adopts"}:new Promise(c=>{let d=null,i=null,y=!1,u=w=>{y||(y=!0,i&&clearTimeout(i),i=null,d?.(),d=null,c(w))};te(o,()=>u({ok:!1,cancelled:!0})),d=o.store.onRebase(w=>{w.source==="remote"&&u({ok:!0,outcome:"writer-adopts"})}),i=setTimeout(()=>{console.warn("page: gave up waiting for the writer's adoption; the hand edit was not adopted"),u({ok:!1,reason:"adoption-timeout"})},s.ADOPTION_TIMEOUT_MS)})}async function Br(o,n,s){let c=await x(),d=c.classifyFile(n.article,n.tags),i=d.kind==="adopt",y=async()=>{let m=await Xe();if(!m||!p(o))return;if(m.status.writer===null){let S=o.store.value.y,h=Object.keys(S),$=h.length?h[0]:`claim-${a.ydoc.clientID.toString(36)}`,Jr=h.length?S[h[0]]:c.yValueOf(a.ydoc).y.seed;o.store.handle.set(["y",$],Jr),m.release("page")}let T;await Promise.race([ze(),new Promise(S=>{T=setTimeout(S,nt)})]),clearTimeout(T)},u=i?y():Promise.resolve(),w=c.installAdoption({view:s.view,source:n,ready:u,isAdopter:()=>{let m=K();return!m||m.status.writer===null?!0:m.isWriter()},requestCheckpoint:()=>he(0),snapshot:()=>H().forSave,mergeTagless:o.mergeTagless,writerReady:y,adopted:m=>K()?.adopted?.("page",m,o.store.mark),notice:m=>{m.copy&&F(rt,"warning",{actions:[{label:"Download your copy",onClick:()=>ve(m.copy)}]})}});o.adoption=w;let v=await w.idle();return v?(v.outcome==="writer-adopts"&&(v=await Vr(o,d)),!v.ok&&p(o)?vr(o):p(o)&&await br(o),v):(await br(o),{ok:!0,outcome:"unchanged"})}async function He(o,n){if(o.replaced)return{ok:!1,reason:"page-replaced"};if(await k,!p(o))return{ok:!1,cancelled:!0};let s=n.view.dom.closest(".page-shell");if(!ke(o,n)||!s||!s.isConnected||n.view.isDestroyed)return{ok:!1,reason:"view-detached"};let c=new Set(n.featureIds??[]),d=at(n.view.state.doc).filter(i=>!c.has(i));return d.length&&(await Promise.allSettled(d.map(i=>b.ensure(i))),!p(o))?{ok:!1,cancelled:!0}:{ok:!0}}function De(o,n){let s=n.view.dom.closest(".page-shell"),c=()=>{for(let d of A)d.remove();s&&(s.style.visibility="")};return o.replaced?(c(),Er(o),{ok:!1,reason:"page-replaced"}):o.inputOpen?{ok:!0}:!ke(o,n)||!s||!s.isConnected||n.view.isDestroyed?{ok:!1,reason:"view-detached"}:(c(),s.inert=!1,Y?.(n.view,!0),o.inputOpen=!0,L(o),{ok:!0})}function Wr(o){return o.inputOpen?(Y?.(o.view,!1),!0):!1}function Gr(o){return o.inputOpen?(Y?.(o.view,!0),!0):!1}async function Yr(o,n){let s=await He(o,n);return s.ok?De(o,n):s}let Fe={readSource:Hr,loadEditorAssets:Fr,prepareAuthority:Mr,mountAndAttach:_r,adoptSource:Br,prepareInput:He,openInput:De,closeInput:Wr,resumeInput:Gr,enableInput:Yr,release:o=>{o.view||vr(o)}};return e.steps=Fe,Fe}async function bt(e,r={},{activate:t=!0}={}){return gr(e,vt(e,r),{activate:t})}function Or(e={},{activate:r=!0,context:t=null}={}){je(),oe=null;let a=++ne,l={...fr({gen:a,isCurrent:()=>a===ne&&(t?.isCurrent?.()??!0),onPhase:g=>{(g.phase==="ready"||g.phase==="blocked"||g.phase==="error")&&L(l),e.onPhase?.(g)}}),article:null,view:null,binding:null,adoption:null,source:null,store:null,toolHost:null,aiTool:null,bootHtml:"",bootRev:null,savedRev:null,staged:null,pageStore:null,releaseArticle:null,replaced:!1,savesHeld:!1,flush:null,loadFormatGate:null,listeners:[],retryTimer:null,retryShown:!1,statusTimer:null,statusNote:null,notices:null,editorReadyResolve:null,context:t,inputOpen:!1,sessionHeld:!1,autosaveSuspended:!1,staleRetry:!1};j=l;let f=bt(l,e,{activate:r}).catch(g=>(console.error("clayjs: page plugin failed to install",g),oe=pr(l,"boot-failed"),j===l&&je(),oe));return{inst:l,boot:f}}function Pr(e={}){return Or(e).boot}function kt(e){if(j===e&&(j=null,ne+=1),U("Page-Write",null),Se(e),e.retryTimer&&(clearTimeout(e.retryTimer),e.retryTimer=null),e.titleObserver?.dispose(),e.titleObserver=null,L(e),e.view&&!e.view.isDestroyed)try{e.view.destroy()}catch(r){console.error("clayjs: page plugin view failed to destroy",r)}e.view=null,Ce(e),Ie(e)}function ae(e){e.sessionHeld&&(e.sessionHeld=!1,z({replay:!1,reason:Oe}))}function Ir(e,{held:r=!0}={}){return{enable(){r&&(ae(e),yr(e))},quiesce(){if(e.view?.composing)throw Object.assign(new Error("clayjs: a composition is still in progress"),{code:"composition"});e.steps?.closeInput?.(e),e.autosaveSuspended||(e.autosaveSuspended=!0,Ge())},resume(){ae(e),e.autosaveSuspended&&(e.autosaveSuspended=!1,X()),e.steps?.resumeInput?.(e)},dispose(){ae(e),e.autosaveSuspended&&(e.autosaveSuspended=!1,X()),kt(e)}}}function Tt(e=null,r={}){pe(Oe);let{inst:t,boot:a}=Or(r,{activate:!1,context:e});t.sessionHeld=!0;let l=Ir(t,{held:!0});se.ready=a.then(()=>se.status);let f=a.then(g=>{if(!g?.deferred)throw Object.assign(new Error("clayjs: the page session could not prepare"),{code:g?.reason??"load-failed"})});return f.catch(()=>{ae(t);try{e?.reader?.reclaimArticle?.()}catch(g){console.error("clayjs: the reader could not take the article back",g)}}),{ready:f,...l}}function Xt(e={}){return{id:"clay:page",order:400,prepare(r={}){return r.initial===!0?j?Ir(j,{held:!1}):{enable(){},quiesce(){},resume(){},dispose(){}}:Tt(r,e)}}}var se={ready:null,install:Pr,get status(){return j?.result??oe},flush(e={}){let r=j;return!r||!r.flush?Promise.resolve({ok:!1,code:"disposed"}):r.flush(e)},dispose:je,get view(){return j?.view??null}};se.ready=Me()?Pr():null;var zt=se;export{nt as WRITER_WAIT_MS,vt as createSteps,zt as default,Xt as modeParticipant,se as page,Xt as pageParticipant,Tt as preparePageSession};
@@ -0,0 +1 @@
1
+ import{a as be,b as me,c as ve,d as le,f as Se}from"../c-7OLLJPWP.js";import{a as ie}from"../c-L4WQSC27.js";import"../c-VRZN56XY.js";import"../c-OW5QIGG3.js";import{a as ge}from"../c-BPF2NSPV.js";import"../c-P7KNDG34.js";import"../c-CYWLPPUS.js";import"../c-N7JPUPGC.js";import"../c-HA6INT6J.js";import"../c-WRBKEJD4.js";import"../c-VHNSBD2M.js";var we="saved",Re=2;function Ie(){return Math.random().toString(36).slice(2,11)+Date.now().toString(36)}function Ce(){try{let e=new Uint8Array(16);return(globalThis.crypto||window.crypto).getRandomValues(e),Array.from(e,r=>r.toString(16).padStart(2,"0")).join("")}catch{return Math.random().toString(36).slice(2)+Date.now().toString(36)}}function Me(e){return typeof e!="string"||e===""?null:new DOMParser().parseFromString(e,"text/html").documentElement?.getAttribute("documentetag")||null}var W=e=>typeof e=="string"&&e?e:null;function De(e){let r=window.location.origin;if(typeof r!="string"||r===""||r==="null")return null;let c=new URL(e||window.location.href,r);return c.protocol==="http:"||c.protocol==="https:"?c.href:null}var Y=e=>Number.isSafeInteger(e)?e:null;function ze(e){if(e==null)return Object.freeze({bytes:null,etag:null,seq:null});if(typeof e.bytes!="string"||e.bytes==="")throw new TypeError("createSavedStream: represented.bytes must be a full HTML string");return Object.freeze({bytes:e.bytes,etag:W(e.etag),seq:Y(e.seq)})}function Ae({documentURL:e,servedEtag:r=null,represented:c=null,onSnapshot:f,onStatus:v}={}){if(typeof f!="function")throw new TypeError("createSavedStream: onSnapshot must be a function");let g=De(e),m=!!W(r),a=ze(c);if(g===null){let n={ready:null,get represented(){return a},adopt(){return n},start(){return n.ready=Promise.resolve(n),n},stop(){}};return n}let S=!0,q=a.seq??0,E=0,P=0,U=f,N=v,C=0,j=!1,L=null,A=null,t=null,s=!1,h=null,d=null,i=null,b=null,k=[],O=n=>!j&&n===C;function x(n,u={}){j||typeof N!="function"||N({state:n,...u})}function _(){k.length=0,b&&(!d||d.active)&&b.clear(),d&&(d.detach(),d=null),h=null,b=null,i=null}function ae(n){if(b){b.update(n);return}k.push(n),!i&&(i=Promise.all([import("../c-SMBZG5X4.js"),import("../c-HFKUVACH.js")]).then(([u,l])=>{h=u.presence,b=l.presence,d=h.attachTransport({send:()=>Promise.resolve(!1)});for(let w of k.splice(0))b.update(w);return b}).catch(()=>(i=null,null)))}function X(){if(_(),!L)return;let n=L;L=null,n.onopen=null,n.onerror=null,n.onmessage=null,n.close()}function B(){if(!A)return;let n=A;A=null,n.controller.abort()}function re(n){if(j)return!1;let u={bytes:n.bytes,etag:W(n.etag),seq:Y(n.seq)};if(typeof u.bytes!="string"||u.bytes==="")return x("recoverable",{reason:"invalid-bytes",seq:u.seq}),!1;if(u.bytes===a.bytes&&u.etag===a.etag&&u.seq===a.seq)return!0;let l=!1;try{l=U(Object.freeze(u))===!0}catch{l=!1}return l?(a=Object.freeze(u),x("applied",{seq:a.seq,etag:a.etag}),!0):(x("recoverable",{reason:"refused",seq:u.seq,etag:u.etag}),!1)}function F(n,u){if(u==="startup")return null;let l=Math.max(n.seq??0,q);return l>0?l:null}function se(n,u){t=n,s=!0,x("recoverable",{reason:u,seq:n.seq??null})}function z(n){j||(t={kind:n.kind,seq:Y(n.seq)},s=!1,R())}function R(){if(j||A||s||!t)return;let n=C,u=t;t=null;let l=new AbortController;A={controller:l};let w=E,K=q,D=T=>{if(A&&A.controller===l&&(A=null),!(!O(n)||l.signal.aborted)){if(T==null){se(u,"repair-failed");return}if(E!==w||q!==K){if(P+=1,P<=Re){t=t??{kind:u.kind,seq:F(u,u.kind)},R();return}o(T.text,{kind:u.kind,seq:F(u,u.kind)},T.etag),R();return}o(T.text,u,T.etag),R()}};fetch(g,{cache:"no-store",signal:l.signal}).then(T=>T.ok?T.text().then(G=>({text:G,etag:W(T.headers?.get?.("etag"))})):null).then(D).catch(()=>D(null))}function o(n,u,l){let K=W(l)??Me(n)??(n===a.bytes?a.etag:null),D=u.kind==="startup"?a.seq:u.seq??a.seq;re({bytes:n,etag:K,seq:D})&&(S=!1,P=0,s=!1,x("current",{seq:a.seq,etag:a.etag}))}function y(n,u){let l={bytes:a.bytes,etag:n??a.etag,seq:u??a.seq};l.etag===a.etag&&l.seq===a.seq||(a=Object.freeze(l),x("current",{seq:a.seq,etag:a.etag}))}function p(n,u,l){let w=W(u);if(!(l!==null&&a.seq!==null&&l<=a.seq)){if(!S&&w!==null&&a.etag!==null){if(w!==a.etag){z({kind:"unmatched",seq:l});return}S=!0}if(n===a.bytes){y(w,l);return}re({bytes:n,etag:w,seq:l})&&(S=!0)}}function I(n,u){let l=n.data;if(l&&l.kind==="external-change"){typeof l.html=="string"?p(l.html,l.etag,u):z({kind:"notice",seq:u});return}typeof n.msg=="string"&&n.msg.endsWith("changed on disk outside this tab")&&z({kind:"notice",seq:u})}function $(n,u){if(!O(u))return;E++;let l;try{l=JSON.parse(n)}catch{x("recoverable",{reason:"bad-json"});return}if(!l||typeof l!="object"||Array.isArray(l)){x("recoverable",{reason:"bad-frame"});return}let w=Y(l.seq);if(w!==null&&w>q&&(q=w),l.type==="notification"){I(l,w);return}if(l.error){x("recoverable",{reason:"server-error",seq:w});return}if(typeof l.html!="string"){W(l.etag)?z({kind:"notice",seq:w}):x("recoverable",{reason:"bad-frame",seq:w});return}p(l.html,l.etag,w)}function M(n,u){if(!O(u))return;E++;let l;try{l=JSON.parse(n)}catch{return}if(!l||typeof l!="object")return;let w=Y(l.seq);if(w!==null&&w>q&&(q=w),l.resync===!0){z({kind:"resync",seq:w});return}l.startup===!0&&z({kind:"startup",seq:null})}function H(n){if(O(n)){if(x("open",{seq:a.seq,etag:a.etag}),s){s=!1,R();return}a.bytes===null&&!m&&z({kind:"startup",seq:null})}}let V={ready:null,get represented(){return a},adopt({onSnapshot:n,onStatus:u}={}){return typeof n=="function"&&(U=n),typeof u=="function"&&(N=u),V},start(){j=!1;let n=++C;return X(),B(),t=null,s=!1,E=0,P=0,q=a.seq??0,V.ready=Se().then(u=>{if(!O(n))return V;let l=Ce(),w=Ie(),K=u.profile.streamPath(g,we,l,w),D=new be(new URL(K,window.location.origin).href,{shared:u.sharedSync,sharedData:u.sharedData,documentURL:g,lane:we,clientId:w,startupCheck:m});return L=D,D.onopen=()=>H(n),D.onerror=()=>{O(n)&&x("reconnecting")},D.onmessage=T=>$(T.data,n),D.addEventListener("cursor",T=>M(T.data,n)),D.addEventListener("presence",T=>{if(!O(n))return;let G;try{G=JSON.parse(T.data)}catch{return}G&&typeof G=="object"&&!Array.isArray(G)&&ae(G)}),V}),V},stop(){j||(j=!0,C++,X(),B(),t=null,s=!1)}};return V}var Ue="article[data-page]",Ve='section[data-type="tool"][data-id]',xe=new Set(["UL","OL","LI","DETAILS"]),qe=new Set(["UL","OL"]),ke=e=>e.tagName==="SECTION"&&e.getAttribute("data-type")==="tool"&&e.hasAttribute("data-id");function Ee(e){return ne(e)}function ne(e){let r=e.querySelector(':scope > script[type="application/json"][data-tool]'),c={};try{c=r?JSON.parse(r.textContent):{}}catch(f){return{rev:null,artifact:null,state:{},signature:null,invalid:!0,error:f}}return{rev:c.rev??null,artifact:c.artifact??null,state:c.state??{},signature:JSON.stringify(c.artifact??null),invalid:!1}}function ue(e){let r=new Map,c=new Set;for(let f of e.querySelectorAll(Ve)){let v=f.getAttribute("data-id");if(!c.has(v)){if(r.has(v)){r.delete(v),c.add(v);continue}r.set(v,ne(f))}}return r}function ce(e){let r=e.querySelector('script[type="application/json"][merge="page.tools"]');if(!r)return{};try{return JSON.parse(r.textContent)}catch{return{}}}function Je(e){let r=new Map,c=new Set,f=v=>{for(let g of v.children){let m=g.getAttribute("data-id");if(m){if(c.has(m))continue;if(r.has(m)){r.delete(m),c.add(m);continue}r.set(m,g)}xe.has(g.tagName)&&f(g)}};return f(e),r}function Ne(e){let r=new Set,c=f=>{for(let v of f.children){let g=v.getAttribute("data-id");g&&r.add(g),xe.has(v.tagName)&&c(v)}};return c(e),r}function Q(e,r=document){if(typeof e!="string"||e==="")return{ok:!1,reason:"bytes"};let c=(r.defaultView??globalThis).DOMParser;if(typeof c!="function")return{ok:!1,reason:"parser"};let f=new c().parseFromString(e,"text/html"),v=[...f.querySelectorAll(Ue)];if(v.length!==1)return{ok:!1,reason:"article"};let g=v[0],m=new Map;for(let S of g.querySelectorAll("details[data-id]"))m.set(S.getAttribute("data-id"),S.hasAttribute("open"));let a=ue(g);return{ok:!0,article:g,source:f,rev:g.getAttribute("data-rev"),title:f.title||null,savedOpen:m,tools:a,toolState:a.size?ce(f):{}}}var fe=(e,r)=>{let c=ne(e),f=ne(r);return!c.invalid&&!f.invalid&&c.rev===f.rev&&c.signature===f.signature};function je(e,{article:r,readerOpen:c=new Map,savedOpen:f=null,keepTool:v=fe}={}){if(!e?.ok||!r)return{changed:!1};for(let t of e.article.querySelectorAll("details[data-id]")){let s=t.getAttribute("data-id");c.has(s)&&t.hasAttribute("open")!==c.get(s)&&t.toggleAttribute("open",c.get(s))}let g=Je(r),m=new Set,a=!1,S=t=>(a=!0,t.cloneNode(!0)),q=(t,s)=>{let h=Ne(t);for(let d of s.children){if(m.has(d)||d.hasAttribute("data-id")||d.tagName!==t.tagName)continue;if(!h.size)return d;let i=Ne(d);for(let b of h)if(i.has(b))return d}return null},E=(t,s)=>{for(let h of s.children)if(!(m.has(h)||h.hasAttribute("data-id"))&&h.tagName===t.tagName)return h;return null},P=(t,s,h=null)=>{for(let{name:d,value:i}of[...s.attributes])d===h||t.getAttribute(d)===i||(t.setAttribute(d,i),a=!0);for(let{name:d}of[...t.attributes])d===h||s.hasAttribute(d)||(t.removeAttribute(d),a=!0)},U=(t,s,h)=>{let d=b=>b&&b.nodeType===t.nodeType&&b.nodeValue===t.nodeValue&&!m.has(b),i=d(s.childNodes[h])?s.childNodes[h]:[...s.childNodes].find(d);return i?(m.add(i),i):t.cloneNode(!0)},N=(t,s)=>{let h=[],d=[...s.childNodes];for(let k=0;k<d.length;k++){let O=d[k];if(O.nodeType!==1){h.push(U(O,t,k));continue}let x=A(O,t);m.add(x),h.push(x)}let i=new Set(h),b=t.firstChild;for(let k of h){for(;b&&!i.has(b);)b=b.nextSibling;if(b===k){b=b.nextSibling;continue}t.insertBefore(k,b),a=!0}for(let k of[...t.childNodes])i.has(k)||(k.remove(),a=!0)},C=t=>{a=!0;let s=t.cloneNode(!1);return N(s,t),s},j=(t,s)=>{a=!0;let h=t.getAttribute("data-id"),d=c.has(h)?c.get(h):s.hasAttribute("open");P(t,s,"open"),t.hasAttribute("open")!==d&&t.toggleAttribute("open",d),N(t,s)},L=(t,s)=>{a=!0,P(t,s),N(t,s)};function A(t,s){let h=t.getAttribute("data-id");if(h){let i=g.get(h);return!i||m.has(i)||i===s||i.contains(s)?S(t):(m.add(i),ke(i)&&ke(t)?v(i,t)?i:S(t):i.tagName!==t.tagName?S(t):i.isEqualNode(t)?i:t.tagName==="DETAILS"?(j(i,t),i):t.tagName==="LI"?(L(i,t),i):qe.has(t.tagName)?(P(i,t),N(i,t),i):S(t))}if(qe.has(t.tagName)){let i=q(t,s);return i?(m.add(i),P(i,t),N(i,t),i):C(t)}let d=E(t,s);return d?(m.add(d),d.isEqualNode(t)?d:(a=!0,S(t))):S(t)}if(N(r,e.article),f){f.clear();for(let[t,s]of e.savedOpen)f.set(t,s)}for(let t of[...c.keys()])e.savedOpen.has(t)||c.delete(t);return{changed:a}}var Te="article[data-page]",Be='section[data-type="tool"][data-id]',Le='script[type="application/json"][merge="page"]',de=["live-at","live-by"];var Fe=e=>{import("../c-JU3NK25H.js").then(({recordEtag:r})=>r(e)).catch(()=>{})},pe=e=>Object.freeze({bytes:typeof e?.bytes=="string"?e.bytes:null,etag:typeof e?.etag=="string"&&e.etag?e.etag:null,seq:Number.isSafeInteger(e?.seq)?e.seq:null}),He=(e,r)=>{let c=e.source.querySelector(Le),f=r.querySelector(Le);if(!c)return f?(f.remove(),!0):!1;if(f){let g=de.map(a=>c.getAttribute(a));return f.textContent===c.textContent&&de.every((a,S)=>f.getAttribute(a)===g[S])?!1:(f.textContent!==c.textContent&&(f.textContent=c.textContent),de.forEach((a,S)=>{g[S]===null?f.removeAttribute(a):f.setAttribute(a,g[S])}),!0)}let v=r.querySelector(Te);return v?.parentNode?(v.parentNode.insertBefore(r.importNode(c,!0),v),!0):!1};function Ge({doc:e,article:r,represented:c=null,feed:f=null,documentURL:v,servedEtag:g=null,stream:m=null,release:a=()=>{}}){let S=new Map,q=new Map,E=new Map,P={data:{}},U=[],N=null,C=null,j=0,L=!1,A=m,t=null,s=pe(c),h=null,d=a,i=!1,b=(o,y)=>{let p=e.defaultView??globalThis;e.dispatchEvent(new p.CustomEvent(o,{detail:y}))},k=()=>{for(let o of E.values())try{o.instance?.dispose?.()}catch{}E.clear()},O=()=>N?Promise.resolve(N):(C||(C=import("../c-GOWBDM6J.js").then(({createToolHost:o})=>L?null:(N=o({store:P,mode:"view"}),N)).catch(o=>(C=null,console.warn("clayjs: could not load the reader tool host",o),null))),C),x=o=>{for(let[y,p]of E){let I=o.get(y);if(!I||I.invalid||I.rev!==p.rev||I.signature!==p.signature){try{p.instance?.dispose?.()}catch{}E.delete(y)}}},_=(o,y)=>{let p=[];for(let[$,M]of o)M.invalid?console.warn("clayjs: could not decode saved tools",M.error):p.push([$,M]);if(!p.length)return;P.data=y??{};let I=++j;O().then($=>{if(!(L||!$||I!==j))for(let[M,H]of p){if(E.has(M))continue;let V=[...r.querySelectorAll(Be)].find(n=>n.getAttribute("data-id")===M);if(V)try{let n=$.mount(V,{id:M,artifact:H.artifact,rev:H.rev,seed:H.state??{}});E.set(M,{rev:H.rev,signature:H.signature,instance:n})}catch(n){console.warn(`clayjs: tool ${M} could not mount`,n)}}})},ae=(o,y)=>{let p=E.get(o.getAttribute("data-id"));if(!p)return fe(o,y);let I=Ee(y);return!I.invalid&&I.rev===p.rev&&I.signature===p.signature},X=o=>{o?.state==="current"&&(s=pe({bytes:s.bytes,etag:o.etag??null,seq:o.seq??null})),o?.state&&o.state!=="applied"&&b("clay:reader-status",o)},B=o=>{je(o,{article:r,readerOpen:S,savedOpen:q,keepTool:ae}),o.rev===null?r.removeAttribute("data-rev"):r.setAttribute("data-rev",o.rev),o.title&&(e.title=o.title),He(o,e)},re=o=>{console.warn("clayjs: the reader could not apply a saved file",o),A?.stop(),A=null,k();let y=s.bytes?Q(s.bytes,e):null;if(y?.ok)try{B(y)}catch(p){console.warn("clayjs: the reader could not restore the previous file",p)}b("clay:reader-status",{state:"blocked"})};function F(o){if(L||i)return!1;let y=Q(o.bytes,e);if(!y.ok||r.querySelector(".page-editor"))return!1;if(me(o.bytes))return A?.stop(),A=null,le(),b("clay:reader-status",{state:"blocked",reason:"upgraded"}),!1;x(y.tools);try{B(y)}catch(p){return re(p),!1}return s=pe(o),s.etag&&Fe(s.etag),_(y.tools,y.toolState),b("clay:reader-status",{state:"applied",etag:s.etag,seq:s.seq}),!0}let se=()=>s.bytes===null?!1:(R.stop(),!0),z=o=>{let y=o.target;if(y.tagName!=="DETAILS"||!r.contains(y))return;let p=y.getAttribute("data-id");p&&(y.open===q.get(p)?S.delete(p):S.set(p,y.open))};if(e.addEventListener("toggle",z,!0),U.push(["toggle",z,!0]),c){let o=Q(c.bytes,e);if(!o.ok)throw new Error(`clayjs: the saved file is not a readable page (${o.reason})`);B(o),_(o.tools,o.toolState)}else{for(let o of r.querySelectorAll("details[data-id]"))q.set(o.getAttribute("data-id"),o.hasAttribute("open"));_(ue(r),ce(e))}let R={ready:null,get represented(){return s},yieldArticle(){return L||i?!1:(j++,k(),i=!0,d(),!0)},reclaimArticle(){if(L||!i)return!1;if(d=ie(r,"reader"),i=!1,s.bytes!==null){let o=Q(s.bytes,e);o.ok&&(B(o),_(o.tools,o.toolState))}return!0},prepareHandoff(o={}){return h?Promise.resolve(h):L?Promise.reject(new Error("clayjs: the reader is stopped")):(h=import("../c-GSFIGKOP.js").then(({readerHandoff:y})=>y({stream:A,options:o,apply:F,retire:se,yieldArticle:R.yieldArticle,reclaimArticle:R.reclaimArticle})),h)},stop(){if(L)return t;L=!0,h=null,j++,A?.stop(),A=null;for(let[o,y,p]of U)e.removeEventListener(o,y,p);U.length=0,k();try{N?.dispose()}catch{}return N=null,i||d(),i=!1,d=()=>!1,t=Object.freeze({...s}),t}};if(R.ready=Promise.resolve(R),f){let o=y=>{let p=y.detail;typeof p?.html=="string"&&(p.source&&p.source!=="disk"&&p.lane!=="saved"||F({bytes:p.html,etag:p.etag??null,seq:p.seq??null}))};f.addEventListener("clay:sync-applied",o),U.push(["clay:sync-applied",o])}else A?A.adopt({onSnapshot:F,onStatus:X}):(A=Ae({documentURL:v,servedEtag:g,represented:s.bytes?s:null,onSnapshot:F,onStatus:X}),A.start());return R}function oe({represented:e=null,documentURL:r,servedEtag:c=null,stream:f=null,feed:v=null,doc:g=document}={}){if(e&&(typeof e.bytes!="string"||e.bytes===""))throw new TypeError("clayjs: the reader needs the full saved bytes to start");if(!v&&!f&&!e&&!r)throw new TypeError("clayjs: the reader needs a file, a stream or a page to follow");let m=g.querySelectorAll(Te);if(m.length!==1)throw new Error("clayjs: the reader needs exactly one article[data-page]");let a=m[0];if(a.querySelector(".page-editor"))throw new Error("clayjs: the reader will not start over a mounted editor");if(e){let q=Q(e.bytes,g);if(!q.ok)throw new Error("clayjs: the saved file is not a readable page");if(ve(q.source))throw le(),new Error("clayjs: the saved file was published at another version of this document")}let S=ie(a,"reader");try{return Ge({doc:g,article:a,represented:e,feed:v,documentURL:r,servedEtag:c,stream:f,release:S})}catch(q){throw S(),q}}var J=null,te=null,ye=!1,Oe=!1,ee=null,Z=null,he=null,Pe=()=>document.querySelectorAll("article[data-page]").length===1;function We(){ee=e=>{if(ye)return;let r=e.detail;r?.state==="applied"?te?.(J):(r?.state==="blocked"||r?.state==="recoverable")&&te?.(null)},document.addEventListener("clay:reader-status",ee)}function _e(){ee&&document.removeEventListener("clay:reader-status",ee),ee=null,te=null}function $e(e=null){if(!Pe())return Promise.resolve(null);try{J=e?oe({represented:e}):oe({documentURL:window.location.href,servedEtag:ge})}catch(r){return console.warn("clayjs: the reader could not start over the served article",r),Promise.resolve(null)}return e?Promise.resolve(J.represented):new Promise(r=>{te=r})}function Qe(e=null){if(!Pe())return Promise.resolve(null);try{J=oe({feed:document,represented:e,documentURL:window.location.href})}catch(r){return console.warn("clayjs: the reader could not start over the page sync projects",r),Promise.resolve(null)}return Promise.resolve(J)}function Xe({sync:e=!1,represented:r=null}={}){return Z||(ye=!1,Oe=e,We(),he=e?Qe(r):$e(r),Z=e?he:Promise.resolve(null),Z)}function ut(e={}){return Ke(),Xe(e)}function ct(e){return J?J.prepareHandoff(e):Promise.reject(new Error("clayjs: the reader has not started"))}function Ke(){ye=!0,Oe||te?.(null),_e(),J?.stop(),J=null,he=null,Z=null}export{he as acquired,ct as prepareHandoff,Z as ready,ut as restart,Xe as start,Ke as stop};
@@ -0,0 +1 @@
1
+ import{a as I,c as V}from"../c-RVMWGXEJ.js";import{a as P,d as j}from"../c-VRZN56XY.js";import{e as K,i as M}from"../c-OW5QIGG3.js";import"../c-BPF2NSPV.js";import"../c-P7KNDG34.js";import"../c-CYWLPPUS.js";import"../c-N7JPUPGC.js";import"../c-HA6INT6J.js";import"../c-WRBKEJD4.js";import"../c-VHNSBD2M.js";var b=()=>window.clay&&"isEditMode"in window.clay?!!window.clay.isEditMode:K,pe=/^[A-Za-z0-9_-]{8,64}$/,D="clay:people:me",de=2e3,B=120,Q=/\S+@\S+\.\S+/,a={supports:!1,me:null,members:null,unavailable:!1},l=null,m,u=null,f=null,y=null,x=null,N="",_=null;function g(e){if(!e||typeof e!="object")return null;let t=typeof e.id=="string"?e.id:"",n=typeof e.name=="string"?e.name.trim().replace(/\s+/g," "):"";return!pe.test(t)||!n||n.length>B||Q.test(n)?null:{id:t,name:n}}function p({id:e,name:t}){return Object.freeze({id:e,name:t,initials:V(t),color:I(e)})}function E(){document.dispatchEvent(new CustomEvent("clay:people",{detail:{me:ee()}}))}function fe(){return document.querySelector("[clay-people]")}function O(){return[...document.querySelectorAll("[clay-people] data[value]")]}function R(){if(u)return u;u=new Map;for(let e of O()){let t=g({id:e.getAttribute("value"),name:e.textContent});t&&!u.has(t.id)&&u.set(t.id,p(t))}return u}function S(){if(m===void 0){m=null;try{m=g(JSON.parse(window.localStorage.getItem(D)||"null"))}catch{}}return m}function q(e){m=e;try{window.localStorage.setItem(D,JSON.stringify(e))}catch{}}function me(){let e=new Uint8Array(16);return crypto.getRandomValues(e),btoa(String.fromCharCode(...e)).replace(/\+/g,"-").replace(/\//g,"_").replace(/=+$/,"")}function ee(){if(!b())return null;if(a.me)return p(a.me);if(a.unavailable||l!=="ok"&&l!=="none")return null;let e=S();return e?p(e):null}function te(e){let t=P(e);if(t!=="ok"&&a.supports)return;let n=e.document?.people,o=e.extensions.includes("people")&&!!n&&typeof n=="object",r={supports:o,me:o?g(n.me):null,members:o&&Array.isArray(n.members)?n.members.map(g).filter(Boolean):null,unavailable:o&&n.unavailable===!0},s=t!==l||JSON.stringify(r)!==JSON.stringify(a);a=r,l=t,s&&E()}async function k(e){te(await j({fresh:e}))}function ne(e){L();let t=String(e??""),n=a.me?.id===t&&a.me||a.members?.find(r=>r.id===t);if(n)return p(n);let o=S();return o?.id===t?p(o):R().get(t)||Object.freeze({id:t,name:"Unknown person",initials:"?",color:I(t)})}function oe(){return L(),[...R().keys()].map(ne)}async function be(){return await k(l!=="none"),a.members?a.members.map(p):null}function J(e){let t=g(e);if(!t)throw new TypeError("clay.people.add: needs an id of 8 to 64 letters, digits, _ or -, and a name of 1 to 120 characters");let n=fe();n||(n=document.createElement("div"),n.setAttribute("clay-people",""),n.hidden=!0,document.body.append(n));let o=O().filter(r=>r.getAttribute("value")===t.id);if(o.length){o[0].textContent!==t.name&&(o[0].textContent=t.name);for(let r of o.slice(1))r.remove()}else{let r=document.createElement("data");r.setAttribute("value",t.id),r.textContent=t.name,n.append(r)}return u=null,p(t)}function ge(e){let t=String(e??"");for(let n of O())n.getAttribute("value")===t&&n.remove();u=null}function re(){return b()&&!a.me&&(l==="ok"||l==="none")&&!!S()&&!a.unavailable}function he(e){if(!re())throw Object.assign(new Error("clay.people.rename: only a name chosen in this browser can be changed here"),{code:"not-renamable"});let t=S(),n=g({id:t.id,name:e});if(!n)throw new TypeError("clay.people.rename: needs a name of 1 to 120 characters that is not an email address");return q(n),O().some(o=>o.getAttribute("value")===n.id)&&J(n),E(),p(n)}var ye=e=>e!==M().generation||!b();function z(e){if(ye(e))throw Object.assign(new Error("clay.author: the page left edit mode before your name was recorded"),{code:"stale-document"})}function X(){return Object.assign(new Error("Can't reach the host to check who you are. Try again in a moment."),{code:"people-unavailable"})}async function Pe(e,t="data-by"){if(!window.clay?.isEditMode)throw new Error("clay.author: this page is not in edit mode");if(!(e instanceof Element))throw new TypeError("clay.author: needs an element");let n=M().generation;if(a.supports){let r=await j({fresh:!0});z(n);let s=P(r);if(s==="none")throw Object.assign(new Error("This page lost its connection to the host. Reload it to keep editing."),{code:"people-unavailable"});if(s!=="ok")throw X();if(te(r),a.unavailable)throw Object.assign(new Error("The app hosting this file can't name you right now. Check its Profile settings, then try again."),{code:"people-unavailable"})}else l!=="ok"&&l!=="none"&&(await k(l==="failed"),z(n));if(l==="failed")throw X();let o=ee();if(!o){let r=await ve();if(z(n),!r)return null;q(r),o=p(r),E()}return J(o),e.setAttribute(t,o.id),o}function we(){return _??=Promise.all([import("../c-WNYBLIOZ.js"),import("../c-6HMB24EV.js"),import("../c-OCSZ4QGN.js")]).then(([e,t,n])=>({...e,...t,resolveTheme:n.resolveTheme})).catch(e=>{throw _=null,e}),_}function ve(){return f&&(!y||y.isConnected)||(f&&x(),f=xe().catch(e=>{throw f=null,y=null,x=null,e})),f}async function xe(){let e=await we();return new Promise(t=>{let n=e.resolveTheme(),{root:o,overlay:r,panel:s,heading:ae,body:U,footer:le,close:se}=e.bevelDialog({zIndex:"2147483001",width:"420px",closable:!0,titled:!0,theme:n,surface:"people"});y=o,x=()=>d(null),ae.textContent="What name should appear on your changes?",s.setAttribute("aria-label","Your name");let c=e.bevelInput("input",{rules:["display:block","width:100%","margin:0"],theme:n,parts:["dialog.input","people.input"]});c.setAttribute("aria-label","Your name"),c.maxLength=B,c.autocomplete="name";let h=e.bevelText("p",["display:block","margin:10px 0 0","font-size:13px","opacity:.8"],"Saved in this browser. Everyone who can read this page will see it.",{theme:n,parts:["dialog.hint","people.hint"],role:"mutedText"}),F=h.textContent;U.append(c,h);let W=oe().slice(0,8);if(W.length){let i=e.bevelText("p",["display:block","margin:18px 0 8px","font-size:13px"],"Or continue as someone already in this page:",{theme:n,parts:["people.choiceLabel"],role:"mutedText"}),H=e.bevelBox("div",["display:flex","flex-wrap:wrap","gap:8px"],{theme:n,parts:["people.choices"]});for(let T of W)H.append(e.bevelButton(T.name,{small:!0,onClick:()=>d({id:T.id,name:T.name}),theme:n,parts:["dialog.button","people.button","people.choice"],labelParts:["dialog.buttonLabel","people.buttonLabel"]}));U.append(i,H)}let ce=e.bevelButton("Cancel",{onClick:()=>d(null),theme:n,parts:["dialog.button","people.button"],labelParts:["dialog.buttonLabel","people.buttonLabel"]}),ue=e.bevelButton("Continue",{variant:"primary",onClick:()=>A(),theme:n,parts:["dialog.button","people.button"],labelParts:["dialog.buttonLabel","people.buttonLabel"]});le.append(ce,ue);let A=()=>{let i=c.value.trim().replace(/\s+/g," ");if(!i){c.focus();return}if(Q.test(i)){h.textContent="Use a name, not an email address. Everyone who can read this page will see it.",c.focus();return}d({id:me(),name:i.slice(0,B)})};c.addEventListener("input",()=>{h.textContent!==F&&(h.textContent=F)}),s.addEventListener("submit",i=>{i.preventDefault(),A()}),se?.addEventListener("click",()=>d(null));let C=!1;r.addEventListener("mousedown",i=>{C=i.target===r}),r.addEventListener("click",i=>{C&&i.target===r&&d(null),C=!1});let Y=i=>{if(i.key==="Tab"){i.stopPropagation(),e.keepFocusIn(s,i);return}i.key==="Escape"?(i.preventDefault(),i.stopPropagation(),d(null)):i.key==="Enter"&&i.target===c&&(i.preventDefault(),i.stopPropagation(),A())};document.addEventListener("keydown",Y,!0);let $=!1;function d(i){$||($=!0,document.removeEventListener("keydown",Y,!0),o.remove(),i&&q(i),f=null,y=null,x=null,t(i))}e.dismissOf.set(o,()=>d(null)),o.setAttribute("aria-hidden","false"),Ee().append(o),c.focus()})}function Ee(){let e=[...document.querySelectorAll("dialog[open]")].filter(t=>t.matches(":modal"));return e[e.length-1]||document.body}function Z(e){return e.nodeType===1&&(e.matches("[clay-people]")||!!e.querySelector("[clay-people]"))}function G(){return JSON.stringify([...R().values()].map(({id:e,name:t})=>[e,t]))}var w=null;function L(){let e=document;if(w?.doc===e)return;w?.observer.disconnect(),N=G();let t=new MutationObserver(n=>{if(!(typeof document>"u"||document!==e))for(let o of n){let r=o.target.nodeType===1?o.target:o.target.parentElement;if(o.attributeName==="clay-people"||r?.closest("[clay-people]")||[...o.addedNodes].some(Z)||[...o.removedNodes].some(Z)){u=null;let s=G();s!==N&&(N=s,E());return}}});t.observe(e.body,{subtree:!0,childList:!0,characterData:!0,attributes:!0,attributeFilter:["value","clay-people"]}),w={doc:e,observer:t}}function ke(){w?.observer.disconnect(),w=null}var v=null;function ie(){if(!b())return Promise.resolve(null);if(!v){let e=new AbortController,{signal:t}=e;window.addEventListener("storage",n=>{n.key!==D||!b()||(m=void 0,E())},{signal:t}),document.addEventListener("visibilitychange",()=>{b()&&document.visibilityState==="visible"&&l!=="none"&&k(!0)},{signal:t}),v={listeners:e,first:k(!1)}}return Promise.race([v.first,new Promise(e=>setTimeout(e,de))])}function Oe(){v?.listeners.abort(),v=null}async function Se(){L(),await ie()}function Le(){return{enable(){L(),ie()},quiesce(){if(f)throw Object.assign(new Error("clay:people: a name is still being chosen"),{code:"pending-input",pending:["name"]})},resume(){},dispose(){x?.(),ke(),Oe()}}}function je(){return{id:"clay:people",order:330,prepare(e={}){let t=Le();return e.initial!==!0?t:{...t,enable(){}}}}}var Ae=Object.freeze({get:ne,list:oe,available:be,add:J,remove:ge,canRename:re,rename:he}),Ie=Se(),Ne=Ae;export{Pe as author,ee as currentMe,Ne as default,je as modeParticipant,Ae as people,je as peopleParticipant,Ie as ready};
@@ -0,0 +1,26 @@
1
+ import{a as ot,b as rt,c as it}from"../c-LFPHCXY3.js";import{a as nt}from"../c-HPURYVZS.js";import{g as et}from"../c-OIBUTDXI.js";import"../c-4JZDZFF6.js";import"../c-VAK7SG37.js";import"../c-NUHP2XDB.js";import"../c-VHNSBD2M.js";var qt=":root{--qc-surface:#f7f2ea;--qc-surface-hover:#efe7d8;--qc-border:#cdbfa6;--qc-text:#2b241b;--qc-text-hover:#463c2e;--qc-on-dark:#efe7d8;--qc-overlay:rgba(43,36,27,.6);--qc-dim:rgba(0,0,0,.55);--qc-radius:8px;--qc-crop-line:#fff;--qc-font:ui-sans-serif,system-ui,sans-serif;}.qc-css-probe{position:absolute;}.qc-backdrop{position:fixed;inset:0;background:var(--qc-overlay);display:grid;place-items:center;z-index:1000;animation:qc-fade .15s ease;}@keyframes qc-fade{from{opacity:0}}.qc-modal{background:var(--qc-surface);border:1px solid var(--qc-border);border-radius:var(--qc-radius);padding:16px;max-width:92vw;font-family:var(--qc-font);}.qc-bar{display:flex;justify-content:flex-end;gap:10px;margin-top:12px;}.qc-btn{font:inherit;font-family:var(--qc-font);font-size:.85rem;padding:.3rem .75rem;border:1px solid var(--qc-border);border-radius:6px;background:var(--qc-surface);color:var(--qc-text);cursor:pointer;}.qc-btn:hover{background:var(--qc-surface-hover);}.qc-btn-primary{background:var(--qc-text);border-color:var(--qc-text);color:var(--qc-on-dark);font-weight:600;}.qc-btn-primary:hover{background:var(--qc-text-hover);border-color:var(--qc-text-hover);}.qc-stage{position:relative;line-height:0;user-select:none;-webkit-user-select:none;touch-action:none;}.qc-stage img{display:block;max-width:100%;pointer-events:none;}.qc-dim{position:absolute;inset:0;background:var(--qc-dim);pointer-events:none;}.qc-box{position:absolute;cursor:move;outline:1px solid var(--qc-crop-line);background:linear-gradient(var(--qc-crop-line),var(--qc-crop-line)) 0 33.33%/100% 1px no-repeat,linear-gradient(var(--qc-crop-line),var(--qc-crop-line)) 0 66.66%/100% 1px no-repeat,linear-gradient(var(--qc-crop-line),var(--qc-crop-line)) 33.33% 0/1px 100% no-repeat,linear-gradient(var(--qc-crop-line),var(--qc-crop-line)) 66.66% 0/1px 100% no-repeat;background-blend-mode:overlay;}.qc-handle{position:absolute;box-sizing:border-box;width:28px;height:28px;border:7px solid transparent;background:var(--qc-crop-line);background-clip:padding-box;border-radius:9px;}.qc-nw{left:-14px;top:-14px;cursor:nwse-resize;}.qc-ne{right:-14px;top:-14px;cursor:nesw-resize;}.qc-sw{left:-14px;bottom:-14px;cursor:nesw-resize;}.qc-se{right:-14px;bottom:-14px;cursor:nwse-resize;}.qc-mount{line-height:0;}",gt=["image/jpeg","image/png","image/webp"];var _=!1;function L(t,n="",e=""){let r=document.createElement(t);return n&&(r.className=n),e&&(r.textContent=e),r}function D(t,n,e){t.style.setProperty(n,e,"important")}function vt(t){return String(t).replace(/[&<>"']/g,n=>({"&":"&amp;","<":"&lt;",">":"&gt;",'"':"&quot;","'":"&#39;"})[n])}function K(){if(document.querySelector("style[data-quickcrop]"))return;let t=L("div","qc-css-probe");t.style.display="none",document.body.append(t);let n=getComputedStyle(t).position==="absolute";if(t.remove(),n)return;let e=document.createElement("style");e.setAttribute("data-quickcrop",""),e.setAttribute("save-remove",""),e.setAttribute("snapshot-remove",""),e.textContent=qt,document.head.append(e)}var Y={open({content:t,confirmLabel:n,onConfirm:e,onCancel:r}){K();let i=L("div","qc-backdrop");i.setAttribute("save-remove",""),i.setAttribute("snapshot-remove","");let m=L("div","qc-modal"),u=L("div","qc-bar"),f=L("button","qc-btn qc-btn-primary",n);f.type="button",u.append(f),m.append(t,u),i.append(m),document.body.append(i);let E=q=>{q.key==="Escape"&&r()};return document.addEventListener("keydown",E),f.onclick=()=>e(),i.onclick=q=>{q.target===i&&r()},f.focus(),{close(){document.removeEventListener("keydown",E),i.remove()}}}};function at(t){return!!t&&typeof t=="object"&&typeof t.open=="function"&&typeof t.close=="function"&&typeof t.onYes=="function"&&"html"in t}var xt='<svg viewBox="0 0 134 134" xmlns="http://www.w3.org/2000/svg"><path class="micromodal__close-bg" d="M132 132.5 1 1.5h131v131Z"/><path d="M83 27l24 24M107 27L83 51" stroke="#fff" stroke-width="6"/></svg>';function ct(t){let n=()=>t.isShowing&&!!document.querySelector(".micromodal-parent");return{fit(){if(n())return null;let e=window.innerWidth>=640?128:80;return{width:Math.max(120,Math.min(550,window.innerWidth-32)-4-e),height:Math.max(120,window.innerHeight-220)}},open(e){if(n())return Y.open(e);let{content:r,confirmLabel:i,onConfirm:m,onCancel:u}=e;K();let f=!1,E=C=>{f||(f=!0,document.removeEventListener("keydown",q,!0),C())},q=C=>{C.key==="Escape"&&(C.stopPropagation(),u())};return t.html='<div class="qc-mount"></div>',t.yes=vt(i),t.no="",t.closeHtml=xt,t.disableFocus=!0,t.onOpen(()=>{document.querySelector(".micromodal__content .qc-mount")?.append(r),document.querySelector(".micromodal-parent .micromodal__yes")?.focus(),document.addEventListener("keydown",q,!0)}),t.onYes(()=>(E(m),!0)),t.onNo(()=>{E(u)}),t.open(),{close(){f||(f=!0,document.removeEventListener("keydown",q,!0),t.close())}}}}}function yt(t){if(t==="builtin")return Y;if(t&&typeof t=="object"){if(at(t))return ct(t);if(typeof t.open=="function")return t;throw new TypeError('quickcrop: modal must be "auto", "builtin", a themodal instance, or an adapter with open()')}if(t==="auto")return at(window.themodal)?ct(window.themodal):Y;throw new TypeError('quickcrop: modal must be "auto", "builtin", a themodal instance, or an adapter with open()')}function wt(t,n={}){let{aspect:e=null,type:r,quality:i=.92,maxWidth:m=null,maxHeight:u=null,minSize:f=40,labels:E={},modal:q="auto"}=n,{confirm:C="Crop"}=E;if(!(t instanceof Blob))return Promise.reject(new TypeError("quickcrop: expected a File or Blob"));if(_)return Promise.reject(new Error("quickcrop: already open"));let S;try{S=yt(q)}catch(R){return Promise.reject(R)}_=!0;let A=r||(gt.includes(t.type)?t.type:"image/png"),F=URL.createObjectURL(t),a=new Image;return new Promise((R,z)=>{a.onerror=()=>{URL.revokeObjectURL(F),_=!1,z(new Error("quickcrop: could not decode image"))};function h(){let U=S.fit?S.fit():null,mt=Math.max(1,Math.min(U?.width??window.innerWidth*.86,a.naturalWidth)),ut=Math.max(1,U?.height??window.innerHeight*.72),N=Math.min(mt/a.naturalWidth,ut/a.naturalHeight,1),M=Math.max(1,Math.round(a.naturalWidth*N)),g=Math.max(1,Math.round(a.naturalHeight*N)),$=Math.min(f,M,g);K();let v=L("div","qc-stage");D(a,"width",M+"px"),D(a,"height",g+"px");let Q=L("div","qc-dim"),B=L("div","qc-box");for(let o of["nw","ne","sw","se"])B.appendChild(L("div","qc-handle qc-"+o));v.append(a,Q,B);let c,p;e?(c=Math.min(M,g*e),p=c/e,p>g&&(p=g,c=p*e)):(c=M,p=g);let y=(M-c)/2,w=(g-p)/2;Z();function Z(){D(B,"left",y+"px"),D(B,"top",w+"px"),D(B,"width",c+"px"),D(B,"height",p+"px"),D(Q,"clip-path",`polygon(0 0, 100% 0, 100% 100%, 0 100%, 0 0, ${y}px ${w}px, ${y}px ${w+p}px, ${y+c}px ${w+p}px, ${y+c}px ${w}px, ${y}px ${w}px)`)}let T=(o,b,d)=>Math.max(b,Math.min(d,o));v.addEventListener("pointerdown",o=>{let b=o.target.closest(".qc-handle"),d=o.target===B;if(!b&&!d)return;o.preventDefault(),v.setPointerCapture(o.pointerId);let s={px:o.clientX,py:o.clientY,x:y,y:w,w:c,h:p},l=b&&[...b.classList].find(W=>/^qc-(nw|ne|sw|se)$/.test(W))?.slice(3),x=W=>{if(!l)y=T(s.x+(W.clientX-s.px),0,M-c),w=T(s.y+(W.clientY-s.py),0,g-p);else{let O=l.includes("w")?s.x+s.w:s.x,H=l.includes("n")?s.y+s.h:s.y,P=l.includes("e"),X=l.includes("s"),G=v.getBoundingClientRect(),J=Math.abs(W.clientX-(G.left+O)),V=Math.abs(W.clientY-(G.top+H));if(e){let tt=Math.min(P?M-O:O,(X?g-H:H)*e),bt=Math.min(Math.max($,$*e),tt);c=T(Math.max(J,V*e),bt,tt),p=c/e}else c=T(J,$,P?M-O:O),p=T(V,$,X?g-H:H);y=P?O:O-c,w=X?H:H-p}Z()},k=()=>{v.removeEventListener("pointermove",x),v.removeEventListener("pointerup",k),v.removeEventListener("pointercancel",k)};v.addEventListener("pointermove",x),v.addEventListener("pointerup",k),v.addEventListener("pointercancel",k)});function ft(){let o=a.naturalWidth/M,b=a.naturalHeight/g,d=Math.round(c*o),s=Math.round(p*b),l=1;m&&d>m&&(l=m/d),u&&s*l>u&&(l=u/s),d*l*s*l>16777216&&(l=Math.sqrt(16777216/(d*s)));let x=document.createElement("canvas");x.width=Math.max(1,Math.round(d*l)),x.height=Math.max(1,Math.round(s*l));let k=x.getContext("2d");if(!k)throw new Error("quickcrop: crop too large for a canvas");return A==="image/jpeg"&&(k.fillStyle="#fff",k.fillRect(0,0,x.width,x.height)),k.imageSmoothingQuality="high",k.drawImage(a,y*o,w*b,c*o,p*b,0,0,x.width,x.height),x}let j=!1,I=()=>j?!1:(j=!0,ht.close(),URL.revokeObjectURL(F),_=!1,!0),ht=S.open({content:v,confirmLabel:C,onConfirm(){if(j)return;let o,b;try{o=ft(),b=o.toDataURL(A,i)}catch(d){I()&&z(d);return}I()&&o.toBlob(d=>{if(!d){z(new Error("quickcrop: image encoding failed"));return}R({blob:d,dataURL:b,width:o.width,height:o.height})},A,i)},onCancel(){I()&&R(null)}})}a.onload=()=>{try{h()}catch(U){URL.revokeObjectURL(F),_=!1,z(U)}},a.src=F})}var pt=wt;var st=[".qc-stage",".qc-backdrop"],dt=`@layer clay-skin{
2
+ :is(.qc-stage, .qc-backdrop),:is(.qc-stage, .qc-backdrop) *{--qc-surface:light-dark(#FFFCF6, #11131E) !important;--qc-text:light-dark(#2B241B, #ECEAF2) !important;--qc-border:light-dark(#D8C8AF, #353B52) !important;--qc-radius:0px !important;--qc-font:system-ui,-apple-system,"Segoe UI",sans-serif !important;--qc-surface-hover:light-dark(#F4ECDF, #1A1D2C) !important;--qc-text-hover:color-mix(in srgb, light-dark(#2B241B, #ECEAF2), light-dark(#FDF8F0, #0B0C13) 12%) !important;--qc-on-dark:light-dark(#FDF8F0, #0B0C13) !important;--qc-overlay:color-mix(in srgb, light-dark(#FDF8F0, #0B0C13) 70%, transparent) !important;--qc-dim:rgba(0,0,0,.55) !important;--qc-crop-line:#fff !important}
3
+ .qc-stage{margin-inline:auto !important;inline-size:fit-content !important;background:light-dark(#F4ECDF, #1A1D2C) !important}
4
+ .qc-stage img{display:block !important;max-inline-size:100% !important}
5
+ .qc-backdrop{position:fixed !important;inset:0 !important;background:var(--qc-overlay) !important;display:grid !important;place-items:center !important;z-index:1000 !important;animation:qc-fade .15s ease !important}
6
+ .qc-modal{background:var(--qc-surface) !important;border:1px solid var(--qc-border) !important;border-radius:var(--qc-radius) !important;padding:16px !important;max-width:92vw !important;font-family:var(--qc-font) !important}
7
+ .qc-bar{display:flex !important;justify-content:flex-end !important;gap:10px !important;margin-top:12px !important}
8
+ .qc-btn{font:inherit !important;font-family:var(--qc-font) !important;font-size:.85rem !important;padding:.3rem .75rem !important;border:1px solid var(--qc-border) !important;border-radius:6px !important;background:var(--qc-surface) !important;color:var(--qc-text) !important;cursor:pointer !important}
9
+ .qc-btn:hover{background:var(--qc-surface-hover) !important}
10
+ .qc-btn-primary{background:var(--qc-text) !important;border-color:var(--qc-text) !important;color:var(--qc-on-dark) !important;font-weight:600 !important}
11
+ .qc-btn-primary:hover{background:var(--qc-text-hover) !important;border-color:var(--qc-text-hover) !important}
12
+ .qc-stage{position:relative !important;line-height:0 !important;user-select:none !important;-webkit-user-select:none !important;touch-action:none !important}
13
+ .qc-stage img{display:block !important;max-width:100% !important;pointer-events:none !important}
14
+ .qc-dim{position:absolute !important;inset:0 !important;background:var(--qc-dim) !important;pointer-events:none !important}
15
+ .qc-box{position:absolute !important;cursor:move !important;outline:1px solid var(--qc-crop-line) !important;background:linear-gradient(var(--qc-crop-line),var(--qc-crop-line)) 0 33.33%/100% 1px no-repeat,linear-gradient(var(--qc-crop-line),var(--qc-crop-line)) 0 66.66%/100% 1px no-repeat,linear-gradient(var(--qc-crop-line),var(--qc-crop-line)) 33.33% 0/1px 100% no-repeat,linear-gradient(var(--qc-crop-line),var(--qc-crop-line)) 66.66% 0/1px 100% no-repeat !important;background-blend-mode:overlay !important}
16
+ .qc-handle{position:absolute !important;box-sizing:border-box !important;width:28px !important;height:28px !important;border:7px solid transparent !important;background:var(--qc-crop-line) !important;background-clip:padding-box !important;border-radius:9px !important}
17
+ .qc-nw{left:-14px !important;top:-14px !important;cursor:nwse-resize !important}
18
+ .qc-ne{right:-14px !important;top:-14px !important;cursor:nesw-resize !important}
19
+ .qc-sw{left:-14px !important;bottom:-14px !important;cursor:nesw-resize !important}
20
+ .qc-se{right:-14px !important;bottom:-14px !important;cursor:nwse-resize !important}
21
+ .qc-mount{line-height:0 !important}
22
+ .qc-stage img[hidden]{display:none !important}
23
+ .qc-backdrop[hidden]{display:none !important}
24
+ .qc-bar[hidden]{display:none !important}
25
+ }`;var lt=844;nt("quickcrop",dt,{roots:st});function kt(t){return!!t&&typeof t=="object"&&typeof t.open=="function"&&typeof t.close=="function"&&typeof t.onYes=="function"&&"html"in t}var Et={fit(){let t=document.documentElement.clientWidth;return{width:Math.max(120,Math.min(lt,t-32)-2-44),height:Math.max(120,window.innerHeight-Math.min(96,window.innerHeight*.1)-200)}},open({content:t,confirmLabel:n,onConfirm:e,onCancel:r}){let{root:i,overlay:m,panel:u,heading:f,body:E,footer:q,close:C}=it({zIndex:"2147483001",width:`${lt}px`,closable:!0,titled:!0});f.textContent="Crop image",u.setAttribute("aria-label","Crop image"),E.append(t);let S=et(n,{variant:"primary",onClick:()=>e()});q.append(S),C.addEventListener("click",()=>r()),u.addEventListener("submit",h=>h.preventDefault());let A=!1;m.addEventListener("mousedown",h=>{A=h.target===m}),m.addEventListener("click",h=>{A&&h.target===m&&r(),A=!1});let F=h=>{if(h.key==="Tab"){h.stopPropagation(),rt(u,h);return}h.key==="Escape"&&(h.stopPropagation(),r())};document.addEventListener("keydown",F,!0);let a=document.body.style.overflow;document.body.style.overflow="hidden";let R=!1,z=()=>{R||(R=!0,document.removeEventListener("keydown",F,!0),document.body.style.overflow=a,i.remove())};return ot.set(i,()=>{z(),r()}),i.setAttribute("aria-hidden","false"),document.body.append(i),S.focus(),{close:z}}};function Mt(t,n={}){let e=n.modal??"auto",r=e==="auto"||kt(e);return pt(t,r?{...n,modal:Et}:n)}var Bt=Mt;export{Et as bevelCropAdapter,Bt as default,Mt as quickcrop};
26
+ /*! For license information please see quickcrop-QNY3PKLD.js.LEGAL.txt */
@@ -0,0 +1,7 @@
1
+ /*! quickcrop v1.2.1 | MIT-0 | https://github.com/panphora/quickcrop
2
+ *
3
+ * const result = await quickcrop(file, { aspect: 1 });
4
+ * // result: { blob, dataURL, width, height } on confirm, null on cancel
5
+ *
6
+ * Uses your modal system (themodal, or any adapter) or brings its own.
7
+ */