@panphora/clayjs 1.15.1 → 1.16.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (506) hide show
  1. package/README.md +4 -5
  2. package/THIRD-PARTY-NOTICES.md +16 -0
  3. package/compat/highlight-11.9.0.min.js +1213 -0
  4. package/compat/highlight-LICENSE +29 -0
  5. package/compat/journal-assets.lock.json +22 -0
  6. package/compat/overtype-2.6.1.min.js +116 -0
  7. package/compat/overtype-LICENSE +21 -0
  8. package/dist/all.js +90 -0
  9. package/dist/clay-dom.js +84 -0
  10. package/dist/clay-events.js +103 -0
  11. package/dist/clay-internals.js +85 -0
  12. package/dist/clay-options.js +93 -0
  13. package/dist/clay-router.js +98 -0
  14. package/dist/clay-ui.js +95 -0
  15. package/dist/clay-utils.js +84 -0
  16. package/dist/clay.js +146 -0
  17. package/dist/clay.standalone.js +83090 -58706
  18. package/dist/m/attrs/add-from-T5LJXFFI.js +1 -0
  19. package/dist/m/attrs/onaftersave-OKSWEJQF.js +1 -0
  20. package/dist/m/attrs/refetch-on-save-NWPPXOCZ.js +1 -0
  21. package/dist/m/attrs/save-freeze-FUP4Q4X3.js +1 -0
  22. package/dist/m/c-2AZDZWCK.js +1 -0
  23. package/dist/m/c-2JL6E75N.js +1 -0
  24. package/dist/m/c-2M73252O.js +1 -0
  25. package/dist/m/c-2SPVQSHC.js +1 -0
  26. package/dist/m/c-33HUYEDI.js +1 -0
  27. package/dist/m/c-33JJ6CBX.js +2 -0
  28. package/dist/m/c-35NBGMZB.js +1 -0
  29. package/dist/m/c-3GJ4SDE2.js +1 -0
  30. package/dist/m/c-3IQRECYS.js +1 -0
  31. package/dist/m/c-3OWDMNJR.js +2 -0
  32. package/dist/m/c-46XYM55L.js +1 -0
  33. package/dist/m/c-4B6H4G5V.js +1 -0
  34. package/dist/m/c-4DRMS4QG.js +9 -0
  35. package/dist/m/c-4FFHZM32.js +1 -0
  36. package/dist/m/c-4JZDZFF6.js +1 -0
  37. package/dist/m/c-4L3BTFRK.js +1 -0
  38. package/dist/m/c-4Q2XTQ2N.js +2 -0
  39. package/dist/m/c-4WKFKEKF.js +1 -0
  40. package/dist/m/c-4YSCRICO.js +1 -0
  41. package/dist/m/c-54RCDCBU.js +1 -0
  42. package/dist/m/c-5M4YEKCX.js +4 -0
  43. package/dist/m/c-5R4PTRG2.js +1 -0
  44. package/dist/m/c-5V3MOVJT.js +1 -0
  45. package/dist/m/c-5VYOWDTI.js +1 -0
  46. package/dist/m/c-5Y6TNX5W.js +34 -0
  47. package/dist/m/c-5YIHJ3TJ.js +1 -0
  48. package/dist/m/c-66O32MV3.js +28 -0
  49. package/dist/m/c-6HMB24EV.js +1 -0
  50. package/dist/m/c-7DJDKPGL.js +1 -0
  51. package/dist/m/c-7O6AFR65.js +1 -0
  52. package/dist/m/c-7SWMYKAI.js +1 -0
  53. package/dist/m/c-7VGZ7RU5.js +1 -0
  54. package/dist/m/c-A7LS5UZW.js +1 -0
  55. package/dist/m/c-ANQTJ3B5.js +2 -0
  56. package/dist/m/c-AQLFEATB.js +1 -0
  57. package/dist/m/c-AYVOREBE.js +1 -0
  58. package/dist/m/c-B2ZXPOS3.js +3 -0
  59. package/dist/m/c-BBVGTQG7.js +1 -0
  60. package/dist/m/c-BMIZKMPV.js +1 -0
  61. package/dist/m/c-BTDI4Y23.js +1 -0
  62. package/dist/m/c-BWFVSBDF.js +1 -0
  63. package/dist/m/c-BYTKL6UX.js +1 -0
  64. package/dist/m/c-CFHW5AMY.js +6 -0
  65. package/dist/m/c-CJZSLMVQ.js +1 -0
  66. package/dist/m/c-CYWLPPUS.js +1 -0
  67. package/dist/m/c-CZUSOB7V.js +1 -0
  68. package/dist/m/c-DBE6ORSI.js +1 -0
  69. package/dist/m/c-DCFSEJZG.js +1 -0
  70. package/dist/m/c-DNZ5IFM6.js +1 -0
  71. package/dist/m/c-EDHUR4MX.js +1 -0
  72. package/dist/m/c-EJTGYSLN.js +1 -0
  73. package/dist/m/c-EY6UOM54.js +1 -0
  74. package/dist/m/c-F3CKJTJS.js +1 -0
  75. package/dist/m/c-F7Y6FLPY.js +1 -0
  76. package/dist/m/c-FA4DZVTC.js +1 -0
  77. package/dist/m/c-FILLTJA7.js +1 -0
  78. package/dist/m/c-G2BUZITR.js +1 -0
  79. package/dist/m/c-GB3JTV6E.js +1 -0
  80. package/dist/m/c-GBGWXTX4.js +1 -0
  81. package/dist/m/c-GHBCCVG4.js +1 -0
  82. package/dist/m/c-GJAEGGXY.js +1 -0
  83. package/dist/m/c-GOWBDM6J.js +1 -0
  84. package/dist/m/c-GQ6F6IDK.js +1 -0
  85. package/dist/m/c-H4LG442Q.js +1 -0
  86. package/dist/m/c-HA6INT6J.js +1 -0
  87. package/dist/m/c-HPURYVZS.js +2 -0
  88. package/dist/m/c-HRDCD3WN.js +67 -0
  89. package/dist/m/c-HT33EQRN.js +1 -0
  90. package/dist/m/c-HVYXIS72.js +1 -0
  91. package/dist/m/c-IB52R237.js +1 -0
  92. package/dist/m/c-IJUK2GPW.js +1 -0
  93. package/dist/m/c-IKWNE4R4.js +1 -0
  94. package/dist/m/c-IU3IYEU6.js +1 -0
  95. package/dist/m/c-IZ2EBRAJ.js +1 -0
  96. package/dist/m/c-J7CA54IP.js +1 -0
  97. package/dist/m/c-JAX2667S.js +6 -0
  98. package/dist/m/c-KI7M4AY3.js +1 -0
  99. package/dist/m/c-KIPQJX4B.js +1 -0
  100. package/dist/m/c-KKWLDOPM.js +1 -0
  101. package/dist/m/c-KR4UW4KW.js +1 -0
  102. package/dist/m/c-KY3VJGUA.js +8 -0
  103. package/dist/m/c-L4WQSC27.js +1 -0
  104. package/dist/m/c-LFPHCXY3.js +1 -0
  105. package/dist/m/c-LR4CGEPT.js +91 -0
  106. package/dist/m/c-LRPUO2MX.js +1 -0
  107. package/dist/m/c-LTGMXXKO.js +1 -0
  108. package/dist/m/c-LXENEBV7.js +1 -0
  109. package/dist/m/c-LZJPNR2W.js +1 -0
  110. package/dist/m/c-MMUIUUZG.js +2 -0
  111. package/dist/m/c-MTQHWQC3.js +1 -0
  112. package/dist/m/c-N326R2JD.js +1 -0
  113. package/dist/m/c-N7JPUPGC.js +1 -0
  114. package/dist/m/c-NMJRXKPC.js +8 -0
  115. package/dist/m/c-NRPJEVJS.js +1 -0
  116. package/dist/m/c-NUHP2XDB.js +1 -0
  117. package/dist/m/c-NZMNXVF6.js +1 -0
  118. package/dist/m/c-OCSZ4QGN.js +1 -0
  119. package/dist/m/c-OIBUTDXI.js +1 -0
  120. package/dist/m/c-OIDRZKAF.js +1 -0
  121. package/dist/m/c-OYTFP5QN.js +1 -0
  122. package/dist/m/c-P7KNDG34.js +1 -0
  123. package/dist/m/c-PPOSCAQD.js +1 -0
  124. package/dist/m/c-PQ5LK6QE.js +993 -0
  125. package/dist/m/c-PZ4XEPUP.js +2 -0
  126. package/dist/m/c-QHIWXHRO.js +1 -0
  127. package/dist/m/c-QHWJ5ZIJ.js +1 -0
  128. package/dist/m/c-QIX5BJYN.js +1 -0
  129. package/dist/m/c-QNKREOL6.js +1 -0
  130. package/dist/m/c-QQHEX6HA.js +1 -0
  131. package/dist/m/c-R7RMANJI.js +9 -0
  132. package/dist/m/c-RI4NT75Y.js +1 -0
  133. package/dist/m/c-RM7J7BV2.js +1 -0
  134. package/dist/m/c-RUJKSUQW.js +1 -0
  135. package/dist/m/c-RVMWGXEJ.js +1 -0
  136. package/dist/m/c-S7H2DRCB.js +1 -0
  137. package/dist/m/c-S7LK4KUE.js +1 -0
  138. package/dist/m/c-SGCCC4FW.js +25 -0
  139. package/dist/m/c-SGIA4IEQ.js +188 -0
  140. package/dist/m/c-SWRJFCNN.js +1 -0
  141. package/dist/m/c-T4VO4OCB.js +1 -0
  142. package/dist/m/c-TCCA5BZN.js +2 -0
  143. package/dist/m/c-TQEMVJCS.js +1 -0
  144. package/dist/m/c-TQZ2JYHD.js +1 -0
  145. package/dist/m/c-TR6RMDQ7.js +3 -0
  146. package/dist/m/c-TRS6TM6O.js +1 -0
  147. package/dist/m/c-UGHH4MB3.js +1 -0
  148. package/dist/m/c-UKHTLWUW.js +1 -0
  149. package/dist/m/c-UL2YUY52.js +1 -0
  150. package/dist/m/c-UNN7LWCT.js +1 -0
  151. package/dist/m/c-UXBMRDZB.js +235 -0
  152. package/dist/m/c-V7PZZRG7.js +1 -0
  153. package/dist/m/c-VAK7SG37.js +1 -0
  154. package/dist/m/c-VDSS4K3Z.js +1 -0
  155. package/dist/m/c-VFX45IZQ.js +1 -0
  156. package/dist/m/c-VHNSBD2M.js +1 -0
  157. package/dist/m/c-VKEDWYDF.js +1 -0
  158. package/dist/m/c-VL52ADDR.js +1 -0
  159. package/dist/m/c-WN5AY3OZ.js +1 -0
  160. package/dist/m/c-WNYBLIOZ.js +1 -0
  161. package/dist/m/c-WRBKEJD4.js +1 -0
  162. package/dist/m/c-WWDBYXLK.js +1 -0
  163. package/dist/m/c-WYFDLITL.js +1 -0
  164. package/dist/m/c-XN6MBKI6.js +67 -0
  165. package/dist/m/c-XNNW2CWK.js +1 -0
  166. package/dist/m/c-XPELB6E5.js +1 -0
  167. package/dist/m/c-XQXZAO7N.js +1 -0
  168. package/dist/m/c-Y6USGTS5.js +5 -0
  169. package/dist/m/c-YDH7Q3NY.js +1 -0
  170. package/dist/m/c-YG2NJYS6.js +135 -0
  171. package/dist/m/c-Z36J63PP.js +1 -0
  172. package/dist/m/c-Z4VRC7GU.js +7 -0
  173. package/dist/m/c-Z6K52OLP.js +19 -0
  174. package/dist/m/c-ZDY2MDAA.js +21 -0
  175. package/dist/m/c-ZE46QDIH.js +1 -0
  176. package/dist/m/c-ZUCOKOHT.js +1 -0
  177. package/dist/m/core/admin-attrs-VGNLAUDK.js +1 -0
  178. package/dist/m/core/autosave-E4PEFPZ6.js +1 -0
  179. package/dist/m/core/conflict-notice-VQ6Y64PH.js +1 -0
  180. package/dist/m/core/draft-mode-WSQAT67S.js +1 -0
  181. package/dist/m/core/host-permission-XN3K2IW3.js +1 -0
  182. package/dist/m/core/is-edit-mode-JXHDVGUL.js +1 -0
  183. package/dist/m/core/persist-HKHA66IY.js +3 -0
  184. package/dist/m/core/recovery-TBBSICE2.js +1 -0
  185. package/dist/m/core/save-WUCHTQBE.js +1 -0
  186. package/dist/m/core/save-core-FJVHT5M3.js +1 -0
  187. package/dist/m/core/snapshot-F3SWDZMM.js +1 -0
  188. package/dist/m/core/unsaved-warning-STKBHE6G.js +1 -0
  189. package/dist/m/dom/all-APS5ZSKP.js +1 -0
  190. package/dist/m/dom/dom-helpers-L7OSR6S4.js +1 -0
  191. package/dist/m/events/index-23DPTUT4.js +1 -0
  192. package/dist/m/internals/index-WOVAP3RU.js +1 -0
  193. package/dist/m/lib/cache-bust-CGWT6ZJI.js +1 -0
  194. package/dist/m/lib/region-policy-SB2AWVG5.js +1 -0
  195. package/dist/m/loader-HXX6YNH5.js +1 -0
  196. package/dist/m/manifest-F22DEDAC.js +1 -0
  197. package/dist/m/manifest-edit-C3C7376B.js +1 -0
  198. package/dist/m/manifest.json +3491 -0
  199. package/dist/m/options/options-2LH76JQ3.js +1 -0
  200. package/dist/m/page/editor-XUTB2HB2.js +189 -0
  201. package/dist/m/plugins/ai-edit-ZQ4CGWIP.js +6 -0
  202. package/dist/m/plugins/bind-text-NX46N5UV.js +1 -0
  203. package/dist/m/plugins/cms-HP3LSTPN.js +2293 -0
  204. package/dist/m/plugins/demo-ZIBFAA3R.js +1 -0
  205. package/dist/m/plugins/derive-UAAA4V4S.js +1 -0
  206. package/dist/m/plugins/indicator-PV4YW2ID.js +1 -0
  207. package/dist/m/plugins/live-NUTTXSBS.js +1 -0
  208. package/dist/m/plugins/menu-HCKO3DSP.js +138 -0
  209. package/dist/m/plugins/message-LQ6EDH4V.js +1 -0
  210. package/dist/m/plugins/page-KSUH7G6J.js +2 -0
  211. package/dist/m/plugins/page-view-W73OW7WI.js +1 -0
  212. package/dist/m/plugins/people-AJJ32YCG.js +1 -0
  213. package/dist/m/plugins/quickcrop-QNY3PKLD.js +26 -0
  214. package/dist/m/plugins/quickcrop-QNY3PKLD.js.LEGAL.txt +7 -0
  215. package/dist/m/plugins/richclay-RC3L2F6X.js +517 -0
  216. package/dist/m/plugins/richclay-RC3L2F6X.js.LEGAL.txt +1 -0
  217. package/dist/m/plugins/sortable-YRMQX3ZU.js +1 -0
  218. package/dist/m/plugins/source-KHK5UUSK.js +1 -0
  219. package/dist/m/plugins/undo-OF2L3CXU.js +1 -0
  220. package/dist/m/plugins/unsent-HJFLQJ2O.js +1 -0
  221. package/dist/m/plugins/upgrade-ZNYODP5Y.js +1 -0
  222. package/dist/m/plugins/upload-XSGNILUY.js +1 -0
  223. package/dist/m/plugins/visitor-drafts-XK5GW55Q.js +21 -0
  224. package/dist/m/plugins/visitor-drafts-owner-KSSH75EV.js +1 -0
  225. package/dist/m/plugins/wire-ZWVWKF76.js +1 -0
  226. package/dist/m/reader-core-ILWLXVMP.js +68 -0
  227. package/dist/m/route/route-KOCZSEGN.js +1 -0
  228. package/dist/m/sync/live-sync-4AUVXVJU.js +1 -0
  229. package/dist/m/ui/index-EVHKMKBL.js +1 -0
  230. package/dist/m/utils/index-4TJCVLT7.js +1 -0
  231. package/dist/m/vendor/Sortable.vendor-A755ITLN.js +3 -0
  232. package/dist/m/vendor/Sortable.vendor-A755ITLN.js.LEGAL.txt +1 -0
  233. package/dist/m/vendor/sap-core.vendor-A7BMUYZT.js +6 -0
  234. package/dist/offline-manifest.json +3800 -0
  235. package/dist/page/themes/light-1.css +406 -0
  236. package/dist/server/core.cjs +23662 -22860
  237. package/dist/server/offline-runtime.cjs +4954 -0
  238. package/dist/server/offline-runtime.mjs +4923 -0
  239. package/dist/server/rooms.mjs +9 -0
  240. package/docs/guide.md +1078 -669
  241. package/entries/all.js +2 -0
  242. package/entries/clay-data.js +1 -1
  243. package/entries/clay-dom.js +2 -0
  244. package/entries/clay-events.js +2 -0
  245. package/entries/clay-internals.js +2 -0
  246. package/entries/clay-options.js +2 -0
  247. package/entries/clay-router.js +2 -0
  248. package/entries/clay-ui.js +2 -0
  249. package/entries/clay-utils.js +2 -0
  250. package/entries/clay.js +2 -0
  251. package/entries/sap.js +6 -6
  252. package/fonts/ibm-plex-mono-LICENSE +93 -0
  253. package/fonts/ibm-plex-mono-latin-300-normal.woff2 +0 -0
  254. package/fonts/ibm-plex-mono-latin-400-italic.woff2 +0 -0
  255. package/fonts/ibm-plex-mono-latin-400-normal.woff2 +0 -0
  256. package/fonts/ibm-plex-mono-latin-500-normal.woff2 +0 -0
  257. package/fonts/ibm-plex-mono-latin-600-normal.woff2 +0 -0
  258. package/fonts/ibm-plex-sans-LICENSE +93 -0
  259. package/fonts/ibm-plex-sans-latin-400-normal.woff2 +0 -0
  260. package/fonts/ibm-plex-sans-latin-500-normal.woff2 +0 -0
  261. package/fonts/ibm-plex-sans-latin-600-normal.woff2 +0 -0
  262. package/fonts/ibm-plex.css +71 -0
  263. package/fonts/inter-LICENSE +93 -0
  264. package/fonts/inter-cyrillic-ext-wght-normal.woff2 +0 -0
  265. package/fonts/inter-cyrillic-wght-normal.woff2 +0 -0
  266. package/fonts/inter-greek-ext-wght-normal.woff2 +0 -0
  267. package/fonts/inter-greek-wght-normal.woff2 +0 -0
  268. package/fonts/inter-latin-ext-wght-normal.woff2 +0 -0
  269. package/fonts/inter-latin-wght-normal.woff2 +0 -0
  270. package/fonts/inter-vietnamese-wght-normal.woff2 +0 -0
  271. package/fonts/inter.css +62 -0
  272. package/fonts/newsreader-LICENSE +93 -0
  273. package/fonts/newsreader-latin-ext-opsz-normal.woff2 +0 -0
  274. package/fonts/newsreader-latin-opsz-normal.woff2 +0 -0
  275. package/fonts/newsreader-vietnamese-opsz-normal.woff2 +0 -0
  276. package/fonts/newsreader.css +26 -0
  277. package/fonts/work-sans-LICENSE +93 -0
  278. package/fonts/work-sans-latin-wght-normal.woff2 +0 -0
  279. package/fonts/work-sans.css +8 -0
  280. package/package.json +20 -3
  281. package/packed-contract.json +1 -0
  282. package/src/attrs/add-from.js +27 -4
  283. package/src/attrs/save-freeze.js +7 -52
  284. package/src/core/admin-attrs.js +119 -12
  285. package/src/core/admin-contenteditable.js +12 -10
  286. package/src/core/admin-inputs.js +14 -15
  287. package/src/core/admin-onclick.js +2 -0
  288. package/src/core/autosave.js +74 -21
  289. package/src/core/conflict-download.js +22 -0
  290. package/src/core/conflict-notice-ui.js +1173 -0
  291. package/src/core/conflict-notice.js +140 -697
  292. package/src/core/edit-mode.js +147 -14
  293. package/src/core/etag.js +30 -12
  294. package/src/core/host-meta.js +72 -8
  295. package/src/core/host-permission.js +29 -0
  296. package/src/core/is-edit-mode.js +145 -12
  297. package/src/core/mode-key.js +125 -0
  298. package/src/core/mode-lifecycle.js +544 -0
  299. package/src/core/mode-receipt.js +30 -0
  300. package/src/core/mode-refusal.js +13 -0
  301. package/src/core/mode-resources.js +52 -0
  302. package/src/core/mode-support.js +82 -0
  303. package/src/core/mode-switch.js +259 -0
  304. package/src/core/mode-transition.js +112 -0
  305. package/src/core/page-data-write.js +305 -0
  306. package/src/core/page-data.js +26 -227
  307. package/src/core/page-format-wire.js +4 -0
  308. package/src/core/page-format.js +58 -0
  309. package/src/core/persist.js +37 -9
  310. package/src/core/preserve-authored.js +114 -0
  311. package/src/core/recovery.js +772 -0
  312. package/src/core/runtime-url.js +105 -0
  313. package/src/core/save-core.js +109 -12
  314. package/src/core/save-replace.js +72 -0
  315. package/src/core/save-size-notice.js +134 -0
  316. package/src/core/save-size.js +140 -0
  317. package/src/core/save.js +805 -118
  318. package/src/core/snapshot.js +121 -11
  319. package/src/core/source-map.js +157 -9
  320. package/src/core/unsaved-warning.js +14 -4
  321. package/src/core/upgrade-run.js +408 -0
  322. package/src/core/version.js +18 -0
  323. package/src/lib/assets.js +30 -0
  324. package/src/lib/autosave-debug-gate.js +50 -0
  325. package/src/lib/autosave-scheduler.js +141 -0
  326. package/src/lib/boot-imports.js +8 -0
  327. package/src/lib/derived.js +3 -1
  328. package/src/lib/dirty-gate.js +15 -0
  329. package/src/lib/doc-storage.js +33 -0
  330. package/src/lib/effect.js +9 -4
  331. package/src/lib/mutation.js +4 -2
  332. package/src/lib/offline-runtime.js +226 -0
  333. package/src/lib/preload.js +48 -0
  334. package/src/lib/root-attrs.js +1 -1
  335. package/src/lib/trash.js +18 -0
  336. package/src/lib/undo/capture-move.js +152 -0
  337. package/src/live/local-channel.js +61 -0
  338. package/src/live/local-lane.js +60 -9
  339. package/src/live/server-lane.js +6 -3
  340. package/src/loader-logic.js +76 -15
  341. package/src/loader.js +218 -30
  342. package/src/page/adopt-boot.js +76 -22
  343. package/src/page/adopt.js +25 -4
  344. package/src/page/awareness.js +230 -0
  345. package/src/page/blocks.js +79 -5
  346. package/src/page/blocksel.js +20 -4
  347. package/src/page/board-face.js +13 -0
  348. package/src/page/board-panel.js +5 -17
  349. package/src/page/board-style.js +2 -13
  350. package/src/page/board-view.js +1 -11
  351. package/src/page/board-views.js +17 -0
  352. package/src/page/board.js +2 -2
  353. package/src/page/boot-pack.js +26 -0
  354. package/src/page/boot.js +237 -0
  355. package/src/page/checklist.js +1 -1
  356. package/src/page/chrome.js +411 -61
  357. package/src/page/csv-import.js +17 -2
  358. package/src/page/document-title-dom.js +40 -0
  359. package/src/page/document-title-runtime.js +76 -0
  360. package/src/page/document-title.js +9 -0
  361. package/src/page/drag.js +48 -13
  362. package/src/page/drop.js +2 -1
  363. package/src/page/editor.js +330 -86
  364. package/src/page/feature-loader.js +72 -0
  365. package/src/page/features/board.js +12 -0
  366. package/src/page/features/code.js +13 -0
  367. package/src/page/features/media.js +290 -0
  368. package/src/page/features/registry.js +23 -0
  369. package/src/page/features/table.js +383 -0
  370. package/src/page/{tool-view.js → features/tool.js} +33 -2
  371. package/src/page/format-codec.js +215 -0
  372. package/src/page/format-gate.js +179 -0
  373. package/src/page/format-level.js +157 -0
  374. package/src/page/highlight-slot.js +23 -0
  375. package/src/page/highlight.js +30 -16
  376. package/src/page/history-intent.js +78 -0
  377. package/src/page/inline.js +18 -25
  378. package/src/page/items.js +52 -11
  379. package/src/page/link.js +1 -0
  380. package/src/page/markdown.js +86 -1
  381. package/src/page/media-views.js +3 -0
  382. package/src/page/media.js +33 -245
  383. package/src/page/outline-cache.js +11 -0
  384. package/src/page/placeholder.js +27 -7
  385. package/src/page/projection.js +196 -50
  386. package/src/page/reader-patch.js +306 -0
  387. package/src/page/recover.js +1 -1
  388. package/src/page/rich/page-tool.js +1 -4
  389. package/src/page/runtime-owner.js +27 -0
  390. package/src/page/save-projection.js +7 -4
  391. package/src/page/schema.js +14 -0
  392. package/src/page/table-rect-key.js +3 -0
  393. package/src/page/table-select.js +4 -3
  394. package/src/page/table-style.js +1 -1
  395. package/src/page/table-views.js +3 -0
  396. package/src/page/table.js +8 -293
  397. package/src/page/themes/light-1.css +139 -2
  398. package/src/page/themes/light-1.source.css +269 -0
  399. package/src/page/tool-capability.js +3 -0
  400. package/src/page/tool-views.js +3 -0
  401. package/src/page/view.js +390 -107
  402. package/src/page/ybind/awareness.js +172 -0
  403. package/src/page/ybind/binding.js +9 -1
  404. package/src/page/ybind/bridge.js +50 -47
  405. package/src/page/ybind/decode.js +52 -19
  406. package/src/page/ybind/doc.js +27 -2
  407. package/src/page/ybind/group.js +12 -3
  408. package/src/page/ybind/index.js +2 -0
  409. package/src/page/ybind/lineage.js +71 -0
  410. package/src/page/ybind/marks.js +25 -1
  411. package/src/page/ybind/migrate.js +48 -13
  412. package/src/page/ybind/moves.js +32 -21
  413. package/src/page/ybind/positions.js +50 -0
  414. package/src/page/ybind/provider.js +84 -22
  415. package/src/page/ybind/recovery-proof.js +191 -0
  416. package/src/page/ybind/recovery-replay.js +130 -0
  417. package/src/page/ybind/tokens.js +15 -6
  418. package/src/page/ybind/walk.js +10 -3
  419. package/src/page/ybind/writer.js +48 -4
  420. package/src/plugins/ai-edit.js +167 -32
  421. package/src/plugins/bind-text.js +218 -0
  422. package/src/plugins/cms.js +93 -0
  423. package/src/plugins/indicator.js +57 -5
  424. package/src/plugins/live.js +282 -34
  425. package/src/plugins/menu/claygoo.svg.js +1 -0
  426. package/src/plugins/menu/seo-head.js +323 -0
  427. package/src/plugins/menu/seo.js +849 -0
  428. package/src/plugins/menu.js +425 -0
  429. package/src/plugins/page-view.js +131 -0
  430. package/src/plugins/page.js +1022 -275
  431. package/src/plugins/people.js +158 -31
  432. package/src/plugins/richclay.js +119 -9
  433. package/src/plugins/sortable.js +370 -60
  434. package/src/plugins/source.js +189 -366
  435. package/src/plugins/undo.js +289 -19
  436. package/src/plugins/unsent.js +132 -0
  437. package/src/plugins/upgrade-run.js +1 -0
  438. package/src/plugins/upgrade.js +210 -0
  439. package/src/plugins/upload-task.js +571 -0
  440. package/src/plugins/upload-ui.js +265 -0
  441. package/src/plugins/upload.js +34 -153
  442. package/src/plugins/visitor-drafts/inert.js +32 -0
  443. package/src/plugins/visitor-drafts/owner-chip.js +3 -0
  444. package/src/plugins/visitor-drafts/prompt.js +2 -2
  445. package/src/plugins/visitor-drafts-owner.js +85 -0
  446. package/src/plugins/visitor-drafts.js +31 -42
  447. package/src/plugins/wire.js +82 -1
  448. package/src/reader-core.js +26 -0
  449. package/src/recovery/conflicts.js +287 -0
  450. package/src/recovery/identity.js +154 -0
  451. package/src/recovery/store.js +792 -0
  452. package/src/recovery/undo.js +257 -0
  453. package/src/server/checkpoint/index.js +68 -4
  454. package/src/server/offline-runtime/index.js +214 -0
  455. package/src/server/rooms/index.js +2 -1
  456. package/src/server/rooms/live-data-rooms.js +2 -2
  457. package/src/server/rooms/page-admission.js +33 -0
  458. package/src/server/rooms/page-lineage.js +56 -0
  459. package/src/server/rooms/page-rebase.js +11 -5
  460. package/src/server/rooms/page-state.js +2 -0
  461. package/src/server/rooms/page-write-admission.js +9 -3
  462. package/src/source/session.js +705 -0
  463. package/src/sync/conflict-revert.js +5 -4
  464. package/src/sync/conflicts-edit.js +119 -0
  465. package/src/sync/conflicts-facade.js +49 -0
  466. package/src/sync/conflicts.js +99 -1
  467. package/src/sync/editing-marker.js +37 -6
  468. package/src/sync/editing-sender.js +8 -1
  469. package/src/sync/live-sync-edit.js +63 -0
  470. package/src/sync/live-sync.js +364 -119
  471. package/src/sync/local-presence.js +187 -0
  472. package/src/sync/merge-declarations.js +10 -0
  473. package/src/sync/merge-engine.js +12 -0
  474. package/src/sync/presence-store.js +412 -0
  475. package/src/sync/presence-target.js +243 -0
  476. package/src/sync/presence.js +72 -41
  477. package/src/sync/saved-handoff.js +200 -0
  478. package/src/sync/saved-stream.js +535 -0
  479. package/src/sync/version-guard.js +92 -0
  480. package/src/sync/wire-profile.js +81 -0
  481. package/src/ui/bevel-controls.js +2 -8
  482. package/src/ui/page-scheme.js +7 -0
  483. package/src/ui/skins/cms.js +1 -1
  484. package/src/ui/theme-config.js +150 -0
  485. package/src/ui/theme.js +6 -138
  486. package/src/ui/toast-lazy.js +11 -0
  487. package/src/vendor/LICENSES-optional.md +253 -0
  488. package/src/vendor/highlight.vendor.js +3 -0
  489. package/src/vendor/hljs-bash.vendor.js +2 -0
  490. package/src/vendor/hljs-css.vendor.js +2 -0
  491. package/src/vendor/hljs-javascript.vendor.js +2 -0
  492. package/src/vendor/hljs-json.vendor.js +2 -0
  493. package/src/vendor/hljs-python.vendor.js +2 -0
  494. package/src/vendor/hljs-xml.vendor.js +2 -0
  495. package/src/vendor/hyper-html-api-data.vendor.js +1 -1
  496. package/src/vendor/hyper-html-api-upgrade.vendor.js +5 -0
  497. package/src/vendor/hyper-morph-identity.vendor.js +2 -0
  498. package/src/vendor/hyper-morph-json.vendor.js +3 -0
  499. package/src/vendor/hyper-morph.vendor.js +6 -6
  500. package/src/vendor/hyper-undo.vendor.js +1 -1
  501. package/src/vendor/hypercms.vendor.js +169 -84
  502. package/src/vendor/marked.vendor.js +68 -0
  503. package/src/vendor/overtype.vendor.js +994 -0
  504. package/src/vendor/richclay.vendor.js +17 -17
  505. package/src/vendor/sap-core.vendor.js +5 -5
  506. package/src/vendor/sap-ownership.vendor.js +11 -7
