@panphora/clayjs 1.16.0 → 1.18.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 (511) hide show
  1. package/dist/all.js +1 -1
  2. package/dist/clay-dom.js +1 -1
  3. package/dist/clay-events.js +1 -1
  4. package/dist/clay-internals.js +1 -1
  5. package/dist/clay-options.js +1 -1
  6. package/dist/clay-router.js +1 -1
  7. package/dist/clay-ui.js +1 -1
  8. package/dist/clay-utils.js +1 -1
  9. package/dist/clay.js +1 -1
  10. package/dist/clay.standalone.js +72519 -59839
  11. package/dist/m/attrs/refetch-on-save-ZUE7PSCI.js +1 -0
  12. package/dist/m/attrs/save-freeze-LWGF6XUN.js +1 -0
  13. package/dist/m/c-2GRUM77Q.js +30 -0
  14. package/dist/m/c-2KIEGNC4.js +1 -0
  15. package/dist/m/{c-5R4PTRG2.js → c-2KL3BD52.js} +1 -1
  16. package/dist/m/c-2YYDMLNZ.js +1 -0
  17. package/dist/m/c-2ZZBC45O.js +1 -0
  18. package/dist/m/c-372N6H3B.js +1 -0
  19. package/dist/m/{c-4WKFKEKF.js → c-3G2DGZUP.js} +1 -1
  20. package/dist/m/c-3LDGIBMN.js +1 -0
  21. package/dist/m/c-3O7OBDCM.js +1 -0
  22. package/dist/m/c-4ASQPRQL.js +1 -0
  23. package/dist/m/c-4TXNLX4K.js +6 -0
  24. package/dist/m/c-4YU3BR4D.js +6 -0
  25. package/dist/m/c-5734MF2P.js +1 -0
  26. package/dist/m/c-57XDY6HC.js +1 -0
  27. package/dist/m/{c-VFX45IZQ.js → c-5B4YBZXC.js} +1 -1
  28. package/dist/m/c-5ONTYIUI.js +1 -0
  29. package/dist/m/c-5OOVFCJM.js +1 -0
  30. package/dist/m/c-5T6NZHNM.js +1 -0
  31. package/dist/m/{c-YDH7Q3NY.js → c-5ZQV7KC4.js} +1 -1
  32. package/dist/m/{c-Z36J63PP.js → c-6DB2OLRJ.js} +1 -1
  33. package/dist/m/c-6DNRCPNM.js +1 -0
  34. package/dist/m/c-6UGWFMQC.js +2 -0
  35. package/dist/m/c-7K4SCQB7.js +1 -0
  36. package/dist/m/c-7MG5RU63.js +1 -0
  37. package/dist/m/c-7PRJCA3E.js +1 -0
  38. package/dist/m/c-A6L3FMUS.js +1 -0
  39. package/dist/m/c-AMU3BPPR.js +4 -0
  40. package/dist/m/c-AMYEFA2E.js +1 -0
  41. package/dist/m/c-AQYCG7QW.js +1 -0
  42. package/dist/m/c-ATKAOH23.js +1 -0
  43. package/dist/m/c-B3JM5ZXC.js +1 -0
  44. package/dist/m/c-B5CS55WR.js +1 -0
  45. package/dist/m/c-B5UJQT7W.js +1 -0
  46. package/dist/m/c-B7J4K2AE.js +3 -0
  47. package/dist/m/c-BHZYSHW4.js +1 -0
  48. package/dist/m/c-BIJALSRD.js +1 -0
  49. package/dist/m/c-BJ7YQ5QZ.js +1 -0
  50. package/dist/m/c-BPF2NSPV.js +1 -0
  51. package/dist/m/{c-KIPQJX4B.js → c-BRLCTNMC.js} +1 -1
  52. package/dist/m/c-BUAYFEV5.js +1 -0
  53. package/dist/m/c-C6IPRG34.js +1 -0
  54. package/dist/m/{c-2JL6E75N.js → c-CAS3NND4.js} +1 -1
  55. package/dist/m/{c-4DRMS4QG.js → c-CCQ25GFY.js} +1 -1
  56. package/dist/m/c-CJFDLD43.js +1 -0
  57. package/dist/m/c-COPTL5WB.js +1 -0
  58. package/dist/m/c-D3E4WJ4M.js +166 -0
  59. package/dist/m/c-D5IKEKXW.js +7 -0
  60. package/dist/m/c-DHBRA6DL.js +1 -0
  61. package/dist/m/c-DKLS74XB.js +72 -0
  62. package/dist/m/c-DVYGFTSK.js +3 -0
  63. package/dist/m/c-E3ZXARWA.js +1 -0
  64. package/dist/m/c-EK63G3CG.js +1 -0
  65. package/dist/m/c-ERQSNR6K.js +13 -0
  66. package/dist/m/c-EVYAISP3.js +1 -0
  67. package/dist/m/c-EXKHPOVC.js +3 -0
  68. package/dist/m/{c-7VGZ7RU5.js → c-FWKHM4E7.js} +1 -1
  69. package/dist/m/{c-4Q2XTQ2N.js → c-GBKB5WDL.js} +1 -1
  70. package/dist/m/c-GNDL3TKB.js +1 -0
  71. package/dist/m/c-GRWMD6O5.js +1 -0
  72. package/dist/m/c-GRXHHFPO.js +1 -0
  73. package/dist/m/{c-OYTFP5QN.js → c-GY422N3Q.js} +1 -1
  74. package/dist/m/c-HAWFNBYG.js +1 -0
  75. package/dist/m/c-HG2C77BM.js +4 -0
  76. package/dist/m/c-HHGJBU4D.js +1 -0
  77. package/dist/m/c-HMV6P4RX.js +1 -0
  78. package/dist/m/c-HMYWIHFG.js +1 -0
  79. package/dist/m/c-HT2DKBV2.js +1 -0
  80. package/dist/m/c-I2SCCUEW.js +1 -0
  81. package/dist/m/{c-HRDCD3WN.js → c-ICJYHABF.js} +2 -2
  82. package/dist/m/c-IMZCWYHR.js +7 -0
  83. package/dist/m/c-IVMD3FEM.js +1 -0
  84. package/dist/m/c-IVTRVENZ.js +1 -0
  85. package/dist/m/c-IW6GGOU2.js +1 -0
  86. package/dist/m/c-JKZJIUIP.js +1 -0
  87. package/dist/m/{c-NZMNXVF6.js → c-JNLX3RJB.js} +1 -1
  88. package/dist/m/c-JRKY44DK.js +1 -0
  89. package/dist/m/c-K3ADYNLU.js +1 -0
  90. package/dist/m/c-KBS3UV6B.js +1 -0
  91. package/dist/m/c-KGHVFRR3.js +1 -0
  92. package/dist/m/c-KJJPV77R.js +1 -0
  93. package/dist/m/{c-CZUSOB7V.js → c-KNPDOMDY.js} +1 -1
  94. package/dist/m/{c-5Y6TNX5W.js → c-KP64LT2A.js} +2 -2
  95. package/dist/m/c-KQ7E3PYY.js +1 -0
  96. package/dist/m/c-L3F5ZLIV.js +1 -0
  97. package/dist/m/{c-LR4CGEPT.js → c-L42OLXWM.js} +3 -2
  98. package/dist/m/c-L5VFATT6.js +1 -0
  99. package/dist/m/c-L7JL5TL3.js +3 -0
  100. package/dist/m/c-LKSL4AUJ.js +1 -0
  101. package/dist/m/c-M6FNQCTQ.js +1 -0
  102. package/dist/m/c-MCOOHCSG.js +1 -0
  103. package/dist/m/c-MHI3GYKF.js +1 -0
  104. package/dist/m/c-MWXFLW4J.js +1 -0
  105. package/dist/m/c-NEL7HQW3.js +1 -0
  106. package/dist/m/c-NQJRVJ56.js +1 -0
  107. package/dist/m/c-NWX3MFT4.js +1 -0
  108. package/dist/m/{c-HPURYVZS.js → c-OJYM642Q.js} +1 -1
  109. package/dist/m/c-OKXI52N7.js +1 -0
  110. package/dist/m/{c-MMUIUUZG.js → c-OPLUZR3A.js} +1 -1
  111. package/dist/m/{c-J7CA54IP.js → c-OTMKN2OO.js} +1 -1
  112. package/dist/m/{c-LTGMXXKO.js → c-OYRZ7XG2.js} +1 -1
  113. package/dist/m/c-P3OFYUMA.js +1 -0
  114. package/dist/m/c-PLN76GF3.js +6 -0
  115. package/dist/m/c-PLP4JKFC.js +1 -0
  116. package/dist/m/c-Q26MME6N.js +1 -0
  117. package/dist/m/{c-S7H2DRCB.js → c-Q3XOWZEV.js} +1 -1
  118. package/dist/m/{c-SWRJFCNN.js → c-QIKT6SKM.js} +1 -1
  119. package/dist/m/c-QIXT3Q7C.js +28 -0
  120. package/dist/m/c-QO4HNGCQ.js +1 -0
  121. package/dist/m/c-R27DWQKX.js +1 -0
  122. package/dist/m/{c-HVYXIS72.js → c-R2XUODVY.js} +1 -1
  123. package/dist/m/{c-QNKREOL6.js → c-R7LBFMF5.js} +1 -1
  124. package/dist/m/c-RND3G2S2.js +1 -0
  125. package/dist/m/c-S2U6NJU4.js +1 -0
  126. package/dist/m/c-SPZPGD3R.js +1 -0
  127. package/dist/m/c-SW4YEG2D.js +8 -0
  128. package/dist/m/c-SZGYW5HT.js +1 -0
  129. package/dist/m/c-T637T7SN.js +1 -0
  130. package/dist/m/c-TJAXGIRV.js +1 -0
  131. package/dist/m/{c-KKWLDOPM.js → c-TNEM3RNM.js} +1 -1
  132. package/dist/m/c-TTB5EK4S.js +32 -0
  133. package/dist/m/c-U7SHNWDH.js +1 -0
  134. package/dist/m/c-UDHIVLYH.js +20 -0
  135. package/dist/m/{c-BBVGTQG7.js → c-UGNV5MFB.js} +1 -1
  136. package/dist/m/{c-TQZ2JYHD.js → c-UORXLSD3.js} +1 -1
  137. package/dist/m/c-UPD33ZPE.js +1 -0
  138. package/dist/m/c-URSMSFCB.js +1 -0
  139. package/dist/m/c-UY4QX42B.js +1 -0
  140. package/dist/m/c-V44KWI2L.js +4 -0
  141. package/dist/m/c-VG5XIN4T.js +1 -0
  142. package/dist/m/c-VILENZTD.js +1 -0
  143. package/dist/m/{c-33HUYEDI.js → c-VJYEVRYK.js} +1 -1
  144. package/dist/m/c-VR2BJ4AN.js +1 -0
  145. package/dist/m/c-W4JCVLAB.js +1 -0
  146. package/dist/m/c-W6DQSHXI.js +135 -0
  147. package/dist/m/c-WBGWGOM7.js +1 -0
  148. package/dist/m/{c-4L3BTFRK.js → c-WCXLG3MV.js} +1 -1
  149. package/dist/m/c-WGW764WX.js +1 -0
  150. package/dist/m/c-WMRJKQ2V.js +5 -0
  151. package/dist/m/c-WNTYKCDG.js +1 -0
  152. package/dist/m/c-WQWIRWO3.js +72 -0
  153. package/dist/m/c-X5LNHET5.js +1 -0
  154. package/dist/m/c-X5TSXZYJ.js +2 -0
  155. package/dist/m/c-XGH4GS2T.js +1 -0
  156. package/dist/m/c-Y6F2FORL.js +1 -0
  157. package/dist/m/c-YBKHUAK7.js +10 -0
  158. package/dist/m/c-YBSS55KU.js +20 -0
  159. package/dist/m/c-YCLU4UNT.js +2 -0
  160. package/dist/m/c-YVZ2L7CE.js +1 -0
  161. package/dist/m/c-ZK4GIZH2.js +1 -0
  162. package/dist/m/c-ZRXJD4G6.js +1 -0
  163. package/dist/m/c-ZWBI4HYK.js +1 -0
  164. package/dist/m/{c-HT33EQRN.js → c-ZWIOJGMT.js} +1 -1
  165. package/dist/m/core/admin-attrs-YY7T5FGU.js +1 -0
  166. package/dist/m/core/autosave-S6OMNDCK.js +1 -0
  167. package/dist/m/core/conflict-notice-IWHMHH43.js +1 -0
  168. package/dist/m/core/host-permission-6EVJGNPL.js +1 -0
  169. package/dist/m/core/is-edit-mode-GCX6767E.js +1 -0
  170. package/dist/m/core/{persist-HKHA66IY.js → persist-UKXV5KLA.js} +1 -1
  171. package/dist/m/core/recovery-DRFZRJED.js +1 -0
  172. package/dist/m/core/save-LYY7K6U7.js +1 -0
  173. package/dist/m/core/save-core-MKRPSEEO.js +1 -0
  174. package/dist/m/core/snapshot-NU3YM6GR.js +1 -0
  175. package/dist/m/core/unsaved-warning-7QTKEN7Z.js +1 -0
  176. package/dist/m/events/index-RN2JNGBV.js +1 -0
  177. package/dist/m/internals/index-TGLQINN3.js +1 -0
  178. package/dist/m/lib/cache-bust-MUMFXZK6.js +1 -0
  179. package/dist/m/loader-3BBNZZGM.js +1 -0
  180. package/dist/m/manifest-F449FF98.js +1 -0
  181. package/dist/m/manifest-edit-4396A009.js +1 -0
  182. package/dist/m/manifest.json +2509 -1474
  183. package/dist/m/options/options-EJMS3K24.js +1 -0
  184. package/dist/m/page/editor-6LRB3GE4.js +304 -0
  185. package/dist/m/plugins/ai-edit-UTV7YO2I.js +6 -0
  186. package/dist/m/plugins/{cms-HP3LSTPN.js → cms-LRAOZHT7.js} +9 -9
  187. package/dist/m/plugins/demo-OYO5GCAO.js +1 -0
  188. package/dist/m/plugins/{derive-UAAA4V4S.js → derive-FRE5JJQE.js} +1 -1
  189. package/dist/m/plugins/indicator-4VDXWYTD.js +1 -0
  190. package/dist/m/plugins/live-AD4H6XSL.js +1 -0
  191. package/dist/m/plugins/menu-M5WW7DBF.js +1 -0
  192. package/dist/m/plugins/page-MD3T2ZX3.js +2 -0
  193. package/dist/m/plugins/page-view-PAWVZNFY.js +1 -0
  194. package/dist/m/plugins/people-JCHVPF7P.js +1 -0
  195. package/dist/m/plugins/quickcrop-BQ5YYFCH.js +26 -0
  196. package/dist/m/plugins/{richclay-RC3L2F6X.js → richclay-KLGETK77.js} +2 -2
  197. package/dist/m/plugins/sortable-4S6SQC3D.js +1 -0
  198. package/dist/m/plugins/source-TJXOIOYY.js +1 -0
  199. package/dist/m/plugins/undo-NLPGCJQY.js +1 -0
  200. package/dist/m/plugins/{unsent-HJFLQJ2O.js → unsent-OA4RGBUT.js} +1 -1
  201. package/dist/m/plugins/upgrade-HSUNDNJD.js +1 -0
  202. package/dist/m/plugins/upload-NHGJXZK2.js +1 -0
  203. package/dist/m/plugins/visitor-drafts-BW43DGY3.js +20 -0
  204. package/dist/m/plugins/visitor-drafts-owner-7ODQG7JX.js +1 -0
  205. package/dist/m/plugins/wire-VBWXEXU2.js +1 -0
  206. package/dist/m/reader-core-4W2KYEWQ.js +77 -0
  207. package/dist/m/route/route-62CHXL5B.js +1 -0
  208. package/dist/m/sync/live-sync-MO5DH33W.js +1 -0
  209. package/dist/m/ui/index-IVWN2QC4.js +1 -0
  210. package/dist/m/vendor/sap-core.vendor-RN4ZVY4X.js +6 -0
  211. package/dist/offline-manifest.json +1560 -889
  212. package/dist/page/themes/light-1.css +33 -8
  213. package/dist/server/core.cjs +1554 -311
  214. package/dist/server/offline-runtime.cjs +63 -63
  215. package/dist/server/offline-runtime.mjs +63 -63
  216. package/dist/server/page-compaction-worker.cjs +3710 -0
  217. package/dist/server/rooms.mjs +5 -0
  218. package/docs/guide.md +653 -101
  219. package/entries/sap.js +5 -5
  220. package/package.json +1 -1
  221. package/src/core/admin-contenteditable.js +5 -2
  222. package/src/core/admin-inputs.js +1 -0
  223. package/src/core/admin-onclick.js +2 -1
  224. package/src/core/boot-phase.js +2 -1
  225. package/src/core/conflict-download.js +3 -29
  226. package/src/core/conflict-notice-ui.js +4 -7
  227. package/src/core/download.js +32 -0
  228. package/src/core/host-meta.js +56 -0
  229. package/src/core/is-edit-mode.js +17 -1
  230. package/src/core/mode-key.js +125 -19
  231. package/src/core/mode-support.js +5 -0
  232. package/src/core/mode-transition.js +20 -6
  233. package/src/core/preserve-authored.js +4 -4
  234. package/src/core/recovery.js +121 -33
  235. package/src/core/save-accepted.js +33 -0
  236. package/src/core/save-core.js +111 -32
  237. package/src/core/save-job.js +108 -0
  238. package/src/core/save-prepare.js +53 -0
  239. package/src/core/save-size-notice.js +3 -1
  240. package/src/core/save-slices.js +15 -0
  241. package/src/core/save.js +557 -127
  242. package/src/core/serialize-steps.js +109 -0
  243. package/src/core/snapshot.js +209 -40
  244. package/src/core/source-map.js +83 -38
  245. package/src/core/stale-host-notice.js +1 -0
  246. package/src/core/upgrade-run.js +59 -8
  247. package/src/dom/active-element.js +5 -0
  248. package/src/lib/assets.js +1 -0
  249. package/src/lib/autosave-scheduler.js +3 -4
  250. package/src/lib/slice.js +65 -0
  251. package/src/lib/uimotion.js +774 -0
  252. package/src/lib/unsaved-state.js +2 -2
  253. package/src/live/fast-lane.js +10 -3
  254. package/src/live/local-lane.js +202 -11
  255. package/src/live/ops.js +16 -0
  256. package/src/live/page-compaction.js +162 -0
  257. package/src/live/server-lane.js +1 -0
  258. package/src/live/store.js +11 -3
  259. package/src/loader-logic.js +3 -1
  260. package/src/loader.js +14 -4
  261. package/src/page/adopt-boot.js +2 -1
  262. package/src/page/awareness.js +33 -2
  263. package/src/page/blocks.js +122 -27
  264. package/src/page/board-views.js +2 -16
  265. package/src/page/boot-pack.js +1 -1
  266. package/src/page/chart-tables.js +29 -0
  267. package/src/page/chart.js +411 -72
  268. package/src/page/checklist.js +10 -135
  269. package/src/page/checkpoint-proof.js +295 -0
  270. package/src/page/chrome.js +257 -40
  271. package/src/page/clipboard-shape.js +126 -0
  272. package/src/page/document-title-dom.js +12 -0
  273. package/src/page/document-title-runtime.js +15 -1
  274. package/src/page/document-title.js +4 -1
  275. package/src/page/drag.js +33 -3
  276. package/src/page/editor.js +207 -31
  277. package/src/page/emoji-data.js +162 -0
  278. package/src/page/export-assets.js +357 -0
  279. package/src/page/export-html.js +209 -0
  280. package/src/page/export-markdown.js +361 -0
  281. package/src/page/features/board.js +12 -3
  282. package/src/page/features/chart.js +11 -0
  283. package/src/page/features/checklist.js +428 -0
  284. package/src/page/features/dates.js +180 -0
  285. package/src/page/features/emoji.js +187 -0
  286. package/src/page/features/export-html.js +189 -0
  287. package/src/page/features/export-markdown.js +169 -0
  288. package/src/page/features/import-markdown.js +349 -0
  289. package/src/page/features/media.js +61 -5
  290. package/src/page/features/mentions.js +188 -0
  291. package/src/page/features/registry.js +24 -1
  292. package/src/page/features/table.js +375 -85
  293. package/src/page/features/title-cover.js +331 -0
  294. package/src/page/features/title-icon.js +213 -0
  295. package/src/page/features/toc.js +87 -0
  296. package/src/page/format-command.js +33 -0
  297. package/src/page/format-gate.js +68 -18
  298. package/src/page/format-host.js +71 -0
  299. package/src/page/format-native-commands.js +158 -0
  300. package/src/page/format-native.js +42 -0
  301. package/src/page/image-actions.js +64 -0
  302. package/src/page/import-markdown.js +262 -0
  303. package/src/page/inline.js +32 -8
  304. package/src/page/items.js +141 -11
  305. package/src/page/markdown.js +30 -2
  306. package/src/page/media.js +35 -119
  307. package/src/page/mention-picker.js +99 -0
  308. package/src/page/merge.js +1 -1
  309. package/src/page/placeholder.js +14 -1
  310. package/src/page/projection.js +156 -25
  311. package/src/page/recover.js +10 -12
  312. package/src/page/recovery-ui.js +464 -0
  313. package/src/page/rich/chart.js +63 -7
  314. package/src/page/save-projection.js +67 -0
  315. package/src/page/save-states.js +14 -4
  316. package/src/page/schema.js +52 -3
  317. package/src/page/table-paste.js +3 -1
  318. package/src/page/table-style.js +4 -4
  319. package/src/page/table.js +44 -2
  320. package/src/page/themes/content.css +25 -1
  321. package/src/page/themes/light-1.css +33 -8
  322. package/src/page/themes/light-1.source.css +8 -7
  323. package/src/page/toc-link.js +31 -0
  324. package/src/page/toc.js +5 -0
  325. package/src/page/view-hooks.js +58 -0
  326. package/src/page/view.js +13 -0
  327. package/src/page/ybind/binding.js +116 -6
  328. package/src/page/ybind/bridge.js +187 -20
  329. package/src/page/ybind/containment.js +162 -0
  330. package/src/page/ybind/doc.js +17 -9
  331. package/src/page/ybind/file-debt.js +63 -0
  332. package/src/page/ybind/layout.js +7 -2
  333. package/src/page/ybind/marks.js +2 -1
  334. package/src/page/ybind/moves.js +5 -4
  335. package/src/page/ybind/origins.js +106 -4
  336. package/src/page/ybind/parts.js +8 -1
  337. package/src/page/ybind/provider.js +125 -18
  338. package/src/page/ybind/recovery-proof.js +32 -9
  339. package/src/page/ybind/recovery-replay.js +905 -4
  340. package/src/page/ybind/recovery.js +174 -45
  341. package/src/page/ybind/table.js +67 -11
  342. package/src/page/ybind/walk-delta.js +258 -0
  343. package/src/page/ybind/walk.js +54 -29
  344. package/src/page/ybind/writer.js +1 -1
  345. package/src/plugins/ai-edit.js +13 -9
  346. package/src/plugins/indicator-chip.js +91 -0
  347. package/src/plugins/indicator.js +13 -80
  348. package/src/plugins/live.js +126 -15
  349. package/src/plugins/menu/actions.js +196 -0
  350. package/src/plugins/menu/people.js +279 -0
  351. package/src/plugins/menu/placement.js +121 -0
  352. package/src/plugins/menu/preferences.js +9 -0
  353. package/src/plugins/menu/seo.js +316 -397
  354. package/src/plugins/menu/style.js +171 -0
  355. package/src/plugins/menu/variants.js +296 -0
  356. package/src/plugins/menu.js +186 -183
  357. package/src/plugins/page-view.js +3 -2
  358. package/src/plugins/page.js +362 -43
  359. package/src/plugins/sortable.js +8 -1
  360. package/src/plugins/source.js +6 -0
  361. package/src/plugins/upgrade.js +51 -17
  362. package/src/plugins/upload-ui.js +12 -17
  363. package/src/plugins/visitor-drafts/bottom-ui.js +12 -4
  364. package/src/plugins/visitor-drafts/intro-style.js +7 -2
  365. package/src/plugins/visitor-drafts/intro.js +7 -4
  366. package/src/plugins/visitor-drafts/owner-chip.js +8 -12
  367. package/src/plugins/visitor-drafts/prompt.js +11 -9
  368. package/src/plugins/visitor-drafts/source.js +4 -3
  369. package/src/plugins/visitor-drafts/store.js +138 -9
  370. package/src/plugins/visitor-drafts/ui-memory.js +2 -2
  371. package/src/plugins/visitor-drafts-owner.js +4 -6
  372. package/src/plugins/visitor-drafts.js +5 -3
  373. package/src/recovery/store.js +1 -1
  374. package/src/route/route.js +4 -0
  375. package/src/server/checkpoint/index.js +2 -2
  376. package/src/server/rooms/index.js +5 -1
  377. package/src/server/rooms/live-data-rooms.js +302 -50
  378. package/src/server/rooms/page-compaction-worker.js +12 -0
  379. package/src/server/rooms/page-compactor.js +92 -0
  380. package/src/server/rooms/page-room-conformance.js +461 -0
  381. package/src/source/parse-steps.js +94 -0
  382. package/src/source/session.js +233 -57
  383. package/src/sync/editing-sender.js +12 -0
  384. package/src/sync/live-sync-edit.js +22 -2
  385. package/src/sync/live-sync.js +150 -23
  386. package/src/sync/page-relay.js +52 -0
  387. package/src/sync/presence-store.js +44 -4
  388. package/src/sync/presence.js +6 -3
  389. package/src/sync/saved-stream.js +28 -14
  390. package/src/ui/bevel-controls.js +1 -0
  391. package/src/ui/bevel-dialog.js +5 -2
  392. package/src/ui/editor-ui.js +77 -0
  393. package/src/ui/page-colour.js +281 -0
  394. package/src/ui/toast.js +16 -7
  395. package/src/vendor/hyper-html-api-upgrade.vendor.js +2 -2
  396. package/src/vendor/hyper-undo.vendor.js +1 -1
  397. package/src/vendor/hypercms.vendor.js +9 -9
  398. package/src/vendor/parse5.vendor.js +2 -2
  399. package/src/vendor/sap-core.vendor.js +5 -5
  400. package/dist/m/attrs/refetch-on-save-NWPPXOCZ.js +0 -1
  401. package/dist/m/attrs/save-freeze-FUP4Q4X3.js +0 -1
  402. package/dist/m/c-2M73252O.js +0 -1
  403. package/dist/m/c-2SPVQSHC.js +0 -1
  404. package/dist/m/c-35NBGMZB.js +0 -1
  405. package/dist/m/c-3IQRECYS.js +0 -1
  406. package/dist/m/c-4B6H4G5V.js +0 -1
  407. package/dist/m/c-4FFHZM32.js +0 -1
  408. package/dist/m/c-4YSCRICO.js +0 -1
  409. package/dist/m/c-54RCDCBU.js +0 -1
  410. package/dist/m/c-5M4YEKCX.js +0 -4
  411. package/dist/m/c-5V3MOVJT.js +0 -1
  412. package/dist/m/c-66O32MV3.js +0 -28
  413. package/dist/m/c-6HMB24EV.js +0 -1
  414. package/dist/m/c-7O6AFR65.js +0 -1
  415. package/dist/m/c-ANQTJ3B5.js +0 -2
  416. package/dist/m/c-AYVOREBE.js +0 -1
  417. package/dist/m/c-B2ZXPOS3.js +0 -3
  418. package/dist/m/c-BMIZKMPV.js +0 -1
  419. package/dist/m/c-BTDI4Y23.js +0 -1
  420. package/dist/m/c-CJZSLMVQ.js +0 -1
  421. package/dist/m/c-DBE6ORSI.js +0 -1
  422. package/dist/m/c-EDHUR4MX.js +0 -1
  423. package/dist/m/c-EY6UOM54.js +0 -1
  424. package/dist/m/c-F3CKJTJS.js +0 -1
  425. package/dist/m/c-F7Y6FLPY.js +0 -1
  426. package/dist/m/c-FA4DZVTC.js +0 -1
  427. package/dist/m/c-G2BUZITR.js +0 -1
  428. package/dist/m/c-GB3JTV6E.js +0 -1
  429. package/dist/m/c-GBGWXTX4.js +0 -1
  430. package/dist/m/c-GHBCCVG4.js +0 -1
  431. package/dist/m/c-GJAEGGXY.js +0 -1
  432. package/dist/m/c-GOWBDM6J.js +0 -1
  433. package/dist/m/c-IB52R237.js +0 -1
  434. package/dist/m/c-IKWNE4R4.js +0 -1
  435. package/dist/m/c-IU3IYEU6.js +0 -1
  436. package/dist/m/c-IZ2EBRAJ.js +0 -1
  437. package/dist/m/c-KR4UW4KW.js +0 -1
  438. package/dist/m/c-KY3VJGUA.js +0 -8
  439. package/dist/m/c-LFPHCXY3.js +0 -1
  440. package/dist/m/c-LRPUO2MX.js +0 -1
  441. package/dist/m/c-LXENEBV7.js +0 -1
  442. package/dist/m/c-NMJRXKPC.js +0 -8
  443. package/dist/m/c-OIBUTDXI.js +0 -1
  444. package/dist/m/c-PPOSCAQD.js +0 -1
  445. package/dist/m/c-QIX5BJYN.js +0 -1
  446. package/dist/m/c-QQHEX6HA.js +0 -1
  447. package/dist/m/c-R7RMANJI.js +0 -9
  448. package/dist/m/c-RI4NT75Y.js +0 -1
  449. package/dist/m/c-RM7J7BV2.js +0 -1
  450. package/dist/m/c-RUJKSUQW.js +0 -1
  451. package/dist/m/c-SGCCC4FW.js +0 -25
  452. package/dist/m/c-T4VO4OCB.js +0 -1
  453. package/dist/m/c-TQEMVJCS.js +0 -1
  454. package/dist/m/c-TR6RMDQ7.js +0 -3
  455. package/dist/m/c-UKHTLWUW.js +0 -1
  456. package/dist/m/c-UNN7LWCT.js +0 -1
  457. package/dist/m/c-UXBMRDZB.js +0 -235
  458. package/dist/m/c-V7PZZRG7.js +0 -1
  459. package/dist/m/c-VL52ADDR.js +0 -1
  460. package/dist/m/c-WNYBLIOZ.js +0 -1
  461. package/dist/m/c-WWDBYXLK.js +0 -1
  462. package/dist/m/c-XNNW2CWK.js +0 -1
  463. package/dist/m/c-Y6USGTS5.js +0 -5
  464. package/dist/m/c-YG2NJYS6.js +0 -135
  465. package/dist/m/c-Z4VRC7GU.js +0 -7
  466. package/dist/m/c-Z6K52OLP.js +0 -19
  467. package/dist/m/c-ZDY2MDAA.js +0 -21
  468. package/dist/m/c-ZUCOKOHT.js +0 -1
  469. package/dist/m/core/admin-attrs-VGNLAUDK.js +0 -1
  470. package/dist/m/core/autosave-E4PEFPZ6.js +0 -1
  471. package/dist/m/core/conflict-notice-VQ6Y64PH.js +0 -1
  472. package/dist/m/core/host-permission-XN3K2IW3.js +0 -1
  473. package/dist/m/core/is-edit-mode-JXHDVGUL.js +0 -1
  474. package/dist/m/core/recovery-TBBSICE2.js +0 -1
  475. package/dist/m/core/save-WUCHTQBE.js +0 -1
  476. package/dist/m/core/save-core-FJVHT5M3.js +0 -1
  477. package/dist/m/core/snapshot-F3SWDZMM.js +0 -1
  478. package/dist/m/core/unsaved-warning-STKBHE6G.js +0 -1
  479. package/dist/m/events/index-23DPTUT4.js +0 -1
  480. package/dist/m/internals/index-WOVAP3RU.js +0 -1
  481. package/dist/m/lib/cache-bust-CGWT6ZJI.js +0 -1
  482. package/dist/m/loader-HXX6YNH5.js +0 -1
  483. package/dist/m/manifest-F22DEDAC.js +0 -1
  484. package/dist/m/manifest-edit-C3C7376B.js +0 -1
  485. package/dist/m/options/options-2LH76JQ3.js +0 -1
  486. package/dist/m/page/editor-XUTB2HB2.js +0 -189
  487. package/dist/m/plugins/ai-edit-ZQ4CGWIP.js +0 -6
  488. package/dist/m/plugins/demo-ZIBFAA3R.js +0 -1
  489. package/dist/m/plugins/indicator-PV4YW2ID.js +0 -1
  490. package/dist/m/plugins/live-NUTTXSBS.js +0 -1
  491. package/dist/m/plugins/menu-HCKO3DSP.js +0 -138
  492. package/dist/m/plugins/page-KSUH7G6J.js +0 -2
  493. package/dist/m/plugins/page-view-W73OW7WI.js +0 -1
  494. package/dist/m/plugins/people-AJJ32YCG.js +0 -1
  495. package/dist/m/plugins/quickcrop-QNY3PKLD.js +0 -26
  496. package/dist/m/plugins/sortable-YRMQX3ZU.js +0 -1
  497. package/dist/m/plugins/source-KHK5UUSK.js +0 -1
  498. package/dist/m/plugins/undo-OF2L3CXU.js +0 -1
  499. package/dist/m/plugins/upgrade-ZNYODP5Y.js +0 -1
  500. package/dist/m/plugins/upload-XSGNILUY.js +0 -1
  501. package/dist/m/plugins/visitor-drafts-XK5GW55Q.js +0 -21
  502. package/dist/m/plugins/visitor-drafts-owner-KSSH75EV.js +0 -1
  503. package/dist/m/plugins/wire-ZWVWKF76.js +0 -1
  504. package/dist/m/reader-core-ILWLXVMP.js +0 -68
  505. package/dist/m/route/route-KOCZSEGN.js +0 -1
  506. package/dist/m/sync/live-sync-4AUVXVJU.js +0 -1
  507. package/dist/m/ui/index-EVHKMKBL.js +0 -1
  508. package/dist/m/vendor/sap-core.vendor-A7BMUYZT.js +0 -6
  509. /package/dist/m/{c-FILLTJA7.js → c-QTTJYJMA.js} +0 -0
  510. /package/dist/m/plugins/{quickcrop-QNY3PKLD.js.LEGAL.txt → quickcrop-BQ5YYFCH.js.LEGAL.txt} +0 -0
  511. /package/dist/m/plugins/{richclay-RC3L2F6X.js.LEGAL.txt → richclay-KLGETK77.js.LEGAL.txt} +0 -0
