@panphora/clayjs 1.15.2 → 1.17.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (551) hide show
  1. package/README.md +4 -5
  2. package/THIRD-PARTY-NOTICES.md +16 -0
  3. package/compat/highlight-11.9.0.min.js +1213 -0
  4. package/compat/highlight-LICENSE +29 -0
  5. package/compat/journal-assets.lock.json +22 -0
  6. package/compat/overtype-2.6.1.min.js +116 -0
  7. package/compat/overtype-LICENSE +21 -0
  8. package/dist/all.js +90 -0
  9. package/dist/clay-dom.js +84 -0
  10. package/dist/clay-events.js +103 -0
  11. package/dist/clay-internals.js +85 -0
  12. package/dist/clay-options.js +93 -0
  13. package/dist/clay-router.js +98 -0
  14. package/dist/clay-ui.js +95 -0
  15. package/dist/clay-utils.js +84 -0
  16. package/dist/clay.js +146 -0
  17. package/dist/clay.standalone.js +84291 -57611
  18. package/dist/m/attrs/add-from-T5LJXFFI.js +1 -0
  19. package/dist/m/attrs/onaftersave-OKSWEJQF.js +1 -0
  20. package/dist/m/attrs/refetch-on-save-ZUE7PSCI.js +1 -0
  21. package/dist/m/attrs/save-freeze-MYNVXREN.js +1 -0
  22. package/dist/m/c-2AZDZWCK.js +1 -0
  23. package/dist/m/c-2SPVQSHC.js +1 -0
  24. package/dist/m/c-2YYDMLNZ.js +1 -0
  25. package/dist/m/c-336SGU5W.js +1 -0
  26. package/dist/m/c-33JJ6CBX.js +2 -0
  27. package/dist/m/c-3GJ4SDE2.js +1 -0
  28. package/dist/m/c-3H6BZDNJ.js +6 -0
  29. package/dist/m/c-3OWDMNJR.js +2 -0
  30. package/dist/m/c-3RUU4TPX.js +91 -0
  31. package/dist/m/c-3XIRD4NU.js +1 -0
  32. package/dist/m/c-46XYM55L.js +1 -0
  33. package/dist/m/c-4DFEJ2PO.js +3 -0
  34. package/dist/m/c-4JZDZFF6.js +1 -0
  35. package/dist/m/c-4L3BTFRK.js +1 -0
  36. package/dist/m/c-4Q2XTQ2N.js +2 -0
  37. package/dist/m/c-4WKFKEKF.js +1 -0
  38. package/dist/m/c-56QRZTZH.js +1 -0
  39. package/dist/m/c-5J4E7O4Y.js +4 -0
  40. package/dist/m/c-5LKDWQTL.js +19 -0
  41. package/dist/m/c-5QWQ7A5L.js +1 -0
  42. package/dist/m/c-5RJFTLSF.js +1 -0
  43. package/dist/m/c-5V3MOVJT.js +1 -0
  44. package/dist/m/c-5VYOWDTI.js +1 -0
  45. package/dist/m/c-5YIHJ3TJ.js +1 -0
  46. package/dist/m/c-6AZOGAPE.js +1 -0
  47. package/dist/m/c-6CRUUXOX.js +5 -0
  48. package/dist/m/c-6HMB24EV.js +1 -0
  49. package/dist/m/c-6KEVEQ7L.js +1 -0
  50. package/dist/m/c-6NC5I2TV.js +1 -0
  51. package/dist/m/c-74MGYWZF.js +1 -0
  52. package/dist/m/c-7DJDKPGL.js +1 -0
  53. package/dist/m/c-7OLLJPWP.js +1 -0
  54. package/dist/m/c-7SWMYKAI.js +1 -0
  55. package/dist/m/c-A3E3NIMC.js +1 -0
  56. package/dist/m/c-A7LS5UZW.js +1 -0
  57. package/dist/m/c-AMSNPOCX.js +1 -0
  58. package/dist/m/c-AQLFEATB.js +1 -0
  59. package/dist/m/c-B3JM5ZXC.js +1 -0
  60. package/dist/m/c-BBVGTQG7.js +1 -0
  61. package/dist/m/c-BPF2NSPV.js +1 -0
  62. package/dist/m/c-BQ6LOBEE.js +1 -0
  63. package/dist/m/c-BTDI4Y23.js +1 -0
  64. package/dist/m/c-BWFVSBDF.js +1 -0
  65. package/dist/m/c-BYTKL6UX.js +1 -0
  66. package/dist/m/c-CFHW5AMY.js +6 -0
  67. package/dist/m/c-CJ3A7ZKE.js +1 -0
  68. package/dist/m/c-CQHPGKX2.js +1 -0
  69. package/dist/m/c-CYWLPPUS.js +1 -0
  70. package/dist/m/c-CZUSOB7V.js +1 -0
  71. package/dist/m/c-DCFSEJZG.js +1 -0
  72. package/dist/m/c-DCXOXBF3.js +1 -0
  73. package/dist/m/c-DFS4XZJV.js +2 -0
  74. package/dist/m/c-DNENWY4O.js +1 -0
  75. package/dist/m/c-DNZ5IFM6.js +1 -0
  76. package/dist/m/c-E4LIR5X5.js +1 -0
  77. package/dist/m/c-EJTGYSLN.js +1 -0
  78. package/dist/m/c-EVCQ3BKA.js +1 -0
  79. package/dist/m/c-EZU56NQV.js +34 -0
  80. package/dist/m/c-FDNHHZY5.js +1 -0
  81. package/dist/m/c-FILLTJA7.js +1 -0
  82. package/dist/m/c-FRLHSY7E.js +1 -0
  83. package/dist/m/c-FROJUZMV.js +1 -0
  84. package/dist/m/c-G2JPKCTP.js +1 -0
  85. package/dist/m/c-GB6TU7WV.js +1 -0
  86. package/dist/m/c-GFJJEBTU.js +1 -0
  87. package/dist/m/c-GJAEGGXY.js +1 -0
  88. package/dist/m/c-GOWBDM6J.js +1 -0
  89. package/dist/m/c-GQ6F6IDK.js +1 -0
  90. package/dist/m/c-GSFIGKOP.js +1 -0
  91. package/dist/m/c-GY422N3Q.js +1 -0
  92. package/dist/m/c-H4LG442Q.js +1 -0
  93. package/dist/m/c-HA6INT6J.js +1 -0
  94. package/dist/m/c-HAWFNBYG.js +1 -0
  95. package/dist/m/c-HDDEEL77.js +1 -0
  96. package/dist/m/c-HFKUVACH.js +1 -0
  97. package/dist/m/c-HHDFCNHV.js +1 -0
  98. package/dist/m/c-HPURYVZS.js +2 -0
  99. package/dist/m/c-I2ZATQCD.js +2 -0
  100. package/dist/m/c-IEM4NTCS.js +1 -0
  101. package/dist/m/c-IJUK2GPW.js +1 -0
  102. package/dist/m/c-IW6GGOU2.js +1 -0
  103. package/dist/m/c-JAX2667S.js +6 -0
  104. package/dist/m/c-JDCX26UP.js +25 -0
  105. package/dist/m/c-JRKY44DK.js +1 -0
  106. package/dist/m/c-JU3NK25H.js +1 -0
  107. package/dist/m/c-KAU6E43D.js +1 -0
  108. package/dist/m/c-KBS3UV6B.js +1 -0
  109. package/dist/m/c-KGVGROZT.js +1 -0
  110. package/dist/m/c-KI7M4AY3.js +1 -0
  111. package/dist/m/c-KIPQJX4B.js +1 -0
  112. package/dist/m/c-KQ6TYJAP.js +135 -0
  113. package/dist/m/c-KU3ZFADW.js +1 -0
  114. package/dist/m/c-L4WQSC27.js +1 -0
  115. package/dist/m/c-LFPHCXY3.js +1 -0
  116. package/dist/m/c-LRPUO2MX.js +1 -0
  117. package/dist/m/c-LWLBHLVC.js +3 -0
  118. package/dist/m/c-LZJPNR2W.js +1 -0
  119. package/dist/m/c-M2L47S2X.js +7 -0
  120. package/dist/m/c-MFP2ZWD4.js +1 -0
  121. package/dist/m/c-MKSQ4Y57.js +1 -0
  122. package/dist/m/c-MTQHWQC3.js +1 -0
  123. package/dist/m/c-N326R2JD.js +1 -0
  124. package/dist/m/c-N7JPUPGC.js +1 -0
  125. package/dist/m/c-NRPJEVJS.js +1 -0
  126. package/dist/m/c-NUFFJVVJ.js +1 -0
  127. package/dist/m/c-NUHP2XDB.js +1 -0
  128. package/dist/m/c-NUHSPT5P.js +1 -0
  129. package/dist/m/c-O72HVYSA.js +1 -0
  130. package/dist/m/c-OCSZ4QGN.js +1 -0
  131. package/dist/m/c-OIBUTDXI.js +1 -0
  132. package/dist/m/c-OIDRZKAF.js +1 -0
  133. package/dist/m/c-OW5QIGG3.js +1 -0
  134. package/dist/m/c-P7KNDG34.js +1 -0
  135. package/dist/m/c-PGRCK73F.js +1 -0
  136. package/dist/m/c-PQ5LK6QE.js +993 -0
  137. package/dist/m/c-PS5ARVWR.js +9 -0
  138. package/dist/m/c-PZ4XEPUP.js +2 -0
  139. package/dist/m/c-Q622NS2Y.js +1 -0
  140. package/dist/m/c-Q7NQD65V.js +1 -0
  141. package/dist/m/c-QH63LQOS.js +1 -0
  142. package/dist/m/c-QHIWXHRO.js +1 -0
  143. package/dist/m/c-QHWJ5ZIJ.js +1 -0
  144. package/dist/m/c-QICP2YR5.js +1 -0
  145. package/dist/m/c-QJ4OM3G6.js +1 -0
  146. package/dist/m/c-QNKREOL6.js +1 -0
  147. package/dist/m/c-R3L7ZJGB.js +2 -0
  148. package/dist/m/c-R7IWVINQ.js +1 -0
  149. package/dist/m/c-RM7J7BV2.js +1 -0
  150. package/dist/m/c-RSMOODDU.js +1 -0
  151. package/dist/m/c-RVMWGXEJ.js +1 -0
  152. package/dist/m/c-RYUXUUBX.js +1 -0
  153. package/dist/m/c-S4ZEH46B.js +9 -0
  154. package/dist/m/c-S7H2DRCB.js +1 -0
  155. package/dist/m/c-S7LK4KUE.js +1 -0
  156. package/dist/m/c-SDAXDM2D.js +1 -0
  157. package/dist/m/c-SGIA4IEQ.js +188 -0
  158. package/dist/m/c-SMBZG5X4.js +1 -0
  159. package/dist/m/c-SMGU7RT3.js +235 -0
  160. package/dist/m/c-SPIORRYS.js +1 -0
  161. package/dist/m/c-SWLRT66R.js +1 -0
  162. package/dist/m/c-SZGYW5HT.js +1 -0
  163. package/dist/m/c-TCCA5BZN.js +2 -0
  164. package/dist/m/c-TCJTVAFN.js +1 -0
  165. package/dist/m/c-TJ6WOJL3.js +67 -0
  166. package/dist/m/c-TQEMVJCS.js +1 -0
  167. package/dist/m/c-TRS6TM6O.js +1 -0
  168. package/dist/m/c-TYLXX4NF.js +21 -0
  169. package/dist/m/c-U62OB4BT.js +1 -0
  170. package/dist/m/c-U6YWUAR3.js +8 -0
  171. package/dist/m/c-UDCSU5G5.js +2 -0
  172. package/dist/m/c-UDUUJPFZ.js +1 -0
  173. package/dist/m/c-UGHH4MB3.js +1 -0
  174. package/dist/m/c-UL2YUY52.js +1 -0
  175. package/dist/m/c-VAK7SG37.js +1 -0
  176. package/dist/m/c-VDSS4K3Z.js +1 -0
  177. package/dist/m/c-VE6ZMYMC.js +1 -0
  178. package/dist/m/c-VG5XIN4T.js +1 -0
  179. package/dist/m/c-VHM5XQHK.js +1 -0
  180. package/dist/m/c-VHNSBD2M.js +1 -0
  181. package/dist/m/c-VI5RMSVY.js +1 -0
  182. package/dist/m/c-VKEDWYDF.js +1 -0
  183. package/dist/m/c-VRZN56XY.js +1 -0
  184. package/dist/m/c-W5MCHEGA.js +1 -0
  185. package/dist/m/c-WDC5GVKU.js +1 -0
  186. package/dist/m/c-WN5AY3OZ.js +1 -0
  187. package/dist/m/c-WNYBLIOZ.js +1 -0
  188. package/dist/m/c-WRBKEJD4.js +1 -0
  189. package/dist/m/c-WWXIDH4O.js +28 -0
  190. package/dist/m/c-WYFDLITL.js +1 -0
  191. package/dist/m/c-XCNTK76U.js +1 -0
  192. package/dist/m/c-XMS6DPBR.js +1 -0
  193. package/dist/m/c-XN6MBKI6.js +67 -0
  194. package/dist/m/c-XPELB6E5.js +1 -0
  195. package/dist/m/c-XQXZAO7N.js +1 -0
  196. package/dist/m/c-Y5HBBIQ4.js +1 -0
  197. package/dist/m/c-ZE46QDIH.js +1 -0
  198. package/dist/m/c-ZUCOKOHT.js +1 -0
  199. package/dist/m/c-ZVPVXTJF.js +4 -0
  200. package/dist/m/c-ZVRKXKM7.js +1 -0
  201. package/dist/m/c-ZWIOJGMT.js +1 -0
  202. package/dist/m/core/admin-attrs-QHOKPJ7W.js +1 -0
  203. package/dist/m/core/autosave-HRYGUWV6.js +1 -0
  204. package/dist/m/core/conflict-notice-6MROJN2L.js +1 -0
  205. package/dist/m/core/draft-mode-WSQAT67S.js +1 -0
  206. package/dist/m/core/host-permission-FNXVEFNE.js +1 -0
  207. package/dist/m/core/is-edit-mode-KTWA3O5N.js +1 -0
  208. package/dist/m/core/persist-JFYRHMRJ.js +3 -0
  209. package/dist/m/core/recovery-FLTCC2OC.js +1 -0
  210. package/dist/m/core/save-HQZ4S667.js +1 -0
  211. package/dist/m/core/save-core-KGQWFUNH.js +1 -0
  212. package/dist/m/core/snapshot-EGQZNT45.js +1 -0
  213. package/dist/m/core/unsaved-warning-IDJLD66H.js +1 -0
  214. package/dist/m/dom/all-APS5ZSKP.js +1 -0
  215. package/dist/m/dom/dom-helpers-L7OSR6S4.js +1 -0
  216. package/dist/m/events/index-RN2JNGBV.js +1 -0
  217. package/dist/m/internals/index-PVXGPUDA.js +1 -0
  218. package/dist/m/lib/cache-bust-MUMFXZK6.js +1 -0
  219. package/dist/m/lib/region-policy-SB2AWVG5.js +1 -0
  220. package/dist/m/loader-S4I7GKXR.js +1 -0
  221. package/dist/m/manifest-4C419D67.js +1 -0
  222. package/dist/m/manifest-edit-B077F288.js +1 -0
  223. package/dist/m/manifest.json +3988 -0
  224. package/dist/m/options/options-EJMS3K24.js +1 -0
  225. package/dist/m/page/editor-NNJA4OKD.js +202 -0
  226. package/dist/m/plugins/ai-edit-QN4PMMNL.js +6 -0
  227. package/dist/m/plugins/bind-text-NX46N5UV.js +1 -0
  228. package/dist/m/plugins/cms-HP3LSTPN.js +2293 -0
  229. package/dist/m/plugins/demo-RM5IR6AO.js +1 -0
  230. package/dist/m/plugins/derive-UAAA4V4S.js +1 -0
  231. package/dist/m/plugins/indicator-URDBBOQO.js +1 -0
  232. package/dist/m/plugins/live-HFWD4OIH.js +1 -0
  233. package/dist/m/plugins/menu-3HIEQSI6.js +138 -0
  234. package/dist/m/plugins/message-LQ6EDH4V.js +1 -0
  235. package/dist/m/plugins/page-JOKB6XPR.js +2 -0
  236. package/dist/m/plugins/page-view-NXOJHNW6.js +1 -0
  237. package/dist/m/plugins/people-SGPJKANK.js +1 -0
  238. package/dist/m/plugins/quickcrop-QNY3PKLD.js +26 -0
  239. package/dist/m/plugins/quickcrop-QNY3PKLD.js.LEGAL.txt +7 -0
  240. package/dist/m/plugins/richclay-NRQDSWX6.js +517 -0
  241. package/dist/m/plugins/richclay-NRQDSWX6.js.LEGAL.txt +1 -0
  242. package/dist/m/plugins/sortable-GWT4PWDV.js +1 -0
  243. package/dist/m/plugins/source-4ZRSAIYM.js +1 -0
  244. package/dist/m/plugins/undo-VDA5P7FH.js +1 -0
  245. package/dist/m/plugins/unsent-HJFLQJ2O.js +1 -0
  246. package/dist/m/plugins/upgrade-W7FG5VFG.js +1 -0
  247. package/dist/m/plugins/upload-WLYKK6TL.js +1 -0
  248. package/dist/m/plugins/visitor-drafts-LIDY7NH6.js +21 -0
  249. package/dist/m/plugins/visitor-drafts-owner-ZXCKBZE7.js +1 -0
  250. package/dist/m/plugins/wire-4N6GYAF6.js +1 -0
  251. package/dist/m/reader-core-DXYCURFF.js +68 -0
  252. package/dist/m/route/route-KOCZSEGN.js +1 -0
  253. package/dist/m/sync/live-sync-J7VMYTKS.js +1 -0
  254. package/dist/m/ui/index-3JLVI27O.js +1 -0
  255. package/dist/m/utils/index-4TJCVLT7.js +1 -0
  256. package/dist/m/vendor/Sortable.vendor-A755ITLN.js +3 -0
  257. package/dist/m/vendor/Sortable.vendor-A755ITLN.js.LEGAL.txt +1 -0
  258. package/dist/m/vendor/sap-core.vendor-A7BMUYZT.js +6 -0
  259. package/dist/offline-manifest.json +4034 -0
  260. package/dist/page/themes/light-1.css +430 -0
  261. package/dist/server/core.cjs +23748 -22855
  262. package/dist/server/offline-runtime.cjs +4954 -0
  263. package/dist/server/offline-runtime.mjs +4923 -0
  264. package/dist/server/rooms.mjs +9 -0
  265. package/docs/guide.md +1078 -669
  266. package/entries/all.js +2 -0
  267. package/entries/clay-data.js +1 -1
  268. package/entries/clay-dom.js +2 -0
  269. package/entries/clay-events.js +2 -0
  270. package/entries/clay-internals.js +2 -0
  271. package/entries/clay-options.js +2 -0
  272. package/entries/clay-router.js +2 -0
  273. package/entries/clay-ui.js +2 -0
  274. package/entries/clay-utils.js +2 -0
  275. package/entries/clay.js +2 -0
  276. package/entries/sap.js +6 -6
  277. package/fonts/ibm-plex-mono-LICENSE +93 -0
  278. package/fonts/ibm-plex-mono-latin-300-normal.woff2 +0 -0
  279. package/fonts/ibm-plex-mono-latin-400-italic.woff2 +0 -0
  280. package/fonts/ibm-plex-mono-latin-400-normal.woff2 +0 -0
  281. package/fonts/ibm-plex-mono-latin-500-normal.woff2 +0 -0
  282. package/fonts/ibm-plex-mono-latin-600-normal.woff2 +0 -0
  283. package/fonts/ibm-plex-sans-LICENSE +93 -0
  284. package/fonts/ibm-plex-sans-latin-400-normal.woff2 +0 -0
  285. package/fonts/ibm-plex-sans-latin-500-normal.woff2 +0 -0
  286. package/fonts/ibm-plex-sans-latin-600-normal.woff2 +0 -0
  287. package/fonts/ibm-plex.css +71 -0
  288. package/fonts/inter-LICENSE +93 -0
  289. package/fonts/inter-cyrillic-ext-wght-normal.woff2 +0 -0
  290. package/fonts/inter-cyrillic-wght-normal.woff2 +0 -0
  291. package/fonts/inter-greek-ext-wght-normal.woff2 +0 -0
  292. package/fonts/inter-greek-wght-normal.woff2 +0 -0
  293. package/fonts/inter-latin-ext-wght-normal.woff2 +0 -0
  294. package/fonts/inter-latin-wght-normal.woff2 +0 -0
  295. package/fonts/inter-vietnamese-wght-normal.woff2 +0 -0
  296. package/fonts/inter.css +62 -0
  297. package/fonts/newsreader-LICENSE +93 -0
  298. package/fonts/newsreader-latin-ext-opsz-normal.woff2 +0 -0
  299. package/fonts/newsreader-latin-opsz-normal.woff2 +0 -0
  300. package/fonts/newsreader-vietnamese-opsz-normal.woff2 +0 -0
  301. package/fonts/newsreader.css +26 -0
  302. package/fonts/work-sans-LICENSE +93 -0
  303. package/fonts/work-sans-latin-wght-normal.woff2 +0 -0
  304. package/fonts/work-sans.css +8 -0
  305. package/package.json +20 -3
  306. package/packed-contract.json +1 -0
  307. package/src/attrs/add-from.js +27 -4
  308. package/src/attrs/save-freeze.js +7 -52
  309. package/src/core/admin-attrs.js +119 -12
  310. package/src/core/admin-contenteditable.js +12 -10
  311. package/src/core/admin-inputs.js +14 -15
  312. package/src/core/admin-onclick.js +2 -0
  313. package/src/core/autosave.js +74 -21
  314. package/src/core/boot-phase.js +2 -1
  315. package/src/core/conflict-download.js +19 -23
  316. package/src/core/conflict-notice-ui.js +1173 -0
  317. package/src/core/conflict-notice.js +140 -697
  318. package/src/core/download.js +32 -0
  319. package/src/core/edit-mode.js +147 -14
  320. package/src/core/etag.js +30 -12
  321. package/src/core/host-meta.js +90 -8
  322. package/src/core/host-permission.js +29 -0
  323. package/src/core/is-edit-mode.js +145 -12
  324. package/src/core/mode-key.js +125 -0
  325. package/src/core/mode-lifecycle.js +544 -0
  326. package/src/core/mode-receipt.js +30 -0
  327. package/src/core/mode-refusal.js +13 -0
  328. package/src/core/mode-resources.js +52 -0
  329. package/src/core/mode-support.js +82 -0
  330. package/src/core/mode-switch.js +259 -0
  331. package/src/core/mode-transition.js +112 -0
  332. package/src/core/page-data-write.js +305 -0
  333. package/src/core/page-data.js +26 -227
  334. package/src/core/page-format-wire.js +4 -0
  335. package/src/core/page-format.js +58 -0
  336. package/src/core/persist.js +37 -9
  337. package/src/core/preserve-authored.js +114 -0
  338. package/src/core/recovery.js +772 -0
  339. package/src/core/runtime-url.js +105 -0
  340. package/src/core/save-core.js +113 -12
  341. package/src/core/save-replace.js +72 -0
  342. package/src/core/save-size-notice.js +134 -0
  343. package/src/core/save-size.js +140 -0
  344. package/src/core/save.js +806 -119
  345. package/src/core/snapshot.js +159 -11
  346. package/src/core/source-map.js +157 -9
  347. package/src/core/unsaved-warning.js +14 -4
  348. package/src/core/upgrade-run.js +408 -0
  349. package/src/core/version.js +18 -0
  350. package/src/lib/assets.js +30 -0
  351. package/src/lib/autosave-debug-gate.js +50 -0
  352. package/src/lib/autosave-scheduler.js +140 -0
  353. package/src/lib/boot-imports.js +8 -0
  354. package/src/lib/derived.js +3 -1
  355. package/src/lib/dirty-gate.js +15 -0
  356. package/src/lib/doc-storage.js +33 -0
  357. package/src/lib/effect.js +9 -4
  358. package/src/lib/mutation.js +4 -2
  359. package/src/lib/offline-runtime.js +226 -0
  360. package/src/lib/preload.js +48 -0
  361. package/src/lib/root-attrs.js +1 -1
  362. package/src/lib/trash.js +18 -0
  363. package/src/lib/undo/capture-move.js +152 -0
  364. package/src/live/local-channel.js +61 -0
  365. package/src/live/local-lane.js +60 -9
  366. package/src/live/server-lane.js +6 -3
  367. package/src/loader-logic.js +76 -15
  368. package/src/loader.js +218 -30
  369. package/src/page/adopt-boot.js +76 -22
  370. package/src/page/adopt.js +25 -4
  371. package/src/page/awareness.js +230 -0
  372. package/src/page/blocks.js +113 -6
  373. package/src/page/blocksel.js +20 -4
  374. package/src/page/board-face.js +13 -0
  375. package/src/page/board-panel.js +5 -17
  376. package/src/page/board-style.js +2 -13
  377. package/src/page/board-view.js +1 -11
  378. package/src/page/board-views.js +3 -0
  379. package/src/page/board.js +2 -2
  380. package/src/page/boot-pack.js +26 -0
  381. package/src/page/boot.js +237 -0
  382. package/src/page/chart-tables.js +11 -0
  383. package/src/page/chart.js +6 -10
  384. package/src/page/checklist.js +1 -1
  385. package/src/page/checkpoint-proof.js +289 -0
  386. package/src/page/chrome.js +431 -63
  387. package/src/page/csv-import.js +17 -2
  388. package/src/page/document-title-dom.js +52 -0
  389. package/src/page/document-title-runtime.js +90 -0
  390. package/src/page/document-title.js +12 -0
  391. package/src/page/drag.js +48 -13
  392. package/src/page/drop.js +2 -1
  393. package/src/page/editor.js +399 -90
  394. package/src/page/emoji-data.js +162 -0
  395. package/src/page/feature-loader.js +72 -0
  396. package/src/page/features/board.js +21 -0
  397. package/src/page/features/chart.js +11 -0
  398. package/src/page/features/code.js +13 -0
  399. package/src/page/features/dates.js +180 -0
  400. package/src/page/features/emoji.js +187 -0
  401. package/src/page/features/media.js +290 -0
  402. package/src/page/features/mentions.js +188 -0
  403. package/src/page/features/registry.js +28 -0
  404. package/src/page/features/table.js +383 -0
  405. package/src/page/{tool-view.js → features/tool.js} +33 -2
  406. package/src/page/format-codec.js +215 -0
  407. package/src/page/format-command.js +9 -0
  408. package/src/page/format-gate.js +179 -0
  409. package/src/page/format-host.js +54 -0
  410. package/src/page/format-level.js +157 -0
  411. package/src/page/format-native-commands.js +142 -0
  412. package/src/page/format-native.js +42 -0
  413. package/src/page/highlight-slot.js +23 -0
  414. package/src/page/highlight.js +30 -16
  415. package/src/page/history-intent.js +78 -0
  416. package/src/page/inline.js +45 -28
  417. package/src/page/items.js +67 -14
  418. package/src/page/link.js +1 -0
  419. package/src/page/markdown.js +112 -3
  420. package/src/page/media-views.js +3 -0
  421. package/src/page/media.js +33 -245
  422. package/src/page/mention-picker.js +99 -0
  423. package/src/page/merge.js +1 -1
  424. package/src/page/outline-cache.js +11 -0
  425. package/src/page/placeholder.js +27 -7
  426. package/src/page/projection.js +240 -51
  427. package/src/page/reader-patch.js +306 -0
  428. package/src/page/recover.js +1 -1
  429. package/src/page/rich/page-tool.js +1 -4
  430. package/src/page/runtime-owner.js +27 -0
  431. package/src/page/save-projection.js +46 -4
  432. package/src/page/save-states.js +1 -1
  433. package/src/page/schema.js +47 -0
  434. package/src/page/table-rect-key.js +3 -0
  435. package/src/page/table-select.js +4 -3
  436. package/src/page/table-style.js +1 -1
  437. package/src/page/table-views.js +3 -0
  438. package/src/page/table.js +8 -293
  439. package/src/page/themes/content.css +25 -1
  440. package/src/page/themes/light-1.css +163 -2
  441. package/src/page/themes/light-1.source.css +269 -0
  442. package/src/page/tool-capability.js +3 -0
  443. package/src/page/tool-views.js +3 -0
  444. package/src/page/view-hooks.js +32 -0
  445. package/src/page/view.js +390 -107
  446. package/src/page/ybind/awareness.js +172 -0
  447. package/src/page/ybind/binding.js +40 -5
  448. package/src/page/ybind/bridge.js +50 -47
  449. package/src/page/ybind/decode.js +52 -19
  450. package/src/page/ybind/doc.js +27 -2
  451. package/src/page/ybind/group.js +12 -3
  452. package/src/page/ybind/index.js +2 -0
  453. package/src/page/ybind/lineage.js +71 -0
  454. package/src/page/ybind/marks.js +26 -1
  455. package/src/page/ybind/migrate.js +48 -13
  456. package/src/page/ybind/moves.js +32 -21
  457. package/src/page/ybind/positions.js +50 -0
  458. package/src/page/ybind/provider.js +97 -24
  459. package/src/page/ybind/recovery-proof.js +191 -0
  460. package/src/page/ybind/recovery-replay.js +488 -0
  461. package/src/page/ybind/tokens.js +15 -6
  462. package/src/page/ybind/walk.js +10 -3
  463. package/src/page/ybind/writer.js +48 -4
  464. package/src/plugins/ai-edit.js +167 -32
  465. package/src/plugins/bind-text.js +218 -0
  466. package/src/plugins/cms.js +93 -0
  467. package/src/plugins/indicator.js +57 -5
  468. package/src/plugins/live.js +319 -35
  469. package/src/plugins/menu/claygoo.svg.js +1 -0
  470. package/src/plugins/menu/seo-head.js +323 -0
  471. package/src/plugins/menu/seo.js +849 -0
  472. package/src/plugins/menu.js +425 -0
  473. package/src/plugins/page-view.js +131 -0
  474. package/src/plugins/page.js +1131 -270
  475. package/src/plugins/people.js +158 -31
  476. package/src/plugins/richclay.js +119 -9
  477. package/src/plugins/sortable.js +370 -60
  478. package/src/plugins/source.js +189 -366
  479. package/src/plugins/undo.js +289 -19
  480. package/src/plugins/unsent.js +132 -0
  481. package/src/plugins/upgrade-run.js +1 -0
  482. package/src/plugins/upgrade.js +210 -0
  483. package/src/plugins/upload-task.js +571 -0
  484. package/src/plugins/upload-ui.js +265 -0
  485. package/src/plugins/upload.js +34 -153
  486. package/src/plugins/visitor-drafts/inert.js +32 -0
  487. package/src/plugins/visitor-drafts/intro.js +2 -1
  488. package/src/plugins/visitor-drafts/owner-chip.js +3 -0
  489. package/src/plugins/visitor-drafts/prompt.js +2 -2
  490. package/src/plugins/visitor-drafts-owner.js +85 -0
  491. package/src/plugins/visitor-drafts.js +31 -42
  492. package/src/plugins/wire.js +82 -1
  493. package/src/reader-core.js +26 -0
  494. package/src/recovery/conflicts.js +287 -0
  495. package/src/recovery/identity.js +154 -0
  496. package/src/recovery/store.js +792 -0
  497. package/src/recovery/undo.js +257 -0
  498. package/src/server/checkpoint/index.js +68 -4
  499. package/src/server/offline-runtime/index.js +214 -0
  500. package/src/server/rooms/index.js +2 -1
  501. package/src/server/rooms/live-data-rooms.js +2 -2
  502. package/src/server/rooms/page-admission.js +33 -0
  503. package/src/server/rooms/page-lineage.js +56 -0
  504. package/src/server/rooms/page-rebase.js +11 -5
  505. package/src/server/rooms/page-state.js +2 -0
  506. package/src/server/rooms/page-write-admission.js +9 -3
  507. package/src/source/session.js +705 -0
  508. package/src/sync/conflict-revert.js +5 -4
  509. package/src/sync/conflicts-edit.js +119 -0
  510. package/src/sync/conflicts-facade.js +49 -0
  511. package/src/sync/conflicts.js +99 -1
  512. package/src/sync/editing-marker.js +37 -6
  513. package/src/sync/editing-sender.js +8 -1
  514. package/src/sync/live-sync-edit.js +63 -0
  515. package/src/sync/live-sync.js +364 -119
  516. package/src/sync/local-presence.js +187 -0
  517. package/src/sync/merge-declarations.js +10 -0
  518. package/src/sync/merge-engine.js +12 -0
  519. package/src/sync/presence-store.js +412 -0
  520. package/src/sync/presence-target.js +243 -0
  521. package/src/sync/presence.js +72 -41
  522. package/src/sync/saved-handoff.js +200 -0
  523. package/src/sync/saved-stream.js +544 -0
  524. package/src/sync/version-guard.js +92 -0
  525. package/src/sync/wire-profile.js +81 -0
  526. package/src/ui/bevel-controls.js +2 -8
  527. package/src/ui/page-scheme.js +7 -0
  528. package/src/ui/skins/cms.js +1 -1
  529. package/src/ui/theme-config.js +150 -0
  530. package/src/ui/theme.js +6 -138
  531. package/src/ui/toast-lazy.js +11 -0
  532. package/src/vendor/LICENSES-optional.md +253 -0
  533. package/src/vendor/highlight.vendor.js +3 -0
  534. package/src/vendor/hljs-bash.vendor.js +2 -0
  535. package/src/vendor/hljs-css.vendor.js +2 -0
  536. package/src/vendor/hljs-javascript.vendor.js +2 -0
  537. package/src/vendor/hljs-json.vendor.js +2 -0
  538. package/src/vendor/hljs-python.vendor.js +2 -0
  539. package/src/vendor/hljs-xml.vendor.js +2 -0
  540. package/src/vendor/hyper-html-api-data.vendor.js +1 -1
  541. package/src/vendor/hyper-html-api-upgrade.vendor.js +5 -0
  542. package/src/vendor/hyper-morph-identity.vendor.js +2 -0
  543. package/src/vendor/hyper-morph-json.vendor.js +3 -0
  544. package/src/vendor/hyper-morph.vendor.js +6 -6
  545. package/src/vendor/hyper-undo.vendor.js +1 -1
  546. package/src/vendor/hypercms.vendor.js +169 -84
  547. package/src/vendor/marked.vendor.js +68 -0
  548. package/src/vendor/overtype.vendor.js +994 -0
  549. package/src/vendor/richclay.vendor.js +17 -17
  550. package/src/vendor/sap-core.vendor.js +5 -5
  551. package/src/vendor/sap-ownership.vendor.js +11 -7