@@ -0,0 +1,2 @@
1
+ var j={p:"Paragraph",a:"Link",li:"List item",ul:"List",ol:"List",img:"Image",section:"Section",article:"Article",div:"Block",span:"Text",td:"Table cell",th:"Table cell",tr:"Table row",table:"Table",button:"Button",blockquote:"Quote",pre:"Code block",code:"Code",script:"Data block",style:"Style",figure:"Figure",video:"Video",input:"Field",textarea:"Field",select:"Field",label:"Label",template:"Template"},D={href:"Link address",alt:"Image description",title:"Tooltip",class:"Style",style:"Style",value:"Field value",placeholder:"Placeholder"},v=new Set(["section","article","div","li","aside","main","header","footer","nav"]),f=new Set(["script","style","template","noscript"]),P="h1,h2,h3,h4,h5,h6",O=":scope > :is(h1,h2,h3,h4,h5,h6)",p=40;function x(e,t=p){let n=e.replace(/\s+/g," ").trim();return n.length>t?n.slice(0,t).trimEnd()+"\u2026":n}function y(e){if(e==null)return"";let t=document.createElement("template");return t.innerHTML=String(e),t.content.textContent}function h(e){return e?e.nodeType===1?e:e.parentElement:null}function g(e){let t=e;for(;t;){if(t.isConnected)return h(t);let n=t.getRootNode?.();if(n&&n.nodeType===11&&n.host){t=n.host;continue}let o=n&&n.nodeType===11?B(n):null;if(o){t=o;continue}return null}return null}function B(e){for(let t of document.querySelectorAll("template"))if(t.content===e)return t;return null}function m(e){if(!e)return"Edit";let t=e.localName;return/^h[1-6]$/.test(t)?"Heading":j[t]||t.charAt(0).toUpperCase()+t.slice(1)}function w(e){let t=null;for(let n of document.body.querySelectorAll(P))n===e||n.contains(e)||n.compareDocumentPosition(e)&Node.DOCUMENT_POSITION_FOLLOWING&&(t=n);return t?x(t.textContent):null}function d(e,t){if(!e)return t?`"${t}" attribute`:"Edit";if(t){let i=t==="src"?e.localName==="img"||e.localName==="video"?"Image address":"Address":D[t]||`"${t}" attribute`,s=e.isConnected?w(e):null;return s?`${i} under ${s}`:i}if(f.has(e.localName))return m(e);if(/^h[1-6]$/.test(e.localName)){let i=w(e);return i?`Heading under ${i}`:"Page heading"}if(v.has(e.localName)){let i=e.querySelector(O);if(i&&i.textContent.trim())return`${x(i.textContent)} section`}let n=m(e),o=e.isConnected?w(e):null;return o?`${n} under ${o}`:n}function F(e,t,n){let o=e.slice(Math.max(0,t-p),t),i=e.slice(n,n+p),s=t-p>0,l=n+p<e.length;if(s){let c=o.indexOf(" ");o=c>=0?o.slice(c+1):o}if(l){let c=i.lastIndexOf(" ");i=c>=0?i.slice(0,c):i}return{before:o,after:i,cutBefore:s,cutAfter:l}}function u(e,t){return{before:t?.before||"",hit:e,after:t?.after||"",cutBefore:!!t?.cutBefore,cutAfter:!!t?.cutAfter}}var H={"edit-beats-delete":e=>`You deleted this ${e}. The other edit changed it at the same time, so it is still here.`,"move-beats-delete":e=>`You deleted this ${e}. The other edit moved it at the same time, so it is still here.`,"both-moved":e=>`You moved this ${e}. The other edit moved it somewhere else. Their place is showing.`,"both-reordered":e=>`You reordered the items in this ${e}. The other edit reordered them too. Their order is showing.`,"insert-collision":()=>"You added something here. The other edit added something else in the same place. Theirs is showing."};function q(e,t){let n=e.detail||e.reason,o=H[n];return o?o(t.toLowerCase()):"Your change here was replaced by the other edit."}function I(e){let t=e.parentElement;for(;t&&f.has(t.localName);)t=t.parentElement;return t&&t!==document.documentElement?t:null}var _="\uFFFC",G="";function b(e){return e.replaceAll(_,"[item]").replaceAll(G,`
2
+ `)}function S(e){if(!e||typeof e.text!="string")return null;let t=F(e.text,e.start,e.end);return{before:b(t.before),hit:b(e.text.slice(e.start,e.end)),after:b(t.after),cutBefore:t.cutBefore,cutAfter:t.cutAfter}}function $(e){for(let t of e?.live||[])if(g(t))return t;return null}function M(e,t){let n=e;for(let o of t){if(!n)return null;n=o==="content"?n.content:n.childNodes[o]}return n||null}function Y(e,t){let n=window.clay?.conflicts?.recoveryOf?.(e.id)?.root,o=t?.local?.[0];return n&&o?M(n,o):null}function R(e){let t=g(e);return t&&f.has(t.localName)?I(t):t}function k(e){let t=h(e);if(!t)return null;if(v.has(t.localName)){let o=t.querySelector(O);if(o&&o.textContent.trim())return`into the ${x(o.textContent)} section`}let n=t.isConnected?w(t):null;return n?`under ${n}`:null}function K(e,t,n){let o=t.structure,i=n.toLowerCase();switch(`${o.localAction}/${o.remoteAction}`){case"deleted/edited":return`You deleted this ${i}. The other edit changed it at the same time, so it is still here.`;case"deleted/moved":return`You deleted this ${i}. The other edit moved it, so it is still here.`;case"reordered/reordered":return`You changed the order of the items in this ${i}. The other edit changed their order too. Their order is showing.`;case"inserted/inserted":return"You and the other edit added different content in the same place. Their content is showing.";case"moved/moved":{let s=k($(o.localPlacement?.parent)||Y(e,o.localPlacement?.parent)),l=k($(o.mergedPlacement?.parent));return s&&l&&s!==l?`You moved this ${i} ${s}. The other edit moved it ${l}. Their position is showing.`:`You moved this ${i}. The other edit moved it somewhere else. Their position is showing.`}default:return"Your change here was replaced by the other edit."}}var N="The other edit replaced this, and the page changed again before it could be shown here. Download my copy keeps your version.",W={3:"Text",8:"Comment"};function J(e,t){let n=e.id,o=t.applied!==!1,i=o?$(t.subject):null,s=i?R(i):null,l=h(i)||h(Y(e,t.subject)),c=W[t.subject?.nodeType];if(t.attribute)return{id:n,kind:"attr",name:d(l,t.attribute.qualifiedName),target:s,yours:u(String(e.local??"")),now:o?u(String(e.remote??"")):null,sentence:o?null:N};if(t.structure){let r=c||(l?m(l):"Block"),T=c||(i?d(h(i)):r);return{id:n,kind:"struct",name:T,target:s,yours:null,now:null,sentence:o?K(e,t,r):N}}let a=c==="Comment"?"Comment":l&&f.has(l.localName)?m(l):d(l);return{id:n,kind:"text",name:a,target:s,yours:S(t.text?.local),now:o?S(t.text?.merged):null,sentence:o?null:N}}function U(e){let t=[],n=0;for(;n<e.length;){if(e[n]==="."){n++;continue}if(e[n]==="["){let i=n+1,s=!1;for(;i<e.length;i++){let a=e[i];if(s)a==="\\"?i++:a==='"'&&(s=!1);else if(a==='"')s=!0;else if(a==="]")break}let l=e.slice(n+1,i),c=/^[A-Za-z_$][\w$]*=/.exec(l);c&&(l=l.slice(c[0].length));try{t.push(String(JSON.parse(l)))}catch{t.push(l)}n=i+1;continue}let o=n;for(;o<e.length&&e[o]!=="."&&e[o]!=="[";)o++;t.push(e.slice(n,o)),n=o}return t.join(" \u2192 ")}var E=e=>e===void 0?"(deleted)":JSON.stringify(e);function V(e){let t=e.id;if(e.recovery?.version===1)return J(e,e.recovery);if(e.kind==="attr"){let r=e.el||null;return{id:t,kind:"attr",name:d(r,e.name),target:g(r),yours:u(String(e.local??"")),now:u(String(e.remote??"")),sentence:null}}if(e.kind==="structure"){let r=e.el&&e.el.isConnected?e.el:null,T=r||e.base||e.el||null,A=m(h(T)),L=q(e,A),C=typeof e.local=="string"&&typeof e.remote=="string";return{id:t,kind:"struct",name:r?d(r):A,target:r?g(r):null,yours:C?u(y(e.local)):null,now:C?u(y(e.remote)):null,sentence:L}}if(e.kind==="json"){let r=U(e.path||"");return{id:t,kind:"json",name:r?`${e.name} \u2192 ${r}`:e.name,target:null,yours:u(E(e.local)),now:u(E(e.resolved)),sentence:null}}let n=g(e.node),o=h(e.node),i=o&&f.has(o.localName)?m(o):e.node?.nodeType===8?"Comment":d(o),s=typeof e.lss=="number",l=r=>r==null?"":Array.isArray(r)?r.join(""):String(r),c=s?y(e.local):l(e.local),a=s?y(e.remote):l(e.remote);return{id:t,kind:"text",name:i,target:n&&!f.has(n.localName)?n:n?I(n):null,yours:u(c),now:u(a),sentence:null}}export{y as a,V as b};
@@ -0,0 +1 @@
1
+ import{a}from"./c-AQLFEATB.js";import"./c-VHNSBD2M.js";export{a as modeRefusalText};
@@ -0,0 +1 @@
1
+ import{a as f}from"./c-4JZDZFF6.js";import{a,d as u,f as i,g as d}from"./c-46XYM55L.js";var b=t=>t.replace(/[A-Z]/g,r=>`-${r.toLowerCase()}`);function s(t){let r=String(t).trim().toLowerCase(),e=/^#([0-9a-f]{3}|[0-9a-f]{6})$/.exec(r);if(e){let o=e[1].length===3?[...e[1]].map(c=>c+c).join(""):e[1];return[0,2,4].map(c=>parseInt(o.slice(c,c+2),16)).concat(1)}if(e=/^rgba?\(\s*([\d.]+)[\s,]+([\d.]+)[\s,]+([\d.]+)(?:\s*[,/]\s*([\d.]+)(%?))?\s*\)$/.exec(r),!e)return null;let n=e[4]===void 0?1:Number(e[4])/(e[5]?100:1);return[Number(e[1]),Number(e[2]),Number(e[3]),n]}function l([t,r,e]){let n=o=>(o/=255)<=.03928?o/12.92:((o+.055)/1.055)**2.4;return .2126*n(t)+.7152*n(r)+.0722*n(e)}function m(t,r){let[e,n]=[l(t),l(r)].sort((o,c)=>c-o);return(e+.05)/(n+.05)}var p=new Set(["","transparent","rgba(0, 0, 0, 0)"]),x=new Set(["serif","times","times new roman","-webkit-standard","tinos","liberation serif"]);function h(t){let r=String(t||"").split(",").map(e=>e.trim().replace(/^["']|["']$/g,"").toLowerCase()).filter(Boolean);return r.length&&!r.every(e=>x.has(e))}function g(t){if(!t)return null;let r=getComputedStyle(t);if(r.backgroundImage&&r.backgroundImage!=="none")return{blocked:!0};let e=(r.backgroundColor||"").trim();if(p.has(e))return null;let n=s(e);return n?n[3]===0?null:n[3]<1?{blocked:!0}:{value:e,rgb:n}:{blocked:!0}}function k(){let t={},r=document.body;if(!r)return t;let e=getComputedStyle(r);h(e.fontFamily)&&(t.font=e.fontFamily.trim());let n=g(r);n||(n=g(document.documentElement));let o=s(e.color);return n&&!n.blocked&&o&&o[3]===1&&m(n.rgb,o)>=3&&(t.background=n.value,t.surface=n.value,t.text=e.color),t}function S(){let t={};if(!document.body)return t;let r=getComputedStyle(document.body);for(let[e,n]of Object.entries(a)){let o=r.getPropertyValue(`--clay-ui-${b(e)}`).trim();o&&u(n,o)&&(t[e]=e==="spacing"&&o==="0"?"0px":o)}return t}function y(t,r){if(t!=="page")return t;let e=getComputedStyle(document.documentElement).colorScheme;if(e&&e!=="normal")return e;let n=document.querySelector('meta[name="color-scheme"]')?.getAttribute("content")?.trim();if(n&&/\b(light|dark)\b/.test(n))return n;let o=s(r.surface||"");return o?l(o)<.2?"dark":"light":"light dark"}function T(t,r){let e=s(t),n=s(r.text),o=s(r.surface);return e&&n&&o?m(e,n)>=m(e,o)?r.text:r.surface:null}function E(){i();let t=d();if(t===!1)return{bevel:!0,scheme:f(),tokens:{},parts:{}};let e={...t.auto?k():{},...S(),...t.tokens};e.text&&e.surface&&(e.mutedText??=`color-mix(in srgb, ${e.text} 70%, ${e.surface})`,e.border??=`color-mix(in srgb, ${e.text} 18%, ${e.surface})`,e.overlay??=`color-mix(in srgb, ${e.text} 20%, transparent)`,e.accent??=e.text);for(let[n,o]of[["accent","accentText"],["danger","dangerText"]]){if(!e[n]||e[o])continue;let c=T(e[n],e);c?e[o]=c:console.warn(`clayjs: theme sets ${n} without ${o}; pass ${o} so text on it stays readable`)}return{bevel:!1,scheme:y(t.colorScheme,e),tokens:e,parts:t.parts}}export{s as a,m as b,k as c,E as d};
@@ -0,0 +1 @@
1
+ import{a as d}from"./c-HT33EQRN.js";import{b as A,k as c}from"./c-HA6INT6J.js";import{i as s}from"./c-DCFSEJZG.js";import{a as g}from"./c-VHNSBD2M.js";var L={};g(L,{CONTROLLED_SELECTOR:()=>m,authoredAttr:()=>b,canonicalContentEditable:()=>T,canonicalContentEditableValue:()=>E,captureAll:()=>h,captureAuthored:()=>u,captureFrozen:()=>p,frozenOriginal:()=>y,restoreAuthoredOrder:()=>v});var m="[editmode\\:contenteditable], [editmode\\:onclick], [viewmode\\:disabled], [viewmode\\:readonly]",l=new WeakMap,f=new WeakMap;function u(e){let t=l.get(e);if(!t){let r=e.getAttributeNames(),n={};for(let i of r)n[i]=e.getAttribute(i);t={order:r,values:n},l.set(e,t)}return t}function b(e,t){if(!e)return null;let{values:r}=u(e);return t in r?r[t]:null}function v(e){let t=l.get(e);if(!t)return;let r=e.getAttributeNames(),n=[...t.order.filter(o=>r.includes(o)),...r.filter(o=>!t.order.includes(o))];if(n.every((o,a)=>o===r[a]))return;let i=n.map(o=>[o,e.getAttribute(o)]);for(let o of r)e.removeAttribute(o);for(let[o,a]of i)e.setAttribute(o,a)}function E(e){return e.getAttribute("contenteditable")??e.getAttribute("inert-contenteditable")??b(e,"inert-contenteditable")??b(e,"contenteditable")??"true"}function T(e){e.setAttribute("inert-contenteditable",E(e)),e.removeAttribute("contenteditable")}function x(e){let t=e.innerHTML;if(!e.querySelector(`[${c}]`)&&!t.includes("ephemeral")&&!t.includes("<dialog"))return t;let r=e.cloneNode(!0);for(let n of r.querySelectorAll(`[${c}]`))n.removeAttribute(c);for(let n of r.children)A(n);return r.innerHTML}function p(e){f.has(e)||f.set(e,x(e))}function y(e){return f.get(e)}function h(){for(let e of document.querySelectorAll(m))u(e);for(let e of document.querySelectorAll(s))p(e)}h();d.onAddElement({selectorFilter:m,require:"observed",pausable:!1,debounce:0},e=>{e.forEach(({element:t})=>u(t))});d.onAddElement({selectorFilter:s,require:"observed",pausable:!1,debounce:0},e=>{e.forEach(({element:t})=>p(t))});export{u as a,b,v as c,T as d,y as e,h as f,L as g};
@@ -0,0 +1 @@
1
+ import"./c-VHNSBD2M.js";var x="clay-recovery",re=1,P="records",V="watermarks",Y="meta",ne=33554432,se=67108864;var Z="byScope",z=["usage","*"],F=typeof TextEncoder=="function"?new TextEncoder:null;function Q(e){return F?F.encode(e).length:e.length*2}function W(e){if(typeof e=="string")return Q(e);if(e&&typeof e.byteLength=="number"&&(e instanceof Uint8Array||e instanceof ArrayBuffer))return e.byteLength;if(Array.isArray(e))return e.reduce((w,p)=>w+W(p),0);if(typeof e=="number"||typeof e=="boolean"||typeof e=="bigint")return 8;if(!e||typeof e!="object")return 0;let n=0;for(let[w,p]of Object.entries(e))n+=Q(w)+W(p);return n}function G(e){if(!e||typeof e!="object")return 0;let n=0;for(let[w,p]of Object.entries(e))n+=Q(w)+W(p);return n}function R(e){let n=e?.name||"";return n==="QuotaExceededError"||n==="NS_ERROR_DOM_QUOTA_REACHED"?"quota":n==="VersionError"?"unknown-schema":n==="DataCloneError"?"uncloneable":n==="AbortError"||n==="TransactionInactiveError"||n==="InvalidStateError"?"aborted":n==="SecurityError"||n==="UnknownError"||n==="NotSupportedError"?"unavailable":"error"}function q(e,n){if(e===n)return!0;if(e instanceof ArrayBuffer&&(e=new Uint8Array(e)),n instanceof ArrayBuffer&&(n=new Uint8Array(n)),e instanceof Uint8Array||n instanceof Uint8Array){if(!(e instanceof Uint8Array)||!(n instanceof Uint8Array)||e.length!==n.length)return!1;for(let p=0;p<e.length;p++)if(e[p]!==n[p])return!1;return!0}if(!e||!n||typeof e!="object"||typeof n!="object"||Array.isArray(e)!==Array.isArray(n))return!1;let w=Object.keys(e);return w.length!==Object.keys(n).length?!1:w.every(p=>Object.prototype.hasOwnProperty.call(n,p)&&q(e[p],n[p]))}function ee(e,n){if(!Array.isArray(e)||typeof n!="number")return!1;for(let w of e)if(Array.isArray(w)&&n>=w[0]&&n<=w[1])return!0;return!1}function H(e,n){let w=(Array.isArray(e)?e:[]).map(b=>[b[0],b[1]]);w.push([n,n]),w.sort((b,h)=>b[0]-h[0]);let p=[];for(let b of w){let h=p[p.length-1];h&&b[0]<=h[1]+1?h[1]=Math.max(h[1],b[1]):p.push([b[0],b[1]])}return p}function J(e){return JSON.stringify(e)}function l(e){return new Promise((n,w)=>{e.onsuccess=()=>n(e.result),e.onerror=()=>w(e.error)})}function X(e,n){return new Promise((w,p)=>{let b=n===void 0?e.openCursor():e.openCursor(n),h=[];b.onerror=()=>p(b.error),b.onsuccess=()=>{let S=b.result;if(!S){w(h);return}h.push(S.value),S.continue()}})}function te(e){e.objectStoreNames.contains(P)||e.createObjectStore(P,{keyPath:"slot"}).createIndex(Z,"scope"),e.objectStoreNames.contains(V)||e.createObjectStore(V,{keyPath:"key"}),e.objectStoreNames.contains(Y)||e.createObjectStore(Y,{keyPath:"key"})}function oe(e=globalThis.indexedDB,{name:n=x,version:w=1}={}){return new Promise(p=>{if(!e||typeof e.open!="function"){p({ok:!1,code:"unavailable"});return}let b;try{b=e.open(n,w)}catch(A){p({ok:!1,code:R(A)});return}let h=!1,S=A=>{h||(h=!0,clearTimeout(M),p(A))},M=setTimeout(()=>S({ok:!1,code:"blocked"}),5e3);b.onupgradeneeded=()=>te(b.result),b.onsuccess=()=>{let A=b.result;A.onversionchange=()=>{try{A.close()}catch{}},S({ok:!0,db:A})},b.onerror=()=>S({ok:!1,code:R(b.error)}),b.onblocked=()=>S({ok:!1,code:"blocked"})})}function ae({scope:e,indexedDB:n=globalThis.indexedDB,now:w=()=>Date.now(),maxScopeBytes:p=33554432,maxDbBytes:b=67108864}={}){if(!Array.isArray(e)||e.length!==4)throw new TypeError("createStore needs a four-part scope");let h=null,S=null,M=null,A={scopeBytes:0,dbBytes:null,maxScopeBytes:p,maxDbBytes:b},L=()=>({ok:M?.ok!==!1,code:M?.code??null,durable:M?.ok===!0,usage:{...A}});async function j(){return h||(h=oe(n).then(o=>(M=o.ok?{ok:!0}:{ok:!1,code:o.code},o.ok&&(S=o.db),o))),h}let K=["usage",...e];async function D(o,t){let[a,r]=await Promise.all([l(o.get(K)),l(o.get(z))]);if(a&&r)return{scopeBytes:a.value,dbBytes:r.value};let d=await X(t),u={scopeBytes:0,dbBytes:0};for(let s of d){let c=s.bytes??G(s);u.dbBytes+=c,_(s.scope)&&(u.scopeBytes+=c)}return u}async function I(o,t){A.scopeBytes=t.scopeBytes,A.dbBytes=t.dbBytes,await Promise.all([l(o.put({key:K,value:t.scopeBytes})),l(o.put({key:z,value:t.dbBytes}))])}function _(o){return Array.isArray(o)&&o.length===4&&o.every((t,a)=>t===e[a])}function T(o){return Array.isArray(o)?[...e,...o]:o}function N(o){return new Promise(t=>{if(!S){t({ok:!1,code:M?.code||"unavailable"});return}let a;try{a=S.transaction([P,V,Y],"readwrite")}catch(i){t({ok:!1,code:R(i)});return}let r={...A},d=!1,u=null,s=null,c=i=>{d||(d=!0,t(i))},y=i=>{u||(u=i);try{a.abort()}catch{}};a.oncomplete=()=>{u&&Object.assign(A,r),c(u?{ok:!1,code:u}:{ok:!0,result:s})},a.onerror=()=>{u||(u=R(a.error))},a.onabort=()=>{Object.assign(A,r),c({ok:!1,code:u||R(a.error)||"aborted"})};let k={tx:a,records:a.objectStore(P),watermarks:a.objectStore(V),meta:a.objectStore(Y),abort:y};Promise.resolve().then(()=>o(k)).then(i=>{s=i},i=>y(R(i)))})}async function $(o,t){let{records:a,watermarks:r,meta:d}=o,u=await l(a.get(t.slot));if(u&&u.revision>t.revision)return{ok:!0,skipped:!0,id:t.id,revision:t.revision};if(t.kind==="text"){let y=await l(r.get(t.slot));if(y&&y.ackRevision>=t.revision)return{ok:!0,skipped:!0,id:t.id,revision:t.revision}}let s=await D(d,a),c=t.bytes-(u?.bytes??0);return s.scopeBytes+c>p||s.dbBytes+c>b?{ok:!1,code:"over-budget"}:(u?.created&&(t.created=u.created),await l(a.put(t)),await I(d,{scopeBytes:s.scopeBytes+c,dbBytes:s.dbBytes+c}),{ok:!0,id:t.id,revision:t.revision})}return{scope:e,open:j,status:L,async put(o){let t=await j();if(!t.ok)return{ok:!1,code:t.code};let a={...o,scope:[...e],slot:T(o.id)};a.bytes=G(a);let r=await N(d=>$(d,a));return r.ok?r.result:{ok:!1,code:r.code}},async get(o){let t=await j();if(!t.ok)return{ok:!1,code:t.code};let a;try{a=S.transaction([P],"readonly")}catch(d){return{ok:!1,code:R(d)}}let r=await l(a.objectStore(P).get(T(o)));return!r||!_(r.scope)?{ok:!1,code:"missing"}:{ok:!0,record:r}},async list(){let o=await j();if(!o.ok)return{ok:!1,code:o.code,records:[],status:L()};let t;try{t=S.transaction([P,Y],"readonly")}catch(c){return{ok:!1,code:R(c),records:[],status:L()}}let a=t.objectStore(P),r=t.objectStore(Y),[d,u,s]=await Promise.all([X(a.index(Z),[...e]),l(r.get(K)),l(r.get(z))]);return u?A.scopeBytes=u.value:A.scopeBytes=d.reduce((c,y)=>c+(y.bytes??0),0),A.dbBytes=s?s.value:null,{ok:!0,records:d,status:L()}},async remove(o,{revision:t}={}){let a=await j();if(!a.ok)return{ok:!1,code:a.code};let r=await N(async d=>{let u=T(o),s=await l(d.records.get(u));if(!s||!_(s.scope))return{ok:!1,code:"missing"};if(t!==void 0&&s.revision!==t)return{ok:!1,code:"stale"};let c=await D(d.meta,d.records);return await l(d.records.delete(u)),await I(d.meta,{scopeBytes:Math.max(0,c.scopeBytes-s.bytes),dbBytes:Math.max(0,c.dbBytes-s.bytes)}),{ok:!0,id:o}});return r.ok?r.result:{ok:!1,code:r.code}},async acknowledge(o,{revision:t,etag:a=null,captureId:r=null,drop:d=!0}={}){if(typeof t!="number"||!Array.isArray(o))return{ok:!1,code:"invalid"};let u=await j();if(!u.ok)return{ok:!1,code:u.code};let s=T(o),c=await N(async y=>{let k=await l(y.watermarks.get(s)),i=Math.max(k?.ackRevision??0,t);await l(y.watermarks.put({key:s,ackRevision:i,etag:a,captureId:r,updated:w()}));let f=await l(y.records.get(s));if(!f||!_(f.scope)||!d||f.revision>i)return{ok:!0,acknowledged:i,deleted:!1};let B=await D(y.meta,y.records);return await l(y.records.delete(s)),await I(y.meta,{scopeBytes:Math.max(0,B.scopeBytes-f.bytes),dbBytes:Math.max(0,B.dbBytes-f.bytes)}),{ok:!0,acknowledged:i,deleted:!0}});return c.ok?c.result:{ok:!1,code:c.code}},async appendBinary(o,t=null){if(!o||o.id===void 0||typeof o.revision!="number")return{ok:!1,code:"invalid"};let a=await j();if(!a.ok)return{ok:!1,code:a.code};let r={...o,kind:"binary-batch",scope:[...e],slot:T(o.id)};r.bytes=G(r);let d=T(o.capsuleId),u=await N(async s=>{let c=await l(s.records.get(d));if(c){if(!_(c.scope)||c.kind!=="binary"||c.channel!==r.channel)return{ok:!1,code:"channel-mismatch"};if(c.version!==r.version)return{ok:!1,code:"unknown-version"};if(!q(c.context,r.context))return{ok:!1,code:"context-mismatch"}}let y=await l(s.watermarks.get(d));if(ee(y?.retired,r.revision))return{ok:!0,skipped:!0,id:r.id,revision:r.revision};let k=await l(s.records.get(r.slot));if(k&&_(k.scope)&&k.revision>=r.revision)return{ok:!0,skipped:!0,id:r.id,revision:r.revision};let i=null;if(!c){if(!t)return{ok:!1,code:"missing"};i={...t,kind:"binary",scope:[...e],slot:d},i.bytes=G(i)}let f=await D(s.meta,s.records),B=r.bytes+(i?.bytes??0)-(k?.bytes??0);return f.scopeBytes+B>p||f.dbBytes+B>b?{ok:!1,code:"over-budget"}:(i&&await l(s.records.put(i)),await l(s.records.put(r)),await I(s.meta,{scopeBytes:f.scopeBytes+B,dbBytes:f.dbBytes+B}),{ok:!0,id:r.id,revision:r.revision})});return u.ok?u.result:{ok:!1,code:u.code}},async acknowledgeBinary({channel:o,version:t,writerId:a,records:r=[],authority:d=null,epoch:u=null,sequence:s=null}={}){if(!Array.isArray(r)||!r.length)return{ok:!0,acknowledged:0};let c=await j();if(!c.ok)return{ok:!1,code:c.code};let y=await N(async k=>{let i=new Map;for(let E of r){if(!E||E.id===void 0||typeof E.revision!="number")continue;let O=T(E.id),v=await l(k.records.get(O));if(!v||!_(v.scope)||v.channel!==o||v.version!==t||v.writerId!==a||v.revision!==E.revision)continue;let g=v,C=O;v.kind!=="binary"&&(C=T(v.capsuleId),g=await l(k.records.get(C)),!g||!_(g.scope)||g.channel!==o||g.version!==t)||i.set(J(C),{capsuleSlot:C,capsule:g})}if(!i.size)return{ok:!0,acknowledged:0};let f={authority:d,epoch:u,sequence:s},B=await D(k.meta,k.records),m=0;for(let{capsuleSlot:E,capsule:O}of i.values()){let v={...O,acknowledged:f};v.bytes=G(v),m+=v.bytes-O.bytes,await l(k.records.put(v));let g=await l(k.watermarks.get(E));await l(k.watermarks.put({...g||{},key:E,kind:"binary",retired:g?.retired??[],acknowledged:f,updated:w()}))}return await I(k.meta,{scopeBytes:Math.max(0,B.scopeBytes+m),dbBytes:Math.max(0,B.dbBytes+m)}),{ok:!0,acknowledged:i.size}});return y.ok?y.result:{ok:!1,code:y.code}},async checkpointBinary({channel:o,version:t,writerId:a,records:r=[]}={}){if(!Array.isArray(r)||!r.length)return{ok:!0,retired:[]};let d=await j();if(!d.ok)return{ok:!1,code:d.code};let u=await N(async s=>{let c=[],y=new Map,k=0;for(let f of r){if(!f||f.id===void 0||typeof f.revision!="number")continue;let B=T(f.id),m=await l(s.records.get(B));if(!m||!_(m.scope)||m.channel!==o||m.version!==t||m.writerId!==a||m.revision!==f.revision)continue;c.push({slot:B,existing:m}),k+=m.bytes;let E=m.kind==="binary"?B:T(m.capsuleId),O=J(E);y.has(O)||y.set(O,{markSlot:E,ranges:(await l(s.watermarks.get(E)))?.retired??[]}),y.get(O).ranges=H(y.get(O).ranges,m.revision)}if(!c.length)return{ok:!0,retired:[]};let i=await D(s.meta,s.records);for(let{slot:f}of c)await l(s.records.delete(f));for(let{markSlot:f,ranges:B}of y.values()){let m=await l(s.watermarks.get(f));await l(s.watermarks.put({...m||{},key:f,kind:"binary",retired:B,acknowledged:m?.acknowledged??null,updated:w()}))}return await I(s.meta,{scopeBytes:Math.max(0,i.scopeBytes-k),dbBytes:Math.max(0,i.dbBytes-k)}),{ok:!0,retired:c.map(({existing:f})=>({id:f.id,revision:f.revision}))}});return u.ok?u.result:{ok:!1,code:u.code}},async compactBinary({channel:o,version:t,capsuleId:a,expectedRevision:r,replacement:d=null,inputs:u=[]}={}){if(!d||typeof d.revision!="number")return{ok:!1,code:"invalid"};let s=await j();if(!s.ok)return{ok:!1,code:s.code};let c=T(a),y=await N(async k=>{let i=await l(k.records.get(c));if(!i||!_(i.scope)||i.kind!=="binary")return{ok:!1,code:"missing"};if(i.channel!==o)return{ok:!1,code:"channel-mismatch"};if(i.version!==t)return{ok:!1,code:"unknown-version"};if(i.revision!==r)return{ok:!1,code:"stale"};if(d.revision<=i.revision)return{ok:!1,code:"invalid"};let f=[];for(let g of u){if(!g||g.id===void 0||typeof g.revision!="number")return{ok:!1,code:"stale"};let C=T(g.id),U=await l(k.records.get(C));if(!U||!_(U.scope))return{ok:!1,code:"stale"};if(U.kind!=="binary-batch"||U.channel!==i.channel||U.version!==i.version)return{ok:!1,code:"stale"};if(!q(U.capsuleId,i.id)||U.revision!==g.revision)return{ok:!1,code:"stale"};f.push({slot:C,existing:U})}let B={...i,revision:d.revision,payload:d.payload,updated:d.updated};B.bytes=G(B);let m=B.bytes-i.bytes;for(let{existing:g}of f)m-=g.bytes;let E=await D(k.meta,k.records);if(E.scopeBytes+m>p||E.dbBytes+m>b)return{ok:!1,code:"over-budget"};for(let{slot:g}of f)await l(k.records.delete(g));await l(k.records.put(B));let O=await l(k.watermarks.get(c)),v=O?.retired??[];for(let{existing:g}of f)v=H(v,g.revision);return await l(k.watermarks.put({...O||{},key:c,kind:"binary",retired:v,acknowledged:O?.acknowledged??i.acknowledged??null,updated:w()})),await I(k.meta,{scopeBytes:E.scopeBytes+m,dbBytes:E.dbBytes+m}),{ok:!0,retired:f.map(({existing:g})=>({id:g.id,revision:g.revision})),revision:B.revision}});return y.ok?y.result:{ok:!1,code:y.code}},close(){try{S?.close()}catch{}S=null,h=null,M=null}}}export{se as DB_BUDGET_BYTES,x as DB_NAME,re as DB_VERSION,Y as META,P as RECORDS,ne as SCOPE_BUDGET_BYTES,V as WATERMARKS,R as codeFor,ae as createStore,oe as openDatabase,G as recordBytes};
@@ -0,0 +1 @@
1
+ import{e as g,f as h}from"./c-TRS6TM6O.js";import{d as m}from"./c-3IQRECYS.js";import"./c-AYVOREBE.js";import"./c-7O6AFR65.js";import"./c-P7KNDG34.js";import{b as f}from"./c-CYWLPPUS.js";import"./c-N7JPUPGC.js";import"./c-HA6INT6J.js";import"./c-WRBKEJD4.js";import"./c-VHNSBD2M.js";var v="clay.undo",S=1,x="conflict",N="text",k="undo";function R(){let e=f.local.get(k);return Number.isFinite(e?.count)&&e.count>0?e.count:0}function _(e){e>0?f.local.set(k,{count:e,at:Date.now()}):f.local.remove(k)}function T(){return(globalThis.window?.clay??globalThis.clay)?.recovery??null}var y=null;function p(){let e=T();if(!e||typeof e.register!="function")return null;if(y?.service===e)return y.channel;try{y={service:e,channel:e.register({channel:v,version:S})}}catch{return null}return y.channel}var O=(e,t)=>`refused:${e}:${t}`;function D(e){if(e==null||typeof document>"u")return null;let t=globalThis.CSS?.escape?globalThis.CSS.escape(String(e)):String(e).replace(/["\\]/g,"\\$&");try{return document.querySelector(`[data-id="${t}"]`)}catch{return null}}function E(){let t=(globalThis.window?.clay??globalThis.clay)?.conflicts;return typeof t?.contextFor=="function"?t:null}function A({id:e=null}={}){let t=e==null?null:String(e),r=E();return(r?r.contextFor({source:"undo",id:t,element:D(t)},null):null)??{kind:null,id:t,label:null,field:null}}function C(e){return e.map(t=>h(A(t)))}async function F(e,t,r){let n;try{n=await e.list()}catch{return}if(n?.ok){for(let o of n.records)if(!(o.key!==t||String(o.id)===String(r)))try{await e.dismiss(o.id,{revision:o.revision})}catch{}}}var w=Promise.resolve();function H(e,t){let r=w.then(()=>I(e,t));return w=r.catch(()=>{}),r}async function I(e,t){let r=p();if(!r)return{ok:!1,code:"unavailable"};let n=null;try{n=e?.describe?.(t?.entryId)??null}catch{n=null}if(!n)return{ok:!1,code:"unknown-entry"};let o=n.refused&&typeof n.refused=="object"?n.refused:{},c=t?.direction??o.direction??null,i=(Array.isArray(o.targets)?o.targets:[]).map(l=>({id:l?.id==null?null:String(l.id),kind:l?.kind==null?null:String(l.kind)})),s=O(n.id??t?.entryId,c),a=g({label:n.label??null,direction:c,code:t?.code??o.code??null,targets:i,context:C(i),steps:n.steps??[]},[],""),u;try{u=r.stage({key:s,kind:x,baseEtag:m()??null,base:null,payload:a})}catch(l){return console.error("clayjs: the refused step could not be kept for a later reload; it is still in this tab's history",l),{ok:!1,code:"error"}}let d=await r.flush();return d?.ok&&(await F(r,s,u.id),await b()),d?.ok?d:{ok:!1,code:d?.code||"error"}}async function K({key:e,label:t=null,context:r=null,payload:n=null}={}){let o=p();if(!o)return{ok:!1,code:"unavailable"};let c=e==null?"":String(e);if(!c)return{ok:!1,code:"invalid"};let i=n&&typeof n=="object"?n:{},s=g({...i,label:t,context:h(r)},[],"");try{o.stage({key:`app:${c}`,kind:typeof i.text=="string"?N:x,payload:s})}catch(u){return console.error("clayjs: the app's recovery copy could not be kept; it is still in this tab only",u),{ok:!1,code:"error"}}let a=await o.flush();return a?.ok&&await b(),a}async function b(){let e=p();if(!e)return{ok:!0,records:[]};let t=await e.list();return t?.ok&&_(Array.isArray(t.records)?t.records.length:0),t}async function q(e,{revision:t}={}){let r=p();if(!r)return{ok:!1,code:"unavailable"};let n=await r.dismiss(e,{revision:t});if(n?.ok)try{await b()}catch{}return n}export{v as UNDO_CHANNEL,x as UNDO_KIND,N as UNDO_TEXT,S as UNDO_VERSION,A as contextForTarget,q as dismissKept,K as keep,H as keepRefusal,b as kept,R as pendingUndo};
@@ -0,0 +1,9 @@
1
+ import{a as Re}from"./c-TCCA5BZN.js";import{a as Q,b as Qe,c as et,d as tt,e as gt,f as mt,g as nt,h as wn,i as Be,j as yt,k as V,l as rt,m as Rt,n as ot,o as bn}from"./c-LRPUO2MX.js";import{b as Tt}from"./c-A7LS5UZW.js";import{d as qn}from"./c-5V3MOVJT.js";import{e as vn}from"./c-LZJPNR2W.js";import{E as Mt,J as yn,f as gn,q as mn}from"./c-CJZSLMVQ.js";import{a as Ot}from"./c-2SPVQSHC.js";import{e as cn,f as fn,g as dn,h as pn,i as hn}from"./c-B2ZXPOS3.js";import{a as Et}from"./c-TQEMVJCS.js";import{a as an,c as un}from"./c-3IQRECYS.js";import{e as ht,i as ln}from"./c-AYVOREBE.js";import{i as He}from"./c-7O6AFR65.js";import{i as sn}from"./c-35NBGMZB.js";var pr=/^[A-Za-z0-9_-]{1,64}$/,hr=/^[1-9]\d{0,15}$/;var $t=e=>hr.test(e)&&Number.isSafeInteger(Number(e));function Fe(...e){let t=new Map;for(let r of e)for(let[o,n]of r??[])t.has(o)||t.set(o,[]),t.get(o).push(...n.map(([i,a])=>[i,a]));return[...t].sort(([r],[o])=>r<o?-1:r>o?1:0).map(([r,o])=>{let n=[];for(let[i,a]of o.sort((d,m)=>d[0]-m[0])){let d=n[n.length-1];d&&i<=d[1]+1?d[1]=Math.max(d[1],a):n.push([i,a])}return[r,n]}).filter(([,r])=>r.length)}var Sn=e=>e.reduce((t,[,r])=>t+r.length,0),We=(e,t)=>!!e?.some(([r,o])=>r<=t&&t<=o),st=(e,t,r)=>We(e?.find(([o])=>o===t)?.[1],r),gr=([e,t])=>[[e,[[t,t]]]],vt=e=>e?.v===2?e.frames:e?[[e.client,[[1,e.n]]]]:[],kn=e=>e?.v===2?Fe(e.ancestors,gr(e.capture)):[];function An(e){if(!e)return[];let t=[],r=0;for(let o of e.split(";")){let n=o.split(":");if(n.length!==2||!pr.test(n[0])||!n[1])return null;let i=[];for(let a of n[1].split(",")){if(++r>256)return null;let d=a.split("-");if(d.length>2||!d.every($t))return null;let m=Number(d[0]),q=Number(d[1]??d[0]);if(q<m)return null;i.push([m,q])}t.push([n[0],i])}return Fe(t)}function xn(e){return Fe(e).map(([t,r])=>`${t}:${r.map(([o,n])=>o===n?String(o):`${o}-${n}`).join(",")}`).join(";")}function it(e){if(typeof e!="string"||e.length>32768)return null;if(!e.startsWith("v2|")){let a=/^([A-Za-z0-9_-]{1,64}):([1-9]\d{0,15})$/.exec(e);return a&&$t(a[2])?{client:a[1],n:Number(a[2])}:null}let t=e.split("|");if(t.length!==4)return null;let r=An(t[1]),o=An(t[2]),n=/^([A-Za-z0-9_-]{1,64}):([1-9]\d{0,15})$/.exec(t[3]);if(!r||!o||!n||!$t(n[2])||Sn(r)+Sn(o)+1>256)return null;let i=[n[1],Number(n[2])];return st(o,...i)?null:{v:2,frames:r,ancestors:o,capture:i}}function En(e){let t=`v2|${xn(e.frames)}|${xn(e.ancestors)}|${e.capture[0]}:${e.capture[1]}`;return it(t)?t:null}var mr=new Set(["push","pop","shift","unshift","splice","sort","reverse","fill","copyWithin"]),yr=/^(0|[1-9]\d*)$/,Ne=e=>e!==null&&typeof e=="object",Ue=e=>Array.isArray(e)?"a list":"an object";function $e(e,t){let r=e;for(let o of t){if(!Ne(r))return;Array.isArray(r)?r=r[Number(o)]:r=Object.prototype.hasOwnProperty.call(r,o)?r[o]:void 0}return r}var wt=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),vr=(e,t)=>V(e)===V(t);function On(e,t){let r=[];try{for(let o of t){let n=mt(e,o);n&&(r.push(n),e=n.root)}return r}catch{return Nt(r),null}}function Nt(e){let t;for(let r=e.length-1;r>=0;r--)t=nt(e[r]);return t}function wr(e,t,r){let o=[];for(let n of e){if(n.at===null||Array.isArray(n.at))return null;let i=o.find(a=>a.path.length===n.path.length&&Be(a.path,n.path));if(i){if(i.removed&&n.kind!=="remove")return null;n.kind==="remove"&&(i.removed=!0);continue}if(o.some(a=>Be(a.path,n.path)))return null;o.push({path:n.path,at:n.at,key:n.key,had:n.kind!=="add",old:n.old,removed:n.kind==="remove"})}for(let n of o){if(n.has=wt(n.at,n.key),n.had&&n.has&&n.removed||(n.into=$e(r,n.path.slice(0,-1)),!Ne(n.into)||Array.isArray(n.into)||wt(n.into,n.key)!==n.had))return null;let i=n.path.slice(0,-1);for(let a of t){let d=a.op.path;if(Be(n.path,d)||a.op.op==="del"&&d.length<=n.path.length&&Be(d.slice(0,-1),n.path)&&Array.isArray($e(r,d.slice(0,-1))))return null;if(!n.had&&n.has&&d.length>i.length&&Be(i,d)){let m=d[i.length];if(d.length===i.length+1&&a.op.op==="del"||!wt(n.at,String(m)))return null}}}return o}function br(e,t){if(t.op==="set"){let r=$e(e,t.path);if(Ne(r)&&Ne(t.value)&&Array.isArray(r)===Array.isArray(t.value)){yt(r,Q(t.value));return}}tt(e,t)}function It({name:e,value:t,ephemeral:r=!1}){if(!Ne(t))throw new TypeError(`clay.live("${e}"): the tag must hold a JSON object or list`);let o=Q(t),n=Q(t),i=!0,a=[],d=1,m=null,q="file",g=new Set,P=new Set,F=new Set,_=new Set,C=new Set,U=new WeakMap;function O(f,y){let v={source:f,ops:y};for(let k of[...g])try{k(v)}catch(L){console.error(`clay.live("${e}"): a change listener threw`,L)}}function B(){let f=Q(o),y=[];for(let v of a)try{et(f,v.op),f=tt(f,v.op),y.push(v)}catch{}a=y,yt(n,f),i=!0}function X(f){for(let y of[...F])try{y(f)}catch(v){console.error(`clay.live("${e}"): a rebase listener threw`,v)}}function T(f,{source:y="remote",confirmed:v=0,through:k,drop:L,dropIds:W,frame:ue=null,room:oe=null,cause:re=null}={}){if(!Ne(f)||Ue(f)!==Ue(n))return console.warn(`clay.live("${e}"): ignored an incoming value that is not ${Ue(n)}`),!1;let he=V(n),ge=o;if(o=Q(f),L)a=a.filter(te=>te.id<L[0]||te.id>L[1]);else if(W){let te=new Set(W);a=a.filter(we=>!te.has(we.id))}else a=k===void 0?a.slice(v):a.filter(te=>te.id>k);return B(),X({source:y,frame:ue,room:oe,cause:re,prev:ge,before:te=>$e(ge,te),next:o}),V(n)!==he&&O(y,null),!0}function ee(f){let y=Q(o);for(let v=f.length-1;v>=0;v--){let k=f[v];nt({...k,at:$e(y,k.path.slice(0,-1))})}return y}function w(f){for(let y of[...P])try{y(f)}catch(v){console.error(`clay.live("${e}"): a transport threw`,v)}O("local",f)}function J(f){let y=f.map(Qe);for(let v of y)if(v.path.length===0&&Ue(v.value)!==Ue(n))throw new TypeError(`clay.live("${e}"): the whole value must stay ${Ue(n)}`);y.length===1?et(n,y[0]):gt(Q(n),y);for(let v of y)br(n,v);a.push(...y.map(v=>({id:d++,op:v}))),m?m.push(...y):w(y)}function D(f,y){let v=U.get(f);v||U.set(f,v=new Map);let k=JSON.stringify(y),L=v.get(k);return L||(L=new Proxy(f,de(y)),v.set(k,L)),L}function de(f){return{get(y,v){if(Array.isArray(y)&&mr.has(v))return(...L)=>{let W=Q(y),ue=Array.prototype[v].apply(W,L);return J([{op:"set",path:f,value:W}]),ue===W?D(y,f):ue};let k=y[v];return typeof v=="symbol"||!Ne(k)||!Object.prototype.hasOwnProperty.call(y,v)?k:D(k,[...f,Array.isArray(y)?Number(v):v])},set(y,v,k){if(typeof v=="symbol")throw new TypeError(`clay.live("${e}"): symbol keys are not JSON`);if(Array.isArray(y)){if(v==="length"){let L=Q(y);return L.length=k,J([{op:"set",path:f,value:L}]),!0}if(!yr.test(v))throw new TypeError(`clay.live("${e}"): "${v}" is not a list index`);return J([{op:"set",path:[...f,Number(v)],value:k}]),!0}return J([{op:"set",path:[...f,v],value:k}]),!0},deleteProperty(y,v){if(typeof v=="symbol")return!0;if(Array.isArray(y))throw new TypeError(`clay.live("${e}"): remove a list item with splice`);return J([{op:"del",path:[...f,v]}]),!0},defineProperty(){throw new TypeError(`clay.live("${e}"): assign values instead of defining properties`)},setPrototypeOf(){return!1},preventExtensions(){return!1}}}let Y=D(n,[]),ae,pe=new Promise(f=>{ae=f}),z=Object.freeze({name:e,ephemeral:r,ready:pe,get data(){return Y},get status(){return{mode:q}},set(f,y){J([{op:"set",path:f,value:y}])},delete(f){J([{op:"del",path:f}])},add(f,y=1){J([{op:"add",path:f,n:y}])},update(f){if(typeof f!="function")throw new TypeError(`clay.live("${e}"): update() takes a function`);if(m)return f(Y);m=[];let y=a.length,v=d,k;try{if(k=f(Y),k&&typeof k.then=="function")throw new TypeError(`clay.live("${e}"): update() runs synchronously; do async work before calling it`)}catch(W){throw m=null,a.length=y,d=v,B(),W}let L=wn(m);return m=null,a.length=y,d=v,a.push(...L.map(W=>({id:d++,op:W}))),L.length&&w(L),k},on(f,y){if(f!=="change")throw new TypeError(`clay.live("${e}"): the only event is "change"`);if(typeof y!="function")throw new TypeError(`clay.live("${e}"): on() takes a function`);return g.add(y),()=>g.delete(y)},off(f,y){g.delete(y)},toJSON(){return Q(n)}});return ae(z),{handle:z,name:e,ephemeral:r,get value(){return n},get authoritative(){return o},get pending(){return a.map(f=>f.op)},pendingEntries(){return a.map(f=>({id:f.id,op:f.op}))},get mark(){return d-1},setMode(f){q=f},onLocal(f){return P.add(f),()=>P.delete(f)},confirm(f){let y=a.filter(v=>v.id<=f);if(y.length){try{o=gt(Q(o),y.map(v=>v.op))}catch{o=Q(n),i=!1}a=a.filter(v=>v.id>f);for(let v of[..._])try{v({through:f})}catch(k){console.error(`clay.live("${e}"): a confirmation listener threw`,k)}}},onConfirm(f){return _.add(f),()=>_.delete(f)},rebase:T,checkOps(f){let y;try{y=f.map(Qe)}catch{return null}let v=On(o,y);return v?(Nt(v),y):null},rebaseOps(f,{source:y="remote",confirmed:v=0,through:k,frame:L=null,room:W=null,cause:ue=null}={}){let oe=On(o,f);if(!oe)return!1;let re=k===void 0?a.slice(v):a.filter($=>$.id>k),he=a.length-re.length,ge=oe.some($=>$.at===null),te=i&&!ge&&he===f.length&&f.every(($,Z)=>vr($,a[Z].op)),we=i&&!te&&he===0?wr(oe,re,n):null;if(!te&&!we)return Nt(oe),T(gt(Q(o),f),{source:y,confirmed:v,through:k,frame:L,room:W,cause:ue});a=re;let Ce=!1;for(let $ of we??[]){let Z=$.into;if($.has){let je=$.at[$.key];(!$.had||V($.old)!==V(je))&&(Ce=!0);let s=$.had?Z[$.key]:void 0,p=Q(je),A=Ne(s)&&Ne(p)&&Array.isArray(s)===Array.isArray(p);Object.defineProperty(Z,$.key,{value:A?yt(s,p):p,enumerable:!0,writable:!0,configurable:!0})}else $.had&&(Ce=!0,delete Z[$.key])}let be=null,Oe=()=>be??=ee(oe),ce=oe.some($=>Array.isArray($.at)&&$.kind!=="put");return X({source:y,frame:L,room:W,cause:ue,get prev(){return Oe()},before:$=>{if(ce)return $e(Oe(),$);for(let Z of oe)if(Be(Z.path,$))return Z.path.length>$.length?$e(Oe(),$):$e(Z.old,$.slice(Z.path.length));return $e(o,$)},next:o}),Ce&&O(y,null),!0},onRebase(f){return F.add(f),()=>F.delete(f)},onDelivery(f){return C.add(f),()=>C.delete(f)},deliver(f){for(let y of[...C])try{y(f)}catch(v){console.error(`clay.live("${e}"): a delivery listener threw`,v)}}}}function Mn({needsSave:e,blocked:t,save:r,saveNow:o,now:n=()=>Date.now(),setTimer:i=setTimeout,clearTimer:a=clearTimeout}){let d=null,m=null,q=!1,g=!1,P=0;function F(O){let B=O&&!O.ok&&O.msgType==="skipped";return P=O?.ok||B?0:n()+8e3,B?1e3:8e3}function _(O){d=O,m!==null&&a(m),m=i(U,Math.max(0,O-n()))}function C(){m!==null&&a(m),m=null,d=null}async function U(){if(m=null,d=null,!e())return;if(t()){_(n()+1e3);return}q=!0;let O=null;try{O=await r()}catch{O=null}finally{q=!1}let B=F(O);e()&&_(n()+B)}return{changed(){d===null&&!q&&_(n()+8e3)},flush(){q||!e()||t()||(C(),q=!0,g=!0,Promise.resolve().then(o).catch(()=>null).then(O=>{q=!1,g=!1;let B=F(O);e()&&_(n()+B)}))},soon(){if(q)return;let O=Math.max(n(),P);(d===null||O<d)&&_(O)},within(O){if(q)return;let B=Math.max(n()+O,P);(d===null||B<d)&&_(B)},get flushing(){return g},get deadline(){return d}}}var qr=40,Tn=128,lt=500,Sr=1e4,Ar=63*1024,Rn=15*1024,xr=/^page(\.[0-9]+)?$/,kr=512,_t=8e3,Er=new Set([401,403]),Or=new Set([401,403,404]),Mr=new TextEncoder,bt=e=>Mr.encode(JSON.stringify(e)).length,$n=e=>e===0||e===408||e===429||e>=500,Nn=e=>e===429||e===503;function Pt({transport:e,entries:t,onEpoch:r=()=>{},onLeave:o=()=>{},onWriter:n=()=>{},onApplied:i=()=>{},onLanded:a=()=>{},onCheckpoint:d=()=>{},held:m=()=>!1,heldIds:q=()=>[],hold:g=()=>!0,taken:P=()=>{},onStop:F=()=>{},now:_=()=>Date.now(),setTimer:C=setTimeout,clearTimer:U=clearTimeout}){let O=null,B=!1,X=!1,T=null,ee=null,w=null,J=0,D=0,de=null,Y=new Set,ae=[],pe=!1,z=!1,f=!1,y=null,v=-1/0,k=0,L=null,W=null,ue=lt,oe=Ar,re=lt,he=0,ge,te=0,we=!1,Ce=0,be=!1,Oe=null,ce=new Map,Me=new Set,$=(l,c)=>t.get(l)?.store.deliver?.({code:null,n:null,seq:null,through:null,retryAfter:null,client:O,...c});function Z(l){let c=ce.get(l);return c||ce.set(l,c={n:0,unsent:[],awaiting:[],framed:0}),c}function je(l,c){!l.adopted||c.through<l.adopted.through||(c.adopted=l.adopted.rev,l.adopted=null)}function s(l,c){let u=t.get(l)?.store;return u?u.pendingEntries().filter(h=>h.id>c.framed):[]}function p(l,c){let u=t.get(l)?.store;if(!u)return;let h=new Set(u.pendingEntries().map(S=>S.id));c.awaiting=c.awaiting.filter(S=>S===y||!S.entries||S.entries.some(x=>h.has(x.id)))}let A=l=>l.refused===!0&&!l.uncertain;function M(l,c,u=!0){let h=t.get(l)?.store;for(let S of c.awaiting)S===y&&(S.undecided=!0);u&&(be=!0),c.out=!0,o(l,{epoch:T,seq:D}),c.unsent=[],h?.setMode("file"),i()}function b(){if(L!==null||f||z)return;let l=_(),c=Math.max(0,v+qr-l,k-l);L=C(()=>{L=null,se()},c)}function N(){for(let[l,c]of ce){if(!Y.has(l)||m(l))continue;let u=c.awaiting.find(h=>!h.sent);if(u)return{name:l,lane:c,frame:u}}for(let[l,c]of ce){if(!c.unsent.length||!Y.has(l)||m(l))continue;let u=bt({name:l,n:c.n+1,ops:[],epoch:T}),h=0;for(;h<c.unsent.length&&h<Tn;){let I=bt(c.unsent[h].op)+1;if(h&&u+I>oe)break;u+=I,h++}let S=c.unsent.splice(0,h),x={n:++c.n,ops:S.map(I=>I.op),entries:S,first:S[0].id,through:S[S.length-1].id,seq:null,sent:!1,receiptGeneration:ee,pageGeneration:w};return je(c,x),c.framed=Math.max(c.framed,x.through),c.awaiting.push(x),{name:l,lane:c,frame:x}}return null}async function se(){if(f||z||!B||!X||ge===null)return;let l=N();if(!l)return;let{name:c,lane:u,frame:h}=l;ce.delete(c),ce.set(c,u);let S=T;h.epoch=S,h.client=O,h.sentOn=he,h.sent=!0,$(c,{phase:"sent",n:h.n,first:h.first,through:h.through}),h.refused=!1,f=!0,y=h,v=_();let x;try{x=await e.send(O,{name:c,n:h.n,ops:h.ops,epoch:S,...ge!==void 0&&{conn:ge},...h.receiptGeneration!==null&&{receiptGeneration:h.receiptGeneration},...h.pageGeneration!==null&&xr.test(c)&&{pageGeneration:h.pageGeneration},...h.adopted&&{adopted:h.adopted}})}catch{x=null}f=!1,y=null,!z&&(h.undecided?xe(c,u,h,x||{status:0}):S===T&&u.awaiting.includes(h)&&De(c,u,h,x||{status:0}),b())}function xe(l,c,u,{status:h,body:S}){if(delete u.undecided,!c.awaiting.includes(u))return;if((S?.stale===!0||Nn(h)||h>=400&&h<500&&!$n(h))&&!u.uncertain){u.refused=!0,u.sent=!1,u.seq=null,u.epoch!==T&&(u.receiptGeneration=ee),u.epoch!==T&&(u.pageGeneration=w);return}if(!Y.has(l)){h>=200&&h<300&&Number.isInteger(S?.seq)&&!S?.stale?u.seq=S.seq:(u.uncertain=!0,u.uncertainSince??=u.sentOn);return}c.awaiting.splice(c.awaiting.indexOf(u),1);let I=t.get(l)?.store;I?.rebase(I.authoritative,{source:"state",through:u.through,cause:"decided"})}function Ve(){for(let[l,c]of ce){if(!Y.has(l))continue;let u;for(;c.awaiting.length&&c.awaiting[0].seq!==null&&c.awaiting[0].seq<=D;)u=c.awaiting.shift().through;if(u===void 0)continue;let h=t.get(l)?.store;h?.rebase(h.authoritative,{source:"state",through:u,cause:"settled"})}}function De(l,c,u,{status:h,body:S,retryAfter:x}){if(h>=200&&h<300){if(ue=lt,S?.stale){u.sent=!1,u.refused=!0,S.epoch!==T?ne():b();return}if(S?.epoch&&S.epoch!==T){ne();return}u.seq=Number.isInteger(S?.seq)?S.seq:null,$(l,{phase:"landed",n:u.n,seq:u.seq,through:u.through}),Ve();return}if($n(h)){if(u.sent=!1,$(l,{phase:"retry",code:S?.code??(h===0?"offline":h===429?"rate-limited":"server"),n:u.n,through:u.through,retryAfter:x??null}),Nn(h)?u.refused=!0:(u.uncertain=!0,u.uncertainSince??=u.sentOn),h===503&&S?.code==="not-connected"){ge=null,ne();return}if(h===503&&S?.code==="busy"){$(l,{phase:"left",code:"busy",n:u.n,through:u.through}),console.warn(`clay.live("${l}"): the room is full, so it stays at save speed for now`),Y.delete(l),M(l,c),C(ne,(x>0?x:60)*1e3);return}if(u.uncertain&&u.sentOn!==he){ne();return}k=_()+(x>0?x*1e3:ue),ue=Math.min(ue*2,_t);return}if(Er.has(h)){$(l,{phase:"refused",code:"revoked",n:u.n,through:u.through}),u.uncertain||(u.refused=!0),kt();return}let I=S?.error||S?.code||`status ${h}`;if(h===404){$(l,{phase:"left",code:"no-store",n:u.n,through:u.through}),console.warn(`clay.live("${l}"): the room has no such store, so it stays at save speed (${I})`),u.refused=!0,Y.delete(l),M(l,c,!1);return}if(c.awaiting.splice(c.awaiting.indexOf(u),1),h===413&&!S?.code&&u.entries?.length>1&&oe>Rn){oe=Rn,console.warn(`clay.live("${l}"): the host takes smaller updates, so they go in frames of ${oe} bytes`),c.unsent.unshift(...u.entries),u.adopted&&(c.adopted={rev:u.adopted,through:u.through}),c.framed=u.first-1;return}let G=t.get(l)?.store,me=S?.code??(h===413&&u.entries?.length===1?"too-large":"refused");$(l,{phase:"refused",code:me,n:u.n,from:u.first,through:u.through,...S?.code==="receipt-expired"&&{ops:u.ops}}),console.warn(`clay.live("${l}"): the host refused an update, so it was undone (${I})`),G?.rebase(G.authoritative,{source:"state",drop:u.first===void 0?void 0:[u.first,u.through],through:u.first===void 0?u.through:void 0,cause:"refused"}),S?.code==="receipt-expired"&&ne()}function pt(l){D=l.seq;let c=t.get(l.name)?.store;if(!c||Me.has(l.name))return;if(!Y.has(l.name)){be=!0;return}let u=c.checkOps(l.ops);if(!u){ne();return}let h,S=l.from===O;if(S){let x=Z(l.name),I=x.awaiting.findIndex(G=>G.n===l.n);I>=0&&(h=x.awaiting[I].through,$(l.name,{phase:"echoed",n:l.n,seq:l.seq,through:h}),x.awaiting.splice(0,I+1))}c.rebaseOps(u,{source:S?"state":"remote",through:h,frame:{seq:l.seq,from:l.from,n:l.n,ops:l.ops}}),t.get(l.name).last=l.seq,i(),l.checkpoint===!0&&d(),Ve()}function Xe(l){if(!(z||!l||!Number.isInteger(l.seq))){if(!X){ae.push(l),ae.length>kr&&ae.shift();return}if(l.epoch!==T){ae.push(l),ne();return}if(!(l.seq<=D)){if(l.seq!==D+1){ae.push(l),ne();return}pt(l)}}}function ke(l,c){let u=c.seen?c.seen[O]??0:null,h=[],S=[];for(let x of l)u!==null&&x.n<=u||We(c.saved,x.n)?S.push(...x.entries.map(I=>I.id)):x.sent&&x===y?(x.undecided=!0,h.push(x)):A(x)?h.push(x):S.push(...x.entries.map(I=>I.id));return{resend:h,dropIds:S}}function Ge(l,c,u,h){let S=q(l);if(!S.length)return!1;if(!h){let x=new Set;for(let I of c.awaiting)if(We(u.saved,I.n))for(let G of I.entries??[])x.add(G.id);if(S.every(I=>x.has(I)))return!1}return g(l,S)?!0:(p(l,c),!1)}function en(l,c=0){if(z||!l||typeof l.epoch!="string")return;if(te++,l.epoch===T&&Number.isInteger(l.seq)&&l.seq<D){tn();return}let u=l.epoch!==T;J=Number.isInteger(l.provenanceVersion)?l.provenanceVersion:0,ee=Number.isSafeInteger(l.receiptGeneration)?l.receiptGeneration:null;let h=w;w=typeof l.pageTransition?.id=="string"?l.pageTransition.id:null;let S=w!==h,x=!1;be=!1,T=l.epoch,D=Number.isInteger(l.seq)?l.seq:0,de=l.writer??null,"conn"in l&&(ge=l.conn);let I=l.stores||{};Y=new Set(Object.keys(I));for(let H of Me)Y.delete(H);let G=!1,me=!1;for(let[H,ye]of t){if(Me.has(H))continue;let K=I[H],j=Z(H);p(H,j);let fr=j.room;if(j.room=!!K,!K){j.out||(fr&&S&&$(H,{phase:"left",code:"no-store"}),M(H,j,!1)),j.after!==void 0&&c>=j.after&&(j.after=void 0,j.deferred=!1,P(H));continue}let nn=j.after!==void 0&&c<j.after;if(nn||Ge(H,j,K,u||j.stale===!0)){Y.delete(H),j.deferred=!0,u&&(j.stale=!0),nn&&(me=!0),G=!0;continue}let rn=u||j.stale===!0;j.deferred=!1,j.stale=!1,j.after=void 0;let dr=ye.store.handle.status.mode==="file";j.out=!1,ye.store.setMode("fast"),ye.last=Number.isInteger(K.last)?K.last:0,ye.landed=Number.isInteger(K.landed)?K.landed:0;let on=[];if(!rn&&ee!==null){let Te=K.seen?.[O];j.awaiting=j.awaiting.filter(ie=>We(K.saved,ie.n)||Te!==void 0&&ie.n<=Te||ie.seq!==null&&ie.seq<=D||(ie.receiptGeneration??0)===ee?!0:(on.push(...ie.entries.map(le=>le.id)),$(H,{phase:"refused",code:"receipt-expired",n:ie.n,from:ie.first,through:ie.through,ops:ie.ops}),console.warn(`clay.live("${H}"): the room retired an update receipt, so the update was not replayed. Check the saved value before restoring it.`),!1))}if(rn){let{resend:Te,dropIds:ie}=ke(j.awaiting,K);for(let qe of Te)qe.undecided||(qe.sent=!1,qe.seq=null,qe.receiptGeneration=ee,qe.pageGeneration=w);j.awaiting=Te,ye.store.rebase(K.value,{source:"state",dropIds:ie,room:{seq:D,fresh:!0,moves:l.moves?.[H]??null,floor:Number.isInteger(K.floor)?K.floor:null}}),j.unsent=s(H,j)}else{let Te=K.seen?K.seen[O]:void 0,ie=[],qe=[...on];for(let le of j.awaiting)We(K.saved,le.n)?qe.push(...le.entries.map(Ze=>Ze.id)):le===y?ie.push(le):le.seq!==null&&le.seq<=D||Te!==void 0&&le.n<=Te?qe.push(...le.entries.map(Ze=>Ze.id)):le.seq!==null?ie.push(le):!le.uncertain||Te!==void 0||le.uncertainSince===he?(le.sent=!1,ie.push(le)):qe.push(...le.entries.map(Ze=>Ze.id));j.awaiting=ie,ye.store.rebase(K.value,{source:"state",dropIds:qe,room:{seq:D,fresh:!1,moves:l.moves?.[H]??null,floor:Number.isInteger(K.floor)?K.floor:null}}),dr&&(j.unsent=s(H,j),x=!0)}P(H)}G&&(be=!0),(u||x)&&r(T),i(),n(),tn(),me&&ne()}function tn(){X=!0;let l=ae.filter(c=>c.epoch===T&&c.seq>D).sort((c,u)=>c.seq-u.seq);ae=[];for(let c of l)Xe(c);b()}async function ne(){if(z)return;if(pe){we=!0;return}pe=!0,we=!1,X=!1;let l={connection:he,stateCount:te,read:++Ce},c=null,u=typeof AbortController=="function"?new AbortController:null,h=new Promise(S=>{W=C(()=>{W=null,u?.abort(),S(null)},Sr)});try{c=await Promise.race([e.fetchState(O,T!==null&&D>0&&!be?{epoch:T,seq:D}:null,u?{signal:u.signal}:{}),h])}catch{}if(W!==null&&U(W),W=null,pe=!1,!z){if(l.connection!==he||we){B&&ne();return}if(l.stateCount!==te){if(X)return;c=null}if(c&&typeof c.epoch=="string"){re=lt,en(c,l.read);return}if(c&&Or.has(c.status)){kt();return}if(c&&c.status===503){let S=c.code==="busy";for(let[x,I]of t)I.store.handle.status.mode==="fast"&&($(x,{phase:"left",code:S?"busy":"unavailable"}),console.warn(`clay.live("${x}"): the host has no room for this document now, so it stays at save speed for now`),M(x,Z(x)));if(Y=new Set,!B)return;S||c.retryAfter>0?(re=lt,C(ne,(c.retryAfter>0?c.retryAfter:60)*1e3)):(C(ne,re),re=Math.min(re*2,_t));return}B&&(C(ne,re),re=Math.min(re*2,_t))}}function kt(){if(!z){z=!0,L!==null&&U(L),L=null,W!==null&&U(W),W=null,Oe?.();for(let[l,c]of t){let u=ce.get(l);u?.out||(u?M(l,u):(o(l,{epoch:T,seq:D}),c.store.setMode("file")))}F()}}let cr={open(l){O=l.clientId,B=!0,he++,ne()},close(){B=!1,he++,X=!1,ae=[]},frame:Xe,state(l){be&&l&&!("moves"in l)?ne():en(l)},writer(l){if(!(!l||l.epoch!==T)){if(de=l.writer??null,l.landed&&typeof l.landed=="object"){te++;for(let[c,u]of Object.entries(l.landed)){let h=t.get(c);h&&Number.isInteger(u)&&(h.landed=u,$(c,{phase:"checkpointed",seq:u}))}a()}n()}}};return{start(){!Oe&&!z&&(Oe=e.start(cr))},local(l,c,u){if(z||T===null||!Y.has(l))return;let h=Z(l),S=u-c.length+1;c.forEach((x,I)=>h.unsent.push({id:S+I,op:x})),b()},abandon(l){if(Me.has(l))return;Me.add(l),Y.delete(l);let c=Z(l);c.awaiting=c.awaiting.filter(u=>u===y),c.unsent=[],c.adopted=null},adopted(l,c,u){if(z||!Y.has(l))return;let h=Z(l),S=h.awaiting.find(x=>!x.sent&&x.through>=u);S?S.adopted=c:h.adopted={rev:c,through:u}},release(l,{read:c=!1}={}){if(z)return;let u=Z(l);if(u.deferred||c){u.after=Ce+1,T!==null&&B&&ne();return}T!==null&&Y.has(l)&&(p(l,u),u.unsent=s(l,u),b())},framed(l){return ce.get(l)?.n??0},pendingFrames(l,c,{reserve:u=!1}={}){let h=ce.get(l);if(u&&h&&O&&T===c?.epoch){let G=s(l,h);for(;G.length;){let me=bt({name:l,n:h.n+1,ops:[],epoch:T}),H=0;for(;H<G.length&&H<Tn;){let j=bt(G[H].op)+1;if(H&&me+j>oe)break;me+=j,H++}let ye=G.splice(0,H),K={n:++h.n,ops:ye.map(j=>j.op),entries:ye,first:ye[0].id,through:ye[ye.length-1].id,seq:null,sent:!1,refused:!0,epoch:T,client:O,receiptGeneration:ee,pageGeneration:w};je(h,K),h.awaiting.push(K),h.framed=K.through}h.unsent=[]}let S=new Set(t.get(l)?.store.pendingEntries().map(G=>G.id)??[]),x=[],I=!0;for(let G of h?.awaiting??[]){let me=G.entries.filter(H=>S.has(H.id));if(me.length){if(me.length!==G.entries.length||G.epoch!==c?.epoch||!G.client){I=!1;continue}x=Fe(x,[[G.client,[[G.n,G.n]]]])}}return{frames:x,complete:I}},captured(l,c,u){let h=ce.get(l);if(!h||!c||c.epoch!==T)return[];let S=vt(u),x=[];return h.awaiting=h.awaiting.filter(I=>{let G=I.epoch===c.epoch&&(st(S,I.client,I.n)||I.seq!==null&&I.seq<=c.seq);return G&&x.push(...I.entries.map(me=>me.id)),!G}),x},refresh(){T!==null&&B&&ne()},storeOpened(){T!==null&&B&&ne()},roomBound(l){return!z&&ce.get(l)?.room===!0},isWriter(){return de!==null&&de===O},get status(){return{connected:B,synced:X,epoch:T,seq:D,writer:de,clientId:O,stopped:z,provenanceVersion:J,receiptGeneration:ee}},stop:kt}}var Je=[0,1e4,3e4],Tr=6e3,Rr=2;async function $r(e){let t=globalThis.crypto&&globalThis.crypto.subtle;if(!t)return null;try{let r=new TextEncoder().encode(String(e)),o=await t.digest("SHA-256",r),n=new Uint8Array(o),i="";for(let a=0;a<n.length;a+=1)i+=n[a].toString(16).padStart(2,"0");return i}catch{return null}}function Nr(e){let t=[];for(let r of e||[]){let o=r&&r.saveId;if(typeof o=="string"&&o&&!t.includes(o)&&t.push(o),t.length>=Rr)break}return t}function Ir(e,t,r){return!!(e&&typeof e=="object"&&e.saveId===t&&e.requestHash===r&&e.status==="applied")}function In({query:e,digest:t=$r,now:r=()=>Date.now(),setTimer:o=setTimeout,clearTimer:n=clearTimeout}={}){function i({captureId:a,html:d,attempts:m,initialOutcome:q,startedAt:g,onApplied:P,onUnknown:F}){let _=g+45e3,C=Nr(m),U=new Set,O=new Set,B=d,X=null,T=!1;function ee(f,y){try{typeof f=="function"&&f(y)}catch(v){console.error("clayjs: save-history callback failed:",v)}}function w(){T=!0,B=null;for(let f of U)n(f);U.clear();for(let f of O)f.abort();O.clear()}function J(f,y){T||(w(),ee(P,{captureId:a,saveId:f,requestHash:y}))}function D(f){T||(w(),ee(F,{captureId:a,reason:f}))}function de(f,y){let v=null;return v=o(()=>{v!==null&&U.delete(v),f()},Math.max(0,y)),U.add(v),v}function Y(f){f!==null&&(n(f),U.delete(f))}async function ae(f){if(T)return;let y=_-r();if(y<=0)return;let v=new AbortController;O.add(v);let k=de(()=>v.abort(),Math.min(Tr,y)),L=null;try{L=await e({saveId:f,requestHash:X,signal:v.signal})}catch{L=null}finally{Y(k),O.delete(v)}T||Ir(L,f,X)&&J(f,X)}function pe(){if(!T&&!(r()>=_))for(let f of C)ae(f)}async function z(){let f=null;try{f=await t(B)}catch{f=null}if(B=null,T)return;if(typeof f!="string"||!f){D("unavailable");return}if(X=f,q&&typeof q=="object"&&q.status==="applied"&&q.requestHash===X&&C.includes(q.saveId)){J(q.saveId,X);return}let y=r()-g;if(y>=45e3){D("expired");return}let v=-1;for(let k=0;k<Je.length;k+=1)Je[k]<=y&&(v=k);if(v<0){for(let k=0;k<Je.length;k+=1)de(pe,g+Je[k]-r());return}pe();for(let k=v+1;k<Je.length;k+=1)de(pe,g+Je[k]-r())}return de(()=>D("expired"),_-r()),z(),{cancel(){w()}}}return{start:i}}var _r="/_/sync/data";function Pn(){return new URL(_r,window.location.origin)}async function Pr(e,t){let r=Pn();r.searchParams.set("client-id",e);try{let o=await fetch(r.href,{method:"POST",credentials:"same-origin",headers:{"Content-Type":"application/json","Document-URL":window.location.href,[Et]:String(1)},body:JSON.stringify(t)}),n=null;try{n=await o.json()}catch{}let i=Number(o.headers?.get?.("Retry-After"))||0;return{status:o.status,body:n,retryAfter:i}}catch{return{status:0,body:null,retryAfter:0}}}async function Cr(e,t=null,{signal:r}={}){let o=Pn();e&&o.searchParams.set("client-id",e),t&&typeof t.epoch=="string"&&Number.isInteger(t.seq)&&o.searchParams.set("since",`${t.epoch}:${t.seq}`);try{let n=await fetch(o.href,{credentials:"same-origin",cache:"no-store",headers:{"Document-URL":window.location.href,[Et]:String(1)},signal:r});if(!n.ok){let a=null;try{a=await n.json()}catch{}return{status:n.status,code:a?.code??null,retryAfter:Number(n.headers?.get?.("Retry-After"))||0}}let i=await n.json();return i&&typeof i.epoch=="string"&&i.conn===null?null:i}catch{return null}}function Cn(){return{start(e){return vn({open(t){t.lane==="live"&&e.open(t)},close:()=>e.close(),event(t,r){t==="data"?e.frame(r):t==="data-state"?e.state(r):t==="data-writer"&&e.writer(r)}})},send:Pr,fetchState:Cr}}function Ln(e,t){return!t||!Number.isInteger(t.seq)?null:t.seq>=(e.last??0)?[]:t.seq<(e.floor??0)?null:e.log.filter(r=>r.seq>t.seq).map(r=>({seq:r.seq,ops:r.ops}))}var Lr=4,jr=2e3,Br=500,Fr=1024,Dr=256*1024;function jn(e,t){let r=[],o=()=>{for(let n=r.length-1;n>=0;n--)nt(r[n])};try{for(let n of t){let i=mt(e,n);i&&(r.push(i),e=i.root)}}catch(n){throw o(),n}return{value:e,undo:o}}var Gr=new TextEncoder,Bn="page-format:1";function Dn(){return typeof BroadcastChannel=="function"&&typeof navigator<"u"&&typeof navigator.locks?.request=="function"}function Fn(){return typeof crypto<"u"&&typeof crypto.randomUUID=="function"?crypto.randomUUID():Math.random().toString(36).slice(2)+Date.now().toString(36)}function Gn({seed:e,key:t="clay-live:"+window.location.pathname,channel:r=null,floor:o=0}){let n=Fn(),i=o>=1?1:0,a=i?`${t}:${Bn}`:t,d=null,m=null,q=null,g=null,P=!1,F=null,_=!1,C=null,U=0,O=0,B=new Map,X=new Map,T=new Set,ee=new Map,w={epoch:null,seq:0,sequencer:null,closedBy:null,stale:!1,seen:new Map,stores:new Map};function J(s){d?.post(s)}function D(s,p){for(p.bytes=Gr.encode(JSON.stringify(p.ops)).length,s.log.push(p),s.logBytes+=p.bytes;s.log.length>Fr||s.logBytes>Dr;){let A=s.log.shift();s.logBytes-=A.bytes,s.floor=A.seq}}function de(s){let p=w.stores.get(s.name);p&&(p.value=jn(p.value,s.ops).value,p.last=s.seq,p.ephemeral||D(p,{seq:s.seq,ops:s.ops})),w.seq=s.seq;let A=s.name+`
2
+ `+s.from;(w.seen.get(A)??0)<s.n&&w.seen.set(A,s.n)}function Y(s){let p={};for(let[A,M]of w.seen){let b=A.indexOf(`
3
+ `);A.slice(0,b)===s&&(p[A.slice(b+1)]=M)}return p}let ae=s=>s.behind||s.landed===null?-1:s.landed;function pe(s){let p={},A={};for(let[b,N]of w.stores)p[b]={value:Q(N.value),ephemeral:N.ephemeral,seen:Y(b),last:N.last,landed:ae(N)},A[b]={log:N.log,last:N.last,landed:N.landed,floor:N.floor,behind:N.behind,file:N.file,inFile:N.inFile};let M={epoch:g.epoch,seq:g.seq,writer:n,stores:p,mirror:{seen:[...w.seen],stores:A}};if(s!==void 0){let b=s&&s.epoch===w.epoch&&Number.isInteger(s.seq)?s.seq:0,N={};for(let[se,xe]of w.stores)N[se]=Ln(xe,{seq:b});M.moves=N}return M}function z(s,p){return s?.file?p.seq!=null&&s.file.seq!=null?p.seq<=s.file.seq:s.file.hash===rt(V(Re(p.text))):!1}function f(){for(let[s,p]of ee)try{z(w.stores.get(s),p)&&ee.delete(s)}catch{ee.delete(s)}}function y(s){if(g||!s||typeof s.epoch!="string"||!Number.isInteger(s.seq)||!s.mirror||T.has(s.epoch)||s.epoch===w.epoch&&s.seq<w.seq)return!1;w.epoch!==null&&s.epoch!==w.epoch&&T.add(w.epoch);let p=new Map;for(let[A,M]of Object.entries(s.stores||{})){let b=s.mirror.stores?.[A]||{},N=Array.isArray(b.log)?b.log:[];p.set(A,{value:Q(M.value),ephemeral:M.ephemeral===!0,log:N,logBytes:N.reduce((se,xe)=>se+(xe.bytes||0),0),last:Number.isInteger(b.last)?b.last:0,landed:Number.isInteger(b.landed)?b.landed:null,floor:Number.isInteger(b.floor)?b.floor:0,behind:b.behind===!0,file:b.file||null,inFile:Array.isArray(b.inFile)?[...b.inFile]:[]})}return w={epoch:s.epoch,seq:s.seq,sequencer:s.writer??null,closedBy:null,stale:!1,seen:new Map(s.mirror.seen||[]),stores:p},f(),O+=1,!0}function v(){let s=pe();J({type:"data-state",state:s}),q.state(s)}function k(){w.epoch!==null&&T.add(w.epoch),w.epoch=Fn(),w.seq=0;for(let s of w.stores.values())s.log=[],s.logBytes=0,s.last=0,s.landed=null,s.floor=0,s.behind=!0,s.file=null,s.inFile=[]}function L({fresh:s}){let p=w.epoch===null;p&&k();for(let[M,b]of e())w.stores.has(M)||w.stores.set(M,{value:Q(b.value),ephemeral:b.ephemeral,log:[],logBytes:0,last:0,landed:0,floor:0,behind:!1,file:null,inFile:[]});w.stale=!1,w.sequencer=n,w.closedBy=null;let A=new Map;for(let[M,b]of w.seen)A.set(M,{n:b,seq:0});g={epoch:w.epoch,seq:w.seq,lastN:A};for(let[M,b]of ee){let N=w.stores.get(M);if(!(!N||N.ephemeral)){try{if(z(N,b))continue}catch{continue}we(M,b)}}ee.clear(),s&&!p&&(k(),g.epoch=w.epoch,g.seq=0),O+=1,v()}function W(){k(),g.epoch=w.epoch,g.seq=0,O+=1,v()}function ue(){g&&(J({type:"closed",from:n,state:pe()}),g=null,F?.(),F=null)}function oe(s){return w.closedBy!==null&&(s===null||w.closedBy===s)?Promise.resolve(!0):new Promise(p=>{let A=setTimeout(()=>{C=null,p(!1)},Br);C={sequencer:s,resolve(M){clearTimeout(A),C=null,p(M)}}})}function re(){_||P||(_=!0,navigator.locks.request(a,async()=>{if(P)return;let s=await oe(w.sequencer);if(!P)return L({fresh:w.epoch===null||!s}),new Promise(p=>{F=p})}).catch(()=>{}).finally(()=>{_=!1}))}function he(s,p){if(!p||typeof p.name!="string"||!Number.isInteger(p.n)||p.n<1||!Array.isArray(p.ops)||!p.ops.length)return{status:400,body:{error:"bad-frame"},retryAfter:0};let A=w.stores.get(p.name);if(!A)return{status:404,body:{error:"unknown-store"},retryAfter:0};let M=p.name+`
4
+ `+s,b=g.lastN.get(M);if(b&&p.n<=b.n)return{status:200,body:{duplicate:!0,seq:b.seq,epoch:g.epoch},retryAfter:0};let N;try{N=p.ops.map(Qe),jn(A.value,N).undo()}catch(xe){return{status:422,body:{error:xe.message},retryAfter:0}}g.seq+=1,g.lastN.set(M,{n:p.n,seq:g.seq});let se={epoch:g.epoch,seq:g.seq,name:p.name,ops:N,from:s,n:p.n};return de(se),J({type:"data",data:se}),q.frame(Q(se)),{status:200,body:{seq:g.seq,epoch:g.epoch},retryAfter:0}}function ge(s){if(!g||!s.length)return;let p={};for(let A of s){let M=w.stores.get(A);M&&(p[A]=ae(M))}q.writer({epoch:g.epoch,writer:n,landed:p})}function te(s,p){let A=w.stores.get(s);return!A||A.ephemeral||!p||p.epoch!==w.epoch||!Number.isInteger(p.seq)||!A.behind&&A.landed!==null&&p.seq<=A.landed?!1:(A.landed=p.seq,A.behind=!1,!0)}function we(s,{text:p,at:A,seq:M}){let b=w.stores.get(s);if(!b||b.ephemeral)return null;let N;try{N=Q(Re(p))}catch{return null}if(N===null||typeof N!="object"||Array.isArray(N)!==Array.isArray(b.value))return null;let se={seq:M??null,hash:rt(V(N))},xe=!!A&&A.epoch===w.epoch&&A.seq<=g.seq,Ve=xe&&A.hash===se.hash,De=xe?A.seq:b.behind?null:b.landed;if(De===null||De<b.floor){let ke=!b.behind;return b.behind=!0,b.file=se,{changed:!1,moved:ke}}let pt=b.log.filter(ke=>ke.seq>De&&(Ve||!b.inFile.includes(ke.seq)));Ve&&(b.inFile=[]);for(let ke of pt)for(let Ge of ke.ops)try{et(N,Ge),N=tt(N,Ge)}catch{}let Xe=!1;if(V(N)!==V(b.value)){let ke=bn(b.value,N);b.value=N,g.seq+=1,w.seq=g.seq,b.last=g.seq,D(b,{seq:g.seq,ops:ke}),b.inFile=[...b.inFile.filter(Ge=>Ge>b.floor),g.seq],Xe=!0}return b.landed=pt.length?De:b.last,b.behind=!1,b.file=se,{changed:Xe,moved:!0}}function Ce(s){let p=!1,A=[];for(let[M,b]of s){let N=w.stores.get(M);if(!N||N.ephemeral)continue;if(!g){ee.set(M,b);continue}let se=we(M,b);se&&(se.changed?p=!0:se.moved&&A.push(M))}p?v():ge(A)}function be(s){return new Promise(p=>{let A=++U,M=setTimeout(()=>{B.delete(A),X.delete(A),p(null)},jr);s.type==="post"&&X.set(A,w.sequencer),B.set(A,b=>{clearTimeout(M),B.delete(A),X.delete(A),p(b)}),J({...s,from:n,rid:A})})}function Oe(s){if(!(!s||typeof s.name!="string"||typeof s.epoch!="string"||!Number.isInteger(s.seq))&&!(g||T.has(s.epoch))){if(s.epoch!==w.epoch)w.stale=!0;else if(!w.stale&&s.seq===w.seq+1)try{de(s)}catch{w.stale=!0}else s.seq>w.seq&&(w.stale=!0);q.frame(s)}}function ce(s,p){if(!(typeof s!="string"||!p)){y(p)&&(w.closedBy=s,q.state(p));for(let[A,M]of X)M===s&&B.get(A)?.(null);C&&(C.sequencer===null||C.sequencer===s)&&C.resolve(w.closedBy===s)}}function Me({data:s}){if(!(P||!s||s.v!==Lr)){if(g&&(s.type==="data"&&s.data?.epoch===g.epoch||(s.type==="data-state"||s.type==="closed")&&s.state?.epoch===g.epoch&&s.state.writer!==n)){W();return}if(!g&&s.type==="data-state"&&s.state?.epoch===w.epoch&&s.state.writer!==w.sequencer&&Number.isInteger(s.state.seq)&&s.state.seq<w.seq){J({type:"forked",epoch:w.epoch,to:s.state.writer});return}if(s.type==="forked"){g&&s.epoch===g.epoch&&s.to===n&&W();return}s.type==="data"?Oe(s.data):s.type==="data-state"?y(s.state)&&q.state(s.state):s.type==="closed"?ce(s.from,s.state):s.type==="landed"?typeof s.name=="string"&&te(s.name,s.at)&&ge([s.name]):s.type==="answer"?s.to===n&&B.get(s.rid)?.(s.result):g&&s.type==="post"?s.epoch===g.epoch&&J({type:"answer",to:s.from,rid:s.rid,result:he(s.from,s.frame)}):g&&s.type==="state-request"&&J({type:"answer",to:s.from,rid:s.rid,result:pe(s.since)})}}function $(){ue()}function Z(s){!s.persisted||P||g||_||(w.sequencer=null,w.closedBy=null,re(),q.close(),q.open({clientId:n,lane:"live"}))}function je(s,{covered:p=!1}={}){let A=s>=1?1:0,M={floor:i,scope:a};return A<=i?{status:"already",...M}:P||!d?{status:"refused",code:"lane-stopped",...M}:r?{status:"refused",code:"shared-channel",...M}:p?(ue(),m?.(),a=A?`${t}:${Bn}`:t,i=A,d=Tt(a),m=d.subscribe("durable",b=>Me({data:b})),w.sequencer=w.closedBy=null,_=!1,re(),q.close(),q.open({clientId:n,lane:"live"}),{status:"switched",floor:i,scope:a}):{status:"refused",code:"uncovered",...M}}return{clientId:n,get scope(){return a},get floor(){return i},switchScope:je,start(s){return q=s,d=r??Tt(a),m=d.subscribe("durable",p=>Me({data:p})),window.addEventListener("pagehide",$),window.addEventListener("pageshow",Z),re(),q.open({clientId:n,lane:"live"}),()=>{ue(),P=!0,C?.resolve(!1),window.removeEventListener("pagehide",$),window.removeEventListener("pageshow",Z);for(let p of B.values())p(null);m?.(),m=null,d=null}},async send(s,p){return g?he(n,p):await be({type:"post",frame:p,epoch:w.epoch})||{status:0,body:null,retryAfter:0}},async fetchState(s,p=null){if(g)return pe(p);let A=O,M=await be({type:"state-request",since:p});return g?pe(p):A!==O||!y(M)?null:M},fileFrame(s){P||Ce(s)},landed(s,p){P||!p||(te(s,p)&&ge([s]),J({type:"landed",name:s,at:{epoch:p.epoch,seq:p.seq}}))},get isSequencer(){return g!==null}}}var Wr=/^[A-Za-z0-9_.:-]{1,64}$/,R=new Map,Vn="save_"+[...crypto.getRandomValues(new Uint32Array(4))].map(e=>e.toString(16).padStart(8,"0")).join(""),Lt=0,Ur=0,Jr=45e3;function Gt(e){let t=ot(e.getAttribute("live-at"));if(!t||t.hash!==ho(e.textContent))return null;let r=e.getAttribute("live-by"),o=r===null?null:it(r);return r!==null&&!o?null:o&&o.v!==2?{disk:!0}:{epoch:t.epoch,seq:t.seq,frames:vt(o),ancestors:kn(o)}}function Yr(e,t){let r=e.leftAt;if(!r||r.disk)return null;let o=E?.pendingFrames(e.store.name,r,{reserve:t})??{frames:[],complete:!0};if(!o.complete)return null;let n=Fe(r.frames??[],o.frames),i=r.ancestors??[],a=V(e.store.value),d=JSON.stringify([r.epoch,r.seq,n,i,e.store.mark,a]);if(e.capture?.key===d)return e.capture.value;let m={v:2,frames:n,ancestors:i,capture:[Vn,Lt+1]},q=En(m),g=q?{at:Rt(r.epoch,r.seq,a),by:q}:null;return e.capture={key:d,value:g},g}var Le=new Map,Ie=null,Se=null,Ee=null,zr=In({query:e=>ln?.(e)??null}),Ae=new Map;function Xn(e){if(!e.captureOps.size)return;let t=new Set(e.store.pendingEntries().map(r=>r.id));for(let[r,o]of e.captureOps)o.ids=o.ids.filter(n=>t.has(n)),o.ids.length||e.captureOps.delete(r);[...e.captureOps.values()].some(r=>r.ended)||ft(e)}var Zn=(e,t)=>Ie===null||!fn()?!1:Le.get(Ie)?.get(e)?.key===t;function ut(e){let t=R.get(e);if(!t||!t.captureOps.size)return[];let r=new Set(t.store.pendingEntries().map(n=>n.id)),o=new Set;for(let[n,i]of t.captureOps)if(!(!i.ended&&!Zn(e,n)))for(let a of i.ids)r.has(a)&&o.add(a);return[...o]}function Ht(e){for(let[t,r]of e.captureOps)if(r.ended)return[t,r];return null}Ot({id:"live:held",isPending:()=>[...R.values()].some(e=>Ht(e))});var Hn=e=>[...e.captureOps].some(([t,r])=>!r.ended&&Zn(e.store.name,t));function Kr({op:e,path:t,n:r,value:o}){let n=t.length?t.join("."):"the whole value",i=e==="add"?`${n} + ${r}`:e==="del"?`${n} removed`:`${n} = ${JSON.stringify(o)}`;return i.length>60?`${i.slice(0,57)}...`:i}function Wt(e){clearTimeout(e.timer),e.timer=setTimeout(()=>{e.timer=null,ze(e)},Jr)}function ft(e){clearTimeout(e.timer),e.timer=null}function ze(e,{read:t=!0}={}){let r=e.store.name,o=ut(r);if(ft(e),e.withheld=!1,e.reading=!1,er(e),o.length){let n=e.store.pendingEntries().filter(m=>o.includes(m.id)).map(m=>m.op);e.store.handle.status.mode==="file"&&(e.leftAt=null),e.store.rebase(e.store.authoritative,{source:"state",dropIds:o});let i=n.slice(0,5).map(Kr).join("; "),a=n.length>5?` and ${n.length-5} more`:"",d=`A save of "${r}" ended without an answer, so ${n.length===1?"this edit was":"these edits were"} not sent again: ${i}${a}. Check the value, and redo ${n.length===1?"it":"any"} if missing.`;console.warn(`clay.live("${r}"): ${d}`,n),document.dispatchEvent(new CustomEvent("clay:live-notice",{detail:{name:r,code:"save-uncertain",ops:n,message:d}}))}t&&E?.release(r,{read:E.roomBound(r)})}function ct(e){Xn(e);let t=e.store.name;if(e.recovery&&!Zr(e)&&er(e),!(!e.withheld||e.reading||ut(t).length)){if(!E?.roomBound(t)){e.withheld=!1,ft(e);return}e.reading=!0,Wt(e),E.release(t,{read:!0})}}function Vr(e){let t=R.get(e);t&&(Ut(t),!(!t.withheld&&!t.reading)&&(t.withheld=!1,t.reading=!1,[...t.captureOps.values()].some(r=>r.ended)||ft(t)))}function Xr(){for(let e of R.values())if(e.recovery||e.historicalRefreshPending)return!0;return!1}function Zr(e){let t=new Set(e.store.pendingEntries().map(o=>o.id));return e.recovery.targets.find(({name:o})=>o===e.store.name)?.ids.some(o=>t.has(o))??!1}function Qr(e){if(!Ee||Ee.captureId!==e||typeof Ee.html!="string")return null;let t=[];for(let[r,o]of Ee.qualified)!R.get(r)||!o.length||t.push({name:r,ids:[...o],saved:Ee.saved.get(r)});return t.length?{captureId:e,html:Ee.html,targets:t}:null}function qt(){Ee&&(Ee.html=null)}function eo(e,t){Qn(e);let r=e.store.name;e.refreshTimer=setTimeout(()=>{if(e.refreshTimer=null,!e.historicalRefreshPending)return;let o=`The save of "${r}" that ended without an answer did happen, but the value the file holds now must load before newer edits can be saved.`;console.warn(`clay.live("${r}"): ${o}`),document.dispatchEvent(new CustomEvent("clay:live-notice",{detail:{name:r,code:"save-history-refresh-required",message:o}}))},Math.max(0,t-Date.now()))}function Ut(e){e.historicalRefreshPending&&(e.historicalRefreshPending=!1,Qn(e))}function Qn(e){e.refreshTimer!==null&&(clearTimeout(e.refreshTimer),e.refreshTimer=null)}function er(e){let t=e.recovery;t&&(e.recovery=null,!t.targets.some(r=>R.get(r.name)?.recovery===t)&&(Ae.delete(t.captureId),t.run?.cancel()))}function tr(e){if(e==null)return;let t=Ae.get(e);if(t){Ae.delete(e);for(let r of t.targets){let o=R.get(r.name);o&&o.recovery===t&&(o.recovery=null)}t.run?.cancel()}}function to(e,{result:t,attempts:r,startedAt:o}){let{captureId:n,html:i}=e,a={captureId:n,deadline:o+45e3,targets:e.targets,run:null};Ae.set(n,a);for(let d of e.targets){let m=R.get(d.name);ft(m),m.recovery=a}ht("save-history").then(d=>{if(Ae.get(n)===a){if(e.html=null,!d)return Wn(n);a.run=zr.start({captureId:n,html:i,attempts:r,initialOutcome:t?.saveOutcome??null,startedAt:o,onApplied:({saveId:m,requestHash:q})=>no(n,m,q),onUnknown:({reason:m})=>ro(n,m)})}},()=>{e.html=null,Wn(n)})}function no(e,t,r){let o=Ae.get(e);if(o){Ae.delete(e);for(let n of o.targets){let i=R.get(n.name);if(!i||i.recovery!==o)continue;i.recovery=null,i.historicalRefreshPending=!0;let a=new Set(i.store.pendingEntries().map(m=>m.id)),d=n.ids.filter(m=>a.has(m));if(i.store.rebase(JSON.parse(n.saved),{source:"state",dropIds:d}),!E){Ut(i);continue}E.release(i.store.name,{read:!0}),eo(i,o.deadline)}}}function Wn(e){let t=Ae.get(e);if(t){Ae.delete(e);for(let r of t.targets){let o=R.get(r.name);if(!(!o||o.recovery!==t)){if(o.recovery=null,!E?.roomBound(o.store.name)){ze(o,{read:!1});continue}o.withheld=!0,o.reading=!0,Wt(o),E.release(o.store.name,{read:!0})}}}}function ro(e,t){let r=Ae.get(e);if(r){Ae.delete(e);for(let o of r.targets){let n=R.get(o.name);!n||n.recovery!==r||(n.recovery=null,ze(n))}}}function oo(e,t,r){let o=e.captureOps.get(t),n=e.store.name;if(!o){e.store.handle.status.mode==="file"&&(e.leftAt=null);return}if(o.ended=!0,r?.has(n)){e.withheld=!0,e.reading=!0;return}if(!E?.roomBound(n)){ze(e,{read:!1});return}e.withheld=!0,e.reading=!0,Wt(e),E.release(n,{read:!0})}function jt(e){if(Array.isArray(e))return e.map(jt);if(e===null||typeof e!="object")return e;let t={};for(let r of Object.keys(e).sort())t[r]=jt(e[r]);return t}function Jt(e){try{return JSON.stringify(jt(Re(e)))}catch{return null}}var fe=null,dt=()=>!fe||fe.admitted;function so(){if(!He||!dt())return!1;for(let e of R.values())if(!e.store.ephemeral){if(e.store.handle.status.mode==="fast"){if(E?.isWriter()&&e.landed<e.last)return!0}else if(e.store.pending.length>0)return!0}return!1}var Bt=new Set;function nr(){for(let e of[...Bt])e()}var ve=Mn({needsSave:so,blocked:()=>!dt()||!yn()||mn()||gn()||Xr(),save:()=>Mt().finally(nr),saveNow:()=>cn(!0,()=>Mt())}),E=null,Ft=!1,Dt=0,St=null,Yt=!1,_e=null,zt=!1;function Kt(){return[...R.values()].filter(e=>!e.store.ephemeral)}function rr(){if(!fe||fe.admitted||!E||E.status.stopped)return!1;for(let e of Kt())if(e.store.handle.status.mode==="fast"&&e.store.pending.length>0)return!0;return!1}async function or({timeoutMs:e=5e3}={}){let t=Date.now()+e,r=()=>{for(let o of Kt())o.store.handle.status.mode==="fast"&&o.store.pending.length>0&&E?.release(o.store.name)};for(r();rr();){if(Date.now()>=t)return{ok:!1,code:"timeout"};await new Promise(o=>setTimeout(o,5)),r()}return{ok:!0}}Ot({id:"live:writer",isPending:rr,flush:or});function io(){for(let e of R.values()){e.framesSince=!1;let t=e.store.pendingEntries().map(r=>r.id);t.length&&e.store.rebase(e.store.authoritative,{source:"state",dropIds:t})}}function lo(){let e=E;E=null,Ft=!1,Dt++,St=null,_e=null,Yt=!1,At=null,Vt=null,at=null,Ye=null,e?.stop()}function ns(){return{id:"clay:live",order:200,prepare(e={}){if(e.initial===!0)return fe||(fe={admitted:!0}),Jn(fe,{adopted:!0});sr();let t={admitted:!1,wantsLane:!0};return fe=t,io(),xt(),Jn(t)}}}function Un(){for(let e of Kt())e.store.pending.length>0&&E?.release(e.store.name)}function Jn(e,{adopted:t=!1}={}){return{enable(){t||fe!==e||(e.admitted=!0,xt(),Un())},quiesce(){if(fe===e)return e.admitted=!1,or()},resume(){fe===e&&(e.admitted=!0,Un())},dispose(){fe===e&&(fe=null,lo())}}}var At=null,Vt=null,at=null,Ye=null;function sr(){At=new Promise(e=>{at=e}),Vt=new Promise(e=>{Ye=e})}function Xt(){return At||sr(),{laneReady:At,writerReady:Vt}}function rs(){return Xt().laneReady}function os(){return Xt().writerReady}function Yn(){for(let e of R.values())if(!e.store.ephemeral&&e.store.handle.status.mode==="fast"&&e.landed===-1){ve.soon();return}ve.changed()}function Ct(e,t){e.store.rebase(e.store.authoritative,{source:"state",through:t})}function Zt(e,t,r=null){if(e)for(let[o,n]of e){let i=R.get(o);!i||n.mode!=="file"||(t||n.maybeLanded?oo(i,n.key,r):(i.captureOps.delete(n.key),ct(i)),i.store.handle.status.mode==="fast"&&E?.release(o))}}function Ke(e){let t=Le.get(e);return Le.delete(e),Ie===e&&(Ie=null),Se===e&&(Se=null),t}function ir(e,t=null){let r=t??Ie??Se;r!==null&&Zt(Ke(r),e)}function ao(e,t){let r=e?.code,o=r==="page-converting"||r==="page-capacity";return r==="save-already-applied"||e?.hadTimeout===!0||t!==!1&&!o&&!(e?.status>=400&&e?.status<500)}function zn(e){return{transport:e,entries:R,onWriter:()=>{ve.changed(),E&&E.status.writer!==null&&Ye?.(E)},onApplied:Yn,onLanded:()=>{Yn(),nr()},onCheckpoint:()=>ve.soon(),onLeave:(t,r)=>{let o=R.get(t);o?.store.handle.status.mode==="fast"&&(o.leftAt={...r,frames:[],ancestors:[]})},held:t=>ut(t).length>0,heldIds:ut,hold:t=>{let r=R.get(t);return r?r.recovery?!0:Hn(r)?(r.withheld=!0,!0):(ze(r,{read:!1}),!1):!1},taken:Vr,onStop:()=>{for(let t of R.values())Ut(t),!t.recovery&&(Hn(t)||ze(t,{read:!1}))}}}function uo(){let e=new Map;for(let[t,r]of Pe(document,{warn:!1})){let o=R.get(t);if(o){e.set(t,{value:o.store.authoritative,ephemeral:o.store.ephemeral});continue}try{let n=Re(r.element.textContent);n!==null&&typeof n=="object"&&e.set(t,{value:n,ephemeral:r.ephemeral})}catch{}}return e}function xt(){if(Xt(),Ft||!(fe?fe.admitted||fe.wantsLane:He))return;Ft=!0;let e=++Dt;ht("live-data").then(async t=>{let r=t&&await ht("live-provenance");if(e===Dt){if(St=t,Yt=r,t)E=Pt(zn(Cn()));else if(Dn())_e=Gn({seed:uo,floor:document.querySelector('meta[name="clay-page-format"]')?.getAttribute("content")}),E=Pt(zn(_e));else{at?.(null),Ye?.(null);return}for(let o of Pe(document,{warn:!1}).keys())if(!R.has(o))try{ar(o)}catch{}for(let[o,n]of R)n.historicalRefreshPending&&E.release(o,{read:!0});E.start(),at?.(E),E.status.writer!==null&&Ye?.(E)}}).catch(()=>{at?.(null),Ye?.(null)})}function co(e){let t=(e||"").split(";")[0].trim().toLowerCase();return t==="application/json"||t.endsWith("+json")}function Pe(e=document,{warn:t=!0}={}){let r=new Map,o=new Set;for(let n of e.querySelectorAll('script[merge][clay~="live"]')){if(n.hasAttribute("src")||!co(n.getAttribute("type")))continue;let i=n.getAttribute("merge");if(Wr.test(i)){if(r.has(i)){o.add(i);continue}r.set(i,{name:i,ephemeral:n.getAttribute("clay").split(/\s+/).includes("ephemeral"),element:n})}}for(let n of o)t&&console.warn(`clay.live: more than one live tag is named "${n}", so none of them is live`),r.delete(n);return r}function Qt(e){return new DOMParser().parseFromString(e,"text/html")}function fo(e){let t=e.store.handle.status.mode==="fast",r=t?e.store.authoritative:e.store.value,o=t&&/^page(\.[0-9]+)?$/.test(e.store.name)?qn(r):r;return e.layout==="lines"?po(o):e.layout==="pretty"?JSON.stringify(o,null,2).replace(/</g,"\\u003c"):V(o)}var Kn=e=>e!==null&&typeof e=="object"&&!Array.isArray(e);function po(e){return Kn(e)?`{${Object.entries(e).map(([r,o])=>!Kn(o)||!Object.keys(o).length?`${V(r)}:${V(o)}`:`${V(r)}:{
5
+ ${Object.entries(o).map(([n,i])=>`${V(n)}:${V(i)}`).join(`,
6
+ `)}
7
+ }`).join(`,
8
+ `)}}`:V(e)}function ho(e){try{return rt(V(Re(e)))}catch{return null}}function go(e,t,r,o){let n;try{n=Re(t)}catch{return}e.store.rebase(n,{source:r,...o?.length&&{dropIds:o}})&&(e.framesSince=!0)}function lr(e,t,{layout:r="line",leftAt:o=null,staged:n=null}={}){let i={store:t,layout:r,framesSince:!1,last:0,landed:0,leftAt:o,captureOps:new Map,withheld:!1,reading:!1,timer:null,recovery:null,historicalRefreshPending:!1,refreshTimer:null,staged:n};return R.set(e,i),t.onDelivery(a=>{a.code==="receipt-expired"&&document.dispatchEvent(new CustomEvent("clay:live-notice",{detail:{name:e,code:a.code,ops:a.ops,message:"The room retired an update receipt. Check the saved value before restoring this update."}})),a.phase==="refused"&&a.code==="too-large"&&!/^page(\.[0-9]+)?$/.test(e)&&document.dispatchEvent(new CustomEvent("clay:live-notice",{detail:{name:e,code:"op-too-large",message:"That change was too large to share, so it was undone."}})),a.phase==="left"&&a.code==="no-store"&&/^page(\.[0-9]+)?$/.test(e)&&document.dispatchEvent(new CustomEvent("clay:live-notice",{detail:{name:e,code:"unknown-store",message:`The room has no "${e}" store, so the page it holds is not the one this tab is editing.`}}))}),t.onRebase(a=>{ct(i),t.handle.status.mode==="file"&&["undone","refused","decided"].includes(a.cause)&&(i.leftAt=null)}),t.ephemeral||t.onLocal(()=>ve.changed()),t.onLocal(a=>{!i.staged&&dt()&&E?.local(e,a,t.mark)}),t.handle.on("change",()=>{!t.ephemeral&&t.handle.status.mode==="fast"&&ve.changed()}),n||(E?.storeOpened(e),xt()),i}function ar(e){let t=R.get(e);if(t)return t.store.handle;let r=Pe().get(e);if(!r)throw new Error(`clay.live: this page has no <script type="application/json" merge="${e}" clay="live"> tag`);let o=r.element.textContent,n;try{n=Re(o)}catch(m){throw new SyntaxError(`clay.live("${e}"): the tag's JSON does not parse: ${m.message}`)}let i=It({name:e,value:n,ephemeral:r.ephemeral}),a=r.element.getAttribute("live-format")==="lines"?"lines":o.includes(`
9
+ `)?"pretty":"line";return lr(e,i,{layout:a,leftAt:Gt(r.element)}).store.handle}function ss(e,{value:t,represented:r=null,signal:o=null}={}){let n=R.get(e);if(n&&!n.staged)throw new Error(`clay.live("${e}"): the store is open in a room`);let i=n??lr(e,It({name:e,value:t,ephemeral:!1}),{staged:{represented:r,signal:o}});return{handle:i.store.handle,isPending:()=>!!i.staged&&i.store.pending.length>0,flush:(a={})=>mo(i,a),dispose(){i.staged&&R.get(e)===i&&R.delete(e)},close(){R.get(e)===i&&R.delete(e)}}}async function mo(e,{timeoutMs:t=1e4}={}){let r=e.staged;if(!r||!e.store.pending.length)return{ok:!0};if(r.conflict)return{ok:!1,code:r.conflict};let o=r.represented?.etag||null,n=an();if(o&&n&&o!==n)return{ok:!1,code:"stale-document"};o&&!n&&un(o);let i=await qo({timeoutMs:t});return i.ok?{ok:!0}:{ok:!1,code:r.conflict??i.code??null}}function yo(e){e.staged&&(e.staged=null,e.tagless=!0,E?.storeOpened(e.store.name),xt())}sn((e,{forSave:t,requestRefresh:r})=>{if(!R.size)return;let o=Pe(e,{warn:!1});for(let n of R.values()){if(n.store.ephemeral)continue;let i=o.get(n.store.name);if(!i&&(n.staged||n.tagless)){let m=e.querySelector("article[data-page]");if(!m)continue;let q=m.ownerDocument.createElement("script");q.setAttribute("type","application/json"),q.setAttribute("merge",n.store.name),q.setAttribute("clay","live"),m.parentNode.insertBefore(q,m),i={name:n.store.name,ephemeral:!1,element:q}}if(!i)continue;if(t&&(n.recovery||n.historicalRefreshPending)){let m=n.historicalRefreshPending;m&&r&&E?.release(n.store.name,{read:!0});let q=m?"save-history-refresh-required":"save-history-pending",g=m?`clay.live("${n.store.name}"): the earlier save happened, but the current value must load before newer edits can be saved. Your edits are still in this tab.`:`clay.live("${n.store.name}"): a save ended without an answer, so the saved value must be checked before this one is sent. Your edits are still in this tab.`;throw console.warn(`clay.live("${n.store.name}"): ${g}`),m||document.dispatchEvent(new CustomEvent("clay:live-notice",{detail:{name:n.store.name,code:q,message:g}})),Object.assign(new Error(g),{code:q})}let a=t&&n.store.handle.status.mode==="file"?Ht(n)?.[1]:null;if(a){i.element.textContent=a.text;for(let[m,q]of[["live-at",a.at],["live-by",a.by]])q===null?i.element.removeAttribute(m):i.element.setAttribute(m,q);continue}let d=fo(n);if(i.element.textContent=d,n.store.handle.status.mode==="fast"&&E)i.element.setAttribute("live-at",Rt(E.status.epoch,E.status.seq,V(n.store.authoritative))),i.element.removeAttribute("live-by");else{let m=n.store.pending.length>0||n.leftAt&&!n.leftAt.disk,q=St===null&&n.leftAt&&!n.leftAt.disk;if(t&&m&&(q||St&&!Yt)){let P="This host must update its live data protocol before this save can be sent. Your edits are still in this tab.";throw console.warn(`clay.live("${n.store.name}"): ${P}`),document.dispatchEvent(new CustomEvent("clay:live-notice",{detail:{name:n.store.name,code:"provenance-unsupported",message:P}})),E?.refresh(),Object.assign(new Error(P),{code:"provenance-unsupported"})}let g=Yr(n,t);g?(i.element.setAttribute("live-at",g.at),i.element.setAttribute("live-by",g.by)):(i.element.removeAttribute("live-at"),i.element.removeAttribute("live-by"))}}});document.addEventListener("clay:snapshot-ready",e=>{if(e.detail?.forSave!==!0||!R.size)return;let t=e.detail.captureId??null,r=Pe(e.detail.documentElement,{warn:!1}),o=new Map;for(let n of R.values()){if(n.store.ephemeral)continue;let i=r.get(n.store.name);if(!i)continue;let a=n.store.handle.status.mode==="fast"&&E?"fast":"file",d=a==="fast"?{epoch:E.status.epoch,seq:E.status.seq}:null,m=a==="file"?Gt(i.element):null,q=it(i.element.getAttribute("live-by")),g=a==="file"?Ht(n):null,P=n.store.pendingEntries().map(O=>O.id),F=g?g[1].ids.filter(O=>P.includes(O)):a==="file"?P:[],_=a==="file"&&q?.v===2?q.capture:null,C=F.length?g?g[0]:_?JSON.stringify(_):`anonymous:${++Ur}`:null,U=g?g[1].mark:n.store.mark;o.set(n.store.name,{mode:a,mark:U,canonical:Jt(i.element.textContent),at:d,lineage:m,by:i.element.getAttribute("live-by"),key:C,maybeLanded:!!g,ids:F}),m&&!m.disk&&n.leftAt&&(n.leftAt={...n.leftAt,ancestors:m.ancestors}),_&&_[0]===Vn&&(Lt=Math.max(Lt,_[1])),C&&(n.captureOps.set(C,{capture:_,ids:F,ended:!1,mark:U,text:i.element.textContent,at:i.element.getAttribute("live-at"),by:i.element.getAttribute("live-by")}),Xn(n)),n.framesSince=!1,a==="fast"&&zt&&ve.flushing&&_e?.landed(n.store.name,d)}Se!==null&&Se!==Ie&&Zt(Ke(Se),!1),t!==null&&(Le.set(t,o),Se=t)});document.addEventListener("clay:save-conflict",e=>{ir(e.detail?.hadTimeout===!0,e.detail?.captureId)});for(let e of["clay:save-error","clay:save-offline"])document.addEventListener(e,t=>{let r=t.detail?.status,o=t.detail?.code,n=o==="page-converting"||o==="page-capacity";ir(o==="save-already-applied"||t.detail?.hadTimeout===!0||t.detail?.sent!==!1&&!n&&!(r>=400&&r<500),t.detail?.captureId)});function ur(e,t){if(!t||typeof e!="string")return;let r=Pe(Qt(e),{warn:!1});for(let[o,n]of t){let i=R.get(o);if(!i)continue;let a=r.get(o),d=i.store.handle.status.mode;if(!a||Jt(a.element.textContent)!==n.canonical){n.mode==="file"&&(E?.roomBound(o)&&Ct(i,n.mark),d==="fast"&&E?.release(o),ct(i));continue}if(n.mode==="fast"){n.at&&_e?.landed(o,n.at);continue}d==="fast"?(Ct(i,n.mark),_e?.fileFrame(new Map([[o,{text:a.element.textContent,at:ot(a.element.getAttribute("live-at")),seq:null}]])),E?.release(o),E?.refresh()):i.framesSince?(!i.leftAt||i.leftAt.disk||E?.roomBound(o))&&Ct(i,n.mark):(i.store.confirm(n.mark),i.leftAt=n.lineage&&a.element.getAttribute("live-by")===n.by?n.lineage:{disk:!0},yo(i)),ct(i)}}function vo(e,t,r){let o=Pe(Qt(r),{warn:!1}),n=new Map,i=new Map;for(let[a,d]of t){if(d.qualifiedIds=null,d.mode!=="file"||d.key===null)continue;let m=R.get(a);if(!m)continue;let q=o.get(a);if(!q||Jt(q.element.textContent)!==d.canonical)continue;let g=m.captureOps.get(d.key);if(!g||q.element.getAttribute("live-at")!==g.at||q.element.getAttribute("live-by")!==d.by)continue;let P=new Set(m.store.pendingEntries().map(C=>C.id)),F=new Set(g.ids),_=d.ids.filter(C=>P.has(C)&&F.has(C));_.length&&(d.qualifiedIds=_,n.set(a,_),i.set(a,d.canonical))}Ee={captureId:e,qualified:n,saved:i,html:r}}pn(({captureId:e,html:t})=>{if(e==null)return;let r=Le.get(e);r&&(Ie=e,Se===e&&(Se=null),vo(e,r,t))});hn(({captureId:e,result:t,attempts:r,sent:o})=>{if(e==null||t?.ok)return;let n=Le.get(e);if(!n)return;let i=[...n.keys()].map(m=>R.get(m)).find(m=>m?.staged);if(i&&t.code==="page-nothing-to-write"){i.store.confirm(i.store.mark),Ke(e),qt(),ct(i);return}i&&t.code==="page-lineage-stale"&&(i.staged.conflict="conflict"),Ke(e);let a=ao(t,o),d=a?Qr(e):null;qt(),Zt(n,a,d?new Set(d.targets.map(m=>m.name)):null),d&&to(d,{result:t,attempts:r,startedAt:Date.now()})});function wo(e,t){let r=t?.captureId;if(r==null)return;let o=Le.get(r);o&&(Ke(r),qt(),tr(r),ur(e,o))}dn(wo);function is(e){let t=Se??Ie,r=t===null?null:Ke(t);qt(),tr(t),ur(e,r)}function ls(){return Ee}function bo(e,t=null){if(typeof e!="string"||!e)return;let r=Pe(Qt(e),{warn:!1});if(!r.size)return;if(_e){let n=new Map;for(let[i,a]of r)a.ephemeral||n.set(i,{text:a.element.textContent,at:ot(a.element.getAttribute("live-at")),seq:Number.isInteger(t)?t:null});_e.fileFrame(n)}let o=Pe(document,{warn:!1});for(let[n,i]of r){let a=i.element.textContent,d=R.get(n),m=i.element.getAttribute("live-at"),q=i.element.getAttribute("live-by"),g=o.get(n)?.element;if(d&&!d.store.ephemeral&&d.store.handle.status.mode==="file"&&m!==null&&q===null&&(d.withheld||ut(n).length)){d.withheld=!0;continue}let P=[];if(d&&d.store.handle.status.mode==="file"){let F=Gt(i.element),_=F&&!F.disk&&(!E?.status.epoch||F.epoch===E.status.epoch);if(_?P=E?.captured(n,F,it(q))??[]:F?.disk&&(P=E?.captured(n,ot(m),null)??[]),F&&!F.disk)for(let[C,U]of d.captureOps)U.capture&&st(F.ancestors,...U.capture)&&(P.push(...U.ids),d.captureOps.delete(C));d.leftAt=_||F?.disk?F:null}if(g&&(!d||d.store.handle.status.mode==="file")&&(m===null?g.removeAttribute("live-at"):g.getAttribute("live-at")!==m&&g.setAttribute("live-at",m),q===null?g.removeAttribute("live-by"):g.getAttribute("live-by")!==q&&g.setAttribute("live-by",q)),d&&!d.store.ephemeral){if(d.staged)continue;d.store.handle.status.mode==="file"&&go(d,a,"remote",P);continue}g&&g.textContent!==a&&(g.textContent=a)}}document.addEventListener("clay:sync-applied",e=>bo(e.detail?.html,e.detail?.seq));document.addEventListener("visibilitychange",()=>{document.visibilityState==="hidden"&&He&&dt()&&ve.flush()});window.addEventListener("pagehide",()=>{if(zt=!0,!He||!dt())return;let e=Se??Ie,t=ve.flushing&&e!==null?Le.get(e):null;if(t)for(let[r,o]of t)o.mode==="fast"&&o.at&&_e?.landed(r,o.at);ve.flush()});window.addEventListener("pageshow",()=>{zt=!1});function as(e){return R.get(e)?.store||null}function us(e,t){let r=R.get(e);r&&r.store===t&&!r.staged&&R.delete(e)}function cs(){return[...R.values()].map(e=>e.store)}function fs(){return E}function ds(e){ve.within(e)}function qo({timeoutMs:e=1e4}={}){let t=new Map;for(let[o,n]of R)n.store.ephemeral||t.set(o,n.store.handle.status.mode==="fast"?n.last??0:null);let r=()=>[...t].every(([o,n])=>{let i=R.get(o);return i?n===null||i.store.handle.status.mode!=="fast"?i.store.pending.length===0:(i.landed??0)>=n:!0});return r()?Promise.resolve({ok:!0}):new Promise(o=>{let n=d=>{clearTimeout(a),Bt.delete(i),o(d)},i=()=>{r()&&n({ok:!0})},a=setTimeout(()=>n({ok:!1,code:"timeout"}),e);Bt.add(i),He&&(!E||E.isWriter())&&ve.soon()})}var ps=ar;export{Jr as a,or as b,ns as c,rs as d,os as e,Pe as f,po as g,ar as h,ss as i,is as j,ls as k,bo as l,as as m,us as n,cs as o,fs as p,ds as q,qo as r,ps as s};
@@ -0,0 +1 @@
1
+ import{f as S}from"./c-YDH7Q3NY.js";import{a as ne,b as F,c as re,d as oe}from"./c-N326R2JD.js";import{a as H}from"./c-JAX2667S.js";import{b as le,c as ae}from"./c-KR4UW4KW.js";import"./c-Z36J63PP.js";import"./c-LZJPNR2W.js";import{b as ce,g as ie}from"./c-2M73252O.js";import{b as Z}from"./c-KKWLDOPM.js";import{b as se}from"./c-T4VO4OCB.js";import"./c-FILLTJA7.js";import"./c-QIX5BJYN.js";import"./c-VKEDWYDF.js";import{D as te}from"./c-CJZSLMVQ.js";import"./c-GQ6F6IDK.js";import"./c-2SPVQSHC.js";import"./c-5VYOWDTI.js";import{g as ee}from"./c-7VGZ7RU5.js";import"./c-4YSCRICO.js";import"./c-WYFDLITL.js";import"./c-UGHH4MB3.js";import{a as J}from"./c-HT33EQRN.js";import"./c-B2ZXPOS3.js";import"./c-TQEMVJCS.js";import"./c-3IQRECYS.js";import"./c-AYVOREBE.js";import{f as X}from"./c-IJUK2GPW.js";import"./c-7O6AFR65.js";import"./c-P7KNDG34.js";import"./c-CYWLPPUS.js";import"./c-N7JPUPGC.js";import"./c-35NBGMZB.js";import"./c-XQXZAO7N.js";import"./c-S7LK4KUE.js";import{i as Q}from"./c-GHBCCVG4.js";import"./c-HA6INT6J.js";import"./c-DCFSEJZG.js";import"./c-WRBKEJD4.js";import"./c-VHNSBD2M.js";var T="This spot changed again. Review the latest edit or download your copy.",ue="\uFFFC",C="",M=new Set("A ABBR B BDI BDO CITE CODE DATA DEL DFN EM FONT I INS KBD MARK Q S SAMP SMALL SPAN STRIKE STRONG SUB SUP TIME TT U VAR".split(" ")),ge=new Set(["BR","WBR","IMG"]),L=new Set("ADDRESS ARTICLE ASIDE AUDIO BLOCKQUOTE BODY CANVAS CAPTION CENTER COL COLGROUP DD DETAILS DIALOG DIR DIV DL DT FIELDSET FIGCAPTION FIGURE FOOTER FORM FRAME FRAMESET H1 H2 H3 H4 H5 H6 HEAD HEADER HGROUP HR HTML IFRAME LEGEND LI MAIN MATH MENU NAV NOSCRIPT OBJECT OL OPTGROUP OPTION P PRE SCRIPT SECTION SELECT STYLE SUMMARY SVG TABLE TBODY TD TEMPLATE TEXTAREA TFOOT TH THEAD TITLE TR UL VIDEO".split(" ")),ke=new Set("P H1 H2 H3 H4 H5 H6 DIV LI DD DT BLOCKQUOTE FIGCAPTION SUMMARY ADDRESS".split(" ")),we=new Set("P H1 H2 H3 H4 H5 H6 SUMMARY".split(" ")),Ne=/[\u001E]/,ve={subtree:!0,childList:!0,characterData:!0,characterDataOldValue:!0,attributes:!0,attributeOldValue:!0},k=e=>!!e&&e.nodeType===1,W=e=>k(e)&&M.has(e.tagName),B=e=>e.matches(le),z=e=>e.matches(ae),y=e=>e.localName==="template"&&e.content?e.content:e,w=e=>Array.prototype.indexOf.call(e.parentNode.childNodes,e),x=e=>e.getAttribute("data-id")||e.getAttribute("id")||null;function Ce(e){return!e.firstChild||e.textContent===""&&!e.querySelector("br,img,wbr")}function ye(e){if(e.nodeType===3)return!0;if(!k(e))return!1;if(B(e)||ge.has(e.tagName))return!0;if(!M.has(e.tagName))return!L.has(e.tagName);if(z(e))return!1;for(let n of e.childNodes)if(!ye(n))return!1;return!0}function Y(e){if(!ke.has(e.tagName)||B(e)||z(e))return!1;for(let n of e.childNodes)if(n.nodeType===8||!ye(n))return!1;return!0}function xe(e,n=document){for(let t of n.querySelectorAll("template")){if(t.content===e)return t;let r=xe(e,t.content);if(r)return r}return null}function m(e,n){for(let t=e;t;t=t.nodeType===11?xe(t):t.parentNode)if(t===n)return!0;return!1}var h=e=>m(e,document);function Ae(e,n){let t=e;for(let r of n)if(t=r==="content"?t.content:t.childNodes[r],!t)return null;return t}function D(e,n=new Set){if(k(e)){let t=x(e);t&&n.add(t)}if(e.nodeType===1||e.nodeType===11)for(let t of y(e).childNodes)D(t,n);return n}function Re(e){let n=document.createElement("template");return n.innerHTML=e,n.content}var Ie=e=>[...e.querySelectorAll("*")].some(n=>L.has(n.tagName));function Se(e){let n=[];for(let t=e;t.childNodes.length===1&&k(t.firstChild);t=t.firstChild)n.push(t.firstChild);return n}function De(e,n){let t=e.lastIndexOf("content");if(t<0)return document;let r=$(e.slice(0,t),n);return r&&r.content?r.content:null}function $(e,n){let t=Ae(n.root,e);if(!k(t))return null;let r=x(t),o=r?De(e,n):null;if(!o)return null;let s=[...o.querySelectorAll(t.localName)].filter(i=>i.namespaceURI===t.namespaceURI&&x(i)===r);return s.length===1?s[0]:null}function Me(e){let n=x(e);if(!n)return null;let t=[...document.querySelectorAll(e.localName)].filter(r=>r.namespaceURI===e.namespaceURI&&x(r)===n);return t.length===1?t[0]:null}function b(e,n,t=e?e.nodeType:1){if(!e)return null;for(let o of e.live)if(o.nodeType===t&&h(o))return o;if(t!==1)return null;if(e.local.length)return $(e.local[0],n);let r=e.live.find(k);return r?Me(r):null}function Pe(e){let n=e.live.find(k),t=n?x(n):null;return!!t&&![...document.querySelectorAll(n.localName)].some(r=>x(r)===t)}function _(e){let n=y(e),t={root:e,container:n,text:"",nodes:[],atoms:[],blocks:[]},r=s=>{for(let i of s){if(i.nodeType===3){if(!i.data)continue;t.nodes.push({node:i,s:t.text.length,e:t.text.length+i.data.length}),t.text+=i.data;continue}if(!k(i)||B(i))continue;if(Y(i)){t.text.length&&t.text[t.text.length-1]!==C&&(t.text+=C);let l={el:i,from:t.text.length,to:-1};t.blocks.push(l),r(i.childNodes),t.text+=C,l.to=t.text.length;continue}let c=M.has(i.tagName)&&Ce(i);if(ge.has(i.tagName)||!M.has(i.tagName)||z(i)||c){t.atoms.push({i:t.text.length,el:i}),t.text+=ue;continue}r(i.childNodes)}};if(r(n.childNodes),t.atoms.length===1&&t.atoms[0].el.tagName==="BR"&&!t.blocks.length&&t.text.replace(ue,"").trim()===""){let s=t.atoms[0].i;t.text=t.text.slice(0,s)+t.text.slice(s+1),t.atoms=[];for(let i of t.nodes)i.s>s&&(i.s--,i.e--)}return t}function fe(e,n,t){for(let s of e.nodes)if(t==="start"?s.s<=n&&n<s.e:s.s<n&&n<=s.e)return[s.node,n-s.s];let r=t==="start"?n:n-1,o=e.atoms.find(s=>s.i===r);if(o)return[o.el.parentNode,w(o.el)+(t==="start"?0:1)];if(e.text[r]===C){let s=e.blocks.find(c=>c.to===r+1);if(s)return t==="start"?[s.el,s.el.childNodes.length]:[s.el.parentNode,w(s.el)+1];let i=e.blocks.find(c=>c.from===r+1);if(i)return t==="start"?[i.el,0]:[i.el.parentNode,w(i.el)]}for(let s of e.nodes)if(s.s===n||s.e===n)return[s.node,n-s.s];return[e.container,n===0?0:e.container.childNodes.length]}function j(e,n){let t=document.createRange();return t.setStart(e,n),t.setEnd(e,n),t}function K(e,n,t){if(n.nodeType===3){let i=e.nodes.find(c=>c.node===n);return i?i.s+t:null}if(n!==e.container&&!m(n,e.root))return null;let r=j(n,t),o=e.text.length,s=(i,c)=>{try{return r.comparePoint(i,c)>=0}catch{return!1}};for(let i of e.nodes)s(i.node,0)&&(o=Math.min(o,i.s));for(let i of e.atoms)s(i.el.parentNode,w(i.el))&&(o=Math.min(o,i.i));return o}function Le(e,n){let t=e.slice(n.bs,n.be),r=0;for(;r<t.length&&r<n.text.length&&t[r]===n.text[r];)r++;let o=0;for(;o<t.length-r&&o<n.text.length-r&&t[t.length-1-o]===n.text[n.text.length-1-o];)o++;return{bs:n.bs+r,be:n.be-o,text:n.text.slice(r,n.text.length-o)}}function G(e,n,t,r){if(e===n)return{s:t,e:r};let o=0,s=0,i=H.diff(e,n).map(c=>Le(e,c)).sort((c,l)=>c.bs-l.bs);for(let c of i){if(c.bs===c.be&&!c.text)continue;let l=c.text.length-(c.be-c.bs);if(c.be<=t)o+=l;else{if(c.bs>=r)continue;if(c.bs>=t&&c.be<=r){if(Ne.test(e.slice(c.bs,c.be)+c.text))return null;s+=l}else return null}}return{s:t+o,e:r+o+s}}function Be(e,n,t){let r=e.liveScope;if(r&&r.startContainer&&m(r.startContainer,n)&&m(r.endContainer,n)){let s=K(t,r.startContainer,r.startOffset);if(s!==null)return s}if(Y(n))return 0;let o=e.merged.text?t.text.indexOf(e.merged.text):-1;return o>=0&&t.text.indexOf(e.merged.text,o+1)<0?o:null}function Te(e,n){let t=e.commonAncestorContainer;for(t.nodeType===3&&(t=t.parentNode);t&&t!==n;t=t.parentNode)if(k(t)&&Y(t))return t;return n}var Oe=(e,n)=>e.tagName===n.tagName&&e.attributes.length===n.attributes.length&&[...e.attributes].every(t=>n.getAttribute(t.name)===t.value);function de(e,n){let t=[];for(let r=k(e)?e:e.parentNode;r&&r!==n&&W(r);r=r.parentNode)t.unshift(r);return t}function Ue(e,n,t){let[r,o]=e;if(r.nodeType===3){if(o!==0&&o!==r.data.length)return e;[r,o]=[r.parentNode,w(r)+(o===0?0:1)]}let s=!1;for(;r!==n&&W(r)&&(o===0||o===r.childNodes.length)&&!t.some(i=>Oe(i,r));)[r,o]=[r.parentNode,w(r)+(o===0?0:1)],s=!0;return s?[r,o]:e}function He(e,n,t){let r=de(n.startContainer,t),o=de(n.endContainer,t);return r.length!==o.length||r.some((s,i)=>s!==o[i])||r.length>e.wrappers.length||r.some((s,i)=>!Oe(s,e.wrappers[i]))?!1:(e.peel=r.length,!e.wrappers.slice(e.peel).some(s=>r.some(i=>i.tagName===s.tagName)))}function Fe(e,n,t,r){let o=e.childNodes.length===1&&k(e.firstChild)?e.firstChild:null;if(!o||!L.has(o.tagName))return;let s=document.createRange();s.setStart(...n),s.setEnd(...t);let i=Te(s,r);i===r||i.tagName!==o.tagName||i.namespaceURI!==o.namespaceURI||x(i)!==x(o)||o.replaceWith(...o.childNodes)}function Ge(e){if(!e.parsed)return e.fragment;let n=e.parsed.childNodes;return n.length?n.length===1&&n[0].nodeType===3?n[0].data:null:""}function Ve(e,n){let t=e.recovery.text,r=e.recovery.subject,o=b(r,n,r.nodeType);if(!o)return null;let s=o.nodeType===3&&o.parentNode?.localName==="textarea"?o.parentNode:o,i=t.local.text.slice(t.local.start,t.local.end);if(Ne.test(t.merged.text.slice(t.merged.start,t.merged.end))||i.includes(C))return null;let c={kind:"text",id:e.id,ticket:n.ticket,key:r.key,fragment:t.local.fragment,encoding:t.encoding,local:i,ids:new Set,range:document.createRange()};if(o.nodeType===8){let g=G(t.merged.text,o.data,t.merged.start,t.merged.end);return g?(c.range.setStart(o,g.s),c.range.setEnd(o,g.e),{...c,root:o,owner:o,scope:o,s:g.s,e:g.e,before:o.data,bs:g.s,be:g.e}):null}if(s.localName==="textarea"){if(c.encoding!=="plain")return null;let g=G(t.merged.text,s.value,t.merged.start,t.merged.end);return g?(c.range.selectNodeContents(s),{...c,root:s,field:s,scope:s,f:{text:s.value},s:g.s,e:g.e,before:s.value,bs:g.s,be:g.e}):null}let l=_(o),u=Be(t,o,l);if(u===null)return null;let d=G(t.merged.text,l.text.slice(u),t.merged.start,t.merged.end);if(!d)return null;let N=u+d.s,v=u+d.e,A=fe(l,N,"start"),a=N===v?A:fe(l,v,"end");if(c.parsed=c.encoding==="html"?Re(c.fragment):null,c.parsed&&Fe(c.parsed,A,a,o),c.parsed&&Ie(c.parsed)||(c.wrappers=c.parsed?Se(c.parsed):[],c.parsed&&D(c.parsed,c.ids),c.plain=Ge(c),N===v&&(A=a=Ue(A,o,c.wrappers)),c.range.setStart(...A),c.range.setEnd(...a),!He(c,c.range,o)))return null;let f=Te(c.range,o),p=f===o?l:_(f),E=K(p,...A),U=N===v?E:K(p,...a);return E===null||U===null||p.text.slice(E,U)!==l.text.slice(N,v)?null:{...c,root:o,f:l,s:N,e:v,scope:f,before:p.text,bs:E,be:U}}function qe(e){if(e.owner){let o=e.owner.data;e.owner.data=o.slice(0,e.s)+e.fragment+o.slice(e.e),e.check=()=>e.owner.data.slice(e.s,e.s+e.fragment.length)===e.fragment&&h(e.owner);return}if(e.field){let o=e.field,s=o.value.slice(0,e.s)+e.fragment+o.value.slice(e.e);o.textContent=s,o.value!==s&&(o.value=s,e.wroteProperty=!0),o.hasAttribute("data-value")&&o.setAttribute("data-value",s),e.check=()=>h(o)&&o.value===s&&o.textContent===s;return}let n=e.range,t=n.startContainer;if(e.plain!==null&&t.nodeType===3&&n.endContainer===t){let o=n.startOffset;t.replaceData(o,n.endOffset-o,e.plain),e.check=()=>h(t)&&t.data.slice(o,o+e.plain.length)===e.plain;return}n.deleteContents();let r=[];if(e.fragment)if(e.parsed){let o=document.importNode(e.parsed,!0),s=Se(o);for(let i=0;i<e.peel;i++)s[i].replaceWith(...s[i].childNodes);r=[...o.childNodes],n.insertNode(o)}else r=[document.createTextNode(e.fragment)],n.insertNode(r[0]);e.check=()=>r.every(h)&&(e.parsed||!r.length||r[0].data===e.fragment)}function _e(e,n){let t=b(e.recovery.subject,n,1);if(!t)return null;let r=e.recovery.attribute,o={kind:"attr",id:e.id,ticket:n.ticket,key:e.recovery.subject.key,el:t,ns:r.namespaceURI,name:r.qualifiedName,local:r.localName,value:e.local??null,ids:new Set};try{o.ns===null?document.createAttribute(o.name):document.createAttributeNS(o.ns,o.name)}catch{return null}return o}var je=new Set(["hidden","submit","image","reset","button","checkbox","radio","file"]);function Ke(e,n){let t=document.createElement("input");return t.type=e.type,t.value=n,t.value}function We(e){let n=e.el;return e.ns!==null||n.namespaceURI!=="http://www.w3.org/1999/xhtml"?null:n.localName==="input"&&e.name==="checked"&&(n.type==="checkbox"||n.type==="radio")?["checked",e.value!==null]:n.localName==="input"&&e.name==="value"&&!je.has(n.type)?["value",Ke(n,e.value??"")]:n.localName==="option"&&e.name==="selected"?["selected",e.value!==null]:null}function ze(e){e.ns===null?e.value===null?e.el.removeAttribute(e.name):e.el.setAttribute(e.name,e.value):e.value===null?e.el.removeAttributeNS(e.ns,e.local):e.el.setAttributeNS(e.ns,e.name,e.value);let n=We(e);n&&e.el[n[0]]!==n[1]&&(e.el[n[0]]=n[1],e.wroteProperty=!0);let t=()=>e.ns===null?e.el.getAttribute(e.name):e.el.getAttributeNS(e.ns,e.local);e.check=()=>h(e.el)&&t()===e.value&&(!n||e.el[n[0]]===n[1])}function Ye(e,n){let t=e.recovery.structure,r=e.recovery.subject,o=b(r,n,r.nodeType),s={id:e.id,ticket:n.ticket,key:r.key,apply:n,ids:new Set},i=c=>c?b(c.parent,n,1):null;if(t.localAction==="deleted")return o?{...s,kind:"remove",node:o}:Pe(r)?{...s,kind:"done",check:()=>!0}:null;if(t.localAction==="moved"){let c=i(t.localPlacement);return!o||!c||o===c||m(c,o)?null:{...s,kind:"move",node:o,parent:c,placement:t.localPlacement}}if(t.localAction==="reordered"){if(!o||!t.localOrder)return null;let c=y(o),l=t.localOrder.map(u=>b(u,n,u.nodeType)).filter(u=>u&&u.parentNode===c);return l.length<2?null:{...s,kind:"reorder",parent:o,order:l}}if(t.localAction==="inserted"){let c=i(t.localPlacement);if(!c||o&&o.parentNode!==y(c))return null;if(t.fragmentKind!=="element")return typeof t.localFragment!="string"?null:{...s,kind:"run",node:o,parent:c,placement:t.localPlacement,text:t.localFragment,nodeType:r.nodeType};let l=r.local.length?Ae(n.root,r.local[0]):null;if(!k(l))return null;let u=o?o.tagName===l.tagName&&o.namespaceURI===l.namespaceURI?"morph":"replace":"place";return{...s,kind:"realize",node:o,parent:c,placement:t.localPlacement,src:l,mode:u,ids:D(l)}}return null}function V(e,n,t,r){let o=y(n),s=l=>{for(let u of l){let d=b(u,r,u.nodeType);if(d&&d!==e&&d.parentNode===o)return d}return null},i=s(t.before);if(i)return o.insertBefore(e,i);let c=s(t.after);return c?o.insertBefore(e,c.nextSibling):t.before.length?o.insertBefore(e,o.firstChild):o.appendChild(e)}function $e(e){let n=document.importNode(e.src,!0),t=document.createDocumentFragment();return t.append(n),e.apply.domain==="save"&&(se(t),ce(t),ie(t),Z(t)),n}function Qe(e,n){let t=e.filter(r=>r.kind==="move");for(let r of t)n.append(r.node);for(let r of e){if(r.kind==="run"){r.node?r.node.data=r.text:r.node=V(r.nodeType===8?document.createComment(r.text):document.createTextNode(r.text),r.parent,r.placement,r.apply),r.check=()=>h(r.node)&&r.node.parentNode===y(r.parent)&&r.node.data===r.text;continue}if(r.kind!=="realize")continue;let o=$e(r);r.mode==="morph"?H.morphElement(r.node,o,{ignore:B,scripts:{execute:!1}}):r.mode==="replace"?(r.node.replaceWith(o),r.node=o):r.node=V(o,r.parent,r.placement,r.apply),r.check=()=>h(r.node)&&r.node.parentNode===y(r.parent)}for(let r of t)V(r.node,r.parent,r.placement,r.apply),r.check=()=>r.node.parentNode===y(r.parent)&&h(r.node);for(let r of e){if(r.kind!=="reorder")continue;let o=y(r.parent),s=r.order.filter(u=>u.parentNode===o),i=s.slice(),c=[...o.childNodes].map(u=>s.includes(u)?i.shift():u),l=null;for(let u=c.length-1;u>=0;u--){let d=c[u];s.includes(d)&&d.nextSibling!==l&&o.insertBefore(d,l),l=d}r.check=()=>{let u=[...o.childNodes].filter(d=>s.includes(d));return u.length===s.length&&u.every((d,N)=>d===s[N])}}for(let r of e)r.kind==="remove"&&(r.node.remove(),r.check=()=>!h(r.node))}function O(e){return e.kind==="move"||e.kind==="remove"?[e.node]:e.kind==="realize"||e.kind==="run"?e.node?[e.node]:[]:[]}function R(e){return e.kind==="text"?[e.scope]:e.kind==="move"||e.kind==="reorder"?[e.parent]:(e.kind==="realize"||e.kind==="run")&&!e.node?[e.parent]:[]}var be=e=>e.kind==="attr"?[e.el]:[...O(e),...R(e)];function Xe(e,n){try{let t=j(e.startContainer,e.startOffset),r=j(n.startContainer,n.startOffset);return e.collapsed&&n.collapsed?t.comparePoint(n.startContainer,n.startOffset)===0:t.comparePoint(n.endContainer,n.endOffset)>0&&r.comparePoint(e.endContainer,e.endOffset)>0}catch{return!1}}function Je(e,n){try{return e.comparePoint(n.startContainer,n.startOffset)===0&&e.comparePoint(n.endContainer,n.endOffset)===0}catch{return!1}}function Ze(e,n){try{return e.intersectsNode(n)&&!m(e.commonAncestorContainer,n)}catch{return!1}}function I(e,n){if(!e.ids.size&&!n.ids.size)return!1;let t=s=>{let i=new Set;for(let c of be(s))D(c,i);return i},r=e.ids.size?null:t(e),o=t(n);return[...e.ids].some(s=>n.ids.has(s)||o.has(s))||[...n.ids].some(s=>(r||t(e)).has(s))}function me(e,n){return n.kind==="text"?Ze(n.range,e.el):O(n).some(t=>m(e.el,t))||n.ids.has(x(e.el))}function pe(e,n){return n.kind==="reorder"?m(n.parent,e.scope)||I(e,n):O(n).some(t=>m(t,e.scope)||m(e.scope,t))||R(n).some(t=>m(t,e.scope))?!0:I(e,n)}function he(e,n){return O(n).some(t=>e.order.includes(t)||m(e.parent,t))||R(n).includes(e.parent)?!0:I(e,n)}function q(e,n){if(e.kind==="done"||n.kind==="done")return!1;if(e.kind==="text"&&n.kind==="text")return Xe(e.range,n.range);if(e.kind==="attr"&&n.kind==="attr")return e.el===n.el&&e.ns===n.ns&&e.local===n.local;if(e.kind==="attr")return me(e,n);if(n.kind==="attr")return me(n,e);if(e.kind==="text")return pe(e,n);if(n.kind==="text")return pe(n,e);if(e.kind==="reorder"&&n.kind==="reorder")return e.parent===n.parent||I(e,n);if(e.kind==="reorder")return he(e,n);if(n.kind==="reorder")return he(n,e);for(let t of O(e))for(let r of O(n))if(m(t,r)||m(r,t))return!0;for(let t of O(e))for(let r of R(n))if(m(r,t))return!0;for(let t of O(n))for(let r of R(e))if(m(r,t))return!0;return I(e,n)}function et(e,n){return e.kind==="done"?!1:e.kind==="attr"?m(e.el,n.node):be(e).some(t=>m(t,n.node)||m(n.node,t))?!0:e.ids.size?(n.ids||(n.ids=D(n.node)),[...e.ids].some(t=>n.ids.has(t))):!1}function tt(e,n){return e.kind==="text"&&n.kind==="text"&&!e.field&&e.root===n.root&&Je(e.range,n.range)}function nt(e,n){let t=oe(e);return t?t.nodes:[rt(e,n)]}function rt(e,n){let t=e.recovery,r=t.subject;for(let c of t.text?[t.text.liveSpan,t.text.liveScope]:[])if(c&&c.startContainer&&h(c.startContainer)&&h(c.endContainer))return st(ot(c));let o=r?b(r,n,r.nodeType):null;if(o)return o;let s=t.structure&&t.structure.localPlacement?b(t.structure.localPlacement.parent,n,1):null;if(s)return s;let i=r&&r.local.length?r.local[0]:[];for(let c=i.length-1;c>0;c--){if(i[c-1]==="content")continue;let l=$(i.slice(0,c),n);if(l)return l}return document.documentElement}function ot(e){let n=new Set;for(let r=e.startContainer;r;r=r.parentNode)n.add(r);let t=e.endContainer;for(;t&&!n.has(t);)t=t.parentNode;return t.nodeType===1||t.nodeType===11?t:t.parentNode}function st(e){for(let n=e;n;n=n.parentNode)if(k(n)&&ke.has(n.tagName))return n;return e}function ct(e,n){let t=e.recovery;return t.applied===!1||t.unavailable?null:t.structure?Ye(e,n):t.text?Ve(e,n):t.attribute?_e(e,n):null}var P=()=>`${re()}|${S.hasPendingApply()?1:0}|${S.list().map(e=>e.id).join(",")}`;function Ee(){let e={ids:new Map,nested:new Set},n=r=>{for(let o of["id","data-id"]){let s=r.getAttribute(o);s&&e.ids.set(`${o} ${s}`,(e.ids.get(`${o} ${s}`)||0)+1)}},t=(r,o)=>{for(let s of y(r).children)n(s),o&&L.has(s.tagName)&&e.nested.add(s),t(s,o||W(s)||we.has(s.tagName))};return n(document.documentElement),t(document.documentElement,!1),e}function it(e){let n=Ee();for(let[r,o]of n.ids)if(o>1&&(e.before.ids.get(r)||0)<=1)return!1;for(let r of n.nested)if(!e.before.nested.has(r))return!1;let t=new Map;for(let r of e.ops)r.kind==="text"&&t.set(r.scope,[...t.get(r.scope)||[],r]);for(let[r,o]of t){let s=o[0].before;for(let c of[...o].sort((l,u)=>u.bs-l.bs))s=s.slice(0,c.bs)+c.local+s.slice(c.be);if((o[0].owner?r.data:o[0].field?r.value:_(r).text)!==s)return!1}return!0}function lt(){let e=new Map,n=c=>{for(let l of c.querySelectorAll("*"))e.set(l,[...l.attributes].map(u=>[u,u.value])),l.localName==="template"&&l.content&&n(l.content)};n(document);let t=[];for(let c of document.querySelectorAll("input, textarea"))t.push([c,"value",c.value]);for(let c of document.querySelectorAll("input"))t.push([c,"checked",c.checked]);for(let c of document.querySelectorAll("option"))t.push([c,"selected",c.selected]);let r=document.activeElement,o=null;try{r&&typeof r.selectionStart=="number"&&(o=[r.selectionStart,r.selectionEnd,r.selectionDirection])}catch{}let s=document.getSelection(),i=s&&s.rangeCount?[s.anchorNode,s.anchorOffset,s.focusNode,s.focusOffset]:null;return{attrs:e,controls:t,active:r,caret:o,selection:i}}function at(e,n){let t=e.attributes;return t.length===n.length&&n.every(([r,o],s)=>t[s]===r&&r.value===o)}function ut(e,n){let t=new Set;for(let s=e.length-1;s>=0;s--){let i=e[s];if(i.type==="characterData")i.target.data=i.oldValue;else if(i.type==="attributes")t.add(i.target);else{for(let c of i.addedNodes)c.parentNode===i.target&&i.target.removeChild(c);for(let c of i.removedNodes)i.target.insertBefore(c,i.nextSibling)}}for(let s of t){let i=n.attrs.get(s);if(!(!i||at(s,i))){for(let c of[...s.attributes])s.removeAttributeNode(c);for(let[c,l]of i)c.value=l,s.setAttributeNode(c)}}for(let[s,i,c]of n.controls)if(s[i]!==c)try{s[i]=c}catch{}let r=document.getSelection();r&&n.selection?h(n.selection[0])&&h(n.selection[2])&&r.setBaseAndExtent(...n.selection):r&&r.rangeCount&&r.removeAllRanges();let o=n.active;if(o&&o!==document.activeElement&&o!==document.body&&h(o)&&o.focus&&o.focus({preventScroll:!0}),n.caret&&document.activeElement===o)try{o.setSelectionRange(...n.caret)}catch{}}function ft(e){let n=t=>{e.observe(t,ve);for(let r of t.querySelectorAll("template"))r.content&&n(r.content)};n(document)}function dt(e){let n=new Set;for(let t of e)if(t.type==="characterData"){if(n.has(t.target))return!1;n.add(t.target)}return!0}function mt(e){let n=P(),t=new Map,r=new Map,o=[],s=new Set;for(let a of e){if(s.has(a))continue;s.add(a);let f=S.get(a);f&&(f.claimedBy||f.kind==="apply-incomplete"||f.kind==="json"||!f.recovery?t.set(a,T):o.push(f))}if(S.hasPendingApply()){for(let a of o)t.set(a.id,T);return{ops:[],covered:r,blocked:t,revision:n,before:null}}let i=[],c=a=>{let f=S.recoveryOf(a.id),p=f?ct(a,f):null;if(!p&&f)for(let E of nt(a,f))i.push({ticket:f.ticket,node:E});return p},l=[];for(let a of o){let f=c(a);f?l.push(f):t.set(a.id,T)}let u=[];for(let a of S.list())if(!s.has(a.id)){if(a.kind==="apply-incomplete")i.push({ticket:a.ticket,node:document.documentElement});else if(a.recovery){let f=c(a);f&&u.push(f)}}l.sort((a,f)=>f.ticket-a.ticket);let d=[],N=[],v=a=>{t.set(a.id,T),N.push(a)};for(let a of l){if(i.some(p=>p.ticket>a.ticket&&et(a,p))||u.some(p=>p.ticket>a.ticket&&q(p,a))||N.some(p=>q(p,a))){v(a);continue}let f=d.find(p=>q(p,a));if(!f){d.push(a);continue}if(tt(f,a)){r.set(a.id,f.id);continue}v(a),f.ticket===a.ticket&&(d.splice(d.indexOf(f),1),v(f))}let A=ne(i.filter(a=>d.some(f=>a.ticket>f.ticket)).map(a=>a.node));return{ops:d,covered:r,blocked:t,revision:P(),protectedWitnesses:A,before:Ee()}}function pt(e){if(e.revision!==P()||!F(e.protectedWitnesses||[])){for(let c of e.ops)e.blocked.set(c.id,T);for(let c of e.covered.keys())e.blocked.set(c,T);return[]}let n=lt(),t=window.clay?.undo;t?.pause?.();let r=new MutationObserver(()=>{}),o=document.createDocumentFragment(),s=[],i=!1;try{ft(r),r.observe(o,ve);let c=e.ops.filter(l=>l.kind==="text").sort((l,u)=>l.root===u.root?u.s-l.s||u.e-l.e:0);for(let l of c)qe(l);for(let l of e.ops)l.kind==="attr"&&ze(l);Qe(e.ops.filter(l=>l.kind!=="text"&&l.kind!=="attr"),o),s=r.takeRecords(),i=e.ops.every(l=>l.check())&&it(e)&&e.revision===P()&&F(e.protectedWitnesses||[])}catch(c){console.error("[clay] Revert to mine failed while writing and was undone",c)}finally{s=s.concat(r.takeRecords()),r.disconnect()}if(i)return dt(s)&&!e.ops.some(c=>c.wroteProperty)?t?.commitCaptured?.("Revert to mine"):t?.discardCaptured?.(),t?.resume?.(),[...e.ops.map(c=>c.id),...e.covered.keys()];try{ut(s,n)}finally{J.dropQueued(),t?.discardCaptured?.(),t?.resume?.()}for(let c of e.ops)e.blocked.set(c.id,T);for(let c of e.covered.keys())e.blocked.set(c,T);return[]}async function wt(e){await Promise.resolve();let n=mt(e),t=pt(n);Q();let r=null;return t.length&&(ee(),S.acknowledge(t,{reason:"reverted"}),X(),await Promise.resolve(),r=await te()),{revertedIds:t,blockedIds:[...n.blocked.keys()],saveResult:r}}export{T as BLOCKED,pt as applyRevert,mt as prepareRevert,wt as revertConflicts};
@@ -0,0 +1 @@
1
+ import{a,b}from"./c-KIPQJX4B.js";import"./c-QHWJ5ZIJ.js";import"./c-LFPHCXY3.js";import"./c-OIBUTDXI.js";import"./c-4JZDZFF6.js";import"./c-VAK7SG37.js";import"./c-46XYM55L.js";import"./c-NUHP2XDB.js";import"./c-VHNSBD2M.js";export{a as SURFACE_THEME,b as default};
@@ -0,0 +1 @@
1
+ import{b as L,c as M,d as _,f as N}from"./c-GB3JTV6E.js";import"./c-BWFVSBDF.js";import{a as D,b as x}from"./c-A7LS5UZW.js";import"./c-AYVOREBE.js";import"./c-7O6AFR65.js";import"./c-P7KNDG34.js";import"./c-CYWLPPUS.js";import"./c-N7JPUPGC.js";import"./c-HA6INT6J.js";import"./c-DCFSEJZG.js";import"./c-WRBKEJD4.js";import"./c-VHNSBD2M.js";var m="This computer",C=64,O=64,R=/^[\x20-\x7e]{1,128}$/;function X(){return typeof crypto<"u"&&typeof crypto.randomUUID=="function"?crypto.randomUUID():Math.random().toString(36).slice(2)+Date.now().toString(36)}function B(e){return typeof e!="string"?m:e.trim().slice(0,O)||m}function v(e){let r=_(e===void 0?null:e);return r.ok?r.target:null}function j(e,r){let c=null,f=-1;for(let l of r)l.editing===null||l.n<=f||(c=l.editing,f=l.n);return e.editing!==null&&e.n>=f?e.editing:c}function Y({scope:e=null,key:r=null,store:c=N,channel:f=null,label:l=m}={}){let S=B(l),w=r??"clay-live:"+(e??(typeof window<"u"?window.location.pathname:"/")),P="local:"+(e??w),b=X(),i=new Map,d=null,u=0,p=null,I=null,s=null,g=null,a=!1;function h(n){p&&p.post({type:D,from:b,...n})}function y(){let n={id:b,you:!0,n:u,editing:d},t=[];for(let o of i.values())t.push({id:o.id,you:!1,n:o.n,editing:o.editing});let E=[n,...t].sort((o,A)=>o.id<A.id?-1:o.id>A.id?1:0);c.receive({people:[{id:P,name:S,you:!0,canEdit:!0,editing:j(n,t),sessions:E}],anonymous:0})}function T(n){if(!n||n.from===b||typeof n.from!="string"||!R.test(n.from))return;let t=i.get(n.from);if(n.op==="bye"){t&&i.delete(n.from),y();return}if(n.op!=="hello"&&n.op!=="update"&&n.op!=="beat"||!t&&i.size>=C)return;let E=n.op==="beat"?t?t.editing:null:v(n.editing),o=Number.isSafeInteger(n.n)&&n.n>=0?n.n:0;t&&o<t.n||(i.set(n.from,{id:n.from,n:o,editing:E,seenAt:Date.now()}),n.op==="hello"&&!t&&h({op:"hello",n:u,editing:d,label:S}),y())}function U(){if(!a)return;h({op:"beat",n:u});let n=Date.now(),t=!1;for(let[E,o]of i)n-o.seenAt<=M||(i.delete(E),t=!0);t&&y()}function k(n){let t=n&&typeof n=="object"&&"editing"in n?n.editing:null;return d=v(t),u+=1,h({op:"update",n:u,editing:d}),y(),!0}return{sessionId:b,start(){return a||(a=!0,p=f??x(w),I=p.subscribe("presence",T),s=c.attachTransport({send:k}),h({op:"hello",n:u,editing:d,label:S}),y(),g=setInterval(U,L)),s},stop(){a&&(a=!1,g!==null&&clearInterval(g),g=null,h({op:"bye"}),i.clear(),I?.(),I=null,p=null,s?.detach(),s=null)}}}export{m as LOCAL_LABEL,C as MAX_SESSIONS,Y as localPresence};
@@ -0,0 +1 @@
1
+ var o=Object.freeze(["#6b4fa8","#2f6a9e","#9a6a1c","#a8463d","#2f7a69","#4f6178","#3f7d3a","#a2457a"]);function n(t){let e=0;for(let r of String(t))e=e*31+r.codePointAt(0)>>>0;return e%o.length}function a(t){return o[n(t)]}function f(t){return String(t).trim().split(/\s+/).filter(Boolean).slice(0,2).map(r=>Array.from(r)[0]).join("").toUpperCase()||"?"}export{n as a,a as b,f as c};