@@ -0,0 +1 @@
1
+ import{a,b}from"./c-L7JL5TL3.js";import"./c-DCFSEJZG.js";import"./c-WRBKEJD4.js";import"./c-VHNSBD2M.js";export{a as HOST_CSS,b as mountEditorUI};
@@ -0,0 +1 @@
1
+ import{a,b,c,d,e,f,g,h}from"./c-NQJRVJ56.js";import"./c-XGH4GS2T.js";import"./c-3O7OBDCM.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};
@@ -1 +1 @@
1
- import{H as a,ga as i,m as s,y as c}from"./c-66O32MV3.js";function b(r){let e=[],o="";return r.forEach(t=>{if(t.type===s.nodes.heading&&(o=t.textContent),t.type!==s.nodes.table)return;let l=i({[t.attrs.id]:a(t)})[0],m=l.rows.map(n=>({...n,cells:Object.fromEntries(Object.entries(n.cells).map(([p,f])=>[p,c(f)]))}));e.push({id:l.id,name:o||`Table ${e.length+1}`,cols:l.cols,rows:m})}),e}function j(r,e){let o=[];return r.forEach(t=>{t.type===s.nodes.heading&&o.push({level:t.attrs.level,text:t.textContent})}),{title:e,outline:o,tables:b(r)}}export{b as a,j as b};
1
+ import{D as c,M as a,m as s,na as i}from"./c-QIXT3Q7C.js";function b(r){let e=[],o="";return r.forEach(t=>{if(t.type===s.nodes.heading&&(o=t.textContent),t.type!==s.nodes.table)return;let l=i({[t.attrs.id]:a(t)})[0],m=l.rows.map(n=>({...n,cells:Object.fromEntries(Object.entries(n.cells).map(([p,f])=>[p,c(f)]))}));e.push({id:l.id,name:o||`Table ${e.length+1}`,cols:l.cols,rows:m})}),e}function j(r,e){let o=[];return r.forEach(t=>{t.type===s.nodes.heading&&o.push({level:t.attrs.level,text:t.textContent})}),{title:e,outline:o,tables:b(r)}}export{b as a,j as b};
@@ -1 +1 @@
1
- import"./c-VHNSBD2M.js";var x="clay-recovery",re=1,P="records",V="watermarks",Y="meta",ne=33554432,se=67108864;var Z="byScope",z=["usage","*"],F=typeof TextEncoder=="function"?new TextEncoder:null;function Q(e){return F?F.encode(e).length:e.length*2}function W(e){if(typeof e=="string")return Q(e);if(e&&typeof e.byteLength=="number"&&(e instanceof Uint8Array||e instanceof ArrayBuffer))return e.byteLength;if(Array.isArray(e))return e.reduce((w,p)=>w+W(p),0);if(typeof e=="number"||typeof e=="boolean"||typeof e=="bigint")return 8;if(!e||typeof e!="object")return 0;let n=0;for(let[w,p]of Object.entries(e))n+=Q(w)+W(p);return n}function G(e){if(!e||typeof e!="object")return 0;let n=0;for(let[w,p]of Object.entries(e))n+=Q(w)+W(p);return n}function R(e){let n=e?.name||"";return n==="QuotaExceededError"||n==="NS_ERROR_DOM_QUOTA_REACHED"?"quota":n==="VersionError"?"unknown-schema":n==="DataCloneError"?"uncloneable":n==="AbortError"||n==="TransactionInactiveError"||n==="InvalidStateError"?"aborted":n==="SecurityError"||n==="UnknownError"||n==="NotSupportedError"?"unavailable":"error"}function q(e,n){if(e===n)return!0;if(e instanceof ArrayBuffer&&(e=new Uint8Array(e)),n instanceof ArrayBuffer&&(n=new Uint8Array(n)),e instanceof Uint8Array||n instanceof Uint8Array){if(!(e instanceof Uint8Array)||!(n instanceof Uint8Array)||e.length!==n.length)return!1;for(let p=0;p<e.length;p++)if(e[p]!==n[p])return!1;return!0}if(!e||!n||typeof e!="object"||typeof n!="object"||Array.isArray(e)!==Array.isArray(n))return!1;let w=Object.keys(e);return w.length!==Object.keys(n).length?!1:w.every(p=>Object.prototype.hasOwnProperty.call(n,p)&&q(e[p],n[p]))}function ee(e,n){if(!Array.isArray(e)||typeof n!="number")return!1;for(let w of e)if(Array.isArray(w)&&n>=w[0]&&n<=w[1])return!0;return!1}function H(e,n){let w=(Array.isArray(e)?e:[]).map(b=>[b[0],b[1]]);w.push([n,n]),w.sort((b,h)=>b[0]-h[0]);let p=[];for(let b of w){let h=p[p.length-1];h&&b[0]<=h[1]+1?h[1]=Math.max(h[1],b[1]):p.push([b[0],b[1]])}return p}function J(e){return JSON.stringify(e)}function l(e){return new Promise((n,w)=>{e.onsuccess=()=>n(e.result),e.onerror=()=>w(e.error)})}function X(e,n){return new Promise((w,p)=>{let b=n===void 0?e.openCursor():e.openCursor(n),h=[];b.onerror=()=>p(b.error),b.onsuccess=()=>{let S=b.result;if(!S){w(h);return}h.push(S.value),S.continue()}})}function te(e){e.objectStoreNames.contains(P)||e.createObjectStore(P,{keyPath:"slot"}).createIndex(Z,"scope"),e.objectStoreNames.contains(V)||e.createObjectStore(V,{keyPath:"key"}),e.objectStoreNames.contains(Y)||e.createObjectStore(Y,{keyPath:"key"})}function oe(e=globalThis.indexedDB,{name:n=x,version:w=1}={}){return new Promise(p=>{if(!e||typeof e.open!="function"){p({ok:!1,code:"unavailable"});return}let b;try{b=e.open(n,w)}catch(A){p({ok:!1,code:R(A)});return}let h=!1,S=A=>{h||(h=!0,clearTimeout(M),p(A))},M=setTimeout(()=>S({ok:!1,code:"blocked"}),5e3);b.onupgradeneeded=()=>te(b.result),b.onsuccess=()=>{let A=b.result;A.onversionchange=()=>{try{A.close()}catch{}},S({ok:!0,db:A})},b.onerror=()=>S({ok:!1,code:R(b.error)}),b.onblocked=()=>S({ok:!1,code:"blocked"})})}function ae({scope:e,indexedDB:n=globalThis.indexedDB,now:w=()=>Date.now(),maxScopeBytes:p=33554432,maxDbBytes:b=67108864}={}){if(!Array.isArray(e)||e.length!==4)throw new TypeError("createStore needs a four-part scope");let h=null,S=null,M=null,A={scopeBytes:0,dbBytes:null,maxScopeBytes:p,maxDbBytes:b},L=()=>({ok:M?.ok!==!1,code:M?.code??null,durable:M?.ok===!0,usage:{...A}});async function j(){return h||(h=oe(n).then(o=>(M=o.ok?{ok:!0}:{ok:!1,code:o.code},o.ok&&(S=o.db),o))),h}let K=["usage",...e];async function D(o,t){let[a,r]=await Promise.all([l(o.get(K)),l(o.get(z))]);if(a&&r)return{scopeBytes:a.value,dbBytes:r.value};let d=await X(t),u={scopeBytes:0,dbBytes:0};for(let s of d){let c=s.bytes??G(s);u.dbBytes+=c,_(s.scope)&&(u.scopeBytes+=c)}return u}async function I(o,t){A.scopeBytes=t.scopeBytes,A.dbBytes=t.dbBytes,await Promise.all([l(o.put({key:K,value:t.scopeBytes})),l(o.put({key:z,value:t.dbBytes}))])}function _(o){return Array.isArray(o)&&o.length===4&&o.every((t,a)=>t===e[a])}function T(o){return Array.isArray(o)?[...e,...o]:o}function N(o){return new Promise(t=>{if(!S){t({ok:!1,code:M?.code||"unavailable"});return}let a;try{a=S.transaction([P,V,Y],"readwrite")}catch(i){t({ok:!1,code:R(i)});return}let r={...A},d=!1,u=null,s=null,c=i=>{d||(d=!0,t(i))},y=i=>{u||(u=i);try{a.abort()}catch{}};a.oncomplete=()=>{u&&Object.assign(A,r),c(u?{ok:!1,code:u}:{ok:!0,result:s})},a.onerror=()=>{u||(u=R(a.error))},a.onabort=()=>{Object.assign(A,r),c({ok:!1,code:u||R(a.error)||"aborted"})};let k={tx:a,records:a.objectStore(P),watermarks:a.objectStore(V),meta:a.objectStore(Y),abort:y};Promise.resolve().then(()=>o(k)).then(i=>{s=i},i=>y(R(i)))})}async function $(o,t){let{records:a,watermarks:r,meta:d}=o,u=await l(a.get(t.slot));if(u&&u.revision>t.revision)return{ok:!0,skipped:!0,id:t.id,revision:t.revision};if(t.kind==="text"){let y=await l(r.get(t.slot));if(y&&y.ackRevision>=t.revision)return{ok:!0,skipped:!0,id:t.id,revision:t.revision}}let s=await D(d,a),c=t.bytes-(u?.bytes??0);return s.scopeBytes+c>p||s.dbBytes+c>b?{ok:!1,code:"over-budget"}:(u?.created&&(t.created=u.created),await l(a.put(t)),await I(d,{scopeBytes:s.scopeBytes+c,dbBytes:s.dbBytes+c}),{ok:!0,id:t.id,revision:t.revision})}return{scope:e,open:j,status:L,async put(o){let t=await j();if(!t.ok)return{ok:!1,code:t.code};let a={...o,scope:[...e],slot:T(o.id)};a.bytes=G(a);let r=await N(d=>$(d,a));return r.ok?r.result:{ok:!1,code:r.code}},async get(o){let t=await j();if(!t.ok)return{ok:!1,code:t.code};let a;try{a=S.transaction([P],"readonly")}catch(d){return{ok:!1,code:R(d)}}let r=await l(a.objectStore(P).get(T(o)));return!r||!_(r.scope)?{ok:!1,code:"missing"}:{ok:!0,record:r}},async list(){let o=await j();if(!o.ok)return{ok:!1,code:o.code,records:[],status:L()};let t;try{t=S.transaction([P,Y],"readonly")}catch(c){return{ok:!1,code:R(c),records:[],status:L()}}let a=t.objectStore(P),r=t.objectStore(Y),[d,u,s]=await Promise.all([X(a.index(Z),[...e]),l(r.get(K)),l(r.get(z))]);return u?A.scopeBytes=u.value:A.scopeBytes=d.reduce((c,y)=>c+(y.bytes??0),0),A.dbBytes=s?s.value:null,{ok:!0,records:d,status:L()}},async remove(o,{revision:t}={}){let a=await j();if(!a.ok)return{ok:!1,code:a.code};let r=await N(async d=>{let u=T(o),s=await l(d.records.get(u));if(!s||!_(s.scope))return{ok:!1,code:"missing"};if(t!==void 0&&s.revision!==t)return{ok:!1,code:"stale"};let c=await D(d.meta,d.records);return await l(d.records.delete(u)),await I(d.meta,{scopeBytes:Math.max(0,c.scopeBytes-s.bytes),dbBytes:Math.max(0,c.dbBytes-s.bytes)}),{ok:!0,id:o}});return r.ok?r.result:{ok:!1,code:r.code}},async acknowledge(o,{revision:t,etag:a=null,captureId:r=null,drop:d=!0}={}){if(typeof t!="number"||!Array.isArray(o))return{ok:!1,code:"invalid"};let u=await j();if(!u.ok)return{ok:!1,code:u.code};let s=T(o),c=await N(async y=>{let k=await l(y.watermarks.get(s)),i=Math.max(k?.ackRevision??0,t);await l(y.watermarks.put({key:s,ackRevision:i,etag:a,captureId:r,updated:w()}));let f=await l(y.records.get(s));if(!f||!_(f.scope)||!d||f.revision>i)return{ok:!0,acknowledged:i,deleted:!1};let B=await D(y.meta,y.records);return await l(y.records.delete(s)),await I(y.meta,{scopeBytes:Math.max(0,B.scopeBytes-f.bytes),dbBytes:Math.max(0,B.dbBytes-f.bytes)}),{ok:!0,acknowledged:i,deleted:!0}});return c.ok?c.result:{ok:!1,code:c.code}},async appendBinary(o,t=null){if(!o||o.id===void 0||typeof o.revision!="number")return{ok:!1,code:"invalid"};let a=await j();if(!a.ok)return{ok:!1,code:a.code};let r={...o,kind:"binary-batch",scope:[...e],slot:T(o.id)};r.bytes=G(r);let d=T(o.capsuleId),u=await N(async s=>{let c=await l(s.records.get(d));if(c){if(!_(c.scope)||c.kind!=="binary"||c.channel!==r.channel)return{ok:!1,code:"channel-mismatch"};if(c.version!==r.version)return{ok:!1,code:"unknown-version"};if(!q(c.context,r.context))return{ok:!1,code:"context-mismatch"}}let y=await l(s.watermarks.get(d));if(ee(y?.retired,r.revision))return{ok:!0,skipped:!0,id:r.id,revision:r.revision};let k=await l(s.records.get(r.slot));if(k&&_(k.scope)&&k.revision>=r.revision)return{ok:!0,skipped:!0,id:r.id,revision:r.revision};let i=null;if(!c){if(!t)return{ok:!1,code:"missing"};i={...t,kind:"binary",scope:[...e],slot:d},i.bytes=G(i)}let f=await D(s.meta,s.records),B=r.bytes+(i?.bytes??0)-(k?.bytes??0);return f.scopeBytes+B>p||f.dbBytes+B>b?{ok:!1,code:"over-budget"}:(i&&await l(s.records.put(i)),await l(s.records.put(r)),await I(s.meta,{scopeBytes:f.scopeBytes+B,dbBytes:f.dbBytes+B}),{ok:!0,id:r.id,revision:r.revision})});return u.ok?u.result:{ok:!1,code:u.code}},async acknowledgeBinary({channel:o,version:t,writerId:a,records:r=[],authority:d=null,epoch:u=null,sequence:s=null}={}){if(!Array.isArray(r)||!r.length)return{ok:!0,acknowledged:0};let c=await j();if(!c.ok)return{ok:!1,code:c.code};let y=await N(async k=>{let i=new Map;for(let E of r){if(!E||E.id===void 0||typeof E.revision!="number")continue;let O=T(E.id),v=await l(k.records.get(O));if(!v||!_(v.scope)||v.channel!==o||v.version!==t||v.writerId!==a||v.revision!==E.revision)continue;let g=v,C=O;v.kind!=="binary"&&(C=T(v.capsuleId),g=await l(k.records.get(C)),!g||!_(g.scope)||g.channel!==o||g.version!==t)||i.set(J(C),{capsuleSlot:C,capsule:g})}if(!i.size)return{ok:!0,acknowledged:0};let f={authority:d,epoch:u,sequence:s},B=await D(k.meta,k.records),m=0;for(let{capsuleSlot:E,capsule:O}of i.values()){let v={...O,acknowledged:f};v.bytes=G(v),m+=v.bytes-O.bytes,await l(k.records.put(v));let g=await l(k.watermarks.get(E));await l(k.watermarks.put({...g||{},key:E,kind:"binary",retired:g?.retired??[],acknowledged:f,updated:w()}))}return await I(k.meta,{scopeBytes:Math.max(0,B.scopeBytes+m),dbBytes:Math.max(0,B.dbBytes+m)}),{ok:!0,acknowledged:i.size}});return y.ok?y.result:{ok:!1,code:y.code}},async checkpointBinary({channel:o,version:t,writerId:a,records:r=[]}={}){if(!Array.isArray(r)||!r.length)return{ok:!0,retired:[]};let d=await j();if(!d.ok)return{ok:!1,code:d.code};let u=await N(async s=>{let c=[],y=new Map,k=0;for(let f of r){if(!f||f.id===void 0||typeof f.revision!="number")continue;let B=T(f.id),m=await l(s.records.get(B));if(!m||!_(m.scope)||m.channel!==o||m.version!==t||m.writerId!==a||m.revision!==f.revision)continue;c.push({slot:B,existing:m}),k+=m.bytes;let E=m.kind==="binary"?B:T(m.capsuleId),O=J(E);y.has(O)||y.set(O,{markSlot:E,ranges:(await l(s.watermarks.get(E)))?.retired??[]}),y.get(O).ranges=H(y.get(O).ranges,m.revision)}if(!c.length)return{ok:!0,retired:[]};let i=await D(s.meta,s.records);for(let{slot:f}of c)await l(s.records.delete(f));for(let{markSlot:f,ranges:B}of y.values()){let m=await l(s.watermarks.get(f));await l(s.watermarks.put({...m||{},key:f,kind:"binary",retired:B,acknowledged:m?.acknowledged??null,updated:w()}))}return await I(s.meta,{scopeBytes:Math.max(0,i.scopeBytes-k),dbBytes:Math.max(0,i.dbBytes-k)}),{ok:!0,retired:c.map(({existing:f})=>({id:f.id,revision:f.revision}))}});return u.ok?u.result:{ok:!1,code:u.code}},async compactBinary({channel:o,version:t,capsuleId:a,expectedRevision:r,replacement:d=null,inputs:u=[]}={}){if(!d||typeof d.revision!="number")return{ok:!1,code:"invalid"};let s=await j();if(!s.ok)return{ok:!1,code:s.code};let c=T(a),y=await N(async k=>{let i=await l(k.records.get(c));if(!i||!_(i.scope)||i.kind!=="binary")return{ok:!1,code:"missing"};if(i.channel!==o)return{ok:!1,code:"channel-mismatch"};if(i.version!==t)return{ok:!1,code:"unknown-version"};if(i.revision!==r)return{ok:!1,code:"stale"};if(d.revision<=i.revision)return{ok:!1,code:"invalid"};let f=[];for(let g of u){if(!g||g.id===void 0||typeof g.revision!="number")return{ok:!1,code:"stale"};let C=T(g.id),U=await l(k.records.get(C));if(!U||!_(U.scope))return{ok:!1,code:"stale"};if(U.kind!=="binary-batch"||U.channel!==i.channel||U.version!==i.version)return{ok:!1,code:"stale"};if(!q(U.capsuleId,i.id)||U.revision!==g.revision)return{ok:!1,code:"stale"};f.push({slot:C,existing:U})}let B={...i,revision:d.revision,payload:d.payload,updated:d.updated};B.bytes=G(B);let m=B.bytes-i.bytes;for(let{existing:g}of f)m-=g.bytes;let E=await D(k.meta,k.records);if(E.scopeBytes+m>p||E.dbBytes+m>b)return{ok:!1,code:"over-budget"};for(let{slot:g}of f)await l(k.records.delete(g));await l(k.records.put(B));let O=await l(k.watermarks.get(c)),v=O?.retired??[];for(let{existing:g}of f)v=H(v,g.revision);return await l(k.watermarks.put({...O||{},key:c,kind:"binary",retired:v,acknowledged:O?.acknowledged??i.acknowledged??null,updated:w()})),await I(k.meta,{scopeBytes:E.scopeBytes+m,dbBytes:E.dbBytes+m}),{ok:!0,retired:f.map(({existing:g})=>({id:g.id,revision:g.revision})),revision:B.revision}});return y.ok?y.result:{ok:!1,code:y.code}},close(){try{S?.close()}catch{}S=null,h=null,M=null}}}export{se as DB_BUDGET_BYTES,x as DB_NAME,re as DB_VERSION,Y as META,P as RECORDS,ne as SCOPE_BUDGET_BYTES,V as WATERMARKS,R as codeFor,ae as createStore,oe as openDatabase,G as recordBytes};
1
+ import"./c-VHNSBD2M.js";var $="clay-recovery",re=1,P="records",V="watermarks",Y="meta",ne=33554432,se=67108864;var X="byScope",z=["usage","*"],x=typeof TextEncoder=="function"?new TextEncoder:null;function Q(e){return x?x.encode(e).length:e.length*2}function W(e){if(typeof e=="string")return Q(e);if(e&&typeof e.byteLength=="number"&&(e instanceof Uint8Array||e instanceof ArrayBuffer))return e.byteLength;if(Array.isArray(e))return e.reduce((w,p)=>w+W(p),0);if(typeof e=="number"||typeof e=="boolean"||typeof e=="bigint")return 8;if(!e||typeof e!="object")return 0;let n=0;for(let[w,p]of Object.entries(e))n+=Q(w)+W(p);return n}function G(e){if(!e||typeof e!="object")return 0;let n=0;for(let[w,p]of Object.entries(e))n+=Q(w)+W(p);return n}function R(e){let n=e?.name||"";return n==="QuotaExceededError"||n==="NS_ERROR_DOM_QUOTA_REACHED"?"quota":n==="VersionError"?"unknown-schema":n==="DataCloneError"?"uncloneable":n==="AbortError"||n==="TransactionInactiveError"||n==="InvalidStateError"?"aborted":n==="SecurityError"||n==="UnknownError"||n==="NotSupportedError"?"unavailable":"error"}function q(e,n){if(e===n)return!0;if(e instanceof ArrayBuffer&&(e=new Uint8Array(e)),n instanceof ArrayBuffer&&(n=new Uint8Array(n)),e instanceof Uint8Array||n instanceof Uint8Array){if(!(e instanceof Uint8Array)||!(n instanceof Uint8Array)||e.length!==n.length)return!1;for(let p=0;p<e.length;p++)if(e[p]!==n[p])return!1;return!0}if(!e||!n||typeof e!="object"||typeof n!="object"||Array.isArray(e)!==Array.isArray(n))return!1;let w=Object.keys(e);return w.length!==Object.keys(n).length?!1:w.every(p=>Object.prototype.hasOwnProperty.call(n,p)&&q(e[p],n[p]))}function ee(e,n){if(!Array.isArray(e)||typeof n!="number")return!1;for(let w of e)if(Array.isArray(w)&&n>=w[0]&&n<=w[1])return!0;return!1}function F(e,n){let w=(Array.isArray(e)?e:[]).map(b=>[b[0],b[1]]);w.push([n,n]),w.sort((b,h)=>b[0]-h[0]);let p=[];for(let b of w){let h=p[p.length-1];h&&b[0]<=h[1]+1?h[1]=Math.max(h[1],b[1]):p.push([b[0],b[1]])}return p}function H(e){return JSON.stringify(e)}function l(e){return new Promise((n,w)=>{e.onsuccess=()=>n(e.result),e.onerror=()=>w(e.error)})}function J(e,n){return new Promise((w,p)=>{let b=n===void 0?e.openCursor():e.openCursor(n),h=[];b.onerror=()=>p(b.error),b.onsuccess=()=>{let S=b.result;if(!S){w(h);return}h.push(S.value),S.continue()}})}function te(e){e.objectStoreNames.contains(P)||e.createObjectStore(P,{keyPath:"slot"}).createIndex(X,"scope"),e.objectStoreNames.contains(V)||e.createObjectStore(V,{keyPath:"key"}),e.objectStoreNames.contains(Y)||e.createObjectStore(Y,{keyPath:"key"})}function oe(e=globalThis.indexedDB,{name:n=$,version:w=1}={}){return new Promise(p=>{if(!e||typeof e.open!="function"){p({ok:!1,code:"unavailable"});return}let b;try{b=e.open(n,w)}catch(A){p({ok:!1,code:R(A)});return}let h=!1,S=A=>{h||(h=!0,clearTimeout(M),p(A))},M=setTimeout(()=>S({ok:!1,code:"blocked"}),5e3);b.onupgradeneeded=()=>te(b.result),b.onsuccess=()=>{let A=b.result;A.onversionchange=()=>{try{A.close()}catch{}},S({ok:!0,db:A})},b.onerror=()=>S({ok:!1,code:R(b.error)}),b.onblocked=()=>S({ok:!1,code:"blocked"})})}function ae({scope:e,indexedDB:n=globalThis.indexedDB,now:w=()=>Date.now(),maxScopeBytes:p=33554432,maxDbBytes:b=67108864}={}){if(!Array.isArray(e)||e.length!==4)throw new TypeError("createStore needs a four-part scope");let h=null,S=null,M=null,A={scopeBytes:0,dbBytes:null,maxScopeBytes:p,maxDbBytes:b},L=()=>({ok:M?.ok!==!1,code:M?.code??null,durable:M?.ok===!0,usage:{...A}});async function j(){return h||(h=oe(n).then(o=>(M=o.ok?{ok:!0}:{ok:!1,code:o.code},o.ok&&(S=o.db),o))),h}let K=["usage",...e];async function D(o,t){let[i,r]=await Promise.all([l(o.get(K)),l(o.get(z))]);if(i&&r)return{scopeBytes:i.value,dbBytes:r.value};let u=await J(t),d={scopeBytes:0,dbBytes:0};for(let s of u){let c=s.bytes??G(s);d.dbBytes+=c,_(s.scope)&&(d.scopeBytes+=c)}return d}async function I(o,t){A.scopeBytes=t.scopeBytes,A.dbBytes=t.dbBytes,await Promise.all([l(o.put({key:K,value:t.scopeBytes})),l(o.put({key:z,value:t.dbBytes}))])}function _(o){return Array.isArray(o)&&o.length===4&&o.every((t,i)=>t===e[i])}function T(o){return Array.isArray(o)?[...e,...o]:o}function N(o){return new Promise(t=>{if(!S){t({ok:!1,code:M?.code||"unavailable"});return}let i;try{i=S.transaction([P,V,Y],"readwrite")}catch(a){t({ok:!1,code:R(a)});return}let r={...A},u=!1,d=null,s=null,c=a=>{u||(u=!0,t(a))},y=a=>{d||(d=a);try{i.abort()}catch{}};i.oncomplete=()=>{d&&Object.assign(A,r),c(d?{ok:!1,code:d}:{ok:!0,result:s})},i.onerror=()=>{d||(d=R(i.error))},i.onabort=()=>{Object.assign(A,r),c({ok:!1,code:d||R(i.error)||"aborted"})};let k={tx:i,records:i.objectStore(P),watermarks:i.objectStore(V),meta:i.objectStore(Y),abort:y};Promise.resolve().then(()=>o(k)).then(a=>{s=a},a=>y(R(a)))})}async function Z(o,t){let{records:i,watermarks:r,meta:u}=o,d=await l(i.get(t.slot));if(d&&d.revision>t.revision)return{ok:!0,skipped:!0,id:t.id,revision:t.revision};if(t.kind==="text"){let y=await l(r.get(t.slot));if(y&&y.ackRevision>=t.revision)return{ok:!0,skipped:!0,id:t.id,revision:t.revision}}let s=await D(u,i),c=t.bytes-(d?.bytes??0);return s.scopeBytes+c>p||s.dbBytes+c>b?{ok:!1,code:"over-budget"}:(d?.created&&(t.created=d.created),await l(i.put(t)),await I(u,{scopeBytes:s.scopeBytes+c,dbBytes:s.dbBytes+c}),{ok:!0,id:t.id,revision:t.revision})}return{scope:e,open:j,status:L,async put(o){let t=await j();if(!t.ok)return{ok:!1,code:t.code};let i={...o,scope:[...e],slot:T(o.id)};i.bytes=G(i);let r=await N(u=>Z(u,i));return r.ok?r.result:{ok:!1,code:r.code}},async get(o){let t=await j();if(!t.ok)return{ok:!1,code:t.code};let i;try{i=S.transaction([P],"readonly")}catch(u){return{ok:!1,code:R(u)}}let r=await l(i.objectStore(P).get(T(o)));return!r||!_(r.scope)?{ok:!1,code:"missing"}:{ok:!0,record:r}},async list(){let o=await j();if(!o.ok)return{ok:!1,code:o.code,records:[],status:L()};let t;try{t=S.transaction([P,Y],"readonly")}catch(c){return{ok:!1,code:R(c),records:[],status:L()}}let i=t.objectStore(P),r=t.objectStore(Y),[u,d,s]=await Promise.all([J(i.index(X),[...e]),l(r.get(K)),l(r.get(z))]);return d?A.scopeBytes=d.value:A.scopeBytes=u.reduce((c,y)=>c+(y.bytes??0),0),A.dbBytes=s?s.value:null,{ok:!0,records:u,status:L()}},async remove(o,{revision:t}={}){let i=await j();if(!i.ok)return{ok:!1,code:i.code};let r=await N(async u=>{let d=T(o),s=await l(u.records.get(d));if(!s||!_(s.scope))return{ok:!1,code:"missing"};if(t!==void 0&&s.revision!==t)return{ok:!1,code:"stale"};let c=await D(u.meta,u.records);return await l(u.records.delete(d)),await I(u.meta,{scopeBytes:Math.max(0,c.scopeBytes-s.bytes),dbBytes:Math.max(0,c.dbBytes-s.bytes)}),{ok:!0,id:o}});return r.ok?r.result:{ok:!1,code:r.code}},async acknowledge(o,{revision:t,etag:i=null,captureId:r=null,drop:u=!0}={}){if(typeof t!="number"||!Array.isArray(o))return{ok:!1,code:"invalid"};let d=await j();if(!d.ok)return{ok:!1,code:d.code};let s=T(o),c=await N(async y=>{let k=await l(y.watermarks.get(s)),a=Math.max(k?.ackRevision??0,t);await l(y.watermarks.put({key:s,ackRevision:a,etag:i,captureId:r,updated:w()}));let f=await l(y.records.get(s));if(!f||!_(f.scope)||!u||f.revision>a)return{ok:!0,acknowledged:a,deleted:!1};let B=await D(y.meta,y.records);return await l(y.records.delete(s)),await I(y.meta,{scopeBytes:Math.max(0,B.scopeBytes-f.bytes),dbBytes:Math.max(0,B.dbBytes-f.bytes)}),{ok:!0,acknowledged:a,deleted:!0}});return c.ok?c.result:{ok:!1,code:c.code}},async appendBinary(o,t=null){if(!o||o.id===void 0||typeof o.revision!="number")return{ok:!1,code:"invalid"};let i=await j();if(!i.ok)return{ok:!1,code:i.code};let r={...o,kind:"binary-batch",scope:[...e],slot:T(o.id)};r.bytes=G(r);let u=T(o.capsuleId),d=await N(async s=>{let c=await l(s.records.get(u));if(c){if(!_(c.scope)||c.kind!=="binary"||c.channel!==r.channel)return{ok:!1,code:"channel-mismatch"};if(c.version!==r.version)return{ok:!1,code:"unknown-version"};if(!q(c.context,r.context))return{ok:!1,code:"context-mismatch"}}let y=await l(s.watermarks.get(u));if(ee(y?.retired,r.revision))return{ok:!0,skipped:!0,id:r.id,revision:r.revision};let k=await l(s.records.get(r.slot));if(k&&_(k.scope)&&k.revision>=r.revision)return{ok:!0,skipped:!0,id:r.id,revision:r.revision};let a=null;if(!c){if(!t)return{ok:!1,code:"missing"};a={...t,kind:"binary",scope:[...e],slot:u},a.bytes=G(a)}let f=await D(s.meta,s.records),B=r.bytes+(a?.bytes??0)-(k?.bytes??0);return f.scopeBytes+B>p||f.dbBytes+B>b?{ok:!1,code:"over-budget"}:(a&&await l(s.records.put(a)),await l(s.records.put(r)),await I(s.meta,{scopeBytes:f.scopeBytes+B,dbBytes:f.dbBytes+B}),{ok:!0,id:r.id,revision:r.revision})});return d.ok?d.result:{ok:!1,code:d.code}},async acknowledgeBinary({channel:o,version:t,writerId:i,records:r=[],authority:u=null,epoch:d=null,sequence:s=null}={}){if(!Array.isArray(r)||!r.length)return{ok:!0,acknowledged:0};let c=await j();if(!c.ok)return{ok:!1,code:c.code};let y=await N(async k=>{let a=new Map;for(let E of r){if(!E||E.id===void 0||typeof E.revision!="number")continue;let O=T(E.id),v=await l(k.records.get(O));if(!v||!_(v.scope)||v.channel!==o||v.version!==t||v.writerId!==i||v.revision!==E.revision)continue;let g=v,C=O;v.kind!=="binary"&&(C=T(v.capsuleId),g=await l(k.records.get(C)),!g||!_(g.scope)||g.channel!==o||g.version!==t)||a.set(H(C),{capsuleSlot:C,capsule:g})}if(!a.size)return{ok:!0,acknowledged:0};let f={authority:u,epoch:d,sequence:s},B=await D(k.meta,k.records),m=0;for(let{capsuleSlot:E,capsule:O}of a.values()){let v={...O,acknowledged:f};v.bytes=G(v),m+=v.bytes-O.bytes,await l(k.records.put(v));let g=await l(k.watermarks.get(E));await l(k.watermarks.put({...g||{},key:E,kind:"binary",retired:g?.retired??[],acknowledged:f,updated:w()}))}return await I(k.meta,{scopeBytes:Math.max(0,B.scopeBytes+m),dbBytes:Math.max(0,B.dbBytes+m)}),{ok:!0,acknowledged:a.size}});return y.ok?y.result:{ok:!1,code:y.code}},async checkpointBinary({channel:o,version:t,writerId:i,records:r=[]}={}){if(!Array.isArray(r)||!r.length)return{ok:!0,retired:[]};let u=await j();if(!u.ok)return{ok:!1,code:u.code};let d=await N(async s=>{let c=[],y=new Map,k=0;for(let f of r){if(!f||f.id===void 0||typeof f.revision!="number")continue;let B=T(f.id),m=await l(s.records.get(B));if(!m||!_(m.scope)||m.channel!==o||m.version!==t||m.writerId!==i||m.revision!==f.revision)continue;c.push({slot:B,existing:m}),k+=m.bytes;let E=m.kind==="binary"?B:T(m.capsuleId),O=H(E);y.has(O)||y.set(O,{markSlot:E,ranges:(await l(s.watermarks.get(E)))?.retired??[]}),y.get(O).ranges=F(y.get(O).ranges,m.revision)}if(!c.length)return{ok:!0,retired:[]};let a=await D(s.meta,s.records);for(let{slot:f}of c)await l(s.records.delete(f));for(let{markSlot:f,ranges:B}of y.values()){let m=await l(s.watermarks.get(f));await l(s.watermarks.put({...m||{},key:f,kind:"binary",retired:B,acknowledged:m?.acknowledged??null,updated:w()}))}return await I(s.meta,{scopeBytes:Math.max(0,a.scopeBytes-k),dbBytes:Math.max(0,a.dbBytes-k)}),{ok:!0,retired:c.map(({existing:f})=>({id:f.id,revision:f.revision}))}});return d.ok?d.result:{ok:!1,code:d.code}},async compactBinary({channel:o,version:t,capsuleId:i,expectedRevision:r,replacement:u=null,inputs:d=[]}={}){if(!u||typeof u.revision!="number")return{ok:!1,code:"invalid"};let s=await j();if(!s.ok)return{ok:!1,code:s.code};let c=T(i),y=await N(async k=>{let a=await l(k.records.get(c));if(!a||!_(a.scope)||a.kind!=="binary")return{ok:!1,code:"missing"};if(a.channel!==o)return{ok:!1,code:"channel-mismatch"};if(a.version!==t)return{ok:!1,code:"unknown-version"};if(a.revision!==r)return{ok:!1,code:"stale"};if(u.revision<=a.revision)return{ok:!1,code:"invalid"};let f=[];for(let g of d){if(!g||g.id===void 0||typeof g.revision!="number")return{ok:!1,code:"stale"};let C=T(g.id),U=await l(k.records.get(C));if(!U||!_(U.scope))return{ok:!1,code:"stale"};if(U.kind!=="binary-batch"||U.channel!==a.channel||U.version!==a.version)return{ok:!1,code:"stale"};if(!q(U.capsuleId,a.id)||U.revision!==g.revision)return{ok:!1,code:"stale"};f.push({slot:C,existing:U})}let B={...a,revision:u.revision,context:u.context??a.context,payload:u.payload,updated:u.updated};B.bytes=G(B);let m=B.bytes-a.bytes;for(let{existing:g}of f)m-=g.bytes;let E=await D(k.meta,k.records);if(E.scopeBytes+m>p||E.dbBytes+m>b)return{ok:!1,code:"over-budget"};for(let{slot:g}of f)await l(k.records.delete(g));await l(k.records.put(B));let O=await l(k.watermarks.get(c)),v=O?.retired??[];for(let{existing:g}of f)v=F(v,g.revision);return await l(k.watermarks.put({...O||{},key:c,kind:"binary",retired:v,acknowledged:O?.acknowledged??a.acknowledged??null,updated:w()})),await I(k.meta,{scopeBytes:E.scopeBytes+m,dbBytes:E.dbBytes+m}),{ok:!0,retired:f.map(({existing:g})=>({id:g.id,revision:g.revision})),revision:B.revision}});return y.ok?y.result:{ok:!1,code:y.code}},close(){try{S?.close()}catch{}S=null,h=null,M=null}}}export{se as DB_BUDGET_BYTES,$ as DB_NAME,re as DB_VERSION,Y as META,P as RECORDS,ne as SCOPE_BUDGET_BYTES,V as WATERMARKS,R as codeFor,ae as createStore,oe as openDatabase,G as recordBytes};
@@ -0,0 +1 @@
1
+ import{a as u}from"./c-5ZQV7KC4.js";import"./c-N326R2JD.js";import{f as n}from"./c-TJAXGIRV.js";import{b as h,c as a}from"./c-BWFVSBDF.js";import{b as T,g as _}from"./c-IVMD3FEM.js";import{b as p}from"./c-TNEM3RNM.js";import{b}from"./c-PLP4JKFC.js";import"./c-Q26MME6N.js";import"./c-VKEDWYDF.js";import{A as v,B as g,J as k,L as E,P as w,q as f,r as m,x as y}from"./c-T637T7SN.js";import"./c-4ASQPRQL.js";import"./c-GQ6F6IDK.js";import"./c-I2SCCUEW.js";import"./c-5VYOWDTI.js";import"./c-FWKHM4E7.js";import"./c-X5LNHET5.js";import"./c-WYFDLITL.js";import"./c-UGHH4MB3.js";import"./c-ZWIOJGMT.js";import"./c-B7J4K2AE.js";import"./c-ATKAOH23.js";import"./c-EK63G3CG.js";import"./c-NQJRVJ56.js";import"./c-XGH4GS2T.js";import"./c-IJUK2GPW.js";import"./c-3O7OBDCM.js";import"./c-BPF2NSPV.js";import"./c-P7KNDG34.js";import"./c-CYWLPPUS.js";import"./c-N7JPUPGC.js";import"./c-7MG5RU63.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 x=250,A=2e3,c=["focusin","focusout","selectionchange","clay:sync-applied","clay:workspace-background","clay:workspace-foreground"],S=t=>n.setGeneric(t),o=class{constructor({send:e=S,now:i=()=>Date.now()}){this.send=e,this.now=i,this.others=!1,this.background=!1,this.sent=null,this.lastAt=-1/0,this.timer=null,this.poked=null,this.inflight=!1,this.retry=null,this.stopped=!1,this._onEvent=s=>{s.type==="clay:workspace-background"&&(this.background=!0),s.type==="clay:workspace-foreground"&&(this.background=!1),this.poke()}}start(){this.stopped=!1;for(let e of c)document.addEventListener(e,this._onEvent)}resume(){this.stopped&&(this.start(),this.sent=null,this.schedule())}stop(){this.stopped=!0;for(let e of c)document.removeEventListener(e,this._onEvent);clearTimeout(this.timer),clearTimeout(this.poked),clearTimeout(this.retry),this.timer=null,this.poked=null,this.retry=null}roster(e){let s=(e&&Array.isArray(e.people)?e.people:[]).some(r=>r&&r.you!==!0);s!==this.others&&(this.others=s,this.schedule())}reconnected(){this.sent=null,this.schedule()}wanted(){return!this.others||this.background?null:a(h(document.activeElement))}poke(){this.poked===null&&(this.poked=setTimeout(()=>{this.poked=null,this.schedule()},0))}schedule(){if(this.stopped||this.timer!==null||this.inflight||this.wanted()===this.sent)return;let e=Math.max(0,this.lastAt+x-this.now());this.timer=setTimeout(()=>{this.timer=null,this.flush()},e)}flush(){if(this.inflight)return;let e=this.wanted();if(e===this.sent)return;this.sent=e,this.lastAt=this.now(),this.inflight=!0;let i=s=>{if(this.inflight=!1,!this.stopped){if(s)clearTimeout(this.retry),this.retry=null;else if(this.sent===e){this.sent=void 0,this.retry===null&&(this.retry=setTimeout(()=>{this.retry=null,this.schedule()},A));return}this.schedule()}};Promise.resolve(this.send(e)).then(s=>i(!!s),()=>i(!1))}};function P(t){let e=()=>(t._presenceQuiesced=!0,t._editing?.stop(),n.setGeneric(null),n.releaseTarget(),typeof document<"u"&&document.dispatchEvent(new Event("clay:presence-quiesce")),t.lane==="live"&&t._morphInFlight?{ok:!1,code:"pending-input"}:{ok:!0}),i=()=>{t._presenceQuiesced=!1,t._editing?.resume(),typeof document<"u"&&document.dispatchEvent(new Event("clay:presence-resume"))},s=()=>{t._presenceQuiesced=!1,t.stop(),typeof document<"u"&&document.dispatchEvent(new Event("clay:presence-resume"))};return{id:"clay:sync",order:50,async prepare(r){if(await u(),r?.initial)return{quiesce:e,resume:i,dispose:s};let l=!1;return{quiesce:e,resume:i,enable(){let d=t.currentFile;t.stop(),t.start(d,{lane:"live"}),l=!0},dispose:()=>{t._presenceQuiesced=!1,l&&t.stop(),typeof document<"u"&&document.dispatchEvent(new Event("clay:presence-resume"))}}}}}export{o as EditingSender,k as baselineSettled,m as conflictResolvedBySync,_ as enableAdminInputs,p as enableAdminResources,b as enableContentEditable,T as enableOnClick,v as getLastSavedBytes,f as isSaveConflicted,w as savePageThrottled,E as schedulePaintHeal,g as setLastSavedBaselines,y as setUnsavedChanges,P as syncParticipant};
@@ -0,0 +1 @@
1
+ import{a as D,b as x}from"./c-A7LS5UZW.js";import{b as L,c as M,d as _,f as N}from"./c-TJAXGIRV.js";import"./c-BWFVSBDF.js";import"./c-XGH4GS2T.js";import"./c-3O7OBDCM.js";import"./c-BPF2NSPV.js";import"./c-P7KNDG34.js";import"./c-CYWLPPUS.js";import"./c-N7JPUPGC.js";import"./c-HA6INT6J.js";import"./c-DCFSEJZG.js";import"./c-WRBKEJD4.js";import"./c-VHNSBD2M.js";var m="This computer",C=64,O=64,R=/^[\x20-\x7e]{1,128}$/;function X(){return typeof crypto<"u"&&typeof crypto.randomUUID=="function"?crypto.randomUUID():Math.random().toString(36).slice(2)+Date.now().toString(36)}function B(e){return typeof e!="string"?m:e.trim().slice(0,O)||m}function v(e){let r=_(e===void 0?null:e);return r.ok?r.target:null}function j(e,r){let c=null,f=-1;for(let l of r)l.editing===null||l.n<=f||(c=l.editing,f=l.n);return e.editing!==null&&e.n>=f?e.editing:c}function Y({scope:e=null,key:r=null,store:c=N,channel:f=null,label:l=m}={}){let S=B(l),w=r??"clay-live:"+(e??(typeof window<"u"?window.location.pathname:"/")),P="local:"+(e??w),b=X(),i=new Map,d=null,u=0,p=null,I=null,s=null,g=null,a=!1;function h(n){p&&p.post({type:D,from:b,...n})}function y(){let n={id:b,you:!0,n:u,editing:d},t=[];for(let o of i.values())t.push({id:o.id,you:!1,n:o.n,editing:o.editing});let E=[n,...t].sort((o,A)=>o.id<A.id?-1:o.id>A.id?1:0);c.receive({people:[{id:P,name:S,you:!0,canEdit:!0,editing:j(n,t),sessions:E}],anonymous:0})}function T(n){if(!n||n.from===b||typeof n.from!="string"||!R.test(n.from))return;let t=i.get(n.from);if(n.op==="bye"){t&&i.delete(n.from),y();return}if(n.op!=="hello"&&n.op!=="update"&&n.op!=="beat"||!t&&i.size>=C)return;let E=n.op==="beat"?t?t.editing:null:v(n.editing),o=Number.isSafeInteger(n.n)&&n.n>=0?n.n:0;t&&o<t.n||(i.set(n.from,{id:n.from,n:o,editing:E,seenAt:Date.now()}),n.op==="hello"&&!t&&h({op:"hello",n:u,editing:d,label:S}),y())}function U(){if(!a)return;h({op:"beat",n:u});let n=Date.now(),t=!1;for(let[E,o]of i)n-o.seenAt<=M||(i.delete(E),t=!0);t&&y()}function k(n){let t=n&&typeof n=="object"&&"editing"in n?n.editing:null;return d=v(t),u+=1,h({op:"update",n:u,editing:d}),y(),!0}return{sessionId:b,start(){return a||(a=!0,p=f??x(w),I=p.subscribe("presence",T),s=c.attachTransport({send:k}),h({op:"hello",n:u,editing:d,label:S}),y(),g=setInterval(U,L)),s},stop(){a&&(a=!1,g!==null&&clearInterval(g),g=null,h({op:"bye"}),i.clear(),I?.(),I=null,p=null,s?.detach(),s=null)}}}export{m as LOCAL_LABEL,C as MAX_SESSIONS,Y as localPresence};
@@ -0,0 +1 @@
1
+ import{c as M,g as _,h as A,w as q}from"./c-4TXNLX4K.js";import{B as G}from"./c-AMU3BPPR.js";import{D as O,G as $,I as y,J as B,M as R,Z as j,_ as U,b as z,m as p,na as F}from"./c-QIXT3Q7C.js";import{a as x}from"./c-WCXLG3MV.js";import{a as K}from"./c-I2SCCUEW.js";var{TextSelection:J}=z,S=new WeakMap,D=new Set;function g(n,t){let e=null;return n.forEach(s=>{s.type===p.nodes.table&&s.attrs.id===t&&(e=s)}),e}function N(n){return n?F({[n.attrs.id]:R(n)})[0]:null}function Q(n,t,e){let s=y(n.attrs.cols);if(!s.length)return null;let i=M(n),a=s.filter(r=>r!==s[0]&&i[r]==="number");return a.length?{id:B(),pos:t,parent:e,source:n.attrs.id,kind:"bar",x:s[0],series:a,title:"",highlight:null}:null}function wt(n,t){let e=n.state.doc,s=e.nodeAt(t);if(s?.type!==p.nodes.table)return!1;let i=t+s.nodeSize,a=e.maybeChild(e.resolve(i).index(0)),r=Q(s,$(s.attrs.pos,a?.attrs.pos??null),s.attrs.parent);return r?(D.add(r.id),n.dispatch(n.state.tr.insert(i,p.nodes.chart.create(r))),!0):(x("This table has no number column to chart yet."),!0)}function W(n,t,e,s){let i=n.state.tr;if(s&&i.delete(s.from,s.to),!g(i.doc,e.attrs.id)||t>=i.doc.childCount)return!1;let a=0;for(let m=0;m<t;m++)a+=i.doc.child(m).nodeSize;let r=i.doc.child(t),c=r.isTextblock&&r.content.size===0,h=i.doc.maybeChild(t+1),f=c?r.attrs.pos:$(r.attrs.pos,h?.attrs.pos??null),d=Q(e,f,r.attrs.parent??null);if(!d)return s&&n.dispatch(n.state.tr.delete(s.from,s.to)),x("This table has no number column to chart yet."),!0;let w=p.nodes.chart.create(d);return i=c?i.replaceWith(a,a+r.nodeSize,w):i.insert(a+r.nodeSize,w),D.add(d.id),n.dispatch(i.scrollIntoView()),!0}var X=n=>y(n.attrs.cols).map(t=>n.attrs.cols[t].name||"Untitled").join(", ");function kt(n,t,e=null){let s=_(n.state.doc);if(!s.length)return e&&n.dispatch(n.state.tr.delete(e.from,e.to)),x("Add a table first: a chart plots the numbers in a table on this page."),!0;if(s.length===1)return W(n,t,s[0],e);let i=n.state.doc,a=n.nodeDOM(i.resolve(n.state.selection.head).before(1))??n.dom;return q(n,a,s.map(r=>({label:A(i,r.attrs.id)??"",description:`${r.childCount} ${r.childCount===1?"row":"rows"} \xB7 ${X(r)}`,icon:"\u25A6",run:()=>W(n,t,r,e)})))}var V=n=>`<svg viewBox="0 0 16 16" width="14" height="14" fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true">${n}</svg>`,Z=V('<rect x="2.5" y="3" width="11" height="10" rx="1.5"/><path d="M2.5 6.5h11M6 6.5V13"/>'),tt=V('<g transform="scale(0.6667)" stroke-width="2.25"><path d="M12.22 2h-.44a2 2 0 0 0-2 2v.18a2 2 0 0 1-1 1.73l-.43.25a2 2 0 0 1-2 0l-.15-.08a2 2 0 0 0-2.73.73l-.22.38a2 2 0 0 0 .73 2.73l.15.1a2 2 0 0 1 1 1.72v.51a2 2 0 0 1-1 1.74l-.15.09a2 2 0 0 0-.73 2.73l.22.38a2 2 0 0 0 2.73.73l.15-.08a2 2 0 0 1 2 0l.43.25a2 2 0 0 1 1 1.73V20a2 2 0 0 0 2 2h.44a2 2 0 0 0 2-2v-.18a2 2 0 0 1 1-1.73l.43-.25a2 2 0 0 1 2 0l.15.08a2 2 0 0 0 2.73-.73l.22-.39a2 2 0 0 0-.73-2.73l-.15-.08a2 2 0 0 1-1-1.74v-.5a2 2 0 0 1 1-1.74l.15-.09a2 2 0 0 0 .73-2.73l-.22-.38a2 2 0 0 0-2.73-.73l-.15.08a2 2 0 0 1-2 0l-.43-.25a2 2 0 0 1-1-1.73V4a2 2 0 0 0-2-2z"/><circle cx="12" cy="12" r="3"/></g>'),et=V('<path d="M2.75 4.5h10.5M6.25 4.5V2.75h3.5V4.5M4.25 4.5l.6 8.75h6.3l.6-8.75"/>'),st=[["bar","Bar"],["line","Line"],["pie","Pie"]],it="Untitled chart";function nt(n,t){let e=null;return n.forEach((s,i)=>{e===null&&s.type===p.nodes.table&&s.attrs.id===t&&(e=i)}),e}function E(n){let t=[];return n.forEach(e=>{e.type===p.nodes.table&&y(e.attrs.cols).length>1&&t.push(e)}),t.map(e=>({id:e.attrs.id,name:A(n,e.attrs.id),rows:e.childCount}))}function at(n){let t=y(n.attrs.cols);if(!t.length)return null;let e=M(n),s=t.find(a=>e[a]!=="number")??t[0],i=t.filter(a=>a!==s&&e[a]==="number");return{x:s,series:i.length?i:t.filter(a=>a!==s).slice(0,1)}}function l(n,t,e,s=null){let i=n.createElement(t);return e&&(i.className=e),s!==null&&(i.textContent=s),i}function C(n,t,e,s=!1){let i=l(n,"option","",e);return i.value=t,i.selected=s,i}function T(n,t,e){let s=l(n,"select","page-chart-select");return s.dataset.field=t,s.setAttribute("aria-label",e),s}var Y=class{constructor(t,e,s){this.node=t,this.view=e,this.getPos=s,this.source=void 0,this.tables=null,this.frame=null,this.unsaved=null,this.titleInput=null;let i=e.dom.ownerDocument;this.doc=i,this.dom=i.createElement("figure"),this.dom.className="page-chart",this.dom.dataset.id=t.attrs.id??"",this.dom.dataset.type="chart",this.head=l(i,"div","page-chart-head"),this.head.contentEditable="false",this.title=l(i,"span","page-chart-title"),this.chip=l(i,"button","page-chart-source"),this.chip.type="button",this.chip.contentEditable="false",this.chip.setAttribute("aria-label","Go to source table"),this.chip.innerHTML=Z,this.chipName=l(i,"span","page-chart-source-name"),this.chip.append(this.chipName),this.chip.addEventListener("click",()=>this.goToSource()),this.edit=l(i,"button","page-chart-edit"),this.edit.type="button",this.edit.contentEditable="false",this.edit.setAttribute("aria-haspopup","dialog"),this.edit.setAttribute("aria-expanded","false"),this.edit.innerHTML=tt,this.edit.append("Edit chart"),this.edit.addEventListener("click",()=>this.panel.isConnected?this.closePanel(!0):this.openPanel()),this.head.append(this.title,this.chip,this.edit),this.plot=l(i,"div","page-chart-plot"),this.broken=l(i,"div","page-chart-broken"),this.broken.hidden=!0,this.broken.contentEditable="false",this.brokenKey=null,this.brokenSelect=null,this.broken.addEventListener("click",a=>this.brokenClick(a)),this.panel=l(i,"div","page-chart-panel"),this.panel.tabIndex=-1,this.panel.contentEditable="false",this.panel.setAttribute("role","dialog"),this.panel.setAttribute("aria-label","Chart settings"),this.panel.addEventListener("click",a=>this.panelClick(a)),this.panel.addEventListener("change",a=>this.panelChange(a)),this.panel.addEventListener("mousedown",a=>{a.target.closest?.("button")&&a.preventDefault()}),this.outside=a=>{!this.panel.isConnected||this.dom.contains(a.target)||(this.commitTitle(),this.closePanel())},this.escape=a=>{!this.panel.isConnected||a.key!=="Escape"||(a.preventDefault(),a.stopPropagation(),this.closePanel(!0))},i.addEventListener("mousedown",this.outside,!0),i.addEventListener("keydown",this.escape,!0),this.dom.append(this.head,this.plot,this.broken),S.has(e)||S.set(e,new Set),S.get(e).add(this),this.refresh(),D.delete(t.attrs.id)&&this.openSoon()}refresh(){this.renderHead(),this.panel.isConnected&&this.panelKey()!==this.renderedKey&&this.redrawPanel();let t=this.view.state.doc,e=g(t,this.node.attrs.source),s=E(t).map(i=>`${i.id}:${i.name}:${i.rows}`).join("|");e===this.source&&s===this.tables||(this.source=e,this.tables=s,this.schedule())}schedule(){if(this.frame!==null)return;let t=this.dom.ownerDocument.defaultView,e=t.requestAnimationFrame?.bind(t)??(s=>t.setTimeout(s,0));this.frame=e(()=>{this.frame=null,this.draw()})}draw(){let t=this.node.attrs,e=j({id:t.id,type:t.kind,x:t.x,series:t.series,title:t.title,highlight:t.highlight},N(this.source));this.plot.innerHTML=U(e,{width:640,height:320,narrow:this.dom.getBoundingClientRect().width<480}),this.renderBroken(e)}renderBroken(t){let e=t.state==="missing"&&t.reason==="table";if(this.plot.hidden=e,this.broken.hidden=!e,!e){this.brokenKey!==null&&(this.broken.textContent="",this.brokenKey=null,this.brokenSelect=null);return}let s=E(this.view.state.doc),i=s.map(h=>`${h.id}:${h.name}:${h.rows}`).join("|");if(this.brokenKey===i)return;this.brokenKey=i,this.brokenSelect=null;let a=this.doc;this.broken.textContent="",this.broken.append(l(a,"div","page-chart-broken-head","This chart's table was deleted"),l(a,"p","page-chart-broken-text","Pick another table in this document, or delete the chart. Undo brings the table back."));let r=l(a,"div","page-chart-broken-actions");if(s.length){let h=T(a,"rescue","Source table");for(let d of s)h.append(C(a,d.id,`${d.name} (${d.rows} ${d.rows===1?"row":"rows"})`));this.brokenSelect=h;let f=l(a,"button","page-chart-use","Use this table");f.type="button",f.dataset.action="use",r.append(h,f)}let c=l(a,"button","page-chart-delete","Delete chart");c.type="button",c.dataset.action="delete",r.append(c),this.broken.append(r)}brokenClick(t){let e=t.target.closest?.("button[data-action]");e&&(e.dataset.action==="delete"?this.removeChart():e.dataset.action==="use"&&this.switchSource(this.brokenSelect?.value??""))}openSoon(){let t=this.dom.ownerDocument.defaultView;(t.requestAnimationFrame?.bind(t)??(s=>t.setTimeout(s,0)))(()=>{!this.view.isDestroyed&&this.dom.isConnected&&this.openPanel()})}renderHead(){let t=this.node.attrs,e=A(this.view.state.doc,t.source),s=!g(this.view.state.doc,t.source);this.title.textContent=t.title||it,this.title.classList.toggle("is-empty",!t.title),this.chipName.textContent=s?"No table":e??"",this.chip.disabled=s}setAttrs(t){let e=this.getPos();if(e==null)return;let s=this.view.state.doc.nodeAt(e);s?.type===p.nodes.chart&&this.view.dispatch(this.view.state.tr.setNodeMarkup(e,null,{...s.attrs,...t}))}row(t,...e){let s=l(this.doc,"div","page-chart-row");return t&&s.append(l(this.doc,"span","page-chart-label",t)),s.append(...e),s}panelKey(){let t=this.view.state.doc,e=E(t).map(s=>`${s.id}:${s.name}:${s.rows}`).join("|");return JSON.stringify([this.node.attrs,e,N(g(t,this.node.attrs.source))])}redrawPanel(){let t=this.doc.activeElement,e=t&&this.panel.contains(t)?t.dataset??{}:null,s=this.titleInput,i=s&&s.value!==this.renderedTitle?{value:s.value,start:s.selectionStart,end:s.selectionEnd}:null;if(this.renderPanel(),i&&this.titleInput&&(this.titleInput.value=i.value),!e)return;let a=[...this.panel.querySelectorAll("button, input, select")].find(r=>["field","kind","col","action"].every(c=>r.dataset[c]===e[c]));if(!a)return this.panel.focus();a.focus(),i&&a===this.titleInput&&a.setSelectionRange?.(i.start,i.end)}renderPanel(){let t=this.doc;this.renderedKey=this.panelKey(),this.renderedTitle=this.node.attrs.title??"";let e=this.node.attrs,s=N(this.source),i=s?.cols??[],a=s?.rows??[],r=e.kind==="pie";this.unsaved?.dispose(),this.unsaved=null,this.titleInput=null,this.panel.textContent="";let c=l(t,"div","page-chart-types");for(let[o,P]of st){let b=l(t,"button","page-chart-type",P);b.type="button",b.dataset.kind=o,b.setAttribute("aria-pressed",String(e.kind===o)),c.append(b)}this.panel.append(this.row("Chart type",c));let h=T(t,"source","Source table");for(let o of E(this.view.state.doc))h.append(C(t,o.id,`${o.name} (${o.rows} ${o.rows===1?"row":"rows"})`,o.id===e.source));this.panel.append(this.row("Source table",h));let f=T(t,"labels","Labels column");for(let o of i)f.append(C(t,o.id,o.name||o.id,o.id===e.x));this.panel.append(this.row("Labels column",f));let d=l(t,"div","page-chart-values");i.filter(o=>o.id!==e.x).forEach((o,P)=>{let b=l(t,"label","page-chart-value"),v=l(t,"input");v.type="checkbox",v.dataset.field="series",v.dataset.col=o.id,v.checked=e.series.includes(o.id);let I=l(t,"span","page-chart-swatch");I.style.background=`var(--chart-${P%6+1})`,I.setAttribute("aria-hidden","true"),b.append(v,I,l(t,"span","page-chart-value-name",o.name||o.id)),d.append(b)});let w=this.row(r?"Value column":"Value columns",d);r&&w.append(l(t,"span","page-chart-hint","Pie charts plot the first value column across rows.")),this.panel.append(w);let m=T(t,"highlight","Highlight row");m.append(C(t,"","None",!e.highlight));for(let o of a)m.append(C(t,o.id,O(o.cells?.[e.x])||o.id,o.id===e.highlight));this.panel.append(this.row("Highlight row",m));let u=l(t,"input","page-chart-title-input");u.type="text",u.dataset.field="title",u.setAttribute("aria-label","Chart title"),u.value=e.title??"",u.addEventListener("keydown",o=>{o.isComposing||o.keyCode===229||o.key==="Enter"&&(o.preventDefault(),o.stopPropagation(),this.commitTitle())}),u.addEventListener("change",()=>this.commitTitle()),u.addEventListener("blur",()=>this.commitTitle()),this.titleInput=u,this.panel.append(this.row("Chart title",u));let H=l(t,"div","page-chart-foot"),k=l(t,"button","page-chart-remove");k.type="button",k.dataset.action="remove",k.innerHTML=et,k.append("Remove");let L=l(t,"button","page-chart-done","Done");L.type="button",L.dataset.action="done",H.append(k,L),this.panel.append(H),this.unsaved=K({id:"chart-title",isPending:()=>u.isConnected&&u.value!==(this.node.attrs.title??"")})}openPanel(){this.panel.isConnected||(this.renderPanel(),this.dom.append(this.panel),this.edit.setAttribute("aria-expanded","true"),this.panel.focus())}closePanel(t=!1){this.panel.isConnected&&(this.unsaved?.dispose(),this.unsaved=null,this.titleInput=null,this.panel.remove(),this.edit.setAttribute("aria-expanded","false"),t&&this.edit.focus())}panelClick(t){let e=t.target.closest?.("button");e&&(e.dataset.action==="done"?(this.commitTitle(),this.closePanel(!0)):e.dataset.action==="remove"?this.removeChart():e.dataset.kind&&this.setAttrs({kind:e.dataset.kind}))}panelChange(t){let e=t.target;if(e?.dataset){if(e.dataset.field==="source")this.switchSource(e.value);else if(e.dataset.field==="labels")this.setAttrs({x:e.value,series:this.node.attrs.series.filter(s=>s!==e.value)});else if(e.dataset.field==="highlight")this.setAttrs({highlight:e.value||null});else if(e.dataset.field==="series"){let s=this.node.attrs.series.filter(i=>i!==e.dataset.col);this.setAttrs({series:e.checked?[...s,e.dataset.col]:s})}}}switchSource(t){let e=g(this.view.state.doc,t),s=e?at(e):null;s&&this.setAttrs({source:t,x:s.x,series:s.series})}commitTitle(){let t=this.titleInput;!t||t.value===(this.node.attrs.title??"")||this.setAttrs({title:t.value})}goToSource(){let t=this.view.state.doc,e=nt(t,this.node.attrs.source),s=e===null?null:t.nodeAt(e);if(!s?.childCount||!s.child(0).childCount)return;let i=e+3;this.view.dispatch(this.view.state.tr.setSelection(J.create(t,i)).scrollIntoView()),this.view.focus?.()}removeChart(){let t=this.getPos();if(t==null)return;let e=this.view.state.doc.nodeAt(t);if(e?.type!==p.nodes.chart)return;this.closePanel();let s=this.view.state.tr.delete(t,t+e.nodeSize);s.setSelection(J.near(s.doc.resolve(Math.min(t,s.doc.content.size)),-1)),this.view.dispatch(G(s).scrollIntoView())}update(t){if(t.type!==p.nodes.chart)return!1;let e=!t.sameMarkup(this.node);return this.node=t,this.dom.dataset.id=t.attrs.id??"",e&&(this.source=g(this.view.state.doc,t.attrs.source),this.renderHead(),this.schedule()),!0}stopEvent(t){return!!t.target.closest?.(".page-chart-head, .page-chart-panel")}destroy(){if(this.unsaved?.dispose(),this.unsaved=null,this.doc.removeEventListener("mousedown",this.outside,!0),this.doc.removeEventListener("keydown",this.escape,!0),S.get(this.view)?.delete(this),this.frame!==null){let t=this.dom.ownerDocument.defaultView;t.cancelAnimationFrame?t.cancelAnimationFrame(this.frame):t.clearTimeout(this.frame)}}};function vt(n){for(let t of S.get(n)??[])t.refresh()}export{wt as a,X as b,kt as c,Y as d,vt as e};
@@ -0,0 +1,8 @@
1
+ import{e as X,f as G,h as J,i as Q,j as P,k as U}from"./c-QIKT6SKM.js";import{a as C,f as L}from"./c-TJAXGIRV.js";import"./c-BWFVSBDF.js";import"./c-L5VFATT6.js";import{a as O,b as N,k as z,l as K,m as j,n as V,v as T}from"./c-WMRJKQ2V.js";import{o as w}from"./c-AMU3BPPR.js";import{b as k,d as H}from"./c-QIXT3Q7C.js";import{b as W}from"./c-GY422N3Q.js";import"./c-7SWMYKAI.js";import"./c-UGHH4MB3.js";import"./c-ZWIOJGMT.js";import{d as q}from"./c-XGH4GS2T.js";import"./c-IJUK2GPW.js";import"./c-3O7OBDCM.js";import"./c-BPF2NSPV.js";import"./c-P7KNDG34.js";import"./c-CYWLPPUS.js";import"./c-N7JPUPGC.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 ie=128,D=r=>r.depth?r.node(1).attrs.id:null,Z=r=>!!r.depth&&r.node(1).type.name==="table",ce=(r,t,n,e,o)=>O(K(z(r.flow,J(t,n.holes,e,n.visible),o)));function te({pd:r,w:t,doc:n},e){if(!r||!t||!n||!e)return null;if(e instanceof k.TextSelection){let o=e.$anchor,s=e.$head;if(Z(o)||Z(s)){let c=P(n,o.pos),u=P(n,s.pos);return!c||!u||c.table!==u.table||c.row!==u.row||c.col!==u.col?null:{kind:"cell",block:c.table,row:c.row,col:c.col}}let a=Math.min(e.from,e.to),l=c=>{let u=D(c);return u===null?null:{block:u,rel:ce(r,n,t,c.pos,e.empty||c.pos===a?0:-1)}},i=l(o),d=l(s);return i&&d?{kind:"text",anchor:i,head:d}:null}if(e instanceof w||e instanceof k.NodeSelection){let o=[];if(e instanceof w){let{lo:s,hi:a}=e.span();n.forEach((l,i,d)=>{d>=s&&d<=a&&o.push(l.attrs.id)})}else{let s=n.nodeAt(e.from);s&&o.push(s.attrs.id)}if(!o.length)return null;if(o.length>ie){let s=D(e.$from);return s?{kind:"blocks",ids:[s]}:null}return{kind:"blocks",ids:o}}return null}var ue=(r,t)=>{if(!t||typeof t!="object"||typeof t.block!="string"||!t.block||typeof t.rel!="string"||!t.rel)return null;let n;try{n=j(N(t.rel))}catch{return null}let e;try{e=V(n,r.ydoc)}catch{return null}return!e||e.type!==r.flow?null:e.index},fe=(r,t)=>{let n=0;for(let e=r.flow._start;e;e=e.right){let o=n+e.length;if(t<o)return!e.deleted;n=o}return!1},pe=(r,t)=>{for(let n=r.flow._start;n;n=n.right)if(!n.deleted&&n.content instanceof T&&n.content.embed?.b===t)return!0;return!1},de=(r,t)=>{let n=0,e=null,o=0;for(let s=r.flow._start;s;s=s.right)if(s.content instanceof T&&s.content.embed?.b!==void 0&&(e=s.content.embed.b,o=n+s.length),n+=s.length,n>t&&e!==null)return{id:e,offset:t-o};return e===null?null:{id:e,offset:t-o}},me=(r,t,n)=>{let e=null;return r.forEach((o,s)=>{e===null&&o.attrs.id===t&&o.isTextblock&&(e=s+1+Math.min(Math.max(n,0),o.content.size))}),e},ee=({pd:r,w:t,doc:n},e)=>{let o=ue(r,e);if(o===null)return null;let s=Q(n,t.holes,t.tokens,o,t.visible);if(D(n.resolve(s))===e.block)return s;let a=de(r,o);if(a&&a.id===e.block){let l=me(n,e.block,a.offset);if(l!==null)return l}return pe(r,e.block)||!fe(r,o)||t.holes.some(l=>o>=G(t.holes,l.at)&&o<X(t.holes,l.at))?null:n.resolve(s).parent.inlineContent?s:null};function ne({pd:r,w:t,doc:n},e){if(!r||!t||!n||!e||typeof e!="object")return null;if(e.kind==="text"){let o=ee({pd:r,w:t,doc:n},e.anchor),s=ee({pd:r,w:t,doc:n},e.head);return o===null||s===null?null:{kind:"text",from:Math.min(o,s),to:Math.max(o,s)}}if(e.kind==="cell"){let o=U(n,{table:e.block,row:e.row,col:e.col,offset:0});return o?{kind:"cell",from:o.from,to:o.to,block:o.block,row:o.row,col:o.col}:null}if(e.kind==="blocks"){let o=[],s=[];for(let a of Array.isArray(e.ids)?e.ids:[])n.forEach((l,i)=>{l.attrs.id!==a||o.includes(a)||(o.push(a),s.push({from:i,to:i+l.nodeSize}))});return s.length?{kind:"blocks",ids:o,ranges:s}:null}return null}var{Plugin:ge,PluginKey:he}=k,{Decoration:b,DecorationSet:x}=H,y=new he("page-awareness"),oe="page-awareness-style",be=`
2
+ .page-remote-selection { background-color: color-mix(in srgb, var(--page-remote-color, currentColor) 22%, transparent); }
3
+ .page-remote-caret { position: relative; display: inline-block; width: 0; height: 1.1em; vertical-align: text-bottom; }
4
+ .page-remote-caret::before { content: ""; position: absolute; inset-inline-start: -1px; top: 0; bottom: 0; width: 2px; background: var(--page-remote-color, currentColor); }
5
+ .page-remote-name { position: absolute; inset-inline-start: -1px; bottom: 100%; padding: 1px 4px; border-radius: 4px; background: var(--page-remote-color, currentColor); color: #fff; font-size: 10px; line-height: 1.4; white-space: nowrap; pointer-events: none; }
6
+ .page-remote-cell { outline: 2px solid var(--page-remote-color, currentColor); outline-offset: -2px; }
7
+ .page-remote-block { box-shadow: inset 2px 0 0 var(--page-remote-color, currentColor); }
8
+ `,re=["#2F5E9E","#8A3B6E","#3E6A28","#8A5A1E","#5E4596","#1F5A8A"],ye=r=>{let t=typeof r=="string"?r:"",n=0;for(let e=0;e<t.length;e++)n=n*31+t.charCodeAt(e)>>>0;return re[n%re.length]},_=(r,t,n)=>{let e=r.createElement("span");e.className="page-remote-caret",e.setAttribute("aria-hidden","true"),e.style.setProperty("--page-remote-color",n);let o=r.createElement("span");return o.className="page-remote-name",o.textContent=t,e.appendChild(o),e},ke=r=>typeof r.name=="string"&&r.name.trim()?r.name.trim():"Someone",F=!1;typeof document<"u"&&(document.addEventListener("clay:presence-quiesce",()=>{F=!0}),document.addEventListener("clay:presence-resume",()=>{F=!1}));function se({binding:r,doc:t,snapshot:n,epoch:e}){let o=r.awareness.generation(),s={...r.awareness.map(),doc:t},a=[];for(let l of n.people??[]){if(l.you)continue;let i=ye(l.id),d=ke(l);for(let c of l.sessions??[]){if(c.you)continue;let u=c.editing;if(!u||u.kind!=="page"||u.v!==C||u.epoch!==e||u.generation!==o)continue;let f=ne(s,u.selection);if(f){if(f.kind==="text")f.to>f.from&&a.push(b.inline(f.from,f.to,{class:"page-remote-selection",style:`--page-remote-color:${i}`})),a.push(b.widget(f.to,h=>_(h.dom.ownerDocument,d,i),{side:1,key:`caret:${l.id}:${c.id}`}));else if(f.kind==="cell")a.push(b.node(f.from,f.to,{class:"page-remote-cell",style:`--page-remote-color:${i}`})),a.push(b.widget(f.from+1,h=>_(h.dom.ownerDocument,d,i),{side:-1,key:`cell:${l.id}:${c.id}`}));else if(f.kind==="blocks"){let[h]=f.ranges;for(let m of f.ranges)a.push(b.node(m.from,m.to,{class:"page-remote-block",style:`--page-remote-color:${i}`}));a.push(b.widget(h.from+1,m=>_(m.dom.ownerDocument,d,i),{side:-1,key:`blocks:${l.id}:${c.id}`}))}}}}return a.length?x.create(t,a):x.empty}function Ee({binding:r,view:t,store:n=L,epoch:e,composing:o=null,frame:s=l=>requestAnimationFrame(l),cancel:a=l=>cancelAnimationFrame(l)}){if(!r?.awareness||!t||typeof e!="string"||!e)return null;W(oe,be,oe,["editor-ui"]);let l=t.dom.ownerDocument,i=!1,d=F,c=typeof t.hasFocus=="function"?t.hasFocus()===!0:t.dom.contains(l.activeElement),u=null,f=()=>o?o()===!0:t.composing===!0,h=()=>n.getSnapshot().pageAwareness!==!1,m=(p=t.state)=>{if(i||d)return;if(!h()||!c||f()){n.setTarget(null);return}let g=te({...r.awareness.map(),doc:p.doc},p.selection);if(!g){n.setTarget(null);return}n.setTarget({kind:"page",v:C,epoch:e,generation:r.awareness.generation(),selection:g})},le=p=>f()?y.getState(t.state):se({binding:r,doc:p.doc,snapshot:n.getSnapshot(),epoch:e}),A=new ge({key:y,state:{init:(p,g)=>se({binding:r,doc:g.doc,snapshot:n.getSnapshot(),epoch:e}),apply:(p,g,xe,R)=>((p.docChanged||p.selectionSet)&&m(R),p.docChanged||p.getMeta(y)?le(R):g)},props:{decorations(p){return y.getState(p)??x.empty}}}),M=()=>{i||t.isDestroyed||t.dispatch(t.state.tr.setMeta(y,!0))},E=()=>{i||u!==null||t.isDestroyed||(u=s(()=>{u=null,M()}))},ae=n.subscribe(p=>{p.pageAwareness===!1&&n.setTarget(null),E()}),S=()=>{i||(d=!0,n.setTarget(null))},v=()=>{i||(d=!1,m())},Y=()=>{c=!0,m(),E()},$=()=>{c=!1,n.setTarget(null)},B=()=>{n.setTarget(null)},I=()=>{m(),E()};return t.dom.addEventListener("focus",Y),t.dom.addEventListener("blur",$),t.dom.addEventListener("compositionend",I),l.addEventListener("pagehide",B),l.addEventListener("clay:presence-quiesce",S),l.addEventListener("clay:presence-resume",v),t.updateState(t.state.reconfigure({plugins:[...t.state.plugins,A]})),m(),E(),{epoch:e,refresh:M,plugin:A,quiesce:S,resume:v,get decorations(){return y.getState(t.state)??x.empty},get target(){return n.target??null},dispose(){if(!i&&(i=!0,u!==null&&(a(u),u=null),ae(),t.dom.removeEventListener("focus",Y),t.dom.removeEventListener("blur",$),t.dom.removeEventListener("compositionend",I),l.removeEventListener("pagehide",B),l.removeEventListener("clay:presence-quiesce",S),l.removeEventListener("clay:presence-resume",v),n.setTarget(null),n.releaseTarget(),!t.isDestroyed)){let p=t.state.plugins.filter(g=>g!==A);t.updateState(t.state.reconfigure({plugins:p}))}}}}async function $e({binding:r,view:t,store:n=L,meta:e=null}={}){if(!r?.awareness||!t)return null;let o=e??await q(),s=Array.isArray(o?.extensions)?o.extensions:[];if(n.setCapabilities({supported:s.includes("presence"),recordAwareness:s.includes("record-awareness-v1"),pageAwareness:s.includes("page-awareness-v1")}),!s.includes("page-awareness-v1"))return null;let a=o.document?.awareness?.scope;return typeof a!="string"||!a?null:Ee({binding:r,view:t,store:n,epoch:a})}export{y as awarenessKey,ye as colorOf,Ee as createPageAwareness,se as decorationsFor,$e as installPageAwareness};
@@ -0,0 +1 @@
1
+ import"./c-VHNSBD2M.js";var e={Smileys:[["\u{1F600}","grinning","face smile happy"],["\u{1F603}","grinning big eyes","face smile happy"],["\u{1F604}","grinning smiling eyes","face laugh happy"],["\u{1F601}","beaming","face grin happy"],["\u{1F606}","laughing","face happy haha"],["\u{1F605}","sweat smile","face relief nervous"],["\u{1F602}","joy","face tears laugh lol"],["\u{1F642}","slight smile","face ok"],["\u{1F643}","upside down","face silly"],["\u{1F609}","wink","face flirt"],["\u{1F60A}","blush","face smile warm"],["\u{1F607}","halo","face angel innocent"],["\u{1F970}","smiling hearts","face love"],["\u{1F60D}","heart eyes","face love crush"],["\u{1F929}","star struck","face wow excited"],["\u{1F60E}","cool","face sunglasses"],["\u{1F914}","thinking","face hmm question"],["\u{1F610}","neutral","face flat"],["\u{1F634}","sleeping","face tired zzz"],["\u{1F622}","crying","face sad tear"],["\u{1F62D}","sobbing","face sad tears"],["\u{1F621}","angry","face mad red"],["\u{1F631}","scream","face fear shock"],["\u{1F92F}","exploding head","face mind blown"],["\u{1F973}","party face","celebration birthday"],["\u{1F637}","mask","face sick medical"],["\u{1F912}","thermometer","face sick ill"]],"Gestures and people":[["\u{1F44B}","wave","hand hello hi bye"],["\u{1F44B}\u{1F3FD}","wave medium skin tone","hand hello hi"],["\u{1F44D}","thumbs up","yes like approve"],["\u{1F44D}\u{1F3FF}","thumbs up dark skin tone","yes like approve"],["\u{1F44E}","thumbs down","no dislike"],["\u{1F44F}","clapping","hands applause bravo"],["\u{1F64C}","raised hands","hooray praise"],["\u{1F64F}","folded hands","please thanks pray"],["\u{1F4AA}","flexed arm","strong muscle"],["\u{1F91D}","handshake","deal agreement"],["\u{1F468}\u200D\u{1F469}\u200D\u{1F467}\u200D\u{1F466}","family","people children parents"],["\u{1F9D1}\u200D\u{1F4BB}","technologist","person laptop work code"],["\u{1F3C3}","runner","person sport hurry"],["\u{1F9D8}","lotus","person meditation yoga"]],"Animals and nature":[["\u{1F436}","dog","animal pet puppy"],["\u{1F431}","cat","animal pet kitten"],["\u{1F42D}","mouse","animal rodent"],["\u{1F430}","rabbit","animal bunny"],["\u{1F98A}","fox","animal"],["\u{1F43B}","bear","animal"],["\u{1F43C}","panda","animal"],["\u{1F428}","koala","animal"],["\u{1F42F}","tiger","animal"],["\u{1F981}","lion","animal"],["\u{1F42E}","cow","animal"],["\u{1F437}","pig","animal"],["\u{1F438}","frog","animal"],["\u{1F435}","monkey","animal"],["\u{1F414}","chicken","animal bird"],["\u{1F427}","penguin","animal bird"],["\u{1F426}","bird","animal"],["\u{1F984}","unicorn","animal magic"],["\u{1F41D}","bee","animal insect honey"],["\u{1F98B}","butterfly","animal insect"],["\u{1F338}","cherry blossom","flower plant spring"],["\u{1F33B}","sunflower","flower plant summer"],["\u{1F308}","rainbow","weather sky"],["\u{1F332}","evergreen tree","plant forest"],["\u{1F335}","cactus","plant desert"],["\u{1F341}","maple leaf","plant autumn"]],"Food and drink":[["\u2615","coffee","drink cup hot"],["\u{1F375}","tea","drink cup green"],["\u{1F37A}","beer","drink mug"],["\u{1F377}","wine","drink glass"],["\u{1F34E}","apple","fruit food red"],["\u{1F34C}","banana","fruit food"],["\u{1F347}","grapes","fruit food"],["\u{1F353}","strawberry","fruit food"],["\u{1F351}","peach","fruit food"],["\u{1F355}","pizza","food slice"],["\u{1F354}","burger","food"],["\u{1F35F}","fries","food"],["\u{1F32E}","taco","food"],["\u{1F363}","sushi","food fish"],["\u{1F35C}","noodles","food ramen"],["\u{1F370}","cake","food dessert"],["\u{1F36A}","cookie","food sweet"],["\u{1F36B}","chocolate","food sweet"],["\u{1F951}","avocado","food fruit"],["\u{1F955}","carrot","food vegetable"],["\u{1F35E}","bread","food loaf"]],"Travel and places":[["\u2708\uFE0F","airplane","travel flight"],["\u{1F697}","car","travel drive"],["\u{1F6B2}","bicycle","travel bike"],["\u{1F682}","train","travel locomotive"],["\u{1F680}","rocket","travel launch space"],["\u26F5","sailboat","travel boat"],["\u{1F3E0}","house","place home"],["\u{1F3E2}","office","place building work"],["\u{1F5FD}","statue of liberty","place new york"],["\u{1F5FC}","tower","place tokyo"],["\u{1F3D4}","mountain","place snow"],["\u{1F3D6}","beach","place holiday sea"],["\u{1F30D}","globe","world earth"],["\u{1F5FA}","map","place world"],["\u{1F6A6}","traffic light","place street"]],Objects:[["\u{1F4A1}","bulb","idea light"],["\u{1F525}","fire","hot flame"],["\u2B50","star","favourite rating"],["\u{1F4AF}","hundred","score perfect"],["\u2705","check","done yes"],["\u274C","cross","no wrong"],["\u26A0\uFE0F","warning","caution alert"],["\u{1F4CC}","pushpin","pin note"],["\u{1F4CE}","paperclip","attach"],["\u{1F4C5}","calendar","date schedule"],["\u{1F4C8}","chart up","graph growth"],["\u{1F4C9}","chart down","graph loss"],["\u{1F4B0}","money bag","cash"],["\u{1F511}","key","access"],["\u{1F512}","lock","secure private"],["\u{1F514}","bell","notify alert"],["\u{1F389}","party popper","celebrate"],["\u{1F381}","gift","present"],["\u{1F3C6}","trophy","win award"],["\u{1F3AF}","target","goal aim"],["\u23F0","alarm clock","time"],["\u231B","hourglass","time wait"]],Symbols:[["\u2764\uFE0F","red heart","love"],["\u{1F494}","broken heart","love sad"],["\u2728","sparkles","magic new"],["1\uFE0F\u20E3","keycap one","number"],["2\uFE0F\u20E3","keycap two","number"],["#\uFE0F\u20E3","keycap hash","number channel"],["\u{1F1EB}\u{1F1F7}","flag france","country"],["\u{1F1FA}\u{1F1F8}","flag united states","country"],["\u{1F1EF}\u{1F1F5}","flag japan","country"],["\u267B\uFE0F","recycle","reuse"],["\u27A1\uFE0F","arrow right","direction next"],["\u2B05\uFE0F","arrow left","direction back"],["\u{1F501}","repeat","loop again"],["\u{1F500}","shuffle","random"],["\u{1F197}","ok button","yes"]]};export{e as EMOJI};
@@ -0,0 +1 @@
1
+ import{a as Gt}from"./c-4ASQPRQL.js";import{a as Dt}from"./c-GQ6F6IDK.js";import{c as F}from"./c-I2SCCUEW.js";import{b as He}from"./c-5VYOWDTI.js";import{a as Wt,d as ne,e as Be,f as b,h as N}from"./c-FWKHM4E7.js";import{a as Ge,b as Qt,c as Vt,d as $t}from"./c-X5LNHET5.js";import{a as Kt}from"./c-UGHH4MB3.js";import{a as Pt}from"./c-ZWIOJGMT.js";import{a as Ot,e as Rt,f as P,g as bt,h as Nt,i as Ft,l as Ut,t as qt,v as Bt,w as Ht}from"./c-B7J4K2AE.js";import{b as It,h as qe}from"./c-EK63G3CG.js";import{a as Fe,c as kt,g as Lt,h as Ue}from"./c-NQJRVJ56.js";import{a as Oe,f as Ie,h as Q}from"./c-IJUK2GPW.js";import{b as K,e as Ct,f as w}from"./c-3O7OBDCM.js";import{i as At,k as Tt}from"./c-N7JPUPGC.js";import{D as Ne,h as Re,q as be,t as _t,x as V,y as me}from"./c-7MG5RU63.js";import{d as xt}from"./c-VG5XIN4T.js";import{a as pe}from"./c-2YYDMLNZ.js";import{d as St,e as yt,g as Et,h as wt}from"./c-HA6INT6J.js";import{k as Mt}from"./c-DCFSEJZG.js";var hn="clay:debug:autosave";function ve(){try{return localStorage.getItem(hn)==="true"}catch{return!1}}function ge(){return import("./c-CFHW5AMY.js").catch(e=>(console.warn("[autosave-debug] Failed to load the debug logger:",e),null))}function he(e,t){ve()&&ge().then(n=>n?.logSaveCheck(e,t))}function re(e,t=""){ve()&&ge().then(n=>n?.logBaseline(e,t))}function Yt(e,t){ve()&&ge().then(n=>n?.logUnloadDiffSync(e,t))}function zt(){ve()&&ge().then(e=>e?.preloadIfEnabled())}var U=Number.NEGATIVE_INFINITY;function Sn({firstDirtyAt:e=U,lastActivityAt:t=U,finishedAt:n=U,costMs:o=0}={}){let r=e??U,i=t??U,a=n??U,f=Math.min(3e4,Math.max(1200,4*o)),u=Math.max(i,a)+1500,m=Math.max(r+1e4,a+f);return Math.max(a+1200,Math.min(u,m))}function Xt({now:e=()=>Date.now(),setTimer:t=(r,i)=>setTimeout(r,i),clearTimer:n=r=>clearTimeout(r),run:o=()=>{}}={}){let r=null,i=null,a=U,f=0,u=null,m=null,c=!1,p=!1;function S(){return Sn({firstDirtyAt:r,lastActivityAt:i,finishedAt:a,costMs:f})}function y(){if(!c||p)return;let E=S();if(u!==null){if(m===E)return;n(u)}m=E,u=t(d,Math.max(0,E-e()))}function d(){if(u=null,m=null,!(!c||p)){if(e()<S()){y();return}g()}}function g(){c=!1,p=!0,r=null,i=null;let E;try{E=o()}catch{l();return}Promise.resolve(E).then(l,l)}function l(){p=!1,a=e(),c&&y()}function s({at:E=e()}={}){r===null&&(r=E),i=E,c=!0,y()}function v(){c=!0,y()}function M(E){E>0&&(f=Math.max(E,f*.8))}return{noteActivity:s,request:v,noteCost:M,dueAt:S,costEstimate:()=>f,pending:()=>c||p,running:()=>p}}be(e=>{for(let t of wt)e.removeAttribute(t)});be(e=>{for(let t of[...St,...yt,...Et])e.removeAttribute(t)});var x=null;function A(e,t="",n="",o=null){x&&(clearTimeout(x),x=null),document.documentElement.setAttribute("savestatus",e);let r=new CustomEvent(`clay:save-${e}`,{detail:{msg:t,msgType:n,timestamp:Date.now(),...o||{}}});document.dispatchEvent(r)}function nt(){x&&(clearTimeout(x),x=null),document.documentElement.setAttribute("savestatus","offline")}function yn(){x=setTimeout(()=>{A("saving")},500)}window.addEventListener("offline",()=>{nt()});window.addEventListener("online",()=>{document.documentElement.getAttribute("savestatus")==="offline"&&I().then(e=>{e.msgType==="skipped"&&document.documentElement.getAttribute("savestatus")==="offline"&&document.documentElement.setAttribute("savestatus","saved")})});var q=!1,L="",C="",ie=0,Ee=new Set,D=!1,k=!1,we=!1,B=0,$e=!1;function En(){B++}function rn(){B!==0&&(B--,!(B>0)&&(fe&&(fe=!1,J=setTimeout(dt,0)),$e&&($e=!1,ke())))}function wn(){return B>0}var $=0,te=!1,ae=!1,Ae=!1;function de(e=null){return $===0||an(e)}function rt(){return te}function An(){if(te)return!0;try{let e=V({flushUndo:!1});return gt(e)?!1:e!==C}catch{return!0}}function Tn(){let e="idle",t=0;return{get phase(){return e},get open(){return e==="open"},changedWhileClosed(){return e==="quiesced"&&Be()!==t},start(){e==="idle"&&(e="open")},quiesce(){e==="open"&&(e="quiesced",t=Be(),$++)},resume(){e==="quiesced"&&(e="open",$--,!($>0)&&(Wn(),tn()))},stop(){if(e==="stopped")return;let n=e==="quiesced";(n||e==="open")&&An()&&(Ae=!0),e="stopped",n&&($--,$===0&&tn())}}}var jt=!1,oe=null,Ye=null,ze=!1;function Ir(e=R){if(!oe||oe.generation!==e)return null;let{bytes:t,etag:n}=oe;return{bytes:t,etag:n}}function Rr({represented:e}={}){let t=b(),{forComparison:n,forDirty:o}=me(),r=typeof e?.etag=="string"&&e.etag?e.etag:null;return!(ze&&r!==null&&r!==Ye)&&Ae&&(n!==L||o!==C)?{ok:!1,code:"pending-input"}:(Ae=!1,ue(n,o),W=n,Z=!1,pt=!0,Ye=r,ze=!0,N(t),document.documentElement.setAttribute("savestatus","saved"),document.dispatchEvent(new CustomEvent("clay:baseline-settled")),{ok:!0})}var ot=Promise.resolve(!1),Te=!1,Cn=()=>(Te=!0,Lt().catch(()=>!1).then(e=>(Te=!1,e)));function br(){return{id:"clay:save",order:10,prepare(e={}){let t=Tn();return e.initial===!0&&t.start(),{enable(){ot=Cn();let n=e.represented?.etag;typeof n=="string"&&n&&kt(n),e.initial!==!0&&(Mn(),t.start())},quiesce:()=>t.quiesce(),resume:()=>t.resume(),dispose:()=>t.stop()}}}}function Mn(){jt||(jt=!0,Wt(),Oe(),vn(),gn())}var O=0,Xe=!1,Ce=!1,st="Waiting for the AI edit to be kept or reverted",Y=new Map;function Nr(e=st){O++,Y.set(e,(Y.get(e)||0)+1)}function Fr({replay:e=!0,reason:t=st}={}){let n=Y.get(t)||0;if(n===0||(n===1?Y.delete(t):Y.set(t,n-1),O--,O>0))return;let o=Xe,r=Ce;Xe=!1,Ce=!1,e&&(o?I():r&&ke())}function Ur(){return O>0}function it(){return O===0?null:Y.keys().next().value||st}function on(e,t){if(O===0)return!1;Xe=!0,Q();let n=h(it());return e(n),t(n),n}var H=!1,se=null;function xn(e){se=e??null,!H&&(H=!0,En())}function Pn(){H&&(H=!1,se=null,rn())}function je(){return H}function qr(e){if(!H||se&&e!==se)return;H=!1,se=null,!He()&&ne()||(document.documentElement.getAttribute("savestatus")==="conflict"&&document.documentElement.setAttribute("savestatus","saved"),document.dispatchEvent(new CustomEvent("clay:save-conflict-resolved",{detail:{timestamp:Date.now()}}))),document.dispatchEvent(new CustomEvent("clay:save-conflict-released",{detail:{etag:e??null}})),rn()}function h(e){return{ok:!1,msg:e,msgType:"skipped",code:null,etag:null}}function at(e){return(ne()||F())&&(te=!0),h(e)}function sn(){return{ok:!1,msg:"You are not allowed to save this document.",msgType:"forbidden",code:"forbidden",status:403,sent:!1,etag:null}}function ut(){return Ct()===!1}var lt=new Set,R=0;function Br(){return R}function Hr(e){typeof e=="number"&&(R=e)}function _n(e=R){let t=Object.freeze({generation:e});return lt.add(t),t}function Dn(e){lt.delete(e)}function an(e){return!!e&&lt.has(e)&&e.generation===R}function z(e,t){e!=null&&$t({captureId:e,ok:t.ok===!0,etag:t.etag??null})}function kn(e,t,n,o,r,i=null,a=null,f=!1){if(z(a,e),e.ok)te=!1,ue(t,n),Me=i,oe={bytes:i,etag:Fe(),generation:R},Ye=oe.etag,ze=!0,Ae=!1,q=!1,N(r),A("saved",e.msg||"Saved",e.msgType,{etag:e.etag??null,captureId:a}),re(o,`${L.length} chars`),Pn();else if(e.msgType==="conflict"){if(f){x&&(clearTimeout(x),x=null),document.documentElement.setAttribute("savestatus","saved");return}xn(e.conflictEtag),A("conflict",e.msg,e.msgType,{hadTimeout:e.hadTimeout===!0,changedBy:e.changedBy??null,afterTimeout:e.afterTimeout===!0,etag:e.conflictEtag??null,code:e.code??null,reason:e.reason??null,retryAfter:e.retryAfter??null,captureId:a})}else if(e.msgType!=="skipped"){let u={status:e.status??null,hadTimeout:e.hadTimeout===!0,code:e.code??null,reason:e.reason??null,retryAfter:e.retryAfter??null,captureId:a};navigator.onLine?A("error",e.msg,"",u):A("offline",e.msg,"",u)}}function un(){if(!(!D&&!k)&&!Ut()){if(D){D=!1,k=!1,I();return}k=!1,et.request()}}function Gr(){return q}function Wr(e){q=e}function Kr(){return L}function ft(){return C}var Me=null;function Qr(){return Me}function ue(e,t){L=e,C=t,ie++}function Vr(e){ue(e,e)}var G=()=>typeof performance<"u"&&performance.now?performance.now():Date.now();var Ln=4,Jt="Save cancelled: the page changed while it prepared",X=null,le=null,We=null,ln=!1;function fn(){return We||(We=import("./c-KGHVFRR3.js").then(e=>(le=e,e),e=>(ln=!0,console.info("clayjs: sliced save off ("+(e&&e.message?e.message:e)+"); saves prepare in one task"),null))),We}function On(){try{return performance.getEntriesByType("navigation")[0]?.decodedBodySize||0}catch{return 0}}var In=()=>typeof Me=="string"?Me.length:On();function xe(){return ln||document.hidden||Ft()?!1:In()>=307200}function Zt(e,t,n){return n?"morph":R!==t.generation||!w?"mode":de(e.permit)?ut()?"refused":ie!==t.baselines?"newer save":Math.max(qe(),e.pageFormatFloor)>t.floor?"floor":null:"session"}function Rn(e=150,t=2e3){return new Promise(n=>{let o=G(),r=null,i=()=>{document.removeEventListener("clay:sync-applied",a),n()},a=()=>{clearTimeout(r),r=setTimeout(i,Math.max(0,Math.min(e,t-(G()-o))))};document.addEventListener("clay:sync-applied",a),a()})}async function ct({explicit:e,forced:t=!1,forSave:n,forComparison:o,forDirty:r,captureId:i,gateToken:a,costMs:f,pageFormatFloor:u=0,quietConflict:m=!1,laneHeld:c=!1,lane:p=null,capture:S,noteRecovery:y,release:d,callback:g}){if(y(),e&&!t){if(q=r!==C,he("savePage dirty check",!q),!q){Q(),N(a),d();let s=h("No changes to save");return z(i,s),typeof g=="function"&&g(s),{result:s,dispatched:!1}}}else if(!e){let s=!Z||o!==W,v=o!==L;if(he("throttled vs baseline",!s),he("throttled vs lastSave",!v),!(s&&v)){let M=!1;try{M=!v&&(!document.querySelector(Mt)||ne()&&r===C)}catch(ht){console.error("savePageThrottled: dirty domain check failed",ht)}M&&N(a),et.noteCost(f),d();let E=h("No changes to save");return z(i,E),typeof g=="function"&&g(E),{result:E,dispatched:!1}}if(q=!0,!c&&P()){D=!0,d();let M=h("Save already in progress");return z(i,M),typeof g=="function"&&g(M),{result:M,dispatched:!1}}}yn();let l={forComparison:o,forDirty:r};return Ee.add(l),we=!0,new Promise(s=>{qt(n,i,v=>{we=!1,Ee.delete(l);let M=G();kn(v,l.forComparison,l.forDirty,t?"updated after force save":"updated after save",a,n,i,m),e||et.noteCost(f+(G()-M)),typeof g=="function"&&g(v),s({result:v,dispatched:!0}),c||un()},{capture:S,pageFormatFloor:u,lane:p})})}async function bn(e,t){let n={over:!1},o=()=>{n.over=!0};document.addEventListener("clay:sync-applied",o);try{for(let i=0;i<2;i++){let a=b(),f={generation:R,baselines:ie,floor:Math.max(qe(),e.pageFormatFloor)},u=le.beginSaveCapture({requestRefresh:!0,forRequest:!0,pageFormatMarker:f.floor?{name:It,content:String(f.floor)}:null});Qt(u.captureId);let m=null,c={get aborted(){let d=Zt(e,f,n.over);return d&&(m=d),!!d}},p;try{p=await le.runPreparedSteps(u.steps(),{budgetMs:Ln,signal:c})}catch(d){console.error(`${e.explicit?"savePage":"savePageThrottled"}: preparing the save failed`,d),u.drop();let g={msg:d&&d.message?d.message:"Save failed",msgType:"error",code:d?.code??null,etag:null};return A("error",g.msg,"",{sent:!1,code:g.code}),z(u.captureId,g),typeof e.callback=="function"&&e.callback(g),{result:g,dispatched:!1}}let S=p.aborted?m:Zt(e,f,n.over);if(!S){let d=p.result;return await ct({explicit:e.explicit,forced:e.forced,forSave:d.forSave,forComparison:d.forComparison,forDirty:d.forDirty,captureId:d.captureId,gateToken:a,costMs:p.activeMs,pageFormatFloor:e.pageFormatFloor,quietConflict:e.quietConflict,laneHeld:!0,lane:t,capture:d,noteRecovery:()=>Vt(d.captureId,d.forSave),release:()=>u.drop(),callback:e.callback})}u.drop();let y=h(Jt);if(S==="session"&&(ae=!0),z(u.captureId,y),!(S==="floor"&&i===0)){if(S==="morph"&&e.explicit&&i===0){await Rn(),n.over=!1;continue}return typeof e.callback=="function"&&e.callback(y),{result:y,dispatched:!1}}}let r=h(Jt);return typeof e.callback=="function"&&e.callback(r),{result:r,dispatched:!1}}finally{document.removeEventListener("clay:sync-applied",o),Nt(t)}}function cn(e){let t=bt();if(!t)return!1;let n=bn(e,t).catch(o=>{console.error("save: preparing the save failed",o);let r={msg:o&&o.message?o.message:"Save failed",msgType:"error",code:o?.code??null,etag:null};return A("error",r.msg,"",{sent:!1,code:r.code}),typeof e.callback=="function"&&e.callback(r),{result:r,dispatched:!1}});return X=n,n.then(o=>{X===n&&(X=null),e.resolve(o.result),e.settleSoonQueued(o.result),(o.dispatched||D||k||_e.length)&&un()}),!0}function De(e,t=()=>{}){return Te?ot.then(()=>De(e,t)):ee?ce.then(()=>Pe(e,t)):Pe(e,t)}function Pe({kind:e,permit:t=null},n=()=>{}){let o=e==="explicit";return new Promise(r=>{if(!w&&!window.clay?.testMode){o&&Q();let s=h("Not in edit mode");return T().forEach(v=>v(s)),n(s),r(s)}if(!de(t)){ae=!0;let s=at("Save session is quiesced");return o&&T().forEach(v=>v(s)),n(s),r(s)}if(ut()){o&&Q();let s=sn();return A("error",s.msg,"",{code:s.code,status:s.status,sent:!1}),T().forEach(v=>v(s)),n(s),r(s)}if(o){let s=on(n,r);if(s){T().forEach(v=>v(s));return}if(P()){D=!0;let v=h("Save already in progress");return n(v),r(v)}}else{if(O>0){Ce=!0;let s=h(it());return n(s),r(s)}if(P()&&!Z&&we){k=!0;let s=h("Save already in progress");return n(s),r(s)}if(X){k=!0;let s=h("Save already in progress");return n(s),r(s)}if(!Z&&!ne()){let s=h("No changes to save");return n(s),r(s)}}let i=window.clay?.source?.ensureForSave?.();if(i)return i.then(()=>r(Pe({kind:e,permit:t},n)));if(xe()&&!le){fn().then(()=>r(Pe({kind:e,permit:t},n)));return}let a=o?T():[],f=s=>a.forEach(v=>v(s));if(!navigator.onLine&&nt(),xe()&&cn({explicit:o,forced:!1,permit:t,pageFormatFloor:0,quietConflict:!1,settleSoonQueued:f,callback:n,resolve:r}))return;let m=G(),c,p,S,y,d,g=b();try{c=Ne({requestRefresh:!0,forRequest:!0}),{forSave:p,forComparison:S,forDirty:y,captureId:d}=c}catch(s){console.error(`${o?"savePage":"savePageThrottled"}: captureForSaveAndComparison failed`,s),o?(Q(),A("error",s.message,"",{sent:!1,code:s.code??null})):A("error",s.message);let v={msg:s.message,msgType:"error",code:o?s.code??null:null,etag:null};typeof n=="function"&&n(v),r(v),f(v);return}let l=G()-m;ct({explicit:o,forSave:p,forComparison:S,forDirty:y,captureId:d,gateToken:g,costMs:l,capture:c,noteRecovery:()=>Ge({captureId:d,html:p}),release:()=>Re(c),callback:n}).then(s=>{r(s.result),f(s.result)})})}function I(e=()=>{}){return De({kind:"explicit"},e)}function Nn(e,t=()=>{}){return De({kind:"explicit",permit:e},t)}function j(e=()=>{},{quietConflict:t=!1,pageFormatFloor:n=0,permit:o=null}={}){return Te?ot.then(()=>j(e,{quietConflict:t,pageFormatFloor:n,permit:o})):new Promise(r=>{if(!w&&!window.clay?.testMode){let l=h("Not in edit mode");return T().forEach(s=>s(l)),e(l),r(l)}if(!de(o)||o&&!an(o)){let l=at("Save session is quiesced");return T().forEach(s=>s(l)),e(l),r(l)}if(ut()){let l=sn();return A("error",l.msg,"",{code:l.code,status:l.status,sent:!1}),T().forEach(s=>s(l)),e(l),r(l)}let i=on(e,r);if(i){T().forEach(l=>l(i));return}if(P()){D=!0;let l=h("Save already in progress");return T().forEach(s=>s(l)),e(l),r(l)}let a=window.clay?.source?.ensureForSave?.();if(a)return a.then(()=>r(j(e,{quietConflict:t,pageFormatFloor:n,permit:o})));if(!navigator.onLine&&nt(),xe()&&!le){fn().then(()=>r(j(e,{quietConflict:t,pageFormatFloor:n,permit:o})));return}let u=T(),m=l=>u.forEach(s=>s(l));if(xe()&&cn({explicit:!0,forced:!0,permit:o,pageFormatFloor:n,quietConflict:t,settleSoonQueued:m,callback:e,resolve:r}))return;let c,p,S,y,d,g=b();try{c=Ne({requestRefresh:!0,forRequest:!0}),{forSave:p,forComparison:S,forDirty:y,captureId:d}=c}catch(l){console.error("savePageForce: captureForSaveAndComparison failed",l),A("error",l.message,"",{sent:!1,code:l.code??null});let s={msg:l.message,msgType:"error",code:l.code??null,etag:null};typeof e=="function"&&e(s),r(s),m(s);return}ct({explicit:!0,forced:!0,forSave:p,forComparison:S,forDirty:y,captureId:d,gateToken:g,costMs:0,pageFormatFloor:n,quietConflict:t,capture:c,noteRecovery:()=>Ge({captureId:d,html:p}),release:()=>Re(c),callback:e}).then(l=>{r(l.result),m(l.result)})})}Ht(e=>j(()=>{},{permit:e}));function Fn(e){let t=["clay:save-saved","clay:save-error","clay:save-offline","clay:save-conflict"];return new Promise((n,o)=>{let r=null,i=()=>{clearTimeout(r);for(let u of t)document.removeEventListener(u,a)},a=()=>{i(),n()},f=e-Date.now();if(f<=0){o(Object.assign(new Error("Save timed out."),{state:"failed"}));return}r=setTimeout(()=>{i(),o(Object.assign(new Error("Save timed out."),{state:"failed"}))},f);for(let u of t)document.addEventListener(u,a)})}function _(e,t){return Object.assign(new Error(e),{state:t})}function Un(e,t){return new Promise((n,o)=>{let r=t-Date.now();if(r<=0)return o(_("Save timed out.","failed"));let i=setTimeout(()=>{document.removeEventListener(e,a),o(_("Save timed out.","failed"))},r),a=()=>{clearTimeout(i),n()};document.addEventListener(e,a,{once:!0})})}async function $r({keepalive:e=!1,timeoutMs:t=15e3,permit:n=null}={}){if(!w)return{state:"view",etag:null};let o=Date.now()+t,r=n||_n(),i={over:!1},a=null,f=new Promise((u,m)=>{a=setTimeout(()=>m(_("Save timed out.","failed")),Math.max(0,t))});try{return await Promise.race([qn(e,o,r,i),f])}catch(u){throw u&&typeof u.state=="string"?u:_(u?.message||"Save failed","failed")}finally{i.over=!0,clearTimeout(a),n||Dn(r)}}async function qn(e,t,n,o={over:!1}){if(dn()||await Un("clay:baseline-settled",t),o.over)return null;let r=!1,i=null;for(let a=0;a<4;a++){if(X&&(await X,o.over)||P()&&(await Fn(t),o.over))return null;if(je())throw _("This document has a conflict to resolve.","conflict");let f=b();if(!tt()){if(N(f),F())throw _("This document has unsaved work a save cannot write.","blocked");return te=!1,{state:r?"saved":"clean",etag:i??Fe()}}if(o.over)return null;let u=await Rt(e,()=>Nn(n));if(u.msgType!=="skipped"){if(!u.ok)throw _(u.msg||"Save failed",u.msgType==="conflict"||je()?"conflict":"failed");r=!0,i=u.etag??null}}throw _("The document kept changing while saving.","failed")}async function Yr(e=()=>{}){return await Ue({fresh:!0}),j(e)}function zr(e){!w||K||Bt(e,t=>{t.ok?window.location.reload():t.msgType==="skipped"?A("error",t.msg||"Template not saved"):A("error",t.msg||"Failed to save template")})}var Bn=Dt(e=>De({kind:"automatic"},e),1200),Hn=250,Gn=1e3,J=null,en=0,Je=[],_e=[],fe=!1,T=()=>{let e=_e;return _e=[],e};function dt(){if(J=null,B>0||!de()){fe=!0;return}let e=Je;if(Je=[],P()){_e.push(...e),I();return}I().then(t=>e.forEach(n=>n(t)))}function Xr(){let e=Date.now();return J===null?en=e:clearTimeout(J),new Promise(t=>{Je.push(t),J=setTimeout(dt,Math.max(0,Math.min(Hn,en+Gn-e)))})}function Wn(){ae&&(ae=!1,ke())}function tn(){fe&&(fe=!1,J=setTimeout(dt,0))}var W="",Z=!0,pt=!1;function dn(){return pt}var Ke=!1,Kn=250,Qn=1250,Qe=null,pn="clay:paint-heal:"+location.pathname;function mn(e){let t=5381;for(let n=0;n<e.length;n++)t=(t<<5)+t+e.charCodeAt(n)|0;return String(t>>>0)}function Vn(e){try{return localStorage.getItem(pn)===mn(e)}catch{return!1}}function $n(e){try{localStorage.setItem(pn,mn(e))}catch{}}function Yn(){return xt(_t({flushUndo:!1}))}function jr(e){!w||K||(clearTimeout(Qe),Qe=setTimeout(async()=>{Qe=null,ee&&await ce;let t=typeof e=="function"?e():e;t==null||!He()||!dn()||je()||wn()||V({flushUndo:!1})===C&&t!==Yn()&&(Vn(t)||($n(t),j(()=>{},{quietConflict:!0})))},Kn+Math.random()*Qn))}var Se=null,Ve=null,ee=0,ce=Promise.resolve(),mt=!1,vt=[];function zn(){return Ve??=import("./c-KNPDOMDY.js").catch(e=>(Ve=null,console.error("style-comparisons failed to load",e),null)),Ve}async function Xn(e){try{if(Se||(Se=(await zn())?.styleComparisonStripper??null),!Se)return;let t=Se(e);L=t(L),C=t(C),W=t(W);for(let n of Ee)n.forComparison=t(n.forComparison),n.forDirty=t(n.forDirty)}catch(t){console.error("style adoption failed",t)}finally{ee--,vt.shift()}}var ye=e=>e.replace(/&/g,"&amp;").replace(/"/g,"&quot;");function jn(e){if(e.name!==void 0){let n=[`data-name="${ye(e.name)}"`];return e.legacyId!==void 0&&n.push(`id="${ye(e.legacyId)}"`),n}let t=[ye(e.href)];try{let{pathname:n}=new URL(e.href);n&&t.push(ye(n))}catch{}return t}function Jn(e){let t=[L,C,W];for(let n of Ee)t.push(n.forComparison,n.forDirty);return t.some(n=>n&&e.some(o=>o&&n.includes(o)))}function Zn(e,t){let n=[];for(let{markers:i,tag:a}of t)for(let f of i)for(let u=e.indexOf(f);u>=0;u=e.indexOf(f,u+f.length)){let m=e.lastIndexOf("<",u);if(m<0||e.slice(m+1,m+1+a.length).toLowerCase()!==a)continue;let c=a==="style"?e.indexOf("</style",u):u;if(c<0)continue;let p=e.indexOf(">",c);p>=0&&n.push([m,p+1])}n.sort((i,a)=>i[0]-a[0]);let o="",r=0;for(let[i,a]of n)i<r||(o+=e.slice(r,i),r=a);return o+e.slice(r)}Kt(e=>{let t=jn(e);Jn(t)&&(ee||(mt=!1),ee++,vt.push({markers:t,tag:e.name!==void 0?"style":"link"}),ce=ce.then(()=>Xn(e)))});function Jr(){return ce}function gt(e){return!ee||mt||F()||P()||D||k||te||typeof e!="string"?!1:e===Zn(C,vt)}var er=500,tr=3e3,nr=1e4,Ze=null;function rr(){pe.holdSettle=!1,Ze&&Ze()}function nn(){if(!w)return;let e=!1,t=null,{forComparison:n,forDirty:o}=me();ue(n,o);let r=ie;W=n,re("immediate capture",`${n.length} chars`);let i=["keydown","pointerdown","drop","input","change","paste"],a=new Set(["Shift","Control","Alt","Meta"]),f=c=>{c.type==="keydown"&&a.has(c.key)||(mt=!0,e||(Ke=!0))};i.forEach(c=>document.addEventListener(c,f,!0));let u=()=>{if(!e){if(e=!0,t&&t(),!Ke&&ie===r){let c=b(),{forComparison:p,forDirty:S}=me();ue(p,S),W=p,N(c),re("settled capture",`${p.length} chars`)}else re("settled skipped",Ke?"user edited":"save occurred during settle");Z=!1,document.documentElement.setAttribute("savestatus","saved"),pt=!0,document.dispatchEvent(new CustomEvent("clay:baseline-settled"))}};Ze=u;let m=()=>{pe.holdSettle||u()};t=Pt.onAnyChange({debounce:er,omitChangeDetails:!0,require:"autosave"},m),setTimeout(()=>{e||m()},tr),setTimeout(()=>{!e&&pe.holdSettle&&rr()},nr)}document.readyState==="loading"?document.addEventListener("DOMContentLoaded",nn):nn();function ke(e=()=>{}){if(!w){let t=h("Not in edit mode");return e(t),Promise.resolve(t)}if(O>0){Ce=!0;let t=h(it());return e(t),Promise.resolve(t)}if(!de()){ae=!0;let t=at("Save session is quiesced");return e(t),Promise.resolve(t)}if(B>0){$e=!0;let t=h("Autosave suspended");return e(t),Promise.resolve(t)}if(!Z&&we){k=!0;let t=h("Save already in progress");return e(t),Promise.resolve(t)}return Bn(e).catch(t=>{let n={ok:!1,msg:t?.message||"Save failed",msgType:"error",code:null,etag:null};return A("error",n.msg),n})}var et=Xt({now:G,run:()=>ke()});function vn(){document.addEventListener("keydown",function(e){if((window.navigator.platform.match("Mac")?e.metaKey:e.ctrlKey)&&e.keyCode==83){if(!w)return;e.preventDefault(),e.isTrusted&&Ie(),I()}})}function gn(){document.addEventListener("click",e=>{e.target.closest("[trigger-save]")&&(e.isTrusted&&Ie(),I())})}function or(){w&&(Ue(),Ot(),Oe(),vn(),gn())}or();var Zr=I;var Le=!1;function ao({isCurrent:e,reload:t}){return e()?(Le=!0,setTimeout(()=>{Le=!1},1e3),t(),!0):!1}zt();function sr(){return rt()?!0:w?F()?!0:K?Tt():window.clay?.demo?!1:tt():!1}function tt(){if(!w)return!1;try{let e=V();return gt(e)?!1:e!==ft()}catch{return!0}}window.addEventListener("beforeunload",e=>{if(!w&&!rt())return;if(Le){Le=!1;return}if(!((!K||At())&&!sr())&&(e.preventDefault(),e.returnValue="",!window.clay?.demo&&!F()))try{let n=V(),o=ft();n!==o&&Yt(n,o)}catch{}});export{ao as a,sr as b,tt as c,En as d,rn as e,wn as f,de as g,rt as h,Tn as i,Ir as j,Rr as k,br as l,Nr as m,Fr as n,Ur as o,it as p,je as q,qr as r,Br as s,Hr as t,_n as u,Dn as v,Gr as w,Wr as x,Kr as y,ft as z,Qr as A,ue as B,Vr as C,I as D,j as E,$r as F,Yr as G,zr as H,Xr as I,dn as J,Yn as K,jr as L,Jr as M,gt as N,rr as O,ke as P,et as Q,vn as R,gn as S,or as T,Zr as U};
@@ -0,0 +1 @@
1
+ import{a as O}from"./c-BWFVSBDF.js";import{d as A}from"./c-XGH4GS2T.js";var p=1,D=8*1024,B=256,L=1024,Y=128,X=128,G=Object.freeze(["title","description","labels","members","dates","checklist","comment","attachments"]),m=250,E=5e3,ie=15e3;var W=new Set(["kind","id","field"]),$=new Set(["kind","v","epoch","generation","selection"]),q=new Set(["kind","anchor","head"]),F=new Set(["kind","ids"]),J=new Set(["kind","block","row","col"]),V=new Set(["block","rel"]),H=/^[\x20-\x7e]+$/,U=/^[A-Za-z0-9+/]+={0,2}$/,Z=/[\u0000-\u001f\u007f]/,o=e=>({ok:!1,reason:e}),a=e=>({ok:!0,target:e}),g=e=>!!e&&typeof e=="object"&&!Array.isArray(e),d=(e,t)=>{for(let n of Object.keys(e))if(!t.has(n))return!1;return!0};function T(e){let t=0;for(let n of e){let s=n.codePointAt(0);t+=s<128?1:s<2048?2:s<65536?3:4}return t}function u(e){return typeof e=="string"&&e.length>0&&!Z.test(e)&&T(e)<=B}function Q(e){if(typeof e!="string"||!e.length||e.length%4!==0||!U.test(e))return!1;let t=e.endsWith("==")?2:e.endsWith("=")?1:0;return e.length/4*3-t<=L}function _(e){return!g(e)||!d(e,V)||!u(e.block)||!Q(e.rel)?null:{block:e.block,rel:e.rel}}function v(e){if(!g(e))return null;if(e.kind==="text"){if(!d(e,q))return null;let t=_(e.anchor),n=_(e.head);return t&&n?{kind:"text",anchor:t,head:n}:null}if(e.kind==="blocks"){if(!d(e,F)||!Array.isArray(e.ids)||!e.ids.length||e.ids.length>X)return null;for(let t of e.ids)if(!u(t))return null;return{kind:"blocks",ids:[...e.ids]}}return e.kind==="cell"?!d(e,J)||!u(e.block)||!u(e.row)||!u(e.col)?null:{kind:"cell",block:e.block,row:e.row,col:e.col}:null}function w(e){return T(JSON.stringify(e))<=D}function ee(e){if(!d(e,W))return o("key");let t=e.id;if(typeof t!="string"||!t.length||t.length>Y||!H.test(t))return o("id");if(e.field===void 0){let s={kind:"record",id:t};return w(s)?a(s):o("size")}if(typeof e.field!="string"||!G.includes(e.field))return o("field");let n={kind:"record",id:t,field:e.field};return w(n)?a(n):o("size")}function te(e){if(!d(e,$))return o("key");if(e.v!==p)return o("version");if(!u(e.epoch))return o("epoch");if(!Number.isSafeInteger(e.generation)||e.generation<0)return o("generation");let t=v(e.selection);if(!t)return o("selection");let n={kind:"page",v:p,epoch:e.epoch,generation:e.generation,selection:t};return w(n)?a(n):o("size")}function y(e){return e===null?a(null):typeof e=="string"?O.test(e)?a(e):o("path"):g(e)?e.kind==="record"?ee(e):e.kind==="page"?te(e):o("kind"):o("shape")}function R(e){let t=y(e===void 0?null:e);return!t.ok||t.target!==null&&typeof t.target=="object"&&t.target.kind!=="record"?null:t.target}function z(e){return e==null?"":typeof e=="string"?`path:${e}`:`target:${JSON.stringify(e)}`}function C(e,t=null){let n=Array.isArray(e)?e:[],s=[];for(let i of n){if(!g(i))continue;let r=u(i.id)?i.id:null;if(!r)continue;let h=Number.isSafeInteger(i.n)&&i.n>=0?i.n:0,c=t&&t.get(r);if(c&&h<c.n){s.push(c);continue}let f=y(i.editing===void 0?null:i.editing);s.push({id:r,you:i.you===!0,n:h,editing:f.ok?f.target:null})}return s}function I(e){if(!g(e))return null;let t=u(e.id)?e.id:null,n=typeof e.token=="string"&&e.token.length?e.token:null;return t&&n?{id:t,token:n}:null}function N({target:e=null,session:t=null,n=0}){if(e==null||typeof e=="string")return{editing:e??null};let s=t&&typeof t.token=="string"&&t.token.length?t.token:null;return s?!Number.isSafeInteger(n)||n<0?null:{v:p,session:s,n,editing:e}:e.kind==="record"?{editing:e}:null}var ne=()=>Object.freeze({supported:!1,recordAwareness:!1,pageAwareness:!1,people:Object.freeze([]),anonymous:0}),S=class{constructor(){this.supported=!1,this.recordAwareness=!1,this.pageAwareness=!1,this.people=[],this.anonymous=0,this.snapshot=ne(),this.listeners=new Set,this.sessions=new Map,this.session=null,this.target=null,this.heldKey="",this.owner=null,this.explicit=!1,this.connecting=null,this.n=0,this.sentKey=null,this.timer=null,this.timerKind=null,this.inflight=!1,this.inflightOwner=null,this.inflightKey=null}getSnapshot(){return this.snapshot}subscribe(t){if(typeof t!="function")throw new TypeError("clay.presence.subscribe needs a listener function");return this.listeners.add(t),t(this.snapshot),()=>{this.listeners.delete(t)}}setCapabilities({supported:t=!1,recordAwareness:n=!1,pageAwareness:s=!1}={}){let i=t===!0,r=n===!0,h=s===!0;return i===this.supported&&r===this.recordAwareness&&h===this.pageAwareness?this.snapshot:(this.supported=i,this.recordAwareness=r,this.pageAwareness=h,this.emit())}receive(t){let n=t&&typeof t=="object"?t:{},s=Array.isArray(n.people)?n.people:[],i=this.sessions,r=new Map,h=[];for(let l of s){if(!l||typeof l.id!="string"||!l.id)continue;let P=typeof l.name=="string"&&l.name.trim()?l.name.trim():"Someone",x=C(l.sessions,i);for(let K of x)r.set(K.id,K);let b={id:l.id,name:P,you:l.you===!0,editing:R(l.editing),sessions:x};typeof l.canEdit=="boolean"&&(b.canEdit=l.canEdit),h.push(b)}this.people=h,this.sessions=r;let c=n.anonymous;this.anonymous=typeof c=="number"&&Number.isFinite(c)&&c>0?Math.floor(c):0;let f=I(n.selfSession),M=!this.session||!this.session.token;f&&(this.session=f);let j=this.emit();return f&&M&&this.owner&&this.target!==null&&(this.sentKey=null,this.flush()),j}clear(){return this.people=[],this.anonymous=0,this.sessions=new Map,this.session=null,this.cancel(),this.sentKey=null,this.emit()}setTarget(t){let n=y(t===void 0?null:t);return n.ok?(this.explicit=!0,this.hold(n.target)):!1}setGeneric(t){if(this.explicit)return!1;let n=y(t===void 0?null:t);return n.ok?this.hold(n.target):!1}releaseTarget(){return this.explicit?(this.explicit=!1,this.hold(null)):!1}hold(t){let n=z(t);return n===this.heldKey?(this.owner&&this.sentKey!==n&&this.schedule(m),!0):(this.target=t,this.heldKey=n,t===null?(this.cancel(),this.flush(),!0):(this.schedule(m),!0))}attachTransport(t){if(!t||typeof t.send!="function")throw new TypeError("clay.presence.attachTransport needs a transport with a send function");let n=this,s={send:t.send,get active(){return n.owner===s},detach(){if(n.owner!==s)return;let i=n.heldKey===""&&typeof n.inflightKey=="string"&&n.inflightKey!=="";if(n.owner=null,n.session=null,n.n=0,n.sentKey=null,n.inflight=!1,n.inflightOwner=null,n.inflightKey=null,n.cancel(),n.target=null,n.heldKey="",n.explicit=!1,n.clear(),i)try{Promise.resolve(s.send({editing:null})).catch(()=>{})}catch{}}};return this.owner=s,this.session=null,this.n=0,this.sentKey=null,this.inflight=!1,this.inflightOwner=null,this.inflightKey=null,this.cancel(),this.target!==null&&this.flush(),s}connect({send:t=null}={}){return this.connecting?this.connecting:(this.connecting=A().then(n=>{let s=Array.isArray(n?.extensions)?n.extensions:[],i=n?.document&&typeof n.document=="object"?n.document.awareness:null;if(i&&i.transport==="broadcast"&&(s.includes("page-awareness-v1")||s.includes("record-awareness-v1"))){let r=typeof i.scope=="string"&&i.scope?i.scope:null;return import("./c-S2U6NJU4.js").then(({localPresence:h})=>{let c=h({scope:r,store:this}),f=c.start();return f?Object.defineProperty(f,"stop",{value:()=>c.stop()}):null})}return typeof t=="function"&&s.includes("presence-editing")?this.attachTransport({send:t}):null}).finally(()=>{this.connecting=null}),this.connecting)}reconnect(){this.session=null,this.n=0,this.sentKey=null,this.cancel(),!(!this.owner||this.target===null)&&this.flush()}emit(){let t=this.people.map(n=>Object.freeze({...n,sessions:Object.freeze(n.sessions)}));this.snapshot=Object.freeze({supported:this.supported,recordAwareness:this.recordAwareness,pageAwareness:this.pageAwareness,people:Object.freeze(t),anonymous:this.anonymous});for(let n of[...this.listeners])n(this.snapshot);return this.snapshot}schedule(t,n="coalesce"){if(this.timer!==null){if(this.timerKind==="coalesce")return;clearTimeout(this.timer)}this.timerKind=n,this.timer=setTimeout(()=>{this.timer=null,this.timerKind=null,this.flush()},t)}cancel(){this.timer!==null&&(clearTimeout(this.timer),this.timer=null,this.timerKind=null)}renew(){this.timer!==null||!this.owner||this.target===null||this.schedule(E,"renew")}flush(){if(this.inflight)return;let t=this.owner;if(!t)return;let n=this.n+1,s=N({target:this.target,session:this.session,n});if(!s)return;this.cancel(),this.sentKey=this.heldKey,this.inflight=!0,this.inflightOwner=t,this.inflightKey=this.sentKey,s.v===p&&(this.n=n);let i=r=>{if(this.inflightOwner===t&&(this.inflight=!1,this.inflightOwner=null,this.inflightKey=null,this.owner===t)){if(this.heldKey!==this.sentKey){this.flush();return}r?this.renew():this.schedule(E,"renew")}};Promise.resolve(t.send(s)).then(r=>i(!!r),()=>i(!1))}},k=new S,ce=k;if(typeof window<"u"&&(window.clay=window.clay||{},!window.clay.presence)){window.clay.presence=k;try{document.dispatchEvent(new CustomEvent("clay:presence-ready",{detail:{presence:k}}))}catch{}}export{p as a,E as b,ie as c,y as d,S as e,k as f,ce as g};
@@ -1 +1 @@
1
- import{a as r}from"./c-VKEDWYDF.js";import{i as o}from"./c-7O6AFR65.js";import{k as c}from"./c-35NBGMZB.js";var l="[editmode\\:resource]:is(style, link, script)",u='[editmode\\:resource]:is(style, link, script)[type^="inert/"]',i="inert/";function s(e){let t=e.getAttribute("type");return t&&t.startsWith(i)?!1:(e.setAttribute("type",i+(t||"")),!0)}function m(e){let t=e.getAttribute("type").slice(i.length);t?e.setAttribute("type",t):e.removeAttribute("type")}function d(){c(e=>{e.querySelectorAll(l).forEach(s)})}function f(){o&&r(()=>{a()})}function a(e=document){let t=(e.ownerDocument||e)===document;e.querySelectorAll(u).forEach(n=>{m(n),t&&n.replaceWith(n.cloneNode(!0))})}function R(){document.querySelectorAll(l).forEach(e=>{s(e)&&e.replaceWith(e.cloneNode(!0))})}function b(){d(),f()}export{l as a,a as b,R as c,b as d};
1
+ import{a as r}from"./c-VKEDWYDF.js";import{f as o}from"./c-3O7OBDCM.js";import{q as c}from"./c-7MG5RU63.js";var l="[editmode\\:resource]:is(style, link, script)",u='[editmode\\:resource]:is(style, link, script)[type^="inert/"]',i="inert/";function s(e){let t=e.getAttribute("type");return t&&t.startsWith(i)?!1:(e.setAttribute("type",i+(t||"")),!0)}function m(e){let t=e.getAttribute("type").slice(i.length);t?e.setAttribute("type",t):e.removeAttribute("type")}function d(){c(e=>{e.querySelectorAll(l).forEach(s)})}function f(){o&&r(()=>{a()})}function a(e=document){let t=(e.ownerDocument||e)===document;e.querySelectorAll(u).forEach(n=>{m(n),t&&n.replaceWith(n.cloneNode(!0))})}function R(){document.querySelectorAll(l).forEach(e=>{s(e)&&e.replaceWith(e.cloneNode(!0))})}function b(){d(),f()}export{l as a,a as b,R as c,b as d};
@@ -0,0 +1,32 @@
1
+ import{A as v,B as P,C as x,D as T,E as A,F as k,G as E,H as z,I as C,J as O,K as tt,L as et,M as nt,N as B,O as D,R as it,S as K,c as M,d as L,e as f,n as J,s as $,w as g,x as Q,z as Z}from"./c-4TXNLX4K.js";import"./c-EXKHPOVC.js";import"./c-L5VFATT6.js";import"./c-MWXFLW4J.js";import"./c-ZK4GIZH2.js";import"./c-W4JCVLAB.js";import"./c-7K4SCQB7.js";import"./c-WMRJKQ2V.js";import{B as Y,d as N}from"./c-AMU3BPPR.js";import{I as X,W as G,m as V}from"./c-QIXT3Q7C.js";import"./c-WCXLG3MV.js";import"./c-57XDY6HC.js";import{a as j}from"./c-I2SCCUEW.js";import"./c-VHNSBD2M.js";var ot=`
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; padding: 0; background: var(--page-chrome-bg-moved); color: var(--page-ink-soft); display: flex; align-items: center; justify-content: center; font: inherit; font-size: 14px; line-height: 1; cursor: pointer; opacity: 0; transition: opacity 120ms; }
13
+ .page-table-add-row { left: 0; right: 0; top: 100%; height: 16px; border-radius: 0 0 6px 6px; border: 1px solid var(--page-chrome-line-moved); border-top: 0; padding-bottom: 2px; box-sizing: border-box; }
14
+ .page-table-add-col { top: 0; bottom: 0; left: 100%; width: 16px; border-radius: 0 6px 6px 0; border: 1px solid var(--page-chrome-line-moved); border-left: 0; box-sizing: border-box; }
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-pop-hover); color: var(--page-ink); }
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 y=V.nodes,b=d=>X(d.attrs.cols),rt="That part of the table is no longer available.",lt='<svg viewBox="0 0 16 16" width="14" height="14" fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><g transform="scale(0.6667)" stroke-width="2.25"><path d="M12.22 2h-.44a2 2 0 0 0-2 2v.18a2 2 0 0 1-1 1.73l-.43.25a2 2 0 0 1-2 0l-.15-.08a2 2 0 0 0-2.73.73l-.22.38a2 2 0 0 0 .73 2.73l.15.1a2 2 0 0 1 1 1.72v.51a2 2 0 0 1-1 1.74l-.15.09a2 2 0 0 0-.73 2.73l.22.38a2 2 0 0 0 2.73.73l.15-.08a2 2 0 0 1 2 0l.43.25a2 2 0 0 1 1 1.73V20a2 2 0 0 0 2 2h.44a2 2 0 0 0 2-2v-.18a2 2 0 0 1 1-1.73l.43-.25a2 2 0 0 1 2 0l.15.08a2 2 0 0 0 2.73-.73l.22-.39a2 2 0 0 0-.73-2.73l-.15-.08a2 2 0 0 1-1-1.74v-.5a2 2 0 0 1 1-1.74l.15-.09a2 2 0 0 0 .73-2.73l-.22-.38a2 2 0 0 0-2.73-.73l-.15.08a2 2 0 0 1-2 0l-.43-.25a2 2 0 0 1-1-1.73V4a2 2 0 0 0-2-2z"/><circle cx="12" cy="12" r="3"/></g></svg>',ht=`
26
+ .page-editor .page-table-actions { position: absolute; z-index: 2; bottom: 100%; inset-inline-end: 0; inset-inline-start: auto; width: 24px; height: 20px; padding: 0; display: grid; place-items: center; border: 1px solid var(--page-chrome-line-rest); border-bottom: 0; border-radius: 6px 6px 0 0; background: var(--page-chrome-bg-moved); color: var(--page-chrome-ink-moved); font: inherit; cursor: pointer; opacity: 1; }
27
+ .page-editor .page-table-actions:hover { background: var(--page-pop-hover); color: var(--page-ink-soft); }
28
+ @media (max-width: 560px) {
29
+ .page-editor .page-table-actions { position: absolute; }
30
+ .page-editor .page-table-actions::after { content: ""; position: absolute; inset: -12px; }
31
+ }
32
+ `,dt=(d,t)=>`${d}-${t}`,st=(d,t)=>d.name||`Column ${t+1}`,ut=(d,t)=>(d.childCount?d.child(0).textContent.trim():"")||`Row ${t+1}`,R=(d,t)=>{let e=null;return d.forEach((n,i)=>{!e&&n.type===y.table&&n.attrs.id===t&&(e={table:n,pos:i})}),e},W=(d,t)=>t==null?0:[...d.content.content].findIndex(e=>e.attrs.id===t),F=(d,t)=>t==null?0:b(d).indexOf(t),ct=(d,t,e)=>{let n=R(d.state.doc,t.tableId);if(!n)return!1;let i=e==="row"?W(n.table,t.rowId):F(n.table,t.colId);return i<0?!1:J(d,n.pos,e,i)},U=(d,t,e)=>{let n=R(d.state.doc,t.tableId);if(!n)return!1;let i=W(n.table,t.rowId),s=F(n.table,t.colId);return i<0||s<0||(K(d,n.pos,i,s),e(d.state,null)!==!0)?!1:e(d.state,d.dispatch)},pt=["fontFamily","fontSize","fontWeight","fontStyle","letterSpacing"],mt=d=>{let t=d.ownerDocument,e=t.defaultView.getComputedStyle(d),n=t.createElement("span");for(let s of pt)n.style[s]=e[s];Object.assign(n.style,{position:"absolute",visibility:"hidden",whiteSpace:"pre",left:"-9999px",top:"0"}),n.textContent=d.textContent,t.body.append(n);let i=n.getBoundingClientRect().width;return n.remove(),Math.ceil(i)},bt=d=>Number.isFinite(d)&&d>0?Math.round(Math.min(z,Math.max(E,d))):null,at=(d,t,e)=>{let n=d.createElement("button");return n.type="button",n.textContent=t,n.setAttribute("aria-label",t),n.addEventListener("click",e),n},_=class{constructor(t,e,n){this.node=t,this.view=e,this.getPos=n,this.preview=null,this.renaming=null,this.renamingUnsaved=null,this.menuAnchor=null,this.destroyed=!1;let i=e.dom.ownerDocument;this.dom=i.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 s=i.createElement("div");s.className="page-table-scroll";let o=i.createElement("table");o.setAttribute("aria-label","Table"),this.table=o,this.colgroup=i.createElement("colgroup"),this.header=i.createElement("thead"),this.header.contentEditable="false",this.contentDOM=i.createElement("tbody"),o.append(this.colgroup,this.header,this.contentDOM),s.append(o);let r=at(i,"+",()=>this.append("row"));r.className="page-table-add-row",r.setAttribute("aria-label","Add a row"),r.title="Add a row";let a=at(i,"+",()=>this.append("column"));a.className="page-table-add-col",a.setAttribute("aria-label","Add a column"),a.title="Add a column";let l=i.createElement("button");l.type="button",l.className="page-table-actions",l.innerHTML=lt,l.dataset.control="actions",l.setAttribute("aria-haspopup","menu"),l.setAttribute("aria-expanded","false"),l.setAttribute("aria-label","Table actions"),l.title="Table actions",this.actionsButton=l,l.addEventListener("click",c=>{c.preventDefault(),this.menuAnchor=l,this.openActions()}),l.addEventListener("keydown",c=>{c.key!=="Enter"&&c.key!==" "||(c.preventDefault(),this.menuAnchor=l,this.openActions())});for(let c of[r,a,l])c.contentEditable="false",c.addEventListener("mousedown",u=>u.preventDefault());this.dom.append(s,r,a,l),this.render()}control(t){return!t||t.tableId&&t.tableId!==this.node.attrs.id?null:[...this.dom.querySelectorAll(`[data-control="${t.control}"]`)].find(n=>(t.colId==null||n.dataset.col===t.colId)&&(t.rowId==null||n.dataset.row===t.rowId))??null}controls(t){return[...this.dom.querySelectorAll(`[data-control="${t}"]`)].filter(e=>!e.hidden&&!e.closest("[hidden]"))}focusControl(t){if(!t||t.tableId&&t.tableId!==this.node.attrs.id)return null;let e=this.control(t),n=e?[]:this.controls(t.control),i=n.length?n[Math.min(t.index??0,n.length-1)]:null,s=e??i??this.actionsButton;return s?.focus?.(),s}describe(t){if(!t||!this.dom.contains(t))return null;let e=t.dataset?.control;return e?{tableId:this.node.attrs.id,rowId:t.dataset.row??null,colId:t.dataset.col??null,control:e,index:this.controls(e).indexOf(t)}:null}afterUpdate(t){queueMicrotask(()=>{if(this.destroyed||this.view.isDestroyed)return;let e=this.dom.ownerDocument.activeElement;e&&this.dom.contains(e)||this.focusControl(t)})}act(t,e,n){let i=U(this.view,t,e);return N(this.view,i?n:rt),i}cellTarget(t=this.node){let e=this.getPos(),{$head:n}=this.view.state.selection,i=0,s=0;for(let r=n.depth;r>0;r--)if(n.node(r).type===y.table){e!=null&&n.before(r)===e&&(i=r<n.depth?n.index(r):0,s=r+1<n.depth?n.index(r+1):0);break}let o=[...t.content.content];return{tableId:t.attrs.id,rowId:o[i]?.attrs.id??null,colId:b(t)[s]??null}}openActions(){let t=this.cellTarget(),e=R(this.view.state.doc,t.tableId)?.table;return e?this.actions(e,t):!1}actions(t,e){let n=b(t),i=Math.max(0,F(t,e.colId)),s=Math.max(0,W(t,e.rowId)),o=t.attrs.cols[n[i]]??{},r=t.attrs.sort,a=(c,u)=>()=>this.act(e,c,u),l=this.widthOfColumn(n[i]);return g(this.view,this.actionsButton,[{label:"Insert row above",icon:"+",run:a(v(!1),"Row inserted")},{label:"Insert row below",icon:"+",run:a(v(!0),"Row inserted")},...s>0?[{label:"Move row up",icon:"\u2191",run:a(A(-1),"Row moved")}]:[],...s<t.childCount-1?[{label:"Move row down",icon:"\u2193",run:a(A(1),"Row moved")}]:[],{label:"Delete row",icon:"\xD7",run:a(P,"Row deleted")},{label:"Insert column left",icon:"+",run:a(x(!1),"Column inserted")},{label:"Insert column right",icon:"+",run:a(x(!0),"Column inserted")},...i>0?[{label:"Move column left",icon:"\u2190",run:a(k(-1),"Column moved")}]:[],...i<n.length-1?[{label:"Move column right",icon:"\u2192",run:a(k(1),"Column moved")}]:[],...n.length>1?[{label:"Delete column",icon:"\xD7",run:a(T,"Column deleted")}]:[],{label:"Sort ascending",icon:"\u2191",checked:r?.col===n[i]&&r.dir==="asc",run:a(D(n[i],"asc"),"Sorted ascending")},{label:"Sort descending",icon:"\u2193",checked:r?.col===n[i]&&r.dir==="desc",run:a(D(n[i],"desc"),"Sorted descending")},{label:"Chart this table",icon:"\u{1F4CA}",run:()=>{let c=this.getPos();return $(this.view).then(({insertChartAfterTable:u})=>u(this.view,c))}},{label:"Rename column",focus:!1,run:()=>this.beginRename(n[i])},{label:"Column width \u25B8",icon:"\u2194",hint:o.width?`${o.width}px`:"Auto",focus:!1,run:()=>g(this.view,this.actionsButton,[{label:"Wider",icon:"+",run:a(this.widthCommand(n[i],l+40),"Column width changed")},{label:"Narrower",icon:"\u2212",run:a(this.widthCommand(n[i],l-40),"Column width changed")},{label:"Fit to content",icon:"\u2194",run:()=>this.fit(n[i])},...this.isSized()?[{label:"Reset widths",icon:"\xD7",run:a(O(n[i]),"Column widths reset")}]:[]])}],{persist:!0})}beginRename(t){let e=this.control({control:"column",colId:t}),n=this.node.attrs.cols[t];if(!e||!n)return!1;let i=this.dom.ownerDocument,s=this.node.attrs.id,o=i.createElement("input");o.type="text",o.className="page-table-rename",o.dataset.control="rename",o.dataset.col=t,o.value=n.name??"",o.setAttribute("aria-label","Column name");let r=j({id:"table-rename",isPending:()=>this.renaming===o&&o.value.trim()!==(n.name??"")});this.renamingUnsaved=r;let a=l=>{if(this.renaming!==o)return;this.renaming=null,this.renamingUnsaved=null,r.dispose();let c=o.value.trim();l&&c&&this.act({tableId:s,colId:t},nt(t,c),"Column renamed"),o.isConnected&&o.replaceWith(e),this.focusControl({tableId:s,control:"column",colId:t})};return o.addEventListener("keydown",l=>{l.isComposing||l.keyCode===229||(l.key==="Enter"&&(l.preventDefault(),a(!0)),l.key==="Escape"&&(l.preventDefault(),a(!1)),l.stopPropagation())}),o.addEventListener("blur",()=>a(!0)),this.renaming=o,e.replaceWith(o),o.focus(),o.select(),!0}append(t){let e=this.getPos();if(e==null)return;let n=t==="row"?[this.node.childCount-1,0]:[0,this.node.child(0).childCount-1];K(this.view,e,...n),(t==="row"?v(!0):x(!0))(this.view.state,this.view.dispatch),this.view.focus()}widths(){this.frozen=null;let t=b(this.node).some(n=>this.node.attrs.cols[n].width),e=b(this.node).map(n=>{let i=this.dom.ownerDocument.createElement("col");i.dataset.col=n;let s=this.node.attrs.cols[n].width;return t&&(i.style.width=`${s??C}px`),i});this.colgroup.replaceChildren(...e),this.table.classList.toggle("is-sized",t),this.table.style.width=t?`${b(this.node).reduce((n,i)=>n+(this.node.attrs.cols[i].width??C),0)}px`:""}resizer(t,e,n,i){let s=this.dom.ownerDocument,o=s.createElement("span");return o.className="page-table-resize",o.dataset.control="resize",o.dataset.col=t,o.setAttribute("role","separator"),o.setAttribute("aria-orientation","vertical"),o.setAttribute("aria-label",`Resize column ${st(n,i)}`),o.setAttribute("aria-valuemin",String(E)),o.setAttribute("aria-valuemax",String(z)),o.setAttribute("aria-valuenow",String(this.widthOfColumn(t))),o.tabIndex=0,o.title="Drag or use the arrow keys to resize, double-click to reset the table to the page width",o.addEventListener("mousedown",r=>r.preventDefault()),o.addEventListener("blur",()=>this.commitWidth(t)),o.addEventListener("keydown",r=>this.resizeKey(r,t)),o.addEventListener("keyup",r=>{["ArrowLeft","ArrowRight","Home","End"].includes(r.key)&&this.commitWidth(t)}),o.addEventListener("pointerdown",r=>{r.preventDefault();let a=r.clientX,l=this.widthOfColumn(t);this.freeze();let c=this.dom.ownerDocument.defaultView.getComputedStyle?.(this.dom).direction==="rtl",u=l,p=S=>{u=bt(l+(c?a-S.clientX:S.clientX-a))??l,this.showWidth(t,u)},h=()=>{s.removeEventListener("pointermove",p),s.removeEventListener("pointerup",h),u!==l?this.sizeColumn(t,u):this.widths()};s.addEventListener("pointermove",p),s.addEventListener("pointerup",h)}),o.addEventListener("dblclick",r=>{r.preventDefault(),this.command(t,O(t))}),o}isSized(){return b(this.node).some(t=>this.node.attrs.cols[t].width)}drawnWidths(){let t={};for(let e of this.header.querySelectorAll("th"))t[e.dataset.col]=Math.round(e.getBoundingClientRect().width)||C;return t}widthOfColumn(t){let e=this.node.attrs.cols[t]?.width;return e||(this.isSized()?C:this.drawnWidths()[t]??C)}freeze(){if(!(this.isSized()||this.frozen)){this.frozen=this.drawnWidths();for(let t of this.colgroup.children)t.style.width=`${this.frozen[t.dataset.col]}px`;this.table.style.width=`${Object.values(this.frozen).reduce((t,e)=>t+e,0)}px`,this.table.classList.add("is-sized")}}showWidth(t,e){let n=[...this.colgroup.children].find(i=>i.dataset.col===t);n&&(this.table.classList.add("is-sized"),n.style.width=`${e}px`,this.frozen&&(this.table.style.width=`${Object.values({...this.frozen,[t]:e}).reduce((i,s)=>i+s,0)}px`))}widthCommand(t,e){return this.isSized()?et(t,e):tt({...this.frozen??this.drawnWidths(),[t]:e},t)}sizeColumn(t,e){return this.command(t,this.widthCommand(t,e))}handleFor(t){return[...this.header.querySelectorAll(".page-table-resize")].find(e=>e.dataset.col===t)??null}resizeKey(t,e){let n=t.shiftKey?50:10,i=this.preview?.col===e?this.preview.width:this.widthOfColumn(e),s;if(t.key==="ArrowLeft")s=i-n;else if(t.key==="ArrowRight")s=i+n;else if(t.key==="Home")s=E;else if(t.key==="End")s=z;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(z,Math.max(E,Math.round(s))))}previewWidth(t,e){let n=this.preview?.col===t?this.preview.base:this.widthOfColumn(t);this.freeze(),this.preview={col:t,width:e,base:n},this.showWidth(t,e);let i=this.handleFor(t);i&&i.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 n=this.getPos(),i=n==null?null:this.view.state.doc.nodeAt(n),s=i?.type===y.table&&i.attrs.id===this.node.attrs.id?i.attrs.cols[t]:null;if(!s)return this.widths(),!1;if((s.width??e.base)===e.width)return this.widths(),!1;let o=b(i).some(a=>i.attrs.cols[a].width)?{}:this.frozen??this.drawnWidths(),r={...i.attrs.cols};for(let[a,l]of Object.entries(o))r[a]&&(r[a]={...r[a],width:l});return r[t]={...s,width:e.width},this.view.dispatch(Y(this.view.state.tr.setNodeMarkup(n,null,{...i.attrs,cols:r}))),!0}command(t,e){let n=U(this.view,{tableId:this.node.attrs.id,colId:t},e);return this.view.focus(),n}fit(t){let e=0;for(let i of this.contentDOM.querySelectorAll("td"))i.dataset.col===t&&(e=Math.max(e,mt(i.querySelector("span")??i)));let n=[...this.header.querySelectorAll("th")].find(i=>i.dataset.col===t)?.querySelector("button");return e=Math.max(e,n?.scrollWidth??0),this.sizeColumn(t,e+24)}render(t=null){let e=this.dom.ownerDocument,n=e.createElement("tr"),i=M(this.node),s=this.node.attrs.id;this.widths();for(let[r,a]of b(this.node).entries()){let l=this.node.attrs.cols[a],c=i[a],u=st(l,r),p=e.createElement("th");p.dataset.col=a,p.dataset.kind=c,p.setAttribute("scope","col"),p.id=dt(s,a),this.node.attrs.sort?.col===a&&p.setAttribute("aria-sort",this.node.attrs.sort.dir==="asc"?"ascending":"descending");let h=e.createElement("button");h.type="button",h.className="page-table-col-menu",h.textContent=u,h.dataset.control="column",h.dataset.col=a,h.dataset.kind=c,h.setAttribute("aria-haspopup","menu"),h.setAttribute("aria-expanded","false"),h.setAttribute("aria-label",`${u} column actions`),h.addEventListener("click",S=>{S.preventDefault(),this.menuAnchor=h;let H={tableId:s,colId:a},m=(w,I)=>()=>this.act(H,w,I);g(this.view,h,[{label:"Rename",run:()=>this.beginRename(a),focus:!1},{label:"Kind \u25B8",icon:L[c],hint:l.kind?f[c]:`Auto: ${f[c]}`,run:()=>g(this.view,h,[{label:"Auto",icon:l.kind?"":L[c],hint:l.kind?"":f[c],checked:!l.kind,run:m(B(a,"auto"),`Kind ${f[c]}`)},...G.map(w=>({label:f[w],icon:L[w],checked:l.kind===w,run:m(B(a,w),`Kind ${f[w]}`)}))]),focus:!1},{label:"Sort ascending",icon:"\u2191",run:m(D(a,"asc"),"Sorted ascending")},{label:"Sort descending",icon:"\u2193",run:m(D(a,"desc"),"Sorted descending")},{label:"Width \u25B8",icon:"\u2194",hint:l.width?`${l.width}px`:"Auto",focus:!1,run:()=>g(this.view,h,[{label:"Wider",icon:"+",run:m(this.widthCommand(a,this.widthOfColumn(a)+40),"Column width changed")},{label:"Narrower",icon:"\u2212",run:m(this.widthCommand(a,this.widthOfColumn(a)-40),"Column width changed")},{label:"Fit to content",icon:"\u2194",run:()=>this.fit(a)},...this.isSized()?[{label:"Reset widths",icon:"\xD7",run:m(O(a),"Column widths reset")}]:[]])},{label:"Chart this table",icon:"\u{1F4CA}",run:()=>{let w=this.getPos();return $(this.view).then(({insertChartAfterTable:I})=>I(this.view,w))}},{label:"Insert column left",icon:"+",run:m(x(!1),"Column inserted")},{label:"Insert column right",icon:"+",run:m(x(!0),"Column inserted")},...r>0?[{label:"Move left",icon:"\u2190",run:m(k(-1),"Column moved")}]:[],...r<b(this.node).length-1?[{label:"Move right",icon:"\u2192",run:m(k(1),"Column moved")}]:[],{label:"Select column",icon:"\u25A6",run:()=>ct(this.view,H,"col")},{label:"Delete column",icon:"\xD7",run:m(T,"Column deleted")}],{persist:!0})}),p.append(h,this.resizer(a,p,l,r)),n.append(p)}let o=this.menuAnchor;if(this.header.replaceChildren(n),o){let r=this.control({tableId:s,control:o.dataset.control,colId:o.dataset.col??null,rowId:o.dataset.row??null});this.menuAnchor=r&&r!==o&&Q(this.view,o,r)?r:null}t&&this.focusControl(t)}update(t){if(t.type!==y.table)return!1;let e=this.describe(this.dom.ownerDocument.activeElement),n=this.preview,i=this.renaming?.isConnected&&e?.control==="rename";this.node=t,this.dom.dataset.id=t.attrs.id??"",this.preview=null,i?this.widths():this.render(e),n&&t.attrs.cols[n.col]&&(t.attrs.cols[n.col].width??n.base)===n.base&&this.previewWidth(n.col,n.width);let s=M(t);for(let o of this.contentDOM.querySelectorAll("td[data-col]"))o.dataset.kind=s[o.dataset.col]??"text";return e&&!i&&this.afterUpdate(e),!0}stopEvent(t){return!!t.target.closest?.("thead, .page-table-actions, .page-table-add-row, .page-table-add-col")}ignoreMutation(t){return!this.contentDOM.contains(t.target)}destroy(){this.destroyed=!0,this.renaming=null,this.renamingUnsaved?.dispose(),this.renamingUnsaved=null,this.menuAnchor=null,this.preview=null}},q=class{constructor(t,e,n){this.node=t,this.view=e,this.getPos=n,this.date=null;let i=e.dom.ownerDocument;this.dom=i.createElement("td"),Z.set(this.dom,this),this.dom.dataset.col=t.attrs.col,this.contentDOM=i.createElement("span");let s=i.createElement("button");s.type="button",s.className="page-table-row-menu",s.innerHTML=lt,s.dataset.control="row",s.setAttribute("aria-haspopup","menu"),s.setAttribute("aria-expanded","false"),s.setAttribute("aria-label","Row actions"),s.title="Row actions",s.contentEditable="false",s.addEventListener("click",()=>{let o=this.target();if(!o)return;let r=R(this.view.state.doc,o.tableId);if(!r)return;let a=(u,p)=>()=>{let h=U(this.view,o,u);return N(this.view,h?p:rt),h},l=Math.max(0,W(r.table,o.rowId)),c=r.table.childCount;g(this.view,s,[{label:"Insert above",icon:"+",run:a(v(!1),"Row inserted")},{label:"Insert below",icon:"+",run:a(v(!0),"Row inserted")},...l>0?[{label:"Move up",icon:"\u2191",run:a(A(-1),"Row moved")}]:[],...l<c-1?[{label:"Move down",icon:"\u2193",run:a(A(1),"Row moved")}]:[],{label:"Select row",icon:"\u25A6",run:()=>ct(this.view,o,"row")},{label:"Delete row",icon:"\xD7",run:a(P,"Row deleted")}],{persist:!0})}),this.menu=s,this.dom.append(s,this.contentDOM),this.update(t)}target(){let t=this.getPos(),e=t==null?null:this.view.state.doc.resolve(t),n=e?.node(1);return!n||n.type!==y.table?null:{tableId:n.attrs.id,rowId:e.node(2).attrs.id??null,colId:this.node.attrs.col??null}}update(t){if(t.type!==y.table_cell)return!1;this.node=t;let e=this.view.state.doc.resolve(this.getPos()),n=e.node(1),i=e.node(2),s=e.index(1);return this.dom.dataset.col=t.attrs.col,this.dom.setAttribute("headers",dt(n.attrs.id,t.attrs.col)),this.dom.dataset.kind=M(n)[t.attrs.col]??"text",this.menu.dataset.col=t.attrs.col,this.menu.dataset.row=i.attrs.id??"",this.menu.setAttribute("aria-label",`Row actions: ${ut(i,s)}`),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 n=this.node.textContent.trim();/^\d{4}-\d{2}-\d{2}$/.test(n)&&(e.value=n),e.addEventListener("change",()=>{e.value&&it(this.view,this.getPos(),e.value),this.closeDate(),this.view.focus()}),e.addEventListener("keydown",i=>{i.key==="Escape"&&(i.preventDefault(),this.closeDate(),this.view.focus()),i.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 Lt(){return{id:"table",nodeViews:{table:(d,t,e)=>new _(d,t,e),table_cell:(d,t,e)=>new q(d,t,e)},css:ot+ht,dispose(){}}}export{q as TableCellView,_ as TableView,Lt as createFeature};
@@ -0,0 +1 @@
1
+ import{F as x,c as b,q as f,s as p,u as h,v as k}from"./c-T637T7SN.js";import"./c-4ASQPRQL.js";import"./c-GQ6F6IDK.js";import{b as c,d as S}from"./c-I2SCCUEW.js";import"./c-5VYOWDTI.js";import"./c-FWKHM4E7.js";import"./c-X5LNHET5.js";import"./c-WYFDLITL.js";import"./c-UGHH4MB3.js";import"./c-ZWIOJGMT.js";import{l as s,o as D,p as y,q as E}from"./c-B7J4K2AE.js";import"./c-ATKAOH23.js";import"./c-EK63G3CG.js";import"./c-NQJRVJ56.js";import"./c-XGH4GS2T.js";import"./c-IJUK2GPW.js";import"./c-3O7OBDCM.js";import"./c-BPF2NSPV.js";import"./c-P7KNDG34.js";import"./c-CYWLPPUS.js";import"./c-N7JPUPGC.js";import"./c-7MG5RU63.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 A=15e3,M=Symbol("the barrier deadline passed"),I=2,e=(i,r={})=>({ok:!1,code:i,...r});async function O(i,r){let u=null,l=new Promise(a=>{u=setTimeout(()=>a(M),Math.max(0,r-Date.now()))});try{return await Promise.race([Promise.resolve(i),l])}finally{clearTimeout(u)}}async function _({generation:i=p(),keepalive:r=!1,timeoutMs:u=A,operation:l=null}={}){let a=l?null:D("mode");if(!l&&!a)return e("busy");let n=Date.now()+u,d=h(i),m=new AbortController;try{for(let g=0;;g++){if(i!==p())return e("stale-document");if(Date.now()>=n)return e("timeout");let P={permit:d,deadline:n,keepalive:r,signal:m.signal,timeoutMs:Math.max(0,n-Date.now())},t=await O(S(P),n);if(t===M)return e("timeout",{pending:c()});if(!t.ok)return f()?e("conflict",{pending:t.pending}):s()?e("save-unknown",{pending:t.pending}):e("pending-input",{pending:t.pending});if(t.pending.length)return e("pending-input",{pending:t.pending});if(f())return e("conflict");if(s())return e("save-unknown");let o;try{o=await x({keepalive:r,timeoutMs:Math.max(0,n-Date.now()),permit:d})}catch(v){return v?.state==="conflict"?e("conflict"):v?.state==="blocked"?e("pending-input",{pending:c()}):s()?e("save-unknown"):Date.now()>=n?e("timeout"):e("save-failed")}if(o.state!=="clean"&&o.state!=="saved")return e("save-failed");if(f())return e("conflict");if(s())return e("save-unknown");let w=c();if(w.length)return e("pending-input",{pending:w});if(b()){if(g+1<I&&Date.now()<n)continue;return e("pending-input")}return{ok:!0,state:o.state,etag:o.etag??null}}}finally{m.abort(),k(d),a&&y(a)}}export{D as claimOperation,E as operationKind,y as releaseOperation,_ as runSaveBarrier};
@@ -0,0 +1,20 @@
1
+ import{b as a}from"./c-Y6F2FORL.js";import{b as p}from"./c-L7JL5TL3.js";import{a as m}from"./c-2YYDMLNZ.js";import"./c-DCFSEJZG.js";import"./c-WRBKEJD4.js";import"./c-VHNSBD2M.js";var h=`html:has(> body > .clay-intro) { height: auto !important; overflow-y: auto !important; }
2
+ body:has(> .clay-intro) { height: auto !important; overflow: visible !important; }
3
+ .clay-intro {
4
+ position: relative;
5
+ display: block;
6
+ }
7
+ @media print { .clay-intro { display: none; } }
8
+ `,f=`:host { color: inherit !important; }
9
+ .clay-intro__close {
10
+ position: absolute; top: 10px; right: 10px; z-index: 1;
11
+ display: inline-flex; align-items: center; justify-content: center;
12
+ width: 28px; height: 28px; min-height: 0; margin: 0; padding: 0;
13
+ border: 0; border-radius: 4px; background: none; box-shadow: none;
14
+ color: inherit; opacity: .55; cursor: pointer; line-height: 1;
15
+ }
16
+ .clay-intro__close:hover { opacity: 1; background: none; color: inherit; }
17
+ .clay-intro__close:focus-visible { opacity: 1; outline: 2px solid currentColor; outline-offset: 2px; }
18
+ .clay-intro__close svg { display: block; width: 12px; height: 12px; fill: currentColor; stroke: none; }
19
+ @media (pointer: coarse) { .clay-intro__close { width: 44px; height: 44px; top: 4px; right: 4px; } }
20
+ `;var y={close:"Hide this introduction",label:t=>`About ${t}`},x="a[href], button, input, select, textarea, [tabindex]:not([tabindex='-1'])",v="textarea, select",w=["checkbox","radio","button","submit","reset","file"];function C(t){return t.isContentEditable||t.closest(v)?!0:t.tagName!=="INPUT"?!1:w.indexOf(t.type)<0}function E(){try{return new URLSearchParams(window.location.search).get("intro")==="1"}catch{return!1}}function S(){if(document.getElementById("clay-intro-style"))return;let t=document.createElement("style");t.id="clay-intro-style",t.setAttribute("clay","editor-ui"),t.textContent=h,document.head.appendChild(t)}function _(){let t=[...document.querySelectorAll(x)].find(o=>!o.disabled&&!C(o)&&!o.closest("[clay~='editor-ui']")&&(typeof o.checkVisibility!="function"||o.checkVisibility()));t?t.focus({preventScroll:!0}):document.body.focus({preventScroll:!0})}function Y({memory:t,template:o,appName:c,hadDraft:e}){return!o||!o.content.textContent.trim()&&!o.content.querySelector("img, svg, video, canvas")||!E()&&(t.get().intro.done||e||m.servedHash||window.matchMedia&&window.matchMedia("print").matches)?null:T({memory:t,template:o,appName:c})}function T({memory:t,template:o,appName:c}){S();let e=document.createElement("section");e.className="clay-intro",e.setAttribute("clay","editor-ui"),e.setAttribute("sap-ignore",""),e.setAttribute("aria-label",y.label(c)),e.appendChild(o.content.cloneNode(!0));let i=document.createElement("button");i.type="button",i.className="clay-intro__close",i.setAttribute("aria-label",y.close),i.innerHTML='<svg width="12" height="12" viewBox="0 0 12 12" fill="currentColor" aria-hidden="true"><path d="M1.4 0 6 4.6 10.6 0 12 1.4 7.4 6 12 10.6 10.6 12 6 7.4 1.4 12 0 10.6 4.6 6 0 1.4z"/></svg>',i.addEventListener("click",()=>l("closed")),p({name:"intro-close",content:i,css:[f],parent:e});let d=!1,r=0;function l(n){if(d)return;d=!0,removeEventListener("scroll",u),r&&cancelAnimationFrame(r);let s=e.getBoundingClientRect().height,b=window.scrollY;if(t.get().intro.done=n,t.save(),e.remove(),n==="scrolled"){let g=/hidden|clip/.test(getComputedStyle(document.body).overflowY+getComputedStyle(document.documentElement).overflowY);window.scrollTo(0,g?0:Math.max(0,b-s))}a(),n!=="scrolled"&&_()}function u(){r||(r=requestAnimationFrame(()=>{r=0;let n=e.getBoundingClientRect().bottom,s=scrollY>0&&scrollY+innerHeight>=document.documentElement.scrollHeight-1;(n<1||s&&n<innerHeight)&&l("scrolled")}))}return e.addEventListener("click",n=>{if(n.target.closest("[visitor-intro-dismiss]")){l("closed");return}n.target.closest("[visitor-intro-start]")&&(n.preventDefault(),window.scrollTo({top:window.scrollY+e.getBoundingClientRect().bottom,behavior:"smooth"}))}),document.body.prepend(e),a(),addEventListener("scroll",u,{passive:!0}),e}export{y as COPY,Y as mountIntro};
@@ -1 +1 @@
1
- var s={"lib/mutation.js":"neutral","core/preserve-authored.js":"neutral","core/edit-mode.js":"neutral","core/mode-key.js":"neutral","core/stale-host-notice.js":"neutral","core/page-data.js":"neutral","core/snapshot.js":"neutral","core/save-core.js":"neutral","core/recovery.js":"neutral","core/unsaved-warning.js":"neutral","attrs/onaftersave.js":"neutral","attrs/refetch-on-save.js":"neutral","lib/cache-bust.js":"neutral","attrs/save-freeze.js":"neutral","core/persist.js":"neutral","attrs/add-from.js":"neutral","core/etag.js":"neutral","core/save.js":"export","core/conflict-notice.js":"export","core/autosave.js":"export","core/admin-attrs.js":"export","plugins/indicator.js":"export","plugins/richclay.js":"export","plugins/sortable.js":"export","plugins/undo.js":"export","plugins/unsent.js":"export","plugins/upload.js":"export","plugins/people.js":"export","plugins/live.js":"export","plugins/page.js":"export","plugins/visitor-drafts-owner.js":"export","plugins/menu.js":"neutral","plugins/upgrade.js":"neutral","plugins/derive.js":"neutral","plugins/bind-text.js":"neutral","plugins/page-view.js":"reader","plugins/source.js":"export","sync/live-sync.js":e=>e.liveSync.editParticipant(),"plugins/wire.js":"export","plugins/ai-edit.js":"export","plugins/cms.js":"export"},r=e=>Object.prototype.hasOwnProperty.call(s,e)?s[e]:null;export{r as a};
1
+ var s={"lib/mutation.js":"neutral","core/preserve-authored.js":"neutral","core/edit-mode.js":"neutral","core/mode-key.js":"neutral","core/stale-host-notice.js":"neutral","core/page-data.js":"neutral","core/snapshot.js":"neutral","core/save-core.js":"neutral","core/recovery.js":"neutral","core/unsaved-warning.js":"neutral","attrs/onaftersave.js":"neutral","attrs/refetch-on-save.js":"neutral","lib/cache-bust.js":"neutral","attrs/save-freeze.js":"neutral","core/persist.js":"neutral","attrs/add-from.js":"neutral","core/etag.js":"neutral","core/save.js":"export","core/conflict-notice.js":"export","core/autosave.js":"export","core/admin-attrs.js":"export","plugins/indicator.js":"export","plugins/richclay.js":"export","plugins/sortable.js":"export","plugins/undo.js":"export","plugins/unsent.js":"export","plugins/upload.js":"export","plugins/people.js":"export","plugins/live.js":"export","plugins/page.js":"export","plugins/visitor-drafts-owner.js":"export","plugins/menu.js":"neutral","plugins/upgrade.js":"neutral","plugins/derive.js":"neutral","plugins/bind-text.js":"neutral","plugins/page-view.js":"reader","plugins/source.js":"export","sync/live-sync.js":e=>e.liveSync.editParticipant(),"plugins/wire.js":"export","plugins/ai-edit.js":"export","plugins/cms.js":"export"};var r=e=>Object.prototype.hasOwnProperty.call(s,e)?s[e]:null;export{r as a};
@@ -1 +1 @@
1
- import{b as $}from"./c-HVYXIS72.js";import{a as k,b as B,c as L}from"./c-4Q2XTQ2N.js";import{A as M}from"./c-TR6RMDQ7.js";import{B as P,E as R,b as O,m as q}from"./c-66O32MV3.js";import"./c-3GJ4SDE2.js";import{a as N}from"./c-LRPUO2MX.js";import"./c-VHNSBD2M.js";var K=16384,G=p=>new TextEncoder().encode(JSON.stringify(p)).length,I=class extends Error{constructor(s,n=s){super(n),this.name="ToolRequestError",this.code=s}};function V(p){let s=N(p);for(Array.isArray(s.tables)||(s.tables=[]),Array.isArray(s.outline)||(s.outline=[]);G(s)>K;){let n=[...s.tables].reverse().find(i=>Array.isArray(i.rows)&&i.rows.length);if(n)n.rows.pop();else if(s.outline.length)s.outline.pop();else break}if(G(s)>K)throw new I("context-too-large");return s}function J({transport:p,newId:s}){let n=null,i=a=>{!a||a.discarded||a.done||(a.discarded=!0,n===a&&(n=null),p.cancel(a.requestId),a.resolve({requestId:a.requestId,code:"discarded",message:"Candidate discarded"}))};return{request(a,r,t=null){let m=V(r);n&&i(n);let c=s(),l={requestId:c,discarded:!1,done:!1};l.promise=new Promise(o=>{l.resolve=o}),n=l;let y={protocol:"page-tool/1",requestId:c,prompt:a,context:m,target:t};l.request=y;let v=o=>{if(!(l.discarded||l.done||o?.requestId!==c))if(l.done=!0,n===l&&(n=null),o?.artifact!==void 0){let d=k(o.artifact),C=B(o.state),w=d.ok?C.ok?null:C:d;l.resolve(w?{requestId:c,code:w.code,message:w.code}:o)}else l.resolve(typeof o?.code=="string"?o:{requestId:c,code:"invalid-result",message:"invalid-result"})};try{Promise.resolve(p.request(y)).then(v,o=>v({requestId:c,code:"transport-error",message:String(o?.message??o)}))}catch(o){v({requestId:c,code:"transport-error",message:String(o?.message??o)})}return l},discard:i,async wait(a,{signal:r}={}){if(r?.aborted)throw new DOMException("Aborted","AbortError");let t,m=await(r?Promise.race([a.promise,new Promise((c,l)=>{t=()=>l(new DOMException("Aborted","AbortError")),r.addEventListener("abort",t,{once:!0})})]).finally(()=>r.removeEventListener("abort",t)):a.promise);if(m?.code)throw new I(m.code,m.message);return m}}}var{Selection:X}=O;function W(p,s){let n=null;return p.forEach((i,a,r)=>{i.attrs.id===s&&(n={node:i,at:a,index:r})}),n}function j(p,s,n){let i=p.state,a=W(i.doc,n?.hostId)??(()=>{let w=Math.min(i.selection.$head.index(0),i.doc.childCount-1),f=0;for(let g=0;g<w;g++)f+=i.doc.child(g).nodeSize;return{node:i.doc.child(w),at:f,index:w}})(),{node:r,at:t,index:m}=a,c=i.doc.maybeChild(m+1),l=r.isTextblock&&(r.content.size===0||n?.hostId===r.attrs.id&&r.textContent===n.slashText),y=l?r.attrs.pos:P(r.attrs.pos,c?.attrs.pos??null),v=q.nodes.tool.create({id:s.id,pos:y,parent:r.attrs.parent??null,artifact:s.artifact,rev:s.rev,state:s.state}),o=l?t:t+r.nodeSize,d=i.tr;if(!l&&n?.hostId===r.attrs.id&&n.slashText&&n.slashOffset>=0){let w=t+1+n.slashOffset,f=w+n.slashText.length;f<=t+r.nodeSize-1&&i.doc.textBetween(w,f)===n.slashText&&d.delete(w,f)}let C=d.mapping.map(o);d.replaceWith(C,l?d.mapping.map(t+r.nodeSize):C,v),d.setSelection(X.near(d.doc.resolve(Math.min(C+v.nodeSize,d.doc.content.size)))),p.dispatch(M(d).scrollIntoView())}function ie({getView:p,store:s,transport:n,acceptState:i=()=>globalThis.clay?.save?.flush?.(),newId:a=R}){let r=n?J({transport:n,newId:()=>a("request")}):null,t=null,m=0,c=()=>{m++,t&&(r?.discard(t.pending),t.preview?.dispose(),t.previewHost?.dispose(),t.element.remove(),t=null)};return{open:({target:y=null,remove:v=null}={})=>{c();let o=p();if(!o)return;let d=o.state.selection,w={hostId:o.state.doc.child(Math.min(d.$head.index(0),o.state.doc.childCount-1))?.attrs.id,slashText:v?o.state.doc.textBetween(v.from,v.to):null,slashOffset:v&&d.$head.depth?v.from-d.$head.before(1)-1:null},f=o.dom.ownerDocument,g=f.createElement("section");g.className="page-ai-panel",g.contentEditable="false",g.setAttribute("role","dialog"),g.setAttribute("aria-label",y?"Revise tool":"Make a tool with AI");let E=f.createElement("textarea");E.setAttribute("aria-label","Describe the tool"),E.placeholder=y?"What should change?":"Describe the tool you want";let A=f.createElement("p");A.className="page-ai-status";let S=f.createElement("div");S.className="page-ai-preview";let T=f.createElement("div");T.className="page-ai-actions",g.append(E,A,S,T),o.dom.parentElement.append(g),t={element:g,input:E,status:A,previewRoot:S,actions:T,target:y,bookmark:w,candidate:null,pending:null,preview:null,previewHost:null,kept:!1,busy:!1};let x=(e,u)=>{let h=f.createElement("button");h.type="button",h.textContent=e,h.addEventListener("click",u),T.append(h)},z=()=>{t&&(t.preview?.dispose(),t.previewHost?.dispose(),t.preview=null,t.previewHost=null,t.previewRoot.replaceChildren(),t.input.hidden=!1,t.actions.replaceChildren(),x("Generate",D),x("Cancel",c),t.input.focus())},_=()=>{let e=t;e.input.hidden=!0,e.status.textContent="",e.previewHost=L({mode:"view"}),e.preview=e.previewHost.mount(e.previewRoot,{id:"preview",rev:"preview",artifact:e.candidate.artifact,seed:e.candidate.state}),e.actions.replaceChildren(),x("Keep",H),x("Revise",z),x("Discard",c)},D=async()=>{let e=t;if(!e||e.busy||!e.input.value.trim())return;if(!r){e.status.textContent="Tool generation is unavailable";return}e.busy=!0,e.status.textContent="Making your tool\u2026",e.actions.replaceChildren(),x("Cancel",c);let u=++m,h=r.request(e.input.value.trim(),$(o.state.doc,f.title),e.target);e.pending=h;try{let b=await r.wait(h);if(t!==e||u!==m)return;e.candidate={artifact:b.artifact,state:b.state,id:null,rev:null},_()}catch(b){if(t!==e||u!==m)return;e.status.textContent=b.message,e.actions.replaceChildren(),x("Generate",D),x("Cancel",c)}finally{e.busy=!1}},H=async()=>{let e=t;if(!e?.candidate||e.busy||e.kept)return;e.busy=!0;let u=e.candidate;u.id??=e.target?.toolId??a("b"),u.rev??=a("rev");try{if(!s)throw new Error("This document can't save tool state");await s.set([u.id,u.rev],u.state);let h=await i();if(h?.ok!==!0&&!["saved","clean"].includes(h?.state))throw new Error(h?.msg??h?.message??"Tool state was not saved");if(t!==e||e.kept)return;if(e.target){let b=W(o.state.doc,e.target.toolId);if(b?.node.type!==q.nodes.tool||b.node.attrs.rev!==e.target.rev){e.status.textContent="This tool changed while you were revising. Keep as a new tool, or discard.",e.target=null,u.id=null,u.rev=null,e.actions.replaceChildren(),x("Keep as new tool",H),x("Discard",c);return}o.dispatch(M(o.state.tr.setNodeMarkup(b.at,null,{...b.node.attrs,artifact:u.artifact,rev:u.rev})))}else j(o,u,e.bookmark);e.kept=!0,c()}catch(h){t===e&&(e.status.textContent=h.message)}finally{e.busy=!1}};return z(),g},dispose:c}}export{ie as createAiTool};
1
+ import{b as $}from"./c-R2XUODVY.js";import{a as k,b as B,c as L}from"./c-GBKB5WDL.js";import{B as M}from"./c-AMU3BPPR.js";import{G as P,J as R,b as O,m as q}from"./c-QIXT3Q7C.js";import"./c-3GJ4SDE2.js";import{a as N}from"./c-3LDGIBMN.js";import"./c-VHNSBD2M.js";var K=16384,G=p=>new TextEncoder().encode(JSON.stringify(p)).length,I=class extends Error{constructor(s,n=s){super(n),this.name="ToolRequestError",this.code=s}};function V(p){let s=N(p);for(Array.isArray(s.tables)||(s.tables=[]),Array.isArray(s.outline)||(s.outline=[]);G(s)>K;){let n=[...s.tables].reverse().find(i=>Array.isArray(i.rows)&&i.rows.length);if(n)n.rows.pop();else if(s.outline.length)s.outline.pop();else break}if(G(s)>K)throw new I("context-too-large");return s}function J({transport:p,newId:s}){let n=null,i=a=>{!a||a.discarded||a.done||(a.discarded=!0,n===a&&(n=null),p.cancel(a.requestId),a.resolve({requestId:a.requestId,code:"discarded",message:"Candidate discarded"}))};return{request(a,r,t=null){let m=V(r);n&&i(n);let c=s(),l={requestId:c,discarded:!1,done:!1};l.promise=new Promise(o=>{l.resolve=o}),n=l;let y={protocol:"page-tool/1",requestId:c,prompt:a,context:m,target:t};l.request=y;let v=o=>{if(!(l.discarded||l.done||o?.requestId!==c))if(l.done=!0,n===l&&(n=null),o?.artifact!==void 0){let d=k(o.artifact),C=B(o.state),w=d.ok?C.ok?null:C:d;l.resolve(w?{requestId:c,code:w.code,message:w.code}:o)}else l.resolve(typeof o?.code=="string"?o:{requestId:c,code:"invalid-result",message:"invalid-result"})};try{Promise.resolve(p.request(y)).then(v,o=>v({requestId:c,code:"transport-error",message:String(o?.message??o)}))}catch(o){v({requestId:c,code:"transport-error",message:String(o?.message??o)})}return l},discard:i,async wait(a,{signal:r}={}){if(r?.aborted)throw new DOMException("Aborted","AbortError");let t,m=await(r?Promise.race([a.promise,new Promise((c,l)=>{t=()=>l(new DOMException("Aborted","AbortError")),r.addEventListener("abort",t,{once:!0})})]).finally(()=>r.removeEventListener("abort",t)):a.promise);if(m?.code)throw new I(m.code,m.message);return m}}}var{Selection:X}=O;function W(p,s){let n=null;return p.forEach((i,a,r)=>{i.attrs.id===s&&(n={node:i,at:a,index:r})}),n}function j(p,s,n){let i=p.state,a=W(i.doc,n?.hostId)??(()=>{let w=Math.min(i.selection.$head.index(0),i.doc.childCount-1),f=0;for(let g=0;g<w;g++)f+=i.doc.child(g).nodeSize;return{node:i.doc.child(w),at:f,index:w}})(),{node:r,at:t,index:m}=a,c=i.doc.maybeChild(m+1),l=r.isTextblock&&(r.content.size===0||n?.hostId===r.attrs.id&&r.textContent===n.slashText),y=l?r.attrs.pos:P(r.attrs.pos,c?.attrs.pos??null),v=q.nodes.tool.create({id:s.id,pos:y,parent:r.attrs.parent??null,artifact:s.artifact,rev:s.rev,state:s.state}),o=l?t:t+r.nodeSize,d=i.tr;if(!l&&n?.hostId===r.attrs.id&&n.slashText&&n.slashOffset>=0){let w=t+1+n.slashOffset,f=w+n.slashText.length;f<=t+r.nodeSize-1&&i.doc.textBetween(w,f)===n.slashText&&d.delete(w,f)}let C=d.mapping.map(o);d.replaceWith(C,l?d.mapping.map(t+r.nodeSize):C,v),d.setSelection(X.near(d.doc.resolve(Math.min(C+v.nodeSize,d.doc.content.size)))),p.dispatch(M(d).scrollIntoView())}function ie({getView:p,store:s,transport:n,acceptState:i=()=>globalThis.clay?.save?.flush?.(),newId:a=R}){let r=n?J({transport:n,newId:()=>a("request")}):null,t=null,m=0,c=()=>{m++,t&&(r?.discard(t.pending),t.preview?.dispose(),t.previewHost?.dispose(),t.element.remove(),t=null)};return{open:({target:y=null,remove:v=null}={})=>{c();let o=p();if(!o)return;let d=o.state.selection,w={hostId:o.state.doc.child(Math.min(d.$head.index(0),o.state.doc.childCount-1))?.attrs.id,slashText:v?o.state.doc.textBetween(v.from,v.to):null,slashOffset:v&&d.$head.depth?v.from-d.$head.before(1)-1:null},f=o.dom.ownerDocument,g=f.createElement("section");g.className="page-ai-panel",g.contentEditable="false",g.setAttribute("role","dialog"),g.setAttribute("aria-label",y?"Revise tool":"Make a tool with AI");let E=f.createElement("textarea");E.setAttribute("aria-label","Describe the tool"),E.placeholder=y?"What should change?":"Describe the tool you want";let A=f.createElement("p");A.className="page-ai-status";let S=f.createElement("div");S.className="page-ai-preview";let T=f.createElement("div");T.className="page-ai-actions",g.append(E,A,S,T),o.dom.parentElement.append(g),t={element:g,input:E,status:A,previewRoot:S,actions:T,target:y,bookmark:w,candidate:null,pending:null,preview:null,previewHost:null,kept:!1,busy:!1};let x=(e,u)=>{let h=f.createElement("button");h.type="button",h.textContent=e,h.addEventListener("click",u),T.append(h)},z=()=>{t&&(t.preview?.dispose(),t.previewHost?.dispose(),t.preview=null,t.previewHost=null,t.previewRoot.replaceChildren(),t.input.hidden=!1,t.actions.replaceChildren(),x("Generate",D),x("Cancel",c),t.input.focus())},_=()=>{let e=t;e.input.hidden=!0,e.status.textContent="",e.previewHost=L({mode:"view"}),e.preview=e.previewHost.mount(e.previewRoot,{id:"preview",rev:"preview",artifact:e.candidate.artifact,seed:e.candidate.state}),e.actions.replaceChildren(),x("Keep",H),x("Revise",z),x("Discard",c)},D=async()=>{let e=t;if(!e||e.busy||!e.input.value.trim())return;if(!r){e.status.textContent="Tool generation is unavailable";return}e.busy=!0,e.status.textContent="Making your tool\u2026",e.actions.replaceChildren(),x("Cancel",c);let u=++m,h=r.request(e.input.value.trim(),$(o.state.doc,f.title),e.target);e.pending=h;try{let b=await r.wait(h);if(t!==e||u!==m)return;e.candidate={artifact:b.artifact,state:b.state,id:null,rev:null},_()}catch(b){if(t!==e||u!==m)return;e.status.textContent=b.message,e.actions.replaceChildren(),x("Generate",D),x("Cancel",c)}finally{e.busy=!1}},H=async()=>{let e=t;if(!e?.candidate||e.busy||e.kept)return;e.busy=!0;let u=e.candidate;u.id??=e.target?.toolId??a("b"),u.rev??=a("rev");try{if(!s)throw new Error("This document can't save tool state");await s.set([u.id,u.rev],u.state);let h=await i();if(h?.ok!==!0&&!["saved","clean"].includes(h?.state))throw new Error(h?.msg??h?.message??"Tool state was not saved");if(t!==e||e.kept)return;if(e.target){let b=W(o.state.doc,e.target.toolId);if(b?.node.type!==q.nodes.tool||b.node.attrs.rev!==e.target.rev){e.status.textContent="This tool changed while you were revising. Keep as a new tool, or discard.",e.target=null,u.id=null,u.rev=null,e.actions.replaceChildren(),x("Keep as new tool",H),x("Discard",c);return}o.dispatch(M(o.state.tr.setNodeMarkup(b.at,null,{...b.node.attrs,artifact:u.artifact,rev:u.rev})))}else j(o,u,e.bookmark);e.kept=!0,c()}catch(h){t===e&&(e.status.textContent=h.message)}finally{e.busy=!1}};return z(),g},dispose:c}}export{ie as createAiTool};
@@ -0,0 +1 @@
1
+ import{b as x}from"./c-L3F5ZLIV.js";import{a as T,d as h}from"./c-IW6GGOU2.js";import{b as y}from"./c-HAWFNBYG.js";import{n as d}from"./c-EXKHPOVC.js";import{na as s,qa as m,ra as p,sa as g}from"./c-QIXT3Q7C.js";import{a as c}from"./c-TCCA5BZN.js";import{q as f}from"./c-7MG5RU63.js";var v="article[data-page]",O=/^page(\.[0-9]+)?$/;function S(t){return[...t.querySelectorAll('script[merge][clay~="live"]')].filter(e=>O.test(e.getAttribute("merge")))}var i=null;function b(t){let e=t.join("\0");if(i&&i.key===e)return i;let r=t.map(l=>{try{return c(l)}catch{throw new d("invalid-json","Cannot read the page data as JSON")}}),n=x(r),o=s(n);return i={key:e,html:g(o,{fallbackOf:l=>{let u=n[l]?.artifact?.fallbackHtml;return typeof u=="string"?u:""},clean:p(document)}),rev:m(o),model:o,title:y(o)},i}function k(t){let e=t.querySelector(v);if(!e)return;let r=S(t);if(!r.length)return;let{html:n,rev:o,title:a}=b(r.map(l=>l.textContent));e.innerHTML!==n&&(e.innerHTML=n),e.setAttribute("data-rev",o),T(t)||h(t,a)}function A(t){let e=S(t);if(e.length!==1)return null;let r;try{r=c(e[0].textContent)}catch{return null}let{v:n,g:o,y:a}=r??{};return n!==1||!a||typeof a!="object"||Array.isArray(a)?null:{v:n,g:o,y:{...a}}}function M(t){return b([typeof t=="string"?t:JSON.stringify(t)]).html}function D(t){if(typeof t!="string")return null;try{let e=new DOMParser().parseFromString(t,"text/html"),r=A(e),n=e.querySelector(v);if(!r||!n)return null;let o=e.createElement("article");return o.innerHTML=M(r),n.innerHTML===o.innerHTML?r:null}catch{return null}}f(k);export{v as a,S as b,b as c,A as d,M as e,D as f};
@@ -0,0 +1 @@
1
+ import{a as d}from"./c-KQ7E3PYY.js";import{d as h,h as p,v as g}from"./c-AMU3BPPR.js";import{N as u,b as l,ea as c,m,na as f}from"./c-QIXT3Q7C.js";import"./c-VHNSBD2M.js";var{TextSelection:b}=l;function T(r,t){let e=p(r.state.doc),n=e.findIndex(o=>o.node.attrs.id===t);if(n<0)return h(r,"That link's block is gone"),null;let s=[];for(let o=e[n].up;o>=0;o=e[o].up)e[o].node.type===m.nodes.toggle&&!e[o].open&&s.push(e[o].node.attrs.id);let i=r.state.tr.setSelection(b.create(r.state.doc,e[n].at+1)).setMeta("addToHistory",!1);return r.dispatch(g(i,s).scrollIntoView()),e[n]}var a=class{constructor(t,e){this.node=t,this.view=e,this.doc=e.state.doc;let n=e.dom.ownerDocument;this.dom=n.createElement("div"),this.dom.className="page-toc",this.dom.contentEditable="false",this.dom.setAttribute("role","group"),this.dom.setAttribute("aria-label","Table of contents"),this.dom.addEventListener("mousedown",s=>{s.target.closest?.("a")&&s.preventDefault()}),this.dom.addEventListener("click",s=>{let i=s.target.closest?.("a");if(!i)return;s.preventDefault();let o=d(i.getAttribute("href"));o!==null&&T(this.view,o)}),this.render()}update(t){return this.node=t,this.view.state.doc!==this.doc&&(this.doc=this.view.state.doc,this.render()),!0}render(){let t=c(this.node.attrs,f(u(this.doc)));this.dom.innerHTML!==t&&(this.dom.innerHTML=t)}stopEvent(t){return!!t.target.closest?.("a")}ignoreMutation(){return!0}};function I(){return{id:"toc",nodeViews:{toc:(r,t)=>new a(r,t)},css:null,dispose(){}}}export{a as TocView,I as createFeature,T as followTocLink};
@@ -0,0 +1 @@
1
+ import{b as L}from"./c-L7JL5TL3.js";import{f as b,g as h,j as p,l as E,n as m}from"./c-BJ7YQ5QZ.js";import{e as i,f as d,g as x}from"./c-VAK7SG37.js";import{b as w}from"./c-MHI3GYKF.js";import{b as o}from"./c-NUHP2XDB.js";var g={success:{edge:i.teal,icon:d.toastSuccess},error:{edge:i.ox,icon:d.toastWarning},warning:{edge:i.brass,icon:d.toastWarning},info:{edge:i.brass,icon:d.toastInfo}},M=d.toastClose,P=["opacity:0","transform:translateX(24px)"];function $(){return typeof matchMedia=="function"&&matchMedia("(prefers-reduced-motion: reduce)").matches?"none":"opacity .5s ease-in-out, transform .5s ease-in-out"}function A(){let e=document.querySelector('clay-editor-ui[data-clay-ui="toasts"]')?.shadowRoot.querySelector("[data-clay-toasts]");if(e)return e;let t=p("div",["position:fixed","top:18px","right:18px","z-index:9999","display:flex","flex-direction:column","align-items:flex-end","gap:10px","width:min(330px, calc(100vw - 36px))","pointer-events:none"]);return t.setAttribute("data-clay-toasts",""),t.setAttribute("aria-live","polite"),L({name:"toasts",content:t}),t}function k(e,t,{detail:n="",actions:r=[]}={}){let c=g[t],s=E("div",["display:flex","align-items:flex-start",...x.toast,"width:100%",`border-inline-start:3px solid ${c.edge}`,"cursor:pointer","pointer-events:auto",...P,`transition:${$()}`]);s.setAttribute("data-clay-toast",t);let l=p("div",["flex:1 1 auto","min-width:0","display:flex","flex-direction:column","gap:8px"]),f=p("div",["display:flex","align-items:flex-start","gap:8px"]),v=m("span",["display:inline-grid","flex:none","padding-top:1px",`color:${c.edge}`]);v.innerHTML=c.icon,b(v.firstElementChild,16);let T=m("span",["flex:1 1 auto","min-width:120px",...x.toastTitle,"overflow-wrap:anywhere"],e);if(f.append(v,T),l.append(f),n&&l.append(m("span",["display:block",`color:${i.muted}`,"overflow-wrap:anywhere"],n)),r.length){let y=p("div",["display:flex","flex-wrap:wrap","gap:8px"]);for(let{label:C,onClick:I}of r)y.append(h(C,{small:!0,variant:"quiet",onClick:I}));l.append(y)}return s.append(l),s}function D(e){let t=p("button",["flex:none","display:inline-grid","place-items:center",...x.toastClose,"cursor:pointer"]);t.type="button",t.setAttribute("aria-label","Dismiss"),t.title="Dismiss",t.innerHTML=M,b(t.firstElementChild,14);let n=r=>{o(t,"color",r?i.ink:i.muted),o(t,"background",r?i.sunk:"transparent")};return t.addEventListener("pointerenter",()=>n(!0)),t.addEventListener("pointerleave",()=>n(!1)),t.addEventListener("focus",()=>{n(!0),o(t,"outline",`2px solid ${i.brass}`),o(t,"outline-offset","1px")}),t.addEventListener("blur",()=>{n(!1),o(t,"outline","none")}),t.addEventListener("click",e),t}function S(e){A().append(e),w(e,{background:i.surface}),setTimeout(()=>{o(e,"opacity","1"),o(e,"transform","none")},10)}function u(e,t){o(e,"opacity","0"),o(e,"transform","translateX(24px)"),setTimeout(()=>{e.remove(),t?.()},500)}function H(e,t="success"){let n=k(e,g[t]?t:"success");n.addEventListener("click",()=>u(n)),S(n),setTimeout(()=>u(n),6600)}var a=new Map;function R(e,t="warning",{detail:n="",actions:r=[]}={}){let c=a.get(e);c&&(u(c),a.delete(e));let s=k(e,g[t]?t:"warning",{detail:n,actions:r});o(s,"cursor","default");let l=D(f=>{f.stopPropagation(),u(s,()=>{a.get(e)===s&&a.delete(e)})});s.append(l),a.set(e,s),S(s)}function U(e,{now:t=!1}={}){let n=a.get(e);if(n){if(a.delete(e),t){n.remove();return}u(n)}}var W=H;export{R as a,U as b,W as c};