@@ -0,0 +1,25 @@
1
+ import{A as U,B as z,C as W,D as y,E,F as m,G as f,H as V,I as N,J as O,M as j,N as x,c as D,d as A,e as g,h as T,s as v,u as S,w as H,x as L,y as X,z as M}from"./c-3H6BZDNJ.js";import"./c-4DFEJ2PO.js";import"./c-6CRUUXOX.js";import"./c-336SGU5W.js";import"./c-6KEVEQ7L.js";import{A as q}from"./c-5J4E7O4Y.js";import{H as _,V as K,m as F}from"./c-WWXIDH4O.js";import"./c-4L3BTFRK.js";import"./c-5V3MOVJT.js";import"./c-VHNSBD2M.js";var G=`
2
+ .page-editor .page-table { position: relative; }
3
+ .page-table td { position: relative; }
4
+ .page-table th { position: relative; }
5
+ .page-table td.is-cell-selected { background: var(--page-block-selected); }
6
+ .page-editor.has-cell-rect .page-table td ::selection, .page-editor.has-cell-rect .page-table td::selection { background: transparent; }
7
+ .page-editor.has-cell-rect .page-table td { caret-color: transparent; }
8
+ .page-table table.is-sized { table-layout: fixed; min-width: 0; }
9
+ .page-table table.is-sized th, .page-table table.is-sized td { min-width: 0; overflow-wrap: anywhere; }
10
+ .page-table-resize { position: absolute; top: 0; bottom: 0; inset-inline-end: -4px; width: 8px; z-index: 2; cursor: col-resize; touch-action: none; }
11
+ .page-table-resize:hover, .page-table-resize:active, .page-table-resize:focus-visible { background: var(--page-accent); opacity: 0.4; }
12
+ .page-table-add-row, .page-table-add-col { position: absolute; z-index: 1; border: 0; padding: 0; background: var(--page-chrome-bg-rest); color: var(--page-chrome-ink-rest); font: inherit; line-height: 1; cursor: pointer; opacity: 0; transition: opacity 120ms; }
13
+ .page-table-add-row { left: 0; right: 0; top: 100%; height: 14px; border-radius: 0 0 6px 6px; }
14
+ .page-table-add-col { top: 0; bottom: 0; left: 100%; width: 14px; border-radius: 0 6px 6px 0; }
15
+ .page-table:hover > .page-table-add-row, .page-table:hover > .page-table-add-col, .page-table-add-row:focus-visible, .page-table-add-col:focus-visible { opacity: 1; }
16
+ .page-table-add-row:hover, .page-table-add-col:hover { background: var(--page-chrome-bg-moved); color: var(--page-ink-soft); }
17
+ .page-table-date { position: absolute; inset-inline-start: 0; top: 100%; z-index: 3; font: inherit; color: var(--page-pop-ink); background: var(--page-pop-bg); border: 1px solid var(--page-pop-line); border-radius: 6px; padding: 4px 6px; box-shadow: var(--page-pop-shadow); }
18
+ @media (max-width: 560px) {
19
+ .page-table-date { min-height: 44px; }
20
+ .page-table-resize { display: none; }
21
+ .page-table-add-row, .page-table-add-col { position: static; display: inline-block; width: 50%; height: 44px; border-radius: 0; opacity: 1; border-block-start: 1px solid var(--page-rule); }
22
+ .page-table-add-row::after { content: " Row"; }
23
+ .page-table-add-col::after { content: " Column"; }
24
+ }
25
+ `;var R=F.nodes,k=c=>_(c.attrs.cols),J=["fontFamily","fontSize","fontWeight","fontStyle","letterSpacing"],Q=c=>{let t=c.ownerDocument,e=t.defaultView.getComputedStyle(c),i=t.createElement("span");for(let o of J)i.style[o]=e[o];Object.assign(i.style,{position:"absolute",visibility:"hidden",whiteSpace:"pre",left:"-9999px",top:"0"}),i.textContent=c.textContent,t.body.append(i);let s=i.getBoundingClientRect().width;return i.remove(),Math.ceil(s)},Y=c=>Number.isFinite(c)&&c>0?Math.round(Math.min(E,Math.max(y,c))):null,P=(c,t,e)=>{let i=c.createElement("button");return i.type="button",i.textContent=t,i.setAttribute("aria-label",t),i.addEventListener("click",e),i},$=class{constructor(t,e,i){this.node=t,this.view=e,this.getPos=i,this.preview=null,this.focusCol=null;let s=e.dom.ownerDocument;this.dom=s.createElement("div"),this.dom.className="page-table",this.dom.dataset.id=t.attrs.id??"",this.dom.setAttribute("role","group"),this.dom.setAttribute("aria-label","Table");let o=s.createElement("div");o.className="page-table-scroll";let n=s.createElement("table");this.table=n,this.colgroup=s.createElement("colgroup"),this.header=s.createElement("thead"),this.header.contentEditable="false",this.contentDOM=s.createElement("tbody"),n.append(this.colgroup,this.header,this.contentDOM),o.append(n);let a=P(s,"+",()=>this.append("row"));a.className="page-table-add-row",a.setAttribute("aria-label","Add a row"),a.title="Add a row";let d=P(s,"+",()=>this.append("column"));d.className="page-table-add-col",d.setAttribute("aria-label","Add a column"),d.title="Add a column";for(let l of[a,d])l.contentEditable="false",l.addEventListener("mousedown",h=>h.preventDefault());this.dom.append(o,a,d),this.render()}append(t){let e=this.getPos();if(e==null)return;let i=t==="row"?[this.node.childCount-1,0]:[0,this.node.child(0).childCount-1];x(this.view,e,...i),(t==="row"?L(!0):M(!0))(this.view.state,this.view.dispatch),this.view.focus()}widths(){let t=k(this.node).some(i=>this.node.attrs.cols[i].width),e=k(this.node).map(i=>{let s=this.dom.ownerDocument.createElement("col");s.dataset.col=i;let o=this.node.attrs.cols[i].width;return t&&(s.style.width=`${o??m}px`),s});this.colgroup.replaceChildren(...e),this.table.classList.toggle("is-sized",t),this.table.style.width=t?`${k(this.node).reduce((i,s)=>i+(this.node.attrs.cols[s].width??m),0)}px`:""}resizer(t,e,i,s){let o=this.dom.ownerDocument,n=o.createElement("span");return n.className="page-table-resize",n.dataset.col=t,n.setAttribute("role","separator"),n.setAttribute("aria-orientation","vertical"),n.setAttribute("aria-label",`Resize column ${i.name||`Column ${s+1}`}`),n.setAttribute("aria-valuemin",String(y)),n.setAttribute("aria-valuemax",String(E)),n.setAttribute("aria-valuenow",String(this.widthOfColumn(t))),n.tabIndex=0,n.title="Drag or use the arrow keys to resize, double-click to fit",n.addEventListener("mousedown",a=>a.preventDefault()),n.addEventListener("focus",()=>{this.focusCol=t}),n.addEventListener("blur",()=>this.commitWidth(t)),n.addEventListener("keydown",a=>this.resizeKey(a,t)),n.addEventListener("keyup",a=>{["ArrowLeft","ArrowRight","Home","End"].includes(a.key)&&this.commitWidth(t)}),n.addEventListener("pointerdown",a=>{a.preventDefault();let d=a.clientX,l=this.node.attrs.cols[t].width??(e.getBoundingClientRect().width||m),h=this.dom.ownerDocument.defaultView.getComputedStyle?.(this.dom).direction==="rtl",b=l,u=r=>{b=Y(l+(h?d-r.clientX:r.clientX-d))??l;let w=[...this.colgroup.children].find(p=>p.dataset.col===t);w&&(this.table.classList.add("is-sized"),w.style.width=`${b}px`)},C=()=>{o.removeEventListener("pointermove",u),o.removeEventListener("pointerup",C),b!==l?this.command(f(t,b)):this.widths()};o.addEventListener("pointermove",u),o.addEventListener("pointerup",C)}),n.addEventListener("dblclick",a=>{a.preventDefault(),this.fit(t)}),n}widthOfColumn(t){return this.node.attrs.cols[t]?.width??m}handleFor(t){return[...this.header.querySelectorAll(".page-table-resize")].find(e=>e.dataset.col===t)??null}resizeKey(t,e){let i=t.shiftKey?50:10,s=this.preview?.col===e?this.preview.width:this.widthOfColumn(e),o;if(t.key==="ArrowLeft")o=s-i;else if(t.key==="ArrowRight")o=s+i;else if(t.key==="Home")o=y;else if(t.key==="End")o=E;else if(t.key==="Enter"){t.preventDefault(),this.commitWidth(e);return}else if(t.key==="Escape"){t.preventDefault(),this.cancelWidth(e);return}else return;t.preventDefault(),this.previewWidth(e,Math.min(E,Math.max(y,Math.round(o))))}previewWidth(t,e){let i=this.preview?.col===t?this.preview.base:this.widthOfColumn(t);this.preview={col:t,width:e,base:i};let s=[...this.colgroup.children].find(n=>n.dataset.col===t);s&&(this.table.classList.add("is-sized"),s.style.width=`${e}px`);let o=this.handleFor(t);o&&o.setAttribute("aria-valuenow",String(e))}cancelWidth(t){this.preview?.col===t&&(this.preview=null),this.widths(),this.handleFor(t)?.setAttribute("aria-valuenow",String(this.widthOfColumn(t)))}commitWidth(t){let e=this.preview;if(!e||e.col!==t)return!1;this.preview=null;let i=this.getPos(),s=i==null?null:this.view.state.doc.nodeAt(i),o=s?.type===R.table&&s.attrs.id===this.node.attrs.id?s.attrs.cols[t]:null;if(!o)return this.widths(),!1;if((o.width??m)===e.width)return this.widths(),!1;let n={...s.attrs.cols,[t]:{...o,width:e.width}};return this.view.dispatch(q(this.view.state.tr.setNodeMarkup(i,null,{...s.attrs,cols:n}))),!0}command(t){let e=this.getPos();if(e==null)return!1;x(this.view,e,0,0);let i=t(this.view.state,this.view.dispatch);return this.view.focus(),i}fit(t){let e=0;for(let s of this.contentDOM.querySelectorAll("td"))s.dataset.col===t&&(e=Math.max(e,Q(s.firstElementChild??s)));let i=[...this.header.querySelectorAll("th")].find(s=>s.dataset.col===t)?.querySelector("button");return e=Math.max(e,i?.scrollWidth??0),this.command(f(t,e+24))}render(t=null){let e=this.dom.ownerDocument,i=e.createElement("tr"),s=D(this.node);this.widths();for(let[o,n]of k(this.node).entries()){let a=this.node.attrs.cols[n],d=s[n],l=e.createElement("th");l.dataset.col=n,l.dataset.kind=d,this.node.attrs.sort?.col===n&&l.setAttribute("aria-sort",this.node.attrs.sort.dir==="asc"?"ascending":"descending");let h=P(e,a.name||`Column ${o+1}`,b=>{b.preventDefault();let u=r=>()=>{x(this.view,this.getPos(),0,o),r(this.view.state,this.view.dispatch),this.view.focus()},C=()=>{let r=e.createElement("input");r.type="text",r.value=a.name,r.setAttribute("aria-label","Column name");let w=p=>{p&&r.value.trim()?u(V(n,r.value))():r.isConnected&&(r.replaceWith(h),h.focus())};r.addEventListener("keydown",p=>{p.key==="Enter"&&(p.preventDefault(),w(!0)),p.key==="Escape"&&(p.preventDefault(),w(!1)),p.stopPropagation()}),h.replaceWith(r),r.focus(),r.select()};v(this.view,h,[{label:"Rename",run:C,focus:!1},{label:"Kind \u25B8",icon:A[d],hint:a.kind?g[d]:`Auto: ${g[d]}`,run:()=>v(this.view,h,[{label:"Auto",icon:a.kind?"":A[d],hint:a.kind?"":g[d],checked:!a.kind,run:u(N(n,"auto"))},...K.map(r=>({label:g[r],icon:A[r],checked:a.kind===r,run:u(N(n,r))}))]),focus:!1},{label:"Sort ascending",icon:"\u2191",run:u(O(n,"asc"))},{label:"Sort descending",icon:"\u2193",run:u(O(n,"desc"))},{label:"Width \u25B8",icon:"\u2194",hint:a.width?`${a.width}px`:"Auto",focus:!1,run:()=>v(this.view,h,[{label:"Wider",icon:"+",run:()=>this.command(f(n,(a.width??(l.getBoundingClientRect().width||m))+40))},{label:"Narrower",icon:"\u2212",run:()=>this.command(f(n,(a.width??(l.getBoundingClientRect().width||m))-40))},{label:"Fit to content",icon:"\u2194",run:()=>this.fit(n)},...a.width?[{label:"Reset width",icon:"\xD7",run:()=>this.command(f(n,null))}]:[]])},{label:"Chart this table",icon:"\u{1F4CA}",run:()=>{let r=this.getPos();return T(this.view).then(({insertChartAfterTable:w})=>w(this.view,r))}},{label:"Insert column left",icon:"+",run:u(M(!1))},{label:"Insert column right",icon:"+",run:u(M(!0))},...o>0?[{label:"Move left",icon:"\u2190",run:u(W(-1))}]:[],...o<k(this.node).length-1?[{label:"Move right",icon:"\u2192",run:u(W(1))}]:[],{label:"Select column",icon:"\u25A6",run:()=>S(this.view,this.getPos(),"col",o)},{label:"Delete column",icon:"\xD7",run:u(U)}])});h.dataset.kind=d,l.append(h,this.resizer(n,l,a,o)),i.append(l)}this.header.replaceChildren(i),t&&this.handleFor(t)?.focus()}update(t){if(t.type!==R.table)return!1;let e=this.focusCol&&this.dom.contains(this.dom.ownerDocument.activeElement),i=this.preview;this.node=t,this.dom.dataset.id=t.attrs.id??"",this.preview=null,this.render(e?this.focusCol:null),i&&t.attrs.cols[i.col]&&(t.attrs.cols[i.col].width??m)===i.base&&this.previewWidth(i.col,i.width);let s=D(t);for(let o of this.contentDOM.querySelectorAll("td[data-col]"))o.dataset.kind=s[o.dataset.col]??"text";return!0}stopEvent(t){return!!t.target.closest?.("thead")}ignoreMutation(t){return!this.contentDOM.contains(t.target)}},B=class{constructor(t,e,i){this.node=t,this.view=e,this.getPos=i,this.date=null;let s=e.dom.ownerDocument;this.dom=s.createElement("td"),H.set(this.dom,this),this.dom.dataset.col=t.attrs.col,this.contentDOM=s.createElement("span"),this.dom.append(this.contentDOM);let o=s.createElement("button");o.type="button",o.className="page-table-row-menu",o.textContent="Row actions",o.setAttribute("aria-label","Row actions"),o.contentEditable="false",o.addEventListener("click",()=>{let n=this.view.state.doc.resolve(this.getPos()),a=n.before(1),d=n.index(1),l=b=>()=>{x(this.view,a,d,0),b(this.view.state,this.view.dispatch),this.view.focus()},h=n.node(1).childCount;v(this.view,o,[{label:"Insert above",icon:"+",run:l(L(!1))},{label:"Insert below",icon:"+",run:l(L(!0))},...d>0?[{label:"Move up",icon:"\u2191",run:l(z(-1))}]:[],...d<h-1?[{label:"Move down",icon:"\u2193",run:l(z(1))}]:[],{label:"Select row",icon:"\u25A6",run:()=>S(this.view,a,"row",d)},{label:"Delete row",icon:"\xD7",run:l(X)}])}),this.menu=o,this.dom.append(o),this.update(t)}update(t){if(t.type!==R.table_cell)return!1;this.node=t;let e=this.view.state.doc.resolve(this.getPos()),i=e.node(1);return this.dom.dataset.kind=D(i)[t.attrs.col]??"text",this.menu.hidden=e.index(2)!==0,this.dom.dataset.kind!=="date"&&this.closeDate(),!0}openDate(){if(this.date||this.dom.dataset.kind!=="date")return!1;let e=this.dom.ownerDocument.createElement("input");e.type="date",e.className="page-table-date",e.contentEditable="false",e.setAttribute("aria-label","Pick a date");let i=this.node.textContent.trim();/^\d{4}-\d{2}-\d{2}$/.test(i)&&(e.value=i),e.addEventListener("change",()=>{e.value&&j(this.view,this.getPos(),e.value),this.closeDate(),this.view.focus()}),e.addEventListener("keydown",s=>{s.key==="Escape"&&(s.preventDefault(),this.closeDate(),this.view.focus()),s.stopPropagation()}),e.addEventListener("blur",()=>this.closeDate()),this.date=e,this.dom.append(e);try{e.showPicker?.()}catch{}return!0}closeDate(){let t=this.date;this.date=null,t?.isConnected&&t.remove()}destroy(){this.closeDate()}stopEvent(t){return!!t.target.closest?.(".page-table-row-menu, .page-table-date")}ignoreMutation(t){return!this.contentDOM.contains(t.target)}};function ct(){return{id:"table",nodeViews:{table:(c,t,e)=>new $(c,t,e),table_cell:(c,t,e)=>new B(c,t,e)},css:G,dispose(){}}}export{B as TableCellView,$ as TableView,ct as createFeature};
@@ -0,0 +1 @@
1
+ import{f as a}from"./c-HA6INT6J.js";var T="path",p="edit",u="draft";function k(){let t=globalThis.crypto?.randomUUID?.();return t||`wr-${Date.now().toString(36)}-${Math.random().toString(36).slice(2)}`}function f(t=globalThis.document?.documentElement){if(!t||typeof t.getAttribute!="function")return null;for(let n of a){let o=t.getAttribute(n);if(o)return{kind:n,identity:o}}return null}function x(t){let n=String(t||"/").split(/[?#]/)[0];return{kind:T,identity:n||"/"}}function E(t,n){return!t||!n||!t.host||!t.documentId||!t.principalId?!1:t.host===n.host&&t.documentId===n.documentId&&t.principalId===n.principalId}function A({mode:t=p,root:n=globalThis.document?.documentElement,location:o=globalThis.window?.location,pathname:m,origin:h,writerId:y}={}){let c=t===u?u:p,l=m??o?.pathname??"/",s=h??o?.origin??"",I=x(l),e=c===u?null:f(n),r=e??I,d=[s,r.kind,r.identity,c];return{origin:s,pathname:l,mode:c,scope:d,writerId:y||k(),identityKind:r.kind,identity:r.identity,check(g=globalThis.document?.documentElement){let i=f(g);return e?i?i.kind!==e.kind||i.identity!==e.identity?{ok:!1,code:"identity-mismatch",captured:e,found:i,scope:d}:{ok:!0,code:null}:{ok:!1,code:"identity-missing",captured:e,scope:d}:i?{ok:!0,code:null,bound:i,scope:d}:{ok:!0,code:null}}}}export{T as a,p as b,u as c,k as d,f as e,x as f,E as g,A as h};
@@ -0,0 +1 @@
1
+ import{a,b,c,d,e,f,g,h}from"./c-DCXOXBF3.js";import"./c-VRZN56XY.js";import"./c-OW5QIGG3.js";import"./c-BPF2NSPV.js";import"./c-P7KNDG34.js";import"./c-CYWLPPUS.js";import"./c-N7JPUPGC.js";import"./c-HA6INT6J.js";import"./c-WRBKEJD4.js";import"./c-VHNSBD2M.js";export{b as conditionalSaves,f as forgetEtag,e as forgetRepresentedEtag,a as lastSeenEtag,g as learnConditionalSaves,c as recordEtag,d as representedEtag,h as seedEtag};
@@ -0,0 +1 @@
1
+ import{a as R}from"./c-2SPVQSHC.js";import{a as C,d as P}from"./c-VRZN56XY.js";import{c as v}from"./c-BPF2NSPV.js";var q="/_/upload",F=12e4,O={document:["document"],local:["local"],"document-or-local":["document","local"]},H=new Set(["network","timeout","error","bad-response","aborted"]);function j(e){return e?e.state==="cancelled"?!0:e.state!=="failed"?!1:H.has(e.result?.code??null):!1}var _=new Set,D=()=>[..._].some(e=>e.state==="uploading");async function B(){let e=[..._].filter(t=>t.state==="uploading").map(t=>t.result);return e.length?(await Promise.allSettled(e),{ok:!D()}):{ok:!0}}var S=R({id:"upload",isPending:D,flush:B}),E=null,M=()=>E?.admitted!==!1,$=0;function z(){return $+=1,`upload-${$}`}function d(e,t,s,g,m=[]){return{ok:e,msg:t,msgType:s,code:g,uploads:m}}function x(e,t){typeof document>"u"||document.dispatchEvent(new CustomEvent(`clay:upload-${e}`,{detail:t}))}function L(e){if(e==null)return null;let t=O[e];if(!t)throw new TypeError(`Unknown requiredAccess: ${String(e)}. Use one of ${Object.keys(O).join(", ")}.`);return t}async function Y(e,{onProgress:t,signal:s,requiredAccess:g,taskId:m=z(),attempt:b=1}={}){let i=L(g);if(!e)return d(!1,"No file to upload","error","bad-request");let l=()=>d(!1,"Upload cancelled","error","aborted");if(!M())return l();let a;try{a=await P(b>1?{fresh:!0}:void 0)}catch{a={extensions:[],document:null}}if(s?.aborted)return l();if(C(a)==="failed")return d(!1,"Couldn't reach the host to upload","error","network");if(!a.extensions.includes("upload"))return d(!1,"This host does not store uploaded files","skipped","unsupported");if(s?.aborted)return l();if(!a.document?.upload)return d(!1,"You can't add files to this document","error","forbidden");if(s?.aborted)return l();if(i){let k=a.document.upload.access;if(!i.includes(k))return d(!1,"This host does not keep uploaded files private to this document","error","privacy-unsupported")}if(s?.aborted)return l();let f=a.document?.upload?.maxBytes;return typeof f=="number"&&f>0&&e.size>f?d(!1,`That file is larger than this host accepts (${f} bytes)`,"error","too-large"):N(e,{onProgress:t,signal:s,taskId:m,attempt:b,requiredAccess:i})}function J(e,t){if(!t||!e.ok)return e;let s=e.uploads||[];return s.every(m=>t.includes(m?.access))?e:d(!1,"The host stored the file without the access it promised","error","privacy-unsupported",s)}function N(e,{onProgress:t,signal:s,taskId:g,attempt:m,requiredAccess:b}={}){let i=Array.isArray(b)?b:L(b);return new Promise(l=>{let a={taskId:g,attempt:m},f=v(),k=f?`${q}/${f}`:q,A=new URL(k,window.location.origin).href,n=null,y=!1,p=null;function w(r,c,o){return y?!1:(y=!0,p!==null&&clearTimeout(p),s&&s.removeEventListener("abort",T),c&&x(c,{...o,...a}),l(r),!0)}function h(r,c,o){return w(d(!1,r,c,o),"error",{msg:r,code:o})}function U(){let r=d(!1,"Upload timed out","unknown","timeout");w(r,"error",{msg:r.msg,code:r.code})&&n.abort()}function T(){w(d(!1,"Upload cancelled","skipped","aborted"))&&n?.abort()}try{n=new XMLHttpRequest}catch{return h("This browser could not start the upload","error","error")}if(p=setTimeout(U,F),s){if(s.aborted)return T();s.addEventListener("abort",T)}n.upload.addEventListener("progress",r=>{if(y||!r.lengthComputable)return;let c={loaded:r.loaded,total:r.total,percent:Math.round(r.loaded/r.total*100)};if(x("progress",{...c,...a}),t)try{t(c)}catch{}}),n.addEventListener("load",()=>{if(y)return;let r={};try{r=JSON.parse(n.responseText||"{}")}catch{r={}}if(n.status>=200&&n.status<300){let o=Array.isArray(r.uploads)?r.uploads:[];if(!o.length||typeof o[0]?.url!="string")return h("The host accepted the file but did not say where it put it","error","bad-response");let u=J(d(!0,r.msg??"Uploaded",r.msgType||"success",r.code??null,o),i);return u.ok?w(u,"done",{uploads:o}):w(u,"error",{msg:u.msg,code:u.code,uploads:o})}let c=r.code||Q[n.status]||"error";return h(r.msg||`Upload failed (${n.status})`,"error",c)}),n.addEventListener("error",()=>h("Upload failed","error","network")),n.addEventListener("abort",()=>w(d(!1,"Upload cancelled","skipped","aborted")));try{n.open("POST",A,!0),n.withCredentials=!1,n.setRequestHeader("Document-URL",window.location.href);let r=new FormData;r.append("file",e,e.name||"upload"),x("start",{name:e.name||null,size:e.size??null,...a}),n.send(r)}catch{h("The upload could not be sent","error","error")}})}function V(e,t={}){if(!e)throw new TypeError("clay.upload.start needs a file");L(t.requiredAccess);let s=z(),g=t.requiredAccess??null,m=t.onProgress||null,b=e,i=0,l="uploading",a=0,f=null,k=null,A=null,n=null,y=null,p=!1,w=0,h=new Set;function U(){return{id:s,attempt:i,state:l,loaded:a,total:f,percent:k,result:A}}function T(){if(!h.size)return;let o=U();for(let u of[...h])try{u(o)}catch{}}function r(){i+=1;let o=i;return n=new AbortController,l="uploading",a=0,f=null,k=null,A=null,y=Y(b,{requiredAccess:g,signal:n.signal,taskId:s,attempt:o,onProgress:u=>{if(!(p||o!==i)&&(a=u.loaded,f=u.total,k=u.percent,T(),m))try{m(u)}catch{}}}).then(u=>(!p&&o===i&&o!==w&&(A=u,l=u.ok?"succeeded":u.code==="aborted"?"cancelled":"failed",T()),S.changed(),u)),T(),S.changed(),y}let c={id:s,get attempt(){return i},get state(){return l},get file(){return b},get result(){return y},snapshot:U,subscribe(o){if(typeof o!="function")throw new TypeError("subscribe needs a function");if(p)return()=>{};h.add(o);try{o(U())}catch{}return()=>h.delete(o)},cancel(){p||(l==="uploading"&&(w=i,l="cancelled",A=d(!1,"Upload cancelled","error","aborted"),T(),S.changed()),n?.abort())},retry(){return p||!M()||!j(U())?y:r()},dispose(){p||(p=!0,n?.abort(),h.clear(),b=null,_.delete(c),S.changed())}};return _.add(c),r(),c}function W(){return{id:"clay:upload",order:340,prepare(e={}){let t={admitted:e.initial===!0};return E=t,{enable(){E===t&&(t.admitted=!0)},quiesce(){E===t&&(t.admitted=!1)},resume(){E===t&&(t.admitted=!0)},dispose(){E===t&&(t.admitted=!1)}}}}}var Q={402:"payment-required",413:"too-large",415:"unsupported-type",401:"unauthorized",403:"forbidden",404:"not-found"};export{j as a,L as b,Y as c,V as d,W as e};
@@ -0,0 +1 @@
1
+ var g="page-mention-picker",f="page-menu-item",h="No people to mention",x=0;function y(i=[],p=null){let s=new Map;for(let n of i??[])n&&typeof n.id=="string"&&s.set(n.id,n);for(let n of Array.isArray(p)?p:[])n&&typeof n.id=="string"&&s.set(n.id,n);return[...s.values()]}var v=(i,p)=>{let s=String(p??"").trim().toLowerCase();return s?i.filter(n=>String(n.name??"").toLowerCase().includes(s)):i};function b({document:i=globalThis.document,onPick:p=()=>{},label:s="Mention a person",empty:n=h}={}){let c=`page-mentions-${++x}`,e=i.createElement("div");e.className=`page-menu ${g}`,e.id=c,e.setAttribute("role","listbox"),e.setAttribute("aria-label",s),e.hidden=!0;let o=[],l=0,d=()=>{if(!o.length){let t=i.createElement("div");t.className="page-menu-title",t.textContent=n,e.replaceChildren(t);return}e.replaceChildren(...o.map((t,a)=>{let r=i.createElement("button");return r.type="button",r.className=`${f}${a===l?" is-active":""}`,r.id=`${c}-${a}`,r.dataset.index=String(a),r.setAttribute("role","option"),r.setAttribute("aria-selected",String(a===l)),r.textContent=String(t.name??""),r.addEventListener("mousedown",m=>m.preventDefault()),r.addEventListener("click",()=>p(a)),r}))},u=t=>{e.style.setProperty("--page-pop-x",`${t.x}px`),e.style.setProperty("--page-pop-y",`${t.y}px`)};return{el:e,show:(t,a=null)=>{o=t,l=0,d(),a&&u(a),e.hidden=!1},move:t=>{o.length&&(l=(l+t+o.length)%o.length,d())},activeId:()=>o.length?`${c}-${l}`:null,index:()=>l,personAt:t=>o[t]??null,hide:()=>{e.hidden=!0,o=[],l=0,e.replaceChildren()},destroy(){this.hide(),e.remove()}}}export{y as a,v as b,b as c};
@@ -0,0 +1 @@
1
+ import{a as h}from"./c-FDNHHZY5.js";import{c as g}from"./c-KBS3UV6B.js";import{l as k}from"./c-3H6BZDNJ.js";import"./c-4DFEJ2PO.js";import"./c-6CRUUXOX.js";import"./c-336SGU5W.js";import"./c-6KEVEQ7L.js";import{A as y}from"./c-5J4E7O4Y.js";import{b as m,m as d}from"./c-WWXIDH4O.js";import"./c-4L3BTFRK.js";import"./c-5V3MOVJT.js";import"./c-VHNSBD2M.js";var b=e=>String(e).padStart(2,"0");function A(e){if(typeof e!="string"||!/^\d{4}-\d{2}-\d{2}$/.test(e))return!1;let s=new Date(`${e}T12:00:00Z`);return Number.isFinite(s.valueOf())&&s.toISOString().slice(0,10)===e}var $=(e=new Date)=>`${e.getFullYear()}-${b(e.getMonth()+1)}-${b(e.getDate())}`,E=(e,s)=>{let a=new Date(`${e}T12:00:00Z`);return a.setUTCDate(a.getUTCDate()+s),a.toISOString().slice(0,10)},I=e=>{let s=E(e,1);return[{id:"today",name:`Today (${e})`,date:e},{id:"tomorrow",name:`Tomorrow (${s})`,date:s}]};function L({view:e=null}={}){if(!e)return{run:()=>({ok:!1,code:"not-editing"}),dispose(){}};let s=e.dom.ownerDocument,a=null;function l(t){let o=e.state;if(!o.selection.empty||o.selection.from!==t.from||t.from<0||t.from>o.doc.content.size)return null;let r=o.doc.resolve(t.from);return!r.parent.isTextblock||r.parent.type.spec.code||!r.parent.type.allowsMarkType(d.marks.date)?null:t.from}function D(t){try{let o=e.dom.parentElement?.getBoundingClientRect?.()??{left:0,top:0},r=e.coordsAtPos(t.from);return{x:Math.max(8,r.left-o.left),y:r.bottom+6-o.top}}catch{return null}}function u(t){let o=t.picker.activeId();o?e.dom.setAttribute("aria-activedescendant",o):e.dom.getAttribute("aria-activedescendant")?.startsWith(t.picker.el.id)&&e.dom.removeAttribute("aria-activedescendant")}function c(){let t=a;if(t){a=null;for(let[o,r,n,i]of t.listen)o.removeEventListener(r,n,i);e.dom.getAttribute("aria-activedescendant")?.startsWith(`${t.picker.el.id}-`)&&e.dom.removeAttribute("aria-activedescendant"),t.picker.destroy()}}function x(t,o){let r=String(o),n=e.state.tr.insertText(r,t,t);return n.addMark(t,t+r.length,d.marks.date.create({date:r})),n.insertText(" ",t+r.length),n.setSelection(m.TextSelection.create(n.doc,t+r.length+1)),e.dispatch(y(n)),e.focus(),{ok:!0,date:r}}async function f(t){let o=a;if(!o)return{ok:!1,code:"not-editing"};let r=o.picker.personAt(t),n=l(o);return n===null||!r||!A(r.date)?(c(),r?n===null?{ok:!1,code:"stale-target"}:{ok:!1,code:"invalid-date"}:{ok:!1,code:"no-date"}):(c(),h(e,()=>{let i=l(o);return i===null?{ok:!1,code:"stale-target"}:x(i,r.date)}))}function S(t){let o=a;if(!o||k(t,e))return;let r=()=>{t.preventDefault(),t.stopPropagation()};t.key==="ArrowDown"||t.key==="ArrowUp"?(r(),o.picker.move(t.key==="ArrowDown"?1:-1),u(o)):t.key==="Enter"?(r(),f(o.picker.index())):(t.key==="Escape"||t.key==="Tab")&&(r(),c())}function T(){c();let t={from:e.state.selection.from,days:I($()),picker:null,listen:[]};t.picker=g({document:s,label:"Insert a date",empty:"No date to insert",onPick:r=>f(r)}),a=t;let o=(r,n,i,p)=>{r.addEventListener(n,i,p),t.listen.push([r,n,i,p])};return o(s,"keydown",r=>S(r),!0),o(e.dom,"input",()=>c()),o(s,"mousedown",r=>{t.picker.el.contains(r.target)||c()},!0),(e.dom.parentElement??s.body).appendChild(t.picker.el),l(t)===null?(c(),{ok:!1,code:"stale-target"}):(t.picker.show(t.days,D(t)),u(t),{ok:!0,picker:!0})}return{async run(){return T()},dispose(){c()}}}export{L as createFeature,I as earlyDays,A as isISODate,$ as localISODate};
@@ -0,0 +1 @@
1
+ import"./c-VHNSBD2M.js";function z(e){let a=e.regex,s={},i={begin:/\$\{/,end:/\}/,contains:["self",{begin:/:-/,contains:[s]}]};Object.assign(s,{className:"variable",variants:[{begin:a.concat(/\$[\w\d#@][\w\d_]*/,"(?![\\w\\d])(?![$])")},i]});let t={className:"subst",begin:/\$\(/,end:/\)/,contains:[e.BACKSLASH_ESCAPE]},c={begin:/<<-?\s*(?=\w+)/,starts:{contains:[e.END_SAME_AS_BEGIN({begin:/(\w+)/,end:/(\w+)/,className:"string"})]}},n={className:"string",begin:/"/,end:/"/,contains:[e.BACKSLASH_ESCAPE,s,t]};t.contains.push(n);let o={match:/\\"/},r={className:"string",begin:/'/,end:/'/},l={match:/\\'/},m={begin:/\$?\(\(/,end:/\)\)/,contains:[{begin:/\d+#[0-9a-f]+/,className:"number"},e.NUMBER_MODE,s]},d=["fish","bash","zsh","sh","csh","ksh","tcsh","dash","scsh"],p=e.SHEBANG({binary:`(${d.join("|")})`,relevance:10}),h={className:"function",begin:/\w[\w\d_]*\s*\(\s*\)\s*\{/,returnBegin:!0,contains:[e.inherit(e.TITLE_MODE,{begin:/\w[\w\d_]*/})],relevance:0},u=["if","then","else","elif","fi","for","while","until","in","do","done","case","esac","function","select"],b=["true","false"],f={match:/(\/[a-z._-]+)+/},g=["break","cd","continue","eval","exec","exit","export","getopts","hash","pwd","readonly","return","shift","test","times","trap","umask","unset"],w=["alias","bind","builtin","caller","command","declare","echo","enable","help","let","local","logout","mapfile","printf","read","readarray","source","type","typeset","ulimit","unalias"],y=["autoload","bg","bindkey","bye","cap","chdir","clone","comparguments","compcall","compctl","compdescribe","compfiles","compgroups","compquote","comptags","comptry","compvalues","dirs","disable","disown","echotc","echoti","emulate","fc","fg","float","functions","getcap","getln","history","integer","jobs","kill","limit","log","noglob","popd","print","pushd","pushln","rehash","sched","setcap","setopt","stat","suspend","ttyctl","unfunction","unhash","unlimit","unsetopt","vared","wait","whence","where","which","zcompile","zformat","zftp","zle","zmodload","zparseopts","zprof","zpty","zregexparse","zsocket","zstyle","ztcp"],k=["chcon","chgrp","chown","chmod","cp","dd","df","dir","dircolors","ln","ls","mkdir","mkfifo","mknod","mktemp","mv","realpath","rm","rmdir","shred","sync","touch","truncate","vdir","b2sum","base32","base64","cat","cksum","comm","csplit","cut","expand","fmt","fold","head","join","md5sum","nl","numfmt","od","paste","ptx","pr","sha1sum","sha224sum","sha256sum","sha384sum","sha512sum","shuf","sort","split","sum","tac","tail","tr","tsort","unexpand","uniq","wc","arch","basename","chroot","date","dirname","du","echo","env","expr","factor","groups","hostid","id","link","logname","nice","nohup","nproc","pathchk","pinky","printenv","printf","pwd","readlink","runcon","seq","sleep","stat","stdbuf","stty","tee","test","timeout","tty","uname","unlink","uptime","users","who","whoami","yes"];return{name:"Bash",aliases:["sh"],keywords:{$pattern:/\b[a-z][a-z0-9._-]+\b/,keyword:u,literal:b,built_in:[...g,...w,"set","shopt",...y,...k]},contains:[p,e.SHEBANG(),h,m,e.HASH_COMMENT_MODE,c,f,n,o,r,l,s]}}export{z as default};
@@ -0,0 +1 @@
1
+ import{d as R}from"./c-QHWJ5ZIJ.js";import{a as Y,c as j}from"./c-LFPHCXY3.js";import{g as P,q as k}from"./c-OIBUTDXI.js";import{b as H}from"./c-NUHP2XDB.js";var z=Symbol("clay.surfaceTheme"),L=(()=>{"use strict";let r=["a[href]","area[href]",'input:not([disabled]):not([type="hidden"]):not([aria-hidden])',"select:not([disabled]):not([aria-hidden])","textarea:not([disabled]):not([aria-hidden])","button:not([disabled]):not([aria-hidden])","iframe","object","embed","[contenteditable]",'[tabindex]:not([tabindex^="-"])'];class d{constructor({targetModal:e,triggers:t=[],onShow:n=()=>{},onClose:u=()=>{},openTrigger:o="data-micromodal-trigger",closeTrigger:x="data-micromodal-close",openClass:F="is-open",disableScroll:E=!1,disableFocus:M=!1,awaitCloseAnimation:C=!1,awaitOpenAnimation:c=!1,debugMode:p=!1}){this.modal=typeof e=="string"?document.getElementById(e):e,this.config={debugMode:p,disableScroll:E,openTrigger:o,closeTrigger:x,openClass:F,onShow:n,onClose:u,awaitCloseAnimation:C,awaitOpenAnimation:c,disableFocus:M},t.length>0&&this.registerTriggers(...t),this.onClick=this.onClick.bind(this),this.onKeydown=this.onKeydown.bind(this)}registerTriggers(...e){e.filter(Boolean).forEach(t=>{t.addEventListener("click",n=>this.showModal(n))})}showModal(e=null){if(this.activeElement=document.activeElement,this.modal.setAttribute("aria-hidden","false"),this.scrollBehaviour("disable"),this.addEventListeners(),this.config.awaitOpenAnimation){let t=()=>{this.modal.removeEventListener("animationend",t,!1),this.setFocusToFirstNode()};this.modal.addEventListener("animationend",t,!1)}else this.setFocusToFirstNode();this.config.onShow(this.modal,this.activeElement,e)}closeModal(e=null){this.modal.setAttribute("aria-hidden","true"),this.removeEventListeners(),this.scrollBehaviour("enable"),this.config.onClose(this.modal,this.activeElement,e)}scrollBehaviour(e){if(!this.config.disableScroll)return;let t=document.querySelector("body");switch(e){case"enable":Object.assign(t.style,{overflow:""});break;case"disable":Object.assign(t.style,{overflow:"hidden"});break;default:}}addEventListeners(){this.modal.addEventListener("touchstart",this.onClick),this.modal.addEventListener("click",this.onClick),document.addEventListener("keydown",this.onKeydown)}removeEventListeners(){this.modal&&(this.modal.removeEventListener("touchstart",this.onClick),this.modal.removeEventListener("click",this.onClick)),document.removeEventListener("keydown",this.onKeydown)}onClick(e){(e.target.hasAttribute(this.config.closeTrigger)||e.target.parentNode.hasAttribute(this.config.closeTrigger))&&(e.preventDefault(),e.stopPropagation(),this.closeModal(e))}onKeydown(e){e.keyCode===27&&this.closeModal(e),e.keyCode===9&&this.retainFocus(e)}getFocusableNodes(){let e=this.modal.querySelectorAll(r);return Array(...e)}setFocusToFirstNode(){if(this.config.disableFocus)return;let e=this.getFocusableNodes();if(e.length===0)return;let t=e.filter(n=>!n.hasAttribute(this.config.closeTrigger));t.length>0&&t[0].focus(),t.length===0&&e[0].focus()}retainFocus(e){let t=this.getFocusableNodes();if(t.length!==0)if(t=t.filter(n=>n.offsetParent!==null),!this.modal.contains(document.activeElement))t[0].focus();else{let n=t.indexOf(document.activeElement);e.shiftKey&&n===0&&(t[t.length-1].focus(),e.preventDefault()),!e.shiftKey&&t.length>0&&n===t.length-1&&(t[0].focus(),e.preventDefault())}}}let l=null,g=(i,e)=>{let t=[];return i.forEach(n=>{let u=n.attributes[e].value;t[u]===void 0&&(t[u]=[]),t[u].push(n)}),t},f=i=>{if(!document.getElementById(i))return console.warn(`MicroModal: \u2757Seems like you have missed %c'${i}'`,"background-color: #f8f9fa;color: #50596c;font-weight: bold;","ID somewhere in your code. Refer example below to resolve it."),console.warn("%cExample:","background-color: #f8f9fa;color: #50596c;font-weight: bold;",`<div class="modal" id="${i}"></div>`),!1},a=i=>{if(i.length<=0)return console.warn("MicroModal: \u2757Please specify at least one %c'micromodal-trigger'","background-color: #f8f9fa;color: #50596c;font-weight: bold;","data attribute."),console.warn("%cExample:","background-color: #f8f9fa;color: #50596c;font-weight: bold;",'<a href="#" data-micromodal-trigger="my-modal"></a>'),!1},m=(i,e)=>{if(a(i),!e)return!0;for(let t in e)f(t);return!0};return{init:i=>{let e=Object.assign({},{openTrigger:"data-micromodal-trigger"},i),t=[...document.querySelectorAll(`[${e.openTrigger}]`)],n=g(t,e.openTrigger);if(!(e.debugMode===!0&&m(t,n)===!1))for(let u in n){let o=n[u];e.targetModal=u,e.triggers=[...o],l=new d(e)}},show:(i,e)=>{let t=e||{};t.targetModal=i,!(t.debugMode===!0&&f(i)===!1)&&(l&&l.removeEventListeners(),l=new d(t),l.showModal())},close:()=>{l&&(l.closeModal(),l=null)}}})(),G=(()=>{let r="",d="",l="",g="100",f="",a="",m="",b,T=!0,v=!0,i=!1,e=[],t=[],n=[];return{isShowing:!1,open(){let o=e,x=t,F=n;e=[],t=[],n=[];let E=!1,M=()=>{E||(E=!0,x.forEach(s=>s()))};(this.isShowing||document.querySelector("[data-clay-modal]"))&&(this._dismiss?.(),this._cleanupListeners?.(),document.querySelectorAll("[data-clay-modal]").forEach(s=>{Y.get(s)?.(),s.remove()}),this.isShowing=!1,document.body.style.overflow=""),this._dismiss=M;let C=b===void 0?R():b,c=j({zIndex:g,closable:!!f,titled:!!a,...m?{width:m}:{},theme:C}),p=c.root,q=c.overlay,N=c.panel,O=c.body,A=c.footer,$=c.close,D={theme:C,parts:["dialog.button"],labelParts:["dialog.buttonLabel"]},y=P("",D),w=P("",{variant:"primary",...D});w.type="submit",A.append(y,w);let S=(s,h)=>{h instanceof Node?s.append(h):s.innerHTML=h};S(O,r),S(w.firstChild,d),S(y.firstChild,l),a&&S(c.heading,a),a&&N.setAttribute("aria-label",c.heading.textContent.trim()),k(O,!(r===""||r==null),"block"),(r===""||r==null)&&a&&H(A,"border-top","0"),document.body.prepend(p);let B=!1;function I(s){B=q.contains(s.target)&&!N.contains(s.target)}function _(s){(y.contains(s.target)||$?.contains(s.target)||T&&B&&!N.contains(s.target)&&q.contains(s.target))&&L.close(),B=!1}function K(s){if(p.contains(s.target)){s.preventDefault();let h=!0;for(let V of o)try{if(V()===!1){h=!1;break}}catch{h=!1;break}h&&(E=!0,L.close())}}document.addEventListener("mousedown",I),document.addEventListener("click",_),document.addEventListener("submit",K),this._cleanupListeners=()=>{document.removeEventListener("mousedown",I),document.removeEventListener("click",_),document.removeEventListener("submit",K)};function U(){k(A,!!(d||l),"flex"),k(w,!!d,"inline-flex"),k(y,!!l,"inline-flex")}if(U(),L.show(p,{disableScroll:v,disableFocus:!0,onClose:s=>{M(),p.remove(),r="",d="",l="",g="100",f="",a="",m="",b=void 0,T=!0,v=!0,i=!1,this.isShowing=!1,document.removeEventListener("mousedown",I),document.removeEventListener("click",_),document.removeEventListener("submit",K),this._cleanupListeners=null,this._dismiss=null}}),this.isShowing=!0,F.forEach(s=>s()),!i){let s=O.querySelector(":is(input,textarea,button):not([hidden])")||[w,y].find(h=>!h.hidden);s?.focus(),s?.setSelectionRange?.(-1,-1)}},close(){L.close()},get html(){return r},set html(o){r=o},get closeHtml(){return f},set closeHtml(o){f=o},get title(){return a},set title(o){a=o},get width(){return m},set width(o){m=o},get[z](){return b},set[z](o){b=o},get yes(){return d},set yes(o){d=o},get no(){return l},set no(o){l=o},get zIndex(){return g},set zIndex(o){g=o},get disableFocus(){return i},set disableFocus(o){i=o},get disableScroll(){return v},set disableScroll(o){v=o},get onYes(){return o=>{e.push(o)}},set onYes(o){e=[o]},get onNo(){return o=>{t.push(o)}},set onNo(o){t=[o]},get onOpen(){return o=>{n.push(o)}},set onOpen(o){n=[o]}}})(),ee=G;export{z as a,ee as b};
@@ -0,0 +1,135 @@
1
+ import{a as i,b as k}from"./c-Q7NQD65V.js";import{b as K,e as O}from"./c-336SGU5W.js";import{d as g}from"./c-5J4E7O4Y.js";import{H as D,m as y}from"./c-WWXIDH4O.js";import"./c-VHNSBD2M.js";var z=`
2
+ :where(article[data-page], .page-shell) { --page-board-lane: 274px; --page-board-gap: 14px; --page-board-radius: 8px; --page-board-panel: 360px; }
3
+ .page-editor .page-board { margin-block: 1.1em 1.5em; font-size: 15px; line-height: 1.4; white-space: normal; }
4
+ :is(.page-board, .page-board-panel) .i { flex: none; width: 16px; height: 16px; }
5
+ .page-board-scroll { position: relative; margin: -4px -4px 0; padding: 4px 4px 12px; overflow-x: auto; overscroll-behavior-x: contain; scrollbar-width: thin; scrollbar-color: var(--page-chrome-ink-rest) transparent; }
6
+ .page-board-lanes { display: flex; align-items: flex-start; gap: var(--page-board-gap); width: max-content; }
7
+ .page-board-lane { flex: 0 0 var(--page-board-lane); width: var(--page-board-lane); min-width: 0; }
8
+ .page-board-head { position: relative; display: flex; align-items: flex-start; gap: 8px; padding: 8px 0 7px; margin-bottom: 10px; border-bottom: 1px solid var(--page-rule); }
9
+ .page-board-name { min-width: 0; margin: 0; overflow: hidden; display: -webkit-box; -webkit-box-orient: vertical; -webkit-line-clamp: 2; color: var(--page-ink-strong); font: 600 14px/20px var(--page-font-heading); overflow-wrap: anywhere; }
10
+ .page-board-count { flex: none; color: var(--page-ink-soft); font-size: 14px; line-height: 20px; font-variant-numeric: tabular-nums; }
11
+ .page-board-icon { flex: none; display: inline-grid; place-items: center; width: 28px; height: 28px; margin-block: -4px; padding: 0; border: 0; border-radius: 6px; background: none; color: var(--page-ink-faint); cursor: pointer; transition: background-color var(--page-fade), color var(--page-fade); }
12
+ .page-board-icon:hover, .page-board-icon[aria-expanded="true"] { background: var(--page-pop-hover); color: var(--page-ink-soft); }
13
+ .page-board-icon:focus-visible { color: var(--page-ink-soft); }
14
+ .page-board-colmenu { margin-inline: auto -4px; }
15
+ .page-board-cards { display: flex; flex-direction: column; gap: 8px; margin: 0; padding: 0; list-style: none; }
16
+ .page-board-cards > li { position: relative; }
17
+ .page-board-card { display: block; width: 100%; margin: 0; padding: 10px 12px 11px; border: 1px solid var(--page-rule); border-radius: var(--page-board-radius); background: var(--page-pop-bg); color: var(--page-ink); font: inherit; text-align: start; cursor: pointer; transition: background-color var(--page-fade), border-color var(--page-fade); }
18
+ .page-board-card:hover { background-color: color-mix(in srgb, var(--page-pop-bg) 96%, var(--page-ink)); }
19
+ .page-board-card[aria-expanded="true"] { border-color: var(--page-accent); box-shadow: inset 0 0 0 1px var(--page-accent); }
20
+ .page-board-title { display: -webkit-box; -webkit-box-orient: vertical; -webkit-line-clamp: 4; overflow: hidden; font-size: 15px; font-weight: 500; line-height: 21px; overflow-wrap: anywhere; }
21
+ .page-board-meta { display: flex; align-items: center; gap: 8px; margin-top: 8px; color: var(--page-ink-soft); font-size: 13px; line-height: 20px; }
22
+ .page-board-owner { display: inline-flex; align-items: center; gap: 6px; min-width: 0; }
23
+ .page-board-owner-name { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
24
+ .page-board-due { flex: none; display: inline-flex; align-items: center; gap: 6px; margin-inline-start: auto; white-space: nowrap; font-variant-numeric: tabular-nums; }
25
+ .page-board-due[data-due="today"] { color: var(--page-ink); font-weight: 500; }
26
+ .page-board-due[data-due="overdue"] { color: var(--page-ink); }
27
+ .page-board-due[data-due="overdue"]::before { content: ""; flex: none; width: 6px; height: 6px; border-radius: 50%; background: var(--page-danger); }
28
+ .page-board-sr { position: absolute; width: 1px; height: 1px; overflow: hidden; clip-path: inset(50%); white-space: nowrap; }
29
+ .page-board-add { display: flex; align-items: center; gap: 6px; width: 100%; min-height: 36px; margin-top: 6px; padding: 0 12px; border: 0; border-radius: 7px; background: none; color: var(--page-ink-soft); font: inherit; font-size: 14px; text-align: start; cursor: pointer; transition: background-color var(--page-fade); }
30
+ .page-board-add .i { width: 14px; height: 14px; color: var(--page-ink-faint); }
31
+ .page-board-add:hover { background: var(--page-pop-hover); }
32
+ .page-board-addcol { flex: none; display: inline-grid; place-items: center; width: 32px; height: 32px; margin-top: 2px; padding: 0; border: 1px solid var(--page-chrome-line-rest); border-radius: var(--page-chrome-radius); background: var(--page-chrome-bg-rest); color: var(--page-ink-faint); cursor: pointer; transition: color var(--page-fade), background-color var(--page-fade), border-color var(--page-fade); }
33
+ .page-board-addcol:hover { border-color: var(--page-chrome-line-moved); background: var(--page-chrome-bg-moved); color: var(--page-ink-soft); }
34
+ .page-board-addcol .i { width: 14px; height: 14px; }
35
+ .page-board-tray { margin-bottom: 18px; padding: 6px 12px 12px; border-radius: 10px; background: var(--page-callout-bg); }
36
+ .page-board-tray-head { display: flex; align-items: center; gap: 8px; min-height: 44px; margin-bottom: 4px; }
37
+ .page-board-tray .page-board-cards { display: grid; grid-template-columns: repeat(auto-fill, minmax(220px, 1fr)); gap: 8px; }
38
+ .page-board-select { position: relative; display: block; min-width: 0; }
39
+ .page-board-select > .i { position: absolute; inset-inline-end: 8px; top: 50%; margin-top: -8px; color: var(--page-ink-faint); pointer-events: none; }
40
+ .page-board-select select { appearance: none; -webkit-appearance: none; padding-inline-end: 32px; text-overflow: ellipsis; }
41
+ .page-board-move { margin-top: 6px; }
42
+ .page-board-move select { width: 100%; min-height: 32px; padding-inline-start: 10px; border: 1px solid var(--page-pop-line); border-radius: 7px; background: var(--page-pop-bg); color: var(--page-ink); font: inherit; font-size: 14px; cursor: pointer; }
43
+ .page-board-btn { display: inline-flex; align-items: center; justify-content: center; gap: 6px; min-height: 32px; padding: 0 12px 0 10px; border: 1px solid var(--page-pop-line); border-radius: 7px; background: none; color: var(--page-pop-ink); font: inherit; font-size: 14px; cursor: pointer; transition: background-color var(--page-fade), color var(--page-fade); }
44
+ .page-board-btn:hover { background: var(--page-pop-hover); }
45
+ .page-board-btn .i { width: 14px; height: 14px; color: var(--page-pop-muted); }
46
+ .page-board-btn:disabled { background: none; color: var(--page-ink-faint); cursor: default; }
47
+ .page-board-btn:disabled .i { color: var(--page-ink-faint); }
48
+ .page-board-restore { flex: none; margin-inline-start: auto; }
49
+ .page-board-deleted { background: none; padding: 0; }
50
+ .page-board-deleted-toggle[aria-expanded="false"] svg { transform: rotate(-90deg); }
51
+ .page-board-deleted-list { list-style: none; margin: 0; padding: 0 0 0 12px; }
52
+ .page-board-deleted-item { display: flex; align-items: center; gap: 8px; min-height: 44px; color: var(--page-ink-soft); }
53
+ .page-board :is(button, select, input, textarea):focus-visible, .page-board-panel :is(button, select, input, textarea):focus-visible { outline: 2px solid var(--page-accent); outline-offset: 2px; }
54
+ .page-board-pop { position: absolute; z-index: 6; padding: 6px; border: 1px solid var(--page-pop-line); border-radius: var(--page-pop-radius); background: var(--page-pop-bg); box-shadow: var(--page-pop-shadow); color: var(--page-pop-ink); font-size: 14px; line-height: 1.4; }
55
+ .page-board-menu { top: calc(100% - 2px); inset-inline-end: -6px; width: 208px; }
56
+ .page-board-option { display: flex; align-items: center; gap: 10px; width: 100%; min-height: 34px; padding: 4px 10px; border: 0; border-radius: 7px; background: none; color: inherit; font: inherit; text-align: start; cursor: pointer; }
57
+ .page-board-option:hover, .page-board-option[aria-selected="true"], .page-board-option[aria-pressed="true"] { background: var(--page-pop-hover); }
58
+ .page-board-option > .i { color: var(--page-pop-muted); }
59
+ .page-board-option.is-danger { color: var(--page-danger); }
60
+ .page-board-option.is-danger > .i { color: inherit; }
61
+ .page-board-option:disabled { color: var(--page-ink-faint); cursor: default; background: none; }
62
+ .page-board-option:disabled > .i { color: var(--page-ink-faint); }
63
+ .page-board-sep { height: 1px; margin: 4px 6px; background: var(--page-pop-line); }
64
+ .page-board-rename { flex: 1 1 auto; min-width: 0; height: 28px; margin: -4px 0 -4px -6px; padding: 0 6px; border: 0; border-radius: 6px; background: var(--page-pop-hover); color: var(--page-ink-strong); font: 600 14px/20px var(--page-font-heading); }
65
+ .page-board-new { display: block; width: 100%; min-height: 44px; margin-top: 8px; padding: 10px 12px; border: 1px solid var(--page-rule); border-radius: var(--page-board-radius); background: var(--page-pop-bg); color: var(--page-ink); font: 500 15px/21px var(--page-font); }
66
+ .page-board-new::placeholder, .page-board-rename::placeholder { color: var(--page-ink-faint); font-weight: 400; }
67
+ .page-board-card, .page-board-name, .page-board-count { -webkit-user-select: none; user-select: none; }
68
+ .page-editor[contenteditable="true"] .page-board-head[data-col] .page-board-name { cursor: grab; }
69
+ .page-board.is-dragging, .page-board.is-dragging * { cursor: grabbing; }
70
+ .page-board .is-drag-source { opacity: 0.45; }
71
+ .page-board-drop { height: 2px; margin-block: -5px; border-radius: 1px; background: var(--page-drop, var(--page-accent)); pointer-events: none; }
72
+ .page-board-drop.is-column { flex: 0 0 2px; align-self: stretch; width: 2px; height: auto; margin-block: 0; margin-inline: calc((var(--page-board-gap) + 2px) / -2); }
73
+ .page-board-ghost { position: fixed; z-index: 6; top: 0; left: 0; box-sizing: border-box; margin: 0; box-shadow: var(--page-pop-shadow); pointer-events: none; }
74
+ .page-board-lane.page-board-ghost { padding: 0 10px 10px; border-radius: var(--page-board-radius); background: var(--page-bg); }
75
+ .page-board-scrim { display: none; position: fixed; inset: 0; z-index: 4; background: var(--page-scrim); }
76
+ .page-board-panel { position: fixed; z-index: 5; inset-block: 0; inset-inline-end: 0; width: var(--page-board-panel); box-sizing: border-box; overflow-y: auto; padding: 18px 20px 24px; border-inline-start: 1px solid var(--page-pop-line); background: var(--page-pop-bg); color: var(--page-pop-ink); font-family: var(--page-font); font-size: 15px; line-height: 1.4; }
77
+ .page-shell.has-board-panel { padding-inline-end: calc(var(--page-board-panel) + 16px); }
78
+ .page-board-panel-top { display: flex; align-items: flex-start; gap: 8px; }
79
+ .page-board-panel-title { flex: 1 1 0; min-width: 0; margin: -4px 0 0 -8px; padding: 4px 8px; border: 0; border-radius: 7px; background: none; color: var(--page-ink-strong); font: 600 20px/28px var(--page-font-heading); field-sizing: content; resize: none; overflow: hidden; }
80
+ .page-board-panel-title:hover { background: var(--page-pop-hover); }
81
+ .page-board-close { width: 32px; height: 32px; margin: -2px -6px 0 0; color: var(--page-ink-soft); }
82
+ .page-board-fields { margin: 18px 0 0; border-top: 1px solid var(--page-pop-line); }
83
+ .page-board-field { position: relative; display: grid; grid-template-columns: 84px minmax(0, 1fr); align-items: center; column-gap: 8px; min-height: 44px; border-bottom: 1px solid var(--page-pop-line); }
84
+ .page-board-field.is-owner { align-items: start; padding-block: 8px; }
85
+ .page-board-field.is-owner .page-board-label { padding-top: 4px; }
86
+ .page-board-label { color: var(--page-pop-muted); font-size: 14px; }
87
+ .page-board-control { display: flex; align-items: center; gap: 8px; width: 100%; min-width: 0; min-height: 34px; margin: 0; padding: 0 8px; border: 0; border-radius: 7px; background: none; color: var(--page-pop-ink); font: inherit; font-size: 15px; text-align: start; cursor: pointer; transition: background-color var(--page-fade); }
88
+ .page-board-control:hover { background: var(--page-pop-hover); }
89
+ .page-board-control > .i:last-child { margin-inline-start: auto; color: var(--page-ink-faint); }
90
+ .page-board-control-text { min-width: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
91
+ .page-board-none { color: var(--page-ink-faint); }
92
+ .page-board-control .page-board-due { margin: 0; color: var(--page-pop-ink); font-weight: 400; }
93
+ .page-board-due-note { color: var(--page-pop-muted); font-size: 13px; }
94
+ .page-board-control .page-board-due + .page-board-due-note { margin-inline-start: auto; }
95
+ .page-board-control .page-board-due-note + .i { margin-inline-start: 0; }
96
+ .page-board-date { border: 1px solid var(--page-pop-line); cursor: text; }
97
+ .page-board-actions { display: flex; flex-wrap: wrap; align-items: center; gap: 8px; margin-top: 20px; }
98
+ .page-board-delete { margin-inline-start: auto; border-color: transparent; color: var(--page-pop-muted); }
99
+ .page-board-delete:hover { background: var(--page-pop-hover); color: var(--page-danger); }
100
+ .page-board-delete:hover .i { color: inherit; }
101
+ @media (max-width: 1039.98px) {
102
+ .page-shell.has-board-panel { padding-inline-end: 16px; }
103
+ .page-board-scrim { display: block; }
104
+ .page-board-panel { inset: auto 0 0 0; width: auto; max-width: 640px; max-height: 85%; margin-inline: auto; padding: 14px 16px calc(16px + env(safe-area-inset-bottom)); border: 1px solid var(--page-pop-line); border-bottom: 0; border-radius: 16px 16px 0 0; box-shadow: var(--page-pop-shadow); }
105
+ .page-board-close { width: 44px; height: 44px; margin: -8px -10px 0 0; }
106
+ .page-board-panel-top { min-height: 36px; }
107
+ .page-board-field { min-height: 48px; }
108
+ .page-board-control { min-height: 44px; }
109
+ .page-board-actions { margin-top: 16px; }
110
+ .page-board-actions .page-board-btn { flex: 1 1 0; min-height: 44px; }
111
+ .page-board-actions .page-board-delete { flex: 1 1 100%; margin-inline-start: 0; }
112
+ }
113
+ @media (max-width: 560px) {
114
+ .page-board-scroll { scroll-snap-type: x proximity; scroll-padding-inline: 4px; }
115
+ .page-board-lane { scroll-snap-align: start; }
116
+ .page-board-head { padding: 12px 0 11px; }
117
+ .page-board-head .page-board-icon { width: 44px; height: 44px; margin-block: -12px; }
118
+ .page-board-colmenu { margin-inline-end: -12px; }
119
+ .page-board-card { min-height: 44px; padding: 12px 14px 13px; }
120
+ .page-board-add { min-height: 44px; padding-inline: 14px; }
121
+ .page-board-addcol { width: 44px; height: 44px; margin-top: 0; }
122
+ .page-board-tray-head { min-height: 48px; }
123
+ .page-board-move select, .page-board-btn { min-height: 44px; }
124
+ .page-board-move select, .page-board-new { font-size: 16px; }
125
+ .page-board-option { min-height: 44px; }
126
+ .page-board-rename { height: 44px; margin-block: -12px; font-size: 16px; }
127
+ .page-board-panel { border-width: 1px 0 0; }
128
+ .page-board-panel-title { margin-top: -8px; padding-block: 8px; }
129
+ .page-board-control { font-size: 16px; }
130
+ .page-board-label { font-size: 15px; }
131
+ }
132
+ @media (prefers-reduced-motion: reduce) {
133
+ .page-board-icon, .page-board-card, .page-board-add, .page-board-addcol, .page-board-btn, .page-board-control { transition: none; }
134
+ }
135
+ `;var F=4,m=56,q=18,j=["id","data-focus","data-action","data-card","data-col"],C=(s,e)=>{let t=s.getBoundingClientRect();return e==="x"?t.left+t.width/2:t.top+t.height/2},P=(s,e,t)=>s<e+m?-q*Math.min(1,(e+m-s)/m):s>t-m?q*Math.min(1,(s-(t-m))/m):0,H=(s,e)=>s?.col===e?.col&&s?.afterId===e?.afterId&&!s==!e,I=class{constructor(e){this.host=e,this.state=null,this.line=null,this.suppress=!1,this.onMove=t=>this.move(t),this.onUp=t=>this.end(t),this.onCancel=t=>{t.pointerId===this.state?.pointer&&this.cancel()},this.onKey=t=>{t.key==="Escape"&&this.state?.active&&(t.preventDefault(),t.stopPropagation(),this.cancel())},e.dom.addEventListener("pointerdown",t=>this.start(t)),e.dom.addEventListener("click",t=>{this.suppress&&(this.suppress=!1,t.preventDefault(),t.stopImmediatePropagation())},!0)}start(e){let t=this.host;if(e.button!==0||e.pointerType==="touch"||this.state||!t.commands||!t.view.editable)return;let a=e.target.closest?.(".page-board-card[data-card]"),o=a?null:e.target.closest?.(".page-board-head[data-col]");if(!a&&(!o||e.target.closest("button, input")))return;this.state={kind:a?"card":"column",id:a?a.dataset.card:o.dataset.col,pointer:e.pointerId,x0:e.clientX,y0:e.clientY,x:e.clientX,y:e.clientY,active:!1,slot:null,raf:0,ghost:null};let r=t.dom.ownerDocument;r.addEventListener("pointermove",this.onMove),r.addEventListener("pointerup",this.onUp),r.addEventListener("pointercancel",this.onCancel)}move(e){let t=this.state;if(!(!t||e.pointerId!==t.pointer)){if(t.x=e.clientX,t.y=e.clientY,!t.active){if(Math.hypot(t.x-t.x0,t.y-t.y0)<=F)return;this.begin()}e.preventDefault(),this.track()}}source(){let{kind:e,id:t}=this.state;return[...e==="card"?this.host.dom.querySelectorAll(".page-board-card[data-card]"):this.host.lanes.querySelectorAll(".page-board-lane[data-col]")].find(o=>(e==="card"?o.dataset.card:o.dataset.col)===t)??null}exists(){let{kind:e,id:t}=this.state,a=this.host.board;return e==="card"?Object.hasOwn(a.cards,t):a.columnIds.includes(t)}begin(){let e=this.state,t=this.host,a=this.source();if(!a||!this.exists())return this.stop();t.menu!==null&&t.closeMenu(!1),e.active=!0;let o=a.getBoundingClientRect();e.dx=e.x0-o.left,e.dy=e.y0-o.top;let r=a.cloneNode(!0);for(let n of[r,...r.querySelectorAll("*")])for(let d of j)n.removeAttribute(d);r.classList.add("page-board-ghost"),r.setAttribute("aria-hidden","true"),r.setAttribute("inert",""),r.style.width=`${o.width}px`,e.ghost=r,t.dom.append(r),t.dom.classList.add("is-dragging"),this.line=t.dom.ownerDocument.createElement(e.kind==="card"?"li":"div"),this.line.className=e.kind==="card"?"page-board-drop":"page-board-drop is-column",this.line.setAttribute("aria-hidden","true"),t.dom.setPointerCapture?.(e.pointer),t.dom.addEventListener("lostpointercapture",this.onCancel),window.addEventListener("keydown",this.onKey,!0),a.classList.add("is-drag-source"),this.loop()}track(e=!1){let t=this.state;if(!t?.active)return;if(t.ghost.style.transform=`translate(${t.x-t.dx}px, ${t.y-t.dy}px)`,!this.exists())return this.cancel();let a=this.inBounds()?t.kind==="card"?this.cardSlot():this.columnSlot():null;!e&&H(a,t.slot)||(t.slot=a,this.paint())}inBounds(){let e=this.state,t=this.host.scroll.getBoundingClientRect();return e.x>=t.left-m&&e.x<=t.right+m&&e.y>=t.top-m&&e.y<=t.bottom+m}cardSlot(){let e=this.state,t=null,a=1/0;for(let n of this.host.lanes.querySelectorAll(".page-board-lane[data-col]")){let d=n.getBoundingClientRect(),l=e.x<d.left?d.left-e.x:e.x>d.right?e.x-d.right:0;l<a&&(a=l,t=n)}if(!t)return null;let o=[...t.querySelectorAll(".page-board-card[data-card]")].filter(n=>n.dataset.card!==e.id),r=o.filter(n=>C(n,"y")<e.y).length;return{col:t.dataset.col,afterId:r?o[r-1].dataset.card:null}}columnSlot(){let e=this.state,t=getComputedStyle(this.host.lanes).direction==="rtl",a=[...this.host.lanes.querySelectorAll(".page-board-lane[data-col]")].filter(r=>r.dataset.col!==e.id),o=a.filter(r=>t?C(r,"x")>e.x:C(r,"x")<e.x).length;return{col:null,afterId:o?a[o-1].dataset.col:null}}paint(){let e=this.state,t=this.line;if(t.remove(),!e.slot)return;let a=this.host.lanes;if(e.kind==="card"){let o=[...a.querySelectorAll(".page-board-lane[data-col]")].find(n=>n.dataset.col===e.slot.col)?.querySelector(".page-board-cards"),r=e.slot.afterId&&[...o?.querySelectorAll(".page-board-card[data-card]")??[]].find(n=>n.dataset.card===e.slot.afterId)?.closest("li");o?.insertBefore(t,r?r.nextSibling:o.firstChild)}else{let o=e.slot.afterId&&[...a.querySelectorAll(".page-board-lane[data-col]")].find(r=>r.dataset.col===e.slot.afterId);a.insertBefore(t,o?o.nextSibling:a.firstChild)}}repaint(){this.state?.active&&(this.source()?.classList.add("is-drag-source"),this.track(!0))}loop(){let e=()=>{let t=this.state;if(!t?.active)return;let a=this.host.scroll.getBoundingClientRect(),o=K(this.host.dom),r=o===o.ownerDocument.scrollingElement?{top:0,bottom:window.innerHeight}:o.getBoundingClientRect(),n=P(t.x,a.left,a.right),d=P(t.y,r.top,r.bottom);n&&(this.host.scroll.scrollLeft+=n),d&&(o.scrollTop+=d),(n||d)&&this.track(),this.state===t&&(t.raf=requestAnimationFrame(e))};this.state.raf=requestAnimationFrame(e)}end(e){let t=this.state;if(!t||e.pointerId!==t.pointer)return;if(!t.active)return this.stop();e.preventDefault(),this.suppress=!0,setTimeout(()=>{this.suppress=!1},0);let{kind:a,id:o,slot:r}=t;this.stop();let n=this.host;if(!r)return g(n.view,"Move cancelled");(a==="card"?n.run("moveCard",o,{columnId:r.col,afterId:r.afterId}):n.run("moveColumn",o,{afterId:r.afterId})).status==="moved"&&(a==="card"?(g(n.view,`Moved card to ${n.board.columns[r.col]?.name||"Untitled"}`),n.focusKey(`card:${o}`)):g(n.view,"Moved column"))}cancel(){this.stop(),g(this.host.view,"Move cancelled")}stop(){let e=this.state,t=this.host;if(!e)return;this.state=null,cancelAnimationFrame(e.raf);let a=t.dom.ownerDocument;a.removeEventListener("pointermove",this.onMove),a.removeEventListener("pointerup",this.onUp),a.removeEventListener("pointercancel",this.onCancel),t.dom.removeEventListener("lostpointercapture",this.onCancel),window.removeEventListener("keydown",this.onKey,!0),t.dom.hasPointerCapture?.(e.pointer)&&t.dom.releasePointerCapture(e.pointer),e.ghost?.remove(),this.line?.remove(),this.line=null,t.dom.classList.remove("is-dragging");for(let o of t.dom.querySelectorAll(".is-drag-source"))o.classList.remove("is-drag-source")}};var X=y.nodes,$=new WeakMap,N=/^\d{4}-\d{2}-\d{2}$/,Y=0,u=(s,e=!1)=>`<svg class="i" viewBox="0 0 16 16" width="16" height="16" fill="${e?"currentColor":"none"}" stroke="${e?"none":"currentColor"}" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true">${s}</svg>`,v={plus:u('<path d="M8 3.25v9.5M3.25 8h9.5"/>'),more:u('<circle cx="3.5" cy="8" r="1.15"/><circle cx="8" cy="8" r="1.15"/><circle cx="12.5" cy="8" r="1.15"/>',!0),chevron:u('<path d="M4.75 6.5 8 9.75l3.25-3.25"/>'),close:u('<path d="M4.5 4.5l7 7M11.5 4.5l-7 7"/>'),up:u('<path d="M8 12.75v-9.5M4.25 7 8 3.25 11.75 7"/>'),down:u('<path d="M8 3.25v9.5M4.25 9 8 12.75 11.75 9"/>'),left:u('<path d="M12.75 8h-9.5M7 4.25 3.25 8 7 11.75"/>'),right:u('<path d="M3.25 8h9.5M9 4.25 12.75 8 9 11.75"/>'),trash:u('<path d="M2.75 4.5h10.5M6.25 4.5V2.75h3.5V4.5M4.25 4.5l.6 8.75h6.3l.6-8.75"/>'),calendar:u('<rect x="2.75" y="3.5" width="10.5" height="9.75" rx="1.75"/><path d="M2.75 6.75h10.5M5.5 2v2.5M10.5 2v2.5"/>'),pencil:u('<path d="M10.25 3.25l2.5 2.5-7 7H3.25v-2.5z"/>'),restore:u('<path d="M3.5 8a4.5 4.5 0 1 0 1.32-3.18M3.5 2.75v2.5H6"/>')};function h(s,e,t,a,o={}){let r=i(s,"button",e,{type:"button",...o});return r.innerHTML=v[t],a&&r.append(a),r}function x(s){let e=s.attrs.columns??{},t=s.attrs.cards??{},a=D(e),o=new Map(a.map(n=>[n,[]])),r=new Map;for(let n of D(t)){let d=String(t[n].col??"");o.has(d)?o.get(d).push(n):r.set(d,[...r.get(d)??[],n])}return{columns:e,cards:t,columnIds:a,lanes:o,missing:new Map([...r].sort(([n],[d])=>n<d?-1:n>d?1:0))}}var R=s=>String(s).padStart(2,"0"),w=(s=new Date)=>`${s.getFullYear()}-${R(s.getMonth()+1)}-${R(s.getDate())}`,M=(s,e=w())=>N.test(s)?s<e?"overdue":s===e?"today":"later":"later";function A(s,e=w(),t=!1){if(!N.test(s))return s;if(!t&&s===e)return"Today";let a=s.slice(0,4)===e.slice(0,4);return new Date(`${s}T00:00:00Z`).toLocaleDateString("en-US",{...t?{weekday:"short"}:{},month:"short",day:"numeric",...a?{}:{year:"numeric"},timeZone:"UTC"})}var L=(s,e)=>e>=2?s[e-2]:null,S=(s,e)=>i(s,"span","page-board-count",{"aria-label":`${e} ${e===1?"card":"cards"}`},String(e)),_=s=>/^(INPUT|TEXTAREA|SELECT)$/.test(s?.tagName??"");function V(s,e){let t=w(),a=M(e,t),o=i(s,"span","page-board-due",{"data-due":a});return o.append(i(s,"span","page-board-sr",{},"Due "),s.createTextNode(A(e,t))),a==="overdue"&&o.append(i(s,"span","page-board-sr",{},", overdue")),o}var E=class{constructor(e,t,a,{commands:o=null,undo:r=null,redo:n=null,panel:d=null}={}){this.node=e,this.view=t,this.getPos=a,this.commands=o,this.undo=r,this.redo=n,this.panel=d,this.uid=`page-board-${++Y}`,this.menu=null;let l=$.get(t)??new Map;$.set(t,l),l.set(e.attrs.id,this),this.editing=null,this.rendering=!1;let p=t.dom.ownerDocument;this.dom=i(p,"div","page-board",{"data-type":"board","data-id":e.attrs.id??"",role:"group","aria-label":"Board"}),this.dom.contentEditable="false",this.trays=i(p,"div","page-board-trays"),this.scroll=i(p,"div","page-board-scroll"),this.lanes=i(p,"div","page-board-lanes"),this.scroll.append(this.lanes),this.dom.append(this.trays,this.scroll),this.dom.addEventListener("click",c=>this.click(c)),this.dom.addEventListener("change",c=>this.change(c)),this.dom.addEventListener("keydown",c=>this.keydown(c)),this.dom.addEventListener("focusout",c=>this.focusout(c)),this.dom.addEventListener("mousedown",c=>{c.target.closest?.("button")&&c.preventDefault()}),this.dragger=new I(this),this.render()}get blockId(){return this.node.attrs.id}run(e,...t){if(!this.commands||!this.view.editable)return{status:"refused",code:"read-only"};let a=this.commands[e](this.blockId,...t);return a?.status==="refused"&&this.render(),a}focusKey(e){let t=e?[...this.dom.querySelectorAll("[data-focus]")].find(a=>a.dataset.focus===e&&!a.disabled):null;return t?(t.focus(),t.ownerDocument.activeElement===t):!1}render(){let e=this.dom.ownerDocument,t=e.activeElement,a=t&&this.dom.contains(t)?t.dataset?.focus??null:null,o=a&&typeof t.selectionStart=="number"?[t.selectionStart,t.selectionEnd]:null;this.rendering=!0;try{this.board=x(this.node),this.dom.dataset.id=this.blockId??"";let r=this.commands?.removed?.(this.blockId)??{columns:{},cards:{}},n=r.columns??{},d=Object.keys(r.cards??{}).filter(p=>!Object.hasOwn(this.board.cards,p));this.trays.replaceChildren(...[...this.board.missing].map(([p,c],b)=>this.tray(p,c,b,n[p]))),d.length?this.trays.append(this.deletedTray(d,r.cards)):this.showDeleted=!1;let l=this.board.columnIds.map((p,c)=>this.lane(p,c));this.editing?.kind==="column"?l.push(this.newLane()):l.push(h(e,"page-board-addcol","plus",null,{"aria-label":"Add column",title:"Add column","data-action":"add-column","data-focus":"add-column"})),this.lanes.replaceChildren(...l),a&&this.focusKey(a)&&o&&e.activeElement.setSelectionRange?.(...o),this.dragger?.repaint()}finally{this.rendering=!1}}lane(e,t){let a=this.dom.ownerDocument,o=this.board.lanes.get(e),r=this.board.columns[e].name||"Untitled",n=`${this.uid}-col-${t}`,d=i(a,"div","page-board-lane",{role:"group","aria-labelledby":n,"data-col":e}),l=i(a,"div","page-board-head",{"data-col":e});this.editing?.kind==="rename"&&this.editing.id===e?l.append(this.editing.input,i(a,"span","page-board-name page-board-sr",{id:n},r),S(a,o.length)):(l.append(i(a,"h4","page-board-name",{id:n},r),S(a,o.length)),l.append(h(a,"page-board-icon page-board-colmenu","more",null,{"aria-haspopup":"menu","aria-expanded":String(this.menu===e),"aria-label":`${r} column options`,"data-action":"colmenu","data-col":e,"data-focus":`colmenu:${e}`})),this.menu===e&&l.append(this.columnMenu(e,t,r)));let c=i(a,"ol","page-board-cards");for(let b of o){let T=i(a,"li");T.append(this.card(b)),c.append(T)}return d.append(l,c),this.editing?.kind==="card"&&this.editing.id===e?d.append(this.editing.input):d.append(h(a,"page-board-add","plus","Add card",{"data-action":"add-card","data-col":e,"data-focus":`add:${e}`})),d}newLane(){let e=this.dom.ownerDocument,t=i(e,"div","page-board-lane",{role:"group","aria-label":"New column"}),a=i(e,"div","page-board-head");return a.append(this.editing.input),t.append(a),t}card(e){let t=this.dom.ownerDocument,a=this.board.cards[e],o=i(t,"button","page-board-card",{type:"button","aria-haspopup":"dialog","aria-expanded":String(this.isOpen(e)),"data-action":"card","data-card":e,"data-focus":`card:${e}`});if(o.append(i(t,"span","page-board-title",{},a.title||"Untitled")),a.owner||a.due){let r=i(t,"span","page-board-meta");if(a.owner){let n=i(t,"span","page-board-owner");n.append(k(t,a.owner),i(t,"span","page-board-owner-name",{},a.owner)),r.append(n)}a.due&&r.append(V(t,a.due)),o.append(r)}return o}tray(e,t,a,o){let r=this.dom.ownerDocument,n=`${this.uid}-missing-${a}`,d=i(r,"div","page-board-tray",{role:"group","aria-labelledby":n,"data-col":e}),l=i(r,"div","page-board-tray-head");l.append(i(r,"h4","page-board-name",{id:n},o?`Cards from deleted column \u201C${o.name||"Untitled"}\u201D`:"Cards from a deleted column"),S(r,t.length)),o&&l.append(h(r,"page-board-btn page-board-restore","restore","Restore column",{"data-action":"restore-column","data-col":e,"data-focus":`restore:${e}`}));let p=i(r,"ol","page-board-cards");for(let c of t){let b=i(r,"li");b.append(this.card(c),this.moveSelect(c)),p.append(b)}return d.append(l,p),d}deletedTray(e,t){let a=this.dom.ownerDocument,o=i(a,"div","page-board-tray page-board-deleted",{role:"group","aria-label":"Deleted cards"}),r=i(a,"div","page-board-tray-head");if(r.append(h(a,"page-board-btn page-board-deleted-toggle","chevron",`Deleted cards (${e.length})`,{"aria-expanded":String(!!this.showDeleted),"data-action":"toggle-deleted","data-focus":"toggle-deleted"})),o.append(r),!this.showDeleted)return o;let n=i(a,"ol","page-board-deleted-list");for(let d of e.sort((l,p)=>(t[l].pos??"")<(t[p].pos??"")?-1:1)){let l=t[d].title||"Untitled",p=i(a,"li","page-board-deleted-item");p.append(i(a,"span","page-board-title",{},l),h(a,"page-board-btn page-board-restore","restore","Restore",{"aria-label":`Restore ${l}`,"data-action":"restore-card","data-card":d,"data-focus":`restore-card:${d}`})),n.append(p)}return o.append(n),o}moveSelect(e){let t=this.dom.ownerDocument,a=i(t,"span","page-board-select page-board-move"),o=i(t,"select",null,{"aria-label":`Move ${this.board.cards[e].title||"Untitled"} to column`,"data-action":"orphan-move","data-card":e,"data-focus":`move:${e}`,disabled:!this.board.columnIds.length});o.append(i(t,"option",null,{value:"",selected:!0,disabled:!0,hidden:!0},"Move to column"));for(let r of this.board.columnIds)o.append(i(t,"option",null,{value:r},this.board.columns[r].name||"Untitled"));return a.append(o),a.insertAdjacentHTML("beforeend",v.chevron),a}columnMenu(e,t,a){let o=this.dom.ownerDocument,r=this.board.columnIds.length-1,n=i(o,"div","page-board-pop page-board-menu",{role:"menu","aria-label":`${a} column`}),d=(l,p,c,b=!1)=>h(o,`page-board-option${l==="delete-column"?" is-danger":""}`,c,p,{role:"menuitem","data-action":l,"data-col":e,"data-focus":`${l}:${e}`,disabled:b});return n.append(d("rename","Rename","pencil"),d("left","Move left","left",t===0),d("right","Move right","right",t===r),i(o,"div","page-board-sep",{role:"separator"}),d("delete-column","Delete column","trash")),n}isOpen(e){return this.panel?.isOpen(this.blockId,e)??!1}openMenu(e){this.menu=e,this.render(),this.dom.querySelector(".page-board-menu .page-board-option:not(:disabled)")?.focus()}closeMenu(e){let t=this.menu;this.menu=null,this.dom.querySelector(".page-board-menu")?.remove();for(let a of this.dom.querySelectorAll(".page-board-colmenu"))a.setAttribute("aria-expanded","false");e&&this.focusKey(`colmenu:${t}`)}inlineInput(e,t,a,o=""){let r=i(this.dom.ownerDocument,"input",e,{type:"text","aria-label":t,"data-focus":a,placeholder:e==="page-board-new"?"Card title":"Column name"});return r.value=o,r.addEventListener("keydown",n=>{n.isComposing||n.keyCode===229||(n.key==="Enter"?(n.preventDefault(),this.finishEdit(!0,!0)):n.key==="Escape"&&(n.preventDefault(),this.finishEdit(!1,!0)))}),r.addEventListener("blur",()=>{this.rendering||setTimeout(()=>{this.editing?.input===r&&r.ownerDocument.activeElement!==r&&this.finishEdit(!0,!1)},0)}),r}startEdit(e,t){this.editing&&this.finishEdit(!0,!1),this.menu=null;let a=e==="rename"?this.board.columns[t]?.name??"":"",o=e==="card"?`new:${t}`:e==="column"?"new-column":`name:${t}`,r=this.inlineInput(e==="card"?"page-board-new":"page-board-rename",e==="card"?"New card title":"Column name",o,a);this.editing={kind:e,id:t,input:r},this.render(),r.focus(),r.select()}finishEdit(e,t){let a=this.editing;if(!a)return;let o=a.input.value.trim();if(a.kind==="card"&&e&&o&&t){if(this.run("createCard",{columnId:a.id,title:o})?.status!=="refused")a.input.value="";else if(!this.board.columns[a.id]){this.editing=null,this.render(),this.focusKey("add-column");return}this.focusKey(`new:${a.id}`);return}this.editing=null;let r=a.kind==="column"?"add-column":a.kind==="card"?`add:${a.id}`:`colmenu:${a.id}`;if(e&&o)if(a.kind==="card")this.run("createCard",{columnId:a.id,title:o});else if(a.kind==="column"){let n=this.run("createColumn",{name:o});n.status==="created"&&(r=`add:${n.id}`)}else o!==this.board.columns[a.id]?.name&&this.run("renameColumn",a.id,o);this.render(),t&&this.focusKey(r)}shiftColumn(e,t){let a=this.board.columnIds,o=a.indexOf(e);this.menu=null,this.run("moveColumn",e,{afterId:t<0?L(a,o):a[o+1]}),this.render(),this.focusKey(`colmenu:${e}`)}deleteColumn(e){let t=this.board.columnIds,a=t[t.indexOf(e)+1]??t[t.indexOf(e)-1];this.menu=null;let o=this.run("removeColumn",e);this.render(),o.status==="removed"&&(g(this.view,o.cards?"Column deleted. Its cards are under Cards from a deleted column.":"Column deleted"),!this.focusKey(`restore:${e}`)&&!this.focusKey(`colmenu:${a}`)&&this.focusKey("add-column"))}restoreCard(e){this.run("restoreCard",e).status==="restored"&&(g(this.view,"Card restored"),this.focusKey(`card:${e}`)||this.focusKey("toggle-deleted"))}restoreColumn(e){this.run("restoreColumn",e).status==="restored"&&(g(this.view,"Column restored"),this.focusKey(`colmenu:${e}`))}openCard(e){this.menu=null,this.dom.querySelector(".page-board-menu")?.remove(),this.panel?.open(this.blockId,e,{commands:this.commands,undo:this.undo,redo:this.redo})}click(e){let t=e.target.closest?.("[data-action]");if(!t||!this.dom.contains(t)||t.disabled)return;let{action:a,col:o,card:r}=t.dataset;this.editing&&a!=="add-card"&&a!=="add-column"&&a!=="rename"&&this.finishEdit(!0,!1),a==="card"?this.openCard(r):a==="colmenu"?this.menu===o?this.closeMenu(!0):this.openMenu(o):a==="rename"?this.startEdit("rename",o):a==="left"||a==="right"?this.shiftColumn(o,a==="left"?-1:1):a==="delete-column"?this.deleteColumn(o):a==="add-card"?this.startEdit("card",o):a==="add-column"?this.startEdit("column",null):a==="restore-column"?this.restoreColumn(o):a==="restore-card"?this.restoreCard(r):a==="toggle-deleted"&&(this.showDeleted=!this.showDeleted,this.render(),this.focusKey("toggle-deleted"))}change(e){let t=e.target;if(t.dataset?.action!=="orphan-move"||!t.value)return;let a=t.dataset.card,o=t.value,r=this.board.lanes.get(o)??[];this.run("moveCard",a,{columnId:o,afterId:r[r.length-1]??null}).status==="moved"&&this.focusKey(`card:${a}`)}keydown(e){let t=e.key.toLowerCase();if((e.metaKey||e.ctrlKey)&&(t==="z"||t==="y")&&!_(e.target)){e.preventDefault(),t==="y"||e.shiftKey?this.redo?.():this.undo?.();return}let a=e.target.closest?.(".page-board-menu");if(a){if(e.key==="Escape"||e.key==="Tab")e.preventDefault(),this.closeMenu(!0);else if(e.key==="ArrowDown"||e.key==="ArrowUp"){e.preventDefault();let o=[...a.querySelectorAll(".page-board-option:not(:disabled)")],r=o.indexOf(e.target);o[(r+(e.key==="ArrowDown"?1:-1)+o.length)%o.length]?.focus()}}}focusout(e){if(this.rendering||this.menu===null)return;let t=this.dom.querySelector(".page-board-menu");t?.contains(e.target)&&!t.contains(e.relatedTarget)&&this.closeMenu(!1)}update(e){if(e.type!==X.board||e.attrs.id!==this.node.attrs.id)return!1;let t=!e.sameMarkup(this.node);return this.node=e,t&&this.render(),!0}stopEvent(){return!0}ignoreMutation(){return!0}destroy(){let e=$.get(this.view),t=e?.get(this.blockId);this.editing&&t&&t!==this&&(t.editing=this.editing,t.render()),t===this&&e.delete(this.blockId),this.dragger.stop()}};var f=new WeakMap;var W="(max-width: 1039.98px)",Z=s=>/^(INPUT|TEXTAREA|SELECT)$/.test(s?.tagName??""),G=0;function U(s){return f.has(s)||f.set(s,new B(s)),f.get(s)}var B=class{constructor(e){this.view=e,this.blockId=null,this.cardId=null,this.host=null,this.node=null,this.people=[],this.dueInput=null,this.rendering=!1,this.titleBase="",this.ownerBase="";let t=e.dom.ownerDocument,a=`page-board-panel-${++G}`;this.scrim=i(t,"div","page-board-scrim",{"aria-hidden":"true"}),this.dom=i(t,"aside","page-board-panel",{role:"dialog","aria-modal":"false","aria-labelledby":`${a}-title`});let o=i(t,"div","page-board-panel-top");this.title=i(t,"textarea","page-board-panel-title",{id:`${a}-title`,rows:2,"aria-label":"Card title",spellcheck:"false","data-focus":"title"}),o.append(this.title,h(t,"page-board-icon page-board-close","close",null,{"aria-label":"Close","aria-keyshortcuts":"Escape","data-action":"close","data-focus":"close"})),this.ownerInput=i(t,"input","page-board-owner-input",{type:"text","aria-label":"Owner name",placeholder:"Or type a name\u2026","data-focus":"owner-name"}),this.fields=i(t,"div","page-board-fields"),this.actions=i(t,"div","page-board-actions"),this.dom.append(o,this.fields,this.actions),this.labels={column:`${a}-column`,owner:`${a}-owner`,due:`${a}-due`},this.textField(this.title,()=>this.commitTitle()),this.textField(this.ownerInput,()=>this.commitOwner()),this.dom.addEventListener("click",r=>this.click(r)),this.dom.addEventListener("mousedown",r=>{r.target.closest?.("button")&&r.preventDefault()}),this.dom.addEventListener("change",r=>{r.target.dataset.focus==="column"&&this.moveTo(r.target.value)}),this.dom.addEventListener("keydown",r=>this.keydown(r)),this.scrim.addEventListener("click",()=>this.hide(!0))}textField(e,t){e.addEventListener("keydown",a=>{a.isComposing||a.keyCode===229||(a.key==="Enter"&&!a.shiftKey?(a.preventDefault(),t()):a.key==="Escape"&&(a.preventDefault(),this.hide(!0)))}),e.addEventListener("blur",()=>{this.rendering||setTimeout(()=>{this.blockId!==null&&e.ownerDocument.activeElement!==e&&t()},0)})}get shell(){return this.view.dom.parentElement}isOpen(e,t){return this.blockId===e&&this.cardId===t}boardNode(){let e=null;return this.view.state.doc.forEach(t=>{!e&&t.type===y.nodes.board&&t.attrs.id===this.blockId&&(e=t)}),e}card(){return this.boardNode()?.attrs.cards?.[this.cardId]??null}boardButton(e,t){let a=[...this.view.dom.querySelectorAll(".page-board")].find(o=>o.dataset.id===e);return a?[...a.querySelectorAll("[data-focus]")].find(o=>o.dataset.focus===t&&!o.disabled)??null:null}setExpanded(e){this.boardButton(this.blockId,`card:${this.cardId}`)?.setAttribute("aria-expanded",String(e))}open(e,t,a){this.blockId!==null&&(this.commit(),this.setExpanded(!1)),this.blockId=e,this.cardId=t,this.host=a,this.dueInput=null,this.dom.isConnected||this.shell.append(this.scrim,this.dom),this.shell.classList.add("has-board-panel");let o=!!this.view.dom.ownerDocument.defaultView.matchMedia?.(W).matches;this.dom.setAttribute("aria-modal",String(o)),this.render(!0),this.setExpanded(!0),o?this.focusKey("close"):this.title.focus(),this.loadPeople()}hide(e=!1,t=!0){if(this.blockId===null)return;t&&this.commit();let{blockId:a,cardId:o}=this;this.setExpanded(!1),this.blockId=this.cardId=this.node=null,this.dueInput=null,this.scrim.remove(),this.dom.remove(),this.shell?.classList.remove("has-board-panel"),e&&this.boardButton(a,`card:${o}`)?.focus()}loadPeople(){let e=globalThis.clay?.people?.available;e&&Promise.resolve().then(()=>e()).then(t=>{this.people=(Array.isArray(t)?t:[]).filter(a=>typeof a?.name=="string"&&a.name),this.blockId!==null&&this.render(!1)}).catch(()=>{})}run(e,...t){if(!this.host?.commands||!this.view.editable)return{status:"refused",code:"read-only"};let a=this.host.commands[e](this.blockId,this.cardId,...t);return a?.status==="refused"&&this.sync(!0),a}commit(){this.commitTitle(),this.commitOwner(),this.dueInput&&this.commitDue()}commitTitle(){let e=this.card(),t=this.title.value.replace(/\s*\n\s*/g," ");this.title.value=t,e&&t!==e.title&&this.run("editCard",{title:t})}commitOwner(){let e=this.card(),t=this.ownerInput.value.trim();this.ownerInput.value=t;let a=t||null;e&&a!==(e.owner??null)&&this.run("editCard",{owner:a})}commitDue(){let e=this.card(),t=this.dueInput?.value||null;this.dueInput=null,e&&t!==(e.due??null)?this.run("editCard",{due:t}):this.blockId!==null&&this.render(!1)}openDue(){let e=this.view.dom.ownerDocument,t=i(e,"input","page-board-control page-board-date",{type:"date","aria-labelledby":this.labels.due,"data-focus":"due-input"});t.value=this.card()?.due??"",t.addEventListener("keydown",a=>{a.key==="Enter"?(a.preventDefault(),this.commitDue(),this.focusKey("due")):a.key==="Escape"&&(a.preventDefault(),a.stopPropagation(),this.dueInput=null,this.render(!1),this.focusKey("due"))}),t.addEventListener("blur",()=>{this.rendering||setTimeout(()=>{this.dueInput===t&&e.activeElement!==t&&this.commitDue()},0)}),this.dueInput=t,this.render(!1),t.focus();try{t.showPicker?.()}catch{}}sync(e=!1){if(this.blockId===null)return;let t=this.boardNode();if(!e&&t===this.node)return;let a=this.node?.attrs.cards?.[this.cardId]?.col;if(!t?.attrs.cards?.[this.cardId]){let o=this.dom.contains(this.view.dom.ownerDocument.activeElement),r=this.blockId;this.hide(!1,!1),o&&(this.boardButton(r,`add:${a}`)??this.boardButton(r,"add-column"))?.focus();return}this.render(!1)}focusKey(e){let t=[...this.dom.querySelectorAll("[data-focus]")].find(a=>a.dataset.focus===e&&!a.disabled);return t?.focus(),!!t}render(e){let t=this.view.dom.ownerDocument;this.node=this.boardNode();let a=x(this.node),o=a.cards[this.cardId];if(!o)return this.hide(!1,!1);let r=t.activeElement,n=this.dom.contains(r)?r.dataset.focus:null,d=n&&typeof r.selectionStart=="number"?[r.selectionStart,r.selectionEnd]:null;this.rendering=!0;try{let l=!e&&this.title.value!==this.titleBase;this.titleBase=o.title??"",l||(this.title.value=this.titleBase);let p=!e&&this.ownerInput.value!==this.ownerBase;this.ownerBase=o.owner??"",p||(this.ownerInput.value=this.ownerBase),this.fields.replaceChildren(this.columnField(a,o),this.ownerField(o),this.dueField(o)),this.actions.replaceChildren(...this.actionButtons(a,o)),n&&n!=="title"&&this.focusKey(n)?d&&t.activeElement.setSelectionRange?.(...d):(n==="up"||n==="down")&&this.focusKey(n==="up"?"down":"up")}finally{this.rendering=!1}}field(e,t,a,o=!1){let r=this.view.dom.ownerDocument,n=i(r,"div",`page-board-field${o?" is-owner":""}`);return n.append(i(r,"span","page-board-label",{id:this.labels[e]},t),a),n}columnField(e,t){let a=this.view.dom.ownerDocument,o=i(a,"span","page-board-select"),r=i(a,"select","page-board-control",{"aria-labelledby":this.labels.column,"data-focus":"column",disabled:!e.columnIds.length});e.lanes.has(t.col)||r.append(i(a,"option",null,{value:"",selected:!0,disabled:!0},"Deleted column"));for(let n of e.columnIds)r.append(i(a,"option",null,{value:n,selected:n===t.col},e.columns[n].name||"Untitled"));return o.append(r),o.insertAdjacentHTML("beforeend",v.chevron),this.field("column","Column",o)}ownerField(e){let t=this.view.dom.ownerDocument,a=i(t,"div","page-board-owners"),o=i(t,"div","page-board-people",{role:"group","aria-labelledby":this.labels.owner});for(let r of this.people){let n=i(t,"button","page-board-person",{type:"button","aria-pressed":String(r.name===e.owner),"data-action":"owner","data-owner":r.name,"data-focus":`owner:${r.id??r.name}`});n.append(k(t,r.name),i(t,"span",null,{},r.name)),o.append(n)}return o.append(i(t,"button","page-board-person is-none",{type:"button","aria-pressed":String(!e.owner),"data-action":"owner-none","data-focus":"owner-none"},"No owner")),a.append(o,this.ownerInput),this.field("owner","Owner",a,!0)}dueField(e){let t=this.view.dom.ownerDocument;if(this.dueInput)return this.field("due","Due",this.dueInput);let a=w(),o=e.due?M(e.due,a):null,r=e.due?A(e.due,a,!0):null,n=i(t,"button","page-board-control",{type:"button","aria-label":e.due?`Due ${r}${o==="overdue"?", overdue":""}`:"Set due date","data-action":"due","data-focus":"due"});return e.due?(n.append(i(t,"span","page-board-due",{"data-due":o},r)),o==="overdue"&&n.append(i(t,"span","page-board-due-note",{},"Overdue"))):n.append(i(t,"span","page-board-control-text page-board-none",{},"No date")),n.insertAdjacentHTML("beforeend",v.calendar),this.field("due","Due",n)}actionButtons(e,t){let a=this.view.dom.ownerDocument,o=e.lanes.get(t.col),r=o?o.indexOf(this.cardId):-1;return[h(a,"page-board-btn","up","Move up",{"data-action":"up","data-focus":"up",disabled:r<=0}),h(a,"page-board-btn","down","Move down",{"data-action":"down","data-focus":"down",disabled:r<0||r>=o.length-1}),h(a,"page-board-btn page-board-delete","trash","Delete card",{"data-action":"delete","data-focus":"delete"})]}step(e){let t=this.card(),a=t?x(this.node).lanes.get(t.col):null;if(!a)return;let o=a.indexOf(this.cardId);this.run("moveCard",{columnId:t.col,afterId:e<0?L(a,o):a[o+1]})}moveTo(e){let t=x(this.node).lanes.get(e)?.filter(a=>a!==this.cardId);t&&this.run("moveCard",{columnId:e,afterId:t[t.length-1]??null})}remove(){let e=this.card();if(!e)return;let t=x(this.node),a=t.lanes.get(e.col)??t.missing.get(e.col)??[],o=a.indexOf(this.cardId),r=a[o+1]??a[o-1],{blockId:n,cardId:d,host:l}=this;if(this.hide(!1,!1),!l?.commands||!this.view.editable||l.commands.removeCard(n,d).status!=="removed")return;g(this.view,"Card deleted"),(r&&this.boardButton(n,`card:${r}`)||this.boardButton(n,`add:${e.col}`)||this.boardButton(n,"add-column"))?.focus()}click(e){let t=e.target.closest?.("[data-action]");if(!t||t.disabled)return;let a=t.dataset.action;a!=="close"&&this.commitTitle(),a==="close"?this.hide(!0):a==="owner"?(this.ownerInput.value=this.ownerBase,this.run("editCard",{owner:t.dataset.owner})):a==="owner-none"?(this.ownerInput.value=this.ownerBase,this.run("editCard",{owner:null})):a==="due"?this.openDue():a==="up"||a==="down"?this.step(a==="up"?-1:1):a==="delete"&&this.remove()}keydown(e){let t=e.key.toLowerCase();if(!e.defaultPrevented){if(e.key==="Escape")e.preventDefault(),this.hide(!0);else if((e.metaKey||e.ctrlKey)&&(t==="z"||t==="y")&&!Z(e.target))e.preventDefault(),t==="y"||e.shiftKey?this.host?.redo?.():this.host?.undo?.();else if(e.key==="Tab"&&this.dom.getAttribute("aria-modal")==="true"){let a=[...this.dom.querySelectorAll("button, input, select, textarea")].filter(o=>!o.disabled);if(e.target!==a[e.shiftKey?0:a.length-1])return;e.preventDefault(),a[e.shiftKey?a.length-1:0].focus()}}}};function we({view:s=null,board:e=null,undo:t=null,redo:a=null}={}){let o=s?O(s,{update:r=>f.get(r)?.sync(),destroy:r=>{f.get(r)?.hide(!1,!1),f.delete(r)}}):()=>{};return{id:"board",nodeViews:e?{board:(r,n,d)=>new E(r,n,d,{commands:e,undo:t,redo:a,panel:U(n)})}:null,css:e?z:null,dispose(){o()}}}export{we as createFeature};
@@ -0,0 +1 @@
1
+ import{k as g,p as k}from"./c-LWLBHLVC.js";import{a as l,b as n,c as d,h as p}from"./c-DCXOXBF3.js";var b=3e4;function a(){return{ok:!1,code:"failed"}}async function T(o,{etag:r}={}){if(typeof o!="string"||o==="")return a();let m=typeof r=="string"&&r?r:null;if(n()||await p(),!n())return{ok:!1,code:"unsupported"};let s=m||l();if(!s)return{ok:!1,code:"conflict"};let i=new AbortController,y=setTimeout(()=>i.abort(),b);try{let{url:c,options:S}=k(o,!0,i.signal,g(),s),t=await fetch(c,S),f=await t.text(),e={};if(f)try{e=JSON.parse(f)}catch{e={}}if(!t.ok)return t.status===412?{ok:!1,code:"conflict"}:t.status===401||t.status===403?{ok:!1,code:"forbidden"}:a();let u=typeof e.etag=="string"&&e.etag?e.etag:null;return d(u),{ok:!0,etag:u}}catch{return a()}finally{clearTimeout(y)}}export{T as a};
@@ -0,0 +1 @@
1
+ var n=new WeakMap;function a(e,r){if(!e||e.nodeType!==1)throw new TypeError("clayjs: claim needs an element to own");if(n.has(e))throw new Error(`clayjs: the article already has a ${n.get(e).kind} runtime`);let t={kind:String(r??"runtime"),active:!0};return n.set(e,t),function(){return t.active?(t.active=!1,n.get(e)===t&&n.delete(e),!0):!1}}export{a};
@@ -0,0 +1 @@
1
+ import{a as m,b as N,c as E,d as L,f as k,j as v,k as T,l as D,n as w}from"./c-OIBUTDXI.js";import{a as O}from"./c-4JZDZFF6.js";import{b as F,e as g,f as I,g as f}from"./c-VAK7SG37.js";import{a as C,b as c}from"./c-NUHP2XDB.js";var M=new WeakMap,H='a[href], input:not([disabled]):not([type="hidden"]), select:not([disabled]), textarea:not([disabled]), button:not([disabled]), [contenteditable], [tabindex]:not([tabindex^="-"])';function U(u,l){let t=[...u.querySelectorAll(H)].filter(r=>r.offsetParent!==null);if(!t.length)return;let d=t.indexOf(document.activeElement);d===-1?(t[0].focus(),l.preventDefault()):l.shiftKey&&d===0?(t[t.length-1].focus(),l.preventDefault()):!l.shiftKey&&d===t.length-1&&(t[0].focus(),l.preventDefault())}var P=`1px solid ${g["line-2"]}`;function B(u,l,t=null,d=[],r=[]){let x=f.dialogCloseHover[0].slice(11),b=["position:absolute","top:-1px","right:-1px","z-index:2","display:grid","place-items:center",l?"height:calc(100% + 1px)":"height:62px","margin:0","padding:0","border:0",...f.dialogClose,...l?[]:[`border-bottom:${P}`],"cursor:pointer","outline:none"],e=v("button",b);if(e.type="button",e.setAttribute("aria-label",u),e.title=u,e.innerHTML=I.dialogClose,!m(t))return k(e.firstElementChild,16),e.addEventListener("pointerenter",()=>c(e,"background",x)),e.addEventListener("pointerleave",()=>c(e,"background",g.face)),e.addEventListener("focus",()=>{c(e,"outline",`2px solid ${g.brass}`),c(e,"outline-offset","-4px")}),e.addEventListener("blur",()=>c(e,"outline","none")),e;let n=["close",...d],s=["icon",...r];L(e,t,n),L(e.firstElementChild,t,s);let o={hover:!1,focus:!1,pressed:!1},a=()=>{let i={hover:o.hover,active:o.pressed,focus:o.focus},p=e.firstElementChild;p.style.cssText="",k(p,16),C(p,E(t,s,i)),T(e,[...b,...o.hover?[`background:${x}`]:[],...o.focus?[`outline:2px solid ${g.brass}`,"outline-offset:-4px"]:[],...N(t,"close",i),...E(t,n,i)])};return e.addEventListener("pointerenter",()=>{o.hover=!0,a()}),e.addEventListener("pointerleave",()=>{o.hover=!1,o.pressed=!1,a()}),e.addEventListener("pointerdown",i=>{i.button!==void 0&&i.button!==0||(o.pressed=!0,a())}),e.addEventListener("pointerup",()=>{o.pressed=!1,a()}),e.addEventListener("focus",()=>{o.focus=!0,a()}),e.addEventListener("blur",()=>{o.focus=!1,o.pressed=!1,a()}),a(),e}function q({zIndex:u="100",width:l="600px",closable:t=!1,titled:d=!1,theme:r=null,surface:x="modal"}={}){let b=m(r),e=b?r.tokens:{},n=e.spacing,s=y=>x==="modal"?[`dialog.${y}`]:[`dialog.${y}`,`${x}.${y}`],o=v("div",["display:block"],{theme:r,parts:s("root")});o.setAttribute("data-clay-modal",""),b&&o.setAttribute("data-clay-ui",x),o.setAttribute("aria-hidden","true"),c(o,"color-scheme",b?r.scheme:O());let a=v("div",["position:fixed","inset:0",`z-index:${u}`,"overflow:auto","display:flex","align-items:flex-start","justify-content:center","padding:min(96px, 10vh) 16px 16px",`background:color-mix(in srgb, ${g.ground} 72%, transparent)`],{theme:r,parts:s("overlay"),role:"overlay"});a.tabIndex=-1;let i=D("form",["position:relative","display:flex","flex-direction:column","margin:0",`width:min(${l}, 100%)`,"max-height:calc(100dvh - min(96px, 10vh) - 16px)",...f.dialogPanel],{theme:r,parts:s("panel")});i.setAttribute("role","dialog"),i.setAttribute("aria-modal","true");let p=null,$=null;d&&(p=v("div",["position:relative","display:block","flex:none",`padding:20px ${t?"68px":"22px"} 16px 22px`,...f.dialogHeader,...e.border?[`border-bottom-color:${e.border}`]:[],...n?[`padding:${n} ${t?`calc(${n} + 46px)`:n} calc(${n} * .7) ${n}`]:[]],{theme:r,parts:s("header")}),$=w("div",["display:block",...f.dialogHeading,"overflow-wrap:anywhere"],void 0,{theme:r,parts:s("title"),role:"heading"}),$.setAttribute("role","heading"),$.setAttribute("aria-level","2"),p.append($),i.append(p));let A=w("div",["display:block","flex:1 1 auto","min-height:0","overflow-y:auto","overflow-x:hidden",`padding:20px ${t&&!d?"84px":"22px"} 20px 22px`,"overflow-wrap:anywhere",`font:14.5px/1.55 ${F}`,...n?[`padding:${n} ${t&&!d?`calc(${n} + 62px)`:n} ${n} ${n}`]:[]],void 0,{theme:r,parts:s("body")}),S=v("div",["display:flex","flex:none","flex-wrap:wrap","justify-content:flex-end","align-items:center",...f.dialogFooter,...e.border?[`border-top-color:${e.border}`]:[],...n?[`padding:calc(${n} * .65) ${n}`,`gap:calc(${n} / 2)`]:[]],{theme:r,parts:[...s("footer"),...s("actions")]});i.append(A,S);let h=t?B("Close",d,r,s("close"),s("closeIcon")):null;return h&&(p||i).append(h),a.append(i),o.append(a),{root:o,overlay:a,panel:i,header:p,heading:$,body:A,footer:S,close:h,theme:r}}export{M as a,U as b,q as c};
@@ -0,0 +1 @@
1
+ var O=/^(0|[1-9]\d*)$/,E=new Set(["set","del","add"]),s=e=>e!==null&&typeof e=="object",y=(e,t)=>Object.prototype.hasOwnProperty.call(e,t);function f(e,t,n){Object.defineProperty(e,t,{value:n,enumerable:!0,writable:!0,configurable:!0})}function j(e){if(Array.isArray(e)){for(let t of e)T(t);return e.slice()}if(typeof e!="string")throw new TypeError("clay.live: a path is a dotted string or an array of keys");return e===""?[]:e.split(".").map(t=>O.test(t)?Number(t):t)}function T(e){if(typeof e!="string"&&!(Number.isInteger(e)&&e>=0))throw new TypeError(`clay.live: path segment ${String(e)} is not a string or a non-negative integer`)}function a(e,t=new Set){if(e===null||typeof e=="string"||typeof e=="boolean")return e;if(typeof e=="number"){if(!Number.isFinite(e))throw new TypeError("clay.live: numbers must be finite");return e}if(typeof e!="object")throw new TypeError(`clay.live: a ${typeof e} is not JSON`);if(t.has(e))throw new TypeError("clay.live: the value contains a cycle");t.add(e);let n;if(Array.isArray(e)){n=[];for(let r=0;r<e.length;r++){if(!(r in e))throw new TypeError("clay.live: sparse arrays are not JSON");n.push(a(e[r],t))}}else{let r=Object.getPrototypeOf(e);if(r!==Object.prototype&&r!==null)throw new TypeError("clay.live: only plain objects and arrays are JSON");n={};for(let i of Object.keys(e))f(n,i,a(e[i],t))}return t.delete(e),n}function C(e){if(!s(e)||!E.has(e.op))throw new TypeError('clay.live: an op is { op: "set" | "del" | "add", path, ... }');let t=j(e.path);if(e.op==="set"){if(e.value===void 0)throw new TypeError("clay.live: set needs a value; use delete to remove");let n=a(e.value);if(t.length===0&&!s(n))throw new TypeError("clay.live: the whole value must be an object or an array");return{op:"set",path:t,value:n}}if(t.length===0)throw new TypeError(`clay.live: ${e.op} needs a path`);if(e.op==="add"){if(typeof e.n!="number"||!Number.isFinite(e.n))throw new TypeError("clay.live: add needs a finite number");return{op:"add",path:t,n:e.n}}return{op:"del",path:t}}function p(e,t){return typeof t=="number"?t:O.test(t)?Number(t):-1}function d(e,t){if(Array.isArray(e)){let r=p(e,t);return r>=0&&r<e.length?e[r]:void 0}let n=String(t);return y(e,n)?e[n]:void 0}function x(e,t){if(t.path.length===0){if(t.op==="set"&&(!s(t.value)||Array.isArray(t.value)!==Array.isArray(e)))throw new TypeError(`clay.live: the whole value must stay ${Array.isArray(e)?"a list":"an object"}`);return}let n=e;for(let r=0;r<t.path.length;r++){let i=t.path[r],o=r===t.path.length-1;if(!s(n)){if(t.op==="del")return;for(let l=r;l<t.path.length;l++)if(typeof t.path[l]=="number"&&t.path[l]!==0)throw new RangeError(`clay.live: index ${t.path[l]} would leave holes in a new list at ${t.path.slice(0,l).join(".")||"the root"}`);return}if(Array.isArray(n)){let l=p(n,i);if(l<0)throw new TypeError(`clay.live: "${i}" is not an index of the list at ${t.path.slice(0,r).join(".")||"the root"}`);let u=o&&t.op!=="del"?n.length:n.length-1;if(l>u&&!(o&&t.op==="del"))throw new RangeError(`clay.live: index ${l} is past the end of the list at ${t.path.slice(0,r).join(".")||"the root"}`)}if(o)return;n=d(n,i)}}function A(e,t,n){Array.isArray(e)?e[p(e,t)]=n:f(e,String(t),n)}function S(e,t){let{path:n}=t;if(n.length===0)return a(t.value);let r=e;for(let o=0;o<n.length-1;o++){let l=d(r,n[o]);if(!s(l)){if(t.op==="del")return e;l=typeof n[o+1]=="number"?[]:{},A(r,n[o],l)}r=l}let i=n[n.length-1];if(t.op==="set")A(r,i,a(t.value));else if(t.op==="add"){let o=d(r,i);A(r,i,(typeof o=="number"&&Number.isFinite(o)?o:0)+t.n)}else if(Array.isArray(r)){let o=p(r,i);o>=0&&o<r.length&&r.splice(o,1)}else delete r[String(i)];return e}function F(e,t){let n=e;for(let r of t)x(n,r),n=S(n,r);return n}function M(e,t){x(e,t);let{path:n}=t;if(n.length===0)return{root:a(t.value),at:null,key:null,kind:"put",old:e,path:[],size:0,keys:null,empty:!1};let r=e,i=n.length-1;for(let c=0;c<n.length-1;c++){let k=d(r,n[c]);if(!s(k)){if(t.op==="del")return null;i=c;break}r=k}let o=Array.isArray(r),l=o?p(r,n[i]):String(n[i]),u=o?r.length:0,g=o?l<u:y(r,l);if(t.op==="del"&&!g)return null;let w=t.op==="del"?"remove":g?"put":"add",m={root:e,at:r,key:l,kind:w,old:g?r[l]:void 0,path:n.slice(0,i+1),size:u,keys:null,empty:!1};return!o&&w==="remove"&&(m.keys=Object.keys(r)),!o&&w==="add"&&(m.empty=$(r)),S(e,t),m}function $(e){for(let t in e)if(y(e,t))return!1;return!0}function D(e){let{at:t,key:n,kind:r,old:i}=e;if(t===null)return i;if(Array.isArray(t))r==="put"?t[n]=i:r==="add"?t.length=e.size:t.splice(n,0,i);else if(r==="put")f(t,n,i);else if(r==="add")delete t[n];else if(e.keys[e.keys.length-1]===n)f(t,n,i);else{let o=e.keys.map(l=>l===n?i:t[l]);for(let l of e.keys)l!==n&&delete t[l];e.keys.forEach((l,u)=>f(t,l,o[u]))}return e.root}var N=(e,t)=>e.length===t.length&&e.every((n,r)=>String(n)===String(t[r]));function I(e){let t=[];for(let n of e){let r=t[t.length-1];if(!r||r.op==="del"||!N(r.path,n.path)){t.push(n);continue}if(n.op==="del"&&n.path.length>1)t.push(n);else if(n.op==="set"||n.op==="del")t[t.length-1]=n;else if(r.op==="add")t[t.length-1]={op:"add",path:r.path,n:r.n+n.n};else{let i=typeof r.value=="number"?r.value:0;t[t.length-1]={op:"set",path:r.path,value:i+n.n}}}return t}function R(e,t){let n=Math.min(e.length,t.length);for(let r=0;r<n;r++)if(String(e[r])!==String(t[r]))return!1;return!0}function P(e,t){if(Array.isArray(e)){for(let i=0;i<t.length;i++)e[i]=b(i<e.length?e[i]:void 0,t[i]);return e.length=t.length,e}let n=Object.keys(t),r=n.map(i=>b(y(e,i)?e[i]:void 0,t[i]));for(let i of Object.keys(e))delete e[i];return n.forEach((i,o)=>f(e,i,r[o])),e}function b(e,t){return s(e)&&s(t)&&Array.isArray(e)===Array.isArray(t)?P(e,t):t}function h(e){return JSON.stringify(e).replace(/</g,"\\u003c")}var J=/^([A-Za-z0-9-]{1,64}):(0|[1-9]\d*):([0-9a-f]{8})$/;function z(e){let t=2166136261;for(let n=0;n<e.length;n++)t^=e.charCodeAt(n),t=Math.imul(t,16777619)>>>0;return t.toString(16).padStart(8,"0")}function q(e,t,n){return`${e}:${t}:${z(n)}`}function H(e){let t=typeof e=="string"?J.exec(e):null;return t?{epoch:t[1],seq:Number(t[2]),hash:t[3]}:null}function v(e,t,n=[]){if(!s(e)||!s(t)||Array.isArray(e)!==Array.isArray(t))return[{op:"set",path:n,value:a(t)}];if(Array.isArray(e)){if(e.length!==t.length)return[{op:"set",path:n,value:a(t)}];let i=[];for(let o=0;o<t.length;o++)h(e[o])!==h(t[o])&&i.push(...v(e[o],t[o],[...n,o]));return i}let r=[];for(let i of Object.keys(e))y(t,i)||r.push({op:"del",path:[...n,i]});for(let i of Object.keys(t))y(e,i)?h(e[i])!==h(t[i])&&r.push(...v(e[i],t[i],[...n,i])):r.push({op:"set",path:[...n,i],value:a(t[i])});return r}export{a,C as b,x as c,S as d,F as e,M as f,D as g,I as h,R as i,P as j,h as k,z as l,q as m,H as n,v as o};
@@ -0,0 +1,3 @@
1
+ import{f as te,g as ne}from"./c-SDAXDM2D.js";import{a as ee}from"./c-TQEMVJCS.js";import{a as Z,b as Q,c as k}from"./c-DCXOXBF3.js";import{d as x}from"./c-VRZN56XY.js";import{c as K,e as W,g as X}from"./c-IJUK2GPW.js";import{b as O,e as P}from"./c-OW5QIGG3.js";import{c as z}from"./c-BPF2NSPV.js";import{g as G}from"./c-N7JPUPGC.js";import{a as R,g as q,h as V,i as Y}from"./c-SPIORRYS.js";var L=null,oe=null,w=null;function ve(e){let t=e?.document?.maxBytes;return Number.isSafeInteger(t)&&t>0?t:null}function re(e){return L=ve(e),oe=e?.document?.maxBytesMeasures==="file"?"file":null,L}var ye=/<script\b[^>]*\bmerge=(["'])page\1[^>]*>[\s\S]*?<\/script\s*>/i;function N(e,t=oe){if(t!=="file"||typeof e!="string")return e;let n=ye.exec(e);if(!n)return e;let o=n.index,s=o+n[0].length,r=e.lastIndexOf(`
2
+ `,o-1)+1,l=e.indexOf(`
3
+ `,s),c=l===-1?e.length:l+1;return!/\S/.test(e.slice(r,o))&&!/\S/.test(e.slice(s,c))&&(o=r,s=c),e.slice(0,o)+e.slice(s)}function U(e,t){let n=new TextEncoder().encode(e).byteLength,o=Number.isSafeInteger(t)&&t>0;return{bytes:n,maxBytes:o?t:null,state:o?n>t?"over":n>=Math.ceil(t*.8)?"near":"ok":"unknown"}}function ie(){return L}function b({fresh:e=!1}={}){return e?(w=x({fresh:!0}).then(re),w):(w||(w=x().then(re)),w)}function dt({fresh:e=!1}={}){return b({fresh:e}).then(t=>({maxBytes:t}))}async function ht(e){let t=await b();return U(N(e),t)}function se(e){let t=new CustomEvent("clay:save-size",{detail:e});document.dispatchEvent(t),(e.state==="near"||e.state==="over")&&import("./c-IEM4NTCS.js").then(n=>n.start(t),()=>{})}var E="/_/clayjs/",Se=/[\u0000-\u001F\u007F]/,xe=/^[\t\n\f\r ]|[\t\n\f\r ]$/,we=/^https:\/\/clayjs\.com\/v(\d+)\/([\s\S]*)$/,Ae=/^https:\/\/clayjs\.com\/(\d+)\.(\d+)\.(\d+)\/([\s\S]*)$/,ae=/^\/_\/clayjs\/(\d+)\.(\d+)\.(\d+)\/([\s\S]*)$/,Te=/%2e|%2f|%5c/i;function $e(e){if(typeof e!="string")return null;let t=/^(\d+)\.\d+\.\d+$/.exec(e);return t?t[1]:null}function Oe(e){if(typeof e!="string"||e==="")return null;try{return new URL(e).origin}catch{return null}}function Re(e){let t=e.indexOf("#"),n=t<0?"":e.slice(t),o=t<0?e:e.slice(0,t),s=o.indexOf("?"),r=s<0?"":o.slice(s);return{head:s<0?o:o.slice(0,s),search:r,hash:n}}function ke(e){if(e===""||e.includes("\\")||Te.test(e))return null;let t=e.split("/"),n=[];for(let o of t){if(o===""||o==="."||o==="..")return null;let s;try{s=decodeURIComponent(o)}catch{return null}if(s.includes("/")||s.includes("\\")||s==="."||s==="..")return null;n.push(s)}return n.join("/")}function A(e,{documentURL:t}={}){if(typeof e!="string"||e===""||xe.test(e)||Se.test(e))return null;let{head:n,search:o,hash:s}=Re(e),r=null,l=null,c=null,u=null,i=we.exec(n);if(i&&(r="rolling",c=i[1],u=i[2]),r||(i=Ae.exec(n),i&&(r="exact",l=`${i[1]}.${i[2]}.${i[3]}`,c=i[1],u=i[4])),r||(i=ae.exec(n),i&&(r="local",l=`${i[1]}.${i[2]}.${i[3]}`,c=i[1],u=i[4])),!r){let f=Oe(t);f&&n.startsWith(`${f}/`)&&(i=ae.exec(n.slice(f.length)),i&&(r="local",l=`${i[1]}.${i[2]}.${i[3]}`,c=i[1],u=i[4]))}if(!r)return null;let a=ke(u);return a===null?null:{kind:r,major:c,version:l,rawPath:u,path:a,search:o,hash:s}}function be(e,t){let n=e&&typeof e=="object"?e[t]:null;return n&&typeof n.files=="object"&&n.files?n.files:null}function Ee(e){return!e||typeof e!="object"?[]:Array.isArray(e.entries)?e.entries.filter(t=>t&&typeof t=="object"):[]}function Me(e,t,n){if(!n)return!0;let o=be(n,t);return!!(o&&Object.hasOwn(o,e.path))}function le(e,{descriptor:t,releases:n,documentURL:o,aliases:s}={}){let r=A(e,{documentURL:o});if(!r||r.kind!=="local")return e;let l=Ee(t),c=$e(r.version);for(let u of l){if(u.local!==e||typeof u.original!="string")continue;let i=n?.[r.version]?.aliases??s;if(i&&typeof i=="object"&&!r.search&&!r.hash&&Object.hasOwn(i,u.original)&&i[u.original]===r.path)return u.original;let a=A(u.original);if(a&&!(a.kind!=="rolling"&&a.kind!=="exact")&&a.rawPath===r.rawPath&&a.search===r.search&&a.hash===r.hash&&!(a.kind==="rolling"?a.major!==c:a.version!==r.version)&&Me(r,r.version,n))return a.kind==="exact"?u.original:`https://clayjs.com/v${a.major}/${r.rawPath}${r.search}${r.hash}`}for(let u of l){if(typeof u.original!="string")continue;let i=A(u.original);if(i&&!(i.kind!=="rolling"&&i.kind!=="exact")&&i.rawPath===r.rawPath&&!(i.kind==="rolling"?i.major!==c:i.version!==r.version))return i.kind==="rolling"?`https://clayjs.com/v${i.major}/${r.rawPath}${r.search}${r.hash}`:`https://clayjs.com/${i.version}/${r.rawPath}${r.search}${r.hash}`}return`https://clayjs.com/${r.version}/${r.rawPath}${r.search}${r.hash}`}var je=Object.freeze({"https://cdn.jsdelivr.net/npm/overtype@2.6.1/dist/overtype.min.js":"compat/overtype-2.6.1.min.js","https://cdnjs.cloudflare.com/ajax/libs/highlight.js/11.9.0/highlight.min.js":"compat/highlight-11.9.0.min.js","https://fonts.googleapis.com/css2?family=IBM+Plex+Mono:ital,wght@0,300;0,400;0,500;0,600;1,400;1,500&family=IBM+Plex+Sans:wght@400;500;600&display=swap":"fonts/ibm-plex.css"}),_="clay-runtime-map",Ie=new Set(["stylesheet","preload","modulepreload"]),ue=null,C=null;function Pe(e){let t;try{t=JSON.parse(e)}catch{return null}return!t||typeof t!="object"||t.schema!==1?null:t}function Le(){if(typeof document>"u")return null;let e=document.getElementById(_);if(!e)return null;let t=e.textContent??"";return t===ue||(ue=t,C=Pe(t)),C}var Ne=`script[src*="${E}"], link[href*="${E}"], #${_}`;function ce(e){if(e.querySelector(Ne))return!0;for(let t of e.querySelectorAll("template"))if(ce(t.content))return!0;return!1}function Ue(e){let t=[],n=[e];for(;n.length;){let o=n.pop();for(let s of o.children??[])t.push(s),n.push(s),s.content&&n.push(s.content)}return t}function Ce(e){return e.tagName==="SCRIPT"&&e.hasAttribute("src")?"src":e.tagName!=="LINK"||!e.hasAttribute("href")?null:(e.getAttribute("rel")??"").toLowerCase().split(/\s+/).some(n=>Ie.has(n))?"href":null}function _e(e){if(!e||!ce(e))return;let t=[],n=!1;for(let r of Ue(e)){if(r.getAttribute("id")===_){r.remove();continue}let l=Ce(r);l&&(t.push({element:r,name:l}),!n&&(r.getAttribute(l)??"").includes(E)&&(n=!0))}if(!n)return;let o=location.href,s=Le();for(let{element:r,name:l}of t){let c=r.getAttribute(l),u=A(c,{documentURL:o});!u||u.kind!=="local"||r.setAttribute(l,le(c,{descriptor:s,documentURL:o,aliases:je}))}}Y(_e);var v=!1,fe="/_/save",Fe=12e3,He=6e4,I=!1,ge=[],F=new Map;function It(e,t){t==null?F.delete(e):F.set(e,String(t))}async function Pt(e,t){I=!!e;try{return await t()}finally{I=!1}}function Lt(){return v}function Nt(e){ge.push(e)}function de(e,t,n=null){for(let o of ge)try{o(e,n?{captureId:t??null,artifact:n}:{captureId:t??null})}catch(s){console.error("clayjs: onSaveAccepted hook failed:",s)}}var M=[],j=[];function Ut(e){return M.push(e),()=>{let t=M.indexOf(e);t>=0&&M.splice(t,1)}}function Ct(e){return j.push(e),()=>{let t=j.indexOf(e);t>=0&&j.splice(t,1)}}function Be(e){for(let t of M)try{t(e)}catch(n){console.error("clayjs: onSaveAttempt hook failed:",n)}}function Je(e){for(let t of j)try{t(e)}catch(n){console.error("clayjs: onSaveOutcome hook failed:",n)}}function he(e){return{ok:!0,msg:e.msg??"Saved",msgType:e.msgType||"success",code:e.code??null,etag:e.etag??null}}var T=[],ze=8,g=null;function _t(){return g!==null}function pe(){let e=window.crypto?.randomUUID?.();if(e)return e;if(window.crypto?.getRandomValues){let n=new Uint8Array(16);return window.crypto.getRandomValues(n),Array.from(n,o=>o.toString(16).padStart(2,"0")).join("")}let t=()=>Math.random().toString(36).slice(2,12).padEnd(10,"0");return`${Date.now().toString(36)}-${t()}${t()}${t()}`}function Ge(e){T.push(e),T.length>ze&&T.shift()}function Ke(e){return typeof e=="string"&&e!==""&&T.includes(e)}function Dt(){T.length=0,g=null}function H(e){let t=e.name==="AbortError",n=!t&&e.status===412,o=!t&&!n&&e.code==="save-already-applied";return{ok:!1,msg:t?"Server not responding":e.message||"Save failed",msgType:t||o?"unknown":n?"conflict":"error",code:t?"timeout":n?"conflict":e.code??null,changedBy:n?e.changedBy??null:null,afterTimeout:n&&g!==null,conflictEtag:n?e.etag??null:null,status:Number.isInteger(e.status)?e.status:null,hadTimeout:t||e.hadTimeout===!0,reason:e.reason??null,retryAfter:e.retryAfter??null,saveOutcome:e.saveOutcome??null,etag:null}}function $(e){return{ok:!1,msg:e,msgType:"skipped",code:null,etag:null}}function We(e){let t=new Error(`This document is ${e.bytes} bytes; this host saves at most ${e.maxBytes}`);return t.code="save-too-large",{...H(t),sent:!1,size:e}}var y=null;function Xe(e){return y?null:(y={kind:e},y)}function qe(e){y===e&&(y=null)}function Ve(){return y?y.kind:null}function Ye(){return{ok:!1,msg:"Invalid page conversion metadata",msgType:"error",code:"invalid-header",etag:null}}var Ze=3,Qe=/^(?:(?:Mon|Tue|Wed|Thu|Fri|Sat|Sun), \d{2} (?:Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) \d{4} \d{2}:\d{2}:\d{2} GMT|(?:Monday|Tuesday|Wednesday|Thursday|Friday|Saturday|Sunday), \d{2}-(?:Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec)-\d{2} \d{2}:\d{2}:\d{2} GMT|(?:Mon|Tue|Wed|Thu|Fri|Sat|Sun) (?:Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) (?: \d|\d{2}) \d{2}:\d{2}:\d{2} \d{4})$/;function et(e){if(e==null)return null;let t=String(e).trim();if(!t)return null;if(/^-?\d+$/.test(t))return Math.max(0,Math.min(3600,Number(t)));if(!Qe.test(t))return null;let n=Date.parse(t);return Number.isNaN(n)?null:Math.max(0,Math.min(3600,Math.round((n-Date.now())/1e3)))}var tt=/^[0-9a-f]{64}$/,nt=/^[A-Za-z0-9-]{1,64}$/;function rt(e){if(e==null)return{header:null};if(typeof e!="object")return{invalid:!0};let{source:t,base:n,epoch:o}=e;return typeof n!="string"||!tt.test(n)?{invalid:!0}:t==="file"?o!=null?{invalid:!0}:{header:`v1; source=file; base=${n}`}:t==="room"?typeof o!="string"||!nt.test(o)?{invalid:!0}:{header:`v1; source=room; base=${n}; epoch=${o}`}:{invalid:!0}}function ot(e,t,n,o,s,r=!1,l=null){let c=z(),u=c?`${fe}/${c}`:fe,i={method:"POST",credentials:c?"omit":"same-origin",signal:n,headers:{"Document-URL":window.location.href,"Page-URL":window.location.href,"Save-Trigger":t?"user":"auto","Save-ID":o,[ee]:String(1)},body:e};for(let[a,f]of F)i.headers[a]=f;return l&&(i.headers["Page-Conversion"]=l),s&&(i.headers["If-Match"]=s),r&&new Blob([e]).size<He&&(i.keepalive=!0),{url:it(u),options:i}}function me(){let e=Z();return Q()&&e?e:null}function it(e){let t=window.location.origin;return!t||t==="null"?e:new URL(e,t).href}function D(e,t){let n=JSON.stringify(t);return{ok:e>=200&&e<300,status:e,statusText:e===200?"OK":"Insufficient Storage",text:()=>Promise.resolve(n)}}function st(e){let t=G();return t?Promise.resolve().then(()=>{try{return t(e),D(200,{msg:"Saved in this browser",msgType:"success"})}catch(n){return D(507,{msg:"Couldn't save in this browser. Storage is full or turned off.",msgType:"error",code:n.code||"draft-storage"})}}):Promise.resolve(D(503,{msg:"Saving in this browser is not ready yet",msgType:"error",code:"draft-not-ready"}))}function at(e,t,n,{captureId:o=null,conversionHeader:s=null,attempts:r=[]}={}){let l=new AbortController,c=setTimeout(()=>l.abort(),Fe),u=W(),i=X(),a=u||i,f=I;I=!1;let{url:h,options:S}=ot(e,a,l.signal,t,n,f,s);return Ge(t),O||(r.some(d=>d.saveId===t&&d.etag===(n??null))||r.push({saveId:t,etag:n??null}),Be({captureId:o,saveId:t,html:e,etag:n??null})),(O?st(e):fetch(h,S)).then(d=>d.text().then(J=>{let p={};if(J)try{p=JSON.parse(J)}catch{if(d.ok)throw new Error("Server sent a response that was not JSON")}if(!d.ok){let m=new Error(p.msg||p.error||`HTTP ${d.status}: ${d.statusText}`);throw m.code=d.status===413?"save-too-large":p.code??null,m.status=d.status,m.changedBy=p.changedBy??null,m.etag=p.etag??null,m.saveId=p.saveId??null,m.reason=typeof p.reason=="string"?p.reason:null,m.saveOutcome=p.saveOutcome??null,m.retryAfter=et(d.headers?.get?.("Retry-After")),m}return k(p.etag??null),g=null,p})).catch(d=>{throw console.error("Failed to save page:",d),d.name==="AbortError"&&(g={saveId:t,etag:n}),a&&K(),d}).finally(()=>{clearTimeout(c)})}async function lt(){let e=g;if(!e)return{landed:null,resend:!1};let n=(await x({fresh:!0})).document,o=typeof n?.etag=="string"&&n.etag?n.etag:null;return o?n.saveId&&n.saveId===e.saveId?(k(o),g=null,{landed:{msg:"Saved",msgType:"success",etag:o},resend:!1}):(n.saveId&&(g=null),{landed:null,resend:!!e.etag,etag:e.etag}):{landed:null,resend:!1}}async function ut(e,{captureId:t=null,conversionHeader:n=null,attempts:o=[]}={}){let s=pe(),r=me(),l=!1,c=!1,u=0,i=t??R();for(;;)try{return await at(e,s,r,{captureId:t,conversionHeader:n,attempts:o})}catch(a){if(l&&(a.hadTimeout=!0),a.name==="AbortError"){if(l)throw a;let{landed:f,resend:h,etag:S}=await lt();if(f)return f;if(!h)throw a;r=S,l=!0;continue}if(a.status===412&&!c&&Ke(a.saveId)){k(a.etag??null),g=null,s=pe(),r=me(),c=!0;continue}if(a.code==="page-converting"&&u<Ze){if(R()!==i||(u+=1,await new Promise(f=>setTimeout(f,Math.max(0,a.retryAfter??1)*1e3)),R()!==i))throw a;continue}throw a}}function B(e,t,n,o,s=null,r=0){return e=te(e,Math.max(ne(),r)),new Promise(l=>{let c=[],u=q(s),i=(h,S=!1)=>{S&&de(e,t??null,u),V(s),Je({captureId:t??null,result:h,attempts:c,sent:c.length>0}),typeof n=="function"&&n(h),l(h)};if(!P&&!window.clay?.testMode)return i($("Not in edit mode"));if(v)return i($("Save already in progress"));let a=rt(o);if(a.invalid)return i(Ye());if(v=!0,window.clay?.testMode){setTimeout(()=>{v=!1,i(he({msg:"Test mode: save skipped"}))},0);return}b();let f=U(N(e),ie());if(se(f),f.state==="over")return v=!1,i(We(f));ut(e,{captureId:t,conversionHeader:a.header,attempts:c}).then(he,H).then(h=>{v=!1,h.code==="save-too-large"&&!h.size&&(h.size=f),h.ok&&de(e,t??null,u),i(h)})})}function ct(e,t=()=>{}){return B(e,null,t,null)}function Ft(e,t,n=()=>{},{conversion:o,capture:s=null,pageFormatFloor:r}={}){return B(e,t,n,o,s,r)}function Ht({html:e,captureId:t,conversion:n}){return B(e,t??null,void 0,n)}function Bt(e,t=()=>{}){return new Promise(n=>{let o=null,s=r=>{qe(o),typeof t=="function"&&t(r),n(r)};if(!P)return s($("Not in edit mode"));if(Ve())return s($("Another document operation is in progress"));if(v)return s($("Save already in progress"));if(O)return s(!1);o=Xe("replace"),fetch(new URL(e,window.location.href).href).then(r=>{if(!r.ok)throw new Error(`Template fetch failed: HTTP ${r.status} ${r.statusText}`);return r.text()}).then(r=>ct(r)).then(s).catch(r=>{console.error("Failed to fetch template:",r),s(H(r))})})}export{b as a,dt as b,ht as c,It as d,Pt as e,Lt as f,Nt as g,Ut as h,Ct as i,_t as j,pe as k,Dt as l,Xe as m,qe as n,Ve as o,ot as p,ct as q,Ft as r,Ht as s,Bt as t};
@@ -0,0 +1 @@
1
+ var l=Object.freeze(["data","data-state","data-writer"]),n=new Set,t=null;function o(e,...r){for(let a of n)try{a[e]?.(...r)}catch(c){console.error("clay.live: stream handler failed:",c)}}function i({clientId:e,lane:r}){t={clientId:e,lane:r},o("open",t)}function s(){t&&(t=null,o("close"))}function u(e,r){l.includes(e)&&o("event",e,r)}function f(e){if(n.add(e),t)try{e.open?.(t)}catch(r){console.error("clay.live: stream handler failed:",r)}return()=>n.delete(e)}export{l as a,i as b,s as c,u as d,f as e};
@@ -0,0 +1,7 @@
1
+ import{d as Ae,h as We,i as Ve}from"./c-TRS6TM6O.js";import{a as Ne,b as Pe}from"./c-XMS6DPBR.js";import{a as _e,b as Ie}from"./c-PZ4XEPUP.js";import{e as ke,f as He,g as U,h as Ke,l as re,m as $e,n as p}from"./c-OIBUTDXI.js";import"./c-4JZDZFF6.js";import{b as K,c as Z,e as l,f as Ye}from"./c-VAK7SG37.js";import"./c-MFP2ZWD4.js";import{b as $,c as Fe}from"./c-NUHP2XDB.js";import{a as Ue,q as W}from"./c-TCJTVAFN.js";import"./c-GQ6F6IDK.js";import"./c-2SPVQSHC.js";import"./c-5VYOWDTI.js";import{f as Te}from"./c-QJ4OM3G6.js";import"./c-MKSQ4Y57.js";import"./c-WYFDLITL.js";import"./c-UGHH4MB3.js";import"./c-ZWIOJGMT.js";import"./c-LWLBHLVC.js";import"./c-SDAXDM2D.js";import"./c-TQEMVJCS.js";import"./c-DCXOXBF3.js";import"./c-VRZN56XY.js";import"./c-IJUK2GPW.js";import{e as Oe}from"./c-OW5QIGG3.js";import"./c-BPF2NSPV.js";import"./c-P7KNDG34.js";import"./c-CYWLPPUS.js";import"./c-N7JPUPGC.js";import"./c-SPIORRYS.js";import"./c-XQXZAO7N.js";import"./c-S7LK4KUE.js";import"./c-VG5XIN4T.js";import"./c-2YYDMLNZ.js";import"./c-HA6INT6J.js";import"./c-DCFSEJZG.js";import"./c-WRBKEJD4.js";import"./c-VHNSBD2M.js";var E="light-dark(#D08A1E, #E3A33F)",at=5e3,lt=4e3,st=500,dt={"another-tab":"in another tab","another-person":"by someone else","an-agent":"by an agent"},ct='<svg viewBox="0 0 12 12" width="12" height="12" aria-hidden="true"><path d="M2.5 9.5h7" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linecap="square"/></svg>',F=(e,t)=>`${e} ${t}${e===1?"":"s"}`,pt="This spot changed again. Review the latest edit or download your copy.",ut="A data value can't be put back from here. Download your copy to keep yours.",m="hidden",P=!1,S=[],J=new Set,M=new Set,h=null,Ee=0,_=null,v=null,le=null,u=null,R=!1,Y=!1,ve=!1,q=new Map,se=0,ae=!1,te=!1,b=null,G=null,L=null,Se=0,D=!1,de=0,ce=null,ne=null,k=[],x=[],oe=!1,pe=null,ue=null,s=null,B=null,V=new Map,z=()=>window.clay?.conflicts||null,je=()=>k.reduce((e,t)=>e+t.conflicts.length,0)+x.length,Le=()=>{let e=window.clay?.undo;return e&&typeof e.kept=="function"?e:null},fe=()=>z()?.list().filter(e=>!e.claimedBy&&e.kind!=="apply-incomplete")??[],De=()=>z()?.list().filter(e=>!e.claimedBy&&e.kind==="apply-incomplete")??[];function ze(){return _?"upgraded":h?"refused":fe().length?"replaced":De().length?"failed":k.length||x.length?"recovered":null}function f(e,t,n){let o=Fe(e,t,n);return t[0]==="all:initial"&&$(o,"color-scheme","inherit"),o.setAttribute("clay",ke),o}function O(e,t){return V.set(t,e),e}function ft(){let e=getComputedStyle(document.documentElement).colorScheme;return e==="light"||e==="dark"?e:"light dark"}function ie(){if(!s)return;let e=window.visualViewport,t=e?Math.max(0,window.innerHeight-e.height-e.offsetTop):0;$(s,"bottom",`calc(${16+t}px + env(safe-area-inset-bottom,0px))`),ne&&$(ne,"max-height",`${Math.max(160,(e?.height||window.innerHeight)-32)}px`)}function ht(){s=f("div",["all:initial","position:fixed","left:50%","transform:translateX(-50%)","z-index:2147483001","display:none","flex-direction:column","align-items:center","max-width:calc(100vw - 24px)",`font:14px/1.5 ${K}`,`color:${l.ink}`,"text-align:left"]),s.setAttribute("data-clay-conflict",""),document.body.appendChild(s),window.visualViewport?.addEventListener("resize",ie),window.visualViewport?.addEventListener("scroll",ie)}function d(){if(ae)return;ae=!0;let e=()=>{ae=!1,w()};typeof requestAnimationFrame=="function"?requestAnimationFrame(e):setTimeout(e,16)}function w(){te&&(te=!1,h&&!W()&&(h=null));let e=ze();if(e?m==="hidden"&&(m="bar"):(m="hidden",P=!1,J.clear(),M.clear(),S=[],y(),ce=null,D=!1),!s){if(m==="hidden"&&!b||!document.body)return;ht()}!s.isConnected&&document.body&&document.body.appendChild(s);let t=document.activeElement,n=null;for(let[a,r]of V)r===t&&(n=a);let o=B?B.scrollTop:0;V=new Map,B=null,ne=null,s.replaceChildren(),$(s,"color-scheme",ft()),b?s.append(wt(b)):m==="bar"?s.append(yt(e)):m==="panel"&&s.append(xt(e)),$(s,"display",b||m!=="hidden"?"flex":"none"),B&&(B.scrollTop=o);let i=L||n;i&&V.has(i)&&V.get(i).focus({preventScroll:!0}),b||(L=null),ie()}function Qe(){return f("span",["all:initial","display:inline-block","flex:none","width:8px","height:8px","border-radius:50%",`background:${E}`])}function Xe(){return dt[h?.changedBy]||null}function gt(e,t){if(e==="upgraded")return _;if(e==="refused"){let n=Xe();return!n&&h.afterTimeout?"This page changed elsewhere, possibly by your own save that timed out. Your edits here are safe.":`This page changed ${n||"elsewhere"}. Your edits here are safe.`}return e==="failed"?"A sync update did not finish. Your edits here are safe.":e==="recovered"?`${F(t,"change")} replaced before this page loaded ${t===1?"is":"are"} still here.`:`Another edit replaced ${F(t,"change")}.`}function mt(e,t){return e==="upgraded"?_:e==="refused"?`This page changed ${Xe()||"elsewhere"}`:e==="failed"?"A sync update did not finish":e==="recovered"?`${F(t,"change")} kept from before this page loaded`:`Another edit replaced ${F(t,"change")}`}function wt(e){let t=re("div",["display:block",`border-left:3px solid ${l.teal}`,"padding:10px 14px","width:max-content","max-width:calc(100vw - 24px)"]);return t.setAttribute("role","status"),t.textContent=e,t}function yt(e){let t=e==="failed"?De().length:e==="recovered"?je():fe().length,n=re("div",["display:flex","flex-wrap:wrap","align-items:center","gap:10px 12px","padding:8px 8px 8px 14px","width:max-content","max-width:calc(100vw - 24px)"]),o=gt(e,t);return o!==ce&&(n.setAttribute("role",e==="refused"?"alert":"status"),ce=o),n.append(Qe(),p("span",[],o)),e==="upgraded"?(n.append(O(U("Reload",{variant:"primary",onClick:()=>window.location.reload()}),"reload")),n):(n.append(O(U("Review",{onClick:Dt}),"review")),n)}function T(e,t,{variant:n="default",onClick:o,push:i=!1}={}){let r=window.innerWidth<480?["flex:1 1 100%",...n==="primary"?["order:-1"]:[]]:i?["margin-left:auto"]:[];return O(U(e,{variant:n,onClick:o,extra:r}),t)}function A(e){return p("div",["display:block","padding:0 16px 12px",`color:${l["ink-2"]}`,"font-size:13.5px"],e)}function xt(e){let t=e==="replaced"?fe():e==="failed"?De():[],n=e==="refused"?fe():t,o=e==="recovered"?je():t.length;if(J.size)for(let c of t)J.has(c.id)||M.add(c.id);for(let c of[...M])t.some(N=>N.id===c)||M.delete(c);let i=mt(e,o),a=Math.max(160,(window.visualViewport?.height||window.innerHeight)-32),r=re("div",["display:flex","flex-direction:column","width:520px","max-width:calc(100vw - 24px)",`max-height:${a}px`]);ne=r,r.setAttribute("role","dialog"),r.setAttribute("aria-label",i);let g=f("div",["all:initial","display:flex","align-items:center","gap:8px","padding:12px 12px 8px 16px",`font:14px/1.5 ${K}`,`color:${l.ink}`]),H=O(p("b",["font-weight:600","font-size:14.5px","outline:none"],i),"title");H.setAttribute("tabindex","-1"),g.append(Qe(),H),e==="replaced"&&M.size&&g.append(p("span",[`font:600 10.5px/1 ${Z}`,"letter-spacing:.12em","text-transform:uppercase","padding:3px 6px",`color:color-mix(in srgb, ${l.brass} 80%, ${l.ink})`,`background:${l["brass-soft"]}`],`${M.size} new`));let X=f("span",["all:initial","display:inline-flex","margin-left:auto"]),Be=O(Ke(ct,{label:"Minimize",onClick:Ze}),"minimize");if(Be.title="Minimize to the bar. Nothing is accepted until you choose.",X.append(Be),g.append(X),r.append(g),e==="recovered")return Et(r),r;if(e==="refused"){if(r.append(A("Your edits here are safe and not saved yet; nothing will be overwritten until you choose. Their version is not on this page, so there is no list of edits to compare. Keep yours, which saves over theirs, or accept theirs, which reloads the page and drops your unsaved edits.")),n.length&&r.append(A(`${F(n.length,"earlier replaced edit")} ${n.length===1?"is":"are"} also held in this tab. Download my copy includes them.`)),R&&r.append(A("That did not save either. Your edits here are still here.")),D&&r.append(A("Something changed on the page after your first press, so nothing was dropped. Press Accept theirs again if you still want their version.")),v){let c=f("div",["all:initial","display:block","margin:0 16px 12px","padding:8px 10px",`border-left:3px solid ${E}`,`background:color-mix(in srgb, ${E} 14%, transparent)`,`color:${l.ink}`,`font:13px/1.5 ${K}`]);c.append(f("b",["all:initial","font:inherit","font-weight:700","color:inherit"],"This drops your unsaved edits."),document.createTextNode(" Download your copy first if you might want them. Press again to confirm.")),r.append(c)}}else e==="upgraded"?r.append(A("Its layout and code changed with it, so this page stops here. Reload to see the new version.")):e==="failed"?r.append(A("Part of an update from elsewhere could not be applied, so this page may be missing some of it. Your edits here are safe. Download a copy of the page as you had it, or accept to keep the page as it is.")):r.append(A("The page is showing the other edit. This stays until you choose. You can also save a copy of the page as you had it."));let I=f("div",["all:initial","display:flex","flex-wrap:wrap","gap:8px","padding:0 16px 14px"]);if(e==="upgraded")return I.append(T("Reload","reload",{variant:"primary",onClick:()=>window.location.reload(),push:!0})),r.append(I),S=[],r;let rt=T(ve?"Try again":Y?"Downloaded":"Download my copy","download",{onClick:Bt});if(I.append(rt),e==="refused"){let c=T(u==="overwrite"?"Saving\u2026":R?"Try again":"Keep mine","keep",{onClick:Pt});c.setDisabled(u==="overwrite"),I.append(c,T(v?"Yes, drop my edits":"Accept theirs","accept",{variant:"primary",onClick:Ft,push:!0}))}else{if(e==="replaced"){let c=z().hasPendingApply(),N=T(c?"Finishing the incoming edit\u2026":u==="revert"?"Putting back\u2026":"Revert to mine","revert",{onClick:Mt});N.setDisabled(c||u==="revert"),I.append(N)}I.append(T("Accept theirs","accept",{variant:"primary",onClick:zt,push:!0}))}if(r.append(I),e==="replaced")if(P)r.append(vt(t));else{let c=f("div",["all:initial","display:flex","align-items:center","gap:8px",`border-top:1px solid ${l.line}`,"padding:8px 10px 8px 16px",`color:${l.muted}`,`font:13px/1.5 ${K}`]),N=f("span",["all:initial","display:inline-flex","margin-left:auto"]);N.append(O(U("See the edits",{small:!0,onClick:Je}),"list")),c.append(f("span",["all:initial","font:inherit","color:inherit"],F(t.length,"edit")),N),r.append(c)}S=n.map(c=>c.id);for(let c of t)J.add(c.id);return r}function vt(e){let t=$e(["flex:1 1 auto","margin:0 16px 12px","min-height:0","overflow:auto",`background:${l.sunk}`,`border:1px solid ${l["line-2"]}`]),n=f("div",["all:initial","position:sticky","top:0","z-index:1","display:flex","align-items:center","gap:8px","padding:8px 12px",`background:${l.sunk}`,`border-bottom:1px solid ${l["line-2"]}`,`color:${l.muted}`,`font:600 10.5px/1 ${Z}`,"letter-spacing:.12em","text-transform:uppercase"]),o=f("span",["all:initial","display:inline-flex","margin-left:auto"]);return o.append(O(U("Hide",{small:!0,variant:"quiet",onClick:Je}),"list")),n.append(f("span",["all:initial","font:inherit","color:inherit","letter-spacing:inherit","text-transform:inherit"],"Replaced edits"),o),t.append(n),e.forEach((i,a)=>t.append(St(i,a))),B=t,t}function Me(e){let t=e.context?.label||e.name||(e.context?.kind==="entry"?"Entry":"Edit");return e.context?.field?`${t} \xB7 ${e.context.field}`:t}var bt={"content-changed":"the page changed there","structure-changed":"the structure changed there","target-detached":"that part of the page is gone","duplicate-id":"another part of the page now has the same id",protected:"that region keeps its own history",unsupported:"this kind of step cannot be put back"},kt=e=>bt[e]||"the page changed there";function $t(e,t){let n=Array.isArray(e)?e:[];for(let o of n){if(!o||o.kind!=="text"&&o.kind!=="value")continue;let i=t==="redo"?o.after:o.before;if(typeof i=="string"&&i)return{text:i,id:o.target?.id??null}}for(let o of n){if(!o||o.kind!=="add"&&o.kind!=="remove")continue;let i=Array.isArray(o.nodes)?o.nodes.find(a=>typeof a?.html=="string"&&a.html):null;if(i)return{text:_e(i.html).replace(/\s+/g," ").trim(),id:o.parent?.id??null}}for(let o of n){if(!o)continue;let i=t==="redo"?o.after:o.before;if(typeof i=="string"&&i)return{text:i,id:o.target?.id??null}}return{text:"",id:null}}function Tt(e){if(e==null||typeof document>"u")return"";let t=window.CSS?.escape?window.CSS.escape(String(e)):String(e).replace(/["\\]/g,"\\$&"),n=null;try{n=document.querySelector(`[data-id="${t}"]`)}catch{return""}if(!n)return"";let o=n.matches?.("input, textarea, select")?n.value:null;return(typeof o=="string"?o:n.textContent??"").replace(/\s+/g," ").trim()}function At(e){let t=e?.payload&&typeof e.payload=="object"?e.payload:{},n=String(e?.key??""),o={id:e?.id,revision:e?.revision,record:e,kind:e?.kind??"conflict"};if(n.startsWith("app:"))return{...o,name:typeof t.label=="string"&&t.label?t.label:n.slice(4),sentence:"",yours:typeof t.text=="string"?t.text:"",now:""};let i=t.direction==="redo"?"redo":"undo",g=((Array.isArray(t.context)?t.context:[]).find(X=>typeof X?.label=="string"&&X.label)??null)?.label||typeof t.label=="string"&&t.label||"Edit",H=$t(t.steps,i);return{...o,name:g,sentence:`The ${i} of "${g}" was not applied because ${kt(t.code)}.`,yours:H.text,now:H.id==null?"":Tt(H.id)}}function Ct(e){let t=Le();if(!e.record||typeof t?.reviewActionsFor!="function")return[];try{return(t.reviewActionsFor(e.record)||[]).filter(n=>n&&typeof n.run=="function"&&n.label)}catch{return[]}}var qe=e=>({before:"",hit:e,after:"",cutBefore:!1,cutAfter:!1});function Ge(e){let t=p("div",["display:block","padding:8px 12px 10px"]),n=p("div",["display:flex","align-items:center","gap:8px","font-size:12.5px","font-weight:600",`color:${l["ink-2"]}`,"margin-bottom:4px"]);if(n.append(p("span",[],Me(e))),t.append(n),e.sentence&&t.append(p("div",["display:block","font-size:13px",`color:${l["ink-2"]}`],e.sentence)),e.yours){let i=p("div",["display:grid","grid-template-columns:44px 1fr","gap:3px 10px","align-items:start",`font:12.5px/1.5 ${Z}`,...e.sentence?["margin-top:4px"]:[]]);i.append(...he("Yours",qe(e.yours),{mine:!0})),e.now&&i.append(...he("Now",qe(e.now),{mine:!1})),t.append(i)}let o=f("div",["all:initial","display:flex","flex-wrap:wrap","gap:8px","margin-top:8px"]);return Ct(e).forEach((i,a)=>{let r=T(i.label,`run:${e.id}:${a}`,{onClick:()=>Nt(e,i,r)});o.append(r)}),o.append(T(pe===e.id?"Copied":"Copy",`copy:${e.id}`,{onClick:()=>_t(e)})),o.append(T("Dismiss",`dismiss:${e.id}`,{onClick:()=>et(e)})),t.append(o),t}function Et(e){e.append(A(k.length?"These copies were replaced before this page loaded. The page never puts them back on its own. Copy or download the ones you want; dismiss one when you no longer need it.":"These copies were kept because an undo could not be put back or the page set them aside. The page never puts them back on its own. Copy or download the ones you want; dismiss one when you no longer need it.")),oe&&e.append(A("That action did not run. The copy is still here."));let t=$e(["flex:1 1 auto","margin:0 16px 12px","min-height:0","overflow:auto",`background:${l.sunk}`,`border:1px solid ${l["line-2"]}`]);for(let o of k)for(let i of o.conflicts)t.append(Ge(i));for(let o of x)t.append(Ge(o));B=t,e.append(t);let n=f("div",["all:initial","display:flex","flex-wrap:wrap","gap:8px","padding:0 16px 14px"]);(k.some(o=>o.root)||x.length)&&n.append(T(Y?"Downloaded":"Download my copy","download",{onClick:It})),e.append(n),S=[]}function he(e,t,{mine:n}){let o=[p("span",[`color:${l.faint}`,`font-family:${K}`],e)],i=p("span",["display:-webkit-box","-webkit-line-clamp:2","-webkit-box-orient:vertical","overflow:hidden","overflow-wrap:anywhere",...n?[`color:${l.ink}`]:[`color:${l.muted}`]]),a=(t.cutBefore?"\u2026":"")+t.before+t.hit+t.after+(t.cutAfter?"\u2026":"");i.title=a,t.before&&i.append(p("span",[`color:${l.faint}`],(t.cutBefore?"\u2026":"")+t.before));let r=p("span",n?[`background:color-mix(in srgb, ${E} 18%, transparent)`,"padding:0 4px"]:t.before||t.after?["text-decoration:underline",`text-decoration-color:color-mix(in srgb, ${E} 70%, transparent)`,"text-underline-offset:3px"]:[],t.hit||"(empty)");return i.append(r),t.after&&i.append(p("span",[`color:${l.faint}`],t.after+(t.cutAfter?"\u2026":""))),o.push(i),o}function St(e,t){let n=Ie(e),o=p("div",["display:block","padding:8px 12px 10px",...t?[`border-top:1px solid ${l.line}`]:[]]),i=p("div",["display:flex","align-items:center","gap:4px","font-size:12.5px","font-weight:600",`color:${l["ink-2"]}`,"margin-bottom:4px"]);if(i.append(p("span",[],n.name)),n.target&&n.target.isConnected&&i.append(O(Rt(n),`eye:${e.id}`)),o.append(i),n.sentence&&o.append(p("div",["display:block","font-size:13px",`color:${l["ink-2"]}`],n.sentence)),q.has(e.id)&&o.append(p("div",["display:block","font-size:13px","margin-top:4px",`color:${E}`],q.get(e.id))),n.yours){let a=p("div",["display:grid","grid-template-columns:44px 1fr","gap:3px 10px","align-items:start",`font:12.5px/1.5 ${Z}`,...n.sentence?["margin-top:4px"]:[]]);a.append(...he("Yours",n.yours,{mine:!0})),n.now&&a.append(...he("Now",n.now,{mine:!1})),o.append(a)}return o}function Rt(e){let t=["all:initial","color-scheme:inherit","box-sizing:border-box","cursor:pointer","display:inline-grid","place-items:center","width:22px","height:20px",`color:${l.ink}`],n=f("button",t);n.type="button",n.innerHTML=Ye.conflictEye,He(n.firstElementChild,16),n.setAttribute("aria-label",`Show ${e.name} on page`),n.title="Show on page";let o=i=>{n.style.cssText="";for(let a of[...t,...i]){let r=a.indexOf(":");n.style.setProperty(a.slice(0,r),a.slice(r+1),"important")}};return n.addEventListener("pointerenter",()=>o([`background:color-mix(in srgb, ${E} 16%, transparent)`])),n.addEventListener("pointerleave",()=>o([])),n.addEventListener("focus",()=>o([`outline:2px solid ${l.brass}`,"outline-offset:1px"])),n.addEventListener("blur",()=>o([])),n.addEventListener("click",()=>Lt(e.target)),n}var C=null,ge=null,me=null;function we(){clearTimeout(ge),window.removeEventListener("scroll",ee,!0),window.removeEventListener("resize",ee),C?.remove(),C=null,me=null}function ee(){if(!C||!me)return;let e=me.getBoundingClientRect();$(C,"left",`${e.left}px`),$(C,"top",`${e.top}px`),$(C,"width",`${e.width}px`),$(C,"height",`${e.height}px`)}function Lt(e){if(we(),!e||!e.isConnected)return;let n=!!window.matchMedia?.("(prefers-reduced-motion: reduce)").matches?"instant":"smooth",o=s?.getBoundingClientRect().top??0,i=s&&o>0?Math.max(0,window.innerHeight-o):0;if(!i)e.scrollIntoView?.({block:"center",behavior:n});else{e.scrollIntoView?.({block:"center",behavior:"instant"});let a=e.getBoundingClientRect(),r=window.innerHeight-i,g=a.height>r-24?a.top-12:a.top+a.height/2-r/2;window.scrollBy?.({top:g,behavior:n})}me=e,C=f("div",["all:initial","color-scheme:inherit","position:fixed","pointer-events:none","z-index:2147483001",`outline:2px solid ${E}`,"outline-offset:3px",`background:color-mix(in srgb, ${E} 14%, transparent)`]),document.body.appendChild(C),ee(),window.addEventListener("scroll",ee,!0),window.addEventListener("resize",ee),ge=setTimeout(we,2500)}function Dt(){_||(m="panel",L="title",w())}function Ze(){we(),m="bar",y(),L="review",w()}function Je(){P=!P,P&&M.clear(),w()}function zt(){let e=z(),t=S.filter(n=>{let o=e?.get(n);return o&&!o.claimedBy});e&&t.length&&e.acknowledge(t,{reason:"accepted"}),m=ze()?"bar":"hidden",L="review",d()}async function Mt(){let e=z();if(u||!e||e.hasPendingApply())return;let t=S.filter(r=>{let g=e.get(r);return g&&!g.claimedBy});if(!t.length)return;u="revert",w();let n=!0,o=r=>{n=!!s?.contains(r.target)};document.addEventListener("focus",o,!0);let i;try{let{revertConflicts:r}=await import("./c-O72HVYSA.js");i=await r(t)}catch(r){console.error("[clay] Revert to mine did not finish",r),i={revertedIds:[],blockedIds:t,saveResult:null}}finally{document.removeEventListener("focus",o,!0)}u=null;for(let r of i.blockedIds)q.set(r,z()?.get(r)?.kind==="json"?ut:pt);m=ze()?"bar":"hidden",L=n?"review":null;let a=i.saveResult&&(i.saveResult.ok||i.saveResult.msg==="Save already in progress");i.revertedIds.length&&a?be(`Put back ${F(i.revertedIds.length,"change")}. Saving.`):w()}var j=null;function Bt(){let e=z(),t=h?e?.list()??[]:S.map(o=>e?.get(o)).filter(Boolean),n=Pe(t,{refused:!!h});ve=!n,Y=n,clearTimeout(j),n&&(j=setTimeout(()=>{Y=!1,d()},1200)),w()}async function Q(){let e=null;if(Ae())try{e=await We()}catch{e=null}let t=Le(),n=null;if(t)try{n=await t.kept()}catch{n=null}let o=!1;if(e?.ok?(k=e.records,o=!0):!Ae()&&k.length&&(k=[],o=!0),n?.ok){let i=(Array.isArray(n.records)?n.records:[]).filter(r=>r&&r.supported!==!1).map(At);i.length===x.length&&i.every((r,g)=>r.id===x[g].id&&r.revision===x[g].revision)||(o=!0),x=i}else n&&x.length&&(x=[],o=!0);o&&d()}async function Ot(e){try{return await navigator.clipboard.writeText(e),!0}catch{}let t=document.createElement("textarea");t.value=e,t.setAttribute("clay",ke),t.style.setProperty("position","fixed","important"),t.style.setProperty("opacity","0","important"),document.body?.append(t),t.select();let n=!1;try{n=document.execCommand?.("copy")===!0}catch{}return t.remove(),n}async function _t(e){let t=e.record?e.yours:`${Me(e)}
2
+
3
+ Yours:
4
+ ${e.yours}
5
+
6
+ Now:
7
+ ${e.now}`;if(!await Ot(t)){be("Could not copy. Select the text instead.");return}pe=e.id,clearTimeout(ue),ue=setTimeout(()=>{pe=null,d()},1200),w()}function It(){let e=k.find(o=>o.root),t=[];for(let o of k)for(let i of o.conflicts)t.push({id:i.id,kind:i.kind,name:Me(i),yours:i.yours,now:i.now,sentence:i.sentence});for(let o of x)t.push({id:o.id,kind:o.kind,name:o.name,yours:o.yours,now:o.now,sentence:o.sentence});let n=Ne({html:e?.root??null,edits:t});ve=!n,Y=n,clearTimeout(j),n&&(j=setTimeout(()=>{Y=!1,d()},1200)),w()}async function et(e){let t;try{t=e.record?await Le()?.dismissKept(e.id,{revision:e.revision}):await Ve([e.id]),t||={ok:!1}}catch{t={ok:!1}}t.ok||be("That copy could not be dismissed."),await Q(),d()}var Ce=new Set;async function Nt(e,t,n=null){if(!Ce.has(t)){Ce.add(t),n&&(n.disabled=!0,n.setAttribute("aria-busy","true")),oe=!1;try{let o=null;try{o=await t.run(e.record)}catch{o=null}if(o?.ok===!0&&o?.dismiss===!0){await et(e);return}oe=o?.ok!==!0,await Q(),d()}finally{Ce.delete(t),n&&n.isConnected&&(n.disabled=!1,n.removeAttribute("aria-busy"))}}}function tt(e){e?.detail?.ok===!0&&(oe=!1,Q(),d())}function y(){clearTimeout(le),le=null,v=null}async function Pt(){if(u)return;let e=++de;u="overwrite",R=!1,y(),w();let t;try{t=await window.clay?.save?.overwrite?.()}catch{t={ok:!1}}e!==de||u!=="overwrite"||(!t?.ok&&W()&&(u=null,R=!0),d())}function Ft(){if(!v){v={refusalGeneration:Ee,ledgerRevision:se,dirtyGeneration:Te().gen},Se=Date.now(),D=!1,clearTimeout(le),le=setTimeout(()=>{y(),d()},at),w();return}if(Date.now()-Se<st)return;let e=v;Ue({isCurrent:()=>v===e&&e.refusalGeneration===Ee&&e.ledgerRevision===se&&e.dirtyGeneration===Te().gen,reload:()=>window.location.reload()})||(y(),D=!0,w())}function be(e){b=e,clearTimeout(G),G=setTimeout(()=>{b=null,d()},lt),w()}function Yt(){Q(),d()}function nt(){se++,v&&y();for(let e of[...q.keys()])z()?.get(e)||q.delete(e);Q(),d()}function ot(e){_=e?.detail&&e.detail.message||"This document was upgraded.",b=null,clearTimeout(G),y(),u=null,R=!1,D=!1,m="bar",d()}function it(e){let t=e?.detail||{};h={generation:++Ee,changedBy:t.changedBy,afterTimeout:!!t.afterTimeout,etag:t.etag??null},b=null,clearTimeout(G),y(),u=null,R=!1,de++,D=!1,d()}function Re(e){if(W()){e.type==="clay:save-saved"&&queueMicrotask(()=>{W()||Re(e)});return}let t=u==="overwrite"&&e.type==="clay:save-saved";(h||u)&&(h=null,u=null,R=!1,D=!1,y()),t?be("Saved your version over theirs."):d()}function Ht(){h&&(te=!0,d())}function Kt(){!h||W()||(h=null,u=null,R=!1,D=!1,y(),d())}function Ut(e){if(e.key!=="Escape")return;if(v){e.preventDefault(),y(),w();return}if(m!=="panel")return;let t=document.activeElement;t&&t!==document.body&&!s?.contains(t)||(e.preventDefault(),Ze())}function Wt(e){!v||s?.contains(e.target)||(y(),d())}function Vt(e){b&&L&&!s?.contains(e.target)&&(L=null)}function qt(){xe=new AbortController;let{signal:e}=xe;document.addEventListener("clay:document-upgraded",ot,{signal:e}),Oe&&(document.addEventListener("clay:sync-conflicts-changed",nt,{signal:e}),document.addEventListener("clay:unsaved-state-changed",d,{signal:e}),document.addEventListener("clay:save-conflict",it,{signal:e}),document.addEventListener("clay:save-saved",Re,{signal:e}),document.addEventListener("clay:save-conflict-resolved",Re,{signal:e}),document.addEventListener("clay:sync-applied",Ht,{signal:e}),document.addEventListener("clay:save-conflict-released",Kt,{signal:e}),document.addEventListener("keydown",Ut,{signal:e}),document.addEventListener("input",Wt,{capture:!0,signal:e}),document.addEventListener("focus",Vt,{capture:!0,signal:e}),document.addEventListener("clay:conflict-store-changed",Yt,{signal:e}),document.addEventListener("clay:undo-kept",tt,{signal:e}),z()?.size&&d(),Q())}var Gt={"clay:sync-conflicts-changed":nt,"clay:save-conflict":it,"clay:document-upgraded":ot,"clay:undo-kept":tt},ye=!1,xe=null;function an(e){ye||(ye=!0,qt());let t=e&&Gt[e.type];t&&t(e),h&&(te=!0,d())}function ln(){ye&&(ye=!1,xe?.abort(),xe=null,y(),clearTimeout(G),G=null,clearTimeout(j),j=null,clearTimeout(ue),ue=null,clearTimeout(ge),ge=null,we(),window.visualViewport?.removeEventListener("resize",ie),window.visualViewport?.removeEventListener("scroll",ie),s?.remove(),s=null,V=new Map,B=null,ne=null,m="hidden",P=!1,S=[],J.clear(),M.clear(),q.clear(),b=null,h=null,_=null,u=null,R=!1,de++,v=null,Se=0,D=!1,k=[],x=[],oe=!1,ae=!1,te=!1,L=null,ce=null,Y=!1,ve=!1,pe=null)}var sn={state:()=>({view:m,listOpen:P,renderedIds:S.slice(),refused:h,armed:v,busy:u,ledgerRevision:se,upgraded:_}),render:w,resetUpgrade:()=>{_=null}};export{E as WARN,sn as _test,d as schedule,an as start,ln as stop,be as toast};
@@ -0,0 +1 @@
1
+ function l(o=location.pathname){let n=o.split("/").filter(Boolean).pop();if(!n)return o.endsWith("/")||o===""?"index":"page";let t=n;try{t=decodeURIComponent(n)}catch{}return t.replace(/\.(html?|htmlclay)$/i,"")||"page"}function r({html:o,name:n}){let t=null;try{t=URL.createObjectURL(new Blob([o],{type:"text/html"}));let e=document.createElement("a");return e.setAttribute("clay","no-save no-watch no-snapshot"),e.href=t,e.download=n,e.style.setProperty("display","none","important"),document.body.appendChild(e),e.click(),e.remove(),setTimeout(()=>URL.revokeObjectURL(t),4e4),!0}catch(e){return console.error("clayjs: could not build the download",e),t&&URL.revokeObjectURL(t),!1}}export{l as a,r as b};
@@ -0,0 +1 @@
1
+ import{f as X}from"./c-OW5QIGG3.js";var pe=500,he=5e3,L="text",ke=64,ge=1024*1024,we=256,me=1024*1024;function be(){let a=globalThis.crypto?.randomUUID?.();return a||`wr-${Date.now().toString(36)}-${Math.random().toString(36).slice(2)}`}function D(a){return Array.isArray(a)?a.join("\0"):String(a)}function I(a,u){return Array.isArray(a)&&Array.isArray(u)?a.length===u.length&&a.every((g,B)=>g===u[B]):a===u}function ve(a){return globalThis.crypto?.randomUUID?.()??`rec-${a}-${Math.random().toString(36).slice(2)}`}function M(a){return a instanceof Uint8Array?new Uint8Array(a):a instanceof ArrayBuffer?a.slice(0):a}function ye(a,u){if(a===u)return!0;if(!a||!u||typeof a!="object"||typeof u!="object")return!1;if(a instanceof Uint8Array||u instanceof Uint8Array){if(!(a instanceof Uint8Array)||!(u instanceof Uint8Array)||a.length!==u.length)return!1;for(let h=0;h<a.length;h++)if(a[h]!==u[h])return!1;return!0}let g=Object.keys(u),B=Object.keys(a);if(g.length!==B.length)return!1;for(let h=0;h<g.length;h++)if(g[h]!==B[h]||u[g[h]]!==a[B[h]])return!1;return!0}var T=new Set;function Se({captureId:a,html:u}={}){if(T.size)for(let g of T)g.capture(a,u)}function Ue({captureId:a,ok:u=!1,etag:g=null}={}){if(T.size)for(let B of T)B.settle(a,u===!0,g)}function Ae({mode:a=X==="draft"?"draft":"edit",writerId:u=be(),indexedDB:g,maxScopeBytes:B,maxDbBytes:h,now:E}={}){let S=new Map,x=new Set,O=new Map,Q=null,_=null,p=null,m={ok:!0,code:null,durable:!1};function C(){return{ok:m.ok,code:m.code,durable:m.durable,usage:p?.status().usage??null,identityMismatch:_?_.check().ok===!1:!1}}function w(e){let n={channel:e.channel,status:C(),count:e.pending.size,revisions:[...e.pending.values()].map(({id:t,revision:o})=>({id:t,revision:o}))};for(let t of e.listeners)try{t(n)}catch{}for(let t of x)try{t(n)}catch{}}function b(e){if(e&&e.ok){let t=m.ok;if(m={ok:!0,code:null,durable:!0},!t)for(let o of S.values())w(o);return}let n=e?.code||"error";if(m.ok||m.code!==n){m={ok:!1,code:n,durable:!1};for(let t of S.values())w(t);return}m={ok:!1,code:n,durable:!1}}async function H(){let[{createIdentity:e},{createStore:n}]=await Promise.all([import("./c-B3JM5ZXC.js"),import("./c-QNKREOL6.js")]);_=e({mode:a,writerId:u}),p=n({scope:_.scope,indexedDB:g,maxScopeBytes:B,maxDbBytes:h,now:E});let t=await p.open();return t.ok?m={ok:!0,code:null,durable:!1}:b(t),t}function v(){return Q||(Q=H().catch(e=>({ok:!1,code:e?.name==="DataCloneError"?"uncloneable":"unavailable"}))),Q}function N(e,n){let t;try{t=e.readSaved(n)}catch{return[]}if(!t||typeof t.get!="function")return[];let o=[];for(let i of e.held.values())i.kind===L&&t.has(i.key)&&ye(t.get(i.key),i.payload)&&o.push({id:i.id,revision:i.revision});return o}function Y(e,n){if(e==null||typeof n!="string")return;let t=new Map;for(let o of S.values()){if(typeof o.readSaved!="function"||!o.held.size)continue;let i=N(o,n);i.length&&t.set(o.channel,i)}t.size&&O.set(e,t)}async function F(e,n,t,o){if((await v()).ok){for(let{id:r,revision:s}of n){let c=await p.acknowledge(r,{revision:s,etag:t,captureId:o});b(c);let l=D(r),f=e.held.get(l);f&&f.revision<=s&&e.held.delete(l)}w(e)}}function K(e,n,t){let o=O.get(e);if(!o||(O.delete(e),!n))return Promise.resolve();let i=[];for(let[r,s]of o){let c=S.get(r);if(!c)continue;let l=()=>F(c,s,t,e);c.writing=c.writing.then(l,l),i.push(c.writing)}return Promise.all(i).then(()=>{},()=>{})}function V(e){let n=E?.()??Date.now();e.burstStart||(e.burstStart=n);let t=Math.max(0,Math.min(pe,e.burstStart+he-n));e.timer&&clearTimeout(e.timer),e.timer=setTimeout(()=>{e.timer=null,e.burstStart=0,q(e).catch(()=>{})},t)}function W(e,{key:n,kind:t=L,baseEtag:o=null,base:i=null,payload:r=null,lineage:s=null}={}){let c=n==null?"":String(n);if(!c)throw new TypeError("clay.recovery.stage needs a key");let l=E?.()??Date.now(),f=++e.revision,k=t===L?[e.channel,c,u]:globalThis.crypto?.randomUUID?.()??`rec-${f}-${Math.random().toString(36).slice(2)}`,y=D(k),A=e.pending.get(y),d={id:k,kind:t,channel:e.channel,version:e.version,key:c,writerId:u,revision:f,status:"journaled",baseEtag:o,base:M(i),payload:M(r),lineage:s,created:A?.created??l,updated:l};return e.pending.set(y,d),e.held.set(y,{id:k,kind:t,key:c,revision:f,payload:d.payload}),V(e),w(e),{id:k,revision:f}}async function G(e){let n=[...e.pending.values()];if(!n.length)return{ok:!0,stored:[]};let t=await v();if(!t.ok)return{ok:!1,code:t.code};let o=[],i=null;for(let r of n){let s=await p.put(r);if(s.ok){let c=D(r.id);if(e.pending.get(c)===r&&e.pending.delete(c),s.skipped){let l=e.held.get(c);l&&l.revision===r.revision&&e.held.delete(c)}else o.push({id:r.id,revision:r.revision})}else i=i||s.code||"error"}return b(i?{ok:!1,code:i}:{ok:!0}),w(e),i?{ok:!1,code:i}:{ok:!0,stored:o}}function J(e,n){return[e.channel,n,u]}function Z(e,n,t,o,i){return{id:n,kind:"binary",channel:e.channel,version:e.version,writerId:u,revision:0,context:t,payload:{base:i??new Uint8Array(0),dependencies:new Uint8Array(0),owned:new Uint8Array(0)},acknowledged:null,created:o,updated:o}}function $(e,n,t){return e.batchQueue.size>=we||e.queuedBytes+n.payload.byteLength>me?!1:(e.batchQueue.set(D(n.id),{record:n,capsule:t}),e.queuedBytes+=n.payload.byteLength,!0)}async function ee(e){if(!e.batchQueue.size)return{ok:!0};let n=await v();if(!n.ok)return{ok:!1,code:n.code};let t=[],o=null;for(let[i,r]of[...e.batchQueue.entries()]){let s=await p.appendBinary(r.record,r.capsule);if(!s.ok){o=o||s.code||"error";continue}e.batchQueue.delete(i),e.queuedBytes=Math.max(0,e.queuedBytes-r.record.payload.byteLength),!s.skipped&&(e.batches+=1,e.batchBytes+=r.record.payload.byteLength,t.push({id:r.record.id,revision:r.record.revision}))}return b(o?{ok:!1,code:o}:{ok:!0}),w(e),o?{ok:!1,code:o}:{ok:!0,stored:t}}async function ne(e,{key:n,context:t=null,update:o,origin:i="local",base:r=null}={}){let s=n==null?"":String(n);if(!s)throw new TypeError("clay.recovery.append needs a key");if(!(o instanceof Uint8Array)&&!(o instanceof ArrayBuffer))throw new TypeError("clay.recovery.append needs binary bytes");let c=E?.()??Date.now(),l=++e.revision,f=J(e,s),k={id:ve(l),kind:"binary-batch",channel:e.channel,version:e.version,writerId:u,revision:l,capsuleId:f,origin:i==="dependency"?"dependency":"local",context:t,payload:M(o),updated:c},y=Z(e,f,t,c,r==null?null:M(r)),A=await v();if(!A.ok)return $(e,k,y)?{ok:!1,code:A.code}:{ok:!1,code:"over-budget"};let d=await p.appendBinary(k,y);return b(d),w(e),d.ok?(e.batches+=1,e.batchBytes+=k.payload.byteLength,d.skipped?{ok:!0,id:k.id,revision:l,skipped:!0}:(re(e),{ok:!0,id:k.id,revision:l})):$(e,k,y)?{ok:!1,code:d.code}:{ok:!1,code:d.code}}async function te(e,{records:n=[],authority:t=null,epoch:o=null,sequence:i=null}={}){let r=(n||[]).filter(l=>l&&l.id!==void 0&&typeof l.revision=="number");if(!r.length)return{ok:!0,acknowledged:0};let s=await v();if(!s.ok)return{ok:!1,code:s.code};let c=await p.acknowledgeBinary({channel:e.channel,version:e.version,writerId:u,records:r,authority:t,epoch:o,sequence:i});return b(c),w(e),c.ok?{ok:!0,acknowledged:c.acknowledged}:{ok:!1,code:c.code}}async function oe(e,{records:n=[],proof:t=null}={}){let o=(n||[]).filter(l=>l&&l.id!==void 0&&typeof l.revision=="number");if(!o.length)return{ok:!0,retired:[]};if(typeof e.validateCheckpoint!="function")return{ok:!0,retired:[]};let i;try{i=await e.validateCheckpoint(t,o.map(({id:l,revision:f})=>({id:l,revision:f})))}catch{return{ok:!1,code:"invalid",retired:[]}}if(!Array.isArray(i))return{ok:!1,code:"invalid",retired:[]};let r=o.filter(l=>i.some(f=>f&&f.revision===l.revision&&I(f.id,l.id)));if(!r.length)return{ok:!0,retired:[]};let s=await v();if(!s.ok)return{ok:!1,code:s.code,retired:[]};let c=await p.checkpointBinary({channel:e.channel,version:e.version,writerId:u,records:r});return b(c),w(e),c.ok?{ok:!0,retired:c.retired}:{ok:!1,code:c.code,retired:[]}}function P(e){return e&&typeof e.byteLength=="number"&&e.byteLength>0?e:null}async function ie(e,n){for(let t=0;t<3;t++){let o=null,i=[];for(let{id:d,revision:fe}of n){let z=await p.get(d);if(!z.ok||!z.record)continue;let U=z.record;U.revision!==fe||U.kind!=="binary-batch"||!U.capsuleId||(o||(o=U.capsuleId),I(o,U.capsuleId)&&i.push(U))}if(!o||!i.length)return{ok:!0,retired:[]};let r=await p.get(o);if(!r.ok||!r.record)return{ok:!1,code:"missing"};let s=r.record,c=[P(s.payload?.owned),...i.filter(d=>d.origin!=="dependency").map(d=>P(d.payload))].filter(Boolean),l=[P(s.payload?.dependencies),...i.filter(d=>d.origin==="dependency").map(d=>P(d.payload))].filter(Boolean),f=c.length?M(await e.merge(c)):new Uint8Array(0),k=l.length?M(await e.merge(l)):new Uint8Array(0),y=Math.max(e.revision,s.revision)+1;e.revision=y;let A=await p.compactBinary({channel:e.channel,version:e.version,capsuleId:o,expectedRevision:s.revision,replacement:{revision:y,updated:E?.()??Date.now(),payload:{base:s.payload?.base??new Uint8Array(0),dependencies:k,owned:f}},inputs:i.map(d=>({id:d.id,revision:d.revision}))});if(A.ok)return e.batches=0,e.batchBytes=0,{ok:!0,retired:A.retired,revision:A.revision};if(A.code!=="stale")return{ok:!1,code:A.code}}return{ok:!1,code:"stale"}}async function j(e,{records:n=[]}={}){if(typeof e.merge!="function")return{ok:!1,code:"invalid",retired:[]};let t=(n||[]).filter(r=>r&&r.id!==void 0&&typeof r.revision=="number");if(!t.length)return{ok:!0,retired:[]};let o=await v();if(!o.ok)return{ok:!1,code:o.code,retired:[]};let i=await ie(e,t);return b(i),w(e),i.ok?{ok:!0,retired:i.retired}:{ok:!1,code:i.code,retired:[]}}function re(e){typeof e.merge!="function"||e.compaction||e.batches<ke&&e.batchBytes<ge||(e.compaction=(async()=>{let n=await p.list();if(!n.ok)return;let t=n.records.filter(o=>o.channel===e.channel&&o.kind==="binary-batch"&&o.writerId===u);t.length&&await j(e,{records:t.map(({id:o,revision:i})=>({id:o,revision:i}))})})().catch(()=>{}).finally(()=>{e.compaction=null}))}function q(e){e.timer&&clearTimeout(e.timer),e.timer=null,e.burstStart=0;let n=async()=>{let t=await ee(e);return t.ok?G(e):t};return e.writing=e.writing.then(n,n),e.writing}async function ce(e){let n=await v();if(!n.ok)return{ok:!1,code:n.code,records:[],status:C()};let t=await p.list();return b(t),t.ok?{ok:!0,records:t.records.filter(i=>i.channel===e.channel).map(i=>({...i,supported:i.version===e.version})),status:C()}:{ok:!1,code:t.code,records:[],status:C()}}async function ae(e,n,{revision:t}={}){let o=await v();if(!o.ok)return{ok:!1,code:o.code};e.timer&&clearTimeout(e.timer),e.timer=null,e.burstStart=0,await e.writing;let i=D(n),r=e.pending.get(i);r&&(t===void 0||r.revision===t)&&e.pending.delete(i);let s=e.held.get(i);s&&(t===void 0||s.revision===t)&&e.held.delete(i);let c=await p.remove(n,{revision:t});return b(c),w(e),c.ok?{ok:!0,id:n,revision:t}:{ok:!1,code:c.code}}function se(e,n){return e.listeners.add(n),()=>e.listeners.delete(n)}function le(e){e.timer&&clearTimeout(e.timer),e.timer=null,e.burstStart=0;let n=q(e).catch(()=>({ok:!1,code:"aborted"}));return e.listeners.clear(),S.delete(e.channel),S.size||T.delete(R),n}let R={capture:Y,settle:K};function ue(e){return{channel:e.channel,version:e.version,stage:n=>W(e,n),flush:()=>q(e),list:()=>ce(e),dismiss:(n,t)=>ae(e,n,t),append:n=>ne(e,n),markAcknowledged:n=>te(e,n),checkpoint:n=>oe(e,n),compact:n=>j(e,n),subscribe:n=>se(e,n),dispose:()=>le(e)}}function de({channel:e,version:n=1,readSaved:t=null,describe:o=null,validateCheckpoint:i=null,merge:r=null}={}){if(!e||typeof e!="string")throw new TypeError("clay.recovery.register needs a channel name");let s=S.get(e);if(s)throw new Error(`clay.recovery: the "${e}" channel is already registered at version ${s.version}`);let c={channel:e,version:n,readSaved:t,describe:o,validateCheckpoint:i,merge:r,revision:0,pending:new Map,held:new Map,batchQueue:new Map,queuedBytes:0,batches:0,batchBytes:0,compaction:null,timer:null,burstStart:0,writing:Promise.resolve(),listeners:new Set};return S.set(e,c),T.add(R),v(),ue(c)}return{register:de,status:C,subscribe(e){return x.add(e),()=>x.delete(e)}}}var Me=Ae();export{Se as a,Ue as b,Ae as c,Me as d};